From 7b29169fff9e7c624890c5edffe85def8a293136 Mon Sep 17 00:00:00 2001 From: Cecil Hugh Watson Date: Fri, 25 Sep 2009 18:57:08 -0700 Subject: LinHES 6.01.00 --- abs/core/Kernel_rebuild_list | 8 + abs/core/LinHES-config-svn/LinHES-release | 1 + abs/core/LinHES-config-svn/LinHES.install | 78 + abs/core/LinHES-config-svn/MythVantage.sh | 3 + abs/core/LinHES-config-svn/PKGBUILD | 57 + abs/core/LinHES-config-svn/README | 10 + abs/core/LinHES-config-svn/add_service.sh | 15 + abs/core/LinHES-config-svn/autocard.py | 307 + abs/core/LinHES-config-svn/bpopup-ui.xml | 164 + abs/core/LinHES-config-svn/build_diskless.sh | 143 + abs/core/LinHES-config-svn/checkout_MythVantage.sh | 45 + abs/core/LinHES-config-svn/create_master.sh | 57 + abs/core/LinHES-config-svn/file_time_offset.py | 39 + abs/core/LinHES-config-svn/install-ui.xml | 175 + abs/core/LinHES-config-svn/install_db_chroot.sh | 117 + abs/core/LinHES-config-svn/install_functions.sh | 621 + abs/core/LinHES-config-svn/install_proxy.sh | 717 + abs/core/LinHES-config-svn/issue | 1 + abs/core/LinHES-config-svn/live-install.sh | 28 + abs/core/LinHES-config-svn/myth_user_call | 172 + abs/core/LinHES-config-svn/networkconfig.sh | 331 + abs/core/LinHES-config-svn/remove_service.sh | 8 + .../LinHES-config-svn/restore_default_settings.sh | 362 + abs/core/LinHES-config-svn/restore_km_db_chroot.sh | 61 + abs/core/LinHES-config-svn/soundconfig.sh | 254 + abs/core/LinHES-config-svn/startx | 29 + abs/core/LinHES-config-svn/systemconfig.sh | 1368 + abs/core/LinHES-config-svn/timezip.py | 231 + abs/core/LinHES-config-svn/timezone.bin | Bin 0 -> 806343 bytes abs/core/LinHES-config-svn/xconfig.sh | 305 + abs/core/LinHES-config/LinHES-release | 1 + abs/core/LinHES-config/LinHES.install | 78 + abs/core/LinHES-config/MythVantage.sh | 3 + abs/core/LinHES-config/PKGBUILD | 101 + abs/core/LinHES-config/README | 9 + abs/core/LinHES-config/add_service.sh | 15 + abs/core/LinHES-config/autocard.py | 307 + abs/core/LinHES-config/bpopup-ui.xml | 164 + abs/core/LinHES-config/build_diskless.sh | 143 + abs/core/LinHES-config/checkout_MythVantage.sh | 49 + abs/core/LinHES-config/create_master.sh | 57 + abs/core/LinHES-config/file_time_offset.py | 39 + abs/core/LinHES-config/install-ui.xml | 175 + abs/core/LinHES-config/install_db_chroot.sh | 63 + abs/core/LinHES-config/install_functions.sh | 344 + abs/core/LinHES-config/install_proxy.sh | 234 + abs/core/LinHES-config/issue | 2 + abs/core/LinHES-config/live-install.sh | 28 + abs/core/LinHES-config/mv_advanced.py | 384 + abs/core/LinHES-config/mv_common.py | 201 + abs/core/LinHES-config/mv_config.py | 17 + abs/core/LinHES-config/mv_hostype.py | 230 + abs/core/LinHES-config/mv_install.py | 1432 + abs/core/LinHES-config/mv_ir.py | 330 + abs/core/LinHES-config/mv_misc.py | 180 + abs/core/LinHES-config/mv_network.py | 507 + abs/core/LinHES-config/mv_screensaver.py | 199 + abs/core/LinHES-config/mv_smolt.py | 59 + abs/core/LinHES-config/mv_software.py | 61 + abs/core/LinHES-config/mv_webuser.py | 21 + abs/core/LinHES-config/myth_user_call | 174 + abs/core/LinHES-config/myth_user_call.py | 159 + abs/core/LinHES-config/networkconfig.sh | 341 + abs/core/LinHES-config/remove_service.sh | 8 + abs/core/LinHES-config/restore_default_settings.sh | 362 + abs/core/LinHES-config/restore_km_db_chroot.sh | 61 + abs/core/LinHES-config/soundconfig.sh | 254 + abs/core/LinHES-config/startx | 29 + abs/core/LinHES-config/systemconfig.py | 243 + abs/core/LinHES-config/systemconfig.sh | 19 + abs/core/LinHES-config/timezip.py | 232 + abs/core/LinHES-config/xconfig.sh | 363 + abs/core/LinHES-system/LinHES-profile.sh | 3 + abs/core/LinHES-system/LinHES-run | 100 + abs/core/LinHES-system/LinHES-session | 13 + abs/core/LinHES-system/LinHES-start | 162 + abs/core/LinHES-system/LinHES.install | 90 + abs/core/LinHES-system/PKGBUILD | 42 + abs/core/LinHES-system/alsa-base | 10 + abs/core/LinHES-system/bin/backupcommon | 382 + abs/core/LinHES-system/bin/checkbackup | 16 + abs/core/LinHES-system/bin/checkrestore | 16 + abs/core/LinHES-system/bin/library.sh | 164 + abs/core/LinHES-system/bin/mythbackup | 71 + abs/core/LinHES-system/bin/mythrestore | 92 + abs/core/LinHES-system/bin/rollback.sh | 20 + abs/core/LinHES-system/firstboot.sh | 43 + abs/core/LinHES-system/load-modules-mythvantage.sh | 64 + abs/core/LinHES-system/myth_mtc.lr | 9 + abs/core/LinHES-system/myth_mtc.py | 139 + abs/core/LinHES-system/myth_mtc.sh | 12 + abs/core/LinHES-system/optimize_mythdb.py | 16 + abs/core/LinHES-system/unclutter-toggle.sh | 8 + abs/core/LinHES-timezone/Makefile | 62 + abs/core/LinHES-timezone/PKGBUILD | 29 + abs/core/LinHES-timezone/Tux.csv | 1268 + abs/core/LinHES-timezone/WorldTZ_102.zip | Bin 0 -> 1628730 bytes abs/core/LinHES-timezone/create_map_include.c | 186 + abs/core/LinHES-timezone/extract_map_data.c | 188 + abs/core/LinHES-timezone/linhes_timezone.c | 1120 + abs/core/a | 1 + abs/core/aalib/PKGBUILD | 7 +- abs/core/acpid/Makefile | 56 + abs/core/acpid/PKGBUILD | 34 + abs/core/acpid/__changelog | 2 + abs/core/acpid/acpid | 35 + abs/core/acpid/acpid-1.0.4-gcc4.patch | 20 + abs/core/acpid/anything | 3 + abs/core/acpid/default | 20 + abs/core/acpid/handler.sh | 68 + abs/core/alsa-lib/PKGBUILD | 14 +- abs/core/alsa-oss/PKGBUILD | 8 +- abs/core/alsa-utils/PKGBUILD | 20 +- abs/core/alsa-utils/alsa | 28 +- abs/core/alsa-utils/alsa.conf.d | 11 + abs/core/aspell/PKGBUILD | 31 +- abs/core/aspell/aspell.install | 23 +- abs/core/ati-dri/PKGBUILD | 38 + abs/core/ati-dri/mesa-7.1-link-shared.patch | 102 + abs/core/atk/PKGBUILD | 16 +- abs/core/audiofile/PKGBUILD | 21 + abs/core/audiofile/aclocal-fixes.patch | 11 + abs/core/aufs-utils/PKGBUILD | 32 +- abs/core/aufs/PKGBUILD | 44 +- abs/core/aufs/aufs.install | 6 +- abs/core/aumix/PKGBUILD | 24 + abs/core/aumix/aumix.patch | 43 + abs/core/autoconf/PKGBUILD | 25 + abs/core/autoconf/autoconf.install | 20 + abs/core/automake/PKGBUILD | 25 + abs/core/automake/automake.install | 20 + abs/core/avahi/ChangeLog | 9 + abs/core/avahi/PKGBUILD | 64 + abs/core/avahi/avahi.install | 42 + abs/core/avahi/gnome-nettool.png | Bin 0 -> 4509 bytes abs/core/bash/PKGBUILD | 76 +- abs/core/bash/bash.install | 21 + abs/core/bash/bashrc | 5 +- abs/core/bc/PKGBUILD | 8 +- abs/core/binutils/PKGBUILD | 31 +- abs/core/binutils/binutils.install | 20 + abs/core/bison/ChangeLog | 11 + abs/core/bison/PKGBUILD | 25 + abs/core/bison/bison.install | 18 + abs/core/ca-certificates/PKGBUILD | 5 +- abs/core/ca-certificates/ca-certificates.install | 2 +- abs/core/cairo/PKGBUILD | 15 +- abs/core/cdparanoia/PKGBUILD | 11 +- abs/core/cdparanoia/gcc.patch | 582 + abs/core/cdrkit/PKGBUILD | 2 +- abs/core/cmake/PKGBUILD | 33 + abs/core/coreutils/PKGBUILD | 71 +- abs/core/coreutils/__changelog | 2 + .../coreutils/coreutils-6.10-configuration.patch | 98 +- .../coreutils-7.1-cp-recursiveinfloop.patch | 154 + .../coreutils/coreutils-7.1-sort-endoffields.patch | 102 + abs/core/coreutils/coreutils-i18n.patch | 152 +- abs/core/coreutils/coreutils-pam.patch | 26 +- abs/core/coreutils/coreutils.install | 21 + abs/core/dbus-core/PKGBUILD | 53 + abs/core/dbus-core/dbus | 57 + abs/core/dbus-core/dbus.install | 21 + abs/core/dbus-glib/PKGBUILD | 15 +- abs/core/dbus-python/PKGBUILD | 22 + abs/core/dbus/30-dbus | 9 + abs/core/dbus/PKGBUILD | 44 +- abs/core/ddcxinfo-arch/PKGBUILD | 21 + abs/core/ddcxinfo/PKGBUILD | 25 + abs/core/ddcxinfo/ddcxinfo-kanotix_0.6.19.tar.gz | Bin 0 -> 39882 bytes abs/core/ddcxinfo/lrmi.patch | 18 + abs/core/dhcp/ChangeLog | 8 + abs/core/dhcp/PKGBUILD | 39 + .../dhcp/dhcp-4.1.0-missing-ipv6-not-fatal.patch | 50 + abs/core/dhcp/dhcp.conf.d | 6 + abs/core/dhcp/dhcp.install | 15 + abs/core/dhcp/dhcpd | 40 + abs/core/dhcpcd/PKGBUILD | 61 +- abs/core/directfb/ChangeLog | 5 + abs/core/directfb/PKGBUILD | 26 + abs/core/directfb/dfb_serial.diff | 10 + abs/core/diskless-legacy/PKGBUILD | 16 + .../diskless-legacy/config_diskless_frontend.bash | 678 + abs/core/dvb-firmware/PKGBUILD | 25 + abs/core/dvb-firmware/dvb-usb-dib0700-1.20.fw | Bin 0 -> 33768 bytes abs/core/dvb-firmware/xc3028-v27.fw | Bin 0 -> 66220 bytes abs/core/e2fsprogs/PKGBUILD | 39 +- abs/core/e2fsprogs/e2fsprogs.install | 21 + abs/core/ed/PKGBUILD | 36 + abs/core/ed/ed.install | 20 + abs/core/esound/PKGBUILD | 34 + abs/core/esound/esd | 37 + abs/core/esound/esd-0.2.38-alsa-drain.patch | 11 + abs/core/etcnet/10-defaults | 7 +- abs/core/etcnet/PKGBUILD | 36 +- abs/core/etcnet/etcnet.install | 17 +- abs/core/etcnet/functions.patch | 9 +- abs/core/eventlog/PKGBUILD | 20 + abs/core/evieext/PKGBUILD | 19 + abs/core/expect/PKGBUILD | 4 +- abs/core/faad2/ChangeLog | 12 + abs/core/faad2/LICENSE | 28 +- abs/core/faad2/PKGBUILD | 41 +- abs/core/fam/PKGBUILD | 49 + abs/core/fam/fam | 44 + abs/core/fam/fam-2.7.0-dnotify.patch | 975 + abs/core/fam/fam-2.7.0-gcc43.patch | 46 + abs/core/fam/fam-2.7.0-largefiles.patch | 8 + abs/core/fam/fam-2.7.0-noc++.patch | 83 + abs/core/fam/include_fam_h.patch | 11 + abs/core/fbsplash/PKGBUILD | 56 + abs/core/fbsplash/__changelog | 4 + abs/core/fbsplash/darch.tar.bz2 | Bin 0 -> 1572821 bytes abs/core/fbsplash/extra/encrypt_hook.patch | 24 + abs/core/fbsplash/fbsplash.bootsteps | 1 + abs/core/fbsplash/fbsplash.conf | 8 + abs/core/fbsplash/fbsplash.daemon | 56 + abs/core/fbsplash/fbsplash.initcpio_install | 29 + abs/core/fbsplash/fbsplash.inithooks | 91 + abs/core/fbsplash/fbsplash.install | 33 + abs/core/fbsplash/splash-functions-arch.sh | 71 + abs/core/fbsplash/splash-functions.sh | 618 + abs/core/fcgi/PKGBUILD | 27 + abs/core/fcgi/fcgi-configure.patch | 53839 +++++++++++++++++ abs/core/feh/PKGBUILD | 4 +- abs/core/ffmpeg-svn/PKGBUILD | 59 + abs/core/ffmpeg/PKGBUILD | 48 - abs/core/fftw2/PKGBUILD | 26 +- abs/core/fftw2/__changelog | 2 + abs/core/filesystem/PKGBUILD | 56 +- abs/core/filesystem/filesystem.install | 8 + abs/core/filesystem/fstab | 3 +- abs/core/filesystem/group | 1 + abs/core/filesystem/modprobe.d.usb-load-ehci-first | 2 + abs/core/filesystem/profile | 4 + abs/core/flac/PKGBUILD | 4 +- abs/core/flex/PKGBUILD | 30 + abs/core/flex/flex-yytext.patch | 22 + abs/core/flex/lex.sh | 3 + abs/core/fluxbox/ChangeLog | 10 + abs/core/fluxbox/PKGBUILD | 35 +- abs/core/fluxbox/keys | 27 + abs/core/fontconfig/PKGBUILD | 2 +- abs/core/freetype2-static/PKGBUILD | 30 + abs/core/freetype2-static/bytecode.patch | 29 + .../freetype-2.2.1-enable-valid.patch | 20 + .../freetype-2.2.1-memcpy-fix.patch | 14 + .../freetype-2.3.0-enable-spr.patch | 11 + abs/core/ftgl/PKGBUILD | 25 + abs/core/ftgl/ftgl-gcc411.patch | 12 + abs/core/gcc-libs/PKGBUILD | 45 +- abs/core/gcc-libs/buildfix_new_bison.patch | 22 + abs/core/gcc/PKGBUILD | 81 + abs/core/gcc/buildfix_new_bison.patch | 22 + abs/core/gcc/gcc-hash-style-both.patch | 163 + abs/core/gcc/gcc-java-driver.patch | 11 + abs/core/gcc/gcc.install | 20 + abs/core/gcc/gcc_pure64.patch | 26 + abs/core/gdb/PKGBUILD | 27 + abs/core/gdb/gdb.install | 18 + abs/core/gdk-pixbuf/PKGBUILD | 33 + .../gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch | 48 + .../gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_secure.patch | 19 + .../gdk-pixbuf/gdk-pixbuf-0.22.0-loaders.patch | 134 + abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-m4.patch | 9 + abs/core/ghostscript/PKGBUILD | 12 +- abs/core/giflib/PKGBUILD | 2 +- abs/core/git/ChangeLog | 26 + abs/core/git/PKGBUILD | 47 + abs/core/glib/PKGBUILD | 32 + abs/core/glib/__changelog | 1 + abs/core/glib/aclocal-fixes.patch | 11 + abs/core/glib/gcc340.patch | 15 + abs/core/glib2/PKGBUILD | 24 +- abs/core/glibc/ChangeLog | 13 +- abs/core/glibc/PKGBUILD | 88 +- abs/core/glibc/glibc.install | 52 +- abs/core/gmp/PKGBUILD | 27 + abs/core/gmp/gmp.install | 18 + abs/core/gnutls/PKGBUILD | 16 +- abs/core/gnutls/gnutls.install | 18 + abs/core/gperf/PKGBUILD | 20 + abs/core/grub/PKGBUILD | 40 +- abs/core/grub/ext4.patch | 263 + abs/core/grub/grub.install | 22 + abs/core/grub/install-grub | 676 +- abs/core/grub/install-grub.orig | 187 + abs/core/grub/menu.lst | 10 +- abs/core/gsfonts/PKGBUILD | 2 +- abs/core/gtk/PKGBUILD | 32 + abs/core/gtk/__changelog | 3 + abs/core/gtk/aclocal-fixes.patch | 11 + abs/core/gtk2/PKGBUILD | 30 +- abs/core/gtk2/gtk2-emit-size-change.patch | 26 + abs/core/gtk2/gtk2.install | 24 +- abs/core/hal-info/PKGBUILD | 16 +- abs/core/hal/PKGBUILD | 22 +- abs/core/hal/fix-udev-compatibility.patch | 31 + abs/core/hal/ntfs-mount-fix.patch | 18 + abs/core/hauppauge-hvr-firmware/PKGBUILD | 20 + abs/core/hd3000firmware/PKGBUILD | 15 + abs/core/hdhomerun/PKGBUILD | 22 + abs/core/heimdal/PKGBUILD | 69 +- abs/core/heimdal/heimdal.install | 20 + abs/core/hwd/PKGBUILD | 22 + abs/core/hwd/hwd.install | 15 + abs/core/iguanair/PKGBUILD | 25 + abs/core/ilmbase/PKGBUILD | 22 + abs/core/imagemagick/PKGBUILD | 7 +- abs/core/imake/PKGBUILD | 39 + abs/core/imake/linuxconfig.patch | 31 + abs/core/imlib2/PKGBUILD | 2 +- abs/core/initscripts/ChangeLog | 111 + abs/core/initscripts/PKGBUILD | 15 +- abs/core/initscripts/__changelog | 1 + abs/core/initscripts/rc.shutdown.patch | 23 + abs/core/initscripts/rc.sysinit.patch | 24 + abs/core/inputproto/PKGBUILD | 16 +- abs/core/intel-dri/PKGBUILD | 59 +- abs/core/intel-dri/intel-disable-ttm-warning.patch | 13 + abs/core/intel-dri/intel-revert-vbl.patch | 21 + abs/core/intel-dri/mesa-7.1-link-shared.patch | 102 + abs/core/intltool/ChangeLog | 38 + abs/core/intltool/PKGBUILD | 23 + abs/core/iproute/PKGBUILD | 26 - abs/core/iproute/iproute2-2.4.7-now-ss020116.patch | 9823 --- abs/core/iproute2/PKGBUILD | 37 + .../iproute2/iproute2-2.4.7-now-ss020116.patch | 9823 +++ abs/core/iproute2/libdir.patch | 129 + abs/core/ipw3945/2.6.18-compile.patch | 11 - abs/core/ipw3945/PKGBUILD | 31 - abs/core/ipw3945/compile-2.6.24.patch | 43 - abs/core/ipw3945/ipw3945.install | 26 - abs/core/ipw3945/kernel-2.6.19.patch | 10 - abs/core/ipw3945/lockup.patch | 31 - abs/core/ivtv-utils/PKGBUILD | 6 +- abs/core/jack-audio-connection-kit/PKGBUILD | 4 +- abs/core/jasper/PKGBUILD | 2 +- abs/core/kdelibs3/PKGBUILD | 12 +- abs/core/kdelibs3/__changelog | 1 + abs/core/kernel-headers/PKGBUILD | 29 +- abs/core/kernel-headers/serial.diff | 13 + abs/core/kernel26/PKGBUILD | 155 +- abs/core/kernel26/config | 970 +- abs/core/kernel26/config.x86_64 | 841 +- abs/core/kernel26/ext4.patch | 152 + abs/core/kernel26/kernel26.install | 6 +- abs/core/kernel26/kernel26.preset | 2 +- abs/core/kernel26/logo_linux_mono.pbm | 976 +- abs/core/kernel26/logo_linux_vga16.ppm | 1064 +- abs/core/kernel26/serial.diff | 13 + abs/core/klibc-extras/PKGBUILD | 13 +- abs/core/klibc-kbd/PKGBUILD | 11 +- abs/core/klibc-kbd/no-fflush.patch | 14 + abs/core/klibc-module-init-tools/PKGBUILD | 20 +- abs/core/klibc-udev/50-udev-default.rules | 5 + abs/core/klibc-udev/60-persistent-storage.rules | 47 + abs/core/klibc-udev/64-device-mapper.rules | 4 + abs/core/klibc-udev/64-md-raid.rules | 18 + abs/core/klibc-udev/80-drivers.rules | 7 + abs/core/klibc-udev/PKGBUILD | 91 +- abs/core/klibc-udev/disable-uid-gid-lookup.patch | 33 + abs/core/klibc-udev/load-modules.sh | 57 +- abs/core/klibc-udev/udev-fix-klibc-build.patch | 48 + abs/core/klibc-udev/udev_hook | 5 +- abs/core/klibc-udev/udev_install | 16 +- abs/core/klibc/PKGBUILD | 48 +- abs/core/klibc/klibc-Kbuild.patch | 73 +- abs/core/klibc/klibc-fix-2.6.28-includes.patch | 12 + abs/core/klibc/klibc-x86_64-fix-io.h.patch | 28 + abs/core/lcms/PKGBUILD | 2 +- abs/core/less/PKGBUILD | 2 +- abs/core/libarchive/PKGBUILD | 13 +- abs/core/libavc1394/PKGBUILD | 22 + abs/core/libcaca/PKGBUILD | 20 + abs/core/libcap/PKGBUILD | 28 +- abs/core/libcddb/PKGBUILD | 22 + abs/core/libcups/PKGBUILD | 13 +- abs/core/libdaemon/PKGBUILD | 24 + abs/core/libdatrie/PKGBUILD | 12 +- abs/core/libdc1394/PKGBUILD | 21 + abs/core/libdca/PKGBUILD | 22 + abs/core/libdrm/PKGBUILD | 16 +- abs/core/libdv/PKGBUILD | 23 + abs/core/libdv/libdv-0.104-amd64reloc.patch | 262 + abs/core/libevent/PKGBUILD | 22 + abs/core/libexif/PKGBUILD | 12 +- abs/core/libgcrypt/PKGBUILD | 17 +- abs/core/libgcrypt/libgcrypt.install | 22 + abs/core/libgl/PKGBUILD | 63 +- abs/core/libgl/mesa-7.1-link-shared.patch | 102 + abs/core/libglade/PKGBUILD | 20 +- abs/core/libglade/glade.install | 5 - abs/core/libgsf/PKGBUILD | 16 +- abs/core/libidn/PKGBUILD | 28 +- abs/core/libidn/libidn.install | 19 + abs/core/libiec61883/PKGBUILD | 23 + abs/core/libjpeg/PKGBUILD | 29 +- abs/core/libmcrypt/PKGBUILD | 22 + abs/core/libmcrypt/aclocal-fixes.patch | 11 + abs/core/libmng/PKGBUILD | 25 + abs/core/libmpeg2/PKGBUILD | 28 + abs/core/libmysqlclient/PKGBUILD | 13 +- abs/core/libpcap/PKGBUILD | 48 +- abs/core/libpciaccess/PKGBUILD | 24 + abs/core/libpng/ChangeLog | 4 + abs/core/libpng/PKGBUILD | 17 +- abs/core/libraw1394/PKGBUILD | 24 + abs/core/libraw1394/libraw1394.install | 18 + abs/core/librsvg/PKGBUILD | 17 +- abs/core/librsvg/librsvg.install | 1 - abs/core/libtasn1/PKGBUILD | 23 +- abs/core/libtasn1/libtasn1.install | 18 + abs/core/libthai/PKGBUILD | 16 +- abs/core/libtiff/ChangeLog | 8 + abs/core/libtiff/PKGBUILD | 52 +- abs/core/libtiff/tiff-3.8.2-CVE-2008-2327.patch | 64 + abs/core/libtool/PKGBUILD | 14 +- abs/core/libtool/libtool.install | 20 + .../libvisual-plugins/01_disable-gforce-dfsg.patch | 52 + .../libvisual-plugins/02_64-bit_JESS_fix.patch | 58 + .../03_build_against_gl_fixes.patch | 372 + .../04_lv_analyzer_build_fix.patch | 12 + abs/core/libvisual-plugins/05_fix_po.patch | 127 + .../60_no-const-vispluginfo-in-nastyfft.patch | 18 + abs/core/libvisual-plugins/90_autoreconf.patch | 60483 +++++++++++++++++++ abs/core/libvisual-plugins/PKGBUILD | 46 + abs/core/libvisual-plugins/__changelog | 3 + .../libvisual-plugins/libvisual-plugins.install | 22 + abs/core/libvisual-projectm/PKGBUILD | 21 + abs/core/libvisual/PKGBUILD | 21 + abs/core/libwmf/PKGBUILD | 2 +- abs/core/libx11/PKGBUILD | 40 +- abs/core/libx11/xorg.sh | 4 - abs/core/libxaw/PKGBUILD | 19 +- abs/core/libxcb/PKGBUILD | 35 +- abs/core/libxcb/libxcb-1.1-no-pthread-stubs.patch | 12 + abs/core/libxcb/libxcb-1.1-sloppy-lock.patch | 12 + abs/core/libxext/PKGBUILD | 18 +- abs/core/libxfont/PKGBUILD | 2 +- abs/core/libxi/PKGBUILD | 23 +- abs/core/libxml-perl/PKGBUILD | 23 + abs/core/libxml2/PKGBUILD | 20 +- abs/core/libxml2/largefile64.patch | 12 + abs/core/libxrandr/PKGBUILD | 16 +- abs/core/libxres/PKGBUILD | 22 + abs/core/libxtst/PKGBUILD | 2 +- abs/core/lighttpd/PKGBUILD | 70 + abs/core/lighttpd/_changelog | 2 + abs/core/lighttpd/auth-inc.conf | 12 + abs/core/lighttpd/lighttpd.conf | 348 + abs/core/lighttpd/lighttpd.install | 6 + abs/core/lighttpd/lighttpd.logrotate.d | 5 + abs/core/lighttpd/lighttpd.rc.d | 38 + abs/core/linhes-live/PKGBUILD | 4 +- abs/core/linhes-live/etc/live-shutdown | 66 +- abs/core/linhes-live/etc/live-sysinit | 19 + abs/core/linhes-live/etc/rc.shutdown-live | 1 + abs/core/linhes-live/etc/rc.sysinit-live | 3 + abs/core/linhes-live/lib/initcpio/hooks/larch1 | 5 + abs/core/linhes-live/lib/initcpio/hooks/larch3 | 4 + abs/core/linhes-scripts/770-wrapper.sh | 37 + abs/core/linhes-scripts/PKGBUILD | 47 + abs/core/linhes-scripts/idle.sh | 102 + abs/core/linhes-scripts/importfiles.sh | 18 + abs/core/linhes-scripts/limit-mythcommflag.sh | 54 + abs/core/linhes-scripts/linhes_update.sh | 38 + abs/core/linhes-scripts/linhes_update2.sh | 25 + abs/core/linhes-scripts/linhes_update3.sh | 10 + abs/core/linhes-scripts/mplayer-resumer-vdpau.pl | 204 + abs/core/linhes-scripts/mplayer-resumer.pl | 188 + abs/core/linhes-scripts/myth2mp3 | 82 + abs/core/linhes-scripts/myth2x264 | 223 + abs/core/linhes-scripts/myth2xvid | 223 + abs/core/linhes-scripts/mythwelcome-set-alarm.sh | 23 + abs/core/linhes-scripts/mythwelcome-test-wakeup.sh | 16 + abs/core/linhes-scripts/pause-mythcommflag.sh | 53 + abs/core/linhes-scripts/pause_mythcommflag | 8 + abs/core/linhes-scripts/run-limit-mythcommflag | 2 + abs/core/linhes-scripts/run-pause-mythcommflag | 2 + abs/core/linhes-scripts/screenshooter.sh | 230 + abs/core/linhes-scripts/shootscreens-mythtv.sh | 11 + abs/core/linhes-scripts/shootscreens.sh | 37 + abs/core/linhes-scripts/vdpau-detector | 103 + abs/core/linhes-sounds/PKGBUILD | 29 + abs/core/linhes-sounds/beg.wav | Bin 0 -> 61084 bytes abs/core/linhes-sounds/complete.wav | Bin 0 -> 45222 bytes abs/core/linhes-sounds/end.wav | Bin 0 -> 81506 bytes abs/core/linhes-sounds/fail.wav | Bin 0 -> 50050 bytes abs/core/linhes-sounds/half_second_of_silence.wav | Bin 0 -> 352880 bytes abs/core/linhes-sounds/init.wav | Bin 0 -> 46502 bytes abs/core/linhes-sounds/restore.wav | Bin 0 -> 55538 bytes abs/core/linhes-sounds/restored.wav | Bin 0 -> 57684 bytes abs/core/linhes-sounds/rf.wav | Bin 0 -> 60972 bytes abs/core/linhes-sounds/testing.wav | Bin 0 -> 42278 bytes abs/core/linhes-sounds/vr.wav | Bin 0 -> 75512 bytes abs/core/linhes-splash/1024x768.cfg | 28 + abs/core/linhes-splash/800x600.cfg | 28 + abs/core/linhes-splash/PKGBUILD | 29 + abs/core/linhes-splash/Vera.copyright | 124 + abs/core/linhes-splash/Vera.ttf | Bin 0 -> 65932 bytes abs/core/linhes-splash/__changelog | 1 + abs/core/linhes-splash/background-1024x768.png | Bin 0 -> 118977 bytes abs/core/linhes-splash/background-800x600.png | Bin 0 -> 101852 bytes abs/core/linhes-splash/verbose-1024x768.png | Bin 0 -> 414129 bytes abs/core/linhes-splash/verbose-800x600.png | Bin 0 -> 215658 bytes abs/core/linux-atm/PKGBUILD | 25 + abs/core/linux-atm/linux-atm-2.5.0-glibc28.patch | 11 + abs/core/lirc-utils/PKGBUILD | 28 +- abs/core/lirc-utils/hw_commandir.c | 1926 + abs/core/lirc-utils/hw_commandir.h | 175 + abs/core/lirc-utils/lirc_atiusb.patch | 27 + abs/core/lirc/PKGBUILD | 58 +- abs/core/lirc/dvicoIR.rules | 15 + abs/core/lirc/hw_commandir.c | 1926 + abs/core/lirc/hw_commandir.h | 175 + abs/core/lirc/kernel-2.6.27.patch | 78 + abs/core/lirc/lirc.fdi | 11 + abs/core/lirc/lirc.install | 6 +- abs/core/lirc/lirc_atiusb.patch | 27 + abs/core/lirc/lirc_mod_mce.patch | 97 + abs/core/live-media/PKGBUILD | 32 + abs/core/local-website/PKGBUILD | 21 + abs/core/local-website/htdocs/KnoppMyth.css | 24 + abs/core/local-website/htdocs/favicon.ico | Bin 0 -> 1150 bytes abs/core/local-website/htdocs/fuppes.php | 4 + abs/core/local-website/htdocs/header.png | Bin 0 -> 45943 bytes abs/core/local-website/htdocs/index.html | 125 + abs/core/local-website/htdocs/layout.css | 29 + abs/core/local-website/htdocs/linhes.html | 392 + abs/core/local-website/htdocs/mediaserv.php | 4 + .../BlockDiagramofavideocapturedevice.eps | 331 + .../BlockDiagramofavideocapturedevice.png | Bin 0 -> 11228 bytes .../htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png | Bin 0 -> 8756 bytes .../mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png | Bin 0 -> 8271 bytes .../htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png | Bin 0 -> 7786 bytes .../htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png | Bin 0 -> 8577 bytes abs/core/local-website/htdocs/mythtv-doc/Makefile | 42 + abs/core/local-website/htdocs/mythtv-doc/add.eps | 27 + abs/core/local-website/htdocs/mythtv-doc/add.png | Bin 0 -> 733 bytes .../mythtv-doc/doxygen-architecture-document.cpp | 787 + .../mythtv-doc/doxygen-create-developer-docs.cfg | 1142 + .../htdocs/mythtv-doc/doxygen.perl.patch | 141 + .../htdocs/mythtv-doc/i18n/.svn/all-wcprops | 11 + .../htdocs/mythtv-doc/i18n/.svn/entries | 40 + .../htdocs/mythtv-doc/i18n/.svn/format | 1 + .../i18n/.svn/text-base/keys_de.txt.svn-base | 298 + .../htdocs/mythtv-doc/i18n/keys_de.txt | 298 + .../local-website/htdocs/mythtv-doc/index.html | 250 + abs/core/local-website/htdocs/mythtv-doc/keys.txt | 325 + .../htdocs/mythtv-doc/mythtv-HOWTO-1.html | 272 + .../htdocs/mythtv-doc/mythtv-HOWTO-10.html | 387 + .../htdocs/mythtv-doc/mythtv-HOWTO-11.html | 626 + .../htdocs/mythtv-doc/mythtv-HOWTO-12.html | 1112 + .../htdocs/mythtv-doc/mythtv-HOWTO-13.html | 106 + .../htdocs/mythtv-doc/mythtv-HOWTO-14.html | 112 + .../htdocs/mythtv-doc/mythtv-HOWTO-15.html | 137 + .../htdocs/mythtv-doc/mythtv-HOWTO-16.html | 241 + .../htdocs/mythtv-doc/mythtv-HOWTO-17.html | 348 + .../htdocs/mythtv-doc/mythtv-HOWTO-18.html | 71 + .../htdocs/mythtv-doc/mythtv-HOWTO-19.html | 42 + .../htdocs/mythtv-doc/mythtv-HOWTO-2.html | 27 + .../htdocs/mythtv-doc/mythtv-HOWTO-20.html | 102 + .../htdocs/mythtv-doc/mythtv-HOWTO-21.html | 37 + .../htdocs/mythtv-doc/mythtv-HOWTO-22.html | 608 + .../htdocs/mythtv-doc/mythtv-HOWTO-23.html | 1193 + .../htdocs/mythtv-doc/mythtv-HOWTO-24.html | 452 + .../htdocs/mythtv-doc/mythtv-HOWTO-3.html | 805 + .../htdocs/mythtv-doc/mythtv-HOWTO-4.html | 181 + .../htdocs/mythtv-doc/mythtv-HOWTO-5.html | 426 + .../htdocs/mythtv-doc/mythtv-HOWTO-6.html | 176 + .../htdocs/mythtv-doc/mythtv-HOWTO-7.html | 130 + .../htdocs/mythtv-doc/mythtv-HOWTO-8.html | 530 + .../htdocs/mythtv-doc/mythtv-HOWTO-9.html | 649 + .../htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html | 8532 +++ .../htdocs/mythtv-doc/mythtv-HOWTO.html | 250 + .../htdocs/mythtv-doc/mythtv-HOWTO.pdf | Bin 0 -> 911395 bytes .../htdocs/mythtv-doc/mythtv-HOWTO.sgml | 7977 +++ .../htdocs/mythtv-doc/mythtv-HOWTO.txt | 9235 +++ abs/core/local-website/htdocs/mythtv-doc/stop.eps | 103 + abs/core/local-website/htdocs/mythtv-doc/stop.png | Bin 0 -> 553 bytes .../local-website/htdocs/mythtv-doc/warning.eps | 134 + .../local-website/htdocs/mythtv-doc/warning.png | Bin 0 -> 1899 bytes abs/core/local-website/htdocs/remote/COPYING | 341 + abs/core/local-website/htdocs/remote/CREDITS | 11 + abs/core/local-website/htdocs/remote/Changelog | 131 + abs/core/local-website/htdocs/remote/Issues | 18 + abs/core/local-website/htdocs/remote/README | 43 + abs/core/local-website/htdocs/remote/backend.php | 168 + abs/core/local-website/htdocs/remote/csshover.htc | 120 + .../local-website/htdocs/remote/images/blank.gif | Bin 0 -> 43 bytes .../htdocs/remote/images/button_30.png | Bin 0 -> 1511 bytes .../htdocs/remote/images/button_30g.png | Bin 0 -> 1535 bytes .../htdocs/remote/images/button_30r.png | Bin 0 -> 1520 bytes .../htdocs/remote/images/button_text.png | Bin 0 -> 2223 bytes .../htdocs/remote/images/button_textg.png | Bin 0 -> 3210 bytes .../htdocs/remote/images/button_textr.png | Bin 0 -> 3130 bytes .../local-website/htdocs/remote/images/down.png | Bin 0 -> 2468 bytes .../local-website/htdocs/remote/images/down_g.png | Bin 0 -> 2600 bytes .../local-website/htdocs/remote/images/down_r.png | Bin 0 -> 2575 bytes .../htdocs/remote/images/fast_forward.png | Bin 0 -> 2775 bytes .../htdocs/remote/images/fast_forward_g.png | Bin 0 -> 2838 bytes .../htdocs/remote/images/fast_forward_r.png | Bin 0 -> 2814 bytes .../htdocs/remote/images/fast_rewind.png | Bin 0 -> 2743 bytes .../htdocs/remote/images/fast_rewind_g.png | Bin 0 -> 2804 bytes .../htdocs/remote/images/fast_rewind_r.png | Bin 0 -> 2805 bytes .../local-website/htdocs/remote/images/left.png | Bin 0 -> 2503 bytes .../local-website/htdocs/remote/images/left_g.png | Bin 0 -> 2618 bytes .../local-website/htdocs/remote/images/left_r.png | Bin 0 -> 2617 bytes abs/core/local-website/htdocs/remote/images/ok.png | Bin 0 -> 2614 bytes .../local-website/htdocs/remote/images/ok_g.png | Bin 0 -> 2662 bytes .../local-website/htdocs/remote/images/ok_r.png | Bin 0 -> 2636 bytes .../local-website/htdocs/remote/images/pause.png | Bin 0 -> 2259 bytes .../local-website/htdocs/remote/images/pause_g.png | Bin 0 -> 2236 bytes .../local-website/htdocs/remote/images/pause_r.png | Bin 0 -> 2254 bytes .../local-website/htdocs/remote/images/rec.png | Bin 0 -> 2433 bytes .../local-website/htdocs/remote/images/rec_g.png | Bin 0 -> 2406 bytes .../local-website/htdocs/remote/images/rec_r.png | Bin 0 -> 2396 bytes .../local-website/htdocs/remote/images/right.png | Bin 0 -> 2520 bytes .../local-website/htdocs/remote/images/right_g.png | Bin 0 -> 2656 bytes .../local-website/htdocs/remote/images/right_r.png | Bin 0 -> 2593 bytes .../htdocs/remote/images/skip_back.png | Bin 0 -> 2513 bytes .../htdocs/remote/images/skip_back_g.png | Bin 0 -> 2614 bytes .../htdocs/remote/images/skip_back_r.png | Bin 0 -> 2646 bytes .../htdocs/remote/images/skip_forward.png | Bin 0 -> 2560 bytes .../htdocs/remote/images/skip_forward_g.png | Bin 0 -> 2575 bytes .../htdocs/remote/images/skip_forward_r.png | Bin 0 -> 2615 bytes .../local-website/htdocs/remote/images/stop.png | Bin 0 -> 1950 bytes .../local-website/htdocs/remote/images/stop_g.png | Bin 0 -> 1977 bytes .../local-website/htdocs/remote/images/stop_r.png | Bin 0 -> 1980 bytes abs/core/local-website/htdocs/remote/images/up.png | Bin 0 -> 2473 bytes .../local-website/htdocs/remote/images/up_g.png | Bin 0 -> 2570 bytes .../local-website/htdocs/remote/images/up_r.png | Bin 0 -> 2553 bytes .../local-website/htdocs/remote/inc/process.php | 131 + abs/core/local-website/htdocs/remote/index.html | 19 + .../local-website/htdocs/remote/layout-wide.html | 250 + abs/core/local-website/htdocs/remote/layout.html | 269 + abs/core/local-website/htdocs/remote/nav.php | 57 + abs/core/local-website/htdocs/remote/num.php | 57 + abs/core/local-website/htdocs/remote/pda.php | 39 + .../local-website/htdocs/remote/remote-wide.html | 275 + .../local-website/htdocs/remote/remote-wide.php | 380 + abs/core/local-website/htdocs/remote/remote.css | 436 + abs/core/local-website/htdocs/remote/remote.html | 307 + abs/core/local-website/htdocs/remote/remote.php | 413 + .../local-website/htdocs/remote/svg/button.svg | 353 + .../local-website/htdocs/remote/svg/button_30.xcf | Bin 0 -> 1506 bytes .../local-website/htdocs/remote/svg/button_g.svg | 373 + .../local-website/htdocs/remote/svg/button_r.svg | 371 + abs/core/local-website/htdocs/remote/svg/down.svg | 361 + .../htdocs/remote/svg/fast_forward.svg | 406 + .../htdocs/remote/svg/fast_rewind.svg | 406 + abs/core/local-website/htdocs/remote/svg/left.svg | 358 + abs/core/local-website/htdocs/remote/svg/ok.svg | 378 + abs/core/local-website/htdocs/remote/svg/pause.svg | 410 + abs/core/local-website/htdocs/remote/svg/rec.svg | 395 + abs/core/local-website/htdocs/remote/svg/right.svg | 370 + .../local-website/htdocs/remote/svg/scratch.svg | 243 + .../local-website/htdocs/remote/svg/skip_back.svg | 407 + .../htdocs/remote/svg/skip_forward.svg | 413 + abs/core/local-website/htdocs/remote/svg/stop.svg | 384 + abs/core/local-website/htdocs/remote/svg/up.svg | 349 + abs/core/local-website/htdocs/rrd/Disabled | 0 abs/core/local-website/htdocs/rrd/index.html | 29 + abs/core/local-website/htdocs/style.css | 227 + abs/core/lshw/PKGBUILD | 26 + abs/core/lshw/abi_stdlib.diff | 10 + abs/core/lshw/gcc4.3.patch | 282 + abs/core/m4/PKGBUILD | 24 + abs/core/m4/m4.install | 20 + abs/core/madwifi-utils/PKGBUILD | 4 +- abs/core/madwifi/PKGBUILD | 8 +- abs/core/madwifi/madwifi-ng.install | 6 +- abs/core/mcpp/PKGBUILD | 26 +- abs/core/mdadm/PKGBUILD | 15 +- abs/core/mdadm/mdadm-2.2-segfault.patch | 12 - abs/core/media_dirs/PKGBUILD | 68 + abs/core/media_dirs/media_dirs.install | 42 + abs/core/mesa/PKGBUILD | 73 +- abs/core/mesa/mesa-7.1-link-shared.patch | 102 + abs/core/miscsplashutils/ChangeLog | 3 + abs/core/miscsplashutils/PKGBUILD | 26 + abs/core/miscsplashutils/miscsplashutils.install | 39 + abs/core/mjpegtools/1.9.patch | 147 + abs/core/mjpegtools/PKGBUILD | 29 + abs/core/mjpegtools/mjpegtools-1.8.0-gcc41.patch | 12 + abs/core/mjpegtools/mjpegtools-1.8.0-libc.patch | 154 + .../mjpegtools/mjpegtools-1.8.0-limits.h.patch | 30 + abs/core/mkinitcpio/PKGBUILD | 20 +- abs/core/mkinitcpio/mkinitcpio.conf.diff | 8 + abs/core/mpfr/PKGBUILD | 26 + abs/core/mpfr/mpfr.install | 18 + abs/core/mplayer-wrapper/PKGBUILD | 21 + abs/core/mplayer-wrapper/mplayer-wrapper.install | 38 + abs/core/mplayer-wrapper/mplayer-wrapper.pl | 212 + .../mplayer/MPlayer-1.0rc1-gnome-screensaver.patch | 286 - abs/core/mplayer/PKGBUILD | 98 +- abs/core/mplayer/demux_audio_fix_20080129.diff | 11 - abs/core/mplayer/demux_mov_fix_20080129.diff | 45 - abs/core/mplayer/ivtv_2.6.24.patch | 33 - abs/core/mplayer/stream_cddb_fix_20080120.diff | 32 - abs/core/mplayer/url_fix_20080120.diff | 10 - abs/core/mysql-clients/PKGBUILD | 9 +- abs/core/mysql-python/PKGBUILD | 12 +- abs/core/mysql/PKGBUILD | 16 +- abs/core/mysql/__changelog | 8 + abs/core/mysql/my.cnf | 4 +- abs/core/mysql/mysqld | 11 +- abs/core/mysql/mysqld.conf.d | 2 +- abs/core/mythinstall/PKGBUILD | 49 + abs/core/mythinstall/autocard.cpp | 186 + abs/core/mythinstall/autocard.h | 30 + abs/core/mythinstall/infrared.cpp | 368 + abs/core/mythinstall/infrared.h | 45 + abs/core/mythinstall/install-ui.xml | 175 + abs/core/mythinstall/install_proxy.sh | 353 + abs/core/mythinstall/installationtype.cpp | 272 + abs/core/mythinstall/installationtype.h | 11 + abs/core/mythinstall/installdialog.cpp | 1034 + abs/core/mythinstall/installdialog.h | 101 + abs/core/mythinstall/installsettings.cpp | 4556 ++ abs/core/mythinstall/installsettings.h | 489 + abs/core/mythinstall/main.cpp | 533 + abs/core/mythinstall/misc_settings.cpp | 621 + abs/core/mythinstall/misc_settings.h | 97 + abs/core/mythinstall/mv_common.h | 4 + abs/core/mythinstall/mythinstall.pro | 46 + abs/core/mythinstall/password_manage.cpp | 445 + abs/core/mythinstall/password_manage.h | 60 + abs/core/mythinstall/settemplate.cpp | 419 + abs/core/mythinstall/settemplate.h | 13 + abs/core/mythinstall/statusbox.cpp | 1411 + abs/core/mythinstall/statusbox.h | 76 + abs/core/mythinstall/xorgsettings.cpp | 686 + abs/core/mythinstall/xorgsettings.h | 178 + abs/core/mythtv/stable/glass-wide/PKGBUILD | 15 + abs/core/mythtv/stable/linhes-theme/PKGBUILD | 17 + abs/core/mythtv/stable/morethemes/PKGBUILD | 32 + abs/core/mythtv/stable/mytharchive/PKGBUILD | 10 +- abs/core/mythtv/stable/mythbrowser/PKGBUILD | 10 +- abs/core/mythtv/stable/mythcontrols/PKGBUILD | 8 +- abs/core/mythtv/stable/mythdb-initial/PKGBUILD | 2 +- abs/core/mythtv/stable/mythdb-initial/__changelog | 25 + abs/core/mythtv/stable/mythdb-initial/mc.sql | 40 +- .../mythtv/stable/mythdb-initial/permissions.sql | 2 +- abs/core/mythtv/stable/mythflix/PKGBUILD | 22 +- abs/core/mythtv/stable/mythgallery/PKGBUILD | 7 +- abs/core/mythtv/stable/mythgame/PKGBUILD | 7 +- abs/core/mythtv/stable/mythmovies/PKGBUILD | 33 + abs/core/mythtv/stable/mythmusic/PKGBUILD | 14 +- abs/core/mythtv/stable/mythnews/PKGBUILD | 7 +- abs/core/mythtv/stable/mythphone/PKGBUILD | 6 +- abs/core/mythtv/stable/mythsmolt/PKGBUILD | 26 + abs/core/mythtv/stable/mythstream/PKGBUILD | 35 + abs/core/mythtv/stable/mythstream/mythstream.diff | 79 + .../mythtv/stable/mythstream/mythstream.install | 23 + abs/core/mythtv/stable/myththemes/PKGBUILD | 7 +- .../stable/mythtv/2.6.28_dvb_api_version.diff | 22 + abs/core/mythtv/stable/mythtv/PKGBUILD | 74 +- .../mythtv/stable/mythtv/gnome_screensaver.patch | 18 + .../stable/mythtv/menu-xml/HOST_SETTINGS.xml | 94 + abs/core/mythtv/stable/mythtv/menu-xml/is.xml | 3 + .../stable/mythtv/menu-xml/library.xml.patch | 15 + abs/core/mythtv/stable/mythtv/menu-xml/linhes.xml | 60 + .../stable/mythtv/menu-xml/mainmenu.xml.patch | 39 + .../mythtv/stable/mythtv/menu-xml/mythbackup.xml | 20 + .../mythtv/stable/mythtv/menu-xml/mythrestore.xml | 20 + .../stable/mythtv/menu-xml/optical_menu.xml.patch | 15 + .../mythtv/menu-xml/original/create_patch.sh | 5 + abs/core/mythtv/stable/mythtv/menu-xml/setup.xml | 111 + .../mythtv/stable/mythtv/menu-xml/siriusmenu.xml | 419 + abs/core/mythtv/stable/mythtv/menu-xml/update.xml | 20 + abs/core/mythtv/stable/mythtv/menu-xml/update2.xml | 26 + .../stable/mythtv/menu-xml/util_menu.xml.patch | 17 + abs/core/mythtv/stable/mythtv/menu-xml/xmmenu.xml | 574 + abs/core/mythtv/stable/mythtv/mpegpspatch | 66 + abs/core/mythtv/stable/mythtv/mythbackend.lr | 9 + abs/core/mythtv/stable/mythtv/mythfrontend.lr | 9 + .../mythtv/stable/mythtv/myththemedmenu.cpp.patch | 125 + .../mythtv/stable/mythtv/myththemedmenu.h.patch | 25 + abs/core/mythtv/stable/mythtv/mythtv.install | 46 +- abs/core/mythtv/stable/mythtv/pretty | 2 + abs/core/mythtv/stable/mythtv/smolt_jump.patch | 9 + abs/core/mythtv/stable/mythvideo/PKGBUILD | 13 +- .../mythvideo-6338-use_tmdb_in_fixes.patch | 151 + abs/core/mythtv/stable/mythvideo/mythvideo.install | 20 + abs/core/mythtv/stable/mythweather/PKGBUILD | 6 +- abs/core/mythtv/stable/mythweb/PKGBUILD | 40 +- abs/core/mythtv/stable/mythweb/mythweb.install | 11 +- .../2923-mythweb-gallery-English_GB_lang.diff | 102 + abs/core/mythtv/stable/mythweb/patch/icons.tar.gz | Bin 0 -> 14759 bytes .../mythtv/stable/mythweb/patch/mythweb.pl.diff | 23 + .../mythweb/patch/mythweb_gallery_updated1.diff | 1657 + abs/core/mythtv/stable/mythweb/transcoders.patch | 23 + abs/core/mythtv/stable/mythweb/wiiweb.tar.bz2 | Bin 0 -> 23648 bytes abs/core/mythtv/stable/mythzoneminder/PKGBUILD | 32 + abs/core/mythtv/trunk/clean_all.sh | 22 + abs/core/mythtv/trunk/morethemes/PKGBUILD | 49 + abs/core/mythtv/trunk/mp_all.sh | 30 + abs/core/mythtv/trunk/mytharchive/PKGBUILD | 50 + abs/core/mythtv/trunk/mythbrowser/PKGBUILD | 50 + abs/core/mythtv/trunk/mythflix/PKGBUILD | 50 + abs/core/mythtv/trunk/mythgallery/PKGBUILD | 50 + abs/core/mythtv/trunk/mythgame/PKGBUILD | 50 + abs/core/mythtv/trunk/mythmovies/PKGBUILD | 50 + abs/core/mythtv/trunk/mythmusic/PKGBUILD | 53 + abs/core/mythtv/trunk/mythnews/PKGBUILD | 50 + abs/core/mythtv/trunk/myththemes/PKGBUILD | 49 + abs/core/mythtv/trunk/mythtv/PKGBUILD | 91 + .../mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml | 87 + abs/core/mythtv/trunk/mythtv/menu-xml/is.xml | 3 + .../mythtv/trunk/mythtv/menu-xml/library.xml.patch | 12 + abs/core/mythtv/trunk/mythtv/menu-xml/linhes.xml | 54 + .../trunk/mythtv/menu-xml/mainmenu.xml.patch | 41 + .../mythtv/trunk/mythtv/menu-xml/mythbackup.xml | 20 + .../mythtv/trunk/mythtv/menu-xml/mythrestore.xml | 20 + .../trunk/mythtv/menu-xml/optical_menu.xml.patch | 16 + .../trunk/mythtv/menu-xml/original/create_patch.sh | 5 + abs/core/mythtv/trunk/mythtv/menu-xml/setup.xml | 111 + .../mythtv/trunk/mythtv/menu-xml/siriusmenu.xml | 419 + .../trunk/mythtv/menu-xml/util_menu.xml.patch | 16 + abs/core/mythtv/trunk/mythtv/menu-xml/xmmenu.xml | 574 + abs/core/mythtv/trunk/mythtv/myth.sh | 4 + abs/core/mythtv/trunk/mythtv/mythbackend | 38 + abs/core/mythtv/trunk/mythtv/mythbackend.lr | 9 + abs/core/mythtv/trunk/mythtv/mythbackend.sh | 117 + abs/core/mythtv/trunk/mythtv/mythfrontend.lr | 9 + abs/core/mythtv/trunk/mythtv/mythtv.install | 30 + abs/core/mythtv/trunk/mythtv/pretty | 2 + abs/core/mythtv/trunk/mythtv/smolt_jump.patch | 30 + abs/core/mythtv/trunk/mythvideo/PKGBUILD | 50 + abs/core/mythtv/trunk/mythweather/PKGBUILD | 50 + abs/core/mythtv/trunk/mythweb/PKGBUILD | 48 + abs/core/mythtv/trunk/mythweb/mythweb.install | 10 + abs/core/mythtv/trunk/mythzoneminder/PKGBUILD | 50 + abs/core/nasm/PKGBUILD | 19 + abs/core/ncurses/ChangeLog | 9 + abs/core/ncurses/PKGBUILD | 104 +- abs/core/ndiswrapper/PKGBUILD | 32 +- abs/core/ndiswrapper/kernel-2.6.27.patch | 116 + .../ndiswrapper/ndiswrapper-CVE-2008-4395.patch | 86 + abs/core/ndiswrapper/ndiswrapper.install | 6 +- abs/core/netkit-telnet/PKGBUILD | 22 + abs/core/netkit-telnet/netkit-telnet-0.17.patch | 36 + abs/core/netkit-telnet/telnet.xinetd | 10 + abs/core/nfs-utils/PKGBUILD | 48 + abs/core/nfs-utils/exports | 8 + abs/core/nfs-utils/nfs-utils.install | 38 + abs/core/nfs-utils/nfs.conf.d | 20 + abs/core/nfs-utils/nfsd | 91 + abs/core/nfs-utils/nfslock | 50 + abs/core/nfs-utils/start-statd.patch | 21 + abs/core/nfsidmap/PKGBUILD | 26 + abs/core/nmbscan/PKGBUILD | 19 + abs/core/ntfs-3g/20-ntfs-config-write-policy.fdi | 13 + abs/core/ntfs-3g/PKGBUILD | 31 + abs/core/ntfs-3g/ntfs-3g.install | 15 + abs/core/ntp/PKGBUILD | 26 + abs/core/ntp/ntp-client.conf | 7 + abs/core/ntp/ntp.conf | 57 + abs/core/ntp/ntpd | 39 + abs/core/ntp/ntpdate | 30 + abs/core/nuvexport/MP4.pm | 316 + abs/core/nuvexport/PKGBUILD | 6 +- abs/core/nuvexport/XviD.pm | 197 + abs/core/nvidia-71xx-utils/PKGBUILD | 63 + abs/core/nvidia-71xx-utils/nvidia-71xx.install | 29 + abs/core/nvidia-71xx-utils/supported-cards.txt | 236 + .../NVIDIA_kernel-96.43.05-2290218.diff.txt | 1471 + abs/core/nvidia-71xx/PKGBUILD | 41 + abs/core/nvidia-71xx/nvidia-71xx.install | 23 + abs/core/nvidia-96xx-utils/PKGBUILD | 65 + abs/core/nvidia-96xx-utils/nvidia-96xx.install | 22 + abs/core/nvidia-96xx-utils/supported-cards.txt | 236 + abs/core/nvidia-96xx/NVIDIA_173.14.12_2.6.27.patch | 87 + abs/core/nvidia-96xx/PKGBUILD | 38 + abs/core/nvidia-96xx/nvidia-96xx.install | 22 + abs/core/nvidia-utils/PKGBUILD | 73 + abs/core/nvidia-utils/nvidia.install | 40 + abs/core/nvidia-utils/supported-cards.txt | 292 + abs/core/nvidia/NVIDIA_kernel-169.12-2286310.diff | 637 + abs/core/nvidia/PKGBUILD | 37 + abs/core/nvidia/nvidia.install | 22 + abs/core/openexr/PKGBUILD | 23 +- abs/core/openexr/gcc43.patch | 25 +- abs/core/openssh/PKGBUILD | 24 +- abs/core/openssh/sshd.patch | 35 + abs/core/openssh/sshd_config.diff | 0 abs/core/openssl/PKGBUILD | 26 +- abs/core/pacman-mirrorlist/PKGBUILD | 22 + abs/core/pacman-mirrorlist/mirrorlist | 116 + abs/core/pacman/PKGBUILD | 38 +- abs/core/pacman/pacman.conf | 1 + abs/core/pam/PKGBUILD | 33 +- abs/core/pango/PKGBUILD | 18 +- abs/core/pango/bgo563356.patch | 305 + abs/core/parted/PKGBUILD | 4 +- abs/core/parted/__changelog | 2 + abs/core/patch/PKGBUILD | 21 + abs/core/pciutils/PKGBUILD | 2 +- abs/core/pcre/ChangeLog | 6 + abs/core/pcre/PKGBUILD | 18 +- abs/core/perl-xml-dom/PKGBUILD | 23 + abs/core/perl_modules/perl-algorithm-diff/PKGBUILD | 20 + abs/core/perl_modules/perl-astro-suntime/PKGBUILD | 29 + .../perl-class-data-inheritable/PKGBUILD | 23 + .../perl_modules/perl-class-singleton/PKGBUILD | 23 + .../perl_modules/perl-compress-raw-zlib/PKGBUILD | 25 + abs/core/perl_modules/perl-compress-zlib/PKGBUILD | 25 + abs/core/perl_modules/perl-config-simple/PKGBUILD | 25 + abs/core/perl_modules/perl-data-dumper/PKGBUILD | 25 + .../perl-datetime-format-mail/PKGBUILD | 23 + .../perl-datetime-format-strptime/ChangeLog | 7 + .../perl-datetime-format-strptime/PKGBUILD | 28 + .../perl-datetime-format-w3cdtf/PKGBUILD | 23 + .../perl_modules/perl-datetime-locale/PKGBUILD | 23 + .../perl_modules/perl-datetime-timezone/ChangeLog | 5 + .../perl_modules/perl-datetime-timezone/PKGBUILD | 23 + abs/core/perl_modules/perl-datetime/PKGBUILD | 23 + .../perl_modules/perl-devel-stacktrace/PKGBUILD | 28 + .../perl_modules/perl-device-serialport/PKGBUILD | 29 + abs/core/perl_modules/perl-digest-sha1/PKGBUILD | 31 + abs/core/perl_modules/perl-error/PKGBUILD | 27 + .../perl_modules/perl-exception-class/PKGBUILD | 22 + abs/core/perl_modules/perl-getopt-long/PKGBUILD | 25 + abs/core/perl_modules/perl-getopt-lucid/PKGBUILD | 25 + abs/core/perl_modules/perl-image-size/PKGBUILD | 24 + .../perl_modules/perl-io-compress-zlib/PKGBUILD | 25 + abs/core/perl_modules/perl-javascript/PKGBUILD | 23 + abs/core/perl_modules/perl-libxml/PKGBUILD | 31 + .../perl_modules/perl-libxml/perl-libxml.install | 29 + abs/core/perl_modules/perl-list-compare/PKGBUILD | 26 + abs/core/perl_modules/perl-list-member/PKGBUILD | 24 + abs/core/perl_modules/perl-list-moreutils/PKGBUILD | 22 + abs/core/perl_modules/perl-locale-gettext/PKGBUILD | 28 + abs/core/perl_modules/perl-log-dispatch/PKGBUILD | 23 + abs/core/perl_modules/perl-log-log4perl/PKGBUILD | 23 + abs/core/perl_modules/perl-mime-parser/PKGBUILD | 25 + abs/core/perl_modules/perl-net-upnp/PKGBUILD | 23 + .../perl-net-upnp/perl-config-simple/PKGBUILD | 25 + .../perl_modules/perl-params-validate/PKGBUILD | 23 + abs/core/perl_modules/perl-pathtools/PKGBUILD | 22 + abs/core/perl_modules/perl-pathtools/license.txt | 6 + .../perl_modules/perl-php-serialization/PKGBUILD | 30 + abs/core/perl_modules/perl-proc-daemon/PKGBUILD | 23 + abs/core/perl_modules/perl-proc-pid-file/PKGBUILD | 25 + abs/core/perl_modules/perl-test-pod/PKGBUILD | 25 + abs/core/perl_modules/perl-text-kakasi/PKGBUILD | 4 +- abs/core/perl_modules/perl-time-format/PKGBUILD | 21 + abs/core/perl_modules/perl-time-modules/PKGBUILD | 25 + abs/core/perl_modules/perl-tk/PKGBUILD | 2 +- abs/core/perl_modules/perl-unicode-map/PKGBUILD | 30 + abs/core/perl_modules/perl-x10/PKGBUILD | 30 + abs/core/perl_modules/perl-xml-libxml/PKGBUILD | 18 +- abs/core/perl_modules/perl-xml-libxslt/PKGBUILD | 23 + abs/core/perl_modules/perl-xml-parser/PKGBUILD | 24 + abs/core/perl_modules/perl-xml-regexp/PKGBUILD | 23 + abs/core/perl_modules/perl-xml-rss/PKGBUILD | 22 + abs/core/php/PKGBUILD | 54 +- abs/core/php/__changelog | 6 + abs/core/php/php.ini | 20 +- abs/core/php/php.install | 62 +- abs/core/pil/PKGBUILD | 22 +- abs/core/pixman/PKGBUILD | 15 +- abs/core/plextor-convertX-driver/PKGBUILD | 13 +- abs/core/plextor-convertX-driver/convertX.install | 6 +- .../wis-go7007-linux-0.9.8-2-2.6.27.patch | 83 + abs/core/portmap/PKGBUILD | 24 + abs/core/portmap/gcc3-errno_h.patch | 18 + abs/core/portmap/portmap | 38 + abs/core/portmap/portmap_5beta.patch.bz2 | Bin 0 -> 9958 bytes abs/core/ppp/PKGBUILD | 8 +- abs/core/projectm/PKGBUILD | 21 + abs/core/projectm/projectm.install | 13 + abs/core/pvr150-firmware/PKGBUILD | 17 + abs/core/pycairo/PKGBUILD | 19 +- abs/core/pycairo/pycairo-1.8.0-threading.diff | 67 + abs/core/pygobject/PKGBUILD | 14 +- abs/core/pygtk/PKGBUILD | 19 +- abs/core/python-iplib/PKGBUILD | 15 + abs/core/python-netifaces/PKGBUILD | 17 + abs/core/python-numeric/PKGBUILD | 6 +- abs/core/python-parted/PKGBUILD | 18 + abs/core/python/ChangeLog | 9 + abs/core/python/PKGBUILD | 57 +- abs/core/python/modulator-launcher | 2 +- abs/core/python/pynche-launcher | 2 +- abs/core/python/python-2.6-gdbm.patch | 12 + abs/core/python/python-2.6-internal-expat.patch | 33 + abs/core/qt/PKGBUILD | 118 + abs/core/qt/__changelog | 1 + abs/core/qt/assistant.desktop | 8 + abs/core/qt/designer.desktop | 9 + abs/core/qt/linguist.desktop | 9 + abs/core/qt/qdoc3.patch | 25 + abs/core/qt/qtconfig.desktop | 8 + abs/core/qt3/PKGBUILD | 2 +- abs/core/randrproto/PKGBUILD | 14 +- abs/core/readline/PKGBUILD | 57 +- abs/core/readline/readline.install | 23 +- abs/core/resourceproto/PKGBUILD | 19 + abs/core/rsync/ChangeLog | 20 + abs/core/rsync/PKGBUILD | 29 + abs/core/rsync/rsync.xinetd | 11 + abs/core/rsync/rsyncd | 37 + abs/core/rsync/rsyncd.conf | 16 + abs/core/rt2500/PKGBUILD | 16 +- abs/core/rt2500/kernel-2.6.27.patch | 64 + abs/core/rt2500/rt2500.install | 6 +- abs/core/rt2x00-rt61-fw/PKGBUILD | 4 +- abs/core/rt2x00-rt71w-fw/PKGBUILD | 4 +- abs/core/runit-scripts/PKGBUILD | 31 + abs/core/runit-scripts/fbsplash-runit.sh | 27 + abs/core/runit-scripts/runit.install | 56 + abs/core/runit-scripts/runitscripts/1 | 26 + abs/core/runit-scripts/runitscripts/1.local | 3 + abs/core/runit-scripts/runitscripts/2 | 8 + abs/core/runit-scripts/runitscripts/3 | 12 + abs/core/runit-scripts/runitscripts/ctrlaltdel | 4 + abs/core/runit-scripts/runitscripts/ctrlaltdel.off | 9 + abs/core/runit-scripts/runitscripts/halt-runit | 3 + abs/core/runit-scripts/runitscripts/logger | 11 + abs/core/runit-scripts/runitscripts/reboot-runit | 3 + .../runitscripts/services/Xvfb/finish | 12 + .../runit-scripts/runitscripts/services/Xvfb/run | 11 + .../runitscripts/services/acpid/log/run | 8 + .../runit-scripts/runitscripts/services/acpid/run | 7 + .../runitscripts/services/alsa-utils/finish | 3 + .../runitscripts/services/alsa-utils/run | 3 + .../runit-scripts/runitscripts/services/apache/run | 8 + .../runit-scripts/runitscripts/services/avahi/run | 10 + .../runit-scripts/runitscripts/services/cron/run | 9 + .../runit-scripts/runitscripts/services/dbus/run | 9 + .../runit-scripts/runitscripts/services/dhcpd/run | 8 + .../runitscripts/services/dnsmasq/run | 10 + .../runitscripts/services/evrouter/finish | 10 + .../runitscripts/services/evrouter/run | 20 + .../runitscripts/services/frontend/finish | 28 + .../runitscripts/services/frontend/log/run | 5 + .../runitscripts/services/frontend/run | 21 + .../runit-scripts/runitscripts/services/gpm/run | 10 + .../runit-scripts/runitscripts/services/hal/run | 8 + .../runitscripts/services/hobbit-client/run | 74 + .../runit-scripts/runitscripts/services/hobbit/run | 9 + .../runitscripts/services/igdaemon/run | 9 + .../runit-scripts/runitscripts/services/lcdd/run | 15 + .../runitscripts/services/lighttpd/run | 8 + .../runitscripts/services/lircd/finish | 16 + .../runit-scripts/runitscripts/services/lircd/run | 138 + .../runitscripts/services/mdadm/finish | 17 + .../runit-scripts/runitscripts/services/mdadm/run | 19 + .../runit-scripts/runitscripts/services/mysql/run | 34 + .../runitscripts/services/mythbackend/log/run | 8 + .../runitscripts/services/mythbackend/run | 31 + .../runitscripts/services/ncid/finish | 9 + .../runit-scripts/runitscripts/services/ncid/run | 21 + .../runitscripts/services/ncidd/finish | 9 + .../runit-scripts/runitscripts/services/ncidd/run | 13 + .../runitscripts/services/netfs/finish | 3 + .../runit-scripts/runitscripts/services/netfs/run | 6 + .../runit-scripts/runitscripts/services/nfsd/run | 29 + .../runitscripts/services/nfslock/run | 8 + .../runit-scripts/runitscripts/services/nmbd/run | 9 + .../runit-scripts/runitscripts/services/ntpd/run | 10 + .../runit-scripts/runitscripts/services/oss/finish | 4 + .../runit-scripts/runitscripts/services/oss/run | 12 + .../runitscripts/services/portmap/run | 7 + .../runitscripts/services/smartd/finish | 9 + .../runit-scripts/runitscripts/services/smartd/run | 13 + .../runit-scripts/runitscripts/services/smbd/run | 9 + .../runit-scripts/runitscripts/services/sshd/run | 13 + .../runitscripts/services/syslog-ng/run | 10 + .../runit-scripts/runitscripts/services/tatir/run | 9 + .../runit-scripts/runitscripts/services/tftpd/run | 8 + .../runit-scripts/runitscripts/services/tty2/run | 7 + .../runit-scripts/runitscripts/services/tty3/run | 6 + abs/core/runit/PKGBUILD | 27 +- abs/core/runit/runit.install | 40 +- abs/core/runit/runitscripts/1 | 14 - abs/core/runit/runitscripts/2 | 8 - abs/core/runit/runitscripts/3 | 4 - abs/core/runit/runitscripts/ctrlaltdel | 9 - abs/core/runit/runitscripts/halt-runit | 2 - abs/core/runit/runitscripts/logger | 11 - abs/core/runit/runitscripts/reboot-runit | 2 - abs/core/runit/runitscripts/services/Xvfb/finish | 12 - abs/core/runit/runitscripts/services/Xvfb/run | 5 - abs/core/runit/runitscripts/services/acpid/run | 3 - .../runit/runitscripts/services/alsa-utils/finish | 3 - .../runit/runitscripts/services/alsa-utils/run | 3 - abs/core/runit/runitscripts/services/apache/run | 2 - abs/core/runit/runitscripts/services/avahi/run | 4 - abs/core/runit/runitscripts/services/cron/run | 3 - abs/core/runit/runitscripts/services/dbus/run | 3 - abs/core/runit/runitscripts/services/dnsmasq/run | 4 - .../runit/runitscripts/services/evrouter/finish | 4 - abs/core/runit/runitscripts/services/evrouter/run | 5 - .../runit/runitscripts/services/frontend/finish | 30 - .../runit/runitscripts/services/frontend/log/run | 5 - abs/core/runit/runitscripts/services/frontend/run | 10 - abs/core/runit/runitscripts/services/gpm/run | 4 - abs/core/runit/runitscripts/services/hal/run | 4 - .../runit/runitscripts/services/hobbit-client/run | 68 - abs/core/runit/runitscripts/services/hobbit/run | 3 - abs/core/runit/runitscripts/services/lcdd/run | 9 - abs/core/runit/runitscripts/services/lighttpd/run | 2 - abs/core/runit/runitscripts/services/lircd/finish | 12 - abs/core/runit/runitscripts/services/lircd/run | 39 - abs/core/runit/runitscripts/services/mysql/run | 29 - .../runitscripts/services/mythbackend/log/run | 4 - .../runit/runitscripts/services/mythbackend/run | 25 - abs/core/runit/runitscripts/services/ncid/run | 5 - abs/core/runit/runitscripts/services/ncidd/run | 3 - abs/core/runit/runitscripts/services/netfs/finish | 3 - abs/core/runit/runitscripts/services/netfs/run | 5 - abs/core/runit/runitscripts/services/nfsd/run | 22 - abs/core/runit/runitscripts/services/nfslock/run | 4 - abs/core/runit/runitscripts/services/nmbd/run | 3 - abs/core/runit/runitscripts/services/ntpd/run | 3 - abs/core/runit/runitscripts/services/oss/finish | 4 - abs/core/runit/runitscripts/services/oss/run | 6 - abs/core/runit/runitscripts/services/portmap/run | 3 - abs/core/runit/runitscripts/services/smbd/run | 3 - abs/core/runit/runitscripts/services/sshd/run | 8 - abs/core/runit/runitscripts/services/syslog-ng/run | 3 - abs/core/runit/runitscripts/services/tty2/run | 2 - abs/core/runit/runitscripts/services/tty3/run | 2 - abs/core/runit/shutdown.script | 46 + abs/core/samba/PKGBUILD | 88 + abs/core/samba/__changelog | 1 + abs/core/samba/heimdal.patch | 33 + abs/core/samba/no-clients.patch | 31 + abs/core/samba/samba | 51 + abs/core/samba/samba-3.0.21a-ntlmssp.patch | 13 + abs/core/samba/samba.conf.d | 7 + abs/core/samba/samba.logrotate | 9 + abs/core/samba/samba.pam | 3 + abs/core/samba/swat.xinetd | 10 + abs/core/sdl/PKGBUILD | 27 +- abs/core/sdl/__changelog | 1 + abs/core/sdl/sdl-1.2.13-dynaminc-esd.patch | 12 + abs/core/setserial/PKGBUILD | 22 + abs/core/setserial/setserial.patch | 28 + abs/core/setuptools/PKGBUILD | 23 + abs/core/shadow/PKGBUILD | 94 +- abs/core/shadow/defaults.pam | 6 + abs/core/shadow/useradd.defaults | 9 + abs/core/shadow/xstrdup.patch | 6 +- abs/core/shared-mime-info/PKGBUILD | 22 + abs/core/shared-mime-info/shared-mime-info.install | 12 + abs/core/sharutils/PKGBUILD | 20 + abs/core/smbclient/PKGBUILD | 77 +- abs/core/smbclient/heimdal.patch | 33 - abs/core/sqlite3/PKGBUILD | 36 + .../sqlite3/build_fts_as_part_of_libsqlite.patch | 139 + abs/core/sqlite3/license.txt | 33 + .../sqlite3/sqlite-3.5.8-pkgconfig-version.patch | 12 + abs/core/sudo/PKGBUILD | 12 +- abs/core/system-templates/PKGBUILD | 16 + .../templates/LCD/Shuttle-SG33/LCDd.conf | 869 + .../templates/LCD/Silverstone/LCDd.conf | 869 + .../templates/LCD/Silverstone/modules | 1 + .../templates/LCD/antec_fusion/LCDd.conf | 869 + .../templates/LCD/antec_fusion/lircd.conf | 38 + .../templates/LCD/antec_fusion/lircrc | 15 + .../templates/LCD/antec_fusion/modules | 1 + .../system-templates/templates/LCD/xosd/LCDd.conf | 957 + abs/core/system-templates/templates/cc.orig.sh | 35 + abs/core/system-templates/templates/cc.sh | 5 + abs/core/system-templates/templates/cc_vol.sh | 5 + abs/core/system-templates/templates/change_chan.sh | 19 + abs/core/system-templates/templates/cron.template | 4 + .../templates/etcnet/eth/ipv4address | 2 + .../templates/etcnet/eth/ipv4route | 2 + .../system-templates/templates/etcnet/eth/iwconfig | 2 + .../system-templates/templates/etcnet/eth/options | 7 + .../templates/evrouter/MythVantage-4 | 0 .../templates/evrouter/MythVantage-8 | 0 .../templates/evrouter/MythVantage-Full | 0 .../templates/evrouter/MythVantage8-minipac | 3 + .../templates/evrouter/MythVantage8-uhid | 3 + .../system-templates/templates/exports.template | 8 + .../system-templates/templates/fstab.conf.template | 16 + abs/core/system-templates/templates/gscreensavers | 200 + .../templates/modules/lirc_i2c.conf | 2 + abs/core/system-templates/templates/mysql.service | 13 + abs/core/system-templates/templates/mysql.txt | 29 + .../system-templates/templates/ncid.conf.template | 51 + .../system-templates/templates/ncidd.conf.template | 143 + .../system-templates/templates/real_change_chan.sh | 19 + .../templates/remotes/AOpen-EA65/lircd.conf.ea65 | 73 + .../templates/remotes/AOpen-EA65/lircrc.ea65 | 381 + .../templates/remotes/AOpen-EA65/preview.jpg | Bin 0 -> 76036 bytes .../remotes/ASUS-DiGiMatrix/lircd.conf.asus | 56 + .../remotes/ASUS-DiGiMatrix/lircd.conf.digimatrix | 152 + .../templates/remotes/ASUS-DiGiMatrix/preview.jpg | Bin 0 -> 28706 bytes .../templates/remotes/ATI_Remote_Wonder/lircd.conf | 76 + .../templates/remotes/ATI_Remote_Wonder/lircrc | 636 + .../remotes/ATI_Remote_Wonder/preview.jpg | Bin 0 -> 63480 bytes .../remotes/ATI_Remote_Wonder_Plus/lircd.conf | 198 + .../remotes/ATI_Remote_Wonder_Plus/lircrc | 258 + .../remotes/ATI_Remote_Wonder_Plus/preview.jpg | Bin 0 -> 25555 bytes .../remotes/Avermedia_77x/lircd-avermedia77x.conf | 66 + .../remotes/Avermedia_77x/lircrc-avermedia771.txt | 475 + .../templates/remotes/Avermedia_77x/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Avermedia_98/lircd-avermedia98.conf | 97 + .../remotes/Avermedia_98/lircrc-avermedia98.txt | 477 + .../templates/remotes/Avermedia_98/preview.jpg | Bin 0 -> 12175 bytes .../remotes/Avertv_USB/lircd-avertvusb.conf | 65 + .../remotes/Avertv_USB/lircrc-avertvusb.txt | 482 + .../templates/remotes/Avertv_USB/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Cinergy/lircd-cinergy400600.conf | 67 + .../remotes/Cinergy/lircrc-cinergy400600.txt | 474 + .../templates/remotes/Cinergy/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Cinergy_1400/lircd-cinergy1400.conf | 71 + .../remotes/Cinergy_1400/lircrc-cinergy1400.txt | 474 + .../templates/remotes/Cinergy_1400/preview.jpg | Bin 0 -> 14916 bytes .../remotes/Cinergy_T2/lircd-cinergyT2.conf | 72 + .../remotes/Cinergy_T2/lircrc-cinergyT2.txt | 474 + .../templates/remotes/Cinergy_T2/preview.jpg | Bin 0 -> 14916 bytes .../templates/remotes/Compro/lircd-compro.conf | 364 + .../templates/remotes/Compro/lircrc-compro.txt | 487 + .../templates/remotes/Compro/preview.jpg | Bin 0 -> 1587 bytes .../lircd.conf.dvico-dual-digital4 | 81 + .../lircrc.dvico-dual-digital4 | 430 + .../remotes/Dvico-Dual-Digital4-rev2/preview.jpg | Bin 0 -> 34354 bytes .../remotes/Flyvideo_2000/lircd-flyvideo2000.conf | 57 + .../remotes/Flyvideo_2000/lircrc-flyvideo2000.txt | 474 + .../templates/remotes/Flyvideo_2000/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Flyvideo_3000/lircd-flyvideo3000.conf | 47 + .../remotes/Flyvideo_3000/lircrc-flyvideo3000.txt | 474 + .../templates/remotes/Flyvideo_3000/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/Hercules/lircd-hercules.conf | 61 + .../templates/remotes/Hercules/lircrc-hercules.txt | 475 + .../templates/remotes/Hercules/preview.jpg | Bin 0 -> 13313 bytes .../remotes/Kworld_110/lircd-kworld110.conf | 84 + .../remotes/Kworld_110/lircrc-kworld110.txt | 482 + .../templates/remotes/Kworld_110/preview.jpg | Bin 0 -> 16642 bytes .../remotes/Kworld_220/lircd-kworld220.conf | 80 + .../remotes/Kworld_220/lircrc-kworld220.txt | 482 + .../templates/remotes/Kworld_220/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Kworld_310/lircd-kworld310.conf | 80 + .../remotes/Kworld_310/lircrc-kworld310.txt | 482 + .../templates/remotes/Kworld_310/preview.jpg | Bin 0 -> 25987 bytes .../remotes/Kworld_DVBT/lircd-kworlddvbt.conf | 71 + .../remotes/Kworld_DVBT/lircrc-kworlddvbt.txt | 474 + .../templates/remotes/Kworld_DVBT/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Kworld_tv878/lircd-kworldtv878.conf | 70 + .../remotes/Kworld_tv878/lircrc-kworldv878.txt | 482 + .../templates/remotes/Kworld_tv878/preview.jpg | Bin 0 -> 1587 bytes .../Leadtek_2000XP/lircd-leadtek2000xp.conf | 77 + .../Leadtek_2000XP/lircrc-leadtek2000xp.txt | 474 + .../templates/remotes/Leadtek_2000XP/preview.jpg | Bin 0 -> 16424 bytes .../remotes/Leadtek_PVR/lircd-leadtekPVR.conf | 82 + .../remotes/Leadtek_PVR/lircrc-leadtekPVR.txt | 474 + .../templates/remotes/Leadtek_PVR/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/Lifeview/lircd-lifeview.conf | 48 + .../templates/remotes/Lifeview/lircrc-lifeview.txt | 474 + .../templates/remotes/Lifeview/preview.jpg | Bin 0 -> 1587 bytes .../remotes/MX-500-jams/lircd.conf.MX-500-JAMS | 115 + .../templates/remotes/MX-500-jams/lircrc | 832 + .../templates/remotes/MX-500-jams/preview.jpg | Bin 0 -> 10473 bytes .../remotes/Medion_RF/lircd-medion-rf.conf | 82 + .../remotes/Medion_RF/lircrc-medion-rf.txt | 474 + .../templates/remotes/Medion_RF/preview.jpg | Bin 0 -> 1587 bytes .../Medion_X10_8080/lircd-medionx10-8080.conf | 68 + .../Medion_X10_8080/lircrc-medionx10-8080.txt | 474 + .../templates/remotes/Medion_X10_8080/preview.jpg | Bin 0 -> 1587 bytes .../Medion_X10_8802/lircd-medionx10-8802.conf | 126 + .../Medion_X10_8802/lircrc-medionx10-8802.txt | 487 + .../templates/remotes/Medion_X10_8802/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/MythVantage-one/lircd.conf | 115 + .../templates/remotes/MythVantage-one/lircrc | 857 + .../templates/remotes/MythVantage-one/preview.jpg | Bin 0 -> 88727 bytes .../templates/remotes/Nebula/lircd-nebula.conf | 88 + .../templates/remotes/Nebula/lircrc-nebula.txt | 402 + .../templates/remotes/Nebula/preview.jpg | Bin 0 -> 10625 bytes .../templates/remotes/Nexus/lircd-nexus.conf | 73 + .../templates/remotes/Nexus/lircrc-nexus.txt | 459 + .../templates/remotes/Nexus/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/Nova_500/lircd-nova500.conf | 69 + .../templates/remotes/Nova_500/lircrc-nova500.txt | 559 + .../templates/remotes/Nova_500/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/Nova_T/lircd-novat.conf | 60 + .../templates/remotes/Nova_T/lircrc-novat.txt | 474 + .../templates/remotes/Nova_T/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Nova_T_USB2/lircd-novatusb2.conf | 77 + .../remotes/Nova_T_USB2/lircrc-novatusb2.txt | 474 + .../templates/remotes/Nova_T_USB2/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/Nvidia/lircd-nvidia.conf | 62 + .../templates/remotes/Nvidia/lircrc-nvidia.txt | 474 + .../templates/remotes/Nvidia/preview.jpg | Bin 0 -> 1587 bytes .../remotes/Nvidia_X10/lircd-nvidiax10.conf | 71 + .../remotes/Nvidia_X10/lircrc-nvidiax10.txt | 474 + .../templates/remotes/Nvidia_X10/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/One4All/lircd-one4all.conf | 111 + .../templates/remotes/One4All/lircrc-one4all.txt | 730 + .../templates/remotes/One4All/preview.jpg | Bin 0 -> 7432 bytes .../remotes/One4All_6131/lircd-one4all6131.conf | 31 + .../remotes/One4All_6131/lircrc-one4all6131.txt | 474 + .../templates/remotes/One4All_6131/preview.jpg | Bin 0 -> 10324 bytes .../remotes/One4All_7544/lircd-one4all7544.conf | 49 + .../remotes/One4All_7544/lircrc-one4all7544.txt | 474 + .../templates/remotes/One4All_7544/preview.jpg | Bin 0 -> 14880 bytes .../remotes/One4All_9910/lircd-one4all9910.conf | 53 + .../remotes/One4All_9910/lircrc-one4all9910.txt | 474 + .../templates/remotes/One4All_9910/preview.jpg | Bin 0 -> 18720 bytes .../remotes/Packard_bell/lircd-packard.conf | 92 + .../remotes/Packard_bell/lircrc-packard.txt | 474 + .../templates/remotes/Packard_bell/preview.jpg | Bin 0 -> 21260 bytes .../templates/remotes/Pinnacle/lircd-pinnacle.conf | 97 + .../templates/remotes/Pinnacle/lircrc-pinnacle.txt | 474 + .../templates/remotes/Pinnacle/preview.jpg | Bin 0 -> 11124 bytes .../templates/remotes/Provideo/lircd-provideo.conf | 52 + .../templates/remotes/Provideo/lircrc-provideo.txt | 474 + .../templates/remotes/Provideo/preview.jpg | Bin 0 -> 1587 bytes .../RadioShack_15-2116-Jarod_Wilson/lircd-rs.conf | 87 + .../RadioShack_15-2116-Jarod_Wilson/lircrc-rs | 539 + .../RadioShack_15-2116-Jarod_Wilson/preview.jpg | Bin 0 -> 7504 bytes .../templates/remotes/Sasem/lircd-sasem.conf | 81 + .../templates/remotes/Sasem/lircrc-sasem.txt | 474 + .../templates/remotes/Sasem/preview.jpg | Bin 0 -> 15114 bytes .../remotes/Technisat/lircd-technisat.conf | 68 + .../remotes/Technisat/lircrc-technisat.txt | 347 + .../templates/remotes/Technisat/preview.jpg | Bin 0 -> 11111 bytes .../templates/remotes/Tekram/lircd-tekram.conf | 48 + .../templates/remotes/Tekram/lircrc-tekram.txt | 474 + .../templates/remotes/Tekram/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/Twinham/lircd-twinhan.conf | 44 + .../templates/remotes/Twinham/lircrc-twinhan.txt | 474 + .../templates/remotes/Twinham/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/X10_Lola/lircd-x10lola.conf | 78 + .../templates/remotes/X10_Lola/lircrc-x10lola.txt | 334 + .../templates/remotes/X10_Lola/preview.jpg | Bin 0 -> 11610 bytes .../templates/remotes/atiusb/lircd.conf.atiusb | 1259 + .../remotes/avermedia/lircd.conf.avermedia | 72 + .../remotes/avermedia/lircd.conf.avermedia98 | 175 + .../templates/remotes/avermedia/lircd.conf.vdomate | 61 + .../remotes/avermedia/lircmd.conf.avermedia | 33 + .../remotes/avermedia/lircmd.conf.avermedia98 | 37 + .../templates/remotes/avermedia/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/bestbuy/lircd.conf.bestbuy | 63 + .../templates/remotes/bestbuy/lircd.conf.bestbuy2 | 59 + .../templates/remotes/bestbuy/lircmd.conf.bestbuy | 33 + .../templates/remotes/bestbuy/lircmd.conf.bestbuy2 | 34 + .../templates/remotes/bestbuy/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/caraca/lircd.conf.caraca | 46 + .../templates/remotes/caraca/lircrc.caraca | 134 + .../templates/remotes/caraca/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/dvico/lircd.conf.fusionHDTV | 226 + .../templates/remotes/dvico/lircrc.txt | 883 + .../templates/remotes/dvico/preview.jpg | Bin 0 -> 29813 bytes .../templates/remotes/generic/DENON.conf | 31 + .../templates/remotes/generic/MOTOROLA.conf | 53 + .../templates/remotes/generic/NEC-pulse.conf | 32 + .../templates/remotes/generic/NEC-short-pulse.conf | 34 + .../templates/remotes/generic/NEC.conf | 30 + .../templates/remotes/generic/RC-5.conf | 30 + .../templates/remotes/generic/RC-6.conf | 28 + .../templates/remotes/generic/RCMM-32.conf | 23 + .../templates/remotes/generic/RECS80.conf | 31 + .../templates/remotes/generic/SANYO.conf | 34 + .../templates/remotes/generic/SONY12.conf | 28 + .../templates/remotes/generic/SONY20.conf | 29 + .../templates/remotes/gr8zap/lircd.conf.streamzap | 69 + .../templates/remotes/gr8zap/lircrc | 472 + .../templates/remotes/gr8zap/preview.jpg | Bin 0 -> 83195 bytes .../remotes/hauppauge-black/lircd-haupblack.conf | 55 + .../remotes/hauppauge-black/lircrc-haupblack.conf | 135 + .../templates/remotes/hauppauge-black/preview.jpg | Bin 0 -> 35841 bytes .../templates/remotes/hauppauge-blaster/lircd.conf | 31133 ++++++++++ .../hauppauge-blaster/lircrc-haupgrey-g3.txt | 586 + .../remotes/hauppauge-blaster/preview.jpg | Bin 0 -> 45763 bytes .../remotes/hauppauge-grey/lircd-haupgrey.conf | 199 + .../remotes/hauppauge-grey/lircrc-haupgrey.txt | 505 + .../templates/remotes/hauppauge-grey/preview.jpg | Bin 0 -> 3069 bytes .../hauppauge-silver/lircd-haupgrey-g3.conf | 64 + .../hauppauge-silver/lircrc-haupgrey-g3.txt | 762 + .../templates/remotes/hauppauge-silver/preview.jpg | Bin 0 -> 45763 bytes abs/core/system-templates/templates/remotes/i2c.id | 14 + .../templates/remotes/imon-pad/lircd.conf | 88 + .../templates/remotes/imon-pad/lircrc | 240 + .../templates/remotes/imon-pad/preview.jpg | Bin 0 -> 35870 bytes .../templates/remotes/imon/lircd.conf.imon | 79 + .../templates/remotes/imon/lircd.conf.imon-pad | 84 + .../templates/remotes/imon/lircd.conf.imon-rsc | 109 + .../templates/remotes/imon/preview.jpg | Bin 0 -> 25799 bytes .../templates/remotes/mceusb/lircd.conf.mceusb | 163 + .../templates/remotes/mceusb/lircrc-mceusb | 877 + .../templates/remotes/mceusb/preview.jpg | Bin 0 -> 12551 bytes .../templates/remotes/no_remote/preview.jpg | Bin 0 -> 3087 bytes .../templates/remotes/receiver_usb.id | 35 + .../remotes/sigma_designs/lircd.conf.realmagic | 83 + .../remotes/snapstream_firefly/lircd.snapstrm.conf | 127 + .../remotes/snapstream_firefly/lircrc-snapstrm.txt | 590 + .../remotes/snapstream_firefly/preview.jpg | Bin 0 -> 63750 bytes .../snapstream_mini/lircd-snapstreammini.conf | 70 + .../snapstream_mini/lircrc-snapstreammini.txt | 474 + .../templates/remotes/snapstream_mini/preview.jpg | Bin 0 -> 17713 bytes .../remotes/streamzap/lircd.conf.streamzap | 69 + .../templates/remotes/streamzap/lircrc | 832 + .../templates/remotes/streamzap/preview.jpg | Bin 0 -> 83195 bytes .../remotes/technisat/lircd.conf.mediafocusI | 42 + .../templates/remotes/unknown/preview.jpg | Bin 0 -> 1587 bytes .../templates/remotes/x10/lircd.conf.mouseremote | 116 + .../templates/remotes/x10/lircd.conf.mp3anywhere | 64 + .../templates/remotes/x10/lircmd.conf.mouseremote | 288 + .../templates/samba/smb.conf.template | 124 + .../templates/settings/default_1/keybindings.txt | 209 + .../templates/settings/default_1/settings.txt | 320 + .../templates/settings/default_2/keybindings.txt | 209 + .../templates/settings/default_2/settings.txt | 320 + .../system-templates/templates/sources/mv-core | 2 + .../templates/sources/mv-core-testing | 2 + .../system-templates/templates/sources/mv-extra | 2 + .../templates/sources/mv-extra-testing | 2 + .../system-templates/templates/sources/svc_pkg | 3 + .../transmit/Time_Warner_SA3250/lircd.conf | 413 + .../templates/transmit/amino_STB/lircd.conf | 162 + .../templates/transmit/coolsat_4000/lircd.conf | 51 + .../templates/transmit/coolsat_5000/lircd.conf | 60 + .../transmit/digitalstream_9900/lircd.conf | 69 + .../templates/transmit/dish301_311/lircd.conf | 78 + .../templates/transmit/dish501_508/lircd.conf | 78 + .../templates/transmit/dish_dvr625/lircd.conf | 68 + .../templates/transmit/dish_network/lircd.conf | 1272 + .../templates/transmit/echostar_2700/lircd.conf | 1274 + .../templates/transmit/echostar_4700/lircd.conf | 1274 + .../templates/transmit/echostar_4900/lircd.conf | 1274 + .../templates/transmit/echostar_5000/lircd.conf | 1274 + .../templates/transmit/expressvu3100/lircd.conf | 78 + .../templates/transmit/expressvu5xxx/lircd.conf | 78 + .../templates/transmit/fortec_lifetime/lircd.conf | 68 + .../templates/transmit/general_550/lircd.conf | 63 + .../templates/transmit/hughes_hbh/lircd.conf | 74 + .../templates/transmit/humax_5400/lircd.conf | 68 + .../templates/transmit/illusion_m3/lircd.conf | 72 + .../templates/transmit/motorola_dct2000/lircd.conf | 75 + .../templates/transmit/motorola_dct22xx/lircd.conf | 103 + .../templates/transmit/motorola_dct2524/lircd.conf | 83 + .../templates/transmit/motorola_dct6200/lircd.conf | 70 + .../templates/transmit/motorola_dct700/lircd.conf | 83 + .../templates/transmit/motorola_dsr205/lircd.conf | 239 + .../templates/transmit/motorola_dsr305/lircd.conf | 93 + .../templates/transmit/motorola_dsr315/lircd.conf | 239 + .../templates/transmit/motorola_dsr922/lircd.conf | 66 + .../templates/transmit/motorola_dth335/lircd.conf | 55 + .../templates/transmit/motorola_rg2xxx/lircd.conf | 144 + .../templates/transmit/motorola_vip12xx/lircd.conf | 73 + .../templates/transmit/nokia_8003/lircd.conf | 87 + .../templates/transmit/nokia_9600/lircd.conf | 90 + .../templates/transmit/nokia_9780/lircd.conf | 261 + .../templates/transmit/nokia_9802/lircd.conf | 227 + .../templates/transmit/nokia_dbox2/lircd.conf | 59 + .../templates/transmit/pace_4001/lircd.conf | 70 + .../templates/transmit/pace_420/lircd.conf | 207 + .../templates/transmit/pace_dsr2000/lircd.conf | 71 + .../templates/transmit/pace_dsr600/lircd.conf | 71 + .../templates/transmit/pace_mss200/lircd.conf | 69 + .../templates/transmit/pace_mss300/lircd.conf | 68 + .../templates/transmit/pace_psr800/lircd.conf | 58 + .../templates/transmit/pace_psr900/lircd.conf | 61 + .../transmit/pace_xsat_cdtv410/lircd.conf | 70 + .../templates/transmit/pansat_2700a/lircd.conf | 86 + .../templates/transmit/pioneer_bdv300/lircd.conf | 92 + .../templates/transmit/pvr150/lircd.conf | 30947 ++++++++++ .../transmit/rca_drd4xxrg_series/lircd.conf | 71 + .../transmit/rca_drd4xxrh_series/lircd.conf | 71 + .../templates/transmit/samsung_1000/lircd.conf | 71 + .../templates/transmit/samsung_300/lircd.conf | 50 + .../templates/transmit/samsung_702/lircd.conf | 75 + .../templates/transmit/sciatl_4200/lircd.conf | 87 + .../templates/transmit/sciatl_exp1840/lircd.conf | 77 + .../templates/transmit/sciatl_exp2000/lircd.conf | 423 + .../transmit/sciatl_exp2xxx_3xxx_4xxx/lircd.conf | 87 + .../templates/transmit/sciatl_exp8000/lircd.conf | 87 + .../templates/transmit/skymaster_9410/lircd.conf | 69 + .../templates/transmit/skyplus/lircd.conf | 74 + .../transmit/technisat_st3002s/lircd.conf | 64 + .../transmit/technisat_st3004s/lircd.conf | 67 + .../templates/transmit/zenith_dtt900/lircd.conf | 67 + .../templates/xine.config.template | 754 + .../templates/xorg/96xx_supported.txt | 175 + .../system-templates/templates/xorg/modeline.ATSC | 33 + .../system-templates/templates/xorg/modeline.DVD | 9 + .../system-templates/templates/xorg/modeline.NTSC | 10 + .../system-templates/templates/xorg/modeline.VESA | 163 + .../templates/xorg/modeline.custom | 1 + .../system-templates/templates/xorg/xorg.conf.ati | 98 + .../templates/xorg/xorg.conf.intel | 152 + .../templates/xorg/xorg.conf.nvidia | 88 + .../system-templates/templates/xorg/xorg.conf.vesa | 70 + .../system-templates/templates/xorg/xorg.conf.via | 75 + .../templates/xorg/xorg.conf.vmware | 70 + .../templates/xscreensaver.template | 255 + abs/core/system-templates/templates/xscreensavers | 198 + abs/core/sysvinit/PKGBUILD | 2 +- abs/core/sysvinit/halt-init.patch | 4 +- abs/core/tar/PKGBUILD | 2 +- abs/core/tcl/ChangeLog | 12 +- abs/core/tcl/PKGBUILD | 8 +- abs/core/tdb/PKGBUILD | 28 + abs/core/tdb/gcc3.patch | 41 + abs/core/texinfo/ChangeLog | 17 + abs/core/texinfo/PKGBUILD | 26 + abs/core/texinfo/texinfo.install | 18 + abs/core/tftp-hpa/LICENSE | 32 + abs/core/tftp-hpa/PKGBUILD | 29 + abs/core/tftp-hpa/tftpd.conf | 4 + abs/core/tftp-hpa/tftpd.rc | 38 + abs/core/tiacx/PKGBUILD | 15 +- abs/core/tiacx/acx.install | 6 +- abs/core/tiacx/kernel-2.6.27.patch | 82 + abs/core/tk/ChangeLog | 15 +- abs/core/tk/PKGBUILD | 8 +- abs/core/transcode/PKGBUILD | 67 + abs/core/transcode/transcode.install | 6 + abs/core/ttf-bitstream-vera/PKGBUILD | 22 + abs/core/ttf-bitstream-vera/vera.install | 20 + abs/core/ttf-dejavu/ChangeLog | 10 + abs/core/ttf-dejavu/PKGBUILD | 6 +- abs/core/tweaker/PKGBUILD | 43 + abs/core/tweaker/bin/LocalIPCheck.pl | 47 + abs/core/tweaker/bin/SQLtweaker.sh | 86 + abs/core/tweaker/bin/create-linhes-sql.sh | 166 + abs/core/tweaker/bin/tweaker.pl | 333 + abs/core/tweaker/bin/twk_EXAMPLE.pl | 134 + abs/core/tweaker/bin/twk_RAM.pl | 81 + abs/core/tweaker/bin/twk_audio.pl | 390 + abs/core/tweaker/bin/twk_cpu.pl | 163 + abs/core/tweaker/bin/twk_dragon.pl | 65 + abs/core/tweaker/bin/twk_fingerprint_hardware.sh | 98 + abs/core/tweaker/bin/twk_general.pl | 590 + abs/core/tweaker/bin/twk_general.pl.orig | 579 + abs/core/tweaker/bin/twk_graphics.pl | 149 + abs/core/tweaker/bin/twk_keymap.sh | 66 + abs/core/tweaker/bin/twk_localization.pl | 72 + abs/core/tweaker/bin/twk_misc.pl | 13 + abs/core/tweaker/bin/twk_scrub_sql.pl | 96 + abs/core/tweaker/bin/twk_tuners.pl | 491 + abs/core/tweaker/bin/twk_tuners_notes.txt | 55 + abs/core/tweaker/bin/twk_upgrade.pl | 190 + abs/core/tweaker/bin/twk_what_has_changed.sh | 183 + abs/core/tweaker/fs/etc/asound.conf | 15 + .../fs/home/mythtv/.config/smplayer/smplayer.ini | 429 + .../tweaker/fs/var/lib/alsa/ALC888.asound.state | 354 + .../tweaker/fs/var/lib/alsa/AV710.asound.state | 567 + abs/core/tweaker/lib/Tweaker/Definitions.pm | 66 + abs/core/tweaker/lib/Tweaker/Script.pm | 353 + abs/core/tweaker/log4perl.conf | 13 + abs/core/tweaker/tcf/EXAMPLE.tcf | 38 + abs/core/tweaker/tcf/focus.tcf | 113 + abs/core/tweaker/tcf/os.tcf | 10 + abs/core/tweaker/tcf/tcf.dtd | 11 + abs/core/tweaker/tcf/tweaker-core.tcf | 47 + abs/core/tweaker/tcf/userland.tcf | 0 abs/core/tweaker/tweaker.install | 39 + abs/core/tweaker/tweaker.sh | 4 + abs/core/udev/00-load-blacklist.rules | 1 - abs/core/udev/51-arch.rules | 191 - abs/core/udev/81-arch.rules | 175 + abs/core/udev/PKGBUILD | 110 +- abs/core/udev/__changelog | 1 + abs/core/udev/arch-udev-rules.patch | 177 +- abs/core/udev/cdrom-rules.patch | 8 - abs/core/udev/load-modules.sh | 78 +- abs/core/udev/migrate-udev | 29 - abs/core/udev/mod-blacklist.sh | 47 - abs/core/udev/mount-usb | 51 + abs/core/udev/readme-udev-arch.txt | 12 +- abs/core/udev/resolve-modalias.c | 62 + abs/core/udev/udev-ntfs-3g.patch | 217 + abs/core/udev/udev.install | 20 +- abs/core/udev/usb-storage.rules | 4 + abs/core/udev/usb_id-fix.patch | 107 - abs/core/unclutter/PKGBUILD | 22 + abs/core/unichrome-dri/PKGBUILD | 56 +- abs/core/unichrome-dri/mesa-7.1-link-shared.patch | 102 + abs/core/unison/PKGBUILD | 28 - abs/core/unison/ocaml-3.08-extnames.patch | 14 - abs/core/unison/unison.desktop | 13 - abs/core/unison/unison.install | 32 - abs/core/unzip/PKGBUILD | 41 + abs/core/unzip/unzip-5.5.2-CVE-2008-0888.patch | 50 + .../unzip/unzip-5.50-alt-iconv-v1.2-utf8.patch | 430 + abs/core/unzip/unzip542-size-64bit.patch | 72 + abs/core/urlgrabber/PKGBUILD | 15 + abs/core/util-linux-ng/PKGBUILD | 43 +- abs/core/util-linux-ng/cryptoloop-support.patch | 4649 ++ abs/core/util-linux-ng/util-linux-ng.install | 21 + abs/core/v4l-dvb/PKGBUILD | 4 +- abs/core/v4l-dvb/v4l-dvb.install | 6 +- abs/core/vdpinfo-71xx/PKGBUILD | 25 + abs/core/vdpinfo-71xx/vdpinfo | 2 + abs/core/vdpinfo-96xx/PKGBUILD | 25 + abs/core/vdpinfo-96xx/vdpinfo | 2 + abs/core/vdpinfo/PKGBUILD | 35 + abs/core/vi/PKGBUILD | 33 +- abs/core/vi/__changelog | 3 + abs/core/vi/fetch_patches.sh | 8 +- abs/core/which/PKGBUILD | 18 +- abs/core/which/which.install | 20 + abs/core/wireless_tools/PKGBUILD | 27 + abs/core/wireless_tools/wireless.conf.d | 12 + abs/core/wlan-ng26-utils/PKGBUILD | 32 - abs/core/wlan-ng26-utils/kernel-2.6.22-r1832.patch | 120 - abs/core/wlan-ng26-utils/kernel-2.6.26.patch | 14 - abs/core/wlan-ng26-utils/wlan | 68 - abs/core/wlan-ng26-utils/wlan-ng.patch | 14 - abs/core/wlan-ng26/PKGBUILD | 35 - abs/core/wlan-ng26/kernel-2.6.26.patch | 14 - abs/core/wlan-ng26/wlan-ng26.install | 30 - abs/core/wpa_supplicant/PKGBUILD | 52 +- abs/core/wpa_supplicant/config | 148 +- abs/core/wpa_supplicant/wpa_supplicant.install | 15 - abs/core/x264/PKGBUILD | 6 +- abs/core/xcb-proto/PKGBUILD | 18 +- abs/core/xcb-util/PKGBUILD | 23 + abs/core/xcmiscproto/PKGBUILD | 19 + abs/core/xdotool/PKGBUILD | 23 + abs/core/xextproto/PKGBUILD | 17 +- abs/core/xf86-input-aiptek/PKGBUILD | 13 +- abs/core/xf86-input-calcomp/PKGBUILD | 11 +- abs/core/xf86-input-digitaledge/PKGBUILD | 13 +- abs/core/xf86-input-dmc/PKGBUILD | 11 +- abs/core/xf86-input-dynapro/PKGBUILD | 11 +- abs/core/xf86-input-elographics/PKGBUILD | 16 +- abs/core/xf86-input-evdev/PKGBUILD | 15 +- abs/core/xf86-input-fpit/PKGBUILD | 13 +- abs/core/xf86-input-hyperpen/PKGBUILD | 13 +- abs/core/xf86-input-jamstudio/PKGBUILD | 13 +- abs/core/xf86-input-joystick/PKGBUILD | 12 +- abs/core/xf86-input-keyboard/PKGBUILD | 16 +- abs/core/xf86-input-magellan/PKGBUILD | 11 +- abs/core/xf86-input-magictouch/PKGBUILD | 9 +- abs/core/xf86-input-microtouch/PKGBUILD | 11 +- abs/core/xf86-input-mutouch/PKGBUILD | 17 +- abs/core/xf86-input-palmax/PKGBUILD | 13 +- abs/core/xf86-input-penmount/PKGBUILD | 11 +- abs/core/xf86-input-summa/PKGBUILD | 13 +- abs/core/xf86-input-synaptics/PKGBUILD | 31 + abs/core/xf86-input-tek4957/PKGBUILD | 13 +- abs/core/xf86-input-ur98/PKGBUILD | 9 +- abs/core/xf86-input-vmmouse/PKGBUILD | 19 +- abs/core/xf86-input-void/PKGBUILD | 16 +- abs/core/xf86-video-amd/PKGBUILD | 19 +- abs/core/xf86-video-apm/PKGBUILD | 15 +- abs/core/xf86-video-ark/PKGBUILD | 15 +- abs/core/xf86-video-ati/PKGBUILD | 54 +- abs/core/xf86-video-ati/git-20081021.patch | 17245 ++++++ abs/core/xf86-video-ati/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-chips/PKGBUILD | 13 +- abs/core/xf86-video-cirrus/PKGBUILD | 7 +- abs/core/xf86-video-dummy/PKGBUILD | 14 +- abs/core/xf86-video-fbdev/PKGBUILD | 17 +- abs/core/xf86-video-glint/PKGBUILD | 18 +- abs/core/xf86-video-i128/PKGBUILD | 14 +- abs/core/xf86-video-i740/PKGBUILD | 13 +- .../xf86-video-intel/20_thinkpad_g40_quirk.patch | 18 + abs/core/xf86-video-intel/21_quirk_lenovo.patch | 12 + .../23_quirks_studiohybrid_eeepc_and_w251u.patch | 13 + abs/core/xf86-video-intel/25_quirk_nc6110.patch | 13 + .../26_i830-use-lfp-data-ptrs.patch | 63 + .../xf86-video-intel/27_disable_fbc_on_965.patch | 18 + abs/core/xf86-video-intel/PKGBUILD | 44 +- abs/core/xf86-video-ivtvfb/PKGBUILD | 26 + .../xf86-video-ivtv-pagesize.patch | 20 + abs/core/xf86-video-mach64/PKGBUILD | 48 + .../xf86-video-mach64/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-mga/PKGBUILD | 57 +- abs/core/xf86-video-mga/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-neomagic/PKGBUILD | 13 +- abs/core/xf86-video-nv/PKGBUILD | 18 +- abs/core/xf86-video-openchrome/LICENSE.txt | 26 + abs/core/xf86-video-openchrome/PKGBUILD | 29 + abs/core/xf86-video-r128/PKGBUILD | 48 + .../xf86-video-r128/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-radeonhd/PKGBUILD | 25 +- abs/core/xf86-video-rendition/PKGBUILD | 14 +- abs/core/xf86-video-s3/PKGBUILD | 18 +- abs/core/xf86-video-s3virge/PKGBUILD | 45 +- abs/core/xf86-video-savage/PKGBUILD | 57 +- .../xf86-video-savage/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-siliconmotion/PKGBUILD | 14 +- abs/core/xf86-video-sis/PKGBUILD | 64 +- abs/core/xf86-video-sis/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-sisusb/PKGBUILD | 14 +- abs/core/xf86-video-tdfx/PKGBUILD | 63 +- .../xf86-video-tdfx/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-trident/PKGBUILD | 66 +- .../xf86-video-trident/mesa-7.1-link-shared.patch | 102 + abs/core/xf86-video-tseng/PKGBUILD | 18 +- abs/core/xf86-video-unichrome/PKGBUILD | 25 +- abs/core/xf86-video-v4l/PKGBUILD | 14 +- abs/core/xf86-video-vesa/PKGBUILD | 19 +- abs/core/xf86-video-vga/PKGBUILD | 26 +- abs/core/xf86-video-vga/pciaccess.patch | 371 + abs/core/xf86-video-vmware/PKGBUILD | 9 +- abs/core/xf86-video-voodoo/PKGBUILD | 14 +- abs/core/xf86bigfontproto/PKGBUILD | 19 + abs/core/xf86driproto/PKGBUILD | 19 + abs/core/xfsprogs/PKGBUILD | 22 +- abs/core/xkeyboard-config/PKGBUILD | 26 +- abs/core/xkeyboard-config/fix-abnt2.patch | 20 + abs/core/xmlrpc-c/PKGBUILD | 32 + abs/core/xmltv/PKGBUILD | 41 +- abs/core/xorg-apps/PKGBUILD | 67 +- abs/core/xorg-server-utils/PKGBUILD | 36 +- abs/core/xorg-server/001_fedora_extramodes.patch | 85 + abs/core/xorg-server/PKGBUILD | 101 +- abs/core/xorg-server/__changelog | 3 + .../xorg-redhat-die-ugly-pattern-die-die-die.patch | 16 + abs/core/xorg-server/xorg-server.install | 25 +- .../xorg-server/xserver-1.5-branch-4970d.patch | 246 + ...-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch | 69 + .../xserver-1.5.3-AEI-on-by-default.patch | 108 + abs/core/xorg-util-macros/PKGBUILD | 21 + abs/core/xorg-utils/PKGBUILD | 33 +- abs/core/xorg-xinit/PKGBUILD | 4 +- abs/core/xorg-xinit/xserverrc | 2 +- abs/core/xorg-xkb-utils/PKGBUILD | 14 +- abs/core/xosd/PKGBUILD | 26 + abs/core/xproto/PKGBUILD | 14 +- abs/core/xterm/PKGBUILD | 15 +- abs/core/xtrans/PKGBUILD | 14 +- abs/core/yasm/PKGBUILD | 23 + abs/core/zoneminder/Makefile.patch | 13 + abs/core/zoneminder/PKGBUILD | 93 + abs/core/zoneminder/customdb | 31 + abs/core/zoneminder/mootools.v1.11.js | 3 + abs/core/zoneminder/run | 6 + abs/core/zoneminder/zm.conf.patch | 20 + abs/core/zoneminder/zm.rc.d | 172 + abs/core/zoneminder/zmeventdump | 48 + abs/core/zoneminder/zminit.arch | 143 + abs/core/zoneminder/zmupdate.patch | 23 + abs/core/zoneminder/zoneminder.install | 69 + abs/extra/abs/ChangeLog | 41 + abs/extra/abs/PKGBUILD | 33 + abs/extra/abs/abs.install | 15 + abs/extra/apache-ant/PKGBUILD | 41 + abs/extra/apcupsd/PKGBUILD | 38 + abs/extra/apcupsd/apcupsd | 44 + abs/extra/apcupsd/apcupsd.conf | 325 + abs/extra/apcupsd/run | 3 + abs/extra/atomicparsley/PKGBUILD | 18 + abs/extra/autofs/Changelog | 2 + abs/extra/autofs/PKGBUILD | 54 + abs/extra/autofs/auto.master | 6 + abs/extra/autofs/auto.misc | 7 + abs/extra/autofs/autofs | 43 + abs/extra/autofs/autofs.conf.d | 4 + abs/extra/autofs/autofs.install | 5 + abs/extra/autofs/finish | 3 + abs/extra/autofs/heimdal.patch | 34 + abs/extra/autofs/run | 5 + abs/extra/beautiful-soup/PKGBUILD | 19 + abs/extra/bluez-firmware/PKGBUILD | 23 + abs/extra/bluez-hcidump/PKGBUILD | 22 + abs/extra/bluez-python/PKGBUILD | 17 + abs/extra/bluez/PKGBUILD | 53 + abs/extra/bluez/bluetooth.conf.d | 33 + abs/extra/bluez/rc.bluetooth | 106 + abs/extra/bmp/0.9.7-visualization.patch | 12 + abs/extra/bmp/0.9.7.1-visualization.patch | 12 + abs/extra/bmp/PKGBUILD | 25 + abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch | 108 + abs/extra/boost/0001-date_time-gcc-4.3-fix.patch | 25 + abs/extra/boost/PKGBUILD | 63 + abs/extra/boost/serialization_gcc43.patch | 44 + abs/extra/cabextract/PKGBUILD | 22 + abs/extra/cddb-py/PKGBUILD | 20 + abs/extra/community/athcool/PKGBUILD | 24 + abs/extra/community/athcool/athcool | 35 + abs/extra/community/athcool/athcool.install | 18 + abs/extra/community/athcool/finish | 3 + abs/extra/community/athcool/run | 2 + abs/extra/community/cksfv/PKGBUILD | 21 + abs/extra/community/codecs/PKGBUILD | 33 + abs/extra/community/cpulimit/PKGBUILD | 20 + abs/extra/community/cwiid-svn/PKGBUILD | 49 + abs/extra/community/cwiid-svn/cwiid.install | 16 + abs/extra/community/deluge/PKGBUILD | 25 + abs/extra/community/desktop-file-utils/ChangeLog | 7 + abs/extra/community/desktop-file-utils/PKGBUILD | 20 + abs/extra/community/djmount/PKGBUILD | 25 + abs/extra/community/djmount/djmount.confd | 2 + abs/extra/community/djmount/djmount.rcd | 39 + abs/extra/community/enca/PKGBUILD | 23 + abs/extra/community/firefox-i18n/PKGBUILD | 87 + abs/extra/community/firefox/PKGBUILD | 76 + .../community/firefox/browser-app-makefile.patch | 11 + .../community/firefox/browser-defaulturls.patch | 26 + abs/extra/community/firefox/firefox-safe.desktop | 11 + abs/extra/community/firefox/firefox-version.patch | 11 + abs/extra/community/firefox/firefox.desktop | 83 + abs/extra/community/firefox/firefox.install | 24 + abs/extra/community/firefox/mozconfig | 35 + .../firefox/mozilla-firefox-1.0-lang.patch | 12 + abs/extra/community/flashplugin/PKGBUILD | 40 + abs/extra/community/fluidsynth/PKGBUILD | 25 + abs/extra/community/fluxconf/PKGBUILD | 24 + abs/extra/community/foldingathome/PKGBUILD | 26 + .../community/foldingathome/foldingathome.install | 47 + abs/extra/community/foldingathome/run | 26 + abs/extra/community/gnash-common/PKGBUILD | 40 + abs/extra/community/gnash-gtk/PKGBUILD | 40 + .../community/gstreamer0.10-base-plugins/PKGBUILD | 33 + abs/extra/community/gstreamer0.10-base/PKGBUILD | 28 + abs/extra/community/gstreamer0.10/PKGBUILD | 33 + abs/extra/community/gstreamer0.10/bgo555631.patch | 88 + abs/extra/community/gtkglext/PKGBUILD | 25 + .../community/gtkglext/gtkglext-1.0.6-pangox.patch | 30 + abs/extra/community/ircii/PKGBUILD | 16 + abs/extra/community/jdk/PKGBUILD | 50 + abs/extra/community/jdk/jdk.install | 14 + abs/extra/community/jdk/jdk.profile | 3 + abs/extra/community/jre/PKGBUILD | 58 + abs/extra/community/jre/jre.install | 26 + abs/extra/community/jre/jre.profile | 4 + abs/extra/community/libdvbpsi/PKGBUILD | 25 + abs/extra/community/libelf/PKGBUILD | 22 + abs/extra/community/libmatroska/PKGBUILD | 21 + abs/extra/community/libmodplug/PKGBUILD | 23 + abs/extra/community/libmpcdec/PKGBUILD | 22 + abs/extra/community/libnetfilter_queue/PKGBUILD | 21 + abs/extra/community/libnfnetlink/PKGBUILD | 18 + abs/extra/community/liboil/PKGBUILD | 25 + abs/extra/community/libshout/PKGBUILD | 23 + abs/extra/community/libstdc++5/PKGBUILD | 41 + .../libstdc++5/gcc-3.4.3-no_multilib_amd64.patch | 11 + abs/extra/community/libv4l/PKGBUILD | 19 + abs/extra/community/lua/PKGBUILD | 30 + abs/extra/community/lua/lua-5.1-cflags.diff | 13 + .../community/lua/lua-5.1.3-official-patch1.diff | 12 + .../community/lua/lua-5.1.3-official-patch2.diff | 11 + .../community/lua/lua-5.1.3-official-patch3.diff | 21 + .../community/lua/lua-5.1.3-official-patch4.diff | 18 + abs/extra/community/lua/lua-arch.patch | 55 + abs/extra/community/mmv/PKGBUILD | 35 + abs/extra/community/mmv/mmv.install | 19 + abs/extra/community/moblock/MoBlock-nfq.sh.patch | 53 + abs/extra/community/moblock/PKGBUILD | 56 + abs/extra/community/moblock/config | 30 + abs/extra/community/moblock/moblock | 70 + abs/extra/community/moblock/moblock-update | 174 + abs/extra/community/moblock/moblock.install | 30 + abs/extra/community/moblock/moblock.logrotate | 11 + abs/extra/community/moblock/moblock_0.9_rc2.patch | 912 + abs/extra/community/moblock/moblock_include.patch | 10 + abs/extra/community/moblockcontrol/PKGBUILD | 42 + .../moblockcontrol/moblock-control-update.sh | 3 + .../community/moblockcontrol/moblock_control.patch | 11 + .../moblockcontrol/moblockcontrol.install | 28 + abs/extra/community/mobloquer/PKGBUILD | 26 + abs/extra/community/motion-svn/PKGBUILD | 42 + abs/extra/community/motion-svn/motion-svn.install | 11 + abs/extra/community/motion-svn/rc.motion | 36 + abs/extra/community/mozplugger/ChangeLog | 7 + abs/extra/community/mozplugger/PKGBUILD | 26 + abs/extra/community/mozplugger/mozplugger.install | 15 + abs/extra/community/mpc/ChangeLog | 15 + abs/extra/community/mpc/PKGBUILD | 26 + abs/extra/community/mpd/PKGBUILD | 45 + abs/extra/community/mpd/mpd | 42 + abs/extra/community/mpd/mpd.install | 23 + abs/extra/community/mythpywii/PKGBUILD | 18 + .../mythtv-vdpau/2.6.28_dvb_api_version.diff | 22 + abs/extra/community/mythtv-vdpau/PKGBUILD | 102 + abs/extra/community/mythtv-vdpau/PKGBUILD.orig | 102 + .../community/mythtv-vdpau/QUICKSTART.archlinux | 69 + .../mythtv-vdpau/menu-xml/HOST_SETTINGS.xml | 87 + abs/extra/community/mythtv-vdpau/menu-xml/is.xml | 3 + .../mythtv-vdpau/menu-xml/library.xml.patch | 15 + .../community/mythtv-vdpau/menu-xml/linhes.xml | 54 + .../mythtv-vdpau/menu-xml/mainmenu.xml.patch | 39 + .../community/mythtv-vdpau/menu-xml/mythbackup.xml | 20 + .../mythtv-vdpau/menu-xml/mythrestore.xml | 20 + .../mythtv-vdpau/menu-xml/optical_menu.xml.patch | 15 + .../mythtv-vdpau/menu-xml/original/create_patch.sh | 5 + .../community/mythtv-vdpau/menu-xml/setup.xml | 111 + .../community/mythtv-vdpau/menu-xml/siriusmenu.xml | 419 + .../mythtv-vdpau/menu-xml/util_menu.xml.patch | 17 + .../community/mythtv-vdpau/menu-xml/xmmenu.xml | 574 + abs/extra/community/mythtv-vdpau/mpegpspatch | 66 + abs/extra/community/mythtv-vdpau/mythbackend | 38 + abs/extra/community/mythtv-vdpau/mythbackend.lr | 9 + abs/extra/community/mythtv-vdpau/mythfrontend.lr | 9 + .../mythtv-vdpau/myththemedmenu.cpp.patch | 125 + .../community/mythtv-vdpau/myththemedmenu.h.patch | 25 + abs/extra/community/mythtv-vdpau/mythtv.install | 61 + abs/extra/community/mythtv-vdpau/pretty | 2 + abs/extra/community/mythtv-vdpau/smolt_jump.patch | 9 + abs/extra/community/ncdu/PKGBUILD | 19 + abs/extra/community/nvclock/PKGBUILD | 27 + .../community/nvclock/nvclock-0.8b4-buildfix.patch | 16 + abs/extra/community/nvidia-beta/PKGBUILD | 44 + abs/extra/community/nvidia-beta/nvidia.install | 22 + abs/extra/community/nvidia-utils-beta/PKGBUILD | 80 + .../community/nvidia-utils-beta/nvidia.install | 36 + .../nvidia-utils-beta/supported-cards.txt | 272 + abs/extra/community/nxtvepg.tar.gz | Bin 0 -> 2018 bytes abs/extra/community/nxtvepg/PKGBUILD | 45 + abs/extra/community/nxtvepg/nxtvepg-icon-16.png | Bin 0 -> 193 bytes abs/extra/community/nxtvepg/nxtvepg-icon-32.png | Bin 0 -> 267 bytes abs/extra/community/nxtvepg/nxtvepg-icon-48.png | Bin 0 -> 333 bytes abs/extra/community/nxtvepg/nxtvepg.desktop | 10 + abs/extra/community/nxtvepg/tcl_85.patch | 13 + abs/extra/community/nzbperl/PKGBUILD | 16 + abs/extra/community/projectx/PKGBUILD | 45 + abs/extra/community/projectx/projectx | 10 + abs/extra/community/pyxdg/PKGBUILD | 18 + abs/extra/community/screen/PKGBUILD | 41 + abs/extra/community/screen/screen.install | 27 + abs/extra/community/screen/screen.pam | 1 + abs/extra/community/smplayer/ChangeLog | 62 + abs/extra/community/smplayer/PKGBUILD | 30 + abs/extra/community/torrentflux/PKGBUILD | 51 + .../community/torrentflux/torrentflux.install | 60 + abs/extra/community/transmission-cli/ChangeLog | 60 + abs/extra/community/transmission-cli/PKGBUILD | 35 + .../transmission-cli/transmission-cli.install | 9 + abs/extra/community/transmission-cli/transmissiond | 37 + .../community/transmission-cli/transmissiond.conf | 1 + abs/extra/community/tre/PKGBUILD | 19 + abs/extra/community/unrar/PKGBUILD | 23 + .../unrar/unrar-3.5.2-optimalization-fix.patch | 12 + abs/extra/community/uudeview/PKGBUILD | 30 + abs/extra/community/vlc/PKGBUILD | 71 + abs/extra/community/vsftpd/PKGBUILD | 52 + abs/extra/community/vsftpd/run | 13 + abs/extra/community/vsftpd/vsftpd.d | 40 + abs/extra/community/vsftpd/vsftpd.install | 22 + abs/extra/community/vsftpd/vsftpd.xinetd | 10 + abs/extra/community/wiiuse/PKGBUILD | 26 + abs/extra/community/wiiuse/wiiuse.install | 17 + abs/extra/community/xbmc-svn/CHANGELOG | 110 + abs/extra/community/xbmc-svn/Lircmap.xml | 233 + abs/extra/community/xbmc-svn/PKGBUILD | 139 + abs/extra/community/xbmc-svn/__changelog | 1 + .../community/xbmc-svn/libcurl-not-in-lib64.patch | 13 + abs/extra/community/xbmc-svn/xbmc-svn.install | 13 + abs/extra/community/xbmc/ChangeLog | 64 + abs/extra/community/xbmc/PKGBUILD | 118 + abs/extra/community/xbmc/xbmc.install | 9 + abs/extra/community/xine-lib-vdpau-svn/PKGBUILD | 47 + abs/extra/community/zvbi/PKGBUILD | 21 + abs/extra/conky/PKGBUILD | 29 + abs/extra/crda/PKGBUILD | 50 + abs/extra/crda/crda.conf.d | 4 + abs/extra/crda/crda.rc | 26 + abs/extra/cvs/PKGBUILD | 20 + abs/extra/ddclient/ChangeLog | 22 + abs/extra/ddclient/PKGBUILD | 35 + abs/extra/ddclient/ddclient.conf.d | 2 + abs/extra/ddclient/ddclient.install | 41 + abs/extra/ddclient/ddclient.rc | 37 + abs/extra/diffstat/PKGBUILD | 21 + abs/extra/docbook-xml/PKGBUILD | 268 + abs/extra/docbook-xml/docbook-xml.install | 46 + abs/extra/docbook-xml/docbook.patch | 226 + abs/extra/docbook-xsl/PKGBUILD | 37 + abs/extra/docbook-xsl/docbook-xsl.install | 47 + abs/extra/doxygen/PKGBUILD | 25 + abs/extra/enchant/PKGBUILD | 21 + abs/extra/ethtool/PKGBUILD | 22 + abs/extra/evrouter/PKGBUILD | 18 + abs/extra/exo/PKGBUILD | 29 + abs/extra/exo/exo.install | 11 + abs/extra/fakeroot/PKGBUILD | 28 + abs/extra/fakeroot/fakeroot.install | 30 + abs/extra/fceu/PKGBUILD | 24 + abs/extra/fftw/PKGBUILD | 48 + abs/extra/fftw/fftw.install | 22 + abs/extra/frozen-bubble/PKGBUILD | 31 + abs/extra/frozen-bubble/frozen-bubble.desktop | 9 + abs/extra/fuppes-svn/PKGBUILD | 52 + abs/extra/fuppes-svn/PKGBUILD.orig | 52 + abs/extra/fuppes-svn/fuppes-r634-archlinux.patch | 93 + abs/extra/fuppes-svn/fuppes.cfg | 216 + abs/extra/fuppes-svn/fuppes.ch | 2 + abs/extra/fuppes-svn/fuppes.diff | 25 + abs/extra/fuppes-svn/fuppes.install | 20 + abs/extra/fuppes-svn/fuppes.lr | 9 + abs/extra/fuppes-svn/run | 2 + abs/extra/gconf/01_xml-gettext-domain.patch | 299 + .../05_from_vuntz_gconf2-pk-default-path.patch | 12 + abs/extra/gconf/PKGBUILD | 49 + abs/extra/gconf/gconf-merge-schema | 34 + abs/extra/gconf/gconf-reload.patch | 20 + abs/extra/gconf/gconf.install | 26 + abs/extra/gconf/gconfpkg | 50 + abs/extra/gconf/xml-gettext-domain.patch | 367 + abs/extra/gd/PKGBUILD | 23 + abs/extra/gdl/PKGBUILD | 23 + abs/extra/glew/PKGBUILD | 23 + abs/extra/gnome-desktop/PKGBUILD | 27 + abs/extra/gnome-doc-utils/PKGBUILD | 22 + abs/extra/gnome-keyring/PKGBUILD | 34 + abs/extra/gnome-keyring/gnome-keyring.install | 19 + abs/extra/gnome-keyring/gnome-keyring.service | 3 + abs/extra/gnome-menus/PKGBUILD | 26 + abs/extra/gnome-menus/menus.patch | 25 + abs/extra/gnome-mime-data/PKGBUILD | 25 + abs/extra/gnome-python-extras/PKGBUILD | 23 + .../gnome-python-extras-2.19.1-pkg-config.patch | 61 + .../gnome-python-extras-2.19.1-xulrunner.patch | 22 + abs/extra/gnome-python/PKGBUILD | 24 + abs/extra/gnome-screensaver/PKGBUILD | 47 + abs/extra/gnome-screensaver/__changelog | 5 + abs/extra/gnome-screensaver/bug564548.patch | 13 + .../gnome-screensaver/gnome-screensaver.install | 32 + abs/extra/gnome-screensaver/gnome-screensaver.pam | 3 + abs/extra/gnome-screensaver/gscreensavers | 200 + abs/extra/gnome-vfs/PKGBUILD | 39 + abs/extra/gnome-vfs/gnome-vfs.install | 17 + abs/extra/gnome-vfs/hal-show-volume-names.patch | 46 + abs/extra/gnuplot/PKGBUILD | 34 + abs/extra/gpac/ChangeLog | 9 + abs/extra/gpac/PKGBUILD | 27 + abs/extra/gpac/gpac-0.4.2-ffmpeg-errno.patch | 20 + abs/extra/graphload/PKGBUILD | 16 + abs/extra/graphload/graphload.sh | 17 + abs/extra/gtk-doc/PKGBUILD | 23 + abs/extra/gtk-doc/gtk-doc.install | 14 + abs/extra/gtk-sharp-2/PKGBUILD | 28 + abs/extra/gtkspell/PKGBUILD | 23 + abs/extra/guile/PKGBUILD | 26 + abs/extra/guile/guile.install | 27 + abs/extra/gvim/PKGBUILD | 84 + abs/extra/gvim/fetch_patches.sh | 61 + abs/extra/gvim/gvim.desktop | 42 + abs/extra/gvim/gvim.install | 24 + abs/extra/hd2u/PKGBUILD | 21 + abs/extra/hddtemp/ChangeLog | 14 + abs/extra/hddtemp/PKGBUILD | 39 + abs/extra/hddtemp/hddtemp | 39 + abs/extra/hddtemp/hddtemp.confd | 2 + abs/extra/hdhgrab/PKGBUILD | 19 + abs/extra/hicolor-icon-theme/PKGBUILD | 19 + abs/extra/hspell/PKGBUILD | 23 + abs/extra/htop/ChangeLog | 8 + abs/extra/htop/PKGBUILD | 28 + abs/extra/htop/htop-treeview.patch | 12 + abs/extra/hunspell/ChangeLog | 6 + abs/extra/hunspell/PKGBUILD | 23 + abs/extra/i2c-tools/Makefile.patch | 19 + abs/extra/i2c-tools/PKGBUILD | 21 + abs/extra/icon-naming-utils/PKGBUILD | 24 + abs/extra/id3lib/PKGBUILD | 29 + abs/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch | 49 + abs/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch | 83 + .../patch_id3lib_3.8.3_UTF16_writing_bug.diff | 39 + abs/extra/ifenslave/PKGBUILD | 20 + abs/extra/ifenslave/bonding.conf.d | 12 + abs/extra/inadyn/PKGBUILD | 18 + abs/extra/inadyn/run | 4 + abs/extra/irqbalance/Makefile.irqbalance | 13 + abs/extra/irqbalance/PKGBUILD | 32 + abs/extra/irqbalance/irqbalance.conf.d | 6 + abs/extra/irqbalance/irqbalance.rc.d | 46 + abs/extra/iso-codes/PKGBUILD | 19 + abs/extra/iw/PKGBUILD | 20 + abs/extra/jade/PKGBUILD | 31 + abs/extra/joyutils/PKGBUILD | 31 + abs/extra/ladspa/PKGBUILD | 25 + abs/extra/ladspa/hardcode-path.patch | 28 + abs/extra/lcdproc/PKGBUILD | 29 + abs/extra/lcdproc/__changelog | 1 + abs/extra/lcdproc/lcdd | 38 + abs/extra/lcdproc/lcdproc-add-serdisplib | 1353 + abs/extra/libbonobo/PKGBUILD | 30 + abs/extra/libbonobo/bonobo-activation-config.xml | 14 + abs/extra/libbonobo/libbonobo.install | 23 + abs/extra/libbonoboui/PKGBUILD | 24 + abs/extra/libcdio/PKGBUILD | 26 + abs/extra/libdvdcss/PKGBUILD | 22 + abs/extra/libdvdnav/PKGBUILD | 22 + abs/extra/libebml/PKGBUILD | 23 + abs/extra/libftdi/PKGBUILD | 19 + abs/extra/libgda/Changelog | 2 + abs/extra/libgda/PKGBUILD | 23 + abs/extra/libgda/bdb43.patch | 18 + abs/extra/libgda/libgda.install | 16 + abs/extra/libgdiplus/PKGBUILD | 22 + abs/extra/libgdiplus/system-cairo.patch | 67 + abs/extra/libgksu/PKGBUILD | 29 + abs/extra/libgksu/libgksu.install | 17 + abs/extra/libglade/PKGBUILD | 28 + abs/extra/libglade/glade.install | 25 + abs/extra/libglade/libglade-2.0.1-nowarning.patch | 39 + abs/extra/libgnome/PKGBUILD | 28 + abs/extra/libgnome/libgnome.install | 17 + abs/extra/libgnomecanvas/PKGBUILD | 22 + abs/extra/libgnomekbd/PKGBUILD | 28 + abs/extra/libgnomekbd/libgnomekbd.install | 17 + abs/extra/libgnomeui/PKGBUILD | 24 + abs/extra/libgtkhtml/PKGBUILD | 22 + abs/extra/libgtop/PKGBUILD | 28 + abs/extra/libgtop/libgtop.install | 13 + abs/extra/libidl2/PKGBUILD | 27 + abs/extra/libidl2/libidl2.install | 13 + abs/extra/libmikmod/PKGBUILD | 22 + abs/extra/libmms/PKGBUILD | 21 + abs/extra/libmpcdec/PKGBUILD | 22 + abs/extra/libmrss/PKGBUILD | 20 + abs/extra/libnl/PKGBUILD | 21 + abs/extra/libnl/ulong_max.patch | 11 + abs/extra/libnotify/PKGBUILD | 22 + abs/extra/libnxml/PKGBUILD | 22 + abs/extra/libsamplerate/ChangeLog | 14 + abs/extra/libsamplerate/PKGBUILD | 23 + abs/extra/libxfce4util/PKGBUILD | 25 + abs/extra/libxklavier/PKGBUILD | 24 + abs/extra/libxp/PKGBUILD | 24 + abs/extra/lm_sensors/PKGBUILD | 41 + abs/extra/lm_sensors/fancontrol.rc | 34 + abs/extra/lm_sensors/sensors-detect.patch | 61 + abs/extra/lm_sensors/sensors.install | 12 + abs/extra/lm_sensors/sensors.rc | 127 + abs/extra/lynx/PKGBUILD | 23 + abs/extra/make/PKGBUILD | 20 + abs/extra/mc/PKGBUILD | 55 + abs/extra/mc/mc-4.6.1-bash-all.patch | 33 + abs/extra/mc/mc-4.6.1-find.patch | 155 + abs/extra/mc/mc-4.6.1-invalid-mtime.patch | 30 + abs/extra/mc/mc-4.6.1-largefile.patch | 194 + abs/extra/mc/mc-4.6.1-nonblock.patch | 11 + abs/extra/mdbtools/PKGBUILD | 24 + abs/extra/mdbtools/gmdb2.desktop | 9 + abs/extra/mediaserv/PKGBUILD | 28 + abs/extra/mediaserv/finish | 8 + abs/extra/mediaserv/linhes-mediaserv.tar.bz2 | Bin 0 -> 17186 bytes abs/extra/mediaserv/mediaserv.install | 26 + abs/extra/mediaserv/mediaserv.no_daemon.patch | 17 + abs/extra/mediaserv/run | 8 + abs/extra/mednafen/PKGBUILD | 21 + abs/extra/mercurial/ChangeLog | 21 + abs/extra/mercurial/PKGBUILD | 35 + abs/extra/mingetty/PKGBUILD | 30 + abs/extra/mingetty/mingetty-utf8.patch | 158 + abs/extra/miro/ChangeLog | 34 + abs/extra/miro/Changelog | 2 + abs/extra/miro/Miro-xulrunner.patch | 64 + abs/extra/miro/PKGBUILD | 32 + abs/extra/miro/boost_1.36.0_fix.patch | 32 + abs/extra/miro/miro-xine.patch | 12 + abs/extra/miro/miro.exec.patch | 9 + abs/extra/miro/miro.install | 54 + abs/extra/miro/miro_python26.patch | 16 + abs/extra/miro/missing-headers.patch | 33 + abs/extra/mkvtoolnix/PKGBUILD | 22 + abs/extra/mono/PKGBUILD | 47 + abs/extra/mono/__changelog | 1 + abs/extra/mono/bug434892.patch | 11 + abs/extra/mono/mono.rc.d | 35 + abs/extra/mozilla-common/PKGBUILD | 17 + abs/extra/mozilla-common/mozilla-common.sh | 1 + abs/extra/myt2xvid3/PKGBUILD | 18 + abs/extra/myt2xvid3/archive.php | 159 + abs/extra/myt2xvid3/myt2xvid3 | 310 + abs/extra/myt2xvid3/myt2xvid3-userjob.sh | 6 + abs/extra/myt2xvid3/myt2xvid3.install | 38 + abs/extra/myth2ipod/PKGBUILD | 19 + abs/extra/myth2ipod/iPod.pm | 184 + abs/extra/myth2ipod/m2iweb.php | 157 + abs/extra/myth2ipod/myth2ipod | 310 + abs/extra/myth2ipod/myth2ipod-userjob.sh | 6 + abs/extra/myth2ipod/myth2ipod.install | 38 + abs/extra/mythappletrailers/PKGBUILD | 30 + abs/extra/mythappletrailers/appletrailer.xml | 722 + abs/extra/mythappletrailers/fix_aple_url.sh | 3 + abs/extra/mythappletrailers/loading.sh | 2 + abs/extra/mythappletrailers/myth_trailers_grabber | 214 + .../mythappletrailers/mythappletrailers.install | 37 + abs/extra/mythappletrailers/trailers | 2 + abs/extra/mythexport/PKGBUILD | 17 + abs/extra/mythexport/mythexport.install | 10 + abs/extra/mythfeed/PKGBUILD | 22 + abs/extra/mythfeed/mythfeed.install | 37 + abs/extra/mythnuv2mkv/PKGBUILD | 16 + abs/extra/mythvodka/PKGBUILD | 36 + abs/extra/mythvodka/hulu_grabber.sh | 16 + abs/extra/mythvodka/mythvodka.diff | 3933 ++ abs/extra/mythvodka/mythvodka.install | 47 + abs/extra/neon/PKGBUILD | 22 + abs/extra/nspr/PKGBUILD | 53 + abs/extra/nspr/nspr.pc.in | 10 + abs/extra/nss/PKGBUILD | 84 + abs/extra/nss/nss-config.in | 145 + abs/extra/nss/nss-nolocalsql.patch | 53 + abs/extra/nss/nss.pc.in | 11 + abs/extra/nvram-wake/PKGBUILD | 16 + abs/extra/ocaml/PKGBUILD | 29 + abs/extra/openjdk6/PKGBUILD | 155 + abs/extra/openjdk6/aatext_by_default.diff | 35 + abs/extra/openjdk6/fix_corba_cmds_path.diff | 33 + abs/extra/openjdk6/fix_jdk_cmds_path.diff | 33 + abs/extra/openjdk6/fontconfig-paths.diff | 43 + abs/extra/openjdk6/gcjwebplugin_xulrunner.diff | 11 + abs/extra/openjdk6/openjdk6.install | 12 + abs/extra/openjdk6/openjdk6.profile | 4 + abs/extra/opera/PKGBUILD | 40 + abs/extra/opera/opera-qt4-theme.patch | 11 + abs/extra/opera/opera.desktop | 91 + abs/extra/opera/opera_logo48.png | Bin 0 -> 2468 bytes abs/extra/orbit2/PKGBUILD | 22 + abs/extra/oss/PKGBUILD | 225 + abs/extra/oss/hg-fix-devc.diff | 397 + abs/extra/oss/hg-latest-fixes.diff | 104 + abs/extra/oss/oss.install | 38 + abs/extra/oss/oss.rc | 32 + abs/extra/oss/oss.rm-init-scripts.patch | 52 + abs/extra/perl-yaml/PKGBUILD | 28 + abs/extra/phpmyadmin/PKGBUILD | 18 + abs/extra/pmount/PKGBUILD | 27 + abs/extra/pmount/pmount-dbus-close.patch | 11 + abs/extra/policykit-gnome/PKGBUILD | 32 + abs/extra/policykit-gnome/policykit-gnome.install | 23 + abs/extra/policykit/PKGBUILD | 43 + abs/extra/policykit/entry-leak.patch | 37 + abs/extra/policykit/pk-ck-api-change.patch | 83 + abs/extra/policykit/policykit.install | 30 + abs/extra/policykit/polkit-0.8-dbus-policy.patch | 12 + abs/extra/policykit/polkit.pam | 7 + abs/extra/postgresql-libs/PKGBUILD | 58 + abs/extra/postgresql/PKGBUILD | 79 + abs/extra/postgresql/build.patch | 11 + abs/extra/postgresql/postgresql | 59 + abs/extra/postgresql/postgresql.confd | 4 + abs/extra/postgresql/postgresql.pam | 3 + abs/extra/powertop/ChangeLog | 3 + abs/extra/powertop/PKGBUILD | 20 + abs/extra/printproto/PKGBUILD | 22 + abs/extra/pycrypto/PKGBUILD | 19 + abs/extra/pyopenssl/PKGBUILD | 15 + abs/extra/pyorbit/PKGBUILD | 22 + abs/extra/pyrex/ChangeLog | 5 + abs/extra/pyrex/PKGBUILD | 21 + abs/extra/python-m2crypto/PKGBUILD | 22 + abs/extra/python-pybluez/PKGBUILD | 23 + abs/extra/python-pymedia/PKGBUILD | 19 + abs/extra/pyusb/PKGBUILD | 16 + abs/extra/quilt/PKGBUILD | 22 + abs/extra/rarian/PKGBUILD | 29 + abs/extra/rarian/user-segfault.patch | 14 + abs/extra/read-edid/PKGBUILD | 20 + abs/extra/removecommercials/PKGBUILD | 11 + abs/extra/removecommercials/removecommercials | 195 + abs/extra/rhino/PKGBUILD | 18 + abs/extra/romdb/PKGBUILD | 17 + abs/extra/romdb/romdb.install | 18 + abs/extra/rrd_stats/PKGBUILD | 20 + abs/extra/rrd_stats/rrd_stats.install | 34 + abs/extra/rrd_stats/rrd_stats.tgz | Bin 0 -> 7454 bytes abs/extra/rrd_stats/run_rrd.sh | 8 + abs/extra/rrdtool/ChangeLog | 13 + abs/extra/rrdtool/PKGBUILD | 29 + abs/extra/rtmpdump/PKGBUILD | 19 + abs/extra/ruby/PKGBUILD | 28 + abs/extra/sample-media/PKGBUILD | 37 + abs/extra/sample-media/audio/05-Hush.mp3 | Bin 0 -> 4946841 bytes abs/extra/sample-media/images/115_1573.jpg | Bin 0 -> 482585 bytes .../sample-media/images/345-1217206791B81W.jpg | Bin 0 -> 176991 bytes .../sample-media/images/classic-menugraph.png | Bin 0 -> 144106 bytes abs/extra/sample-media/images/dvr_menugraph.png | Bin 0 -> 207288 bytes .../sample-media/images/menu_diagram_color.png | Bin 0 -> 193264 bytes abs/extra/sample-media/rom/PACMAN.SMC | Bin 0 -> 524800 bytes abs/extra/sample-media/sample.install | 41 + abs/extra/sample-media/video/TripThe1939.mpeg | Bin 0 -> 23128735 bytes abs/extra/scanfw/PKGBUILD | 23 + abs/extra/scanfw/scanfw-98d.beta.tar.gz | Bin 0 -> 45883 bytes abs/extra/scanfw/scanfw.install | 5 + abs/extra/scte65scan/PKGBUILD | 23 + abs/extra/sdl_gfx/PKGBUILD | 29 + abs/extra/sdl_image/PKGBUILD | 27 + abs/extra/sdl_image/SDL_image-IMG_lbm.patch | 28 + .../sdl_image/SDL_image-buffer-overflow.patch | 13 + abs/extra/sdl_mixer/PKGBUILD | 25 + abs/extra/sdl_net/PKGBUILD | 22 + abs/extra/sdl_pango/PKGBUILD | 24 + abs/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch | 116 + abs/extra/sdl_perl/PKGBUILD | 32 + abs/extra/sdl_sound/PKGBUILD | 25 + abs/extra/sdl_sound/flac.patch | 126 + abs/extra/sdl_ttf/PKGBUILD | 21 + abs/extra/sdlmame/ChangeLog | 5 + abs/extra/sdlmame/PKGBUILD | 65 + abs/extra/sdlmame/extras.tar.gz | Bin 0 -> 4093 bytes abs/extra/sdlmame/sdlmame.install | 32 + abs/extra/sdlmame/sdlmame.sh | 58 + abs/extra/serdisplib/PKGBUILD | 22 + abs/extra/shepherd/PKGBUILD | 16 + abs/extra/slang/ChangeLog | 7 + abs/extra/slang/PKGBUILD | 24 + abs/extra/smartmontools/PKGBUILD | 27 + abs/extra/smartmontools/smartd | 35 + abs/extra/smpeg/PKGBUILD | 28 + abs/extra/smpeg/smpeg-0.4.4-gcc41.patch | 41 + abs/extra/snes9x/PKGBUILD | 42 + abs/extra/snes9x/snes9x-fixes2.patch | 29 + abs/extra/snes9x/snes9x.install | 13 + abs/extra/speex/PKGBUILD | 25 + abs/extra/spidermonkey/PKGBUILD | 27 + abs/extra/spidermonkey/header.patch | 12 + .../spidermonkey/spidermonkey-1.7-threadsafe.patch | 16 + abs/extra/startup-notification/PKGBUILD | 19 + abs/extra/strace/PKGBUILD | 21 + abs/extra/strace/no_linux_socket_h.patch | 22 + abs/extra/subversion/ChangeLog | 18 + abs/extra/subversion/PKGBUILD | 90 + abs/extra/subversion/subversion-neon.patch | 62 + abs/extra/subversion/svn | 11 + abs/extra/subversion/svnserve | 42 + abs/extra/subversion/svnserve.conf | 7 + abs/extra/swh-plugins/PKGBUILD | 28 + abs/extra/swig/PKGBUILD | 23 + abs/extra/sysstat/PKGBUILD | 35 + abs/extra/sysstat/sysstat | 21 + abs/extra/tablet-encode/PKGBUILD | 20 + abs/extra/tango-icon-theme/PKGBUILD | 23 + abs/extra/tatir/PKGBUILD | 21 + abs/extra/tatir/tatir.install | 19 + abs/extra/tatir/tatir.tar.bz2 | Bin 0 -> 4525 bytes abs/extra/terminal/PKGBUILD | 30 + .../terminal/terminal-dont-die-on-dbus-kill.patch | 10 + abs/extra/terminal/terminal.install | 11 + abs/extra/thunar/PKGBUILD | 30 + abs/extra/thunar/__changelog | 1 + abs/extra/thunar/thunar.install | 14 + abs/extra/tightvnc/PKGBUILD | 35 + abs/extra/tightvnc/tightvnc-fontpath-xcolors.patch | 21 + abs/extra/tree/PKGBUILD | 22 + abs/extra/ttf-ms-fonts/PKGBUILD | 27 + abs/extra/ttf-ms-fonts/ttf-ms-fonts.install | 55 + abs/extra/unison/PKGBUILD | 28 + abs/extra/unison/ocaml-3.08-extnames.patch | 14 + abs/extra/unison/unison.desktop | 13 + abs/extra/unison/unison.install | 32 + abs/extra/unixodbc/PKGBUILD | 24 + abs/extra/v4l-dvb-dvico2/PKGBUILD | 24 + ...vare-i2c-i2c-constify-client-address-data.patch | 25 + abs/extra/v4l-dvb-dvico2/v4l-dvb.install | 23 + abs/extra/v4l-dvb-dvico2/xc-bluebird.patch | 896 + abs/extra/vcdimager/PKGBUILD | 22 + abs/extra/vcdimager/__changelog | 1 + abs/extra/vcdimager/cdio.patch | 11 + abs/extra/vim/PKGBUILD | 66 + abs/extra/vim/__changelog | 3 + abs/extra/vim/fetch_patches.sh | 61 + abs/extra/vim/vim.install | 38 + abs/extra/vorbis-tools/ChangeLog | 10 + abs/extra/vorbis-tools/PKGBUILD | 25 + abs/extra/vorbis-tools/curl.patch | 10 + .../vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch | 500 + abs/extra/vte/PKGBUILD | 26 + .../vte/vte-0.16.0-reaper-python-bindings.patch | 62 + abs/extra/wavpack/PKGBUILD | 25 + abs/extra/webmin/PKGBUILD | 222 + abs/extra/webmin/run | 11 + abs/extra/webmin/webmin-config.tar.bz2 | Bin 0 -> 3021 bytes abs/extra/webmin/webmin-pacman.tar.bz2 | Bin 0 -> 924 bytes abs/extra/webmin/webmin.install | 39 + abs/extra/webmin/webmin.rc | 44 + abs/extra/windowmaker/PKGBUILD | 31 + .../windowmaker/windowmaker-gcc4.patch.tar.bz2 | Bin 0 -> 39677 bytes abs/extra/wireshark/PKGBUILD | 26 + abs/extra/wireshark/wireshark.desktop | 10 + abs/extra/wireshark/wireshark.png | Bin 0 -> 18535 bytes abs/extra/wol/PKGBUILD | 19 + abs/extra/wol/wakeonlan.sh | 10 + abs/extra/wxgtk/ChangeLog | 18 + abs/extra/wxgtk/PKGBUILD | 32 + abs/extra/wxgtk/__changelog | 1 + abs/extra/x11vnc/PKGBUILD | 22 + abs/extra/xalan-java/PKGBUILD | 21 + abs/extra/xautomation/PKGBUILD | 18 + abs/extra/xdg-utils/PKGBUILD | 19 + abs/extra/xe/PKGBUILD | 21 + abs/extra/xe/xe.install | 18 + abs/extra/xerces2-java/PKGBUILD | 22 + abs/extra/xfsdump/PKGBUILD | 25 + abs/extra/xine-lib/ChangeLog | 43 + abs/extra/xine-lib/PKGBUILD | 41 + abs/extra/xine-lib/__changelog | 3 + abs/extra/xine-lib/xine-header.patch | 11 + abs/extra/xine-lib/xine-imagemagick.patch | 11 + .../xine-lib-1.1.1-configure-no-mcpu-march.patch | 13 + abs/extra/xine-lib/xine.install | 27 + abs/extra/xine-ui/ChangeLog | 7 + abs/extra/xine-ui/PKGBUILD | 30 + abs/extra/xmbmon/Makefile.in.patch | 37 + abs/extra/xmbmon/PKGBUILD | 20 + abs/extra/xmlto/PKGBUILD | 24 + abs/extra/xmms/PKGBUILD | 50 + abs/extra/xmms/id3v2.patch | 3379 ++ abs/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch | 101 + abs/extra/xmms/xmms-fix.diff | 11 + abs/extra/xmms/xmms-menu.patch | 35 + abs/extra/xscreensaver/ChangeLog | 20 + abs/extra/xscreensaver/LICENSE | 9 + abs/extra/xscreensaver/PKGBUILD | 40 + abs/extra/xscreensaver/__changelog | 3 + abs/extra/xscreensaver/xscreensaver | 198 + abs/extra/xscreensaver/xscreensaver.install | 30 + abs/extra/xscreensaver/xscreensaver.pam | 1 + abs/extra/xscreensaver/xscreensavers | 198 + abs/extra/xulrunner/PKGBUILD | 43 + abs/extra/xulrunner/mozconfig | 33 + abs/extra/xulrunner/xulrunner.install | 11 + abs/extra/zip/ChangeLog | 5 + abs/extra/zip/PKGBUILD | 32 + abs/extra/zip/zip-3.0-build.patch | 34 + abs/extra/zip/zip-3.0-exec-stack.patch | 20 + abs/extra/zip/zip-3.0-no-crypt.patch | 51 + abs/extra/zip/zip-3.0-pic.patch | 12 + 2415 files changed, 431906 insertions(+), 17284 deletions(-) create mode 100644 abs/core/Kernel_rebuild_list create mode 100644 abs/core/LinHES-config-svn/LinHES-release create mode 100644 abs/core/LinHES-config-svn/LinHES.install create mode 100755 abs/core/LinHES-config-svn/MythVantage.sh create mode 100755 abs/core/LinHES-config-svn/PKGBUILD create mode 100644 abs/core/LinHES-config-svn/README create mode 100755 abs/core/LinHES-config-svn/add_service.sh create mode 100755 abs/core/LinHES-config-svn/autocard.py create mode 100755 abs/core/LinHES-config-svn/bpopup-ui.xml create mode 100755 abs/core/LinHES-config-svn/build_diskless.sh create mode 100755 abs/core/LinHES-config-svn/checkout_MythVantage.sh create mode 100755 abs/core/LinHES-config-svn/create_master.sh create mode 100755 abs/core/LinHES-config-svn/file_time_offset.py create mode 100755 abs/core/LinHES-config-svn/install-ui.xml create mode 100755 abs/core/LinHES-config-svn/install_db_chroot.sh create mode 100755 abs/core/LinHES-config-svn/install_functions.sh create mode 100755 abs/core/LinHES-config-svn/install_proxy.sh create mode 100644 abs/core/LinHES-config-svn/issue create mode 100755 abs/core/LinHES-config-svn/live-install.sh create mode 100644 abs/core/LinHES-config-svn/myth_user_call create mode 100644 abs/core/LinHES-config-svn/networkconfig.sh create mode 100755 abs/core/LinHES-config-svn/remove_service.sh create mode 100755 abs/core/LinHES-config-svn/restore_default_settings.sh create mode 100644 abs/core/LinHES-config-svn/restore_km_db_chroot.sh create mode 100755 abs/core/LinHES-config-svn/soundconfig.sh create mode 100755 abs/core/LinHES-config-svn/startx create mode 100755 abs/core/LinHES-config-svn/systemconfig.sh create mode 100755 abs/core/LinHES-config-svn/timezip.py create mode 100755 abs/core/LinHES-config-svn/timezone.bin create mode 100755 abs/core/LinHES-config-svn/xconfig.sh create mode 100644 abs/core/LinHES-config/LinHES-release create mode 100644 abs/core/LinHES-config/LinHES.install create mode 100755 abs/core/LinHES-config/MythVantage.sh create mode 100644 abs/core/LinHES-config/PKGBUILD create mode 100644 abs/core/LinHES-config/README create mode 100755 abs/core/LinHES-config/add_service.sh create mode 100755 abs/core/LinHES-config/autocard.py create mode 100755 abs/core/LinHES-config/bpopup-ui.xml create mode 100755 abs/core/LinHES-config/build_diskless.sh create mode 100755 abs/core/LinHES-config/checkout_MythVantage.sh create mode 100755 abs/core/LinHES-config/create_master.sh create mode 100755 abs/core/LinHES-config/file_time_offset.py create mode 100755 abs/core/LinHES-config/install-ui.xml create mode 100644 abs/core/LinHES-config/install_db_chroot.sh create mode 100755 abs/core/LinHES-config/install_functions.sh create mode 100755 abs/core/LinHES-config/install_proxy.sh create mode 100644 abs/core/LinHES-config/issue create mode 100755 abs/core/LinHES-config/live-install.sh create mode 100755 abs/core/LinHES-config/mv_advanced.py create mode 100755 abs/core/LinHES-config/mv_common.py create mode 100755 abs/core/LinHES-config/mv_config.py create mode 100755 abs/core/LinHES-config/mv_hostype.py create mode 100755 abs/core/LinHES-config/mv_install.py create mode 100755 abs/core/LinHES-config/mv_ir.py create mode 100755 abs/core/LinHES-config/mv_misc.py create mode 100755 abs/core/LinHES-config/mv_network.py create mode 100755 abs/core/LinHES-config/mv_screensaver.py create mode 100755 abs/core/LinHES-config/mv_smolt.py create mode 100755 abs/core/LinHES-config/mv_software.py create mode 100755 abs/core/LinHES-config/mv_webuser.py create mode 100644 abs/core/LinHES-config/myth_user_call create mode 100755 abs/core/LinHES-config/myth_user_call.py create mode 100644 abs/core/LinHES-config/networkconfig.sh create mode 100755 abs/core/LinHES-config/remove_service.sh create mode 100755 abs/core/LinHES-config/restore_default_settings.sh create mode 100644 abs/core/LinHES-config/restore_km_db_chroot.sh create mode 100755 abs/core/LinHES-config/soundconfig.sh create mode 100755 abs/core/LinHES-config/startx create mode 100755 abs/core/LinHES-config/systemconfig.py create mode 100755 abs/core/LinHES-config/systemconfig.sh create mode 100755 abs/core/LinHES-config/timezip.py create mode 100755 abs/core/LinHES-config/xconfig.sh create mode 100644 abs/core/LinHES-system/LinHES-profile.sh create mode 100644 abs/core/LinHES-system/LinHES-run create mode 100755 abs/core/LinHES-system/LinHES-session create mode 100755 abs/core/LinHES-system/LinHES-start create mode 100644 abs/core/LinHES-system/LinHES.install create mode 100644 abs/core/LinHES-system/PKGBUILD create mode 100644 abs/core/LinHES-system/alsa-base create mode 100644 abs/core/LinHES-system/bin/backupcommon create mode 100755 abs/core/LinHES-system/bin/checkbackup create mode 100755 abs/core/LinHES-system/bin/checkrestore create mode 100755 abs/core/LinHES-system/bin/library.sh create mode 100755 abs/core/LinHES-system/bin/mythbackup create mode 100755 abs/core/LinHES-system/bin/mythrestore create mode 100755 abs/core/LinHES-system/bin/rollback.sh create mode 100755 abs/core/LinHES-system/firstboot.sh create mode 100755 abs/core/LinHES-system/load-modules-mythvantage.sh create mode 100644 abs/core/LinHES-system/myth_mtc.lr create mode 100755 abs/core/LinHES-system/myth_mtc.py create mode 100755 abs/core/LinHES-system/myth_mtc.sh create mode 100755 abs/core/LinHES-system/optimize_mythdb.py create mode 100644 abs/core/LinHES-system/unclutter-toggle.sh create mode 100644 abs/core/LinHES-timezone/Makefile create mode 100644 abs/core/LinHES-timezone/PKGBUILD create mode 100644 abs/core/LinHES-timezone/Tux.csv create mode 100644 abs/core/LinHES-timezone/WorldTZ_102.zip create mode 100644 abs/core/LinHES-timezone/create_map_include.c create mode 100644 abs/core/LinHES-timezone/extract_map_data.c create mode 100644 abs/core/LinHES-timezone/linhes_timezone.c create mode 100644 abs/core/a create mode 100644 abs/core/acpid/Makefile create mode 100644 abs/core/acpid/PKGBUILD create mode 100644 abs/core/acpid/__changelog create mode 100644 abs/core/acpid/acpid create mode 100644 abs/core/acpid/acpid-1.0.4-gcc4.patch create mode 100644 abs/core/acpid/anything create mode 100644 abs/core/acpid/default create mode 100755 abs/core/acpid/handler.sh create mode 100644 abs/core/ati-dri/PKGBUILD create mode 100644 abs/core/ati-dri/mesa-7.1-link-shared.patch create mode 100644 abs/core/audiofile/PKGBUILD create mode 100644 abs/core/audiofile/aclocal-fixes.patch create mode 100644 abs/core/aumix/PKGBUILD create mode 100644 abs/core/aumix/aumix.patch create mode 100644 abs/core/autoconf/PKGBUILD create mode 100644 abs/core/autoconf/autoconf.install create mode 100644 abs/core/automake/PKGBUILD create mode 100644 abs/core/automake/automake.install create mode 100644 abs/core/avahi/ChangeLog create mode 100644 abs/core/avahi/PKGBUILD create mode 100644 abs/core/avahi/avahi.install create mode 100644 abs/core/avahi/gnome-nettool.png create mode 100644 abs/core/bash/bash.install create mode 100644 abs/core/binutils/binutils.install create mode 100644 abs/core/bison/ChangeLog create mode 100644 abs/core/bison/PKGBUILD create mode 100644 abs/core/bison/bison.install create mode 100644 abs/core/cdparanoia/gcc.patch create mode 100644 abs/core/cmake/PKGBUILD create mode 100644 abs/core/coreutils/__changelog create mode 100644 abs/core/coreutils/coreutils-7.1-cp-recursiveinfloop.patch create mode 100644 abs/core/coreutils/coreutils-7.1-sort-endoffields.patch create mode 100644 abs/core/coreutils/coreutils.install create mode 100644 abs/core/dbus-core/PKGBUILD create mode 100644 abs/core/dbus-core/dbus create mode 100644 abs/core/dbus-core/dbus.install create mode 100644 abs/core/dbus-python/PKGBUILD create mode 100644 abs/core/dbus/30-dbus create mode 100644 abs/core/ddcxinfo-arch/PKGBUILD create mode 100644 abs/core/ddcxinfo/PKGBUILD create mode 100644 abs/core/ddcxinfo/ddcxinfo-kanotix_0.6.19.tar.gz create mode 100644 abs/core/ddcxinfo/lrmi.patch create mode 100644 abs/core/dhcp/ChangeLog create mode 100644 abs/core/dhcp/PKGBUILD create mode 100644 abs/core/dhcp/dhcp-4.1.0-missing-ipv6-not-fatal.patch create mode 100644 abs/core/dhcp/dhcp.conf.d create mode 100644 abs/core/dhcp/dhcp.install create mode 100755 abs/core/dhcp/dhcpd create mode 100644 abs/core/directfb/ChangeLog create mode 100644 abs/core/directfb/PKGBUILD create mode 100644 abs/core/directfb/dfb_serial.diff create mode 100644 abs/core/diskless-legacy/PKGBUILD create mode 100755 abs/core/diskless-legacy/config_diskless_frontend.bash create mode 100644 abs/core/dvb-firmware/PKGBUILD create mode 100644 abs/core/dvb-firmware/dvb-usb-dib0700-1.20.fw create mode 100644 abs/core/dvb-firmware/xc3028-v27.fw create mode 100644 abs/core/e2fsprogs/e2fsprogs.install create mode 100644 abs/core/ed/PKGBUILD create mode 100644 abs/core/ed/ed.install create mode 100644 abs/core/esound/PKGBUILD create mode 100755 abs/core/esound/esd create mode 100644 abs/core/esound/esd-0.2.38-alsa-drain.patch create mode 100644 abs/core/eventlog/PKGBUILD create mode 100644 abs/core/evieext/PKGBUILD create mode 100644 abs/core/fam/PKGBUILD create mode 100755 abs/core/fam/fam create mode 100644 abs/core/fam/fam-2.7.0-dnotify.patch create mode 100644 abs/core/fam/fam-2.7.0-gcc43.patch create mode 100644 abs/core/fam/fam-2.7.0-largefiles.patch create mode 100644 abs/core/fam/fam-2.7.0-noc++.patch create mode 100644 abs/core/fam/include_fam_h.patch create mode 100644 abs/core/fbsplash/PKGBUILD create mode 100644 abs/core/fbsplash/__changelog create mode 100644 abs/core/fbsplash/darch.tar.bz2 create mode 100644 abs/core/fbsplash/extra/encrypt_hook.patch create mode 100644 abs/core/fbsplash/fbsplash.bootsteps create mode 100644 abs/core/fbsplash/fbsplash.conf create mode 100644 abs/core/fbsplash/fbsplash.daemon create mode 100644 abs/core/fbsplash/fbsplash.initcpio_install create mode 100644 abs/core/fbsplash/fbsplash.inithooks create mode 100644 abs/core/fbsplash/fbsplash.install create mode 100644 abs/core/fbsplash/splash-functions-arch.sh create mode 100644 abs/core/fbsplash/splash-functions.sh create mode 100644 abs/core/fcgi/PKGBUILD create mode 100644 abs/core/fcgi/fcgi-configure.patch create mode 100644 abs/core/ffmpeg-svn/PKGBUILD delete mode 100644 abs/core/ffmpeg/PKGBUILD create mode 100644 abs/core/fftw2/__changelog create mode 100644 abs/core/filesystem/modprobe.d.usb-load-ehci-first create mode 100644 abs/core/flex/PKGBUILD create mode 100644 abs/core/flex/flex-yytext.patch create mode 100644 abs/core/flex/lex.sh create mode 100644 abs/core/fluxbox/ChangeLog create mode 100644 abs/core/fluxbox/keys create mode 100644 abs/core/freetype2-static/PKGBUILD create mode 100644 abs/core/freetype2-static/bytecode.patch create mode 100644 abs/core/freetype2-static/freetype-2.2.1-enable-valid.patch create mode 100644 abs/core/freetype2-static/freetype-2.2.1-memcpy-fix.patch create mode 100644 abs/core/freetype2-static/freetype-2.3.0-enable-spr.patch create mode 100644 abs/core/ftgl/PKGBUILD create mode 100644 abs/core/ftgl/ftgl-gcc411.patch create mode 100644 abs/core/gcc-libs/buildfix_new_bison.patch create mode 100644 abs/core/gcc/PKGBUILD create mode 100644 abs/core/gcc/buildfix_new_bison.patch create mode 100644 abs/core/gcc/gcc-hash-style-both.patch create mode 100644 abs/core/gcc/gcc-java-driver.patch create mode 100644 abs/core/gcc/gcc.install create mode 100644 abs/core/gcc/gcc_pure64.patch create mode 100644 abs/core/gdb/PKGBUILD create mode 100644 abs/core/gdb/gdb.install create mode 100644 abs/core/gdk-pixbuf/PKGBUILD create mode 100644 abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch create mode 100644 abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_secure.patch create mode 100644 abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-loaders.patch create mode 100644 abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-m4.patch create mode 100644 abs/core/git/ChangeLog create mode 100644 abs/core/git/PKGBUILD create mode 100644 abs/core/glib/PKGBUILD create mode 100644 abs/core/glib/__changelog create mode 100644 abs/core/glib/aclocal-fixes.patch create mode 100644 abs/core/glib/gcc340.patch create mode 100644 abs/core/gmp/PKGBUILD create mode 100644 abs/core/gmp/gmp.install create mode 100644 abs/core/gnutls/gnutls.install create mode 100644 abs/core/gperf/PKGBUILD create mode 100644 abs/core/grub/ext4.patch create mode 100644 abs/core/grub/grub.install mode change 100755 => 100644 abs/core/grub/install-grub create mode 100755 abs/core/grub/install-grub.orig create mode 100644 abs/core/gtk/PKGBUILD create mode 100644 abs/core/gtk/__changelog create mode 100644 abs/core/gtk/aclocal-fixes.patch create mode 100644 abs/core/gtk2/gtk2-emit-size-change.patch create mode 100644 abs/core/hal/fix-udev-compatibility.patch create mode 100644 abs/core/hal/ntfs-mount-fix.patch create mode 100755 abs/core/hauppauge-hvr-firmware/PKGBUILD create mode 100755 abs/core/hd3000firmware/PKGBUILD create mode 100755 abs/core/hdhomerun/PKGBUILD create mode 100644 abs/core/heimdal/heimdal.install create mode 100644 abs/core/hwd/PKGBUILD create mode 100644 abs/core/hwd/hwd.install create mode 100755 abs/core/iguanair/PKGBUILD create mode 100644 abs/core/ilmbase/PKGBUILD create mode 100644 abs/core/imake/PKGBUILD create mode 100644 abs/core/imake/linuxconfig.patch create mode 100644 abs/core/initscripts/__changelog create mode 100644 abs/core/initscripts/rc.shutdown.patch create mode 100644 abs/core/initscripts/rc.sysinit.patch create mode 100644 abs/core/intel-dri/intel-disable-ttm-warning.patch create mode 100644 abs/core/intel-dri/intel-revert-vbl.patch create mode 100644 abs/core/intel-dri/mesa-7.1-link-shared.patch create mode 100644 abs/core/intltool/ChangeLog create mode 100644 abs/core/intltool/PKGBUILD delete mode 100644 abs/core/iproute/PKGBUILD delete mode 100644 abs/core/iproute/iproute2-2.4.7-now-ss020116.patch create mode 100644 abs/core/iproute2/PKGBUILD create mode 100644 abs/core/iproute2/iproute2-2.4.7-now-ss020116.patch create mode 100644 abs/core/iproute2/libdir.patch delete mode 100644 abs/core/ipw3945/2.6.18-compile.patch delete mode 100644 abs/core/ipw3945/PKGBUILD delete mode 100644 abs/core/ipw3945/compile-2.6.24.patch delete mode 100644 abs/core/ipw3945/ipw3945.install delete mode 100644 abs/core/ipw3945/kernel-2.6.19.patch delete mode 100644 abs/core/ipw3945/lockup.patch create mode 100644 abs/core/kdelibs3/__changelog create mode 100644 abs/core/kernel-headers/serial.diff create mode 100644 abs/core/kernel26/ext4.patch create mode 100644 abs/core/kernel26/serial.diff create mode 100644 abs/core/klibc-kbd/no-fflush.patch create mode 100644 abs/core/klibc-udev/50-udev-default.rules create mode 100644 abs/core/klibc-udev/60-persistent-storage.rules create mode 100644 abs/core/klibc-udev/64-device-mapper.rules create mode 100644 abs/core/klibc-udev/64-md-raid.rules create mode 100644 abs/core/klibc-udev/80-drivers.rules create mode 100644 abs/core/klibc-udev/disable-uid-gid-lookup.patch create mode 100644 abs/core/klibc-udev/udev-fix-klibc-build.patch create mode 100644 abs/core/klibc/klibc-fix-2.6.28-includes.patch create mode 100644 abs/core/klibc/klibc-x86_64-fix-io.h.patch create mode 100644 abs/core/libavc1394/PKGBUILD create mode 100644 abs/core/libcaca/PKGBUILD create mode 100644 abs/core/libcddb/PKGBUILD create mode 100644 abs/core/libdaemon/PKGBUILD create mode 100644 abs/core/libdc1394/PKGBUILD create mode 100644 abs/core/libdca/PKGBUILD create mode 100644 abs/core/libdv/PKGBUILD create mode 100644 abs/core/libdv/libdv-0.104-amd64reloc.patch create mode 100644 abs/core/libevent/PKGBUILD create mode 100644 abs/core/libgcrypt/libgcrypt.install create mode 100644 abs/core/libgl/mesa-7.1-link-shared.patch create mode 100644 abs/core/libidn/libidn.install create mode 100644 abs/core/libiec61883/PKGBUILD create mode 100644 abs/core/libmcrypt/PKGBUILD create mode 100644 abs/core/libmcrypt/aclocal-fixes.patch create mode 100644 abs/core/libmng/PKGBUILD create mode 100644 abs/core/libmpeg2/PKGBUILD create mode 100644 abs/core/libpciaccess/PKGBUILD create mode 100644 abs/core/libraw1394/PKGBUILD create mode 100644 abs/core/libraw1394/libraw1394.install create mode 100644 abs/core/libtasn1/libtasn1.install create mode 100644 abs/core/libtiff/ChangeLog create mode 100644 abs/core/libtiff/tiff-3.8.2-CVE-2008-2327.patch create mode 100644 abs/core/libtool/libtool.install create mode 100644 abs/core/libvisual-plugins/01_disable-gforce-dfsg.patch create mode 100644 abs/core/libvisual-plugins/02_64-bit_JESS_fix.patch create mode 100644 abs/core/libvisual-plugins/03_build_against_gl_fixes.patch create mode 100644 abs/core/libvisual-plugins/04_lv_analyzer_build_fix.patch create mode 100644 abs/core/libvisual-plugins/05_fix_po.patch create mode 100644 abs/core/libvisual-plugins/60_no-const-vispluginfo-in-nastyfft.patch create mode 100644 abs/core/libvisual-plugins/90_autoreconf.patch create mode 100644 abs/core/libvisual-plugins/PKGBUILD create mode 100644 abs/core/libvisual-plugins/__changelog create mode 100644 abs/core/libvisual-plugins/libvisual-plugins.install create mode 100644 abs/core/libvisual-projectm/PKGBUILD create mode 100644 abs/core/libvisual/PKGBUILD create mode 100644 abs/core/libxcb/libxcb-1.1-no-pthread-stubs.patch create mode 100644 abs/core/libxcb/libxcb-1.1-sloppy-lock.patch create mode 100644 abs/core/libxml-perl/PKGBUILD create mode 100644 abs/core/libxml2/largefile64.patch create mode 100644 abs/core/libxres/PKGBUILD create mode 100644 abs/core/lighttpd/PKGBUILD create mode 100644 abs/core/lighttpd/_changelog create mode 100644 abs/core/lighttpd/auth-inc.conf create mode 100644 abs/core/lighttpd/lighttpd.conf create mode 100644 abs/core/lighttpd/lighttpd.install create mode 100644 abs/core/lighttpd/lighttpd.logrotate.d create mode 100644 abs/core/lighttpd/lighttpd.rc.d create mode 100755 abs/core/linhes-scripts/770-wrapper.sh create mode 100644 abs/core/linhes-scripts/PKGBUILD create mode 100755 abs/core/linhes-scripts/idle.sh create mode 100755 abs/core/linhes-scripts/importfiles.sh create mode 100755 abs/core/linhes-scripts/limit-mythcommflag.sh create mode 100644 abs/core/linhes-scripts/linhes_update.sh create mode 100644 abs/core/linhes-scripts/linhes_update2.sh create mode 100644 abs/core/linhes-scripts/linhes_update3.sh create mode 100755 abs/core/linhes-scripts/mplayer-resumer-vdpau.pl create mode 100755 abs/core/linhes-scripts/mplayer-resumer.pl create mode 100755 abs/core/linhes-scripts/myth2mp3 create mode 100755 abs/core/linhes-scripts/myth2x264 create mode 100755 abs/core/linhes-scripts/myth2xvid create mode 100755 abs/core/linhes-scripts/mythwelcome-set-alarm.sh create mode 100755 abs/core/linhes-scripts/mythwelcome-test-wakeup.sh create mode 100755 abs/core/linhes-scripts/pause-mythcommflag.sh create mode 100755 abs/core/linhes-scripts/pause_mythcommflag create mode 100755 abs/core/linhes-scripts/run-limit-mythcommflag create mode 100755 abs/core/linhes-scripts/run-pause-mythcommflag create mode 100755 abs/core/linhes-scripts/screenshooter.sh create mode 100755 abs/core/linhes-scripts/shootscreens-mythtv.sh create mode 100755 abs/core/linhes-scripts/shootscreens.sh create mode 100755 abs/core/linhes-scripts/vdpau-detector create mode 100644 abs/core/linhes-sounds/PKGBUILD create mode 100644 abs/core/linhes-sounds/beg.wav create mode 100644 abs/core/linhes-sounds/complete.wav create mode 100644 abs/core/linhes-sounds/end.wav create mode 100644 abs/core/linhes-sounds/fail.wav create mode 100644 abs/core/linhes-sounds/half_second_of_silence.wav create mode 100644 abs/core/linhes-sounds/init.wav create mode 100644 abs/core/linhes-sounds/restore.wav create mode 100644 abs/core/linhes-sounds/restored.wav create mode 100644 abs/core/linhes-sounds/rf.wav create mode 100644 abs/core/linhes-sounds/testing.wav create mode 100644 abs/core/linhes-sounds/vr.wav create mode 100644 abs/core/linhes-splash/1024x768.cfg create mode 100644 abs/core/linhes-splash/800x600.cfg create mode 100644 abs/core/linhes-splash/PKGBUILD create mode 100644 abs/core/linhes-splash/Vera.copyright create mode 100644 abs/core/linhes-splash/Vera.ttf create mode 100644 abs/core/linhes-splash/__changelog create mode 100644 abs/core/linhes-splash/background-1024x768.png create mode 100644 abs/core/linhes-splash/background-800x600.png create mode 100644 abs/core/linhes-splash/verbose-1024x768.png create mode 100644 abs/core/linhes-splash/verbose-800x600.png create mode 100644 abs/core/linux-atm/PKGBUILD create mode 100644 abs/core/linux-atm/linux-atm-2.5.0-glibc28.patch create mode 100755 abs/core/lirc-utils/hw_commandir.c create mode 100755 abs/core/lirc-utils/hw_commandir.h create mode 100644 abs/core/lirc-utils/lirc_atiusb.patch create mode 100644 abs/core/lirc/dvicoIR.rules create mode 100755 abs/core/lirc/hw_commandir.c create mode 100755 abs/core/lirc/hw_commandir.h create mode 100644 abs/core/lirc/kernel-2.6.27.patch create mode 100644 abs/core/lirc/lirc.fdi create mode 100644 abs/core/lirc/lirc_atiusb.patch create mode 100644 abs/core/lirc/lirc_mod_mce.patch create mode 100644 abs/core/live-media/PKGBUILD create mode 100644 abs/core/local-website/PKGBUILD create mode 100644 abs/core/local-website/htdocs/KnoppMyth.css create mode 100644 abs/core/local-website/htdocs/favicon.ico create mode 100644 abs/core/local-website/htdocs/fuppes.php create mode 100644 abs/core/local-website/htdocs/header.png create mode 100644 abs/core/local-website/htdocs/index.html create mode 100644 abs/core/local-website/htdocs/layout.css create mode 100644 abs/core/local-website/htdocs/linhes.html create mode 100755 abs/core/local-website/htdocs/mediaserv.php create mode 100644 abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps create mode 100644 abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/Makefile create mode 100644 abs/core/local-website/htdocs/mythtv-doc/add.eps create mode 100644 abs/core/local-website/htdocs/mythtv-doc/add.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp create mode 100644 abs/core/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg create mode 100644 abs/core/local-website/htdocs/mythtv-doc/doxygen.perl.patch create mode 100644 abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops create mode 100644 abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/entries create mode 100644 abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/format create mode 100644 abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base create mode 100644 abs/core/local-website/htdocs/mythtv-doc/i18n/keys_de.txt create mode 100644 abs/core/local-website/htdocs/mythtv-doc/index.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/keys.txt create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml create mode 100644 abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt create mode 100644 abs/core/local-website/htdocs/mythtv-doc/stop.eps create mode 100644 abs/core/local-website/htdocs/mythtv-doc/stop.png create mode 100644 abs/core/local-website/htdocs/mythtv-doc/warning.eps create mode 100644 abs/core/local-website/htdocs/mythtv-doc/warning.png create mode 100644 abs/core/local-website/htdocs/remote/COPYING create mode 100644 abs/core/local-website/htdocs/remote/CREDITS create mode 100644 abs/core/local-website/htdocs/remote/Changelog create mode 100644 abs/core/local-website/htdocs/remote/Issues create mode 100644 abs/core/local-website/htdocs/remote/README create mode 100644 abs/core/local-website/htdocs/remote/backend.php create mode 100644 abs/core/local-website/htdocs/remote/csshover.htc create mode 100644 abs/core/local-website/htdocs/remote/images/blank.gif create mode 100644 abs/core/local-website/htdocs/remote/images/button_30.png create mode 100644 abs/core/local-website/htdocs/remote/images/button_30g.png create mode 100644 abs/core/local-website/htdocs/remote/images/button_30r.png create mode 100644 abs/core/local-website/htdocs/remote/images/button_text.png create mode 100644 abs/core/local-website/htdocs/remote/images/button_textg.png create mode 100644 abs/core/local-website/htdocs/remote/images/button_textr.png create mode 100644 abs/core/local-website/htdocs/remote/images/down.png create mode 100644 abs/core/local-website/htdocs/remote/images/down_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/down_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/fast_forward.png create mode 100644 abs/core/local-website/htdocs/remote/images/fast_forward_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/fast_forward_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/fast_rewind.png create mode 100644 abs/core/local-website/htdocs/remote/images/fast_rewind_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/fast_rewind_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/left.png create mode 100644 abs/core/local-website/htdocs/remote/images/left_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/left_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/ok.png create mode 100644 abs/core/local-website/htdocs/remote/images/ok_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/ok_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/pause.png create mode 100644 abs/core/local-website/htdocs/remote/images/pause_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/pause_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/rec.png create mode 100644 abs/core/local-website/htdocs/remote/images/rec_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/rec_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/right.png create mode 100644 abs/core/local-website/htdocs/remote/images/right_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/right_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/skip_back.png create mode 100644 abs/core/local-website/htdocs/remote/images/skip_back_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/skip_back_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/skip_forward.png create mode 100644 abs/core/local-website/htdocs/remote/images/skip_forward_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/skip_forward_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/stop.png create mode 100644 abs/core/local-website/htdocs/remote/images/stop_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/stop_r.png create mode 100644 abs/core/local-website/htdocs/remote/images/up.png create mode 100644 abs/core/local-website/htdocs/remote/images/up_g.png create mode 100644 abs/core/local-website/htdocs/remote/images/up_r.png create mode 100644 abs/core/local-website/htdocs/remote/inc/process.php create mode 100644 abs/core/local-website/htdocs/remote/index.html create mode 100644 abs/core/local-website/htdocs/remote/layout-wide.html create mode 100644 abs/core/local-website/htdocs/remote/layout.html create mode 100644 abs/core/local-website/htdocs/remote/nav.php create mode 100644 abs/core/local-website/htdocs/remote/num.php create mode 100644 abs/core/local-website/htdocs/remote/pda.php create mode 100644 abs/core/local-website/htdocs/remote/remote-wide.html create mode 100644 abs/core/local-website/htdocs/remote/remote-wide.php create mode 100644 abs/core/local-website/htdocs/remote/remote.css create mode 100644 abs/core/local-website/htdocs/remote/remote.html create mode 100644 abs/core/local-website/htdocs/remote/remote.php create mode 100644 abs/core/local-website/htdocs/remote/svg/button.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/button_30.xcf create mode 100644 abs/core/local-website/htdocs/remote/svg/button_g.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/button_r.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/down.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/fast_forward.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/fast_rewind.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/left.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/ok.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/pause.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/rec.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/right.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/scratch.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/skip_back.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/skip_forward.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/stop.svg create mode 100644 abs/core/local-website/htdocs/remote/svg/up.svg create mode 100644 abs/core/local-website/htdocs/rrd/Disabled create mode 100644 abs/core/local-website/htdocs/rrd/index.html create mode 100644 abs/core/local-website/htdocs/style.css create mode 100644 abs/core/lshw/PKGBUILD create mode 100644 abs/core/lshw/abi_stdlib.diff create mode 100644 abs/core/lshw/gcc4.3.patch create mode 100644 abs/core/m4/PKGBUILD create mode 100644 abs/core/m4/m4.install delete mode 100644 abs/core/mdadm/mdadm-2.2-segfault.patch create mode 100644 abs/core/media_dirs/PKGBUILD create mode 100644 abs/core/media_dirs/media_dirs.install create mode 100644 abs/core/mesa/mesa-7.1-link-shared.patch create mode 100644 abs/core/miscsplashutils/ChangeLog create mode 100644 abs/core/miscsplashutils/PKGBUILD create mode 100644 abs/core/miscsplashutils/miscsplashutils.install create mode 100644 abs/core/mjpegtools/1.9.patch create mode 100644 abs/core/mjpegtools/PKGBUILD create mode 100644 abs/core/mjpegtools/mjpegtools-1.8.0-gcc41.patch create mode 100644 abs/core/mjpegtools/mjpegtools-1.8.0-libc.patch create mode 100644 abs/core/mjpegtools/mjpegtools-1.8.0-limits.h.patch create mode 100644 abs/core/mkinitcpio/mkinitcpio.conf.diff create mode 100644 abs/core/mpfr/PKGBUILD create mode 100644 abs/core/mpfr/mpfr.install create mode 100644 abs/core/mplayer-wrapper/PKGBUILD create mode 100644 abs/core/mplayer-wrapper/mplayer-wrapper.install create mode 100755 abs/core/mplayer-wrapper/mplayer-wrapper.pl delete mode 100644 abs/core/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch delete mode 100644 abs/core/mplayer/demux_audio_fix_20080129.diff delete mode 100644 abs/core/mplayer/demux_mov_fix_20080129.diff delete mode 100644 abs/core/mplayer/ivtv_2.6.24.patch delete mode 100644 abs/core/mplayer/stream_cddb_fix_20080120.diff delete mode 100644 abs/core/mplayer/url_fix_20080120.diff create mode 100644 abs/core/mysql/__changelog create mode 100644 abs/core/mythinstall/PKGBUILD create mode 100755 abs/core/mythinstall/autocard.cpp create mode 100755 abs/core/mythinstall/autocard.h create mode 100755 abs/core/mythinstall/infrared.cpp create mode 100755 abs/core/mythinstall/infrared.h create mode 100755 abs/core/mythinstall/install-ui.xml create mode 100755 abs/core/mythinstall/install_proxy.sh create mode 100755 abs/core/mythinstall/installationtype.cpp create mode 100755 abs/core/mythinstall/installationtype.h create mode 100755 abs/core/mythinstall/installdialog.cpp create mode 100755 abs/core/mythinstall/installdialog.h create mode 100755 abs/core/mythinstall/installsettings.cpp create mode 100755 abs/core/mythinstall/installsettings.h create mode 100755 abs/core/mythinstall/main.cpp create mode 100755 abs/core/mythinstall/misc_settings.cpp create mode 100755 abs/core/mythinstall/misc_settings.h create mode 100755 abs/core/mythinstall/mv_common.h create mode 100755 abs/core/mythinstall/mythinstall.pro create mode 100755 abs/core/mythinstall/password_manage.cpp create mode 100755 abs/core/mythinstall/password_manage.h create mode 100755 abs/core/mythinstall/settemplate.cpp create mode 100755 abs/core/mythinstall/settemplate.h create mode 100755 abs/core/mythinstall/statusbox.cpp create mode 100755 abs/core/mythinstall/statusbox.h create mode 100755 abs/core/mythinstall/xorgsettings.cpp create mode 100755 abs/core/mythinstall/xorgsettings.h create mode 100644 abs/core/mythtv/stable/glass-wide/PKGBUILD create mode 100644 abs/core/mythtv/stable/linhes-theme/PKGBUILD create mode 100644 abs/core/mythtv/stable/morethemes/PKGBUILD create mode 100644 abs/core/mythtv/stable/mythdb-initial/__changelog create mode 100644 abs/core/mythtv/stable/mythmovies/PKGBUILD create mode 100644 abs/core/mythtv/stable/mythsmolt/PKGBUILD create mode 100644 abs/core/mythtv/stable/mythstream/PKGBUILD create mode 100644 abs/core/mythtv/stable/mythstream/mythstream.diff create mode 100644 abs/core/mythtv/stable/mythstream/mythstream.install create mode 100644 abs/core/mythtv/stable/mythtv/2.6.28_dvb_api_version.diff create mode 100644 abs/core/mythtv/stable/mythtv/gnome_screensaver.patch create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/HOST_SETTINGS.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/is.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/library.xml.patch create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/linhes.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/mainmenu.xml.patch create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/mythbackup.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/mythrestore.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/optical_menu.xml.patch create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/original/create_patch.sh create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/setup.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/siriusmenu.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/update.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/update2.xml create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/util_menu.xml.patch create mode 100644 abs/core/mythtv/stable/mythtv/menu-xml/xmmenu.xml create mode 100644 abs/core/mythtv/stable/mythtv/mpegpspatch create mode 100644 abs/core/mythtv/stable/mythtv/mythbackend.lr create mode 100644 abs/core/mythtv/stable/mythtv/mythfrontend.lr create mode 100644 abs/core/mythtv/stable/mythtv/myththemedmenu.cpp.patch create mode 100644 abs/core/mythtv/stable/mythtv/myththemedmenu.h.patch create mode 100644 abs/core/mythtv/stable/mythtv/pretty create mode 100644 abs/core/mythtv/stable/mythtv/smolt_jump.patch create mode 100644 abs/core/mythtv/stable/mythvideo/mythvideo-6338-use_tmdb_in_fixes.patch create mode 100644 abs/core/mythtv/stable/mythvideo/mythvideo.install create mode 100644 abs/core/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff create mode 100644 abs/core/mythtv/stable/mythweb/patch/icons.tar.gz create mode 100644 abs/core/mythtv/stable/mythweb/patch/mythweb.pl.diff create mode 100644 abs/core/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff create mode 100644 abs/core/mythtv/stable/mythweb/transcoders.patch create mode 100644 abs/core/mythtv/stable/mythweb/wiiweb.tar.bz2 create mode 100644 abs/core/mythtv/stable/mythzoneminder/PKGBUILD create mode 100755 abs/core/mythtv/trunk/clean_all.sh create mode 100644 abs/core/mythtv/trunk/morethemes/PKGBUILD create mode 100755 abs/core/mythtv/trunk/mp_all.sh create mode 100644 abs/core/mythtv/trunk/mytharchive/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythbrowser/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythflix/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythgallery/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythgame/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythmovies/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythmusic/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythnews/PKGBUILD create mode 100755 abs/core/mythtv/trunk/myththemes/PKGBUILD create mode 100755 abs/core/mythtv/trunk/mythtv/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/is.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/linhes.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/mythbackup.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/mythrestore.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/optical_menu.xml.patch create mode 100755 abs/core/mythtv/trunk/mythtv/menu-xml/original/create_patch.sh create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/setup.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/siriusmenu.xml create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/util_menu.xml.patch create mode 100644 abs/core/mythtv/trunk/mythtv/menu-xml/xmmenu.xml create mode 100755 abs/core/mythtv/trunk/mythtv/myth.sh create mode 100755 abs/core/mythtv/trunk/mythtv/mythbackend create mode 100644 abs/core/mythtv/trunk/mythtv/mythbackend.lr create mode 100755 abs/core/mythtv/trunk/mythtv/mythbackend.sh create mode 100644 abs/core/mythtv/trunk/mythtv/mythfrontend.lr create mode 100755 abs/core/mythtv/trunk/mythtv/mythtv.install create mode 100755 abs/core/mythtv/trunk/mythtv/pretty create mode 100644 abs/core/mythtv/trunk/mythtv/smolt_jump.patch create mode 100644 abs/core/mythtv/trunk/mythvideo/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythweather/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythweb/PKGBUILD create mode 100644 abs/core/mythtv/trunk/mythweb/mythweb.install create mode 100644 abs/core/mythtv/trunk/mythzoneminder/PKGBUILD create mode 100644 abs/core/nasm/PKGBUILD create mode 100644 abs/core/ncurses/ChangeLog create mode 100644 abs/core/ndiswrapper/kernel-2.6.27.patch create mode 100644 abs/core/ndiswrapper/ndiswrapper-CVE-2008-4395.patch create mode 100644 abs/core/netkit-telnet/PKGBUILD create mode 100644 abs/core/netkit-telnet/netkit-telnet-0.17.patch create mode 100644 abs/core/netkit-telnet/telnet.xinetd create mode 100644 abs/core/nfs-utils/PKGBUILD create mode 100644 abs/core/nfs-utils/exports create mode 100644 abs/core/nfs-utils/nfs-utils.install create mode 100644 abs/core/nfs-utils/nfs.conf.d create mode 100755 abs/core/nfs-utils/nfsd create mode 100755 abs/core/nfs-utils/nfslock create mode 100644 abs/core/nfs-utils/start-statd.patch create mode 100644 abs/core/nfsidmap/PKGBUILD create mode 100755 abs/core/nmbscan/PKGBUILD create mode 100644 abs/core/ntfs-3g/20-ntfs-config-write-policy.fdi create mode 100644 abs/core/ntfs-3g/PKGBUILD create mode 100644 abs/core/ntfs-3g/ntfs-3g.install create mode 100755 abs/core/ntp/PKGBUILD create mode 100755 abs/core/ntp/ntp-client.conf create mode 100755 abs/core/ntp/ntp.conf create mode 100755 abs/core/ntp/ntpd create mode 100755 abs/core/ntp/ntpdate create mode 100755 abs/core/nuvexport/MP4.pm create mode 100755 abs/core/nuvexport/XviD.pm create mode 100644 abs/core/nvidia-71xx-utils/PKGBUILD create mode 100644 abs/core/nvidia-71xx-utils/nvidia-71xx.install create mode 100644 abs/core/nvidia-71xx-utils/supported-cards.txt create mode 100644 abs/core/nvidia-71xx/NVIDIA_kernel-96.43.05-2290218.diff.txt create mode 100644 abs/core/nvidia-71xx/PKGBUILD create mode 100644 abs/core/nvidia-71xx/nvidia-71xx.install create mode 100644 abs/core/nvidia-96xx-utils/PKGBUILD create mode 100644 abs/core/nvidia-96xx-utils/nvidia-96xx.install create mode 100644 abs/core/nvidia-96xx-utils/supported-cards.txt create mode 100644 abs/core/nvidia-96xx/NVIDIA_173.14.12_2.6.27.patch create mode 100644 abs/core/nvidia-96xx/PKGBUILD create mode 100644 abs/core/nvidia-96xx/nvidia-96xx.install create mode 100644 abs/core/nvidia-utils/PKGBUILD create mode 100644 abs/core/nvidia-utils/nvidia.install create mode 100644 abs/core/nvidia-utils/supported-cards.txt create mode 100644 abs/core/nvidia/NVIDIA_kernel-169.12-2286310.diff create mode 100644 abs/core/nvidia/PKGBUILD create mode 100644 abs/core/nvidia/nvidia.install create mode 100644 abs/core/openssh/sshd.patch create mode 100644 abs/core/openssh/sshd_config.diff create mode 100644 abs/core/pacman-mirrorlist/PKGBUILD create mode 100644 abs/core/pacman-mirrorlist/mirrorlist create mode 100644 abs/core/pango/bgo563356.patch create mode 100644 abs/core/parted/__changelog create mode 100644 abs/core/patch/PKGBUILD create mode 100644 abs/core/perl-xml-dom/PKGBUILD create mode 100644 abs/core/perl_modules/perl-algorithm-diff/PKGBUILD create mode 100644 abs/core/perl_modules/perl-astro-suntime/PKGBUILD create mode 100644 abs/core/perl_modules/perl-class-data-inheritable/PKGBUILD create mode 100644 abs/core/perl_modules/perl-class-singleton/PKGBUILD create mode 100644 abs/core/perl_modules/perl-compress-raw-zlib/PKGBUILD create mode 100644 abs/core/perl_modules/perl-compress-zlib/PKGBUILD create mode 100644 abs/core/perl_modules/perl-config-simple/PKGBUILD create mode 100644 abs/core/perl_modules/perl-data-dumper/PKGBUILD create mode 100644 abs/core/perl_modules/perl-datetime-format-mail/PKGBUILD create mode 100644 abs/core/perl_modules/perl-datetime-format-strptime/ChangeLog create mode 100644 abs/core/perl_modules/perl-datetime-format-strptime/PKGBUILD create mode 100644 abs/core/perl_modules/perl-datetime-format-w3cdtf/PKGBUILD create mode 100644 abs/core/perl_modules/perl-datetime-locale/PKGBUILD create mode 100644 abs/core/perl_modules/perl-datetime-timezone/ChangeLog create mode 100644 abs/core/perl_modules/perl-datetime-timezone/PKGBUILD create mode 100644 abs/core/perl_modules/perl-datetime/PKGBUILD create mode 100644 abs/core/perl_modules/perl-devel-stacktrace/PKGBUILD create mode 100644 abs/core/perl_modules/perl-device-serialport/PKGBUILD create mode 100644 abs/core/perl_modules/perl-digest-sha1/PKGBUILD create mode 100644 abs/core/perl_modules/perl-error/PKGBUILD create mode 100644 abs/core/perl_modules/perl-exception-class/PKGBUILD create mode 100644 abs/core/perl_modules/perl-getopt-long/PKGBUILD create mode 100644 abs/core/perl_modules/perl-getopt-lucid/PKGBUILD create mode 100644 abs/core/perl_modules/perl-image-size/PKGBUILD create mode 100644 abs/core/perl_modules/perl-io-compress-zlib/PKGBUILD create mode 100644 abs/core/perl_modules/perl-javascript/PKGBUILD create mode 100644 abs/core/perl_modules/perl-libxml/PKGBUILD create mode 100644 abs/core/perl_modules/perl-libxml/perl-libxml.install create mode 100644 abs/core/perl_modules/perl-list-compare/PKGBUILD create mode 100644 abs/core/perl_modules/perl-list-member/PKGBUILD create mode 100644 abs/core/perl_modules/perl-list-moreutils/PKGBUILD create mode 100644 abs/core/perl_modules/perl-locale-gettext/PKGBUILD create mode 100644 abs/core/perl_modules/perl-log-dispatch/PKGBUILD create mode 100644 abs/core/perl_modules/perl-log-log4perl/PKGBUILD create mode 100644 abs/core/perl_modules/perl-mime-parser/PKGBUILD create mode 100755 abs/core/perl_modules/perl-net-upnp/PKGBUILD create mode 100644 abs/core/perl_modules/perl-net-upnp/perl-config-simple/PKGBUILD create mode 100644 abs/core/perl_modules/perl-params-validate/PKGBUILD create mode 100644 abs/core/perl_modules/perl-pathtools/PKGBUILD create mode 100644 abs/core/perl_modules/perl-pathtools/license.txt create mode 100644 abs/core/perl_modules/perl-php-serialization/PKGBUILD create mode 100644 abs/core/perl_modules/perl-proc-daemon/PKGBUILD create mode 100644 abs/core/perl_modules/perl-proc-pid-file/PKGBUILD create mode 100644 abs/core/perl_modules/perl-test-pod/PKGBUILD create mode 100644 abs/core/perl_modules/perl-time-format/PKGBUILD create mode 100644 abs/core/perl_modules/perl-time-modules/PKGBUILD create mode 100644 abs/core/perl_modules/perl-unicode-map/PKGBUILD create mode 100644 abs/core/perl_modules/perl-x10/PKGBUILD create mode 100644 abs/core/perl_modules/perl-xml-libxslt/PKGBUILD create mode 100644 abs/core/perl_modules/perl-xml-parser/PKGBUILD create mode 100644 abs/core/perl_modules/perl-xml-regexp/PKGBUILD create mode 100644 abs/core/perl_modules/perl-xml-rss/PKGBUILD create mode 100644 abs/core/php/__changelog create mode 100644 abs/core/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch create mode 100644 abs/core/portmap/PKGBUILD create mode 100644 abs/core/portmap/gcc3-errno_h.patch create mode 100755 abs/core/portmap/portmap create mode 100644 abs/core/portmap/portmap_5beta.patch.bz2 create mode 100644 abs/core/projectm/PKGBUILD create mode 100644 abs/core/projectm/projectm.install create mode 100644 abs/core/pvr150-firmware/PKGBUILD create mode 100644 abs/core/pycairo/pycairo-1.8.0-threading.diff create mode 100755 abs/core/python-iplib/PKGBUILD create mode 100644 abs/core/python-netifaces/PKGBUILD create mode 100644 abs/core/python-parted/PKGBUILD create mode 100644 abs/core/python/ChangeLog create mode 100644 abs/core/python/python-2.6-gdbm.patch create mode 100644 abs/core/python/python-2.6-internal-expat.patch create mode 100644 abs/core/qt/PKGBUILD create mode 100644 abs/core/qt/__changelog create mode 100644 abs/core/qt/assistant.desktop create mode 100644 abs/core/qt/designer.desktop create mode 100644 abs/core/qt/linguist.desktop create mode 100644 abs/core/qt/qdoc3.patch create mode 100644 abs/core/qt/qtconfig.desktop create mode 100644 abs/core/resourceproto/PKGBUILD create mode 100644 abs/core/rsync/ChangeLog create mode 100644 abs/core/rsync/PKGBUILD create mode 100644 abs/core/rsync/rsync.xinetd create mode 100644 abs/core/rsync/rsyncd create mode 100644 abs/core/rsync/rsyncd.conf create mode 100644 abs/core/rt2500/kernel-2.6.27.patch create mode 100755 abs/core/runit-scripts/PKGBUILD create mode 100755 abs/core/runit-scripts/fbsplash-runit.sh create mode 100755 abs/core/runit-scripts/runit.install create mode 100755 abs/core/runit-scripts/runitscripts/1 create mode 100755 abs/core/runit-scripts/runitscripts/1.local create mode 100755 abs/core/runit-scripts/runitscripts/2 create mode 100755 abs/core/runit-scripts/runitscripts/3 create mode 100755 abs/core/runit-scripts/runitscripts/ctrlaltdel create mode 100755 abs/core/runit-scripts/runitscripts/ctrlaltdel.off create mode 100755 abs/core/runit-scripts/runitscripts/halt-runit create mode 100755 abs/core/runit-scripts/runitscripts/logger create mode 100755 abs/core/runit-scripts/runitscripts/reboot-runit create mode 100755 abs/core/runit-scripts/runitscripts/services/Xvfb/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/Xvfb/run create mode 100755 abs/core/runit-scripts/runitscripts/services/acpid/log/run create mode 100755 abs/core/runit-scripts/runitscripts/services/acpid/run create mode 100755 abs/core/runit-scripts/runitscripts/services/alsa-utils/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/alsa-utils/run create mode 100755 abs/core/runit-scripts/runitscripts/services/apache/run create mode 100755 abs/core/runit-scripts/runitscripts/services/avahi/run create mode 100755 abs/core/runit-scripts/runitscripts/services/cron/run create mode 100755 abs/core/runit-scripts/runitscripts/services/dbus/run create mode 100755 abs/core/runit-scripts/runitscripts/services/dhcpd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/dnsmasq/run create mode 100755 abs/core/runit-scripts/runitscripts/services/evrouter/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/evrouter/run create mode 100755 abs/core/runit-scripts/runitscripts/services/frontend/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/frontend/log/run create mode 100755 abs/core/runit-scripts/runitscripts/services/frontend/run create mode 100755 abs/core/runit-scripts/runitscripts/services/gpm/run create mode 100755 abs/core/runit-scripts/runitscripts/services/hal/run create mode 100755 abs/core/runit-scripts/runitscripts/services/hobbit-client/run create mode 100755 abs/core/runit-scripts/runitscripts/services/hobbit/run create mode 100755 abs/core/runit-scripts/runitscripts/services/igdaemon/run create mode 100755 abs/core/runit-scripts/runitscripts/services/lcdd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/lighttpd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/lircd/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/lircd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/mdadm/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/mdadm/run create mode 100755 abs/core/runit-scripts/runitscripts/services/mysql/run create mode 100755 abs/core/runit-scripts/runitscripts/services/mythbackend/log/run create mode 100755 abs/core/runit-scripts/runitscripts/services/mythbackend/run create mode 100644 abs/core/runit-scripts/runitscripts/services/ncid/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/ncid/run create mode 100644 abs/core/runit-scripts/runitscripts/services/ncidd/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/ncidd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/netfs/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/netfs/run create mode 100755 abs/core/runit-scripts/runitscripts/services/nfsd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/nfslock/run create mode 100755 abs/core/runit-scripts/runitscripts/services/nmbd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/ntpd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/oss/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/oss/run create mode 100755 abs/core/runit-scripts/runitscripts/services/portmap/run create mode 100755 abs/core/runit-scripts/runitscripts/services/smartd/finish create mode 100755 abs/core/runit-scripts/runitscripts/services/smartd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/smbd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/sshd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/syslog-ng/run create mode 100755 abs/core/runit-scripts/runitscripts/services/tatir/run create mode 100755 abs/core/runit-scripts/runitscripts/services/tftpd/run create mode 100755 abs/core/runit-scripts/runitscripts/services/tty2/run create mode 100755 abs/core/runit-scripts/runitscripts/services/tty3/run delete mode 100755 abs/core/runit/runitscripts/1 delete mode 100755 abs/core/runit/runitscripts/2 delete mode 100755 abs/core/runit/runitscripts/3 delete mode 100755 abs/core/runit/runitscripts/ctrlaltdel delete mode 100755 abs/core/runit/runitscripts/halt-runit delete mode 100755 abs/core/runit/runitscripts/logger delete mode 100755 abs/core/runit/runitscripts/reboot-runit delete mode 100755 abs/core/runit/runitscripts/services/Xvfb/finish delete mode 100755 abs/core/runit/runitscripts/services/Xvfb/run delete mode 100755 abs/core/runit/runitscripts/services/acpid/run delete mode 100755 abs/core/runit/runitscripts/services/alsa-utils/finish delete mode 100755 abs/core/runit/runitscripts/services/alsa-utils/run delete mode 100755 abs/core/runit/runitscripts/services/apache/run delete mode 100755 abs/core/runit/runitscripts/services/avahi/run delete mode 100755 abs/core/runit/runitscripts/services/cron/run delete mode 100755 abs/core/runit/runitscripts/services/dbus/run delete mode 100755 abs/core/runit/runitscripts/services/dnsmasq/run delete mode 100755 abs/core/runit/runitscripts/services/evrouter/finish delete mode 100755 abs/core/runit/runitscripts/services/evrouter/run delete mode 100755 abs/core/runit/runitscripts/services/frontend/finish delete mode 100755 abs/core/runit/runitscripts/services/frontend/log/run delete mode 100755 abs/core/runit/runitscripts/services/frontend/run delete mode 100755 abs/core/runit/runitscripts/services/gpm/run delete mode 100755 abs/core/runit/runitscripts/services/hal/run delete mode 100755 abs/core/runit/runitscripts/services/hobbit-client/run delete mode 100755 abs/core/runit/runitscripts/services/hobbit/run delete mode 100755 abs/core/runit/runitscripts/services/lcdd/run delete mode 100755 abs/core/runit/runitscripts/services/lighttpd/run delete mode 100755 abs/core/runit/runitscripts/services/lircd/finish delete mode 100755 abs/core/runit/runitscripts/services/lircd/run delete mode 100755 abs/core/runit/runitscripts/services/mysql/run delete mode 100755 abs/core/runit/runitscripts/services/mythbackend/log/run delete mode 100755 abs/core/runit/runitscripts/services/mythbackend/run delete mode 100755 abs/core/runit/runitscripts/services/ncid/run delete mode 100755 abs/core/runit/runitscripts/services/ncidd/run delete mode 100755 abs/core/runit/runitscripts/services/netfs/finish delete mode 100755 abs/core/runit/runitscripts/services/netfs/run delete mode 100755 abs/core/runit/runitscripts/services/nfsd/run delete mode 100755 abs/core/runit/runitscripts/services/nfslock/run delete mode 100755 abs/core/runit/runitscripts/services/nmbd/run delete mode 100755 abs/core/runit/runitscripts/services/ntpd/run delete mode 100755 abs/core/runit/runitscripts/services/oss/finish delete mode 100755 abs/core/runit/runitscripts/services/oss/run delete mode 100755 abs/core/runit/runitscripts/services/portmap/run delete mode 100755 abs/core/runit/runitscripts/services/smbd/run delete mode 100755 abs/core/runit/runitscripts/services/sshd/run delete mode 100755 abs/core/runit/runitscripts/services/syslog-ng/run delete mode 100755 abs/core/runit/runitscripts/services/tty2/run delete mode 100755 abs/core/runit/runitscripts/services/tty3/run create mode 100755 abs/core/runit/shutdown.script create mode 100644 abs/core/samba/PKGBUILD create mode 100644 abs/core/samba/__changelog create mode 100644 abs/core/samba/heimdal.patch create mode 100644 abs/core/samba/no-clients.patch create mode 100755 abs/core/samba/samba create mode 100644 abs/core/samba/samba-3.0.21a-ntlmssp.patch create mode 100644 abs/core/samba/samba.conf.d create mode 100644 abs/core/samba/samba.logrotate create mode 100644 abs/core/samba/samba.pam create mode 100644 abs/core/samba/swat.xinetd create mode 100644 abs/core/sdl/__changelog create mode 100644 abs/core/sdl/sdl-1.2.13-dynaminc-esd.patch create mode 100644 abs/core/setserial/PKGBUILD create mode 100644 abs/core/setserial/setserial.patch create mode 100644 abs/core/setuptools/PKGBUILD create mode 100644 abs/core/shadow/defaults.pam create mode 100644 abs/core/shadow/useradd.defaults create mode 100644 abs/core/shared-mime-info/PKGBUILD create mode 100644 abs/core/shared-mime-info/shared-mime-info.install create mode 100644 abs/core/sharutils/PKGBUILD delete mode 100644 abs/core/smbclient/heimdal.patch create mode 100644 abs/core/sqlite3/PKGBUILD create mode 100644 abs/core/sqlite3/build_fts_as_part_of_libsqlite.patch create mode 100644 abs/core/sqlite3/license.txt create mode 100644 abs/core/sqlite3/sqlite-3.5.8-pkgconfig-version.patch create mode 100755 abs/core/system-templates/PKGBUILD create mode 100644 abs/core/system-templates/templates/LCD/Shuttle-SG33/LCDd.conf create mode 100644 abs/core/system-templates/templates/LCD/Silverstone/LCDd.conf create mode 100644 abs/core/system-templates/templates/LCD/Silverstone/modules create mode 100644 abs/core/system-templates/templates/LCD/antec_fusion/LCDd.conf create mode 100644 abs/core/system-templates/templates/LCD/antec_fusion/lircd.conf create mode 100644 abs/core/system-templates/templates/LCD/antec_fusion/lircrc create mode 100644 abs/core/system-templates/templates/LCD/antec_fusion/modules create mode 100644 abs/core/system-templates/templates/LCD/xosd/LCDd.conf create mode 100755 abs/core/system-templates/templates/cc.orig.sh create mode 100755 abs/core/system-templates/templates/cc.sh create mode 100755 abs/core/system-templates/templates/cc_vol.sh create mode 100755 abs/core/system-templates/templates/change_chan.sh create mode 100644 abs/core/system-templates/templates/cron.template create mode 100644 abs/core/system-templates/templates/etcnet/eth/ipv4address create mode 100644 abs/core/system-templates/templates/etcnet/eth/ipv4route create mode 100644 abs/core/system-templates/templates/etcnet/eth/iwconfig create mode 100644 abs/core/system-templates/templates/etcnet/eth/options create mode 100644 abs/core/system-templates/templates/evrouter/MythVantage-4 create mode 100644 abs/core/system-templates/templates/evrouter/MythVantage-8 create mode 100644 abs/core/system-templates/templates/evrouter/MythVantage-Full create mode 100644 abs/core/system-templates/templates/evrouter/MythVantage8-minipac create mode 100644 abs/core/system-templates/templates/evrouter/MythVantage8-uhid create mode 100644 abs/core/system-templates/templates/exports.template create mode 100755 abs/core/system-templates/templates/fstab.conf.template create mode 100644 abs/core/system-templates/templates/gscreensavers create mode 100644 abs/core/system-templates/templates/modules/lirc_i2c.conf create mode 100644 abs/core/system-templates/templates/mysql.service create mode 100755 abs/core/system-templates/templates/mysql.txt create mode 100755 abs/core/system-templates/templates/ncid.conf.template create mode 100644 abs/core/system-templates/templates/ncidd.conf.template create mode 100755 abs/core/system-templates/templates/real_change_chan.sh create mode 100644 abs/core/system-templates/templates/remotes/AOpen-EA65/lircd.conf.ea65 create mode 100644 abs/core/system-templates/templates/remotes/AOpen-EA65/lircrc.ea65 create mode 100644 abs/core/system-templates/templates/remotes/AOpen-EA65/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.asus create mode 100644 abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.digimatrix create mode 100644 abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircd.conf create mode 100644 abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircrc create mode 100644 abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircd.conf create mode 100644 abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircrc create mode 100644 abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Avermedia_77x/lircd-avermedia77x.conf create mode 100755 abs/core/system-templates/templates/remotes/Avermedia_77x/lircrc-avermedia771.txt create mode 100644 abs/core/system-templates/templates/remotes/Avermedia_77x/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Avermedia_98/lircd-avermedia98.conf create mode 100755 abs/core/system-templates/templates/remotes/Avermedia_98/lircrc-avermedia98.txt create mode 100644 abs/core/system-templates/templates/remotes/Avermedia_98/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Avertv_USB/lircd-avertvusb.conf create mode 100755 abs/core/system-templates/templates/remotes/Avertv_USB/lircrc-avertvusb.txt create mode 100644 abs/core/system-templates/templates/remotes/Avertv_USB/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Cinergy/lircd-cinergy400600.conf create mode 100755 abs/core/system-templates/templates/remotes/Cinergy/lircrc-cinergy400600.txt create mode 100644 abs/core/system-templates/templates/remotes/Cinergy/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Cinergy_1400/lircd-cinergy1400.conf create mode 100755 abs/core/system-templates/templates/remotes/Cinergy_1400/lircrc-cinergy1400.txt create mode 100644 abs/core/system-templates/templates/remotes/Cinergy_1400/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Cinergy_T2/lircd-cinergyT2.conf create mode 100755 abs/core/system-templates/templates/remotes/Cinergy_T2/lircrc-cinergyT2.txt create mode 100644 abs/core/system-templates/templates/remotes/Cinergy_T2/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Compro/lircd-compro.conf create mode 100755 abs/core/system-templates/templates/remotes/Compro/lircrc-compro.txt create mode 100644 abs/core/system-templates/templates/remotes/Compro/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircd.conf.dvico-dual-digital4 create mode 100644 abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircrc.dvico-dual-digital4 create mode 100644 abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Flyvideo_2000/lircd-flyvideo2000.conf create mode 100755 abs/core/system-templates/templates/remotes/Flyvideo_2000/lircrc-flyvideo2000.txt create mode 100644 abs/core/system-templates/templates/remotes/Flyvideo_2000/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Flyvideo_3000/lircd-flyvideo3000.conf create mode 100755 abs/core/system-templates/templates/remotes/Flyvideo_3000/lircrc-flyvideo3000.txt create mode 100644 abs/core/system-templates/templates/remotes/Flyvideo_3000/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Hercules/lircd-hercules.conf create mode 100755 abs/core/system-templates/templates/remotes/Hercules/lircrc-hercules.txt create mode 100644 abs/core/system-templates/templates/remotes/Hercules/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Kworld_110/lircd-kworld110.conf create mode 100755 abs/core/system-templates/templates/remotes/Kworld_110/lircrc-kworld110.txt create mode 100644 abs/core/system-templates/templates/remotes/Kworld_110/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Kworld_220/lircd-kworld220.conf create mode 100755 abs/core/system-templates/templates/remotes/Kworld_220/lircrc-kworld220.txt create mode 100644 abs/core/system-templates/templates/remotes/Kworld_220/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Kworld_310/lircd-kworld310.conf create mode 100755 abs/core/system-templates/templates/remotes/Kworld_310/lircrc-kworld310.txt create mode 100644 abs/core/system-templates/templates/remotes/Kworld_310/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Kworld_DVBT/lircd-kworlddvbt.conf create mode 100755 abs/core/system-templates/templates/remotes/Kworld_DVBT/lircrc-kworlddvbt.txt create mode 100644 abs/core/system-templates/templates/remotes/Kworld_DVBT/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Kworld_tv878/lircd-kworldtv878.conf create mode 100755 abs/core/system-templates/templates/remotes/Kworld_tv878/lircrc-kworldv878.txt create mode 100644 abs/core/system-templates/templates/remotes/Kworld_tv878/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircd-leadtek2000xp.conf create mode 100755 abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircrc-leadtek2000xp.txt create mode 100644 abs/core/system-templates/templates/remotes/Leadtek_2000XP/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Leadtek_PVR/lircd-leadtekPVR.conf create mode 100755 abs/core/system-templates/templates/remotes/Leadtek_PVR/lircrc-leadtekPVR.txt create mode 100644 abs/core/system-templates/templates/remotes/Leadtek_PVR/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Lifeview/lircd-lifeview.conf create mode 100755 abs/core/system-templates/templates/remotes/Lifeview/lircrc-lifeview.txt create mode 100644 abs/core/system-templates/templates/remotes/Lifeview/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/MX-500-jams/lircd.conf.MX-500-JAMS create mode 100644 abs/core/system-templates/templates/remotes/MX-500-jams/lircrc create mode 100644 abs/core/system-templates/templates/remotes/MX-500-jams/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Medion_RF/lircd-medion-rf.conf create mode 100755 abs/core/system-templates/templates/remotes/Medion_RF/lircrc-medion-rf.txt create mode 100644 abs/core/system-templates/templates/remotes/Medion_RF/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Medion_X10_8080/lircd-medionx10-8080.conf create mode 100755 abs/core/system-templates/templates/remotes/Medion_X10_8080/lircrc-medionx10-8080.txt create mode 100644 abs/core/system-templates/templates/remotes/Medion_X10_8080/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Medion_X10_8802/lircd-medionx10-8802.conf create mode 100755 abs/core/system-templates/templates/remotes/Medion_X10_8802/lircrc-medionx10-8802.txt create mode 100644 abs/core/system-templates/templates/remotes/Medion_X10_8802/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/MythVantage-one/lircd.conf create mode 100755 abs/core/system-templates/templates/remotes/MythVantage-one/lircrc create mode 100644 abs/core/system-templates/templates/remotes/MythVantage-one/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nebula/lircd-nebula.conf create mode 100755 abs/core/system-templates/templates/remotes/Nebula/lircrc-nebula.txt create mode 100644 abs/core/system-templates/templates/remotes/Nebula/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nexus/lircd-nexus.conf create mode 100755 abs/core/system-templates/templates/remotes/Nexus/lircrc-nexus.txt create mode 100644 abs/core/system-templates/templates/remotes/Nexus/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nova_500/lircd-nova500.conf create mode 100755 abs/core/system-templates/templates/remotes/Nova_500/lircrc-nova500.txt create mode 100644 abs/core/system-templates/templates/remotes/Nova_500/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nova_T/lircd-novat.conf create mode 100755 abs/core/system-templates/templates/remotes/Nova_T/lircrc-novat.txt create mode 100644 abs/core/system-templates/templates/remotes/Nova_T/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nova_T_USB2/lircd-novatusb2.conf create mode 100755 abs/core/system-templates/templates/remotes/Nova_T_USB2/lircrc-novatusb2.txt create mode 100644 abs/core/system-templates/templates/remotes/Nova_T_USB2/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nvidia/lircd-nvidia.conf create mode 100755 abs/core/system-templates/templates/remotes/Nvidia/lircrc-nvidia.txt create mode 100644 abs/core/system-templates/templates/remotes/Nvidia/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Nvidia_X10/lircd-nvidiax10.conf create mode 100755 abs/core/system-templates/templates/remotes/Nvidia_X10/lircrc-nvidiax10.txt create mode 100644 abs/core/system-templates/templates/remotes/Nvidia_X10/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/One4All/lircd-one4all.conf create mode 100755 abs/core/system-templates/templates/remotes/One4All/lircrc-one4all.txt create mode 100644 abs/core/system-templates/templates/remotes/One4All/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/One4All_6131/lircd-one4all6131.conf create mode 100755 abs/core/system-templates/templates/remotes/One4All_6131/lircrc-one4all6131.txt create mode 100644 abs/core/system-templates/templates/remotes/One4All_6131/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/One4All_7544/lircd-one4all7544.conf create mode 100755 abs/core/system-templates/templates/remotes/One4All_7544/lircrc-one4all7544.txt create mode 100644 abs/core/system-templates/templates/remotes/One4All_7544/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/One4All_9910/lircd-one4all9910.conf create mode 100755 abs/core/system-templates/templates/remotes/One4All_9910/lircrc-one4all9910.txt create mode 100644 abs/core/system-templates/templates/remotes/One4All_9910/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Packard_bell/lircd-packard.conf create mode 100755 abs/core/system-templates/templates/remotes/Packard_bell/lircrc-packard.txt create mode 100644 abs/core/system-templates/templates/remotes/Packard_bell/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Pinnacle/lircd-pinnacle.conf create mode 100755 abs/core/system-templates/templates/remotes/Pinnacle/lircrc-pinnacle.txt create mode 100644 abs/core/system-templates/templates/remotes/Pinnacle/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Provideo/lircd-provideo.conf create mode 100755 abs/core/system-templates/templates/remotes/Provideo/lircrc-provideo.txt create mode 100644 abs/core/system-templates/templates/remotes/Provideo/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircd-rs.conf create mode 100644 abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircrc-rs create mode 100644 abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Sasem/lircd-sasem.conf create mode 100755 abs/core/system-templates/templates/remotes/Sasem/lircrc-sasem.txt create mode 100644 abs/core/system-templates/templates/remotes/Sasem/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Technisat/lircd-technisat.conf create mode 100755 abs/core/system-templates/templates/remotes/Technisat/lircrc-technisat.txt create mode 100644 abs/core/system-templates/templates/remotes/Technisat/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Tekram/lircd-tekram.conf create mode 100755 abs/core/system-templates/templates/remotes/Tekram/lircrc-tekram.txt create mode 100644 abs/core/system-templates/templates/remotes/Tekram/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/Twinham/lircd-twinhan.conf create mode 100755 abs/core/system-templates/templates/remotes/Twinham/lircrc-twinhan.txt create mode 100644 abs/core/system-templates/templates/remotes/Twinham/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/X10_Lola/lircd-x10lola.conf create mode 100755 abs/core/system-templates/templates/remotes/X10_Lola/lircrc-x10lola.txt create mode 100644 abs/core/system-templates/templates/remotes/X10_Lola/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/atiusb/lircd.conf.atiusb create mode 100644 abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia create mode 100644 abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia98 create mode 100644 abs/core/system-templates/templates/remotes/avermedia/lircd.conf.vdomate create mode 100644 abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia create mode 100644 abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia98 create mode 100644 abs/core/system-templates/templates/remotes/avermedia/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy create mode 100644 abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy2 create mode 100644 abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy create mode 100644 abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy2 create mode 100644 abs/core/system-templates/templates/remotes/bestbuy/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/caraca/lircd.conf.caraca create mode 100644 abs/core/system-templates/templates/remotes/caraca/lircrc.caraca create mode 100644 abs/core/system-templates/templates/remotes/caraca/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/dvico/lircd.conf.fusionHDTV create mode 100644 abs/core/system-templates/templates/remotes/dvico/lircrc.txt create mode 100644 abs/core/system-templates/templates/remotes/dvico/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/generic/DENON.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/MOTOROLA.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/NEC-pulse.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/NEC-short-pulse.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/NEC.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/RC-5.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/RC-6.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/RCMM-32.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/RECS80.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/SANYO.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/SONY12.conf create mode 100644 abs/core/system-templates/templates/remotes/generic/SONY20.conf create mode 100644 abs/core/system-templates/templates/remotes/gr8zap/lircd.conf.streamzap create mode 100644 abs/core/system-templates/templates/remotes/gr8zap/lircrc create mode 100644 abs/core/system-templates/templates/remotes/gr8zap/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/hauppauge-black/lircd-haupblack.conf create mode 100755 abs/core/system-templates/templates/remotes/hauppauge-black/lircrc-haupblack.conf create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-black/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-blaster/lircd.conf create mode 100755 abs/core/system-templates/templates/remotes/hauppauge-blaster/lircrc-haupgrey-g3.txt create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-blaster/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-grey/lircd-haupgrey.conf create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-grey/lircrc-haupgrey.txt create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-grey/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-silver/lircd-haupgrey-g3.conf create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-silver/lircrc-haupgrey-g3.txt create mode 100644 abs/core/system-templates/templates/remotes/hauppauge-silver/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/i2c.id create mode 100644 abs/core/system-templates/templates/remotes/imon-pad/lircd.conf create mode 100644 abs/core/system-templates/templates/remotes/imon-pad/lircrc create mode 100644 abs/core/system-templates/templates/remotes/imon-pad/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/imon/lircd.conf.imon create mode 100644 abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-pad create mode 100644 abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-rsc create mode 100644 abs/core/system-templates/templates/remotes/imon/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/mceusb/lircd.conf.mceusb create mode 100644 abs/core/system-templates/templates/remotes/mceusb/lircrc-mceusb create mode 100644 abs/core/system-templates/templates/remotes/mceusb/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/no_remote/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/receiver_usb.id create mode 100644 abs/core/system-templates/templates/remotes/sigma_designs/lircd.conf.realmagic create mode 100644 abs/core/system-templates/templates/remotes/snapstream_firefly/lircd.snapstrm.conf create mode 100644 abs/core/system-templates/templates/remotes/snapstream_firefly/lircrc-snapstrm.txt create mode 100644 abs/core/system-templates/templates/remotes/snapstream_firefly/preview.jpg create mode 100755 abs/core/system-templates/templates/remotes/snapstream_mini/lircd-snapstreammini.conf create mode 100755 abs/core/system-templates/templates/remotes/snapstream_mini/lircrc-snapstreammini.txt create mode 100644 abs/core/system-templates/templates/remotes/snapstream_mini/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/streamzap/lircd.conf.streamzap create mode 100755 abs/core/system-templates/templates/remotes/streamzap/lircrc create mode 100644 abs/core/system-templates/templates/remotes/streamzap/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/technisat/lircd.conf.mediafocusI create mode 100644 abs/core/system-templates/templates/remotes/unknown/preview.jpg create mode 100644 abs/core/system-templates/templates/remotes/x10/lircd.conf.mouseremote create mode 100644 abs/core/system-templates/templates/remotes/x10/lircd.conf.mp3anywhere create mode 100644 abs/core/system-templates/templates/remotes/x10/lircmd.conf.mouseremote create mode 100644 abs/core/system-templates/templates/samba/smb.conf.template create mode 100644 abs/core/system-templates/templates/settings/default_1/keybindings.txt create mode 100644 abs/core/system-templates/templates/settings/default_1/settings.txt create mode 100644 abs/core/system-templates/templates/settings/default_2/keybindings.txt create mode 100644 abs/core/system-templates/templates/settings/default_2/settings.txt create mode 100644 abs/core/system-templates/templates/sources/mv-core create mode 100644 abs/core/system-templates/templates/sources/mv-core-testing create mode 100644 abs/core/system-templates/templates/sources/mv-extra create mode 100644 abs/core/system-templates/templates/sources/mv-extra-testing create mode 100644 abs/core/system-templates/templates/sources/svc_pkg create mode 100755 abs/core/system-templates/templates/transmit/Time_Warner_SA3250/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/amino_STB/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/coolsat_4000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/coolsat_5000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/digitalstream_9900/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/dish301_311/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/dish501_508/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/dish_dvr625/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/dish_network/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/echostar_2700/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/echostar_4700/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/echostar_4900/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/echostar_5000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/expressvu3100/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/expressvu5xxx/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/fortec_lifetime/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/general_550/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/hughes_hbh/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/humax_5400/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/illusion_m3/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dct2000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dct22xx/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dct2524/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dct6200/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dct700/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dsr205/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dsr305/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dsr315/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dsr922/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_dth335/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_rg2xxx/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/motorola_vip12xx/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/nokia_8003/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/nokia_9600/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/nokia_9780/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/nokia_9802/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/nokia_dbox2/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_4001/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_420/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_dsr2000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_dsr600/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_mss200/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_mss300/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_psr800/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_psr900/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pace_xsat_cdtv410/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pansat_2700a/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pioneer_bdv300/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/pvr150/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/rca_drd4xxrg_series/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/rca_drd4xxrh_series/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/samsung_1000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/samsung_300/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/samsung_702/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/sciatl_4200/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/sciatl_exp1840/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/sciatl_exp2000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/sciatl_exp2xxx_3xxx_4xxx/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/sciatl_exp8000/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/skymaster_9410/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/skyplus/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/technisat_st3002s/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/technisat_st3004s/lircd.conf create mode 100755 abs/core/system-templates/templates/transmit/zenith_dtt900/lircd.conf create mode 100644 abs/core/system-templates/templates/xine.config.template create mode 100644 abs/core/system-templates/templates/xorg/96xx_supported.txt create mode 100644 abs/core/system-templates/templates/xorg/modeline.ATSC create mode 100644 abs/core/system-templates/templates/xorg/modeline.DVD create mode 100644 abs/core/system-templates/templates/xorg/modeline.NTSC create mode 100644 abs/core/system-templates/templates/xorg/modeline.VESA create mode 100644 abs/core/system-templates/templates/xorg/modeline.custom create mode 100644 abs/core/system-templates/templates/xorg/xorg.conf.ati create mode 100644 abs/core/system-templates/templates/xorg/xorg.conf.intel create mode 100755 abs/core/system-templates/templates/xorg/xorg.conf.nvidia create mode 100755 abs/core/system-templates/templates/xorg/xorg.conf.vesa create mode 100644 abs/core/system-templates/templates/xorg/xorg.conf.via create mode 100755 abs/core/system-templates/templates/xorg/xorg.conf.vmware create mode 100644 abs/core/system-templates/templates/xscreensaver.template create mode 100644 abs/core/system-templates/templates/xscreensavers create mode 100644 abs/core/tdb/PKGBUILD create mode 100644 abs/core/tdb/gcc3.patch create mode 100644 abs/core/texinfo/ChangeLog create mode 100644 abs/core/texinfo/PKGBUILD create mode 100644 abs/core/texinfo/texinfo.install create mode 100644 abs/core/tftp-hpa/LICENSE create mode 100644 abs/core/tftp-hpa/PKGBUILD create mode 100644 abs/core/tftp-hpa/tftpd.conf create mode 100755 abs/core/tftp-hpa/tftpd.rc create mode 100644 abs/core/tiacx/kernel-2.6.27.patch create mode 100644 abs/core/transcode/PKGBUILD create mode 100644 abs/core/transcode/transcode.install create mode 100644 abs/core/ttf-bitstream-vera/PKGBUILD create mode 100644 abs/core/ttf-bitstream-vera/vera.install create mode 100644 abs/core/tweaker/PKGBUILD create mode 100755 abs/core/tweaker/bin/LocalIPCheck.pl create mode 100755 abs/core/tweaker/bin/SQLtweaker.sh create mode 100755 abs/core/tweaker/bin/create-linhes-sql.sh create mode 100755 abs/core/tweaker/bin/tweaker.pl create mode 100755 abs/core/tweaker/bin/twk_EXAMPLE.pl create mode 100755 abs/core/tweaker/bin/twk_RAM.pl create mode 100755 abs/core/tweaker/bin/twk_audio.pl create mode 100755 abs/core/tweaker/bin/twk_cpu.pl create mode 100755 abs/core/tweaker/bin/twk_dragon.pl create mode 100755 abs/core/tweaker/bin/twk_fingerprint_hardware.sh create mode 100755 abs/core/tweaker/bin/twk_general.pl create mode 100755 abs/core/tweaker/bin/twk_general.pl.orig create mode 100755 abs/core/tweaker/bin/twk_graphics.pl create mode 100755 abs/core/tweaker/bin/twk_keymap.sh create mode 100755 abs/core/tweaker/bin/twk_localization.pl create mode 100755 abs/core/tweaker/bin/twk_misc.pl create mode 100755 abs/core/tweaker/bin/twk_scrub_sql.pl create mode 100755 abs/core/tweaker/bin/twk_tuners.pl create mode 100644 abs/core/tweaker/bin/twk_tuners_notes.txt create mode 100755 abs/core/tweaker/bin/twk_upgrade.pl create mode 100755 abs/core/tweaker/bin/twk_what_has_changed.sh create mode 100644 abs/core/tweaker/fs/etc/asound.conf create mode 100644 abs/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini create mode 100644 abs/core/tweaker/fs/var/lib/alsa/ALC888.asound.state create mode 100644 abs/core/tweaker/fs/var/lib/alsa/AV710.asound.state create mode 100644 abs/core/tweaker/lib/Tweaker/Definitions.pm create mode 100644 abs/core/tweaker/lib/Tweaker/Script.pm create mode 100644 abs/core/tweaker/log4perl.conf create mode 100644 abs/core/tweaker/tcf/EXAMPLE.tcf create mode 100644 abs/core/tweaker/tcf/focus.tcf create mode 100644 abs/core/tweaker/tcf/os.tcf create mode 100644 abs/core/tweaker/tcf/tcf.dtd create mode 100644 abs/core/tweaker/tcf/tweaker-core.tcf create mode 100644 abs/core/tweaker/tcf/userland.tcf create mode 100644 abs/core/tweaker/tweaker.install create mode 100644 abs/core/tweaker/tweaker.sh delete mode 100644 abs/core/udev/00-load-blacklist.rules delete mode 100644 abs/core/udev/51-arch.rules create mode 100644 abs/core/udev/81-arch.rules create mode 100644 abs/core/udev/__changelog delete mode 100644 abs/core/udev/cdrom-rules.patch delete mode 100644 abs/core/udev/migrate-udev delete mode 100755 abs/core/udev/mod-blacklist.sh create mode 100644 abs/core/udev/mount-usb create mode 100644 abs/core/udev/resolve-modalias.c create mode 100644 abs/core/udev/udev-ntfs-3g.patch create mode 100644 abs/core/udev/usb-storage.rules delete mode 100644 abs/core/udev/usb_id-fix.patch create mode 100755 abs/core/unclutter/PKGBUILD create mode 100644 abs/core/unichrome-dri/mesa-7.1-link-shared.patch delete mode 100644 abs/core/unison/PKGBUILD delete mode 100644 abs/core/unison/ocaml-3.08-extnames.patch delete mode 100644 abs/core/unison/unison.desktop delete mode 100644 abs/core/unison/unison.install create mode 100644 abs/core/unzip/PKGBUILD create mode 100644 abs/core/unzip/unzip-5.5.2-CVE-2008-0888.patch create mode 100644 abs/core/unzip/unzip-5.50-alt-iconv-v1.2-utf8.patch create mode 100644 abs/core/unzip/unzip542-size-64bit.patch create mode 100644 abs/core/urlgrabber/PKGBUILD create mode 100644 abs/core/util-linux-ng/cryptoloop-support.patch create mode 100644 abs/core/util-linux-ng/util-linux-ng.install create mode 100644 abs/core/vdpinfo-71xx/PKGBUILD create mode 100755 abs/core/vdpinfo-71xx/vdpinfo create mode 100644 abs/core/vdpinfo-96xx/PKGBUILD create mode 100755 abs/core/vdpinfo-96xx/vdpinfo create mode 100644 abs/core/vdpinfo/PKGBUILD create mode 100644 abs/core/vi/__changelog create mode 100644 abs/core/which/which.install create mode 100644 abs/core/wireless_tools/PKGBUILD create mode 100644 abs/core/wireless_tools/wireless.conf.d delete mode 100644 abs/core/wlan-ng26-utils/PKGBUILD delete mode 100644 abs/core/wlan-ng26-utils/kernel-2.6.22-r1832.patch delete mode 100644 abs/core/wlan-ng26-utils/kernel-2.6.26.patch delete mode 100644 abs/core/wlan-ng26-utils/wlan delete mode 100644 abs/core/wlan-ng26-utils/wlan-ng.patch delete mode 100644 abs/core/wlan-ng26/PKGBUILD delete mode 100644 abs/core/wlan-ng26/kernel-2.6.26.patch delete mode 100644 abs/core/wlan-ng26/wlan-ng26.install delete mode 100644 abs/core/wpa_supplicant/wpa_supplicant.install create mode 100644 abs/core/xcb-util/PKGBUILD create mode 100644 abs/core/xcmiscproto/PKGBUILD create mode 100644 abs/core/xdotool/PKGBUILD create mode 100644 abs/core/xf86-input-synaptics/PKGBUILD create mode 100644 abs/core/xf86-video-ati/git-20081021.patch create mode 100644 abs/core/xf86-video-ati/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch create mode 100644 abs/core/xf86-video-intel/21_quirk_lenovo.patch create mode 100644 abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch create mode 100644 abs/core/xf86-video-intel/25_quirk_nc6110.patch create mode 100644 abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch create mode 100644 abs/core/xf86-video-intel/27_disable_fbc_on_965.patch create mode 100644 abs/core/xf86-video-ivtvfb/PKGBUILD create mode 100644 abs/core/xf86-video-ivtvfb/xf86-video-ivtv-pagesize.patch create mode 100644 abs/core/xf86-video-mach64/PKGBUILD create mode 100644 abs/core/xf86-video-mach64/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-mga/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-openchrome/LICENSE.txt create mode 100644 abs/core/xf86-video-openchrome/PKGBUILD create mode 100644 abs/core/xf86-video-r128/PKGBUILD create mode 100644 abs/core/xf86-video-r128/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-savage/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-sis/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-tdfx/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-trident/mesa-7.1-link-shared.patch create mode 100644 abs/core/xf86-video-vga/pciaccess.patch create mode 100644 abs/core/xf86bigfontproto/PKGBUILD create mode 100644 abs/core/xf86driproto/PKGBUILD create mode 100644 abs/core/xkeyboard-config/fix-abnt2.patch create mode 100644 abs/core/xmlrpc-c/PKGBUILD create mode 100644 abs/core/xorg-server/001_fedora_extramodes.patch create mode 100644 abs/core/xorg-server/__changelog create mode 100644 abs/core/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch create mode 100644 abs/core/xorg-server/xserver-1.5-branch-4970d.patch create mode 100644 abs/core/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch create mode 100644 abs/core/xorg-server/xserver-1.5.3-AEI-on-by-default.patch create mode 100644 abs/core/xorg-util-macros/PKGBUILD create mode 100644 abs/core/xosd/PKGBUILD create mode 100644 abs/core/yasm/PKGBUILD create mode 100644 abs/core/zoneminder/Makefile.patch create mode 100644 abs/core/zoneminder/PKGBUILD create mode 100755 abs/core/zoneminder/customdb create mode 100644 abs/core/zoneminder/mootools.v1.11.js create mode 100755 abs/core/zoneminder/run create mode 100644 abs/core/zoneminder/zm.conf.patch create mode 100644 abs/core/zoneminder/zm.rc.d create mode 100755 abs/core/zoneminder/zmeventdump create mode 100644 abs/core/zoneminder/zminit.arch create mode 100644 abs/core/zoneminder/zmupdate.patch create mode 100644 abs/core/zoneminder/zoneminder.install create mode 100644 abs/extra/abs/ChangeLog create mode 100644 abs/extra/abs/PKGBUILD create mode 100644 abs/extra/abs/abs.install create mode 100644 abs/extra/apache-ant/PKGBUILD create mode 100644 abs/extra/apcupsd/PKGBUILD create mode 100755 abs/extra/apcupsd/apcupsd create mode 100644 abs/extra/apcupsd/apcupsd.conf create mode 100644 abs/extra/apcupsd/run create mode 100644 abs/extra/atomicparsley/PKGBUILD create mode 100644 abs/extra/autofs/Changelog create mode 100644 abs/extra/autofs/PKGBUILD create mode 100644 abs/extra/autofs/auto.master create mode 100644 abs/extra/autofs/auto.misc create mode 100644 abs/extra/autofs/autofs create mode 100644 abs/extra/autofs/autofs.conf.d create mode 100644 abs/extra/autofs/autofs.install create mode 100755 abs/extra/autofs/finish create mode 100644 abs/extra/autofs/heimdal.patch create mode 100755 abs/extra/autofs/run create mode 100644 abs/extra/beautiful-soup/PKGBUILD create mode 100644 abs/extra/bluez-firmware/PKGBUILD create mode 100644 abs/extra/bluez-hcidump/PKGBUILD create mode 100644 abs/extra/bluez-python/PKGBUILD create mode 100644 abs/extra/bluez/PKGBUILD create mode 100644 abs/extra/bluez/bluetooth.conf.d create mode 100644 abs/extra/bluez/rc.bluetooth create mode 100644 abs/extra/bmp/0.9.7-visualization.patch create mode 100644 abs/extra/bmp/0.9.7.1-visualization.patch create mode 100644 abs/extra/bmp/PKGBUILD create mode 100644 abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch create mode 100644 abs/extra/boost/0001-date_time-gcc-4.3-fix.patch create mode 100644 abs/extra/boost/PKGBUILD create mode 100644 abs/extra/boost/serialization_gcc43.patch create mode 100644 abs/extra/cabextract/PKGBUILD create mode 100755 abs/extra/cddb-py/PKGBUILD create mode 100644 abs/extra/community/athcool/PKGBUILD create mode 100644 abs/extra/community/athcool/athcool create mode 100644 abs/extra/community/athcool/athcool.install create mode 100755 abs/extra/community/athcool/finish create mode 100644 abs/extra/community/athcool/run create mode 100644 abs/extra/community/cksfv/PKGBUILD create mode 100644 abs/extra/community/codecs/PKGBUILD create mode 100644 abs/extra/community/cpulimit/PKGBUILD create mode 100644 abs/extra/community/cwiid-svn/PKGBUILD create mode 100644 abs/extra/community/cwiid-svn/cwiid.install create mode 100644 abs/extra/community/deluge/PKGBUILD create mode 100644 abs/extra/community/desktop-file-utils/ChangeLog create mode 100644 abs/extra/community/desktop-file-utils/PKGBUILD create mode 100644 abs/extra/community/djmount/PKGBUILD create mode 100644 abs/extra/community/djmount/djmount.confd create mode 100755 abs/extra/community/djmount/djmount.rcd create mode 100644 abs/extra/community/enca/PKGBUILD create mode 100644 abs/extra/community/firefox-i18n/PKGBUILD create mode 100644 abs/extra/community/firefox/PKGBUILD create mode 100644 abs/extra/community/firefox/browser-app-makefile.patch create mode 100644 abs/extra/community/firefox/browser-defaulturls.patch create mode 100644 abs/extra/community/firefox/firefox-safe.desktop create mode 100644 abs/extra/community/firefox/firefox-version.patch create mode 100644 abs/extra/community/firefox/firefox.desktop create mode 100644 abs/extra/community/firefox/firefox.install create mode 100644 abs/extra/community/firefox/mozconfig create mode 100644 abs/extra/community/firefox/mozilla-firefox-1.0-lang.patch create mode 100644 abs/extra/community/flashplugin/PKGBUILD create mode 100644 abs/extra/community/fluidsynth/PKGBUILD create mode 100644 abs/extra/community/fluxconf/PKGBUILD create mode 100644 abs/extra/community/foldingathome/PKGBUILD create mode 100644 abs/extra/community/foldingathome/foldingathome.install create mode 100644 abs/extra/community/foldingathome/run create mode 100644 abs/extra/community/gnash-common/PKGBUILD create mode 100644 abs/extra/community/gnash-gtk/PKGBUILD create mode 100644 abs/extra/community/gstreamer0.10-base-plugins/PKGBUILD create mode 100644 abs/extra/community/gstreamer0.10-base/PKGBUILD create mode 100644 abs/extra/community/gstreamer0.10/PKGBUILD create mode 100644 abs/extra/community/gstreamer0.10/bgo555631.patch create mode 100644 abs/extra/community/gtkglext/PKGBUILD create mode 100644 abs/extra/community/gtkglext/gtkglext-1.0.6-pangox.patch create mode 100644 abs/extra/community/ircii/PKGBUILD create mode 100644 abs/extra/community/jdk/PKGBUILD create mode 100644 abs/extra/community/jdk/jdk.install create mode 100644 abs/extra/community/jdk/jdk.profile create mode 100644 abs/extra/community/jre/PKGBUILD create mode 100644 abs/extra/community/jre/jre.install create mode 100644 abs/extra/community/jre/jre.profile create mode 100644 abs/extra/community/libdvbpsi/PKGBUILD create mode 100644 abs/extra/community/libelf/PKGBUILD create mode 100644 abs/extra/community/libmatroska/PKGBUILD create mode 100644 abs/extra/community/libmodplug/PKGBUILD create mode 100644 abs/extra/community/libmpcdec/PKGBUILD create mode 100644 abs/extra/community/libnetfilter_queue/PKGBUILD create mode 100644 abs/extra/community/libnfnetlink/PKGBUILD create mode 100644 abs/extra/community/liboil/PKGBUILD create mode 100644 abs/extra/community/libshout/PKGBUILD create mode 100644 abs/extra/community/libstdc++5/PKGBUILD create mode 100644 abs/extra/community/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch create mode 100644 abs/extra/community/libv4l/PKGBUILD create mode 100644 abs/extra/community/lua/PKGBUILD create mode 100644 abs/extra/community/lua/lua-5.1-cflags.diff create mode 100644 abs/extra/community/lua/lua-5.1.3-official-patch1.diff create mode 100644 abs/extra/community/lua/lua-5.1.3-official-patch2.diff create mode 100644 abs/extra/community/lua/lua-5.1.3-official-patch3.diff create mode 100644 abs/extra/community/lua/lua-5.1.3-official-patch4.diff create mode 100644 abs/extra/community/lua/lua-arch.patch create mode 100644 abs/extra/community/mmv/PKGBUILD create mode 100644 abs/extra/community/mmv/mmv.install create mode 100644 abs/extra/community/moblock/MoBlock-nfq.sh.patch create mode 100755 abs/extra/community/moblock/PKGBUILD create mode 100644 abs/extra/community/moblock/config create mode 100755 abs/extra/community/moblock/moblock create mode 100755 abs/extra/community/moblock/moblock-update create mode 100644 abs/extra/community/moblock/moblock.install create mode 100644 abs/extra/community/moblock/moblock.logrotate create mode 100644 abs/extra/community/moblock/moblock_0.9_rc2.patch create mode 100644 abs/extra/community/moblock/moblock_include.patch create mode 100644 abs/extra/community/moblockcontrol/PKGBUILD create mode 100644 abs/extra/community/moblockcontrol/moblock-control-update.sh create mode 100644 abs/extra/community/moblockcontrol/moblock_control.patch create mode 100644 abs/extra/community/moblockcontrol/moblockcontrol.install create mode 100644 abs/extra/community/mobloquer/PKGBUILD create mode 100644 abs/extra/community/motion-svn/PKGBUILD create mode 100644 abs/extra/community/motion-svn/motion-svn.install create mode 100644 abs/extra/community/motion-svn/rc.motion create mode 100644 abs/extra/community/mozplugger/ChangeLog create mode 100644 abs/extra/community/mozplugger/PKGBUILD create mode 100644 abs/extra/community/mozplugger/mozplugger.install create mode 100644 abs/extra/community/mpc/ChangeLog create mode 100644 abs/extra/community/mpc/PKGBUILD create mode 100644 abs/extra/community/mpd/PKGBUILD create mode 100755 abs/extra/community/mpd/mpd create mode 100644 abs/extra/community/mpd/mpd.install create mode 100644 abs/extra/community/mythpywii/PKGBUILD create mode 100644 abs/extra/community/mythtv-vdpau/2.6.28_dvb_api_version.diff create mode 100644 abs/extra/community/mythtv-vdpau/PKGBUILD create mode 100644 abs/extra/community/mythtv-vdpau/PKGBUILD.orig create mode 100644 abs/extra/community/mythtv-vdpau/QUICKSTART.archlinux create mode 100755 abs/extra/community/mythtv-vdpau/menu-xml/HOST_SETTINGS.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/is.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/library.xml.patch create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/linhes.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/mainmenu.xml.patch create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/mythbackup.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/mythrestore.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/optical_menu.xml.patch create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/original/create_patch.sh create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/setup.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/siriusmenu.xml create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/util_menu.xml.patch create mode 100644 abs/extra/community/mythtv-vdpau/menu-xml/xmmenu.xml create mode 100644 abs/extra/community/mythtv-vdpau/mpegpspatch create mode 100755 abs/extra/community/mythtv-vdpau/mythbackend create mode 100644 abs/extra/community/mythtv-vdpau/mythbackend.lr create mode 100644 abs/extra/community/mythtv-vdpau/mythfrontend.lr create mode 100644 abs/extra/community/mythtv-vdpau/myththemedmenu.cpp.patch create mode 100644 abs/extra/community/mythtv-vdpau/myththemedmenu.h.patch create mode 100644 abs/extra/community/mythtv-vdpau/mythtv.install create mode 100644 abs/extra/community/mythtv-vdpau/pretty create mode 100644 abs/extra/community/mythtv-vdpau/smolt_jump.patch create mode 100644 abs/extra/community/ncdu/PKGBUILD create mode 100644 abs/extra/community/nvclock/PKGBUILD create mode 100644 abs/extra/community/nvclock/nvclock-0.8b4-buildfix.patch create mode 100644 abs/extra/community/nvidia-beta/PKGBUILD create mode 100644 abs/extra/community/nvidia-beta/nvidia.install create mode 100644 abs/extra/community/nvidia-utils-beta/PKGBUILD create mode 100644 abs/extra/community/nvidia-utils-beta/nvidia.install create mode 100644 abs/extra/community/nvidia-utils-beta/supported-cards.txt create mode 100644 abs/extra/community/nxtvepg.tar.gz create mode 100644 abs/extra/community/nxtvepg/PKGBUILD create mode 100644 abs/extra/community/nxtvepg/nxtvepg-icon-16.png create mode 100644 abs/extra/community/nxtvepg/nxtvepg-icon-32.png create mode 100644 abs/extra/community/nxtvepg/nxtvepg-icon-48.png create mode 100644 abs/extra/community/nxtvepg/nxtvepg.desktop create mode 100644 abs/extra/community/nxtvepg/tcl_85.patch create mode 100755 abs/extra/community/nzbperl/PKGBUILD create mode 100644 abs/extra/community/projectx/PKGBUILD create mode 100644 abs/extra/community/projectx/projectx create mode 100644 abs/extra/community/pyxdg/PKGBUILD create mode 100644 abs/extra/community/screen/PKGBUILD create mode 100644 abs/extra/community/screen/screen.install create mode 100644 abs/extra/community/screen/screen.pam create mode 100644 abs/extra/community/smplayer/ChangeLog create mode 100644 abs/extra/community/smplayer/PKGBUILD create mode 100644 abs/extra/community/torrentflux/PKGBUILD create mode 100644 abs/extra/community/torrentflux/torrentflux.install create mode 100644 abs/extra/community/transmission-cli/ChangeLog create mode 100644 abs/extra/community/transmission-cli/PKGBUILD create mode 100644 abs/extra/community/transmission-cli/transmission-cli.install create mode 100644 abs/extra/community/transmission-cli/transmissiond create mode 100644 abs/extra/community/transmission-cli/transmissiond.conf create mode 100644 abs/extra/community/tre/PKGBUILD create mode 100644 abs/extra/community/unrar/PKGBUILD create mode 100644 abs/extra/community/unrar/unrar-3.5.2-optimalization-fix.patch create mode 100644 abs/extra/community/uudeview/PKGBUILD create mode 100644 abs/extra/community/vlc/PKGBUILD create mode 100644 abs/extra/community/vsftpd/PKGBUILD create mode 100644 abs/extra/community/vsftpd/run create mode 100644 abs/extra/community/vsftpd/vsftpd.d create mode 100644 abs/extra/community/vsftpd/vsftpd.install create mode 100644 abs/extra/community/vsftpd/vsftpd.xinetd create mode 100644 abs/extra/community/wiiuse/PKGBUILD create mode 100644 abs/extra/community/wiiuse/wiiuse.install create mode 100644 abs/extra/community/xbmc-svn/CHANGELOG create mode 100644 abs/extra/community/xbmc-svn/Lircmap.xml create mode 100644 abs/extra/community/xbmc-svn/PKGBUILD create mode 100644 abs/extra/community/xbmc-svn/__changelog create mode 100644 abs/extra/community/xbmc-svn/libcurl-not-in-lib64.patch create mode 100644 abs/extra/community/xbmc-svn/xbmc-svn.install create mode 100644 abs/extra/community/xbmc/ChangeLog create mode 100644 abs/extra/community/xbmc/PKGBUILD create mode 100644 abs/extra/community/xbmc/xbmc.install create mode 100644 abs/extra/community/xine-lib-vdpau-svn/PKGBUILD create mode 100644 abs/extra/community/zvbi/PKGBUILD create mode 100644 abs/extra/conky/PKGBUILD create mode 100644 abs/extra/crda/PKGBUILD create mode 100644 abs/extra/crda/crda.conf.d create mode 100755 abs/extra/crda/crda.rc create mode 100644 abs/extra/cvs/PKGBUILD create mode 100644 abs/extra/ddclient/ChangeLog create mode 100644 abs/extra/ddclient/PKGBUILD create mode 100644 abs/extra/ddclient/ddclient.conf.d create mode 100644 abs/extra/ddclient/ddclient.install create mode 100644 abs/extra/ddclient/ddclient.rc create mode 100644 abs/extra/diffstat/PKGBUILD create mode 100644 abs/extra/docbook-xml/PKGBUILD create mode 100644 abs/extra/docbook-xml/docbook-xml.install create mode 100644 abs/extra/docbook-xml/docbook.patch create mode 100644 abs/extra/docbook-xsl/PKGBUILD create mode 100644 abs/extra/docbook-xsl/docbook-xsl.install create mode 100644 abs/extra/doxygen/PKGBUILD create mode 100644 abs/extra/enchant/PKGBUILD create mode 100644 abs/extra/ethtool/PKGBUILD create mode 100644 abs/extra/evrouter/PKGBUILD create mode 100644 abs/extra/exo/PKGBUILD create mode 100644 abs/extra/exo/exo.install create mode 100644 abs/extra/fakeroot/PKGBUILD create mode 100644 abs/extra/fakeroot/fakeroot.install create mode 100755 abs/extra/fceu/PKGBUILD create mode 100644 abs/extra/fftw/PKGBUILD create mode 100644 abs/extra/fftw/fftw.install create mode 100644 abs/extra/frozen-bubble/PKGBUILD create mode 100644 abs/extra/frozen-bubble/frozen-bubble.desktop create mode 100644 abs/extra/fuppes-svn/PKGBUILD create mode 100644 abs/extra/fuppes-svn/PKGBUILD.orig create mode 100644 abs/extra/fuppes-svn/fuppes-r634-archlinux.patch create mode 100644 abs/extra/fuppes-svn/fuppes.cfg create mode 100644 abs/extra/fuppes-svn/fuppes.ch create mode 100644 abs/extra/fuppes-svn/fuppes.diff create mode 100644 abs/extra/fuppes-svn/fuppes.install create mode 100644 abs/extra/fuppes-svn/fuppes.lr create mode 100755 abs/extra/fuppes-svn/run create mode 100644 abs/extra/gconf/01_xml-gettext-domain.patch create mode 100644 abs/extra/gconf/05_from_vuntz_gconf2-pk-default-path.patch create mode 100644 abs/extra/gconf/PKGBUILD create mode 100755 abs/extra/gconf/gconf-merge-schema create mode 100644 abs/extra/gconf/gconf-reload.patch create mode 100644 abs/extra/gconf/gconf.install create mode 100755 abs/extra/gconf/gconfpkg create mode 100644 abs/extra/gconf/xml-gettext-domain.patch create mode 100644 abs/extra/gd/PKGBUILD create mode 100644 abs/extra/gdl/PKGBUILD create mode 100644 abs/extra/glew/PKGBUILD create mode 100644 abs/extra/gnome-desktop/PKGBUILD create mode 100644 abs/extra/gnome-doc-utils/PKGBUILD create mode 100644 abs/extra/gnome-keyring/PKGBUILD create mode 100644 abs/extra/gnome-keyring/gnome-keyring.install create mode 100644 abs/extra/gnome-keyring/gnome-keyring.service create mode 100644 abs/extra/gnome-menus/PKGBUILD create mode 100644 abs/extra/gnome-menus/menus.patch create mode 100644 abs/extra/gnome-mime-data/PKGBUILD create mode 100644 abs/extra/gnome-python-extras/PKGBUILD create mode 100644 abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch create mode 100644 abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch create mode 100644 abs/extra/gnome-python/PKGBUILD create mode 100644 abs/extra/gnome-screensaver/PKGBUILD create mode 100644 abs/extra/gnome-screensaver/__changelog create mode 100644 abs/extra/gnome-screensaver/bug564548.patch create mode 100644 abs/extra/gnome-screensaver/gnome-screensaver.install create mode 100644 abs/extra/gnome-screensaver/gnome-screensaver.pam create mode 100644 abs/extra/gnome-screensaver/gscreensavers create mode 100644 abs/extra/gnome-vfs/PKGBUILD create mode 100644 abs/extra/gnome-vfs/gnome-vfs.install create mode 100644 abs/extra/gnome-vfs/hal-show-volume-names.patch create mode 100644 abs/extra/gnuplot/PKGBUILD create mode 100644 abs/extra/gpac/ChangeLog create mode 100755 abs/extra/gpac/PKGBUILD create mode 100755 abs/extra/gpac/gpac-0.4.2-ffmpeg-errno.patch create mode 100644 abs/extra/graphload/PKGBUILD create mode 100755 abs/extra/graphload/graphload.sh create mode 100644 abs/extra/gtk-doc/PKGBUILD create mode 100644 abs/extra/gtk-doc/gtk-doc.install create mode 100644 abs/extra/gtk-sharp-2/PKGBUILD create mode 100644 abs/extra/gtkspell/PKGBUILD create mode 100644 abs/extra/guile/PKGBUILD create mode 100644 abs/extra/guile/guile.install create mode 100644 abs/extra/gvim/PKGBUILD create mode 100644 abs/extra/gvim/fetch_patches.sh create mode 100644 abs/extra/gvim/gvim.desktop create mode 100644 abs/extra/gvim/gvim.install create mode 100644 abs/extra/hd2u/PKGBUILD create mode 100644 abs/extra/hddtemp/ChangeLog create mode 100644 abs/extra/hddtemp/PKGBUILD create mode 100644 abs/extra/hddtemp/hddtemp create mode 100644 abs/extra/hddtemp/hddtemp.confd create mode 100755 abs/extra/hdhgrab/PKGBUILD create mode 100644 abs/extra/hicolor-icon-theme/PKGBUILD create mode 100644 abs/extra/hspell/PKGBUILD create mode 100644 abs/extra/htop/ChangeLog create mode 100644 abs/extra/htop/PKGBUILD create mode 100644 abs/extra/htop/htop-treeview.patch create mode 100644 abs/extra/hunspell/ChangeLog create mode 100644 abs/extra/hunspell/PKGBUILD create mode 100644 abs/extra/i2c-tools/Makefile.patch create mode 100644 abs/extra/i2c-tools/PKGBUILD create mode 100644 abs/extra/icon-naming-utils/PKGBUILD create mode 100644 abs/extra/id3lib/PKGBUILD create mode 100644 abs/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch create mode 100644 abs/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch create mode 100644 abs/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff create mode 100644 abs/extra/ifenslave/PKGBUILD create mode 100644 abs/extra/ifenslave/bonding.conf.d create mode 100644 abs/extra/inadyn/PKGBUILD create mode 100644 abs/extra/inadyn/run create mode 100644 abs/extra/irqbalance/Makefile.irqbalance create mode 100644 abs/extra/irqbalance/PKGBUILD create mode 100644 abs/extra/irqbalance/irqbalance.conf.d create mode 100644 abs/extra/irqbalance/irqbalance.rc.d create mode 100644 abs/extra/iso-codes/PKGBUILD create mode 100644 abs/extra/iw/PKGBUILD create mode 100644 abs/extra/jade/PKGBUILD create mode 100644 abs/extra/joyutils/PKGBUILD create mode 100644 abs/extra/ladspa/PKGBUILD create mode 100644 abs/extra/ladspa/hardcode-path.patch create mode 100644 abs/extra/lcdproc/PKGBUILD create mode 100644 abs/extra/lcdproc/__changelog create mode 100755 abs/extra/lcdproc/lcdd create mode 100644 abs/extra/lcdproc/lcdproc-add-serdisplib create mode 100644 abs/extra/libbonobo/PKGBUILD create mode 100644 abs/extra/libbonobo/bonobo-activation-config.xml create mode 100644 abs/extra/libbonobo/libbonobo.install create mode 100644 abs/extra/libbonoboui/PKGBUILD create mode 100644 abs/extra/libcdio/PKGBUILD create mode 100644 abs/extra/libdvdcss/PKGBUILD create mode 100644 abs/extra/libdvdnav/PKGBUILD create mode 100644 abs/extra/libebml/PKGBUILD create mode 100644 abs/extra/libftdi/PKGBUILD create mode 100644 abs/extra/libgda/Changelog create mode 100644 abs/extra/libgda/PKGBUILD create mode 100644 abs/extra/libgda/bdb43.patch create mode 100644 abs/extra/libgda/libgda.install create mode 100644 abs/extra/libgdiplus/PKGBUILD create mode 100644 abs/extra/libgdiplus/system-cairo.patch create mode 100644 abs/extra/libgksu/PKGBUILD create mode 100644 abs/extra/libgksu/libgksu.install create mode 100644 abs/extra/libglade/PKGBUILD create mode 100644 abs/extra/libglade/glade.install create mode 100644 abs/extra/libglade/libglade-2.0.1-nowarning.patch create mode 100644 abs/extra/libgnome/PKGBUILD create mode 100644 abs/extra/libgnome/libgnome.install create mode 100644 abs/extra/libgnomecanvas/PKGBUILD create mode 100644 abs/extra/libgnomekbd/PKGBUILD create mode 100644 abs/extra/libgnomekbd/libgnomekbd.install create mode 100644 abs/extra/libgnomeui/PKGBUILD create mode 100644 abs/extra/libgtkhtml/PKGBUILD create mode 100644 abs/extra/libgtop/PKGBUILD create mode 100644 abs/extra/libgtop/libgtop.install create mode 100644 abs/extra/libidl2/PKGBUILD create mode 100644 abs/extra/libidl2/libidl2.install create mode 100644 abs/extra/libmikmod/PKGBUILD create mode 100644 abs/extra/libmms/PKGBUILD create mode 100644 abs/extra/libmpcdec/PKGBUILD create mode 100644 abs/extra/libmrss/PKGBUILD create mode 100644 abs/extra/libnl/PKGBUILD create mode 100644 abs/extra/libnl/ulong_max.patch create mode 100644 abs/extra/libnotify/PKGBUILD create mode 100644 abs/extra/libnxml/PKGBUILD create mode 100644 abs/extra/libsamplerate/ChangeLog create mode 100644 abs/extra/libsamplerate/PKGBUILD create mode 100644 abs/extra/libxfce4util/PKGBUILD create mode 100644 abs/extra/libxklavier/PKGBUILD create mode 100644 abs/extra/libxp/PKGBUILD create mode 100644 abs/extra/lm_sensors/PKGBUILD create mode 100644 abs/extra/lm_sensors/fancontrol.rc create mode 100644 abs/extra/lm_sensors/sensors-detect.patch create mode 100644 abs/extra/lm_sensors/sensors.install create mode 100644 abs/extra/lm_sensors/sensors.rc create mode 100644 abs/extra/lynx/PKGBUILD create mode 100644 abs/extra/make/PKGBUILD create mode 100644 abs/extra/mc/PKGBUILD create mode 100644 abs/extra/mc/mc-4.6.1-bash-all.patch create mode 100644 abs/extra/mc/mc-4.6.1-find.patch create mode 100644 abs/extra/mc/mc-4.6.1-invalid-mtime.patch create mode 100644 abs/extra/mc/mc-4.6.1-largefile.patch create mode 100644 abs/extra/mc/mc-4.6.1-nonblock.patch create mode 100644 abs/extra/mdbtools/PKGBUILD create mode 100644 abs/extra/mdbtools/gmdb2.desktop create mode 100644 abs/extra/mediaserv/PKGBUILD create mode 100644 abs/extra/mediaserv/finish create mode 100644 abs/extra/mediaserv/linhes-mediaserv.tar.bz2 create mode 100644 abs/extra/mediaserv/mediaserv.install create mode 100644 abs/extra/mediaserv/mediaserv.no_daemon.patch create mode 100644 abs/extra/mediaserv/run create mode 100755 abs/extra/mednafen/PKGBUILD create mode 100644 abs/extra/mercurial/ChangeLog create mode 100644 abs/extra/mercurial/PKGBUILD create mode 100644 abs/extra/mingetty/PKGBUILD create mode 100644 abs/extra/mingetty/mingetty-utf8.patch create mode 100644 abs/extra/miro/ChangeLog create mode 100644 abs/extra/miro/Changelog create mode 100644 abs/extra/miro/Miro-xulrunner.patch create mode 100644 abs/extra/miro/PKGBUILD create mode 100644 abs/extra/miro/boost_1.36.0_fix.patch create mode 100644 abs/extra/miro/miro-xine.patch create mode 100644 abs/extra/miro/miro.exec.patch create mode 100644 abs/extra/miro/miro.install create mode 100644 abs/extra/miro/miro_python26.patch create mode 100644 abs/extra/miro/missing-headers.patch create mode 100644 abs/extra/mkvtoolnix/PKGBUILD create mode 100644 abs/extra/mono/PKGBUILD create mode 100644 abs/extra/mono/__changelog create mode 100644 abs/extra/mono/bug434892.patch create mode 100644 abs/extra/mono/mono.rc.d create mode 100644 abs/extra/mozilla-common/PKGBUILD create mode 100755 abs/extra/mozilla-common/mozilla-common.sh create mode 100755 abs/extra/myt2xvid3/PKGBUILD create mode 100644 abs/extra/myt2xvid3/archive.php create mode 100755 abs/extra/myt2xvid3/myt2xvid3 create mode 100755 abs/extra/myt2xvid3/myt2xvid3-userjob.sh create mode 100755 abs/extra/myt2xvid3/myt2xvid3.install create mode 100755 abs/extra/myth2ipod/PKGBUILD create mode 100755 abs/extra/myth2ipod/iPod.pm create mode 100755 abs/extra/myth2ipod/m2iweb.php create mode 100755 abs/extra/myth2ipod/myth2ipod create mode 100755 abs/extra/myth2ipod/myth2ipod-userjob.sh create mode 100755 abs/extra/myth2ipod/myth2ipod.install create mode 100644 abs/extra/mythappletrailers/PKGBUILD create mode 100644 abs/extra/mythappletrailers/appletrailer.xml create mode 100644 abs/extra/mythappletrailers/fix_aple_url.sh create mode 100755 abs/extra/mythappletrailers/loading.sh create mode 100755 abs/extra/mythappletrailers/myth_trailers_grabber create mode 100644 abs/extra/mythappletrailers/mythappletrailers.install create mode 100755 abs/extra/mythappletrailers/trailers create mode 100644 abs/extra/mythexport/PKGBUILD create mode 100644 abs/extra/mythexport/mythexport.install create mode 100644 abs/extra/mythfeed/PKGBUILD create mode 100644 abs/extra/mythfeed/mythfeed.install create mode 100644 abs/extra/mythnuv2mkv/PKGBUILD create mode 100644 abs/extra/mythvodka/PKGBUILD create mode 100755 abs/extra/mythvodka/hulu_grabber.sh create mode 100644 abs/extra/mythvodka/mythvodka.diff create mode 100644 abs/extra/mythvodka/mythvodka.install create mode 100644 abs/extra/neon/PKGBUILD create mode 100644 abs/extra/nspr/PKGBUILD create mode 100644 abs/extra/nspr/nspr.pc.in create mode 100644 abs/extra/nss/PKGBUILD create mode 100644 abs/extra/nss/nss-config.in create mode 100644 abs/extra/nss/nss-nolocalsql.patch create mode 100644 abs/extra/nss/nss.pc.in create mode 100755 abs/extra/nvram-wake/PKGBUILD create mode 100644 abs/extra/ocaml/PKGBUILD create mode 100644 abs/extra/openjdk6/PKGBUILD create mode 100644 abs/extra/openjdk6/aatext_by_default.diff create mode 100644 abs/extra/openjdk6/fix_corba_cmds_path.diff create mode 100644 abs/extra/openjdk6/fix_jdk_cmds_path.diff create mode 100644 abs/extra/openjdk6/fontconfig-paths.diff create mode 100644 abs/extra/openjdk6/gcjwebplugin_xulrunner.diff create mode 100644 abs/extra/openjdk6/openjdk6.install create mode 100644 abs/extra/openjdk6/openjdk6.profile create mode 100644 abs/extra/opera/PKGBUILD create mode 100644 abs/extra/opera/opera-qt4-theme.patch create mode 100644 abs/extra/opera/opera.desktop create mode 100644 abs/extra/opera/opera_logo48.png create mode 100644 abs/extra/orbit2/PKGBUILD create mode 100644 abs/extra/oss/PKGBUILD create mode 100644 abs/extra/oss/hg-fix-devc.diff create mode 100644 abs/extra/oss/hg-latest-fixes.diff create mode 100644 abs/extra/oss/oss.install create mode 100644 abs/extra/oss/oss.rc create mode 100644 abs/extra/oss/oss.rm-init-scripts.patch create mode 100644 abs/extra/perl-yaml/PKGBUILD create mode 100755 abs/extra/phpmyadmin/PKGBUILD create mode 100644 abs/extra/pmount/PKGBUILD create mode 100644 abs/extra/pmount/pmount-dbus-close.patch create mode 100644 abs/extra/policykit-gnome/PKGBUILD create mode 100644 abs/extra/policykit-gnome/policykit-gnome.install create mode 100644 abs/extra/policykit/PKGBUILD create mode 100644 abs/extra/policykit/entry-leak.patch create mode 100644 abs/extra/policykit/pk-ck-api-change.patch create mode 100644 abs/extra/policykit/policykit.install create mode 100644 abs/extra/policykit/polkit-0.8-dbus-policy.patch create mode 100644 abs/extra/policykit/polkit.pam create mode 100644 abs/extra/postgresql-libs/PKGBUILD create mode 100644 abs/extra/postgresql/PKGBUILD create mode 100644 abs/extra/postgresql/build.patch create mode 100755 abs/extra/postgresql/postgresql create mode 100644 abs/extra/postgresql/postgresql.confd create mode 100644 abs/extra/postgresql/postgresql.pam create mode 100644 abs/extra/powertop/ChangeLog create mode 100644 abs/extra/powertop/PKGBUILD create mode 100644 abs/extra/printproto/PKGBUILD create mode 100644 abs/extra/pycrypto/PKGBUILD create mode 100644 abs/extra/pyopenssl/PKGBUILD create mode 100644 abs/extra/pyorbit/PKGBUILD create mode 100644 abs/extra/pyrex/ChangeLog create mode 100644 abs/extra/pyrex/PKGBUILD create mode 100644 abs/extra/python-m2crypto/PKGBUILD create mode 100644 abs/extra/python-pybluez/PKGBUILD create mode 100755 abs/extra/python-pymedia/PKGBUILD create mode 100644 abs/extra/pyusb/PKGBUILD create mode 100644 abs/extra/quilt/PKGBUILD create mode 100644 abs/extra/rarian/PKGBUILD create mode 100644 abs/extra/rarian/user-segfault.patch create mode 100644 abs/extra/read-edid/PKGBUILD create mode 100755 abs/extra/removecommercials/PKGBUILD create mode 100755 abs/extra/removecommercials/removecommercials create mode 100644 abs/extra/rhino/PKGBUILD create mode 100644 abs/extra/romdb/PKGBUILD create mode 100644 abs/extra/romdb/romdb.install create mode 100644 abs/extra/rrd_stats/PKGBUILD create mode 100644 abs/extra/rrd_stats/rrd_stats.install create mode 100644 abs/extra/rrd_stats/rrd_stats.tgz create mode 100644 abs/extra/rrd_stats/run_rrd.sh create mode 100644 abs/extra/rrdtool/ChangeLog create mode 100644 abs/extra/rrdtool/PKGBUILD create mode 100644 abs/extra/rtmpdump/PKGBUILD create mode 100644 abs/extra/ruby/PKGBUILD create mode 100644 abs/extra/sample-media/PKGBUILD create mode 100644 abs/extra/sample-media/audio/05-Hush.mp3 create mode 100644 abs/extra/sample-media/images/115_1573.jpg create mode 100644 abs/extra/sample-media/images/345-1217206791B81W.jpg create mode 100644 abs/extra/sample-media/images/classic-menugraph.png create mode 100644 abs/extra/sample-media/images/dvr_menugraph.png create mode 100644 abs/extra/sample-media/images/menu_diagram_color.png create mode 100644 abs/extra/sample-media/rom/PACMAN.SMC create mode 100644 abs/extra/sample-media/sample.install create mode 100644 abs/extra/sample-media/video/TripThe1939.mpeg create mode 100644 abs/extra/scanfw/PKGBUILD create mode 100644 abs/extra/scanfw/scanfw-98d.beta.tar.gz create mode 100644 abs/extra/scanfw/scanfw.install create mode 100644 abs/extra/scte65scan/PKGBUILD create mode 100644 abs/extra/sdl_gfx/PKGBUILD create mode 100644 abs/extra/sdl_image/PKGBUILD create mode 100644 abs/extra/sdl_image/SDL_image-IMG_lbm.patch create mode 100644 abs/extra/sdl_image/SDL_image-buffer-overflow.patch create mode 100644 abs/extra/sdl_mixer/PKGBUILD create mode 100644 abs/extra/sdl_net/PKGBUILD create mode 100644 abs/extra/sdl_pango/PKGBUILD create mode 100644 abs/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch create mode 100644 abs/extra/sdl_perl/PKGBUILD create mode 100644 abs/extra/sdl_sound/PKGBUILD create mode 100644 abs/extra/sdl_sound/flac.patch create mode 100644 abs/extra/sdl_ttf/PKGBUILD create mode 100644 abs/extra/sdlmame/ChangeLog create mode 100644 abs/extra/sdlmame/PKGBUILD create mode 100644 abs/extra/sdlmame/extras.tar.gz create mode 100644 abs/extra/sdlmame/sdlmame.install create mode 100644 abs/extra/sdlmame/sdlmame.sh create mode 100644 abs/extra/serdisplib/PKGBUILD create mode 100644 abs/extra/shepherd/PKGBUILD create mode 100644 abs/extra/slang/ChangeLog create mode 100644 abs/extra/slang/PKGBUILD create mode 100644 abs/extra/smartmontools/PKGBUILD create mode 100644 abs/extra/smartmontools/smartd create mode 100644 abs/extra/smpeg/PKGBUILD create mode 100644 abs/extra/smpeg/smpeg-0.4.4-gcc41.patch create mode 100644 abs/extra/snes9x/PKGBUILD create mode 100644 abs/extra/snes9x/snes9x-fixes2.patch create mode 100755 abs/extra/snes9x/snes9x.install create mode 100644 abs/extra/speex/PKGBUILD create mode 100644 abs/extra/spidermonkey/PKGBUILD create mode 100644 abs/extra/spidermonkey/header.patch create mode 100644 abs/extra/spidermonkey/spidermonkey-1.7-threadsafe.patch create mode 100644 abs/extra/startup-notification/PKGBUILD create mode 100644 abs/extra/strace/PKGBUILD create mode 100644 abs/extra/strace/no_linux_socket_h.patch create mode 100644 abs/extra/subversion/ChangeLog create mode 100644 abs/extra/subversion/PKGBUILD create mode 100644 abs/extra/subversion/subversion-neon.patch create mode 100644 abs/extra/subversion/svn create mode 100755 abs/extra/subversion/svnserve create mode 100644 abs/extra/subversion/svnserve.conf create mode 100644 abs/extra/swh-plugins/PKGBUILD create mode 100644 abs/extra/swig/PKGBUILD create mode 100644 abs/extra/sysstat/PKGBUILD create mode 100644 abs/extra/sysstat/sysstat create mode 100644 abs/extra/tablet-encode/PKGBUILD create mode 100644 abs/extra/tango-icon-theme/PKGBUILD create mode 100644 abs/extra/tatir/PKGBUILD create mode 100644 abs/extra/tatir/tatir.install create mode 100644 abs/extra/tatir/tatir.tar.bz2 create mode 100644 abs/extra/terminal/PKGBUILD create mode 100644 abs/extra/terminal/terminal-dont-die-on-dbus-kill.patch create mode 100644 abs/extra/terminal/terminal.install create mode 100644 abs/extra/thunar/PKGBUILD create mode 100644 abs/extra/thunar/__changelog create mode 100644 abs/extra/thunar/thunar.install create mode 100644 abs/extra/tightvnc/PKGBUILD create mode 100644 abs/extra/tightvnc/tightvnc-fontpath-xcolors.patch create mode 100644 abs/extra/tree/PKGBUILD create mode 100644 abs/extra/ttf-ms-fonts/PKGBUILD create mode 100644 abs/extra/ttf-ms-fonts/ttf-ms-fonts.install create mode 100644 abs/extra/unison/PKGBUILD create mode 100644 abs/extra/unison/ocaml-3.08-extnames.patch create mode 100644 abs/extra/unison/unison.desktop create mode 100644 abs/extra/unison/unison.install create mode 100644 abs/extra/unixodbc/PKGBUILD create mode 100644 abs/extra/v4l-dvb-dvico2/PKGBUILD create mode 100644 abs/extra/v4l-dvb-dvico2/fix-jdelvare-i2c-i2c-constify-client-address-data.patch create mode 100644 abs/extra/v4l-dvb-dvico2/v4l-dvb.install create mode 100644 abs/extra/v4l-dvb-dvico2/xc-bluebird.patch create mode 100644 abs/extra/vcdimager/PKGBUILD create mode 100644 abs/extra/vcdimager/__changelog create mode 100644 abs/extra/vcdimager/cdio.patch create mode 100644 abs/extra/vim/PKGBUILD create mode 100644 abs/extra/vim/__changelog create mode 100644 abs/extra/vim/fetch_patches.sh create mode 100644 abs/extra/vim/vim.install create mode 100644 abs/extra/vorbis-tools/ChangeLog create mode 100644 abs/extra/vorbis-tools/PKGBUILD create mode 100644 abs/extra/vorbis-tools/curl.patch create mode 100644 abs/extra/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch create mode 100644 abs/extra/vte/PKGBUILD create mode 100644 abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch create mode 100644 abs/extra/wavpack/PKGBUILD create mode 100644 abs/extra/webmin/PKGBUILD create mode 100644 abs/extra/webmin/run create mode 100644 abs/extra/webmin/webmin-config.tar.bz2 create mode 100644 abs/extra/webmin/webmin-pacman.tar.bz2 create mode 100644 abs/extra/webmin/webmin.install create mode 100644 abs/extra/webmin/webmin.rc create mode 100644 abs/extra/windowmaker/PKGBUILD create mode 100644 abs/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2 create mode 100644 abs/extra/wireshark/PKGBUILD create mode 100644 abs/extra/wireshark/wireshark.desktop create mode 100644 abs/extra/wireshark/wireshark.png create mode 100755 abs/extra/wol/PKGBUILD create mode 100755 abs/extra/wol/wakeonlan.sh create mode 100644 abs/extra/wxgtk/ChangeLog create mode 100644 abs/extra/wxgtk/PKGBUILD create mode 100644 abs/extra/wxgtk/__changelog create mode 100644 abs/extra/x11vnc/PKGBUILD create mode 100644 abs/extra/xalan-java/PKGBUILD create mode 100644 abs/extra/xautomation/PKGBUILD create mode 100644 abs/extra/xdg-utils/PKGBUILD create mode 100644 abs/extra/xe/PKGBUILD create mode 100644 abs/extra/xe/xe.install create mode 100644 abs/extra/xerces2-java/PKGBUILD create mode 100644 abs/extra/xfsdump/PKGBUILD create mode 100644 abs/extra/xine-lib/ChangeLog create mode 100644 abs/extra/xine-lib/PKGBUILD create mode 100644 abs/extra/xine-lib/__changelog create mode 100644 abs/extra/xine-lib/xine-header.patch create mode 100644 abs/extra/xine-lib/xine-imagemagick.patch create mode 100644 abs/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch create mode 100755 abs/extra/xine-lib/xine.install create mode 100644 abs/extra/xine-ui/ChangeLog create mode 100644 abs/extra/xine-ui/PKGBUILD create mode 100644 abs/extra/xmbmon/Makefile.in.patch create mode 100644 abs/extra/xmbmon/PKGBUILD create mode 100644 abs/extra/xmlto/PKGBUILD create mode 100644 abs/extra/xmms/PKGBUILD create mode 100644 abs/extra/xmms/id3v2.patch create mode 100644 abs/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch create mode 100644 abs/extra/xmms/xmms-fix.diff create mode 100644 abs/extra/xmms/xmms-menu.patch create mode 100644 abs/extra/xscreensaver/ChangeLog create mode 100644 abs/extra/xscreensaver/LICENSE create mode 100644 abs/extra/xscreensaver/PKGBUILD create mode 100644 abs/extra/xscreensaver/__changelog create mode 100644 abs/extra/xscreensaver/xscreensaver create mode 100644 abs/extra/xscreensaver/xscreensaver.install create mode 100644 abs/extra/xscreensaver/xscreensaver.pam create mode 100644 abs/extra/xscreensaver/xscreensavers create mode 100644 abs/extra/xulrunner/PKGBUILD create mode 100644 abs/extra/xulrunner/mozconfig create mode 100644 abs/extra/xulrunner/xulrunner.install create mode 100644 abs/extra/zip/ChangeLog create mode 100644 abs/extra/zip/PKGBUILD create mode 100644 abs/extra/zip/zip-3.0-build.patch create mode 100644 abs/extra/zip/zip-3.0-exec-stack.patch create mode 100644 abs/extra/zip/zip-3.0-no-crypt.patch create mode 100644 abs/extra/zip/zip-3.0-pic.patch diff --git a/abs/core/Kernel_rebuild_list b/abs/core/Kernel_rebuild_list new file mode 100644 index 0000000..d9136ad --- /dev/null +++ b/abs/core/Kernel_rebuild_list @@ -0,0 +1,8 @@ +Kernel +lirc +nvidia +rt2500 +tiacx +madwifi +ndiswrapper +oss diff --git a/abs/core/LinHES-config-svn/LinHES-release b/abs/core/LinHES-config-svn/LinHES-release new file mode 100644 index 0000000..ecc4a3e --- /dev/null +++ b/abs/core/LinHES-config-svn/LinHES-release @@ -0,0 +1 @@ +LinHES R6.00.07 (Scale preview) diff --git a/abs/core/LinHES-config-svn/LinHES.install b/abs/core/LinHES-config-svn/LinHES.install new file mode 100644 index 0000000..a0a9d31 --- /dev/null +++ b/abs/core/LinHES-config-svn/LinHES.install @@ -0,0 +1,78 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { + rm -f /etc/issue + rm -f /etc/arch-release + +} + +# arg 1: the new package version +post_install() { + if [ ! -f /etc/blacklist.package ] + then + echo "List of packages to ignore" > /etc/blacklist.package + echo "one package per line" >> /etc/blacklist.package + fi + +LINE="mythtv ALL = NOPASSWD:/usr/MythVantage/bin/mythvantage" +LINE1="mythtv ALL = NOPASSWD:/usr/MythVantage/bin/MythVantage" +for i in "$LINE" "$LINE1" +do + cp /etc/sudoers /etc/sudoers.bak + grep -q "$i" /etc/sudoers + if [ $? != 0 ] + then + echo "$i" >> /etc/sudoers + visudo -cf /etc/sudoers + if [ ! $? = 0 ] + then + cp /etc/sudoers.bak /etc/sudoers + echo $i + echo "Error adding files" + exit 1 + fi + fi +done + + +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + /bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + . /etc/profile + ps -ef|grep mysqld|grep -v grep + status=$? + echo "status $status" + if [ $status = 0 ] + then + restore_default_settings.sh -c load + fi + if [ ! -f /etc/blacklist.package ] + then + echo "List of packages to ignore" > /etc/blacklist.package + echo "one package per line" >> /etc/blacklist.package + fi +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/LinHES-config-svn/MythVantage.sh b/abs/core/LinHES-config-svn/MythVantage.sh new file mode 100755 index 0000000..286c908 --- /dev/null +++ b/abs/core/LinHES-config-svn/MythVantage.sh @@ -0,0 +1,3 @@ +export MV_ROOT=/usr/MythVantage +export PATH=$PATH:$MV_ROOT/bin +export TEMPLATES=$MV_ROOT/templates diff --git a/abs/core/LinHES-config-svn/PKGBUILD b/abs/core/LinHES-config-svn/PKGBUILD new file mode 100755 index 0000000..32645a2 --- /dev/null +++ b/abs/core/LinHES-config-svn/PKGBUILD @@ -0,0 +1,57 @@ +pkgname=LinHES-config-svn +pkgver=1.0 +pkgrel=299 +conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev ) +pkgdesc="Install and configure your system" +depends=(bc libstatgrab mysql-python expect curl dnsutils parted sg3_utils nmbscan system-templates ) +arch=('i686') + +source=(mythinstall.bin myth_user_call file_time_offset.py install-ui.xml install_proxy.sh install_functions.sh systemconfig.sh install_db_chroot.sh restore_default_settings.sh xconfig.sh timezip.py soundconfig.sh LinHES-release issue MythVantage.sh create_master.sh build_diskless.sh networkconfig.sh timezone.bin autocard.py restore_km_db_chroot.sh README) + +install=LinHES.install +build() { + mkdir -p $startdir/pkg/etc + mkdir -p $startdir/pkg/usr/share/mythtv/themes/default + + MVDIR=$startdir/pkg/usr/MythVantage + mkdir $startdir/pkg/etc/profile.d + install -m 0755 MythVantage.sh $startdir/pkg/etc/profile.d/MythVantage.sh + mkdir -p $MVDIR/bin + mkdir -p $MVDIR/etc + +#copy in all the installer specific stuff + install -m0700 myth_user_call $MVDIR/bin/myth_user_call + install -m 0755 install_proxy.sh $MVDIR/bin/install_proxy.sh + install -m 0755 install_functions.sh $MVDIR/bin/install_functions.sh + install -m 0755 systemconfig.sh $MVDIR/bin/systemconfig.sh + install -m 0755 xconfig.sh $MVDIR/bin/xconfig.sh + install -m 0755 install_db_chroot.sh $MVDIR/bin/install_db_chroot.sh + install -m 0755 restore_km_db_chroot.sh $MVDIR/bin/restore_km_db_chroot.sh + install -m 0755 restore_default_settings.sh $MVDIR/bin/restore_default_settings.sh + install -m 0755 soundconfig.sh $MVDIR/bin/soundconfig.sh + install -m 0755 networkconfig.sh $MVDIR/bin/networkconfig.sh + install -m 0755 create_master.sh $MVDIR/bin/create_master.sh + install -m 0755 build_diskless.sh $MVDIR/bin/build_diskless.sh + install -m 0755 timezone.bin $MVDIR/bin/timezone.bin + install -m 0755 timezip.py $MVDIR/bin/timezip.py + install -m 0755 autocard.py $MVDIR/bin/autocard.py + #Readme used for mythvantage -r + install -m 0755 README $MVDIR/README + + mkdir -p $startdir/pkg/usr/bin + install -m 0755 file_time_offset.py $startdir/pkg/usr/bin/file_time_offset.py +#copy in the branding stuff + install -m 0755 LinHES-release $startdir/pkg/etc/LinHES-release + install -m 0755 issue $startdir/pkg/etc/issue + +# copy over the ui files + install -m 0755 install-ui.xml $startdir/pkg/usr/share/mythtv/themes/default/ + +#copy in the binaries + install -m 4755 mythinstall.bin $MVDIR/bin/MythVantage + cd $MVDIR/bin + ln -s MythVantage mythvantage + ln -s MythVantage mythinstall + cd - +} + diff --git a/abs/core/LinHES-config-svn/README b/abs/core/LinHES-config-svn/README new file mode 100644 index 0000000..a615389 --- /dev/null +++ b/abs/core/LinHES-config-svn/README @@ -0,0 +1,10 @@ +Thanks for giving this Preview Release of LinHES a try! +While the core of LinHes is quite stable, we still need to +implement some features. At the moment, LinHES is compiled for i686. If you have an i586 class system, LinHES won't work for you. We do intend for LinHES to be full i586 compatible. In addition, we still have to implement support for more remotes and blasters. The TV out of the PVR-350 isn't supported at this time. + +Support for LinHES can be obtained at: +http://linhes.org +irc.freenode.net #linhes + +Bugs can be reported at: +http://linhes.org/flyspray diff --git a/abs/core/LinHES-config-svn/add_service.sh b/abs/core/LinHES-config-svn/add_service.sh new file mode 100755 index 0000000..190d604 --- /dev/null +++ b/abs/core/LinHES-config-svn/add_service.sh @@ -0,0 +1,15 @@ +#!/bin/bash +SERVICE_DIR=/var/service +SCRIPT_DIR=/etc/sv +if [ -d $SCRIPT_DIR/$1 ] +then + if [ -d $SERVICE_DIR/$1 ] + then + echo "$1 already there" + else + ln -s $SCRIPT_DIR/$1 $SERVICE_DIR/$1 + echo "adding $1" + fi +else + echo "couldn't find $SCRIPT_DIR/$1" +fi diff --git a/abs/core/LinHES-config-svn/autocard.py b/abs/core/LinHES-config-svn/autocard.py new file mode 100755 index 0000000..03eecac --- /dev/null +++ b/abs/core/LinHES-config-svn/autocard.py @@ -0,0 +1,307 @@ +#!/usr/bin/python +# import MySQL module +#jm +import MySQLdb +import sys +import getopt +import socket +import os +import time +import string +import glob +from string import letters +from string import digits +def INSERTNULL_SOURCE(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit): + cursor = db.cursor() + cursor.execute("INSERT INTO videosource(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit) VALUES(%s,%s,%s,%s,%s,%s,%s);",(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit)) + +def INSERTCARD_INTOMYTH(Device,Driver,Cardvendor): + global currenthostname + print Device + print Driver, + print Cardvendor + cursor = db.cursor() + insert = "false" + if Driver == "ivtv" : + cardtype="MPEG" + defaultinput="Tuner 1" + insert="true" + if Cardvendor == "pcHDTV HD3000 HDTV": + insert="false" + cardtype ="whocares" + + #print insert + if insert == "true" : + cursor.execute("INSERT INTO capturecard (videodevice,cardtype,defaultinput,hostname) VALUES(%s,%s,%s,%s);",(Device,cardtype,defaultinput,currenthostname)) + +def INSERTHDR_INTOMYTH(deviceid,tuner_number): + cardtype='HDHOMERUN' + defaultinput='MPEG2TS' + global currenthostname + print deviceid + print cardtype + print defaultinput + print tuner_number + cursor = db.cursor() + #print insert + cursor.execute("INSERT INTO capturecard (videodevice,cardtype,defaultinput,dbox2_port ,hostname) VALUES(%s,%s,%s,%s,%s);",(deviceid,cardtype,defaultinput,tuner_number,currenthostname)) + +def INSERTAUTOCARD(): + global cardlist + global currenthostname + # create a cursor + cursor = db.cursor() + + + for i in range( 1 , len(cardlist)): + insert = "false" +# print cardlist[i] + Device=cardlist[i][0] + Driver=cardlist[i][1] + Cardvendor=cardlist[i][2] + Businfo=cardlist[i][3] + if Driver == "ivtv" : + insert="true" + devicestatus="unused" + if Cardvendor == "pcHDTV HD3000 HDTV": + insert="false" + cardtype ="whocares" + if Driver == "hdr": + insert="true" + devicestatus="unused" + + if insert == "true" : + cursor.execute("delete from autocard where uniqid=%s;",(Businfo)) + if Driver=="hdr": + Cardvendor="HDHOMERUN Tuner 1" + cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname)) + Cardvendor="HDHOMERUN Tuner 2" + cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname)) + + else: + cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname)) + + + +def PRINTINFO(): + global cardlist + + for list in cardlist: + if list != "_placeholder_": + print list + #print "-------------" + +def GATHER_HDR(): + global cardlist + command="/usr/bin/hdhomerun_config --discover" + results=os.popen(command,'r') + line=results.readline() + if line.strip().split()[0] == "no": + print "HDHOMERUN not detected" + else: + print line + hdrdevice=line.strip().split()[2] + print hdrdevice + Driver="hdr" + Device=hdrdevice + Cardtype="HDHOMERUN" + Businfo=hdrdevice + cardprops = [Device,Driver , Cardtype , Businfo] + cardlist.append(cardprops) + + +def GATHER_v4l_CARDS(): + global cardlist + cardlist=["_placeholder_"] + # print "Looking for v4l cards" + try: + filelist = os.listdir('/dev/v4l/') + except OSError: + filelist=" " + #fakelist=['/dev/v4l/video3', 'ivtv', 'WinTV PVR 500 (unit #2)', '0000:04:09.0'] + #cardlist.append(fakelist) + try: + filelist = glob.glob("/dev/v4l/video?") + Driver="" + Cardtype="" + Businfo="" + numcards = 0 + for Device in filelist: + #print card + numcards = numcards+1 + cmd = 'v4l2-ctl -D -d' + Device + for line in os.popen(cmd).readlines(): + #print line + pos = string.find(line,"Driver name") + if pos >=0: + splitline= line.split(':') + Driver=splitline[1].strip() + pos = string.find(line,"Card type") + if pos >=0: + splitline= line.split(':') + Cardtype=splitline[1].strip() + + pos = string.find(line,"Bus info") + if pos >=0: + splitline= line.split(':',1) + Businfo=splitline[1].strip() + + #print Device,Driver , Cardtype , Businfo,numcards + cardprops = [Device,Driver , Cardtype , Businfo] + cardlist.append(cardprops) + except IOError: + print "no v4l cards found" + sys.exit(2) + + +def WRITEUDEV_IVTV(): + global insertmyth + cursor = db.cursor() + #add ivtv,cid lookup loop through until empty. + cursor.execute("select distinct(uniqid) from autocard where driver='ivtv' and devicestatus='will-add'") + cidrows = cursor.fetchall() + for row in cidrows: + cid=row[0] + cursor.execute("select dev,driver,description,devicestatus,hostname from autocard where uniqid=%s limit 1;",(cid)) + result = cursor.fetchone() + description=result[2] + driver='DRIVERS==\"ivtv\"' + ATTRNAME='ATTR{name}=="ivtv? encoder MPG"' + KERNELS='KERNELS==\"' + KERNELS+=cid + KERNELS+="\"" + #filter out non digit or chars + keep=letters.join(digits) + description=filter(lambda c: c in keep, description) + devnode="ivtv/" + #devnode+=description + "_" + udevcid=cid.partition(":") + devnode+=udevcid[2] + devnode+="_video" + UDEV_RULE=driver +', '+ATTRNAME+', '+ KERNELS +', ' + 'NAME=\"' + devnode + '"' + print "Here is the udev rule" + print UDEV_RULE + filename='/etc/udev/rules.d/11-ivtv-'+cid+'.rules' + file = open(filename,'w') + file.write(UDEV_RULE) + if ( insertmyth == "true"): + devnode="/dev/"+devnode + INSERTCARD_INTOMYTH(devnode,"ivtv",description) + cursor.execute("update autocard set devicestatus='done' where uniqid=%s;",(cid)) +#now insert HDR + cursor.execute("select distinct(uniqid),description from autocard where driver='hdr' and devicestatus='will-add'") + cidrows = cursor.fetchall() + for row in cidrows: + if ( insertmyth == "true"): + deviceid=row[0] + #cardtype="HDHOMRUN" + #defaultinput="MPEG2TS" + dbox2_port=row[1] + tuner_number=dbox2_port.rpartition(' ')[2] + INSERTHDR_INTOMYTH(deviceid,tuner_number) + cursor.execute("update autocard set devicestatus='done' where uniqid=%s and description=%s;",(deviceid,dbox2_port)) + + + +def CLEARAUTOCARD(): + cursor = db.cursor() + cursor.execute("delete from autocard") + +def RELOADUDEV(): + print "relaoding udev rules" + os.system('udevcontrol reload_rules') + os.system('rmmod ivtv') + os.system('udevtrigger') + + +def usage(): + print " -h help" + print " -g gather and print out the found cards" + print " -w write out the udev rules" + print " -i insert cards into myth that are marked will-add(only used with -w)" + print " -r reload udev rules" + print " -c clear the autocard db" + +def main(argv): + global db + global cardlist + global currenthostname + currenthostname="" + writeudev="false" + global insertmyth + insertmyth ="false" + + db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + try: + cursor = db.cursor() + cursor.execute("describe autocard;") + except MySQLdb.Error, e: + cursor.execute("create table autocard(dev varchar(50),driver varchar(50),description varchar(50),uniqid varchar(50), devicestatus varchar(50),hostname varchar(50));") + print "table created" + + if ( currenthostname == "" ): + currenthostname = socket.gethostname() + + + try: + opts, args = getopt.getopt(argv, "hgwircd", ["help", "gathercards", "writeudev" ,"insert" , "reloadudev" , "clearautocard"] ) + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit() + elif opt in ( "-g" , "--gathercards"): + GATHER_v4l_CARDS() + GATHER_HDR() + INSERTAUTOCARD() + PRINTINFO() + elif opt in ("-w", "--writeudev"): + writeudev="true" + elif opt in ("-i", "--insert"): + insertmyth="true" + elif opt in ( "-r" , "--reloadudev"): + RELOADUDEV() + elif opt in ( "-c" , "--clearautocard"): + CLEARAUTOCARD() + elif opt in ( "-d" ): + INSERTCARD_INTOMYTH("file:/myth/video/TripThe1939.mpeg","ivtv","Dummy tuner") + INSERTNULL_SOURCE("dummy","/bin/true","","default","NULL","NULL","0") + + if ( writeudev == "true"): + WRITEUDEV_IVTV() + + + + + + +if __name__ == "__main__": + main(sys.argv[1:]) + + + + + +#mysql> create table autocard(dev varchar(50),driver varchar(50),description varchar(50),uniqid varchar(50), devicestatus varchar(50),hostname varchar(50)); +#Query OK, 0 rows affected (0.14 sec) + +#mysql> describe autocard; +#+--------------+-------------+------+-----+---------+-------+ +#| Field | Type | Null | Key | Default | Extra | +#+--------------+-------------+------+-----+---------+-------+ +#| dev | varchar(50) | YES | | NULL | | +#| driver | varchar(50) | YES | | NULL | | +#| description | varchar(50) | YES | | NULL | | +#| uniqid | varchar(50) | YES | | NULL | | +#| devicestatus | varchar(50) | YES | | NULL | | +#| hostname | varchar(50) | YES | | NULL | | +#+--------------+-------------+------+-----+---------+-------+ + + + + + + + + diff --git a/abs/core/LinHES-config-svn/bpopup-ui.xml b/abs/core/LinHES-config-svn/bpopup-ui.xml new file mode 100755 index 0000000..df0598b --- /dev/null +++ b/abs/core/LinHES-config-svn/bpopup-ui.xml @@ -0,0 +1,164 @@ + + + + + + + + #ffff00 + #000000 + 24 + 3,3 + yes + + + + #9999cc + 18 + yes + + + + #ffff00 + #000000 + 18 + 3,3 + yes + + + + #ffffff + 18 + yes + + + + #ffffff + 50 + yes + + + #ff0000 + #000000 + 16 + 2,2 + yes + + + + #ffff00 + 14 + yes + + + + 0,0,800,600 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/LinHES-config-svn/build_diskless.sh b/abs/core/LinHES-config-svn/build_diskless.sh new file mode 100755 index 0000000..4dfd5fc --- /dev/null +++ b/abs/core/LinHES-config-svn/build_diskless.sh @@ -0,0 +1,143 @@ +#!/bin/bash +#CD=/mnt/cd +. /etc/profile +. /etc/systemconfig + +TFTP=/data/srv/tftp +CD=/data/srv/tftp/live +DESTCD=/data/srv/tftp/CD +BASE=/data/srv/tftp/masterbuild + +MODULES=$DESTCD/MythVantage/base/ +myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` +SRCFILES=$BASE/mnt/live/mnt/MythVantage/base/ + +function log () { +echo $1 +} + +function check_xvfb () { +export DISPLAY=127.0.0.1:25 + Xvfb -ac :25 & + +} + + +function create_base_image() { +echo $SRCFILES +if [ -f $SRCFILES/data.lzm ] +then + mkdir $HOST_IMG_DIR + cd $SRCFILES + echo "Creating image.." > $BASE/tmp/.install_state + LIST=`ls *.lzm` + for i in $LIST + do + echo $i + echo $i > $BASE/tmp/.install_percent + lzm2dir $i \/$HOST_IMG_DIR + done + + for i in sys proc dev tmp + do + mkdir /$HOST_IMG_DIR/$i + done + + chmod 777 /$HOST_IMG_DIR/tmp + mknod /$HOST_IMG_DIR/dev/null c 1 3 + mknod /$HOST_IMG_DIR/dev/null c 1 5 + mknod /$HOST_IMG_DIR/dev/console c 5 1 + chmod +s /$HOST_IMG_DIR/usr/bin/Xorg + chmod +s /$HOST_IMG_DIR/usr/bin/crontab + chmod +s /$HOST_IMG_DIR/usr/bin/sudo + chmod +s /$HOST_IMG_DIR/bin/mount + #copy fstab from masterbuild + cp -f $BASE/etc/fstab /$HOST_IMG_DIR/etc/fstab + echo "Done: installing data" > $BASE/tmp/.install_state + return 0 +else + echo "Error: no modules" > $BASE/tmp/.install_state + log "couldn't find modules to install" + return 1 +fi +} + +function configure_image () { + echo "Configuring system" > $BASE/tmp/.install_state + cp -f $BASE/etc/systemconfig $HOST_IMG_DIR/etc/systemconfig + chown root:mythtv $HOST_IMG_DIR/etc/systemconfig + chmod 775 "$HOST_IMG_DIR" /etc/systemconfig + cp /etc/mtab $HOST_IMG_DIR/etc/mtab + mount --bind /dev $HOST_IMG_DIR/dev + + chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install +#copy syssettings template to here. + SE=$BASE$TEMPLATES/settings/syssettings + mkdir -p $HOST_IMG_DIR/$TEMPLATES/settings/syssettings + cp -rp $SE/* ${HOST_IMG_DIR}/$TEMPLATES/settings/syssettings + chown root:mythtv $HOST_IMG_DIR/etc/systemconfig + chown -R mythtv:mythtv $HOST_IMG_DIR/$TEMPLATES/settings/syssettings + chmod -R 775 $HOST_IMG_DIR/$TEMPLATES/settings/syssettings +#update remotedb with this host settings + OLDDISPLAY=$DISPLAY + check_xvfb + chroot $HOST_IMG_DIR $MV_ROOT/bin/MythVantage -t restore,default_1 + chroot $HOST_IMG_DIR $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + if [ ! $? = 0 ] + then + touch $mountpoint/tmp/.dbsysfailed + chmod 777 $mountpoint/tmp/.dbsysfailed + else + #Run second time + chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install + chroot "$HOST_IMG_DIR" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + fi +chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install +cp -f $BASE/etc/X11/xorg.conf $HOST_IMG_DIR/etc/X11/xorg.conf +echo "Done" > $BASE/tmp/.install_state +DISPLAY=$OLDDISPLAY + +#cp /tmp/mythvantage_install.log $HOST_IMG_DIR/var/log/ +} + +function create_tftp_boot () { + + CFGFILE=$TFTP/pxelinux.cfg/01-$2 + echo "DEFAULT mythfe" > $CFGFILE + echo "LABEL mythfe" >> $CFGFILE + echo "kernel masterbuild/boot/vmlinuz26STB" >> $CFGFILE + echo "append vga=normal root=/dev/nfs rw netboot nfsroot=$myip:/data/srv/tftp/$1 ip=dhcp init=/sbin/runit" >> $CFGFILE + echo "TIMEOUT 2" >> $CFGFILE +} + +function create_nfs_export () { +echo "/data/srv/tftp/$1 *(rw,no_root_squash,anonuid=1000,anongid=1000) " >> /etc/exports +exportfs -arv +} + +#-------------------------------------------------------------------------------MAIN PROGRAM --------------------------------------------------------------------- +if [ x$1 = x -o x$2 = x ] +then + echo "usage: hostname macaddress" + exit 1 +fi + +image_name=$1 +mac_address=`echo $2| tr "[:upper:]" "[:lower:]"` + +echo "using image_name of $image_name" +echo "using mac_address of $mac_address" + +HOST_IMG_DIR=$TFTP/$1 + +create_base_image $image_name +configure_image +umount $HOST_IMG_DIR/dev +create_tftp_boot $image_name $mac_address +create_nfs_export $image_name + + + + +#create_dhcp_entry $mac_address + diff --git a/abs/core/LinHES-config-svn/checkout_MythVantage.sh b/abs/core/LinHES-config-svn/checkout_MythVantage.sh new file mode 100755 index 0000000..2583e6b --- /dev/null +++ b/abs/core/LinHES-config-svn/checkout_MythVantage.sh @@ -0,0 +1,45 @@ +#!/bin/bash +MYDIR=`pwd` +MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/core-testing\/mythtv\/trunk\/mythtv\/src\/mythtv" + +function setup_links { +rm mythinstall.bin +rm mythbeselect.bin +ln -s $MYDIR/src/MythVantage-app/mythinstall/mythinstall ./mythinstall.bin +ln -s $MYDIR/src/MythVantage-app/mythbeselect/mythbeselect ./mythbeselect.bin +} + +function dl_repo { +mkdir src +cd src +if [ ! -d MythVantage-app ] +then + git clone http://mythvantage.com/MythVantage-app.git/ + cd MythVantage-app + git checkout --track -b MYTHUI origin/MYTHUI + cd $MYDIR + setup_links + cd - +else + echo "updating exisiting tree" + cd MythVantage-app + git pull + git merge + cd - +fi + + +} + +dl_repo +sed -i "s/^MYTHPATH.*$/MYTHPATH\=\"$MYTHPATH\"/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro +sed -i "s/#define __MVAPP__/\/\/#define __MVAPP__/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h +sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h + +echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythbeselect/mythberestart.pro +echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro +cd $MYDIR/src/MythVantage-app/mythinstall && qmake +make || exit 1 +cd $MYDIR/src/MythVantage-app/mythbeselect && qmake +make ||exit 1 + diff --git a/abs/core/LinHES-config-svn/create_master.sh b/abs/core/LinHES-config-svn/create_master.sh new file mode 100755 index 0000000..1e641b4 --- /dev/null +++ b/abs/core/LinHES-config-svn/create_master.sh @@ -0,0 +1,57 @@ +#!/bin/bash +#CD=/mnt/cd +CD=/data/srv/tftp/live +DESTCD=/data/srv/tftp/CD +DEST=/data/srv/tftp/masterbuild +MODULES=$DESTCD/MythVantage/base/ +myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` + +mkdir -p $DESTCD +mkdir -p $DEST + +mount $CD +status=0 +if [ -f $CD/MythVantage/base/data.lzm ] +then + status=0 +else + status=1 +fi +if [ x$status = x0 ] +then + echo "copying to disk" + cp -rp $CD/* $DESTCD + cd $MODULES + for i in *.lzm + do + echo $i + lzm2dir $i \/$DEST + done + for i in sys proc dev tmp + do + mkdir $DEST/$i + done + chmod 777 /$DEST/tmp + mknod $DEST/dev/null c 1 3 + mknod $DEST/dev/null c 1 5 + mknod $DEST/dev/console c 5 1 + chmod +s $DEST/usr/bin/Xorg + chmod +s $DEST/usr/bin/crontab + chmod +s $DEST/usr/bin/sudo + chmod +s $DEST/bin/mount +fi +if [ ! -f $DEST/etc/fstab.bak ] +then + cp $DEST/etc/fstab $DEST/etc/fstab.bak +fi +tac $DEST/etc/fstab.bak|tail +4|tac > $DEST/etc/fstab +echo "$myip:/data/srv/tftp/masterbuild / nfs" >> $DEST/etc/fstab +echo "/data/srv/tftp/masterbuild *(rw,no_root_squash,anonuid=1000,anongid=1000)" >> /etc/exports + + +exportfs -arv + +#copy in the modules +mkdir -p $DEST/mnt/live/mnt/ +mv $DESTCD/* $DEST/mnt/live/mnt/ + diff --git a/abs/core/LinHES-config-svn/file_time_offset.py b/abs/core/LinHES-config-svn/file_time_offset.py new file mode 100755 index 0000000..f2973d0 --- /dev/null +++ b/abs/core/LinHES-config-svn/file_time_offset.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + + +import time +import os +import glob +import getopt +import sys +def main(argv): + filecount=0 +# root = "/tmp" +# offset = 4 + now = int(time.time()) + + + try: + opts, args = getopt.getopt(argv, "hs:d:") + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + print "-s seconds -d /testdir" + print "default if 4 seconds" + sys.exit() + elif opt in ( "-s" ): + offset = int(arg) + elif opt in ("-d"): + root = arg + + for item in glob.glob(root+"/*"): + lastmodDate = os.path.getmtime(item) + tdiff= now-lastmodDate + #print tdiff, offset + + if tdiff > offset: + filecount+=1 + print filecount +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/abs/core/LinHES-config-svn/install-ui.xml b/abs/core/LinHES-config-svn/install-ui.xml new file mode 100755 index 0000000..2b3a043 --- /dev/null +++ b/abs/core/LinHES-config-svn/install-ui.xml @@ -0,0 +1,175 @@ + + + + + + + + #ffff00 + #000000 + 20 + 3,3 + yes + + + + #9999cc + 18 + yes + + + + #ffff00 + #000000 + 18 + 3,3 + yes + + + + #ffffff + 18 + yes + + + + #ffffff + 50 + yes + + + #ff0000 + #000000 + 16 + 2,2 + yes + + + + #ffff00 + 14 + yes + + + #9999cc + 12 + no + + + + 0,0,800,600 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/LinHES-config-svn/install_db_chroot.sh b/abs/core/LinHES-config-svn/install_db_chroot.sh new file mode 100755 index 0000000..808dbb9 --- /dev/null +++ b/abs/core/LinHES-config-svn/install_db_chroot.sh @@ -0,0 +1,117 @@ +#!/bin/bash +. /etc/profile +. /etc/systemconfig + + +myhost=$hostname +hostname $myhost +echo $myhost > /etc/hostname +echo "$0 hostname is $hostname" + +. $MV_ROOT/bin/install_functions.sh +#myhost=`cat /etc/hostname` + +# Before this script is called, the mysqld that facilitated the installation is killed. +# We need to make sure to stop and start the mysqld that will be used post-install so +# that the database can be initialized. + +/etc/rc.d/mysqld stop +killall -9 mysqld +/etc/rc.d/mysqld start +sleep 1 + +# Put a limit on how many times we try to (re-)start MySQL +success_test() { + # parameter: number of tries to start mysqld so far + PID=`pidof -o %PPID /usr/sbin/mysqld` + if [ -z "$PID" ]; then # mysqld isn't running + if [ $1 -gt 3 ]; then + echo "ERROR: Failed to start MySQL server in $1 attempts." + sleep 5 + exit 1 + else + echo "Tried $1 time(s) to start MySQL server." + return 1 + fi + else # mysqld is running + return 0 + fi + # should never get here + return 1 +} + +mysqld_tries=0 +# See if MySQL server is running; try several ways to start it if it's not. +while true; do + success_test $mysqld_tries + if [ $? -eq 0 ]; then + echo "MySQL server is running" + break + else + echo "MySQL server is not running. Trying to start it." + # Maybe it just needs to be started + sleep 1 + /etc/rc.d/mysqld start + mysqld_tries=$((mysqld_tries + 1)) + success_test $mysqld_tries + if [ $? -eq 0 ]; then + echo "MySQL server has been started" + break + else + echo "MySQL server may not be installed. Trying to install it." + # Maybe it's not installed; try (re-)installing it and starting it + sleep 1 + pacman --noconfirm -Sf mysql + sleep 1 + /etc/rc.d/mysqld start + mysqld_tries=$((mysqld_tries + 1)) + success_test $mysqld_tries + if [ $? -eq 0 ]; then + echo "MySQL server has been installed and started" + break + else + echo "MySQL server would not start, even after (re-)installing it." + fi + fi + fi +done + +# At this point, MySQL server should be up and running + +while true; do + mysql -e "show databases;" + + if [ $? -eq 0 ]; then + pacman --noconfirm -R mythdb-initial + pacman --noconfirm -S mythdb-initial + $MV_ROOT/bin/restore_default_settings.sh -c load + DISPLAY=127.0.0.1:0 $MV_ROOT/bin/MythVantage -t restore,default_1 + $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + $MV_ROOT/bin/systemconfig.sh misc,hostype,this_is_install + + update_db_settings HostServiceMythWEB "1" + echo 'UseMythWEB="1"' >> /etc/systemconfig + + #update database to allow user jobs on this host. + $MV_ROOT/bin/restore_default_settings.sh -c USERJOBALLOW + $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + #if [ -d /var/lib/mysql/mythconverg ] + if [ -d /data/srv/mysql/mythconverg ]; then + # pacman --noconfirm -R webcalendar + # pacman --noconfirm --nodeps -S webcalendar + break + else + echo "Failed to create mythconverg database. Will re-try." + sleep 1 + fi +# if [ $SystemType = "Master_backend" ] +# then +# $MV_ROOT/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost +# fi + else + echo "Failed to look for databases. Will re-try." + sleep 1 + fi +done +/etc/rc.d/mysqld stop +#umount /proc diff --git a/abs/core/LinHES-config-svn/install_functions.sh b/abs/core/LinHES-config-svn/install_functions.sh new file mode 100755 index 0000000..4f6f7ed --- /dev/null +++ b/abs/core/LinHES-config-svn/install_functions.sh @@ -0,0 +1,621 @@ +#!/bin/bash +. /etc/profile +disk=$2 +mountpoint=new_boot + +#------------------------------------------- +MYTHDBUSER=mythtv +MYTHTVPASSWD=mythtv +CMDLINE=$(cat /proc/cmdline) +hostname=`hostname` +MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD mythconverg -B --exec" +BASE="" + + +function update_db_settings () { + + echo "setting database value $1 to $2 for $hostname" + $MYSQLCMD_C "delete from settings where value='${1}' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set value='${1}', data='${2}' , hostname=\"$hostname\";" +} + +function random_theme () { +THEMES="basic-blue +basic-green +basic-red +basic-purple +basic-amber" + +theme=($THEMES) # Read into array variable. + +num_themes=${#theme[*]} # Count how many elements. + +pick=${theme[$((RANDOM%num_themes))]} +echo "Selected $pick as the theme" +update_db_settings Theme "$pick" +} + + +function splash_setup (){ + echo $CMDLINE | grep -q splash=silent + if [ $? -eq 0 ] + then + update_db_settings Hostbootsplash 1 + else + update_db_settings Hostbootsplash 0 + fi +} + + +function setupremote { + [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` + if [ -d $TEMPLATES/remotes/$Remotetype ] + then + cd $TEMPLATES/remotes/$Remotetype + for i in lircd* + do + cat $i >> $BASE/etc/lircd.conf + done + cp -f lircrc* $BASE/etc/lircrc 2> /dev/null + [ -e /etc/lircrc ] && chmod 755 /etc/lircrc + update_db_settings HostRemoteType "$Remotetype" + #special case for special remote + echo "Starting with support for $Remotetype" + if [ "$Remotetype" == "dvico" ] + then + /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 + 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 [ $? -eq 0 ] + then + modprobe lirc_i2c + FoundReceiverType=`echo "$line"|cut -d"|" -f2` + Remotetype=`echo "$line"|cut -d"|" -f4` + statusline=`echo "$line"|cut -d"|" -f2,4` + echo "Found $statusline , $Remotetype" + 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 + USBID=`echo "$line"|cut -d"|" -f1` + lsusb -d "$USBID" > /dev/null 2>/dev/null + if [ $? -eq 0 ] + then + Remotetype=`echo "$line"|cut -d"|" -f2` + echo "Found $Remotetype" + setupremote + found_remote=0 + break + fi +done <$BASE/$TEMPLATES/remotes/receiver_usb.id +if [ $found_remote -eq 1 ] +then + scan_for_hpg_receiver +fi +echo "Scanning for TatIR..." +if lsusb | grep 04d8:0004 > /dev/null 2>/dev/null +then + /usr/bin/PyroUsb.py > /dev/null 2>&1 & +fi +} + +function rest_of_network () { + #netmask + echo $CMDLINE | grep -q netmask + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*netmask=} + NETMASK=${TEMPVAR%% *} + /sbin/ifconfig eth0 $IP netmask $NETMASK + nm=`/usr/bin/nmconv.py -obits $NETMASK` + NETMASK="/$nm $NETMASK" + echo $NETMASK + update_db_settings HostNETMASK${MYTHDEFAULT} "$NETMASK" + else + echo "netmask not found" + fi + #gateway + echo $CMDLINE | grep -q gateway + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*gateway=} + GATEWAY=${TEMPVAR%% *} + /sbin/route add default gw $GATEWAY + update_db_settings HostGW${MYTHDEFAULT} "$GATEWAY" + + else + echo "gateway not found" + fi + + #dns + echo $CMDLINE | grep -q dns + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*dns=} + DNS=${TEMPVAR%% *} + echo "nameserver $DNS" >> /etc/resolv.conf + update_db_settings HostDNS${MYTHDEFAULT} "$DNS" + else + echo "DNS not found" + fi +} + +function init_network { + echo $CMDLINE |grep -q netdev + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*netdev=} + MYTHDEFAULT=${TEMPVAR%% *} + else + MYTHDEFAULT="eth0" + fi + + + + echo $CMDLINE | grep -q ip + if [ $? -eq 0 ] + then + update_db_settings HostDefaulteth0 0 + update_db_settings HostDefault${MYTHDEFAULT} 1 + + update_db_settings HostActiveonbooteth0 0 + update_db_settings HostActiveonboot${MYTHDEFAULT} 1 + update_db_settings HostNetDevice ${MYTHDEFAULT} + + TEMPVAR=${CMDLINE#*ip=} + IP=${TEMPVAR%% *} + if [ "$IP" == "dhcp" ] + then + /sbin/dhcpcd $MYTHDEFAULT + update_db_settings HostUseDHCP${MYTHDEFAULT} 0 + else + /sbin/ifconfig ${MYTHDEFAULT} $IP + update_db_settings HostUseDHCP${MYTHDEFAULT} 1 + update_db_settings HostIP${MYTHDEFAULT} "$IP" + rest_of_network + fi + fi +} + +function init_remote { + echo $CMDLINE | grep -q remoteport + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*remoteport=} + REMOTEPORT=${TEMPVAR%% *} + if [ "$ReceiverType" == "Serial" ] + then + if [ -e /dev/$REMOTEPORT ] + then + /usr/bin/setserial /dev/$REMOTEPORT uart none + /sbin/modprobe lirc_serial + update_db_settings HostReceiverType Serial + update_db_settings HostSerialPortlirc "$REMOTEPORT" + fi + fi + + fi + + echo $CMDLINE | grep -q remote + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*remote=} + Remotetype=${TEMPVAR%% *} + setupremote + else + scan_for_usb_remote + fi +} + +#----------------------- + +#set -x + +partition_it () { +ROOT=$1 +DATA=$2 +SWAP=$3 + +if [ "$SWAP" != "NO" ] + then + SWAPLINE=",$SWAP,S" + MKSWAPCMD="mkswap /dev/${disk}2" + else + SWAPLINE=",0,0" + MKSWAPCMD="" + fi + +if [ "$DATA" == "ALL" ] +then + DATALINE=",,," + EXTRALINE="" +else + DATALINE=",$DATA,," + EXTRALINE=",0,," +fi +sfdisk /dev/$disk -uM << EOF +,$1,,* +$SWAPLINE +$DATALINE +$EXTRALINE +; +EOF + +$MKSWAPCMD +#sfdisk -l /dev/$disk +} + + +function fscmd () { + +case $1 in + reiserfs) FSCMDC="mkreiserfs -q -l ROOT" + ;; + + xfs) FSCMDC="mkfs -t $1 -f" + ;; + ext3) FSCMDC="mkfs.ext3" + ;; + jfs) FSCMDC="mkfs.jfs -q " + ;; + ext4) FSCMDC="mkfs.ext4" + ;; + *) FSCMDC="echo $1" + ;; +esac +} + +format_it () { + fscmd $1 + $FSCMDC /dev/${disk}1| tr -s [:cntrl:] \\n + fscmd $2 + $FSCMDC /dev/${disk}3| tr -s [:cntrl:] \\n +} + +mount_it () { + if [ ! -d \/$mountpoint ] + then + mkdir \/$mountpoint + fi + mount /dev/${disk}1 \/$mountpoint + mkdir \/$mountpoint/myth + mount /dev/${disk}3 \/$mountpoint/myth +} + +unmount_it () { + umount /dev/${disk}1 + umount /dev/${disk}3 + umount \/$mountpoint/myth + umount \/$mountpoint +} + + +copy_it () { + + if [ "$1" == "ALL" ] + then + echo "Transferring system" + unsquashfs -f -d /$mountpoint /.livesys/medium/system.sqf + else + echo "Upgrading system" + unsquashfs -e $1 -f -d /$mountpoint /.livesys/medium/system.sqf + fi + + for i in sys proc dev tmp + do + mkdir /$mountpoint/$i + + done + chmod 777 /$mountpoint/tmp + mknod /$mountpoint/dev/null c 1 3 + mknod /$mountpoint/dev/null c 1 5 + mknod /$mountpoint/dev/console c 5 1 + chmod +s /$mountpoint/usr/bin/Xorg + chmod +s /$mountpoint/usr/bin/crontab + chmod +s /$mountpoint/usr/bin/sudo + chmod +s /$mountpoint/bin/mount + +} + + +device_node () { + cd /dev + mknod hda b 3 0 + mknod hda1 b 3 1 + mknod hda2 b 3 2 + mknod hda3 b 3 3 + mknod hda4 b 3 4 + mknod hda5 b 3 5 + mknod hda6 b 3 6 + mknod hda7 b 3 7 + mknod hda8 b 3 8 + mknod sda b 8 0 + mknod sda1 b 8 1 + mknod sda2 b 8 2 + mknod sda3 b 8 3 + mknod sda4 b 8 4 + mknod sda5 b 8 5 + mknod sda6 b 8 6 + mknod sda7 b 8 7 + mknod sda8 b 8 8 + mknod sdb b 8 16 + mknod sdb1 b 8 17 + mknod sdb2 b 8 18 + mknod sdb3 b 8 19 + mknod sdb4 b 8 20 + mknod sdb5 b 8 21 + mknod sdb6 b 8 22 + mknod sdb7 b 8 23 + mknod sdb8 b 8 24 + cd - + } + + + + +function create_fstab() +{ +echo "creating fstab" +cat > /$mountpoint/etc/fstab << EOF +# +none /dev/pts devpts defaults 0 0 +none /dev/shm tmpfs defaults 0 0 +/dev/cdrom /media/cdrom auto ro,user,noauto,unhide 0 0 +/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0 +UUID=ROOTUID / auto defaults 0 1 +UUID=DATAUID /myth auto defaults 0 1 +UUID=SWAPUID swap swap defaults 0 0 +EOF + + +} + + +function find_uuid() { + uuid=`blkid -s UUID /dev/$1 |cut -d= -f2|cut -d\" -f2` + echo $uuid for $1 + FOUNDUUID=$uuid + +} + + +get_grub_map() { + [ -e /tmp/dev.map ] && rm /tmp/dev.map + /sbin/grub --no-floppy --device-map /tmp/dev.map < /dev/null 2>&1 + echo "freezing xfs fs" + /usr/sbin/xfs_freeze -f /$mountpoint + if [ $? -eq 0 ] + then + sleep 40 + echo "unfreezing xfs" + /usr/sbin/xfs_freeze -u /$mountpoint + fi + fi + #$DESTDIR/sbin/grub-install --recheck --root-directory=$DESTDIR $bootdev >/tmp/grub.log 2>&1 + echo grub-install --recheck --root-directory=/$mountpoint $bootdev + grub-install --recheck --root-directory=/$mountpoint $bootdev + # unfreeze xfs filesystems + + + if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then + echo "Error installing GRUB. " + return 1 + fi + echo "GRUB was successfully installed." +} + +function removevg () { + LIST=`pvscan |grep $1|tr -s " " |cut -d" " -f 5` + for vg in $LIST + do + echo "Removing vg $vg" + vgremove -f -v $vg + done + + + + +} + + +case $1 in + partition_it ) + #drive ROOT DATA(ALL) SWAP(NO) + for i in `mount | grep $disk | awk ' { print $1 } '` + do + umount $i + done + swap=`cat /etc/fstab |grep $disk|grep swap|awk ' { print $1 } '` + swapoff $swap + removevg $disk + partition_it $3 $4 $5 + exit 0 + + ;; + format_it ) + device_node + + format_it $3 $4 + exit 0 + ;; + mount_it ) + mount_it + ;; + copy_it ) + copy_it $3 + + ;; + + + fstab_fix_it) + echo $@ >> /tmp/fstab.input + if [ ! -f /$mountpoint/etc/fstab ] + then + create_fstab + fi + #was 5 + if [ "$3" == "UPGRADE" ] + then + if [ ! -f /tmp/etc/KnoppMyth-version ] + then + if [ -f /tmp/etc/fstab ] + then + cp -f /tmp/etc/fstab /$mountpoint/etc/fstab + else + create_fstab + fi + else + create_fstab + fi + fi + + #search for UUID + FOUNDUUID="" + find_uuid ${2}1 + ROOTUUID=$FOUNDUUID + echo "--" + echo $ROOTUUID + echo "--" + FOUNDUUID="" + find_uuid ${2}2 + SWAPUUID=$FOUNDUUID + + FOUNDUUID="" + if [ "$4" == "" ] + then + #upgrade + find_uuid ${2}3 + elif [ "$5" == "FULL_INSTALL" ] + then + #install + find_uuid ${2}3 + else + #upgrade with non statndard myth + find_uuid $4 + fi + + DATAUUID=$FOUNDUUID + + + + sed -i -e "s/.*\/\ .*$/UUID=$ROOTUUID \/ auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab + sed -i -e "s/.*\/myth\ .*$/UUID=$DATAUUID \/myth auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab + sed -i -e "s/.*swap\ .*$/UUID=$SWAPUUID swap swap defaults 0/g" /$mountpoint/etc/fstab + +#if Knoppmyth upgrade then loop through old fstab picking out vg + if [ -f /tmp/etc/KnoppMyth-version ] + then + if [ -f /tmp/etc/fstab ] + then + grep -q /dev/vg /tmp/etc/fstab + if [ $? -eq 0 ] + then + grep /dev/vg /tmp/etc/fstab >> /$mountpoint/etc/fstab + grep /dev/vg /tmp/etc/fstab | awk -v mount=$mountpoint ' { print "/" mount $2 }' |xargs mkdir + grep /dev/vg /tmp/etc/fstab | awk -v mount=$mountpoint ' { print "/" mount $2 }' |xargs chown -R mythtv:users + fi + fi + fi + ;; + + grub_it ) + + #grub-install --recheck --no-floppy --root-directory=/$mountpoint "(hd0)" + #fixing grub/menu.1st + dogrub ${disk} + FOUNDUUID="" + find_uuid ${disk}1 + ROOTUUID=$FOUNDUUID + sed -i -e "s/root=.\S*/root=\/dev\/disk\/by-uuid\/$ROOTUUID/g" /$mountpoint/boot/grub/menu.lst + mkinitcpio -g /$mountpoint/boot/kernel26.img + ;; + umount_it) + umount \/$mountpoint/myth + umount \/$mountpoint + ;; + update_db_it ) + update_db_settings "$2" "$3" + ;; + + +esac + + + diff --git a/abs/core/LinHES-config-svn/install_proxy.sh b/abs/core/LinHES-config-svn/install_proxy.sh new file mode 100755 index 0000000..32d01d7 --- /dev/null +++ b/abs/core/LinHES-config-svn/install_proxy.sh @@ -0,0 +1,717 @@ +#!/bin/bash +#chroot and /tmp +export TERM=vt100 +MVHOSTNAME=larch5 +. /etc/profile +TEMP_TEMPLATES=/tmp/templates +disk=$2 +rootfs=$3 +rootsize=$4 +datafs=$5 +datasize=$6 +swapsize=$7 +mountpoint="/new_boot" +run=$MV_ROOT/bin/install_functions.sh +. /etc/systemconfig 2>/dev/null +. $MV_ROOT/bin/networkconfig.sh +CMDLINE=$(cat /proc/cmdline) +BACKUPFILE="/myth/backup/mythconverg.sql.gz" + +#TEMPNET="Hostip"$default_interface +#eval MYTHIP=\$${TEMPNET} +function create_chroot_mnt_points() { + + echo "Creating directory for media in chroot" + mkdir -p $mountpoint/media/cdrom + mkdir -p $mountpoint/media/dvd + mkdir -p $mountpoint/mnt + +} +function cp_and_log () { + ls $1 >/dev/null 2>&1 + status=$? + if [ $status = 0 ] + then + echo "copying $1 to $2" + cp -rfp $1 $2 + else + echo "$1 is not present, skipping..." + fi + +} + +function mdadm_find () { + + PREFIX=$1 + if [ -e $PREFIX/etc/KnoppMyth-version ] + then + MDADM_CONF="/etc/mdadm/mdadm.conf" + else + MDADM_CONF="/etc/mdadm.conf" + fi + echo "Using $MDADM_CONF" +} + +progress () { +mypercent=`echo "$1" | cut -d. -f1` +if [ x$mypercent = x ] +then +echo "" > /tmp/.install_percent +else +echo "${mypercent}% complete" > /tmp/.install_percent +fi + + +} + +function apply_new_auth () { +#check if file is present + if [ -f /root/myth_user_call.out ] + then + #read in file, running each command in chroot + exec 4 /tmp/user_auth.update + fi + done + rm -f /root/myth_user_call.out + else + echo "No new password changes to apply" + fi +} + + +function backup_sql_check { + if [ -f ${mountpoint}${BACKUPFILE} ] + then + echo "found ${mountpoint}${BACKUPFILE} " + rc=0 + else + echo "did not find ${mountpoint}${BACKUPFILE} " + rc=1 + fi + return $rc +} + +function mdadm_assemble_all { + + mdadm_find /tmp + mdadm --assemble --scan -c /tmp${MDADM_CONF} + MDLIST=`grep ARRAY /tmp${MDADM_CONF}|tr -s [:space:]|cut -d" " -f2` + for array in $MDLIST + do + echo "assembling array $array" + mdadm --assemble -c /tmp${MDADM_CONF} $array + sleep 2 + fsck -p $array + done + +} + +function upgrade_mount_search { + + MYTH_P=`cat /tmp/etc/fstab |grep -E /myth[[:space:]] | awk ' {print $1 '} ` + umount $mountpoint/myth + + #should probably just mdadm all the time + echo $MYTH_P |grep -q \/md. + if [ $? = 0 ] + then + mdadm_assemble_all + fi + + echo $MYTH_P |grep -q UUID + if [ $? = 0 ] + then + MUUID=`echo $MYTH_P|cut -d= -f2|tr -d \"` + echo blkid $MUUID + blkid -t UUID=$MUUID + if [ ! $? = 0 ] + then + echo "couldn't find $MUUID, starting md support" + mdadm_assemble_all + fi + mount -U $MUUID $mountpoint/myth + echo mount -U $MUUID $mountpoint/myth + MYTHMOUNT=`blkid -t UUID=$MUUID|cut -d: -f1` + MYTHMOUNT=`basename $MYTHMOUNT` + echo "MYTHMOUNT is $MYTHMOUNT" + else + mount $MYTH_P $mountpoint/myth + echo mount $MYTH_P $mountpoint/myth + MYTHMOUNT=`basename $MYTH_P` + echo "MYTHMOUNT is $MYTHMOUNT" + fi + sleep 2 + backup_sql_check + if [ $? = 1 ] + then + mkdir -p /new_boot/root/backup + if [ ! -e /tmp/mythconverg.sql.gz ] + then + echo "Couldn't find ANY database to restore, upgrade will continue but a new database will be installed." + else + cp_and_log /tmp/mythconverg.sql.gz /new_boot/root/backup/mythconverg.sql.gz + BACKUPFILE="/root/backup/mythconverg.sql.gz" + echo "setting BACKUPFILE to $BACKUPFILE" + fi + fi + return 0 +} + + +full_install () { + if [ -f /tmp/.this_is_upgrade ] + then + rm /tmp/.this_is_upgrade + fi + echo "Partitioning $disk" > /tmp/.install_state + progress 1 + sleep 1 + $run partition_it $disk $rootsize $datasize $swapsize + + echo "Formatting $disk" > /tmp/.install_state + progress 2 + sleep 1 + $run format_it $disk $rootfs $datafs + + echo "Preparing $disk" > /tmp/.install_state + progress 3 + sleep 1 + $run mount_it $disk + + startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` + + echo "STARTSIZE=$startsize">/tmp/.startsize.io + echo "Creating $hostname" > /tmp/.install_state + + sleep 1 + $run copy_it $disk ALL + rm $mountpoint/etc/fstab + $run fstab_fix_it $disk $rootfs $datafs FULL_INSTALL + echo "Configuring system" > /tmp/.install_state + progress 100 + #progress 99 + sleep 1 + $run grub_it $disk + + + #echo "Configuring system" > /tmp/.install_state + #progress 100 + sleep 1 + cp_and_log /etc/systemconfig "$mountpoint"/etc + cp_and_log /root/xorg.conf.install "$mountpoint"/etc/X11/xorg.conf.install + #run save syssettings to save settings, then copy to new mountpoint + $MV_ROOT/bin/restore_default_settings.sh -c save -t syssettings -h $MVHOSTNAME -d localhost + SE=$TEMPLATES/settings/syssettings + mkdir -p ${mountpoint}$SE + #cp -rp $SE/* ${mountpoint}$SE/ + cp_and_log "$SE/*" "${mountpoint}$SE/" + chown root:mythtv "$mountpoint"/etc/systemconfig + chown -R mythtv:mythtv ${mountpoint}$SE + + chmod -R 775 ${mountpoint}$SE + chmod 775 "$mountpoint"/etc/systemconfig + mkdir -p "$mountpoint"/var/log/mythtv + chown mythtv "$mountpoint"/var/log/mythtv + #copy over any updates that might have occured + #cp -rp $MV_ROOT/bin/*.sh "$mountpoint"$MV_ROOT/bin/ + cp_and_log "$MV_ROOT/bin/*.sh" "$mountpoint"$MV_ROOT/bin/ + chmod -R 755 ${mountpoint}/root + create_chroot_mnt_points + cp_and_log /etc/mtab "$mountpoint"/etc/mtab + # cp_and_log /etc/hostname "$mountpoint"/etc/hostname + apply_new_auth + + + if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + then + #installing DB to local machine + #turn off old live database, so the chroot one can start + echo "---------------------CHROOT INSTALLDB-------------------------" + /etc/rc.d/mysqld stop + mount --bind /dev "$mountpoint/dev" + mount --bind /proc "$mountpoint/proc" + chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" 2>&1 |tee /tmp/chrootdb.out + #chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + echo "stopping mysql in chroot" + chroot "$mountpoint" /etc/rc.d/mysqld stop + kill_dhcp_chroot + sleep 2 + lsof |grep new_boot + umount -l "$mountpoint/dev" + umount -l "$mountpoint/proc" + + echo "---------------------END CHROOT INSTALLDB-------------------------" + /etc/rc.d/mysqld start + else + #update remotedb with this host settings + chroot "$mountpoint" DISPLAY=127.0.0.1:0 /usr/local/bin/MythVantage -t restore,default_1 + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + if [ ! $? = 0 ] + then + touch $mountpoint/tmp/.dbsysfailed + chmod 777 $mountpoint/tmp/.dbsysfailed + else + #Run second time + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + fi + fi + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced + touch $mountpoint/home/mythtv/.configure && chmod 777 $mountpoint/home/mythtv/.configure + + echo "Done" > /tmp/.install_state + cp_and_log /tmp/mythvantage_install.log $mountpoint/var/log/ + $run umount_it $disk + +} + +function createsquashlist(){ +if [ -f $1 ] +then + rm -f +$1 +fi +for i in bin boot etc home lib opt root sbin usr var data +do +echo $i >> $1 +done + + +} + + + + +function upgrade () { + touch /tmp/.this_is_upgrade + + if [ ! x$rootfs = "xDo_not_format" ] + then + echo "Formatting $disk" > /tmp/.install_state + progress 2 + sleep 1 + $run format_it $disk $rootfs NO + fi + echo "Preparing $disk" > /tmp/.install_state + progress 3 + sleep 1 + $run mount_it $disk + startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` + echo "STARTSIZE=$startsize">/tmp/.startsize.io + echo "Upgrading $hostname" > /tmp/.install_state + sleep 1 + cp_and_log /tmp/etc /new_boot/etc.old + cp_and_log /tmp/oss /new_boot/var/lib/oss.old + + + SQUASHLIST="/tmp/.squashlist" + createsquashlist $SQUASHLIST + $run copy_it $disk $SQUASHLIST + #copy back ssh keys + +# cp_and_log -rp /data/var/cache/pacman/pkg/* /new_boot/data/var/cache/pacman/pkg/ + cp_and_log "/new_boot/etc.old/ssh/*.pub" /new_boot/etc/ssh/ + cp_and_log "/new_boot/etc.old/ssh/*.key" /new_boot/etc/ssh/ + cp_and_log "/new_boot/etc.old/ssh/*key" /new_boot/etc/ssh/ + mdadm_find /tmp + cp_and_log /tmp${MDADM_CONF} /new_boot/etc + #cp_and_log /new_boot/etc.old/mdadm/mdadm.conf /new_boot/etc/ + cp_and_log /new_boot/etc.old/asound.state /new_boot/etc/ + if [ ! -f /tmp/etc/KnoppMyth-version ] + then + #passwd/shadow/group + cp_and_log /new_boot/etc.old/passwd /new_boot/etc/ + cp_and_log /new_boot/etc.old/shadow /new_boot/etc/ + cp_and_log /new_boot/etc.old/group /new_boot/etc/ + fi + mkdir -p "$mountpoint"/var/log/mythtv + chown mythtv "$mountpoint"/var/log/mythtv + if [ x$rootfs = "xDo_not_format" ] + then + rootfs=`grep \/\ /tmp/etc/fstab |awk ' { print $3 } '` + fi + #this is here to copy in the systemconfig file as soon as possible. + cp_and_log /etc/systemconfig "$mountpoint"/etc/systemconfig + echo "Configuring system" > /tmp/.install_state + progress 100 + backup_sql_check + if [ $? = 1 ] + then + upgrade_mount_search + fi + echo $run fstab_fix_it $disk UPGRADE $MYTHMOUNT + $run fstab_fix_it $disk UPGRADE $MYTHMOUNT + create_chroot_mnt_points + + #echo "Writing boot sector" > /tmp/.install_state + #progress 99 + sleep 1 + $run grub_it $disk + #echo "Configuring system" > /tmp/.install_state + #progress 100 + sleep 1 + cp_and_log /etc/mtab "$mountpoint"/etc/mtab + cp_and_log /etc/systemconfig "$mountpoint"/etc + cp_and_log /root/xorg.conf.install "$mountpoint"/etc/X11/xorg.conf.install +#make sure mythconverg.sql.gz is present + #backup_sql_check + #if [ $? = 1 ] + #then + # upgrade_mount_search + #fi + echo $CMDLINE | grep -q clean_upgrade + status=$? + if [ -f /tmp/etc/KnoppMyth-version -o $status = 0 ] + then + #run save syssettings to save settings, then copy to new mountpoint + $MV_ROOT/bin/restore_default_settings.sh -c save -t syssettings -h $MVHOSTNAME -d localhost + SE=$TEMPLATES/settings/syssettings + mkdir -p ${mountpoint}$SE + #cp -rfp $SE/* ${mountpoint}$SE/ + cp_and_log "$SE/*" "${mountpoint}$SE/" + chown root:mythtv "$mountpoint"/etc/systemconfig + chown -R mythtv:mythtv ${mountpoint}$SE + chmod -R 775 ${mountpoint}$SE + if [ ! $status = 0 ] + then + touch $mountpoint/home/mythtv/.kmupgrade && chmod 777 $mountpoint/home/mythtv/.kmupgrade + fi + fi + + + + cp_and_log "$MV_ROOT/bin/*.sh" "$mountpoint"$MV_ROOT/bin/ + chmod -R 755 ${mountpoint}/root + chown root:mythtv "$mountpoint"/etc/systemconfig + chmod 775 "$mountpoint"/etc/systemconfig + #mount /proc and /dev + mount --bind /dev "$mountpoint/dev" + mount --bind /proc "$mountpoint/proc" + + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + #wrap this in a network check_network, no need to update the db if the import worked. + ##### do I need to start mysql? + /etc/rc.d/mysqld stop + if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + then + echo $CMDLINE | grep -q clean_upgrade + status=$? + if [ $status = 0 ] + then + #new db as part of clean upgrade + echo "--------------------------------" + echo "clean upgrade installing new database" + echo "--------------------------------" + chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" |tee /tmp/chrootdb.out + echo "############################################" + echo "End Installing new database/clean" + echo "############################################" + else + #proceed as normal + if [ -f "$mountpoint"/$BACKUPFILE ] + then + echo "--------------------------------" + echo "Restoring database with $BACKUPFILE" + echo "--------------------------------" + chroot "$mountpoint" "$MV_ROOT/bin/restore_km_db_chroot.sh" "$BACKUPFILE" |tee /tmp/chrootdb_km.out + echo "############################################" + echo "End Restoring database" + echo "############################################" + else + echo "--------------------------------" + echo "Couldn't find backup file, installing new database" + echo "--------------------------------" + touch /tmp/.upgrade_db_failed + chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" |tee /tmp/chrootdb.out + echo "############################################" + echo "End Installing new database" + echo "############################################" + fi + fi + fi + + if [ -f /tmp/etc/KnoppMyth-version ] + then + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t hostsettings + #change permissions of /myth (only needed on km->linhes) + chown -R mythtv:mythtv $mountpoint/myth + chown -R root:root $mountpoint/myth/backup + else + chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + fi + # + #Run second time + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install + chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install + echo "stopping mysql in chroot" + chroot "$mountpoint" /etc/rc.d/mysqld stop + apply_new_auth + kill_dhcp_chroot + umount -l "$mountpoint/dev" + umount -l "$mountpoint/proc" + + echo "Done" > /tmp/.install_state + cp_and_log /tmp/mythvantage_install.log $mountpoint/var/log/ + + $run umount_it $disk + /etc/rc.d/mysqld start +} + +function netboot-full_install () { + TEMPVAR=${CMDLINE#*nfsroot=} + NFSROOT=${TEMPVAR%% *} + NFSROOT=`echo $NFSROOT|cut -d: -f1` + MAC=`/sbin/ifconfig eth0|grep HWaddr| cut -d: -f2-|awk '{ print $3}'|tr : -` + URL="http://$NFSROOT:1337/diskless.py?HOSTNAME=$hostname&MAC=$MAC" + echo "calling $URL" + echo "Starting" > /tmp/.install_state + curl $URL + ${MV_ROOT}/bin/xconfig.sh +} + +# function killdhcp () { +# if [ -f /etc/dhcpc/dhcpcd-eth0.pid ] +# then +# pid=`cat /etc/dhcpc/dhcpcd-eth0.pid` +# kill -9 $pid +# rm -f /etc/dhcpc/dhcpcd-eth0.pid +# rm -f /var/run/dhcpcd* +# fi +# if [ -f /var/run/dhcpcd-eth0.pid ] +# then +# pid=`cat /var/run/dhcpcd-eth0.pid` +# kill -9 $pid +# rm -f /var/run/dhcpcd-eth0.pid* +# fi +# ip address flush dev eth0 +# } + + + +function SANE_SYSETTINGS () { +sed -e '/HOSTrootfstype/d' \ + -e '/HOSTrootfstype/d' \ + -e '/HOSTdatafstype/d' \ + -e '/HOSTOSsize/d' \ + -e '/HostUseALLdata/d' \ + -e '/HOSTDATAsize/d' \ + -e '/HOSTuprootfstype/d' \ + -e '/HostUseSWAP/d' \ + -e '/HOSTSWAPsize/d ' /tmp/templates/settings/syssettings/settings.txt > /tmp/settings.new + mv /tmp/settings.new /tmp/templates/settings/syssettings/settings.txt +} + +case $1 in + full_install_it ) full_install ;; + + NETBOOT) +echo "-----------------------------------------------------------------------3-----" + netboot-full_install ;; + + find_update) + + #TRY TO mount first partition of drive + #copy /etc/systemconfig to live, import settings into db + #umount drive + echo $CMDLINE | grep -q clean_upgrade + if [ $? = 1 ] + then + $run mount_it $disk + [ -e "/new_boot/root/backup/mythconverg.sql.gz" ] && cp /new_boot/root/backup/mythconverg.sql.gz /tmp + + + if [ -f /new_boot/etc/systemconfig ] + then + ###########ADD templates + mkdir -p $TEMP_TEMPLATES + cp_and_log /new_boot/$TEMPLATES $TEMP_TEMPLATES + SANE_SYSETTINGS + cp_and_log $TEMP_TEMPLATES/settings $TEMPLATES/ + cp_and_log /new_boot/etc/systemconfig /etc/systemconfig + cp_and_log /new_boot/etc /tmp/etc + cp_and_log /new_boot/var/lib/oss /tmp/oss + [ -e /tmp/etc/mdadm.conf ] && cp_and_log /tmp/etc/mdadm.conf /etc/ + + $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings -h $MVHOSTNAME -d 127.0.0.1 + else + cp_and_log /new_boot/etc /tmp/etc + [ -e /tmp/etc/mdadm.conf ] && cp_and_log /tmp/etc/mdadm.conf /etc/ + #now we search for the timezone and try to update + TZREGION=`cat /tmp/etc/timezone | cut -d"/" -f1` + TZSUB=`cat /tmp/etc/timezone | cut -d"/" -f2 -` + + + if [ $TZREGION = $TZSUB ] + then + $run update_db_it HostTimeZoneRegion "$TZREGION" + else + $run update_db_it HostTimeZoneRegion "$TZREGION" + $run update_db_it HostTimeZoneRegion_$TZREGION "$TZSUB" + fi + fi + backup_sql_check + echo $? + upgrade_mount_search + echo $? + $run umount_it $disk + fi + ;; + + upgrade_it) + upgrade + ;; + disk_model_it) + model="unknown" + size="xxx" + case $2 in + + h* ) + model=`cat /proc/ide/$2/model` + ;; + s*) model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '` + ;; + esac + size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` + echo ""$model" $size " >/tmp/model + ;; + network_check_it) + #Should never return from check_network + case $2 in + setup_network) + vnc_check + install_network_setup + ;; + + check_self) + myipdefault=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` + echo "network check myself" + ifconfig + ping -c 1 $myipdefault + if [ ! $? = 0 ] + then + exit 3 + #can't ping yourself + fi + ;; + check_gw) + #check gateway + echo "network check gateway" + /sbin/route -n + mygwdefault=`/sbin/route -n |grep $default_interface|grep UG|awk '{ print $2}'` + echo "Default gateway seems to be $mygwdefault" + if [ ! x$mygwdefault = x ] + then + sleep 2 + ping -c 5 $mygwdefault + if [ ! $? = 0 ] + then + exit 4 + fi + fi + ;; + check_ns) + #check nameserver + echo " network check nameserver" + mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'` + ping -c 1 $mydns + if [ ! $? = 0 ] + then + exit 5 + fi + ;; + check_names) + echo "network check resolve names" + host google.com + if [ ! $? = 0 ] + then + exit 6 + fi + ;; + host_names) + #if host is found, then check to see if it's online + #if hoip matchs my ip assume it's ok + echo "network check my hostname $hostname" + hout=`host $hostname` + status=$? + #found host, now grab the ip + if [ $status = 0 ] + then + hoip=`echo $hout|awk '{print $4}'` + /sbin/ifconfig -a |grep -q $hoip + if [ $? = 0 ] + then + echo "DNS ip matches on of my ips" + status=0 + else + echo "IP in DNS but doesn't match mine, hostname is not safe to use" + status=7 + fi + else + echo "Couldn't find hostname in DNS, must be safe to use" + status=0 + fi + exit $status + ;; + + esac + exit 0 + ;; + + + * ) + if [ -f /tmp/.install_state ] + then + state=`cat /tmp/.install_state` + else + state=" " + fi + if [ x"${state}" = "xConfiguring system" ] + then + progress "" + else + + if [ -f /tmp/.startsize.io ] + then + . /tmp/.startsize.io + #finding the drive + ddrive=`df | grep $mountpoint | head -n1 | awk -F/ ' { print $3 } ' | cut -d" " -f 1|cut -b1,2,3 ` + used=`statgrab -M disk.|grep ${ddrive}.write_bytes|cut -d= -f 2|tr -d " "` + used=`echo $used-$STARTSIZE|bc` + #echo $used + fi + + if [ ! x$used = x ] + then + . /root/.install_size + #somehow find if it's an install or update + if [ -f /tmp/.this_is_upgrade ] + then + total=$UPGRADESIZE + else + total=$TOTALSIZE + fi + percent=`echo "scale=2 ; ($used/$total) * 100 " |bc ` + cond2=$(echo "$percent > 98" |bc ) + if [ $cond2 -eq 1 ] + then + percent=98 + fi + cond3=$(echo "$percent < 3" |bc ) + if [ $cond3 -eq 0 ] + then + progress $percent + fi + fi + fi + ;; +esac + + + diff --git a/abs/core/LinHES-config-svn/issue b/abs/core/LinHES-config-svn/issue new file mode 100644 index 0000000..3c01679 --- /dev/null +++ b/abs/core/LinHES-config-svn/issue @@ -0,0 +1 @@ +LinHes \ No newline at end of file diff --git a/abs/core/LinHES-config-svn/live-install.sh b/abs/core/LinHES-config-svn/live-install.sh new file mode 100755 index 0000000..573bb1f --- /dev/null +++ b/abs/core/LinHES-config-svn/live-install.sh @@ -0,0 +1,28 @@ +#!/bin/bash +#redirect stderr to stdout, then rediret stdout to file +. /etc/profile +exec 2>&1 +exec > /tmp/mythvantage_install.log +. /etc/X11/STBWINDOWMANAGER +/usr/bin/nvidia-settings -a InitialPixmapPlacement=2 +keylaunch & +/usr/bin/tilda & +/usr/X11R6/bin/unclutter -root -idle 0 -jitter 400 -noevents & +export MALLOC_CHECK_=0 +if [ -f /opt/vmware/bin32/vmware-user-wrapper ] +then + /opt/vmware/bin32/vmware-user-wrapper & +fi +xhost + +CMDLINE=$(cat /proc/cmdline) +echo $CMDLINE |grep -q nfsroot +NFSROOT=$? +if [ x$NFSROOT = x1 ] +then + + unbuffer MythVantage & +else + NETBOOT=YES MythVantage & +fi + +exec $STBWINDOWMANAGER diff --git a/abs/core/LinHES-config-svn/myth_user_call b/abs/core/LinHES-config-svn/myth_user_call new file mode 100644 index 0000000..0479895 --- /dev/null +++ b/abs/core/LinHES-config-svn/myth_user_call @@ -0,0 +1,172 @@ +#!/bin/bash +#Wrapper script to manage USERNAME accounts + web security +# myth_USERNAME_all -c add -u USERNAME +# myth_USERNAME_all -c delete -u USERNAME +# myth_USERNAME_all -c pass -u USERNAME -p pass +# myth_USERNAME_all -c web -u USERNAME -p pass + +INIT_CHECK=TRUE +FULL_CALL="$@" +function CHROOT_CHECK { + INIT=`ps -p 1 -o comm=` + if [ x$INIT = xrunit ] + then + CHROOT_NEEDED=FALSE + else + CHROOT_NEEDED=TRUE + fi +} + +function store_commands () { + echo "$FULL_CALL" >> /root/myth_user_call.out + chmod 600 /root/myth_user_call.out +} + + +function add_user() { + if [ $CHROOT_NEEDED = TRUE ] + then + echo "calling myth_call_user in chroot to add user" + store_commands + else + echo "adding user $USERNAME" + useradd -m -s /bin/bash $USERNAME -G audio,video,optical,storage,users + fi + +} + + +function del_user() { + if [ $CHROOT_NEEDED = TRUE ] + then + echo "calling myth_call_user in chroot to delete user" + store_commands + else + echo "removing user $USERNAME" + userdel $USERNAME + fi + +} + + +function pass_change() { + if [ $CHROOT_NEEDED = TRUE ] + then + echo "calling myth_call_user in chroot to change password" + store_commands + else + echo "changing password for $USERNAME" + echo $USERNAME:$PASSWORD | chpasswd + fi + +} + + +function web_security { + + grep -q ${USERNAME}: /etc/lighttpd/lighttpd.user + if [ $? = 0 ] + then + #delete user + sed -i "/${USERNAME}\:/d" /etc/lighttpd/lighttpd.user + fi + echo "${USERNAME}:${PASSWORD}" >> /etc/lighttpd/lighttpd.user + +} + +function ARG_ERR() { + if [ x$OPTARG = "x" ] + then + echo "$SWITCH NEEDS AND ARG" + exit 11 + fi +} + + +function print_help { + + echo "Valid options are:" + echo " -c (add|delete|pass|web)" + echo " -u USERNAMEname" + echo " -p password" + exit 1 +} + +if [ $# -eq 0 ] +then + print_help +fi + +declare -r OPTSTRING="c:u:p:i" +while getopts "$OPTSTRING" SWITCH +do + case $SWITCH in + + c) ARG_ERR + OPERATION=$OPTARG + ;; + u) ARG_ERR + USERNAME=$OPTARG + ;; + p) ARG_ERR + PASSWORD=$OPTARG + ;; + i) INIT_CHECK=FALSE + + esac +done + +if [ $INIT_CHECK = TRUE ] +then + CHROOT_CHECK +else + CHROOT_NEEDED=FALSE +fi + +case $OPERATION in + add) + if [ x$USERNAME = x ] + then + print_help + fi + add_user + ;; + delete) + if [ x$USERNAME = x ] + then + print_help + fi + del_user + ;; + pass) + if [ x$USERNAME = x ] + then + print_help + fi + + if [ x$PASSWORD = x ] + then + print_help + fi + pass_change + ;; + + web) + if [ x$USERNAME = x ] + then + print_help + fi + + + if [ x$PASSWORD = x ] + then + print_help + fi + echo "adding webUSERNAME $USERNAME with pass $PASSWORD" + web_security + ;; + *) print_help + ;; +esac + + diff --git a/abs/core/LinHES-config-svn/networkconfig.sh b/abs/core/LinHES-config-svn/networkconfig.sh new file mode 100644 index 0000000..38b819a --- /dev/null +++ b/abs/core/LinHES-config-svn/networkconfig.sh @@ -0,0 +1,331 @@ +#!/bin/bash +#. /etc/profile +#. /etc/systemconfig +#BASE=/tmp +ETCNETDIR=$BASE/etc/net/ifaces + + + +function kill_dhcp () +{ +#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid +for i in ${BASE}/var/run/dhcpcd-*.pid +do + if [ -f ${i} ] + then + pid=`cat ${i}` + kill -9 $pid + rm -f ${i} + fi + if [ x$1 = xflush ] + then + for ifdev in eth0 wlan0 eth1 wlan1 + do + echo ${i} |grep $ifdev + status=$? + if [ $status = 1 ] + then + ip address flush $ifdev + fi + done + fi + +done + +} + +function kill_dhcp_chroot () +{ +#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid +for i in ${mountpoint}/var/run/dhcpcd-*.pid +do + if [ -f ${i} ] + then + pid=`cat ${i}` + kill -9 $pid + rm -f ${i} + fi +done + +} + + + +function setup_nameserver(){ +grep -q $1 ${BASE}/etc/resolv.conf +status=$? +if [ ! $status = 0 ] +then + echo "nameserver $1" >> ${BASE}/etc/resolv.conf +fi + +} + +function change_iface_state () { + if [ x$2 = xenabled ] + then + echo "setting $1 to active" + sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options + sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options + else + echo "setting $1 to inactive" + if [ -e $ETCNETDIR/$1/options ] + then + sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options + sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options + fi + /sbin/ifconfig $1 down + ip address flush $1 + fi + +} + +function setup_interfaces() { + local IS_WIRELESS + local ip + local netmask + local isactive + local dns + local UseDHCP + local GW + local ESSID + local KEY + local ENCRYPT + local TEMPNET + IS_WIRELESS=false + + #local ip + TEMPNET="Hostip"$1 + echo $TEMPNET + eval ip=\$${TEMPNET} + + TEMPNET=Hostnetmask$1 + eval netmask=\$${TEMPNET} + netmask=`echo "$netmask" | cut -d " " -f1` + + TEMPNET=HostActive$1 + eval isactive=\$${TEMPNET} + + TEMPNET=HostDNS$1 + eval dns=\$${TEMPNET} + + TEMPNET="HostUSEDHCP"$1 + eval UseDHCP=\$${TEMPNET} + + TEMPNET=HostGW$1 + eval GW=\$${TEMPNET} + + TEMPNET=HOST_iswireless$1 + eval wireless=\$${TEMPNET} + + + + + if [ x$wireless = x1 ] + then + IS_WIRELESS=TRUE + TEMPNET=HostESSID$1 + eval ESSID=\$${TEMPNET} + + TEMPNET="HostKey"$1 + eval KEY=\$${TEMPNET} + + TEMPNET=HostUseEncryption$1 + eval ENCRYPT=\$${TEMPNET} + fi + + + echo "Setup $1 in progress, wireless: $IS_WIRELESS" + + if [ ! -d $ETCNETDIR/$1 ] + then + mkdir -p $ETCNETDIR/$1 + fi + + if [ ! -f $ETCNETDIR/$1/options ] + then + cp -f $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options + fi + + if [ x$isactive = x1 ] + then + change_iface_state $1 enabled + #echo "setting $1 to active" + #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options + #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options + else + change_iface_state $1 disabled + #echo "setting $1 to inactive" + #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options + #sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options + fi + + if [ x$IS_WIRELESS = xTRUE ] + then + echo "setting $1 wireless" + sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' $ETCNETDIR/$1/options + #set the key and essid + echo "essid $ESSID" > $ETCNETDIR/$1/iwconfig + if [ x$ENCRYPT = x1 ] + then + echo "key $KEY" >> $ETCNETDIR/$1/iwconfig + fi + + else + echo "disabling wireless" + sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' $ETCNETDIR/$1/options + fi + + + + + if [ x$UseDHCP = x0 ] + then + echo using dhcp + sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options + + else + echo "using static ip" + sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' $ETCNETDIR/$1/options + echo "default via $GW" > $ETCNETDIR/$1/ipv4route + echo "$ip$netmask" > $ETCNETDIR/$1/ipv4address + setup_nameserver $dns + fi +} + + +function find_active () { +#HostActiveeth1="1" +rm -f ${BASE}/etc/resolv.conf +if [ x$MYTHDHCP = x1 ] + then + #add 127.0.0.1 to /etc/resolv.conf + echo "search lan" > ${BASE}/etc/resolv.conf + echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf + fi + +for i in eth0 eth1 wlan0 wlan1 +do + CURRENTIF="HostActive"$i + eval IFSTATE=\$${CURRENTIF} + echo $IFSTATE "---" + echo $i + if [ x$IFSTATE = x1 ] + then + setup_interfaces $i + else + change_iface_state $i disabled + fi +done + +} + +function setup_hostname { +#set the hostname +if [ ! x$hostname = x ] +then + echo $hostname > ${BASE}/etc/hostname + cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname > /tmp/hosts + #cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname | grep -v $ip > /tmp/hosts + + if [ x$MYTHDHCP = x1 ] + then + echo "127.0.0.1 localhost " > ${BASE}/etc/hosts + echo "$MYTHIP $hostname " >> ${BASE}/etc/hosts + else + echo "127.0.0.1 $hostname localhost " > ${BASE}/etc/hosts + fi + cat /tmp/hosts >> ${BASE}/etc/hosts +fi + +kill_dhcp +} + +function vnc_check() { + CMDLINE=$(cat /proc/cmdline) + echo $CMDLINE |grep -q vnc + USEVNC=$? + echo $CMDLINE |grep -q nfsroot + NETBOOT=$? + echo $USEVNC + if [ ! x$USEVNC = x0 ] + then + echo "not using vnc" + if [ ! x$NETBOOT = x0 ] + then + echo "not using netboot" + else + echo "using netboot" + USEVNC=0 + fi + + else + echo " using vnc" + fi +} + +function setup_MYTH_vars { + TEMPMYTH="Hostip"$default_interface + #echo $TEMPMYTH + eval MYTHIP=\$${TEMPMYTH} + + TEMPMYTH="HostUSEDHCP"$default_interface + eval MYTHDHCP=\$${TEMPMYTH} + + + +} + + + + +function start_network { +if [ ! $USEVNC = 0 ] +then + /etc/net/scripts/network.init reload + /etc/net/scripts/network.init restart +else + echo "VNC/NETBOOT in use, will NOT restart network" +fi + +} + +function setup_network { + setup_MYTH_vars + setup_hostname + find_active +} + + +function stop_network { +if [ ! $USEVNC = 0 ] +then + echo "stopping the network" + kill_dhcp flush + ip address flush dev eth0 2>&1 >/dev/null + ip address flush dev eth1 2>&1 >/dev/null + ip address flush dev wlan0 2>&1 >/dev/null + ip address flush dev wlan1 2>&1 >/dev/null +else + echo "VNC/NETBOOT in use, will NOT restart network" +fi + +} + + +#this is used by the install process to start the network +function install_network_setup { + setup_MYTH_vars + setup_hostname + stop_network + find_active + start_network + +} + + + + + + + diff --git a/abs/core/LinHES-config-svn/remove_service.sh b/abs/core/LinHES-config-svn/remove_service.sh new file mode 100755 index 0000000..6cc4b4f --- /dev/null +++ b/abs/core/LinHES-config-svn/remove_service.sh @@ -0,0 +1,8 @@ +#!/bin/bash +SERVICE_DIR=/var/service +SCRIPT_DIR=/etc/sv +if [ -e $SERVICE_DIR/$1 ] +then + echo "removing" + rm $SERVICE_DIR/$1 +fi diff --git a/abs/core/LinHES-config-svn/restore_default_settings.sh b/abs/core/LinHES-config-svn/restore_default_settings.sh new file mode 100755 index 0000000..dcf5e23 --- /dev/null +++ b/abs/core/LinHES-config-svn/restore_default_settings.sh @@ -0,0 +1,362 @@ +#!/bin/bash +. /etc/profile +. /etc/systemconfig +shopt -s -o nounset +echo $@ >> /tmp/restore.out +#TEMPLATES="/usr/share/templates/settings" +TEMPLATES="$TEMPLATES/settings" +TABLES="settings keybindings" +MYTHDBUSER=mythtv +MYTHTVPASSWD=mythtv +declare -r OPTSTRING="c:e:t:d:h:s:a:z:Ho" +Thistemplate="" +declare -i OVERRIDE=0 +declare -i EVERYTHING=0 + + +function CMD_DEFINE () { + #add override check + if [ x$Thistemplate = xsyssettings -a $OVERRIDE -eq 1 ] + then + MYSQLCMD="mysql --local-infile -s -u$MYTHDBUSER -p$MYTHTVPASSWD -h$ovdbhost mythconverg -B --exec" + MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD -h$ovdbhost mythconverg -B --exec" + MYSQLCMD_UPDATE_HOST="UPDATE settings set data='$oldhostname' where value='HostMyhostname' and hostname=\"$hostname\";" + else + MYSQLCMD="mysql --local-infile -s -u$MYTHDBUSER -p$MYTHTVPASSWD -h$dbhost mythconverg -B --exec" + MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD -h$dbhost mythconverg -B --exec" + MYSQLCMD_UPDATE_HOST="select hostname from settings;" + fi +} + +function SQL_DEFINE () { + thostname=`echo ${hostname}|tr -C [:alpha:] _` + echo "Using $thostname for temp table postfix" + + #$1 is the table name + if [ $1 = "settings" ] + then + ALTERSQL="Alter table temp_${1}_${thostname} add unique ( value )" + else + ALTERSQL=";" + fi + + CREATESQL="create table temp_${1}_${thostname} like $1;" + COPY_TMP_SQL="replace into temp_${1}_${thostname} (select * from $1 where hostname=\"$hostname\");" + INSERTSQL="LOAD DATA local INFILE '/tmp/$1.txt' REPLACE INTO TABLE temp_${1}_${thostname} FIELDS TERMINATED BY '\t';" + #INSERTSQL="LOAD DATA local INFILE '$TEMPLATES/$Thistemplate/$1.txt' REPLACE INTO TABLE temp_${1}_${hostname} FIELDS TERMINATED BY '\t';" + DROPSQL="delete from $1 where hostname=\"$hostname\";" + COPY_BCK_SQL="replace into $1 (select * from temp_${1}_${thostname} where hostname=\"$hostname\");" + DROP_TABLE="Drop table temp_${1}_${thostname}" +} + +function ARG_ERR() { + if [ x$OPTARG = "x" ] + then + echo "$SWITCH NEEDS AND ARG" + exit 11 + fi +} + +function ALSADEVICE () { +#ALSA:hw:1,4 + if [ x$Audiotype = xALSA ] + then + SoundDevice=ALSA:$SoundDevice + MixerDevice="ALSA:default" + else + MixerDevice="/dev/mixer" + fi + +} + + + +if [ $# -eq 0 ] +then + echo "Valid options are:" + echo " -c (save|restore|load|uhostname|BECONFIG|ZIP|ACCESSCONTROL)" + echo " -t (syssettings|hostsettings)" + echo " -d databasename" + echo " -h hostname" + echo " -s systemtype (master|slave|standalone|frontendonly)" + echo " -a ipaddress" + echo " -z zipcode" + echo " -o override (only used upgrade installs)" + exit 1 +fi + + + + +while getopts "$OPTSTRING" SWITCH +do + case $SWITCH in + # \?) echo "unkown option" + # exit 11 ;; + c) echo "$SWITCH" "$OPTARG" + ARG_ERR + OPERATION=$OPTARG + ;; + t) echo "$SWITCH" "$OPTARG" + ARG_ERR + Thistemplate=$OPTARG + + if [ x$Thistemplate = x"syssettings" ] + then + echo "template is syssettings" + loadhost=false + elif [ x$Thistemplate = x"hostsettings" ] + then + echo "template is hostsettings" + Thistemplate=syssettings + loadhost=true + else + echo "invalid template name" + exit 1 + fi + ;; + d) echo "$SWITCH" "$OPTARG" + ARG_ERR + if [ $OVERRIDE = 1 ] + then + ovdbhost=$OPTARG + else + dbhost=$OPTARG + fi + ;; + h) echo "$SWITCH" "$OPTARG" + ARG_ERR + if [ $OVERRIDE = 1 ] + then + oldhostname=$hostname + hostname=$OPTARG + else + hostname=$OPTARG + fi + + ;; + s) echo "$SWITCH" "$OPTARG" + ARG_ERR + SYSTEMTYPE=$OPTARG + ;; + a) echo "$SWITCH" "$OPTARG" + ARG_ERR + IP_ADDRESS=$OPTARG + ;; + z) echo "$SWITCH" "$OPTARG" + ARG_ERR + ZIPCODE=$OPTARG + ;; + o) OVERRIDE=1 + ;; + + esac +done + +echo $OVERRIDE + +#setup the Mysql commands +CMD_DEFINE + +$MYSQLCMD_C "show tables" > /dev/null +status=$? +if [ $status = 1 ] +then + echo "$@ failed" + echo "$@ failed" >> /tmp/restore.out + exit 1 +fi + + + + + + + +case $OPERATION in + + restore) + #used to restore settings from syssettings + if [ -d $TEMPLATES/$Thistemplate ] + then + cd $TEMPLATES/$Thistemplate + if [ $loadhost = false ] + then + for i in $TABLES + do + SQL_DEFINE $i + sed -e "s/REPLACEME/$hostname/g" $i.txt > /tmp/$i.txt + #echo $MYSQLCMD "$SELECTSQL" + echo $i + $MYSQLCMD "$CREATESQL" + $MYSQLCMD "$ALTERSQL" + $MYSQLCMD "$COPY_TMP_SQL" + $MYSQLCMD "$INSERTSQL" + $MYSQLCMD "$DROPSQL" + $MYSQLCMD "$COPY_BCK_SQL " + $MYSQLCMD "$DROP_TABLE " + #rm /tmp/$i.txt + done + fi + if [ $loadhost = true ] + then + #only load the settings table with values HOST + i=settings + SQL_DEFINE $i + sed -e "s/REPLACEME/$hostname/g" $i.txt > /tmp/$i.txt + echo $i + $MYSQLCMD "$CREATESQL" + $MYSQLCMD "$ALTERSQL" + $MYSQLCMD "$INSERTSQL" + $MYSQLCMD "$COPY_TMP_SQL" + $MYSQLCMD "$DROPSQL" + $MYSQLCMD "$COPY_BCK_SQL" + $MYSQLCMD "$DROP_TABLE " + fi + else + echo "couldn't find $TEMPLATES/$Thistemplate" + fi + ;; + + save) + + if [ ! -d $TEMPLATES/$Thistemplate ] + then + mkdir -p $TEMPLATES/$Thistemplate + fi + + cd $TEMPLATES/$Thistemplate + for i in $TABLES + do + EXTRACLAUSE="" + case $i in + settings) + EXTRACLAUSE="and not (value like \"BackendServerIP\") and not (value like \"locale\") order by value" + SQL="select value,data,'REPLACEME' as hostname from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;" + # SQL="select * from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;" + $MYSQLCMD_C "$SQL" > $TEMPLATES/$Thistemplate/$i.txt + ;; + keybindings) + SQL="select context,action,description,keylist,'REPLACEME' as hostname from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;" + $MYSQLCMD_C "$SQL" > $TEMPLATES/$Thistemplate/$i.txt + ;; + esac + # sed -e "s/$hostname/REPLACEME/g" $i > $i.txt && rm $i + + done + ;; + + load) + + #will load both default_1 and default_2 unless either file is not found + for i in default_1 default_2 + do + if [ -f $TEMPLATES/$i/settings.txt ] + then + echo $i + for tablename in $TABLES + do + #create table + CREATESQL="create table IF NOT EXISTS ${tablename}_${i} like $tablename;" + $MYSQLCMD_C "$CREATESQL" + #truncate table + TRUNCATESQL="truncate ${tablename}_${i} " + $MYSQLCMD_C "$TRUNCATESQL" + #load table + INSERTSQL="LOAD DATA local INFILE '$TEMPLATES/$i/$tablename.txt' REPLACE INTO TABLE ${tablename}_${i} FIELDS TERMINATED BY '\t';" + $MYSQLCMD_C "$INSERTSQL" + #update_hostname + UPDATEHOSTNAMESQL="update ${tablename}_${i} set hostname='$i' ; " + $MYSQLCMD_C "$UPDATEHOSTNAMESQL" + done + else + + echo "couldn't find $TEMPLATES/$i/settings.txt template to load" + fi + CREATESQL="create table IF NOT EXISTS settings_user1 like settings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS settings_user2 like settings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS settings_user3 like settings;" + $MYSQLCMD_C "$CREATESQL" + + CREATESQL="create table IF NOT EXISTS keybindings_user1 like keybindings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS keybindings_user2 like keybindings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS keybindings_user3 like keybindings;" + $MYSQLCMD_C "$CREATESQL" + done +;; + + + + BECONFIG) + if [ $SYSTEMTYPE = "master" ] + then + $MYSQLCMD_C "UPDATE settings set data='${IP_ADDRESS}' where value='MasterServerIP';" + $MYSQLCMD_C "delete from settings where value='BackendServerIP' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='${IP_ADDRESS}' , value='BackendServerIP' , hostname=\"$hostname\";" + fi + + if [ $SYSTEMTYPE = "slave" ] + then + $MYSQLCMD_C "delete from settings where value='BackendServerIP' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='${IP_ADDRESS}' , value='BackendServerIP' , hostname=\"$hostname\";" + fi + ;; + ZIP) + $MYSQLCMD_C "delete from settings where value='locale' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$ZIPCODE' , value='locale' , hostname=\"$hostname\";" + $MYSQLCMD_C "delete from settings where value='MythMovies.ZipCode' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$ZIPCODE', value='MythMovies.ZipCode' , hostname=\"$hostname\";" + ;; + MUSICFRONT) + ALSADEVICE + $MYSQLCMD_C "delete from settings where value='AudioOutputDevice' and hostname=\"$hostname\";" + $MYSQLCMD_C "delete from settings where value='MixerDevice' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$SoundDevice', value='AudioOutputDevice' , hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$MixerDevice', value='MixerDevice' , hostname=\"$hostname\";" + #need to reload the settings. + systemconfig.sh reloadfe + ;; + MUSICMYTH) + ALSADEVICE + $MYSQLCMD_C "delete from settings where value='MusicAudioDevice' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$SoundDevice', value='MusicAudioDevice' , hostname=\"$hostname\";" + ;; + uhostname) + #used when the hostname is changed. + TABLES="settings capturecard keybindings storagegroup recorded" + for i in $TABLES + do + USQL="update $i set hostname=\"$oldhostname\" where hostname=\"$hostname\" ;" + $MYSQLCMD_C "$USQL" + done + + ;; + USERJOBALLOW) + SQL="update settings set data='1' where value like 'JobAllowUserJob%' and hostname=\"$hostname\" ;" + $MYSQLCMD_C "$SQL" + ;; + + ACCESSCONTROL) + LIST="Hostaccessnetwork Hostaccesshostype HostaccesshostypeSystemtype Hostaccessmisc Hostaccesssleep Hostaccessadvanced HostaccessadvancedX Hostaccesssound" + + for i in $LIST + do + $MYSQLCMD_C "delete from settings where value=\"$i\" and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='1', value=\"$i\" , hostname=\"$hostname\";" + done + SQL="update settings set data='0' where value='HostaccesshostypeSystemtype' and hostname=\"$hostname\" ;" + $MYSQLCMD_C "$SQL" + SQL="update settings set data='0' where value='Hostaccessuser' and hostname=\"$hostname\" ;" + $MYSQLCMD_C "$SQL" + ;; + esac + +#SELECT * INTO OUTFILE 'data.txt' +# FIELDS TERMINATED BY ',' +# FROM table2; + + diff --git a/abs/core/LinHES-config-svn/restore_km_db_chroot.sh b/abs/core/LinHES-config-svn/restore_km_db_chroot.sh new file mode 100644 index 0000000..e72e8c2 --- /dev/null +++ b/abs/core/LinHES-config-svn/restore_km_db_chroot.sh @@ -0,0 +1,61 @@ +#!/bin/bash +. /etc/profile +. /etc/systemconfig +. $MV_ROOT/bin/install_functions.sh + +myhost=$hostname +hostname $myhost +mount -t proc none /proc +DBFILE=$1 + +if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + then + #restore database + pacman --noconfirm -Sf mysql + status=1 + mysqlstatus=1 + while [ ! $status = 0 ] + do + /etc/rc.d/mysqld stop + sleep 1 + /etc/rc.d/mysqld start + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql -e "show databases;" + showstatus=$? + if [ $showstatus = 0 ] + then + #load database + pacman --noconfirm -R mythdb-initial + pacman --noconfirm -S mythdb-initial + + if [ -f $DBFILE ] + then + echo "restoring old database" + gunzip -c $DBFILE > /tmp/mythconverg.sql + mysql mythconverg < /tmp/mythconverg.sql + update_db_settings HostServiceMythWEB "1" + echo 'UseMythWEB="1"' >> /etc/systemconfig + else + echo "Could not restore old database, mythconverg.sql is missing." + touch /tmp/.upgrade_db_failed + fi + + if [ -d /data/srv/mysql/mythconverg ] + then + status=0 + fi + fi + fi + done + rm -f /tmp/mythconverg.sql + else + exit 0 + fi + +#/etc/rc.d/mysqld stop +#umount /proc + + + diff --git a/abs/core/LinHES-config-svn/soundconfig.sh b/abs/core/LinHES-config-svn/soundconfig.sh new file mode 100755 index 0000000..75998d6 --- /dev/null +++ b/abs/core/LinHES-config-svn/soundconfig.sh @@ -0,0 +1,254 @@ +#!/bin/bash +. /etc/systemconfig +. /etc/profile +echo $@ >/tmp/audio.call +#set -x +BASE="" +. /etc/profile +#TEMPLATES="/usr/share/templates" +#TESTFILE="$TEMPLATES/audio/space_battle_A.wav" +TESTFILE="/usr/share/sounds/alsa/Front_Center.wav" +OSSinstalled="false" + +function testaudio () { + +ossplay -d$AUDIODEVICE $TESTFILE + +} + +function load_alsa() { + + remove_service.sh alsa-utils +# cd /lib/modules/2.6.21-STB + KER=`uname -r` + cd /lib/modules/$KER/kernel/ + tar -xvf /lib/modules/alsa-$KER.tar + pacman -Sf --noconfirm alsa-lib + + depmod -a + cd - + udevadm trigger + udevadm settle + udevadm trigger + + add_service.sh alsa-utils + sleep 4 + sv start alsa-utils +} + + +function unload_alsa () { +#kill $(lsof -t /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/*) && modprobe -r $(lsmod |grep ^snd |awk '{print $1}') + sv stop alsa-utils + remove_service.sh alsa-utils + rm -rf /dev/adsp* + rm -rf /dev/snd/* + rm -rf /dev/audio + modprobe -r $(lsmod |grep ^snd |awk '{print $1}') +} + +function unload_oss { + sv stop oss + soundoff + rm -rf /dev/dsp* + rm -rf /dev/oss* + rm -rf /dev/sndstat + remove_service.sh oss +} + +function installOSS { + echo "installing oss" + pacman -Q oss 2>/dev/null + if [ ! $? = 0 ] + then + pacman --noconfirm -Sf oss + fi + add_service.sh oss + sleep 4 + sv start oss +} + + +function SYNCXINE { +echo "modify xine config file" + if [ -f /data/home/mythtv/.xine/config ] + then + cp -f /data/home/mythtv/.xine/config $TEMPLATES/xine.config + else + cp $TEMPLATES/xine.config.template $TEMPLATES/xine.config + fi + + if [ x$Audiotype = xOSS ] + then + DEVICENUMBER=`echo $SoundDevice|awk -F/ ' { print $3 } '|tr -d dsp ` + sed -e "s/^.*audio.driver.*$/audio.driver:oss/" \ + -e "s/^.audio.device.oss_device_name.*$/audio.device.oss_device_name:\/dev\/dsp/" \ + -e "s/^.audio.devic.oss_device_number.*$/audio.device.oss_device_number:$DEVICENUMER/" \ + -e "s/^.*audio.output.speaker_arrangement:.*$/Audio.output.speaker_arrangement:PassThrough/" \ + $TEMPLATES/xine.config > /data/home/mythtv/.xine/config + else + cp $TEMPLATES/xine.config /data/home/mythtv/.xine/config + fi + +} + +function SYNCMPLAYER { +echo "modify mplayer not implmented yet" +} + +function SYNCMYTHMUSIC { +echo "sync mythmusic" +$MV_ROOT/bin/restore_default_settings.sh -c MUSICMYTH +} + +function SYNCMYTHFRONTEND { +echo "sync mythfrontend" +$MV_ROOT/bin/restore_default_settings.sh -c MUSICFRONT +} + + +function checkOSSinstalled () { + ossinfo |grep Version |grep -q OSS >/dev/null + resultcode=$? + echo $resultcode + if [ $resultcode = 0 ] + then + OSSinstalled='true' + else + OSSinstalled='false' + fi +} + +function sound_config_system { + + if [ x$syncXine = x1 ] + then + SYNCXINE + fi + if [ x$syncMplayer = x1 ] + then + SYNCMPLAYER + fi + if [ x$syncMythMusic = x1 ] + then + SYNCMYTHMUSIC + fi + if [ x$syncMythFrontend = x1 ] + then + SYNCMYTHFRONTEND + fi + +} + +function loadsound (){ + checkOSSinstalled + if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] + #then + # if [ $OSSinstalled = "false" ] + then + while [ $OSSinstalled = "false" ] + do + unload_alsa + rm /tmp/.alsatest + installOSS + installOSS + sleep 2 + checkOSSinstalled + done + # fi + else + touch /tmp/.alsatest + unload_oss + load_alsa + load_alsa + rm /tmp/.alsatest + + fi + +} + + + + +#####################MAIN PROGRAM########################## + +declare -r OPTSTRING="i:t:d:" + +if [ $# -eq 0 ] +then + echo "Valid options are:" + echo " -i (oss|alsa) oss or alsa subsystem " + echo " -t (test|real|LOAD) " + echo " -d device" + exit 1 +fi + + + + +while getopts "$OPTSTRING" SWITCH +do + case $SWITCH in + \?) echo "unkown option" + exit 11 ;; + i) echo "$SWITCH" "$OPTARG" + AUDIOTYPE="$OPTARG" + ;; + d) echo "$SWITCH" "$OPTARG" + AUDIODEVICE=$OPTARG + ;; + t) echo "$SWITCH" "$OPTARG" + SOUNDOPTYPE="$OPTARG" + if [ x"$OPTARG" = xtest ] + then + TEST=true + else + TEST=false + fi + + + ;; + + esac +done + + + + +case $SOUNDOPTYPE in + REAL|real ) + loadsound + sound_config_system + ;; + test|TEST) + echo $@ > /tmp/audio.test + #loadsound + if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] + then + echo "testing OSS $AUDIODEVICE " + ossplay -d$AUDIODEVICE $TESTFILE + else + echo "testing ALSA $AUDIODEVICE " + aplay --device=$AUDIODEVICE $TESTFILE + fi + + ;; + + LOAD|load) + loadsound + ;; + esac + + +exit 0 + + + + + + + + + + + diff --git a/abs/core/LinHES-config-svn/startx b/abs/core/LinHES-config-svn/startx new file mode 100755 index 0000000..0ffdf8c --- /dev/null +++ b/abs/core/LinHES-config-svn/startx @@ -0,0 +1,29 @@ +#!/bin/bash +. /etc/profile + +export USER=root +export HOME=/root +#TEMPLATES=/usr/share/templates + +CMDLINE=$(cat /proc/cmdline) +TEMPVAR=${CMDLINE#*ip=} +IP=${TEMPVAR%% *} +echo $CMDLINE |grep -q vnc +USEVNC=$? + +if [ x$USEVNC = x1 ] +then + $MV_ROOT/bin/xconfig.sh + cat /etc/X11/xorg.conf | sed -e 's/dev\/mouse/dev\/psaux/g'> /root/xorg.conf.install + startx /root/live-install.sh -- -config /root/xorg.conf.install -allowMouseOpenFail + else + #VNC + pacman -Sf --noconfirm tightvnc + cd /root + mkdir .vnc + echo mythvantage |vncpasswd -f > /root/.vnc/passwd + chmod 500 /root/.vnc/passwd + rm /root/.vnc/xstartup + ln -s /root/live-install.sh /root/.vnc/xstartup + vncserver +fi diff --git a/abs/core/LinHES-config-svn/systemconfig.sh b/abs/core/LinHES-config-svn/systemconfig.sh new file mode 100755 index 0000000..6d63f5c --- /dev/null +++ b/abs/core/LinHES-config-svn/systemconfig.sh @@ -0,0 +1,1368 @@ +#!/bin/bash +################################################################### +#Script to configure your system based off the values in /etc/systemconfig +#Any changes made to config files will be removed when systemconfig.sh is run +# +#JM +################################################################### +#set -x +. /etc/profile +#MVRELEASE=`cat /etc/mythvantage-release |cut -d" " -f -2` +MVRELEASE=`cat /etc/LinHES-release ` +echo $@ >/tmp/systemconfig.call +echo "----------------------start of systemconfig $@ ----------------------" +BASE="" + +#TEMPLATES="/usr/share/templates" +. /etc/profile +. $MV_ROOT/bin/networkconfig.sh +PACMAN="pacman --noconfirm" +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 + + +if [ -f /etc/systemconfig ] +then + . /etc/systemconfig + setup_MYTH_vars +TEMPNET="Hostip"$default_interface +echo $TEMPNET +eval MYTHIP=\$${TEMPNET} +else + echo "could not find /etc/systemconfig" + exit 1 +fi + + +function cp_and_log () { + if [ -e $1 ] + then + echo "copying $1 to $2" + cp -rfp "$1" "$2" + else + echo "$1 is not present, skipping..." + fi + +} + + +#----------------------------------------------------- + + +function setupmysql { +#setup mysql.txt to find the database servers +echo "running setup mysql" + 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_and_log /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_and_log /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 + + #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/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}/home/mythtv/.mythtv/mysql.txt + rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt + if [ -f ${BASE}/home/mythtv/templates/mysql.txt ] + then + cp_and_log ${BASE}/home/mythtv/templates/mysql.txt $MYSQLTXT + fi + + chmod 755 $MYSQLTXT + chown mythtv $MYSQLTXT + +} + +function setupmysqlnetwork(){ +MFILE=etc/my.cnf +grep "#skip-networking" $BASE/$MFILE +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 + + fi + + if [ $SystemType = "Master_backend" ] + 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 + + fi + + +} + + +function settimezone { +#set the timezone +if [ x"$timezone" = x ] +then + timezone="unknown" +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 + + # 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_and_log $TEMPLATES/rc.conf ${BASE}/etc/rc.conf +#Check for Atomic Ant + if grep disablemodules=agpart,intel_agp /proc/cmdline >/dev/null + then + cat /etc/rc.conf | sed -e '/MOD_BLACKLIST/ c\MOD_BLACKLIST=($ALSABLACKLIST agpart intel_agp)' > /etc/rc.conf.aa + mv /etc/rc.conf /etc/rc.conf.preaa + mv /etc/rc.conf.aa /etc/rc.conf +# else +# exit 1 + fi + +} + + +function setupreceiver { + 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 + 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 + 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_and_log $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 -f lircrc* $BASE/etc/lircrc 2> /dev/null + 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 + + if [ ! -e /home/mythtv/.mythtv/lircrc ] + then + if [ ! -d /home/mythtv/.mythtv ] + then + mkdir /home/mythtv/.mythtv + chown mythtv:mythtv /home/mythtv/.mythtv + fi + + ln -s /etc/lircrc /home/mythtv/.mythtv/lircrc 2> /dev/null + fi + if [ ! -e /home/mythtv/.lircrc ] + then + + ln -s /etc/lircrc /home/mythtv/.lircrc 2> /dev/null + fi + + + ;; +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 + +} + +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_and_log $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg + daemon_add="evrouter Xvfb $daemon_remove" + + ;; + esac + else + # disable evrouter + daemon_remove="evrouter Xvfb $daemon_remove" + fi + + + + +} + +function setupLCD { + case x$LCDtype in + xtinker) echo "do nothing" + ;; + xno_lcd) echo "disabling lcd" + sv down lcdd + 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 + + + if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ] + then + cp_and_log $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc + # install="lcdproc $install" + daemon_add="lcdd $daemon_add" + 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_and_log /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 setupncidclient +{ + sed -e "s/^set Host.*$/set Host $dbhost /" $TEMPLATES/ncid.conf.template >${BASE}/etc/ncid/ncid.conf +} + +function setupnciddaemon { + if [ x$Runncidd = x1 ] + then + cp_and_log /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 + fi + +} + +function setupntp () { + #this is used for backend or standlone types + if [ $1 = "1" ] + then + #MBE/STD use deafult + echo "Not changing ntp config" + else + #echo "server $dbhost" >> ${BASE}/etc/ntp.conf + echo "setting ntp to $dbhost" + sed -i "s/pool.ntp.org/$dbhost/g" ${BASE}/etc/ntp.conf + fi + + +} + +function setupplugins (){ + +pkglistinstall="" +pkglistremove="" +#default enabled +for i in mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo +do + 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 +done + +#default disabled +for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather mythappletrailers mythstream mythvodka +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 +#everything else +for i in miro xe romdb xine dvdcss webmin +do + eval pkgvalue=\$${i} + case $i in + xine) + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall xine-ui" + else + pkglistremove="$pkglistremove xine-ui" + fi + ;; + dvdcss) + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall libdvdcss" + else + pkglistremove="$pkglistremove libdvdcss" + fi + ;; + webmin) + ##Daemon_add is here because webmin is on the software page instead of the advanced screen + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall webmin" + daemon_add="webmin $daemon_add" + else + pkglistremove="$pkglistremove webmin" + daemon_remove="webmin $daemon_remove" + fi + ;; + *) + if [ x$pkgvalue = x1 ] + then + pkglistinstall="$pkglistinstall $i" + else + pkglistremove="$pkglistremove $i" + fi + ;; +esac + +done + + +install="$pkglistinstall $install" +remove="$pkglistremove $remove" + +} +function LCDcheck () { + 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" + ;; +esac +} + + +function packages () { +#see which plugins need to be installed +echo " Starting to install Packages" +setupplugins +LCDcheck +if [ ! -f $PKGBLACKLIST ] +then + touch $PKGBLACKLIST +fi + for i in $remove + do + if [ ! x$i = xnone ] + then + echo "-----------$i --------------" + grep -q $i $PKGBLACKLIST + if [ $? = 1 ] + then + pacman -Q $i 2>/dev/null + #VAR=`pacman -Q $i 2>&1 ` + if [ $? = 0 ] + then + if [ $i = "mythweb$postfix" ] + then + 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 + fi + done + + + for i in $install + do + if [ ! x$i = xnone ] + then + 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: + + if [ ! $? = 0 ] + then + pacman --noconfirm -Sf $i + echo installed $i + else + echo "$i already installed" + fi + else + echo "$i is black listed" + fi + fi + 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_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 + +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 + +if [ x$RunFrontend = x1 ] +then + ser_daemon_add="frontend hal $ser_daemon_add" + ser_install=" $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" + fi + + if [ x$Samba_homereadonly = x1 ] + then + shreadonly="no" + else + shreadonly="yes" + fi + + if [ ! -d ${BASE}/etc/samba ] + then + mkdir ${BASE}/etc/samba + fi + + if [ -f ${BASE}/data/home/mythtv/templates/smb.conf ] + 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 + + if [ x$Samba_media = "x1" ] + then + echo "include = /etc/samba/smb.conf.media" >> ${BASE}/etc/samba/smb.conf + sed -e "s/^.*writeable.*$/writeable = $smreadonly/g" $TEMPLATES/samba/smb.conf.media > ${BASE}/etc/samba/smb.conf.media + fi + + if [ x$Samba_home = "x1" ] + then + echo "include = /etc/samba/smb.conf.home" >> ${BASE}/etc/samba/smb.conf + sed -e "s/^.*writeable.*$/writeable = $shreadonly/g" $TEMPLATES/samba/smb.conf.home > ${BASE}/etc/samba/smb.conf.home + + fi + + fi +else + ser_remove="samba $ser_remove" + ser_install="smbclient $ser_install" + ser_daemon_remove="smbd nmbd $ser_daemon_remove" +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 + +else + ser_remove="$ser_remove" + ser_daemon_remove="nfsd $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=0 +#fi + +#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" +# ;; +# 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 +# +# fi + + + +} + + + +function setupsleep { +if [ x$AutoShutdown = x1 ] +then + cronshutdowntime="" + if [ x$Shutdowntime != x-1 ] + then + cronshutdowntime=$Shutdowntime + fi + if [ x$Shutdowntime2 != x-1 ] + then + if [ x$cronshutdowntime = x ] + then + cronshutdowntime=$Shutdowntime2 + else + cronshutdowntime="${cronshutdowntime},${Shutdowntime2}" + fi + fi + + sed -e "s/HOUR/$cronshutdowntime/g" $TEMPLATES/cron.template | crontab - -u mythtv +else + sed -e "/00 HOUR.*/d" $TEMPLATES/cron.template | crontab - -u mythtv +fi + +} + + +function setuppacman () { +#setup link to httpd dir +echo "Configuring pacman" + if [ ! x$1 = x ] + then + ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo + echo "creating the link for the pacman repo mirror" + fi + + for i in mv-core mv-core-testing mv-extra mv-extra-testing + do + echo "[$i]" > ${BASE}/etc/pacman.d/$i + #add mirror if needed + if [ x$PKG_MIRROR = x1 ] + then + echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i + fi + #add user templates + USERTEMPLATES="/data/home/mythtv/templates" + if [ -f $USERTEMPLATES/sources/$i ] + then + echo "Adding user $i" + cat $USERTEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i + fi + cat $TEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i + echo "setting local mirror to $dbhost for $i " + done + + #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 + #Let's also speed things up for those in North America + mkdir /usr/bin/perlbin/vendor/tv_grabbers_non_na + mv /usr/bin/perlbin/vendor/tv_grab_* /usr/bin/perlbin/vendor/tv_grabbers_non_na + mv /usr/bin/perlbin/vendor/tv_grabbers_non_na/tv_grab_na* /usr/bin/perlbin/vendor/ + fi +} + +function process_nfsmap () { +#first look for a local copy of nfsmap +if [ $1 = noip ] +then + if [ -f /data/home/mythtv/templates/nfsmap ] + then + NFSMAP="/data/home/mythtv/templates/nfsmap" + else + mv -f /tmp/nfsmap /tmp/nfsmap.old + wget -O /tmp/nfsmap http://$dbhost:1337/templates/nfsmap + if [ $? = 0 ] + then + NFSMAP="/tmp/nfsmap" + 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 +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" + + 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}:/myth /myth + fi + fi + +} + +function setupbootsplash () { + +if [ x$Usebootsplash = x1 ] +then + COMMAND="%s/^default.*0/default 1/g" +else + COMMAND="%s/^default.*1/default 0/g" +fi + +ex ${BASE}/boot/grub/menu.lst < ${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 +COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${ip} \& /" +ex ${BASE}/data/srv/tftp/dongle.bin.config < /etc/os_myth_release +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/LinHES-config-svn/timezip.py b/abs/core/LinHES-config-svn/timezip.py new file mode 100755 index 0000000..31acd67 --- /dev/null +++ b/abs/core/LinHES-config-svn/timezip.py @@ -0,0 +1,231 @@ +#!/usr/bin/python +# import MySQL module +#used to import the zipcode/timezone/nfs info fromMBE +import MySQLdb +import sys +import getopt +import socket + + +def usage(): + print " -h --help" + print " -d --installdb" + print " -m --masterdb" + print " -n --hostname of current machine" + +def printvars(): + print "masterdb: " + masterdb + print "installdb:" + installdb + print "hostname: " + thishostname + print "BEhostname:" + BEhostname + print "zipcode:" + zipcode + print "timezone:" + tz + print "timezone region:" + tz_region + print "timezone subregion:" + tz_subregion + print "nfsip:" + nfsip + print "nfstoggle:" + nfstoggle + print "nfsmount:" + nfsmount + print "hobbitclient:" + hobbitclient +# connect +def selectvars(): + + global BEhostname + global zipcode + global tz + global tz_region + global tz_subregion + global nfsip + global nfstoggle + global nfsmount + global hobbitclient + + db = MySQLdb.connect(host=masterdb, user="mythtv", passwd="mythtv", db="mythconverg") + # create a cursor + cursor = db.cursor() + # execute SQL statement + cursor.execute("select hostname from settings where value='BackendServerIP' and data=(%s)",(masterdb)) + result = cursor.fetchone() + try: + BEhostname=result[0] + except TypeError: + BEhostname="" + + cursor.execute("select data from settings where value='HostZipcode' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + zipcode = result[0] + except TypeError: + zipcode="" + + cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + nfsip=result[0] + except TypeError: + nfsip="" + + cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + nfstoggle=result[0] + except TypeError: + nfstoggle="" + + cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + nfsmount=result[0] + except TypeError: + nfsmount="" + + cursor.execute("select data from settings where value='HostTimeZone' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + tz=result[0] + except TypeError: + tz="" +########## + cursor.execute("select data from settings where value='HostTimeZoneRegion' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + tz_region=result[0] + except TypeError: + tz="" + tempsubregion="HostTimeZoneRegion_" + tz_region + + cursor.execute("select data from settings where value=%s and hostname=(%s)",(tempsubregion,BEhostname)) + result = cursor.fetchone() + try: + tz_subregion=result[0] + except TypeError: + tz_subregion="" +############### + if ( thishostname != BEhostname ): + cursor.execute("select data from settings where value='GlobalServiceHobbitserver'") + result = cursor.fetchone() + try: + hobbitclient=result[0] + except TypeError: + hobbitclient="1" + + + +def insertvars(): + + db = MySQLdb.connect(host=installdb, user="mythtv", passwd="mythtv", db="mythconverg") + cursor = db.cursor() +#inserting the zipcode + cursor.execute("select * from settings where value='HostZipcode' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( zipcode!="" ): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostZipcode',(%s),(%s))",(zipcode,thishostname)) + print "inserting zipcode" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostZipcode'",(zipcode,thishostname)) + print "updating zipcode" + +#inserting the timezone + cursor.execute("select * from settings where value='HostTimeZone' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZone',(%s),(%s))",(tz,thishostname)) + print "inserting timezone" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZone'",(tz,thishostname)) + print "updating timezone" + + cursor.execute("select * from settings where value='HostTimeZoneRegion' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZoneRegion',(%s),(%s))",(tz_region,thishostname)) + print "inserting timezone region" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZoneRegion'",(tz_region,thishostname)) + print "updating timezone region" + + tempsubregion="HostTimeZoneRegion_" + tz_region + cursor.execute("select * from settings where value=%s and hostname=(%s)",(tempsubregion,thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ((%s),(%s),(%s))",(tempsubregion,tz_subregion,thishostname)) + print "inserting timezone subregion" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value=(%s)",(tempsubregion,tz_subregion,thishostname)) + print "updating timezone subregion" + + +#start of NFSIP + cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( nfsip != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostCentralNFSIP',(%s),(%s))",(nfsip,thishostname)) + print "inserting nfsip" + + if (nfstoggle != ""): + cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostHaveCentralNFS',(%s),(%s))",(nfstoggle,thishostname)) + print "inserting nfstoggle" + + if ( nfsmount !="") : + cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostNFSmountpoint',(%s),(%s))",(nfsmount,thishostname)) + print "inserting nfsmountpoint" + +#hobbitclient + cursor.execute("select * from settings where value='HostServiceHobbitclient' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostServiceHobbitclient',(%s),(%s))",(hobbitclient,thishostname)) + print "inserting hobbitcleint" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostServiceHobbitclient'",(hobbitclient,thishostname)) + print "updating hobbitclient" + + +def main(argv): + global masterdb + global installdb + global thishostname + thishostname="" + global BEhostname + global zipcode + global tz + global tz_region + global tz_subregion + + global nfsip + global hobbitclient + try: + opts, args = getopt.getopt(argv, "hm:d:n:", ["help", "masterdb=", "installdb=" , "hostname=" ] ) + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit() + elif opt in ( "-d" , "--installdb"): + installdb = arg + elif opt in ("-m", "--masterdb"): + masterdb = arg + elif opt in ("-n", "--hostname"): + thishostname = arg + + if ( thishostname == "" ): + thishostname = socket.gethostname() + + selectvars() + printvars() + insertvars() +if __name__ == "__main__": + main(sys.argv[1:]) + diff --git a/abs/core/LinHES-config-svn/timezone.bin b/abs/core/LinHES-config-svn/timezone.bin new file mode 100755 index 0000000..cff931a Binary files /dev/null and b/abs/core/LinHES-config-svn/timezone.bin differ diff --git a/abs/core/LinHES-config-svn/xconfig.sh b/abs/core/LinHES-config-svn/xconfig.sh new file mode 100755 index 0000000..e2a48ed --- /dev/null +++ b/abs/core/LinHES-config-svn/xconfig.sh @@ -0,0 +1,305 @@ +#!/bin/bash +#NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel unichrome-dri xf86-video-unichrome xf86-video-mga xf86-video-savage xf86-video-trident" +NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel xf86-video-mga xf86-video-savage xf86-video-trident" +BASE="" +. /etc/profile +NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt" +#TEMPLATES="/usr/share/templates" +MYTHHOME=$BASE/home/mythtv + +function Xvalues { + CMDLINE=$(cat /proc/cmdline) + echo "$CMDLINE" | grep -q forceXvesa + if [ $? = 0 ] + then + VGACARDTYPE=vesa + else + VGACARDTYPE=`lspci | grep -i vga | sort -r | head -n 1 | cut -d: -f3 | cut -d" " -f2` + VGAPCIID=`lspci | grep -i vga | sort -r | head -n 1 | cut -d" " -f1` + CARDID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f2` + VENDORID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f1` + fi + echo "$VGACARDTYPE" + currentmode=`cat "$BASE/etc/X11/xorg.conf" | grep Modes | awk -Fs '{ print $2 }'` +} + +function presetupX { + if [ -f /etc/sysconfig/IGNORE_X ] + then + echo "Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X" + return 1 + else + if [ "$XIgnoreConfig" = 1 ] + then + echo "Using User supplied X" + if [ -f "$MYTHHOME/templates/xorg.user" ] + then + cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF" + else + echo "Didn't find the file" + echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF" + fi + else + if [ "$XUseAdvanced" = 1 ] + then + setupAdvancedX + else + setupX + fi + fi + fi + +} + +function setupAdvancedX { + echo "#doing the advanced" > /tmp/options + Xcategory=`echo "$Xresadvanced" | cut -d_ -f1` + Xres=`echo "$Xresadvanced" | cut -d_ -f2` + echo "$Xcategory" + if [ "$Xcategory" = "Nvidia" ] + then + Xres="" + if [ "$XnVidia1080p" = "1" ] + then + Xres="${Xres} \"1920x1080_60\"" + fi + if [ "$XnVidia1080i" = "1" ] + then + Xres="${Xres} \"1920x1080_60i\"" + fi + if [ "$XnVidia720p" = "1" ] + then + Xres="${Xres} \"1280x720_60\"" + fi + if [ "$XnVidia480p" = "1" ] + then + Xres="${Xres} \"720x480_60\"" + fi + ML="\t Modes ${Xres}" + else + + ML="\t Modes \"${Xres}\"" + fi +# echo $ML + case $Xcardtype in + NVIDIA|nVidia) + case $Xconnection in + DVI) ConnectedMonitor=DFP ;; + vga) ConnectedMonitor=CRT;; + Auto) ConnectedMonitor=Auto;; + TV) ConnectedMonitor=TV + echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options + echo "Option \"TVOutFormat\" \"$XTVconnection\"" >> /tmp/options + ;; + esac + if [ "$ConnectedMonitor" = Auto ] + then + echo "auto connection" + else + echo "Option \"ConnectedMonitor\" \"$ConnectedMonitor\"" >> /tmp/options + echo "Option \"FlatPanelProperties\" \"Scaling = centered, Dithering = enabled\"" >> /tmp/options + echo "Option \"DigitalVibrance\" \"0\"" >> /tmp/options + fi + + if [ "$XignoreEDID" = 1 ] + then + EDIDvalue=true + EDIDFREQ=false + DS=" DisplaySize $XDisplaysize" + HS=" HorizSync $XHsync" + VR=" VertRefresh $XVrefresh" + else + EDIDvalue=false + EDIDFREQ=true + DS="# Display size edid used " + HS="# Hsync edid used " + VR="# Vertrefresh edid used " + fi + echo "Option \"UseEdidFreqs\" \"$EDIDFREQ\"" >> /tmp/options + echo "Option \"IgnoreEDID\" \"$EDIDvalue\"" >> /tmp/options + + + sed -e "s/^.*Modes.*$/${ML}/" \ + -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \ + -e "s/^.*DisplaySize.*$/ $DS/" \ + -e "s/^#.*HorizSync.*$/ $HS/g" \ + -e "s/^#.*VertRefresh.*$/ $VR/g" \ + -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + ;; + + ati|ATI) + case $Xconnection in + DVI) ConnectedMonitor="tmds1,nocrt1,notv";; + VGA) ConnectedMonitor="crt1,notmds1,notv" ;; + TV) ConnectedMonitor="tv,nocrt1,notmds1" + echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options + echo "Option \"TVFormat\" \"$XTVconnection\"" >> /tmp/options + ;; + esac + if [ "$XignoreEDID" = 1 ] + then + DS=" DisplaySize $XDisplaysize" + HS=" HorizSync $XHsync" + VR=" VertRefresh $XVrefresh" + else + DS="# Display size edid used " + HS="# Hsync edid used " + VR="# Vertrefresh edid used " + fi + + echo "Option \"ForceMonitors\" \"$ConnectedMonitor\"" >> /tmp/options + + sed -e "s/^.*Modes.*$/\t $ML/" \ + -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \ + -e "s/^.*DisplaySize.*$/ $DS/" \ + -e "s/^#.*HorizSync.*$/ $HS/g" \ + -e "s/^#.*VertRefresh.*$/ $VR/g" \ + -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.ati" > "$XORG_CONF" + ;; + + via|VIA|Via|S3) + # Need to add appropriate Modules, Device and DRI sections + # See the http://www.mythtv.org/wiki/XvMC wiki page + echo "no via here" + ;; + + *) + echo "unknown card type" + ;; + esac +} + + +function setupX { + Xvalues + #echo "$currentmode ____ ${Xres}" + #if [ "${currentmode}" != \"${Xres}\" ] + if [ x = x ] + then + case $VGACARDTYPE in + nVidia) + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + if [ "$TESTMODE" != "test" ] + then + #nvidia check right here + grep -qi "$CARDID" "$NVIDIA_96XX" + if [ $? = 0 ] + then + #install 96xx drivers + echo "installing nvidia 96xx drivers" + pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 + pacman --noconfirm -S nvidia-96xx nvidia-96xx-utils > /dev/null 2>&1 + else + #install latest drivers + echo "installing current nvidia drivers" + pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 + pacman --noconfirm -S nvidia nvidia-utils > /dev/null 2>&1 + fi + fi + echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG" + ;; + + # VMware) + # sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vmware" > "$XORG_CONF" + # ;; + + VIA|S3) + # There are actually multiple options here + # xf86-video-openchrome + # xf86-video-unichrome + # There is also a seperate driver for the Unichrome Pro + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF" + if [ "$TESTMODE" != "test" ] + then + if [ "$OPENCHROME" = "1" ] + then + pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1 + pacman --noconfirm -S libgl unichrome-dri xf86-video-openchrome > /dev/null 2>&1 + else + pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1 + pacman --noconfirm -S libgl unichrome-dri xf86-video-unichrome > /dev/null 2>&1 + fi + fi + # I'm making educated guesses here... + if lspci | grep "VGA" | grep -qi "Unichrome Pro" + then + if [ -f "/usr/lib/libchromeXvMCPro.so.1" ] + then + echo "/usr/lib/libchromeXvMCPro.so.1" > "$XVMC_CONFIG" + else + echo "/usr/lib/libviaXvMCPro.so.1" > "$XVMC_CONFIG" + fi + else + if [ -f "/usr/lib/libchromeXvMC.so.1" ] + then + echo "/usr/lib/libchromeXvMC.so.1" > "$XVMC_CONFIG" + else + echo "/usr/lib/libviaXvMC.so.1" > "$XVMC_CONFIG" + fi + fi + ;; + + Intel) + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF" + if [ "$TESTMODE" != "test" ] + then + pacman --noconfirm -R nvidia-utils > /dev/null 2>&1 + pacman --noconfirm -S libgl > /dev/null 2>&1 + fi + echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG" + ;; + + vesa|InnoTek) + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" + ;; + + *) + XCONF=/root/xorg.conf.new + XCONFB=/etc/X11/xorg.conf.install + X -configure + if [ -f "$XCONF" ] + then + echo "Using $XCONF" + grep -v Modes "$XCONF" | sed -e "/Depth.*16/a Modes \"${Xres}\" " -e "/Depth.*24/a Modes \"${Xres}\"" -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF" + elif [ -f "$XCONFB" ] + then + echo "Using $XCONFB" + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$XCONFB" > "$XORG_CONF" + else + echo "Xorg configuration failed" + fi + rm -f "$XCONF" 2>&1 > /dev/null + ;; + esac + fi + +} + +#MAIN +TESTMODE="$1" +if [ "$TESTMODE" = "test" ] +then + XORG_CONF="/tmp/xorg.conf.test" + XVMC_CONFIG="/tmp/XvMCConfig.test" + XUseAdvanced="1" + XIgnoreConfig="${2}" + Xcardtype="${3}" + XIgnoreEDID="${4}" + Xconnection="${5}" + XHsync="${6}" + XVrefresh="${7}" + Xresadvanced="${8}" + XTVstandard="${9}" + XTVconnection="${10}" + XDisplaysize="${11}" +else + if [ -f /etc/systemconfig ] + then + . /etc/systemconfig + else + Xres="800x600" + fi + XORG_CONF="/etc/X11/xorg.conf" + XVMC_CONFIG="/etc/X11/XvMCConfig" +fi +presetupX diff --git a/abs/core/LinHES-config/LinHES-release b/abs/core/LinHES-config/LinHES-release new file mode 100644 index 0000000..6a885f4 --- /dev/null +++ b/abs/core/LinHES-config/LinHES-release @@ -0,0 +1 @@ +LinHES R6.01.00 (Chugu) diff --git a/abs/core/LinHES-config/LinHES.install b/abs/core/LinHES-config/LinHES.install new file mode 100644 index 0000000..a0a9d31 --- /dev/null +++ b/abs/core/LinHES-config/LinHES.install @@ -0,0 +1,78 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { + rm -f /etc/issue + rm -f /etc/arch-release + +} + +# arg 1: the new package version +post_install() { + if [ ! -f /etc/blacklist.package ] + then + echo "List of packages to ignore" > /etc/blacklist.package + echo "one package per line" >> /etc/blacklist.package + fi + +LINE="mythtv ALL = NOPASSWD:/usr/MythVantage/bin/mythvantage" +LINE1="mythtv ALL = NOPASSWD:/usr/MythVantage/bin/MythVantage" +for i in "$LINE" "$LINE1" +do + cp /etc/sudoers /etc/sudoers.bak + grep -q "$i" /etc/sudoers + if [ $? != 0 ] + then + echo "$i" >> /etc/sudoers + visudo -cf /etc/sudoers + if [ ! $? = 0 ] + then + cp /etc/sudoers.bak /etc/sudoers + echo $i + echo "Error adding files" + exit 1 + fi + fi +done + + +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + /bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + . /etc/profile + ps -ef|grep mysqld|grep -v grep + status=$? + echo "status $status" + if [ $status = 0 ] + then + restore_default_settings.sh -c load + fi + if [ ! -f /etc/blacklist.package ] + then + echo "List of packages to ignore" > /etc/blacklist.package + echo "one package per line" >> /etc/blacklist.package + fi +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/LinHES-config/MythVantage.sh b/abs/core/LinHES-config/MythVantage.sh new file mode 100755 index 0000000..286c908 --- /dev/null +++ b/abs/core/LinHES-config/MythVantage.sh @@ -0,0 +1,3 @@ +export MV_ROOT=/usr/MythVantage +export PATH=$PATH:$MV_ROOT/bin +export TEMPLATES=$MV_ROOT/templates diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD new file mode 100644 index 0000000..1e61fdf --- /dev/null +++ b/abs/core/LinHES-config/PKGBUILD @@ -0,0 +1,101 @@ +pkgname=LinHES-config +pkgver=2.1 +pkgrel=1 +conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev ) +pkgdesc="Install and configure your system" +depends=(bc libstatgrab mysql-python expect curl dnsutils parted + sg3_utils nmbscan system-templates rsync python-parted + ddcxinfo python-pexpect python-netifaces LinHES-timezone + python-iplib mythinstall) +arch=('i686') + +source=(mv_install.py + mv_config.py + myth_user_call + file_time_offset.py + install-ui.xml + install_proxy.sh + install_functions.sh + systemconfig.sh + install_db_chroot.sh + restore_default_settings.sh + xconfig.sh + timezip.py + soundconfig.sh + LinHES-release + issue + MythVantage.sh + create_master.sh + build_diskless.sh + networkconfig.sh + autocard.py + restore_km_db_chroot.sh + README + mv_advanced.py + mv_common.py + mv_ir.py + mv_misc.py + mv_network.py + mv_screensaver.py + mv_smolt.py + mv_software.py + mv_webuser.py + mv_hostype.py + systemconfig.py + myth_user_call.py) + +install=LinHES.install + +build() { + mkdir -p $startdir/pkg/etc + mkdir -p $startdir/pkg/usr/share/mythtv/themes/default + + MVDIR=$startdir/pkg/usr/MythVantage + mkdir $startdir/pkg/etc/profile.d + install -m 0755 MythVantage.sh $startdir/pkg/etc/profile.d/MythVantage.sh + mkdir -p $MVDIR/bin + mkdir -p $MVDIR/etc + + #copy in all the installer specific stuff +# install -m0700 myth_user_call $MVDIR/bin/myth_user_call + install -m0700 myth_user_call.py $MVDIR/bin/myth_user_call + install -m 0755 install_proxy.sh $MVDIR/bin/install_proxy.sh + install -m 0755 install_functions.sh $MVDIR/bin/install_functions.sh + install -m 0755 systemconfig.sh $MVDIR/bin/systemconfig.sh + install -m 0755 xconfig.sh $MVDIR/bin/xconfig.sh + install -m 0755 install_db_chroot.sh $MVDIR/bin/install_db_chroot.sh + install -m 0755 restore_km_db_chroot.sh $MVDIR/bin/restore_km_db_chroot.sh + install -m 0755 restore_default_settings.sh $MVDIR/bin/restore_default_settings.sh + install -m 0755 soundconfig.sh $MVDIR/bin/soundconfig.sh + install -m 0755 networkconfig.sh $MVDIR/bin/networkconfig.sh + install -m 0755 create_master.sh $MVDIR/bin/create_master.sh + install -m 0755 build_diskless.sh $MVDIR/bin/build_diskless.sh + install -m 0755 timezip.py $MVDIR/bin/timezip.py + install -m 0755 autocard.py $MVDIR/bin/autocard.py + install -m 0755 mv_config.py $MVDIR/bin/mv_config.py + install -m 0755 mv_install.py $MVDIR/bin/mv_install.py + install -m 0755 mv_advanced.py $MVDIR/bin/ + install -m 0755 mv_common.py $MVDIR/bin/ + install -m 0755 mv_ir.py $MVDIR/bin/ + install -m 0755 mv_misc.py $MVDIR/bin/ + install -m 0755 mv_network.py $MVDIR/bin/ + install -m 0755 mv_screensaver.py $MVDIR/bin/ + install -m 0755 mv_smolt.py $MVDIR/bin/ + install -m 0755 mv_software.py $MVDIR/bin/ + install -m 0755 mv_webuser.py $MVDIR/bin/ + install -m 0755 mv_hostype.py $MVDIR/bin/ + install -m 0755 systemconfig.py $MVDIR/bin/ + + #README file displayed on install + install -m 0755 README $MVDIR/README + + mkdir -p $startdir/pkg/usr/bin + install -m 0755 file_time_offset.py $startdir/pkg/usr/bin/file_time_offset.py + + #Copy in the branding stuff + install -m 0755 LinHES-release $startdir/pkg/etc/LinHES-release + install -m 0755 issue $startdir/pkg/etc/issue + + # copy over the ui files + install -m 0755 install-ui.xml $startdir/pkg/usr/share/mythtv/themes/default/ +} diff --git a/abs/core/LinHES-config/README b/abs/core/LinHES-config/README new file mode 100644 index 0000000..447678a --- /dev/null +++ b/abs/core/LinHES-config/README @@ -0,0 +1,9 @@ +Thanks for choosing LinHES! At the moment, LinHES is compiled for i686. +If you have an i586 class system, LinHES won't work for you. I've not seen a great request for i586. If you want it, you have to drum up support for it. The PVR-350 TV out isn't supported at this time. I have to determine if it works with MythTV 0.22 first. + +Support for LinHES can be obtained at: +http://linhes.org +irc.freenode.net #linhes + +Bugs can be reported at: +http://linhes.org/flyspray diff --git a/abs/core/LinHES-config/add_service.sh b/abs/core/LinHES-config/add_service.sh new file mode 100755 index 0000000..190d604 --- /dev/null +++ b/abs/core/LinHES-config/add_service.sh @@ -0,0 +1,15 @@ +#!/bin/bash +SERVICE_DIR=/var/service +SCRIPT_DIR=/etc/sv +if [ -d $SCRIPT_DIR/$1 ] +then + if [ -d $SERVICE_DIR/$1 ] + then + echo "$1 already there" + else + ln -s $SCRIPT_DIR/$1 $SERVICE_DIR/$1 + echo "adding $1" + fi +else + echo "couldn't find $SCRIPT_DIR/$1" +fi diff --git a/abs/core/LinHES-config/autocard.py b/abs/core/LinHES-config/autocard.py new file mode 100755 index 0000000..03eecac --- /dev/null +++ b/abs/core/LinHES-config/autocard.py @@ -0,0 +1,307 @@ +#!/usr/bin/python +# import MySQL module +#jm +import MySQLdb +import sys +import getopt +import socket +import os +import time +import string +import glob +from string import letters +from string import digits +def INSERTNULL_SOURCE(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit): + cursor = db.cursor() + cursor.execute("INSERT INTO videosource(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit) VALUES(%s,%s,%s,%s,%s,%s,%s);",(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit)) + +def INSERTCARD_INTOMYTH(Device,Driver,Cardvendor): + global currenthostname + print Device + print Driver, + print Cardvendor + cursor = db.cursor() + insert = "false" + if Driver == "ivtv" : + cardtype="MPEG" + defaultinput="Tuner 1" + insert="true" + if Cardvendor == "pcHDTV HD3000 HDTV": + insert="false" + cardtype ="whocares" + + #print insert + if insert == "true" : + cursor.execute("INSERT INTO capturecard (videodevice,cardtype,defaultinput,hostname) VALUES(%s,%s,%s,%s);",(Device,cardtype,defaultinput,currenthostname)) + +def INSERTHDR_INTOMYTH(deviceid,tuner_number): + cardtype='HDHOMERUN' + defaultinput='MPEG2TS' + global currenthostname + print deviceid + print cardtype + print defaultinput + print tuner_number + cursor = db.cursor() + #print insert + cursor.execute("INSERT INTO capturecard (videodevice,cardtype,defaultinput,dbox2_port ,hostname) VALUES(%s,%s,%s,%s,%s);",(deviceid,cardtype,defaultinput,tuner_number,currenthostname)) + +def INSERTAUTOCARD(): + global cardlist + global currenthostname + # create a cursor + cursor = db.cursor() + + + for i in range( 1 , len(cardlist)): + insert = "false" +# print cardlist[i] + Device=cardlist[i][0] + Driver=cardlist[i][1] + Cardvendor=cardlist[i][2] + Businfo=cardlist[i][3] + if Driver == "ivtv" : + insert="true" + devicestatus="unused" + if Cardvendor == "pcHDTV HD3000 HDTV": + insert="false" + cardtype ="whocares" + if Driver == "hdr": + insert="true" + devicestatus="unused" + + if insert == "true" : + cursor.execute("delete from autocard where uniqid=%s;",(Businfo)) + if Driver=="hdr": + Cardvendor="HDHOMERUN Tuner 1" + cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname)) + Cardvendor="HDHOMERUN Tuner 2" + cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname)) + + else: + cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname)) + + + +def PRINTINFO(): + global cardlist + + for list in cardlist: + if list != "_placeholder_": + print list + #print "-------------" + +def GATHER_HDR(): + global cardlist + command="/usr/bin/hdhomerun_config --discover" + results=os.popen(command,'r') + line=results.readline() + if line.strip().split()[0] == "no": + print "HDHOMERUN not detected" + else: + print line + hdrdevice=line.strip().split()[2] + print hdrdevice + Driver="hdr" + Device=hdrdevice + Cardtype="HDHOMERUN" + Businfo=hdrdevice + cardprops = [Device,Driver , Cardtype , Businfo] + cardlist.append(cardprops) + + +def GATHER_v4l_CARDS(): + global cardlist + cardlist=["_placeholder_"] + # print "Looking for v4l cards" + try: + filelist = os.listdir('/dev/v4l/') + except OSError: + filelist=" " + #fakelist=['/dev/v4l/video3', 'ivtv', 'WinTV PVR 500 (unit #2)', '0000:04:09.0'] + #cardlist.append(fakelist) + try: + filelist = glob.glob("/dev/v4l/video?") + Driver="" + Cardtype="" + Businfo="" + numcards = 0 + for Device in filelist: + #print card + numcards = numcards+1 + cmd = 'v4l2-ctl -D -d' + Device + for line in os.popen(cmd).readlines(): + #print line + pos = string.find(line,"Driver name") + if pos >=0: + splitline= line.split(':') + Driver=splitline[1].strip() + pos = string.find(line,"Card type") + if pos >=0: + splitline= line.split(':') + Cardtype=splitline[1].strip() + + pos = string.find(line,"Bus info") + if pos >=0: + splitline= line.split(':',1) + Businfo=splitline[1].strip() + + #print Device,Driver , Cardtype , Businfo,numcards + cardprops = [Device,Driver , Cardtype , Businfo] + cardlist.append(cardprops) + except IOError: + print "no v4l cards found" + sys.exit(2) + + +def WRITEUDEV_IVTV(): + global insertmyth + cursor = db.cursor() + #add ivtv,cid lookup loop through until empty. + cursor.execute("select distinct(uniqid) from autocard where driver='ivtv' and devicestatus='will-add'") + cidrows = cursor.fetchall() + for row in cidrows: + cid=row[0] + cursor.execute("select dev,driver,description,devicestatus,hostname from autocard where uniqid=%s limit 1;",(cid)) + result = cursor.fetchone() + description=result[2] + driver='DRIVERS==\"ivtv\"' + ATTRNAME='ATTR{name}=="ivtv? encoder MPG"' + KERNELS='KERNELS==\"' + KERNELS+=cid + KERNELS+="\"" + #filter out non digit or chars + keep=letters.join(digits) + description=filter(lambda c: c in keep, description) + devnode="ivtv/" + #devnode+=description + "_" + udevcid=cid.partition(":") + devnode+=udevcid[2] + devnode+="_video" + UDEV_RULE=driver +', '+ATTRNAME+', '+ KERNELS +', ' + 'NAME=\"' + devnode + '"' + print "Here is the udev rule" + print UDEV_RULE + filename='/etc/udev/rules.d/11-ivtv-'+cid+'.rules' + file = open(filename,'w') + file.write(UDEV_RULE) + if ( insertmyth == "true"): + devnode="/dev/"+devnode + INSERTCARD_INTOMYTH(devnode,"ivtv",description) + cursor.execute("update autocard set devicestatus='done' where uniqid=%s;",(cid)) +#now insert HDR + cursor.execute("select distinct(uniqid),description from autocard where driver='hdr' and devicestatus='will-add'") + cidrows = cursor.fetchall() + for row in cidrows: + if ( insertmyth == "true"): + deviceid=row[0] + #cardtype="HDHOMRUN" + #defaultinput="MPEG2TS" + dbox2_port=row[1] + tuner_number=dbox2_port.rpartition(' ')[2] + INSERTHDR_INTOMYTH(deviceid,tuner_number) + cursor.execute("update autocard set devicestatus='done' where uniqid=%s and description=%s;",(deviceid,dbox2_port)) + + + +def CLEARAUTOCARD(): + cursor = db.cursor() + cursor.execute("delete from autocard") + +def RELOADUDEV(): + print "relaoding udev rules" + os.system('udevcontrol reload_rules') + os.system('rmmod ivtv') + os.system('udevtrigger') + + +def usage(): + print " -h help" + print " -g gather and print out the found cards" + print " -w write out the udev rules" + print " -i insert cards into myth that are marked will-add(only used with -w)" + print " -r reload udev rules" + print " -c clear the autocard db" + +def main(argv): + global db + global cardlist + global currenthostname + currenthostname="" + writeudev="false" + global insertmyth + insertmyth ="false" + + db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + try: + cursor = db.cursor() + cursor.execute("describe autocard;") + except MySQLdb.Error, e: + cursor.execute("create table autocard(dev varchar(50),driver varchar(50),description varchar(50),uniqid varchar(50), devicestatus varchar(50),hostname varchar(50));") + print "table created" + + if ( currenthostname == "" ): + currenthostname = socket.gethostname() + + + try: + opts, args = getopt.getopt(argv, "hgwircd", ["help", "gathercards", "writeudev" ,"insert" , "reloadudev" , "clearautocard"] ) + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit() + elif opt in ( "-g" , "--gathercards"): + GATHER_v4l_CARDS() + GATHER_HDR() + INSERTAUTOCARD() + PRINTINFO() + elif opt in ("-w", "--writeudev"): + writeudev="true" + elif opt in ("-i", "--insert"): + insertmyth="true" + elif opt in ( "-r" , "--reloadudev"): + RELOADUDEV() + elif opt in ( "-c" , "--clearautocard"): + CLEARAUTOCARD() + elif opt in ( "-d" ): + INSERTCARD_INTOMYTH("file:/myth/video/TripThe1939.mpeg","ivtv","Dummy tuner") + INSERTNULL_SOURCE("dummy","/bin/true","","default","NULL","NULL","0") + + if ( writeudev == "true"): + WRITEUDEV_IVTV() + + + + + + +if __name__ == "__main__": + main(sys.argv[1:]) + + + + + +#mysql> create table autocard(dev varchar(50),driver varchar(50),description varchar(50),uniqid varchar(50), devicestatus varchar(50),hostname varchar(50)); +#Query OK, 0 rows affected (0.14 sec) + +#mysql> describe autocard; +#+--------------+-------------+------+-----+---------+-------+ +#| Field | Type | Null | Key | Default | Extra | +#+--------------+-------------+------+-----+---------+-------+ +#| dev | varchar(50) | YES | | NULL | | +#| driver | varchar(50) | YES | | NULL | | +#| description | varchar(50) | YES | | NULL | | +#| uniqid | varchar(50) | YES | | NULL | | +#| devicestatus | varchar(50) | YES | | NULL | | +#| hostname | varchar(50) | YES | | NULL | | +#+--------------+-------------+------+-----+---------+-------+ + + + + + + + + diff --git a/abs/core/LinHES-config/bpopup-ui.xml b/abs/core/LinHES-config/bpopup-ui.xml new file mode 100755 index 0000000..df0598b --- /dev/null +++ b/abs/core/LinHES-config/bpopup-ui.xml @@ -0,0 +1,164 @@ + + + + + + + + #ffff00 + #000000 + 24 + 3,3 + yes + + + + #9999cc + 18 + yes + + + + #ffff00 + #000000 + 18 + 3,3 + yes + + + + #ffffff + 18 + yes + + + + #ffffff + 50 + yes + + + #ff0000 + #000000 + 16 + 2,2 + yes + + + + #ffff00 + 14 + yes + + + + 0,0,800,600 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/LinHES-config/build_diskless.sh b/abs/core/LinHES-config/build_diskless.sh new file mode 100755 index 0000000..4dfd5fc --- /dev/null +++ b/abs/core/LinHES-config/build_diskless.sh @@ -0,0 +1,143 @@ +#!/bin/bash +#CD=/mnt/cd +. /etc/profile +. /etc/systemconfig + +TFTP=/data/srv/tftp +CD=/data/srv/tftp/live +DESTCD=/data/srv/tftp/CD +BASE=/data/srv/tftp/masterbuild + +MODULES=$DESTCD/MythVantage/base/ +myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` +SRCFILES=$BASE/mnt/live/mnt/MythVantage/base/ + +function log () { +echo $1 +} + +function check_xvfb () { +export DISPLAY=127.0.0.1:25 + Xvfb -ac :25 & + +} + + +function create_base_image() { +echo $SRCFILES +if [ -f $SRCFILES/data.lzm ] +then + mkdir $HOST_IMG_DIR + cd $SRCFILES + echo "Creating image.." > $BASE/tmp/.install_state + LIST=`ls *.lzm` + for i in $LIST + do + echo $i + echo $i > $BASE/tmp/.install_percent + lzm2dir $i \/$HOST_IMG_DIR + done + + for i in sys proc dev tmp + do + mkdir /$HOST_IMG_DIR/$i + done + + chmod 777 /$HOST_IMG_DIR/tmp + mknod /$HOST_IMG_DIR/dev/null c 1 3 + mknod /$HOST_IMG_DIR/dev/null c 1 5 + mknod /$HOST_IMG_DIR/dev/console c 5 1 + chmod +s /$HOST_IMG_DIR/usr/bin/Xorg + chmod +s /$HOST_IMG_DIR/usr/bin/crontab + chmod +s /$HOST_IMG_DIR/usr/bin/sudo + chmod +s /$HOST_IMG_DIR/bin/mount + #copy fstab from masterbuild + cp -f $BASE/etc/fstab /$HOST_IMG_DIR/etc/fstab + echo "Done: installing data" > $BASE/tmp/.install_state + return 0 +else + echo "Error: no modules" > $BASE/tmp/.install_state + log "couldn't find modules to install" + return 1 +fi +} + +function configure_image () { + echo "Configuring system" > $BASE/tmp/.install_state + cp -f $BASE/etc/systemconfig $HOST_IMG_DIR/etc/systemconfig + chown root:mythtv $HOST_IMG_DIR/etc/systemconfig + chmod 775 "$HOST_IMG_DIR" /etc/systemconfig + cp /etc/mtab $HOST_IMG_DIR/etc/mtab + mount --bind /dev $HOST_IMG_DIR/dev + + chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install +#copy syssettings template to here. + SE=$BASE$TEMPLATES/settings/syssettings + mkdir -p $HOST_IMG_DIR/$TEMPLATES/settings/syssettings + cp -rp $SE/* ${HOST_IMG_DIR}/$TEMPLATES/settings/syssettings + chown root:mythtv $HOST_IMG_DIR/etc/systemconfig + chown -R mythtv:mythtv $HOST_IMG_DIR/$TEMPLATES/settings/syssettings + chmod -R 775 $HOST_IMG_DIR/$TEMPLATES/settings/syssettings +#update remotedb with this host settings + OLDDISPLAY=$DISPLAY + check_xvfb + chroot $HOST_IMG_DIR $MV_ROOT/bin/MythVantage -t restore,default_1 + chroot $HOST_IMG_DIR $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + if [ ! $? = 0 ] + then + touch $mountpoint/tmp/.dbsysfailed + chmod 777 $mountpoint/tmp/.dbsysfailed + else + #Run second time + chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install + chroot "$HOST_IMG_DIR" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + fi +chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install +cp -f $BASE/etc/X11/xorg.conf $HOST_IMG_DIR/etc/X11/xorg.conf +echo "Done" > $BASE/tmp/.install_state +DISPLAY=$OLDDISPLAY + +#cp /tmp/mythvantage_install.log $HOST_IMG_DIR/var/log/ +} + +function create_tftp_boot () { + + CFGFILE=$TFTP/pxelinux.cfg/01-$2 + echo "DEFAULT mythfe" > $CFGFILE + echo "LABEL mythfe" >> $CFGFILE + echo "kernel masterbuild/boot/vmlinuz26STB" >> $CFGFILE + echo "append vga=normal root=/dev/nfs rw netboot nfsroot=$myip:/data/srv/tftp/$1 ip=dhcp init=/sbin/runit" >> $CFGFILE + echo "TIMEOUT 2" >> $CFGFILE +} + +function create_nfs_export () { +echo "/data/srv/tftp/$1 *(rw,no_root_squash,anonuid=1000,anongid=1000) " >> /etc/exports +exportfs -arv +} + +#-------------------------------------------------------------------------------MAIN PROGRAM --------------------------------------------------------------------- +if [ x$1 = x -o x$2 = x ] +then + echo "usage: hostname macaddress" + exit 1 +fi + +image_name=$1 +mac_address=`echo $2| tr "[:upper:]" "[:lower:]"` + +echo "using image_name of $image_name" +echo "using mac_address of $mac_address" + +HOST_IMG_DIR=$TFTP/$1 + +create_base_image $image_name +configure_image +umount $HOST_IMG_DIR/dev +create_tftp_boot $image_name $mac_address +create_nfs_export $image_name + + + + +#create_dhcp_entry $mac_address + diff --git a/abs/core/LinHES-config/checkout_MythVantage.sh b/abs/core/LinHES-config/checkout_MythVantage.sh new file mode 100755 index 0000000..944b9c6 --- /dev/null +++ b/abs/core/LinHES-config/checkout_MythVantage.sh @@ -0,0 +1,49 @@ +#!/bin/bash +MYDIR=`pwd` +MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/core-testing\/mythtv\/stable\/mythtv\/src\/mythtv-0.21" + +function setup_links { +rm mythinstall.bin +rm mythbeselect.bin +ln -s $MYDIR/src/MythVantage-app/mythinstall/mythinstall ./mythinstall.bin +ln -s $MYDIR/src/MythVantage-app/mythbeselect/mythbeselect ./mythbeselect.bin +} + +function dl_repo { +mkdir src +cd src +if [ ! -d MythVantage-app ] +then + git clone http://mythvantage.com/MythVantage-app.git/ + cd MythVantage-app + git checkout --track -b LinHES origin/LinHES + cd $MYDIR + setup_links + cd - +else + echo "updating exisiting tree" + cd MythVantage-app + git pull + git checkout master + git merge + cd - +fi + +cd MythVantage-app +git checkout master +#git checkout origin/LinHES + +} + +dl_repo +sed -i "s/^MYTHPATH.*$/MYTHPATH\=\"$MYTHPATH\"/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro +sed -i "s/#define __MVAPP__/\/\/#define __MVAPP__/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h +sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h + +echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythbeselect/mythberestart.pro +echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro +cd $MYDIR/src/MythVantage-app/mythinstall && qmake +make || exit 1 +cd $MYDIR/src/MythVantage-app/mythbeselect && qmake +make ||exit 1 + diff --git a/abs/core/LinHES-config/create_master.sh b/abs/core/LinHES-config/create_master.sh new file mode 100755 index 0000000..1e641b4 --- /dev/null +++ b/abs/core/LinHES-config/create_master.sh @@ -0,0 +1,57 @@ +#!/bin/bash +#CD=/mnt/cd +CD=/data/srv/tftp/live +DESTCD=/data/srv/tftp/CD +DEST=/data/srv/tftp/masterbuild +MODULES=$DESTCD/MythVantage/base/ +myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` + +mkdir -p $DESTCD +mkdir -p $DEST + +mount $CD +status=0 +if [ -f $CD/MythVantage/base/data.lzm ] +then + status=0 +else + status=1 +fi +if [ x$status = x0 ] +then + echo "copying to disk" + cp -rp $CD/* $DESTCD + cd $MODULES + for i in *.lzm + do + echo $i + lzm2dir $i \/$DEST + done + for i in sys proc dev tmp + do + mkdir $DEST/$i + done + chmod 777 /$DEST/tmp + mknod $DEST/dev/null c 1 3 + mknod $DEST/dev/null c 1 5 + mknod $DEST/dev/console c 5 1 + chmod +s $DEST/usr/bin/Xorg + chmod +s $DEST/usr/bin/crontab + chmod +s $DEST/usr/bin/sudo + chmod +s $DEST/bin/mount +fi +if [ ! -f $DEST/etc/fstab.bak ] +then + cp $DEST/etc/fstab $DEST/etc/fstab.bak +fi +tac $DEST/etc/fstab.bak|tail +4|tac > $DEST/etc/fstab +echo "$myip:/data/srv/tftp/masterbuild / nfs" >> $DEST/etc/fstab +echo "/data/srv/tftp/masterbuild *(rw,no_root_squash,anonuid=1000,anongid=1000)" >> /etc/exports + + +exportfs -arv + +#copy in the modules +mkdir -p $DEST/mnt/live/mnt/ +mv $DESTCD/* $DEST/mnt/live/mnt/ + diff --git a/abs/core/LinHES-config/file_time_offset.py b/abs/core/LinHES-config/file_time_offset.py new file mode 100755 index 0000000..f2973d0 --- /dev/null +++ b/abs/core/LinHES-config/file_time_offset.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + + +import time +import os +import glob +import getopt +import sys +def main(argv): + filecount=0 +# root = "/tmp" +# offset = 4 + now = int(time.time()) + + + try: + opts, args = getopt.getopt(argv, "hs:d:") + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + print "-s seconds -d /testdir" + print "default if 4 seconds" + sys.exit() + elif opt in ( "-s" ): + offset = int(arg) + elif opt in ("-d"): + root = arg + + for item in glob.glob(root+"/*"): + lastmodDate = os.path.getmtime(item) + tdiff= now-lastmodDate + #print tdiff, offset + + if tdiff > offset: + filecount+=1 + print filecount +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/abs/core/LinHES-config/install-ui.xml b/abs/core/LinHES-config/install-ui.xml new file mode 100755 index 0000000..2b3a043 --- /dev/null +++ b/abs/core/LinHES-config/install-ui.xml @@ -0,0 +1,175 @@ + + + + + + + + #ffff00 + #000000 + 20 + 3,3 + yes + + + + #9999cc + 18 + yes + + + + #ffff00 + #000000 + 18 + 3,3 + yes + + + + #ffffff + 18 + yes + + + + #ffffff + 50 + yes + + + #ff0000 + #000000 + 16 + 2,2 + yes + + + + #ffff00 + 14 + yes + + + #9999cc + 12 + no + + + + 0,0,800,600 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/LinHES-config/install_db_chroot.sh b/abs/core/LinHES-config/install_db_chroot.sh new file mode 100644 index 0000000..94305d2 --- /dev/null +++ b/abs/core/LinHES-config/install_db_chroot.sh @@ -0,0 +1,63 @@ +#!/bin/bash +. /etc/profile +. /etc/systemconfig + + +myhost=$hostname +hostname $myhost +echo $myhost > /etc/hostname +echo "install_db_chroot hostname is $hostname" + +. $MV_ROOT/bin/install_functions.sh +#myhost=`cat /etc/hostname` + +#mount -t proc none /proc +pacman --noconfirm -Sf mysql +/etc/rc.d/mysqld + +status=1 +mysqlstatus=1 +while [ ! $status = 0 ] +do + /etc/rc.d/mysqld stop + sleep 1 + /etc/rc.d/mysqld start + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql -e "show databases;" + showstatus=$? + if [ $showstatus = 0 ] + then + pacman --noconfirm -R mythdb-initial + pacman --noconfirm -S mythdb-initial + $MV_ROOT/bin/restore_default_settings.sh -c load + DISPLAY=127.0.0.1:0 $MV_ROOT/bin/MythVantage -t restore,default_1 + $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + $MV_ROOT/bin/systemconfig.sh misc,hostype,this_is_install + + update_db_settings HostServiceMythWEB "1" + echo 'UseMythWEB="1"' >> /etc/systemconfig + + #update database to allow user jobs on this host. + $MV_ROOT/bin/restore_default_settings.sh -c USERJOBALLOW + $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + if [ -d /data/srv/mysql/mythconverg ] + #if [ -d /var/lib/mysql/mythconverg ] + then + # pacman --noconfirm -R webcalendar + # pacman --noconfirm --nodeps -S webcalendar + status=0 + fi +# if [ $SystemType = "Master_backend" ] +# then +# $MV_ROOT/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost +# fi + fi + fi +done +/etc/rc.d/mysqld stop +#umount /proc + + + diff --git a/abs/core/LinHES-config/install_functions.sh b/abs/core/LinHES-config/install_functions.sh new file mode 100755 index 0000000..83a2bed --- /dev/null +++ b/abs/core/LinHES-config/install_functions.sh @@ -0,0 +1,344 @@ +#!/bin/bash +. /etc/profile + +disk=$2 +mountpoint=new_boot + +#------------------------------------------- +MYTHDBUSER=mythtv +MYTHTVPASSWD=mythtv +CMDLINE=$(cat /proc/cmdline) +hostname=`hostname` +MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD mythconverg -B --exec" +BASE="" +found_remote=1 + +function update_db_settings () { + + printhl " setting database value $1 to $2 for $hostname" + $MYSQLCMD_C "delete from settings where value='${1}' and hostname=\"$hostname\";" 2>/dev/null + $MYSQLCMD_C "REPLACE INTO settings set value='${1}', data='${2}' , hostname=\"$hostname\";" 2>/dev/null +} + +function random_theme () { +THEMES="basic-blue +basic-green +basic-red +basic-purple +basic-amber" + +theme=($THEMES) # Read into array variable. + +num_themes=${#theme[*]} # Count how many elements. + +pick=${theme[$((RANDOM%num_themes))]} +printhl " Selected $pick as the theme" +update_db_settings Theme "$pick" +} + +function parse_cmdline_2_db(){ + echo $CMDLINE | grep -q displayres + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*displayres=} + update_db_settings HostXres $TEMPVAR + fi + +} + + +function bootsplash_setup (){ + echo $CMDLINE | grep -q splash=silent + if [ $? -eq 0 ] + then + update_db_settings Hostbootsplash 1 + else + update_db_settings Hostbootsplash 0 + fi +} + + +function setupremote { + [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` + if [ -d $TEMPLATES/remotes/$Remotetype ] + then + cd $TEMPLATES/remotes/$Remotetype + for i in lircd* + do + cat $i >> $BASE/etc/lircd.conf + done + cp -f lircrc* $BASE/etc/lircrc 2> /dev/null + [ -e /etc/lircrc ] && chmod 755 /etc/lircrc + update_db_settings HostRemoteType "$Remotetype" + #special case for special remote + printhl "Starting with support for $Remotetype" + if [ "$Remotetype" == "dvico" ] + then + /usr/sbin/lircd -d /dev/usb/hiddev0 --driver=dvico + elif [ "$Remotetype" == "Dvico-Dual-Digital4-rev2" ] + then + /usr/sbin/lircd -d /dev/input/irremote --driver=devinput + else + /usr/sbin/lircd -d /dev/lirc0 + fi + [ -e /root/.mythtv ] || mkdir /root/.mythtv 2>/dev/null + ln -s /etc/lircrc /root/.mythtv/lircrc 2>/dev/null + else + echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype" + fi +} + +function scan_for_hpg_receiver() { +printhl " Scanning for Hauppauge receiver" +for hpgid in `lspci -nm -d4444: |cut -d" " -f6- |tr -d '"'|tr " " :` +do + line=`grep $hpgid $TEMPLATES/remotes/i2c.id` + if [ $? -eq 0 ] + then + modprobe lirc_i2c + FoundReceiverType=`echo "$line"|cut -d"|" -f2` + Remotetype=`echo "$line"|cut -d"|" -f4` + statusline=`echo "$line"|cut -d"|" -f2,4` + #echo "Found $statusline , $Remotetype" + echo "Found Hauppauge" + echo "-------------------" + echo " 1) Hauppauge black" + echo " 2) Hauppauge silver" + echo " 3) hauppauge-grey-g3" + echo "" + read -p "Which Hauppauge remote (5 sec): " -t 5 ans + echo + if [ "$?" != "0" ]; then + echo + echo "Using default $Remotetype" + else + case $ans in + 1) Remotetype="hauppauge-black";; + 2) Remotetype="hauppauge-silver";; + 3) Remotetype="hauppauge-grey-g3" ;; + *) echo "Using default $Remotetype";; + esac + fi + update_db_settings HostReceiverType $FoundReceiverType + found_remote=0 + setupremote + break + fi +done +} + + +function scan_for_usb_remote () { +#found_remote=1 +printhl " Scanning for usb receiver/remote" +while read line +do + USBID=`echo "$line"|cut -d"|" -f1` + lsusb -d "$USBID" > /dev/null 2>/dev/null + if [ $? -eq 0 ] + then + Remotetype=`echo "$line"|cut -d"|" -f2` + printhl "Found $Remotetype" + setupremote + found_remote=0 + break + fi +done <$BASE/$TEMPLATES/remotes/receiver_usb.id +if [ $found_remote -eq 1 ] +then + scan_for_hpg_receiver +fi +printhl " Scanning for TatIR" +if lsusb | grep 04d8:0004 > /dev/null 2>/dev/null +then + /usr/bin/PyroUsb.py > /dev/null 2>&1 & +fi + +if [ $found_remote -eq 1 ] +then +#No remote found_remote + update_db_settings HostRemoteType "no_remote" +fi + +} + +function rest_of_network () { + #netmask + echo $CMDLINE | grep -q cnetmask + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*cnetmask=} + NETMASK=${TEMPVAR%% *} + /sbin/ifconfig eth0 $IP netmask $NETMASK + nm=`/usr/bin/nmconv.py -obits $NETMASK` + NETMASK="/$nm $NETMASK" + #echo $NETMASK + update_db_settings HostNETMASK${MYTHDEFAULT} "$NETMASK" + else + printhl " Netmask not found" + fi + #gateway + echo $CMDLINE | grep -q cgateway + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*cgateway=} + GATEWAY=${TEMPVAR%% *} + /sbin/route add default gw $GATEWAY + update_db_settings HostGW${MYTHDEFAULT} "$GATEWAY" + else + printhl " Gateway not found" + fi + + #dns + echo $CMDLINE | grep -q cdns + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*cdns=} + DNS=${TEMPVAR%% *} + echo "nameserver $DNS" >> /etc/resolv.conf + update_db_settings HostDNS${MYTHDEFAULT} "$DNS" + else + printhl " DNS not found" + fi + echo $CMDLINE | grep -q chostname + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*chostname=} + MYHOST=${TEMPVAR%% *} + update_db_settings HostMyhostname "$MYHOST" + else + printhl " hostname not found" + fi +} + +function init_network { + echo $CMDLINE |grep -q cnetdev + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*cnetdev=} + MYTHDEFAULT=${TEMPVAR%% *} + else + MYTHDEFAULT="eth0" + fi + + echo $CMDLINE | grep -q ip + if [ $? -eq 0 ] + then + update_db_settings HostDefaulteth0 0 + update_db_settings HostDefault${MYTHDEFAULT} 1 + + update_db_settings HostActiveonbooteth0 0 + update_db_settings HostActiveonboot${MYTHDEFAULT} 1 + update_db_settings HostNetDevice ${MYTHDEFAULT} + + TEMPVAR=${CMDLINE#*cip=} + IP=${TEMPVAR%% *} + if [ "$IP" == "dhcp" ] + then + /sbin/dhcpcd $MYTHDEFAULT + update_db_settings HostUseDHCP${MYTHDEFAULT} 0 + else + /sbin/ifconfig ${MYTHDEFAULT} $IP + update_db_settings HostUseDHCP${MYTHDEFAULT} 1 + update_db_settings HostIP${MYTHDEFAULT} "$IP" + rest_of_network + fi + fi + + + + +} + +function dev_up_check(){ + /sbin/ifconfig $1 1>/dev/null 2>/dev/null + status=$? + if [ $status -eq 1 ] + then + return 0 + else + devip=`/sbin/ifconfig | grep -C1 $1| grep inet|grep -v inet6 | cut -d: -f2 | awk '{ print $1}'` + if [ "x$devip" = "x" ] + then + return 1 + else + return 0 + fi + fi +} + +function request_dhcp(){ + echo $CMDLINE |grep -q cnetdev + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*cnetdev=} + MYTHDEFAULT_NET=${TEMPVAR%% *} + else + MYTHDEFAULT_NET="eth0" + fi + for ndev in eth0 eth1 wlan0 wlan1 ath0 + do + dev_up_check $ndev + status=$? + if [ $status -eq 1 ] + then + #interface is down, lets see if dhcp responds + dhcpcd -Td -t2 $ndev -h "" > /tmp/dhcpinfo.$ndev 2>/dev/null + #check for hostname here + + TEMPVAR=`grep new_ip_address /tmp/dhcpinfo.$ndev |cut -d\= -f2` + if [ ! x$TEMPVAR = x ] + then + update_db_settings HostIP$ndev "$TEMPVAR" + TEMPVAR=`grep new_subnet_mask /tmp/dhcpinfo.$ndev |cut -d\= -f2` + nm=`/usr/bin/nmconv.py -obits $TEMPVAR` + TEMPVAR="/$nm $TEMPVAR" + update_db_settings HostNETMASK$ndev "$TEMPVAR" + TEMPVAR=`grep new_routers /tmp/dhcpinfo.$ndev |cut -d\= -f2` + update_db_settings HostGW$ndev "$TEMPVAR" + TEMPVAR=`grep new_domain_name_servers /tmp/dhcpinfo.$ndev |cut -d\= -f2| tr -d \"|tr -d \'|cut -d" " -f 1` + update_db_settings HostDNS$ndev "$TEMPVAR" + fi + fi + done + TEMPVAR=`grep new_host_name /tmp/dhcpinfo.$MYTHDEFAULT_NET |cut -d\= -f2` + if [ ! x$TEMPVAR = x ] + then + update_db_settings HostMyhostname "$TEMPVAR" + fi + +} + +function init_remote { + echo $CMDLINE | grep -q remoteport + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*remoteport=} + REMOTEPORT=${TEMPVAR%% *} + if [ x"$ReceiverType" = "xSerial" ] + then + if [ -e /dev/$REMOTEPORT ] + then + /usr/bin/setserial /dev/$REMOTEPORT uart none + /sbin/modprobe lirc_serial + update_db_settings HostReceiverType Serial + update_db_settings HostSerialPortlirc "$REMOTEPORT" + fi + fi + + fi + + echo $CMDLINE | grep -q remote + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*remote=} + Remotetype=${TEMPVAR%% *} + setupremote + else + scan_for_usb_remote + fi +} + +#----------------------- + + diff --git a/abs/core/LinHES-config/install_proxy.sh b/abs/core/LinHES-config/install_proxy.sh new file mode 100755 index 0000000..71b675b --- /dev/null +++ b/abs/core/LinHES-config/install_proxy.sh @@ -0,0 +1,234 @@ +#!/bin/bash +export TERM=vt100 +MVHOSTNAME=larch5 +. /etc/profile +TEMP_TEMPLATES=/tmp/templates +disk=$2 +rootfs=$3 +rootsize=$4 +datafs=$5 +datasize=$6 +swapsize=$7 +mountpoint="/new_boot" +run=$MV_ROOT/bin/install_functions.sh +. /etc/systemconfig 2>/dev/null +. $MV_ROOT/bin/networkconfig.sh +CMDLINE=$(cat /proc/cmdline) +BACKUPFILE="/myth/backup/mythconverg.sql.gz" + + +progress () { + mypercent=`echo "$1" | cut -d. -f1` + if [ x$mypercent = x ] + then + echo "" > /tmp/.install_percent + else + echo "${mypercent}% complete" > /tmp/.install_percent + fi +} + + +case $1 in + full_install_it ) + mv_install.py --rootdisk=$disk --rootfs=$rootfs --rootsize=$rootsize --datafs=$datafs --datasize=$datasize --datadisk=$disk --swapsize=$swapsize -c full_install + rc=$? + echo "mv_install.py exit code $rc" + if [ $rc != 0 ] + then + echo "mv_install error" >> /tmp/.install_error + fi + exit $rc + ;; + + NETBOOT) + echo "-----------------------------------------------------------------------3-----" + netboot-full_install + ;; + + find_update) + mv_install.py --rootdisk=$disk -c find_upgrade + ;; + + upgrade_it) + mv_install.py --rootdisk=$disk --rootfs=$rootfs -c upgrade + ;; + + disk_model_it) + model="unknown" + size="xxx" + case $2 in + h* ) + model=`cat /proc/ide/$2/model` + ;; + s*) model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '` + ;; + esac + size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` + echo ""$model" $size " >/tmp/model + ;; + + network_check_it) + #Should never return from check_network + case $2 in + setup_network) + vnc_check + install_network_setup + ;; + + check_self) + myipdefault=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` + echo "network check myself" + ifconfig + ping -c 1 $myipdefault + if [ ! $? = 0 ] + then + exit 3 + #can't ping yourself + fi + ;; + check_gw) + #check gateway + echo "network check gateway" + /sbin/route -n + mygwdefault=`/sbin/route -n |grep $default_interface|grep UG|awk '{ print $2}'` + echo "Default gateway seems to be $mygwdefault" + if [ ! x$mygwdefault = x ] + then + sleep 2 + ping -c 5 $mygwdefault + if [ ! $? = 0 ] + then + exit 4 + fi + fi + ;; + check_ns) + #check nameserver + echo " network check nameserver" + mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'` + ping -c 1 $mydns + if [ ! $? = 0 ] + then + exit 5 + fi + ;; + check_names) + echo "network check resolve names" + host google.com + if [ ! $? = 0 ] + then + exit 6 + fi + ;; + host_names) + #if host is found, then check to see if it's online + #if hoip matchs my ip assume it's ok + echo "network check my hostname $hostname" + hout=`host $hostname|head -n1` + status=$? + hoip=`echo $hout|awk '{print $4}'` + if [ $hoip = found: ] + then + status=1 + fi + + if [ $hoip = "out;" ] + then + #;; connection timed out; no servers could be reached + echo "DNS servers not found" + status=1 + fi + + unkownhost=`host unkown.linhes.org |head -n1 ` + unkownhostip=`echo $unkownhost |awk '{print $4}'` + + #found host, now grab the ip + if [ $status = 0 ] + then + hoip=`echo $hout|awk '{print $4}'` + /sbin/ifconfig -a |grep -q $hoip + if [ $? = 0 ] + then + echo "DNS ip matches on of my ips $hoip" + status=0 + else + if [ $unkownhostip = $hoip ] + then + echo "Bad DNS returning false hits" + echo "Assuming hostname is OK" + echo "DNS unknown: $unkownhostip" + echo " HOSTDNS: $hoip " + /sbin/ifconfig -a |grep "inet addr" + else + echo "IP in DNS but doesn't match mine, hostname is not safe to use" + echo "DNS:$hoip" + echo "HOST: " + /sbin/ifconfig -a |grep "inet addr" + status=7 + fi + fi + else + echo "Couldn't find hostname in DNS, must be safe to use" + status=0 + fi + exit $status + ;; + + esac + exit 0 + ;; + + * ) + if [ -f /tmp/.install_state ] + then + state=`cat /tmp/.install_state` + else + state=" " + fi + if [ x"${state}" = "xConfiguring system" ] + then + progress "" + else + + if [ -f /tmp/.startsize.io ] + then + . /tmp/.startsize.io + #finding the drive + ddrive=`df | grep $mountpoint | head -n1 | awk -F/ ' { print $3 } ' | cut -d" " -f 1|cut -b1,2,3 ` + used=`statgrab -M disk.|grep ${ddrive}.write_bytes|cut -d= -f 2|tr -d " "` + used=`echo $used-$STARTSIZE|bc` + #echo $used + fi + + if [ ! x$used = x ] + then + . /root/.install_size + #somehow find if it's an install or update + if [ -f /tmp/.this_is_upgrade ] + then + total=$UPGRADESIZE + else + total=$TOTALSIZE + fi + percent=`echo "scale=2 ; ($used/$total) * 100 " |bc ` + cond2=$(echo "$percent > 98" |bc ) + if [ $cond2 -eq 1 ] + then + percent=98 + fi + if [ x"${state}" = "xDone" ] + then + percent=100 + fi + cond3=$(echo "$percent < 3" |bc ) + if [ $cond3 -eq 0 ] + then + progress $percent + fi + fi + fi + ;; +esac + + + diff --git a/abs/core/LinHES-config/issue b/abs/core/LinHES-config/issue new file mode 100644 index 0000000..00d4abd --- /dev/null +++ b/abs/core/LinHES-config/issue @@ -0,0 +1,2 @@ +LinHes + diff --git a/abs/core/LinHES-config/live-install.sh b/abs/core/LinHES-config/live-install.sh new file mode 100755 index 0000000..573bb1f --- /dev/null +++ b/abs/core/LinHES-config/live-install.sh @@ -0,0 +1,28 @@ +#!/bin/bash +#redirect stderr to stdout, then rediret stdout to file +. /etc/profile +exec 2>&1 +exec > /tmp/mythvantage_install.log +. /etc/X11/STBWINDOWMANAGER +/usr/bin/nvidia-settings -a InitialPixmapPlacement=2 +keylaunch & +/usr/bin/tilda & +/usr/X11R6/bin/unclutter -root -idle 0 -jitter 400 -noevents & +export MALLOC_CHECK_=0 +if [ -f /opt/vmware/bin32/vmware-user-wrapper ] +then + /opt/vmware/bin32/vmware-user-wrapper & +fi +xhost + +CMDLINE=$(cat /proc/cmdline) +echo $CMDLINE |grep -q nfsroot +NFSROOT=$? +if [ x$NFSROOT = x1 ] +then + + unbuffer MythVantage & +else + NETBOOT=YES MythVantage & +fi + +exec $STBWINDOWMANAGER diff --git a/abs/core/LinHES-config/mv_advanced.py b/abs/core/LinHES-config/mv_advanced.py new file mode 100755 index 0000000..4790fcf --- /dev/null +++ b/abs/core/LinHES-config/mv_advanced.py @@ -0,0 +1,384 @@ +# -*- coding: utf-8 -*- +import logging, os, re +import mv_common + +def setup_pacman(create_link): + if create_link: + logging.info(" Creating pacman link") + #LOOK + #This is not implmented yet, below is the bash code for reference + #if [ ! x$1 = x ] + #then + #ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo + #echo "creating the link for the pacman repo mirror" + #fi + + #for i in mv-core mv-core-testing mv-extra mv-extra-testing + #do + #echo "[$i]" > ${BASE}/etc/pacman.d/$i + ##add mirror if needed + #if [ x$PKG_MIRROR = x1 ] + #then + #echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i + #fi + ##add user templates + #USERTEMPLATES="/data/home/mythtv/templates" + #if [ -f $USERTEMPLATES/sources/$i ] + #then + #echo "Adding user $i" + #cat $USERTEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i + #fi + #cat $TEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i + #echo "setting local mirror to $dbhost for $i " + #done + else: + logging.info(" Pacman link will not be created") + return + +def setup_ncid_client(dbhost,templatefile): + #This always runs + logging.debug(" Configuring ncid client with server %s",dbhost) + cmd = '''sed -e "s/^set Host.*$/set Host %s /" %s >/etc/ncid/ncid.conf''' %(dbhost, templatefile) + return + +def setup_ncid_daemon(port,templatefile,Runncidd): + logging.info(" Configuring callerid daemon") + if Runncidd == "1": + logging.debug(" Port: %s",port) + mv_common.cp_and_log("/etc/ncid/ncidd.conf",templatefile) + cmd = '''sed -e "s/.*set ttyport.*$/set ttyport = \/dev\/%s /" %s >/etc/ncid/ncidd.conf''' %(port,templatefile) + mv_common.runcmd(cmd) + mv_common.pacinstall("ncidd") + mv_common.add_service("ncidd") + else: + logging.debug(" Callerid will not run") + mv_common.pacremove("ncidd") + mv_common.remove_service("ncidd") + return + +def setup_splash(Usebootsplash): + if Usebootsplash == "1": + logging.info(" Enabling splash") + cmd = ''' sed -i "s/^default.*0/default 1/g" /boot/grub/menu.lst''' + mv_common.runcmd(cmd) + else: + logging.info(" Disabling splash") + cmd = ''' sed -i "s/^default.*1/default 0/g" /boot/grub/menu.lst''' + mv_common.runcmd(cmd) + return +def setup_rrd(UseRRD): + if UseRRD == "1": + logging.info(" Enabling rrd_stats") + mv_common.pacinstall("rrd_stats") + else: + logging.info(" Disabling rrd_stats") + mv_common.pacremove("rrd_stats") + + +def setup_hobbit(UseHobbit,SystemType,dbhost): + if UseHobbit == "1": + if SystemType == "Standalone" or SystemType == "Master_backend": + logging.info(" Installing hobbit server") + mv_common.pacinstall("hobbitserver") + mv_common.add_service("hobbit") + else: + logging.info(" Installing hobbit client") + mv_common.pacinstall("hobbit-client") + setup_hobbit_client(dbhost) + mv_common.add_service("hobbit-client") + + else: + logging.info(" Removing Hobbit") + mv_common.pacremove("hobbit") + mv_common.pacremove("hobbit-client") + mv_common.remove_service("hobbit-client") + mv_common.remove_service("hobbitserver") + cmd = "rm -f /data/srv/httpd/htdocs/hobbit/index.html" + mv_common.runcmd(cmd) + return + +def setup_hobbit_client(dbhost): + logging.info(" Configuring hobbit client") + logging.debug(" hobbit server is %s:", dbhost) + cmd='''sed -i "s/^BBDISP.*$/BBDISP=%s/g" /data/srv/hobbit/client/etc/hobbitclient.cfg ''' %dbhost + mv_common.runcmd(cmd) + return + +def setup_evrouter(UseEvrouter,EvrouterConfig,template): + if UseEvrouter == "1": + logging.info(" Configuring everouter") + logging.debug(" EvrouterConfig is %s:",EvrouterConfig) + if EvrouterConfig == "tinker": + logging.debug(" tinker mode, not changing the config") + return + mv_common.pacinstall("evrouter") + mv_common.pacinstall("Xvfb") + mv_common.cp_and_log(template+"/evrouter/"+EvrouterConfig,"/etc/evrouter.cfg") + mv_common.add_service("evrouter") + mv_common.add_service("Xvfb") + else: + logging.info(" Not using evrouter") + mv_common.pacremove("evrouter") + mv_common.remove_service("evrouter") + mv_common.remove_service("Xvfb") + + return + +def setup_DNSmasq(RunDHCP,ip,gw,nameserver): + if RunDHCP == "1": + logging.info(" Configuring dhcp server(dnsmasq)") + logging.debug(" ip: %s", ip) + logging.debug(" gw: %s", gw) + logging.debug(" ns: %s", nameserver) + mv_common.pacinstall("dnsmasq") + mv_common.pacinstall("mvpmc") + mv_common.add_service("dnsmasq") + logging.debug(" Setting default route to my gw: %s",gw) + try: + f = open("/etc/dnsmasq.conf",'r') + dnsconf = f.readlines() + f.close() + except: + logging.info(" Couldn't open dnsmasq.conf") + return + for line in dnsconf: + outline = line + if re.match("^dhcp-option=3",line): + logging.debug(" Setting default route to my gw: %s",gw) + outline = "dhcp-option=3,%s\n" %gw + if re.match("^dhcp-option=6",line): + logging.debug(" Setting dns to my ip: %s",ip) + outline = "dhcp-option=6,%s\n" %ip + f.write(outline) + f.close() + + logging.debug(" change nfsroot to my ip:%s",ip) + cmd = '''sed -i "s/nfsroot=.*:/nfsroot=%s:/g" /data/srv/tftp/pxelinux.cfg/default''' %ip + mv_common.runcmd(cmd) + + logging.debug(" Adding 127.0.0.1 to resolv.conf") + logging.debug(" other nameserver is %s",nameserver) + try: + f = open("/etc/resolv.conf",'r') + dns = f.readlines() + f.close() + except: + dns='' + logging.debug(" Couldn't open resolv.conf for reading") + try: + f = open("/etc/resolv.conf",'w') + line="search lan\n" + f.write(line) + line="nameserver 127.0.0.1\n" + f.write(line) + line="nameserver %s\n" %nameserver + f.write(line) + for line in dns: + f.write(line) + f.close() + except: + logging.debug(" Couldn't open resolv.conf for writing") + + logging.debug(" setup dongle.config") + cmd = ''' sed -i "s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s %s \& /" /data/srv/tftp/dongle.bin.config ''' %ip + #COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${ip} \& /" + #ex ${BASE}/data/srv/tftp/dongle.bin.config </etc/exports''' %templatefile + mv_common.add_service("nfsd") + mv_common.add_service("nfs-utils") + mv_common.add_service("portmap") + else: + logging.info(" Removing NFS server") + mv_common.remove_service("nfsd") + return + +def setup_dyndns(DDnsEnable): + if DDnsEnable == "1": + logging.info(" Installing Dynamic DNS client") + mv_common.pacinstall("inadyn") + mv_common.add_service("inadyn") + else: + logging.info(" Removing Dynamic DNS client") + mv_common.pacremove("inadyn") + mv_common.remove_service("inadyn") + + +def setup_advanced(systemconfig,data_config): + logging.info("____Start of advanced configuration____") + create_link = False + if systemconfig["SystemType"] == "Master_backend": + create_link = True + setup_pacman(create_link) + setup_ncid_client(systemconfig["dbhost"], + systemconfig["TEMPLATES"]+"/ncid.conf.template") + + setup_ncid_daemon(systemconfig["nciddSerialPort"], + systemconfig["TEMPLATES"]+"/ncidd.conf.template", + systemconfig["Runncidd"]) + + setup_splash(systemconfig["Usebootsplash"]) + if data_config.SYSTEMTYPE == "MythVantage": + setup_hobbit(systemconfig["UseHobbit"], + systemconfig["SystemType"], + systemconfig["dbhost"]) + if data_config.SYSTEMTYPE == "LinHES": + setup_rrd(systemconfig["UseRRD"]) + + setup_evrouter(systemconfig["UseEvrouter"], + systemconfig["EvrouterConfig"], + systemconfig["TEMPLATES"]) + + setup_DNSmasq(systemconfig["RunDHCP"], + systemconfig["mythip"], + systemconfig["mythgw"], + systemconfig["mythdns"]) + + setup_mythweb(systemconfig["UseMythWEB"]) + setup_samba(systemconfig,data_config) + setup_NFSshares(systemconfig["UseNFS"], + systemconfig["TEMPLATES"]+"/exports.template") + + setup_dyndns(systemconfig["DDnsEnable"]) + logging.info("__End of advanced configuration\n") diff --git a/abs/core/LinHES-config/mv_common.py b/abs/core/LinHES-config/mv_common.py new file mode 100755 index 0000000..a492597 --- /dev/null +++ b/abs/core/LinHES-config/mv_common.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- +import logging, os, time +import commands +config_file = "mv_config" +data_config = __import__(config_file, globals(), locals(), []) + +def runcmd(cmd): + if data_config.NOOPDEBUG=="FALSE": + pass + else: + cmd = "echo "+cmd + logging.debug(" %s",cmd) + cmdout = commands.getstatusoutput(cmd) + logging.debug(" %s",cmdout) + return cmdout[0] + +def runcmd_output(cmd): + if data_config.NOOPDEBUG=="FALSE": + pass + else: + cmd = "echo "+cmd + logging.debug(" %s",cmd) + cmdout = commands.getstatusoutput(cmd) + logging.debug(" %s",cmdout) + return cmdout[1] + +def services(systemconfig): + logging.debug("______Start of services______") + logging.debug("__End services") + +def cp_and_log(srcfile,destfile): + #return + if not os.path.exists(srcfile): + logging.info("%s is not present, skipping...",srcfile) + else: + cmd = ("rsync -arhp %s %s") %(srcfile,destfile) + runcmd(cmd) + + +def add_service(daemon): + logging.info(" Adding service %s",daemon) + cmd = "add_service.sh %s" %daemon + runcmd(cmd) + +def remove_service(daemon): + logging.info(" Removing service %s",daemon) + stop_service(daemon) + cmd = "remove_service.sh %s" %daemon + runcmd(cmd) + +def start_service(daemon): + logging.info(" start service %s",daemon) + cmd = "sv start %s" %daemon + runcmd(cmd) + +def stop_service(daemon): + logging.info(" stop service %s",daemon) + cmd = "sv stop %s" %daemon + runcmd(cmd) + +def restart_service(daemon): + logging.info(" Restarting service %s",daemon) + if daemon == "lcdd": + stop_service(daemon) + logging.debug(" killing all lcdd") + cmd = "killall -9 LCDd" + runcmd(cmd) + time.sleep(2) + start_service(daemon) + else: + cmd = "sv restart %s" %daemon + runcmd(cmd) + +def hup_service(daemon): + logging.info(" hup service %s",daemon) + cmd = "sv hup %s" %daemon + runcmd(cmd) + + + +def pkg_blacklist_check(pkg): + cmd = '''grep -q %s /etc/blacklist.package''' %pkg + rc = runcmd(cmd) + if rc == 0: + return True + else: + return False + +def pkg_installed_check(pkg): + logging.debug(" Checking if %sis installed",pkg) + cmd = "pacman -Q %s " %pkg + rc = runcmd(cmd) + if rc == 0: + return True + else: + return False + + +def pacinstall(pkg): + logging.info(" Checking %s for install",pkg) + #extra pkg check + if pkg == "xine": + pacinstall("xine-ui") + elif pkg == "dvdcss": + pacinstall("libdvdcss") + elif pkg == "webmin": + add_service("webmin") + elif pkg == "fuppes": + pacinstall("fuppes-svn") + + if not pkg_blacklist_check(pkg): + if pkg_installed_check(pkg): + logging.info(" %s is already installed, will not install",pkg) + else: + logging.info(" Installing %s",pkg) + cmd ='''pacman --noconfirm -Sf %s ''' %pkg + runcmd(cmd) + else: + logging.info(" %s is blacklisted, will not install",pkg) + +def pacremove(pkg): + logging.info(" Checking %s for removal",pkg) + if pkg == "xine": + pacremove("xine-ui") + elif pkg == "dvdcss": + pacremove("libdvdcss") + elif pkg == "webmin": + remove_service("webmin") + + if not pkg_blacklist_check(pkg): + if not pkg_installed_check(pkg): + logging.info(" %s is not installed, will not remove",pkg) + else: + logging.info(" Removing %s",pkg) + cmd ='''pacman --noconfirm -R %s ''' %pkg + runcmd(cmd) + else: + logging.info(" %s is blacklisted, will not remove",pkg) + +def getpid(process): + return commands.getoutput('pidof %s' % process) + +def remove_file(filename): + logging.debug(" Removing %s", filename) + try: + os.remove(filename) + except: + logging.debug("* Could not remove %s", filename) + + +def restartLCD(RESTART_LCD): + if RESTART_LCD : + logging.info(" Restarting lcd server") + cmd = "killall -9 mythlcdserver" + runcmd(cmd) + else: + logging.debug(" Not restarting MYTHLCD server") + + +def reloadfe(dbhost,RESTART_LCD): + logging.debug("____Start of reloadfe____") + if data_config.SYSTEMTYPE == "MythVantage": + logging.info(" Clearing Backend cache") + cmd = '''/usr/bin/backend_control.sh clearcache behost %s''' %dbhost + runcmd(cmd) + + restartLCD(RESTART_LCD) + for pid in getpid("mythfrontend"): + cmd = ''' kill -s USR1 %s ''' %pid + #runcmd(cmd) + logging.info(" Reloading frontend with pid of %s",pid) + + logging.debug("__End of reloadfe\n") + + +def restartfe(RESTART_LCD): + logging.debug("____Start of restartfe____") + if data_config.SYSTEMTYPE=="LinHES": + logging.debug(" LinHES seems to be running will not restartfe") + return + logging.info(" Restarting frontend") + restartLCD(RESTART_LCD) + cmd="killall -9 mythfrontend" + runcmd(cmd) + cmd="killall -9 welcome" + runcmd(cmd) + logging.debug("__End of restartfe\n") + + +def udev_trigger(): + logging.info(" Triggering udev") + cmd = "udevadm settle" + runcmd(cmd) + cmd = "udevadm trigger" + runcmd(cmd) + cmd = "udevadm settle" + runcmd(cmd) + cmd = "udevadm trigger" + runcmd(cmd) + + diff --git a/abs/core/LinHES-config/mv_config.py b/abs/core/LinHES-config/mv_config.py new file mode 100755 index 0000000..1ac4fea --- /dev/null +++ b/abs/core/LinHES-config/mv_config.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +SYSTEMTYPE="LinHES" +MVHOSTNAME="larch5" +MOUNTPOINT="/new_boot" +DATAMOUNT="/myth" +MYTHHOME="/home/mythtv" +SQUASHFILE="/tmp/.squashlist" +SQUASHLIST=("bin","boot","etc","home","lib","opt","root","sbin","usr","var","data") +NOOPDEBUG="FALSE" +BACKUPFILE="mythconverg.sql.gz" +BACKUPPATH="/myth/backup/" +TEMP_TEMPLATES="/tmp/templates" +SMEDIA="myth" + + + + diff --git a/abs/core/LinHES-config/mv_hostype.py b/abs/core/LinHES-config/mv_hostype.py new file mode 100755 index 0000000..d6ec0ed --- /dev/null +++ b/abs/core/LinHES-config/mv_hostype.py @@ -0,0 +1,230 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os + +config_file = "mv_config" +data_config = __import__(config_file, globals(), locals(), []) + +def setup_ntp(usepool,ntpserver): + if usepool: + logging.info("Setting ntp server to %s",ntpserver) + print '''sed -i "s/pool.ntp.org/$dbhost/g" ${BASE}/etc/ntp.conf''' + else: + logging.info("Not changing ntp configuration") + +def setup_avahi(templates): + file="/etc/avahi/services/mysql.service" + if not os.path.exists(file): + logging.debug(" copying in mysql.service for avahi") + try: + os.makedirs("/etc/avahi/services") + except: + logging.debug(" Couldn't create /etc/avahi/services") + mv_common.cp_and_log(templates+"/mysql.service",file) + cmd="sudo sv restart avahi" + mv_common.runcmd(cmd) + +def remove_avahi_service(): + file="/etc/avahi/services/mysql.service" + if os.path.exists(file): + logging.debug(" Removing avahi mysql.service file") + cmd="rm -rf %s" %file + mv_common.runcmd(cmd) + cmd="sudo sv restart avahi" + mv_common.runcmd(cmd) + +def setup_db(): + logging.debug(" Setting up the database") + +def setup_mysqlnetwork(EnableNetwork): + logging.debug(" Setting up mysql network") + mysqlconf = "/etc/my.cnf" + cmd = '''grep "#skip-networking" %s ''' %mysqlconf + status = mv_common.runcmd(cmd) + + if EnableNetwork : + logging.debug(" Enabling mysql networking") + if status == 0 : + logging.debug(" Network is already enabled for mysql") + else: + cmd = '''sed -ie "s/^skip-networking/#skip-networking/g" %s ''' %mysqlconf + mv_common.runcmd(cmd) + mv_common.restart_service("mysqld") + else: + logging.debug(" Disabling mysql networking") + if status == 1 : + logging.debug(" Network is already disabled for mysql") + else: + cmd = '''sed -ie "s/#skip-networking/skip-networking/g" %s ''' %mysqlconf + mv_common.runcmd(cmd) + mv_common.restart_service("mysqld") + +def setup_mysql_connection(systemconfig): + logging.info(" Configuring database connection") + mythip = systemconfig["mythip"] + systemtype = systemconfig["SystemType"] + mv_root = systemconfig["MVROOT"] + mysqltxt = "/usr/share/mythtv/mysql.txt" + templates = systemconfig["TEMPLATES"] + mysqltemplate = templates + "/mysql.txt" + dbhost = systemconfig["dbhost"] + + if systemtype == "Master_backend": + logging.debug(" Setting dbhost to %s in systemconfig", mythip) + dbhost = mythip + cmd = '''sed -ei "s/^dbhost=.*$/dbhost=\"%s\"/" /etc/systemconfig ''' %dbhost + mv_common.runcmd(cmd) + logging.debug(" Changing dbhost in settings table for master_backend") + cmd = '''%s/bin/restore_default_settings.sh -c BECONFIG -s master -a %s ''' %(mv_root, dbhost) + mv_common.runcmd(cmd) + + if systemtype == "Slave_backend": + slavehost = mythip + logging.debug(" Changing slave in settings: %s", slavehost) + cmd = '''%s/bin/restore_default_settings.sh -c BECONFIG -s slave -a %s ''' %(mv_root, slavehost) + mv_common.runcmd(cmd) + + if systemtype == "Master_backend": + logging.debug(" changing mysql.txt file to use localhost") + cmd = '''sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" %s > %s ''' %(mysqltemplate, mysqltxt) + mv_common.runcmd(cmd) + else: + logging.debug(" changing mysql.txt file to use %s", dbhost) + cmd = '''sed -e "s/^DBHostName=.*$/DBHostName=%s/" %s > %s ''' %(dbhost, mysqltemplate, mysqltxt) + mv_common.runcmd(cmd) + + delfile = data_config.MYTHHOME + "/.mythtv/mysql.txt" + mv_common.remove_file(delfile) + delfile = mv_root + "/bin/mythtv/.mythtv/mysql.txt" + mv_common.remove_file(delfile) + filecheck = data_config.MYTHHOME + "/templates/mysql.txt" + if os.path.exists(filecheck): + logging.info(" Scrapping all the previous work and using %s for mysql.txt", filecheck) + mv_common.cp_and_log(filecheck, mysqltxt) + + + +def setup_func_key(): + if data_config.SYSTEMTYPE == "MythVantage": + logging.debug(" Grabbing the key for Func") + cmd="/usr/MythVantage/bin/grabkey.py" + mv_common.runcmd(cmd) + +def setup_func_minion(dbhost): + logging.info(" Setting up the func minion:") + logging.debug(" certmaster is %s:",dbhost) + #cmd='''sed -i "s/^certmaster.*$/certmaster = %s/" /etc/func/minion.conf ''' %dbhost + #mv_common.runcmd(cmd) + cmd='''sed -i "s/^certmaster.*$/certmaster = %s/" /etc/certmaster/minion.conf ''' %dbhost + mv_common.runcmd(cmd) + +def setup_syslog(dbhost): + logging.debug(" Setting syslog to log to %s",dbhost) + cmd ='''sed -i "s/^destination d_remote.*$/destination d_remote \{tcp\(\"%s\" port\(514\)\) \;\} \;/" /etc/syslog-ng.conf''' %dbhost + return + +def hostypeprint(systemconfig): + logging.info("______Start of hostype config_____") + mv_common.services(systemconfig) + install_list='' + remove_list='' + daemon_list='' + daemon_remove_list='' + run_mysqlnetwork = False + + if systemconfig["SystemType"] == "Standalone": + logging.info("Stand alone system being configured") + setup_ntp(False,"null") + remove_avahi_service() + EnableNetwork = False + run_mysqlnetwork = True + if systemconfig["hostypec"]: + setup_db() + install_list=["mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status"] + daemon_list=["mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd"] + if data_config.SYSTEMTYPE == "MythVantage": + install_list.append('ghosd') + + elif systemconfig["SystemType"] == "Master_backend": + logging.info("Master backend system being configured") + setup_ntp(False,"null") + setup_avahi(systemconfig["TEMPLATES"]) + install_list=["mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status"] + daemon_list=["mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd"] + EnableNetwork = True + run_mysqlnetwork = True + if data_config.SYSTEMTYPE == "MythVantage": + install_list.append('func') + daemon_list.append('func') + install_list.append('certmaster') + daemon_list.append('certmaster') + install_list.append('ghosd') + + elif systemconfig["SystemType"] == "Slave_backend": + logging.info("Slave backend system being configured") + setup_ntp(True,systemconfig["dbhost"]) + remove_avahi_service() + if systemconfig["hostypec"]: + setup_db() + install_list = ["portmap", "nfs-utils", "local-website", "avahi", "libmysqlclient" ] + daemon_list = ["mythbackend", "portmap", "nfs-utils", "netfs", "lighttpd", "avahi" ] + daemon_remove_list=('mysql') + if data_config.SYSTEMTYPE == "MythVantage": + install_list.remove("local-website") + daemon_list.remove("lighttpd") + install_list.append('func') + daemon_list.append('funcd') + remove_list.append("lighttpd") + install_list.append('ghosd') + + + elif systemconfig["SystemType"] == "Frontend_only": + logging.info("Frontend only system being configured") + setup_ntp(True,systemconfig["dbhost"]) + remove_avahi_service() + install_list=["mysql-clients", "libmysqlclient", "avahi", "portmap", "nfs-utils", "local-website"] + remove_list=["mysql"] + daemon_list=["mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd"] + daemon_remove_list=("mysql", "mythbackend") + if data_config.SYSTEMTYPE == "MythVantage": + install_list.remove("local-website") + daemon_list.remove("lighttpd") + install_list.append('func') + daemon_list.append('funcd') + remove_list.append("lighttpd") + install_list.append('ghosd') + + + for pkg in install_list: + mv_common.pacinstall(pkg) + for pkg in remove_list: + mv_common.pacinstall(pkg) + for daemon in daemon_list: + mv_common.add_service(daemon) + for daemon in daemon_remove_list: + mv_common.remove_service(daemon) + if systemconfig["RunFrontend"] == "1": + logging.debug(" Will run the frontend") + mv_common.add_service("frontend") + mv_common.add_service("hal") + if data_config.SYSTEMTYPE == "MythVantage": + mv_common.add_service("ghosd") + else: + logging.debug(" Will NOT run the frontend") + mv_common.remove_service("frontend") + mv_common.remove_service("hal") + if data_config.SYSTEMTYPE == "MythVantage": + mv_common.remove_service("ghosd") + + + if run_mysqlnetwork: + setup_mysqlnetwork(EnableNetwork) + else: + logging.debug(" Not running setup_mysql_connection") + + setup_mysql_connection(systemconfig) + if data_config.SYSTEMTYPE == "MythVantage": + setup_func_minion(systemconfig["dbhost"]) + setup_func_key() + setup_syslog(systemconfig["dbhost"]) + logging.info("__End of hostype config\n") diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py new file mode 100755 index 0000000..19295ca --- /dev/null +++ b/abs/core/LinHES-config/mv_install.py @@ -0,0 +1,1432 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import sys, os, commands, glob, time +import getopt, re, MySQLdb +import logging +try: + import parted +except: + print "module parted not found" + +def usage(): + print "help text:" + print "example usage: --rootdisk=sda --rootfs=ext4 --rootsize=34240 --datafs=ext4 --datasize=3400 --datadisk=sda --swapsize=340 -c full_install" + +def clean_upgrade(): + return False + +def error_out(errmsg): + cmd = '''echo %s >> /tmp/.install_error ''' %errmsg + runcmd(cmd) + logging.critical("***********************************") + logging.critical("error: %s",errmsg) + print "***********************************" + print "ERROR: mv_install.py: %s" %errmsg + print "***********************************" + sys.exit(1) + + +def update_db(value, data): + db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + try: + cursor = db.cursor() + cursor.execute("DELETE FROM settings where value=%s and hostname=%s;", (value, data_config.MVHOSTNAME)) + cursor.execute("REPLACE INTO settings set value=%s, data=%s, hostname=%s;", (value, data, data_config.MVHOSTNAME)) + logging.debug("Updated database with %s, %s", data, value) + except MySQLdb.Error, e: + logging.debug("Unable to update database with %s, %s", data, value) + + +def progress(pgnum): + progressline = str(pgnum) + "% complete" + logging.debug("Progress: %s", pgnum) + f = open('/tmp/.install_percent', 'w') + f.write(progressline) + f.close() + +def update_status(status): + logging.debug("Status: %s", status) + f = open('/tmp/.install_state', 'w') + f.write(str(status)) + f.close() + +def kill_dhcp_chroot(): + logging.debug("Killing off chroot dhcpcd") + stddir = os.getcwd() + piddir = ("%s/var/run/") %data_config.MOUNTPOINT + try: + os.chdir(piddir) + for FILE in glob.glob("dhcpcd-*.pid"): + f = open(FILE, 'r') + pid = f.readline() + f.close() + cmd = "kill -9 %s" %pid + runcmd(cmd) + os.remove(FILE) + os.chdir(stddir) + except: + pass + +def statgrab(disk): + cmd = "statgrab -M disk. |grep %s.write_bytes" % hostoptions["rootdisk"] + out = commands.getoutput(cmd) + try: + prewritebytes = out.split("=")[1].strip() + except: + prewritebytes = "1024" + outline = "STARTSIZE=%s" %prewritebytes + f = open('/tmp/.startsize.io', 'w') + f.write(str(outline)) + f.close() + +def backup_sql_check(): + logging.debug("Searching for backup file") + try: + hostoptions["backupfile"] + except: + logging.debug("Backup file var is empty") + return False + if os.path.exists(data_config.MOUNTPOINT+hostoptions["backupfile"]): + logging.debug("Backup file %s is present", data_config.MOUNTPOINT+hostoptions["backupfile"]) + return True + else: + logging.debug("Backup file %s is NOT present", data_config.MOUNTPOINT+hostoptions["backupfile"]) + return False + +def mdadm_find(PREFIX): + logging.debug("Searching for mdadm.conf") + if os.path.exists(PREFIX+"/etc/KnoppMyth-version"): + mdadmconf = "/etc/mdadm/mdadm.conf" + else: + mdadmconf = "/etc/mdadm.conf" + logging.debug("Using %s for mdadm.conf", mdadmconf) + return mdadmconf + +def mdadm_assemble_all(): + # read mdadm.conf and start the arrays + #ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 + logging.debug("Starting mdadm support") + mdadmconf_file = mdadm_find("/tmp") + cmd = "cdadm --assemble --scan -c /tmp/%s" %mdadmconf_file + runcmd(cmd) + mdadm_contents = '' + try: + f = open(mdadmconf_file, 'r') + mdadm_contents = f.readlines() + f.close() + except: + logging.debug(" Couldn't open mdadmconf file") + for line in mdadm_contents: + if line.startswith("ARRAY"): + logging.debug(" Found MD array: %s", line) + array = line.split()[1] + logging.info(" assembling array: %s", array) + cmd = "mdadm --assemble -c /tmp%s %s" %(mdadmconf_file, array) + runcmd(cmd) + time.sleep(2) + cmd = "fsck -p %s" %array + runcmd + +def copy_updates(): + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin", "*.sh") + cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin", "*.py") + +def timezone_to_db(timefile): + logging.info("importing timezone") + try: + f = open(timefile) + timezonecontents = f.readline().strip() + f.close() + except: + logging.debug("Couldn't open /tmp/etc/timezone, will not set the timezone") + return + update_db("HostTimeZone", timezonecontents); + tzsplit = timezonecontents.partition('/') + print tzsplit + if tzsplit[2] == '' : + update_db("HostTimeZoneRegion", tzsplit[0]) + else: + update_db("HostTimeZoneRegion", tzsplit[0]) + tztemp="HostTimeZoneRegion_%s" % tzsplit[0] + update_db(tztemp, tzsplit[2]) + + + +def cp_and_log(srcfile, destfile): + #return + if not os.path.exists(srcfile): + logging.info("%s is not present, skipping...", srcfile) + else: + cmd = ("rsync -arvp %s %s") %(srcfile, destfile) + runcmd(cmd) + +def cp_and_log2(srcfile, destfile, fileglob): + #return + logging.debug("cp_and_log2") + logging.debug("%s, %s, %s", srcfile, destfile, fileglob) + + if not os.path.exists(srcfile): + logging.info("%s is not present, skipping...", srcfile) + else: + if fileglob == '': + cmd = ("rsync -arvp %s %s") %(srcfile, destfile) + runcmd(cmd) + else: + fileglob = "*" + cmd = ("rsync -arvp %s/%s %s") %(srcfile, fileglob, destfile) + runcmd(cmd) + +def runcmd(cmd): + if data_config.NOOPDEBUG == "FALSE": + pass + else: + cmd = "echo "+cmd + logging.debug(" %s", cmd) + cmdout = commands.getstatusoutput(cmd) + logging.debug(" %s", cmdout) + return cmdout + +def mysqldb(cmd, inchroot): + if cmd == "start": + mycmd = " /etc/rc.d/mysqld start" + elif cmd == "stop": + mycmd = " /etc/rc.d/mysqld stop" + if inchroot == "chroot": + mycmd = " chroot /newboot %s" %mycmd + runcmd(mycmd) + + +def mount_bind_chroot(): + logging.debug("Mounting dev/proc/sysfs for chroot") + cmd = " mount --bind /dev %s" %data_config.MOUNTPOINT+"/dev" + runcmd(cmd) + cmd = " mount --bind /dev/pts %s" %data_config.MOUNTPOINT+"/dev/pts" + runcmd(cmd) + cmd = " mount --bind /proc %s" %data_config.MOUNTPOINT+"/proc" + runcmd(cmd) + cmd = " mount -t sysfs none %s" %data_config.MOUNTPOINT+"/sys" + runcmd(cmd) + + +def umount_bind_chroot(): + logging.debug("UnMounting dev/proc/sysfs for chroot") + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/dev/pts" + runcmd(cmd) + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/dev" + runcmd(cmd) + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/proc" + runcmd(cmd) + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/sys" + runcmd(cmd) + + +def blank_table(diskdevice): + logging.debug(" writing new parition table for %s", diskdevice) + logging.debug("parition table before:") + cmd = "fdisk -l %s" %diskdevice + runcmd(cmd) + + cmd = "echo w |fdisk %s" %diskdevice + runcmd(cmd) + + logging.debug("parition table after:") + cmd = "fdisk -l %s" %diskdevice + runcmd(cmd) + +def partitions_removeall(diskdevice, label): + logging.info("Removing all partitions for %s %s", label, diskdevice) + try: + device = parted.getDevice(diskdevice) + partdisk = parted.Disk(device) + partdisk.deleteAllPartitions() + if data_config.NOOPDEBUG == "FALSE": + partdisk.commit() + for partition in partdisk.partitions: + print "type: %s" %partition.type + except: + logging.debug(" Error reading parition table, attempting to write a blank one") + blank_table(diskdevice) + + +def create_partitions(diskdevice, size, ptype, startsector): + logging.debug("_____Create partitions______") + if size == "NO": + logging.info("Size is 0, skipping") + return "NO" + partlist = [] + newstart = 0 + totalused = 0 + device = parted.getDevice(diskdevice) + partdisk = parted.Disk(device) + for partition in partdisk.partitions: + if partition.type != parted.PARTITION_FREESPACE: + partlist.append((partition, + partition.path, + partition.getFlag(parted.PARTITION_BOOT), + partition.geometry.start, + partition.geometry.end, + partition.geometry.length, + partition.type, + partition.fileSystem)) + for slice in partlist: + (usedpartition, usedpath, usedbootable, usedstart, usedend, usedlength, usedtype, usedfs) = slice + #Start the new partition one after the end of last + newstart = usedend+1 + + if startsector == 0: + newstart = 0 + if size == "ALL": + logging.debug(" Using the rest of the disk %s", (device.length-newstart) ) + try: + geom = parted.Geometry(device=device, start=newstart, length=(device.length-newstart)) + except: + logging.info("An error occured, probably invalid parition size") + return + else: + # convert size in MB to a length on the device in sectors + length = (int(size) * (1024 * 1024)) / device.sectorSize + logging.debug("Size is %s", length) + try: + geom = parted.Geometry(device=device, start=newstart, length=length) + except: + logging.info("An error occured, probably invalid parition size") + error_out("invalid parition size") + + #collect device constraint + constraint = device.getConstraint() + # new partition + if ptype == "NORMAL": + newpart = parted.Partition(disk=partdisk, type=parted.PARTITION_NORMAL, geometry=geom) + elif ptype == "SWAP": + newpart = parted.Partition(disk=partdisk, type=parted.PARTITION_NORMAL, geometry=geom) + + #add the partition to the disk and commit changes + partdisk.addPartition(partition=newpart, constraint=constraint) + if data_config.NOOPDEBUG == "FALSE": + partdisk.commit() + logging.info("created partition %s of %dMB and added it to %s" % + (newpart.getDeviceNodeName(), newpart.getSize(), diskdevice)) + return newpart.getDeviceNodeName() + +def set_active_parition(diskdevice): + """ Set the bootable flag for this partition. """ + logging.debug(" Setting active parition") + device = parted.getDevice(diskdevice) + partdisk = parted.Disk(device) + try: + for partition in partdisk.partitions: + partition.setFlag(parted.PARTITION_BOOT) + partdisk.commit() + except: + logging.info(" Couldn't set the active partition") + logging.info(" Depending on your system this may not matter") + + +def partition_disk(): + global hostoptions + logging.info("Partitioning") + logging.debug("____start of partition_disk____") + rootdisk = hostoptions["rootdisk"] + datadisk = hostoptions["datadisk"] + label = "root" + partitions_removeall("/dev/"+rootdisk, label) + label = "data" + partitions_removeall("/dev/"+datadisk, label) + hostoptions["rootpartition"] = create_partitions("/dev/"+rootdisk, hostoptions["rootsize"], "NORMAL", 0) + set_active_parition("/dev/"+rootdisk) + hostoptions["swappartition"] = create_partitions("/dev/"+rootdisk, hostoptions["swapsize"], "SWAP", 1) + if datadisk != rootdisk: + hostoptions["datapartition"] = create_partitions("/dev/"+datadisk, hostoptions["datasize"], "NORMAL", 0) + else: + hostoptions["datapartition"] = create_partitions("/dev/"+datadisk, hostoptions["datasize"], "NORMAL", 1) + time.sleep(5) + +def fscmd(fstype): + fscmds = {"reiserfs":"mkreiserfs -q -l ROOT", "xfs": "mkfs -t xfs -f", "ext3": "mkfs.ext3", "jfs":"mkfs.jfs -q", "ext4":"mkfs.ext4", "Do_not_format":"noformat", "no_format":"noformat"} + try: + rc = fscmds[fstype] + except: + logging.critical(" %s is not a valid fs type, exiting now", fstype) + error_out("Error mvinstall during format") + return rc + + +def format_disk(install_type): + logging.info("______Starting Disk Format______") + rootfs = fscmd(hostoptions["rootfs"]) + datafs = fscmd(hostoptions["datafs"]) + + rootdisk = hostoptions["rootdisk"] + datadisk = hostoptions["datadisk"] + rootpartition = hostoptions["rootpartition"] + datapartition = hostoptions["datapartition"] + if install_type != "upgrade": + swapsize = hostoptions["swapsize"] + swappartition = hostoptions["swappartition"] + + logging.debug(" Format command for rootfs %s : %s ", rootfs, rootpartition) + if ( rootfs != "noformat"): + logging.info("Starting format of %s", rootpartition) + cmd = " %s /dev/%s" %( rootfs, rootpartition) + #os.system(cmd) + runcmd(cmd) + else: + logging.info("Will not format root partition: %s", rootpartition) + + logging.debug(" Format command for datafs %s : %s ", datafs, datapartition) + if (datafs != "noformat"): + logging.info("Starting format of %s", datapartition) + cmd = " %s /dev/%s" %( datafs, datapartition) + #os.system(cmd) + runcmd(cmd) + else: + logging.info("Will not format data partition: %s", datapartition) + + if install_type == "install": + if (hostoptions["swapsize"] != "NO"): + logging.info("Starting format for swap %s", swappartition) + cmd = " mkswap /dev/%s" % swappartition + #os.system(cmd) + runcmd(cmd) + else: + logging.debug(" Swap is set to NO, will not run mkswap") + + logging.debug("_____End of format______") + + +def mount_it(): + logging.info("______Mounting disk______") +# Create mount points + try: + mountpoint = data_config.MOUNTPOINT + mp = mountpoint + logging.info("Creating mountpoints %s", mp) + os.makedirs(mp) + except OSError: + logging.debug(" Could not create %s", mp) + +# Mount root + cmd = "mount /dev/%s %s" %(hostoptions["rootpartition"], mountpoint) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) + #logging.debug(cmdout) +# Mount data +#make mountpoint after mounting / + try: + mountpoint = data_config.MOUNTPOINT + datapoint = data_config.DATAMOUNT + mp = mountpoint+datapoint + logging.info("Creating mountpoints %s", mp) + os.makedirs(mp) + except OSError: + logging.debug(" Could not create %s", mp) + + cmd = "mount /dev/%s %s" %(hostoptions["datapartition"], mp) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) + #logging.debug(cmdout) + +def unmount_it(): + logging.info("______Unmounting disk______") + cmd = "umount %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT) + runcmd(cmd) + time.sleep(2) + + cmd = "swapoff /dev/%s" %(hostoptions["swappartition"]) + runcmd(cmd) + + cmd = "sync" + runcmd(cmd) + + cmd = "umount %s" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "sync" + runcmd(cmd) + + +def create_squashlist(): + logging.debug("Creating squashlist") + squashfile = data_config.SQUASHFILE + f = open(squashfile, 'w') + for i in data_config.SQUASHLIST: + f.write(i) + f.write("\n") + logging.debug(i) + f.close() + + +def copy_it(install_type): + logging.info("______Transferring to disk______") + logging.debug( install_type) + if ( install_type == "install"): + logging.info("Transferring system") + cmd = " unsquashfs -f -d %s /.livesys/medium/system.sqf" %(data_config.MOUNTPOINT) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) + + if ( install_type == "upgrade"): + logging.info("Upgrading system") + create_squashlist() + cmd = " unsquashfs -e %s -f -d %s /.livesys/medium/system.sqf" %(data_config.SQUASHFILE, data_config.MOUNTPOINT) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) +# Create the missing dir + i = ("sys", "proc", "dev", "tmp", "mnt", "media", "media/cdrom", "media/dvd", "var/log/mythtv") + mountpoint = data_config.MOUNTPOINT + for item in i: + try: + mp = mountpoint+"/"+item + logging.info("Creating mountpoints %s", mp) + os.makedirs(mp) + except OSError: + logging.debug(" __Could not create %s", mp) +# General fixup + cmd = "chmod 777 %s/tmp" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "mknod %s/dev/null c 1 5" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "mknod %s/dev/console c 5 1" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/usr/bin/Xorg" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/usr/bin/crontab" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/usr/bin/sudo" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/bin/mount" %(data_config.MOUNTPOINT) + runcmd(cmd) + logging.debug("__End of copy_it__") + +def create_fstab(extralines): + logging.debug("______Creating new fstab file_______") + logging.info("Creating new fstab file") + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" + fstab_list = [] + f = open(fstabfile, 'w') + line = '''# \n''' + fstab_list.append(line) + line = '''none /dev/pts devpts defaults 0 0 \n''' + fstab_list.append(line) + line = '''none /dev/shm tmpfs defaults 0 0\n''' + fstab_list.append(line) + line = '''/dev/sr0 /media/cdrom auto ro,user,noauto,unhide 0 0\n''' + fstab_list.append(line) + line = '''UUID=ROOTUID / auto defaults,noatime 0 1\n''' + fstab_list.append(line) + line = '''UUID=DATAUID %s auto defaults,noatime 0 1\n''' %(data_config.DATAMOUNT) + fstab_list.append(line) + line = '''UUID=SWAPUID swap swap defaults 0 0 \n''' + fstab_list.append(line) + for vline in extralines: + fstab_list.append(vline) + for outline in fstab_list: + logging.debug(outline) + f.write(outline) + f.close() + +def find_uuid(partition): + logging.info("Finding the UUID for %s...", partition) + cmd = "blkid -s UUID /dev/%s" %partition + tmpuuid = runcmd(cmd)[1] + splituuid = tmpuuid.partition("=") + uuid = splituuid[2].replace('"', "") + logging.info("The uuid is %s", uuid) + return uuid.strip() + +def pick_out_vg(): + logging.info("Searching for Volume Groups in old fstab") + vglines = [] + f = open("/tmp/etc/fstab", 'r') + oldfscontents = f.readlines() + for line in oldfscontents: + if line.startswith("/dev/vg"): + vglines.append(line) + templine = line.split() + mdir = templine[1] + if not os.path.exists (mdir): + logging.debug("Creating dir %s for VG mount", mdir) + os.makedirs (mdir) +# Might need to os.chown to mythtv:users + else: + logging.debug("Directory %s for VG mount already present", mdir) + return vglines + +def fstab_it(install_type): + logging.info("______Checking fstab______") + kmvg = [] + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" +# Check for knoppmyth install, if found create new + if install_type == "upgrade": + if os.path.exists("/tmp/etc/KnoppMyth-version"): + logging.debug(" KnoppMyth-Version found, creating new fstab") + kmvg = pick_out_vg() + create_fstab(kmvg) + elif os.path.exists("/tmp/etc/fstab"): + logging.debug(" Upgrade and not Knoppmyth, using old fstab") + cp_and_log("/tmp/etc/fstab", fstabfile) +# Catch all for creating new fstab + if not os.path.exists(data_config.MOUNTPOINT+"/etc"): + os.makedirs(data_config.MOUNTPOINT+"/etc") + if not os.path.exists(fstabfile): + create_fstab(kmvg) + + logging.info("____UUID check for %s", "swap") + swapuuid = find_uuid(hostoptions["swappartition"]) + + logging.info("____UUID check for %s", "data") + datauuid = find_uuid(hostoptions["datapartition"]) + + logging.info("____UUID check for %s", "root") + rootuuid = find_uuid(hostoptions["rootpartition"]) + + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" + logging.info("Correcting UUID's in %s", fstabfile) + f = open(fstabfile, 'r') + oldfscontents = f.readlines() + newfstab = [] + f.close() + for line in oldfscontents: + if line.startswith("UUID"): + templine = line.split() + if ( templine[1] == "/"): + logging.debug(" Found Root fstab line:") + logging.debug( templine) + templine[0] = "UUID=%s" %(rootuuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New fstab line:") + logging.debug( newline) + newfstab.append(newline) + + if ( templine[1] == data_config.DATAMOUNT): + logging.debug(" Found DATA mount") + logging.debug( templine) + templine[0] = "UUID=%s" %(datauuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New fstab line:") + logging.debug( newline) + newfstab.append(newline) + + if ( templine[1] == "swap"): + if len(swapuuid) <= 5: + logging.debug(" swapp uuid is to small") + else: + logging.debug(" Found swap partition") + logging.debug( templine) + templine[0] = "UUID=%s" %(swapuuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New fstab line:") + logging.debug( newline) + newfstab.append(newline) + else: + logging.debug(" Line didn't match, adding to newfstab:") + logging.debug( line) + newfstab.append(line) + logging.info("Writing out newfstab") + logging.debug("______This is the new fstab_____") + f = open(fstabfile, 'w') + for line in newfstab: + logging.debug(line) + f.write(line) + #f.write("\n") + f.close() + +def grub_it(): + logging.info("______Start of grub install______") + cmd = " grub-install --recheck --no-floppy --root-directory=%s \"(hd0)\" " % data_config.MOUNTPOINT + logging.info("Running grub-install") + runcmd(cmd) + rootuuid = find_uuid(hostoptions["rootpartition"]) + cmd = " mkinitcpio -g %s/boot/kernel26.img" % data_config.MOUNTPOINT + logging.info("Running mkinitcpio") + runcmd(cmd) + logging.info("Adding root uuid to grub menu") + grubfile = data_config.MOUNTPOINT+"/boot/grub/menu.lst" + try: + f = open(grubfile, 'r') + oldgrub = f.readlines() + newgrub = [] + f.close() + for line in oldgrub: + if line.startswith("kernel"): + templine = line.split() + logging.debug(" Found kernel Root grubline:") + logging.debug( templine) + templine[2] = "root=/dev/disk/by-uuid/%s" %(rootuuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New grub menu.lst line:") + logging.debug( newline) + newgrub.append(newline) + else: + logging.debug("Line didn't match, adding to newgrub:") + logging.debug( line) + newgrub.append( line) + logging.info("Writing out new grub file") + logging.debug("______This is the new grub_____") + f = open(grubfile, 'w') + for line in newgrub: + logging.debug(line) + f.write(line) + f.close() + except: + logging.debug("Couldn't open grub file") + +def fix_permissions(): + logging.info("Fixing permissions") + SE = os.environ["TEMPLATES"]+"/settings/syssettings" + cmd = " chmod -R 755 %s" %(data_config.MOUNTPOINT+SE) + runcmd(cmd) + cmd = " chmod 775 %s" %(data_config.MOUNTPOINT+"/etc/systemconfig") + runcmd(cmd) + cmd = " chmod 755 %s" %(data_config.MOUNTPOINT+"/root") + runcmd(cmd) + cmd = " chown root:mythtv %s" %(data_config.MOUNTPOINT+"/etc/systemconfig") + runcmd(cmd) + cmd = " chown -R mythtv:mythtv %s" %(data_config.MOUNTPOINT+SE) + runcmd(cmd) + cmd = " chown -R mythtv:mythtv %s" %(data_config.MOUNTPOINT+"/var/log/mythtv") + runcmd(cmd) + +def apply_new_auth(): + logging.info("_____Applying Password updates_______") + passfile = "/root/myth_user_call.out" + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + if data_config.NOOPDEBUG == "FALSE": + cmdprefix = "chroot " + data_config.MOUNTPOINT + " " + MVROOT+"/bin/myth_user_call -i " + else: + cmdprefix = "echo chroot " + data_config.MOUNTPOINT + " " + MVROOT+"/bin/myth_user_call -i " + try: + f = open(passfile, 'r') + passcmds = f.readlines() + f.close() + for cmd in passcmds: + execmd = cmdprefix+cmd +# Using os.system because runcmd fails + logging.debug(execmd) + os.system(execmd) + except: + logging.debug("Applying password updates failed, couldn't open %s", passfile) + logging.debug + +def add_to_blacklist(module): + rcfile = data_config.MOUNTPOINT + "/etc/rc.conf" + logging.debug(" Attempting to add %s to blacklist", module) + newline='' + try: + f = open(rcfile, 'r') + conflines = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + try: + f = open(rcfile, 'w') + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + for line in conflines: + newline = line + if re.match("MOD_BLACKLIST",line): + logging.debug(line) + try: + lastpar = line.rindex(')') + logging.debug(" found ) at %s", lastpar) + newline = line[:lastpar] +" !" + module + " " + line[lastpar:] + logging.debug(newline) + except: + logging.debug("Couldn't find ending )") + newline = line + f.write(newline) + f.close() + + +def add_to_modulelist(module): + rcfile = data_config.MOUNTPOINT + "/etc/rc.conf" + logging.debug(" Attempting to add %s to modulelist", module) + newline='' + try: + f = open(rcfile, 'r') + conflines = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + try: + f = open(rcfile, 'w') + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + for line in conflines: + newline = line + if re.match("MODULES=",line): + logging.debug(line) + try: + lastpar = line.rindex(')') + logging.debug(" found ) at %s", lastpar) + newline = line[:lastpar] +" " + module + " " + line[lastpar:] + logging.debug(newline) + except: + logging.debug("Couldn't find ending )") + newline = line + f.write(newline) + f.close() + + + +def special_hardware_check(): + logging.info("_____Applying special boot parameters_______") + try: + f = open('/proc/cmdline', 'r') + bootoptions = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open /proc/cmdline") + return + bootoptions = bootoptions[0].split() + logging.debug(" Boot options: %s", bootoptions) + for item in bootoptions: + logging.debug(item) + if re.match("disablemodules",item) != None : + logging.debug(" Found disabledmodules") + modulelist = item.split("=")[1] + for module in modulelist.split(','): + add_to_blacklist(module) + + if re.match("modules",item) != None : + logging.debug(" Found modules") + modulelist = item.split("=")[1] + for module in modulelist.split(','): + add_to_modulelist(module) + + if re.match("type",item) != None : + logging.debug(" Found special hardware type") + try: + typefile = open(data_config.MOUNTPOINT + "/myth/.special_hardware_type", 'w') + typelist = item.split("=")[1] + # there should be only one special hardware type, but this will handle multiples, just in case + for type in typelist.split(','): + typefile.write(type) + typefile.write("\n") + typefile.close() + except: + logging.debug("Couldn't write to file: ", typefile) + if re.match("no_meth",item) != None : + cmd = " touch %s%s/.no_meth" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + runcmd(cmd) + +def swapsearch(): +#currently unused! + partlist = [] + stddir = os.getcwd() + os.chdir("/sys/block") + partitionlist = glob.glob("*") + for item in partitionlist: + try: + newitem = item.strip().rpartition(" ")[2] + if (not newitem == '') and (not newitem.startswith("loop")): + path = "/dev/"+newitem.strip() + path = path.strip() + device = parted.getDevice(path) + (cylinders, heads, sectors) = device.biosGeometry + sizeInBytes = device.length * device.sectorSize + disk = parted.Disk(device) + for partition in disk.partitions: + if partition.type == parted.PARTITION_PROTECTED or \ + partition.type == parted.PARTITION_METADATA or \ + partition.type == parted.PARTITION_FREESPACE: + continue + + partlist.append((partition, + partition.path, + partition.getFlag(parted.PARTITION_BOOT), + partition.geometry.start, + partition.geometry.end, + partition.geometry.length, + partition.type, + partition.fileSystem)) + for slice in partlist: + (partition, path, bootable, start, end, length, type, fs) = slice + if partition.getFlag(parted.PARTITION_SWAP) or fs.type == "linux-swap": + print "found swap" + print path + except: + pass + os.chdir(stddir) + +def sane_settings(file): + #Remove some settings from file_name + removeline = ("HOSTrootfstype", "HOSTrootfstype", "HOSTdatafstype", "HOSTOSsize", "HostUseALLdata", "HOSTDATAsize", "HOSTuprootfstype", "HostUseSWAP", "HOSTSWAPsize") + logging.debug("__Running sane settings") + try: + f = open(file, 'r') + filecontents = f.readlines() + f.close() + except: + logging.debug(" Couldn't find file %s to sane", file) + try: + f = open(file, 'w') + for line in filecontents: + for item in removeline: + if line.startsize(line.strip()): + logging.debug(" Found a line to remove in %s, %s", file, line) + else: + f.write(line) + except: + logging.debug(" Couldn't open file %s for writing", file) + logging.debug(" __End sane settings") + +def restore_default_settings(): + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug(" MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + logging.info("Saving syssettings") + cmd = "%s/bin/restore_default_settings.sh -c save -t syssettings -h %s -d localhost" %(MVROOT, data_config.MVHOSTNAME) + runcmd(cmd) + SE = os.environ["TEMPLATES"]+"/settings/syssettings/" + cp_and_log(SE, data_config.MOUNTPOINT+SE) + cp_and_log("/etc/mtab", data_config.MOUNTPOINT+"/etc/mtab") + copy_updates() + fix_permissions() + +def full_install(hostoptions): + logging.info("______Start of full install______") + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug(" MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + + try: + os.remove("/tmp/.this_is_upgrade") + except OSError: + logging.debug(" File /tmp/.this_is_upgrade not present, couldn't delete it") + pass +# Partition disk + statusmsg = "Partitioning %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(1) + if data_config.NOOPDEBUG == "FALSE": + partition_disk() + else: + logging.debug(" Debug mode, skipping partitioning step") + +# Format disk + statusmsg = "Preparing %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(2) + format_disk("install") + + +# Mount partitions + statusmsg = "Mounting %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(3) + mount_it() + +# Find number of bytes written to disk before starting copy. This is used +# to have a somewhat decent progress indication. + statgrab( hostoptions["rootdisk"]) + msg = "Creating %s" %(systemconfig["hostname"]) + update_status(msg) + +# Copy system to disk + copy_it("install") +# Remove old fstab so that a new one is created + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" + try: + os.remove(fstabfile) + except OSError: + logging.debug(" ERROR: deleting %s", fstabfile) + fstab_it("full_install") +# Configure system + msg = "Configuring system" + update_status(msg) + progress(98) + grub_it() + special_hardware_check() +# Configuring the system + logging.info("______Configuring system________") + cp_and_log("/etc/systemconfig", data_config.MOUNTPOINT+"/etc/systemconfig") + cp_and_log("/root/xorg.conf.install", data_config.MOUNTPOINT+"/etc/X11/xorg.conf.install") + restore_default_settings() + #try: + #MVROOT=os.environ["MV_ROOT"] + #except: + #logging.debug(" MVROOT was not defined, using the default value") + #MVROOT="/usr/MythVantage" + #logging.info("Saving syssettings") + #cmd="%s/bin/restore_default_settings.sh -c save -t syssettings -h %s -d localhost" %(MVROOT, data_config.MVHOSTNAME) + #runcmd(cmd) + #SE=os.environ["TEMPLATES"]+"/settings/syssettings" + #cp_and_log(SE, data_config.MOUNTPOINT+SE) + #cp_and_log("/etc/mtab", data_config.MOUNTPOINT+"/etc/mtab") + #cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin/", "*.sh") + #cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin/", "*.py") + #fix_permissions() + mount_bind_chroot() + apply_new_auth() + umount_bind_chroot() + if ( systemconfig["SystemType"] == "Master_backend" or systemconfig["SystemType"] == "Standalone" ): +# This install will need a DB, so install it + logging.info("______Installing Database in CHROOT________") + mysqldb("stop", '') + mount_bind_chroot() + cmd = " chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + logging.info("Running systemconfig in chroot") + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + + mysqldb("stop", "chroot") + kill_dhcp_chroot() + logging.info("____End Database in CHROOT____") + mysqldb("start", '') + umount_bind_chroot() + else: + logging.info("______No database required, continuing configuration________") + mount_bind_chroot() + cmd = " chroot %s DISPLAY=127.0.0.1:0 %s/bin/MythVantage -t restore, default 1" %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) +# Need to check for to touch /tmp/.dbsysfailed + cmd = " chroot %s %s/bin/restore_default_settings.sh -c restore -t syssettings " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + if ( 'x' == '1' ): + logging.debug("touching /tmp/.dbsysfailed") + else: + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + cmd = "chroot %s %s/bin/restore_default_settings.sh -c ACCESSCONTROL " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + umount_bind_chroot() + cmd = " touch %s%s/.configure" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + runcmd(cmd) + cmd = " chmod 777 %s%s/.configure" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + runcmd(cmd) + + msg = "Done" + update_status(msg) + cp_and_log("/tmp/mythvantage_install.log", data_config.MOUNTPOINT+"/var/log/mythvantage_install.log") + cp_and_log("/tmp/mv_debug.log", data_config.MOUNTPOINT+"/var/log/mv_debug.log") + unmount_it() + logging.debug("_____End of full install_____") + +def find_upgrade(): + logging.info("_____Start of find_upgrade_____") + global hostoptions + #try to mount first partition of disk + #copy old /etc/systemconfig to live, import settings into db + #umount drive. + #check for clean upgrade + if ( clean_upgrade() ): + logging.info("Clean upgrade requested, not using old data") + return + mount_it() + oldbackupfile = data_config.MOUNTPOINT+"/root/backup/"+data_config.BACKUPFILE + newbackupfile = "/tmp/"+data_config.BACKUPFILE + if os.path.exists(oldbackupfile): + logging.debug("Setting backup file to %s", newbackupfile) + hostoptions["backupfile"] = newbackupfile + cp_and_log(oldbackupfile, newbackupfile) + + srcfile = data_config.MOUNTPOINT+"/etc/systemconfig" + logging.info("Searching for systemconfig file %s", srcfile) + if os.path.exists(srcfile): + logging.info("Found systemconfig file %s", srcfile) + TEMPLATES = os.environ["TEMPLATES"]+"/settings/syssettings" + cp_and_log2(data_config.MOUNTPOINT+TEMPLATES, data_config.TEMP_TEMPLATES, '') + sane_settings("/tmp/templates/settings/syssettings/settings.txt") + cp_and_log2(data_config.TEMP_TEMPLATES, TEMPLATES, '') + cp_and_log(srcfile, "/etc/systemconfig") + cp_and_log(data_config.MOUNTPOINT+"/etc/", "/tmp/etc/") + cp_and_log(data_config.MOUNTPOINT+"/var/lib/alsa/", "/tmp/alsa") + cp_and_log(data_config.MOUNTPOINT+"/var/lib/oss/", "/tmp/oss") + cp_and_log("/tmp/etc/mdadm.conf", "/etc/mdadm.conf") + else: + logging.info("Could not find systemconfig file %s", srcfile) + cp_and_log(data_config.MOUNTPOINT+"/etc/", "/tmp/etc/") + cp_and_log(data_config.MOUNTPOINT+"/var/lib/alsa/", "/tmp/alsa") + cp_and_log("/tmp/etc/mdadm.conf", "/etc") + timezone_to_db("/tmp/etc/timezone") + unmount_it() + logging.debug("End of find_upgrade") + +def upgrade_mount_search(): + #Search for data/myth partition based on contents of fstab + logging.debug("______Start of upgrade_mount_search_____") + cmd = "umount %s%s" %(data_config.MOUNTPOINT, data_config.DATAMOUNT) + runcmd(cmd) + fstab_list = [] + fstab_data_mount = '' + try: + f = open("/tmp/etc/fstab", 'r') + oldfscontents = f.readlines() + f.close() + ## ['UUID=', '/myth', 'auto', 'defaults, noatime', '0', '1'] + #for line in oldfscontents: + #mountdir=line.split() + #if mountdir[1] == (data_config.DATAMOUNT): + #fstablist.append(mountdir) + except: + logging.debug(" Couldn't open /tmp/etc/fstab") + for line in oldfscontents: + if line.startswith("#"): + continue + mountdir=line.split() + try: + if mountdir[1] == (data_config.DATAMOUNT): + fstablist.append(mountdir) + except: + continue + #search fstab for data/myth mountpoint + for i in fstab_list: + if i[1] == data_config.DATAMOUNT: + fstab_data_mount = i[0] + break + + #start software raid support if needed + for i in fstab_list: + if i[0].startswith("/dev/md"): + logging.debug(" starting software raid support") + mdadm_assemble_all + + + if re.search("UUID", fstab_data_mount): + fstab_data_uuid = fstab_data_mount.split("=")[1] + cmd = "blkid -t UUID=%s" %fstab_data_uuid + retcode = call(cmd, shell=True) + if retcode != 0: + logging.debug(" Couldn't find uuid %s, starting md support", fstab_data_uuid) + mdadm_assemble_all + #hoping everything is up and running and data/myth will be available for mount + cmd = "mount -U %s %s" %(fstab_data_uuid, data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "blkid -t UUID=%s|cut -d: -f1" %fstab_data_uuid + logging.debug(cmd) + datadisk = commands.getoutput(cmd) + cmd = "basename %s" %datadisk + datadisk = commands.getoutput(cmd) + else: + cmd = "mount %s %s" %(fstab_data_mount, data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "basename %s" %fstab_data_mount + datadisk = commands.getoutput(cmd) + time.sleep(3) +# hostoptions["backupfile"]=data_config.BACKUPPATH+data_config.BACKUPFILE + if not backup_sql_check(): + newbackupfile = "/tmp/"+data_config.BACKUPFILE + if os.path.exists(newbackupfile): + logging.debug("Setting backup file to %s", newbackupfile) + cp_and_log(newbackupfile, data_config.MOUNTPOINT+newbackupfile) + hostoptions["backupfile"] = newbackupfile + else: + logging.info("Couldn't find any database to restore, upgrade will continue with a new database") + + + +def upgrade(hostoptions): + + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + logging.info("______Start of upgrade______") + cmd = "touch /tmp/.this_is_upgrade" + runcmd(cmd) + if hostoptions["rootfs"] == "Do_not_format": + logging.info("Will not format root filesystem") + else: + statusmsg = "Preparing %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(2) + format_disk("upgrade") + #sys.exit(2) + statusmsg = "Mounting %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(3) + mount_it() + hostoptions["backupfile"] = data_config.BACKUPPATH+data_config.BACKUPFILE + statgrab( hostoptions["rootdisk"]) + msg = "Upgrading %s" %(systemconfig["hostname"]) + update_status(msg) + time.sleep(3) + copy_it("upgrade") + cmd = "rm -rf %s/etc.old" %data_config.MOUNTPOINT + runcmd(cmd) + cmd = "rm -rf %s/alsa.old" %data_config.MOUNTPOINT + runcmd(cmd) + + cp_and_log("/tmp/etc/", data_config.MOUNTPOINT+"/etc.old/") + cp_and_log("/tmp/alsa/", data_config.MOUNTPOINT+"/alsa.old/") + cp_and_log("/tmp/oss", data_config.MOUNTPOINT+"/var/lib/oss.old") + + srcfile = "%s/etc.old/ssh/" %(data_config.MOUNTPOINT) + destfile = "%s/etc/ssh/" %(data_config.MOUNTPOINT) + cp_and_log2(srcfile, destfile, '*.pub') + cp_and_log2(srcfile, destfile, '*.key') + cp_and_log2(srcfile, destfile, '*key') + + mdfile = mdadm_find("/tmp") + cp_and_log("/tmp"+mdfile, data_config.MOUNTPOINT+"/etc") + + srcfile = "%s/etc.old/asound.conf" %(data_config.MOUNTPOINT) + destfile = "%s/etc/asound.conf" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + + # R5.5 -> R6 + srcfile = "%s/alsa.old/asound.state" %(data_config.MOUNTPOINT) + destfile = "%s/etc/asound.state" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + # R6 -> R6 + srcfile = "%s/etc.old/asound.state" %(data_config.MOUNTPOINT) + destfile = "%s/etc/asound.state" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + + srcfile = "%s/etc.old/mplayer/mplayer.conf" %(data_config.MOUNTPOINT) + destfile = "%s/etc/mplayer/mplayer.conf" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + + if not os.path.exists("/tmp/etc/KnoppMyth-version"): + logging.debug(" standard upgrade, restoring auth files") + cp_and_log(data_config.MOUNTPOINT+"/etc.old/passwd", data_config.MOUNTPOINT+"/etc/passwd") + cp_and_log(data_config.MOUNTPOINT+"/etc.old/shadow", data_config.MOUNTPOINT+"/etc/shadow") + cp_and_log(data_config.MOUNTPOINT+"/etc.old/group", data_config.MOUNTPOINT+"/etc/group") + msg = "Configuring system" + + update_status(msg) + progress(98) + logging.info("______Configuring system________") + cp_and_log("/etc/systemconfig", data_config.MOUNTPOINT+"/etc/systemconfig") + if not backup_sql_check(): + upgrade_mount_search() + fstab_it("upgrade") + time.sleep(1) + grub_it() + time.sleep(1) + #needed to get around a bug with pacman + special_hardware_check() + cp_and_log("/root/xorg.conf.install", data_config.MOUNTPOINT+"/etc/X11/xorg.conf.install") + cp_and_log("/etc/mtab", data_config.MOUNTPOINT+"/etc/mtab") + if clean_upgrade() or os.path.exists("/tmp/etc/KnoppMyth-version"): + logging.debug("clean upgrade or knoppmyth upgrade detected, running restore settings") + restore_default_settings() + if clean_upgrade(): + file = "%s/%s/.kmupgrade" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + cmd = "touch %s && chmod 777 %s" %(file, file) + runcmd(cmd) + copy_updates() + fix_permissions() + mount_bind_chroot() + logging.info("Running systemconfig in chroot") + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + mysqldb("stop", "") + if ( systemconfig["SystemType"] == "Master_backend" or systemconfig["SystemType"] == "Standalone" ): + if clean_upgrade() or not backup_sql_check(): + logging.info("Installing new database") + cmd = " chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + else: + logging.info("Restoring database") + cmd = " chroot %s %s/bin/restore_km_db_chroot.sh %s|tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT, hostoptions["backupfile"]) + runcmd(cmd) + + if os.path.exists("/tmp/etc/KnoppMyth-version"): + cmd = " chroot %s %s/bin/restore_default_settings.sh -c restore -t hostsettings " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + logging.debug("Correcting permissions because of km->linhes upgrade") + cmd = " chown -R mythtv:mythtv %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT) + runcmd(cmd) + cmd = " chown -R root:root %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT+"/backup") + runcmd(cmd) + else: + cmd = " chroot %s %s/bin/restore_default_settings.sh -c restore -t syssettings " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + + logging.info("Running systemconfig in chroot 2nd time") + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + #logging.info("Running systemconfig in chroot") + #cmd = " chroot %s %s/bin/systemconfig.sh advanced" %(data_config.MOUNTPOINT, MVROOT) + #runcmd(cmd) + mysqldb("stop", 'chroot') + apply_new_auth() + kill_dhcp_chroot() + umount_bind_chroot() + cp_and_log("/tmp/mythvantage_install.log", data_config.MOUNTPOINT+"/var/log/mythvantage_install.log") + cp_and_log("/tmp/mv_debug.log", data_config.MOUNTPOINT+"/var/log/mv_debug.log") + unmount_it() + msg = "Done" + update_status(msg) + mysqldb("start", '') + + + + +def main(argv): + global hostoptions + try: + opts, args = getopt.getopt(argv, 'c:h', ["help", "rootdisk=", "rootfs=", "rootsize=", "datafs=", "datasize=", "datadisk=", "swapsize=", "datapartition=" ] ) + except getopt.GetoptError, why: + print why + usage() + sys.exit(2) + hostoptions = {"op": 'null'} + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit(0) + elif opt in ( "--rootdisk"): + hostoptions["rootdisk"] = arg + hostoptions["rootpartition"] = arg+str(1) + elif opt in ("--rootfs"): + hostoptions["rootfs"] = arg + elif opt in ("--rootsize"): + hostoptions["rootsize"] = arg + elif opt in ("--datafs"): + hostoptions["datafs"] = arg + elif opt in ("--datasize"): + hostoptions["datasize"] = arg + elif opt in ("--datadisk"): + hostoptions["datadisk"] = arg + elif opt in ("--datapartition"): + hostoptions["datapartition"] = arg + elif opt in ("--swapsize"): + hostoptions["swapsize"] = arg + + elif opt in ("-c"): + validop = ["full_install", "upgrade", "netboot", "find_upgrade"] + if arg not in validop: + logging.critical("-c %s is not a valid option", arg) + sys.exit(2) + else: + hostoptions["op"] = arg + try: + hostoptions["datadisk"] + except: + hostoptions["datadisk"] = hostoptions["rootdisk"] + hostoptions["datapartition"] = hostoptions["datadisk"]+str(3) + try: + hostoptions["datapartition"] + except: + hostoptions["datapartition"] = hostoptions["datadisk"]+str(3) + hostoptions["swappartition"] = hostoptions["rootdisk"] + str(2) + + + if ( hostoptions["op"] == "full_install" ) : + full_install(hostoptions) + elif (hostoptions["op"] == "upgrade" ) : + hostoptions["datafs"] = "no_format" + find_upgrade() + upgrade(hostoptions) + elif (hostoptions["op"] == "find_upgrade" ) : + find_upgrade() + return hostoptions + + +#____________________________________________setup the logging______________________________________________________ +LOG_FILENAME = '/tmp/mv_status.log' +DEBUGLOG = '/tmp/mv_debug.log' +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%m-%d %H:%M', + filename=DEBUGLOG, + filemode='a') +# define a Handler which writes INFO messages or higher to the sys.stderr +console = logging.StreamHandler() +console.setLevel(logging.INFO) +# set a format which is simpler for console use +#formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +formatter = logging.Formatter("%(message)s") +# tell the handler to use this format +console.setFormatter(formatter) +# add the handler to the root logger +logging.getLogger('').addHandler(console) + +#infoformatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") +infoformatter = logging.Formatter("%(message)s") +infofile = logging.FileHandler(LOG_FILENAME, 'w') +infofile.setFormatter(infoformatter) +infofile.setLevel(logging.INFO) +logging.getLogger('').addHandler(infofile) + +#Read in systemconfig +global systemconfig +systemconfig = {} +file_name = "/etc/systemconfig" +try: + config_file = open(file_name) +except: + logging.debug("%s could not be opened", file_name) + config_file = '' + +for line in config_file: + line = line.strip() + if line and line[0] is not "#" and line[-1] is not "=": + var, val = line.rsplit("=", 1) + val = val.strip('"') + systemconfig[var.strip()] = val.strip() + + +if __name__ == "__main__": + config_file = "mv_config" + data_config = __import__(config_file, globals(), locals(), []) + logging.debug("___________START OF DEBUG_________________________") + cmdoptions = main(sys.argv[1:]) + logging.debug("______cmd line options______") + for i in cmdoptions.items(): + logging.debug (i) + logging.debug("______systemconfig______") + for i in systemconfig.items(): + logging.debug(i) + logging.debug("______hostoptions______") + for i in hostoptions.items(): + logging.debug(i) + pass + diff --git a/abs/core/LinHES-config/mv_ir.py b/abs/core/LinHES-config/mv_ir.py new file mode 100755 index 0000000..bc1ae37 --- /dev/null +++ b/abs/core/LinHES-config/mv_ir.py @@ -0,0 +1,330 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os, re , glob +from time import time, localtime, strftime +import time +import pwd + +def setup_lirc_links(mythhome): + logging.debug(" Creating links for lirc") + try: + mythuid = pwd.getpwnam('mythtv')[2] + mythgid = pwd.getpwnam('mythtv')[3] + except: + logging.critical("* mythuid not found") + mythuid = '1000' + mythgid = '1000' + if not os.path.exists(mythhome+"/.mythtv"): + logging.debug(" Creating %s/.mythtv",mythhome) + try: + os.mkdir(mythhome+"/.mythtv") + except: + logging.debug(" Couldn't create .mythtv ") + return + try: + os.chown(mythhome+"/.mythtv", mythuid, mythgid) + logging.debug("* Couldn't chown of %s", mythhome) + except: + cmd = ''' chown -R mythtv %s/.mythtv''' %mythhome + mv_common.runcmd(cmd) + cmd = ''' chgrp -R mythtv %s/.mythtv''' %mythhome + mv_common.runcmd(cmd) + pass + + if os.path.exists("/etc/lircrc"): + if not os.path.exists(mythhome+"/.mythtv/lircrc"): + logging.debug(" Creating symlink for myth lircrc") + os.symlink("/etc/lircrc",mythhome+"/.mythtv/lircrc") + else: + logging.debug(" %s/lircrc already present",mythhome) + + if not os.path.exists(mythhome+"/.lircrc"): + logging.debug(" Creating symlink for lircrc") + os.symlink("/etc/lircrc",mythhome+"/.lircrc") + else: + logging.debug(" %s/.lircrc already present",mythhome) + else: + logging.debug(" /etc/lircrc does not exisit, can not link it") + +def scrub_modules(filename,module): + logging.debug(" scrubbing %s from %s",module,filename) + cmd = '''sed -i -e '/.*#%s/d' %s''' %(module,filename) + mv_common.runcmd(cmd) + +def add_module(filename,module): + logging.debug(" adding %s to %s",module,filename) + cmd = ''' echo "%s" >> %s ''' %(module,filename) + mv_common.runcmd(cmd) + +def unload_all_lirc(): + logging.debug(" Unloading all lirc modules") + cmd = "sv stop lircd" + mv_common.runcmd(cmd) + cmd = "killall -9 lircd" + mv_common.runcmd(cmd) + cmd = '''modprobe -r $(lsmod |grep ^lirc |awk '{print $1}') ''' + mv_common.runcmd(cmd) + + + +def include_file( incfile,filename): + logging.debug(" including %s within %s",filename,incfile) + try: + f = open( incfile, 'a') + except: + logging.debug(" Couldn't open %s for writing",incfile) + return + line = '''include "%s" ''' %filename + logging.debug(" %s",line) + f.write(line) + f.write("\n") + f.close() + +def setup_ir_remote(Remotetype,templates): + logging.debug(" Setup of remote type %s",Remotetype) + if Remotetype == "no_remote": + mv_common.remove_service("lircd") + elif Remotetype == "tinker": + pass + else: + currenttime = strftime("%b-%d-%Y-%H:%M:%S", localtime()) + cmd = "mv /etc/lircd.conf /etc/lircd.conf-%s" %currenttime + mv_common.runcmd(cmd) + cmd = "mv /etc/lircrc /etc/lircrc-%s" %currenttime + mv_common.runcmd(cmd) + files = templates + "/remotes/" + Remotetype + "/lircd*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircd.conf",filename) + files = templates + "/remotes/" + Remotetype + "/lircrc*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircrc",filename) + cmd = "chmod 755 /etc/lircrc" + mv_common.runcmd(cmd) + mv_common.add_service("lircd") + + +def setup_ir_receiver(ReceiverType,TEMPLATES): + logging.info(" Configuring receiver %s", ReceiverType) + if ReceiverType == "Serial": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_serial #lirc") + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + + elif ReceiverType == "Usb-imon": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_imon #lirc") + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + + elif ReceiverType == "Hauppauge": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_i2c #lirc") + mv_common.cp_and_log(TEMPLATES+"/modules/lirc_i2c.conf" , + "/etc/modprobe.d/lirc_i2c.conf") + cmd = "rmmod lirc_i2c" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + elif ReceiverType == "pvr150": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_i2c #lirc") + mv_common.cp_and_log(TEMPLATES+"/modules/lirc_i2c.conf" , + "/etc/modprobe.d/lirc_i2c.conf") + cmd = "rmmod lirc_i2c" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + elif ReceiverType == "iguanaIR-usb": + scrub_modules("/etc/modules.mythvantage","lirc") + mv_common.add_service("igdaemon") + mv_common.remove_service("tatir") + + elif ReceiverType == "tatir": + scrub_modules("/etc/modules.mythvantage","lirc") + mv_common.add_service("tatir") + mv_common.remove_service("igdaemon") + + else: + logging.debug(" didn't match receiver, using genric case") + scrub_modules("/etc/modules.mythvantage","lirc") + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + +def setup_blaster_proto(HostBlasterType,Hostnumblaster,TEMPLATES,systemconfig): + logging.debug(" Start of setup_blaster_proto") + logging.debug(" HostBlasterType: %s", HostBlasterType) + logging.debug(" Hostnumblaster: %s" , Hostnumblaster) + if not HostBlasterType == "pvr150" and not HostBlasterType == "None": + for i in range(int(Hostnumblaster)): + try: + proto = systemconfig["HostTransmitproto_"+str(i+1)] + logging.debug(" proto: %s",proto) + except: + logging.info(" unkown proto for %s",i+1) + continue + template=TEMPLATES+"/transmit/%s/lircd.conf" %proto + if os.path.exists(template): + logging.debug(" include blaster template: %s",proto) + include_file("/etc/lircd.conf",template) + else: + logging.debug(" template: %s is not present",template) + logging.info("------NEED TO SETUP CHANGE_CHANNEL------") + + +def setup_blaster_transmiter(HostBlasterType): + logging.debug(" Start of setup_blaster_transmiter") + logging.info(" HostBlasterType : %s", HostBlasterType) + + if HostBlasterType == "Receiver": + logging.info(" Blaster is receiver, skipping module config for Blaster") + return + + if HostBlasterType == "no blaster": + scrub_modules("/etc/modules.mythvantage","blaster") + elif HostBlasterType == "Serial": + scrub_modules("/etc/modules.mythvantage","blaster") + add_module("/etc/modules/.mythvantage","lirc_serial #blaster") + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + elif HostBlasterType == "pvr150": + scrub_modules("/etc/modules.mythvantage", "blaster") + scrub_modules("/etc/modules.mythvantage", "lirc") + add_module("/etc/modules.mythvantage", "lirc_pvr150 #blaster") + add_module("/etc/modules.mythvantage", "lirc_pvr150 #lirc") + cmd = "rmmod lirc_i2c" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + else: + scrub_modules("/etc/modules.mythvantage","blaster") + +def setup_lcd(LCDtype, TEMPLATES, Remotetype): + logging.debug("____Start of setup_lcd____") + logging.debug(" LCDType: %s", LCDtype) + logging.debug(" Remotetype: %s", Remotetype) + if LCDtype == "tinker": + logging.info(" tinker mode detected") + return + + if LCDtype == "no_lcd": + logging.info(" Disabling LCD support") + cmd = "sv stop lcdd" + mv_common.runcmd(cmd) + #sometimes it doesn't want to die + cmd = "killall -9 LCDd" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh UNLOAD LCD" + mv_common.runcmd(cmd) + scrub_modules("/etc/modules.mythvantage", "LCD") + mv_common.remove_service("lcdd") + else: + lcdmodule="%s/LCD/%s/modules" %(TEMPLATES,LCDtype) + if os.path.exists(lcdmodule): + logging.debug(" Adding module for LCD") + scrub_modules("/etc/modules.mythvantage", "LCD") + cmd = "cat %s >> /etc/modules.mythvantage" %lcdmodule + mv_common.runcmd(cmd) + if Remotetype != "tinker": + lcdconf = "%s/LCD/%s/LCDd.conf" %(TEMPLATES,LCDtype) + lcdlirc = "%s/LCD/%s" %(TEMPLATES,LCDtype) + mv_common.pacinstall("lcdproc") + if os.path.exists(lcdconf): + logging.debug(" Copying in lcdconf template file: %s",lcdconf) + mv_common.cp_and_log(lcdconf, "/etc/LCDd.conf") + else: + logging.debug(" %s is not present, will not copy it") + + if os.path.exists(lcdlirc+"/lircrc"): + logging.debug(" LCD seems to support lirc") + #setup the lirc aspect of the lcd + #copied from setup_ir_remote + files = lcdlirc+"/lircd*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircd.conf",filename) + files = lcdlirc+"/lircrc*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircrc",filename) + cmd = "chmod 755 /etc/lircrc" + mv_common.runcmd(cmd) + + mv_common.add_service("lcdd") + mv_common.restart_service("lcdd") + logging.debug("__End of setup_lcd") + +def setup_ir(systemconfig, data_config): + rc = False + logging.info("____Start of IR____") + if systemconfig["Remotetype"] == "tinker": + logging.info(" Tinker mode detected") + else: + if not systemconfig["HostBlasterType"]: + HostBlasterType = "unknown" + Hostnumblaster = "0" + else: + HostBlasterType = systemconfig["HostBlasterType"] + Hostnumblaster = systemconfig["Hostnumblaster"] + + if systemconfig["HostBlasterType"] == "pvr150": + remotetype = "hauppauge-blaster" + logging.debug(" pvr150 blaster selected, setting remote to hauppauge-blaster") + else: + remotetype = systemconfig["Remotetype"] + + setup_ir_remote(remotetype,systemconfig["TEMPLATES"]) + setup_lirc_links(data_config.MYTHHOME) + + if systemconfig["ReceiverType"]: + setup_ir_receiver(systemconfig["ReceiverType"], + systemconfig["TEMPLATES"]) + else: + setup_ir_receiver("unknown", systemconfig["TEMPLATES"]) + unload_all_lirc() + setup_blaster_proto(HostBlasterType, + Hostnumblaster, + systemconfig["TEMPLATES"], + systemconfig) + setup_blaster_transmiter(HostBlasterType) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + time.sleep(2) + mv_common.udev_trigger() + cmd="sv start lircd" + mv_common.runcmd(cmd) + rc = [ True , True ] + if systemconfig["LCDtype"]: + setup_lcd(systemconfig["LCDtype"], + systemconfig["TEMPLATES"], + systemconfig["Remotetype"]) + else: + logging.debug(" LCD not defined") + logging.info("__End IR\n") + return rc \ No newline at end of file diff --git a/abs/core/LinHES-config/mv_misc.py b/abs/core/LinHES-config/mv_misc.py new file mode 100755 index 0000000..9ea9c95 --- /dev/null +++ b/abs/core/LinHES-config/mv_misc.py @@ -0,0 +1,180 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os, re +from urllib2 import Request, urlopen, URLError, HTTPError + +config_file = "mv_config" +data_config = __import__(config_file, globals(), locals(), []) + +def setup_zip(MVROOT,zipcode): + logging.debug("____Setting up the zipcode____") + + if zipcode: + cmd="%s/bin/restore_default_settings.sh -c ZIP -c %s" %(MVROOT,zipcode) + mv_common.runcmd(cmd) + #Let's also speed things up for those in North America + cmd="mkdir /usr/bin/perlbin/vendor/tv_grabbers_non_na" + mv_common.runcmd(cmd) + cmd="mv /usr/bin/perlbin/vendor/tv_grab_* /usr/bin/perlbin/vendor/tv_grabbers_non_na" + mv_common.runcmd(cmd) + cmd="mv /usr/bin/perlbin/vendor/tv_grabbers_non_na/tv_grab_na* /usr/bin/perlbin/vendor/" + mv_common.runcmd(cmd) + else: + logging.debug(" Zipcode is not set") + + logging.debug("__End of zipcode\n") + +def setup_tz(timezone,TEMPLATES): + logging.info("____Setting up the timezone____") + + if not timezone: + timezone="unknown" + logging.info(" Setting timezone to %s",timezone) + mv_common.remove_file("/etc/localtime") + #try: + #logging.debug(" Removing /etc/localtime") + #os.remove("/etc/localtime") + #except: + #logging.debug(" Couldn't remove /etc/localtime") + #pass + + srclink="/usr/share/zoneinfo/%s" %timezone + logging.debug(" symlinking %s to /etc/localtime",srclink) + try: + os.symlink(srclink,"/etc/localtime") + except: + logging.critical(" Couldn't make symlink for /etc/localtime") + cmd = '''sed -e "s/^TIMEZONE=.*$/TIMEZONE=\\"%s\\" /" /etc/rc.conf > $TEMPLATES/rc.conf''' %re.escape(timezone) + mv_common.runcmd(cmd) + + if os.path.exists("/etc/php/php.ini"): + logging.info(" Changing timezone for php") + cmd = '''sed -i "s/^.*date.timezone.*$/date.timezone=%s/" ${BASE}/etc/php/php.ini''' %re.escape(timezone) + mv_common.runcmd(cmd) + + mv_common.cp_and_log(TEMPLATES+"/rc.conf","/etc/rc.conf") + logging.info("__End of timezone\n") + +def setup_nfs(systemconfig): + nfslist=[] + logging.info("____Start of setup_nfs____") + scrubnfs(systemconfig["TEMPLATES"]) + + if systemconfig["HaveCentralNFS"] == "yes": + logging.debug(" Using a Central NFS server") + if systemconfig["NFSserver"] == "file:nfsmap": + #if it's a file check for it, failure results in downloading attempt from MBE + nfsmap_file=data_config.MYTHHOME+"/templates/nfsmap" + if not os.path.exists(nfsmap_file): + logging.debug(" Couldn't find local %s",nfsmap_file) + logging.info(" Trying to download nfsmap from MBE") + nfsmap_file = download_nfsmap(systemconfig["dbhost"]) + nfslist = process_nfsmap_file(nfsmap_file) + # if it's an ip parse ip and download file + elif re.search(systemconfig["NFSserver"],":nfsmap"): + ip=systemconfig["NFSserver"].split(":")[0] + nfsmap_file = download_nfsmap(ip) + nfslist = process_nfsmap_file(nfsmap_file) + #else treat it as a single mount point + else: + item = (systemconfig["NFSserver"] , systemconfig["NFSmount"]) + nfslist.append(item) + else: + #if standalone or slave try to use MBE + if systemconfig["SystemType"] == "Frontend_only" or systemconfig["SystemType"] == "Slave_Backend": + item = (systemconfig["dbhost"] , data_config.DATAMOUNT) + nfslist.append(item) + setup_nfs_fstab(nfslist) + logging.info("__End of nfs\n") + +def setup_sleep(systemconfig): + logging.debug("____Setting up sleep____") + autoshutdown = systemconfig["AutoShutdown"] + stime1 = systemconfig["Shutdowntime"] + stime2 = systemconfig["Shutdowntime2"] + cstime1='' + + if autoshutdown == "1" : + if not stime1 == "-1" : + cstime1 = stime1 + cshutdown = cstime1 + if not stime2 == "-1" : + if cstime1 : + cshutdown = "%s,%s" %(cstime1,stime2) + else: + cshutdown = stime2 + logging.debug(" Shutdown time at %s",cshutdown) + cmd='''sed -e "s/HOUR/%s/g" %s/cron.template | crontab - -u mythtv''' %(cshutdown,systemconfig["TEMPLATES"]) + mv_common.runcmd(cmd) + else: + logging.info(" Shutdown not enabled") + cmd='''sed -e "/00 HOUR.*/d" %s/cron.template | crontab - -u mythtv''' %systemconfig["TEMPLATES"] + mv_common.runcmd(cmd) + + logging.debug("__End of sleep\n") + + +def process_nfsmap_file(mapfile): + logging.debug(" processing nfsmap file %s",mapfile) + nfslist = [] + try: + f = open(mapfile,"r") + for line in f.readlines(): + if line.startswith("#"): + continue + item = line.split() + if len(item) <= 1 : + continue + logging.debug(" %s",item) + nfslist.append(item) + except : + logging.critical("Couldn't read file %s, or some other error",mapfile) + return nfslist + +def scrubnfs(templates): + logging.info(" Scrubbing nfs") + mv_common.cp_and_log("/etc/fstab",templates+"/fstab.conf.template") + #used this sed cmd because it's clean and took me forever to figure out =) + cmd='''sed '/^#STARTSCRUB.*$/,/^#ENDSCRUB.*$/d' %s/fstab.conf.template > /etc/fstab''' %templates + mv_common.runcmd(cmd) + +def download_nfsmap(ip): + nfsmap_file="/tmp/nfsmap" + myurl="http://%s:1337/templates/nfsmap" %ip + req = Request(myurl) + try: + f = urlopen(req) + logging.info(" downloading %s", myurl) + local_file = open(nfsmap_file, "w") + #Write to our local file + local_file.write(f.read()) + local_file.close() + #handle errors + except HTTPError, e: + logging.info(" File download failed") + logging.debug(" %s", myurl) + logging.debug(" HTTP Error: %s", e.code) + except URLError, e: + logging.info(" File download failed") + logging.debug(" %s",myurl) + logging.debug(" URL Error: %s ", e.reason) + + return nfsmap_file + +def setup_nfs_fstab(nfslist): + logging.info(" Adding nfs paths to fstab") + try: + f = open('/etc/fstab', 'a') + line = "#STARTSCRUB --------------anything in this block will be scrubbed\n" + f.write(line) + for s, m in nfslist: + line = "%s %s nfs \n" %(s,m) + logging.debug(" %s",line) + f.write(line) + line = "#ENDSCRUB\n" + f.write(line) + f.close() + except: + logging.critical(" *Couldn't open /etc/fstab for writing") + logging.debug(" Done adding nfs paths to fstab") + diff --git a/abs/core/LinHES-config/mv_network.py b/abs/core/LinHES-config/mv_network.py new file mode 100755 index 0000000..b80e4cc --- /dev/null +++ b/abs/core/LinHES-config/mv_network.py @@ -0,0 +1,507 @@ +# -*- coding: utf-8 -*- +import sys , os, commands , glob, time, re +import logging +import mv_common +import socket, fcntl, struct, array +import netifaces, iplib +global etcnetdir +etcnetdir = "/etc/net/ifaces" + +def setup_MYTH_DHCP(systemconfig): + default_interface = systemconfig["default_interface"] + try: + defaultdhcp = systemconfig["HostUSEDHCP"+default_interface] + except: + logging.critical(" *Error occured finding default dhcp") + defaultdhcp = "0" + logging.debug(" Using %s as dhcp value for %s", defaultdhcp, default_interface) + return defaultdhcp + +def all_interfaces(): + max_possible = 128 # arbitrary. raise if needed. + bytes = max_possible * 32 + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + names = array.array('B', '\0' * bytes) + outbytes = struct.unpack('iL', fcntl.ioctl( + s.fileno(), + 0x8912, # SIOCGIFCONF + struct.pack('iL', bytes, names.buffer_info()[0]) + ))[0] + namestr = names.tostring() + return [namestr[i:i+32].split('\0', 1)[0] for i in range(0, outbytes, 32)] + +def get_ip(ifname): + logging.debug(" Finding ip address for %s", ifname) + all_if = all_interfaces() + logging.debug(" found interfaces:%s", all_if) + if ifname in all_if : + logging.debug(" Found %s in all_interfaces", ifname) + else: + logging.critical("* Couldn't find %s in list", ifname) + ifname = all_if[0] + logging.critical("* Using %s for interface name", ifname) + + + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + return socket.inet_ntoa(fcntl.ioctl( + s.fileno(), + 0x8915, # SIOCGIFADDR + struct.pack('256s', ifname[:15]) + )[20:24]) + +def get_default_route(iface): + rcroute = "127.0.0.1" + f = open ('/proc/net/route', 'r') + for line in f: + words = string.split (line) + netiface = words[0] + route = words[2] + flags = words[3] + try: + if ( netiface == iface ) and ( flags == "0003") : + route = iplib.IPv4Address(route, notation="hex") + t = str(route.get_dot()) + s = t.split(".") + rcroute = s[3] + "." + s[2] + "." + s[1] + "." + s[0] + break + except ValueError: + pass + return rcroute + +def setup_MYTH_IP(systemconfig): + default_interface = systemconfig["default_interface"] + #check for dhcp in use + if setup_MYTH_DHCP(systemconfig) == "0": + logging.debug(" dhcp is in use, finding dhcp ip") + defaultip = get_ip(default_interface) + else: + try: + defaultip = systemconfig["Hostip"+default_interface] + except: + logging.debug(" Error occured finding the defaultip") + defaultip = "127.0.0.1" + logging.debug(" Using %s as default ip", defaultip) + return defaultip + + +def setup_MYTH_GW(systemconfig): + default_interface = systemconfig["default_interface"] + #check for dhcp in use + if setup_MYTH_DHCP(systemconfig) == "0": + logging.debug(" dhcp is in use, finding dhcp ip") + defaultgw = get_default_route(default_interface) + else: + try: + defaultgw = systemconfig["Hostgw"+default_interface] + except: + logging.debug(" Error occured finding the defaultgw") + defaultgw = "127.0.0.1" + logging.debug(" Using %s as default gw", defaultgw) + return defaultgw + + +def setup_MTYH_DNS(): + returndns = "127.0.0.1" + try: + f = open ('/etc/resolv.conf', 'r') + for line in f: + if line.startswith("nameserver"): + print line + returndns = line.split()[1] + break + except: + logging.debug(" Couldn't open /etc/resolv.conf for myth_dns") + logging.debug(" using %s for myth_dns", returndns) + return returndns + + + + + +def flush(netdev): + logging.debug(" Flushing %s",netdev) + cmd = '''ip address flush dev %s''' %netdev + mv_common.runcmd(cmd) + +def kill_dhcp(basedir): + logging.debug(" _Start of kill_dhcp") + logging.debug(" Killing off dhcpd") + stddir = os.getcwd() + piddir = ("%s/var/run/") %basedir + try: + os.chdir(piddir) + for FILE in glob.glob("dhcpcd-*.pid"): + f = open(FILE,'r') + pid = f.readline() + f.close + cmd = "kill -9 %s" %pid + mv_common.runcmd(cmd) + mv_common.remove_file(FILE) + os.chdir(stddir) + except: + pass + +def setup_nameserver(dns): + logging.info(" Adding %s for DNS", dns) + cmd = '''grep -q %s /etc/resolv.conf''' %dns + status = mv_common.runcmd(cmd) + if not status == 0 : + cmd = ''' echo "nameserver %s" >> /etc/resolv.conf ''' %dns + mv_common.runcmd(cmd) + + + +def setup_hostname(systemconfig): + logging.debug(" _Start of setup_hostname") + try: + hostname = systemconfig["hostname"] + except: + logging.critical(" *Hostname could not be set") + logging.info(" Using default value of me") + hostname = "me" + logging.info(" Setting the hostname to %s", hostname) + cmd = ''' echo %s > /etc/hostname ''' %hostname + mv_common.runcmd(cmd) + cmd = "cat /etc/hosts | grep -v 127.0.0.1 | grep -v %s > /tmp/hosts" %hostname + mv_common.runcmd(cmd) + if systemconfig["mythdhcp"] == "1" : + logging.debug(" not using dhcp") + cmd = ''' echo 127.0.0.1 localhost > /etc/hosts ''' + mv_common.runcmd(cmd) + cmd = ''' echo %s %s > /etc/hosts ''' %(systemconfig["mythip"], systemconfig["hostname"]) + mv_common.runcmd(cmd) + else: + cmd = ''' echo 127.0.0.1 %s localhost > /etc/hosts ''' %systemconfig["hostname"] + mv_common.runcmd(cmd) + cmd = '''cat /tmp/hosts >> /etc/hosts ''' + mv_common.runcmd(cmd) + + +def write_wpafile(line,netdev): + logging.debug(" writing out wpa_supplicant.conf file") + logging.debug(line) + wpafile = etcnetdir+"/"+netdev+"/wpa_supplicant.conf" + try: + f = open(wpafile,'w') + f.write(line) + f.close() + except: + logging.debug(" Couldn't write to %s",wpafile) + +def setup_wpa(netinfo,netdev): + logging.info(" %s will use wpa for encryption",netdev) + line = ''' +#This file was automaticly generated, any changes may be lost +ctrl_interface=/var/run/wpa_supplicant +network={ + ssid="%s" + # Preshared key as an ASCII passphrase + psk="%s" + scan_ssid=1 + key_mgmt=WPA-EAP WPA-PSK NONE + pairwise=CCMP TKIP + proto=WPA RSN +}''' %(netinfo["ESSID"],netinfo["KEY"]) + write_wpafile(line,netdev) + +def setup_wep(netinfo,netdev): + logging.info(" %s will use wep for encryption",netdev) + logging.debug(" When a packet comes along, you must wep it") + line=''' +#This file was automaticly generated, any changes may be lost +ctrl_interface=/var/run/wpa_supplicant +network={ + ssid="%s" + key_mgmt=NONE + wep_key0=%s + wep_tx_keyidx=0 + scan_ssid=1 + auth_alg=SHARED +} +''' %(netinfo["ESSID"],netinfo["KEY"]) + write_wpafile(line,netdev) + + +def setup_none(netinfo,netdev): + logging.info(" %s will not use encryption",netdev) + line = ''' +#This file was automaticly generated, any changes may be lost +ctrl_interface=/var/run/wpa_supplicant +network={ + ssid="%s" + key_mgmt=NONE +} +''' %netinfo["ESSID"] + write_wpafile(line,netdev) + +def setup_interface(netdev,systemconfig): + logging.debug(" _Start of setup_interface for %s",netdev) + nettrans = {'Hostip':'ip', + 'Hostnetmask':'netmask', + 'HostActive':'isactive', + 'HostDNS':'dns', + 'HostUSEDHCP':'UseDHCP', + 'HostGW':'GW', + 'HostMTU':'mtu', + 'HOST_iswireless':"wireless", + 'HostESSID':'ESSID', + 'HostKey':'KEY', + 'HostUseEncryption':'ENCRYPT'} + netinfo = {} + #populate the netinfo dict + for netitem in nettrans: + if systemconfig[netitem+netdev]: + netinfo[nettrans[netitem]] = systemconfig[netitem+netdev] + else: + netinfo[nettrans[netitem]] = False + logging.debug(" %s:%s",netitem,netinfo[nettrans[netitem]]) + logging.info(" %s wireless: %s", netdev,netinfo["wireless"]) + try: + os.makedirs(etcnetdir) + except: + logging.debug(" Could not create %s",etcnetdir) + + optionfile=etcnetdir+"/"+netdev+"/options" + if not os.path.exists(optionfile): + try: + os.makedirs(etcnetdir+"/"+netdev) + except: + pass + mv_common.cp_and_log(systemconfig["TEMPLATES"]+"/etcnet/eth/options", optionfile) + + if netinfo["isactive"] == "1" : + change_iface_state(netdev,"enabled") + else: + change_iface_state(netdev,"disabled") + + if netinfo["wireless"] == "1" : + + logging.info(" Enabling wireless extensions") + cmd = ''' sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' %s/%s/options''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + if netinfo["ENCRYPT"] == "WEP": + setup_wep(netinfo,netdev) + elif netinfo["ENCRYPT"] == "WPA": + setup_wpa(netinfo,netdev) + elif netinfo["ENCRYPT"] == "none": + setup_none(netinfo,netdev) + + else: + logging.info(" Disabling wireless extensions") + cmd = '''sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' %s/%s/options''' %(etcnetdir, netdev) + mv_common.runcmd(cmd) + #try: + wpafile=etcnetdir+"/"+netdev+"/wpa_supplicant.conf" + #os.remove(wpafile) + mv_common.remove_file(wpafile) + #except: + #logging.debug(" Couldn't remove %s",wpafile) + + if netinfo["UseDHCP"] == "0" : + logging.info(" Enabling DHCP support") + cmd = ''' sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' %s/%s/options''' %(etcnetdir, netdev) + mv_common.runcmd(cmd) + else: + logging.info(" Using static ip address of %s",netinfo["ip"]) + cmd = ''' sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' %s/%s/options''' %(etcnetdir, netdev) + mv_common.runcmd(cmd) + cmd = '''echo "default via %s" > %s/%s/ipv4route''' %(netinfo["GW"], etcnetdir, netdev) + mv_common.runcmd(cmd) + cmd = '''echo "%s%s" > %s/%s/ipv4address ''' %(netinfo["ip"], netinfo["netmask"].split()[0], etcnetdir, netdev) + mv_common.runcmd(cmd) + setup_nameserver(netinfo["dns"]) + + if netinfo["mtu"] : + logging.info(" Setting mtu to %s", netinfo["mtu"]) + cmd = '''sed -i '/^mtu.*$/d' %s/%s/iplink''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = ''' echo "mtu %s" >> %s/%s/iplink''' %(netinfo["mtu"], etcnetdir,netdev) + mv_common.runcmd(cmd) + else: + logging.info(" Using default mtu value") + cmd = '''sed -i '/^mtu.*$/d' %s/%s/iplink''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + + +def change_iface_state(netdev, state): + if state == "enabled": + logging.info(" Activating %s", netdev) + cmd = '''sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' %s/%s/options''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = '''sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' %s/%s/options ''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + else: + logging.info(" Disabling %s", netdev) + cmd = '''sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' %s/%s/options''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = '''sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' %s/%s/options ''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = "/sbin/ifconfig %s down" %netdev + mv_common.runcmd(cmd) + cmd = "ip address flush %s" %netdev + mv_common.runcmd(cmd) + +def devcheck(netdev): + cmd = ''' /sbin/ifconfig %s''' %netdev + rc = mv_common.runcmd(cmd) + if rc == 0 : + return True + else: + return False + +def udev_rules(netdev): + filename = "/etc/udev/rules.d/net.rules" + if devcheck(netdev): + logging.info(" Finding macaddress for %s",netdev) + try: + macaddress = netifaces.ifaddresses(netdev)[netifaces.AF_LINK][0]['addr'] + logging.debug(" Macaddress: %s",macaddress) + except: + logging.debug(" Couldn't find mac address for %s",netdev) + return + try: + f = open(filename,'a') + except: + logging.debug(" Couldn't open %s for writing", filename) + return + if netdev.startswith('eth'): + line = '''KERNEL=="eth*", SYSFS{address}=="%s", NAME="%s"''' % ( macaddress , netdev) + elif netdev.startswith('wlan'): + line = '''KERNEL=="wlan*", SYSFS{address}=="%s", NAME="%s"'''% ( macaddress , netdev) + elif netdev.startswith('ath'): + line = '''KERNEL=="ath*", SYSFS{address}=="%s", NAME="%s"''' % ( macaddress , netdev) + logging.debug(" adding to net.rules ") + logging.debug(" %s",line) + f.write(line) + f.write("\n") + f.close() + +def find_active(systemconfig,this_is_install): + interfacelist=('eth0', 'eth1', 'wlan0', 'wlan1', 'ath0') + logging.debug(" _Start of find_active") + + if systemconfig["mythdhcp"] == "1": + mv_common.remove_file("/etc/resolv.conf") + cmd = ''' echo search lan > /etc/resolv.conf ''' + mv_common.runcmd(cmd) + cmd = ''' echo nameserver 127.0.0.1 >> /etc/resolv.conf ''' + mv_common.runcmd(cmd) + + for netdev in interfacelist: + if this_is_install: + udev_rules(netdev) + currentnet = "HostActive" + netdev + try: + systemconfig[currentnet] + except: + logging.debug(" %s is not defined",currentnet) + change_iface_state(netdev, "disabled") + continue + if systemconfig[currentnet] == "1" : + #check if device is present + if devcheck(netdev) : + setup_interface(netdev,systemconfig) + else: + logging.debug(" Interface %s not found in config", netdev) + #change_iface_state(netdev, "disabled") + else: + change_iface_state(netdev, "disabled") + +def vnc_netboot_check(): + logging.debug(" Start of VNC/NETBOOT check") + vnc = False + netboot = False + try: + f = open('/proc/cmdline', 'r') + bootoptions = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open /proc/cmdline") + logging.debug(" Assuming it's ok to fiddle with the network") + return True + bootoptions = bootoptions[0] + if re.match("vnc",bootoptions) != None : + logging.debug(" Found VNC option") + vnc = True + if re.match("nfsroot",bootoptions) != None : + logging.debug(" Found netboot option") + netboot = True + + return (vnc or netboot) + +def start_network(): + if not vnc_netboot_check(): + logging.info(" Restarting network") + cmd ="/etc/net/scripts/network.init reload" + mv_common.runcmd(cmd) + cmd ="/etc/net/scripts/network.init restart" + mv_common.runcmd(cmd) + else: + logging.info(" Will not restart network due to netboot/vnc") + + +def stop_network(): + if not vnc_netboot_check(): + logging.info(" Stopping network") + cmd ="/etc/net/scripts/network.init stop" + mv_common.runcmd(cmd) + kill_dhcp("") + interfacelist=('eth0', 'eth1', 'wlan0', 'wlan1', 'ath0') + for i in interfacelist: + flush(i) + else: + logging.info(" Will not stop network due to netboot/vnc") + pass + +def hostname_change_check(systemconfig): + restartfe = False + logging.debug(" _Start of hostname_change_check") + oldhostname = socket.gethostname() + #oldhostname = "crap" + newhostname = systemconfig["hostname"] + mv_root = systemconfig["MVROOT"] + logging.debug(" Old hostname: %s", oldhostname) + logging.debug(" New hostname: %s", newhostname) + if oldhostname != newhostname : + logging.info(" Changing hostname in database to match new hostname") + cmd ="%s/bin/restore_default_settings.sh -cuhostname -o -h%s" %(mv_root, oldhostname) + mv_common.runcmd(cmd) + logging.info(" Changing hostname to %s", newhostname) + cmd = "hostname %s" %newhostname + mv_common.runcmd(cmd) + if systemconfig["SystemType"] != "Frontend_only" : + logging.info(" Restarting backend") + mv_common.stop_service("mythbackend") + mv_common.start_service("mythbackend") + restartfe = True + else: + logging.debug(" old and new hostnames matched, leaving things along") + logging.debug(" __End of hostname_change_check") + return restartfe + + + +def setup_network (systemconfig,this_is_install): + logging.info("____Start of network____") + logging.info(" Setting up the network") + restartfe = hostname_change_check(systemconfig) + setup_hostname(systemconfig) + find_active(systemconfig,this_is_install) + start_network() + logging.info("__End of network\n") + return restartfe + + + +##this is used by the install process to start the network +def install_network_setup(systemconfig): + logging.info("____Start of network_install____") + logging.info(" Setting up the network") + #setup_MYTH_vars + setup_hostname(systemconfig) + stop_network() + find_active(systemconfig) + start_network() + logging.info("__End of network install \n") + + diff --git a/abs/core/LinHES-config/mv_screensaver.py b/abs/core/LinHES-config/mv_screensaver.py new file mode 100755 index 0000000..2da970c --- /dev/null +++ b/abs/core/LinHES-config/mv_screensaver.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import re +import os + + +def mplayer_saver_check (cmd,templatefile): + logging.debug(" Checking for heartbeat command in mplayer.conf") + mplayerconf = "/etc/mplayer/mplayer.conf" + if not os.path.exists(mplayerconf): + logging.debug(" copying in mplayer template file") + mv_common.cp_and_log(templatefile, mplayerconf) + + try: + f = open(mplayerconf, 'r') + mplayerconf_contents = f.readlines() + f.close() + except: + logging.debug(" Couldn't open %s for reading",mplayerconf) + mplayerconf_contents = "#\n" + + try: + f = open(mplayerconf, 'w') + except: + logging.debug(" Couldn't open %s for writing",mplayerconf) + return + + for line in mplayerconf_contents: + if re.match("^.*stop-xscreensaver",line): + continue + elif re.match("^.*heartbeat-cmd",line): + continue + else: + f.write(line) + + f.write("stop-xscreensaver = 0\n") + line='''heartbeat-cmd="%s"\n''' %cmd + f.write(line) + f.close() + + +def killxscreensaver(): + logging.info(" Stopping xscreensaver") + cmd="xscreensaver-command --exit " + mv_common.runcmd(cmd) + cmd="killall xscreensaver " + mv_common.runcmd(cmd) + +def killgscreensaver(): + logging.info(" Stopping gnome-screensaver") + cmd="gnome-screensaver-command --exit " + mv_common.runcmd(cmd) + cmd="killall gnome-screensaver " + mv_common.runcmd(cmd) + + +def setup_x_screensaver(idle,theme,screenconfigfile,templatefile): + logging.info(" Configuring X screensaver") + killgscreensaver() + logging.debug(" Why can't xscreensaver have a nice configuration !") + + if not os.path.exists(screenconfigfile): + logging.debug(" copying in new template file") + mv_common.cp_and_log(templatefile,screenconfigfile) + + try: + f = open(screenconfigfile, 'r') + screenconfigcontents=f.readlines() + f.close() + except: + logging.info("Couldn't open %s for reading",screenconfigfile) + return + try: + f = open(screenconfigfile, 'w') + except: + logging.info("Couldn't open %s for writing",screenconfigfile) + return + + startline=0 + foundline=0 + + for k, line in enumerate(screenconfigcontents): + if re.match("programs:",line): + startline = k + if re.search(theme,line): + foundline = k + themenumber=foundline-startline-2 + + for line in screenconfigcontents: + if re.match("selected.*$",line): + continue + + if re.match("timeout",line): + logging.info(" Setting idletime to %s",idle) + outline = "timeout: 0:%s:00 \n" %idle + f.write(outline) + elif re.match("mode",line): + if theme == "Random": + logging.info(" Setting theme to %s", "Random") + outline = "mode: random \n" + f.write(outline) + outline = "selected: -1 \n" + f.write(outline) + continue + + elif theme == "Blank": + logging.info(" Setting theme to %s", "blank") + outline = "mode: blank \n" + f.write(outline) + outline = "selected: -1 \n" + f.write(outline) + continue + + else: + logging.info(" Setting theme to %s", theme) + outline = "mode: one\n" + f.write(outline) + logging.debug(" Theme number is %s",themenumber) + outline = "selected: %s\n" %themenumber + f.write(outline) + continue + + else: + outline = line + f.write(outline) + f.close() + logging.debug("__End of xscreensaver") + +def setup_gnome_screensaver(theme,idletime): + logging.info(" Configuring gnome screensaver") + + logging.info(" Disabling lock screen") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-screensaver/lock_enabled false''' + mv_common.runcmd(cmd) + + logging.info(" Setting idletime to %s",idletime) + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int -s "/apps/gnome-screensaver/idle_delay" %s''' %idletime + mv_common.runcmd(cmd) + + logging.info(" Setting mode to single") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string -s "/apps/gnome-screensaver/mode" single''' + mv_common.runcmd(cmd) + + if theme == "Random": + logging.info(" setting theme to random") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string -s "/apps/gnome-screensaver/mode" random''' + mv_common.runcmd(cmd) + + elif theme == "Blank": + logging.info(" setting theme to blank") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string -s "/apps/gnome-screensaver/themes" blank''' + mv_common.runcmd(cmd) + + else: + logging.info(" setting theme to %s",theme) + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --set --type list --list-type=string /apps/gnome-screensaver/themes [screensavers-%s]''' %theme + mv_common.runcmd(cmd) + + killxscreensaver() + logging.info("__End gnome screensaver") + + + + +def setup_screensaver (systemconfig,data_config): + logging.info("____Start of screensaver configuration____") + screensavertype = systemconfig["Screensavertype"] + theme = systemconfig["Screensavertheme"] + idletime = systemconfig["Screensaveridle"] + configfile = data_config.MYTHHOME+"/.xscreensaver" + templatefile = systemconfig["TEMPLATES"]+"/xscreensaver.template" + mtemplate = systemconfig["TEMPLATES"]+"/mplayer.conf.template" + + if screensavertype == "xscreensaver": + mv_common.pacinstall("xscreensaver") + mv_common.pacremove("gnome-screensaver") + setup_x_screensaver(idletime, theme, configfile, templatefile) + mplayer_saver_check("/usr/bin/xscreensaver-command -deactivate &",mtemplate) + + elif screensavertype == "gscreensaver": + mv_common.pacinstall("xscreensaver") + mv_common.pacinstall("gnome-screensaver") + setup_gnome_screensaver(theme,idletime) + mplayer_saver_check("/usr/bin/gnome-screensaver-command -p &",mtemplate) + + elif screensavertype == "none": + mv_common.pacremove("xscreensaver") + mv_common.pacremove("gnome-screensaver") + killgscreensaver() + killxscreensaver() + + elif screensavertype == "tinker" : + logging.debug(" screensaver tinker mode detected") + else: + logging.debug(" Unknown screensaver") + logging.info("__End of screensaver\n") + + + diff --git a/abs/core/LinHES-config/mv_smolt.py b/abs/core/LinHES-config/mv_smolt.py new file mode 100755 index 0000000..5fd3722 --- /dev/null +++ b/abs/core/LinHES-config/mv_smolt.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +import logging +import mv_common + +def read_release(stype): + if stype == "LinHES": + rfile = "/etc/LinHES-release" + else: + rfile = "/etc/MythVantage-release" + + try: + f= open(rfile,'r') + releasename = f.readlines()[0] + f.close() + except: + logging.debug(" Couldn't open %s",rfile) + releasename = "unknown" + + return releasename + + +def setup_smolt_type(SystemType,Remotetype,RunFrontend,mythhome,stype): + logging.debug("____Start of setup_smolt_type____") + releasename = read_release(stype) + + if SystemType == "Standalone": + smoltsystem = 6 + MVRELEASE="%s (Standalone)" %releasename + elif SystemType == "Master_backend": + if RunFrontend == "1": + smoltsystem = 2 + MVRELEASE="%s (MBE with Frontend)" %releasename + else: + smoltsystem=1 + MVRELEASE="%s (MBE)" %releasename + elif SystemType == "Slave_backend": + if RunFrontend == "1" : + smoltsystem = 4 + MVRELEASE="%s (SLAVE with Frontend)" %releasename + else: + smoltsystem = 5 + MVRELEASE="%s (SLAVE)" %releasename + elif SystemType == "Frontend_only": + smoltsystem = 3 + MVRELEASE="%s ( Frontend only)" %releasename + + logging.debug(" smolt type is %s : %s", MVRELEASE,smoltsystem) + smoltfile = mythhome+"/.mythtv/smolt.info" + cmd = ''' echo "%s" > /etc/os_myth_release ''' %MVRELEASE + mv_common.runcmd(cmd) + + cmd = '''echo "systemtype=%s" > %s''' %(smoltsystem,smoltfile) + mv_common.runcmd(cmd) + + cmd = '''echo "remote=%s" >> %s ''' %(Remotetype,smoltfile) + mv_common.runcmd(cmd) + + logging.debug("__End of setup_smolt_type") + diff --git a/abs/core/LinHES-config/mv_software.py b/abs/core/LinHES-config/mv_software.py new file mode 100755 index 0000000..aabcf89 --- /dev/null +++ b/abs/core/LinHES-config/mv_software.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os, re + +def setup_software(systemconfig, data_config): + logging.info("____Start of Software install____") + postfix='' + if data_config.SYSTEMTYPE == "MythVantage": + #look for the installed prefix + cmd="pacman -Q mythtv-release-fixes" + rc = mv_common.runcmd(cmd) + if rc == 0: + postfix = "-release-fixes" + else: + postfix = "-svn" + + default_disabled = ("mythphone", "mytharchive", "mythbrowser", "mythnews", + "mythgame", "mythflix", "mythweather", + "mythzoneminder" ) + + default_installed=("mythcontrols", "mythgallery", "mythmovies", + "mythmusic", "mythsmolt", "mythvideo") + other_pkg=("miro", "mednafen", "romdb", "xine", "dvdcss", "webmin" , "fuppes", "foldingathome", "mythappletrailers", "mythstream", "mythvodka") + else: + default_disabled = ("mythphone", "mytharchive", "mythbrowser", "mythnews", + "mythgame", "mythflix", "mythweather", + "mythappletrailers", "mythstream", "mythvodka", + "mythzoneminder" ) + + default_installed=("mythcontrols", "mythgallery", "mythmovies", + "mythmusic", "mythsmolt", "mythvideo") + other_pkg=("miro", "mednafen", "romdb", "xine", "dvdcss", "webmin" , "fuppes", "foldingathome") + + for pkg in default_disabled: + pkgname=pkg+postfix + try: + if systemconfig[pkg] == "1": + mv_common.pacinstall(pkgname) + else: + mv_common.pacremove(pkgname) + except: + logging.debug(" ERROR-- %s is not defined", pkg) + + for pkg in default_installed: + try: + if systemconfig[pkg] == "0": + mv_common.pacremove(pkgname) + else: + mv_common.pacinstall(pkgname) + except: + logging.debug(" ERROR-- %s is not defined", pkg) + + for pkg in other_pkg: + try: + if systemconfig[pkg] == "1": + mv_common.pacinstall(pkg) + elif systemconfig[pkg] == "0": + mv_common.pacremove(pkg) + except: + logging.debug(" ERROR-- %s is not defined", pkg) + logging.info("__End Software\n ") diff --git a/abs/core/LinHES-config/mv_webuser.py b/abs/core/LinHES-config/mv_webuser.py new file mode 100755 index 0000000..a8517a8 --- /dev/null +++ b/abs/core/LinHES-config/mv_webuser.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +#import os + +def setup_web_auth(UseMythWEB_auth): + logging.info("____Start of setup_web_auth____") + if UseMythWEB_auth == str(1): + #enable auth + logging.info(" Enabling authorization for mythweb") + cmd='''sed -i "s/^.*include.*auth-inc.conf.*$/include \\"\/etc\/lighttpd\/auth-inc.conf\\"/g" /etc/lighttpd/lighttpd.conf''' + mv_common.runcmd(cmd) + else: + #disable auth + logging.info(" Disabling authorization for mythweb") + cmd='''sed -i "s/^.*include.*auth-inc.conf.*$/#include \\"\/etc\/lighttpd\/auth-inc.conf\\"/g" /etc/lighttpd/lighttpd.conf''' + mv_common.runcmd(cmd) + logging.debug("Restarting lighttpd") + cmd="sudo sv restart lighttpd" + mv_common.runcmd(cmd) + logging.info("__End of webauth\n") + diff --git a/abs/core/LinHES-config/myth_user_call b/abs/core/LinHES-config/myth_user_call new file mode 100644 index 0000000..0914b03 --- /dev/null +++ b/abs/core/LinHES-config/myth_user_call @@ -0,0 +1,174 @@ +#!/bin/bash +#Wrapper script to manage USERNAME accounts + web security +# myth_USERNAME_all -c add -u USERNAME +# myth_USERNAME_all -c delete -u USERNAME +# myth_USERNAME_all -c pass -u USERNAME -p pass +# myth_USERNAME_all -c web -u USERNAME -p pass + +INIT_CHECK=TRUE +FULL_CALL="$@" +function CHROOT_CHECK { + INIT=`ps -p 1 -o comm=` + if [ x$INIT = xrunit ] + then + CHROOT_NEEDED=FALSE + else + CHROOT_NEEDED=TRUE + fi +} + +function store_commands () { + echo "$FULL_CALL" >> /root/myth_user_call.out + chmod 600 /root/myth_user_call.out +} + + +function add_user() { + if [ $CHROOT_NEEDED = TRUE ] + then + echo "calling myth_call_user in chroot to add user" + store_commands + else + echo "adding user $USERNAME" + useradd -m -s /bin/bash $USERNAME -G audio,video,optical,storage,users + usermod -a -G mythtv $USERNAME + + fi + +} + + +function del_user() { + if [ $CHROOT_NEEDED = TRUE ] + then + echo "calling myth_call_user in chroot to delete user" + store_commands + else + echo "removing user $USERNAME" + userdel $USERNAME + fi + +} + + +function pass_change() { + if [ $CHROOT_NEEDED = TRUE ] + then + echo "calling myth_call_user in chroot to change password" + store_commands + else + echo "changing password for $USERNAME" + echo $USERNAME:$PASSWORD | chpasswd + fi + +} + + +function web_security { + + grep -q ${USERNAME}: /etc/lighttpd/lighttpd.user + if [ $? = 0 ] + then + #delete user + sed -i "/${USERNAME}\:/d" /etc/lighttpd/lighttpd.user + fi + echo "${USERNAME}:${PASSWORD}" >> /etc/lighttpd/lighttpd.user + +} + +function ARG_ERR() { + if [ x$OPTARG = "x" ] + then + echo "$SWITCH NEEDS AND ARG" + exit 11 + fi +} + + +function print_help { + + echo "Valid options are:" + echo " -c (add|delete|pass|web)" + echo " -u USERNAMEname" + echo " -p password" + exit 1 +} + +if [ $# -eq 0 ] +then + print_help +fi + +declare -r OPTSTRING="c:u:p:i" +while getopts "$OPTSTRING" SWITCH +do + case $SWITCH in + + c) ARG_ERR + OPERATION=$OPTARG + ;; + u) ARG_ERR + USERNAME=$OPTARG + ;; + p) ARG_ERR + PASSWORD=$OPTARG + ;; + i) INIT_CHECK=FALSE + + esac +done + +if [ $INIT_CHECK = TRUE ] +then + CHROOT_CHECK +else + CHROOT_NEEDED=FALSE +fi + +case $OPERATION in + add) + if [ x$USERNAME = x ] + then + print_help + fi + add_user + ;; + delete) + if [ x$USERNAME = x ] + then + print_help + fi + del_user + ;; + pass) + if [ x$USERNAME = x ] + then + print_help + fi + + if [ x$PASSWORD = x ] + then + print_help + fi + pass_change + ;; + + web) + if [ x$USERNAME = x ] + then + print_help + fi + + + if [ x$PASSWORD = x ] + then + print_help + fi + echo "adding webUSERNAME $USERNAME with pass $PASSWORD" + web_security + ;; + *) print_help + ;; +esac + + diff --git a/abs/core/LinHES-config/myth_user_call.py b/abs/core/LinHES-config/myth_user_call.py new file mode 100755 index 0000000..63915a4 --- /dev/null +++ b/abs/core/LinHES-config/myth_user_call.py @@ -0,0 +1,159 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +#Wrapper script to manage USERNAME accounts + web security +# myth_USERNAME_all -c add -u USERNAME +# myth_USERNAME_all -c delete -u USERNAME +# myth_USERNAME_all -c pass -u USERNAME -p pass +# myth_USERNAME_all -c web -u USERNAME -p pass + +import pexpect, sys, time +import os, re, getopt +import mv_common + + + + +def chroot_check(): + if not INIT_CHECK : + return False + cmd = '''ps -p 1 -o comm=''' + init = mv_common.runcmd_output(cmd).strip() + if init == "runit": + return False + else: + return True + + +def store_commands(full_call): + file_name = "/root/myth_user_call.out" + try: + f = open(file_name,'a') + except: + print "%s could not be opened" % file_name + sys.exit(1) + f.write(full_call) + f.write("\n") + f.close() + try: + os.chmod(600,file_name) + except: + pass + + +def add_user(username,full_call): + if chroot_check() : + print "calling myth_call_user in chroot to add user" + store_commands(full_call) + else: + print "Adding user %s" %username + cmd = '''useradd -m -s /bin/bash %s -G audio,video,optical,storage,users''' %username + mv_common.runcmd(cmd) + cmd = ''' usermod -a -G mythtv %s ''' %username + + +def del_user(username,full_call): + if chroot_check() : + print "calling myth_call_user in chroot to del user" + store_commands(full_call) + else: + print "Removing user %s" %username + cmd = '''userdel %s ''' %username + mv_common.runcmd(cmd) + + +def pass_change(username,password,full_call) : + if chroot_check() : + print "calling myth_call_user in chroot to change password" + store_commands(full_call) + else: + print "changing password for %s" %username + passwd = pexpect.spawn("/usr/bin/passwd %s" % username) + + for repeat in (1, 2): + passwd.expect("password: ") + passwd.sendline(password) + time.sleep(0.1) + +def web_security(username,password) : + file_name = "/etc/lighttpd/lighttpd.user" + file_contents = '' + if os.path.exists(file_name): + try: + f = open(file_name,'r') + file_contents = f.readlines() + except: + print " couldn't read %s" % file_name + try: + f = open(file_name,'w') + except: + print "%s could not be opened for writing" % file_name + return + + for line in file_contents: + if not re.search(username, line): + f.write(line) + line = "%s:%s" %(username, password) + f.write(line) + f.write("\n") + f.close() + + +def usage (): + print "Valid options are:" + print " -c (add|delete|pass|web)" + print " -u USERNAME" + print " -p password" + sys.exit(0) + +def main(argv): + global INIT_CHECK + full_call = "" + INIT_CHECK = True + try: + opts, args = getopt.getopt(argv, 'c:u:p:ih' ) + except getopt.GetoptError, why: + print why + usage() + print "exception happened" + sys.exit(2) + + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit(0) + elif opt in ("-c") : + module = arg + full_call += ''' -c %s ''' %re.escape(arg) + elif opt in ("-u") : + username = arg + full_call += ''' -u %s ''' %re.escape(arg) + elif opt in ("-p") : + password = arg + full_call += ''' -p %s ''' %re.escape(arg) + elif opt in ("-i") : + INIT_CHECK = False + full_call += ''' -i ''' + try: + username + except: + usage() + + if module == "add": + add_user(username,full_call) + elif module == "delete": + del_user(username,full_call) + elif module == "pass": + try: + password + except: + print "needs a password" + usage() + pass_change(username,password,full_call) + elif module == "web": + web_security(username,password) + else: + usage() + +if __name__ == "__main__": + main(sys.argv[1:]) + diff --git a/abs/core/LinHES-config/networkconfig.sh b/abs/core/LinHES-config/networkconfig.sh new file mode 100644 index 0000000..770aa98 --- /dev/null +++ b/abs/core/LinHES-config/networkconfig.sh @@ -0,0 +1,341 @@ +#!/bin/bash +#. /etc/profile +#. /etc/systemconfig +#BASE=/tmp +ETCNETDIR=$BASE/etc/net/ifaces + + + +function kill_dhcp () +{ +#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid +for i in ${BASE}/var/run/dhcpcd-*.pid +do + if [ -f ${i} ] + then + pid=`cat ${i}` + kill -9 $pid + rm -f ${i} + fi + if [ x$1 = xflush ] + then + for ifdev in eth0 wlan0 eth1 wlan1 + do + echo ${i} |grep $ifdev + status=$? + if [ $status = 1 ] + then + ip address flush $ifdev + fi + done + fi + +done + +} + +function kill_dhcp_chroot () +{ +#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid +for i in ${mountpoint}/var/run/dhcpcd-*.pid +do + if [ -f ${i} ] + then + pid=`cat ${i}` + kill -9 $pid + rm -f ${i} + fi +done + +} + + + +function setup_nameserver(){ +grep -q $1 ${BASE}/etc/resolv.conf +status=$? +if [ ! $status = 0 ] +then + echo "nameserver $1" >> ${BASE}/etc/resolv.conf +fi + +} + +function change_iface_state () { + if [ x$2 = xenabled ] + then + echo "setting $1 to active" + sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options + sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options + else + echo "setting $1 to inactive" + if [ -e $ETCNETDIR/$1/options ] + then + sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options + sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options + fi + /sbin/ifconfig $1 down + ip address flush $1 + fi + +} + +function setup_interfaces() { + local IS_WIRELESS + local ip + local netmask + local isactive + local dns + local UseDHCP + local GW + local ESSID + local KEY + local ENCRYPT + local TEMPNET + local MTU + IS_WIRELESS=false + + #local ip + TEMPNET="Hostip"$1 + echo $TEMPNET + eval ip=\$${TEMPNET} + + TEMPNET=Hostnetmask$1 + eval netmask=\$${TEMPNET} + netmask=`echo "$netmask" | cut -d " " -f1` + + TEMPNET=HostActive$1 + eval isactive=\$${TEMPNET} + + TEMPNET=HostDNS$1 + eval dns=\$${TEMPNET} + + TEMPNET="HostUSEDHCP"$1 + eval UseDHCP=\$${TEMPNET} + + TEMPNET=HostGW$1 + eval GW=\$${TEMPNET} + + TEMPNET=HOST_iswireless$1 + eval wireless=\$${TEMPNET} + + TEMPNET=HostMTU$1 + eval MTU=\$${TEMPNET} + + + + if [ x$wireless = x1 ] + then + IS_WIRELESS=TRUE + TEMPNET=HostESSID$1 + eval ESSID=\$${TEMPNET} + + TEMPNET="HostKey"$1 + eval KEY=\$${TEMPNET} + + TEMPNET=HostUseEncryption$1 + eval ENCRYPT=\$${TEMPNET} + fi + + + echo "Setup $1 in progress, wireless: $IS_WIRELESS" + + if [ ! -d $ETCNETDIR/$1 ] + then + mkdir -p $ETCNETDIR/$1 + fi + + if [ ! -f $ETCNETDIR/$1/options ] + then + cp -f $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options + fi + + if [ x$isactive = x1 ] + then + change_iface_state $1 enabled + #echo "setting $1 to active" + #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options + #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options + else + change_iface_state $1 disabled + #echo "setting $1 to inactive" + #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options + #sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options + fi + + if [ x$IS_WIRELESS = xTRUE ] + then + echo "setting $1 wireless" + sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' $ETCNETDIR/$1/options + #set the key and essid + echo "essid $ESSID" > $ETCNETDIR/$1/iwconfig + if [ x$ENCRYPT = x1 ] + then + echo "key $KEY" >> $ETCNETDIR/$1/iwconfig + fi + + else + echo "disabling wireless" + sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' $ETCNETDIR/$1/options + fi + + if [ x$UseDHCP = x0 ] + then + echo using dhcp + sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options + + else + echo "using static ip" + sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' $ETCNETDIR/$1/options + echo "default via $GW" > $ETCNETDIR/$1/ipv4route + echo "$ip$netmask" > $ETCNETDIR/$1/ipv4address + setup_nameserver $dns + fi + + if [ x$MTU = x ] + then + echo "MTU is blank, card will use default values" + sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink + else + echo "setting mtu for $1 to $MTU" + sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink + echo "mtu $MTU " >> /etc/net/ifaces/$1/iplink + fi +} + + +function find_active () { +#HostActiveeth1="1" +rm -f ${BASE}/etc/resolv.conf +if [ x$MYTHDHCP = x1 ] + then + #add 127.0.0.1 to /etc/resolv.conf + echo "search lan" > ${BASE}/etc/resolv.conf + echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf + fi + +for i in eth0 eth1 wlan0 wlan1 +do + CURRENTIF="HostActive"$i + eval IFSTATE=\$${CURRENTIF} + echo $IFSTATE "---" + echo $i + if [ x$IFSTATE = x1 ] + then + setup_interfaces $i + else + change_iface_state $i disabled + fi +done + +} + +function setup_hostname { +#set the hostname +if [ ! x$hostname = x ] +then + echo $hostname > ${BASE}/etc/hostname + cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname > /tmp/hosts + #cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname | grep -v $ip > /tmp/hosts + + if [ x$MYTHDHCP = x1 ] + then + echo "127.0.0.1 localhost " > ${BASE}/etc/hosts + echo "$MYTHIP $hostname " >> ${BASE}/etc/hosts + else + echo "127.0.0.1 $hostname localhost " > ${BASE}/etc/hosts + fi + cat /tmp/hosts >> ${BASE}/etc/hosts +fi + +kill_dhcp +} + +function vnc_check() { + CMDLINE=$(cat /proc/cmdline) + echo $CMDLINE |grep -q vnc + USEVNC=$? + echo $CMDLINE |grep -q nfsroot + NETBOOT=$? + echo $USEVNC + if [ ! x$USEVNC = x0 ] + then + echo "not using vnc" + if [ ! x$NETBOOT = x0 ] + then + echo "not using netboot" + else + echo "using netboot" + USEVNC=0 + fi + + else + echo " using vnc" + fi +} + +function setup_MYTH_vars { + TEMPMYTH="Hostip"$default_interface + #echo $TEMPMYTH + eval MYTHIP=\$${TEMPMYTH} + + TEMPMYTH="HostUSEDHCP"$default_interface + eval MYTHDHCP=\$${TEMPMYTH} + + + +} + + + + +function start_network { +if [ ! $USEVNC = 0 ] +then + /etc/net/scripts/network.init reload + /etc/net/scripts/network.init restart +else + echo "VNC/NETBOOT in use, will NOT restart network" +fi + +} + +function setup_network { + setup_MYTH_vars + setup_hostname + find_active +} + + +function stop_network { +if [ ! $USEVNC = 0 ] +then + echo "stopping the network" + kill_dhcp flush + ip address flush dev eth0 2>&1 >/dev/null + ip address flush dev eth1 2>&1 >/dev/null + ip address flush dev wlan0 2>&1 >/dev/null + ip address flush dev wlan1 2>&1 >/dev/null +else + echo "VNC/NETBOOT in use, will NOT restart network" +fi + +} + + +#this is used by the install process to start the network +function install_network_setup { + setup_MYTH_vars + setup_hostname + stop_network + find_active + start_network + +} + + + + + + + diff --git a/abs/core/LinHES-config/remove_service.sh b/abs/core/LinHES-config/remove_service.sh new file mode 100755 index 0000000..6cc4b4f --- /dev/null +++ b/abs/core/LinHES-config/remove_service.sh @@ -0,0 +1,8 @@ +#!/bin/bash +SERVICE_DIR=/var/service +SCRIPT_DIR=/etc/sv +if [ -e $SERVICE_DIR/$1 ] +then + echo "removing" + rm $SERVICE_DIR/$1 +fi diff --git a/abs/core/LinHES-config/restore_default_settings.sh b/abs/core/LinHES-config/restore_default_settings.sh new file mode 100755 index 0000000..dcf5e23 --- /dev/null +++ b/abs/core/LinHES-config/restore_default_settings.sh @@ -0,0 +1,362 @@ +#!/bin/bash +. /etc/profile +. /etc/systemconfig +shopt -s -o nounset +echo $@ >> /tmp/restore.out +#TEMPLATES="/usr/share/templates/settings" +TEMPLATES="$TEMPLATES/settings" +TABLES="settings keybindings" +MYTHDBUSER=mythtv +MYTHTVPASSWD=mythtv +declare -r OPTSTRING="c:e:t:d:h:s:a:z:Ho" +Thistemplate="" +declare -i OVERRIDE=0 +declare -i EVERYTHING=0 + + +function CMD_DEFINE () { + #add override check + if [ x$Thistemplate = xsyssettings -a $OVERRIDE -eq 1 ] + then + MYSQLCMD="mysql --local-infile -s -u$MYTHDBUSER -p$MYTHTVPASSWD -h$ovdbhost mythconverg -B --exec" + MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD -h$ovdbhost mythconverg -B --exec" + MYSQLCMD_UPDATE_HOST="UPDATE settings set data='$oldhostname' where value='HostMyhostname' and hostname=\"$hostname\";" + else + MYSQLCMD="mysql --local-infile -s -u$MYTHDBUSER -p$MYTHTVPASSWD -h$dbhost mythconverg -B --exec" + MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD -h$dbhost mythconverg -B --exec" + MYSQLCMD_UPDATE_HOST="select hostname from settings;" + fi +} + +function SQL_DEFINE () { + thostname=`echo ${hostname}|tr -C [:alpha:] _` + echo "Using $thostname for temp table postfix" + + #$1 is the table name + if [ $1 = "settings" ] + then + ALTERSQL="Alter table temp_${1}_${thostname} add unique ( value )" + else + ALTERSQL=";" + fi + + CREATESQL="create table temp_${1}_${thostname} like $1;" + COPY_TMP_SQL="replace into temp_${1}_${thostname} (select * from $1 where hostname=\"$hostname\");" + INSERTSQL="LOAD DATA local INFILE '/tmp/$1.txt' REPLACE INTO TABLE temp_${1}_${thostname} FIELDS TERMINATED BY '\t';" + #INSERTSQL="LOAD DATA local INFILE '$TEMPLATES/$Thistemplate/$1.txt' REPLACE INTO TABLE temp_${1}_${hostname} FIELDS TERMINATED BY '\t';" + DROPSQL="delete from $1 where hostname=\"$hostname\";" + COPY_BCK_SQL="replace into $1 (select * from temp_${1}_${thostname} where hostname=\"$hostname\");" + DROP_TABLE="Drop table temp_${1}_${thostname}" +} + +function ARG_ERR() { + if [ x$OPTARG = "x" ] + then + echo "$SWITCH NEEDS AND ARG" + exit 11 + fi +} + +function ALSADEVICE () { +#ALSA:hw:1,4 + if [ x$Audiotype = xALSA ] + then + SoundDevice=ALSA:$SoundDevice + MixerDevice="ALSA:default" + else + MixerDevice="/dev/mixer" + fi + +} + + + +if [ $# -eq 0 ] +then + echo "Valid options are:" + echo " -c (save|restore|load|uhostname|BECONFIG|ZIP|ACCESSCONTROL)" + echo " -t (syssettings|hostsettings)" + echo " -d databasename" + echo " -h hostname" + echo " -s systemtype (master|slave|standalone|frontendonly)" + echo " -a ipaddress" + echo " -z zipcode" + echo " -o override (only used upgrade installs)" + exit 1 +fi + + + + +while getopts "$OPTSTRING" SWITCH +do + case $SWITCH in + # \?) echo "unkown option" + # exit 11 ;; + c) echo "$SWITCH" "$OPTARG" + ARG_ERR + OPERATION=$OPTARG + ;; + t) echo "$SWITCH" "$OPTARG" + ARG_ERR + Thistemplate=$OPTARG + + if [ x$Thistemplate = x"syssettings" ] + then + echo "template is syssettings" + loadhost=false + elif [ x$Thistemplate = x"hostsettings" ] + then + echo "template is hostsettings" + Thistemplate=syssettings + loadhost=true + else + echo "invalid template name" + exit 1 + fi + ;; + d) echo "$SWITCH" "$OPTARG" + ARG_ERR + if [ $OVERRIDE = 1 ] + then + ovdbhost=$OPTARG + else + dbhost=$OPTARG + fi + ;; + h) echo "$SWITCH" "$OPTARG" + ARG_ERR + if [ $OVERRIDE = 1 ] + then + oldhostname=$hostname + hostname=$OPTARG + else + hostname=$OPTARG + fi + + ;; + s) echo "$SWITCH" "$OPTARG" + ARG_ERR + SYSTEMTYPE=$OPTARG + ;; + a) echo "$SWITCH" "$OPTARG" + ARG_ERR + IP_ADDRESS=$OPTARG + ;; + z) echo "$SWITCH" "$OPTARG" + ARG_ERR + ZIPCODE=$OPTARG + ;; + o) OVERRIDE=1 + ;; + + esac +done + +echo $OVERRIDE + +#setup the Mysql commands +CMD_DEFINE + +$MYSQLCMD_C "show tables" > /dev/null +status=$? +if [ $status = 1 ] +then + echo "$@ failed" + echo "$@ failed" >> /tmp/restore.out + exit 1 +fi + + + + + + + +case $OPERATION in + + restore) + #used to restore settings from syssettings + if [ -d $TEMPLATES/$Thistemplate ] + then + cd $TEMPLATES/$Thistemplate + if [ $loadhost = false ] + then + for i in $TABLES + do + SQL_DEFINE $i + sed -e "s/REPLACEME/$hostname/g" $i.txt > /tmp/$i.txt + #echo $MYSQLCMD "$SELECTSQL" + echo $i + $MYSQLCMD "$CREATESQL" + $MYSQLCMD "$ALTERSQL" + $MYSQLCMD "$COPY_TMP_SQL" + $MYSQLCMD "$INSERTSQL" + $MYSQLCMD "$DROPSQL" + $MYSQLCMD "$COPY_BCK_SQL " + $MYSQLCMD "$DROP_TABLE " + #rm /tmp/$i.txt + done + fi + if [ $loadhost = true ] + then + #only load the settings table with values HOST + i=settings + SQL_DEFINE $i + sed -e "s/REPLACEME/$hostname/g" $i.txt > /tmp/$i.txt + echo $i + $MYSQLCMD "$CREATESQL" + $MYSQLCMD "$ALTERSQL" + $MYSQLCMD "$INSERTSQL" + $MYSQLCMD "$COPY_TMP_SQL" + $MYSQLCMD "$DROPSQL" + $MYSQLCMD "$COPY_BCK_SQL" + $MYSQLCMD "$DROP_TABLE " + fi + else + echo "couldn't find $TEMPLATES/$Thistemplate" + fi + ;; + + save) + + if [ ! -d $TEMPLATES/$Thistemplate ] + then + mkdir -p $TEMPLATES/$Thistemplate + fi + + cd $TEMPLATES/$Thistemplate + for i in $TABLES + do + EXTRACLAUSE="" + case $i in + settings) + EXTRACLAUSE="and not (value like \"BackendServerIP\") and not (value like \"locale\") order by value" + SQL="select value,data,'REPLACEME' as hostname from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;" + # SQL="select * from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;" + $MYSQLCMD_C "$SQL" > $TEMPLATES/$Thistemplate/$i.txt + ;; + keybindings) + SQL="select context,action,description,keylist,'REPLACEME' as hostname from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;" + $MYSQLCMD_C "$SQL" > $TEMPLATES/$Thistemplate/$i.txt + ;; + esac + # sed -e "s/$hostname/REPLACEME/g" $i > $i.txt && rm $i + + done + ;; + + load) + + #will load both default_1 and default_2 unless either file is not found + for i in default_1 default_2 + do + if [ -f $TEMPLATES/$i/settings.txt ] + then + echo $i + for tablename in $TABLES + do + #create table + CREATESQL="create table IF NOT EXISTS ${tablename}_${i} like $tablename;" + $MYSQLCMD_C "$CREATESQL" + #truncate table + TRUNCATESQL="truncate ${tablename}_${i} " + $MYSQLCMD_C "$TRUNCATESQL" + #load table + INSERTSQL="LOAD DATA local INFILE '$TEMPLATES/$i/$tablename.txt' REPLACE INTO TABLE ${tablename}_${i} FIELDS TERMINATED BY '\t';" + $MYSQLCMD_C "$INSERTSQL" + #update_hostname + UPDATEHOSTNAMESQL="update ${tablename}_${i} set hostname='$i' ; " + $MYSQLCMD_C "$UPDATEHOSTNAMESQL" + done + else + + echo "couldn't find $TEMPLATES/$i/settings.txt template to load" + fi + CREATESQL="create table IF NOT EXISTS settings_user1 like settings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS settings_user2 like settings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS settings_user3 like settings;" + $MYSQLCMD_C "$CREATESQL" + + CREATESQL="create table IF NOT EXISTS keybindings_user1 like keybindings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS keybindings_user2 like keybindings;" + $MYSQLCMD_C "$CREATESQL" + CREATESQL="create table IF NOT EXISTS keybindings_user3 like keybindings;" + $MYSQLCMD_C "$CREATESQL" + done +;; + + + + BECONFIG) + if [ $SYSTEMTYPE = "master" ] + then + $MYSQLCMD_C "UPDATE settings set data='${IP_ADDRESS}' where value='MasterServerIP';" + $MYSQLCMD_C "delete from settings where value='BackendServerIP' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='${IP_ADDRESS}' , value='BackendServerIP' , hostname=\"$hostname\";" + fi + + if [ $SYSTEMTYPE = "slave" ] + then + $MYSQLCMD_C "delete from settings where value='BackendServerIP' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='${IP_ADDRESS}' , value='BackendServerIP' , hostname=\"$hostname\";" + fi + ;; + ZIP) + $MYSQLCMD_C "delete from settings where value='locale' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$ZIPCODE' , value='locale' , hostname=\"$hostname\";" + $MYSQLCMD_C "delete from settings where value='MythMovies.ZipCode' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$ZIPCODE', value='MythMovies.ZipCode' , hostname=\"$hostname\";" + ;; + MUSICFRONT) + ALSADEVICE + $MYSQLCMD_C "delete from settings where value='AudioOutputDevice' and hostname=\"$hostname\";" + $MYSQLCMD_C "delete from settings where value='MixerDevice' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$SoundDevice', value='AudioOutputDevice' , hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$MixerDevice', value='MixerDevice' , hostname=\"$hostname\";" + #need to reload the settings. + systemconfig.sh reloadfe + ;; + MUSICMYTH) + ALSADEVICE + $MYSQLCMD_C "delete from settings where value='MusicAudioDevice' and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='$SoundDevice', value='MusicAudioDevice' , hostname=\"$hostname\";" + ;; + uhostname) + #used when the hostname is changed. + TABLES="settings capturecard keybindings storagegroup recorded" + for i in $TABLES + do + USQL="update $i set hostname=\"$oldhostname\" where hostname=\"$hostname\" ;" + $MYSQLCMD_C "$USQL" + done + + ;; + USERJOBALLOW) + SQL="update settings set data='1' where value like 'JobAllowUserJob%' and hostname=\"$hostname\" ;" + $MYSQLCMD_C "$SQL" + ;; + + ACCESSCONTROL) + LIST="Hostaccessnetwork Hostaccesshostype HostaccesshostypeSystemtype Hostaccessmisc Hostaccesssleep Hostaccessadvanced HostaccessadvancedX Hostaccesssound" + + for i in $LIST + do + $MYSQLCMD_C "delete from settings where value=\"$i\" and hostname=\"$hostname\";" + $MYSQLCMD_C "REPLACE INTO settings set data='1', value=\"$i\" , hostname=\"$hostname\";" + done + SQL="update settings set data='0' where value='HostaccesshostypeSystemtype' and hostname=\"$hostname\" ;" + $MYSQLCMD_C "$SQL" + SQL="update settings set data='0' where value='Hostaccessuser' and hostname=\"$hostname\" ;" + $MYSQLCMD_C "$SQL" + ;; + esac + +#SELECT * INTO OUTFILE 'data.txt' +# FIELDS TERMINATED BY ',' +# FROM table2; + + diff --git a/abs/core/LinHES-config/restore_km_db_chroot.sh b/abs/core/LinHES-config/restore_km_db_chroot.sh new file mode 100644 index 0000000..e72e8c2 --- /dev/null +++ b/abs/core/LinHES-config/restore_km_db_chroot.sh @@ -0,0 +1,61 @@ +#!/bin/bash +. /etc/profile +. /etc/systemconfig +. $MV_ROOT/bin/install_functions.sh + +myhost=$hostname +hostname $myhost +mount -t proc none /proc +DBFILE=$1 + +if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + then + #restore database + pacman --noconfirm -Sf mysql + status=1 + mysqlstatus=1 + while [ ! $status = 0 ] + do + /etc/rc.d/mysqld stop + sleep 1 + /etc/rc.d/mysqld start + mysqlstatus=$? + if [ $mysqlstatus = 0 ] + then + mysql -e "show databases;" + showstatus=$? + if [ $showstatus = 0 ] + then + #load database + pacman --noconfirm -R mythdb-initial + pacman --noconfirm -S mythdb-initial + + if [ -f $DBFILE ] + then + echo "restoring old database" + gunzip -c $DBFILE > /tmp/mythconverg.sql + mysql mythconverg < /tmp/mythconverg.sql + update_db_settings HostServiceMythWEB "1" + echo 'UseMythWEB="1"' >> /etc/systemconfig + else + echo "Could not restore old database, mythconverg.sql is missing." + touch /tmp/.upgrade_db_failed + fi + + if [ -d /data/srv/mysql/mythconverg ] + then + status=0 + fi + fi + fi + done + rm -f /tmp/mythconverg.sql + else + exit 0 + fi + +#/etc/rc.d/mysqld stop +#umount /proc + + + diff --git a/abs/core/LinHES-config/soundconfig.sh b/abs/core/LinHES-config/soundconfig.sh new file mode 100755 index 0000000..75998d6 --- /dev/null +++ b/abs/core/LinHES-config/soundconfig.sh @@ -0,0 +1,254 @@ +#!/bin/bash +. /etc/systemconfig +. /etc/profile +echo $@ >/tmp/audio.call +#set -x +BASE="" +. /etc/profile +#TEMPLATES="/usr/share/templates" +#TESTFILE="$TEMPLATES/audio/space_battle_A.wav" +TESTFILE="/usr/share/sounds/alsa/Front_Center.wav" +OSSinstalled="false" + +function testaudio () { + +ossplay -d$AUDIODEVICE $TESTFILE + +} + +function load_alsa() { + + remove_service.sh alsa-utils +# cd /lib/modules/2.6.21-STB + KER=`uname -r` + cd /lib/modules/$KER/kernel/ + tar -xvf /lib/modules/alsa-$KER.tar + pacman -Sf --noconfirm alsa-lib + + depmod -a + cd - + udevadm trigger + udevadm settle + udevadm trigger + + add_service.sh alsa-utils + sleep 4 + sv start alsa-utils +} + + +function unload_alsa () { +#kill $(lsof -t /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/*) && modprobe -r $(lsmod |grep ^snd |awk '{print $1}') + sv stop alsa-utils + remove_service.sh alsa-utils + rm -rf /dev/adsp* + rm -rf /dev/snd/* + rm -rf /dev/audio + modprobe -r $(lsmod |grep ^snd |awk '{print $1}') +} + +function unload_oss { + sv stop oss + soundoff + rm -rf /dev/dsp* + rm -rf /dev/oss* + rm -rf /dev/sndstat + remove_service.sh oss +} + +function installOSS { + echo "installing oss" + pacman -Q oss 2>/dev/null + if [ ! $? = 0 ] + then + pacman --noconfirm -Sf oss + fi + add_service.sh oss + sleep 4 + sv start oss +} + + +function SYNCXINE { +echo "modify xine config file" + if [ -f /data/home/mythtv/.xine/config ] + then + cp -f /data/home/mythtv/.xine/config $TEMPLATES/xine.config + else + cp $TEMPLATES/xine.config.template $TEMPLATES/xine.config + fi + + if [ x$Audiotype = xOSS ] + then + DEVICENUMBER=`echo $SoundDevice|awk -F/ ' { print $3 } '|tr -d dsp ` + sed -e "s/^.*audio.driver.*$/audio.driver:oss/" \ + -e "s/^.audio.device.oss_device_name.*$/audio.device.oss_device_name:\/dev\/dsp/" \ + -e "s/^.audio.devic.oss_device_number.*$/audio.device.oss_device_number:$DEVICENUMER/" \ + -e "s/^.*audio.output.speaker_arrangement:.*$/Audio.output.speaker_arrangement:PassThrough/" \ + $TEMPLATES/xine.config > /data/home/mythtv/.xine/config + else + cp $TEMPLATES/xine.config /data/home/mythtv/.xine/config + fi + +} + +function SYNCMPLAYER { +echo "modify mplayer not implmented yet" +} + +function SYNCMYTHMUSIC { +echo "sync mythmusic" +$MV_ROOT/bin/restore_default_settings.sh -c MUSICMYTH +} + +function SYNCMYTHFRONTEND { +echo "sync mythfrontend" +$MV_ROOT/bin/restore_default_settings.sh -c MUSICFRONT +} + + +function checkOSSinstalled () { + ossinfo |grep Version |grep -q OSS >/dev/null + resultcode=$? + echo $resultcode + if [ $resultcode = 0 ] + then + OSSinstalled='true' + else + OSSinstalled='false' + fi +} + +function sound_config_system { + + if [ x$syncXine = x1 ] + then + SYNCXINE + fi + if [ x$syncMplayer = x1 ] + then + SYNCMPLAYER + fi + if [ x$syncMythMusic = x1 ] + then + SYNCMYTHMUSIC + fi + if [ x$syncMythFrontend = x1 ] + then + SYNCMYTHFRONTEND + fi + +} + +function loadsound (){ + checkOSSinstalled + if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] + #then + # if [ $OSSinstalled = "false" ] + then + while [ $OSSinstalled = "false" ] + do + unload_alsa + rm /tmp/.alsatest + installOSS + installOSS + sleep 2 + checkOSSinstalled + done + # fi + else + touch /tmp/.alsatest + unload_oss + load_alsa + load_alsa + rm /tmp/.alsatest + + fi + +} + + + + +#####################MAIN PROGRAM########################## + +declare -r OPTSTRING="i:t:d:" + +if [ $# -eq 0 ] +then + echo "Valid options are:" + echo " -i (oss|alsa) oss or alsa subsystem " + echo " -t (test|real|LOAD) " + echo " -d device" + exit 1 +fi + + + + +while getopts "$OPTSTRING" SWITCH +do + case $SWITCH in + \?) echo "unkown option" + exit 11 ;; + i) echo "$SWITCH" "$OPTARG" + AUDIOTYPE="$OPTARG" + ;; + d) echo "$SWITCH" "$OPTARG" + AUDIODEVICE=$OPTARG + ;; + t) echo "$SWITCH" "$OPTARG" + SOUNDOPTYPE="$OPTARG" + if [ x"$OPTARG" = xtest ] + then + TEST=true + else + TEST=false + fi + + + ;; + + esac +done + + + + +case $SOUNDOPTYPE in + REAL|real ) + loadsound + sound_config_system + ;; + test|TEST) + echo $@ > /tmp/audio.test + #loadsound + if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ] + then + echo "testing OSS $AUDIODEVICE " + ossplay -d$AUDIODEVICE $TESTFILE + else + echo "testing ALSA $AUDIODEVICE " + aplay --device=$AUDIODEVICE $TESTFILE + fi + + ;; + + LOAD|load) + loadsound + ;; + esac + + +exit 0 + + + + + + + + + + + diff --git a/abs/core/LinHES-config/startx b/abs/core/LinHES-config/startx new file mode 100755 index 0000000..75ba06a --- /dev/null +++ b/abs/core/LinHES-config/startx @@ -0,0 +1,29 @@ +#!/bin/bash +. /etc/profile + +export USER=root +export HOME=/root +#TEMPLATES=/usr/share/templates + +CMDLINE=$(cat /proc/cmdline) +TEMPVAR=${CMDLINE#*ip=} +IP=${TEMPVAR%% *} +echo $CMDLINE |grep -q vnc +USEVNC=$? + +if [ x$USEVNC = x1 ] +then + $MV_ROOT/bin/xconfig.sh + cat /etc/X11/xorg.conf | sed -e 's/dev\/mouse/dev\/psaux/g'> /root/xorg.conf.install + startx /root/live-install.sh -- -logverbose 6 -config /root/xorg.conf.install -allowMouseOpenFail + else + #VNC + pacman -Sf --noconfirm tightvnc + cd /root + mkdir .vnc + echo mythvantage |vncpasswd -f > /root/.vnc/passwd + chmod 500 /root/.vnc/passwd + rm /root/.vnc/xstartup + ln -s /root/live-install.sh /root/.vnc/xstartup + vncserver +fi diff --git a/abs/core/LinHES-config/systemconfig.py b/abs/core/LinHES-config/systemconfig.py new file mode 100755 index 0000000..c559e09 --- /dev/null +++ b/abs/core/LinHES-config/systemconfig.py @@ -0,0 +1,243 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import sys, os, commands, glob, time +import getopt, re, MySQLdb +import logging +import mv_common , mv_network +import inspect +#____________________________________________setup the logging______________________________________________________ +LOG_FILENAME = '/tmp/systemconfig.log' +DEBUGLOG = '/tmp/systemconfig_debug.log' +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%m-%d %H:%M', + filename=DEBUGLOG, + filemode='w') +# define a Handler which writes INFO messages or higher to the sys.stderr +console = logging.StreamHandler() +console.setLevel(logging.INFO) +# set a format which is simpler for console use +#formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +formatter = logging.Formatter("%(message)s") +# tell the handler to use this format +console.setFormatter(formatter) +# add the handler to the root logger +logging.getLogger('').addHandler(console) + +#infoformatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") +infoformatter = logging.Formatter("%(message)s") +infofile = logging.FileHandler(LOG_FILENAME, 'w') +infofile.setFormatter(infoformatter) +infofile.setLevel(logging.INFO) +logging.getLogger('').addHandler(infofile) + + +def usage(): + logging.info("tell people how to use this") + +def setup_x(systemconfig): + cmd = "%s/bin/xconfig.sh" %systemconfig["MVROOT"] + mv_common.runcmd(cmd) + +def main(argv): + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + + global cmdmodule + global systemconfig + systemconfig["MVROOT"]=MVROOT + restartlcd = False + cmdmodule={"misc":False , "sleep":False , "hostype":False , "hostypec":False , "advanced":False , "audio":False , "network":False , "advancedX":False , "webuser":False , "restartfe":False , "reloadfe":False , "ddns":False , "screensaver":False , "ir":False , "this_is_install":False , "user":False, "software":False, "plugins":False, "smolt":False, "all":False, "dhcp_request":False } + try: + opts, args = getopt.getopt(argv, 'c:hm:d:', ["help","modules" ] ) + except getopt.GetoptError, why: + print why + usage() + print "exception happened" + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit(0) + elif opt in ("-m"): + for i in arg.split(","): + cmdmodule[i]=True + elif opt in ("-d"): + dhcp_dev = arg + + + if cmdmodule["this_is_install"] or cmdmodule["hostypec"]: + systemconfig["hostypec"] = True + cmdmodule["smolt"] = True + + systemconfig["mythip"] = mv_network.setup_MYTH_IP(systemconfig) + systemconfig["mythdhcp"] = mv_network.setup_MYTH_DHCP(systemconfig) + systemconfig["mythgw"] = mv_network.setup_MYTH_DHCP(systemconfig) + systemconfig["mythdns"] = mv_network.setup_MYTH_DHCP(systemconfig) + + if cmdmodule["all"]: + logging.info("*** WILL RUN ALL MODULES ***") + cmdmodule["hostype"] = True + cmdmodule["ir"]= True + cmdmodule["network"] = True + cmdmodule["audio"] = True + cmdmodule["misc"] = True + cmdmodule["sleep"] = True + cmdmodule["webuser"] = True + cmdmodule["ddns"] = True + cmdmodule["screensaver"] = True + cmdmodule["advanced"] = True + cmdmodule["software"] = True + cmdmodule["advancedX"] = True + cmdmodule["smolt"] = True + cmdmodule["user"] = True + + + if cmdmodule["hostype"]: + import mv_hostype + cmdmodule["advancedX"] = True + setup_x(systemconfig) + cmdmodule["ir"] = True + mv_hostype.hostypeprint(systemconfig) + cmdmodule["smolt"] = True + + if cmdmodule["network"]: + restartfe = mv_network.setup_network(systemconfig, cmdmodule["this_is_install"]) + if restartfe == True : + logging.debug(" Setting the frontend to restart due to network change") + cmdmodule["restartfe"] = True + + + + if cmdmodule["ir"] == True: + import mv_ir + restart = mv_ir.setup_ir(systemconfig,data_config) + restartfe = restart[0] + restartlcd = restart[1] + if restartfe == True : + logging.debug(" Setting the frontend to restart due to lirc change") + cmdmodule["restartfe"] = True + cmdmodule["smolt"] = True + + + if cmdmodule["audio"] == True: + logging.debug("______Start of Audio Configuration______") + if not systemconfig["Audiotype"] == "tinker": + cmd="%s/bin/soundconfig.sh -t real -i %s -d %s" %(MVROOT,systemconfig["Audiotype"],systemconfig["SoundDevice"]) + mv_common.runcmd(cmd) + else: + logging.debug(" Tinker mode(audio), not changing configuration") + logging.debug("__End of audio") + + if cmdmodule["misc"]: + import mv_misc + mv_misc.setup_zip(MVROOT,systemconfig["zipcode"]) + mv_misc.setup_tz(systemconfig["timezone"],systemconfig["TEMPLATES"]) + mv_misc.setup_nfs(systemconfig) + + if cmdmodule["sleep"]: + import mv_misc + mv_misc.setup_sleep(systemconfig) + + if cmdmodule["webuser"]: + import mv_webuser + mv_webuser.setup_web_auth(systemconfig["UseMythWEB_auth"]) + + if cmdmodule["ddns"]: + print " LOOK FOR DDNS" + + if cmdmodule["screensaver"]: + import mv_screensaver + mv_screensaver.setup_screensaver(systemconfig, data_config) + + if cmdmodule["advanced"]: + import mv_advanced + mv_advanced.setup_advanced(systemconfig, data_config) + + if cmdmodule["software"] or cmdmodule["plugins"]: + import mv_software + mv_software.setup_software(systemconfig, data_config) + + if cmdmodule["advancedX"]: + setup_x(systemconfig) + + if cmdmodule["restartfe"]: + mv_common.restartfe(restartlcd) + + if cmdmodule["reloadfe"]: + mv_common.reloadfe(systemconfig["dbhost"],restartlcd) + + if cmdmodule["smolt"]: + import mv_smolt + mv_smolt.setup_smolt_type(systemconfig["SystemType"], + systemconfig["Remotetype"], + systemconfig["RunFrontend"], + data_config.MYTHHOME, + data_config.SYSTEMTYPE) + + if cmdmodule["user"]: + logging.info("____Start of ssh user____") + if systemconfig["rootSSH"] == "1" : + logging.info(" Allowing ssh access for root") + cmd = '''sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin yes/" /etc/ssh/sshd_config''' + mv_common.runcmd(cmd) + else: + logging.info(" Removing ssh access for root") + cmd = '''sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin no/" /etc/ssh/sshd_config''' + mv_common.runcmd(cmd) + logging.info("__End of ssh user\n") + + if cmdmodule["dhcp_request"]: + cmd = '''dhcpcd -t4 -h' ' -Td %s > /tmp/mvnetwork.dhcpinfo ''' %dhcp_dev + mv_common.runcmd(cmd) + + +if __name__ == "__main__": + + config_file = "mv_config" + data_config = __import__(config_file, globals(), locals(), []) + #Read in systemconfig + global systemconfig + systemconfig = {"hostypec":False} + file_name = "/etc/systemconfig" + try: + config_file = open(file_name) + except: + logging.critical("%s could not be opened", file_name) + sys.exit(1) + + for line in config_file: + line = line.strip() + if line and line[0] is not "#" and line[-1] is not "=": + var, val = line.rsplit("=", 1) + val = val.strip('"') + systemconfig[var.strip()] = val.strip() + try: + systemconfig["TEMPLATES"] = os.environ["TEMPLATES"] + except: + logging.critical(" *TEMPLATES is not defined") + logging.critical(" *using default value") + systemconfig["TEMPLATES"] = "/usr/MythVantage/templates" + + logging.debug("______START OF DEBUG______") + main(sys.argv[1:]) + logging.debug("______cmd line options______") + for i in cmdmodule.items(): + logging.debug (i) + logging.debug("______systemconfig______") + for i in systemconfig.items(): + logging.debug(i) + #pass + + + + + + + + + + diff --git a/abs/core/LinHES-config/systemconfig.sh b/abs/core/LinHES-config/systemconfig.sh new file mode 100755 index 0000000..218f705 --- /dev/null +++ b/abs/core/LinHES-config/systemconfig.sh @@ -0,0 +1,19 @@ +#!/bin/bash +################################################################### +#Script to configure your system based off the values in /etc/systemconfig +#Any changes made to config files will be removed when systemconfig.sh is run +# +#JM +echo $@ >/tmp/systemconfig.call +echo "----------------------start of systemconfig $@ ----------------------" +. /etc/profile +. $MV_ROOT/bin/networkconfig.sh +postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype` + +systemconfig.py -m $@ +rc=$? +echo "systemconfig.py exit code $rc" +exit $rc + + + diff --git a/abs/core/LinHES-config/timezip.py b/abs/core/LinHES-config/timezip.py new file mode 100755 index 0000000..bf6b389 --- /dev/null +++ b/abs/core/LinHES-config/timezip.py @@ -0,0 +1,232 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# import MySQL module +#used to import the zipcode/timezone/nfs info fromMBE +import MySQLdb +import sys +import getopt +import socket + + +def usage(): + print " -h --help" + print " -d --installdb" + print " -m --masterdb" + print " -n --hostname of current machine" + +def printvars(): + print "masterdb: " + masterdb + print "installdb:" + installdb + print "hostname: " + thishostname + print "BEhostname:" + BEhostname + print "zipcode:" + zipcode + print "timezone:" + tz + print "timezone region:" + tz_region + print "timezone subregion:" + tz_subregion + print "nfsip:" + nfsip + print "nfstoggle:" + nfstoggle + print "nfsmount:" + nfsmount + print "hobbitclient:" + hobbitclient +# connect +def selectvars(): + + global BEhostname + global zipcode + global tz + global tz_region + global tz_subregion + global nfsip + global nfstoggle + global nfsmount + global hobbitclient + + db = MySQLdb.connect(host=masterdb, user="mythtv", passwd="mythtv", db="mythconverg") + # create a cursor + cursor = db.cursor() + # execute SQL statement + cursor.execute("select hostname from settings where value='BackendServerIP' and data=(%s)",(masterdb)) + result = cursor.fetchone() + try: + BEhostname=result[0] + except TypeError: + BEhostname="" + + cursor.execute("select data from settings where value='HostZipcode' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + zipcode = result[0] + except TypeError: + zipcode="" + + cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + nfsip=result[0] + except TypeError: + nfsip="" + + cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + nfstoggle=result[0] + except TypeError: + nfstoggle="" + + cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + nfsmount=result[0] + except TypeError: + nfsmount="" + + cursor.execute("select data from settings where value='HostTimeZone' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + tz=result[0] + except TypeError: + tz="" +########## + cursor.execute("select data from settings where value='HostTimeZoneRegion' and hostname=(%s)",(BEhostname)) + result = cursor.fetchone() + try: + tz_region=result[0] + except TypeError: + tz_region="" + tempsubregion="HostTimeZoneRegion_" + tz_region + + cursor.execute("select data from settings where value=%s and hostname=(%s)",(tempsubregion,BEhostname)) + result = cursor.fetchone() + try: + tz_subregion=result[0] + except TypeError: + tz_subregion="" +############### + if ( thishostname != BEhostname ): + cursor.execute("select data from settings where value='GlobalServiceHobbitserver'") + result = cursor.fetchone() + try: + hobbitclient=result[0] + except TypeError: + hobbitclient="1" + + + +def insertvars(): + + db = MySQLdb.connect(host=installdb, user="mythtv", passwd="mythtv", db="mythconverg") + cursor = db.cursor() +#inserting the zipcode + cursor.execute("select * from settings where value='HostZipcode' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( zipcode!="" ): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostZipcode',(%s),(%s))",(zipcode,thishostname)) + print "inserting zipcode" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostZipcode'",(zipcode,thishostname)) + print "updating zipcode" + +#inserting the timezone + cursor.execute("select * from settings where value='HostTimeZone' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZone',(%s),(%s))",(tz,thishostname)) + print "inserting timezone" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZone'",(tz,thishostname)) + print "updating timezone" + + cursor.execute("select * from settings where value='HostTimeZoneRegion' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZoneRegion',(%s),(%s))",(tz_region,thishostname)) + print "inserting timezone region" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZoneRegion'",(tz_region,thishostname)) + print "updating timezone region" + + tempsubregion="HostTimeZoneRegion_" + tz_region + cursor.execute("select * from settings where value=%s and hostname=(%s)",(tempsubregion,thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ((%s),(%s),(%s))",(tempsubregion,tz_subregion,thishostname)) + print "inserting timezone subregion" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value=(%s)",(tempsubregion,tz_subregion,thishostname)) + print "updating timezone subregion" + + +#start of NFSIP + cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( nfsip != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostCentralNFSIP',(%s),(%s))",(nfsip,thishostname)) + print "inserting nfsip" + + if (nfstoggle != ""): + cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostHaveCentralNFS',(%s),(%s))",(nfstoggle,thishostname)) + print "inserting nfstoggle" + + if ( nfsmount !="") : + cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostNFSmountpoint',(%s),(%s))",(nfsmount,thishostname)) + print "inserting nfsmountpoint" + +#hobbitclient + cursor.execute("select * from settings where value='HostServiceHobbitclient' and hostname=(%s)",(thishostname)) + result = cursor.fetchone() + if ( tz != ""): + if (result == None): + cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostServiceHobbitclient',(%s),(%s))",(hobbitclient,thishostname)) + print "inserting hobbitcleint" + else: + cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostServiceHobbitclient'",(hobbitclient,thishostname)) + print "updating hobbitclient" + + +def main(argv): + global masterdb + global installdb + global thishostname + thishostname="" + global BEhostname + global zipcode + global tz + global tz_region + global tz_subregion + + global nfsip + global hobbitclient + try: + opts, args = getopt.getopt(argv, "hm:d:n:", ["help", "masterdb=", "installdb=" , "hostname=" ] ) + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit() + elif opt in ( "-d" , "--installdb"): + installdb = arg + elif opt in ("-m", "--masterdb"): + masterdb = arg + elif opt in ("-n", "--hostname"): + thishostname = arg + + if ( thishostname == "" ): + thishostname = socket.gethostname() + + selectvars() + printvars() + insertvars() +if __name__ == "__main__": + main(sys.argv[1:]) + diff --git a/abs/core/LinHES-config/xconfig.sh b/abs/core/LinHES-config/xconfig.sh new file mode 100755 index 0000000..2fad821 --- /dev/null +++ b/abs/core/LinHES-config/xconfig.sh @@ -0,0 +1,363 @@ +#!/bin/bash +#SET DISPLAYCARD to force a cardtype +#SET DISPLAYRES to force Xres, ENV takes precendent over cmdline +#displayres=cmdline +#NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel unichrome-dri xf86-video-unichrome xf86-video-mga xf86-video-savage xf86-video-trident" +NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel xf86-video-mga xf86-video-savage xf86-video-trident unichrome-dri xf86-video-openchrome" +BASE="" +. /etc/profile +NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt" +#TEMPLATES="/usr/share/templates" +MYTHHOME=$BASE/home/mythtv + +function Xvalues { + CMDLINE=$(cat /proc/cmdline) + echo "$CMDLINE" | grep -q forceXvesa + if [ $? = 0 ] + then + VGACARDTYPE=vesa + Xcardtype=$VGACARDTYPE + else + VGACARDTYPE=`lspci | grep -i vga | sort -r | head -n 1 | cut -d: -f3 | cut -d" " -f2` + VGAPCIID=`lspci | grep -i vga | sort -r | head -n 1 | cut -d" " -f1` + CARDID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f2` + VENDORID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f1` + fi + #force VGACARDTYPE + if [ ! x$DISPLAYCARD = x ] + then + VGACARDTYPE=$DISPLAYCARD + Xcardtype=$VGACARDTYPE + fi + echo "Will use $VGACARDTYPE" + currentmode=`cat "$BASE/etc/X11/xorg.conf" | grep Modes | awk -Fs '{ print $2 }'` +} + +function presetupX { + if [ -f /etc/sysconfig/IGNORE_X ] + then + echo "Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X" + return 1 + else + if [ "$XIgnoreConfig" = 1 ] + then + echo "Using User supplied X" + if [ -f "$MYTHHOME/templates/xorg.user" ] + then + cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF" + else + echo "Didn't find the file" + echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF" + fi + else + if [ "$XUseAdvanced" = 1 ] + then + setupAdvancedX + else + setupX + fi + fi + fi + +} + +function setupAdvancedX { + echo "#doing the advanced" > /tmp/options + Xcategory=`echo "$Xresadvanced" | cut -d_ -f1` + Xres=`echo "$Xresadvanced" | cut -d_ -f2` + echo "$Xcategory" + if [ "$Xcategory" = "nVidia Modeline" ] + then + Xres="" + if [ "$XnVidia1080p" = "1" ] + then + Xres="${Xres} \"1920x1080_60\"" + fi + if [ "$XnVidia1080i" = "1" ] + then + Xres="${Xres} \"1920x1080_60i\"" + fi + if [ "$XnVidia720p" = "1" ] + then + Xres="${Xres} \"1280x720_60\"" + fi + if [ "$XnVidia480p" = "1" ] + then + Xres="${Xres} \"720x480_60\"" + fi + ML="\t Modes ${Xres}" + else + + ML="\t Modes \"${Xres}\"" + fi +# echo $ML + case $Xcardtype in + NVIDIA|nVidia|nvidia) + case $Xconnection in + DVI) ConnectedMonitor=DFP ;; + vga) ConnectedMonitor=CRT;; + Auto) ConnectedMonitor=Auto;; + TV) ConnectedMonitor=TV + echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options + echo "Option \"TVOutFormat\" \"$XTVconnection\"" >> /tmp/options + ;; + esac + if [ "$ConnectedMonitor" = Auto ] + then + echo "auto connection" + else + echo "Option \"ConnectedMonitor\" \"$ConnectedMonitor\"" >> /tmp/options + echo "Option \"FlatPanelProperties\" \"Scaling = centered, Dithering = enabled\"" >> /tmp/options + echo "Option \"DigitalVibrance\" \"0\"" >> /tmp/options + fi + + if [ "$XignoreEDID" = 1 ] + then + EDIDvalue=true + EDIDFREQ=false + DS=" DisplaySize $XDisplaysize" + HS=" HorizSync $XHsync" + VR=" VertRefresh $XVrefresh" + else + EDIDvalue=false + EDIDFREQ=true + DS="# Display size edid used " + HS="# Hsync edid used " + VR="# Vertrefresh edid used " + fi + echo "Option \"UseEdidFreqs\" \"$EDIDFREQ\"" >> /tmp/options + echo "Option \"IgnoreEDID\" \"$EDIDvalue\"" >> /tmp/options + + + sed -e "s/^.*Modes.*$/${ML}/" \ + -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \ + -e "s/^.*DisplaySize.*$/ $DS/" \ + -e "s/^#.*HorizSync.*$/ $HS/g" \ + -e "s/^#.*VertRefresh.*$/ $VR/g" \ + -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + ;; + + ati|ATI) + case $Xconnection in + DVI) ConnectedMonitor="tmds1,nocrt1,notv";; + VGA) ConnectedMonitor="crt1,notmds1,notv" ;; + TV) ConnectedMonitor="tv,nocrt1,notmds1" + echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options + echo "Option \"TVFormat\" \"$XTVconnection\"" >> /tmp/options + ;; + esac + if [ "$XignoreEDID" = 1 ] + then + DS=" DisplaySize $XDisplaysize" + HS=" HorizSync $XHsync" + VR=" VertRefresh $XVrefresh" + else + DS="# Display size edid used " + HS="# Hsync edid used " + VR="# Vertrefresh edid used " + fi + + echo "Option \"ForceMonitors\" \"$ConnectedMonitor\"" >> /tmp/options + + sed -e "s/^.*Modes.*$/\t $ML/" \ + -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \ + -e "s/^.*DisplaySize.*$/ $DS/" \ + -e "s/^#.*HorizSync.*$/ $HS/g" \ + -e "s/^#.*VertRefresh.*$/ $VR/g" \ + -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.ati" > "$XORG_CONF" + ;; + + via|VIA|Via|S3) + # Need to add appropriate Modules, Device and DRI sections + # See the http://www.mythtv.org/wiki/XvMC wiki page + echo "no via here" + ;; + + *) + echo "unknown card type" + ;; + esac +} + + +function setupX { + Xvalues + #echo "$currentmode ____ ${Xres}" + #if [ "${currentmode}" != \"${Xres}\" ] + if [ x = x ] + then + case $VGACARDTYPE in + nVidia) + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + fi + if [ "$TESTMODE" != "test" ] + then + #nvidia check right here + grep -qi "$CARDID" "$NVIDIA_96XX" + if [ $? = 0 ] + then + #install 96xx drivers + echo "installing nvidia 96xx drivers" + pacman --noconfirm -Rd libgl > /dev/null 2>&1 + pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 + pacman --noconfirm -S nvidia-96xx nvidia-96xx-utils > /dev/null 2>&1 + else + #install latest drivers + echo "installing current nvidia drivers" + pacman --noconfirm -Rd libgl > /dev/null 2>&1 + pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 + pacman --noconfirm -S nvidia nvidia-utils > /dev/null 2>&1 + fi + fi + echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG" + ;; + + # VMware) + # sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vmware" > "$XORG_CONF" + # ;; + + VIA|S3) + # There are actually multiple options here + # xf86-video-openchrome + # xf86-video-unichrome + # There is also a seperate driver for the Unichrome Pro + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF" + fi + if [ "$TESTMODE" != "test" ] + then + if [ "$OPENCHROME" = "1" ] + then + pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1 + pacman --noconfirm -S libgl unichrome-dri xf86-video-openchrome > /dev/null 2>&1 + else + pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1 + pacman --noconfirm -S libgl unichrome-dri xf86-video-unichrome > /dev/null 2>&1 + fi + fi + # I'm making educated guesses here... + if lspci | grep "VGA" | grep -qi "Unichrome Pro" + then + if [ -f "/usr/lib/libchromeXvMCPro.so.1" ] + then + echo "/usr/lib/libchromeXvMCPro.so.1" > "$XVMC_CONFIG" + else + echo "/usr/lib/libviaXvMCPro.so.1" > "$XVMC_CONFIG" + fi + else + if [ -f "/usr/lib/libchromeXvMC.so.1" ] + then + echo "/usr/lib/libchromeXvMC.so.1" > "$XVMC_CONFIG" + else + echo "/usr/lib/libviaXvMC.so.1" > "$XVMC_CONFIG" + fi + fi + ;; + + Intel|intel) + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF" + fi + if [ "$TESTMODE" != "test" ] + then + pacman --noconfirm -R nvidia-utils > /dev/null 2>&1 + pacman --noconfirm -S libgl > /dev/null 2>&1 + fi + echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG" + ;; + + vesa|InnoTek) + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" + fi + ;; + + *) + XCONF=/root/xorg.conf.new + XCONFB=/etc/X11/xorg.conf.install + X -configure + if [ -f "$XCONF" ] + then + echo "Using $XCONF" + if [ ${Xres} = Auto ] + then + grep -v Modes "$XCONF" | sed -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF" + else + grep -v Modes "$XCONF" | sed -e "/Depth.*16/a Modes \"${Xres}\" " -e "/Depth.*24/a Modes \"${Xres}\"" -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF" + fi + elif [ -f "$XCONFB" ] + then + echo "Using $XCONFB" + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$XCONFB" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$XCONFB" > "$XORG_CONF" + fi + else + echo "Xorg configuration failed" + fi + rm -f "$XCONF" 2>&1 > /dev/null + ;; + esac + fi + +} + +#MAIN +TESTMODE="$1" +if [ "$TESTMODE" = "test" ] +then + XORG_CONF="/tmp/xorg.conf.test" + XVMC_CONFIG="/tmp/XvMCConfig.test" + XUseAdvanced="1" + XIgnoreConfig="${2}" + Xcardtype="${3}" + XIgnoreEDID="${4}" + Xconnection="${5}" + XHsync="${6}" + XVrefresh="${7}" + Xresadvanced="${8}" + XTVstandard="${9}" + XTVconnection="${10}" + XDisplaysize="${11}" +else + if [ -f /etc/systemconfig ] + then + . /etc/systemconfig + else + Xres="800x600" + fi + CMDLINE=$(cat /proc/cmdline) + echo $CMDLINE | grep -q displayres + if [ $? = 0 ] + then + TEMPVAR=${CMDLINE#*displayres=} + DSR=${TEMPVAR%% *} + fi + if [ ! x$DSR = x ] + then + Xres=$DSR + fi + if [ ! x$DISPLAYRES = x ] + then + Xres=$DISPLAYRES + fi + + XORG_CONF="/etc/X11/xorg.conf" + XVMC_CONFIG="/etc/X11/XvMCConfig" +fi +presetupX diff --git a/abs/core/LinHES-system/LinHES-profile.sh b/abs/core/LinHES-system/LinHES-profile.sh new file mode 100644 index 0000000..830b819 --- /dev/null +++ b/abs/core/LinHES-system/LinHES-profile.sh @@ -0,0 +1,3 @@ +#!/bin/bash +export LinHES_ROOT=/usr/LH +export PATH=$PATH:/usr/LH/bin \ No newline at end of file diff --git a/abs/core/LinHES-system/LinHES-run b/abs/core/LinHES-system/LinHES-run new file mode 100644 index 0000000..1b91def --- /dev/null +++ b/abs/core/LinHES-system/LinHES-run @@ -0,0 +1,100 @@ +#!/bin/sh +. /etc/profile +. /etc/systemconfig + +#keylaunch & +#/usr/bin/tilda & + +#move mouse to corner +xdotool mousemove -10 -10 +/usr/X11R6/bin/unclutter -root -idle 1 -jitter 200 -noevents & +if [ x"$Screensavertype" = "xgscreensaver" ] +then + gnome-screensaver & +elif [ x"$Screensavertype" = "xxscreensaver" ] +then + xscreensaver -no-splash & +fi + +/usr/bin/xvattr -a XV_COLORKEY -v 0 +mtd & +#/usr/bin/nvidia-settings -l +#/usr/bin/nvidia-settings -a InitialPixmapPlacement=2 + +if [ x$ShowTips = "x1" ] +then + echo "Alt+h for help" | osd_cat --font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*" --shadow=3 --pos=middle --align=centre --offset=200 --color=yellow --delay=5 & +fi + +# Run any scripting that applies to special hardware. These brand-specific commands that run +# after Tweaker will, of course, override generic or hardware-specific settings. +SpecialHardwareCommands() { + special_hardware_file=/myth/.special_hardware_type + special_hardware=`cat $special_hardware_file` + + case $special_hardware in + dragon*) + sudo -E twk_audio.pl --implement digital + sudo -E twk_dragon.pl --implement all + ;; + ausdragon*) + ;; + *) + # there are no brand-specific commands for configuring whatever + # special hardware the user chose + ;; + esac +} + +if [ ! $SystemType = "Frontend_only" ] +then + if [ -f ~/.configure ] + then + # Run Tweaker, which applies generic and hardware-specific settings + if [ ! -f ~/.no_meth ] + then + sudo -E tweaker.pl + /bin/rm /tmp/fps # ??? clean up a temp file that will eventually be obsolete anyway + # Run any brand-specific commands, if necessary. + SpecialHardwareCommands + else + rm -f ~/.no_meth + fi + sudo sv stop mythbackend + xterm -fn *18* -e sudo taskset -c 0 /usr/bin/mythtv-setup + sudo sv start mythbackend + sudo chown -R mythtv.mythtv /home/mythtv + nice -n 19 mythfilldatabase --quiet & + rm ~/.configure + fi +fi + + +if [ x"$UseMythWelcome" = "x1" ] +then + STARTCMD="/usr/bin/mythwelcome" +else + STARTCMD="/usr/bin/mythfrontend -d -l /var/log/mythtv/mythfrontend.log" +fi + +echo "=====================================================================" +echo "Starting $STARTCMD" +firstboot.sh & + +if [ -f /tmp/nomfe ] +then + exit 0 +else + if [ -f /tmp/debug ] + then + echo "using gbd/debug" + gdb /usr/bin/mythfrontend -x $MV_ROOT/mfegdbcommands.txt + mv gdb.txt gdb.txt.mythfrontend + sleep 10 + else + killall -9 irexec + /usr/bin/irexec -d + $STARTCMD 2>&1 + fi +fi + diff --git a/abs/core/LinHES-system/LinHES-session b/abs/core/LinHES-system/LinHES-session new file mode 100755 index 0000000..52924d2 --- /dev/null +++ b/abs/core/LinHES-system/LinHES-session @@ -0,0 +1,13 @@ +#!/bin/sh +. /etc/profile +. /etc/systemconfig + +xhost +local: +xhost +127.0.0.1 +xset -dpms s off +export MALLOC_CHECK_=0 +#start fluxbox +fluxbox > /var/log/fluxbox.log 2>&1 + + + diff --git a/abs/core/LinHES-system/LinHES-start b/abs/core/LinHES-system/LinHES-start new file mode 100755 index 0000000..3157a2e --- /dev/null +++ b/abs/core/LinHES-system/LinHES-start @@ -0,0 +1,162 @@ +#!/bin/sh +# $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld Exp $ +# +# This is just a sample implementation of a slightly less primitive +# interface than xinit. It looks for user .xinitrc and .xserverrc +# files, then system xinitrc and xserverrc files, else lets xinit choose +# its default. The system xinitrc should probably do things like check +# for .Xresources files and merge them in, startup up a window manager, +# and pop a clock and serveral xterms. +# +# Site administrators are STRONGLY urged to write nicer versions. +# +# $XFree86: xc/programs/xinit/startx.cpp,v 3.16tsi Exp $ +. /etc/profile + +unset DBUS_SESSION_BUS_ADDRESS +unset SESSION_MANAGER + +userclientrc=/etc/X11/Sessions/LinHES +userserverrc=$HOME/.xserverrc +sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc +sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc +defaultclient=/usr/X11R6/bin/xterm +defaultserver=/usr/X11R6/bin/X +defaultclientargs="" +defaultserverargs="" +clientargs="" +serverargs="" + + + + + + +if [ -f $userclientrc ]; then + defaultclientargs=$userclientrc +elif [ -f $sysclientrc ]; then + defaultclientargs=$sysclientrc +fi + + + + +if [ -f $userserverrc ]; then + defaultserverargs=$userserverrc +elif [ -f $sysserverrc ]; then + defaultserverargs=$sysserverrc +fi + +whoseargs="client" +while [ x"$1" != x ]; do + case "$1" in + # '' required to prevent cpp from treating "/*" as a C comment. + /''*|\./''*) + if [ "$whoseargs" = "client" ]; then + if [ x"$clientargs" = x ]; then + client="$1" + else + clientargs="$clientargs $1" + fi + else + if [ x"$serverargs" = x ]; then + server="$1" + else + serverargs="$serverargs $1" + fi + fi + ;; + --) + whoseargs="server" + ;; + *) + if [ "$whoseargs" = "client" ]; then + clientargs="$clientargs $1" + else + # display must be the FIRST server argument + if [ x"$serverargs" = x ] && \ + expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then + display="$1" + else + serverargs="$serverargs $1" + fi + fi + ;; + esac + shift +done + +# process client arguments +if [ x"$client" = x ]; then + # if no client arguments either, use rc file instead + if [ x"$clientargs" = x ]; then + client="$defaultclientargs" + else + client=$defaultclient + fi +fi + +# process server arguments +if [ x"$server" = x ]; then + # if no server arguments or display either, use rc file instead + if [ x"$serverargs" = x -a x"$display" = x ]; then + server="$defaultserverargs" + else + server=$defaultserver + fi +fi + +if [ x"$XAUTHORITY" = x ]; then + XAUTHORITY=$HOME/.Xauthority + export XAUTHORITY +fi + +removelist= + + +# set up default Xauth info for this machine +case `uname` in +Linux*) + if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then + hostname=`hostname -f` + else + hostname=`hostname` + fi + ;; +*) + hostname=`hostname` + ;; +esac + +authdisplay=${display:-:0} +mcookie=`mcookie` +for displayname in $authdisplay $hostname$authdisplay; do + if ! xauth list "$displayname" | grep "$displayname " >/dev/null 2>&1; then + xauth -q << EOF +add $displayname . $mcookie +EOF + removelist="$displayname $removelist" + fi +done + + +xinit $client $clientargs -- $server $display -logverbose 6 $serverargs + +if [ x"$removelist" != x ]; then + xauth remove $removelist +fi + + + + + +if command -v deallocvt > /dev/null 2>&1; then + deallocvt +fi + + + + + + + diff --git a/abs/core/LinHES-system/LinHES.install b/abs/core/LinHES-system/LinHES.install new file mode 100644 index 0000000..2d2bdf2 --- /dev/null +++ b/abs/core/LinHES-system/LinHES.install @@ -0,0 +1,90 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { +/bin/true +} + +# arg 1: the new package version +post_install() { +MVDIR=/usr/LH/bin +# ln -s $MVDIR/backup_job /etc/cron.daily/backup_cron +# ln -s $MVDIR/update_system /etc/cron.daily/xupdate_system_cron +# ln -s $MVDIR/repo_sync.sh /etc/cron.daily/zrepo_sync.sh + ln -s $MVDIR/myth_mtc.sh /etc/cron.daily/myth_mtc.sh + +#LINE="mythtv ALL = NOPASSWD: /sbin/sv stop mythbackend" +LINE="mythtv ALL=(ALL) NOPASSWD: ALL" +LINE1="%wheel ALL=(ALL) NOPASSWD: ALL" + + +for i in "$LINE" "$LINE1" "$LINE2" "$LINE3" "$LINE4" "$LINE5" "$LINE7" "$LINE8" "$LINE9" "$LINE10" "$LINE11" "$LINE12" "$LINE13" "$LINE14" "$LINE15" "$LINE16" +do + cp /etc/sudoers /etc/sudoers.bak + grep -q "$i" /etc/sudoers + if [ $? != 0 ] + then + echo "$i" >> /etc/sudoers + visudo -cf /etc/sudoers + if [ ! $? = 0 ] + then + cp /etc/sudoers.bak /etc/sudoers + echo $i + echo "Error adding files" + exit 1 + fi + fi +done + +REALTIME="session required pam_limits.so" +grep -q "pam_limits.so" /etc/pam.d/su + if [ $? != 0 ] + then + echo "$REALTIME" >> /etc/pam.d/su + + fi + + + +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + if [ -e /etc/cron.daily/backup_cron ] + then + rm -f /etc/cron.daily/backup_cron + fi + if [ -e /etc/cron.daily/xupdate_system_cron ] + then + rm -f /etc/cron.daily/xupdate_system_cron + fi + + if [ -e /etc/cron.daily/myth_mtc.py ] + then + rm -f /etc/cron.daily/myth_mtc.py + fi + + +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD new file mode 100644 index 0000000..2a10fe0 --- /dev/null +++ b/abs/core/LinHES-system/PKGBUILD @@ -0,0 +1,42 @@ +pkgname=LinHES-system +pkgver=1.0 +pkgrel=69 +arch=('i686') +MVDIR=$startdir/pkg/usr/LH +BINDIR=$startdir/pkg/usr/bin +install=LinHES.install +pkgdesc="scripts and things related to having a automated system" +depends=(linhes-sounds xdotool) +backup=(etc/modprobe.d/alsa-base) +binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh LinHES-run firstboot.sh load-modules-mythvantage.sh unclutter-toggle.sh myth_mtc.lr" + +source=(LinHES-session LinHES-profile.sh $binfiles alsa-base) + +build() { + cd $startdir/src + install -m755 -D LinHES-session $startdir/pkg/etc/X11/Sessions/LinHES + install -m755 -D LinHES-profile.sh $startdir/pkg/etc/profile.d/LinHES-profile.sh +####### install to /usr/LH/bin +#mkdir -p $BINDIR + +for i in $binfiles +do + item=$i + install -m755 -D $item $MVDIR/bin/$item + echo $item + +done + +cd $startdir/bin +for i in * +do + item=$i + install -m755 -D $item $MVDIR/bin/$item + echo $item + +done +install -m755 -D $startdir/src/alsa-base $startdir/pkg/etc/modprobe.d/alsa-base +mkdir $startdir/pkg/etc/logrotate.d +cp $startdir/myth_mtc.lr $startdir/pkg/etc/logrotate.d +} + diff --git a/abs/core/LinHES-system/alsa-base b/abs/core/LinHES-system/alsa-base new file mode 100644 index 0000000..bf99ac3 --- /dev/null +++ b/abs/core/LinHES-system/alsa-base @@ -0,0 +1,10 @@ +# Prevent abnormal drivers from grabbing index 0 +options bt87x index=-2 +options cx88_alsa index=-2 +options saa7134-alsa index=-2 +options snd-atiixp-modem index=-2 +options snd-intel8x0m index=-2 +options snd-via82xx-modem index=-2 +options snd-usb-audio index=-2 +options snd-usb-usx2y index=-2 +options snd-usb-caiaq index=-2 diff --git a/abs/core/LinHES-system/bin/backupcommon b/abs/core/LinHES-system/bin/backupcommon new file mode 100644 index 0000000..d112341 --- /dev/null +++ b/abs/core/LinHES-system/bin/backupcommon @@ -0,0 +1,382 @@ +#!/bin/bash + +. /usr/LH/bin/library.sh || { + echo 1>&2 "Can not load common library!" + exit 1 +} + +# You need to be root at least via sudo for the backup utilities to work. +must_be_root + +#---------------------------------------------------------------------------- +DATABASE="mythconverg" +DATABASE_DIR="/data/srv/mysql/$DATABASE" +BACKUP_LIST="./root ./home ./etc + ./var/lib/alsa/asound.state" +RESTORE_LIST="./root ./home ./etc/mythtv/modules ./etc/lirc + ./etc/X11/xorg.conf ./etc/asound.conf ./etc/default/aumix + ./var/lib/alsa/asound.state ./etc/mplayer/mplayer.conf + ./etc/localtime ./etc/timezone ./etc/asound.state" +# Both BLACK_LIST and IGNORE_LIST need to have only one file per line +# They also can't have any extra whitespace... +# Files and directories we should refuse to restore +BLACK_LIST='./etc/fstab +./etc/modules +./proc +./dev +./lib +./var/lib +./myth +./myth/backup +./home/mythtv/.my.cnf +./root/.my.cnf +./home/mythtv/.Xauthority +./root/.Xauthority' +# Files we ignore as differences +IGNORE_LIST='./home/mythtv/.upgrade +./home/mythtv/.configure +./home/mythtv/.newcard +./home/mythtv/.xscreensaver +./home/mythtv/appletrailer.xml +./root/ati-driver-installer-8-01-x86.x86_64.run +./root/ati-driver-installer-8-3-x86.x86_64.run +./root/mythstreamweb.tar +./home/mythtv/.Xauthority +./root/.Xauthority' +BACKUP_DIR="/myth/backup" +BACKUP_EXTRAS="$BACKUP_DIR/backup.list" +RESTORE_EXTRAS="$BACKUP_DIR/restore.list" +BACKUP_TAR="$BACKUP_DIR/savedfiles.tar" +BACKUP_SQL="$BACKUP_DIR/$DATABASE.sql" +#DROP_SQL="/usr/local/share/knoppmyth/drop.sql" +UTIL_DIR="/usr/LH/bin" +# Do we really still need to update from myth-0.11 to myth-0.12 ? +UPDATE_SQL="/usr/share/mythtv/sql/0.11-to-0.12.sql" +UPDATE_FILES="$UTIL_DIR/restore_fixups.sh" +COMPRESSION=".gz" +SOUNDS="/usr/share/sounds" +SILENCE="$SOUNDS/half_second_of_silence.wav" +PLAYER="/usr/bin/aplay" +#---------------------------------------------------------------------------- +AWK=/bin/awk +BASH=/bin/bash +BUNZIP2=/bin/bunzip2 +BZIP2=/bin/bzip2 +CAT=/bin/cat +CHMOD=/bin/chmod +CHOWN=/bin/chown +EGREP=/bin/egrep +GREP=/bin/grep +GUNZIP=/bin/gunzip +GZIP=/bin/gzip +LS=/bin/ls +MV=/bin/mv +RM=/bin/rm +SED=/bin/sed +TAR=/bin/tar +TR=/bin/tr +DIFF=/usr/bin/diff +FIND=/usr/bin/find +MD5SUM=/usr/bin/md5sum +MYISAMCHK=/usr/bin/myisamchk +MYSQL=/usr/bin/mysql +MYSQLADMIN=/usr/bin/mysqladmin +MYSQLDUMP=/usr/bin/mysqldump +MYTHSHUTDOWN=/usr/bin/mythshutdown +SORT=/usr/bin/sort +WC=/usr/bin/wc +SV=/sbin/sv + +#---------------------------------------------------------------------------- + +require file+r+x $AWK $BASH $BUNZIP2 $BZIP2 $CAT $CHMOD $CHOWN $EGREP $GREP \ + $GUNZIP $GZIP $LS $MV $RM $SED $TAR $TR $DIFF $FIND $MD5SUM \ + $MYISAMCHK $MYSQL $MYSQLADMIN $MYSQLDUMP $MYTHSHUTDOWN \ + $SORT $WC $SV + +#require file+r "$DROP_SQL" + +require dir+r+w+x /tmp "$BACKUP_DIR" "$DATABASE_DIR" + +play_sound () { + ($PLAYER $SILENCE $SOUNDS/$1 >& /dev/null)& +} + +# Filter against an exclude list like the black list or the ignore list above +filter_list () { + $GREP -vxF "$*" | + $SORT -u +} + +# Some people just can't read or follow directions... :-/ +# This should track the directory names in the default backup list above +# We also use this to short circuit a certain incredibly dumb stunt +filter_redundant () { + filter_list "$($TR -s ' ' '\n' <<<"$BACKUP_LIST ./myth")" | + $EGREP -v '^\./(root|home|etc|myth)/' | + $SORT -u +} + +get_extras () { + # One entry per line, and normalize the prefix + $TR ' ' '\n' <"$1" | + $AWK '/^$/ {next} + /^\.\// {print $0 ; next} + /^\// {print "." $0 ; next} + { print "./" $0}' +} + +[ -f "$BACKUP_EXTRAS" ] && + BACKUP_LIST="$BACKUP_LIST $(get_extras $BACKUP_EXTRAS | + filter_redundant)" + +[ -f "$RESTORE_EXTRAS" ] && + RESTORE_LIST="$RESTORE_LIST $(get_extras $RESTORE_EXTRAS | + filter_list "$BLACK_LIST")" + +# Build tar exclusion parameters out of $BLACK_LIST +EXCLUSION="" +case $0 in +*restore) + for file in $BLACK_LIST ; do + EXCLUSION="$EXCLUSION --exclude $file " + done + ;; +*) + ;; +esac + +shrink () { + case "$COMPRESSION" in + .gz) + $GZIP -9 "$@" + ;; + .bz2) + $BZIP2 -9 "$@" + ;; + *) + ;; + esac +} + +expand () { + case "$*" in + *.gz) + $GUNZIP "$@" + ;; + *.bz2) + $BUNZIP2 "$@" + ;; + -c\ *) + $CAT $2 /dev/null + ;; + -t\ *) + return 0 + ;; + *) + echo 1>&2 "Error, unknown file type!" + return 1 + ;; + esac +} + +single_format () { + candidates=$($LS -1 "$1.gz" "$1.bz2" "$1" 2>/dev/null) + case $($WC -l <<<"$candidates") in + 1) return 0 # One is good! + ;; + 0) echo "Error, no $1 found!" + return 1 + ;; + *) echo "Warning, multiple formats for $1 found!" + echo "Candidates are: $candidates" + ;; + esac +} + +compression_type () { + for compression in .gz .bz2 "" ; do + if [ -f "$1$compression" ] ; then + echo "$compression" + return 0 + fi + done + return 1 +} + +backup_roller () { # Gets the rollover sequence to use. + prev_i=$1 ; shift + for i in "$@" ; do + for c in .gz .bz2 "" ; do + for f in $BACKUP_SQL $BACKUP_TAR ; do + $RM -f $f$c$prev_i + if [ -f "$f$c$i" ] ; then + echo "Moving $f$c$i to $f$c$prev_i" + $MV -f $f$c$i $f$c$prev_i + fi + done + done + prev_i="$i" + done +} + +# Given "subset A B" return true if is A a subset of B +subset () { + cnt=$($DIFF $1 $2 | $GREP '^<' | $WC -l) + [ "$cnt" -eq 0 ] && return 0 + $DIFF $1 $2 +} + +mysql_cmd () { + $MYSQL -u root $DATABASE -sBe "$*" +} + +mysql_stdin () { + $MYSQL -u root $DATABASE -sB +} + +check_files () { + OBJECT_LIST="$*" + LIVE_FILES=/tmp/live_files_$$ + SAVED_FILES=/tmp/saved_files_$$ + + echo "Checking for the existance of the backup tar file..." + single_format "$BACKUP_TAR" + c=$(compression_type "$BACKUP_TAR") || + { echo "Error, missing tar file - '$BACKUP_TAR$c'." ; return 1 ; } + echo "Using file $BACKUP_TAR$c" + echo "Backup tar file exists. Checking the compression..." + expand -t $BACKUP_TAR$c || + { echo "Error, bad compressed tarball - '$BACKUP_TAR$c'." ; return 1 ; } + echo "Compression looks OK. Checking backup tar file contents..." + + echo "Generating a list of the backup contents..." + { + expand -c $BACKUP_TAR$c | + $TAR tf - $OBJECT_LIST $EXCLUSION | + $SED '/\/$/s///' | + filter_list "$IGNORE_LIST" >$SAVED_FILES + } 2>&1 | $SED -e '/Error exit delayed from previous errors/d' + + echo "Generating a list of the directory contents..." + cd / + $FIND $OBJECT_LIST \( -type d -or -type f -or -type l \) -print | + filter_list "$IGNORE_LIST" >$LIVE_FILES + + echo "Comparing directory versus backup contents..." + case $0 in + *backup) # backup must contain everything selected from the directories + subset $LIVE_FILES $SAVED_FILES + ;; + *restore) # directories must contain everything selected from the backup + subset $SAVED_FILES $LIVE_FILES + ;; + *) + $DIFF $LIVE_FILES $SAVED_FILES + ;; + esac + FILE_STATUS=$? + $RM $LIVE_FILES $SAVED_FILES + if [ $FILE_STATUS -eq 0 ] ; then + echo "Live and saved file lists match." + else + echo "Warning, file lists are not identical!" + fi + return $FILE_STATUS +} + +has_records () { + filename="$1" + description="$2" + if [ $($WC -l < "$filename") -eq 0 ] ; then + echo "Warning, could not get record counts from $description!" + return 1 + fi + if [ $($AWK '{cnt+=$2} END {print cnt}' < "$filename") -eq 0 ] ; then + echo "Warning, total record count from $description is zero!" + return 1 + fi + return 0 +} + +check_tables () { + LIVE_TABLES=/tmp/live_tables_$$ + SAVED_TABLES=/tmp/saved_tables_$$ + + echo "Checking for the existance of the DB dump file..." + single_format "$BACKUP_SQL" + c=$(compression_type "$BACKUP_SQL") || + { echo "Error, missing DB dump - '$BACKUP_SQL$c'" ; return 1 ; } + echo "Using file $BACKUP_SQL$c" + echo "DB dump file exists. Checking the compression..." + expand -t $BACKUP_SQL$c || + { echo "Error, bad compressed DB dump - '$BACKUP_SQL$c'." ; return 1 ; } + echo "Compression looks OK. Checking DB dump contents..." + + echo "Generating a list of tables and record counts in the DB dump..." + expand -c "$BACKUP_SQL$c" | + $AWK '/CREATE TABLE/ { tbl = $3; gsub("`","",tbl); records[tbl] = 0; } \ + /INSERT INTO/ { tbl = $3; gsub("`","",tbl); \ + n = split(substr($0,index($0,"VALUES (")+7),vals,"\\),\\("); \ + records[tbl] += n; } \ + END { for (tbl in records) print tbl, records[tbl]; }' | + $SED 's/mythlog [0-9]*/mythlog 0/' | + $SORT >$SAVED_TABLES + has_records "$SAVED_TABLES" "DB dump" || return 1 + + echo "Generating a list of tables and record counts in the live DB..." + for tbl in $(mysql_cmd "show tables") ; do + mysql_cmd "select '$tbl', count(*) from $tbl" + done | + $TR -s '\t' ' ' | + $SED 's/mythlog [0-9]*/mythlog 0/' | + $SORT >$LIVE_TABLES + has_records "$LIVE_TABLES" "live DB" || return 1 + + echo "Comparing live versus saved tables..." + case $0 in + *restore) # database must include everything from the backup + subset $SAVED_TABLES $LIVE_TABLES + ;; + *) # backup must exactly match the database + $DIFF $LIVE_TABLES $SAVED_TABLES + ;; + esac + TABLE_STATUS=$? + $RM $LIVE_TABLES $SAVED_TABLES + if [ $TABLE_STATUS -eq 0 ] ; then + echo "Live and saved table lists match." + else + echo "Warning, table lists are not identical!" + fi + return $TABLE_STATUS +} + +check_files_and_tables () { + STATUS=0 + echo + check_files "$@" || STATUS=1 + echo + check_tables || STATUS=1 + echo + return $STATUS +} + +stop_mysqld () { $SV stop mysql ; } +start_mysqld () { + $SV start mysql + for t in 1 2 4 8 ; do + ready=$(mysql_cmd 'select 1 from dual' 2>/dev/null) + [ "$ready" = "1" ] && break + sleep "$t" + done + [ "$ready" != "1" ] && echo "Error, DB not available after 15 seconds!" +} + +stop_mythbackend () { $SV stop mythbackend ; } +start_mythbackend () { $SV start mythbackend ; } + +lock_myth () { $MYTHSHUTDOWN --lock ; } +unlock_myth () { $MYTHSHUTDOWN --unlock ; } + +true # Make sure that this shows success diff --git a/abs/core/LinHES-system/bin/checkbackup b/abs/core/LinHES-system/bin/checkbackup new file mode 100755 index 0000000..b6d8587 --- /dev/null +++ b/abs/core/LinHES-system/bin/checkbackup @@ -0,0 +1,16 @@ +#!/bin/bash + +#---------------------------------------------------------------------------- +. /usr/LH/bin/backupcommon || { + echo 1>&2 "Can not load common settings!" + exit 1 +} +#---------------------------------------------------------------------------- + +if check_files_and_tables $BACKUP_LIST ; then + echo "Backup passes all checks." + exit 0 +else + echo "The backup is bad or already out of date!" + exit 1 +fi diff --git a/abs/core/LinHES-system/bin/checkrestore b/abs/core/LinHES-system/bin/checkrestore new file mode 100755 index 0000000..ef0360c --- /dev/null +++ b/abs/core/LinHES-system/bin/checkrestore @@ -0,0 +1,16 @@ +#!/bin/bash + +#---------------------------------------------------------------------------- +. /usr/LH/bin/backupcommon || { + echo 1>&2 "Can not load common settings!" + exit 1 +} +#---------------------------------------------------------------------------- + +if check_files_and_tables $RESTORE_LIST ; then + echo "Restore passes all checks." + exit 0 +else + echo "The restore failed or was already modified!" + exit 1 +fi diff --git a/abs/core/LinHES-system/bin/library.sh b/abs/core/LinHES-system/bin/library.sh new file mode 100755 index 0000000..2049de3 --- /dev/null +++ b/abs/core/LinHES-system/bin/library.sh @@ -0,0 +1,164 @@ +msg () { # A status reporting function + [ "${VERBOSE:-0}" -gt 0 ] && echo "$*" +} + +error () { # An error reporting function + echo 1>&2 "$*" +} + +fatal () { # Report an error and exit with a failure code + error "$*" + exit 1 +} + +# The only non builtin this uses is tr... +require () { # Check prerequisites + e=0 + props="$1" ; shift + for obj in "$@" ; do + [ -z "$obj" ] && continue # Too late to do anything itelligent... + problems="" + for prop in $(/bin/tr '+,' ' ' <<<"$props") ; do + case "$prop" in + e|exists) # kind of useless... + [ -e "$obj" ] || problems="$problems, does not exist" ;; + f|file) + [ -f "$obj" ] || problems="$problems, is not a file" ;; + d|dir) + [ -d "$obj" ] || problems="$problems, is not a directory" ;; + l|symlink) + [ -L "$obj" ] || problems="$problems, is not a symlink" ;; + nosymlink) + [ -L "$obj" ] && problems="$problems, is a symlink" ;; + r|readable) + [ -r "$obj" ] || problems="$problems, is not readable" ;; + w|writable) + [ -w "$obj" ] || problems="$problems, is not writable" ;; + x|executable) + [ -x "$obj" ] || problems="$problems, is not executable" ;; + *) + fatal "Programmer error, unknown property: '$prop'" ;; + esac + done + if [ -n "$problems" ] ; then + error "Error: '$obj'$problems." + e=1 + fi + done + [ "$e" -ne 0 ] && fatal "Errors noted above are fatal." +} + +require file+r+x /bin/bash /bin/grep /bin/rm /bin/tr \ + /usr/bin/basename /usr/bin/env \ + /usr/bin/mysql /usr/bin/sort + +if [ -n "$DEBUG" ] ; then + for debug_opt in $(/bin/tr ',' ' ' <<<"$DEBUG") ; do + echo '============================================================' + echo "==== $debug_opt" + + # Note that the order you specifiy these debug options in matters. + # I recommend always listing log first. For example: + # export DEBUG=log,env,set,trace + case "$debug_opt" in + env) /usr/bin/env | /usr/bin/sort ;; + set) set ;; + trace) set -vx ;; + log) logfile="/tmp/$(/usr/bin/basename $0).$$.debug" + /bin/rm -f "$logfile" # Try to avoid privilege escalation bugs + echo "Redirecting stdout and stderr to '$logfile'" + exec >"$logfile" 2>&1 ;; + *) error "Unknown debug option '$debug_opt'" ;; + esac + done + echo '============================================================' +fi + +must_be_root () { # For things which must be run as root + [ $(/usr/bin/id -u) -ne 0 ] && fatal "You must run this script as root!" +} + +must_be_mythtv () { # For things which must be run as mythtv (su if possible) + case $(/usr/bin/id -nu) in + mythtv) ;; # Continue + root) /bin/su - mythtv -c "$0 $*" ; exit $? ;; + *) fatal "You must run this script at mythtv or root!" ;; + esac +} + +# Use a variable so you can override it. +DATABASE="mythconverg" + +mysql_cmd () { # Execute SQL from the command line + /usr/bin/mysql -u root "$DATABASE" -sBe "$*" +} + +mysql_stdin () { # Execute SQL from stdin + /usr/bin/mysql -u root "$DATABASE" -sB +} + +machine_clause () { # Helper function + if [ -z "$1" ] ; then + echo "(hostname = '' or hostname is null)" + else + echo "hostname = '$1'" + fi +} + +get_all_setting_names () { # List setting names + case "$#" in + 0) MACHINE_CLAUSE="" ;; + 1) MACHINE_CLAUSE="where $(machine_clause "$1")" ;; + *) fatal "Programmer error, get_all_names must be passed 0 or 1 args, got $#" ;; + esac + mysql_cmd "select distinct value from settings $MACHINE_CLAUSE order by value" +} + +get_all_setting_values () { # List settings + case "$#" in + 0) MACHINE_CLAUSE="" ;; + 1) MACHINE_CLAUSE="where $(machine_clause "$1")" ;; + *) fatal "Programmer error, get_all_values must be passed 0 or 1 args, got $#" ;; + esac + mysql_cmd "select value, data, hostname from settings $MACHINE_CLAUSE order by hostname, value, data" +} + +get_setting_value () { # Get the data for a setting (may return multiples!) + case "$#" in + 1) MACHINE_CLAUSE="" ;; + 2) MACHINE_CLAUSE="and $(machine_clause "$2")" ;; + *) fatal "Programmer error, get_value must be passed 1 or 2 args, got $#" ;; + esac + mysql_cmd "select data from settings where value = '$1' $MACHINE_CLAUSE" +} + +set_setting_value () { # Insert or update aome setting + case "$#" in + 2) RECORD_CNT=$(get_value "$1" | wc -l) ;; + 3) RECORD_CNT=$(get_value "$1" "$3" | wc -l) ;; + *) fatal "Programmer error, set_value must be passed 2 or 3 args, got $#" ;; + esac + MACHINE_CLAUSE="" + if [ "$RECORD_CNT" -eq 0 ] ; then + [ -n "$3" ] && MACHINE_CLAUSE=", $(machine_clause "$3")" + mysql_cmd "insert into settings set value = '$1', data = '$2' $MACHINE_CLAUSE" + else + [ "$#" -eq 3 ] && MACHINE_CLAUSE="and $(machine_clause "$3")" + mysql_cmd "update settings set data = '$2' where value = '$1' $MACHINE_CLAUSE" + fi +} + +delete_setting_value () { # Totally remove some setting + case "$#" in + 1) MACHINE_CLAUSE="" ;; + 2) MACHINE_CLAUSE="and $(machine_clause "$2")" ;; + *) fatal "Programmer error, get_value must be passed 1 or 2 args, got $#" ;; + esac + mysql_cmd "delete from settings where value = '$1' $MACHINE_CLAUSE" +} + +# Filter against a newline seperated exclude list +filter_list () { + /bin/grep -vxF "$*" | + /usr/bin/sort -u +} diff --git a/abs/core/LinHES-system/bin/mythbackup b/abs/core/LinHES-system/bin/mythbackup new file mode 100755 index 0000000..d0d028d --- /dev/null +++ b/abs/core/LinHES-system/bin/mythbackup @@ -0,0 +1,71 @@ +#!/bin/bash + +#---------------------------------------------------------------------------- +. /usr/LH/bin/backupcommon || { + echo 1>&2 "Can not load common settings!" + exit 1 +} +#---------------------------------------------------------------------------- + +# Prevent mythshutdown from shutting down the system in the middle... +lock_myth + +# Play a sound to let you know I'm starting. +play_sound init.wav + +# Keep a chain of recent backups, +echo "Starting rollover of old backups, this may take a while..." +[ -f "$BACKUP_SQL" ] && shrink $BACKUP_SQL +[ -f "$BACKUP_TAR" ] && shrink $BACKUP_TAR +backup_roller .19 .18 .17 .16 .15 .14 .13 .12 .11 .10 .9 .8 .7 .6 .5 .4 .3 .2 .1 '' +echo "Rollover completed." + +# Start with the database backup, first we make sure it's healthy, and +# then we can dump it. +# Doing this while the backend is active would be BAD. +stop_mythbackend + +# Stop, check, and fix $DATABASE db to ensure clean copy, then restart it. +stop_mysqld +cd $DATABASE_DIR +$MYISAMCHK -f *.MYI +start_mysqld + +# Dumps the $DATABASE database +$MYSQLDUMP -v -c -u root $DATABASE > $BACKUP_SQL +shrink $BACKUP_SQL + +# Now to backup the other files, no fooling around, grab everything in the +# list because you never know what you'll want, and we can always get clever +# about what to restore later... + +# gather all the things in the list into a nice tidy bundle +cd / +$TAR cvf $BACKUP_TAR $BACKUP_LIST 2>&1 | + $SED -e '/Error exit delayed from previous errors/d' +shrink $BACKUP_TAR + +# If you can't read this you've got no business restoring from it anyway. +$CHOWN root:root $BACKUP_TAR* $BACKUP_SQL* +$CHMOD go-rwx $BACKUP_TAR* $BACKUP_SQL* + +echo "Sanity checking your backup..." +play_sound testing.wav +# Play a sound to let you know the outcome. +if check_files_and_tables $BACKUP_LIST ; then + echo "Backup passes all checks." + play_sound complete.wav + STATUS=0 +else + echo "The backup is bad or already out of date!" + play_sound fail.wav + STATUS=1 +fi + +# Now we can restart the backend. +start_mythbackend + +# Unlock the system again... +unlock_myth + +exit $STATUS diff --git a/abs/core/LinHES-system/bin/mythrestore b/abs/core/LinHES-system/bin/mythrestore new file mode 100755 index 0000000..7fce371 --- /dev/null +++ b/abs/core/LinHES-system/bin/mythrestore @@ -0,0 +1,92 @@ +#!/bin/bash + +#---------------------------------------------------------------------------- +. /usr/LH/bin/backupcommon || { + echo 1>&2 "Can not load common settings!" + exit 1 +} +#---------------------------------------------------------------------------- + +do_file_updates() { # A function because we need to do this in two places + echo "Doing any needed file updates..." + [ -n "$UPDATE_FILES" -a -f "$UPDATE_FILES" -a -x "$UPDATE_FILES" ] && + "$UPDATE_FILES" +} + +do_db_updates() { + # We need to redo this since we just restored the old settings... + lock_myth + # This is gross, but makes sure that the lock count has a sane value... + mysql_cmd "update settings set data = '1' where value = 'MythShutdownLock'" + + # Clean up ambiguous schema version settings... + for val in $(mysql_cmd "select distinct value from settings where value like '%SchemaVer'") ; do + # Find the numeric maximum version for this schema + max_ver=$(mysql_cmd "select max(0 + ifnull(data, 0)) from settings where value = '$val'") + # Wipe out all the existing ones + mysql_cmd "delete from settings where value = '$val'" + # Insert a nice clean unique one. + mysql_cmd "insert into settings set value = '$val', data = '$max_ver'" + done + + # This table causes problems with mythweb on upgrades... + mysql_cmd "update settings set data = '0' where value = 'WebDBSchemaVer'" + mysql_cmd "drop table mythweb_sessions" >/dev/null 2>&1 +} + +# Let's prevent mythshutdown from shutting down the system. +lock_myth + +# Play a sound to let you know I'm starting. +play_sound restore.wav + +# Doing this while the backend is active could be BAD. +stop_mythbackend + +# If the standard backup file exists we try to restore the files based +# on our restore list. +if compression=$(compression_type "$BACKUP_TAR") ; then + echo "Starting the restore of files..." + cd / + expand -c $BACKUP_TAR$compression | + $TAR xpvf - $RESTORE_LIST $EXCLUSION 2>&1 | + $SED -e '/Error exit delayed from previous errors/d' + echo "Completed the restore of files." +fi + +# If the db backup file exists start the DB restore and upgrade +if compression=$(compression_type "$BACKUP_SQL") ; then + echo "Starting the DB restore, this can take a while..." + echo "Clearing out the existing skeleton..." + #mysql_stdin < $DROP_SQL + echo "Recreating the db..." + $MYSQLADMIN -u root create $DATABASE + echo "Restoring the data (long)..." + expand -c $BACKUP_SQL$compression | mysql_stdin + echo "Doing any needed db updates..." + [ -n "$UPDATE_SQL" -a -f "$UPDATE_SQL" ] && + mysql_stdin < $UPDATE_SQL + echo "Completed the DB restore." +fi + +echo "Sanity checking your restore..." +play_sound vr.wav +# Play a sound to let you know the outcome. +if check_files_and_tables $RESTORE_LIST ; then + echo "Restore passes all checks." + play_sound restored.wav + STATUS=0 +else + echo "The restore failed or was already modified!" + play_sound rf.wav + STATUS=1 +fi + +# Make any updates _after_ we verify the backup... +do_db_updates +do_file_updates + +# Now it's more or less safe to restart the backend. +start_mythbackend + +exit $STATUS diff --git a/abs/core/LinHES-system/bin/rollback.sh b/abs/core/LinHES-system/bin/rollback.sh new file mode 100755 index 0000000..12897da --- /dev/null +++ b/abs/core/LinHES-system/bin/rollback.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +#---------------------------------------------------------------------------- +. /usr/LH/bin/backupcommon || { + echo 1>&2 "Can not load common settings!" + exit 1 +} +#---------------------------------------------------------------------------- + +require file+r+x $MYTHSHUTDOWN + +# Prevent mythshutdown from shutting down the system in the middle... +lock_myth + +echo "Starting rollback of old backups" +backup_roller '' .1 .2 .3 .4 .5 .6 .7 .8 .9 .10 .11 .12 .13 .14 .15 .16 .17 .18 .19 +echo "Rollback completed." + +# Unlock the system again... +unlock_myth diff --git a/abs/core/LinHES-system/firstboot.sh b/abs/core/LinHES-system/firstboot.sh new file mode 100755 index 0000000..47aa0f9 --- /dev/null +++ b/abs/core/LinHES-system/firstboot.sh @@ -0,0 +1,43 @@ +#!/bin/bash +. ~/.configured +ATTEMPT=0 +function try_smolt { + ((ATTEMPT=ATTEMPT+1)) + status=$(echo "jump mythsmolt" | telnet localhost 6546 2>&1) + echo $status|grep -q refused + status=$? + if [ $status != 0 ] + then + fb_status=0 + echo "FB=NO" > ~/.configured + fi + if [ $ATTEMPT = 200 ] + then + fb_status=0 + fi +} + +if [ ! -e /tmp/debug ] +then + if [ ! -e /tmp/nomfe ] + then + if [ ! -e ~/.mythtv/pub-uuid ] + then + if [ x$FB != xNO ] + then + fb_status=4 + while [ $fb_status != 0 ] + do + try_smolt + if [ $fb_status != 0 ] + then + sleep 1 + fi + done + fi + fi + fi +fi + + + diff --git a/abs/core/LinHES-system/load-modules-mythvantage.sh b/abs/core/LinHES-system/load-modules-mythvantage.sh new file mode 100755 index 0000000..06c8a96 --- /dev/null +++ b/abs/core/LinHES-system/load-modules-mythvantage.sh @@ -0,0 +1,64 @@ +#!/bin/bash +#/usr/bin/load-modules-mythvantage.sh UNLOAD LCD +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/systemconfig +case $1 in +UNLOAD|unload ) + MODULELIST=`grep /etc/modules.mythvantage $2` + for i in $MODULELIST + do + /sbin/rmmod $i + done + + ;; + + *) printhl " 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` + #this doesn't do anything on boot cause ttySX does not yet exisit + if [ x$module = xlirc_serial ] + then + if [ x$ReceiverType = xSerial ] + then + case $ReceiverSerialport in + ttyS0) FLAGS="io=0x3f8 irq=4";; + ttyS1) FLAGS="io=0x2f8 irq=3" ;; + ttyS2) FLAGS="io=0x3e8 irq=4" ;; + ttyS3) FLAGS="io=0x2f8 irq=3" ;; + esac + /usr/bin/setserial /dev/$ReceiverSerialport uart none 2>/dev/null + if [ $? = 0 ] + then + /sbin/modprobe lirc_serial $FLAGS 2>/dev/nulla + fi + elif [ x$HostBlasterType = xSerial ] + then + case $HostSerialPort_blasterlirc in + ttyS0) FLAGS="io=0x3f8 irq=4";; + ttyS1) FLAGS="io=0x2f8 irq=3" ;; + ttyS2) FLAGS="io=0x3e8 irq=4" ;; + ttyS3) FLAGS="io=0x2f8 irq=3" ;; + esac + /usr/bin/setserial /dev/$HostSerialPort_blasterlirc uart none 2>/dev/null + if [ $? = 0 ] + then + /sbin/modprobe lirc_serial $FLAGS 2>/dev/nulla + fi + fi + fi + /sbin/modprobe $module 2> /dev/null + done < /etc/modules.mythvantage + fi +esac + diff --git a/abs/core/LinHES-system/myth_mtc.lr b/abs/core/LinHES-system/myth_mtc.lr new file mode 100644 index 0000000..23f8711 --- /dev/null +++ b/abs/core/LinHES-system/myth_mtc.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/myth_mtc.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/core/LinHES-system/myth_mtc.py b/abs/core/LinHES-system/myth_mtc.py new file mode 100755 index 0000000..5505b0a --- /dev/null +++ b/abs/core/LinHES-system/myth_mtc.py @@ -0,0 +1,139 @@ +#!/usr/bin/python + + +import sys,popen2 +import optparse +import re +import socket +import os +import datetime,time + + + +try: + from MythTV import MythTV + mythtv = MythTV() +except: + mythtv = None + +#print mythtv.db.getSetting( 'Theme', socket.gethostname()) + +def optimize(): + cursor = mythtv.db.cursor() + cursor.execute("SHOW tables") + result = cursor.fetchall() + ops=["REPAIR","OPTIMIZE","ANALYZE"] + for row in result: + ctable=row[0] + for op in ops: + print op,ctable + cmd= "%s table %s" %(op,ctable) + cursor.execute(cmd) + + +def upcoming_check(): + upcoming = mythtv.getUpcomingRecordings() + try: + show=str(upcoming[0]) + show=show.strip() + showtime=show.partition("(")[2].strip(")") + now=time.time() + rec_time=time.strptime( showtime ,"%Y-%m-%d %H:%M:%S" ) + r=time.mktime(rec_time) + time_diff= ( r - now ) / 60 + except: + time_diff=100 + show="No show" + if ( time_diff > 30) : + return True + else: + print show , "is upcoming in " , time_diff + return False + + +def schemalock_check(): + c = mythtv.db.cursor() + c.execute("select count(*) from schemalock") + results=c.fetchone() + schemalock=results[0] + if schemalock == 0: + return True + else: + print "schema is locked" + return False + +def job_check(): + c = mythtv.db.cursor() + c.execute("select count(*) from jobqueue where status = 4") + results=c.fetchone() + jobs= results[0] + if jobs == 0 : + return True + else: + print " jobs are running" + return False + + +def in_use(): + c = mythtv.db.cursor() + c.execute("select count(*) from inuseprograms") + results=c.fetchone() + prginuse=results[0] + if prginuse == 0 : + return True + else: + print "programs in use" + return False + +def mfd_check(): + ismfd=popen2.Popen3('/bin/ps cax|/bin/grep -v grep |/bin/grep mythfilldatabase') + ismfd.wait() + mfdIdle=ismfd.poll() + if mfdIdle == 0: + print "mythfilldatabase is running" + return False + else: + return True + + + +def idle_check(): + if ( upcoming_check() and schemalock_check() and job_check() and in_use() and mfd_check() ): + idle=True + print "Myth is idle" + else: + idle=False + print "Myth is NOT idle" + return idle + +def run_stuff(): + if idle_check(): + print "Running optimize" + optimize() + + print "Running backup" + os.system('/usr/LH/bin/backup_job') + + print "Running system_update" + os.system('/usr/LH/bin/update_system') + continue_loop=False + else: + continue_loop=True + return continue_loop + +#--------------------------------- +starttime=time.time() +ctin=True +while ctin: + ctin=run_stuff() + if ctin: + time.sleep(600) + current_time=time.time() + if (current_time - starttime) > 10800 : + ctin = False + print "time exceeded (3 hours)" + exit(1) + + + + diff --git a/abs/core/LinHES-system/myth_mtc.sh b/abs/core/LinHES-system/myth_mtc.sh new file mode 100755 index 0000000..487513b --- /dev/null +++ b/abs/core/LinHES-system/myth_mtc.sh @@ -0,0 +1,12 @@ +#!/bin/bash +. /etc/profile +logFile='/var/log/mythtv/myth_mtc.log' +date=`date +%Y-%m-%d` + +myth_mtc.py > $logFile 2>&1 +if [ $? = 0 ] +then + echo "Finished $date" >> $logFile +else + echo "Time Exceede $date" >> $logFile +fi diff --git a/abs/core/LinHES-system/optimize_mythdb.py b/abs/core/LinHES-system/optimize_mythdb.py new file mode 100755 index 0000000..e7b35ed --- /dev/null +++ b/abs/core/LinHES-system/optimize_mythdb.py @@ -0,0 +1,16 @@ +#!/usr/bin/python +# import MySQL module +import MySQLdb +import socket +import sys +db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") +cursor = db.cursor() +cursor.execute("SHOW tables") +result = cursor.fetchall() +ops=["REPAIR","OPTIMIZE","ANALYZE"] +for row in result: + ctable=row[0] + for op in ops: + print op,ctable + cmd= "%s table %s" %(op,ctable) + cursor.execute(cmd) diff --git a/abs/core/LinHES-system/unclutter-toggle.sh b/abs/core/LinHES-system/unclutter-toggle.sh new file mode 100644 index 0000000..0ead751 --- /dev/null +++ b/abs/core/LinHES-system/unclutter-toggle.sh @@ -0,0 +1,8 @@ +#!/bin/bash +PIDUNC=`pidof unclutter` +if [ -n "${PIDUNC}" ]; +then + killall -9 unclutter +else + /usr/X11R6/bin/unclutter -root -idle 1 -jitter 200 -noevents & +fi diff --git a/abs/core/LinHES-timezone/Makefile b/abs/core/LinHES-timezone/Makefile new file mode 100644 index 0000000..d543638 --- /dev/null +++ b/abs/core/LinHES-timezone/Makefile @@ -0,0 +1,62 @@ +all: linhes_timezone + +clean: + rm -Rf tables maps \ + WorldTZ.mdb WorldTZ.mfd WorldTZ.mas WorldTZ.mws WorldTZ_readme.txt map_data.txt \ + extract_map_data create_map_include linhes_timezone timezone_map.h + +#WorldTZ.mdb WorldTZ.mfd : WorldTZ_102.zip +# unzip WorldTZ_102.zip ; touch WorldTZ.mdb WorldTZ.mfd + +tables/AttrDesc : WorldTZ.mdb + mkdir -p tables + for table in $$(mdb-tables WorldTZ.mdb) ; do mdb-export WorldTZ.mdb $$table > tables/$$table ; done + sed -i 's/ //g' tables/AttrDesc # Fix TZ corruption. + echo 1254 >> tables/11001 # Add Central African Republic to the UTC+1 borders. + grep -v ^7867$$ tables/11017 > tables/11017.tmp ; mv tables/11017.tmp tables/11017 # Remove WA from UTC+9 + grep -v ^7866$$ tables/11017 > tables/11017.tmp ; mv tables/11017.tmp tables/11017 # Remove WA/SA border from UTC+9 + echo 7867 >> tables/11016 # Put WA in UTC+8 + +map_data.txt : extract_map_data WorldTZ.mfd + ./extract_map_data > map_data.txt + +extract_map_data : extract_map_data.c + cc --std=c99 -o extract_map_data -lm extract_map_data.c + +maps : map_data.txt tables/AttrDesc + mkdir maps + for zone in $$(cat tables/AttrDesc | grep 110 | grep -v 11000 | grep -v 11020 | cut -d ',' -f 1) ; \ + do \ + offset=$$(grep $$zone tables/AttrDesc | cut -d '"' -f 2 | sed 's/+//g' ) ; \ + echo $$offset >> maps/zones ; \ + boundary=boundary$$offset; \ + echo $$boundary ; \ + for section in $$(cat tables/$$zone) ; do grep "^$$section," map_data.txt >> maps/$$boundary ; done ; \ + done ; \ + for i in `cat tables/U8000 | grep -v ObjID | cut -d '"' -f 2 ` ; do \ + echo i=$$i ; \ + zone=$$(grep "^\\\"$$i\\\"," tables/U8000 | cut -d '"' -f 4) ; \ + echo zone=$$zone ; \ + tz_name=$$(grep "^\\\"$$i\\\"," tables/U7000 | cut -d '"' -f 4) ; \ + echo tz_name=$$tz_name ; \ + tz_lat=$$(grep "^$$i," tables/U5000 | cut -d ',' -f 2) ; \ + echo tz_lat=$$tz_lat ; \ + tz_lon=$$(grep "^$$i," tables/U6000 | cut -d ',' -f 2) ; \ + echo tz_lon=$$tz_lon ; \ + echo $$tz_lat $$tz_lon $$tz_name >> maps/places$$zone ; \ + done ;\ + for places in maps/places* ; do \ + sort -g -r $$places > $$places.sorted ; mv $$places.sorted $$places ; \ + done ; \ + sort -g maps/zones > maps/zones.sorted + cat Tux.csv >> maps/boundary14 + +./create_map_include : create_map_include.c maps + cc -lm --std=gnu99 -o ./create_map_include create_map_include.c + +timezone_map.h : ./create_map_include + ./create_map_include > timezone_map.h + +linhes_timezone : linhes_timezone.c timezone_map.h + cc --std=gnu99 -O3 -pthread -lXt -llirc_client -lm -o linhes_timezone linhes_timezone.c + diff --git a/abs/core/LinHES-timezone/PKGBUILD b/abs/core/LinHES-timezone/PKGBUILD new file mode 100644 index 0000000..e819965 --- /dev/null +++ b/abs/core/LinHES-timezone/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 23123 2009-01-03 02:43:02Z kevin $ +# Maintainer: Greg Frost +pkgname=LinHES-timezone +pkgver=1 +pkgrel=9 +pkgdesc="GUI timezone selector used by LinHES-config." +arch=i686 +depends=() +makedepends=(mdbtools) +source=(Makefile + Tux.csv + WorldTZ_102.zip + create_map_include.c + extract_map_data.c + linhes_timezone.c) + +build() { + cd ${srcdir} + make + MVDIR=$startdir/pkg/usr/MythVantage + mkdir -p $MVDIR/bin + install -m 0755 linhes_timezone $MVDIR/bin/timezone.bin +} + +md5sums=('53976e51e938c555f84b43c933339051' + '0710658b3b46cc659f56260c03b904ed' + '0d9e51af5f650dd329edce4531c42a58' + 'c01e2335603d8395004e32bae9060fde' + 'b20bd68272644f607fbfe7d50e7be42a') diff --git a/abs/core/LinHES-timezone/Tux.csv b/abs/core/LinHES-timezone/Tux.csv new file mode 100644 index 0000000..c781230 --- /dev/null +++ b/abs/core/LinHES-timezone/Tux.csv @@ -0,0 +1,1268 @@ +1,1,1,76.855404,-29.9543607 +1,1,1,76.92874033,-29.8978647 +1,1,1,77.039595,-29.7662397 +1,1,1,77.101748,-29.6618607 +1,1,1,77.20296833,-29.4918717 +1,1,1,77.21614533,-29.4420057 +1,1,1,77.22810267,-29.1836937 +1,1,1,77.24999233,-28.7108082 +1,1,1,77.136483,-28.4430318 +1,1,1,76.76400433,-28.0888536 +1,1,1,76.50763367,-27.8450787 +1,1,1,76.470453,-27.7418799 +1,1,1,76.61730033,-27.6816627 +1,1,1,76.75328567,-27.6258996 +1,1,1,76.92623267,-27.6951834 +1,1,1,77.235358,-27.9292605 +1,1,1,77.82467367,-28.3755045 +1,1,1,78.17055333,-28.453236 +1,1,1,79.450732,-28.4271351 +1,1,1,80.82728767,-28.3990692 +1,1,1,81.57573867,-28.269135 +1,1,1,82.33406533,-27.9265767 +1,1,1,82.82386233,-27.7053213 +1,1,1,83.14567633,-27.4522509 +1,1,1,83.55725167,-26.9646801 +1,1,1,83.84563667,-26.6230461 +1,1,1,83.978035,-26.5048983 +1,1,1,84.14106833,-26.4436992 +1,1,1,84.410816,-26.342442 +1,1,1,84.553379,-26.5419792 +1,1,1,84.54716033,-27.012081 +1,1,1,84.54428433,-27.2295078 +1,1,1,84.516651,-27.370002 +1,1,1,84.40524567,-27.7336173 +1,1,1,84.10637767,-28.7090871 +1,1,1,84.01263633,-29.2582017 +1,1,1,84.09731667,-29.5373907 +1,1,1,84.146749,-29.7003687 +1,1,1,84.30427033,-29.8236867 +1,1,1,84.447027,-29.8111707 +1,1,1,84.54704167,-29.8023987 +1,1,1,84.551579,-29.7957657 +1,1,1,84.576327,-29.6220807 +1,1,1,84.590433,-29.5230807 +1,1,1,84.646968,-29.1855807 +1,1,1,84.70196033,-28.872081 +1,1,1,84.75695233,-28.558581 +1,1,1,84.82448533,-28.153581 +1,1,1,84.852034,-27.972081 +1,1,1,84.92401,-27.4978746 +1,1,1,84.97764,-26.0267505 +1,1,1,84.98108467,-24.432081 +1,1,1,84.984057,-23.0559882 +1,1,1,84.98429267,-23.0514891 +1,1,1,85.064223,-22.8429828 +1,1,1,85.12628933,-22.681077 +1,1,1,85.182713,-22.5995196 +1,1,1,85.314223,-22.4816214 +1,1,1,85.515724,-22.3009764 +1,1,1,85.70807133,-22.2370386 +1,1,1,86.136654,-22.208238 +1,1,1,86.422576,-22.1890242 +1,1,1,86.46410867,-22.0055526 +1,1,1,86.55894167,-21.5866278 +1,1,1,86.83585067,-21.3499071 +1,1,1,87.38406533,-21.2191119 +1,1,1,87.560966,-21.1769061 +1,1,1,87.73832567,-21.1632777 +1,1,1,88.11739867,-21.1627617 +1,1,1,88.667827,-21.1620123 +1,1,1,88.81997067,-21.1929951 +1,1,1,89.31645833,-21.4069392 +1,1,1,89.538465,-21.5026053 +1,1,1,89.73406533,-21.5371119 +1,1,1,89.73406533,-21.4806105 +1,1,1,89.73406533,-21.4362687 +1,1,1,89.463923,-21.2078802 +1,1,1,89.245717,-21.0677427 +1,1,1,89.132385,-20.9949579 +1,1,1,88.93715033,-20.8976658 +1,1,1,88.811862,-20.8515381 +1,1,1,88.64378133,-20.7896553 +1,1,1,88.58136233,-20.7511659 +1,1,1,88.573754,-20.7047133 +1,1,1,88.568083,-20.6700873 +1,1,1,88.61667767,-20.46858 +1,1,1,88.68174267,-20.2569192 +1,1,1,88.87554667,-19.6264602 +1,1,1,88.94017267,-19.2255144 +1,1,1,88.94444667,-18.627081 +1,1,1,88.95149667,-17.6398806 +1,1,1,88.755679,-16.9871793 +1,1,1,88.12010267,-15.8793735 +1,1,1,87.53107533,-14.8527021 +1,1,1,86.906687,-14.0993799 +1,1,1,86.411835,-13.8183546 +1,1,1,86.27147167,-13.7386428 +1,1,1,86.100732,-13.6845003 +1,1,1,86.100732,-13.7197026 +1,1,1,86.100732,-13.7302218 +1,1,1,86.21937033,-13.8903102 +1,1,1,86.36437233,-14.0754549 +1,1,1,87.04365433,-14.9427879 +1,1,1,87.74921167,-16.0510407 +1,1,1,88.05093167,-16.7246151 +1,1,1,88.29283867,-17.2646601 +1,1,1,88.475271,-17.9958819 +1,1,1,88.534416,-18.6625104 +1,1,1,88.63134367,-19.7549865 +1,1,1,88.30012167,-20.6880249 +1,1,1,87.73406533,-20.9170656 +1,1,1,87.62101267,-20.9628093 +1,1,1,87.49374967,-20.9805066 +1,1,1,87.21739867,-20.9889129 +1,1,1,86.77804267,-21.0022779 +1,1,1,86.71652967,-20.9806425 +1,1,1,86.600911,-20.772081 +1,1,1,86.51775633,-20.622081 +1,1,1,86.49607367,-19.422081 +1,1,1,86.459138,-17.3779224 +1,1,1,86.35176733,-17.0298399 +1,1,1,85.16175567,-15.0963924 +1,1,1,84.79572233,-14.5016874 +1,1,1,84.72367033,-14.3450778 +1,1,1,84.567994,-13.8058203 +1,1,1,84.247566,-12.6958665 +1,1,1,83.93769367,-12.0451716 +1,1,1,83.44948267,-11.457081 +1,1,1,82.707034,-10.5627393 +1,1,1,82.610579,-10.192056 +1,1,1,82.90503633,-9.364743 +1,1,1,83.095287,-8.830212 +1,1,1,83.09175067,-8.5522572 +1,1,1,82.89236233,-8.3687127 +1,1,1,82.745919,-8.233905 +1,1,1,82.63204133,-8.1882813 +1,1,1,81.96194267,-7.9959492 +1,1,1,80.94620867,-7.7044128 +1,1,1,80.47644333,-7.4435208 +1,1,1,80.346353,-7.098705 +1,1,1,80.217653,-6.7575747 +1,1,1,80.31044067,-6.2076204 +1,1,1,80.54299267,-5.9332134 +1,1,1,80.709859,-5.7363147 +1,1,1,80.92306,-5.6518473 +1,1,1,81.249935,-5.6531328 +1,1,1,81.46517933,-5.6539794 +1,1,1,81.55348967,-5.6692146 +1,1,1,81.702253,-5.7311661 +1,1,1,81.93476967,-5.8279965 +1,1,1,82.11721033,-5.9709996 +1,1,1,82.210109,-6.1292406 +1,1,1,82.30952767,-6.2985879 +1,1,1,82.305878,-6.7035003 +1,1,1,82.20224167,-7.002081 +1,1,1,82.034794,-7.4845062 +1,1,1,82.03911733,-7.4326629 +1,1,1,82.158339,-7.5285348 +1,1,1,82.37780267,-7.7050164 +1,1,1,82.71869167,-7.7190024 +1,1,1,82.87032167,-7.5577458 +1,1,1,82.99996367,-7.419873 +1,1,1,83.039238,-7.2783555 +1,1,1,83.05783367,-6.882081 +1,1,1,83.078155,-6.4490289 +1,1,1,83.02605433,-6.1615194 +1,1,1,82.82885033,-5.6184666 +1,1,1,82.558491,-4.8739614 +1,1,1,82.28860033,-4.6589769 +1,1,1,81.47380867,-4.5390918 +1,1,1,80.86367067,-4.4493186 +1,1,1,80.531004,-4.5204525 +1,1,1,80.22387067,-4.8063654 +1,1,1,79.741864,-5.2550691 +1,1,1,79.50483867,-5.9726496 +1,1,1,79.60021367,-6.6944496 +1,1,1,79.652888,-7.0930872 +1,1,1,79.643091,-7.1093583 +1,1,1,79.392839,-7.0388766 +1,1,1,79.16874567,-6.9757623 +1,1,1,78.68066533,-6.9245205 +1,1,1,78.397751,-6.9344061 +1,1,1,78.09219233,-6.9450828 +1,1,1,78.06754467,-6.9213609 +1,1,1,78.066821,-6.6159078 +1,1,1,78.06386633,-5.3686707 +1,1,1,77.64740567,-4.6928508 +1,1,1,76.88406533,-4.6965666 +1,1,1,76.352924,-4.699152 +1,1,1,75.923553,-5.05956 +1,1,1,75.76358567,-5.637081 +1,1,1,75.70119133,-5.8623393 +1,1,1,75.71174367,-6.50646 +1,1,1,75.783982,-6.882081 +1,1,1,75.926123,-7.6211817 +1,1,1,76.238141,-7.9884852 +1,1,1,76.47843367,-7.699581 +1,1,1,76.57874333,-7.5789789 +1,1,1,76.66785,-7.4229411 +1,1,1,76.66603233,-7.3710708 +1,1,1,76.665281,-7.3496265 +1,1,1,76.591027,-7.3010112 +1,1,1,76.501024,-7.2630369 +1,1,1,76.40085433,-7.2207732 +1,1,1,76.310634,-7.1550414 +1,1,1,76.268421,-7.0935699 +1,1,1,76.08144633,-6.8212914 +1,1,1,75.98584067,-6.3342483 +1,1,1,76.06770867,-6.0710841 +1,1,1,76.17040333,-5.740974 +1,1,1,76.67391267,-5.5373964 +1,1,1,77.02102633,-5.6856411 +1,1,1,77.31483533,-5.8111203 +1,1,1,77.62551633,-6.3944817 +1,1,1,77.59250267,-6.758694 +1,1,1,77.566032,-7.0507236 +1,1,1,77.506503,-7.1408397 +1,1,1,77.211671,-7.3352052 +1,1,1,77.06815467,-7.4298174 +1,1,1,76.830732,-7.6036137 +1,1,1,76.68406533,-7.7214198 +1,1,1,76.53739867,-7.8392259 +1,1,1,76.35739867,-7.9744995 +1,1,1,76.28406533,-8.0220279 +1,1,1,75.90931267,-8.2649109 +1,1,1,75.70080967,-8.5503375 +1,1,1,75.70075833,-8.8205352 +1,1,1,75.70072467,-8.9979627 +1,1,1,75.78157233,-9.0923688 +1,1,1,76.03033933,-9.2053884 +1,1,1,76.22540433,-9.2940099 +1,1,1,76.40432967,-9.4502322 +1,1,1,76.590694,-9.6946422 +1,1,1,76.839235,-10.0205949 +1,1,1,77.13504633,-10.1231244 +1,1,1,77.81739867,-10.1198235 +1,1,1,78.64636833,-10.1158131 +1,1,1,79.38927067,-9.9577836 +1,1,1,80.78353167,-9.4888698 +1,1,1,81.53932767,-9.2346828 +1,1,1,81.75062,-9.1519146 +1,1,1,81.794837,-9.0927183 +1,1,1,81.915689,-8.930925 +1,1,1,82.06130433,-8.817081 +1,1,1,82.14739867,-8.817081 +1,1,1,82.26254533,-8.817081 +1,1,1,82.36739867,-8.9161275 +1,1,1,82.36739867,-9.024897 +1,1,1,82.36739867,-9.206961 +1,1,1,82.053905,-9.3560016 +1,1,1,80.96739867,-9.6904827 +1,1,1,80.64656533,-9.7892514 +1,1,1,80.15156567,-9.9691704 +1,1,1,79.86739867,-10.0903026 +1,1,1,79.29183033,-10.3356516 +1,1,1,79.13397767,-10.3870272 +1,1,1,78.75541833,-10.4522145 +1,1,1,78.44709567,-10.5053073 +1,1,1,77.72847233,-10.5112692 +1,1,1,77.33799367,-10.4639739 +1,1,1,77.01553533,-10.4249175 +1,1,1,76.82474667,-10.4463762 +1,1,1,76.840486,-10.5199308 +1,1,1,76.857139,-10.5977556 +1,1,1,77.59504167,-11.1194427 +1,1,1,77.76571833,-11.1740574 +1,1,1,78.00549033,-11.2507821 +1,1,1,78.47855267,-11.2641102 +1,1,1,78.78804667,-11.2028607 +1,1,1,79.25106733,-11.1112278 +1,1,1,80.71495133,-10.5459018 +1,1,1,81.438632,-10.1792517 +1,1,1,81.684003,-10.0549356 +1,1,1,81.819503,-10.0041243 +1,1,1,81.906403,-10.003842 +1,1,1,82.05345267,-10.0033644 +1,1,1,82.16739867,-10.0854555 +1,1,1,82.16739867,-10.191873 +1,1,1,82.16739867,-10.3062546 +1,1,1,81.92110233,-10.5003639 +1,1,1,81.64838133,-10.6009173 +1,1,1,81.174322,-10.7757051 +1,1,1,81.072904,-10.8235059 +1,1,1,80.600732,-11.0946978 +1,1,1,79.95183567,-11.4673914 +1,1,1,79.66962367,-11.6529351 +1,1,1,79.243827,-11.9868108 +1,1,1,78.786,-12.3458022 +1,1,1,78.65726133,-12.3943269 +1,1,1,78.150732,-12.3988248 +1,1,1,77.745759,-12.4024212 +1,1,1,77.62394067,-12.3660336 +1,1,1,77.35892667,-12.1623093 +1,1,1,77.152538,-12.0036525 +1,1,1,76.65945067,-11.4503094 +1,1,1,76.51906367,-11.2198146 +1,1,1,76.37376833,-10.9812612 +1,1,1,76.04734067,-10.647081 +1,1,1,75.95961667,-10.647081 +1,1,1,75.90277433,-10.647081 +1,1,1,75.897383,-10.6603773 +1,1,1,75.80147867,-11.037081 +1,1,1,75.73310833,-11.3056344 +1,1,1,75.487643,-11.8160808 +1,1,1,75.08803067,-12.5206992 +1,1,1,74.60510933,-13.3722126 +1,1,1,74.58443433,-13.4465865 +1,1,1,74.583096,-14.337081 +1,1,1,74.581978,-15.081264 +1,1,1,74.602826,-15.0165909 +1,1,1,74.2011,-15.522081 +1,1,1,73.70643267,-16.1445192 +1,1,1,72.94018733,-17.774859 +1,1,1,72.755877,-18.597081 +1,1,1,72.61772367,-19.2133944 +1,1,1,72.52044367,-20.2588974 +1,1,1,72.54652333,-20.847081 +1,1,1,72.56724433,-21.3144093 +1,1,1,72.54048367,-21.4544064 +1,1,1,72.41739867,-21.5225967 +1,1,1,72.29094533,-21.5926533 +1,1,1,72.13967633,-21.5202696 +1,1,1,71.83101133,-21.2420052 +1,1,1,71.34181367,-20.8009887 +1,1,1,71.18672967,-20.4366534 +1,1,1,71.19042133,-19.737081 +1,1,1,71.192773,-19.2915099 +1,1,1,71.23668333,-18.9518016 +1,1,1,71.33486267,-18.6196296 +1,1,1,71.41748833,-18.34008 +1,1,1,71.419239,-18.2595 +1,1,1,71.34239867,-18.2727102 +1,1,1,71.26374233,-18.2862324 +1,1,1,71.08480933,-18.6186462 +1,1,1,70.99736733,-18.9136938 +1,1,1,70.94423633,-19.0929687 +1,1,1,70.92262267,-19.2748251 +1,1,1,70.91020433,-19.647081 +1,1,1,70.89503933,-20.1016662 +1,1,1,70.90072433,-20.1702489 +1,1,1,70.97983433,-20.487081 +1,1,1,71.07909133,-20.8846017 +1,1,1,71.27018533,-21.2592948 +1,1,1,71.53267267,-21.571074 +1,1,1,71.93530067,-22.0493106 +1,1,1,73.97860667,-23.6830821 +1,1,1,75.340802,-24.6159495 +1,1,1,75.66534067,-24.8382021 +1,1,1,76.02974533,-25.1161581 +1,1,1,76.15059033,-25.2336294 +1,1,1,76.87062033,-25.9335582 +1,1,1,76.72979533,-26.5766649 +1,1,1,75.747889,-27.0726498 +1,1,1,75.59361933,-27.1505751 +1,1,1,75.46739867,-27.2193429 +1,1,1,75.46739867,-27.2254671 +1,1,1,75.46739867,-27.2315913 +1,1,1,75.59283967,-27.3885846 +1,1,1,75.74615667,-27.5743416 +1,1,1,76.310185,-28.2577107 +1,1,1,76.637808,-28.7580405 +1,1,1,76.751267,-29.1092967 +1,1,1,76.82604367,-29.3407977 +1,1,1,76.82189333,-29.6727987 +1,1,1,76.741545,-29.8869987 +1,1,1,76.70645533,-29.9805447 +1,1,1,76.68771767,-30.057081 +1,1,1,76.69990567,-30.057081 +1,1,1,76.71209333,-30.057081 +1,1,1,76.78206767,-30.010857 +1,1,1,76.855404,-29.9543607 +1,,,, +1,1,1,83.39948633,-9.0116883 +1,1,1,83.39948633,-9.7644165 +1,1,1,82.40413033,-9.9231924 +1,1,1,81.92041533,-10.1937858 +1,1,1,81.47003367,-10.5693795 +1,1,1,78.88129267,-11.626791 +1,1,1,78.19452267,-11.626791 +1,1,1,77.08985933,-11.4189588 +1,1,1,75.745382,-9.9346131 +1,1,1,75.57289233,-8.9516883 +1,1,1,75.57289233,-8.3789601 +1,1,1,76.384915,-7.9201842 +1,1,1,76.83529667,-7.5445908 +1,1,1,77.28567833,-7.1689971 +1,1,1,77.80775267,-6.8165856 +1,1,1,78.69452267,-6.9665856 +1,1,1,79.38129267,-6.9665856 +1,1,1,80.453367,-7.2589971 +1,1,1,80.90374867,-7.6345908 +1,1,1,81.80413033,-7.9051842 +1,1,1,83.39948633,-8.0789601 +1,1,1,83.39948633,-9.0116883 +1,,,, +1,1,1,65.25322551,-29.1342738 +1,1,1,66.27848633,-29.5533651 +1,1,1,68.66675,-30.084747 +1,1,1,69.50831067,-30.188865 +1,1,1,70.07025467,-30.400833 +1,1,1,73.78959533,-31.181817 +1,1,1,74.64648233,-31.181817 +1,1,1,75.916137,-30.354951 +1,1,1,76.12565833,-29.1327939 +1,1,1,75.768862,-27.8902383 +1,1,1,74.18628467,-25.5899535 +1,1,1,72.96332333,-22.5742398 +1,1,1,70.004886,-21.5368506 +1,1,1,69.70502533,-21.66834 +1,1,1,69.46355367,-22.0252677 +1,1,1,69.35664667,-22.0862301 +1,1,1,69.14370867,-22.2076554 +1,1,1,68.90653467,-22.476036 +1,1,1,68.755944,-22.8103248 +1,1,1,68.59962233,-23.1573357 +1,1,1,68.456656,-23.5826853 +1,1,1,68.28187143,-24.2029191 +1,1,1,67.93997497,-24.8220828 +1,1,1,66.54368527,-24.2653119 +1,1,1,65.58733593,-24.7126806 +1,1,1,65.23879317,-25.6663359 +1,1,1,65.83377103,-28.0102998 +1,1,1,65.25322551,-29.1342738 +1,,,, +1,1,1,92.80707967,-25.6089555 +1,1,1,93.447312,-26.0799999 +1,1,1,94.44908733,-26.4293025 +1,1,1,94.902563,-27.2116317 +1,1,1,94.04073333,-28.1395176 +1,1,1,93.29644233,-28.4666676 +1,1,1,92.202278,-28.9346199 +1,1,1,90.70235733,-29.576106 +1,1,1,89.76382233,-30.192921 +1,1,1,89.075979,-30.598998 +1,1,1,88.389209,-31.141311 +1,1,1,86.79820267,-31.457385 +1,1,1,86.07394933,-31.380675 +1,1,1,85.61789,-31.09584 +1,1,1,85.10331433,-27.8321808 +1,1,1,85.26955667,-26.7613737 +1,1,1,85.26955667,-26.1886455 +1,1,1,84.493746,-23.9073477 +1,1,1,85.73500267,-22.5149148 +1,1,1,86.93859867,-22.3087944 +1,1,1,87.974941,-23.2965903 +1,1,1,88.73703267,-23.9744832 +1,1,1,89.36738,-23.5917795 +1,1,1,90.36322833,-23.0082537 +1,1,1,91.116409,-22.8587616 +1,1,1,91.36382433,-22.8096543 +1,1,1,91.37498,-22.5768555 +1,1,1,91.88970533,-22.8199668 +1,1,1,92.13714233,-22.9368345 +1,1,1,92.27856133,-23.303886 +1,1,1,92.30609367,-23.6162919 +1,1,1,92.35042733,-24.1193412 +1,1,1,92.40536433,-25.1873916 +1,1,1,92.80707967,-25.6089555 +1,,,, +1,1,1,76.796339,-30.465903 +1,1,1,76.348262,-30.659355 +1,1,1,75.53406533,-31.274514 +1,1,1,75.071888,-31.623708 +1,1,1,74.86334667,-31.752909 +1,1,1,74.64112133,-31.827741 +1,1,1,74.45791933,-31.88943 +1,1,1,74.04635933,-31.925751 +1,1,1,73.850732,-31.897494 +1,1,1,73.43139467,-31.836921 +1,1,1,72.90028733,-31.675335 +1,1,1,71.660628,-31.231164 +1,1,1,70.25954733,-30.729156 +1,1,1,69.72204033,-30.585687 +1,1,1,68.21739867,-30.312117 +1,1,1,67.247373,-30.13575 +1,1,1,65.887164,-29.8360017 +1,1,1,65.621183,-29.7399897 +1,1,1,65.38106,-29.6533137 +1,1,1,65.131335,-29.4707157 +1,1,1,65.05505133,-29.3260347 +1,1,1,65.019468,-29.2585467 +1,1,1,65.000732,-29.1433707 +1,1,1,65.000732,-28.9921137 +1,1,1,65.000732,-28.7892867 +1,1,1,65.024892,-28.6968354 +1,1,1,65.19946033,-28.2316485 +1,1,1,65.51655333,-27.3866643 +1,1,1,65.531868,-27.0409599 +1,1,1,65.285382,-26.292081 +1,1,1,65.01223733,-25.4622072 +1,1,1,65.076128,-24.860463 +1,1,1,65.46956567,-24.5573715 +1,1,1,65.69200033,-24.3860154 +1,1,1,65.854067,-24.3571404 +1,1,1,66.59622667,-24.3566376 +1,1,1,67.317763,-24.3561486 +1,1,1,67.561471,-24.3227136 +1,1,1,67.840791,-24.1858911 +1,1,1,68.16241633,-24.0283458 +1,1,1,68.343495,-23.7879642 +1,1,1,68.556043,-23.2363968 +1,1,1,68.69392533,-22.8785889 +1,1,1,68.782491,-22.737081 +1,1,1,68.86855067,-22.737081 +1,1,1,68.94116133,-22.737081 +1,1,1,69.00043267,-22.8923652 +1,1,1,69.00023567,-23.082081 +1,1,1,69.000062,-23.2492884 +1,1,1,68.79049567,-23.9580537 +1,1,1,68.68674667,-24.1423191 +1,1,1,68.57587233,-24.3392385 +1,1,1,68.42646333,-24.4909803 +1,1,1,68.25375,-24.5820753 +1,1,1,67.93090367,-24.7523559 +1,1,1,67.30938033,-24.7989714 +1,1,1,66.627499,-24.7040478 +1,1,1,66.19182133,-24.6433974 +1,1,1,65.941701,-24.6560673 +1,1,1,65.77515233,-24.7472232 +1,1,1,65.52823067,-24.882369 +1,1,1,65.487836,-25.1859936 +1,1,1,65.66699233,-25.5602001 +1,1,1,66.01370067,-26.2843758 +1,1,1,66.08016167,-26.4377292 +1,1,1,66.15319633,-26.682081 +1,1,1,66.24046867,-26.9740665 +1,1,1,66.25429233,-27.2271084 +1,1,1,66.199556,-27.5306793 +1,1,1,66.14534667,-27.8313255 +1,1,1,66.04962,-28.0186785 +1,1,1,65.766527,-28.378188 +1,1,1,65.62077233,-28.5632871 +1,1,1,65.48698967,-28.7620893 +1,1,1,65.469232,-28.8199713 +1,1,1,65.41939033,-28.9824327 +1,1,1,65.49289333,-29.1072927 +1,1,1,65.69176233,-29.1979917 +1,1,1,65.86036133,-29.2748817 +1,1,1,68.26560033,-29.8337757 +1,1,1,69.96739867,-30.191496 +1,1,1,70.48989867,-30.301326 +1,1,1,71.442819,-30.511125 +1,1,1,72.084999,-30.657711 +1,1,1,72.72717933,-30.8043 +1,1,1,73.39467933,-30.939909 +1,1,1,73.56833233,-30.959067 +1,1,1,74.10169033,-31.017906 +1,1,1,74.60002667,-30.948642 +1,1,1,74.942352,-30.768087 +1,1,1,75.421196,-30.515529 +1,1,1,75.7536,-29.8888437 +1,1,1,75.79281367,-29.1647037 +1,1,1,75.81862433,-28.6880682 +1,1,1,75.70168733,-28.2612894 +1,1,1,75.392592,-27.7040352 +1,1,1,75.15765367,-27.2804757 +1,1,1,75.041572,-27.1140684 +1,1,1,73.91585533,-25.587081 +1,1,1,71.933664,-22.8983217 +1,1,1,71.07248333,-22.0019325 +1,1,1,70.34005433,-21.865086 +1,1,1,70.104947,-21.8211588 +1,1,1,69.94548167,-21.8455335 +1,1,1,69.63044533,-21.9735519 +1,1,1,69.325104,-22.097631 +1,1,1,69.221955,-22.1041212 +1,1,1,69.14895333,-22.0038483 +1,1,1,69.07888667,-21.9076065 +1,1,1,69.02299933,-21.3710013 +1,1,1,69.04253633,-20.982081 +1,1,1,69.06530533,-20.5288287 +1,1,1,69.16171833,-20.258697 +1,1,1,69.52972033,-19.617081 +1,1,1,70.256524,-18.3498906 +1,1,1,70.55372667,-17.7458586 +1,1,1,71.050097,-16.527081 +1,1,1,71.558985,-15.2775687 +1,1,1,71.76555233,-14.9332044 +1,1,1,72.57072267,-13.992081 +1,1,1,73.01040833,-13.4781546 +1,1,1,73.543055,-12.8023269 +1,1,1,73.91984733,-12.2802978 +1,1,1,74.06205267,-12.0832785 +1,1,1,74.339017,-11.719581 +1,1,1,74.53532367,-11.472081 +1,1,1,75.095885,-10.765335 +1,1,1,75.122056,-10.6978155 +1,1,1,75.06933133,-10.0943745 +1,1,1,74.98993067,-9.1856298 +1,1,1,74.858305,-6.138222 +1,1,1,74.855428,-5.142081 +1,1,1,74.85268733,-4.1930634 +1,1,1,74.85957767,-4.0511133 +1,1,1,74.92707167,-3.6661065 +1,1,1,75.064661,-2.88125388 +1,1,1,75.277857,-2.29223148 +1,1,1,75.60891567,-1.78229424 +1,1,1,75.738286,-1.58302263 +1,1,1,75.87990233,-1.42565259 +1,1,1,76.150732,-1.18020579 +1,1,1,76.69153767,-0.69008577 +1,1,1,77.15508567,-0.45480666 +1,1,1,77.94670067,-0.26864106 +1,1,1,78.591125,-0.11709054 +1,1,1,78.751945,-0.10202856 +1,1,1,79.71739867,-0.10280205 +1,1,1,80.70900433,-0.10359648 +1,1,1,81.027966,-0.13896987 +1,1,1,81.76739867,-0.33015063 +1,1,1,83.50098367,-0.77836998 +1,1,1,84.74342133,-1.85924034 +1,1,1,85.160579,-3.282081 +1,1,1,85.314403,-3.8067423 +1,1,1,85.398232,-4.4309859 +1,1,1,85.517117,-5.937081 +1,1,1,85.64418833,-7.5468843 +1,1,1,85.71925467,-8.1150543 +1,1,1,85.88871267,-8.7496575 +1,1,1,86.00464133,-9.1837986 +1,1,1,86.13991767,-9.466722 +1,1,1,86.62023733,-10.2796056 +1,1,1,87.58506,-11.9124522 +1,1,1,87.98585167,-12.4821192 +1,1,1,88.97777333,-13.6304991 +1,1,1,90.536213,-15.4347558 +1,1,1,91.29076767,-16.8701352 +1,1,1,91.736821,-18.8789994 +1,1,1,92.12084333,-20.6084994 +1,1,1,92.16712067,-21.2690301 +1,1,1,91.94616833,-21.867081 +1,1,1,91.81313733,-22.2271551 +1,1,1,91.683562,-22.4059821 +1,1,1,91.22644167,-22.8603741 +1,1,1,90.26557933,-23.8155024 +1,1,1,89.198029,-24.417081 +1,1,1,88.463939,-24.417081 +1,1,1,87.795843,-24.417081 +1,1,1,87.185413,-24.008061 +1,1,1,86.75108333,-23.2693782 +1,1,1,86.54532967,-22.8599499 +1,1,1,86.57205633,-22.5339264 +1,1,1,85.99003933,-22.6492446 +1,1,1,85.70750867,-22.7198535 +1,1,1,85.47464567,-23.028381 +1,1,1,85.402962,-23.427081 +1,1,1,85.35155233,-23.7130176 +1,1,1,85.36006567,-24.8049417 +1,1,1,85.41582633,-25.077081 +1,1,1,85.44118233,-25.200831 +1,1,1,85.51853233,-25.565331 +1,1,1,85.58771533,-25.887081 +1,1,1,85.707312,-26.4432891 +1,1,1,85.71350733,-26.5016112 +1,1,1,85.71359667,-27.072081 +1,1,1,85.713679,-27.5966244 +1,1,1,85.69992133,-27.7550832 +1,1,1,85.604202,-28.332081 +1,1,1,85.51454767,-28.8725187 +1,1,1,85.49699967,-29.0575047 +1,1,1,85.50733533,-29.3532267 +1,1,1,85.51924,-29.6938647 +1,1,1,85.52672533,-29.7271977 +1,1,1,85.639164,-29.9402847 +1,1,1,85.77529633,-30.198276 +1,1,1,86.07673267,-30.508464 +1,1,1,86.337871,-30.65928 +1,1,1,86.90982467,-30.989598 +1,1,1,87.710393,-31.01199 +1,1,1,88.38406533,-30.716508 +1,1,1,88.571673,-30.634221 +1,1,1,88.84837967,-30.456369 +1,1,1,89.31739867,-30.116616 +1,1,1,90.072681,-29.5694907 +1,1,1,90.63551867,-29.2172937 +1,1,1,91.06430733,-29.0234787 +1,1,1,91.22580833,-28.9504788 +1,1,1,91.61882233,-28.8150999 +1,1,1,91.937672,-28.7226366 +1,1,1,93.25075233,-28.3418562 +1,1,1,93.850785,-28.1128353 +1,1,1,94.18406533,-27.8652318 +1,1,1,94.57856733,-27.572145 +1,1,1,94.76987033,-27.2581653 +1,1,1,94.698758,-27.0204831 +1,1,1,94.61085767,-26.7266901 +1,1,1,94.23498767,-26.518434 +1,1,1,93.46378133,-26.3362263 +1,1,1,92.88192333,-26.1987549 +1,1,1,92.74431133,-26.1362328 +1,1,1,92.505086,-25.9006572 +1,1,1,92.29500633,-25.6937826 +1,1,1,92.133117,-25.39734 +1,1,1,92.01436767,-25.002081 +1,1,1,91.897648,-24.6135783 +1,1,1,91.88057467,-23.9867937 +1,1,1,91.98004567,-23.742081 +1,1,1,92.05058067,-23.5685544 +1,1,1,92.121032,-23.487081 +1,1,1,92.20054767,-23.487081 +1,1,1,92.29436433,-23.487081 +1,1,1,92.33985967,-23.6340603 +1,1,1,92.36769767,-24.027081 +1,1,1,92.398803,-24.46623 +1,1,1,92.47803633,-24.6961221 +1,1,1,92.69997733,-24.9911763 +1,1,1,93.01770233,-25.4135685 +1,1,1,93.354924,-25.6871316 +1,1,1,94.11739867,-26.1410259 +1,1,1,94.91470433,-26.6156547 +1,1,1,95.13260133,-26.8444662 +1,1,1,95.13260133,-27.207081 +1,1,1,95.13260133,-27.5510142 +1,1,1,94.96461067,-27.7196763 +1,1,1,94.09761067,-28.2462096 +1,1,1,93.38710167,-28.6777053 +1,1,1,93.11937333,-28.8140247 +1,1,1,92.519382,-29.0497977 +1,1,1,91.33510533,-29.5151727 +1,1,1,90.49736533,-30.028977 +1,1,1,89.59320367,-30.844485 +1,1,1,88.821454,-31.540563 +1,1,1,88.48255933,-31.725402 +1,1,1,87.793589,-31.826028 +1,1,1,87.48410267,-31.871226 +1,1,1,86.808151,-31.863612 +1,1,1,86.41027467,-31.81044 +1,1,1,85.570476,-31.698213 +1,1,1,85.11191633,-31.426899 +1,1,1,84.72885567,-30.815604 +1,1,1,84.48621667,-30.4284 +1,1,1,84.37251967,-30.339555 +1,1,1,84.078955,-30.307761 +1,1,1,83.95343267,-30.294168 +1,1,1,82.553232,-30.282828 +1,1,1,80.96739867,-30.282564 +1,1,1,78.35949067,-30.282126 +1,1,1,78.048197,-30.287202 +1,1,1,77.70857367,-30.335682 +1,1,1,76.796339,-30.465903 +1,1,1,76.855404,-29.9543607 +1,1,1,76.92874033,-29.8978647 +1,1,1,77.039595,-29.7662397 +1,1,1,77.101748,-29.6618607 +1,1,1,77.20296833,-29.4918717 +1,1,1,77.21614533,-29.4420057 +1,1,1,77.22810267,-29.1836937 +1,1,1,77.24999233,-28.7108082 +1,1,1,77.136483,-28.4430318 +1,1,1,76.76400433,-28.0888536 +1,1,1,76.50763367,-27.8450787 +1,1,1,76.470453,-27.7418799 +1,1,1,76.61730033,-27.6816627 +1,1,1,76.75328567,-27.6258996 +1,1,1,76.92623267,-27.6951834 +1,1,1,77.235358,-27.9292605 +1,1,1,77.82467367,-28.3755045 +1,1,1,78.17055333,-28.453236 +1,1,1,79.450732,-28.4271351 +1,1,1,80.82728767,-28.3990692 +1,1,1,81.57573867,-28.269135 +1,1,1,82.33406533,-27.9265767 +1,1,1,82.82386233,-27.7053213 +1,1,1,83.14567633,-27.4522509 +1,1,1,83.55725167,-26.9646801 +1,1,1,83.84563667,-26.6230461 +1,1,1,83.978035,-26.5048983 +1,1,1,84.14106833,-26.4436992 +1,1,1,84.410816,-26.342442 +1,1,1,84.553379,-26.5419792 +1,1,1,84.54716033,-27.012081 +1,1,1,84.54428433,-27.2295078 +1,1,1,84.516651,-27.370002 +1,1,1,84.40524567,-27.7336173 +1,1,1,84.10637767,-28.7090871 +1,1,1,84.01263633,-29.2582017 +1,1,1,84.09731667,-29.5373907 +1,1,1,84.146749,-29.7003687 +1,1,1,84.30427033,-29.8236867 +1,1,1,84.447027,-29.8111707 +1,1,1,84.54704167,-29.8023987 +1,1,1,84.551579,-29.7957657 +1,1,1,84.576327,-29.6220807 +1,1,1,84.590433,-29.5230807 +1,1,1,84.646968,-29.1855807 +1,1,1,84.70196033,-28.872081 +1,1,1,84.75695233,-28.558581 +1,1,1,84.82448533,-28.153581 +1,1,1,84.852034,-27.972081 +1,1,1,84.92401,-27.4978746 +1,1,1,84.97764,-26.0267505 +1,1,1,84.98108467,-24.432081 +1,1,1,84.984057,-23.0559882 +1,1,1,84.98429267,-23.0514891 +1,1,1,85.064223,-22.8429828 +1,1,1,85.12628933,-22.681077 +1,1,1,85.182713,-22.5995196 +1,1,1,85.314223,-22.4816214 +1,1,1,85.515724,-22.3009764 +1,1,1,85.70807133,-22.2370386 +1,1,1,86.136654,-22.208238 +1,1,1,86.422576,-22.1890242 +1,1,1,86.46410867,-22.0055526 +1,1,1,86.55894167,-21.5866278 +1,1,1,86.83585067,-21.3499071 +1,1,1,87.38406533,-21.2191119 +1,1,1,87.560966,-21.1769061 +1,1,1,87.73832567,-21.1632777 +1,1,1,88.11739867,-21.1627617 +1,1,1,88.667827,-21.1620123 +1,1,1,88.81997067,-21.1929951 +1,1,1,89.31645833,-21.4069392 +1,1,1,89.538465,-21.5026053 +1,1,1,89.73406533,-21.5371119 +1,1,1,89.73406533,-21.4806105 +1,1,1,89.73406533,-21.4362687 +1,1,1,89.463923,-21.2078802 +1,1,1,89.245717,-21.0677427 +1,1,1,89.132385,-20.9949579 +1,1,1,88.93715033,-20.8976658 +1,1,1,88.811862,-20.8515381 +1,1,1,88.64378133,-20.7896553 +1,1,1,88.58136233,-20.7511659 +1,1,1,88.573754,-20.7047133 +1,1,1,88.568083,-20.6700873 +1,1,1,88.61667767,-20.46858 +1,1,1,88.68174267,-20.2569192 +1,1,1,88.87554667,-19.6264602 +1,1,1,88.94017267,-19.2255144 +1,1,1,88.94444667,-18.627081 +1,1,1,88.95149667,-17.6398806 +1,1,1,88.755679,-16.9871793 +1,1,1,88.12010267,-15.8793735 +1,1,1,87.53107533,-14.8527021 +1,1,1,86.906687,-14.0993799 +1,1,1,86.411835,-13.8183546 +1,1,1,86.27147167,-13.7386428 +1,1,1,86.100732,-13.6845003 +1,1,1,86.100732,-13.7197026 +1,1,1,86.100732,-13.7302218 +1,1,1,86.21937033,-13.8903102 +1,1,1,86.36437233,-14.0754549 +1,1,1,87.04365433,-14.9427879 +1,1,1,87.74921167,-16.0510407 +1,1,1,88.05093167,-16.7246151 +1,1,1,88.29283867,-17.2646601 +1,1,1,88.475271,-17.9958819 +1,1,1,88.534416,-18.6625104 +1,1,1,88.63134367,-19.7549865 +1,1,1,88.30012167,-20.6880249 +1,1,1,87.73406533,-20.9170656 +1,1,1,87.62101267,-20.9628093 +1,1,1,87.49374967,-20.9805066 +1,1,1,87.21739867,-20.9889129 +1,1,1,86.77804267,-21.0022779 +1,1,1,86.71652967,-20.9806425 +1,1,1,86.600911,-20.772081 +1,1,1,86.51775633,-20.622081 +1,1,1,86.49607367,-19.422081 +1,1,1,86.459138,-17.3779224 +1,1,1,86.35176733,-17.0298399 +1,1,1,85.16175567,-15.0963924 +1,1,1,84.79572233,-14.5016874 +1,1,1,84.72367033,-14.3450778 +1,1,1,84.567994,-13.8058203 +1,1,1,84.247566,-12.6958665 +1,1,1,83.93769367,-12.0451716 +1,1,1,83.44948267,-11.457081 +1,1,1,82.707034,-10.5627393 +1,1,1,82.610579,-10.192056 +1,1,1,82.90503633,-9.364743 +1,1,1,83.095287,-8.830212 +1,1,1,83.09175067,-8.5522572 +1,1,1,82.89236233,-8.3687127 +1,1,1,82.745919,-8.233905 +1,1,1,82.63204133,-8.1882813 +1,1,1,81.96194267,-7.9959492 +1,1,1,80.94620867,-7.7044128 +1,1,1,80.47644333,-7.4435208 +1,1,1,80.346353,-7.098705 +1,1,1,80.217653,-6.7575747 +1,1,1,80.31044067,-6.2076204 +1,1,1,80.54299267,-5.9332134 +1,1,1,80.709859,-5.7363147 +1,1,1,80.92306,-5.6518473 +1,1,1,81.249935,-5.6531328 +1,1,1,81.46517933,-5.6539794 +1,1,1,81.55348967,-5.6692146 +1,1,1,81.702253,-5.7311661 +1,1,1,81.93476967,-5.8279965 +1,1,1,82.11721033,-5.9709996 +1,1,1,82.210109,-6.1292406 +1,1,1,82.30952767,-6.2985879 +1,1,1,82.305878,-6.7035003 +1,1,1,82.20224167,-7.002081 +1,1,1,82.034794,-7.4845062 +1,1,1,82.03911733,-7.4326629 +1,1,1,82.158339,-7.5285348 +1,1,1,82.37780267,-7.7050164 +1,1,1,82.71869167,-7.7190024 +1,1,1,82.87032167,-7.5577458 +1,1,1,82.99996367,-7.419873 +1,1,1,83.039238,-7.2783555 +1,1,1,83.05783367,-6.882081 +1,1,1,83.078155,-6.4490289 +1,1,1,83.02605433,-6.1615194 +1,1,1,82.82885033,-5.6184666 +1,1,1,82.558491,-4.8739614 +1,1,1,82.28860033,-4.6589769 +1,1,1,81.47380867,-4.5390918 +1,1,1,80.86367067,-4.4493186 +1,1,1,80.531004,-4.5204525 +1,1,1,80.22387067,-4.8063654 +1,1,1,79.741864,-5.2550691 +1,1,1,79.50483867,-5.9726496 +1,1,1,79.60021367,-6.6944496 +1,1,1,79.652888,-7.0930872 +1,1,1,79.643091,-7.1093583 +1,1,1,79.392839,-7.0388766 +1,1,1,79.16874567,-6.9757623 +1,1,1,78.68066533,-6.9245205 +1,1,1,78.397751,-6.9344061 +1,1,1,78.09219233,-6.9450828 +1,1,1,78.06754467,-6.9213609 +1,1,1,78.066821,-6.6159078 +1,1,1,78.06386633,-5.3686707 +1,1,1,77.64740567,-4.6928508 +1,1,1,76.88406533,-4.6965666 +1,1,1,76.352924,-4.699152 +1,1,1,75.923553,-5.05956 +1,1,1,75.76358567,-5.637081 +1,1,1,75.70119133,-5.8623393 +1,1,1,75.71174367,-6.50646 +1,1,1,75.783982,-6.882081 +1,1,1,75.926123,-7.6211817 +1,1,1,76.238141,-7.9884852 +1,1,1,76.47843367,-7.699581 +1,1,1,76.57874333,-7.5789789 +1,1,1,76.66785,-7.4229411 +1,1,1,76.66603233,-7.3710708 +1,1,1,76.665281,-7.3496265 +1,1,1,76.591027,-7.3010112 +1,1,1,76.501024,-7.2630369 +1,1,1,76.40085433,-7.2207732 +1,1,1,76.310634,-7.1550414 +1,1,1,76.268421,-7.0935699 +1,1,1,76.08144633,-6.8212914 +1,1,1,75.98584067,-6.3342483 +1,1,1,76.06770867,-6.0710841 +1,1,1,76.17040333,-5.740974 +1,1,1,76.67391267,-5.5373964 +1,1,1,77.02102633,-5.6856411 +1,1,1,77.31483533,-5.8111203 +1,1,1,77.62551633,-6.3944817 +1,1,1,77.59250267,-6.758694 +1,1,1,77.566032,-7.0507236 +1,1,1,77.506503,-7.1408397 +1,1,1,77.211671,-7.3352052 +1,1,1,77.06815467,-7.4298174 +1,1,1,76.830732,-7.6036137 +1,1,1,76.68406533,-7.7214198 +1,1,1,76.53739867,-7.8392259 +1,1,1,76.35739867,-7.9744995 +1,1,1,76.28406533,-8.0220279 +1,1,1,75.90931267,-8.2649109 +1,1,1,75.70080967,-8.5503375 +1,1,1,75.70075833,-8.8205352 +1,1,1,75.70072467,-8.9979627 +1,1,1,75.78157233,-9.0923688 +1,1,1,76.03033933,-9.2053884 +1,1,1,76.22540433,-9.2940099 +1,1,1,76.40432967,-9.4502322 +1,1,1,76.590694,-9.6946422 +1,1,1,76.839235,-10.0205949 +1,1,1,77.13504633,-10.1231244 +1,1,1,77.81739867,-10.1198235 +1,1,1,78.64636833,-10.1158131 +1,1,1,79.38927067,-9.9577836 +1,1,1,80.78353167,-9.4888698 +1,1,1,81.53932767,-9.2346828 +1,1,1,81.75062,-9.1519146 +1,1,1,81.794837,-9.0927183 +1,1,1,81.915689,-8.930925 +1,1,1,82.06130433,-8.817081 +1,1,1,82.14739867,-8.817081 +1,1,1,82.26254533,-8.817081 +1,1,1,82.36739867,-8.9161275 +1,1,1,82.36739867,-9.024897 +1,1,1,82.36739867,-9.206961 +1,1,1,82.053905,-9.3560016 +1,1,1,80.96739867,-9.6904827 +1,1,1,80.64656533,-9.7892514 +1,1,1,80.15156567,-9.9691704 +1,1,1,79.86739867,-10.0903026 +1,1,1,79.29183033,-10.3356516 +1,1,1,79.13397767,-10.3870272 +1,1,1,78.75541833,-10.4522145 +1,1,1,78.44709567,-10.5053073 +1,1,1,77.72847233,-10.5112692 +1,1,1,77.33799367,-10.4639739 +1,1,1,77.01553533,-10.4249175 +1,1,1,76.82474667,-10.4463762 +1,1,1,76.840486,-10.5199308 +1,1,1,76.857139,-10.5977556 +1,1,1,77.59504167,-11.1194427 +1,1,1,77.76571833,-11.1740574 +1,1,1,78.00549033,-11.2507821 +1,1,1,78.47855267,-11.2641102 +1,1,1,78.78804667,-11.2028607 +1,1,1,79.25106733,-11.1112278 +1,1,1,80.71495133,-10.5459018 +1,1,1,81.438632,-10.1792517 +1,1,1,81.684003,-10.0549356 +1,1,1,81.819503,-10.0041243 +1,1,1,81.906403,-10.003842 +1,1,1,82.05345267,-10.0033644 +1,1,1,82.16739867,-10.0854555 +1,1,1,82.16739867,-10.191873 +1,1,1,82.16739867,-10.3062546 +1,1,1,81.92110233,-10.5003639 +1,1,1,81.64838133,-10.6009173 +1,1,1,81.174322,-10.7757051 +1,1,1,81.072904,-10.8235059 +1,1,1,80.600732,-11.0946978 +1,1,1,79.95183567,-11.4673914 +1,1,1,79.66962367,-11.6529351 +1,1,1,79.243827,-11.9868108 +1,1,1,78.786,-12.3458022 +1,1,1,78.65726133,-12.3943269 +1,1,1,78.150732,-12.3988248 +1,1,1,77.745759,-12.4024212 +1,1,1,77.62394067,-12.3660336 +1,1,1,77.35892667,-12.1623093 +1,1,1,77.152538,-12.0036525 +1,1,1,76.65945067,-11.4503094 +1,1,1,76.51906367,-11.2198146 +1,1,1,76.37376833,-10.9812612 +1,1,1,76.04734067,-10.647081 +1,1,1,75.95961667,-10.647081 +1,1,1,75.90277433,-10.647081 +1,1,1,75.897383,-10.6603773 +1,1,1,75.80147867,-11.037081 +1,1,1,75.73310833,-11.3056344 +1,1,1,75.487643,-11.8160808 +1,1,1,75.08803067,-12.5206992 +1,1,1,74.60510933,-13.3722126 +1,1,1,74.58443433,-13.4465865 +1,1,1,74.583096,-14.337081 +1,1,1,74.581978,-15.081264 +1,1,1,74.602826,-15.0165909 +1,1,1,74.2011,-15.522081 +1,1,1,73.70643267,-16.1445192 +1,1,1,72.94018733,-17.774859 +1,1,1,72.755877,-18.597081 +1,1,1,72.61772367,-19.2133944 +1,1,1,72.52044367,-20.2588974 +1,1,1,72.54652333,-20.847081 +1,1,1,72.56724433,-21.3144093 +1,1,1,72.54048367,-21.4544064 +1,1,1,72.41739867,-21.5225967 +1,1,1,72.29094533,-21.5926533 +1,1,1,72.13967633,-21.5202696 +1,1,1,71.83101133,-21.2420052 +1,1,1,71.34181367,-20.8009887 +1,1,1,71.18672967,-20.4366534 +1,1,1,71.19042133,-19.737081 +1,1,1,71.192773,-19.2915099 +1,1,1,71.23668333,-18.9518016 +1,1,1,71.33486267,-18.6196296 +1,1,1,71.41748833,-18.34008 +1,1,1,71.419239,-18.2595 +1,1,1,71.34239867,-18.2727102 +1,1,1,71.26374233,-18.2862324 +1,1,1,71.08480933,-18.6186462 +1,1,1,70.99736733,-18.9136938 +1,1,1,70.94423633,-19.0929687 +1,1,1,70.92262267,-19.2748251 +1,1,1,70.91020433,-19.647081 +1,1,1,70.89503933,-20.1016662 +1,1,1,70.90072433,-20.1702489 +1,1,1,70.97983433,-20.487081 +1,1,1,71.07909133,-20.8846017 +1,1,1,71.27018533,-21.2592948 +1,1,1,71.53267267,-21.571074 +1,1,1,71.93530067,-22.0493106 +1,1,1,73.97860667,-23.6830821 +1,1,1,75.340802,-24.6159495 +1,1,1,75.66534067,-24.8382021 +1,1,1,76.02974533,-25.1161581 +1,1,1,76.15059033,-25.2336294 +1,1,1,76.87062033,-25.9335582 +1,1,1,76.72979533,-26.5766649 +1,1,1,75.747889,-27.0726498 +1,1,1,75.59361933,-27.1505751 +1,1,1,75.46739867,-27.2193429 +1,1,1,75.46739867,-27.2254671 +1,1,1,75.46739867,-27.2315913 +1,1,1,75.59283967,-27.3885846 +1,1,1,75.74615667,-27.5743416 +1,1,1,76.310185,-28.2577107 +1,1,1,76.637808,-28.7580405 +1,1,1,76.751267,-29.1092967 +1,1,1,76.82604367,-29.3407977 +1,1,1,76.82189333,-29.6727987 +1,1,1,76.741545,-29.8869987 +1,1,1,76.70645533,-29.9805447 +1,1,1,76.68771767,-30.057081 +1,1,1,76.69990567,-30.057081 +1,1,1,76.71209333,-30.057081 +1,1,1,76.78206767,-30.010857 +1,1,1,76.855404,-29.9543607 +1,,,, +1,1,1,85.290415,-10.8334548 +1,1,1,85.36160833,-10.7927157 +1,1,1,85.50007267,-10.4848917 +1,1,1,85.50040667,-10.3666173 +1,1,1,85.500662,-10.2759204 +1,1,1,85.478526,-10.2324843 +1,1,1,85.39720667,-10.1641173 +1,1,1,85.340268,-10.1162472 +1,1,1,85.27984133,-10.077081 +1,1,1,85.262925,-10.077081 +1,1,1,85.246009,-10.077081 +1,1,1,85.11634567,-10.0277019 +1,1,1,84.974784,-9.9673497 +1,1,1,84.799041,-9.892425 +1,1,1,84.647826,-9.7972656 +1,1,1,84.49806367,-9.6673497 +1,1,1,84.37742867,-9.5627019 +1,1,1,84.26146467,-9.477081 +1,1,1,84.24036533,-9.477081 +1,1,1,84.21926533,-9.477081 +1,1,1,84.19232333,-9.5117883 +1,1,1,84.18049367,-9.5542083 +1,1,1,84.14217333,-9.6916203 +1,1,1,84.197132,-9.9066513 +1,1,1,84.335091,-10.1590857 +1,1,1,84.45714,-10.3824081 +1,1,1,84.49935867,-10.4277102 +1,1,1,84.77542867,-10.6315857 +1,1,1,85.07218567,-10.8507381 +1,1,1,85.183772,-10.8944787 +1,1,1,85.290415,-10.8334548 +1,,,, +1,1,1,77.270649,-6.814581 +1,1,1,77.30945567,-6.7229346 +1,1,1,77.298465,-6.6524331 +1,1,1,77.198076,-6.3490548 +1,1,1,77.154151,-6.2163114 +1,1,1,77.09129033,-6.1048395 +1,1,1,77.023425,-6.0393435 +1,1,1,76.92537433,-5.9447151 +1,1,1,76.91113,-5.939976 +1,1,1,76.83406533,-5.976342 +1,1,1,76.722331,-6.0290682 +1,1,1,76.733311,-6.1492185 +1,1,1,76.86190933,-6.2810376 +1,1,1,76.95974833,-6.381327 +1,1,1,77.04309033,-6.5713101 +1,1,1,77.082804,-6.784581 +1,1,1,77.10899,-6.9252048 +1,1,1,77.216534,-6.9423804 +1,1,1,77.270649,-6.814581 +1,,,, +1,1,1,81.96808267,-6.7313394 +1,1,1,82.039352,-6.6540525 +1,1,1,81.98759733,-6.2825028 +1,1,1,81.88639,-6.1448616 +1,1,1,81.78243433,-6.0034824 +1,1,1,81.54429333,-5.8741299 +1,1,1,81.35206767,-5.8546299 +1,1,1,81.22751733,-5.8419951 +1,1,1,81.20177867,-5.8492653 +1,1,1,81.16760467,-5.9067345 +1,1,1,81.12082467,-5.9854026 +1,1,1,81.14187033,-6.007701 +1,1,1,81.30797467,-6.0554595 +1,1,1,81.51309667,-6.1144368 +1,1,1,81.70336233,-6.3687105 +1,1,1,81.75349233,-6.6508554 +1,1,1,81.77213333,-6.7557705 +1,1,1,81.78858,-6.777081 +1,1,1,81.85091067,-6.777081 +1,1,1,81.892156,-6.777081 +1,1,1,81.94488333,-6.7564971 +1,1,1,81.96808267,-6.7313394 +1,,,, +1,1,1,82.18867067,-2.69226408 +1,1,1,82.42852033,-2.54303718 +1,1,1,82.44815467,-2.53656918 +1,1,1,82.67797333,-2.53108368 +1,1,1,82.969619,-2.52412248 +1,1,1,83.03406567,-2.50201998 +1,1,1,83.03406567,-2.40895788 +1,1,1,83.03406567,-2.26396848 +1,1,1,82.47926467,-1.82264604 +1,1,1,82.24788167,-1.78357908 +1,1,1,82.01355667,-1.74401538 +1,1,1,81.93061167,-1.85779869 +1,1,1,81.88243467,-2.28489618 +1,1,1,81.86445467,-2.44429548 +1,1,1,81.83899,-2.51100348 +1,1,1,81.763478,-2.59652118 +1,1,1,81.65928367,-2.71452168 +1,1,1,81.64400533,-2.78374998 +1,1,1,81.70906533,-2.84307438 +1,1,1,81.776394,-2.90446758 +1,1,1,81.92036367,-2.85919668 +1,1,1,82.18867067,-2.69226408 +1,,,, +1,1,1,79.410085,-7.4872386 +1,1,1,79.21516133,-7.4259753 +1,1,1,79.067386,-7.3370922 +1,1,1,79.104668,-7.3035384 +1,1,1,79.113817,-7.2953043 +1,1,1,79.22542433,-7.2801747 +1,1,1,79.352684,-7.2699168 +1,1,1,79.65352067,-7.2456678 +1,1,1,79.76739867,-7.2828384 +1,1,1,79.76739867,-7.4052831 +1,1,1,79.76739867,-7.4632503 +1,1,1,79.744596,-7.5059535 +1,1,1,79.70292333,-7.5260256 +1,1,1,79.66746233,-7.5431061 +1,1,1,79.633712,-7.5560271 +1,1,1,79.62792333,-7.5547386 +1,1,1,79.62213467,-7.5534504 +1,1,1,79.52410733,-7.5230754 +1,1,1,79.410085,-7.4872386 +1,,,, +1,1,1,77.434187,-7.6172856 +1,1,1,77.32839967,-7.4393868 +1,1,1,77.521896,-7.287081 +1,1,1,77.85369433,-7.287081 +1,1,1,77.96906767,-7.287081 +1,1,1,78.07226967,-7.2999036 +1,1,1,78.08303167,-7.3155759 +1,1,1,78.10818933,-7.3522113 +1,1,1,77.994676,-7.407081 +1,1,1,77.89372733,-7.407081 +1,1,1,77.83444333,-7.407081 +1,1,1,77.799849,-7.4377419 +1,1,1,77.74986933,-7.534581 +1,1,1,77.695118,-7.6406658 +1,1,1,77.66624133,-7.663635 +1,1,1,77.57794667,-7.671333 +1,1,1,77.49767733,-7.6783314 +1,1,1,77.462659,-7.6651662 +1,1,1,77.434187,-7.6172856 +1,,,, +1,1,1,72.47012933,-15.8961972 +1,1,1,72.790484,-15.599523 +1,1,1,72.878587,-15.4512909 +1,1,1,72.86127833,-15.2380935 +1,1,1,72.84920067,-15.0893295 +1,1,1,72.78740767,-15.0385272 +1,1,1,72.65493467,-15.068451 +1,1,1,72.555839,-15.0908352 +1,1,1,72.50178867,-15.1788813 +1,1,1,72.41807067,-15.4542921 +1,1,1,72.37857533,-15.5842218 +1,1,1,72.32091667,-15.671697 +1,1,1,72.18322733,-15.8105769 +1,1,1,71.99868567,-15.9967149 +1,1,1,71.96803533,-16.065654 +1,1,1,72.040732,-16.131081 +1,1,1,72.11698533,-16.199709 +1,1,1,72.17905267,-16.165758 +1,1,1,72.47012933,-15.8961972 diff --git a/abs/core/LinHES-timezone/WorldTZ_102.zip b/abs/core/LinHES-timezone/WorldTZ_102.zip new file mode 100644 index 0000000..3112bd4 Binary files /dev/null and b/abs/core/LinHES-timezone/WorldTZ_102.zip differ diff --git a/abs/core/LinHES-timezone/create_map_include.c b/abs/core/LinHES-timezone/create_map_include.c new file mode 100644 index 0000000..dbdbb52 --- /dev/null +++ b/abs/core/LinHES-timezone/create_map_include.c @@ -0,0 +1,186 @@ +#include +#include +#include +#include +#include + +int main () +{ + char line_in[100]; + FILE *zones; + FILE *boundary; + char boundary_name[100]; + zones = fopen ("maps/zones.sorted", "r"); + int zone_num = 0; + + printf ("typedef struct {double x;double y;double z;} vect_type;\n"); + while (!feof (zones)) + { + char coords[100]; + int points_in_vector = 0; + if (fgets (line_in, sizeof (line_in), zones)) + { + //Strip the newline off the end. + line_in[strlen(line_in) - 1] = 0; + + sprintf (boundary_name, "maps/boundary%s", line_in); + +//printf ("%s<\n", boundary_name); + + boundary = fopen (boundary_name, "r"); + + if (!boundary) + { + fprintf (stderr, "%s ", boundary_name); + perror ("fopen"); + exit (1); + } + + printf ("vect_type boundary_%d[] = {\n", zone_num); + + while (!feof (boundary)) + { + int num_scanned; + int id,code,point; + double lon,lat,x,y,z; + + memset (coords, 0, sizeof (coords)); + fgets (coords, sizeof (coords), boundary); +//printf ("scanning %s\n", coords); + + num_scanned = sscanf (coords, "%d,%d,%d,%lf,%lf", &id,&code,&point,&lon,&lat); + +//printf ("num scanned%d\n", num_scanned); + + if (num_scanned <= 0) + { + // EOF coming. + } + else if (num_scanned == 5) + { + lon *= M_PI / 180.0; + lat *= M_PI / 180.0; + + x = cos (lon) * cos (lat); + y = sin (lon) * cos (lat); + z = sin (lat); + + points_in_vector++; + printf ("{%.5lf, %.5lf, %.5lf},\n", x, y, z); + } + else + { +//printf ("points in = %d\n", points_in_vector); + + // If there was only a single point in the vector duplicate it. + // This will allow ust to use xdrawlines to draw it. + if (points_in_vector == 1) + printf ("{%.5lf, %.5lf, %.5lf},\n", x, y, z); + + //Print an end vector delimiter. + printf ("{-10.0,-10.0,-10.0},\n"); + points_in_vector = 0; + } + } + printf ("};\n"); + + printf ("#define num_boundary_points_%d XtNumber (boundary_%d)\n", zone_num, zone_num); + fclose (boundary); + zone_num++; + } + } + + fclose (zones); + + + printf ("typedef struct {\n" + " char *zonename;\n" + " vect_type v;\n" + "} place_info_type;\n"); + + zones = fopen ("maps/zones.sorted", "r"); + zone_num = 0; + + while (!feof (zones)) + { + FILE *places; + char place_name[100]; + + if (fgets (line_in, sizeof (line_in), zones)) + { + char place_info[100]; + double lat,lon; + char zonename[100]; + + //Strip the newline off the end. + line_in[strlen(line_in) - 1] = 0; + + printf ("#define zone_offset_%d \"%s%s\"\n", zone_num, (line_in[0] == '-') ? "" : "+", line_in); + + sprintf (place_name, "maps/places%s", line_in); + +//printf ("%s<\n", place_name); + + places = fopen (place_name, "r"); + + if (!places) + { + fprintf (stderr, "%s ", place_name); + perror ("fopen"); + exit (1); + } + + printf ("place_info_type places_%d[] =\n{\n", zone_num); + + memset (place_info, 0, sizeof (place_info)); + + while (fgets (place_info, sizeof (place_info), places)) + { +//printf (place_info); + + if (sscanf (place_info, "%lf %lf %s", &lat, &lon, zonename) == 3) + { + lat *= M_PI / 180.0; + lon *= M_PI / 180.0; + + printf (" {\"%s\", {%.5lf, %.5lf, %.5lf}},\n", zonename, + + cos (lon) * cos (lat), + sin (lon) * cos (lat), + sin (lat) + ); + } + } + printf ("};\n"); + + printf ("#define num_places_%d XtNumber (places_%d)\n", zone_num, zone_num); + zone_num++; + } + } + + printf ("#define NUM_ZONES %d\n", zone_num); + + printf ("struct {\n" + " char *offset;\n" + " int num_boundary_points;\n" + " vect_type *boundary_points;\n" + " int num_places;\n" + " place_info_type *place_info;\n" + "} zone_data[] =\n" + "{\n"); + + for (int zone = 0; zone < zone_num; zone++) + { + printf (" {\n" + " zone_offset_%d,\n" + " num_boundary_points_%d,\n" + " boundary_%d,\n" + " num_places_%d,\n" + " places_%d\n" + " },\n", zone, zone, zone, zone, zone); + } + + printf ("};\n"); + + exit (0); +} diff --git a/abs/core/LinHES-timezone/extract_map_data.c b/abs/core/LinHES-timezone/extract_map_data.c new file mode 100644 index 0000000..8fd8e52 --- /dev/null +++ b/abs/core/LinHES-timezone/extract_map_data.c @@ -0,0 +1,188 @@ +#include +#include +#include +#include +#include +#include +#include + +int main () +{ + int fd; + int num_vectors; + int limits[4]; + double MAP_PIXEL_WIDTH = 1000; + + typedef struct + { + int id; + int code; + int limits[4]; + int num_points; + int offset; + } vector_info; + + vector_info *vector; + int i; + + fd = open ("WorldTZ.mfd", O_RDONLY); + + if (fd == -1) + { + perror ("open"); + abort (); + } + + read (fd, &num_vectors, 4); + read (fd, limits, sizeof (limits)); + + vector = calloc (num_vectors, sizeof (vector_info)); + + read (fd, vector, sizeof (vector_info) * num_vectors); + +#if 0 + for (i = 0; i < num_vectors; i++) + { + printf ("list%d %d %d %d %d %d %d %d %d\n", + i, + vector[i].id, + vector[i].code, + vector[i].limits[0], + vector[i].limits[2], + vector[i].limits[3], + vector[i].limits[4], + vector[i].num_points, + vector[i].offset); + } +#endif + + for (i = 0; i < num_vectors; i++) + { + typedef struct + { + int lon; + int lat; + } point_type; + + int j; + + point_type *point = NULL; + + point = realloc (point, vector[i].num_points * sizeof (point_type)); + read (fd, point, vector[i].num_points * sizeof (point_type)); + + /* Map the points onto an 800x400 pixel area */ + + for (j = 0; j < vector[i].num_points; j++) + { + if (point[j].lon > -2000000) + { + point[j].lon = lrint (point[j].lon * MAP_PIXEL_WIDTH / 3600000); + point[j].lat = lrint (point[j].lat * MAP_PIXEL_WIDTH / 3600000); + } + } + + /* Remove consecutive points that are now the same. */ + + for (j = 0; j < vector[i].num_points - 1; j++) + { + if ((point[j].lon == point[j+1].lon) && + (point[j].lat == point[j+1].lat)) + { + for (int k = j + 1; k < vector[i].num_points - 1; k++) + { + point[k].lat = point[k+1].lat; + point[k].lon = point[k+1].lon; + } + + vector[i].num_points--; + j--; + } + } + + // Lop off any small corners one style at a time + //(so that aligning borders match) to make them diagonals. + + for (int lop = 0; lop < 8; lop++) + { + int dx1c[8] = {-1, 1,-1, 1, 0, 0, 0, 0,}; + int dx2c[8] = { 0, 0, 0, 0,-1, 1,-1, 1,}; + int dy1c[8] = { 0, 0, 0, 0,-1,-1, 1, 1,}; + int dy2c[8] = {-1,-1, 1, 1, 0, 0, 0, 0,}; + + for (j = 0; j < vector[i].num_points - 2; j++) + { + int dx1,dx2,dy1,dy2; + dx1 = point[j+0].lon - point[j+1].lon; + dx2 = point[j+1].lon - point[j+2].lon; + dy1 = point[j+0].lat - point[j+1].lat; + dy2 = point[j+1].lat - point[j+2].lat; + + if ((dx1 == dx1c[lop]) && (dy1 == dy1c[lop]) && + (dx2 == dx2c[lop]) && (dy2 == dy2c[lop])) + { + for (int k = j + 1; k < vector[i].num_points - 1; k++) + { + point[k].lat = point[k+1].lat; + point[k].lon = point[k+1].lon; + } + + vector[i].num_points--; + j--; + } + } + } + + /* Now weed out points where there are a number of points on the same line. */ + + for (j = 0; j < vector[i].num_points - 2; j++) + { + int dx1,dx2,dy1,dy2; + int same_dir = 0; + dx1 = point[j+0].lon - point[j+1].lon; + dx2 = point[j+1].lon - point[j+2].lon; + dy1 = point[j+0].lat - point[j+1].lat; + dy2 = point[j+1].lat - point[j+2].lat; + + if ((dx1 == 0) && (dx2 == 0) && (dy1 * dy2 >= 0)) + same_dir = 1; + if ((dy1 == 0) && (dy2 == 0) && (dx1 * dx2 >= 0)) + same_dir = 1; + + if ((dx1 != 0) && (dx2 != 0)) + { + if ((dy1 * dx2) == (dy2 * dx1) && ((dx1 * dx2) > 0)) + same_dir = 1; + } + + if (same_dir) + { + for (int k = j + 1; k < vector[i].num_points - 1; k++) + { + point[k].lat = point[k+1].lat; + point[k].lon = point[k+1].lon; + } + + vector[i].num_points--; + j--; + } + } + + for (j = 0; j < vector[i].num_points; j++) + { + if (point[j].lon == -2147483648) + { + printf ("%d,\n", vector[i].id); + } + else + { + printf ("%d,%d,%d,%.2lf,%.2lf\n", + vector[i].id, vector[i].code, j, + point[j].lon * 360.0 / MAP_PIXEL_WIDTH, + point[j].lat * 360.0 / MAP_PIXEL_WIDTH); + } + } + + printf ("%d,\n", vector[i].id); + } +} diff --git a/abs/core/LinHES-timezone/linhes_timezone.c b/abs/core/LinHES-timezone/linhes_timezone.c new file mode 100644 index 0000000..d7a56d2 --- /dev/null +++ b/abs/core/LinHES-timezone/linhes_timezone.c @@ -0,0 +1,1120 @@ +#include +#include +#include +#include +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +#include "timezone_map.h" + +Display *display; +Window window; +GC gc; +int screen; +int selected_zone; +int selected_place; +Pixmap pixmap; +XColor ocean; +XColor land[8]; +XColor border; +XColor selected_border; +XColor selected_land; +XColor name_colour; +XColor location_dot; +XColor lat_lon; +XColor tux_yellow; +Dimension screen_width = 1920; +Dimension screen_height = 1080; +Dimension width = 1920; +Dimension height = 1080; +Position x = 0; +Position y = 0; +XFontStruct *font; +XPoint xpoints[1000]; +int radius; +double aspect_correction = 1; + +double target_lat; +double target_lon; + +double displayed_lat; +double displayed_lon; + +double lon_rotate[2] = {1, 0}; +double lat_rotate[2] = {1, 0}; + +double acceleration = 0.01; +char input_keys[200]; + +int guessing_timezone = FALSE; +time_t guess_timeout = 0; +int guess_failed = FALSE; +time_t guess_failed_timeout = 0; +int show_information = FALSE; +int info_displayed = FALSE; + +void select_place (int place) +{ + target_lon = atan2 (zone_data[selected_zone].place_info[place].v.y, + zone_data[selected_zone].place_info[place].v.x); + target_lat = acos (zone_data[selected_zone].place_info[place].v.z /2); + + selected_place = place; +} + +void default_zone (char *arg_zone) +{ + int found_zone = FALSE; + + for (int zone = 0; zone < NUM_ZONES; zone++) + { + for (int place = 0; place < zone_data[zone].num_places; place++) + { + if (strstr (zone_data[zone].place_info[place].zonename, + arg_zone[0] ? arg_zone : "Los_Angeles")) + { + selected_zone = zone; + select_place (place); + found_zone = TRUE; + } + } + } + + if (!found_zone) + { + default_zone (""); + } +} + +int translate_point (vect_type *v, XPoint *p) +{ + vect_type v2; + vect_type v3; + + v2.x = v->x * lon_rotate[0] + v->y * lon_rotate[1]; + v2.y = v->x * -1.0 * lon_rotate[1] + v->y * lon_rotate[0]; + v2.z = v->z; + + v3.x = v2.x * lat_rotate[0] + v2.z * lat_rotate[1]; + v3.y = v2.y * radius; + v3.z = v2.x * -1.0 * lat_rotate[1] + v2.z * lat_rotate[0]; + + + // If the point is behind the face of the globe, project it to the edge. + if (v3.x < 0) + { + p->x = width /2 + radius * sin (atan2 (v3.y,v3.z)) * aspect_correction; + p->y = height/2 - radius * cos (atan2 (v3.y,v3.z)); + } + else + { + p->x = width /2 + lrint (v3.y) * aspect_correction; + p->y = height/2 - lrint (v3.z); + } + + // Return a value indicating if it is on the front of the world. + return (v3.x >= 0); +} + +void draw_zone ( + Drawable d, + int zone, + int fill, + int selected) +{ + int boundary = 0; + int num_points = 0; + int all_on_back = 1; + + if (selected && fill) + XSetForeground (display, gc, selected_land.pixel); + + while (boundary < zone_data[zone].num_boundary_points) + { + if (zone_data[zone].boundary_points[boundary].x < -9) + { + + if ((num_points > 1) && !all_on_back) + { + if (fill) + { + if (!selected) + { + if (zone == NUM_ZONES - 1) + { + if (boundary < 380) + XSetForeground (display, gc, WhitePixel (display, screen)); + else if (boundary < 470) + XSetForeground (display, gc, tux_yellow.pixel); + else if (boundary < 1120) + XSetForeground (display, gc, BlackPixel (display, screen)); + else + XSetForeground (display, gc, WhitePixel (display, screen)); + } + else + { + XSetForeground (display, gc, + land[boundary % XtNumber (land)].pixel); + } + } + + XFillPolygon ( + display, d, gc, + xpoints, + num_points, Complex, CoordModeOrigin); + } + else + XDrawLines ( + display, d, gc, + xpoints, + num_points, CoordModeOrigin); + } + + boundary++; + num_points = 0; + all_on_back = 1; + } + else + { + if (translate_point (&zone_data[zone].boundary_points[boundary], + &xpoints[num_points])) + all_on_back = 0; + + num_points++; + boundary++; + } + } +} + +void draw_string (int x, int y, const char*s, unsigned long colour) +{ + XSetForeground (display, gc, BlackPixel (display, screen)); + for (int x_pos = x - 3; x_pos <= x + 3; x_pos++) + for (int y_pos = y - 3; y_pos <= y + 3; y_pos++) + XDrawString (display, pixmap, gc, x_pos, y_pos, s, strlen (s)); + + XSetForeground (display, gc, colour); + XDrawString (display, pixmap, gc, x, y, s, strlen (s)); +} + +void draw_point (XPoint p, char *s) +{ + int text_width; + + int dot_size = ceil (sqrt (height) / 6.0); + + if (s) + dot_size += 2; + + XSetForeground (display, gc, + s ? WhitePixel (display, screen) : location_dot.pixel); + XFillRectangle (display, pixmap, gc, + p.x - dot_size / 2, p.y - dot_size / 2, dot_size, dot_size); + + XSetForeground (display, gc, BlackPixel (display, screen)); + XSetLineAttributes (display, gc, 2, LineSolid, CapRound, JoinRound); + XDrawRectangle (display, pixmap, gc, + p.x - dot_size / 2, p.y - dot_size / 2, dot_size, dot_size); + + if (s) + { + int text_x; + int text_y; + + text_width = XTextWidth (font, s, strlen (s)); + + if (p.x + text_width + 30 > width) + { + text_x = p.x - text_width - 6; + text_y = p.y + 10; + } + else + { + text_x = p.x + 6; + text_y = p.y + 10; + } + + draw_string (text_x, text_y, s, name_colour.pixel); + } +} + +void redraw_map () +{ + XPoint selected_point; + char selected_name[100]; + + lon_rotate[0] = cos (displayed_lon); + lon_rotate[1] = sin (displayed_lon); + + lat_rotate[1] = cos (displayed_lat) * radius; + lat_rotate[0] = sin (displayed_lat) * radius; + + /* Draw the map into the pixmap. */ + + XSetForeground (display, gc, BlackPixel (display, screen)); + XFillRectangle (display, pixmap, gc, 0, 0, width, height); + + XSetForeground (display, gc, ocean.pixel); + XFillArc (display, pixmap, gc, + width / 2 - radius * aspect_correction, height / 2 - radius, + radius * 2 * aspect_correction, radius * 2, 0, 360 * 64); + + XSetForeground (display, gc, lat_lon.pixel); + XSetLineAttributes (display, gc, 2, LineSolid, CapRound, JoinRound); + + for (int lon = 0; lon < 24; lon++) + for (int lat = 0; lat < 12 * 3; lat++) + { + XPoint line[2]; + vect_type v; + v.x = cos (lon * 15 * M_PI / 180) * cos ((90 - lat * 5) * M_PI / 180); + v.y = sin (lon * 15 * M_PI / 180) * cos ((90 - lat * 5) * M_PI / 180); + v.z = sin ((90 - lat * 5) / 180.0 * M_PI); + line[0] = line[1]; + if (translate_point (&v, &line[1]) && (lat > 0)) + XDrawLines (display, pixmap, gc, line, 2, CoordModeOrigin); + } + + for (int lat = 0; lat < 12; lat++) + for (int lon = 0; lon <= 24 * 3; lon++) + { + XPoint line[2]; + vect_type v; + v.x = cos (lon * 5 * M_PI / 180) * cos ((90 - lat * 15) * M_PI / 180); + v.y = sin (lon * 5 * M_PI / 180) * cos ((90 - lat * 15) * M_PI / 180); + v.z = sin ((90 - lat * 15) / 180.0 * M_PI); + line[0] = line[1]; + if (translate_point (&v, &line[1]) && (lon > 0)) + XDrawLines (display, pixmap, gc, line, 2, CoordModeOrigin); + } + + for (int zone = 0; zone < NUM_ZONES; zone++) + draw_zone (pixmap, zone, 1, 0); + + XSetLineAttributes (display, gc, 2, LineSolid, CapRound, JoinRound); + XSetForeground (display, gc, border.pixel); + for (int zone = 0; zone < NUM_ZONES - 1; zone++) + draw_zone (pixmap, zone, 0, 0); + + if (show_information) + { + info_displayed = TRUE; + char *s[4] = {"Left/Right: Change Offset", + "Up/Down: Change Location", + "Enter: Select Location", + "Esc: Abort"}; + int num = XtNumber(s); + for (int i = 0; i < num; i++) + { + int text_width = XTextWidth (font, s[i], strlen (s[i])); + draw_string (width/2 - text_width/2, + height/2 + (-2 + i) * (font->ascent + font->descent), + s[i], name_colour.pixel); + } + } + else if (guessing_timezone || (info_displayed = FALSE)) + { + char *s = "Guessing Timezone"; + int text_width = XTextWidth (font, s, strlen (s)); + draw_string (width/2 - text_width/2, height/2, s, name_colour.pixel); + } + else if (guess_failed) + { + char *s = "Unable to Guess Timezone"; + char *s2 = "Please Select Timezone Manually"; + int text_width = XTextWidth (font, s, strlen (s)); + draw_string (width/2 - text_width/2, height/2, s, name_colour.pixel); + text_width = XTextWidth (font, s2, strlen (s2)); + draw_string (width/2 - text_width/2, + height/2 + font->ascent + font->descent, + s2, name_colour.pixel); + } + else + { + draw_zone (pixmap, selected_zone, 1, 1); + XSetForeground (display, gc, selected_border.pixel); + draw_zone (pixmap, selected_zone, 0, 1); + + for (int place = 0; place < zone_data[selected_zone].num_places; place++) + { + XPoint point; + + translate_point (&zone_data[selected_zone].place_info[place].v, &point); + + draw_point (point, NULL); + + if ((place == selected_place) && (!guessing_timezone)) + { + char *underscore; + selected_point = point; + strcpy (selected_name, strchr (zone_data[selected_zone].place_info[place].zonename, '/') + 1); + while (underscore = strchr (selected_name, '_')) + underscore[0] = ' '; + } + } + + draw_point (selected_point, selected_name); + + { + char zone_offset[100]; + sprintf (zone_offset, "UTC%s", zone_data[selected_zone].offset); + draw_string ( + ((width * 0.95 - XTextWidth (font, "UTC+88", strlen ("UTC+88"))) + + ((width / 2) + radius / sqrt (2))) / 2, + ((lrint (height * 0.05) + font->ascent) + + (height / 2 - radius / sqrt (2))) / 2, + zone_offset, name_colour.pixel); + } + } + + if (!guessing_timezone && !guess_failed) + { + const char *title = "Select Your Time Zone"; + const char *help = "Help = i"; + + draw_string (width / 2 - XTextWidth (font, title, strlen (title)) / 2, + ((lrint (height * 0.05) + font->ascent) + + (height / 2 - radius / sqrt (2))) / 2, + title, WhitePixel (display,screen)); + + draw_string (width * 0.05, height * 0.95 - font->descent - font->ascent, + help, name_colour.pixel); + } + + XCopyArea (display, pixmap, window, gc, 0, 0, width, height, 0, 0); +} + +int nearest_z (double near_z) +{ + double min_delta = + fabs (near_z - zone_data[selected_zone].place_info[0].v.z); + int min_delta_place = 0; + + for (int place = 1; place < zone_data[selected_zone].num_places; place++) + { + double delta = + fabs (near_z - zone_data[selected_zone].place_info[place].v.z); + + if (delta < min_delta) + { + min_delta_place = place; + min_delta = delta; + } + } + + return min_delta_place; +} + +void handle_key (char key) +{ + double selected_z; + + selected_z = zone_data[selected_zone].place_info[selected_place].v.z; + + if (show_information) + { + show_information = FALSE; + return; + } + + switch (key) + { + case 'U': + select_place ((selected_place + + zone_data[selected_zone].num_places - 1) % + zone_data[selected_zone].num_places); + break; + + case 'D': + select_place ((selected_place + 1) % + zone_data[selected_zone].num_places); + break; + + case 'L': + selected_zone = (selected_zone + NUM_ZONES - 1) % NUM_ZONES; + select_place (nearest_z (selected_z)); + break; + + case 'R': + selected_zone = (selected_zone + 1) % NUM_ZONES; + select_place (nearest_z (selected_z)); + break; + + case 'I': + show_information = !show_information; + break; + + case 'X': + printf ("%s\n", zone_data[selected_zone].place_info[selected_place].zonename); + exit (0); + + case 'E': + exit(1); + } +} + +void handle_event (XEvent *xevent) +{ + switch (xevent->type) + { + case Expose: + redraw_map (); + break; + + case KeyPress: + switch (XLookupKeysym (&xevent->xkey, 0)) + { + case XK_Up: + handle_key ('U'); + break; + + case XK_Down: + handle_key ('D'); + break; + + case XK_Left: + handle_key ('L'); + break; + + case XK_Right: + handle_key ('R'); + break; + + case XK_Return: + handle_key ('X'); + break; + + case XK_Escape: + handle_key ('E'); + break; + + case XK_I: + case XK_i: + handle_key ('I'); + break; + } + + break; + } +} + +Bool event_predicate (Display *display, XEvent *xevent, XPointer unused) +{ + return (xevent->type == KeyPress) || (xevent->type == Expose); +} + +void next_view () +{ + static double step_size = 0.01; + double error_total; + double lat_error = target_lat - displayed_lat; + double lon_error = target_lon - displayed_lon; + + if (guessing_timezone) + { + displayed_lon += 1 / 180.0 * M_PI; + } + else + { + lat_error = atan2 (sin (lat_error), cos( lat_error)); + lon_error = atan2 (sin (lon_error), cos (lon_error)); + + error_total = sqrt (lat_error * lat_error + lon_error * lon_error); + + if (error_total < acceleration) + { + displayed_lat = target_lat; + displayed_lon = target_lon; + } + else + { + if (error_total > (step_size + acceleration) * + (step_size + acceleration) / acceleration / 2) + step_size += acceleration; + else + step_size -= acceleration; + + if (step_size < acceleration) + step_size = acceleration; + + displayed_lat += step_size * (lat_error / error_total); + displayed_lon += step_size * (lon_error / error_total); + } + } +} + +void *lirc_thread (void *unused) +{ + int lirc_fd; + struct lirc_config *lirc_config; + char *lirc_code; + + if ((lirc_fd = lirc_init ("mythtv",0)) == -1) + fprintf (stderr,"Error initialising lirc\n"); + else + { + int readc_status; + + if (readc_status = lirc_readconfig (NULL, &lirc_config, NULL)) + { + fprintf (stderr,"Error loading lirc config file %d %p\n", readc_status, lirc_config); + } + } + + while ((lirc_nextcode (&lirc_code) == 0) && (lirc_code != NULL)) + { + char *action; + + while ((lirc_code2char (lirc_config, lirc_code, &action) == 0) && + (action != NULL)) + { + if (strcasecmp (action, "down") == 0) + strcat (input_keys, "D"); + + if (strcasecmp (action, "up") == 0) + strcat (input_keys, "U"); + + if (strcasecmp (action, "left") == 0) + strcat (input_keys, "L"); + + if (strcasecmp (action, "right") == 0) + strcat (input_keys, "R"); + + if (strcasecmp (action, "return") == 0) + strcat (input_keys, "X"); + + if (strcasecmp (action, "Esc") == 0) + strcat (input_keys, "E"); + } + + free (lirc_code); + lirc_code = NULL; + } +} + +void get_value (FILE *input, char*output, int out_len) +{ + const char *value_pattern = "value=\""; + char *value; + + output[0] = 0; + fgets (output, out_len, input); + + if (value = strcasestr (output, value_pattern)) + { + memmove (output, value + strlen (value_pattern), + strlen (value + strlen (value_pattern)) + 1); + } + + if (value = strchr (output, '"')) + value[0] = 0; +} + +void *timezone_guess (void *unused) +{ + const double invalid = 99999; + FILE *guess_data; + char line_in[1000]; + double guess_latitude = invalid; + double guess_longitude = invalid; + char guess_zone[1000] = {0}; + char *timezone_info_command; + + if (getenv ("FAKE_GEOBYTES")) + { + timezone_info_command = + "sleep 2 ; " + "echo Latitude ; " + "echo \" /dev/null |" + "grep \"^ res_name = appname; + classHint->res_class = "MoonRoot"; + } + + XSetClassHint (display, window, classHint); + XFree (classHint); + + typedef struct + { + CARD32 flags; + CARD32 functions; + CARD32 decorations; + INT32 input_mode; + CARD32 status; + } MotifWmHints, MwmHints; + + #define MWM_HINTS_DECORATIONS (1L << 1) + + + Atom XA_MOTIF_WM_HINTS = XInternAtom (display, "_MOTIF_WM_HINTS", False); + MotifWmHints mwm_hints; + + mwm_hints.flags = MWM_HINTS_DECORATIONS; + mwm_hints.decorations = 0; + + XChangeProperty ( + display, window, + XA_MOTIF_WM_HINTS, XA_MOTIF_WM_HINTS, + 32, PropModeReplace, + (char *) &mwm_hints, 5); +} + +void set_window_position (int x, int y) +{ + XSizeHints hints; + + hints.flags = USPosition | PPosition; + hints.x = x; + hints.y = y; + + XSetWMNormalHints(display, window, &hints); +} + +int main (int argc, char *argv[]) +{ + XEvent xevent; + Colormap cmap; + XColor color, colorrgb; + pthread_t tid; + int opt; + int arg_width = -1; + int arg_height = -1; + char arg_zone[100] = {0}; + + if (getenv ("ACCEL")) + acceleration = atof (getenv ("ACCEL")); + + while ((opt = getopt (argc, argv, "z:w:h:a:")) != -1) + { + switch (opt) + { + case 'z': + strncpy (arg_zone, optarg, sizeof (arg_zone) - 1); + + if (strcasecmp (arg_zone, "guess") == 0) + { + guessing_timezone = TRUE; + arg_zone[0]=0; + } + + break; + + case 'w': + arg_width = atoi (optarg); + break; + + case 'h': + arg_height = atoi (optarg); + break; + + case 'a': + acceleration = atof (optarg); + break; + + case '?': + printf ("usage: %s [-a accelleration] [-z timezone] " + "[-w width] [-h height]\n" + "e.g. linhes_timezone -w 1920 -h 1090 -z Australia/Adelaide\n" + "specify a timezone of 'guess' to determine the initial " + "timezone from\n" + "your ip address using geocache.\n", + argv[0]); + exit (0); + break; + } + } + + pthread_create (&tid, NULL, lirc_thread, NULL); + + /* Connect to the X server. */ + + display = XOpenDisplay (""); + + if (display == NULL) + { + fprintf (stderr, "cannot connect to server\n"); + exit (EXIT_FAILURE); + } + + /* Get default screen. */ + + screen = DefaultScreen (display); + screen_width = XWidthOfScreen (DefaultScreenOfDisplay (display)); + screen_height = XHeightOfScreen (DefaultScreenOfDisplay (display)); + + if ((arg_width <= 0) && (arg_height > 0)) + arg_width == arg_height; + + if (arg_width > 0) + { + width = arg_width; + + if (arg_height <= 0) + height = width; + else + height = arg_height; + + x = (screen_width - width) / 2; + y = (screen_height - height) / 2; + } + else + { + width = screen_width; + height = screen_height; + x = 0; + y = 0; + } + + if (width < height) + radius = width; + else + radius = height; + + radius = 0.96 * radius / 2; + + if ((screen_height == 0) || + (XWidthMMOfScreen (DefaultScreenOfDisplay (display)) == 0)) + aspect_correction = 1; + else + aspect_correction = + sqrt (screen_width * + XHeightMMOfScreen (DefaultScreenOfDisplay (display)) * 1.0 / + screen_height / + XWidthMMOfScreen (DefaultScreenOfDisplay (display))); + + // Protect against very wierd aspect corrections from bogus + // screen dimensions. + if ((aspect_correction < 0.5) || (aspect_correction > 2)) + aspect_correction = 1; + + window = XCreateSimpleWindow (display, + DefaultRootWindow(display), x, y, width, height, 0, + land[0].pixel, ocean.pixel); + + remove_titlebar_and_borders (); + set_window_position (x, y); + + if (!window) + { + fprintf (stderr, "cannot open window\n"); + exit (EXIT_FAILURE); + } + + /* set graphics context of rectangle to red */ + gc= XCreateGC (display, window, 0, 0); + cmap = DefaultColormap (display, screen); + + // Load the font. + + font = XLoadQueryFont (display, (width > 800) ? + "-*-lucida-bold-r-*-*-34-*-*-*-*-*-*-*" : + "-*-lucida-bold-r-*-*-20-*-*-*-*-*-*-*"); + if (!font) + fprintf (stderr,"error loading font\n"); + + XSetFont (display, gc, font->fid); + + pixmap = + XCreatePixmap (display, window, width, height, + DefaultDepth (display, DefaultScreen (display))); + + ocean.flags = DoRed | DoGreen | DoBlue; + ocean.red = 40 * 256; + ocean.green = 41 * 256; + ocean.blue = 72 * 256; + if (XAllocColor (display, cmap, &ocean) == 0) + printf ("Cant allocate color\n"); + + lat_lon.flags = DoRed | DoGreen | DoBlue; + lat_lon.red = 0 * 256; + lat_lon.green = 0 * 256; + lat_lon.blue = 86 * 256; + if (XAllocColor (display, cmap, &lat_lon) == 0) + printf ("Cant allocate color\n"); + + tux_yellow.flags = DoRed | DoGreen | DoBlue; + tux_yellow.red = 248 * 256; + tux_yellow.green = 191 * 256; + tux_yellow.blue = 17 * 256; + if (XAllocColor (display, cmap, &tux_yellow) == 0) + printf ("Cant allocate color\n"); + + for (int land_col = 0; land_col < XtNumber (land); land_col++) + { + land[land_col].flags = DoRed | DoGreen | DoBlue; + land[land_col].red = (120 + 9 * land_col) * 256; + land[land_col].green = (40 + 3 * land_col) * 256; + land[land_col].blue = 0 * 256; + if (XAllocColor (display, cmap, &land[land_col]) == 0) + printf ("Cant allocate color\n"); + } + + selected_land.flags = DoRed | DoGreen | DoBlue; + selected_land.red = 3 * 256; + selected_land.green = 40 * 256; + selected_land.blue = 13 * 256; + if (XAllocColor (display, cmap, &selected_land) == 0) + printf ("Cant allocate color\n"); + + border.flags = DoRed | DoGreen | DoBlue; + border.red = 0 * 256; + border.green = 0 * 256; + border.blue = 0 * 256; + if (XAllocColor (display, cmap, &border) == 0) + printf ("Cant allocate color\n"); + + selected_border.flags = DoRed | DoGreen | DoBlue; + selected_border.red = 80 * 256; + selected_border.green = 255 * 256; + selected_border.blue = 80 * 256; + if (XAllocColor (display, cmap, &selected_border) == 0) + printf ("Cant allocate color\n"); + + name_colour.flags = DoRed | DoGreen | DoBlue; + name_colour.red = 255 * 256; + name_colour.green = 255 * 256; + name_colour.blue = 0 * 256; + if (XAllocColor (display, cmap, &name_colour) == 0) + printf ("Cant allocate color\n"); + + location_dot.flags = DoRed | DoGreen | DoBlue; + location_dot.red = 255 * 256; + location_dot.green = 55 * 256; + location_dot.blue = 200 * 256; + if (XAllocColor (display, cmap, &location_dot) == 0) + printf ("Cant allocate color\n"); + + // Find the selected timezone (or LA if a timezone was not selected) and + // make that the selected zone and place. + + default_zone (arg_zone); + + if (guessing_timezone) + { + pthread_create (&tid, NULL, timezone_guess, NULL); + guess_timeout = time (NULL) + 10; + displayed_lat = M_PI/2; + displayed_lon = 0; + } + else + { + displayed_lat = target_lat; + displayed_lon = target_lon; + } + + /* ask for exposure event and keyboard events */ + XSelectInput(display, window, KeymapNotify | ExposureMask); + + /* pop this window up on the screen */ + XMapRaised (display, window); + + redraw_map (); + + while (1) + { + if (guessing_timezone && (time (NULL) > guess_timeout)) + { + guessing_timezone = FALSE; + guess_failed_timeout = time (NULL) + 3; + guess_failed = TRUE; + } + + if ((displayed_lat != target_lat) || (displayed_lon != target_lon) || + guessing_timezone || guess_failed || + (info_displayed ^ show_information)) + { + if (guess_failed && (time (NULL) > guess_failed_timeout)) + { + guess_failed = FALSE; + } + + next_view (); + redraw_map (); + } + else + { + usleep (1000); + } + + while (strlen (input_keys)) + { + handle_key (input_keys[0]); + memmove (&input_keys[0], &input_keys[1], strlen (input_keys)); + } + + // If there is an event pending, go on to process it. + + if (XCheckIfEvent (display, &xevent, event_predicate, NULL)) + handle_event (&xevent); + } + + return 0; +} diff --git a/abs/core/a b/abs/core/a new file mode 100644 index 0000000..16b14f5 --- /dev/null +++ b/abs/core/a @@ -0,0 +1 @@ +test file diff --git a/abs/core/aalib/PKGBUILD b/abs/core/aalib/PKGBUILD index ee23967..0ae5b05 100644 --- a/abs/core/aalib/PKGBUILD +++ b/abs/core/aalib/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 2990 2008-06-18 01:46:24Z eric $ +# $Id: PKGBUILD 9082 2008-08-17 03:29:36Z allan $ # Maintainer: arjan # Contributor: Tom Newsom # pkgname=aalib pkgver=1.4rc5 -pkgrel=5 +pkgrel=6 pkgdesc="AAlib is a portable ASCII art GFX library" arch=('i686' 'x86_64') url="http://aa-project.sourceforge.net/aalib/" @@ -18,7 +18,8 @@ md5sums=('9801095c42bba12edebd1902bcf0a990' '863a96a6689aa7ee073ca448bc2f133d') build() { cd $startdir/src/$pkgname-1.4.0 patch -Np0 -i ${startdir}/src/aclocal-fixes.patch || return 1 - ./configure --prefix=/usr --mandir=/usr/share/man + ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info make || return 1 make DESTDIR=$startdir/pkg install + rm ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/acpid/Makefile b/abs/core/acpid/Makefile new file mode 100644 index 0000000..a5fe385 --- /dev/null +++ b/abs/core/acpid/Makefile @@ -0,0 +1,56 @@ +# Makefile for ACPI daemon + +# update these numbers for new releases +VERSION = 1.0.6 + +INSTPREFIX = +BINDIR = $(INSTPREFIX)/usr/bin +SBINDIR = $(INSTPREFIX)/usr/sbin +MAN8DIR = $(INSTPREFIX)/usr/share/man/man8 + +SBIN_PROGS = acpid +BIN_PROGS = acpi_listen +PROGS = $(SBIN_PROGS) $(BIN_PROGS) + +acpid_SRCS = acpid.c event.c ud_socket.c +acpid_OBJS = $(acpid_SRCS:.c=.o) + +acpi_listen_SRCS = acpi_listen.c ud_socket.c +acpi_listen_OBJS = $(acpi_listen_SRCS:.c=.o) + +MAN8 = acpid.8 acpi_listen.8 +MAN8GZ = $(MAN8:.8=.8.gz) + +CFLAGS = -Wall -Werror -g $(DEFS) -D_GNU_SOURCE +DEFS = -DVERSION="\"$(VERSION)\"" + +all: $(PROGS) + +acpid: $(acpid_OBJS) + +acpi_listen: $(acpi_listen_OBJS) + +man: $(MAN8) + for a in $^; do gzip -f -9 -c $$a > $$a.gz; done + +install: $(PROGS) man + mkdir -p $(SBINDIR) + mkdir -p $(BINDIR) + install -m 750 acpid $(SBINDIR) + install -m 755 acpi_listen $(BINDIR) + mkdir -p $(MAN8DIR) + install -m 644 $(MAN8GZ) $(MAN8DIR) + +DISTTMP=/tmp +dist: + rm -rf $(DISTTMP)/acpid-$(VERSION) + mkdir -p $(DISTTMP)/acpid-$(VERSION) + cp -a * $(DISTTMP)/acpid-$(VERSION) + find $(DISTTMP)/acpid-$(VERSION) -type d -name CVS | xargs rm -rf + make -C $(DISTTMP)/acpid-$(VERSION) clean + tar -C $(DISTTMP) -zcvf acpid-$(VERSION).tar.gz acpid-$(VERSION) + rm -rf $(DISTTMP)/acpid-$(VERSION) + +clean: + $(RM) $(PROGS) $(MAN8GZ) *.o + diff --git a/abs/core/acpid/PKGBUILD b/abs/core/acpid/PKGBUILD new file mode 100644 index 0000000..5b9d033 --- /dev/null +++ b/abs/core/acpid/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 20369 2008-12-03 02:03:14Z thayer $ +# Contributor: Manolis Tzanidakis +# Contributor: Judd Vinet +# Maintainer: Thayer Williams + +pkgname=acpid +pkgver=1.0.8 +pkgrel=2 +pkgdesc="A daemon for delivering ACPI power management events" +url="http://acpid.sourceforge.net" +license=('GPL2') +arch=('i686' 'x86_64') +depends=(glibc) +source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz + acpid + anything + handler.sh) +backup=('etc/acpi/handler.sh' 'etc/acpi/events/anything') + +build() { + cd $srcdir/$pkgname-$pkgver + /usr/bin/make || return 1 + /bin/install -d -m0755 $pkgdir/usr/bin || return 1 + /usr/bin/make INSTPREFIX=$pkgdir \ + MAN8DIR=$pkgdir/usr/share/man/man8 install || return 1 + + # install our supplementary scripts + /bin/install -D -m0755 $srcdir/acpid $pkgdir/etc/rc.d/acpid || return 1 + /bin/install -D -m0644 $srcdir/anything $pkgdir/etc/acpi/events/anything || return 1 + /bin/install -D -m0755 $srcdir/handler.sh $pkgdir/etc/acpi/handler.sh || return 1 + + # set world readable bit on the acpid binary + /bin/chmod 755 $pkgdir/usr/sbin/acpid || return 1 +} diff --git a/abs/core/acpid/__changelog b/abs/core/acpid/__changelog new file mode 100644 index 0000000..1de4ec0 --- /dev/null +++ b/abs/core/acpid/__changelog @@ -0,0 +1,2 @@ +Modify handler.sh to use runit-init. + diff --git a/abs/core/acpid/acpid b/abs/core/acpid/acpid new file mode 100644 index 0000000..585944f --- /dev/null +++ b/abs/core/acpid/acpid @@ -0,0 +1,35 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/acpid` +case "$1" in + start) + stat_busy "Starting acpid" + [ -z "$PID" ] && /usr/sbin/acpid + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon acpid + stat_done + fi + ;; + stop) + stat_busy "Stopping acpid" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon acpid + stat_done + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/acpid/acpid-1.0.4-gcc4.patch b/abs/core/acpid/acpid-1.0.4-gcc4.patch new file mode 100644 index 0000000..b56901d --- /dev/null +++ b/abs/core/acpid/acpid-1.0.4-gcc4.patch @@ -0,0 +1,20 @@ +--- acpid-1.0.4/ud_socket.c 2005-04-26 10:26:29.000000000 +0000 ++++ acpid-1.0.4.az/ud_socket.c 2005-04-26 10:27:09.000000000 +0000 +@@ -60,7 +60,7 @@ + struct sockaddr_un cliaddr; + int len = sizeof(struct sockaddr_un); + +- newsock = accept(listenfd, (struct sockaddr *)&cliaddr, &len); ++ newsock = accept(listenfd, (struct sockaddr *)&cliaddr, (socklen_t *)&len); + if (newsock < 0) { + if (errno == EINTR) { + continue; /* signal */ +@@ -71,7 +71,7 @@ + + if (cred) { + len = sizeof(struct ucred); +- getsockopt(newsock, SOL_SOCKET, SO_PEERCRED,cred,&len); ++ getsockopt(newsock, SOL_SOCKET, SO_PEERCRED,cred,(socklen_t *)&len); + } + + return newsock; diff --git a/abs/core/acpid/anything b/abs/core/acpid/anything new file mode 100644 index 0000000..d182898 --- /dev/null +++ b/abs/core/acpid/anything @@ -0,0 +1,3 @@ +# Pass all events to our one handler script +event=.* +action=/etc/acpi/handler.sh %e diff --git a/abs/core/acpid/default b/abs/core/acpid/default new file mode 100644 index 0000000..93944aa --- /dev/null +++ b/abs/core/acpid/default @@ -0,0 +1,20 @@ +# This is the ACPID default configuration, it takes all +# events and passes them to /etc/acpi/default.sh for further +# processing. + +# event keeps a regular expression matching the event. To get +# power events only, just use something like "event=button power.*" +# to catch it. +# action keeps the command to be executed after an event occurs +#This halts the computer when the Power button is pressed. + +event=button power.* +#action=/sbin/shutdown -h now +action=/usr/local/sbin/shutdown.sh + +# Optionally you can specify the placeholder %e. It will pass +# through the whole kernel event message to the program you've +# specified. + +event=.* +action=/etc/acpi/acpi_handler.sh %e diff --git a/abs/core/acpid/handler.sh b/abs/core/acpid/handler.sh new file mode 100755 index 0000000..f6b0f9b --- /dev/null +++ b/abs/core/acpid/handler.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# Default acpi script that takes an entry for all actions + +# NOTE: This is a 2.6-centric script. If you use 2.4.x, you'll have to +# modify it to not use /sys + +minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq` +maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq` +setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed" + +set $* + +case "$1" in + button/power) + #echo "PowerButton pressed!">/dev/tty5 + case "$2" in + PWRF) logger "PowerButton pressed: $2" + /sbin/runit-init 0 + /sbin/poweroff + ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + button/sleep) + case "$2" in + SLPB) echo -n mem >/sys/power/state ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + ac_adapter) + case "$2" in + AC) + case "$4" in + 00000000) + echo -n $minspeed >$setspeed + #/etc/laptop-mode/laptop-mode start + ;; + 00000001) + echo -n $maxspeed >$setspeed + #/etc/laptop-mode/laptop-mode stop + ;; + esac + ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + battery) + case "$2" in + BAT0) + case "$4" in + 00000000) #echo "offline" >/dev/tty5 + ;; + 00000001) #echo "online" >/dev/tty5 + ;; + esac + ;; + CPU0) + ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + button/lid) + #echo "LID switched!">/dev/tty5 + ;; + *) + logger "ACPI group/action undefined: $1 / $2" + ;; +esac diff --git a/abs/core/alsa-lib/PKGBUILD b/abs/core/alsa-lib/PKGBUILD index 785f6b2..005dd82 100644 --- a/abs/core/alsa-lib/PKGBUILD +++ b/abs/core/alsa-lib/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 18680 2008-11-08 16:21:16Z tpowa $ # Maintainer: judd pkgname=alsa-lib -pkgver=1.0.16 -pkgrel=1 +pkgver=1.0.18 +pkgrel=2 pkgdesc="An alternative implementation of Linux sound support" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.alsa-project.org" depends=('glibc') optdepends=('python') @@ -13,11 +13,11 @@ makedepends=('python') license=('GPL') options=(!libtool) source=(ftp://ftp.alsa-project.org/pub/lib/$pkgname-$pkgver.tar.bz2) -md5sums=('73b0986758bb762648a5fafc93e287c1') build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver ./configure --prefix=/usr make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=$pkgdir install } +md5sums=('de60df7541fafe8c6a3397e0f105ff0e') diff --git a/abs/core/alsa-oss/PKGBUILD b/abs/core/alsa-oss/PKGBUILD index d70a9e9..66f7030 100644 --- a/abs/core/alsa-oss/PKGBUILD +++ b/abs/core/alsa-oss/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 13736 2008-09-28 09:04:09Z tpowa $ # Maintainer: judd pkgname=alsa-oss -pkgver=1.0.15 +pkgver=1.0.17 pkgrel=1 pkgdesc="OSS compatibility library" arch=(i686 x86_64) license=('GPL') url="http://www.alsa-project.org" options=(!libtool) -depends=('glibc' 'alsa-lib>=1.0.15') +depends=('glibc' 'alsa-lib>=1.0.17a') source=(ftp://ftp.alsa-project.org/pub/oss-lib/$pkgname-$pkgver.tar.bz2) build() { @@ -17,4 +17,4 @@ build() { make || return 1 make DESTDIR=$startdir/pkg install } -md5sums=('49fb5fbae8bf955b248e46ff9c9a2aa1') +md5sums=('1b1850c2fc91476a73d50f537cbd402f') diff --git a/abs/core/alsa-utils/PKGBUILD b/abs/core/alsa-utils/PKGBUILD index a14e0ad..caa636c 100644 --- a/abs/core/alsa-utils/PKGBUILD +++ b/abs/core/alsa-utils/PKGBUILD @@ -1,27 +1,29 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 18682 2008-11-08 16:46:01Z tpowa $ # Maintainer: judd pkgname=alsa-utils -pkgver=1.0.16 +pkgver=1.0.18 pkgrel=1 pkgdesc="An alternative implementation of Linux sound support" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.alsa-project.org" -depends=('alsa-lib>=1.0.16' 'dialog' 'pciutils' 'ncurses') +#can not use >=$pkgver due to use of letters in alsa-lib update versioning +depends=("alsa-lib>1.0.17.999" 'dialog' 'pciutils' 'ncurses') +makedepends=('xmlto' 'docbook-xsl') license=('GPL') source=(ftp://ftp.alsa-project.org/pub/utils/$pkgname-${pkgver}.tar.bz2 \ alsa alsaconf.patch alsa.conf.d) backup=(etc/conf.d/alsa) -md5sums=('b9f803f45e6988bb27a6bed521a949fc' - 'cce0969b0203a2bb35540fdf4f7e96ae' - '538f82650d08e901efea86c5395520df' - '366d370f874a45e67b63ce4a8b048202') build() { cd $startdir/src/$pkgname-${pkgver} patch -Np1 -i ../alsaconf.patch || return 1 - ./configure --prefix=/usr --with-curses=ncursesw + ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install install -D -m755 ../alsa $startdir/pkg/etc/rc.d/alsa install -D -m644 ../alsa.conf.d $startdir/pkg/etc/conf.d/alsa } +md5sums=('0a6b26d27cc2adfd591d91d8c155fdb7' + '9dff78913b13b10e67c4195e90395ed2' + '538f82650d08e901efea86c5395520df' + '93089f0d8872078939f76dd2acaebc2b') diff --git a/abs/core/alsa-utils/alsa b/abs/core/alsa-utils/alsa index 2581a9a..e1d6f28 100755 --- a/abs/core/alsa-utils/alsa +++ b/abs/core/alsa-utils/alsa @@ -7,7 +7,7 @@ case "$1" in start) stat_busy "Restoring ALSA Levels" - /usr/sbin/alsactl restore + /usr/sbin/alsactl $ALSA_ARGS restore if [ $? -gt 0 ]; then stat_fail else @@ -17,20 +17,28 @@ case "$1" in POWERSAVE=${POWERSAVE:-0} if [ -e /sys/module/snd_ac97_codec/parameters/power_save \ - -a $POWERSAVE -ne 0 ]; then - echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save - echo 1 > /dev/dsp + -a $POWERSAVE -ne 0 ]; then + echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save + echo 1 > /dev/dsp fi if [ -e /sys/module/snd_hda_intel/parameters/power_save \ - -a $POWERSAVE -ne 0 ]; then - echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save - echo 1 > /dev/dsp + -a $POWERSAVE -ne 0 ]; then + echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save + echo 1 > /dev/dsp fi ;; stop) - stat_busy "Saving ALSA Levels" - /usr/sbin/alsactl store + SAVE_VOLUME=${SAVE_VOLUME:-yes} + if [ "$SAVE_VOLUME" == "yes" ]; then + stat_busy "Saving ALSA Levels" + /usr/sbin/alsactl $ALSA_ARGS store + else + stat_busy "Stopping ALSA" + fi + if [ "$MUTE_VOLUME" == "yes" ]; then + /usr/bin/amixer -q set Master 0 mute + fi if [ $? -gt 0 ]; then stat_fail else @@ -44,5 +52,5 @@ case "$1" in $0 start ;; *) - echo "usage: $0 {start|stop|restart}" + echo "usage: $0 {start|stop|restart}" esac diff --git a/abs/core/alsa-utils/alsa.conf.d b/abs/core/alsa-utils/alsa.conf.d index 1fa3d38..2c4a92e 100644 --- a/abs/core/alsa-utils/alsa.conf.d +++ b/abs/core/alsa-utils/alsa.conf.d @@ -1,4 +1,15 @@ +# Arguments for alsactl +# example: ALSA_ARGS="--file /var/run/alsa-state" +ALSA_ARGS="" + # Enables powersaving mode for AC97 and hda_intel audio chips. # Set to 1 to enable powersaving. # Set to 0 to disable powersaving (default). POWERSAVE=0 + +# Whether to save volume levels when stopped ("yes" or "no"). +SAVE_VOLUME="yes" + +# Whether to mute the master volume when stopped ("yes" or "no"). +# Useful for bad audio cards which make a noise on system poweroff. +MUTE_VOLUME="no" diff --git a/abs/core/aspell/PKGBUILD b/abs/core/aspell/PKGBUILD index 0b8a590..8d584b9 100644 --- a/abs/core/aspell/PKGBUILD +++ b/abs/core/aspell/PKGBUILD @@ -1,24 +1,31 @@ -# $Id: PKGBUILD 521 2008-04-20 13:00:37Z andyrtr $ -# Maintainer: dorphell +# $Id: PKGBUILD 19099 2008-11-14 21:50:10Z thayer $ # Contributor: Jochem Kossen +# Contributor: dorphell +# Maintainer: Thayer Williams + pkgname=aspell pkgver=0.60.6 _pkgmajorver=0.60 -pkgrel=1 -pkgdesc="A Free and Open Source spell checker designed to eventually replace Ispell" -arch=(i686 x86_64) +pkgrel=4 +pkgdesc="A spell checker designed to eventually replace Ispell" +url="http://aspell.net/" +arch=('i686' 'x86_64') license=('LGPL') -depends=('gcc-libs' 'ncurses') +depends=('gcc-libs' 'ncurses>=5.6-7') +optdepends=('perl: to import old dictionaries') options=(!libtool) -source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) install=aspell.install -url="http://aspell.net/" +source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) md5sums=('bc80f0198773d5c05086522be67334eb') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install - ln -s ${pkgname}-${_pkgmajorver} ${startdir}/pkg/usr/lib/${pkgname} + make DESTDIR=${pkgdir} install || return 1 + ln -s ${pkgname}-${_pkgmajorver} ${pkgdir}/usr/lib/${pkgname} || return 1 + + # cleanup info files + rm ${pkgdir}/usr/share/info/dir || return 1 + gzip ${pkgdir}/usr/share/info/* || return 1 } diff --git a/abs/core/aspell/aspell.install b/abs/core/aspell/aspell.install index b635a4a..2747f02 100644 --- a/abs/core/aspell/aspell.install +++ b/abs/core/aspell/aspell.install @@ -1,8 +1,23 @@ +infodir=/usr/share/info +filelist=(aspell.info aspell-dev.info) + post_install() { - echo "NOTE: aspell comes with no default dictionary" + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done + echo "==> aspell comes with no default dictionary" +} + +post_upgrade() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done } -op=$1 -shift +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} -[ "$(type -t "$op")" = "function" ] && $op "$@" +# vim:set ts=2 sw=2 et: diff --git a/abs/core/ati-dri/PKGBUILD b/abs/core/ati-dri/PKGBUILD new file mode 100644 index 0000000..253f136 --- /dev/null +++ b/abs/core/ati-dri/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 17170 2008-10-26 11:01:19Z andyrtr $ +# Maintainer: Jan de Groot +# Contributor: Alexander Baldeck +pkgname=ati-dri +pkgver=7.2 +pkgrel=1 +pkgdesc="DRI drivers for ATI/AMD videochips" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=('libdrm>=2.3.1' 'libgl>=7.2' 'expat>=2.0.1') +makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext') +conflicts=('xf86-video-ati<6.9.0-6') +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') + +build() { + cd "${srcdir}/Mesa-${pkgver}" + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=radeon,r200,r300 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" + rm -rf "${pkgdir}/usr/include" + rm -rf "${pkgdir}/usr/lib/pkgconfig" +} diff --git a/abs/core/ati-dri/mesa-7.1-link-shared.patch b/abs/core/ati-dri/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/ati-dri/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/atk/PKGBUILD b/abs/core/atk/PKGBUILD index 90ba910..db41418 100644 --- a/abs/core/atk/PKGBUILD +++ b/abs/core/atk/PKGBUILD @@ -1,21 +1,21 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 30101 2009-03-16 18:13:31Z jgc $ # Maintainer: Jan de Groot pkgname=atk -pkgver=1.22.0 +pkgver=1.26.0 pkgrel=1 pkgdesc="A library providing a set of interfaces for accessibility" arch=(i686 x86_64) license=('LGPL') -depends=('glib2>=2.16.0') +depends=('glib2>=2.20.0') makedepends=('pkgconfig') -options=('!libtool') -source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.22/${pkgname}-${pkgver}.tar.bz2) +options=('!libtool' '!docs') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.26/${pkgname}-${pkgver}.tar.bz2) url='http://www.gtk.org/' -md5sums=('06a2b39a22d5ca35c47435da6b9643ac') +md5sums=('719229408019c548855673840679f156') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/audiofile/PKGBUILD b/abs/core/audiofile/PKGBUILD new file mode 100644 index 0000000..ca3fd82 --- /dev/null +++ b/abs/core/audiofile/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dorphell +pkgname=audiofile +pkgver=0.2.6 +pkgrel=3 +pkgdesc="Silicon Graphics Audio File Library" +url="http://www.68k.org/~michael/audiofile/" +arch=('i686') +depends=(glibc) +source=( http://altruistic.lbl.gov/mirrors/gnome/platform/2.7/2.7.2/sources/audiofile-0.2.6.tar.gz + aclocal-fixes.patch) +md5sums=(9c1049876cd51c0f1b12c2886cce4d42 a4c04c757d6b0a049c6fce6b64e9a17b) + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -Np0 -i ${startdir}/src/aclocal-fixes.patch || return 1 + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + find $startdir/pkg -name '*.la' -exec rm {} \; +} diff --git a/abs/core/audiofile/aclocal-fixes.patch b/abs/core/audiofile/aclocal-fixes.patch new file mode 100644 index 0000000..ef4d258 --- /dev/null +++ b/abs/core/audiofile/aclocal-fixes.patch @@ -0,0 +1,11 @@ +--- audiofile.m4.orig 2006-03-05 13:06:01.000000000 +0000 ++++ audiofile.m4 2006-03-05 13:06:17.000000000 +0000 +@@ -9,7 +9,7 @@ + dnl AM_PATH_AUDIOFILE([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) + dnl Test for Audio File Library, and define AUDIOFILE_CFLAGS and AUDIOFILE_LIBS. + dnl +-AC_DEFUN(AM_PATH_AUDIOFILE, ++AC_DEFUN([AM_PATH_AUDIOFILE], + [dnl + dnl Get compiler flags and libraries from the audiofile-config script. + dnl diff --git a/abs/core/aufs-utils/PKGBUILD b/abs/core/aufs-utils/PKGBUILD index b845405..9db9850 100644 --- a/abs/core/aufs-utils/PKGBUILD +++ b/abs/core/aufs-utils/PKGBUILD @@ -1,20 +1,26 @@ -# $Id: PKGBUILD 2265 2008-05-30 12:12:12Z paul $ +# $Id: PKGBUILD 22882 2008-12-29 19:41:01Z tpowa $ # Contributor: Paul Mattal # Maintainer: Paul Mattal pkgname=aufs-utils -pkgver=20080527 -pkgrel=1 -_kernver='2.6.26-ARCH' +pkgver=20081226 +pkgrel=3 +_kernver='2.6.28-LinHES' pkgdesc="Another Unionfs Implementation that supports NFS branches" arch=('i686' 'x86_64') url="http://aufs.sourceforge.net/" license=('GPL2') depends=('glibc') -source=(ftp://ftp.archlinux.org/other/aufs/aufs-$pkgver.tar.gz) -md5sums=('4378221aa5763d1f4408a0bbb0e80f0a') +source=(ftp://ftp.archlinux.org/other/aufs/aufs-$pkgver.tar.bz2) build() { - cd $startdir/src/aufs || return 1 + cd $srcdir/aufs || return 1 + + # Fix TMPFS_MAGIC error + sed 's|-le 26|-le 27|g' -i fs/aufs25/Makefile || return 1 + + # disable debug, broken in 2.6.28! + sed -i 's|CONFIG_AUFS_DEBUG = y|CONFIG_AUFS_DEBUG = |' \ + local.mk || return 1 # configure for NFS by: # 1) configure local.mk to use FILP and LHASH @@ -30,11 +36,13 @@ build() { make KDIR=/usr/src/linux-$_kernver/ -f local.mk || return 1 # install - install -D -m755 util/aufind.sh $startdir/pkg/usr/bin/aufind.sh || return 1 - install -D -m755 util/aulchown $startdir/pkg/usr/bin/aulchown || return 1 - install -D -m755 util/auplink $startdir/pkg/usr/bin/auplink || return 1 - install -D -m755 util/mount.aufs $startdir/pkg/sbin/mount.aufs || return 1 - install -D -m755 util/umount.aufs $startdir/pkg/sbin/umount.aufs || return 1 + install -D -m755 util/aufind.sh $pkgdir/usr/bin/aufind.sh || return 1 + install -D -m755 util/aulchown $pkgdir/usr/bin/aulchown || return 1 + install -D -m755 util/auplink $pkgdir/usr/bin/auplink || return 1 + install -D -m755 util/mount.aufs $pkgdir/sbin/mount.aufs || return 1 + install -D -m755 util/umount.aufs $pkgdir/sbin/umount.aufs || return 1 + install -D -m644 util/etc_default_aufs $pkgdir/etc/default/aufs || return 1 } # vim:set ts=2 sw=2 et: +md5sums=('e855ed9edc16953028f22cae393690de') diff --git a/abs/core/aufs/PKGBUILD b/abs/core/aufs/PKGBUILD index 57b6e24..3f1e1d0 100644 --- a/abs/core/aufs/PKGBUILD +++ b/abs/core/aufs/PKGBUILD @@ -1,36 +1,49 @@ -# $Id: PKGBUILD 5885 2008-07-21 19:28:11Z thomas $ +# $Id: PKGBUILD 22431 2008-12-26 20:13:34Z tpowa $ # Contributor: Paul Mattal # Maintainer: Paul Mattal pkgname=aufs -pkgver=20080527 +pkgver=20081226 pkgrel=2 -_kernver='2.6.26-ARCH' +_kernver='2.6.28-LinHES' pkgdesc="Another Unionfs Implementation that supports NFS branches" arch=('i686' 'x86_64') url="http://aufs.sourceforge.net/" license=('GPL2') -depends=('kernel26>=2.6.26-1' 'kernel26<=2.6.27' 'glibc' 'aufs-utils') +depends=('kernel26>=2.6.28' 'kernel26<2.6.29' 'glibc' 'aufs-utils=20081226') install=$pkgname.install -source=(ftp://ftp.archlinux.org/other/aufs/$pkgname-$pkgver.tar.gz) +source=(ftp://ftp.archlinux.org/other/aufs/$pkgname-$pkgver.tar.bz2) options=(!libtool !makeflags) -md5sums=('4378221aa5763d1f4408a0bbb0e80f0a') build() { - cd $startdir/src/$pkgname || return 1 + cd $srcdir/$pkgname || return 1 - # use splice functions exported by unionfs kernel patch - # - important for loopback fs mounts - sed s'|#if.*KERNEL_VERSION(2, 6, 26).*|#if 0|' -i fs/aufs25/vfsub.h \ - || return 1 + # Fix TMPFS_MAGIC error + sed 's|-le 26|-le 27|g' -i fs/aufs25/Makefile || return 1 + + # use splice functions exported by unionfs kernel patch' + # - important for loopback fs mounts sed -i 's|CONFIG_AUFS_SPLICE_PATCH =|CONFIG_AUFS_SPLICE_PATCH = y|' \ - local.mk || return 1 + local.mk || return 1 + + # this fixes the unionfs patch from hanging aufs + sed -i 's|CONFIG_AUFS_UNIONFS23_PATCH =|CONFIG_AUFS_UNIONFS23_PATCH = y|' \ + local.mk || return 1 + + sed -i 's|CONFIG_AUFS_WORKAROUND_FUSE =|CONFIG_AUFS_WORKAROUND_FUSE = y|' \ + local.mk || return 1 - # patch for spin_lock conflict with the new unionfs patch - sed s'|#if.*KERNEL_VERSION(2, 6, 26).*|#if 0|' -i fs/aufs25/cpup.c \ - || return 1 + sed -i 's|CONFIG_AUFS_BRANCH_MAX_127 = y|CONFIG_AUFS_BRANCH_MAX_127 =|' \ + local.mk || return 1 + + sed -i 's|CONFIG_AUFS_BRANCH_MAX_1023 =|CONFIG_AUFS_BRANCH_MAX_1023 = y|' \ + local.mk || return 1 + # ??? sed -i 's|.*CONFIG_AUFS_SHWH =.*|CONFIG_AUFS_SHWH = y|' \ local.mk || return 1 + # disable debug, broken in 2.6.28! + sed -i 's|CONFIG_AUFS_DEBUG = y|CONFIG_AUFS_DEBUG = |' \ + local.mk || return 1 # configure for NFS by: # 1) configure local.mk to use FILP and LHASH @@ -55,3 +68,4 @@ build() { } # vim:set ts=2 sw=2 et: +md5sums=('e855ed9edc16953028f22cae393690de') diff --git a/abs/core/aufs/aufs.install b/abs/core/aufs/aufs.install index 42d039a..8081c6a 100644 --- a/abs/core/aufs/aufs.install +++ b/abs/core/aufs/aufs.install @@ -5,7 +5,7 @@ pre_install() { post_install() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } @@ -13,7 +13,7 @@ post_install() { post_upgrade() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } @@ -21,7 +21,7 @@ post_upgrade() { post_remove() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } diff --git a/abs/core/aumix/PKGBUILD b/abs/core/aumix/PKGBUILD new file mode 100644 index 0000000..09b525a --- /dev/null +++ b/abs/core/aumix/PKGBUILD @@ -0,0 +1,24 @@ +# Contributor: Stefan Husmann + +pkgname=aumix +pkgver=2.8 +pkgrel=4 +pkgdesc="A color text mode sound mixer with GPM support" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.jpj.net/~trevor/aumix.html" +depends=('gpm') +conflicts=('aumix-gtk') +provides=('aumix-gtk') +source=(http://jpj.net/~trevor/aumix/aumix-$pkgver.tar.bz2 aumix.patch) +md5sums=('dc3fc7209752207c23e7c94ab886b340' 'a4dae53812a41b7576228c37856c701b') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -Np1 <../aumix.patch || return 1 + # we build without X/GTK support so we can avoid the dependencies. + # if you want GTK support, you can rebuild aumix from your ABS tree. + ./configure --prefix=/usr --without-alsa --without-gtk --without-gtk1 || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 +} diff --git a/abs/core/aumix/aumix.patch b/abs/core/aumix/aumix.patch new file mode 100644 index 0000000..2cf645f --- /dev/null +++ b/abs/core/aumix/aumix.patch @@ -0,0 +1,43 @@ +diff -Nru aumix-2.7/Makefile.in aumix-2.7-new/Makefile.in +--- aumix-2.7/Makefile.in Tue Jun 27 07:51:42 2000 ++++ aumix-2.7-new/Makefile.in Fri Oct 5 18:29:37 2001 +@@ -102,7 +102,7 @@ + all: all-redirect + .SUFFIXES: + $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile ++ cd $(top_srcdir) + + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ +@@ -114,7 +114,7 @@ + config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +- cd $(srcdir) && $(AUTOCONF) ++ cd $(srcdir) + + config.h: stamp-h + @if test ! -f $@; then \ +@@ -132,7 +132,7 @@ + $(MAKE) $(srcdir)/stamp-h.in; \ + else :; fi + $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h +- cd $(top_srcdir) && $(AUTOHEADER) ++ cd $(top_srcdir) + @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null + + mostlyclean-hdr: +diff -Nru aumix-2.7/src/Makefile.in aumix-2.7-new/src/Makefile.in +--- aumix-2.7/src/Makefile.in Tue Jun 27 07:51:42 2000 ++++ aumix-2.7-new/src/Makefile.in Fri Oct 5 18:30:02 2001 +@@ -123,8 +123,6 @@ + all: all-redirect + .SUFFIXES: + .SUFFIXES: .S .c .o .s +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile + + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + diff --git a/abs/core/autoconf/PKGBUILD b/abs/core/autoconf/PKGBUILD new file mode 100644 index 0000000..75bd7ef --- /dev/null +++ b/abs/core/autoconf/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 12545 2008-09-15 12:33:36Z andyrtr $ +# Maintainer: Andreas Radke + +pkgname=autoconf +pkgver=2.63 +pkgrel=1 +pkgdesc="A GNU tool for automatically configuring source code" +arch=(i686 x86_64) +license=('GPL2' 'GPL3') +url="http://www.gnu.org/software/autoconf" +groups=('base-devel') +depends=('awk' 'm4' 'diffutils' 'bash') +install=autoconf.install +source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('43d76649fb86cd21d64f68c48d5abdcf') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/share/info/dir + # conflict with bintuils + rm -f ${pkgdir}/usr/share/info/standards.info +} diff --git a/abs/core/autoconf/autoconf.install b/abs/core/autoconf/autoconf.install new file mode 100644 index 0000000..6440ec6 --- /dev/null +++ b/abs/core/autoconf/autoconf.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(autoconf.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/automake/PKGBUILD b/abs/core/automake/PKGBUILD new file mode 100644 index 0000000..2943f44 --- /dev/null +++ b/abs/core/automake/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 19545 2008-11-26 18:00:03Z andyrtr $ +# Contributor: judd +# Maintainer: Andreas Radke + +pkgname=automake +pkgver=1.10.2 +pkgrel=1 +pkgdesc="A GNU tool for automatically creating Makefiles" +arch=(i686 x86_64) +license=('GPL') +url="http://www.gnu.org/software/automake" +groups=('base-devel') +depends=('perl' 'bash' 'texinfo') +install=automake.install +source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('ede3e08c696861a01f4d2c6a2e822053') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + + rm -f ${pkgdir}/usr/share/info/dir +} diff --git a/abs/core/automake/automake.install b/abs/core/automake/automake.install new file mode 100644 index 0000000..a1030e5 --- /dev/null +++ b/abs/core/automake/automake.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(automake.info automake.info-1 automake.info-2) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/avahi/ChangeLog b/abs/core/avahi/ChangeLog new file mode 100644 index 0000000..e298fb4 --- /dev/null +++ b/abs/core/avahi/ChangeLog @@ -0,0 +1,9 @@ + +2009-01-04 Douglas Soares de Andrade + + * Updated for i686: 0.6.24 + +2008-07-22 Douglas Soares de Andrade + + * Updated for i686: 0.6.23 + diff --git a/abs/core/avahi/PKGBUILD b/abs/core/avahi/PKGBUILD new file mode 100644 index 0000000..c448d16 --- /dev/null +++ b/abs/core/avahi/PKGBUILD @@ -0,0 +1,64 @@ +# $Id: PKGBUILD 23159 2009-01-04 04:58:11Z douglas $ +# Maintainer: Douglas Soares de Andrade + +pkgname=avahi +pkgver=0.6.24 +pkgrel=2 +pkgdesc="A multicast/unicast DNS-SD framework" +arch=('i686' 'x86_64') +url="http://www.avahi.org/" +license=('LGPL') +depends=('dbus>=1.1.20-1' 'libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat') +optdepends=('qt3:Qt3 UI support' 'libglade:Avahi-discover-standalone' + 'nss-mdns:NSS support for mDNS') +makedepends=('mono' 'pygtk' 'gtk-sharp-2' 'dbus-python' 'qt3' 'libglade' 'intltool') +backup=(etc/avahi/avahi-daemon.conf) +install=avahi.install +conflicts=('howl' 'mdnsresponder') +provides=('howl' 'mdnsresponder') +replaces=('howl' 'mdnsresponder') +options=('!libtool') +source=(http://www.avahi.org/download/avahi-${pkgver}.tar.gz gnome-nettool.png) + +build() { + [ -z "${QTDIR}" ] && . /etc/profile.d/qt3.sh + export MONO_SHARED_DIR=${startdir}/src/.wabi + mkdir -p ${MONO_SHARED_DIR} + + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-qt4 \ + --disable-monodoc \ + --disable-doxygen-doc \ + --disable-xmltoman \ + --enable-compat-libdns_sd \ + --enable-compat-howl \ + --with-distro=archlinux \ + --with-avahi-priv-access-group=network \ + --enable-autoipd \ + --with-autoipd-user=avahi \ + --with-autoipd-group=avahi + + make || return 1 + make DESTDIR=${startdir}/pkg install + + rm -rf ${MONO_SHARED_DIR} + + #fix capability + sed -i -e 's|$DAEMON -D |modprobe capability > /dev/null 2>\&1 ; $DAEMON -D |' ${startdir}/pkg/etc/rc.d/avahi-daemon + + sed -i -e 's/netdev/network/g' ${startdir}/pkg/etc/dbus-1/system.d/avahi-dbus.conf + + # howl and mdnsresponder compatability + cd ${startdir}/pkg/usr/include + ln -s avahi-compat-libdns_sd/dns_sd.h dns_sd.h + ln -s avahi-compat-howl howl + cd ${startdir}/pkg/usr/lib/pkgconfig + ln -s avahi-compat-howl.pc howl.pc + mkdir -p ${startdir}/pkg/usr/share/pixmaps + install -m 644 ${startdir}/src/gnome-nettool.png ${startdir}/pkg/usr/share/pixmaps/gnome-nettool.png +} +md5sums=('068c1d220b07037e64caf87d4a7a0504' + '42c2905307c7a5dc6ac4b75f4c3d65a3') diff --git a/abs/core/avahi/avahi.install b/abs/core/avahi/avahi.install new file mode 100644 index 0000000..f0beca8 --- /dev/null +++ b/abs/core/avahi/avahi.install @@ -0,0 +1,42 @@ +post_install() { + echo -n "adding avahi system group... " + groupadd -g 84 avahi && echo "done." + echo -n "adding avahi system user... " + useradd -c "Avahi daemon" -u 84 -d / -g avahi -s /bin/false avahi \ + && echo "done." + passwd -l avahi &>/dev/null + + post_upgrade + cat << 'EOM' +==> The following daemons may be added to DAEMONS in /etc/rc.conf: + -> avahi-daemon - the mdns responder, you probably want this. + dbus needs to be running when you start it. + -> avahi-dnsconfd - daemon used for peer-to-peer automatic dns + configuration on dhcp-less networks. + +==> To use some of the client applications you will have to install python. + -> In addition, pygtk is required for the graphical ones and + twisted-web for avahi-bookmarks. + +EOM +} + +post_upgrade() { + true +} + +pre_remove() { + # pre_remove gets called whenever post_remove is defined. + true +} + +post_remove() { + # post_remove doesn't start at a newline like the other post_* functions, + # so we'll have to make one for ourselves. + echo -n -e "\nremoving avahi system user... " + userdel avahi && echo "done." +} + +op=$1 +shift +$op $* diff --git a/abs/core/avahi/gnome-nettool.png b/abs/core/avahi/gnome-nettool.png new file mode 100644 index 0000000..227d067 Binary files /dev/null and b/abs/core/avahi/gnome-nettool.png differ diff --git a/abs/core/bash/PKGBUILD b/abs/core/bash/PKGBUILD index 24f80ef..ae1eaba 100644 --- a/abs/core/bash/PKGBUILD +++ b/abs/core/bash/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 5542 2008-07-18 15:21:56Z aaron $ +# $Id: PKGBUILD 25772 2009-01-28 20:03:08Z aaron $ # Maintainer: Aaron Griffin pkgname=bash -_patchlevel=039 +_patchlevel=048 pkgver=3.2.$_patchlevel -pkgrel=11 +pkgrel=3 pkgdesc="The GNU Bourne Again shell" arch=(i686 x86_64) license=('GPL') @@ -12,16 +12,45 @@ url="http://www.gnu.org/software/bash/bash.html" groups=('base') backup=(etc/profile.bash etc/skel/.bashrc etc/skel/.bash_profile) depends=('readline>=5.2' 'glibc') +makedepends=(gzip bison) provides=('sh') +install=bash.install source=(http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz - bash-noinfo.patch profile.bash bashrc) + profile.bash bashrc) for p in $(seq -w 001 $_patchlevel); do source=(${source[@]} http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$p) done + +build() { + cd ${startdir}/src/${pkgname}-3.2 + for p in ../bash32-*; do + msg "applying patch ${p}" + patch -Np0 -i ${p} || return 1 + done + + ./configure --prefix=/usr --with-curses --enable-readline \ + --without-bash-malloc --with-installed-readline \ + --bindir=/bin --mandir=/usr/share/man --infodir=/usr/share/info + make || return 1 + make DESTDIR=${startdir}/pkg install + + install -D -m644 ${startdir}/src/profile.bash ${startdir}/pkg/etc/profile.bash + + # for now, bash is our default /bin/sh + cd ${startdir}/pkg/bin + ln -s bash sh + + mkdir -p $startdir/pkg/etc/skel/ + install -D -m644 $startdir/src/bashrc $startdir/pkg/etc/skel/.bashrc + echo ". \$HOME/.bashrc" >$startdir/pkg/etc/skel/.bash_profile + + rm -f ${pkgdir}/usr/share/info/dir + gzip -9 ${pkgdir}/usr/share/info/bash.info +} +# wow, that's a lot of md5sums! md5sums=('00bfa16d58e034e3c2aa27f390390d30' - 'f2a3cf51e58f9b82af50b861191d96fd' 'c2fae355facefcac8a732cce877da194' - '9451109f3fe09d6381cbf36de9fbf06f' + '3d2837e84645eac9bde399b58014bafa' 'd8e10c754f477e3f3a581af566b89301' 'd38a5288b2f0ea6c9ac76b66cc74ef7d' '0b90d37911827d8cb95f3b4353cc225e' @@ -60,28 +89,13 @@ md5sums=('00bfa16d58e034e3c2aa27f390390d30' '95c70c7ae9de5bd3659c86284be7fb76' '62b876a3d7cd192cc8db2476fbb6b7b9' 'aca3afc341bd3e5a0d8a3b4ca40dbb3f' - 'e240c34f979b64bcb83c5f6567110bb1') - -build() { - cd ${startdir}/src/${pkgname}-3.2 - for p in ../bash32-*; do - msg "applying patch ${p}" - patch -Np0 -i ${p} || return 1 - done - patch -Np1 -i ../bash-noinfo.patch || return 1 - ./configure --prefix=/usr --with-curses --enable-readline \ - --without-bash-malloc --with-installed-readline \ - --bindir=/bin --mandir=/usr/share/man - make || return 1 - make DESTDIR=${startdir}/pkg install - - install -D -m644 ${startdir}/src/profile.bash ${startdir}/pkg/etc/profile.bash - - # for now, bash is our default /bin/sh - cd ${startdir}/pkg/bin - ln -s bash sh - - mkdir -p $startdir/pkg/etc/skel/ - install -D -m644 $startdir/src/bashrc $startdir/pkg/etc/skel/.bashrc - echo ". \$HOME/.bashrc" >$startdir/pkg/etc/skel/.bash_profile -} + 'e240c34f979b64bcb83c5f6567110bb1' + '06e6df263398807fa032707fb7b77b5f' + '373ae081d658dc85bc1058c4759d6669' + '9c9ebc6bfc33a0215277ee17a276eb5a' + 'b87fb9ea16a64ca41b6676e9a7eb7a33' + '07e0229ce5879bfbd26a8146070fd366' + '1ad07965a8a93f3556ee1ab18b97cde2' + 'f7b1e19fcad54c2286bc0ed614aad9bf' + '550690766de770116c34dbdf74e59184' + '4cc593e7b789b23b37a5397e092d3954') diff --git a/abs/core/bash/bash.install b/abs/core/bash/bash.install new file mode 100644 index 0000000..5c3c435 --- /dev/null +++ b/abs/core/bash/bash.install @@ -0,0 +1,21 @@ +info_dir=/usr/share/info +info_files=(bash.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for f in ${info_files[@]}; do + usr/bin/install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for f in ${info_files[@]}; do + usr/bin/install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} +# vim:set ts=2 sw=2 et: diff --git a/abs/core/bash/bashrc b/abs/core/bash/bashrc index fcabce0..0963431 100644 --- a/abs/core/bash/bashrc +++ b/abs/core/bash/bashrc @@ -1,3 +1,6 @@ + +# Check for an interactive session +[ -z "$PS1" ] && return + alias ls='ls --color=auto' PS1='[\u@\h \W]\$ ' - diff --git a/abs/core/bc/PKGBUILD b/abs/core/bc/PKGBUILD index 88a85df..a20e35f 100644 --- a/abs/core/bc/PKGBUILD +++ b/abs/core/bc/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 9097 2008-08-17 03:44:40Z allan $ # Maintainer: dorphell pkgname=bc pkgver=1.06 -pkgrel=4 +pkgrel=5 pkgdesc="An arbitrary precision calculator language" arch=(i686 x86_64) license=('GPL') @@ -18,7 +18,9 @@ build() { CFLAGS="$CFLAGS -O3" cd ${startdir}/src/${pkgname}-${pkgver} patch -Np1 -i ${startdir}/src/build-fix.patch || return 1 - ./configure --prefix=/usr --with-readline + ./configure --prefix=/usr --mandir=/usr/share/man \ + --infodir=/usr/share/info --with-readline make LEX="flex -I" || return 1 make DESTDIR=${startdir}/pkg install + rm ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/binutils/PKGBUILD b/abs/core/binutils/PKGBUILD index f958da6..9a8b925 100644 --- a/abs/core/binutils/PKGBUILD +++ b/abs/core/binutils/PKGBUILD @@ -1,45 +1,46 @@ -# $Id: PKGBUILD 2707 2008-06-12 14:03:09Z andyrtr $ -# Maintainer: judd +# $Id: PKGBUILD 19325 2008-11-20 11:47:00Z andyrtr $ +# Maintainer: Andreas Radke -# compile always twice: first binutils, then gcc, then binutils again +# toolchain build order: kernel-headers->glibc->binutils->gcc-libs->gcc->binutils->glibc pkgname=binutils -pkgver=2.18 -pkgrel=17 -_date=20080610 +pkgver=2.19 +pkgrel=1 +_date=20081119 pkgdesc="A set of programs to assemble and manipulate binary and object files" arch=('i686' 'x86_64') url="http://sources.redhat.com/binutils" license=('GPL') groups=('base') options=('!libtool' '!distcc' '!ccache') -depends=('glibc>=2.8-1') -makedepends=('texinfo>=4.12-2') +depends=('glibc>=2.9-1' 'texinfo>=4.12-3') source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}_${_date}.tar.bz2) -md5sums=('9847b4141a1c99558cfd88dd65182566') +md5sums=('4a49694b08ef0e5931dba4813326d062') +install=binutils.install build() { # for cvs checkout # mkdir ${startdir}/src/${pkgname}-${_date} # cd ${startdir}/src/${pkgname}-${_date} -# export _TAG=binutils-2_18-branch +# export _TAG=binutils-2_19-branch # export 'CVSROOT=:pserver:anoncvs@sourceware.org:/cvs/src' # cvs -z9 co -r $_TAG binutils || return 1 -# cd src && tar -cvjf ../binutils-2.18_${_date}.tar.bz2 * +# cd src && tar -cvjf ../../../binutils-2.19_${_date}.tar.bz2 * # return 1 cd ${startdir}/src - autoconf mkdir build cd build CC="gcc -L`pwd`/bfd/.libs/" if [ "${CARCH}" = "x86_64" ]; then - ../configure --prefix=/usr --enable-shared --enable-64-bit-bfd --disable-multilib + ../configure --prefix=/usr --infodir=/usr/share/info --enable-shared --enable-64-bit-bfd --disable-multilib else - ../configure --prefix=/usr --enable-shared + ../configure --prefix=/usr --infodir=/usr/share/info --enable-shared fi + # fix info files install path + sed -i -e "s:infodir \= \/usr\/share:infodir \= ${pkgdir}\/usr\/share:" ${srcdir}/build/Makefile || return 1 # This checks the host environment and makes sure all the necessary tools are available to compile Binutils. make configure-host || return 1 @@ -64,4 +65,6 @@ build() { # Remove these symlinks, with binutils prereleases they are not ABI stable. # Programs should compile static to the .a file. rm -f ${startdir}/pkg/usr/lib/lib{bfd,opcodes}.so + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/binutils/binutils.install b/abs/core/binutils/binutils.install new file mode 100644 index 0000000..a1e762a --- /dev/null +++ b/abs/core/binutils/binutils.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(as.info bfd.info binutils.info configure.info gprof.info ld.info standards.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/bison/ChangeLog b/abs/core/bison/ChangeLog new file mode 100644 index 0000000..20cc7f9 --- /dev/null +++ b/abs/core/bison/ChangeLog @@ -0,0 +1,11 @@ +2008-12-11 Eric Belanger + + * bison 2.4.1-1 + * Upstream update + +2008-11-08 Eric Belanger + + * bison 2.4-1 + * Upstream update + * Added info file support + * Added ChangeLog diff --git a/abs/core/bison/PKGBUILD b/abs/core/bison/PKGBUILD new file mode 100644 index 0000000..3172db7 --- /dev/null +++ b/abs/core/bison/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 21374 2008-12-12 10:34:44Z eric $ +# Maintainer: Eric Belanger + +pkgname=bison +pkgver=2.4.1 +pkgrel=1 +pkgdesc="The GNU general-purpose parser generator" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnu.org/software/bison/bison.html" +depends=('glibc' 'm4' 'texinfo') +groups=('base-devel') +install=bison.install +source=(ftp://ftp.gnu.org/gnu/bison/${pkgname}-${pkgver}.tar.gz) +md5sums=('c58aa1da418dc9704070872489e89bf5') +sha1sums=('ecc4139bbd45b73f42f2b04482d77c16534fea28') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --datadir=/usr/share || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm ${pkgdir}/usr/share/info/dir || return 1 + gzip ${pkgdir}/usr/share/info/* || return 1 +} diff --git a/abs/core/bison/bison.install b/abs/core/bison/bison.install new file mode 100644 index 0000000..b0cdfe9 --- /dev/null +++ b/abs/core/bison/bison.install @@ -0,0 +1,18 @@ +infodir=/usr/share/info +filelist=(bison.info.gz) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/abs/core/ca-certificates/PKGBUILD b/abs/core/ca-certificates/PKGBUILD index 03871c6..35b08ca 100644 --- a/abs/core/ca-certificates/PKGBUILD +++ b/abs/core/ca-certificates/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 9715 2008-08-18 10:20:37Z pierre $ +# $Id: PKGBUILD 15695 2008-10-17 11:18:31Z pierre $ # Maintainer: Pierre Schmitz pkgname=ca-certificates pkgver=20080809 -pkgrel=13 +pkgrel=30 pkgdesc='Common CA certificates' arch=('i686' 'x86_64') url='http://packages.qa.debian.org/c/ca-certificates.html' @@ -11,7 +11,6 @@ license=('MPL' 'GPL') source=("http://ftp.debian.org/debian/pool/main/c/${pkgname}/${pkgname}_${pkgver}.tar.gz") depends=('bash' 'run-parts' 'openssl' 'findutils' 'coreutils' 'sed') makedepends=('ruby') -groups=('base') install=ca-certificates.install backup=('etc/ca-certificates.conf') md5sums=('c155f5059006b94ad0aea7018161ab37') diff --git a/abs/core/ca-certificates/ca-certificates.install b/abs/core/ca-certificates/ca-certificates.install index 3a7ac28..bd3cf6d 100644 --- a/abs/core/ca-certificates/ca-certificates.install +++ b/abs/core/ca-certificates/ca-certificates.install @@ -1,5 +1,5 @@ post_install() { - usr/sbin/update-ca-certificates --fresh + usr/sbin/update-ca-certificates --fresh &> /dev/null } post_upgrade() { diff --git a/abs/core/cairo/PKGBUILD b/abs/core/cairo/PKGBUILD index 16f38b3..4bdb085 100644 --- a/abs/core/cairo/PKGBUILD +++ b/abs/core/cairo/PKGBUILD @@ -1,23 +1,24 @@ -# $Id: PKGBUILD 491 2008-04-20 11:39:47Z jgc $ +# $Id: PKGBUILD 22041 2008-12-21 12:11:48Z jgc $ # Maintainer: Jan de Groot # Contributor: Brice Carpentier pkgname=cairo -pkgver=1.6.4 +pkgver=1.8.6 pkgrel=1 pkgdesc="Cairo vector graphics library" arch=(i686 x86_64) license=('LGPL' 'MPL') url="http://cairographics.org/" -depends=('libpng>=1.2.25' 'libxrender' 'fontconfig>=2.5.0' 'pixman>=0.10.0') +depends=('libpng>=1.2.33' 'libxrender' 'fontconfig>=2.6.0' 'pixman>=0.12.0' 'xcb-util>=0.3.2') makedepends=('pkgconfig') options=('!libtool') source=(http://cairographics.org/releases/${pkgname}-${pkgver}.tar.gz) -md5sums=('a198d509f9e3a35b78de8bb02174ebb9') +md5sums=('4e64139ef6f668df24450f3b81dd0771') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --enable-xcb --disable-static || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/cdparanoia/PKGBUILD b/abs/core/cdparanoia/PKGBUILD index a29bac7..0e60bd4 100644 --- a/abs/core/cdparanoia/PKGBUILD +++ b/abs/core/cdparanoia/PKGBUILD @@ -1,21 +1,20 @@ -# $Id: PKGBUILD 8181 2008-08-08 15:48:07Z alexanderf $ +# $Id: PKGBUILD 13080 2008-09-25 21:49:25Z pierre $ # Maintainer: Alexander Fehr pkgname=cdparanoia -pkgver=10.1 -pkgrel=1 +pkgver=10.2 +pkgrel=2 pkgdesc="Compact Disc Digital Audio extraction tool" arch=('i686' 'x86_64') url="http://www.xiph.org/paranoia/" license=('GPL') depends=('glibc') options=('!makeflags') -source=(http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-$pkgver.src.tgz) -md5sums=('abf410217c4ba42f927bfd9d7b86e163') +source=(http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-$pkgver.src.tgz gcc.patch) build() { cd "$srcdir/cdparanoia-III-$pkgver" - + patch -p0 -i ${srcdir}/gcc.patch || return 1 ./configure --prefix=/usr --mandir=/usr/share/man || return 1 make || return 1 make prefix="$pkgdir/usr" MANDIR="$pkgdir/usr/share/man" install || return 1 diff --git a/abs/core/cdparanoia/gcc.patch b/abs/core/cdparanoia/gcc.patch new file mode 100644 index 0000000..b157353 --- /dev/null +++ b/abs/core/cdparanoia/gcc.patch @@ -0,0 +1,582 @@ +Index: interface/test_interface.c +=================================================================== +--- interface/test_interface.c (Revision 15337) ++++ interface/test_interface.c (Revision 15340) +@@ -66,9 +66,9 @@ + if(!fd)fd=fdopen(d->cdda_fd,"r"); + + if(beginprivate->last_milliseconds=20; ++ d->private_data->last_milliseconds=20; + else +- d->private->last_milliseconds=sectors; ++ d->private_data->last_milliseconds=sectors; + + #ifdef CDDA_TEST_UNDERRUN + sectors-=1; +Index: interface/cdda_interface.h +=================================================================== +--- interface/cdda_interface.h (Revision 15337) ++++ interface/cdda_interface.h (Revision 15340) +@@ -84,7 +84,7 @@ + int is_atapi; + int is_mmc; + +- cdda_private_data_t *private; ++ cdda_private_data_t *private_data; + void *reserved; + unsigned char inqbytes[4]; + +Index: interface/interface.c +=================================================================== +--- interface/interface.c (Revision 15337) ++++ interface/interface.c (Revision 15340) +@@ -39,9 +39,9 @@ + if(d->drive_model)free(d->drive_model); + if(d->cdda_fd!=-1)close(d->cdda_fd); + if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd); +- if(d->private){ +- if(d->private->sg_hd)free(d->private->sg_hd); +- free(d->private); ++ if(d->private_data){ ++ if(d->private_data->sg_hd)free(d->private_data->sg_hd); ++ free(d->private_data); + } + + free(d); +@@ -127,7 +127,7 @@ + } + } + } +- if(ms)*ms=d->private->last_milliseconds; ++ if(ms)*ms=d->private_data->last_milliseconds; + return(sectors); + } + +Index: interface/scsi_interface.c +=================================================================== +--- interface/scsi_interface.c (Revision 15337) ++++ interface/scsi_interface.c (Revision 15340) +@@ -15,13 +15,13 @@ + static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){ + struct timespec tv1; + struct timespec tv2; +- int ret1=clock_gettime(d->private->clock,&tv1); ++ int ret1=clock_gettime(d->private_data->clock,&tv1); + int ret2=ioctl(fd, command,arg); +- int ret3=clock_gettime(d->private->clock,&tv2); ++ int ret3=clock_gettime(d->private_data->clock,&tv2); + if(ret1<0 || ret3<0){ +- d->private->last_milliseconds=-1; ++ d->private_data->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; ++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; + } + return ret2; + } +@@ -96,7 +96,7 @@ + static void clear_garbage(cdrom_drive *d){ + fd_set fdset; + struct timeval tv; +- struct sg_header *sg_hd=d->private->sg_hd; ++ struct sg_header *sg_hd=d->private_data->sg_hd; + int flag=0; + + /* clear out any possibly preexisting garbage */ +@@ -185,7 +185,7 @@ + struct timespec tv2; + int tret1,tret2; + int status = 0; +- struct sg_header *sg_hd=d->private->sg_hd; ++ struct sg_header *sg_hd=d->private_data->sg_hd; + long writebytes=SG_OFF+cmd_len+in_size; + + /* generic scsi device services */ +@@ -195,7 +195,7 @@ + + memset(sg_hd,0,sizeof(sg_hd)); + memset(sense_buffer,0,SG_MAX_SENSE); +- memcpy(d->private->sg_buffer,cmd,cmd_len+in_size); ++ memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size); + sg_hd->twelve_byte = cmd_len == 12; + sg_hd->result = 0; + sg_hd->reply_len = SG_OFF + out_size; +@@ -209,7 +209,7 @@ + tell if the command failed. Scared yet? */ + + if(bytecheck && out_size>in_size){ +- memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); ++ memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); + /* the size does not remove cmd_len due to the way the kernel + driver copies buffers */ + writebytes+=(out_size-in_size); +@@ -243,7 +243,7 @@ + } + + sigprocmask (SIG_BLOCK, &(d->sigset), NULL ); +- tret1=clock_gettime(d->private->clock,&tv1); ++ tret1=clock_gettime(d->private_data->clock,&tv1); + errno=0; + status = write(d->cdda_fd, sg_hd, writebytes ); + +@@ -289,7 +289,7 @@ + } + } + +- tret2=clock_gettime(d->private->clock,&tv2); ++ tret2=clock_gettime(d->private_data->clock,&tv2); + errno=0; + status = read(d->cdda_fd, sg_hd, SG_OFF + out_size); + sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL ); +@@ -313,7 +313,7 @@ + if(bytecheck && in_size+cmd_lenprivate->sg_buffer[i]!=bytefill){ ++ if(d->private_data->sg_buffer[i]!=bytefill){ + flag=1; + break; + } +@@ -326,9 +326,9 @@ + + errno=0; + if(tret1<0 || tret2<0){ +- d->private->last_milliseconds=-1; ++ d->private_data->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000; ++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000; + } + return(0); + } +@@ -347,7 +347,7 @@ + + memset(&hdr,0,sizeof(hdr)); + memset(sense,0,sizeof(sense)); +- memcpy(d->private->sg_buffer,cmd+cmd_len,in_size); ++ memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size); + + hdr.cmdp = cmd; + hdr.cmd_len = cmd_len; +@@ -355,7 +355,7 @@ + hdr.mx_sb_len = SG_MAX_SENSE; + hdr.timeout = 50000; + hdr.interface_id = 'S'; +- hdr.dxferp = d->private->sg_buffer; ++ hdr.dxferp = d->private_data->sg_buffer; + hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */ + + /* scary buffer fill hack */ +@@ -400,7 +400,7 @@ + if(bytecheck && in_sizeprivate->sg_buffer[i]!=bytefill){ ++ if(d->private_data->sg_buffer[i]!=bytefill){ + flag=1; + break; + } +@@ -412,7 +412,7 @@ + } + + /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */ +- /* d->private->last_milliseconds = hdr.duration; */ ++ /* d->private_data->last_milliseconds = hdr.duration; */ + + errno = 0; + return 0; +@@ -445,9 +445,9 @@ + + handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense); + +- key = d->private->sg_buffer[2] & 0xf; +- ASC = d->private->sg_buffer[12]; +- ASCQ = d->private->sg_buffer[13]; ++ key = d->private_data->sg_buffer[2] & 0xf; ++ ASC = d->private_data->sg_buffer[12]; ++ ASCQ = d->private_data->sg_buffer[13]; + + if(key == 2 && ASC == 4 && ASCQ == 1) return 0; + return 1; +@@ -492,7 +492,7 @@ + if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1); + + { +- unsigned char *b=d->private->sg_buffer; ++ unsigned char *b=d->private_data->sg_buffer; + if(b[0])return(1); /* Handles only up to 256 bytes */ + if(b[6])return(1); /* Handles only up to 256 bytes */ + +@@ -604,8 +604,8 @@ + static unsigned int get_orig_sectorsize(cdrom_drive *d){ + if(mode_sense(d,12,0x01))return(-1); + +- d->orgdens = d->private->sg_buffer[4]; +- return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]); ++ d->orgdens = d->private_data->sg_buffer[4]; ++ return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]); + } + + /* switch CDROM scsi drives to given sector size */ +@@ -664,8 +664,8 @@ + return(-4); + } + +- first=d->private->sg_buffer[2]; +- last=d->private->sg_buffer[3]; ++ first=d->private_data->sg_buffer[2]; ++ last=d->private_data->sg_buffer[3]; + tracks=last-first+1; + + if (last > MAXTRK || first > MAXTRK || last<0 || first<0) { +@@ -683,7 +683,7 @@ + return(-5); + } + { +- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4); ++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4); + + d->disc_toc[i-first].bFlags=toc->bFlags; + d->disc_toc[i-first].bTrack=i; +@@ -704,7 +704,7 @@ + return(-2); + } + { +- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4); ++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4); + + d->disc_toc[i-first].bFlags=toc->bFlags; + d->disc_toc[i-first].bTrack=0xAA; +@@ -738,7 +738,7 @@ + } + + /* copy to our structure and convert start sector */ +- tracks = d->private->sg_buffer[1]; ++ tracks = d->private_data->sg_buffer[1]; + if (tracks > MAXTRK) { + cderror(d,"003: CDROM reporting illegal number of tracks\n"); + return(-3); +@@ -754,33 +754,33 @@ + return(-5); + } + +- d->disc_toc[i].bFlags = d->private->sg_buffer[10]; ++ d->disc_toc[i].bFlags = d->private_data->sg_buffer[10]; + d->disc_toc[i].bTrack = i + 1; + + d->disc_toc[i].dwStartSector= d->adjust_ssize * +- (((signed char)(d->private->sg_buffer[2])<<24) | +- (d->private->sg_buffer[3]<<16)| +- (d->private->sg_buffer[4]<<8)| +- (d->private->sg_buffer[5])); ++ (((signed char)(d->private_data->sg_buffer[2])<<24) | ++ (d->private_data->sg_buffer[3]<<16)| ++ (d->private_data->sg_buffer[4]<<8)| ++ (d->private_data->sg_buffer[5])); + } + + d->disc_toc[i].bFlags = 0; + d->disc_toc[i].bTrack = i + 1; +- memcpy (&foo, d->private->sg_buffer+2, 4); +- memcpy (&bar, d->private->sg_buffer+6, 4); ++ memcpy (&foo, d->private_data->sg_buffer+2, 4); ++ memcpy (&bar, d->private_data->sg_buffer+6, 4); + d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) + + be32_to_cpu(bar)); + + d->disc_toc[i].dwStartSector= d->adjust_ssize * +- ((((signed char)(d->private->sg_buffer[2])<<24) | +- (d->private->sg_buffer[3]<<16)| +- (d->private->sg_buffer[4]<<8)| +- (d->private->sg_buffer[5]))+ ++ ((((signed char)(d->private_data->sg_buffer[2])<<24) | ++ (d->private_data->sg_buffer[3]<<16)| ++ (d->private_data->sg_buffer[4]<<8)| ++ (d->private_data->sg_buffer[5]))+ + +- ((((signed char)(d->private->sg_buffer[6])<<24) | +- (d->private->sg_buffer[7]<<16)| +- (d->private->sg_buffer[8]<<8)| +- (d->private->sg_buffer[9])))); ++ ((((signed char)(d->private_data->sg_buffer[6])<<24) | ++ (d->private_data->sg_buffer[7]<<16)| ++ (d->private_data->sg_buffer[8]<<8)| ++ (d->private_data->sg_buffer[9])))); + + + d->cd_extra = FixupTOC(d,tracks+1); +@@ -817,7 +817,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -836,7 +836,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -854,7 +854,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -872,7 +872,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -890,7 +890,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -908,7 +908,7 @@ + cmd[9] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -922,7 +922,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -936,7 +936,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -950,7 +950,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -964,7 +964,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -978,7 +978,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -992,7 +992,7 @@ + cmd[8] = sectors; + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1026,7 +1026,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1039,7 +1039,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1052,7 +1052,7 @@ + + if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense))) + return(ret); +- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW); ++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW); + return(0); + } + +@@ -1275,7 +1275,7 @@ + static int count_2352_bytes(cdrom_drive *d){ + long i; + for(i=2351;i>=0;i--) +- if(d->private->sg_buffer[i]!=(unsigned char)'\177') ++ if(d->private_data->sg_buffer[i]!=(unsigned char)'\177') + return(((i+3)>>2)<<2); + + return(0); +@@ -1284,7 +1284,7 @@ + static int verify_nonzero(cdrom_drive *d){ + long i,flag=0; + for(i=0;i<2352;i++) +- if(d->private->sg_buffer[i]!=0){ ++ if(d->private_data->sg_buffer[i]!=0){ + flag=1; + break; + } +@@ -1621,7 +1621,7 @@ + d->is_mmc=0; + if(mode_sense(d,22,0x2A)==0){ + +- b=d->private->sg_buffer; ++ b=d->private_data->sg_buffer; + b+=b[3]+4; + + if((b[0]&0x3F)==0x2A){ +@@ -1669,7 +1669,7 @@ + cderror(d,"008: Unable to identify CDROM model\n"); + return(NULL); + } +- return (d->private->sg_buffer); ++ return (d->private_data->sg_buffer); + } + + int scsi_init_drive(cdrom_drive *d){ +@@ -1725,8 +1725,8 @@ + check_cache(d); + + d->error_retry=1; +- d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128); +- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF; ++ d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128); ++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF; + d->report_all=1; + return(0); + } +Index: interface/cooked_interface.c +=================================================================== +--- interface/cooked_interface.c (Revision 15337) ++++ interface/cooked_interface.c (Revision 15340) +@@ -13,13 +13,13 @@ + static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){ + struct timespec tv1; + struct timespec tv2; +- int ret1=clock_gettime(d->private->clock,&tv1); ++ int ret1=clock_gettime(d->private_data->clock,&tv1); + int ret2=ioctl(fd, command,arg); +- int ret3=clock_gettime(d->private->clock,&tv2); ++ int ret3=clock_gettime(d->private_data->clock,&tv2); + if(ret1<0 || ret3<0){ +- d->private->last_milliseconds=-1; ++ d->private_data->last_milliseconds=-1; + }else{ +- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; ++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.; + } + return ret2; + } +Index: interface/scan_devices.c +=================================================================== +--- interface/scan_devices.c (Revision 15337) ++++ interface/scan_devices.c (Revision 15340) +@@ -264,11 +264,11 @@ + d->interface=COOKED_IOCTL; + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; +- d->private=calloc(1,sizeof(*d->private)); ++ d->private_data=calloc(1,sizeof(*d->private_data)); + { + /* goddamnit */ + struct timespec tv; +- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); ++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); + } + idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description); + return(d); +@@ -674,15 +674,15 @@ + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; + d->messagedest = messagedest; +- d->private=calloc(1,sizeof(*d->private)); ++ d->private_data=calloc(1,sizeof(*d->private_data)); + { + /* goddamnit */ + struct timespec tv; +- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); ++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC); + } + if(use_sgio){ + d->interface=SGIO_SCSI; +- d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE)); ++ d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE)); + g_fd=d->cdda_fd=dup(d->ioctl_fd); + }else{ + version=verify_SG_version(d,messagedest,messages); +@@ -696,8 +696,8 @@ + } + + /* malloc our big buffer for scsi commands */ +- d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE); +- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF; ++ d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE); ++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF; + } + + { +@@ -772,9 +772,9 @@ + if(i_fd!=-1)close(i_fd); + if(g_fd!=-1)close(g_fd); + if(d){ +- if(d->private){ +- if(d->private->sg_hd)free(d->private->sg_hd); +- free(d->private); ++ if(d->private_data){ ++ if(d->private_data->sg_hd)free(d->private_data->sg_hd); ++ free(d->private_data); + } + free(d); + } +@@ -821,7 +821,7 @@ + d->interface=TEST_INTERFACE; + d->bigendianp=-1; /* We don't know yet... */ + d->nsectors=-1; +- d->private=calloc(1,sizeof(*d->private)); ++ d->private_data=calloc(1,sizeof(*d->private_data)); + d->drive_model=copystring("File based test interface"); + idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model); + diff --git a/abs/core/cdrkit/PKGBUILD b/abs/core/cdrkit/PKGBUILD index 1f8bfa8..6de7150 100644 --- a/abs/core/cdrkit/PKGBUILD +++ b/abs/core/cdrkit/PKGBUILD @@ -3,7 +3,7 @@ pkgname=cdrkit pkgver=1.1.8 -pkgrel=1 +pkgrel=2 pkgdesc="Suite of programs for CD/DVD recording, ISO image creation, and audio CD extraction" arch=('i686' 'x86_64') url="http://cdrkit.org/" diff --git a/abs/core/cmake/PKGBUILD b/abs/core/cmake/PKGBUILD new file mode 100644 index 0000000..60e7f35 --- /dev/null +++ b/abs/core/cmake/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 27686 2009-02-24 20:21:28Z pierre $ +# Maintainer: Pierre Schmitz +# Contributor: damir +# Contributor: Konstantinos Pachnis + +pkgname=cmake +pkgver=2.6.3 +pkgrel=1 +pkgdesc="CMake is a cross-platform open-source make system" +arch=('i686' 'x86_64') +license=('custom') +url="http://www.cmake.org" +depends=('expat' 'xmlrpc-c') +makedepends=('qt') +optdepends=('qt: cmake-gui') +source=("http://www.cmake.org/files/v2.6/$pkgname-$pkgver.tar.gz") +md5sums=('5ba47a94ce276f326abca1fd72a7e7c6') + +build() { + cd $srcdir/$pkgname-$pkgver + ./bootstrap --prefix=/usr \ + --mandir=/share/man \ + --docdir=/share/doc/cmake \ + --system-libs \ + --qt-gui + make || return 1 + make DESTDIR=$pkgdir install + + install -D -m644 Docs/cmake-indent.vim $pkgdir/usr/share/vim/indent/cmake-indent.vim + install -D -m644 Docs/cmake-syntax.vim $pkgdir/usr/share/vim/syntax/cmake-syntax.vim + install -D -m644 Docs/cmake-mode.el $pkgdir/usr/share/emacs/site-lisp/cmake-mode.el + install -D -m644 Copyright.txt $pkgdir/usr/share/licenses/$pkgname/Copyright.txt +} diff --git a/abs/core/coreutils/PKGBUILD b/abs/core/coreutils/PKGBUILD index bb35755..b8418e9 100644 --- a/abs/core/coreutils/PKGBUILD +++ b/abs/core/coreutils/PKGBUILD @@ -1,62 +1,73 @@ -# $Id: PKGBUILD 2936 2008-06-16 06:21:37Z andyrtr $ -# Maintainer: judd +# $Id: PKGBUILD 29340 2009-03-08 00:18:55Z andyrtr $ +# Maintainer: Andreas Radke +# Contributor: judd + pkgname=coreutils -pkgver=6.12 -pkgrel=10 +pkgver=7.1 +pkgrel=5 pkgdesc="The basic file, shell and text manipulation utilities of the GNU operating system" arch=(i686 x86_64) license=('GPL3') url="http://www.gnu.org/software/coreutils" groups=('base') -depends=('glibc>=2.7-9' 'shadow>=4.0.18.2-2' 'pam>=1.0.1-1' 'acl>=2.2.47-1') +depends=('glibc>=2.9-4' 'shadow>=4.1.2.1-2' 'pam>=1.0.3' 'acl>=2.2.47-1' 'gmp>=4.2.4') provides=('mktemp') conflicts=('mktemp') replaces=('sh-utils' 'fileutils' 'textutils' 'mktemp') backup=('etc/pam.d/su') -options=('!emptydirs') +install=${pkgname}.install +options=('!emptydirs' '!makeflags') source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz coreutils-i18n.patch coreutils-uname.patch coreutils-pam.patch coreutils-6.10-configuration.patch + coreutils-7.1-sort-endoffields.patch + coreutils-7.1-cp-recursiveinfloop.patch su) -md5sums=('2ca9ac69823dbd567b905a9e9f53c4f6' - '64991a860ddb98a9b7a2a5a0221a399a' - '18d3ba178e2691242287b59bd81aedb9' - '8810a22cdc05d502a69b59511e9abf79' - 'e0f3edab474a4c96591c4f94a7962c9b' - 'fa85e5cce5d723275b14365ba71a8aad') build() { - cd $startdir/src/$pkgname-$pkgver - - # only needed if new autoconf 2.62 is used - autoreconf + cd ${srcdir}/${pkgname}-${pkgver} # added pam patch and i18n patch from fedora cvs - patch -Np1 -i ../coreutils-pam.patch || return 1 +# patch -Np1 -i ../coreutils-pam.patch || return 1 patch -Np1 -i ../coreutils-i18n.patch || return 1 patch -Np1 -i ../coreutils-6.10-configuration.patch || return 1 + # from gentoo portage patch -Np1 -i ../coreutils-uname.patch || return 1 - # make head and tail recognize the old syntax (eg, tail -10) - export DEFAULT_POSIX2_VERSION=199209 - autoconf - ./configure --prefix=/usr ac_cv_func_openat=no --enable-install-program=su --enable-pam + # bugfix patches from fedora + patch -Np1 -i ../coreutils-7.1-sort-endoffields.patch || return 1 + patch -Np1 -i ../coreutils-7.1-cp-recursiveinfloop.patch || return 1 + + # only needed if new autoconf 2.62 is used + sed -i 's/1.10a/1.10.2/' configure.ac || return 1 # aclocal fix + sed -i 's/dist-xz/dist-lzma/' configure.ac || return 1 + autoreconf -v + + ./configure --prefix=/usr \ + --enable-install-program=su \ + --enable-pam ac_cv_func_openat=no || return 1 make || return 1 - make DESTDIR=$startdir/pkg install - rm -f $startdir/pkg/usr/bin/hostname $startdir/pkg/usr/share/man/man1/hostname.1 || return 1 - rm -f $startdir/pkg/usr/bin/uptime $startdir/pkg/usr/share/man/man1/uptime.1 || return 1 - rm -f $startdir/pkg/usr/bin/groups $startdir/pkg/usr/share/man/man1/groups.1 || return 1 - rm -f $startdir/pkg/usr/bin/kill $startdir/pkg/usr/share/man/man1/kill.1|| return 1 - cd $startdir/pkg/usr/bin - mkdir -p $startdir/pkg/bin $startdir/pkg/sbin $startdir/pkg/usr/sbin + make DESTDIR=${pkgdir} install || return 1 + + rm -f ${pkgdir}/usr/bin/hostname ${pkgdir}/usr/share/man/man1/hostname.1 || return 1 + rm -f ${pkgdir}/usr/bin/uptime ${pkgdir}/usr/share/man/man1/uptime.1 || return 1 + rm -f ${pkgdir}/usr/bin/groups ${pkgdir}/usr/share/man/man1/groups.1 || return 1 + rm -f ${pkgdir}/usr/bin/kill ${pkgdir}/usr/share/man/man1/kill.1|| return 1 + cd ${pkgdir}/usr/bin + mkdir -p ${pkgdir}/bin ${pkgdir}/sbin ${pkgdir}/usr/sbin mv su date echo false pwd stty true uname cat tr cut readlink ../../bin mv dd cp df du ln ls mv rm dir sync vdir chgrp chmod chown ../../bin mv mkdir mknod rmdir shred touch mkfifo dircolors install sleep ../../bin mv chroot ../sbin ln -sf test [ - ln -sf /bin/sleep $startdir/pkg/usr/bin/sleep - install -D -m644 $startdir/src/su $startdir/pkg/etc/pam.d/su + ln -sf /bin/sleep ${pkgdir}/usr/bin/sleep + install -D -m644 $startdir/src/su ${pkgdir}/etc/pam.d/su + + ls -lha ${pkgdir}/bin/su + chmod -v 4555 ${pkgdir}/bin/su + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/coreutils/__changelog b/abs/core/coreutils/__changelog new file mode 100644 index 0000000..f24cf44 --- /dev/null +++ b/abs/core/coreutils/__changelog @@ -0,0 +1,2 @@ +removed PAM patch, as it causes su to go bonkers and log you out. + diff --git a/abs/core/coreutils/coreutils-6.10-configuration.patch b/abs/core/coreutils/coreutils-6.10-configuration.patch index f80ab84..b9bddda 100644 --- a/abs/core/coreutils/coreutils-6.10-configuration.patch +++ b/abs/core/coreutils/coreutils-6.10-configuration.patch @@ -1,32 +1,9 @@ -diff -urN coreutils-6.12-orig/tests/misc/cut coreutils-6.12/tests/misc/cut ---- coreutils-6.12-orig/tests/misc/cut 2008-05-17 08:41:11.000000000 +0200 -+++ coreutils-6.12/tests/misc/cut 2008-06-02 11:13:08.000000000 +0200 -@@ -26,7 +26,7 @@ - my $prog = 'cut'; - my $try = "Try \`$prog --help' for more information.\n"; - my $from_1 = "$prog: fields and positions are numbered from 1\n$try"; --my $inval = "$prog: invalid byte or field list\n$try"; -+my $inval = "$prog: invalid byte, character or field list\n$try"; - my $no_endpoint = "$prog: invalid range with no endpoint: -\n$try"; - - my @Tests = -@@ -140,8 +140,8 @@ - ['od-overlap5', '-b1-3,1-4', '--output-d=:', {IN=>"abcde\n"}, {OUT=>"abcd\n"}], - - # None of the following invalid ranges provoked an error up to coreutils-6.9. -- ['inval1', qw(-f 2-0), {IN=>''}, {OUT=>''}, {EXIT=>1}, -- {ERR=>"$prog: invalid decreasing range\n$try"}], -+ ['inval1', qw(-f 2-0), {IN=>''}, {OUT=>''}, {EXIT=>1}, -+ {ERR=>"$prog: invalid byte, character or field list\n$try"}], - ['inval2', qw(-f -), {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], - ['inval3', '-f', '4,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], - ['inval4', '-f', '1-2,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], diff -urN coreutils-6.11-orig/tests/mkdir/selinux coreutils-6.11/tests/mkdir/selinux --- coreutils-6.11-orig/tests/mkdir/selinux 2008-04-19 23:34:23.000000000 +0200 +++ coreutils-6.11/tests/mkdir/selinux 2008-04-22 13:23:50.000000000 +0200 @@ -38,6 +28,7 @@ # successfully, in spite of the invalid context string. - + . $srcdir/test-lib.sh +require_selinux_ @@ -46,17 +23,66 @@ diff -urNp coreutils-6.11-orig/tests/test-lib.sh coreutils-6.11/tests/test-lib.s skip_test_ "this system (or maybe just" \ "the current file system) lacks SELinux support" ;; -diff -urp coreutils-6.11-orig/gnulib-tests/test-getaddrinfo.c coreutils-6.11/gnulib-tests/test-getaddrinfo.c ---- coreutils-6.11-orig/gnulib-tests/test-getaddrinfo.c -+++ coreutils-6.11/gnulib-tests/test-getaddrinfo.c -@@ -70,6 +70,10 @@ int simple (char *host, char *service) - if (res == EAI_NODATA) - return 0; - -+ /* Do not fail this test for temporary name resolution errors. */ -+ if (res == EAI_AGAIN) -+ return 0; +diff -urNp coreutils-7.1-orig/gnulib-tests/test-getaddrinfo.c coreutils-7.1/gnulib-tests/test-getaddrinfo.c +--- coreutils-7.1-orig/gnulib-tests/test-getaddrinfo.c 2009-01-27 21:33:19.000000000 +0100 ++++ coreutils-7.1/gnulib-tests/test-getaddrinfo.c 2009-02-25 13:52:59.000000000 +0100 +@@ -36,6 +36,8 @@ + # define dbgprintf if (0) printf + #endif + ++static int skip = 0; ++ + /* BeOS does not have AF_UNSPEC. */ + #ifndef AF_UNSPEC + # define AF_UNSPEC 0 +@@ -52,6 +54,9 @@ int simple (char *host, char *service) + struct addrinfo *ai0, *ai; + int res; + ++ if (skip) ++ return 0; + - return 1; - } + dbgprintf ("Finding %s service %s...\n", host, service); + /* This initializes "hints" but does not use it. Is there a reason +@@ -72,8 +77,12 @@ int simple (char *host, char *service) + in-law's farm. */ + if (res == EAI_AGAIN) + { +- fprintf (stderr, "skipping getaddrinfo test: no network?\n"); +- return 77; ++ if (!skip) ++ { ++ skip++; ++ fprintf (stderr, "skipping getaddrinfo test: no network?\n"); ++ return 77; ++ } + } + /* IRIX reports EAI_NONAME for "https". Don't fail the test + merely because of this. */ +diff -urNp coreutils-7.1-orig/src/ls.c coreutils-7.1/src/ls.c +--- coreutils-7.1-orig/src/ls.c 2009-02-25 13:23:59.000000000 +0100 ++++ coreutils-7.1/src/ls.c 2009-02-25 13:25:20.000000000 +0100 +@@ -38,10 +38,6 @@ + #include + #include + +-#ifdef HAVE_CAP +-# include +-#endif +- + #if HAVE_TERMIOS_H + # include + #endif +@@ -84,6 +80,10 @@ + #include "system.h" + #include + ++#ifdef HAVE_CAP ++# include ++#endif ++ + #include "acl.h" + #include "argmatch.h" + #include "dev-ino.h" + diff --git a/abs/core/coreutils/coreutils-7.1-cp-recursiveinfloop.patch b/abs/core/coreutils/coreutils-7.1-cp-recursiveinfloop.patch new file mode 100644 index 0000000..963af0b --- /dev/null +++ b/abs/core/coreutils/coreutils-7.1-cp-recursiveinfloop.patch @@ -0,0 +1,154 @@ +diff -urNp coreutils-7.1-orig/src/copy.c coreutils-7.1/src/copy.c +--- coreutils-7.1-orig/src/copy.c 2009-02-27 12:07:29.000000000 +0100 ++++ coreutils-7.1/src/copy.c 2009-02-27 12:14:29.000000000 +0100 +@@ -104,6 +104,7 @@ static bool copy_internal (char const *s + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, ++ bool *first_dir_created_per_command_line_arg, + bool *copy_into_self, + bool *rename_succeeded); + static bool owner_failure_ok (struct cp_options const *x); +@@ -201,13 +202,16 @@ copy_attr_by_name (char const *src_path, + DST_NAME_IN is a directory that was created previously in the + recursion. SRC_SB and ANCESTORS describe SRC_NAME_IN. + Set *COPY_INTO_SELF if SRC_NAME_IN is a parent of ++ FIRST_DIR_CREATED_PER_COMMAND_LINE_ARG FIXME + (or the same as) DST_NAME_IN; otherwise, clear it. + Return true if successful. */ + + static bool + copy_dir (char const *src_name_in, char const *dst_name_in, bool new_dst, + const struct stat *src_sb, struct dir_list *ancestors, +- const struct cp_options *x, bool *copy_into_self) ++ const struct cp_options *x, ++ bool *first_dir_created_per_command_line_arg, ++ bool *copy_into_self) + { + char *name_space; + char *namep; +@@ -237,12 +241,20 @@ copy_dir (char const *src_name_in, char + + ok &= copy_internal (src_name, dst_name, new_dst, src_sb->st_dev, + ancestors, &non_command_line_options, false, ++ first_dir_created_per_command_line_arg, + &local_copy_into_self, NULL); + *copy_into_self |= local_copy_into_self; + + free (dst_name); + free (src_name); + ++ /* If we're copying into self, there's no point in continuing, ++ and in fact, that would even infloop, now that we record only ++ the first created directory per command line argument. */ ++ if (local_copy_into_self) ++ break; ++ ++ + namep += strlen (namep) + 1; + } + free (name_space); +@@ -1125,6 +1137,7 @@ restore_default_fscreatecon_or_die (void + not known. ANCESTORS points to a linked, null terminated list of + devices and inodes of parent directories of SRC_NAME. COMMAND_LINE_ARG + is true iff SRC_NAME was specified on the command line. ++ FIRST_DIR_CREATED_PER_COMMAND_LINE_ARG is both input and output. + Set *COPY_INTO_SELF if SRC_NAME is a parent of (or the + same as) DST_NAME; otherwise, clear it. + Return true if successful. */ +@@ -1135,6 +1148,7 @@ copy_internal (char const *src_name, cha + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, ++ bool *first_dir_created_per_command_line_arg, + bool *copy_into_self, + bool *rename_succeeded) + { +@@ -1815,11 +1829,15 @@ copy_internal (char const *src_name, cha + } + } + +- /* Insert the created directory's inode and device +- numbers into the search structure, so that we can +- avoid copying it again. */ +- if (!x->hard_link) +- remember_copied (dst_name, dst_sb.st_ino, dst_sb.st_dev); ++ /* Record the created directory's inode and device numbers into ++ the search structure, so that we can avoid copying it again. ++ Do this only for the first directory that is created for each ++ source command line argument. */ ++ if (!*first_dir_created_per_command_line_arg) ++ { ++ remember_copied (dst_name, dst_sb.st_ino, dst_sb.st_dev); ++ *first_dir_created_per_command_line_arg = true; ++ } + + if (x->verbose) + emit_verbose (src_name, dst_name, NULL); +@@ -1840,6 +1858,7 @@ copy_internal (char const *src_name, cha + in a source directory would cause the containing destination + directory not to have owner/perms set properly. */ + delayed_ok = copy_dir (src_name, dst_name, new_dst, &src_sb, dir, x, ++ first_dir_created_per_command_line_arg, + copy_into_self); + } + } +@@ -2187,8 +2206,11 @@ copy (char const *src_name, char const * + top_level_src_name = src_name; + top_level_dst_name = dst_name; + ++ bool first_dir_created_per_command_line_arg = false; + return copy_internal (src_name, dst_name, nonexistent_dst, 0, NULL, +- options, true, copy_into_self, rename_succeeded); ++ options, true, ++ &first_dir_created_per_command_line_arg, ++ copy_into_self, rename_succeeded); + } + + /* Set *X to the default options for a value of type struct cp_options. */ +diff -urNp coreutils-7.1-orig/tests/cp/into-self coreutils-7.1/tests/cp/into-self +--- coreutils-7.1-orig/tests/cp/into-self 2008-09-18 09:06:57.000000000 +0200 ++++ coreutils-7.1/tests/cp/into-self 2009-02-27 12:16:21.000000000 +0100 +@@ -1,7 +1,7 @@ + #!/bin/sh + # Confirm that copying a directory into itself gets a proper diagnostic. + +-# Copyright (C) 2001, 2002, 2004, 2006-2008 Free Software Foundation, Inc. ++# Copyright (C) 2001, 2002, 2004, 2006-2009 Free Software Foundation, Inc. + + # 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 +@@ -28,15 +28,32 @@ fi + + . $srcdir/test-lib.sh + +-mkdir dir || framework_failure ++mkdir a dir || framework_failure + + fail=0 + + # This command should exit nonzero. + cp -R dir dir 2> out && fail=1 ++echo 1 >> out ++ ++# This should, too. However, with coreutils-7.1 it would infloop. ++cp -rl dir dir 2>> out && fail=1 ++echo 2 >> out ++ ++cp -rl a dir dir 2>> out && fail=1 ++echo 3 >> out ++cp -rl a dir dir 2>> out && fail=1 ++echo 4 >> out + + cat > exp <<\EOF + cp: cannot copy a directory, `dir', into itself, `dir/dir' ++1 ++cp: cannot copy a directory, `dir', into itself, `dir/dir' ++2 ++cp: cannot copy a directory, `dir', into itself, `dir/dir' ++3 ++cp: cannot copy a directory, `dir', into itself, `dir/dir' ++4 + EOF + #' + diff --git a/abs/core/coreutils/coreutils-7.1-sort-endoffields.patch b/abs/core/coreutils/coreutils-7.1-sort-endoffields.patch new file mode 100644 index 0000000..45d1e28 --- /dev/null +++ b/abs/core/coreutils/coreutils-7.1-sort-endoffields.patch @@ -0,0 +1,102 @@ +diff -urNp coreutils-7.1-orig/src/sort.c coreutils-7.1/src/sort.c +--- coreutils-7.1-orig/src/sort.c 2009-02-25 16:15:52.000000000 +0100 ++++ coreutils-7.1/src/sort.c 2009-02-25 16:20:35.000000000 +0100 +@@ -1598,6 +1598,9 @@ limfield_uni (const struct line *line, c + size_t eword = key->eword, echar = key->echar; + size_t remaining_bytes; + ++ if (echar == 0) ++ eword++; /* skip all of end field. */ ++ + /* Move PTR past EWORD fields or to one past the last byte on LINE, + whichever comes first. If there are more than EWORD fields, leave + PTR pointing at the beginning of the field having zero-based index, +@@ -1673,19 +1676,22 @@ limfield_uni (const struct line *line, c + } + #endif + +- /* If we're ignoring leading blanks when computing the End +- of the field, don't start counting bytes until after skipping +- past any leading blanks. */ +- if (key->skipeblanks) +- while (ptr < lim && blanks[to_uchar (*ptr)]) +- ++ptr; + +- /* Advance PTR by ECHAR (if possible), but no further than LIM. */ +- remaining_bytes = lim - ptr; +- if (echar < remaining_bytes) +- ptr += echar; +- else +- ptr = lim; ++ if (echar != 0) /* We need to skip over a portion of the end field. */ ++ { ++ if (key->skipeblanks) /* blanks not counted in echar. */ ++ { ++ while (ptr < lim && blanks[to_uchar (*ptr)]) ++ ++ptr; ++ } ++ ++ /* Advance PTR by ECHAR (if possible), but no further than LIM. */ ++ remaining_bytes = lim - ptr; ++ if (echar < remaining_bytes) ++ ptr += echar; ++ else ++ ptr = lim; ++ } + + return ptr; + } +@@ -3736,12 +3742,9 @@ main (int argc, char **argv) + badfieldspec (optarg, N_("field number is zero")); + } + if (*s == '.') +- s = parse_field_count (s + 1, &key->echar, +- N_("invalid number after `.'")); +- else + { +- /* `-k 2,3' is equivalent to `+1 -3'. */ +- key->eword++; ++ s = parse_field_count (s + 1, &key->echar, ++ N_("invalid number after `.'")); + } + s = set_ordering (s, key, bl_end); + } +diff -urNp coreutils-7.1-orig/tests/misc/sort coreutils-7.1/tests/misc/sort +--- coreutils-7.1-orig/tests/misc/sort 2009-01-27 22:11:25.000000000 +0100 ++++ coreutils-7.1/tests/misc/sort 2009-02-25 16:21:48.000000000 +0100 +@@ -24,6 +24,10 @@ my $prog = 'sort'; + # Turn off localization of executable's output. + @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; + ++my $mb_locale = $ENV{LOCALE_FR_UTF8}; ++! defined $mb_locale || $mb_locale eq 'none' ++ and $mb_locale = 'C'; ++ + # Since each test is run with a file name and with redirected stdin, + # the name in the diagnostic is either the file name or "-". + # Normalize each diagnostic to use '-'. +@@ -110,6 +114,8 @@ my @Tests = + ["07b", '-k 2,3', {IN=>"a a b\nz a a\n"}, {OUT=>"z a a\na a b\n"}], + ["07c", '-k 2,3', {IN=>"y k b\nz k a\n"}, {OUT=>"z k a\ny k b\n"}], + ["07d", '+1 -3', {IN=>"y k b\nz k a\n"}, {OUT=>"z k a\ny k b\n"}], ++["07e", '-k 2,3.0', {IN=>"a a b\nz a a\n"}, {OUT=>"z a a\na a b\n"}], ++ + # + # report an error for `.' without following char spec + ["08a", '-k 2.,3', {EXIT=>2}, +@@ -210,6 +216,15 @@ my @Tests = + # key start and key end. + ["18e", '-nb -k1.1,1.2', {IN=>" 901\n100\n"}, {OUT=>"100\n 901\n"}], + ++# When ignoring leading blanks for end position, ensure blanks from ++# next field are not included in the sort. I.E. order should not change here. ++["18f", '-k1,1b', {IN=>"a y\na z\n"}, {OUT=>"a y\na z\n"}], ++ ++# When ignoring leading blanks for start position, ensure blanks from ++# next field are not included in the sort. I.E. order should not change here. ++# This was noticed as an issue on fedora 8 (only in multibyte locales). ++["18g", '-k1b,1', {IN=>"a y\na z\n"}, {OUT=>"a y\na z\n"}, ++ {ENV => "LC_ALL=$mb_locale"}], + # This looks odd, but works properly -- 2nd keyspec is never + # used because all lines are different. + ["19a", '+0 +1nr', {IN=>"b 2\nb 1\nb 3\n"}, {OUT=>"b 1\nb 2\nb 3\n"}], diff --git a/abs/core/coreutils/coreutils-i18n.patch b/abs/core/coreutils/coreutils-i18n.patch index 1230c23..626bac0 100644 --- a/abs/core/coreutils/coreutils-i18n.patch +++ b/abs/core/coreutils/coreutils-i18n.patch @@ -1,3 +1,26 @@ +diff -urN coreutils-6.12-orig/tests/misc/cut coreutils-6.12/tests/misc/cut +--- coreutils-6.12-orig/tests/misc/cut 2008-05-17 08:41:11.000000000 +0200 ++++ coreutils-6.12/tests/misc/cut 2008-06-02 11:13:08.000000000 +0200 +@@ -26,7 +26,7 @@ + my $prog = 'cut'; + my $try = "Try \`$prog --help' for more information.\n"; + my $from_1 = "$prog: fields and positions are numbered from 1\n$try"; +-my $inval = "$prog: invalid byte or field list\n$try"; ++my $inval = "$prog: invalid byte, character or field list\n$try"; + my $no_endpoint = "$prog: invalid range with no endpoint: -\n$try"; + + my @Tests = +@@ -140,8 +140,8 @@ + ['od-overlap5', '-b1-3,1-4', '--output-d=:', {IN=>"abcde\n"}, {OUT=>"abcd\n"}], + + # None of the following invalid ranges provoked an error up to coreutils-6.9. +- ['inval1', qw(-f 2-0), {IN=>''}, {OUT=>''}, {EXIT=>1}, +- {ERR=>"$prog: invalid decreasing range\n$try"}], ++ ['inval1', qw(-f 2-0), {IN=>''}, {OUT=>''}, {EXIT=>1}, ++ {ERR=>"$prog: invalid byte, character or field list\n$try"}], + ['inval2', qw(-f -), {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], + ['inval3', '-f', '4,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], + ['inval4', '-f', '1-2,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], --- /dev/null 2007-03-01 09:16:39.219409909 +0000 +++ coreutils-6.8+/tests/misc/sort-mb-tests 2007-03-01 15:08:24.000000000 +0000 @@ -0,0 +1,58 @@ @@ -90,14 +113,14 @@ diff -urN coreutils-6.12-orig/tests/Makefile.am coreutils-6.12/tests/Makefile.am --- coreutils-6.12-orig/tests/Makefile.am 2008-05-27 13:47:53.000000000 +0200 +++ coreutils-6.12/tests/Makefile.am 2008-06-02 10:06:03.000000000 +0200 -@@ -191,6 +191,7 @@ - misc/shuf \ +@@ -192,6 +192,7 @@ misc/sort \ misc/sort-compress \ + misc/sort-files0-from \ + misc/sort-mb-tests \ misc/sort-merge \ misc/sort-rand \ - misc/split-a \ + misc/sort-version \ @@ -391,6 +392,10 @@ $(root_tests) @@ -331,7 +354,7 @@ diff -urN coreutils-6.12-orig/tests/Makefile.am coreutils-6.12/tests/Makefile.am error (EXIT_FAILURE, errno, "-"); --- coreutils-6.8+/src/join.c.i18n 2007-01-14 15:41:28.000000000 +0000 +++ coreutils-6.8+/src/join.c 2007-03-01 15:08:24.000000000 +0000 -@@ -23,17 +23,31 @@ +@@ -23,16 +23,30 @@ #include #include @@ -347,7 +370,6 @@ diff -urN coreutils-6.12-orig/tests/Makefile.am coreutils-6.12/tests/Makefile.am + #include "system.h" #include "error.h" - #include "hard-locale.h" #include "linebuffer.h" -#include "memcasecmp.h" #include "quote.h" @@ -379,17 +401,8 @@ diff -urN coreutils-6.12-orig/tests/Makefile.am coreutils-6.12/tests/Makefile.am +/* The number of bytes used for tab. */ +static size_t tablen = 0; - static struct option const longopts[] = - { -@@ -190,6 +206,8 @@ - - /* Fill in the `fields' structure in LINE. */ - -+/* Fill in the `fields' structure in LINE. */ -+ - static void - xfields (struct line *line) - { + /* If nonzero, check that the input is correctly ordered. */ + static enum @@ -199,10 +217,11 @@ if (ptr == lim) return; @@ -549,22 +562,10 @@ diff -urN coreutils-6.12-orig/tests/Makefile.am coreutils-6.12/tests/Makefile.am + extract_field (line, ptr, lim - ptr); +} +#endif -+ - /* Read a line from FP into LINE and split it into fields. - Return true if successful. */ - -@@ -249,6 +410,11 @@ - line->nfields_allocated = 0; - line->nfields = 0; - line->fields = NULL; -+#if HAVE_MBRTOWC -+ if (MB_CUR_MAX > 1) -+ xfields_multibyte (line); -+ else -+#endif - xfields (line); - return true; - } ++ + static void + freeline (struct line *line) + { @@ -377,11 +601,18 @@ /* Print the join of LINE1 and LINE2. */ @@ -703,7 +704,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c - size_t len2; /* Length of fields to compare. */ + char *beg[2]; + char *copy[2]; -+ size_t len[2]; /* Length of fields to compare. */ ++ size_t len[2]; /* Length of fields to compare. */ int diff; + int i, j; @@ -830,7 +831,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + return len[0] - len[1]; } - /* Check that successive input lines PREV and CURRENT from input file + /* Check that successive input lines PREV and CURRENT from input file --- coreutils-6.8+/src/uniq.c.i18n 2007-01-14 15:41:28.000000000 +0000 +++ coreutils-6.8+/src/uniq.c 2007-03-01 15:08:24.000000000 +0000 @@ -23,6 +23,16 @@ @@ -886,13 +887,13 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c return a pointer to the beginning of the line's field to be compared. */ static char * --find_field (const struct linebuffer *line) +-find_field (struct linebuffer const *line) +find_field_uni (struct linebuffer *line) { size_t count; - char *lp = line->buffer; + char const *lp = line->buffer; @@ -219,6 +245,83 @@ - return lp + i; + return line->buffer + i; } +#if HAVE_MBRTOWC @@ -1235,9 +1236,9 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c #define TAB_WIDTH 8 /* The official name of this program (e.g., no `g' prefix). */ -@@ -35,23 +57,44 @@ +@@ -35,20 +57,41 @@ - #define AUTHORS "David MacKenzie" + #define AUTHORS proper_name ("David MacKenzie") +#define FATAL_ERROR(Message) \ + do \ @@ -1259,9 +1260,6 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + character_mode, +}; + - /* The name this program was run with. */ - char *program_name; - +/* The argument shows current mode. (Default: column_mode) */ +static enum operating_mode operating_mode; + @@ -1756,7 +1754,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c if (hard_LC_TIME) { @@ -1031,6 +1100,64 @@ - #endif + xstrtol_fatal (e, oi, c, long_options, s); } +#if HAVE_MBRTOWC @@ -1819,7 +1817,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + /* Specify the amount of main memory to use when sorting. */ static void - specify_sort_size (char const *s) + specify_sort_size (int oi, char c, char const *s) @@ -1241,7 +1368,7 @@ by KEY in LINE. */ @@ -1940,7 +1938,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c if (newlim) lim = newlim; } -@@ -1384,6 +1570,107 @@ +@@ -1384,6 +1570,113 @@ return ptr; } @@ -1954,6 +1952,9 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + size_t mblength; + mbstate_t state; + ++ if (echar == 0) ++ eword++; /* skip all of end field. */ ++ + memset (&state, '\0', sizeof(mbstate_t)); + + if (tab_length) @@ -2022,24 +2023,27 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + } +# endif + -+ /* If we're skipping leading blanks, don't start counting characters -+ * until after skipping past any leading blanks. */ -+ if (key->skipsblanks) -+ while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength)) -+ ptr += mblength; ++ if (echar != 0) ++ { ++ /* If we're skipping leading blanks, don't start counting characters ++ * until after skipping past any leading blanks. */ ++ if (key->skipsblanks) ++ while (ptr < lim && ismbblank (ptr, lim - ptr, &mblength)) ++ ptr += mblength; + -+ memset (&state, '\0', sizeof(mbstate_t)); ++ memset (&state, '\0', sizeof(mbstate_t)); + -+ /* Advance PTR by ECHAR (if possible), but no further than LIM. */ -+ for (i = 0; i < echar; i++) -+ { -+ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state); ++ /* Advance PTR by ECHAR (if possible), but no further than LIM. */ ++ for (i = 0; i < echar; i++) ++ { ++ GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state); + -+ if (ptr + mblength > lim) -+ break; -+ else -+ ptr += mblength; -+ } ++ if (ptr + mblength > lim) ++ break; ++ else ++ ptr += mblength; ++ } ++ } + + return ptr; +} @@ -2760,7 +2764,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + #include "system.h" #include "error.h" - #include "hard-locale.h" + #include "mbswidth.h" @@ -324,6 +350,18 @@ #include "strftime.h" #include "xstrtol.h" @@ -2865,11 +2869,11 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c line of 1st page printed). */ @@ -696,6 +756,7 @@ -a|COLUMN|-m is a `space' and with the -J option a `tab'. */ - static char *col_sep_string = ""; + static char *col_sep_string = (char *) ""; static int col_sep_length = 0; +static int col_sep_width = 0; - static char *column_separator = " "; - static char *line_separator = "\t"; + static char *column_separator = (char *) " "; + static char *line_separator = (char *) "\t"; @@ -852,6 +913,13 @@ col_sep_length = (int) strlen (optarg_S); @@ -2951,7 +2955,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c @@ -1031,7 +1122,7 @@ old_s = false; /* Reset an additional input of -s, -S dominates -s */ - col_sep_string = ""; + col_sep_string = bad_cast (""); - col_sep_length = 0; + col_sep_length = col_sep_width = 0; use_col_separator = true; @@ -3921,7 +3925,7 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c + size_t delimlen = 0; initialize_main (&argc, &argv); - program_name = argv[0]; + set_program_name (argv[0]); @@ -770,7 +1090,6 @@ switch (optc) { @@ -4043,3 +4047,19 @@ diff -urNp coreutils-6.11-orig/src/join.c coreutils-6.11/src/join.c } if (optind == argc) +diff -urNp coreutils-6.12/src/join.c coreutils-6.12-orig/src/join.c +--- coreutils-6.12/src/join.c 2008-07-16 14:08:01.000000000 +0200 ++++ coreutils-6.12-orig/src/join.c 2008-07-16 14:07:02.000000000 +0200 +@@ -634,6 +634,11 @@ get_line (FILE *fp, struct line *line, i + return false; + } + ++#if HAVE_MBRTOWC ++ if (MB_CUR_MAX > 1) ++ xfields_multibyte (line); ++ else ++#endif + xfields (line); + + if (prevline[which - 1]) + diff --git a/abs/core/coreutils/coreutils-pam.patch b/abs/core/coreutils/coreutils-pam.patch index 8593ecc..7171522 100644 --- a/abs/core/coreutils/coreutils-pam.patch +++ b/abs/core/coreutils/coreutils-pam.patch @@ -49,11 +49,11 @@ #define DEFAULT_USER "root" +#ifndef USE_PAM - char *crypt (); + char *crypt (char const *key, char const *salt); +#endif - char *getusershell (); - void endusershell (); - void setusershell (); + char *getusershell (void); + void endusershell (void); + void setusershell (void); extern char **environ; @@ -66,8 +66,8 @@ ATTRIBUTE_NORETURN; +#endif - /* The name this program was run with. */ - char *program_name; + /* If true, pass the `-f' option to the subshell. */ + static bool fast_startup; @@ -225,7 +251,26 @@ } #endif @@ -361,6 +361,15 @@ The program accepts the following options. Also see @ref{Common options}. +@@ -12815,6 +12815,8 @@ + @env{PATH} to a compiled-in default value. Change to @var{user}'s home + directory. Prepend @samp{-} to the shell's name, intended to make it + read its login startup file(s). ++Additionaly @env{DISPLAY} and @env{XAUTHORITY} environment variables ++are preserved as well for PAM functionality. + + @item -m + @itemx -p @@ -13477,33 +13480,6 @@ the exit status of the subshell otherwise @end display @@ -392,8 +401,8 @@ -might find this idea strange at first. - - - @node Process control - @chapter Process control + @node timeout invocation + @section @command{timeout}: Run a command with a time limit --- coreutils-6.7/configure.ac.pam 2006-12-07 21:30:24.000000000 +0000 +++ coreutils-6.7/configure.ac 2007-01-09 17:18:04.000000000 +0000 @@ -411,3 +420,4 @@ AC_FUNC_FORK optional_bin_progs= + diff --git a/abs/core/coreutils/coreutils.install b/abs/core/coreutils/coreutils.install new file mode 100644 index 0000000..37ebe29 --- /dev/null +++ b/abs/core/coreutils/coreutils.install @@ -0,0 +1,21 @@ +infodir=/usr/share/info +filelist=(coreutils.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + diff --git a/abs/core/dbus-core/PKGBUILD b/abs/core/dbus-core/PKGBUILD new file mode 100644 index 0000000..7a1bc6e --- /dev/null +++ b/abs/core/dbus-core/PKGBUILD @@ -0,0 +1,53 @@ +# $Id: PKGBUILD 19084 2008-11-14 21:36:59Z jgc $ +# Maintainer: Jan de Groot +# Contributor: Link Dupont +# +pkgname=dbus-core +pkgver=1.2.4 +pkgrel=1 +pkgdesc="Freedesktop.org message bus system" +url="http://www.freedesktop.org/Software/dbus" +arch=(i686 x86_64) +license=('GPL' 'custom') +depends=('expat>=2.0') +conflicts=('dbus<1.2.3-2') +options=(!libtool) +install=dbus.install +source=(http://dbus.freedesktop.org/releases/dbus/dbus-${pkgver}.tar.gz + dbus) +md5sums=('2e643910a09f44b000a0d76038637999' + 'f3fd196cc278bd7b45a4ca01fb8f7894') + +build() { + cd "${srcdir}/dbus-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \ + --with-system-pid-file=/var/run/dbus.pid \ + --enable-inotify --disable-dnotify \ + --disable-verbose-mode --disable-static \ + --disable-tests --disable-asserts --without-x || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -f ${pkgdir}/usr/bin/dbus-launch + rm -f ${pkgdir}/usr/share/man/man1/dbus-launch.1 + + chown 81:81 "${pkgdir}/var/run/dbus" || return 1 + + install -m755 -d "${pkgdir}/etc/rc.d" || return 1 + install -m755 "${srcdir}/dbus" "${pkgdir}/etc/rc.d/" || return 1 + + #Fix configuration file + sed -i -e 's|81|dbus|' "${pkgdir}/etc/dbus-1/system.conf" || return 1 + + #install .keep files so pacman doesn't delete empty dirs + touch "${pkgdir}/usr/share/dbus-1/services/.keep" || return 1 + touch "${pkgdir}/usr/share/dbus-1/system-services/.keep" || return 1 + touch "${pkgdir}/etc/dbus-1/session.d/.keep" || return 1 + touch "${pkgdir}/etc/dbus-1/system.d/.keep" || return 1 + + rmdir "${pkgdir}/usr/lib/dbus-1.0/dbus-1" || return 1 + + install -d -m755 "${pkgdir}/usr/share/licenses/dbus-core" + install -m644 COPYING "${pkgdir}/usr/share/licenses/dbus-core/" || return 1 +} diff --git a/abs/core/dbus-core/dbus b/abs/core/dbus-core/dbus new file mode 100644 index 0000000..cd26db8 --- /dev/null +++ b/abs/core/dbus-core/dbus @@ -0,0 +1,57 @@ +#!/bin/bash + +# general config +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting D-BUS system messagebus" + if [ ! -x /var/run/dbus ] ; then + install -m755 -g 81 -o 81 -d /var/run/dbus + fi + if [ -x /usr/bin/dbus-uuidgen ] ; then + /usr/bin/dbus-uuidgen --ensure + fi + + /usr/bin/dbus-daemon --system + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon dbus + stat_done + fi + ;; + stop) + stat_busy "Stopping D-BUS system messagebus" + [ -f /var/run/dbus.pid ] && kill `cat /var/run/dbus.pid` + if [ $? -gt 0 ]; then + stat_fail + else + rm -f /var/run/dbus.pid + rm_daemon dbus + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + reload) + stat_busy "Reloading D-BUS configuration" + [ -f /var/run/dbus.pid ] && /usr/bin/dbus-send \ + --system --type=method_call \ + --dest=org.freedesktop.DBus \ + / org.freedesktop.DBus.ReloadConfig + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + *) + echo "usage: $0 {start|stop|restart|reload}" + ;; +esac +exit 0 diff --git a/abs/core/dbus-core/dbus.install b/abs/core/dbus-core/dbus.install new file mode 100644 index 0000000..85dd9a7 --- /dev/null +++ b/abs/core/dbus-core/dbus.install @@ -0,0 +1,21 @@ +post_install() { + getent group dbus >/dev/null || usr/sbin/groupadd -g 81 dbus + getent passwd dbus >/dev/null || usr/sbin/useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus + usr/bin/passwd -l dbus &>/dev/null + dbus-uuidgen --ensure +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 + + #Make sure new rc script can shutdown running dbus + [ -f var/run/dbus/pid ] && mv var/run/dbus/pid var/run/dbus.pid +} + +# arg 1: the old package version +pre_remove() { + usr/sbin/userdel dbus &>/dev/null + usr/sbin/groupdel dbus &>/dev/null +} diff --git a/abs/core/dbus-glib/PKGBUILD b/abs/core/dbus-glib/PKGBUILD index 4eb8838..50fc839 100644 --- a/abs/core/dbus-glib/PKGBUILD +++ b/abs/core/dbus-glib/PKGBUILD @@ -1,22 +1,21 @@ -# $Id: PKGBUILD 3474 2008-06-22 20:19:25Z jgc $ +# $Id: PKGBUILD 29414 2009-03-08 16:54:54Z jgc $ # Maintainer: Jan de Groot pkgname=dbus-glib -pkgver=0.76 +pkgver=0.80 pkgrel=1 pkgdesc="GLib bindings for DBUS" arch=(i686 x86_64) license=('GPL') url="http://www.freedesktop.org/wiki/Software/DBusBindings" -depends=('dbus>=1.2.1' 'glib2>=2.16.3') +depends=('dbus-core>=1.2.4' 'glib2>=2.18.4') makedepends=('pkgconfig') -options=('!libtool') +options=('!libtool' '!emptydirs') source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('d3b716a7e798faa1c6a867675f00306a') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-static=no || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-static=no --enable-bash-completion=no || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/dbus-python/PKGBUILD b/abs/core/dbus-python/PKGBUILD new file mode 100644 index 0000000..ae77c04 --- /dev/null +++ b/abs/core/dbus-python/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 17272 2008-10-27 16:25:58Z douglas $ +# Maintainer: Jan de Groot + +pkgname=dbus-python +pkgver=0.83.0 +pkgrel=2 +pkgdesc="Python bindings for DBUS" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +url="http://www.freedesktop.org/wiki/Software/DBusBindings" +depends=('dbus-glib>=0.76' 'python>=2.6') +makedepends=('pkgconfig') +options=('!libtool') +source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} +md5sums=('562c78876219bf458d79a041af18293d') diff --git a/abs/core/dbus/30-dbus b/abs/core/dbus/30-dbus new file mode 100644 index 0000000..603e92d --- /dev/null +++ b/abs/core/dbus/30-dbus @@ -0,0 +1,9 @@ +#!/bin/bash + +# launches a session dbus instance + +dbuslaunch="`which dbus-launch 2>/dev/null`" +if [ -n "$dbuslaunch" ] && [ -x "$dbuslaunch" ] && [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then + eval `$dbuslaunch --sh-syntax --exit-with-session` +fi + diff --git a/abs/core/dbus/PKGBUILD b/abs/core/dbus/PKGBUILD index dc747bc..3276f82 100644 --- a/abs/core/dbus/PKGBUILD +++ b/abs/core/dbus/PKGBUILD @@ -1,48 +1,38 @@ -# $Id: PKGBUILD 9899 2008-08-20 20:01:17Z jgc $ +# $Id: PKGBUILD 19087 2008-11-14 21:39:51Z jgc $ # Maintainer: Jan de Groot # Contributor: Link Dupont # pkgname=dbus -pkgver=1.2.3 +pkgver=1.2.4 pkgrel=1 pkgdesc="Freedesktop.org message bus system" url="http://www.freedesktop.org/Software/dbus" arch=(i686 x86_64) license=('GPL' 'custom') -depends=('expat>=2.0' 'libx11' 'libsm') -options=(!libtool) -install=dbus.install +depends=("dbus-core>=${pkgver}" 'libx11' 'libsm') source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz - dbus) -md5sums=('f71641385768e99361bd298568207cee' - 'f3fd196cc278bd7b45a4ca01fb8f7894') + 30-dbus) +md5sums=('2e643910a09f44b000a0d76038637999' + 'd14e59575f04e55d21a04907b6fd9f3c') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \ --with-system-pid-file=/var/run/dbus.pid \ --disable-verbose-mode --disable-static \ + --enable-inotify --disable-dnotify \ --disable-tests --disable-asserts || return 1 - make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - chown 81:81 ${startdir}/pkg/var/run/dbus || return 1 + cd tools || return 1 + make dbus-launch || return 1 + install -m755 -d ${pkgdir}/usr/bin + install -m755 -d ${pkgdir}/usr/share/man/man1 + install -m755 dbus-launch ${pkgdir}/usr/bin/ || return 1 + install -m644 dbus-launch.1 ${pkgdir}/usr/share/man/man1/ || return 1 - install -m755 -d ${startdir}/pkg/etc/rc.d || return 1 - install -m 755 ${startdir}/dbus ${startdir}/pkg/etc/rc.d/ || return 1 - - #Fix configuration file - sed -i -e 's|81|dbus|' ${startdir}/pkg/etc/dbus-1/system.conf || return 1 - - #install .keep files so pacman doesn't delete empty dirs - touch ${startdir}/pkg/usr/share/dbus-1/services/.keep || return 1 - touch ${startdir}/pkg/usr/share/dbus-1/system-services/.keep || return 1 - touch ${startdir}/pkg/etc/dbus-1/session.d/.keep || return 1 - touch ${startdir}/pkg/etc/dbus-1/system.d/.keep || return 1 - - rmdir ${startdir}/pkg/usr/lib/dbus-1.0/dbus-1 || return 1 + install -m755 -d ${pkgdir}/etc/X11/xinit/xinitrc.d + install -m755 ${srcdir}/30-dbus ${pkgdir}/etc/X11/xinit/xinitrc.d/ || return 1 install -d -m755 ${startdir}/pkg/usr/share/licenses/dbus - install -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/dbus/ || return 1 + install -m644 ../COPYING ${pkgdir}/usr/share/licenses/dbus/ || return 1 } diff --git a/abs/core/ddcxinfo-arch/PKGBUILD b/abs/core/ddcxinfo-arch/PKGBUILD new file mode 100644 index 0000000..108a97e --- /dev/null +++ b/abs/core/ddcxinfo-arch/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir +# TUR: Ben +# Contributor: Elia Yehuda + +pkgname=ddcxinfo-arch +pkgver=0.8 +pkgrel=1 +pkgdesc="utility to probe non/ddc monitors - used by hwd" +url="http://user-contributions.org/projects/ddcxinfo-arch/" +depends=('glibc') +arch=i686 +source=(http://user-contributions.org/projects/ddcxinfo-arch/source/$pkgname-$pkgver.tar.gz) + +md5sums=('ca734d958a54bef03a543479f7ab8b00') + +build() { + cd $startdir/src/$pkgname-$pkgver + make ddcxinfo-arch || return 1 + install -D -m755 ddcxinfo-arch $startdir/pkg/usr/sbin/ddcxinfo-arch +} diff --git a/abs/core/ddcxinfo/PKGBUILD b/abs/core/ddcxinfo/PKGBUILD new file mode 100644 index 0000000..b358c0c --- /dev/null +++ b/abs/core/ddcxinfo/PKGBUILD @@ -0,0 +1,25 @@ +pkgname=ddcxinfo +pkgver=0.6.19 +pkgrel=3 +pkgdesc="DDC readout using the VESA BIOS extension" +url="http://www.t2-project.org/packages/ddcxinfo.html" +license="GPL" +depends=(x-server) +makedepends=() +conflicts=() +replaces=() +backup=() +arch=('i686') +install= +source=(http://www.kanotix.com/files/debian/pool/main/d/ddcxinfo-kanotix/$pkgname-kanotix_$pkgver.tar.gz + lrmi.patch) + + +build() { + cd $startdir/src/$pkgname-kanotix-$pkgver + mkdir -p $startdir/pkg/usr/sbin + patch -p1 < $startdir/src/lrmi.patch + make DESTDIR=$startdir/pkg install + cp svgamodes $startdir/pkg/usr/sbin/ + chmod +s $startdir/pkg/usr/sbin/ddcprobe +} diff --git a/abs/core/ddcxinfo/ddcxinfo-kanotix_0.6.19.tar.gz b/abs/core/ddcxinfo/ddcxinfo-kanotix_0.6.19.tar.gz new file mode 100644 index 0000000..fbbb329 Binary files /dev/null and b/abs/core/ddcxinfo/ddcxinfo-kanotix_0.6.19.tar.gz differ diff --git a/abs/core/ddcxinfo/lrmi.patch b/abs/core/ddcxinfo/lrmi.patch new file mode 100644 index 0000000..ca735fa --- /dev/null +++ b/abs/core/ddcxinfo/lrmi.patch @@ -0,0 +1,18 @@ +Common subdirectories: ddcxinfo-kanotix-0.6.19-orig/debian and ddcxinfo-kanotix-0.6.19/debian +diff -u ddcxinfo-kanotix-0.6.19-orig/lrmi.c ddcxinfo-kanotix-0.6.19/lrmi.c +--- ddcxinfo-kanotix-0.6.19-orig/lrmi.c 2009-07-25 06:15:09.000000000 +0000 ++++ ddcxinfo-kanotix-0.6.19/lrmi.c 2009-07-25 06:17:22.000000000 +0000 +@@ -170,6 +170,13 @@ + } + } + ++#ifndef TF_MASK ++#define TF_MASK X86_EFLAGS_TF ++#define IF_MASK X86_EFLAGS_IF ++#define IOPL_MASK X86_EFLAGS_IOPL ++#define VIF_MASK X86_EFLAGS_VIF ++#define VIP_MASK X86_EFLAGS_VIP ++#endif + + #define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK) + #define DEFAULT_STACK_SIZE 0x1000 diff --git a/abs/core/dhcp/ChangeLog b/abs/core/dhcp/ChangeLog new file mode 100644 index 0000000..7b9cb47 --- /dev/null +++ b/abs/core/dhcp/ChangeLog @@ -0,0 +1,8 @@ + +2009-07-19 K. Piche + * dhcp 4.1.0.p1-1 + * Adopted RedHat patch to fix bug where dhcpd won't start if ipv6 module + is not loaded. Fixes FS#12792. + * Added /etc/conf.d/dhcp feature contributed by Fabiano Furtado Pessoa + Coelho + diff --git a/abs/core/dhcp/PKGBUILD b/abs/core/dhcp/PKGBUILD new file mode 100644 index 0000000..db15ac3 --- /dev/null +++ b/abs/core/dhcp/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 46754 2009-07-20 03:16:44Z kevin $ +# Maintainer: judd +pkgname=dhcp +# separate patch levels with a period to maintain proper versioning. +pkgver=4.1.0.p1 +_pkgver=4.1.0p1 +pkgrel=1 +pkgdesc="A DHCP server, client, and relay agent" +arch=(i686 x86_64) +license=('custom:isc-dhcp') +url="https://www.isc.org/software/dhcp" +depends=('openssl>=0.9.8a') +backup=('etc/dhcpd.conf' 'etc/conf.d/dhcp') +install=dhcp.install +source=(http://ftp.isc.org/isc/${pkgname}/${pkgname}-${_pkgver}.tar.gz +dhcpd dhcp.conf.d dhcp-4.1.0-missing-ipv6-not-fatal.patch) + +build() { + cd ${srcdir}/${pkgname}-${_pkgver} + # Define _GNU_SOURCE to fix IPV6. + sed '/^CFLAGS="$CFLAGS/ s/INGS"/INGS -D_GNU_SOURCE"/' -i configure + # Make not having ipv6 non-fatal. + patch -Np1 -i ${srcdir}/dhcp-4.1.0-missing-ipv6-not-fatal.patch + ./configure --prefix=/usr --sysconfdir=/etc \ + --with-srv-lease-file=/var/state/dhcp/dhcpd.leases \ + --with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases + make || return 1 + make DESTDIR=${pkgdir} install + + install -D -m755 ${srcdir}/dhcpd ${pkgdir}/etc/rc.d/dhcpd + install -D -m644 ${srcdir}/dhcp.conf.d ${pkgdir}/etc/conf.d/${pkgname} + mkdir -p ${pkgdir}/var/state/dhcp + rm -f ${pkgdir}/etc/dhclient.conf + rm -f ${pkgdir}/usr/sbin/dhclient + rm -f ${pkgdir}/usr/share/man/man{5,8}/dhclient* + # install licenses + install -m644 -D ${srcdir}/${pkgname}-${_pkgver}/LICENSE \ + ${pkgdir}/usr/share/licenses/dhcp/LICENSE +} diff --git a/abs/core/dhcp/dhcp-4.1.0-missing-ipv6-not-fatal.patch b/abs/core/dhcp/dhcp-4.1.0-missing-ipv6-not-fatal.patch new file mode 100644 index 0000000..ebf3865 --- /dev/null +++ b/abs/core/dhcp/dhcp-4.1.0-missing-ipv6-not-fatal.patch @@ -0,0 +1,50 @@ +diff -Naur dhcp-4.1.0a2/common/discover.c dhcp-4.1.0a2-mcn/common/discover.c +--- dhcp-4.1.0a2/common/discover.c 2008-08-29 18:48:57.000000000 +0100 ++++ dhcp-4.1.0a2-mcn/common/discover.c 2008-10-02 13:02:06.000000000 +0100 +@@ -443,15 +443,17 @@ + } + + #ifdef DHCPv6 +- ifaces->fp6 = fopen("/proc/net/if_inet6", "r"); +- if (ifaces->fp6 == NULL) { +- log_error("Error opening '/proc/net/if_inet6' to " +- "list IPv6 interfaces; %m"); +- close(ifaces->sock); +- ifaces->sock = -1; +- fclose(ifaces->fp); +- ifaces->fp = NULL; +- return 0; ++ if (local_family == AF_INET6) { ++ ifaces->fp6 = fopen("/proc/net/if_inet6", "r"); ++ if (ifaces->fp6 == NULL) { ++ log_error("Error opening '/proc/net/if_inet6' to " ++ "list IPv6 interfaces; %m"); ++ close(ifaces->sock); ++ ifaces->sock = -1; ++ fclose(ifaces->fp); ++ ifaces->fp = NULL; ++ return 0; ++ } + } + #endif + +@@ -720,7 +722,8 @@ + } + #ifdef DHCPv6 + if (!(*err)) { +- return next_iface6(info, err, ifaces); ++ if (local_family == AF_INET6) ++ return next_iface6(info, err, ifaces); + } + #endif + return 0; +@@ -736,7 +739,8 @@ + close(ifaces->sock); + ifaces->sock = -1; + #ifdef DHCPv6 +- fclose(ifaces->fp6); ++ if (local_family == AF_INET6) ++ fclose(ifaces->fp6); + ifaces->fp6 = NULL; + #endif + } diff --git a/abs/core/dhcp/dhcp.conf.d b/abs/core/dhcp/dhcp.conf.d new file mode 100644 index 0000000..99ba6d1 --- /dev/null +++ b/abs/core/dhcp/dhcp.conf.d @@ -0,0 +1,6 @@ +# +# Arguments to be passed to the DHCP server daemon +# + +DHCP_ARGS="-q" + diff --git a/abs/core/dhcp/dhcp.install b/abs/core/dhcp/dhcp.install new file mode 100644 index 0000000..edb84b1 --- /dev/null +++ b/abs/core/dhcp/dhcp.install @@ -0,0 +1,15 @@ +# arg 1: the new package version +post_install() { + [ -f var/state/dhcp/dhcpd.leases ] || : >var/state/dhcp/dhcpd.leases + echo "If dhcpd doesn' start ensure the ipv6 kernel module is loaded." +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +op=$1 +shift +$op $* diff --git a/abs/core/dhcp/dhcpd b/abs/core/dhcp/dhcpd new file mode 100755 index 0000000..1fbb31e --- /dev/null +++ b/abs/core/dhcp/dhcpd @@ -0,0 +1,40 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/dhcp + +PIDFILE="/var/run/dhcpd.pid" +PID=`cat $PIDFILE 2>/dev/null` +case "$1" in + start) + stat_busy "Starting DHCP Server" + if [ "$PID" = "" ]; then + /usr/sbin/dhcpd $DHCP_ARGS + fi + if [ "$PID" != "" -o $? -gt 0 ]; then + stat_fail + else + add_daemon dhcpd + stat_done + fi + ;; + stop) + stat_busy "Stopping DHCP Server" + [ ! -z "$PID" ] && kill $PID &> /dev/null + rm -f $PIDFILE + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon dhcpd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core/dhcpcd/PKGBUILD b/abs/core/dhcpcd/PKGBUILD index dfc1914..1cfb7f9 100644 --- a/abs/core/dhcpcd/PKGBUILD +++ b/abs/core/dhcpcd/PKGBUILD @@ -1,27 +1,48 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd + pkgname=dhcpcd -pkgver=3.2.1 -pkgrel=10 -pkgdesc="A DHCP client daemon" -arch=(i686 x86_64) +pkgver=5.0.7 +pkgrel=1 +pkgdesc="RFC2131 compliant DHCP client daemon" +url="http://roy.marples.name/dhcpcd/" +arch=('i686' 'x86_64') license=('BSD') -url="http://roy.marples.name/dhcpcd" groups=('base') -depends=('glibc') -backup=('etc/conf.d/dhcpcd') -source=(http://roy.marples.name/dhcpcd/$pkgname-$pkgver.tar.bz2 - dhcpcd.conf.d) -md5sums=('5a437882b6b9eb29bde323dc411be4a4' - '12d866a78d9f5fa5f31ca18b3940d847') +depends=('glibc' 'bash') +backup=('etc/conf.d/dhcpcd' 'etc/dhcpcd.conf') +options=('emptydirs') # We Need the Empty /var/lib/dhcpcd Directory +source=("http://roy.marples.name/downloads/$pkgname/$pkgname-$pkgver.tar.bz2" \ + 'dhcpcd.conf.d') build() { - cd $startdir/src/$pkgname-$pkgver - #disable DUID usage - echo "#undef ENABLE_DUID" >> config.h + cd ${srcdir}/${pkgname}-${pkgver} + + # Fix Installation Locations + export PREFIX=/usr + sed -i 's/${PREFIX}\/etc/\/etc/' Makefile || return 1 + sed -i 's/\/db/\/lib\/dhcpcd/' Makefile || return 1 + sed -i 's/\/libexec/\/lib\/dhcpcd/' Makefile || return 1 + sed -i 's/\/libexec/\/lib\/dhcpcd/' dhcpcd-hooks/Makefile || return 1 + sed -i 's/${PREFIX}\/sbin/\/sbin/' Makefile || return 1 + + # Build make || return 1 - make DESTDIR=$startdir/pkg install - mkdir -p $startdir/pkg/usr/sbin - ln -sf /sbin/dhcpcd $startdir/pkg/usr/sbin/dhcpcd - install -D -m644 ../dhcpcd.conf.d $startdir/pkg/etc/conf.d/dhcpcd + make DESTDIR=${pkgdir} install || return 1 + + # Create Binary Symlink + install -d ${pkgdir}/usr/sbin || return 1 + ln -sf /sbin/dhcpcd ${pkgdir}/usr/sbin/dhcpcd || return 1 + + # Install Configuration File used in /etc/rc.d/network + install -D -m644 ../dhcpcd.conf.d $pkgdir/etc/conf.d/$pkgname || return 1 + + # Install License + install -d $pkgdir/usr/share/licenses/$pkgname || return 1 + awk '{if(FNR<27)print $0}' ${srcdir}/${pkgname}-${pkgver}/config.h \ + >> ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 + + # Make Man Pages FHS Compliant + mv -f ${pkgdir}/usr/man ${pkgdir}/usr/share/man || return 1 + + # Set Options in /etc/dhcpcd.conf + echo noipv4ll >> ${pkgdir}/etc/dhcpcd.conf || return 1 # Disable ip4vall } diff --git a/abs/core/directfb/ChangeLog b/abs/core/directfb/ChangeLog new file mode 100644 index 0000000..4e10ded --- /dev/null +++ b/abs/core/directfb/ChangeLog @@ -0,0 +1,5 @@ +2008-07-29 Eric Belanger + + * directfb 1.2.0-1 + * Upstream update + * Added ChangeLog diff --git a/abs/core/directfb/PKGBUILD b/abs/core/directfb/PKGBUILD new file mode 100644 index 0000000..89d322a --- /dev/null +++ b/abs/core/directfb/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD,v 1.7 2008/08/02 19:48:28 Snowman Exp $ +# Maintainer: Eric Belanger +# Contributor: Eric Belanger + +pkgname=directfb +pkgver=1.2.0 +pkgrel=2 +pkgdesc="A thin library that provides hardware graphics acceleration, input device handling and abstraction, integrated windowing system on top of the Linux Framebuffer Device" +arch=('i686' 'x86_64') +url="http://www.directfb.org" +license=('LGPL') +depends=('libjpeg' 'libxext' 'sdl' 'sysfsutils' 'libpng' 'freetype2') +options=('!libtool') +source=(http://www.directfb.org/downloads/Old/DirectFB-${pkgver}.tar.gz dfb_serial.diff) +md5sums=('231f2247c9d0a2b8a51f415571105ecb' + '5993ae20546b80d0e5fa4f7b367e2f82') + +build() { + cd ${srcdir}/DirectFB-${pkgver} +# patch -p0 < ../dfb_serial.diff + ./configure --prefix=/usr --sysconfdir=/etc --enable-static --enable-zlib \ + --enable-x11 --enable-sdl --disable-vnc --disable-osx \ + --enable-video4linux2 --enable-voodoo || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/core/directfb/dfb_serial.diff b/abs/core/directfb/dfb_serial.diff new file mode 100644 index 0000000..638467b --- /dev/null +++ b/abs/core/directfb/dfb_serial.diff @@ -0,0 +1,10 @@ +--- lib/direct/serial.h.orig 2009-02-11 05:40:20.000000000 +0000 ++++ lib/direct/serial.h 2009-02-11 05:40:44.000000000 +0000 +@@ -31,6 +31,7 @@ + + #include + #include ++#include + + struct __D_DirectSerial { + int magic; diff --git a/abs/core/diskless-legacy/PKGBUILD b/abs/core/diskless-legacy/PKGBUILD new file mode 100644 index 0000000..6b7cea7 --- /dev/null +++ b/abs/core/diskless-legacy/PKGBUILD @@ -0,0 +1,16 @@ +# $Id: PKGBUILD 23123 2009-01-03 02:43:02Z kevin $ +# Maintainer: Greg Frost +pkgname=diskless-legacy +pkgver=1 +pkgrel=1 +pkgdesc="Script for configuring a diskless mythtv frontends using NFS root." +arch=i686 +depends=(tftp-hpa dhcp) +source=(config_diskless_frontend.bash) +md5sums=('825fbc61ef209dc47f17dbaab5829779') + +build() { + install -D -m755 ${srcdir}/config_diskless_frontend.bash \ + ${pkgdir}/usr/local/bin/config_diskless_frontend.bash +} +md5sums=('825fbc61ef209dc47f17dbaab5829779') diff --git a/abs/core/diskless-legacy/config_diskless_frontend.bash b/abs/core/diskless-legacy/config_diskless_frontend.bash new file mode 100755 index 0000000..ffd1afd --- /dev/null +++ b/abs/core/diskless-legacy/config_diskless_frontend.bash @@ -0,0 +1,678 @@ +#!/bin/bash +# This script configures your backend so that a diskless +# frontend can boot from it. + +function backtitle() { # no arguments. + BT="${0##*/}" + KMV_F1='/KNOPPIX/KnoppMyth-version' + KMV_F2='/etc/LinHES-release' + if [ -f "$KMV_F1" ]; then + BT="-= $(cat $KMV_F1) $BT =-" + elif [ -f "$KMV_F2" ]; then + BT="-= $(cat $KMV_F2) $BT =-" + fi +} + +function must_be_root() { # no arguments. + test $(id -u) == 0 && return + MSG="\Z1ERROR\Zn: This script \Z4should\Zn be run by \Z1root\Zn." + dialog --backtitle "$BT" --colors --msgbox "$MSG" 5 45 + exit 4 +} + +backtitle +must_be_root + +TITLE="Diskless FE Configuration" +DOPTS=(--backtitle "$BT" --title "$TITLE" --trim --aspect 30 ) + +DAEMON_LOG=/var/log/daemon.log +BOOT_DEFAULT=/tftpboot/pxelinux.cfg/default + +unable_to_determine_mac_for_default_fe () +{ + if dialog "${DOPTS[@]}" --yes-label "Boot FE and try again" \ + --no-label "Delete $fe_nfsroot" \ + --yesno "Unable to automatically determine the MAC address of + the current default frontend by interrogating $DAEMON_LOG. + This may be because you have not yet booted the diskless FE. You can + either boot the diskless FE and try running $0 again, or delete + $fe_nfsroot and re-create it later." 0 0 ; then + exit + else + rm -Rf $fe_nfsroot $BOOT_DEFAULT + fi + exit +} + +find_existing_diskless_fes() { + + unset frontend_names + unset frontend_nfsroots + unset frontend_ips + unset frontend_macs + + for frontend_config in $(ls /tftpboot/pxelinux.cfg 2> /dev/null) ; do + + frontend_name=$(basename $( + grep append /tftpboot/pxelinux.cfg/$frontend_config | + sed -e 's/.*nfsroot=//' | awk -F, '{print $1}' | awk -F/ '{print $NF}')) + frontend_nfsroot=$( + grep append /tftpboot/pxelinux.cfg/$frontend_config | + cut -d ':' -f 2 | cut -d ',' -f 1) + frontend_ip=\ +$((0x${frontend_config:0:2})).$((0x${frontend_config:2:2})).\ +$((0x${frontend_config:4:2})).$((0x${frontend_config:6:2})) + frontend_mac=$( + cat /etc/dhcpd.conf | + grep "host $frontend_name" | + sed 's/hardware ethernet /#/g' | + cut -d '#' -f 2 | + cut -d ';' -f 1) + + if [ -n "$frontend_name" -a -n "$frontend_nfsroot" -a \ + -n "$frontend_ip" -a -n "$frontend_mac" ] ; then + frontend_names=( "${frontend_names[@]}" $frontend_name ) + frontend_nfsroots=( "${frontend_nfsroots[@]}" $frontend_nfsroot ) + frontend_ips=( "${frontend_ips[@]}" $frontend_ip ) + frontend_macs=( "${frontend_macs[@]}" $frontend_mac ) + fi + done + +echo frontend_names="${frontend_names[@]}" +echo frontend_nfsroots="${frontend_nfsroots[@]}" +echo frontend_ips="${frontend_ips[@]}" +echo frontend_macs="${frontend_macs[@]}" + +} + +check_for_default_fe () { + # This function looks to see if there is a diskless FE that has only been + # partially configured (i.e. it's MAC address has not been determined and + # as a result it has not been allocated a fixed IP. + + if [ -e $BOOT_DEFAULT ] ; then + # There is a $BOOT_DEFAULT config file that has not yet been set to a + # fixed IP address. See if we can interrogate the log files to + # determine what the MAC adderss of the FE is so that we can turn it + # into a fixed ip node. This is the first step in allowing multiple + # diskless frontends. + + # First determine from the default file, the nfsroot that it is for. + + fe_nfsroot=$(grep append $BOOT_DEFAULT | cut -d ':' -f 2 | cut -d ',' -f 1) + + if [ -z "$fe_nfsroot" ] ; then + echo "Unable to determine the location of the nfsroot from" \ + $BOOT_DEFAULT + exit + fi + + echo fe_nfsroot=$fe_nfsroot + + # Now determine the IP address by looking for an instance in the + # daemon log file for which the specified nfsroot was mounted. + + fe_ipaddress=$( + grep "authenticated mount request from " $DAEMON_LOG | + grep $fe_nfsroot | + tail -1 | + sed 's/authenticated mount request from /#/g' | + cut -d '#' -f 2 | + cut -d ':' -f 1) + + echo fe_ipaddress=$fe_ipaddress + + unset fe_macaddress + + if [ ! -z "$fe_ipaddress" ] ; then + fe_macaddress=$( + grep "DHCPACK on $fe_ipaddress" $DAEMON_LOG | + tail -1 | + sed 's/DHCPACK on '$fe_ipaddress' to /#/g' | + cut -d '#' -f 2 | + cut -d ' ' -f 1) + fi + + echo fe_macaddress=$fe_macaddress + + if [ -z "$fe_macaddress" ] ; then + unable_to_determine_mac_for_default_fe + else + if ! dialog "${DOPTS[@]}" --yesno "By interrogating $DAEMON_LOG, + it appears that the $(basename $fe_nfsroot) frontend was + last used by a host with MAC Address of $fe_macaddress which + was allocated IP address $fe_ipaddress. + Do you wish to allocate the IP to that host (so that you + can configure another diskless FE)?" 0 0 ; then + dialog "${DOPTS[@]}" --msgbox "Boot the correct diskless FE and + run $0 again." 0 0 + exit + fi + + # Setup dhcpd.conf so that the FE's MAC address always uses a fixed + # ip address and the PXE configuration is fixed for that address. + + hex_ip_address=$(printf "%02X%02X%02X%02X" $(echo $fe_ipaddress | + tr '.' ' ')) + echo hex_ip_address=$hex_ip_address + mv -fv $BOOT_DEFAULT $(dirname $BOOT_DEFAULT)/$hex_ip_address + + cp -f /etc/dhcpd.conf /etc/dhcpd.conf.bak + cat /etc/dhcpd.conf.bak | + grep -v "host $(basename $fe_nfsroot)" > \ + /etc/dhcpd.conf + echo "\ +host $(basename $fe_nfsroot) \ +{hardware ethernet $fe_macaddress; fixed-address $fe_ipaddress;}" \ + >> /etc/dhcpd.conf + + /sbin/sv restart dhcpd + + dialog "${DOPTS[@]}" --msgbox "The frontend $(basename $fe_nfsroot) + with a MAC address of $fe_macaddress and an nfsroot directory of + $fe_nfsroot has been configured with a fixed IP address of + $fe_ipaddress." 0 0 + exit + fi + fi + +} + +get_network_interface() { + NETDEVICES="$(cat /proc/net/dev | + awk -F: '/ath.:|wlan.:|eth.:|tr.:/{print $1}')" + echo NETDEVICES=$NETDEVICES + NUM_DEVICES=$(echo $NETDEVICES | wc -w) + echo NUM_DEVICES=$NUM_DEVICES + if [ $NUM_DEVICES = 1 ] ; then + INTERFACE=$NETDEVICES + else + DEVICELIST="" + DEVNUM=0 + for DEVICE in $NETDEVICES + do + DEVNUM=$(($DEVNUM + 1)) + DEVICELIST="$DEVICELIST $DEVICE Interface${DEVNUM} " + done + echo DEVICELIST=$DEVICELIST + TMP=/tmp/interface + rm -Rf $TMP + dialog "${DOPTS[@]}" --menu "Which network interface?" 18 70 12 \ + $DEVICELIST 2>$TMP || exit + INTERFACE=$(cat $TMP) + fi + echo INTERFACE=$INTERFACE +} + +validip(){ + echo "$1" | egrep -q -e '[0-9]+\.[0-9]+\.[0-9]+.[0-9]+' + return $? +} + +get_network_info() { + BACKEND_IP=$(echo $(ifconfig $INTERFACE | grep "inet addr" | tr ':' ' ') | + cut -d ' ' -f 3) + echo BACKEND_IP=$BACKEND_IP + NAMESERVERS="$(awk '/^nameserver/{printf "%s ",$2}' /etc/resolv.conf)" + echo NAMESERVERS=$NAMESERVERS + GATEWAY="$(LANG=C LC_ALL=C route -n | awk '/^0\.0\.0\.0/{print $2; exit}')" + echo GATEWAY=$GATEWAY + NETWORK="${BACKEND_IP%.*}" + echo NETWORK=$NETWORK + HOST="${BACKEND_IP##*.}" + echo HOST=$HOST + NETMASK="$(LANG=C LC_ALL=C ifconfig $INTERFACE | + awk '/[Mm]ask/{FS="[: ]*";$0=$0; print $8; exit}')" + echo NETMASK=$NETMASK + + # See if we can determine the range of IP addresses currently allowed in + # dhcpd.conf + + IPRANGE=( $(grep ^[[:space:]]*range /etc/dhcpd.conf | + sed 's/range//g' | tr -d ';') ) + + echo ${IPRANGE[@]} + if [ $(echo ${IPRANGE[@]} | wc -w) -eq 2 ] ; then + START=$(echo ${IPRANGE[0]} | tr '.' '\t' | cut -f 4) + END=$(echo ${IPRANGE[1]} | tr '.' '\t' | cut -f 4) + echo START=$START + echo END=$END + fi + + # Could not + + if [ -z "$START" -o -z "$END" ] ; then + if [ "$HOST" -lt "20" ] ; then + START=21 + END=26 + else + START=11 + END=16 + fi + fi + + IPRANGE_FROM="" + IPRANGE_TO="" + + while [ -z "$IPRANGE_FROM" -o -z "$IPRANGE_TO" -o -z "$IPRANGE" ] + do + IPRANGE="$NETWORK.$START $NETWORK.$END" + rm -f /tmp/iprange + + if ! dialog "${DOPTS[@]}" --clear --inputbox "Please enter the desired + IP-Range of addresses that should be allocated by clients, + separated by a single space." 10 75 "$IPRANGE" \ + 2> /tmp/iprange ; then + exit + fi + + IPRANGE=$(cat /tmp/iprange) + echo IPRANGE=$IPRANGE + IPRANGE_FROM="${IPRANGE%% *}" + IPRANGE_TO="${IPRANGE##* }" + + for i in "$IPRANGE_FROM" "$IPRANGE_TO" + do + validip "$i" || IPRANGE="" + done + done +} + +setup_dhcpd() { + # Generate dhcpd.conf from template + + if [ ! -f /etc/dhcpd.conf.orig ] ; then + mv -f /etc/dhcpd.conf /etc/dhcpd.conf.orig + fi + + ALLNAMESERVERS="" + for i in $NAMESERVERS; do + ALLNAMESERVERS="${ALLNAMESERVERS:+$ALLNAMESERVERS,} $i" + done + echo ALLNAMESERVERS=$ALLNAMESERVERS + + cat >/etc/dhcpd.conf <> \ + /etc/dhcpd.conf + done + + /sbin/add_service.sh dhcpd + /sbin/sv restart dhcpd +} + +setup_tftpd() { + + /sbin/add_service.sh tftpd + /sbin/sv restart tftpd +} + +check_delete_of_existing_nfsroot() { + if [ -d $NFSROOT ] ; then + if dialog "${DOPTS[@]}" --yesno "\ +There is already a directory $NFSROOT. Do you want to delete it and \ +rebuild it from scratch?" 10 70 ; then + echo Deleting $NFSROOT + rm -Rf $NFSROOT + else + echo "OK then, bye." + exit + fi + fi +} + +enable_mysql_and_backend_networking() { + # Enable mysql networking on the backend. + + /sbin/sv stop mythbackend + + if grep -q ^skip-networking /etc/my.cnf ; then + echo "Commenting out skip-networking." + cp /etc/my.cnf /etc/my.cnf~ + cat /etc/my.cnf~ | sed 's/^skip-networking/#skip-networking/g' > \ + /etc/my.cnf + /sbin/sv restart mysql + else + echo "Already commented out skip-networking." + fi + + # Make sure that the backend ip settings in the mythtv mysql database have + # the actual IP address of the backend rather than the loopback address. + # Otherwise the frontend will not be able to connect to the backend. + + echo "Setting backend IP in mythtv's mysql settings" + echo " +UPDATE settings SET data='$BACKEND_IP' WHERE value='BackendServerIP'; +UPDATE settings SET data='$BACKEND_IP' WHERE value='MasterServerIP';" | + mysql mythconverg + + /sbin/sv start mythbackend +} + +export_mounts() { + # Ensure that the /myth directory is exported. + + if ! grep -q ^/myth[[:space:]] /etc/exports ; then + echo "Adding line for /myth in /etc/exports" + echo "/myth *(rw,async,no_subtree_check)" >> /etc/exports + else + echo "Already added line for /myth in /etc/exports" + fi + + if ! grep -q ^/data/var/cache/pacman[[:space:]] /etc/exports ; then + echo "Adding line for /data/var/cache/pacman in /etc/exports" + echo "/data/var/cache/pacman *(rw,async,no_subtree_check)" >> /etc/exports + else + echo "Already added line for /data/var/cache/pacman in /etc/exports" + fi +} + +enable_nfs() { + # Enable NFS. + + /sbin/add_service.sh nfsd + +} + +restart_nfs (){ + /usr/sbin/exportfs -arv +} + +export_nfsroot() { + # Ensure that the NFSROOT directory is appropriately exported. + + if ! grep -q ^$NFSROOT[[:space:]] /etc/exports ; then + echo "Adding line for $NFSROOT in /etc/exports" + echo "$NFSROOT *(rw,no_root_squash,async,no_subtree_check)" >> /etc/exports + else + echo "Already added line for $NFSROOT in /etc/exports" + fi +} + +create_tftpboot_directory() { + # Create the directory with the tftp stuff. + + echo "Creating /tftpboot directories" + mkdir -p /tftpboot/pxelinux.cfg + + if [ ! -e /tftpboot/pxelinux.0 ] ; then + cp -fv /usr/lib/syslinux/pxelinux.0 /tftpboot/pxelinux.0 + fi + + if [ ! -e /tftpboot/vmlinuz26 ] ; then + cp -fv /boot/vmlinuz26 /tftpboot/vmlinuz26 + fi + + if [ ! -e /tftpboot/kernel26.img ] ; then + + echo "Building kernel miniroot" + if [ -z "$(awk -F\" '$1 ~ /^MODULES=/ && $2 ~ /nfs/' /etc/mkinitcpio.conf)" ] ; then + cp /etc/mkinitcpio.conf /etc/mkinitcpio.conf~ + sed -e '/^MODULES=/s/\"$/ nfs\"/' < /etc/mkinitcpio.conf~ > /etc/mkinitcpio.conf + fi + if [ -z "$(awk -F\" '$1 ~ /^HOOKS=/ && $2 ~ /net/' /etc/mkinitcpio.conf)" ] ; then + cp /etc/mkinitcpio.conf /etc/mkinitcpio.conf~ + sed -e '/^HOOKS=/s/\"$/ net\"/' < /etc/mkinitcpio.conf~ > /etc/mkinitcpio.conf + fi + /sbin/mkinitcpio -g /tftpboot/kernel26.img + fi +} + +create_default_pxelinux_entry() { + echo "\ + default linux + + label linux + kernel vmlinuz26 + append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=$BACKEND_IP:$NFSROOT,v3,rsize=16384,wsize=16384 init=/sbin/runit ip=dhcp" \ + > /tftpboot/pxelinux.cfg/default +} + +create_new_nfsroot() { + # Prompt the user for the name of the NFSROOT. + + FRONTEND= + NFSROOT= + + while [ -z "$FRONTEND" ] ; do + if ! dialog "${DOPTS[@]}" --inputbox "Enter the hostname of the new + diskless FE:" 0 0 2> /tmp/frontend_hostname ; then + exit + fi + + FRONTEND=$(cat /tmp/frontend_hostname) + done + + # Prompt the user for the location of the NFSROOT. + + while [ -z "$NFSROOT" ] ; do + NFSROOT=/nfsroot/$FRONTEND + + if ! dialog "${DOPTS[@]}" --clear --inputbox "Enter the location of the + NFSROOT for the diskless FE:" \ + 0 0 "$NFSROOT" 2> /tmp/nfsroot_location ; then + exit + fi + + NFSROOT=$(cat /tmp/nfsroot_location) + done + + check_delete_of_existing_nfsroot + + # Create the nfsroot directory that the FE will use as its root filesystem. + + echo "Creating the $NFSROOT directory." + mkdir -p $NFSROOT + for DIR in /* ; do + if [[ "$DIR" != /myth && \ + "$DIR" != /mnt && \ + "$DIR" != /bin && \ + "$DIR" != /sbin && \ + "$DIR" != /tmp && \ + "$DIR" != /data && \ + "$DIR" != /media && \ + "$DIR" != /proc && \ + "$DIR" != /sys && \ + "$DIR" != /storage && \ + "$DIR" != /var && \ + "$DIR" != /nfsroot && \ + "$DIR" != /tftpboot && \ + "$DIR" != /cdrom ]] + then + echo " Copying $DIR to $NFSROOT" + cp -ax $DIR $NFSROOT + fi + done + + cp -alx /bin $NFSROOT + cp -alx /sbin $NFSROOT + + cd $NFSROOT + + # Exclude specific bits of /var + + tar c /var \ + --exclude=/var/lib/dhcpcd \ + --exclude=/var/lib/locate \ + --exclude=/var/lib/mlocate \ + --exclude=/var/lib/named \ + 2> /dev/null | tar x 2> /dev/null + + for DIR in /myth /mnt /data /tmp /proc /media /sys /cdrom /var/lib/mlocate ; do + echo " Creating $DIR" + tar c $DIR --exclude=$DIR/* 2> /dev/null | tar x 2> /dev/null + done + + mkdir -p $NFSROOT/data/var/cache/pacman + + chroot $NFSROOT /sbin/remove_service.sh dhcpd + chroot $NFSROOT /sbin/remove_service.sh lighttpd + chroot $NFSROOT /sbin/remove_service.sh mysql + chroot $NFSROOT /sbin/remove_service.sh mythbackend + chroot $NFSROOT /sbin/remove_service.sh nfsd + chroot $NFSROOT /sbin/remove_service.sh nmbd + chroot $NFSROOT /sbin/remove_service.sh smbd + chroot $NFSROOT /sbin/remove_service.sh tftpd + + # Update the fstab. + + cp $NSFROOT/etc/fstab $NFSROOT/etc/fstab~ + cat $NFSROOT/etc/fstab~ | grep -v ext3 | + grep -v ^UUID= > $NFSROOT/etc/fstab + + echo "\ +$BACKEND_IP:/nfsroot / nfs defaults,nolock,auto,noatime 0 2 +$BACKEND_IP:/myth /myth nfs defaults,nolock,auto,noatime 0 0 +$BACKEND_IP:/data/var/cache/pacman /data/var/cache/pacman nfs defaults,nolock,auto,noatime 0 0 +" >> $NFSROOT/etc/fstab + + cp $NFSROOT/etc/rc.sysinit $NFSROOT/etc/rc.sysinit~ + sed -e '/^\/sbin\/minilogd/s/$/\n\n# Mount NFS early\n\/bin\/mount -a -t nfs/' \ + < $NFSROOT/etc/rc.sysinit~ > $NFSROOT/etc/rc.sysinit + + # Update networking + + echo $FRONTEND > $NFSROOT/etc/hostname + + cp $NFSROOT/etc/hosts $NFSROOT/etc/hosts~ + echo "127.0.0.1 $FRONTEND localhost" > $NFSROOT/etc/hosts + cat $NFSROOT/etc/hosts~ | grep -v 127.0.0.1 >> $NFSROOT/etc/hosts + + cp $NFSROOT/etc/net/ifaces/eth0/options $NFSROOT/etc/net/ifaces/eth0/options~ + sed -e 's/^BOOTPROTO=.*/BOOTPROTO=none/' < $NFSROOT/etc/net/ifaces/eth0/options~ \ + > $NFSROOT/etc/net/ifaces/eth0/options + + # Update mysql settings + + cp /usr/share/mythtv/mysql.txt $NFSROOT/home/mythtv/.mythtv/mysql.txt + + if grep -q DBHostName=localhost $NFSROOT/home/mythtv/.mythtv/mysql.txt ; then + echo "Setting database host in frontend's mysql.txt." + cp $NFSROOT/home/mythtv/.mythtv/mysql.txt \ + $NFSROOT/home/mythtv/.mythtv/mysql.txt.orig + cat $NFSROOT/home/mythtv/.mythtv/mysql.txt.orig | + sed 's/DBHostName=localhost/DBHostName='$BACKEND_IP'/g' > \ + $NFSROOT/home/mythtv/.mythtv/mysql.txt + else + echo "Already set Database host in frontend's mysql.txt." + fi + + chown mythtv:mythtv $NFSROOT/home/mythtv/.mythtv/mysql.txt + +# echo > $NFSROOT/etc/mythtv/Cards + + create_default_pxelinux_entry + export_nfsroot + restart_nfs + + dialog "${DOPTS[@]}" --msgbox "Boot your diskless FE + and then re-run this script ($0) so that the MAC address + of the Diskless FE can be obtained." 0 0 + +} + + + +########################################## +########################################## +## +## MAIN BODY OF SCRIPT ## +## +########################################## +########################################## + + + +check_for_default_fe +find_existing_diskless_fes + +get_network_interface +get_network_info +setup_tftpd +setup_dhcpd +enable_mysql_and_backend_networking +export_mounts +create_tftpboot_directory +enable_nfs + +# Restart nfs to ensure that the exported /myth directory can be mounted. This +# is required to create a new frontend. + +restart_nfs + +if [ ${#frontend_names[@]} -eq 0 ] ; then + create_new_nfsroot +else + for (( fe = 0 ; fe < ${#frontend_names[@]} ; fe++ )) ; do + frontend_options=( "${frontend_options[@]}" \ + "${frontend_names[$fe]} (MAC:${frontend_macs[$fe]} \ +IP:${frontend_ips[$fe]})" "" ) + done + +echo 0=${frontend_names[0]} +echo 1=${frontend_names[1]} +echo 2=${frontend_names[2]} +echo 3=${frontend_names[3]} + + if ! dialog "${DOPTS[@]}" --menu "Select a frontend to delete or to create + a new one." 0 0 0 "${frontend_options[@]}" \ + "New Frontend" "" 2> /tmp/selected_fe; then + exit + fi + + selected_option=$(cat /tmp/selected_fe) + + if [ "$selected_option" = "New Frontend" ] ; then + create_new_nfsroot + exit + fi + +echo $selected_option +echo ${frontend_options[0]} +echo ${frontend_options[2]} +echo ${frontend_nfsroots[@]} + + for (( fe = 0 ; fe < ${#frontend_names[@]} ; fe++ )) ; do + if [ "$selected_option" = "${frontend_options[$(($fe*2))]}" ] ; then + if dialog "${DOPTS[@]}" --yesno "Do you wish to delete the frontend + with nfsroot ${frontend_nfsroots[$fe]}?" 0 0 ; then + # Delete the nfsroot directory. + rm -Rfv ${frontend_nfsroots[$fe]} + + # Delete the tftpboot pxe boot config file. + + hex_ip_address=$(printf "%02X%02X%02X%02X" \ + $(echo ${frontend_ips[$fe]} | tr '.' ' ')) + rm /tftpboot/pxelinux.cfg/$hex_ip_address + + # Remove reference to the frontend from the dhcp.conf + cp -fv /etc/dhcpd.conf /etc/dhcpd.conf.bak + grep -v "host ${frontend_names[$fe]}" /etc/dhcpd.conf.bak > \ + /etc/dhcpd.conf + /sbin/sv restart dhcpd + fi + fi + done +fi + diff --git a/abs/core/dvb-firmware/PKGBUILD b/abs/core/dvb-firmware/PKGBUILD new file mode 100644 index 0000000..5531f86 --- /dev/null +++ b/abs/core/dvb-firmware/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=dvb-firmware +pkgver=1 +pkgrel=8 +pkgdesc="Firmware for DVB cards" +arch=('i586' 'i686' 'x86_64') +url="http://linuxtv.org/" +source=(ftp://ftp.knoppmyth.net/R6/sources/dvb-firmware.tar.bz2 +http://dl.ivtvdriver.org/ivtv/firmware/cx18-firmware.tar.gz + xc3028-v27.fw + dvb-usb-dib0700-1.20.fw) +md5sums=('6932d0b4f763424e35b7fa3a6cc82a2e' + '667fa0ee6b79e054736beef922966333' + '293dc5e915d9a0f74a368f8a2ce3cc10' + 'f42f86e2971fd994003186a055813237') + +build() { + cd $startdir/src/ + mkdir -p $startdir/pkg/lib/firmware + cp -a dvb-fw/* $startdir/pkg/lib/firmware + cp -a cx18-firmware/*.fw $startdir/pkg/lib/firmware + cp $startdir/src/*.fw $startdir/pkg/lib/firmware +} diff --git a/abs/core/dvb-firmware/dvb-usb-dib0700-1.20.fw b/abs/core/dvb-firmware/dvb-usb-dib0700-1.20.fw new file mode 100644 index 0000000..ce41240 Binary files /dev/null and b/abs/core/dvb-firmware/dvb-usb-dib0700-1.20.fw differ diff --git a/abs/core/dvb-firmware/xc3028-v27.fw b/abs/core/dvb-firmware/xc3028-v27.fw new file mode 100644 index 0000000..76f46ab Binary files /dev/null and b/abs/core/dvb-firmware/xc3028-v27.fw differ diff --git a/abs/core/e2fsprogs/PKGBUILD b/abs/core/e2fsprogs/PKGBUILD index b85652b..6da53ff 100644 --- a/abs/core/e2fsprogs/PKGBUILD +++ b/abs/core/e2fsprogs/PKGBUILD @@ -1,10 +1,11 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd +# $Id: PKGBUILD 16283 2008-10-21 12:05:45Z ronald $ +# Maintainer: +# Contributor: judd pkgname=e2fsprogs -pkgver=1.40.8 -pkgrel=10 -pkgdesc="Ext2 filesystem utilities" +pkgver=1.41.3 +pkgrel=2 +pkgdesc="Ext2/3/4 filesystem utilities" arch=('i686' 'x86_64') license=('GPL' 'LGPL' 'MIT') url="http://e2fsprogs.sourceforge.net" @@ -12,23 +13,29 @@ groups=('base') depends=('glibc') makedepends=('bc') source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz - Makefile-fsck.static.patch - mke2fs.conf) -md5sums=('450e2fb2461b2296fec770ff8fc147ed' - 'ce2b0daf84e17e8c7880ba3d43020ea3' - '4ebb30bdb5951f1fc86c1470e4d81532') + 'Makefile-fsck.static.patch') +backup=('etc/mke2fs.conf') +install=$pkgname.install +md5sums=('b21d26fc46c584021dc9c444933ee1c2' + 'ce2b0daf84e17e8c7880ba3d43020ea3') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd ${srcdir}/${pkgname}-${pkgver} + # Remove unnecessary init.d directory sed -i '/init\.d/s|^|#|' misc/Makefile.in + ./configure --prefix=/usr --with-root-prefix="" --enable-elf-shlibs + # add fsck.static for mkinitrd use patch -Np1 -i ../Makefile-fsck.static.patch || return 1 + make || return 1 - make DESTDIR=${startdir}/pkg install install-libs - make -C ${startdir}/src/${pkgname}-${pkgver}/misc fsck.static || return 1 - install -D -m755 ${startdir}/src/${pkgname}-${pkgver}/misc/fsck.static ${startdir}/pkg/sbin/fsck.static - sed -i -e 's/^AWK=.*/AWK=awk/' ${startdir}/pkg/usr/bin/compile_et || return 1 - install -m644 ${startdir}/src/mke2fs.conf ${startdir}/pkg/etc/ || return 1 + make DESTDIR=${pkgdir} install install-libs || return 1 + make -C ${srcdir}/${pkgname}-${pkgver}/misc fsck.static || return 1 + + install -D -m755 ${srcdir}/${pkgname}-${pkgver}/misc/fsck.static \ + ${pkgdir}/sbin/fsck.static || return 1 + + sed -i -e 's/^AWK=.*/AWK=awk/' ${pkgdir}/usr/bin/compile_et || return 1 } diff --git a/abs/core/e2fsprogs/e2fsprogs.install b/abs/core/e2fsprogs/e2fsprogs.install new file mode 100644 index 0000000..e207eb4 --- /dev/null +++ b/abs/core/e2fsprogs/e2fsprogs.install @@ -0,0 +1,21 @@ + infodir=/usr/share/info + filelist=(libext2fs.info.gz) + + post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done + + } + + post_upgrade() { + post_install $1 + } + + post_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done + + } + diff --git a/abs/core/ed/PKGBUILD b/abs/core/ed/PKGBUILD new file mode 100644 index 0000000..09188d1 --- /dev/null +++ b/abs/core/ed/PKGBUILD @@ -0,0 +1,36 @@ +# $Id: PKGBUILD 17077 2008-10-24 19:45:39Z andyrtr $ +# Maintainer: Andreas Radke + +pkgname=ed +pkgver=1.1 +pkgrel=2 +pkgdesc="A POSIX-compliant line editor" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnu.org/software/ed/ed.html" +install=ed.install +groups=('base-devel') +depends=('glibc' 'texinfo') +options=('!emptydirs') +source=(ftp://ftp.gnu.org/gnu/ed/${pkgname}-${pkgver}.tar.bz2) +md5sums=('d190a6e8937f552118e2822085037099') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/ + make || return 1 +# installing executable + install -D -m755 ed ${pkgdir}/bin/ed + cd ${pkgdir}/bin + ln ed red +# installing man page + cd ${srcdir}/${pkgname}-${pkgver} + install -D -m644 doc/ed.1 ${pkgdir}/usr/share/man/man1/ed.1 + cd ${pkgdir}/usr/share/man/man1 + ln ed.1 red.1 +# installing info files + cd ${srcdir}/${pkgname}-${pkgver} + install -D -m644 doc/ed.info ${pkgdir}/usr/share/info/ed.info + cd ${pkgdir}/usr/share/info + ln ed.info red.info +} diff --git a/abs/core/ed/ed.install b/abs/core/ed/ed.install new file mode 100644 index 0000000..1a6e983 --- /dev/null +++ b/abs/core/ed/ed.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(ed.info red.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/esound/PKGBUILD b/abs/core/esound/PKGBUILD new file mode 100644 index 0000000..b157aab --- /dev/null +++ b/abs/core/esound/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 19662 2008-11-28 20:35:54Z jgc $ +# Maintainer: Jan de Groot +pkgname=esound +pkgver=0.2.41 +pkgrel=1 +pkgdesc="Enlightened Sound Daemon" +arch=(i686 x86_64) +license=('LGPL') +depends=('audiofile' 'tcp_wrappers' 'alsa-lib>=1.0.18') +url="http://www.tux.org/~ricdude/EsounD.html" +provides=("esd=${pkgver}") +replaces=('esd') +conflicts=('esd') +backup=('etc/esd.conf') +options=('!libtool') +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.2/${pkgname}-${pkgver}.tar.bz2 + esd-0.2.38-alsa-drain.patch + esd) +md5sums=('8d9aad3d94d15e0d59ba9dc0ea990c6c' + '3de93efcd1bc196a3585e6aef50eac48' + 'a4c76e7c7f75b201ea7ab6fb15b47472') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/esd-0.2.38-alsa-drain.patch" || return 1 + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --with-audiofile --with-libwrap \ + --enable-alsa --disable-artstest || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/etc/rc.d" + install -m755 "${srcdir}/esd" "${pkgdir}/etc/rc.d/esd" || return 1 +} diff --git a/abs/core/esound/esd b/abs/core/esound/esd new file mode 100755 index 0000000..d90ef55 --- /dev/null +++ b/abs/core/esound/esd @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/esd` +case "$1" in + start) + stat_busy "Starting Esound Daemon" + if [ -z "$PID" ]; then + /usr/bin/esd -nobeeps & + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon esd + stat_done + fi + ;; + stop) + stat_busy "Stopping Esound Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon esd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core/esound/esd-0.2.38-alsa-drain.patch b/abs/core/esound/esd-0.2.38-alsa-drain.patch new file mode 100644 index 0000000..f2fb716 --- /dev/null +++ b/abs/core/esound/esd-0.2.38-alsa-drain.patch @@ -0,0 +1,11 @@ +--- esound-0.2.38/audio_alsa09.c.old 2007-06-11 12:22:24.000000000 +0200 ++++ esound-0.2.38/audio_alsa09.c 2007-06-11 12:22:49.000000000 +0200 +@@ -486,7 +486,7 @@ void esd_audio_flush(void) + } + + if (alsa_playback_handle != NULL) +- snd_pcm_drain( alsa_playback_handle ); ++ snd_pcm_drop( alsa_playback_handle ); + + if (alsadbg) + print_state(); diff --git a/abs/core/etcnet/10-defaults b/abs/core/etcnet/10-defaults index 42a7879..3aeac58 100644 --- a/abs/core/etcnet/10-defaults +++ b/abs/core/etcnet/10-defaults @@ -1,6 +1,11 @@ DHCP_CLIENT=/sbin/dhcpcd +DHCP_ARGS=-L IP=/usr/sbin/ip TC=/usr/sbin/tc LSMOD=/bin/lsmod -IFGROUP[1]='eth wlan plip usb dvb bnep tuntap' +IFGROUP[1]='eth wlan plip usb dvb bnep tuntap ath0' +IFRENAME=/usr/sbin/ifrename +IPTABLES=/usr/sbin/iptables +IP6TABLES=/usr/sbin/ip6tables +AUTO_BROADCAST=on diff --git a/abs/core/etcnet/PKGBUILD b/abs/core/etcnet/PKGBUILD index 798213e..e9ac4f4 100755 --- a/abs/core/etcnet/PKGBUILD +++ b/abs/core/etcnet/PKGBUILD @@ -1,39 +1,37 @@ pkgname=etcnet -pkgver=0.9.7 -pkgrel=2 +pkgver=0.9.8 +pkgrel=13 pkgdesc="/etc/net network configuration subsystem" url="http://etcnet.org/" -depends=('bash' 'grep' 'sed' 'iproute' 'wireless_tools' 'iptables' 'dhcpcd') +depends=('bash' 'grep' 'sed' 'iproute2' 'wireless_tools' 'iptables' 'dhcpcd') arch=i686 install=etcnet.install source=(http://etcnet.org/files/$pkgname-$pkgver.tar.gz 10-defaults network functions.patch options ipv4route ipv4address ) +#backup=(etc/net/ifaces/eth0/options etc/net/ifaces/eth0/ipv4route etc/net/ifaces/eth0/ipv4address) build() { cd $startdir/src/$pkgname-$pkgver mkdir -p $startdir/pkg/var/lib/etcnet mkdir -p $startdir/pkg/etc/sysconfig - - - - - - #cp $startdir/src/functions.patch ./etc/net cd etc/net - patch -p0 < $startdir/src/functions.patch - - - install -D -m 644 $startdir/src/10-defaults $startdir/pkg/etc/net/options.d/10-defaults - install -D -m 644 $startdir/src/network $startdir/pkg/etc/sysconfig/network -# install -D -m 644 ../options $startdir/pkg/etc/net/ifaces/default/options + patch -p0 < $startdir/src/functions.patch || return 1 + + install -D -m 644 $startdir/src/10-defaults $startdir/pkg/etc/net/options.d/10-defaults + install -D -m 644 $startdir/src/network $startdir/pkg/etc/sysconfig/network + cp -rp $startdir/src/$pkgname-$pkgver/docs $startdir/pkg/etc/net + cp -rp $startdir/src/$pkgname-$pkgver/examples $startdir/pkg/etc/net -#setup default for eth0 + #setup default for eth0 mkdir -p $startdir/pkg/etc/net/ifaces/eth0 - cp $startdir/src/options $startdir/pkg/etc/net/ifaces/eth0/options - cp $startdir/src/ipv4route $startdir/pkg/etc/net/ifaces/eth0/ipv4route - cp $startdir/src/ipv4address $startdir/pkg/etc/net/ifaces/eth0/ipv4address +# cp $startdir/src/options $startdir/pkg/etc/net/ifaces/eth0/options +# cp $startdir/src/ipv4route $startdir/pkg/etc/net/ifaces/eth0/ipv4route +# cp $startdir/src/ipv4address $startdir/pkg/etc/net/ifaces/eth0/ipv4address cd $startdir/src/$pkgname-$pkgver rm -Rf etc/sysconfig etc/net/{README.ALT,TODO,ChangeLog,ifaces/unknown} cp -Rf etc $startdir/pkg + cd $startdir/pkg/etc/net/scripts + ln -s ifup-ifplugd ifup-wireless + ln -s ifdown-ifplugd ifdown-wireless } diff --git a/abs/core/etcnet/etcnet.install b/abs/core/etcnet/etcnet.install index 2605e95..f34629f 100755 --- a/abs/core/etcnet/etcnet.install +++ b/abs/core/etcnet/etcnet.install @@ -4,7 +4,11 @@ # arg 1: the new package version pre_install() { /bin/cp -Rf /etc/net /etc/net.pacsave >/dev/null 2>&1 - /bin/true + if [ ! -d /var/lock/subsys ] + then + mkdir -p /var/lock/subsys + fi + } # arg 1: the new package version @@ -17,13 +21,20 @@ post_install() { # arg 2: the old package version pre_upgrade() { /bin/cp -Rf /etc/net /etc/net.pacsave >/dev/null 2>&1 - /bin/true + if [ ! -d /var/lock/subsys ] + then + mkdir -p /var/lock/subsys + fi } # arg 1: the new package version # arg 2: the old package version post_upgrade() { - /bin/true + if [ -f /etc/net/ifaces/eth0/options.pacsave ] + then + systemconfig.py -m network + mv /etc/net/ifaces/eth0/options.pacsave /etc/net/ifaces/eth0/options.pacsave.orig + fi } # arg 1: the old package version diff --git a/abs/core/etcnet/functions.patch b/abs/core/etcnet/functions.patch index c2321b6..855ef90 100644 --- a/abs/core/etcnet/functions.patch +++ b/abs/core/etcnet/functions.patch @@ -1,12 +1,11 @@ ---- scripts/functions.orig 2008-09-02 03:10:21.000000000 +0000 -+++ scripts/functions 2008-09-02 03:10:49.000000000 +0000 -@@ -16,7 +16,8 @@ +--- scripts/functions.orig 2009-06-14 17:24:46.000000000 +0000 ++++ scripts/functions 2009-06-14 17:25:24.000000000 +0000 +@@ -16,7 +16,7 @@ DEFAULT_IFPLUGSTATUS=/usr/sbin/ifplugstatus DEFAULT_IFPLUGD=/usr/sbin/ifplugd DEFAULT_IWPRIV=/sbin/iwpriv -DEFAULT_IWCONFIG=/sbin/iwconfig -+#DEFAULT_IWCONFIG=/sbin/iwconfig +DEFAULT_IWCONFIG=/usr/sbin/iwconfig + DEFAULT_WLANCONFIG=/usr/sbin/wlanconfig DEFAULT_WPA_SUPPLICANT=/usr/sbin/wpa_supplicant DEFAULT_WPA_CLI=/usr/sbin/wpa_cli - DEFAULT_PLIPCONFIG=/sbin/plipconfig diff --git a/abs/core/eventlog/PKGBUILD b/abs/core/eventlog/PKGBUILD new file mode 100644 index 0000000..476dbad --- /dev/null +++ b/abs/core/eventlog/PKGBUILD @@ -0,0 +1,20 @@ + +pkgname=eventlog +pkgver=0.2.5 +pkgrel=2 +pkgdesc="A new API to format and send structured log messages" +arch=('i686' 'x86_64') +url="http://www.balabit.com/support/community/products/" +license=('BSD') +depends=('glibc') +options=('!libtool') +source=(http://www.balabit.com/downloads/files/eventlog/0.2/eventlog-$pkgver.tar.gz) +md5sums=('a6bdba91f88540cc69b398fd138d86cd') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE +} \ No newline at end of file diff --git a/abs/core/evieext/PKGBUILD b/abs/core/evieext/PKGBUILD new file mode 100644 index 0000000..0f7161a --- /dev/null +++ b/abs/core/evieext/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +#Maintainer: Jan de Groot + +pkgname=evieext +pkgver=1.0.2 +pkgrel=1 +pkgdesc="X11 Event Interception extension wire protocol" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2507b5d0f4b2848147fbddd155aa6cfe') +sha1sums=('1ab4048ffbfb6b69e88d2f0f2cab7ca60e50cc99') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/core/expect/PKGBUILD b/abs/core/expect/PKGBUILD index c8705c6..0f2f46b 100644 --- a/abs/core/expect/PKGBUILD +++ b/abs/core/expect/PKGBUILD @@ -3,10 +3,10 @@ pkgname=expect pkgver=5.44.1.4 -pkgrel=1 +pkgrel=2 pkgdesc="A tool for automating interactive applications" arch=(i686 x86_64) -depends=('tcl>=8.5.0') +depends=('tcl>=8.5.0' 'tk>=8.5.0') makedepends=('tk>=8.5.0') tcltkver=8.5.0 source=(ftp://ftp.archlinux.org/other/expect/expect-$pkgver.tar.bz2 diff --git a/abs/core/faad2/ChangeLog b/abs/core/faad2/ChangeLog index b4073ba..ed5548b 100644 --- a/abs/core/faad2/ChangeLog +++ b/abs/core/faad2/ChangeLog @@ -1,3 +1,15 @@ +2009-02-16 Eric Belanger + + * faad2 2.7-1 + * Upstream update + * Updated LICENSE file + * Compiled with -fPIC option + +2009-01-05 Eric Belanger + + * faad2 2.6.1-2 + * Applied security patch + 2008-07-19 Eric Belanger * faad2 2.6.1-1 diff --git a/abs/core/faad2/LICENSE b/abs/core/faad2/LICENSE index ecb2c75..a16abf6 100644 --- a/abs/core/faad2/LICENSE +++ b/abs/core/faad2/LICENSE @@ -1,19 +1,24 @@ -/* +__________ +COPYRIGHTS + +For FAAD2 the following license applies: + +****************************************************************************** ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding ** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com -** +** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. -** +** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. -** +** ** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software +** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** ** Any non-GPL usage of this software or parts of this software is strictly @@ -24,5 +29,14 @@ ** ** Commercial non-GPL licensing of this software is possible. ** For more info contact Nero AG through Mpeg4AAClicense@nero.com. -** -*/ +****************************************************************************** + + +Please note that the use of this software may require the payment of +patent royalties. You need to consider this issue before you start +building derivative works. We are not warranting or indemnifying you in +any way for patent royalities! YOU ARE SOLELY RESPONSIBLE FOR YOUR OWN +ACTIONS! + + +______ diff --git a/abs/core/faad2/PKGBUILD b/abs/core/faad2/PKGBUILD index 227cc3b..729d69b 100644 --- a/abs/core/faad2/PKGBUILD +++ b/abs/core/faad2/PKGBUILD @@ -1,45 +1,26 @@ -# $Id: PKGBUILD 5668 2008-07-20 05:06:05Z eric $ +# $Id: PKGBUILD 27494 2009-02-22 04:26:47Z eric $ # Maintainer: Eric Belanger # Contributor: Sarah Hay pkgname=faad2 -pkgver=2.6.1 +pkgver=2.7 pkgrel=1 pkgdesc="ISO AAC audio decoder" arch=('i686' 'x86_64') url="http://www.audiocoding.com/" license=('custom:GPL') depends=('glibc') -options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/faac/${pkgname}-${pkgver}.tar.gz - faad2-2.6.1-libtool22.patch - faad2-2.6.1-broken-pipe.patch - faad2-2.6.1-implicitdeclar.patch - faad2-2.6.1-abi_has_changed.patch - LICENSE) -md5sums=('74e92df40c270f216a8305fc87603c8a' 'ca9515b6617d7fd060d0d172616eb192'\ - 'bb6a345dd2e6c4df6609e6a374134066' 'bc43fd3f8cd582a8bc092b9b5e611865'\ - '06e83633c609d20436794b62a382b3dc' 'b6a1c72534807b8a038b71e784f57e32') -sha1sums=('b4ad33d3c4dfa6dbf3011a3da34c631926cabfad' - 'ca4ee04aa1757b8f9deeef52b5bf35dc823da844' - '0b03728f40d00e552f738900e2f6215177af5417' - 'd4ab5d38c9b75ed6417529c4d1a7ca204293c224' - 'f7e9d89fc551e0b61a7b7555749ed7a3129a4ce8' - '6225fd997671206f5222c4a86d9e092359552c43') +options=('!libtool' '!makeflags') +source=(http://downloads.sourceforge.net/sourceforge/faac/${pkgname}-${pkgver}.tar.bz2 LICENSE) +md5sums=('4c332fa23febc0e4648064685a3d4332' 'ec95f38142e14fb46c849503897a37a0') +sha1sums=('b0e80481d27ae9faf9e46c8c8dfb617a0adb91b5' '00edd9b30d8d5098b5e91c03c595d96a3bbe56fd') build() { - cd ${srcdir}/${pkgname} - patch -p1 < ../faad2-2.6.1-libtool22.patch || return 1 - patch -p1 < ../faad2-2.6.1-broken-pipe.patch || return 1 - patch -p1 < ../faad2-2.6.1-implicitdeclar.patch || return 1 - patch -p1 < ../faad2-2.6.1-abi_has_changed.patch || return 1 - - autoreconf -vif || return 1 + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr || return 1 - make || return 1 - make DESTDIR=${pkgdir} install || return 1 - install -m644 ${srcdir}/${pkgname}/common/mp4ff/mp4ff.h ${pkgdir}/usr/include/ || return 1 - install -m644 ${srcdir}/${pkgname}/common/mp4ff/mp4ff_int_types.h ${pkgdir}/usr/include/ || return 1 - install -m644 ${srcdir}/${pkgname}/common/mp4ff/.libs/*.a ${pkgdir}/usr/lib/ || return 1 + make CFLAGS="${CFLAGS} -fPIC" || return 1 + make DESTDIR=${pkgdir} manmdir=/usr/share/man/man1 install || return 1 + install -m644 common/mp4ff/mp4ff_int_types.h ${pkgdir}/usr/include/mp4ff_int_types.h || return 1 install -D -m644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 + mv ${pkgdir}/usr/share/man/man1/faad.man ${pkgdir}/usr/share/man/man1/faad.1 } diff --git a/abs/core/fam/PKGBUILD b/abs/core/fam/PKGBUILD new file mode 100644 index 0000000..e7f5e41 --- /dev/null +++ b/abs/core/fam/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 15741 2008-10-18 01:59:29Z allan $ +# Maintainer: Allan McRae +# Contributor: Tom Newsom +pkgname=fam +pkgver=2.7.0 +pkgrel=11 +pkgdesc="File Alteration Monitor - used by KDE, GNOME and others" +arch=('i686' 'x86_64') +license=('LGPL' 'GPL') +depends=('portmap') +url="http://oss.sgi.com/projects/fam/" +backup=(etc/fam/fam.conf) +options=('!makeflags') # Don't !libtool +source=(ftp://oss.sgi.com/projects/fam/download/stable/${pkgname}-${pkgver}.tar.gz + fam-2.7.0-dnotify.patch + fam-2.7.0-largefiles.patch + fam-2.7.0-noc++.patch + fam-2.7.0-gcc43.patch + include_fam_h.patch + fam) +md5sums=('1bf3ae6c0c58d3201afc97c6a4834e39' + '073d1763318344635ea316293390205c' + '47b41e0b0498793af004696a096d7da1' + '0274cd113d3dcb015653b5606c7714ac' + '13c14778038aa9601a27498448e855e0' + '2638b8ffacb9f03b6e438e08ea7b290a' + '45b648907ba1c7edec17fb544f1f4a13') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -Np1 -i ${srcdir}/fam-2.7.0-dnotify.patch || return 1 + patch -Np1 -i ${srcdir}/fam-2.7.0-largefiles.patch || return 1 + patch -Np0 -i ${srcdir}/include_fam_h.patch || return 1 + patch -Np1 -i ${srcdir}/fam-2.7.0-noc++.patch || return 1 + patch -Np1 -i ${srcdir}/fam-2.7.0-gcc43.patch || return 1 + + chmod 755 configure || return 1 + + autoheader || return 1 + aclocal || return 1 + automake -a -c || return 1 + autoconf || return 1 + libtoolize --copy --force || return 1 + + ./configure --prefix=/usr --sysconfdir=/etc/fam + make || return 1 + make DESTDIR=${pkgdir} install + install -D -m755 ../fam ${pkgdir}/etc/rc.d/fam +} diff --git a/abs/core/fam/fam b/abs/core/fam/fam new file mode 100755 index 0000000..3acceff --- /dev/null +++ b/abs/core/fam/fam @@ -0,0 +1,44 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/famd` +case "$1" in + start) + #Check for running portmap, start when not running + ck_daemon portmap && /etc/rc.d/portmap start + stat_busy "Starting File Alteration Monitor" + if [ ! -f /var/run/daemons/portmap ]; then + stat_fail + echo "ERROR: PORTMAP is not running" + exit 1 + fi + if [ -z "$PID" ]; then + /usr/sbin/famd -T 0 -c /etc/fam/fam.conf + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon fam + stat_done + fi + ;; + stop) + stat_busy "Stopping File Alteration Monitor" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon fam + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core/fam/fam-2.7.0-dnotify.patch b/abs/core/fam/fam-2.7.0-dnotify.patch new file mode 100644 index 0000000..1d8910e --- /dev/null +++ b/abs/core/fam/fam-2.7.0-dnotify.patch @@ -0,0 +1,975 @@ +--- fam-2.7.0/src/DNotify.c++ 2004-01-30 00:00:00.000000000 +0100 ++++ fam-2.7.0.dnotify/src/DNotify.c++ 2004-01-30 00:00:00.000000000 +0100 +@@ -0,0 +1,582 @@ ++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. ++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. ++// ++// This program is free software; you can redistribute it and/or modify it ++// under the terms of version 2 of the GNU General Public License as ++// published by the Free Software Foundation. ++// ++// This program is distributed in the hope that it would be useful, but ++// WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any ++// license provided herein, whether implied or otherwise, is limited to ++// this program in accordance with the express provisions of the GNU ++// General Public License. Patent licenses, if any, provided herein do not ++// apply to combinations of this program with other product or programs, or ++// any other product whatsoever. This program is distributed without any ++// warranty that the program is delivered free of the rightful claim of any ++// third person by way of infringement or the like. 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 the Free Software Foundation, Inc., 59 ++// Temple Place - Suite 330, Boston MA 02111-1307, USA. ++ ++#define _GNU_SOURCE ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "DNotify.h" ++ ++#include "Interest.h" ++#include "Log.h" ++#include "Scheduler.h" ++#include ++ ++ ++int DNotify::pipe_write_fd = -2; ++int DNotify::pipe_read_fd = -2; ++volatile sig_atomic_t DNotify::queue_overflowed = 0; ++volatile sig_atomic_t DNotify::queue_changed = 0; ++int DNotify::change_queue[QUEUESIZE]; ++volatile int DNotify::queue_head = 0; // Only modified by read handler ++volatile int DNotify::queue_tail = 0; // Only modified by signal handler ++DNotify::EventHandler DNotify::ehandler; ++ ++DNotify::DirWatch *DNotify::dir_hash[DIR_HASHSIZE]; ++DNotify::FileWatch *DNotify::file_hash[FILE_HASHSIZE]; ++ ++struct DNotify::FileWatch ++{ ++ DirWatch *dir_watch; ++ dev_t file_dev; ++ ino_t file_ino; ++ FileWatch *next; // The DirWatch.watches list ++ FileWatch *hash_link; ++}; ++ ++struct DNotify::DirWatch ++{ ++ int fd; ++ dev_t dir_dev; ++ ino_t dir_ino; ++ ++ DirWatch *hash_link; ++ FileWatch *watches; ++}; ++ ++struct DNotify::ChangeEventData ++{ ++ dev_t file_dev; ++ ino_t file_ino; ++}; ++ ++DNotify::DNotify(EventHandler h) ++{ ++ assert(ehandler == NULL); ++ ehandler = h; ++} ++ ++DNotify::~DNotify() ++{ ++ if (pipe_read_fd >= 0) ++ { ++ // Tell the scheduler. ++ ++ (void) Scheduler::remove_read_handler(pipe_read_fd); ++ ++ // Close the pipe. ++ ++ if (close(pipe_read_fd) < 0) ++ Log::perror("can't pipe read end"); ++ else ++ Log::debug("closed pipe read end"); ++ ++ if (close(pipe_write_fd) < 0) ++ Log::perror("can't pipe write end"); ++ else ++ Log::debug("closed pipe write end"); ++ pipe_read_fd = -1; ++ } ++ ehandler = NULL; ++} ++ ++void ++DNotify::overflow_signal_handler(int sig, siginfo_t *si, void *data) ++{ ++ char c = 'x'; ++ ++ { ++ char *str = "*************** overflow sigqueue ***********************\n"; ++ write (STDERR_FILENO, str, strlen(str)); ++ } ++ ++ if (!queue_overflowed) ++ { ++ queue_overflowed = 1; ++ // Trigger the read handler ++ write(pipe_write_fd, &c, 1); ++ } ++} ++ ++void ++DNotify::signal_handler(int sig, siginfo_t *si, void *data) ++{ ++ int left; ++ char c = 'x'; ++ ++ if (queue_head <= queue_tail) ++ left = (QUEUESIZE + queue_head) - queue_tail; ++ else ++ left = queue_head - queue_tail; ++ ++ // Must leave at least one item unused to see difference ++ // Betweeen empty and full ++ if (left <= 1) ++ { ++ queue_overflowed = 1; ++ { ++ char *str = "*************** overflow famqueue ****************\n"; ++ write (STDERR_FILENO, str, strlen(str)); ++ } ++ } ++ else ++ { ++ change_queue[queue_tail] = si->si_fd; ++ queue_tail = (queue_tail + 1) % QUEUESIZE; ++ } ++ ++ if (!queue_changed) ++ { ++ queue_changed = 1; ++ // Trigger the read handler ++ write(pipe_write_fd, &c, 1); ++ } ++} ++ ++bool ++DNotify::is_active() ++{ ++ if (pipe_read_fd == -2) ++ { ++ int filedes[2]; ++ int res; ++ ++ res = pipe (filedes); ++ if (res >= 0) ++ { Log::debug("opened pipe"); ++ pipe_read_fd = filedes[0]; ++ pipe_write_fd = filedes[1]; ++ ++ // Setup signal handler: ++ struct sigaction act; ++ ++ act.sa_sigaction = signal_handler; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = SA_SIGINFO; ++ sigaction(SIGRTMIN, &act, NULL); ++ ++ // When the RT queue overflows we get a SIGIO ++ act.sa_sigaction = overflow_signal_handler; ++ sigemptyset(&act.sa_mask); ++ sigaction(SIGIO, &act, NULL); ++ ++ (void) Scheduler::install_read_handler(pipe_read_fd, read_handler, NULL); ++ } ++ } ++ return pipe_read_fd >= 0; ++} ++ ++DNotify::DirWatch * ++DNotify::lookup_dirwatch (int fd) ++{ ++ DirWatch **p; ++ DirWatch *w; ++ ++ p = dir_hashchain (fd); ++ ++ while (*p) ++ { ++ w = *p; ++ ++ if (w->fd == fd) ++ return w; ++ ++ p = &w->hash_link; ++ } ++ ++ return *p; ++} ++ ++// This colud be made faster by using another hash table. ++// But it's not that bad, since it is only used by express/revoke ++DNotify::DirWatch * ++DNotify::lookup_dirwatch (dev_t dir_dev, ino_t dir_ino) ++{ ++ DirWatch *p; ++ int i; ++ ++ for (i=0;idir_dev == dir_dev && p->dir_ino == dir_ino) ++ return p; ++ ++ p = p->hash_link; ++ } ++ } ++ ++ return NULL; ++} ++ ++DNotify::FileWatch * ++DNotify::lookup_filewatch (dev_t dev, ino_t ino) ++{ ++ FileWatch **p; ++ FileWatch *w; ++ ++ p = file_hashchain (dev, ino); ++ ++ while (*p) ++ { ++ w = *p; ++ ++ if (w->file_dev == dev && w->file_ino == ino) ++ return w; ++ ++ p = &w->hash_link; ++ } ++ ++ return *p; ++} ++ ++// Make sure w is not already in the hash table before calling ++// this function. ++void ++DNotify::hash_dirwatch(DirWatch *w) ++{ ++ DirWatch **p; ++ p = dir_hashchain (w->fd); ++ w->hash_link = *p; ++ *p = w; ++} ++ ++// Make sure w is not already in the hash table before calling ++// this function. ++void ++DNotify::hash_filewatch(FileWatch *w) ++{ ++ FileWatch **p; ++ p = file_hashchain (w->file_dev, w->file_ino); ++ w->hash_link = *p; ++ *p = w; ++} ++ ++void ++DNotify::unhash_dirwatch(DirWatch *w) ++{ ++ DirWatch **p; ++ ++ p = dir_hashchain (w->fd); ++ ++ while (*p) ++ { ++ if (*p == w) ++ { ++ *p = w->hash_link; ++ break; ++ } ++ p = &(*p)->hash_link; ++ } ++ w->hash_link = NULL; ++} ++ ++void ++DNotify::unhash_filewatch(FileWatch *w) ++{ ++ FileWatch **p; ++ ++ p = file_hashchain (w->file_dev, w->file_ino); ++ ++ while (*p) ++ { ++ if (*p == w) ++ { ++ *p = w->hash_link; ++ break; ++ } ++ p = &(*p)->hash_link; ++ } ++ w->hash_link = NULL; ++} ++ ++DNotify::Status ++DNotify::watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino) ++{ ++ struct stat stat; ++ dev_t dir_dev; ++ ino_t dir_ino; ++ DirWatch *dwatch; ++ FileWatch *fw; ++ ++ if (lstat (notify_dir, &stat) == -1) ++ return BAD; ++ ++ dwatch = lookup_dirwatch(stat.st_dev, stat.st_ino); ++ if (!dwatch) ++ { ++ Log::debug ("New DirWatch for %s (%x %x)\n", ++ notify_dir, (int)stat.st_dev, (int)stat.st_ino); ++ dwatch = new DirWatch; ++ dwatch->watches = NULL; ++ dwatch->hash_link = NULL; ++ dwatch->dir_dev = stat.st_dev; ++ dwatch->dir_ino = stat.st_ino; ++ ++ dwatch->fd = open(notify_dir, O_RDONLY); ++ fcntl (dwatch->fd, F_SETSIG, SIGRTMIN); ++ if (fcntl (dwatch->fd, F_NOTIFY, ++ (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) ++ | DN_MULTISHOT) == -1) { ++ return BAD; ++ } ++ hash_dirwatch (dwatch); ++ } ++ ++ fw = lookup_filewatch (file_dev, file_ino); ++ if (fw && fw->dir_watch == dwatch) ++ return OK; ++ ++ // No old FileWatch, need to add one: ++ Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino); ++ fw = new FileWatch; ++ fw->next = dwatch->watches; ++ dwatch->watches = fw; ++ fw->file_dev = file_dev; ++ fw->file_ino = file_ino; ++ fw->dir_watch = dwatch; ++ hash_filewatch(fw); ++ return OK; ++} ++ ++char * ++dirname_dup (const char *name) ++{ ++ char *copy = strdup(name); ++ char *res = dirname(copy); ++ res = strdup(res); ++ free (copy); ++ return res; ++} ++ ++DNotify::Status ++DNotify::express(const char *name, struct stat *status) ++{ ++ struct stat stat; ++ char *notify_dir; ++ int res; ++ Status s; ++ dev_t dev; ++ ino_t ino; ++ ++ Log::debug("express() name: %s\n", name); ++ ++ if (!is_active()) ++ return BAD; ++ ++ if (::lstat (name, &stat) == -1) ++ return BAD; ++ ++ dev = stat.st_dev; ++ ino = stat.st_ino; ++ ++ if ((stat.st_mode & S_IFMT) != S_IFDIR) ++ notify_dir = dirname_dup (name); ++ else ++ notify_dir = (char *)name; ++ ++ s = watch_dir (notify_dir, dev, ino); ++ if (notify_dir != name) ++ free (notify_dir); ++ if (s) ++ return s; ++ ++ // Check for a race condition; if someone removed or changed the ++ // file at the same time that we are expressing interest in it, ++ // revoke the interest so we don't get notifications about changes ++ // to a recycled inode that we don't otherwise care about. ++ // ++ struct stat st; ++ if (status == NULL) { ++ status = &st; ++ } ++ if (::lstat(name, status) == -1) { ++ Log::perror("stat on \"%s\" failed", name); ++ revoke(name, stat.st_dev, stat.st_ino); ++ return BAD; ++ } ++ if (status->st_dev != stat.st_dev ++ || status->st_ino != stat.st_ino) { ++ Log::error("File \"%s\" changed between express and stat", ++ name); ++ revoke(name, stat.st_dev, stat.st_ino); ++ return BAD; ++ } ++ ++ Log::debug("told dnotify to monitor \"%s\" = dev %d/%d, ino %d", name, ++ major(status->st_dev), minor(status->st_dev), ++ status->st_ino); ++ return OK; ++} ++ ++DNotify::Status ++DNotify::revoke(const char *name, dev_t dev, ino_t ino) ++{ ++ FileWatch *fwatch; ++ DirWatch *dwatch; ++ ++ Log::debug("revoke() name: %s, dev: %x, ino: %x\n", name, dev, ino); ++ ++ if (!is_active()) ++ return BAD; ++ ++ // Lookup FileWatch by dev:ino, and its DirWatch. ++ fwatch = lookup_filewatch (dev, ino); ++ if (fwatch == NULL) ++ return BAD; ++ ++ dwatch = fwatch->dir_watch; ++ ++ // delete FileWatch, if last FileWatch: close fd, delete DirWatch ++ Log::debug ("Destroying FileWatch for (%x %x)\n", ++ (int)fwatch->file_dev, (int)fwatch->file_ino); ++ FileWatch **p; ++ for (p=&dwatch->watches; *p; p=&(*p)->next) ++ { ++ if (*p == fwatch) ++ { ++ *p = (*p)->next; ++ break; ++ } ++ } ++ unhash_filewatch(fwatch); ++ delete fwatch; ++ if (dwatch->watches == NULL) ++ { ++ Log::debug ("Destroying DirWatch for (%x %x)\n", ++ (int)dwatch->dir_dev, (int)dwatch->dir_ino); ++ close(dwatch->fd); ++ unhash_dirwatch(dwatch); ++ delete dwatch; ++ } ++ ++ return OK; ++} ++ ++ ++void ++DNotify::all_watches_changed(void) ++{ ++ int i; ++ FileWatch *fw; ++ ++ for (i=0; ifile_dev, fw->file_ino, CHANGE); ++ ++ fw = fw->hash_link; ++ } ++ } ++} ++ ++ ++void ++DNotify::read_handler(int fd, void *) ++{ ++ static char readbuf[5000]; ++ DirWatch *dw; ++ FileWatch *fw; ++ int snap_queue_tail; ++ int last_fd; ++ ++ int rc = read(fd, readbuf, sizeof readbuf); ++ queue_changed = 0; ++ if (rc < 0) ++ Log::perror("pipe read"); ++ else if (queue_overflowed) ++ { ++ // There is a *slight* race condition here. Between reading ++ // the queue_overflow flag and resetting it. But it doesn't ++ // matter, since I'm gonna handle the overflow after reseting ++ // anyway. ++ queue_overflowed = false; ++ ++ // We're soon gonna check all watches anyway, so ++ // get rid of the current queue ++ queue_head = queue_tail; ++ ++ all_watches_changed (); ++ } ++ else ++ { ++ // Don't read events that happen later than ++ // the initial read. (Otherwise skipping fd's ++ // might miss some changes). ++ snap_queue_tail = queue_tail; ++ last_fd = -1; ++ while (queue_head != snap_queue_tail) ++ { ++ fd = change_queue[queue_head]; ++ queue_head = (queue_head + 1) % QUEUESIZE; ++ ++ // Skip multiple changes to the same fd ++ if (fd != last_fd) ++ { ++ dw = lookup_dirwatch (fd); ++ if (dw) ++ { ++ int n_watches, i; ++ ChangeEventData *data; ++ ++ Log::debug("dnotify said dev %d/%d, ino %ld changed", ++ major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino); ++ ++ n_watches = 0; ++ for (fw=dw->watches; fw; fw=fw->next) ++ n_watches++; ++ ++ data = new ChangeEventData[n_watches]; ++ ++ i = 0; ++ for (fw=dw->watches; fw; fw=fw->next) ++ { ++ data[i].file_dev = fw->file_dev; ++ data[i].file_ino = fw->file_ino; ++ i++; ++ } ++ ++ for (i = 0; i < n_watches; i++) ++ { ++ (*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE); ++ } ++ ++ delete[] data; ++ } ++ } ++ last_fd = fd; ++ } ++ } ++} ++ +--- fam-2.7.0/src/DNotify.h 2004-01-30 00:00:00.000000000 +0100 ++++ fam-2.7.0.dnotify/src/DNotify.h 2004-01-30 00:00:00.000000000 +0100 +@@ -0,0 +1,98 @@ ++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. ++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. ++// ++// This program is free software; you can redistribute it and/or modify it ++// under the terms of version 2 of the GNU General Public License as ++// published by the Free Software Foundation. ++// ++// This program is distributed in the hope that it would be useful, but ++// WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any ++// license provided herein, whether implied or otherwise, is limited to ++// this program in accordance with the express provisions of the GNU ++// General Public License. Patent licenses, if any, provided herein do not ++// apply to combinations of this program with other product or programs, or ++// any other product whatsoever. This program is distributed without any ++// warranty that the program is delivered free of the rightful claim of any ++// third person by way of infringement or the like. 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 the Free Software Foundation, Inc., 59 ++// Temple Place - Suite 330, Boston MA 02111-1307, USA. ++ ++#ifndef DNotify_included ++#define DNotify_included ++ ++#include "config.h" ++#include "Monitor.h" ++#include ++ ++// DNotify is an object encapsulating the dnotify linux fcntl. ++// It "emulates" the IMon interface. ++// There can only be one instantiation of the DNotify object. ++// ++// The user of this object uses express() and revoke() to ++// express/revoke interest in a file. There is also ++// a callback, the EventHandler. When an dnotify event comes in, ++// the EventHandler is called. ++// ++// The user of the DNotify object is the Interest class. ++ ++class DNotify : public Monitor { ++public: ++ DNotify(EventHandler h); ++ ~DNotify(); ++ ++ static bool is_active(); ++ ++ virtual Status express(const char *name, struct stat *stat_return); ++ virtual Status revoke(const char *name, dev_t dev, ino_t ino); ++ ++private: ++ struct FileWatch; ++ struct DirWatch; ++ struct ChangeEventData; ++ ++ // Class Variables ++ enum { QUEUESIZE = 1024 }; ++ static int pipe_write_fd; ++ static int pipe_read_fd; ++ static int change_queue[QUEUESIZE]; ++ static volatile sig_atomic_t queue_overflowed; ++ static volatile sig_atomic_t queue_changed; ++ static volatile int queue_head; // Only modified by read handler ++ static volatile int queue_tail; // Only modified by signal handler ++ static EventHandler ehandler; ++ static void overflow_signal_handler(int sig, siginfo_t *si, void *data); ++ static void signal_handler(int sig, siginfo_t *si, void *data); ++ static void read_handler(int fd, void *closure); ++ ++ enum { DIR_HASHSIZE = 367 }; ++ static DirWatch *dir_hash[DIR_HASHSIZE]; ++ enum { FILE_HASHSIZE = 823 }; ++ static FileWatch *file_hash[FILE_HASHSIZE]; ++ ++ static DirWatch **dir_hashchain(int fd) ++ { return &dir_hash[(unsigned) (fd) % DIR_HASHSIZE]; } ++ static FileWatch **file_hashchain(dev_t d, ino_t i) ++ { return &file_hash[(unsigned) (d+i) % FILE_HASHSIZE]; } ++ ++ static DirWatch *lookup_dirwatch (int fd); ++ static DirWatch *lookup_dirwatch (dev_t dir_dev, ino_t dir_ino); ++ static FileWatch *lookup_filewatch (dev_t file_dev, ino_t file_ino); ++ static void hash_dirwatch(DirWatch *w); ++ static void hash_filewatch(FileWatch *w); ++ static void unhash_dirwatch(DirWatch *w); ++ static void unhash_filewatch(FileWatch *w); ++ static Status watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino); ++ ++ static void all_watches_changed(void); ++ ++ DNotify(const DNotify&); // Do not copy ++ DNotify & operator = (const DNotify&); // or assign. ++}; ++ ++#endif /* !IMon_included */ ++ ++ +--- fam-2.7.0/src/Interest.c++ 2004-01-30 00:00:00.000000000 +0100 ++++ fam-2.7.0.dnotify/src/Interest.c++ 2004-01-30 00:00:00.000000000 +0100 +@@ -42,12 +42,21 @@ + #include "Event.h" + #include "FileSystem.h" + #include "IMon.h" ++#include "DNotify.h" + #include "Log.h" + #include "Pollster.h" + #include "timeval.h" + + Interest *Interest::hashtable[]; +-IMon Interest::imon(imon_handler); ++ ++#ifdef USE_DNOTIFY ++static DNotify dnotify(Interest::monitor_handler); ++Monitor * Interest::monitor = &dnotify; ++#else ++static IMon imon(Interest::monitor_handler); ++Monitor * Interest::monitor = &imon; ++#endif ++ + bool Interest::xtab_verification = true; + + Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev) +@@ -60,10 +69,10 @@ + mypath_exported_to_host(ev == NO_VERIFY_EXPORTED) + { + memset(&old_stat, 0, sizeof(old_stat)); +- IMon::Status s = IMon::BAD; + +- s = imon.express(name, &old_stat); +- if (s != IMon::OK) ++ Monitor::Status s = Monitor::BAD; ++ s = monitor->express(name, &old_stat); ++ if (s != Monitor::OK) + { int rc = lstat(name, &old_stat); + if (rc < 0) + { Log::info("can't lstat %s", name); +@@ -100,7 +109,7 @@ + } + #endif + +- if (exported_to_host()) fs->ll_monitor(this, s == IMon::OK); ++ if (exported_to_host()) fs->ll_monitor(this, s == Monitor::OK); + } + + Interest::~Interest() +@@ -128,7 +137,7 @@ + pp = &p->hashlink; // move to next element + } + if (!found_same) +- (void) imon.revoke(name(), dev, ino); ++ (void) monitor->revoke(name(), dev, ino); + } + } + +@@ -147,7 +156,7 @@ + + // Express interest. + IMon::Status s = IMon::BAD; +- s = imon.express(name(), NULL); ++ s = monitor->express(name(), NULL); + if (s != IMon::OK) { + return true; + } +@@ -248,23 +257,23 @@ + } + + void +-Interest::imon_handler(dev_t device, ino_t inumber, int event) ++Interest::monitor_handler(dev_t device, ino_t inumber, int event) + { + assert(device || inumber); + + for (Interest *p = *hashchain(device, inumber), *next = p; p; p = next) + { next = p->hashlink; + if (p->ino == inumber && p->dev == device) +- { if (event == IMon::EXEC) ++ { if (event == Monitor::EXEC) + { p->cur_exec_state = EXECUTING; + (void) p->report_exec_state(); + } +- else if (event == IMon::EXIT) ++ else if (event == Monitor::EXIT) + { p->cur_exec_state = NOT_EXECUTING; + (void) p->report_exec_state(); + } + else +- { assert(event == IMon::CHANGE); ++ { assert(event == Monitor::CHANGE); + p->scan(); + } + } +--- fam-2.7.0/config.h.in 2003-01-20 01:40:15.000000000 +0100 ++++ fam-2.7.0.dnotify/config.h.in 2004-01-30 13:50:33.000000000 +0100 +@@ -180,3 +180,6 @@ + + /* Define to `int' if doesn't define. */ + #undef uid_t ++ ++/* Define to 1 if you have F_NOTIFY fcntl */ ++#undef USE_DNOTIFY +--- fam-2.7.0/configure.ac 2003-11-26 20:47:59.000000000 +0100 ++++ fam-2.7.0.dnotify/configure.ac 2004-01-30 13:50:33.000000000 +0100 +@@ -34,7 +34,26 @@ + AC_HEADER_DIRENT + AC_CHECK_HEADERS([fcntl.h limits.h linux/imon.h netinet/in.h rpc/rpc.h rpcsvc/mount.h stddef.h stdlib.h string.h syslog.h sys/imon.h sys/param.h sys/select.h sys/statvfs.h sys/syssgi.h sys/time.h sys/types.h sys/un.h unistd.h]) + +-if test "$have_sys_imon_h"; then ++# Test for the linux dnotify fcntl ++AC_MSG_CHECKING([for dnotify fcntl support]) ++AC_TRY_COMPILE([ ++#define _GNU_SOURCE ++#include ++#include ++], ++[ int fd = 1; ++ fcntl (fd, F_NOTIFY, (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) ++ |DN_MULTISHOT); ++], have_dnotify=yes, have_dnotify=no) ++ ++use_dnotify=false ++AC_MSG_RESULT($have_dnotify) ++ ++if test "$have_dnotify"; then ++ MONITOR_FUNCS=IMonNone ++ AC_DEFINE([USE_DNOTIFY], [], [Use dnotify]) ++ use_dnotify=true ++elif test "$have_sys_imon_h"; then + MONITOR_FUNCS=IMonIRIX + elif test "$have_linux_imon_h"; then + MONITOR_FUNCS=IMonLinux +@@ -42,6 +62,7 @@ + MONITOR_FUNCS=IMonNone + fi + AC_SUBST(MONITOR_FUNCS) ++AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify) + + # Checks for typedefs, structures, and compiler characteristics. + AC_HEADER_STDBOOL +--- fam-2.7.0/src/IMon.h 2004-01-30 00:00:00.000000000 +0200 ++++ fam-2.7.0.dnotify/src/IMon.h 2004-01-30 00:00:00.000000000 +0200 +@@ -24,10 +24,7 @@ + #define IMon_included + + #include "config.h" +-#include +-#include +- +-#include "Boolean.h" ++#include "Monitor.h" + + struct stat; + +@@ -41,25 +38,18 @@ + // + // The user of the IMon object is the Interest class. + +-class IMon { ++class IMon : public Monitor { + + public: +- +- enum Status { OK = 0, BAD = -1 }; +- enum Event { EXEC, EXIT, CHANGE }; +- +- typedef void (*EventHandler)(dev_t, ino_t, int event); +- + IMon(EventHandler h); + ~IMon(); + + static bool is_active(); + +- Status express(const char *name, struct stat *stat_return); +- Status revoke(const char *name, dev_t dev, ino_t ino); ++ virtual Status express(const char *name, struct stat *stat_return); ++ virtual Status revoke(const char *name, dev_t dev, ino_t ino); + + private: +- + // Class Variables + + static int imonfd; +--- fam-2.7.0/src/Interest.h 2004-01-30 00:00:00.000000000 +0200 ++++ fam-2.7.0.dnotify/src/Interest.h 2004-01-30 00:00:00.000000000 +0200 +@@ -32,7 +32,7 @@ + + class Event; + class FileSystem; +-class IMon; ++class Monitor; + struct stat; + + // Interest -- abstract base class for filesystem entities of interest. +@@ -74,7 +74,7 @@ + + // Public Class Method + +- static void imon_handler(dev_t, ino_t, int event); ++ static void monitor_handler(dev_t, ino_t, int event); + + static void enable_xtab_verification(bool enable); + +@@ -121,7 +121,7 @@ + + // Class Variables + +- static IMon imon; ++ static Monitor *monitor; + static Interest *hashtable[HASHSIZE]; + static bool xtab_verification; + +--- fam-2.7.0/src/Makefile.am 2003-01-19 13:00:17.000000000 +0100 ++++ fam-2.7.0.dnotify/src/Makefile.am 2004-01-30 13:50:38.000000000 +0100 +@@ -71,7 +71,11 @@ + main.c++ \ + timeval.c++ \ + timeval.h \ +- @MONITOR_FUNCS@.c++ ++ Monitor.h \ ++ DNotify.h \ ++ DNotify.c++ \ ++ @MONITOR_FUNCS@.c++ + +-EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ ++EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++ \ ++ DNotify.h Monitor.h + +--- fam-2.7.0/src/Monitor.h 2004-01-30 00:00:00.000000000 +0200 ++++ fam-2.7.0.dnotify/src/Monitor.h 2004-01-30 00:00:00.000000000 +0200 +@@ -0,0 +1,57 @@ ++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. ++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. ++// ++// This program is free software; you can redistribute it and/or modify it ++// under the terms of version 2 of the GNU General Public License as ++// published by the Free Software Foundation. ++// ++// This program is distributed in the hope that it would be useful, but ++// WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any ++// license provided herein, whether implied or otherwise, is limited to ++// this program in accordance with the express provisions of the GNU ++// General Public License. Patent licenses, if any, provided herein do not ++// apply to combinations of this program with other product or programs, or ++// any other product whatsoever. This program is distributed without any ++// warranty that the program is delivered free of the rightful claim of any ++// third person by way of infringement or the like. 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 the Free Software Foundation, Inc., 59 ++// Temple Place - Suite 330, Boston MA 02111-1307, USA. ++ ++#ifndef Monitor_included ++#define Monitor_included ++ ++#include "config.h" ++#include ++#include ++ ++struct stat; ++ ++// Monitor is an abstract baseclass for differend file monitoring ++// systems. The original system used was IMon, and the Montor API ++// is heavily influenced by that. ++// There can only be one instantiation of the Monitor object. ++// ++// The user of this object uses express() and revoke() to ++// express/revoke interest in a file to imon. There is also ++// a callback, the EventHandler. When an event comes in, ++// the EventHandler is called. ++// ++// The main implementers of the Monitor class is IMon and DNotify ++ ++class Monitor { ++public: ++ ++ enum Status { OK = 0, BAD = -1 }; ++ enum Event { EXEC, EXIT, CHANGE }; ++ ++ typedef void (*EventHandler)(dev_t, ino_t, int event); ++ ++ virtual Status express(const char *name, struct stat *stat_return) = 0; ++ virtual Status revoke(const char *name, dev_t dev, ino_t ino) = 0; ++}; ++ ++#endif /* !Monitor_included */ diff --git a/abs/core/fam/fam-2.7.0-gcc43.patch b/abs/core/fam/fam-2.7.0-gcc43.patch new file mode 100644 index 0000000..a5ba7f0 --- /dev/null +++ b/abs/core/fam/fam-2.7.0-gcc43.patch @@ -0,0 +1,46 @@ +diff -Naur fam-2.7.0-old/include/BTree.h fam-2.7.0/include/BTree.h +--- fam-2.7.0-old/include/BTree.h 2003-01-20 14:22:30.000000000 +1000 ++++ fam-2.7.0/include/BTree.h 2008-10-18 10:43:11.000000000 +1000 +@@ -23,6 +23,8 @@ + #ifndef BTree_included + #define BTree_included + ++#include ++ + #include "Boolean.h" + + // This is an in-core B-Tree implementation. +diff -Naur fam-2.7.0-old/src/DNotify.c++ fam-2.7.0/src/DNotify.c++ +--- fam-2.7.0-old/src/DNotify.c++ 2008-10-18 10:33:13.000000000 +1000 ++++ fam-2.7.0/src/DNotify.c++ 2008-10-18 10:41:22.000000000 +1000 +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include "DNotify.h" + +diff -Naur fam-2.7.0-old/src/IMon.c++ fam-2.7.0/src/IMon.c++ +--- fam-2.7.0-old/src/IMon.c++ 2003-01-19 00:18:12.000000000 +1000 ++++ fam-2.7.0/src/IMon.c++ 2008-10-18 10:40:21.000000000 +1000 +@@ -40,7 +40,7 @@ + #include "Interest.h" + #include "Log.h" + #include "Scheduler.h" +-#include "alloc.h" ++#include + + int IMon::imonfd = -2; + IMon::EventHandler IMon::ehandler = NULL; +diff -Naur fam-2.7.0-old/src/Interest.h fam-2.7.0/src/Interest.h +--- fam-2.7.0-old/src/Interest.h 2008-10-18 10:33:13.000000000 +1000 ++++ fam-2.7.0/src/Interest.h 2008-10-18 10:40:44.000000000 +1000 +@@ -23,6 +23,7 @@ + #ifndef Interest_included + #define Interest_included + ++#include + #include + #include + #include diff --git a/abs/core/fam/fam-2.7.0-largefiles.patch b/abs/core/fam/fam-2.7.0-largefiles.patch new file mode 100644 index 0000000..60de9a4 --- /dev/null +++ b/abs/core/fam/fam-2.7.0-largefiles.patch @@ -0,0 +1,8 @@ +--- fam-2.7.0/common.am 2003-01-19 06:09:08.000000000 -0600 ++++ fam-2.7.0.largefile/common.am 2005-01-12 19:08:06.462113110 -0600 +@@ -1,2 +1,5 @@ +-INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\" ++INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\" \ ++ -D_FILE_OFFSET_BITS=64 \ ++ -D_LARGEFILE64_SOURCE ++ diff --git a/abs/core/fam/fam-2.7.0-noc++.patch b/abs/core/fam/fam-2.7.0-noc++.patch new file mode 100644 index 0000000..9188af0 --- /dev/null +++ b/abs/core/fam/fam-2.7.0-noc++.patch @@ -0,0 +1,83 @@ +diff -ruN fam-2.7.0/lib/Client.c++ fam-2.7.0.noc++/lib/Client.c++ +--- fam-2.7.0/lib/Client.c++ 2003-01-18 14:18:12.000000000 +0000 ++++ fam-2.7.0.noc++/lib/Client.c++ 2006-03-02 22:47:50.000000000 +0000 +@@ -34,8 +34,6 @@ + #include + #include + +-#include +- + #include "fam.h" + #include "Client.h" + +@@ -440,3 +438,29 @@ + memcpy(l, p, sizeof(u_int32_t)); + *l = ntohl(*l); + } ++ ++/* Some C++ stuff needed when we not link to libstdc++ */ ++void *operator new (size_t sz) ++{ ++ void *ret = malloc (sz); ++ if (ret == NULL) ++ { ++ fputs ("libfam memory allocation failed\n", stderr); ++ } ++ return ret; ++} ++ ++void *operator new[] (size_t sz) ++{ ++ return ::operator new(sz); ++} ++ ++void operator delete (void *ptr) ++{ ++ free (ptr); ++} ++ ++void operator delete[] (void *ptr) ++{ ++ free (ptr); ++} +diff -ruN fam-2.7.0/lib/Makefile.am fam-2.7.0.noc++/lib/Makefile.am +--- fam-2.7.0/lib/Makefile.am 2003-01-19 01:55:10.000000000 +0000 ++++ fam-2.7.0.noc++/lib/Makefile.am 2006-03-02 22:43:01.000000000 +0000 +@@ -7,8 +7,11 @@ + Client.h \ + fam.c++ + +-libfam_la_LDFLAGS = -export-symbols fam.sym +-libfam_la_LIBADD = -lstdc++ ++libfam_la_LDFLAGS = -Wl,--version-script=fam.sym.version ++libfam_la_LIBADD = ++AM_CXXFLAGS = -fno-exceptions -fno-rtti ++ ++CXXLD=--tag=CC $(CXX) + + EXTRA_DIST = fam.sym + +diff -ruN fam-2.7.0/lib/fam.sym.version fam-2.7.0.noc++/lib/fam.sym.version +--- fam-2.7.0/lib/fam.sym.version 1970-01-01 00:00:00.000000000 +0000 ++++ fam-2.7.0.noc++/lib/fam.sym.version 2006-03-02 22:49:31.000000000 +0000 +@@ -0,0 +1,20 @@ ++{ ++ global: ++ FAMCancelMonitor; ++ FAMClose; ++ FAMDebugLevel; ++ FamErrlist; ++ FAMErrno; ++ FAMMonitorCollection; ++ FAMMonitorDirectory; ++ FAMMonitorDirectory2; ++ FAMMonitorFile; ++ FAMMonitorFile2; ++ FAMNextEvent; ++ FAMOpen; ++ FAMOpen2; ++ FAMPending; ++ FAMResumeMonitor; ++ FAMSuspendMonitor; ++ local: *; ++}; diff --git a/abs/core/fam/include_fam_h.patch b/abs/core/fam/include_fam_h.patch new file mode 100644 index 0000000..4248957 --- /dev/null +++ b/abs/core/fam/include_fam_h.patch @@ -0,0 +1,11 @@ +--- include/fam.h.orig 2005-05-25 09:26:38.000000000 +0000 ++++ include/fam.h 2005-05-25 09:27:04.000000000 +0000 +@@ -41,7 +41,7 @@ + *****************************************************************************/ + + /* For NAME_MAX - maximum # of chars in a filename */ +-#include "limits.h" ++#include + + + diff --git a/abs/core/fbsplash/PKGBUILD b/abs/core/fbsplash/PKGBUILD new file mode 100644 index 0000000..736da1f --- /dev/null +++ b/abs/core/fbsplash/PKGBUILD @@ -0,0 +1,56 @@ +# Maintainer: Greg Helton + +pkgname=fbsplash +pkgver=1.5.4.3 +pkgrel=15 +pkgdesc="A userspace implementation of a splash screen for Linux (formerly known as gensplash)" +arch=('i686' 'x86_64') +url="http://fbsplash.berlios.de" +license=('GPL') +backup=('etc/conf.d/fbsplash.conf' 'etc/conf.d/fbsplash.bootsteps') +makedepends=('klibc') +depends=('initscripts' 'miscsplashutils' 'libjpeg' 'libpng' 'freetype2-static' 'gpm' 'libmng' 'which' 'linhes-splash') +conflicts=('bootsplash' 'gensplash') +install=fbsplash.install +source=(http://download.berlios.de/fbsplash/splashutils-${pkgver}.tar.bz2 \ + http://code.thewrecker.net/files/darch.tar.bz2 \ + fbsplash.inithooks \ + splash-functions-arch.sh \ + fbsplash.conf \ + fbsplash.initcpio_install \ + fbsplash.daemon fbsplash.bootsteps) +build() { + cd ${startdir}/src/splashutils-${pkgver} + + # Configure, make, and install + ./configure --prefix=/usr --sysconfdir=/etc --enable-fbcondecor --with-gpm --with-mng --with-png --with-ttf --with-ttf-kernel + make || return 1 + cp -f ${startdir}/splash-functions.sh ${startdir}/src/splashutils-1.5.4.3/scripts/splash-functions.sh + make DESTDIR=${startdir}/pkg install || return 1 + + # Create directories + mkdir -p ${startdir}/pkg/lib/splash/cache + mkdir -p ${startdir}/pkg/etc/splash + mkdir -p ${startdir}/pkg/etc/rc.d/functions.d + + # Install scripts + install -D -m644 ${startdir}/src/fbsplash.initcpio_install ${startdir}/pkg/lib/initcpio/install/fbsplash + install -D -m644 ${startdir}/src/fbsplash.conf ${startdir}/pkg/etc/conf.d/fbsplash.conf + install -D -m744 ${startdir}/src/fbsplash.daemon ${startdir}/pkg/etc/rc.d/fbsplash + install -D -m744 ${startdir}/src/splash-functions-arch.sh ${startdir}/pkg/sbin/splash-functions-arch.sh + install -D -m755 $startdir/src/fbsplash.bootsteps ${startdir}/pkg/etc/conf.d/fbsplash.bootsteps + + # install darch fbsplash theme + cp -r ${startdir}/src/darch ${startdir}/pkg/etc/splash/darch + + # install initscripts hooks + install -D -m744 ${startdir}/src/fbsplash.inithooks ${startdir}/pkg/etc/rc.d/functions.d/fbsplash.sh + +} +md5sums=('c722cd4148817b9c50381d9bdc1ea6ef' + '4ea33e99330abf4a9a468ac8c0ba48ca' + '33b3c7c2050670db0e8b2efd9e088ed9' + '8ffb29400a2518b16f3dbca653855268' + '82ef6f37c2795db1b4fec0e6f8443c66' + '21380586a5dafbf7045886ea4374ab65' + 'bb5154529e4b5fbc701cf4540c15a61a') diff --git a/abs/core/fbsplash/__changelog b/abs/core/fbsplash/__changelog new file mode 100644 index 0000000..d673fc0 --- /dev/null +++ b/abs/core/fbsplash/__changelog @@ -0,0 +1,4 @@ +modify splash-functions to not use chvt for verbose +modify fbsplash.inithooks to not display "setting up splash" +added default value for fbsplash.bootsteps + diff --git a/abs/core/fbsplash/darch.tar.bz2 b/abs/core/fbsplash/darch.tar.bz2 new file mode 100644 index 0000000..0faab98 Binary files /dev/null and b/abs/core/fbsplash/darch.tar.bz2 differ diff --git a/abs/core/fbsplash/extra/encrypt_hook.patch b/abs/core/fbsplash/extra/encrypt_hook.patch new file mode 100644 index 0000000..f059048 --- /dev/null +++ b/abs/core/fbsplash/extra/encrypt_hook.patch @@ -0,0 +1,24 @@ +--- /lib/initcpio/hooks/encrypt 2008-09-12 12:29:38.000000000 -0400 ++++ encrypt.1 2008-10-28 08:13:34.000000000 -0400 +@@ -1,6 +1,7 @@ + # vim: set ft=sh: + # TODO this one needs some work to work with lots of different + # encryption schemes ++. /sbin/splash-functions.sh + run_hook () + { + /sbin/modprobe -a -q dm-crypt >/dev/null 2>&1 +@@ -59,6 +60,7 @@ run_hook () + fi + fi + # Ask for a passphrase ++ splash_verbose + if [ ${dopassphrase} -gt 0 ]; then + echo "" + echo "A password is required to access the ${cryptname} volume:" +@@ -119,4 +121,5 @@ run_hook () + fi + nuke ${ckeyfile} + fi ++ splash_silent + } diff --git a/abs/core/fbsplash/fbsplash.bootsteps b/abs/core/fbsplash/fbsplash.bootsteps new file mode 100644 index 0000000..7273c0f --- /dev/null +++ b/abs/core/fbsplash/fbsplash.bootsteps @@ -0,0 +1 @@ +25 diff --git a/abs/core/fbsplash/fbsplash.conf b/abs/core/fbsplash/fbsplash.conf new file mode 100644 index 0000000..ddd88f8 --- /dev/null +++ b/abs/core/fbsplash/fbsplash.conf @@ -0,0 +1,8 @@ +# +# fbsplash.conf +# + +THEMES="linhes" +SPLASH_TTYS="1 2 3 4 5 6" + +#EOF diff --git a/abs/core/fbsplash/fbsplash.daemon b/abs/core/fbsplash/fbsplash.daemon new file mode 100644 index 0000000..e615500 --- /dev/null +++ b/abs/core/fbsplash/fbsplash.daemon @@ -0,0 +1,56 @@ +#!/bin/bash + +source /etc/rc.conf +source /etc/rc.d/functions + +source /sbin/splash-functions.sh +source /etc/conf.d/fbsplash.conf + +case "$1" in + start) + if [ "$(fbcondecor_supported)" = "true" ] + then + THEME="linhes" + if [ -f /proc/cmdline ]; then + OPTIONS=$(grep -o 'splash=[^ ]*' /proc/cmdline) + for i in $(echo "${OPTIONS#*=}" | sed -e 's/,/ /g') + do + case ${i%:*} in + theme) THEME=${i#*:} ;; + esac + done + fi + stat_busy "Setting fbcondecor console images" + for TTY in ${SPLASH_TTYS}; do + fbcondecor_set_theme ${TTY} ${THEME} + done + stat_done + fi + save_boot_steps + splash_exit + ;; + + kill) + if [ "$(fbcondecor_supported)" = "true" ] + then + stat_busy "Disabling fbcondecor console images" + for TTY in ${SPLASH_TTYS}; do + fbcondecor_remove_theme ${TTY} + done + stat_done + fi + ;; + + restart) + $0 kill + sleep 1 + $1 start + ;; + + *) + echo "usage: $0 {start|restart|kill}" +esac +exit 0 + +#EOF + diff --git a/abs/core/fbsplash/fbsplash.initcpio_install b/abs/core/fbsplash/fbsplash.initcpio_install new file mode 100644 index 0000000..3fdd7e9 --- /dev/null +++ b/abs/core/fbsplash/fbsplash.initcpio_install @@ -0,0 +1,29 @@ + +install() { + [ -x /sbin/fbcondecor_helper ] || return 1 + + source /etc/conf.d/fbsplash.conf + [ -z "${THEME}" ] && THEME="linhes" + + add_binary "/sbin/fbcondecor_helper" + + add_device "/dev/null" c 1 3 + add_device "/dev/console" c 5 1 + add_device "/dev/tty0" c 4 0 + + for DIR in /dev /dev/fb /dev/misc /dev/vc /lib/splash/proc /lib/splash/sys + do + add_dir ${DIR} + done + + for THEME in ${THEMES} + do + add_full_dir "/etc/splash/${THEME}" + done +} + +help() { + echo "This hook includes Fbsplash in the initramfs image." +} + +#EOF diff --git a/abs/core/fbsplash/fbsplash.inithooks b/abs/core/fbsplash/fbsplash.inithooks new file mode 100644 index 0000000..c396b92 --- /dev/null +++ b/abs/core/fbsplash/fbsplash.inithooks @@ -0,0 +1,91 @@ +# fbsplash function.d script # +# Author: Greg Helton # + +# Who is calling? # +CALLER=$0 + +# splash stuff # +. /etc/conf.d/fbsplash.conf +. /sbin/splash-functions.sh + +# Redefine the stat functions # +stat_bkgd() { + printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} " + deltext + printf " ${C_OTHER}[${C_BKGD}BKGD${C_OTHER}]${C_CLEAR} " +} + +stat_busy() { + printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} " + printf "${SAVE_POSITION}" + deltext + printf " ${C_OTHER}[${C_BUSY}BUSY${C_OTHER}]${C_CLEAR} " + # This checks to see if we just brought up the lo interface in rc.sysinit # + # if so, start the progress bar # + if [ "${1}" == 'Bringing up loopback interface' ]; then + splash rc_init + fi + # Load variables # + var_load STEP_NR MAX_STEPS RC_MULTI RC_SYSINIT RC_SHUTDOWN + # Only update the splash progress if we're in sysinit, multi, or shutdown. # + if [[ "${SPLASH_RC_MULTI}" == "1" || "${SPLASH_RC_SYSINIT}" == "1" || "${SPLASH_RC_SHUTDOWN}" == "1" ]]; then + ((SPLASH_STEP_NR++)) + SPLASH_PROGRESS=$((100*${SPLASH_STEP_NR}/${SPLASH_MAX_STEPS})) + SPLASH_CURRENT_PROGRESS=${SPLASH_PROGRESS} + splash_update_progress ${SPLASH_PROGRESS} + var_save STEP_NR CURRENT_PROGRESS + fi + if [ "${SPLASH_RC_SHUTDOWN}" == "1" ]; then + save_shutdown_steps + fi + +} + +stat_done() { + deltext + printf " ${C_OTHER}[${C_DONE}DONE${C_OTHER}]${C_CLEAR} \n" +} + +stat_fail() { + deltext + printf " ${C_OTHER}[${C_FAIL}FAIL${C_OTHER}]${C_CLEAR} \n" + splash_verbose +} + +start_daemon() { + /etc/rc.d/$1 start +} + +# rc.sysinit # +if [ "$CALLER" == '/etc/rc.sysinit' ]; then +# echo "fbsplash: Setting up splash..." + splash_cache_prep + SPLASH_MAX_STEPS=$(load_boot_steps) + SPLASH_STEP_NR=0 + SPLASH_RC_MULTI=0 + SPLASH_RC_SYSINIT=1 + SPLASH_RC_SHUTDOWN=0 + var_save MAX_STEPS STEP_NR RC_MULTI RC_SYSINIT RC_SHUTDOWN +fi + +# rc.multi # +if [ "$CALLER" == '/etc/rc.multi' ]; then + SPLASH_RC_MULTI=1 + SPLASH_RC_SYSINIT=0 + var_save RC_MULTI RC_SYSINIT +fi + +# rc.shutdown # +if [ "$CALLER" == '/etc/rc.shutdown' ]; then +# echo "fbsplash: Setting up splash..." + splash_cache_prep + SPLASH_MAX_STEPS=$(load_shutdown_steps) + SPLASH_SHUTDOWN_STEPS=1 + SPLASH_STEP_NR=0 + SPLASH_RC_MULTI=0 + SPLASH_RC_SYSINIT=0 + SPLASH_RC_SHUTDOWN=1 + var_save MAX_STEPS STEP_NR RC_MULTI RC_SYSINIT RC_SHUTDOWN DAEMON_STEPS + splash rc_init +fi + diff --git a/abs/core/fbsplash/fbsplash.install b/abs/core/fbsplash/fbsplash.install new file mode 100644 index 0000000..2899857 --- /dev/null +++ b/abs/core/fbsplash/fbsplash.install @@ -0,0 +1,33 @@ + +post_install() { + echo ">" + echo "> ATTENTION!!!:" + echo "----------------------------------------------" + echo "> fbsplash has been rewritten and no longer depends " + echo "> on using a special initscripts. " + echo "> Please read http://wiki.archlinux.org/fbsplash " + echo "> for more details on the changes. " + echo "----------------------------------------------" + if ! [ -e /etc/conf.d/fbsplash.bootsteps ]; then + echo "" + echo "Creating step count files..." + echo "Note: The first boot's percentage will be wrong. " + echo "The scripts will update with the right steps after first boot" + echo "" + touch /etc/conf.d/fbsplash.bootsteps + touch /etc/conf.d/fbsplash.shutdownsteps + echo 25 > /etc/conf.d/fbsplash.bootsteps + echo 20 > /etc/conf.d/fbsplash.shutdownsteps + fi + echo 20 > /etc/conf.d/fbsplash.shutdownsteps +} + +post_upgrade() { + post_install +} + +op=$1 +shift +$op $* + +#EOF diff --git a/abs/core/fbsplash/splash-functions-arch.sh b/abs/core/fbsplash/splash-functions-arch.sh new file mode 100644 index 0000000..977ccef --- /dev/null +++ b/abs/core/fbsplash/splash-functions-arch.sh @@ -0,0 +1,71 @@ +# ArchLinux specific splash functions # +# Author: Greg Helton # + +splash_init() { + splash_setup + splash_start +} + +splash_exit() { + splash_comm_send "exit" + splash_cache_cleanup +} + +splash_update_progress() { + local PROGRESS + PROGRESS=$(($1*65535/100)) + splash_comm_send "progress ${PROGRESS}" + splash_comm_send "repaint" +} + +var_save() { +for i in $@ ; + do + local var + eval var=\$SPLASH_${i} + echo "SPLASH_$i=$(echo ${var})" > ${spl_cachedir}/${i} + done +} + +var_load() { +for i in $@ ; + do + local var + eval var=\$SPLASH_${i} + if [[ -z "$(echo ${var})" && -f ${spl_cachedir}/${i} ]] ; then + source ${spl_cachedir}/${i} + fi + done +} + +save_boot_steps() { + var_load STEP_NR + echo $SPLASH_STEP_NR > /etc/conf.d/fbsplash.bootsteps +} + +load_boot_steps() { + BOOT_STEPS=$(cat /etc/conf.d/fbsplash.bootsteps) + # Fail safe, so we don't divide by 0 + if [ $BOOT_STEPS = 0 ]; then + BOOT_STEPS=1 + fi + printf $BOOT_STEPS +} + +save_shutdown_steps() { + var_load SHUTDOWN_STEPS + ((SPLASH_SHUTDOWN_STEPS++)) + echo $SPLASH_SHUTDOWN_STEPS > /etc/conf.d/fbsplash.shutdownsteps + var_save SHUTDOWN_STEPS +} + +load_shutdown_steps() { + SHUTDOWN_STEPS=$(cat /etc/conf.d/fbsplash.shutdownsteps) + # Fail safe, so we don't divide by 0 + if [ $SHUTDOWN_STEPS = 0 ]; then + SHUTDOWN_STEPS=1 + fi + printf $SHUTDOWN_STEPS +} + +# EOF # diff --git a/abs/core/fbsplash/splash-functions.sh b/abs/core/fbsplash/splash-functions.sh new file mode 100644 index 0000000..1c17663 --- /dev/null +++ b/abs/core/fbsplash/splash-functions.sh @@ -0,0 +1,618 @@ +# Distributed under the terms of the GNU General Public License v2 + +# Author: Michal Januszewski +# Maintainer: Michal Januszewski + +# This file is a part of splashutils. The functions contained in this +# file are meant to be used by hook scripts in splash themes or by +# initscript systems. The code will be kept distro-agnostic to facilitate +# portability. It should also contain POSIX compatible code. No bashisms +# allowed! + +# #################################################################### +# Change any settings ONLY if you are sure what you're doing. +# Don't cry if it breaks afterwards. +# #################################################################### + +# The splash scripts need a cache which can be guaranteed to be +# both readable and writable at all times, even when the root fs +# is mounted read-only. To that end, an in-RAM fs is used. Valid +# values for spl_cachetype are 'tmpfs' and 'ramfs'. spl_cachesize +# is a size limit in KB, and it should probably be left with the +# default value. +export spl_cachesize="4096" +export spl_cachetype="tmpfs" +export spl_cachedir="//lib/splash/cache" +export spl_tmpdir="//lib/splash/tmp" +export spl_fifo="${spl_cachedir}/.splash" +export spl_pidfile="${spl_cachedir}/daemon.pid" +export spl_util="//bin/splash_util.static" +export spl_daemon="//sbin/fbsplashd.static" +export spl_decor="//sbin/fbcondecor_ctl.static" +export spl_bindir="//lib/splash/bin" + +# This is the main function which handles all events. +# Accepted parameters: +# svc_start +# svc_stop +# svc_started +# svc_stopped +# svc_start_failed +# svc_stop_failed +# svc_input_begin +# svc_input_end +# rc_init - used to distinguish between 'boot' and 'sysinit' +# rc_exit +# critical +splash() { + local event="$1" + shift + + # Reload the splash settings in rc_init. We could have set them wrong the + # first time splash_setup was called (when splash-functions.sh was first + # sourced) if /proc wasn't mounted. + if [ "${event}" = "rc_init" ]; then + splash_setup "force" + else + splash_setup + fi + + [ "${SPLASH_MODE_REQ}" = "off" ] && return + + # Prepare the cache here -- rc_init-pre might want to use it + if [ "${event}" = "rc_init" ]; then + if [ "${RUNLEVEL}" = "S" -a "$1" = "sysinit" ]; then + splash_cache_prep 'start' || return + elif [ "${RUNLEVEL}" = "6" -o "${RUNLEVEL}" = "0" ]; then + # Check if the splash cachedir is mounted readonly. If it is, + # we need to mount a tmpfs over it. + if ! touch "${spl_cachedir}/message" 2>/dev/null ; then + splash_cache_prep 'stop' || return + fi + fi + fi + + local args="" + + if [ "${event}" = "rc_init" -o "${event}" = "rc_exit" ]; then + args="$* ${RUNLEVEL}" + elif [ "${event}" = "svc_started" -o "${event}" = "svc_stopped" ]; then + if [ -z "$2" ]; then + # Backwards compatibility hack. Add a 0 to the arguments to simulate + # an error code. + args="$* 0" + else + args="$*" + + # Backwards compatibility: translate an error condition (non-zero + # error code) into an appropriate event. + if [ "$2" != "0" ]; then + if [ "${event}" = "svc_started" ]; then + event="svc_start_failed" + else + event="svc_stop_failed" + fi + fi + fi + else + args="$*" + fi + + splash_profile "pre ${event} ${args}" + + # Handle -pre event hooks + if [ -x "/etc/splash/${SPLASH_THEME}/scripts/${event}-pre" ]; then + /etc/splash/"${SPLASH_THEME}"/scripts/${event}-pre ${args} + fi + + case "$event" in + svc_start) splash_svc_start "$1";; + svc_stop) splash_svc_stop "$1";; + svc_started) splash_svc "$1" "start";; + svc_stopped) splash_svc "$1" "stop";; + svc_start_failed) splash_svc_fail "$1" "start";; + svc_stop_failed) splash_svc_fail "$1" "stop";; + svc_input_begin) splash_input_begin "$1";; + svc_input_end) splash_input_end "$1";; + rc_init) splash_init "$1" "${RUNLEVEL}";; + rc_exit) splash_exit "${RUNLEVEL}";; + critical) splash_verbose;; + esac + + splash_profile "post ${event} ${args}" + + # Handle -post event hooks + if [ -x "/etc/splash/${SPLASH_THEME}/scripts/${event}-post" ]; then + /etc/splash/"${SPLASH_THEME}"/scripts/${event}-post ${args} + fi + + return 0 +} + +splash_setup() { + # If it's already set up, let's not waste time on parsing the config + # files again + if [ "${SPLASH_THEME}" != "" -a "${SPLASH_TTY}" != "" -a "$1" != "force" ]; then + return 0 + fi + + export SPLASH_EFFECTS="" + export SPLASH_SANITY="" + export SPLASH_TEXTBOX="no" + export SPLASH_MODE_REQ="off" + export SPLASH_PROFILE="off" + export SPLASH_THEME="default" + export SPLASH_TTY="16" + export SPLASH_KDMODE="TEXT" + export SPLASH_AUTOVERBOSE="0" + export SPLASH_BOOT_MESSAGE="Booting the system (\$progress%)... Press F2 for verbose mode." + export SPLASH_SHUTDOWN_MESSAGE="Shutting down the system (\$progress%)... Press F2 for verbose mode." + export SPLASH_REBOOT_MESSAGE="Rebooting the system (\$progress%)... Press F2 for verbose mode." + export SPLASH_XSERVICE="xdm" + + [ -f /etc/splash/splash ] && . /etc/splash/splash + [ -f /etc/conf.d/splash ] && . /etc/conf.d/splash + [ -f /etc/conf.d/fbcondecor ] && . /etc/conf.d/fbcondecor + + if [ -f /proc/cmdline ]; then + options=$(grep -o 'splash=[^ ]*' /proc/cmdline) + + # Execute this loop over $options so that we can process multiple + # splash= arguments on the kernel command line. Useful for adjusting + # splash parameters from ISOLINUX. + for opt in ${options} ; do + options=${opt#*=} + + for i in $(echo "${options}" | sed -e 's/,/ /g') ; do + case ${i%:*} in + theme) SPLASH_THEME=${i#*:} ;; + tty) SPLASH_TTY=${i#*:} ;; + verbose) SPLASH_MODE_REQ="verbose" ;; + silent) SPLASH_MODE_REQ="silent" ;; + kdgraphics) SPLASH_KDMODE="GRAPHICS" ;; + profile) SPLASH_PROFILE="on" ;; + insane) SPLASH_SANITY="insane" ;; + esac + done + done + fi +} + +splash_get_boot_message() { + if [ "${RUNLEVEL}" = "6" ]; then + echo "${SPLASH_REBOOT_MESSAGE}" + elif [ "${RUNLEVEL}" = "0" ]; then + echo "${SPLASH_SHUTDOWN_MESSAGE}" + else + echo "${SPLASH_BOOT_MESSAGE}" + fi +} + +splash_start() { + if [ "${SPLASH_MODE_REQ}" = "verbose" ]; then + ${spl_decor} -c on 2>/dev/null + return 0 + elif [ "${SPLASH_MODE_REQ}" != "silent" ]; then + return 0 + fi + + # Display a warning if the system is not configured to display init messages + # on tty1. This can cause a lot of problems if it's not handled correctly, so + # we don't allow silent splash to run on incorrectly configured systems. + if [ "${SPLASH_MODE_REQ}" = "silent" -a "${SPLASH_SANITY}" != "insane" ]; then + if [ -z "$(grep -E '(^| )CONSOLE=/dev/tty1( |$)' /proc/cmdline)" -a \ + -z "$(grep -E '(^| )console=tty1( |$)' /proc/cmdline)" ]; then + clear + splash_warn "You don't appear to have a correct console= setting on your kernel" + splash_warn "command line. Silent splash will not be enabled. Please add" + splash_warn "console=tty1 or CONSOLE=/dev/tty1 to your kernel command line" + splash_warn "to avoid this message." + if [ -n "$(grep 'CONSOLE=/dev/tty1' /proc/cmdline)" -o \ + -n "$(grep 'console=tty1' /proc/cmdline)" ]; then + splash_warn "Note that CONSOLE=/dev/tty1 and console=tty1 are general parameters and" + splash_warn "not splash= settings." + fi + return 1 + fi + + if [ -n "$(grep -E '(^| )CONSOLE=/dev/tty1( |$)' /proc/cmdline)" ]; then + mount -n --bind / ${spl_tmpdir} + if [ ! -c "${spl_tmpdir}/dev/tty1" ]; then + umount -n ${spl_tmpdir} + splash_warn "The filesystem mounted on / doesn't contain the /dev/tty1 device" + splash_warn "which is required for the silent splash to function properly." + splash_warn "Silent splash will not be enabled. Please create the appropriate" + splash_warn "device node to avoid this message." + return 1 + fi + umount -n ${spl_tmpdir} + fi + fi + + rm -f "${spl_pidfile}" + + # Prepare the communications FIFO + rm -f "${spl_fifo}" 2>/dev/null + mkfifo "${spl_fifo}" + + local options="" + [ "${SPLASH_KDMODE}" = "GRAPHICS" ] && options="--kdgraphics" + [ -n "${SPLASH_EFFECTS}" ] && options="${options} --effects=${SPLASH_EFFECTS}" + [ "${SPLASH_TEXTBOX}" = "yes" ] && options="${options} --textbox" + + local ttype="bootup" + if [ "${RUNLEVEL}" = "6" ]; then + ttype="reboot" + elif [ "${RUNLEVEL}" = "0" ]; then + ttype="shutdown" + fi + + # Start the splash daemon + BOOT_MSG="$(splash_get_boot_message)" ${spl_daemon} --theme="${SPLASH_THEME}" --pidfile="${spl_pidfile}" --type=${ttype} ${options} + + # Set the silent TTY and boot message + splash_comm_send "set tty silent ${SPLASH_TTY}" + + if [ "${SPLASH_MODE_REQ}" = "silent" ]; then + splash_comm_send "set mode silent" + splash_comm_send "repaint" + ${spl_decor} -c on 2>/dev/null + fi + + splash_comm_send "set autoverbose ${SPLASH_AUTOVERBOSE}" + + splash_set_event_dev + + return 0 +} + +########################################################################### +# Cache-related functions +########################################################################### + +splash_cache_prep() { + # Mount an in-RAM filesystem at spl_cachedir + mount -ns -t "${spl_cachetype}" cachedir "${spl_cachedir}" \ + -o rw,mode=0644,size="${spl_cachesize}"k + + retval="$?" + + if [ ${retval} -ne 0 ]; then + splash_err "Unable to create splash cache - switching to verbose." + splash_verbose + return "${retval}" + fi +} + +# args: list of files to save when the cache is umounted +# Note that the 'profile' file is already handled and thus shouldn't +# be included in the list. +splash_cache_cleanup() { + # Don't try to clean anything up if the cachedir is not mounted. + [ -z "$(grep ${spl_cachedir} /proc/mounts)" ] && return; + + # Create the temp dir if necessary. + if [ ! -d "${spl_tmpdir}" ]; then + mkdir -p "${spl_tmpdir}" 2>/dev/null + [ "$?" != "0" ] && return + fi + + # Make sure the splash daemon is dead. + if [ -n "$(pgrep fbsplashd)" ]; then + sleep 1 + killall -9 "${spl_daemon##*/}" 2>/dev/null + fi + + # If /etc is not writable, don't update /etc/mtab. If it is + # writable, update it to avoid stale mtab entries (bug #121827). + local mntopt="" + [ -w /etc/mtab ] || mntopt="-n" + mount ${mntopt} --move "${spl_cachedir}" "${spl_tmpdir}" 2>/dev/null + + # Don't try to copy anything if the cachedir is not writable. + [ -w "${spl_cachedir}" ] || return + + if [ "${SPLASH_PROFILE}" != "off" ]; then + cp -a "${spl_tmpdir}/profile" "${spl_cachedir}" 2>/dev/null + fi + + while [ -n "$1" ]; do + cp -a "${spl_tmpdir}/$1" "${spl_cachedir}" 2>/dev/null + shift + done + + umount -l "${spl_tmpdir}" 2>/dev/null +} + +########################################################################### +# Common functions +########################################################################### + +# Sends data to the splash FIFO after making sure there's someone +# alive on the other end to receive it. +splash_comm_send() { + if [ -z "`pidof $(basename ${spl_daemon})`" ]; then + return 1 + else + splash_profile "comm $*" + echo "$*" > "${spl_fifo}" & + fi +} + +# Returns the current splash mode. +splash_get_mode() { + local ctty="${spl_bindir}/fgconsole" + local mode="$(${spl_util})" + + if [ "${mode}" = "silent" ]; then + echo "silent" + else + if [ -z "$(${spl_decor} -c getstate --tty=${ctty} 2>/dev/null | grep off)" ]; then + echo "verbose" + else + echo "off" + fi + fi +} + +# chvt +# -------- +# Switches to the n-th tty. +chvt() { + local ntty=$1 + +# if [ -x /usr/bin/chvt ] ; then +# /usr/bin/chvt ${ntty} +# else + printf "\e[12;${ntty}]" +# fi +} + +# Switches to verbose mode. +splash_verbose() { +# chvt 1 +/bin/true +} + +# Switches to silent mode. +splash_silent() { + splash_comm_send "set mode silent" +} + +# Saves profiling information +splash_profile() { + if [ "${SPLASH_PROFILE}" = "on" ]; then + echo "$(cat /proc/uptime | cut -f1 -d' '): $*" >> "${spl_cachedir}/profile" + fi +} + +# Set the input device if it exists. This will make it possible to use F2 to +# switch from verbose to silent. +splash_set_event_dev() { + local t="$(grep -Hsi keyboard /sys/class/input/input*/name | sed -e 's#.*input\([0-9]*\)/name.*#event\1#')" + if [ -z "${t}" ]; then + t="$(grep -Hsi keyboard /sys/class/input/event*/device/driver/description | grep -o 'event[0-9]\+')" + if [ -z "${t}" ]; then + for i in /sys/class/input/input* ; do + if [ "$((0x$(cat $i/capabilities/ev) & 0x100002))" = "1048578" ]; then + t="$(echo $i | sed -e 's#.*input\([0-9]*\)#event\1#')" + fi + done + + if [ -z "${t}" ]; then + # Try an alternative method of finding the event device. The idea comes + # from Bombadil . We're couting on the keyboard controller + # being the first device handled by kbd listed in input/devices. + t="$(/bin/grep -s -m 1 '^H: Handlers=kbd' /proc/bus/input/devices | grep -o 'event[0-9]*')" + fi + fi + fi + [ -n "${t}" ] && splash_comm_send "set event dev /dev/input/${t}" +} + +########################################################################### +# Service +########################################################################### + +# args: +splash_svc() { + local srv="$1" + local act="$2" + + if [ "${act}" = "start" ]; then + splash_svc_update "${srv}" "svc_started" + if [ "${srv}" = "gpm" ]; then + splash_comm_send "set gpm" + splash_comm_send "repaint" + fi + splash_comm_send "log Service '${srv}' started." + else + splash_svc_update "${srv}" "svc_stopped" + splash_comm_send "log Service '${srv}' stopped." + fi + + splash_update_progress "${srv}" +} + +# args: +splash_svc_fail() { + local srv="$1" + local act="$2" + + if [ "${SPLASH_VERBOSE_ON_ERRORS}" = "yes" ]; then + splash_verbose + return 1 + fi + + if [ "${act}" = "start" ]; then + splash_svc_update "${srv}" "svc_start_failed" + splash_comm_send "log Service '${srv}' failed to start." + else + splash_svc_update "${srv}" "svc_stop_failed" + splash_comm_send "log Service '${srv}' failed to stop." + fi + + splash_update_progress "${srv}" +} + +# args: +# +# Inform the splash daemon about service status changes. +splash_svc_update() { + splash_comm_send "update_svc $1 $2" +} + +# args: +splash_svc_start() { + local svc="$1" + + splash_svc_update "${svc}" "svc_start" + splash_comm_send "paint" +} + +# args: +splash_svc_stop() { + local svc="$1" + + splash_svc_update "${svc}" "svc_stop" + splash_comm_send "paint" +} + +# args: +splash_input_begin() { + local svc="$1" + + if [ "$(splash_get_mode)" = "silent" ]; then + splash_verbose + export SPL_SVC_INPUT_SILENT="${svc}" + fi +} + +# args: +splash_input_end() { + local svc="$1" + + if [ "${SPL_SVC_INPUT_SILENT}" = "${svc}" ]; then + splash_silent + unset SPL_SVC_INPUT_SILENT + fi +} + +########################################################################### +# Framebuffer Console Decorations functions +########################################################################### + +fbcondecor_supported() +{ + [ -e /dev/fbsplash -o -e /dev/fbcondecor ] +} + +# args: +fbcondecor_set_theme() +{ + local theme=$1 + local tty=$2 + + [ -x ${spl_decor} ] || return 1 + + ${spl_decor} --tty="${tty}" -t "${theme}" -c setcfg || return 1 + ${spl_decor} --tty="${tty}" -t "${theme}" -c setpic -q + ${spl_decor} --tty="${tty}" -c on +} + +########################################################################### +# Service list +########################################################################### + +# splash_svclist_get +# ------------------------- +# type: +# - start - to get a list of services to be started during bootup +# - stop - to get a list of services to be stopped during shutdown/reboot +splash_svclist_get() { + if [ "$1" = "start" -a -r "${spl_cachedir}/svcs_start" ]; then + cat "${spl_cachedir}/svcs_start" + elif [ "$1" = "stop" -a -r "${spl_cachedir}/svcs_stop" ]; then + cat "${spl_cachedir}/svcs_stop" + fi +} + +splash_warn() { + echo "$*" +} + +splash_err() { + echo "$*" +} + +############################################################################ +# Functions to be overridden by distro-specific code +########################################################################### + +# args: +# +# This function is called when an 'rc_init' event takes place, +# i.e. when the runlevel is changed. + +# It is normally used to initialize any internal splash-related +# variables (e.g. ones used to track the boot progress), calculate +# and save the service list and call `splash_start` in appropriate +# runlevels. +# +# Note that the splash cache is already intialized when this +# function is called. +splash_init() { + if [ "$2" = "6" -o "$2" = "0" -o "$2" = "S" -a "$1" = "sysinit" ]; then + splash_start + fi +} + +# args: +# +# This function is called when an 'rc_exit' event takes place, +# i.e. at the end of processes all initscript from a runlevel. +splash_exit() { + # If we're in sysinit or rebooting, do nothing. + [ "$1" = "S" -o "$1" = "6" -o "$1" = "0" ] && return 0 + + splash_comm_send "exit" + splash_cache_cleanup +} + +# args: +# +# This function is called whenever the progress variable should be +# updated. It should recalculate the progress and send it to the +# splash daemon. +splash_update_progress() { + # splash_comm_send "progress ${progress}" + # splash_comm_send "paint" + return +} + +# Export functions if we're running bash. +if [ -n "${BASH}" ]; then + export -f splash + export -f splash_setup + export -f splash_get_boot_message + export -f splash_start + export -f splash_cache_prep + export -f splash_cache_cleanup + export -f splash_comm_send + export -f splash_get_mode + export -f chvt + export -f splash_verbose + export -f splash_silent + export -f splash_profile + export -f splash_set_event_dev + export -f splash_svclist_get +fi + +# Load any supplementary splash functions. +for i in /sbin/splash-functions-*.sh ; do + [ -r "${i}" ] && . "${i}" +done + +splash_setup + +# vim:ts=4 diff --git a/abs/core/fcgi/PKGBUILD b/abs/core/fcgi/PKGBUILD new file mode 100644 index 0000000..e7cf3c5 --- /dev/null +++ b/abs/core/fcgi/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 12749 2008-09-19 13:48:16Z pierre $ +# Maintainer: tobias +# Modified by: eliott +# Original by Benjamin Andresen, klapmuetz [at] gmail [dot] com + +pkgname=fcgi +pkgver=2.4.0 +pkgrel=5 +depends=('gcc-libs') +pkgdesc="FASTCgi(fcgi) islanguage independent, high performant extension to CGI" +arch=(i686 x86_64) +license=('custom') +options=('!libtool') +url="http://www.fastcgi.com" +source=("http://www.fastcgi.com/dist/$pkgname-$pkgver.tar.gz" 'fcgi-configure.patch') +md5sums=('d15060a813b91383a9f3c66faf84867e' '4312cdf8ee47c9f8a276e7d892a18ea6') + +build() { + cd $startdir/src/$pkgname-$pkgver + # fix from Debian: http://ftp.debian.org/debian/pool/main/libf/libfcgi/libfcgi_2.4.0-7.diff.gz + patch -p1 -i ${srcdir}/fcgi-configure.patch || return 1 + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + install -Dm 644 LICENSE.TERMS \ + ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE +} diff --git a/abs/core/fcgi/fcgi-configure.patch b/abs/core/fcgi/fcgi-configure.patch new file mode 100644 index 0000000..0c4799a --- /dev/null +++ b/abs/core/fcgi/fcgi-configure.patch @@ -0,0 +1,53839 @@ +--- libfcgi-2.4.0.orig/depcomp ++++ libfcgi-2.4.0/depcomp +@@ -1,7 +1,10 @@ + #! /bin/sh +- + # depcomp - compile a program generating dependencies as side-effects +-# Copyright 1999, 2000 Free Software Foundation, Inc. ++ ++scriptversion=2006-10-15.18 ++ ++# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software ++# Foundation, Inc. + + # 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 +@@ -15,8 +18,8 @@ + + # 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. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++# 02110-1301, USA. + + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -25,13 +28,45 @@ + + # Originally written by Alexandre Oliva . + ++case $1 in ++ '') ++ echo "$0: No command. Try \`$0 --help' for more information." 1>&2 ++ exit 1; ++ ;; ++ -h | --h*) ++ cat <<\EOF ++Usage: depcomp [--help] [--version] PROGRAM [ARGS] ++ ++Run PROGRAMS ARGS to compile a file, generating dependencies ++as side-effects. ++ ++Environment variables: ++ depmode Dependency tracking mode. ++ source Source file read by `PROGRAMS ARGS'. ++ object Object file output by `PROGRAMS ARGS'. ++ DEPDIR directory where to store dependencies. ++ depfile Dependency file to output. ++ tmpdepfile Temporary file to use when outputing dependencies. ++ libtool Whether libtool is used (yes/no). ++ ++Report bugs to . ++EOF ++ exit $? ++ ;; ++ -v | --v*) ++ echo "depcomp $scriptversion" ++ exit $? ++ ;; ++esac ++ + if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 + fi +-# `libtool' can also be set to `yes' or `no'. + +-depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} ++# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. ++depfile=${depfile-`echo "$object" | ++ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} + tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + + rm -f "$tmpdepfile" +@@ -57,7 +92,20 @@ + ## gcc 3 implements dependency tracking that does exactly what + ## we want. Yay! Note: for some reason libtool 1.4 doesn't like + ## it if -MD -MP comes after the -MF stuff. Hmm. +- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" ++## Unfortunately, FreeBSD c89 acceptance of flags depends upon ++## the command line argument order; so add the flags where they ++## appear in depend2.am. Note that the slowdown incurred here ++## affects only configure: in makefiles, %FASTDEP% shortcuts this. ++ for arg ++ do ++ case $arg in ++ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; ++ *) set fnord "$@" "$arg" ;; ++ esac ++ shift # fnord ++ shift # $arg ++ done ++ "$@" + stat=$? + if test $stat -eq 0; then : + else +@@ -163,19 +211,25 @@ + + aix) + # The C for AIX Compiler uses -M and outputs the dependencies +- # in a .u file. This file always lives in the current directory. +- # Also, the AIX compiler puts `$object:' at the start of each line; +- # $object doesn't have directory information. +- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` ++ # in a .u file. In older versions, this file always lives in the ++ # current directory. Also, the AIX compiler puts `$object:' at the ++ # start of each line; $object doesn't have directory information. ++ # Version 6 uses the directory in both cases. ++ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" +- outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi +- + stat=$? ++ ++ if test -f "$tmpdepfile"; then : ++ else ++ stripped=`echo "$stripped" | sed 's,^.*/,,'` ++ tmpdepfile="$stripped.u" ++ fi ++ + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" +@@ -183,6 +237,7 @@ + fi + + if test -f "$tmpdepfile"; then ++ outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. +@@ -197,37 +252,136 @@ + rm -f "$tmpdepfile" + ;; + ++icc) ++ # Intel's C compiler understands `-MD -MF file'. However on ++ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c ++ # ICC 7.0 will fill foo.d with something like ++ # foo.o: sub/foo.c ++ # foo.o: sub/foo.h ++ # which is wrong. We want: ++ # sub/foo.o: sub/foo.c ++ # sub/foo.o: sub/foo.h ++ # sub/foo.c: ++ # sub/foo.h: ++ # ICC 7.1 will output ++ # foo.o: sub/foo.c sub/foo.h ++ # and will wrap long lines using \ : ++ # foo.o: sub/foo.c ... \ ++ # sub/foo.h ... \ ++ # ... ++ ++ "$@" -MD -MF "$tmpdepfile" ++ stat=$? ++ if test $stat -eq 0; then : ++ else ++ rm -f "$tmpdepfile" ++ exit $stat ++ fi ++ rm -f "$depfile" ++ # Each line is of the form `foo.o: dependent.h', ++ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. ++ # Do two passes, one to just change these to ++ # `$object: dependent.h' and one to simply `dependent.h:'. ++ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" ++ # Some versions of the HPUX 10.20 sed can't process this invocation ++ # correctly. Breaking it into two sed invocations is a workaround. ++ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | ++ sed -e 's/$/ :/' >> "$depfile" ++ rm -f "$tmpdepfile" ++ ;; ++ ++hp2) ++ # The "hp" stanza above does not work with aCC (C++) and HP's ia64 ++ # compilers, which have integrated preprocessors. The correct option ++ # to use with these is +Maked; it writes dependencies to a file named ++ # 'foo.d', which lands next to the object file, wherever that ++ # happens to be. ++ # Much of this is similar to the tru64 case; see comments there. ++ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` ++ test "x$dir" = "x$object" && dir= ++ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` ++ if test "$libtool" = yes; then ++ tmpdepfile1=$dir$base.d ++ tmpdepfile2=$dir.libs/$base.d ++ "$@" -Wc,+Maked ++ else ++ tmpdepfile1=$dir$base.d ++ tmpdepfile2=$dir$base.d ++ "$@" +Maked ++ fi ++ stat=$? ++ if test $stat -eq 0; then : ++ else ++ rm -f "$tmpdepfile1" "$tmpdepfile2" ++ exit $stat ++ fi ++ ++ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" ++ do ++ test -f "$tmpdepfile" && break ++ done ++ if test -f "$tmpdepfile"; then ++ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" ++ # Add `dependent.h:' lines. ++ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" ++ else ++ echo "#dummy" > "$depfile" ++ fi ++ rm -f "$tmpdepfile" "$tmpdepfile2" ++ ;; ++ + tru64) +- # The Tru64 AIX compiler uses -MD to generate dependencies as a side ++ # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. +- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put ++ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. ++ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` ++ test "x$dir" = "x$object" && dir= ++ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + +- tmpdepfile1="$object.d" +- tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` + if test "$libtool" = yes; then ++ # With Tru64 cc, shared objects can also be used to make a ++ # static library. This mechanism is used in libtool 1.4 series to ++ # handle both shared and static libraries in a single compilation. ++ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. ++ # ++ # With libtool 1.5 this exception was removed, and libtool now ++ # generates 2 separate objects for the 2 libraries. These two ++ # compilations output dependencies in $dir.libs/$base.o.d and ++ # in $dir$base.o.d. We have to check for both files, because ++ # one of the two compilations can be disabled. We should prefer ++ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is ++ # automatically cleaned when .libs/ is deleted, while ignoring ++ # the former would cause a distcleancheck panic. ++ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 ++ tmpdepfile2=$dir$base.o.d # libtool 1.5 ++ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 ++ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else ++ tmpdepfile1=$dir$base.o.d ++ tmpdepfile2=$dir$base.d ++ tmpdepfile3=$dir$base.d ++ tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else +- rm -f "$tmpdepfile1" "$tmpdepfile2" ++ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + +- if test -f "$tmpdepfile1"; then +- tmpdepfile="$tmpdepfile1" +- else +- tmpdepfile="$tmpdepfile2" +- fi ++ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" ++ do ++ test -f "$tmpdepfile" && break ++ done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" +- # That's a space and a tab in the []. +- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" ++ # That's a tab and a space in the []. ++ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi +@@ -240,34 +394,42 @@ + + dashmstdout) + # Important note: in order to support this mode, a compiler *must* +- # always write the proprocessed file to stdout, regardless of -o, +- # because we must use -o when running libtool. +- test -z "$dashmflag" && dashmflag=-M +- ( IFS=" " +- case " $* " in +- *" --mode=compile "*) # this is libtool, let us make it quiet +- for arg +- do # cycle over the arguments +- case "$arg" in +- "--mode=compile") +- # insert --quiet before "--mode=compile" +- set fnord "$@" --quiet +- shift # fnord +- ;; +- esac +- set fnord "$@" "$arg" +- shift # fnord +- shift # "$arg" +- done ++ # always write the preprocessed file to stdout, regardless of -o. ++ "$@" || exit $? ++ ++ # Remove the call to Libtool. ++ if test "$libtool" = yes; then ++ while test $1 != '--mode=compile'; do ++ shift ++ done ++ shift ++ fi ++ ++ # Remove `-o $object'. ++ IFS=" " ++ for arg ++ do ++ case $arg in ++ -o) ++ shift ++ ;; ++ $object) ++ shift ++ ;; ++ *) ++ set fnord "$@" "$arg" ++ shift # fnord ++ shift # $arg + ;; + esac +- "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi ++ done ++ ++ test -z "$dashmflag" && dashmflag=-M ++ # Require at least two characters before searching for `:' ++ # in the target name. This is to cope with DOS-style filenames: ++ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. ++ "$@" $dashmflag | ++ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +@@ -285,36 +447,40 @@ + ;; + + makedepend) +- # X makedepend +- ( +- shift +- cleared=no +- for arg in "$@"; do +- case $cleared in no) +- set ""; shift +- cleared=yes +- esac +- case "$arg" in +- -D*|-I*) +- set fnord "$@" "$arg"; shift;; +- -*) +- ;; +- *) +- set fnord "$@" "$arg"; shift;; +- esac ++ "$@" || exit $? ++ # Remove any Libtool call ++ if test "$libtool" = yes; then ++ while test $1 != '--mode=compile'; do ++ shift + done +- obj_suffix="`echo $object | sed 's/^.*\././'`" +- touch "$tmpdepfile" +- ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi ++ shift ++ fi ++ # X makedepend ++ shift ++ cleared=no ++ for arg in "$@"; do ++ case $cleared in ++ no) ++ set ""; shift ++ cleared=yes ;; ++ esac ++ case "$arg" in ++ -D*|-I*) ++ set fnord "$@" "$arg"; shift ;; ++ # Strip any option that makedepend may not understand. Remove ++ # the object too, otherwise makedepend will parse it as a source file. ++ -*|$object) ++ ;; ++ *) ++ set fnord "$@" "$arg"; shift ;; ++ esac ++ done ++ obj_suffix="`echo $object | sed 's/^.*\././'`" ++ touch "$tmpdepfile" ++ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" +- tail +3 "$tmpdepfile" | tr ' ' ' ++ sed '1,2d' "$tmpdepfile" | tr ' ' ' + ' | \ + ## Some versions of the HPUX 10.20 sed can't process this invocation + ## correctly. Breaking it into two sed invocations is a workaround. +@@ -324,35 +490,40 @@ + + cpp) + # Important note: in order to support this mode, a compiler *must* +- # always write the proprocessed file to stdout, regardless of -o, +- # because we must use -o when running libtool. +- ( IFS=" " +- case " $* " in +- *" --mode=compile "*) +- for arg +- do # cycle over the arguments +- case $arg in +- "--mode=compile") +- # insert --quiet before "--mode=compile" +- set fnord "$@" --quiet +- shift # fnord +- ;; +- esac +- set fnord "$@" "$arg" +- shift # fnord +- shift # "$arg" +- done ++ # always write the preprocessed file to stdout. ++ "$@" || exit $? ++ ++ # Remove the call to Libtool. ++ if test "$libtool" = yes; then ++ while test $1 != '--mode=compile'; do ++ shift ++ done ++ shift ++ fi ++ ++ # Remove `-o $object'. ++ IFS=" " ++ for arg ++ do ++ case $arg in ++ -o) ++ shift ++ ;; ++ $object) ++ shift ++ ;; ++ *) ++ set fnord "$@" "$arg" ++ shift # fnord ++ shift # $arg + ;; + esac +- "$@" -E | +- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | ++ done ++ ++ "$@" -E | ++ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ ++ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" +@@ -362,34 +533,27 @@ + + msvisualcpp) + # Important note: in order to support this mode, a compiler *must* +- # always write the proprocessed file to stdout, regardless of -o, ++ # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. +- ( IFS=" " +- case " $* " in +- *" --mode=compile "*) +- for arg +- do # cycle over the arguments +- case $arg in +- "--mode=compile") +- # insert --quiet before "--mode=compile" +- set fnord "$@" --quiet +- shift # fnord +- ;; +- esac ++ "$@" || exit $? ++ IFS=" " ++ for arg ++ do ++ case "$arg" in ++ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") ++ set fnord "$@" ++ shift ++ shift ++ ;; ++ *) + set fnord "$@" "$arg" +- shift # fnord +- shift # "$arg" +- done +- ;; ++ shift ++ shift ++ ;; + esac +- "$@" -E | +- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" +- ) & +- proc=$! +- "$@" +- stat=$? +- wait "$proc" +- if test "$stat" != 0; then exit $stat; fi ++ done ++ "$@" -E | ++ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" +@@ -409,3 +573,12 @@ + esac + + exit 0 ++ ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/aclocal.m4 ++++ libfcgi-2.4.0/aclocal.m4 +@@ -1,7 +1,7 @@ +-# aclocal.m4 generated automatically by aclocal 1.5 ++# generated automatically by aclocal 1.10 -*- Autoconf -*- + +-# Copyright 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -11,4434 +11,7446 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-dnl $Id: acinclude.m4,v 1.2 2001/12/21 03:12:50 robs Exp $ ++m4_if(m4_PACKAGE_VERSION, [2.61],, ++[m4_fatal([this file was generated for autoconf 2.61. ++You have another version of autoconf. If you want to use that, ++you should regenerate the build system entirely.], [63])]) + +-AC_DEFUN(FCGI_COMMON_CHECKS, [ +- AC_CHECK_TYPE([ssize_t], [int]) ++# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +- AC_MSG_CHECKING([for sun_len in sys/un.h]) +- AC_EGREP_HEADER([sun_len], [sys/un.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_SOCKADDR_UN_SUN_LEN], [1], +- [Define if sockaddr_un in sys/un.h contains a sun_len component])], +- AC_MSG_RESULT([no])) +- +- AC_MSG_CHECKING([for fpos_t in stdio.h]) +- AC_EGREP_HEADER([fpos_t], [stdio.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_FPOS], [1], +- [Define if the fpos_t typedef is in stdio.h])], +- AC_MSG_RESULT([no])) +- +- AC_CHECK_HEADERS([sys/socket.h netdb.h netinet/in.h arpa/inet.h]) +- AC_CHECK_HEADERS([sys/time.h limits.h sys/param.h unistd.h]) +- +- AC_MSG_CHECKING([for a fileno() prototype in stdio.h]) +- AC_EGREP_HEADER([fileno], [stdio.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_FILENO_PROTO], [1], +- [Define if there's a fileno() prototype in stdio.h])], +- AC_MSG_RESULT([no])) +- +- if test "$HAVE_SYS_SOCKET_H"; then +- AC_MSG_CHECKING([for socklen_t in sys/socket.h]) +- AC_EGREP_HEADER([socklen_t], [sys/socket.h], +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_SOCKLEN], [1], +- [Define if the socklen_t typedef is in sys/socket.h])], +- AC_MSG_RESULT([no])) +- fi ++# serial 51 Debian 1.5.24-1 AC_PROG_LIBTOOL + +- #-------------------------------------------------------------------- +- # Do we need cross-process locking on this platform? +- #-------------------------------------------------------------------- +- AC_MSG_CHECKING([whether cross-process locking is required by accept()]) +- case "`uname -sr`" in +- IRIX\ 5.* | SunOS\ 5.* | UNIX_System_V\ 4.0) +- AC_MSG_RESULT([yes]) +- AC_DEFINE([USE_LOCKING], [1], +- [Define if cross-process locking is required by accept()]) +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac + +- #-------------------------------------------------------------------- +- # Does va_arg(arg, long double) crash the compiler? +- # hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler) +- #-------------------------------------------------------------------- +- AC_MSG_CHECKING([whether va_arg(arg, long double) crashes the compiler]) +- AC_TRY_COMPILE([#include ], +- [long double lDblArg; va_list arg; lDblArg = va_arg(arg, long double);], +- AC_MSG_RESULT([no]), +- [AC_MSG_RESULT([yes]) +- AC_DEFINE([HAVE_VA_ARG_LONG_DOUBLE_BUG], [1], +- [Define if va_arg(arg, long double) crashes the compiler])]) ++# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) ++# ----------------------------------------------------------- ++# If this macro is not defined by Autoconf, define it here. ++m4_ifdef([AC_PROVIDE_IFELSE], ++ [], ++ [m4_define([AC_PROVIDE_IFELSE], ++ [m4_ifdef([AC_PROVIDE_$1], ++ [$2], [$3])])]) + +- AC_C_CONST +-]) + ++# AC_PROG_LIBTOOL ++# --------------- ++AC_DEFUN([AC_PROG_LIBTOOL], ++[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl ++dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX ++dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. ++ AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [AC_LIBTOOL_CXX], ++ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ++ ])]) ++dnl And a similar setup for Fortran 77 support ++ AC_PROVIDE_IFELSE([AC_PROG_F77], ++ [AC_LIBTOOL_F77], ++ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ++])]) ++ ++dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. ++dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run ++dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. ++ AC_PROVIDE_IFELSE([AC_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [ifdef([AC_PROG_GCJ], ++ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ++ ifdef([A][M_PROG_GCJ], ++ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ++ ifdef([LT_AC_PROG_GCJ], ++ [define([LT_AC_PROG_GCJ], ++ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ++])])# AC_PROG_LIBTOOL ++ ++ ++# _AC_PROG_LIBTOOL ++# ---------------- ++AC_DEFUN([_AC_PROG_LIBTOOL], ++[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +-dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +-dnl +-dnl This macro figures out how to build C programs using POSIX +-dnl threads. It sets the PTHREAD_LIBS output variable to the threads +-dnl library and linker flags, and the PTHREAD_CFLAGS output variable +-dnl to any special C compiler flags that are needed. (The user can also +-dnl force certain compiler flags/libs to be tested by setting these +-dnl environment variables.) +-dnl +-dnl Also sets PTHREAD_CC to any special C compiler that is needed for +-dnl multi-threaded programs (defaults to the value of CC otherwise). +-dnl (This is necessary on AIX to use the special cc_r compiler alias.) +-dnl +-dnl If you are only building threads programs, you may wish to +-dnl use these variables in your default LIBS, CFLAGS, and CC: +-dnl +-dnl LIBS="$PTHREAD_LIBS $LIBS" +-dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +-dnl CC="$PTHREAD_CC" +-dnl +-dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +-dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE +-dnl to that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +-dnl +-dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands +-dnl to run it if it is not found. If ACTION-IF-FOUND is not specified, +-dnl the default action will define HAVE_PTHREAD. +-dnl +-dnl Please let the authors know if this macro fails on any platform, +-dnl or if you have any other suggestions or comments. This macro was +-dnl based on work by SGJ on autoconf scripts for FFTW (www.fftw.org) +-dnl (with help from M. Frigo), as well as ac_pthread and hb_pthread +-dnl macros posted by AFC to the autoconf macro repository. We are also +-dnl grateful for the helpful feedback of numerous users. ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++AC_SUBST(LIBTOOL)dnl ++ ++# Prevent multiple expansion ++define([AC_PROG_LIBTOOL], []) ++])# _AC_PROG_LIBTOOL ++ ++ ++# AC_LIBTOOL_SETUP ++# ---------------- ++AC_DEFUN([AC_LIBTOOL_SETUP], ++[AC_PREREQ(2.50)dnl ++AC_REQUIRE([AC_ENABLE_SHARED])dnl ++AC_REQUIRE([AC_ENABLE_STATIC])dnl ++AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_PROG_LD])dnl ++AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl ++AC_REQUIRE([AC_PROG_NM])dnl ++ ++AC_REQUIRE([AC_PROG_LN_S])dnl ++AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl ++# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! ++AC_REQUIRE([AC_OBJEXT])dnl ++AC_REQUIRE([AC_EXEEXT])dnl + dnl +-dnl @version $Id: acinclude.m4,v 1.2 2001/12/21 03:12:50 robs Exp $ +-dnl @author Steven G. Johnson and Alejandro Forero Cuervo + +-AC_DEFUN([ACX_PTHREAD], [ +-AC_REQUIRE([AC_CANONICAL_HOST]) +-acx_pthread_ok=no +- +-# First, check if the POSIX threads header, pthread.h, is available. +-# If it isn't, don't bother looking for the threads libraries. +-AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader) +- +-# We must check for the threads library under a number of different +-# names; the ordering is very important because some systems +-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +-# libraries is broken (non-POSIX). +- +-# First of all, check if the user has set any of the PTHREAD_LIBS, +-# etcetera environment variables, and if threads linking works using +-# them: +-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- save_LIBS="$LIBS" +- LIBS="$PTHREAD_LIBS $LIBS" +- AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) +- AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) +- AC_MSG_RESULT($acx_pthread_ok) +- if test x"$acx_pthread_ok" = xno; then +- PTHREAD_LIBS="" +- PTHREAD_CFLAGS="" +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +-fi ++AC_LIBTOOL_SYS_MAX_CMD_LEN ++AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++AC_LIBTOOL_OBJDIR + +-# Create a list of thread flags to try. Items starting with a "-" are +-# C compiler flags, and other items are library names, except for "none" +-# which indicates that we try without any flags at all. +- +-acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" +- +-# The ordering *is* (sometimes) important. Some notes on the +-# individual items follow: +- +-# pthreads: AIX (must check this before -lpthread) +-# none: in case threads are in libc; should be tried before -Kthread and +-# other compiler flags to prevent continual compiler warnings +-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +-# -pthreads: Solaris/gcc +-# -mthreads: Mingw32/gcc, Lynx/gcc +-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +-# doesn't hurt to check since this sometimes defines pthreads too; +-# also defines -D_REENTRANT) +-# pthread: Linux, etcetera +-# --thread-safe: KAI C++ +- +-case "${host_cpu}-${host_os}" in +- *solaris*) +- +- # On Solaris (at least, for some versions), libc contains stubbed +- # (non-functional) versions of the pthreads routines, so link-based +- # tests will erroneously succeed. (We need to link with -pthread or +- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather +- # a function called by this macro, so we could check for that, but +- # who knows whether they'll stub that too in a future libc.) So, +- # we'll just look for -pthreads and -lpthread first: ++AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++_LT_AC_PROG_ECHO_BACKSLASH + +- acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" +- ;; ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; + esac + +-if test x"$acx_pthread_ok" = xno; then +-for flag in $acx_pthread_flags; do ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='sed -e 1s/^X//' ++[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +- case $flag in +- none) +- AC_MSG_CHECKING([whether pthreads work without any flags]) +- ;; +- +- -*) +- AC_MSG_CHECKING([whether pthreads work with $flag]) +- PTHREAD_CFLAGS="$flag" +- ;; +- +- *) +- AC_MSG_CHECKING([for the pthreads library -l$flag]) +- PTHREAD_LIBS="-l$flag" +- ;; +- esac ++# Same as above, but do not quote variable references. ++[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="$PTHREAD_LIBS $LIBS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- +- # Check for various functions. We must include pthread.h, +- # since some functions may be macros. (On the Sequent, we +- # need a special flag -Kthread to make this header compile.) +- # We check for pthread_join because it is in -lpthread on IRIX +- # while pthread_create is in libc. We check for pthread_attr_init +- # due to DEC craziness with -lpthreads. We check for +- # pthread_cleanup_push because it is one of the few pthread +- # functions on Solaris that doesn't have a non-functional libc stub. +- # We try pthread_create on general principles. +- AC_TRY_LINK([#include ], +- [pthread_t th; pthread_join(th, 0); +- pthread_attr_init(0); pthread_cleanup_push(0, 0); +- pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], +- [acx_pthread_ok=yes]) +- +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- +- AC_MSG_RESULT($acx_pthread_ok) +- if test "x$acx_pthread_ok" = xyes; then +- break; +- fi ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +- PTHREAD_LIBS="" +- PTHREAD_CFLAGS="" +-done +-fi ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' + +-# Various other checks: +-if test "x$acx_pthread_ok" = xyes; then +- save_LIBS="$LIBS" +- LIBS="$PTHREAD_LIBS $LIBS" +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +- +- # Detect AIX lossage: threads are created detached by default +- # and the JOINABLE attribute has a nonstandard name (UNDETACHED). +- AC_MSG_CHECKING([for joinable pthread attribute]) +- AC_TRY_LINK([#include ], +- [int attr=PTHREAD_CREATE_JOINABLE;], +- ok=PTHREAD_CREATE_JOINABLE, ok=unknown) +- if test x"$ok" = xunknown; then +- AC_TRY_LINK([#include ], +- [int attr=PTHREAD_CREATE_UNDETACHED;], +- ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) +- fi +- if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then +- AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, +- [Define to the necessary symbol if this constant +- uses a non-standard name on your system.]) +- fi +- AC_MSG_RESULT(${ok}) +- if test x"$ok" = xunknown; then +- AC_MSG_WARN([we do not know how to create joinable pthreads]) +- fi ++# Constants: ++rm="rm -f" + +- AC_MSG_CHECKING([if more special flags are required for pthreads]) +- flag=no +- case "${host_cpu}-${host_os}" in +- *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; +- *solaris* | alpha*-osf*) flag="-D_REENTRANT";; +- esac +- AC_MSG_RESULT(${flag}) +- if test "x$flag" != xno; then +- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" +- fi ++# Global variables: ++default_ofile=libtool ++can_build_shared=yes + +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ltmain="$ac_aux_dir/ltmain.sh" ++ofile="$default_ofile" ++with_gnu_ld="$lt_cv_prog_gnu_ld" + +- # More AIX lossage: must compile with cc_r +- AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +-else +- PTHREAD_CC="$CC" +-fi ++AC_CHECK_TOOL(AR, ar, false) ++AC_CHECK_TOOL(RANLIB, ranlib, :) ++AC_CHECK_TOOL(STRIP, strip, :) + +-AC_SUBST(PTHREAD_LIBS) +-AC_SUBST(PTHREAD_CFLAGS) +-AC_SUBST(PTHREAD_CC) ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" + +-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +-if test x"$acx_pthread_ok" = xyes; then +- ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) +- : +-else +- acx_pthread_ok=no +- $2 +-fi ++# Set sane defaults for various variables ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++test -z "$AS" && AS=as ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$LD" && LD=ld ++test -z "$LN_S" && LN_S="ln -s" ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++test -z "$NM" && NM=nm ++test -z "$SED" && SED=sed ++test -z "$OBJDUMP" && OBJDUMP=objdump ++test -z "$RANLIB" && RANLIB=: ++test -z "$STRIP" && STRIP=: ++test -z "$ac_objext" && ac_objext=o + +-])dnl ACX_PTHREAD ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= + ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi + ++_LT_CC_BASENAME([$compiler]) + +-dnl @synopsis AC_PROG_CC_WARNINGS([ANSI]) +-dnl +-dnl Enables a reasonable set of warnings for the C compiler. Optionally, +-dnl if the first argument is nonempty, turns on flags which enforce and/or +-dnl enable proper ANSI C if such flags are known to the compiler used. +-dnl +-dnl Currently this macro knows about GCC, Solaris C compiler, +-dnl Digital Unix C compiler, C for AIX Compiler, HP-UX C compiler, +-dnl and IRIX C compiler. +-dnl +-dnl @version $Id: acinclude.m4,v 1.2 2001/12/21 03:12:50 robs Exp $ +-dnl @author Ville Laurikari +-dnl +-AC_DEFUN([AC_PROG_CC_WARNINGS], [ +- ansi=$1 +- if test -z "$ansi"; then +- msg="for C compiler warning flags" +- else +- msg="for C compiler warning and ANSI conformance flags" ++# Only perform the check for file, if the check method requires it ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ AC_PATH_MAGIC + fi +- AC_CACHE_CHECK($msg, ac_cv_prog_cc_warnings, [ +- if test -n "$CC"; then +- cat > conftest.c <&1 | grep "Xc.*strict ANSI C" > /dev/null 2>&1 && +- $CC -c -v -Xc conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-v" +- else +- ac_cv_prog_cc_warnings="-v -Xc" +- fi ++AC_ARG_ENABLE([libtool-lock], ++ [AC_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +- dnl HP-UX C compiler +- elif $CC > /dev/null 2>&1 && +- $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="+w1" +- else +- ac_cv_prog_cc_warnings="+w1 -Aa" +- fi ++AC_ARG_WITH([pic], ++ [AC_HELP_STRING([--with-pic], ++ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], ++ [pic_mode="$withval"], ++ [pic_mode=default]) ++test -z "$pic_mode" && pic_mode=default + +- dnl Digital Unix C compiler +- elif ! $CC > /dev/null 2>&1 && +- $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos" +- else +- ac_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" +- fi ++# Use C for the default configuration in the libtool script ++tagname= ++AC_LIBTOOL_LANG_C_CONFIG ++_LT_AC_TAGCONFIG ++])# AC_LIBTOOL_SETUP + +- dnl C for AIX Compiler +- elif $CC > /dev/null 2>&1 | grep AIX > /dev/null 2>&1 && +- $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" +- else +- ac_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi" +- fi + +- dnl IRIX C compiler +- elif $CC -fullwarn -ansi -ansiE > /dev/null 2>&1 && +- test -f conftest.o; then +- if test -z "$ansi"; then +- ac_cv_prog_cc_warnings="-fullwarn" +- else +- ac_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" +- fi ++# _LT_AC_SYS_COMPILER ++# ------------------- ++AC_DEFUN([_LT_AC_SYS_COMPILER], ++[AC_REQUIRE([AC_PROG_CC])dnl + +- fi +- rm -f conftest.* +- fi +- if test -n "$ac_cv_prog_cc_warnings"; then +- CFLAGS="$CFLAGS $ac_cv_prog_cc_warnings" +- else +- ac_cv_prog_cc_warnings="unknown" +- fi +- ]) +-]) ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + ++# Allow CC to be a program name with arguments. ++compiler=$CC ++])# _LT_AC_SYS_COMPILER + +-# Do all the work for Automake. This macro actually does too much -- +-# some checks are only needed if your package does certain things. +-# But this isn't really a big deal. + +-# serial 5 ++# _LT_CC_BASENAME(CC) ++# ------------------- ++# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. ++AC_DEFUN([_LT_CC_BASENAME], ++[for cc_temp in $1""; do ++ case $cc_temp in ++ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; ++ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++]) + +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + ++# _LT_COMPILER_BOILERPLATE ++# ------------------------ ++# Check for compiler boilerplate output or warnings with ++# the simple compiler test code. ++AC_DEFUN([_LT_COMPILER_BOILERPLATE], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++])# _LT_COMPILER_BOILERPLATE ++ ++ ++# _LT_LINKER_BOILERPLATE ++# ---------------------- ++# Check for linker boilerplate output or warnings with ++# the simple link test code. ++AC_DEFUN([_LT_LINKER_BOILERPLATE], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++])# _LT_LINKER_BOILERPLATE ++ ++ ++# _LT_AC_SYS_LIBPATH_AIX ++# ---------------------- ++# Links a minimal program and checks the executable ++# for the system default hardcoded library path. In most cases, ++# this is /usr/lib:/lib, but when the MPI compilers are used ++# the location of the communication and MPI libs are included too. ++# If we don't find anything, use the default library path according ++# to the aix ld manual. ++AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_LINK_IFELSE(AC_LANG_PROGRAM,[ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi],[]) ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++])# _LT_AC_SYS_LIBPATH_AIX ++ ++ ++# _LT_AC_SHELL_INIT(ARG) ++# ---------------------- ++AC_DEFUN([_LT_AC_SHELL_INIT], ++[ifdef([AC_DIVERSION_NOTICE], ++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], ++ [AC_DIVERT_PUSH(NOTICE)]) ++$1 ++AC_DIVERT_POP ++])# _LT_AC_SHELL_INIT + +-# We require 2.13 because we rely on SHELL being computed by configure. +-AC_PREREQ([2.13]) + +-# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +-# ----------------------------------------------------------- +-# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED. +-# The purpose of this macro is to provide the user with a means to +-# check macros which are provided without letting her know how the +-# information is coded. +-# If this macro is not defined by Autoconf, define it here. +-ifdef([AC_PROVIDE_IFELSE], +- [], +- [define([AC_PROVIDE_IFELSE], +- [ifdef([AC_PROVIDE_$1], +- [$2], [$3])])]) ++# _LT_AC_PROG_ECHO_BACKSLASH ++# -------------------------- ++# Add some code to the start of the generated configure script which ++# will find an echo command which doesn't interpret backslashes. ++AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], ++[_LT_AC_SHELL_INIT([ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} + ++case X$ECHO in ++X*--fallback-echo) ++ # Remove one level of quotation (which was required for Make). ++ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ++ ;; ++esac + +-# AM_INIT_AUTOMAKE(PACKAGE,VERSION, [NO-DEFINE]) +-# ---------------------------------------------- +-AC_DEFUN([AM_INIT_AUTOMAKE], +-[AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run \"make distclean\" there first]) ++echo=${ECHO-echo} ++if test "X[$]1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X[$]1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $echo works! ++ : ++else ++ # Restart under the correct shell. ++ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} + fi + +-# Define the identity of the package. +-PACKAGE=$1 +-AC_SUBST(PACKAGE)dnl +-VERSION=$2 +-AC_SUBST(VERSION)dnl +-ifelse([$3],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +-AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) ++if test "X[$]1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat </dev/null 2>&1 && unset CDPATH + +-# Some tools Automake needs. +-AC_REQUIRE([AM_SANITY_CHECK])dnl +-AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG(ACLOCAL, aclocal) +-AM_MISSING_PROG(AUTOCONF, autoconf) +-AM_MISSING_PROG(AUTOMAKE, automake) +-AM_MISSING_PROG(AUTOHEADER, autoheader) +-AM_MISSING_PROG(MAKEINFO, makeinfo) +-AM_MISSING_PROG(AMTAR, tar) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([AC_PROG_MAKE_SET])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl +-AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_PROVIDE_IFELSE([AC_PROG_][CC], +- [_AM_DEPENDENCIES(CC)], +- [define([AC_PROG_][CC], +- defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl +-AC_PROVIDE_IFELSE([AC_PROG_][CXX], +- [_AM_DEPENDENCIES(CXX)], +- [define([AC_PROG_][CXX], +- defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl +-]) ++if test -z "$ECHO"; then ++if test "X${echo_test_string+set}" != Xset; then ++# find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if (echo_test_string=`eval $cmd`) 2>/dev/null && ++ echo_test_string=`eval $cmd` && ++ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null ++ then ++ break ++ fi ++ done ++fi + +-# +-# Check to make sure that the build environment is sane. +-# ++if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. + +-# serial 3 ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ echo="$dir/echo" ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" + +-# AM_SANITY_CHECK +-# --------------- +-AC_DEFUN([AM_SANITY_CHECK], +-[AC_MSG_CHECKING([whether build environment is sane]) +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$[*]" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` ++ if test "X$echo" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ echo='print -r' ++ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} ++ else ++ # Try using printf. ++ echo='printf %s\n' ++ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ echo="$CONFIG_SHELL [$]0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ echo="$CONFIG_SHELL [$]0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: ++ ++ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do ++ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null ++ then ++ break ++ fi ++ prev="$cmd" ++ done ++ ++ if test "$prev" != 'sed 50q "[$]0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ echo=echo ++ fi ++ fi ++ fi ++ fi ++fi ++fi ++ ++# Copy echo and quote the copy suitably for passing to libtool from ++# the Makefile, instead of quoting the original, which is used later. ++ECHO=$echo ++if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ++ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" ++fi ++ ++AC_SUBST(ECHO) ++])])# _LT_AC_PROG_ECHO_BACKSLASH ++ ++ ++# _LT_AC_LOCK ++# ----------- ++AC_DEFUN([_LT_AC_LOCK], ++[AC_ARG_ENABLE([libtool-lock], ++ [AC_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac + fi +- rm -f conftest.file +- if test "$[*]" != "X $srcdir/configure conftest.file" \ +- && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, ++ [AC_LANG_PUSH(C) ++ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) ++ AC_LANG_POP]) ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) LD="${LD-ld} -64" ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], ++[*-*-cygwin* | *-*-mingw* | *-*-pw32*) ++ AC_CHECK_TOOL(DLLTOOL, dlltool, false) ++ AC_CHECK_TOOL(AS, as, false) ++ AC_CHECK_TOOL(OBJDUMP, objdump, false) ++ ;; ++ ]) ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++])# _LT_AC_LOCK ++ ++ ++# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ---------------------------------------------------------------- ++# Check whether the given compiler option works ++AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], ++[AC_REQUIRE([LT_AC_PROG_SED]) ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$3" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ fi ++ $rm conftest* ++]) ++ ++if test x"[$]$2" = xyes; then ++ ifelse([$5], , :, [$5]) ++else ++ ifelse([$6], , :, [$6]) ++fi ++])# AC_LIBTOOL_COMPILER_OPTION ++ ++ ++# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ------------------------------------------------------------ ++# Check whether the given compiler option works ++AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $3" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&AS_MESSAGE_LOG_FD ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ else ++ $2=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++]) ++ ++if test x"[$]$2" = xyes; then ++ ifelse([$4], , :, [$4]) ++else ++ ifelse([$5], , :, [$5]) ++fi ++])# AC_LIBTOOL_LINKER_OPTION ++ ++ ++# AC_LIBTOOL_SYS_MAX_CMD_LEN ++# -------------------------- ++AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], ++[# find the maximum length of command line arguments ++AC_MSG_CHECKING([the maximum length of command line arguments]) ++AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ ++ = "XX$teststring") >/dev/null 2>&1 && ++ new_result=`expr "X$teststring" : ".*" 2>&1` && ++ lt_cv_sys_max_cmd_len=$new_result && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on massive ++ # amounts of additional arguments before passing them to the linker. ++ # It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++]) ++if test -n $lt_cv_sys_max_cmd_len ; then ++ AC_MSG_RESULT($lt_cv_sys_max_cmd_len) ++else ++ AC_MSG_RESULT(none) ++fi ++])# AC_LIBTOOL_SYS_MAX_CMD_LEN ++ ++ ++# _LT_AC_CHECK_DLFCN ++# ------------------ ++AC_DEFUN([_LT_AC_CHECK_DLFCN], ++[AC_CHECK_HEADERS(dlfcn.h)dnl ++])# _LT_AC_CHECK_DLFCN ++ ++ ++# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, ++# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) ++# --------------------------------------------------------------------- ++AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], ++[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl ++if test "$cross_compiling" = yes; then : ++ [$4] ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++}] ++EOF ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) $1 ;; ++ x$lt_dlneed_uscore) $2 ;; ++ x$lt_dlunknown|x*) $3 ;; ++ esac ++ else : ++ # compilation failed ++ $3 ++ fi ++fi ++rm -fr conftest* ++])# _LT_AC_TRY_DLOPEN_SELF ++ ++ ++# AC_LIBTOOL_DLOPEN_SELF ++# ---------------------- ++AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], ++[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ]) ++ ;; ++ ++ *) ++ AC_CHECK_FUNC([shl_load], ++ [lt_cv_dlopen="shl_load"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], ++ [AC_CHECK_FUNC([dlopen], ++ [lt_cv_dlopen="dlopen"], ++ [AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], ++ [AC_CHECK_LIB([dld], [dld_link], ++ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ AC_CACHE_CHECK([whether a program can dlopen itself], ++ lt_cv_dlopen_self, [dnl ++ _LT_AC_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, ++ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ++ ]) ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ AC_CACHE_CHECK([whether a statically linked program can dlopen itself], ++ lt_cv_dlopen_self_static, [dnl ++ _LT_AC_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, ++ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ++ ]) ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++])# AC_LIBTOOL_DLOPEN_SELF ++ ++ ++# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) ++# --------------------------------- ++# Check to see if options -c and -o are simultaneously supported by compiler ++AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], ++ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], ++ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ fi ++ fi ++ chmod u+w . 2>&AS_MESSAGE_LOG_FD ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++]) ++])# AC_LIBTOOL_PROG_CC_C_O ++ ++ ++# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) ++# ----------------------------------------- ++# Check to see if we can do hard links to lock some files if needed ++AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], ++[AC_REQUIRE([_LT_AC_LOCK])dnl ++ ++hard_links="nottested" ++if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ AC_MSG_CHECKING([if we can lock with hard links]) ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ AC_MSG_RESULT([$hard_links]) ++ if test "$hard_links" = no; then ++ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS ++ ++ ++# AC_LIBTOOL_OBJDIR ++# ----------------- ++AC_DEFUN([AC_LIBTOOL_OBJDIR], ++[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], ++[rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null]) ++objdir=$lt_cv_objdir ++])# AC_LIBTOOL_OBJDIR ++ ++ ++# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) ++# ---------------------------------------------- ++# Check hardcoding attributes. ++AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], ++[AC_MSG_CHECKING([how to hardcode library paths into programs]) ++_LT_AC_TAGVAR(hardcode_action, $1)= ++if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ ++ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ ++ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && ++ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then ++ # Linking always hardcodes the temporary library directory. ++ _LT_AC_TAGVAR(hardcode_action, $1)=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ _LT_AC_TAGVAR(hardcode_action, $1)=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported ++fi ++AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) ++ ++if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH ++ ++ ++# AC_LIBTOOL_SYS_LIB_STRIP ++# ------------------------ ++AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], ++[striplib= ++old_striplib= ++AC_MSG_CHECKING([whether stripping libraries is possible]) ++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ AC_MSG_RESULT([yes]) ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++fi ++ ;; ++ *) ++ AC_MSG_RESULT([no]) ++ ;; ++ esac ++fi ++])# AC_LIBTOOL_SYS_LIB_STRIP ++ ++ ++# AC_LIBTOOL_SYS_DYNAMIC_LINKER ++# ----------------------------- ++# PORTME Fill in your ld.so characteristics ++AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_MSG_CHECKING([dynamic linker characteristics]) ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++m4_if($1,[],[ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[[lt_foo]]++; } ++ if (lt_freq[[lt_foo]] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`echo $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi]) ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[[01]] | aix4.[[01]].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[[45]]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ m4_if([$1], [],[ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[[123]]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[[01]]* | freebsdelf3.[[01]]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ ++ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[[3-9]]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[[89]] | openbsd2.[[89]].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++AC_MSG_RESULT([$dynamic_linker]) ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++])# AC_LIBTOOL_SYS_DYNAMIC_LINKER ++ ++ ++# _LT_AC_TAGCONFIG ++# ---------------- ++AC_DEFUN([_LT_AC_TAGCONFIG], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_ARG_WITH([tags], ++ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], ++ [include additional configurations @<:@automatic@:>@])], ++ [tagnames="$withval"]) ++ ++if test -f "$ltmain" && test -n "$tagnames"; then ++ if test ! -f "${ofile}"; then ++ AC_MSG_WARN([output file `$ofile' does not exist]) ++ fi ++ ++ if test -z "$LTCC"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" ++ if test -z "$LTCC"; then ++ AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) ++ else ++ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) ++ fi ++ fi ++ if test -z "$LTCFLAGS"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" ++ fi ++ ++ # Extract list of available tagged configurations in $ofile. ++ # Note that this assumes the entire list is on one line. ++ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` ++ ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for tagname in $tagnames; do ++ IFS="$lt_save_ifs" ++ # Check whether tagname contains only valid characters ++ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in ++ "") ;; ++ *) AC_MSG_ERROR([invalid tag name: $tagname]) ++ ;; ++ esac ++ ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null ++ then ++ AC_MSG_ERROR([tag name \"$tagname\" already exists]) ++ fi ++ ++ # Update the list of available tags. ++ if test -n "$tagname"; then ++ echo appending configuration tag \"$tagname\" to $ofile ++ ++ case $tagname in ++ CXX) ++ if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_LIBTOOL_LANG_CXX_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ F77) ++ if test -n "$F77" && test "X$F77" != "Xno"; then ++ AC_LIBTOOL_LANG_F77_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ GCJ) ++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then ++ AC_LIBTOOL_LANG_GCJ_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ RC) ++ AC_LIBTOOL_LANG_RC_CONFIG ++ ;; ++ ++ *) ++ AC_MSG_ERROR([Unsupported tag name: $tagname]) ++ ;; ++ esac ++ ++ # Append the new tag name to the list of available tags. ++ if test -n "$tagname" ; then ++ available_tags="$available_tags $tagname" ++ fi ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ # Now substitute the updated list of available tags. ++ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then ++ mv "${ofile}T" "$ofile" ++ chmod +x "$ofile" ++ else ++ rm -f "${ofile}T" ++ AC_MSG_ERROR([unable to update list of available tagged configurations.]) ++ fi ++fi ++])# _LT_AC_TAGCONFIG ++ ++ ++# AC_LIBTOOL_DLOPEN ++# ----------------- ++# enable checks for dlopen support ++AC_DEFUN([AC_LIBTOOL_DLOPEN], ++ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ++])# AC_LIBTOOL_DLOPEN ++ ++ ++# AC_LIBTOOL_WIN32_DLL ++# -------------------- ++# declare package support for building win32 DLLs ++AC_DEFUN([AC_LIBTOOL_WIN32_DLL], ++[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ++])# AC_LIBTOOL_WIN32_DLL ++ ++ ++# AC_ENABLE_SHARED([DEFAULT]) ++# --------------------------- ++# implement the --enable-shared flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_SHARED], ++[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([shared], ++ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], ++ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ++])# AC_ENABLE_SHARED ++ ++ ++# AC_DISABLE_SHARED ++# ----------------- ++# set the default shared flag to --disable-shared ++AC_DEFUN([AC_DISABLE_SHARED], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_SHARED(no) ++])# AC_DISABLE_SHARED ++ ++ ++# AC_ENABLE_STATIC([DEFAULT]) ++# --------------------------- ++# implement the --enable-static flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_STATIC], ++[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([static], ++ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], ++ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_static=]AC_ENABLE_STATIC_DEFAULT) ++])# AC_ENABLE_STATIC ++ ++ ++# AC_DISABLE_STATIC ++# ----------------- ++# set the default static flag to --disable-static ++AC_DEFUN([AC_DISABLE_STATIC], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_STATIC(no) ++])# AC_DISABLE_STATIC ++ ++ ++# AC_ENABLE_FAST_INSTALL([DEFAULT]) ++# --------------------------------- ++# implement the --enable-fast-install flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_FAST_INSTALL], ++[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([fast-install], ++ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], ++ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ++])# AC_ENABLE_FAST_INSTALL ++ ++ ++# AC_DISABLE_FAST_INSTALL ++# ----------------------- ++# set the default to --disable-fast-install ++AC_DEFUN([AC_DISABLE_FAST_INSTALL], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_FAST_INSTALL(no) ++])# AC_DISABLE_FAST_INSTALL ++ ++ ++# AC_LIBTOOL_PICMODE([MODE]) ++# -------------------------- ++# implement the --with-pic flag ++# MODE is either `yes' or `no'. If omitted, it defaults to `both'. ++AC_DEFUN([AC_LIBTOOL_PICMODE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++pic_mode=ifelse($#,1,$1,default) ++])# AC_LIBTOOL_PICMODE ++ ++ ++# AC_PROG_EGREP ++# ------------- ++# This is predefined starting with Autoconf 2.54, so this conditional ++# definition can be removed once we require Autoconf 2.54 or later. ++m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], ++[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], ++ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 ++ then ac_cv_prog_egrep='grep -E' ++ else ac_cv_prog_egrep='egrep' ++ fi]) ++ EGREP=$ac_cv_prog_egrep ++ AC_SUBST([EGREP]) ++])]) ++ ++ ++# AC_PATH_TOOL_PREFIX ++# ------------------- ++# find a file program which can recognize shared library ++AC_DEFUN([AC_PATH_TOOL_PREFIX], ++[AC_REQUIRE([AC_PROG_EGREP])dnl ++AC_MSG_CHECKING([for $1]) ++AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, ++[case $MAGIC_CMD in ++[[\\/*] | ?:[\\/]*]) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++dnl $ac_dummy forces splitting on constant user-supplied paths. ++dnl POSIX.2 word splitting is done only on the output of word expansions, ++dnl not every word. This closes a longstanding sh security hole. ++ ac_dummy="ifelse([$2], , $PATH, [$2])" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/$1; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/$1" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac]) ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ AC_MSG_RESULT($MAGIC_CMD) ++else ++ AC_MSG_RESULT(no) ++fi ++])# AC_PATH_TOOL_PREFIX ++ ++ ++# AC_PATH_MAGIC ++# ------------- ++# find a file program which can recognize a shared library ++AC_DEFUN([AC_PATH_MAGIC], ++[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) ++ else ++ MAGIC_CMD=: ++ fi ++fi ++])# AC_PATH_MAGIC + +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +-alias in your environment]) +- fi + +- test "$[2]" = conftest.file +- ) +-then +- # Ok. +- : ++# AC_PROG_LD ++# ---------- ++# find the pathname to the GNU or non-GNU linker ++AC_DEFUN([AC_PROG_LD], ++[AC_ARG_WITH([gnu-ld], ++ [AC_HELP_STRING([--with-gnu-ld], ++ [assume the C compiler uses GNU ld @<:@default=no@:>@])], ++ [test "$withval" = no || with_gnu_ld=yes], ++ [with_gnu_ld=no]) ++AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ AC_MSG_CHECKING([for ld used by $CC]) ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [[\\/]]* | ?:[[\\/]]*) ++ re_direlt='/[[^/]][[^/]]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) + else +- AC_MSG_ERROR([newly created file is older than distributed files! +-Check your system clock]) ++ AC_MSG_CHECKING([for non-GNU ld]) + fi +-AC_MSG_RESULT(yes)]) ++AC_CACHE_VAL(lt_cv_path_LD, ++[if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; + +-# serial 4 -*- Autoconf -*- ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[[3-9]]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; + ++nto-qnx*) ++ lt_cv_deplibs_check_method=unknown ++ ;; + ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ fi ++ ;; + +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +-# _AM_DEPENDENCIES(NAME) +-# --------------------- +-# See how the compiler implements dependency checking. +-# NAME is "CC", "CXX" or "OBJC". +-# We try a few techniques and use that to set a single cache variable. +-# +-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +-# dependency, and given that the user is not expected to run this macro, +-# just rely on AC_PROG_CC. +-AC_DEFUN([_AM_DEPENDENCIES], +-[AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +-AC_REQUIRE([AM_MAKE_INCLUDE])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; + +-ifelse([$1], CC, [depcc="$CC" am_compiler_list=], +- [$1], CXX, [depcc="$CXX" am_compiler_list=], +- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'] +- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], +- [depcc="$$1" am_compiler_list=]) ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++]) ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++])# AC_DEPLIBS_CHECK_METHOD + +-AC_CACHE_CHECK([dependency style of $depcc], +- [am_cv_$1_dependencies_compiler_type], +-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir + +- am_cv_$1_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++# AC_PROG_NM ++# ---------- ++# find the pathname to a BSD-compatible name lister ++AC_DEFUN([AC_PROG_NM], ++[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, ++[if test -n "$NM"; then ++ # Let the user override the test. ++ lt_cv_path_NM="$NM" ++else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" + fi +- for depmode in $am_compiler_list; do +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac + fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_$1_dependencies_compiler_type=$depmode +- break +- fi ++ done ++ IFS="$lt_save_ifs" + done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_$1_dependencies_compiler_type=none +-fi +-]) +-$1DEPMODE="depmode=$am_cv_$1_dependencies_compiler_type" +-AC_SUBST([$1DEPMODE]) +-]) ++ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm ++fi]) ++NM="$lt_cv_path_NM" ++])# AC_PROG_NM + + +-# AM_SET_DEPDIR ++# AC_CHECK_LIBM + # ------------- +-# Choose a directory name for dependency files. +-# This macro is AC_REQUIREd in _AM_DEPENDENCIES +-AC_DEFUN([AM_SET_DEPDIR], +-[rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps +-else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps +-fi +-rmdir .deps 2>/dev/null +-AC_SUBST(DEPDIR) +-]) +- +- +-# AM_DEP_TRACK +-# ------------ +-AC_DEFUN([AM_DEP_TRACK], +-[AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors]) +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-pushdef([subst], defn([AC_SUBST])) +-subst(AMDEPBACKSLASH) +-popdef([subst]) +-]) ++# check for math library ++AC_DEFUN([AC_CHECK_LIBM], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++LIBM= ++case $host in ++*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) ++ # These system don't have libm, or don't need it ++ ;; ++*-ncr-sysv4.3*) ++ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") ++ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ++ ;; ++*) ++ AC_CHECK_LIB(m, cos, LIBM="-lm") ++ ;; ++esac ++])# AC_CHECK_LIBM + +-# Generate code to set up dependency tracking. +-# This macro should only be invoked once -- use via AC_REQUIRE. +-# Usage: +-# AM_OUTPUT_DEPENDENCY_COMMANDS + +-# +-# This code is only required when automatic dependency tracking +-# is enabled. FIXME. This creates each `.P' file that we will +-# need in order to bootstrap the dependency handling code. +-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],[ +-AC_OUTPUT_COMMANDS([ +-test x"$AMDEP_TRUE" != x"" || +-for mf in $CONFIG_FILES; do +- case "$mf" in +- Makefile) dirpart=.;; +- */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; +- *) continue;; ++# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) ++# ----------------------------------- ++# sets LIBLTDL to the link flags for the libltdl convenience library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-convenience to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, ++# it is assumed to be `libltdl'. LIBLTDL will be prefixed with ++# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' ++# (note the single quotes!). If your package is not flat and you're not ++# using automake, define top_builddir and top_srcdir appropriately in ++# the Makefiles. ++AC_DEFUN([AC_LIBLTDL_CONVENIENCE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++ case $enable_ltdl_convenience in ++ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; ++ "") enable_ltdl_convenience=yes ++ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` +- test -z "$DEPDIR" && continue +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ +- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`echo "$file" | sed -e 's|/[^/]*$||'` +- $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" +- done +-done +-], [AMDEP_TRUE="$AMDEP_TRUE" +-ac_aux_dir="$ac_aux_dir"])]) +- +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-doit: +- @echo done +-END +-# If we don't find an include directive, just comment out the code. +-AC_MSG_CHECKING([for style of include used by $am_make]) +-am__include='#' +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote='"' +- _am_result=BSD +- fi +-fi +-AC_SUBST(am__include) +-AC_SUBST(am__quote) +-AC_MSG_RESULT($_am_result) +-rm -f confinc confmf +-]) +- +-# serial 3 ++ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la ++ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ++ # For backwards non-gettext consistent compatibility... ++ INCLTDL="$LTDLINCL" ++])# AC_LIBLTDL_CONVENIENCE + +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-# +-# FIXME: Once using 2.50, use this: +-# m4_match([$1], [^TRUE\|FALSE$], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_DEFUN([AM_CONDITIONAL], +-[ifelse([$1], [TRUE], +- [errprint(__file__:__line__: [$0: invalid condition: $1 +-])dnl +-m4exit(1)])dnl +-ifelse([$1], [FALSE], +- [errprint(__file__:__line__: [$0: invalid condition: $1 +-])dnl +-m4exit(1)])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) +-if $2; then +- $1_TRUE= +- $1_FALSE='#' +-else +- $1_TRUE='#' +- $1_FALSE= +-fi]) + +-# Like AC_CONFIG_HEADER, but automatically create stamp file. ++# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) ++# ----------------------------------- ++# sets LIBLTDL to the link flags for the libltdl installable library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-install to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, ++# and an installed libltdl is not found, it is assumed to be `libltdl'. ++# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with ++# '${top_srcdir}/' (note the single quotes!). If your package is not ++# flat and you're not using automake, define top_builddir and top_srcdir ++# appropriately in the Makefiles. ++# In the future, this macro may have to be called after AC_PROG_LIBTOOL. ++AC_DEFUN([AC_LIBLTDL_INSTALLABLE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++ AC_CHECK_LIB(ltdl, lt_dlinit, ++ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], ++ [if test x"$enable_ltdl_install" = xno; then ++ AC_MSG_WARN([libltdl not installed, but installation disabled]) ++ else ++ enable_ltdl_install=yes ++ fi ++ ]) ++ if test x"$enable_ltdl_install" = x"yes"; then ++ ac_configure_args="$ac_configure_args --enable-ltdl-install" ++ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la ++ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ++ else ++ ac_configure_args="$ac_configure_args --enable-ltdl-install=no" ++ LIBLTDL="-lltdl" ++ LTDLINCL= ++ fi ++ # For backwards non-gettext consistent compatibility... ++ INCLTDL="$LTDLINCL" ++])# AC_LIBLTDL_INSTALLABLE + +-# serial 3 + +-# When config.status generates a header, we must update the stamp-h file. +-# This file resides in the same directory as the config header +-# that is generated. We must strip everything past the first ":", +-# and everything past the last "/". ++# AC_LIBTOOL_CXX ++# -------------- ++# enable support for C++ libraries ++AC_DEFUN([AC_LIBTOOL_CXX], ++[AC_REQUIRE([_LT_AC_LANG_CXX]) ++])# AC_LIBTOOL_CXX + +-AC_PREREQ([2.12]) + +-AC_DEFUN([AM_CONFIG_HEADER], +-[ifdef([AC_FOREACH],dnl +- [dnl init our file count if it isn't already +- m4_ifndef([_AM_Config_Header_Index], m4_define([_AM_Config_Header_Index], [0])) +- dnl prepare to store our destination file list for use in config.status +- AC_FOREACH([_AM_File], [$1], +- [m4_pushdef([_AM_Dest], m4_patsubst(_AM_File, [:.*])) +- m4_define([_AM_Config_Header_Index], m4_incr(_AM_Config_Header_Index)) +- dnl and add it to the list of files AC keeps track of, along +- dnl with our hook +- AC_CONFIG_HEADERS(_AM_File, +-dnl COMMANDS, [, INIT-CMDS] +-[# update the timestamp +-echo timestamp >"AS_ESCAPE(_AM_DIRNAME(]_AM_Dest[))/stamp-h]_AM_Config_Header_Index[" +-][$2]m4_ifval([$3], [, [$3]]))dnl AC_CONFIG_HEADERS +- m4_popdef([_AM_Dest])])],dnl +-[AC_CONFIG_HEADER([$1]) +- AC_OUTPUT_COMMANDS( +- ifelse(patsubst([$1], [[^ ]], []), +- [], +- [test -z "$CONFIG_HEADERS" || echo timestamp >dnl +- patsubst([$1], [^\([^:]*/\)?.*], [\1])stamp-h]),dnl +-[am_indx=1 +-for am_file in $1; do +- case " \$CONFIG_HEADERS " in +- *" \$am_file "*) +- am_dir=\`echo \$am_file |sed 's%:.*%%;s%[^/]*\$%%'\` +- if test -n "\$am_dir"; then +- am_tmpdir=\`echo \$am_dir |sed 's%^\(/*\).*\$%\1%'\` +- for am_subdir in \`echo \$am_dir |sed 's%/% %'\`; do +- am_tmpdir=\$am_tmpdir\$am_subdir/ +- if test ! -d \$am_tmpdir; then +- mkdir \$am_tmpdir +- fi +- done +- fi +- echo timestamp > "\$am_dir"stamp-h\$am_indx +- ;; +- esac +- am_indx=\`expr \$am_indx + 1\` +-done]) +-])]) # AM_CONFIG_HEADER ++# _LT_AC_LANG_CXX ++# --------------- ++AC_DEFUN([_LT_AC_LANG_CXX], ++[AC_REQUIRE([AC_PROG_CXX]) ++AC_REQUIRE([_LT_AC_PROG_CXXCPP]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ++])# _LT_AC_LANG_CXX + +-# _AM_DIRNAME(PATH) +-# ----------------- +-# Like AS_DIRNAME, only do it during macro expansion +-AC_DEFUN([_AM_DIRNAME], +- [m4_if(m4_regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, +- m4_if(m4_regexp([$1], [^//\([^/]\|$\)]), -1, +- m4_if(m4_regexp([$1], [^/.*]), -1, +- [.], +- m4_patsubst([$1], [^\(/\).*], [\1])), +- m4_patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), +- m4_patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +-]) # _AM_DIRNAME ++# _LT_AC_PROG_CXXCPP ++# ------------------ ++AC_DEFUN([_LT_AC_PROG_CXXCPP], ++[ ++AC_REQUIRE([AC_PROG_CXX]) ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_PROG_CXXCPP ++fi ++])# _LT_AC_PROG_CXXCPP ++ ++# AC_LIBTOOL_F77 ++# -------------- ++# enable support for Fortran 77 libraries ++AC_DEFUN([AC_LIBTOOL_F77], ++[AC_REQUIRE([_LT_AC_LANG_F77]) ++])# AC_LIBTOOL_F77 + +-# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + +-# serial 46 AC_PROG_LIBTOOL ++# _LT_AC_LANG_F77 ++# --------------- ++AC_DEFUN([_LT_AC_LANG_F77], ++[AC_REQUIRE([AC_PROG_F77]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ++])# _LT_AC_LANG_F77 + +-AC_DEFUN([AC_PROG_LIBTOOL], +-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" ++# AC_LIBTOOL_GCJ ++# -------------- ++# enable support for GCJ libraries ++AC_DEFUN([AC_LIBTOOL_GCJ], ++[AC_REQUIRE([_LT_AC_LANG_GCJ]) ++])# AC_LIBTOOL_GCJ + +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl + +-# Prevent multiple expansion +-define([AC_PROG_LIBTOOL], []) +-]) ++# _LT_AC_LANG_GCJ ++# --------------- ++AC_DEFUN([_LT_AC_LANG_GCJ], ++[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], ++ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], ++ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], ++ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], ++ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ++])# _LT_AC_LANG_GCJ + +-AC_DEFUN([AC_LIBTOOL_SETUP], +-[AC_PREREQ(2.13)dnl +-AC_REQUIRE([AC_ENABLE_SHARED])dnl +-AC_REQUIRE([AC_ENABLE_STATIC])dnl +-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_LD])dnl +-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +-AC_REQUIRE([AC_PROG_NM])dnl +-AC_REQUIRE([AC_PROG_LN_S])dnl +-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +-AC_REQUIRE([AC_OBJEXT])dnl +-AC_REQUIRE([AC_EXEEXT])dnl +-dnl + +-_LT_AC_PROG_ECHO_BACKSLASH +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- AC_PATH_MAGIC +- fi +- ;; +-esac ++# AC_LIBTOOL_RC ++# ------------- ++# enable support for Windows resource files ++AC_DEFUN([AC_LIBTOOL_RC], ++[AC_REQUIRE([LT_AC_PROG_RC]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ++])# AC_LIBTOOL_RC + +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-AC_CHECK_TOOL(STRIP, strip, :) + +-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +-enable_win32_dll=yes, enable_win32_dll=no) ++# AC_LIBTOOL_LANG_C_CONFIG ++# ------------------------ ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) ++AC_DEFUN([_LT_AC_LANG_C_CONFIG], ++[lt_save_CC="$CC" ++AC_LANG_PUSH(C) ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++AC_LIBTOOL_SYS_LIB_STRIP ++AC_LIBTOOL_DLOPEN_SELF + +-AC_ARG_ENABLE(libtool-lock, +- [ --disable-libtool-lock avoid locking (might break parallel builds)]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++# Report which library types will actually be built ++AC_MSG_CHECKING([if libtool supports shared libraries]) ++AC_MSG_RESULT([$can_build_shared]) + +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; ++AC_MSG_CHECKING([whether to build shared libraries]) ++test "$can_build_shared" = "no" && enable_shared=no + +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_SAVE +- AC_LANG_C +- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_RESTORE]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' + fi + ;; + +-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +-[*-*-cygwin* | *-*-mingw* | *-*-pw32*) +- AC_CHECK_TOOL(DLLTOOL, dlltool, false) +- AC_CHECK_TOOL(AS, as, false) +- AC_CHECK_TOOL(OBJDUMP, objdump, false) +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one +- AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, +- [AC_TRY_LINK([], +- [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); +- DllMain (0, 0, 0);], +- [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) +- +- case $host/$CC in +- *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) +- # old mingw systems require "-dll" to link a DLL, while more recent ones +- # require "-mdll" +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -mdll" +- AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, +- [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) +- CFLAGS="$SAVE_CFLAGS" ;; +- *-*-cygwin* | *-*-pw32*) +- # cygwin systems need to pass --dll to the linker, and not link +- # crt.o which will require a WinMain@16 definition. +- lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; +- esac +- ;; +- ]) ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; + esac ++AC_MSG_RESULT([$enable_shared]) + +-_LT_AC_LTCONFIG_HACK +- +-]) ++AC_MSG_CHECKING([whether to build static libraries]) ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++AC_MSG_RESULT([$enable_static]) + +-# AC_LIBTOOL_HEADER_ASSERT +-# ------------------------ +-AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +-[AC_CACHE_CHECK([whether $CC supports assert without backlinking], +- [lt_cv_func_assert_works], +- [case $host in +- *-*-solaris*) +- if test "$GCC" = yes && test "$with_gnu_ld" != yes; then +- case `$CC --version 2>/dev/null` in +- [[12]].*) lt_cv_func_assert_works=no ;; +- *) lt_cv_func_assert_works=yes ;; +- esac +- fi +- ;; +- esac]) ++AC_LIBTOOL_CONFIG($1) + +-if test "x$lt_cv_func_assert_works" = xyes; then +- AC_CHECK_HEADERS(assert.h) +-fi +-])# AC_LIBTOOL_HEADER_ASSERT ++AC_LANG_POP ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_C_CONFIG + +-# _LT_AC_CHECK_DLFCN +-# -------------------- +-AC_DEFUN([_LT_AC_CHECK_DLFCN], +-[AC_CHECK_HEADERS(dlfcn.h) +-])# _LT_AC_CHECK_DLFCN + +-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +-# --------------------------------- +-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +-[AC_REQUIRE([AC_CANONICAL_HOST]) +-AC_REQUIRE([AC_PROG_NM]) +-AC_REQUIRE([AC_OBJEXT]) +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl ++# AC_LIBTOOL_LANG_CXX_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) ++AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], ++[AC_LANG_PUSH(C++) ++AC_REQUIRE([AC_PROG_CXX]) ++AC_REQUIRE([_LT_AC_PROG_CXXCPP]) ++ ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_AC_TAGVAR(allow_undefined_flag, $1)= ++_LT_AC_TAGVAR(always_export_symbols, $1)=no ++_LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_direct, $1)=no ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++_LT_AC_TAGVAR(hardcode_automatic, $1)=no ++_LT_AC_TAGVAR(module_cmds, $1)= ++_LT_AC_TAGVAR(module_expsym_cmds, $1)= ++_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_AC_TAGVAR(no_undefined_flag, $1)= ++_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Dependencies to place before and after the object being linked: ++_LT_AC_TAGVAR(predep_objects, $1)= ++_LT_AC_TAGVAR(postdep_objects, $1)= ++_LT_AC_TAGVAR(predeps, $1)= ++_LT_AC_TAGVAR(postdeps, $1)= ++_LT_AC_TAGVAR(compiler_lib_search_path, $1)= ++ ++# Source file extension for C++ test sources. ++ac_ext=cpp ++ ++# Object file extension for compiled C++ test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE + +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++# Allow CC to be a program name with arguments. ++lt_save_CC=$CC ++lt_save_LD=$LD ++lt_save_GCC=$GCC ++GCC=$GXX ++lt_save_with_gnu_ld=$with_gnu_ld ++lt_save_path_LD=$lt_cv_path_LD ++if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then ++ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx ++else ++ $as_unset lt_cv_prog_gnu_ld ++fi ++if test -n "${lt_cv_path_LDCXX+set}"; then ++ lt_cv_path_LD=$lt_cv_path_LDCXX ++else ++ $as_unset lt_cv_path_LD ++fi ++test -z "${LDCXX+set}" || LD=$LDCXX ++CC=${CXX-"c++"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++# We don't want -fno-exception wen compiling C++ code, so set the ++# no_builtin_flag separately ++if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++else ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++fi + +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' ++if test "$GXX" = yes; then ++ # Set up default GNU C++ configuration + +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' ++ AC_PROG_LD + +-# Transform the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' ++ # Check if GNU C++ uses GNU ld as the underlying linker, since the ++ # archiving commands below assume that GNU ld is being used. ++ if test "$with_gnu_ld" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to ++ # investigate it a little bit more. (MM) ++ wlarc='${wl}' ++ ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ ++ grep 'no-whole-archive' > /dev/null; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ with_gnu_ld=no ++ wlarc= + +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[[BCDEGRST]]' +- ;; +-solaris* | sysv5*) +- symcode='[[BDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac ++ # A generic and very simple default shared library creation ++ # command for GNU C++ for the case where it uses the native ++ # linker, instead of GNU ld. If possible, this setting should ++ # overridden to take advantage of the native linker features on ++ # the platform it is being used on. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ fi + +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +-# If we're using GNU nm, then use its standard symbol codes. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[[ABCDGISTW]]' ++else ++ GXX=no ++ with_gnu_ld=no ++ wlarc= + fi + +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Write the raw and C identifiers. +-lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- rm -f conftest* +- cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi ++# PORTME: fill in a description of your system's C++ link characteristics ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++_LT_AC_TAGVAR(ld_shlibs, $1)=yes ++case $host_os in ++ aix3*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ aix_use_runtimelinking=no + +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ case $ld_flag in ++ *-brtl*) ++ aix_use_runtimelinking=yes ++ break ++ ;; ++ esac ++ done ++ ;; ++ esac + +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi + +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[[]] = +-{ +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; ++ _LT_AC_TAGVAR(archive_cmds, $1)='' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + +-#ifdef __cplusplus +-} +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if AC_TRY_EVAL(ac_link) && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" ++ if test "$GXX" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : + else +- echo "cannot find nm_test_func in $nlist" >&AC_FD_CC ++ # We have old collect2 ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi +- else +- echo "cannot find nm_test_var in $nlist" >&AC_FD_CC ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' + fi + else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi + fi +- else +- echo "$progname: failed program was:" >&AC_FD_CC +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* + +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +-]) +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + +-# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +-# --------------------------------- +-AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +-[# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator +-fi +-])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; + +-# _LT_AC_PROG_ECHO_BACKSLASH +-# -------------------------- +-# Add some code to the start of the generated configure script which +-# will find an echo command which doesn't interpret backslashes. +-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +-[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], +- [AC_DIVERT_PUSH(NOTICE)]) +-_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Check that we are running under the correct shell. +-SHELL=${CONFIG_SHELL-/bin/sh} ++ chorus*) ++ case $cc_basename in ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; + +-case X$ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi + ;; +-esac +- +-echo=${ECHO-echo} +-if test "X[$]1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X[$]1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then +- # Yippee, $echo works! +- : +-else +- # Restart under the correct shell. +- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +-fi +- +-if test "X[$]1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat <&1 | $EGREP 'single_module' >/dev/null ; then ++ lt_int_apple_cc_single_mod=yes ++ fi ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ fi ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++ ;; + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ freebsd[[12]]*) ++ # C++ shared libraries reported to be fairly broken before switch to ELF ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ freebsd-elf*) ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF ++ # conventions ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ ;; ++ gnu*) ++ ;; ++ hpux9*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ hpux10*|hpux11*) ++ if test $with_gnu_ld = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + +-if test -z "$ECHO"; then +-if test "X${echo_test_string+set}" != Xset; then +-# find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string="`eval $cmd`") 2>/dev/null && +- echo_test_string="`eval $cmd`" && +- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null +- then +- break ++ case $host_cpu in ++ hppa*64*|ia64*) ;; ++ *) ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; ++ esac + fi +- done +-fi +- +-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +-else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ esac + +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$dir/echo" +- break ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test $with_gnu_ld = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ fi ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ interix[[3-9]]*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ irix5* | irix6*) ++ case $cc_basename in ++ CC*) ++ # SGI C++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -ar", where "CC" is the IRIX C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' ++ fi ++ fi ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ esac ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ++ ;; ++ icpc*) ++ # Intel C++ ++ with_gnu_ld=yes ++ # version 8.0 and above of icpc choke on multiply defined symbols ++ # if we add $predep_objects and $postdep_objects, however 7.1 and ++ # earlier do not add the objects themselves. ++ case `$CC -V 2>&1` in ++ *"Version 7."*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ *) # Version 8.0 or newer ++ tmp_idyn= ++ case $host_cpu in ++ ia64*) tmp_idyn=' -i_dynamic';; ++ esac ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ;; ++ cxx*) ++ # Compaq C++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' ++ ++ runpath_var=LD_RUN_PATH ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ m88k*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ++ wlarc= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi +- done +- IFS="$save_ifs" +- +- if test "X$echo" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- echo='print -r' +- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} +- else +- # Try using printf. +- echo='printf %s\n' +- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: ++ # Workaround some broken pre-1.5 toolchains ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ++ ;; ++ openbsd2*) ++ # C++ shared libraries are fairly broken ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd='echo' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ osf3*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + +- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do +- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +- if test "$prev" != 'sed 50q "[$]0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else +- # Oops. We lost completely, so just stick with echo. +- echo=echo ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi +- fi +- fi +- fi +-fi +-fi ++ ;; ++ esac ++ ;; ++ osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ ++ echo "-hidden">> $lib.exp~ ++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ ++ $rm $lib.exp' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-ECHO=$echo +-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then +- ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +-fi ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ psos*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ lcc*) ++ # Lucid ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ ;; ++ esac ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + +-AC_SUBST(ECHO) +-AC_DIVERT_POP +-])# _LT_AC_PROG_ECHO_BACKSLASH ++ output_verbose_link_cmd='echo' + +-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# ------------------------------------------------------------------ +-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +-[if test "$cross_compiling" = yes; then : +- [$4] +-else +- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++ # The C++ compiler must be used to create the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ++ ;; ++ *) ++ # GNU C++ compiler with Solaris linker ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' ++ if $CC --version | grep -v '^2\.7' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ else ++ # g++ 2.7 appears to require `-G' NOT `-shared' on this ++ # platform. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ fi + +-#include ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ ;; ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ # So that behaviour is only enabled if SCOABSPATH is set to a ++ # non-empty value in the environment. Most likely only useful for ++ # creating official distributions of packages. ++ # This is a hack until libtool officially supports absolute path ++ # names for shared libraries. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ vxworks*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++esac ++AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++_LT_AC_TAGVAR(GCC, $1)="$GXX" ++_LT_AC_TAGVAR(LD, $1)="$LD" + +-void fnord() { int i=42;} +-int main () ++AC_LIBTOOL_POSTDEP_PREDEP($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_POP ++CC=$lt_save_CC ++LDCXX=$LD ++LD=$lt_save_LD ++GCC=$lt_save_GCC ++with_gnu_ldcxx=$with_gnu_ld ++with_gnu_ld=$lt_save_with_gnu_ld ++lt_cv_path_LDCXX=$lt_cv_path_LD ++lt_cv_path_LD=$lt_save_path_LD ++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld ++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ++])# AC_LIBTOOL_LANG_CXX_CONFIG ++ ++# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) ++# ------------------------------------ ++# Figure out "hidden" library dependencies from verbose ++# compiler output when linking a shared library. ++# Parse the compiler output and extract the necessary ++# objects, libraries and library flags. ++AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ ++dnl we can't use the lt_simple_compile_test_code here, ++dnl because it contains code intended for an executable, ++dnl not a library. It's possible we should let each ++dnl tag define a new lt_????_link_test_code variable, ++dnl but it's only used here... ++ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext </dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_unknown|x*) $3 ;; + esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_AC_TRY_DLOPEN_SELF ++ done + +-# AC_LIBTOOL_DLOPEN_SELF +-# ------------------- +-AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +-[if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown ++ # Clean up. ++ rm -f a.out a.exe + else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= ++ echo "libtool.m4: error: problem compiling $1 test program" ++fi + +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes ++$rm -f confest.$objext ++ ++# PORTME: override above test on systems where it is broken ++ifelse([$1],[CXX], ++[case $host_os in ++interix[[3-9]]*) ++ # Interix 3.5 installs completely hosed .la files for C++, so rather than ++ # hack all around it, let's just trust "g++" to DTRT. ++ _LT_AC_TAGVAR(predep_objects,$1)= ++ _LT_AC_TAGVAR(postdep_objects,$1)= ++ _LT_AC_TAGVAR(postdeps,$1)= ++ ;; ++ ++linux*) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ # ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi + ;; ++ esac ++ ;; + +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac + +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +- ]) +- ]) +- ]) +- ]) ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi + ;; + esac ++ ;; ++esac ++]) + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no ++case " $_LT_AC_TAGVAR(postdeps, $1) " in ++*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; ++esac ++])# AC_LIBTOOL_POSTDEP_PREDEP ++ ++# AC_LIBTOOL_LANG_F77_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) ++AC_DEFUN([_LT_AC_LANG_F77_CONFIG], ++[AC_REQUIRE([AC_PROG_F77]) ++AC_LANG_PUSH(Fortran 77) ++ ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_AC_TAGVAR(allow_undefined_flag, $1)= ++_LT_AC_TAGVAR(always_export_symbols, $1)=no ++_LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_direct, $1)=no ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++_LT_AC_TAGVAR(hardcode_automatic, $1)=no ++_LT_AC_TAGVAR(module_cmds, $1)= ++_LT_AC_TAGVAR(module_expsym_cmds, $1)= ++_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_AC_TAGVAR(no_undefined_flag, $1)= ++_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Source file extension for f77 test sources. ++ac_ext=f ++ ++# Object file extension for compiled f77 test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${F77-"f77"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++AC_MSG_CHECKING([if libtool supports shared libraries]) ++AC_MSG_RESULT([$can_build_shared]) ++ ++AC_MSG_CHECKING([whether to build shared libraries]) ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' + fi ++ ;; ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++AC_MSG_RESULT([$enable_shared]) ++ ++AC_MSG_CHECKING([whether to build static libraries]) ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++AC_MSG_RESULT([$enable_static]) ++ ++_LT_AC_TAGVAR(GCC, $1)="$G77" ++_LT_AC_TAGVAR(LD, $1)="$LD" ++ ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++AC_LANG_POP ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_F77_CONFIG + +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++# AC_LIBTOOL_LANG_GCJ_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) ++AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], ++[AC_LANG_SAVE ++ ++# Source file extension for Java test sources. ++ac_ext=java ++ ++# Object file extension for compiled Java test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="class foo {}" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE + +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${GCJ-"gcj"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++# GCJ did not exist at the time GCC didn't implicitly link libc in. ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++ ++AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_GCJ_CONFIG ++ ++ ++# AC_LIBTOOL_LANG_RC_CONFIG ++# ------------------------- ++# Ensure that the configuration vars for the Windows resource compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) ++AC_DEFUN([_LT_AC_LANG_RC_CONFIG], ++[AC_LANG_SAVE ++ ++# Source file extension for RC test sources. ++ac_ext=rc ++ ++# Object file extension for compiled RC test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="$lt_simple_compile_test_code" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${RC-"windres"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_RC_CONFIG ++ ++ ++# AC_LIBTOOL_CONFIG([TAGNAME]) ++# ---------------------------- ++# If TAGNAME is not passed, then create an initial libtool script ++# with a default configuration from the untagged config vars. Otherwise ++# add code to config.status for appending the configuration named by ++# TAGNAME from the matching tagged config vars. ++AC_DEFUN([AC_LIBTOOL_CONFIG], ++[# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ _LT_AC_TAGVAR(compiler, $1) \ ++ _LT_AC_TAGVAR(CC, $1) \ ++ _LT_AC_TAGVAR(LD, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ ++ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ ++ _LT_AC_TAGVAR(old_archive_cmds, $1) \ ++ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ ++ _LT_AC_TAGVAR(predep_objects, $1) \ ++ _LT_AC_TAGVAR(postdep_objects, $1) \ ++ _LT_AC_TAGVAR(predeps, $1) \ ++ _LT_AC_TAGVAR(postdeps, $1) \ ++ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ ++ _LT_AC_TAGVAR(archive_cmds, $1) \ ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ ++ _LT_AC_TAGVAR(postinstall_cmds, $1) \ ++ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ ++ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ ++ _LT_AC_TAGVAR(no_undefined_flag, $1) \ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ ++ _LT_AC_TAGVAR(hardcode_automatic, $1) \ ++ _LT_AC_TAGVAR(module_cmds, $1) \ ++ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ ++ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ ++ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ ++ _LT_AC_TAGVAR(exclude_expsyms, $1) \ ++ _LT_AC_TAGVAR(include_expsyms, $1); do + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++ case $var in ++ _LT_AC_TAGVAR(old_archive_cmds, $1) | \ ++ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ ++ _LT_AC_TAGVAR(archive_cmds, $1) | \ ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ ++ _LT_AC_TAGVAR(module_cmds, $1) | \ ++ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; ++ case $lt_echo in ++ *'\[$]0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ++ ;; + esac + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-])# AC_LIBTOOL_DLOPEN_SELF ++ifelse([$1], [], ++ [cfgfile="${ofile}T" ++ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 ++ $rm -f "$cfgfile" ++ AC_MSG_NOTICE([creating $ofile])], ++ [cfgfile="$ofile"]) ++ ++ cat <<__EOF__ >> "$cfgfile" ++ifelse([$1], [], ++[#! $SHELL + +-AC_DEFUN([_LT_AC_LTCONFIG_HACK], +-[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^X//' +-sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' ++# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 ++# Free Software Foundation, Inc. ++# ++# This file is part of GNU Libtool: ++# Originally by Gordon Matzigkeit , 1996 ++# ++# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. + +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' ++# A sed program that does not truncate output. ++SED=$lt_SED + +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="$SED -e 1s/^X//" + +-# Constants: +-rm="rm -f" ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes ++# The names of the tagged configurations supported by this script. ++available_tags= + +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" ++# ### BEGIN LIBTOOL CONFIG], ++[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL + +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared + +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +-esac ++# Whether or not to build static libraries. ++build_old_libs=$enable_static + +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install + +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="[$]2" ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os + +-AC_MSG_CHECKING([for objdir]) +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs +-fi +-rmdir .libs 2>/dev/null +-AC_MSG_RESULT($objdir) ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os + ++# An echo program that does not interpret backslashes. ++echo=$lt_echo + +-AC_ARG_WITH(pic, +-[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +-pic_mode="$withval", pic_mode=default) +-test -z "$pic_mode" && pic_mode=default ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS + +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-AC_MSG_CHECKING([for $compiler option to produce PIC]) +-AC_CACHE_VAL(lt_cv_prog_cc_pic, +-[ lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared ++# A C compiler. ++LTCC=$lt_LTCC + +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS + +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' +- ;; +- esac +- else +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; ++# A language-specific compiler. ++CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; ++# Is the compiler the GNU C compiler? ++with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; ++# An ERE matcher. ++EGREP=$lt_EGREP + +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; ++# The linker used to build libraries. ++LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S + +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; ++# A BSD-compatible nm program. ++NM=$lt_NM + +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; ++# A symbol stripping program ++STRIP=$lt_STRIP + +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD + +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" + +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; ++# Used on cygwin: assembler. ++AS="$AS" + +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir + +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac +- fi +-]) +-if test -z "$lt_cv_prog_cc_pic"; then +- AC_MSG_RESULT([none]) +-else +- AC_MSG_RESULT([$lt_cv_prog_cc_pic]) ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds + +- # Check to make sure the pic_flag actually works. +- AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) +- AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- AC_TRY_COMPILE([], [], [dnl +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- ], [dnl +- lt_cv_prog_cc_pic_works=no +- ]) +- CFLAGS="$save_CFLAGS" +- ]) ++# How to pass a linker flag through the compiler. ++wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi ++# Object file suffix (normally "o"). ++objext="$ac_objext" + +- AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +-fi ++# Old archive suffix (normally "a"). ++libext="$libext" + +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) +- if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : +- else +- AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' + +-AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +-AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" +- AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) +- LDFLAGS="$save_LDFLAGS" +-]) ++# Executable file suffix (normally ""). ++exeext="$exeext" + +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) +- +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" +- +- +-# Check to see if options -o and -c are simultaneously supported by compiler +-AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +-AC_CACHE_VAL([lt_cv_compiler_c_o], [ +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes +- fi +-else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&AC_FD_CC +- lt_cv_compiler_c_o=no +-fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null +-]) +-compiler_c_o=$lt_cv_compiler_c_o +-AC_MSG_RESULT([$compiler_c_o]) ++# Additional compiler flags for building library objects. ++pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) ++pic_mode=$pic_mode + +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) +- AC_CACHE_VAL([lt_cv_compiler_o_lo], [ +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo +- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi +- ]) +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" +- ]) +- compiler_o_lo=$lt_cv_compiler_o_lo +- AC_MSG_RESULT([$compiler_o_lo]) +-else +- compiler_o_lo=no +-fi ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len + +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$compiler_c_o" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- AC_TRY_COMPILE([], [int some_variable = 0;], [dnl +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- ]) +- CFLAGS="$save_CFLAGS" +- AC_MSG_RESULT([$compiler_rtti_exceptions]) ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks + +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' +- else +- no_builtin_flag=' -fno-builtin' +- fi +-fi ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix + +-# See if the linker supports building shared libraries. +-AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) ++# Do we need a version for libraries? ++need_version=$need_version + +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-archive_cmds= +-archive_expsym_cmds= +-old_archive_from_new_cmds= +-old_archive_from_expsyms_cmds= +-export_dynamic_flag_spec= +-whole_archive_flag_spec= +-thread_safe_flag_spec= +-hardcode_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-always_export_symbols=no +-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +-# include_expsyms should be a list of space-separated symbols to be *always* +-# included in the symbol list +-include_expsyms= +-# exclude_expsyms can be an egrep regular expression of symbols to exclude +-# it will be wrapped by ` (' and `)$', so one must not match beginning or +-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +-# as well as any symbol that contains `d'. +-exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +-# platforms (ab)use it in PIC code, but their linkers get confused if +-# the symbol is explicitly referenced. Since portable code cannot +-# rely on this symbol name, it's probably fine to never include it in +-# preloaded symbol tables. +-extract_expsyms_cmds= ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen + +-case $host_os in +-cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +-openbsd*) +- with_gnu_ld=no +- ;; +-esac ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self + +-ld_shlibs=yes +-if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- ld_shlibs=no +- cat <&2 ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +-EOF +- ;; ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can use +- # them. +- ld_shlibs=no +- ;; ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +- beos*) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs=no +- fi +- ;; ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +- cygwin* | mingw* | pw32*) +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac ++# Library versioning type. ++version_type=$version_type + +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' +- else +- ltdll_obj= +- ltdll_cmds= +- fi ++# Format of library name prefix. ++libname_spec=$lt_libname_spec + +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \[$]# in +- 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' +- ;; ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec + +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then +- ld_shlibs=no +- cat <&2 ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +-EOF +- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) ++archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds + +- *) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- ld_shlibs=no +- fi +- ;; +- esac ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) ++module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +- if test "$ld_shlibs" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- fi +-else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct=unsupported +- fi +- ;; ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib + +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- esac ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct=yes +- else +- # We have old collect2 +- hardcode_direct=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L=yes +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_libdir_separator= +- fi +- esac ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +- shared_flag='-shared' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds + +- # It seems that -bexpall can do strange things, so it is better to +- # generate a list of symbols to export. +- always_export_symbols=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='-berok' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' +- fi +- fi +- ;; ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs=no +- ;; ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec=' ' +- allow_undefined_flag=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_from_new_cmds='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path='`cygpath -w "$srcfile"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- freebsd1*) +- ld_shlibs=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var + +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; ++# How to hardcode a shared library path into an executable. ++hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +- irix5* | irix6*) +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +- newsos6) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_shlibpath_var=no +- ;; ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +- openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- else +- case "$host_os" in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +- os2*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- ;; ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +- #Both c and cxx compiler support -rpath directly +- hardcode_libdir_flag_spec='-rpath $libdir' +- fi +- hardcode_libdir_separator=: +- ;; ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +- sco3.2v5*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- export_dynamic_flag_spec='${wl}-Bexport' +- ;; ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" + +- solaris*) +- # gcc --version < 3.0 without binutils cannot create self contained +- # shared libraries reliably, requiring libgcc.a to resolve some of +- # the object symbols generated in some cases. Libraries that use +- # assert need libgcc.a to resolve __eprintf, for example. Linking +- # a copy of libgcc.a into every shared library to guarantee resolving +- # such symbols causes other problems: According to Tim Van Holder +- # , C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [[12]].*) +- cat <&2 ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-EOF +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- esac +- link_all_deplibs=yes +- ;; ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path + +- sysv4) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? +- else +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=no #Motorola manual says yes, but my tests say they lie +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; ++# Set to yes if exported symbols are required. ++always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +- sysv4.3*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='-Bexport' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds + +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs=yes +- fi +- ;; ++# Symbols that must always be exported. ++include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ifelse([$1],[], ++[# ### END LIBTOOL CONFIG], ++[# ### END LIBTOOL TAG CONFIG: $tagname]) + +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; ++__EOF__ + +- *) +- ld_shlibs=no ++ifelse([$1],[], [ ++ case $host_os in ++ aix3*) ++ cat <<\EOF >> "$cfgfile" ++ ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++EOF + ;; + esac +-fi +-AC_MSG_RESULT([$ld_shlibs]) +-test "$ld_shlibs" = no && can_build_shared=no + +-# Check hardcoding attributes. +-AC_MSG_CHECKING([how to hardcode library paths into programs]) +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var"; then ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + +- # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$hardcode_shlibpath_var" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate +- fi ++ mv -f "$cfgfile" "$ofile" || \ ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++]) + else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi + fi +-AC_MSG_RESULT([$hardcode_action]) ++])# AC_LIBTOOL_CONFIG + +-striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +- AC_MSG_RESULT([no]) ++ ++# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) ++# ------------------------------------------- ++AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], ++[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++ ++_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++ ++if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++ ++ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], ++ lt_cv_prog_compiler_rtti_exceptions, ++ [-fno-rtti -fno-exceptions], [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) + fi ++])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# PORTME Fill in your ld.so characteristics +-AC_MSG_CHECKING([dynamic linker characteristics]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++# --------------------------------- ++AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], ++[AC_REQUIRE([AC_CANONICAL_HOST]) ++AC_REQUIRE([LT_AC_PROG_SED]) ++AC_REQUIRE([AC_PROG_NM]) ++AC_REQUIRE([AC_OBJEXT]) ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++AC_MSG_CHECKING([command to parse $NM output from $compiler object]) ++AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], ++[ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[[BCDEGRST]]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' ++ ++# Transform an extracted symbol line into a proper C declaration ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[[BCDT]]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[[ABCDGISTW]]' ++ ;; ++hpux*) # Its linker distinguishes data from code symbols ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDEGRST]]' ++ fi ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ;; ++linux* | k*bsd*-gnu) ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDGIRSTW]]' ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[[BCDEGRST]]' ++ ;; ++osf*) ++ symcode='[[BCDEGQRST]]' ++ ;; ++solaris*) ++ symcode='[[BDRT]]' ++ ;; ++sco3.2v5*) ++ symcode='[[DT]]' ++ ;; ++sysv4.2uw2*) ++ symcode='[[DT]]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[[ABDT]]' ++ ;; ++sysv4) ++ symcode='[[DFNSTU]]' ++ ;; ++esac ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[[ABCDGIRSTW]]' ;; ++esac ++ ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if grep ' nm_test_var$' "$nlist" >/dev/null; then ++ if grep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH ++ cat <> conftest.$ac_ext ++#if defined (__STDC__) && __STDC__ ++# define lt_ptr_t void * ++#else ++# define lt_ptr_t char * ++# define const ++#endif + +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ lt_ptr_t address; ++} ++lt_preloaded_symbols[[]] = ++{ ++EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext ++ cat <<\EOF >> conftest.$ac_ext ++ {0, (lt_ptr_t) 0} ++}; + +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : ++#ifdef __cplusplus ++} ++#endif ++EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" + else +- can_build_shared=no ++ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can +- # not hardcode correct soname into executable. Probably we can +- # add versioning support to collect2, so additional links can +- # be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ else ++ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD ++ fi + else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}.so$major' ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi +- shlibpath_var=LIBPATH ++ else ++ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD ++ cat conftest.$ac_ext >&5 + fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' +- ;; +- +-beos*) +- library_names_spec='${libname}.so' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; ++ rm -f conftest* conftst* + +-bsdi4*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- export_dynamic_flag_spec=-rdynamic +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++]) ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ AC_MSG_RESULT(failed) ++else ++ AC_MSG_RESULT(ok) ++fi ++]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +-cygwin* | mingw* | pw32*) +- version_type=windows +- need_version=no +- need_lib_prefix=no +- case $GCC,$host_os in +- yes,cygwin*) +- library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` +- ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- ;; +- *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; + +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- ;; ++# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) ++# --------------------------------------- ++AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], ++[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= ++_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +-freebsd1*) +- dynamic_linker=no +- ;; ++AC_MSG_CHECKING([for $compiler option to produce PIC]) ++ ifelse([$1],[CXX],[ ++ # C++ specific cases for pic, static, wl, etc. ++ if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- need_version=no +- need_lib_prefix=no ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi + ;; +- freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' +- need_version=yes ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- *) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ mingw* | cygwin* | os2* | pw32*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; ++ *djgpp*) ++ # DJGPP does not support shared libraries at all ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ else ++ case $host_os in ++ aix4* | aix5*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ chorus*) ++ case $cc_basename in ++ cxch68*) ++ # Green Hills C++ Compiler ++ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ++ ;; ++ esac ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ esac ++ ;; ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD uses GNU C++ ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ if test "$host_cpu" != ia64; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ fi ++ ;; ++ aCC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; ++ irix5* | irix6* | nonstopux*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ # CC pic flag -KPIC is the default. ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # KAI C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ icpc* | ecpc*) ++ # Intel C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler. ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ cxx*) ++ # Compaq C++ ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ ;; ++ m88k*) ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ ;; ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ cxx*) ++ # Digital/Compaq C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ psos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ lcc*) ++ # Lucid ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ esac ++ ;; ++ vxworks*) ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++], ++[ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; + +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- dynamic_linker="$host_os dld.sl" +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++ ;; + +-irix5* | irix6*) +- version_type=irix +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' +- case $host_os in +- irix5*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; + +-# No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) +- dynamic_linker=no +- ;; ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; + +-# This must be Linux ELF. +-linux-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; + +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; + +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ enable_shared=no ++ ;; + +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; + +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case "$host_os" in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac + ;; ++ + *) +- shlibpath_overrides_runpath=yes ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else +- shlibpath_overrides_runpath=yes +- fi +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-os2*) +- libname_spec='$name' +- need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ esac ++ ;; + +-osf3* | osf4* | osf5*) +- version_type=osf +- need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++ hpux9* | hpux10* | hpux11*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ ;; + +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; ++ irix5* | irix6* | nonstopux*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC (with -KPIC) is the default. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; + +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; ++ newsos6) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ccc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All Alpha code is PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ++ ;; ++ esac ++ ;; ++ esac + ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ++ osf3* | osf4* | osf5*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All OSF/1 code is PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; +- esac +- ;; + +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++ rdos*) ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++ solaris*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; ++ esac ++ ;; + +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; ++ sunos4*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-# Report the final consequences. +-AC_MSG_CHECKING([if libtool supports shared libraries]) +-AC_MSG_RESULT([$can_build_shared]) ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; + +-AC_MSG_CHECKING([whether to build shared libraries]) +-test "$can_build_shared" = "no" && enable_shared=no ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case "$host_os" in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; ++ unicos*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; + +-aix4*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-AC_MSG_RESULT([$enable_shared]) ++ uts4*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; + +-AC_MSG_CHECKING([whether to build static libraries]) +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-AC_MSG_RESULT([$enable_static]) ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++]) ++AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +-if test "$hardcode_action" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then ++ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], ++ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), ++ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], ++ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in ++ "" | " "*) ;; ++ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; ++ esac], ++ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) + fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ++ ;; ++esac + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi ++# ++# Check to make sure the static flag actually works. ++# ++wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" ++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], ++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), ++ $lt_tmp_static_flag, ++ [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ++]) + +-AC_LIBTOOL_DLOPEN_SELF + +-if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) +- AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], +- [$rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile); then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) +- then +- lt_cv_archive_cmds_need_lc=no +- else +- lt_cv_archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$save_allow_undefined_flag ++# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) ++# ------------------------------------ ++# See if the linker supports building shared libraries. ++AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++ifelse([$1],[CXX],[ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ case $host_os in ++ aix4* | aix5*) ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else +- cat conftest.err 1>&5 +- fi]) +- AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ fi ++ ;; ++ pw32*) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ++ ;; ++ cygwin* | mingw*) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ;; ++ linux* | k*bsd*-gnu) ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ esac ++],[ ++ runpath_var= ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)= ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ _LT_AC_TAGVAR(archive_cmds, $1)= ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=no ++ _LT_AC_TAGVAR(module_cmds, $1)= ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)= ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ _LT_AC_TAGVAR(include_expsyms, $1)= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ _LT_CC_BASENAME([$compiler]) ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no + ;; + esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} + +-# The second clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- : +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- test -f Makefile && make "$ltmain" +-fi ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' + +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac + +- echo creating $ofile ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <&2 + +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS \ +- AR AR_FLAGS CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. + +- case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++EOF ++ fi + ;; +- esac +- done + +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL ++ amigaos*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; + +-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996-2000 Free Software Foundation, Inc. +-# Originally by Gordon Matzigkeit , 1996 +-# +-# 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. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ++ interix[[3-9]]*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; + +-# ### BEGIN LIBTOOL CONFIG ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ if test $supports_anon_versioning = yes; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; + +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <&2 + +-# Whether or not to build static libraries. +-build_old_libs=$enable_static ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. + +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$need_lc ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <<_LT_EOF 1>&2 + +-# The host system. +-host_alias=$host_alias +-host=$host ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. + +-# An echo program that does not interpret backslashes. +-echo=$lt_echo ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; + +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS ++ sunos4*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# The default C compiler. +-CC=$lt_CC ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac + +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC ++ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then ++ runpath_var= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ fi ++ ;; + +-# The linker used to build libraries. +-LD=$lt_LD ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ else ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no + +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac + +-# A BSD-compatible nm program. +-NM=$lt_NM ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi + +-# A symbol stripping program +-STRIP=$STRIP ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi + +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; + +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" ++ amigaos*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ # see comment about different semantics on the GNU ld section ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; + +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" ++ bsdi[[45]]*) ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ++ ;; + +-# Used on cygwin: assembler. +-AS="$AS" ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' ++ # FIXME: Should let the user specify the lib program. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ;; + +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++ ;; + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds ++ dgux*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# How to pass a linker flag through the compiler. +-wl=$lt_wl ++ freebsd1*) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; + +-# Object file suffix (normally "o"). +-objext="$ac_objext" ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Old archive suffix (normally "a"). +-libext="$libext" ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Executable file suffix (normally ""). +-exeext="$exeext" ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag +-pic_mode=$pic_mode ++ hpux9*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; + +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ fi ++ ;; + +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + +-# Must we lock files when doing compilation ? +-need_locks=$lt_need_locks ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ ;; ++ esac ++ fi ++ ;; + +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; + +-# Do we need a version for libraries? +-need_version=$need_version ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen ++ newsos6) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ else ++ case $host_os in ++ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static ++ os2*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; + +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_link_static_flag ++ osf3*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; + +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_no_builtin_flag ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ else ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ # Both c and cxx compiler support -rpath directly ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; + +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ solaris*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; + +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Library versioning type. +-version_type=$version_type ++ sysv4) ++ case $host_vendor in ++ sni) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ ;; ++ motorola) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Format of library name prefix. +-libname_spec=$lt_libname_spec ++ sysv4.3*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ++ ;; + +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ fi ++ ;; + +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; + +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; + +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ uts4*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; + +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++]) ++AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds +-archive_expsym_cmds=$lt_archive_expsym_cmds +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds ++# ++# Do we need to explicitly link libc? ++# ++case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in ++x|xyes) ++ # Assume -lc should be added ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $_LT_AC_TAGVAR(archive_cmds, $1) in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ AC_MSG_CHECKING([whether -lc should be explicitly linked in]) ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) ++ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)= ++ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) ++ then ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ else ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ fi ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ++ ;; ++ esac ++ fi ++ ;; ++esac ++])# AC_LIBTOOL_PROG_LD_SHLIBS + +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method + +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd ++# _LT_AC_FILE_LTDLL_C ++# ------------------- ++# Be careful that the start marker always follows a newline. ++AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ ++# /* ltdll.c starts here */ ++# #define WIN32_LEAN_AND_MEAN ++# #include ++# #undef WIN32_LEAN_AND_MEAN ++# #include ++# ++# #ifndef __CYGWIN__ ++# # ifdef __CYGWIN32__ ++# # define __CYGWIN__ __CYGWIN32__ ++# # endif ++# #endif ++# ++# #ifdef __cplusplus ++# extern "C" { ++# #endif ++# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); ++# #ifdef __cplusplus ++# } ++# #endif ++# ++# #ifdef __CYGWIN__ ++# #include ++# DECLARE_CYGWIN_DLL( DllMain ); ++# #endif ++# HINSTANCE __hDllInstance_base; ++# ++# BOOL APIENTRY ++# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) ++# { ++# __hDllInstance_base = hInst; ++# return TRUE; ++# } ++# /* ltdll.c ends here */ ++])# _LT_AC_FILE_LTDLL_C + +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag + +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag ++# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) ++# --------------------------------- ++AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds + +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval ++# old names ++AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) ++AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) ++AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) ++AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) ++AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) ++AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) ++AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_global_symbol_pipe ++# This is just to silence aclocal about the macro not being used ++ifelse([AC_DISABLE_FAST_INSTALL]) + +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl ++AC_DEFUN([LT_AC_PROG_GCJ], ++[AC_CHECK_TOOL(GCJ, gcj, no) ++ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" ++ AC_SUBST(GCJFLAGS) ++]) + +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address ++AC_DEFUN([LT_AC_PROG_RC], ++[AC_CHECK_TOOL(RC, windres, no) ++]) + +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var ++# Cheap backport of AS_EXECUTABLE_P and required macros ++# from Autoconf 2.59; we should not use $as_executable_p directly. + +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++# _AS_TEST_PREPARE ++# ---------------- ++m4_ifndef([_AS_TEST_PREPARE], ++[m4_defun([_AS_TEST_PREPARE], ++[if test -x / >/dev/null 2>&1; then ++ as_executable_p='test -x' ++else ++ as_executable_p='test -f' ++fi ++])])# _AS_TEST_PREPARE + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action ++# AS_EXECUTABLE_P ++# --------------- ++# Check whether a file is executable. ++m4_ifndef([AS_EXECUTABLE_P], ++[m4_defun([AS_EXECUTABLE_P], ++[AS_REQUIRE([_AS_TEST_PREPARE])dnl ++$as_executable_p $1[]dnl ++])])# AS_EXECUTABLE_P ++ ++# NOTE: This macro has been submitted for inclusion into # ++# GNU Autoconf as AC_PROG_SED. When it is available in # ++# a released version of Autoconf we should remove this # ++# macro and use it instead. # ++# LT_AC_PROG_SED ++# -------------- ++# Check for a fully-functional sed program, that truncates ++# as few characters as possible. Prefer GNU sed if found. ++AC_DEFUN([LT_AC_PROG_SED], ++[AC_MSG_CHECKING([for a sed that does not truncate output]) ++AC_CACHE_VAL(lt_cv_path_SED, ++[# Loop through the user's path and test for sed and gsed. ++# Then use that list of sed's as ones to test for truncation. ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for lt_ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then ++ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" ++ fi ++ done ++ done ++done ++IFS=$as_save_IFS ++lt_ac_max=0 ++lt_ac_count=0 ++# Add /usr/xpg4/bin/sed as it is typically found on Solaris ++# along with /bin/sed that truncates output. ++for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do ++ test ! -f $lt_ac_sed && continue ++ cat /dev/null > conftest.in ++ lt_ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >conftest.in ++ # Check for GNU sed and select it if it is found. ++ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then ++ lt_cv_path_SED=$lt_ac_sed ++ break ++ fi ++ while true; do ++ cat conftest.in conftest.in >conftest.tmp ++ mv conftest.tmp conftest.in ++ cp conftest.in conftest.nl ++ echo >>conftest.nl ++ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break ++ cmp -s conftest.out conftest.nl || break ++ # 10000 chars as input seems more than enough ++ test $lt_ac_count -gt 10 && break ++ lt_ac_count=`expr $lt_ac_count + 1` ++ if test $lt_ac_count -gt $lt_ac_max; then ++ lt_ac_max=$lt_ac_count ++ lt_cv_path_SED=$lt_ac_sed ++ fi ++ done ++done ++]) ++SED=$lt_cv_path_SED ++AC_SUBST([SED]) ++AC_MSG_RESULT([$SED]) ++]) + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs ++# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++# AM_AUTOMAKE_VERSION(VERSION) ++# ---------------------------- ++# Automake X.Y traces this macro to ensure aclocal.m4 has been ++# generated from the m4 files accompanying Automake X.Y. ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.10' ++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to ++dnl require some minimum version. Point them to the right macro. ++m4_if([$1], [1.10], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) + +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) ++ ++# AM_SET_CURRENT_AUTOMAKE_VERSION ++# ------------------------------- ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. ++# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. ++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ++[AM_AUTOMAKE_VERSION([1.10])dnl ++_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct ++# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to ++# `$srcdir', `$srcdir/..', or `$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is `.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. + +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[dnl Rely on autoconf to set up CDPATH properly. ++AC_PREREQ([2.50])dnl ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++]) + +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" ++# AM_CONDITIONAL -*- Autoconf -*- + +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs ++# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++# serial 8 + +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ(2.52)dnl ++ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) + +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols ++# serial 9 + +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds ++# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds + +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms ++# _AM_DEPENDENCIES(NAME) ++# ---------------------- ++# See how the compiler implements dependency checking. ++# NAME is "CC", "CXX", "GCJ", or "OBJC". ++# We try a few techniques and use that to set a single cache variable. ++# ++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ++# dependency, and given that the user is not expected to run this macro, ++# just rely on AC_PROG_CC. ++AC_DEFUN([_AM_DEPENDENCIES], ++[AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++AC_REQUIRE([AM_MAKE_INCLUDE])dnl ++AC_REQUIRE([AM_DEP_TRACK])dnl + +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms ++ifelse([$1], CC, [depcc="$CC" am_compiler_list=], ++ [$1], CXX, [depcc="$CXX" am_compiler_list=], ++ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ++ [$1], UPC, [depcc="$UPC" am_compiler_list=], ++ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ++ [depcc="$$1" am_compiler_list=]) + +-# ### END LIBTOOL CONFIG ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named `D' -- because `-MD' means `put the output ++ # in D'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + +-__EOF__ ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +- case $host_os in +- aix3*) +- cat <<\EOF >> "${ofile}T" ++ case $depmode in ++ nosideeffect) ++ # after this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ none) break ;; ++ esac ++ # We check with `-c' and `-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle `-M -o', and we need to detect this. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done + +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none + fi +-EOF +- ;; +- esac ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) + +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# 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. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE(dependency-tracking, ++[ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' + fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ++]) + +-])# _LT_AC_LTCONFIG_HACK ++# Generate code to set up dependency tracking. -*- Autoconf -*- + +-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +-AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +-AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) ++#serial 3 + +-# AC_ENABLE_SHARED - implement the --enable-shared flag +-# Usage: AC_ENABLE_SHARED[(DEFAULT)] +-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +-# `yes'. +-AC_DEFUN([AC_ENABLE_SHARED], +-[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE(shared, +-changequote(<<, >>)dnl +-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +-changequote([, ])dnl +-[p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi ++# _AM_OUTPUT_DEPENDENCY_COMMANDS ++# ------------------------------ ++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ++[for mf in $CONFIG_FILES; do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named `Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # When using ansi2knr, U may be empty or an underscore; expand it ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" + done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +-]) ++done ++])# _AM_OUTPUT_DEPENDENCY_COMMANDS + +-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +-AC_DEFUN([AC_DISABLE_SHARED], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_SHARED(no)]) + +-# AC_ENABLE_STATIC - implement the --enable-static flag +-# Usage: AC_ENABLE_STATIC[(DEFAULT)] +-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +-# `yes'. +-AC_DEFUN([AC_ENABLE_STATIC], +-[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE(static, +-changequote(<<, >>)dnl +-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +-changequote([, ])dnl +-[p=${PACKAGE-default} +-case $enableval in +-yes) enable_static=yes ;; +-no) enable_static=no ;; +-*) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ++# AM_OUTPUT_DEPENDENCY_COMMANDS ++# ----------------------------- ++# This macro should only be invoked once -- use via AC_REQUIRE. ++# ++# This code is only required when automatic dependency tracking ++# is enabled. FIXME. This creates each `.P' file that we will ++# need in order to bootstrap the dependency handling code. ++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ++[AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) + ]) + +-# AC_DISABLE_STATIC - set the default static flag to --disable-static +-AC_DEFUN([AC_DISABLE_STATIC], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_STATIC(no)]) +- +- +-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +-# `yes'. +-AC_DEFUN([AC_ENABLE_FAST_INSTALL], +-[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE(fast-install, +-changequote(<<, >>)dnl +-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +-changequote([, ])dnl +-[p=${PACKAGE-default} +-case $enableval in +-yes) enable_fast_install=yes ;; +-no) enable_fast_install=no ;; +-*) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac], +-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +-]) ++# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +-AC_DEFUN([AC_DISABLE_FAST_INSTALL], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_FAST_INSTALL(no)]) ++# serial 8 + +-# AC_LIBTOOL_PICMODE - implement the --with-pic flag +-# Usage: AC_LIBTOOL_PICMODE[(MODE)] +-# Where MODE is either `yes' or `no'. If omitted, it defaults to +-# `both'. +-AC_DEFUN([AC_LIBTOOL_PICMODE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-pic_mode=ifelse($#,1,$1,default)]) ++# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. ++AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + ++# Do all the work for Automake. -*- Autoconf -*- + +-# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +-AC_DEFUN([AC_PATH_TOOL_PREFIX], +-[AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="ifelse([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++# serial 12 + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-]) ++# This macro actually does too much. Some checks are only needed if ++# your package does certain things. But this isn't really a big deal. + ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.60])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi + +-# AC_PATH_MAGIC - find a file program which can recognise a shared library +-AC_DEFUN([AC_PATH_MAGIC], +-[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +-AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' + else +- MAGIC_CMD=: ++ CYGPATH_W=echo + fi + fi ++AC_SUBST([CYGPATH_W]) ++ ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. ++m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, ++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ++ ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ++ ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ++AM_MISSING_PROG(AUTOCONF, autoconf) ++AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ++AM_MISSING_PROG(AUTOHEADER, autoheader) ++AM_MISSING_PROG(MAKEINFO, makeinfo) ++AM_PROG_INSTALL_SH ++AM_PROG_INSTALL_STRIP ++AC_REQUIRE([AM_PROG_MKDIR_P])dnl ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES(CC)], ++ [define([AC_PROG_CC], ++ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES(CXX)], ++ [define([AC_PROG_CXX], ++ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJC], ++ [_AM_DEPENDENCIES(OBJC)], ++ [define([AC_PROG_OBJC], ++ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ++]) + ]) + + +-# AC_PROG_LD - find the path to the GNU or non-GNU linker +-AC_DEFUN([AC_PROG_LD], +-[AC_ARG_WITH(gnu-ld, +-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by GCC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | [[A-Za-z]]:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. ++ ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $1 | $1:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) ++done ++echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ++ ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} ++AC_SUBST(install_sh)]) ++ ++# Copyright (C) 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# serial 2 ++ ++# Check whether the underlying file-system supports filenames ++# with a leading dot. For instance MS-DOS doesn't. ++AC_DEFUN([AM_SET_LEADING_DOT], ++[rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. + else +- AC_MSG_CHECKING([for non-GNU ld]) ++ am__leading_dot=_ + fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then +- test "$with_gnu_ld" != no && break +- else +- test "$with_gnu_ld" != yes && break +- fi +- fi +- done +- IFS="$ac_save_ifs" +-else +- lt_cv_path_LD="$LD" # Let the user override the test with a path. +-fi]) +-LD="$lt_cv_path_LD" +-if test -n "$LD"; then +- AC_MSG_RESULT($LD) +-else +- AC_MSG_RESULT(no) ++rmdir .tst 2>/dev/null ++AC_SUBST([am__leading_dot])]) ++ ++# Check to see how 'make' treats includes. -*- Autoconf -*- ++ ++# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# serial 3 ++ ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU + fi +-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +-AC_PROG_LD_GNU ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf + ]) + +-# AC_PROG_LD_GNU - +-AC_DEFUN([AC_PROG_LD_GNU], +-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +-[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then +- lt_cv_prog_gnu_ld=yes +-else +- lt_cv_prog_gnu_ld=no +-fi]) +-with_gnu_ld=$lt_cv_prog_gnu_ld +-]) ++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +-# -- PORTME Some linkers may need a different reload flag. +-AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +-[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +-[lt_cv_ld_reload_flag='-r']) +-reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" +-]) ++# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +-# -- PORTME fill in with the dynamic library characteristics +-AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +-[AC_CACHE_CHECK([how to recognise dependant libraries], +-lt_cv_deplibs_check_method, +-[lt_cv_file_magic_cmd='$MAGIC_CMD' +-lt_cv_file_magic_test_file= +-lt_cv_deplibs_check_method='unknown' +-# Need to set the preceding variable on all platforms that support +-# interlibrary dependencies. +-# 'none' -- dependencies not supported. +-# `unknown' -- same as none, but documents that we really don't know. +-# 'pass_all' -- all dependencies passed with no checks. +-# 'test_compile' -- check by making test program. +-# 'file_magic [[regex]]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given egrep regex. +-# If you have `file' or equivalent on your system and you're not sure +-# whether `pass_all' will *always* work, you probably want this one. ++# serial 5 + +-case $host_os in +-aix4* | aix5*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) ++ ++ ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it supports --run. ++# If it does, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " ++else ++ am_missing_run= ++ AC_MSG_WARN([`missing' script is too old or missing]) ++fi ++]) + +-beos*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-bsdi4*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- lt_cv_file_magic_test_file=/shlib/libc.so +- ;; ++# AM_PROG_MKDIR_P ++# --------------- ++# Check for `mkdir -p'. ++AC_DEFUN([AM_PROG_MKDIR_P], ++[AC_PREREQ([2.60])dnl ++AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, ++dnl while keeping a definition of mkdir_p for backward compatibility. ++dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. ++dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of ++dnl Makefile.ins that do not define MKDIR_P, so we do our own ++dnl adjustment using top_builddir (which is defined more often than ++dnl MKDIR_P). ++AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl ++case $mkdir_p in ++ [[\\/$]]* | ?:[[\\/]]*) ;; ++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; ++esac ++]) + +-cygwin* | mingw* | pw32*) +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; ++# Helper functions for option handling. -*- Autoconf -*- + +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac +- ;; ++# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-freebsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; ++# serial 3 + +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +-hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; ++# _AM_SET_OPTION(NAME) ++# ------------------------------ ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ++ ++# _AM_SET_OPTIONS(OPTIONS) ++# ---------------------------------- ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++ ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" +- ;; +- *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" +- ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Check to make sure that the build environment is sane. -*- Autoconf -*- + +-# This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` +- ;; ++# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' +- fi +- ;; ++# serial 4 + +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# Do `set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t $srcdir/configure conftest.file` ++ fi ++ rm -f conftest.file ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then + +-openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' +- else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' +- fi +- ;; ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++alias in your environment]) ++ fi + +-osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so +- lt_cv_deplibs_check_method=pass_all +- ;; ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT(yes)]) + +-sco3.2v5*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; ++# AM_PROG_INSTALL_STRIP ++# --------------------- ++# One issue with vendor `install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in `make install-strip', and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using `strip' when the user ++# run `make install-strip'. However `strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the `STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-sysv5uw[[78]]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; ++# Copyright (C) 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- esac +- ;; +-esac +-]) +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-]) ++# _AM_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) + ++# Check how to create a tarball. -*- Autoconf -*- + +-# AC_PROG_NM - find the path to a BSD-compatible name lister +-AC_DEFUN([AC_PROG_NM], +-[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +-AC_MSG_CHECKING([for BSD-compatible nm]) +-AC_CACHE_VAL(lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- fi +- fi +- done +- IFS="$ac_save_ifs" +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi]) +-NM="$lt_cv_path_NM" +-AC_MSG_RESULT([$NM]) +-]) ++# Copyright (C) 2004, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# AC_CHECK_LIBM - check for math library +-AC_DEFUN([AC_CHECK_LIBM], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cygwin* | *-*-pw32*) +- # These system don't have libm +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, main, LIBM="-lm") +- ;; +-esac +-]) ++# serial 2 + +-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +-# the libltdl convenience library and INCLTDL to the include flags for +-# the libltdl header and adds --enable-ltdl-convenience to the +-# configure arguments. Note that LIBLTDL and INCLTDL are not +-# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +-# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +-# with '${top_builddir}/' and INCLTDL will be prefixed with +-# '${top_srcdir}/' (note the single quotes!). If your package is not +-# flat and you're not using automake, define top_builddir and +-# top_srcdir appropriately in the Makefiles. +-AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- case $enable_ltdl_convenience in +- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; +- "") enable_ltdl_convenience=yes +- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of `v7', `ustar', or `pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. ++AM_MISSING_PROG([AMTAR], [tar]) ++m4_if([$1], [v7], ++ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], ++ [m4_case([$1], [ustar],, [pax],, ++ [m4_fatal([Unknown tar format])]) ++AC_MSG_CHECKING([how to create a $1 tar archive]) ++# Loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++_am_tools=${am_cv_prog_tar_$1-$_am_tools} ++# Do not fold the above two line into one, because Tru64 sh and ++# Solaris sh will not grok spaces in the rhs of `-'. ++for _am_tool in $_am_tools ++do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; ++ do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; + esac +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la +- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +-]) + +-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +-# the libltdl installable library and INCLTDL to the include flags for +-# the libltdl header and adds --enable-ltdl-install to the configure +-# arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is +-# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +-# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +-# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed +-# with '${top_srcdir}/' (note the single quotes!). If your package is +-# not flat and you're not using automake, define top_builddir and +-# top_srcdir appropriately in the Makefiles. +-# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +-AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- AC_CHECK_LIB(ltdl, main, +- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], +- [if test x"$enable_ltdl_install" = xno; then +- AC_MSG_WARN([libltdl not installed, but installation disabled]) +- else +- enable_ltdl_install=yes +- fi +- ]) +- if test x"$enable_ltdl_install" = x"yes"; then +- ac_configure_args="$ac_configure_args --enable-ltdl-install" +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la +- INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- else +- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" +- LIBLTDL="-lltdl" +- INCLTDL= +- fi +-]) ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break + +-# old names +-AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +-AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +-AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +-AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +-AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +-AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +-AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) ++ # tar/untar a dummy directory, and stop if the command works ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ++ fi ++done ++rm -rf conftest.dir + +-# This is just to silence aclocal about the macro not being used +-ifelse([AC_DISABLE_FAST_INSTALL]) ++AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR + ++m4_include([acinclude.m4]) +--- libfcgi-2.4.0.orig/cgi-fcgi/Makefile.in ++++ libfcgi-2.4.0/cgi-fcgi/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,254 +14,350 @@ + + @SET_MAKE@ + +-# $Id: Makefile.am,v 1.4 2001/12/22 03:16:22 robs Exp $ +- +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++bin_PROGRAMS = cgi-fcgi$(EXEEXT) ++subdir = cgi-fcgi ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++am__installdirs = "$(DESTDIR)$(bindir)" ++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) ++PROGRAMS = $(bin_PROGRAMS) ++am__objects_1 = ++am_cgi_fcgi_OBJECTS = $(am__objects_1) cgi-fcgi.$(OBJEXT) ++cgi_fcgi_OBJECTS = $(am_cgi_fcgi_OBJECTS) ++cgi_fcgi_LDADD = $(LDADD) ++cgi_fcgi_DEPENDENCIES = $(LIBFCGI) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(cgi_fcgi_SOURCES) ++DIST_SOURCES = $(cgi_fcgi_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ +- +-bin_PROGRAMS = cgi-fcgi +- ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include +- + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ + $(INCLUDEDIR)/fcgimisc.h + +- + LIBDIR = ../libfcgi + LIBFCGI = $(LIBDIR)/libfcgi.la +- + LDADD = $(LIBFCGI) + cgi_fcgi_SOURCES = $(INCLUDE_FILES) cgi-fcgi.c +-subdir = cgi-fcgi +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-bin_PROGRAMS = cgi-fcgi$(EXEEXT) +-PROGRAMS = $(bin_PROGRAMS) +- +-am_cgi_fcgi_OBJECTS = cgi-fcgi.$(OBJEXT) +-cgi_fcgi_OBJECTS = $(am_cgi_fcgi_OBJECTS) +-cgi_fcgi_LDADD = $(LDADD) +-cgi_fcgi_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-cgi_fcgi_LDFLAGS = +- +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/cgi-fcgi.Po +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CFLAGS = @CFLAGS@ +-DIST_SOURCES = $(cgi_fcgi_SOURCES) +-DIST_COMMON = Makefile.am Makefile.in +-SOURCES = $(cgi_fcgi_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +- +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cgi-fcgi/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign cgi-fcgi/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status ++ $(AUTOMAKE) --gnu cgi-fcgi/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(bindir) ++ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ +- f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f"; \ +- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$f; \ ++ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ ++ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ ++ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + + uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ +- f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ +- rm -f $(DESTDIR)$(bindir)/$$f; \ ++ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ ++ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ ++ rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + + clean-binPROGRAMS: +- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) ++ @list='$(bin_PROGRAMS)'; for p in $$list; do \ ++ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f $$p $$f"; \ ++ rm -f $$p $$f ; \ ++ done + cgi-fcgi$(EXEEXT): $(cgi_fcgi_OBJECTS) $(cgi_fcgi_DEPENDENCIES) + @rm -f cgi-fcgi$(EXEEXT) +- $(LINK) $(cgi_fcgi_LDFLAGS) $(cgi_fcgi_OBJECTS) $(cgi_fcgi_LDADD) $(LIBS) ++ $(LINK) $(cgi_fcgi_OBJECTS) $(cgi_fcgi_LDADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/cgi-fcgi.Po@am__quote@ +- +-distclean-depend: +- -rm -rf $(DEPDIR) ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgi-fcgi.Po@am__quote@ + + .c.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `cygpath -w $<` ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +-CCDEPMODE = @CCDEPMODE@ +-uninstall-info-am: ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +-tags: TAGS ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -270,10 +367,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(PROGRAMS) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(bindir) +- ++ for dir in "$(DESTDIR)$(bindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -285,6 +382,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -292,7 +390,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -302,30 +400,42 @@ + clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-libtool distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: install-binPROGRAMS + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -333,19 +443,31 @@ + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +-uninstall-am: uninstall-binPROGRAMS uninstall-info-am ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: + +-.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ +- clean-generic clean-libtool distclean distclean-compile \ +- distclean-depend distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-binPROGRAMS install-data install-data-am \ +- install-exec install-exec-am install-info install-info-am \ +- install-man install-strip installcheck installcheck-am \ +- installdirs maintainer-clean maintainer-clean-generic \ +- mostlyclean mostlyclean-compile mostlyclean-generic \ +- mostlyclean-libtool tags uninstall uninstall-am \ +- uninstall-binPROGRAMS uninstall-info-am ++uninstall-am: uninstall-binPROGRAMS ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ ++ clean-generic clean-libtool ctags distclean distclean-compile \ ++ distclean-generic distclean-libtool distclean-tags distdir dvi \ ++ dvi-am html html-am info info-am install install-am \ ++ install-binPROGRAMS install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall uninstall-am \ ++ uninstall-binPROGRAMS + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/ltmain.sh ++++ libfcgi-2.4.0/ltmain.sh +@@ -1,8 +1,8 @@ + # ltmain.sh - Provide generalized library-building support services. + # NOTE: Changing this file will not affect anything until you rerun configure. + # +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, ++# 2007 Free Software Foundation, Inc. + # Originally by Gordon Matzigkeit , 1996 + # + # This program is free software; you can redistribute it and/or modify +@@ -17,13 +17,49 @@ + # + # 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. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + ++basename="s,^.*/,,g" ++ ++# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh ++# is ksh but when the shell is invoked as "sh" and the current value of ++# the _XPG environment variable is not equal to 1 (one), the special ++# positional parameter $0, within a function call, is the name of the ++# function. ++progpath="$0" ++ ++# The name of this program: ++progname=`echo "$progpath" | $SED $basename` ++modename="$progname" ++ ++# Global variables: ++EXIT_SUCCESS=0 ++EXIT_FAILURE=1 ++ ++PROGRAM=ltmain.sh ++PACKAGE=libtool ++VERSION="1.5.24 Debian 1.5.24-1" ++TIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)" ++ ++# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac ++fi ++BIN_SH=xpg4; export BIN_SH # for Tru64 ++DUALCASE=1; export DUALCASE # for MKS sh ++ + # Check that we have a working $echo. + if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. +@@ -36,7 +72,7 @@ + : + else + # Restart under the correct shell, and then maybe $echo will work. +- exec $SHELL "$0" --no-reexec ${1+"$@"} ++ exec $SHELL "$progpath" --no-reexec ${1+"$@"} + fi + + if test "X$1" = X--fallback-echo; then +@@ -45,19 +81,9 @@ + cat <&2 +- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ $echo "$modename: not configured to build any kind of library" 1>&2 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE + fi + + # Global variables. +@@ -99,11 +142,286 @@ + show="$echo" + show_help= + execute_dlfiles= ++duplicate_deps=no ++preserve_args= + lo2o="s/\\.lo\$/.${objext}/" + o2lo="s/\\.${objext}\$/.lo/" ++extracted_archives= ++extracted_serial=0 ++ ++##################################### ++# Shell function definitions: ++# This seems to be the best place for them ++ ++# func_mktempdir [string] ++# Make a temporary directory that won't clash with other running ++# libtool processes, and avoids race conditions if possible. If ++# given, STRING is the basename for that directory. ++func_mktempdir () ++{ ++ my_template="${TMPDIR-/tmp}/${1-$progname}" ++ ++ if test "$run" = ":"; then ++ # Return a directory name, but don't create it in dry-run mode ++ my_tmpdir="${my_template}-$$" ++ else ++ ++ # If mktemp works, use that first and foremost ++ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` ++ ++ if test ! -d "$my_tmpdir"; then ++ # Failing that, at least try and use $RANDOM to avoid a race ++ my_tmpdir="${my_template}-${RANDOM-0}$$" ++ ++ save_mktempdir_umask=`umask` ++ umask 0077 ++ $mkdir "$my_tmpdir" ++ umask $save_mktempdir_umask ++ fi ++ ++ # If we're not in dry-run mode, bomb out on failure ++ test -d "$my_tmpdir" || { ++ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 ++ exit $EXIT_FAILURE ++ } ++ fi ++ ++ $echo "X$my_tmpdir" | $Xsed ++} ++ ++ ++# func_win32_libid arg ++# return the library type of file 'arg' ++# ++# Need a lot of goo to handle *both* DLLs and import libs ++# Has to be a shell function in order to 'eat' the argument ++# that is supplied when $file_magic_command is called. ++func_win32_libid () ++{ ++ win32_libid_type="unknown" ++ win32_fileres=`file -L $1 2>/dev/null` ++ case $win32_fileres in ++ *ar\ archive\ import\ library*) # definitely import ++ win32_libid_type="x86 archive import" ++ ;; ++ *ar\ archive*) # could be an import, or static ++ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ ++ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then ++ win32_nmres=`eval $NM -f posix -A $1 | \ ++ $SED -n -e '1,100{ ++ / I /{ ++ s,.*,import, ++ p ++ q ++ } ++ }'` ++ case $win32_nmres in ++ import*) win32_libid_type="x86 archive import";; ++ *) win32_libid_type="x86 archive static";; ++ esac ++ fi ++ ;; ++ *DLL*) ++ win32_libid_type="x86 DLL" ++ ;; ++ *executable*) # but shell scripts are "executable" too... ++ case $win32_fileres in ++ *MS\ Windows\ PE\ Intel*) ++ win32_libid_type="x86 DLL" ++ ;; ++ esac ++ ;; ++ esac ++ $echo $win32_libid_type ++} ++ ++ ++# func_infer_tag arg ++# Infer tagged configuration to use if any are available and ++# if one wasn't chosen via the "--tag" command line option. ++# Only attempt this if the compiler in the base compile ++# command doesn't match the default compiler. ++# arg is usually of the form 'gcc ...' ++func_infer_tag () ++{ ++ if test -n "$available_tags" && test -z "$tagname"; then ++ CC_quoted= ++ for arg in $CC; do ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ CC_quoted="$CC_quoted $arg" ++ done ++ case $@ in ++ # Blanks in the command may have been stripped by the calling shell, ++ # but not from the CC environment variable when configure was run. ++ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; ++ # Blanks at the start of $base_compile will cause this to fail ++ # if we don't check for them as well. ++ *) ++ for z in $available_tags; do ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then ++ # Evaluate the configuration. ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" ++ CC_quoted= ++ for arg in $CC; do ++ # Double-quote args containing other shell metacharacters. ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ CC_quoted="$CC_quoted $arg" ++ done ++ case "$@ " in ++ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ++ # The compiler in the base compile command matches ++ # the one in the tagged configuration. ++ # Assume this is the tagged configuration we want. ++ tagname=$z ++ break ++ ;; ++ esac ++ fi ++ done ++ # If $tagname still isn't set, then no tagged configuration ++ # was found and let the user know that the "--tag" command ++ # line option must be used. ++ if test -z "$tagname"; then ++ $echo "$modename: unable to infer tagged configuration" ++ $echo "$modename: specify a tag with \`--tag'" 1>&2 ++ exit $EXIT_FAILURE ++# else ++# $echo "$modename: using $tagname tagged configuration" ++ fi ++ ;; ++ esac ++ fi ++} ++ ++ ++# func_extract_an_archive dir oldlib ++func_extract_an_archive () ++{ ++ f_ex_an_ar_dir="$1"; shift ++ f_ex_an_ar_oldlib="$1" ++ ++ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" ++ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? ++ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then ++ : ++ else ++ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++} ++ ++# func_extract_archives gentop oldlib ... ++func_extract_archives () ++{ ++ my_gentop="$1"; shift ++ my_oldlibs=${1+"$@"} ++ my_oldobjs="" ++ my_xlib="" ++ my_xabs="" ++ my_xdir="" ++ my_status="" ++ ++ $show "${rm}r $my_gentop" ++ $run ${rm}r "$my_gentop" ++ $show "$mkdir $my_gentop" ++ $run $mkdir "$my_gentop" ++ my_status=$? ++ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then ++ exit $my_status ++ fi ++ ++ for my_xlib in $my_oldlibs; do ++ # Extract the objects. ++ case $my_xlib in ++ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; ++ *) my_xabs=`pwd`"/$my_xlib" ;; ++ esac ++ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` ++ my_xlib_u=$my_xlib ++ while :; do ++ case " $extracted_archives " in ++ *" $my_xlib_u "*) ++ extracted_serial=`expr $extracted_serial + 1` ++ my_xlib_u=lt$extracted_serial-$my_xlib ;; ++ *) break ;; ++ esac ++ done ++ extracted_archives="$extracted_archives $my_xlib_u" ++ my_xdir="$my_gentop/$my_xlib_u" ++ ++ $show "${rm}r $my_xdir" ++ $run ${rm}r "$my_xdir" ++ $show "$mkdir $my_xdir" ++ $run $mkdir "$my_xdir" ++ exit_status=$? ++ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then ++ exit $exit_status ++ fi ++ case $host in ++ *-darwin*) ++ $show "Extracting $my_xabs" ++ # Do not bother doing anything if just a dry run ++ if test -z "$run"; then ++ darwin_orig_dir=`pwd` ++ cd $my_xdir || exit $? ++ darwin_archive=$my_xabs ++ darwin_curdir=`pwd` ++ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` ++ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` ++ if test -n "$darwin_arches"; then ++ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` ++ darwin_arch= ++ $show "$darwin_base_archive has multiple architectures $darwin_arches" ++ for darwin_arch in $darwin_arches ; do ++ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" ++ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" ++ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" ++ func_extract_an_archive "`pwd`" "${darwin_base_archive}" ++ cd "$darwin_curdir" ++ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" ++ done # $darwin_arches ++ ## Okay now we have a bunch of thin objects, gotta fatten them up :) ++ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` ++ darwin_file= ++ darwin_files= ++ for darwin_file in $darwin_filelist; do ++ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` ++ lipo -create -output "$darwin_file" $darwin_files ++ done # $darwin_filelist ++ ${rm}r unfat-$$ ++ cd "$darwin_orig_dir" ++ else ++ cd "$darwin_orig_dir" ++ func_extract_an_archive "$my_xdir" "$my_xabs" ++ fi # $darwin_arches ++ fi # $run ++ ;; ++ *) ++ func_extract_an_archive "$my_xdir" "$my_xabs" ++ ;; ++ esac ++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` ++ done ++ func_extract_archives_result="$my_oldobjs" ++} ++# End of Shell function definitions ++##################################### ++ ++# Darwin sucks ++eval std_shrext=\"$shrext_cmds\" ++ ++disable_libs=no + + # Parse our command line options once, thoroughly. +-while test $# -gt 0 ++while test "$#" -gt 0 + do + arg="$1" + shift +@@ -119,6 +437,34 @@ + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; ++ tag) ++ tagname="$arg" ++ preserve_args="${preserve_args}=$arg" ++ ++ # Check whether tagname contains only valid characters ++ case $tagname in ++ *[!-_A-Za-z0-9,/]*) ++ $echo "$progname: invalid tag name: $tagname" 1>&2 ++ exit $EXIT_FAILURE ++ ;; ++ esac ++ ++ case $tagname in ++ CC) ++ # Don't test for the "default" C tag, as we know, it's there, but ++ # not specially marked. ++ ;; ++ *) ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then ++ taglist="$taglist $tagname" ++ # Evaluate the configuration. ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" ++ else ++ $echo "$progname: ignoring unknown tag $tagname" 1>&2 ++ fi ++ ;; ++ esac ++ ;; + *) + eval "$prev=\$arg" + ;; +@@ -136,18 +482,28 @@ + ;; + + --version) +- echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" +- exit 0 ++ echo "\ ++$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP ++ ++Copyright (C) 2007 Free Software Foundation, Inc. ++This is free software; see the source for copying conditions. There is NO ++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." ++ exit $? + ;; + + --config) +- sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 +- exit 0 ++ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath ++ # Now print the configurations for the tags. ++ for tagname in $taglist; do ++ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" ++ done ++ exit $? + ;; + + --debug) +- echo "$progname: enabling shell trace mode" ++ $echo "$progname: enabling shell trace mode" + set -x ++ preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) +@@ -155,18 +511,18 @@ + ;; + + --features) +- echo "host: $host" ++ $echo "host: $host" + if test "$build_libtool_libs" = yes; then +- echo "enable shared libraries" ++ $echo "enable shared libraries" + else +- echo "disable shared libraries" ++ $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then +- echo "enable static libraries" ++ $echo "enable static libraries" + else +- echo "disable static libraries" ++ $echo "disable static libraries" + fi +- exit 0 ++ exit $? + ;; + + --finish) mode="finish" ;; +@@ -174,8 +530,23 @@ + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + ++ --preserve-dup-deps) duplicate_deps="yes" ;; ++ + --quiet | --silent) + show=: ++ preserve_args="$preserve_args $arg" ++ ;; ++ ++ --tag) ++ prevopt="--tag" ++ prev=tag ++ preserve_args="$preserve_args --tag" ++ ;; ++ --tag=*) ++ set tag "$optarg" ${1+"$@"} ++ shift ++ prev=tag ++ preserve_args="$preserve_args --tag" + ;; + + -dlopen) +@@ -186,7 +557,7 @@ + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + + *) +@@ -199,15 +570,34 @@ + if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + ++case $disable_libs in ++no) ++ ;; ++shared) ++ build_libtool_libs=no ++ build_old_libs=yes ++ ;; ++static) ++ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` ++ ;; ++esac ++ ++# If this variable is set in any of the actions, the command in it ++# will be execed at the end. This prevents here-documents from being ++# left over by shells. ++exec_cmd= ++ + if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then ++ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 ++ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in +- *cc | *++ | gcc* | *-gcc*) ++ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do +@@ -248,7 +638,7 @@ + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. +@@ -262,158 +652,127 @@ + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= +- prev= +- lastarg= +- srcfile="$nonopt" ++ srcfile="$nonopt" # always keep a non-empty value in "srcfile" ++ suppress_opt=yes + suppress_output= ++ arg_mode=normal ++ libobj= ++ later= + +- user_target=no + for arg + do +- case $prev in +- "") ;; +- xcompiler) +- # Aesthetically quote the previous argument. +- prev= +- lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` +- +- case $arg in +- # Double-quote args containing other shell metacharacters. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- arg="\"$arg\"" +- ;; +- esac +- +- # Add the previous argument to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else +- base_compile="$base_compile $lastarg" +- fi +- continue +- ;; +- esac +- +- # Accept any command-line options. +- case $arg in +- -o) +- if test "$user_target" != "no"; then +- $echo "$modename: you cannot specify \`-o' more than once" 1>&2 +- exit 1 +- fi +- user_target=next ++ case $arg_mode in ++ arg ) ++ # do not "continue". Instead, add this to base_compile ++ lastarg="$arg" ++ arg_mode=normal + ;; + +- -static) +- build_old_libs=yes ++ target ) ++ libobj="$arg" ++ arg_mode=normal + continue + ;; + +- -prefer-pic) +- pic_mode=yes +- continue +- ;; ++ normal ) ++ # Accept any command-line options. ++ case $arg in ++ -o) ++ if test -n "$libobj" ; then ++ $echo "$modename: you cannot specify \`-o' more than once" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ arg_mode=target ++ continue ++ ;; + +- -prefer-non-pic) +- pic_mode=no +- continue +- ;; ++ -static | -prefer-pic | -prefer-non-pic) ++ later="$later $arg" ++ continue ++ ;; + +- -Xcompiler) +- prev=xcompiler +- continue +- ;; ++ -no-suppress) ++ suppress_opt=no ++ continue ++ ;; + +- -Wc,*) +- args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` +- lastarg= +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' +- for arg in $args; do +- IFS="$save_ifs" ++ -Xcompiler) ++ arg_mode=arg # the next one goes into the "base_compile" arg list ++ continue # The current "srcfile" will either be retained or ++ ;; # replaced later. I would guess that would be a bug. ++ ++ -Wc,*) ++ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` ++ lastarg= ++ save_ifs="$IFS"; IFS=',' ++ for arg in $args; do ++ IFS="$save_ifs" + +- # Double-quote args containing other shell metacharacters. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- arg="\"$arg\"" +- ;; +- esac +- lastarg="$lastarg $arg" +- done +- IFS="$save_ifs" +- lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` ++ # Double-quote args containing other shell metacharacters. ++ # Many Bourne shells cannot handle close brackets correctly ++ # in scan sets, so we specify it separately. ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ lastarg="$lastarg $arg" ++ done ++ IFS="$save_ifs" ++ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + +- # Add the arguments to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else ++ # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" +- fi +- continue +- ;; +- esac ++ continue ++ ;; + +- case $user_target in +- next) +- # The next one is the -o target name +- user_target=yes +- continue +- ;; +- yes) +- # We got the output file +- user_target=set +- libobj="$arg" +- continue ++ * ) ++ # Accept the current argument as the source file. ++ # The previous "srcfile" becomes the current argument. ++ # ++ lastarg="$srcfile" ++ srcfile="$arg" ++ ;; ++ esac # case $arg + ;; +- esac +- +- # Accept the current argument as the source file. +- lastarg="$srcfile" +- srcfile="$arg" ++ esac # case $arg_mode + + # Aesthetically quote the previous argument. +- +- # Backslashify any backslashes, double quotes, and dollar signs. +- # These are the only characters that are still specially +- # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + ++ case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- case $lastarg in ++ # in scan sets, and some SunOS ksh mistreat backslash-escaping ++ # in scan sets (worked around with variable expansion), ++ # and furthermore cannot handle '|' '&' '(' ')' in scan sets ++ # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + +- # Add the previous argument to base_compile. +- if test -z "$base_compile"; then +- base_compile="$lastarg" +- else +- base_compile="$base_compile $lastarg" +- fi +- done ++ base_compile="$base_compile $lastarg" ++ done # for arg + +- case $user_target in +- set) ++ case $arg_mode in ++ arg) ++ $echo "$modename: you must specify an argument for -Xcompile" ++ exit $EXIT_FAILURE + ;; +- no) +- # Get the name of the library object. +- libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ++ target) ++ $echo "$modename: you must specify a target with \`-o'" 1>&2 ++ exit $EXIT_FAILURE + ;; + *) +- $echo "$modename: you must specify a target with \`-o'" 1>&2 +- exit 1 ++ # Get the name of the library object. ++ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo +- xform='[cCFSfmso]' ++ xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; +@@ -421,10 +780,14 @@ + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; ++ *.ii) xform=ii ;; ++ *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; +- *.f90) xform=f90 ;; ++ *.[fF][09]?) xform=[fF][09]. ;; + *.for) xform=for ;; ++ *.java) xform=java ;; ++ *.obj) xform=obj ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` +@@ -433,25 +796,63 @@ + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + ++ func_infer_tag $base_compile ++ ++ for arg in $later; do ++ case $arg in ++ -static) ++ build_old_libs=yes ++ continue ++ ;; ++ ++ -prefer-pic) ++ pic_mode=yes ++ continue ++ ;; ++ ++ -prefer-non-pic) ++ pic_mode=no ++ continue ++ ;; ++ esac ++ done ++ ++ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` ++ case $qlibobj in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ qlibobj="\"$qlibobj\"" ;; ++ esac ++ test "X$libobj" != "X$qlibobj" \ ++ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ ++ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." ++ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` ++ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$obj"; then ++ xdir= ++ else ++ xdir=$xdir/ ++ fi ++ lobj=${xdir}$objdir/$objname ++ + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then +- removelist="$obj $libobj" ++ removelist="$obj $lobj $libobj ${libobj}T" + else +- removelist="$libobj" ++ removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in +@@ -459,7 +860,7 @@ + pic_mode=default + ;; + esac +- if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then ++ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi +@@ -470,8 +871,9 @@ + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else ++ output_obj= + need_locks=no + lockfile= + fi +@@ -479,13 +881,13 @@ + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then +- until $run ln "$0" "$lockfile" 2>/dev/null; do ++ until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then +- echo "\ ++ $echo "\ + *** ERROR, $lockfile exists and contains: + `cat $lockfile 2>/dev/null` + +@@ -497,14 +899,33 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi +- echo $srcfile > "$lockfile" ++ $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi ++ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` ++ case $qsrcfile in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ qsrcfile="\"$qsrcfile\"" ;; ++ esac ++ ++ $run $rm "$libobj" "${libobj}T" ++ ++ # Create a libtool object file (analogous to a ".la" file), ++ # but don't create it if we're doing a dry run. ++ test -z "$run" && cat > ${libobj}T </dev/null`" != x"$srcfile"; then +- echo "\ ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $echo "\ + *** ERROR, $lockfile contains: + `cat $lockfile 2>/dev/null` + +@@ -573,13 +979,13 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one +- if test x"$output_obj" != x"$libobj"; then +- $show "$mv $output_obj $libobj" +- if $run $mv $output_obj $libobj; then : ++ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then ++ $show "$mv $output_obj $lobj" ++ if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist +@@ -587,73 +993,50 @@ + fi + fi + +- # If we have no pic_flag, then copy the object into place and finish. +- if (test -z "$pic_flag" || test "$pic_mode" != default) && +- test "$build_old_libs" = yes; then +- # Rename the .lo from within objdir to obj +- if test -f $obj; then +- $show $rm $obj +- $run $rm $obj +- fi ++ # Append the name of the PIC object to the libtool object file. ++ test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != x"$srcfile"; then +- echo "\ ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then ++ $echo "\ + *** ERROR, $lockfile contains: + `cat $lockfile 2>/dev/null` + +@@ -668,11 +1051,11 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed +- if test x"$output_obj" != x"$obj"; then ++ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else +@@ -682,29 +1065,31 @@ + fi + fi + +- # Create an invalid libtool object if no PIC, so that we do not +- # accidentally link it into a program. +- if test "$build_libtool_libs" != yes; then +- $show "echo timestamp > $libobj" +- $run eval "echo timestamp > \$libobj" || exit $? +- else +- # Move the .lo from within objdir +- $show "$mv $libobj $lo_libobj" +- if $run $mv $libobj $lo_libobj; then : +- else +- error=$? +- $run $rm $removelist +- exit $error +- fi +- fi ++ # Append the name of the non-PIC object the libtool object file. ++ # Only append if the libtool object file exists. ++ test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi +- else ++ prefer_static_libs=yes ++ ;; ++ -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi +- fi ++ prefer_static_libs=built ++ ;; ++ -static-libtool-libs) ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ prefer_static_libs=yes ++ ;; ++ esac + build_libtool_libs=no + build_old_libs=yes +- prefer_static_libs=yes + break + ;; + esac +@@ -800,7 +1203,7 @@ + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. +- while test $# -gt 0; do ++ while test "$#" -gt 0; do + arg="$1" + shift + case $arg in +@@ -865,7 +1268,7 @@ + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" +- exit 1 ++ exit $EXIT_FAILURE + fi + prev= + continue +@@ -875,18 +1278,140 @@ + prev= + continue + ;; ++ inst_prefix) ++ inst_prefix_dir="$arg" ++ prev= ++ continue ++ ;; ++ precious_regex) ++ precious_files_regex="$arg" ++ prev= ++ continue ++ ;; + release) + release="-$arg" + prev= + continue + ;; ++ objectlist) ++ if test -f "$arg"; then ++ save_arg=$arg ++ moreargs= ++ for fil in `cat $save_arg` ++ do ++# moreargs="$moreargs $fil" ++ arg=$fil ++ # A libtool-controlled object. ++ ++ # Check to see that this really is a libtool object. ++ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ pic_object= ++ non_pic_object= ++ ++ # Read the .lo file ++ # If there is no directory component, then add one. ++ case $arg in ++ */* | *\\*) . $arg ;; ++ *) . ./$arg ;; ++ esac ++ ++ if test -z "$pic_object" || \ ++ test -z "$non_pic_object" || ++ test "$pic_object" = none && \ ++ test "$non_pic_object" = none; then ++ $echo "$modename: cannot find name of object for \`$arg'" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ if test "$pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ pic_object="$xdir$pic_object" ++ ++ if test "$prev" = dlfiles; then ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then ++ dlfiles="$dlfiles $pic_object" ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ # CHECK ME: I think I busted this. -Ossama ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles $pic_object" ++ prev= ++ fi ++ ++ # A PIC object. ++ libobjs="$libobjs $pic_object" ++ arg="$pic_object" ++ fi ++ ++ # Non-PIC object. ++ if test "$non_pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ non_pic_object="$xdir$non_pic_object" ++ ++ # A standard non-PIC object ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ if test -z "$pic_object" || test "$pic_object" = none ; then ++ arg="$non_pic_object" ++ fi ++ else ++ # If the PIC object exists, use it instead. ++ # $xdir was prepended to $pic_object above. ++ non_pic_object="$pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi ++ else ++ # Only an error if not doing a dry-run. ++ if test -z "$run"; then ++ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 ++ exit $EXIT_FAILURE ++ else ++ # Dry-run case. ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` ++ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` ++ libobjs="$libobjs $pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi ++ fi ++ done ++ else ++ $echo "$modename: link input file \`$save_arg' does not exist" ++ exit $EXIT_FAILURE ++ fi ++ arg=$save_arg ++ prev= ++ continue ++ ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then +@@ -918,13 +1443,33 @@ + finalize_command="$finalize_command $wl$qarg" + continue + ;; ++ xcclinker) ++ linker_flags="$linker_flags $qarg" ++ compiler_flags="$compiler_flags $qarg" ++ prev= ++ compile_command="$compile_command $qarg" ++ finalize_command="$finalize_command $qarg" ++ continue ++ ;; ++ shrext) ++ shrext_cmds="$arg" ++ prev= ++ continue ++ ;; ++ darwin_framework|darwin_framework_skip) ++ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ prev= ++ continue ++ ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac +- fi # test -n $prev ++ fi # test -n "$prev" + + prevarg="$arg" + +@@ -966,7 +1511,7 @@ + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms +@@ -976,11 +1521,28 @@ + continue + ;; + ++ -framework|-arch|-isysroot) ++ case " $CC " in ++ *" ${arg} ${1} "* | *" ${arg} ${1} "*) ++ prev=darwin_framework_skip ;; ++ *) compiler_flags="$compiler_flags $arg" ++ prev=darwin_framework ;; ++ esac ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ continue ++ ;; ++ ++ -inst-prefix-dir) ++ prev=inst_prefix ++ continue ++ ;; ++ + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in +- no/*-*-irix*) ++ no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; +@@ -997,7 +1559,8 @@ + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 +- exit 1 ++ absdir="$dir" ++ notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; +@@ -1011,10 +1574,15 @@ + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) ++ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac ++ case :$dllsearchpath: in ++ *":$testbindir:"*) ;; ++ *) dllsearchpath="$dllsearchpath:$testbindir";; ++ esac + ;; + esac + continue +@@ -1023,25 +1591,99 @@ + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in +- *-*-cygwin* | *-*-pw32* | *-*-beos*) ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; +- *-*-mingw* | *-*-os2*) ++ *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc due to us having libc/libc_r. ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-rhapsody* | *-*-darwin1.[012]) ++ # Rhapsody C and math libraries are in the System framework ++ deplibs="$deplibs -framework System" ++ continue ++ ;; ++ *-*-sco3.2v5* | *-*-sco5v6*) ++ # Causes problems with __ctype ++ test "X$arg" = "X-lc" && continue ++ ;; ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) ++ # Compiler inserts libc in the correct place for threads to work ++ test "X$arg" = "X-lc" && continue ++ ;; + esac ++ elif test "X$arg" = "X-lc_r"; then ++ case $host in ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc_r directly, use -pthread flag. ++ continue ++ ;; ++ esac + fi + deplibs="$deplibs $arg" + continue + ;; + ++ # Tru64 UNIX uses -model [arg] to determine the layout of C++ ++ # classes, name mangling, and exception handling. ++ -model) ++ compile_command="$compile_command $arg" ++ compiler_flags="$compiler_flags $arg" ++ finalize_command="$finalize_command $arg" ++ prev=xcompiler ++ continue ++ ;; ++ ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) ++ compiler_flags="$compiler_flags $arg" ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ continue ++ ;; ++ + -module) + module=yes + continue + ;; + ++ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler ++ # -r[0-9][0-9]* specifies the processor on the SGI compiler ++ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler ++ # +DA*, +DD* enable 64-bit mode on the HP compiler ++ # -q* pass through compiler args for the IBM compiler ++ # -m* pass through architecture-specific compiler args for GCC ++ # -m*, -t[45]*, -txscale* pass through architecture-specific ++ # compiler args for GCC ++ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC ++ # -F/path gives path to uninstalled frameworks, gcc on darwin ++ # @file GCC response files ++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ ++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) ++ ++ # Unknown arguments in both finalize_command and compile_command need ++ # to be aesthetically quoted because they are evaled later. ++ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` ++ case $arg in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ arg="\"$arg\"" ++ ;; ++ esac ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ compiler_flags="$compiler_flags $arg" ++ continue ++ ;; ++ ++ -shrext) ++ prev=shrext ++ continue ++ ;; ++ + -no-fast-install) + fast_install=no + continue +@@ -1049,9 +1691,9 @@ + + -no-install) + case $host in +- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + # The PATH hackery in wrapper scripts is required on Windows +- # in order for the loader to find any dlls it needs. ++ # and Darwin in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no +@@ -1066,8 +1708,18 @@ + continue + ;; + ++ -objectlist) ++ prev=objectlist ++ continue ++ ;; ++ + -o) prev=output ;; + ++ -precious-files-regex) ++ prev=precious_regex ++ continue ++ ;; ++ + -release) + prev=release + continue +@@ -1090,7 +1742,7 @@ + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in +@@ -1100,7 +1752,7 @@ + continue + ;; + +- -static) ++ -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -1118,11 +1770,16 @@ + prev=vinfo + continue + ;; ++ -version-number) ++ prev=vinfo ++ vinfo_number=yes ++ continue ++ ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' ++ save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in +@@ -1140,7 +1797,7 @@ + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' ++ save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in +@@ -1166,6 +1823,11 @@ + continue + ;; + ++ -XCClinker) ++ prev=xcclinker ++ continue ++ ;; ++ + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need +@@ -1178,29 +1840,106 @@ + esac + ;; + +- *.lo | *.$objext) +- # A library or standard object. +- if test "$prev" = dlfiles; then +- # This file was specified with -dlopen. +- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then +- dlfiles="$dlfiles $arg" +- prev= +- continue +- else +- # If libtool objects are unsupported, then we need to preload. +- prev=dlprefiles +- fi +- fi ++ *.$objext) ++ # A standard object. ++ objs="$objs $arg" ++ ;; + +- if test "$prev" = dlprefiles; then +- # Preload the old-style object. +- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` +- prev= +- else ++ *.lo) ++ # A libtool-controlled object. ++ ++ # Check to see that this really is a libtool object. ++ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ pic_object= ++ non_pic_object= ++ ++ # Read the .lo file ++ # If there is no directory component, then add one. + case $arg in +- *.lo) libobjs="$libobjs $arg" ;; +- *) objs="$objs $arg" ;; ++ */* | *\\*) . $arg ;; ++ *) . ./$arg ;; + esac ++ ++ if test -z "$pic_object" || \ ++ test -z "$non_pic_object" || ++ test "$pic_object" = none && \ ++ test "$non_pic_object" = none; then ++ $echo "$modename: cannot find name of object for \`$arg'" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ if test "$pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ pic_object="$xdir$pic_object" ++ ++ if test "$prev" = dlfiles; then ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then ++ dlfiles="$dlfiles $pic_object" ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ # CHECK ME: I think I busted this. -Ossama ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles $pic_object" ++ prev= ++ fi ++ ++ # A PIC object. ++ libobjs="$libobjs $pic_object" ++ arg="$pic_object" ++ fi ++ ++ # Non-PIC object. ++ if test "$non_pic_object" != none; then ++ # Prepend the subdirectory the object is found in. ++ non_pic_object="$xdir$non_pic_object" ++ ++ # A standard non-PIC object ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ if test -z "$pic_object" || test "$pic_object" = none ; then ++ arg="$non_pic_object" ++ fi ++ else ++ # If the PIC object exists, use it instead. ++ # $xdir was prepended to $pic_object above. ++ non_pic_object="$pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi ++ else ++ # Only an error if not doing a dry-run. ++ if test -z "$run"; then ++ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 ++ exit $EXIT_FAILURE ++ else ++ # Dry-run case. ++ ++ # Extract subdirectory from the argument. ++ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$xdir" = "X$arg"; then ++ xdir= ++ else ++ xdir="$xdir/" ++ fi ++ ++ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` ++ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` ++ libobjs="$libobjs $pic_object" ++ non_pic_objects="$non_pic_objects $non_pic_object" ++ fi + fi + ;; + +@@ -1251,7 +1990,7 @@ + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then +@@ -1260,6 +1999,7 @@ + finalize_command="$finalize_command $arg" + fi + ++ oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" +@@ -1280,12 +2020,12 @@ + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. +- if test ! -d $output_objdir; then ++ if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir +- status=$? +- if test $status -ne 0 && test ! -d $output_objdir; then +- exit $status ++ exit_status=$? ++ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then ++ exit $exit_status + fi + fi + +@@ -1294,7 +2034,7 @@ + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; +@@ -1302,22 +2042,52 @@ + *) linkmode=prog ;; # Anything else should be a program. + esac + ++ case $host in ++ *cygwin* | *mingw* | *pw32*) ++ # don't eliminate duplications in $postdeps and $predeps ++ duplicate_compiler_generated_deps=yes ++ ;; ++ *) ++ duplicate_compiler_generated_deps=$duplicate_deps ++ ;; ++ esac + specialdeplibs= ++ + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do +- case "$libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + libs="$libs $deplib" + done ++ ++ if test "$linkmode" = lib; then ++ libs="$predeps $libs $compiler_lib_search_path $postdeps" ++ ++ # Compute libraries that are listed more than once in $predeps ++ # $postdeps and mark them as special (i.e., whose duplicates are ++ # not to be eliminated). ++ pre_post_deps= ++ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then ++ for pre_post_dep in $predeps $postdeps; do ++ case "$pre_post_deps " in ++ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; ++ esac ++ pre_post_deps="$pre_post_deps $pre_post_dep" ++ done ++ fi ++ pre_post_deps= ++ fi ++ + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries +- notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" +@@ -1326,7 +2096,7 @@ + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -1343,39 +2113,58 @@ + ;; + esac + for pass in $passes; do +- if test $linkmode = prog; then +- # Determine which files to process ++ if test "$linkmode,$pass" = "lib,link" || ++ test "$linkmode,$pass" = "prog,scan"; then ++ libs="$deplibs" ++ deplibs= ++ fi ++ if test "$linkmode" = prog; then + case $pass in +- dlopen) +- libs="$dlfiles" +- save_deplibs="$deplibs" # Collect dlpreopened libraries +- deplibs= +- ;; ++ dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; +- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; ++ link) ++ libs="$deplibs %DEPLIBS%" ++ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ++ ;; + esac + fi ++ if test "$pass" = dlopen; then ++ # Collect dlpreopened libraries ++ save_deplibs="$deplibs" ++ deplibs= ++ fi + for deplib in $libs; do + lib= + found=no + case $deplib in +- -l*) +- if test $linkmode = oldlib && test $linkmode = obj; then +- $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 +- continue ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ compiler_flags="$compiler_flags $deplib" + fi +- if test $pass = conv; then +- deplibs="$deplib $deplibs" ++ continue ++ ;; ++ -l*) ++ if test "$linkmode" != lib && test "$linkmode" != prog; then ++ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do +- # Search the libtool library +- lib="$searchdir/lib${name}.la" +- if test -f "$lib"; then +- found=yes +- break +- fi ++ for search_ext in .la $std_shrext .so .a; do ++ # Search the libtool library ++ lib="$searchdir/lib${name}${search_ext}" ++ if test -f "$lib"; then ++ if test "$search_ext" = ".la"; then ++ found=yes ++ else ++ found=no ++ fi ++ break 2 ++ fi ++ done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library +@@ -1384,40 +2173,76 @@ + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" +- test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue ++ else # deplib is a libtool library ++ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, ++ # We need to do some special things here, and not later. ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $deplib "*) ++ if (${SED} -e '2q' $lib | ++ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ library_names= ++ old_library= ++ case $lib in ++ */* | *\\*) . $lib ;; ++ *) . ./$lib ;; ++ esac ++ for l in $old_library $library_names; do ++ ll="$l" ++ done ++ if test "X$ll" = "X$old_library" ; then # only static version available ++ found=no ++ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` ++ test "X$ladir" = "X$lib" && ladir="." ++ lib=$ladir/$old_library ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ deplibs="$deplib $deplibs" ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" ++ fi ++ continue ++ fi ++ fi ++ ;; ++ *) ;; ++ esac ++ fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" +- test $pass = conv && continue ++ test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) +- if test $pass = conv; then ++ if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi +- if test $pass = scan; then ++ if test "$pass" = scan; then + deplibs="$deplib $deplibs" +- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi ++ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) +- $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 ++ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) +- if test $pass = link; then ++ if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in +@@ -1430,28 +2255,45 @@ + ;; + *.la) lib="$deplib" ;; + *.$libext) +- if test $pass = conv; then ++ if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) +- if test "$deplibs_check_method" != pass_all; then +- echo +- echo "*** Warning: This library needs some functionality provided by $deplib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ valid_a_lib=no ++ case $deplibs_check_method in ++ match_pattern*) ++ set dummy $deplibs_check_method ++ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` ++ if eval $echo \"$deplib\" 2>/dev/null \ ++ | $SED 10q \ ++ | $EGREP "$match_pattern_regex" > /dev/null; then ++ valid_a_lib=yes ++ fi ++ ;; ++ pass_all) ++ valid_a_lib=yes ++ ;; ++ esac ++ if test "$valid_a_lib" != yes; then ++ $echo ++ $echo "*** Warning: Trying to link with static lib archive $deplib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because the file extensions .$libext of this argument makes me believe" ++ $echo "*** that it is just a static archive that I should not used here." + else +- echo +- echo "*** Warning: Linking the shared library $output against the" +- echo "*** static library $deplib is not portable!" ++ $echo ++ $echo "*** Warning: Linking the shared library $output against the" ++ $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) +- if test $pass != link; then ++ if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" +@@ -1462,14 +2304,18 @@ + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) +- if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then +- # If there is no dlopen support or we're linking statically, +- # we need to preload. +- newdlprefiles="$newdlprefiles $deplib" +- compile_deplibs="$deplib $compile_deplibs" +- finalize_deplibs="$deplib $finalize_deplibs" +- else +- newdlfiles="$newdlfiles $deplib" ++ if test "$pass" = conv; then ++ deplibs="$deplib $deplibs" ++ elif test "$linkmode" = prog; then ++ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ # If there is no dlopen support or we're linking statically, ++ # we need to preload. ++ newdlprefiles="$newdlprefiles $deplib" ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ newdlfiles="$newdlfiles $deplib" ++ fi + fi + continue + ;; +@@ -1478,17 +2324,17 @@ + continue + ;; + esac # case $deplib +- if test $found = yes || test -f "$lib"; then : ++ if test "$found" = yes || test -f "$lib"; then : + else +- $echo "$modename: cannot find the library \`$lib'" 1>&2 +- exit 1 ++ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 ++ exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` +@@ -1501,8 +2347,11 @@ + library_names= + old_library= + # If the library was installed with an old release of libtool, +- # it will not redefine variable installed. ++ # it will not redefine variables installed, or shouldnotlink + installed=yes ++ shouldnotlink=no ++ avoidtemprpath= ++ + + # Read the .la file + case $lib in +@@ -1512,19 +2361,18 @@ + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || +- { test $linkmode = oldlib && test $linkmode = obj; }; then +- # Add dl[pre]opened files of deplib ++ { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + +- if test $pass = conv; then ++ if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" +@@ -1532,18 +2380,21 @@ + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + tmp_libs="$tmp_libs $deplib" + done +- elif test $linkmode != prog && test $linkmode != lib; then ++ elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + ++ + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do +@@ -1551,19 +2402,23 @@ + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. +- if test $pass = dlopen; then ++ if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi +- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ if test -z "$dlname" || ++ test "$dlopen_support" != yes || ++ test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking +- # statically, we need to preload. +- dlprefiles="$dlprefiles $lib" ++ # statically, we need to preload. We also need to preload any ++ # dependent libraries so libltdl's deplib preloader doesn't ++ # bomb out in the load deplibs phase. ++ dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi +@@ -1595,19 +2450,27 @@ + dir="$libdir" + absdir="$libdir" + fi ++ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else +- dir="$ladir/$objdir" +- absdir="$abs_ladir/$objdir" +- # Remove this search path later +- notinst_path="$notinst_path $abs_ladir" ++ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then ++ dir="$ladir" ++ absdir="$abs_ladir" ++ # Remove this search path later ++ notinst_path="$notinst_path $abs_ladir" ++ else ++ dir="$ladir/$objdir" ++ absdir="$abs_ladir/$objdir" ++ # Remove this search path later ++ notinst_path="$notinst_path $abs_ladir" ++ fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. +- if test $pass = dlpreopen; then ++ if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). +@@ -1623,18 +2486,19 @@ + + if test -z "$libdir"; then + # Link the convenience library +- if test $linkmode = lib; then ++ if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else +- deplibs="$lib $deplibs" ++ deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + +- if test $linkmode = prog && test $pass != link; then ++ ++ if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + +@@ -1650,28 +2514,38 @@ + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? +- if test $linkalldeplibs = yes; then ++ if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + +- link_static=no # Whether the deplib will be linked statically +- if test -n "$library_names" && +- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then +- # Link against this shared library ++ if test "$linkmode,$pass" = "prog,link"; then ++ if test -n "$library_names" && ++ { { test "$prefer_static_libs" = no || ++ test "$prefer_static_libs,$installed" = "built,yes"; } || ++ test -z "$old_library"; }; then ++ # We need to hardcode the library path ++ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then ++ # Make sure the rpath contains only unique directories. ++ case "$temp_rpath " in ++ *" $dir "*) ;; ++ *" $absdir "*) ;; ++ *) temp_rpath="$temp_rpath $absdir" ;; ++ esac ++ fi + +- if test "$linkmode,$pass" = "prog,link" || +- { test $linkmode = lib && test $hardcode_into_libs = yes; }; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. +@@ -1693,17 +2567,6 @@ + esac + ;; + esac +- if test $linkmode = prog; then +- # We need to hardcode the library path +- if test -n "$shlibpath_var"; then +- # Make sure the rpath contains only unique directories. +- case "$temp_rpath " in +- *" $dir "*) ;; +- *" $absdir "*) ;; +- *) temp_rpath="$temp_rpath $dir" ;; +- esac +- fi +- fi + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && +@@ -1713,11 +2576,56 @@ + # We only need to search for static libraries + continue + fi ++ fi + ++ link_static=no # Whether the deplib will be linked statically ++ use_static_libs=$prefer_static_libs ++ if test "$use_static_libs" = built && test "$installed" = yes ; then ++ use_static_libs=no ++ fi ++ if test -n "$library_names" && ++ { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi ++ # This is a shared library ++ ++ # Warn about portability, can't link against -module's on ++ # some systems (darwin) ++ if test "$shouldnotlink" = yes && test "$pass" = link ; then ++ $echo ++ if test "$linkmode" = prog; then ++ $echo "*** Warning: Linking the executable $output against the loadable module" ++ else ++ $echo "*** Warning: Linking the shared library $output against the loadable module" ++ fi ++ $echo "*** $linklib is not portable!" ++ fi ++ if test "$linkmode" = lib && ++ test "$hardcode_into_libs" = yes; then ++ # Hardcode the library path. ++ # Skip directories that are in the system default run-time ++ # search path. ++ case " $sys_lib_dlsearch_path " in ++ *" $absdir "*) ;; ++ *) ++ case "$compile_rpath " in ++ *" $absdir "*) ;; ++ *) compile_rpath="$compile_rpath $absdir" ++ esac ++ ;; ++ esac ++ case " $sys_lib_dlsearch_path " in ++ *" $libdir "*) ;; ++ *) ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ++ esac ++ ;; ++ esac ++ fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname +@@ -1731,7 +2639,7 @@ + elif test -n "$soname_spec"; then + # bleh windows + case $host in +- *cygwin*) ++ *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; +@@ -1743,17 +2651,18 @@ + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" +- soname=`echo $soroot | sed -e 's/^.*\///'` +- newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a" ++ soname=`$echo $soroot | ${SED} -e 's/^.*\///'` ++ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' +- eval cmds=\"$extract_expsyms_cmds\" ++ save_ifs="$IFS"; IFS='~' ++ cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -1763,10 +2672,11 @@ + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' +- eval cmds=\"$old_archive_from_expsyms_cmds\" ++ save_ifs="$IFS"; IFS='~' ++ cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -1775,9 +2685,9 @@ + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib +- fi # test -n $old_archive_from_expsyms_cmds ++ fi # test -n "$old_archive_from_expsyms_cmds" + +- if test $linkmode = prog || test "$mode" != relink; then ++ if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= +@@ -1786,6 +2696,26 @@ + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" ++ case $host in ++ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; ++ *-*-sysv4*uw2*) add_dir="-L$dir" ;; ++ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ ++ *-*-unixware7*) add_dir="-L$dir" ;; ++ *-*-darwin* ) ++ # if the lib is a module then we can not link against ++ # it, someone is ignoring the new warnings I added ++ if /usr/bin/file -L $add 2> /dev/null | ++ $EGREP ": [^:]* bundle" >/dev/null ; then ++ $echo "** Warning, lib $linklib is a module, not a shared library" ++ if test -z "$old_library" ; then ++ $echo ++ $echo "** And there doesn't seem to be a static archive available" ++ $echo "** The link will probably fail, sorry" ++ else ++ add="$dir/$old_library" ++ fi ++ fi ++ esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; +@@ -1804,6 +2734,14 @@ + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" ++ # Try looking first in the location we're being installed to. ++ if test -n "$inst_prefix_dir"; then ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; ++ esac ++ fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" +@@ -1817,7 +2755,7 @@ + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then +@@ -1826,7 +2764,7 @@ + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi +- if test $linkmode = prog; then ++ if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else +@@ -1843,7 +2781,7 @@ + fi + fi + +- if test $linkmode = prog || test "$mode" = relink; then ++ if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= +@@ -1859,13 +2797,28 @@ + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" ++ elif test "$hardcode_automatic" = yes; then ++ if test -n "$inst_prefix_dir" && ++ test -f "$inst_prefix_dir$libdir/$linklib" ; then ++ add="$inst_prefix_dir$libdir/$linklib" ++ else ++ add="$libdir/$linklib" ++ fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" ++ # Try looking first in the location we're being installed to. ++ if test -n "$inst_prefix_dir"; then ++ case $libdir in ++ [\\/]*) ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" ++ ;; ++ esac ++ fi + add="-l$name" + fi + +- if test $linkmode = prog; then ++ if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else +@@ -1873,16 +2826,7 @@ + test -n "$add" && deplibs="$add $deplibs" + fi + fi +- elif test $linkmode = prog; then +- if test "$alldeplibs" = yes && +- { test "$deplibs_check_method" = pass_all || +- { test "$build_libtool_libs" = yes && +- test -n "$library_names"; }; }; then +- # We only need to search for static libraries +- continue +- fi +- +- # Try to link the static library ++ elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. +@@ -1902,40 +2846,40 @@ + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. +- echo +- echo "*** Warning: This library needs some functionality provided by $lib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ $echo ++ $echo "*** Warning: This system can not link to static lib archive $lib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then +- echo "*** Therefore, libtool will create a static module, that should work " +- echo "*** as long as the dlopening application is linked with the -dlopen flag." ++ $echo "*** But as you try to build a module library, libtool will still create " ++ $echo "*** a static module, that should work as long as the dlopening application" ++ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then +- echo +- echo "*** However, this would only work if libtool was able to extract symbol" +- echo "*** lists from a program, using \`nm' or equivalent, but libtool could" +- echo "*** not find such a program. So, this module is probably useless." +- echo "*** \`nm' from GNU binutils and a full rebuild may help." ++ $echo ++ $echo "*** However, this would only work if libtool was able to extract symbol" ++ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ $echo "*** not find such a program. So, this module is probably useless." ++ $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then +- build_libtool_libs=module +- build_old_libs=yes ++ build_libtool_libs=module ++ build_old_libs=yes + else +- build_libtool_libs=no ++ build_libtool_libs=no + fi + fi + else +- convenience="$convenience $dir/$old_library" +- old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + +- if test $linkmode = lib; then ++ if test "$linkmode" = lib; then + if test -n "$dependency_libs" && +- { test $hardcode_into_libs != yes || test $build_old_libs = yes || +- test $link_static = yes; }; then ++ { test "$hardcode_into_libs" != yes || ++ test "$build_old_libs" = yes || ++ test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do +@@ -1958,13 +2902,15 @@ + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi + tmp_libs="$tmp_libs $deplib" + done + +- if test $link_all_deplibs != no; then ++ if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in +@@ -1984,38 +2930,83 @@ + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then +- path="-L$absdir/$objdir" ++ path="$absdir/$objdir" + else +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi +- path="-L$absdir" ++ path="$absdir" + fi ++ depdepl= ++ case $host in ++ *-*-darwin*) ++ # we do not want to link against static libs, ++ # but need to link against shared ++ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` ++ if test -n "$deplibrary_names" ; then ++ for tmp in $deplibrary_names ; do ++ depdepl=$tmp ++ done ++ if test -f "$path/$depdepl" ; then ++ depdepl="$path/$depdepl" ++ fi ++ # do not add paths which are already there ++ case " $newlib_search_path " in ++ *" $path "*) ;; ++ *) newlib_search_path="$newlib_search_path $path";; ++ esac ++ fi ++ path="" ++ ;; ++ *) ++ path="-L$path" ++ ;; ++ esac ++ ;; ++ -l*) ++ case $host in ++ *-*-darwin*) ++ # Again, we only want to link against shared libraries ++ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` ++ for tmp in $newlib_search_path ; do ++ if test -f "$tmp/lib$tmp_libs.dylib" ; then ++ eval depdepl="$tmp/lib$tmp_libs.dylib" ++ break ++ fi ++ done ++ path="" ++ ;; ++ *) continue ;; ++ esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; +- *) deplibs="$deplibs $path" ;; ++ *) deplibs="$path $deplibs" ;; ++ esac ++ case " $deplibs " in ++ *" $depdepl "*) ;; ++ *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs +- if test $pass = dlpreopen; then ++ dependency_libs="$newdependency_libs" ++ if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi +- if test $pass != dlopen; then +- test $pass != scan && dependency_libs="$newdependency_libs" +- if test $pass != conv; then ++ if test "$pass" != dlopen; then ++ if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do +@@ -2037,9 +3028,30 @@ + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do ++ # FIXME: Pedantically, this is the right thing to do, so ++ # that some nasty dependency loop isn't accidentally ++ # broken: ++ #new_libs="$deplib $new_libs" ++ # Pragmatically, this seems to cause very few problems in ++ # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; ++ -R*) ;; + *) ++ # And here is the reason: when a library appears more ++ # than once as an explicit dependence of a library, or ++ # is implicitly linked in more than once by the ++ # compiler, it is considered special, and multiple ++ # occurrences thereof are not removed. Compare this ++ # with having the same library being listed as a ++ # dependency of multiple other libraries: in this case, ++ # we know (pedantically, we assume) the library does not ++ # need to be listed more than once, so we keep only the ++ # last copy. This is not always right, but it is rare ++ # enough that we require users that really mean to play ++ # such unportable linking tricks to link the library ++ # using -Wl,-lname, so that libtool does not consider it ++ # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) +@@ -2067,19 +3079,32 @@ + eval $var=\"$tmp_libs\" + done # for var + fi +- if test "$pass" = "conv" && +- { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then +- libs="$deplibs" # reset libs +- deplibs= +- fi ++ # Last step: remove runtime libs from dependency_libs ++ # (they stay in deplibs) ++ tmp_libs= ++ for i in $dependency_libs ; do ++ case " $predeps $postdeps $compiler_lib_search_path " in ++ *" $i "*) ++ i="" ++ ;; ++ esac ++ if test -n "$i" ; then ++ tmp_libs="$tmp_libs $i" ++ fi ++ done ++ dependency_libs=$tmp_libs + done # for pass +- if test $linkmode = prog; then ++ if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) ++ if test -n "$deplibs"; then ++ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ++ fi ++ + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi +@@ -2093,7 +3118,7 @@ + fi + + if test -n "$vinfo"; then +- $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 ++ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then +@@ -2115,17 +3140,19 @@ + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` ++ eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` ++ eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` +@@ -2136,11 +3163,11 @@ + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 +- exit 1 ++ exit $EXIT_FAILURE + else +- echo +- echo "*** Warning: Linking the shared library $output against the non-libtool" +- echo "*** objects $objs is not portable!" ++ $echo ++ $echo "*** Warning: Linking the shared library $output against the non-libtool" ++ $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi +@@ -2150,7 +3177,7 @@ + fi + + set dummy $rpath +- if test $# -gt 2; then ++ if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" +@@ -2159,14 +3186,16 @@ + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. +- libext=al ++ # Some compilers have problems with a `.al' extension so ++ # convenience libraries should have the same extension an ++ # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then +- $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 ++ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then +@@ -2175,52 +3204,95 @@ + else + + # Parse the version information argument. +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' ++ save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + +- current="$2" +- revision="$3" +- age="$4" ++ # convert absolute version numbers to libtool ages ++ # this retains compatibility with .la files and attempts ++ # to make the code below a bit more comprehensible ++ ++ case $vinfo_number in ++ yes) ++ number_major="$2" ++ number_minor="$3" ++ number_revision="$4" ++ # ++ # There are really only two kinds -- those that ++ # use the current revision as the major version ++ # and those that subtract age and use age as ++ # a minor version. But, then there is irix ++ # which has an extra 1 added just for fun ++ # ++ case $version_type in ++ darwin|linux|osf|windows|none) ++ current=`expr $number_major + $number_minor` ++ age="$number_minor" ++ revision="$number_revision" ++ ;; ++ freebsd-aout|freebsd-elf|sunos) ++ current="$number_major" ++ revision="$number_minor" ++ age="0" ++ ;; ++ irix|nonstopux) ++ current=`expr $number_major + $number_minor` ++ age="$number_minor" ++ revision="$number_minor" ++ lt_irix_increment=no ++ ;; ++ *) ++ $echo "$modename: unknown library version type \`$version_type'" 1>&2 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE ++ ;; ++ esac ++ ;; ++ no) ++ current="$2" ++ revision="$3" ++ age="$4" ++ ;; ++ esac + + # Check that each of the things are valid numbers. + case $current in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) +- $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 ++ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $revision in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) +- $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 ++ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $age in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) +- $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 ++ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +- if test $age -gt $current; then ++ if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Calculate the version variables. +@@ -2237,6 +3309,7 @@ + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` ++ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + +@@ -2250,16 +3323,24 @@ + versuffix=".$current"; + ;; + +- irix) +- major=`expr $current - $age + 1` +- verstring="sgi$major.$revision" ++ irix | nonstopux) ++ if test "X$lt_irix_increment" = "Xno"; then ++ major=`expr $current - $age` ++ else ++ major=`expr $current - $age + 1` ++ fi ++ case $version_type in ++ nonstopux) verstring_prefix=nonstopux ;; ++ *) verstring_prefix=sgi ;; ++ esac ++ verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision +- while test $loop != 0; do ++ while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` +- verstring="sgi$major.$iface:$verstring" ++ verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. +@@ -2273,13 +3354,13 @@ + ;; + + osf) +- major=`expr $current - $age` ++ major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age +- while test $loop != 0; do ++ while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" +@@ -2303,15 +3384,24 @@ + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 +- echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= +- verstring="0.0" ++ case $version_type in ++ darwin) ++ # we can't check for "0.0" in archive_cmds due to quoting ++ # problems, so we reset it completely ++ verstring= ++ ;; ++ *) ++ verstring="0.0" ++ ;; ++ esac + if test "$need_version" = no; then + versuffix= + else +@@ -2340,9 +3430,30 @@ + fi + + if test "$mode" != relink; then +- # Remove our outputs. +- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" +- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* ++ # Remove our outputs, but don't remove object files since they ++ # may have been created when compiling PIC objects. ++ removelist= ++ tempremovelist=`$echo "$output_objdir/*"` ++ for p in $tempremovelist; do ++ case $p in ++ *.$objext) ++ ;; ++ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) ++ if test "X$precious_files_regex" != "X"; then ++ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 ++ then ++ continue ++ fi ++ fi ++ removelist="$removelist $p" ++ ;; ++ *) ;; ++ esac ++ done ++ if test -n "$removelist"; then ++ $show "${rm}r $removelist" ++ $run ${rm}r $removelist ++ fi + fi + + # Now set the variables for building old libraries. +@@ -2354,11 +3465,11 @@ + fi + + # Eliminate all temporary directories. +- for path in $notinst_path; do +- lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'` +- deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'` +- dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'` +- done ++ #for path in $notinst_path; do ++ # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` ++ # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` ++ # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` ++ #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. +@@ -2370,7 +3481,7 @@ + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done +- if test $hardcode_into_libs != yes || test $build_old_libs = yes; then ++ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi +@@ -2408,9 +3519,18 @@ + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; +- *) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ # Do not include libc due to us having libc/libc_r. ++ ;; ++ *-*-sco3.2v5* | *-*-sco5v6*) ++ # Causes problems with __ctype ++ ;; ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) ++ # Compiler inserts libc in the correct place for threads to work ++ ;; ++ *) + # Add libc to deplibs on all other systems if necessary. +- if test $build_libtool_need_lc = "yes"; then ++ if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; +@@ -2437,7 +3557,7 @@ + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just +- # implementing what was already the behaviour. ++ # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) +@@ -2450,64 +3570,85 @@ + int main() { return 0; } + EOF + $rm conftest +- $CC -o conftest conftest.c $deplibs +- if test $? -eq 0 ; then ++ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then + ldd_output=`ldd conftest` + for i in $deplibs; do +- name="`expr $i : '-l\(.*\)'`" ++ name=`expr $i : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- deplib_matches=`eval \\$echo \"$library_names_spec\"` +- set dummy $deplib_matches +- deplib_match=$2 +- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then +- newdeplibs="$newdeplibs $i" +- else +- droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $i." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ if test "$name" != "" && test "$name" != "0"; then ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $i "*) ++ newdeplibs="$newdeplibs $i" ++ i="" ++ ;; ++ esac ++ fi ++ if test -n "$i" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ deplib_matches=`eval \\$echo \"$library_names_spec\"` ++ set dummy $deplib_matches ++ deplib_match=$2 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then ++ newdeplibs="$newdeplibs $i" ++ else ++ droppeddeps=yes ++ $echo ++ $echo "*** Warning: dynamic linker does not accept needed library $i." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which I believe you do not have" ++ $echo "*** because a test_compile did reveal that the linker did not use it for" ++ $echo "*** its dynamic dependency list that programs get resolved with at runtime." ++ fi + fi + else + newdeplibs="$newdeplibs $i" + fi + done + else +- # Error occured in the first compile. Let's try to salvage the situation: +- # Compile a seperate program for each library. ++ # Error occurred in the first compile. Let's try to salvage ++ # the situation: Compile a separate program for each library. + for i in $deplibs; do +- name="`expr $i : '-l\(.*\)'`" +- # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then ++ name=`expr $i : '-l\(.*\)'` ++ # If $name is empty we are operating on a -L argument. ++ if test "$name" != "" && test "$name" != "0"; then + $rm conftest +- $CC -o conftest conftest.c $i +- # Did it work? +- if test $? -eq 0 ; then ++ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then + ldd_output=`ldd conftest` +- libname=`eval \\$echo \"$libname_spec\"` +- deplib_matches=`eval \\$echo \"$library_names_spec\"` +- set dummy $deplib_matches +- deplib_match=$2 +- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then +- newdeplibs="$newdeplibs $i" +- else +- droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $i." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $i "*) ++ newdeplibs="$newdeplibs $i" ++ i="" ++ ;; ++ esac ++ fi ++ if test -n "$i" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ deplib_matches=`eval \\$echo \"$library_names_spec\"` ++ set dummy $deplib_matches ++ deplib_match=$2 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then ++ newdeplibs="$newdeplibs $i" ++ else ++ droppeddeps=yes ++ $echo ++ $echo "*** Warning: dynamic linker does not accept needed library $i." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because a test_compile did reveal that the linker did not use this one" ++ $echo "*** as a dynamic dependency that programs can get resolved with at runtime." ++ fi + fi + else + droppeddeps=yes +- echo +- echo "*** Warning! Library $i is needed by this library but I was not able to" +- echo "*** make it link in! You will probably need to install it or some" +- echo "*** library that it depends on before this library will be fully" +- echo "*** functional. Installing it before continuing would be even better." ++ $echo ++ $echo "*** Warning! Library $i is needed by this library but I was not able to" ++ $echo "*** make it link in! You will probably need to install it or some" ++ $echo "*** library that it depends on before this library will be fully" ++ $echo "*** functional. Installing it before continuing would be even better." + fi + else + newdeplibs="$newdeplibs $i" +@@ -2519,13 +3660,22 @@ + set dummy $deplibs_check_method + file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do +- name="`expr $a_deplib : '-l\(.*\)'`" ++ name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. +- if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do +- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` +- for potent_lib in $potential_libs; do ++ if test "$name" != "" && test "$name" != "0"; then ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $a_deplib "*) ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ ;; ++ esac ++ fi ++ if test -n "$a_deplib" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` ++ for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then +@@ -2538,28 +3688,36 @@ + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do +- potliblink=`ls -ld $potlib | sed 's/.* -> //'` ++ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ +- | sed 10q \ +- | egrep "$file_magic_regex" > /dev/null; then ++ | ${SED} 10q \ ++ | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi +- done +- done ++ done ++ done ++ fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $a_deplib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ $echo ++ $echo "*** Warning: linker path does not have real file for library $a_deplib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because I did check the linker path looking for a file starting" ++ if test -z "$potlib" ; then ++ $echo "*** with $libname but no candidates were found. (...for file magic test)" ++ else ++ $echo "*** with $libname and none of the candidates passed a file format test" ++ $echo "*** using a file magic. Last file checked: $potlib" ++ fi + fi + else + # Add a -L argument. +@@ -2571,29 +3729,47 @@ + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do +- name="`expr $a_deplib : '-l\(.*\)'`" ++ name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then +- libname=`eval \\$echo \"$libname_spec\"` +- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do +- potential_libs=`ls $i/$libname[.-]* 2>/dev/null` +- for potent_lib in $potential_libs; do +- if eval echo \"$potent_lib\" 2>/dev/null \ +- | sed 10q \ +- | egrep "$match_pattern_regex" > /dev/null; then +- newdeplibs="$newdeplibs $a_deplib" +- a_deplib="" +- break 2 +- fi ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ case " $predeps $postdeps " in ++ *" $a_deplib "*) ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ ;; ++ esac ++ fi ++ if test -n "$a_deplib" ; then ++ libname=`eval \\$echo \"$libname_spec\"` ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` ++ for potent_lib in $potential_libs; do ++ potlib="$potent_lib" # see symlink-check above in file_magic test ++ if eval $echo \"$potent_lib\" 2>/dev/null \ ++ | ${SED} 10q \ ++ | $EGREP "$match_pattern_regex" > /dev/null; then ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ break 2 ++ fi ++ done + done +- done ++ fi + if test -n "$a_deplib" ; then + droppeddeps=yes +- echo +- echo "*** Warning: This library needs some functionality provided by $a_deplib." +- echo "*** I have the capability to make that library automatically link in when" +- echo "*** you link to this library. But I can only do this if you have a" +- echo "*** shared version of the library, which you do not appear to have." ++ $echo ++ $echo "*** Warning: linker path does not have real file for library $a_deplib." ++ $echo "*** I have the capability to make that library automatically link in when" ++ $echo "*** you link to this library. But I can only do this if you have a" ++ $echo "*** shared version of the library, which you do not appear to have" ++ $echo "*** because I did check the linker path looking for a file starting" ++ if test -z "$potlib" ; then ++ $echo "*** with $libname but no candidates were found. (...for regex pattern test)" ++ else ++ $echo "*** with $libname and none of the candidates passed a file format test" ++ $echo "*** using a regex pattern. Last file checked: $potlib" ++ fi + fi + else + # Add a -L argument. +@@ -2603,16 +3779,23 @@ + ;; + none | unknown | *) + newdeplibs="" +- if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ +- -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | +- grep . >/dev/null; then +- echo ++ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ ++ -e 's/ -[LR][^ ]*//g'` ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then ++ for i in $predeps $postdeps ; do ++ # can't use Xsed below, because $i might contain '/' ++ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` ++ done ++ fi ++ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ ++ | grep . >/dev/null; then ++ $echo + if test "X$deplibs_check_method" = "Xnone"; then +- echo "*** Warning: inter-library dependencies are not supported in this platform." ++ $echo "*** Warning: inter-library dependencies are not supported in this platform." + else +- echo "*** Warning: inter-library dependencies are not known to be supported." ++ $echo "*** Warning: inter-library dependencies are not known to be supported." + fi +- echo "*** All declared inter-library dependencies are being dropped." ++ $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; +@@ -2632,17 +3815,17 @@ + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then +- echo +- echo "*** Warning: libtool could not satisfy all declared inter-library" +- echo "*** dependencies of module $libname. Therefore, libtool will create" +- echo "*** a static module, that should work as long as the dlopening" +- echo "*** application is linked with the -dlopen flag." ++ $echo ++ $echo "*** Warning: libtool could not satisfy all declared inter-library" ++ $echo "*** dependencies of module $libname. Therefore, libtool will create" ++ $echo "*** a static module, that should work as long as the dlopening" ++ $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then +- echo +- echo "*** However, this would only work if libtool was able to extract symbol" +- echo "*** lists from a program, using \`nm' or equivalent, but libtool could" +- echo "*** not find such a program. So, this module is probably useless." +- echo "*** \`nm' from GNU binutils and a full rebuild may help." ++ $echo ++ $echo "*** However, this would only work if libtool was able to extract symbol" ++ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" ++ $echo "*** not find such a program. So, this module is probably useless." ++ $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" +@@ -2652,16 +3835,16 @@ + build_libtool_libs=no + fi + else +- echo "*** The inter-library dependencies that have been dropped here will be" +- echo "*** automatically added whenever a program is linked with this library" +- echo "*** or is declared to -dlopen it." +- +- if test $allow_undefined = no; then +- echo +- echo "*** Since this library must not contain undefined symbols," +- echo "*** because either the platform does not support them or" +- echo "*** it was explicitly requested with -no-undefined," +- echo "*** libtool will only create a static version of it." ++ $echo "*** The inter-library dependencies that have been dropped here will be" ++ $echo "*** automatically added whenever a program is linked with this library" ++ $echo "*** or is declared to -dlopen it." ++ ++ if test "$allow_undefined" = no; then ++ $echo ++ $echo "*** Since this library must not contain undefined symbols," ++ $echo "*** because either the platform does not support them or" ++ $echo "*** it was explicitly requested with -no-undefined," ++ $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module +@@ -2676,6 +3859,35 @@ + deplibs=$newdeplibs + fi + ++ ++ # move library search paths that coincide with paths to not yet ++ # installed libraries to the beginning of the library search list ++ new_libs= ++ for path in $notinst_path; do ++ case " $new_libs " in ++ *" -L$path/$objdir "*) ;; ++ *) ++ case " $deplibs " in ++ *" -L$path/$objdir "*) ++ new_libs="$new_libs -L$path/$objdir" ;; ++ esac ++ ;; ++ esac ++ done ++ for deplib in $deplibs; do ++ case $deplib in ++ -L*) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ done ++ deplibs="$new_libs" ++ ++ + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= +@@ -2683,7 +3895,7 @@ + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then +- if test $hardcode_into_libs = yes; then ++ if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= +@@ -2719,7 +3931,14 @@ + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" +- eval dep_rpath=\"$hardcode_libdir_flag_spec\" ++ if test -n "$hardcode_libdir_flag_spec_ld"; then ++ case $archive_cmds in ++ *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; ++ *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; ++ esac ++ else ++ eval dep_rpath=\"$hardcode_libdir_flag_spec\" ++ fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. +@@ -2739,6 +3958,7 @@ + fi + + # Get the real and link names of the library. ++ eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" +@@ -2749,31 +3969,17 @@ + else + soname="$realname" + fi +- test -z "$dlname" && dlname=$soname ++ if test -z "$dlname"; then ++ dlname=$soname ++ fi + + lib="$output_objdir/$realname" ++ linknames= + for link + do + linknames="$linknames $link" + done + +- # Ensure that we have .o objects for linkers which dislike .lo +- # (e.g. aix) in case we are running --disable-static +- for obj in $libobjs; do +- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$obj"; then +- xdir="." +- else +- xdir="$xdir" +- fi +- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` +- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` +- if test ! -f $xdir/$oldobj; then +- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" +- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? +- fi +- done +- + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + +@@ -2783,17 +3989,29 @@ + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols +- eval cmds=\"$export_symbols_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$export_symbols_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" +- $show "$cmd" +- $run eval "$cmd" || exit $? ++ eval cmd=\"$cmd\" ++ if len=`expr "X$cmd" : ".*"` && ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ skipped_export=false ++ else ++ # The command line is too long to execute in one step. ++ $show "using reloadable object file for export list..." ++ skipped_export=: ++ # Break out early, otherwise skipped_export may be ++ # set to false by a later but shorter cmd. ++ break ++ fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then +- $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" +- $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' ++ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" ++ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi +@@ -2804,74 +4022,210 @@ + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + ++ tmp_deplibs= ++ for test_deplib in $deplibs; do ++ case " $convenience " in ++ *" $test_deplib "*) ;; ++ *) ++ tmp_deplibs="$tmp_deplibs $test_deplib" ++ ;; ++ esac ++ done ++ deplibs="$tmp_deplibs" ++ + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then ++ save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test $status -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- for xlib in $convenience; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" ++ func_extract_archives $gentop $convenience ++ libobjs="$libobjs $func_extract_archives_result" ++ fi ++ fi ++ ++ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then ++ eval flag=\"$thread_safe_flag_spec\" ++ linker_flags="$linker_flags $flag" ++ fi ++ ++ # Make a backup of the uninstalled library when relinking ++ if test "$mode" = relink; then ++ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? ++ fi ++ ++ # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ eval test_cmds=\"$module_expsym_cmds\" ++ cmds=$module_expsym_cmds ++ else ++ eval test_cmds=\"$module_cmds\" ++ cmds=$module_cmds ++ fi ++ else ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ eval test_cmds=\"$archive_expsym_cmds\" ++ cmds=$archive_expsym_cmds ++ else ++ eval test_cmds=\"$archive_cmds\" ++ cmds=$archive_cmds ++ fi ++ fi ++ ++ if test "X$skipped_export" != "X:" && ++ len=`expr "X$test_cmds" : ".*" 2>/dev/null` && ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ : ++ else ++ # The command line is too long to link in one step, link piecewise. ++ $echo "creating reloadable object files..." + +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test $status -ne 0 && test ! -d "$xdir"; then +- exit $status ++ # Save the value of $output and $libobjs because we want to ++ # use them later. If we have whole_archive_flag_spec, we ++ # want to use save_libobjs as it was before ++ # whole_archive_flag_spec was expanded, because we can't ++ # assume the linker understands whole_archive_flag_spec. ++ # This may have to be revisited, in case too many ++ # convenience libraries get linked in and end up exceeding ++ # the spec. ++ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then ++ save_libobjs=$libobjs ++ fi ++ save_output=$output ++ output_la=`$echo "X$output" | $Xsed -e "$basename"` ++ ++ # Clear the reloadable object creation command queue and ++ # initialize k to one. ++ test_cmds= ++ concat_cmds= ++ objlist= ++ delfiles= ++ last_robj= ++ k=1 ++ output=$output_objdir/$output_la-${k}.$objext ++ # Loop over the list of objects to be linked. ++ for obj in $save_libobjs ++ do ++ eval test_cmds=\"$reload_cmds $objlist $last_robj\" ++ if test "X$objlist" = X || ++ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && ++ test "$len" -le "$max_cmd_len"; }; then ++ objlist="$objlist $obj" ++ else ++ # The command $test_cmds is almost too long, add a ++ # command to the queue. ++ if test "$k" -eq 1 ; then ++ # The first file doesn't have a previous command to add. ++ eval concat_cmds=\"$reload_cmds $objlist $last_robj\" ++ else ++ # All subsequent reloadable object files will link in ++ # the last one created. ++ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? ++ last_robj=$output_objdir/$output_la-${k}.$objext ++ k=`expr $k + 1` ++ output=$output_objdir/$output_la-${k}.$objext ++ objlist=$obj ++ len=1 ++ fi ++ done ++ # Handle the remaining objects by creating one last ++ # reloadable object file. All subsequent reloadable object ++ # files will link in the last one created. ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" ++ ++ if ${skipped_export-false}; then ++ $show "generating symbol list for \`$libname.la'" ++ export_symbols="$output_objdir/$libname.exp" ++ $run $rm $export_symbols ++ libobjs=$output ++ # Append the command to create the export file. ++ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" ++ fi ++ ++ # Set up a command to remove the reloadable object files ++ # after they are used. ++ i=0 ++ while test "$i" -lt "$k" ++ do ++ i=`expr $i + 1` ++ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" ++ done ++ ++ $echo "creating a temporary reloadable object file: $output" ++ ++ # Loop through the commands generated above and execute them. ++ save_ifs="$IFS"; IFS='~' ++ for cmd in $concat_cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ ++ libobjs=$output ++ # Restore the value of output. ++ output=$save_output + +- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` +- done ++ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi +- fi +- +- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then +- eval flag=\"$thread_safe_flag_spec\" +- linker_flags="$linker_flags $flag" +- fi ++ # Expand the library linking commands again to reset the ++ # value of $libobjs for piecewise linking. + +- # Make a backup of the uninstalled library when relinking +- if test "$mode" = relink; then +- $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? +- fi ++ # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ cmds=$module_expsym_cmds ++ else ++ cmds=$module_cmds ++ fi ++ else ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ cmds=$archive_expsym_cmds ++ else ++ cmds=$archive_cmds ++ fi ++ fi + +- # Do each of the archive commands. +- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then +- eval cmds=\"$archive_expsym_cmds\" +- else +- eval cmds=\"$archive_cmds\" ++ # Append the command to remove the reloadable object files ++ # to the just-reset $cmds. ++ eval cmds=\"\$cmds~\$rm $delfiles\" + fi +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" +- $run eval "$cmd" || exit $? ++ $run eval "$cmd" || { ++ lt_exit=$? ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' ++ fi ++ ++ exit $lt_exit ++ } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? +- exit 0 ++ ++ if test -n "$convenience"; then ++ if test -z "$whole_archive_flag_spec"; then ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ fi ++ fi ++ ++ exit $EXIT_SUCCESS + fi + + # Create links to the real library. +@@ -2919,7 +4273,7 @@ + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` +@@ -2940,46 +4294,20 @@ + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of +- # -Wl from whole_archive_flag_spec ++ # -Wl from whole_archive_flag_spec and hope we can get by with ++ # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then +- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" ++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" ++ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test $status -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- for xlib in $convenience; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test $status -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` +- done ++ func_extract_archives $gentop $convenience ++ reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + +@@ -2987,10 +4315,11 @@ + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" +- eval cmds=\"$reload_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$reload_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -3003,7 +4332,7 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then +@@ -3014,37 +4343,24 @@ + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. +- $show "echo timestamp > $libobj" +- $run eval "echo timestamp > $libobj" || exit $? +- exit 0 ++ # $show "echo timestamp > $libobj" ++ # $run eval "echo timestamp > $libobj" || exit $? ++ exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" +- eval cmds=\"$reload_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$reload_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" +- else +- # Just create a symlink. +- $show $rm $libobj +- $run $rm $libobj +- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$libobj"; then +- xdir="." +- else +- xdir="$xdir" +- fi +- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` +- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` +- $show "(cd $xdir && $LN_S $oldobj $baseobj)" +- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then +@@ -3052,12 +4368,12 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + prog) + case $host in +- *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; ++ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 +@@ -3082,6 +4398,45 @@ + ;; + esac + ++ case $host in ++ *darwin*) ++ # Don't allow lazy linking, it breaks C++ global constructors ++ if test "$tagname" = CXX ; then ++ compile_command="$compile_command ${wl}-bind_at_load" ++ finalize_command="$finalize_command ${wl}-bind_at_load" ++ fi ++ ;; ++ esac ++ ++ ++ # move library search paths that coincide with paths to not yet ++ # installed libraries to the beginning of the library search list ++ new_libs= ++ for path in $notinst_path; do ++ case " $new_libs " in ++ *" -L$path/$objdir "*) ;; ++ *) ++ case " $compile_deplibs " in ++ *" -L$path/$objdir "*) ++ new_libs="$new_libs -L$path/$objdir" ;; ++ esac ++ ;; ++ esac ++ done ++ for deplib in $compile_deplibs; do ++ case $deplib in ++ -L*) ++ case " $new_libs " in ++ *" $deplib "*) ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ ;; ++ *) new_libs="$new_libs $deplib" ;; ++ esac ++ done ++ compile_deplibs="$new_libs" ++ ++ + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + +@@ -3126,10 +4481,15 @@ + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) ++ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac ++ case :$dllsearchpath: in ++ *":$testbindir:"*) ;; ++ *) dllsearchpath="$dllsearchpath:$testbindir";; ++ esac + ;; + esac + done +@@ -3232,31 +4592,43 @@ + done + + if test -n "$exclude_expsyms"; then +- $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' ++ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then +- $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' ++ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then +- export_symbols="$output_objdir/$output.exp" ++ export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols +- $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ case $host in ++ *cygwin* | *mingw* ) ++ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' ++ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ++ ;; ++ esac + else +- $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' +- $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' ++ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' ++ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' ++ case $host in ++ *cygwin* | *mingw* ) ++ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' ++ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ++ ;; ++ esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" +- name=`echo "$arg" | sed -e 's%^.*/%%'` +- $run eval 'echo ": $name " >> "$nlist"' ++ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` ++ $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + +@@ -3265,12 +4637,18 @@ + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then +- egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T ++ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. +- if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then ++ if grep -v "^: " < "$nlist" | ++ if sort -k 3 /dev/null 2>&1; then ++ sort -k 3 ++ else ++ sort +2 ++ fi | ++ uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S +@@ -3279,7 +4657,7 @@ + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else +- echo '/* NONE */' >> "$output_objdir/$dlsyms" ++ $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ +@@ -3287,27 +4665,44 @@ + #undef lt_preloaded_symbols + + #if defined (__STDC__) && __STDC__ +-# define lt_ptr_t void * ++# define lt_ptr void * + #else +-# define lt_ptr_t char * ++# define lt_ptr char * + # define const + #endif + + /* The mapping between symbol names and symbols. */ ++" ++ ++ case $host in ++ *cygwin* | *mingw* ) ++ $echo >> "$output_objdir/$dlsyms" "\ ++/* DATA imports from DLLs on WIN32 can't be const, because ++ runtime relocations are performed -- see ld's documentation ++ on pseudo-relocs */ ++struct { ++" ++ ;; ++ * ) ++ $echo >> "$output_objdir/$dlsyms" "\ + const struct { ++" ++ ;; ++ esac ++ ++ ++ $echo >> "$output_objdir/$dlsyms" "\ + const char *name; +- lt_ptr_t address; ++ lt_ptr address; + } + lt_preloaded_symbols[] = + {\ + " + +- sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ +- -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ +- < "$nlist" >> "$output_objdir/$dlsyms" ++ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ +- {0, (lt_ptr_t) 0} ++ {0, (lt_ptr) 0} + }; + + /* This works around a problem in FreeBSD linker */ +@@ -3333,30 +4728,43 @@ + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; +- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; ++ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; +- *) pic_flag_for_symtable=" $pic_flag -DPIC";; ++ *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. +- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" +- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? ++ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" ++ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. +- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` +- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ++ case $host in ++ *cygwin* | *mingw* ) ++ if test -f "$output_objdir/${outputname}.def" ; then ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ else ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ fi ++ ;; ++ * ) ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` ++ ;; ++ esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + else +@@ -3365,19 +4773,19 @@ + # really was required. + + # Nullify the symbol file. +- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` +- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` ++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + +- if test $need_relink = no || test "$build_libtool_libs" != yes; then ++ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. +- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` ++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" +- status=$? ++ exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then +@@ -3385,7 +4793,7 @@ + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + +- exit $status ++ exit $exit_status + fi + + if test -n "$shlibpath_var"; then +@@ -3444,7 +4852,7 @@ + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then +@@ -3458,7 +4866,7 @@ + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then +- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` ++ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= +@@ -3494,15 +4902,15 @@ + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done +- relink_command="cd `pwd`; $relink_command" +- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ relink_command="(cd `pwd`; $relink_command)" ++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. +- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then +- case $0 in +- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; +- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; ++ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then ++ case $progpath in ++ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; ++ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else +@@ -3514,15 +4922,376 @@ + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in +- *.exe) output=`echo $output|sed 's,.exe$,,'` ;; ++ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in +- *cygwin*) exeext=.exe ;; ++ *cygwin*) ++ exeext=.exe ++ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac +- $rm $output +- trap "$rm $output; exit 1" 1 2 15 ++ case $host in ++ *cygwin* | *mingw* ) ++ output_name=`basename $output` ++ output_path=`dirname $output` ++ cwrappersource="$output_path/$objdir/lt-$output_name.c" ++ cwrapper="$output_path/$output_name.exe" ++ $rm $cwrappersource $cwrapper ++ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 ++ ++ cat > $cwrappersource <> $cwrappersource<<"EOF" ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#if defined(PATH_MAX) ++# define LT_PATHMAX PATH_MAX ++#elif defined(MAXPATHLEN) ++# define LT_PATHMAX MAXPATHLEN ++#else ++# define LT_PATHMAX 1024 ++#endif ++ ++#ifndef DIR_SEPARATOR ++# define DIR_SEPARATOR '/' ++# define PATH_SEPARATOR ':' ++#endif ++ ++#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ ++ defined (__OS2__) ++# define HAVE_DOS_BASED_FILE_SYSTEM ++# ifndef DIR_SEPARATOR_2 ++# define DIR_SEPARATOR_2 '\\' ++# endif ++# ifndef PATH_SEPARATOR_2 ++# define PATH_SEPARATOR_2 ';' ++# endif ++#endif ++ ++#ifndef DIR_SEPARATOR_2 ++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) ++#else /* DIR_SEPARATOR_2 */ ++# define IS_DIR_SEPARATOR(ch) \ ++ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) ++#endif /* DIR_SEPARATOR_2 */ ++ ++#ifndef PATH_SEPARATOR_2 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) ++#else /* PATH_SEPARATOR_2 */ ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) ++#endif /* PATH_SEPARATOR_2 */ ++ ++#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) ++#define XFREE(stale) do { \ ++ if (stale) { free ((void *) stale); stale = 0; } \ ++} while (0) ++ ++/* -DDEBUG is fairly common in CFLAGS. */ ++#undef DEBUG ++#if defined DEBUGWRAPPER ++# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) ++#else ++# define DEBUG(format, ...) ++#endif ++ ++const char *program_name = NULL; ++ ++void * xmalloc (size_t num); ++char * xstrdup (const char *string); ++const char * base_name (const char *name); ++char * find_executable(const char *wrapper); ++int check_executable(const char *path); ++char * strendzap(char *str, const char *pat); ++void lt_fatal (const char *message, ...); ++ ++int ++main (int argc, char *argv[]) ++{ ++ char **newargz; ++ int i; ++ ++ program_name = (char *) xstrdup (base_name (argv[0])); ++ DEBUG("(main) argv[0] : %s\n",argv[0]); ++ DEBUG("(main) program_name : %s\n",program_name); ++ newargz = XMALLOC(char *, argc+2); ++EOF ++ ++ cat >> $cwrappersource <> $cwrappersource <<"EOF" ++ newargz[1] = find_executable(argv[0]); ++ if (newargz[1] == NULL) ++ lt_fatal("Couldn't find %s", argv[0]); ++ DEBUG("(main) found exe at : %s\n",newargz[1]); ++ /* we know the script has the same name, without the .exe */ ++ /* so make sure newargz[1] doesn't end in .exe */ ++ strendzap(newargz[1],".exe"); ++ for (i = 1; i < argc; i++) ++ newargz[i+1] = xstrdup(argv[i]); ++ newargz[argc+1] = NULL; ++ ++ for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" ++ return 127; ++} ++ ++void * ++xmalloc (size_t num) ++{ ++ void * p = (void *) malloc (num); ++ if (!p) ++ lt_fatal ("Memory exhausted"); ++ ++ return p; ++} ++ ++char * ++xstrdup (const char *string) ++{ ++ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL ++; ++} ++ ++const char * ++base_name (const char *name) ++{ ++ const char *base; ++ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ /* Skip over the disk name in MSDOS pathnames. */ ++ if (isalpha ((unsigned char)name[0]) && name[1] == ':') ++ name += 2; ++#endif ++ ++ for (base = name; *name; name++) ++ if (IS_DIR_SEPARATOR (*name)) ++ base = name + 1; ++ return base; ++} ++ ++int ++check_executable(const char * path) ++{ ++ struct stat st; ++ ++ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); ++ if ((!path) || (!*path)) ++ return 0; ++ ++ if ((stat (path, &st) >= 0) && ++ ( ++ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ ++#if defined (S_IXOTH) ++ ((st.st_mode & S_IXOTH) == S_IXOTH) || ++#endif ++#if defined (S_IXGRP) ++ ((st.st_mode & S_IXGRP) == S_IXGRP) || ++#endif ++ ((st.st_mode & S_IXUSR) == S_IXUSR)) ++ ) ++ return 1; ++ else ++ return 0; ++} ++ ++/* Searches for the full path of the wrapper. Returns ++ newly allocated full path name if found, NULL otherwise */ ++char * ++find_executable (const char* wrapper) ++{ ++ int has_slash = 0; ++ const char* p; ++ const char* p_next; ++ /* static buffer for getcwd */ ++ char tmp[LT_PATHMAX + 1]; ++ int tmp_len; ++ char* concat_name; ++ ++ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); ++ ++ if ((wrapper == NULL) || (*wrapper == '\0')) ++ return NULL; ++ ++ /* Absolute path? */ ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') ++ { ++ concat_name = xstrdup (wrapper); ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ } ++ else ++ { ++#endif ++ if (IS_DIR_SEPARATOR (wrapper[0])) ++ { ++ concat_name = xstrdup (wrapper); ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ } ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM) ++ } ++#endif ++ ++ for (p = wrapper; *p; p++) ++ if (*p == '/') ++ { ++ has_slash = 1; ++ break; ++ } ++ if (!has_slash) ++ { ++ /* no slashes; search PATH */ ++ const char* path = getenv ("PATH"); ++ if (path != NULL) ++ { ++ for (p = path; *p; p = p_next) ++ { ++ const char* q; ++ size_t p_len; ++ for (q = p; *q; q++) ++ if (IS_PATH_SEPARATOR(*q)) ++ break; ++ p_len = q - p; ++ p_next = (*q == '\0' ? q : q + 1); ++ if (p_len == 0) ++ { ++ /* empty path: current directory */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ tmp_len = strlen(tmp); ++ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); ++ memcpy (concat_name, tmp, tmp_len); ++ concat_name[tmp_len] = '/'; ++ strcpy (concat_name + tmp_len + 1, wrapper); ++ } ++ else ++ { ++ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); ++ memcpy (concat_name, p, p_len); ++ concat_name[p_len] = '/'; ++ strcpy (concat_name + p_len + 1, wrapper); ++ } ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ } ++ } ++ /* not found in PATH; assume curdir */ ++ } ++ /* Relative path | not found in path: prepend cwd */ ++ if (getcwd (tmp, LT_PATHMAX) == NULL) ++ lt_fatal ("getcwd failed"); ++ tmp_len = strlen(tmp); ++ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); ++ memcpy (concat_name, tmp, tmp_len); ++ concat_name[tmp_len] = '/'; ++ strcpy (concat_name + tmp_len + 1, wrapper); ++ ++ if (check_executable(concat_name)) ++ return concat_name; ++ XFREE(concat_name); ++ return NULL; ++} ++ ++char * ++strendzap(char *str, const char *pat) ++{ ++ size_t len, patlen; ++ ++ assert(str != NULL); ++ assert(pat != NULL); ++ ++ len = strlen(str); ++ patlen = strlen(pat); ++ ++ if (patlen <= len) ++ { ++ str += len - patlen; ++ if (strcmp(str, pat) == 0) ++ *str = '\0'; ++ } ++ return str; ++} ++ ++static void ++lt_error_core (int exit_status, const char * mode, ++ const char * message, va_list ap) ++{ ++ fprintf (stderr, "%s: %s: ", program_name, mode); ++ vfprintf (stderr, message, ap); ++ fprintf (stderr, ".\n"); ++ ++ if (exit_status >= 0) ++ exit (exit_status); ++} ++ ++void ++lt_fatal (const char *message, ...) ++{ ++ va_list ap; ++ va_start (ap, message); ++ lt_error_core (EXIT_FAILURE, "FATAL", message, ap); ++ va_end (ap); ++} ++EOF ++ # we should really use a build-platform specific compiler ++ # here, but OTOH, the wrappers (shell script and this C one) ++ # are only useful if you want to execute the "real" binary. ++ # Since the "real" binary is built for $host, then this ++ # wrapper might as well be built for $host, too. ++ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource ++ ;; ++ esac ++ $rm $output ++ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ + #! $SHELL +@@ -3538,12 +5307,26 @@ + + # Sed substitution that helps us do robust quoting. It backslashifies + # metacharacters that are still active within double-quoted strings. +-Xsed='sed -e 1s/^X//' ++Xsed='${SED} -e 1s/^X//' + sed_quote_subst='$sed_quote_subst' + ++# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). ++if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST ++else ++ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac ++fi ++BIN_SH=xpg4; export BIN_SH # for Tru64 ++DUALCASE=1; export DUALCASE # for MKS sh ++ + # The HP-UX ksh and POSIX shell print the target directory to stdout + # if CDPATH is set. +-if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + relink_command=\"$relink_command\" + +@@ -3576,7 +5359,7 @@ + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. +- file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + +@@ -3589,7 +5372,7 @@ + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` +- file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` ++ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. +@@ -3598,12 +5381,12 @@ + " + + if test "$fast_install" = yes; then +- echo >> $output "\ ++ $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ +- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ ++ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" +@@ -3614,14 +5397,15 @@ + $rm \"\$progdir/\$file\" + fi" + +- echo >> $output "\ ++ $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then +- if (eval \$relink_command); then : ++ if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else ++ $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + +@@ -3631,13 +5415,13 @@ + $rm \"\$progdir/\$file\" + fi" + else +- echo >> $output "\ ++ $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" + " + fi + +- echo >> $output "\ ++ $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + +@@ -3668,47 +5452,35 @@ + # Run the actual program with our arguments. + " + case $host in +- # win32 systems need to use the prog path for dll +- # lookup to work +- *-*-cygwin* | *-*-pw32*) +- $echo >> $output "\ +- exec \$progdir/\$program \${1+\"\$@\"} +-" +- ;; +- + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ +- exec \$progdir\\\\\$program \${1+\"\$@\"} ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} + " + ;; + + *) + $echo >> $output "\ +- # Export the path to the program. +- PATH=\"\$progdir:\$PATH\" +- export PATH +- +- exec \$program \${1+\"\$@\"} ++ exec \"\$progdir/\$program\" \${1+\"\$@\"} + " + ;; + esac + $echo >> $output "\ +- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" +- exit 1 ++ \$echo \"\$0: cannot exec \$program \$*\" ++ exit $EXIT_FAILURE + fi + else + # The program doesn't exist. +- \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 ++ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 +- echo \"See the $PACKAGE documentation for more information.\" 1>&2 +- exit 1 ++ $echo \"See the $PACKAGE documentation for more information.\" 1>&2 ++ exit $EXIT_FAILURE + fi + fi\ + " + chmod +x $output + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + esac + +@@ -3724,74 +5496,130 @@ + oldobjs="$libobjs_save" + build_libtool_libs=no + else +- oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` ++ oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" +- $show "${rm}r $gentop" +- $run ${rm}r "$gentop" +- $show "mkdir $gentop" +- $run mkdir "$gentop" +- status=$? +- if test $status -ne 0 && test ! -d "$gentop"; then +- exit $status +- fi + generated="$generated $gentop" + +- # Add in members from convenience archives. +- for xlib in $addlibs; do +- # Extract the objects. +- case $xlib in +- [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; +- *) xabs=`pwd`"/$xlib" ;; +- esac +- xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` +- xdir="$gentop/$xlib" +- +- $show "${rm}r $xdir" +- $run ${rm}r "$xdir" +- $show "mkdir $xdir" +- $run mkdir "$xdir" +- status=$? +- if test $status -ne 0 && test ! -d "$xdir"; then +- exit $status +- fi +- $show "(cd $xdir && $AR x $xabs)" +- $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? +- +- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` +- done ++ func_extract_archives $gentop $addlibs ++ oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then +- eval cmds=\"$old_archive_from_new_cmds\" ++ cmds=$old_archive_from_new_cmds + else +- # Ensure that we have .o objects in place in case we decided +- # not to build a shared library, and have fallen back to building +- # static libs even though --disable-static was passed! +- for oldobj in $oldobjs; do +- if test ! -f $oldobj; then +- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` +- if test "X$xdir" = "X$oldobj"; then +- xdir="." +- else +- xdir="$xdir" ++ # POSIX demands no paths to be encoded in archives. We have ++ # to avoid creating archives with duplicate basenames if we ++ # might have to extract them afterwards, e.g., when creating a ++ # static archive out of a convenience library, or when linking ++ # the entirety of a libtool archive into another (currently ++ # not supported by libtool). ++ if (for obj in $oldobjs ++ do ++ $echo "X$obj" | $Xsed -e 's%^.*/%%' ++ done | sort | sort -uc >/dev/null 2>&1); then ++ : ++ else ++ $echo "copying selected object files to avoid basename conflicts..." ++ ++ if test -z "$gentop"; then ++ gentop="$output_objdir/${outputname}x" ++ generated="$generated $gentop" ++ ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ $show "$mkdir $gentop" ++ $run $mkdir "$gentop" ++ exit_status=$? ++ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then ++ exit $exit_status + fi +- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` +- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` +- $show "(cd $xdir && ${LN_S} $obj $baseobj)" +- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi +- done ++ ++ save_oldobjs=$oldobjs ++ oldobjs= ++ counter=1 ++ for obj in $save_oldobjs ++ do ++ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` ++ case " $oldobjs " in ++ " ") oldobjs=$obj ;; ++ *[\ /]"$objbase "*) ++ while :; do ++ # Make sure we don't pick an alternate name that also ++ # overlaps. ++ newobj=lt$counter-$objbase ++ counter=`expr $counter + 1` ++ case " $oldobjs " in ++ *[\ /]"$newobj "*) ;; ++ *) if test ! -f "$gentop/$newobj"; then break; fi ;; ++ esac ++ done ++ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" ++ $run ln "$obj" "$gentop/$newobj" || ++ $run cp "$obj" "$gentop/$newobj" ++ oldobjs="$oldobjs $gentop/$newobj" ++ ;; ++ *) oldobjs="$oldobjs $obj" ;; ++ esac ++ done ++ fi + + eval cmds=\"$old_archive_cmds\" ++ ++ if len=`expr "X$cmds" : ".*"` && ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then ++ cmds=$old_archive_cmds ++ else ++ # the command line is too long to link in one step, link in parts ++ $echo "using piecewise archive linking..." ++ save_RANLIB=$RANLIB ++ RANLIB=: ++ objlist= ++ concat_cmds= ++ save_oldobjs=$oldobjs ++ ++ # Is there a better way of finding the last object in the list? ++ for obj in $save_oldobjs ++ do ++ last_oldobj=$obj ++ done ++ for obj in $save_oldobjs ++ do ++ oldobjs="$objlist $obj" ++ objlist="$objlist $obj" ++ eval test_cmds=\"$old_archive_cmds\" ++ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && ++ test "$len" -le "$max_cmd_len"; then ++ : ++ else ++ # the above command should be used before it gets too long ++ oldobjs=$objlist ++ if test "$obj" = "$last_oldobj" ; then ++ RANLIB=$save_RANLIB ++ fi ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ ++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" ++ objlist= ++ fi ++ done ++ RANLIB=$save_RANLIB ++ oldobjs=$objlist ++ if test "X$oldobjs" = "X" ; then ++ eval cmds=\"\$concat_cmds\" ++ else ++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" ++ fi ++ fi + fi +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do ++ eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? +@@ -3823,8 +5651,12 @@ + fi + done + # Quote the link command for shipping. +- relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args" +- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" ++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` ++ if test "$hardcode_automatic" = yes ; then ++ relink_command= ++ fi ++ + + # Only create the output if not a dry run. + if test -z "$run"; then +@@ -3840,10 +5672,10 @@ + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; +@@ -3854,10 +5686,10 @@ + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done +@@ -3865,20 +5697,39 @@ + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` +- eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" ++ else ++ newdlfiles= ++ for lib in $dlfiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlfiles="$newdlfiles $abs" ++ done ++ dlfiles="$newdlfiles" ++ newdlprefiles= ++ for lib in $dlprefiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlprefiles="$newdlprefiles $abs" ++ done ++ dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in +- *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; ++ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ + # $outputname - a libtool library file +@@ -3907,13 +5758,16 @@ + # Is this an already installed library? + installed=$installed + ++# Should we warn about portability when linking against -modules? ++shouldnotlink=$module ++ + # Files to dlopen/dlpreopen + dlopen='$dlfiles' + dlpreopen='$dlprefiles' + + # Directory that this library needs to be installed in: + libdir='$install_libdir'" +- if test "$installed" = no && test $need_relink = yes; then ++ if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ + relink_command=\"$relink_command\"" + fi +@@ -3926,7 +5780,7 @@ + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + # libtool install mode +@@ -3937,11 +5791,11 @@ + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. +- $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then ++ $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -3950,14 +5804,14 @@ + shift + else + install_prog= +- arg="$nonopt" ++ arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -3975,28 +5829,31 @@ + do + if test -n "$dest"; then + files="$files $dest" +- dest="$arg" ++ dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; +- -f) prev="-f" ;; +- -g) prev="-g" ;; +- -m) prev="-m" ;; +- -o) prev="-o" ;; ++ -f) ++ case " $install_prog " in ++ *[\\\ /]cp\ *) ;; ++ *) prev=$arg ;; ++ esac ++ ;; ++ -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; +- -*) ;; +- ++ -*) ++ ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else +- dest="$arg" ++ dest=$arg + continue + fi + ;; +@@ -4005,7 +5862,7 @@ + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -4015,13 +5872,13 @@ + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -z "$files"; then +@@ -4031,7 +5888,7 @@ + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. +@@ -4049,10 +5906,10 @@ + + # Not a directory, so check to see that there is only one file specified. + set dummy $files +- if test $# -gt 2; then ++ if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + case $destdir in +@@ -4064,7 +5921,7 @@ + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -4089,11 +5946,11 @@ + + *.la) + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + library_names= +@@ -4124,12 +5981,33 @@ + dir="$dir$objdir" + + if test -n "$relink_command"; then ++ # Determine the prefix the user has applied to our future dir. ++ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` ++ ++ # Don't allow the user to place us outside of our expected ++ # location b/c this prevents finding dependent libraries that ++ # are installed to the same prefix. ++ # At present, this check doesn't affect windows .dll's that ++ # are installed into $libdir/../bin (currently, that works fine) ++ # but it's something to keep an eye on. ++ if test "$inst_prefix_dir" = "$destdir"; then ++ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ exit $EXIT_FAILURE ++ fi ++ ++ if test -n "$inst_prefix_dir"; then ++ # Stick the inst_prefix_dir data into the link command. ++ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` ++ else ++ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` ++ fi ++ + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 +- continue ++ exit $EXIT_FAILURE + fi + fi + +@@ -4151,25 +6029,38 @@ + $run eval "$striplib $destdir/$realname" || exit $? + fi + +- if test $# -gt 0; then ++ if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. ++ # Try `ln -sf' first, because the `ln' binary might depend on ++ # the symlink we replace! Solaris /bin/ln does not understand -f, ++ # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then +- $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" +- $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" ++ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" ++ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" +- eval cmds=\"$postinstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$postinstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" +- $run eval "$cmd" || exit $? ++ $run eval "$cmd" || { ++ lt_exit=$? ++ ++ # Restore the uninstalled library and exit ++ if test "$mode" = relink; then ++ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' ++ fi ++ ++ exit $lt_exit ++ } + done + IFS="$save_ifs" + fi +@@ -4207,7 +6098,7 @@ + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +@@ -4225,7 +6116,7 @@ + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + *) +@@ -4237,21 +6128,47 @@ + destfile="$destdir/$destfile" + fi + ++ # If the file is missing, and there is a .exe on the end, strip it ++ # because it is most likely a libtool script we actually want to ++ # install ++ stripped_ext="" ++ case $file in ++ *.exe) ++ if test ! -f "$file"; then ++ file=`$echo $file|${SED} 's,.exe$,,'` ++ stripped_ext=".exe" ++ fi ++ ;; ++ esac ++ + # Do a test to see if this is really a libtool program. +- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ case $host in ++ *cygwin*|*mingw*) ++ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` ++ ;; ++ *) ++ wrapper=$file ++ ;; ++ esac ++ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + ++ # Note that it is not necessary on cygwin/mingw to append a dot to ++ # foo even if both foo and FILE.exe exist: automatic-append-.exe ++ # behavior happens only for exec(3), not for open(2)! Also, sourcing ++ # `FILE.' does not work on cygwin managed mounts. ++ # + # If there is no directory component, then add one. +- case $file in +- */* | *\\*) . $file ;; +- *) . ./$file ;; ++ case $wrapper in ++ */* | *\\*) . ${wrapper} ;; ++ *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then +- $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 +- exit 1 ++ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 ++ exit $EXIT_FAILURE + fi + + finalize=yes +@@ -4273,27 +6190,25 @@ + done + + relink_command= ++ # Note that it is not necessary on cygwin/mingw to append a dot to ++ # foo even if both foo and FILE.exe exist: automatic-append-.exe ++ # behavior happens only for exec(3), not for open(2)! Also, sourcing ++ # `FILE.' does not work on cygwin managed mounts. ++ # + # If there is no directory component, then add one. +- case $file in +- */* | *\\*) . $file ;; +- *) . ./$file ;; ++ case $wrapper in ++ */* | *\\*) . ${wrapper} ;; ++ *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then +- tmpdir="/tmp" +- test -n "$TMPDIR" && tmpdir="$TMPDIR" +- tmpdir="$tmpdir/libtool-$$" +- if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : +- else +- $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 +- continue +- fi +- file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ tmpdir=`func_mktempdir` ++ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. +- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` ++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : +@@ -4308,14 +6223,14 @@ + fi + else + # Install the binary that we compiled earlier. +- file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` ++ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another +- # one anyways ++ # one anyway + case $install_prog,$host in +- /usr/bin/install*,*cygwin*) ++ */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok +@@ -4324,7 +6239,7 @@ + destfile=$destfile.exe + ;; + *:*.exe) +- destfile=`echo $destfile | sed -e 's,.exe$,,'` ++ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; +@@ -4345,16 +6260,17 @@ + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + +- if test -n "$stripme" && test -n "$striplib"; then ++ if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. +- eval cmds=\"$old_postinstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$old_postinstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -4368,11 +6284,10 @@ + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" +- exec $SHELL $0 --finish$current_libdirs +- exit 1 ++ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' ++ else ++ exit $EXIT_SUCCESS + fi +- +- exit 0 + ;; + + # libtool finish mode +@@ -4390,10 +6305,11 @@ + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. +- eval cmds=\"$finish_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$finish_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" +@@ -4410,43 +6326,43 @@ + fi + + # Exit here if they wanted silent mode. +- test "$show" = ":" && exit 0 ++ test "$show" = : && exit $EXIT_SUCCESS + +- echo "----------------------------------------------------------------------" +- echo "Libraries have been installed in:" ++ $echo "X----------------------------------------------------------------------" | $Xsed ++ $echo "Libraries have been installed in:" + for libdir in $libdirs; do +- echo " $libdir" ++ $echo " $libdir" + done +- echo +- echo "If you ever happen to want to link against installed libraries" +- echo "in a given directory, LIBDIR, you must either use libtool, and" +- echo "specify the full pathname of the library, or use the \`-LLIBDIR'" +- echo "flag during linking and do at least one of the following:" ++ $echo ++ $echo "If you ever happen to want to link against installed libraries" ++ $echo "in a given directory, LIBDIR, you must either use libtool, and" ++ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" ++ $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then +- echo " - add LIBDIR to the \`$shlibpath_var' environment variable" +- echo " during execution" ++ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" ++ $echo " during execution" + fi + if test -n "$runpath_var"; then +- echo " - add LIBDIR to the \`$runpath_var' environment variable" +- echo " during linking" ++ $echo " - add LIBDIR to the \`$runpath_var' environment variable" ++ $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + +- echo " - use the \`$flag' linker flag" ++ $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then +- echo " - have your system administrator run these commands:$admincmds" ++ $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then +- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" ++ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi +- echo +- echo "See any operating system documentation about shared libraries for" +- echo "more information, such as the ld(1) and ld.so(8) manual pages." +- echo "----------------------------------------------------------------------" +- exit 0 ++ $echo ++ $echo "See any operating system documentation about shared libraries for" ++ $echo "more information, such as the ld(1) and ld.so(8) manual pages." ++ $echo "X----------------------------------------------------------------------" | $Xsed ++ exit $EXIT_SUCCESS + ;; + + # libtool execute mode +@@ -4458,7 +6374,7 @@ + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. +@@ -4466,18 +6382,18 @@ + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Read the libtool library. +@@ -4503,8 +6419,10 @@ + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else +- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 +- exit 1 ++ if test ! -f "$dir/$dlname"; then ++ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 ++ exit $EXIT_FAILURE ++ fi + fi + ;; + +@@ -4544,7 +6462,7 @@ + -*) ;; + *) + # Do a test to see if this is really a libtool program. +- if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; +@@ -4567,19 +6485,16 @@ + eval "export $shlibpath_var" + fi + +- # Restore saved enviroment variables +- if test "${save_LC_ALL+set}" = set; then +- LC_ALL="$save_LC_ALL"; export LC_ALL +- fi +- if test "${save_LANG+set}" = set; then +- LANG="$save_LANG"; export LANG +- fi +- +- # Now actually exec the command. +- eval "exec \$cmd$args" ++ # Restore saved environment variables ++ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES ++ do ++ eval "if test \"\${save_$lt_var+set}\" = set; then ++ $lt_var=\$save_$lt_var; export $lt_var ++ fi" ++ done + +- $echo "$modename: cannot exec \$cmd$args" +- exit 1 ++ # Now prepare to actually exec the command. ++ exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then +@@ -4587,7 +6502,7 @@ + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" +- exit 0 ++ exit $EXIT_SUCCESS + fi + ;; + +@@ -4615,24 +6530,25 @@ + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + rmdirs= + ++ origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. +- objdir="$objdir" ++ objdir="$origobjdir" + else +- objdir="$dir/$objdir" ++ objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` +- test $mode = uninstall && objdir="$dir" ++ test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates +- if test $mode = clean; then ++ if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; +@@ -4641,14 +6557,14 @@ + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ +- || (test -h "$file") >/dev/null 2>&1 \ ++ || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then +- : ++ : + elif test -d "$file"; then +- exit_status=1 ++ exit_status=1 + continue + elif test "$rmforce" = yes; then +- continue ++ continue + fi + + rmfiles="$file" +@@ -4656,7 +6572,7 @@ + case $name in + *.la) + # Possibly a libtool archive, so verify it. +- if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. +@@ -4664,18 +6580,27 @@ + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" +- test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + +- if test $mode = uninstall; then ++ case "$mode" in ++ clean) ++ case " $library_names " in ++ # " " in the beginning catches empty $dlname ++ *" $dlname "*) ;; ++ *) rmfiles="$rmfiles $objdir/$dlname" ;; ++ esac ++ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ++ ;; ++ uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. +- eval cmds=\"$postuninstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$postuninstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" +- if test $? != 0 && test "$rmforce" != yes; then ++ if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done +@@ -4684,40 +6609,72 @@ + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. +- eval cmds=\"$old_postuninstall_cmds\" +- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ cmds=$old_postuninstall_cmds ++ save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" +- if test $? != 0 && test "$rmforce" != yes; then ++ if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. +- fi ++ ;; ++ esac + fi + ;; + + *.lo) +- if test "$build_old_libs" = yes; then +- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` +- rmfiles="$rmfiles $dir/$oldobj" ++ # Possibly a libtool object, so verify it. ++ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ ++ # Read the .lo file ++ . $dir/$name ++ ++ # Add PIC object to the list of files to remove. ++ if test -n "$pic_object" \ ++ && test "$pic_object" != none; then ++ rmfiles="$rmfiles $dir/$pic_object" ++ fi ++ ++ # Add non-PIC object to the list of files to remove. ++ if test -n "$non_pic_object" \ ++ && test "$non_pic_object" != none; then ++ rmfiles="$rmfiles $dir/$non_pic_object" ++ fi + fi + ;; + + *) +- # Do a test to see if this is a libtool program. +- if test $mode = clean && +- (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then +- relink_command= +- . $dir/$file ++ if test "$mode" = clean ; then ++ noexename=$name ++ case $file in ++ *.exe) ++ file=`$echo $file|${SED} 's,.exe$,,'` ++ noexename=`$echo $name|${SED} 's,.exe$,,'` ++ # $file with .exe has already been added to rmfiles, ++ # add $file without .exe ++ rmfiles="$rmfiles $file" ++ ;; ++ esac ++ # Do a test to see if this is a libtool program. ++ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ relink_command= ++ . $dir/$noexename + +- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" +- if test "$fast_install" = yes && test -n "$relink_command"; then +- rmfiles="$rmfiles $objdir/lt-$name" ++ # note $name still contains .exe if it was in $file originally ++ # as does the version of $file that was added into $rmfiles ++ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" ++ if test "$fast_install" = yes && test -n "$relink_command"; then ++ rmfiles="$rmfiles $objdir/lt-$name" ++ fi ++ if test "X$noexename" != "X$name" ; then ++ rmfiles="$rmfiles $objdir/lt-${noexename}.c" ++ fi + fi + fi + ;; +@@ -4725,6 +6682,7 @@ + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done ++ objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do +@@ -4740,15 +6698,22 @@ + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +- $echo "$modename: invalid operation mode \`$mode'" 1>&2 +- $echo "$generic_help" 1>&2 +- exit 1 ++ if test -z "$exec_cmd"; then ++ $echo "$modename: invalid operation mode \`$mode'" 1>&2 ++ $echo "$generic_help" 1>&2 ++ exit $EXIT_FAILURE ++ fi + fi # test -z "$show_help" + ++if test -n "$exec_cmd"; then ++ eval exec $exec_cmd ++ exit $EXIT_FAILURE ++fi ++ + # We need to display help for each of the modes. + case $mode in + "") $echo \ +@@ -4765,6 +6730,7 @@ + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages ++ --tag=TAG use configuration variables from tag TAG + --version print version information + + MODE must be one of the following: +@@ -4778,8 +6744,10 @@ + uninstall remove libraries from an installed directory + + MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +-a more detailed description of MODE." +- exit 0 ++a more detailed description of MODE. ++ ++Report bugs to ." ++ exit $EXIT_SUCCESS + ;; + + clean) +@@ -4880,9 +6848,9 @@ + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE +- try to export only the symbols listed in SYMFILE ++ try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX +- try to export only the symbols matching REGEX ++ try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened +@@ -4890,12 +6858,17 @@ + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects ++ -objectlist FILE Use a list of object files found in FILE to specify objects ++ -precious-files-regex REGEX ++ don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries +- -static do not do any dynamic linking of libtool libraries ++ -static do not do any dynamic linking of uninstalled libtool libraries ++ -static-libtool-libs ++ do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] +- specify library version info [each variable defaults to 0] ++ specify library version info [each variable defaults to 0] + + All other options (arguments beginning with \`-') are ignored. + +@@ -4931,14 +6904,33 @@ + *) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +-echo ++$echo + $echo "Try \`$modename --help' for more information about other modes." + +-exit 0 ++exit $? ++ ++# The TAGs below are defined such that we never get into a situation ++# in which we disable both kinds of libraries. Given conflicting ++# choices, we go for a static library, that is the most portable, ++# since we can't tell whether shared libraries were disabled because ++# the user asked for that or because the platform doesn't support ++# them. This is particularly important on AIX, because we don't ++# support having both static and shared libraries enabled at the same ++# time on that platform, so we default to a shared-only configuration. ++# If a disable-shared tag is given, we'll fallback to a static-only ++# configuration. But we'll never go from static-only to shared-only. ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-shared ++disable_libs=shared ++# ### END LIBTOOL TAG CONFIG: disable-shared ++ ++# ### BEGIN LIBTOOL TAG CONFIG: disable-static ++disable_libs=static ++# ### END LIBTOOL TAG CONFIG: disable-static + + # Local Variables: + # mode:shell-script +--- libfcgi-2.4.0.orig/configure ++++ libfcgi-2.4.0/configure +@@ -1,22 +1,554 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by Autoconf 2.52. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## + +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ case $as_dir in ++ /*) ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' + fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++ + + # Check that we are running under the correct shell. + SHELL=${CONFIG_SHELL-/bin/sh} +@@ -35,7 +567,7 @@ + elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then ++elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : + else +@@ -47,22 +579,22 @@ + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + + if test -z "$ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string="`eval $cmd`") 2>/dev/null && +- echo_test_string="`eval $cmd`" && ++ if (echo_test_string=`eval $cmd`) 2>/dev/null && ++ echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break +@@ -81,8 +613,9 @@ + # + # So, first we look for a working echo in the user's PATH. + +- IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +@@ -91,7 +624,7 @@ + break + fi + done +- IFS="$save_ifs" ++ IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. +@@ -163,140 +696,205 @@ + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" + fi + +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits +- +-# Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +-# Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix +-fi + +-# Name of the executable. +-as_me=`echo "$0" |sed 's,.*[\\/],,'` ++tagnames=${tagnames+${tagnames},}CXX + +-if expr a : '\(a\)' >/dev/null 2>&1; then +- as_expr=expr +-else +- as_expr=false +-fi ++tagnames=${tagnames+${tagnames},}F77 + +-rm -f conf$$ conf$$.exe conf$$.file +-echo >conf$$.file +-if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links +- as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi +-elif ln conf$$.file conf$$ 2>/dev/null; then +- as_ln_s=ln +-else +- as_ln_s='cp -p' +-fi +-rm -f conf$$ conf$$.exe conf$$.file +- +-as_executable_p="test -f" +- +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset +-else +- as_unset=false +-fi +- +-# NLS nuisances. +-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } +- +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } ++exec 7<&0 &1 + + # Name of the host. + # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +-exec 6>&1 +- + # + # Initializations. + # + ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIBOBJS= + cross_compiling=no + subdirs= +-MFLAGS= MAKEFLAGS= ++MFLAGS= ++MAKEFLAGS= + SHELL=${CONFIG_SHELL-/bin/sh} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} ++# Identity of this package. ++PACKAGE_NAME= ++PACKAGE_TARNAME= ++PACKAGE_VERSION= ++PACKAGE_STRING= ++PACKAGE_BUGREPORT= + + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++am__isrc ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++CPP ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++SED ++GREP ++EGREP ++LN_S ++ECHO ++AR ++RANLIB ++CXX ++CXXFLAGS ++ac_ct_CXX ++CXXDEPMODE ++am__fastdepCXX_TRUE ++am__fastdepCXX_FALSE ++CXXCPP ++F77 ++FFLAGS ++ac_ct_F77 ++LIBTOOL ++LIBFCGIXX ++ECHO_CPP ++PTHREAD_CC ++PTHREAD_LIBS ++PTHREAD_CFLAGS ++THREADED ++LIBOBJS ++SYSTEM ++LTLIBOBJS' ++ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP ++CXX ++CXXFLAGS ++CCC ++CXXCPP ++F77 ++FFLAGS' ++ ++ + # Initialize some variables set by options. + ac_init_help= + ac_init_version=false +@@ -322,41 +920,48 @@ + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) + bindir='${exec_prefix}/bin' + sbindir='${exec_prefix}/sbin' + libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' +- +-# Identity of this package. +-PACKAGE_NAME= +-PACKAGE_TARNAME= +-PACKAGE_VERSION= +-PACKAGE_STRING= +-PACKAGE_BUGREPORT= ++docdir='${datarootdir}/doc/${PACKAGE}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' + + ac_prev= ++ac_dashdash= + for ac_option + do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + +- case $ac_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -378,33 +983,45 @@ + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -431,6 +1048,12 @@ + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; +@@ -455,13 +1078,16 @@ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ + -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -474,7 +1100,7 @@ + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c) ++ | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +@@ -526,6 +1152,16 @@ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; +@@ -578,24 +1214,20 @@ + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -626,8 +1258,7 @@ + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -647,36 +1278,29 @@ + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir + do +- eval ac_val=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } + done + + # There might be people who depend on the old broken behavior: `$host' + # used to hold the argument of --host etc. ++# FIXME: To remove some day. + build=$build_alias + host=$host_alias + target=$target_alias + +-# FIXME: should be removed in autoconf 3.0. ++# FIXME: To remove some day. + if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe +@@ -692,70 +1316,77 @@ + + test "$silent" = yes && exec 6>/dev/null + ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ + # Find the source files, if location was not specified. + if test -z "$srcdir"; then + ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_prog=$0 +- ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` +- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || ++$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$0" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources in $srcdir" >&2 ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +- fi + fi +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP +-ac_env_CXX_set=${CXX+set} +-ac_env_CXX_value=$CXX +-ac_cv_env_CXX_set=${CXX+set} +-ac_cv_env_CXX_value=$CXX +-ac_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_env_CXXFLAGS_value=$CXXFLAGS +-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_cv_env_CXXFLAGS_value=$CXXFLAGS ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 ++ { (exit 1); exit 1; }; } ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done + + # + # Report the --help message. +@@ -763,7 +1394,7 @@ + if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. +- cat < if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags ++ CXXCPP C++ preprocessor ++ F77 Fortran 77 compiler command ++ FFLAGS Fortran 77 compiler flags + + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + +-EOF ++_ACEOF ++ac_status=$? + fi + + if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` +- for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue +- cd $ac_subdir +- # A "../" for each directory in /$ac_subdir. +- ac_dots=`echo $ac_subdir | +- sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` +- +- case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_sub_srcdir=$srcdir ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_sub_srcdir=$srcdir/$ac_subdir ;; +- *) # Relative path. +- ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; +- esac ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || continue ++ ac_builddir=. + +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_sub_srcdir/configure.gnu; then +- echo +- $SHELL $ac_sub_srcdir/configure.gnu --help=recursive +- elif test -f $ac_sub_srcdir/configure; then +- echo +- $SHELL $ac_sub_srcdir/configure --help=recursive +- elif test -f $ac_sub_srcdir/configure.ac || +- test -f $ac_sub_srcdir/configure.in; then +- echo +- $ac_configure --help ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive + else +- echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 +- fi +- cd $ac_popdir ++ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then +- cat <<\EOF ++ cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. +-EOF +- exit 0 ++_ACEOF ++ exit + fi +-exec 5>config.log +-cat >&5 <config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +-generated by GNU Autoconf 2.52. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +-EOF ++_ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME +-## ---------- ## +-## Platform. ## +-## ---------- ## ++## --------- ## ++## Platform. ## ++## --------- ## + + hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` + uname -m = `(uname -m) 2>/dev/null || echo unknown` +@@ -941,110 +1603,233 @@ + /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` + /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` + /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` + /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` + /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` + /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +-PATH = $PATH +- + _ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ echo "PATH: $as_dir" ++done ++IFS=$as_save_IFS ++ + } >&5 + +-cat >&5 <&5 <<_ACEOF ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++_ACEOF + +-EOF + + # Keep a trace of the command line. + # Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. + # Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. + ac_configure_args= +-ac_sep= +-for ac_arg ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 + do +- case $ac_arg in +- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +- | --no-cr | --no-c) ;; +- -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- ac_sep=" " ;; +- *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" +- ac_sep=" " ;; +- esac +- # Get rid of the leading space. ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ++ 2) ++ ac_configure_args1="$ac_configure_args1 '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ ac_configure_args="$ac_configure_args '$ac_arg'" ++ ;; ++ esac ++ done + done ++$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } ++$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + + # When interrupted or exit'd, cleanup temporary files, and complete + # config.log. We remove comments because anyway the quotes in there + # would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. + trap 'exit_status=$? + # Save into config.log some information that might help in debugging. +- echo >&5 +- echo "## ----------------- ##" >&5 +- echo "## Cache variables. ##" >&5 +- echo "## ----------------- ##" >&5 +- echo >&5 +- # The following way of writing the cache mishandles newlines in values, +-{ ++ { ++ echo ++ ++ cat <<\_ASBOX ++## ---------------- ## ++## Cache variables. ## ++## ---------------- ## ++_ASBOX ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} >&5 +- sed "/^$/d" confdefs.h >conftest.log +- if test -s conftest.log; then +- echo >&5 +- echo "## ------------ ##" >&5 +- echo "## confdefs.h. ##" >&5 +- echo "## ------------ ##" >&5 +- echo >&5 +- cat conftest.log >&5 +- fi +- (echo; echo) >&5 +- test "$ac_signal" != 0 && +- echo "$as_me: caught signal $ac_signal" >&5 +- echo "$as_me: exit $exit_status" >&5 +- rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && ++ esac | ++ sort ++) ++ echo ++ ++ cat <<\_ASBOX ++## ----------------- ## ++## Output variables. ## ++## ----------------- ## ++_ASBOX ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ cat <<\_ASBOX ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## ++_ASBOX ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ cat <<\_ASBOX ++## ----------- ## ++## confdefs.h. ## ++## ----------- ## ++_ASBOX ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ echo "$as_me: caught signal $ac_signal" ++ echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 0 + for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then +- { echo "$as_me:1045: loading site script $ac_site_file" >&5 ++ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +- cat "$ac_site_file" >&5 ++ sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi + done +@@ -1053,15 +1838,15 @@ + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then +- { echo "$as_me:1056: loading cache $cache_file" >&5 ++ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +- { echo "$as_me:1064: creating cache $cache_file" >&5 ++ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 + echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file + fi +@@ -1069,105 +1854,107 @@ + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) +- { echo "$as_me:1080: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 + echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) +- { echo "$as_me:1084: error: \`$ac_var' was not set in the previous run" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 + echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then +- { echo "$as_me:1090: error: \`$ac_var' has changed since the previous run:" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 + echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} +- { echo "$as_me:1092: former value: $ac_old_val" >&5 ++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 + echo "$as_me: former value: $ac_old_val" >&2;} +- { echo "$as_me:1094: current value: $ac_new_val" >&5 ++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 + echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: ++ ac_cache_corrupted=: + fi;; + esac +- # Pass precious variables to config.status. It doesn't matter if +- # we pass some twice (in addition to the command line arguments). ++ # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` +- ac_configure_args="$ac_configure_args '$ac_arg'" +- ;; +- *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" +- ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi + done + if $ac_cache_corrupted; then +- { echo "$as_me:1113: error: changes in the environment can compromise the build" >&5 ++ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 + echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- { { echo "$as_me:1115: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ++ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 + echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } + fi + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +-esac +-echo "#! $SHELL" >conftest.sh +-echo "exit 0" >>conftest.sh +-chmod +x conftest.sh +-if { (echo "$as_me:1135: PATH=\".;.\"; conftest.sh") >&5 +- (PATH=".;."; conftest.sh) 2>&5 +- ac_status=$? +- echo "$as_me:1138: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- ac_path_separator=';' +-else +- ac_path_separator=: +-fi +-PATH_SEPARATOR="$ac_path_separator" +-rm -f conftest.sh ++ ++am__api_version='1.10' + + ac_aux_dir= +-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break +- elif test -f $ac_dir/install.sh; then ++ elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break +- elif test -f $ac_dir/shtool; then ++ elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi + done + if test -z "$ac_aux_dir"; then +- { { echo "$as_me:1164: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ + + # Find a good install program. We prefer a C program (faster), + # so one script is as good as another. But avoid the broken or +@@ -1180,58 +1967,66 @@ + # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag + # AFS /usr/afsws/bin/install, which mishandles nonexistent args + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:1184: checking for a BSD compatible install" >&5 +-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +- for ac_dir in $PATH; do +- IFS=$ac_save_IFS +- # Account for people who put trailing slashes in PATH elements. +- case $ac_dir/ in +- / | ./ | .// | /cC/* \ +- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ +- | /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- if $as_executable_p "$ac_dir/$ac_prog"; then ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && +- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && +- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else +- ac_cv_path_install="$ac_dir/$ac_prog -c" +- break 2 ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 + fi + fi + done +- ;; +- esac +- done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:1233: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -1241,8 +2036,8 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:1244: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -1265,7 +2060,7 @@ + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". +- { { echo "$as_me:1268: error: ls -t appears to fail. Make sure there is not a broken ++ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken + alias in your environment" >&5 + echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken + alias in your environment" >&2;} +@@ -1278,29 +2073,29 @@ + # Ok. + : + else +- { { echo "$as_me:1281: error: newly created file is older than distributed files! ++ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! + Check your system clock" >&5 + echo "$as_me: error: newly created file is older than distributed files! + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:1287: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" + # Use a double $ so make ignores it. + test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path +-am_aux_dir=`CDPATH=:; cd $ac_aux_dir && pwd` ++am_aux_dir=`cd $ac_aux_dir && pwd` + + test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" + # Use eval to expand $SHELL +@@ -1308,160 +2103,314 @@ + am_missing_run="$MISSING --run " + else + am_missing_run= +- am_backtick='`' +- { echo "$as_me:1312: WARNING: ${am_backtick}missing' script is too old or missing" >&5 +-echo "$as_me: WARNING: ${am_backtick}missing' script is too old or missing" >&2;} ++ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 ++echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} ++fi ++ ++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } ++if test -z "$MKDIR_P"; then ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++done ++IFS=$as_save_IFS ++ ++fi ++ ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ test -d ./--version && rmdir ./--version ++ MKDIR_P="$ac_install_sh -d" ++ fi + fi ++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++echo "${ECHO_T}$MKDIR_P" >&6; } ++ ++mkdir_p="$MKDIR_P" ++case $mkdir_p in ++ [\\/$]* | ?:[\\/]*) ;; ++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; ++esac + +-for ac_prog in mawk gawk nawk awk ++for ac_prog in gawk mawk nawk awk + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:1320: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_AWK="$ac_prog" +-echo "$as_me:1335: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AWK="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + fi + fi + AWK=$ac_cv_prog_AWK + if test -n "$AWK"; then +- echo "$as_me:1343: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:1346: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:1353: checking whether ${MAKE-make} sets \${MAKE}" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.make <<\EOF ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="${MAKE}"' +-EOF ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac + rm -f conftest.make + fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:1373: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:1377: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" +- +-fi; +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +- +-if test "x$enable_dependency_tracking" != xno; then +- AMDEP_TRUE= +- AMDEP_FALSE='#' +-else +- AMDEP_TRUE='#' +- AMDEP_FALSE= ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++ ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 ++echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} ++ { (exit 1); exit 1; }; } ++ fi + fi + +-rm -f .deps 2>/dev/null +-mkdir .deps 2>/dev/null +-if test -d .deps; then +- DEPDIR=.deps +-else +- # MS-DOS does not allow filenames that begin with a dot. +- DEPDIR=_deps ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi + fi +-rmdir .deps 2>/dev/null + +-# test to see if srcdir already configured +-if test "`CDPATH=:; cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:1413: error: source directory already configured; run \"make distclean\" there first" >&5 +-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} +- { (exit 1); exit 1; }; } +-fi + + # Define the identity of the package. +-PACKAGE=fcgi +-VERSION=2.4.0 ++ PACKAGE=fcgi ++ VERSION=2.4.0 + +-cat >>confdefs.h <>confdefs.h <>confdefs.h <<_ACEOF ++#define PACKAGE "$PACKAGE" ++_ACEOF + +-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +-# the ones we care about. + +-# Autoconf 2.50 always computes EXEEXT. However we need to be +-# compatible with 2.13, for now. So we always define EXEEXT, but we +-# don't compute it. +- +-# Similar for OBJEXT -- only we only use OBJEXT if the user actually +-# requests that it be used. This is a bit dumb. +-: ${OBJEXT=o} ++cat >>confdefs.h <<_ACEOF ++#define VERSION "$VERSION" ++_ACEOF + + # Some tools Automake needs. + +-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"} ++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + +-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + +-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake"} ++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + +-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + +-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + +-AMTAR=${AMTAR-"${am_missing_run}tar"} + +-install_sh=${install_sh-"$am_aux_dir/install-sh"} ++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. ++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +- ac_config_headers="$ac_config_headers fcgi_config.h" ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +-ac_ext=c ++# Installed binaries are usually stripped using `strip' when the user ++# run `make install-strip'. However `strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the `STRIP' environment variable to overrule this program. ++if test "$cross_compiling" != no; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++ ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++# Always define AMTAR for backward compatibility. ++ ++AMTAR=${AMTAR-"${am_missing_run}tar"} ++ ++am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ++ ++ ++ ++ ++ ++ ++ac_config_headers="$ac_config_headers fcgi_config.h" ++ ++ ++ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +@@ -1469,156 +2418,145 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:1472: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CC="${ac_tool_prefix}gcc" +-echo "$as_me:1487: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1495: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1498: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:1507: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CC="gcc" +-echo "$as_me:1522: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:1530: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:1533: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:1546: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CC="${ac_tool_prefix}cc" +-echo "$as_me:1561: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1569: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:1572: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:1581: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CC="cc" +-echo "$as_me:1596: found $ac_dir/$ac_word" >&5 +-break +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:1604: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1607: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-echo "$as_me:1620: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1626,20 +2564,24 @@ + ac_cv_prog_CC="$CC" # Let the user override the test. + else + ac_prog_rejected=no +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then +- ac_prog_rejected=yes +- continue +-fi +-ac_cv_prog_CC="cc" +-echo "$as_me:1640: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. +@@ -1650,133 +2592,176 @@ + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift +- set dummy "$ac_dir/$ac_word" ${1+"$@"} +- shift +- ac_cv_prog_CC="$@" ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi + fi + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1662: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1665: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:1676: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +-echo "$as_me:1691: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:1699: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:1702: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:1715: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CC="$ac_prog" +-echo "$as_me:1730: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:1738: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:1741: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi + +-test -z "$CC" && { { echo "$as_me:1753: error: no acceptable cc found in \$PATH" >&5 +-echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} ++ ++test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&5 ++echo "$as_me: error: no acceptable C compiler found in \$PATH ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:1758:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:1761: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? +- echo "$as_me:1764: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:1766: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? +- echo "$as_me:1769: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:1771: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? +- echo "$as_me:1774: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + + cat >conftest.$ac_ext <<_ACEOF +-#line 1778 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -1787,127 +2772,188 @@ + } + _ACEOF + ac_clean_files_save=$ac_clean_files +-ac_clean_files="$ac_clean_files a.out a.exe" ++ac_clean_files="$ac_clean_files a.out a.exe b.out" + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:1794: checking for C compiler default output" >&5 +-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:1797: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? +- echo "$as_me:1800: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +-for ac_file in `ls a.exe conftest.exe 2>/dev/null; +- ls a.out conftest 2>/dev/null; +- ls a.* conftest.* 2>/dev/null`; do ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' ++do ++ test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; +- a.out ) # We found the default executable, but exeext='' is most +- # certainly right. +- break;; +- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool --akim. +- export ac_cv_exeext +- break;; +- * ) break;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ++ ;; ++ [ab].out ) ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; ++ *.* ) ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. ++ break;; ++ * ) ++ break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:1823: error: C compiler cannot create executables" >&5 +-echo "$as_me: error: C compiler cannot create executables" >&2;} ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: C compiler cannot create executables ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C compiler cannot create executables ++See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:1829: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:1834: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:1840: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? +- echo "$as_me:1843: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else +- { { echo "$as_me:1850: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&5 ++ { { echo "$as_me:$LINENO: error: cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&5 + echo "$as_me: error: cannot run C compiled programs. +-If you meant to cross compile, use \`--host'." >&2;} ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi + fi +-echo "$as_me:1858: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-rm -f a.out a.exe conftest$ac_cv_exeext ++rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:1865: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:1867: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:1870: checking for executable suffix" >&5 +-echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +-if { (eval echo "$as_me:1872: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? +- echo "$as_me:1875: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) + # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will + # work properly (i.e., refer to `conftest.exe'), while it won't with + # `rm'. +-for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext +- break;; ++ break;; + * ) break;; + esac + done + else +- { { echo "$as_me:1891: error: cannot compute EXEEXT: cannot compile and link" >&5 +-echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} ++ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:1897: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:1903: checking for object suffix" >&5 +-echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 1909 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -1918,40 +2964,52 @@ + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:1921: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? +- echo "$as_me:1924: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac + done + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-{ { echo "$as_me:1936: error: cannot compute OBJEXT: cannot compile" >&5 +-echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&5 ++echo "$as_me: error: cannot compute suffix of object files: cannot compile ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:1943: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:1947: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 1953 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -1965,41 +3023,54 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:1968: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:1971: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:1974: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:1977: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_compiler_gnu=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:1989: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:1995: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-#line 2001 "configure" +-#include "confdefs.h" ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -2010,164 +3081,268 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2013: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2016: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2019: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:2022: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_prog_cc_g=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:2032: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +-if test "$ac_test_CFLAGS" = set; then +- CFLAGS=$ac_save_CFLAGS +-elif test $ac_cv_prog_cc_g = yes; then +- if test "$GCC" = yes; then +- CFLAGS="-g -O2" +- else +- CFLAGS="-g" +- fi +-else +- if test "$GCC" = yes; then +- CFLAGS="-O2" +- else +- CFLAGS= +- fi +-fi +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2059: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2062: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2065: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:2068: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- ''\ +- '#include ' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-#line 2080 "configure" +-#include "confdefs.h" +-#include +-$ac_declaration ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2093: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2096: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2099: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:2102: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-continue +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-#line 2112 "configure" +-#include "confdefs.h" +-$ac_declaration ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:2124: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:2127: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:2130: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:2133: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi + +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-ac_config_commands="$ac_config_commands default-1" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi + +-am_make=${MAKE-make} +-cat > confinc << 'END' +-doit: ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++DEPDIR="${am__leading_dot}deps" ++ ++ac_config_commands="$ac_config_commands depfiles" ++ ++ ++am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: + @echo done ++.PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:2168: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +-am__include='#' ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } ++am__include="#" + am__quote= + _am_result=none + # First try GNU make style include. +@@ -2177,7 +3352,7 @@ + # In particular we don't look at `^make:' because GNU make might + # be invoked under some other name (usually "gmake"), in which + # case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +@@ -2187,19 +3362,39 @@ + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include +- am__quote='"' ++ am__quote="\"" + _am_result=BSD + fi + fi + +-echo "$as_me:2195: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++ ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + ++# Check whether --enable-dependency-tracking was given. ++if test "${enable_dependency_tracking+set}" = set; then ++ enableval=$enable_dependency_tracking; ++fi ++ ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++fi ++ if test "x$enable_dependency_tracking" != xno; then ++ AMDEP_TRUE= ++ AMDEP_FALSE='#' ++else ++ AMDEP_TRUE='#' ++ AMDEP_FALSE= ++fi ++ ++ ++ + depcc="$CC" am_compiler_list= + +-echo "$as_me:2201: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2214,18 +3409,34 @@ + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) +@@ -2243,13 +3454,26 @@ + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_CC_dependencies_compiler_type=$depmode +- break ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi + fi + done + +@@ -2260,17 +3484,28 @@ + fi + + fi +-echo "$as_me:2263: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +-CCDEPMODE="depmode=$am_cv_CC_dependencies_compiler_type" ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } ++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then ++ am__fastdepCC_TRUE= ++ am__fastdepCC_FALSE='#' ++else ++ am__fastdepCC_TRUE='#' ++ am__fastdepCC_FALSE= ++fi ++ + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:2272: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -2287,73 +3522,87 @@ + do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +-#line 2293 "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error + _ACEOF +-if { (eval echo "$as_me:2298: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2304: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line 2327 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:2331: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2337: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Passes both tests. + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -2371,80 +3620,94 @@ + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:2374: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +-#line 2384 "configure" +-#include "confdefs.h" +-#include +- Syntax error ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error + _ACEOF +-if { (eval echo "$as_me:2389: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2395: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line 2418 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:2422: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:2428: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ + # Passes both tests. + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -2453,8 +3716,10 @@ + if $ac_preproc_ok; then + : + else +- { { echo "$as_me:2456: error: C preprocessor \"$CPP\" fails sanity check" >&5 +-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} ++ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + +@@ -2475,58 +3740,66 @@ + # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag + # AFS /usr/afsws/bin/install, which mishandles nonexistent args + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:2479: checking for a BSD compatible install" >&5 +-echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +- for ac_dir in $PATH; do +- IFS=$ac_save_IFS +- # Account for people who put trailing slashes in PATH elements. +- case $ac_dir/ in +- / | ./ | .// | /cC/* \ +- | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ +- | /usr/ucb/* ) ;; +- *) +- # OSF1 and SCO ODT 3.0 have their own names for install. +- # Don't use installbsd from OSF since it installs stuff as root +- # by default. +- for ac_prog in ginstall scoinst install; do +- if $as_executable_p "$ac_dir/$ac_prog"; then ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && +- grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && +- grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else +- ac_cv_path_install="$ac_dir/$ac_prog -c" +- break 2 ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 + fi + fi + done +- ;; +- esac +- done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:2528: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -2536,201 +3809,453 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-# Check whether --enable-shared or --disable-shared was given. ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_shared=yes ;; +-no) enable_shared=no ;; +-*) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac + else + enable_shared=yes +-fi; +-# Check whether --enable-static or --disable-static was given. ++fi ++ ++ ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_static=yes ;; +-no) enable_static=no ;; +-*) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac + else + enable_static=yes +-fi; +-# Check whether --enable-fast-install or --disable-fast-install was given. ++fi ++ ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} +-case $enableval in +-yes) enable_fast_install=yes ;; +-no) enable_fast_install=no ;; +-*) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +- for pkg in $enableval; do +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$ac_save_ifs" +- ;; +-esac ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac + else + enable_fast_install=yes +-fi; ++fi ++ ++ + # Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:2607: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:2611: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && +- { { echo "$as_me:2620: error: cannot guess build type; you must specify one" >&5 ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:2624: error: $ac_config_sub $ac_cv_build_alias failed." >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:2629: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + +-echo "$as_me:2636: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:2645: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:2650: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +- +-# Find the correct PATH separator. Usually this is `:', but +-# DJGPP uses `;' like DOS. +-if test "X${PATH_SEPARATOR+set}" != Xset; then +- UNAME=${UNAME-`uname 2>/dev/null`} +- case X$UNAME in +- *-DOS) lt_cv_sys_path_separator=';' ;; +- *) lt_cv_sys_path_separator=':' ;; +- esac +- PATH_SEPARATOR=$lt_cv_sys_path_separator ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } ++if test "${lt_cv_path_SED+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Loop through the user's path and test for sed and gsed. ++# Then use that list of sed's as ones to test for truncation. ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for lt_ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then ++ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" ++ fi ++ done ++ done ++done ++IFS=$as_save_IFS ++lt_ac_max=0 ++lt_ac_count=0 ++# Add /usr/xpg4/bin/sed as it is typically found on Solaris ++# along with /bin/sed that truncates output. ++for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do ++ test ! -f $lt_ac_sed && continue ++ cat /dev/null > conftest.in ++ lt_ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >conftest.in ++ # Check for GNU sed and select it if it is found. ++ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then ++ lt_cv_path_SED=$lt_ac_sed ++ break ++ fi ++ while true; do ++ cat conftest.in conftest.in >conftest.tmp ++ mv conftest.tmp conftest.in ++ cp conftest.in conftest.nl ++ echo >>conftest.nl ++ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break ++ cmp -s conftest.out conftest.nl || break ++ # 10000 chars as input seems more than enough ++ test $lt_ac_count -gt 10 && break ++ lt_ac_count=`expr $lt_ac_count + 1` ++ if test $lt_ac_count -gt $lt_ac_max; then ++ lt_ac_max=$lt_ac_count ++ lt_cv_path_SED=$lt_ac_sed ++ fi ++ done ++done ++ + fi + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++SED=$lt_cv_path_SED ++ ++{ echo "$as_me:$LINENO: result: $SED" >&5 ++echo "${ECHO_T}$SED" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- with_gnu_ld=no +-fi; +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:2678: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [\\/]* | [A-Za-z]:[\\/]*) +- re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:2708: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:2711: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. ++ # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. +- if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then ++ case `"$lt_cv_path_LD" -v 2>&1 &5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:2744: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-test -z "$LD" && { { echo "$as_me:2747: error: no acceptable ld found in \$PATH" >&5 ++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:2750: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. +-if $LD -v 2>&1 &5; then ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + +-echo "$as_me:2766: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:2773: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag +-test -n "$reload_flag" && reload_flag=" $reload_flag" ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac + +-echo "$as_me:2778: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2784,49 +4326,63 @@ + # Let the user override the test. + lt_cv_path_NM="$NM" + else +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- test -z "$ac_dir" && ac_dir=. +- tmp_nm=$ac_dir/${ac_tool_prefix}nm +- if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then +- lt_cv_path_NM="$tmp_nm -B" +- break +- elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then +- lt_cv_path_NM="$tmp_nm -p" +- break +- else +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac + fi +- fi ++ done ++ IFS="$lt_save_ifs" + done +- IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm + fi + fi +- ++{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++echo "${ECHO_T}$lt_cv_path_NM" >&6; } + NM="$lt_cv_path_NM" +-echo "$as_me:2814: result: $NM" >&5 +-echo "${ECHO_T}$NM" >&6 + +-echo "$as_me:2817: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:2821: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:2824: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + +-echo "$as_me:2828: checking how to recognise dependant libraries" >&5 +-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2840,7 +4396,7 @@ + # 'pass_all' -- all dependencies passed with no checks. + # 'test_compile' -- check by making test program. + # 'file_magic [[regex]]' -- check by looking for files in library path +-# which responds to the $file_magic_cmd with a given egrep regex. ++# which responds to the $file_magic_cmd with a given extended regex. + # If you have `file' or equivalent on your system and you're not sure + # whether `pass_all' will *always* work, you probably want this one. + +@@ -2853,37 +4409,42 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-bsdi4*) ++bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +-cygwin* | mingw* | pw32*) +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; ++ ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi + ;; + + darwin* | rhapsody*) +- lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' +- lt_cv_file_magic_cmd='/usr/bin/file -L' +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` +- ;; +- *) # Darwin 1.3 on +- lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' +- ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd*) ++freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; +@@ -2897,50 +4458,49 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- +-irix5* | irix6*) +- case $host_os in +- irix5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac +- lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` ++ ;; ++ ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac + lt_cv_deplibs_check_method=pass_all + ;; + + # This must be Linux ELF. +-linux-gnu*) +- case $host_cpu in +- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac +- lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all + ;; + +-netbsd*) ++netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else +- lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +@@ -2950,37 +4510,31 @@ + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + ++nto-qnx*) ++ lt_cv_deplibs_check_method=unknown ++ ;; ++ + openbsd*) +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else +- lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + + osf3* | osf4* | osf5*) +- # this will be overridden with pass_all, but let us keep it just in case +- lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' +- lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +-sco3.2v5*) ++rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + + solaris*) + lt_cv_deplibs_check_method=pass_all +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- +-sysv5uw[78]* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all + ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' +@@ -2998,2003 +4552,13375 @@ + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + esac + ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + esac + + fi +-echo "$as_me:3006: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-echo "$as_me:3012: checking command to parse $NM output" >&5 +-echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[BCDEGRST]' + +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +-# Transform the above into a raw symbol and a C symbol. +-symxfrm='\1 \2\3 \3' + +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[BCDT]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[ABCDGISTW]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-irix*) +- symcode='[BCDEGRST]' +- ;; +-solaris* | sysv5*) +- symcode='[BDT]' +- ;; +-sysv4) +- symcode='[DFNSTU]' +- ;; +-esac ++# Allow CC to be a program name with arguments. ++compiler=$CC + +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $host_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac + +-# If we're using GNU nm, then use its standard symbol codes. +-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then +- symcode='[ABCDGISTW]' ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; + fi + +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Write the raw and C identifiers. +-lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- rm -f conftest* +- cat > conftest.$ac_ext <&5 ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- echo "$as_me:3096: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if { (eval echo "$as_me:3100: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 +- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line 4620 "configure"' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 + ac_status=$? +- echo "$as_me:3103: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if egrep ' nm_test_var$' "$nlist" >/dev/null; then +- if egrep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; + +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; + +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr void * +-#else +-# define lt_ptr char * +-# define const +-#endif ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } ++if test "${lt_cv_cc_needs_belf+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr address; +-} +-lt_preloaded_symbols[] = ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () + { +-EOF +- sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr) 0} +-}; + +-#ifdef __cplusplus ++ ; ++ return 0; + } +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- save_LIBS="$LIBS" +- save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$no_builtin_flag" +- if { (eval echo "$as_me:3155: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:3158: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest; then +- pipe_works=yes +- fi +- LIBS="$save_LIBS" +- CFLAGS="$save_CFLAGS" +- else +- echo "cannot find nm_test_func in $nlist" >&5 +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&5 +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 +- fi +- else +- echo "$progname: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ lt_cv_cc_needs_belf=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ lt_cv_cc_needs_belf=no + fi + +-global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- global_symbol_to_cdecl= +- global_symbol_to_c_name_address= +-else +- global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" +- global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +-fi +-if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +-then +- echo "$as_me:3199: result: failed" >&5 +-echo "${ECHO_T}failed" >&6 +-else +- echo "$as_me:3202: result: ok" >&5 +-echo "${ECHO_T}ok" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ + fi ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) LD="${LD-ld} -64" ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; + +-for ac_header in dlfcn.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:3209: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++ ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 3215 "configure" +-#include "confdefs.h" +-#include <$ac_header> ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} + _ACEOF +-if { (eval echo "$as_me:3219: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:3225: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- eval "$as_ac_Header=yes" ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_header_stdc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- eval "$as_ac_Header=no" +-fi +-rm -f conftest.err conftest.$ac_ext +-fi +-echo "$as_me:3244: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <&5 + ++ ac_cv_header_stdc=no + fi +-done + +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:3258: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/${ac_tool_prefix}file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; +-esac ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then ++ : ++else ++ ac_cv_header_stdc=no + fi ++rm -f conftest* + +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:3313: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then ++ : + else +- echo "$as_me:3316: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ ac_cv_header_stdc=no + fi ++rm -f conftest* + +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- echo "$as_me:3322: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 +-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then ++ : + else +- case $MAGIC_CMD in +- /*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +- ?:/*) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. +- ;; +- *) +- ac_save_MAGIC_CMD="$MAGIC_CMD" +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +- ac_dummy="/usr/bin:$PATH" +- for ac_dir in $ac_dummy; do +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/file; then +- lt_cv_path_MAGIC_CMD="$ac_dir/file" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- egrep "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif + +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$ac_save_ifs" +- MAGIC_CMD="$ac_save_MAGIC_CMD" +- ;; ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++rm -f conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; + esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ : ++else ++ echo "$as_me: program exited with status $ac_status" >&5 ++echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++( exit $ac_status ) ++ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- echo "$as_me:3377: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 +-else +- echo "$as_me:3380: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ ++fi + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define STDC_HEADERS 1 ++_ACEOF + +- else +- MAGIC_CMD=: +- fi + fi + +- fi +- ;; +-esac ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. + +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +-set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:3396: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_RANLIB+set}" = set; then ++ ++ ++ ++ ++ ++ ++ ++ ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$RANLIB"; then +- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++ ++#include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ eval "$as_ac_Header=yes" + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +-echo "$as_me:3411: found $ac_dir/$ac_word" >&5 +-break +-done ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ eval "$as_ac_Header=no" + fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-RANLIB=$ac_cv_prog_RANLIB +-if test -n "$RANLIB"; then +- echo "$as_me:3419: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 +-else +- echo "$as_me:3422: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF + + fi +-if test -z "$ac_cv_prog_RANLIB"; then +- ac_ct_RANLIB=$RANLIB +- # Extract the first word of "ranlib", so it can be a program name with args. +-set dummy ranlib; ac_word=$2 +-echo "$as_me:3431: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_RANLIB"; then +- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +-else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_RANLIB="ranlib" +-echo "$as_me:3446: found $ac_dir/$ac_word" >&5 +-break ++ + done + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" ++ ++ ++for ac_header in dlfcn.h ++do ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++#include <$ac_header> ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +-if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:3455: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else +- echo "$as_me:3458: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi + +- RANLIB=$ac_ct_RANLIB ++rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- RANLIB="$ac_cv_prog_RANLIB" ++ eval "$as_ac_Header=\$ac_header_preproc" + fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + +-if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +-set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:3470: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_STRIP+set}" = set; then ++fi ++if test `eval echo '${'$as_ac_Header'}'` = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++if test -z "$CXX"; then ++ if test -n "$CCC"; then ++ CXX=$CCC ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$STRIP"; then +- ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++ if test -n "$CXX"; then ++ ac_cv_prog_CXX="$CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_STRIP="${ac_tool_prefix}strip" +-echo "$as_me:3485: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + fi + fi +-STRIP=$ac_cv_prog_STRIP +-if test -n "$STRIP"; then +- echo "$as_me:3493: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++CXX=$ac_cv_prog_CXX ++if test -n "$CXX"; then ++ { echo "$as_me:$LINENO: result: $CXX" >&5 ++echo "${ECHO_T}$CXX" >&6; } + else +- echo "$as_me:3496: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ ++ test -n "$CXX" && break ++ done + fi +-if test -z "$ac_cv_prog_STRIP"; then +- ac_ct_STRIP=$STRIP +- # Extract the first word of "strip", so it can be a program name with args. +-set dummy strip; ac_word=$2 +-echo "$as_me:3505: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++if test -z "$CXX"; then ++ ac_ct_CXX=$CXX ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if test -n "$ac_ct_STRIP"; then +- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++ if test -n "$ac_ct_CXX"; then ++ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_STRIP="strip" +-echo "$as_me:3520: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CXX="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +-fi + fi +-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +-if test -n "$ac_ct_STRIP"; then +- echo "$as_me:3529: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 +-else +- echo "$as_me:3532: result: no" >&5 +-echo "${ECHO_T}no" >&6 + fi +- +- STRIP=$ac_ct_STRIP ++ac_ct_CXX=$ac_cv_prog_ac_ct_CXX ++if test -n "$ac_ct_CXX"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 ++echo "${ECHO_T}$ac_ct_CXX" >&6; } + else +- STRIP="$ac_cv_prog_STRIP" ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +-enable_dlopen=no +-enable_win32_dll=no + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ test -n "$ac_ct_CXX" && break ++done + +-fi; +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ if test "x$ac_ct_CXX" = x; then ++ CXX="g++" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CXX=$ac_ct_CXX ++ fi ++fi + +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '#line 3556 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:3557: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:3560: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac + fi +- rm -rf conftest* +- ;; ++fi ++# Provide some information about the compiler. ++echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ++ac_compiler=`set X $ac_compile; echo $2` ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } + +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- echo "$as_me:3581: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +-if test "${lt_cv_cc_needs_belf+set}" = set; then ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } ++if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- cat >conftest.$ac_ext <<_ACEOF +-#line 3594 "configure" +-#include "confdefs.h" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () + { ++#ifndef __GNUC__ ++ choke me ++#endif + + ; + return 0; + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:3606: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:3609: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:3612: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:3615: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_cc_needs_belf=yes ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-lt_cv_cc_needs_belf=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_compiler_gnu=no + fi +-echo "$as_me:3631: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +- +-esac + +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e s/^X//' +-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } ++GXX=`test $ac_compiler_gnu = yes && echo yes` ++ac_test_CXXFLAGS=${CXXFLAGS+set} ++ac_save_CXXFLAGS=$CXXFLAGS ++{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 ++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cxx_g+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_save_cxx_werror_flag=$ac_cxx_werror_flag ++ ac_cxx_werror_flag=yes ++ ac_cv_prog_cxx_g=no ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++int ++main () ++{ + +-# Constants: +-rm="rm -f" ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes ++ CXXFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +-need_locks="$enable_libtool_lock" ++int ++main () ++{ + +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-if test x"$host" != x"$build"; then +- ac_tool_prefix=${host_alias}- +-else +- ac_tool_prefix= +-fi ++int ++main () ++{ + +-# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +-case $host_os in +-linux-gnu*) ;; +-linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; + esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac + +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= ++fi + +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + +-# Allow CC to be a program name with arguments. +-set dummy $CC +-compiler="$2" ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi + +-echo "$as_me:3731: checking for objdir" >&5 +-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +-rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- objdir=.libs ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } ++if test "$ac_test_CXXFLAGS" = set; then ++ CXXFLAGS=$ac_save_CXXFLAGS ++elif test $ac_cv_prog_cxx_g = yes; then ++ if test "$GXX" = yes; then ++ CXXFLAGS="-g -O2" ++ else ++ CXXFLAGS="-g" ++ fi + else +- # MS-DOS does not allow filenames that begin with a dot. +- objdir=_libs ++ if test "$GXX" = yes; then ++ CXXFLAGS="-O2" ++ else ++ CXXFLAGS= ++ fi + fi +-rmdir .libs 2>/dev/null +-echo "$as_me:3742: result: $objdir" >&5 +-echo "${ECHO_T}$objdir" >&6 ++ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +-# Check whether --with-pic or --without-pic was given. +-if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" +-else +- pic_mode=default +-fi; +-test -z "$pic_mode" && pic_mode=default ++depcc="$CXX" am_compiler_list= + +-# We assume here that the value for lt_cv_prog_cc_pic will not be cached +-# in isolation, and that seeing it set (from the cache) indicates that +-# the associated values are set (in the cache) correctly too. +-echo "$as_me:3757: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_pic+set}" = set; then ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } ++if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_shlib= +- lt_cv_prog_cc_wl= +- lt_cv_prog_cc_static= +- lt_cv_prog_cc_no_builtin= +- lt_cv_prog_cc_can_build_shared=$can_build_shared ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named `D' -- because `-MD' means `put the output ++ # in D'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + +- if test "$GCC" = yes; then +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-static' ++ am_cv_CXX_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +- case $host_os in +- aix*) +- # Below there is a dirty hack to force normal static linking with -ldl +- # The problem is because libdl dynamically linked with both libc and +- # libC (AIX C++ library), which obviously doesn't included in libraries +- # list by gcc. This cause undefined symbols with -static flags. +- # This hack allows C programs to be linked with "-static -ldl", but +- # not sure about C++ programs. +- lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' +- ;; +- beos* | irix5* | irix6* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- lt_cv_prog_cc_pic='-fno-common' +- ;; +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- lt_cv_prog_cc_pic=-Kconform_pic +- fi +- ;; +- *) +- lt_cv_prog_cc_pic='-fPIC' ++ case $depmode in ++ nosideeffect) ++ # after this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi + ;; ++ none) break ;; + esac +- else +- # PORTME Check for PIC flags for the system compiler. +- case $host_os in +- aix3* | aix4* | aix5*) +- lt_cv_prog_cc_wl='-Wl,' +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- lt_cv_prog_cc_static='-Bstatic' +- else +- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' ++ # We check with `-c' and `-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle `-M -o', and we need to detect this. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CXX_dependencies_compiler_type=$depmode ++ break + fi +- ;; ++ fi ++ done + +- hpux9* | hpux10* | hpux11*) +- # Is there a better lt_cv_prog_cc_static that works with the bundled CC? +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" +- lt_cv_prog_cc_pic='+Z' +- ;; ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CXX_dependencies_compiler_type=none ++fi + +- irix5* | irix6*) +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- # PIC (with -KPIC) is the default. +- ;; ++fi ++{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } ++CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + +- cygwin* | mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- lt_cv_prog_cc_pic='-DDLL_EXPORT' +- ;; ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then ++ am__fastdepCXX_TRUE= ++ am__fastdepCXX_FALSE='#' ++else ++ am__fastdepCXX_TRUE='#' ++ am__fastdepCXX_FALSE= ++fi + +- newsos6) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- ;; + +- osf3* | osf4* | osf5*) +- # All OSF/1 code is PIC. +- lt_cv_prog_cc_wl='-Wl,' +- lt_cv_prog_cc_static='-non_shared' +- ;; + +- sco3.2v5*) +- lt_cv_prog_cc_pic='-Kpic' +- lt_cv_prog_cc_static='-dn' +- lt_cv_prog_cc_shlib='-belf' +- ;; + +- solaris*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Wl,' +- ;; ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 ++echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } ++if test -z "$CXXCPP"; then ++ if test "${ac_cv_prog_CXXCPP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Double quotes because CXXCPP needs to be expanded ++ for CXXCPP in "$CXX -E" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_cxx_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- sunos4*) +- lt_cv_prog_cc_pic='-PIC' +- lt_cv_prog_cc_static='-Bstatic' +- lt_cv_prog_cc_wl='-Qoption ld ' +- ;; ++ # Broken: fails on valid input. ++continue ++fi + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- lt_cv_prog_cc_pic='-KPIC' +- lt_cv_prog_cc_static='-Bstatic' +- if test "x$host_vendor" = xsni; then +- lt_cv_prog_cc_wl='-LD' +- else +- lt_cv_prog_cc_wl='-Wl,' +- fi +- ;; ++rm -f conftest.err conftest.$ac_ext + +- uts4*) +- lt_cv_prog_cc_pic='-pic' +- lt_cv_prog_cc_static='-Bstatic' +- ;; ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +- sysv4*MP*) +- if test -d /usr/nec ;then +- lt_cv_prog_cc_pic='-Kconform_pic' +- lt_cv_prog_cc_static='-Bstatic' +- fi +- ;; ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi + +- *) +- lt_cv_prog_cc_can_build_shared=no +- ;; +- esac +- fi ++rm -f conftest.err conftest.$ac_ext + ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ break + fi + +-if test -z "$lt_cv_prog_cc_pic"; then +- echo "$as_me:3904: result: none" >&5 +-echo "${ECHO_T}none" >&6 +-else +- echo "$as_me:3907: result: $lt_cv_prog_cc_pic" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 ++ done ++ ac_cv_prog_CXXCPP=$CXXCPP + +- # Check to make sure the pic_flag actually works. +- echo "$as_me:3911: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 +- if test "${lt_cv_prog_cc_pic_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++ CXXCPP=$ac_cv_prog_CXXCPP + else +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" +- cat >conftest.$ac_ext <<_ACEOF +-#line 3919 "configure" +-#include "confdefs.h" ++ ac_cv_prog_CXXCPP=$CXXCPP ++fi ++{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 ++echo "${ECHO_T}$CXXCPP" >&6; } ++ac_preproc_ok=false ++for ac_cxx_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 + +-int +-main () +-{ ++ # Broken: fails on valid input. ++continue ++fi + +- ; +- return 0; +-} ++rm -f conftest.err conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ + _ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:3931: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:3934: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:3937: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? +- echo "$as_me:3940: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- case $host_os in +- hpux9* | hpux10* | hpux11*) +- # On HP-UX, both CC and GCC only warn that PIC is supported... then +- # they create non-PIC objects. So, if there were any warnings, we +- # assume that PIC is not supported. +- if test -s conftest.err; then +- lt_cv_prog_cc_pic_works=no +- else +- lt_cv_prog_cc_pic_works=yes +- fi +- ;; +- *) +- lt_cv_prog_cc_pic_works=yes +- ;; +- esac +- ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ # Broken: success on invalid input. ++continue + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +- lt_cv_prog_cc_pic_works=no ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ # Passes both tests. ++ac_preproc_ok=: ++break + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" + ++rm -f conftest.err conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then ++ : ++else ++ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check ++See \`config.log' for more details." >&5 ++echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check ++See \`config.log' for more details." >&2;} ++ { (exit 1); exit 1; }; } + fi + +- if test "X$lt_cv_prog_cc_pic_works" = Xno; then +- lt_cv_prog_cc_pic= +- lt_cv_prog_cc_can_build_shared=no +- else +- lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" +- fi ++ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +- echo "$as_me:3976: result: $lt_cv_prog_cc_pic_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 + fi + +-# Check for any special shared library compilation flags. +-if test -n "$lt_cv_prog_cc_shlib"; then +- { echo "$as_me:3982: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +-echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} +- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : +- else +- { echo "$as_me:3986: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +-echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi + +-echo "$as_me:3992: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +-if test "${lt_cv_prog_cc_static_works+set}" = set; then ++ac_ext=f ++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_f77_compiler_gnu ++if test -n "$ac_tool_prefix"; then ++ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- lt_cv_prog_cc_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" +- cat >conftest.$ac_ext <<_ACEOF +-#line 4001 "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:4013: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:4016: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:4019: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:4022: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- lt_cv_prog_cc_static_works=yes ++ if test -n "$F77"; then ++ ac_cv_prog_F77="$F77" # Let the user override the test. + else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- LDFLAGS="$save_LDFLAGS" ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_F77="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS + + fi ++fi ++F77=$ac_cv_prog_F77 ++if test -n "$F77"; then ++ { echo "$as_me:$LINENO: result: $F77" >&5 ++echo "${ECHO_T}$F77" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi + +-# Belt *and* braces to stop my trousers falling down: +-test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +-echo "$as_me:4036: result: $lt_cv_prog_cc_static_works" >&5 +-echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 +- +-pic_flag="$lt_cv_prog_cc_pic" +-special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +-wl="$lt_cv_prog_cc_wl" +-link_static_flag="$lt_cv_prog_cc_static" +-no_builtin_flag="$lt_cv_prog_cc_no_builtin" +-can_build_shared="$lt_cv_prog_cc_can_build_shared" + +-# Check to see if options -o and -c are simultaneously supported by compiler +-echo "$as_me:4047: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +-if test "${lt_cv_compiler_c_o+set}" = set; then ++ test -n "$F77" && break ++ done ++fi ++if test -z "$F77"; then ++ ac_ct_F77=$F77 ++ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- +-$rm -r conftest 2>/dev/null +-mkdir conftest +-cd conftest +-echo "int some_variable = 0;" > conftest.$ac_ext +-mkdir out +-# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +-# that will create temporary files in the current directory regardless of +-# the output directory. Thus, making CWD read-only will cause this test +-# to fail, enabling locking or at least warning the user not to do parallel +-# builds. +-chmod -w . +-save_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +-compiler_c_o=no +-if { (eval echo configure:4067: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s out/conftest.err; then +- lt_cv_compiler_c_o=no +- else +- lt_cv_compiler_c_o=yes ++ if test -n "$ac_ct_F77"; then ++ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_F77="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 + fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_F77=$ac_cv_prog_ac_ct_F77 ++if test -n "$ac_ct_F77"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 ++echo "${ECHO_T}$ac_ct_F77" >&6; } + else +- # Append any errors to the config.log. +- cat out/conftest.err 1>&5 +- lt_cv_compiler_c_o=no ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-CFLAGS="$save_CFLAGS" +-chmod u+w . +-$rm conftest* out/* +-rmdir out +-cd .. +-rmdir conftest +-$rm -r conftest 2>/dev/null + +-fi + +-compiler_c_o=$lt_cv_compiler_c_o +-echo "$as_me:4091: result: $compiler_c_o" >&5 +-echo "${ECHO_T}$compiler_c_o" >&6 ++ test -n "$ac_ct_F77" && break ++done + +-if test x"$compiler_c_o" = x"yes"; then +- # Check to see if we can write to a .lo +- echo "$as_me:4096: checking if $compiler supports -c -o file.lo" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 +- if test "${lt_cv_compiler_o_lo+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else ++ if test "x$ac_ct_F77" = x; then ++ F77="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ F77=$ac_ct_F77 ++ fi ++fi + +- lt_cv_compiler_o_lo=no +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -c -o conftest.lo" +- save_objext="$ac_objext" +- ac_objext=lo +- cat >conftest.$ac_ext <<_ACEOF +-#line 4108 "configure" +-#include "confdefs.h" + +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:4120: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++# Provide some information about the compiler. ++echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 ++ac_compiler=`set X $ac_compile; echo $2` ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? +- echo "$as_me:4123: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:4126: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? +- echo "$as_me:4129: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- lt_cv_compiler_o_lo=no +- else +- lt_cv_compiler_o_lo=yes +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++rm -f a.out ++ ++# If we don't use `.F' as extension, the preprocessor is not run on the ++# input file. (Note that this only needs to work for GNU compilers.) ++ac_save_ext=$ac_ext ++ac_ext=F ++{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } ++if test "${ac_cv_f77_compiler_gnu+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++ program main ++#ifndef __GNUC__ ++ choke me ++#endif + ++ end ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- ac_objext="$save_objext" +- CFLAGS="$save_CFLAGS" ++sed 's/^/| /' conftest.$ac_ext >&5 + ++ ac_compiler_gnu=no + fi + +- compiler_o_lo=$lt_cv_compiler_o_lo +- echo "$as_me:4150: result: $compiler_o_lo" >&5 +-echo "${ECHO_T}$compiler_o_lo" >&6 +-else +- compiler_o_lo=no +-fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +-# Check to see if we can do hard links to lock some files if needed +-hard_links="nottested" +-if test "$compiler_c_o" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- echo "$as_me:4160: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:4168: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 +- if test "$hard_links" = no; then +- { echo "$as_me:4171: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +- need_locks=warn +- fi +-else +- need_locks=no + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } ++ac_ext=$ac_save_ext ++ac_test_FFLAGS=${FFLAGS+set} ++ac_save_FFLAGS=$FFLAGS ++FFLAGS= ++{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 ++echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } ++if test "${ac_cv_prog_f77_g+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ FFLAGS=-g ++cat >conftest.$ac_ext <<_ACEOF ++ program main + +-if test "$GCC" = yes; then +- # Check to see if options -fno-rtti -fno-exceptions are supported by compiler +- echo "$as_me:4181: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +- echo "int some_variable = 0;" > conftest.$ac_ext +- save_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" +- compiler_rtti_exceptions=no +- cat >conftest.$ac_ext <<_ACEOF +-#line 4188 "configure" +-#include "confdefs.h" +- +-int +-main () +-{ +-int some_variable = 0; +- ; +- return 0; +-} ++ end + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:4200: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:4203: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:4206: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:4209: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- compiler_rtti_exceptions=no +- else +- compiler_rtti_exceptions=yes +- fi +- ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_f77_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_prog_f77_g=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- CFLAGS="$save_CFLAGS" +- echo "$as_me:4225: result: $compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + +- if test "$compiler_rtti_exceptions" = "yes"; then +- no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } ++if test "$ac_test_FFLAGS" = set; then ++ FFLAGS=$ac_save_FFLAGS ++elif test $ac_cv_prog_f77_g = yes; then ++ if test "x$ac_cv_f77_compiler_gnu" = xyes; then ++ FFLAGS="-g -O2" ++ else ++ FFLAGS="-g" ++ fi ++else ++ if test "x$ac_cv_f77_compiler_gnu" = xyes; then ++ FFLAGS="-O2" + else +- no_builtin_flag=' -fno-builtin' ++ FFLAGS= + fi + fi + +-# See if the linker supports building shared libraries. +-echo "$as_me:4236: checking whether the linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 +- +-allow_undefined_flag= +-no_undefined_flag= +-need_lib_prefix=unknown +-need_version=unknown +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-archive_cmds= +-archive_expsym_cmds= +-old_archive_from_new_cmds= +-old_archive_from_expsyms_cmds= +-export_dynamic_flag_spec= +-whole_archive_flag_spec= +-thread_safe_flag_spec= +-hardcode_into_libs=no +-hardcode_libdir_flag_spec= +-hardcode_libdir_separator= +-hardcode_direct=no +-hardcode_minus_L=no +-hardcode_shlibpath_var=unsupported +-runpath_var= +-link_all_deplibs=unknown +-always_export_symbols=no +-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +-# include_expsyms should be a list of space-separated symbols to be *always* +-# included in the symbol list +-include_expsyms= +-# exclude_expsyms can be an egrep regular expression of symbols to exclude +-# it will be wrapped by ` (' and `)$', so one must not match beginning or +-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +-# as well as any symbol that contains `d'. +-exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +-# platforms (ab)use it in PIC code, but their linkers get confused if +-# the symbol is explicitly referenced. Since portable code cannot +-# rely on this symbol name, it's probably fine to never include it in +-# preloaded symbol tables. +-extract_expsyms_cmds= ++G77=`test $ac_compiler_gnu = yes && echo yes` ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-case $host_os in +-cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +-openbsd*) +- with_gnu_ld=no +- ;; +-esac + +-ld_shlibs=yes +-if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' + +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX, the GNU linker is very broken +- # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. +- ld_shlibs=no +- cat <&2 ++# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++# find the maximum length of command line arguments ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } ++if test "${lt_cv_sys_max_cmd_len+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ i=0 ++ teststring="ABCD" + +-EOF ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can use +- # them. +- ld_shlibs=no ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; + ;; + +- beos*) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- allow_undefined_flag=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- ld_shlibs=no +- fi ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; + ;; + +- cygwin* | mingw* | pw32*) +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec='-L$libdir' +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- +- extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ +- sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ +- test -f $output_objdir/impgen.exe || (cd $output_objdir && \ +- if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ +- else $CC -o impgen impgen.c ; fi)~ +- $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' +- +- old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' +- +- # cygwin and mingw dlls have different entry points and sets of symbols +- # to exclude. +- # FIXME: what about values for MSVC? +- dll_entry=__cygwin_dll_entry@12 +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ +- case $host_os in +- mingw*) +- # mingw values +- dll_entry=_DllMainCRTStartup@12 +- dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ +- ;; +- esac ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; + +- # mingw and cygwin differ, and it's simplest to just exclude the union +- # of the two symbol sets. +- dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 +- +- # recent cygwin and mingw systems supply a stub DllMain which the user +- # can override, but on older systems we have to supply one (in ltdll.c) +- if test "x$lt_cv_need_dllmain" = "xyes"; then +- ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " +- ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ +- test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else +- ltdll_obj= +- ltdll_cmds= ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; + +- # Extract the symbol export list from an `--export-all' def file, +- # then regenerate the def file from the symbol export list, so that +- # the compiled dll only exports the symbol export list. +- # Be careful not to strip the DATA tag left be newer dlltools. +- export_symbols_cmds="$ltdll_cmds"' +- $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ +- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' +- +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is. +- # If DATA tags from a recent dlltool are present, honour them! +- archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname-def; +- else +- echo EXPORTS > $output_objdir/$soname-def; +- _lt_hint=1; +- cat $export_symbols | while read symbol; do +- set dummy \$symbol; +- case \$# in +- 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; +- *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; +- esac; +- _lt_hint=`expr 1 + \$_lt_hint`; +- done; +- fi~ +- '"$ltdll_cmds"' +- $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ +- $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ +- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ +- $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 + ;; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac + fi + ;; +- +- solaris* | sysv5*) +- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then +- ld_shlibs=no +- cat <&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-EOF +- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else +- ld_shlibs=no ++ lt_cv_sys_max_cmd_len=32768 + fi + ;; +- +- sunos4*) +- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; +- + *) +- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else +- ld_shlibs=no ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ ++ = "XX$teststring") >/dev/null 2>&1 && ++ new_result=`expr "X$teststring" : ".*" 2>&1` && ++ lt_cv_sys_max_cmd_len=$new_result && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on massive ++ # amounts of additional arguments before passing them to the linker. ++ # It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +- if test "$ld_shlibs" = yes; then +- runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' +- export_dynamic_flag_spec='${wl}--export-dynamic' +- case $host_os in +- cygwin* | mingw* | pw32*) +- # dlltool doesn't understand --whole-archive et. al. +- whole_archive_flag_spec= +- ;; +- *) +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then +- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- whole_archive_flag_spec= +- fi +- ;; +- esac +- fi ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- allow_undefined_flag=unsupported +- always_export_symbols=yes +- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- hardcode_direct=unsupported +- fi +- ;; ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } ++fi + +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[23]|aix4.[23].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- esac + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + +- hardcode_direct=yes +- archive_cmds='' +- hardcode_libdir_separator=':' +- if test "$GCC" = yes; then +- case $host_os in aix4.[012]|aix4.[012].*) +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- hardcode_direct=yes +- else +- # We have old collect2 +- hardcode_direct=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- hardcode_minus_L=yes +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_libdir_separator= +- fi +- esac ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } ++if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else + +- shared_flag='-shared' +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- shared_flag='${wl}-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +- # It seems that -bexpall can do strange things, so it is better to +- # generate a list of symbols to export. +- always_export_symbols=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='-berok' +- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +- allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- allow_undefined_flag='${wl}-berok' +- # This is a bit strange, but is similar to how AIX traditionally builds +- # it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' +- fi +- fi +- ;; ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' + +- amigaos*) +- archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- # see comment about different semantics on the GNU ld section +- ld_shlibs=no +- ;; ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- hardcode_libdir_flag_spec=' ' +- allow_undefined_flag=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # FIXME: Setting linknames here is a bad hack. +- archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- old_archive_from_new_cmds='true' +- # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' +- fix_srcfile_path='`cygpath -w "$srcfile"`' +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[012]) +- allow_undefined_flag='-undefined suppress' +- ;; +- *) # Darwin 1.3 on +- allow_undefined_flag='-flat_namespace -undefined suppress' +- ;; +- esac +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- archive_cmds='$nonopt $(test "x$module" = xyes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' +- # We need to add '_' to the symbols in $export_symbols first +- #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- whole_archive_flag_spec='-all_load $convenience' +- ;; +- +- freebsd1*) +- ld_shlibs=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Transform an extracted symbol line into a proper C declaration ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) +- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +- hpux9* | hpux10* | hpux11*) +- case $host_os in +- hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; +- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; +- esac +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_direct=yes +- hardcode_minus_L=yes # Not in the search PATH, but as the default +- # location of the library. +- export_dynamic_flag_spec='${wl}-E' +- ;; ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) # Its linker distinguishes data from code symbols ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ;; ++linux* | k*bsd*-gnu) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDGIRSTW]' ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac + +- irix5* | irix6*) +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- link_all_deplibs=yes +- ;; ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- ;; ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac + +- newsos6) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- hardcode_shlibpath_var=no +- ;; ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do + +- openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' +- else +- case "$host_os" in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" + +- os2*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_minus_L=yes +- allow_undefined_flag=unsupported +- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; ++ # Write the raw and C identifiers. ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + +- osf3*) +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- hardcode_libdir_separator=: +- ;; ++ # Check to see that the pipe works correctly. ++ pipe_works=no + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +- else +- allow_undefined_flag=' -expect_unresolved \*' +- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' ++ rm -f conftest* ++ cat > conftest.$ac_ext <&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 ++ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi + +- sco3.2v5*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- export_dynamic_flag_spec='${wl}-Bexport' +- ;; ++ # Make sure that we snagged all the symbols we need. ++ if grep ' nm_test_var$' "$nlist" >/dev/null; then ++ if grep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif + +- solaris*) +- # gcc --version < 3.0 without binutils cannot create self contained +- # shared libraries reliably, requiring libgcc.a to resolve some of +- # the object symbols generated in some cases. Libraries that use +- # assert need libgcc.a to resolve __eprintf, for example. Linking +- # a copy of libgcc.a into every shared library to guarantee resolving +- # such symbols causes other problems: According to Tim Van Holder +- # , C++ libraries end up with a separate +- # (to the application) exception stack for one thing. +- no_undefined_flag=' -z defs' +- if test "$GCC" = yes; then +- case `$CC --version 2>/dev/null` in +- [12].*) +- cat <&2 ++EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + +-*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +-*** create self contained shared libraries on Solaris systems, without +-*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +-*** -no-undefined support, which will at least allow you to build shared +-*** libraries. However, you may find that when you link such libraries +-*** into an application without using GCC, you have to manually add +-*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +-*** upgrade to a newer version of GCC. Another option is to rebuild your +-*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. ++ cat <> conftest.$ac_ext ++#if defined (__STDC__) && __STDC__ ++# define lt_ptr_t void * ++#else ++# define lt_ptr_t char * ++# define const ++#endif + ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ lt_ptr_t address; ++} ++lt_preloaded_symbols[] = ++{ + EOF +- no_undefined_flag= +- ;; +- esac +- fi +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec='-R$libdir' +- hardcode_shlibpath_var=no +- case $host_os in +- solaris2.[0-5] | solaris2.[0-5].*) ;; +- *) # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- esac +- link_all_deplibs=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=yes +- hardcode_minus_L=yes +- hardcode_shlibpath_var=no +- ;; ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext ++ cat <<\EOF >> conftest.$ac_ext ++ {0, (lt_ptr_t) 0} ++}; + +- sysv4) +- if test "x$host_vendor" = xsno; then +- archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes # is this really true??? ++#ifdef __cplusplus ++} ++#endif ++EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi + else +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=no #Motorola manual says yes, but my tests say they lie +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; +- +- sysv4.3*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='-Bexport' +- ;; +- +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec= +- hardcode_shlibpath_var=no +- runpath_var='LD_RUN_PATH' +- ;; +- +- uts4*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- dgux*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_shlibpath_var=no +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ld_shlibs=yes ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi +- ;; +- +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no +- hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -f conftest* conftst* + +- sysv5uw7* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no +- ;; ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done + +- *) +- ld_shlibs=no +- ;; +- esac + fi +-echo "$as_me:4916: result: $ld_shlibs" >&5 +-echo "${ECHO_T}$ld_shlibs" >&6 +-test "$ld_shlibs" = no && can_build_shared=no + +-# Check hardcoding attributes. +-echo "$as_me:4921: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action= +-if test -n "$hardcode_libdir_flag_spec" || \ +- test -n "$runpath_var"; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$hardcode_shlibpath_var" != no && +- test "$hardcode_minus_L" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action=immediate +- fi ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ { echo "$as_me:$LINENO: result: failed" >&5 ++echo "${ECHO_T}failed" >&6; } + else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action=unsupported ++ { echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6; } + fi +-echo "$as_me:4945: result: $hardcode_action" >&5 +-echo "${ECHO_T}$hardcode_action" >&6 + +-striplib= +-old_striplib= +-echo "$as_me:4950: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:4955: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: checking for objdir" >&5 ++echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } ++if test "${lt_cv_objdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs + else +- echo "$as_me:4958: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null + fi ++{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++echo "${ECHO_T}$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir + +-reload_cmds='$LD$reload_flag -o $output$reload_objs' +-test -z "$deplibs_check_method" && deplibs_check_method=unknown + +-# PORTME Fill in your ld.so characteristics +-echo "$as_me:4966: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix $libname.a' +- shlibpath_var=LIBPATH + +- # AIX has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}.so$major' +- ;; + +-aix4* | aix5*) +- version_type=linux +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' +- shlibpath_var=LD_LIBRARY_PATH ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='sed -e 1s/^X//' ++sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++# Constants: ++rm="rm -f" ++ ++# Global variables: ++default_ofile=libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ltmain="$ac_aux_dir/ltmain.sh" ++ofile="$default_ofile" ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_AR+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_AR="ar" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } ++if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++test -z "$AS" && AS=as ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$LD" && LD=ld ++test -z "$LN_S" && LN_S="ln -s" ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++test -z "$NM" && NM=nm ++test -z "$SED" && SED=sed ++test -z "$OBJDUMP" && OBJDUMP=objdump ++test -z "$RANLIB" && RANLIB=: ++test -z "$STRIP" && STRIP=: ++test -z "$ac_objext" && ac_objext=o ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } ++if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++ else ++ MAGIC_CMD=: ++ fi ++fi ++ ++ fi ++ ;; ++esac ++ ++enable_dlopen=no ++enable_win32_dll=no ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then ++ enableval=$enable_libtool_lock; ++fi ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++ ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi ++ ++test -z "$pic_mode" && pic_mode=default ++ ++# Use C for the default configuration in the libtool script ++tagname= ++lt_save_CC="$CC" ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++ ++lt_prog_compiler_no_builtin_flag= ++ ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7127: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:7131: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic='-qnocommon' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7417: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:7421: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works=yes ++ fi ++ else ++ lt_prog_compiler_static_works=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:7521: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:7525: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag= ++ enable_shared_with_static_runtimes=no ++ archive_cmds= ++ archive_expsym_cmds= ++ old_archive_From_new_cmds= ++ old_archive_from_expsyms_cmds= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ thread_safe_flag_spec= ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_direct=no ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ link_all_deplibs=unknown ++ hardcode_automatic=no ++ module_cmds= ++ module_expsym_cmds= ++ always_export_symbols=no ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ ld_shlibs=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ link_all_deplibs=no ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs=no ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_From_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ whole_archive_flag_spec='' ++ link_all_deplibs=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ hardcode_direct=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++echo "${ECHO_T}$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc=no ++ else ++ archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`echo $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || \ ++ test -n "$runpath_var" || \ ++ test "X$hardcode_automatic" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++echo "${ECHO_T}$hardcode_action" >&6; } ++ ++if test "$hardcode_action" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++striplib= ++old_striplib= ++{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ;; ++ *) ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ ;; ++ esac ++fi ++ ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ++fi ++ ++ ;; ++ ++ *) ++ { echo "$as_me:$LINENO: checking for shl_load" >&5 ++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } ++if test "${ac_cv_func_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define shl_load to an innocuous variant, in case declares shl_load. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define shl_load innocuous_shl_load ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char shl_load (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef shl_load ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_shl_load || defined __stub___shl_load ++choke me ++#endif ++ ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } ++if test $ac_cv_func_shl_load = yes; then ++ lt_cv_dlopen="shl_load" ++else ++ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_shl_load+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_shl_load=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_shl_load=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } ++if test $ac_cv_lib_dld_shl_load = yes; then ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" ++else ++ { echo "$as_me:$LINENO: checking for dlopen" >&5 ++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } ++if test "${ac_cv_func_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define dlopen to an innocuous variant, in case declares dlopen. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define dlopen innocuous_dlopen ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char dlopen (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef dlopen ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_dlopen || defined __stub___dlopen ++choke me ++#endif ++ ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_func_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_func_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } ++if test $ac_cv_func_dlopen = yes; then ++ lt_cv_dlopen="dlopen" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dl_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dl_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dl_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } ++if test $ac_cv_lib_dl_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_svld_dlopen+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_svld_dlopen=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_svld_dlopen=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } ++if test $ac_cv_lib_svld_dlopen = yes; then ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } ++if test "${ac_cv_lib_dld_dld_link+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_dld_dld_link=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_dld_dld_link=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } ++if test $ac_cv_lib_dld_dld_link = yes; then ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif ++ ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ exit (status); ++} ++EOF ++ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++ ++ ++# Report which library types will actually be built ++{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++{ echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler \ ++ CC \ ++ LD \ ++ lt_prog_compiler_wl \ ++ lt_prog_compiler_pic \ ++ lt_prog_compiler_static \ ++ lt_prog_compiler_no_builtin_flag \ ++ export_dynamic_flag_spec \ ++ thread_safe_flag_spec \ ++ whole_archive_flag_spec \ ++ enable_shared_with_static_runtimes \ ++ old_archive_cmds \ ++ old_archive_from_new_cmds \ ++ predep_objects \ ++ postdep_objects \ ++ predeps \ ++ postdeps \ ++ compiler_lib_search_path \ ++ archive_cmds \ ++ archive_expsym_cmds \ ++ postinstall_cmds \ ++ postuninstall_cmds \ ++ old_archive_from_expsyms_cmds \ ++ allow_undefined_flag \ ++ no_undefined_flag \ ++ export_symbols_cmds \ ++ hardcode_libdir_flag_spec \ ++ hardcode_libdir_flag_spec_ld \ ++ hardcode_libdir_separator \ ++ hardcode_automatic \ ++ module_cmds \ ++ module_expsym_cmds \ ++ lt_cv_prog_compiler_c_o \ ++ fix_srcfile_path \ ++ exclude_expsyms \ ++ include_expsyms; do ++ ++ case $var in ++ old_archive_cmds | \ ++ old_archive_from_new_cmds | \ ++ archive_cmds | \ ++ archive_expsym_cmds | \ ++ module_cmds | \ ++ module_expsym_cmds | \ ++ old_archive_from_expsyms_cmds | \ ++ export_symbols_cmds | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="${ofile}T" ++ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 ++ $rm -f "$cfgfile" ++ { echo "$as_me:$LINENO: creating $ofile" >&5 ++echo "$as_me: creating $ofile" >&6;} ++ ++ cat <<__EOF__ >> "$cfgfile" ++#! $SHELL ++ ++# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 ++# Free Software Foundation, Inc. ++# ++# This file is part of GNU Libtool: ++# Originally by Gordon Matzigkeit , 1996 ++# ++# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="$SED -e 1s/^X//" ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++# The names of the tagged configurations supported by this script. ++available_tags= ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# ### END LIBTOOL CONFIG ++ ++__EOF__ ++ ++ ++ case $host_os in ++ aix3*) ++ cat <<\EOF >> "$cfgfile" ++ ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++EOF ++ ;; ++ esac ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || \ ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC="$lt_save_CC" ++ ++ ++# Check whether --with-tags was given. ++if test "${with_tags+set}" = set; then ++ withval=$with_tags; tagnames="$withval" ++fi ++ ++ ++if test -f "$ltmain" && test -n "$tagnames"; then ++ if test ! -f "${ofile}"; then ++ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 ++echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} ++ fi ++ ++ if test -z "$LTCC"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" ++ if test -z "$LTCC"; then ++ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 ++echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} ++ else ++ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 ++echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} ++ fi ++ fi ++ if test -z "$LTCFLAGS"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" ++ fi ++ ++ # Extract list of available tagged configurations in $ofile. ++ # Note that this assumes the entire list is on one line. ++ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` ++ ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for tagname in $tagnames; do ++ IFS="$lt_save_ifs" ++ # Check whether tagname contains only valid characters ++ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in ++ "") ;; ++ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 ++echo "$as_me: error: invalid tag name: $tagname" >&2;} ++ { (exit 1); exit 1; }; } ++ ;; ++ esac ++ ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null ++ then ++ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 ++echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} ++ { (exit 1); exit 1; }; } ++ fi ++ ++ # Update the list of available tags. ++ if test -n "$tagname"; then ++ echo appending configuration tag \"$tagname\" to $ofile ++ ++ case $tagname in ++ CXX) ++ if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ ac_ext=cpp ++ac_cpp='$CXXCPP $CPPFLAGS' ++ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++ ++ ++ ++ ++archive_cmds_need_lc_CXX=no ++allow_undefined_flag_CXX= ++always_export_symbols_CXX=no ++archive_expsym_cmds_CXX= ++export_dynamic_flag_spec_CXX= ++hardcode_direct_CXX=no ++hardcode_libdir_flag_spec_CXX= ++hardcode_libdir_flag_spec_ld_CXX= ++hardcode_libdir_separator_CXX= ++hardcode_minus_L_CXX=no ++hardcode_shlibpath_var_CXX=unsupported ++hardcode_automatic_CXX=no ++module_cmds_CXX= ++module_expsym_cmds_CXX= ++link_all_deplibs_CXX=unknown ++old_archive_cmds_CXX=$old_archive_cmds ++no_undefined_flag_CXX= ++whole_archive_flag_spec_CXX= ++enable_shared_with_static_runtimes_CXX=no ++ ++# Dependencies to place before and after the object being linked: ++predep_objects_CXX= ++postdep_objects_CXX= ++predeps_CXX= ++postdeps_CXX= ++compiler_lib_search_path_CXX= ++ ++# Source file extension for C++ test sources. ++ac_ext=cpp ++ ++# Object file extension for compiled C++ test sources. ++objext=o ++objext_CXX=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(int, char *[]) { return(0); }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC=$CC ++lt_save_LD=$LD ++lt_save_GCC=$GCC ++GCC=$GXX ++lt_save_with_gnu_ld=$with_gnu_ld ++lt_save_path_LD=$lt_cv_path_LD ++if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then ++ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx ++else ++ $as_unset lt_cv_prog_gnu_ld ++fi ++if test -n "${lt_cv_path_LDCXX+set}"; then ++ lt_cv_path_LD=$lt_cv_path_LDCXX ++else ++ $as_unset lt_cv_path_LD ++fi ++test -z "${LDCXX+set}" || LD=$LDCXX ++CC=${CXX-"c++"} ++compiler=$CC ++compiler_CXX=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# We don't want -fno-exception wen compiling C++ code, so set the ++# no_builtin_flag separately ++if test "$GXX" = yes; then ++ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' ++else ++ lt_prog_compiler_no_builtin_flag_CXX= ++fi ++ ++if test "$GXX" = yes; then ++ # Set up default GNU C++ configuration ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } ++else ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } ++fi ++if test "${lt_cv_path_LD+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &5 ++echo "${ECHO_T}$LD" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 ++echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} ++ { (exit 1); exit 1; }; } ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } ++if test "${lt_cv_prog_gnu_ld+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } ++with_gnu_ld=$lt_cv_prog_gnu_ld ++ ++ ++ ++ # Check if GNU C++ uses GNU ld as the underlying linker, since the ++ # archiving commands below assume that GNU ld is being used. ++ if test "$with_gnu_ld" = yes; then ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to ++ # investigate it a little bit more. (MM) ++ wlarc='${wl}' ++ ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ ++ grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec_CXX= ++ fi ++ else ++ with_gnu_ld=no ++ wlarc= ++ ++ # A generic and very simple default shared library creation ++ # command for GNU C++ for the case where it uses the native ++ # linker, instead of GNU ld. If possible, this setting should ++ # overridden to take advantage of the native linker features on ++ # the platform it is being used on. ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ fi ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++else ++ GXX=no ++ with_gnu_ld=no ++ wlarc= ++fi ++ ++# PORTME: fill in a description of your system's C++ link characteristics ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ld_shlibs_CXX=yes ++case $host_os in ++ aix3*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ case $ld_flag in ++ *-brtl*) ++ aix_use_runtimelinking=yes ++ break ++ ;; ++ esac ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds_CXX='' ++ hardcode_direct_CXX=yes ++ hardcode_libdir_separator_CXX=':' ++ link_all_deplibs_CXX=yes ++ ++ if test "$GXX" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct_CXX=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L_CXX=yes ++ hardcode_libdir_flag_spec_CXX='-L$libdir' ++ hardcode_libdir_separator_CXX= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols_CXX=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag_CXX='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" ++ ++ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag_CXX="-z nodefs" ++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag_CXX=' ${wl}-bernotok' ++ allow_undefined_flag_CXX=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_CXX='$convenience' ++ archive_cmds_need_lc_CXX=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_CXX=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ ++ chorus*) ++ case $cc_basename in ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec_CXX='-L$libdir' ++ allow_undefined_flag_CXX=unsupported ++ always_export_symbols_CXX=no ++ enable_shared_with_static_runtimes_CXX=yes ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc_CXX=no ++ hardcode_direct_CXX=no ++ hardcode_automatic_CXX=yes ++ hardcode_shlibpath_var_CXX=unsupported ++ whole_archive_flag_spec_CXX='' ++ link_all_deplibs_CXX=yes ++ ++ if test "$GXX" = yes ; then ++ lt_int_apple_cc_single_mod=no ++ output_verbose_link_cmd='echo' ++ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then ++ lt_int_apple_cc_single_mod=yes ++ fi ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ else ++ archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ fi ++ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ freebsd[12]*) ++ # C++ shared libraries reported to be fairly broken before switch to ELF ++ ld_shlibs_CXX=no ++ ;; ++ freebsd-elf*) ++ archive_cmds_need_lc_CXX=no ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF ++ # conventions ++ ld_shlibs_CXX=yes ++ ;; ++ gnu*) ++ ;; ++ hpux9*) ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ hardcode_direct_CXX=yes ++ hardcode_minus_L_CXX=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ aCC*) ++ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ hpux10*|hpux11*) ++ if test $with_gnu_ld = no; then ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ;; ++ *) ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ ;; ++ esac ++ fi ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ ;; ++ *) ++ hardcode_direct_CXX=yes ++ hardcode_minus_L_CXX=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ esac ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ aCC*) ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test $with_gnu_ld = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ fi ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ interix[3-9]*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ irix5* | irix6*) ++ case $cc_basename in ++ CC*) ++ # SGI C++ ++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -ar", where "CC" is the IRIX C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test "$with_gnu_ld" = no; then ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' ++ fi ++ fi ++ link_all_deplibs_CXX=yes ++ ;; ++ esac ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ++ ;; ++ icpc*) ++ # Intel C++ ++ with_gnu_ld=yes ++ # version 8.0 and above of icpc choke on multiply defined symbols ++ # if we add $predep_objects and $postdep_objects, however 7.1 and ++ # earlier do not add the objects themselves. ++ case `$CC -V 2>&1` in ++ *"Version 7."*) ++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ *) # Version 8.0 or newer ++ tmp_idyn= ++ case $host_cpu in ++ ia64*) tmp_idyn=' -i_dynamic';; ++ esac ++ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ esac ++ archive_cmds_need_lc_CXX=no ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler ++ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ;; ++ cxx*) ++ # Compaq C++ ++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' ++ ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec_CXX='-rpath $libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ no_undefined_flag_CXX=' -zdefs' ++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ m88k*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ++ wlarc= ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ hardcode_direct_CXX=yes ++ hardcode_shlibpath_var_CXX=no ++ fi ++ # Workaround some broken pre-1.5 toolchains ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ++ ;; ++ openbsd2*) ++ # C++ shared libraries are fairly broken ++ ld_shlibs_CXX=no ++ ;; ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_CXX=yes ++ hardcode_shlibpath_var_CXX=no ++ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd='echo' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ osf3*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ++ ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ cxx*) ++ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Archives containing C++ object files must be created using ++ # the KAI C++ compiler. ++ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ cxx*) ++ allow_undefined_flag_CXX=' -expect_unresolved \*' ++ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ ++ echo "-hidden">> $lib.exp~ ++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ ++ $rm $lib.exp' ++ ++ hardcode_libdir_flag_spec_CXX='-rpath $libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ esac ++ ;; ++ psos*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ lcc*) ++ # Lucid ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ archive_cmds_need_lc_CXX=yes ++ no_undefined_flag_CXX=' -zdefs' ++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ hardcode_shlibpath_var_CXX=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ++ ;; ++ esac ++ link_all_deplibs_CXX=yes ++ ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ ++ # The C++ compiler must be used to create the archive. ++ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ++ ;; ++ *) ++ # GNU C++ compiler with Solaris linker ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ no_undefined_flag_CXX=' ${wl}-z ${wl}defs' ++ if $CC --version | grep -v '^2\.7' > /dev/null; then ++ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ else ++ # g++ 2.7 appears to require `-G' NOT `-shared' on this ++ # platform. ++ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ fi ++ ++ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ ;; ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_CXX='${wl}-z,text' ++ archive_cmds_need_lc_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ # So that behaviour is only enabled if SCOABSPATH is set to a ++ # non-empty value in the environment. Most likely only useful for ++ # creating official distributions of packages. ++ # This is a hack until libtool officially supports absolute path ++ # names for shared libraries. ++ no_undefined_flag_CXX='${wl}-z,text' ++ allow_undefined_flag_CXX='${wl}-z,nodefs' ++ archive_cmds_need_lc_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_CXX=':' ++ link_all_deplibs_CXX=yes ++ export_dynamic_flag_spec_CXX='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ esac ++ ;; ++ vxworks*) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ ld_shlibs_CXX=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 ++echo "${ECHO_T}$ld_shlibs_CXX" >&6; } ++test "$ld_shlibs_CXX" = no && can_build_shared=no ++ ++GCC_CXX="$GXX" ++LD_CXX="$LD" ++ ++ ++cat > conftest.$ac_ext <&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ # Parse the compiler output and extract the necessary ++ # objects, libraries and library flags. ++ ++ # Sentinel used to keep track of whether or not we are before ++ # the conftest object file. ++ pre_test_object_deps_done=no ++ ++ # The `*' in the case matches for architectures that use `case' in ++ # $output_verbose_cmd can trigger glob expansion during the loop ++ # eval without this substitution. ++ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` ++ ++ for p in `eval $output_verbose_link_cmd`; do ++ case $p in ++ ++ -L* | -R* | -l*) ++ # Some compilers place space between "-{L,R}" and the path. ++ # Remove the space. ++ if test $p = "-L" \ ++ || test $p = "-R"; then ++ prev=$p ++ continue ++ else ++ prev= ++ fi ++ ++ if test "$pre_test_object_deps_done" = no; then ++ case $p in ++ -L* | -R*) ++ # Internal compiler library paths should come after those ++ # provided the user. The postdeps already come after the ++ # user supplied libs so there is no need to process them. ++ if test -z "$compiler_lib_search_path_CXX"; then ++ compiler_lib_search_path_CXX="${prev}${p}" ++ else ++ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" ++ fi ++ ;; ++ # The "-l" case would never come before the object being ++ # linked, so don't bother handling this case. ++ esac ++ else ++ if test -z "$postdeps_CXX"; then ++ postdeps_CXX="${prev}${p}" ++ else ++ postdeps_CXX="${postdeps_CXX} ${prev}${p}" ++ fi ++ fi ++ ;; ++ ++ *.$objext) ++ # This assumes that the test object file only shows up ++ # once in the compiler output. ++ if test "$p" = "conftest.$objext"; then ++ pre_test_object_deps_done=yes ++ continue ++ fi ++ ++ if test "$pre_test_object_deps_done" = no; then ++ if test -z "$predep_objects_CXX"; then ++ predep_objects_CXX="$p" ++ else ++ predep_objects_CXX="$predep_objects_CXX $p" ++ fi ++ else ++ if test -z "$postdep_objects_CXX"; then ++ postdep_objects_CXX="$p" ++ else ++ postdep_objects_CXX="$postdep_objects_CXX $p" ++ fi ++ fi ++ ;; ++ ++ *) ;; # Ignore the rest. ++ ++ esac ++ done ++ ++ # Clean up. ++ rm -f a.out a.exe ++else ++ echo "libtool.m4: error: problem compiling CXX test program" ++fi ++ ++$rm -f confest.$objext ++ ++# PORTME: override above test on systems where it is broken ++case $host_os in ++interix[3-9]*) ++ # Interix 3.5 installs completely hosed .la files for C++, so rather than ++ # hack all around it, let's just trust "g++" to DTRT. ++ predep_objects_CXX= ++ postdep_objects_CXX= ++ postdeps_CXX= ++ ;; ++ ++linux*) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ # ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ if test "$solaris_use_stlport4" != yes; then ++ postdeps_CXX='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++ ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ postdeps_CXX='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++esac ++ ++ ++case " $postdeps_CXX " in ++*" -lc "*) archive_cmds_need_lc_CXX=no ;; ++esac ++ ++lt_prog_compiler_wl_CXX= ++lt_prog_compiler_pic_CXX= ++lt_prog_compiler_static_CXX= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ # C++ specific cases for pic, static, wl, etc. ++ if test "$GXX" = yes; then ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_CXX='-Bstatic' ++ fi ++ ;; ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ mingw* | cygwin* | os2* | pw32*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ++ ;; ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic_CXX='-fno-common' ++ ;; ++ *djgpp*) ++ # DJGPP does not support shared libraries at all ++ lt_prog_compiler_pic_CXX= ++ ;; ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic_CXX=-Kconform_pic ++ fi ++ ;; ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ esac ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ esac ++ else ++ case $host_os in ++ aix4* | aix5*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_CXX='-Bstatic' ++ else ++ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ chorus*) ++ case $cc_basename in ++ cxch68*) ++ # Green Hills C++ Compiler ++ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ++ ;; ++ esac ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic_CXX='-qnocommon' ++ lt_prog_compiler_wl_CXX='-Wl,' ++ ;; ++ esac ++ ;; ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ lt_prog_compiler_pic_CXX='-KPIC' ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ lt_prog_compiler_pic_CXX='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD uses GNU C++ ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' ++ if test "$host_cpu" != ia64; then ++ lt_prog_compiler_pic_CXX='+Z' ++ fi ++ ;; ++ aCC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; ++ irix5* | irix6* | nonstopux*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='-non_shared' ++ # CC pic flag -KPIC is the default. ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # KAI C++ Compiler ++ lt_prog_compiler_wl_CXX='--backend -Wl,' ++ lt_prog_compiler_pic_CXX='-fPIC' ++ ;; ++ icpc* | ecpc*) ++ # Intel C++ ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-static' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler. ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-fpic' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ cxx*) ++ # Compaq C++ ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ lt_prog_compiler_pic_CXX= ++ lt_prog_compiler_static_CXX='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ lt_prog_compiler_wl_CXX='-Qoption ld ' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ ;; ++ m88k*) ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ lt_prog_compiler_pic_CXX='-W c,exportall' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ ;; ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ lt_prog_compiler_wl_CXX='--backend -Wl,' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ lt_prog_compiler_pic_CXX='-pic' ++ ;; ++ cxx*) ++ # Digital/Compaq C++ ++ lt_prog_compiler_wl_CXX='-Wl,' ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ lt_prog_compiler_pic_CXX= ++ lt_prog_compiler_static_CXX='-non_shared' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ psos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ lt_prog_compiler_wl_CXX='-Qoption ld ' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ lt_prog_compiler_pic_CXX='-PIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ lt_prog_compiler_pic_CXX='-pic' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ lcc*) ++ # Lucid ++ lt_prog_compiler_pic_CXX='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ lt_prog_compiler_pic_CXX='-KPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ esac ++ ;; ++ vxworks*) ++ ;; ++ *) ++ lt_prog_compiler_can_build_shared_CXX=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic_CXX"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works_CXX=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:12403: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:12407: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works_CXX=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then ++ case $lt_prog_compiler_pic_CXX in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; ++ esac ++else ++ lt_prog_compiler_pic_CXX= ++ lt_prog_compiler_can_build_shared_CXX=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic_CXX= ++ ;; ++ *) ++ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_CXX=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_CXX=yes ++ fi ++ else ++ lt_prog_compiler_static_works_CXX=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_CXX" = xyes; then ++ : ++else ++ lt_prog_compiler_static_CXX= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o_CXX=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:12507: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:12511: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o_CXX=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ case $host_os in ++ aix4* | aix5*) ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ ;; ++ pw32*) ++ export_symbols_cmds_CXX="$ltdll_cmds" ++ ;; ++ cygwin* | mingw*) ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ;; ++ linux* | k*bsd*-gnu) ++ link_all_deplibs_CXX=no ++ ;; ++ *) ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ esac ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 ++echo "${ECHO_T}$ld_shlibs_CXX" >&6; } ++test "$ld_shlibs_CXX" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc_CXX" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc_CXX=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds_CXX in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_CXX ++ pic_flag=$lt_prog_compiler_pic_CXX ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX ++ allow_undefined_flag_CXX= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_CXX=no ++ else ++ archive_cmds_need_lc_CXX=yes ++ fi ++ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_CXX= ++if test -n "$hardcode_libdir_flag_spec_CXX" || \ ++ test -n "$runpath_var_CXX" || \ ++ test "X$hardcode_automatic_CXX" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_CXX" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && ++ test "$hardcode_minus_L_CXX" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_CXX=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_CXX=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_CXX=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 ++echo "${ECHO_T}$hardcode_action_CXX" >&6; } ++ ++if test "$hardcode_action_CXX" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_CXX \ ++ CC_CXX \ ++ LD_CXX \ ++ lt_prog_compiler_wl_CXX \ ++ lt_prog_compiler_pic_CXX \ ++ lt_prog_compiler_static_CXX \ ++ lt_prog_compiler_no_builtin_flag_CXX \ ++ export_dynamic_flag_spec_CXX \ ++ thread_safe_flag_spec_CXX \ ++ whole_archive_flag_spec_CXX \ ++ enable_shared_with_static_runtimes_CXX \ ++ old_archive_cmds_CXX \ ++ old_archive_from_new_cmds_CXX \ ++ predep_objects_CXX \ ++ postdep_objects_CXX \ ++ predeps_CXX \ ++ postdeps_CXX \ ++ compiler_lib_search_path_CXX \ ++ archive_cmds_CXX \ ++ archive_expsym_cmds_CXX \ ++ postinstall_cmds_CXX \ ++ postuninstall_cmds_CXX \ ++ old_archive_from_expsyms_cmds_CXX \ ++ allow_undefined_flag_CXX \ ++ no_undefined_flag_CXX \ ++ export_symbols_cmds_CXX \ ++ hardcode_libdir_flag_spec_CXX \ ++ hardcode_libdir_flag_spec_ld_CXX \ ++ hardcode_libdir_separator_CXX \ ++ hardcode_automatic_CXX \ ++ module_cmds_CXX \ ++ module_expsym_cmds_CXX \ ++ lt_cv_prog_compiler_c_o_CXX \ ++ fix_srcfile_path_CXX \ ++ exclude_expsyms_CXX \ ++ include_expsyms_CXX; do ++ ++ case $var in ++ old_archive_cmds_CXX | \ ++ old_archive_from_new_cmds_CXX | \ ++ archive_cmds_CXX | \ ++ archive_expsym_cmds_CXX | \ ++ module_cmds_CXX | \ ++ module_expsym_cmds_CXX | \ ++ old_archive_from_expsyms_cmds_CXX | \ ++ export_symbols_cmds_CXX | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="$ofile" ++ ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_CXX ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_CXX ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_CXX ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD_CXX ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_CXX ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_CXX ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_CXX ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_CXX ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_CXX ++archive_expsym_cmds=$lt_archive_expsym_cmds_CXX ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_CXX ++module_expsym_cmds=$lt_module_expsym_cmds_CXX ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_CXX ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_CXX ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_CXX ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_CXX ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_CXX ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_CXX ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_CXX ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_CXX ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_CXX ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L_CXX ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_CXX ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_CXX ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_CXX ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_CXX ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_CXX ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_CXX ++ ++# ### END LIBTOOL TAG CONFIG: $tagname ++ ++__EOF__ ++ ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC=$lt_save_CC ++LDCXX=$LD ++LD=$lt_save_LD ++GCC=$lt_save_GCC ++with_gnu_ldcxx=$with_gnu_ld ++with_gnu_ld=$lt_save_with_gnu_ld ++lt_cv_path_LDCXX=$lt_cv_path_LD ++lt_cv_path_LD=$lt_save_path_LD ++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld ++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ++ ++ else ++ tagname="" ++ fi ++ ;; ++ ++ F77) ++ if test -n "$F77" && test "X$F77" != "Xno"; then ++ ++ac_ext=f ++ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ++ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_f77_compiler_gnu ++ ++ ++archive_cmds_need_lc_F77=no ++allow_undefined_flag_F77= ++always_export_symbols_F77=no ++archive_expsym_cmds_F77= ++export_dynamic_flag_spec_F77= ++hardcode_direct_F77=no ++hardcode_libdir_flag_spec_F77= ++hardcode_libdir_flag_spec_ld_F77= ++hardcode_libdir_separator_F77= ++hardcode_minus_L_F77=no ++hardcode_automatic_F77=no ++module_cmds_F77= ++module_expsym_cmds_F77= ++link_all_deplibs_F77=unknown ++old_archive_cmds_F77=$old_archive_cmds ++no_undefined_flag_F77= ++whole_archive_flag_spec_F77= ++enable_shared_with_static_runtimes_F77=no ++ ++# Source file extension for f77 test sources. ++ac_ext=f ++ ++# Object file extension for compiled f77 test sources. ++objext=o ++objext_F77=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${F77-"f77"} ++compiler=$CC ++compiler_F77=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } ++ ++{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++{ echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } ++ ++GCC_F77="$G77" ++LD_F77="$LD" ++ ++lt_prog_compiler_wl_F77= ++lt_prog_compiler_pic_F77= ++lt_prog_compiler_static_F77= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_static_F77='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_F77='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic_F77='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic_F77='-fno-common' ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared_F77=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic_F77=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_F77='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ lt_prog_compiler_pic_F77='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_F77='-Bstatic' ++ else ++ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic_F77='-qnocommon' ++ lt_prog_compiler_wl_F77='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic_F77='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_F77='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static_F77='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-fpic' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ lt_prog_compiler_wl_F77='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ lt_prog_compiler_wl_F77='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static_F77='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl_F77='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl_F77='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl_F77='-Qoption ld ' ++ lt_prog_compiler_pic_F77='-PIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic_F77='-Kconform_pic' ++ lt_prog_compiler_static_F77='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_can_build_shared_F77=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic_F77='-pic' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared_F77=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic_F77"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works_F77=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic_F77" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:14084: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:14088: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works_F77=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works_F77" = xyes; then ++ case $lt_prog_compiler_pic_F77 in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; ++ esac ++else ++ lt_prog_compiler_pic_F77= ++ lt_prog_compiler_can_build_shared_F77=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic_F77= ++ ;; ++ *) ++ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_F77=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_F77=yes ++ fi ++ else ++ lt_prog_compiler_static_works_F77=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_F77" = xyes; then ++ : ++else ++ lt_prog_compiler_static_F77= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o_F77=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:14188: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:14192: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o_F77=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag_F77= ++ enable_shared_with_static_runtimes_F77=no ++ archive_cmds_F77= ++ archive_expsym_cmds_F77= ++ old_archive_From_new_cmds_F77= ++ old_archive_from_expsyms_cmds_F77= ++ export_dynamic_flag_spec_F77= ++ whole_archive_flag_spec_F77= ++ thread_safe_flag_spec_F77= ++ hardcode_libdir_flag_spec_F77= ++ hardcode_libdir_flag_spec_ld_F77= ++ hardcode_libdir_separator_F77= ++ hardcode_direct_F77=no ++ hardcode_minus_L_F77=no ++ hardcode_shlibpath_var_F77=unsupported ++ link_all_deplibs_F77=unknown ++ hardcode_automatic_F77=no ++ module_cmds_F77= ++ module_expsym_cmds_F77= ++ always_export_symbols_F77=no ++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms_F77= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs_F77=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_F77='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec_F77= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs_F77=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_minus_L_F77=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ ld_shlibs_F77=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_F77=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ allow_undefined_flag_F77=unsupported ++ always_export_symbols_F77=no ++ enable_shared_with_static_runtimes_F77=yes ++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_F77='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ link_all_deplibs_F77=no ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs_F77=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs_F77=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs_F77" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec_F77= ++ export_dynamic_flag_spec_F77= ++ whole_archive_flag_spec_F77= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag_F77=unsupported ++ always_export_symbols_F77=yes ++ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L_F77=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct_F77=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds_F77='' ++ hardcode_direct_F77=yes ++ hardcode_libdir_separator_F77=':' ++ link_all_deplibs_F77=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct_F77=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L_F77=yes ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_libdir_separator_F77= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols_F77=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag_F77='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++ program main ++ ++ end ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag_F77="-z nodefs" ++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++ program main ++ ++ end ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag_F77=' ${wl}-bernotok' ++ allow_undefined_flag_F77=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_F77='$convenience' ++ archive_cmds_need_lc_F77=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_minus_L_F77=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs_F77=no ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec_F77=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec_F77=' ' ++ allow_undefined_flag_F77=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_From_new_cmds_F77='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path_F77='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes_F77=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc_F77=no ++ hardcode_direct_F77=no ++ hardcode_automatic_F77=yes ++ hardcode_shlibpath_var_F77=unsupported ++ whole_archive_flag_spec_F77='' ++ link_all_deplibs_F77=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs_F77=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs_F77=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes ++ hardcode_minus_L_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ hardcode_direct_F77=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ++ hardcode_direct_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_libdir_flag_spec_ld_F77='+b $libdir' ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ ;; ++ *) ++ hardcode_direct_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' ++ fi ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ link_all_deplibs_F77=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ newsos6) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_F77='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ ;; ++ *) ++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_minus_L_F77=yes ++ allow_undefined_flag_F77=unsupported ++ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag_F77=' -expect_unresolved \*' ++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag_F77=' -expect_unresolved \*' ++ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec_F77='-rpath $libdir' ++ fi ++ hardcode_libdir_separator_F77=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag_F77=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ hardcode_shlibpath_var_F77=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs_F77=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_direct_F77=yes ++ hardcode_minus_L_F77=yes ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds_F77='$CC -r -o $output$reload_objs' ++ hardcode_direct_F77=no ++ ;; ++ motorola) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_F77=no ++ export_dynamic_flag_spec_F77='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_F77=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs_F77=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_F77='${wl}-z,text' ++ archive_cmds_need_lc_F77=no ++ hardcode_shlibpath_var_F77=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag_F77='${wl}-z,text' ++ allow_undefined_flag_F77='${wl}-z,nodefs' ++ archive_cmds_need_lc_F77=no ++ hardcode_shlibpath_var_F77=no ++ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_F77=':' ++ link_all_deplibs_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-L$libdir' ++ hardcode_shlibpath_var_F77=no ++ ;; ++ ++ *) ++ ld_shlibs_F77=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 ++echo "${ECHO_T}$ld_shlibs_F77" >&6; } ++test "$ld_shlibs_F77" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc_F77" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc_F77=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds_F77 in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_F77 ++ pic_flag=$lt_prog_compiler_pic_F77 ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_F77 ++ allow_undefined_flag_F77= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_F77=no ++ else ++ archive_cmds_need_lc_F77=yes ++ fi ++ allow_undefined_flag_F77=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_F77= ++if test -n "$hardcode_libdir_flag_spec_F77" || \ ++ test -n "$runpath_var_F77" || \ ++ test "X$hardcode_automatic_F77" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_F77" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && ++ test "$hardcode_minus_L_F77" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_F77=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_F77=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_F77=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 ++echo "${ECHO_T}$hardcode_action_F77" >&6; } ++ ++if test "$hardcode_action_F77" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_F77 \ ++ CC_F77 \ ++ LD_F77 \ ++ lt_prog_compiler_wl_F77 \ ++ lt_prog_compiler_pic_F77 \ ++ lt_prog_compiler_static_F77 \ ++ lt_prog_compiler_no_builtin_flag_F77 \ ++ export_dynamic_flag_spec_F77 \ ++ thread_safe_flag_spec_F77 \ ++ whole_archive_flag_spec_F77 \ ++ enable_shared_with_static_runtimes_F77 \ ++ old_archive_cmds_F77 \ ++ old_archive_from_new_cmds_F77 \ ++ predep_objects_F77 \ ++ postdep_objects_F77 \ ++ predeps_F77 \ ++ postdeps_F77 \ ++ compiler_lib_search_path_F77 \ ++ archive_cmds_F77 \ ++ archive_expsym_cmds_F77 \ ++ postinstall_cmds_F77 \ ++ postuninstall_cmds_F77 \ ++ old_archive_from_expsyms_cmds_F77 \ ++ allow_undefined_flag_F77 \ ++ no_undefined_flag_F77 \ ++ export_symbols_cmds_F77 \ ++ hardcode_libdir_flag_spec_F77 \ ++ hardcode_libdir_flag_spec_ld_F77 \ ++ hardcode_libdir_separator_F77 \ ++ hardcode_automatic_F77 \ ++ module_cmds_F77 \ ++ module_expsym_cmds_F77 \ ++ lt_cv_prog_compiler_c_o_F77 \ ++ fix_srcfile_path_F77 \ ++ exclude_expsyms_F77 \ ++ include_expsyms_F77; do ++ ++ case $var in ++ old_archive_cmds_F77 | \ ++ old_archive_from_new_cmds_F77 | \ ++ archive_cmds_F77 | \ ++ archive_expsym_cmds_F77 | \ ++ module_cmds_F77 | \ ++ module_expsym_cmds_F77 | \ ++ old_archive_from_expsyms_cmds_F77 | \ ++ export_symbols_cmds_F77 | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="$ofile" ++ ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_F77 ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_F77 ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_F77 ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD_F77 ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_F77 ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_F77 ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_F77 ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_F77 ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_F77 ++archive_expsym_cmds=$lt_archive_expsym_cmds_F77 ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_F77 ++module_expsym_cmds=$lt_module_expsym_cmds_F77 ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_F77 ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_F77 ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_F77 ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_F77 ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_F77 ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_F77 ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_F77 ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_F77 ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_F77 ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L_F77 ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_F77 ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_F77 ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_F77 ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_F77 ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_F77 ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_F77 ++ ++# ### END LIBTOOL TAG CONFIG: $tagname ++ ++__EOF__ ++ ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC="$lt_save_CC" ++ ++ else ++ tagname="" ++ fi ++ ;; ++ ++ GCJ) ++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then ++ ++ ++# Source file extension for Java test sources. ++ac_ext=java ++ ++# Object file extension for compiled Java test sources. ++objext=o ++objext_GCJ=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="class foo {}" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${GCJ-"gcj"} ++compiler=$CC ++compiler_GCJ=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ ++# GCJ did not exist at the time GCC didn't implicitly link libc in. ++archive_cmds_need_lc_GCJ=no ++ ++old_archive_cmds_GCJ=$old_archive_cmds ++ ++ ++lt_prog_compiler_no_builtin_flag_GCJ= ++ ++if test "$GCC" = yes; then ++ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:16388: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:16392: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++lt_prog_compiler_wl_GCJ= ++lt_prog_compiler_pic_GCJ= ++lt_prog_compiler_static_GCJ= ++ ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_static_GCJ='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic_GCJ='-fno-common' ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared_GCJ=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic_GCJ=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_GCJ='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ lt_prog_compiler_pic_GCJ='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ else ++ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ lt_prog_compiler_pic_GCJ='-qnocommon' ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic_GCJ='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-fpic' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ lt_prog_compiler_wl_GCJ='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static_GCJ='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl_GCJ='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl_GCJ='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl_GCJ='-Qoption ld ' ++ lt_prog_compiler_pic_GCJ='-PIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic_GCJ='-Kconform_pic' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_can_build_shared_GCJ=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic_GCJ='-pic' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared_GCJ=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic_GCJ"; then ++ ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_pic_works_GCJ=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic_GCJ" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:16678: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:16682: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_pic_works_GCJ=yes ++ fi ++ fi ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } ++ ++if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then ++ case $lt_prog_compiler_pic_GCJ in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; ++ esac ++else ++ lt_prog_compiler_pic_GCJ= ++ lt_prog_compiler_can_build_shared_GCJ=no ++fi ++ ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic_GCJ= ++ ;; ++ *) ++ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_GCJ=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_GCJ=yes ++ fi ++ else ++ lt_prog_compiler_static_works_GCJ=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then ++ : ++else ++ lt_prog_compiler_static_GCJ= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } ++if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_cv_prog_compiler_c_o_GCJ=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:16782: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:16786: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o_GCJ=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } ++ ++ runpath_var= ++ allow_undefined_flag_GCJ= ++ enable_shared_with_static_runtimes_GCJ=no ++ archive_cmds_GCJ= ++ archive_expsym_cmds_GCJ= ++ old_archive_From_new_cmds_GCJ= ++ old_archive_from_expsyms_cmds_GCJ= ++ export_dynamic_flag_spec_GCJ= ++ whole_archive_flag_spec_GCJ= ++ thread_safe_flag_spec_GCJ= ++ hardcode_libdir_flag_spec_GCJ= ++ hardcode_libdir_flag_spec_ld_GCJ= ++ hardcode_libdir_separator_GCJ= ++ hardcode_direct_GCJ=no ++ hardcode_minus_L_GCJ=no ++ hardcode_shlibpath_var_GCJ=unsupported ++ link_all_deplibs_GCJ=unknown ++ hardcode_automatic_GCJ=no ++ module_cmds_GCJ= ++ module_expsym_cmds_GCJ= ++ always_export_symbols_GCJ=no ++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms_GCJ= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ++ ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs_GCJ=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec_GCJ= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs_GCJ=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_minus_L_GCJ=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ ld_shlibs_GCJ=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_GCJ=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ allow_undefined_flag_GCJ=unsupported ++ always_export_symbols_GCJ=no ++ enable_shared_with_static_runtimes_GCJ=yes ++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ link_all_deplibs_GCJ=no ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs_GCJ=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs_GCJ=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs_GCJ" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec_GCJ= ++ export_dynamic_flag_spec_GCJ= ++ whole_archive_flag_spec_GCJ= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag_GCJ=unsupported ++ always_export_symbols_GCJ=yes ++ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L_GCJ=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct_GCJ=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds_GCJ='' ++ hardcode_direct_GCJ=yes ++ hardcode_libdir_separator_GCJ=':' ++ link_all_deplibs_GCJ=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct_GCJ=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L_GCJ=yes ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_libdir_separator_GCJ= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols_GCJ=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag_GCJ='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag_GCJ="-z nodefs" ++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag_GCJ=' ${wl}-bernotok' ++ allow_undefined_flag_GCJ=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec_GCJ='$convenience' ++ archive_cmds_need_lc_GCJ=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_minus_L_GCJ=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs_GCJ=no ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec_GCJ=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec_GCJ=' ' ++ allow_undefined_flag_GCJ=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_From_new_cmds_GCJ='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes_GCJ=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[012]) ++ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[012]) ++ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ archive_cmds_need_lc_GCJ=no ++ hardcode_direct_GCJ=no ++ hardcode_automatic_GCJ=yes ++ hardcode_shlibpath_var_GCJ=unsupported ++ whole_archive_flag_spec_GCJ='' ++ link_all_deplibs_GCJ=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ ld_shlibs_GCJ=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ freebsd1*) ++ ld_shlibs_GCJ=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes ++ hardcode_minus_L_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ hardcode_direct_GCJ=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ++ hardcode_direct_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ *) ++ hardcode_direct_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' ++ fi ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ link_all_deplibs_GCJ=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ newsos6) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_minus_L_GCJ=yes ++ allow_undefined_flag_GCJ=unsupported ++ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag_GCJ=' -expect_unresolved \*' ++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag_GCJ=' -expect_unresolved \*' ++ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec_GCJ='-rpath $libdir' ++ fi ++ hardcode_libdir_separator_GCJ=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag_GCJ=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ hardcode_shlibpath_var_GCJ=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs_GCJ=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_direct_GCJ=yes ++ hardcode_minus_L_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds_GCJ='$CC -r -o $output$reload_objs' ++ hardcode_direct_GCJ=no ++ ;; ++ motorola) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_GCJ=no ++ export_dynamic_flag_spec_GCJ='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var_GCJ=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs_GCJ=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_GCJ='${wl}-z,text' ++ archive_cmds_need_lc_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag_GCJ='${wl}-z,text' ++ allow_undefined_flag_GCJ='${wl}-z,nodefs' ++ archive_cmds_need_lc_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_GCJ=':' ++ link_all_deplibs_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-L$libdir' ++ hardcode_shlibpath_var_GCJ=no ++ ;; ++ ++ *) ++ ld_shlibs_GCJ=no ++ ;; ++ esac ++ fi ++ ++{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 ++echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } ++test "$ld_shlibs_GCJ" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc_GCJ" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc_GCJ=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds_GCJ in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_GCJ ++ pic_flag=$lt_prog_compiler_pic_GCJ ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ ++ allow_undefined_flag_GCJ= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_GCJ=no ++ else ++ archive_cmds_need_lc_GCJ=yes ++ fi ++ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with +@@ -5003,29 +17929,28 @@ + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; + esac +- # AIX (on Power*) has no versioning support, so currently we can +- # not hardcode correct soname into executable. Probably we can +- # add versioning support to collect2, so additional links can +- # be useful in future. ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}.so$major' ++ soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi +@@ -5034,25 +17959,24 @@ + amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + + beos*) +- library_names_spec='${libname}.so' ++ library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +-bsdi4*) ++bsdi[45]*) + version_type=linux + need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs +@@ -5060,29 +17984,56 @@ + + cygwin* | mingw* | pw32*) + version_type=windows ++ shrext_cmds=".dll" + need_version=no + need_lib_prefix=no ++ + case $GCC,$host_os in +- yes,cygwin*) ++ yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ +- $install_prog .libs/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac + ;; +- yes,mingw*) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` +- ;; +- yes,pw32*) +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' +- ;; ++ + *) +- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' +@@ -5095,30 +18046,48 @@ + version_type=darwin + need_lib_prefix=no + need_version=no +- # FIXME: Relying on posixy $() will cause problems for +- # cross-compilation, but unfortunately the echo tests do not +- # yet detect zsh echo's removal of \ escapes. +- library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' +- soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH + ;; + + freebsd1*) + dynamic_linker=no + ;; + +-freebsd*) +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) +- library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac +@@ -5127,10 +18096,19 @@ + freebsd2*) + shlibpath_overrides_runpath=yes + ;; +- *) ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + esac + ;; + +@@ -5138,8 +18116,8 @@ + version_type=linux + need_lib_prefix=no + need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; +@@ -5147,33 +18125,87 @@ + hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. +- dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' +- soname_spec='${libname}${release}.sl$major' ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +-irix5* | irix6*) +- version_type=irix ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac + need_lib_prefix=no + need_version=no +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in +- irix5*) ++ irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; +@@ -5182,20 +18214,21 @@ + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes + ;; + + # No shared lib support for Linux oldld, aout, or coff. +-linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) ++linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no +@@ -5204,6 +18237,12 @@ + # before this can be enabled. + hardcode_into_libs=yes + ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, +@@ -5213,17 +18252,29 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; ++ + netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' +- soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH +@@ -5233,879 +18284,763 @@ + + newsos6) + version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + + openbsd*) + version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no +- need_version=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case "$host_os" in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac + else + shlibpath_overrides_runpath=yes + fi +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH + ;; + + os2*) + libname_spec='$name' ++ shrext_cmds=".dll" + need_lib_prefix=no +- library_names_spec='$libname.dll $libname.a' ++ library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + + osf3* | osf4* | osf5*) + version_type=osf ++ need_lib_prefix=no + need_version=no +- soname_spec='${libname}${release}.so' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}.so$major' +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_GCJ= ++if test -n "$hardcode_libdir_flag_spec_GCJ" || \ ++ test -n "$runpath_var_GCJ" || \ ++ test "X$hardcode_automatic_GCJ" = "Xyes" ; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_GCJ" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && ++ test "$hardcode_minus_L_GCJ" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_GCJ=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_GCJ=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_GCJ=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 ++echo "${ECHO_T}$hardcode_action_GCJ" >&6; } ++ ++if test "$hardcode_action_GCJ" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_GCJ \ ++ CC_GCJ \ ++ LD_GCJ \ ++ lt_prog_compiler_wl_GCJ \ ++ lt_prog_compiler_pic_GCJ \ ++ lt_prog_compiler_static_GCJ \ ++ lt_prog_compiler_no_builtin_flag_GCJ \ ++ export_dynamic_flag_spec_GCJ \ ++ thread_safe_flag_spec_GCJ \ ++ whole_archive_flag_spec_GCJ \ ++ enable_shared_with_static_runtimes_GCJ \ ++ old_archive_cmds_GCJ \ ++ old_archive_from_new_cmds_GCJ \ ++ predep_objects_GCJ \ ++ postdep_objects_GCJ \ ++ predeps_GCJ \ ++ postdeps_GCJ \ ++ compiler_lib_search_path_GCJ \ ++ archive_cmds_GCJ \ ++ archive_expsym_cmds_GCJ \ ++ postinstall_cmds_GCJ \ ++ postuninstall_cmds_GCJ \ ++ old_archive_from_expsyms_cmds_GCJ \ ++ allow_undefined_flag_GCJ \ ++ no_undefined_flag_GCJ \ ++ export_symbols_cmds_GCJ \ ++ hardcode_libdir_flag_spec_GCJ \ ++ hardcode_libdir_flag_spec_ld_GCJ \ ++ hardcode_libdir_separator_GCJ \ ++ hardcode_automatic_GCJ \ ++ module_cmds_GCJ \ ++ module_expsym_cmds_GCJ \ ++ lt_cv_prog_compiler_c_o_GCJ \ ++ fix_srcfile_path_GCJ \ ++ exclude_expsyms_GCJ \ ++ include_expsyms_GCJ; do ++ ++ case $var in ++ old_archive_cmds_GCJ | \ ++ old_archive_from_new_cmds_GCJ | \ ++ archive_cmds_GCJ | \ ++ archive_expsym_cmds_GCJ | \ ++ module_cmds_GCJ | \ ++ module_expsym_cmds_GCJ | \ ++ old_archive_from_expsyms_cmds_GCJ | \ ++ export_symbols_cmds_GCJ | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++cfgfile="$ofile" ++ ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_GCJ ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_GCJ ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_GCJ ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_LD_GCJ ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_GCJ ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_GCJ ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen + +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static + +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_GCJ + +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' +- soname_spec='${libname}${release}.so$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' +- soname_spec='$libname.so.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:5359: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +-# Report the final consequences. +-echo "$as_me:5364: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:5366: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +-echo "$as_me:5369: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +-test "$can_build_shared" = "no" && enable_shared=no ++# Library versioning type. ++version_type=$version_type + +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case "$host_os" in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; ++# Format of library name prefix. ++libname_spec=$lt_libname_spec + +-aix4*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-echo "$as_me:5390: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec + +-echo "$as_me:5393: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:5397: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec + +-if test "$hardcode_action" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_GCJ ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_GCJ ++archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds + +- cygwin* | mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_GCJ ++module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +- *) +- echo "$as_me:5435: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +-if test "${ac_cv_func_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 5441 "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-char (*f) (); ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib + +-int +-main () +-{ +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) +-choke me +-#else +-f = shl_load; +-#endif ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_GCJ ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_GCJ ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_GCJ ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_GCJ ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5472: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5475: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5478: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5481: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:5491: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +-if test $ac_cv_func_shl_load = yes; then +- lt_cv_dlopen="shl_load" +-else +- echo "$as_me:5496: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5504 "configure" +-#include "confdefs.h" ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-int +-main () +-{ +-shl_load (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5523: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5526: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5529: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5532: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5543: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +-if test $ac_cv_lib_dld_shl_load = yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +-else +- echo "$as_me:5548: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +-if test "${ac_cv_func_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 5554 "configure" +-#include "confdefs.h" +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-char (*f) (); ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd + +-int +-main () +-{ +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) +-choke me +-#else +-f = dlopen; +-#endif ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5585: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5588: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5591: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5594: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_func_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:5604: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +-if test $ac_cv_func_dlopen = yes; then +- lt_cv_dlopen="dlopen" +-else +- echo "$as_me:5609: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5617 "configure" +-#include "confdefs.h" ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_GCJ ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5636: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5639: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5642: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5645: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5656: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- echo "$as_me:5661: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5669 "configure" +-#include "confdefs.h" ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5688: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5691: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5694: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5697: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_svld_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_svld_dlopen=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5708: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +-if test $ac_cv_lib_svld_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- echo "$as_me:5713: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-#line 5721 "configure" +-#include "confdefs.h" ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dld_link (); +-int +-main () +-{ +-dld_link (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:5740: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5743: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:5746: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:5749: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_dld_link=yes +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:5760: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +-if test $ac_cv_lib_dld_dld_link = yes; then +- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +-fi ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +-fi ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +-fi ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var + +-fi ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var + +-fi ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +-fi ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_GCJ + +- ;; +- esac ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_GCJ + +- echo "$as_me:5796: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +-#include ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_GCJ + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_GCJ + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:5868: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5871: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self=no ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_GCJ ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_GCJ ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_GCJ ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_GCJ ++ ++# ### END LIBTOOL TAG CONFIG: $tagname ++ ++__EOF__ ++ ++ ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" + fi + fi +-rm -fr conftest* + +-fi +-echo "$as_me:5888: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- echo "$as_me:5893: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self_static+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self_static=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++CC="$lt_save_CC" ++ ++ else ++ tagname="" ++ fi ++ ;; + +-#include ++ RC) + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Source file extension for RC test sources. ++ac_ext=rc + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# Object file extension for compiled RC test sources. ++objext=o ++objext_RC=$objext + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++# Code to be used in simple compile tests ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++# Code to be used in simple link tests ++lt_simple_link_test_code="$lt_simple_compile_test_code" + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:5965: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:5968: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no +- fi +-fi +-rm -fr conftest* ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +-fi +-echo "$as_me:5985: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- fi ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac ++# Allow CC to be a program name with arguments. ++compiler=$CC + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi + +-if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $archive_cmds in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:6015: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- if test "${lt_cv_archive_cmds_need_lc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- $rm conftest* +- echo 'static int dummy;' > conftest.$ac_ext ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* + +- if { (eval echo "$as_me:6023: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6026: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_cv_prog_cc_wl +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- save_allow_undefined_flag=$allow_undefined_flag +- allow_undefined_flag= +- if { (eval echo "$as_me:6040: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:6043: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- lt_cv_archive_cmds_need_lc=no +- else +- lt_cv_archive_cmds_need_lc=yes +- fi +- allow_undefined_flag=$save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +-fi + +- echo "$as_me:6056: result: $lt_cv_archive_cmds_need_lc" >&5 +-echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 +- ;; ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${RC-"windres"} ++compiler=$CC ++compiler_RC=$CC ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; + esac +-fi +-need_lc=${lt_cv_archive_cmds_need_lc-yes} ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +-# The second clause should only fire when bootstrapping the ++lt_cv_prog_compiler_c_o_RC=yes ++ ++# The else clause should only fire when bootstrapping the + # libtool distribution, otherwise you forgot to ship ltmain.sh + # with your package, and you will get complaints that there are + # no rules to generate ltmain.sh. + if test -f "$ltmain"; then +- : +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- test -f Makefile && make "$ltmain" +-fi +- +-if test -f "$ltmain"; then +- trap "$rm \"${ofile}T\"; exit 1" 1 2 15 +- $rm -f "${ofile}T" +- +- echo creating $ofile +- ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS \ +- AR AR_FLAGS CC LD LN_S NM SHELL \ +- reload_flag reload_cmds wl \ +- pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ +- thread_safe_flag_spec whole_archive_flag_spec libname_spec \ +- library_names_spec soname_spec \ +- RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ +- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ +- postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ +- old_striplib striplib file_magic_cmd export_symbols_cmds \ +- deplibs_check_method allow_undefined_flag no_undefined_flag \ +- finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ +- global_symbol_to_c_name_address \ +- hardcode_libdir_flag_spec hardcode_libdir_separator \ ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_RC \ ++ CC_RC \ ++ LD_RC \ ++ lt_prog_compiler_wl_RC \ ++ lt_prog_compiler_pic_RC \ ++ lt_prog_compiler_static_RC \ ++ lt_prog_compiler_no_builtin_flag_RC \ ++ export_dynamic_flag_spec_RC \ ++ thread_safe_flag_spec_RC \ ++ whole_archive_flag_spec_RC \ ++ enable_shared_with_static_runtimes_RC \ ++ old_archive_cmds_RC \ ++ old_archive_from_new_cmds_RC \ ++ predep_objects_RC \ ++ postdep_objects_RC \ ++ predeps_RC \ ++ postdeps_RC \ ++ compiler_lib_search_path_RC \ ++ archive_cmds_RC \ ++ archive_expsym_cmds_RC \ ++ postinstall_cmds_RC \ ++ postuninstall_cmds_RC \ ++ old_archive_from_expsyms_cmds_RC \ ++ allow_undefined_flag_RC \ ++ no_undefined_flag_RC \ ++ export_symbols_cmds_RC \ ++ hardcode_libdir_flag_spec_RC \ ++ hardcode_libdir_flag_spec_ld_RC \ ++ hardcode_libdir_separator_RC \ ++ hardcode_automatic_RC \ ++ module_cmds_RC \ ++ module_expsym_cmds_RC \ ++ lt_cv_prog_compiler_c_o_RC \ ++ fix_srcfile_path_RC \ ++ exclude_expsyms_RC \ ++ include_expsyms_RC; do + + case $var in +- reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ +- extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ ++ old_archive_cmds_RC | \ ++ old_archive_from_new_cmds_RC | \ ++ archive_cmds_RC | \ ++ archive_expsym_cmds_RC | \ ++ module_cmds_RC | \ ++ module_expsym_cmds_RC | \ ++ old_archive_from_expsyms_cmds_RC | \ ++ export_symbols_cmds_RC | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ +- finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; +@@ -6115,43 +19050,16 @@ + esac + done + +- cat <<__EOF__ > "${ofile}T" +-#! $SHELL +- +-# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996-2000 Free Software Foundation, Inc. +-# Originally by Gordon Matzigkeit , 1996 +-# +-# 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. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="sed -e s/^X//" ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac + +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ++cfgfile="$ofile" + +-# ### BEGIN LIBTOOL CONFIG ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname + + # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +@@ -6165,7 +19073,10 @@ + build_old_libs=$enable_static + + # Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$need_lc ++build_libtool_need_lc=$archive_cmds_need_lc_RC ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + + # Whether or not to optimize for fast installation. + fast_install=$enable_fast_install +@@ -6173,6 +19084,12 @@ + # The host system. + host_alias=$host_alias + host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os + + # An echo program that does not interpret backslashes. + echo=$lt_echo +@@ -6181,14 +19098,23 @@ + AR=$lt_AR + AR_FLAGS=$lt_AR_FLAGS + +-# The default C compiler. +-CC=$lt_CC ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_compiler_RC + + # Is the compiler the GNU C compiler? +-with_gcc=$GCC ++with_gcc=$GCC_RC ++ ++# An ERE matcher. ++EGREP=$lt_EGREP + + # The linker used to build libraries. +-LD=$lt_LD ++LD=$lt_LD_RC + + # Whether we need hard or soft links. + LN_S=$lt_LN_S +@@ -6197,7 +19123,7 @@ + NM=$lt_NM + + # A symbol stripping program +-STRIP=$STRIP ++STRIP=$lt_STRIP + + # Used to examine libraries when file_magic_cmd begins "file" + MAGIC_CMD=$MAGIC_CMD +@@ -6219,7 +19145,7 @@ + reload_cmds=$lt_reload_cmds + + # How to pass a linker flag through the compiler. +-wl=$lt_wl ++wl=$lt_lt_prog_compiler_wl_RC + + # Object file suffix (normally "o"). + objext="$ac_objext" +@@ -6227,20 +19153,23 @@ + # Old archive suffix (normally "a"). + libext="$libext" + ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ + # Executable file suffix (normally ""). + exeext="$exeext" + + # Additional compiler flags for building library objects. +-pic_flag=$lt_pic_flag ++pic_flag=$lt_lt_prog_compiler_pic_RC + pic_mode=$pic_mode + +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_compiler_c_o ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len + +-# Can we write directly to a .lo ? +-compiler_o_lo=$lt_compiler_o_lo ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +-# Must we lock files when doing compilation ? ++# Must we lock files when doing compilation? + need_locks=$lt_need_locks + + # Do we need the lib prefix for modules? +@@ -6259,19 +19188,19 @@ + dlopen_self_static=$enable_dlopen_self_static + + # Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_link_static_flag ++link_static_flag=$lt_lt_prog_compiler_static_RC + + # Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_no_builtin_flag ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + + # Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + + # Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + + # Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + + # Library versioning type. + version_type=$version_type +@@ -6288,26 +19217,50 @@ + + # Commands used to build and install an old-style archive. + RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds ++old_archive_cmds=$lt_old_archive_cmds_RC + old_postinstall_cmds=$lt_old_postinstall_cmds + old_postuninstall_cmds=$lt_old_postuninstall_cmds + + # Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + + # Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + + # Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds +-archive_expsym_cmds=$lt_archive_expsym_cmds ++archive_cmds=$lt_archive_cmds_RC ++archive_expsym_cmds=$lt_archive_expsym_cmds_RC + postinstall_cmds=$lt_postinstall_cmds + postuninstall_cmds=$lt_postuninstall_cmds + ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_module_cmds_RC ++module_expsym_cmds=$lt_module_expsym_cmds_RC ++ + # Commands to strip libraries. + old_striplib=$lt_old_striplib + striplib=$lt_striplib + ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_RC ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_RC ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_RC ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_RC ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_RC ++ + # Method to check whether dependent libraries are shared objects. + deplibs_check_method=$lt_deplibs_check_method + +@@ -6315,10 +19268,10 @@ + file_magic_cmd=$lt_file_magic_cmd + + # Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag ++allow_undefined_flag=$lt_allow_undefined_flag_RC + + # Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag ++no_undefined_flag=$lt_no_undefined_flag_RC + + # Commands used to finish a libtool library installation in a directory. + finish_cmds=$lt_finish_cmds +@@ -6327,13 +19280,13 @@ + finish_eval=$lt_finish_eval + + # Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_global_symbol_pipe ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + + # Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_global_symbol_to_cdecl ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + + # Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + + # This is the shared library runtime path variable. + runpath_var=$runpath_var +@@ -6345,36 +19298,45 @@ + shlibpath_overrides_runpath=$shlibpath_overrides_runpath + + # How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action ++hardcode_action=$hardcode_action_RC + + # Whether we should hardcode library paths into libraries. + hardcode_into_libs=$hardcode_into_libs + + # Flag to hardcode \$libdir into a binary during linking. + # This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + + # Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the + # resulting binary. +-hardcode_direct=$hardcode_direct ++hardcode_direct=$hardcode_direct_RC + + # Set to yes if using the -LDIR flag during linking hardcodes DIR into the + # resulting binary. +-hardcode_minus_L=$hardcode_minus_L ++hardcode_minus_L=$hardcode_minus_L_RC + + # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into + # the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var ++hardcode_shlibpath_var=$hardcode_shlibpath_var_RC ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_RC + + # Variables whose values should be saved in libtool wrapper scripts and + # restored at relink time. + variables_saved_for_relink="$variables_saved_for_relink" + + # Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs ++link_all_deplibs=$link_all_deplibs_RC + + # Compile-time system search path for libraries + sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +@@ -6383,233 +19345,78 @@ + sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + + # Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" ++fix_srcfile_path=$lt_fix_srcfile_path + + # Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols ++always_export_symbols=$always_export_symbols_RC + + # The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds ++export_symbols_cmds=$lt_export_symbols_cmds_RC + + # The commands to extract the exported symbol list from a shared archive. + extract_expsyms_cmds=$lt_extract_expsyms_cmds + + # Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms ++exclude_expsyms=$lt_exclude_expsyms_RC + + # Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms ++include_expsyms=$lt_include_expsyms_RC + +-# ### END LIBTOOL CONFIG ++# ### END LIBTOOL TAG CONFIG: $tagname + + __EOF__ + +- case $host_os in +- aix3*) +- cat <<\EOF >> "${ofile}T" + +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi + fi +-EOF +- ;; +- esac + +- case $host_os in +- cygwin* | mingw* | pw32* | os2*) +- cat <<'EOF' >> "${ofile}T" +- # This is a source program that is used to create dlls on Windows +- # Don't remove nor modify the starting and closing comments +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +- # This is a source program that is used to create import libraries +- # on Windows for dlls which lack them. Don't remove nor modify the +- # starting and closing comments +-# /* impgen.c starts here */ +-# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +-# +-# This file is part of GNU libtool. +-# +-# 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. +-# */ +-# +-# #include /* for printf() */ +-# #include /* for open(), lseek(), read() */ +-# #include /* for O_RDONLY, O_BINARY */ +-# #include /* for strdup() */ +-# +-# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +-# #ifndef O_BINARY +-# #define O_BINARY 0 +-# #endif +-# +-# static unsigned int +-# pe_get16 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[2]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 2); +-# return b[0] + (b[1]<<8); +-# } +-# +-# static unsigned int +-# pe_get32 (fd, offset) +-# int fd; +-# int offset; +-# { +-# unsigned char b[4]; +-# lseek (fd, offset, SEEK_SET); +-# read (fd, b, 4); +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# static unsigned int +-# pe_as32 (ptr) +-# void *ptr; +-# { +-# unsigned char *b = ptr; +-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +-# } +-# +-# int +-# main (argc, argv) +-# int argc; +-# char *argv[]; +-# { +-# int dll; +-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +-# unsigned long export_rva, export_size, nsections, secptr, expptr; +-# unsigned long name_rvas, nexp; +-# unsigned char *expdata, *erva; +-# char *filename, *dll_name; +-# +-# filename = argv[1]; +-# +-# dll = open(filename, O_RDONLY|O_BINARY); +-# if (dll < 1) +-# return 1; +-# +-# dll_name = filename; +-# +-# for (i=0; filename[i]; i++) +-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +-# dll_name = filename + i +1; +-# +-# pe_header_offset = pe_get32 (dll, 0x3c); +-# opthdr_ofs = pe_header_offset + 4 + 20; +-# num_entries = pe_get32 (dll, opthdr_ofs + 92); +-# +-# if (num_entries < 1) /* no exports */ +-# return 1; +-# +-# export_rva = pe_get32 (dll, opthdr_ofs + 96); +-# export_size = pe_get32 (dll, opthdr_ofs + 100); +-# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +-# secptr = (pe_header_offset + 4 + 20 + +-# pe_get16 (dll, pe_header_offset + 4 + 16)); +-# +-# expptr = 0; +-# for (i = 0; i < nsections; i++) +-# { +-# char sname[8]; +-# unsigned long secptr1 = secptr + 40 * i; +-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +-# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +-# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +-# lseek(dll, secptr1, SEEK_SET); +-# read(dll, sname, 8); +-# if (vaddr <= export_rva && vaddr+vsize > export_rva) +-# { +-# expptr = fptr + (export_rva - vaddr); +-# if (export_rva + export_size > vaddr + vsize) +-# export_size = vsize - (export_rva - vaddr); +-# break; +-# } +-# } +-# +-# expdata = (unsigned char*)malloc(export_size); +-# lseek (dll, expptr, SEEK_SET); +-# read (dll, expdata, export_size); +-# erva = expdata - export_rva; +-# +-# nexp = pe_as32 (expdata+24); +-# name_rvas = pe_as32 (expdata+32); +-# +-# printf ("EXPORTS\n"); +-# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) ++CC="$lt_save_CC" + +- mv -f "${ofile}T" "$ofile" || \ +- (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") +- chmod +x "$ofile" ++ ;; ++ ++ *) ++ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 ++echo "$as_me: error: Unsupported tag name: $tagname" >&2;} ++ { (exit 1); exit 1; }; } ++ ;; ++ esac ++ ++ # Append the new tag name to the list of available tags. ++ if test -n "$tagname" ; then ++ available_tags="$available_tags $tagname" ++ fi ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ # Now substitute the updated list of available tags. ++ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then ++ mv "${ofile}T" "$ofile" ++ chmod +x "$ofile" ++ else ++ rm -f "${ofile}T" ++ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 ++echo "$as_me: error: unable to update list of available tagged configurations." >&2;} ++ { (exit 1); exit 1; }; } ++ fi + fi + ++ ++ + # This can be used to rebuild libtool when needed + LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +@@ -6618,120 +19425,186 @@ + + # Prevent multiple expansion + +-ac_ext=cc ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-if test -n "$ac_tool_prefix"; then +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC ++if test -z "$CXX"; then ++ if test -n "$CCC"; then ++ CXX=$CCC ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:6631: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" +-echo "$as_me:6646: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + CXX=$ac_cv_prog_CXX + if test -n "$CXX"; then +- echo "$as_me:6654: result: $CXX" >&5 +-echo "${ECHO_T}$CXX" >&6 ++ { echo "$as_me:$LINENO: result: $CXX" >&5 ++echo "${ECHO_T}$CXX" >&6; } + else +- echo "$as_me:6657: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CXX" && break + done + fi + if test -z "$CXX"; then + ac_ct_CXX=$CXX +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:6670: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_ac_ct_CXX="$ac_prog" +-echo "$as_me:6685: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_ac_ct_CXX="$ac_prog" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi + done ++done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CXX=$ac_cv_prog_ac_ct_CXX + if test -n "$ac_ct_CXX"; then +- echo "$as_me:6693: result: $ac_ct_CXX" >&5 +-echo "${ECHO_T}$ac_ct_CXX" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 ++echo "${ECHO_T}$ac_ct_CXX" >&6; } + else +- echo "$as_me:6696: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CXX" && break + done +-test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + +- CXX=$ac_ct_CXX ++ if test "x$ac_ct_CXX" = x; then ++ CXX="g++" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CXX=$ac_ct_CXX ++ fi + fi + ++ fi ++fi + # Provide some information about the compiler. +-echo "$as_me:6708:" \ +- "checking for C++ compiler version" >&5 ++echo "$as_me:$LINENO: checking for C++ compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:6711: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? +- echo "$as_me:6714: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:6716: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? +- echo "$as_me:6719: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:6721: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? +- echo "$as_me:6724: \$? = $ac_status" >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:6727: checking whether we are using the GNU C++ compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } + if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 6733 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -6745,41 +19618,54 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6748: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6751: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6754: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6757: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_compiler_gnu=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:6769: result: $ac_cv_cxx_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } + GXX=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CXXFLAGS=${CXXFLAGS+set} + ac_save_CXXFLAGS=$CXXFLAGS +-CXXFLAGS="-g" +-echo "$as_me:6775: checking whether $CXX accepts -g" >&5 +-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 ++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF +-#line 6781 "configure" +-#include "confdefs.h" ++ ac_save_cxx_werror_flag=$ac_cxx_werror_flag ++ ac_cxx_werror_flag=yes ++ ac_cv_prog_cxx_g=no ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -6790,121 +19676,133 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6793: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6796: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6799: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6802: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_prog_cxx_g=no +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:6812: result: $ac_cv_prog_cxx_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +-if test "$ac_test_CXXFLAGS" = set; then +- CXXFLAGS=$ac_save_CXXFLAGS +-elif test $ac_cv_prog_cxx_g = yes; then +- if test "$GXX" = yes; then +- CXXFLAGS="-g -O2" +- else +- CXXFLAGS="-g" +- fi +-else +- if test "$GXX" = yes; then +- CXXFLAGS="-O2" +- else +- CXXFLAGS= +- fi +-fi +-for ac_declaration in \ +- ''\ +- '#include ' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-#line 6839 "configure" +-#include "confdefs.h" +-#include +-$ac_declaration ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CXXFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6852: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6855: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6858: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6861: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + : + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-continue +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-#line 6871 "configure" +-#include "confdefs.h" +-$ac_declaration ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:6883: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:6886: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:6889: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:6892: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } ++if test "$ac_test_CXXFLAGS" = set; then ++ CXXFLAGS=$ac_save_CXXFLAGS ++elif test $ac_cv_prog_cxx_g = yes; then ++ if test "$GXX" = yes; then ++ CXXFLAGS="-g -O2" ++ else ++ CXXFLAGS="-g" ++ fi ++else ++ if test "$GXX" = yes; then ++ CXXFLAGS="-O2" ++ else ++ CXXFLAGS= ++ fi ++fi + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -6913,8 +19811,8 @@ + + depcc="$CXX" am_compiler_list= + +-echo "$as_me:6916: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6929,18 +19827,34 @@ + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. +- echo '#include "conftest.h"' > conftest.c +- echo 'int i;' > conftest.h +- echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) +@@ -6958,13 +19872,26 @@ + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ +- source=conftest.c object=conftest.o \ +- depfile=conftest.Po tmpdepfile=conftest.TPo \ +- $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && +- grep conftest.h conftest.Po > /dev/null 2>&1 && ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- am_cv_CXX_dependencies_compiler_type=$depmode +- break ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CXX_dependencies_compiler_type=$depmode ++ break ++ fi + fi + done + +@@ -6975,22 +19902,37 @@ + fi + + fi +-echo "$as_me:6978: result: $am_cv_CXX_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +-CXXDEPMODE="depmode=$am_cv_CXX_dependencies_compiler_type" ++{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } ++CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + +-ac_ext=cc ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then ++ am__fastdepCXX_TRUE= ++ am__fastdepCXX_FALSE='#' ++else ++ am__fastdepCXX_TRUE='#' ++ am__fastdepCXX_FALSE= ++fi ++ ++ ++ ++ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +-echo "$as_me:6988: checking whether $CXX works" >&5 +-echo $ECHO_N "checking whether $CXX works... $ECHO_C" >&6 + ++{ echo "$as_me:$LINENO: checking whether $CXX works" >&5 ++echo $ECHO_N "checking whether $CXX works... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 6992 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7001,26 +19943,34 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7004: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7007: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7010: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7013: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:7015: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + LIBFCGIXX=libfcgi++.la + ECHO_CPP=echo-cpp${EXEEXT} +- echo "$as_me:7019: checking whether cin has a streambuf assignment operator" >&5 +-echo $ECHO_N "checking whether cin has a streambuf assignment operator... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether cin has a streambuf assignment operator" >&5 ++echo $ECHO_N "checking whether cin has a streambuf assignment operator... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7022 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7031,36 +19981,46 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7034: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7037: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7040: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7043: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:7045: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_IOSTREAM_WITHASSIGN_STREAMBUF 1 +-EOF ++_ACEOF + + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:7055: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +- echo "$as_me:7059: checking whether char_type is defined in the context of streambuf" >&5 +-echo $ECHO_N "checking whether char_type is defined in the context of streambuf... $ECHO_C" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ { echo "$as_me:$LINENO: checking whether char_type is defined in the context of streambuf" >&5 ++echo $ECHO_N "checking whether char_type is defined in the context of streambuf... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7062 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7071,38 +20031,49 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7074: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7077: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7080: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7083: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:7085: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_STREAMBUF_CHAR_TYPE 1 +-EOF ++_ACEOF + + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:7095: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:7102: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++ + + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -7110,169 +20081,289 @@ + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-echo "$as_me:7113: checking for gethostbyname in -lnsl" >&5 +-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 ++ ++ ++{ echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } + if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lnsl $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line 7121 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char gethostbyname (); + int + main () + { +-gethostbyname (); ++return gethostbyname (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7140: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7143: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7146: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7149: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_nsl_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_nsl_gethostbyname=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_nsl_gethostbyname=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:7160: result: $ac_cv_lib_nsl_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } + if test $ac_cv_lib_nsl_gethostbyname = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define HAVE_LIBNSL 1 +-EOF ++_ACEOF + + LIBS="-lnsl $LIBS" + + fi + +-echo "$as_me:7171: checking for socket in -lsocket" >&5 +-echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 ++echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; } + if test "${ac_cv_lib_socket_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_check_lib_save_LIBS=$LIBS + LIBS="-lsocket $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line 7179 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char socket (); + int + main () + { +-socket (); ++return socket (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7198: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7201: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7204: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7207: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_socket_socket=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_lib_socket_socket=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_lib_socket_socket=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:7218: result: $ac_cv_lib_socket_socket" >&5 +-echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; } + if test $ac_cv_lib_socket_socket = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define HAVE_LIBSOCKET 1 +-EOF ++_ACEOF + + LIBS="-lsocket $LIBS" + + fi + ++ ++ ++ + acx_pthread_ok=no + + # First, check if the POSIX threads header, pthread.h, is available. + # If it isn't, don't bother looking for the threads libraries. +-echo "$as_me:7233: checking for pthread.h" >&5 +-echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ { echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } + if test "${ac_cv_header_pthread_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } + else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7239 "configure" +-#include "confdefs.h" ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking pthread.h usability" >&5 ++echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + #include + _ACEOF +-if { (eval echo "$as_me:7243: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:7249: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else +- ac_cpp_err=yes ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-if test -z "$ac_cpp_err"; then +- ac_cv_header_pthread_h=yes ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking pthread.h presence" >&5 ++echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_cv_header_pthread_h=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: pthread.h: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: pthread.h: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: pthread.h: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: pthread.h: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: pthread.h: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for pthread.h" >&5 ++echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } ++if test "${ac_cv_header_pthread_h+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_header_pthread_h=$ac_header_preproc ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 ++echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } ++ + fi +-echo "$as_me:7268: result: $ac_cv_header_pthread_h" >&5 +-echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 + if test $ac_cv_header_pthread_h = yes; then + : + else + acx_pthread_ok=noheader + fi + ++ ++ + # We must check for the threads library under a number of different + # names; the ordering is very important because some systems + # (e.g. DEC) have both -lpthread and -lpthreads, where one of the +@@ -7286,47 +20377,60 @@ + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" +- echo "$as_me:7289: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +-echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 ++echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7292 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char pthread_join (); + int + main () + { +-pthread_join (); ++return pthread_join (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7311: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7314: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7317: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7320: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + acx_pthread_ok=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +- echo "$as_me:7328: result: $acx_pthread_ok" >&5 +-echo "${ECHO_T}$acx_pthread_ok" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 ++echo "${ECHO_T}$acx_pthread_ok" >&6; } + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +@@ -7379,19 +20483,19 @@ + + case $flag in + none) +- echo "$as_me:7382: checking whether pthreads work without any flags" >&5 +-echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5 ++echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; } + ;; + + -*) +- echo "$as_me:7387: checking whether pthreads work with $flag" >&5 +-echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5 ++echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; } + PTHREAD_CFLAGS="$flag" + ;; + + *) +- echo "$as_me:7393: checking for the pthreads library -l$flag" >&5 +-echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5 ++echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; } + PTHREAD_LIBS="-l$flag" + ;; + esac +@@ -7411,8 +20515,11 @@ + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat >conftest.$ac_ext <<_ACEOF +-#line 7414 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7425,29 +20532,39 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7428: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7431: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7434: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7437: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + acx_pthread_ok=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + +- echo "$as_me:7449: result: $acx_pthread_ok" >&5 +-echo "${ECHO_T}$acx_pthread_ok" >&6 ++ { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5 ++echo "${ECHO_T}$acx_pthread_ok" >&6; } + if test "x$acx_pthread_ok" = xyes; then + break; + fi +@@ -7466,11 +20583,14 @@ + + # Detect AIX lossage: threads are created detached by default + # and the JOINABLE attribute has a nonstandard name (UNDETACHED). +- echo "$as_me:7469: checking for joinable pthread attribute" >&5 +-echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5 ++echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7472 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7481,28 +20601,40 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7484: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7487: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7490: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7493: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ok=PTHREAD_CREATE_JOINABLE + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ok=unknown ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ok=unknown + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + if test x"$ok" = xunknown; then + cat >conftest.$ac_ext <<_ACEOF +-#line 7504 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -7513,48 +20645,57 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:7516: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7519: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:7522: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7525: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ok=PTHREAD_CREATE_UNDETACHED + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ok=unknown ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ok=unknown + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi + if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define PTHREAD_CREATE_JOINABLE $ok +-EOF ++_ACEOF + + fi +- echo "$as_me:7542: result: ${ok}" >&5 +-echo "${ECHO_T}${ok}" >&6 ++ { echo "$as_me:$LINENO: result: ${ok}" >&5 ++echo "${ECHO_T}${ok}" >&6; } + if test x"$ok" = xunknown; then +- { echo "$as_me:7545: WARNING: we do not know how to create joinable pthreads" >&5 ++ { echo "$as_me:$LINENO: WARNING: we do not know how to create joinable pthreads" >&5 + echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;} + fi + +- echo "$as_me:7549: checking if more special flags are required for pthreads" >&5 +-echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5 ++echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; } + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; + *solaris* | alpha*-osf*) flag="-D_REENTRANT";; + esac +- echo "$as_me:7556: result: ${flag}" >&5 +-echo "${ECHO_T}${flag}" >&6 ++ { echo "$as_me:$LINENO: result: ${flag}" >&5 ++echo "${ECHO_T}${flag}" >&6; } + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi +@@ -7565,41 +20706,50 @@ + # More AIX lossage: must compile with cc_r + # Extract the first word of "cc_r", so it can be a program name with args. + set dummy cc_r; ac_word=$2 +-echo "$as_me:7568: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. + else +- ac_save_IFS=$IFS; IFS=$ac_path_separator +-ac_dummy="$PATH" +-for ac_dir in $ac_dummy; do +- IFS=$ac_save_IFS +- test -z "$ac_dir" && ac_dir=. +- $as_executable_p "$ac_dir/$ac_word" || continue +-ac_cv_prog_PTHREAD_CC="cc_r" +-echo "$as_me:7583: found $ac_dir/$ac_word" >&5 +-break ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_PTHREAD_CC="cc_r" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" + fi + fi + PTHREAD_CC=$ac_cv_prog_PTHREAD_CC + if test -n "$PTHREAD_CC"; then +- echo "$as_me:7592: result: $PTHREAD_CC" >&5 +-echo "${ECHO_T}$PTHREAD_CC" >&6 ++ { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5 ++echo "${ECHO_T}$PTHREAD_CC" >&6; } + else +- echo "$as_me:7595: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + else + PTHREAD_CC="$CC" + fi + ++ ++ ++ ++ + # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: + if test x"$acx_pthread_ok" = xyes; then + THREADED=threaded${EXEEXT} +@@ -7609,520 +20759,466 @@ + + fi + +-echo "$as_me:7612: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7618 "configure" +-#include "confdefs.h" +-#include +-#include +-#include +-#include +- +-_ACEOF +-if { (eval echo "$as_me:7626: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +- ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:7632: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then +- ac_cv_header_stdc=yes +-else +- echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- ac_cv_header_stdc=no +-fi +-rm -f conftest.err conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-#line 7654 "configure" +-#include "confdefs.h" +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "memchr" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat >conftest.$ac_ext <<_ACEOF +-#line 7672 "configure" +-#include "confdefs.h" +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "free" >/dev/null 2>&1; then +- : +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then +- : +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7693 "configure" +-#include "confdefs.h" +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif +- +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); +-} +-_ACEOF +-rm -f conftest$ac_exeext +-if { (eval echo "$as_me:7719: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:7722: \$? = $ac_status" >&5 +- (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:7724: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:7727: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: program exited with status $ac_status" >&5 +-echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_header_stdc=no +-fi +-rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +-fi +-fi +-fi +-echo "$as_me:7740: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 +-if test $ac_cv_header_stdc = yes; then +- +-cat >>confdefs.h <<\EOF +-#define STDC_HEADERS 1 +-EOF +- +-fi +- +-# On IRIX 5.3, sys/types and inttypes.h are conflicting. +- +-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h +-do +-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:7756: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7762 "configure" +-#include "confdefs.h" +-$ac_includes_default +-#include <$ac_header> +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7768: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7771: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7774: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:7777: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- eval "$as_ac_Header=yes" +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_Header=no" +-fi +-rm -f conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:7787: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +-if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_cv_prog_cc_stdc=no +-ac_save_CC=$CC +-cat >conftest.$ac_ext <<_ACEOF +-#line 7805 "configure" +-#include "confdefs.h" +-#include +-#include +-#include +-#include +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) +-{ +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; +-int +-main () +-{ +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +- ; +- return 0; +-} +-_ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +-do +- CC="$ac_save_CC $ac_arg" +- rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7854: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7857: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7860: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:7863: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break +-else +- echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-fi +-rm -f conftest.$ac_objext +-done +-rm -f conftest.$ac_ext conftest.$ac_objext +-CC=$ac_save_CC + +-fi + +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:7880: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; +- *) +- echo "$as_me:7883: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; +-esac + +- echo "$as_me:7888: checking for ssize_t" >&5 +-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ssize_t" >&5 ++echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } + if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 7894 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + $ac_includes_default ++typedef ssize_t ac__type_new_; + int + main () + { +-if ((ssize_t *) 0) ++if ((ac__type_new_ *) 0) + return 0; +-if (sizeof (ssize_t)) ++if (sizeof (ac__type_new_)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:7909: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:7912: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:7915: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:7918: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_type_ssize_t=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_type_ssize_t=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_type_ssize_t=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:7928: result: $ac_cv_type_ssize_t" >&5 +-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 ++echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } + if test $ac_cv_type_ssize_t = yes; then + : + else + +-cat >>confdefs.h <>confdefs.h <<_ACEOF + #define ssize_t int +-EOF ++_ACEOF + + fi + +- echo "$as_me:7940: checking for sun_len in sys/un.h" >&5 +-echo $ECHO_N "checking for sun_len in sys/un.h... $ECHO_C" >&6 ++ ++ { echo "$as_me:$LINENO: checking for sun_len in sys/un.h" >&5 ++echo $ECHO_N "checking for sun_len in sys/un.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7943 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "sun_len" >/dev/null 2>&1; then +- echo "$as_me:7950: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "sun_len" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_SOCKADDR_UN_SUN_LEN 1 +-EOF ++_ACEOF + + else +- echo "$as_me:7958: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + +- echo "$as_me:7963: checking for fpos_t in stdio.h" >&5 +-echo $ECHO_N "checking for fpos_t in stdio.h... $ECHO_C" >&6 ++ ++ { echo "$as_me:$LINENO: checking for fpos_t in stdio.h" >&5 ++echo $ECHO_N "checking for fpos_t in stdio.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 7966 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "fpos_t" >/dev/null 2>&1; then +- echo "$as_me:7973: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "fpos_t" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_FPOS 1 +-EOF ++_ACEOF + + else +- echo "$as_me:7981: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + ++ ++ ++ ++ ++ + for ac_header in sys/socket.h netdb.h netinet/in.h arpa/inet.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:7989: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 7995 "configure" +-#include "confdefs.h" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:7999: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:8005: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else +- ac_cpp_err=yes ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-if test -z "$ac_cpp_err"; then +- eval "$as_ac_Header=yes" ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- eval "$as_ac_Header=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ + fi +-echo "$as_me:8024: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-EOF ++_ACEOF + + fi ++ + done + ++ ++ ++ ++ + for ac_header in sys/time.h limits.h sys/param.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:8037: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-#line 8043 "configure" +-#include "confdefs.h" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:8047: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- egrep -v '^ *\+' conftest.er1 >conftest.err ++ grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 +- echo "$as_me:8053: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- else +- ac_cpp_err= +- fi ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_header_compiler=yes + else +- ac_cpp_err=yes ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_compiler=no + fi +-if test -z "$ac_cpp_err"; then +- eval "$as_ac_Header=yes" ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <$ac_header> ++_ACEOF ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then ++ ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +- cat conftest.$ac_ext >&5 +- eval "$as_ac_Header=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes ++ ;; ++ no:yes:* ) ++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ++ ++ ;; ++esac ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ eval "$as_ac_Header=\$ac_header_preproc" ++fi ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } ++ + fi +-echo "$as_me:8072: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + if test `eval echo '${'$as_ac_Header'}'` = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-EOF ++_ACEOF + + fi ++ + done + +- echo "$as_me:8082: checking for a fileno() prototype in stdio.h" >&5 +-echo $ECHO_N "checking for a fileno() prototype in stdio.h... $ECHO_C" >&6 ++ ++ { echo "$as_me:$LINENO: checking for a fileno() prototype in stdio.h" >&5 ++echo $ECHO_N "checking for a fileno() prototype in stdio.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 8085 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "fileno" >/dev/null 2>&1; then +- echo "$as_me:8092: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "fileno" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_FILENO_PROTO 1 +-EOF ++_ACEOF + + else +- echo "$as_me:8100: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + ++ + if test "$HAVE_SYS_SOCKET_H"; then +- echo "$as_me:8106: checking for socklen_t in sys/socket.h" >&5 +-echo $ECHO_N "checking for socklen_t in sys/socket.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for socklen_t in sys/socket.h" >&5 ++echo $ECHO_N "checking for socklen_t in sys/socket.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 8109 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- egrep "socklen_t" >/dev/null 2>&1; then +- echo "$as_me:8116: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ $EGREP "socklen_t" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_SOCKLEN 1 +-EOF ++_ACEOF + + else +- echo "$as_me:8124: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + rm -f conftest* + +@@ -8131,21 +21227,21 @@ + #-------------------------------------------------------------------- + # Do we need cross-process locking on this platform? + #-------------------------------------------------------------------- +- echo "$as_me:8134: checking whether cross-process locking is required by accept()" >&5 +-echo $ECHO_N "checking whether cross-process locking is required by accept()... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether cross-process locking is required by accept()" >&5 ++echo $ECHO_N "checking whether cross-process locking is required by accept()... $ECHO_C" >&6; } + case "`uname -sr`" in + IRIX\ 5.* | SunOS\ 5.* | UNIX_System_V\ 4.0) +- echo "$as_me:8138: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define USE_LOCKING 1 +-EOF ++_ACEOF + + ;; + *) +- echo "$as_me:8147: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + ;; + esac + +@@ -8153,11 +21249,14 @@ + # Does va_arg(arg, long double) crash the compiler? + # hpux 9.04 compiler does and so does Stratus FTX (uses HP's compiler) + #-------------------------------------------------------------------- +- echo "$as_me:8156: checking whether va_arg(arg, long double) crashes the compiler" >&5 +-echo $ECHO_N "checking whether va_arg(arg, long double) crashes the compiler... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether va_arg(arg, long double) crashes the compiler" >&5 ++echo $ECHO_N "checking whether va_arg(arg, long double) crashes the compiler... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +-#line 8159 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #include + int + main () +@@ -8168,40 +21267,50 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:8171: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:8174: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:8177: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8180: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:8182: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-echo "$as_me:8187: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define HAVE_VA_ARG_LONG_DOUBLE_BUG 1 +-EOF ++_ACEOF + + fi +-rm -f conftest.$ac_objext conftest.$ac_ext + +- echo "$as_me:8197: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++ { echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 8203 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + + int + main () +@@ -8210,10 +21319,10 @@ + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -8222,16 +21331,17 @@ + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -8250,7 +21360,9 @@ + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -8258,158 +21370,217 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:8261: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:8264: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:8267: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8270: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-ac_cv_c_const=no ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_c_const=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:8280: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + +-cat >>confdefs.h <<\EOF ++cat >>confdefs.h <<\_ACEOF + #define const +-EOF ++_ACEOF + + fi + ++ ++ ++ + for ac_func in strerror + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:8293: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line 8299 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case declares $ac_func. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ + /* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $ac_func (); below. */ +-#include +-/* Override any gcc2 internal prototype to avoid an error. */ ++ which can conflict with char $ac_func (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $ac_func ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); +-char (*f) (); +- +-int +-main () +-{ + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-f = $ac_func; + #endif + ++int ++main () ++{ ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:8330: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:8333: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:8336: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8339: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 +-eval "$as_ac_var=no" ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ eval "$as_ac_var=no" + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:8349: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then +- cat >>confdefs.h <>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-EOF ++_ACEOF + + else +- LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ++ case " $LIBOBJS " in ++ *" $ac_func.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ++ ;; ++esac ++ + fi + done + +-echo "$as_me:8361: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++ ++ ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +-#line 8369 "configure" +-#include "confdefs.h" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ + #ifndef __cplusplus +-static $ac_kw int static_foo () {return 0; } +-$ac_kw int foo () {return 0; } ++typedef int foo_t; ++static $ac_kw foo_t static_foo () {return 0; } ++$ac_kw foo_t foo () {return 0; } + #endif + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:8378: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:8381: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:8384: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? +- echo "$as_me:8387: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 +-cat conftest.$ac_ext >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:8398: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } ++ ++ + case $ac_cv_c_inline in + inline | yes) ;; +- no) +-cat >>confdefs.h <<\EOF +-#define inline +-EOF +- ;; +- *) cat >>confdefs.h <>confdefs.h <<_ACEOF ++#ifndef __cplusplus ++#define inline $ac_val ++#endif ++_ACEOF ++ ;; + esac + ++ + #-------------------------------------------------------------------- + # This is a little hokie in that it avoids including config.guess + # and config.sub in the distribution, but its been working so far. +@@ -8418,14 +21589,16 @@ + #-------------------------------------------------------------------- + SYSTEM=unix + ++ ++ + ansi= + if test -z "$ansi"; then + msg="for C compiler warning flags" + else + msg="for C compiler warning and ANSI conformance flags" + fi +- echo "$as_me:8427: checking $msg" >&5 +-echo $ECHO_N "checking $msg... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking $msg" >&5 ++echo $ECHO_N "checking $msg... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_warnings+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8496,11 +21669,13 @@ + fi + + fi +-echo "$as_me:8499: result: $ac_cv_prog_cc_warnings" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_warnings" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_warnings" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_warnings" >&6; } ++ + + ac_config_files="$ac_config_files Makefile cgi-fcgi/Makefile include/Makefile libfcgi/Makefile examples/Makefile" + ++ + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure + # tests run on this system so they can be shared between configure +@@ -8511,7 +21686,7 @@ + # config.status only pays attention to the cache file if you give it + # the --recheck option to rerun configure. + # +-# `ac_cv_env_foo' variables (set or unset) will be overriden when ++# `ac_cv_env_foo' variables (set or unset) will be overridden when + # loading this file, other *unset* `ac_cv_foo' will be assigned the + # following values. + +@@ -8519,39 +21694,58 @@ + + # The following way of writing the cache mishandles newlines in values, + # but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. ++# So, we kill variables containing newlines. + # Ultrix sh set writes to stderr and can't be redirected directly, + # and sets the high bit in the cache file unless we assign to the vars. +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if cmp -s $cache_file confcache; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -8560,128 +21754,375 @@ + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- + DEFS=-DHAVE_CONFIG_H + ++ac_libobjs= ++ac_ltlibobjs= ++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIBOBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then ++ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&5 ++echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. ++Usually this means the macro was only invoked conditionally." >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ + : ${CONFIG_STATUS=./config.status} + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ echo "$as_me:8583: creating $CONFIG_STATUS" >&5 ++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 + echo "$as_me: creating $CONFIG_STATUS" >&6;} + cat >$CONFIG_STATUS <<_ACEOF + #! $SHELL +-# Generated automatically by configure. ++# Generated by $as_me. + # Run this file to recreate the current configuration. + # Compiler output produced by configure, useful for debugging + # configure, is in config.log if it exists. + + debug=false ++ac_cs_recheck=false ++ac_cs_silent=false + SHELL=\${CONFIG_SHELL-$SHELL} +-ac_cs_invocation="\$0 \$@" +- + _ACEOF + +-cat >>$CONFIG_STATUS <<\_ACEOF +-# Be Bourne compatible +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +- emulate sh +- NULLCMD=: +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++cat >>$CONFIG_STATUS <<\_ACEOF ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false + fi + +-# Name of the executable. +-as_me=`echo "$0" |sed 's,.*[\\/],,'` ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + +-as_executable_p="test -f" ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi + +-# Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +- as_unset=unset ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' + else +- as_unset=false ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' + fi ++as_executable_p=$as_test_x + +-# NLS nuisances. +-$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +-$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +-$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +-$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +-$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +-$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +-$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +-$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +-# CDPATH. +-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + + exec 6>&1 + +-_ACEOF ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by $as_me, which was ++generated by GNU Autoconf 2.61. Invocation command line was + +-# Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ + +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" + +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++_ACEOF + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++cat >>$CONFIG_STATUS <<_ACEOF ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-cat >>$CONFIG_STATUS <<\EOF ++_ACEOF + ++cat >>$CONFIG_STATUS <<\_ACEOF + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -8689,13 +22130,14 @@ + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit ++ -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE ++ instantiate the configuration file FILE + --header=FILE[:TEMPLATE] +- instantiate the configuration header FILE ++ instantiate the configuration header FILE + + Configuration files: + $config_files +@@ -8707,23 +22149,25 @@ + $config_commands + + Report bugs to ." +-EOF + +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.52, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" +-EOF + +-cat >>$CONFIG_STATUS <<\EOF ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF + # If no file are specified by the user, then we need to provide default + # value. By we need to know if files were specified by the user. + ac_need_defaults=: +@@ -8731,108 +22175,113 @@ + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` +- shift +- set dummy "$ac_option" "$ac_optarg" ${1+"$@"} +- shift ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift + ;; +- -*);; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_need_defaults=false;; + esac + +- case $1 in ++ case $ac_option in + # Handling of the options. +-EOF +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:8759: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) +- shift +- CONFIG_FILES="$CONFIG_FILES $1" ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) +- shift +- CONFIG_HEADERS="$CONFIG_HEADERS $1" ++ $ac_shift ++ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; + + # This is an error. +- -*) { { echo "$as_me:8778: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + +- *) ac_config_targets="$ac_config_targets $1" ;; ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift + done + +-exec 5>>config.log +-cat >&5 << _ACEOF ++ac_configure_extra_args= + +-## ----------------------- ## +-## Running config.status. ## +-## ----------------------- ## ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi + +-This file was extended by $as_me 2.52, executed with +- CONFIG_FILES = $CONFIG_FILES +- CONFIG_HEADERS = $CONFIG_HEADERS +- CONFIG_LINKS = $CONFIG_LINKS +- CONFIG_COMMANDS = $CONFIG_COMMANDS +- > $ac_cs_invocation +-on `(hostname || uname -n) 2>/dev/null | sed 1q` ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++if \$ac_cs_recheck; then ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++fi + + _ACEOF +-EOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +-AMDEP_TRUE="$AMDEP_TRUE" +-ac_aux_dir="$ac_aux_dir" ++_ACEOF + +-EOF ++cat >>$CONFIG_STATUS <<\_ACEOF + +-cat >>$CONFIG_STATUS <<\EOF ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "cgi-fcgi/Makefile" ) CONFIG_FILES="$CONFIG_FILES cgi-fcgi/Makefile" ;; +- "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; +- "libfcgi/Makefile" ) CONFIG_FILES="$CONFIG_FILES libfcgi/Makefile" ;; +- "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; +- "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; +- "fcgi_config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS fcgi_config.h" ;; +- *) { { echo "$as_me:8830: error: invalid argument: $ac_config_target" >&5 ++ case $ac_config_target in ++ "fcgi_config.h") CONFIG_HEADERS="$CONFIG_HEADERS fcgi_config.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "cgi-fcgi/Makefile") CONFIG_FILES="$CONFIG_FILES cgi-fcgi/Makefile" ;; ++ "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; ++ "libfcgi/Makefile") CONFIG_FILES="$CONFIG_FILES libfcgi/Makefile" ;; ++ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; ++ ++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac + done + ++ + # If the user did not use the arguments to specify the items to instantiate, + # then the envvar interface is used. Set only those that are not. + # We use the long form for the default assignment because of an extremely +@@ -8843,583 +22292,781 @@ + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + fi + +-# Create a temporary directory, and hook for its removal unless debugging. ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. + $debug || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 + } +- + # Create a (secure) tmp directory for tmp files. +-: ${TMPDIR=/tmp} ++ + { +- tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=$TMPDIR/cs$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { +- echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ++ echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-EOF +- +-cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@DEFS@,$DEFS,;t t +-s,@LIBS@,$LIBS,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@install_sh@,$install_sh,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@CPP@,$CPP,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@LN_S@,$LN_S,;t t +-s,@ECHO@,$ECHO,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@CXX@,$CXX,;t t +-s,@CXXFLAGS@,$CXXFLAGS,;t t +-s,@ac_ct_CXX@,$ac_ct_CXX,;t t +-s,@CXXDEPMODE@,$CXXDEPMODE,;t t +-s,@LIBFCGIXX@,$LIBFCGIXX,;t t +-s,@ECHO_CPP@,$ECHO_CPP,;t t +-s,@PTHREAD_CC@,$PTHREAD_CC,;t t +-s,@PTHREAD_LIBS@,$PTHREAD_LIBS,;t t +-s,@PTHREAD_CFLAGS@,$PTHREAD_CFLAGS,;t t +-s,@THREADED@,$THREADED,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@SYSTEM@,$SYSTEM,;t t +-CEOF ++if test -n "$CONFIG_FILES"; then + +-EOF ++_ACEOF + +- cat >>$CONFIG_STATUS <<\EOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++am__isrc!$am__isrc$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++CPP!$CPP$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++SED!$SED$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++LN_S!$LN_S$ac_delim ++ECHO!$ECHO$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++CXX!$CXX$ac_delim ++CXXFLAGS!$CXXFLAGS$ac_delim ++ac_ct_CXX!$ac_ct_CXX$ac_delim ++CXXDEPMODE!$CXXDEPMODE$ac_delim ++am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim ++am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++CXXCPP!$CXXCPP$ac_delim ++F77!$F77$ac_delim ++FFLAGS!$FFLAGS$ac_delim ++ac_ct_F77!$ac_ct_F77$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++LIBFCGIXX!$LIBFCGIXX$ac_delim ++ECHO_CPP!$ECHO_CPP$ac_delim ++PTHREAD_CC!$PTHREAD_CC$ac_delim ++PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim ++PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim ++THREADED!$THREADED$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++SYSTEM!$SYSTEM$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 14; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF + fi # test -n "$CONFIG_FILES" + +-EOF +-cat >>$CONFIG_STATUS <<\EOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then +- { case "$ac_dir" in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy="$ac_dir" +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || mkdir "$as_incr_dir" ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac + ;; + esac +-done; } +- +- ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" +- # A "../" for each directory in $ac_dir_suffix. +- ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` +- else +- ac_dir_suffix= ac_dots= +- fi + +- case $srcdir in +- .) ac_srcdir=. +- if test -z "$ac_dots"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_dots$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_dots$srcdir ;; ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; + esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_dots$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:9083: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated automatically by config.status. */ +- configure_input="Generated automatically from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:9101: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo $f;; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:9114: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +-EOF +-cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub + $extrasub +-EOF +-cat >>$CONFIG_STATUS <<\EOF ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-EOF +-cat >>$CONFIG_STATUS <<\EOF +- +-# +-# CONFIG_HEADER section. +-# ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} + +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' +- +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++_ACEOF + +- test x"$ac_file" != x- && { echo "$as_me:9175: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:9186: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo $f;; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:9199: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- +-EOF ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\EOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\(\([^ (][^ (]*\)([^)]*)\)[ ]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-EOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines + +-# This sed command replaces #undef with comments. This is necessary, for ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\EOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +-EOF ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' + +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null +-do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++while : ++do ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def ++_ACEOF ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # egrep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs +- +-cat >>$CONFIG_STATUS <<\EOF +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated automatically by config.status. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated automatically by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in ++rm -f conftest.defines conftest.tail ++ ++echo "ac_result=$ac_in" >>$CONFIG_STATUS ++cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then +- if cmp -s $ac_file $tmp/config.h 2>/dev/null; then +- { echo "$as_me:9316: $ac_file is unchanged" >&5 ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then ++ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then +- { case "$ac_dir" in +- [\\/]* | ?:[\\/]* ) as_incr_dir=;; +- *) as_incr_dir=.;; +-esac +-as_dummy="$ac_dir" +-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do +- case $as_mkdir_dir in +- # Skip DOS drivespec +- ?:) as_incr_dir=$as_mkdir_dir ;; +- *) +- as_incr_dir=$as_incr_dir/$as_mkdir_dir +- test -d "$as_incr_dir" || mkdir "$as_incr_dir" +- ;; +- esac +-done; } +- +- fi + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi +- # Run the commands associated with the file. +- case $ac_file in +- fcgi_config.h ) # update the timestamp +-echo timestamp >"./stamp-h1" +- ;; ++ rm -f "$tmp/out12" ++# Compute $ac_file's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $ac_file | $ac_file:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-EOF +-cat >>$CONFIG_STATUS <<\EOF ++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || ++$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X$ac_file : 'X\(//\)[^/]' \| \ ++ X$ac_file : 'X\(//\)$' \| \ ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || ++echo X$ac_file | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- +- case $ac_dest in +- default-1 ) +-test x"$AMDEP_TRUE" != x"" || +-for mf in $CONFIG_FILES; do +- case "$mf" in +- Makefile) dirpart=.;; +- */Makefile) dirpart=`echo "$mf" | sed -e 's|/[^/]*$||'`;; +- *) continue;; +- esac +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named `Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`echo "$file" | sed -e 's|/[^/]*$||'` +- $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir=$dirpart/$fdir ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; ++ + esac +-done +-EOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\EOF + + { (exit 0); exit 0; } +-EOF ++_ACEOF + chmod +x $CONFIG_STATUS + ac_clean_files=$ac_clean_files_save + ++ + # configure is writing to config.log, and then calls config.status. + # config.status does its own redirection, appending to config.log. + # Unfortunately, on DOS this fails, as config.log is still kept open +@@ -9430,8 +23077,11 @@ + # need to make the FD available again. + if test "$no_create" != yes; then + ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null +- $SHELL $CONFIG_STATUS || ac_cs_success=false ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. +--- libfcgi-2.4.0.orig/libfcgi/Makefile.in ++++ libfcgi-2.4.0/libfcgi/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -15,93 +16,205 @@ + + # $Id: Makefile.am,v 1.9 2001/12/22 03:16:20 robs Exp $ + +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++subdir = libfcgi ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(libdir)" ++libLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(lib_LTLIBRARIES) ++libfcgi___la_LIBADD = ++am__objects_1 = ++am_libfcgi___la_OBJECTS = $(am__objects_1) fcgio.lo ++libfcgi___la_OBJECTS = $(am_libfcgi___la_OBJECTS) ++libfcgi___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ ++ $(CXXFLAGS) $(libfcgi___la_LDFLAGS) $(LDFLAGS) -o $@ ++libfcgi_la_LIBADD = ++am_libfcgi_la_OBJECTS = $(am__objects_1) libfcgi_la-fcgiapp.lo \ ++ libfcgi_la-fcgi_stdio.lo libfcgi_la-os_@SYSTEM@.lo ++libfcgi_la_OBJECTS = $(am_libfcgi_la_OBJECTS) ++libfcgi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libfcgi_la_CFLAGS) \ ++ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++CXXLD = $(CXX) ++CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) ++DIST_SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ +- ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include +- + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ + $(INCLUDEDIR)/fcgimisc.h \ + $(INCLUDEDIR)/fcgi_stdio.h \ + $(INCLUDEDIR)/fcgios.h + +- + lib_LTLIBRARIES = libfcgi.la @LIBFCGIXX@ + EXTRA_LTLIBRARIES = libfcgi++.la +- + libfcgi_la_SOURCES = $(INCLUDE_FILES) \ + fcgiapp.c \ + fcgi_stdio.c \ +@@ -109,259 +222,225 @@ + + libfcgi_la_CC = @PTHREAD_CC@ + libfcgi_la_CFLAGS = @PTHREAD_CFLAGS@ +- + libfcgi___la_SOURCES = $(INCLUDE_FILES) \ + $(INCLUDEDIR)/fcgio.h \ + fcgio.cpp + + libfcgi___la_CFLAGS = @PTHREAD_CFLAGS@ + libfcgi___la_LDFLAGS = -lfcgi -rpath @libdir@ +-subdir = libfcgi +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(lib_LTLIBRARIES) +- +-libfcgi___la_LIBADD = +-am_libfcgi___la_OBJECTS = fcgio.lo +-libfcgi___la_OBJECTS = $(am_libfcgi___la_OBJECTS) +-libfcgi_la_LDFLAGS = +-libfcgi_la_LIBADD = +-am_libfcgi_la_OBJECTS = libfcgi_la-fcgiapp.lo libfcgi_la-fcgi_stdio.lo \ +- libfcgi_la-os_@SYSTEM@.lo +-libfcgi_la_OBJECTS = $(am_libfcgi_la_OBJECTS) +- +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/fcgio.Plo \ +-@AMDEP_TRUE@ $(DEPDIR)/libfcgi_la-fcgi_stdio.Plo \ +-@AMDEP_TRUE@ $(DEPDIR)/libfcgi_la-fcgiapp.Plo \ +-@AMDEP_TRUE@ $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CFLAGS = @CFLAGS@ +-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CXXFLAGS) $(CXXFLAGS) +-CXXLD = $(CXX) +-CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CXXFLAGS = @CXXFLAGS@ +-DIST_SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) +-DIST_COMMON = Makefile.am Makefile.in +-SOURCES = $(libfcgi___la_SOURCES) $(libfcgi_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .cpp .lo .o .obj +- +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libfcgi/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign libfcgi/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status ++ $(AUTOMAKE) --gnu libfcgi/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(libdir) ++ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- echo " $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p"; \ +- $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + + uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + + clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ++ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ++ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++ test "$$dir" != "$$p" || dir=.; \ ++ echo "rm -f \"$${dir}/so_locations\""; \ ++ rm -f "$${dir}/so_locations"; \ ++ done + libfcgi++.la: $(libfcgi___la_OBJECTS) $(libfcgi___la_DEPENDENCIES) +- $(CXXLINK) $(libfcgi___la_LDFLAGS) $(libfcgi___la_OBJECTS) $(libfcgi___la_LIBADD) $(LIBS) +-libfcgi_la-fcgiapp.lo: fcgiapp.c +-libfcgi_la-fcgi_stdio.lo: fcgi_stdio.c +-libfcgi_la-os_@SYSTEM@.lo: os_@SYSTEM@.c ++ $(libfcgi___la_LINK) $(libfcgi___la_OBJECTS) $(libfcgi___la_LIBADD) $(LIBS) + libfcgi.la: $(libfcgi_la_OBJECTS) $(libfcgi_la_DEPENDENCIES) +- $(LINK) -rpath $(libdir) $(libfcgi_la_LDFLAGS) $(libfcgi_la_OBJECTS) $(libfcgi_la_LIBADD) $(LIBS) ++ $(libfcgi_la_LINK) -rpath $(libdir) $(libfcgi_la_OBJECTS) $(libfcgi_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fcgio.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libfcgi_la-fcgi_stdio.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libfcgi_la-fcgiapp.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo@am__quote@ +- +-distclean-depend: +- -rm -rf $(DEPDIR) ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcgio.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfcgi_la-fcgi_stdio.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfcgi_la-fcgiapp.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo@am__quote@ + + .c.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `cygpath -w $<` ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +- +-libfcgi_la-fcgiapp.o: fcgiapp.c +-@AMDEP_TRUE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgiapp.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgiapp.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.o `test -f fcgiapp.c || echo '$(srcdir)/'`fcgiapp.c +- +-libfcgi_la-fcgiapp.obj: fcgiapp.c +-@AMDEP_TRUE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgiapp.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgiapp.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.obj `cygpath -w fcgiapp.c` ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + libfcgi_la-fcgiapp.lo: fcgiapp.c +-@AMDEP_TRUE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgiapp.Plo' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgiapp.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.lo `test -f fcgiapp.c || echo '$(srcdir)/'`fcgiapp.c +- +-libfcgi_la-fcgi_stdio.o: fcgi_stdio.c +-@AMDEP_TRUE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.o `test -f fcgi_stdio.c || echo '$(srcdir)/'`fcgi_stdio.c +- +-libfcgi_la-fcgi_stdio.obj: fcgi_stdio.c +-@AMDEP_TRUE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.obj `cygpath -w fcgi_stdio.c` ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -MT libfcgi_la-fcgiapp.lo -MD -MP -MF $(DEPDIR)/libfcgi_la-fcgiapp.Tpo -c -o libfcgi_la-fcgiapp.lo `test -f 'fcgiapp.c' || echo '$(srcdir)/'`fcgiapp.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libfcgi_la-fcgiapp.Tpo $(DEPDIR)/libfcgi_la-fcgiapp.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fcgiapp.c' object='libfcgi_la-fcgiapp.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgiapp.lo `test -f 'fcgiapp.c' || echo '$(srcdir)/'`fcgiapp.c + + libfcgi_la-fcgi_stdio.lo: fcgi_stdio.c +-@AMDEP_TRUE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.Plo' tmpdepfile='$(DEPDIR)/libfcgi_la-fcgi_stdio.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.lo `test -f fcgi_stdio.c || echo '$(srcdir)/'`fcgi_stdio.c +- +-libfcgi_la-os_@SYSTEM@.o: os_@SYSTEM@.c +-@AMDEP_TRUE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.o `test -f os_@SYSTEM@.c || echo '$(srcdir)/'`os_@SYSTEM@.c +- +-libfcgi_la-os_@SYSTEM@.obj: os_@SYSTEM@.c +-@AMDEP_TRUE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Po' tmpdepfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.obj `cygpath -w os_@SYSTEM@.c` ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -MT libfcgi_la-fcgi_stdio.lo -MD -MP -MF $(DEPDIR)/libfcgi_la-fcgi_stdio.Tpo -c -o libfcgi_la-fcgi_stdio.lo `test -f 'fcgi_stdio.c' || echo '$(srcdir)/'`fcgi_stdio.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libfcgi_la-fcgi_stdio.Tpo $(DEPDIR)/libfcgi_la-fcgi_stdio.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fcgi_stdio.c' object='libfcgi_la-fcgi_stdio.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-fcgi_stdio.lo `test -f 'fcgi_stdio.c' || echo '$(srcdir)/'`fcgi_stdio.c + + libfcgi_la-os_@SYSTEM@.lo: os_@SYSTEM@.c +-@AMDEP_TRUE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo' tmpdepfile='$(DEPDIR)/libfcgi_la-os_@SYSTEM@.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.lo `test -f os_@SYSTEM@.c || echo '$(srcdir)/'`os_@SYSTEM@.c +-CCDEPMODE = @CCDEPMODE@ ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -MT libfcgi_la-os_@SYSTEM@.lo -MD -MP -MF $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Tpo -c -o libfcgi_la-os_@SYSTEM@.lo `test -f 'os_@SYSTEM@.c' || echo '$(srcdir)/'`os_@SYSTEM@.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Tpo $(DEPDIR)/libfcgi_la-os_@SYSTEM@.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='os_@SYSTEM@.c' object='libfcgi_la-os_@SYSTEM@.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libfcgi_la_CFLAGS) $(CFLAGS) -c -o libfcgi_la-os_@SYSTEM@.lo `test -f 'os_@SYSTEM@.c' || echo '$(srcdir)/'`os_@SYSTEM@.c + + .cpp.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + + .cpp.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `cygpath -w $<` ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cpp.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +-CXXDEPMODE = @CXXDEPMODE@ +-uninstall-info-am: ++@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +-tags: TAGS ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -371,10 +450,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(libdir) +- ++ for dir in "$(DESTDIR)$(libdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -386,6 +465,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -393,7 +473,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -404,30 +484,42 @@ + mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-libtool distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: install-libLTLIBRARIES + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -435,19 +527,31 @@ + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-libLTLIBRARIES ++ ++.MAKE: install-am install-strip + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libLTLIBRARIES clean-libtool distclean distclean-compile \ +- distclean-depend distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-libLTLIBRARIES install-man install-strip installcheck \ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libLTLIBRARIES clean-libtool ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool tags uninstall \ +- uninstall-am uninstall-info-am uninstall-libLTLIBRARIES ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-libLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/config.guess ++++ libfcgi-2.4.0/config.guess +@@ -1,9 +1,10 @@ + #! /bin/sh + # Attempt to guess a canonical system name. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, ++# Inc. + +-timestamp='2001-07-30' ++timestamp='2007-07-22' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -17,15 +18,18 @@ + # + # 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. ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + +-# Written by Per Bothner . +-# Please send patches to . ++ ++# Originally written by Per Bothner . ++# Please send patches to . Submit a context ++# diff and a properly formatted ChangeLog entry. + # + # This script attempts to guess a canonical system name similar to + # config.sub. If it succeeds, it prints the system name on stdout, and +@@ -52,7 +56,7 @@ + GNU config.guess ($timestamp) + + Originally written by Per Bothner. +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO +@@ -65,11 +69,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -87,30 +91,42 @@ + exit 1 + fi + ++trap 'exit 1' 1 2 15 + +-dummy=dummy-$$ +-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 ++# CC_FOR_BUILD -- compiler used by this script. Note that the use of a ++# compiler to aid in system detection is discouraged as it requires ++# temporary files to be created and, as you can see below, it is a ++# headache to deal with in a portable fashion. + +-# CC_FOR_BUILD -- compiler used by this script. + # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still + # use `HOST_CC' if defined, but it is deprecated. + +-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in +- ,,) echo "int dummy(){}" > $dummy.c ; +- for c in cc gcc c89 ; do +- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; +- if test $? = 0 ; then ++# Portable tmp directory creation inspired by the Autoconf team. ++ ++set_cc_for_build=' ++trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; ++trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; ++: ${TMPDIR=/tmp} ; ++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || ++ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || ++ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || ++ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; ++dummy=$tmp/dummy ; ++tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; ++case $CC_FOR_BUILD,$HOST_CC,$CC in ++ ,,) echo "int x;" > $dummy.c ; ++ for c in cc gcc c89 c99 ; do ++ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; +- rm -f $dummy.c $dummy.o $dummy.rel ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +-esac' ++esac ; set_cc_for_build= ;' + + # This is needed to find uname on a Pyramid OSx when run in the BSD universe. + # (ghazi@noc.rutgers.edu 1994-08-24) +@@ -127,29 +143,31 @@ + + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) +- # Netbsd (nbsd) targets should (where applicable) match one or ++ # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. +- # Determine the machine/vendor (is the vendor relevant). +- case "${UNAME_MACHINE}" in +- amiga) machine=m68k-unknown ;; +- arm32) machine=arm-unknown ;; +- atari*) machine=m68k-atari ;; +- sun3*) machine=m68k-sun ;; +- mac68k) machine=m68k-apple ;; +- macppc) machine=powerpc-apple ;; +- hp3[0-9][05]) machine=m68k-hp ;; +- ibmrt|romp-ibm) machine=romp-ibm ;; +- *) machine=${UNAME_MACHINE}-unknown ;; ++ # ++ # Note: NetBSD doesn't particularly care about the vendor ++ # portion of the name. We always set it to "unknown". ++ sysctl="sysctl -n hw.machine_arch" ++ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ ++ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` ++ case "${UNAME_MACHINE_ARCH}" in ++ armeb) machine=armeb-unknown ;; ++ arm*) machine=arm-unknown ;; ++ sh3el) machine=shl-unknown ;; ++ sh3eb) machine=sh-unknown ;; ++ sh5el) machine=sh5le-unknown ;; ++ *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. +- case "${UNAME_MACHINE}" in +- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) ++ case "${UNAME_MACHINE_ARCH}" in ++ arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null +@@ -166,117 +184,128 @@ + ;; + esac + # The OS release +- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ++ # Debian GNU/NetBSD machines have a different userland, and ++ # thus, need a distinct triplet. However, they do not need ++ # kernel version information, so it can be replaced with a ++ # suitable tag, in the style of linux-gnu. ++ case "${UNAME_VERSION}" in ++ Debian*) ++ release='-gnu' ++ ;; ++ *) ++ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ++ ;; ++ esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" +- exit 0 ;; ++ exit ;; ++ *:OpenBSD:*:*) ++ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` ++ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} ++ exit ;; ++ *:ekkoBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} ++ exit ;; ++ *:SolidBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} ++ exit ;; ++ macppc:MirBSD:*:*) ++ echo powerpc-unknown-mirbsd${UNAME_RELEASE} ++ exit ;; ++ *:MirBSD:*:*) ++ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} ++ exit ;; + alpha:OSF1:*:*) +- if test $UNAME_RELEASE = "V4.0"; then ++ case $UNAME_RELEASE in ++ *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` +- fi ++ ;; ++ *5.*) ++ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ++ ;; ++ esac ++ # According to Compaq, /usr/sbin/psrinfo has been available on ++ # OSF/1 and Tru64 systems produced since 1995. I hope that ++ # covers most systems running today. This code pipes the CPU ++ # types through head -n 1, so we only detect the type of CPU 0. ++ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` ++ case "$ALPHA_CPU_TYPE" in ++ "EV4 (21064)") ++ UNAME_MACHINE="alpha" ;; ++ "EV4.5 (21064)") ++ UNAME_MACHINE="alpha" ;; ++ "LCA4 (21066/21068)") ++ UNAME_MACHINE="alpha" ;; ++ "EV5 (21164)") ++ UNAME_MACHINE="alphaev5" ;; ++ "EV5.6 (21164A)") ++ UNAME_MACHINE="alphaev56" ;; ++ "EV5.6 (21164PC)") ++ UNAME_MACHINE="alphapca56" ;; ++ "EV5.7 (21164PC)") ++ UNAME_MACHINE="alphapca57" ;; ++ "EV6 (21264)") ++ UNAME_MACHINE="alphaev6" ;; ++ "EV6.7 (21264A)") ++ UNAME_MACHINE="alphaev67" ;; ++ "EV6.8CB (21264C)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.8AL (21264B)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.8CX (21264D)") ++ UNAME_MACHINE="alphaev68" ;; ++ "EV6.9A (21264/EV69A)") ++ UNAME_MACHINE="alphaev69" ;; ++ "EV7 (21364)") ++ UNAME_MACHINE="alphaev7" ;; ++ "EV7.9 (21364A)") ++ UNAME_MACHINE="alphaev79" ;; ++ esac ++ # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. +- cat <$dummy.s +- .data +-\$Lformat: +- .byte 37,100,45,37,120,10,0 # "%d-%x\n" +- +- .text +- .globl main +- .align 4 +- .ent main +-main: +- .frame \$30,16,\$26,0 +- ldgp \$29,0(\$27) +- .prologue 1 +- .long 0x47e03d80 # implver \$0 +- lda \$2,-1 +- .long 0x47e20c21 # amask \$2,\$1 +- lda \$16,\$Lformat +- mov \$0,\$17 +- not \$1,\$18 +- jsr \$26,printf +- ldgp \$29,0(\$26) +- mov 0,\$16 +- jsr \$26,exit +- .end main +-EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null +- if test "$?" = 0 ; then +- case `./$dummy` in +- 0-0) +- UNAME_MACHINE="alpha" +- ;; +- 1-0) +- UNAME_MACHINE="alphaev5" +- ;; +- 1-1) +- UNAME_MACHINE="alphaev56" +- ;; +- 1-101) +- UNAME_MACHINE="alphapca56" +- ;; +- 2-303) +- UNAME_MACHINE="alphaev6" +- ;; +- 2-307) +- UNAME_MACHINE="alphaev67" +- ;; +- esac +- fi +- rm -f $dummy.s $dummy +- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` +- exit 0 ;; ++ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` ++ exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix +- exit 0 ;; ++ exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 +- exit 0 ;; ++ exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 +- exit 0;; +- amiga:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos +- exit 0 ;; +- arc64:OpenBSD:*:*) +- echo mips64el-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- arc:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- hkmips:OpenBSD:*:*) +- echo mips-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- pmax:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- sgi:OpenBSD:*:*) +- echo mips-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- wgrisc:OpenBSD:*:*) +- echo mipsel-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ *:[Mm]orph[Oo][Ss]:*:*) ++ echo ${UNAME_MACHINE}-unknown-morphos ++ exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition +- exit 0 ;; ++ exit ;; ++ *:z/VM:*:*) ++ echo s390-ibm-zvmoe ++ exit ;; ++ *:OS400:*:*) ++ echo powerpc-ibm-os400 ++ exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} +- exit 0;; ++ exit ;; ++ arm:riscos:*:*|arm:RISCOS:*:*) ++ echo arm-unknown-riscos ++ exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp +- exit 0;; ++ exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then +@@ -284,25 +313,32 @@ + else + echo pyramid-pyramid-bsd + fi +- exit 0 ;; ++ exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 +- exit 0 ;; ++ exit ;; ++ DRS?6000:unix:4.0:6*) ++ echo sparc-icl-nx6 ++ exit ;; ++ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) ++ case `/usr/bin/uname -p` in ++ sparc) echo sparc-icl-nx7; exit ;; ++ esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; +- i86pc:SunOS:5.*:*) ++ exit ;; ++ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) +@@ -311,12 +347,12 @@ + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` +- exit 0 ;; ++ exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sun*:*:4.2BSD:*) +- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` ++ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) +@@ -326,13 +362,10 @@ + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac +- exit 0 ;; ++ exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} +- exit 0 ;; +- atari*:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor +@@ -343,50 +376,42 @@ + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} +- exit 0 ;; +- sun3*:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mac68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme68k:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; +- mvme88k:OpenBSD:*:*) +- echo m88k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ m68k:machten:*:*) ++ echo m68k-apple-machten${UNAME_RELEASE} ++ exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 +- exit 0 ;; ++ exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) ++ eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __cplusplus + #include /* for printf() prototype */ +@@ -408,28 +433,33 @@ + exit (-1); + } + EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy \ +- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ +- && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy ++ $CC_FOR_BUILD -o $dummy $dummy.c && ++ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && ++ SYSTEM_NAME=`$dummy $dummyarg` && ++ { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax +- exit 0 ;; ++ exit ;; ++ Motorola:*:4.3:PL8-*) ++ echo powerpc-harris-powermax ++ exit ;; ++ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) ++ echo powerpc-harris-powermax ++ exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix +- exit 0 ;; ++ exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 +- exit 0 ;; ++ exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 +- exit 0 ;; ++ exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` +@@ -445,29 +475,29 @@ + else + echo i586-dg-dgux${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 +- exit 0 ;; ++ exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 +- exit 0 ;; ++ exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 +- exit 0 ;; ++ exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd +- exit 0 ;; ++ exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` +- exit 0 ;; ++ exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. +- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id +- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' ++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id ++ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix +- exit 0 ;; ++ exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` +@@ -475,9 +505,10 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then ++ eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + +@@ -489,18 +520,20 @@ + exit(0); + } + EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy +- echo rs6000-ibm-aix3.2.5 ++ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` ++ then ++ echo "$SYSTEM_NAME" ++ else ++ echo rs6000-ibm-aix3.2.5 ++ fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi +- exit 0 ;; ++ exit ;; + *:AIX:*:[45]) +- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` ++ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else +@@ -512,38 +545,36 @@ + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} +- exit 0 ;; ++ exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix +- exit 0 ;; ++ exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 +- exit 0 ;; ++ exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to +- exit 0 ;; # report: romp-ibm BSD 4.3 ++ exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx +- exit 0 ;; ++ exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 +- exit 0 ;; ++ exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd +- exit 0 ;; ++ exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 +- exit 0 ;; ++ exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) +- case "${HPUX_REV}" in +- 11.[0-9][0-9]) +- if [ -x /usr/bin/getconf ]; then +- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` ++ if [ -x /usr/bin/getconf ]; then ++ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 +@@ -552,12 +583,13 @@ + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; ++ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac +- fi ;; +- esac +- if [ "${HP_ARCH}" = "" ]; then +- sed 's/^ //' << EOF >$dummy.c ++ fi ++ if [ "${HP_ARCH}" = "" ]; then ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include +@@ -590,19 +622,39 @@ + exit (0); + } + EOF +- eval $set_cc_for_build +- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` +- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi +- rm -f $dummy.c $dummy +- fi ;; ++ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` ++ test -z "$HP_ARCH" && HP_ARCH=hppa ++ fi ;; + esac ++ if [ ${HP_ARCH} = "hppa2.0w" ] ++ then ++ eval $set_cc_for_build ++ ++ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating ++ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler ++ # generating 64-bit code. GNU and HP use different nomenclature: ++ # ++ # $ CC_FOR_BUILD=cc ./config.guess ++ # => hppa2.0w-hp-hpux11.23 ++ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess ++ # => hppa64-hp-hpux11.23 ++ ++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | ++ grep __LP64__ >/dev/null ++ then ++ HP_ARCH="hppa2.0w" ++ else ++ HP_ARCH="hppa64" ++ fi ++ fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} +- exit 0 ;; ++ exit ;; + 3050*:HI-UX:*:*) ++ eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int +@@ -628,159 +680,237 @@ + exit (0); + } + EOF +- eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy ++ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 +- exit 0 ;; ++ exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd +- exit 0 ;; ++ exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd +- exit 0 ;; ++ exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix +- exit 0 ;; ++ exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf +- exit 0 ;; ++ exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf +- exit 0 ;; ++ exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi +- exit 0 ;; ++ exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites +- exit 0 ;; +- hppa*:OpenBSD:*:*) +- echo hppa-unknown-openbsd +- exit 0 ;; ++ exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd +- exit 0 ;; +- CRAY*X-MP:*:*:*) +- echo xmp-cray-unicos +- exit 0 ;; ++ exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; +- CRAY*T3D:*:*:*) +- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; ++ exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' +- exit 0 ;; +- CRAY-2:*:*:*) +- echo cray2-cray-unicos +- exit 0 ;; ++ exit ;; ++ *:UNICOS/mp:*:*) ++ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' ++ exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +- exit 0 ;; +- hp300:OpenBSD:*:*) +- echo m68k-unknown-openbsd${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ 5000:UNIX_System_V:4.*:*) ++ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` ++ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` ++ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" ++ exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:FreeBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +- exit 0 ;; +- *:OpenBSD:*:*) +- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` +- exit 0 ;; ++ case ${UNAME_MACHINE} in ++ pc98) ++ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ amd64) ++ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ *) ++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ esac ++ exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin +- exit 0 ;; +- i*:MINGW*:*) ++ exit ;; ++ *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 +- exit 0 ;; ++ exit ;; ++ i*:windows32*:*) ++ # uname -m includes "-pc" on this system. ++ echo ${UNAME_MACHINE}-mingw32 ++ exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 +- exit 0 ;; ++ exit ;; ++ *:Interix*:[3456]*) ++ case ${UNAME_MACHINE} in ++ x86) ++ echo i586-pc-interix${UNAME_RELEASE} ++ exit ;; ++ EM64T | authenticamd) ++ echo x86_64-unknown-interix${UNAME_RELEASE} ++ exit ;; ++ esac ;; ++ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) ++ echo i${UNAME_MACHINE}-pc-mks ++ exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? +- echo i386-pc-interix +- exit 0 ;; ++ echo i586-pc-interix ++ exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin +- exit 0 ;; ++ exit ;; ++ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) ++ echo x86_64-unknown-cygwin ++ exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin +- exit 0 ;; ++ exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` +- exit 0 ;; ++ exit ;; + *:GNU:*:*) ++ # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` +- exit 0 ;; ++ exit ;; ++ *:GNU/*:*:*) ++ # other systems with GNU libc and userland ++ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu ++ exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix +- exit 0 ;; ++ exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ avr32*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ cris:Linux:*:*) ++ echo cris-axis-linux-gnu ++ exit ;; ++ crisv32:Linux:*:*) ++ echo crisv32-axis-linux-gnu ++ exit ;; ++ frv:Linux:*:*) ++ echo frv-unknown-linux-gnu ++ exit ;; + ia64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux +- exit 0 ;; ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ m32r*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + mips:Linux:*:*) +- case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in +- big) echo mips-unknown-linux-gnu && exit 0 ;; +- little) echo mipsel-unknown-linux-gnu && exit 0 ;; +- esac ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c ++ #undef CPU ++ #undef mips ++ #undef mipsel ++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) ++ CPU=mipsel ++ #else ++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) ++ CPU=mips ++ #else ++ CPU= ++ #endif ++ #endif ++EOF ++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' ++ /^CPU/{ ++ s: ::g ++ p ++ }'`" ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ++ ;; ++ mips64:Linux:*:*) ++ eval $set_cc_for_build ++ sed 's/^ //' << EOF >$dummy.c ++ #undef CPU ++ #undef mips64 ++ #undef mips64el ++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) ++ CPU=mips64el ++ #else ++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) ++ CPU=mips64 ++ #else ++ CPU= ++ #endif ++ #endif ++EOF ++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' ++ /^CPU/{ ++ s: ::g ++ p ++ }'`" ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; ++ or32:Linux:*:*) ++ echo or32-unknown-linux-gnu ++ exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; +@@ -789,12 +919,12 @@ + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; +- EV68*) UNAME_MACHINE=alphaev67 ;; ++ EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} +- exit 0 ;; ++ exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +@@ -802,27 +932,37 @@ + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac +- exit 0 ;; ++ exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux +- exit 0 ;; ++ exit ;; ++ sh64*:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ vax:Linux:*:*) ++ echo ${UNAME_MACHINE}-dec-linux-gnu ++ exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu +- exit 0 ;; ++ exit ;; ++ xtensa:Linux:*:*) ++ echo xtensa-unknown-linux-gnu ++ exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. +- ld_supported_targets=`cd /; ld --help 2>&1 \ ++ # Set LC_ALL=C to ensure ld outputs messages in English. ++ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// +@@ -834,52 +974,58 @@ + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" +- exit 0 ;; ++ exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" +- exit 0 ;; ++ exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" +- exit 0 ;; ++ exit ;; + esac + # Determine whether the default compiler is a.out or elf +- cat >$dummy.c < +-#ifdef __cplusplus +-#include /* for printf() prototype */ +- int main (int argc, char *argv[]) { +-#else +- int main (argc, argv) int argc; char *argv[]; { +-#endif +-#ifdef __ELF__ +-# ifdef __GLIBC__ +-# if __GLIBC__ >= 2 +- printf ("%s-pc-linux-gnu\n", argv[1]); +-# else +- printf ("%s-pc-linux-gnulibc1\n", argv[1]); +-# endif +-# else +- printf ("%s-pc-linux-gnulibc1\n", argv[1]); +-# endif +-#else +- printf ("%s-pc-linux-gnuaout\n", argv[1]); +-#endif +- return 0; +-} +-EOF + eval $set_cc_for_build +- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 +- rm -f $dummy.c $dummy +- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ++ sed 's/^ //' << EOF >$dummy.c ++ #include ++ #ifdef __ELF__ ++ # ifdef __GLIBC__ ++ # if __GLIBC__ >= 2 ++ LIBC=gnu ++ # else ++ LIBC=gnulibc1 ++ # endif ++ # else ++ LIBC=gnulibc1 ++ # endif ++ #else ++ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) ++ LIBC=gnu ++ #else ++ LIBC=gnuaout ++ #endif ++ #endif ++ #ifdef __dietlibc__ ++ LIBC=dietlibc ++ #endif ++EOF ++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' ++ /^LIBC/{ ++ s: ::g ++ p ++ }'`" ++ test x"${LIBC}" != x && { ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" ++ exit ++ } ++ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 +- exit 0 ;; ++ exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... +@@ -887,7 +1033,27 @@ + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} +- exit 0 ;; ++ exit ;; ++ i*86:OS/2:*:*) ++ # If we were able to find `uname', then EMX Unix compatibility ++ # is probably installed. ++ echo ${UNAME_MACHINE}-pc-os2-emx ++ exit ;; ++ i*86:XTS-300:*:STOP) ++ echo ${UNAME_MACHINE}-unknown-stop ++ exit ;; ++ i*86:atheos:*:*) ++ echo ${UNAME_MACHINE}-unknown-atheos ++ exit ;; ++ i*86:syllable:*:*) ++ echo ${UNAME_MACHINE}-pc-syllable ++ exit ;; ++ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) ++ echo i386-unknown-lynxos${UNAME_RELEASE} ++ exit ;; ++ i*86:*DOS:*:*) ++ echo ${UNAME_MACHINE}-pc-msdosdjgpp ++ exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then +@@ -895,99 +1061,100 @@ + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi +- exit 0 ;; +- i*86:*:5:[78]*) ++ exit ;; ++ i*86:*:5:[678]*) ++ # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} +- exit 0 ;; ++ exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then +- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` +- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 +- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ ++ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` ++ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 ++ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 +- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ ++ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 +- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ ++ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi +- exit 0 ;; +- i*86:*DOS:*:*) +- echo ${UNAME_MACHINE}-pc-msdosdjgpp +- exit 0 ;; ++ exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp +- exit 0 ;; ++ exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 +- exit 0 ;; ++ exit ;; + paragon:*:*:*) + echo i860-intel-osf1 +- exit 0 ;; ++ exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi +- exit 0 ;; ++ exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv +- exit 0 ;; +- M68*:*:R3V[567]*:*) +- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; +- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) ++ exit ;; ++ mc68k:UNIX:SYSTEM5:3.51m) ++ echo m68k-convergent-sysv ++ exit ;; ++ M680?0:D-NIX:5.3:*) ++ echo m68k-diab-dnix ++ exit ;; ++ M68*:*:R3V[5678]*:*) ++ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; ++ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +- && echo i486-ncr-sysv4.3${OS_REL} && exit 0 ++ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ +- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; ++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ +- && echo i486-ncr-sysv4 && exit 0 ;; ++ && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 +- exit 0 ;; +- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) +- echo i386-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 +- exit 0 ;; ++ exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` +@@ -995,78 +1162,107 @@ + else + echo ns32k-sni-sysv + fi +- exit 0 ;; +- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort +- # says ++ exit ;; ++ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort ++ # says + echo i586-unisys-sysv4 +- exit 0 ;; ++ exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 +- exit 0 ;; ++ exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 +- exit 0 ;; ++ exit ;; ++ i*86:VOS:*:*) ++ # From Paul.Green@stratus.com. ++ echo ${UNAME_MACHINE}-stratus-vos ++ exit ;; ++ *:VOS:*:*) ++ # From Paul.Green@stratus.com. ++ echo hppa1.1-stratus-vos ++ exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 +- exit 0 ;; ++ exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi +- exit 0 ;; ++ exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos +- exit 0 ;; ++ exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos +- exit 0 ;; ++ exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos +- exit 0 ;; ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; ++ SX-6:SUPER-UX:*:*) ++ echo sx6-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-7:SUPER-UX:*:*) ++ echo sx7-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-8:SUPER-UX:*:*) ++ echo sx8-nec-superux${UNAME_RELEASE} ++ exit ;; ++ SX-8R:SUPER-UX:*:*) ++ echo sx8r-nec-superux${UNAME_RELEASE} ++ exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Darwin:*:*) +- echo `uname -p`-apple-darwin${UNAME_RELEASE} +- exit 0 ;; ++ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown ++ case $UNAME_PROCESSOR in ++ unknown) UNAME_PROCESSOR=powerpc ;; ++ esac ++ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} ++ exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) +- if test "${UNAME_MACHINE}" = "x86pc"; then ++ UNAME_PROCESSOR=`uname -p` ++ if test "$UNAME_PROCESSOR" = "x86"; then ++ UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi +- echo `uname -p`-${UNAME_MACHINE}-nto-qnx +- exit 0 ;; ++ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} ++ exit ;; + *:QNX:*:4*) + echo i386-pc-qnx +- exit 0 ;; +- NSR-[KW]:NONSTOP_KERNEL:*:*) ++ exit ;; ++ NSE-?:NONSTOP_KERNEL:*:*) ++ echo nse-tandem-nsk${UNAME_RELEASE} ++ exit ;; ++ NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux +- exit 0 ;; ++ exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv +- exit 0 ;; ++ exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} +- exit 0 ;; ++ exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 +@@ -1077,38 +1273,53 @@ + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 +- exit 0 ;; +- i*86:OS/2:*:*) +- # If we were able to find `uname', then EMX Unix compatibility +- # is probably installed. +- echo ${UNAME_MACHINE}-pc-os2-emx +- exit 0 ;; ++ exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 +- exit 0 ;; ++ exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex +- exit 0 ;; ++ exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 +- exit 0 ;; ++ exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 +- exit 0 ;; ++ exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 +- exit 0 ;; ++ exit ;; + *:ITS:*:*) + echo pdp10-unknown-its +- exit 0 ;; +- i*86:XTS-300:*:STOP) +- echo ${UNAME_MACHINE}-unknown-stop +- exit 0 ;; ++ exit ;; ++ SEI:*:*:SEIUX) ++ echo mips-sei-seiux${UNAME_RELEASE} ++ exit ;; ++ *:DragonFly:*:*) ++ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ++ exit ;; ++ *:*VMS:*:*) ++ UNAME_MACHINE=`(uname -p) 2>/dev/null` ++ case "${UNAME_MACHINE}" in ++ A*) echo alpha-dec-vms ; exit ;; ++ I*) echo ia64-dec-vms ; exit ;; ++ V*) echo vax-dec-vms ; exit ;; ++ esac ;; ++ *:XENIX:*:SysV) ++ echo i386-pc-xenix ++ exit ;; ++ i*86:skyos:*:*) ++ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' ++ exit ;; ++ i*86:rdos:*:*) ++ echo ${UNAME_MACHINE}-pc-rdos ++ exit ;; + esac + + #echo '(No uname command or uname output not recognized.)' 1>&2 + #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + ++eval $set_cc_for_build + cat >$dummy.c < +@@ -1134,7 +1345,7 @@ + #endif + + #if defined (__arm) && defined (__acorn) && defined (__unix) +- printf ("arm-acorn-riscix"); exit (0); ++ printf ("arm-acorn-riscix\n"); exit (0); + #endif + + #if defined (hp300) && !defined (hpux) +@@ -1223,13 +1434,12 @@ + } + EOF + +-eval $set_cc_for_build +-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +-rm -f $dummy.c $dummy ++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && ++ { echo "$SYSTEM_NAME"; exit; } + + # Apollos put the system type in the environment. + +-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } ++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + + # Convex versions that predate uname can use getsysinfo(1) + +@@ -1238,22 +1448,22 @@ + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd +- exit 0 ;; ++ exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi +- exit 0 ;; ++ exit ;; + c34*) + echo c34-convex-bsd +- exit 0 ;; ++ exit ;; + c38*) + echo c38-convex-bsd +- exit 0 ;; ++ exit ;; + c4*) + echo c4-convex-bsd +- exit 0 ;; ++ exit ;; + esac + fi + +@@ -1264,7 +1474,9 @@ + the operating system you are using. It is advised that you + download the most up to date version of the config scripts from + +- ftp://ftp.gnu.org/pub/gnu/config/ ++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess ++and ++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub + + If the version you run ($0) is already up to date, please + send the following data and any information you think might be +--- libfcgi-2.4.0.orig/install-sh ++++ libfcgi-2.4.0/install-sh +@@ -1,36 +1,62 @@ + #!/bin/sh +-# + # install - install a program, script, or datafile +-# This comes from X11R5 (mit/util/scripts/install.sh). ++ ++scriptversion=2006-10-14.15 ++ ++# This originates from X11R5 (mit/util/scripts/install.sh), which was ++# later released in X11R6 (xc/config/util/install.sh) with the ++# following copyright and license. ++# ++# Copyright (C) 1994 X Consortium ++# ++# Permission is hereby granted, free of charge, to any person obtaining a copy ++# of this software and associated documentation files (the "Software"), to ++# deal in the Software without restriction, including without limitation the ++# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++# sell copies of the Software, and to permit persons to whom the Software is ++# furnished to do so, subject to the following conditions: + # +-# Copyright 1991 by the Massachusetts Institute of Technology ++# The above copyright notice and this permission notice shall be included in ++# all copies or substantial portions of the Software. + # +-# Permission to use, copy, modify, distribute, and sell this software and its +-# documentation for any purpose is hereby granted without fee, provided that +-# the above copyright notice appear in all copies and that both that +-# copyright notice and this permission notice appear in supporting +-# documentation, and that the name of M.I.T. not be used in advertising or +-# publicity pertaining to distribution of the software without specific, +-# written prior permission. M.I.T. makes no representations about the +-# suitability of this software for any purpose. It is provided "as is" +-# without express or implied warranty. ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- ++# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++# ++# Except as contained in this notice, the name of the X Consortium shall not ++# be used in advertising or otherwise to promote the sale, use or other deal- ++# ings in this Software without prior written authorization from the X Consor- ++# tium. ++# ++# ++# FSF changes to this file are in the public domain. + # + # Calling this script install-sh is preferred over install.sh, to prevent + # `make' implicit rules from creating a file called install from it + # when there is no Makefile. + # + # This script is compatible with the BSD install script, but was written +-# from scratch. It can only install one file at a time, a restriction +-# shared with many OS's install programs. ++# from scratch. + ++nl=' ++' ++IFS=" "" $nl" + + # set DOITPROG to echo to test this script + + # Don't use :- since 4.3BSD and earlier shells don't like it. + doit="${DOITPROG-}" ++if test -z "$doit"; then ++ doit_exec=exec ++else ++ doit_exec=$doit ++fi + +- +-# put in absolute paths if you don't have them in your path; or use env. vars. ++# Put in absolute file names if you don't have them in your path; ++# or use environment vars. + + mvprog="${MVPROG-mv}" + cpprog="${CPPROG-cp}" +@@ -41,211 +67,441 @@ + rmprog="${RMPROG-rm}" + mkdirprog="${MKDIRPROG-mkdir}" + +-transformbasename="" +-transform_arg="" +-instcmd="$mvprog" +-chmodcmd="$chmodprog 0755" +-chowncmd="" +-chgrpcmd="" +-stripcmd="" +-rmcmd="$rmprog -f" +-mvcmd="$mvprog" +-src="" +-dst="" +-dir_arg="" +- +-while [ x"$1" != x ]; do +- case $1 in +- -c) instcmd="$cpprog" +- shift +- continue;; +- +- -d) dir_arg=true +- shift +- continue;; +- +- -m) chmodcmd="$chmodprog $2" +- shift +- shift +- continue;; +- +- -o) chowncmd="$chownprog $2" +- shift +- shift +- continue;; +- +- -g) chgrpcmd="$chgrpprog $2" +- shift +- shift +- continue;; +- +- -s) stripcmd="$stripprog" +- shift +- continue;; +- +- -t=*) transformarg=`echo $1 | sed 's/-t=//'` +- shift +- continue;; +- +- -b=*) transformbasename=`echo $1 | sed 's/-b=//'` +- shift +- continue;; +- +- *) if [ x"$src" = x ] +- then +- src=$1 +- else +- # this colon is to work around a 386BSD /bin/sh bug +- : +- dst=$1 +- fi +- shift +- continue;; +- esac +-done +- +-if [ x"$src" = x ] +-then +- echo "install: no input file specified" +- exit 1 +-else +- true +-fi ++posix_glob= ++posix_mkdir= + +-if [ x"$dir_arg" != x ]; then +- dst=$src +- src="" +- +- if [ -d $dst ]; then +- instcmd=: +- chmodcmd="" +- else +- instcmd=mkdir +- fi +-else ++# Desired mode of installed file. ++mode=0755 + +-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +-# might cause directories to be created, which would be especially bad +-# if $src (and thus $dsttmp) contains '*'. +- +- if [ -f $src -o -d $src ] +- then +- true +- else +- echo "install: $src does not exist" +- exit 1 +- fi +- +- if [ x"$dst" = x ] +- then +- echo "install: no destination specified" +- exit 1 +- else +- true +- fi ++chmodcmd=$chmodprog ++chowncmd= ++chgrpcmd= ++stripcmd= ++rmcmd="$rmprog -f" ++mvcmd="$mvprog" ++src= ++dst= ++dir_arg= ++dstarg= ++no_target_directory= ++ ++usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE ++ or: $0 [OPTION]... SRCFILES... DIRECTORY ++ or: $0 [OPTION]... -t DIRECTORY SRCFILES... ++ or: $0 [OPTION]... -d DIRECTORIES... ++ ++In the 1st form, copy SRCFILE to DSTFILE. ++In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. ++In the 4th, create DIRECTORIES. ++ ++Options: ++-c (ignored) ++-d create directories instead of installing files. ++-g GROUP $chgrpprog installed files to GROUP. ++-m MODE $chmodprog installed files to MODE. ++-o USER $chownprog installed files to USER. ++-s $stripprog installed files. ++-t DIRECTORY install into DIRECTORY. ++-T report an error if DSTFILE is a directory. ++--help display this help and exit. ++--version display version info and exit. ++ ++Environment variables override the default commands: ++ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG ++" ++ ++while test $# -ne 0; do ++ case $1 in ++ -c) shift ++ continue;; ++ ++ -d) dir_arg=true ++ shift ++ continue;; ++ ++ -g) chgrpcmd="$chgrpprog $2" ++ shift ++ shift ++ continue;; ++ ++ --help) echo "$usage"; exit $?;; ++ ++ -m) mode=$2 ++ shift ++ shift ++ case $mode in ++ *' '* | *' '* | *' ++'* | *'*'* | *'?'* | *'['*) ++ echo "$0: invalid mode: $mode" >&2 ++ exit 1;; ++ esac ++ continue;; ++ ++ -o) chowncmd="$chownprog $2" ++ shift ++ shift ++ continue;; ++ ++ -s) stripcmd=$stripprog ++ shift ++ continue;; + +-# If destination is a directory, append the input filename; if your system +-# does not like double slashes in filenames, you may need to add some logic ++ -t) dstarg=$2 ++ shift ++ shift ++ continue;; + +- if [ -d $dst ] +- then +- dst="$dst"/`basename $src` +- else +- true +- fi +-fi ++ -T) no_target_directory=true ++ shift ++ continue;; + +-## this sed command emulates the dirname command +-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` ++ --version) echo "$0 $scriptversion"; exit $?;; + +-# Make sure that the destination directory exists. +-# this part is taken from Noah Friedman's mkinstalldirs script ++ --) shift ++ break;; + +-# Skip lots of stat calls in the usual case. +-if [ ! -d "$dstdir" ]; then +-defaultIFS=' +-' +-IFS="${IFS-${defaultIFS}}" ++ -*) echo "$0: invalid option: $1" >&2 ++ exit 1;; + +-oIFS="${IFS}" +-# Some sh's can't handle IFS=/ for some reason. +-IFS='%' +-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +-IFS="${oIFS}" ++ *) break;; ++ esac ++done + +-pathcomp='' ++if test $# -ne 0 && test -z "$dir_arg$dstarg"; then ++ # When -d is used, all remaining arguments are directories to create. ++ # When -t is used, the destination is already specified. ++ # Otherwise, the last argument is the destination. Remove it from $@. ++ for arg ++ do ++ if test -n "$dstarg"; then ++ # $@ is not empty: it contains at least $arg. ++ set fnord "$@" "$dstarg" ++ shift # fnord ++ fi ++ shift # arg ++ dstarg=$arg ++ done ++fi + +-while [ $# -ne 0 ] ; do +- pathcomp="${pathcomp}${1}" +- shift ++if test $# -eq 0; then ++ if test -z "$dir_arg"; then ++ echo "$0: no input file specified." >&2 ++ exit 1 ++ fi ++ # It's OK to call `install-sh -d' without argument. ++ # This can happen when creating conditional directories. ++ exit 0 ++fi + +- if [ ! -d "${pathcomp}" ] ; +- then +- $mkdirprog "${pathcomp}" +- else +- true +- fi ++if test -z "$dir_arg"; then ++ trap '(exit $?); exit' 1 2 13 15 + +- pathcomp="${pathcomp}/" +-done ++ # Set umask so as not to create temps with too-generous modes. ++ # However, 'strip' requires both read and write access to temps. ++ case $mode in ++ # Optimize common cases. ++ *644) cp_umask=133;; ++ *755) cp_umask=22;; ++ ++ *[0-7]) ++ if test -z "$stripcmd"; then ++ u_plus_rw= ++ else ++ u_plus_rw='% 200' ++ fi ++ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; ++ *) ++ if test -z "$stripcmd"; then ++ u_plus_rw= ++ else ++ u_plus_rw=,u+rw ++ fi ++ cp_umask=$mode$u_plus_rw;; ++ esac + fi + +-if [ x"$dir_arg" != x ] +-then +- $doit $instcmd $dst && +- +- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && +- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && +- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && +- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +-else +- +-# If we're going to rename the final executable, determine the name now. ++for src ++do ++ # Protect names starting with `-'. ++ case $src in ++ -*) src=./$src ;; ++ esac ++ ++ if test -n "$dir_arg"; then ++ dst=$src ++ dstdir=$dst ++ test -d "$dstdir" ++ dstdir_status=$? ++ else ++ ++ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command ++ # might cause directories to be created, which would be especially bad ++ # if $src (and thus $dsttmp) contains '*'. ++ if test ! -f "$src" && test ! -d "$src"; then ++ echo "$0: $src does not exist." >&2 ++ exit 1 ++ fi ++ ++ if test -z "$dstarg"; then ++ echo "$0: no destination specified." >&2 ++ exit 1 ++ fi ++ ++ dst=$dstarg ++ # Protect names starting with `-'. ++ case $dst in ++ -*) dst=./$dst ;; ++ esac + +- if [ x"$transformarg" = x ] +- then +- dstfile=`basename $dst` ++ # If destination is a directory, append the input filename; won't work ++ # if double slashes aren't ignored. ++ if test -d "$dst"; then ++ if test -n "$no_target_directory"; then ++ echo "$0: $dstarg: Is a directory" >&2 ++ exit 1 ++ fi ++ dstdir=$dst ++ dst=$dstdir/`basename "$src"` ++ dstdir_status=0 ++ else ++ # Prefer dirname, but fall back on a substitute if dirname fails. ++ dstdir=` ++ (dirname "$dst") 2>/dev/null || ++ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$dst" : 'X\(//\)[^/]' \| \ ++ X"$dst" : 'X\(//\)$' \| \ ++ X"$dst" : 'X\(/\)' \| . 2>/dev/null || ++ echo X"$dst" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q' ++ ` ++ ++ test -d "$dstdir" ++ dstdir_status=$? ++ fi ++ fi ++ ++ obsolete_mkdir_used=false ++ ++ if test $dstdir_status != 0; then ++ case $posix_mkdir in ++ '') ++ # Create intermediate dirs using mode 755 as modified by the umask. ++ # This is like FreeBSD 'install' as of 1997-10-28. ++ umask=`umask` ++ case $stripcmd.$umask in ++ # Optimize common cases. ++ *[2367][2367]) mkdir_umask=$umask;; ++ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; ++ ++ *[0-7]) ++ mkdir_umask=`expr $umask + 22 \ ++ - $umask % 100 % 40 + $umask % 20 \ ++ - $umask % 10 % 4 + $umask % 2 ++ `;; ++ *) mkdir_umask=$umask,go-w;; ++ esac ++ ++ # With -d, create the new directory with the user-specified mode. ++ # Otherwise, rely on $mkdir_umask. ++ if test -n "$dir_arg"; then ++ mkdir_mode=-m$mode + else +- dstfile=`basename $dst $transformbasename | +- sed $transformarg`$transformbasename ++ mkdir_mode= + fi + +-# don't allow the sed command to completely eliminate the filename ++ posix_mkdir=false ++ case $umask in ++ *[123567][0-7][0-7]) ++ # POSIX mkdir -p sets u+wx bits regardless of umask, which ++ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ++ ;; ++ *) ++ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ ++ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + +- if [ x"$dstfile" = x ] +- then +- dstfile=`basename $dst` ++ if (umask $mkdir_umask && ++ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 ++ then ++ if test -z "$dir_arg" || { ++ # Check for POSIX incompatibilities with -m. ++ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or ++ # other-writeable bit of parent directory when it shouldn't. ++ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ++ ls_ld_tmpdir=`ls -ld "$tmpdir"` ++ case $ls_ld_tmpdir in ++ d????-?r-*) different_mode=700;; ++ d????-?--*) different_mode=755;; ++ *) false;; ++ esac && ++ $mkdirprog -m$different_mode -p -- "$tmpdir" && { ++ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` ++ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" ++ } ++ } ++ then posix_mkdir=: ++ fi ++ rmdir "$tmpdir/d" "$tmpdir" ++ else ++ # Remove any dirs left behind by ancient mkdir implementations. ++ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null ++ fi ++ trap '' 0;; ++ esac;; ++ esac ++ ++ if ++ $posix_mkdir && ( ++ umask $mkdir_umask && ++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ++ ) ++ then : ++ else ++ ++ # The umask is ridiculous, or mkdir does not conform to POSIX, ++ # or it failed possibly due to a race condition. Create the ++ # directory the slow way, step by step, checking for races as we go. ++ ++ case $dstdir in ++ /*) prefix=/ ;; ++ -*) prefix=./ ;; ++ *) prefix= ;; ++ esac ++ ++ case $posix_glob in ++ '') ++ if (set -f) 2>/dev/null; then ++ posix_glob=true ++ else ++ posix_glob=false ++ fi ;; ++ esac ++ ++ oIFS=$IFS ++ IFS=/ ++ $posix_glob && set -f ++ set fnord $dstdir ++ shift ++ $posix_glob && set +f ++ IFS=$oIFS ++ ++ prefixes= ++ ++ for d ++ do ++ test -z "$d" && continue ++ ++ prefix=$prefix$d ++ if test -d "$prefix"; then ++ prefixes= + else +- true ++ if $posix_mkdir; then ++ (umask=$mkdir_umask && ++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break ++ # Don't fail if two instances are running concurrently. ++ test -d "$prefix" || exit 1 ++ else ++ case $prefix in ++ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; ++ *) qprefix=$prefix;; ++ esac ++ prefixes="$prefixes '$qprefix'" ++ fi + fi ++ prefix=$prefix/ ++ done + +-# Make a temp file name in the proper directory. +- +- dsttmp=$dstdir/#inst.$$# +- +-# Move or copy the file name to the temp name +- +- $doit $instcmd $src $dsttmp && +- +- trap "rm -f ${dsttmp}" 0 && +- +-# and set any options; do chmod last to preserve setuid bits +- +-# If any of these fail, we abort the whole thing. If we want to +-# ignore errors from any of these, just make sure not to ignore +-# errors from the above "$doit $instcmd $src $dsttmp" command. +- +- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && +- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && +- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && +- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && +- +-# Now rename the file to the real destination. +- +- $doit $rmcmd -f $dstdir/$dstfile && +- $doit $mvcmd $dsttmp $dstdir/$dstfile +- +-fi && ++ if test -n "$prefixes"; then ++ # Don't fail if two instances are running concurrently. ++ (umask $mkdir_umask && ++ eval "\$doit_exec \$mkdirprog $prefixes") || ++ test -d "$dstdir" || exit 1 ++ obsolete_mkdir_used=true ++ fi ++ fi ++ fi ++ ++ if test -n "$dir_arg"; then ++ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && ++ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && ++ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || ++ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 ++ else ++ ++ # Make a couple of temp file names in the proper directory. ++ dsttmp=$dstdir/_inst.$$_ ++ rmtmp=$dstdir/_rm.$$_ ++ ++ # Trap to clean up those temp files at exit. ++ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 ++ ++ # Copy the file name to the temp name. ++ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && ++ ++ # and set any options; do chmod last to preserve setuid bits. ++ # ++ # If any of these fail, we abort the whole thing. If we want to ++ # ignore errors from any of these, just make sure not to ignore ++ # errors from the above "$doit $cpprog $src $dsttmp" command. ++ # ++ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ ++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ ++ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ ++ && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && ++ ++ # Now rename the file to the real destination. ++ { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ ++ || { ++ # The rename failed, perhaps because mv can't rename something else ++ # to itself, or perhaps because mv is so ancient that it does not ++ # support -f. ++ ++ # Now remove or move aside any old file at destination location. ++ # We try this two ways since rm can't unlink itself on some ++ # systems and the destination file might be busy for other ++ # reasons. In this case, the final cleanup might fail but the new ++ # file should still install successfully. ++ { ++ if test -f "$dst"; then ++ $doit $rmcmd -f "$dst" 2>/dev/null \ ++ || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ ++ && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ ++ || { ++ echo "$0: cannot unlink or rename $dst" >&2 ++ (exit 1); exit 1 ++ } ++ else ++ : ++ fi ++ } && ++ ++ # Now rename the file to the real destination. ++ $doit $mvcmd "$dsttmp" "$dst" ++ } ++ } || exit 1 + ++ trap '' 0 ++ fi ++done + +-exit 0 ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/config.sub ++++ libfcgi-2.4.0/config.sub +@@ -1,9 +1,10 @@ + #! /bin/sh + # Configuration validation subroutine script. +-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ++# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, ++# Inc. + +-timestamp='2001-07-27' ++timestamp='2007-06-28' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -21,15 +22,17 @@ + # + # 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. +- ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA ++# 02110-1301, USA. ++# + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + +-# Please send patches to . ++ ++# Please send patches to . Submit a context ++# diff and a properly formatted ChangeLog entry. + # + # Configuration subroutine to validate and canonicalize a configuration type. + # Supply the specified configuration type as an argument. +@@ -69,7 +72,7 @@ + version="\ + GNU config.sub ($timestamp) + +-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO +@@ -82,11 +85,11 @@ + while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) +- echo "$timestamp" ; exit 0 ;; ++ echo "$timestamp" ; exit ;; + --version | -v ) +- echo "$version" ; exit 0 ;; ++ echo "$version" ; exit ;; + --help | --h* | -h ) +- echo "$usage"; exit 0 ;; ++ echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. +@@ -98,7 +101,7 @@ + *local*) + # First pass through any local machine types. + echo $1 +- exit 0;; ++ exit ;; + + * ) + break ;; +@@ -117,7 +120,9 @@ + # Here we must recognize all the valid KERNEL-OS combinations. + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in +- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) ++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ ++ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ ++ storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; +@@ -143,7 +148,7 @@ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis) ++ -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; +@@ -168,6 +173,10 @@ + -hiux*) + os=-hiuxwe2 + ;; ++ -sco6) ++ os=-sco5v6 ++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ++ ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -184,6 +193,10 @@ + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; ++ -sco5v6*) ++ # Don't forget version if it is 3.2v4 or newer. ++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ++ ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +@@ -223,26 +236,57 @@ + case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. +- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ +- | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ +- | pyramid | mn10200 | mn10300 | tron | a29k \ +- | 580 | i960 | h8300 \ +- | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ +- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ +- | hppa64 \ +- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ +- | alphaev6[78] \ +- | we32k | ns16k | clipper | i370 | sh | sh[34] | sh[34]eb \ +- | powerpc | powerpcle \ +- | 1750a | dsp16xx | pdp10 | pdp11 \ +- | mips16 | mips64 | mipsel | mips64el \ +- | mips64orion | mips64orionel | mipstx39 | mipstx39el \ +- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ +- | mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \ +- | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ +- | v850 | c4x \ +- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ +- | pj | pjl | h8500 | z8k) ++ 1750a | 580 \ ++ | a29k \ ++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ ++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ ++ | am33_2.0 \ ++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ ++ | bfin \ ++ | c4x | clipper \ ++ | d10v | d30v | dlx | dsp16xx \ ++ | fido | fr30 | frv \ ++ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | i370 | i860 | i960 | ia64 \ ++ | ip2k | iq2000 \ ++ | m32c | m32r | m32rle | m68000 | m68k | m88k \ ++ | maxq | mb | microblaze | mcore | mep \ ++ | mips | mipsbe | mipseb | mipsel | mipsle \ ++ | mips16 \ ++ | mips64 | mips64el \ ++ | mips64vr | mips64vrel \ ++ | mips64orion | mips64orionel \ ++ | mips64vr4100 | mips64vr4100el \ ++ | mips64vr4300 | mips64vr4300el \ ++ | mips64vr5000 | mips64vr5000el \ ++ | mips64vr5900 | mips64vr5900el \ ++ | mipsisa32 | mipsisa32el \ ++ | mipsisa32r2 | mipsisa32r2el \ ++ | mipsisa64 | mipsisa64el \ ++ | mipsisa64r2 | mipsisa64r2el \ ++ | mipsisa64sb1 | mipsisa64sb1el \ ++ | mipsisa64sr71k | mipsisa64sr71kel \ ++ | mipstx39 | mipstx39el \ ++ | mn10200 | mn10300 \ ++ | mt \ ++ | msp430 \ ++ | nios | nios2 \ ++ | ns16k | ns32k \ ++ | or32 \ ++ | pdp10 | pdp11 | pj | pjl \ ++ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ ++ | pyramid \ ++ | score \ ++ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ ++ | sh64 | sh64le \ ++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ ++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ ++ | spu | strongarm \ ++ | tahoe | thumb | tic4x | tic80 | tron \ ++ | v850 | v850e \ ++ | we32k \ ++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ ++ | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) +@@ -252,6 +296,9 @@ + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; ++ ms1) ++ basic_machine=mt-unknown ++ ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and +@@ -265,31 +312,66 @@ + exit 1 + ;; + # Recognize the basic CPU types with company name. +- # FIXME: clean up the formatting here. +- vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ +- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ +- | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ +- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ +- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ +- | xmp-* | ymp-* \ +- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ +- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ +- | hppa2.0n-* | hppa64-* \ +- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ +- | alphaev6[78]-* \ +- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ +- | clipper-* | orion-* \ +- | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \ +- | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ +- | mips16-* | mips64-* | mipsel-* \ +- | mips64el-* | mips64orion-* | mips64orionel-* \ +- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ +- | mipstx39-* | mipstx39el-* | mcore-* \ +- | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ +- | [cjt]90-* \ +- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ +- | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ +- | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) ++ 580-* \ ++ | a29k-* \ ++ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ ++ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ ++ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ ++ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ ++ | avr-* | avr32-* \ ++ | bfin-* | bs2000-* \ ++ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ ++ | clipper-* | craynv-* | cydra-* \ ++ | d10v-* | d30v-* | dlx-* \ ++ | elxsi-* \ ++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ ++ | h8300-* | h8500-* \ ++ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ ++ | i*86-* | i860-* | i960-* | ia64-* \ ++ | ip2k-* | iq2000-* \ ++ | m32c-* | m32r-* | m32rle-* \ ++ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* \ ++ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ ++ | mips16-* \ ++ | mips64-* | mips64el-* \ ++ | mips64vr-* | mips64vrel-* \ ++ | mips64orion-* | mips64orionel-* \ ++ | mips64vr4100-* | mips64vr4100el-* \ ++ | mips64vr4300-* | mips64vr4300el-* \ ++ | mips64vr5000-* | mips64vr5000el-* \ ++ | mips64vr5900-* | mips64vr5900el-* \ ++ | mipsisa32-* | mipsisa32el-* \ ++ | mipsisa32r2-* | mipsisa32r2el-* \ ++ | mipsisa64-* | mipsisa64el-* \ ++ | mipsisa64r2-* | mipsisa64r2el-* \ ++ | mipsisa64sb1-* | mipsisa64sb1el-* \ ++ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ ++ | mipstx39-* | mipstx39el-* \ ++ | mmix-* \ ++ | mt-* \ ++ | msp430-* \ ++ | nios-* | nios2-* \ ++ | none-* | np1-* | ns16k-* | ns32k-* \ ++ | orion-* \ ++ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ ++ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ ++ | pyramid-* \ ++ | romp-* | rs6000-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ ++ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ ++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ ++ | sparclite-* \ ++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ ++ | tahoe-* | thumb-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ++ | tron-* \ ++ | v850-* | v850e-* | vax-* \ ++ | we32k-* \ ++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ ++ | xstormy16-* | xtensa-* \ ++ | ymp-* \ ++ | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. +@@ -307,6 +389,9 @@ + basic_machine=a29k-amd + os=-udi + ;; ++ abacus) ++ basic_machine=abacus-unknown ++ ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout +@@ -321,6 +406,12 @@ + basic_machine=a29k-none + os=-bsd + ;; ++ amd64) ++ basic_machine=x86_64-pc ++ ;; ++ amd64-*) ++ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + amdahl) + basic_machine=580-amdahl + os=-sysv +@@ -352,6 +443,10 @@ + basic_machine=ns32k-sequent + os=-dynix + ;; ++ c90) ++ basic_machine=c90-cray ++ os=-unicos ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -372,30 +467,45 @@ + basic_machine=c38-convex + os=-bsd + ;; +- cray | ymp) +- basic_machine=ymp-cray ++ cray | j90) ++ basic_machine=j90-cray + os=-unicos + ;; +- cray2) +- basic_machine=cray2-cray +- os=-unicos ++ craynv) ++ basic_machine=craynv-cray ++ os=-unicosmp + ;; +- [cjt]90) +- basic_machine=${basic_machine}-cray +- os=-unicos ++ cr16) ++ basic_machine=cr16-unknown ++ os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; ++ crisv32 | crisv32-* | etraxfs*) ++ basic_machine=crisv32-axis ++ ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; ++ crx) ++ basic_machine=crx-unknown ++ os=-elf ++ ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; ++ decsystem10* | dec10*) ++ basic_machine=pdp10-dec ++ os=-tops10 ++ ;; ++ decsystem20* | dec20*) ++ basic_machine=pdp10-dec ++ os=-tops20 ++ ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola +@@ -404,6 +514,10 @@ + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ djgpp) ++ basic_machine=i586-pc ++ os=-msdosdjgpp ++ ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx +@@ -569,6 +683,10 @@ + basic_machine=i386-pc + os=-mingw32 + ;; ++ mingw32ce) ++ basic_machine=arm-unknown ++ os=-mingw32ce ++ ;; + miniframe) + basic_machine=m68000-convergent + ;; +@@ -576,32 +694,27 @@ + basic_machine=m68k-atari + os=-mint + ;; +- mipsel*-linux*) +- basic_machine=mipsel-unknown +- os=-linux-gnu +- ;; +- mips*-linux*) +- basic_machine=mips-unknown +- os=-linux-gnu +- ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; +- mmix*) +- basic_machine=mmix-knuth +- os=-mmixware +- ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; ++ morphos) ++ basic_machine=powerpc-unknown ++ os=-morphos ++ ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; ++ ms1-*) ++ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ++ ;; + mvs) + basic_machine=i370-ibm + os=-mvs +@@ -677,6 +790,13 @@ + basic_machine=hppa1.1-oki + os=-proelf + ;; ++ openrisc | openrisc-*) ++ basic_machine=or32-unknown ++ ;; ++ os400) ++ basic_machine=powerpc-ibm ++ os=-os400 ++ ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose +@@ -699,42 +819,64 @@ + pbb) + basic_machine=m68k-tti + ;; +- pc532 | pc532-*) ++ pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; +- pentium | p5 | k5 | k6 | nexgen) ++ pc98) ++ basic_machine=i386-pc ++ ;; ++ pc98-*) ++ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; +- pentiumpro | p6 | 6x86 | athlon) ++ pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; +- pentiumii | pentium2) ++ pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; +- pentium-* | p5-* | k5-* | k6-* | nexgen-*) ++ pentium4) ++ basic_machine=i786-pc ++ ;; ++ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; +- pentiumii-* | pentium2-*) ++ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ pentium4-*) ++ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown +- ;; ++ ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown +- ;; ++ ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ++ ppc64) basic_machine=powerpc64-unknown ++ ;; ++ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; ++ ppc64le | powerpc64little | ppc64-le | powerpc64-little) ++ basic_machine=powerpc64le-unknown ++ ;; ++ ppc64le-* | powerpc64little-*) ++ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ++ ;; + ps2) + basic_machine=i386-ibm + ;; +@@ -742,6 +884,10 @@ + basic_machine=i586-unknown + os=-pw32 + ;; ++ rdos) ++ basic_machine=i386-pc ++ os=-rdos ++ ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff +@@ -752,10 +898,30 @@ + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; ++ s390 | s390-*) ++ basic_machine=s390-ibm ++ ;; ++ s390x | s390x-*) ++ basic_machine=s390x-ibm ++ ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; ++ sb1) ++ basic_machine=mipsisa64sb1-unknown ++ ;; ++ sb1el) ++ basic_machine=mipsisa64sb1el-unknown ++ ;; ++ sde) ++ basic_machine=mipsisa32-sde ++ os=-elf ++ ;; ++ sei) ++ basic_machine=mips-sei ++ os=-seiux ++ ;; + sequent) + basic_machine=i386-sequent + ;; +@@ -763,7 +929,13 @@ + basic_machine=sh-hitachi + os=-hms + ;; +- sparclite-wrs) ++ sh5el) ++ basic_machine=sh5le-unknown ++ ;; ++ sh64) ++ basic_machine=sh64-unknown ++ ;; ++ sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; +@@ -830,22 +1002,42 @@ + os=-dynix + ;; + t3e) +- basic_machine=t3e-cray ++ basic_machine=alphaev5-cray ++ os=-unicos ++ ;; ++ t90) ++ basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; ++ tic55x | c55x*) ++ basic_machine=tic55x-unknown ++ os=-coff ++ ;; ++ tic6x | c6x*) ++ basic_machine=tic6x-unknown ++ os=-coff ++ ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; ++ toad1) ++ basic_machine=pdp10-xkl ++ os=-tops20 ++ ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; ++ tpf) ++ basic_machine=s390x-ibm ++ os=-tpf ++ ;; + udi29k) + basic_machine=a29k-amd + os=-udi +@@ -867,8 +1059,8 @@ + os=-vms + ;; + vpp*|vx|vx-*) +- basic_machine=f301-fujitsu +- ;; ++ basic_machine=f301-fujitsu ++ ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks +@@ -889,17 +1081,17 @@ + basic_machine=hppa1.1-winbond + os=-proelf + ;; +- windows32) +- basic_machine=i386-pc +- os=-windows32-msvcrt +- ;; +- xmp) +- basic_machine=xmp-cray +- os=-unicos ++ xbox) ++ basic_machine=i686-pc ++ os=-mingw32 + ;; +- xps | xps100) ++ xps | xps100) + basic_machine=xps100-honeywell + ;; ++ ymp) ++ basic_machine=ymp-cray ++ os=-unicos ++ ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim +@@ -920,16 +1112,12 @@ + op60c) + basic_machine=hppa1.1-oki + ;; +- mips) +- if [ x$os = x-linux-gnu ]; then +- basic_machine=mips-unknown +- else +- basic_machine=mips-mips +- fi +- ;; + romp) + basic_machine=romp-ibm + ;; ++ mmix) ++ basic_machine=mmix-knuth ++ ;; + rs6000) + basic_machine=rs6000-ibm + ;; +@@ -946,13 +1134,13 @@ + we32k) + basic_machine=we32k-att + ;; +- sh3 | sh4 | sh3eb | sh4eb) ++ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; +- sparc | sparcv9 | sparcv9b) ++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; +- cydra) ++ cydra) + basic_machine=cydra-cydrome + ;; + orion) +@@ -967,10 +1155,6 @@ + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; +- c4x*) +- basic_machine=c4x-none +- os=-coff +- ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; +@@ -1026,16 +1210,23 @@ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ +- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ +- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ ++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ ++ | -openbsd* | -solidbsd* \ ++ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ ++ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ +- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ ++ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ ++ | -uxpv* | -beos* | -mpeix* | -udk* \ ++ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) ++ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ ++ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ ++ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ ++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1047,16 +1238,21 @@ + ;; + esac + ;; ++ -nto-qnx*) ++ ;; + -nto*) +- os=-nto-qnx ++ os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ +- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ ++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; ++ -linux-dietlibc) ++ os=-linux-dietlibc ++ ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; +@@ -1069,6 +1265,9 @@ + -opened*) + os=-openedition + ;; ++ -os400*) ++ os=-os400 ++ ;; + -wince*) + os=-wince + ;; +@@ -1087,14 +1286,23 @@ + -acis*) + os=-aos + ;; ++ -atheos*) ++ os=-atheos ++ ;; ++ -syllable*) ++ os=-syllable ++ ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; ++ -nova*) ++ os=-rtmk-nova ++ ;; + -ns2 ) +- os=-nextstep2 ++ os=-nextstep2 + ;; + -nsk*) + os=-nsk +@@ -1106,6 +1314,9 @@ + -sinix*) + os=-sysv4 + ;; ++ -tpf*) ++ os=-tpf ++ ;; + -triton*) + os=-sysv3 + ;; +@@ -1133,8 +1344,17 @@ + -xenix) + os=-xenix + ;; +- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) +- os=-mint ++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) ++ os=-mint ++ ;; ++ -aros*) ++ os=-aros ++ ;; ++ -kaos*) ++ os=-kaos ++ ;; ++ -zvmoe) ++ os=-zvmoe + ;; + -none) + ;; +@@ -1158,6 +1378,12 @@ + # system, and we'll never get to this point. + + case $basic_machine in ++ score-*) ++ os=-elf ++ ;; ++ spu-*) ++ os=-elf ++ ;; + *-acorn) + os=-riscix1.2 + ;; +@@ -1167,10 +1393,14 @@ + arm*-semi) + os=-aout + ;; ++ c4x-* | tic4x-*) ++ os=-coff ++ ;; ++ # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; +- pdp11-*) ++ pdp11-*) + os=-none + ;; + *-dec | vax-*) +@@ -1191,12 +1421,18 @@ + m68*-cisco) + os=-aout + ;; ++ mep-*) ++ os=-elf ++ ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; ++ or32-*) ++ os=-coff ++ ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; +@@ -1206,9 +1442,15 @@ + *-be) + os=-beos + ;; ++ *-haiku) ++ os=-haiku ++ ;; + *-ibm) + os=-aix + ;; ++ *-knuth) ++ os=-mmixware ++ ;; + *-wec) + os=-proelf + ;; +@@ -1260,19 +1502,19 @@ + *-next) + os=-nextstep3 + ;; +- *-gould) ++ *-gould) + os=-sysv + ;; +- *-highlevel) ++ *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; +- *-sgi) ++ *-sgi) + os=-irix + ;; +- *-siemens) ++ *-siemens) + os=-sysv4 + ;; + *-masscomp) +@@ -1341,10 +1583,16 @@ + -mvs* | -opened*) + vendor=ibm + ;; ++ -os400*) ++ vendor=ibm ++ ;; + -ptx*) + vendor=sequent + ;; +- -vxsim* | -vxworks*) ++ -tpf*) ++ vendor=ibm ++ ;; ++ -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) +@@ -1359,13 +1607,16 @@ + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; ++ -vos*) ++ vendor=stratus ++ ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; + esac + + echo $basic_machine$os +-exit 0 ++exit + + # Local variables: + # eval: (add-hook 'write-file-hooks 'time-stamp) +--- libfcgi-2.4.0.orig/missing ++++ libfcgi-2.4.0/missing +@@ -1,6 +1,10 @@ + #! /bin/sh + # Common stub for a few missing GNU programs while installing. +-# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. ++ ++scriptversion=2006-05-10.23 ++ ++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. + # Originally by Fran,cois Pinard , 1996. + + # This program is free software; you can redistribute it and/or modify +@@ -15,8 +19,8 @@ + + # 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. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ++# 02110-1301, USA. + + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -29,6 +33,8 @@ + fi + + run=: ++sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' ++sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + + # In the cases where this matters, `missing' is being run in the + # srcdir already. +@@ -38,18 +44,24 @@ + configure_ac=configure.in + fi + +-case "$1" in ++msg="missing on your system" ++ ++case $1 in + --run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 ++ # Exit code 63 means version mismatch. This often happens ++ # when the user try to use an ancient version of a tool on ++ # a file that requires a minimum version. In this case we ++ # we should proceed has if the program had been absent, or ++ # if --run hadn't been passed. ++ if test $? = 63; then ++ run=: ++ msg="probably too old" ++ fi + ;; +-esac +- +-# If it does not exist, or fails to run (possibly an outdated version), +-# try to emulate it. +-case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +@@ -67,6 +79,7 @@ + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' ++ autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c +@@ -74,11 +87,15 @@ + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags +- yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ++ yacc create \`y.tab.[ch]', if possible, from existing .[ch] ++ ++Send bug reports to ." ++ exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) +- echo "missing 0.3 - GNU automake" ++ echo "missing $scriptversion (GNU Automake)" ++ exit $? + ;; + + -*) +@@ -87,9 +104,44 @@ + exit 1 + ;; + +- aclocal) ++esac ++ ++# Now exit if we have it, but it failed. Also exit now if we ++# don't have it and --version was passed (most likely to detect ++# the program). ++case $1 in ++ lex|yacc) ++ # Not GNU programs, they don't have --version. ++ ;; ++ ++ tar) ++ if test -n "$run"; then ++ echo 1>&2 "ERROR: \`tar' requires --run" ++ exit 1 ++ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then ++ exit 1 ++ fi ++ ;; ++ ++ *) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then ++ # Could not run --version or --help. This is probably someone ++ # running `$TOOL --version' or `$TOOL --help' to check whether ++ # $TOOL exists and not knowing $TOOL uses missing. ++ exit 1 ++ fi ++ ;; ++esac ++ ++# If it does not exist, or fails to run (possibly an outdated version), ++# try to emulate it. ++case $1 in ++ aclocal*) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." +@@ -98,7 +150,7 @@ + + autoconf) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." +@@ -107,7 +159,7 @@ + + autoheader) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." +@@ -115,7 +167,7 @@ + test -z "$files" && files="config.h" + touch_files= + for f in $files; do +- case "$f" in ++ case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; +@@ -124,9 +176,9 @@ + touch $touch_files + ;; + +- automake) ++ automake*) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." +@@ -135,71 +187,92 @@ + while read f; do touch "$f"; done + ;; + ++ autom4te) ++ echo 1>&2 "\ ++WARNING: \`$1' is needed, but is $msg. ++ You might have modified some files without having the ++ proper tools for further handling them. ++ You can get \`$1' as part of \`Autoconf' from any GNU ++ archive site." ++ ++ file=`echo "$*" | sed -n "$sed_output"` ++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` ++ if test -f "$file"; then ++ touch $file ++ else ++ test -z "$file" || exec >$file ++ echo "#! /bin/sh" ++ echo "# Created by GNU Automake missing as a replacement of" ++ echo "# $ $@" ++ echo "exit 0" ++ chmod +x $file ++ exit 1 ++ fi ++ ;; ++ + bison|yacc) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h +- if [ $# -ne 1 ]; then ++ if test $# -ne 1; then + eval LASTARG="\${$#}" +- case "$LASTARG" in ++ case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` +- if [ -f "$SRCFILE" ]; then ++ if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` +- if [ -f "$SRCFILE" ]; then ++ if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi +- if [ ! -f y.tab.h ]; then ++ if test ! -f y.tab.h; then + echo >y.tab.h + fi +- if [ ! -f y.tab.c ]; then ++ if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c +- if [ $# -ne 1 ]; then ++ if test $# -ne 1; then + eval LASTARG="\${$#}" +- case "$LASTARG" in ++ case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` +- if [ -f "$SRCFILE" ]; then ++ if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi +- if [ ! -f lex.yy.c ]; then ++ if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + +- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` +- if test -z "$file"; then +- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` +- fi +- if [ -f "$file" ]; then ++ file=`echo "$*" | sed -n "$sed_output"` ++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` ++ if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file +@@ -209,54 +282,58 @@ + ;; + + makeinfo) +- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then +- # We have makeinfo, but it failed. +- exit 1 +- fi +- + echo 1>&2 "\ +-WARNING: \`$1' is missing on your system. You should only need it if ++WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." +- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` ++ # The file to touch is that specified with -o ... ++ file=`echo "$*" | sed -n "$sed_output"` ++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then +- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` +- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` +- fi ++ # ... or it is the one specified with @setfilename ... ++ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` ++ file=`sed -n ' ++ /^@setfilename/{ ++ s/.* \([^ ]*\) *$/\1/ ++ p ++ q ++ }' $infile` ++ # ... or it is derived from the source name (dir/f.texi becomes f.info) ++ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info ++ fi ++ # If the file does not exist, the user really needs makeinfo; ++ # let's fail without touching anything. ++ test -f $file || exit 1 + touch $file + ;; + + tar) + shift +- if test -n "$run"; then +- echo 1>&2 "ERROR: \`tar' requires --run" +- exit 1 +- fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then +- gnutar ${1+"$@"} && exit 0 ++ gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then +- gtar ${1+"$@"} && exit 0 ++ gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then +- case "$firstarg" in ++ case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` +- tar "$firstarg" ${1+"$@"} && exit 0 ++ tar "$firstarg" "$@" && exit 0 + ;; + esac +- case "$firstarg" in ++ case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` +- tar "$firstarg" ${1+"$@"} && exit 0 ++ tar "$firstarg" "$@" && exit 0 + ;; + esac + fi +@@ -270,10 +347,10 @@ + + *) + echo 1>&2 "\ +-WARNING: \`$1' is needed, and you do not seem to have it handy on your +- system. You might have modified some files without having the ++WARNING: \`$1' is needed, and is $msg. ++ You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, +- it often tells you about the needed prerequirements for installing ++ it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 +@@ -281,3 +358,10 @@ + esac + + exit 0 ++ ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/stamp-h ++++ libfcgi-2.4.0/stamp-h +@@ -0,0 +1 @@ ++timestamp +--- libfcgi-2.4.0.orig/debian/dirs ++++ libfcgi-2.4.0/debian/dirs +@@ -0,0 +1 @@ ++lib +--- libfcgi-2.4.0.orig/debian/control ++++ libfcgi-2.4.0/debian/control +@@ -0,0 +1,26 @@ ++Source: libfcgi ++Priority: optional ++Maintainer: Tatsuki Sugiura ++Build-Depends: debhelper (>> 4.0.0) ++Standards-Version: 3.7.2 ++ ++Package: libfcgi-dev ++Section: libdevel ++Architecture: any ++Depends: libfcgi0ldbl (= ${binary:Version}) ++Description: Header files of FastCGI ++ FastCGI is a language independent, scalable, open extension ++ to CGI that provides high performance without the limitations ++ of server specific APIs. ++ ++Package: libfcgi0ldbl ++Provides: libfcgi ++Section: libs ++Architecture: any ++Depends: ${shlibs:Depends} ++Conflicts: libfcgi0, libfcgi0c2 ++Replaces: libfcgi0, libfcgi0c2 ++Description: Shared library of FastCGI ++ FastCGI is a language independent, scalable, open extension ++ to CGI that provides high performance without the limitations ++ of server specific APIs. +--- libfcgi-2.4.0.orig/debian/rules ++++ libfcgi-2.4.0/debian/rules +@@ -0,0 +1,114 @@ ++#!/usr/bin/make -f ++# Sample debian/rules that uses debhelper. ++# GNU copyright 1997 to 1999 by Joey Hess. ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++ ++# These are used for cross-compiling and for saving the configure script ++# from having to guess our platform (since we know it already) ++DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) ++DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ++ ++ ++CFLAGS = -Wall -g ++ ++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) ++ CFLAGS += -O0 ++else ++ CFLAGS += -O2 ++endif ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) ++ INSTALL_PROGRAM += -s ++endif ++ ++# shared library versions, option 1 ++version=2.0.5 ++major=2 ++# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so ++#version=`ls src/.libs/lib*.so.* | \ ++# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` ++#major=`ls src/.libs/lib*.so.* | \ ++# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` ++ ++config.status: configure ++ dh_testdir ++ # Add here commands to configure the package. ++ ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info ++ ++ ++build: build-stamp ++build-stamp: config.status ++ dh_testdir ++ ++ # Add here commands to compile the package. ++ $(MAKE) ++ ++ touch build-stamp ++ ++clean: ++ dh_testdir ++ dh_testroot ++ rm -f build-stamp ++ ++ # Add here commands to clean up after the build process. ++ test ! -f Makefile || $(MAKE) distclean ++ifneq "$(wildcard /usr/share/misc/config.sub)" "" ++ cp -f /usr/share/misc/config.sub config.sub ++endif ++ifneq "$(wildcard /usr/share/misc/config.guess)" "" ++ cp -f /usr/share/misc/config.guess config.guess ++endif ++ ++ ++ dh_clean ++ ++install: build ++ dh_testdir ++ dh_testroot ++ dh_clean -k ++ dh_installdirs ++ ++ # Add here commands to install the package into debian/tmp ++ $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp ++ dh_movefiles ++ ++ ++# Build architecture-independent files here. ++binary-indep: build install ++# We have nothing to do by default. ++ ++# Build architecture-dependent files here. ++binary-arch: build install ++ dh_testdir ++ dh_testroot ++ dh_installchangelogs ++ dh_installdocs ++ dh_installexamples ++# dh_install ++# dh_installmenu ++# dh_installdebconf ++# dh_installlogrotate ++# dh_installemacsen ++# dh_installpam ++# dh_installmime ++# dh_installinit ++# dh_installcron ++# dh_installinfo ++ dh_installman -p libfcgi0ldbl debian/cgi-fcgi.1 ++ dh_link ++ dh_strip ++ dh_compress ++ dh_fixperms ++# dh_perl ++# d_python ++ dh_makeshlibs ++ dh_installdeb ++ dh_shlibdeps ++ dh_gencontrol ++ dh_md5sums ++ dh_builddeb ++ ++binary: binary-indep binary-arch ++.PHONY: build clean binary-indep binary-arch binary install +--- libfcgi-2.4.0.orig/debian/watch ++++ libfcgi-2.4.0/debian/watch +@@ -0,0 +1,6 @@ ++# Example watch control file for uscan ++# Rename this file to "watch" and then you can run the "uscan" command ++# to check for upstream updates and more. ++# Site Directory Pattern Version Script ++version=2 ++http://www.fastcgi.com/dist/ fcgi-([0-9\.-]*)\.tar\.gz debian uupdate +--- libfcgi-2.4.0.orig/debian/shlibs.local ++++ libfcgi-2.4.0/debian/shlibs.local +@@ -0,0 +1 @@ ++liblibfcgi 0.0.0 libfcgi0c0 (>> 2.4.0-0), libfcgi0c0 (<< 2.4.0-99) +--- libfcgi-2.4.0.orig/debian/changelog ++++ libfcgi-2.4.0/debian/changelog +@@ -0,0 +1,43 @@ ++libfcgi (2.4.0-7) unstable; urgency=low ++ ++ * rebuild for long double 128bit transition. (Closes: #430250) ++ * update autotools scripts ++ ++ -- Tatsuki Sugiura Tue, 5 Sep 2006 18:11:06 +0900 ++ ++libfcgi (2.4.0-6) unstable; urgency=low ++ ++ * rebuild for new libstdc++ ++ ++ -- Tatsuki Sugiura Tue, 5 Sep 2006 08:19:25 +0900 ++ ++libfcgi (2.4.0-5) unstable; urgency=low ++ ++ * fixed: package description (Closes: #226030) ++ ++ -- Tatsuki Sugiura Mon, 5 Jan 2004 18:40:30 +0900 ++ ++libfcgi (2.4.0-4) unstable; urgency=low ++ ++ * re-libtoolize for mips and mipsel (Closes: #213951) ++ ++ -- Tatsuki Sugiura Tue, 18 Nov 2003 05:39:33 +0900 ++ ++libfcgi (2.4.0-3) unstable; urgency=low ++ ++ * upload official debian archive agein (Closes: #203590) ++ ++ -- Tatsuki Sugiura Sun, 21 Sep 2003 04:45:12 +0900 ++ ++libfcgi (2.4.0-2) unstable; urgency=low ++ ++ * upload official debian archive (Closes: #203590) ++ ++ -- Tatsuki Sugiura Mon, 8 Sep 2003 16:11:52 +0900 ++ ++libfcgi (2.4.0-1) unstable; urgency=low ++ ++ * Initial Release. ++ ++ -- Tatsuki Sugiura Tue, 8 Jul 2003 13:58:36 +0900 ++ +--- libfcgi-2.4.0.orig/debian/libfcgi0ldbl.files ++++ libfcgi-2.4.0/debian/libfcgi0ldbl.files +@@ -0,0 +1,2 @@ ++usr/bin/* ++usr/lib/lib*.so.* +--- libfcgi-2.4.0.orig/debian/compat ++++ libfcgi-2.4.0/debian/compat +@@ -0,0 +1 @@ ++4 +--- libfcgi-2.4.0.orig/debian/libfcgi0ldbl.docs ++++ libfcgi-2.4.0/debian/libfcgi0ldbl.docs +@@ -0,0 +1,4 @@ ++README ++doc/fastcgi-prog-guide/* ++doc/fastcgi-whitepaper/* ++doc/* +--- libfcgi-2.4.0.orig/debian/cgi-fcgi.1 ++++ libfcgi-2.4.0/debian/cgi-fcgi.1 +@@ -0,0 +1,135 @@ ++.\" Hey, EMACS: -*- nroff -*- ++.\" First parameter, NAME, should be all caps ++.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection ++.\" other parameters are allowed: see man(7), man(1) ++.TH cgi-fcgi 1 1997-09-17 ++.\" Please adjust this date whenever revising the manpage. ++.\" ++.\" Some roff macros, for reference: ++.\" .nh disable hyphenation ++.\" .hy enable hyphenation ++.\" .ad l left justify ++.\" .ad b justify to both left and right margins ++.\" .nf disable filling ++.\" .fi enable filling ++.\" .br insert line break ++.\" .sp insert n+1 empty lines ++.\" for manpage-specific macros, see man(7) ++.SH NAME ++cgi-fcgi \- bridge from CGI to FastCGI ++.SH SYNOPSIS ++.B cgi-fcgi ++-f cmdPath ++.br ++.B cgi-fcgi ++-bind -connect connName ++.br ++.B cgi-fcgi ++-start -connect connName appPath [nServers] ++.br ++.B cgi-fcgi ++-connect connName appPath [nServers] ++.SH DESCRIPTION ++.PP ++cgi-fcgi is a CGI/1.1 program that communicates with an ++already-running FastCGI application in order to respond to an ++HTTP request. cgi-fcgi is also capable of starting a FastCGI ++application. ++.PP ++When you invoke cgi-fcgi as ++.IP ++.B cgi-fcgi ++-f cmdPath ++.PP ++then cgi-fcgi opens the file at cmdPath and reads its ++arguments from that file. cgi-fcgi will skip lines ++that begin with the comment character #. The first ++non-comment line should contain valid arguments in ++one of the other three forms. ++.PP ++The -f form of cgi-fcgi is designed for Unix systems ++whose exec(2) family of system calls supports the execution of ++command interpreter files. For instance, if a file with ++execute permission contains the text ++.IP ++#! /bin/cgi-fcgi -f ++.br ++-connect /httpd/root/sock/app /httpd/root/bin/app ++.PP ++the effect is the same as executing ++.IP ++/usr/bin/cgi-fcgi -connect /httpd/root/sock/app /httpd/root/bin/app ++.PP ++When you invoke cgi-fcgi as ++.IP ++cgi-fcgi -bind -connect connName ++.PP ++the connName argument is either the path name of a Unix domain ++listening socket or a host:port pair. If connName contains ++a colon, it is assumed to be host:port. cgi-fcgi performs ++a connect(2) using connName. If the connect succeeds, cgi-fcgi ++forwards the CGI environment variables and stdin data to the ++FastCGI application, and forwards the stdout and stderr data from ++the application to cgi-fcgi's stdout (most likely connected to ++a Web server). When the FastCGI application signals the end of ++its response, cgi-fcgi flushes its buffers and ++exits, and the Web server completes the http response. ++.PP ++When you invoke cgi-fcgi as ++.IP ++cgi-fcgi -start -connect connName appPath [nServers] ++.PP ++then cgi-fcgi performs the function of starting one or more ++FastCGI application processes. The connName argument specifies ++either the path name of the Unix domain listening socket that ++cgi-fcgi will create, or is "localhost:NNN" where NNN is the port ++number of the TCP/IP listening socket that cgi-fcgi will create ++on the local machine. (cgi-fcgi will not create processes ++on remote machines.) After cgi-fcgi creates the listening socket, ++it forks nServers copies of a process running the executable file ++appPath. If nServers is omitted, the effect is as if the value "1" ++had been specified. The processes share the single listening socket. ++.PP ++When you invoke cgi-fcgi as ++.IP ++cgi-fcgi -connect connName appPath [nServers] ++.PP ++cgi-fcgi performs -bind and then, if necssary, performs -start ++and repeats the -bind. That is, cgi-fcgi first operates as if ++the command had been ++.IP ++cgi-fcgi -bind -connect connName ++.PP ++If the connect fails, cgi-fcgi tries ++.IP ++cgi-fcgi -start -connect connName appPath [nServers] ++.PP ++and finally retries ++.IP ++cgi-fcgi -bind -connect connName ++.PP ++In this form, cgi-fcgi does not support TCP/IP connections. ++.SH ENVIRONMENT VARIABLES ++The usual CGI ones, but they are not interpreted by cgi-fcgi. ++.SH SEE ALSO ++.BR FGCI_accept (3). ++ (in Debian, /usr/share/doc/libfcgi?/*) ++.SH BUGS ++cgi-fcgi doesn't generate useful HTTP responses in case of error, ++and it generates no response at all when run as start-fcgi. ++.PP ++On Digital UNIX 3.0 systems the implementation of Unix Domain ++sockets does not work when such sockets are stored on NFS file ++systems. Symptom: cgi-fcgi may core dump or may exit with ++status 38. Work-around: store sockets in local file systems ++(/tmp often works) or use TCP/IP. ++.PP ++On AIX systems the implementation of listening sockets ++does not support socket sharing, and the standard FastCGI ++application libraries can't synchronize access to AIX listening ++sockets. Work-around: Don't use the nServers argument on AIX. ++.SH HISTORY ++Copyright (c) 1996 Open Market, Inc. ++See the file "LICENSE.TERMS" for information on usage and redistribution ++of this file, and for a DISCLAIMER OF ALL WARRANTIES. ++$Id: cgi-fcgi.1,v 1.1.1.1 1997/09/16 15:36:26 stanleyg Exp $ +--- libfcgi-2.4.0.orig/debian/copyright ++++ libfcgi-2.4.0/debian/copyright +@@ -0,0 +1,37 @@ ++This package was debianized by Tatsuki Sugiura on ++Tue, 8 Jul 2003 13:58:36 +0900. ++ ++It was downloaded from http://www.fastcgi.com/#TheDevKit ++ ++Upstream Author: Open Market, Inc. ++ ++Copyright: ++ ++This FastCGI application library source and object code (the ++"Software") and its documentation (the "Documentation") are ++copyrighted by Open Market, Inc ("Open Market"). The following terms ++apply to all files associated with the Software and Documentation ++unless explicitly disclaimed in individual files. ++ ++Open Market permits you to use, copy, modify, distribute, and license ++this Software and the Documentation for any purpose, provided that ++existing copyright notices are retained in all copies and that this ++notice is included verbatim in any distributions. No written ++agreement, license, or royalty fee is required for any of the ++authorized uses. Modifications to this Software and Documentation may ++be copyrighted by their authors and need not follow the licensing ++terms described here. If modifications to this Software and ++Documentation have new licensing terms, the new terms must be clearly ++indicated on the first page of each file where they apply. ++ ++OPEN MARKET MAKES NO EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE ++SOFTWARE OR THE DOCUMENTATION, INCLUDING WITHOUT LIMITATION ANY ++WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN ++NO EVENT SHALL OPEN MARKET BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY ++DAMAGES ARISING FROM OR RELATING TO THIS SOFTWARE OR THE ++DOCUMENTATION, INCLUDING, WITHOUT LIMITATION, ANY INDIRECT, SPECIAL OR ++CONSEQUENTIAL DAMAGES OR SIMILAR DAMAGES, INCLUDING LOST PROFITS OR ++LOST DATA, EVEN IF OPEN MARKET HAS BEEN ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGES. THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS". ++OPEN MARKET HAS NO LIABILITY IN CONTRACT, TORT, NEGLIGENCE OR ++OTHERWISE ARISING OUT OF THIS SOFTWARE OR THE DOCUMENTATION. +--- libfcgi-2.4.0.orig/debian/libfcgi-dev.files ++++ libfcgi-2.4.0/debian/libfcgi-dev.files +@@ -0,0 +1,5 @@ ++usr/include/* ++usr/lib/lib*.a ++usr/lib/lib*.so ++usr/lib/pkgconfig/* ++/usr/lib/*.la +--- libfcgi-2.4.0.orig/mkinstalldirs ++++ libfcgi-2.4.0/mkinstalldirs +@@ -1,40 +1,161 @@ + #! /bin/sh + # mkinstalldirs --- make directory hierarchy +-# Author: Noah Friedman +-# Created: 1993-05-16 +-# Public domain + +-# $Id: mkinstalldirs,v 1.1 2001/09/21 15:05:21 skimo Exp $ ++scriptversion=2006-05-11.19 + ++# Original author: Noah Friedman ++# Created: 1993-05-16 ++# Public domain. ++# ++# This file is maintained in Automake, please report ++# bugs to or send patches to ++# . ++ ++nl=' ++' ++IFS=" "" $nl" + errstatus=0 ++dirmode= ++ ++usage="\ ++Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... ++ ++Create each directory DIR (with mode MODE, if specified), including all ++leading file name components. ++ ++Report bugs to ." ++ ++# process command line arguments ++while test $# -gt 0 ; do ++ case $1 in ++ -h | --help | --h*) # -h for help ++ echo "$usage" ++ exit $? ++ ;; ++ -m) # -m PERM arg ++ shift ++ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } ++ dirmode=$1 ++ shift ++ ;; ++ --version) ++ echo "$0 $scriptversion" ++ exit $? ++ ;; ++ --) # stop option processing ++ shift ++ break ++ ;; ++ -*) # unknown option ++ echo "$usage" 1>&2 ++ exit 1 ++ ;; ++ *) # first non-opt arg ++ break ++ ;; ++ esac ++done + + for file + do +- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` +- shift ++ if test -d "$file"; then ++ shift ++ else ++ break ++ fi ++done ++ ++case $# in ++ 0) exit 0 ;; ++esac ++ ++# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and ++# mkdir -p a/c at the same time, both will detect that a is missing, ++# one will create a, then the other will try to create a and die with ++# a "File exists" error. This is a problem when calling mkinstalldirs ++# from a parallel make. We use --version in the probe to restrict ++# ourselves to GNU mkdir, which is thread-safe. ++case $dirmode in ++ '') ++ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ echo "mkdir -p -- $*" ++ exec mkdir -p -- "$@" ++ else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ test -d ./-p && rmdir ./-p ++ test -d ./--version && rmdir ./--version ++ fi ++ ;; ++ *) ++ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && ++ test ! -d ./--version; then ++ echo "mkdir -m $dirmode -p -- $*" ++ exec mkdir -m "$dirmode" -p -- "$@" ++ else ++ # Clean up after NextStep and OpenStep mkdir. ++ for d in ./-m ./-p ./--version "./$dirmode"; ++ do ++ test -d $d && rmdir $d ++ done ++ fi ++ ;; ++esac + +- pathcomp= +- for d +- do +- pathcomp="$pathcomp$d" +- case "$pathcomp" in +- -* ) pathcomp=./$pathcomp ;; +- esac +- +- if test ! -d "$pathcomp"; then +- echo "mkdir $pathcomp" +- +- mkdir "$pathcomp" || lasterr=$? +- +- if test ! -d "$pathcomp"; then +- errstatus=$lasterr +- fi +- fi ++for file ++do ++ case $file in ++ /*) pathcomp=/ ;; ++ *) pathcomp= ;; ++ esac ++ oIFS=$IFS ++ IFS=/ ++ set fnord $file ++ shift ++ IFS=$oIFS ++ ++ for d ++ do ++ test "x$d" = x && continue ++ ++ pathcomp=$pathcomp$d ++ case $pathcomp in ++ -*) pathcomp=./$pathcomp ;; ++ esac ++ ++ if test ! -d "$pathcomp"; then ++ echo "mkdir $pathcomp" ++ ++ mkdir "$pathcomp" || lasterr=$? ++ ++ if test ! -d "$pathcomp"; then ++ errstatus=$lasterr ++ else ++ if test ! -z "$dirmode"; then ++ echo "chmod $dirmode $pathcomp" ++ lasterr= ++ chmod "$dirmode" "$pathcomp" || lasterr=$? ++ ++ if test ! -z "$lasterr"; then ++ errstatus=$lasterr ++ fi ++ fi ++ fi ++ fi + +- pathcomp="$pathcomp/" +- done ++ pathcomp=$pathcomp/ ++ done + done + + exit $errstatus + +-# mkinstalldirs ends here ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +--- libfcgi-2.4.0.orig/Makefile.in ++++ libfcgi-2.4.0/Makefile.in +@@ -1,6 +1,7 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.6.3 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 ++# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 + # Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -18,7 +19,6 @@ + # + # $Id: Makefile.am,v 1.7 2001/12/22 13:05:39 robs Exp $ + # +- + SHELL = @SHELL@ + + srcdir = @srcdir@ +@@ -49,9 +49,13 @@ + AUTOMAKE = @AUTOMAKE@ + AUTOHEADER = @AUTOHEADER@ + ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_DATA = @INSTALL_DATA@ ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_HEADER = $(INSTALL_DATA) + transform = @program_transform_name@ +@@ -63,6 +67,10 @@ + POST_UNINSTALL = : + host_alias = @host_alias@ + host_triplet = @host@ ++ ++EXEEXT = @EXEEXT@ ++OBJEXT = @OBJEXT@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + AMTAR = @AMTAR@ + AS = @AS@ + AWK = @AWK@ +@@ -73,13 +81,11 @@ + DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ + ECHO_CPP = @ECHO_CPP@ +-EXEEXT = @EXEEXT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LIBFCGIXX = @LIBFCGIXX@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ + OBJDUMP = @OBJDUMP@ +-OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +@@ -191,31 +197,23 @@ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +-DIST_COMMON = README $(include_HEADERS) ./stamp-h.in Makefile.am \ +- Makefile.in acinclude.m4 aclocal.m4 compile config.guess \ +- config.sub configure configure.in depcomp fcgi_config.h.in \ +- install-sh ltmain.sh missing mkinstalldirs ++DIST_COMMON = README $(include_HEADERS) Makefile.am Makefile.in \ ++ acinclude.m4 aclocal.m4 compile config.guess config.sub \ ++ configure configure.in depcomp fcgi_config.h.in install-sh \ ++ ltmain.sh missing mkinstalldirs + DIST_SUBDIRS = $(SUBDIRS) + all: fcgi_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: + +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno + $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign Makefile ++ $(AUTOMAKE) --gnu Makefile + Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$@ $(SHELL) ./config.status ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + + $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +@@ -224,40 +222,42 @@ + + $(ACLOCAL_M4): configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +-fcgi_config.h: stamp-h +- @if test ! -f $@; then \ +- rm -f stamp-h; \ +- $(MAKE) stamp-h; \ +- else :; fi +-stamp-h: $(srcdir)/fcgi_config.h.in $(top_builddir)/config.status +- @rm -f stamp-h stamp-hT +- @echo timestamp > stamp-hT 2> /dev/null +- cd $(top_builddir) \ +- && CONFIG_FILES= CONFIG_HEADERS=fcgi_config.h \ +- $(SHELL) ./config.status +- @mv stamp-hT stamp-h +-$(srcdir)/fcgi_config.h.in: $(srcdir)/./stamp-h.in ++ ++fcgi_config.h: stamp-h1 + @if test ! -f $@; then \ +- rm -f $(srcdir)/./stamp-h.in; \ +- $(MAKE) $(srcdir)/./stamp-h.in; \ ++ rm -f stamp-h1; \ ++ $(MAKE) stamp-h1; \ + else :; fi +-$(srcdir)/./stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) +- @rm -f $(srcdir)/./stamp-h.in $(srcdir)/./stamp-h.inT +- @echo timestamp > $(srcdir)/./stamp-h.inT 2> /dev/null ++ ++stamp-h1: $(srcdir)/fcgi_config.h.in $(top_builddir)/config.status ++ @rm -f stamp-h1 ++ cd $(top_builddir) && $(SHELL) ./config.status fcgi_config.h ++ ++$(srcdir)/fcgi_config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) +- @mv $(srcdir)/./stamp-h.inT $(srcdir)/./stamp-h.in ++ touch $(srcdir)/fcgi_config.h.in + + distclean-hdr: +- -rm -f fcgi_config.h ++ -rm -f fcgi_config.h stamp-h1 ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++distclean-libtool: ++ -rm -f libtool + uninstall-info-am: ++includeHEADERS_INSTALL = $(INSTALL_HEADER) + install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(includedir) + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ +- $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f; \ ++ echo " $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ ++ $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f; \ + done + + uninstall-includeHEADERS: +@@ -275,7 +275,7 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $(MAKEFLAGS); amf=$$2; \ ++ @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -295,7 +295,7 @@ + + mostlyclean-recursive clean-recursive distclean-recursive \ + maintainer-clean-recursive: +- @set fnord $(MAKEFLAGS); amf=$$2; \ ++ @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -323,16 +323,19 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + ++ETAGS = etags ++ETAGSFLAGS = ++ + tags: TAGS + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique + + TAGS: tags-recursive $(HEADERS) $(SOURCES) fcgi_config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -343,51 +346,61 @@ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) fcgi_config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)fcgi_config.h.in$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags fcgi_config.h.in $$unique $(LISP) ++ test -z "$(ETAGS_ARGS)$$tags$$unique" \ ++ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + + top_distdir = . +-# Avoid unsightly `./'. + distdir = $(PACKAGE)-$(VERSION) + ++am__remove_distdir = \ ++ { test ! -d $(distdir) \ ++ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ ++ && rm -fr $(distdir); }; } ++ + GZIP_ENV = --best ++distcleancheck_listfiles = find . -type f -print + + distdir: $(DISTFILES) +- -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) ++ $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/Win32 $(distdir)/cgi-fcgi $(distdir)/doc $(distdir)/doc/fastcgi-prog-guide $(distdir)/doc/fastcgi-whitepaper $(distdir)/examples $(distdir)/images $(distdir)/include $(distdir)/java $(distdir)/libfcgi $(distdir)/perl +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ ++ @list='$(DISTFILES)'; for file in $$list; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ ++ dir="/$$dir"; \ ++ $(mkinstalldirs) "$(distdir)$$dir"; \ ++ else \ ++ dir=''; \ + fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +- for subdir in $(SUBDIRS); do \ ++ list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ +@@ -405,23 +418,28 @@ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +-dist: distdir ++dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) ++ $(am__remove_distdir) ++ ++dist dist-all: distdir ++ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ $(am__remove_distdir) + + # This target untars the dist file and tries a VPATH configuration. Then + # it guarantees that the distribution is self-contained by making another + # tarfile. + distcheck: dist +- -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) ++ $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) +- dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \ ++ dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ + && cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ ++ $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ +@@ -429,17 +447,24 @@ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ +- || (echo "Error: files left after uninstall" 1>&2; \ +- exit 1) ) \ +- && $(MAKE) $(AM_MAKEFLAGS) dist \ +- && $(MAKE) $(AM_MAKEFLAGS) distclean \ ++ || { echo "ERROR: files left after uninstall:" ; \ ++ find $$dc_install_base -type f -print ; \ ++ exit 1; } >&2 ) \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ +- && (test `find . -type f -print | wc -l` -eq 0 \ +- || (echo "Error: files left after distclean" 1>&2; \ +- exit 1) ) +- -chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir) ++ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck ++ $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' ++distcleancheck: distclean ++ if test '$(srcdir)' = . ; then \ ++ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ ++ exit 1 ; \ ++ fi ++ test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ ++ || { echo "ERROR: files left after distclean:" ; \ ++ $(distcleancheck_listfiles) ; \ ++ exit 1; } >&2 + check-am: all-am + check: check-recursive + all-am: Makefile $(HEADERS) fcgi_config.h +@@ -458,6 +483,7 @@ + installcheck: installcheck-recursive + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -465,7 +491,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -rm -f Makefile $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -474,11 +500,8 @@ + + clean-am: clean-generic clean-libtool mostlyclean-am + +-dist-all: distdir +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- -chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir) + distclean: distclean-recursive +- -rm -f config.status config.cache config.log ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) + distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +@@ -501,7 +524,8 @@ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +- ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf autom4te.cache + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-recursive +@@ -514,20 +538,20 @@ + + .PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive dist dist-all \ +- distcheck distclean distclean-generic distclean-hdr \ +- distclean-libtool distclean-recursive distclean-tags distdir \ +- dvi dvi-am dvi-recursive info info-am info-recursive install \ +- install-am install-data install-data-am install-data-recursive \ +- install-exec install-exec-am install-exec-recursive \ +- install-includeHEADERS install-info install-info-am \ +- install-info-recursive install-man install-recursive \ +- install-strip installcheck installcheck-am installdirs \ +- installdirs-am installdirs-recursive maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive mostlyclean \ +- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ +- tags tags-recursive uninstall uninstall-am \ +- uninstall-includeHEADERS uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++ dist-gzip distcheck distclean distclean-generic distclean-hdr \ ++ distclean-libtool distclean-recursive distclean-tags \ ++ distcleancheck distdir dvi dvi-am dvi-recursive info info-am \ ++ info-recursive install install-am install-data install-data-am \ ++ install-data-recursive install-exec install-exec-am \ ++ install-exec-recursive install-includeHEADERS install-info \ ++ install-info-am install-info-recursive install-man \ ++ install-recursive install-strip installcheck installcheck-am \ ++ installdirs installdirs-am installdirs-recursive \ ++ maintainer-clean maintainer-clean-generic \ ++ maintainer-clean-recursive mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool mostlyclean-recursive tags tags-recursive \ ++ uninstall uninstall-am uninstall-includeHEADERS \ ++ uninstall-info-am uninstall-info-recursive uninstall-recursive + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/examples/Makefile.in ++++ libfcgi-2.4.0/examples/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -15,359 +16,437 @@ + + # $Id: Makefile.am,v 1.8 2001/12/22 03:16:21 robs Exp $ + +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++noinst_PROGRAMS = authorizer$(EXEEXT) echo$(EXEEXT) echo-x$(EXEEXT) \ ++ log-dump$(EXEEXT) size$(EXEEXT) @THREADED@ @ECHO_CPP@ ++EXTRA_PROGRAMS = threaded$(EXEEXT) echo-cpp$(EXEEXT) ++subdir = examples ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++PROGRAMS = $(noinst_PROGRAMS) ++am__objects_1 = ++am_authorizer_OBJECTS = $(am__objects_1) authorizer.$(OBJEXT) ++authorizer_OBJECTS = $(am_authorizer_OBJECTS) ++authorizer_LDADD = $(LDADD) ++authorizer_DEPENDENCIES = $(LIBFCGI) ++am_echo_OBJECTS = $(am__objects_1) echo.$(OBJEXT) ++echo_OBJECTS = $(am_echo_OBJECTS) ++echo_LDADD = $(LDADD) ++echo_DEPENDENCIES = $(LIBFCGI) ++am_echo_cpp_OBJECTS = $(am__objects_1) echo-cpp.$(OBJEXT) ++echo_cpp_OBJECTS = $(am_echo_cpp_OBJECTS) ++echo_cpp_DEPENDENCIES = $(LIBDIR)/libfcgi++.la ++am_echo_x_OBJECTS = $(am__objects_1) echo-x.$(OBJEXT) ++echo_x_OBJECTS = $(am_echo_x_OBJECTS) ++echo_x_LDADD = $(LDADD) ++echo_x_DEPENDENCIES = $(LIBFCGI) ++am_log_dump_OBJECTS = $(am__objects_1) log-dump.$(OBJEXT) ++log_dump_OBJECTS = $(am_log_dump_OBJECTS) ++log_dump_LDADD = $(LDADD) ++log_dump_DEPENDENCIES = $(LIBFCGI) ++size_SOURCES = size.c ++size_OBJECTS = size.$(OBJEXT) ++size_LDADD = $(LDADD) ++size_DEPENDENCIES = $(LIBFCGI) ++am_threaded_OBJECTS = $(am__objects_1) threaded-threaded.$(OBJEXT) ++threaded_OBJECTS = $(am_threaded_OBJECTS) ++threaded_LDADD = $(LDADD) ++threaded_DEPENDENCIES = $(LIBFCGI) ++threaded_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(threaded_CFLAGS) $(CFLAGS) \ ++ $(threaded_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++CXXLD = $(CXX) ++CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) $(echo_cpp_SOURCES) \ ++ $(echo_x_SOURCES) $(log_dump_SOURCES) size.c \ ++ $(threaded_SOURCES) ++DIST_SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) \ ++ $(echo_cpp_SOURCES) $(echo_x_SOURCES) $(log_dump_SOURCES) \ ++ size.c $(threaded_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ +- +-noinst_PROGRAMS = authorizer \ +- echo \ +- echo-x \ +- log-dump \ +- size \ +- @THREADED@ \ +- @ECHO_CPP@ +- +- +-EXTRA_PROGRAMS = threaded echo-cpp +- ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include +- + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ + $(INCLUDEDIR)/fcgimisc.h \ + $(INCLUDEDIR)/fcgi_stdio.h + +- + LIBDIR = ../libfcgi + LIBFCGI = $(LIBDIR)/libfcgi.la +- + LDADD = $(LIBFCGI) +- + echo_SOURCES = $(INCLUDE_FILES) echo.c + echo_x_SOURCES = $(INCLUDE_FILES) echo-x.c + log_dump_SOURCES = $(INCLUDE_FILES) log-dump.c + authorizer_SOURCES = $(INCLUDE_FILES) authorizer.c +- + threaded_SOURCES = $(INCLUDE_FILES) threaded.c + threaded_CC = @PTHREAD_CC@ + threaded_CFLAGS = @PTHREAD_CFLAGS@ + threaded_LDFLAGS = @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ +- + echo_cpp_SOURCES = $(INCLUDE_FILES) $(INCLUDEDIR)/fcgio.h echo-cpp.cpp + echo_cpp_LDADD = $(LIBDIR)/libfcgi++.la +-subdir = examples +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-EXTRA_PROGRAMS = threaded$(EXEEXT) echo-cpp$(EXEEXT) +-noinst_PROGRAMS = authorizer$(EXEEXT) echo$(EXEEXT) echo-x$(EXEEXT) \ +- log-dump$(EXEEXT) size$(EXEEXT) @THREADED@ @ECHO_CPP@ +-PROGRAMS = $(noinst_PROGRAMS) +- +-am_authorizer_OBJECTS = authorizer.$(OBJEXT) +-authorizer_OBJECTS = $(am_authorizer_OBJECTS) +-authorizer_LDADD = $(LDADD) +-authorizer_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-authorizer_LDFLAGS = +-am_echo_OBJECTS = echo.$(OBJEXT) +-echo_OBJECTS = $(am_echo_OBJECTS) +-echo_LDADD = $(LDADD) +-echo_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-echo_LDFLAGS = +-am_echo_cpp_OBJECTS = echo-cpp.$(OBJEXT) +-echo_cpp_OBJECTS = $(am_echo_cpp_OBJECTS) +-echo_cpp_DEPENDENCIES = $(LIBDIR)/libfcgi++.la +-echo_cpp_LDFLAGS = +-am_echo_x_OBJECTS = echo-x.$(OBJEXT) +-echo_x_OBJECTS = $(am_echo_x_OBJECTS) +-echo_x_LDADD = $(LDADD) +-echo_x_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-echo_x_LDFLAGS = +-am_log_dump_OBJECTS = log-dump.$(OBJEXT) +-log_dump_OBJECTS = $(am_log_dump_OBJECTS) +-log_dump_LDADD = $(LDADD) +-log_dump_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-log_dump_LDFLAGS = +-size_SOURCES = size.c +-size_OBJECTS = size.$(OBJEXT) +-size_LDADD = $(LDADD) +-size_DEPENDENCIES = $(LIBDIR)/libfcgi.la +-size_LDFLAGS = +-am_threaded_OBJECTS = threaded-threaded.$(OBJEXT) +-threaded_OBJECTS = $(am_threaded_OBJECTS) +-threaded_LDADD = $(LDADD) +-threaded_DEPENDENCIES = $(LIBDIR)/libfcgi.la +- +-DEFS = @DEFS@ +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-LDFLAGS = @LDFLAGS@ +-LIBS = @LIBS@ +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/authorizer.Po $(DEPDIR)/echo-cpp.Po \ +-@AMDEP_TRUE@ $(DEPDIR)/echo-x.Po $(DEPDIR)/echo.Po \ +-@AMDEP_TRUE@ $(DEPDIR)/log-dump.Po $(DEPDIR)/size.Po \ +-@AMDEP_TRUE@ $(DEPDIR)/threaded-threaded.Po +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CFLAGS = @CFLAGS@ +-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CXXFLAGS) $(CXXFLAGS) +-CXXLD = $(CXX) +-CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-CXXFLAGS = @CXXFLAGS@ +-DIST_SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) $(echo_cpp_SOURCES) \ +- $(echo_x_SOURCES) $(log_dump_SOURCES) size.c \ +- $(threaded_SOURCES) +-DIST_COMMON = Makefile.am Makefile.in +-SOURCES = $(authorizer_SOURCES) $(echo_SOURCES) $(echo_cpp_SOURCES) $(echo_x_SOURCES) $(log_dump_SOURCES) size.c $(threaded_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .cpp .lo .o .obj +- +-mostlyclean-libtool: +- -rm -f *.lo +- +-clean-libtool: +- -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \ + cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign examples/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status ++ $(AUTOMAKE) --gnu examples/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + clean-noinstPROGRAMS: +- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) ++ @list='$(noinst_PROGRAMS)'; for p in $$list; do \ ++ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ++ echo " rm -f $$p $$f"; \ ++ rm -f $$p $$f ; \ ++ done + authorizer$(EXEEXT): $(authorizer_OBJECTS) $(authorizer_DEPENDENCIES) + @rm -f authorizer$(EXEEXT) +- $(LINK) $(authorizer_LDFLAGS) $(authorizer_OBJECTS) $(authorizer_LDADD) $(LIBS) ++ $(LINK) $(authorizer_OBJECTS) $(authorizer_LDADD) $(LIBS) + echo$(EXEEXT): $(echo_OBJECTS) $(echo_DEPENDENCIES) + @rm -f echo$(EXEEXT) +- $(LINK) $(echo_LDFLAGS) $(echo_OBJECTS) $(echo_LDADD) $(LIBS) ++ $(LINK) $(echo_OBJECTS) $(echo_LDADD) $(LIBS) + echo-cpp$(EXEEXT): $(echo_cpp_OBJECTS) $(echo_cpp_DEPENDENCIES) + @rm -f echo-cpp$(EXEEXT) +- $(CXXLINK) $(echo_cpp_LDFLAGS) $(echo_cpp_OBJECTS) $(echo_cpp_LDADD) $(LIBS) ++ $(CXXLINK) $(echo_cpp_OBJECTS) $(echo_cpp_LDADD) $(LIBS) + echo-x$(EXEEXT): $(echo_x_OBJECTS) $(echo_x_DEPENDENCIES) + @rm -f echo-x$(EXEEXT) +- $(LINK) $(echo_x_LDFLAGS) $(echo_x_OBJECTS) $(echo_x_LDADD) $(LIBS) ++ $(LINK) $(echo_x_OBJECTS) $(echo_x_LDADD) $(LIBS) + log-dump$(EXEEXT): $(log_dump_OBJECTS) $(log_dump_DEPENDENCIES) + @rm -f log-dump$(EXEEXT) +- $(LINK) $(log_dump_LDFLAGS) $(log_dump_OBJECTS) $(log_dump_LDADD) $(LIBS) ++ $(LINK) $(log_dump_OBJECTS) $(log_dump_LDADD) $(LIBS) + size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) + @rm -f size$(EXEEXT) +- $(LINK) $(size_LDFLAGS) $(size_OBJECTS) $(size_LDADD) $(LIBS) +-threaded-threaded.$(OBJEXT): threaded.c ++ $(LINK) $(size_OBJECTS) $(size_LDADD) $(LIBS) + threaded$(EXEEXT): $(threaded_OBJECTS) $(threaded_DEPENDENCIES) + @rm -f threaded$(EXEEXT) +- $(LINK) $(threaded_LDFLAGS) $(threaded_OBJECTS) $(threaded_LDADD) $(LIBS) ++ $(threaded_LINK) $(threaded_OBJECTS) $(threaded_LDADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c + +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/authorizer.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/echo-cpp.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/echo-x.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/echo.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/log-dump.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/size.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/threaded-threaded.Po@am__quote@ +- +-distclean-depend: +- -rm -rf $(DEPDIR) ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authorizer.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo-cpp.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo-x.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log-dump.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/size.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threaded-threaded.Po@am__quote@ + + .c.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(COMPILE) -c `cygpath -w $<` ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + threaded-threaded.o: threaded.c +-@AMDEP_TRUE@ source='threaded.c' object='threaded-threaded.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/threaded-threaded.Po' tmpdepfile='$(DEPDIR)/threaded-threaded.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.o `test -f threaded.c || echo '$(srcdir)/'`threaded.c ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -MT threaded-threaded.o -MD -MP -MF $(DEPDIR)/threaded-threaded.Tpo -c -o threaded-threaded.o `test -f 'threaded.c' || echo '$(srcdir)/'`threaded.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/threaded-threaded.Tpo $(DEPDIR)/threaded-threaded.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='threaded.c' object='threaded-threaded.o' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.o `test -f 'threaded.c' || echo '$(srcdir)/'`threaded.c + + threaded-threaded.obj: threaded.c +-@AMDEP_TRUE@ source='threaded.c' object='threaded-threaded.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/threaded-threaded.Po' tmpdepfile='$(DEPDIR)/threaded-threaded.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.obj `cygpath -w threaded.c` +- +-threaded-threaded.lo: threaded.c +-@AMDEP_TRUE@ source='threaded.c' object='threaded-threaded.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/threaded-threaded.Plo' tmpdepfile='$(DEPDIR)/threaded-threaded.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.lo `test -f threaded.c || echo '$(srcdir)/'`threaded.c +-CCDEPMODE = @CCDEPMODE@ ++@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -MT threaded-threaded.obj -MD -MP -MF $(DEPDIR)/threaded-threaded.Tpo -c -o threaded-threaded.obj `if test -f 'threaded.c'; then $(CYGPATH_W) 'threaded.c'; else $(CYGPATH_W) '$(srcdir)/threaded.c'; fi` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/threaded-threaded.Tpo $(DEPDIR)/threaded-threaded.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='threaded.c' object='threaded-threaded.obj' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(threaded_CFLAGS) $(CFLAGS) -c -o threaded-threaded.obj `if test -f 'threaded.c'; then $(CYGPATH_W) 'threaded.c'; else $(CYGPATH_W) '$(srcdir)/threaded.c'; fi` + + .cpp.o: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + + .cpp.obj: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(CXXCOMPILE) -c -o $@ `cygpath -w $<` ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cpp.lo: +-@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +- $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +-CXXDEPMODE = @CXXDEPMODE@ +-uninstall-info-am: ++@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +-tags: TAGS ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -377,9 +456,7 @@ + check-am: all-am + check: check-am + all-am: Makefile $(PROGRAMS) +- + installdirs: +- + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -391,6 +468,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -398,7 +476,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -409,30 +487,42 @@ + mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-libtool distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -440,18 +530,30 @@ + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +-uninstall-am: uninstall-info-am ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: install-am install-strip + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libtool clean-noinstPROGRAMS distclean distclean-compile \ +- distclean-depend distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-noinstPROGRAMS ctags distclean \ ++ distclean-compile distclean-generic distclean-libtool \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ +- tags uninstall uninstall-am uninstall-info-am ++ pdf pdf-am ps ps-am tags uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- libfcgi-2.4.0.orig/fcgi_config.h.in ++++ libfcgi-2.4.0/fcgi_config.h.in +@@ -1,9 +1,9 @@ +-/* fcgi_config.h.in. Generated automatically from configure.in by autoheader. */ ++/* fcgi_config.h.in. Generated from configure.in by autoheader. */ + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_ARPA_INET_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_DLFCN_H + + /* Define if there's a fileno() prototype in stdio.h */ +@@ -12,28 +12,28 @@ + /* Define if the fpos_t typedef is in stdio.h */ + #undef HAVE_FPOS + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_INTTYPES_H + + /* Define if cin/cout/cerr has a streambuf assignment operator */ + #undef HAVE_IOSTREAM_WITHASSIGN_STREAMBUF + +-/* Define if you have the `nsl' library (-lnsl). */ ++/* Define to 1 if you have the `nsl' library (-lnsl). */ + #undef HAVE_LIBNSL + +-/* Define if you have the `socket' library (-lsocket). */ ++/* Define to 1 if you have the `socket' library (-lsocket). */ + #undef HAVE_LIBSOCKET + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_LIMITS_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_MEMORY_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_NETDB_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_NETINET_IN_H + + /* Define if you have POSIX threads libraries and header files. */ +@@ -45,40 +45,40 @@ + /* Define if the socklen_t typedef is in sys/socket.h */ + #undef HAVE_SOCKLEN + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STDINT_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STDLIB_H + + /* Define if char_type is defined in the context of streambuf */ + #undef HAVE_STREAMBUF_CHAR_TYPE + +-/* Define if you have the `strerror' function. */ ++/* Define to 1 if you have the `strerror' function. */ + #undef HAVE_STRERROR + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STRINGS_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_STRING_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_PARAM_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_SOCKET_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_STAT_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_TIME_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_SYS_TYPES_H + +-/* Define if you have the header file. */ ++/* Define to 1 if you have the header file. */ + #undef HAVE_UNISTD_H + + /* Define if va_arg(arg, long double) crashes the compiler */ +@@ -87,11 +87,26 @@ + /* Name of package */ + #undef PACKAGE + ++/* Define to the address where bug reports for this package should be sent. */ ++#undef PACKAGE_BUGREPORT ++ ++/* Define to the full name of this package. */ ++#undef PACKAGE_NAME ++ ++/* Define to the full name and version of this package. */ ++#undef PACKAGE_STRING ++ ++/* Define to the one symbol short name of this package. */ ++#undef PACKAGE_TARNAME ++ ++/* Define to the version of this package. */ ++#undef PACKAGE_VERSION ++ + /* Define to the necessary symbol if this constant uses a non-standard name on + your system. */ + #undef PTHREAD_CREATE_JOINABLE + +-/* Define if you have the ANSI C header files. */ ++/* Define to 1 if you have the ANSI C header files. */ + #undef STDC_HEADERS + + /* Define if cross-process locking is required by accept() */ +@@ -103,9 +118,11 @@ + /* Define to empty if `const' does not conform to ANSI C. */ + #undef const + +-/* Define as `__inline' if that's what the C compiler calls it, or to nothing +- if it is not supported. */ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#ifndef __cplusplus + #undef inline ++#endif + + /* Define to `int' if does not define. */ + #undef ssize_t +--- libfcgi-2.4.0.orig/include/Makefile.in ++++ libfcgi-2.4.0/include/Makefile.in +@@ -1,7 +1,8 @@ +-# Makefile.in generated automatically by automake 1.5 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,82 +14,164 @@ + + @SET_MAKE@ + +-# $Id: Makefile.am,v 1.2 2001/09/24 18:03:05 skimo Exp $ +- +-SHELL = @SHELL@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +-prefix = @prefix@ +-exec_prefix = @exec_prefix@ +- +-bindir = @bindir@ +-sbindir = @sbindir@ +-libexecdir = @libexecdir@ +-datadir = @datadir@ +-sysconfdir = @sysconfdir@ +-sharedstatedir = @sharedstatedir@ +-localstatedir = @localstatedir@ +-libdir = @libdir@ +-infodir = @infodir@ +-mandir = @mandir@ +-includedir = @includedir@ +-oldincludedir = /usr/include + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- +-ACLOCAL = @ACLOCAL@ +-AUTOCONF = @AUTOCONF@ +-AUTOMAKE = @AUTOMAKE@ +-AUTOHEADER = @AUTOHEADER@ +- +-INSTALL = @INSTALL@ +-INSTALL_PROGRAM = @INSTALL_PROGRAM@ +-INSTALL_DATA = @INSTALL_DATA@ +-INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) +-transform = @program_transform_name@ ++transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-host_alias = @host_alias@ ++build_triplet = @build@ + host_triplet = @host@ ++subdir = include ++DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/fcgi_config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(includedir)" ++includeHEADERS_INSTALL = $(INSTALL_HEADER) ++HEADERS = $(include_HEADERS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ +-AS = @AS@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ + CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ + CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ + DEPDIR = @DEPDIR@ +-DLLTOOL = @DLLTOOL@ + ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ + ECHO_CPP = @ECHO_CPP@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ + LIBFCGIXX = @LIBFCGIXX@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ +-OBJDUMP = @OBJDUMP@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ + PTHREAD_CC = @PTHREAD_CC@ + PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + PTHREAD_LIBS = @PTHREAD_LIBS@ + RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ + STRIP = @STRIP@ + SYSTEM = @SYSTEM@ + THREADED = @THREADED@ + VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ + am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ + install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + ++# $Id: Makefile.am,v 1.2 2001/09/24 18:03:05 skimo Exp $ + include_HEADERS = \ + fastcgi.h \ + fcgi_stdio.h \ +@@ -97,99 +180,130 @@ + fcgio.h \ + fcgios.h + +-subdir = include +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/fcgi_config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +-HEADERS = $(include_HEADERS) +- +-DIST_COMMON = $(include_HEADERS) Makefile.am Makefile.in + all: all-am + + .SUFFIXES: ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ ++ cd $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu include/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +- cd $(top_srcdir) && \ +- $(AUTOMAKE) --foreign include/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && \ +- CONFIG_HEADERS= CONFIG_LINKS= \ +- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +-uninstall-info-am: + install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(includedir) ++ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ +- $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(includedir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ ++ $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + + uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " rm -f $(DESTDIR)$(includedir)/$$f"; \ +- rm -f $(DESTDIR)$(includedir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ ++ rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- mkid -fID $$unique $(LISP) ++ mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +- || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi ++ctags: CTAGS ++CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ++ $(TAGS_FILES) $(LISP) ++ tags=; \ ++ here=`pwd`; \ ++ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | \ ++ $(AWK) ' { files[$$0] = 1; } \ ++ END { for (i in files) print i; }'`; \ ++ test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$tags $$unique + + GTAGS: +- here=`CDPATH=: && cd $(top_builddir) && pwd` \ ++ here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: +- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +- +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + distdir: $(DISTFILES) +- @for file in $(DISTFILES); do \ +- if test -f $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- $(mkinstalldirs) "$(distdir)/$$dir"; \ +- fi; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ ++ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ +- cp -pR $$d/$$file $(distdir) \ +- || exit 1; \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++ fi; \ ++ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ +@@ -199,10 +313,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(HEADERS) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(includedir) +- ++ for dir in "$(DESTDIR)$(includedir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -214,6 +328,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -221,7 +336,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -231,48 +346,69 @@ + clean-am: clean-generic clean-libtool mostlyclean-am + + distclean: distclean-am +- +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++ -rm -f Makefile ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-includeHEADERS + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +- ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am + + mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +-uninstall-am: uninstall-includeHEADERS uninstall-info-am ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: + +-.PHONY: GTAGS all all-am check check-am clean clean-generic \ +- clean-libtool distclean distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-includeHEADERS install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-generic \ +- mostlyclean-libtool tags uninstall uninstall-am \ +- uninstall-includeHEADERS uninstall-info-am ++uninstall-am: uninstall-includeHEADERS ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++ clean-libtool ctags distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am \ ++ install-includeHEADERS install-info install-info-am \ ++ install-man install-pdf install-pdf-am install-ps \ ++ install-ps-am install-strip installcheck installcheck-am \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ++ ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/abs/core/feh/PKGBUILD b/abs/core/feh/PKGBUILD index 23a2627..ad38f8f 100644 --- a/abs/core/feh/PKGBUILD +++ b/abs/core/feh/PKGBUILD @@ -1,9 +1,9 @@ pkgname=feh pkgver=1.3.4 -pkgrel=3 +pkgrel=4 pkgdesc="feh is a fast, lightweight image viewer which uses imlib2" -depends=('libpng' 'libxinerama' 'giblib') +depends=('libjpeg' 'libpng' 'libxinerama' 'giblib') #source=(http://linuxbrit.co.uk/downloads/$pkgname-$pkgver.tar.gz) source=(http://ftp.gva.es/mirror/debian/pool/main/f/feh/feh_1.3.4.orig.tar.gz) url="http://www.linuxbrit.co.uk/feh/" diff --git a/abs/core/ffmpeg-svn/PKGBUILD b/abs/core/ffmpeg-svn/PKGBUILD new file mode 100644 index 0000000..0eafb3f --- /dev/null +++ b/abs/core/ffmpeg-svn/PKGBUILD @@ -0,0 +1,59 @@ +# Contributor: raubkopierer + +pkgname=ffmpeg-svn +pkgver=19483 +pkgrel=1 +pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix" +arch=('i686' 'x86_64') +url="http://ffmpeg.mplayerhq.hu/" +license=('GPL') +depends=('lame' 'sdl' 'faad2' 'faac' 'zlib' 'imlib2' 'x264' 'libtheora') +makedepends=('subversion') +provides=("ffmpeg=`date +%Y%m%d`") +conflicts=('ffmpeg') +source=() +md5sums=() + +_svntrunk=svn://svn.ffmpeg.org/ffmpeg/trunk +_svnmod=ffmpeg + +build() { + cd "$srcdir" + + if [ -d $_svnmod/.svn ]; then + (cd $_svnmod && svn up -r $pkgver) + else + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + fi + + msg "SVN checkout done or server timeout" + msg "Starting make..." + + rm -rf "$_svnmod-build" + mkdir "$_svnmod-build" + cd "$_svnmod-build" + + "$srcdir/$_svnmod/configure" \ + --prefix=/usr \ + --enable-gpl \ + --enable-nonfree \ + --enable-libmp3lame \ + --enable-libfaac \ + --enable-libfaad \ + --enable-libx264 \ + --enable-libtheora \ + --enable-postproc \ + --enable-shared \ + --enable-pthreads \ + --enable-x11grab \ + --arch=`uname -m` \ + --enable-libxvid \ + || return 1 + + make || return 1 + make doc/ff{mpeg,play,server}.1 || return 1 + + make DESTDIR="$pkgdir" install || return 1 + make DESTDIR="$pkgdir" install-man || return 1 + +} diff --git a/abs/core/ffmpeg/PKGBUILD b/abs/core/ffmpeg/PKGBUILD deleted file mode 100644 index 463fa98..0000000 --- a/abs/core/ffmpeg/PKGBUILD +++ /dev/null @@ -1,48 +0,0 @@ -# $Id: PKGBUILD 5671 2008-07-20 05:09:25Z eric $ -# Contributor: Tom Newsom -# Maintainer: Paul Mattal - -pkgname=ffmpeg -pkgver=20080715 -pkgrel=3 -pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix" -arch=(i686 x86_64) -url="http://ffmpeg.mplayerhq.hu/" -license=('LGPL') -depends=('lame' 'sdl' 'libvorbis' 'a52dec' 'faad2>=2.6.1' 'faac' 'xvidcore' 'zlib' 'imlib2' 'x264>=20080625' 'libtheora') -#remake snapshot with: svn export svn://svn.mplayerhq.hu/ffmpeg/trunk@14236 -source=(ftp://ftp.archlinux.org/other/ffmpeg/ffmpeg-20080715-14236.tar.bz2) -md5sums=('899ee3dd56a779b1152e48a94fde69f0') - -build() { - cd "$srcdir/$pkgname" || return 1 - - ./configure \ - --prefix=/usr \ - --enable-gpl \ - --enable-libmp3lame \ - --enable-libvorbis \ - --enable-libfaac \ - --enable-libfaad \ - --enable-liba52 \ - --enable-libxvid \ - --enable-libx264 \ - --enable-libtheora \ - --enable-postproc \ - --enable-shared \ - --enable-pthreads \ - --enable-x11grab \ - --enable-swscale \ - || return 1 - - make -j 2 || return 1 - make doc/ff{mpeg,play,server}.1 || return 1 - - make DESTDIR="$pkgdir" install || return 1 - make DESTDIR="$pkgdir" install-man || return 1 - - # since makepkg currently declines to strip .a files, do this for now - strip --strip-debug $startdir/pkg/usr/lib/*.a || return 1 -} - -# vim:set ts=2 sw=2 et: diff --git a/abs/core/fftw2/PKGBUILD b/abs/core/fftw2/PKGBUILD index 4198e96..18aa473 100644 --- a/abs/core/fftw2/PKGBUILD +++ b/abs/core/fftw2/PKGBUILD @@ -3,13 +3,13 @@ pkgname=fftw2 pkgver=2.1.5 -pkgrel=4 +pkgrel=9 pkgdesc="FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. This is package is offering backwards compatibility version 2.x.y. of fftw." arch=(i686 x86_64) url="http://www.fftw.org/" license=('GPL2') depends=('glibc') -options=(!libtool) +options=(!libtool !emptydirs !docs) source=(http://www.fftw.org/fftw-${pkgver}.tar.gz) md5sums=('8d16a84f3ca02a785ef9eb36249ba433') @@ -31,4 +31,26 @@ build() { make || return 1 #make prefix=$startdir/pkg/usr install || return 1 make DESTDIR=${startdir}/pkg install || return 1 + cd $startdir/pkg/usr/include/ + ln -s sfftw.h fftw.h + ln -s sfftw_threads.h fftw_threads.h + ln -s srfftw.h rfftw.h + ln -s srfftw_threads.h rfftw_threads.h + cd $startdir/pkg/usr/lib + ln -s libsfftw.a libfftw.a + ln -s libsfftw.so libfftw.so + ln -s libsfftw.so.2 libfftw.so.2 + ln -s libsfftw.so.2.0.7 libfftw.so.2.0.7 + ln -s libsfftw_threads.a libfftw_threads.a + ln -s libsfftw_threads.so libfftw_threads.so + ln -s libsfftw_threads.so.2 libfftw_threads.so.2 + ln -s libsfftw_threads.so.2.0.7 libfftw_threads.so.2.0.7 + ln -s libsrfftw.a librfftw.a + ln -s libsrfftw.so librfftw.so + ln -s libsrfftw.so.2 librfftw.so.2 + ln -s libsrfftw.so.2.0.7 librfftw.so.2.0.7 + ln -s libsrfftw_threads.a librfftw_threads.a + ln -s libsrfftw_threads.so librfftw_threads.so + ln -s libsrfftw_threads.so.2 librfftw_threads.so.2 + ln -s libsrfftw_threads.so.2.0.7 librfftw_threads.so.2.0.7 } diff --git a/abs/core/fftw2/__changelog b/abs/core/fftw2/__changelog new file mode 100644 index 0000000..014bc64 --- /dev/null +++ b/abs/core/fftw2/__changelog @@ -0,0 +1,2 @@ +added !emptydir to options + diff --git a/abs/core/filesystem/PKGBUILD b/abs/core/filesystem/PKGBUILD index 4dee201..02649c3 100644 --- a/abs/core/filesystem/PKGBUILD +++ b/abs/core/filesystem/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 4675 2008-07-08 19:16:06Z pierre $ +# $Id: PKGBUILD 23639 2009-01-11 14:36:30Z thomas $ # Maintainer: Aaron Griffin # Contributor: judd pkgname=filesystem -pkgver=2008.07 -pkgrel=10 +pkgver=2009.01 +pkgrel=2 pkgdesc="Base filesystem" arch=(i686 x86_64) license=('GPL') @@ -12,12 +12,31 @@ url="http://www.archlinux.org" groups=('base') install=filesystem.install #depends=('sh' 'coreutils') -backup=(etc/fstab etc/crypttab etc/group etc/hosts etc/ld.so.conf etc/passwd \ - etc/shadow etc/gshadow etc/resolv.conf etc/motd etc/nsswitch.conf \ +backup=(etc/fstab etc/crypttab etc/group etc/hosts etc/ld.so.conf etc/passwd + etc/shadow etc/gshadow etc/resolv.conf etc/motd etc/nsswitch.conf etc/shells etc/host.conf etc/securetty etc/profile etc/issue) -source=(group issue nsswitch.conf securetty host.conf ld.so.conf \ - passwd shadow fstab crypttab hosts motd resolv.conf shells \ - gshadow services protocols profile) +source=(group issue nsswitch.conf securetty host.conf ld.so.conf + passwd shadow fstab crypttab hosts motd resolv.conf shells + gshadow services protocols profile modprobe.d.usb-load-ehci-first) +md5sums=('f4cf8d0a2de2658165148d5f64d81675' + '1bdc5dba66947d74866a5df8ce9ef3b1' + '775464ba7588b4976e0c2a02b83123f4' + '655071da46d2ac03e0fb8a071bf193ea' + 'f28150d4c0b22a017be51b9f7f9977ed' + '2c24792d97ef3cf0d73b60d4c429730b' + '8a9042a2cedf6b6b47eb8973f14289cb' + '019e5c24f9befef395a28e7ef2e4e5b9' + 'c4f23a66a1bcc08fd164639bdafbc60a' + 'e5d8323a4dbee7a6d0d2a19cbf4b819f' + '81b3cb42a6ddabc2ed2310511ee9c859' + 'd41d8cd98f00b204e9800998ecf8427e' + '6f48288b6fcaf0065fcb7b0e525413e0' + '40dac0de4c6b99c8ca97effbd7527c84' + 'ab9c2a40eba287b2918589ab8e0b2fbf' + 'f436d2e0ed02b7b73bd10c6693e95ac3' + '65d78e621ed69eed69f854c3ee2e5942' + '288a2e8d63c5ea2c2d852c7147e59d28' + '8098ffd9fbf890468d3198277596b85a') build() { @@ -69,22 +88,7 @@ build() # re-add /etc/arch-release, some software uses it # to check whether arch is running touch $startdir/pkg/etc/arch-release + + # Add /etc/modprobe.d/ + install -D -m644 ${srcdir}/modprobe.d.usb-load-ehci-first ${pkgdir}/etc/modprobe.d/usb-load-ehci-first } -md5sums=('f64f86c4a6356961b69ead0471294145' - '1bdc5dba66947d74866a5df8ce9ef3b1' - '775464ba7588b4976e0c2a02b83123f4' - '655071da46d2ac03e0fb8a071bf193ea' - 'f28150d4c0b22a017be51b9f7f9977ed' - '2c24792d97ef3cf0d73b60d4c429730b' - '8a9042a2cedf6b6b47eb8973f14289cb' - '019e5c24f9befef395a28e7ef2e4e5b9' - '4e2f238bae5cbf716ff73c9404404269' - 'e5d8323a4dbee7a6d0d2a19cbf4b819f' - '81b3cb42a6ddabc2ed2310511ee9c859' - 'd41d8cd98f00b204e9800998ecf8427e' - '6f48288b6fcaf0065fcb7b0e525413e0' - '40dac0de4c6b99c8ca97effbd7527c84' - 'ab9c2a40eba287b2918589ab8e0b2fbf' - 'f436d2e0ed02b7b73bd10c6693e95ac3' - '65d78e621ed69eed69f854c3ee2e5942' - 'f2a88eacb5c37201368c916d9e594440') diff --git a/abs/core/filesystem/filesystem.install b/abs/core/filesystem/filesystem.install index 92b336f..5be51ed 100644 --- a/abs/core/filesystem/filesystem.install +++ b/abs/core/filesystem/filesystem.install @@ -57,4 +57,12 @@ post_upgrade() { echo "adding new group: scanner" usr/sbin/groupadd -g 96 scanner >/dev/null fi + cp /etc/fstab /etc/fstab.orig + if grep -q /dev/sro /etc/fstab + then + exit + else + grep -v /dev/dvd /etc/fstab > /tmp/fstab + cat /tmp/fstab | sed -e 's|/dev/cdrom|/dev/sr0|g' > /etc/fstab + fi } diff --git a/abs/core/filesystem/fstab b/abs/core/filesystem/fstab index a609a32..c3a01cb 100644 --- a/abs/core/filesystem/fstab +++ b/abs/core/filesystem/fstab @@ -5,7 +5,6 @@ none /dev/pts devpts defaults 0 0 none /dev/shm tmpfs defaults 0 0 -/dev/cdrom /media/cd auto ro,user,noauto,unhide 0 0 -/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0 +/dev/sr0 /media/cd auto ro,user,noauto,unhide 0 0 /dev/fd0 /media/fl auto user,noauto 0 0 diff --git a/abs/core/filesystem/group b/abs/core/filesystem/group index f0d4712..a34b83f 100644 --- a/abs/core/filesystem/group +++ b/abs/core/filesystem/group @@ -13,6 +13,7 @@ ftp::11: mail::12: uucp::14: log::19:root +locate::21: smmsp::25: http::33: games::50: diff --git a/abs/core/filesystem/modprobe.d.usb-load-ehci-first b/abs/core/filesystem/modprobe.d.usb-load-ehci-first new file mode 100644 index 0000000..3b5db0e --- /dev/null +++ b/abs/core/filesystem/modprobe.d.usb-load-ehci-first @@ -0,0 +1,2 @@ +install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe --ignore-install ohci_hcd $CMDLINE_OPTS +install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe --ignore-install uhci_hcd $CMDLINE_OPTS diff --git a/abs/core/filesystem/profile b/abs/core/filesystem/profile index d18b99a..5eabf8e 100644 --- a/abs/core/filesystem/profile +++ b/abs/core/filesystem/profile @@ -32,6 +32,10 @@ umask 022 PATH="/bin:/usr/bin:/sbin:/usr/sbin" export PATH +# Export default pkg-config path +PKG_CONFIG_PATH="/usr/lib/pkgconfig" +export PKG_CONFIG_PATH + # Some readline stuff that is fairly common HISTSIZE=1000 HISTCONTROL="erasedups" diff --git a/abs/core/flac/PKGBUILD b/abs/core/flac/PKGBUILD index ce31e8b..f28b964 100644 --- a/abs/core/flac/PKGBUILD +++ b/abs/core/flac/PKGBUILD @@ -3,13 +3,13 @@ # Contributor: Tom Newsom pkgname=flac pkgver=1.2.1 -pkgrel=1 +pkgrel=2 pkgdesc="Free Lossless Audio Codec" license=('custom:Xiph' 'LGPL' 'GPL' 'FDL') url="http://flac.sourceforge.net/" arch=(i686 x86_64) options=('!libtool') -depends=('glibc' 'libogg') +depends=('glibc' 'libogg' 'xmms') makedepends=('nasm' 'xmms') source=(http://downloads.sf.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz \ flac-1.2.1-gcc43.patch) diff --git a/abs/core/flex/PKGBUILD b/abs/core/flex/PKGBUILD new file mode 100644 index 0000000..f36300f --- /dev/null +++ b/abs/core/flex/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 3606 2008-06-26 00:29:52Z paul $ +# Maintainer: judd +pkgname=flex +pkgver=2.5.35 +pkgrel=1 +pkgdesc="A tool for generating text-scanning programs" +arch=(i686 x86_64) +url="http://flex.sourceforge.net" +license=('custom') +groups=('base-devel') +depends=('glibc' 'sh') +source=(http://downloads.sourceforge.net/sourceforge/flex/flex-$pkgver.tar.bz2 + lex.sh) +md5sums=('10714e50cea54dc7a227e3eddcd44d57' 'f725259ec23a9e87ee29e2ef82eda9a5') + +build() { + cd $startdir/src/$pkgname-$pkgver || return 1 + + # configure + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 + + # build and install + make || return 1 + make prefix=$startdir/pkg/usr mandir=$startdir/pkg/usr/share/man install || return 1 + install -D -m755 $startdir/src/lex.sh $startdir/pkg/usr/bin/lex || return 1 + + # install license + install -D -m644 COPYING \ + $startdir/pkg/usr/share/licenses/$pkgname/license.txt || return 1 +} diff --git a/abs/core/flex/flex-yytext.patch b/abs/core/flex/flex-yytext.patch new file mode 100644 index 0000000..27cfaa4 --- /dev/null +++ b/abs/core/flex/flex-yytext.patch @@ -0,0 +1,22 @@ +diff -Naur flex-2.5.31-orig/flex.skl flex-2.5.31/flex.skl +--- flex-2.5.31-orig/flex.skl 2003-03-31 17:51:38.000000000 -0800 ++++ flex-2.5.31/flex.skl 2004-04-11 12:19:10.000000000 -0700 +@@ -3280,7 +3280,6 @@ + #undef yy_set_bol + #undef yy_new_buffer + #undef yy_set_interactive +-#undef yytext_ptr + #undef YY_DO_BEFORE_ACTION + + #ifdef YY_DECL_IS_OURS +diff -Naur flex-2.5.31-orig/gen.c flex-2.5.31/gen.c +--- flex-2.5.31-orig/gen.c 2003-03-30 11:58:44.000000000 -0800 ++++ flex-2.5.31/gen.c 2004-04-11 12:19:38.000000000 -0700 +@@ -1812,7 +1812,6 @@ + if (yytext_is_array) { + if (!reentrant){ + indent_puts ("static int yy_more_offset = 0;"); +- }else{ + indent_puts ("static int yy_prev_more_offset = 0;"); + } + } diff --git a/abs/core/flex/lex.sh b/abs/core/flex/lex.sh new file mode 100644 index 0000000..13e7de6 --- /dev/null +++ b/abs/core/flex/lex.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/bin/flex -l "$@" diff --git a/abs/core/fluxbox/ChangeLog b/abs/core/fluxbox/ChangeLog new file mode 100644 index 0000000..f2f2e81 --- /dev/null +++ b/abs/core/fluxbox/ChangeLog @@ -0,0 +1,10 @@ +2008-09-19 Eric Belanger + + * fluxbox 1.1.1-1 + * Upstream update + +2008-09-05 Eric Belanger + + * fluxbox 1.1.0.1-1 + * Upstream update + * Added ChangeLog diff --git a/abs/core/fluxbox/PKGBUILD b/abs/core/fluxbox/PKGBUILD index 9d09c63..b3a9a41 100644 --- a/abs/core/fluxbox/PKGBUILD +++ b/abs/core/fluxbox/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 1350 2008-05-05 22:19:58Z eric $ +# $Id: PKGBUILD 12779 2008-09-20 06:42:07Z eric $ # Maintainer: Eric Belanger # Contributor: John Proctor pkgname=fluxbox -pkgver=1.0.0 -pkgrel=1 +pkgver=1.1.1 +pkgrel=6 pkgdesc="A lightweight and highly-configurable window manager" arch=('i686' 'x86_64') url="http://www.fluxbox.org" @@ -12,27 +12,20 @@ license=('MIT') depends=('libxft' 'libxpm' 'libxinerama' 'libxrandr' 'gcc-libs' 'bash' 'imlib2') makedepends=('pkgconfig') options=('!makeflags') -source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 \ - $pkgname.desktop fluxbox-1.0.0-gcc43.patch) -md5sums=('990e276ead0d04421dce4080f485caca' 'eeae9c88a2526ac0bd8afcd9ce97f9ed'\ - '9ddb3fcd5f080574a44f394282132b3c') -sha1sums=('7985e35fbb170fda24b9e04610690cd04c7a8748' - 'f3f83b8ce84d79c2f8670ef687e0dd89ab0552b8' - '51de3957bacfc4848529ba7df80bddca59b1a20b') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \ + fluxbox.desktop keys) build() { - cd $startdir/src/$pkgname-${pkgver} - patch -p1 < ../fluxbox-1.0.0-gcc43.patch || return 1 + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr \ - --enable-kde --enable-gnome \ - --enable-xft --enable-xinerama \ - --enable-imlib2 --enable-nls + --enable-kde --enable-gnome \ + --enable-xft --enable-xinerama \ + --enable-imlib2 --enable-nls || return 1 make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=${pkgdir} install || return 1 # this is a fix to allow fluxbox to shutdown, but this can be changed by the user :-( - sed -i 's|^.*slit\.autoHide.*$|session.screen0.slit.autoHide: True|' \ - $startdir/pkg/usr/share/fluxbox/init - install -D -m644 ../$pkgname.desktop \ - $startdir/pkg/etc/X11/sessions/$pkgname.desktop - install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING + sed -i 's|^.*slit\.autoHide.*$|session.screen0.slit.autoHide: True|' ${pkgdir}/usr/share/fluxbox/init || return 1 + install -D -m644 ../fluxbox.desktop ${pkgdir}/etc/X11/sessions/fluxbox.desktop || return 1 + install -D -m644 ../keys ${pkgdir}/usr/share/fluxbox/keys || return 1 + install -D -m644 COPYING ${pkgdir}/usr/share/licenses/$pkgname/COPYING || return 1 } diff --git a/abs/core/fluxbox/keys b/abs/core/fluxbox/keys new file mode 100644 index 0000000..fbacf75 --- /dev/null +++ b/abs/core/fluxbox/keys @@ -0,0 +1,27 @@ +OnDesktop Mouse1 :HideMenus +OnDesktop Mouse2 :WorkspaceMenu +OnDesktop Mouse3 :RootMenu +OnDesktop Mouse4 :NextWorkspace +OnDesktop Mouse5 :PrevWorkspace + +Mod1 Tab :NextWindow +Mod1 Shift Tab :PrevWindow +Mod1 F1 :Workspace 1 +Mod1 F2 :Workspace 2 +Mod1 F3 :Workspace 3 +Mod1 F4 :Workspace 4 +Mod1 F5 :Workspace 5 +Mod1 F6 :Workspace 6 +Mod1 F8 :Workspace 8 +Mod1 F9 :Workspace 9 +Mod1 F10 :Workspace 10 +Mod1 F11 :Workspace 11 +Mod1 F12 :Workspace 12 +Mod1 x :ExecCommand xterm -fn *18* +Mod1 s :ExecCommand sudo taskset -c 0 mythtv-setup +Mod1 m :ExecCommand mythfrontend --logfile /var/log/mythtv/mythfrontend.log +Mod1 1 :ExecCommand sudo sv start mythbackend +Mod1 2 :ExecCommand sudo sv stop mythbackend +Mod1 3 :ExecCommand sudo sv restart mythbackend +Mod1 h :ExecCommand MythVantage -h +Mod1 Control u :ExecCommand /usr/LH/bin/unclutter-toggle.sh diff --git a/abs/core/fontconfig/PKGBUILD b/abs/core/fontconfig/PKGBUILD index 7abdf6d..f5c3465 100644 --- a/abs/core/fontconfig/PKGBUILD +++ b/abs/core/fontconfig/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: Jan de Groot pkgname=fontconfig pkgver=2.6.0 -pkgrel=2 +pkgrel=4 pkgdesc="A library for configuring and customizing font access" arch=(i686 x86_64) url="http://www.fontconfig.org/release/" diff --git a/abs/core/freetype2-static/PKGBUILD b/abs/core/freetype2-static/PKGBUILD new file mode 100644 index 0000000..6288742 --- /dev/null +++ b/abs/core/freetype2-static/PKGBUILD @@ -0,0 +1,30 @@ +# Maintainer: Maskawanian +pkgname=freetype2-static +pkgver=2.3.9 +pkgrel=1 +pkgdesc="TrueType font rendering library" +arch=(i686 x86_64) +license=('GPL') +url="http://freetype.sourceforge.net" +depends=('zlib') +conflicts=('freetype2') +provides=('freetype2='${pkgver}) +replaces=('freetype2') +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/freetype/freetype-${pkgver}.tar.bz2 + bytecode.patch + freetype-2.3.0-enable-spr.patch + freetype-2.2.1-enable-valid.patch + freetype-2.2.1-memcpy-fix.patch) +md5sums=('d76233108aca9c9606cdbd341562ad9a' '9ff19e742968c29e3ba52b08d6bf0a50' '816dc8619a6904a7385769433c0a8653' '214119610444c9b02766ccee5e220680' '6fb6606d28082ecb8e0c6d986b0b26aa') + +build() { + cd ${startdir}/src/freetype-${pkgver} + patch -Np0 -i ${startdir}/src/bytecode.patch || return 1 + patch -Np1 -i ${startdir}/src/freetype-2.3.0-enable-spr.patch || return 1 + patch -Np1 -i ${startdir}/src/freetype-2.2.1-enable-valid.patch || return 1 + patch -Np1 -i ${startdir}/src/freetype-2.2.1-memcpy-fix.patch || return 1 + ./configure --prefix=/usr --enable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/core/freetype2-static/bytecode.patch b/abs/core/freetype2-static/bytecode.patch new file mode 100644 index 0000000..dd901ad --- /dev/null +++ b/abs/core/freetype2-static/bytecode.patch @@ -0,0 +1,29 @@ +--- include/freetype/config/ftoption.h.old 2006-05-12 02:05:49.000000000 +0800 ++++ include/freetype/config/ftoption.h 2006-10-02 01:22:50.000000000 +0800 +@@ -436,7 +436,7 @@ + /* Do not #undef this macro here, since the build system might */ + /* define it for certain configurations only. */ + /* */ +-/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ ++#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER + + + /*************************************************************************/ +@@ -448,7 +448,7 @@ + /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook */ + /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally activated. */ + /* */ +-#define TT_CONFIG_OPTION_UNPATENTED_HINTING ++#undef TT_CONFIG_OPTION_UNPATENTED_HINTING + + + /*************************************************************************/ +@@ -480,7 +480,7 @@ + /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ + /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ + /* */ +-#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED ++#define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED + + + /*************************************************************************/ diff --git a/abs/core/freetype2-static/freetype-2.2.1-enable-valid.patch b/abs/core/freetype2-static/freetype-2.2.1-enable-valid.patch new file mode 100644 index 0000000..c78b6b7 --- /dev/null +++ b/abs/core/freetype2-static/freetype-2.2.1-enable-valid.patch @@ -0,0 +1,20 @@ +--- freetype-2.2.1/modules.cfg.orig 2006-07-07 21:01:09.000000000 -0400 ++++ freetype-2.2.1/modules.cfg 2006-07-07 21:01:54.000000000 -0400 +@@ -110,7 +110,7 @@ + AUX_MODULES += cache + + # TrueType GX/AAT table validation. Needs ftgxval.c below. +-# AUX_MODULES += gxvalid ++AUX_MODULES += gxvalid + + # Support for streams compressed with gzip (files with suffix .gz). + # +@@ -124,7 +124,7 @@ + + # OpenType table validation. Needs ftotval.c below. + # +-# AUX_MODULES += otvalid ++AUX_MODULES += otvalid + + # Auxiliary PostScript driver component to share common code. + # diff --git a/abs/core/freetype2-static/freetype-2.2.1-memcpy-fix.patch b/abs/core/freetype2-static/freetype-2.2.1-memcpy-fix.patch new file mode 100644 index 0000000..67a1c07 --- /dev/null +++ b/abs/core/freetype2-static/freetype-2.2.1-memcpy-fix.patch @@ -0,0 +1,14 @@ +--- freetype-2.2.1/src/psaux/psobjs.c~ 2006-04-26 16:38:17.000000000 +0200 ++++ freetype-2.2.1/src/psaux/psobjs.c 2006-09-10 15:01:13.000000000 +0200 +@@ -165,6 +165,11 @@ + return PSaux_Err_Invalid_Argument; + } + ++ if ( length < 0 ) { ++ FT_ERROR(( "ps_table_add: invalid length\n" )); ++ return PSaux_Err_Invalid_Argument; ++ } ++ + /* grow the base block if needed */ + if ( table->cursor + length > table->capacity ) + { diff --git a/abs/core/freetype2-static/freetype-2.3.0-enable-spr.patch b/abs/core/freetype2-static/freetype-2.3.0-enable-spr.patch new file mode 100644 index 0000000..8432e28 --- /dev/null +++ b/abs/core/freetype2-static/freetype-2.3.0-enable-spr.patch @@ -0,0 +1,11 @@ +--- freetype-2.3.0/include/freetype/config/ftoption.h.spf 2007-01-18 14:27:34.000000000 -0500 ++++ freetype-2.3.0/include/freetype/config/ftoption.h 2007-01-18 14:27:48.000000000 -0500 +@@ -92,7 +92,7 @@ + /* This is done to allow FreeType clients to run unmodified, forcing */ + /* them to display normal gray-level anti-aliased glyphs. */ + /* */ +-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ ++#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING + + + /*************************************************************************/ diff --git a/abs/core/ftgl/PKGBUILD b/abs/core/ftgl/PKGBUILD new file mode 100644 index 0000000..47c9eb4 --- /dev/null +++ b/abs/core/ftgl/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +# Contributor: tobias +pkgname=ftgl +pkgver=2.1.2 +pkgrel=4 +pkgdesc="OpenGL library to use arbitrary fonts" +arch=(i686 x86_64) +source=(http://superb-east.dl.sourceforge.net/sourceforge/ftgl/$pkgname-$pkgver.tar.gz ftgl-gcc411.patch) +url="http://homepages.paradise.net.nz/henryj/code/" +options=(!libtool) +depends=(freetype2 glut) +makedepends=(doxygen) + +build() { + cd $startdir/src/FTGL/ + patch -Np1 -i ${startdir}/src/ftgl-gcc411.patch || return 1 + cd unix + sed -i 's|^ \$| $|g' src/Makefile + ./configure --prefix=/usr --with-pic + make || return 1 + make prefix=$startdir/pkg/usr install + +} +md5sums=('f81c0a7128192ba11e036186f9a968f2' '2a4ad16c1bfae869a8bf0ddababfd25a') diff --git a/abs/core/ftgl/ftgl-gcc411.patch b/abs/core/ftgl/ftgl-gcc411.patch new file mode 100644 index 0000000..f52d48b --- /dev/null +++ b/abs/core/ftgl/ftgl-gcc411.patch @@ -0,0 +1,12 @@ +diff -ruN FTGL.org/include/FTTextureGlyph.h FTGL/include/FTTextureGlyph.h +--- FTGL.org/include/FTTextureGlyph.h 2006-07-11 17:49:42.000000000 +0200 ++++ FTGL/include/FTTextureGlyph.h 2006-07-11 17:50:23.000000000 +0200 +@@ -52,7 +52,7 @@ + * Reset the currently active texture to zero to get into a known state before + * drawing a string. This is to get round possible threading issues. + */ +- static void FTTextureGlyph::ResetActiveTexture(){ activeTextureID = 0;} ++ static void ResetActiveTexture(){ activeTextureID = 0;} + + private: + /** diff --git a/abs/core/gcc-libs/PKGBUILD b/abs/core/gcc-libs/PKGBUILD index 7bca5de..3edfc76 100644 --- a/abs/core/gcc-libs/PKGBUILD +++ b/abs/core/gcc-libs/PKGBUILD @@ -1,29 +1,33 @@ -# $Id: PKGBUILD 6599 2008-07-25 17:11:14Z andyrtr $ +# $Id: PKGBUILD 25244 2009-01-24 17:53:12Z andyrtr $ # Maintainer: Jan de Groot +# Maintainer: Andreas Radke + pkgname=gcc-libs -pkgver=4.3.1 -pkgrel=12 -_snapshot=4.3-20080724 +pkgver=4.3.3 +pkgrel=1 +#_snapshot=4.3-20080724 pkgdesc="Runtime libraries shipped by GCC for C and C++ languages" -arch=(i686 x86_64) +arch=('i686' 'x86_64') license=('GPL' 'LGPL') groups=('base') url="http://gcc.gnu.org" -depends=('glibc>=2.8-2') -makedepends=('binutils>=2.18-8' 'gcc>=4.3.1' 'mpfr>=2.3.1' 'texinfo') +depends=('glibc>=2.8-3') +makedepends=('binutils>=2.19' 'gcc>=4.3.2' 'mpfr>=2.3.1' 'texinfo' 'flex') conflicts=('gcc-fortran' 'gcc-objc') provides=("gcc-objc=${pkgver}") -options=('!libtool' '!emptydirs') -source=(#ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++,fortran,objc}-${pkgver}.tar.bz2 - ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-{core,g++,fortran,objc}-${_snapshot}.tar.bz2 +options=('!libtool' '!emptydirs' '!docs') +source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++,fortran,objc}-${pkgver}.tar.bz2 + #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-{core,g++,fortran,objc}-${_snapshot}.tar.bz2 gcc_pure64.patch - gcc-hash-style-both.patch) -md5sums=('99ce6170e379779fe9c0971f9e27c704' - 'e39db43584ec603b314348405c753bd5' - '76b9d6a71eb2cd778cd6ad3e9d576c64' - '2b2456702ca6362b01583160e888be14' + gcc-hash-style-both.patch + buildfix_new_bison.patch) +md5sums=('1739288c2c7b1472796b33d641dbdbbd' + '18428e313a9927d38b313e688c62219b' + '8771e6190dd4f3178b2a7978d2380a5d' + '125b75947c763ba59b7ea95d3739d431' '4030ee1c08dd1e843c0225b772360e76' - 'bb420bc84b1104455b7230b1cd4b96c2') + 'bb420bc84b1104455b7230b1cd4b96c2' + '412fb8ebb30958eb1a93e9bd89413dd7') build() { if ! locale -a | grep ^de_DE; then @@ -31,8 +35,8 @@ build() { return 1 fi - #cd ${srcdir}/gcc-${pkgver} - cd ${srcdir}/gcc-${_snapshot} + cd ${srcdir}/gcc-${pkgver} + #cd ${srcdir}/gcc-${_snapshot} # Don't install libiberty sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in @@ -40,11 +44,12 @@ build() { patch -Np1 -i ../gcc_pure64.patch || return 1 fi patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch || return 1 + patch -Np0 -i ${srcdir}/buildfix_new_bison.patch || return 1 # Don't run fixincludes sed -i -e 's@\./fixinc\.sh@-c true@' gcc/Makefile.in - echo ${pkgver} > gcc/BASE-VER +# echo ${pkgver} > gcc/BASE-VER mkdir build cd build @@ -62,4 +67,6 @@ build() { rm -rf ${pkgdir}/usr/bin rm -rf ${pkgdir}/usr{,share}/man find ${pkgdir} -name gcc.mo -delete + +# rm -f {pkgdir}/usr/share/info/dir } diff --git a/abs/core/gcc-libs/buildfix_new_bison.patch b/abs/core/gcc-libs/buildfix_new_bison.patch new file mode 100644 index 0000000..01b8880 --- /dev/null +++ b/abs/core/gcc-libs/buildfix_new_bison.patch @@ -0,0 +1,22 @@ +--- gcc/treelang/parse.y 2007-07-18 08:19:29.000000000 +0000 ++++ gcc/treelang/parse.y.new 2008-11-20 06:40:00.013275486 +0000 +@@ -369,7 +369,6 @@ + current_function = NULL; + } + ; +- + variable_defs_opt: + /* Nil. */ { + $$ = 0; +@@ -685,9 +684,9 @@ + + expressions_with_commas_opt: + /* Nil. */ { +-$$ = 0 ++$$ = 0; + } +-|expressions_with_commas { $$ = $1 } ++|expressions_with_commas { $$ = $1; } + ; + + expressions_with_commas: diff --git a/abs/core/gcc/PKGBUILD b/abs/core/gcc/PKGBUILD new file mode 100644 index 0000000..fd796b4 --- /dev/null +++ b/abs/core/gcc/PKGBUILD @@ -0,0 +1,81 @@ +# $Id: PKGBUILD 25249 2009-01-24 18:28:11Z andyrtr $ +# Maintainer: Jan de Groot +# Maintainer: Andreas Radke + +pkgname=gcc +pkgver=4.3.3 +pkgrel=1 +#_snapshot=4.3-20080724 +pkgdesc="The GNU Compiler Collection" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +groups=('base-devel') +url="http://gcc.gnu.org" +depends=('binutils>=2.19' "gcc-libs>=${pkgver}" 'mpfr>=2.3.1' 'texinfo') +makedepends=('flex') +replaces=('gcc-fortran' 'gcc-objc') +options=('!libtool') +install=gcc.install +source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++,fortran,objc,java}-${pkgver}.tar.bz2 + #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-{core,g++,fortran,objc,java}-${_snapshot}.tar.bz2 + ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-man-20080118.tar.bz2 + gcc_pure64.patch + gcc-hash-style-both.patch + buildfix_new_bison.patch) +md5sums=('1739288c2c7b1472796b33d641dbdbbd' + '18428e313a9927d38b313e688c62219b' + '8771e6190dd4f3178b2a7978d2380a5d' + '125b75947c763ba59b7ea95d3739d431' + '068938366ee0be5b70112bdf485898b4' + '990881456a89b1ffbd68d2d7188759da' + '4030ee1c08dd1e843c0225b772360e76' + 'bb420bc84b1104455b7230b1cd4b96c2' + '412fb8ebb30958eb1a93e9bd89413dd7') + +build() { + if ! locale -a | grep ^de_DE; then + echo "You need the de_DE locale to build gcc." + return 1 + fi + + cd ${srcdir}/gcc-${pkgver} + #cd ${srcdir}/gcc-${_snapshot} + # Don't install libiberty + sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in + + if [ "${CARCH}" = "x86_64" ]; then + patch -Np1 -i ../gcc_pure64.patch || return 1 + fi + patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch || return 1 + patch -Np0 -i ${srcdir}/buildfix_new_bison.patch || return 1 + + echo ${pkgver} > gcc/BASE-VER + + mkdir build + cd build + ../configure --prefix=/usr --enable-shared \ + --enable-languages=c,c++,fortran,objc,obj-c++,treelang \ + --enable-threads=posix --mandir=/usr/share/man --infodir=/usr/share/info \ + --enable-__cxa_atexit --disable-multilib --libdir=/usr/lib \ + --libexecdir=/usr/lib --enable-clocale=gnu --disable-libstdcxx-pch \ + --with-tune=generic + make || return 1 + make -j1 DESTDIR=${pkgdir} install || return 1 + mkdir -p ${pkgdir}/lib + ln -sf ../usr/bin/cpp ${pkgdir}/lib/cpp + ln -sf gcc ${pkgdir}/usr/bin/cc + ln -sf g++ ${pkgdir}/usr/bin/c++ + + # install the libstdc++ man pages + mkdir -p ${pkgdir}/usr/share/man/man3 + install -m644 ${srcdir}/man/man3/* ${pkgdir}/usr/share/man/man3/ + + # Remove libraries and translations in gcc-libs + rm -f ${pkgdir}/usr/lib/lib* + find ${pkgdir} -name libstdc++.mo -delete + + # Remove fixed includes, either no need for them, or they're not complete + rm -rf ${pkgdir}/usr/lib/${CHOST}/${pkgver}/include-fixed/* + + rm -f ${pkgdir}/usr/share/info/dir +} diff --git a/abs/core/gcc/buildfix_new_bison.patch b/abs/core/gcc/buildfix_new_bison.patch new file mode 100644 index 0000000..01b8880 --- /dev/null +++ b/abs/core/gcc/buildfix_new_bison.patch @@ -0,0 +1,22 @@ +--- gcc/treelang/parse.y 2007-07-18 08:19:29.000000000 +0000 ++++ gcc/treelang/parse.y.new 2008-11-20 06:40:00.013275486 +0000 +@@ -369,7 +369,6 @@ + current_function = NULL; + } + ; +- + variable_defs_opt: + /* Nil. */ { + $$ = 0; +@@ -685,9 +684,9 @@ + + expressions_with_commas_opt: + /* Nil. */ { +-$$ = 0 ++$$ = 0; + } +-|expressions_with_commas { $$ = $1 } ++|expressions_with_commas { $$ = $1; } + ; + + expressions_with_commas: diff --git a/abs/core/gcc/gcc-hash-style-both.patch b/abs/core/gcc/gcc-hash-style-both.patch new file mode 100644 index 0000000..8fea758 --- /dev/null +++ b/abs/core/gcc/gcc-hash-style-both.patch @@ -0,0 +1,163 @@ +#! /bin/sh -e + +# DP: Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, s390, sparc) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=both. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +--- gcc/config/alpha/linux-elf.h.orig 2007-08-04 08:55:58.000000000 +0200 ++++ gcc/config/alpha/linux-elf.h 2007-09-01 15:47:26.605865578 +0200 +@@ -39,7 +39,7 @@ + + #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- gcc/config/s390/linux.h.orig 2007-08-04 08:55:59.000000000 +0200 ++++ gcc/config/s390/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -77,7 +77,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- gcc/config/sparc/linux.h.orig 2007-08-04 08:56:01.000000000 +0200 ++++ gcc/config/sparc/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -132,7 +132,7 @@ + + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!ibcs: \ +--- gcc/config/sparc/linux64.h.orig 2007-08-04 08:56:01.000000000 +0200 ++++ gcc/config/sparc/linux64.h 2007-09-01 15:47:26.605865578 +0200 +@@ -166,7 +166,7 @@ + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -175,7 +175,7 @@ + %{static:-static}}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -256,7 +256,7 @@ + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2007-08-04 08:56:07.000000000 +0200 ++++ gcc/config/i386/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -108,7 +108,7 @@ + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux64.h.orig 2007-08-04 08:56:07.000000000 +0200 ++++ gcc/config/i386/linux64.h 2007-09-01 15:48:27.336781690 +0200 +@@ -65,7 +65,7 @@ + #endif + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/ia64/linux.h.orig 2006-12-12 18:59:53.000000000 +0100 ++++ gcc/config/ia64/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -40,7 +40,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/rs6000/sysv4.h.orig 2007-08-08 23:37:49.000000000 +0200 ++++ gcc/config/rs6000/sysv4.h 2007-09-01 15:47:26.615865729 +0200 +@@ -901,7 +901,7 @@ + #define LINUX_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + +--- gcc/config/rs6000/linux64.h.orig 2007-08-04 08:56:12.000000000 +0200 ++++ gcc/config/rs6000/linux64.h 2007-09-01 15:47:26.615865729 +0200 +@@ -354,11 +354,11 @@ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" + diff --git a/abs/core/gcc/gcc-java-driver.patch b/abs/core/gcc/gcc-java-driver.patch new file mode 100644 index 0000000..528b528 --- /dev/null +++ b/abs/core/gcc/gcc-java-driver.patch @@ -0,0 +1,11 @@ +--- gcc/Makefile.in.orig 2008-03-08 09:52:09.000000000 +0000 ++++ gcc/Makefile.in 2008-03-08 09:54:09.000000000 +0000 +@@ -421,8 +421,8 @@ + xm_defines=@xm_defines@ + lang_checks=check-gcc + lang_opt_files=@lang_opt_files@ $(srcdir)/c.opt $(srcdir)/common.opt +-lang_specs_files=@lang_specs_files@ ++lang_specs_files=@lang_specs_files@ $(srcdir)/java/lang-specs.h + lang_tree_files=@lang_tree_files@ + target_cpu_default=@target_cpu_default@ + GCC_THREAD_FILE=@thread_file@ diff --git a/abs/core/gcc/gcc.install b/abs/core/gcc/gcc.install new file mode 100644 index 0000000..1ad170c --- /dev/null +++ b/abs/core/gcc/gcc.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(cpp.info cppinternals.info gcc.info gccinstall.info gccint.info gfortran.info libgomb.info treelang.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/gcc/gcc_pure64.patch b/abs/core/gcc/gcc_pure64.patch new file mode 100644 index 0000000..8c0baf8 --- /dev/null +++ b/abs/core/gcc/gcc_pure64.patch @@ -0,0 +1,26 @@ +diff -Naur gcc-4.2.0.orig/gcc/config/i386/linux64.h gcc-4.2.0/gcc/config/i386/linux64.h +--- gcc-4.2.0.orig/gcc/config/i386/linux64.h 2007-05-16 19:21:19.000000000 -0400 ++++ gcc-4.2.0/gcc/config/i386/linux64.h 2007-05-18 17:04:05.000000000 -0400 +@@ -49,8 +49,8 @@ + When the -shared link option is used a final link is not being + done. */ + +-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" +-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" ++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld-linux.so.2" ++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2" + + #undef LINK_SPEC + #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ +diff -Naur gcc-4.2.0.orig/gcc/config/i386/t-linux64 gcc-4.2.0/gcc/config/i386/t-linux64 +--- gcc-4.2.0.orig/gcc/config/i386/t-linux64 2007-05-16 19:21:19.000000000 -0400 ++++ gcc-4.2.0/gcc/config/i386/t-linux64 2007-05-18 17:04:36.000000000 -0400 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_OSDIRNAMES = ../lib ../lib32 + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib diff --git a/abs/core/gdb/PKGBUILD b/abs/core/gdb/PKGBUILD new file mode 100644 index 0000000..e4ee109 --- /dev/null +++ b/abs/core/gdb/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 10684 2008-08-29 21:45:41Z eric $ +# Maintainer: Jan de Groot +pkgname=gdb +pkgver=6.8 +pkgrel=3 +pkgdesc="The GNU Debugger" +arch=(i686 x86_64) +url="http://sources.redhat.com/gdb/" +depends=('ncurses' 'expat') +options=('!libtool') +license=('GPL3') +install=gdb.install +source=(http://ftp.gnu.org/gnu/gdb/${pkgname}-${pkgver}.tar.bz2) +md5sums=('c9da266b884fb8fa54df786dfaadbc7a') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-nls --mandir=/usr/share/man \ + --infodir=/usr/share/info + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + rm -f ${pkgdir}/usr/share/info/dir + # resolve conflicts with binutils + rm -f ${startdir}/pkg/usr/include/{bfd,dis-asm,symcat,ansidecl,bfdlink}.h + rm -f ${startdir}/pkg/usr/lib/{libiberty,libbfd,libopcodes}.a + rm -f ${startdir}/pkg/usr/share/info/{bfd.info,configure.info,standards.info} +} diff --git a/abs/core/gdb/gdb.install b/abs/core/gdb/gdb.install new file mode 100644 index 0000000..ca793a1 --- /dev/null +++ b/abs/core/gdb/gdb.install @@ -0,0 +1,18 @@ +infodir=/usr/share/info +filelist=(annotate.info gdb.info gdb.info-1 gdb.info-2 gdb.info-3 gdb.info-4 gdbint.info gdbint.info-1 gdbint.info-2 stabs.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/abs/core/gdk-pixbuf/PKGBUILD b/abs/core/gdk-pixbuf/PKGBUILD new file mode 100644 index 0000000..64b8b9a --- /dev/null +++ b/abs/core/gdk-pixbuf/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 20860 2008-12-07 04:28:44Z eric $ +# Maintainer: dorphell +# Committer: Judd Vinet + +pkgname=gdk-pixbuf +pkgver=0.22.0 +pkgrel=4 +pkgdesc="Image loading and manipulation library" +depends=(gtk libtiff libpng) +options=(!libtool) +arch=(i686 x86_64) +source=(ftp://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.22/${pkgname}-${pkgver}.tar.bz2 + gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch + gdk-pixbuf-0.22.0-bmp_secure.patch + gdk-pixbuf-0.22.0-loaders.patch + gdk-pixbuf-0.22.0-m4.patch) +md5sums=(05fcb68ceaa338614ab650c775efc2f2 d1fb93f1ae994875158a7e0c108c36f8 + 5f59d5772b1482d885a180dbc581cf84 3cf31ae0509747f72ac27a9fd96109c2 + 3edfa9fe9382fd8206d6238ec121a5af) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + export SED=/bin/sed + patch -Np1 -i ${startdir}/src/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch || return 1 + patch -Np0 -i ${startdir}/src/gdk-pixbuf-0.22.0-bmp_secure.patch || return 1 + patch -Np1 -i ${startdir}/src/gdk-pixbuf-0.22.0-loaders.patch || return 1 + patch -Np1 -i ${startdir}/src/gdk-pixbuf-0.22.0-m4.patch || return 1 + libtoolize --force --copy --automake + ./configure --prefix=/usr --disable-gtk-doc + make || return 1 + make DESTDIR=${startdir}/pkg install + rm -rf ${startdir}/pkg/usr/share/gnome +} diff --git a/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch new file mode 100644 index 0000000..ffb4378 --- /dev/null +++ b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch @@ -0,0 +1,48 @@ +--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-bmp.c 2002-09-27 23:12:40.000000000 +0200 ++++ gdk-pixbuf-0.22.0.patched/gdk-pixbuf/io-bmp.c 2005-03-30 01:33:06.000000000 +0200 +@@ -31,8 +31,6 @@ + #include "gdk-pixbuf-private.h" + #include "gdk-pixbuf-io.h" + +- +- + #if 0 + /* If these structures were unpacked, they would define the two headers of the + * BMP file. After them comes the palette, and then the image data. +@@ -206,7 +204,7 @@ + + if (State == NULL) + return NULL; +- ++ + while (feof(f) == 0) { + length = fread(membuf, 1, sizeof (membuf), f); + if (length > 0) +@@ -245,11 +243,26 @@ + static gboolean + grow_buffer (struct bmp_progressive_state *State) + { +- guchar *tmp = realloc (State->buff, State->BufferSize); ++ guchar *tmp; ++ ++ if (State->BufferSize == 0) { ++#if 0 ++ g_set_error (error, ++ GDK_PIXBUF_ERROR, ++ GDK_PIXBUF_ERROR_CORRUPT_IMAGE, ++ _("BMP image has bogus header data")); ++#endif ++ State->read_state = READ_STATE_ERROR; ++ return FALSE; ++ } ++ ++ tmp = realloc (State->buff, State->BufferSize); ++ + if (!tmp) { + State->read_state = READ_STATE_ERROR; + return FALSE; + } ++ + State->buff = tmp; + return TRUE; + } diff --git a/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_secure.patch b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_secure.patch new file mode 100644 index 0000000..29471f1 --- /dev/null +++ b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-bmp_secure.patch @@ -0,0 +1,19 @@ +Index: io-bmp.c +=================================================================== +RCS file: /cvs/gnome/gtk+/gdk-pixbuf/io-bmp.c,v +retrieving revision 1.41 +diff -u -p -r1.41 io-bmp.c +--- gdk-pixbuf/io-bmp.c 13 Aug 2004 02:26:57 -0000 1.41 ++++ gdk-pixbuf/io-bmp.c 20 Aug 2004 00:18:14 -0000 +@@ -876,8 +876,10 @@ DoCompressed(struct bmp_progressive_stat + guchar c; + gint idx; + +- if (context->compr.y >= context->Header.height) ++ if (context->compr.y >= context->Header.height) { ++ context->BufferDone = 0; + return TRUE; ++ } + + y = context->compr.y; + diff --git a/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-loaders.patch b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-loaders.patch new file mode 100644 index 0000000..0686538 --- /dev/null +++ b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-loaders.patch @@ -0,0 +1,134 @@ +diff -NurdB gdk-pixbuf-0.22.0/gdk-pixbuf/io-ico.c gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-ico.c +--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-ico.c 2002-09-27 17:19:15.000000000 -0500 ++++ gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-ico.c 2005-10-27 11:28:23.000000000 -0500 +@@ -330,6 +330,9 @@ + + State->HeaderSize+=I; + ++ if (State->HeaderSize < 0) ++ return FALSE; ++ + if (State->HeaderSize>State->BytesInHeaderBuf) { + guchar *tmp=realloc(State->HeaderBuf,State->HeaderSize); + if (!tmp) +diff -NurdB gdk-pixbuf-0.22.0/gdk-pixbuf/io-xpm.c gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-xpm.c +--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-xpm.c 2001-03-01 15:16:28.000000000 -0500 ++++ gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-xpm.c 2005-10-27 11:29:14.000000000 -0500 +@@ -243,8 +243,8 @@ + break; + else { + if (numnames > 0) { +- space -= 1; +- strcat (color, " "); ++ strncat (color, " ", space); ++ space -= MIN (space, 1); + } + + strncat (color, temp, space); +@@ -281,7 +281,8 @@ + /* Fall through to the xpm_read_string. */ + + case op_body: +- xpm_read_string (h->infile, &h->buffer, &h->buffer_size); ++ if(!xpm_read_string (h->infile, &h->buffer, &h->buffer_size)) ++ return NULL; + return h->buffer; + + default: +@@ -317,13 +318,6 @@ + return NULL; + } + +-/* Destroy notification function for the pixbuf */ +-static void +-free_buffer (guchar *pixels, gpointer data) +-{ +- free (pixels); +-} +- + static gboolean + xpm_color_parse (const char *spec, XColor *color) + { +@@ -342,7 +336,8 @@ + gchar pixel_str[32]; + GHashTable *color_hash; + _XPMColor *colors, *color, *fallbackcolor; +- guchar *pixels, *pixtmp; ++ guchar *pixtmp; ++ GdkPixbuf* pixbuf; + + fallbackcolor = NULL; + +@@ -352,16 +347,33 @@ + return NULL; + } + sscanf (buffer, "%d %d %d %d", &w, &h, &n_col, &cpp); +- if (cpp >= 32) { +- g_warning ("XPM has more than 31 chars per pixel."); ++ if (cpp <= 0 || cpp >= 32) { ++ g_warning ("XPM has invalid number of chars per pixel."); + return NULL; + } ++ if (n_col <= 0 || ++ n_col >= G_MAXINT / (cpp + 1) || ++ n_col >= G_MAXINT / sizeof (_XPMColor)) { ++ g_warning ("XPM file has invalid number of colors"); ++ return NULL; ++ } + + /* The hash is used for fast lookups of color from chars */ + color_hash = g_hash_table_new (g_str_hash, g_str_equal); + +- name_buf = g_new (gchar, n_col * (cpp + 1)); +- colors = g_new (_XPMColor, n_col); ++ name_buf = g_new (gchar, n_col * (cpp + 1)); ++ if (!name_buf) { ++ g_warning ("Cannot allocate memory for loading XPM image"); ++ g_hash_table_destroy (color_hash); ++ return NULL; ++ } ++ colors = g_new (_XPMColor, n_col); ++ if (!colors) { ++ g_warning ("Cannot allocate memory for loading XPM image"); ++ g_hash_table_destroy (color_hash); ++ g_free (name_buf); ++ return NULL; ++ } + + for (cnt = 0; cnt < n_col; cnt++) { + gchar *color_name; +@@ -397,12 +409,8 @@ + fallbackcolor = color; + } + +- if (is_trans) +- pixels = malloc (w * h * 4); +- else +- pixels = malloc (w * h * 3); +- +- if (!pixels) { ++ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, is_trans, 8, w, h); ++ if (!pixbuf) { + g_hash_table_destroy (color_hash); + g_free (colors); + g_free (name_buf); +@@ -410,7 +418,7 @@ + } + + wbytes = w * cpp; +- pixtmp = pixels; ++ pixtmp = pixbuf->pixels; + + for (ycnt = 0; ycnt < h; ycnt++) { + buffer = (*get_buf) (op_body, handle); +@@ -443,9 +451,7 @@ + g_free (colors); + g_free (name_buf); + +- return gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB, is_trans, 8, +- w, h, is_trans ? (w * 4) : (w * 3), +- free_buffer, NULL); ++ return pixbuf; + } + + /* Shared library entry point for file loading */ diff --git a/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-m4.patch b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-m4.patch new file mode 100644 index 0000000..032976d --- /dev/null +++ b/abs/core/gdk-pixbuf/gdk-pixbuf-0.22.0-m4.patch @@ -0,0 +1,9 @@ +Fix aclocal warning: +/usr/share/aclocal/gdk-pixbuf.m4:12: warning: underquoted definition of AM_PATH_GDK_PIXBUF +--- gdk-pixbuf-0.22.0/gdk-pixbuf.m4 ++++ gdk-pixbuf-0.22.0/gdk-pixbuf.m4 +@@ -11,3 +11,3 @@ + dnl +-AC_DEFUN(AM_PATH_GDK_PIXBUF, ++AC_DEFUN([AM_PATH_GDK_PIXBUF], + [dnl diff --git a/abs/core/ghostscript/PKGBUILD b/abs/core/ghostscript/PKGBUILD index 2cf5416..5a7aa2a 100644 --- a/abs/core/ghostscript/PKGBUILD +++ b/abs/core/ghostscript/PKGBUILD @@ -1,20 +1,20 @@ -# $Id: PKGBUILD 7626 2008-08-03 15:52:01Z jgc $ +# $Id: PKGBUILD 20527 2008-12-05 14:17:31Z allan $ # Maintainer: AndyRTR pkgname=ghostscript pkgver=8.63 -pkgrel=3 +pkgrel=5 pkgdesc="An interpreter for the PostScript language" arch=(i686 x86_64) license=('GPL' 'custom') -depends=('libxext' 'libxt' 'libcups>=1.3.8-2' 'fontconfig>=2.6.0' 'gtk2>=2.12.11' 'gnutls>=2.4.1') +depends=('libjpeg' 'libxext' 'libxt' 'libcups>=1.3.8-2' 'fontconfig>=2.6.0' 'gtk2>=2.12.11' 'gnutls>=2.4.1') makedepends=('automake' 'autoconf') +optdepends=('texlive-core: dvipdf') replaces=('ghostscript-lrpng') provides=('ghostscript-lprng') url="http://www.cs.wisc.edu/~ghost/" -#url="http://www.cups.org/espgs/" -install=ghostscript.install -source=(ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs863/ghostscript-${pkgver}.tar.bz2 +source=(http://ghostscript.com/releases/ghostscript-${pkgver}.tar.bz2 + #ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs863/ghostscript-${pkgver}.tar.bz2 ghostscript-fPIC.patch) options=('!libtool' '!makeflags') md5sums=('c770eedfdd846a53e211e3ba5339de21' diff --git a/abs/core/giflib/PKGBUILD b/abs/core/giflib/PKGBUILD index 6bc0de0..ef32328 100644 --- a/abs/core/giflib/PKGBUILD +++ b/abs/core/giflib/PKGBUILD @@ -5,7 +5,7 @@ pkgname=giflib pkgver=4.1.6 -pkgrel=3 +pkgrel=4 pkgdesc="A library for reading and writing gif images" url="http://sourceforge.net/projects/giflib/" arch=('i686' 'x86_64') diff --git a/abs/core/git/ChangeLog b/abs/core/git/ChangeLog new file mode 100644 index 0000000..54cdeec --- /dev/null +++ b/abs/core/git/ChangeLog @@ -0,0 +1,26 @@ +Simple version bumps are ommitted from the following ChangeLog. + +2008-09-14 Dan McGee + Version 1.6.0.2-1 + * Moved optional depends from install file to optdepends array + +2008-06-15 Dan McGee + Version 1.5.6-1 + * Removed 'cpio' dependency, clone is now a builtin and no longer needs it + +2008-02-02 Dan McGee + Version 1.5.4-1 + * Upstream version 1.5.4 + * Enable pthreads support in pack-objects. To use, set the pack.threads + git config option. Read manpages of pack-objects and config for more + details. + * Changelog added (with entries going back a bit). + +2008-01-28 Kevin Piche + Version 1.5.3.7-2 + * Updated for new perl policy (vendor dirs) + * Change license to GPL2 + +2007-11-01 Eric Belanger + Version 1.5.3.5-2 + * Fix Perl module location diff --git a/abs/core/git/PKGBUILD b/abs/core/git/PKGBUILD new file mode 100644 index 0000000..a392481 --- /dev/null +++ b/abs/core/git/PKGBUILD @@ -0,0 +1,47 @@ +pkgname=git +pkgver=1.6.2 +pkgrel=1 +pkgdesc="GIT - the stupid content tracker" +arch=(i686 x86_64) +url="http://git.or.cz/" +license=('GPL2') +depends=('curl' 'expat>=2.0' 'perl-error' 'perl>=5.10.0') +optdepends=('tk: gitk and git gui' + 'perl-libwww: git svn' + 'perl-term-readkey: git svn' + 'subversion: git svn' + 'cvsps: git cvsimport') +replaces=('git-core') +provides=('git-core') +source=("http://kernel.org/pub/software/scm/git/${pkgname}-${pkgver}.tar.bz2" \ + "http://kernel.org/pub/software/scm/git/git-manpages-${pkgver}.tar.bz2") + +build() { + cd $srcdir/$pkgname-$pkgver + make prefix=/usr gitexecdir=/usr/lib/git-core || return 1 + make prefix=/usr gitexecdir=/usr/lib/git-core \ + INSTALLDIRS=vendor DESTDIR=${pkgdir} install || return 1 + + # let's plop gitweb in /usr/share + mkdir -p $pkgdir/usr/share/ + cp -dR ./gitweb $pkgdir/usr/share/gitweb || return 1 + + #bash completion + mkdir -p $pkgdir/etc/bash_completion.d/ + install -m644 ./contrib/completion/git-completion.bash $pkgdir/etc/bash_completion.d/git || return 1 + + # how 'bout some manpages? + for mansect in man1 man5 man7; do + for manpage in $srcdir/$mansect/*; do + install -D -m644 $manpage $pkgdir/usr/share/man/$mansect/$(basename $manpage) + done + done + + # remove perllocal.pod, .packlist, and empty directories. + rm -rf $pkgdir/usr/lib/perl5 +} + +md5sums=('12c7d874e17c6e111697b1714b5f4319' + '163809f883e693a3a675a487d96b5a11') +sha256sums=('ab7dc40240092aa2e72a8db7e0045893ca5fa07a936e9fa83b242248e3c9f635' + '13e7d352f9cac1f34d64b5deb006d0961941e43975a33f7d8507df58df1fe68e') diff --git a/abs/core/glib/PKGBUILD b/abs/core/glib/PKGBUILD new file mode 100644 index 0000000..42f4420 --- /dev/null +++ b/abs/core/glib/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Eric Belanger +# Contributor: dorphell + +pkgname=glib +pkgver=1.2.10 +pkgrel=10 +pkgdesc="Common C routines used by Gtk+ and other libs" +arch=('i686' 'x86_64') +url="http://www.gtk.org/" +license=('LGPL') +depends=('glibc') +options=('!libtool' '!emptydirs' '!docs' ) +source=(ftp://ftp.gtk.org/pub/gtk/v1.2/$pkgname-$pkgver.tar.gz \ + gcc340.patch \ + aclocal-fixes.patch) +md5sums=('6fe30dad87c77b91b632def29dd69ef9' '877b3330e822a4be69a0f8a8c268cfd7'\ + 'e52c4b88427b9785bb8049dbdc9ff6fb') +sha1sums=('e5a9361c594608d152d5d9650154c2e3260b87fa'\ + 'a2cc224a66aeffdcac16ebd9e8af18143cf54918'\ + 'ae4438cf56c0c9264ee36f6973fb445f9a820be0') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -Np1 -i ../gcc340.patch || return 1 + patch -Np0 -i ../aclocal-fixes.patch || return 1 + + #Arch64 fixes --build/host + ./configure --prefix=/usr #--host=i686-pc-linux-gnu + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/glib/__changelog b/abs/core/glib/__changelog new file mode 100644 index 0000000..f2439db --- /dev/null +++ b/abs/core/glib/__changelog @@ -0,0 +1 @@ +added !emptydir !docs to options diff --git a/abs/core/glib/aclocal-fixes.patch b/abs/core/glib/aclocal-fixes.patch new file mode 100644 index 0000000..b064074 --- /dev/null +++ b/abs/core/glib/aclocal-fixes.patch @@ -0,0 +1,11 @@ +--- glib.m4.orig 2006-03-05 13:13:24.000000000 +0000 ++++ glib.m4 2006-03-05 13:13:35.000000000 +0000 +@@ -5,7 +5,7 @@ + dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or + dnl gthread is specified in MODULES, pass to glib-config + dnl +-AC_DEFUN(AM_PATH_GLIB, ++AC_DEFUN([AM_PATH_GLIB], + [dnl + dnl Get the cflags and libraries from the glib-config script + dnl diff --git a/abs/core/glib/gcc340.patch b/abs/core/glib/gcc340.patch new file mode 100644 index 0000000..941111a --- /dev/null +++ b/abs/core/glib/gcc340.patch @@ -0,0 +1,15 @@ +diff -Naur glib-1.2.10.orig/glib.h glib-1.2.10/glib.h +--- glib-1.2.10.orig/glib.h 2001-02-27 04:44:38.000000000 +0100 ++++ glib-1.2.10/glib.h 2004-05-27 15:50:32.436527848 +0200 +@@ -271,8 +271,10 @@ + + /* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with + * macros, so we can refer to them as strings unconditionally. ++ * ++ * Unfortunately these are _not_ treated as strings anymore in GCC3.4. + */ +-#ifdef __GNUC__ ++#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ < 4) + #define G_GNUC_FUNCTION __FUNCTION__ + #define G_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__ + #else /* !__GNUC__ */ diff --git a/abs/core/glib2/PKGBUILD b/abs/core/glib2/PKGBUILD index 3e4abd7..db2bcae 100644 --- a/abs/core/glib2/PKGBUILD +++ b/abs/core/glib2/PKGBUILD @@ -1,32 +1,30 @@ -# $Id: PKGBUILD 7524 2008-08-02 20:27:35Z jgc $ +# $Id: PKGBUILD 34596 2009-04-10 10:17:45Z jgc $ # Maintainer: Jan de Groot pkgname=glib2 -pkgver=2.16.5 +pkgver=2.20.1 pkgrel=1 pkgdesc="Common C routines used by GTK+ 2.4 and other libs" url="http://www.gtk.org/" arch=(i686 x86_64) license=('LGPL') -depends=('pcre>=7.7') +depends=('pcre>=7.8') makedepends=('pkgconfig') -options=('!libtool') -source=(http://ftp.gnome.org/pub/GNOME/sources/glib/2.16/glib-${pkgver}.tar.bz2 - gkeyfile-bool-nocase.patch +options=('!libtool' '!docs') +source=(http://ftp.gnome.org/pub/GNOME/sources/glib/2.20/glib-${pkgver}.tar.bz2 glib2.sh glib2.csh) -md5sums=('039f02d47d4071322a3f00abf031e5d9' - '5ca65611e824662146369e814d49ad06' +md5sums=('d7ef53c7b65827a1baa4bad1c6893fa3' '803017b365bd35dc20b092ce43b8c8c5' '90c7b830bef4baf225c2eb8b7ead0cab') build() { - cd ${startdir}/src/glib-${pkgver} - patch -Np0 -i ${startdir}/src/gkeyfile-bool-nocase.patch || return 1 + cd "${srcdir}/glib-${pkgver}" ./configure --prefix=/usr --enable-static --enable-shared --with-pcre=system --disable-fam || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -d -m755 ${startdir}/pkg/etc/profile.d - install -m755 ${startdir}/src/glib2.{csh,sh} ${startdir}/pkg/etc/profile.d/ || return 1 + install -d "${pkgdir}/etc/profile.d" + install -m755 "${srcdir}/glib2.sh" "${pkgdir}/etc/profile.d/" || return 1 + install -m755 "${srcdir}/glib2.csh" "${pkgdir}/etc/profile.d/" || return 1 } diff --git a/abs/core/glibc/ChangeLog b/abs/core/glibc/ChangeLog index 79a44e7..631f360 100644 --- a/abs/core/glibc/ChangeLog +++ b/abs/core/glibc/ChangeLog @@ -1,3 +1,14 @@ +glibc 2.9-3 +- remove texinfo dep +- only call install-info when needed + +glibc 2.9-2 +- apply Fedora10 changes to fix + name resolving issues + +glibc 2.9-1 +- bump to new 2.9 branch + glibc 2.8-2 - fix an old memory issue again @@ -25,4 +36,4 @@ glibc 2.7-3 localedata/tailor-iso14651_t1.diff partly to fix broken et_EE locale - switch to compressed patches -- added ChangeLog \ No newline at end of file +- added ChangeLog diff --git a/abs/core/glibc/PKGBUILD b/abs/core/glibc/PKGBUILD index 68df516..e7f866f 100644 --- a/abs/core/glibc/PKGBUILD +++ b/abs/core/glibc/PKGBUILD @@ -1,9 +1,11 @@ -# $Id: PKGBUILD 2685 2008-06-11 13:30:43Z andyrtr $ +# $Id: PKGBUILD 25809 2009-01-29 17:49:56Z aaron $ # Maintainer: Jan de Groot +# Maintainer: Andreas Radke + pkgname=glibc -pkgver=2.8 -pkgrel=11 -_glibcdate=20080610 +pkgver=2.9 +pkgrel=4 +_glibcdate=20081119 install=glibc.install backup=(etc/locale.gen) pkgdesc="GNU C Library" @@ -11,16 +13,16 @@ arch=(i686 x86_64) license=('GPL' 'LGPL') url="http://www.gnu.org/software/libc" groups=('base') -depends=('sh' 'kernel-headers>=2.6.25.6' 'tzdata') -makedepends=('gcc>=4.3.1-1') +depends=('kernel-headers>=2.6.27.6' 'tzdata') +makedepends=('gcc>=4.3.2-2') replaces=('glibc-xen') -source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-2.8_${_glibcdate}.tar.bz2 - ftp://ftp.archlinux.org/other/glibc/glibc-patches-${pkgver}-2.tar.bz2 +source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-${pkgver}_${_glibcdate}.tar.bz2 + ftp://ftp.archlinux.org/other/glibc/glibc-patches-${pkgver}-2.tar.gz nscd locale.gen.txt locale-gen) -md5sums=('63def58972f0e8429247916154c21323' - '3ec00d9aa3f2fec046bc3e615dfb723a' +md5sums=('1f7cc590a7a9bbef8b09fe89af69fb8c' + '7679e2bcd981847efccb2bad9e57fee3' 'b587ee3a70c9b3713099295609afde49' '07ac979b6ab5eeb778d55f041529d623' '476e9113489f93b348b21e144b6a8fcf') @@ -28,27 +30,33 @@ md5sums=('63def58972f0e8429247916154c21323' build() { # for cvs checkout -# mkdir ${startdir}/src/glibc-${_glibcdate} -# cd ${startdir}/src/glibc-${_glibcdate} -# export _TAG=glibc-2_8-branch -# export 'CVSROOT=:pserver:anoncvs@sources.redhat.com:/cvs/glibc' + mkdir ${srcdir}/glibc-${_glibcdate} + cd ${srcdir}/glibc-${_glibcdate} + export _TAG=glibc-2_9-branch + export 'CVSROOT=:pserver:anoncvs@sources.redhat.com:/cvs/glibc' # cvs -z9 co -r $_TAG libc || return 1 -# tar -cvjf glibc-2.8_${_glibcdate}.tar.bz2 libc +# tar -cvjf ../../glibc-2.9_${_glibcdate}.tar.bz2 libc # return 1 - cd ${startdir}/src/libc + cd ${srcdir}/libc # patch from Debian - patch -Np1 -i ${startdir}/src/glibc-patches/glibc-2.5-localedef_segfault-1.patch || return 1 # still needed? + patch -Np1 -i ${srcdir}/glibc-patches/glibc-2.5-localedef_segfault-1.patch || return 1 # still needed? # Upstream fixes. See sources.redhat.com bugzilla - patch -Np1 -i ${startdir}/src/glibc-patches/glibc-2.7-bz4781.patch || return 1 + patch -Np1 -i ${srcdir}/glibc-patches/glibc-2.7-bz4781.patch || return 1 # Gentoo fixes - patch -Np1 -i ${startdir}/src/glibc-patches/glibc-dont-build-timezone.patch || return 1 + patch -Np1 -i ${srcdir}/glibc-patches/glibc-dont-build-timezone.patch || return 1 + + # fixes taken from FC10 2.9-3 rpm, fixes FS#12215 + # see http://sources.redhat.com/bugzilla/show_bug.cgi?id=7060 + # see https://bugzilla.redhat.com/show_bug.cgi?id=459756 + patch -Np1 -i ${srcdir}/glibc-patches/glibc-nss_dns-gethostbyname4-disable.patch || return 1 + patch -Np1 -i ${srcdir}/glibc-patches/glibc-fixes1.patch || return 1 - install -m755 -d ${startdir}/pkg/etc - touch ${startdir}/pkg/etc/ld.so.conf + install -m755 -d ${pkgdir}/etc + touch ${pkgdir}/etc/ld.so.conf mkdir glibc-build cd glibc-build @@ -68,33 +76,35 @@ build() { --libdir=/usr/lib --without-gd make || return 1 - make install_root=${startdir}/pkg install || return 1 + make install_root=${pkgdir} install || return 1 - rm -f ${startdir}/pkg/etc/ld.so.cache ${startdir}/pkg/etc/ld.so.conf ${startdir}/pkg/etc/localtime + rm -f ${pkgdir}/etc/ld.so.cache ${pkgdir}/etc/ld.so.conf ${pkgdir}/etc/localtime - install -m755 -d ${startdir}/pkg/etc/rc.d - install -m755 -d ${startdir}/pkg/usr/sbin - install -m755 -d ${startdir}/pkg/usr/lib/locale - install -m644 ${startdir}/src/libc/nscd/nscd.conf ${startdir}/pkg/etc/nscd.conf - install -m755 ${startdir}/src/nscd ${startdir}/pkg/etc/rc.d/nscd - install -m755 ${startdir}/src/locale-gen ${startdir}/pkg/usr/sbin + install -m755 -d ${pkgdir}/etc/rc.d + install -m755 -d ${pkgdir}/usr/sbin + install -m755 -d ${pkgdir}/usr/lib/locale + install -m644 ${srcdir}/libc/nscd/nscd.conf ${pkgdir}/etc/nscd.conf + install -m755 ${srcdir}/nscd ${pkgdir}/etc/rc.d/nscd + install -m755 ${srcdir}/locale-gen ${pkgdir}/usr/sbin - sed -i -e 's/^\tserver-user/#\tserver-user/' ${startdir}/pkg/etc/nscd.conf || return 1 + sed -i -e 's/^\tserver-user/#\tserver-user/' ${pkgdir}/etc/nscd.conf || return 1 # create /etc/locale.gen - install -m644 ${startdir}/src/locale.gen.txt ${startdir}/pkg/etc/locale.gen - sed -i "s|/| |g" ${startdir}/src/libc/localedata/SUPPORTED - sed -i 's|\\| |g' ${startdir}/src/libc/localedata/SUPPORTED - sed -i "s|SUPPORTED-LOCALES=||" ${startdir}/src/libc/localedata/SUPPORTED - cat ${startdir}/src/libc/localedata/SUPPORTED >> ${startdir}/pkg/etc/locale.gen - sed -i "s|^|#|g" ${startdir}/pkg/etc/locale.gen + install -m644 ${srcdir}/locale.gen.txt ${pkgdir}/etc/locale.gen + sed -i "s|/| |g" ${srcdir}/libc/localedata/SUPPORTED + sed -i 's|\\| |g' ${srcdir}/libc/localedata/SUPPORTED + sed -i "s|SUPPORTED-LOCALES=||" ${srcdir}/libc/localedata/SUPPORTED + cat ${srcdir}/libc/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen + sed -i "s|^|#|g" ${pkgdir}/etc/locale.gen if [ "${CARCH}" = "x86_64" ]; then # fix for the linker - sed -i '/RTLDLIST/s%/ld-linux.so.2 /lib64%%' ${startdir}/pkg/usr/bin/ldd + sed -i '/RTLDLIST/s%/ld-linux.so.2 /lib64%%' ${pkgdir}/usr/bin/ldd #Comply with multilib binaries, they look for the linker in /lib64 - mkdir ${startdir}/pkg/lib64 - cd ${startdir}/pkg/lib64 + mkdir ${pkgdir}/lib64 + cd ${pkgdir}/lib64 ln -v -s ../lib/ld* . fi + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/glibc/glibc.install b/abs/core/glibc/glibc.install index 2a35040..17c6b5d 100644 --- a/abs/core/glibc/glibc.install +++ b/abs/core/glibc/glibc.install @@ -1,3 +1,7 @@ +infodir=/usr/share/info +filelist=(libc.info libc.info-1 libc.info-2 libc.info-3 libc.info-4 libc.info-5 libc.info-6 libc.info-7 + libc.info-8 libc.info-9 libc.info-10 libc.info-11) + pre_upgrade() { if [ "`uname -m`" = "x86_64" ]; then if [ "`vercmp $2 2.4`" -lt 0 ]; then @@ -29,15 +33,19 @@ mv /lib64 /lib && echo "/lib64 moved" fi fi -} + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null + done +} post_upgrade() { - echo -n "reloading init: " ldconfig -r . init u - echo "done." - cat << _EOF + + if [ "`vercmp $2 2.3.6`" -lt 0 ]; then + cat << _EOF ==> ATTENTION INTERNATIONAL USERS: ==> ==> Locales are no longer included in the glibc package. @@ -46,21 +54,20 @@ post_upgrade() { ==> glibc will try to autodetect the required locales now, if you need ==> additional locales, please enable them in /etc/locale.gen and run ==> /usr/sbin/locale-gen - ==> - ==> Check /etc/locale.gen.pacnew for new supported locales ==> _EOF - # Check active locales, enable the ones that are in use - loc=("$LANG" - "`grep '^LOCALE=' etc/rc.conf | awk -F '=' '{ print $2 }'`") - for l in "${loc[@]}"; do - if [ ! -z "${l}" ]; then - line="`grep -i "^#${l}[[:space:]]" etc/locale.gen`" - if [ ! -z "${line}" ]; then - sed -i -e "s|${line}|${line/\#/}|" etc/locale.gen + # Check active locales, enable the ones that are in use + loc=("$LANG" + "`grep '^LOCALE=' etc/rc.conf | awk -F '=' '{ print $2 }'`") + for l in "${loc[@]}"; do + if [ ! -z "${l}" ]; then + line="`grep -i "^#${l}[[:space:]]" etc/locale.gen`" + if [ ! -z "${line}" ]; then + sed -i -e "s|${line}|${line/\#/}|" etc/locale.gen + fi fi - fi - done + done + fi usr/sbin/locale-gen @@ -115,8 +122,15 @@ if [ "`uname -m`" = "x86_64" ]; then fi fi + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null + done } -op=$1 -shift -$op $* +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/abs/core/gmp/PKGBUILD b/abs/core/gmp/PKGBUILD new file mode 100644 index 0000000..b747f73 --- /dev/null +++ b/abs/core/gmp/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 14742 2008-10-10 10:19:37Z allan $ +# Maintainer: Jan de Groot +# Maintainer: Thomas Baechler +pkgname=gmp +pkgver=4.2.4 +pkgrel=1.1 +pkgdesc="A free library for arbitrary precision arithmetic" +arch=(i686 x86_64) +depends=('gcc-libs' 'texinfo') +license=('LGPL3') +options=(!libtool) +install=gmp.install +source=(ftp://ftp.gnu.org/gnu/gmp/gmp-${pkgver}.tar.bz2) +url="http://gmplib.org/" +md5sums=('fc1e3b3a2a5038d4d74138d0b9cf8dbe') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + [ "${CARCH}" = "i686" ] && export ABI="32" + ./configure --prefix=/usr --enable-cxx --infodir=/usr/share/info || return 1 + make || return 1 + make check || return 1 + make DESTDIR="${pkgdir}" install || return 1 + cd "${pkgdir}/usr/share/info" + rm -f dir + gzip * || return 1 +} diff --git a/abs/core/gmp/gmp.install b/abs/core/gmp/gmp.install new file mode 100644 index 0000000..4f756bd --- /dev/null +++ b/abs/core/gmp/gmp.install @@ -0,0 +1,18 @@ +info_dir=/usr/share/info +info_files=(gmp.info gmp.info-1 gmp.info-2) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} diff --git a/abs/core/gnutls/PKGBUILD b/abs/core/gnutls/PKGBUILD index ec50f98..6948722 100644 --- a/abs/core/gnutls/PKGBUILD +++ b/abs/core/gnutls/PKGBUILD @@ -1,24 +1,26 @@ -# $Id: PKGBUILD 8715 2008-08-16 04:25:59Z eric $ +# $Id: PKGBUILD 35543 2009-04-13 20:57:08Z jgc $ # Maintainer: Jan de Groot # Notice: # When building a new major version, build, install, build again. # pkgname=gnutls -pkgver=2.4.1 +pkgver=2.6.5 pkgrel=1 pkgdesc="A library which provides a secure layer over a reliable transport layer" arch=(i686 x86_64) license=('GPL3' 'LGPL') url="http://www.gnu.org/software/gnutls/" +install=gnutls.install options=('libtool') -depends=('gcc-libs' 'libtasn1>=1.4' 'readline' 'zlib' 'libgcrypt>=1.4') -source=(ftp://ftp.gnutls.org/pub/gnutls/${pkgname}-${pkgver}.tar.bz2) -md5sums=('573db36cb3f8472b0293cfa1f52c607a') +depends=('gcc-libs>=4.3.3' 'libtasn1>=2.0' 'readline' 'zlib' 'libgcrypt>=1.4.4') +source=(ftp://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.bz2) +md5sums=('92b92c36b616aa8bd69a9a0fb2b8eb24') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --with-zlib --disable-guile || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/share/info/dir" } diff --git a/abs/core/gnutls/gnutls.install b/abs/core/gnutls/gnutls.install new file mode 100644 index 0000000..0cf66fa --- /dev/null +++ b/abs/core/gnutls/gnutls.install @@ -0,0 +1,18 @@ +infodir=/usr/share/info +filelist=(gnutls.info gnutls.info-1 gnutls.info-2 gnutls.info-3) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/abs/core/gperf/PKGBUILD b/abs/core/gperf/PKGBUILD new file mode 100644 index 0000000..0521eb9 --- /dev/null +++ b/abs/core/gperf/PKGBUILD @@ -0,0 +1,20 @@ +#$Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +#Maintainer: Jan de Groot + +pkgname=gperf +pkgver=3.0.3 +pkgrel=1 +pkgdesc="Perfect hash function generator." +arch=('x86_64' 'i686') +url="http://www.gnu.org/software/gperf/" +license=('GPL') +depends=('gcc-libs') +source=(ftp://ftp.gnu.org/gnu/gperf/${pkgname}-${pkgver}.tar.gz) +md5sums=('cc20e58975a38075440423c8fb85fd00') + +build() { + cd $startdir/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/core/grub/PKGBUILD b/abs/core/grub/PKGBUILD index 398d782..38c6a28 100644 --- a/abs/core/grub/PKGBUILD +++ b/abs/core/grub/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd +# $Id: PKGBUILD 22874 2008-12-29 18:25:08Z tpowa $ +# Maintainer: Ronald van Haren pkgname=grub pkgver=0.97 -pkgrel=21 +pkgrel=31 pkgdesc="A GNU multiboot boot loader" arch=('i686' 'x86_64') license=('GPL') @@ -20,27 +20,16 @@ source=(ftp://alpha.gnu.org/gnu/grub/grub-$pkgver.tar.gz more-raid.patch intelmac.patch grub-inode-size.patch - grub-0.97-gpt.patch) + ext4.patch) backup=('boot/grub/menu.lst') -md5sums=('cd3f3eb54446be6003156158d51f4884' - 'cce52ae9ee1f8686cd700b3c967e78f9' - '3182c4ae4963a16930bc772bba89dacf' - 'eb9d69c46af3a0667c1f651817d7f075' - 'ccd2d757e79e3a03dc19ede7391ed328' - '826fdbf446067f9861baf9f6a69a4583' - '49f6d4bcced0bc8bbcff273f3254bbfa' - 'f41f702014a064918d7afc6fc23baa6e' - '175dc6b9f4ab94e8056c3afb3e34460a' - 'ada26cbc681907823cc4ff2a55b97866' - '52cd09a6966f12961d11f7b3b7e76bd2') +install=grub.install build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver #set destination architecture here DESTARCH="i686" #DESTARCH="x86_64" - # optimizations break the build -- disable them # adding special devices to grub, patches are from fedora patch -Np1 -i ../special-devices.patch || return 1 @@ -49,9 +38,9 @@ build() { patch -Np1 -i ../intelmac.patch || return 1 # Add support for bigger inode size to e2fs_stage1_5 patch -Np1 -i ../grub-inode-size.patch || return 1 - # Add gpt support - # http://bugs.archlinux.org/task/9864 - patch -Np1 -i ../grub-0.97-gpt.patch || return 1 + # Add ext4 support + # http://www.mail-archive.com/bug-grub@gnu.org/msg11458.html + patch -Np1 -i ../ext4.patch || return 1 #arch64 fixes for static build if [ "$CARCH" = "x86_64" ]; then @@ -63,16 +52,21 @@ build() { patch -Np1 -i ../040_all_grub-0.96-nxstack.patch || return 1 # patch from frugalware to make it boot when more than 2GB ram installed patch -Np1 -i ../05-grub-0.97-initrdaddr.diff || return 1 - CFLAGS="-static" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin + CFLAGS="-static" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \ + --mandir=/usr/share/man --infodir=/usr/share/info else - CFLAGS= ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin + CFLAGS= ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \ + --mandir=/usr/share/man --infodir=/usr/share/info fi fi CFLAGS= make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=$pkgdir install || return 1 install -D -m644 ../menu.lst $startdir/pkg/boot/grub/menu.lst install -D -m755 ../install-grub $startdir/pkg/sbin/install-grub + + rm -f $pkgdir/usr/share/info/dir || return 1 + gzip /$pkgdir/usr/share/info/* if [ "$DESTARCH" = "x86_64" ]; then # fool makepkg into building a x86_64 package diff --git a/abs/core/grub/ext4.patch b/abs/core/grub/ext4.patch new file mode 100644 index 0000000..8a2f9bd --- /dev/null +++ b/abs/core/grub/ext4.patch @@ -0,0 +1,263 @@ +diff -ruNp grub-0.97/stage2/fsys_ext2fs.c grub-0.97-patch/stage2/fsys_ext2fs.c +--- grub-0.97/stage2/fsys_ext2fs.c 2004-08-08 20:19:18.000000000 +0200 ++++ grub-0.97-patch/stage2/fsys_ext2fs.c 2007-12-29 16:25:19.000000000 ++0100 +@@ -51,6 +51,9 @@ typedef unsigned int __u32; + #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) + #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) + ++/* Inode flags */ ++#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ ++ + /* include/linux/ext2_fs.h */ + struct ext2_super_block + { +@@ -191,6 +194,42 @@ struct ext2_dir_entry + #define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ + ~EXT2_DIR_ROUND) + ++/* linux/ext4_fs_extents.h */ ++/* ++ * This is the extent on-disk structure. ++ * It's used at the bottom of the tree. ++ */ ++struct ext4_extent { ++ __u32 ee_block; /* first logical block extent covers */ ++ __u16 ee_len; /* number of blocks covered by extent */ ++ __u16 ee_start_hi; /* high 16 bits of physical block */ ++ __u32 ee_start; /* low 32 bits of physical block */ ++}; ++ ++/* ++ * This is index on-disk structure. ++ * It's used at all the levels except the bottom. ++ */ ++struct ext4_extent_idx { ++ __u32 ei_block; /* index covers logical blocks from 'block' */ ++ __u32 ei_leaf; /* pointer to the physical block of the next * ++ * level. leaf or next index could be there */ ++ __u16 ei_leaf_hi; /* high 16 bits of physical block */ ++ __u16 ei_unused; ++}; ++ ++/* ++ * Each block (leaves and indexes), even inode-stored has header. ++ */ ++struct ext4_extent_header { ++ __u16 eh_magic; /* probably will support different formats */ ++ __u16 eh_entries; /* number of valid entries */ ++ __u16 eh_max; /* capacity of store in entries */ ++ __u16 eh_depth; /* has tree real underlying blocks? */ ++ __u32 eh_generation; /* generation of the tree */ ++}; ++ ++#define EXT4_EXT_MAGIC 0xf30a + + /* ext2/super.c */ + #define log2(n) ffz(~(n)) +@@ -279,6 +318,26 @@ ext2_rdfsb (int fsblock, int buffer) + EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) buffer); + } + ++/* Walk through extents index tree to find the good leaf */ ++static struct ext4_extent_header * ++ext4_recurse_extent_index(struct ext4_extent_header *extent_block, int logical_block) ++{ ++ int i; ++ struct ext4_extent_idx *index = (struct ext4_extent_idx *) (extent_block + 1); ++ if (extent_block->eh_magic != EXT4_EXT_MAGIC) ++ return NULL; ++ if (extent_block->eh_depth == 0) ++ return extent_block; ++ for (i = 0; i < extent_block->eh_entries; i++) ++ { ++ if (logical_block < index[i].ei_block) ++ break; ++ } ++ if (i == 0 || !ext2_rdfsb(index[i-1].ei_leaf, DATABLOCK1)) ++ return NULL; ++ return (ext4_recurse_extent_index((struct ext4_extent_header *) DATABLOCK1, logical_block)); ++} ++ + /* from + ext2/inode.c:ext2_bmap() + */ +--- grub-0.97/stage2/fsys_ext2fs.c~ 2008-12-28 20:19:00.000000000 +0100 ++++ grub-0.97/stage2/fsys_ext2fs.c 2008-12-28 20:19:00.000000000 +0100 +@@ -366,83 +366,106 @@ + } + printf ("logical block %d\n", logical_block); + #endif /* E2DEBUG */ +- +- /* if it is directly pointed to by the inode, return that physical addr */ +- if (logical_block < EXT2_NDIR_BLOCKS) +- { +-#ifdef E2DEBUG +- printf ("returning %d\n", (unsigned char *) (INODE->i_block[logical_block])); +- printf ("returning %d\n", INODE->i_block[logical_block]); +-#endif /* E2DEBUG */ +- return INODE->i_block[logical_block]; +- } +- /* else */ +- logical_block -= EXT2_NDIR_BLOCKS; +- /* try the indirect block */ +- if (logical_block < EXT2_ADDR_PER_BLOCK (SUPERBLOCK)) ++ /* standard ext2 inode */ ++ if (!(INODE->i_flags & EXT4_EXTENTS_FL)) + { +- if (mapblock1 != 1 +- && !ext2_rdfsb (INODE->i_block[EXT2_IND_BLOCK], DATABLOCK1)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- mapblock1 = 1; +- return ((__u32 *) DATABLOCK1)[logical_block]; +- } +- /* else */ +- logical_block -= EXT2_ADDR_PER_BLOCK (SUPERBLOCK); +- /* now try the double indirect block */ +- if (logical_block < (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2))) +- { +- int bnum; +- if (mapblock1 != 2 +- && !ext2_rdfsb (INODE->i_block[EXT2_DIND_BLOCK], DATABLOCK1)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- mapblock1 = 2; +- if ((bnum = (((__u32 *) DATABLOCK1) +- [logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)])) +- != mapblock2 +- && !ext2_rdfsb (bnum, DATABLOCK2)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- mapblock2 = bnum; ++ /* if it is directly pointed to by the inode, return that physical addr */ ++ if (logical_block < EXT2_NDIR_BLOCKS) ++ { ++#ifdef E2DEBUG ++ printf ("returning %d\n", (unsigned char *) (INODE->i_block[logical_block])); ++ printf ("returning %d\n", INODE->i_block[logical_block]); ++#endif /* E2DEBUG */ ++ return INODE->i_block[logical_block]; ++ } ++ /* else */ ++ logical_block -= EXT2_NDIR_BLOCKS; ++ /* try the indirect block */ ++ if (logical_block < EXT2_ADDR_PER_BLOCK (SUPERBLOCK)) ++ { ++ if (mapblock1 != 1 ++ && !ext2_rdfsb (INODE->i_block[EXT2_IND_BLOCK], DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock1 = 1; ++ return ((__u32 *) DATABLOCK1)[logical_block]; ++ } ++ /* else */ ++ logical_block -= EXT2_ADDR_PER_BLOCK (SUPERBLOCK); ++ /* now try the double indirect block */ ++ if (logical_block < (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2))) ++ { ++ int bnum; ++ if (mapblock1 != 2 ++ && !ext2_rdfsb (INODE->i_block[EXT2_DIND_BLOCK], DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock1 = 2; ++ if ((bnum = (((__u32 *) DATABLOCK1) ++ [logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)])) ++ != mapblock2 ++ && !ext2_rdfsb (bnum, DATABLOCK2)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock2 = bnum; ++ return ((__u32 *) DATABLOCK2) ++ [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; ++ } ++ /* else */ ++ mapblock2 = -1; ++ logical_block -= (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2)); ++ if (mapblock1 != 3 ++ && !ext2_rdfsb (INODE->i_block[EXT2_TIND_BLOCK], DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock1 = 3; ++ if (!ext2_rdfsb (((__u32 *) DATABLOCK1) ++ [logical_block >> (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) ++ * 2)], ++ DATABLOCK2)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ if (!ext2_rdfsb (((__u32 *) DATABLOCK2) ++ [(logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)) ++ & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)], ++ DATABLOCK2)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } + return ((__u32 *) DATABLOCK2) +- [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; +- } +- /* else */ +- mapblock2 = -1; +- logical_block -= (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2)); +- if (mapblock1 != 3 +- && !ext2_rdfsb (INODE->i_block[EXT2_TIND_BLOCK], DATABLOCK1)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; ++ [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; + } +- mapblock1 = 3; +- if (!ext2_rdfsb (((__u32 *) DATABLOCK1) +- [logical_block >> (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) +- * 2)], +- DATABLOCK2)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- if (!ext2_rdfsb (((__u32 *) DATABLOCK2) +- [(logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)) +- & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)], +- DATABLOCK2)) ++ /* inode is in extents format */ ++ else + { ++ int i; ++ struct ext4_extent_header *extent_hdr = ext4_recurse_extent_index((struct ext4_extent_header *) INODE->i_block, logical_block); ++ struct ext4_extent *extent = (struct ext4_extent *) (extent_hdr + 1); ++ if ( extent_hdr == NULL || extent_hdr->eh_magic != EXT4_EXT_MAGIC) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ for (i = 0; ieh_entries; i++) ++ { ++ if (extent[i].ee_block <= logical_block && logical_block < extent[i].ee_block + extent[i].ee_len && !(extent[i].ee_len>>15)) ++ return (logical_block - extent[i].ee_block + extent[i].ee_start); ++ } ++ /* We should not arrive here */ + errnum = ERR_FSYS_CORRUPT; + return -1; + } +- return ((__u32 *) DATABLOCK2) +- [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; + } + + /* preconditions: all preconds of ext2fs_block_map */ diff --git a/abs/core/grub/grub.install b/abs/core/grub/grub.install new file mode 100644 index 0000000..bf52382 --- /dev/null +++ b/abs/core/grub/grub.install @@ -0,0 +1,22 @@ +info_dir=/usr/share/info +info_files=(grub.info multiboot.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + + + + diff --git a/abs/core/grub/install-grub b/abs/core/grub/install-grub old mode 100755 new mode 100644 index 3eb7ce5..0015a31 --- a/abs/core/grub/install-grub +++ b/abs/core/grub/install-grub @@ -1,187 +1,543 @@ -#!/bin/bash +#! /bin/sh +# Install GRUB on your drive. +# Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. # -# This is a little helper script that tries to convert linux-style device -# names to grub-style. It's not very smart, so it -# probably won't work for more complicated setups. +# This file 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. # -# If it doesn't work for you, try installing grub manually: -# -# # mkdir -p /boot/grub -# # cp /usr/lib/grub/i386-pc/* /boot/grub/ -# -# Then start up the 'grub' shell and run something like the following: -# -# grub> root(hd0,0) -# grub> setup(hd0) -# -# The "root" line should point to the partition your kernel is located on, -# /boot if you have a separate boot partition, otherwise your root (/). -# -# The "setup" line tells grub which disc/partition to install the -# bootloader to. In the example above, it will install to the MBR of the -# primary master hard drive. +# 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. + +# Initialize some variables. +prefix=/ +exec_prefix=${prefix} +sbindir=${exec_prefix}/sbin +libdir=${exec_prefix}/lib +PACKAGE=grub +VERSION=0.95 +host_cpu=i386 +host_os=linux-gnu +host_vendor=pc +pkglibdir=${libdir}/${PACKAGE}/${host_cpu}-${host_vendor} + +grub_shell=${sbindir}/grub +log_file=/tmp/grub-install.log.$$ +img_file=/tmp/grub-install.img.$$ +rootdir= +grub_prefix=/boot/grub + +install_device= +no_floppy= +force_lba= +recheck=no +sync_sleep=20 +debug=no + +# look for secure tempfile creation wrappers on this platform +if test -x /bin/tempfile; then + mklog="/bin/tempfile --prefix=grub" + mkimg="/bin/tempfile --prefix=grub" +elif test -x /bin/mktemp; then + mklog="/bin/mktemp /tmp/grub-install.log.XXXXXX" + mkimg="/bin/mktemp /tmp/grub-install.img.XXXXXX" +else + mklog="" + mkimg="" +fi + +# Usage: usage +# Print the usage. +usage () { + cat <. +EOF +} + +# Usage: getraid_mdadm mddevice +# Routine to find a physical device from an md device +# If found, the first grub BIOS device (from device.map) is returned +# If no BIOS drives match the RAID devices, the first device returned +# from mdadm -D is returned +getraid_mdadm() { + device=$1 + mdadm=$(mdadm -D "$device") || { + echo "$PROG: mdadm -D $device failed" >&2 + exit 1 + } + eval "$( + echo "$mdadm" | awk ' + $1 == "Number" && $2 == "Major" { start = 1; next } + $1 == "UUID" { print "uuid=" $3; start = 0; next } + !start { next } + $2 == 0 && $3 == 0 { next } + { devices = devices "\n" $NF } + END { print "devices='\''" devices "'\''" } + ' + )" + + # Convert RAID devices list into a list of disks + tmp_disks=`echo "$devices" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ + -e 's%\(d[0-9]*\)p[0-9]*$%\1%' \ + -e 's%\(fd[0-9]*\)$%\1%' \ + -e 's%/part[0-9]*$%/disc%' \ + -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \ + -e '/^$/d' | + sed -n '1h;2,$H;${g;s/\n/|/g;p}'` + + # Find first BIOS disk that's a member of the RAID array + # Default to first RAID member if no tmp_disks are BIOS devices + set -- `egrep $tmp_disks $device_map | \ + sort | \ + sed -n 1p ` + device=${2:-${tmp_disks%%|*}} + + # Return first partition on BIOS disk that's part of the RAID + echo "$devices" | \ + sed -n "\:${device}:p" | \ + sed -n 1p +} + +# Usage: xfs_hack +# Routine to flush xfs filesystem log (sync doesn't do this) +# sleep is needed to give time for the log to be flushed +xfs_hack () { + sync + if which xfs_freeze >/dev/null ; then + echo "Trying to sync filesystem, do not interrupt until complete." + xfs_freeze -f ${grubdir} 2>/dev/null + sleep $sync_sleep + xfs_freeze -u ${grubdir} 2>/dev/null + echo "Trying to sync filesystem is complete." + fi +} -usage() { - echo "usage: install-grub [boot_device]" - echo - echo "where is the device where Grub will be installed" - echo "and [boot_device] is the partition that contains the /boot" - echo "directory (auto-detected if omitted)" - echo - echo "examples: install-grub /dev/hda" - echo " install-grub /dev/hda /dev/hda1" - echo - exit 0 +# Usage: convert os_device +# Convert an OS device to the corresponding GRUB drive. +# This part is OS-specific. +convert () { + # First, check if the device file exists. + if test -e "$1"; then + : + else + echo "$1: Not found or not a block device." 1>&2 + exit 1 + fi + + # Break the device name into the disk part and the partition part. + case "$host_os" in + linux*) + # Find an actual physical device if we're passed a RAID device + case $1 in + /dev/md*) set -- `getraid_mdadm $1` + esac + tmp_disk=`echo "$1" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \ + -e 's%\(d[0-9]*\)p[0-9]*$%\1%' \ + -e 's%\(fd[0-9]*\)$%\1%' \ + -e 's%/part[0-9]*$%/disc%' \ + -e 's%\(c[0-7]d[0-9]*\).*$%\1%'` + tmp_part=`echo "$1" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \ + -e 's%.*d[0-9]*p*%%' \ + -e 's%.*/fd[0-9]*$%%' \ + -e 's%.*/floppy/[0-9]*$%%' \ + -e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \ + -e 's%.*c[0-7]d[0-9]*p*%%'` + ;; + gnu*) + tmp_disk=`echo "$1" | sed 's%\([sh]d[0-9]*\).*%\1%'` + tmp_part=`echo "$1" | sed "s%$tmp_disk%%"` ;; + freebsd*) + tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([saw]d[0-9]*\).*$%r\1%' \ + | sed 's%r\{0,1\}\(da[0-9]*\).*$%r\1%'` + tmp_part=`echo "$1" \ + | sed "s%.*/r\{0,1\}[saw]d[0-9]\(s[0-9]*[a-h]\)%\1%" \ + | sed "s%.*/r\{0,1\}da[0-9]\(s[0-9]*[a-h]\)%\1%"` + ;; + netbsd*) + tmp_disk=`echo "$1" | sed 's%r\{0,1\}\([sw]d[0-9]*\).*$%r\1d%' \ + | sed 's%r\{0,1\}\(fd[0-9]*\).*$%r\1a%'` + tmp_part=`echo "$1" \ + | sed "s%.*/r\{0,1\}[sw]d[0-9]\([abe-p]\)%\1%"` + ;; + *) + echo "grub-install does not support your OS yet." 1>&2 + exit 1 ;; + esac + + # Get the drive name. + tmp_drive=`grep -v '^#' $device_map | grep "$tmp_disk *$" \ + | sed 's%.*\(([hf]d[0-9][a-g0-9,]*)\).*%\1%'` + + # If not found, print an error message and exit. + if test "x$tmp_drive" = x; then + echo "$1 does not have any corresponding BIOS drive." 1>&2 + exit 1 + fi + + if test "x$tmp_part" != x; then + # If a partition is specified, we need to translate it into the + # GRUB's syntax. + case "$host_os" in + linux*) + echo "$tmp_drive" | sed "s%)$%,`expr $tmp_part - 1`)%" ;; + gnu*) + if echo $tmp_part | grep "^s" >/dev/null; then + tmp_pc_slice=`echo $tmp_part \ + | sed "s%s\([0-9]*\)[a-g]*$%\1%"` + tmp_drive=`echo "$tmp_drive" \ + | sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"` + fi + if echo $tmp_part | grep "[a-g]$" >/dev/null; then + tmp_bsd_partition=`echo "$tmp_part" \ + | sed "s%[^a-g]*\([a-g]\)$%\1%"` + tmp_drive=`echo "$tmp_drive" \ + | sed "s%)%,$tmp_bsd_partition)%"` + fi + echo "$tmp_drive" ;; + freebsd*) + if echo $tmp_part | grep "^s" >/dev/null; then + tmp_pc_slice=`echo $tmp_part \ + | sed "s%s\([0-9]*\)[a-h]*$%\1%"` + tmp_drive=`echo "$tmp_drive" \ + | sed "s%)%,\`expr "$tmp_pc_slice" - 1\`)%"` + fi + if echo $tmp_part | grep "[a-h]$" >/dev/null; then + tmp_bsd_partition=`echo "$tmp_part" \ + | sed "s%s\{0,1\}[0-9]*\([a-h]\)$%\1%"` + tmp_drive=`echo "$tmp_drive" \ + | sed "s%)%,$tmp_bsd_partition)%"` + fi + echo "$tmp_drive" ;; + netbsd*) + if echo $tmp_part | grep "^[abe-p]$" >/dev/null; then + tmp_bsd_partition=`echo "$tmp_part" \ + | sed "s%\([a-p]\)$%\1%"` + tmp_drive=`echo "$tmp_drive" \ + | sed "s%)%,$tmp_bsd_partition)%"` + fi + echo "$tmp_drive" ;; + esac + else + # If no partition is specified, just print the drive name. + echo "$tmp_drive" + fi } -## new install-grub, code was taken from setup script -ROOTDEV=$1 -PART_ROOT=$2 -VMLINUZ=vmlinuz26 +# Usage: resolve_symlink file +# Find the real file/device that file points at +resolve_symlink () { + tmp_fname=$1 + # Resolve symlinks + while test -L $tmp_fname; do + tmp_new_fname=`ls -al $tmp_fname | sed -n 's%.*-> \(.*\)%\1%p'` + if test -z "$tmp_new_fname"; then + echo "Unrecognized ls output" 2>&1 + exit 1 + fi + + # Convert relative symlinks + case $tmp_new_fname in + /*) tmp_fname="$tmp_new_fname" + ;; + *) tmp_fname="`echo $tmp_fname | sed 's%/[^/]*$%%'`/$tmp_new_fname" + ;; + esac + done + echo "$tmp_fname" +} + +# Usage: find_device file +# Find block device on which the file resides. +find_device () { + # For now, this uses the program `df' to get the device name, but is + # this really portable? + tmp_fname=`df $1/ | sed -n 's%.*\(/dev/[^ ]*\).*%\1%p'` + + if test -z "$tmp_fname"; then + echo "Could not find device for $1" 2>&1 + exit 1 + fi + + tmp_fname=`resolve_symlink $tmp_fname` -if [ "$ROOTDEV" = "" ]; then + echo "$tmp_fname" +} + +# Check the arguments. +for option in "$@"; do + case "$option" in + -h | --help) + usage + exit 0 ;; + -v | --version) + echo "grub-install (GNU GRUB ${VERSION})" + exit 0 ;; + --root-directory=*) + rootdir=`echo "$option" | sed 's/--root-directory=//'` ;; + --grub-shell=*) + grub_shell=`echo "$option" | sed 's/--grub-shell=//'` ;; + --no-floppy) + no_floppy="--no-floppy" ;; + --force-lba) + force_lba="--force-lba" ;; + --recheck) + recheck=yes ;; + --sync-sleep=*) + sync_sleep=`echo "$option" | sed 's/--sync-sleep=//'` ;; + # This is an undocumented feature... + --debug) + debug=yes ;; + -*) + echo "Unrecognized option \`$option'" 1>&2 usage + exit 1 + ;; + *) + if test "x$install_device" != x; then + echo "More than one install_devices?" 1>&2 + usage + exit 1 + fi + install_device="${option}" ;; + esac +done + +if test "x$install_device" = x; then + echo "install_device not specified." 1>&2 + usage + exit 1 fi -if [ "$PART_ROOT" = "" ]; then - PART_ROOT=$(mount | grep "on /boot type" | cut -d' ' -f 1) + +# If the debugging feature is enabled, print commands. +if test $debug = yes; then + set -x fi -if [ "$PART_ROOT" = "" ]; then - PART_ROOT=$(mount | grep "on / type" | cut -d' ' -f 1) + +# Initialize these directories here, since ROOTDIR was initialized. +case "$host_os" in +netbsd*) + # Because /boot is used for the boot block in NetBSD, use /grub + # instead of /boot/grub. + grub_prefix=/grub + bootdir=${rootdir} + ;; +*) + # Use /boot/grub by default. + bootdir=${rootdir}/boot + ;; +esac + +grubdir=${bootdir}/grub +device_map=${grubdir}/device.map + +# Check if GRUB is installed. +# This is necessary, because the user can specify "grub --read-only". +set $grub_shell dummy +if test -f "$1"; then + : +else + echo "$1: Not found." 1>&2 + exit 1 fi -if [ "$PART_ROOT" = "" ]; then - echo "error: could not determine BOOT_DEVICE, please specify manually" >&2 - exit 1 + +if test -f "$pkglibdir/stage1"; then + : +else + echo "${pkglibdir}/stage1: Not found." 1>&2 + exit 1 fi +if test -f "$pkglibdir/stage2"; then + : +else + echo "${pkglibdir}/stage2: Not found." 1>&2 + exit 1 +fi + +# Don't check for *stage1_5, because it is not fatal even if any +# Stage 1.5 does not exist. -get_grub_map() { - [ -e /tmp/dev.map ] && rm /tmp/dev.map - /sbin/grub --no-floppy --device-map /tmp/dev.map >/tmp/grub.log 2>&1 <$log_file quit EOF -} + if grep "Error [0-9]*: " $log_file >/dev/null; then + cat $log_file 1>&2 + exit 1 + fi -mapdev() { - partition_flag=0 - device_found=0 - devs=$(cat /tmp/dev.map | grep -v fd | sed 's/ *\t/ /' | sed ':a;$!N;$!ba;s/\n/ /g') - linuxdevice=$(echo $1 | cut -b1-8) - if [ "$(echo $1 | egrep '[0-9]$')" ]; then - # /dev/hdXY - pnum=$(echo $1 | cut -b9-) - pnum=$(($pnum-1)) - partition_flag=1 - fi - for dev in $devs - do - if [ "(" = $(echo $dev | cut -b1) ]; then - grubdevice="$dev" - else - if [ "$dev" = "$linuxdevice" ]; then - device_found=1 - break - fi - fi - done - if [ "$device_found" = "1" ]; then - if [ "$partition_flag" = "0" ]; then - echo "$grubdevice" - else - grubdevice_stringlen=${#grubdevice} - let grubdevice_stringlen-- - grubdevice=$(echo $grubdevice | cut -b1-$grubdevice_stringlen) - echo "$grubdevice,$pnum)" - fi - else - echo " DEVICE NOT FOUND" - fi -} + rm -f $log_file +fi -dogrub() { - get_grub_map - if [ ! -f /boot/grub/menu.lst ]; then - echo "Error: Couldn't find /boot/grub/menu.lst. Is GRUB installed?" - exit 1 - fi - # try to auto-configure GRUB... - if [ "$PART_ROOT" != "" -a "$S_GRUB" != "1" ]; then - grubdev=$(mapdev $PART_ROOT) - # look for a separately-mounted /boot partition - bootdev=$(mount | grep /boot | cut -d' ' -f 1) - if [ "$grubdev" != "" -o "$bootdev" != "" ]; then - cp /boot/grub/menu.lst /tmp/.menu.lst - # remove the default entries by truncating the file at our little tag (#-*) - head -n $(cat /tmp/.menu.lst | grep -n '#-\*' | cut -d: -f 1) /tmp/.menu.lst >/boot/grub/menu.lst - rm -f /tmp/.menu.lst - echo "" >>/boot/grub/menu.lst - echo "# (0) Arch Linux" >>/boot/grub/menu.lst - echo "title Arch Linux" >>/boot/grub/menu.lst - subdir= - if [ "$bootdev" != "" ]; then - grubdev=$(mapdev $bootdev) - else - subdir="/boot" - fi - echo "root $grubdev" >>/boot/grub/menu.lst - echo "kernel $subdir/$VMLINUZ root=$PART_ROOT ro" >>/boot/grub/menu.lst - if [ "$VMLINUZ" = "vmlinuz26" ]; then - echo "initrd $subdir/kernel26.img" >>/boot/grub/menu.lst - fi - echo "" >>/boot/grub/menu.lst - # adding fallback/full image - echo "# (1) Arch Linux" >>/boot/grub/menu.lst - echo "title Arch Linux Fallback" >>/boot/grub/menu.lst - echo "root $grubdev" >>/boot/grub/menu.lst - echo "kernel $subdir/$VMLINUZ root=$PART_ROOT ro" >>/boot/grub/menu.lst - if [ "$VMLINUZ" = "vmlinuz26" ]; then - echo "initrd $subdir/kernel26-fallback.img" >>/boot/grub/menu.lst - fi - echo "" >>/boot/grub/menu.lst - fi - fi +# Make sure that there is no duplicated entry. +tmp=`sed -n '/^([fh]d[0-9]*)/s/\(^(.*)\).*/\1/p' $device_map \ + | sort | uniq -d | sed -n 1p` +if test -n "$tmp"; then + echo "The drive $tmp is defined multiple times in the device map $device_map" 1>&2 + exit 1 +fi - echo "Installing the GRUB bootloader..." - cp -a /usr/lib/grub/i386-pc/* /boot/grub/ - sync - # freeze xfs filesystems to enable grub installation on xfs filesystems - if [ -x /usr/sbin/xfs_freeze ]; then - /usr/sbin/xfs_freeze -f /boot > /dev/null 2>&1 - /usr/sbin/xfs_freeze -f / > /dev/null 2>&1 - fi - # look for a separately-mounted /boot partition - bootpart=$(mount | grep /boot | cut -d' ' -f 1) - if [ "$bootpart" = "" ]; then - bootpart=$PART_ROOT - fi - bootpart=$(mapdev $bootpart) - bootdev=$(mapdev $ROOTDEV) - if [ "$bootpart" = "" ]; then - echo "Error: Missing/Invalid root device: $bootpart" - exit 1 - fi - /sbin/grub --no-floppy --batch >/tmp/grub.log 2>&1 <&2 + usage + exit 1 ;; +esac + +# Get the root drive. +root_device=`find_device ${rootdir}` +bootdir_device=`find_device ${bootdir}` + +# Check if the boot directory is in the same device as the root directory. +if test "x$root_device" != "x$bootdir_device"; then + # Perhaps the user has a separate boot partition. + root_device=$bootdir_device + grub_prefix="/grub" +fi + +# Convert the root device to a GRUB drive. +root_drive=`convert "$root_device"` +if test "x$root_drive" = x; then + exit 1 +fi + +# Check if the root directory exists in the same device as the grub +# directory. +grubdir_device=`find_device ${grubdir}` + +if test "x$grubdir_device" != "x$root_device"; then + # For now, cannot deal with this situation. + cat <&2 +You must set the root directory by the option --root-directory, because +$grubdir does not exist in the root device $root_device. +EOF + exit 1 +fi + +# Copy the GRUB images to the GRUB directory. +for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do + rm -f $file || exit 1 +done +for file in \ + ${pkglibdir}/stage1 ${pkglibdir}/stage2 ${pkglibdir}/*stage1_5; do + cp -f $file ${grubdir} || exit 1 +done +xfs_hack + +# Make sure that GRUB reads the same images as the host OS. +test -n "$mkimg" && img_file=`$mkimg` +test -n "$mklog" && log_file=`$mklog` + +for file in ${grubdir}/stage1 ${grubdir}/stage2 ${grubdir}/*stage1_5; do + count=5 + tmp=`echo $file | sed "s|^${grubdir}|${grub_prefix}|"` + while test $count -gt 0; do + $grub_shell --batch $no_floppy --device-map=$device_map <$log_file +dump ${root_drive}${tmp} ${img_file} quit EOF -cat /tmp/grub.log - # unfreeze xfs filesystems - if [ -x /usr/sbin/xfs_freeze ]; then - /usr/sbin/xfs_freeze -u /boot > /dev/null 2>&1 - /usr/sbin/xfs_freeze -u / > /dev/null 2>&1 + if grep "Error [0-9]*: " $log_file >/dev/null; then + : + elif cmp $file $img_file >/dev/null; then + break fi + sleep 1 + count=`expr $count - 1` + done + if test $count -eq 0; then + echo "The file $file not read correctly." 1>&2 + exit 1 + fi +done - if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then - echo "Error installing GRUB. (see /tmp/grub.log for output)" - exit 1 - fi - echo "GRUB was successfully installed." +rm -f $img_file +rm -f $log_file -rm -f /tmp/grub.log +# Create a safe temporary file. +test -n "$mklog" && log_file=`$mklog` -exit 0 -} +# Now perform the installation. +xfs_hack +$grub_shell --batch $no_floppy --device-map=$device_map <$log_file +root $root_drive +setup $force_lba --stage2=$grubdir/stage2 --prefix=$grub_prefix $install_drive +quit +EOF -dogrub \ No newline at end of file +if grep "Error [0-9]*: " $log_file >/dev/null || test $debug = yes; then + cat $log_file 1>&2 + exit 1 +fi + +rm -f $log_file + +# Prompt the user to check if the device map is correct. +echo "Installation finished. No error reported." +echo "This is the contents of the device map $device_map." +echo "Check if this is correct or not. If any of the lines is incorrect," +echo "fix it and re-run the script \`grub-install'." +echo + +cat $device_map + +# Bye. +exit 0 diff --git a/abs/core/grub/install-grub.orig b/abs/core/grub/install-grub.orig new file mode 100755 index 0000000..3eb7ce5 --- /dev/null +++ b/abs/core/grub/install-grub.orig @@ -0,0 +1,187 @@ +#!/bin/bash + +# +# This is a little helper script that tries to convert linux-style device +# names to grub-style. It's not very smart, so it +# probably won't work for more complicated setups. +# +# If it doesn't work for you, try installing grub manually: +# +# # mkdir -p /boot/grub +# # cp /usr/lib/grub/i386-pc/* /boot/grub/ +# +# Then start up the 'grub' shell and run something like the following: +# +# grub> root(hd0,0) +# grub> setup(hd0) +# +# The "root" line should point to the partition your kernel is located on, +# /boot if you have a separate boot partition, otherwise your root (/). +# +# The "setup" line tells grub which disc/partition to install the +# bootloader to. In the example above, it will install to the MBR of the +# primary master hard drive. +# + +usage() { + echo "usage: install-grub [boot_device]" + echo + echo "where is the device where Grub will be installed" + echo "and [boot_device] is the partition that contains the /boot" + echo "directory (auto-detected if omitted)" + echo + echo "examples: install-grub /dev/hda" + echo " install-grub /dev/hda /dev/hda1" + echo + exit 0 +} + +## new install-grub, code was taken from setup script +ROOTDEV=$1 +PART_ROOT=$2 +VMLINUZ=vmlinuz26 + +if [ "$ROOTDEV" = "" ]; then + usage +fi +if [ "$PART_ROOT" = "" ]; then + PART_ROOT=$(mount | grep "on /boot type" | cut -d' ' -f 1) +fi +if [ "$PART_ROOT" = "" ]; then + PART_ROOT=$(mount | grep "on / type" | cut -d' ' -f 1) +fi +if [ "$PART_ROOT" = "" ]; then + echo "error: could not determine BOOT_DEVICE, please specify manually" >&2 + exit 1 +fi + + +get_grub_map() { + [ -e /tmp/dev.map ] && rm /tmp/dev.map + /sbin/grub --no-floppy --device-map /tmp/dev.map >/tmp/grub.log 2>&1 </boot/grub/menu.lst + rm -f /tmp/.menu.lst + echo "" >>/boot/grub/menu.lst + echo "# (0) Arch Linux" >>/boot/grub/menu.lst + echo "title Arch Linux" >>/boot/grub/menu.lst + subdir= + if [ "$bootdev" != "" ]; then + grubdev=$(mapdev $bootdev) + else + subdir="/boot" + fi + echo "root $grubdev" >>/boot/grub/menu.lst + echo "kernel $subdir/$VMLINUZ root=$PART_ROOT ro" >>/boot/grub/menu.lst + if [ "$VMLINUZ" = "vmlinuz26" ]; then + echo "initrd $subdir/kernel26.img" >>/boot/grub/menu.lst + fi + echo "" >>/boot/grub/menu.lst + # adding fallback/full image + echo "# (1) Arch Linux" >>/boot/grub/menu.lst + echo "title Arch Linux Fallback" >>/boot/grub/menu.lst + echo "root $grubdev" >>/boot/grub/menu.lst + echo "kernel $subdir/$VMLINUZ root=$PART_ROOT ro" >>/boot/grub/menu.lst + if [ "$VMLINUZ" = "vmlinuz26" ]; then + echo "initrd $subdir/kernel26-fallback.img" >>/boot/grub/menu.lst + fi + echo "" >>/boot/grub/menu.lst + fi + fi + + echo "Installing the GRUB bootloader..." + cp -a /usr/lib/grub/i386-pc/* /boot/grub/ + sync + # freeze xfs filesystems to enable grub installation on xfs filesystems + if [ -x /usr/sbin/xfs_freeze ]; then + /usr/sbin/xfs_freeze -f /boot > /dev/null 2>&1 + /usr/sbin/xfs_freeze -f / > /dev/null 2>&1 + fi + # look for a separately-mounted /boot partition + bootpart=$(mount | grep /boot | cut -d' ' -f 1) + if [ "$bootpart" = "" ]; then + bootpart=$PART_ROOT + fi + bootpart=$(mapdev $bootpart) + bootdev=$(mapdev $ROOTDEV) + if [ "$bootpart" = "" ]; then + echo "Error: Missing/Invalid root device: $bootpart" + exit 1 + fi + /sbin/grub --no-floppy --batch >/tmp/grub.log 2>&1 < /dev/null 2>&1 + /usr/sbin/xfs_freeze -u / > /dev/null 2>&1 + fi + + if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then + echo "Error installing GRUB. (see /tmp/grub.log for output)" + exit 1 + fi + echo "GRUB was successfully installed." + +rm -f /tmp/grub.log + +exit 0 +} + +dogrub \ No newline at end of file diff --git a/abs/core/grub/menu.lst b/abs/core/grub/menu.lst index 57fcf0d..1c19f8a 100644 --- a/abs/core/grub/menu.lst +++ b/abs/core/grub/menu.lst @@ -6,9 +6,9 @@ # Linux Grub # ------------------------- # /dev/fd0 (fd0) -# /dev/hda (hd0) -# /dev/hdb2 (hd1,1) -# /dev/hda3 (hd0,2) +# /dev/sda (hd0) +# /dev/sdb2 (hd1,1) +# /dev/sda3 (hd0,2) # # FRAMEBUFFER RESOLUTION SETTINGS @@ -20,6 +20,8 @@ # 64K | 0x311=785 0x314=788 0x317=791 0x31A=794 # 16M | 0x312=786 0x315=789 0x318=792 0x31B=795 # +-------------------------------------------------+ +# for more details and different resolutions see +# http://wiki.archlinux.org/index.php/GRUB#Framebuffer_Resolution # general configuration: timeout 5 @@ -36,7 +38,7 @@ color light-blue/black light-cyan/blue # (0) Arch Linux title Arch Linux [/boot/vmlinuz26] root (hd0,0) -kernel /vmlinuz26 root=/dev/hda3 ro +kernel /vmlinuz26 root=/dev/sda3 ro initrd /kernel26.img # (1) Windows diff --git a/abs/core/gsfonts/PKGBUILD b/abs/core/gsfonts/PKGBUILD index 5294731..01bb023 100644 --- a/abs/core/gsfonts/PKGBUILD +++ b/abs/core/gsfonts/PKGBUILD @@ -8,7 +8,7 @@ arch=(i686 x86_64) depends=('xorg-font-utils' 'fontconfig') install=xfonts.install url="http://sourceforge.net/projects/ghostscript" -source=(http://switch.dl.sourceforge.net/ghostscript/ghostscript-fonts-std-8.11.tar.gz) +source=(http://superb-east.dl.sourceforge.net/sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz) md5sums=('6865682b095f8c4500c54b285ff05ef6') build() { diff --git a/abs/core/gtk/PKGBUILD b/abs/core/gtk/PKGBUILD new file mode 100644 index 0000000..48c4972 --- /dev/null +++ b/abs/core/gtk/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Eric Belanger +# Contributor: Judd Vinet + +pkgname=gtk +pkgver=1.2.10 +pkgrel=11 +pkgdesc="The GTK+ toolkit" +arch=('i686' 'x86_64') +url="http://www.gtk.org/" +license=('LGPL') +depends=('libxi' 'glib') +options=('!libtool' '!emptydirs') +source=(ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-$pkgver.tar.gz \ + aclocal-fixes.patch) +md5sums=('4d5cb2fc7fb7830e4af9747a36bfce20' 'c59d4906602d99a7468f7334b6fc3b4e') +sha1sums=('a5adcb909257da01ae4d4761e1d41081d06e4d7c' 'b034e33efb85d27f3f3fb082c404e3b6ea79259f') + +build() { + cd $startdir/src/gtk+-$pkgver + if [ "$CARCH" == "x86_64" ]; then + rm config.guess config.sub + ln -s /usr/share/libtool/config.guess config.guess + ln -s /usr/share/libtool/config.sub config.sub + fi + patch -Np0 -i ${startdir}/src/aclocal-fixes.patch || return 1 + ./configure --prefix=/usr --sysconfdir=/etc --with-xinput=xfree + make || return 1 + make DESTDIR=$startdir/pkg install + cd $startdir/pkg/usr/include + ln -s gtk-1.2/gtk gtk +} diff --git a/abs/core/gtk/__changelog b/abs/core/gtk/__changelog new file mode 100644 index 0000000..5d6d4d6 --- /dev/null +++ b/abs/core/gtk/__changelog @@ -0,0 +1,3 @@ +added !emptydir to options +!docs + diff --git a/abs/core/gtk/aclocal-fixes.patch b/abs/core/gtk/aclocal-fixes.patch new file mode 100644 index 0000000..dd2ffbd --- /dev/null +++ b/abs/core/gtk/aclocal-fixes.patch @@ -0,0 +1,11 @@ +--- gtk.m4.orig 2006-03-05 13:18:09.000000000 +0000 ++++ gtk.m4 2006-03-05 13:18:20.000000000 +0000 +@@ -4,7 +4,7 @@ + dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) + dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS + dnl +-AC_DEFUN(AM_PATH_GTK, ++AC_DEFUN([AM_PATH_GTK], + [dnl + dnl Get the cflags and libraries from the gtk-config script + dnl diff --git a/abs/core/gtk2/PKGBUILD b/abs/core/gtk2/PKGBUILD index 7cab655..6cdc6e1 100644 --- a/abs/core/gtk2/PKGBUILD +++ b/abs/core/gtk2/PKGBUILD @@ -1,35 +1,37 @@ -# $Id: PKGBUILD 7635 2008-08-03 15:54:30Z jgc $ +# $Id: PKGBUILD 35332 2009-04-12 12:46:16Z jgc $ # Maintainer: Jan de Groot pkgname=gtk2 -pkgver=2.12.11 -pkgrel=3 +pkgver=2.16.1 +pkgrel=6 pkgdesc="The GTK+ Toolkit (v2)" arch=(i686 x86_64) url="http://www.gtk.org/" install=gtk2.install -depends=('atk>=1.22.0' 'pango>=1.20.5' 'libxcursor' 'libxinerama' 'libxrandr>=1.2.1' 'libxi' 'libcups>=1.3.8-2' 'libxcomposite' 'libxdamage' 'heimdal>=1.2' 'gnutls>=2.4.1') +depends=('atk>=1.26.0' 'pango>=1.24.0-2' 'libxcursor' 'libxinerama' 'libxrandr>=1.3.0' 'libxi>=1.2.1' 'libcups>=1.3.9' 'libxcomposite' 'libxdamage' 'heimdal>=1.2.1' 'gnutls>=2.6.4' 'shared-mime-info') makedepends=('pkgconfig') -replaces=('gtkprint-cups') -conflicts=('gtkprint-cups') -options=('!libtool') +replaces=('gtkprint-cups' 'gail') +conflicts=('gtkprint-cups' 'gail') +provides=('gail=1.22.3') +options=('!libtool' '!docs') backup=(etc/gtk-2.0/gtkrc) license=('LGPL') -source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/gtk+-${pkgver}.tar.bz2 +source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.16/gtk+-${pkgver}.tar.bz2 gtkclipboard-check.patch) -md5sums=('f7aab88e856a813386f797aade5867ad' +md5sums=('74e35ff3e6e02c960fe2117a4b6b102f' '4025d3c15d6c6f73a032f403ffd4ff1c') build() { - cd ${startdir}/src/gtk+-${pkgver} + cd "${srcdir}/gtk+-${pkgver}" # Workaround patch for flash - patch -Np1 -i ${startdir}/src/gtkclipboard-check.patch || return 1 + patch -Np1 -i "${srcdir}/gtkclipboard-check.patch" || return 1 ./configure --prefix=/usr --sysconfdir=/etc \ - --localstatedir=/var --with-xinput=xfree \ + --localstatedir=/var --with-xinput=yes \ + --without-libjasper \ --with-included-loaders=png || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - echo 'gtk-fallback-icon-theme = "gnome"' > ${startdir}/pkg/etc/gtk-2.0/gtkrc || return 1 + echo 'gtk-fallback-icon-theme = "gnome"' > "${pkgdir}/etc/gtk-2.0/gtkrc" || return 1 } diff --git a/abs/core/gtk2/gtk2-emit-size-change.patch b/abs/core/gtk2/gtk2-emit-size-change.patch new file mode 100644 index 0000000..34053a8 --- /dev/null +++ b/abs/core/gtk2/gtk2-emit-size-change.patch @@ -0,0 +1,26 @@ +diff -Naur gtk+-2.14.5-old/gdk/x11/gdkscreen-x11.c gtk+-2.14.5/gdk/x11/gdkscreen-x11.c +--- gtk+-2.14.5-old/gdk/x11/gdkscreen-x11.c 2008-11-24 16:36:03.000000000 +1000 ++++ gtk+-2.14.5/gdk/x11/gdkscreen-x11.c 2008-12-03 00:39:38.000000000 +1000 +@@ -894,11 +894,6 @@ + _gdk_x11_screen_size_changed (GdkScreen *screen, + XEvent *event) + { +- gint width, height; +- +- width = gdk_screen_get_width (screen); +- height = gdk_screen_get_height (screen); +- + #ifdef HAVE_RANDR + if (!XRRUpdateConfiguration (event)) + return; +@@ -915,10 +910,6 @@ + return; + #endif + +- if (width == gdk_screen_get_width (screen) && +- height == gdk_screen_get_height (screen)) +- return; +- + _gdk_x11_screen_process_monitors_change (screen); + g_signal_emit_by_name (screen, "size_changed"); + } diff --git a/abs/core/gtk2/gtk2.install b/abs/core/gtk2/gtk2.install index 3b4a881..6d415ad 100644 --- a/abs/core/gtk2/gtk2.install +++ b/abs/core/gtk2/gtk2.install @@ -1,27 +1,13 @@ -# arg 1: the new package version post_install() { - # we need to ldconfig first, in case xfree86's libs aren't - # in ld.so.cache yet - sbin/ldconfig -r . - mkdir -p etc/gtk-2.0 &>/dev/null - usr/bin/gtk-query-immodules-2.0 >etc/gtk-2.0/gtk.immodules - usr/bin/gdk-pixbuf-query-loaders >etc/gtk-2.0/gdk-pixbuf.loaders + usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules + usr/bin/gdk-pixbuf-query-loaders > etc/gtk-2.0/gdk-pixbuf.loaders } -# arg 1: the new package version -# arg 2: the old package version post_upgrade() { - post_install $1 + post_install } -# arg 1: the old package version pre_remove() { - rm -f etc/gtk-2.0/gtk.immodules &>/dev/null - rm -f etc/gtk-2.0/gdk-pixbuf.loaders &>/dev/null - rmdir etc/gtk-2.0 &>/dev/null + rm -f etc/gtk-2.0/gtk.immodules &>/dev/null + rm -f etc/gtk-2.0/gdk-pixbuf.loaders &>/dev/null } - -op=$1 -shift - -$op $* diff --git a/abs/core/hal-info/PKGBUILD b/abs/core/hal-info/PKGBUILD index 7f697c8..a7f8dd0 100644 --- a/abs/core/hal-info/PKGBUILD +++ b/abs/core/hal-info/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 2153 2008-05-27 14:12:39Z jgc $ +# $Id: PKGBUILD 22303 2008-12-25 18:44:16Z jgc $ # Maintainer: Jan de Groot pkgname=hal-info -_date=20080508 -pkgver=0.20080508 +_date=20081219 +pkgver=0.${_date} pkgrel=1 pkgdesc="Hardware Abstraction Layer information files" arch=(i686 x86_64) license=('GPL' 'custom') url="http://www.freedesktop.org/wiki/Software/hal" source=(http://hal.freedesktop.org/releases/hal-info-${_date}.tar.gz) -md5sums=('6fc99d15d38945c17a291ea93e664664') +md5sums=('be7d6d47fd18250a99a3267e712d8af7') build() { - cd ${startdir}/src/${pkgname}-${_date} + cd "${srcdir}/${pkgname}-${_date}" ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/hal/PKGBUILD b/abs/core/hal/PKGBUILD index f1a3b3f..f3e48cc 100644 --- a/abs/core/hal/PKGBUILD +++ b/abs/core/hal/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 8861 2008-08-16 22:34:13Z eric $ +# $Id: PKGBUILD 12450 2008-09-14 10:49:05Z pierre $ # Maintainer: Jan de Groot # Contributor: Link Dupont pkgname=hal pkgver=0.5.11 -pkgrel=1 +pkgrel=5 pkgdesc="Hardware Abstraction Layer" arch=(i686 x86_64) license=('GPL' 'custom') @@ -18,10 +18,17 @@ source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2 hal-policy.patch cryptsetup_location.patch hal-0.5.9-hide-diagnostic.patch - ntfs3g-valid-options.patch) -md5sums=('5e8935ab61bcb14afd2d4548084aace0' '277e96ac130d7bfce0b30f0b80db8782'\ - '18dcdaa79952e2057c2e4745fbc8ad52' 'c688a3c6574699365926f4fef7441545'\ - '4d4b6801a1cedca22b8bdd9db73b16fb' '4242a2c78885e396f639d0cd5e33218c') + ntfs3g-valid-options.patch + fix-udev-compatibility.patch + ntfs-mount-fix.patch) +md5sums=('5e8935ab61bcb14afd2d4548084aace0' + '277e96ac130d7bfce0b30f0b80db8782' + '18dcdaa79952e2057c2e4745fbc8ad52' + 'c688a3c6574699365926f4fef7441545' + '4d4b6801a1cedca22b8bdd9db73b16fb' + '4242a2c78885e396f639d0cd5e33218c' + '1a33d73fa422df2f05b7e3483836f778' + '96cf8835c30dc581c4fcf72b6ad7675e') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -29,6 +36,9 @@ build() { patch -Np1 -i ${startdir}/src/cryptsetup_location.patch || return 1 patch -Np1 -i ${startdir}/src/hal-0.5.9-hide-diagnostic.patch || return 1 patch -Np0 -i ${startdir}/src/ntfs3g-valid-options.patch || return 1 + # Fix compatibility with udev 126 and later + patch -Np1 -i ${startdir}/src/fix-udev-compatibility.patch || return 1 + patch -p0 -i ${srcdir}/ntfs-mount-fix.patch || return 1 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --libexecdir=/usr/lib/hal --enable-static=no \ diff --git a/abs/core/hal/fix-udev-compatibility.patch b/abs/core/hal/fix-udev-compatibility.patch new file mode 100644 index 0000000..2cfa3ad --- /dev/null +++ b/abs/core/hal/fix-udev-compatibility.patch @@ -0,0 +1,31 @@ +diff -Nur hal-0.5.11.orig/hald/linux/blockdev.c hal-0.5.11/hald/linux/blockdev.c +--- hal-0.5.11.orig/hald/linux/blockdev.c 2008-05-08 01:23:41.000000000 +0200 ++++ hal-0.5.11/hald/linux/blockdev.c 2008-09-12 19:38:36.000000000 +0200 +@@ -1750,11 +1750,11 @@ + char *ret; + char *u_stdout; + int u_exit_status; +- const char *argv[] = {"/usr/bin/udevinfo", "--root", "--query", "name", "--path", NULL, NULL}; ++ const char *argv[] = {"/sbin/udevadm", "info", "--root", "--query", "name", "--path", NULL, NULL}; + GError *g_error; + + ret = NULL; +- argv[5] = sysfs_path; ++ argv[6] = sysfs_path; + + g_error = NULL; + +diff -Nur hal-0.5.11.orig/hald/linux/coldplug.c hal-0.5.11/hald/linux/coldplug.c +--- hal-0.5.11.orig/hald/linux/coldplug.c 2008-05-08 01:23:32.000000000 +0200 ++++ hal-0.5.11/hald/linux/coldplug.c 2008-09-12 19:37:47.000000000 +0200 +@@ -149,8 +149,8 @@ + static gboolean + hal_util_init_sysfs_to_udev_map (void) + { +- char *udevdb_export_argv[] = { "/usr/bin/udevinfo", "-e", NULL }; +- char *udevroot_argv[] = { "/usr/bin/udevinfo", "-r", NULL }; ++ char *udevdb_export_argv[] = { "/sbin/udevadm", "info", "-e", NULL }; ++ char *udevroot_argv[] = { "/sbin/udevadm", "info", "-r", NULL }; + int udevinfo_exitcode; + UdevInfo *info = NULL; + char *p; diff --git a/abs/core/hal/ntfs-mount-fix.patch b/abs/core/hal/ntfs-mount-fix.patch new file mode 100644 index 0000000..13597f2 --- /dev/null +++ b/abs/core/hal/ntfs-mount-fix.patch @@ -0,0 +1,18 @@ +--- tools/hal-storage-mount.c.orig 2008-04-21 01:48:27.000000000 +0200 ++++ tools/hal-storage-mount.c 2008-04-21 01:47:44.000000000 +0200 +@@ -769,13 +769,13 @@ + + if (pol_is_fixed) { + if (pol_change_uid) { +- action = NULL; /* "hal-storage-mount-fixed-extra-options"; TODO: rethink */ ++ action = "hal-storage-mount-fixed-extra-options"; /*TODO: rethink */ + } else { + action = "org.freedesktop.hal.storage.mount-fixed"; + } + } else { + if (pol_change_uid) { +- action = NULL; /* "hal-storage-mount-removable-extra-options"; TODO: rethink "extra-options" */ ++ action = "hal-storage-mount-removable-extra-options"; /*TODO: rethink "extra-options" */ + } else { + action = "org.freedesktop.hal.storage.mount-removable"; + } diff --git a/abs/core/hauppauge-hvr-firmware/PKGBUILD b/abs/core/hauppauge-hvr-firmware/PKGBUILD new file mode 100755 index 0000000..ef38191 --- /dev/null +++ b/abs/core/hauppauge-hvr-firmware/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=hauppauge-hvr-firmware +pkgver=1 +pkgrel=1 +pkgdesc="firmware needed for the hvr cards" +arch=(i686 x86_64) +url="" +makedepends='unzip' +source=("http://steventoth.net/linux/hvr1800/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip") + + +build() { + cd $startdir || return 1 + mkdir -p $startdir/pkg/lib/firmware + unzip -jo HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85enc.rom + unzip -jo HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85mlC.rom + cd $startdir/src/Driver85 + mv hcw85enc.rom v4l-cx23885-enc.fw + mv hcw85mlC.rom v4l-cx23885-avcore-01.fw + cp -rp *.fw $startdir/pkg/lib/firmware +} diff --git a/abs/core/hd3000firmware/PKGBUILD b/abs/core/hd3000firmware/PKGBUILD new file mode 100755 index 0000000..745fd5f --- /dev/null +++ b/abs/core/hd3000firmware/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=hd3000firmware +pkgver=0.1 +pkgrel=1 +pkgdesc="firmware needed for the hd3000 card" +arch=(i686 x86_64) +url="http://www.pchdtv.com" + +source=("http://www.pchdtv.com/downloads/firmware.tar.gz") + + +build() { + cd $startdir/src || return 1 + mkdir -p $startdir/pkg/lib/firmware + cp -rp firmware/* $startdir/pkg/lib/firmware +} diff --git a/abs/core/hdhomerun/PKGBUILD b/abs/core/hdhomerun/PKGBUILD new file mode 100755 index 0000000..3e1a064 --- /dev/null +++ b/abs/core/hdhomerun/PKGBUILD @@ -0,0 +1,22 @@ +pkgname=hdhomerun +pkgver=20090806 +pkgrel=1 +pkgdesc="utils and firmware needed for the hdhomerun" +arch=(i686 x86_64) +url="http://www.silicondust.com" +firmware=hdhomerun_atsc_firmware_$pkgver.bin +firmware2=hdhomerun_dvbt_firmware_$pkgver.bin +firmware3=hdhomerun_tech_atsc_firmware_$pkgver.bin +url=http://download.silicondust.com/hdhomerun +source=("$url/libhdhomerun_$pkgver.tgz" "$url/$firmware" "$url/$firmware2" "$url/$firmware3" ) + + +build() { + cd $startdir/src || return 1 + cd libhdhomerun + make || return 1 + install -D -m755 hdhomerun_config $startdir/pkg/usr/bin/hdhomerun_config + cd .. + mkdir -p $startdir/pkg/lib/firmware + cp $startdir/src/*.bin $startdir/pkg/lib/firmware/ +} diff --git a/abs/core/heimdal/PKGBUILD b/abs/core/heimdal/PKGBUILD index 4c79af6..06dd0cd 100644 --- a/abs/core/heimdal/PKGBUILD +++ b/abs/core/heimdal/PKGBUILD @@ -1,33 +1,33 @@ -# $Id: PKGBUILD 3738 2008-06-30 20:03:06Z andyrtr $ -# Maintainer: Jan de Groot +# $Id: PKGBUILD 21345 2008-12-12 02:52:37Z allan $ +# Maintainer: Allan McRae +# Contributor: Jan de Groot # -### Attention: build it 2 times - it links against itself! ### -# ^ better remove old pkg before ;) +### Attention: remove old pkg before building - it links against itself! ### +# pkgname=heimdal -pkgver=1.2 -pkgrel=1 -pkgdesc="Heimdal Kerberos V5 libraries" -arch=(i686 x86_64) -url="http://www.pdc.kth.se/heimdal/" +pkgver=1.2.1 +pkgrel=2 +pkgdesc="Implementation of Kerberos V5 libraries" +arch=('i686' 'x86_64') +url="http://www.h5l.org/" license=('custom') depends=('db>=4.7' 'openssl' 'e2fsprogs') -options=('!libtool' '!emptydirs') backup=(etc/krb5.conf) -source=(http://www.h5l.org/dist/src/heimdal-$pkgver.tar.gz \ +options=('!libtool' '!emptydirs') +install=$pkgname.install +source=(http://www.h5l.org/dist/src/${pkgname}-${pkgver}.tar.gz \ 002_all_heimdal-no_libedit.patch \ 003_all_heimdal-fPIC.patch \ 004_all_heimdal-rxapps.patch \ - #006_all_heimdal-suid_fix.patch \ heimdal-kdc.rc \ kadmind.rc \ kpasswd.rc) -md5sums=('8d6b690069acd2ae8ada1315174f52f9' +md5sums=('6e5028077e2a6b101a4a72801ba71b9e' '1199c4a4a38e9c2b2c0a99bd5781767a' '3d0262aa218e1611500de735d3581e28' '0fe81cb1e33b2a2e60edaf47dfdfe4de' - #'30372b1581e4d49a76688e450fd42443' 'e59650992b9541a30dfce727a194f6e0' '1f2f86a67bbfddb7af581d35fdca9627' 'f8f1eca95b9d3f2b4ebf2417b71b81cf') @@ -39,24 +39,13 @@ build() { patch -Np0 -i ${srcdir}/002_all_heimdal-no_libedit.patch || return 1 patch -Np0 -i ${srcdir}/003_all_heimdal-fPIC.patch || return 1 patch -Np0 -i ${srcdir}/004_all_heimdal-rxapps.patch || return 1 -# patch -Np0 -i ${srcdir}/006_all_heimdal-suid_fix.patch || return 1 - -# libtoolize -f -c || return 1 -# aclocal -I cf || return 1 -# autoheader || return 1 -# automake -a || return 1 -# autoconf || return 1 -# libtoolize -f -c || return 1 - -# autoreconf || return 1 -# libtoolize -f -c || return 1 sed -i -e 's|var/heimdal|var/lib/heimdal|g' configure.in configure \ doc/setup.texi doc/heimdal.info kadmin/kadmind.8 kdc/kdc.8 \ lib/hdb/hdb.h lib/krb5/krb5.conf.5 lib/krb5/krb5.conf.cat5 ./configure --prefix=/usr --enable-shared=yes --without-x \ - --sysconfdir=/etc --mandir=/usr/man \ + --sysconfdir=/etc --mandir=/usr/share/man \ --datadir=/var/lib/heimdal \ --localstatedir=/var/lib/heimdal \ --with-openssl=/usr \ @@ -69,35 +58,35 @@ build() { make DESTDIR=${pkgdir} install || return 1 for i in telnetd ftpd rshd; do - mv ${pkgdir}/usr/man/man8/${i}.8 ${pkgdir}/usr/man/man8/k${i}.8 + mv ${pkgdir}/usr/share/man/man8/${i}.8 ${pkgdir}/usr/share/man/man8/k${i}.8 mv ${pkgdir}/usr/sbin/${i} ${pkgdir}/usr/sbin/k${i} done for i in rcp rsh telnet ftp su login; do - if [ -f ${pkgdir}/usr/man/man1/${i}.1 ]; then - mv ${pkgdir}/usr/man/man1/${i}.1 ${pkgdir}/usr/man/man1/k${i}.1 + if [ -f ${pkgdir}/usr/share/man/man1/${i}.1 ]; then + mv ${pkgdir}/usr/share/man/man1/${i}.1 ${pkgdir}/usr/share/man/man1/k${i}.1 fi mv ${pkgdir}/usr/bin/${i} ${pkgdir}/usr/bin/k${i} done - rm -rf ${pkgdir}/usr/man/cat{1,3,5,8} + rm -rf ${pkgdir}/usr/share/man/cat{1,3,5,8} - #Arch could be a KDC too + # Arch could be a KDC too mkdir -p ${pkgdir}/etc/rc.d install -m644 ${srcdir}/heimdal-${pkgver}/krb5.conf ${pkgdir}/etc for i in heimdal-kdc kadmind kpasswd; do install -m755 ${srcdir}/${i}.rc ${pkgdir}/etc/rc.d/${i} done - #Remove some conflicts - rm ${pkgdir}/usr/man/man5/ftpusers.5* - rm ${pkgdir}/usr/man/man5/login.access.5* - # and some more - rm ${pkgdir}/usr/bin/mk_cmds - rm ${pkgdir}/usr/include/ss/ss.h - rm ${pkgdir}/usr/lib/libss.a - rm ${pkgdir}/usr/lib/libss.so + # Remove conflicts + rm ${pkgdir}/usr/share/man/man5/ftpusers.5* # man-pages + rm ${pkgdir}/usr/share/info/dir + + # Compress info pages + for page in heimdal hx509; do + gzip -9 ${pkgdir}/usr/share/info/${page}.info + done - # install the license + # Install the license install -D -m644 ${srcdir}/${pkgname}-${pkgver}/LICENSE \ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE } diff --git a/abs/core/heimdal/heimdal.install b/abs/core/heimdal/heimdal.install new file mode 100644 index 0000000..499d216 --- /dev/null +++ b/abs/core/heimdal/heimdal.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(heimdal hx509) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file.info.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.info.gz $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/hwd/PKGBUILD b/abs/core/hwd/PKGBUILD new file mode 100644 index 0000000..6073e2b --- /dev/null +++ b/abs/core/hwd/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 3106 2008-06-19 18:56:52Z damir $ +# Maintainer: damir +# Contributor: Markku (rasat at Arch Linux Forums) + +pkgname=hwd +pkgver=5.3.4 +pkgrel=1 +pkgdesc="Hardware detect for Arch Linux (devfs and udev)." +url="http://user-contributions.org/projects/hwd/hwd.html" +arch=('i686' 'x86_64') +license=('GPL') +depends=('bash' 'pciutils' 'usbutils' 'ddcxinfo-arch' 'wget') +install=hwd.install +source=(http://user-contributions.org/projects/hwd/src/$pkgname-$pkgver.bin.tar.gz) + + +build() { + cd $startdir/src/$pkgname-$pkgver + cp -R $startdir/src/$pkgname-$pkgver/{etc,usr} $startdir/pkg/ || return 1 +} + +md5sums=('002cfb6de516442203073084b6c1a7f9') diff --git a/abs/core/hwd/hwd.install b/abs/core/hwd/hwd.install new file mode 100644 index 0000000..e4c28cb --- /dev/null +++ b/abs/core/hwd/hwd.install @@ -0,0 +1,15 @@ +# arg 1: the new package version +post_install() { + echo "==> Run 'hwd -u' to update xorgtable, pci-, and usb.ids." +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + echo "==> Run 'hwd -u' to update xorgtable, pci-, and usb.ids." +} + +# arg 1: the old package version +pre_remove() { + rm -R /etc/hwd >/dev/null 2>&1 +} diff --git a/abs/core/iguanair/PKGBUILD b/abs/core/iguanair/PKGBUILD new file mode 100755 index 0000000..18a02a6 --- /dev/null +++ b/abs/core/iguanair/PKGBUILD @@ -0,0 +1,25 @@ +pkgname=iguanaIR +#pkgver=0.8.0.20061009 +pkgver=0.99 +pkgrel=3 +# leaving kernver dynamic ensures compatibility with srcpac +_kernver=2.6.28-LinHES +pkgdesc="Linux Infrared Remote Control usb from iguanaworks" +arch=(i686 x86_64) +depends=('swig' ) +source=(http://iguanaworks.net/downloads/iguanaIR-0.99.tar.bz2) +url="http://iguanaworks.net" +#install=$pkgname.install + + +build() { + # configure + cd $startdir/src/$pkgname-$pkgver || return 1 + ./configure + make || return 1 + make PREFIX=$startdir/pkg/usr DESTDIR=$startdir/pkg install || return 1 + mkdir $startdir/pkg/usr/bin/ + ls -la ig* + #cp -f igclient $startdir/pkg/usr/bin/ + #cp -f igd* $startdir/pkg/usr/bin/ +} diff --git a/abs/core/ilmbase/PKGBUILD b/abs/core/ilmbase/PKGBUILD new file mode 100644 index 0000000..b8930a5 --- /dev/null +++ b/abs/core/ilmbase/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Tobias Powalowski + +pkgname=ilmbase +pkgver=1.0.1 +pkgrel=1 +depends=('gcc-libs') +pkgdesc="IlmThread is a thread abstraction library for use with OpenEXR" +arch=(i686 x86_64) +license=('custom') +options=('!libtool') +source=(http://savannah.nongnu.org/download/openexr/$pkgname-$pkgver.tar.gz) +url="http://www.openexr.org" +md5sums=('f76f094e69a6079b0beb93d97e2a217e') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/core/imagemagick/PKGBUILD b/abs/core/imagemagick/PKGBUILD index 4c0aba6..e79c46b 100644 --- a/abs/core/imagemagick/PKGBUILD +++ b/abs/core/imagemagick/PKGBUILD @@ -9,15 +9,16 @@ pkgname=imagemagick pkgver=6.4.9.10 -pkgrel=1 +pkgrel=6 pkgdesc="An image viewing/manipulation program" arch=('i686' 'x86_64') url="http://www.imagemagick.org/" license=('custom') -depends=('lcms' 'libwmf' 'librsvg' 'libxt' 'gcc-libs' 'ghostscript' 'openexr>=1.6.1' 'libtool>=2.2' 'heimdal>=1.2.1' 'bzip2' 'libxml2' 'jasper') +depends=('libjpeg' 'lcms' 'libwmf' 'librsvg' 'libxt' 'gcc-libs' 'ghostscript' 'openexr>=1.6.1' 'libtool>=2.2' 'heimdal>=1.2.1' 'bzip2' 'libxml2' 'jasper') #makedepends=('ghostscript' 'openexr') options=('!makeflags' '!docs') -source=(ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.bz2 \ +source=(ftp://ftp.fifi.org/pub/ImageMagick/legacy/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.bz2 + #ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.bz2 \ libpng_mmx_patch_x86_64.patch add_delegate.patch) build() { diff --git a/abs/core/imake/PKGBUILD b/abs/core/imake/PKGBUILD new file mode 100644 index 0000000..ba2dc4c --- /dev/null +++ b/abs/core/imake/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=imake +pkgver=1.0.2 +pkgrel=3 +force=y +pkgdesc="X.Org imake program and related utilities" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=(glibc) +makedepends=(pkgconfig xproto perl) +source=(http://xorg.freedesktop.org/releases/individual/util/imake-1.0.2.tar.bz2 + http://xorg.freedesktop.org/releases/individual/util/gccmakedep-1.0.2.tar.bz2 + http://xorg.freedesktop.org/releases/individual/util/lndir-1.0.1.tar.bz2 + http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.1.tar.bz2 + http://xorg.freedesktop.org/releases/individual/util/xorg-cf-files-1.0.2.tar.bz2 + linuxconfig.patch) + +build() { + cd ${startdir}/src/xorg-cf-files-* + patch -Np1 -i ${startdir}/src/linuxconfig.patch || return 1 + cd ${startdir}/src + for i in *; do + if [ -d "${i}" ]; then + pushd "${i}" + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + popd + fi + done +} +md5sums=('02fea5a02ba2857c7d81820c8e8b8e6f' + 'b533c0771dbbaf9b041ff35bb941d3a2' + 'e274ea9f55dfd62afa0a7b1e1ab4ba96' + '54ab2549d723e51ff2b9cff4d8bf44d1' + '5f62dd5545b782c74f6e4e70d0e6552c' + '1b1d7653ac95d4b479784afcd61a889f') diff --git a/abs/core/imake/linuxconfig.patch b/abs/core/imake/linuxconfig.patch new file mode 100644 index 0000000..8e1c5a0 --- /dev/null +++ b/abs/core/imake/linuxconfig.patch @@ -0,0 +1,31 @@ +--- xorg-cf-files-1.0.1/linux.cf.orig 2006-03-04 18:40:43.000000000 +0000 ++++ xorg-cf-files-1.0.1/linux.cf 2006-03-04 18:41:48.000000000 +0000 +@@ -193,6 +193,13 @@ + #define FSUseSyslog YES + #endif + ++#define FSUseSyslog YES ++#define BuildRman NO ++#define BuildHtmlManPages NO ++#define ProjectRoot /usr ++#define ManPath /usr/man ++#define XappLoadDir /usr/share/X11/app-defaults ++ + #ifndef HasDevRandom + # define HasDevRandom YES + # ifndef RandomDeviceName +--- xorg-cf-files-1.0.2/X11.tmpl.orig 2006-07-15 10:45:23.000000000 +0000 ++++ xorg-cf-files-1.0.2/X11.tmpl 2006-07-15 10:46:19.000000000 +0000 +@@ -1502,10 +1502,10 @@ + #define DocPdfDir $(DOCDIR)/PDF + #endif + #ifndef FontDir +-#define FontDir $(LIBDIR)/fonts ++#define FontDir /usr/share/fonts + #endif + #ifndef FontEncDir +-#define FontEncDir $(LIBDIR)/fonts/encodings ++#define FontEncDir /usr/share/fonts/encodings + #endif + #ifndef AdmDir + #define AdmDir /usr/adm diff --git a/abs/core/imlib2/PKGBUILD b/abs/core/imlib2/PKGBUILD index 1fd9f74..b465ca2 100644 --- a/abs/core/imlib2/PKGBUILD +++ b/abs/core/imlib2/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: Tom Newsom pkgname=imlib2 pkgver=1.4.1 -pkgrel=1 +pkgrel=2 pkgdesc="Imlib2 is the successor to Imlib. It is NOT a newer version -- Imlib 2 can be installed alongside Imlib 1.x" arch=(i686 x86_64) url="http://sourceforge.net/projects/enlightenment" diff --git a/abs/core/initscripts/ChangeLog b/abs/core/initscripts/ChangeLog index 1ba9dc8..a8c7a23 100644 --- a/abs/core/initscripts/ChangeLog +++ b/abs/core/initscripts/ChangeLog @@ -1,3 +1,114 @@ +commit 2c5e306be0bcc8d91662176bfcfb55ec95777bc3 +Author: Aaron Griffin +Date: Wed Jan 21 13:10:34 2009 -0800 + + Adjust copyright year to 2009 + + Signed-off-by: Aaron Griffin + +commit ad81ddafabd95ee1ea7169880a6a80f04babf9a6 +Author: Aaron Griffin +Date: Tue Dec 23 14:45:30 2008 -0800 + + Add some simple status display functions + + This is useful for displaying daemon status in functions + like /etc/rc.d/$DAEMON status + + Signed-off-by: Aaron Griffin + +commit fa4f2f14870500eeab3233da07647a7c2c5e1648 +Author: Aaron Griffin +Date: Tue Dec 23 14:43:51 2008 -0800 + + Adjust minilogd's maximums + + A max of 200000 lines stored, at 8K per line, was a little + ridiculous and soaked up way to much memory if a syslogger + was not started. Drop the max to 10000 so that we don't kill + the user's system. + + Signed-off-by: Aaron Griffin + +commit 0e4ff39e5a5c72b7d4e8d251d029d4342f68b7b6 +Author: Aaron Griffin +Date: Tue Dec 23 14:41:09 2008 -0800 + + chmod /var/run/utmp to 664 when creating + + This allows X terminals to write to /var/run/utmp + so that they are reported properly to commands like + who and w + + Signed-off-by: Aaron Griffin + +commit af3ac0dc954d96855555aa8cb12633494d465a77 +Author: Aaron Griffin +Date: Thu Dec 4 09:40:14 2008 -0800 + + unset the TZ envvar in 'functions' + + This prevents a local TZ variable from breaking + daemon's when started by root. Daemon's should always + respect the system's /etc/localtime + + Signed-off-by: Aaron Griffin + +commit 9ac428a113d5dee2b4d5469fdfdb383eda90d4c6 +Author: Aaron Griffin +Date: Mon Nov 24 07:50:45 2008 -0800 + + Switch commented kdm path + + Signed-off-by: Aaron Griffin + +commit 572019c5a188d22a1e833c1a27081227a65133f9 +Author: Roman Kyrylych +Date: Thu Sep 25 00:33:32 2008 -0500 + + Added missing slash + + Signed-off-by: Roman Kyrylych + Signed-off-by: Aaron Griffin + +commit af5516dc690a3b2fab88188cfcde898ca0efbf4b +Author: Thomas Bächler +Date: Thu Sep 18 22:21:39 2008 +0200 + + Fix bug #11229 + +commit 8f1628613cc5746b7c85c6f84776b365833f1dad +Author: Thomas Bächler +Date: Thu Sep 18 18:55:14 2008 +0200 + + Respawn udev properly when running 'init s'. Fixes #9739 + +commit ce600eea3b9383f167cb91d784aff04821fa0528 +Author: Thomas Bächler +Date: Sun Sep 14 19:46:14 2008 +0200 + + Remove references to start_udev from rc.sysinit + +commit d399979d08be1ae2cc8e4ab60a68c57b120d08a0 +Author: Thomas Bächler +Date: Sun Sep 14 19:41:14 2008 +0200 + + Revert "Create udev required device nodes if missing" + + This reverts commit 119b8df1fb1258231750309f01e747e72f382493. + These nodes are created like 10 lines above, the [ -f ... ] check would always return false anyway (-f == regular file) + +commit 119b8df1fb1258231750309f01e747e72f382493 +Author: Aaron Griffin +Date: Sat Aug 30 21:11:39 2008 -0500 + + Create udev required device nodes if missing + + Udev requires /dev/console, /dev/null, and /dev/zero to exist + before running. Create these on init if they're missing + + Signed-off-by: Aaron Griffin + commit d2ae38c8b06d057c7593b7ba836bf24a1f8f6c4f Author: Aaron Griffin Date: Tue Aug 5 14:34:53 2008 -0400 diff --git a/abs/core/initscripts/PKGBUILD b/abs/core/initscripts/PKGBUILD index b62fcaa..7f886e0 100644 --- a/abs/core/initscripts/PKGBUILD +++ b/abs/core/initscripts/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 8634 2008-08-14 09:53:14Z pierre $ +# $Id: PKGBUILD 25007 2009-01-22 17:10:39Z aaron $ # Maintainer: Thomas Baechler # Maintainer: Aaron Griffin pkgname=initscripts -pkgver=2008.08 -pkgrel=1 +pkgver=2009.01 +pkgrel=9 pkgdesc="System initialization/bootup scripts" arch=('i686' 'x86_64') url="http://www.archlinux.org" @@ -12,11 +12,12 @@ license=('GPL') groups=('base') backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown) depends=('glibc' 'bash' 'awk' 'grep' 'coreutils' 'sed' 'udev>=118' 'net-tools' 'ncurses' 'kbd' 'findutils') -install=initscripts.install -source=(ftp://ftp.archlinux.org/other/initscripts/${pkgname}-${pkgver}-${pkgrel}.tar.gz) -md5sums=('317ddba5c41ac61905fd8289805e00cd') +source=(ftp://ftp.archlinux.org/other/initscripts/${pkgname}-${pkgver}.tar.gz rc.sysinit.patch rc.shutdown.patch) +md5sums=('b947f3efd5d4681459fe8073d610f1b5') build() { - cd ${startdir}/src/${pkgname}-${pkgver}-${pkgrel}/ + cd ${startdir}/src/${pkgname}-${pkgver}/ + patch -p0 < $startdir/src/rc.sysinit.patch || exit 1 + patch -p0 < $startdir/src/rc.shutdown.patch || exit 1 DESTDIR=$startdir/pkg ./install.sh } diff --git a/abs/core/initscripts/__changelog b/abs/core/initscripts/__changelog new file mode 100644 index 0000000..8d03d24 --- /dev/null +++ b/abs/core/initscripts/__changelog @@ -0,0 +1 @@ +Patch init scripts diff --git a/abs/core/initscripts/rc.shutdown.patch b/abs/core/initscripts/rc.shutdown.patch new file mode 100644 index 0000000..7456b54 --- /dev/null +++ b/abs/core/initscripts/rc.shutdown.patch @@ -0,0 +1,23 @@ +--- rc.shutdown.orig 2009-02-06 15:32:04.000000000 +0000 ++++ rc.shutdown 2009-02-06 15:45:05.000000000 +0000 +@@ -22,6 +22,12 @@ + /etc/rc.local.shutdown + fi + ++#unmount network filesystems for runit ++#if [ -e /var/service/netfs ] ++#then ++ /etc/rc.d/netfs stop ++#fi ++ + if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then + # Shutdown daemons + let i=${#DAEMONS[@]} +@@ -39,6 +45,7 @@ + fi + fi + ++ + # Terminate all processes + stat_busy "Sending SIGTERM To Processes" + /sbin/killall5 -15 &> /dev/null diff --git a/abs/core/initscripts/rc.sysinit.patch b/abs/core/initscripts/rc.sysinit.patch new file mode 100644 index 0000000..6556069 --- /dev/null +++ b/abs/core/initscripts/rc.sysinit.patch @@ -0,0 +1,24 @@ +--- /tmp/rc.sysinit.orig 2009-04-02 16:40:47.000000000 +0000 ++++ rc.sysinit 2009-04-02 16:44:20.000000000 +0000 +@@ -7,10 +7,9 @@ + . /etc/rc.d/functions + + echo " " +-printhl "Arch Linux\n" +-printhl "${C_H2}http://www.archlinux.org" +-printhl "Copyright 2002-2007 Judd Vinet" +-printhl "Copyright 2007-2009 Aaron Griffin" ++printhl "LinHES" ++printhl "The Linux Home Entertainment System" ++printhl "${C_H2}http://www.linhes.org" + printhl "Distributed under the GNU General Public License (GPL)" + printsep + +@@ -85,6 +84,7 @@ + if ! [ "$load_modules" = "off" ]; then + if [ -f /proc/modules ]; then + stat_busy "Loading Modules" ++ /usr/LH/bin/load-modules-mythvantage.sh + for mod in "${MODULES[@]}"; do + if [ "$mod" = "${mod#!}" ]; then + /sbin/modprobe $mod diff --git a/abs/core/inputproto/PKGBUILD b/abs/core/inputproto/PKGBUILD index ddd445c..23f98c4 100644 --- a/abs/core/inputproto/PKGBUILD +++ b/abs/core/inputproto/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 670 2008-04-21 13:49:33Z alexander $ +# $Id: PKGBUILD 26845 2009-02-13 15:22:04Z andyrtr $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=inputproto -pkgver=1.4.3 +pkgver=1.5.0 pkgrel=1 pkgdesc="X11 Input extension wire protocol" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) +md5sums=('dcc36554aea1338b3813943daf1e9988') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('a0f0d8cf6fbf0db8ba3937d0cc16138d') diff --git a/abs/core/intel-dri/PKGBUILD b/abs/core/intel-dri/PKGBUILD index 167f4e4..8da4e48 100644 --- a/abs/core/intel-dri/PKGBUILD +++ b/abs/core/intel-dri/PKGBUILD @@ -2,37 +2,42 @@ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=intel-dri -pkgver=7.0.3 -pkgrel=1 +pkgver=7.2 +pkgrel=2 pkgdesc="Mesa DRI drivers for Intel chipsets" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('imake' 'mesa>=7.0.3' 'glproto>=1.4.9') +depends=('libdrm>=2.3.1' 'expat>=2.0.1' 'libgl>=7.2') +makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext') options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2) -md5sums=('e6e6379d7793af40a6bc3ce1bace572e') +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch + intel-revert-vbl.patch + intel-disable-ttm-warning.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b' + 'a111f4dc82e894f8801bc3fa129af7af' + 'a393d374b5d187ff2a5bb90b0f347c9a') build() { - cd ${startdir}/src/Mesa-${pkgver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = i810 i915 i915tex i965" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${pkgver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${srcdir}/Mesa-${pkgver} + patch -Np1 -i "${srcdir}/intel-revert-vbl.patch" || return 1 + patch -Np1 -i "${srcdir}/intel-disable-ttm-warning.patch" || return 1 + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=i810,i915,i965 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/lib/pkgconfig + rm -rf ${pkgdir}/usr/include + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so } diff --git a/abs/core/intel-dri/intel-disable-ttm-warning.patch b/abs/core/intel-dri/intel-disable-ttm-warning.patch new file mode 100644 index 0000000..f9d5223 --- /dev/null +++ b/abs/core/intel-dri/intel-disable-ttm-warning.patch @@ -0,0 +1,13 @@ +diff -ruN Mesa-7.2.orig/src/mesa/drivers/dri/intel/intel_context.c Mesa-7.2/src/mesa/drivers/dri/intel/intel_context.c +--- Mesa-7.2.orig/src/mesa/drivers/dri/intel/intel_context.c 2008-09-13 20:25:44.000000000 +0000 ++++ Mesa-7.2/src/mesa/drivers/dri/intel/intel_context.c 2008-12-21 21:27:45.000000000 +0000 +@@ -490,9 +490,6 @@ + if (intel->bufmgr == NULL) { + if (ttm_disable) { + fprintf(stderr, "TTM buffer manager disabled. Using classic.\n"); +- } else { +- fprintf(stderr, "Failed to initialize TTM buffer manager. " +- "Falling back to classic.\n"); + } + + if (intelScreen->tex.size == 0) { diff --git a/abs/core/intel-dri/intel-revert-vbl.patch b/abs/core/intel-dri/intel-revert-vbl.patch new file mode 100644 index 0000000..0394414 --- /dev/null +++ b/abs/core/intel-dri/intel-revert-vbl.patch @@ -0,0 +1,21 @@ +commit 532d2051245a1d8afe7ca236f1d966d555bb121a +Author: Dave Airlie +Date: Fri Sep 12 17:21:25 2008 +1000 + + Revert "intel: sync to vblank by default" + + This reverts commit e9bf3e4cc9a7e4bcd4c45bd707541d26ecdf0409. + +diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c +index c193830..f02192d 100644 +--- a/src/mesa/drivers/dri/intel/intel_screen.c ++++ b/src/mesa/drivers/dri/intel/intel_screen.c +@@ -55,7 +55,7 @@ PUBLIC const char __driConfigOptions[] = + DRI_CONF_BEGIN + DRI_CONF_SECTION_PERFORMANCE + DRI_CONF_FTHROTTLE_MODE(DRI_CONF_FTHROTTLE_IRQS) +- DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_ALWAYS_SYNC) ++ DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_0) + /* Options correspond to DRI_CONF_BO_REUSE_DISABLED, + * DRI_CONF_BO_REUSE_ALL + */ diff --git a/abs/core/intel-dri/mesa-7.1-link-shared.patch b/abs/core/intel-dri/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/intel-dri/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/intltool/ChangeLog b/abs/core/intltool/ChangeLog new file mode 100644 index 0000000..4419f0f --- /dev/null +++ b/abs/core/intltool/ChangeLog @@ -0,0 +1,38 @@ +2009-03-15 Eric Belanger + + * intltool 0.40.6-1 + * Upstream update + +2009-02-07 Eric Belanger + + * Added I18N-HOWTO doc (close FS#12889) + +2008-11-28 Jan de Groot + + * intltool 0.40.5-1 + * Upstream update + +2008-09-25 Jan de Groot + + * intltool 0.40.4-1 + * Upstream update + +2008-07-28 Eric Belanger + + * intltool 0.40.3-1 + * Upstream update + +2008-07-23 Eric Belanger + + * intltool 0.40.1-1 + * Upstream update + +2008-06-08 Eric Belanger + + * intltool 0.40.0-1 + * Upstream update + +2008-03-01 Eric Belanger + + * intltool 0.37.1-1 + * Upstream update diff --git a/abs/core/intltool/PKGBUILD b/abs/core/intltool/PKGBUILD new file mode 100644 index 0000000..d367e29 --- /dev/null +++ b/abs/core/intltool/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 30076 2009-03-16 03:02:39Z eric $ +# Maintainer: Eric Belanger +# Contributor: Jan de Groot + +pkgname=intltool +pkgver=0.40.6 +pkgrel=1 +pkgdesc="The internationalization tool collection" +arch=('i686' 'x86_64') +url="http://freedesktop.org/wiki/Software/intltool" +license=('GPL') +depends=('perlxml') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('69bc0353323112f42ad4f9cf351bc3e5') +sha1sums=('4f6469e09e2c06a8072dffff36f84ff401d7ea75') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -D -m644 doc/I18N-HOWTO ${pkgdir}/usr/share/doc/${pkgname}/I18N-HOWTO || return 1 +} diff --git a/abs/core/iproute/PKGBUILD b/abs/core/iproute/PKGBUILD deleted file mode 100644 index ae0f9f0..0000000 --- a/abs/core/iproute/PKGBUILD +++ /dev/null @@ -1,26 +0,0 @@ -# $Id: PKGBUILD 3746 2008-06-30 20:09:01Z andyrtr $ -# Maintainer: Judd Vinet -pkgname=iproute -#_dlver=2.6.24-rc7 -#pkgver=$(echo ${_dlver} | sed 's|-|_|g') -pkgver=2.6.25 -pkgrel=1 -pkgdesc="IP Routing Utilities" -arch=(i686 x86_64) -license=('GPL') -url="http://www.linux-foundation.org/en/Net:Iproute2" -depends=('db>=4.7') -source=(#http://devresources.linux-foundation.org/dev/iproute2/download/iproute2-${_dlver}.tar.bz2 - http://devresources.linux-foundation.org/dev/iproute2/download/iproute2-${pkgver}.tar.bz2) -options=('force') -md5sums=('5737bade2f5e03fad0e2c81da91e551e') - -build() { - #cd $srcdir/iproute2-${_dlver} - cd $srcdir/iproute2-${pkgver} - sed -i 's|/usr/local/lib/iptables|/usr/lib/iptables|' include/iptables.h || return 1 - ./configure - make || return 1 - make DESTDIR=$pkgdir install || return 1 - chmod 755 $pkgdir/usr/sbin/ifcfg -} diff --git a/abs/core/iproute/iproute2-2.4.7-now-ss020116.patch b/abs/core/iproute/iproute2-2.4.7-now-ss020116.patch deleted file mode 100644 index 0e37865..0000000 --- a/abs/core/iproute/iproute2-2.4.7-now-ss020116.patch +++ /dev/null @@ -1,9823 +0,0 @@ -diff -Naur iproute2-orig/Makefile iproute2/Makefile ---- iproute2-orig/Makefile 2002-01-15 15:30:32.000000000 -0800 -+++ iproute2/Makefile 2004-05-21 00:16:36.000000000 -0700 -@@ -4,8 +4,6 @@ - CONFDIR=/etc/iproute2 - DOCDIR=/usr/doc/iproute2 - --KERNEL_INCLUDE=/usr/src/linux/include --LIBC_INCLUDE=/usr/include - - DEFINES= -DRESOLVE_HOSTNAMES - -@@ -23,19 +21,11 @@ - #options for ipx - ADDLIB+=ipx_ntop.o ipx_pton.o - --ifeq ($(LIBC_INCLUDE)/socketbits.h,$(wildcard $(LIBC_INCLUDE)/socketbits.h)) -- ifeq ($(LIBC_INCLUDE)/net/if_packet.h,$(wildcard $(LIBC_INCLUDE)/net/if_packet.h)) -- GLIBCFIX=-I../include-glibc -include ../include-glibc/glibc-bugs.h -- endif --endif --ifeq ($(LIBC_INCLUDE)/bits/socket.h,$(wildcard $(LIBC_INCLUDE)/bits/socket.h)) -- GLIBCFIX=-I../include-glibc -I/usr/include/db3 -include ../include-glibc/glibc-bugs.h --endif - - - CC = gcc - CCOPTS = -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g --CFLAGS = $(CCOPTS) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES) -+CFLAGS = $(CCOPTS) -I../include $(DEFINES) - - LDLIBS += -L../lib -lnetlink -lutil - -@@ -43,19 +33,11 @@ - - LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a - --all: check-kernel -+all: - @set -e; \ - for i in $(SUBDIRS); \ - do $(MAKE) -C $$i; done - --check-kernel: --ifeq ($(KERNEL_INCLUDE),) -- @echo "Please, set correct KERNEL_INCLUDE"; false --else -- @set -e; \ -- if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \ -- echo "Please, compile the kernel first"; false; fi --endif - - install: all - install -m 0755 -d $(DESTDIR)$(SBINDIR) -diff -Naur iproute2-orig/Makefile~ iproute2/Makefile~ ---- iproute2-orig/Makefile~ 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/Makefile~ 2002-01-15 15:30:32.000000000 -0800 -@@ -0,0 +1,77 @@ -+# Path to parent kernel include files directory -+DESTDIR= -+SBINDIR=/sbin -+CONFDIR=/etc/iproute2 -+DOCDIR=/usr/doc/iproute2 -+ -+KERNEL_INCLUDE=/usr/src/linux/include -+LIBC_INCLUDE=/usr/include -+ -+DEFINES= -DRESOLVE_HOSTNAMES -+ -+#options if you have a bind>=4.9.4 libresolv (or, maybe, glibc) -+LDLIBS=-lresolv -+ADDLIB= -+ -+#options if you compile with libc5, and without a bind>=4.9.4 libresolv -+#LDLIBS= -+#ADDLIB=inet_ntop.o inet_pton.o -+ -+#options for decnet -+ADDLIB+=dnet_ntop.o dnet_pton.o -+ -+#options for ipx -+ADDLIB+=ipx_ntop.o ipx_pton.o -+ -+ifeq ($(LIBC_INCLUDE)/socketbits.h,$(wildcard $(LIBC_INCLUDE)/socketbits.h)) -+ ifeq ($(LIBC_INCLUDE)/net/if_packet.h,$(wildcard $(LIBC_INCLUDE)/net/if_packet.h)) -+ GLIBCFIX=-I../include-glibc -include ../include-glibc/glibc-bugs.h -+ endif -+endif -+ifeq ($(LIBC_INCLUDE)/bits/socket.h,$(wildcard $(LIBC_INCLUDE)/bits/socket.h)) -+ GLIBCFIX=-I../include-glibc -I/usr/include/db3 -include ../include-glibc/glibc-bugs.h -+endif -+ -+ -+CC = gcc -+CCOPTS = -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -+CFLAGS = $(CCOPTS) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES) -+ -+LDLIBS += -L../lib -lnetlink -lutil -+ -+SUBDIRS=lib ip tc misc -+ -+LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a -+ -+all: check-kernel -+ @set -e; \ -+ for i in $(SUBDIRS); \ -+ do $(MAKE) -C $$i; done -+ -+check-kernel: -+ifeq ($(KERNEL_INCLUDE),) -+ @echo "Please, set correct KERNEL_INCLUDE"; false -+else -+ @set -e; \ -+ if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \ -+ echo "Please, compile the kernel first"; false; fi -+endif -+ -+install: all -+ install -m 0755 -d $(DESTDIR)$(SBINDIR) -+ install -m 0755 -d $(DESTDIR)$(CONFDIR) -+ install -m 0755 -d $(DESTDIR)$(DOCDIR)/examples -+ install -m 0755 -d $(DESTDIR)$(DOCDIR)/examples/diffserv -+ install -m 0644 README.iproute2+tc $(shell find examples -type f -maxdepth 1) $(DESTDIR)$(DOCDIR)/examples -+ install -m 0644 $(shell echo examples/diffserv/*) $(DESTDIR)$(DOCDIR)/examples/diffserv -+ @for i in $(SUBDIRS) doc; do $(MAKE) -C $$i install; done -+ @cd etc/iproute2; for i in *; do \ -+ if [ ! -e $(DESTDIR)$(CONFDIR)/$$i ]; then \ -+ echo install -m 0644 $$i $(DESTDIR)$(CONFDIR); \ -+ install -m 0644 $$i $(DESTDIR)$(CONFDIR); fi; done -+ -+clean: -+ for i in $(SUBDIRS) doc; \ -+ do $(MAKE) -C $$i clean; done -+ -+.EXPORT_ALL_VARIABLES: -diff -Naur iproute2-orig/debian/README.Debian iproute2/debian/README.Debian ---- iproute2-orig/debian/README.Debian 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/README.Debian 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,4 @@ -+This version of "iproute" includes the HTB Linux queuing discipline -+explained in http://luxik.cdi.cz/~devik/qos/htb/ -+ -+You need kernel version 2.4.21 or newer in order to use it. -diff -Naur iproute2-orig/debian/changelog iproute2/debian/changelog ---- iproute2-orig/debian/changelog 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/changelog 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,207 @@ -+iproute (20010824-13) unstable; urgency=low -+ -+ * debian/rules: Run dpkg-shlibdeps with all the executables, -+ to fix dependency problem (closes: Bug#224063) -+ * Really removed references to obsolete include files -+ (Bug#223165 was not fixed properly) -+ -+ -- Juan Cespedes Sun, 25 Jan 2004 23:04:20 +0100 -+ -+iproute (20010824-12) unstable; urgency=low -+ -+ * Updated README.Debian and copyright file -+ * Added two new manpages from http://lartc.org/manpages/: -+ ip(8) and tc-cbq-details(8). -+ * Removed references to obsolete include files which made -+ compilation fail (closes: Bug#223165) -+ -+ -- Juan Cespedes Sun, 14 Dec 2003 00:40:10 +0100 -+ -+iproute (20010824-11) unstable; urgency=low -+ -+ * Changed priority to "optional" -+ * Fixed "tc -s qdisc" on sparc (patch by "Nicolas S. Dade" -+ ) (closes: Bug#194128) -+ -+ -- Juan Cespedes Sun, 17 Aug 2003 00:22:47 +0200 -+ -+iproute (20010824-10) unstable; urgency=low -+ -+ * Updated manual pages from http://www.lartc.org/manpages/ -+ (closes: Bug#156353, Bug#175313, Bug#176989, Bug#189095) -+ * New Standards-Version -+ * Don't "rm -rf /etc/iproute2" on purge (closes: Bug#202862) -+ * Include "iproute2" in the description (closes: Bug#182999) -+ -+ -- Juan Cespedes Sat, 16 Aug 2003 18:29:27 +0200 -+ -+iproute (20010824-9) unstable; urgency=medium -+ -+ * Added patch for HTB v3.6 to be able to work with kernel 2.4.20 -+ (from http://luxik.cdi.cz/~devik/qos/htb/v3/htb3.6-020525.tgz) -+ (closes: Bug#147550, Bug#167149, Bug#167597, Bug#171277) -+ -+ -- Juan Cespedes Thu, 05 Dec 2002 13:44:10 +0100 -+ -+iproute (20010824-8) unstable; urgency=medium -+ -+ * Added support for HTB queuing discipline (closes: Bug#133381) -+ NOTE: you need a patched kernel in order to use it -+ -+ -- Juan Cespedes Tue, 2 Apr 2002 20:29:40 +0200 -+ -+iproute (20010824-7) unstable; urgency=medium -+ -+ * Move `ip' binary to /bin to fix FHS violation (closes: Bug#134812) -+ -+ -- Juan Cespedes Mon, 4 Mar 2002 00:20:30 +0100 -+ -+iproute (20010824-6) unstable; urgency=low -+ -+ * Added a couple of #ifdef's to be able to compile with older -+ kernel headers (needed for arm) (closes: Bug#131695) -+ -+ -- Juan Cespedes Sat, 16 Feb 2002 19:27:15 +0100 -+ -+iproute (20010824-5) unstable; urgency=low -+ -+ * Really fix Bug#121589 (dead gateway bug); apparently I -+ forgot to include the patch in 20010824-2 -+ -+ -- Juan Cespedes Tue, 29 Jan 2002 23:22:24 +0100 -+ -+iproute (20010824-4) unstable; urgency=low -+ -+ * Added support for DIFFSERV and ATM in tc -+ -+ -- Juan Cespedes Sun, 13 Jan 2002 03:01:47 +0100 -+ -+iproute (20010824-3) unstable; urgency=low -+ -+ * Updated tc* man pages (thanks to bert hubert ) -+ * Fixed spurious space in `tc -s qdisc' output (closes: Bug#128501) -+ -+ -- Juan Cespedes Thu, 10 Jan 2002 22:18:25 +0100 -+ -+iproute (20010824-2) unstable; urgency=low -+ -+ * Fixed the following important and serious bugs: -+ + iproute doesn't compile on Alpha (closes: Bug#118113, Bug#123224) -+ + iproute doesn't compile on MIPS (closes: Bug#118424) -+ + iproute doesn't compile on powerpc (closes: Bug#119601) -+ * Added man pages for tc (closes: Bug#124230), tc-cbq, tc-red, tc-tbf, -+ tc-prio and tc-sfq -+ * Removed references to old programs from iproute(7) (closes: Bug#99536) -+ * Fixed bug which presented first hop as dead in equal cost multipath -+ (closes: Bug#121589) -+ * Do not process .ps with through `psnup' (closes: Bug#119820) -+ -+ -- Juan Cespedes Tue, 8 Jan 2002 16:07:27 +0100 -+ -+iproute (20010824-1) unstable; urgency=low -+ -+ * New upstream version -+ * Make ingress qdisc work again with tc (closes: Bug#84444) -+ * Make it compile properly with new include files (closes: Bug#113112) -+ -+ -- Juan Cespedes Sun, 28 Oct 2001 16:38:00 +0100 -+ -+iproute (20001007-1) unstable; urgency=low -+ -+ * New upstream version (closes: Bug#63701) -+ * Remove /etc/iproute2 on purge (closes: Bug#72743) -+ * Fixed Lintian warnings (no-priority-field and no-section-field) -+ -+ -- Juan Cespedes Sat, 14 Oct 2000 19:27:12 +0200 -+ -+iproute (991023-2) unstable; urgency=low -+ -+ * New Standards-Version (3.1.1) (closes: Bug#47923) -+ * Modified description of package to show which kernel options are -+ necessary to use the package (closes: Bug#47922) -+ * Updated manual page to point at /usr/share/doc/iproute (closes: Bug#47924) -+ -+ -- Juan Cespedes Sun, 19 Dec 1999 04:00:21 +0100 -+ -+iproute (991023-1) unstable; urgency=low -+ -+ * New upstream version (closes: Bug#48733) -+ -+ -- Juan Cespedes Tue, 2 Nov 1999 16:29:37 +0100 -+ -+iproute (990824-1) unstable; urgency=low -+ -+ * New maintainer -+ * New upstream version -+ * New Standards-Version: 3.1.0 -+ * Minor fix in "ip rule list": mask in "from" address was not shown -+ correctly -+ * Removed obsoleted documentation from "debian/" directory -+ -+ -- Juan Cespedes Sun, 24 Oct 1999 19:02:56 +0200 -+ -+iproute (990630-1) unstable; urgency=low -+ -+ * New upstream version. -+ * FHS and standards 3.0.1.0. -+ -+ -- Roberto Lumbreras Tue, 3 Aug 1999 02:49:28 +0200 -+ -+iproute (990530-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Build with 2.2.10 kernel headers. -+ * Install new scripts ip/routef ip/routel, but not ip/ifcfg ip/rtpr by -+ now, I don't know who/what needs rtpr; ifcfg uses arping, and it isn't -+ available in debian for now. -+ -+ -- Roberto Lumbreras Tue, 22 Jun 1999 02:28:53 +0200 -+ -+iproute (990329-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Build with 2.2.5 kernel headers. -+ -+ -- Roberto Lumbreras Sun, 4 Apr 1999 18:50:39 +0200 -+ -+iproute (980630-1) unstable; urgency=low -+ -+ * New upstream version. -+ * Build with 2.1.112 kernel headers. -+ * Rewrote the rules file. -+ -+ -- Roberto Lumbreras Wed, 29 Jul 1998 23:37:52 +0200 -+ -+iproute (980119-1) unstable; urgency=low -+ -+ * Outdated documentation. Upstream docs are scarce. -+ * Non-Maintainer release -+ * This package has no correct copyright file! -+ * Include all the README.* docs from the upstream site. -+ * Modified to build under glibc -+ * Build with 2.1.85 kernel headers. -+ * produce a correct diff. -+ * Reworked the rules file to utilize debmake fully -+ * Newest upstream release -+ * glibc compilation -+ -+ -- Christoph Lameter Wed, 4 Feb 1998 13:37:28 -0800 -+ -+iproute (961225-2) unstable frozen; urgency=low -+ -+ * Added a man page for iproute. (Fixes #8080). -+ * Removed out-of-date patches. -+ * Added routing.txt from /usr/src/linux/Documentation/networking/routing.txt -+ * Newer version of debmake. -+ -+ -- Tom Lees Mon, 17 Apr 1997 17:00:36 +0100 -+ -+iproute (961225-1) unstable; urgency=low -+ -+ * Initial Release. -+ -+ -- Tom Lees Mon, 30 Dec 1996 11:12:23 +0000 -+ -+Local variables: -+mode: debian-changelog -+End: -diff -Naur iproute2-orig/debian/conffiles iproute2/debian/conffiles ---- iproute2-orig/debian/conffiles 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/conffiles 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,5 @@ -+/etc/iproute2/rt_dsfield -+/etc/iproute2/rt_protos -+/etc/iproute2/rt_realms -+/etc/iproute2/rt_scopes -+/etc/iproute2/rt_tables -diff -Naur iproute2-orig/debian/control iproute2/debian/control ---- iproute2-orig/debian/control 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/control 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,19 @@ -+Source: iproute -+Section: net -+Priority: optional -+Maintainer: Juan Cespedes -+Standards-Version: 3.6.0 -+Build-Depends: tetex-bin, atm-dev -+ -+Package: iproute -+Architecture: any -+Depends: ${shlibs:Depends} -+Description: Professional tools to control the networking in Linux kernels -+ This is `iproute', the professional set of tools to control the -+ networking behavior in kernels 2.2.x and later. -+ . -+ At least, the options CONFIG_NETLINK and CONFIG_RTNETLINK must -+ be compiled in the running kernel -+ . -+ This package is also known as iproute2 upstream and in some -+ documentation. -diff -Naur iproute2-orig/debian/copyright iproute2/debian/copyright ---- iproute2-orig/debian/copyright 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/copyright 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,42 @@ -+This is the Debian GNU/Linux's prepackaged version of the -+Linux Traffic Control engine and related utils, "iproute" -+ -+This package was put together from sources obtained from: -+ ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.4.7-now-ss010824.tar.gz -+ -+Changes for Debian: -+ * added Debian GNU/Linux package maintenance system files -+ * Added HTB v3.6 from -+ -+ -+ -+Copyrights -+---------- -+Copyright (C) 1996-2001 Alexey Kuznetsov -+ -+Modifications for Debian: -+ Copyright (C) 1996 Tom Lees -+ Copyright (C) 1998 Christoph Lameter -+ Copyright (C) 1998-1999 Roberto Lumbreras -+ Copyright (C) 1999-2003 Juan Cespedes -+ -+ -+License -+------- -+ -+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, 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. -+ -+A copy of the GNU General Public License is available as -+`/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution -+or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'. -+You can also obtain it by writing to the Free Software Foundation, -+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -+ -diff -Naur iproute2-orig/debian/manpages/ip.8 iproute2/debian/manpages/ip.8 ---- iproute2-orig/debian/manpages/ip.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/ip.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,1809 @@ -+.TH IP 8 "17 January 2002" "iproute2" "Linux" -+.SH NAME -+ip \- show / manipulate routing, devices, policy routing and tunnels -+.SH SYNOPSIS -+ -+.ad l -+.in +8 -+.ti -8 -+.B ip -+.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " -+.BR help " }" -+.sp -+ -+.ti -8 -+.IR OBJECT " := { " -+.BR link " | " addr " | " route " | " rule " | " neigh " | " tunnel " | "\ -+maddr " | " mroute " | " monitor " }" -+.sp -+ -+.ti -8 -+.IR OPTIONS " := { " -+\fB\-V\fR[\fIersion\fR] | -+\fB\-s\fR[\fItatistics\fR] | -+\fB\-r\fR[\fIesolve\fR] | -+\fB\-f\fR[\fIamily\fR] { -+.BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | " -+\fB\-o\fR[\fIneline\fR] } -+ -+.ti -8 -+.BI "ip link set " DEVICE -+.RB "{ " up " | " down " | " arp " { " on " | " off " } |" -+.br -+.BR promisc " { " on " | " off " } |" -+.br -+.BR allmulti " { " on " | " off " } |" -+.br -+.BR dynamic " { " on " | " off " } |" -+.br -+.BR multicast " { " on " | " off " } |" -+.br -+.B txqueuelen -+.IR PACKETS " |" -+.br -+.B name -+.IR NEWNAME " |" -+.br -+.B address -+.IR LLADDR " |" -+.B broadcast -+.IR LLADDR " |" -+.br -+.B mtu -+.IR MTU " }" -+ -+.ti -8 -+.B ip link show -+.RI "[ " DEVICE " ]" -+ -+.ti -8 -+.BR "ip addr" " { " add " | " del " } " -+.IB IFADDR " dev " STRING -+ -+.ti -8 -+.BR "ip addr" " { " show " | " flush " } [ " dev -+.IR STRING " ] [ " -+.B scope -+.IR SCOPE-ID " ] [ " -+.B to -+.IR PREFIX " ] [ " FLAG-LIST " ] [ " -+.B label -+.IR PATTERN " ]" -+ -+.ti -8 -+.IR IFADDR " := " PREFIX " | " ADDR -+.B peer -+.IR PREFIX " [ " -+.B broadcast -+.IR ADDR " ] [ " -+.B anycast -+.IR ADDR " ] [ " -+.B label -+.IR STRING " ] [ " -+.B scope -+.IR SCOPE-ID " ]" -+ -+.ti -8 -+.IR SCOPE-ID " := " -+.RB "[ " host " | " link " | " global " | " -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR FLAG-LIST " := [ " FLAG-LIST " ] " FLAG -+ -+.ti -8 -+.IR FLAG " := " -+.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\ -+tentative " | " deprecated " ]" -+ -+.ti -8 -+.BR "ip route" " { " -+.BR list " | " flush " } " -+.I SELECTOR -+ -+.ti -8 -+.B ip route get -+.IR ADDRESS " [ " -+.BI from " ADDRESS " iif " STRING" -+.RB " ] [ " oif -+.IR STRING " ] [ " -+.B tos -+.IR TOS " ]" -+ -+.ti -8 -+.BR "ip route" " { " add " | " del " | " change " | " append " | "\ -+replace " | " monitor " } " -+.I ROUTE -+ -+.ti -8 -+.IR SELECTOR " := " -+.RB "[ " root -+.IR PREFIX " ] [ " -+.B match -+.IR PREFIX " ] [ " -+.B exact -+.IR PREFIX " ] [ " -+.B table -+.IR TABLE_ID " ] [ " -+.B proto -+.IR RTPROTO " ] [ " -+.B type -+.IR TYPE " ] [ " -+.B scope -+.IR SCOPE " ]" -+ -+.ti -8 -+.IR ROUTE " := " NODE_SPEC " [ " INFO_SPEC " ]" -+ -+.ti -8 -+.IR NODE_SPEC " := [ " TYPE " ] " PREFIX " [" -+.B tos -+.IR TOS " ] [ " -+.B table -+.IR TABLE_ID " ] [ " -+.B proto -+.IR RTPROTO " ] [ " -+.B scope -+.IR SCOPE " ] [ " -+.B metric -+.IR METRIC " ]" -+ -+.ti -8 -+.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " [" -+.B nexthop -+.IR NH " ] ..." -+ -+.ti -8 -+.IR NH " := [ " -+.B via -+.IR ADDRESS " ] [ " -+.B dev -+.IR STRING " ] [ " -+.B weight -+.IR NUMBER " ] " NHFLAGS -+ -+.ti -8 -+.IR OPTIONS " := " FLAGS " [ " -+.B mtu -+.IR NUMBER " ] [ " -+.B advmss -+.IR NUMBER " ] [ " -+.B rtt -+.IR NUMBER " ] [ " -+.B rttvar -+.IR NUMBER " ] [ " -+.B window -+.IR NUMBER " ] [ " -+.B cwnd -+.IR NUMBER " ] [ " -+.B ssthresh -+.IR REALM " ] [ " -+.B realms -+.IR REALM " ]" -+ -+.ti -8 -+.IR TYPE " := [ " -+.BR unicast " | " local " | " broadcast " | " multicast " | "\ -+throw " | " unreachable " | " prohibit " | " blackhole " | " nat " ]" -+ -+.ti -8 -+.IR TABLE_ID " := [ " -+.BR local "| " main " | " default " | " all " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR SCOPE " := [ " -+.BR host " | " link " | " global " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR FLAGS " := [ " -+.BR equalize " ]" -+ -+.ti -8 -+.IR NHFLAGS " := [ " -+.BR onlink " | " pervasive " ]" -+ -+.ti -8 -+.IR RTPROTO " := [ " -+.BR kernel " | " boot " | " static " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.B ip rule -+.RB " [ " list " | " add " | " del " ]" -+.I SELECTOR ACTION -+ -+.ti -8 -+.IR SELECTOR " := [ " -+.B from -+.IR PREFIX " ] [ " -+.B to -+.IR PREFIX " ] [ " -+.B tos -+.IR TOS " ] [ " -+.B fwmark -+.IR FWMARK " ] [ " -+.B dev -+.IR STRING " ] [ " -+.B pref -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR ACTION " := [ " -+.B table -+.IR TABLE_ID " ] [ " -+.B nat -+.IR ADDRESS " ] [ " -+.BR prohibit " | " reject " | " unreachable " ] [ " realms -+.RI "[" SRCREALM "/]" DSTREALM " ]" -+ -+.ti -8 -+.IR TABLE_ID " := [ " -+.BR local " | " main " | " default " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.BR "ip neigh" " { " add " | " del " | " change " | " replace " } { " -+.IR ADDR " [ " -+.B lladdr -+.IR LLADDR " ] [ " -+.BR nud " { " permanent " | " noarp " | " stale " | " reachable " } ] | " proxy -+.IR ADDR " } [ " -+.B dev -+.IR DEV " ]" -+ -+.ti -8 -+.BR "ip neigh" " { " show " | " flush " } [ " to -+.IR PREFIX " ] [ " -+.B dev -+.IR DEV " ] [ " -+.B nud -+.IR STATE " ]" -+ -+.ti -8 -+.BR "ip tunnel" " { " add " | " change " | " del " | " show " }" -+.RI "[ " NAME " ]" -+.br -+.RB "[ " mode " { " ipip " | " gre " | " sit " } ]" -+.br -+.RB "[ " remote -+.IR ADDR " ] [ " -+.B local -+.IR ADDR " ]" -+.br -+.RB "[ [" i "|" o "]" seq " ] [ [" i "|" o "]" key -+.IR KEY " ] [ " -+.RB "[" i "|" o "]" csum " ] ]" -+.br -+.RB "[ " ttl -+.IR TTL " ] [ " -+.B tos -+.IR TOS " ] [ " -+.RB "[" no "]" pmtudisc " ]" -+.br -+.RB "[ " dev -+.IR PHYS_DEV " ]" -+ -+.ti -8 -+.IR ADDR " := { " IP_ADDRESS " |" -+.BR any " }" -+ -+.ti -8 -+.IR TOS " := { " NUMBER " |" -+.BR inherit " }" -+ -+.ti -8 -+.IR TTL " := { " 1 ".." 255 " | " -+.BR inherit " }" -+ -+.ti -8 -+.IR KEY " := { " DOTTED_QUAD " | " NUMBER " }" -+ -+.ti -8 -+.BR "ip maddr" " [ " add " | " del " ]" -+.IB MULTIADDR " dev " STRING -+ -+.ti -8 -+.BR "ip maddr show" " [ " dev -+.IR STRING " ]" -+ -+.ti -8 -+.BR "ip mroute show" " [" -+.IR PREFIX " ] [ " -+.B from -+.IR PREFIX " ] [ " -+.B iif -+.IR DEVICE " ]" -+ -+.ti -8 -+.BR "ip monitor" " [ " all " |" -+.IR LISTofOBJECTS " ]" -+.in -8 -+.ad b -+ -+.SH OPTIONS -+ -+.TP -+.BR "\-V" , " -Version" -+print the version of the -+.B ip -+utility and exit. -+ -+.TP -+.BR "\-s" , " \-stats", " \-statistics" -+output more information. If the option -+appears twice or more, the amount of information increases. -+As a rule, the information is statistics or some time values. -+ -+.TP -+.BR "\-f" , " \-family" -+followed by protocol family identifier: -+.BR "inet" , " inet6" -+or -+.B link -+,enforce the protocol family to use. If the option is not present, -+the protocol family is guessed from other arguments. If the rest -+of the command line does not give enough information to guess the -+family, -+.B ip -+falls back to the default one, usually -+.B inet -+or -+.BR "any" . -+.B link -+is a special family identifier meaning that no networking protocol -+is involved. -+ -+.TP -+.B \-4 -+shortcut for -+.BR "-family inet" . -+ -+.TP -+.B \-6 -+shortcut for -+.BR "\-family inet6" . -+ -+.TP -+.B \-0 -+shortcut for -+.BR "\-family link" . -+ -+.TP -+.BR "\-o" , " \-oneline" -+output each record on a single line, replacing line feeds -+with the -+.B '\' -+character. This is convenient when you want to count records -+with -+.BR wc (1) -+ or to -+.BR grep (1) -+the output. -+ -+.TP -+.BR "\-r" , " \-resolve" -+use the system's name resolver to print DNS names instead of -+host addresses. -+ -+.SH IP - COMMAND SYNTAX -+ -+.SS -+.I OBJECT -+ -+.TP -+.B link -+- network device. -+ -+.TP -+.B address -+- protocol (IP or IPv6) address on a device. -+.TP -+.B neighbour -+- ARP or NDISC cache entry. -+ -+.TP -+.B route -+- routing table entry. -+ -+.TP -+.B rule -+- rule in routing policy database. -+ -+.TP -+.B maddress -+- multicast address. -+ -+.TP -+.B mroute -+- multicast routing cache entry. -+ -+.TP -+.B tunnel -+- tunnel over IP. -+ -+.PP -+The names of all objects may be written in full or -+abbreviated form, f.e. -+.B address -+is abbreviated as -+.B addr -+or just -+.B a. -+ -+.SS -+.I COMMAND -+ -+Specifies the action to perform on the object. -+The set of possible actions depends on the object type. -+As a rule, it is possible to -+.BR "add" , " delete" -+and -+.B show -+(or -+.B list -+) objects, but some objects do not allow all of these operations -+or have some additional commands. The -+.B help -+command is available for all objects. It prints -+out a list of available commands and argument syntax conventions. -+.sp -+If no command is given, some default command is assumed. -+Usually it is -+.B list -+or, if the objects of this class cannot be listed, -+.BR "help" . -+ -+.SH ip link - network device configuration -+ -+.B link -+is a network device and the corresponding commands -+display and change the state of devices. -+ -+.SS ip link set - change device attributes -+ -+.TP -+.BI dev " NAME " (default) -+.I NAME -+specifies network device to operate on. -+ -+.TP -+.BR up " and " down -+change the state of the device to -+.B UP -+or -+.BR "DOWN" . -+ -+.TP -+.BR "arp on " or " arp off" -+change the -+.B NOARP -+flag on the device. -+ -+.TP -+.BR "multicast on " or " multicast off" -+change the -+.B MULTICAST -+flag on the device. -+ -+.TP -+.BR "dynamic on " or " dynamic off" -+change the -+.B DYNAMIC -+flag on the device. -+ -+.TP -+.BI name " NAME" -+change the name of the device. This operation is not -+recommended if the device is running or has some addresses -+already configured. -+ -+.TP -+.BI txqueuelen " NUMBER" -+.TP -+.BI txqlen " NUMBER" -+change the transmit queue length of the device. -+ -+.TP -+.BI mtu " NUMBER" -+change the -+.I MTU -+of the device. -+ -+.TP -+.BI address " LLADDRESS" -+change the station address of the interface. -+ -+.TP -+.BI broadcast " LLADDRESS" -+.TP -+.BI brd " LLADDRESS" -+.TP -+.BI peer " LLADDRESS" -+change the link layer broadcast address or the peer address when -+the interface is -+.IR "POINTOPOINT" . -+ -+.PP -+.B Warning: -+If multiple parameter changes are requested, -+.B ip -+aborts immediately after any of the changes have failed. -+This is the only case when -+.B ip -+can move the system to an unpredictable state. The solution -+is to avoid changing several parameters with one -+.B ip link set -+call. -+ -+.SS ip link show - display device attributes -+ -+.TP -+.BI dev " NAME " (default) -+.I NAME -+specifies the network device to show. -+If this argument is omitted all devices are listed. -+ -+.TP -+.B up -+only display running interfaces. -+ -+.SH ip address - protocol address management. -+ -+The -+.B address -+is a protocol (IP or IPv6) address attached -+to a network device. Each device must have at least one address -+to use the corresponding protocol. It is possible to have several -+different addresses attached to one device. These addresses are not -+discriminated, so that the term -+.B alias -+is not quite appropriate for them and we do not use it in this document. -+.sp -+The -+.B ip addr -+command displays addresses and their properties, adds new addresses -+and deletes old ones. -+ -+.SS ip address add - add new protocol address. -+ -+.TP -+.BI dev " NAME" -+the name of the device to add the address to. -+ -+.TP -+.BI local " ADDRESS " (default) -+the address of the interface. The format of the address depends -+on the protocol. It is a dotted quad for IP and a sequence of -+hexadecimal halfwords separated by colons for IPv6. The -+.I ADDRESS -+may be followed by a slash and a decimal number which encodes -+the network prefix length. -+ -+.TP -+.BI peer " ADDRESS" -+the address of the remote endpoint for pointopoint interfaces. -+Again, the -+.I ADDRESS -+may be followed by a slash and a decimal number, encoding the network -+prefix length. If a peer address is specified, the local address -+cannot have a prefix length. The network prefix is associated -+with the peer rather than with the local address. -+ -+.TP -+.BI broadcast " ADDRESS" -+the broadcast address on the interface. -+.sp -+It is possible to use the special symbols -+.B '+' -+and -+.B '-' -+instead of the broadcast address. In this case, the broadcast address -+is derived by setting/resetting the host bits of the interface prefix. -+ -+.TP -+.BI label " NAME" -+Each address may be tagged with a label string. -+In order to preserve compatibility with Linux-2.0 net aliases, -+this string must coincide with the name of the device or must be prefixed -+with the device name followed by colon. -+ -+.TP -+.BI scope " SCOPE_VALUE" -+the scope of the area where this address is valid. -+The available scopes are listed in file -+.BR "/etc/iproute2/rt_scopes" . -+Predefined scope values are: -+ -+.in +8 -+.B global -+- the address is globally valid. -+.sp -+.B site -+- (IPv6 only) the address is site local, i.e. it is -+valid inside this site. -+.sp -+.B link -+- the address is link local, i.e. it is valid only on this device. -+.sp -+.B host -+- the address is valid only inside this host. -+.in -8 -+ -+.SS ip address delete - delete protocol address -+.B Arguments: -+coincide with the arguments of -+.B ip addr add. -+The device name is a required argument. The rest are optional. -+If no arguments are given, the first address is deleted. -+ -+.SS ip address show - look at protocol addresses -+ -+.TP -+.BI dev " NAME " (default) -+name of device. -+ -+.TP -+.BI scope " SCOPE_VAL" -+only list addresses with this scope. -+ -+.TP -+.BI to " PREFIX" -+only list addresses matching this prefix. -+ -+.TP -+.BI label " PATTERN" -+only list addresses with labels matching the -+.IR "PATTERN" . -+.I PATTERN -+is a usual shell style pattern. -+ -+.TP -+.BR dynamic " and " permanent -+(IPv6 only) only list addresses installed due to stateless -+address configuration or only list permanent (not dynamic) -+addresses. -+ -+.TP -+.B tentative -+(IPv6 only) only list addresses which did not pass duplicate -+address detection. -+ -+.TP -+.B deprecated -+(IPv6 only) only list deprecated addresses. -+ -+.TP -+.BR primary " and " secondary -+only list primary (or secondary) addresses. -+ -+.SS ip address flush - flush protocol addresses -+This command flushes the protocol addresses selected by some criteria. -+ -+.PP -+This command has the same arguments as -+.B show. -+The difference is that it does not run when no arguments are given. -+ -+.PP -+.B Warning: -+This command (and other -+.B flush -+commands described below) is pretty dangerous. If you make a mistake, -+it will not forgive it, but will cruelly purge all the addresses. -+ -+.PP -+With the -+.B -statistics -+option, the command becomes verbose. It prints out the number of deleted -+addresses and the number of rounds made to flush the address list. If -+this option is given twice, -+.B ip addr flush -+also dumps all the deleted addresses in the format described in the -+previous subsection. -+ -+.SH ip neighbour - neighbour/arp tables management. -+ -+.B neighbour -+objects establish bindings between protocol addresses and -+link layer addresses for hosts sharing the same link. -+Neighbour entries are organized into tables. The IPv4 neighbour table -+is known by another name - the ARP table. -+ -+.P -+The corresponding commands display neighbour bindings -+and their properties, add new neighbour entries and delete old ones. -+ -+.SS ip neighbour add - add a new neighbour entry -+.SS ip neighbour change - change an existing entry -+.SS ip neighbour replace - add a new entry or change an existing one -+ -+These commands create new neighbour records or update existing ones. -+ -+.TP -+.BI to " ADDRESS " (default) -+the protocol address of the neighbour. It is either an IPv4 or IPv6 address. -+ -+.TP -+.BI dev " NAME" -+the interface to which this neighbour is attached. -+ -+.TP -+.BI lladdr " LLADDRESS" -+the link layer address of the neighbour. -+.I LLADDRESS -+can also be -+.BR "null" . -+ -+.TP -+.BI nud " NUD_STATE" -+the state of the neighbour entry. -+.B nud -+is an abbreviation for 'Neigh bour Unreachability Detection'. -+The state can take one of the following values: -+ -+.in +8 -+.B permanent -+- the neighbour entry is valid forever and can be only -+be removed administratively. -+.sp -+ -+.B noarp -+- the neighbour entry is valid. No attempts to validate -+this entry will be made but it can be removed when its lifetime expires. -+.sp -+ -+.B reachable -+- the neighbour entry is valid until the reachability -+timeout expires. -+.sp -+ -+.B stale -+- the neighbour entry is valid but suspicious. -+This option to -+.B ip neigh -+does not change the neighbour state if it was valid and the address -+is not changed by this command. -+.in -8 -+ -+.SS ip neighbour delete - delete a neighbour entry -+This command invalidates a neighbour entry. -+ -+.PP -+The arguments are the same as with -+.BR "ip neigh add" , -+except that -+.B lladdr -+and -+.B nud -+are ignored. -+ -+.PP -+.B Warning: -+Attempts to delete or manually change a -+.B noarp -+entry created by the kernel may result in unpredictable behaviour. -+Particularly, the kernel may try to resolve this address even -+on a -+.B NOARP -+interface or if the address is multicast or broadcast. -+ -+.SS ip neighbour show - list neighbour entries -+ -+This commands displays neighbour tables. -+ -+.TP -+.BI to " ADDRESS " (default) -+the prefix selecting the neighbours to list. -+ -+.TP -+.BI dev " NAME" -+only list the neighbours attached to this device. -+ -+.TP -+.B unused -+only list neighbours which are not currently in use. -+ -+.TP -+.BI nud " NUD_STATE" -+only list neighbour entries in this state. -+.I NUD_STATE -+takes values listed below or the special value -+.B all -+which means all states. This option may occur more than once. -+If this option is absent, -+.B ip -+lists all entries except for -+.B none -+and -+.BR "noarp" . -+ -+.SS ip neighbour flush - flush neighbour entries -+This command flushes neighbour tables, selecting -+entries to flush by some criteria. -+ -+.PP -+This command has the same arguments as -+.B show. -+The differences are that it does not run when no arguments are given, -+and that the default neighbour states to be flushed do not include -+.B permanent -+and -+.BR "noarp" . -+ -+.PP -+With the -+.B -statistics -+option, the command becomes verbose. It prints out the number of -+deleted neighbours and the number of rounds made to flush the -+neighbour table. If the option is given -+twice, -+.B ip neigh flush -+also dumps all the deleted neighbours. -+ -+.SH ip route - routing table management -+Manipulate route entries in the kernel routing tables keep -+information about paths to other networked nodes. -+.sp -+.B Route types: -+ -+.in +8 -+.B unicast -+- the route entry describes real paths to the destinations covered -+by the route prefix. -+ -+.sp -+.B unreachable -+- these destinations are unreachable. Packets are discarded and the -+ICMP message -+.I host unreachable -+is generated. -+The local senders get an -+.I EHOSTUNREACH -+error. -+ -+.sp -+.B blackhole -+- these destinations are unreachable. Packets are discarded silently. -+The local senders get an -+.I EINVAL -+error. -+ -+.sp -+.B prohibit -+- these destinations are unreachable. Packets are discarded and the -+ICMP message -+.I communication administratively prohibited -+is generated. The local senders get an -+.I EACCES -+error. -+ -+.sp -+.B local -+- the destinations are assigned to this host. The packets are looped -+back and delivered locally. -+ -+.sp -+.B broadcast -+- the destinations are broadcast addresses. The packets are sent as -+link broadcasts. -+ -+.sp -+.B throw -+- a special control route used together with policy rules. If such a -+route is selected, lookup in this table is terminated pretending that -+no route was found. Without policy routing it is equivalent to the -+absence of the route in the routing table. The packets are dropped -+and the ICMP message -+.I net unreachable -+is generated. The local senders get an -+.I ENETUNREACH -+error. -+ -+.sp -+.B nat -+- a special NAT route. Destinations covered by the prefix -+are considered to be dummy (or external) addresses which require translation -+to real (or internal) ones before forwarding. The addresses to translate to -+are selected with the attribute -+.BR "via" . -+ -+.sp -+.B anycast -+.RI "- " "not implemented" -+the destinations are -+.I anycast -+addresses assigned to this host. They are mainly equivalent -+to -+.B local -+with one difference: such addresses are invalid when used -+as the source address of any packet. -+ -+.sp -+.B multicast -+- a special type used for multicast routing. It is not present in -+normal routing tables. -+.in -8 -+ -+.P -+.B Route tables: -+Linux-2.x can pack routes into several routing -+tables identified by a number in the range from 1 to 255 or by -+name from the file -+.B /etc/iproute2/rt_tables -+. By default all normal routes are inserted into the -+.B main -+table (ID 254) and the kernel only uses this table when calculating routes. -+ -+.sp -+Actually, one other table always exists, which is invisible but -+even more important. It is the -+.B local -+table (ID 255). This table -+consists of routes for local and broadcast addresses. The kernel maintains -+this table automatically and the administrator usually need not modify it -+or even look at it. -+ -+The multiple routing tables enter the game when -+.I policy routing -+is used. -+ -+.SS ip route add - add new route -+.SS ip route change - change route -+.SS ip route replace - change or add new one -+ -+.TP -+.BI to " TYPE PREFIX " (default) -+the destination prefix of the route. If -+.I TYPE -+is omitted, -+.B ip -+assumes type -+.BR "unicast" . -+Other values of -+.I TYPE -+are listed above. -+.I PREFIX -+is an IP or IPv6 address optionally followed by a slash and the -+prefix length. If the length of the prefix is missing, -+.B ip -+assumes a full-length host route. There is also a special -+.I PREFIX -+.B default -+- which is equivalent to IP -+.B 0/0 -+or to IPv6 -+.BR "::/0" . -+ -+.TP -+.BI tos " TOS" -+.TP -+.BI dsfield " TOS" -+the Type Of Service (TOS) key. This key has no associated mask and -+the longest match is understood as: First, compare the TOS -+of the route and of the packet. If they are not equal, then the packet -+may still match a route with a zero TOS. -+.I TOS -+is either an 8 bit hexadecimal number or an identifier -+from -+.BR "/etc/iproute2/rt_dsfield" . -+ -+.TP -+.BI metric " NUMBER" -+.TP -+.BI preference " NUMBER" -+the preference value of the route. -+.I NUMBER -+is an arbitrary 32bit number. -+ -+.TP -+.BI table " TABLEID" -+the table to add this route to. -+.I TABLEID -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_tables" . -+If this parameter is omitted, -+.B ip -+assumes the -+.B main -+table, with the exception of -+.BR local " , " broadcast " and " nat -+routes, which are put into the -+.B local -+table by default. -+ -+.TP -+.BI dev " NAME" -+the output device name. -+ -+.TP -+.BI via " ADDRESS" -+the address of the nexthop router. Actually, the sense of this field -+depends on the route type. For normal -+.B unicast -+routes it is either the true next hop router or, if it is a direct -+route installed in BSD compatibility mode, it can be a local address -+of the interface. For NAT routes it is the first address of the block -+of translated IP destinations. -+ -+.TP -+.BI src " ADDRESS" -+the source address to prefer when sending to the destinations -+covered by the route prefix. -+ -+.TP -+.BI realm " REALMID" -+the realm to which this route is assigned. -+.I REALMID -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_realms" . -+ -+.TP -+.BI mtu " MTU" -+.TP -+.BI "mtu lock" " MTU" -+the MTU along the path to the destination. If the modifier -+.B lock -+is not used, the MTU may be updated by the kernel due to -+Path MTU Discovery. If the modifier -+.B lock -+is used, no path MTU discovery will be tried, all packets -+will be sent without the DF bit in IPv4 case or fragmented -+to MTU for IPv6. -+ -+.TP -+.BI window " NUMBER" -+the maximal window for TCP to advertise to these destinations, -+measured in bytes. It limits maximal data bursts that our TCP -+peers are allowed to send to us. -+ -+.TP -+.BI rtt " NUMBER" -+the initial RTT ('Round Trip Time') estimate. -+ -+.TP -+.BI rttvar " NUMBER " "(2.3.15+ only)" -+the initial RTT variance estimate. -+ -+.TP -+.BI ssthresh " NUMBER " "(2.3.15+ only)" -+an estimate for the initial slow start threshold. -+ -+.TP -+.BI cwnd " NUMBER " "(2.3.15+ only)" -+the clamp for congestion window. It is ignored if the -+.B lock -+flag is not used. -+ -+.TP -+.BI advmss " NUMBER " "(2.3.15+ only)" -+the MSS ('Maximal Segment Size') to advertise to these -+destinations when establishing TCP connections. If it is not given, -+Linux uses a default value calculated from the first hop device MTU. -+(If the path to these destination is asymmetric, this guess may be wrong.) -+ -+.TP -+.BI reordering " NUMBER " "(2.3.15+ only)" -+Maximal reordering on the path to this destination. -+If it is not given, Linux uses the value selected with -+.B sysctl -+variable -+.BR "net/ipv4/tcp_reordering" . -+ -+.TP -+.BI nexthop " NEXTHOP" -+the nexthop of a multipath route. -+.I NEXTHOP -+is a complex value with its own syntax similar to the top level -+argument lists: -+ -+.in +8 -+.BI via " ADDRESS" -+- is the nexthop router. -+.sp -+ -+.BI dev " NAME" -+- is the output device. -+.sp -+ -+.BI weight " NUMBER" -+- is a weight for this element of a multipath -+route reflecting its relative bandwidth or quality. -+.in -8 -+ -+.TP -+.BI scope " SCOPE_VAL" -+the scope of the destinations covered by the route prefix. -+.I SCOPE_VAL -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_scopes" . -+If this parameter is omitted, -+.B ip -+assumes scope -+.B global -+for all gatewayed -+.B unicast -+routes, scope -+.B link -+for direct -+.BR unicast " and " broadcast -+routes and scope -+.BR host " for " local -+routes. -+ -+.TP -+.BI protocol " RTPROTO" -+the routing protocol identifier of this route. -+.I RTPROTO -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_protos" . -+If the routing protocol ID is not given, -+.B ip assumes protocol -+.B boot -+(i.e. it assumes the route was added by someone who doesn't -+understand what they are doing). Several protocol values have -+a fixed interpretation. -+Namely: -+ -+.in +8 -+.B redirect -+- the route was installed due to an ICMP redirect. -+.sp -+ -+.B kernel -+- the route was installed by the kernel during autoconfiguration. -+.sp -+ -+.B boot -+- the route was installed during the bootup sequence. -+If a routing daemon starts, it will purge all of them. -+.sp -+ -+.B static -+- the route was installed by the administrator -+to override dynamic routing. Routing daemon will respect them -+and, probably, even advertise them to its peers. -+.sp -+ -+.B ra -+- the route was installed by Router Discovery protocol. -+.in -8 -+ -+.sp -+The rest of the values are not reserved and the administrator is free -+to assign (or not to assign) protocol tags. -+ -+.TP -+.B onlink -+pretend that the nexthop is directly attached to this link, -+even if it does not match any interface prefix. -+ -+.TP -+.B equalize -+allow packet by packet randomization on multipath routes. -+Without this modifier, the route will be frozen to one selected -+nexthop, so that load splitting will only occur on per-flow base. -+.B equalize -+only works if the kernel is patched. -+ -+.SS ip route delete - delete route -+ -+.B ip route del -+has the same arguments as -+.BR "ip route add" , -+but their semantics are a bit different. -+ -+Key values -+.RB "(" to ", " tos ", " preference " and " table ")" -+select the route to delete. If optional attributes are present, -+.B ip -+verifies that they coincide with the attributes of the route to delete. -+If no route with the given key and attributes was found, -+.B ip route del -+fails. -+ -+.SS ip route show - list routes -+the command displays the contents of the routing tables or the route(s) -+selected by some criteria. -+ -+.TP -+.BI to " SELECTOR " (default) -+only select routes from the given range of destinations. -+.I SELECTOR -+consists of an optional modifier -+.RB "(" root ", " match " or " exact ")" -+and a prefix. -+.BI root " PREFIX" -+selects routes with prefixes not shorter than -+.IR PREFIX "." -+F.e. -+.BI root " 0/0" -+selects the entire routing table. -+.BI match " PREFIX" -+selects routes with prefixes not longer than -+.IR PREFIX "." -+F.e. -+.BI match " 10.0/16" -+selects -+.IR 10.0/16 "," -+.IR 10/8 " and " 0/0 , -+but it does not select -+.IR 10.1/16 " and " 10.0.0/24 . -+And -+.BI exact " PREFIX" -+(or just -+.IR PREFIX ")" -+selects routes with this exact prefix. If neither of these options -+are present, -+.B ip -+assumes -+.BI root " 0/0" -+i.e. it lists the entire table. -+ -+.TP -+.BI tos " TOS" -+.BI dsfield " TOS" -+only select routes with the given TOS. -+ -+.TP -+.BI table " TABLEID" -+show the routes from this table(s). The default setting is to show -+.BR table main "." -+.I TABLEID -+may either be the ID of a real table or one of the special values: -+.sp -+.in +8 -+.B all -+- list all of the tables. -+.sp -+.B cache -+- dump the routing cache. -+.in -8 -+ -+.TP -+.B cloned -+.TP -+.B cached -+list cloned routes i.e. routes which were dynamically forked from -+other routes because some route attribute (f.e. MTU) was updated. -+Actually, it is equivalent to -+.BR "table cache" "." -+ -+.TP -+.BI from " SELECTOR" -+the same syntax as for -+.BR to "," -+but it binds the source address range rather than destinations. -+Note that the -+.B from -+option only works with cloned routes. -+ -+.TP -+.BI protocol " RTPROTO" -+only list routes of this protocol. -+ -+.TP -+.BI scope " SCOPE_VAL" -+only list routes with this scope. -+ -+.TP -+.BI type " TYPE" -+only list routes of this type. -+ -+.TP -+.BI dev " NAME" -+only list routes going via this device. -+ -+.TP -+.BI via " PREFIX" -+only list routes going via the nexthop routers selected by -+.IR PREFIX "." -+ -+.TP -+.BI src " PREFIX" -+only list routes with preferred source addresses selected -+by -+.IR PREFIX "." -+ -+.TP -+.BI realm " REALMID" -+.TP -+.BI realms " FROMREALM/TOREALM" -+only list routes with these realms. -+ -+.SS ip route flush - flush routing tables -+this command flushes routes selected by some criteria. -+ -+.sp -+The arguments have the same syntax and semantics as the arguments of -+.BR "ip route show" , -+but routing tables are not listed but purged. The only difference is -+the default action: -+.B show -+dumps all the IP main routing table but -+.B flush -+prints the helper page. -+ -+.sp -+With the -+.B -statistics -+option, the command becomes verbose. It prints out the number of -+deleted routes and the number of rounds made to flush the routing -+table. If the option is given -+twice, -+.B ip route flush -+also dumps all the deleted routes in the format described in the -+previous subsection. -+ -+.SS ip route get - get a single route -+this command gets a single route to a destination and prints its -+contents exactly as the kernel sees it. -+ -+.TP -+.BI to " ADDRESS " (default) -+the destination address. -+ -+.TP -+.BI from " ADDRESS" -+the source address. -+ -+.TP -+.BI tos " TOS" -+.TP -+.BI dsfield " TOS" -+the Type Of Service. -+ -+.TP -+.BI iif " NAME" -+the device from which this packet is expected to arrive. -+ -+.TP -+.BI oif " NAME" -+force the output device on which this packet will be routed. -+ -+.TP -+.B connected -+if no source address -+.RB "(option " from ")" -+was given, relookup the route with the source set to the preferred -+address received from the first lookup. -+If policy routing is used, it may be a different route. -+ -+.P -+Note that this operation is not equivalent to -+.BR "ip route show" . -+.B show -+shows existing routes. -+.B get -+resolves them and creates new clones if necessary. Essentially, -+.B get -+is equivalent to sending a packet along this path. -+If the -+.B iif -+argument is not given, the kernel creates a route -+to output packets towards the requested destination. -+This is equivalent to pinging the destination -+with a subsequent -+.BR "ip route ls cache" , -+however, no packets are actually sent. With the -+.B iif -+argument, the kernel pretends that a packet arrived from this interface -+and searches for a path to forward the packet. -+ -+.SH ip rule - routing policy database management -+ -+.BR "Rule" s -+in the routing policy database control the route selection algorithm. -+ -+.P -+Classic routing algorithms used in the Internet make routing decisions -+based only on the destination address of packets (and in theory, -+but not in practice, on the TOS field). -+ -+.P -+In some circumstances we want to route packets differently depending not only -+on destination addresses, but also on other packet fields: source address, -+IP protocol, transport protocol ports or even packet payload. -+This task is called 'policy routing'. -+ -+.P -+To solve this task, the conventional destination based routing table, ordered -+according to the longest match rule, is replaced with a 'routing policy -+database' (or RPDB), which selects routes by executing some set of rules. -+ -+.P -+Each policy routing rule consists of a -+.B selector -+and an -+.B action predicate. -+The RPDB is scanned in the order of increasing priority. The selector -+of each rule is applied to {source address, destination address, incoming -+interface, tos, fwmark} and, if the selector matches the packet, -+the action is performed. The action predicate may return with success. -+In this case, it will either give a route or failure indication -+and the RPDB lookup is terminated. Otherwise, the RPDB program -+continues on the next rule. -+ -+.P -+Semantically, natural action is to select the nexthop and the output device. -+ -+.P -+At startup time the kernel configures the default RPDB consisting of three -+rules: -+ -+.TP -+1. -+Priority: 0, Selector: match anything, Action: lookup routing -+table -+.B local -+(ID 255). -+The -+.B local -+table is a special routing table containing -+high priority control routes for local and broadcast addresses. -+.sp -+Rule 0 is special. It cannot be deleted or overridden. -+ -+.TP -+2. -+Priority: 32766, Selector: match anything, Action: lookup routing -+table -+.B main -+(ID 254). -+The -+.B main -+table is the normal routing table containing all non-policy -+routes. This rule may be deleted and/or overridden with other -+ones by the administrator. -+ -+.TP -+3. -+Priority: 32767, Selector: match anything, Action: lookup routing -+table -+.B default -+(ID 253). -+The -+.B default -+table is empty. It is reserved for some post-processing if no previous -+default rules selected the packet. -+This rule may also be deleted. -+ -+.P -+Each RPDB entry has additional -+attributes. F.e. each rule has a pointer to some routing -+table. NAT and masquerading rules have an attribute to select new IP -+address to translate/masquerade. Besides that, rules have some -+optional attributes, which routes have, namely -+.BR "realms" . -+These values do not override those contained in the routing tables. They -+are only used if the route did not select any attributes. -+ -+.sp -+The RPDB may contain rules of the following types: -+ -+.in +8 -+.B unicast -+- the rule prescribes to return the route found -+in the routing table referenced by the rule. -+ -+.B blackhole -+- the rule prescribes to silently drop the packet. -+ -+.B unreachable -+- the rule prescribes to generate a 'Network is unreachable' error. -+ -+.B prohibit -+- the rule prescribes to generate 'Communication is administratively -+prohibited' error. -+ -+.B nat -+- the rule prescribes to translate the source address -+of the IP packet into some other value. -+.in -8 -+ -+.SS ip rule add - insert a new rule -+.SS ip rule delete - delete a rule -+ -+.TP -+.BI type " TYPE " (default) -+the type of this rule. The list of valid types was given in the previous -+subsection. -+ -+.TP -+.BI from " PREFIX" -+select the source prefix to match. -+ -+.TP -+.BI to " PREFIX" -+select the destination prefix to match. -+ -+.TP -+.BI iif " NAME" -+select the incoming device to match. If the interface is loopback, -+the rule only matches packets originating from this host. This means -+that you may create separate routing tables for forwarded and local -+packets and, hence, completely segregate them. -+ -+.TP -+.BI tos " TOS" -+.TP -+.BI dsfield " TOS" -+select the TOS value to match. -+ -+.TP -+.BI fwmark " MARK" -+select the -+.B fwmark -+value to match. -+ -+.TP -+.BI priority " PREFERENCE" -+the priority of this rule. Each rule should have an explicitly -+set -+.I unique -+priority value. -+ -+.TP -+.BI table " TABLEID" -+the routing table identifier to lookup if the rule selector matches. -+ -+.TP -+.BI realms " FROM/TO" -+Realms to select if the rule matched and the routing table lookup -+succeeded. Realm -+.I TO -+is only used if the route did not select any realm. -+ -+.TP -+.BI nat " ADDRESS" -+The base of the IP address block to translate (for source addresses). -+The -+.I ADDRESS -+may be either the start of the block of NAT addresses (selected by NAT -+routes) or a local host address (or even zero). -+In the last case the router does not translate the packets, but -+masquerades them to this address. -+ -+.B Warning: -+Changes to the RPDB made with these commands do not become active -+immediately. It is assumed that after a script finishes a batch of -+updates, it flushes the routing cache with -+.BR "ip route flush cache" . -+ -+.SS ip rule show - list rules -+This command has no arguments. -+ -+.SH ip maddress - multicast addresses management -+ -+.B maddress -+objects are multicast addresses. -+ -+.SS ip maddress show - list multicast addresses -+ -+.TP -+.BI dev " NAME " (default) -+the device name. -+ -+.SS ip maddress add - add a multicast address -+.SS ip maddress delete - delete a multicast address -+these commands attach/detach a static link layer multicast address -+to listen on the interface. -+Note that it is impossible to join protocol multicast groups -+statically. This command only manages link layer addresses. -+ -+.TP -+.BI address " LLADDRESS " (default) -+the link layer multicast address. -+ -+.TP -+.BI dev " NAME" -+the device to join/leave this multicast address. -+ -+.SH ip mroute - multicast routing cache management -+.B mroute -+objects are multicast routing cache entries created by a user level -+mrouting daemon (f.e. -+.B pimd -+or -+.B mrouted -+). -+ -+Due to the limitations of the current interface to the multicast routing -+engine, it is impossible to change -+.B mroute -+objects administratively, so we may only display them. This limitation -+will be removed in the future. -+ -+.SS ip mroute show - list mroute cache entries -+ -+.TP -+.BI to " PREFIX " (default) -+the prefix selecting the destination multicast addresses to list. -+ -+.TP -+.BI iif " NAME" -+the interface on which multicast packets are received. -+ -+.TP -+.BI from " PREFIX" -+the prefix selecting the IP source addresses of the multicast route. -+ -+.SH ip tunnel - tunnel configuration -+.B tunnel -+objects are tunnels, encapsulating packets in IPv4 packets and then -+sending them over the IP infrastructure. -+ -+.SS ip tunnel add - add a new tunnel -+.SS ip tunnel change - change an existing tunnel -+.SS ip tunnel delete - destroy a tunnel -+ -+.TP -+.BI name " NAME " (default) -+select the tunnel device name. -+ -+.TP -+.BI mode " MODE" -+set the tunnel mode. Three modes are currently available: -+.BR ipip ", " sit " and " gre "." -+ -+.TP -+.BI remote " ADDRESS" -+set the remote endpoint of the tunnel. -+ -+.TP -+.BI local " ADDRESS" -+set the fixed local address for tunneled packets. -+It must be an address on another interface of this host. -+ -+.TP -+.BI ttl " N" -+set a fixed TTL -+.I N -+on tunneled packets. -+.I N -+is a number in the range 1--255. 0 is a special value -+meaning that packets inherit the TTL value. -+The default value is: -+.BR "inherit" . -+ -+.TP -+.BI tos " T" -+.TP -+.BI dsfield " T" -+set a fixed TOS -+.I T -+on tunneled packets. -+The default value is: -+.BR "inherit" . -+ -+.TP -+.BI dev " NAME" -+bind the tunnel to the device -+.I NAME -+so that tunneled packets will only be routed via this device and will -+not be able to escape to another device when the route to endpoint -+changes. -+ -+.TP -+.B nopmtudisc -+disable Path MTU Discovery on this tunnel. -+It is enabled by default. Note that a fixed ttl is incompatible -+with this option: tunnelling with a fixed ttl always makes pmtu -+discovery. -+ -+.TP -+.BI key " K" -+.TP -+.BI ikey " K" -+.TP -+.BI okey " K" -+.RB ( " only GRE tunnels " ) -+use keyed GRE with key -+.IR K ". " K -+is either a number or an IP address-like dotted quad. -+The -+.B key -+parameter sets the key to use in both directions. -+The -+.BR ikey " and " okey -+parameters set different keys for input and output. -+ -+.TP -+.BR csum ", " icsum ", " ocsum -+.RB ( " only GRE tunnels " ) -+generate/require checksums for tunneled packets. -+The -+.B ocsum -+flag calculates checksums for outgoing packets. -+The -+.B icsum -+flag requires that all input packets have the correct -+checksum. The -+.B csum -+flag is equivalent to the combination -+.BR "icsum ocsum" . -+ -+.TP -+.BR seq ", " iseq ", " oseq -+.RB ( " only GRE tunnels " ) -+serialize packets. -+The -+.B oseq -+flag enables sequencing of outgoing packets. -+The -+.B iseq -+flag requires that all input packets are serialized. -+The -+.B seq -+flag is equivalent to the combination -+.BR "iseq oseq" . -+.B It isn't work. Don't use it. -+ -+.SS ip tunnel show - list tunnels -+This command has no arguments. -+ -+.SH ip monitor and rtmon - state monitoring -+ -+The -+.B ip -+utility can monitor the state of devices, addresses -+and routes continuously. This option has a slightly different format. -+Namely, the -+.B monitor -+command is the first in the command line and then the object list follows: -+ -+.BR "ip monitor" " [ " all " |" -+.IR LISTofOBJECTS " ]" -+ -+.I OBJECT-LIST -+is the list of object types that we want to monitor. -+It may contain -+.BR link ", " address " and " route "." -+If no -+.B file -+argument is given, -+.B ip -+opens RTNETLINK, listens on it and dumps state changes in the format -+described in previous sections. -+ -+.P -+If a file name is given, it does not listen on RTNETLINK, -+but opens the file containing RTNETLINK messages saved in binary format -+and dumps them. Such a history file can be generated with the -+.B rtmon -+utility. This utility has a command line syntax similar to -+.BR "ip monitor" . -+Ideally, -+.B rtmon -+should be started before the first network configuration command -+is issued. F.e. if you insert: -+.sp -+.in +8 -+rtmon file /var/log/rtmon.log -+.in -8 -+.sp -+in a startup script, you will be able to view the full history -+later. -+ -+.P -+Certainly, it is possible to start -+.B rtmon -+at any time. -+It prepends the history with the state snapshot dumped at the moment -+of starting. -+ -+.SH HISTORY -+ -+.B ip -+was written by Alexey N. Kuznetsov and added in Linux 2.2. -+.SH SEE ALSO -+.BR tc (8) -+.br -+.RB "IP Command reference " ip-cref.ps -+.br -+.RB "IP tunnels " ip-cref.ps -+ -+.SH AUTHOR -+ -+Manpage maintained by Michail Litvak -diff -Naur iproute2-orig/debian/manpages/old/ip.8 iproute2/debian/manpages/old/ip.8 ---- iproute2-orig/debian/manpages/old/ip.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/ip.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,1809 @@ -+.TH IP 8 "17 January 2002" "iproute2" "Linux" -+.SH NAME -+ip \- show / manipulate routing, devices, policy routing and tunnels -+.SH SYNOPSIS -+ -+.ad l -+.in +8 -+.ti -8 -+.B ip -+.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " -+.BR help " }" -+.sp -+ -+.ti -8 -+.IR OBJECT " := { " -+.BR link " | " addr " | " route " | " rule " | " neigh " | " tunnel " | "\ -+maddr " | " mroute " | " monitor " }" -+.sp -+ -+.ti -8 -+.IR OPTIONS " := { " -+\fB\-V\fR[\fIersion\fR] | -+\fB\-s\fR[\fItatistics\fR] | -+\fB\-r\fR[\fIesolve\fR] | -+\fB\-f\fR[\fIamily\fR] { -+.BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | " -+\fB\-o\fR[\fIneline\fR] } -+ -+.ti -8 -+.BI "ip link set " DEVICE -+.RB "{ " up " | " down " | " arp " { " on " | " off " } |" -+.br -+.BR promisc " { " on " | " off " } |" -+.br -+.BR allmulti " { " on " | " off " } |" -+.br -+.BR dynamic " { " on " | " off " } |" -+.br -+.BR multicast " { " on " | " off " } |" -+.br -+.B txqueuelen -+.IR PACKETS " |" -+.br -+.B name -+.IR NEWNAME " |" -+.br -+.B address -+.IR LLADDR " |" -+.B broadcast -+.IR LLADDR " |" -+.br -+.B mtu -+.IR MTU " }" -+ -+.ti -8 -+.B ip link show -+.RI "[ " DEVICE " ]" -+ -+.ti -8 -+.BR "ip addr" " { " add " | " del " } " -+.IB IFADDR " dev " STRING -+ -+.ti -8 -+.BR "ip addr" " { " show " | " flush " } [ " dev -+.IR STRING " ] [ " -+.B scope -+.IR SCOPE-ID " ] [ " -+.B to -+.IR PREFIX " ] [ " FLAG-LIST " ] [ " -+.B label -+.IR PATTERN " ]" -+ -+.ti -8 -+.IR IFADDR " := " PREFIX " | " ADDR -+.B peer -+.IR PREFIX " [ " -+.B broadcast -+.IR ADDR " ] [ " -+.B anycast -+.IR ADDR " ] [ " -+.B label -+.IR STRING " ] [ " -+.B scope -+.IR SCOPE-ID " ]" -+ -+.ti -8 -+.IR SCOPE-ID " := " -+.RB "[ " host " | " link " | " global " | " -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR FLAG-LIST " := [ " FLAG-LIST " ] " FLAG -+ -+.ti -8 -+.IR FLAG " := " -+.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\ -+tentative " | " deprecated " ]" -+ -+.ti -8 -+.BR "ip route" " { " -+.BR list " | " flush " } " -+.I SELECTOR -+ -+.ti -8 -+.B ip route get -+.IR ADDRESS " [ " -+.BI from " ADDRESS " iif " STRING" -+.RB " ] [ " oif -+.IR STRING " ] [ " -+.B tos -+.IR TOS " ]" -+ -+.ti -8 -+.BR "ip route" " { " add " | " del " | " change " | " append " | "\ -+replace " | " monitor " } " -+.I ROUTE -+ -+.ti -8 -+.IR SELECTOR " := " -+.RB "[ " root -+.IR PREFIX " ] [ " -+.B match -+.IR PREFIX " ] [ " -+.B exact -+.IR PREFIX " ] [ " -+.B table -+.IR TABLE_ID " ] [ " -+.B proto -+.IR RTPROTO " ] [ " -+.B type -+.IR TYPE " ] [ " -+.B scope -+.IR SCOPE " ]" -+ -+.ti -8 -+.IR ROUTE " := " NODE_SPEC " [ " INFO_SPEC " ]" -+ -+.ti -8 -+.IR NODE_SPEC " := [ " TYPE " ] " PREFIX " [" -+.B tos -+.IR TOS " ] [ " -+.B table -+.IR TABLE_ID " ] [ " -+.B proto -+.IR RTPROTO " ] [ " -+.B scope -+.IR SCOPE " ] [ " -+.B metric -+.IR METRIC " ]" -+ -+.ti -8 -+.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " [" -+.B nexthop -+.IR NH " ] ..." -+ -+.ti -8 -+.IR NH " := [ " -+.B via -+.IR ADDRESS " ] [ " -+.B dev -+.IR STRING " ] [ " -+.B weight -+.IR NUMBER " ] " NHFLAGS -+ -+.ti -8 -+.IR OPTIONS " := " FLAGS " [ " -+.B mtu -+.IR NUMBER " ] [ " -+.B advmss -+.IR NUMBER " ] [ " -+.B rtt -+.IR NUMBER " ] [ " -+.B rttvar -+.IR NUMBER " ] [ " -+.B window -+.IR NUMBER " ] [ " -+.B cwnd -+.IR NUMBER " ] [ " -+.B ssthresh -+.IR REALM " ] [ " -+.B realms -+.IR REALM " ]" -+ -+.ti -8 -+.IR TYPE " := [ " -+.BR unicast " | " local " | " broadcast " | " multicast " | "\ -+throw " | " unreachable " | " prohibit " | " blackhole " | " nat " ]" -+ -+.ti -8 -+.IR TABLE_ID " := [ " -+.BR local "| " main " | " default " | " all " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR SCOPE " := [ " -+.BR host " | " link " | " global " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR FLAGS " := [ " -+.BR equalize " ]" -+ -+.ti -8 -+.IR NHFLAGS " := [ " -+.BR onlink " | " pervasive " ]" -+ -+.ti -8 -+.IR RTPROTO " := [ " -+.BR kernel " | " boot " | " static " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.B ip rule -+.RB " [ " list " | " add " | " del " ]" -+.I SELECTOR ACTION -+ -+.ti -8 -+.IR SELECTOR " := [ " -+.B from -+.IR PREFIX " ] [ " -+.B to -+.IR PREFIX " ] [ " -+.B tos -+.IR TOS " ] [ " -+.B fwmark -+.IR FWMARK " ] [ " -+.B dev -+.IR STRING " ] [ " -+.B pref -+.IR NUMBER " ]" -+ -+.ti -8 -+.IR ACTION " := [ " -+.B table -+.IR TABLE_ID " ] [ " -+.B nat -+.IR ADDRESS " ] [ " -+.BR prohibit " | " reject " | " unreachable " ] [ " realms -+.RI "[" SRCREALM "/]" DSTREALM " ]" -+ -+.ti -8 -+.IR TABLE_ID " := [ " -+.BR local " | " main " | " default " |" -+.IR NUMBER " ]" -+ -+.ti -8 -+.BR "ip neigh" " { " add " | " del " | " change " | " replace " } { " -+.IR ADDR " [ " -+.B lladdr -+.IR LLADDR " ] [ " -+.BR nud " { " permanent " | " noarp " | " stale " | " reachable " } ] | " proxy -+.IR ADDR " } [ " -+.B dev -+.IR DEV " ]" -+ -+.ti -8 -+.BR "ip neigh" " { " show " | " flush " } [ " to -+.IR PREFIX " ] [ " -+.B dev -+.IR DEV " ] [ " -+.B nud -+.IR STATE " ]" -+ -+.ti -8 -+.BR "ip tunnel" " { " add " | " change " | " del " | " show " }" -+.RI "[ " NAME " ]" -+.br -+.RB "[ " mode " { " ipip " | " gre " | " sit " } ]" -+.br -+.RB "[ " remote -+.IR ADDR " ] [ " -+.B local -+.IR ADDR " ]" -+.br -+.RB "[ [" i "|" o "]" seq " ] [ [" i "|" o "]" key -+.IR KEY " ] [ " -+.RB "[" i "|" o "]" csum " ] ]" -+.br -+.RB "[ " ttl -+.IR TTL " ] [ " -+.B tos -+.IR TOS " ] [ " -+.RB "[" no "]" pmtudisc " ]" -+.br -+.RB "[ " dev -+.IR PHYS_DEV " ]" -+ -+.ti -8 -+.IR ADDR " := { " IP_ADDRESS " |" -+.BR any " }" -+ -+.ti -8 -+.IR TOS " := { " NUMBER " |" -+.BR inherit " }" -+ -+.ti -8 -+.IR TTL " := { " 1 ".." 255 " | " -+.BR inherit " }" -+ -+.ti -8 -+.IR KEY " := { " DOTTED_QUAD " | " NUMBER " }" -+ -+.ti -8 -+.BR "ip maddr" " [ " add " | " del " ]" -+.IB MULTIADDR " dev " STRING -+ -+.ti -8 -+.BR "ip maddr show" " [ " dev -+.IR STRING " ]" -+ -+.ti -8 -+.BR "ip mroute show" " [" -+.IR PREFIX " ] [ " -+.B from -+.IR PREFIX " ] [ " -+.B iif -+.IR DEVICE " ]" -+ -+.ti -8 -+.BR "ip monitor" " [ " all " |" -+.IR LISTofOBJECTS " ]" -+.in -8 -+.ad b -+ -+.SH OPTIONS -+ -+.TP -+.BR "\-V" , " -Version" -+print the version of the -+.B ip -+utility and exit. -+ -+.TP -+.BR "\-s" , " \-stats", " \-statistics" -+output more information. If the option -+appears twice or more, the amount of information increases. -+As a rule, the information is statistics or some time values. -+ -+.TP -+.BR "\-f" , " \-family" -+followed by protocol family identifier: -+.BR "inet" , " inet6" -+or -+.B link -+,enforce the protocol family to use. If the option is not present, -+the protocol family is guessed from other arguments. If the rest -+of the command line does not give enough information to guess the -+family, -+.B ip -+falls back to the default one, usually -+.B inet -+or -+.BR "any" . -+.B link -+is a special family identifier meaning that no networking protocol -+is involved. -+ -+.TP -+.B \-4 -+shortcut for -+.BR "-family inet" . -+ -+.TP -+.B \-6 -+shortcut for -+.BR "\-family inet6" . -+ -+.TP -+.B \-0 -+shortcut for -+.BR "\-family link" . -+ -+.TP -+.BR "\-o" , " \-oneline" -+output each record on a single line, replacing line feeds -+with the -+.B '\' -+character. This is convenient when you want to count records -+with -+.BR wc (1) -+ or to -+.BR grep (1) -+the output. -+ -+.TP -+.BR "\-r" , " \-resolve" -+use the system's name resolver to print DNS names instead of -+host addresses. -+ -+.SH IP - COMMAND SYNTAX -+ -+.SS -+.I OBJECT -+ -+.TP -+.B link -+- network device. -+ -+.TP -+.B address -+- protocol (IP or IPv6) address on a device. -+.TP -+.B neighbour -+- ARP or NDISC cache entry. -+ -+.TP -+.B route -+- routing table entry. -+ -+.TP -+.B rule -+- rule in routing policy database. -+ -+.TP -+.B maddress -+- multicast address. -+ -+.TP -+.B mroute -+- multicast routing cache entry. -+ -+.TP -+.B tunnel -+- tunnel over IP. -+ -+.PP -+The names of all objects may be written in full or -+abbreviated form, f.e. -+.B address -+is abbreviated as -+.B addr -+or just -+.B a. -+ -+.SS -+.I COMMAND -+ -+Specifies the action to perform on the object. -+The set of possible actions depends on the object type. -+As a rule, it is possible to -+.BR "add" , " delete" -+and -+.B show -+(or -+.B list -+) objects, but some objects do not allow all of these operations -+or have some additional commands. The -+.B help -+command is available for all objects. It prints -+out a list of available commands and argument syntax conventions. -+.sp -+If no command is given, some default command is assumed. -+Usually it is -+.B list -+or, if the objects of this class cannot be listed, -+.BR "help" . -+ -+.SH ip link - network device configuration -+ -+.B link -+is a network device and the corresponding commands -+display and change the state of devices. -+ -+.SS ip link set - change device attributes -+ -+.TP -+.BI dev " NAME " (default) -+.I NAME -+specifies network device to operate on. -+ -+.TP -+.BR up " and " down -+change the state of the device to -+.B UP -+or -+.BR "DOWN" . -+ -+.TP -+.BR "arp on " or " arp off" -+change the -+.B NOARP -+flag on the device. -+ -+.TP -+.BR "multicast on " or " multicast off" -+change the -+.B MULTICAST -+flag on the device. -+ -+.TP -+.BR "dynamic on " or " dynamic off" -+change the -+.B DYNAMIC -+flag on the device. -+ -+.TP -+.BI name " NAME" -+change the name of the device. This operation is not -+recommended if the device is running or has some addresses -+already configured. -+ -+.TP -+.BI txqueuelen " NUMBER" -+.TP -+.BI txqlen " NUMBER" -+change the transmit queue length of the device. -+ -+.TP -+.BI mtu " NUMBER" -+change the -+.I MTU -+of the device. -+ -+.TP -+.BI address " LLADDRESS" -+change the station address of the interface. -+ -+.TP -+.BI broadcast " LLADDRESS" -+.TP -+.BI brd " LLADDRESS" -+.TP -+.BI peer " LLADDRESS" -+change the link layer broadcast address or the peer address when -+the interface is -+.IR "POINTOPOINT" . -+ -+.PP -+.B Warning: -+If multiple parameter changes are requested, -+.B ip -+aborts immediately after any of the changes have failed. -+This is the only case when -+.B ip -+can move the system to an unpredictable state. The solution -+is to avoid changing several parameters with one -+.B ip link set -+call. -+ -+.SS ip link show - display device attributes -+ -+.TP -+.BI dev " NAME " (default) -+.I NAME -+specifies the network device to show. -+If this argument is omitted all devices are listed. -+ -+.TP -+.B up -+only display running interfaces. -+ -+.SH ip address - protocol address management. -+ -+The -+.B address -+is a protocol (IP or IPv6) address attached -+to a network device. Each device must have at least one address -+to use the corresponding protocol. It is possible to have several -+different addresses attached to one device. These addresses are not -+discriminated, so that the term -+.B alias -+is not quite appropriate for them and we do not use it in this document. -+.sp -+The -+.B ip addr -+command displays addresses and their properties, adds new addresses -+and deletes old ones. -+ -+.SS ip address add - add new protocol address. -+ -+.TP -+.BI dev " NAME" -+the name of the device to add the address to. -+ -+.TP -+.BI local " ADDRESS " (default) -+the address of the interface. The format of the address depends -+on the protocol. It is a dotted quad for IP and a sequence of -+hexadecimal halfwords separated by colons for IPv6. The -+.I ADDRESS -+may be followed by a slash and a decimal number which encodes -+the network prefix length. -+ -+.TP -+.BI peer " ADDRESS" -+the address of the remote endpoint for pointopoint interfaces. -+Again, the -+.I ADDRESS -+may be followed by a slash and a decimal number, encoding the network -+prefix length. If a peer address is specified, the local address -+cannot have a prefix length. The network prefix is associated -+with the peer rather than with the local address. -+ -+.TP -+.BI broadcast " ADDRESS" -+the broadcast address on the interface. -+.sp -+It is possible to use the special symbols -+.B '+' -+and -+.B '-' -+instead of the broadcast address. In this case, the broadcast address -+is derived by setting/resetting the host bits of the interface prefix. -+ -+.TP -+.BI label " NAME" -+Each address may be tagged with a label string. -+In order to preserve compatibility with Linux-2.0 net aliases, -+this string must coincide with the name of the device or must be prefixed -+with the device name followed by colon. -+ -+.TP -+.BI scope " SCOPE_VALUE" -+the scope of the area where this address is valid. -+The available scopes are listed in file -+.BR "/etc/iproute2/rt_scopes" . -+Predefined scope values are: -+ -+.in +8 -+.B global -+- the address is globally valid. -+.sp -+.B site -+- (IPv6 only) the address is site local, i.e. it is -+valid inside this site. -+.sp -+.B link -+- the address is link local, i.e. it is valid only on this device. -+.sp -+.B host -+- the address is valid only inside this host. -+.in -8 -+ -+.SS ip address delete - delete protocol address -+.B Arguments: -+coincide with the arguments of -+.B ip addr add. -+The device name is a required argument. The rest are optional. -+If no arguments are given, the first address is deleted. -+ -+.SS ip address show - look at protocol addresses -+ -+.TP -+.BI dev " NAME " (default) -+name of device. -+ -+.TP -+.BI scope " SCOPE_VAL" -+only list addresses with this scope. -+ -+.TP -+.BI to " PREFIX" -+only list addresses matching this prefix. -+ -+.TP -+.BI label " PATTERN" -+only list addresses with labels matching the -+.IR "PATTERN" . -+.I PATTERN -+is a usual shell style pattern. -+ -+.TP -+.BR dynamic " and " permanent -+(IPv6 only) only list addresses installed due to stateless -+address configuration or only list permanent (not dynamic) -+addresses. -+ -+.TP -+.B tentative -+(IPv6 only) only list addresses which did not pass duplicate -+address detection. -+ -+.TP -+.B deprecated -+(IPv6 only) only list deprecated addresses. -+ -+.TP -+.BR primary " and " secondary -+only list primary (or secondary) addresses. -+ -+.SS ip address flush - flush protocol addresses -+This command flushes the protocol addresses selected by some criteria. -+ -+.PP -+This command has the same arguments as -+.B show. -+The difference is that it does not run when no arguments are given. -+ -+.PP -+.B Warning: -+This command (and other -+.B flush -+commands described below) is pretty dangerous. If you make a mistake, -+it will not forgive it, but will cruelly purge all the addresses. -+ -+.PP -+With the -+.B -statistics -+option, the command becomes verbose. It prints out the number of deleted -+addresses and the number of rounds made to flush the address list. If -+this option is given twice, -+.B ip addr flush -+also dumps all the deleted addresses in the format described in the -+previous subsection. -+ -+.SH ip neighbour - neighbour/arp tables management. -+ -+.B neighbour -+objects establish bindings between protocol addresses and -+link layer addresses for hosts sharing the same link. -+Neighbour entries are organized into tables. The IPv4 neighbour table -+is known by another name - the ARP table. -+ -+.P -+The corresponding commands display neighbour bindings -+and their properties, add new neighbour entries and delete old ones. -+ -+.SS ip neighbour add - add a new neighbour entry -+.SS ip neighbour change - change an existing entry -+.SS ip neighbour replace - add a new entry or change an existing one -+ -+These commands create new neighbour records or update existing ones. -+ -+.TP -+.BI to " ADDRESS " (default) -+the protocol address of the neighbour. It is either an IPv4 or IPv6 address. -+ -+.TP -+.BI dev " NAME" -+the interface to which this neighbour is attached. -+ -+.TP -+.BI lladdr " LLADDRESS" -+the link layer address of the neighbour. -+.I LLADDRESS -+can also be -+.BR "null" . -+ -+.TP -+.BI nud " NUD_STATE" -+the state of the neighbour entry. -+.B nud -+is an abbreviation for 'Neigh bour Unreachability Detection'. -+The state can take one of the following values: -+ -+.in +8 -+.B permanent -+- the neighbour entry is valid forever and can be only -+be removed administratively. -+.sp -+ -+.B noarp -+- the neighbour entry is valid. No attempts to validate -+this entry will be made but it can be removed when its lifetime expires. -+.sp -+ -+.B reachable -+- the neighbour entry is valid until the reachability -+timeout expires. -+.sp -+ -+.B stale -+- the neighbour entry is valid but suspicious. -+This option to -+.B ip neigh -+does not change the neighbour state if it was valid and the address -+is not changed by this command. -+.in -8 -+ -+.SS ip neighbour delete - delete a neighbour entry -+This command invalidates a neighbour entry. -+ -+.PP -+The arguments are the same as with -+.BR "ip neigh add" , -+except that -+.B lladdr -+and -+.B nud -+are ignored. -+ -+.PP -+.B Warning: -+Attempts to delete or manually change a -+.B noarp -+entry created by the kernel may result in unpredictable behaviour. -+Particularly, the kernel may try to resolve this address even -+on a -+.B NOARP -+interface or if the address is multicast or broadcast. -+ -+.SS ip neighbour show - list neighbour entries -+ -+This commands displays neighbour tables. -+ -+.TP -+.BI to " ADDRESS " (default) -+the prefix selecting the neighbours to list. -+ -+.TP -+.BI dev " NAME" -+only list the neighbours attached to this device. -+ -+.TP -+.B unused -+only list neighbours which are not currently in use. -+ -+.TP -+.BI nud " NUD_STATE" -+only list neighbour entries in this state. -+.I NUD_STATE -+takes values listed below or the special value -+.B all -+which means all states. This option may occur more than once. -+If this option is absent, -+.B ip -+lists all entries except for -+.B none -+and -+.BR "noarp" . -+ -+.SS ip neighbour flush - flush neighbour entries -+This command flushes neighbour tables, selecting -+entries to flush by some criteria. -+ -+.PP -+This command has the same arguments as -+.B show. -+The differences are that it does not run when no arguments are given, -+and that the default neighbour states to be flushed do not include -+.B permanent -+and -+.BR "noarp" . -+ -+.PP -+With the -+.B -statistics -+option, the command becomes verbose. It prints out the number of -+deleted neighbours and the number of rounds made to flush the -+neighbour table. If the option is given -+twice, -+.B ip neigh flush -+also dumps all the deleted neighbours. -+ -+.SH ip route - routing table management -+Manipulate route entries in the kernel routing tables keep -+information about paths to other networked nodes. -+.sp -+.B Route types: -+ -+.in +8 -+.B unicast -+- the route entry describes real paths to the destinations covered -+by the route prefix. -+ -+.sp -+.B unreachable -+- these destinations are unreachable. Packets are discarded and the -+ICMP message -+.I host unreachable -+is generated. -+The local senders get an -+.I EHOSTUNREACH -+error. -+ -+.sp -+.B blackhole -+- these destinations are unreachable. Packets are discarded silently. -+The local senders get an -+.I EINVAL -+error. -+ -+.sp -+.B prohibit -+- these destinations are unreachable. Packets are discarded and the -+ICMP message -+.I communication administratively prohibited -+is generated. The local senders get an -+.I EACCES -+error. -+ -+.sp -+.B local -+- the destinations are assigned to this host. The packets are looped -+back and delivered locally. -+ -+.sp -+.B broadcast -+- the destinations are broadcast addresses. The packets are sent as -+link broadcasts. -+ -+.sp -+.B throw -+- a special control route used together with policy rules. If such a -+route is selected, lookup in this table is terminated pretending that -+no route was found. Without policy routing it is equivalent to the -+absence of the route in the routing table. The packets are dropped -+and the ICMP message -+.I net unreachable -+is generated. The local senders get an -+.I ENETUNREACH -+error. -+ -+.sp -+.B nat -+- a special NAT route. Destinations covered by the prefix -+are considered to be dummy (or external) addresses which require translation -+to real (or internal) ones before forwarding. The addresses to translate to -+are selected with the attribute -+.BR "via" . -+ -+.sp -+.B anycast -+.RI "- " "not implemented" -+the destinations are -+.I anycast -+addresses assigned to this host. They are mainly equivalent -+to -+.B local -+with one difference: such addresses are invalid when used -+as the source address of any packet. -+ -+.sp -+.B multicast -+- a special type used for multicast routing. It is not present in -+normal routing tables. -+.in -8 -+ -+.P -+.B Route tables: -+Linux-2.x can pack routes into several routing -+tables identified by a number in the range from 1 to 255 or by -+name from the file -+.B /etc/iproute2/rt_tables -+. By default all normal routes are inserted into the -+.B main -+table (ID 254) and the kernel only uses this table when calculating routes. -+ -+.sp -+Actually, one other table always exists, which is invisible but -+even more important. It is the -+.B local -+table (ID 255). This table -+consists of routes for local and broadcast addresses. The kernel maintains -+this table automatically and the administrator usually need not modify it -+or even look at it. -+ -+The multiple routing tables enter the game when -+.I policy routing -+is used. -+ -+.SS ip route add - add new route -+.SS ip route change - change route -+.SS ip route replace - change or add new one -+ -+.TP -+.BI to " TYPE PREFIX " (default) -+the destination prefix of the route. If -+.I TYPE -+is omitted, -+.B ip -+assumes type -+.BR "unicast" . -+Other values of -+.I TYPE -+are listed above. -+.I PREFIX -+is an IP or IPv6 address optionally followed by a slash and the -+prefix length. If the length of the prefix is missing, -+.B ip -+assumes a full-length host route. There is also a special -+.I PREFIX -+.B default -+- which is equivalent to IP -+.B 0/0 -+or to IPv6 -+.BR "::/0" . -+ -+.TP -+.BI tos " TOS" -+.TP -+.BI dsfield " TOS" -+the Type Of Service (TOS) key. This key has no associated mask and -+the longest match is understood as: First, compare the TOS -+of the route and of the packet. If they are not equal, then the packet -+may still match a route with a zero TOS. -+.I TOS -+is either an 8 bit hexadecimal number or an identifier -+from -+.BR "/etc/iproute2/rt_dsfield" . -+ -+.TP -+.BI metric " NUMBER" -+.TP -+.BI preference " NUMBER" -+the preference value of the route. -+.I NUMBER -+is an arbitrary 32bit number. -+ -+.TP -+.BI table " TABLEID" -+the table to add this route to. -+.I TABLEID -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_tables" . -+If this parameter is omitted, -+.B ip -+assumes the -+.B main -+table, with the exception of -+.BR local " , " broadcast " and " nat -+routes, which are put into the -+.B local -+table by default. -+ -+.TP -+.BI dev " NAME" -+the output device name. -+ -+.TP -+.BI via " ADDRESS" -+the address of the nexthop router. Actually, the sense of this field -+depends on the route type. For normal -+.B unicast -+routes it is either the true next hop router or, if it is a direct -+route installed in BSD compatibility mode, it can be a local address -+of the interface. For NAT routes it is the first address of the block -+of translated IP destinations. -+ -+.TP -+.BI src " ADDRESS" -+the source address to prefer when sending to the destinations -+covered by the route prefix. -+ -+.TP -+.BI realm " REALMID" -+the realm to which this route is assigned. -+.I REALMID -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_realms" . -+ -+.TP -+.BI mtu " MTU" -+.TP -+.BI "mtu lock" " MTU" -+the MTU along the path to the destination. If the modifier -+.B lock -+is not used, the MTU may be updated by the kernel due to -+Path MTU Discovery. If the modifier -+.B lock -+is used, no path MTU discovery will be tried, all packets -+will be sent without the DF bit in IPv4 case or fragmented -+to MTU for IPv6. -+ -+.TP -+.BI window " NUMBER" -+the maximal window for TCP to advertise to these destinations, -+measured in bytes. It limits maximal data bursts that our TCP -+peers are allowed to send to us. -+ -+.TP -+.BI rtt " NUMBER" -+the initial RTT ('Round Trip Time') estimate. -+ -+.TP -+.BI rttvar " NUMBER " "(2.3.15+ only)" -+the initial RTT variance estimate. -+ -+.TP -+.BI ssthresh " NUMBER " "(2.3.15+ only)" -+an estimate for the initial slow start threshold. -+ -+.TP -+.BI cwnd " NUMBER " "(2.3.15+ only)" -+the clamp for congestion window. It is ignored if the -+.B lock -+flag is not used. -+ -+.TP -+.BI advmss " NUMBER " "(2.3.15+ only)" -+the MSS ('Maximal Segment Size') to advertise to these -+destinations when establishing TCP connections. If it is not given, -+Linux uses a default value calculated from the first hop device MTU. -+(If the path to these destination is asymmetric, this guess may be wrong.) -+ -+.TP -+.BI reordering " NUMBER " "(2.3.15+ only)" -+Maximal reordering on the path to this destination. -+If it is not given, Linux uses the value selected with -+.B sysctl -+variable -+.BR "net/ipv4/tcp_reordering" . -+ -+.TP -+.BI nexthop " NEXTHOP" -+the nexthop of a multipath route. -+.I NEXTHOP -+is a complex value with its own syntax similar to the top level -+argument lists: -+ -+.in +8 -+.BI via " ADDRESS" -+- is the nexthop router. -+.sp -+ -+.BI dev " NAME" -+- is the output device. -+.sp -+ -+.BI weight " NUMBER" -+- is a weight for this element of a multipath -+route reflecting its relative bandwidth or quality. -+.in -8 -+ -+.TP -+.BI scope " SCOPE_VAL" -+the scope of the destinations covered by the route prefix. -+.I SCOPE_VAL -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_scopes" . -+If this parameter is omitted, -+.B ip -+assumes scope -+.B global -+for all gatewayed -+.B unicast -+routes, scope -+.B link -+for direct -+.BR unicast " and " broadcast -+routes and scope -+.BR host " for " local -+routes. -+ -+.TP -+.BI protocol " RTPROTO" -+the routing protocol identifier of this route. -+.I RTPROTO -+may be a number or a string from the file -+.BR "/etc/iproute2/rt_protos" . -+If the routing protocol ID is not given, -+.B ip assumes protocol -+.B boot -+(i.e. it assumes the route was added by someone who doesn't -+understand what they are doing). Several protocol values have -+a fixed interpretation. -+Namely: -+ -+.in +8 -+.B redirect -+- the route was installed due to an ICMP redirect. -+.sp -+ -+.B kernel -+- the route was installed by the kernel during autoconfiguration. -+.sp -+ -+.B boot -+- the route was installed during the bootup sequence. -+If a routing daemon starts, it will purge all of them. -+.sp -+ -+.B static -+- the route was installed by the administrator -+to override dynamic routing. Routing daemon will respect them -+and, probably, even advertise them to its peers. -+.sp -+ -+.B ra -+- the route was installed by Router Discovery protocol. -+.in -8 -+ -+.sp -+The rest of the values are not reserved and the administrator is free -+to assign (or not to assign) protocol tags. -+ -+.TP -+.B onlink -+pretend that the nexthop is directly attached to this link, -+even if it does not match any interface prefix. -+ -+.TP -+.B equalize -+allow packet by packet randomization on multipath routes. -+Without this modifier, the route will be frozen to one selected -+nexthop, so that load splitting will only occur on per-flow base. -+.B equalize -+only works if the kernel is patched. -+ -+.SS ip route delete - delete route -+ -+.B ip route del -+has the same arguments as -+.BR "ip route add" , -+but their semantics are a bit different. -+ -+Key values -+.RB "(" to ", " tos ", " preference " and " table ")" -+select the route to delete. If optional attributes are present, -+.B ip -+verifies that they coincide with the attributes of the route to delete. -+If no route with the given key and attributes was found, -+.B ip route del -+fails. -+ -+.SS ip route show - list routes -+the command displays the contents of the routing tables or the route(s) -+selected by some criteria. -+ -+.TP -+.BI to " SELECTOR " (default) -+only select routes from the given range of destinations. -+.I SELECTOR -+consists of an optional modifier -+.RB "(" root ", " match " or " exact ")" -+and a prefix. -+.BI root " PREFIX" -+selects routes with prefixes not shorter than -+.IR PREFIX "." -+F.e. -+.BI root " 0/0" -+selects the entire routing table. -+.BI match " PREFIX" -+selects routes with prefixes not longer than -+.IR PREFIX "." -+F.e. -+.BI match " 10.0/16" -+selects -+.IR 10.0/16 "," -+.IR 10/8 " and " 0/0 , -+but it does not select -+.IR 10.1/16 " and " 10.0.0/24 . -+And -+.BI exact " PREFIX" -+(or just -+.IR PREFIX ")" -+selects routes with this exact prefix. If neither of these options -+are present, -+.B ip -+assumes -+.BI root " 0/0" -+i.e. it lists the entire table. -+ -+.TP -+.BI tos " TOS" -+.BI dsfield " TOS" -+only select routes with the given TOS. -+ -+.TP -+.BI table " TABLEID" -+show the routes from this table(s). The default setting is to show -+.BR table main "." -+.I TABLEID -+may either be the ID of a real table or one of the special values: -+.sp -+.in +8 -+.B all -+- list all of the tables. -+.sp -+.B cache -+- dump the routing cache. -+.in -8 -+ -+.TP -+.B cloned -+.TP -+.B cached -+list cloned routes i.e. routes which were dynamically forked from -+other routes because some route attribute (f.e. MTU) was updated. -+Actually, it is equivalent to -+.BR "table cache" "." -+ -+.TP -+.BI from " SELECTOR" -+the same syntax as for -+.BR to "," -+but it binds the source address range rather than destinations. -+Note that the -+.B from -+option only works with cloned routes. -+ -+.TP -+.BI protocol " RTPROTO" -+only list routes of this protocol. -+ -+.TP -+.BI scope " SCOPE_VAL" -+only list routes with this scope. -+ -+.TP -+.BI type " TYPE" -+only list routes of this type. -+ -+.TP -+.BI dev " NAME" -+only list routes going via this device. -+ -+.TP -+.BI via " PREFIX" -+only list routes going via the nexthop routers selected by -+.IR PREFIX "." -+ -+.TP -+.BI src " PREFIX" -+only list routes with preferred source addresses selected -+by -+.IR PREFIX "." -+ -+.TP -+.BI realm " REALMID" -+.TP -+.BI realms " FROMREALM/TOREALM" -+only list routes with these realms. -+ -+.SS ip route flush - flush routing tables -+this command flushes routes selected by some criteria. -+ -+.sp -+The arguments have the same syntax and semantics as the arguments of -+.BR "ip route show" , -+but routing tables are not listed but purged. The only difference is -+the default action: -+.B show -+dumps all the IP main routing table but -+.B flush -+prints the helper page. -+ -+.sp -+With the -+.B -statistics -+option, the command becomes verbose. It prints out the number of -+deleted routes and the number of rounds made to flush the routing -+table. If the option is given -+twice, -+.B ip route flush -+also dumps all the deleted routes in the format described in the -+previous subsection. -+ -+.SS ip route get - get a single route -+this command gets a single route to a destination and prints its -+contents exactly as the kernel sees it. -+ -+.TP -+.BI to " ADDRESS " (default) -+the destination address. -+ -+.TP -+.BI from " ADDRESS" -+the source address. -+ -+.TP -+.BI tos " TOS" -+.TP -+.BI dsfield " TOS" -+the Type Of Service. -+ -+.TP -+.BI iif " NAME" -+the device from which this packet is expected to arrive. -+ -+.TP -+.BI oif " NAME" -+force the output device on which this packet will be routed. -+ -+.TP -+.B connected -+if no source address -+.RB "(option " from ")" -+was given, relookup the route with the source set to the preferred -+address received from the first lookup. -+If policy routing is used, it may be a different route. -+ -+.P -+Note that this operation is not equivalent to -+.BR "ip route show" . -+.B show -+shows existing routes. -+.B get -+resolves them and creates new clones if necessary. Essentially, -+.B get -+is equivalent to sending a packet along this path. -+If the -+.B iif -+argument is not given, the kernel creates a route -+to output packets towards the requested destination. -+This is equivalent to pinging the destination -+with a subsequent -+.BR "ip route ls cache" , -+however, no packets are actually sent. With the -+.B iif -+argument, the kernel pretends that a packet arrived from this interface -+and searches for a path to forward the packet. -+ -+.SH ip rule - routing policy database management -+ -+.BR "Rule" s -+in the routing policy database control the route selection algorithm. -+ -+.P -+Classic routing algorithms used in the Internet make routing decisions -+based only on the destination address of packets (and in theory, -+but not in practice, on the TOS field). -+ -+.P -+In some circumstances we want to route packets differently depending not only -+on destination addresses, but also on other packet fields: source address, -+IP protocol, transport protocol ports or even packet payload. -+This task is called 'policy routing'. -+ -+.P -+To solve this task, the conventional destination based routing table, ordered -+according to the longest match rule, is replaced with a 'routing policy -+database' (or RPDB), which selects routes by executing some set of rules. -+ -+.P -+Each policy routing rule consists of a -+.B selector -+and an -+.B action predicate. -+The RPDB is scanned in the order of increasing priority. The selector -+of each rule is applied to {source address, destination address, incoming -+interface, tos, fwmark} and, if the selector matches the packet, -+the action is performed. The action predicate may return with success. -+In this case, it will either give a route or failure indication -+and the RPDB lookup is terminated. Otherwise, the RPDB program -+continues on the next rule. -+ -+.P -+Semantically, natural action is to select the nexthop and the output device. -+ -+.P -+At startup time the kernel configures the default RPDB consisting of three -+rules: -+ -+.TP -+1. -+Priority: 0, Selector: match anything, Action: lookup routing -+table -+.B local -+(ID 255). -+The -+.B local -+table is a special routing table containing -+high priority control routes for local and broadcast addresses. -+.sp -+Rule 0 is special. It cannot be deleted or overridden. -+ -+.TP -+2. -+Priority: 32766, Selector: match anything, Action: lookup routing -+table -+.B main -+(ID 254). -+The -+.B main -+table is the normal routing table containing all non-policy -+routes. This rule may be deleted and/or overridden with other -+ones by the administrator. -+ -+.TP -+3. -+Priority: 32767, Selector: match anything, Action: lookup routing -+table -+.B default -+(ID 253). -+The -+.B default -+table is empty. It is reserved for some post-processing if no previous -+default rules selected the packet. -+This rule may also be deleted. -+ -+.P -+Each RPDB entry has additional -+attributes. F.e. each rule has a pointer to some routing -+table. NAT and masquerading rules have an attribute to select new IP -+address to translate/masquerade. Besides that, rules have some -+optional attributes, which routes have, namely -+.BR "realms" . -+These values do not override those contained in the routing tables. They -+are only used if the route did not select any attributes. -+ -+.sp -+The RPDB may contain rules of the following types: -+ -+.in +8 -+.B unicast -+- the rule prescribes to return the route found -+in the routing table referenced by the rule. -+ -+.B blackhole -+- the rule prescribes to silently drop the packet. -+ -+.B unreachable -+- the rule prescribes to generate a 'Network is unreachable' error. -+ -+.B prohibit -+- the rule prescribes to generate 'Communication is administratively -+prohibited' error. -+ -+.B nat -+- the rule prescribes to translate the source address -+of the IP packet into some other value. -+.in -8 -+ -+.SS ip rule add - insert a new rule -+.SS ip rule delete - delete a rule -+ -+.TP -+.BI type " TYPE " (default) -+the type of this rule. The list of valid types was given in the previous -+subsection. -+ -+.TP -+.BI from " PREFIX" -+select the source prefix to match. -+ -+.TP -+.BI to " PREFIX" -+select the destination prefix to match. -+ -+.TP -+.BI iif " NAME" -+select the incoming device to match. If the interface is loopback, -+the rule only matches packets originating from this host. This means -+that you may create separate routing tables for forwarded and local -+packets and, hence, completely segregate them. -+ -+.TP -+.BI tos " TOS" -+.TP -+.BI dsfield " TOS" -+select the TOS value to match. -+ -+.TP -+.BI fwmark " MARK" -+select the -+.B fwmark -+value to match. -+ -+.TP -+.BI priority " PREFERENCE" -+the priority of this rule. Each rule should have an explicitly -+set -+.I unique -+priority value. -+ -+.TP -+.BI table " TABLEID" -+the routing table identifier to lookup if the rule selector matches. -+ -+.TP -+.BI realms " FROM/TO" -+Realms to select if the rule matched and the routing table lookup -+succeeded. Realm -+.I TO -+is only used if the route did not select any realm. -+ -+.TP -+.BI nat " ADDRESS" -+The base of the IP address block to translate (for source addresses). -+The -+.I ADDRESS -+may be either the start of the block of NAT addresses (selected by NAT -+routes) or a local host address (or even zero). -+In the last case the router does not translate the packets, but -+masquerades them to this address. -+ -+.B Warning: -+Changes to the RPDB made with these commands do not become active -+immediately. It is assumed that after a script finishes a batch of -+updates, it flushes the routing cache with -+.BR "ip route flush cache" . -+ -+.SS ip rule show - list rules -+This command has no arguments. -+ -+.SH ip maddress - multicast addresses management -+ -+.B maddress -+objects are multicast addresses. -+ -+.SS ip maddress show - list multicast addresses -+ -+.TP -+.BI dev " NAME " (default) -+the device name. -+ -+.SS ip maddress add - add a multicast address -+.SS ip maddress delete - delete a multicast address -+these commands attach/detach a static link layer multicast address -+to listen on the interface. -+Note that it is impossible to join protocol multicast groups -+statically. This command only manages link layer addresses. -+ -+.TP -+.BI address " LLADDRESS " (default) -+the link layer multicast address. -+ -+.TP -+.BI dev " NAME" -+the device to join/leave this multicast address. -+ -+.SH ip mroute - multicast routing cache management -+.B mroute -+objects are multicast routing cache entries created by a user level -+mrouting daemon (f.e. -+.B pimd -+or -+.B mrouted -+). -+ -+Due to the limitations of the current interface to the multicast routing -+engine, it is impossible to change -+.B mroute -+objects administratively, so we may only display them. This limitation -+will be removed in the future. -+ -+.SS ip mroute show - list mroute cache entries -+ -+.TP -+.BI to " PREFIX " (default) -+the prefix selecting the destination multicast addresses to list. -+ -+.TP -+.BI iif " NAME" -+the interface on which multicast packets are received. -+ -+.TP -+.BI from " PREFIX" -+the prefix selecting the IP source addresses of the multicast route. -+ -+.SH ip tunnel - tunnel configuration -+.B tunnel -+objects are tunnels, encapsulating packets in IPv4 packets and then -+sending them over the IP infrastructure. -+ -+.SS ip tunnel add - add a new tunnel -+.SS ip tunnel change - change an existing tunnel -+.SS ip tunnel delete - destroy a tunnel -+ -+.TP -+.BI name " NAME " (default) -+select the tunnel device name. -+ -+.TP -+.BI mode " MODE" -+set the tunnel mode. Three modes are currently available: -+.BR ipip ", " sit " and " gre "." -+ -+.TP -+.BI remote " ADDRESS" -+set the remote endpoint of the tunnel. -+ -+.TP -+.BI local " ADDRESS" -+set the fixed local address for tunneled packets. -+It must be an address on another interface of this host. -+ -+.TP -+.BI ttl " N" -+set a fixed TTL -+.I N -+on tunneled packets. -+.I N -+is a number in the range 1--255. 0 is a special value -+meaning that packets inherit the TTL value. -+The default value is: -+.BR "inherit" . -+ -+.TP -+.BI tos " T" -+.TP -+.BI dsfield " T" -+set a fixed TOS -+.I T -+on tunneled packets. -+The default value is: -+.BR "inherit" . -+ -+.TP -+.BI dev " NAME" -+bind the tunnel to the device -+.I NAME -+so that tunneled packets will only be routed via this device and will -+not be able to escape to another device when the route to endpoint -+changes. -+ -+.TP -+.B nopmtudisc -+disable Path MTU Discovery on this tunnel. -+It is enabled by default. Note that a fixed ttl is incompatible -+with this option: tunnelling with a fixed ttl always makes pmtu -+discovery. -+ -+.TP -+.BI key " K" -+.TP -+.BI ikey " K" -+.TP -+.BI okey " K" -+.RB ( " only GRE tunnels " ) -+use keyed GRE with key -+.IR K ". " K -+is either a number or an IP address-like dotted quad. -+The -+.B key -+parameter sets the key to use in both directions. -+The -+.BR ikey " and " okey -+parameters set different keys for input and output. -+ -+.TP -+.BR csum ", " icsum ", " ocsum -+.RB ( " only GRE tunnels " ) -+generate/require checksums for tunneled packets. -+The -+.B ocsum -+flag calculates checksums for outgoing packets. -+The -+.B icsum -+flag requires that all input packets have the correct -+checksum. The -+.B csum -+flag is equivalent to the combination -+.BR "icsum ocsum" . -+ -+.TP -+.BR seq ", " iseq ", " oseq -+.RB ( " only GRE tunnels " ) -+serialize packets. -+The -+.B oseq -+flag enables sequencing of outgoing packets. -+The -+.B iseq -+flag requires that all input packets are serialized. -+The -+.B seq -+flag is equivalent to the combination -+.BR "iseq oseq" . -+.B It isn't work. Don't use it. -+ -+.SS ip tunnel show - list tunnels -+This command has no arguments. -+ -+.SH ip monitor and rtmon - state monitoring -+ -+The -+.B ip -+utility can monitor the state of devices, addresses -+and routes continuously. This option has a slightly different format. -+Namely, the -+.B monitor -+command is the first in the command line and then the object list follows: -+ -+.BR "ip monitor" " [ " all " |" -+.IR LISTofOBJECTS " ]" -+ -+.I OBJECT-LIST -+is the list of object types that we want to monitor. -+It may contain -+.BR link ", " address " and " route "." -+If no -+.B file -+argument is given, -+.B ip -+opens RTNETLINK, listens on it and dumps state changes in the format -+described in previous sections. -+ -+.P -+If a file name is given, it does not listen on RTNETLINK, -+but opens the file containing RTNETLINK messages saved in binary format -+and dumps them. Such a history file can be generated with the -+.B rtmon -+utility. This utility has a command line syntax similar to -+.BR "ip monitor" . -+Ideally, -+.B rtmon -+should be started before the first network configuration command -+is issued. F.e. if you insert: -+.sp -+.in +8 -+rtmon file /var/log/rtmon.log -+.in -8 -+.sp -+in a startup script, you will be able to view the full history -+later. -+ -+.P -+Certainly, it is possible to start -+.B rtmon -+at any time. -+It prepends the history with the state snapshot dumped at the moment -+of starting. -+ -+.SH HISTORY -+ -+.B ip -+was written by Alexey N. Kuznetsov and added in Linux 2.2. -+.SH SEE ALSO -+.BR tc (8) -+.br -+.RB "IP Command reference " ip-cref.ps -+.br -+.RB "IP tunnels " ip-cref.ps -+ -+.SH AUTHOR -+ -+Manpage maintained by Michail Litvak -diff -Naur iproute2-orig/debian/manpages/old/tc-cbq-details.8 iproute2/debian/manpages/old/tc-cbq-details.8 ---- iproute2-orig/debian/manpages/old/tc-cbq-details.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-cbq-details.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,425 @@ -+.TH CBQ 8 "8 December 2001" "iproute2" "Linux" -+.SH NAME -+CBQ \- Class Based Queueing -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] cbq avpkt -+bytes -+.B bandwidth -+rate -+.B [ cell -+bytes -+.B ] [ ewma -+log -+.B ] [ mpu -+bytes -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] cbq allot -+bytes -+.B [ bandwidth -+rate -+.B ] [ rate -+rate -+.B ] prio -+priority -+.B [ weight -+weight -+.B ] [ minburst -+packets -+.B ] [ maxburst -+packets -+.B ] [ ewma -+log -+.B ] [ cell -+bytes -+.B ] avpkt -+bytes -+.B [ mpu -+bytes -+.B ] [ bounded isolated ] [ split -+handle -+.B & defmap -+defmap -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+Class Based Queueing is a classful qdisc that implements a rich -+linksharing hierarchy of classes. It contains shaping elements as -+well as prioritizing capabilities. Shaping is performed using link -+idle time calculations based on the timing of dequeue events and -+underlying link bandwidth. -+ -+.SH SHAPING ALGORITHM -+Shaping is done using link idle time calculations, and actions taken if -+these calculations deviate from set limits. -+ -+When shaping a 10mbit/s connection to 1mbit/s, the link will -+be idle 90% of the time. If it isn't, it needs to be throttled so that it -+IS idle 90% of the time. -+ -+From the kernel's perspective, this is hard to measure, so CBQ instead -+derives the idle time from the number of microseconds (in fact, jiffies) -+that elapse between requests from the device driver for more data. Combined -+with the knowledge of packet sizes, this is used to approximate how full or -+empty the link is. -+ -+This is rather circumspect and doesn't always arrive at proper -+results. For example, what is the actual link speed of an interface -+that is not really able to transmit the full 100mbit/s of data, -+perhaps because of a badly implemented driver? A PCMCIA network card -+will also never achieve 100mbit/s because of the way the bus is -+designed - again, how do we calculate the idle time? -+ -+The physical link bandwidth may be ill defined in case of not-quite-real -+network devices like PPP over Ethernet or PPTP over TCP/IP. The effective -+bandwidth in that case is probably determined by the efficiency of pipes -+to userspace - which not defined. -+ -+During operations, the effective idletime is measured using an -+exponential weighted moving average (EWMA), which considers recent -+packets to be exponentially more important than past ones. The Unix -+loadaverage is calculated in the same way. -+ -+The calculated idle time is subtracted from the EWMA measured one, -+the resulting number is called 'avgidle'. A perfectly loaded link has -+an avgidle of zero: packets arrive exactly at the calculated -+interval. -+ -+An overloaded link has a negative avgidle and if it gets too negative, -+CBQ throttles and is then 'overlimit'. -+ -+Conversely, an idle link might amass a huge avgidle, which would then -+allow infinite bandwidths after a few hours of silence. To prevent -+this, avgidle is capped at -+.B maxidle. -+ -+If overlimit, in theory, the CBQ could throttle itself for exactly the -+amount of time that was calculated to pass between packets, and then -+pass one packet, and throttle again. Due to timer resolution constraints, -+this may not be feasible, see the -+.B minburst -+parameter below. -+ -+.SH CLASSIFICATION -+Within the one CBQ instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, CBQ starts at the root and uses various methods to -+determine which class should receive the data. If a verdict is reached, this -+process is repeated for the recipient class which might have further -+means of classifying traffic to its children, if any. -+ -+CBQ has the following methods available to classify a packet to any child -+classes. -+.TP -+(i) -+.B skb->priority class encoding. -+Can be set from userspace by an application with the -+.B SO_PRIORITY -+setsockopt. -+The -+.B skb->priority class encoding -+only applies if the skb->priority holds a major:minor handle of an existing -+class within this qdisc. -+.TP -+(ii) -+tc filters attached to the class. -+.TP -+(iii) -+The defmap of a class, as set with the -+.B split & defmap -+parameters. The defmap may contain instructions for each possible Linux packet -+priority. -+ -+.P -+Each class also has a -+.B level. -+Leaf nodes, attached to the bottom of the class hierarchy, have a level of 0. -+.SH CLASSIFICATION ALGORITHM -+ -+Classification is a loop, which terminates when a leaf class is found. At any -+point the loop may jump to the fallback algorithm. -+ -+The loop consists of the following steps: -+.TP -+(i) -+If the packet is generated locally and has a valid classid encoded within its -+.B skb->priority, -+choose it and terminate. -+ -+.TP -+(ii) -+Consult the tc filters, if any, attached to this child. If these return -+a class which is not a leaf class, restart loop from the class returned. -+If it is a leaf, choose it and terminate. -+.TP -+(iii) -+If the tc filters did not return a class, but did return a classid, -+try to find a class with that id within this qdisc. -+Check if the found class is of a lower -+.B level -+than the current class. If so, and the returned class is not a leaf node, -+restart the loop at the found class. If it is a leaf node, terminate. -+If we found an upward reference to a higher level, enter the fallback -+algorithm. -+.TP -+(iv) -+If the tc filters did not return a class, nor a valid reference to one, -+consider the minor number of the reference to be the priority. Retrieve -+a class from the defmap of this class for the priority. If this did not -+contain a class, consult the defmap of this class for the -+.B BEST_EFFORT -+class. If this is an upward reference, or no -+.B BEST_EFFORT -+class was defined, -+enter the fallback algorithm. If a valid class was found, and it is not a -+leaf node, restart the loop at this class. If it is a leaf, choose it and -+terminate. If -+neither the priority distilled from the classid, nor the -+.B BEST_EFFORT -+priority yielded a class, enter the fallback algorithm. -+.P -+The fallback algorithm resides outside of the loop and is as follows. -+.TP -+(i) -+Consult the defmap of the class at which the jump to fallback occured. If -+the defmap contains a class for the -+.B -+priority -+of the class (which is related to the TOS field), choose this class and -+terminate. -+.TP -+(ii) -+Consult the map for a class for the -+.B BEST_EFFORT -+priority. If found, choose it, and terminate. -+.TP -+(iii) -+Choose the class at which break out to the fallback algorithm occured. Terminate. -+.P -+The packet is enqueued to the class which was chosen when either algorithm -+terminated. It is therefore possible for a packet to be enqueued *not* at a -+leaf node, but in the middle of the hierarchy. -+ -+.SH LINK SHARING ALGORITHM -+When dequeuing for sending to the network device, CBQ decides which of its -+classes will be allowed to send. It does so with a Weighted Round Robin process -+in which each class with packets gets a chance to send in turn. The WRR process -+starts by asking the highest priority classes (lowest numerically - -+highest semantically) for packets, and will continue to do so until they -+have no more data to offer, in which case the process repeats for lower -+priorities. -+ -+.B CERTAINTY ENDS HERE, ANK PLEASE HELP -+ -+Each class is not allowed to send at length though - they can only dequeue a -+configurable amount of data during each round. -+ -+If a class is about to go overlimit, and it is not -+.B bounded -+it will try to borrow avgidle from siblings that are not -+.B isolated. -+This process is repeated from the bottom upwards. If a class is unable -+to borrow enough avgidle to send a packet, it is throttled and not asked -+for a packet for enough time for the avgidle to increase above zero. -+ -+.B I REALLY NEED HELP FIGURING THIS OUT. REST OF DOCUMENT IS PRETTY CERTAIN -+.B AGAIN. -+ -+.SH QDISC -+The root qdisc of a CBQ class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the CBQ instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the CBQ can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional. -+.TP -+avpkt bytes -+For calculations, the average packet size must be known. It is silently capped -+at a minimum of 2/3 of the interface MTU. Mandatory. -+.TP -+bandwidth rate -+To determine the idle time, CBQ must know the bandwidth of your underlying -+physical interface, or parent qdisc. This is a vital parameter, more about it -+later. Mandatory. -+.TP -+cell -+The cell size determines he granularity of packet transmission time calculations. Has a sensible default. -+.TP -+mpu -+A zero sized packet may still take time to transmit. This value is the lower -+cap for packet transmission time calculations - packets smaller than this value -+are still deemed to have this size. Defaults to zero. -+.TP -+ewma log -+When CBQ needs to measure the average idle time, it does so using an -+Exponentially Weighted Moving Average which smoothes out measurements into -+a moving average. The EWMA LOG determines how much smoothing occurs. Defaults -+to 5. Lower values imply greater sensitivity. Must be between 0 and 31. -+.P -+A CBQ qdisc does not shape out of its own accord. It only needs to know certain -+parameters about the underlying link. Actual shaping is done in classes. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+weight weight -+When dequeuing to the interface, classes are tried for traffic in a -+round-robin fashion. Classes with a higher configured qdisc will generally -+have more traffic to offer during each round, so it makes sense to allow -+it to dequeue more traffic. All weights under a class are normalized, so -+only the ratios matter. Defaults to the configured rate, unless the priority -+of this class is maximal, in which case it is set to 1. -+.TP -+allot bytes -+Allot specifies how many bytes a qdisc can dequeue -+during each round of the process. This parameter is weighted using the -+renormalized class weight described above. -+ -+.TP -+priority priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+rate rate -+Maximum rate this class and all its children combined can send at. Mandatory. -+ -+.TP -+bandwidth rate -+This is different from the bandwidth specified when creating a CBQ disc. Only -+used to determine maxidle and offtime, which are only calculated when -+specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. -+ -+.TP -+maxburst -+This number of packets is used to calculate maxidle so that when -+avgidle is at maxidle, this number of average packets can be burst -+before avgidle drops to 0. Set it higher to be more tolerant of -+bursts. You can't set maxidle directly, only via this parameter. -+ -+.TP -+minburst -+As mentioned before, CBQ needs to throttle in case of -+overlimit. The ideal solution is to do so for exactly the calculated -+idle time, and pass 1 packet. However, Unix kernels generally have a -+hard time scheduling events shorter than 10ms, so it is better to -+throttle for a longer period, and then pass minburst packets in one -+go, and then sleep minburst times longer. -+ -+The time to wait is called the offtime. Higher values of minburst lead -+to more accurate shaping in the long term, but to bigger bursts at -+millisecond timescales. -+ -+.TP -+minidle -+If avgidle is below 0, we are overlimits and need to wait until -+avgidle will be big enough to send one packet. To prevent a sudden -+burst from shutting down the link for a prolonged period of time, -+avgidle is reset to minidle if it gets too low. -+ -+Minidle is specified in negative microseconds, so 10 means that -+avgidle is capped at -10us. -+ -+.TP -+bounded -+Signifies that this class will not borrow bandwidth from its siblings. -+.TP -+isolated -+Means that this class will not borrow bandwidth to its siblings -+ -+.TP -+split major:minor & defmap bitmap[/bitmap] -+If consulting filters attached to a class did not give a verdict, -+CBQ can also classify based on the packet's priority. There are 16 -+priorities available, numbered from 0 to 15. -+ -+The defmap specifies which priorities this class wants to receive, -+specified as a bitmap. The Least Significant Bit corresponds to priority -+zero. The -+.B split -+parameter tells CBQ at which class the decision must be made, which should -+be a (grand)parent of the class you are adding. -+ -+As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' -+configures class 10:0 to send packets with priorities 6 and 7 to 10:1. -+ -+The complimentary configuration would then -+be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' -+Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. -+.TP -+estimator interval timeconstant -+CBQ can measure how much bandwidth each class is using, which tc filters -+can use to classify packets with. In order to determine the bandwidth -+it uses a very simple estimator that measures once every -+.B interval -+microseconds how much traffic has passed. This again is a EWMA, for which -+the time constant can be specified, also in microseconds. The -+.B time constant -+corresponds to the sluggishness of the measurement or, conversely, to the -+sensitivity of the average to short bursts. Higher values mean less -+sensitivity. -+ -+ -+ -+.SH SOURCES -+.TP -+o -+Sally Floyd and Van Jacobson, "Link-sharing and Resource -+Management Models for Packet Networks", -+IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on CBQ and Guarantee Service", 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on Class-Based Queueing: Setting -+Parameters", 1996 -+ -+.TP -+o -+Sally Floyd and Michael Speer, "Experimental Results -+for Class-Based Queueing", 1998, not published. -+ -+ -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-cbq.8 iproute2/debian/manpages/old/tc-cbq.8 ---- iproute2-orig/debian/manpages/old/tc-cbq.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-cbq.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,353 @@ -+.TH CBQ 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+CBQ \- Class Based Queueing -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] cbq [ allot -+bytes -+.B ] avpkt -+bytes -+.B bandwidth -+rate -+.B [ cell -+bytes -+.B ] [ ewma -+log -+.B ] [ mpu -+bytes -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] cbq allot -+bytes -+.B [ bandwidth -+rate -+.B ] [ rate -+rate -+.B ] prio -+priority -+.B [ weight -+weight -+.B ] [ minburst -+packets -+.B ] [ maxburst -+packets -+.B ] [ ewma -+log -+.B ] [ cell -+bytes -+.B ] avpkt -+bytes -+.B [ mpu -+bytes -+.B ] [ bounded isolated ] [ split -+handle -+.B & defmap -+defmap -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+Class Based Queueing is a classful qdisc that implements a rich -+linksharing hierarchy of classes. It contains shaping elements as -+well as prioritizing capabilities. Shaping is performed using link -+idle time calculations based on the timing of dequeue events and -+underlying link bandwidth. -+ -+.SH SHAPING ALGORITHM -+When shaping a 10mbit/s connection to 1mbit/s, the link will -+be idle 90% of the time. If it isn't, it needs to be throttled so that it -+IS idle 90% of the time. -+ -+During operations, the effective idletime is measured using an -+exponential weighted moving average (EWMA), which considers recent -+packets to be exponentially more important than past ones. The Unix -+loadaverage is calculated in the same way. -+ -+The calculated idle time is subtracted from the EWMA measured one, -+the resulting number is called 'avgidle'. A perfectly loaded link has -+an avgidle of zero: packets arrive exactly at the calculated -+interval. -+ -+An overloaded link has a negative avgidle and if it gets too negative, -+CBQ throttles and is then 'overlimit'. -+ -+Conversely, an idle link might amass a huge avgidle, which would then -+allow infinite bandwidths after a few hours of silence. To prevent -+this, avgidle is capped at -+.B maxidle. -+ -+If overlimit, in theory, the CBQ could throttle itself for exactly the -+amount of time that was calculated to pass between packets, and then -+pass one packet, and throttle again. Due to timer resolution constraints, -+this may not be feasible, see the -+.B minburst -+parameter below. -+ -+.SH CLASSIFICATION -+Within the one CBQ instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, CBQ starts at the root and uses various methods to -+determine which class should receive the data. -+ -+In the absence of uncommon configuration options, the process is rather easy. -+At each node we look for an instruction, and then go to the class the -+instruction refers us to. If the class found is a barren leaf-node (without -+children), we enqueue the packet there. If it is not yet a leaf node, we do -+the whole thing over again starting from that node. -+ -+The following actions are performed, in order at each node we visit, until one -+sends us to another node, or terminates the process. -+.TP -+(i) -+Consult filters attached to the class. If sent to a leafnode, we are done. -+Otherwise, restart. -+.TP -+(ii) -+Consult the defmap for the priority assigned to this packet, which depends -+on the TOS bits. Check if the referral is leafless, otherwise restart. -+.TP -+(iii) -+Ask the defmap for instructions for the 'best effort' priority. Check the -+answer for leafness, otherwise restart. -+.TP -+(iv) -+If none of the above returned with an instruction, enqueue at this node. -+.P -+This algorithm makes sure that a packet always ends up somewhere, even while -+you are busy building your configuration. -+ -+For more details, see -+.BR tc-cbq-details(8). -+ -+.SH LINK SHARING ALGORITHM -+When dequeuing for sending to the network device, CBQ decides which of its -+classes will be allowed to send. It does so with a Weighted Round Robin process -+in which each class with packets gets a chance to send in turn. The WRR process -+starts by asking the highest priority classes (lowest numerically - -+highest semantically) for packets, and will continue to do so until they -+have no more data to offer, in which case the process repeats for lower -+priorities. -+ -+Classes by default borrow bandwidth from their siblings. A class can be -+prevented from doing so by declaring it 'bounded'. A class can also indicate -+its unwillingness to lend out bandwidth by being 'isolated'. -+ -+.SH QDISC -+The root of a CBQ qdisc class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the CBQ instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the CBQ can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional, but very useful if classes -+will be generated within this qdisc. -+.TP -+allot bytes -+This allotment is the 'chunkiness' of link sharing and is used for determining packet -+transmission time tables. The qdisc allot differs slightly from the class allot discussed -+below. Optional. Defaults to a reasonable value, related to avpkt. -+.TP -+avpkt bytes -+The average size of a packet is needed for calculating maxidle, and is also used -+for making sure 'allot' has a safe value. Mandatory. -+.TP -+bandwidth rate -+To determine the idle time, CBQ must know the bandwidth of your underlying -+physical interface, or parent qdisc. This is a vital parameter, more about it -+later. Mandatory. -+.TP -+cell -+The cell size determines he granularity of packet transmission time calculations. Has a sensible default. -+.TP -+mpu -+A zero sized packet may still take time to transmit. This value is the lower -+cap for packet transmission time calculations - packets smaller than this value -+are still deemed to have this size. Defaults to zero. -+.TP -+ewma log -+When CBQ needs to measure the average idle time, it does so using an -+Exponentially Weighted Moving Average which smoothes out measurements into -+a moving average. The EWMA LOG determines how much smoothing occurs. Lower -+values imply greater sensitivity. Must be between 0 and 31. Defaults -+to 5. -+.P -+A CBQ qdisc does not shape out of its own accord. It only needs to know certain -+parameters about the underlying link. Actual shaping is done in classes. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+weight weight -+When dequeuing to the interface, classes are tried for traffic in a -+round-robin fashion. Classes with a higher configured qdisc will generally -+have more traffic to offer during each round, so it makes sense to allow -+it to dequeue more traffic. All weights under a class are normalized, so -+only the ratios matter. Defaults to the configured rate, unless the priority -+of this class is maximal, in which case it is set to 1. -+.TP -+allot bytes -+Allot specifies how many bytes a qdisc can dequeue -+during each round of the process. This parameter is weighted using the -+renormalized class weight described above. Silently capped at a minimum of -+3/2 avpkt. Mandatory. -+ -+.TP -+prio priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+avpkt -+See the QDISC section. -+ -+.TP -+rate rate -+Maximum rate this class and all its children combined can send at. Mandatory. -+ -+.TP -+bandwidth rate -+This is different from the bandwidth specified when creating a CBQ disc! Only -+used to determine maxidle and offtime, which are only calculated when -+specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. -+ -+.TP -+maxburst -+This number of packets is used to calculate maxidle so that when -+avgidle is at maxidle, this number of average packets can be burst -+before avgidle drops to 0. Set it higher to be more tolerant of -+bursts. You can't set maxidle directly, only via this parameter. -+ -+.TP -+minburst -+As mentioned before, CBQ needs to throttle in case of -+overlimit. The ideal solution is to do so for exactly the calculated -+idle time, and pass 1 packet. However, Unix kernels generally have a -+hard time scheduling events shorter than 10ms, so it is better to -+throttle for a longer period, and then pass minburst packets in one -+go, and then sleep minburst times longer. -+ -+The time to wait is called the offtime. Higher values of minburst lead -+to more accurate shaping in the long term, but to bigger bursts at -+millisecond timescales. Optional. -+ -+.TP -+minidle -+If avgidle is below 0, we are overlimits and need to wait until -+avgidle will be big enough to send one packet. To prevent a sudden -+burst from shutting down the link for a prolonged period of time, -+avgidle is reset to minidle if it gets too low. -+ -+Minidle is specified in negative microseconds, so 10 means that -+avgidle is capped at -10us. Optional. -+ -+.TP -+bounded -+Signifies that this class will not borrow bandwidth from its siblings. -+.TP -+isolated -+Means that this class will not borrow bandwidth to its siblings -+ -+.TP -+split major:minor & defmap bitmap[/bitmap] -+If consulting filters attached to a class did not give a verdict, -+CBQ can also classify based on the packet's priority. There are 16 -+priorities available, numbered from 0 to 15. -+ -+The defmap specifies which priorities this class wants to receive, -+specified as a bitmap. The Least Significant Bit corresponds to priority -+zero. The -+.B split -+parameter tells CBQ at which class the decision must be made, which should -+be a (grand)parent of the class you are adding. -+ -+As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' -+configures class 10:0 to send packets with priorities 6 and 7 to 10:1. -+ -+The complimentary configuration would then -+be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' -+Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. -+.TP -+estimator interval timeconstant -+CBQ can measure how much bandwidth each class is using, which tc filters -+can use to classify packets with. In order to determine the bandwidth -+it uses a very simple estimator that measures once every -+.B interval -+microseconds how much traffic has passed. This again is a EWMA, for which -+the time constant can be specified, also in microseconds. The -+.B time constant -+corresponds to the sluggishness of the measurement or, conversely, to the -+sensitivity of the average to short bursts. Higher values mean less -+sensitivity. -+ -+.SH BUGS -+The actual bandwidth of the underlying link may not be known, for example -+in the case of PPoE or PPTP connections which in fact may send over a -+pipe, instead of over a physical device. CBQ is quite resilient to major -+errors in the configured bandwidth, probably a the cost of coarser shaping. -+ -+Default kernels rely on coarse timing information for making decisions. These -+may make shaping precise in the long term, but inaccurate on second long scales. -+ -+See -+.BR tc-cbq-details(8) -+for hints on how to improve this. -+ -+.SH SOURCES -+.TP -+o -+Sally Floyd and Van Jacobson, "Link-sharing and Resource -+Management Models for Packet Networks", -+IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on Class-Based Queueing: Setting -+Parameters", 1996 -+ -+.TP -+o -+Sally Floyd and Michael Speer, "Experimental Results -+for Class-Based Queueing", 1998, not published. -+ -+ -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-htb.8 iproute2/debian/manpages/old/tc-htb.8 ---- iproute2-orig/debian/manpages/old/tc-htb.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-htb.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,150 @@ -+.TH HTB 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+HTB \- Hierarchy Token Bucket -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] htb [ default -+minor-id -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] htb rate -+rate -+.B [ ceil -+rate -+.B ] burst -+bytes -+.B [ cburst -+bytes -+.B ] [ prio -+priority -+.B ] -+ -+.SH DESCRIPTION -+HTB is meant as a more understandable and intuitive replacement for -+the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use -+of the outbound bandwidth on a given link. Both allow you to use one -+physical link to simulate several slower links and to send different -+kinds of traffic on different simulated links. In both cases, you have -+to specify how to divide the physical link into simulated links and -+how to decide which simulated link to use for a given packet to be sent. -+ -+Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm -+which does not depend on interface characteristics and so does not need to -+know the underlying bandwidth of the outgoing interface. -+ -+.SH SHAPING ALGORITHM -+Shaping works as documented in -+.B tc-tbf (8). -+ -+.SH CLASSIFICATION -+Within the one HRB instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, HTB starts at the root and uses various methods to -+determine which class should receive the data. -+ -+In the absence of uncommon configuration options, the process is rather easy. -+At each node we look for an instruction, and then go to the class the -+instruction refers us to. If the class found is a barren leaf-node (without -+children), we enqueue the packet there. If it is not yet a leaf node, we do -+the whole thing over again starting from that node. -+ -+The following actions are performed, in order at each node we visit, until one -+sends us to another node, or terminates the process. -+.TP -+(i) -+Consult filters attached to the class. If sent to a leafnode, we are done. -+Otherwise, restart. -+.TP -+(ii) -+If none of the above returned with an instruction, enqueue at this node. -+.P -+This algorithm makes sure that a packet always ends up somewhere, even while -+you are busy building your configuration. -+ -+.SH LINK SHARING ALGORITHM -+FIXME -+ -+.SH QDISC -+The root of a HTB qdisc class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the HTB instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the HTB can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional, but very useful if classes -+will be generated within this qdisc. -+.TP -+default minor-id -+Unclassified traffic gets sent to the class with this minor-id. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+prio priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+rate rate -+Maximum rate this class and all its children are guaranteed. Mandatory. -+ -+.TP -+ceil rate -+Maximum rate at which a class can send, if its parent has bandwidth to spare. -+Defaults to the configured rate, which implies no borrowing -+ -+.TP -+burst bytes -+Amount of bytes that can be burst at -+.B ceil -+speed, in excess of the configured -+.B rate. -+Should be at least as high as the highest burst of all children. -+ -+.TP -+cburst bytes -+Amount of bytes that can be burst at 'infinite' speed, in other words, as fast -+as the interface can transmit them. For perfect evening out, should be equal to at most one average -+packet. Should be at least as high as the highest cburst of all children. -+ -+.SH NOTES -+Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel, -+there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick. -+From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte -+burst as 100*12kb*8 equals 10mbit. -+ -+.SH SEE ALSO -+.BR tc (8) -+.P -+HTB website: http://luxik.cdi.cz/~devik/qos/htb/ -+.SH AUTHOR -+Martin Devera . This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-pbfifo.8 iproute2/debian/manpages/old/tc-pbfifo.8 ---- iproute2-orig/debian/manpages/old/tc-pbfifo.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-pbfifo.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,72 @@ -+.TH PBFIFO 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+pfifo \- Packet limited First In, First Out queue -+.P -+bfifo \- Byte limited First In, First Out queue -+ -+.SH SYNOPSIS -+.B tc qdisc ... add pfifo -+.B [ limit -+packets -+.B ] -+.P -+.B tc qdisc ... add bfifo -+.B [ limit -+bytes -+.B ] -+ -+.SH DESCRIPTION -+The pfifo and bfifo qdiscs are unadorned First In, First Out queues. They are the -+simplest queues possible and therefore have no overhead. -+.B pfifo -+constrains the queue size as measured in packets. -+.B bfifo -+does so as measured in bytes. -+ -+Like all non-default qdiscs, they maintain statistics. This might be a reason to prefer -+pfifo or bfifo over the default. -+ -+.SH ALGORITHM -+A list of packets is maintained, when a packet is enqueued it gets inserted at the tail of -+a list. When a packet needs to be sent out to the network, it is taken from the head of the list. -+ -+If the list is too long, no further packets are allowed on. This is called 'tail drop'. -+ -+.SH PARAMETERS -+.TP -+limit -+Maximum queue size. Specified in bytes for bfifo, in packets for pfifo. For pfifo, defaults -+to the interface txqueuelen, as specified with -+.BR ifconfig (8) -+or -+.BR ip (8). -+ -+For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. -+ -+.SH OUTPUT -+The output of -+.B tc -s qdisc ls -+contains the limit, either in packets or in bytes, and the number of bytes -+and packets actually sent. An unsent and dropped packet only appears between braces -+and is not counted as 'Sent'. -+ -+In this example, the queue length is 100 packets, 45894 bytes were sent over 681 packets. -+No packets were dropped, and as the pfifo queue does not slow down packets, there were also no -+overlimits: -+.P -+.nf -+# tc -s qdisc ls dev eth0 -+qdisc pfifo 8001: dev eth0 limit 100p -+ Sent 45894 bytes 681 pkts (dropped 0, overlimits 0) -+.fi -+ -+If a backlog occurs, this is displayed as well. -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, -+ -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-pfifo_fast.8 iproute2/debian/manpages/old/tc-pfifo_fast.8 ---- iproute2-orig/debian/manpages/old/tc-pfifo_fast.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-pfifo_fast.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,59 @@ -+.TH PFIFO_FAST 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+pfifo_fast \- three-band first in, first out queue -+ -+.SH DESCRIPTION -+pfifo_fast is the default qdisc of each interface. -+ -+Whenever an interface is created, the pfifo_fast qdisc is automatically used -+as a queue. If another qdisc is attached, it preempts the default -+pfifo_fast, which automatically returns to function when an existing qdisc -+is detached. -+ -+In this sense this qdisc is magic, and unlike other qdiscs. -+ -+.SH ALGORITHM -+The algorithm is very similar to that of the classful -+.BR tc-prio (8) -+qdisc. -+.B pfifo_fast -+is like three -+.BR tc-pfifo (8) -+queues side by side, where packets can be enqueued in any of the three bands -+based on their Type of Service bits or assigned priority. -+ -+Not all three bands are dequeued simultaneously - as long as lower bands -+have traffic, higher bands are never dequeued. This can be used to -+prioritize interactive traffic or penalize 'lowest cost' traffic. -+ -+Each band can be txqueuelen packets long, as configured with -+.BR ifconfig (8) -+or -+.BR ip (8). -+Additional packets coming in are not enqueued but are instead dropped. -+ -+See -+.BR tc-prio (8) -+for complete details on how TOS bits are translated into bands. -+.SH PARAMETERS -+.TP -+txqueuelen -+The length of the three bands depends on the interface txqueuelen, as -+specified with -+.BR ifconfig (8) -+or -+.BR ip (8). -+ -+.SH BUGS -+Does not maintain statistics and does not show up in tc qdisc ls. This is because -+it is the automatic default in the absence of a configured qdisc. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, -+ -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-prio.8 iproute2/debian/manpages/old/tc-prio.8 ---- iproute2-orig/debian/manpages/old/tc-prio.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-prio.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,187 @@ -+.TH PRIO 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+PRIO \- Priority qdisc -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] prio [ bands -+bands -+.B ] [ priomap -+band,band,band... -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+The PRIO qdisc is a simple classful queueing discipline that contains -+an arbitrary number of classes of differing priority. The classes are -+dequeued in numerical descending order of priority. PRIO is a scheduler -+and never delays packets - it is a work-conserving qdisc, though the qdiscs -+contained in the classes may not be. -+ -+Very useful for lowering latency when there is no need for slowing down -+traffic. -+ -+.SH ALGORITHM -+On creation with 'tc qdisc add', a fixed number of bands is created. Each -+band is a class, although is not possible to add classes with 'tc qdisc -+add', the number of bands to be created must instead be specified on the -+commandline attaching PRIO to its root. -+ -+When dequeueing, band 0 is tried first and only if it did not deliver a -+packet does PRIO try band 1, and so onwards. Maximum reliability packets -+should therefore go to band 0, minimum delay to band 1 and the rest to band -+2. -+ -+As the PRIO qdisc itself will have minor number 0, band 0 is actually -+major:1, band 1 is major:2, etc. For major, substitute the major number -+assigned to the qdisc on 'tc qdisc add' with the -+.B handle -+parameter. -+ -+.SH CLASSIFICATION -+Three methods are available to PRIO to determine in which band a packet will -+be enqueued. -+.TP -+From userspace -+A process with sufficient privileges can encode the destination class -+directly with SO_PRIORITY, see -+.BR tc(7). -+.TP -+with a tc filter -+A tc filter attached to the root qdisc can point traffic directly to a class -+.TP -+with the priomap -+Based on the packet priority, which in turn is derived from the Type of -+Service assigned to the packet. -+.P -+Only the priomap is specific to this qdisc. -+.SH QDISC PARAMETERS -+.TP -+bands -+Number of bands. If changed from the default of 3, -+.B priomap -+must be updated as well. -+.TP -+priomap -+The priomap maps the priority of -+a packet to a class. The priority can either be set directly from userspace, -+or be derived from the Type of Service of the packet. -+ -+Determines how packet priorities, as assigned by the kernel, map to -+bands. Mapping occurs based on the TOS octet of the packet, which looks like -+this: -+ -+.nf -+0 1 2 3 4 5 6 7 -++---+---+---+---+---+---+---+---+ -+| | | | -+|PRECEDENCE | TOS |MBZ| -+| | | | -++---+---+---+---+---+---+---+---+ -+.fi -+ -+The four TOS bits (the 'TOS field') are defined as: -+ -+.nf -+Binary Decimcal Meaning -+----------------------------------------- -+1000 8 Minimize delay (md) -+0100 4 Maximize throughput (mt) -+0010 2 Maximize reliability (mr) -+0001 1 Minimize monetary cost (mmc) -+0000 0 Normal Service -+.fi -+ -+As there is 1 bit to the right of these four bits, the actual value of the -+TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the -+value of the entire TOS field, not just the four bits. It is the value you -+see in the first column of this table: -+ -+.nf -+TOS Bits Means Linux Priority Band -+------------------------------------------------------------ -+0x0 0 Normal Service 0 Best Effort 1 -+0x2 1 Minimize Monetary Cost 1 Filler 2 -+0x4 2 Maximize Reliability 0 Best Effort 1 -+0x6 3 mmc+mr 0 Best Effort 1 -+0x8 4 Maximize Throughput 2 Bulk 2 -+0xa 5 mmc+mt 2 Bulk 2 -+0xc 6 mr+mt 2 Bulk 2 -+0xe 7 mmc+mr+mt 2 Bulk 2 -+0x10 8 Minimize Delay 6 Interactive 0 -+0x12 9 mmc+md 6 Interactive 0 -+0x14 10 mr+md 6 Interactive 0 -+0x16 11 mmc+mr+md 6 Interactive 0 -+0x18 12 mt+md 4 Int. Bulk 1 -+0x1a 13 mmc+mt+md 4 Int. Bulk 1 -+0x1c 14 mr+mt+md 4 Int. Bulk 1 -+0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 -+.fi -+ -+The second column contains the value of the relevant -+four TOS bits, followed by their translated meaning. For example, 15 stands -+for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum -+Throughput AND Minimum Delay. -+ -+The fourth column lists the way the Linux kernel interprets the TOS bits, by -+showing to which Priority they are mapped. -+ -+The last column shows the result of the default priomap. On the commandline, -+the default priomap looks like this: -+ -+ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 -+ -+This means that priority 4, for example, gets mapped to band number 1. -+The priomap also allows you to list higher priorities (> 7) which do not -+correspond to TOS mappings, but which are set by other means. -+ -+This table from RFC 1349 (read it for more details) explains how -+applications might very well set their TOS bits: -+ -+.nf -+TELNET 1000 (minimize delay) -+FTP -+ Control 1000 (minimize delay) -+ Data 0100 (maximize throughput) -+ -+TFTP 1000 (minimize delay) -+ -+SMTP -+ Command phase 1000 (minimize delay) -+ DATA phase 0100 (maximize throughput) -+ -+Domain Name Service -+ UDP Query 1000 (minimize delay) -+ TCP Query 0000 -+ Zone Transfer 0100 (maximize throughput) -+ -+NNTP 0001 (minimize monetary cost) -+ -+ICMP -+ Errors 0000 -+ Requests 0000 (mostly) -+ Responses (mostly) -+.fi -+ -+ -+.SH CLASSES -+PRIO classes cannot be configured further - they are automatically created -+when the PRIO qdisc is attached. Each class however can contain yet a -+further qdisc. -+ -+.SH BUGS -+Large amounts of traffic in the lower bands can cause starvation of higher -+bands. Can be prevented by attaching a shaper (for example, -+.BR tc-tbf(8) -+to these bands to make sure they cannot dominate the link. -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, , J Hadi Salim -+. This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-red.8 iproute2/debian/manpages/old/tc-red.8 ---- iproute2-orig/debian/manpages/old/tc-red.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-red.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,131 @@ -+.TH RED 8 "13 December 2001" "iproute2" "Linux" -+.SH NAME -+red \- Random Early Detection -+.SH SYNOPSIS -+.B tc qdisc ... red -+.B limit -+bytes -+.B min -+bytes -+.B max -+bytes -+.B avpkt -+bytes -+.B burst -+packets -+.B [ ecn ] [ bandwidth -+rate -+.B ] probability -+chance -+ -+.SH DESCRIPTION -+Random Early Detection is a classless qdisc which manages its queue size -+smartly. Regular queues simply drop packets from the tail when they are -+full, which may not be the optimal behaviour. RED also performs tail drop, -+but does so in a more gradual way. -+ -+Once the queue hits a certain average length, packets enqueued have a -+configurable chance of being marked (which may mean dropped). This chance -+increases linearly up to a point called the -+.B max -+average queue length, although the queue might get bigger. -+ -+This has a host of benefits over simple taildrop, while not being processor -+intensive. It prevents synchronous retransmits after a burst in traffic, -+which cause further retransmits, etc. -+ -+The goal is the have a small queue size, which is good for interactivity -+while not disturbing TCP/IP traffic with too many sudden drops after a burst -+of traffic. -+ -+Depending on if ECN is configured, marking either means dropping or -+purely marking a packet as overlimit. -+.SH ALGORITHM -+The average queue size is used for determining the marking -+probability. This is calculated using an Exponential Weighted Moving -+Average, which can be more or less sensitive to bursts. -+ -+When the average queue size is below -+.B min -+bytes, no packet will ever be marked. When it exceeds -+.B min, -+the probability of doing so climbs linearly up -+to -+.B probability, -+until the average queue size hits -+.B max -+bytes. Because -+.B probability -+is normally not set to 100%, the queue size might -+conceivably rise above -+.B max -+bytes, so the -+.B limit -+parameter is provided to set a hard maximum for the size of the queue. -+ -+.SH PARAMETERS -+.TP -+min -+Average queue size at which marking becomes a possibility. -+.TP -+max -+At this average queue size, the marking probability is maximal. Should be at -+least twice -+.B min -+to prevent synchronous retransmits, higher for low -+.B min. -+.TP -+probability -+Maximum probability for marking, specified as a floating point -+number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%, -+respectively). -+.TP -+limit -+Hard limit on the real (not average) queue size in bytes. Further packets -+are dropped. Should be set higher than max+burst. It is advised to set this -+a few times higher than -+.B max. -+.TP -+burst -+Used for determining how fast the average queue size is influenced by the -+real queue size. Larger values make the calculation more sluggish, allowing -+longer bursts of traffic before marking starts. Real life experiments -+support the following guideline: (min+min+max)/(3*avpkt). -+.TP -+avpkt -+Specified in bytes. Used with burst to determine the time constant for -+average queue size calculations. 1000 is a good value. -+.TP -+bandwidth -+This rate is used for calculating the average queue size after some -+idle time. Should be set to the bandwidth of your interface. Does not mean -+that RED will shape for you! Optional. -+.TP -+ecn -+As mentioned before, RED can either 'mark' or 'drop'. Explicit Congestion -+Notification allows RED to notify remote hosts that their rate exceeds the -+amount of bandwidth available. Non-ECN capable hosts can only be notified by -+dropping a packet. If this parameter is specified, packets which indicate -+that their hosts honor ECN will only be marked and not dropped, unless the -+queue size hits -+.B limit -+bytes. Needs a tc binary with RED support compiled in. Recommended. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH SOURCES -+.TP -+o -+Floyd, S., and Jacobson, V., Random Early Detection gateways for -+Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html -+.TP -+o -+Some changes to the algorithm by Alexey N. Kuznetsov. -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, , Alexey Makarenko -+, J Hadi Salim . -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-sfq.8 iproute2/debian/manpages/old/tc-sfq.8 ---- iproute2-orig/debian/manpages/old/tc-sfq.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-sfq.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,107 @@ -+.TH TC 8 "8 December 2001" "iproute2" "Linux" -+.SH NAME -+sfq \- Stochastic Fairness Queueing -+.SH SYNOPSIS -+.B tc qdisc ... perturb -+seconds -+.B quantum -+bytes -+ -+.SH DESCRIPTION -+ -+Stochastic Fairness Queueing is a classless queueing discipline available for -+traffic control with the -+.BR tc (8) -+command. -+ -+SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'. -+The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing -+any single flow from drowning out the rest. -+ -+This may in fact have some effect in mitigating a Denial of Service attempt. -+ -+SFQ is work-conserving and therefore always delivers a packet if it has one available. -+.SH ALGORITHM -+On enqueueing, each packet is assigned to a hash bucket, based on -+.TP -+(i) -+Source address -+.TP -+(ii) -+Destination address -+.TP -+(iii) -+Source port -+.P -+If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP. -+Packets with other protocols are hashed based on the 32bits representation of their -+destination and the socket they belong to. A flow corresponds mostly to a TCP/IP -+connection. -+ -+Each of these buckets should represent a unique flow. Because multiple flows may -+get hashed to the same bucket, the hashing algorithm is perturbed at configurable -+intervals so that the unfairness lasts only for a short while. Perturbation may -+however cause some inadvertent packet reordering to occur. -+ -+When dequeuing, each hashbucket with data is queried in a round robin fashion. -+ -+The compile time maximum length of the SFQ is 128 packets, which can be spread over -+at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed -+on the fullest bucket, thus maintaining fairness. -+ -+.SH PARAMETERS -+.TP -+perturb -+Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that -+no perturbation occurs. Do not set too low for each perturbation may cause some packet -+reordering. Advised value: 10 -+.TP -+quantum -+Amount of bytes a flow is allowed to dequeue during a round of the round robin process. -+Defaults to the MTU of the interface which is also the advised value and the minimum value. -+ -+.SH EXAMPLE & USAGE -+ -+To attach to device ppp0: -+.P -+# tc qdisc add dev ppp0 root sfq perturb 10 -+.P -+Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful -+if it owns the queue. -+This is the case when the link speed equals the actually available bandwidth. This holds -+for regular phone modems, ISDN connections and direct non-switched ethernet links. -+.P -+Most often, cable modems and DSL devices do not fall into this category. The same holds -+for when connected to a switch and trying to send data to a congested segment also -+connected to the switch. -+.P -+In this case, the effective queue does not reside within Linux and is therefore not -+available for scheduling. -+.P -+Embed SFQ in a classful qdisc to make sure it owns the queue. -+ -+.SH SOURCE -+.TP -+o -+Paul E. McKenney "Stochastic Fairness Queuing", -+IEEE INFOCOMM'90 Proceedings, San Francisco, 1990. -+ -+.TP -+o -+Paul E. McKenney "Stochastic Fairness Queuing", -+"Interworking: Research and Experience", v.2, 1991, p.113-131. -+ -+.TP -+o -+See also: -+M. Shreedhar and George Varghese "Efficient Fair -+Queuing using Deficit Round Robin", Proc. SIGCOMM 95. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc-tbf.8 iproute2/debian/manpages/old/tc-tbf.8 ---- iproute2-orig/debian/manpages/old/tc-tbf.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc-tbf.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,138 @@ -+.TH TC 8 "13 December 2001" "iproute2" "Linux" -+.SH NAME -+tbf \- Token Bucket Filter -+.SH SYNOPSIS -+.B tc qdisc ... tbf rate -+rate -+.B burst -+bytes/cell -+.B ( latency -+ms -+.B | limit -+bytes -+.B ) [ mpu -+bytes -+.B [ peakrate -+rate -+.B mtu -+bytes/cell -+.B ] ] -+.P -+burst is also known as buffer and maxburst. mtu is also known as minburst. -+.SH DESCRIPTION -+ -+The Token Bucket Filter is a classless queueing discipline available for -+traffic control with the -+.BR tc (8) -+command. -+ -+TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle -+itself, although packets are available, to ensure that the configured rate is not exceeded. -+On all platforms except for Alpha, -+it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, -+sending out data exactly at the configured rates. -+ -+Much higher rates are possible but at the cost of losing the minimal burstiness. In that -+case, data is on average dequeued at the configured rate but may be sent much faster at millisecond -+timescales. Because of further queues living in network adaptors, this is often not a problem. -+ -+Kernels with a higher 'HZ' can achieve higher rates with perfect burstiness. On Alpha, HZ is ten -+times higher, leading to a 10mbit/s limit to perfection. These calculations hold for packets of on -+average 1000 bytes. -+ -+.SH ALGORITHM -+As the name implies, traffic is filtered based on the expenditure of -+.B tokens. -+Tokens roughly correspond to bytes, with the additional constraint that each packet consumes -+some tokens, no matter how small it is. This reflects the fact that even a zero-sized packet occupies -+the link for some time. -+ -+On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst -+in one go. Tokens arrive at a steady rate, until the bucket is full. -+ -+If no tokens are available, packets are queued, up to a configured limit. The TBF now -+calculates the token deficit, and throttles until the first packet in the queue can be sent. -+ -+If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured -+to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF -+with a very small bucket, so that it doesn't burst. -+ -+To achieve perfection, the second bucket may contain only a single packet, which leads to -+the earlier mentioned 1mbit/s limit. -+ -+This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends -+on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 -+packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s. -+ -+.SH PARAMETERS -+See -+.BR tc (8) -+for how to specify the units of these values. -+.TP -+limit or latency -+Limit is the number of bytes that can be queued waiting for tokens to become -+available. You can also specify this the other way around by setting the -+latency parameter, which specifies the maximum amount of time a packet can -+sit in the TBF. The latter calculation takes into account the size of the -+bucket, the rate and possibly the peakrate (if set). These two parameters -+are mutually exclusive. -+.TP -+burst -+Also known as buffer or maxburst. -+Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. -+In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer -+if you want to reach your configured rate! -+ -+If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket. -+The minimum buffer size can be calculated by dividing the rate by HZ. -+ -+Token usage calculations are performed using a table which by default has a resolution of 8 packets. -+This resolution can be changed by specifying the -+.B cell -+size with the burst. For example, to specify a 6000 byte buffer with a 16 -+byte cell size, set a burst of 6000/16. You will probably never have to set -+this. Must be an integral power of 2. -+.TP -+mpu -+A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit -+determines the minimal token usage (specified in bytes) for a packet. Defaults to zero. -+.TP -+rate -+The speed knob. See remarks above about limits! See -+.BR tc (8) -+for units. -+.PP -+Furthermore, if a peakrate is desired, the following parameters are available: -+ -+.TP -+peakrate -+Maximum depletion rate of the bucket. Limited to 1mbit/s on Intel, 10mbit/s on Alpha. The peakrate does -+not need to be set, it is only necessary if perfect millisecond timescale shaping is required. -+ -+.TP -+mtu/minburst -+Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. -+If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst -+allows around 3mbit/s of peakrate, given 1000 byte packets. -+ -+Like the regular burstsize you can also specify a -+.B cell -+size. -+.SH EXAMPLE & USAGE -+ -+To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s, -+a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes -+at most 70ms of latency, with perfect peakrate behaviour, issue: -+.P -+# tc qdisc add dev eth0 root tbf rate 0.5mbit \\ -+ burst 5kb latency 70ms peakrate 1mbit \\ -+ minburst 1540 -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/old/tc.8 iproute2/debian/manpages/old/tc.8 ---- iproute2-orig/debian/manpages/old/tc.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/old/tc.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,348 @@ -+.TH TC 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+tc \- show / manipulate traffic control settings -+.SH SYNOPSIS -+.B tc qdisc [ add | change | replace | link ] dev -+DEV -+.B -+[ parent -+qdisc-id -+.B | root ] -+.B [ handle -+qdisc-id ] qdisc -+[ qdisc specific parameters ] -+.P -+ -+.B tc class [ add | change | replace ] dev -+DEV -+.B parent -+qdisc-id -+.B [ classid -+class-id ] qdisc -+[ qdisc specific parameters ] -+.P -+ -+.B tc filter [ add | change | replace ] dev -+DEV -+.B [ parent -+qdisc-id -+.B | root ] protocol -+protocol -+.B prio -+priority filtertype -+[ filtertype specific parameters ] -+.B flowid -+flow-id -+ -+.B tc [-s | -d ] qdisc show [ dev -+DEV -+.B ] -+.P -+.B tc [-s | -d ] class show dev -+DEV -+.P -+.B tc filter show dev -+DEV -+ -+.SH DESCRIPTION -+.B Tc -+is used to configure Traffic Control in the Linux kernel. Traffic Control consists -+of the following: -+ -+.TP -+SHAPING -+When traffic is shaped, its rate of transmission is under control. Shaping may -+be more than lowering the available bandwidth - it is also used to smooth out -+bursts in traffic for better network behaviour. Shaping occurs on egress. -+ -+.TP -+SCHEDULING -+By scheduling the transmission of packets it is possible to improve interactivity -+for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering -+is also called prioritizing, and happens only on egress. -+ -+.TP -+POLICING -+Where shaping deals with transmission of traffic, policing pertains to traffic -+arriving. Policing thus occurs on ingress. -+ -+.TP -+DROPPING -+Traffic exceeding a set bandwidth may also be dropped forthwith, both on -+ingress and on egress. -+ -+.P -+Processing of traffic is controlled by three kinds of objects: qdiscs, -+classes and filters. -+ -+.SH QDISCS -+.B qdisc -+is short for 'queueing discipline' and it is elementary to -+understanding traffic control. Whenever the kernel needs to send a -+packet to an interface, it is -+.B enqueued -+to the qdisc configured for that interface. Immediately afterwards, the kernel -+tries to get as many packets as possible from the qdisc, for giving them -+to the network adaptor driver. -+ -+A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure -+First In, First Out queue. It does however store traffic when the network interface -+can't handle it momentarily. -+ -+.SH CLASSES -+Some qdiscs can contain classes, which contain further qdiscs - traffic may -+then be enqueued in any of the inner qdiscs, which are within the -+.B classes. -+When the kernel tries to dequeue a packet from such a -+.B classful qdisc -+it can come from any of the classes. A qdisc may for example prioritize -+certain kinds of traffic by trying to dequeue from certain classes -+before others. -+ -+.SH FILTERS -+A -+.B filter -+is used by a classful qdisc to determine in which class a packet will -+be enqueued. Whenever traffic arrives at a class with subclasses, it needs -+to be classified. Various methods may be employed to do so, one of these -+are the filters. All filters attached to the class are called, until one of -+them returns with a verdict. If no verdict was made, other criteria may be -+available. This differs per qdisc. -+ -+It is important to notice that filters reside -+.B within -+qdiscs - they are not masters of what happens. -+ -+.SH CLASSLESS QDISCS -+The classless qdiscs are: -+.TP -+[p|b]fifo -+Simplest usable qdisc, pure First In, First Out behaviour. Limited in -+packets or in bytes. -+.TP -+pfifo_fast -+Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band -+queue which honors Type of Service flags, as well as the priority that may be -+assigned to a packet. -+.TP -+red -+Random Early Detection simulates physical congestion by randomly dropping -+packets when nearing configured bandwidth allocation. Well suited to very -+large bandwidth applications. -+.TP -+sfq -+Stochastic Fairness Queueing reorders queued traffic so each 'session' -+gets to send a packet in turn. -+.TP -+tbf -+The Token Bucket Filter is suited for slowing traffic down to a precisely -+configured rate. Scales well to large bandwidths. -+.SH CONFIGURING CLASSLESS QDISCS -+In the absence of classful qdiscs, classless qdiscs can only be attached at -+the root of a device. Full syntax: -+.P -+.B tc qdisc add dev -+DEV -+.B root -+QDISC QDISC-PARAMETERS -+ -+To remove, issue -+.P -+.B tc qdisc del dev -+DEV -+.B root -+ -+The -+.B pfifo_fast -+qdisc is the automatic default in the absence of a configured qdisc. -+ -+.SH CLASSFUL QDISCS -+The classful qdiscs are: -+.TP -+CBQ -+Class Based Queueing implements a rich linksharing hierarchy of classes. -+It contains shaping elements as well as prioritizing capabilities. Shaping is -+performed using link idle time calculations based on average packet size and -+underlying link bandwidth. The latter may be ill-defined for some interfaces. -+.TP -+HTB -+The Hierarchy Token Bucket implements a rich linksharing hierarchy of -+classes with an emphasis on conforming to existing practices. HTB facilitates -+guaranteeing bandwidth to classes, while also allowing specification of upper -+limits to inter-class sharing. It contains shaping elements, based on TBF and -+can prioritize classes. -+.TP -+PRIO -+The PRIO qdisc is a non-shaping container for a configurable number of -+classes which are dequeued in order. This allows for easy prioritization -+of traffic, where lower classes are only able to send if higher ones have -+no packets available. To facilitate configuration, Type Of Service bits are -+honored by default. -+.SH THEORY OF OPERATION -+Classes form a tree, where each class has a single parent. -+A class may have multiple children. Some qdiscs allow for runtime addition -+of classes (CBQ, HTB) while others (PRIO) are created with a static number of -+children. -+ -+Qdiscs which allow dynamic addition of classes can have zero or more -+subclasses to which traffic may be enqueued. -+ -+Furthermore, each class contains a -+.B leaf qdisc -+which by default has -+.B pfifo -+behaviour though another qdisc can be attached in place. This qdisc may again -+contain classes, but each class can have only one leaf qdisc. -+ -+When a packet enters a classful qdisc it can be -+.B classified -+to one of the classes within. Three criteria are available, although not all -+qdiscs will use all three: -+.TP -+tc filters -+If tc filters are attached to a class, they are consulted first -+for relevant instructions. Filters can match on all fields of a packet header, -+as well as on the firewall mark applied by ipchains or iptables. See -+.BR tc-filters (8). -+.TP -+Type of Service -+Some qdiscs have built in rules for classifying packets based on the TOS field. -+.TP -+skb->priority -+Userspace programs can encode a class-id in the 'skb->priority' field using -+the SO_PRIORITY option. -+.P -+Each node within the tree can have its own filters but higher level filters -+may also point directly to lower classes. -+ -+If classification did not succeed, packets are enqueued to the leaf qdisc -+attached to that class. Check qdisc specific manpages for details, however. -+ -+.SH NAMING -+All qdiscs, classes and filters have IDs, which can either be specified -+or be automatically assigned. -+ -+IDs consist of a major number and a minor number, separated by a colon. -+ -+.TP -+QDISCS -+A qdisc, which potentially can have children, -+gets assigned a major number, called a 'handle', leaving the minor -+number namespace available for classes. The handle is expressed as '10:'. -+It is customary to explicitly assign a handle to qdiscs expected to have -+children. -+ -+.TP -+CLASSES -+Classes residing under a qdisc share their qdisc major number, but each have -+a separate minor number called a 'classid' that has no relation to their -+parent classes, only to their parent qdisc. The same naming custom as for -+qdiscs applies. -+ -+.TP -+FILTERS -+Filters have a three part ID, which is only needed when using a hashed -+filter hierarchy, for which see -+.BR tc-filters (8). -+.SH UNITS -+All parameters accept a floating point number, possibly followed by a unit. -+.P -+Bandwidths or rates can be specified in: -+.TP -+kbps -+Kilobytes per second -+.TP -+mbps -+Megabytes per second -+.TP -+kbit -+Kilobits per second -+.TP -+mbit -+Megabits per second -+.TP -+bps or a bare number -+Bytes per second -+.P -+Amounts of data can be specified in: -+.TP -+kb or k -+Kilobytes -+.TP -+mb or m -+Megabytes -+.TP -+mbit -+Megabits -+.TP -+kbit -+Kilobits -+.TP -+b or a bare number -+Bytes. -+.P -+Lengths of time can be specified in: -+.TP -+s, sec or secs -+Whole seconds -+.TP -+ms, msec or msecs -+Milliseconds -+.TP -+us, usec, usecs or a bare number -+Microseconds. -+ -+.SH TC COMMANDS -+The following commands are available for qdiscs, classes and filter: -+.TP -+add -+Add a qdisc, class or filter to a node. For all entities, a -+.B parent -+must be passed, either by passing its ID or by attaching directly to the root of a device. -+When creating a qdisc or a filter, it can be named with the -+.B handle -+parameter. A class is named with the -+.B classid -+parameter. -+ -+.TP -+remove -+A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs -+are automatically deleted, as well as any filters attached to them. -+ -+.TP -+change -+Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception -+that the handle cannot be changed and neither can the parent. In other words, -+.B -+change -+cannot move a node. -+ -+.TP -+replace -+Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet -+it is created. -+ -+.TP -+link -+Only available for qdiscs and performs a replace where the node -+must exist already. -+ -+ -+.SH HISTORY -+.B tc -+was written by Alexey N. Kuznetsov and added in Linux 2.2. -+.SH SEE ALSO -+.BR tc-cbq (8), -+.BR tc-htb (8), -+.BR tc-sfq (8), -+.BR tc-red (8), -+.BR tc-tbf (8), -+.BR tc-pfifo (8), -+.BR tc-bfifo (8), -+.BR tc-pfifo_fast (8), -+.BR tc-filters (8) -+ -+.SH AUTHOR -+Manpage maintained by bert hubert (ahu@ds9a.nl) -+ -diff -Naur iproute2-orig/debian/manpages/tc-cbq-details.8 iproute2/debian/manpages/tc-cbq-details.8 ---- iproute2-orig/debian/manpages/tc-cbq-details.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-cbq-details.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,425 @@ -+.TH CBQ 8 "8 December 2001" "iproute2" "Linux" -+.SH NAME -+CBQ \- Class Based Queueing -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] cbq avpkt -+bytes -+.B bandwidth -+rate -+.B [ cell -+bytes -+.B ] [ ewma -+log -+.B ] [ mpu -+bytes -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] cbq allot -+bytes -+.B [ bandwidth -+rate -+.B ] [ rate -+rate -+.B ] prio -+priority -+.B [ weight -+weight -+.B ] [ minburst -+packets -+.B ] [ maxburst -+packets -+.B ] [ ewma -+log -+.B ] [ cell -+bytes -+.B ] avpkt -+bytes -+.B [ mpu -+bytes -+.B ] [ bounded isolated ] [ split -+handle -+.B & defmap -+defmap -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+Class Based Queueing is a classful qdisc that implements a rich -+linksharing hierarchy of classes. It contains shaping elements as -+well as prioritizing capabilities. Shaping is performed using link -+idle time calculations based on the timing of dequeue events and -+underlying link bandwidth. -+ -+.SH SHAPING ALGORITHM -+Shaping is done using link idle time calculations, and actions taken if -+these calculations deviate from set limits. -+ -+When shaping a 10mbit/s connection to 1mbit/s, the link will -+be idle 90% of the time. If it isn't, it needs to be throttled so that it -+IS idle 90% of the time. -+ -+From the kernel's perspective, this is hard to measure, so CBQ instead -+derives the idle time from the number of microseconds (in fact, jiffies) -+that elapse between requests from the device driver for more data. Combined -+with the knowledge of packet sizes, this is used to approximate how full or -+empty the link is. -+ -+This is rather circumspect and doesn't always arrive at proper -+results. For example, what is the actual link speed of an interface -+that is not really able to transmit the full 100mbit/s of data, -+perhaps because of a badly implemented driver? A PCMCIA network card -+will also never achieve 100mbit/s because of the way the bus is -+designed - again, how do we calculate the idle time? -+ -+The physical link bandwidth may be ill defined in case of not-quite-real -+network devices like PPP over Ethernet or PPTP over TCP/IP. The effective -+bandwidth in that case is probably determined by the efficiency of pipes -+to userspace - which not defined. -+ -+During operations, the effective idletime is measured using an -+exponential weighted moving average (EWMA), which considers recent -+packets to be exponentially more important than past ones. The Unix -+loadaverage is calculated in the same way. -+ -+The calculated idle time is subtracted from the EWMA measured one, -+the resulting number is called 'avgidle'. A perfectly loaded link has -+an avgidle of zero: packets arrive exactly at the calculated -+interval. -+ -+An overloaded link has a negative avgidle and if it gets too negative, -+CBQ throttles and is then 'overlimit'. -+ -+Conversely, an idle link might amass a huge avgidle, which would then -+allow infinite bandwidths after a few hours of silence. To prevent -+this, avgidle is capped at -+.B maxidle. -+ -+If overlimit, in theory, the CBQ could throttle itself for exactly the -+amount of time that was calculated to pass between packets, and then -+pass one packet, and throttle again. Due to timer resolution constraints, -+this may not be feasible, see the -+.B minburst -+parameter below. -+ -+.SH CLASSIFICATION -+Within the one CBQ instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, CBQ starts at the root and uses various methods to -+determine which class should receive the data. If a verdict is reached, this -+process is repeated for the recipient class which might have further -+means of classifying traffic to its children, if any. -+ -+CBQ has the following methods available to classify a packet to any child -+classes. -+.TP -+(i) -+.B skb->priority class encoding. -+Can be set from userspace by an application with the -+.B SO_PRIORITY -+setsockopt. -+The -+.B skb->priority class encoding -+only applies if the skb->priority holds a major:minor handle of an existing -+class within this qdisc. -+.TP -+(ii) -+tc filters attached to the class. -+.TP -+(iii) -+The defmap of a class, as set with the -+.B split & defmap -+parameters. The defmap may contain instructions for each possible Linux packet -+priority. -+ -+.P -+Each class also has a -+.B level. -+Leaf nodes, attached to the bottom of the class hierarchy, have a level of 0. -+.SH CLASSIFICATION ALGORITHM -+ -+Classification is a loop, which terminates when a leaf class is found. At any -+point the loop may jump to the fallback algorithm. -+ -+The loop consists of the following steps: -+.TP -+(i) -+If the packet is generated locally and has a valid classid encoded within its -+.B skb->priority, -+choose it and terminate. -+ -+.TP -+(ii) -+Consult the tc filters, if any, attached to this child. If these return -+a class which is not a leaf class, restart loop from the class returned. -+If it is a leaf, choose it and terminate. -+.TP -+(iii) -+If the tc filters did not return a class, but did return a classid, -+try to find a class with that id within this qdisc. -+Check if the found class is of a lower -+.B level -+than the current class. If so, and the returned class is not a leaf node, -+restart the loop at the found class. If it is a leaf node, terminate. -+If we found an upward reference to a higher level, enter the fallback -+algorithm. -+.TP -+(iv) -+If the tc filters did not return a class, nor a valid reference to one, -+consider the minor number of the reference to be the priority. Retrieve -+a class from the defmap of this class for the priority. If this did not -+contain a class, consult the defmap of this class for the -+.B BEST_EFFORT -+class. If this is an upward reference, or no -+.B BEST_EFFORT -+class was defined, -+enter the fallback algorithm. If a valid class was found, and it is not a -+leaf node, restart the loop at this class. If it is a leaf, choose it and -+terminate. If -+neither the priority distilled from the classid, nor the -+.B BEST_EFFORT -+priority yielded a class, enter the fallback algorithm. -+.P -+The fallback algorithm resides outside of the loop and is as follows. -+.TP -+(i) -+Consult the defmap of the class at which the jump to fallback occured. If -+the defmap contains a class for the -+.B -+priority -+of the class (which is related to the TOS field), choose this class and -+terminate. -+.TP -+(ii) -+Consult the map for a class for the -+.B BEST_EFFORT -+priority. If found, choose it, and terminate. -+.TP -+(iii) -+Choose the class at which break out to the fallback algorithm occured. Terminate. -+.P -+The packet is enqueued to the class which was chosen when either algorithm -+terminated. It is therefore possible for a packet to be enqueued *not* at a -+leaf node, but in the middle of the hierarchy. -+ -+.SH LINK SHARING ALGORITHM -+When dequeuing for sending to the network device, CBQ decides which of its -+classes will be allowed to send. It does so with a Weighted Round Robin process -+in which each class with packets gets a chance to send in turn. The WRR process -+starts by asking the highest priority classes (lowest numerically - -+highest semantically) for packets, and will continue to do so until they -+have no more data to offer, in which case the process repeats for lower -+priorities. -+ -+.B CERTAINTY ENDS HERE, ANK PLEASE HELP -+ -+Each class is not allowed to send at length though - they can only dequeue a -+configurable amount of data during each round. -+ -+If a class is about to go overlimit, and it is not -+.B bounded -+it will try to borrow avgidle from siblings that are not -+.B isolated. -+This process is repeated from the bottom upwards. If a class is unable -+to borrow enough avgidle to send a packet, it is throttled and not asked -+for a packet for enough time for the avgidle to increase above zero. -+ -+.B I REALLY NEED HELP FIGURING THIS OUT. REST OF DOCUMENT IS PRETTY CERTAIN -+.B AGAIN. -+ -+.SH QDISC -+The root qdisc of a CBQ class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the CBQ instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the CBQ can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional. -+.TP -+avpkt bytes -+For calculations, the average packet size must be known. It is silently capped -+at a minimum of 2/3 of the interface MTU. Mandatory. -+.TP -+bandwidth rate -+To determine the idle time, CBQ must know the bandwidth of your underlying -+physical interface, or parent qdisc. This is a vital parameter, more about it -+later. Mandatory. -+.TP -+cell -+The cell size determines he granularity of packet transmission time calculations. Has a sensible default. -+.TP -+mpu -+A zero sized packet may still take time to transmit. This value is the lower -+cap for packet transmission time calculations - packets smaller than this value -+are still deemed to have this size. Defaults to zero. -+.TP -+ewma log -+When CBQ needs to measure the average idle time, it does so using an -+Exponentially Weighted Moving Average which smoothes out measurements into -+a moving average. The EWMA LOG determines how much smoothing occurs. Defaults -+to 5. Lower values imply greater sensitivity. Must be between 0 and 31. -+.P -+A CBQ qdisc does not shape out of its own accord. It only needs to know certain -+parameters about the underlying link. Actual shaping is done in classes. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+weight weight -+When dequeuing to the interface, classes are tried for traffic in a -+round-robin fashion. Classes with a higher configured qdisc will generally -+have more traffic to offer during each round, so it makes sense to allow -+it to dequeue more traffic. All weights under a class are normalized, so -+only the ratios matter. Defaults to the configured rate, unless the priority -+of this class is maximal, in which case it is set to 1. -+.TP -+allot bytes -+Allot specifies how many bytes a qdisc can dequeue -+during each round of the process. This parameter is weighted using the -+renormalized class weight described above. -+ -+.TP -+priority priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+rate rate -+Maximum rate this class and all its children combined can send at. Mandatory. -+ -+.TP -+bandwidth rate -+This is different from the bandwidth specified when creating a CBQ disc. Only -+used to determine maxidle and offtime, which are only calculated when -+specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. -+ -+.TP -+maxburst -+This number of packets is used to calculate maxidle so that when -+avgidle is at maxidle, this number of average packets can be burst -+before avgidle drops to 0. Set it higher to be more tolerant of -+bursts. You can't set maxidle directly, only via this parameter. -+ -+.TP -+minburst -+As mentioned before, CBQ needs to throttle in case of -+overlimit. The ideal solution is to do so for exactly the calculated -+idle time, and pass 1 packet. However, Unix kernels generally have a -+hard time scheduling events shorter than 10ms, so it is better to -+throttle for a longer period, and then pass minburst packets in one -+go, and then sleep minburst times longer. -+ -+The time to wait is called the offtime. Higher values of minburst lead -+to more accurate shaping in the long term, but to bigger bursts at -+millisecond timescales. -+ -+.TP -+minidle -+If avgidle is below 0, we are overlimits and need to wait until -+avgidle will be big enough to send one packet. To prevent a sudden -+burst from shutting down the link for a prolonged period of time, -+avgidle is reset to minidle if it gets too low. -+ -+Minidle is specified in negative microseconds, so 10 means that -+avgidle is capped at -10us. -+ -+.TP -+bounded -+Signifies that this class will not borrow bandwidth from its siblings. -+.TP -+isolated -+Means that this class will not borrow bandwidth to its siblings -+ -+.TP -+split major:minor & defmap bitmap[/bitmap] -+If consulting filters attached to a class did not give a verdict, -+CBQ can also classify based on the packet's priority. There are 16 -+priorities available, numbered from 0 to 15. -+ -+The defmap specifies which priorities this class wants to receive, -+specified as a bitmap. The Least Significant Bit corresponds to priority -+zero. The -+.B split -+parameter tells CBQ at which class the decision must be made, which should -+be a (grand)parent of the class you are adding. -+ -+As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' -+configures class 10:0 to send packets with priorities 6 and 7 to 10:1. -+ -+The complimentary configuration would then -+be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' -+Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. -+.TP -+estimator interval timeconstant -+CBQ can measure how much bandwidth each class is using, which tc filters -+can use to classify packets with. In order to determine the bandwidth -+it uses a very simple estimator that measures once every -+.B interval -+microseconds how much traffic has passed. This again is a EWMA, for which -+the time constant can be specified, also in microseconds. The -+.B time constant -+corresponds to the sluggishness of the measurement or, conversely, to the -+sensitivity of the average to short bursts. Higher values mean less -+sensitivity. -+ -+ -+ -+.SH SOURCES -+.TP -+o -+Sally Floyd and Van Jacobson, "Link-sharing and Resource -+Management Models for Packet Networks", -+IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on CBQ and Guarantee Service", 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on Class-Based Queueing: Setting -+Parameters", 1996 -+ -+.TP -+o -+Sally Floyd and Michael Speer, "Experimental Results -+for Class-Based Queueing", 1998, not published. -+ -+ -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-cbq.8 iproute2/debian/manpages/tc-cbq.8 ---- iproute2-orig/debian/manpages/tc-cbq.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-cbq.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,353 @@ -+.TH CBQ 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+CBQ \- Class Based Queueing -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] cbq [ allot -+bytes -+.B ] avpkt -+bytes -+.B bandwidth -+rate -+.B [ cell -+bytes -+.B ] [ ewma -+log -+.B ] [ mpu -+bytes -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] cbq allot -+bytes -+.B [ bandwidth -+rate -+.B ] [ rate -+rate -+.B ] prio -+priority -+.B [ weight -+weight -+.B ] [ minburst -+packets -+.B ] [ maxburst -+packets -+.B ] [ ewma -+log -+.B ] [ cell -+bytes -+.B ] avpkt -+bytes -+.B [ mpu -+bytes -+.B ] [ bounded isolated ] [ split -+handle -+.B & defmap -+defmap -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+Class Based Queueing is a classful qdisc that implements a rich -+linksharing hierarchy of classes. It contains shaping elements as -+well as prioritizing capabilities. Shaping is performed using link -+idle time calculations based on the timing of dequeue events and -+underlying link bandwidth. -+ -+.SH SHAPING ALGORITHM -+When shaping a 10mbit/s connection to 1mbit/s, the link will -+be idle 90% of the time. If it isn't, it needs to be throttled so that it -+IS idle 90% of the time. -+ -+During operations, the effective idletime is measured using an -+exponential weighted moving average (EWMA), which considers recent -+packets to be exponentially more important than past ones. The Unix -+loadaverage is calculated in the same way. -+ -+The calculated idle time is subtracted from the EWMA measured one, -+the resulting number is called 'avgidle'. A perfectly loaded link has -+an avgidle of zero: packets arrive exactly at the calculated -+interval. -+ -+An overloaded link has a negative avgidle and if it gets too negative, -+CBQ throttles and is then 'overlimit'. -+ -+Conversely, an idle link might amass a huge avgidle, which would then -+allow infinite bandwidths after a few hours of silence. To prevent -+this, avgidle is capped at -+.B maxidle. -+ -+If overlimit, in theory, the CBQ could throttle itself for exactly the -+amount of time that was calculated to pass between packets, and then -+pass one packet, and throttle again. Due to timer resolution constraints, -+this may not be feasible, see the -+.B minburst -+parameter below. -+ -+.SH CLASSIFICATION -+Within the one CBQ instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, CBQ starts at the root and uses various methods to -+determine which class should receive the data. -+ -+In the absence of uncommon configuration options, the process is rather easy. -+At each node we look for an instruction, and then go to the class the -+instruction refers us to. If the class found is a barren leaf-node (without -+children), we enqueue the packet there. If it is not yet a leaf node, we do -+the whole thing over again starting from that node. -+ -+The following actions are performed, in order at each node we visit, until one -+sends us to another node, or terminates the process. -+.TP -+(i) -+Consult filters attached to the class. If sent to a leafnode, we are done. -+Otherwise, restart. -+.TP -+(ii) -+Consult the defmap for the priority assigned to this packet, which depends -+on the TOS bits. Check if the referral is leafless, otherwise restart. -+.TP -+(iii) -+Ask the defmap for instructions for the 'best effort' priority. Check the -+answer for leafness, otherwise restart. -+.TP -+(iv) -+If none of the above returned with an instruction, enqueue at this node. -+.P -+This algorithm makes sure that a packet always ends up somewhere, even while -+you are busy building your configuration. -+ -+For more details, see -+.BR tc-cbq-details(8). -+ -+.SH LINK SHARING ALGORITHM -+When dequeuing for sending to the network device, CBQ decides which of its -+classes will be allowed to send. It does so with a Weighted Round Robin process -+in which each class with packets gets a chance to send in turn. The WRR process -+starts by asking the highest priority classes (lowest numerically - -+highest semantically) for packets, and will continue to do so until they -+have no more data to offer, in which case the process repeats for lower -+priorities. -+ -+Classes by default borrow bandwidth from their siblings. A class can be -+prevented from doing so by declaring it 'bounded'. A class can also indicate -+its unwillingness to lend out bandwidth by being 'isolated'. -+ -+.SH QDISC -+The root of a CBQ qdisc class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the CBQ instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the CBQ can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional, but very useful if classes -+will be generated within this qdisc. -+.TP -+allot bytes -+This allotment is the 'chunkiness' of link sharing and is used for determining packet -+transmission time tables. The qdisc allot differs slightly from the class allot discussed -+below. Optional. Defaults to a reasonable value, related to avpkt. -+.TP -+avpkt bytes -+The average size of a packet is needed for calculating maxidle, and is also used -+for making sure 'allot' has a safe value. Mandatory. -+.TP -+bandwidth rate -+To determine the idle time, CBQ must know the bandwidth of your underlying -+physical interface, or parent qdisc. This is a vital parameter, more about it -+later. Mandatory. -+.TP -+cell -+The cell size determines he granularity of packet transmission time calculations. Has a sensible default. -+.TP -+mpu -+A zero sized packet may still take time to transmit. This value is the lower -+cap for packet transmission time calculations - packets smaller than this value -+are still deemed to have this size. Defaults to zero. -+.TP -+ewma log -+When CBQ needs to measure the average idle time, it does so using an -+Exponentially Weighted Moving Average which smoothes out measurements into -+a moving average. The EWMA LOG determines how much smoothing occurs. Lower -+values imply greater sensitivity. Must be between 0 and 31. Defaults -+to 5. -+.P -+A CBQ qdisc does not shape out of its own accord. It only needs to know certain -+parameters about the underlying link. Actual shaping is done in classes. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+weight weight -+When dequeuing to the interface, classes are tried for traffic in a -+round-robin fashion. Classes with a higher configured qdisc will generally -+have more traffic to offer during each round, so it makes sense to allow -+it to dequeue more traffic. All weights under a class are normalized, so -+only the ratios matter. Defaults to the configured rate, unless the priority -+of this class is maximal, in which case it is set to 1. -+.TP -+allot bytes -+Allot specifies how many bytes a qdisc can dequeue -+during each round of the process. This parameter is weighted using the -+renormalized class weight described above. Silently capped at a minimum of -+3/2 avpkt. Mandatory. -+ -+.TP -+prio priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+avpkt -+See the QDISC section. -+ -+.TP -+rate rate -+Maximum rate this class and all its children combined can send at. Mandatory. -+ -+.TP -+bandwidth rate -+This is different from the bandwidth specified when creating a CBQ disc! Only -+used to determine maxidle and offtime, which are only calculated when -+specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. -+ -+.TP -+maxburst -+This number of packets is used to calculate maxidle so that when -+avgidle is at maxidle, this number of average packets can be burst -+before avgidle drops to 0. Set it higher to be more tolerant of -+bursts. You can't set maxidle directly, only via this parameter. -+ -+.TP -+minburst -+As mentioned before, CBQ needs to throttle in case of -+overlimit. The ideal solution is to do so for exactly the calculated -+idle time, and pass 1 packet. However, Unix kernels generally have a -+hard time scheduling events shorter than 10ms, so it is better to -+throttle for a longer period, and then pass minburst packets in one -+go, and then sleep minburst times longer. -+ -+The time to wait is called the offtime. Higher values of minburst lead -+to more accurate shaping in the long term, but to bigger bursts at -+millisecond timescales. Optional. -+ -+.TP -+minidle -+If avgidle is below 0, we are overlimits and need to wait until -+avgidle will be big enough to send one packet. To prevent a sudden -+burst from shutting down the link for a prolonged period of time, -+avgidle is reset to minidle if it gets too low. -+ -+Minidle is specified in negative microseconds, so 10 means that -+avgidle is capped at -10us. Optional. -+ -+.TP -+bounded -+Signifies that this class will not borrow bandwidth from its siblings. -+.TP -+isolated -+Means that this class will not borrow bandwidth to its siblings -+ -+.TP -+split major:minor & defmap bitmap[/bitmap] -+If consulting filters attached to a class did not give a verdict, -+CBQ can also classify based on the packet's priority. There are 16 -+priorities available, numbered from 0 to 15. -+ -+The defmap specifies which priorities this class wants to receive, -+specified as a bitmap. The Least Significant Bit corresponds to priority -+zero. The -+.B split -+parameter tells CBQ at which class the decision must be made, which should -+be a (grand)parent of the class you are adding. -+ -+As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' -+configures class 10:0 to send packets with priorities 6 and 7 to 10:1. -+ -+The complimentary configuration would then -+be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' -+Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. -+.TP -+estimator interval timeconstant -+CBQ can measure how much bandwidth each class is using, which tc filters -+can use to classify packets with. In order to determine the bandwidth -+it uses a very simple estimator that measures once every -+.B interval -+microseconds how much traffic has passed. This again is a EWMA, for which -+the time constant can be specified, also in microseconds. The -+.B time constant -+corresponds to the sluggishness of the measurement or, conversely, to the -+sensitivity of the average to short bursts. Higher values mean less -+sensitivity. -+ -+.SH BUGS -+The actual bandwidth of the underlying link may not be known, for example -+in the case of PPoE or PPTP connections which in fact may send over a -+pipe, instead of over a physical device. CBQ is quite resilient to major -+errors in the configured bandwidth, probably a the cost of coarser shaping. -+ -+Default kernels rely on coarse timing information for making decisions. These -+may make shaping precise in the long term, but inaccurate on second long scales. -+ -+See -+.BR tc-cbq-details(8) -+for hints on how to improve this. -+ -+.SH SOURCES -+.TP -+o -+Sally Floyd and Van Jacobson, "Link-sharing and Resource -+Management Models for Packet Networks", -+IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on Class-Based Queueing: Setting -+Parameters", 1996 -+ -+.TP -+o -+Sally Floyd and Michael Speer, "Experimental Results -+for Class-Based Queueing", 1998, not published. -+ -+ -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-htb.8 iproute2/debian/manpages/tc-htb.8 ---- iproute2-orig/debian/manpages/tc-htb.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-htb.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,150 @@ -+.TH HTB 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+HTB \- Hierarchy Token Bucket -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] htb [ default -+minor-id -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] htb rate -+rate -+.B [ ceil -+rate -+.B ] burst -+bytes -+.B [ cburst -+bytes -+.B ] [ prio -+priority -+.B ] -+ -+.SH DESCRIPTION -+HTB is meant as a more understandable and intuitive replacement for -+the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use -+of the outbound bandwidth on a given link. Both allow you to use one -+physical link to simulate several slower links and to send different -+kinds of traffic on different simulated links. In both cases, you have -+to specify how to divide the physical link into simulated links and -+how to decide which simulated link to use for a given packet to be sent. -+ -+Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm -+which does not depend on interface characteristics and so does not need to -+know the underlying bandwidth of the outgoing interface. -+ -+.SH SHAPING ALGORITHM -+Shaping works as documented in -+.B tc-tbf (8). -+ -+.SH CLASSIFICATION -+Within the one HRB instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, HTB starts at the root and uses various methods to -+determine which class should receive the data. -+ -+In the absence of uncommon configuration options, the process is rather easy. -+At each node we look for an instruction, and then go to the class the -+instruction refers us to. If the class found is a barren leaf-node (without -+children), we enqueue the packet there. If it is not yet a leaf node, we do -+the whole thing over again starting from that node. -+ -+The following actions are performed, in order at each node we visit, until one -+sends us to another node, or terminates the process. -+.TP -+(i) -+Consult filters attached to the class. If sent to a leafnode, we are done. -+Otherwise, restart. -+.TP -+(ii) -+If none of the above returned with an instruction, enqueue at this node. -+.P -+This algorithm makes sure that a packet always ends up somewhere, even while -+you are busy building your configuration. -+ -+.SH LINK SHARING ALGORITHM -+FIXME -+ -+.SH QDISC -+The root of a HTB qdisc class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the HTB instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the HTB can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional, but very useful if classes -+will be generated within this qdisc. -+.TP -+default minor-id -+Unclassified traffic gets sent to the class with this minor-id. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+prio priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+rate rate -+Maximum rate this class and all its children are guaranteed. Mandatory. -+ -+.TP -+ceil rate -+Maximum rate at which a class can send, if its parent has bandwidth to spare. -+Defaults to the configured rate, which implies no borrowing -+ -+.TP -+burst bytes -+Amount of bytes that can be burst at -+.B ceil -+speed, in excess of the configured -+.B rate. -+Should be at least as high as the highest burst of all children. -+ -+.TP -+cburst bytes -+Amount of bytes that can be burst at 'infinite' speed, in other words, as fast -+as the interface can transmit them. For perfect evening out, should be equal to at most one average -+packet. Should be at least as high as the highest cburst of all children. -+ -+.SH NOTES -+Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel, -+there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick. -+From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte -+burst as 100*12kb*8 equals 10mbit. -+ -+.SH SEE ALSO -+.BR tc (8) -+.P -+HTB website: http://luxik.cdi.cz/~devik/qos/htb/ -+.SH AUTHOR -+Martin Devera . This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-pbfifo.8 iproute2/debian/manpages/tc-pbfifo.8 ---- iproute2-orig/debian/manpages/tc-pbfifo.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-pbfifo.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,72 @@ -+.TH PBFIFO 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+pfifo \- Packet limited First In, First Out queue -+.P -+bfifo \- Byte limited First In, First Out queue -+ -+.SH SYNOPSIS -+.B tc qdisc ... add pfifo -+.B [ limit -+packets -+.B ] -+.P -+.B tc qdisc ... add bfifo -+.B [ limit -+bytes -+.B ] -+ -+.SH DESCRIPTION -+The pfifo and bfifo qdiscs are unadorned First In, First Out queues. They are the -+simplest queues possible and therefore have no overhead. -+.B pfifo -+constrains the queue size as measured in packets. -+.B bfifo -+does so as measured in bytes. -+ -+Like all non-default qdiscs, they maintain statistics. This might be a reason to prefer -+pfifo or bfifo over the default. -+ -+.SH ALGORITHM -+A list of packets is maintained, when a packet is enqueued it gets inserted at the tail of -+a list. When a packet needs to be sent out to the network, it is taken from the head of the list. -+ -+If the list is too long, no further packets are allowed on. This is called 'tail drop'. -+ -+.SH PARAMETERS -+.TP -+limit -+Maximum queue size. Specified in bytes for bfifo, in packets for pfifo. For pfifo, defaults -+to the interface txqueuelen, as specified with -+.BR ifconfig (8) -+or -+.BR ip (8). -+ -+For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. -+ -+.SH OUTPUT -+The output of -+.B tc -s qdisc ls -+contains the limit, either in packets or in bytes, and the number of bytes -+and packets actually sent. An unsent and dropped packet only appears between braces -+and is not counted as 'Sent'. -+ -+In this example, the queue length is 100 packets, 45894 bytes were sent over 681 packets. -+No packets were dropped, and as the pfifo queue does not slow down packets, there were also no -+overlimits: -+.P -+.nf -+# tc -s qdisc ls dev eth0 -+qdisc pfifo 8001: dev eth0 limit 100p -+ Sent 45894 bytes 681 pkts (dropped 0, overlimits 0) -+.fi -+ -+If a backlog occurs, this is displayed as well. -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, -+ -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-pfifo_fast.8 iproute2/debian/manpages/tc-pfifo_fast.8 ---- iproute2-orig/debian/manpages/tc-pfifo_fast.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-pfifo_fast.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,59 @@ -+.TH PFIFO_FAST 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+pfifo_fast \- three-band first in, first out queue -+ -+.SH DESCRIPTION -+pfifo_fast is the default qdisc of each interface. -+ -+Whenever an interface is created, the pfifo_fast qdisc is automatically used -+as a queue. If another qdisc is attached, it preempts the default -+pfifo_fast, which automatically returns to function when an existing qdisc -+is detached. -+ -+In this sense this qdisc is magic, and unlike other qdiscs. -+ -+.SH ALGORITHM -+The algorithm is very similar to that of the classful -+.BR tc-prio (8) -+qdisc. -+.B pfifo_fast -+is like three -+.BR tc-pfifo (8) -+queues side by side, where packets can be enqueued in any of the three bands -+based on their Type of Service bits or assigned priority. -+ -+Not all three bands are dequeued simultaneously - as long as lower bands -+have traffic, higher bands are never dequeued. This can be used to -+prioritize interactive traffic or penalize 'lowest cost' traffic. -+ -+Each band can be txqueuelen packets long, as configured with -+.BR ifconfig (8) -+or -+.BR ip (8). -+Additional packets coming in are not enqueued but are instead dropped. -+ -+See -+.BR tc-prio (8) -+for complete details on how TOS bits are translated into bands. -+.SH PARAMETERS -+.TP -+txqueuelen -+The length of the three bands depends on the interface txqueuelen, as -+specified with -+.BR ifconfig (8) -+or -+.BR ip (8). -+ -+.SH BUGS -+Does not maintain statistics and does not show up in tc qdisc ls. This is because -+it is the automatic default in the absence of a configured qdisc. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, -+ -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-prio.8 iproute2/debian/manpages/tc-prio.8 ---- iproute2-orig/debian/manpages/tc-prio.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-prio.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,187 @@ -+.TH PRIO 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+PRIO \- Priority qdisc -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] prio [ bands -+bands -+.B ] [ priomap -+band,band,band... -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+The PRIO qdisc is a simple classful queueing discipline that contains -+an arbitrary number of classes of differing priority. The classes are -+dequeued in numerical descending order of priority. PRIO is a scheduler -+and never delays packets - it is a work-conserving qdisc, though the qdiscs -+contained in the classes may not be. -+ -+Very useful for lowering latency when there is no need for slowing down -+traffic. -+ -+.SH ALGORITHM -+On creation with 'tc qdisc add', a fixed number of bands is created. Each -+band is a class, although is not possible to add classes with 'tc qdisc -+add', the number of bands to be created must instead be specified on the -+commandline attaching PRIO to its root. -+ -+When dequeueing, band 0 is tried first and only if it did not deliver a -+packet does PRIO try band 1, and so onwards. Maximum reliability packets -+should therefore go to band 0, minimum delay to band 1 and the rest to band -+2. -+ -+As the PRIO qdisc itself will have minor number 0, band 0 is actually -+major:1, band 1 is major:2, etc. For major, substitute the major number -+assigned to the qdisc on 'tc qdisc add' with the -+.B handle -+parameter. -+ -+.SH CLASSIFICATION -+Three methods are available to PRIO to determine in which band a packet will -+be enqueued. -+.TP -+From userspace -+A process with sufficient privileges can encode the destination class -+directly with SO_PRIORITY, see -+.BR tc(7). -+.TP -+with a tc filter -+A tc filter attached to the root qdisc can point traffic directly to a class -+.TP -+with the priomap -+Based on the packet priority, which in turn is derived from the Type of -+Service assigned to the packet. -+.P -+Only the priomap is specific to this qdisc. -+.SH QDISC PARAMETERS -+.TP -+bands -+Number of bands. If changed from the default of 3, -+.B priomap -+must be updated as well. -+.TP -+priomap -+The priomap maps the priority of -+a packet to a class. The priority can either be set directly from userspace, -+or be derived from the Type of Service of the packet. -+ -+Determines how packet priorities, as assigned by the kernel, map to -+bands. Mapping occurs based on the TOS octet of the packet, which looks like -+this: -+ -+.nf -+0 1 2 3 4 5 6 7 -++---+---+---+---+---+---+---+---+ -+| | | | -+|PRECEDENCE | TOS |MBZ| -+| | | | -++---+---+---+---+---+---+---+---+ -+.fi -+ -+The four TOS bits (the 'TOS field') are defined as: -+ -+.nf -+Binary Decimcal Meaning -+----------------------------------------- -+1000 8 Minimize delay (md) -+0100 4 Maximize throughput (mt) -+0010 2 Maximize reliability (mr) -+0001 1 Minimize monetary cost (mmc) -+0000 0 Normal Service -+.fi -+ -+As there is 1 bit to the right of these four bits, the actual value of the -+TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the -+value of the entire TOS field, not just the four bits. It is the value you -+see in the first column of this table: -+ -+.nf -+TOS Bits Means Linux Priority Band -+------------------------------------------------------------ -+0x0 0 Normal Service 0 Best Effort 1 -+0x2 1 Minimize Monetary Cost 1 Filler 2 -+0x4 2 Maximize Reliability 0 Best Effort 1 -+0x6 3 mmc+mr 0 Best Effort 1 -+0x8 4 Maximize Throughput 2 Bulk 2 -+0xa 5 mmc+mt 2 Bulk 2 -+0xc 6 mr+mt 2 Bulk 2 -+0xe 7 mmc+mr+mt 2 Bulk 2 -+0x10 8 Minimize Delay 6 Interactive 0 -+0x12 9 mmc+md 6 Interactive 0 -+0x14 10 mr+md 6 Interactive 0 -+0x16 11 mmc+mr+md 6 Interactive 0 -+0x18 12 mt+md 4 Int. Bulk 1 -+0x1a 13 mmc+mt+md 4 Int. Bulk 1 -+0x1c 14 mr+mt+md 4 Int. Bulk 1 -+0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 -+.fi -+ -+The second column contains the value of the relevant -+four TOS bits, followed by their translated meaning. For example, 15 stands -+for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum -+Throughput AND Minimum Delay. -+ -+The fourth column lists the way the Linux kernel interprets the TOS bits, by -+showing to which Priority they are mapped. -+ -+The last column shows the result of the default priomap. On the commandline, -+the default priomap looks like this: -+ -+ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 -+ -+This means that priority 4, for example, gets mapped to band number 1. -+The priomap also allows you to list higher priorities (> 7) which do not -+correspond to TOS mappings, but which are set by other means. -+ -+This table from RFC 1349 (read it for more details) explains how -+applications might very well set their TOS bits: -+ -+.nf -+TELNET 1000 (minimize delay) -+FTP -+ Control 1000 (minimize delay) -+ Data 0100 (maximize throughput) -+ -+TFTP 1000 (minimize delay) -+ -+SMTP -+ Command phase 1000 (minimize delay) -+ DATA phase 0100 (maximize throughput) -+ -+Domain Name Service -+ UDP Query 1000 (minimize delay) -+ TCP Query 0000 -+ Zone Transfer 0100 (maximize throughput) -+ -+NNTP 0001 (minimize monetary cost) -+ -+ICMP -+ Errors 0000 -+ Requests 0000 (mostly) -+ Responses (mostly) -+.fi -+ -+ -+.SH CLASSES -+PRIO classes cannot be configured further - they are automatically created -+when the PRIO qdisc is attached. Each class however can contain yet a -+further qdisc. -+ -+.SH BUGS -+Large amounts of traffic in the lower bands can cause starvation of higher -+bands. Can be prevented by attaching a shaper (for example, -+.BR tc-tbf(8) -+to these bands to make sure they cannot dominate the link. -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, , J Hadi Salim -+. This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-red.8 iproute2/debian/manpages/tc-red.8 ---- iproute2-orig/debian/manpages/tc-red.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-red.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,131 @@ -+.TH RED 8 "13 December 2001" "iproute2" "Linux" -+.SH NAME -+red \- Random Early Detection -+.SH SYNOPSIS -+.B tc qdisc ... red -+.B limit -+bytes -+.B min -+bytes -+.B max -+bytes -+.B avpkt -+bytes -+.B burst -+packets -+.B [ ecn ] [ bandwidth -+rate -+.B ] probability -+chance -+ -+.SH DESCRIPTION -+Random Early Detection is a classless qdisc which manages its queue size -+smartly. Regular queues simply drop packets from the tail when they are -+full, which may not be the optimal behaviour. RED also performs tail drop, -+but does so in a more gradual way. -+ -+Once the queue hits a certain average length, packets enqueued have a -+configurable chance of being marked (which may mean dropped). This chance -+increases linearly up to a point called the -+.B max -+average queue length, although the queue might get bigger. -+ -+This has a host of benefits over simple taildrop, while not being processor -+intensive. It prevents synchronous retransmits after a burst in traffic, -+which cause further retransmits, etc. -+ -+The goal is the have a small queue size, which is good for interactivity -+while not disturbing TCP/IP traffic with too many sudden drops after a burst -+of traffic. -+ -+Depending on if ECN is configured, marking either means dropping or -+purely marking a packet as overlimit. -+.SH ALGORITHM -+The average queue size is used for determining the marking -+probability. This is calculated using an Exponential Weighted Moving -+Average, which can be more or less sensitive to bursts. -+ -+When the average queue size is below -+.B min -+bytes, no packet will ever be marked. When it exceeds -+.B min, -+the probability of doing so climbs linearly up -+to -+.B probability, -+until the average queue size hits -+.B max -+bytes. Because -+.B probability -+is normally not set to 100%, the queue size might -+conceivably rise above -+.B max -+bytes, so the -+.B limit -+parameter is provided to set a hard maximum for the size of the queue. -+ -+.SH PARAMETERS -+.TP -+min -+Average queue size at which marking becomes a possibility. -+.TP -+max -+At this average queue size, the marking probability is maximal. Should be at -+least twice -+.B min -+to prevent synchronous retransmits, higher for low -+.B min. -+.TP -+probability -+Maximum probability for marking, specified as a floating point -+number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%, -+respectively). -+.TP -+limit -+Hard limit on the real (not average) queue size in bytes. Further packets -+are dropped. Should be set higher than max+burst. It is advised to set this -+a few times higher than -+.B max. -+.TP -+burst -+Used for determining how fast the average queue size is influenced by the -+real queue size. Larger values make the calculation more sluggish, allowing -+longer bursts of traffic before marking starts. Real life experiments -+support the following guideline: (min+min+max)/(3*avpkt). -+.TP -+avpkt -+Specified in bytes. Used with burst to determine the time constant for -+average queue size calculations. 1000 is a good value. -+.TP -+bandwidth -+This rate is used for calculating the average queue size after some -+idle time. Should be set to the bandwidth of your interface. Does not mean -+that RED will shape for you! Optional. -+.TP -+ecn -+As mentioned before, RED can either 'mark' or 'drop'. Explicit Congestion -+Notification allows RED to notify remote hosts that their rate exceeds the -+amount of bandwidth available. Non-ECN capable hosts can only be notified by -+dropping a packet. If this parameter is specified, packets which indicate -+that their hosts honor ECN will only be marked and not dropped, unless the -+queue size hits -+.B limit -+bytes. Needs a tc binary with RED support compiled in. Recommended. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH SOURCES -+.TP -+o -+Floyd, S., and Jacobson, V., Random Early Detection gateways for -+Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html -+.TP -+o -+Some changes to the algorithm by Alexey N. Kuznetsov. -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, , Alexey Makarenko -+, J Hadi Salim . -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-sfq.8 iproute2/debian/manpages/tc-sfq.8 ---- iproute2-orig/debian/manpages/tc-sfq.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-sfq.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,107 @@ -+.TH TC 8 "8 December 2001" "iproute2" "Linux" -+.SH NAME -+sfq \- Stochastic Fairness Queueing -+.SH SYNOPSIS -+.B tc qdisc ... perturb -+seconds -+.B quantum -+bytes -+ -+.SH DESCRIPTION -+ -+Stochastic Fairness Queueing is a classless queueing discipline available for -+traffic control with the -+.BR tc (8) -+command. -+ -+SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'. -+The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing -+any single flow from drowning out the rest. -+ -+This may in fact have some effect in mitigating a Denial of Service attempt. -+ -+SFQ is work-conserving and therefore always delivers a packet if it has one available. -+.SH ALGORITHM -+On enqueueing, each packet is assigned to a hash bucket, based on -+.TP -+(i) -+Source address -+.TP -+(ii) -+Destination address -+.TP -+(iii) -+Source port -+.P -+If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP. -+Packets with other protocols are hashed based on the 32bits representation of their -+destination and the socket they belong to. A flow corresponds mostly to a TCP/IP -+connection. -+ -+Each of these buckets should represent a unique flow. Because multiple flows may -+get hashed to the same bucket, the hashing algorithm is perturbed at configurable -+intervals so that the unfairness lasts only for a short while. Perturbation may -+however cause some inadvertent packet reordering to occur. -+ -+When dequeuing, each hashbucket with data is queried in a round robin fashion. -+ -+The compile time maximum length of the SFQ is 128 packets, which can be spread over -+at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed -+on the fullest bucket, thus maintaining fairness. -+ -+.SH PARAMETERS -+.TP -+perturb -+Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that -+no perturbation occurs. Do not set too low for each perturbation may cause some packet -+reordering. Advised value: 10 -+.TP -+quantum -+Amount of bytes a flow is allowed to dequeue during a round of the round robin process. -+Defaults to the MTU of the interface which is also the advised value and the minimum value. -+ -+.SH EXAMPLE & USAGE -+ -+To attach to device ppp0: -+.P -+# tc qdisc add dev ppp0 root sfq perturb 10 -+.P -+Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful -+if it owns the queue. -+This is the case when the link speed equals the actually available bandwidth. This holds -+for regular phone modems, ISDN connections and direct non-switched ethernet links. -+.P -+Most often, cable modems and DSL devices do not fall into this category. The same holds -+for when connected to a switch and trying to send data to a congested segment also -+connected to the switch. -+.P -+In this case, the effective queue does not reside within Linux and is therefore not -+available for scheduling. -+.P -+Embed SFQ in a classful qdisc to make sure it owns the queue. -+ -+.SH SOURCE -+.TP -+o -+Paul E. McKenney "Stochastic Fairness Queuing", -+IEEE INFOCOMM'90 Proceedings, San Francisco, 1990. -+ -+.TP -+o -+Paul E. McKenney "Stochastic Fairness Queuing", -+"Interworking: Research and Experience", v.2, 1991, p.113-131. -+ -+.TP -+o -+See also: -+M. Shreedhar and George Varghese "Efficient Fair -+Queuing using Deficit Round Robin", Proc. SIGCOMM 95. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc-tbf.8 iproute2/debian/manpages/tc-tbf.8 ---- iproute2-orig/debian/manpages/tc-tbf.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc-tbf.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,138 @@ -+.TH TC 8 "13 December 2001" "iproute2" "Linux" -+.SH NAME -+tbf \- Token Bucket Filter -+.SH SYNOPSIS -+.B tc qdisc ... tbf rate -+rate -+.B burst -+bytes/cell -+.B ( latency -+ms -+.B | limit -+bytes -+.B ) [ mpu -+bytes -+.B [ peakrate -+rate -+.B mtu -+bytes/cell -+.B ] ] -+.P -+burst is also known as buffer and maxburst. mtu is also known as minburst. -+.SH DESCRIPTION -+ -+The Token Bucket Filter is a classless queueing discipline available for -+traffic control with the -+.BR tc (8) -+command. -+ -+TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle -+itself, although packets are available, to ensure that the configured rate is not exceeded. -+On all platforms except for Alpha, -+it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, -+sending out data exactly at the configured rates. -+ -+Much higher rates are possible but at the cost of losing the minimal burstiness. In that -+case, data is on average dequeued at the configured rate but may be sent much faster at millisecond -+timescales. Because of further queues living in network adaptors, this is often not a problem. -+ -+Kernels with a higher 'HZ' can achieve higher rates with perfect burstiness. On Alpha, HZ is ten -+times higher, leading to a 10mbit/s limit to perfection. These calculations hold for packets of on -+average 1000 bytes. -+ -+.SH ALGORITHM -+As the name implies, traffic is filtered based on the expenditure of -+.B tokens. -+Tokens roughly correspond to bytes, with the additional constraint that each packet consumes -+some tokens, no matter how small it is. This reflects the fact that even a zero-sized packet occupies -+the link for some time. -+ -+On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst -+in one go. Tokens arrive at a steady rate, until the bucket is full. -+ -+If no tokens are available, packets are queued, up to a configured limit. The TBF now -+calculates the token deficit, and throttles until the first packet in the queue can be sent. -+ -+If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured -+to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF -+with a very small bucket, so that it doesn't burst. -+ -+To achieve perfection, the second bucket may contain only a single packet, which leads to -+the earlier mentioned 1mbit/s limit. -+ -+This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends -+on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 -+packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s. -+ -+.SH PARAMETERS -+See -+.BR tc (8) -+for how to specify the units of these values. -+.TP -+limit or latency -+Limit is the number of bytes that can be queued waiting for tokens to become -+available. You can also specify this the other way around by setting the -+latency parameter, which specifies the maximum amount of time a packet can -+sit in the TBF. The latter calculation takes into account the size of the -+bucket, the rate and possibly the peakrate (if set). These two parameters -+are mutually exclusive. -+.TP -+burst -+Also known as buffer or maxburst. -+Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. -+In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer -+if you want to reach your configured rate! -+ -+If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket. -+The minimum buffer size can be calculated by dividing the rate by HZ. -+ -+Token usage calculations are performed using a table which by default has a resolution of 8 packets. -+This resolution can be changed by specifying the -+.B cell -+size with the burst. For example, to specify a 6000 byte buffer with a 16 -+byte cell size, set a burst of 6000/16. You will probably never have to set -+this. Must be an integral power of 2. -+.TP -+mpu -+A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit -+determines the minimal token usage (specified in bytes) for a packet. Defaults to zero. -+.TP -+rate -+The speed knob. See remarks above about limits! See -+.BR tc (8) -+for units. -+.PP -+Furthermore, if a peakrate is desired, the following parameters are available: -+ -+.TP -+peakrate -+Maximum depletion rate of the bucket. Limited to 1mbit/s on Intel, 10mbit/s on Alpha. The peakrate does -+not need to be set, it is only necessary if perfect millisecond timescale shaping is required. -+ -+.TP -+mtu/minburst -+Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. -+If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst -+allows around 3mbit/s of peakrate, given 1000 byte packets. -+ -+Like the regular burstsize you can also specify a -+.B cell -+size. -+.SH EXAMPLE & USAGE -+ -+To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s, -+a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes -+at most 70ms of latency, with perfect peakrate behaviour, issue: -+.P -+# tc qdisc add dev eth0 root tbf rate 0.5mbit \\ -+ burst 5kb latency 70ms peakrate 1mbit \\ -+ minburst 1540 -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/manpages/tc.8 iproute2/debian/manpages/tc.8 ---- iproute2-orig/debian/manpages/tc.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/manpages/tc.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,348 @@ -+.TH TC 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+tc \- show / manipulate traffic control settings -+.SH SYNOPSIS -+.B tc qdisc [ add | change | replace | link ] dev -+DEV -+.B -+[ parent -+qdisc-id -+.B | root ] -+.B [ handle -+qdisc-id ] qdisc -+[ qdisc specific parameters ] -+.P -+ -+.B tc class [ add | change | replace ] dev -+DEV -+.B parent -+qdisc-id -+.B [ classid -+class-id ] qdisc -+[ qdisc specific parameters ] -+.P -+ -+.B tc filter [ add | change | replace ] dev -+DEV -+.B [ parent -+qdisc-id -+.B | root ] protocol -+protocol -+.B prio -+priority filtertype -+[ filtertype specific parameters ] -+.B flowid -+flow-id -+ -+.B tc [-s | -d ] qdisc show [ dev -+DEV -+.B ] -+.P -+.B tc [-s | -d ] class show dev -+DEV -+.P -+.B tc filter show dev -+DEV -+ -+.SH DESCRIPTION -+.B Tc -+is used to configure Traffic Control in the Linux kernel. Traffic Control consists -+of the following: -+ -+.TP -+SHAPING -+When traffic is shaped, its rate of transmission is under control. Shaping may -+be more than lowering the available bandwidth - it is also used to smooth out -+bursts in traffic for better network behaviour. Shaping occurs on egress. -+ -+.TP -+SCHEDULING -+By scheduling the transmission of packets it is possible to improve interactivity -+for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering -+is also called prioritizing, and happens only on egress. -+ -+.TP -+POLICING -+Where shaping deals with transmission of traffic, policing pertains to traffic -+arriving. Policing thus occurs on ingress. -+ -+.TP -+DROPPING -+Traffic exceeding a set bandwidth may also be dropped forthwith, both on -+ingress and on egress. -+ -+.P -+Processing of traffic is controlled by three kinds of objects: qdiscs, -+classes and filters. -+ -+.SH QDISCS -+.B qdisc -+is short for 'queueing discipline' and it is elementary to -+understanding traffic control. Whenever the kernel needs to send a -+packet to an interface, it is -+.B enqueued -+to the qdisc configured for that interface. Immediately afterwards, the kernel -+tries to get as many packets as possible from the qdisc, for giving them -+to the network adaptor driver. -+ -+A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure -+First In, First Out queue. It does however store traffic when the network interface -+can't handle it momentarily. -+ -+.SH CLASSES -+Some qdiscs can contain classes, which contain further qdiscs - traffic may -+then be enqueued in any of the inner qdiscs, which are within the -+.B classes. -+When the kernel tries to dequeue a packet from such a -+.B classful qdisc -+it can come from any of the classes. A qdisc may for example prioritize -+certain kinds of traffic by trying to dequeue from certain classes -+before others. -+ -+.SH FILTERS -+A -+.B filter -+is used by a classful qdisc to determine in which class a packet will -+be enqueued. Whenever traffic arrives at a class with subclasses, it needs -+to be classified. Various methods may be employed to do so, one of these -+are the filters. All filters attached to the class are called, until one of -+them returns with a verdict. If no verdict was made, other criteria may be -+available. This differs per qdisc. -+ -+It is important to notice that filters reside -+.B within -+qdiscs - they are not masters of what happens. -+ -+.SH CLASSLESS QDISCS -+The classless qdiscs are: -+.TP -+[p|b]fifo -+Simplest usable qdisc, pure First In, First Out behaviour. Limited in -+packets or in bytes. -+.TP -+pfifo_fast -+Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band -+queue which honors Type of Service flags, as well as the priority that may be -+assigned to a packet. -+.TP -+red -+Random Early Detection simulates physical congestion by randomly dropping -+packets when nearing configured bandwidth allocation. Well suited to very -+large bandwidth applications. -+.TP -+sfq -+Stochastic Fairness Queueing reorders queued traffic so each 'session' -+gets to send a packet in turn. -+.TP -+tbf -+The Token Bucket Filter is suited for slowing traffic down to a precisely -+configured rate. Scales well to large bandwidths. -+.SH CONFIGURING CLASSLESS QDISCS -+In the absence of classful qdiscs, classless qdiscs can only be attached at -+the root of a device. Full syntax: -+.P -+.B tc qdisc add dev -+DEV -+.B root -+QDISC QDISC-PARAMETERS -+ -+To remove, issue -+.P -+.B tc qdisc del dev -+DEV -+.B root -+ -+The -+.B pfifo_fast -+qdisc is the automatic default in the absence of a configured qdisc. -+ -+.SH CLASSFUL QDISCS -+The classful qdiscs are: -+.TP -+CBQ -+Class Based Queueing implements a rich linksharing hierarchy of classes. -+It contains shaping elements as well as prioritizing capabilities. Shaping is -+performed using link idle time calculations based on average packet size and -+underlying link bandwidth. The latter may be ill-defined for some interfaces. -+.TP -+HTB -+The Hierarchy Token Bucket implements a rich linksharing hierarchy of -+classes with an emphasis on conforming to existing practices. HTB facilitates -+guaranteeing bandwidth to classes, while also allowing specification of upper -+limits to inter-class sharing. It contains shaping elements, based on TBF and -+can prioritize classes. -+.TP -+PRIO -+The PRIO qdisc is a non-shaping container for a configurable number of -+classes which are dequeued in order. This allows for easy prioritization -+of traffic, where lower classes are only able to send if higher ones have -+no packets available. To facilitate configuration, Type Of Service bits are -+honored by default. -+.SH THEORY OF OPERATION -+Classes form a tree, where each class has a single parent. -+A class may have multiple children. Some qdiscs allow for runtime addition -+of classes (CBQ, HTB) while others (PRIO) are created with a static number of -+children. -+ -+Qdiscs which allow dynamic addition of classes can have zero or more -+subclasses to which traffic may be enqueued. -+ -+Furthermore, each class contains a -+.B leaf qdisc -+which by default has -+.B pfifo -+behaviour though another qdisc can be attached in place. This qdisc may again -+contain classes, but each class can have only one leaf qdisc. -+ -+When a packet enters a classful qdisc it can be -+.B classified -+to one of the classes within. Three criteria are available, although not all -+qdiscs will use all three: -+.TP -+tc filters -+If tc filters are attached to a class, they are consulted first -+for relevant instructions. Filters can match on all fields of a packet header, -+as well as on the firewall mark applied by ipchains or iptables. See -+.BR tc-filters (8). -+.TP -+Type of Service -+Some qdiscs have built in rules for classifying packets based on the TOS field. -+.TP -+skb->priority -+Userspace programs can encode a class-id in the 'skb->priority' field using -+the SO_PRIORITY option. -+.P -+Each node within the tree can have its own filters but higher level filters -+may also point directly to lower classes. -+ -+If classification did not succeed, packets are enqueued to the leaf qdisc -+attached to that class. Check qdisc specific manpages for details, however. -+ -+.SH NAMING -+All qdiscs, classes and filters have IDs, which can either be specified -+or be automatically assigned. -+ -+IDs consist of a major number and a minor number, separated by a colon. -+ -+.TP -+QDISCS -+A qdisc, which potentially can have children, -+gets assigned a major number, called a 'handle', leaving the minor -+number namespace available for classes. The handle is expressed as '10:'. -+It is customary to explicitly assign a handle to qdiscs expected to have -+children. -+ -+.TP -+CLASSES -+Classes residing under a qdisc share their qdisc major number, but each have -+a separate minor number called a 'classid' that has no relation to their -+parent classes, only to their parent qdisc. The same naming custom as for -+qdiscs applies. -+ -+.TP -+FILTERS -+Filters have a three part ID, which is only needed when using a hashed -+filter hierarchy, for which see -+.BR tc-filters (8). -+.SH UNITS -+All parameters accept a floating point number, possibly followed by a unit. -+.P -+Bandwidths or rates can be specified in: -+.TP -+kbps -+Kilobytes per second -+.TP -+mbps -+Megabytes per second -+.TP -+kbit -+Kilobits per second -+.TP -+mbit -+Megabits per second -+.TP -+bps or a bare number -+Bytes per second -+.P -+Amounts of data can be specified in: -+.TP -+kb or k -+Kilobytes -+.TP -+mb or m -+Megabytes -+.TP -+mbit -+Megabits -+.TP -+kbit -+Kilobits -+.TP -+b or a bare number -+Bytes. -+.P -+Lengths of time can be specified in: -+.TP -+s, sec or secs -+Whole seconds -+.TP -+ms, msec or msecs -+Milliseconds -+.TP -+us, usec, usecs or a bare number -+Microseconds. -+ -+.SH TC COMMANDS -+The following commands are available for qdiscs, classes and filter: -+.TP -+add -+Add a qdisc, class or filter to a node. For all entities, a -+.B parent -+must be passed, either by passing its ID or by attaching directly to the root of a device. -+When creating a qdisc or a filter, it can be named with the -+.B handle -+parameter. A class is named with the -+.B classid -+parameter. -+ -+.TP -+remove -+A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs -+are automatically deleted, as well as any filters attached to them. -+ -+.TP -+change -+Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception -+that the handle cannot be changed and neither can the parent. In other words, -+.B -+change -+cannot move a node. -+ -+.TP -+replace -+Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet -+it is created. -+ -+.TP -+link -+Only available for qdiscs and performs a replace where the node -+must exist already. -+ -+ -+.SH HISTORY -+.B tc -+was written by Alexey N. Kuznetsov and added in Linux 2.2. -+.SH SEE ALSO -+.BR tc-cbq (8), -+.BR tc-htb (8), -+.BR tc-sfq (8), -+.BR tc-red (8), -+.BR tc-tbf (8), -+.BR tc-pfifo (8), -+.BR tc-bfifo (8), -+.BR tc-pfifo_fast (8), -+.BR tc-filters (8) -+ -+.SH AUTHOR -+Manpage maintained by bert hubert (ahu@ds9a.nl) -+ -diff -Naur iproute2-orig/debian/postinst iproute2/debian/postinst ---- iproute2-orig/debian/postinst 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/postinst 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,6 @@ -+#!/bin/sh -e -+ -+# FHS: -+if [ "$1" = "configure" -a -d /usr/doc -a ! -e /usr/doc/iproute ]; then -+ ln -sf ../share/doc/iproute /usr/doc/iproute -+fi -diff -Naur iproute2-orig/debian/postrm iproute2/debian/postrm ---- iproute2-orig/debian/postrm 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/postrm 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,6 @@ -+#!/bin/sh -+ -+if [ "$1" = "purge" ] -+then -+ rm -rf /etc/iproute2 -+fi -diff -Naur iproute2-orig/debian/prerm iproute2/debian/prerm ---- iproute2-orig/debian/prerm 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/prerm 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,5 @@ -+#!/bin/sh -e -+ -+if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/iproute ]; then -+ rm -f /usr/doc/iproute -+fi -diff -Naur iproute2-orig/debian/rules iproute2/debian/rules ---- iproute2-orig/debian/rules 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/rules 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,85 @@ -+#!/usr/bin/make -f -+# -+# Copyright (C) 1999 Roberto Lumbreras -+# Copyright (C) 1999-2002 Juan Cespedes -+# Copying: GPL -+ -+SHELL = bash -+ -+PACKAGE = $(shell perl -e 'print <> =~ /^(.*) \(.*\)/' debian/changelog) -+PKG_VER = $(shell perl -e 'print <> =~ /\((.*)\)/' debian/changelog) -+PKG_UPVER= $(shell perl -e 'print <> =~ /\((.*)-[^-]*\)/' debian/changelog) -+ -+BINS = ip/ip -+SBINS = ip/rtmon ip/rtacct tc/tc -+SHBINS = ip/routef ip/routel # ip/ifcfg ip/rtpr -+DOCS = README* doc/Plan debian/README.Debian -+MAN8 = debian/manpages/*.8 -+MANLINKS= rtmon rtacct routef routel -+TEXDOCS = ip-cref ip-tunnels api-ip6-flowlabels -+ -+build: stamp-build -+ -+stamp-build: -+ test -f include-glibc/netinet/in.h.orig || \ -+ mv include-glibc/netinet/in.h \ -+ include-glibc/netinet/in.h.orig -+ $(MAKE) KERNEL_INCLUDE=/usr/include -+ $(MAKE) -C doc -+ touch stamp-build -+ -+binary: binary-indep binary-arch -+ -+binary-indep: -+ -+binary-arch: checkroot stamp-build -+ $(RM) -r debian/tmp -+ install -d -m0755 debian/tmp/{DEBIAN,bin,sbin,usr/{bin,share/doc/$(PACKAGE),share/man/man{7,8}}} -+ install -s -m0755 $(BINS) debian/tmp/bin/ -+ install -s -m0755 $(SBINS) debian/tmp/sbin/ -+ ln -s /bin/ip debian/tmp/sbin/ip -+ install -m0755 $(SHBINS) debian/tmp/usr/bin/ -+ cp -p $(DOCS) debian/tmp/usr/share/doc/$(PACKAGE)/ -+ cp -rp examples debian/tmp/usr/share/doc/$(PACKAGE)/ -+ find debian/tmp/usr/share/doc/$(PACKAGE)/examples -type f -exec chmod -x {} \; -+ install -m0644 debian/changelog debian/tmp/usr/share/doc/$(PACKAGE)/changelog.Debian -+ cp -p RELNOTES debian/tmp/usr/share/doc/$(PACKAGE)/changelog -+ for i in $(TEXDOCS); do \ -+ install -m0644 doc/$$i.tex debian/tmp/usr/share/doc/$(PACKAGE)/; \ -+ install -m0644 doc/$$i.dvi debian/tmp/usr/share/doc/$(PACKAGE)/; \ -+ install -m0644 doc/$$i.ps debian/tmp/usr/share/doc/$(PACKAGE)/; \ -+ done -+ install -m0644 $(MAN8) debian/tmp/usr/share/man/man8/ -+ gzip -9fr debian/tmp/usr/share || true -+ ln -s tc-pbfifo.8.gz debian/tmp/usr/share/man/man8/tc-pfifo.8.gz -+ ln -s tc-pbfifo.8.gz debian/tmp/usr/share/man/man8/tc-bfifo.8.gz -+ for i in $(MANLINKS); do \ -+ ln -s ../man7/undocumented.7.gz debian/tmp/usr/share/man/man8/$$i.8.gz; \ -+ done -+ cp -p debian/copyright debian/tmp/usr/share/doc/$(PACKAGE)/ -+ cp -rp etc debian/tmp/ -+ install -m0644 debian/conffiles debian/tmp/DEBIAN/ -+ -+ dpkg-shlibdeps $(BINS) $(SBINS) -+ dpkg-gencontrol -isp -+ chown -R root.root debian/tmp -+ chmod -R u=rwX,go=rX debian/tmp -+ dpkg --build debian/tmp .. -+ -+checkdir: -+ @test -f debian/rules -+ -+checkroot: checkdir -+ @test 0 = `id -u` || { echo "Error: not super-user"; exit 1; } -+ -+clean: checkdir debian/control -+ $(RM) stamp-build debian/files debian/substvars -+ $(MAKE) clean -+ $(MAKE) -C doc clean -+ $(RM) `find . -name "*~" -o -name core` -+ $(RM) -r debian/tmp -+ test -f include-glibc/netinet/in.h.orig && \ -+ mv include-glibc/netinet/in.h.orig \ -+ include-glibc/netinet/in.h || true -+ -+.PHONY: build binary binary-arch binary-indep checkdir checkroot clean -diff -Naur iproute2-orig/debian/tc-cbq.8 iproute2/debian/tc-cbq.8 ---- iproute2-orig/debian/tc-cbq.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-cbq.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,353 @@ -+.TH CBQ 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+CBQ \- Class Based Queueing -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] cbq [ allot -+bytes -+.B ] avpkt -+bytes -+.B bandwidth -+rate -+.B [ cell -+bytes -+.B ] [ ewma -+log -+.B ] [ mpu -+bytes -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] cbq allot -+bytes -+.B [ bandwidth -+rate -+.B ] [ rate -+rate -+.B ] prio -+priority -+.B [ weight -+weight -+.B ] [ minburst -+packets -+.B ] [ maxburst -+packets -+.B ] [ ewma -+log -+.B ] [ cell -+bytes -+.B ] avpkt -+bytes -+.B [ mpu -+bytes -+.B ] [ bounded isolated ] [ split -+handle -+.B & defmap -+defmap -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+Class Based Queueing is a classful qdisc that implements a rich -+linksharing hierarchy of classes. It contains shaping elements as -+well as prioritizing capabilities. Shaping is performed using link -+idle time calculations based on the timing of dequeue events and -+underlying link bandwidth. -+ -+.SH SHAPING ALGORITHM -+When shaping a 10mbit/s connection to 1mbit/s, the link will -+be idle 90% of the time. If it isn't, it needs to be throttled so that it -+IS idle 90% of the time. -+ -+During operations, the effective idletime is measured using an -+exponential weighted moving average (EWMA), which considers recent -+packets to be exponentially more important than past ones. The Unix -+loadaverage is calculated in the same way. -+ -+The calculated idle time is subtracted from the EWMA measured one, -+the resulting number is called 'avgidle'. A perfectly loaded link has -+an avgidle of zero: packets arrive exactly at the calculated -+interval. -+ -+An overloaded link has a negative avgidle and if it gets too negative, -+CBQ throttles and is then 'overlimit'. -+ -+Conversely, an idle link might amass a huge avgidle, which would then -+allow infinite bandwidths after a few hours of silence. To prevent -+this, avgidle is capped at -+.B maxidle. -+ -+If overlimit, in theory, the CBQ could throttle itself for exactly the -+amount of time that was calculated to pass between packets, and then -+pass one packet, and throttle again. Due to timer resolution constraints, -+this may not be feasible, see the -+.B minburst -+parameter below. -+ -+.SH CLASSIFICATION -+Within the one CBQ instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, CBQ starts at the root and uses various methods to -+determine which class should receive the data. -+ -+In the absence of uncommon configuration options, the process is rather easy. -+At each node we look for an instruction, and then go to the class the -+instruction refers us to. If the class found is a barren leaf-node (without -+children), we enqueue the packet there. If it is not yet a leaf node, we do -+the whole thing over again starting from that node. -+ -+The following actions are performed, in order at each node we visit, until one -+sends us to another node, or terminates the process. -+.TP -+(i) -+Consult filters attached to the class. If sent to a leafnode, we are done. -+Otherwise, restart. -+.TP -+(ii) -+Consult the defmap for the priority assigned to this packet, which depends -+on the TOS bits. Check if the referral is leafless, otherwise restart. -+.TP -+(iii) -+Ask the defmap for instructions for the 'best effort' priority. Check the -+answer for leafness, otherwise restart. -+.TP -+(iv) -+If none of the above returned with an instruction, enqueue at this node. -+.P -+This algorithm makes sure that a packet always ends up somewhere, even while -+you are busy building your configuration. -+ -+For more details, see -+.BR tc-cbq-details(8). -+ -+.SH LINK SHARING ALGORITHM -+When dequeuing for sending to the network device, CBQ decides which of its -+classes will be allowed to send. It does so with a Weighted Round Robin process -+in which each class with packets gets a chance to send in turn. The WRR process -+starts by asking the highest priority classes (lowest numerically - -+highest semantically) for packets, and will continue to do so until they -+have no more data to offer, in which case the process repeats for lower -+priorities. -+ -+Classes by default borrow bandwidth from their siblings. A class can be -+prevented from doing so by declaring it 'bounded'. A class can also indicate -+its unwillingness to lend out bandwidth by being 'isolated'. -+ -+.SH QDISC -+The root of a CBQ qdisc class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the CBQ instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the CBQ can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional, but very useful if classes -+will be generated within this qdisc. -+.TP -+allot bytes -+This allotment is the 'chunkiness' of link sharing and is used for determining packet -+transmission time tables. The qdisc allot differs slightly from the class allot discussed -+below. Optional. Defaults to a reasonable value, related to avpkt. -+.TP -+avpkt bytes -+The average size of a packet is needed for calculating maxidle, and is also used -+for making sure 'allot' has a safe value. Mandatory. -+.TP -+bandwidth rate -+To determine the idle time, CBQ must know the bandwidth of your underlying -+physical interface, or parent qdisc. This is a vital parameter, more about it -+later. Mandatory. -+.TP -+cell -+The cell size determines he granularity of packet transmission time calculations. Has a sensible default. -+.TP -+mpu -+A zero sized packet may still take time to transmit. This value is the lower -+cap for packet transmission time calculations - packets smaller than this value -+are still deemed to have this size. Defaults to zero. -+.TP -+ewma log -+When CBQ needs to measure the average idle time, it does so using an -+Exponentially Weighted Moving Average which smoothes out measurements into -+a moving average. The EWMA LOG determines how much smoothing occurs. Lower -+values imply greater sensitivity. Must be between 0 and 31. Defaults -+to 5. -+.P -+A CBQ qdisc does not shape out of its own accord. It only needs to know certain -+parameters about the underlying link. Actual shaping is done in classes. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+weight weight -+When dequeuing to the interface, classes are tried for traffic in a -+round-robin fashion. Classes with a higher configured qdisc will generally -+have more traffic to offer during each round, so it makes sense to allow -+it to dequeue more traffic. All weights under a class are normalized, so -+only the ratios matter. Defaults to the configured rate, unless the priority -+of this class is maximal, in which case it is set to 1. -+.TP -+allot bytes -+Allot specifies how many bytes a qdisc can dequeue -+during each round of the process. This parameter is weighted using the -+renormalized class weight described above. Silently capped at a minimum of -+3/2 avpkt. Mandatory. -+ -+.TP -+prio priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+avpkt -+See the QDISC section. -+ -+.TP -+rate rate -+Maximum rate this class and all its children combined can send at. Mandatory. -+ -+.TP -+bandwidth rate -+This is different from the bandwidth specified when creating a CBQ disc! Only -+used to determine maxidle and offtime, which are only calculated when -+specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. -+ -+.TP -+maxburst -+This number of packets is used to calculate maxidle so that when -+avgidle is at maxidle, this number of average packets can be burst -+before avgidle drops to 0. Set it higher to be more tolerant of -+bursts. You can't set maxidle directly, only via this parameter. -+ -+.TP -+minburst -+As mentioned before, CBQ needs to throttle in case of -+overlimit. The ideal solution is to do so for exactly the calculated -+idle time, and pass 1 packet. However, Unix kernels generally have a -+hard time scheduling events shorter than 10ms, so it is better to -+throttle for a longer period, and then pass minburst packets in one -+go, and then sleep minburst times longer. -+ -+The time to wait is called the offtime. Higher values of minburst lead -+to more accurate shaping in the long term, but to bigger bursts at -+millisecond timescales. Optional. -+ -+.TP -+minidle -+If avgidle is below 0, we are overlimits and need to wait until -+avgidle will be big enough to send one packet. To prevent a sudden -+burst from shutting down the link for a prolonged period of time, -+avgidle is reset to minidle if it gets too low. -+ -+Minidle is specified in negative microseconds, so 10 means that -+avgidle is capped at -10us. Optional. -+ -+.TP -+bounded -+Signifies that this class will not borrow bandwidth from its siblings. -+.TP -+isolated -+Means that this class will not borrow bandwidth to its siblings -+ -+.TP -+split major:minor & defmap bitmap[/bitmap] -+If consulting filters attached to a class did not give a verdict, -+CBQ can also classify based on the packet's priority. There are 16 -+priorities available, numbered from 0 to 15. -+ -+The defmap specifies which priorities this class wants to receive, -+specified as a bitmap. The Least Significant Bit corresponds to priority -+zero. The -+.B split -+parameter tells CBQ at which class the decision must be made, which should -+be a (grand)parent of the class you are adding. -+ -+As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' -+configures class 10:0 to send packets with priorities 6 and 7 to 10:1. -+ -+The complimentary configuration would then -+be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' -+Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. -+.TP -+estimator interval timeconstant -+CBQ can measure how much bandwidth each class is using, which tc filters -+can use to classify packets with. In order to determine the bandwidth -+it uses a very simple estimator that measures once every -+.B interval -+microseconds how much traffic has passed. This again is a EWMA, for which -+the time constant can be specified, also in microseconds. The -+.B time constant -+corresponds to the sluggishness of the measurement or, conversely, to the -+sensitivity of the average to short bursts. Higher values mean less -+sensitivity. -+ -+.SH BUGS -+The actual bandwidth of the underlying link may not be known, for example -+in the case of PPoE or PPTP connections which in fact may send over a -+pipe, instead of over a physical device. CBQ is quite resilient to major -+errors in the configured bandwidth, probably a the cost of coarser shaping. -+ -+Default kernels rely on coarse timing information for making decisions. These -+may make shaping precise in the long term, but inaccurate on second long scales. -+ -+See -+.BR tc-cbq-details(8) -+for hints on how to improve this. -+ -+.SH SOURCES -+.TP -+o -+Sally Floyd and Van Jacobson, "Link-sharing and Resource -+Management Models for Packet Networks", -+IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995 -+ -+.TP -+o -+Sally Floyd, "Notes on Class-Based Queueing: Setting -+Parameters", 1996 -+ -+.TP -+o -+Sally Floyd and Michael Speer, "Experimental Results -+for Class-Based Queueing", 1998, not published. -+ -+ -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-htb.8 iproute2/debian/tc-htb.8 ---- iproute2-orig/debian/tc-htb.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-htb.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,153 @@ -+.TH HTB 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+HTB \- Hierarchy Token Bucket -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] htb [ default -+minor-id -+.B ] -+ -+.B tc class ... dev -+dev -+.B parent -+major:[minor] -+.B [ classid -+major:minor -+.B ] htb rate -+rate -+.B [ ceil -+rate -+.B ] burst -+bytes -+.B [ cburst -+bytes -+.B ] [ prio -+priority -+.B ] -+ -+.SH DESCRIPTION -+HTB is meant as a more understandable and intuitive replacement for -+the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use -+of the outbound bandwidth on a given link. Both allow you to use one -+physical link to simulate several slower links and to send different -+kinds of traffic on different simulated links. In both cases, you have -+to specify how to divide the physical link into simulated links and -+how to decide which simulated link to use for a given packet to be sent. -+ -+Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm -+which does not depend on interface characteristics and so does not need to -+know the underlying bandwidth of the outgoing interface. -+ -+.SH SHAPING ALGORITHM -+Shaping works as documented in -+.B tc-tbf (8). -+ -+.SH CLASSIFICATION -+Within the one HRB instance many classes may exist. Each of these classes -+contains another qdisc, by default -+.BR tc-pfifo (8). -+ -+When enqueueing a packet, HTB starts at the root and uses various methods to -+determine which class should receive the data. -+ -+In the absence of uncommon configuration options, the process is rather easy. -+At each node we look for an instruction, and then go to the class the -+instruction refers us to. If the class found is a barren leaf-node (without -+children), we enqueue the packet there. If it is not yet a leaf node, we do -+the whole thing over again starting from that node. -+ -+The following actions are performed, in order at each node we visit, until one -+sends us to another node, or terminates the process. -+.TP -+(i) -+Consult filters attached to the class. If sent to a leafnode, we are done. -+Otherwise, restart. -+.TP -+(ii) -+If none of the above returned with an instruction, enqueue at this node. -+.P -+This algorithm makes sure that a packet always ends up somewhere, even while -+you are busy building your configuration. -+ -+.SH LINK SHARING ALGORITHM -+FIXME -+ -+.SH QDISC -+The root of a CBQ qdisc class tree has the following parameters: -+ -+.TP -+parent major:minor | root -+This mandatory parameter determines the place of the CBQ instance, either at the -+.B root -+of an interface or within an existing class. -+.TP -+handle major: -+Like all other qdiscs, the CBQ can be assigned a handle. Should consist only -+of a major number, followed by a colon. Optional, but very useful if classes -+will be generated within this qdisc. -+.TP -+default minor-id -+Unclassified traffic gets sent to the class with this minor-id. -+ -+.SH CLASSES -+Classes have a host of parameters to configure their operation. -+ -+.TP -+parent major:minor -+Place of this class within the hierarchy. If attached directly to a qdisc -+and not to another class, minor can be omitted. Mandatory. -+.TP -+classid major:minor -+Like qdiscs, classes can be named. The major number must be equal to the -+major number of the qdisc to which it belongs. Optional, but needed if this -+class is going to have children. -+.TP -+prio priority -+In the round-robin process, classes with the lowest priority field are tried -+for packets first. Mandatory. -+ -+.TP -+rate rate -+Maximum rate this class and all its children are guaranteed. Mandatory. -+ -+.TP -+ceil rate -+Maximum rate at which a class can send, if its parent has bandwidth to spare. -+Defaults to the configured rate, which implies no borrowing -+ -+.TP -+burst bytes -+Amount of bytes that can be burst at -+.B ceil -+speed, in excess of the configured -+.B rate. -+Should be at least as high as the highest burst of all children. -+ -+.TP -+cburst bytes -+Amount of bytes that can be burst at 'infinite' speed, in other words, as fast -+as the interface can transmit them. For perfect evening out, should be equal to at most one average -+packet. Should be at least as high as the highest cburst of all children. -+ -+.SH NOTES -+Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel, -+there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick. -+From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte -+burst as 100*12kb*8 equals 10mbit. -+ -+.SH BUGS -+Not in the stock kernel yet. -+ -+.SH SEE ALSO -+.BR tc (8) -+.P -+HTB website: http://luxik.cdi.cz/~devik/qos/htb/ -+.SH AUTHOR -+Martin Devera . This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-pbfifo.8 iproute2/debian/tc-pbfifo.8 ---- iproute2-orig/debian/tc-pbfifo.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-pbfifo.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,72 @@ -+.TH PBFIFO 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+pfifo \- Packet limited First In, First Out queue -+.P -+bfifo \- Byte limited First In, First Out queue -+ -+.SH SYNOPSIS -+.B tc qdisc ... add pfifo -+.B [ limit -+packets -+.B ] -+.P -+.B tc qdisc ... add bfifo -+.B [ limit -+bytes -+.B ] -+ -+.SH DESCRIPTION -+The pfifo and bfifo qdiscs are unadorned First In, First Out queues. They are the -+simplest queues possible and therefore have no overhead. -+.B pfifo -+constrains the queue size as measured in packets. -+.B bfifo -+does so as measured in bytes. -+ -+Like all non-default qdiscs, they maintain statistics. This might be a reason to prefer -+pfifo or bfifo over the default. -+ -+.SH ALGORITHM -+A list of packets is maintained, when a packet is enqueued it gets inserted at the tail of -+a list. When a packet needs to be sent out to the network, it is taken from the head of the list. -+ -+If the list is too long, no further packets are allowed on. This is called 'tail drop'. -+ -+.SH PARAMETERS -+.TP -+limit -+Maximum queue size. Specified in bytes for bfifo, in packets for pfifo. For pfifo, defaults -+to the interface txqueuelen, as specified with -+.BR ifconfig (8) -+or -+.BR ip (8). -+ -+For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. -+ -+.SH OUTPUT -+The output of -+.B tc -s qdisc ls -+contains the limit, either in packets or in bytes, and the number of bytes -+and packets actually sent. An unsent and dropped packet only appears between braces -+and is not counted as 'Sent'. -+ -+In this example, the queue length is 100 packets, 45894 bytes were sent over 681 packets. -+No packets were dropped, and as the pfifo queue does not slow down packets, there were also no -+overlimits: -+.P -+.nf -+# tc -s qdisc ls dev eth0 -+qdisc pfifo 8001: dev eth0 limit 100p -+ Sent 45894 bytes 681 pkts (dropped 0, overlimits 0) -+.fi -+ -+If a backlog occurs, this is displayed as well. -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, -+ -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-pfifo_fast.8 iproute2/debian/tc-pfifo_fast.8 ---- iproute2-orig/debian/tc-pfifo_fast.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-pfifo_fast.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,59 @@ -+.TH PFIFO_FAST 8 "10 January 2002" "iproute2" "Linux" -+.SH NAME -+pfifo_fast \- three-band first in, first out queue -+ -+.SH DESCRIPTION -+pfifo_fast is the default qdisc of each interface. -+ -+Whenever an interface is created, the pfifo_fast qdisc is automatically used -+as a queue. If another qdisc is attached, it preempts the default -+pfifo_fast, which automatically returns to function when an existing qdisc -+is detached. -+ -+In this sense this qdisc is magic, and unlike other qdiscs. -+ -+.SH ALGORITHM -+The algorithm is very similar to that of the classful -+.BR tc-prio (8) -+qdisc. -+.B pfifo_fast -+is like three -+.BR tc-pfifo (8) -+queues side by side, where packets can be enqueued in any of the three bands -+based on their Type of Service bits or assigned priority. -+ -+Not all three bands are dequeued simultaneously - as long as lower bands -+have traffic, higher bands are never dequeued. This can be used to -+prioritize interactive traffic or penalize 'lowest cost' traffic. -+ -+Each band can be txqueuelen packets long, as configured with -+.BR ifconfig (8) -+or -+.BR ip (8). -+Additional packets coming in are not enqueued but are instead dropped. -+ -+See -+.BR tc-prio (8) -+for complete details on how TOS bits are translated into bands. -+.SH PARAMETERS -+.TP -+txqueuelen -+The length of the three bands depends on the interface txqueuelen, as -+specified with -+.BR ifconfig (8) -+or -+.BR ip (8). -+ -+.SH BUGS -+Does not maintain statistics and does not show up in tc qdisc ls. This is because -+it is the automatic default in the absence of a configured qdisc. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, -+ -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-prio.8 iproute2/debian/tc-prio.8 ---- iproute2-orig/debian/tc-prio.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-prio.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,187 @@ -+.TH PRIO 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+PRIO \- Priority qdisc -+.SH SYNOPSIS -+.B tc qdisc ... dev -+dev -+.B ( parent -+classid -+.B | root) [ handle -+major: -+.B ] prio [ bands -+bands -+.B ] [ priomap -+band,band,band... -+.B ] [ estimator -+interval timeconstant -+.B ] -+ -+.SH DESCRIPTION -+The PRIO qdisc is a simple classful queueing discipline that contains -+an arbitrary number of classes of differing priority. The classes are -+dequeued in numerical descending order of priority. PRIO is a scheduler -+and never delays packets - it is a work-conserving qdisc, though the qdiscs -+contained in the classes may not be. -+ -+Very useful for lowering latency when there is no need for slowing down -+traffic. -+ -+.SH ALGORITHM -+On creation with 'tc qdisc add', a fixed number of bands is created. Each -+band is a class, although is not possible to add classes with 'tc qdisc -+add', the number of bands to be created must instead be specified on the -+commandline attaching PRIO to its root. -+ -+When dequeueing, band 0 is tried first and only if it did not deliver a -+packet does PRIO try band 1, and so onwards. Maximum reliability packets -+should therefore go to band 0, minimum delay to band 1 and the rest to band -+2. -+ -+As the PRIO qdisc itself will have minor number 0, band 0 is actually -+major:1, band 1 is major:2, etc. For major, substitute the major number -+assigned to the qdisc on 'tc qdisc add' with the -+.B handle -+parameter. -+ -+.SH CLASSIFICATION -+Three methods are available to PRIO to determine in which band a packet will -+be enqueued. -+.TP -+From userspace -+A process with sufficient privileges can encode the destination class -+directly with SO_PRIORITY, see -+.BR tc(7). -+.TP -+with a tc filter -+A tc filter attached to the root qdisc can point traffic directly to a class -+.TP -+with the priomap -+Based on the packet priority, which in turn is derived from the Type of -+Service assigned to the packet. -+.P -+Only the priomap is specific to this qdisc. -+.SH QDISC PARAMETERS -+.TP -+bands -+Number of bands. If changed from the default of 3, -+.B priomap -+must be updated as well. -+.TP -+priomap -+The priomap maps the priority of -+a packet to a class. The priority can either be set directly from userspace, -+or be derived from the Type of Service of the packet. -+ -+Determines how packet priorities, as assigned by the kernel, map to -+bands. Mapping occurs based on the TOS octet of the packet, which looks like -+this: -+ -+.nf -+0 1 2 3 4 5 6 7 -++---+---+---+---+---+---+---+---+ -+| | | | -+|PRECEDENCE | TOS |MBZ| -+| | | | -++---+---+---+---+---+---+---+---+ -+.fi -+ -+The four TOS bits (the 'TOS field') are defined as: -+ -+.nf -+Binary Decimcal Meaning -+----------------------------------------- -+1000 8 Minimize delay (md) -+0100 4 Maximize throughput (mt) -+0010 2 Maximize reliability (mr) -+0001 1 Minimize monetary cost (mmc) -+0000 0 Normal Service -+.fi -+ -+As there is 1 bit to the right of these four bits, the actual value of the -+TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the -+value of the entire TOS field, not just the four bits. It is the value you -+see in the first column of this table: -+ -+.nf -+TOS Bits Means Linux Priority Band -+------------------------------------------------------------ -+0x0 0 Normal Service 0 Best Effort 1 -+0x2 1 Minimize Monetary Cost 1 Filler 2 -+0x4 2 Maximize Reliability 0 Best Effort 1 -+0x6 3 mmc+mr 0 Best Effort 1 -+0x8 4 Maximize Throughput 2 Bulk 2 -+0xa 5 mmc+mt 2 Bulk 2 -+0xc 6 mr+mt 2 Bulk 2 -+0xe 7 mmc+mr+mt 2 Bulk 2 -+0x10 8 Minimize Delay 6 Interactive 0 -+0x12 9 mmc+md 6 Interactive 0 -+0x14 10 mr+md 6 Interactive 0 -+0x16 11 mmc+mr+md 6 Interactive 0 -+0x18 12 mt+md 4 Int. Bulk 1 -+0x1a 13 mmc+mt+md 4 Int. Bulk 1 -+0x1c 14 mr+mt+md 4 Int. Bulk 1 -+0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 -+.fi -+ -+The second column contains the value of the relevant -+four TOS bits, followed by their translated meaning. For example, 15 stands -+for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum -+Throughput AND Minimum Delay. -+ -+The fourth column lists the way the Linux kernel interprets the TOS bits, by -+showing to which Priority they are mapped. -+ -+The last column shows the result of the default priomap. On the commandline, -+the default priomap looks like this: -+ -+ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 -+ -+This means that priority 4, for example, gets mapped to band number 1. -+The priomap also allows you to list higher priorities (> 7) which do not -+correspond to TOS mappings, but which are set by other means. -+ -+This table from RFC 1349 (read it for more details) explains how -+applications might very well set their TOS bits: -+ -+.nf -+TELNET 1000 (minimize delay) -+FTP -+ Control 1000 (minimize delay) -+ Data 0100 (maximize throughput) -+ -+TFTP 1000 (minimize delay) -+ -+SMTP -+ Command phase 1000 (minimize delay) -+ DATA phase 0100 (maximize throughput) -+ -+Domain Name Service -+ UDP Query 1000 (minimize delay) -+ TCP Query 0000 -+ Zone Transfer 0100 (maximize throughput) -+ -+NNTP 0001 (minimize monetary cost) -+ -+ICMP -+ Errors 0000 -+ Requests 0000 (mostly) -+ Responses (mostly) -+.fi -+ -+ -+.SH CLASSES -+PRIO classes cannot be configured further - they are automatically created -+when the PRIO qdisc is attached. Each class however can contain yet a -+further qdisc. -+ -+.SH BUGS -+Large amounts of traffic in the lower bands can cause starvation of higher -+bands. Can be prevented by attaching a shaper (for example, -+.BR tc-tbf(8) -+to these bands to make sure they cannot dominate the link. -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, , J Hadi Salim -+. This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-red.8 iproute2/debian/tc-red.8 ---- iproute2-orig/debian/tc-red.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-red.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,131 @@ -+.TH RED 8 "13 December 2001" "iproute2" "Linux" -+.SH NAME -+red \- Random Early Detection -+.SH SYNOPSIS -+.B tc qdisc ... red -+.B limit -+bytes -+.B min -+bytes -+.B max -+bytes -+.B avpkt -+bytes -+.B burst -+packets -+.B [ ecn ] [ bandwidth -+rate -+.B ] probability -+chance -+ -+.SH DESCRIPTION -+Random Early Detection is a classless qdisc which manages its queue size -+smartly. Regular queues simply drop packets from the tail when they are -+full, which may not be the optimal behaviour. RED also performs tail drop, -+but does so in a more gradual way. -+ -+Once the queue hits a certain average length, packets enqueued have a -+configurable chance of being marked (which may mean dropped). This chance -+increases linearly up to a point called the -+.B max -+average queue length, although the queue might get bigger. -+ -+This has a host of benefits over simple taildrop, while not being processor -+intensive. It prevents synchronous retransmits after a burst in traffic, -+which cause further retransmits, etc. -+ -+The goal is the have a small queue size, which is good for interactivity -+while not disturbing TCP/IP traffic with too many sudden drops after a burst -+of traffic. -+ -+Depending on 08 ECN is configured, marking either means dropping or -+purely marking a packet as overlimit. -+.SH ALGORITHM -+The average queue size is used for determining the marking -+probability. This is calculated using an Exponential Weighted Moving -+Average, which can be more or less sensitive to bursts. -+ -+When the average queue size is below -+.B min -+bytes, no packet will ever be marked. When it exceeds -+.B min, -+the probability of doing so climbs linearly up -+to -+.B probability, -+until the average queue size hits -+.B max -+bytes. Because -+.B probability -+is normally not set to 100%, the queue size might -+conceivably rise above -+.B max -+bytes, so the -+.B limit -+parameter is provided to set a hard maximum for the size of the queue. -+ -+.SH PARAMETERS -+.TP -+min -+Average queue size at which marking becomes a possibility. -+.TP -+max -+At this average queue size, the marking probability is maximal. Should be at -+least twice -+.B min -+to prevent synchronous retransmits, higher for low -+.B min. -+.TP -+probability -+Maximum probability for marking, specified as a floating point -+number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%, -+respectively). -+.TP -+limit -+Hard limit on the real (not average) queue size in bytes. Further packets -+are dropped. Should be set higher than max+burst. It is advised to set this -+a few times higher than -+.B max. -+.TP -+burst -+Used for determining how fast the average queue size is influenced by the -+real queue size. Larger values make the calculation more sluggish, allowing -+longer bursts of traffic before marking starts. Real life experiments -+support the following guideline: (min+min+max)/(3*avpkt). -+.TP -+avpkt -+Specified in bytes. Used with burst to determine the time constant for -+average queue size calculations. 1000 is a good value. -+.TP -+bandwidth -+This rate is used for calculating the average queue size after some -+idle time. Should be set to the bandwidth of your interface. Does not mean -+that RED will shape for you! Optional. -+.TP -+ecn -+As mentioned before, RED can either 'mark' or 'drop'. Explicit Congestion -+Notification allows RED to notify remote hosts that their rate exceeds the -+amount of bandwidth available. Non-ECN capable hosts can only be notified by -+dropping a packet. If this parameter is specified, packets which indicate -+that their hosts honor ECN will only be marked and not dropped, unless the -+queue size hits -+.B limit -+bytes. Needs a tc binary with RED support compiled in. Recommended. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH SOURCES -+.TP -+o -+Floyd, S., and Jacobson, V., Random Early Detection gateways for -+Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html -+.TP -+o -+Some changes to the algorithm by Alexey N. Kuznetsov. -+ -+.SH AUTHORS -+Alexey N. Kuznetsov, , Alexey Makarenko -+, J Hadi Salim . -+This manpage maintained by bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-sfq.8 iproute2/debian/tc-sfq.8 ---- iproute2-orig/debian/tc-sfq.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-sfq.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,107 @@ -+.TH TC 8 "8 December 2001" "iproute2" "Linux" -+.SH NAME -+sfq \- Stochastic Fairness Queueing -+.SH SYNOPSIS -+.B tc qdisc ... perturb -+seconds -+.B quantum -+bytes -+ -+.SH DESCRIPTION -+ -+Stochastic Fairness Queueing is a classless queueing discipline available for -+traffic control with the -+.BR tc (8) -+command. -+ -+SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'. -+The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing -+any single flow from drowning out the rest. -+ -+This may in fact have some effect in mitigating a Denial of Service attempt. -+ -+SFQ is work-conserving and therefore always delivers a packet if it has one available. -+.SH ALGORITHM -+On enqueueing, each packet is assigned to a hash bucket, based on -+.TP -+(i) -+Source address -+.TP -+(ii) -+Destination address -+.TP -+(iii) -+Source port -+.P -+If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP. -+Packets with other protocols are hashed based on the 32bits representation of their -+destination and the socket they belong to. A flow corresponds mostly to a TCP/IP -+connection. -+ -+Each of these buckets should represent a unique flow. Because multiple flows may -+get hashed to the same bucket, the hashing algorithm is perturbed at configurable -+intervals so that the unfairness lasts only for a short while. Perturbation may -+however cause some inadvertent packet reordering to occur. -+ -+When dequeuing, each hashbucket with data is queried in a round robin fashion. -+ -+The compile time maximum length of the SFQ is 128 packets, which can be spread over -+at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed -+on the fullest bucket, thus maintaining fairness. -+ -+.SH PARAMETERS -+.TP -+perturb -+Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that -+no perturbation occurs. Do not set too low for each perturbation may cause some packet -+reordering. Advised value: 10 -+.TP -+quantum -+Amount of bytes a flow is allowed to dequeue during a round of the round robin process. -+Defaults to the MTU of the interface which is also the advised value and the minimum value. -+ -+.SH EXAMPLE & USAGE -+ -+To attach to device ppp0: -+.P -+# tc qdisc add dev ppp0 root sfq perturb 10 -+.P -+Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful -+if it owns the queue. -+This is the case when the link speed equals the actually available bandwidth. This holds -+for regular phone modems, ISDN connections and direct non-switched ethernet links. -+.P -+Most often, cable modems and DSL devices do not fall into this category. The same holds -+for when connected to a switch and trying to send data to a congested segment also -+connected to the switch. -+.P -+In this case, the effective queue does not reside within Linux and is therefore not -+available for scheduling. -+.P -+Embed SFQ in a classful qdisc to make sure it owns the queue. -+ -+.SH SOURCE -+.TP -+o -+Paul E. McKenney "Stochastic Fairness Queuing", -+IEEE INFOCOMM'90 Proceedings, San Francisco, 1990. -+ -+.TP -+o -+Paul E. McKenney "Stochastic Fairness Queuing", -+"Interworking: Research and Experience", v.2, 1991, p.113-131. -+ -+.TP -+o -+See also: -+M. Shreedhar and George Varghese "Efficient Fair -+Queuing using Deficit Round Robin", Proc. SIGCOMM 95. -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc-tbf.8 iproute2/debian/tc-tbf.8 ---- iproute2-orig/debian/tc-tbf.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc-tbf.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,138 @@ -+.TH TC 8 "13 December 2001" "iproute2" "Linux" -+.SH NAME -+tbf \- Token Bucket Filter -+.SH SYNOPSIS -+.B tc qdisc ... tbf rate -+rate -+.B burst -+bytes/cell -+.B ( latency -+ms -+.B | limit -+bytes -+.B ) [ mpu -+bytes -+.B [ peakrate -+rate -+.B mtu -+bytes/cell -+.B ] ] -+.P -+burst is also known as buffer and maxburst. mtu is also known as minburst. -+.SH DESCRIPTION -+ -+The Token Bucket Filter is a classless queueing discipline available for -+traffic control with the -+.BR tc (8) -+command. -+ -+TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle -+itself, although packets are available, to ensure that the configured rate is not exceeded. -+On all platforms except for Alpha, -+it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, -+sending out data exactly at the configured rates. -+ -+Much higher rates are possible but at the cost of losing the minimal burstiness. In that -+case, data is on average dequeued at the configured rate but may be sent much faster at millisecond -+timescales. Because of further queues living in network adaptors, this is often not a problem. -+ -+Kernels with a higher 'HZ' can achieve higher rates with perfect burstiness. On Alpha, HZ is ten -+times higher, leading to a 10mbit/s limit to perfection. These calculations hold for packets of on -+average 1000 bytes. -+ -+.SH ALGORITHM -+As the name implies, traffic is filtered based on the expenditure of -+.B tokens. -+Tokens roughly correspond to bytes, with the additional constraint that each packet consumes -+some tokens, no matter how small it is. This reflects the fact that even a zero-sized packet occupies -+the link for some time. -+ -+On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst -+in one go. Tokens arrive at a steady rate, until the bucket is full. -+ -+If no tokens are available, packets are queued, up to a configured limit. The TBF now -+calculates the token deficit, and throttles until the first packet in the queue can be sent. -+ -+If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured -+to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF -+with a very small bucket, so that it doesn't burst. -+ -+To achieve perfection, the second bucket may contain only a single packet, which leads to -+the earlier mentioned 1mbit/s limit. -+ -+This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends -+on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 -+packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s. -+ -+.SH PARAMETERS -+See -+.BR tc (8) -+for how to specify the units of these values. -+.TP -+limit or latency -+Limit is the number of bytes that can be queued waiting for tokens to become -+available. You can also specify this the other way around by setting the -+latency parameter, which specifies the maximum amount of time a packet can -+sit in the TBF. The latter calculation takes into account the size of the -+bucket, the rate and possibly the peakrate (if set). These two parameters -+are mutually exclusive. -+.TP -+burst -+Also known as buffer or maxburst. -+Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. -+In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer -+if you want to reach your configured rate! -+ -+If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket. -+The minimum buffer size can be calculated by dividing the rate by HZ. -+ -+Token usage calculations are performed using a table which by default has a resolution of 8 packets. -+This resolution can be changed by specifying the -+.B cell -+size with the burst. For example, to specify a 6000 byte buffer with a 16 -+byte cell size, set a burst of 6000/16. You will probably never have to set -+this. Must be an integral power of 2. -+.TP -+mpu -+A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit -+determines the minimal token usage (specified in bytes) for a packet. Defaults to zero. -+.TP -+rate -+The speed knob. See remarks above about limits! See -+.BR tc (8) -+for units. -+.PP -+Furthermore, if a peakrate is desired, the following parameters are available: -+ -+.TP -+peakrate -+Maximum depletion rate of the bucket. Limited to 1mbit/s on Intel, 10mbit/s on Alpha. The peakrate does -+not need to be set, it is only necessary if perfect millisecond timescale shaping is required. -+ -+.TP -+mtu/minburst -+Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. -+If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst -+allows around 3mbit/s of peakrate, given 1000 byte packets. -+ -+Like the regular burstsize you can also specify a -+.B cell -+size. -+.SH EXAMPLE & USAGE -+ -+To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s, -+a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes -+at most 70ms of latency, with perfect peakrate behaviour, issue: -+.P -+# tc qdisc add dev eth0 root tbf rate 0.5mbit \\ -+ burst 5kb latency 70ms peakrate 1mbit \\ -+ minburst 1540 -+ -+.SH SEE ALSO -+.BR tc (8) -+ -+.SH AUTHOR -+Alexey N. Kuznetsov, . This manpage maintained by -+bert hubert -+ -+ -diff -Naur iproute2-orig/debian/tc.8 iproute2/debian/tc.8 ---- iproute2-orig/debian/tc.8 1969-12-31 16:00:00.000000000 -0800 -+++ iproute2/debian/tc.8 2004-05-21 00:09:38.000000000 -0700 -@@ -0,0 +1,348 @@ -+.TH TC 8 "16 December 2001" "iproute2" "Linux" -+.SH NAME -+tc \- show / manipulate traffic control settings -+.SH SYNOPSIS -+.B tc qdisc [ add | change | replace | link ] dev -+DEV -+.B -+[ parent -+qdisc-id -+.B | root ] -+.B [ handle -+qdisc-id ] qdisc -+[ qdisc specific parameters ] -+.P -+ -+.B tc class [ add | change | replace ] dev -+DEV -+.B parent -+qdisc-id -+.B [ classid -+class-id ] qdisc -+[ qdisc specific parameters ] -+.P -+ -+.B tc filter [ add | change | replace ] dev -+DEV -+.B [ parent -+qdisc-id -+.B | root ] protocol -+protocol -+.B prio -+priority filtertype -+[ filtertype specific parameters ] -+.B flowid -+flow-id -+ -+.B tc [-s | -d ] qdisc show [ dev -+DEV -+.B ] -+.P -+.B tc [-s | -d ] class show dev -+DEV -+.P -+.B tc filter show dev -+DEV -+ -+.SH DESCRIPTION -+.B Tc -+is used to configure Traffic Control in the Linux kernel. Traffic Control consists -+of the following: -+ -+.TP -+SHAPING -+When traffic is shaped, its rate of transmission is under control. Shaping may -+be more than lowering the available bandwidth - it is also used to smooth out -+bursts in traffic for better network behaviour. Shaping occurs on egress. -+ -+.TP -+SCHEDULING -+By scheduling the transmission of packets it is possible to improve interactivity -+for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering -+is also called prioritizing, and happens only on egress. -+ -+.TP -+POLICING -+Where shaping deals with transmission of traffic, policing pertains to traffic -+arriving. Policing thus occurs on ingress. -+ -+.TP -+DROPPING -+Traffic exceeding a set bandwidth may also be dropped forthwith, both on -+ingress and on egress. -+ -+.P -+Processing of traffic is controlled by three kinds of objects: qdiscs, -+classes and filters. -+ -+.SH QDISCS -+.B qdisc -+is short for 'queueing discipline' and it is elementary to -+understanding traffic control. Whenever the kernel needs to send a -+packet to an interface, it is -+.B enqueued -+to the qdisc configured for that interface. Immediately afterwards, the kernel -+tries to get as many packets as possible from the qdisc, for giving them -+to the network adaptor driver. -+ -+A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure -+First In, First Out queue. It does however store traffic when the network interface -+can't handle it momentarily. -+ -+.SH CLASSES -+Some qdiscs can contain classes, which contain further qdiscs - traffic may -+then be enqueued in any of the inner qdiscs, which are within the -+.B classes. -+When the kernel tries to dequeue a packet from such a -+.B classful qdisc -+it can come from any of the classes. A qdisc may for example prioritize -+certain kinds of traffic by trying to dequeue from certain classes -+before others. -+ -+.SH FILTERS -+A -+.B filter -+is used by a classful qdisc to determine in which class a packet will -+be enqueued. Whenever traffic arrives at a class with subclasses, it needs -+to be classified. Various methods may be employed to do so, one of these -+are the filters. All filters attached to the class are called, until one of -+them returns with a verdict. If no verdict was made, other criteria may be -+available. This differs per qdisc. -+ -+It is important to notice that filters reside -+.B within -+qdiscs - they are not masters of what happens. -+ -+.SH CLASSLESS QDISCS -+The classless qdiscs are: -+.TP -+[p|b]fifo -+Simplest usable qdisc, pure First In, First Out behaviour. Limited in -+packets or in bytes. -+.TP -+pfifo_fast -+Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band -+queue which honors Type of Service flags, as well as the priority that may be -+assigned to a packet. -+.TP -+red -+Random Early Detection simulates physical congestion by randomly dropping -+packets when nearing configured bandwidth allocation. Well suited to very -+large bandwidth applications. -+.TP -+sfq -+Stochastic Fairness Queueing reorders queued traffic so each 'session' -+gets to send a packet in turn. -+.TP -+tbf -+The Token Bucket Filter is suited for slowing traffic down to a precisely -+configured rate. Scales well to large bandwidths. -+.SH CONFIGURING CLASSLESS QDISCS -+In the absence of classful qdiscs, classless qdiscs can only be attached at -+the root of a device. Full syntax: -+.P -+.B tc qdisc add dev -+DEV -+.B root -+QDISC QDISC-PARAMETERS -+ -+To remove, issue -+.P -+.B tc qdisc del dev -+DEV -+.B root -+ -+The -+.B pfifo_fast -+qdisc is the automatic default in the absence of a configured qdisc. -+ -+.SH CLASSFUL QDISCS -+The classful qdiscs are: -+.TP -+CBQ -+Class Based Queueing implements a rich linksharing hierarchy of classes. -+It contains shaping elements as well as prioritizing capabilities. Shaping is -+performed using link idle time calculations based on average packet size and -+underlying link bandwidth. The latter may be ill-defined for some interfaces. -+.TP -+HTB -+The Hierarchy Token Bucket implements a rich linksharing hierarchy of -+classes with an emphasis on conforming to existing practices. HTB facilitates -+guaranteeing bandwidth to classes, while also allowing specification of upper -+limits to inter-class sharing. It contains shaping elements, based on TBF and -+can prioritize classes. -+.TP -+PRIO -+The PRIO qdisc is a non-shaping container for a configurable number of -+classes which are dequeued in order. This allows for easy prioritization -+of traffic, where lower classes are only able to send if higher ones have -+no packets available. To facilitate configuration, Type Of Service bits are -+honored by default. -+.SH THEORY OF OPERATION -+Classes form a tree, where each class has a single parent. -+A class may have multiple children. Some qdiscs allow for runtime addition -+of classes (CBQ, HTB) while others (PRIO) are created with a static number of -+children. -+ -+Qdiscs which allow dynamic addition of classes can have zero or more -+subclasses to which traffic may be enqueued. -+ -+Furthermore, each class contains a -+.B leaf qdisc -+which by default has -+.B pfifo -+behaviour though another qdisc can be attached in place. This qdisc may again -+contain classes, but each class can have only one leaf qdisc. -+ -+When a packet enters a classful qdisc it can be -+.B classified -+to one of the classes within. Three criteria are available, although not all -+qdiscs will use all three: -+.TP -+tc filters -+If tc filters are attached to a class, they are consulted first -+for relevant instructions. Filters can match on all fields of a packet header, -+as well as on the firewall mark applied by ipchains or iptables. See -+.BR tc-filters (8). -+.TP -+Type of Service -+Some qdiscs have built in rules for classifying packets based on the TOS field. -+.TP -+skb->priority -+Userspace programs can encode a class-id in the 'skb->priority' field using -+the SO_PRIORITY option. -+.P -+Each node within the tree can have its own filters but higher level filters -+may also point directly to lower classes. -+ -+If classification did not succeed, packets are enqueued to the leaf qdisc -+attached to that class. Check qdisc specific manpages for details, however. -+ -+.SH NAMING -+All qdiscs, classes and filters have IDs, which can either be specified -+or be automatically assigned. -+ -+IDs consist of a major number and a minor number, separated by a colon. -+ -+.TP -+QDISCS -+A qdisc, which potentially can have children, -+gets assigned a major number, called a 'handle', leaving the minor -+number namespace available for classes. The handle is expressed as '10:'. -+It is customary to explicitly assign a handle to qdiscs expected to have -+children. -+ -+.TP -+CLASSES -+Classes residing under a qdisc share their qdisc major number, but each have -+a separate minor number called a 'classid' that has no relation to their -+parent classes, only to their parent qdisc. The same naming custom as for -+qdiscs applies. -+ -+.TP -+FILTERS -+Filters have a three part ID, which is only needed when using a hashed -+filter hierarchy, for which see -+.BR tc-filters (8). -+.SH UNITS -+All parameters accept a floating point number, possibly followed by a unit. -+.P -+Bandwidths or rates can be specified in: -+.TP -+kbps -+Kilobytes per second -+.TP -+mbps -+Megabytes per second -+.TP -+kbit -+Kilobits per second -+.TP -+mbit -+Megabits per second -+.TP -+bps or a bare number -+Bits per second -+.P -+Amounts of data can be specified in: -+.TP -+kb or k -+Kilobytes -+.TP -+mb or m -+Megabytes -+.TP -+mbit -+Megabits -+.TP -+kbit -+Kilobits -+.TP -+b or a bare number -+Bytes. -+.P -+Lengths of time can be specified in: -+.TP -+s, sec or secs -+Whole seconds -+.TP -+ms, msec or msecs -+Milliseconds -+.TP -+us, usec, usecs or a bare number -+Microseconds. -+ -+.SH TC COMMANDS -+The following commands are available for qdiscs, classes and filter: -+.TP -+add -+Add a qdisc, class or filter to a node. For all entities, a -+.B parent -+must be passed, either by passing its ID or by attaching directly to the root of a device. -+When creating a qdisc or a filter, it can be named with the -+.B handle -+parameter. A class is named with the -+.B classid -+parameter. -+ -+.TP -+remove -+A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs -+are automatically deleted, as well as any filters attached to them. -+ -+.TP -+change -+Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception -+that the handle cannot be changed and neither can the parent. In other words, -+.B -+change -+cannot move a node. -+ -+.TP -+replace -+Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet -+it is created. -+ -+.TP -+link -+Only available for qdiscs and performs a replace where the node -+must exist already. -+ -+ -+.SH HISTORY -+.B tc -+was written by Alexey N. Kuznetsov and added in Linux 2.2. -+.SH SEE ALSO -+.BR tc-cbq (8), -+.BR tc-htb (8), -+.BR tc-sfq (8), -+.BR tc-red (8), -+.BR tc-tbf (8), -+.BR tc-pfifo (8), -+.BR tc-bfifo (8), -+.BR tc-pfifo_fast (8), -+.BR tc-filters (8) -+ -+.SH AUTHOR -+Manpage maintained by bert hubert (ahu@ds9a.nl) -+ -diff -Naur iproute2-orig/include/rt_names.h iproute2/include/rt_names.h ---- iproute2-orig/include/rt_names.h 2000-04-16 10:42:50.000000000 -0700 -+++ iproute2/include/rt_names.h 2004-05-21 00:16:36.000000000 -0700 -@@ -1,6 +1,8 @@ - #ifndef RT_NAMES_H_ - #define RT_NAMES_H_ 1 - -+#include -+ - const char* rtnl_rtprot_n2a(int id, char *buf, int len); - const char* rtnl_rtscope_n2a(int id, char *buf, int len); - const char* rtnl_rttable_n2a(int id, char *buf, int len); -diff -Naur iproute2-orig/lib/rt_names.c iproute2/lib/rt_names.c ---- iproute2-orig/lib/rt_names.c 2000-04-16 10:42:52.000000000 -0700 -+++ iproute2/lib/rt_names.c 2004-05-21 00:16:36.000000000 -0700 -@@ -16,6 +16,7 @@ - #include - #include - #include -+#include - - static void rtnl_tab_initialize(char *file, char **tab, int size) - { -diff -Naur iproute2-orig/misc/arpd.c iproute2/misc/arpd.c ---- iproute2-orig/misc/arpd.c 2002-01-09 20:02:26.000000000 -0800 -+++ iproute2/misc/arpd.c 2004-05-21 00:16:36.000000000 -0700 -@@ -16,7 +16,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include -@@ -28,6 +28,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff --git a/abs/core/iproute2/PKGBUILD b/abs/core/iproute2/PKGBUILD new file mode 100644 index 0000000..ed280e5 --- /dev/null +++ b/abs/core/iproute2/PKGBUILD @@ -0,0 +1,37 @@ +# $Id: PKGBUILD 24415 2009-01-16 12:43:06Z ronald $ +# Maintainer: Ronald van Haren +# Contributor: Judd Vinet + +pkgname=iproute2 +pkgver=2.6.28 +pkgrel=1 +pkgdesc="IP Routing Utilities" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.linux-foundation.org/en/Net:Iproute2" +depends=('linux-atm' 'perl') + +provides=('iproute') +conflicts=('iproute') +replaces=('iproute') + +backup=('etc/iproute2/ematch_map' 'etc/iproute2/rt_dsfield' 'etc/iproute2/rt_protos' \ + 'etc/iproute2/rt_realms' 'etc/iproute2/rt_scopes' 'etc/iproute2/rt_tables') + +source=(http://devresources.linux-foundation.org/dev/iproute2/download/iproute2-${pkgver}.tar.bz2) +md5sums=('595f9b17320f69e8d30d2fa80f1bca14') + +build() { + cd $srcdir/iproute2-${pkgver} + + sed -i 's|/usr/local/lib/iptables|/usr/lib/iptables|' include/iptables.h || return 1 + sed -i 's|=/share|=/usr/share|' Makefile || return 1 + sed -i 's|=/sbin|=/usr/sbin|' Makefile || return 1 + + ./configure || return 1 + make || return 1 + make DESTDIR=$pkgdir install || return 1 + +# chmod 755 $pkgdir/usr/sbin/ifcfg || return 1 + +} diff --git a/abs/core/iproute2/iproute2-2.4.7-now-ss020116.patch b/abs/core/iproute2/iproute2-2.4.7-now-ss020116.patch new file mode 100644 index 0000000..0e37865 --- /dev/null +++ b/abs/core/iproute2/iproute2-2.4.7-now-ss020116.patch @@ -0,0 +1,9823 @@ +diff -Naur iproute2-orig/Makefile iproute2/Makefile +--- iproute2-orig/Makefile 2002-01-15 15:30:32.000000000 -0800 ++++ iproute2/Makefile 2004-05-21 00:16:36.000000000 -0700 +@@ -4,8 +4,6 @@ + CONFDIR=/etc/iproute2 + DOCDIR=/usr/doc/iproute2 + +-KERNEL_INCLUDE=/usr/src/linux/include +-LIBC_INCLUDE=/usr/include + + DEFINES= -DRESOLVE_HOSTNAMES + +@@ -23,19 +21,11 @@ + #options for ipx + ADDLIB+=ipx_ntop.o ipx_pton.o + +-ifeq ($(LIBC_INCLUDE)/socketbits.h,$(wildcard $(LIBC_INCLUDE)/socketbits.h)) +- ifeq ($(LIBC_INCLUDE)/net/if_packet.h,$(wildcard $(LIBC_INCLUDE)/net/if_packet.h)) +- GLIBCFIX=-I../include-glibc -include ../include-glibc/glibc-bugs.h +- endif +-endif +-ifeq ($(LIBC_INCLUDE)/bits/socket.h,$(wildcard $(LIBC_INCLUDE)/bits/socket.h)) +- GLIBCFIX=-I../include-glibc -I/usr/include/db3 -include ../include-glibc/glibc-bugs.h +-endif + + + CC = gcc + CCOPTS = -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g +-CFLAGS = $(CCOPTS) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES) ++CFLAGS = $(CCOPTS) -I../include $(DEFINES) + + LDLIBS += -L../lib -lnetlink -lutil + +@@ -43,19 +33,11 @@ + + LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a + +-all: check-kernel ++all: + @set -e; \ + for i in $(SUBDIRS); \ + do $(MAKE) -C $$i; done + +-check-kernel: +-ifeq ($(KERNEL_INCLUDE),) +- @echo "Please, set correct KERNEL_INCLUDE"; false +-else +- @set -e; \ +- if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \ +- echo "Please, compile the kernel first"; false; fi +-endif + + install: all + install -m 0755 -d $(DESTDIR)$(SBINDIR) +diff -Naur iproute2-orig/Makefile~ iproute2/Makefile~ +--- iproute2-orig/Makefile~ 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/Makefile~ 2002-01-15 15:30:32.000000000 -0800 +@@ -0,0 +1,77 @@ ++# Path to parent kernel include files directory ++DESTDIR= ++SBINDIR=/sbin ++CONFDIR=/etc/iproute2 ++DOCDIR=/usr/doc/iproute2 ++ ++KERNEL_INCLUDE=/usr/src/linux/include ++LIBC_INCLUDE=/usr/include ++ ++DEFINES= -DRESOLVE_HOSTNAMES ++ ++#options if you have a bind>=4.9.4 libresolv (or, maybe, glibc) ++LDLIBS=-lresolv ++ADDLIB= ++ ++#options if you compile with libc5, and without a bind>=4.9.4 libresolv ++#LDLIBS= ++#ADDLIB=inet_ntop.o inet_pton.o ++ ++#options for decnet ++ADDLIB+=dnet_ntop.o dnet_pton.o ++ ++#options for ipx ++ADDLIB+=ipx_ntop.o ipx_pton.o ++ ++ifeq ($(LIBC_INCLUDE)/socketbits.h,$(wildcard $(LIBC_INCLUDE)/socketbits.h)) ++ ifeq ($(LIBC_INCLUDE)/net/if_packet.h,$(wildcard $(LIBC_INCLUDE)/net/if_packet.h)) ++ GLIBCFIX=-I../include-glibc -include ../include-glibc/glibc-bugs.h ++ endif ++endif ++ifeq ($(LIBC_INCLUDE)/bits/socket.h,$(wildcard $(LIBC_INCLUDE)/bits/socket.h)) ++ GLIBCFIX=-I../include-glibc -I/usr/include/db3 -include ../include-glibc/glibc-bugs.h ++endif ++ ++ ++CC = gcc ++CCOPTS = -D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g ++CFLAGS = $(CCOPTS) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(DEFINES) ++ ++LDLIBS += -L../lib -lnetlink -lutil ++ ++SUBDIRS=lib ip tc misc ++ ++LIBNETLINK=../lib/libnetlink.a ../lib/libutil.a ++ ++all: check-kernel ++ @set -e; \ ++ for i in $(SUBDIRS); \ ++ do $(MAKE) -C $$i; done ++ ++check-kernel: ++ifeq ($(KERNEL_INCLUDE),) ++ @echo "Please, set correct KERNEL_INCLUDE"; false ++else ++ @set -e; \ ++ if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \ ++ echo "Please, compile the kernel first"; false; fi ++endif ++ ++install: all ++ install -m 0755 -d $(DESTDIR)$(SBINDIR) ++ install -m 0755 -d $(DESTDIR)$(CONFDIR) ++ install -m 0755 -d $(DESTDIR)$(DOCDIR)/examples ++ install -m 0755 -d $(DESTDIR)$(DOCDIR)/examples/diffserv ++ install -m 0644 README.iproute2+tc $(shell find examples -type f -maxdepth 1) $(DESTDIR)$(DOCDIR)/examples ++ install -m 0644 $(shell echo examples/diffserv/*) $(DESTDIR)$(DOCDIR)/examples/diffserv ++ @for i in $(SUBDIRS) doc; do $(MAKE) -C $$i install; done ++ @cd etc/iproute2; for i in *; do \ ++ if [ ! -e $(DESTDIR)$(CONFDIR)/$$i ]; then \ ++ echo install -m 0644 $$i $(DESTDIR)$(CONFDIR); \ ++ install -m 0644 $$i $(DESTDIR)$(CONFDIR); fi; done ++ ++clean: ++ for i in $(SUBDIRS) doc; \ ++ do $(MAKE) -C $$i clean; done ++ ++.EXPORT_ALL_VARIABLES: +diff -Naur iproute2-orig/debian/README.Debian iproute2/debian/README.Debian +--- iproute2-orig/debian/README.Debian 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/README.Debian 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,4 @@ ++This version of "iproute" includes the HTB Linux queuing discipline ++explained in http://luxik.cdi.cz/~devik/qos/htb/ ++ ++You need kernel version 2.4.21 or newer in order to use it. +diff -Naur iproute2-orig/debian/changelog iproute2/debian/changelog +--- iproute2-orig/debian/changelog 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/changelog 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,207 @@ ++iproute (20010824-13) unstable; urgency=low ++ ++ * debian/rules: Run dpkg-shlibdeps with all the executables, ++ to fix dependency problem (closes: Bug#224063) ++ * Really removed references to obsolete include files ++ (Bug#223165 was not fixed properly) ++ ++ -- Juan Cespedes Sun, 25 Jan 2004 23:04:20 +0100 ++ ++iproute (20010824-12) unstable; urgency=low ++ ++ * Updated README.Debian and copyright file ++ * Added two new manpages from http://lartc.org/manpages/: ++ ip(8) and tc-cbq-details(8). ++ * Removed references to obsolete include files which made ++ compilation fail (closes: Bug#223165) ++ ++ -- Juan Cespedes Sun, 14 Dec 2003 00:40:10 +0100 ++ ++iproute (20010824-11) unstable; urgency=low ++ ++ * Changed priority to "optional" ++ * Fixed "tc -s qdisc" on sparc (patch by "Nicolas S. Dade" ++ ) (closes: Bug#194128) ++ ++ -- Juan Cespedes Sun, 17 Aug 2003 00:22:47 +0200 ++ ++iproute (20010824-10) unstable; urgency=low ++ ++ * Updated manual pages from http://www.lartc.org/manpages/ ++ (closes: Bug#156353, Bug#175313, Bug#176989, Bug#189095) ++ * New Standards-Version ++ * Don't "rm -rf /etc/iproute2" on purge (closes: Bug#202862) ++ * Include "iproute2" in the description (closes: Bug#182999) ++ ++ -- Juan Cespedes Sat, 16 Aug 2003 18:29:27 +0200 ++ ++iproute (20010824-9) unstable; urgency=medium ++ ++ * Added patch for HTB v3.6 to be able to work with kernel 2.4.20 ++ (from http://luxik.cdi.cz/~devik/qos/htb/v3/htb3.6-020525.tgz) ++ (closes: Bug#147550, Bug#167149, Bug#167597, Bug#171277) ++ ++ -- Juan Cespedes Thu, 05 Dec 2002 13:44:10 +0100 ++ ++iproute (20010824-8) unstable; urgency=medium ++ ++ * Added support for HTB queuing discipline (closes: Bug#133381) ++ NOTE: you need a patched kernel in order to use it ++ ++ -- Juan Cespedes Tue, 2 Apr 2002 20:29:40 +0200 ++ ++iproute (20010824-7) unstable; urgency=medium ++ ++ * Move `ip' binary to /bin to fix FHS violation (closes: Bug#134812) ++ ++ -- Juan Cespedes Mon, 4 Mar 2002 00:20:30 +0100 ++ ++iproute (20010824-6) unstable; urgency=low ++ ++ * Added a couple of #ifdef's to be able to compile with older ++ kernel headers (needed for arm) (closes: Bug#131695) ++ ++ -- Juan Cespedes Sat, 16 Feb 2002 19:27:15 +0100 ++ ++iproute (20010824-5) unstable; urgency=low ++ ++ * Really fix Bug#121589 (dead gateway bug); apparently I ++ forgot to include the patch in 20010824-2 ++ ++ -- Juan Cespedes Tue, 29 Jan 2002 23:22:24 +0100 ++ ++iproute (20010824-4) unstable; urgency=low ++ ++ * Added support for DIFFSERV and ATM in tc ++ ++ -- Juan Cespedes Sun, 13 Jan 2002 03:01:47 +0100 ++ ++iproute (20010824-3) unstable; urgency=low ++ ++ * Updated tc* man pages (thanks to bert hubert ) ++ * Fixed spurious space in `tc -s qdisc' output (closes: Bug#128501) ++ ++ -- Juan Cespedes Thu, 10 Jan 2002 22:18:25 +0100 ++ ++iproute (20010824-2) unstable; urgency=low ++ ++ * Fixed the following important and serious bugs: ++ + iproute doesn't compile on Alpha (closes: Bug#118113, Bug#123224) ++ + iproute doesn't compile on MIPS (closes: Bug#118424) ++ + iproute doesn't compile on powerpc (closes: Bug#119601) ++ * Added man pages for tc (closes: Bug#124230), tc-cbq, tc-red, tc-tbf, ++ tc-prio and tc-sfq ++ * Removed references to old programs from iproute(7) (closes: Bug#99536) ++ * Fixed bug which presented first hop as dead in equal cost multipath ++ (closes: Bug#121589) ++ * Do not process .ps with through `psnup' (closes: Bug#119820) ++ ++ -- Juan Cespedes Tue, 8 Jan 2002 16:07:27 +0100 ++ ++iproute (20010824-1) unstable; urgency=low ++ ++ * New upstream version ++ * Make ingress qdisc work again with tc (closes: Bug#84444) ++ * Make it compile properly with new include files (closes: Bug#113112) ++ ++ -- Juan Cespedes Sun, 28 Oct 2001 16:38:00 +0100 ++ ++iproute (20001007-1) unstable; urgency=low ++ ++ * New upstream version (closes: Bug#63701) ++ * Remove /etc/iproute2 on purge (closes: Bug#72743) ++ * Fixed Lintian warnings (no-priority-field and no-section-field) ++ ++ -- Juan Cespedes Sat, 14 Oct 2000 19:27:12 +0200 ++ ++iproute (991023-2) unstable; urgency=low ++ ++ * New Standards-Version (3.1.1) (closes: Bug#47923) ++ * Modified description of package to show which kernel options are ++ necessary to use the package (closes: Bug#47922) ++ * Updated manual page to point at /usr/share/doc/iproute (closes: Bug#47924) ++ ++ -- Juan Cespedes Sun, 19 Dec 1999 04:00:21 +0100 ++ ++iproute (991023-1) unstable; urgency=low ++ ++ * New upstream version (closes: Bug#48733) ++ ++ -- Juan Cespedes Tue, 2 Nov 1999 16:29:37 +0100 ++ ++iproute (990824-1) unstable; urgency=low ++ ++ * New maintainer ++ * New upstream version ++ * New Standards-Version: 3.1.0 ++ * Minor fix in "ip rule list": mask in "from" address was not shown ++ correctly ++ * Removed obsoleted documentation from "debian/" directory ++ ++ -- Juan Cespedes Sun, 24 Oct 1999 19:02:56 +0200 ++ ++iproute (990630-1) unstable; urgency=low ++ ++ * New upstream version. ++ * FHS and standards 3.0.1.0. ++ ++ -- Roberto Lumbreras Tue, 3 Aug 1999 02:49:28 +0200 ++ ++iproute (990530-1) unstable; urgency=low ++ ++ * New upstream version. ++ * Build with 2.2.10 kernel headers. ++ * Install new scripts ip/routef ip/routel, but not ip/ifcfg ip/rtpr by ++ now, I don't know who/what needs rtpr; ifcfg uses arping, and it isn't ++ available in debian for now. ++ ++ -- Roberto Lumbreras Tue, 22 Jun 1999 02:28:53 +0200 ++ ++iproute (990329-1) unstable; urgency=low ++ ++ * New upstream version. ++ * Build with 2.2.5 kernel headers. ++ ++ -- Roberto Lumbreras Sun, 4 Apr 1999 18:50:39 +0200 ++ ++iproute (980630-1) unstable; urgency=low ++ ++ * New upstream version. ++ * Build with 2.1.112 kernel headers. ++ * Rewrote the rules file. ++ ++ -- Roberto Lumbreras Wed, 29 Jul 1998 23:37:52 +0200 ++ ++iproute (980119-1) unstable; urgency=low ++ ++ * Outdated documentation. Upstream docs are scarce. ++ * Non-Maintainer release ++ * This package has no correct copyright file! ++ * Include all the README.* docs from the upstream site. ++ * Modified to build under glibc ++ * Build with 2.1.85 kernel headers. ++ * produce a correct diff. ++ * Reworked the rules file to utilize debmake fully ++ * Newest upstream release ++ * glibc compilation ++ ++ -- Christoph Lameter Wed, 4 Feb 1998 13:37:28 -0800 ++ ++iproute (961225-2) unstable frozen; urgency=low ++ ++ * Added a man page for iproute. (Fixes #8080). ++ * Removed out-of-date patches. ++ * Added routing.txt from /usr/src/linux/Documentation/networking/routing.txt ++ * Newer version of debmake. ++ ++ -- Tom Lees Mon, 17 Apr 1997 17:00:36 +0100 ++ ++iproute (961225-1) unstable; urgency=low ++ ++ * Initial Release. ++ ++ -- Tom Lees Mon, 30 Dec 1996 11:12:23 +0000 ++ ++Local variables: ++mode: debian-changelog ++End: +diff -Naur iproute2-orig/debian/conffiles iproute2/debian/conffiles +--- iproute2-orig/debian/conffiles 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/conffiles 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,5 @@ ++/etc/iproute2/rt_dsfield ++/etc/iproute2/rt_protos ++/etc/iproute2/rt_realms ++/etc/iproute2/rt_scopes ++/etc/iproute2/rt_tables +diff -Naur iproute2-orig/debian/control iproute2/debian/control +--- iproute2-orig/debian/control 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/control 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,19 @@ ++Source: iproute ++Section: net ++Priority: optional ++Maintainer: Juan Cespedes ++Standards-Version: 3.6.0 ++Build-Depends: tetex-bin, atm-dev ++ ++Package: iproute ++Architecture: any ++Depends: ${shlibs:Depends} ++Description: Professional tools to control the networking in Linux kernels ++ This is `iproute', the professional set of tools to control the ++ networking behavior in kernels 2.2.x and later. ++ . ++ At least, the options CONFIG_NETLINK and CONFIG_RTNETLINK must ++ be compiled in the running kernel ++ . ++ This package is also known as iproute2 upstream and in some ++ documentation. +diff -Naur iproute2-orig/debian/copyright iproute2/debian/copyright +--- iproute2-orig/debian/copyright 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/copyright 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,42 @@ ++This is the Debian GNU/Linux's prepackaged version of the ++Linux Traffic Control engine and related utils, "iproute" ++ ++This package was put together from sources obtained from: ++ ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.4.7-now-ss010824.tar.gz ++ ++Changes for Debian: ++ * added Debian GNU/Linux package maintenance system files ++ * Added HTB v3.6 from ++ ++ ++ ++Copyrights ++---------- ++Copyright (C) 1996-2001 Alexey Kuznetsov ++ ++Modifications for Debian: ++ Copyright (C) 1996 Tom Lees ++ Copyright (C) 1998 Christoph Lameter ++ Copyright (C) 1998-1999 Roberto Lumbreras ++ Copyright (C) 1999-2003 Juan Cespedes ++ ++ ++License ++------- ++ ++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, 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. ++ ++A copy of the GNU General Public License is available as ++`/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution ++or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'. ++You can also obtain it by writing to the Free Software Foundation, ++Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ++ +diff -Naur iproute2-orig/debian/manpages/ip.8 iproute2/debian/manpages/ip.8 +--- iproute2-orig/debian/manpages/ip.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/ip.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,1809 @@ ++.TH IP 8 "17 January 2002" "iproute2" "Linux" ++.SH NAME ++ip \- show / manipulate routing, devices, policy routing and tunnels ++.SH SYNOPSIS ++ ++.ad l ++.in +8 ++.ti -8 ++.B ip ++.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " ++.BR help " }" ++.sp ++ ++.ti -8 ++.IR OBJECT " := { " ++.BR link " | " addr " | " route " | " rule " | " neigh " | " tunnel " | "\ ++maddr " | " mroute " | " monitor " }" ++.sp ++ ++.ti -8 ++.IR OPTIONS " := { " ++\fB\-V\fR[\fIersion\fR] | ++\fB\-s\fR[\fItatistics\fR] | ++\fB\-r\fR[\fIesolve\fR] | ++\fB\-f\fR[\fIamily\fR] { ++.BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | " ++\fB\-o\fR[\fIneline\fR] } ++ ++.ti -8 ++.BI "ip link set " DEVICE ++.RB "{ " up " | " down " | " arp " { " on " | " off " } |" ++.br ++.BR promisc " { " on " | " off " } |" ++.br ++.BR allmulti " { " on " | " off " } |" ++.br ++.BR dynamic " { " on " | " off " } |" ++.br ++.BR multicast " { " on " | " off " } |" ++.br ++.B txqueuelen ++.IR PACKETS " |" ++.br ++.B name ++.IR NEWNAME " |" ++.br ++.B address ++.IR LLADDR " |" ++.B broadcast ++.IR LLADDR " |" ++.br ++.B mtu ++.IR MTU " }" ++ ++.ti -8 ++.B ip link show ++.RI "[ " DEVICE " ]" ++ ++.ti -8 ++.BR "ip addr" " { " add " | " del " } " ++.IB IFADDR " dev " STRING ++ ++.ti -8 ++.BR "ip addr" " { " show " | " flush " } [ " dev ++.IR STRING " ] [ " ++.B scope ++.IR SCOPE-ID " ] [ " ++.B to ++.IR PREFIX " ] [ " FLAG-LIST " ] [ " ++.B label ++.IR PATTERN " ]" ++ ++.ti -8 ++.IR IFADDR " := " PREFIX " | " ADDR ++.B peer ++.IR PREFIX " [ " ++.B broadcast ++.IR ADDR " ] [ " ++.B anycast ++.IR ADDR " ] [ " ++.B label ++.IR STRING " ] [ " ++.B scope ++.IR SCOPE-ID " ]" ++ ++.ti -8 ++.IR SCOPE-ID " := " ++.RB "[ " host " | " link " | " global " | " ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR FLAG-LIST " := [ " FLAG-LIST " ] " FLAG ++ ++.ti -8 ++.IR FLAG " := " ++.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\ ++tentative " | " deprecated " ]" ++ ++.ti -8 ++.BR "ip route" " { " ++.BR list " | " flush " } " ++.I SELECTOR ++ ++.ti -8 ++.B ip route get ++.IR ADDRESS " [ " ++.BI from " ADDRESS " iif " STRING" ++.RB " ] [ " oif ++.IR STRING " ] [ " ++.B tos ++.IR TOS " ]" ++ ++.ti -8 ++.BR "ip route" " { " add " | " del " | " change " | " append " | "\ ++replace " | " monitor " } " ++.I ROUTE ++ ++.ti -8 ++.IR SELECTOR " := " ++.RB "[ " root ++.IR PREFIX " ] [ " ++.B match ++.IR PREFIX " ] [ " ++.B exact ++.IR PREFIX " ] [ " ++.B table ++.IR TABLE_ID " ] [ " ++.B proto ++.IR RTPROTO " ] [ " ++.B type ++.IR TYPE " ] [ " ++.B scope ++.IR SCOPE " ]" ++ ++.ti -8 ++.IR ROUTE " := " NODE_SPEC " [ " INFO_SPEC " ]" ++ ++.ti -8 ++.IR NODE_SPEC " := [ " TYPE " ] " PREFIX " [" ++.B tos ++.IR TOS " ] [ " ++.B table ++.IR TABLE_ID " ] [ " ++.B proto ++.IR RTPROTO " ] [ " ++.B scope ++.IR SCOPE " ] [ " ++.B metric ++.IR METRIC " ]" ++ ++.ti -8 ++.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " [" ++.B nexthop ++.IR NH " ] ..." ++ ++.ti -8 ++.IR NH " := [ " ++.B via ++.IR ADDRESS " ] [ " ++.B dev ++.IR STRING " ] [ " ++.B weight ++.IR NUMBER " ] " NHFLAGS ++ ++.ti -8 ++.IR OPTIONS " := " FLAGS " [ " ++.B mtu ++.IR NUMBER " ] [ " ++.B advmss ++.IR NUMBER " ] [ " ++.B rtt ++.IR NUMBER " ] [ " ++.B rttvar ++.IR NUMBER " ] [ " ++.B window ++.IR NUMBER " ] [ " ++.B cwnd ++.IR NUMBER " ] [ " ++.B ssthresh ++.IR REALM " ] [ " ++.B realms ++.IR REALM " ]" ++ ++.ti -8 ++.IR TYPE " := [ " ++.BR unicast " | " local " | " broadcast " | " multicast " | "\ ++throw " | " unreachable " | " prohibit " | " blackhole " | " nat " ]" ++ ++.ti -8 ++.IR TABLE_ID " := [ " ++.BR local "| " main " | " default " | " all " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR SCOPE " := [ " ++.BR host " | " link " | " global " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR FLAGS " := [ " ++.BR equalize " ]" ++ ++.ti -8 ++.IR NHFLAGS " := [ " ++.BR onlink " | " pervasive " ]" ++ ++.ti -8 ++.IR RTPROTO " := [ " ++.BR kernel " | " boot " | " static " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.B ip rule ++.RB " [ " list " | " add " | " del " ]" ++.I SELECTOR ACTION ++ ++.ti -8 ++.IR SELECTOR " := [ " ++.B from ++.IR PREFIX " ] [ " ++.B to ++.IR PREFIX " ] [ " ++.B tos ++.IR TOS " ] [ " ++.B fwmark ++.IR FWMARK " ] [ " ++.B dev ++.IR STRING " ] [ " ++.B pref ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR ACTION " := [ " ++.B table ++.IR TABLE_ID " ] [ " ++.B nat ++.IR ADDRESS " ] [ " ++.BR prohibit " | " reject " | " unreachable " ] [ " realms ++.RI "[" SRCREALM "/]" DSTREALM " ]" ++ ++.ti -8 ++.IR TABLE_ID " := [ " ++.BR local " | " main " | " default " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.BR "ip neigh" " { " add " | " del " | " change " | " replace " } { " ++.IR ADDR " [ " ++.B lladdr ++.IR LLADDR " ] [ " ++.BR nud " { " permanent " | " noarp " | " stale " | " reachable " } ] | " proxy ++.IR ADDR " } [ " ++.B dev ++.IR DEV " ]" ++ ++.ti -8 ++.BR "ip neigh" " { " show " | " flush " } [ " to ++.IR PREFIX " ] [ " ++.B dev ++.IR DEV " ] [ " ++.B nud ++.IR STATE " ]" ++ ++.ti -8 ++.BR "ip tunnel" " { " add " | " change " | " del " | " show " }" ++.RI "[ " NAME " ]" ++.br ++.RB "[ " mode " { " ipip " | " gre " | " sit " } ]" ++.br ++.RB "[ " remote ++.IR ADDR " ] [ " ++.B local ++.IR ADDR " ]" ++.br ++.RB "[ [" i "|" o "]" seq " ] [ [" i "|" o "]" key ++.IR KEY " ] [ " ++.RB "[" i "|" o "]" csum " ] ]" ++.br ++.RB "[ " ttl ++.IR TTL " ] [ " ++.B tos ++.IR TOS " ] [ " ++.RB "[" no "]" pmtudisc " ]" ++.br ++.RB "[ " dev ++.IR PHYS_DEV " ]" ++ ++.ti -8 ++.IR ADDR " := { " IP_ADDRESS " |" ++.BR any " }" ++ ++.ti -8 ++.IR TOS " := { " NUMBER " |" ++.BR inherit " }" ++ ++.ti -8 ++.IR TTL " := { " 1 ".." 255 " | " ++.BR inherit " }" ++ ++.ti -8 ++.IR KEY " := { " DOTTED_QUAD " | " NUMBER " }" ++ ++.ti -8 ++.BR "ip maddr" " [ " add " | " del " ]" ++.IB MULTIADDR " dev " STRING ++ ++.ti -8 ++.BR "ip maddr show" " [ " dev ++.IR STRING " ]" ++ ++.ti -8 ++.BR "ip mroute show" " [" ++.IR PREFIX " ] [ " ++.B from ++.IR PREFIX " ] [ " ++.B iif ++.IR DEVICE " ]" ++ ++.ti -8 ++.BR "ip monitor" " [ " all " |" ++.IR LISTofOBJECTS " ]" ++.in -8 ++.ad b ++ ++.SH OPTIONS ++ ++.TP ++.BR "\-V" , " -Version" ++print the version of the ++.B ip ++utility and exit. ++ ++.TP ++.BR "\-s" , " \-stats", " \-statistics" ++output more information. If the option ++appears twice or more, the amount of information increases. ++As a rule, the information is statistics or some time values. ++ ++.TP ++.BR "\-f" , " \-family" ++followed by protocol family identifier: ++.BR "inet" , " inet6" ++or ++.B link ++,enforce the protocol family to use. If the option is not present, ++the protocol family is guessed from other arguments. If the rest ++of the command line does not give enough information to guess the ++family, ++.B ip ++falls back to the default one, usually ++.B inet ++or ++.BR "any" . ++.B link ++is a special family identifier meaning that no networking protocol ++is involved. ++ ++.TP ++.B \-4 ++shortcut for ++.BR "-family inet" . ++ ++.TP ++.B \-6 ++shortcut for ++.BR "\-family inet6" . ++ ++.TP ++.B \-0 ++shortcut for ++.BR "\-family link" . ++ ++.TP ++.BR "\-o" , " \-oneline" ++output each record on a single line, replacing line feeds ++with the ++.B '\' ++character. This is convenient when you want to count records ++with ++.BR wc (1) ++ or to ++.BR grep (1) ++the output. ++ ++.TP ++.BR "\-r" , " \-resolve" ++use the system's name resolver to print DNS names instead of ++host addresses. ++ ++.SH IP - COMMAND SYNTAX ++ ++.SS ++.I OBJECT ++ ++.TP ++.B link ++- network device. ++ ++.TP ++.B address ++- protocol (IP or IPv6) address on a device. ++.TP ++.B neighbour ++- ARP or NDISC cache entry. ++ ++.TP ++.B route ++- routing table entry. ++ ++.TP ++.B rule ++- rule in routing policy database. ++ ++.TP ++.B maddress ++- multicast address. ++ ++.TP ++.B mroute ++- multicast routing cache entry. ++ ++.TP ++.B tunnel ++- tunnel over IP. ++ ++.PP ++The names of all objects may be written in full or ++abbreviated form, f.e. ++.B address ++is abbreviated as ++.B addr ++or just ++.B a. ++ ++.SS ++.I COMMAND ++ ++Specifies the action to perform on the object. ++The set of possible actions depends on the object type. ++As a rule, it is possible to ++.BR "add" , " delete" ++and ++.B show ++(or ++.B list ++) objects, but some objects do not allow all of these operations ++or have some additional commands. The ++.B help ++command is available for all objects. It prints ++out a list of available commands and argument syntax conventions. ++.sp ++If no command is given, some default command is assumed. ++Usually it is ++.B list ++or, if the objects of this class cannot be listed, ++.BR "help" . ++ ++.SH ip link - network device configuration ++ ++.B link ++is a network device and the corresponding commands ++display and change the state of devices. ++ ++.SS ip link set - change device attributes ++ ++.TP ++.BI dev " NAME " (default) ++.I NAME ++specifies network device to operate on. ++ ++.TP ++.BR up " and " down ++change the state of the device to ++.B UP ++or ++.BR "DOWN" . ++ ++.TP ++.BR "arp on " or " arp off" ++change the ++.B NOARP ++flag on the device. ++ ++.TP ++.BR "multicast on " or " multicast off" ++change the ++.B MULTICAST ++flag on the device. ++ ++.TP ++.BR "dynamic on " or " dynamic off" ++change the ++.B DYNAMIC ++flag on the device. ++ ++.TP ++.BI name " NAME" ++change the name of the device. This operation is not ++recommended if the device is running or has some addresses ++already configured. ++ ++.TP ++.BI txqueuelen " NUMBER" ++.TP ++.BI txqlen " NUMBER" ++change the transmit queue length of the device. ++ ++.TP ++.BI mtu " NUMBER" ++change the ++.I MTU ++of the device. ++ ++.TP ++.BI address " LLADDRESS" ++change the station address of the interface. ++ ++.TP ++.BI broadcast " LLADDRESS" ++.TP ++.BI brd " LLADDRESS" ++.TP ++.BI peer " LLADDRESS" ++change the link layer broadcast address or the peer address when ++the interface is ++.IR "POINTOPOINT" . ++ ++.PP ++.B Warning: ++If multiple parameter changes are requested, ++.B ip ++aborts immediately after any of the changes have failed. ++This is the only case when ++.B ip ++can move the system to an unpredictable state. The solution ++is to avoid changing several parameters with one ++.B ip link set ++call. ++ ++.SS ip link show - display device attributes ++ ++.TP ++.BI dev " NAME " (default) ++.I NAME ++specifies the network device to show. ++If this argument is omitted all devices are listed. ++ ++.TP ++.B up ++only display running interfaces. ++ ++.SH ip address - protocol address management. ++ ++The ++.B address ++is a protocol (IP or IPv6) address attached ++to a network device. Each device must have at least one address ++to use the corresponding protocol. It is possible to have several ++different addresses attached to one device. These addresses are not ++discriminated, so that the term ++.B alias ++is not quite appropriate for them and we do not use it in this document. ++.sp ++The ++.B ip addr ++command displays addresses and their properties, adds new addresses ++and deletes old ones. ++ ++.SS ip address add - add new protocol address. ++ ++.TP ++.BI dev " NAME" ++the name of the device to add the address to. ++ ++.TP ++.BI local " ADDRESS " (default) ++the address of the interface. The format of the address depends ++on the protocol. It is a dotted quad for IP and a sequence of ++hexadecimal halfwords separated by colons for IPv6. The ++.I ADDRESS ++may be followed by a slash and a decimal number which encodes ++the network prefix length. ++ ++.TP ++.BI peer " ADDRESS" ++the address of the remote endpoint for pointopoint interfaces. ++Again, the ++.I ADDRESS ++may be followed by a slash and a decimal number, encoding the network ++prefix length. If a peer address is specified, the local address ++cannot have a prefix length. The network prefix is associated ++with the peer rather than with the local address. ++ ++.TP ++.BI broadcast " ADDRESS" ++the broadcast address on the interface. ++.sp ++It is possible to use the special symbols ++.B '+' ++and ++.B '-' ++instead of the broadcast address. In this case, the broadcast address ++is derived by setting/resetting the host bits of the interface prefix. ++ ++.TP ++.BI label " NAME" ++Each address may be tagged with a label string. ++In order to preserve compatibility with Linux-2.0 net aliases, ++this string must coincide with the name of the device or must be prefixed ++with the device name followed by colon. ++ ++.TP ++.BI scope " SCOPE_VALUE" ++the scope of the area where this address is valid. ++The available scopes are listed in file ++.BR "/etc/iproute2/rt_scopes" . ++Predefined scope values are: ++ ++.in +8 ++.B global ++- the address is globally valid. ++.sp ++.B site ++- (IPv6 only) the address is site local, i.e. it is ++valid inside this site. ++.sp ++.B link ++- the address is link local, i.e. it is valid only on this device. ++.sp ++.B host ++- the address is valid only inside this host. ++.in -8 ++ ++.SS ip address delete - delete protocol address ++.B Arguments: ++coincide with the arguments of ++.B ip addr add. ++The device name is a required argument. The rest are optional. ++If no arguments are given, the first address is deleted. ++ ++.SS ip address show - look at protocol addresses ++ ++.TP ++.BI dev " NAME " (default) ++name of device. ++ ++.TP ++.BI scope " SCOPE_VAL" ++only list addresses with this scope. ++ ++.TP ++.BI to " PREFIX" ++only list addresses matching this prefix. ++ ++.TP ++.BI label " PATTERN" ++only list addresses with labels matching the ++.IR "PATTERN" . ++.I PATTERN ++is a usual shell style pattern. ++ ++.TP ++.BR dynamic " and " permanent ++(IPv6 only) only list addresses installed due to stateless ++address configuration or only list permanent (not dynamic) ++addresses. ++ ++.TP ++.B tentative ++(IPv6 only) only list addresses which did not pass duplicate ++address detection. ++ ++.TP ++.B deprecated ++(IPv6 only) only list deprecated addresses. ++ ++.TP ++.BR primary " and " secondary ++only list primary (or secondary) addresses. ++ ++.SS ip address flush - flush protocol addresses ++This command flushes the protocol addresses selected by some criteria. ++ ++.PP ++This command has the same arguments as ++.B show. ++The difference is that it does not run when no arguments are given. ++ ++.PP ++.B Warning: ++This command (and other ++.B flush ++commands described below) is pretty dangerous. If you make a mistake, ++it will not forgive it, but will cruelly purge all the addresses. ++ ++.PP ++With the ++.B -statistics ++option, the command becomes verbose. It prints out the number of deleted ++addresses and the number of rounds made to flush the address list. If ++this option is given twice, ++.B ip addr flush ++also dumps all the deleted addresses in the format described in the ++previous subsection. ++ ++.SH ip neighbour - neighbour/arp tables management. ++ ++.B neighbour ++objects establish bindings between protocol addresses and ++link layer addresses for hosts sharing the same link. ++Neighbour entries are organized into tables. The IPv4 neighbour table ++is known by another name - the ARP table. ++ ++.P ++The corresponding commands display neighbour bindings ++and their properties, add new neighbour entries and delete old ones. ++ ++.SS ip neighbour add - add a new neighbour entry ++.SS ip neighbour change - change an existing entry ++.SS ip neighbour replace - add a new entry or change an existing one ++ ++These commands create new neighbour records or update existing ones. ++ ++.TP ++.BI to " ADDRESS " (default) ++the protocol address of the neighbour. It is either an IPv4 or IPv6 address. ++ ++.TP ++.BI dev " NAME" ++the interface to which this neighbour is attached. ++ ++.TP ++.BI lladdr " LLADDRESS" ++the link layer address of the neighbour. ++.I LLADDRESS ++can also be ++.BR "null" . ++ ++.TP ++.BI nud " NUD_STATE" ++the state of the neighbour entry. ++.B nud ++is an abbreviation for 'Neigh bour Unreachability Detection'. ++The state can take one of the following values: ++ ++.in +8 ++.B permanent ++- the neighbour entry is valid forever and can be only ++be removed administratively. ++.sp ++ ++.B noarp ++- the neighbour entry is valid. No attempts to validate ++this entry will be made but it can be removed when its lifetime expires. ++.sp ++ ++.B reachable ++- the neighbour entry is valid until the reachability ++timeout expires. ++.sp ++ ++.B stale ++- the neighbour entry is valid but suspicious. ++This option to ++.B ip neigh ++does not change the neighbour state if it was valid and the address ++is not changed by this command. ++.in -8 ++ ++.SS ip neighbour delete - delete a neighbour entry ++This command invalidates a neighbour entry. ++ ++.PP ++The arguments are the same as with ++.BR "ip neigh add" , ++except that ++.B lladdr ++and ++.B nud ++are ignored. ++ ++.PP ++.B Warning: ++Attempts to delete or manually change a ++.B noarp ++entry created by the kernel may result in unpredictable behaviour. ++Particularly, the kernel may try to resolve this address even ++on a ++.B NOARP ++interface or if the address is multicast or broadcast. ++ ++.SS ip neighbour show - list neighbour entries ++ ++This commands displays neighbour tables. ++ ++.TP ++.BI to " ADDRESS " (default) ++the prefix selecting the neighbours to list. ++ ++.TP ++.BI dev " NAME" ++only list the neighbours attached to this device. ++ ++.TP ++.B unused ++only list neighbours which are not currently in use. ++ ++.TP ++.BI nud " NUD_STATE" ++only list neighbour entries in this state. ++.I NUD_STATE ++takes values listed below or the special value ++.B all ++which means all states. This option may occur more than once. ++If this option is absent, ++.B ip ++lists all entries except for ++.B none ++and ++.BR "noarp" . ++ ++.SS ip neighbour flush - flush neighbour entries ++This command flushes neighbour tables, selecting ++entries to flush by some criteria. ++ ++.PP ++This command has the same arguments as ++.B show. ++The differences are that it does not run when no arguments are given, ++and that the default neighbour states to be flushed do not include ++.B permanent ++and ++.BR "noarp" . ++ ++.PP ++With the ++.B -statistics ++option, the command becomes verbose. It prints out the number of ++deleted neighbours and the number of rounds made to flush the ++neighbour table. If the option is given ++twice, ++.B ip neigh flush ++also dumps all the deleted neighbours. ++ ++.SH ip route - routing table management ++Manipulate route entries in the kernel routing tables keep ++information about paths to other networked nodes. ++.sp ++.B Route types: ++ ++.in +8 ++.B unicast ++- the route entry describes real paths to the destinations covered ++by the route prefix. ++ ++.sp ++.B unreachable ++- these destinations are unreachable. Packets are discarded and the ++ICMP message ++.I host unreachable ++is generated. ++The local senders get an ++.I EHOSTUNREACH ++error. ++ ++.sp ++.B blackhole ++- these destinations are unreachable. Packets are discarded silently. ++The local senders get an ++.I EINVAL ++error. ++ ++.sp ++.B prohibit ++- these destinations are unreachable. Packets are discarded and the ++ICMP message ++.I communication administratively prohibited ++is generated. The local senders get an ++.I EACCES ++error. ++ ++.sp ++.B local ++- the destinations are assigned to this host. The packets are looped ++back and delivered locally. ++ ++.sp ++.B broadcast ++- the destinations are broadcast addresses. The packets are sent as ++link broadcasts. ++ ++.sp ++.B throw ++- a special control route used together with policy rules. If such a ++route is selected, lookup in this table is terminated pretending that ++no route was found. Without policy routing it is equivalent to the ++absence of the route in the routing table. The packets are dropped ++and the ICMP message ++.I net unreachable ++is generated. The local senders get an ++.I ENETUNREACH ++error. ++ ++.sp ++.B nat ++- a special NAT route. Destinations covered by the prefix ++are considered to be dummy (or external) addresses which require translation ++to real (or internal) ones before forwarding. The addresses to translate to ++are selected with the attribute ++.BR "via" . ++ ++.sp ++.B anycast ++.RI "- " "not implemented" ++the destinations are ++.I anycast ++addresses assigned to this host. They are mainly equivalent ++to ++.B local ++with one difference: such addresses are invalid when used ++as the source address of any packet. ++ ++.sp ++.B multicast ++- a special type used for multicast routing. It is not present in ++normal routing tables. ++.in -8 ++ ++.P ++.B Route tables: ++Linux-2.x can pack routes into several routing ++tables identified by a number in the range from 1 to 255 or by ++name from the file ++.B /etc/iproute2/rt_tables ++. By default all normal routes are inserted into the ++.B main ++table (ID 254) and the kernel only uses this table when calculating routes. ++ ++.sp ++Actually, one other table always exists, which is invisible but ++even more important. It is the ++.B local ++table (ID 255). This table ++consists of routes for local and broadcast addresses. The kernel maintains ++this table automatically and the administrator usually need not modify it ++or even look at it. ++ ++The multiple routing tables enter the game when ++.I policy routing ++is used. ++ ++.SS ip route add - add new route ++.SS ip route change - change route ++.SS ip route replace - change or add new one ++ ++.TP ++.BI to " TYPE PREFIX " (default) ++the destination prefix of the route. If ++.I TYPE ++is omitted, ++.B ip ++assumes type ++.BR "unicast" . ++Other values of ++.I TYPE ++are listed above. ++.I PREFIX ++is an IP or IPv6 address optionally followed by a slash and the ++prefix length. If the length of the prefix is missing, ++.B ip ++assumes a full-length host route. There is also a special ++.I PREFIX ++.B default ++- which is equivalent to IP ++.B 0/0 ++or to IPv6 ++.BR "::/0" . ++ ++.TP ++.BI tos " TOS" ++.TP ++.BI dsfield " TOS" ++the Type Of Service (TOS) key. This key has no associated mask and ++the longest match is understood as: First, compare the TOS ++of the route and of the packet. If they are not equal, then the packet ++may still match a route with a zero TOS. ++.I TOS ++is either an 8 bit hexadecimal number or an identifier ++from ++.BR "/etc/iproute2/rt_dsfield" . ++ ++.TP ++.BI metric " NUMBER" ++.TP ++.BI preference " NUMBER" ++the preference value of the route. ++.I NUMBER ++is an arbitrary 32bit number. ++ ++.TP ++.BI table " TABLEID" ++the table to add this route to. ++.I TABLEID ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_tables" . ++If this parameter is omitted, ++.B ip ++assumes the ++.B main ++table, with the exception of ++.BR local " , " broadcast " and " nat ++routes, which are put into the ++.B local ++table by default. ++ ++.TP ++.BI dev " NAME" ++the output device name. ++ ++.TP ++.BI via " ADDRESS" ++the address of the nexthop router. Actually, the sense of this field ++depends on the route type. For normal ++.B unicast ++routes it is either the true next hop router or, if it is a direct ++route installed in BSD compatibility mode, it can be a local address ++of the interface. For NAT routes it is the first address of the block ++of translated IP destinations. ++ ++.TP ++.BI src " ADDRESS" ++the source address to prefer when sending to the destinations ++covered by the route prefix. ++ ++.TP ++.BI realm " REALMID" ++the realm to which this route is assigned. ++.I REALMID ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_realms" . ++ ++.TP ++.BI mtu " MTU" ++.TP ++.BI "mtu lock" " MTU" ++the MTU along the path to the destination. If the modifier ++.B lock ++is not used, the MTU may be updated by the kernel due to ++Path MTU Discovery. If the modifier ++.B lock ++is used, no path MTU discovery will be tried, all packets ++will be sent without the DF bit in IPv4 case or fragmented ++to MTU for IPv6. ++ ++.TP ++.BI window " NUMBER" ++the maximal window for TCP to advertise to these destinations, ++measured in bytes. It limits maximal data bursts that our TCP ++peers are allowed to send to us. ++ ++.TP ++.BI rtt " NUMBER" ++the initial RTT ('Round Trip Time') estimate. ++ ++.TP ++.BI rttvar " NUMBER " "(2.3.15+ only)" ++the initial RTT variance estimate. ++ ++.TP ++.BI ssthresh " NUMBER " "(2.3.15+ only)" ++an estimate for the initial slow start threshold. ++ ++.TP ++.BI cwnd " NUMBER " "(2.3.15+ only)" ++the clamp for congestion window. It is ignored if the ++.B lock ++flag is not used. ++ ++.TP ++.BI advmss " NUMBER " "(2.3.15+ only)" ++the MSS ('Maximal Segment Size') to advertise to these ++destinations when establishing TCP connections. If it is not given, ++Linux uses a default value calculated from the first hop device MTU. ++(If the path to these destination is asymmetric, this guess may be wrong.) ++ ++.TP ++.BI reordering " NUMBER " "(2.3.15+ only)" ++Maximal reordering on the path to this destination. ++If it is not given, Linux uses the value selected with ++.B sysctl ++variable ++.BR "net/ipv4/tcp_reordering" . ++ ++.TP ++.BI nexthop " NEXTHOP" ++the nexthop of a multipath route. ++.I NEXTHOP ++is a complex value with its own syntax similar to the top level ++argument lists: ++ ++.in +8 ++.BI via " ADDRESS" ++- is the nexthop router. ++.sp ++ ++.BI dev " NAME" ++- is the output device. ++.sp ++ ++.BI weight " NUMBER" ++- is a weight for this element of a multipath ++route reflecting its relative bandwidth or quality. ++.in -8 ++ ++.TP ++.BI scope " SCOPE_VAL" ++the scope of the destinations covered by the route prefix. ++.I SCOPE_VAL ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_scopes" . ++If this parameter is omitted, ++.B ip ++assumes scope ++.B global ++for all gatewayed ++.B unicast ++routes, scope ++.B link ++for direct ++.BR unicast " and " broadcast ++routes and scope ++.BR host " for " local ++routes. ++ ++.TP ++.BI protocol " RTPROTO" ++the routing protocol identifier of this route. ++.I RTPROTO ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_protos" . ++If the routing protocol ID is not given, ++.B ip assumes protocol ++.B boot ++(i.e. it assumes the route was added by someone who doesn't ++understand what they are doing). Several protocol values have ++a fixed interpretation. ++Namely: ++ ++.in +8 ++.B redirect ++- the route was installed due to an ICMP redirect. ++.sp ++ ++.B kernel ++- the route was installed by the kernel during autoconfiguration. ++.sp ++ ++.B boot ++- the route was installed during the bootup sequence. ++If a routing daemon starts, it will purge all of them. ++.sp ++ ++.B static ++- the route was installed by the administrator ++to override dynamic routing. Routing daemon will respect them ++and, probably, even advertise them to its peers. ++.sp ++ ++.B ra ++- the route was installed by Router Discovery protocol. ++.in -8 ++ ++.sp ++The rest of the values are not reserved and the administrator is free ++to assign (or not to assign) protocol tags. ++ ++.TP ++.B onlink ++pretend that the nexthop is directly attached to this link, ++even if it does not match any interface prefix. ++ ++.TP ++.B equalize ++allow packet by packet randomization on multipath routes. ++Without this modifier, the route will be frozen to one selected ++nexthop, so that load splitting will only occur on per-flow base. ++.B equalize ++only works if the kernel is patched. ++ ++.SS ip route delete - delete route ++ ++.B ip route del ++has the same arguments as ++.BR "ip route add" , ++but their semantics are a bit different. ++ ++Key values ++.RB "(" to ", " tos ", " preference " and " table ")" ++select the route to delete. If optional attributes are present, ++.B ip ++verifies that they coincide with the attributes of the route to delete. ++If no route with the given key and attributes was found, ++.B ip route del ++fails. ++ ++.SS ip route show - list routes ++the command displays the contents of the routing tables or the route(s) ++selected by some criteria. ++ ++.TP ++.BI to " SELECTOR " (default) ++only select routes from the given range of destinations. ++.I SELECTOR ++consists of an optional modifier ++.RB "(" root ", " match " or " exact ")" ++and a prefix. ++.BI root " PREFIX" ++selects routes with prefixes not shorter than ++.IR PREFIX "." ++F.e. ++.BI root " 0/0" ++selects the entire routing table. ++.BI match " PREFIX" ++selects routes with prefixes not longer than ++.IR PREFIX "." ++F.e. ++.BI match " 10.0/16" ++selects ++.IR 10.0/16 "," ++.IR 10/8 " and " 0/0 , ++but it does not select ++.IR 10.1/16 " and " 10.0.0/24 . ++And ++.BI exact " PREFIX" ++(or just ++.IR PREFIX ")" ++selects routes with this exact prefix. If neither of these options ++are present, ++.B ip ++assumes ++.BI root " 0/0" ++i.e. it lists the entire table. ++ ++.TP ++.BI tos " TOS" ++.BI dsfield " TOS" ++only select routes with the given TOS. ++ ++.TP ++.BI table " TABLEID" ++show the routes from this table(s). The default setting is to show ++.BR table main "." ++.I TABLEID ++may either be the ID of a real table or one of the special values: ++.sp ++.in +8 ++.B all ++- list all of the tables. ++.sp ++.B cache ++- dump the routing cache. ++.in -8 ++ ++.TP ++.B cloned ++.TP ++.B cached ++list cloned routes i.e. routes which were dynamically forked from ++other routes because some route attribute (f.e. MTU) was updated. ++Actually, it is equivalent to ++.BR "table cache" "." ++ ++.TP ++.BI from " SELECTOR" ++the same syntax as for ++.BR to "," ++but it binds the source address range rather than destinations. ++Note that the ++.B from ++option only works with cloned routes. ++ ++.TP ++.BI protocol " RTPROTO" ++only list routes of this protocol. ++ ++.TP ++.BI scope " SCOPE_VAL" ++only list routes with this scope. ++ ++.TP ++.BI type " TYPE" ++only list routes of this type. ++ ++.TP ++.BI dev " NAME" ++only list routes going via this device. ++ ++.TP ++.BI via " PREFIX" ++only list routes going via the nexthop routers selected by ++.IR PREFIX "." ++ ++.TP ++.BI src " PREFIX" ++only list routes with preferred source addresses selected ++by ++.IR PREFIX "." ++ ++.TP ++.BI realm " REALMID" ++.TP ++.BI realms " FROMREALM/TOREALM" ++only list routes with these realms. ++ ++.SS ip route flush - flush routing tables ++this command flushes routes selected by some criteria. ++ ++.sp ++The arguments have the same syntax and semantics as the arguments of ++.BR "ip route show" , ++but routing tables are not listed but purged. The only difference is ++the default action: ++.B show ++dumps all the IP main routing table but ++.B flush ++prints the helper page. ++ ++.sp ++With the ++.B -statistics ++option, the command becomes verbose. It prints out the number of ++deleted routes and the number of rounds made to flush the routing ++table. If the option is given ++twice, ++.B ip route flush ++also dumps all the deleted routes in the format described in the ++previous subsection. ++ ++.SS ip route get - get a single route ++this command gets a single route to a destination and prints its ++contents exactly as the kernel sees it. ++ ++.TP ++.BI to " ADDRESS " (default) ++the destination address. ++ ++.TP ++.BI from " ADDRESS" ++the source address. ++ ++.TP ++.BI tos " TOS" ++.TP ++.BI dsfield " TOS" ++the Type Of Service. ++ ++.TP ++.BI iif " NAME" ++the device from which this packet is expected to arrive. ++ ++.TP ++.BI oif " NAME" ++force the output device on which this packet will be routed. ++ ++.TP ++.B connected ++if no source address ++.RB "(option " from ")" ++was given, relookup the route with the source set to the preferred ++address received from the first lookup. ++If policy routing is used, it may be a different route. ++ ++.P ++Note that this operation is not equivalent to ++.BR "ip route show" . ++.B show ++shows existing routes. ++.B get ++resolves them and creates new clones if necessary. Essentially, ++.B get ++is equivalent to sending a packet along this path. ++If the ++.B iif ++argument is not given, the kernel creates a route ++to output packets towards the requested destination. ++This is equivalent to pinging the destination ++with a subsequent ++.BR "ip route ls cache" , ++however, no packets are actually sent. With the ++.B iif ++argument, the kernel pretends that a packet arrived from this interface ++and searches for a path to forward the packet. ++ ++.SH ip rule - routing policy database management ++ ++.BR "Rule" s ++in the routing policy database control the route selection algorithm. ++ ++.P ++Classic routing algorithms used in the Internet make routing decisions ++based only on the destination address of packets (and in theory, ++but not in practice, on the TOS field). ++ ++.P ++In some circumstances we want to route packets differently depending not only ++on destination addresses, but also on other packet fields: source address, ++IP protocol, transport protocol ports or even packet payload. ++This task is called 'policy routing'. ++ ++.P ++To solve this task, the conventional destination based routing table, ordered ++according to the longest match rule, is replaced with a 'routing policy ++database' (or RPDB), which selects routes by executing some set of rules. ++ ++.P ++Each policy routing rule consists of a ++.B selector ++and an ++.B action predicate. ++The RPDB is scanned in the order of increasing priority. The selector ++of each rule is applied to {source address, destination address, incoming ++interface, tos, fwmark} and, if the selector matches the packet, ++the action is performed. The action predicate may return with success. ++In this case, it will either give a route or failure indication ++and the RPDB lookup is terminated. Otherwise, the RPDB program ++continues on the next rule. ++ ++.P ++Semantically, natural action is to select the nexthop and the output device. ++ ++.P ++At startup time the kernel configures the default RPDB consisting of three ++rules: ++ ++.TP ++1. ++Priority: 0, Selector: match anything, Action: lookup routing ++table ++.B local ++(ID 255). ++The ++.B local ++table is a special routing table containing ++high priority control routes for local and broadcast addresses. ++.sp ++Rule 0 is special. It cannot be deleted or overridden. ++ ++.TP ++2. ++Priority: 32766, Selector: match anything, Action: lookup routing ++table ++.B main ++(ID 254). ++The ++.B main ++table is the normal routing table containing all non-policy ++routes. This rule may be deleted and/or overridden with other ++ones by the administrator. ++ ++.TP ++3. ++Priority: 32767, Selector: match anything, Action: lookup routing ++table ++.B default ++(ID 253). ++The ++.B default ++table is empty. It is reserved for some post-processing if no previous ++default rules selected the packet. ++This rule may also be deleted. ++ ++.P ++Each RPDB entry has additional ++attributes. F.e. each rule has a pointer to some routing ++table. NAT and masquerading rules have an attribute to select new IP ++address to translate/masquerade. Besides that, rules have some ++optional attributes, which routes have, namely ++.BR "realms" . ++These values do not override those contained in the routing tables. They ++are only used if the route did not select any attributes. ++ ++.sp ++The RPDB may contain rules of the following types: ++ ++.in +8 ++.B unicast ++- the rule prescribes to return the route found ++in the routing table referenced by the rule. ++ ++.B blackhole ++- the rule prescribes to silently drop the packet. ++ ++.B unreachable ++- the rule prescribes to generate a 'Network is unreachable' error. ++ ++.B prohibit ++- the rule prescribes to generate 'Communication is administratively ++prohibited' error. ++ ++.B nat ++- the rule prescribes to translate the source address ++of the IP packet into some other value. ++.in -8 ++ ++.SS ip rule add - insert a new rule ++.SS ip rule delete - delete a rule ++ ++.TP ++.BI type " TYPE " (default) ++the type of this rule. The list of valid types was given in the previous ++subsection. ++ ++.TP ++.BI from " PREFIX" ++select the source prefix to match. ++ ++.TP ++.BI to " PREFIX" ++select the destination prefix to match. ++ ++.TP ++.BI iif " NAME" ++select the incoming device to match. If the interface is loopback, ++the rule only matches packets originating from this host. This means ++that you may create separate routing tables for forwarded and local ++packets and, hence, completely segregate them. ++ ++.TP ++.BI tos " TOS" ++.TP ++.BI dsfield " TOS" ++select the TOS value to match. ++ ++.TP ++.BI fwmark " MARK" ++select the ++.B fwmark ++value to match. ++ ++.TP ++.BI priority " PREFERENCE" ++the priority of this rule. Each rule should have an explicitly ++set ++.I unique ++priority value. ++ ++.TP ++.BI table " TABLEID" ++the routing table identifier to lookup if the rule selector matches. ++ ++.TP ++.BI realms " FROM/TO" ++Realms to select if the rule matched and the routing table lookup ++succeeded. Realm ++.I TO ++is only used if the route did not select any realm. ++ ++.TP ++.BI nat " ADDRESS" ++The base of the IP address block to translate (for source addresses). ++The ++.I ADDRESS ++may be either the start of the block of NAT addresses (selected by NAT ++routes) or a local host address (or even zero). ++In the last case the router does not translate the packets, but ++masquerades them to this address. ++ ++.B Warning: ++Changes to the RPDB made with these commands do not become active ++immediately. It is assumed that after a script finishes a batch of ++updates, it flushes the routing cache with ++.BR "ip route flush cache" . ++ ++.SS ip rule show - list rules ++This command has no arguments. ++ ++.SH ip maddress - multicast addresses management ++ ++.B maddress ++objects are multicast addresses. ++ ++.SS ip maddress show - list multicast addresses ++ ++.TP ++.BI dev " NAME " (default) ++the device name. ++ ++.SS ip maddress add - add a multicast address ++.SS ip maddress delete - delete a multicast address ++these commands attach/detach a static link layer multicast address ++to listen on the interface. ++Note that it is impossible to join protocol multicast groups ++statically. This command only manages link layer addresses. ++ ++.TP ++.BI address " LLADDRESS " (default) ++the link layer multicast address. ++ ++.TP ++.BI dev " NAME" ++the device to join/leave this multicast address. ++ ++.SH ip mroute - multicast routing cache management ++.B mroute ++objects are multicast routing cache entries created by a user level ++mrouting daemon (f.e. ++.B pimd ++or ++.B mrouted ++). ++ ++Due to the limitations of the current interface to the multicast routing ++engine, it is impossible to change ++.B mroute ++objects administratively, so we may only display them. This limitation ++will be removed in the future. ++ ++.SS ip mroute show - list mroute cache entries ++ ++.TP ++.BI to " PREFIX " (default) ++the prefix selecting the destination multicast addresses to list. ++ ++.TP ++.BI iif " NAME" ++the interface on which multicast packets are received. ++ ++.TP ++.BI from " PREFIX" ++the prefix selecting the IP source addresses of the multicast route. ++ ++.SH ip tunnel - tunnel configuration ++.B tunnel ++objects are tunnels, encapsulating packets in IPv4 packets and then ++sending them over the IP infrastructure. ++ ++.SS ip tunnel add - add a new tunnel ++.SS ip tunnel change - change an existing tunnel ++.SS ip tunnel delete - destroy a tunnel ++ ++.TP ++.BI name " NAME " (default) ++select the tunnel device name. ++ ++.TP ++.BI mode " MODE" ++set the tunnel mode. Three modes are currently available: ++.BR ipip ", " sit " and " gre "." ++ ++.TP ++.BI remote " ADDRESS" ++set the remote endpoint of the tunnel. ++ ++.TP ++.BI local " ADDRESS" ++set the fixed local address for tunneled packets. ++It must be an address on another interface of this host. ++ ++.TP ++.BI ttl " N" ++set a fixed TTL ++.I N ++on tunneled packets. ++.I N ++is a number in the range 1--255. 0 is a special value ++meaning that packets inherit the TTL value. ++The default value is: ++.BR "inherit" . ++ ++.TP ++.BI tos " T" ++.TP ++.BI dsfield " T" ++set a fixed TOS ++.I T ++on tunneled packets. ++The default value is: ++.BR "inherit" . ++ ++.TP ++.BI dev " NAME" ++bind the tunnel to the device ++.I NAME ++so that tunneled packets will only be routed via this device and will ++not be able to escape to another device when the route to endpoint ++changes. ++ ++.TP ++.B nopmtudisc ++disable Path MTU Discovery on this tunnel. ++It is enabled by default. Note that a fixed ttl is incompatible ++with this option: tunnelling with a fixed ttl always makes pmtu ++discovery. ++ ++.TP ++.BI key " K" ++.TP ++.BI ikey " K" ++.TP ++.BI okey " K" ++.RB ( " only GRE tunnels " ) ++use keyed GRE with key ++.IR K ". " K ++is either a number or an IP address-like dotted quad. ++The ++.B key ++parameter sets the key to use in both directions. ++The ++.BR ikey " and " okey ++parameters set different keys for input and output. ++ ++.TP ++.BR csum ", " icsum ", " ocsum ++.RB ( " only GRE tunnels " ) ++generate/require checksums for tunneled packets. ++The ++.B ocsum ++flag calculates checksums for outgoing packets. ++The ++.B icsum ++flag requires that all input packets have the correct ++checksum. The ++.B csum ++flag is equivalent to the combination ++.BR "icsum ocsum" . ++ ++.TP ++.BR seq ", " iseq ", " oseq ++.RB ( " only GRE tunnels " ) ++serialize packets. ++The ++.B oseq ++flag enables sequencing of outgoing packets. ++The ++.B iseq ++flag requires that all input packets are serialized. ++The ++.B seq ++flag is equivalent to the combination ++.BR "iseq oseq" . ++.B It isn't work. Don't use it. ++ ++.SS ip tunnel show - list tunnels ++This command has no arguments. ++ ++.SH ip monitor and rtmon - state monitoring ++ ++The ++.B ip ++utility can monitor the state of devices, addresses ++and routes continuously. This option has a slightly different format. ++Namely, the ++.B monitor ++command is the first in the command line and then the object list follows: ++ ++.BR "ip monitor" " [ " all " |" ++.IR LISTofOBJECTS " ]" ++ ++.I OBJECT-LIST ++is the list of object types that we want to monitor. ++It may contain ++.BR link ", " address " and " route "." ++If no ++.B file ++argument is given, ++.B ip ++opens RTNETLINK, listens on it and dumps state changes in the format ++described in previous sections. ++ ++.P ++If a file name is given, it does not listen on RTNETLINK, ++but opens the file containing RTNETLINK messages saved in binary format ++and dumps them. Such a history file can be generated with the ++.B rtmon ++utility. This utility has a command line syntax similar to ++.BR "ip monitor" . ++Ideally, ++.B rtmon ++should be started before the first network configuration command ++is issued. F.e. if you insert: ++.sp ++.in +8 ++rtmon file /var/log/rtmon.log ++.in -8 ++.sp ++in a startup script, you will be able to view the full history ++later. ++ ++.P ++Certainly, it is possible to start ++.B rtmon ++at any time. ++It prepends the history with the state snapshot dumped at the moment ++of starting. ++ ++.SH HISTORY ++ ++.B ip ++was written by Alexey N. Kuznetsov and added in Linux 2.2. ++.SH SEE ALSO ++.BR tc (8) ++.br ++.RB "IP Command reference " ip-cref.ps ++.br ++.RB "IP tunnels " ip-cref.ps ++ ++.SH AUTHOR ++ ++Manpage maintained by Michail Litvak +diff -Naur iproute2-orig/debian/manpages/old/ip.8 iproute2/debian/manpages/old/ip.8 +--- iproute2-orig/debian/manpages/old/ip.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/ip.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,1809 @@ ++.TH IP 8 "17 January 2002" "iproute2" "Linux" ++.SH NAME ++ip \- show / manipulate routing, devices, policy routing and tunnels ++.SH SYNOPSIS ++ ++.ad l ++.in +8 ++.ti -8 ++.B ip ++.RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | " ++.BR help " }" ++.sp ++ ++.ti -8 ++.IR OBJECT " := { " ++.BR link " | " addr " | " route " | " rule " | " neigh " | " tunnel " | "\ ++maddr " | " mroute " | " monitor " }" ++.sp ++ ++.ti -8 ++.IR OPTIONS " := { " ++\fB\-V\fR[\fIersion\fR] | ++\fB\-s\fR[\fItatistics\fR] | ++\fB\-r\fR[\fIesolve\fR] | ++\fB\-f\fR[\fIamily\fR] { ++.BR inet " | " inet6 " | " ipx " | " dnet " | " link " } | " ++\fB\-o\fR[\fIneline\fR] } ++ ++.ti -8 ++.BI "ip link set " DEVICE ++.RB "{ " up " | " down " | " arp " { " on " | " off " } |" ++.br ++.BR promisc " { " on " | " off " } |" ++.br ++.BR allmulti " { " on " | " off " } |" ++.br ++.BR dynamic " { " on " | " off " } |" ++.br ++.BR multicast " { " on " | " off " } |" ++.br ++.B txqueuelen ++.IR PACKETS " |" ++.br ++.B name ++.IR NEWNAME " |" ++.br ++.B address ++.IR LLADDR " |" ++.B broadcast ++.IR LLADDR " |" ++.br ++.B mtu ++.IR MTU " }" ++ ++.ti -8 ++.B ip link show ++.RI "[ " DEVICE " ]" ++ ++.ti -8 ++.BR "ip addr" " { " add " | " del " } " ++.IB IFADDR " dev " STRING ++ ++.ti -8 ++.BR "ip addr" " { " show " | " flush " } [ " dev ++.IR STRING " ] [ " ++.B scope ++.IR SCOPE-ID " ] [ " ++.B to ++.IR PREFIX " ] [ " FLAG-LIST " ] [ " ++.B label ++.IR PATTERN " ]" ++ ++.ti -8 ++.IR IFADDR " := " PREFIX " | " ADDR ++.B peer ++.IR PREFIX " [ " ++.B broadcast ++.IR ADDR " ] [ " ++.B anycast ++.IR ADDR " ] [ " ++.B label ++.IR STRING " ] [ " ++.B scope ++.IR SCOPE-ID " ]" ++ ++.ti -8 ++.IR SCOPE-ID " := " ++.RB "[ " host " | " link " | " global " | " ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR FLAG-LIST " := [ " FLAG-LIST " ] " FLAG ++ ++.ti -8 ++.IR FLAG " := " ++.RB "[ " permanent " | " dynamic " | " secondary " | " primary " | "\ ++tentative " | " deprecated " ]" ++ ++.ti -8 ++.BR "ip route" " { " ++.BR list " | " flush " } " ++.I SELECTOR ++ ++.ti -8 ++.B ip route get ++.IR ADDRESS " [ " ++.BI from " ADDRESS " iif " STRING" ++.RB " ] [ " oif ++.IR STRING " ] [ " ++.B tos ++.IR TOS " ]" ++ ++.ti -8 ++.BR "ip route" " { " add " | " del " | " change " | " append " | "\ ++replace " | " monitor " } " ++.I ROUTE ++ ++.ti -8 ++.IR SELECTOR " := " ++.RB "[ " root ++.IR PREFIX " ] [ " ++.B match ++.IR PREFIX " ] [ " ++.B exact ++.IR PREFIX " ] [ " ++.B table ++.IR TABLE_ID " ] [ " ++.B proto ++.IR RTPROTO " ] [ " ++.B type ++.IR TYPE " ] [ " ++.B scope ++.IR SCOPE " ]" ++ ++.ti -8 ++.IR ROUTE " := " NODE_SPEC " [ " INFO_SPEC " ]" ++ ++.ti -8 ++.IR NODE_SPEC " := [ " TYPE " ] " PREFIX " [" ++.B tos ++.IR TOS " ] [ " ++.B table ++.IR TABLE_ID " ] [ " ++.B proto ++.IR RTPROTO " ] [ " ++.B scope ++.IR SCOPE " ] [ " ++.B metric ++.IR METRIC " ]" ++ ++.ti -8 ++.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " [" ++.B nexthop ++.IR NH " ] ..." ++ ++.ti -8 ++.IR NH " := [ " ++.B via ++.IR ADDRESS " ] [ " ++.B dev ++.IR STRING " ] [ " ++.B weight ++.IR NUMBER " ] " NHFLAGS ++ ++.ti -8 ++.IR OPTIONS " := " FLAGS " [ " ++.B mtu ++.IR NUMBER " ] [ " ++.B advmss ++.IR NUMBER " ] [ " ++.B rtt ++.IR NUMBER " ] [ " ++.B rttvar ++.IR NUMBER " ] [ " ++.B window ++.IR NUMBER " ] [ " ++.B cwnd ++.IR NUMBER " ] [ " ++.B ssthresh ++.IR REALM " ] [ " ++.B realms ++.IR REALM " ]" ++ ++.ti -8 ++.IR TYPE " := [ " ++.BR unicast " | " local " | " broadcast " | " multicast " | "\ ++throw " | " unreachable " | " prohibit " | " blackhole " | " nat " ]" ++ ++.ti -8 ++.IR TABLE_ID " := [ " ++.BR local "| " main " | " default " | " all " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR SCOPE " := [ " ++.BR host " | " link " | " global " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR FLAGS " := [ " ++.BR equalize " ]" ++ ++.ti -8 ++.IR NHFLAGS " := [ " ++.BR onlink " | " pervasive " ]" ++ ++.ti -8 ++.IR RTPROTO " := [ " ++.BR kernel " | " boot " | " static " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.B ip rule ++.RB " [ " list " | " add " | " del " ]" ++.I SELECTOR ACTION ++ ++.ti -8 ++.IR SELECTOR " := [ " ++.B from ++.IR PREFIX " ] [ " ++.B to ++.IR PREFIX " ] [ " ++.B tos ++.IR TOS " ] [ " ++.B fwmark ++.IR FWMARK " ] [ " ++.B dev ++.IR STRING " ] [ " ++.B pref ++.IR NUMBER " ]" ++ ++.ti -8 ++.IR ACTION " := [ " ++.B table ++.IR TABLE_ID " ] [ " ++.B nat ++.IR ADDRESS " ] [ " ++.BR prohibit " | " reject " | " unreachable " ] [ " realms ++.RI "[" SRCREALM "/]" DSTREALM " ]" ++ ++.ti -8 ++.IR TABLE_ID " := [ " ++.BR local " | " main " | " default " |" ++.IR NUMBER " ]" ++ ++.ti -8 ++.BR "ip neigh" " { " add " | " del " | " change " | " replace " } { " ++.IR ADDR " [ " ++.B lladdr ++.IR LLADDR " ] [ " ++.BR nud " { " permanent " | " noarp " | " stale " | " reachable " } ] | " proxy ++.IR ADDR " } [ " ++.B dev ++.IR DEV " ]" ++ ++.ti -8 ++.BR "ip neigh" " { " show " | " flush " } [ " to ++.IR PREFIX " ] [ " ++.B dev ++.IR DEV " ] [ " ++.B nud ++.IR STATE " ]" ++ ++.ti -8 ++.BR "ip tunnel" " { " add " | " change " | " del " | " show " }" ++.RI "[ " NAME " ]" ++.br ++.RB "[ " mode " { " ipip " | " gre " | " sit " } ]" ++.br ++.RB "[ " remote ++.IR ADDR " ] [ " ++.B local ++.IR ADDR " ]" ++.br ++.RB "[ [" i "|" o "]" seq " ] [ [" i "|" o "]" key ++.IR KEY " ] [ " ++.RB "[" i "|" o "]" csum " ] ]" ++.br ++.RB "[ " ttl ++.IR TTL " ] [ " ++.B tos ++.IR TOS " ] [ " ++.RB "[" no "]" pmtudisc " ]" ++.br ++.RB "[ " dev ++.IR PHYS_DEV " ]" ++ ++.ti -8 ++.IR ADDR " := { " IP_ADDRESS " |" ++.BR any " }" ++ ++.ti -8 ++.IR TOS " := { " NUMBER " |" ++.BR inherit " }" ++ ++.ti -8 ++.IR TTL " := { " 1 ".." 255 " | " ++.BR inherit " }" ++ ++.ti -8 ++.IR KEY " := { " DOTTED_QUAD " | " NUMBER " }" ++ ++.ti -8 ++.BR "ip maddr" " [ " add " | " del " ]" ++.IB MULTIADDR " dev " STRING ++ ++.ti -8 ++.BR "ip maddr show" " [ " dev ++.IR STRING " ]" ++ ++.ti -8 ++.BR "ip mroute show" " [" ++.IR PREFIX " ] [ " ++.B from ++.IR PREFIX " ] [ " ++.B iif ++.IR DEVICE " ]" ++ ++.ti -8 ++.BR "ip monitor" " [ " all " |" ++.IR LISTofOBJECTS " ]" ++.in -8 ++.ad b ++ ++.SH OPTIONS ++ ++.TP ++.BR "\-V" , " -Version" ++print the version of the ++.B ip ++utility and exit. ++ ++.TP ++.BR "\-s" , " \-stats", " \-statistics" ++output more information. If the option ++appears twice or more, the amount of information increases. ++As a rule, the information is statistics or some time values. ++ ++.TP ++.BR "\-f" , " \-family" ++followed by protocol family identifier: ++.BR "inet" , " inet6" ++or ++.B link ++,enforce the protocol family to use. If the option is not present, ++the protocol family is guessed from other arguments. If the rest ++of the command line does not give enough information to guess the ++family, ++.B ip ++falls back to the default one, usually ++.B inet ++or ++.BR "any" . ++.B link ++is a special family identifier meaning that no networking protocol ++is involved. ++ ++.TP ++.B \-4 ++shortcut for ++.BR "-family inet" . ++ ++.TP ++.B \-6 ++shortcut for ++.BR "\-family inet6" . ++ ++.TP ++.B \-0 ++shortcut for ++.BR "\-family link" . ++ ++.TP ++.BR "\-o" , " \-oneline" ++output each record on a single line, replacing line feeds ++with the ++.B '\' ++character. This is convenient when you want to count records ++with ++.BR wc (1) ++ or to ++.BR grep (1) ++the output. ++ ++.TP ++.BR "\-r" , " \-resolve" ++use the system's name resolver to print DNS names instead of ++host addresses. ++ ++.SH IP - COMMAND SYNTAX ++ ++.SS ++.I OBJECT ++ ++.TP ++.B link ++- network device. ++ ++.TP ++.B address ++- protocol (IP or IPv6) address on a device. ++.TP ++.B neighbour ++- ARP or NDISC cache entry. ++ ++.TP ++.B route ++- routing table entry. ++ ++.TP ++.B rule ++- rule in routing policy database. ++ ++.TP ++.B maddress ++- multicast address. ++ ++.TP ++.B mroute ++- multicast routing cache entry. ++ ++.TP ++.B tunnel ++- tunnel over IP. ++ ++.PP ++The names of all objects may be written in full or ++abbreviated form, f.e. ++.B address ++is abbreviated as ++.B addr ++or just ++.B a. ++ ++.SS ++.I COMMAND ++ ++Specifies the action to perform on the object. ++The set of possible actions depends on the object type. ++As a rule, it is possible to ++.BR "add" , " delete" ++and ++.B show ++(or ++.B list ++) objects, but some objects do not allow all of these operations ++or have some additional commands. The ++.B help ++command is available for all objects. It prints ++out a list of available commands and argument syntax conventions. ++.sp ++If no command is given, some default command is assumed. ++Usually it is ++.B list ++or, if the objects of this class cannot be listed, ++.BR "help" . ++ ++.SH ip link - network device configuration ++ ++.B link ++is a network device and the corresponding commands ++display and change the state of devices. ++ ++.SS ip link set - change device attributes ++ ++.TP ++.BI dev " NAME " (default) ++.I NAME ++specifies network device to operate on. ++ ++.TP ++.BR up " and " down ++change the state of the device to ++.B UP ++or ++.BR "DOWN" . ++ ++.TP ++.BR "arp on " or " arp off" ++change the ++.B NOARP ++flag on the device. ++ ++.TP ++.BR "multicast on " or " multicast off" ++change the ++.B MULTICAST ++flag on the device. ++ ++.TP ++.BR "dynamic on " or " dynamic off" ++change the ++.B DYNAMIC ++flag on the device. ++ ++.TP ++.BI name " NAME" ++change the name of the device. This operation is not ++recommended if the device is running or has some addresses ++already configured. ++ ++.TP ++.BI txqueuelen " NUMBER" ++.TP ++.BI txqlen " NUMBER" ++change the transmit queue length of the device. ++ ++.TP ++.BI mtu " NUMBER" ++change the ++.I MTU ++of the device. ++ ++.TP ++.BI address " LLADDRESS" ++change the station address of the interface. ++ ++.TP ++.BI broadcast " LLADDRESS" ++.TP ++.BI brd " LLADDRESS" ++.TP ++.BI peer " LLADDRESS" ++change the link layer broadcast address or the peer address when ++the interface is ++.IR "POINTOPOINT" . ++ ++.PP ++.B Warning: ++If multiple parameter changes are requested, ++.B ip ++aborts immediately after any of the changes have failed. ++This is the only case when ++.B ip ++can move the system to an unpredictable state. The solution ++is to avoid changing several parameters with one ++.B ip link set ++call. ++ ++.SS ip link show - display device attributes ++ ++.TP ++.BI dev " NAME " (default) ++.I NAME ++specifies the network device to show. ++If this argument is omitted all devices are listed. ++ ++.TP ++.B up ++only display running interfaces. ++ ++.SH ip address - protocol address management. ++ ++The ++.B address ++is a protocol (IP or IPv6) address attached ++to a network device. Each device must have at least one address ++to use the corresponding protocol. It is possible to have several ++different addresses attached to one device. These addresses are not ++discriminated, so that the term ++.B alias ++is not quite appropriate for them and we do not use it in this document. ++.sp ++The ++.B ip addr ++command displays addresses and their properties, adds new addresses ++and deletes old ones. ++ ++.SS ip address add - add new protocol address. ++ ++.TP ++.BI dev " NAME" ++the name of the device to add the address to. ++ ++.TP ++.BI local " ADDRESS " (default) ++the address of the interface. The format of the address depends ++on the protocol. It is a dotted quad for IP and a sequence of ++hexadecimal halfwords separated by colons for IPv6. The ++.I ADDRESS ++may be followed by a slash and a decimal number which encodes ++the network prefix length. ++ ++.TP ++.BI peer " ADDRESS" ++the address of the remote endpoint for pointopoint interfaces. ++Again, the ++.I ADDRESS ++may be followed by a slash and a decimal number, encoding the network ++prefix length. If a peer address is specified, the local address ++cannot have a prefix length. The network prefix is associated ++with the peer rather than with the local address. ++ ++.TP ++.BI broadcast " ADDRESS" ++the broadcast address on the interface. ++.sp ++It is possible to use the special symbols ++.B '+' ++and ++.B '-' ++instead of the broadcast address. In this case, the broadcast address ++is derived by setting/resetting the host bits of the interface prefix. ++ ++.TP ++.BI label " NAME" ++Each address may be tagged with a label string. ++In order to preserve compatibility with Linux-2.0 net aliases, ++this string must coincide with the name of the device or must be prefixed ++with the device name followed by colon. ++ ++.TP ++.BI scope " SCOPE_VALUE" ++the scope of the area where this address is valid. ++The available scopes are listed in file ++.BR "/etc/iproute2/rt_scopes" . ++Predefined scope values are: ++ ++.in +8 ++.B global ++- the address is globally valid. ++.sp ++.B site ++- (IPv6 only) the address is site local, i.e. it is ++valid inside this site. ++.sp ++.B link ++- the address is link local, i.e. it is valid only on this device. ++.sp ++.B host ++- the address is valid only inside this host. ++.in -8 ++ ++.SS ip address delete - delete protocol address ++.B Arguments: ++coincide with the arguments of ++.B ip addr add. ++The device name is a required argument. The rest are optional. ++If no arguments are given, the first address is deleted. ++ ++.SS ip address show - look at protocol addresses ++ ++.TP ++.BI dev " NAME " (default) ++name of device. ++ ++.TP ++.BI scope " SCOPE_VAL" ++only list addresses with this scope. ++ ++.TP ++.BI to " PREFIX" ++only list addresses matching this prefix. ++ ++.TP ++.BI label " PATTERN" ++only list addresses with labels matching the ++.IR "PATTERN" . ++.I PATTERN ++is a usual shell style pattern. ++ ++.TP ++.BR dynamic " and " permanent ++(IPv6 only) only list addresses installed due to stateless ++address configuration or only list permanent (not dynamic) ++addresses. ++ ++.TP ++.B tentative ++(IPv6 only) only list addresses which did not pass duplicate ++address detection. ++ ++.TP ++.B deprecated ++(IPv6 only) only list deprecated addresses. ++ ++.TP ++.BR primary " and " secondary ++only list primary (or secondary) addresses. ++ ++.SS ip address flush - flush protocol addresses ++This command flushes the protocol addresses selected by some criteria. ++ ++.PP ++This command has the same arguments as ++.B show. ++The difference is that it does not run when no arguments are given. ++ ++.PP ++.B Warning: ++This command (and other ++.B flush ++commands described below) is pretty dangerous. If you make a mistake, ++it will not forgive it, but will cruelly purge all the addresses. ++ ++.PP ++With the ++.B -statistics ++option, the command becomes verbose. It prints out the number of deleted ++addresses and the number of rounds made to flush the address list. If ++this option is given twice, ++.B ip addr flush ++also dumps all the deleted addresses in the format described in the ++previous subsection. ++ ++.SH ip neighbour - neighbour/arp tables management. ++ ++.B neighbour ++objects establish bindings between protocol addresses and ++link layer addresses for hosts sharing the same link. ++Neighbour entries are organized into tables. The IPv4 neighbour table ++is known by another name - the ARP table. ++ ++.P ++The corresponding commands display neighbour bindings ++and their properties, add new neighbour entries and delete old ones. ++ ++.SS ip neighbour add - add a new neighbour entry ++.SS ip neighbour change - change an existing entry ++.SS ip neighbour replace - add a new entry or change an existing one ++ ++These commands create new neighbour records or update existing ones. ++ ++.TP ++.BI to " ADDRESS " (default) ++the protocol address of the neighbour. It is either an IPv4 or IPv6 address. ++ ++.TP ++.BI dev " NAME" ++the interface to which this neighbour is attached. ++ ++.TP ++.BI lladdr " LLADDRESS" ++the link layer address of the neighbour. ++.I LLADDRESS ++can also be ++.BR "null" . ++ ++.TP ++.BI nud " NUD_STATE" ++the state of the neighbour entry. ++.B nud ++is an abbreviation for 'Neigh bour Unreachability Detection'. ++The state can take one of the following values: ++ ++.in +8 ++.B permanent ++- the neighbour entry is valid forever and can be only ++be removed administratively. ++.sp ++ ++.B noarp ++- the neighbour entry is valid. No attempts to validate ++this entry will be made but it can be removed when its lifetime expires. ++.sp ++ ++.B reachable ++- the neighbour entry is valid until the reachability ++timeout expires. ++.sp ++ ++.B stale ++- the neighbour entry is valid but suspicious. ++This option to ++.B ip neigh ++does not change the neighbour state if it was valid and the address ++is not changed by this command. ++.in -8 ++ ++.SS ip neighbour delete - delete a neighbour entry ++This command invalidates a neighbour entry. ++ ++.PP ++The arguments are the same as with ++.BR "ip neigh add" , ++except that ++.B lladdr ++and ++.B nud ++are ignored. ++ ++.PP ++.B Warning: ++Attempts to delete or manually change a ++.B noarp ++entry created by the kernel may result in unpredictable behaviour. ++Particularly, the kernel may try to resolve this address even ++on a ++.B NOARP ++interface or if the address is multicast or broadcast. ++ ++.SS ip neighbour show - list neighbour entries ++ ++This commands displays neighbour tables. ++ ++.TP ++.BI to " ADDRESS " (default) ++the prefix selecting the neighbours to list. ++ ++.TP ++.BI dev " NAME" ++only list the neighbours attached to this device. ++ ++.TP ++.B unused ++only list neighbours which are not currently in use. ++ ++.TP ++.BI nud " NUD_STATE" ++only list neighbour entries in this state. ++.I NUD_STATE ++takes values listed below or the special value ++.B all ++which means all states. This option may occur more than once. ++If this option is absent, ++.B ip ++lists all entries except for ++.B none ++and ++.BR "noarp" . ++ ++.SS ip neighbour flush - flush neighbour entries ++This command flushes neighbour tables, selecting ++entries to flush by some criteria. ++ ++.PP ++This command has the same arguments as ++.B show. ++The differences are that it does not run when no arguments are given, ++and that the default neighbour states to be flushed do not include ++.B permanent ++and ++.BR "noarp" . ++ ++.PP ++With the ++.B -statistics ++option, the command becomes verbose. It prints out the number of ++deleted neighbours and the number of rounds made to flush the ++neighbour table. If the option is given ++twice, ++.B ip neigh flush ++also dumps all the deleted neighbours. ++ ++.SH ip route - routing table management ++Manipulate route entries in the kernel routing tables keep ++information about paths to other networked nodes. ++.sp ++.B Route types: ++ ++.in +8 ++.B unicast ++- the route entry describes real paths to the destinations covered ++by the route prefix. ++ ++.sp ++.B unreachable ++- these destinations are unreachable. Packets are discarded and the ++ICMP message ++.I host unreachable ++is generated. ++The local senders get an ++.I EHOSTUNREACH ++error. ++ ++.sp ++.B blackhole ++- these destinations are unreachable. Packets are discarded silently. ++The local senders get an ++.I EINVAL ++error. ++ ++.sp ++.B prohibit ++- these destinations are unreachable. Packets are discarded and the ++ICMP message ++.I communication administratively prohibited ++is generated. The local senders get an ++.I EACCES ++error. ++ ++.sp ++.B local ++- the destinations are assigned to this host. The packets are looped ++back and delivered locally. ++ ++.sp ++.B broadcast ++- the destinations are broadcast addresses. The packets are sent as ++link broadcasts. ++ ++.sp ++.B throw ++- a special control route used together with policy rules. If such a ++route is selected, lookup in this table is terminated pretending that ++no route was found. Without policy routing it is equivalent to the ++absence of the route in the routing table. The packets are dropped ++and the ICMP message ++.I net unreachable ++is generated. The local senders get an ++.I ENETUNREACH ++error. ++ ++.sp ++.B nat ++- a special NAT route. Destinations covered by the prefix ++are considered to be dummy (or external) addresses which require translation ++to real (or internal) ones before forwarding. The addresses to translate to ++are selected with the attribute ++.BR "via" . ++ ++.sp ++.B anycast ++.RI "- " "not implemented" ++the destinations are ++.I anycast ++addresses assigned to this host. They are mainly equivalent ++to ++.B local ++with one difference: such addresses are invalid when used ++as the source address of any packet. ++ ++.sp ++.B multicast ++- a special type used for multicast routing. It is not present in ++normal routing tables. ++.in -8 ++ ++.P ++.B Route tables: ++Linux-2.x can pack routes into several routing ++tables identified by a number in the range from 1 to 255 or by ++name from the file ++.B /etc/iproute2/rt_tables ++. By default all normal routes are inserted into the ++.B main ++table (ID 254) and the kernel only uses this table when calculating routes. ++ ++.sp ++Actually, one other table always exists, which is invisible but ++even more important. It is the ++.B local ++table (ID 255). This table ++consists of routes for local and broadcast addresses. The kernel maintains ++this table automatically and the administrator usually need not modify it ++or even look at it. ++ ++The multiple routing tables enter the game when ++.I policy routing ++is used. ++ ++.SS ip route add - add new route ++.SS ip route change - change route ++.SS ip route replace - change or add new one ++ ++.TP ++.BI to " TYPE PREFIX " (default) ++the destination prefix of the route. If ++.I TYPE ++is omitted, ++.B ip ++assumes type ++.BR "unicast" . ++Other values of ++.I TYPE ++are listed above. ++.I PREFIX ++is an IP or IPv6 address optionally followed by a slash and the ++prefix length. If the length of the prefix is missing, ++.B ip ++assumes a full-length host route. There is also a special ++.I PREFIX ++.B default ++- which is equivalent to IP ++.B 0/0 ++or to IPv6 ++.BR "::/0" . ++ ++.TP ++.BI tos " TOS" ++.TP ++.BI dsfield " TOS" ++the Type Of Service (TOS) key. This key has no associated mask and ++the longest match is understood as: First, compare the TOS ++of the route and of the packet. If they are not equal, then the packet ++may still match a route with a zero TOS. ++.I TOS ++is either an 8 bit hexadecimal number or an identifier ++from ++.BR "/etc/iproute2/rt_dsfield" . ++ ++.TP ++.BI metric " NUMBER" ++.TP ++.BI preference " NUMBER" ++the preference value of the route. ++.I NUMBER ++is an arbitrary 32bit number. ++ ++.TP ++.BI table " TABLEID" ++the table to add this route to. ++.I TABLEID ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_tables" . ++If this parameter is omitted, ++.B ip ++assumes the ++.B main ++table, with the exception of ++.BR local " , " broadcast " and " nat ++routes, which are put into the ++.B local ++table by default. ++ ++.TP ++.BI dev " NAME" ++the output device name. ++ ++.TP ++.BI via " ADDRESS" ++the address of the nexthop router. Actually, the sense of this field ++depends on the route type. For normal ++.B unicast ++routes it is either the true next hop router or, if it is a direct ++route installed in BSD compatibility mode, it can be a local address ++of the interface. For NAT routes it is the first address of the block ++of translated IP destinations. ++ ++.TP ++.BI src " ADDRESS" ++the source address to prefer when sending to the destinations ++covered by the route prefix. ++ ++.TP ++.BI realm " REALMID" ++the realm to which this route is assigned. ++.I REALMID ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_realms" . ++ ++.TP ++.BI mtu " MTU" ++.TP ++.BI "mtu lock" " MTU" ++the MTU along the path to the destination. If the modifier ++.B lock ++is not used, the MTU may be updated by the kernel due to ++Path MTU Discovery. If the modifier ++.B lock ++is used, no path MTU discovery will be tried, all packets ++will be sent without the DF bit in IPv4 case or fragmented ++to MTU for IPv6. ++ ++.TP ++.BI window " NUMBER" ++the maximal window for TCP to advertise to these destinations, ++measured in bytes. It limits maximal data bursts that our TCP ++peers are allowed to send to us. ++ ++.TP ++.BI rtt " NUMBER" ++the initial RTT ('Round Trip Time') estimate. ++ ++.TP ++.BI rttvar " NUMBER " "(2.3.15+ only)" ++the initial RTT variance estimate. ++ ++.TP ++.BI ssthresh " NUMBER " "(2.3.15+ only)" ++an estimate for the initial slow start threshold. ++ ++.TP ++.BI cwnd " NUMBER " "(2.3.15+ only)" ++the clamp for congestion window. It is ignored if the ++.B lock ++flag is not used. ++ ++.TP ++.BI advmss " NUMBER " "(2.3.15+ only)" ++the MSS ('Maximal Segment Size') to advertise to these ++destinations when establishing TCP connections. If it is not given, ++Linux uses a default value calculated from the first hop device MTU. ++(If the path to these destination is asymmetric, this guess may be wrong.) ++ ++.TP ++.BI reordering " NUMBER " "(2.3.15+ only)" ++Maximal reordering on the path to this destination. ++If it is not given, Linux uses the value selected with ++.B sysctl ++variable ++.BR "net/ipv4/tcp_reordering" . ++ ++.TP ++.BI nexthop " NEXTHOP" ++the nexthop of a multipath route. ++.I NEXTHOP ++is a complex value with its own syntax similar to the top level ++argument lists: ++ ++.in +8 ++.BI via " ADDRESS" ++- is the nexthop router. ++.sp ++ ++.BI dev " NAME" ++- is the output device. ++.sp ++ ++.BI weight " NUMBER" ++- is a weight for this element of a multipath ++route reflecting its relative bandwidth or quality. ++.in -8 ++ ++.TP ++.BI scope " SCOPE_VAL" ++the scope of the destinations covered by the route prefix. ++.I SCOPE_VAL ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_scopes" . ++If this parameter is omitted, ++.B ip ++assumes scope ++.B global ++for all gatewayed ++.B unicast ++routes, scope ++.B link ++for direct ++.BR unicast " and " broadcast ++routes and scope ++.BR host " for " local ++routes. ++ ++.TP ++.BI protocol " RTPROTO" ++the routing protocol identifier of this route. ++.I RTPROTO ++may be a number or a string from the file ++.BR "/etc/iproute2/rt_protos" . ++If the routing protocol ID is not given, ++.B ip assumes protocol ++.B boot ++(i.e. it assumes the route was added by someone who doesn't ++understand what they are doing). Several protocol values have ++a fixed interpretation. ++Namely: ++ ++.in +8 ++.B redirect ++- the route was installed due to an ICMP redirect. ++.sp ++ ++.B kernel ++- the route was installed by the kernel during autoconfiguration. ++.sp ++ ++.B boot ++- the route was installed during the bootup sequence. ++If a routing daemon starts, it will purge all of them. ++.sp ++ ++.B static ++- the route was installed by the administrator ++to override dynamic routing. Routing daemon will respect them ++and, probably, even advertise them to its peers. ++.sp ++ ++.B ra ++- the route was installed by Router Discovery protocol. ++.in -8 ++ ++.sp ++The rest of the values are not reserved and the administrator is free ++to assign (or not to assign) protocol tags. ++ ++.TP ++.B onlink ++pretend that the nexthop is directly attached to this link, ++even if it does not match any interface prefix. ++ ++.TP ++.B equalize ++allow packet by packet randomization on multipath routes. ++Without this modifier, the route will be frozen to one selected ++nexthop, so that load splitting will only occur on per-flow base. ++.B equalize ++only works if the kernel is patched. ++ ++.SS ip route delete - delete route ++ ++.B ip route del ++has the same arguments as ++.BR "ip route add" , ++but their semantics are a bit different. ++ ++Key values ++.RB "(" to ", " tos ", " preference " and " table ")" ++select the route to delete. If optional attributes are present, ++.B ip ++verifies that they coincide with the attributes of the route to delete. ++If no route with the given key and attributes was found, ++.B ip route del ++fails. ++ ++.SS ip route show - list routes ++the command displays the contents of the routing tables or the route(s) ++selected by some criteria. ++ ++.TP ++.BI to " SELECTOR " (default) ++only select routes from the given range of destinations. ++.I SELECTOR ++consists of an optional modifier ++.RB "(" root ", " match " or " exact ")" ++and a prefix. ++.BI root " PREFIX" ++selects routes with prefixes not shorter than ++.IR PREFIX "." ++F.e. ++.BI root " 0/0" ++selects the entire routing table. ++.BI match " PREFIX" ++selects routes with prefixes not longer than ++.IR PREFIX "." ++F.e. ++.BI match " 10.0/16" ++selects ++.IR 10.0/16 "," ++.IR 10/8 " and " 0/0 , ++but it does not select ++.IR 10.1/16 " and " 10.0.0/24 . ++And ++.BI exact " PREFIX" ++(or just ++.IR PREFIX ")" ++selects routes with this exact prefix. If neither of these options ++are present, ++.B ip ++assumes ++.BI root " 0/0" ++i.e. it lists the entire table. ++ ++.TP ++.BI tos " TOS" ++.BI dsfield " TOS" ++only select routes with the given TOS. ++ ++.TP ++.BI table " TABLEID" ++show the routes from this table(s). The default setting is to show ++.BR table main "." ++.I TABLEID ++may either be the ID of a real table or one of the special values: ++.sp ++.in +8 ++.B all ++- list all of the tables. ++.sp ++.B cache ++- dump the routing cache. ++.in -8 ++ ++.TP ++.B cloned ++.TP ++.B cached ++list cloned routes i.e. routes which were dynamically forked from ++other routes because some route attribute (f.e. MTU) was updated. ++Actually, it is equivalent to ++.BR "table cache" "." ++ ++.TP ++.BI from " SELECTOR" ++the same syntax as for ++.BR to "," ++but it binds the source address range rather than destinations. ++Note that the ++.B from ++option only works with cloned routes. ++ ++.TP ++.BI protocol " RTPROTO" ++only list routes of this protocol. ++ ++.TP ++.BI scope " SCOPE_VAL" ++only list routes with this scope. ++ ++.TP ++.BI type " TYPE" ++only list routes of this type. ++ ++.TP ++.BI dev " NAME" ++only list routes going via this device. ++ ++.TP ++.BI via " PREFIX" ++only list routes going via the nexthop routers selected by ++.IR PREFIX "." ++ ++.TP ++.BI src " PREFIX" ++only list routes with preferred source addresses selected ++by ++.IR PREFIX "." ++ ++.TP ++.BI realm " REALMID" ++.TP ++.BI realms " FROMREALM/TOREALM" ++only list routes with these realms. ++ ++.SS ip route flush - flush routing tables ++this command flushes routes selected by some criteria. ++ ++.sp ++The arguments have the same syntax and semantics as the arguments of ++.BR "ip route show" , ++but routing tables are not listed but purged. The only difference is ++the default action: ++.B show ++dumps all the IP main routing table but ++.B flush ++prints the helper page. ++ ++.sp ++With the ++.B -statistics ++option, the command becomes verbose. It prints out the number of ++deleted routes and the number of rounds made to flush the routing ++table. If the option is given ++twice, ++.B ip route flush ++also dumps all the deleted routes in the format described in the ++previous subsection. ++ ++.SS ip route get - get a single route ++this command gets a single route to a destination and prints its ++contents exactly as the kernel sees it. ++ ++.TP ++.BI to " ADDRESS " (default) ++the destination address. ++ ++.TP ++.BI from " ADDRESS" ++the source address. ++ ++.TP ++.BI tos " TOS" ++.TP ++.BI dsfield " TOS" ++the Type Of Service. ++ ++.TP ++.BI iif " NAME" ++the device from which this packet is expected to arrive. ++ ++.TP ++.BI oif " NAME" ++force the output device on which this packet will be routed. ++ ++.TP ++.B connected ++if no source address ++.RB "(option " from ")" ++was given, relookup the route with the source set to the preferred ++address received from the first lookup. ++If policy routing is used, it may be a different route. ++ ++.P ++Note that this operation is not equivalent to ++.BR "ip route show" . ++.B show ++shows existing routes. ++.B get ++resolves them and creates new clones if necessary. Essentially, ++.B get ++is equivalent to sending a packet along this path. ++If the ++.B iif ++argument is not given, the kernel creates a route ++to output packets towards the requested destination. ++This is equivalent to pinging the destination ++with a subsequent ++.BR "ip route ls cache" , ++however, no packets are actually sent. With the ++.B iif ++argument, the kernel pretends that a packet arrived from this interface ++and searches for a path to forward the packet. ++ ++.SH ip rule - routing policy database management ++ ++.BR "Rule" s ++in the routing policy database control the route selection algorithm. ++ ++.P ++Classic routing algorithms used in the Internet make routing decisions ++based only on the destination address of packets (and in theory, ++but not in practice, on the TOS field). ++ ++.P ++In some circumstances we want to route packets differently depending not only ++on destination addresses, but also on other packet fields: source address, ++IP protocol, transport protocol ports or even packet payload. ++This task is called 'policy routing'. ++ ++.P ++To solve this task, the conventional destination based routing table, ordered ++according to the longest match rule, is replaced with a 'routing policy ++database' (or RPDB), which selects routes by executing some set of rules. ++ ++.P ++Each policy routing rule consists of a ++.B selector ++and an ++.B action predicate. ++The RPDB is scanned in the order of increasing priority. The selector ++of each rule is applied to {source address, destination address, incoming ++interface, tos, fwmark} and, if the selector matches the packet, ++the action is performed. The action predicate may return with success. ++In this case, it will either give a route or failure indication ++and the RPDB lookup is terminated. Otherwise, the RPDB program ++continues on the next rule. ++ ++.P ++Semantically, natural action is to select the nexthop and the output device. ++ ++.P ++At startup time the kernel configures the default RPDB consisting of three ++rules: ++ ++.TP ++1. ++Priority: 0, Selector: match anything, Action: lookup routing ++table ++.B local ++(ID 255). ++The ++.B local ++table is a special routing table containing ++high priority control routes for local and broadcast addresses. ++.sp ++Rule 0 is special. It cannot be deleted or overridden. ++ ++.TP ++2. ++Priority: 32766, Selector: match anything, Action: lookup routing ++table ++.B main ++(ID 254). ++The ++.B main ++table is the normal routing table containing all non-policy ++routes. This rule may be deleted and/or overridden with other ++ones by the administrator. ++ ++.TP ++3. ++Priority: 32767, Selector: match anything, Action: lookup routing ++table ++.B default ++(ID 253). ++The ++.B default ++table is empty. It is reserved for some post-processing if no previous ++default rules selected the packet. ++This rule may also be deleted. ++ ++.P ++Each RPDB entry has additional ++attributes. F.e. each rule has a pointer to some routing ++table. NAT and masquerading rules have an attribute to select new IP ++address to translate/masquerade. Besides that, rules have some ++optional attributes, which routes have, namely ++.BR "realms" . ++These values do not override those contained in the routing tables. They ++are only used if the route did not select any attributes. ++ ++.sp ++The RPDB may contain rules of the following types: ++ ++.in +8 ++.B unicast ++- the rule prescribes to return the route found ++in the routing table referenced by the rule. ++ ++.B blackhole ++- the rule prescribes to silently drop the packet. ++ ++.B unreachable ++- the rule prescribes to generate a 'Network is unreachable' error. ++ ++.B prohibit ++- the rule prescribes to generate 'Communication is administratively ++prohibited' error. ++ ++.B nat ++- the rule prescribes to translate the source address ++of the IP packet into some other value. ++.in -8 ++ ++.SS ip rule add - insert a new rule ++.SS ip rule delete - delete a rule ++ ++.TP ++.BI type " TYPE " (default) ++the type of this rule. The list of valid types was given in the previous ++subsection. ++ ++.TP ++.BI from " PREFIX" ++select the source prefix to match. ++ ++.TP ++.BI to " PREFIX" ++select the destination prefix to match. ++ ++.TP ++.BI iif " NAME" ++select the incoming device to match. If the interface is loopback, ++the rule only matches packets originating from this host. This means ++that you may create separate routing tables for forwarded and local ++packets and, hence, completely segregate them. ++ ++.TP ++.BI tos " TOS" ++.TP ++.BI dsfield " TOS" ++select the TOS value to match. ++ ++.TP ++.BI fwmark " MARK" ++select the ++.B fwmark ++value to match. ++ ++.TP ++.BI priority " PREFERENCE" ++the priority of this rule. Each rule should have an explicitly ++set ++.I unique ++priority value. ++ ++.TP ++.BI table " TABLEID" ++the routing table identifier to lookup if the rule selector matches. ++ ++.TP ++.BI realms " FROM/TO" ++Realms to select if the rule matched and the routing table lookup ++succeeded. Realm ++.I TO ++is only used if the route did not select any realm. ++ ++.TP ++.BI nat " ADDRESS" ++The base of the IP address block to translate (for source addresses). ++The ++.I ADDRESS ++may be either the start of the block of NAT addresses (selected by NAT ++routes) or a local host address (or even zero). ++In the last case the router does not translate the packets, but ++masquerades them to this address. ++ ++.B Warning: ++Changes to the RPDB made with these commands do not become active ++immediately. It is assumed that after a script finishes a batch of ++updates, it flushes the routing cache with ++.BR "ip route flush cache" . ++ ++.SS ip rule show - list rules ++This command has no arguments. ++ ++.SH ip maddress - multicast addresses management ++ ++.B maddress ++objects are multicast addresses. ++ ++.SS ip maddress show - list multicast addresses ++ ++.TP ++.BI dev " NAME " (default) ++the device name. ++ ++.SS ip maddress add - add a multicast address ++.SS ip maddress delete - delete a multicast address ++these commands attach/detach a static link layer multicast address ++to listen on the interface. ++Note that it is impossible to join protocol multicast groups ++statically. This command only manages link layer addresses. ++ ++.TP ++.BI address " LLADDRESS " (default) ++the link layer multicast address. ++ ++.TP ++.BI dev " NAME" ++the device to join/leave this multicast address. ++ ++.SH ip mroute - multicast routing cache management ++.B mroute ++objects are multicast routing cache entries created by a user level ++mrouting daemon (f.e. ++.B pimd ++or ++.B mrouted ++). ++ ++Due to the limitations of the current interface to the multicast routing ++engine, it is impossible to change ++.B mroute ++objects administratively, so we may only display them. This limitation ++will be removed in the future. ++ ++.SS ip mroute show - list mroute cache entries ++ ++.TP ++.BI to " PREFIX " (default) ++the prefix selecting the destination multicast addresses to list. ++ ++.TP ++.BI iif " NAME" ++the interface on which multicast packets are received. ++ ++.TP ++.BI from " PREFIX" ++the prefix selecting the IP source addresses of the multicast route. ++ ++.SH ip tunnel - tunnel configuration ++.B tunnel ++objects are tunnels, encapsulating packets in IPv4 packets and then ++sending them over the IP infrastructure. ++ ++.SS ip tunnel add - add a new tunnel ++.SS ip tunnel change - change an existing tunnel ++.SS ip tunnel delete - destroy a tunnel ++ ++.TP ++.BI name " NAME " (default) ++select the tunnel device name. ++ ++.TP ++.BI mode " MODE" ++set the tunnel mode. Three modes are currently available: ++.BR ipip ", " sit " and " gre "." ++ ++.TP ++.BI remote " ADDRESS" ++set the remote endpoint of the tunnel. ++ ++.TP ++.BI local " ADDRESS" ++set the fixed local address for tunneled packets. ++It must be an address on another interface of this host. ++ ++.TP ++.BI ttl " N" ++set a fixed TTL ++.I N ++on tunneled packets. ++.I N ++is a number in the range 1--255. 0 is a special value ++meaning that packets inherit the TTL value. ++The default value is: ++.BR "inherit" . ++ ++.TP ++.BI tos " T" ++.TP ++.BI dsfield " T" ++set a fixed TOS ++.I T ++on tunneled packets. ++The default value is: ++.BR "inherit" . ++ ++.TP ++.BI dev " NAME" ++bind the tunnel to the device ++.I NAME ++so that tunneled packets will only be routed via this device and will ++not be able to escape to another device when the route to endpoint ++changes. ++ ++.TP ++.B nopmtudisc ++disable Path MTU Discovery on this tunnel. ++It is enabled by default. Note that a fixed ttl is incompatible ++with this option: tunnelling with a fixed ttl always makes pmtu ++discovery. ++ ++.TP ++.BI key " K" ++.TP ++.BI ikey " K" ++.TP ++.BI okey " K" ++.RB ( " only GRE tunnels " ) ++use keyed GRE with key ++.IR K ". " K ++is either a number or an IP address-like dotted quad. ++The ++.B key ++parameter sets the key to use in both directions. ++The ++.BR ikey " and " okey ++parameters set different keys for input and output. ++ ++.TP ++.BR csum ", " icsum ", " ocsum ++.RB ( " only GRE tunnels " ) ++generate/require checksums for tunneled packets. ++The ++.B ocsum ++flag calculates checksums for outgoing packets. ++The ++.B icsum ++flag requires that all input packets have the correct ++checksum. The ++.B csum ++flag is equivalent to the combination ++.BR "icsum ocsum" . ++ ++.TP ++.BR seq ", " iseq ", " oseq ++.RB ( " only GRE tunnels " ) ++serialize packets. ++The ++.B oseq ++flag enables sequencing of outgoing packets. ++The ++.B iseq ++flag requires that all input packets are serialized. ++The ++.B seq ++flag is equivalent to the combination ++.BR "iseq oseq" . ++.B It isn't work. Don't use it. ++ ++.SS ip tunnel show - list tunnels ++This command has no arguments. ++ ++.SH ip monitor and rtmon - state monitoring ++ ++The ++.B ip ++utility can monitor the state of devices, addresses ++and routes continuously. This option has a slightly different format. ++Namely, the ++.B monitor ++command is the first in the command line and then the object list follows: ++ ++.BR "ip monitor" " [ " all " |" ++.IR LISTofOBJECTS " ]" ++ ++.I OBJECT-LIST ++is the list of object types that we want to monitor. ++It may contain ++.BR link ", " address " and " route "." ++If no ++.B file ++argument is given, ++.B ip ++opens RTNETLINK, listens on it and dumps state changes in the format ++described in previous sections. ++ ++.P ++If a file name is given, it does not listen on RTNETLINK, ++but opens the file containing RTNETLINK messages saved in binary format ++and dumps them. Such a history file can be generated with the ++.B rtmon ++utility. This utility has a command line syntax similar to ++.BR "ip monitor" . ++Ideally, ++.B rtmon ++should be started before the first network configuration command ++is issued. F.e. if you insert: ++.sp ++.in +8 ++rtmon file /var/log/rtmon.log ++.in -8 ++.sp ++in a startup script, you will be able to view the full history ++later. ++ ++.P ++Certainly, it is possible to start ++.B rtmon ++at any time. ++It prepends the history with the state snapshot dumped at the moment ++of starting. ++ ++.SH HISTORY ++ ++.B ip ++was written by Alexey N. Kuznetsov and added in Linux 2.2. ++.SH SEE ALSO ++.BR tc (8) ++.br ++.RB "IP Command reference " ip-cref.ps ++.br ++.RB "IP tunnels " ip-cref.ps ++ ++.SH AUTHOR ++ ++Manpage maintained by Michail Litvak +diff -Naur iproute2-orig/debian/manpages/old/tc-cbq-details.8 iproute2/debian/manpages/old/tc-cbq-details.8 +--- iproute2-orig/debian/manpages/old/tc-cbq-details.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-cbq-details.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,425 @@ ++.TH CBQ 8 "8 December 2001" "iproute2" "Linux" ++.SH NAME ++CBQ \- Class Based Queueing ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] cbq avpkt ++bytes ++.B bandwidth ++rate ++.B [ cell ++bytes ++.B ] [ ewma ++log ++.B ] [ mpu ++bytes ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] cbq allot ++bytes ++.B [ bandwidth ++rate ++.B ] [ rate ++rate ++.B ] prio ++priority ++.B [ weight ++weight ++.B ] [ minburst ++packets ++.B ] [ maxburst ++packets ++.B ] [ ewma ++log ++.B ] [ cell ++bytes ++.B ] avpkt ++bytes ++.B [ mpu ++bytes ++.B ] [ bounded isolated ] [ split ++handle ++.B & defmap ++defmap ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++Class Based Queueing is a classful qdisc that implements a rich ++linksharing hierarchy of classes. It contains shaping elements as ++well as prioritizing capabilities. Shaping is performed using link ++idle time calculations based on the timing of dequeue events and ++underlying link bandwidth. ++ ++.SH SHAPING ALGORITHM ++Shaping is done using link idle time calculations, and actions taken if ++these calculations deviate from set limits. ++ ++When shaping a 10mbit/s connection to 1mbit/s, the link will ++be idle 90% of the time. If it isn't, it needs to be throttled so that it ++IS idle 90% of the time. ++ ++From the kernel's perspective, this is hard to measure, so CBQ instead ++derives the idle time from the number of microseconds (in fact, jiffies) ++that elapse between requests from the device driver for more data. Combined ++with the knowledge of packet sizes, this is used to approximate how full or ++empty the link is. ++ ++This is rather circumspect and doesn't always arrive at proper ++results. For example, what is the actual link speed of an interface ++that is not really able to transmit the full 100mbit/s of data, ++perhaps because of a badly implemented driver? A PCMCIA network card ++will also never achieve 100mbit/s because of the way the bus is ++designed - again, how do we calculate the idle time? ++ ++The physical link bandwidth may be ill defined in case of not-quite-real ++network devices like PPP over Ethernet or PPTP over TCP/IP. The effective ++bandwidth in that case is probably determined by the efficiency of pipes ++to userspace - which not defined. ++ ++During operations, the effective idletime is measured using an ++exponential weighted moving average (EWMA), which considers recent ++packets to be exponentially more important than past ones. The Unix ++loadaverage is calculated in the same way. ++ ++The calculated idle time is subtracted from the EWMA measured one, ++the resulting number is called 'avgidle'. A perfectly loaded link has ++an avgidle of zero: packets arrive exactly at the calculated ++interval. ++ ++An overloaded link has a negative avgidle and if it gets too negative, ++CBQ throttles and is then 'overlimit'. ++ ++Conversely, an idle link might amass a huge avgidle, which would then ++allow infinite bandwidths after a few hours of silence. To prevent ++this, avgidle is capped at ++.B maxidle. ++ ++If overlimit, in theory, the CBQ could throttle itself for exactly the ++amount of time that was calculated to pass between packets, and then ++pass one packet, and throttle again. Due to timer resolution constraints, ++this may not be feasible, see the ++.B minburst ++parameter below. ++ ++.SH CLASSIFICATION ++Within the one CBQ instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, CBQ starts at the root and uses various methods to ++determine which class should receive the data. If a verdict is reached, this ++process is repeated for the recipient class which might have further ++means of classifying traffic to its children, if any. ++ ++CBQ has the following methods available to classify a packet to any child ++classes. ++.TP ++(i) ++.B skb->priority class encoding. ++Can be set from userspace by an application with the ++.B SO_PRIORITY ++setsockopt. ++The ++.B skb->priority class encoding ++only applies if the skb->priority holds a major:minor handle of an existing ++class within this qdisc. ++.TP ++(ii) ++tc filters attached to the class. ++.TP ++(iii) ++The defmap of a class, as set with the ++.B split & defmap ++parameters. The defmap may contain instructions for each possible Linux packet ++priority. ++ ++.P ++Each class also has a ++.B level. ++Leaf nodes, attached to the bottom of the class hierarchy, have a level of 0. ++.SH CLASSIFICATION ALGORITHM ++ ++Classification is a loop, which terminates when a leaf class is found. At any ++point the loop may jump to the fallback algorithm. ++ ++The loop consists of the following steps: ++.TP ++(i) ++If the packet is generated locally and has a valid classid encoded within its ++.B skb->priority, ++choose it and terminate. ++ ++.TP ++(ii) ++Consult the tc filters, if any, attached to this child. If these return ++a class which is not a leaf class, restart loop from the class returned. ++If it is a leaf, choose it and terminate. ++.TP ++(iii) ++If the tc filters did not return a class, but did return a classid, ++try to find a class with that id within this qdisc. ++Check if the found class is of a lower ++.B level ++than the current class. If so, and the returned class is not a leaf node, ++restart the loop at the found class. If it is a leaf node, terminate. ++If we found an upward reference to a higher level, enter the fallback ++algorithm. ++.TP ++(iv) ++If the tc filters did not return a class, nor a valid reference to one, ++consider the minor number of the reference to be the priority. Retrieve ++a class from the defmap of this class for the priority. If this did not ++contain a class, consult the defmap of this class for the ++.B BEST_EFFORT ++class. If this is an upward reference, or no ++.B BEST_EFFORT ++class was defined, ++enter the fallback algorithm. If a valid class was found, and it is not a ++leaf node, restart the loop at this class. If it is a leaf, choose it and ++terminate. If ++neither the priority distilled from the classid, nor the ++.B BEST_EFFORT ++priority yielded a class, enter the fallback algorithm. ++.P ++The fallback algorithm resides outside of the loop and is as follows. ++.TP ++(i) ++Consult the defmap of the class at which the jump to fallback occured. If ++the defmap contains a class for the ++.B ++priority ++of the class (which is related to the TOS field), choose this class and ++terminate. ++.TP ++(ii) ++Consult the map for a class for the ++.B BEST_EFFORT ++priority. If found, choose it, and terminate. ++.TP ++(iii) ++Choose the class at which break out to the fallback algorithm occured. Terminate. ++.P ++The packet is enqueued to the class which was chosen when either algorithm ++terminated. It is therefore possible for a packet to be enqueued *not* at a ++leaf node, but in the middle of the hierarchy. ++ ++.SH LINK SHARING ALGORITHM ++When dequeuing for sending to the network device, CBQ decides which of its ++classes will be allowed to send. It does so with a Weighted Round Robin process ++in which each class with packets gets a chance to send in turn. The WRR process ++starts by asking the highest priority classes (lowest numerically - ++highest semantically) for packets, and will continue to do so until they ++have no more data to offer, in which case the process repeats for lower ++priorities. ++ ++.B CERTAINTY ENDS HERE, ANK PLEASE HELP ++ ++Each class is not allowed to send at length though - they can only dequeue a ++configurable amount of data during each round. ++ ++If a class is about to go overlimit, and it is not ++.B bounded ++it will try to borrow avgidle from siblings that are not ++.B isolated. ++This process is repeated from the bottom upwards. If a class is unable ++to borrow enough avgidle to send a packet, it is throttled and not asked ++for a packet for enough time for the avgidle to increase above zero. ++ ++.B I REALLY NEED HELP FIGURING THIS OUT. REST OF DOCUMENT IS PRETTY CERTAIN ++.B AGAIN. ++ ++.SH QDISC ++The root qdisc of a CBQ class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the CBQ instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the CBQ can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional. ++.TP ++avpkt bytes ++For calculations, the average packet size must be known. It is silently capped ++at a minimum of 2/3 of the interface MTU. Mandatory. ++.TP ++bandwidth rate ++To determine the idle time, CBQ must know the bandwidth of your underlying ++physical interface, or parent qdisc. This is a vital parameter, more about it ++later. Mandatory. ++.TP ++cell ++The cell size determines he granularity of packet transmission time calculations. Has a sensible default. ++.TP ++mpu ++A zero sized packet may still take time to transmit. This value is the lower ++cap for packet transmission time calculations - packets smaller than this value ++are still deemed to have this size. Defaults to zero. ++.TP ++ewma log ++When CBQ needs to measure the average idle time, it does so using an ++Exponentially Weighted Moving Average which smoothes out measurements into ++a moving average. The EWMA LOG determines how much smoothing occurs. Defaults ++to 5. Lower values imply greater sensitivity. Must be between 0 and 31. ++.P ++A CBQ qdisc does not shape out of its own accord. It only needs to know certain ++parameters about the underlying link. Actual shaping is done in classes. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++weight weight ++When dequeuing to the interface, classes are tried for traffic in a ++round-robin fashion. Classes with a higher configured qdisc will generally ++have more traffic to offer during each round, so it makes sense to allow ++it to dequeue more traffic. All weights under a class are normalized, so ++only the ratios matter. Defaults to the configured rate, unless the priority ++of this class is maximal, in which case it is set to 1. ++.TP ++allot bytes ++Allot specifies how many bytes a qdisc can dequeue ++during each round of the process. This parameter is weighted using the ++renormalized class weight described above. ++ ++.TP ++priority priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++rate rate ++Maximum rate this class and all its children combined can send at. Mandatory. ++ ++.TP ++bandwidth rate ++This is different from the bandwidth specified when creating a CBQ disc. Only ++used to determine maxidle and offtime, which are only calculated when ++specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. ++ ++.TP ++maxburst ++This number of packets is used to calculate maxidle so that when ++avgidle is at maxidle, this number of average packets can be burst ++before avgidle drops to 0. Set it higher to be more tolerant of ++bursts. You can't set maxidle directly, only via this parameter. ++ ++.TP ++minburst ++As mentioned before, CBQ needs to throttle in case of ++overlimit. The ideal solution is to do so for exactly the calculated ++idle time, and pass 1 packet. However, Unix kernels generally have a ++hard time scheduling events shorter than 10ms, so it is better to ++throttle for a longer period, and then pass minburst packets in one ++go, and then sleep minburst times longer. ++ ++The time to wait is called the offtime. Higher values of minburst lead ++to more accurate shaping in the long term, but to bigger bursts at ++millisecond timescales. ++ ++.TP ++minidle ++If avgidle is below 0, we are overlimits and need to wait until ++avgidle will be big enough to send one packet. To prevent a sudden ++burst from shutting down the link for a prolonged period of time, ++avgidle is reset to minidle if it gets too low. ++ ++Minidle is specified in negative microseconds, so 10 means that ++avgidle is capped at -10us. ++ ++.TP ++bounded ++Signifies that this class will not borrow bandwidth from its siblings. ++.TP ++isolated ++Means that this class will not borrow bandwidth to its siblings ++ ++.TP ++split major:minor & defmap bitmap[/bitmap] ++If consulting filters attached to a class did not give a verdict, ++CBQ can also classify based on the packet's priority. There are 16 ++priorities available, numbered from 0 to 15. ++ ++The defmap specifies which priorities this class wants to receive, ++specified as a bitmap. The Least Significant Bit corresponds to priority ++zero. The ++.B split ++parameter tells CBQ at which class the decision must be made, which should ++be a (grand)parent of the class you are adding. ++ ++As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' ++configures class 10:0 to send packets with priorities 6 and 7 to 10:1. ++ ++The complimentary configuration would then ++be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' ++Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. ++.TP ++estimator interval timeconstant ++CBQ can measure how much bandwidth each class is using, which tc filters ++can use to classify packets with. In order to determine the bandwidth ++it uses a very simple estimator that measures once every ++.B interval ++microseconds how much traffic has passed. This again is a EWMA, for which ++the time constant can be specified, also in microseconds. The ++.B time constant ++corresponds to the sluggishness of the measurement or, conversely, to the ++sensitivity of the average to short bursts. Higher values mean less ++sensitivity. ++ ++ ++ ++.SH SOURCES ++.TP ++o ++Sally Floyd and Van Jacobson, "Link-sharing and Resource ++Management Models for Packet Networks", ++IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on CBQ and Guarantee Service", 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on Class-Based Queueing: Setting ++Parameters", 1996 ++ ++.TP ++o ++Sally Floyd and Michael Speer, "Experimental Results ++for Class-Based Queueing", 1998, not published. ++ ++ ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-cbq.8 iproute2/debian/manpages/old/tc-cbq.8 +--- iproute2-orig/debian/manpages/old/tc-cbq.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-cbq.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,353 @@ ++.TH CBQ 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++CBQ \- Class Based Queueing ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] cbq [ allot ++bytes ++.B ] avpkt ++bytes ++.B bandwidth ++rate ++.B [ cell ++bytes ++.B ] [ ewma ++log ++.B ] [ mpu ++bytes ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] cbq allot ++bytes ++.B [ bandwidth ++rate ++.B ] [ rate ++rate ++.B ] prio ++priority ++.B [ weight ++weight ++.B ] [ minburst ++packets ++.B ] [ maxburst ++packets ++.B ] [ ewma ++log ++.B ] [ cell ++bytes ++.B ] avpkt ++bytes ++.B [ mpu ++bytes ++.B ] [ bounded isolated ] [ split ++handle ++.B & defmap ++defmap ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++Class Based Queueing is a classful qdisc that implements a rich ++linksharing hierarchy of classes. It contains shaping elements as ++well as prioritizing capabilities. Shaping is performed using link ++idle time calculations based on the timing of dequeue events and ++underlying link bandwidth. ++ ++.SH SHAPING ALGORITHM ++When shaping a 10mbit/s connection to 1mbit/s, the link will ++be idle 90% of the time. If it isn't, it needs to be throttled so that it ++IS idle 90% of the time. ++ ++During operations, the effective idletime is measured using an ++exponential weighted moving average (EWMA), which considers recent ++packets to be exponentially more important than past ones. The Unix ++loadaverage is calculated in the same way. ++ ++The calculated idle time is subtracted from the EWMA measured one, ++the resulting number is called 'avgidle'. A perfectly loaded link has ++an avgidle of zero: packets arrive exactly at the calculated ++interval. ++ ++An overloaded link has a negative avgidle and if it gets too negative, ++CBQ throttles and is then 'overlimit'. ++ ++Conversely, an idle link might amass a huge avgidle, which would then ++allow infinite bandwidths after a few hours of silence. To prevent ++this, avgidle is capped at ++.B maxidle. ++ ++If overlimit, in theory, the CBQ could throttle itself for exactly the ++amount of time that was calculated to pass between packets, and then ++pass one packet, and throttle again. Due to timer resolution constraints, ++this may not be feasible, see the ++.B minburst ++parameter below. ++ ++.SH CLASSIFICATION ++Within the one CBQ instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, CBQ starts at the root and uses various methods to ++determine which class should receive the data. ++ ++In the absence of uncommon configuration options, the process is rather easy. ++At each node we look for an instruction, and then go to the class the ++instruction refers us to. If the class found is a barren leaf-node (without ++children), we enqueue the packet there. If it is not yet a leaf node, we do ++the whole thing over again starting from that node. ++ ++The following actions are performed, in order at each node we visit, until one ++sends us to another node, or terminates the process. ++.TP ++(i) ++Consult filters attached to the class. If sent to a leafnode, we are done. ++Otherwise, restart. ++.TP ++(ii) ++Consult the defmap for the priority assigned to this packet, which depends ++on the TOS bits. Check if the referral is leafless, otherwise restart. ++.TP ++(iii) ++Ask the defmap for instructions for the 'best effort' priority. Check the ++answer for leafness, otherwise restart. ++.TP ++(iv) ++If none of the above returned with an instruction, enqueue at this node. ++.P ++This algorithm makes sure that a packet always ends up somewhere, even while ++you are busy building your configuration. ++ ++For more details, see ++.BR tc-cbq-details(8). ++ ++.SH LINK SHARING ALGORITHM ++When dequeuing for sending to the network device, CBQ decides which of its ++classes will be allowed to send. It does so with a Weighted Round Robin process ++in which each class with packets gets a chance to send in turn. The WRR process ++starts by asking the highest priority classes (lowest numerically - ++highest semantically) for packets, and will continue to do so until they ++have no more data to offer, in which case the process repeats for lower ++priorities. ++ ++Classes by default borrow bandwidth from their siblings. A class can be ++prevented from doing so by declaring it 'bounded'. A class can also indicate ++its unwillingness to lend out bandwidth by being 'isolated'. ++ ++.SH QDISC ++The root of a CBQ qdisc class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the CBQ instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the CBQ can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional, but very useful if classes ++will be generated within this qdisc. ++.TP ++allot bytes ++This allotment is the 'chunkiness' of link sharing and is used for determining packet ++transmission time tables. The qdisc allot differs slightly from the class allot discussed ++below. Optional. Defaults to a reasonable value, related to avpkt. ++.TP ++avpkt bytes ++The average size of a packet is needed for calculating maxidle, and is also used ++for making sure 'allot' has a safe value. Mandatory. ++.TP ++bandwidth rate ++To determine the idle time, CBQ must know the bandwidth of your underlying ++physical interface, or parent qdisc. This is a vital parameter, more about it ++later. Mandatory. ++.TP ++cell ++The cell size determines he granularity of packet transmission time calculations. Has a sensible default. ++.TP ++mpu ++A zero sized packet may still take time to transmit. This value is the lower ++cap for packet transmission time calculations - packets smaller than this value ++are still deemed to have this size. Defaults to zero. ++.TP ++ewma log ++When CBQ needs to measure the average idle time, it does so using an ++Exponentially Weighted Moving Average which smoothes out measurements into ++a moving average. The EWMA LOG determines how much smoothing occurs. Lower ++values imply greater sensitivity. Must be between 0 and 31. Defaults ++to 5. ++.P ++A CBQ qdisc does not shape out of its own accord. It only needs to know certain ++parameters about the underlying link. Actual shaping is done in classes. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++weight weight ++When dequeuing to the interface, classes are tried for traffic in a ++round-robin fashion. Classes with a higher configured qdisc will generally ++have more traffic to offer during each round, so it makes sense to allow ++it to dequeue more traffic. All weights under a class are normalized, so ++only the ratios matter. Defaults to the configured rate, unless the priority ++of this class is maximal, in which case it is set to 1. ++.TP ++allot bytes ++Allot specifies how many bytes a qdisc can dequeue ++during each round of the process. This parameter is weighted using the ++renormalized class weight described above. Silently capped at a minimum of ++3/2 avpkt. Mandatory. ++ ++.TP ++prio priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++avpkt ++See the QDISC section. ++ ++.TP ++rate rate ++Maximum rate this class and all its children combined can send at. Mandatory. ++ ++.TP ++bandwidth rate ++This is different from the bandwidth specified when creating a CBQ disc! Only ++used to determine maxidle and offtime, which are only calculated when ++specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. ++ ++.TP ++maxburst ++This number of packets is used to calculate maxidle so that when ++avgidle is at maxidle, this number of average packets can be burst ++before avgidle drops to 0. Set it higher to be more tolerant of ++bursts. You can't set maxidle directly, only via this parameter. ++ ++.TP ++minburst ++As mentioned before, CBQ needs to throttle in case of ++overlimit. The ideal solution is to do so for exactly the calculated ++idle time, and pass 1 packet. However, Unix kernels generally have a ++hard time scheduling events shorter than 10ms, so it is better to ++throttle for a longer period, and then pass minburst packets in one ++go, and then sleep minburst times longer. ++ ++The time to wait is called the offtime. Higher values of minburst lead ++to more accurate shaping in the long term, but to bigger bursts at ++millisecond timescales. Optional. ++ ++.TP ++minidle ++If avgidle is below 0, we are overlimits and need to wait until ++avgidle will be big enough to send one packet. To prevent a sudden ++burst from shutting down the link for a prolonged period of time, ++avgidle is reset to minidle if it gets too low. ++ ++Minidle is specified in negative microseconds, so 10 means that ++avgidle is capped at -10us. Optional. ++ ++.TP ++bounded ++Signifies that this class will not borrow bandwidth from its siblings. ++.TP ++isolated ++Means that this class will not borrow bandwidth to its siblings ++ ++.TP ++split major:minor & defmap bitmap[/bitmap] ++If consulting filters attached to a class did not give a verdict, ++CBQ can also classify based on the packet's priority. There are 16 ++priorities available, numbered from 0 to 15. ++ ++The defmap specifies which priorities this class wants to receive, ++specified as a bitmap. The Least Significant Bit corresponds to priority ++zero. The ++.B split ++parameter tells CBQ at which class the decision must be made, which should ++be a (grand)parent of the class you are adding. ++ ++As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' ++configures class 10:0 to send packets with priorities 6 and 7 to 10:1. ++ ++The complimentary configuration would then ++be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' ++Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. ++.TP ++estimator interval timeconstant ++CBQ can measure how much bandwidth each class is using, which tc filters ++can use to classify packets with. In order to determine the bandwidth ++it uses a very simple estimator that measures once every ++.B interval ++microseconds how much traffic has passed. This again is a EWMA, for which ++the time constant can be specified, also in microseconds. The ++.B time constant ++corresponds to the sluggishness of the measurement or, conversely, to the ++sensitivity of the average to short bursts. Higher values mean less ++sensitivity. ++ ++.SH BUGS ++The actual bandwidth of the underlying link may not be known, for example ++in the case of PPoE or PPTP connections which in fact may send over a ++pipe, instead of over a physical device. CBQ is quite resilient to major ++errors in the configured bandwidth, probably a the cost of coarser shaping. ++ ++Default kernels rely on coarse timing information for making decisions. These ++may make shaping precise in the long term, but inaccurate on second long scales. ++ ++See ++.BR tc-cbq-details(8) ++for hints on how to improve this. ++ ++.SH SOURCES ++.TP ++o ++Sally Floyd and Van Jacobson, "Link-sharing and Resource ++Management Models for Packet Networks", ++IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on Class-Based Queueing: Setting ++Parameters", 1996 ++ ++.TP ++o ++Sally Floyd and Michael Speer, "Experimental Results ++for Class-Based Queueing", 1998, not published. ++ ++ ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-htb.8 iproute2/debian/manpages/old/tc-htb.8 +--- iproute2-orig/debian/manpages/old/tc-htb.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-htb.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,150 @@ ++.TH HTB 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++HTB \- Hierarchy Token Bucket ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] htb [ default ++minor-id ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] htb rate ++rate ++.B [ ceil ++rate ++.B ] burst ++bytes ++.B [ cburst ++bytes ++.B ] [ prio ++priority ++.B ] ++ ++.SH DESCRIPTION ++HTB is meant as a more understandable and intuitive replacement for ++the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use ++of the outbound bandwidth on a given link. Both allow you to use one ++physical link to simulate several slower links and to send different ++kinds of traffic on different simulated links. In both cases, you have ++to specify how to divide the physical link into simulated links and ++how to decide which simulated link to use for a given packet to be sent. ++ ++Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm ++which does not depend on interface characteristics and so does not need to ++know the underlying bandwidth of the outgoing interface. ++ ++.SH SHAPING ALGORITHM ++Shaping works as documented in ++.B tc-tbf (8). ++ ++.SH CLASSIFICATION ++Within the one HRB instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, HTB starts at the root and uses various methods to ++determine which class should receive the data. ++ ++In the absence of uncommon configuration options, the process is rather easy. ++At each node we look for an instruction, and then go to the class the ++instruction refers us to. If the class found is a barren leaf-node (without ++children), we enqueue the packet there. If it is not yet a leaf node, we do ++the whole thing over again starting from that node. ++ ++The following actions are performed, in order at each node we visit, until one ++sends us to another node, or terminates the process. ++.TP ++(i) ++Consult filters attached to the class. If sent to a leafnode, we are done. ++Otherwise, restart. ++.TP ++(ii) ++If none of the above returned with an instruction, enqueue at this node. ++.P ++This algorithm makes sure that a packet always ends up somewhere, even while ++you are busy building your configuration. ++ ++.SH LINK SHARING ALGORITHM ++FIXME ++ ++.SH QDISC ++The root of a HTB qdisc class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the HTB instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the HTB can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional, but very useful if classes ++will be generated within this qdisc. ++.TP ++default minor-id ++Unclassified traffic gets sent to the class with this minor-id. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++prio priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++rate rate ++Maximum rate this class and all its children are guaranteed. Mandatory. ++ ++.TP ++ceil rate ++Maximum rate at which a class can send, if its parent has bandwidth to spare. ++Defaults to the configured rate, which implies no borrowing ++ ++.TP ++burst bytes ++Amount of bytes that can be burst at ++.B ceil ++speed, in excess of the configured ++.B rate. ++Should be at least as high as the highest burst of all children. ++ ++.TP ++cburst bytes ++Amount of bytes that can be burst at 'infinite' speed, in other words, as fast ++as the interface can transmit them. For perfect evening out, should be equal to at most one average ++packet. Should be at least as high as the highest cburst of all children. ++ ++.SH NOTES ++Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel, ++there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick. ++From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte ++burst as 100*12kb*8 equals 10mbit. ++ ++.SH SEE ALSO ++.BR tc (8) ++.P ++HTB website: http://luxik.cdi.cz/~devik/qos/htb/ ++.SH AUTHOR ++Martin Devera . This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-pbfifo.8 iproute2/debian/manpages/old/tc-pbfifo.8 +--- iproute2-orig/debian/manpages/old/tc-pbfifo.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-pbfifo.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,72 @@ ++.TH PBFIFO 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++pfifo \- Packet limited First In, First Out queue ++.P ++bfifo \- Byte limited First In, First Out queue ++ ++.SH SYNOPSIS ++.B tc qdisc ... add pfifo ++.B [ limit ++packets ++.B ] ++.P ++.B tc qdisc ... add bfifo ++.B [ limit ++bytes ++.B ] ++ ++.SH DESCRIPTION ++The pfifo and bfifo qdiscs are unadorned First In, First Out queues. They are the ++simplest queues possible and therefore have no overhead. ++.B pfifo ++constrains the queue size as measured in packets. ++.B bfifo ++does so as measured in bytes. ++ ++Like all non-default qdiscs, they maintain statistics. This might be a reason to prefer ++pfifo or bfifo over the default. ++ ++.SH ALGORITHM ++A list of packets is maintained, when a packet is enqueued it gets inserted at the tail of ++a list. When a packet needs to be sent out to the network, it is taken from the head of the list. ++ ++If the list is too long, no further packets are allowed on. This is called 'tail drop'. ++ ++.SH PARAMETERS ++.TP ++limit ++Maximum queue size. Specified in bytes for bfifo, in packets for pfifo. For pfifo, defaults ++to the interface txqueuelen, as specified with ++.BR ifconfig (8) ++or ++.BR ip (8). ++ ++For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. ++ ++.SH OUTPUT ++The output of ++.B tc -s qdisc ls ++contains the limit, either in packets or in bytes, and the number of bytes ++and packets actually sent. An unsent and dropped packet only appears between braces ++and is not counted as 'Sent'. ++ ++In this example, the queue length is 100 packets, 45894 bytes were sent over 681 packets. ++No packets were dropped, and as the pfifo queue does not slow down packets, there were also no ++overlimits: ++.P ++.nf ++# tc -s qdisc ls dev eth0 ++qdisc pfifo 8001: dev eth0 limit 100p ++ Sent 45894 bytes 681 pkts (dropped 0, overlimits 0) ++.fi ++ ++If a backlog occurs, this is displayed as well. ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, ++ ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-pfifo_fast.8 iproute2/debian/manpages/old/tc-pfifo_fast.8 +--- iproute2-orig/debian/manpages/old/tc-pfifo_fast.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-pfifo_fast.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,59 @@ ++.TH PFIFO_FAST 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++pfifo_fast \- three-band first in, first out queue ++ ++.SH DESCRIPTION ++pfifo_fast is the default qdisc of each interface. ++ ++Whenever an interface is created, the pfifo_fast qdisc is automatically used ++as a queue. If another qdisc is attached, it preempts the default ++pfifo_fast, which automatically returns to function when an existing qdisc ++is detached. ++ ++In this sense this qdisc is magic, and unlike other qdiscs. ++ ++.SH ALGORITHM ++The algorithm is very similar to that of the classful ++.BR tc-prio (8) ++qdisc. ++.B pfifo_fast ++is like three ++.BR tc-pfifo (8) ++queues side by side, where packets can be enqueued in any of the three bands ++based on their Type of Service bits or assigned priority. ++ ++Not all three bands are dequeued simultaneously - as long as lower bands ++have traffic, higher bands are never dequeued. This can be used to ++prioritize interactive traffic or penalize 'lowest cost' traffic. ++ ++Each band can be txqueuelen packets long, as configured with ++.BR ifconfig (8) ++or ++.BR ip (8). ++Additional packets coming in are not enqueued but are instead dropped. ++ ++See ++.BR tc-prio (8) ++for complete details on how TOS bits are translated into bands. ++.SH PARAMETERS ++.TP ++txqueuelen ++The length of the three bands depends on the interface txqueuelen, as ++specified with ++.BR ifconfig (8) ++or ++.BR ip (8). ++ ++.SH BUGS ++Does not maintain statistics and does not show up in tc qdisc ls. This is because ++it is the automatic default in the absence of a configured qdisc. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, ++ ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-prio.8 iproute2/debian/manpages/old/tc-prio.8 +--- iproute2-orig/debian/manpages/old/tc-prio.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-prio.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,187 @@ ++.TH PRIO 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++PRIO \- Priority qdisc ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] prio [ bands ++bands ++.B ] [ priomap ++band,band,band... ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++The PRIO qdisc is a simple classful queueing discipline that contains ++an arbitrary number of classes of differing priority. The classes are ++dequeued in numerical descending order of priority. PRIO is a scheduler ++and never delays packets - it is a work-conserving qdisc, though the qdiscs ++contained in the classes may not be. ++ ++Very useful for lowering latency when there is no need for slowing down ++traffic. ++ ++.SH ALGORITHM ++On creation with 'tc qdisc add', a fixed number of bands is created. Each ++band is a class, although is not possible to add classes with 'tc qdisc ++add', the number of bands to be created must instead be specified on the ++commandline attaching PRIO to its root. ++ ++When dequeueing, band 0 is tried first and only if it did not deliver a ++packet does PRIO try band 1, and so onwards. Maximum reliability packets ++should therefore go to band 0, minimum delay to band 1 and the rest to band ++2. ++ ++As the PRIO qdisc itself will have minor number 0, band 0 is actually ++major:1, band 1 is major:2, etc. For major, substitute the major number ++assigned to the qdisc on 'tc qdisc add' with the ++.B handle ++parameter. ++ ++.SH CLASSIFICATION ++Three methods are available to PRIO to determine in which band a packet will ++be enqueued. ++.TP ++From userspace ++A process with sufficient privileges can encode the destination class ++directly with SO_PRIORITY, see ++.BR tc(7). ++.TP ++with a tc filter ++A tc filter attached to the root qdisc can point traffic directly to a class ++.TP ++with the priomap ++Based on the packet priority, which in turn is derived from the Type of ++Service assigned to the packet. ++.P ++Only the priomap is specific to this qdisc. ++.SH QDISC PARAMETERS ++.TP ++bands ++Number of bands. If changed from the default of 3, ++.B priomap ++must be updated as well. ++.TP ++priomap ++The priomap maps the priority of ++a packet to a class. The priority can either be set directly from userspace, ++or be derived from the Type of Service of the packet. ++ ++Determines how packet priorities, as assigned by the kernel, map to ++bands. Mapping occurs based on the TOS octet of the packet, which looks like ++this: ++ ++.nf ++0 1 2 3 4 5 6 7 +++---+---+---+---+---+---+---+---+ ++| | | | ++|PRECEDENCE | TOS |MBZ| ++| | | | +++---+---+---+---+---+---+---+---+ ++.fi ++ ++The four TOS bits (the 'TOS field') are defined as: ++ ++.nf ++Binary Decimcal Meaning ++----------------------------------------- ++1000 8 Minimize delay (md) ++0100 4 Maximize throughput (mt) ++0010 2 Maximize reliability (mr) ++0001 1 Minimize monetary cost (mmc) ++0000 0 Normal Service ++.fi ++ ++As there is 1 bit to the right of these four bits, the actual value of the ++TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the ++value of the entire TOS field, not just the four bits. It is the value you ++see in the first column of this table: ++ ++.nf ++TOS Bits Means Linux Priority Band ++------------------------------------------------------------ ++0x0 0 Normal Service 0 Best Effort 1 ++0x2 1 Minimize Monetary Cost 1 Filler 2 ++0x4 2 Maximize Reliability 0 Best Effort 1 ++0x6 3 mmc+mr 0 Best Effort 1 ++0x8 4 Maximize Throughput 2 Bulk 2 ++0xa 5 mmc+mt 2 Bulk 2 ++0xc 6 mr+mt 2 Bulk 2 ++0xe 7 mmc+mr+mt 2 Bulk 2 ++0x10 8 Minimize Delay 6 Interactive 0 ++0x12 9 mmc+md 6 Interactive 0 ++0x14 10 mr+md 6 Interactive 0 ++0x16 11 mmc+mr+md 6 Interactive 0 ++0x18 12 mt+md 4 Int. Bulk 1 ++0x1a 13 mmc+mt+md 4 Int. Bulk 1 ++0x1c 14 mr+mt+md 4 Int. Bulk 1 ++0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 ++.fi ++ ++The second column contains the value of the relevant ++four TOS bits, followed by their translated meaning. For example, 15 stands ++for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum ++Throughput AND Minimum Delay. ++ ++The fourth column lists the way the Linux kernel interprets the TOS bits, by ++showing to which Priority they are mapped. ++ ++The last column shows the result of the default priomap. On the commandline, ++the default priomap looks like this: ++ ++ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 ++ ++This means that priority 4, for example, gets mapped to band number 1. ++The priomap also allows you to list higher priorities (> 7) which do not ++correspond to TOS mappings, but which are set by other means. ++ ++This table from RFC 1349 (read it for more details) explains how ++applications might very well set their TOS bits: ++ ++.nf ++TELNET 1000 (minimize delay) ++FTP ++ Control 1000 (minimize delay) ++ Data 0100 (maximize throughput) ++ ++TFTP 1000 (minimize delay) ++ ++SMTP ++ Command phase 1000 (minimize delay) ++ DATA phase 0100 (maximize throughput) ++ ++Domain Name Service ++ UDP Query 1000 (minimize delay) ++ TCP Query 0000 ++ Zone Transfer 0100 (maximize throughput) ++ ++NNTP 0001 (minimize monetary cost) ++ ++ICMP ++ Errors 0000 ++ Requests 0000 (mostly) ++ Responses (mostly) ++.fi ++ ++ ++.SH CLASSES ++PRIO classes cannot be configured further - they are automatically created ++when the PRIO qdisc is attached. Each class however can contain yet a ++further qdisc. ++ ++.SH BUGS ++Large amounts of traffic in the lower bands can cause starvation of higher ++bands. Can be prevented by attaching a shaper (for example, ++.BR tc-tbf(8) ++to these bands to make sure they cannot dominate the link. ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, , J Hadi Salim ++. This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-red.8 iproute2/debian/manpages/old/tc-red.8 +--- iproute2-orig/debian/manpages/old/tc-red.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-red.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,131 @@ ++.TH RED 8 "13 December 2001" "iproute2" "Linux" ++.SH NAME ++red \- Random Early Detection ++.SH SYNOPSIS ++.B tc qdisc ... red ++.B limit ++bytes ++.B min ++bytes ++.B max ++bytes ++.B avpkt ++bytes ++.B burst ++packets ++.B [ ecn ] [ bandwidth ++rate ++.B ] probability ++chance ++ ++.SH DESCRIPTION ++Random Early Detection is a classless qdisc which manages its queue size ++smartly. Regular queues simply drop packets from the tail when they are ++full, which may not be the optimal behaviour. RED also performs tail drop, ++but does so in a more gradual way. ++ ++Once the queue hits a certain average length, packets enqueued have a ++configurable chance of being marked (which may mean dropped). This chance ++increases linearly up to a point called the ++.B max ++average queue length, although the queue might get bigger. ++ ++This has a host of benefits over simple taildrop, while not being processor ++intensive. It prevents synchronous retransmits after a burst in traffic, ++which cause further retransmits, etc. ++ ++The goal is the have a small queue size, which is good for interactivity ++while not disturbing TCP/IP traffic with too many sudden drops after a burst ++of traffic. ++ ++Depending on if ECN is configured, marking either means dropping or ++purely marking a packet as overlimit. ++.SH ALGORITHM ++The average queue size is used for determining the marking ++probability. This is calculated using an Exponential Weighted Moving ++Average, which can be more or less sensitive to bursts. ++ ++When the average queue size is below ++.B min ++bytes, no packet will ever be marked. When it exceeds ++.B min, ++the probability of doing so climbs linearly up ++to ++.B probability, ++until the average queue size hits ++.B max ++bytes. Because ++.B probability ++is normally not set to 100%, the queue size might ++conceivably rise above ++.B max ++bytes, so the ++.B limit ++parameter is provided to set a hard maximum for the size of the queue. ++ ++.SH PARAMETERS ++.TP ++min ++Average queue size at which marking becomes a possibility. ++.TP ++max ++At this average queue size, the marking probability is maximal. Should be at ++least twice ++.B min ++to prevent synchronous retransmits, higher for low ++.B min. ++.TP ++probability ++Maximum probability for marking, specified as a floating point ++number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%, ++respectively). ++.TP ++limit ++Hard limit on the real (not average) queue size in bytes. Further packets ++are dropped. Should be set higher than max+burst. It is advised to set this ++a few times higher than ++.B max. ++.TP ++burst ++Used for determining how fast the average queue size is influenced by the ++real queue size. Larger values make the calculation more sluggish, allowing ++longer bursts of traffic before marking starts. Real life experiments ++support the following guideline: (min+min+max)/(3*avpkt). ++.TP ++avpkt ++Specified in bytes. Used with burst to determine the time constant for ++average queue size calculations. 1000 is a good value. ++.TP ++bandwidth ++This rate is used for calculating the average queue size after some ++idle time. Should be set to the bandwidth of your interface. Does not mean ++that RED will shape for you! Optional. ++.TP ++ecn ++As mentioned before, RED can either 'mark' or 'drop'. Explicit Congestion ++Notification allows RED to notify remote hosts that their rate exceeds the ++amount of bandwidth available. Non-ECN capable hosts can only be notified by ++dropping a packet. If this parameter is specified, packets which indicate ++that their hosts honor ECN will only be marked and not dropped, unless the ++queue size hits ++.B limit ++bytes. Needs a tc binary with RED support compiled in. Recommended. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH SOURCES ++.TP ++o ++Floyd, S., and Jacobson, V., Random Early Detection gateways for ++Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html ++.TP ++o ++Some changes to the algorithm by Alexey N. Kuznetsov. ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, , Alexey Makarenko ++, J Hadi Salim . ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-sfq.8 iproute2/debian/manpages/old/tc-sfq.8 +--- iproute2-orig/debian/manpages/old/tc-sfq.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-sfq.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,107 @@ ++.TH TC 8 "8 December 2001" "iproute2" "Linux" ++.SH NAME ++sfq \- Stochastic Fairness Queueing ++.SH SYNOPSIS ++.B tc qdisc ... perturb ++seconds ++.B quantum ++bytes ++ ++.SH DESCRIPTION ++ ++Stochastic Fairness Queueing is a classless queueing discipline available for ++traffic control with the ++.BR tc (8) ++command. ++ ++SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'. ++The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing ++any single flow from drowning out the rest. ++ ++This may in fact have some effect in mitigating a Denial of Service attempt. ++ ++SFQ is work-conserving and therefore always delivers a packet if it has one available. ++.SH ALGORITHM ++On enqueueing, each packet is assigned to a hash bucket, based on ++.TP ++(i) ++Source address ++.TP ++(ii) ++Destination address ++.TP ++(iii) ++Source port ++.P ++If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP. ++Packets with other protocols are hashed based on the 32bits representation of their ++destination and the socket they belong to. A flow corresponds mostly to a TCP/IP ++connection. ++ ++Each of these buckets should represent a unique flow. Because multiple flows may ++get hashed to the same bucket, the hashing algorithm is perturbed at configurable ++intervals so that the unfairness lasts only for a short while. Perturbation may ++however cause some inadvertent packet reordering to occur. ++ ++When dequeuing, each hashbucket with data is queried in a round robin fashion. ++ ++The compile time maximum length of the SFQ is 128 packets, which can be spread over ++at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed ++on the fullest bucket, thus maintaining fairness. ++ ++.SH PARAMETERS ++.TP ++perturb ++Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that ++no perturbation occurs. Do not set too low for each perturbation may cause some packet ++reordering. Advised value: 10 ++.TP ++quantum ++Amount of bytes a flow is allowed to dequeue during a round of the round robin process. ++Defaults to the MTU of the interface which is also the advised value and the minimum value. ++ ++.SH EXAMPLE & USAGE ++ ++To attach to device ppp0: ++.P ++# tc qdisc add dev ppp0 root sfq perturb 10 ++.P ++Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful ++if it owns the queue. ++This is the case when the link speed equals the actually available bandwidth. This holds ++for regular phone modems, ISDN connections and direct non-switched ethernet links. ++.P ++Most often, cable modems and DSL devices do not fall into this category. The same holds ++for when connected to a switch and trying to send data to a congested segment also ++connected to the switch. ++.P ++In this case, the effective queue does not reside within Linux and is therefore not ++available for scheduling. ++.P ++Embed SFQ in a classful qdisc to make sure it owns the queue. ++ ++.SH SOURCE ++.TP ++o ++Paul E. McKenney "Stochastic Fairness Queuing", ++IEEE INFOCOMM'90 Proceedings, San Francisco, 1990. ++ ++.TP ++o ++Paul E. McKenney "Stochastic Fairness Queuing", ++"Interworking: Research and Experience", v.2, 1991, p.113-131. ++ ++.TP ++o ++See also: ++M. Shreedhar and George Varghese "Efficient Fair ++Queuing using Deficit Round Robin", Proc. SIGCOMM 95. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc-tbf.8 iproute2/debian/manpages/old/tc-tbf.8 +--- iproute2-orig/debian/manpages/old/tc-tbf.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc-tbf.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,138 @@ ++.TH TC 8 "13 December 2001" "iproute2" "Linux" ++.SH NAME ++tbf \- Token Bucket Filter ++.SH SYNOPSIS ++.B tc qdisc ... tbf rate ++rate ++.B burst ++bytes/cell ++.B ( latency ++ms ++.B | limit ++bytes ++.B ) [ mpu ++bytes ++.B [ peakrate ++rate ++.B mtu ++bytes/cell ++.B ] ] ++.P ++burst is also known as buffer and maxburst. mtu is also known as minburst. ++.SH DESCRIPTION ++ ++The Token Bucket Filter is a classless queueing discipline available for ++traffic control with the ++.BR tc (8) ++command. ++ ++TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle ++itself, although packets are available, to ensure that the configured rate is not exceeded. ++On all platforms except for Alpha, ++it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, ++sending out data exactly at the configured rates. ++ ++Much higher rates are possible but at the cost of losing the minimal burstiness. In that ++case, data is on average dequeued at the configured rate but may be sent much faster at millisecond ++timescales. Because of further queues living in network adaptors, this is often not a problem. ++ ++Kernels with a higher 'HZ' can achieve higher rates with perfect burstiness. On Alpha, HZ is ten ++times higher, leading to a 10mbit/s limit to perfection. These calculations hold for packets of on ++average 1000 bytes. ++ ++.SH ALGORITHM ++As the name implies, traffic is filtered based on the expenditure of ++.B tokens. ++Tokens roughly correspond to bytes, with the additional constraint that each packet consumes ++some tokens, no matter how small it is. This reflects the fact that even a zero-sized packet occupies ++the link for some time. ++ ++On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst ++in one go. Tokens arrive at a steady rate, until the bucket is full. ++ ++If no tokens are available, packets are queued, up to a configured limit. The TBF now ++calculates the token deficit, and throttles until the first packet in the queue can be sent. ++ ++If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured ++to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF ++with a very small bucket, so that it doesn't burst. ++ ++To achieve perfection, the second bucket may contain only a single packet, which leads to ++the earlier mentioned 1mbit/s limit. ++ ++This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends ++on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 ++packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s. ++ ++.SH PARAMETERS ++See ++.BR tc (8) ++for how to specify the units of these values. ++.TP ++limit or latency ++Limit is the number of bytes that can be queued waiting for tokens to become ++available. You can also specify this the other way around by setting the ++latency parameter, which specifies the maximum amount of time a packet can ++sit in the TBF. The latter calculation takes into account the size of the ++bucket, the rate and possibly the peakrate (if set). These two parameters ++are mutually exclusive. ++.TP ++burst ++Also known as buffer or maxburst. ++Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. ++In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer ++if you want to reach your configured rate! ++ ++If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket. ++The minimum buffer size can be calculated by dividing the rate by HZ. ++ ++Token usage calculations are performed using a table which by default has a resolution of 8 packets. ++This resolution can be changed by specifying the ++.B cell ++size with the burst. For example, to specify a 6000 byte buffer with a 16 ++byte cell size, set a burst of 6000/16. You will probably never have to set ++this. Must be an integral power of 2. ++.TP ++mpu ++A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit ++determines the minimal token usage (specified in bytes) for a packet. Defaults to zero. ++.TP ++rate ++The speed knob. See remarks above about limits! See ++.BR tc (8) ++for units. ++.PP ++Furthermore, if a peakrate is desired, the following parameters are available: ++ ++.TP ++peakrate ++Maximum depletion rate of the bucket. Limited to 1mbit/s on Intel, 10mbit/s on Alpha. The peakrate does ++not need to be set, it is only necessary if perfect millisecond timescale shaping is required. ++ ++.TP ++mtu/minburst ++Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. ++If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst ++allows around 3mbit/s of peakrate, given 1000 byte packets. ++ ++Like the regular burstsize you can also specify a ++.B cell ++size. ++.SH EXAMPLE & USAGE ++ ++To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s, ++a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes ++at most 70ms of latency, with perfect peakrate behaviour, issue: ++.P ++# tc qdisc add dev eth0 root tbf rate 0.5mbit \\ ++ burst 5kb latency 70ms peakrate 1mbit \\ ++ minburst 1540 ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/old/tc.8 iproute2/debian/manpages/old/tc.8 +--- iproute2-orig/debian/manpages/old/tc.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/old/tc.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,348 @@ ++.TH TC 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++tc \- show / manipulate traffic control settings ++.SH SYNOPSIS ++.B tc qdisc [ add | change | replace | link ] dev ++DEV ++.B ++[ parent ++qdisc-id ++.B | root ] ++.B [ handle ++qdisc-id ] qdisc ++[ qdisc specific parameters ] ++.P ++ ++.B tc class [ add | change | replace ] dev ++DEV ++.B parent ++qdisc-id ++.B [ classid ++class-id ] qdisc ++[ qdisc specific parameters ] ++.P ++ ++.B tc filter [ add | change | replace ] dev ++DEV ++.B [ parent ++qdisc-id ++.B | root ] protocol ++protocol ++.B prio ++priority filtertype ++[ filtertype specific parameters ] ++.B flowid ++flow-id ++ ++.B tc [-s | -d ] qdisc show [ dev ++DEV ++.B ] ++.P ++.B tc [-s | -d ] class show dev ++DEV ++.P ++.B tc filter show dev ++DEV ++ ++.SH DESCRIPTION ++.B Tc ++is used to configure Traffic Control in the Linux kernel. Traffic Control consists ++of the following: ++ ++.TP ++SHAPING ++When traffic is shaped, its rate of transmission is under control. Shaping may ++be more than lowering the available bandwidth - it is also used to smooth out ++bursts in traffic for better network behaviour. Shaping occurs on egress. ++ ++.TP ++SCHEDULING ++By scheduling the transmission of packets it is possible to improve interactivity ++for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering ++is also called prioritizing, and happens only on egress. ++ ++.TP ++POLICING ++Where shaping deals with transmission of traffic, policing pertains to traffic ++arriving. Policing thus occurs on ingress. ++ ++.TP ++DROPPING ++Traffic exceeding a set bandwidth may also be dropped forthwith, both on ++ingress and on egress. ++ ++.P ++Processing of traffic is controlled by three kinds of objects: qdiscs, ++classes and filters. ++ ++.SH QDISCS ++.B qdisc ++is short for 'queueing discipline' and it is elementary to ++understanding traffic control. Whenever the kernel needs to send a ++packet to an interface, it is ++.B enqueued ++to the qdisc configured for that interface. Immediately afterwards, the kernel ++tries to get as many packets as possible from the qdisc, for giving them ++to the network adaptor driver. ++ ++A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure ++First In, First Out queue. It does however store traffic when the network interface ++can't handle it momentarily. ++ ++.SH CLASSES ++Some qdiscs can contain classes, which contain further qdiscs - traffic may ++then be enqueued in any of the inner qdiscs, which are within the ++.B classes. ++When the kernel tries to dequeue a packet from such a ++.B classful qdisc ++it can come from any of the classes. A qdisc may for example prioritize ++certain kinds of traffic by trying to dequeue from certain classes ++before others. ++ ++.SH FILTERS ++A ++.B filter ++is used by a classful qdisc to determine in which class a packet will ++be enqueued. Whenever traffic arrives at a class with subclasses, it needs ++to be classified. Various methods may be employed to do so, one of these ++are the filters. All filters attached to the class are called, until one of ++them returns with a verdict. If no verdict was made, other criteria may be ++available. This differs per qdisc. ++ ++It is important to notice that filters reside ++.B within ++qdiscs - they are not masters of what happens. ++ ++.SH CLASSLESS QDISCS ++The classless qdiscs are: ++.TP ++[p|b]fifo ++Simplest usable qdisc, pure First In, First Out behaviour. Limited in ++packets or in bytes. ++.TP ++pfifo_fast ++Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band ++queue which honors Type of Service flags, as well as the priority that may be ++assigned to a packet. ++.TP ++red ++Random Early Detection simulates physical congestion by randomly dropping ++packets when nearing configured bandwidth allocation. Well suited to very ++large bandwidth applications. ++.TP ++sfq ++Stochastic Fairness Queueing reorders queued traffic so each 'session' ++gets to send a packet in turn. ++.TP ++tbf ++The Token Bucket Filter is suited for slowing traffic down to a precisely ++configured rate. Scales well to large bandwidths. ++.SH CONFIGURING CLASSLESS QDISCS ++In the absence of classful qdiscs, classless qdiscs can only be attached at ++the root of a device. Full syntax: ++.P ++.B tc qdisc add dev ++DEV ++.B root ++QDISC QDISC-PARAMETERS ++ ++To remove, issue ++.P ++.B tc qdisc del dev ++DEV ++.B root ++ ++The ++.B pfifo_fast ++qdisc is the automatic default in the absence of a configured qdisc. ++ ++.SH CLASSFUL QDISCS ++The classful qdiscs are: ++.TP ++CBQ ++Class Based Queueing implements a rich linksharing hierarchy of classes. ++It contains shaping elements as well as prioritizing capabilities. Shaping is ++performed using link idle time calculations based on average packet size and ++underlying link bandwidth. The latter may be ill-defined for some interfaces. ++.TP ++HTB ++The Hierarchy Token Bucket implements a rich linksharing hierarchy of ++classes with an emphasis on conforming to existing practices. HTB facilitates ++guaranteeing bandwidth to classes, while also allowing specification of upper ++limits to inter-class sharing. It contains shaping elements, based on TBF and ++can prioritize classes. ++.TP ++PRIO ++The PRIO qdisc is a non-shaping container for a configurable number of ++classes which are dequeued in order. This allows for easy prioritization ++of traffic, where lower classes are only able to send if higher ones have ++no packets available. To facilitate configuration, Type Of Service bits are ++honored by default. ++.SH THEORY OF OPERATION ++Classes form a tree, where each class has a single parent. ++A class may have multiple children. Some qdiscs allow for runtime addition ++of classes (CBQ, HTB) while others (PRIO) are created with a static number of ++children. ++ ++Qdiscs which allow dynamic addition of classes can have zero or more ++subclasses to which traffic may be enqueued. ++ ++Furthermore, each class contains a ++.B leaf qdisc ++which by default has ++.B pfifo ++behaviour though another qdisc can be attached in place. This qdisc may again ++contain classes, but each class can have only one leaf qdisc. ++ ++When a packet enters a classful qdisc it can be ++.B classified ++to one of the classes within. Three criteria are available, although not all ++qdiscs will use all three: ++.TP ++tc filters ++If tc filters are attached to a class, they are consulted first ++for relevant instructions. Filters can match on all fields of a packet header, ++as well as on the firewall mark applied by ipchains or iptables. See ++.BR tc-filters (8). ++.TP ++Type of Service ++Some qdiscs have built in rules for classifying packets based on the TOS field. ++.TP ++skb->priority ++Userspace programs can encode a class-id in the 'skb->priority' field using ++the SO_PRIORITY option. ++.P ++Each node within the tree can have its own filters but higher level filters ++may also point directly to lower classes. ++ ++If classification did not succeed, packets are enqueued to the leaf qdisc ++attached to that class. Check qdisc specific manpages for details, however. ++ ++.SH NAMING ++All qdiscs, classes and filters have IDs, which can either be specified ++or be automatically assigned. ++ ++IDs consist of a major number and a minor number, separated by a colon. ++ ++.TP ++QDISCS ++A qdisc, which potentially can have children, ++gets assigned a major number, called a 'handle', leaving the minor ++number namespace available for classes. The handle is expressed as '10:'. ++It is customary to explicitly assign a handle to qdiscs expected to have ++children. ++ ++.TP ++CLASSES ++Classes residing under a qdisc share their qdisc major number, but each have ++a separate minor number called a 'classid' that has no relation to their ++parent classes, only to their parent qdisc. The same naming custom as for ++qdiscs applies. ++ ++.TP ++FILTERS ++Filters have a three part ID, which is only needed when using a hashed ++filter hierarchy, for which see ++.BR tc-filters (8). ++.SH UNITS ++All parameters accept a floating point number, possibly followed by a unit. ++.P ++Bandwidths or rates can be specified in: ++.TP ++kbps ++Kilobytes per second ++.TP ++mbps ++Megabytes per second ++.TP ++kbit ++Kilobits per second ++.TP ++mbit ++Megabits per second ++.TP ++bps or a bare number ++Bytes per second ++.P ++Amounts of data can be specified in: ++.TP ++kb or k ++Kilobytes ++.TP ++mb or m ++Megabytes ++.TP ++mbit ++Megabits ++.TP ++kbit ++Kilobits ++.TP ++b or a bare number ++Bytes. ++.P ++Lengths of time can be specified in: ++.TP ++s, sec or secs ++Whole seconds ++.TP ++ms, msec or msecs ++Milliseconds ++.TP ++us, usec, usecs or a bare number ++Microseconds. ++ ++.SH TC COMMANDS ++The following commands are available for qdiscs, classes and filter: ++.TP ++add ++Add a qdisc, class or filter to a node. For all entities, a ++.B parent ++must be passed, either by passing its ID or by attaching directly to the root of a device. ++When creating a qdisc or a filter, it can be named with the ++.B handle ++parameter. A class is named with the ++.B classid ++parameter. ++ ++.TP ++remove ++A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs ++are automatically deleted, as well as any filters attached to them. ++ ++.TP ++change ++Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception ++that the handle cannot be changed and neither can the parent. In other words, ++.B ++change ++cannot move a node. ++ ++.TP ++replace ++Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet ++it is created. ++ ++.TP ++link ++Only available for qdiscs and performs a replace where the node ++must exist already. ++ ++ ++.SH HISTORY ++.B tc ++was written by Alexey N. Kuznetsov and added in Linux 2.2. ++.SH SEE ALSO ++.BR tc-cbq (8), ++.BR tc-htb (8), ++.BR tc-sfq (8), ++.BR tc-red (8), ++.BR tc-tbf (8), ++.BR tc-pfifo (8), ++.BR tc-bfifo (8), ++.BR tc-pfifo_fast (8), ++.BR tc-filters (8) ++ ++.SH AUTHOR ++Manpage maintained by bert hubert (ahu@ds9a.nl) ++ +diff -Naur iproute2-orig/debian/manpages/tc-cbq-details.8 iproute2/debian/manpages/tc-cbq-details.8 +--- iproute2-orig/debian/manpages/tc-cbq-details.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-cbq-details.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,425 @@ ++.TH CBQ 8 "8 December 2001" "iproute2" "Linux" ++.SH NAME ++CBQ \- Class Based Queueing ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] cbq avpkt ++bytes ++.B bandwidth ++rate ++.B [ cell ++bytes ++.B ] [ ewma ++log ++.B ] [ mpu ++bytes ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] cbq allot ++bytes ++.B [ bandwidth ++rate ++.B ] [ rate ++rate ++.B ] prio ++priority ++.B [ weight ++weight ++.B ] [ minburst ++packets ++.B ] [ maxburst ++packets ++.B ] [ ewma ++log ++.B ] [ cell ++bytes ++.B ] avpkt ++bytes ++.B [ mpu ++bytes ++.B ] [ bounded isolated ] [ split ++handle ++.B & defmap ++defmap ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++Class Based Queueing is a classful qdisc that implements a rich ++linksharing hierarchy of classes. It contains shaping elements as ++well as prioritizing capabilities. Shaping is performed using link ++idle time calculations based on the timing of dequeue events and ++underlying link bandwidth. ++ ++.SH SHAPING ALGORITHM ++Shaping is done using link idle time calculations, and actions taken if ++these calculations deviate from set limits. ++ ++When shaping a 10mbit/s connection to 1mbit/s, the link will ++be idle 90% of the time. If it isn't, it needs to be throttled so that it ++IS idle 90% of the time. ++ ++From the kernel's perspective, this is hard to measure, so CBQ instead ++derives the idle time from the number of microseconds (in fact, jiffies) ++that elapse between requests from the device driver for more data. Combined ++with the knowledge of packet sizes, this is used to approximate how full or ++empty the link is. ++ ++This is rather circumspect and doesn't always arrive at proper ++results. For example, what is the actual link speed of an interface ++that is not really able to transmit the full 100mbit/s of data, ++perhaps because of a badly implemented driver? A PCMCIA network card ++will also never achieve 100mbit/s because of the way the bus is ++designed - again, how do we calculate the idle time? ++ ++The physical link bandwidth may be ill defined in case of not-quite-real ++network devices like PPP over Ethernet or PPTP over TCP/IP. The effective ++bandwidth in that case is probably determined by the efficiency of pipes ++to userspace - which not defined. ++ ++During operations, the effective idletime is measured using an ++exponential weighted moving average (EWMA), which considers recent ++packets to be exponentially more important than past ones. The Unix ++loadaverage is calculated in the same way. ++ ++The calculated idle time is subtracted from the EWMA measured one, ++the resulting number is called 'avgidle'. A perfectly loaded link has ++an avgidle of zero: packets arrive exactly at the calculated ++interval. ++ ++An overloaded link has a negative avgidle and if it gets too negative, ++CBQ throttles and is then 'overlimit'. ++ ++Conversely, an idle link might amass a huge avgidle, which would then ++allow infinite bandwidths after a few hours of silence. To prevent ++this, avgidle is capped at ++.B maxidle. ++ ++If overlimit, in theory, the CBQ could throttle itself for exactly the ++amount of time that was calculated to pass between packets, and then ++pass one packet, and throttle again. Due to timer resolution constraints, ++this may not be feasible, see the ++.B minburst ++parameter below. ++ ++.SH CLASSIFICATION ++Within the one CBQ instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, CBQ starts at the root and uses various methods to ++determine which class should receive the data. If a verdict is reached, this ++process is repeated for the recipient class which might have further ++means of classifying traffic to its children, if any. ++ ++CBQ has the following methods available to classify a packet to any child ++classes. ++.TP ++(i) ++.B skb->priority class encoding. ++Can be set from userspace by an application with the ++.B SO_PRIORITY ++setsockopt. ++The ++.B skb->priority class encoding ++only applies if the skb->priority holds a major:minor handle of an existing ++class within this qdisc. ++.TP ++(ii) ++tc filters attached to the class. ++.TP ++(iii) ++The defmap of a class, as set with the ++.B split & defmap ++parameters. The defmap may contain instructions for each possible Linux packet ++priority. ++ ++.P ++Each class also has a ++.B level. ++Leaf nodes, attached to the bottom of the class hierarchy, have a level of 0. ++.SH CLASSIFICATION ALGORITHM ++ ++Classification is a loop, which terminates when a leaf class is found. At any ++point the loop may jump to the fallback algorithm. ++ ++The loop consists of the following steps: ++.TP ++(i) ++If the packet is generated locally and has a valid classid encoded within its ++.B skb->priority, ++choose it and terminate. ++ ++.TP ++(ii) ++Consult the tc filters, if any, attached to this child. If these return ++a class which is not a leaf class, restart loop from the class returned. ++If it is a leaf, choose it and terminate. ++.TP ++(iii) ++If the tc filters did not return a class, but did return a classid, ++try to find a class with that id within this qdisc. ++Check if the found class is of a lower ++.B level ++than the current class. If so, and the returned class is not a leaf node, ++restart the loop at the found class. If it is a leaf node, terminate. ++If we found an upward reference to a higher level, enter the fallback ++algorithm. ++.TP ++(iv) ++If the tc filters did not return a class, nor a valid reference to one, ++consider the minor number of the reference to be the priority. Retrieve ++a class from the defmap of this class for the priority. If this did not ++contain a class, consult the defmap of this class for the ++.B BEST_EFFORT ++class. If this is an upward reference, or no ++.B BEST_EFFORT ++class was defined, ++enter the fallback algorithm. If a valid class was found, and it is not a ++leaf node, restart the loop at this class. If it is a leaf, choose it and ++terminate. If ++neither the priority distilled from the classid, nor the ++.B BEST_EFFORT ++priority yielded a class, enter the fallback algorithm. ++.P ++The fallback algorithm resides outside of the loop and is as follows. ++.TP ++(i) ++Consult the defmap of the class at which the jump to fallback occured. If ++the defmap contains a class for the ++.B ++priority ++of the class (which is related to the TOS field), choose this class and ++terminate. ++.TP ++(ii) ++Consult the map for a class for the ++.B BEST_EFFORT ++priority. If found, choose it, and terminate. ++.TP ++(iii) ++Choose the class at which break out to the fallback algorithm occured. Terminate. ++.P ++The packet is enqueued to the class which was chosen when either algorithm ++terminated. It is therefore possible for a packet to be enqueued *not* at a ++leaf node, but in the middle of the hierarchy. ++ ++.SH LINK SHARING ALGORITHM ++When dequeuing for sending to the network device, CBQ decides which of its ++classes will be allowed to send. It does so with a Weighted Round Robin process ++in which each class with packets gets a chance to send in turn. The WRR process ++starts by asking the highest priority classes (lowest numerically - ++highest semantically) for packets, and will continue to do so until they ++have no more data to offer, in which case the process repeats for lower ++priorities. ++ ++.B CERTAINTY ENDS HERE, ANK PLEASE HELP ++ ++Each class is not allowed to send at length though - they can only dequeue a ++configurable amount of data during each round. ++ ++If a class is about to go overlimit, and it is not ++.B bounded ++it will try to borrow avgidle from siblings that are not ++.B isolated. ++This process is repeated from the bottom upwards. If a class is unable ++to borrow enough avgidle to send a packet, it is throttled and not asked ++for a packet for enough time for the avgidle to increase above zero. ++ ++.B I REALLY NEED HELP FIGURING THIS OUT. REST OF DOCUMENT IS PRETTY CERTAIN ++.B AGAIN. ++ ++.SH QDISC ++The root qdisc of a CBQ class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the CBQ instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the CBQ can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional. ++.TP ++avpkt bytes ++For calculations, the average packet size must be known. It is silently capped ++at a minimum of 2/3 of the interface MTU. Mandatory. ++.TP ++bandwidth rate ++To determine the idle time, CBQ must know the bandwidth of your underlying ++physical interface, or parent qdisc. This is a vital parameter, more about it ++later. Mandatory. ++.TP ++cell ++The cell size determines he granularity of packet transmission time calculations. Has a sensible default. ++.TP ++mpu ++A zero sized packet may still take time to transmit. This value is the lower ++cap for packet transmission time calculations - packets smaller than this value ++are still deemed to have this size. Defaults to zero. ++.TP ++ewma log ++When CBQ needs to measure the average idle time, it does so using an ++Exponentially Weighted Moving Average which smoothes out measurements into ++a moving average. The EWMA LOG determines how much smoothing occurs. Defaults ++to 5. Lower values imply greater sensitivity. Must be between 0 and 31. ++.P ++A CBQ qdisc does not shape out of its own accord. It only needs to know certain ++parameters about the underlying link. Actual shaping is done in classes. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++weight weight ++When dequeuing to the interface, classes are tried for traffic in a ++round-robin fashion. Classes with a higher configured qdisc will generally ++have more traffic to offer during each round, so it makes sense to allow ++it to dequeue more traffic. All weights under a class are normalized, so ++only the ratios matter. Defaults to the configured rate, unless the priority ++of this class is maximal, in which case it is set to 1. ++.TP ++allot bytes ++Allot specifies how many bytes a qdisc can dequeue ++during each round of the process. This parameter is weighted using the ++renormalized class weight described above. ++ ++.TP ++priority priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++rate rate ++Maximum rate this class and all its children combined can send at. Mandatory. ++ ++.TP ++bandwidth rate ++This is different from the bandwidth specified when creating a CBQ disc. Only ++used to determine maxidle and offtime, which are only calculated when ++specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. ++ ++.TP ++maxburst ++This number of packets is used to calculate maxidle so that when ++avgidle is at maxidle, this number of average packets can be burst ++before avgidle drops to 0. Set it higher to be more tolerant of ++bursts. You can't set maxidle directly, only via this parameter. ++ ++.TP ++minburst ++As mentioned before, CBQ needs to throttle in case of ++overlimit. The ideal solution is to do so for exactly the calculated ++idle time, and pass 1 packet. However, Unix kernels generally have a ++hard time scheduling events shorter than 10ms, so it is better to ++throttle for a longer period, and then pass minburst packets in one ++go, and then sleep minburst times longer. ++ ++The time to wait is called the offtime. Higher values of minburst lead ++to more accurate shaping in the long term, but to bigger bursts at ++millisecond timescales. ++ ++.TP ++minidle ++If avgidle is below 0, we are overlimits and need to wait until ++avgidle will be big enough to send one packet. To prevent a sudden ++burst from shutting down the link for a prolonged period of time, ++avgidle is reset to minidle if it gets too low. ++ ++Minidle is specified in negative microseconds, so 10 means that ++avgidle is capped at -10us. ++ ++.TP ++bounded ++Signifies that this class will not borrow bandwidth from its siblings. ++.TP ++isolated ++Means that this class will not borrow bandwidth to its siblings ++ ++.TP ++split major:minor & defmap bitmap[/bitmap] ++If consulting filters attached to a class did not give a verdict, ++CBQ can also classify based on the packet's priority. There are 16 ++priorities available, numbered from 0 to 15. ++ ++The defmap specifies which priorities this class wants to receive, ++specified as a bitmap. The Least Significant Bit corresponds to priority ++zero. The ++.B split ++parameter tells CBQ at which class the decision must be made, which should ++be a (grand)parent of the class you are adding. ++ ++As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' ++configures class 10:0 to send packets with priorities 6 and 7 to 10:1. ++ ++The complimentary configuration would then ++be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' ++Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. ++.TP ++estimator interval timeconstant ++CBQ can measure how much bandwidth each class is using, which tc filters ++can use to classify packets with. In order to determine the bandwidth ++it uses a very simple estimator that measures once every ++.B interval ++microseconds how much traffic has passed. This again is a EWMA, for which ++the time constant can be specified, also in microseconds. The ++.B time constant ++corresponds to the sluggishness of the measurement or, conversely, to the ++sensitivity of the average to short bursts. Higher values mean less ++sensitivity. ++ ++ ++ ++.SH SOURCES ++.TP ++o ++Sally Floyd and Van Jacobson, "Link-sharing and Resource ++Management Models for Packet Networks", ++IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on CBQ and Guarantee Service", 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on Class-Based Queueing: Setting ++Parameters", 1996 ++ ++.TP ++o ++Sally Floyd and Michael Speer, "Experimental Results ++for Class-Based Queueing", 1998, not published. ++ ++ ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-cbq.8 iproute2/debian/manpages/tc-cbq.8 +--- iproute2-orig/debian/manpages/tc-cbq.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-cbq.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,353 @@ ++.TH CBQ 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++CBQ \- Class Based Queueing ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] cbq [ allot ++bytes ++.B ] avpkt ++bytes ++.B bandwidth ++rate ++.B [ cell ++bytes ++.B ] [ ewma ++log ++.B ] [ mpu ++bytes ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] cbq allot ++bytes ++.B [ bandwidth ++rate ++.B ] [ rate ++rate ++.B ] prio ++priority ++.B [ weight ++weight ++.B ] [ minburst ++packets ++.B ] [ maxburst ++packets ++.B ] [ ewma ++log ++.B ] [ cell ++bytes ++.B ] avpkt ++bytes ++.B [ mpu ++bytes ++.B ] [ bounded isolated ] [ split ++handle ++.B & defmap ++defmap ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++Class Based Queueing is a classful qdisc that implements a rich ++linksharing hierarchy of classes. It contains shaping elements as ++well as prioritizing capabilities. Shaping is performed using link ++idle time calculations based on the timing of dequeue events and ++underlying link bandwidth. ++ ++.SH SHAPING ALGORITHM ++When shaping a 10mbit/s connection to 1mbit/s, the link will ++be idle 90% of the time. If it isn't, it needs to be throttled so that it ++IS idle 90% of the time. ++ ++During operations, the effective idletime is measured using an ++exponential weighted moving average (EWMA), which considers recent ++packets to be exponentially more important than past ones. The Unix ++loadaverage is calculated in the same way. ++ ++The calculated idle time is subtracted from the EWMA measured one, ++the resulting number is called 'avgidle'. A perfectly loaded link has ++an avgidle of zero: packets arrive exactly at the calculated ++interval. ++ ++An overloaded link has a negative avgidle and if it gets too negative, ++CBQ throttles and is then 'overlimit'. ++ ++Conversely, an idle link might amass a huge avgidle, which would then ++allow infinite bandwidths after a few hours of silence. To prevent ++this, avgidle is capped at ++.B maxidle. ++ ++If overlimit, in theory, the CBQ could throttle itself for exactly the ++amount of time that was calculated to pass between packets, and then ++pass one packet, and throttle again. Due to timer resolution constraints, ++this may not be feasible, see the ++.B minburst ++parameter below. ++ ++.SH CLASSIFICATION ++Within the one CBQ instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, CBQ starts at the root and uses various methods to ++determine which class should receive the data. ++ ++In the absence of uncommon configuration options, the process is rather easy. ++At each node we look for an instruction, and then go to the class the ++instruction refers us to. If the class found is a barren leaf-node (without ++children), we enqueue the packet there. If it is not yet a leaf node, we do ++the whole thing over again starting from that node. ++ ++The following actions are performed, in order at each node we visit, until one ++sends us to another node, or terminates the process. ++.TP ++(i) ++Consult filters attached to the class. If sent to a leafnode, we are done. ++Otherwise, restart. ++.TP ++(ii) ++Consult the defmap for the priority assigned to this packet, which depends ++on the TOS bits. Check if the referral is leafless, otherwise restart. ++.TP ++(iii) ++Ask the defmap for instructions for the 'best effort' priority. Check the ++answer for leafness, otherwise restart. ++.TP ++(iv) ++If none of the above returned with an instruction, enqueue at this node. ++.P ++This algorithm makes sure that a packet always ends up somewhere, even while ++you are busy building your configuration. ++ ++For more details, see ++.BR tc-cbq-details(8). ++ ++.SH LINK SHARING ALGORITHM ++When dequeuing for sending to the network device, CBQ decides which of its ++classes will be allowed to send. It does so with a Weighted Round Robin process ++in which each class with packets gets a chance to send in turn. The WRR process ++starts by asking the highest priority classes (lowest numerically - ++highest semantically) for packets, and will continue to do so until they ++have no more data to offer, in which case the process repeats for lower ++priorities. ++ ++Classes by default borrow bandwidth from their siblings. A class can be ++prevented from doing so by declaring it 'bounded'. A class can also indicate ++its unwillingness to lend out bandwidth by being 'isolated'. ++ ++.SH QDISC ++The root of a CBQ qdisc class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the CBQ instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the CBQ can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional, but very useful if classes ++will be generated within this qdisc. ++.TP ++allot bytes ++This allotment is the 'chunkiness' of link sharing and is used for determining packet ++transmission time tables. The qdisc allot differs slightly from the class allot discussed ++below. Optional. Defaults to a reasonable value, related to avpkt. ++.TP ++avpkt bytes ++The average size of a packet is needed for calculating maxidle, and is also used ++for making sure 'allot' has a safe value. Mandatory. ++.TP ++bandwidth rate ++To determine the idle time, CBQ must know the bandwidth of your underlying ++physical interface, or parent qdisc. This is a vital parameter, more about it ++later. Mandatory. ++.TP ++cell ++The cell size determines he granularity of packet transmission time calculations. Has a sensible default. ++.TP ++mpu ++A zero sized packet may still take time to transmit. This value is the lower ++cap for packet transmission time calculations - packets smaller than this value ++are still deemed to have this size. Defaults to zero. ++.TP ++ewma log ++When CBQ needs to measure the average idle time, it does so using an ++Exponentially Weighted Moving Average which smoothes out measurements into ++a moving average. The EWMA LOG determines how much smoothing occurs. Lower ++values imply greater sensitivity. Must be between 0 and 31. Defaults ++to 5. ++.P ++A CBQ qdisc does not shape out of its own accord. It only needs to know certain ++parameters about the underlying link. Actual shaping is done in classes. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++weight weight ++When dequeuing to the interface, classes are tried for traffic in a ++round-robin fashion. Classes with a higher configured qdisc will generally ++have more traffic to offer during each round, so it makes sense to allow ++it to dequeue more traffic. All weights under a class are normalized, so ++only the ratios matter. Defaults to the configured rate, unless the priority ++of this class is maximal, in which case it is set to 1. ++.TP ++allot bytes ++Allot specifies how many bytes a qdisc can dequeue ++during each round of the process. This parameter is weighted using the ++renormalized class weight described above. Silently capped at a minimum of ++3/2 avpkt. Mandatory. ++ ++.TP ++prio priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++avpkt ++See the QDISC section. ++ ++.TP ++rate rate ++Maximum rate this class and all its children combined can send at. Mandatory. ++ ++.TP ++bandwidth rate ++This is different from the bandwidth specified when creating a CBQ disc! Only ++used to determine maxidle and offtime, which are only calculated when ++specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. ++ ++.TP ++maxburst ++This number of packets is used to calculate maxidle so that when ++avgidle is at maxidle, this number of average packets can be burst ++before avgidle drops to 0. Set it higher to be more tolerant of ++bursts. You can't set maxidle directly, only via this parameter. ++ ++.TP ++minburst ++As mentioned before, CBQ needs to throttle in case of ++overlimit. The ideal solution is to do so for exactly the calculated ++idle time, and pass 1 packet. However, Unix kernels generally have a ++hard time scheduling events shorter than 10ms, so it is better to ++throttle for a longer period, and then pass minburst packets in one ++go, and then sleep minburst times longer. ++ ++The time to wait is called the offtime. Higher values of minburst lead ++to more accurate shaping in the long term, but to bigger bursts at ++millisecond timescales. Optional. ++ ++.TP ++minidle ++If avgidle is below 0, we are overlimits and need to wait until ++avgidle will be big enough to send one packet. To prevent a sudden ++burst from shutting down the link for a prolonged period of time, ++avgidle is reset to minidle if it gets too low. ++ ++Minidle is specified in negative microseconds, so 10 means that ++avgidle is capped at -10us. Optional. ++ ++.TP ++bounded ++Signifies that this class will not borrow bandwidth from its siblings. ++.TP ++isolated ++Means that this class will not borrow bandwidth to its siblings ++ ++.TP ++split major:minor & defmap bitmap[/bitmap] ++If consulting filters attached to a class did not give a verdict, ++CBQ can also classify based on the packet's priority. There are 16 ++priorities available, numbered from 0 to 15. ++ ++The defmap specifies which priorities this class wants to receive, ++specified as a bitmap. The Least Significant Bit corresponds to priority ++zero. The ++.B split ++parameter tells CBQ at which class the decision must be made, which should ++be a (grand)parent of the class you are adding. ++ ++As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' ++configures class 10:0 to send packets with priorities 6 and 7 to 10:1. ++ ++The complimentary configuration would then ++be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' ++Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. ++.TP ++estimator interval timeconstant ++CBQ can measure how much bandwidth each class is using, which tc filters ++can use to classify packets with. In order to determine the bandwidth ++it uses a very simple estimator that measures once every ++.B interval ++microseconds how much traffic has passed. This again is a EWMA, for which ++the time constant can be specified, also in microseconds. The ++.B time constant ++corresponds to the sluggishness of the measurement or, conversely, to the ++sensitivity of the average to short bursts. Higher values mean less ++sensitivity. ++ ++.SH BUGS ++The actual bandwidth of the underlying link may not be known, for example ++in the case of PPoE or PPTP connections which in fact may send over a ++pipe, instead of over a physical device. CBQ is quite resilient to major ++errors in the configured bandwidth, probably a the cost of coarser shaping. ++ ++Default kernels rely on coarse timing information for making decisions. These ++may make shaping precise in the long term, but inaccurate on second long scales. ++ ++See ++.BR tc-cbq-details(8) ++for hints on how to improve this. ++ ++.SH SOURCES ++.TP ++o ++Sally Floyd and Van Jacobson, "Link-sharing and Resource ++Management Models for Packet Networks", ++IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on Class-Based Queueing: Setting ++Parameters", 1996 ++ ++.TP ++o ++Sally Floyd and Michael Speer, "Experimental Results ++for Class-Based Queueing", 1998, not published. ++ ++ ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-htb.8 iproute2/debian/manpages/tc-htb.8 +--- iproute2-orig/debian/manpages/tc-htb.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-htb.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,150 @@ ++.TH HTB 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++HTB \- Hierarchy Token Bucket ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] htb [ default ++minor-id ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] htb rate ++rate ++.B [ ceil ++rate ++.B ] burst ++bytes ++.B [ cburst ++bytes ++.B ] [ prio ++priority ++.B ] ++ ++.SH DESCRIPTION ++HTB is meant as a more understandable and intuitive replacement for ++the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use ++of the outbound bandwidth on a given link. Both allow you to use one ++physical link to simulate several slower links and to send different ++kinds of traffic on different simulated links. In both cases, you have ++to specify how to divide the physical link into simulated links and ++how to decide which simulated link to use for a given packet to be sent. ++ ++Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm ++which does not depend on interface characteristics and so does not need to ++know the underlying bandwidth of the outgoing interface. ++ ++.SH SHAPING ALGORITHM ++Shaping works as documented in ++.B tc-tbf (8). ++ ++.SH CLASSIFICATION ++Within the one HRB instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, HTB starts at the root and uses various methods to ++determine which class should receive the data. ++ ++In the absence of uncommon configuration options, the process is rather easy. ++At each node we look for an instruction, and then go to the class the ++instruction refers us to. If the class found is a barren leaf-node (without ++children), we enqueue the packet there. If it is not yet a leaf node, we do ++the whole thing over again starting from that node. ++ ++The following actions are performed, in order at each node we visit, until one ++sends us to another node, or terminates the process. ++.TP ++(i) ++Consult filters attached to the class. If sent to a leafnode, we are done. ++Otherwise, restart. ++.TP ++(ii) ++If none of the above returned with an instruction, enqueue at this node. ++.P ++This algorithm makes sure that a packet always ends up somewhere, even while ++you are busy building your configuration. ++ ++.SH LINK SHARING ALGORITHM ++FIXME ++ ++.SH QDISC ++The root of a HTB qdisc class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the HTB instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the HTB can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional, but very useful if classes ++will be generated within this qdisc. ++.TP ++default minor-id ++Unclassified traffic gets sent to the class with this minor-id. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++prio priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++rate rate ++Maximum rate this class and all its children are guaranteed. Mandatory. ++ ++.TP ++ceil rate ++Maximum rate at which a class can send, if its parent has bandwidth to spare. ++Defaults to the configured rate, which implies no borrowing ++ ++.TP ++burst bytes ++Amount of bytes that can be burst at ++.B ceil ++speed, in excess of the configured ++.B rate. ++Should be at least as high as the highest burst of all children. ++ ++.TP ++cburst bytes ++Amount of bytes that can be burst at 'infinite' speed, in other words, as fast ++as the interface can transmit them. For perfect evening out, should be equal to at most one average ++packet. Should be at least as high as the highest cburst of all children. ++ ++.SH NOTES ++Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel, ++there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick. ++From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte ++burst as 100*12kb*8 equals 10mbit. ++ ++.SH SEE ALSO ++.BR tc (8) ++.P ++HTB website: http://luxik.cdi.cz/~devik/qos/htb/ ++.SH AUTHOR ++Martin Devera . This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-pbfifo.8 iproute2/debian/manpages/tc-pbfifo.8 +--- iproute2-orig/debian/manpages/tc-pbfifo.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-pbfifo.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,72 @@ ++.TH PBFIFO 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++pfifo \- Packet limited First In, First Out queue ++.P ++bfifo \- Byte limited First In, First Out queue ++ ++.SH SYNOPSIS ++.B tc qdisc ... add pfifo ++.B [ limit ++packets ++.B ] ++.P ++.B tc qdisc ... add bfifo ++.B [ limit ++bytes ++.B ] ++ ++.SH DESCRIPTION ++The pfifo and bfifo qdiscs are unadorned First In, First Out queues. They are the ++simplest queues possible and therefore have no overhead. ++.B pfifo ++constrains the queue size as measured in packets. ++.B bfifo ++does so as measured in bytes. ++ ++Like all non-default qdiscs, they maintain statistics. This might be a reason to prefer ++pfifo or bfifo over the default. ++ ++.SH ALGORITHM ++A list of packets is maintained, when a packet is enqueued it gets inserted at the tail of ++a list. When a packet needs to be sent out to the network, it is taken from the head of the list. ++ ++If the list is too long, no further packets are allowed on. This is called 'tail drop'. ++ ++.SH PARAMETERS ++.TP ++limit ++Maximum queue size. Specified in bytes for bfifo, in packets for pfifo. For pfifo, defaults ++to the interface txqueuelen, as specified with ++.BR ifconfig (8) ++or ++.BR ip (8). ++ ++For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. ++ ++.SH OUTPUT ++The output of ++.B tc -s qdisc ls ++contains the limit, either in packets or in bytes, and the number of bytes ++and packets actually sent. An unsent and dropped packet only appears between braces ++and is not counted as 'Sent'. ++ ++In this example, the queue length is 100 packets, 45894 bytes were sent over 681 packets. ++No packets were dropped, and as the pfifo queue does not slow down packets, there were also no ++overlimits: ++.P ++.nf ++# tc -s qdisc ls dev eth0 ++qdisc pfifo 8001: dev eth0 limit 100p ++ Sent 45894 bytes 681 pkts (dropped 0, overlimits 0) ++.fi ++ ++If a backlog occurs, this is displayed as well. ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, ++ ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-pfifo_fast.8 iproute2/debian/manpages/tc-pfifo_fast.8 +--- iproute2-orig/debian/manpages/tc-pfifo_fast.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-pfifo_fast.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,59 @@ ++.TH PFIFO_FAST 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++pfifo_fast \- three-band first in, first out queue ++ ++.SH DESCRIPTION ++pfifo_fast is the default qdisc of each interface. ++ ++Whenever an interface is created, the pfifo_fast qdisc is automatically used ++as a queue. If another qdisc is attached, it preempts the default ++pfifo_fast, which automatically returns to function when an existing qdisc ++is detached. ++ ++In this sense this qdisc is magic, and unlike other qdiscs. ++ ++.SH ALGORITHM ++The algorithm is very similar to that of the classful ++.BR tc-prio (8) ++qdisc. ++.B pfifo_fast ++is like three ++.BR tc-pfifo (8) ++queues side by side, where packets can be enqueued in any of the three bands ++based on their Type of Service bits or assigned priority. ++ ++Not all three bands are dequeued simultaneously - as long as lower bands ++have traffic, higher bands are never dequeued. This can be used to ++prioritize interactive traffic or penalize 'lowest cost' traffic. ++ ++Each band can be txqueuelen packets long, as configured with ++.BR ifconfig (8) ++or ++.BR ip (8). ++Additional packets coming in are not enqueued but are instead dropped. ++ ++See ++.BR tc-prio (8) ++for complete details on how TOS bits are translated into bands. ++.SH PARAMETERS ++.TP ++txqueuelen ++The length of the three bands depends on the interface txqueuelen, as ++specified with ++.BR ifconfig (8) ++or ++.BR ip (8). ++ ++.SH BUGS ++Does not maintain statistics and does not show up in tc qdisc ls. This is because ++it is the automatic default in the absence of a configured qdisc. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, ++ ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-prio.8 iproute2/debian/manpages/tc-prio.8 +--- iproute2-orig/debian/manpages/tc-prio.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-prio.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,187 @@ ++.TH PRIO 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++PRIO \- Priority qdisc ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] prio [ bands ++bands ++.B ] [ priomap ++band,band,band... ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++The PRIO qdisc is a simple classful queueing discipline that contains ++an arbitrary number of classes of differing priority. The classes are ++dequeued in numerical descending order of priority. PRIO is a scheduler ++and never delays packets - it is a work-conserving qdisc, though the qdiscs ++contained in the classes may not be. ++ ++Very useful for lowering latency when there is no need for slowing down ++traffic. ++ ++.SH ALGORITHM ++On creation with 'tc qdisc add', a fixed number of bands is created. Each ++band is a class, although is not possible to add classes with 'tc qdisc ++add', the number of bands to be created must instead be specified on the ++commandline attaching PRIO to its root. ++ ++When dequeueing, band 0 is tried first and only if it did not deliver a ++packet does PRIO try band 1, and so onwards. Maximum reliability packets ++should therefore go to band 0, minimum delay to band 1 and the rest to band ++2. ++ ++As the PRIO qdisc itself will have minor number 0, band 0 is actually ++major:1, band 1 is major:2, etc. For major, substitute the major number ++assigned to the qdisc on 'tc qdisc add' with the ++.B handle ++parameter. ++ ++.SH CLASSIFICATION ++Three methods are available to PRIO to determine in which band a packet will ++be enqueued. ++.TP ++From userspace ++A process with sufficient privileges can encode the destination class ++directly with SO_PRIORITY, see ++.BR tc(7). ++.TP ++with a tc filter ++A tc filter attached to the root qdisc can point traffic directly to a class ++.TP ++with the priomap ++Based on the packet priority, which in turn is derived from the Type of ++Service assigned to the packet. ++.P ++Only the priomap is specific to this qdisc. ++.SH QDISC PARAMETERS ++.TP ++bands ++Number of bands. If changed from the default of 3, ++.B priomap ++must be updated as well. ++.TP ++priomap ++The priomap maps the priority of ++a packet to a class. The priority can either be set directly from userspace, ++or be derived from the Type of Service of the packet. ++ ++Determines how packet priorities, as assigned by the kernel, map to ++bands. Mapping occurs based on the TOS octet of the packet, which looks like ++this: ++ ++.nf ++0 1 2 3 4 5 6 7 +++---+---+---+---+---+---+---+---+ ++| | | | ++|PRECEDENCE | TOS |MBZ| ++| | | | +++---+---+---+---+---+---+---+---+ ++.fi ++ ++The four TOS bits (the 'TOS field') are defined as: ++ ++.nf ++Binary Decimcal Meaning ++----------------------------------------- ++1000 8 Minimize delay (md) ++0100 4 Maximize throughput (mt) ++0010 2 Maximize reliability (mr) ++0001 1 Minimize monetary cost (mmc) ++0000 0 Normal Service ++.fi ++ ++As there is 1 bit to the right of these four bits, the actual value of the ++TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the ++value of the entire TOS field, not just the four bits. It is the value you ++see in the first column of this table: ++ ++.nf ++TOS Bits Means Linux Priority Band ++------------------------------------------------------------ ++0x0 0 Normal Service 0 Best Effort 1 ++0x2 1 Minimize Monetary Cost 1 Filler 2 ++0x4 2 Maximize Reliability 0 Best Effort 1 ++0x6 3 mmc+mr 0 Best Effort 1 ++0x8 4 Maximize Throughput 2 Bulk 2 ++0xa 5 mmc+mt 2 Bulk 2 ++0xc 6 mr+mt 2 Bulk 2 ++0xe 7 mmc+mr+mt 2 Bulk 2 ++0x10 8 Minimize Delay 6 Interactive 0 ++0x12 9 mmc+md 6 Interactive 0 ++0x14 10 mr+md 6 Interactive 0 ++0x16 11 mmc+mr+md 6 Interactive 0 ++0x18 12 mt+md 4 Int. Bulk 1 ++0x1a 13 mmc+mt+md 4 Int. Bulk 1 ++0x1c 14 mr+mt+md 4 Int. Bulk 1 ++0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 ++.fi ++ ++The second column contains the value of the relevant ++four TOS bits, followed by their translated meaning. For example, 15 stands ++for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum ++Throughput AND Minimum Delay. ++ ++The fourth column lists the way the Linux kernel interprets the TOS bits, by ++showing to which Priority they are mapped. ++ ++The last column shows the result of the default priomap. On the commandline, ++the default priomap looks like this: ++ ++ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 ++ ++This means that priority 4, for example, gets mapped to band number 1. ++The priomap also allows you to list higher priorities (> 7) which do not ++correspond to TOS mappings, but which are set by other means. ++ ++This table from RFC 1349 (read it for more details) explains how ++applications might very well set their TOS bits: ++ ++.nf ++TELNET 1000 (minimize delay) ++FTP ++ Control 1000 (minimize delay) ++ Data 0100 (maximize throughput) ++ ++TFTP 1000 (minimize delay) ++ ++SMTP ++ Command phase 1000 (minimize delay) ++ DATA phase 0100 (maximize throughput) ++ ++Domain Name Service ++ UDP Query 1000 (minimize delay) ++ TCP Query 0000 ++ Zone Transfer 0100 (maximize throughput) ++ ++NNTP 0001 (minimize monetary cost) ++ ++ICMP ++ Errors 0000 ++ Requests 0000 (mostly) ++ Responses (mostly) ++.fi ++ ++ ++.SH CLASSES ++PRIO classes cannot be configured further - they are automatically created ++when the PRIO qdisc is attached. Each class however can contain yet a ++further qdisc. ++ ++.SH BUGS ++Large amounts of traffic in the lower bands can cause starvation of higher ++bands. Can be prevented by attaching a shaper (for example, ++.BR tc-tbf(8) ++to these bands to make sure they cannot dominate the link. ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, , J Hadi Salim ++. This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-red.8 iproute2/debian/manpages/tc-red.8 +--- iproute2-orig/debian/manpages/tc-red.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-red.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,131 @@ ++.TH RED 8 "13 December 2001" "iproute2" "Linux" ++.SH NAME ++red \- Random Early Detection ++.SH SYNOPSIS ++.B tc qdisc ... red ++.B limit ++bytes ++.B min ++bytes ++.B max ++bytes ++.B avpkt ++bytes ++.B burst ++packets ++.B [ ecn ] [ bandwidth ++rate ++.B ] probability ++chance ++ ++.SH DESCRIPTION ++Random Early Detection is a classless qdisc which manages its queue size ++smartly. Regular queues simply drop packets from the tail when they are ++full, which may not be the optimal behaviour. RED also performs tail drop, ++but does so in a more gradual way. ++ ++Once the queue hits a certain average length, packets enqueued have a ++configurable chance of being marked (which may mean dropped). This chance ++increases linearly up to a point called the ++.B max ++average queue length, although the queue might get bigger. ++ ++This has a host of benefits over simple taildrop, while not being processor ++intensive. It prevents synchronous retransmits after a burst in traffic, ++which cause further retransmits, etc. ++ ++The goal is the have a small queue size, which is good for interactivity ++while not disturbing TCP/IP traffic with too many sudden drops after a burst ++of traffic. ++ ++Depending on if ECN is configured, marking either means dropping or ++purely marking a packet as overlimit. ++.SH ALGORITHM ++The average queue size is used for determining the marking ++probability. This is calculated using an Exponential Weighted Moving ++Average, which can be more or less sensitive to bursts. ++ ++When the average queue size is below ++.B min ++bytes, no packet will ever be marked. When it exceeds ++.B min, ++the probability of doing so climbs linearly up ++to ++.B probability, ++until the average queue size hits ++.B max ++bytes. Because ++.B probability ++is normally not set to 100%, the queue size might ++conceivably rise above ++.B max ++bytes, so the ++.B limit ++parameter is provided to set a hard maximum for the size of the queue. ++ ++.SH PARAMETERS ++.TP ++min ++Average queue size at which marking becomes a possibility. ++.TP ++max ++At this average queue size, the marking probability is maximal. Should be at ++least twice ++.B min ++to prevent synchronous retransmits, higher for low ++.B min. ++.TP ++probability ++Maximum probability for marking, specified as a floating point ++number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%, ++respectively). ++.TP ++limit ++Hard limit on the real (not average) queue size in bytes. Further packets ++are dropped. Should be set higher than max+burst. It is advised to set this ++a few times higher than ++.B max. ++.TP ++burst ++Used for determining how fast the average queue size is influenced by the ++real queue size. Larger values make the calculation more sluggish, allowing ++longer bursts of traffic before marking starts. Real life experiments ++support the following guideline: (min+min+max)/(3*avpkt). ++.TP ++avpkt ++Specified in bytes. Used with burst to determine the time constant for ++average queue size calculations. 1000 is a good value. ++.TP ++bandwidth ++This rate is used for calculating the average queue size after some ++idle time. Should be set to the bandwidth of your interface. Does not mean ++that RED will shape for you! Optional. ++.TP ++ecn ++As mentioned before, RED can either 'mark' or 'drop'. Explicit Congestion ++Notification allows RED to notify remote hosts that their rate exceeds the ++amount of bandwidth available. Non-ECN capable hosts can only be notified by ++dropping a packet. If this parameter is specified, packets which indicate ++that their hosts honor ECN will only be marked and not dropped, unless the ++queue size hits ++.B limit ++bytes. Needs a tc binary with RED support compiled in. Recommended. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH SOURCES ++.TP ++o ++Floyd, S., and Jacobson, V., Random Early Detection gateways for ++Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html ++.TP ++o ++Some changes to the algorithm by Alexey N. Kuznetsov. ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, , Alexey Makarenko ++, J Hadi Salim . ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-sfq.8 iproute2/debian/manpages/tc-sfq.8 +--- iproute2-orig/debian/manpages/tc-sfq.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-sfq.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,107 @@ ++.TH TC 8 "8 December 2001" "iproute2" "Linux" ++.SH NAME ++sfq \- Stochastic Fairness Queueing ++.SH SYNOPSIS ++.B tc qdisc ... perturb ++seconds ++.B quantum ++bytes ++ ++.SH DESCRIPTION ++ ++Stochastic Fairness Queueing is a classless queueing discipline available for ++traffic control with the ++.BR tc (8) ++command. ++ ++SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'. ++The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing ++any single flow from drowning out the rest. ++ ++This may in fact have some effect in mitigating a Denial of Service attempt. ++ ++SFQ is work-conserving and therefore always delivers a packet if it has one available. ++.SH ALGORITHM ++On enqueueing, each packet is assigned to a hash bucket, based on ++.TP ++(i) ++Source address ++.TP ++(ii) ++Destination address ++.TP ++(iii) ++Source port ++.P ++If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP. ++Packets with other protocols are hashed based on the 32bits representation of their ++destination and the socket they belong to. A flow corresponds mostly to a TCP/IP ++connection. ++ ++Each of these buckets should represent a unique flow. Because multiple flows may ++get hashed to the same bucket, the hashing algorithm is perturbed at configurable ++intervals so that the unfairness lasts only for a short while. Perturbation may ++however cause some inadvertent packet reordering to occur. ++ ++When dequeuing, each hashbucket with data is queried in a round robin fashion. ++ ++The compile time maximum length of the SFQ is 128 packets, which can be spread over ++at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed ++on the fullest bucket, thus maintaining fairness. ++ ++.SH PARAMETERS ++.TP ++perturb ++Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that ++no perturbation occurs. Do not set too low for each perturbation may cause some packet ++reordering. Advised value: 10 ++.TP ++quantum ++Amount of bytes a flow is allowed to dequeue during a round of the round robin process. ++Defaults to the MTU of the interface which is also the advised value and the minimum value. ++ ++.SH EXAMPLE & USAGE ++ ++To attach to device ppp0: ++.P ++# tc qdisc add dev ppp0 root sfq perturb 10 ++.P ++Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful ++if it owns the queue. ++This is the case when the link speed equals the actually available bandwidth. This holds ++for regular phone modems, ISDN connections and direct non-switched ethernet links. ++.P ++Most often, cable modems and DSL devices do not fall into this category. The same holds ++for when connected to a switch and trying to send data to a congested segment also ++connected to the switch. ++.P ++In this case, the effective queue does not reside within Linux and is therefore not ++available for scheduling. ++.P ++Embed SFQ in a classful qdisc to make sure it owns the queue. ++ ++.SH SOURCE ++.TP ++o ++Paul E. McKenney "Stochastic Fairness Queuing", ++IEEE INFOCOMM'90 Proceedings, San Francisco, 1990. ++ ++.TP ++o ++Paul E. McKenney "Stochastic Fairness Queuing", ++"Interworking: Research and Experience", v.2, 1991, p.113-131. ++ ++.TP ++o ++See also: ++M. Shreedhar and George Varghese "Efficient Fair ++Queuing using Deficit Round Robin", Proc. SIGCOMM 95. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc-tbf.8 iproute2/debian/manpages/tc-tbf.8 +--- iproute2-orig/debian/manpages/tc-tbf.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc-tbf.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,138 @@ ++.TH TC 8 "13 December 2001" "iproute2" "Linux" ++.SH NAME ++tbf \- Token Bucket Filter ++.SH SYNOPSIS ++.B tc qdisc ... tbf rate ++rate ++.B burst ++bytes/cell ++.B ( latency ++ms ++.B | limit ++bytes ++.B ) [ mpu ++bytes ++.B [ peakrate ++rate ++.B mtu ++bytes/cell ++.B ] ] ++.P ++burst is also known as buffer and maxburst. mtu is also known as minburst. ++.SH DESCRIPTION ++ ++The Token Bucket Filter is a classless queueing discipline available for ++traffic control with the ++.BR tc (8) ++command. ++ ++TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle ++itself, although packets are available, to ensure that the configured rate is not exceeded. ++On all platforms except for Alpha, ++it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, ++sending out data exactly at the configured rates. ++ ++Much higher rates are possible but at the cost of losing the minimal burstiness. In that ++case, data is on average dequeued at the configured rate but may be sent much faster at millisecond ++timescales. Because of further queues living in network adaptors, this is often not a problem. ++ ++Kernels with a higher 'HZ' can achieve higher rates with perfect burstiness. On Alpha, HZ is ten ++times higher, leading to a 10mbit/s limit to perfection. These calculations hold for packets of on ++average 1000 bytes. ++ ++.SH ALGORITHM ++As the name implies, traffic is filtered based on the expenditure of ++.B tokens. ++Tokens roughly correspond to bytes, with the additional constraint that each packet consumes ++some tokens, no matter how small it is. This reflects the fact that even a zero-sized packet occupies ++the link for some time. ++ ++On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst ++in one go. Tokens arrive at a steady rate, until the bucket is full. ++ ++If no tokens are available, packets are queued, up to a configured limit. The TBF now ++calculates the token deficit, and throttles until the first packet in the queue can be sent. ++ ++If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured ++to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF ++with a very small bucket, so that it doesn't burst. ++ ++To achieve perfection, the second bucket may contain only a single packet, which leads to ++the earlier mentioned 1mbit/s limit. ++ ++This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends ++on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 ++packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s. ++ ++.SH PARAMETERS ++See ++.BR tc (8) ++for how to specify the units of these values. ++.TP ++limit or latency ++Limit is the number of bytes that can be queued waiting for tokens to become ++available. You can also specify this the other way around by setting the ++latency parameter, which specifies the maximum amount of time a packet can ++sit in the TBF. The latter calculation takes into account the size of the ++bucket, the rate and possibly the peakrate (if set). These two parameters ++are mutually exclusive. ++.TP ++burst ++Also known as buffer or maxburst. ++Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. ++In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer ++if you want to reach your configured rate! ++ ++If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket. ++The minimum buffer size can be calculated by dividing the rate by HZ. ++ ++Token usage calculations are performed using a table which by default has a resolution of 8 packets. ++This resolution can be changed by specifying the ++.B cell ++size with the burst. For example, to specify a 6000 byte buffer with a 16 ++byte cell size, set a burst of 6000/16. You will probably never have to set ++this. Must be an integral power of 2. ++.TP ++mpu ++A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit ++determines the minimal token usage (specified in bytes) for a packet. Defaults to zero. ++.TP ++rate ++The speed knob. See remarks above about limits! See ++.BR tc (8) ++for units. ++.PP ++Furthermore, if a peakrate is desired, the following parameters are available: ++ ++.TP ++peakrate ++Maximum depletion rate of the bucket. Limited to 1mbit/s on Intel, 10mbit/s on Alpha. The peakrate does ++not need to be set, it is only necessary if perfect millisecond timescale shaping is required. ++ ++.TP ++mtu/minburst ++Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. ++If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst ++allows around 3mbit/s of peakrate, given 1000 byte packets. ++ ++Like the regular burstsize you can also specify a ++.B cell ++size. ++.SH EXAMPLE & USAGE ++ ++To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s, ++a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes ++at most 70ms of latency, with perfect peakrate behaviour, issue: ++.P ++# tc qdisc add dev eth0 root tbf rate 0.5mbit \\ ++ burst 5kb latency 70ms peakrate 1mbit \\ ++ minburst 1540 ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/manpages/tc.8 iproute2/debian/manpages/tc.8 +--- iproute2-orig/debian/manpages/tc.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/manpages/tc.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,348 @@ ++.TH TC 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++tc \- show / manipulate traffic control settings ++.SH SYNOPSIS ++.B tc qdisc [ add | change | replace | link ] dev ++DEV ++.B ++[ parent ++qdisc-id ++.B | root ] ++.B [ handle ++qdisc-id ] qdisc ++[ qdisc specific parameters ] ++.P ++ ++.B tc class [ add | change | replace ] dev ++DEV ++.B parent ++qdisc-id ++.B [ classid ++class-id ] qdisc ++[ qdisc specific parameters ] ++.P ++ ++.B tc filter [ add | change | replace ] dev ++DEV ++.B [ parent ++qdisc-id ++.B | root ] protocol ++protocol ++.B prio ++priority filtertype ++[ filtertype specific parameters ] ++.B flowid ++flow-id ++ ++.B tc [-s | -d ] qdisc show [ dev ++DEV ++.B ] ++.P ++.B tc [-s | -d ] class show dev ++DEV ++.P ++.B tc filter show dev ++DEV ++ ++.SH DESCRIPTION ++.B Tc ++is used to configure Traffic Control in the Linux kernel. Traffic Control consists ++of the following: ++ ++.TP ++SHAPING ++When traffic is shaped, its rate of transmission is under control. Shaping may ++be more than lowering the available bandwidth - it is also used to smooth out ++bursts in traffic for better network behaviour. Shaping occurs on egress. ++ ++.TP ++SCHEDULING ++By scheduling the transmission of packets it is possible to improve interactivity ++for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering ++is also called prioritizing, and happens only on egress. ++ ++.TP ++POLICING ++Where shaping deals with transmission of traffic, policing pertains to traffic ++arriving. Policing thus occurs on ingress. ++ ++.TP ++DROPPING ++Traffic exceeding a set bandwidth may also be dropped forthwith, both on ++ingress and on egress. ++ ++.P ++Processing of traffic is controlled by three kinds of objects: qdiscs, ++classes and filters. ++ ++.SH QDISCS ++.B qdisc ++is short for 'queueing discipline' and it is elementary to ++understanding traffic control. Whenever the kernel needs to send a ++packet to an interface, it is ++.B enqueued ++to the qdisc configured for that interface. Immediately afterwards, the kernel ++tries to get as many packets as possible from the qdisc, for giving them ++to the network adaptor driver. ++ ++A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure ++First In, First Out queue. It does however store traffic when the network interface ++can't handle it momentarily. ++ ++.SH CLASSES ++Some qdiscs can contain classes, which contain further qdiscs - traffic may ++then be enqueued in any of the inner qdiscs, which are within the ++.B classes. ++When the kernel tries to dequeue a packet from such a ++.B classful qdisc ++it can come from any of the classes. A qdisc may for example prioritize ++certain kinds of traffic by trying to dequeue from certain classes ++before others. ++ ++.SH FILTERS ++A ++.B filter ++is used by a classful qdisc to determine in which class a packet will ++be enqueued. Whenever traffic arrives at a class with subclasses, it needs ++to be classified. Various methods may be employed to do so, one of these ++are the filters. All filters attached to the class are called, until one of ++them returns with a verdict. If no verdict was made, other criteria may be ++available. This differs per qdisc. ++ ++It is important to notice that filters reside ++.B within ++qdiscs - they are not masters of what happens. ++ ++.SH CLASSLESS QDISCS ++The classless qdiscs are: ++.TP ++[p|b]fifo ++Simplest usable qdisc, pure First In, First Out behaviour. Limited in ++packets or in bytes. ++.TP ++pfifo_fast ++Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band ++queue which honors Type of Service flags, as well as the priority that may be ++assigned to a packet. ++.TP ++red ++Random Early Detection simulates physical congestion by randomly dropping ++packets when nearing configured bandwidth allocation. Well suited to very ++large bandwidth applications. ++.TP ++sfq ++Stochastic Fairness Queueing reorders queued traffic so each 'session' ++gets to send a packet in turn. ++.TP ++tbf ++The Token Bucket Filter is suited for slowing traffic down to a precisely ++configured rate. Scales well to large bandwidths. ++.SH CONFIGURING CLASSLESS QDISCS ++In the absence of classful qdiscs, classless qdiscs can only be attached at ++the root of a device. Full syntax: ++.P ++.B tc qdisc add dev ++DEV ++.B root ++QDISC QDISC-PARAMETERS ++ ++To remove, issue ++.P ++.B tc qdisc del dev ++DEV ++.B root ++ ++The ++.B pfifo_fast ++qdisc is the automatic default in the absence of a configured qdisc. ++ ++.SH CLASSFUL QDISCS ++The classful qdiscs are: ++.TP ++CBQ ++Class Based Queueing implements a rich linksharing hierarchy of classes. ++It contains shaping elements as well as prioritizing capabilities. Shaping is ++performed using link idle time calculations based on average packet size and ++underlying link bandwidth. The latter may be ill-defined for some interfaces. ++.TP ++HTB ++The Hierarchy Token Bucket implements a rich linksharing hierarchy of ++classes with an emphasis on conforming to existing practices. HTB facilitates ++guaranteeing bandwidth to classes, while also allowing specification of upper ++limits to inter-class sharing. It contains shaping elements, based on TBF and ++can prioritize classes. ++.TP ++PRIO ++The PRIO qdisc is a non-shaping container for a configurable number of ++classes which are dequeued in order. This allows for easy prioritization ++of traffic, where lower classes are only able to send if higher ones have ++no packets available. To facilitate configuration, Type Of Service bits are ++honored by default. ++.SH THEORY OF OPERATION ++Classes form a tree, where each class has a single parent. ++A class may have multiple children. Some qdiscs allow for runtime addition ++of classes (CBQ, HTB) while others (PRIO) are created with a static number of ++children. ++ ++Qdiscs which allow dynamic addition of classes can have zero or more ++subclasses to which traffic may be enqueued. ++ ++Furthermore, each class contains a ++.B leaf qdisc ++which by default has ++.B pfifo ++behaviour though another qdisc can be attached in place. This qdisc may again ++contain classes, but each class can have only one leaf qdisc. ++ ++When a packet enters a classful qdisc it can be ++.B classified ++to one of the classes within. Three criteria are available, although not all ++qdiscs will use all three: ++.TP ++tc filters ++If tc filters are attached to a class, they are consulted first ++for relevant instructions. Filters can match on all fields of a packet header, ++as well as on the firewall mark applied by ipchains or iptables. See ++.BR tc-filters (8). ++.TP ++Type of Service ++Some qdiscs have built in rules for classifying packets based on the TOS field. ++.TP ++skb->priority ++Userspace programs can encode a class-id in the 'skb->priority' field using ++the SO_PRIORITY option. ++.P ++Each node within the tree can have its own filters but higher level filters ++may also point directly to lower classes. ++ ++If classification did not succeed, packets are enqueued to the leaf qdisc ++attached to that class. Check qdisc specific manpages for details, however. ++ ++.SH NAMING ++All qdiscs, classes and filters have IDs, which can either be specified ++or be automatically assigned. ++ ++IDs consist of a major number and a minor number, separated by a colon. ++ ++.TP ++QDISCS ++A qdisc, which potentially can have children, ++gets assigned a major number, called a 'handle', leaving the minor ++number namespace available for classes. The handle is expressed as '10:'. ++It is customary to explicitly assign a handle to qdiscs expected to have ++children. ++ ++.TP ++CLASSES ++Classes residing under a qdisc share their qdisc major number, but each have ++a separate minor number called a 'classid' that has no relation to their ++parent classes, only to their parent qdisc. The same naming custom as for ++qdiscs applies. ++ ++.TP ++FILTERS ++Filters have a three part ID, which is only needed when using a hashed ++filter hierarchy, for which see ++.BR tc-filters (8). ++.SH UNITS ++All parameters accept a floating point number, possibly followed by a unit. ++.P ++Bandwidths or rates can be specified in: ++.TP ++kbps ++Kilobytes per second ++.TP ++mbps ++Megabytes per second ++.TP ++kbit ++Kilobits per second ++.TP ++mbit ++Megabits per second ++.TP ++bps or a bare number ++Bytes per second ++.P ++Amounts of data can be specified in: ++.TP ++kb or k ++Kilobytes ++.TP ++mb or m ++Megabytes ++.TP ++mbit ++Megabits ++.TP ++kbit ++Kilobits ++.TP ++b or a bare number ++Bytes. ++.P ++Lengths of time can be specified in: ++.TP ++s, sec or secs ++Whole seconds ++.TP ++ms, msec or msecs ++Milliseconds ++.TP ++us, usec, usecs or a bare number ++Microseconds. ++ ++.SH TC COMMANDS ++The following commands are available for qdiscs, classes and filter: ++.TP ++add ++Add a qdisc, class or filter to a node. For all entities, a ++.B parent ++must be passed, either by passing its ID or by attaching directly to the root of a device. ++When creating a qdisc or a filter, it can be named with the ++.B handle ++parameter. A class is named with the ++.B classid ++parameter. ++ ++.TP ++remove ++A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs ++are automatically deleted, as well as any filters attached to them. ++ ++.TP ++change ++Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception ++that the handle cannot be changed and neither can the parent. In other words, ++.B ++change ++cannot move a node. ++ ++.TP ++replace ++Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet ++it is created. ++ ++.TP ++link ++Only available for qdiscs and performs a replace where the node ++must exist already. ++ ++ ++.SH HISTORY ++.B tc ++was written by Alexey N. Kuznetsov and added in Linux 2.2. ++.SH SEE ALSO ++.BR tc-cbq (8), ++.BR tc-htb (8), ++.BR tc-sfq (8), ++.BR tc-red (8), ++.BR tc-tbf (8), ++.BR tc-pfifo (8), ++.BR tc-bfifo (8), ++.BR tc-pfifo_fast (8), ++.BR tc-filters (8) ++ ++.SH AUTHOR ++Manpage maintained by bert hubert (ahu@ds9a.nl) ++ +diff -Naur iproute2-orig/debian/postinst iproute2/debian/postinst +--- iproute2-orig/debian/postinst 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/postinst 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,6 @@ ++#!/bin/sh -e ++ ++# FHS: ++if [ "$1" = "configure" -a -d /usr/doc -a ! -e /usr/doc/iproute ]; then ++ ln -sf ../share/doc/iproute /usr/doc/iproute ++fi +diff -Naur iproute2-orig/debian/postrm iproute2/debian/postrm +--- iproute2-orig/debian/postrm 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/postrm 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,6 @@ ++#!/bin/sh ++ ++if [ "$1" = "purge" ] ++then ++ rm -rf /etc/iproute2 ++fi +diff -Naur iproute2-orig/debian/prerm iproute2/debian/prerm +--- iproute2-orig/debian/prerm 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/prerm 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,5 @@ ++#!/bin/sh -e ++ ++if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/iproute ]; then ++ rm -f /usr/doc/iproute ++fi +diff -Naur iproute2-orig/debian/rules iproute2/debian/rules +--- iproute2-orig/debian/rules 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/rules 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,85 @@ ++#!/usr/bin/make -f ++# ++# Copyright (C) 1999 Roberto Lumbreras ++# Copyright (C) 1999-2002 Juan Cespedes ++# Copying: GPL ++ ++SHELL = bash ++ ++PACKAGE = $(shell perl -e 'print <> =~ /^(.*) \(.*\)/' debian/changelog) ++PKG_VER = $(shell perl -e 'print <> =~ /\((.*)\)/' debian/changelog) ++PKG_UPVER= $(shell perl -e 'print <> =~ /\((.*)-[^-]*\)/' debian/changelog) ++ ++BINS = ip/ip ++SBINS = ip/rtmon ip/rtacct tc/tc ++SHBINS = ip/routef ip/routel # ip/ifcfg ip/rtpr ++DOCS = README* doc/Plan debian/README.Debian ++MAN8 = debian/manpages/*.8 ++MANLINKS= rtmon rtacct routef routel ++TEXDOCS = ip-cref ip-tunnels api-ip6-flowlabels ++ ++build: stamp-build ++ ++stamp-build: ++ test -f include-glibc/netinet/in.h.orig || \ ++ mv include-glibc/netinet/in.h \ ++ include-glibc/netinet/in.h.orig ++ $(MAKE) KERNEL_INCLUDE=/usr/include ++ $(MAKE) -C doc ++ touch stamp-build ++ ++binary: binary-indep binary-arch ++ ++binary-indep: ++ ++binary-arch: checkroot stamp-build ++ $(RM) -r debian/tmp ++ install -d -m0755 debian/tmp/{DEBIAN,bin,sbin,usr/{bin,share/doc/$(PACKAGE),share/man/man{7,8}}} ++ install -s -m0755 $(BINS) debian/tmp/bin/ ++ install -s -m0755 $(SBINS) debian/tmp/sbin/ ++ ln -s /bin/ip debian/tmp/sbin/ip ++ install -m0755 $(SHBINS) debian/tmp/usr/bin/ ++ cp -p $(DOCS) debian/tmp/usr/share/doc/$(PACKAGE)/ ++ cp -rp examples debian/tmp/usr/share/doc/$(PACKAGE)/ ++ find debian/tmp/usr/share/doc/$(PACKAGE)/examples -type f -exec chmod -x {} \; ++ install -m0644 debian/changelog debian/tmp/usr/share/doc/$(PACKAGE)/changelog.Debian ++ cp -p RELNOTES debian/tmp/usr/share/doc/$(PACKAGE)/changelog ++ for i in $(TEXDOCS); do \ ++ install -m0644 doc/$$i.tex debian/tmp/usr/share/doc/$(PACKAGE)/; \ ++ install -m0644 doc/$$i.dvi debian/tmp/usr/share/doc/$(PACKAGE)/; \ ++ install -m0644 doc/$$i.ps debian/tmp/usr/share/doc/$(PACKAGE)/; \ ++ done ++ install -m0644 $(MAN8) debian/tmp/usr/share/man/man8/ ++ gzip -9fr debian/tmp/usr/share || true ++ ln -s tc-pbfifo.8.gz debian/tmp/usr/share/man/man8/tc-pfifo.8.gz ++ ln -s tc-pbfifo.8.gz debian/tmp/usr/share/man/man8/tc-bfifo.8.gz ++ for i in $(MANLINKS); do \ ++ ln -s ../man7/undocumented.7.gz debian/tmp/usr/share/man/man8/$$i.8.gz; \ ++ done ++ cp -p debian/copyright debian/tmp/usr/share/doc/$(PACKAGE)/ ++ cp -rp etc debian/tmp/ ++ install -m0644 debian/conffiles debian/tmp/DEBIAN/ ++ ++ dpkg-shlibdeps $(BINS) $(SBINS) ++ dpkg-gencontrol -isp ++ chown -R root.root debian/tmp ++ chmod -R u=rwX,go=rX debian/tmp ++ dpkg --build debian/tmp .. ++ ++checkdir: ++ @test -f debian/rules ++ ++checkroot: checkdir ++ @test 0 = `id -u` || { echo "Error: not super-user"; exit 1; } ++ ++clean: checkdir debian/control ++ $(RM) stamp-build debian/files debian/substvars ++ $(MAKE) clean ++ $(MAKE) -C doc clean ++ $(RM) `find . -name "*~" -o -name core` ++ $(RM) -r debian/tmp ++ test -f include-glibc/netinet/in.h.orig && \ ++ mv include-glibc/netinet/in.h.orig \ ++ include-glibc/netinet/in.h || true ++ ++.PHONY: build binary binary-arch binary-indep checkdir checkroot clean +diff -Naur iproute2-orig/debian/tc-cbq.8 iproute2/debian/tc-cbq.8 +--- iproute2-orig/debian/tc-cbq.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-cbq.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,353 @@ ++.TH CBQ 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++CBQ \- Class Based Queueing ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] cbq [ allot ++bytes ++.B ] avpkt ++bytes ++.B bandwidth ++rate ++.B [ cell ++bytes ++.B ] [ ewma ++log ++.B ] [ mpu ++bytes ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] cbq allot ++bytes ++.B [ bandwidth ++rate ++.B ] [ rate ++rate ++.B ] prio ++priority ++.B [ weight ++weight ++.B ] [ minburst ++packets ++.B ] [ maxburst ++packets ++.B ] [ ewma ++log ++.B ] [ cell ++bytes ++.B ] avpkt ++bytes ++.B [ mpu ++bytes ++.B ] [ bounded isolated ] [ split ++handle ++.B & defmap ++defmap ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++Class Based Queueing is a classful qdisc that implements a rich ++linksharing hierarchy of classes. It contains shaping elements as ++well as prioritizing capabilities. Shaping is performed using link ++idle time calculations based on the timing of dequeue events and ++underlying link bandwidth. ++ ++.SH SHAPING ALGORITHM ++When shaping a 10mbit/s connection to 1mbit/s, the link will ++be idle 90% of the time. If it isn't, it needs to be throttled so that it ++IS idle 90% of the time. ++ ++During operations, the effective idletime is measured using an ++exponential weighted moving average (EWMA), which considers recent ++packets to be exponentially more important than past ones. The Unix ++loadaverage is calculated in the same way. ++ ++The calculated idle time is subtracted from the EWMA measured one, ++the resulting number is called 'avgidle'. A perfectly loaded link has ++an avgidle of zero: packets arrive exactly at the calculated ++interval. ++ ++An overloaded link has a negative avgidle and if it gets too negative, ++CBQ throttles and is then 'overlimit'. ++ ++Conversely, an idle link might amass a huge avgidle, which would then ++allow infinite bandwidths after a few hours of silence. To prevent ++this, avgidle is capped at ++.B maxidle. ++ ++If overlimit, in theory, the CBQ could throttle itself for exactly the ++amount of time that was calculated to pass between packets, and then ++pass one packet, and throttle again. Due to timer resolution constraints, ++this may not be feasible, see the ++.B minburst ++parameter below. ++ ++.SH CLASSIFICATION ++Within the one CBQ instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, CBQ starts at the root and uses various methods to ++determine which class should receive the data. ++ ++In the absence of uncommon configuration options, the process is rather easy. ++At each node we look for an instruction, and then go to the class the ++instruction refers us to. If the class found is a barren leaf-node (without ++children), we enqueue the packet there. If it is not yet a leaf node, we do ++the whole thing over again starting from that node. ++ ++The following actions are performed, in order at each node we visit, until one ++sends us to another node, or terminates the process. ++.TP ++(i) ++Consult filters attached to the class. If sent to a leafnode, we are done. ++Otherwise, restart. ++.TP ++(ii) ++Consult the defmap for the priority assigned to this packet, which depends ++on the TOS bits. Check if the referral is leafless, otherwise restart. ++.TP ++(iii) ++Ask the defmap for instructions for the 'best effort' priority. Check the ++answer for leafness, otherwise restart. ++.TP ++(iv) ++If none of the above returned with an instruction, enqueue at this node. ++.P ++This algorithm makes sure that a packet always ends up somewhere, even while ++you are busy building your configuration. ++ ++For more details, see ++.BR tc-cbq-details(8). ++ ++.SH LINK SHARING ALGORITHM ++When dequeuing for sending to the network device, CBQ decides which of its ++classes will be allowed to send. It does so with a Weighted Round Robin process ++in which each class with packets gets a chance to send in turn. The WRR process ++starts by asking the highest priority classes (lowest numerically - ++highest semantically) for packets, and will continue to do so until they ++have no more data to offer, in which case the process repeats for lower ++priorities. ++ ++Classes by default borrow bandwidth from their siblings. A class can be ++prevented from doing so by declaring it 'bounded'. A class can also indicate ++its unwillingness to lend out bandwidth by being 'isolated'. ++ ++.SH QDISC ++The root of a CBQ qdisc class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the CBQ instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the CBQ can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional, but very useful if classes ++will be generated within this qdisc. ++.TP ++allot bytes ++This allotment is the 'chunkiness' of link sharing and is used for determining packet ++transmission time tables. The qdisc allot differs slightly from the class allot discussed ++below. Optional. Defaults to a reasonable value, related to avpkt. ++.TP ++avpkt bytes ++The average size of a packet is needed for calculating maxidle, and is also used ++for making sure 'allot' has a safe value. Mandatory. ++.TP ++bandwidth rate ++To determine the idle time, CBQ must know the bandwidth of your underlying ++physical interface, or parent qdisc. This is a vital parameter, more about it ++later. Mandatory. ++.TP ++cell ++The cell size determines he granularity of packet transmission time calculations. Has a sensible default. ++.TP ++mpu ++A zero sized packet may still take time to transmit. This value is the lower ++cap for packet transmission time calculations - packets smaller than this value ++are still deemed to have this size. Defaults to zero. ++.TP ++ewma log ++When CBQ needs to measure the average idle time, it does so using an ++Exponentially Weighted Moving Average which smoothes out measurements into ++a moving average. The EWMA LOG determines how much smoothing occurs. Lower ++values imply greater sensitivity. Must be between 0 and 31. Defaults ++to 5. ++.P ++A CBQ qdisc does not shape out of its own accord. It only needs to know certain ++parameters about the underlying link. Actual shaping is done in classes. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++weight weight ++When dequeuing to the interface, classes are tried for traffic in a ++round-robin fashion. Classes with a higher configured qdisc will generally ++have more traffic to offer during each round, so it makes sense to allow ++it to dequeue more traffic. All weights under a class are normalized, so ++only the ratios matter. Defaults to the configured rate, unless the priority ++of this class is maximal, in which case it is set to 1. ++.TP ++allot bytes ++Allot specifies how many bytes a qdisc can dequeue ++during each round of the process. This parameter is weighted using the ++renormalized class weight described above. Silently capped at a minimum of ++3/2 avpkt. Mandatory. ++ ++.TP ++prio priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++avpkt ++See the QDISC section. ++ ++.TP ++rate rate ++Maximum rate this class and all its children combined can send at. Mandatory. ++ ++.TP ++bandwidth rate ++This is different from the bandwidth specified when creating a CBQ disc! Only ++used to determine maxidle and offtime, which are only calculated when ++specifying maxburst or minburst. Mandatory if specifying maxburst or minburst. ++ ++.TP ++maxburst ++This number of packets is used to calculate maxidle so that when ++avgidle is at maxidle, this number of average packets can be burst ++before avgidle drops to 0. Set it higher to be more tolerant of ++bursts. You can't set maxidle directly, only via this parameter. ++ ++.TP ++minburst ++As mentioned before, CBQ needs to throttle in case of ++overlimit. The ideal solution is to do so for exactly the calculated ++idle time, and pass 1 packet. However, Unix kernels generally have a ++hard time scheduling events shorter than 10ms, so it is better to ++throttle for a longer period, and then pass minburst packets in one ++go, and then sleep minburst times longer. ++ ++The time to wait is called the offtime. Higher values of minburst lead ++to more accurate shaping in the long term, but to bigger bursts at ++millisecond timescales. Optional. ++ ++.TP ++minidle ++If avgidle is below 0, we are overlimits and need to wait until ++avgidle will be big enough to send one packet. To prevent a sudden ++burst from shutting down the link for a prolonged period of time, ++avgidle is reset to minidle if it gets too low. ++ ++Minidle is specified in negative microseconds, so 10 means that ++avgidle is capped at -10us. Optional. ++ ++.TP ++bounded ++Signifies that this class will not borrow bandwidth from its siblings. ++.TP ++isolated ++Means that this class will not borrow bandwidth to its siblings ++ ++.TP ++split major:minor & defmap bitmap[/bitmap] ++If consulting filters attached to a class did not give a verdict, ++CBQ can also classify based on the packet's priority. There are 16 ++priorities available, numbered from 0 to 15. ++ ++The defmap specifies which priorities this class wants to receive, ++specified as a bitmap. The Least Significant Bit corresponds to priority ++zero. The ++.B split ++parameter tells CBQ at which class the decision must be made, which should ++be a (grand)parent of the class you are adding. ++ ++As an example, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' ++configures class 10:0 to send packets with priorities 6 and 7 to 10:1. ++ ++The complimentary configuration would then ++be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' ++Which would send all packets 0, 1, 2, 3, 4 and 5 to 10:1. ++.TP ++estimator interval timeconstant ++CBQ can measure how much bandwidth each class is using, which tc filters ++can use to classify packets with. In order to determine the bandwidth ++it uses a very simple estimator that measures once every ++.B interval ++microseconds how much traffic has passed. This again is a EWMA, for which ++the time constant can be specified, also in microseconds. The ++.B time constant ++corresponds to the sluggishness of the measurement or, conversely, to the ++sensitivity of the average to short bursts. Higher values mean less ++sensitivity. ++ ++.SH BUGS ++The actual bandwidth of the underlying link may not be known, for example ++in the case of PPoE or PPTP connections which in fact may send over a ++pipe, instead of over a physical device. CBQ is quite resilient to major ++errors in the configured bandwidth, probably a the cost of coarser shaping. ++ ++Default kernels rely on coarse timing information for making decisions. These ++may make shaping precise in the long term, but inaccurate on second long scales. ++ ++See ++.BR tc-cbq-details(8) ++for hints on how to improve this. ++ ++.SH SOURCES ++.TP ++o ++Sally Floyd and Van Jacobson, "Link-sharing and Resource ++Management Models for Packet Networks", ++IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995 ++ ++.TP ++o ++Sally Floyd, "Notes on Class-Based Queueing: Setting ++Parameters", 1996 ++ ++.TP ++o ++Sally Floyd and Michael Speer, "Experimental Results ++for Class-Based Queueing", 1998, not published. ++ ++ ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-htb.8 iproute2/debian/tc-htb.8 +--- iproute2-orig/debian/tc-htb.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-htb.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,153 @@ ++.TH HTB 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++HTB \- Hierarchy Token Bucket ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] htb [ default ++minor-id ++.B ] ++ ++.B tc class ... dev ++dev ++.B parent ++major:[minor] ++.B [ classid ++major:minor ++.B ] htb rate ++rate ++.B [ ceil ++rate ++.B ] burst ++bytes ++.B [ cburst ++bytes ++.B ] [ prio ++priority ++.B ] ++ ++.SH DESCRIPTION ++HTB is meant as a more understandable and intuitive replacement for ++the CBQ qdisc in Linux. Both CBQ and HTB help you to control the use ++of the outbound bandwidth on a given link. Both allow you to use one ++physical link to simulate several slower links and to send different ++kinds of traffic on different simulated links. In both cases, you have ++to specify how to divide the physical link into simulated links and ++how to decide which simulated link to use for a given packet to be sent. ++ ++Unlike CBQ, HTB shapes traffic based on the Token Bucket Filter algorithm ++which does not depend on interface characteristics and so does not need to ++know the underlying bandwidth of the outgoing interface. ++ ++.SH SHAPING ALGORITHM ++Shaping works as documented in ++.B tc-tbf (8). ++ ++.SH CLASSIFICATION ++Within the one HRB instance many classes may exist. Each of these classes ++contains another qdisc, by default ++.BR tc-pfifo (8). ++ ++When enqueueing a packet, HTB starts at the root and uses various methods to ++determine which class should receive the data. ++ ++In the absence of uncommon configuration options, the process is rather easy. ++At each node we look for an instruction, and then go to the class the ++instruction refers us to. If the class found is a barren leaf-node (without ++children), we enqueue the packet there. If it is not yet a leaf node, we do ++the whole thing over again starting from that node. ++ ++The following actions are performed, in order at each node we visit, until one ++sends us to another node, or terminates the process. ++.TP ++(i) ++Consult filters attached to the class. If sent to a leafnode, we are done. ++Otherwise, restart. ++.TP ++(ii) ++If none of the above returned with an instruction, enqueue at this node. ++.P ++This algorithm makes sure that a packet always ends up somewhere, even while ++you are busy building your configuration. ++ ++.SH LINK SHARING ALGORITHM ++FIXME ++ ++.SH QDISC ++The root of a CBQ qdisc class tree has the following parameters: ++ ++.TP ++parent major:minor | root ++This mandatory parameter determines the place of the CBQ instance, either at the ++.B root ++of an interface or within an existing class. ++.TP ++handle major: ++Like all other qdiscs, the CBQ can be assigned a handle. Should consist only ++of a major number, followed by a colon. Optional, but very useful if classes ++will be generated within this qdisc. ++.TP ++default minor-id ++Unclassified traffic gets sent to the class with this minor-id. ++ ++.SH CLASSES ++Classes have a host of parameters to configure their operation. ++ ++.TP ++parent major:minor ++Place of this class within the hierarchy. If attached directly to a qdisc ++and not to another class, minor can be omitted. Mandatory. ++.TP ++classid major:minor ++Like qdiscs, classes can be named. The major number must be equal to the ++major number of the qdisc to which it belongs. Optional, but needed if this ++class is going to have children. ++.TP ++prio priority ++In the round-robin process, classes with the lowest priority field are tried ++for packets first. Mandatory. ++ ++.TP ++rate rate ++Maximum rate this class and all its children are guaranteed. Mandatory. ++ ++.TP ++ceil rate ++Maximum rate at which a class can send, if its parent has bandwidth to spare. ++Defaults to the configured rate, which implies no borrowing ++ ++.TP ++burst bytes ++Amount of bytes that can be burst at ++.B ceil ++speed, in excess of the configured ++.B rate. ++Should be at least as high as the highest burst of all children. ++ ++.TP ++cburst bytes ++Amount of bytes that can be burst at 'infinite' speed, in other words, as fast ++as the interface can transmit them. For perfect evening out, should be equal to at most one average ++packet. Should be at least as high as the highest cburst of all children. ++ ++.SH NOTES ++Due to Unix timing constraints, the maximum ceil rate is not infinite and may in fact be quite low. On Intel, ++there are 100 timer events per second, the maximum rate is that rate at which 'burst' bytes are sent each timer tick. ++From this, the mininum burst size for a specified rate can be calculated. For i386, a 10mbit rate requires a 12 kilobyte ++burst as 100*12kb*8 equals 10mbit. ++ ++.SH BUGS ++Not in the stock kernel yet. ++ ++.SH SEE ALSO ++.BR tc (8) ++.P ++HTB website: http://luxik.cdi.cz/~devik/qos/htb/ ++.SH AUTHOR ++Martin Devera . This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-pbfifo.8 iproute2/debian/tc-pbfifo.8 +--- iproute2-orig/debian/tc-pbfifo.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-pbfifo.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,72 @@ ++.TH PBFIFO 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++pfifo \- Packet limited First In, First Out queue ++.P ++bfifo \- Byte limited First In, First Out queue ++ ++.SH SYNOPSIS ++.B tc qdisc ... add pfifo ++.B [ limit ++packets ++.B ] ++.P ++.B tc qdisc ... add bfifo ++.B [ limit ++bytes ++.B ] ++ ++.SH DESCRIPTION ++The pfifo and bfifo qdiscs are unadorned First In, First Out queues. They are the ++simplest queues possible and therefore have no overhead. ++.B pfifo ++constrains the queue size as measured in packets. ++.B bfifo ++does so as measured in bytes. ++ ++Like all non-default qdiscs, they maintain statistics. This might be a reason to prefer ++pfifo or bfifo over the default. ++ ++.SH ALGORITHM ++A list of packets is maintained, when a packet is enqueued it gets inserted at the tail of ++a list. When a packet needs to be sent out to the network, it is taken from the head of the list. ++ ++If the list is too long, no further packets are allowed on. This is called 'tail drop'. ++ ++.SH PARAMETERS ++.TP ++limit ++Maximum queue size. Specified in bytes for bfifo, in packets for pfifo. For pfifo, defaults ++to the interface txqueuelen, as specified with ++.BR ifconfig (8) ++or ++.BR ip (8). ++ ++For bfifo, it defaults to the txqueuelen multiplied by the interface MTU. ++ ++.SH OUTPUT ++The output of ++.B tc -s qdisc ls ++contains the limit, either in packets or in bytes, and the number of bytes ++and packets actually sent. An unsent and dropped packet only appears between braces ++and is not counted as 'Sent'. ++ ++In this example, the queue length is 100 packets, 45894 bytes were sent over 681 packets. ++No packets were dropped, and as the pfifo queue does not slow down packets, there were also no ++overlimits: ++.P ++.nf ++# tc -s qdisc ls dev eth0 ++qdisc pfifo 8001: dev eth0 limit 100p ++ Sent 45894 bytes 681 pkts (dropped 0, overlimits 0) ++.fi ++ ++If a backlog occurs, this is displayed as well. ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, ++ ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-pfifo_fast.8 iproute2/debian/tc-pfifo_fast.8 +--- iproute2-orig/debian/tc-pfifo_fast.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-pfifo_fast.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,59 @@ ++.TH PFIFO_FAST 8 "10 January 2002" "iproute2" "Linux" ++.SH NAME ++pfifo_fast \- three-band first in, first out queue ++ ++.SH DESCRIPTION ++pfifo_fast is the default qdisc of each interface. ++ ++Whenever an interface is created, the pfifo_fast qdisc is automatically used ++as a queue. If another qdisc is attached, it preempts the default ++pfifo_fast, which automatically returns to function when an existing qdisc ++is detached. ++ ++In this sense this qdisc is magic, and unlike other qdiscs. ++ ++.SH ALGORITHM ++The algorithm is very similar to that of the classful ++.BR tc-prio (8) ++qdisc. ++.B pfifo_fast ++is like three ++.BR tc-pfifo (8) ++queues side by side, where packets can be enqueued in any of the three bands ++based on their Type of Service bits or assigned priority. ++ ++Not all three bands are dequeued simultaneously - as long as lower bands ++have traffic, higher bands are never dequeued. This can be used to ++prioritize interactive traffic or penalize 'lowest cost' traffic. ++ ++Each band can be txqueuelen packets long, as configured with ++.BR ifconfig (8) ++or ++.BR ip (8). ++Additional packets coming in are not enqueued but are instead dropped. ++ ++See ++.BR tc-prio (8) ++for complete details on how TOS bits are translated into bands. ++.SH PARAMETERS ++.TP ++txqueuelen ++The length of the three bands depends on the interface txqueuelen, as ++specified with ++.BR ifconfig (8) ++or ++.BR ip (8). ++ ++.SH BUGS ++Does not maintain statistics and does not show up in tc qdisc ls. This is because ++it is the automatic default in the absence of a configured qdisc. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, ++ ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-prio.8 iproute2/debian/tc-prio.8 +--- iproute2-orig/debian/tc-prio.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-prio.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,187 @@ ++.TH PRIO 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++PRIO \- Priority qdisc ++.SH SYNOPSIS ++.B tc qdisc ... dev ++dev ++.B ( parent ++classid ++.B | root) [ handle ++major: ++.B ] prio [ bands ++bands ++.B ] [ priomap ++band,band,band... ++.B ] [ estimator ++interval timeconstant ++.B ] ++ ++.SH DESCRIPTION ++The PRIO qdisc is a simple classful queueing discipline that contains ++an arbitrary number of classes of differing priority. The classes are ++dequeued in numerical descending order of priority. PRIO is a scheduler ++and never delays packets - it is a work-conserving qdisc, though the qdiscs ++contained in the classes may not be. ++ ++Very useful for lowering latency when there is no need for slowing down ++traffic. ++ ++.SH ALGORITHM ++On creation with 'tc qdisc add', a fixed number of bands is created. Each ++band is a class, although is not possible to add classes with 'tc qdisc ++add', the number of bands to be created must instead be specified on the ++commandline attaching PRIO to its root. ++ ++When dequeueing, band 0 is tried first and only if it did not deliver a ++packet does PRIO try band 1, and so onwards. Maximum reliability packets ++should therefore go to band 0, minimum delay to band 1 and the rest to band ++2. ++ ++As the PRIO qdisc itself will have minor number 0, band 0 is actually ++major:1, band 1 is major:2, etc. For major, substitute the major number ++assigned to the qdisc on 'tc qdisc add' with the ++.B handle ++parameter. ++ ++.SH CLASSIFICATION ++Three methods are available to PRIO to determine in which band a packet will ++be enqueued. ++.TP ++From userspace ++A process with sufficient privileges can encode the destination class ++directly with SO_PRIORITY, see ++.BR tc(7). ++.TP ++with a tc filter ++A tc filter attached to the root qdisc can point traffic directly to a class ++.TP ++with the priomap ++Based on the packet priority, which in turn is derived from the Type of ++Service assigned to the packet. ++.P ++Only the priomap is specific to this qdisc. ++.SH QDISC PARAMETERS ++.TP ++bands ++Number of bands. If changed from the default of 3, ++.B priomap ++must be updated as well. ++.TP ++priomap ++The priomap maps the priority of ++a packet to a class. The priority can either be set directly from userspace, ++or be derived from the Type of Service of the packet. ++ ++Determines how packet priorities, as assigned by the kernel, map to ++bands. Mapping occurs based on the TOS octet of the packet, which looks like ++this: ++ ++.nf ++0 1 2 3 4 5 6 7 +++---+---+---+---+---+---+---+---+ ++| | | | ++|PRECEDENCE | TOS |MBZ| ++| | | | +++---+---+---+---+---+---+---+---+ ++.fi ++ ++The four TOS bits (the 'TOS field') are defined as: ++ ++.nf ++Binary Decimcal Meaning ++----------------------------------------- ++1000 8 Minimize delay (md) ++0100 4 Maximize throughput (mt) ++0010 2 Maximize reliability (mr) ++0001 1 Minimize monetary cost (mmc) ++0000 0 Normal Service ++.fi ++ ++As there is 1 bit to the right of these four bits, the actual value of the ++TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the ++value of the entire TOS field, not just the four bits. It is the value you ++see in the first column of this table: ++ ++.nf ++TOS Bits Means Linux Priority Band ++------------------------------------------------------------ ++0x0 0 Normal Service 0 Best Effort 1 ++0x2 1 Minimize Monetary Cost 1 Filler 2 ++0x4 2 Maximize Reliability 0 Best Effort 1 ++0x6 3 mmc+mr 0 Best Effort 1 ++0x8 4 Maximize Throughput 2 Bulk 2 ++0xa 5 mmc+mt 2 Bulk 2 ++0xc 6 mr+mt 2 Bulk 2 ++0xe 7 mmc+mr+mt 2 Bulk 2 ++0x10 8 Minimize Delay 6 Interactive 0 ++0x12 9 mmc+md 6 Interactive 0 ++0x14 10 mr+md 6 Interactive 0 ++0x16 11 mmc+mr+md 6 Interactive 0 ++0x18 12 mt+md 4 Int. Bulk 1 ++0x1a 13 mmc+mt+md 4 Int. Bulk 1 ++0x1c 14 mr+mt+md 4 Int. Bulk 1 ++0x1e 15 mmc+mr+mt+md 4 Int. Bulk 1 ++.fi ++ ++The second column contains the value of the relevant ++four TOS bits, followed by their translated meaning. For example, 15 stands ++for a packet wanting Minimal Montetary Cost, Maximum Reliability, Maximum ++Throughput AND Minimum Delay. ++ ++The fourth column lists the way the Linux kernel interprets the TOS bits, by ++showing to which Priority they are mapped. ++ ++The last column shows the result of the default priomap. On the commandline, ++the default priomap looks like this: ++ ++ 1, 2, 2, 2, 1, 2, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1 ++ ++This means that priority 4, for example, gets mapped to band number 1. ++The priomap also allows you to list higher priorities (> 7) which do not ++correspond to TOS mappings, but which are set by other means. ++ ++This table from RFC 1349 (read it for more details) explains how ++applications might very well set their TOS bits: ++ ++.nf ++TELNET 1000 (minimize delay) ++FTP ++ Control 1000 (minimize delay) ++ Data 0100 (maximize throughput) ++ ++TFTP 1000 (minimize delay) ++ ++SMTP ++ Command phase 1000 (minimize delay) ++ DATA phase 0100 (maximize throughput) ++ ++Domain Name Service ++ UDP Query 1000 (minimize delay) ++ TCP Query 0000 ++ Zone Transfer 0100 (maximize throughput) ++ ++NNTP 0001 (minimize monetary cost) ++ ++ICMP ++ Errors 0000 ++ Requests 0000 (mostly) ++ Responses (mostly) ++.fi ++ ++ ++.SH CLASSES ++PRIO classes cannot be configured further - they are automatically created ++when the PRIO qdisc is attached. Each class however can contain yet a ++further qdisc. ++ ++.SH BUGS ++Large amounts of traffic in the lower bands can cause starvation of higher ++bands. Can be prevented by attaching a shaper (for example, ++.BR tc-tbf(8) ++to these bands to make sure they cannot dominate the link. ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, , J Hadi Salim ++. This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-red.8 iproute2/debian/tc-red.8 +--- iproute2-orig/debian/tc-red.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-red.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,131 @@ ++.TH RED 8 "13 December 2001" "iproute2" "Linux" ++.SH NAME ++red \- Random Early Detection ++.SH SYNOPSIS ++.B tc qdisc ... red ++.B limit ++bytes ++.B min ++bytes ++.B max ++bytes ++.B avpkt ++bytes ++.B burst ++packets ++.B [ ecn ] [ bandwidth ++rate ++.B ] probability ++chance ++ ++.SH DESCRIPTION ++Random Early Detection is a classless qdisc which manages its queue size ++smartly. Regular queues simply drop packets from the tail when they are ++full, which may not be the optimal behaviour. RED also performs tail drop, ++but does so in a more gradual way. ++ ++Once the queue hits a certain average length, packets enqueued have a ++configurable chance of being marked (which may mean dropped). This chance ++increases linearly up to a point called the ++.B max ++average queue length, although the queue might get bigger. ++ ++This has a host of benefits over simple taildrop, while not being processor ++intensive. It prevents synchronous retransmits after a burst in traffic, ++which cause further retransmits, etc. ++ ++The goal is the have a small queue size, which is good for interactivity ++while not disturbing TCP/IP traffic with too many sudden drops after a burst ++of traffic. ++ ++Depending on 08 ECN is configured, marking either means dropping or ++purely marking a packet as overlimit. ++.SH ALGORITHM ++The average queue size is used for determining the marking ++probability. This is calculated using an Exponential Weighted Moving ++Average, which can be more or less sensitive to bursts. ++ ++When the average queue size is below ++.B min ++bytes, no packet will ever be marked. When it exceeds ++.B min, ++the probability of doing so climbs linearly up ++to ++.B probability, ++until the average queue size hits ++.B max ++bytes. Because ++.B probability ++is normally not set to 100%, the queue size might ++conceivably rise above ++.B max ++bytes, so the ++.B limit ++parameter is provided to set a hard maximum for the size of the queue. ++ ++.SH PARAMETERS ++.TP ++min ++Average queue size at which marking becomes a possibility. ++.TP ++max ++At this average queue size, the marking probability is maximal. Should be at ++least twice ++.B min ++to prevent synchronous retransmits, higher for low ++.B min. ++.TP ++probability ++Maximum probability for marking, specified as a floating point ++number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%, ++respectively). ++.TP ++limit ++Hard limit on the real (not average) queue size in bytes. Further packets ++are dropped. Should be set higher than max+burst. It is advised to set this ++a few times higher than ++.B max. ++.TP ++burst ++Used for determining how fast the average queue size is influenced by the ++real queue size. Larger values make the calculation more sluggish, allowing ++longer bursts of traffic before marking starts. Real life experiments ++support the following guideline: (min+min+max)/(3*avpkt). ++.TP ++avpkt ++Specified in bytes. Used with burst to determine the time constant for ++average queue size calculations. 1000 is a good value. ++.TP ++bandwidth ++This rate is used for calculating the average queue size after some ++idle time. Should be set to the bandwidth of your interface. Does not mean ++that RED will shape for you! Optional. ++.TP ++ecn ++As mentioned before, RED can either 'mark' or 'drop'. Explicit Congestion ++Notification allows RED to notify remote hosts that their rate exceeds the ++amount of bandwidth available. Non-ECN capable hosts can only be notified by ++dropping a packet. If this parameter is specified, packets which indicate ++that their hosts honor ECN will only be marked and not dropped, unless the ++queue size hits ++.B limit ++bytes. Needs a tc binary with RED support compiled in. Recommended. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH SOURCES ++.TP ++o ++Floyd, S., and Jacobson, V., Random Early Detection gateways for ++Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html ++.TP ++o ++Some changes to the algorithm by Alexey N. Kuznetsov. ++ ++.SH AUTHORS ++Alexey N. Kuznetsov, , Alexey Makarenko ++, J Hadi Salim . ++This manpage maintained by bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-sfq.8 iproute2/debian/tc-sfq.8 +--- iproute2-orig/debian/tc-sfq.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-sfq.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,107 @@ ++.TH TC 8 "8 December 2001" "iproute2" "Linux" ++.SH NAME ++sfq \- Stochastic Fairness Queueing ++.SH SYNOPSIS ++.B tc qdisc ... perturb ++seconds ++.B quantum ++bytes ++ ++.SH DESCRIPTION ++ ++Stochastic Fairness Queueing is a classless queueing discipline available for ++traffic control with the ++.BR tc (8) ++command. ++ ++SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'. ++The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing ++any single flow from drowning out the rest. ++ ++This may in fact have some effect in mitigating a Denial of Service attempt. ++ ++SFQ is work-conserving and therefore always delivers a packet if it has one available. ++.SH ALGORITHM ++On enqueueing, each packet is assigned to a hash bucket, based on ++.TP ++(i) ++Source address ++.TP ++(ii) ++Destination address ++.TP ++(iii) ++Source port ++.P ++If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP. ++Packets with other protocols are hashed based on the 32bits representation of their ++destination and the socket they belong to. A flow corresponds mostly to a TCP/IP ++connection. ++ ++Each of these buckets should represent a unique flow. Because multiple flows may ++get hashed to the same bucket, the hashing algorithm is perturbed at configurable ++intervals so that the unfairness lasts only for a short while. Perturbation may ++however cause some inadvertent packet reordering to occur. ++ ++When dequeuing, each hashbucket with data is queried in a round robin fashion. ++ ++The compile time maximum length of the SFQ is 128 packets, which can be spread over ++at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed ++on the fullest bucket, thus maintaining fairness. ++ ++.SH PARAMETERS ++.TP ++perturb ++Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that ++no perturbation occurs. Do not set too low for each perturbation may cause some packet ++reordering. Advised value: 10 ++.TP ++quantum ++Amount of bytes a flow is allowed to dequeue during a round of the round robin process. ++Defaults to the MTU of the interface which is also the advised value and the minimum value. ++ ++.SH EXAMPLE & USAGE ++ ++To attach to device ppp0: ++.P ++# tc qdisc add dev ppp0 root sfq perturb 10 ++.P ++Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful ++if it owns the queue. ++This is the case when the link speed equals the actually available bandwidth. This holds ++for regular phone modems, ISDN connections and direct non-switched ethernet links. ++.P ++Most often, cable modems and DSL devices do not fall into this category. The same holds ++for when connected to a switch and trying to send data to a congested segment also ++connected to the switch. ++.P ++In this case, the effective queue does not reside within Linux and is therefore not ++available for scheduling. ++.P ++Embed SFQ in a classful qdisc to make sure it owns the queue. ++ ++.SH SOURCE ++.TP ++o ++Paul E. McKenney "Stochastic Fairness Queuing", ++IEEE INFOCOMM'90 Proceedings, San Francisco, 1990. ++ ++.TP ++o ++Paul E. McKenney "Stochastic Fairness Queuing", ++"Interworking: Research and Experience", v.2, 1991, p.113-131. ++ ++.TP ++o ++See also: ++M. Shreedhar and George Varghese "Efficient Fair ++Queuing using Deficit Round Robin", Proc. SIGCOMM 95. ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc-tbf.8 iproute2/debian/tc-tbf.8 +--- iproute2-orig/debian/tc-tbf.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc-tbf.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,138 @@ ++.TH TC 8 "13 December 2001" "iproute2" "Linux" ++.SH NAME ++tbf \- Token Bucket Filter ++.SH SYNOPSIS ++.B tc qdisc ... tbf rate ++rate ++.B burst ++bytes/cell ++.B ( latency ++ms ++.B | limit ++bytes ++.B ) [ mpu ++bytes ++.B [ peakrate ++rate ++.B mtu ++bytes/cell ++.B ] ] ++.P ++burst is also known as buffer and maxburst. mtu is also known as minburst. ++.SH DESCRIPTION ++ ++The Token Bucket Filter is a classless queueing discipline available for ++traffic control with the ++.BR tc (8) ++command. ++ ++TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle ++itself, although packets are available, to ensure that the configured rate is not exceeded. ++On all platforms except for Alpha, ++it is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, ++sending out data exactly at the configured rates. ++ ++Much higher rates are possible but at the cost of losing the minimal burstiness. In that ++case, data is on average dequeued at the configured rate but may be sent much faster at millisecond ++timescales. Because of further queues living in network adaptors, this is often not a problem. ++ ++Kernels with a higher 'HZ' can achieve higher rates with perfect burstiness. On Alpha, HZ is ten ++times higher, leading to a 10mbit/s limit to perfection. These calculations hold for packets of on ++average 1000 bytes. ++ ++.SH ALGORITHM ++As the name implies, traffic is filtered based on the expenditure of ++.B tokens. ++Tokens roughly correspond to bytes, with the additional constraint that each packet consumes ++some tokens, no matter how small it is. This reflects the fact that even a zero-sized packet occupies ++the link for some time. ++ ++On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst ++in one go. Tokens arrive at a steady rate, until the bucket is full. ++ ++If no tokens are available, packets are queued, up to a configured limit. The TBF now ++calculates the token deficit, and throttles until the first packet in the queue can be sent. ++ ++If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured ++to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF ++with a very small bucket, so that it doesn't burst. ++ ++To achieve perfection, the second bucket may contain only a single packet, which leads to ++the earlier mentioned 1mbit/s limit. ++ ++This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends ++on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 ++packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s. ++ ++.SH PARAMETERS ++See ++.BR tc (8) ++for how to specify the units of these values. ++.TP ++limit or latency ++Limit is the number of bytes that can be queued waiting for tokens to become ++available. You can also specify this the other way around by setting the ++latency parameter, which specifies the maximum amount of time a packet can ++sit in the TBF. The latter calculation takes into account the size of the ++bucket, the rate and possibly the peakrate (if set). These two parameters ++are mutually exclusive. ++.TP ++burst ++Also known as buffer or maxburst. ++Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. ++In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer ++if you want to reach your configured rate! ++ ++If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket. ++The minimum buffer size can be calculated by dividing the rate by HZ. ++ ++Token usage calculations are performed using a table which by default has a resolution of 8 packets. ++This resolution can be changed by specifying the ++.B cell ++size with the burst. For example, to specify a 6000 byte buffer with a 16 ++byte cell size, set a burst of 6000/16. You will probably never have to set ++this. Must be an integral power of 2. ++.TP ++mpu ++A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit ++determines the minimal token usage (specified in bytes) for a packet. Defaults to zero. ++.TP ++rate ++The speed knob. See remarks above about limits! See ++.BR tc (8) ++for units. ++.PP ++Furthermore, if a peakrate is desired, the following parameters are available: ++ ++.TP ++peakrate ++Maximum depletion rate of the bucket. Limited to 1mbit/s on Intel, 10mbit/s on Alpha. The peakrate does ++not need to be set, it is only necessary if perfect millisecond timescale shaping is required. ++ ++.TP ++mtu/minburst ++Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface. ++If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst ++allows around 3mbit/s of peakrate, given 1000 byte packets. ++ ++Like the regular burstsize you can also specify a ++.B cell ++size. ++.SH EXAMPLE & USAGE ++ ++To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s, ++a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes ++at most 70ms of latency, with perfect peakrate behaviour, issue: ++.P ++# tc qdisc add dev eth0 root tbf rate 0.5mbit \\ ++ burst 5kb latency 70ms peakrate 1mbit \\ ++ minburst 1540 ++ ++.SH SEE ALSO ++.BR tc (8) ++ ++.SH AUTHOR ++Alexey N. Kuznetsov, . This manpage maintained by ++bert hubert ++ ++ +diff -Naur iproute2-orig/debian/tc.8 iproute2/debian/tc.8 +--- iproute2-orig/debian/tc.8 1969-12-31 16:00:00.000000000 -0800 ++++ iproute2/debian/tc.8 2004-05-21 00:09:38.000000000 -0700 +@@ -0,0 +1,348 @@ ++.TH TC 8 "16 December 2001" "iproute2" "Linux" ++.SH NAME ++tc \- show / manipulate traffic control settings ++.SH SYNOPSIS ++.B tc qdisc [ add | change | replace | link ] dev ++DEV ++.B ++[ parent ++qdisc-id ++.B | root ] ++.B [ handle ++qdisc-id ] qdisc ++[ qdisc specific parameters ] ++.P ++ ++.B tc class [ add | change | replace ] dev ++DEV ++.B parent ++qdisc-id ++.B [ classid ++class-id ] qdisc ++[ qdisc specific parameters ] ++.P ++ ++.B tc filter [ add | change | replace ] dev ++DEV ++.B [ parent ++qdisc-id ++.B | root ] protocol ++protocol ++.B prio ++priority filtertype ++[ filtertype specific parameters ] ++.B flowid ++flow-id ++ ++.B tc [-s | -d ] qdisc show [ dev ++DEV ++.B ] ++.P ++.B tc [-s | -d ] class show dev ++DEV ++.P ++.B tc filter show dev ++DEV ++ ++.SH DESCRIPTION ++.B Tc ++is used to configure Traffic Control in the Linux kernel. Traffic Control consists ++of the following: ++ ++.TP ++SHAPING ++When traffic is shaped, its rate of transmission is under control. Shaping may ++be more than lowering the available bandwidth - it is also used to smooth out ++bursts in traffic for better network behaviour. Shaping occurs on egress. ++ ++.TP ++SCHEDULING ++By scheduling the transmission of packets it is possible to improve interactivity ++for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering ++is also called prioritizing, and happens only on egress. ++ ++.TP ++POLICING ++Where shaping deals with transmission of traffic, policing pertains to traffic ++arriving. Policing thus occurs on ingress. ++ ++.TP ++DROPPING ++Traffic exceeding a set bandwidth may also be dropped forthwith, both on ++ingress and on egress. ++ ++.P ++Processing of traffic is controlled by three kinds of objects: qdiscs, ++classes and filters. ++ ++.SH QDISCS ++.B qdisc ++is short for 'queueing discipline' and it is elementary to ++understanding traffic control. Whenever the kernel needs to send a ++packet to an interface, it is ++.B enqueued ++to the qdisc configured for that interface. Immediately afterwards, the kernel ++tries to get as many packets as possible from the qdisc, for giving them ++to the network adaptor driver. ++ ++A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure ++First In, First Out queue. It does however store traffic when the network interface ++can't handle it momentarily. ++ ++.SH CLASSES ++Some qdiscs can contain classes, which contain further qdiscs - traffic may ++then be enqueued in any of the inner qdiscs, which are within the ++.B classes. ++When the kernel tries to dequeue a packet from such a ++.B classful qdisc ++it can come from any of the classes. A qdisc may for example prioritize ++certain kinds of traffic by trying to dequeue from certain classes ++before others. ++ ++.SH FILTERS ++A ++.B filter ++is used by a classful qdisc to determine in which class a packet will ++be enqueued. Whenever traffic arrives at a class with subclasses, it needs ++to be classified. Various methods may be employed to do so, one of these ++are the filters. All filters attached to the class are called, until one of ++them returns with a verdict. If no verdict was made, other criteria may be ++available. This differs per qdisc. ++ ++It is important to notice that filters reside ++.B within ++qdiscs - they are not masters of what happens. ++ ++.SH CLASSLESS QDISCS ++The classless qdiscs are: ++.TP ++[p|b]fifo ++Simplest usable qdisc, pure First In, First Out behaviour. Limited in ++packets or in bytes. ++.TP ++pfifo_fast ++Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band ++queue which honors Type of Service flags, as well as the priority that may be ++assigned to a packet. ++.TP ++red ++Random Early Detection simulates physical congestion by randomly dropping ++packets when nearing configured bandwidth allocation. Well suited to very ++large bandwidth applications. ++.TP ++sfq ++Stochastic Fairness Queueing reorders queued traffic so each 'session' ++gets to send a packet in turn. ++.TP ++tbf ++The Token Bucket Filter is suited for slowing traffic down to a precisely ++configured rate. Scales well to large bandwidths. ++.SH CONFIGURING CLASSLESS QDISCS ++In the absence of classful qdiscs, classless qdiscs can only be attached at ++the root of a device. Full syntax: ++.P ++.B tc qdisc add dev ++DEV ++.B root ++QDISC QDISC-PARAMETERS ++ ++To remove, issue ++.P ++.B tc qdisc del dev ++DEV ++.B root ++ ++The ++.B pfifo_fast ++qdisc is the automatic default in the absence of a configured qdisc. ++ ++.SH CLASSFUL QDISCS ++The classful qdiscs are: ++.TP ++CBQ ++Class Based Queueing implements a rich linksharing hierarchy of classes. ++It contains shaping elements as well as prioritizing capabilities. Shaping is ++performed using link idle time calculations based on average packet size and ++underlying link bandwidth. The latter may be ill-defined for some interfaces. ++.TP ++HTB ++The Hierarchy Token Bucket implements a rich linksharing hierarchy of ++classes with an emphasis on conforming to existing practices. HTB facilitates ++guaranteeing bandwidth to classes, while also allowing specification of upper ++limits to inter-class sharing. It contains shaping elements, based on TBF and ++can prioritize classes. ++.TP ++PRIO ++The PRIO qdisc is a non-shaping container for a configurable number of ++classes which are dequeued in order. This allows for easy prioritization ++of traffic, where lower classes are only able to send if higher ones have ++no packets available. To facilitate configuration, Type Of Service bits are ++honored by default. ++.SH THEORY OF OPERATION ++Classes form a tree, where each class has a single parent. ++A class may have multiple children. Some qdiscs allow for runtime addition ++of classes (CBQ, HTB) while others (PRIO) are created with a static number of ++children. ++ ++Qdiscs which allow dynamic addition of classes can have zero or more ++subclasses to which traffic may be enqueued. ++ ++Furthermore, each class contains a ++.B leaf qdisc ++which by default has ++.B pfifo ++behaviour though another qdisc can be attached in place. This qdisc may again ++contain classes, but each class can have only one leaf qdisc. ++ ++When a packet enters a classful qdisc it can be ++.B classified ++to one of the classes within. Three criteria are available, although not all ++qdiscs will use all three: ++.TP ++tc filters ++If tc filters are attached to a class, they are consulted first ++for relevant instructions. Filters can match on all fields of a packet header, ++as well as on the firewall mark applied by ipchains or iptables. See ++.BR tc-filters (8). ++.TP ++Type of Service ++Some qdiscs have built in rules for classifying packets based on the TOS field. ++.TP ++skb->priority ++Userspace programs can encode a class-id in the 'skb->priority' field using ++the SO_PRIORITY option. ++.P ++Each node within the tree can have its own filters but higher level filters ++may also point directly to lower classes. ++ ++If classification did not succeed, packets are enqueued to the leaf qdisc ++attached to that class. Check qdisc specific manpages for details, however. ++ ++.SH NAMING ++All qdiscs, classes and filters have IDs, which can either be specified ++or be automatically assigned. ++ ++IDs consist of a major number and a minor number, separated by a colon. ++ ++.TP ++QDISCS ++A qdisc, which potentially can have children, ++gets assigned a major number, called a 'handle', leaving the minor ++number namespace available for classes. The handle is expressed as '10:'. ++It is customary to explicitly assign a handle to qdiscs expected to have ++children. ++ ++.TP ++CLASSES ++Classes residing under a qdisc share their qdisc major number, but each have ++a separate minor number called a 'classid' that has no relation to their ++parent classes, only to their parent qdisc. The same naming custom as for ++qdiscs applies. ++ ++.TP ++FILTERS ++Filters have a three part ID, which is only needed when using a hashed ++filter hierarchy, for which see ++.BR tc-filters (8). ++.SH UNITS ++All parameters accept a floating point number, possibly followed by a unit. ++.P ++Bandwidths or rates can be specified in: ++.TP ++kbps ++Kilobytes per second ++.TP ++mbps ++Megabytes per second ++.TP ++kbit ++Kilobits per second ++.TP ++mbit ++Megabits per second ++.TP ++bps or a bare number ++Bits per second ++.P ++Amounts of data can be specified in: ++.TP ++kb or k ++Kilobytes ++.TP ++mb or m ++Megabytes ++.TP ++mbit ++Megabits ++.TP ++kbit ++Kilobits ++.TP ++b or a bare number ++Bytes. ++.P ++Lengths of time can be specified in: ++.TP ++s, sec or secs ++Whole seconds ++.TP ++ms, msec or msecs ++Milliseconds ++.TP ++us, usec, usecs or a bare number ++Microseconds. ++ ++.SH TC COMMANDS ++The following commands are available for qdiscs, classes and filter: ++.TP ++add ++Add a qdisc, class or filter to a node. For all entities, a ++.B parent ++must be passed, either by passing its ID or by attaching directly to the root of a device. ++When creating a qdisc or a filter, it can be named with the ++.B handle ++parameter. A class is named with the ++.B classid ++parameter. ++ ++.TP ++remove ++A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs ++are automatically deleted, as well as any filters attached to them. ++ ++.TP ++change ++Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception ++that the handle cannot be changed and neither can the parent. In other words, ++.B ++change ++cannot move a node. ++ ++.TP ++replace ++Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet ++it is created. ++ ++.TP ++link ++Only available for qdiscs and performs a replace where the node ++must exist already. ++ ++ ++.SH HISTORY ++.B tc ++was written by Alexey N. Kuznetsov and added in Linux 2.2. ++.SH SEE ALSO ++.BR tc-cbq (8), ++.BR tc-htb (8), ++.BR tc-sfq (8), ++.BR tc-red (8), ++.BR tc-tbf (8), ++.BR tc-pfifo (8), ++.BR tc-bfifo (8), ++.BR tc-pfifo_fast (8), ++.BR tc-filters (8) ++ ++.SH AUTHOR ++Manpage maintained by bert hubert (ahu@ds9a.nl) ++ +diff -Naur iproute2-orig/include/rt_names.h iproute2/include/rt_names.h +--- iproute2-orig/include/rt_names.h 2000-04-16 10:42:50.000000000 -0700 ++++ iproute2/include/rt_names.h 2004-05-21 00:16:36.000000000 -0700 +@@ -1,6 +1,8 @@ + #ifndef RT_NAMES_H_ + #define RT_NAMES_H_ 1 + ++#include ++ + const char* rtnl_rtprot_n2a(int id, char *buf, int len); + const char* rtnl_rtscope_n2a(int id, char *buf, int len); + const char* rtnl_rttable_n2a(int id, char *buf, int len); +diff -Naur iproute2-orig/lib/rt_names.c iproute2/lib/rt_names.c +--- iproute2-orig/lib/rt_names.c 2000-04-16 10:42:52.000000000 -0700 ++++ iproute2/lib/rt_names.c 2004-05-21 00:16:36.000000000 -0700 +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + + static void rtnl_tab_initialize(char *file, char **tab, int size) + { +diff -Naur iproute2-orig/misc/arpd.c iproute2/misc/arpd.c +--- iproute2-orig/misc/arpd.c 2002-01-09 20:02:26.000000000 -0800 ++++ iproute2/misc/arpd.c 2004-05-21 00:16:36.000000000 -0700 +@@ -16,7 +16,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/abs/core/iproute2/libdir.patch b/abs/core/iproute2/libdir.patch new file mode 100644 index 0000000..4e5671a --- /dev/null +++ b/abs/core/iproute2/libdir.patch @@ -0,0 +1,129 @@ +Submitted By: Joe Ciccone +Date: 2008-09-31 +Upstream Status: Unknown +Origin: Joe Ciccone +Description: This patch gives the ability to change the libdir. + +--- iproute2-2.6.26.orig/Config 1969-12-31 19:00:00.000000000 -0500 ++++ iproute2-2.6.26/Config 2008-09-13 15:07:31.000000000 -0400 +@@ -0,0 +1 @@ ++# Generated config based on /usr/src/clfs-tarballs/conglomeration/iproute2-2.6.26/include +diff -Naur iproute2-2.6.26.orig/include/iptables.h iproute2-2.6.26/include/iptables.h +--- iproute2-2.6.26.orig/include/iptables.h 2008-07-25 16:46:07.000000000 -0400 ++++ iproute2-2.6.26/include/iptables.h 2008-09-13 15:43:33.000000000 -0400 +@@ -4,8 +4,12 @@ + #include "iptables_common.h" + #include "libiptc/libiptc.h" + ++#ifndef LIBDIR ++#define LIBDIR "/usr/lib" ++#endif ++ + #ifndef IPT_LIB_DIR +-#define IPT_LIB_DIR "/usr/local/lib/iptables" ++#define IPT_LIB_DIR LIBDIR "/iptables" + #endif + + #ifndef IPPROTO_SCTP +diff -Naur iproute2-2.6.26.orig/ip/iplink.c iproute2-2.6.26/ip/iplink.c +--- iproute2-2.6.26.orig/ip/iplink.c 2008-07-25 16:46:07.000000000 -0400 ++++ iproute2-2.6.26/ip/iplink.c 2008-09-13 15:14:41.000000000 -0400 +@@ -34,7 +34,11 @@ + + #define IPLINK_IOCTL_COMPAT 1 + #ifndef DESTDIR +-#define DESTDIR "/usr/" ++#define DESTDIR "/usr" ++#endif ++ ++#ifndef LIBDIR ++#define LIBDIR "/usr/lib" + #endif + + static void usage(void) __attribute__((noreturn)); +@@ -81,7 +85,7 @@ + if (strcmp(l->id, id) == 0) + return l; + +- snprintf(buf, sizeof(buf), DESTDIR "/lib/ip/link_%s.so", id); ++ snprintf(buf, sizeof(buf), DESTDIR LIBDIR "/ip/link_%s.so", id); + dlh = dlopen(buf, RTLD_LAZY); + if (dlh == NULL) { + /* look in current binary, only open once */ +diff -Naur iproute2-2.6.26.orig/Makefile iproute2-2.6.26/Makefile +--- iproute2-2.6.26.orig/Makefile 2008-07-25 16:46:07.000000000 -0400 ++++ iproute2-2.6.26/Makefile 2008-09-13 15:15:24.000000000 -0400 +@@ -1,13 +1,15 @@ +-DESTDIR=/usr/ ++DESTDIR=/usr + SBINDIR=/sbin + CONFDIR=/etc/iproute2 + DOCDIR=/share/doc/iproute2 + MANDIR=/share/man + ++LIBDIR=/usr/lib ++ + # Path to db_185.h include + DBM_INCLUDE:=/usr/include + +-DEFINES= -DRESOLVE_HOSTNAMES -DDESTDIR=\"$(DESTDIR)\" ++DEFINES= -DRESOLVE_HOSTNAMES -DDESTDIR=\"$(DESTDIR)\" -DLIBDIR=\"$(LIBDIR)\" + + #options if you have a bind>=4.9.4 libresolv (or, maybe, glibc) + LDLIBS=-lresolv +diff -Naur iproute2-2.6.26.orig/netem/Makefile iproute2-2.6.26/netem/Makefile +--- iproute2-2.6.26.orig/netem/Makefile 2008-07-25 16:46:07.000000000 -0400 ++++ iproute2-2.6.26/netem/Makefile 2008-09-13 14:27:07.000000000 -0400 +@@ -20,9 +20,9 @@ + $(HOSTCC) $(CCOPTS) -I../include -o $@ $@.c -lm + + install: all +- mkdir -p $(DESTDIR)/lib/tc ++ mkdir -p $(DESTDIR)$(LIBDIR)/tc + for i in $(DISTDATA); \ +- do install -m 755 $$i $(DESTDIR)/lib/tc; \ ++ do install -m 755 $$i $(DESTDIR)$(LIBDIR)/tc; \ + done + + clean: +diff -Naur iproute2-2.6.26.orig/tc/Makefile iproute2-2.6.26/tc/Makefile +--- iproute2-2.6.26.orig/tc/Makefile 2008-07-25 16:46:07.000000000 -0400 ++++ iproute2-2.6.26/tc/Makefile 2008-09-13 14:30:37.000000000 -0400 +@@ -72,10 +72,10 @@ + $(AR) rcs $@ $(TCLIB) + + install: all +- mkdir -p $(DESTDIR)/lib/tc ++ mkdir -p $(DESTDIR)$(LIBDIR)/tc + install -m 0755 tc $(DESTDIR)$(SBINDIR) + for i in $(TCSO); \ +- do install -m 755 $$i $(DESTDIR)/lib/tc; \ ++ do install -m 755 $$i $(DESTDIR)$(LIBDIR)/tc; \ + done + + clean: +diff -Naur iproute2-2.6.26.orig/tc/tc_util.c iproute2-2.6.26/tc/tc_util.c +--- iproute2-2.6.26.orig/tc/tc_util.c 2008-07-25 16:46:07.000000000 -0400 ++++ iproute2-2.6.26/tc/tc_util.c 2008-09-13 15:15:16.000000000 -0400 +@@ -25,7 +25,11 @@ + #include "tc_util.h" + + #ifndef DESTDIR +-#define DESTDIR "/usr/" ++#define DESTDIR "/usr" ++#endif ++ ++#ifndef LIBDIR ++#define LIBDIR "/usr/lib" + #endif + + const char *get_tc_lib(void) +@@ -34,7 +38,7 @@ + + lib_dir = getenv("TC_LIB_DIR"); + if (!lib_dir) +- lib_dir = DESTDIR "/lib/tc"; ++ lib_dir = DESTDIR LIBDIR "/tc"; + + return lib_dir; + diff --git a/abs/core/ipw3945/2.6.18-compile.patch b/abs/core/ipw3945/2.6.18-compile.patch deleted file mode 100644 index ef0c920..0000000 --- a/abs/core/ipw3945/2.6.18-compile.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- Makefile~ 2006-06-24 01:35:00.000000000 +0200 -+++ Makefile 2006-08-28 13:29:15.000000000 +0200 -@@ -93,7 +93,7 @@ - IEEE80211_API := $(shell [[ "$(IEEE80211_VER)" == 1.1.14* ]] && \ - { echo "2" ; } || \ - { ver=$(IEEE80211_VER); ver=$${ver\#*.} ; echo $${ver%.*} ; }) -- EXTRA_CFLAGS += -DIEEE80211_API_VERSION=$(IEEE80211_API) -+ EXTRA_CFLAGS += -DIEEE80211_API_VERSION=2 - endif - - ifeq ($(CONFIG_IPW3945_DEBUG),y) diff --git a/abs/core/ipw3945/PKGBUILD b/abs/core/ipw3945/PKGBUILD deleted file mode 100644 index 572b561..0000000 --- a/abs/core/ipw3945/PKGBUILD +++ /dev/null @@ -1,31 +0,0 @@ -# $Id: PKGBUILD 5912 2008-07-21 20:12:27Z thomas $ -# Contributor: Giovanni Scafora -# Maintainer: James Rayner -_kernver=2.6.26-ARCH -pkgname=ipw3945 -pkgver=1.2.2 -pkgrel=11 -pkgdesc="Driver for the Intel PRO/Wireless 3945ABG miniPCI express adapter" -arch=(i686 x86_64) -url="http://ipw3945.sourceforge.net" -license=("GPL") -depends=('wireless_tools' 'kernel26>=2.6.26-1' 'kernel26<2.6.27' 'ipw3945-ucode' 'ipw3945d') -install=ipw3945.install -source=(http://downloads.sourceforge.net/sourceforge/ipw3945/ipw3945-$pkgver.tgz - compile-2.6.24.patch) -md5sums=('9e5ca2f3ffbb84270ede45d5572df4c9' - '12db6e8410ab38f1fbca15681cfa752a') - -build() { - cd $startdir/src/ipw3945-$pkgver - sed -i -e "s:^#\(CONFIG_IPW3945_QOS\)=.*:\1=y:" \ - -e "s:^# \(CONFIG_IPW3945_MONITOR\)=.*:\1=y:" \ - -e "s:^# \(CONFIG_IEEE80211_RADIOTAP\)=.*:\1=y:" \ - -e "s:^# \(CONFIG_IPW3945_PROMISCUOUS\)=.*:\1=y:" \ - Makefile - patch -Np1 -i ../compile-2.6.24.patch || return 1 - make KVER=${_kernver} IEEE80211_INC=/usr/src/linux-${_kernver}/ IEEE80211_IGNORE_DUPLICATE=y || return 1 - #Install kernel module - install -D -m 644 ipw3945.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/net/wireless/ipw3945/ipw3945.ko - sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install -} diff --git a/abs/core/ipw3945/compile-2.6.24.patch b/abs/core/ipw3945/compile-2.6.24.patch deleted file mode 100644 index f6350fc..0000000 --- a/abs/core/ipw3945/compile-2.6.24.patch +++ /dev/null @@ -1,43 +0,0 @@ -Author: Samuel Tardieu -Date: Tue Oct 16 12:31:58 2007 +0200 - - MAC_ARG is not defined by the kernel headers anymore - -diff --git a/ipw3945.c b/ipw3945.c -index eec20b7..cc36b9c 100644 ---- a/ipw3945.c -+++ b/ipw3945.c -@@ -102,6 +102,12 @@ - #define VQ - #endif - -+/* stolen from net/ieee80211.h */ -+#ifndef MAC_ARG -+#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \ -+ ((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5] -+#endif -+ - #define IPW3945_VERSION "1.2.2" VD VM VP VR VQ - - #define DRV_DESCRIPTION "Intel(R) PRO/Wireless 3945 Network Connection driver for Linux" - - - -Author: Samuel Tardieu -Date: Tue Oct 16 12:37:54 2007 +0200 - - Nuke SET_MODULE_OWNER() use - -diff --git a/ipw3945.c b/ipw3945.c -index cc36b9c..0369876 100644 ---- a/ipw3945.c -+++ b/ipw3945.c -@@ -16597,7 +16597,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) - goto out_release_ucode; - } - -- SET_MODULE_OWNER(net_dev); - SET_NETDEV_DEV(net_dev, &pdev->dev); - mutex_lock(&priv->mutex); - priv->ieee->hard_start_xmit = ipw_net_hard_start_xmit; - diff --git a/abs/core/ipw3945/ipw3945.install b/abs/core/ipw3945/ipw3945.install deleted file mode 100644 index 8101a44..0000000 --- a/abs/core/ipw3945/ipw3945.install +++ /dev/null @@ -1,26 +0,0 @@ -# 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() -{ - KERNEL_VERSION='2.6.26-ARCH' - depmod -v $KERNEL_VERSION > /dev/null 2>&1 -} - -# 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/ipw3945/kernel-2.6.19.patch b/abs/core/ipw3945/kernel-2.6.19.patch deleted file mode 100644 index ed28608..0000000 --- a/abs/core/ipw3945/kernel-2.6.19.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ipw3945.h~ 2006-06-26 23:29:30.000000000 +0200 -+++ ipw3945.h 2006-10-17 17:12:06.000000000 +0200 -@@ -29,7 +29,6 @@ - - #include - #include --#include - #include - - #include diff --git a/abs/core/ipw3945/lockup.patch b/abs/core/ipw3945/lockup.patch deleted file mode 100644 index 993fbbc..0000000 --- a/abs/core/ipw3945/lockup.patch +++ /dev/null @@ -1,31 +0,0 @@ - -Fix potential driver lockup problem - -Since we have already store the inta to priv->isr_inta in the -interrupt handler we don't need to get it from the hardware again -in the tasklet. Some people find ipw3945-1.2.1 still didn't -resolve the boot lockup problem as reported in bugzilla #1096. - -If you still find the lockup problem in ipw3945-1.2.1, please try -this patch and report if it resolves your problem or not to -yi.zhu@intel.com. - -Thanks to Egon for providing this patch! - -Signed-off-by: Egon -Signed-off-by: Zhu Yi --- - ---- a/ipw3945.c 2007-04-11 14:46:58.000000000 +0800 -+++ b/ipw3945.c 2007-05-14 15:55:56.000000000 +0800 -@@ -2769,8 +2769,8 @@ static void ipw_irq_tasklet(struct ipw_p - - spin_lock_irqsave(&priv->lock, flags); - -- inta = ipw_read32(priv, CSR_INT); -- inta_mask = ipw_read32(priv, CSR_INT_MASK); -+ inta = 0; -+ inta_mask = 0; - ipw_write32(priv, CSR_INT, inta); - inta &= (CSR_INI_SET_MASK & inta_mask); - diff --git a/abs/core/ivtv-utils/PKGBUILD b/abs/core/ivtv-utils/PKGBUILD index d8e13c6..5b272b1 100644 --- a/abs/core/ivtv-utils/PKGBUILD +++ b/abs/core/ivtv-utils/PKGBUILD @@ -4,10 +4,10 @@ pkgname=ivtv-utils pkgver=1.0.3 -pkgrel=1 -_kernver=2.6.23-ARCH +pkgrel=2 +_kernver=2.6.26-ARCH pkgdesc="Non-mainline kernel drivers and userspace utilities for Hauppauge PVR cards" -arch=(i686 x86_64) +arch=('i586' 'i686' 'x86_64') license=('GPL') url="http://ivtvdriver.org" source=("http://dl.ivtvdriver.org/ivtv/archive/1.0.x/ivtv-$pkgver.tar.gz" \ diff --git a/abs/core/jack-audio-connection-kit/PKGBUILD b/abs/core/jack-audio-connection-kit/PKGBUILD index f9d73eb..b9f0ed8 100644 --- a/abs/core/jack-audio-connection-kit/PKGBUILD +++ b/abs/core/jack-audio-connection-kit/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 9246 2008-08-17 05:38:58Z allan $ # Maintainer: tobias # Contributor: Robert Emil Berge pkgname=jack-audio-connection-kit pkgver=0.109.2 -pkgrel=1 +pkgrel=2 pkgdesc="a low-latency audio server" arch=(i686 x86_64) license=(GPL2 LGPL2) diff --git a/abs/core/jasper/PKGBUILD b/abs/core/jasper/PKGBUILD index ee60693..b841057 100644 --- a/abs/core/jasper/PKGBUILD +++ b/abs/core/jasper/PKGBUILD @@ -3,7 +3,7 @@ pkgname=jasper pkgver=1.900.1 -pkgrel=1 +pkgrel=2 pkgdesc="a software-based implementation of the codec specified in the emerging JPEG-2000 Part-1 standard" arch=(i686 x86_64) url="http://www.ece.uvic.ca/~mdadams/jasper/" diff --git a/abs/core/kdelibs3/PKGBUILD b/abs/core/kdelibs3/PKGBUILD index f4ed7a0..5331af0 100644 --- a/abs/core/kdelibs3/PKGBUILD +++ b/abs/core/kdelibs3/PKGBUILD @@ -4,18 +4,19 @@ pkgname=kdelibs3 pkgver=3.5.10 -pkgrel=1 +pkgrel=3 pkgdesc="KDE3 Core Libraries" arch=('i686' 'x86_64') url="http://www.kde.org" license=('GPL' 'LGPL') -depends=('libxslt' 'pcre' 'libart-lgpl' 'alsa-lib' 'libcups' +depends=('libxslt' 'pcre' 'libart-lgpl' 'alsa-lib' 'jasper' 'bzip2' 'openssl' 'libidn' 'libxrender' - 'aspell' 'heimdal' 'acl' 'libtiff' 'qt3' 'ca-certificates') -makedepends=('pkgconfig' 'cups') + 'aspell' 'heimdal' 'acl' 'libtiff' 'qt3' 'ca-certificates' + 'libjpeg') +makedepends=('pkgconfig' ) options=('libtool') install='kdelibs3.install' -source=("ftp://carroll.aset.psu.edu/pub/kde/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2" +source=("http://download.kde.org/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2" 'kde3.profile') md5sums=('43cd55ed15f63b5738d620ef9f9fd568' '3c49828eb8985cfb25af8e1495f7800a') @@ -44,6 +45,7 @@ build() { --enable-final \ --enable-new-ldflags LDFLAGS="${LDFLAGS} -L/opt/qt/lib" \ --without-arts \ + --disable-cups \ --disable-libfam || return 1 make || return 1 make DESTDIR=$pkgdir install || return 1 diff --git a/abs/core/kdelibs3/__changelog b/abs/core/kdelibs3/__changelog new file mode 100644 index 0000000..2abf977 --- /dev/null +++ b/abs/core/kdelibs3/__changelog @@ -0,0 +1 @@ +remove cups support diff --git a/abs/core/kernel-headers/PKGBUILD b/abs/core/kernel-headers/PKGBUILD index 485a918..d928a77 100644 --- a/abs/core/kernel-headers/PKGBUILD +++ b/abs/core/kernel-headers/PKGBUILD @@ -1,27 +1,30 @@ -# $Id: PKGBUILD 3465 2008-06-22 20:06:08Z jgc $ +# $Id: PKGBUILD 19341 2008-11-20 14:48:13Z andyrtr $ # Maintainer: Jan de Groot +# Maintainer: Andreas Radke + pkgname=kernel-headers -pkgver=2.6.25.8 -_basever=2.6.25 -pkgrel=10 +pkgver=2.6.28.5 +_basever=2.6.28 +pkgrel=1 pkgdesc="Kernel headers sanitized for use in userspace" arch=('i686' 'x86_64') license=('GPL') url="http://www.gnu.org/software/libc" groups=('base') source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-${_basever}.tar.bz2 - http://www.kernel.org/pub/linux/kernel/v2.6/patch-${pkgver}.bz2 - netfilter-includes.patch) -md5sums=('db95a49a656a3247d4995a797d333153' - '007e6aca33604bc09687790361026d3c' - '671fa5d449e145199a871d1a41514122') + http://www.kernel.org/pub/linux/kernel/v2.6/patch-${pkgver}.bz2 serial.diff) +md5sums=('d351e44709c9810b85e29b877f50968a' + '7a062fcdec46cec78c3fedbf558e334b' + 'd66b5cc1e1c2ce40d06d77167f36dfd9') build() { - cd ${startdir}/src/linux-${_basever} - patch -Np1 -i ${startdir}/src/patch-${pkgver} || return 1 - patch -Np1 -i ${startdir}/src/netfilter-includes.patch || return 1 + cd ${srcdir}/linux-${_basever} + patch -Np1 -i ${srcdir}/patch-${pkgver} || return 1 +# patch -p0 < ../../serial.diff make mrproper make headers_check || return 1 - make INSTALL_HDR_PATH=${startdir}/pkg/usr headers_install + make INSTALL_HDR_PATH=${pkgdir}/usr headers_install + + rm -rf ${pkgdir}/usr/include/drm } diff --git a/abs/core/kernel-headers/serial.diff b/abs/core/kernel-headers/serial.diff new file mode 100644 index 0000000..9b53e48 --- /dev/null +++ b/abs/core/kernel-headers/serial.diff @@ -0,0 +1,13 @@ +--- include/linux/serial.h.orig 2009-02-11 05:59:28.000000000 +0000 ++++ include/linux/serial.h 2009-02-11 06:09:24.000000000 +0000 +@@ -10,8 +10,9 @@ + #ifndef _LINUX_SERIAL_H + #define _LINUX_SERIAL_H + +-#ifdef __KERNEL__ + #include ++ ++#ifdef __KERNEL__ + #include + + /* diff --git a/abs/core/kernel26/PKGBUILD b/abs/core/kernel26/PKGBUILD index b96120c..8248fc5 100644 --- a/abs/core/kernel26/PKGBUILD +++ b/abs/core/kernel26/PKGBUILD @@ -1,66 +1,72 @@ -# $Id: PKGBUILD 10337 2008-08-26 21:10:56Z tpowa $ +# $Id: PKGBUILD 25277 2009-01-25 10:01:21Z tpowa $ # Maintainer: Tobias Powalowski # Maintainer: Thomas Baechler +# Mainterner: Cecil Waton pkgname=kernel26 -_basekernel=2.6.26 -pkgver=2.6.26.3 -pkgrel=10 -#_patchname="patch-${pkgver}-${pkgrel}-ARCH" -_patchname="patch-${pkgver}-1-ARCH" +_basekernel=2.6.28 +pkgver=2.6.28.5 +pkgrel=4 +_pkgrel=1 +_patchname="patch-${pkgver}-${_pkgrel}-ARCH" +_fbpatchname="fbcondecor-0.9.5-2.6.28.patch" +#_patchname="patch-${pkgver}-1-ARCH" pkgdesc="The Linux Kernel and modules" arch=(i686 x86_64) license=('GPL2') groups=('base') url="http://www.kernel.org" backup=(etc/mkinitcpio.d/${pkgname}.preset) -depends=('coreutils' 'module-init-tools' 'mkinitcpio>=0.5.18') +depends=('coreutils' 'module-init-tools' 'mkinitcpio>=0.5.20') # pwc, ieee80211 and hostap-driver26 modules are included in kernel26 now # nforce package support was abandoned by nvidia, kernel modules should cover everything now. # kernel24 support is dropped since glibc24 replaces=('kernel24' 'kernel24-scsi' 'kernel26-scsi' 'alsa-driver' 'ieee80211' 'hostap-driver26' 'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv' - 'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs') + 'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs' + 'gspcav1' 'atl2' 'wlan-ng26') install=kernel26.install source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2 ftp://ftp.archlinux.org/other/kernel26/${_patchname}.bz2 + http://dev.gentoo.org/~spock/projects/fbcondecor/archive/${_fbpatchname} # the main kernel config files config config.x86_64 # standard config files for mkinitcpio ramdisk kernel26.preset logo_linux_clut224.ppm - logo_linux_mono.pbm - logo_linux_vga16.ppm) -md5sums=('5169d01c405bc3f866c59338e217968c' - '003e89dd71b32ae9b93cd1601da3b1b0' - '4fd1071a8dc2ea993aed81d5920de18d' - 'd5ad1f296356d159a2616a49d98b3434' - '25584700a0a679542929c4bed31433b6' - '7bdfe2e1daedb324fdfdfa95ba4e2430' - 'a88d90384e50bd061a81fcc6573fc3bb' - 'f536292192a69d590b2ffd4700c14185') + serial.diff + ext4.patch) +optdepends=('crda: to set the correct wireless channels of your country') +md5sums=('d351e44709c9810b85e29b877f50968a' + '6e63a5f54c142f42de7e59fc5f75eab2' + '04b1413586111705ba790542c6e82350' + '4c3f00c90fb23c91d600694c886f2ddc' + '959b317feb974d8906c5e15e7c76ad8f' + 'ceb38003807a5aa1a00c8d4b9f028893' + '7bdfe2e1daedb324fdfdfa95ba4e2430' + 'd66b5cc1e1c2ce40d06d77167f36dfd9') build() { KARCH=x86 - cd $startdir/src/linux-$_basekernel + cd ${srcdir}/linux-$_basekernel # Add -ARCH patches # See http://projects.archlinux.org/git/?p=linux-2.6-ARCH.git;a=summary - patch -Np1 -i $startdir/src/${_patchname} || return 1 + patch -Np1 -i ${srcdir}/${_patchname} || return 1 + patch -Np1 -i ${srcdir}/${_fbpatchname} || return 1 + patch -Np1 -i ${srcdir}/ext4.patch || return 1 +# patch -p0 < ../../serial.diff if [ "$CARCH" = "x86_64" ]; then cat ../config.x86_64 >./.config else cat ../config >./.config fi - cp ../logo_linux_clut224.ppm drivers/video/logo/ - cp ../logo_linux_mono.ppm drivers/video/logo/ - cp ../logo_linux_vga16.ppm drivers/video/logo/ - # build the full kernel version to use in pathnames - . ./.config - ### next line is only needed for rc kernels - #_kernver="2.6.25${CONFIG_LOCALVERSION}" - _kernver="${_basekernel}${CONFIG_LOCALVERSION}" + # get kernel version + cp ../logo_linux_clut224.ppm drivers/video/logo + echo \#\!/bin/sh > scripts/setlocalversion + make prepare + _kernver="$(make kernelrelease)" # load configuration yes "" | make config # build! @@ -71,89 +77,92 @@ build() { #return 1 #################### make bzImage modules || return 1 - mkdir -p $startdir/pkg/{lib/modules,boot} - make INSTALL_MOD_PATH=$startdir/pkg modules_install || return 1 - cp System.map $startdir/pkg/boot/System.map26 - cp arch/$KARCH/boot/bzImage $startdir/pkg/boot/vmlinuz26 + mkdir -p ${pkgdir}/{lib/modules,boot} + make INSTALL_MOD_PATH=${pkgdir} modules_install || return 1 + cp System.map ${pkgdir}/boot/System.map26 + cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz26 install -D -m644 Makefile \ - $startdir/pkg/usr/src/linux-${_kernver}/Makefile + ${pkgdir}/usr/src/linux-${_kernver}/Makefile install -D -m644 kernel/Makefile \ - $startdir/pkg/usr/src/linux-${_kernver}/kernel/Makefile + ${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile install -D -m644 .config \ - $startdir/pkg/usr/src/linux-${_kernver}/.config - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/include + ${pkgdir}/usr/src/linux-${_kernver}/.config + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include for i in acpi asm-{generic,x86} config linux math-emu media net pcmcia scsi sound video; do - cp -a include/$i $startdir/pkg/usr/src/linux-${_kernver}/include/ + cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/ done + # copy arch includes for external modules + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86 + cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/ + # copy files necessary for later builds, like nvidia and vmware - cp Module.symvers $startdir/pkg/usr/src/linux-${_kernver} - cp -a scripts $startdir/pkg/usr/src/linux-${_kernver} + cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver} + cp -a scripts ${pkgdir}/usr/src/linux-${_kernver} # fix permissions on scripts dir - chmod og-w -R $startdir/pkg/usr/src/linux-${_kernver}/scripts - #mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/.tmp_versions + chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts + #mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/kernel + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel - cp arch/$KARCH/Makefile $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/ + cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/ if [ "$CARCH" = "i686" ]; then - cp arch/$KARCH/Makefile_32.cpu $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/ + cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/ fi - cp arch/$KARCH/kernel/asm-offsets.s $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/kernel/ + cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/ # add headers for lirc package - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video - cp drivers/media/video/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video/ + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video + cp drivers/media/video/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/ for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301; do - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video/$i - cp -a drivers/media/video/$i/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video/$i + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i + cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i done # add dm headers - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/md - cp drivers/md/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/md + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md + cp drivers/md/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/md # add inotify.h - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/include/linux - cp include/linux/inotify.h $startdir/pkg/usr/src/linux-${_kernver}/include/linux/ + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux + cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/ # add CLUSTERIP file for iptables - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/net/ipv4/netfilter/ + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/ipv4/netfilter/ # add wireless headers - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/net/mac80211/ - cp net/mac80211/*.h $startdir/pkg/usr/src/linux-${_kernver}/net/mac80211/ + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/ + cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/ # add dvb headers for external modules # in reference to: # http://bugs.archlinux.org/task/9912 - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core - cp drivers/media/dvb/dvb-core/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/ + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core + cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/ # add dvb headers for external modules # in reference to: # http://bugs.archlinux.org/task/11194 - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/include/config/dvb/ - cp include/config/dvb/*.h $startdir/pkg/usr/src/linux-${_kernver}/include/config/dvb/ + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/ + cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/ # add xfs and shmem for aufs building - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/fs/xfs - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/mm - cp fs/xfs/xfs_sb.h $startdir/pkg/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm + cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h # add vmlinux - cp vmlinux $startdir/pkg/usr/src/linux-${_kernver} + cp vmlinux ${pkgdir}/usr/src/linux-${_kernver} # copy in Kconfig files for i in `find . -name "Kconfig*"`; do - mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'` - cp $i $startdir/pkg/usr/src/linux-${_kernver}/$i + mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'` + cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i done - cd $startdir/pkg/usr/src/linux-${_kernver}/include && ln -s asm-$KARCH asm + cd ${pkgdir}/usr/src/linux-${_kernver}/include && ln -s asm-$KARCH asm - chown -R root.root $startdir/pkg/usr/src/linux-${_kernver} - find $startdir/pkg/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \; - cd $startdir/pkg/lib/modules/${_kernver} && \ + chown -R root.root ${pkgdir}/usr/src/linux-${_kernver} + find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \; + cd ${pkgdir}/lib/modules/${_kernver} && \ (rm -f source build; ln -sf ../../../usr/src/linux-${_kernver} build) # install fallback mkinitcpio.conf file and preset file for kernel - install -m644 -D $startdir/src/${pkgname}.preset $startdir/pkg/etc/mkinitcpio.d/${pkgname}.preset || return 1 + install -m644 -D ${srcdir}/${pkgname}.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset || return 1 # set correct depmod command for install sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" $startdir/kernel26.install echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${startdir}/pkg/etc/mkinitcpio.d/${pkgname}.kver # remove unneeded architectures - rm -rf $startdir/pkg/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa} + rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa} } - diff --git a/abs/core/kernel26/config b/abs/core/kernel26/config index e885de7..b188b73 100644 --- a/abs/core/kernel26/config +++ b/abs/core/kernel26/config @@ -1,14 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.26 -# Mon Jul 21 19:06:23 2008 +# Linux kernel version: 2.6.28 +# Wed Jul 1 14:07:15 2009 # # CONFIG_64BIT is not set CONFIG_X86_32=y # CONFIG_X86_64 is not set CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" -# CONFIG_GENERIC_LOCKBREAK is not set CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y @@ -24,16 +23,14 @@ CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y -# CONFIG_GENERIC_GPIO is not set CONFIG_ARCH_MAY_HAVE_PC_FDC=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y -# CONFIG_ARCH_HAS_ILOG2_U32 is not set -# CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y # CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y # CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set @@ -42,12 +39,12 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y # CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y # CONFIG_AUDIT_ARCH is not set -CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_X86_SMP=y +CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_32_SMP=y CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y @@ -61,13 +58,14 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_EXPERIMENTAL=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_LOCALVERSION="-ARCH" +CONFIG_LOCALVERSION="-LinHES" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y -# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y @@ -77,18 +75,8 @@ CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 # CONFIG_CGROUPS is not set -# CONFIG_CGROUP_DEBUG is not set -# CONFIG_CGROUP_NS is not set -# CONFIG_CGROUP_DEVICE is not set -# CONFIG_CPUSETS is not set -# CONFIG_HAVE_UNSTABLE_SCHED_CLOCK is not set +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y # CONFIG_GROUP_SCHED is not set -# CONFIG_FAIR_GROUP_SCHED is not set -# CONFIG_RT_GROUP_SCHED is not set -# CONFIG_USER_SCHED is not set -# CONFIG_CGROUP_SCHED is not set -# CONFIG_CGROUP_CPUACCT is not set -# CONFIG_RESOURCE_COUNTERS is not set CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_RELAY=y @@ -104,7 +92,6 @@ CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y -CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set CONFIG_KALLSYMS_EXTRA_PASS=y @@ -122,7 +109,9 @@ CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y +CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y @@ -130,12 +119,15 @@ CONFIG_SLUB=y CONFIG_PROFILING=y # CONFIG_MARKERS is not set CONFIG_OPROFILE=m +CONFIG_OPROFILE_IBS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y -# CONFIG_HAVE_DMA_ATTRS is not set -CONFIG_PROC_PAGE_MONITOR=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set @@ -153,6 +145,7 @@ CONFIG_LBD=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_LSF=y CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set # # IO Schedulers @@ -168,6 +161,7 @@ CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_PREEMPT_NOTIFIERS=y CONFIG_CLASSIC_RCU=y +CONFIG_FREEZER=y # # Processor type and features @@ -177,17 +171,14 @@ CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set -# CONFIG_X86_NUMAQ is not set -# CONFIG_X86_SUMMIT is not set -# CONFIG_X86_BIGSMP is not set -# CONFIG_X86_VISWS is not set # CONFIG_X86_GENERICARCH is not set -# CONFIG_X86_ES7000 is not set -# CONFIG_X86_RDC321X is not set # CONFIG_X86_VSMP is not set +# CONFIG_X86_RDC321X is not set CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y CONFIG_VMI=y @@ -196,6 +187,8 @@ CONFIG_VMI=y CONFIG_LGUEST_GUEST=y CONFIG_PARAVIRT=y # CONFIG_PARAVIRT_CLOCK is not set +# CONFIG_PARAVIRT_DEBUG is not set +# CONFIG_MEMTEST is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -212,7 +205,6 @@ CONFIG_M686=y # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set -# CONFIG_MWINCHIP2 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MGEODEGX1 is not set # CONFIG_MGEODE_LX is not set @@ -232,13 +224,19 @@ CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y -CONFIG_X86_GOOD_APIC=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 CONFIG_X86_DEBUGCTLMSR=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR_32=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +# CONFIG_X86_DS is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y @@ -260,6 +258,8 @@ CONFIG_TOSHIBA=m CONFIG_I8K=m CONFIG_X86_REBOOTFIXUPS=y CONFIG_MICROCODE=m +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=m CONFIG_X86_CPUID=m @@ -268,6 +268,7 @@ CONFIG_HIGHMEM4G=y # CONFIG_HIGHMEM64G is not set CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_HIGHMEM=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y @@ -278,19 +279,24 @@ CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y -# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y +CONFIG_MMU_NOTIFIER=y # CONFIG_HIGHPTE is not set +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW_64K=y # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y +# CONFIG_MTRR_SANITIZER is not set CONFIG_X86_PAT=y CONFIG_EFI=y -# CONFIG_IRQBALANCE is not set CONFIG_SECCOMP=y # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set @@ -300,15 +306,17 @@ CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y # CONFIG_CRASH_DUMP is not set +# CONFIG_KEXEC_JUMP is not set CONFIG_PHYSICAL_START=0x100000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_HOTPLUG_CPU=y # CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # -# Power management options +# Power management and ACPI options # CONFIG_PM=y # CONFIG_PM_DEBUG is not set @@ -329,8 +337,7 @@ CONFIG_ACPI_BATTERY=m CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=m -CONFIG_ACPI_DOCK=m -CONFIG_ACPI_BAY=m +CONFIG_ACPI_DOCK=y CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m @@ -341,8 +348,7 @@ CONFIG_ACPI_TOSHIBA=m CONFIG_ACPI_CUSTOM_DSDT_INITRD=y CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI_SLOT=m CONFIG_ACPI_SYSTEM=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=m @@ -423,7 +429,7 @@ CONFIG_HOTPLUG_PCI_PCIE=m CONFIG_PCIEAER=y # CONFIG_PCIEASPM is not set CONFIG_ARCH_SUPPORTS_MSI=y -# CONFIG_PCI_MSI is not set +CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y # CONFIG_PCI_DEBUG is not set CONFIG_HT_IRQ=y @@ -472,12 +478,11 @@ CONFIG_HOTPLUG_PCI_SHPC=m # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_MISC=y - -# -# Networking -# +CONFIG_HAVE_ATOMIC_IOMAP=y CONFIG_NET=y # @@ -491,6 +496,7 @@ CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set # CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m # CONFIG_NET_KEY_MIGRATE is not set CONFIG_INET=y @@ -502,7 +508,10 @@ CONFIG_IP_FIB_HASH=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_VERBOSE=y -# CONFIG_IP_PNP is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y CONFIG_NET_IPIP=m CONFIG_NET_IPGRE=m # CONFIG_NET_IPGRE_BROADCAST is not set @@ -526,36 +535,6 @@ CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set -CONFIG_IP_VS=m -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m - -# -# IPVS application helper -# -CONFIG_IP_VS_FTP=m CONFIG_IPV6=m CONFIG_IPV6_PRIVACY=y CONFIG_IPV6_ROUTER_PREF=y @@ -609,18 +588,20 @@ CONFIG_NF_CONNTRACK_SANE=m CONFIG_NF_CONNTRACK_SIP=m CONFIG_NF_CONNTRACK_TFTP=m CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m CONFIG_NETFILTER_XTABLES=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_NOTRACK=m CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m CONFIG_NETFILTER_XT_MATCH_COMMENT=m @@ -631,41 +612,76 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m CONFIG_NETFILTER_XT_MATCH_HELPER=m CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m CONFIG_NETFILTER_XT_MATCH_MAC=m CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_OWNER=m CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m CONFIG_NETFILTER_XT_MATCH_RATEEST=m CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_IPV6 is not set +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m # # IP: Netfilter Configuration # +CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m CONFIG_NF_CONNTRACK_PROC_COMPAT=y CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_RECENT=m -CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_TARGET_LOG=m @@ -673,8 +689,8 @@ CONFIG_IP_NF_TARGET_ULOG=m CONFIG_NF_NAT=m CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_NF_NAT_SNMP_BASIC=m CONFIG_NF_NAT_PROTO_DCCP=m CONFIG_NF_NAT_PROTO_GRE=m @@ -688,10 +704,11 @@ CONFIG_NF_NAT_PPTP=m CONFIG_NF_NAT_H323=m CONFIG_NF_NAT_SIP=m CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m @@ -702,24 +719,21 @@ CONFIG_IP_NF_ARP_MANGLE=m CONFIG_NF_CONNTRACK_IPV6=m CONFIG_IP6_NF_QUEUE=m CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m CONFIG_IP6_NF_MATCH_HL=m CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_MATCH_RT=m CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_TARGET_HL=m CONFIG_IP6_NF_RAW=m - -# -# Bridge: Netfilter Configuration -# +CONFIG_IP6_NF_SECURITY=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m @@ -728,6 +742,7 @@ CONFIG_BRIDGE_EBT_802_3=m CONFIG_BRIDGE_EBT_AMONG=m CONFIG_BRIDGE_EBT_ARP=m CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m CONFIG_BRIDGE_EBT_LIMIT=m CONFIG_BRIDGE_EBT_MARK=m CONFIG_BRIDGE_EBT_PKTTYPE=m @@ -756,8 +771,11 @@ CONFIG_ATM_LANE=m CONFIG_ATM_MPOA=m CONFIG_ATM_BR2684=m # CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m CONFIG_BRIDGE=m +# CONFIG_NET_DSA is not set CONFIG_VLAN_8021Q=m +# CONFIG_VLAN_8021Q_GVRP is not set # CONFIG_DECNET is not set CONFIG_LLC=m CONFIG_LLC2=m @@ -778,6 +796,7 @@ CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m CONFIG_NET_SCH_RED=m CONFIG_NET_SCH_SFQ=m CONFIG_NET_SCH_TEQL=m @@ -812,6 +831,7 @@ CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y @@ -886,7 +906,7 @@ CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m # CONFIG_BT_BNEP_MC_FILTER is not set # CONFIG_BT_BNEP_PROTO_FILTER is not set -CONFIG_BT_CMTP=m +# CONFIG_BT_CMTP is not set CONFIG_BT_HIDP=m # @@ -894,6 +914,7 @@ CONFIG_BT_HIDP=m # CONFIG_BT_HCIUSB=m CONFIG_BT_HCIUSB_SCO=y +# CONFIG_BT_HCIBTUSB is not set CONFIG_BT_HCIBTSDIO=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y @@ -910,36 +931,28 @@ CONFIG_BT_HCIVHCI=m CONFIG_AF_RXRPC=m # CONFIG_AF_RXRPC_DEBUG is not set CONFIG_RXKAD=m +CONFIG_PHONET=m CONFIG_FIB_RULES=y - -# -# Wireless -# +CONFIG_WIRELESS=y CONFIG_CFG80211=m CONFIG_NL80211=y +CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_MAC80211=m # # Rate control algorithm selection # +CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# +# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -962,7 +975,9 @@ CONFIG_NET_9P_VIRTIO=m CONFIG_UEVENT_HELPER_PATH="" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=m +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set @@ -1050,7 +1065,7 @@ CONFIG_PARPORT_AX88796=m CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y -# CONFIG_PNP_DEBUG is not set +# CONFIG_PNP_DEBUG_MESSAGES is not set # # Protocols @@ -1082,6 +1097,7 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set CONFIG_ATA_OVER_ETH=m CONFIG_VIRTIO_BLK=m +# CONFIG_BLK_DEV_HD is not set CONFIG_MISC_DEVICES=y # CONFIG_IBM_ASM is not set CONFIG_PHANTOM=m @@ -1092,8 +1108,13 @@ CONFIG_TIFM_7XX1=m CONFIG_ACER_WMI=m CONFIG_ASUS_LAPTOP=m CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set CONFIG_TC1100_WMI=m +CONFIG_HP_WMI=m +CONFIG_ICS932S401=m CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m CONFIG_SONY_LAPTOP=m # CONFIG_SONYPI_COMPAT is not set CONFIG_THINKPAD_ACPI=m @@ -1104,22 +1125,26 @@ CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y CONFIG_INTEL_MENLOW=m CONFIG_EEEPC_LAPTOP=m CONFIG_ENCLOSURE_SERVICES=m +CONFIG_HP_ILO=m +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m CONFIG_HAVE_IDE=y CONFIG_IDE=m -CONFIG_BLK_DEV_IDE=m # # Please see Documentation/ide/ide.txt for help/info on IDE drives # +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_ATAPI=y # CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=m -CONFIG_IDEDISK_MULTI_MODE=y +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y CONFIG_BLK_DEV_IDECS=m CONFIG_BLK_DEV_DELKIN=m CONFIG_BLK_DEV_IDECD=m CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y CONFIG_BLK_DEV_IDETAPE=m -CONFIG_BLK_DEV_IDEFLOPPY=m CONFIG_BLK_DEV_IDESCSI=m CONFIG_BLK_DEV_IDEACPI=y # CONFIG_IDE_TASK_IOCTL is not set @@ -1150,12 +1175,9 @@ CONFIG_BLK_DEV_AMD74XX=m CONFIG_BLK_DEV_ATIIXP=m CONFIG_BLK_DEV_CMD64X=m CONFIG_BLK_DEV_TRIFLEX=m -CONFIG_BLK_DEV_CY82C693=m CONFIG_BLK_DEV_CS5520=m CONFIG_BLK_DEV_CS5530=m CONFIG_BLK_DEV_CS5535=m -CONFIG_BLK_DEV_HPT34X=m -# CONFIG_HPT34X_AUTODMA is not set CONFIG_BLK_DEV_HPT366=m CONFIG_BLK_DEV_JMICRON=m CONFIG_BLK_DEV_SC1200=m @@ -1187,8 +1209,6 @@ CONFIG_BLK_DEV_HT6560B=m CONFIG_BLK_DEV_QD65XX=m CONFIG_BLK_DEV_UMC8672=m CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_BLK_DEV_HD_ONLY is not set -# CONFIG_BLK_DEV_HD is not set # # SCSI device support @@ -1325,6 +1345,11 @@ CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_NINJA_SCSI=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_ACPI=y @@ -1411,9 +1436,6 @@ CONFIG_DM_SNAPSHOT=m CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_HP=m CONFIG_DM_DELAY=m CONFIG_DM_UEVENT=y CONFIG_FUSION=y @@ -1455,7 +1477,6 @@ CONFIG_I2O_PROC=m CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=y CONFIG_NETDEVICES=y -CONFIG_NETDEVICES_MULTIQUEUE=y CONFIG_IFB=m CONFIG_DUMMY=m CONFIG_BONDING=m @@ -1465,9 +1486,25 @@ CONFIG_TUN=m CONFIG_VETH=m CONFIG_NET_SB1000=m # CONFIG_ARCNET is not set -# CONFIG_PHYLIB is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set CONFIG_NET_ETHERNET=y -CONFIG_MII=m +CONFIG_MII=y CONFIG_HAPPYMEAL=m CONFIG_SUNGEM=m CONFIG_CASSINI=m @@ -1476,14 +1513,14 @@ CONFIG_EL1=m CONFIG_EL2=m CONFIG_ELPLUS=m CONFIG_EL16=m -CONFIG_EL3=m +CONFIG_EL3=y CONFIG_3C515=m -CONFIG_VORTEX=m -CONFIG_TYPHOON=m +CONFIG_VORTEX=y +CONFIG_TYPHOON=y CONFIG_LANCE=m CONFIG_NET_VENDOR_SMC=y CONFIG_WD80x3=m -CONFIG_ULTRA=m +CONFIG_ULTRA=y CONFIG_SMC9194=m CONFIG_ENC28J60=m # CONFIG_ENC28J60_WRITEVERIFY is not set @@ -1492,18 +1529,18 @@ CONFIG_NI52=m CONFIG_NI65=m CONFIG_NET_TULIP=y CONFIG_DE2104X=m -CONFIG_TULIP=m +CONFIG_TULIP=y # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_TULIP_NAPI is not set CONFIG_DE4X5=m -CONFIG_WINBOND_840=m -CONFIG_DM9102=m -CONFIG_ULI526X=m -CONFIG_PCMCIA_XIRCOM=m +CONFIG_WINBOND_840=y +CONFIG_DM9102=y +CONFIG_ULI526X=y +CONFIG_PCMCIA_XIRCOM=y CONFIG_AT1700=m CONFIG_DEPCA=m -CONFIG_HP100=m +CONFIG_HP100=y CONFIG_NET_ISA=y CONFIG_E2100=m CONFIG_EWRK3=m @@ -1520,89 +1557,93 @@ CONFIG_SEEQ8005=m # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=y -CONFIG_PCNET32=m -CONFIG_AMD8111_ETH=m -# CONFIG_AMD8111E_NAPI is not set +CONFIG_PCNET32=y +CONFIG_AMD8111_ETH=y CONFIG_ADAPTEC_STARFIRE=m -# CONFIG_ADAPTEC_STARFIRE_NAPI is not set CONFIG_AC3200=m CONFIG_APRICOT=m -CONFIG_B44=m +CONFIG_B44=y CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=y -CONFIG_FORCEDETH=m +CONFIG_FORCEDETH=y # CONFIG_FORCEDETH_NAPI is not set CONFIG_CS89x0=m -CONFIG_EEPRO100=m -CONFIG_E100=m +CONFIG_EEPRO100=y +CONFIG_E100=y CONFIG_FEALNX=m -CONFIG_NATSEMI=m +CONFIG_NATSEMI=y CONFIG_NE2K_PCI=m CONFIG_8139CP=m -CONFIG_8139TOO=m +CONFIG_8139TOO=y # CONFIG_8139TOO_PIO is not set CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y # CONFIG_8139_OLD_RX_RESET is not set CONFIG_R6040=m -CONFIG_SIS900=m -CONFIG_EPIC100=m +CONFIG_SIS900=y +CONFIG_EPIC100=y CONFIG_SUNDANCE=m # CONFIG_SUNDANCE_MMIO is not set CONFIG_TLAN=m -CONFIG_VIA_RHINE=m -# CONFIG_VIA_RHINE_MMIO is not set -# CONFIG_VIA_RHINE_NAPI is not set +CONFIG_VIA_RHINE=y +CONFIG_VIA_RHINE_MMIO=y CONFIG_SC92031=m CONFIG_NET_POCKET=y CONFIG_ATP=m CONFIG_DE600=m CONFIG_DE620=m +CONFIG_ATL2=m CONFIG_NETDEV_1000=y CONFIG_ACENIC=m # CONFIG_ACENIC_OMIT_TIGON_I is not set -CONFIG_DL2K=m +CONFIG_DL2K=y CONFIG_E1000=m -# CONFIG_E1000_NAPI is not set -# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set CONFIG_E1000E=m -CONFIG_E1000E_ENABLED=y CONFIG_IP1000=m CONFIG_IGB=m -CONFIG_NS83820=m +# CONFIG_IGB_LRO is not set +CONFIG_IGB_DCA=y +CONFIG_NS83820=y CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m -CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set -# CONFIG_R8169_VLAN is not set -CONFIG_SIS190=m -CONFIG_SKGE=m +CONFIG_R8169=y +CONFIG_R8169_VLAN=y +CONFIG_SIS190=y +CONFIG_SKGE=y # CONFIG_SKGE_DEBUG is not set CONFIG_SKY2=m # CONFIG_SKY2_DEBUG is not set -CONFIG_VIA_VELOCITY=m -CONFIG_TIGON3=m -CONFIG_BNX2=m +CONFIG_VIA_VELOCITY=y +CONFIG_TIGON3=y +CONFIG_BNX2=y CONFIG_QLA3XXX=m CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_JME=m CONFIG_NETDEV_10000=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y -CONFIG_CHELSIO_T1_NAPI=y CONFIG_CHELSIO_T3=m +CONFIG_ENIC=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y CONFIG_IXGB=m -# CONFIG_IXGB_NAPI is not set CONFIG_S2IO=m -# CONFIG_S2IO_NAPI is not set CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y CONFIG_NETXEN_NIC=m CONFIG_NIU=m -# CONFIG_MLX4_CORE is not set +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y CONFIG_TEHUTI=m CONFIG_BNX2X=m +CONFIG_QLGE=m CONFIG_SFC=m # CONFIG_TR is not set @@ -1626,6 +1667,8 @@ CONFIG_LIBERTAS_USB=m CONFIG_LIBERTAS_CS=m CONFIG_LIBERTAS_SDIO=m # CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m CONFIG_AIRO=m CONFIG_HERMES=m CONFIG_PLX_HERMES=m @@ -1645,22 +1688,25 @@ CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_RTL8180=m CONFIG_RTL8187=m CONFIG_ADM8211=m +# CONFIG_MAC80211_HWSIM is not set CONFIG_P54_COMMON=m CONFIG_P54_USB=m CONFIG_P54_PCI=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m CONFIG_IWLWIFI=m CONFIG_IWLCORE=m CONFIG_IWLWIFI_LEDS=y CONFIG_IWLWIFI_RFKILL=y -CONFIG_IWL4965=m -CONFIG_IWL4965_HT=y -CONFIG_IWL4965_LEDS=y -CONFIG_IWL4965_SPECTRUM_MEASUREMENT=y -CONFIG_IWL4965_SENSITIVITY=y # CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLAGN=m +CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y +CONFIG_IWLAGN_LEDS=y +CONFIG_IWL4965=y +CONFIG_IWL5000=y CONFIG_IWL3945=m +CONFIG_IWL3945_RFKILL=y CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y CONFIG_IWL3945_LEDS=y # CONFIG_IWL3945_DEBUG is not set @@ -1673,8 +1719,6 @@ CONFIG_HOSTAP_CS=m CONFIG_B43=m CONFIG_B43_PCI_AUTOSELECT=y CONFIG_B43_PCICORE_AUTOSELECT=y -CONFIG_B43_PCMCIA=y -CONFIG_B43_PIO=y CONFIG_B43_LEDS=y CONFIG_B43_RFKILL=y # CONFIG_B43_DEBUG is not set @@ -1692,25 +1736,18 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y -CONFIG_RT2X00_LIB_RFKILL=y -CONFIG_RT2X00_LIB_LEDS=y CONFIG_RT2400PCI=m -CONFIG_RT2400PCI_RFKILL=y -CONFIG_RT2400PCI_LEDS=y CONFIG_RT2500PCI=m -CONFIG_RT2500PCI_RFKILL=y -CONFIG_RT2500PCI_LEDS=y CONFIG_RT61PCI=m -CONFIG_RT61PCI_RFKILL=y -CONFIG_RT61PCI_LEDS=y CONFIG_RT2500USB=m -CONFIG_RT2500USB_LEDS=y CONFIG_RT73USB=m -CONFIG_RT73USB_LEDS=y +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_RFKILL=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1724,6 +1761,7 @@ CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m @@ -1737,6 +1775,7 @@ CONFIG_USB_ARMLINUX=y CONFIG_USB_EPSON2888=y CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_HSO=m CONFIG_NET_PCMCIA=y CONFIG_PCMCIA_3C589=m CONFIG_PCMCIA_3C574=m @@ -1770,8 +1809,10 @@ CONFIG_ATM_HORIZON=m # CONFIG_ATM_HORIZON_DEBUG is not set CONFIG_ATM_IA=m # CONFIG_ATM_IA_DEBUG is not set -CONFIG_ATM_FORE200E_MAYBE=m -# CONFIG_ATM_FORE200E_PCA is not set +CONFIG_ATM_FORE200E=m +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 CONFIG_ATM_HE=m # CONFIG_ATM_HE_USE_SUNI is not set # CONFIG_FDDI is not set @@ -1800,7 +1841,16 @@ CONFIG_NETPOLL=y # CONFIG_NETPOLL_TRAP is not set CONFIG_NET_POLL_CONTROLLER=y CONFIG_VIRTIO_NET=m -CONFIG_ISDN=m +CONFIG_ISDN=y +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m CONFIG_ISDN_I4L=m CONFIG_ISDN_PPP=y CONFIG_ISDN_PPP_VJ=y @@ -1903,7 +1953,7 @@ CONFIG_GIGASET_M101=m CONFIG_GIGASET_UNDOCREQ=y CONFIG_ISDN_CAPI=m CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y -# CONFIG_CAPI_TRACE is not set +CONFIG_CAPI_TRACE=y CONFIG_ISDN_CAPI_MIDDLEWARE=y CONFIG_ISDN_CAPI_CAPI20=m CONFIG_ISDN_CAPI_CAPIFS_BOOL=y @@ -1966,9 +2016,12 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y # CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_OLPC=y CONFIG_MOUSE_SERIAL=y CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m CONFIG_MOUSE_INPORT=m # CONFIG_MOUSE_ATIXL is not set CONFIG_MOUSE_LOGIBM=m @@ -2015,11 +2068,12 @@ CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_HTCPEN=m CONFIG_TOUCHSCREEN_PENMOUNT=m CONFIG_TOUCHSCREEN_TOUCHRIGHT=m CONFIG_TOUCHSCREEN_TOUCHWIN=m -CONFIG_TOUCHSCREEN_UCB1400=m CONFIG_TOUCHSCREEN_WM97XX=m # CONFIG_TOUCHSCREEN_WM9705 is not set # CONFIG_TOUCHSCREEN_WM9712 is not set @@ -2036,6 +2090,7 @@ CONFIG_TOUCHSCREEN_USB_IRTOUCH=y CONFIG_TOUCHSCREEN_USB_IDEALTEK=y CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_APANEL=m @@ -2046,6 +2101,7 @@ CONFIG_INPUT_ATI_REMOTE2=m CONFIG_INPUT_KEYSPAN_REMOTE=m CONFIG_INPUT_POWERMATE=m CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m CONFIG_INPUT_UINPUT=m # @@ -2069,6 +2125,7 @@ CONFIG_GAMEPORT_FM801=m # Character devices # CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y @@ -2131,7 +2188,7 @@ CONFIG_HW_RANDOM_INTEL=m CONFIG_HW_RANDOM_AMD=m CONFIG_HW_RANDOM_GEODE=m CONFIG_HW_RANDOM_VIA=m -# CONFIG_HW_RANDOM_VIRTIO is not set +CONFIG_HW_RANDOM_VIRTIO=m CONFIG_NVRAM=m CONFIG_DTLK=m CONFIG_R3964=m @@ -2148,7 +2205,7 @@ CONFIG_IPWIRELESS=m CONFIG_MWAVE=m CONFIG_PC8736x_GPIO=m CONFIG_NSC_GPIO=m -# CONFIG_CS5535_GPIO is not set +CONFIG_CS5535_GPIO=m # CONFIG_RAW_DRIVER is not set # CONFIG_HPET is not set CONFIG_HANGCHECK_TIMER=m @@ -2162,12 +2219,17 @@ CONFIG_DEVPORT=y CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=m CONFIG_I2C_ALGOPCA=m # # I2C Hardware Bus support # + +# +# PC SMBus host controller drivers +# CONFIG_I2C_ALI1535=m CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m @@ -2175,35 +2237,52 @@ CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m CONFIG_I2C_I801=m -CONFIG_I2C_I810=m +CONFIG_I2C_ISCH=m CONFIG_I2C_PIIX4=m CONFIG_I2C_NFORCE2=m -CONFIG_I2C_OCORES=m -CONFIG_I2C_PARPORT=m -CONFIG_I2C_PARPORT_LIGHT=m -CONFIG_I2C_PROSAVAGE=m -CONFIG_I2C_SAVAGE4=m -CONFIG_I2C_SIMTEC=m -CONFIG_SCx200_ACB=m +CONFIG_I2C_NFORCE2_S4985=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m -CONFIG_I2C_TAOS_EVM=m -# CONFIG_I2C_STUB is not set -CONFIG_I2C_TINY_USB=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_OCORES=m +CONFIG_I2C_SIMTEC=m + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Graphics adapter I2C/DDC channel drivers +# CONFIG_I2C_VOODOO3=m + +# +# Other I2C/SMBus bus drivers +# CONFIG_I2C_PCA_ISA=m CONFIG_I2C_PCA_PLATFORM=m +# CONFIG_I2C_STUB is not set +CONFIG_SCx200_ACB=m # # Miscellaneous I2C Chip support # CONFIG_DS1682=m +CONFIG_AT24=m CONFIG_SENSORS_EEPROM=m CONFIG_SENSORS_PCF8574=m CONFIG_PCF8575=m +CONFIG_SENSORS_PCA9539=m CONFIG_SENSORS_PCF8591=m CONFIG_SENSORS_MAX6875=m CONFIG_SENSORS_TSL2550=m @@ -2228,6 +2307,8 @@ CONFIG_SPI_LM70_LLP=m CONFIG_SPI_AT25=m CONFIG_SPI_SPIDEV=m CONFIG_SPI_TLE62X0=m +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_GPIOLIB is not set CONFIG_W1=m CONFIG_W1_CON=y @@ -2246,22 +2327,27 @@ CONFIG_W1_SLAVE_SMEM=m CONFIG_W1_SLAVE_DS2433=m # CONFIG_W1_SLAVE_DS2433_CRC is not set CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_BQ27000=m CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_PDA_POWER=m CONFIG_BATTERY_DS2760=m CONFIG_BATTERY_OLPC=m +CONFIG_BATTERY_BQ27x00=m CONFIG_HWMON=y CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m CONFIG_SENSORS_ADT7470=m CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m @@ -2293,6 +2379,7 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_MAX1111=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m @@ -2316,24 +2403,77 @@ CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_LIS3LV02D=m CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y -# CONFIG_WATCHDOG is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_SBC7240_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# ISA-based Watchdog Cards +# +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m +CONFIG_WDT_501=y + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # -CONFIG_SSB_POSSIBLE=y -CONFIG_SSB=m +CONFIG_SSB=y CONFIG_SSB_SPROM=y -CONFIG_SSB_BLOCKIO=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y CONFIG_SSB_B43_PCI_BRIDGE=y -CONFIG_SSB_PCMCIAHOST_POSSIBLE=y -CONFIG_SSB_PCMCIAHOST=y # CONFIG_SSB_DEBUG is not set CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y CONFIG_SSB_DRIVER_PCICORE=y @@ -2341,8 +2481,14 @@ CONFIG_SSB_DRIVER_PCICORE=y # # Multifunction device drivers # +# CONFIG_MFD_CORE is not set CONFIG_MFD_SM501=m # CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_WM8400=m +CONFIG_MFD_WM8350=m +CONFIG_MFD_WM8350_I2C=m +# CONFIG_REGULATOR is not set # # Multimedia devices @@ -2381,20 +2527,23 @@ CONFIG_MEDIA_TUNER_QT1010=m CONFIG_MEDIA_TUNER_XC2028=m CONFIG_MEDIA_TUNER_XC5000=m CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEO_V4L1=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DMA_CONTIG=m CONFIG_VIDEOBUF_DVB=m CONFIG_VIDEO_BTCX=m -CONFIG_VIDEO_IR_I2C=m CONFIG_VIDEO_IR=m CONFIG_VIDEO_TVEEPROM=m CONFIG_VIDEO_TUNER=m CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set # CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +CONFIG_VIDEO_IR_I2C=m # # Encoders/decoders and other helper chips @@ -2473,13 +2622,12 @@ CONFIG_VIDEO_CPIA_USB=m CONFIG_VIDEO_CPIA2=m CONFIG_VIDEO_SAA5246A=m CONFIG_VIDEO_SAA5249=m -CONFIG_TUNER_3036=m CONFIG_VIDEO_STRADIS=m -CONFIG_VIDEO_ZORAN_ZR36060=m CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m CONFIG_VIDEO_ZORAN_BUZ=m CONFIG_VIDEO_ZORAN_DC10=m -CONFIG_VIDEO_ZORAN_DC30=m CONFIG_VIDEO_ZORAN_LML33=m CONFIG_VIDEO_ZORAN_LML33R10=m CONFIG_VIDEO_ZORAN_AVS6EYES=m @@ -2488,7 +2636,6 @@ CONFIG_VIDEO_SAA7134=m CONFIG_VIDEO_SAA7134_ALSA=m CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_MXB=m -CONFIG_VIDEO_DPC=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_CX88=m @@ -2502,8 +2649,38 @@ CONFIG_VIDEO_IVTV=m CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_CX18=m CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_VIDEO_SH_MOBILE_CEU=m CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y @@ -2529,9 +2706,7 @@ CONFIG_USB_PWC=m # CONFIG_USB_PWC_DEBUG is not set CONFIG_USB_ZR364XX=m CONFIG_USB_STKWEBCAM=m -CONFIG_SOC_CAMERA=m -CONFIG_SOC_CAMERA_MT9M001=m -CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_USB_S2255=m CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_CADET=m CONFIG_RADIO_RTRACK=m @@ -2550,6 +2725,7 @@ CONFIG_RADIO_TYPHOON=m CONFIG_RADIO_ZOLTRIX=m CONFIG_USB_DSBR=m CONFIG_USB_SI470X=m +CONFIG_USB_MR800=m CONFIG_DVB_CAPTURE_DRIVERS=y # @@ -2589,15 +2765,15 @@ CONFIG_DVB_USB_DTT200U=m CONFIG_DVB_USB_OPERA1=m CONFIG_DVB_USB_AF9005=m CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m -CONFIG_DVB_CINERGYT2=m -CONFIG_DVB_CINERGYT2_TUNING=y -CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 -CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 -CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250 -CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y -CONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=20 +CONFIG_DVB_SIANO_SMS1XXX=m +CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y # # Supported FlexCopII (B2C2) Adapters @@ -2618,6 +2794,11 @@ CONFIG_DVB_BT8XX=m CONFIG_DVB_PLUTO2=m # +# Supported SDMC DM1105 Adapters +# +CONFIG_DVB_DM1105=m + +# # Supported DVB Frontends # @@ -2633,6 +2814,8 @@ CONFIG_DVB_CX24110=m CONFIG_DVB_CX24123=m CONFIG_DVB_MT312=m CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m CONFIG_DVB_STV0299=m CONFIG_DVB_TDA8083=m CONFIG_DVB_TDA10086=m @@ -2640,6 +2823,8 @@ CONFIG_DVB_VES1X93=m CONFIG_DVB_TUNER_ITD1000=m CONFIG_DVB_TDA826X=m CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m # # DVB-T (terrestrial) frontends @@ -2648,6 +2833,7 @@ CONFIG_DVB_SP8870=m CONFIG_DVB_SP887X=m CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set CONFIG_DVB_L64781=m CONFIG_DVB_TDA1004X=m CONFIG_DVB_NXT6000=m @@ -2691,6 +2877,13 @@ CONFIG_DVB_TUNER_DIB0070=m CONFIG_DVB_LNBP21=m CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m +CONFIG_DVB_LGS8GL5=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_AF9013=m CONFIG_DAB=y CONFIG_USB_DABUSB=m @@ -2724,6 +2917,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y @@ -2733,11 +2927,11 @@ CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_IMAGEBLIT=m # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=m -CONFIG_FB_SVGALIB=m +# CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_TILEBLITTING=y +# CONFIG_FB_TILEBLITTING is not set # # Frame buffer hardware drivers @@ -2753,7 +2947,6 @@ CONFIG_FB_CYBER2000=m CONFIG_FB_UVESA=m CONFIG_FB_VESA=y CONFIG_FB_EFI=y -# CONFIG_FB_IMAC is not set # CONFIG_FB_N411 is not set # CONFIG_FB_HGA is not set # CONFIG_FB_S1D13XXX is not set @@ -2784,34 +2977,44 @@ CONFIG_FB_ATY_CT=y CONFIG_FB_ATY_GENERIC_LCD=y CONFIG_FB_ATY_GX=y CONFIG_FB_ATY_BACKLIGHT=y -CONFIG_FB_S3=m +# CONFIG_FB_S3 is not set CONFIG_FB_SAVAGE=m CONFIG_FB_SAVAGE_I2C=y CONFIG_FB_SAVAGE_ACCEL=y CONFIG_FB_SIS=m CONFIG_FB_SIS_300=y CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m CONFIG_FB_NEOMAGIC=m CONFIG_FB_KYRO=m CONFIG_FB_3DFX=m CONFIG_FB_3DFX_ACCEL=y CONFIG_FB_VOODOO1=m -CONFIG_FB_VT8623=m +# CONFIG_FB_VT8623 is not set CONFIG_FB_CYBLA=m CONFIG_FB_TRIDENT=m CONFIG_FB_TRIDENT_ACCEL=y # CONFIG_FB_ARK is not set # CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set # CONFIG_FB_GEODE is not set # CONFIG_FB_SM501 is not set # CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_CORGI=m CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_MBP_NVIDIA=m +CONFIG_BACKLIGHT_SAHARA=m # # Display device support @@ -2827,12 +3030,12 @@ CONFIG_DISPLAY_SUPPORT=m # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set -CONFIG_VIDEO_SELECT=y # CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FB_CON_DECOR=y CONFIG_FONTS=y # CONFIG_FONT_8x8 is not set CONFIG_FONT_8x16=y @@ -2844,19 +3047,9 @@ CONFIG_FONT_8x16=y # CONFIG_FONT_SUN8x16 is not set # CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_10x18 is not set -CONFIG_LOGO=y -CONFIG_LOGO_LINUX_MONO=y -CONFIG_LOGO_LINUX_VGA16=y -CONFIG_LOGO_LINUX_CLUT224=y - -# -# Sound -# +# CONFIG_LOGO is not set CONFIG_SOUND=m - -# -# Advanced Linux Sound Architecture -# +CONFIG_SOUND_OSS_CORE=y CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m @@ -2875,16 +3068,13 @@ CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y - -# -# Generic devices -# -# CONFIG_SND_PCSP is not set CONFIG_SND_MPU401_UART=m CONFIG_SND_OPL3_LIB=m CONFIG_SND_OPL4_LIB=m CONFIG_SND_VX_LIB=m CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +CONFIG_SND_PCSP=m CONFIG_SND_DUMMY=m CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m @@ -2892,15 +3082,13 @@ CONFIG_SND_MTS64=m CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m CONFIG_SND_PORTMAN2X4=m -CONFIG_SND_AD1848_LIB=m -CONFIG_SND_CS4231_LIB=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_WSS_LIB=m CONFIG_SND_SB_COMMON=m CONFIG_SND_SB8_DSP=m CONFIG_SND_SB16_DSP=m - -# -# ISA devices -# +CONFIG_SND_ISA=y CONFIG_SND_ADLIB=m CONFIG_SND_AD1816A=m CONFIG_SND_AD1848=m @@ -2915,7 +3103,6 @@ CONFIG_SND_ES968=m CONFIG_SND_ES1688=m CONFIG_SND_ES18XX=m CONFIG_SND_SC6000=m -CONFIG_SND_GUS_SYNTH=m CONFIG_SND_GUSCLASSIC=m CONFIG_SND_GUSEXTREME=m CONFIG_SND_GUSMAX=m @@ -2930,15 +3117,11 @@ CONFIG_SND_SB8=m CONFIG_SND_SB16=m CONFIG_SND_SBAWE=m CONFIG_SND_SB16_CSP=y -CONFIG_SND_SB16_CSP_FIRMWARE_IN_KERNEL=y CONFIG_SND_SGALAXY=m CONFIG_SND_SSCAPE=m CONFIG_SND_WAVEFRONT=m CONFIG_SND_WAVEFRONT_FIRMWARE_IN_KERNEL=y - -# -# PCI devices -# +CONFIG_SND_PCI=y CONFIG_SND_AD1889=m CONFIG_SND_ALS300=m CONFIG_SND_ALS4000=m @@ -2984,11 +3167,13 @@ CONFIG_SND_FM801_TEA575X_BOOL=y CONFIG_SND_FM801_TEA575X=m CONFIG_SND_HDA_INTEL=m CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y CONFIG_SND_HDA_CODEC_ATIHDMI=y +CONFIG_SND_HDA_CODEC_NVHDMI=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y @@ -3003,9 +3188,7 @@ CONFIG_SND_ICE1724=m CONFIG_SND_INTEL8X0=m CONFIG_SND_INTEL8X0M=m CONFIG_SND_KORG1212=m -CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y CONFIG_SND_MAESTRO3=m -CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y CONFIG_SND_MIXART=m CONFIG_SND_NM256=m CONFIG_SND_PCXHR=m @@ -3021,44 +3204,18 @@ CONFIG_SND_VIA82XX_MODEM=m CONFIG_SND_VIRTUOSO=m CONFIG_SND_VX222=m CONFIG_SND_YMFPCI=m -CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y -CONFIG_SND_AC97_POWER_SAVE=y -CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 - -# -# SPI devices -# - -# -# USB devices -# +CONFIG_SND_SPI=y +CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_USX2Y=m CONFIG_SND_USB_CAIAQ=m CONFIG_SND_USB_CAIAQ_INPUT=y - -# -# PCMCIA devices -# +CONFIG_SND_USB_US122L=m +CONFIG_SND_PCMCIA=y CONFIG_SND_VXPOCKET=m CONFIG_SND_PDAUDIOCF=m - -# -# System on Chip audio support -# CONFIG_SND_SOC=m - -# -# ALSA SoC audio for Freescale SOCs -# - -# -# SoC Audio for the Texas Instruments OMAP -# - -# -# Open Sound System -# +# CONFIG_SND_SOC_ALL_CODECS is not set # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m CONFIG_HID_SUPPORT=y @@ -3070,14 +3227,7 @@ CONFIG_HIDRAW=y # USB Input Devices # CONFIG_USB_HID=m -CONFIG_USB_HIDINPUT_POWERBOOK=y -CONFIG_HID_FF=y CONFIG_HID_PID=y -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_PANTHERLORD_FF=y -CONFIG_THRUSTMASTER_FF=y -CONFIG_ZEROPLUS_FF=y CONFIG_USB_HIDDEV=y # @@ -3085,6 +3235,34 @@ CONFIG_USB_HIDDEV=y # # CONFIG_USB_KBD is not set # CONFIG_USB_MOUSE is not set + +# +# Special HID drivers +# +# CONFIG_HID_COMPAT is not set +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BRIGHT=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DELL=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GYRATION=m +CONFIG_HID_LOGITECH=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_THRUSTMASTER_FF=m +CONFIG_ZEROPLUS_FF=m CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y @@ -3101,6 +3279,10 @@ CONFIG_USB_DEVICE_CLASS=y CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set +CONFIG_USB_MON=y +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set # # USB Host Controller Drivers @@ -3111,7 +3293,6 @@ CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_ISP116X_HCD=m CONFIG_USB_ISP1760_HCD=m -# CONFIG_USB_ISP1760_PCI is not set CONFIG_USB_OHCI_HCD=m # CONFIG_USB_OHCI_HCD_SSB is not set # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set @@ -3122,6 +3303,9 @@ CONFIG_USB_U132_HCD=m CONFIG_USB_SL811_HCD=m CONFIG_USB_SL811_CS=m CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m +# CONFIG_USB_GADGET_MUSB_HDRC is not set # # USB Device Class drivers @@ -3129,13 +3313,14 @@ CONFIG_USB_R8A66597_HCD=m CONFIG_USB_ACM=m CONFIG_USB_PRINTER=m CONFIG_USB_WDM=m +CONFIG_USB_TMC=m # -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; # # -# may also be needed; see USB_STORAGE Help for more information +# see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set @@ -3158,7 +3343,6 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=y # CONFIG_USB_MDC800=m CONFIG_USB_MICROTEK=m -CONFIG_USB_MON=y # # USB port drivers @@ -3168,7 +3352,6 @@ CONFIG_USB_SERIAL=m CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m -CONFIG_USB_SERIAL_AIRPRIME=m CONFIG_USB_SERIAL_ARK3116=m CONFIG_USB_SERIAL_BELKIN=m CONFIG_USB_SERIAL_CH341=m @@ -3228,7 +3411,7 @@ CONFIG_USB_SERIAL_OMNINET=m CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m CONFIG_USB_ADUTUX=m -CONFIG_USB_AUERSWALD=m +CONFIG_USB_SEVSEG=m CONFIG_USB_RIO500=m CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m @@ -3250,6 +3433,7 @@ CONFIG_USB_TRANCEVIBRATOR=m CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m +CONFIG_USB_VST=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m @@ -3259,20 +3443,22 @@ CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_SELECTED=y -# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_ATMEL_USBA is not set # CONFIG_USB_GADGET_FSL_USB2 is not set -CONFIG_USB_GADGET_NET2280=y -CONFIG_USB_NET2280=m -# CONFIG_USB_GADGET_PXA2XX is not set -# CONFIG_USB_GADGET_M66592 is not set -# CONFIG_USB_GADGET_PXA27X is not set -# CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA25X is not set +# CONFIG_USB_GADGET_PXA27X is not set # CONFIG_USB_GADGET_S3C2410 is not set -# CONFIG_USB_GADGET_AT91 is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_FSL_QE is not set +CONFIG_USB_GADGET_NET2280=y +CONFIG_USB_NET2280=m +# CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y # CONFIG_USB_ZERO is not set @@ -3284,12 +3470,19 @@ CONFIG_USB_FILE_STORAGE=m CONFIG_USB_G_SERIAL=m CONFIG_USB_MIDI_GADGET=m CONFIG_USB_G_PRINTER=m +# CONFIG_USB_CDC_COMPOSITE is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_WLP=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_I1480U_WLP=m CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_UNSAFE_RESUME is not set # -# MMC/SD Card Drivers +# MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=m CONFIG_MMC_BLOCK_BOUNCE=y @@ -3297,12 +3490,14 @@ CONFIG_SDIO_UART=m # CONFIG_MMC_TEST is not set # -# MMC/SD Host Controller Drivers +# MMC/SD/SDIO Host Controller Drivers # CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SDRICOH_CS=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -3323,7 +3518,10 @@ CONFIG_LEDS_CLASS=m # # LED drivers # +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_HP_DISK=m CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m # # LED Triggers @@ -3332,8 +3530,10 @@ CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_IDE_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m CONFIG_LEDS_TRIGGER_DEFAULT_ON=m -# CONFIG_ACCESSIBILITY is not set +CONFIG_ACCESSIBILITY=y +CONFIG_A11Y_BRAILLE_CONSOLE=y # CONFIG_INFINIBAND is not set CONFIG_EDAC=y @@ -3348,9 +3548,11 @@ CONFIG_EDAC_E752X=m CONFIG_EDAC_I82875P=m CONFIG_EDAC_I82975X=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_X38=m CONFIG_EDAC_I82860=m CONFIG_EDAC_R82600=m CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m CONFIG_RTC_LIB=m CONFIG_RTC_CLASS=m @@ -3379,25 +3581,34 @@ CONFIG_RTC_DRV_M41T80=m CONFIG_RTC_DRV_M41T80_WDT=y CONFIG_RTC_DRV_S35390A=m CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m # # SPI RTC drivers # +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m CONFIG_RTC_DRV_MAX6902=m CONFIG_RTC_DRV_R9701=m CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m # # Platform RTC drivers # CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1286=m CONFIG_RTC_DRV_DS1511=m CONFIG_RTC_DRV_DS1553=m CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_STK17TA8=m CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_WM8350=m # # on-CPU RTC drivers @@ -3414,6 +3625,7 @@ CONFIG_DMA_ENGINE=y # DMA Clients # CONFIG_NET_DMA=y +# CONFIG_DMATEST is not set CONFIG_DCA=m CONFIG_AUXDISPLAY=y CONFIG_KS0108=m @@ -3423,13 +3635,34 @@ CONFIG_CFAG12864B=m CONFIG_CFAG12864B_RATE=20 CONFIG_UIO=m CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m CONFIG_UIO_SMX=m +CONFIG_UIO_SERCOS3=m +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +CONFIG_ET131X=m +# CONFIG_ET131X_DEBUG is not set +CONFIG_SLICOSS=m +CONFIG_SXG=m +CONFIG_ME4000=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_USB_IP_COMMON=m +CONFIG_USB_IP_VHCI_HCD=m +CONFIG_USB_IP_HOST=m +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_USB_ATMEL=m +CONFIG_POCH=m # # Firmware Drivers # CONFIG_EDD=m # CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y CONFIG_EFI_VARS=m CONFIG_DELL_RBU=m CONFIG_DCDBAS=m @@ -3448,10 +3681,11 @@ CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -CONFIG_EXT4DEV_FS=m -CONFIG_EXT4DEV_FS_XATTR=y -CONFIG_EXT4DEV_FS_POSIX_ACL=y -CONFIG_EXT4DEV_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3469,19 +3703,21 @@ CONFIG_JFS_SECURITY=y # CONFIG_JFS_DEBUG is not set # CONFIG_JFS_STATISTICS is not set CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y CONFIG_XFS_FS=m CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y # CONFIG_XFS_DEBUG is not set CONFIG_GFS2_FS=m -CONFIG_GFS2_FS_LOCKING_NOLOCK=m CONFIG_GFS2_FS_LOCKING_DLM=m CONFIG_OCFS2_FS=m CONFIG_OCFS2_FS_O2CB=m CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y # CONFIG_OCFS2_DEBUG_MASKLOG is not set # CONFIG_OCFS2_DEBUG_FS is not set +# CONFIG_OCFS2_COMPAT_JBD is not set CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y @@ -3523,6 +3759,7 @@ CONFIG_NTFS_RW=y CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y @@ -3566,6 +3803,7 @@ CONFIG_SQUASHFS=m CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_VXFS_FS is not set # CONFIG_MINIX_FS is not set +CONFIG_OMFS_FS=m # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_ROMFS_FS is not set @@ -3574,24 +3812,25 @@ CONFIG_UFS_FS=m # CONFIG_UFS_FS_WRITE is not set # CONFIG_UFS_DEBUG is not set CONFIG_NETWORK_FILESYSTEMS=y -CONFIG_NFS_FS=m +CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y CONFIG_NFSD=m CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y -CONFIG_LOCKD=m +CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m -CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_ACL_SUPPORT=y CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=m -CONFIG_SUNRPC_GSS=m -CONFIG_SUNRPC_BIND34=y -CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_REGISTER_V4 is not set +CONFIG_RPCSEC_GSS_KRB5=y CONFIG_RPCSEC_GSS_SPKM3=m CONFIG_SMB_FS=m # CONFIG_SMB_NLS_DEFAULT is not set @@ -3599,6 +3838,7 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y # CONFIG_CIFS_STATS2 is not set CONFIG_CIFS_WEAK_PW_HASH=y +# CONFIG_CIFS_UPCALL is not set CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set @@ -3613,7 +3853,6 @@ CONFIG_NCPFS_SMALLDOS=y CONFIG_NCPFS_NLS=y # CONFIG_NCPFS_EXTRAS is not set CONFIG_CODA_FS=m -# CONFIG_CODA_FS_OLD_API is not set CONFIG_AFS_FS=m # CONFIG_AFS_DEBUG is not set CONFIG_9P_FS=m @@ -3636,7 +3875,7 @@ CONFIG_SOLARIS_X86_PARTITION=y # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set +CONFIG_KARMA_PARTITION=y CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y @@ -3678,7 +3917,7 @@ CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m -CONFIG_NLS_UTF8=y +CONFIG_NLS_UTF8=m CONFIG_DLM=m # CONFIG_DLM_DEBUG is not set @@ -3697,6 +3936,8 @@ CONFIG_DEBUG_FS=y CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set CONFIG_TIMER_STATS=y @@ -3718,31 +3959,54 @@ CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_FRAME_POINTER is not set # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_BOOT_TRACER is not set +# CONFIG_STACK_TRACER is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set -# CONFIG_NONPROMISC_DEVMEM is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_X86_VERBOSE_BOOTUP=y CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set # CONFIG_X86_PTDUMP is not set # CONFIG_DEBUG_RODATA is not set # CONFIG_DEBUG_NX_TEST is not set # CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y CONFIG_DOUBLEFAULT=y +# CONFIG_MMIOTRACE is not set CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 @@ -3754,6 +4018,7 @@ CONFIG_IO_DELAY_0X80=y CONFIG_DEFAULT_IO_DELAY_TYPE=0 # CONFIG_DEBUG_BOOT_PARAMS is not set # CONFIG_CPA_DEBUG is not set +# CONFIG_OPTIMIZE_INLINING is not set # # Security options @@ -3761,9 +4026,9 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0 CONFIG_KEYS=y # CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y +CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set -CONFIG_SECURITY_CAPABILITIES=y CONFIG_SECURITY_FILE_CAPABILITIES=y CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 # CONFIG_SECURITY_SMACK is not set @@ -3776,11 +4041,19 @@ CONFIG_CRYPTO=y # # Crypto core or helper # +CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_CRYPTD=m @@ -3808,16 +4081,21 @@ CONFIG_CRYPTO_XTS=m # # Hash modes # -CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_HMAC=m CONFIG_CRYPTO_XCBC=m # # Digest # CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32C_INTEL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m @@ -3852,6 +4130,11 @@ CONFIG_CRYPTO_TWOFISH_586=m # CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_LZO=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=m CONFIG_CRYPTO_DEV_PADLOCK_AES=m @@ -3876,13 +4159,14 @@ CONFIG_VIRTIO_RING=y CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y -CONFIG_CRC_CCITT=m +CONFIG_CRC_CCITT=y CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m CONFIG_CRC_ITU_T=m CONFIG_CRC32=y CONFIG_CRC7=m CONFIG_LIBCRC32C=m -CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m CONFIG_LZO_COMPRESS=m CONFIG_LZO_DECOMPRESS=m diff --git a/abs/core/kernel26/config.x86_64 b/abs/core/kernel26/config.x86_64 index 9c7a16a..6f6fc87 100644 --- a/abs/core/kernel26/config.x86_64 +++ b/abs/core/kernel26/config.x86_64 @@ -1,14 +1,13 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.26 -# Sun Aug 10 13:51:28 2008 +# Linux kernel version: 2.6.28 +# Thu Dec 25 19:41:06 2008 # CONFIG_64BIT=y # CONFIG_X86_32 is not set CONFIG_X86_64=y CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" -# CONFIG_GENERIC_LOCKBREAK is not set CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y @@ -24,16 +23,14 @@ CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y -# CONFIG_GENERIC_GPIO is not set CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_ARCH_HAS_ILOG2_U32 is not set -# CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y @@ -42,12 +39,12 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ZONE_DMA32=y CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_AUDIT_ARCH=y -CONFIG_ARCH_SUPPORTS_AOUT=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_X86_SMP=y +CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_64_SMP=y CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y @@ -67,7 +64,8 @@ CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y -# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y @@ -94,7 +92,6 @@ CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y -CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set CONFIG_KALLSYMS_EXTRA_PASS=y @@ -112,7 +109,9 @@ CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y +CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y @@ -120,12 +119,15 @@ CONFIG_SLUB=y CONFIG_PROFILING=y # CONFIG_MARKERS is not set CONFIG_OPROFILE=m +CONFIG_OPROFILE_IBS=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y -# CONFIG_HAVE_DMA_ATTRS is not set -CONFIG_PROC_PAGE_MONITOR=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set @@ -141,6 +143,7 @@ CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_INTEGRITY is not set CONFIG_BLOCK_COMPAT=y # @@ -157,6 +160,7 @@ CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_PREEMPT_NOTIFIERS=y CONFIG_CLASSIC_RCU=y +CONFIG_FREEZER=y # # Processor type and features @@ -166,24 +170,21 @@ CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set -# CONFIG_X86_NUMAQ is not set -# CONFIG_X86_SUMMIT is not set -# CONFIG_X86_BIGSMP is not set -# CONFIG_X86_VISWS is not set # CONFIG_X86_GENERICARCH is not set -# CONFIG_X86_ES7000 is not set -# CONFIG_X86_RDC321X is not set # CONFIG_X86_VSMP is not set CONFIG_PARAVIRT_GUEST=y +# CONFIG_XEN is not set # CONFIG_KVM_CLOCK is not set # CONFIG_KVM_GUEST is not set CONFIG_PARAVIRT=y # CONFIG_PARAVIRT_CLOCK is not set -CONFIG_MEMTEST_BOOTPARAM=y -CONFIG_MEMTEST_BOOTPARAM_VALUE=0 +# CONFIG_PARAVIRT_DEBUG is not set +# CONFIG_MEMTEST is not set # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -200,7 +201,6 @@ CONFIG_MEMTEST_BOOTPARAM_VALUE=0 # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set -# CONFIG_MWINCHIP2 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MGEODEGX1 is not set # CONFIG_MGEODE_LX is not set @@ -215,17 +215,23 @@ CONFIG_X86_L1_CACHE_BYTES=128 CONFIG_X86_INTERNODE_CACHE_BYTES=128 CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=7 -CONFIG_X86_GOOD_APIC=y +CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_TSC=y +CONFIG_X86_CMPXCHG64=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=64 CONFIG_X86_DEBUGCTLMSR=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR_64=y +# CONFIG_X86_DS is not set CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y CONFIG_GART_IOMMU=y CONFIG_CALGARY_IOMMU=y CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +# CONFIG_AMD_IOMMU is not set CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y CONFIG_NR_CPUS=16 @@ -242,9 +248,12 @@ CONFIG_X86_MCE_INTEL=y CONFIG_X86_MCE_AMD=y CONFIG_I8K=m CONFIG_MICROCODE=m +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=m CONFIG_X86_CPUID=m +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y # CONFIG_NUMA is not set CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y @@ -255,7 +264,6 @@ CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_HAVE_MEMORY_PRESENT=y -# CONFIG_SPARSEMEM_STATIC is not set CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y @@ -266,10 +274,17 @@ CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y +CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y +CONFIG_MMU_NOTIFIER=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_RESERVE_LOW_64K=y CONFIG_MTRR=y +# CONFIG_MTRR_SANITIZER is not set CONFIG_X86_PAT=y CONFIG_EFI=y CONFIG_SECCOMP=y @@ -286,10 +301,11 @@ CONFIG_PHYSICAL_START=0x200000 CONFIG_PHYSICAL_ALIGN=0x200000 CONFIG_HOTPLUG_CPU=y # CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # -# Power management options +# Power management and ACPI options # CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_PM=y @@ -311,8 +327,7 @@ CONFIG_ACPI_BATTERY=m CONFIG_ACPI_BUTTON=m CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=m -CONFIG_ACPI_DOCK=m -CONFIG_ACPI_BAY=m +CONFIG_ACPI_DOCK=y CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m @@ -323,8 +338,7 @@ CONFIG_ACPI_TOSHIBA=m CONFIG_ACPI_CUSTOM_DSDT_INITRD=y CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI_SLOT=m CONFIG_ACPI_SYSTEM=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=m @@ -368,18 +382,26 @@ CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y # +# Memory power savings +# +CONFIG_I7300_IDLE_IOAT_CHANNEL=y +CONFIG_I7300_IDLE=m + +# # Bus options (PCI etc.) # CONFIG_PCI=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y CONFIG_PCI_DOMAINS=y +# CONFIG_DMAR is not set +# CONFIG_INTR_REMAP is not set CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=m CONFIG_PCIEAER=y # CONFIG_PCIEASPM is not set CONFIG_ARCH_SUPPORTS_MSI=y -# CONFIG_PCI_MSI is not set +CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y # CONFIG_PCI_DEBUG is not set CONFIG_HT_IRQ=y @@ -418,16 +440,14 @@ CONFIG_HOTPLUG_PCI_SHPC=m # CONFIG_BINFMT_ELF=y CONFIG_COMPAT_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_HAVE_AOUT is not set CONFIG_BINFMT_MISC=y CONFIG_IA32_EMULATION=y CONFIG_IA32_AOUT=m CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y - -# -# Networking -# CONFIG_NET=y # @@ -441,6 +461,7 @@ CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set # CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m CONFIG_NET_KEY=m # CONFIG_NET_KEY_MIGRATE is not set CONFIG_INET=y @@ -476,36 +497,6 @@ CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set -CONFIG_IP_VS=m -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m - -# -# IPVS application helper -# -CONFIG_IP_VS_FTP=m CONFIG_IPV6=m CONFIG_IPV6_PRIVACY=y CONFIG_IPV6_ROUTER_PREF=y @@ -559,18 +550,20 @@ CONFIG_NF_CONNTRACK_SANE=m CONFIG_NF_CONNTRACK_SIP=m CONFIG_NF_CONNTRACK_TFTP=m CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m CONFIG_NETFILTER_XTABLES=m CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m CONFIG_NETFILTER_XT_TARGET_NOTRACK=m CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m CONFIG_NETFILTER_XT_TARGET_TRACE=m CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_TCPMSS=m CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m CONFIG_NETFILTER_XT_MATCH_COMMENT=m @@ -581,41 +574,76 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m CONFIG_NETFILTER_XT_MATCH_DCCP=m CONFIG_NETFILTER_XT_MATCH_DSCP=m CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m CONFIG_NETFILTER_XT_MATCH_HELPER=m CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_LENGTH=m CONFIG_NETFILTER_XT_MATCH_LIMIT=m CONFIG_NETFILTER_XT_MATCH_MAC=m CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_OWNER=m CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_QUOTA=m CONFIG_NETFILTER_XT_MATCH_RATEEST=m CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TIME=m CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_IPV6 is not set +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m # # IP: Netfilter Configuration # +CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m CONFIG_NF_CONNTRACK_PROC_COMPAT=y CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_RECENT=m -CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_MATCH_ADDRTYPE=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_TARGET_REJECT=m CONFIG_IP_NF_TARGET_LOG=m @@ -623,8 +651,8 @@ CONFIG_IP_NF_TARGET_ULOG=m CONFIG_NF_NAT=m CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m CONFIG_NF_NAT_SNMP_BASIC=m CONFIG_NF_NAT_PROTO_DCCP=m CONFIG_NF_NAT_PROTO_GRE=m @@ -638,10 +666,11 @@ CONFIG_NF_NAT_PPTP=m CONFIG_NF_NAT_H323=m CONFIG_NF_NAT_SIP=m CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_TARGET_ECN=m CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m CONFIG_IP_NF_ARPTABLES=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m @@ -652,24 +681,21 @@ CONFIG_IP_NF_ARP_MANGLE=m CONFIG_NF_CONNTRACK_IPV6=m CONFIG_IP6_NF_QUEUE=m CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m CONFIG_IP6_NF_MATCH_HL=m CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_MATCH_RT=m CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m CONFIG_IP6_NF_TARGET_REJECT=m CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_TARGET_HL=m CONFIG_IP6_NF_RAW=m - -# -# Bridge: Netfilter Configuration -# +CONFIG_IP6_NF_SECURITY=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m @@ -678,6 +704,7 @@ CONFIG_BRIDGE_EBT_802_3=m CONFIG_BRIDGE_EBT_AMONG=m CONFIG_BRIDGE_EBT_ARP=m CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m CONFIG_BRIDGE_EBT_LIMIT=m CONFIG_BRIDGE_EBT_MARK=m CONFIG_BRIDGE_EBT_PKTTYPE=m @@ -706,8 +733,11 @@ CONFIG_ATM_LANE=m CONFIG_ATM_MPOA=m CONFIG_ATM_BR2684=m # CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m CONFIG_BRIDGE=m +# CONFIG_NET_DSA is not set CONFIG_VLAN_8021Q=m +# CONFIG_VLAN_8021Q_GVRP is not set # CONFIG_DECNET is not set CONFIG_LLC=m CONFIG_LLC2=m @@ -728,6 +758,7 @@ CONFIG_NET_SCH_HTB=m CONFIG_NET_SCH_HFSC=m CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m CONFIG_NET_SCH_RED=m CONFIG_NET_SCH_SFQ=m CONFIG_NET_SCH_TEQL=m @@ -762,6 +793,7 @@ CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y @@ -835,7 +867,7 @@ CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=m # CONFIG_BT_BNEP_MC_FILTER is not set # CONFIG_BT_BNEP_PROTO_FILTER is not set -CONFIG_BT_CMTP=m +# CONFIG_BT_CMTP is not set CONFIG_BT_HIDP=m # @@ -843,6 +875,7 @@ CONFIG_BT_HIDP=m # CONFIG_BT_HCIUSB=m CONFIG_BT_HCIUSB_SCO=y +# CONFIG_BT_HCIBTUSB is not set CONFIG_BT_HCIBTSDIO=m CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_H4=y @@ -859,36 +892,28 @@ CONFIG_BT_HCIVHCI=m CONFIG_AF_RXRPC=m # CONFIG_AF_RXRPC_DEBUG is not set CONFIG_RXKAD=m +CONFIG_PHONET=m CONFIG_FIB_RULES=y - -# -# Wireless -# +CONFIG_WIRELESS=y CONFIG_CFG80211=m CONFIG_NL80211=y +CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_MAC80211=m # # Rate control algorithm selection # +CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT_PID=y -# CONFIG_MAC80211_RC_DEFAULT_NONE is not set - -# -# Selecting 'y' for an algorithm will -# - -# -# build the algorithm into mac80211. -# +# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set CONFIG_MAC80211_RC_DEFAULT="pid" -CONFIG_MAC80211_RC_PID=y CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_DEBUGFS is not set -# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set -# CONFIG_MAC80211_DEBUG is not set +# CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -910,7 +935,9 @@ CONFIG_NET_9P=m CONFIG_UEVENT_HELPER_PATH="" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=m +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set @@ -998,7 +1025,7 @@ CONFIG_PARPORT_AX88796=m CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y -# CONFIG_PNP_DEBUG is not set +# CONFIG_PNP_DEBUG_MESSAGES is not set # # Protocols @@ -1026,6 +1053,7 @@ CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set CONFIG_ATA_OVER_ETH=m +# CONFIG_BLK_DEV_HD is not set CONFIG_MISC_DEVICES=y # CONFIG_IBM_ASM is not set CONFIG_PHANTOM=m @@ -1036,7 +1064,12 @@ CONFIG_TIFM_7XX1=m CONFIG_ACER_WMI=m CONFIG_ASUS_LAPTOP=m CONFIG_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_HP_WMI=m +CONFIG_ICS932S401=m CONFIG_MSI_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_COMPAL_LAPTOP=m CONFIG_SONY_LAPTOP=m # CONFIG_SONYPI_COMPAT is not set CONFIG_THINKPAD_ACPI=m @@ -1047,22 +1080,29 @@ CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y CONFIG_INTEL_MENLOW=m CONFIG_EEEPC_LAPTOP=m CONFIG_ENCLOSURE_SERVICES=m +CONFIG_SGI_XP=m +CONFIG_HP_ILO=m +CONFIG_SGI_GRU=m +# CONFIG_SGI_GRU_DEBUG is not set +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m CONFIG_HAVE_IDE=y CONFIG_IDE=m -CONFIG_BLK_DEV_IDE=m # # Please see Documentation/ide/ide.txt for help/info on IDE drives # +CONFIG_IDE_TIMINGS=y +CONFIG_IDE_ATAPI=y # CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_BLK_DEV_IDEDISK=m -CONFIG_IDEDISK_MULTI_MODE=y +CONFIG_IDE_GD=m +CONFIG_IDE_GD_ATA=y +CONFIG_IDE_GD_ATAPI=y CONFIG_BLK_DEV_IDECS=m CONFIG_BLK_DEV_DELKIN=m CONFIG_BLK_DEV_IDECD=m CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y CONFIG_BLK_DEV_IDETAPE=m -CONFIG_BLK_DEV_IDEFLOPPY=m CONFIG_BLK_DEV_IDESCSI=m CONFIG_BLK_DEV_IDEACPI=y # CONFIG_IDE_TASK_IOCTL is not set @@ -1093,11 +1133,8 @@ CONFIG_BLK_DEV_AMD74XX=m CONFIG_BLK_DEV_ATIIXP=m CONFIG_BLK_DEV_CMD64X=m CONFIG_BLK_DEV_TRIFLEX=m -CONFIG_BLK_DEV_CY82C693=m CONFIG_BLK_DEV_CS5520=m CONFIG_BLK_DEV_CS5530=m -CONFIG_BLK_DEV_HPT34X=m -# CONFIG_HPT34X_AUTODMA is not set CONFIG_BLK_DEV_HPT366=m CONFIG_BLK_DEV_JMICRON=m CONFIG_BLK_DEV_SC1200=m @@ -1115,8 +1152,6 @@ CONFIG_BLK_DEV_TRM290=m CONFIG_BLK_DEV_VIA82CXXX=m CONFIG_BLK_DEV_TC86C001=m CONFIG_BLK_DEV_IDEDMA=y -# CONFIG_BLK_DEV_HD_ONLY is not set -# CONFIG_BLK_DEV_HD is not set # # SCSI device support @@ -1231,6 +1266,11 @@ CONFIG_SCSI_LOWLEVEL_PCMCIA=y CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=m +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m CONFIG_ATA=m # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_ACPI=y @@ -1311,9 +1351,6 @@ CONFIG_DM_SNAPSHOT=m CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m -CONFIG_DM_MULTIPATH_EMC=m -CONFIG_DM_MULTIPATH_RDAC=m -CONFIG_DM_MULTIPATH_HP=m CONFIG_DM_DELAY=m CONFIG_DM_UEVENT=y CONFIG_FUSION=y @@ -1356,7 +1393,6 @@ CONFIG_I2O_PROC=m CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=y CONFIG_NETDEVICES=y -CONFIG_NETDEVICES_MULTIQUEUE=y CONFIG_IFB=m CONFIG_DUMMY=m CONFIG_BONDING=m @@ -1366,7 +1402,22 @@ CONFIG_TUN=m CONFIG_VETH=m CONFIG_NET_SB1000=m # CONFIG_ARCNET is not set -# CONFIG_PHYLIB is not set +CONFIG_PHYLIB=m + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_MDIO_BITBANG is not set CONFIG_NET_ETHERNET=y CONFIG_MII=m CONFIG_HAPPYMEAL=m @@ -1393,12 +1444,13 @@ CONFIG_HP100=m # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=y CONFIG_PCNET32=m CONFIG_AMD8111_ETH=m -# CONFIG_AMD8111E_NAPI is not set CONFIG_ADAPTEC_STARFIRE=m -# CONFIG_ADAPTEC_STARFIRE_NAPI is not set CONFIG_B44=m CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y @@ -1421,30 +1473,29 @@ CONFIG_SIS900=m CONFIG_EPIC100=m CONFIG_SUNDANCE=m # CONFIG_SUNDANCE_MMIO is not set +# CONFIG_TLAN is not set CONFIG_VIA_RHINE=m # CONFIG_VIA_RHINE_MMIO is not set -# CONFIG_VIA_RHINE_NAPI is not set CONFIG_SC92031=m CONFIG_NET_POCKET=y CONFIG_ATP=m CONFIG_DE600=m CONFIG_DE620=m +CONFIG_ATL2=m CONFIG_NETDEV_1000=y CONFIG_ACENIC=m # CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=m CONFIG_E1000=m -# CONFIG_E1000_NAPI is not set -# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set CONFIG_E1000E=m -CONFIG_E1000E_ENABLED=y CONFIG_IP1000=m CONFIG_IGB=m +# CONFIG_IGB_LRO is not set +CONFIG_IGB_DCA=y CONFIG_NS83820=m CONFIG_HAMACHI=m CONFIG_YELLOWFIN=m CONFIG_R8169=m -# CONFIG_R8169_NAPI is not set # CONFIG_R8169_VLAN is not set CONFIG_SIS190=m CONFIG_SKGE=m @@ -1456,22 +1507,27 @@ CONFIG_TIGON3=m CONFIG_BNX2=m CONFIG_QLA3XXX=m CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_JME=m CONFIG_NETDEV_10000=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y -CONFIG_CHELSIO_T1_NAPI=y CONFIG_CHELSIO_T3=m +CONFIG_ENIC=m CONFIG_IXGBE=m +CONFIG_IXGBE_DCA=y CONFIG_IXGB=m -# CONFIG_IXGB_NAPI is not set CONFIG_S2IO=m -# CONFIG_S2IO_NAPI is not set CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y CONFIG_NETXEN_NIC=m CONFIG_NIU=m -# CONFIG_MLX4_CORE is not set +CONFIG_MLX4_EN=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y CONFIG_TEHUTI=m CONFIG_BNX2X=m +CONFIG_QLGE=m CONFIG_SFC=m # CONFIG_TR is not set @@ -1495,6 +1551,8 @@ CONFIG_LIBERTAS_USB=m CONFIG_LIBERTAS_CS=m CONFIG_LIBERTAS_SDIO=m # CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m CONFIG_AIRO=m CONFIG_HERMES=m CONFIG_PLX_HERMES=m @@ -1514,22 +1572,25 @@ CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_RTL8180=m CONFIG_RTL8187=m CONFIG_ADM8211=m +# CONFIG_MAC80211_HWSIM is not set CONFIG_P54_COMMON=m CONFIG_P54_USB=m CONFIG_P54_PCI=m CONFIG_ATH5K=m # CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m CONFIG_IWLWIFI=m CONFIG_IWLCORE=m CONFIG_IWLWIFI_LEDS=y CONFIG_IWLWIFI_RFKILL=y -CONFIG_IWL4965=m -CONFIG_IWL4965_HT=y -CONFIG_IWL4965_LEDS=y -CONFIG_IWL4965_SPECTRUM_MEASUREMENT=y -CONFIG_IWL4965_SENSITIVITY=y # CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLAGN=m +CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y +CONFIG_IWLAGN_LEDS=y +CONFIG_IWL4965=y +CONFIG_IWL5000=y CONFIG_IWL3945=m +CONFIG_IWL3945_RFKILL=y CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y CONFIG_IWL3945_LEDS=y # CONFIG_IWL3945_DEBUG is not set @@ -1561,25 +1622,18 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_RT2X00=m -CONFIG_RT2X00_LIB=m -CONFIG_RT2X00_LIB_PCI=m -CONFIG_RT2X00_LIB_USB=m -CONFIG_RT2X00_LIB_FIRMWARE=y -CONFIG_RT2X00_LIB_RFKILL=y -CONFIG_RT2X00_LIB_LEDS=y CONFIG_RT2400PCI=m -CONFIG_RT2400PCI_RFKILL=y -CONFIG_RT2400PCI_LEDS=y CONFIG_RT2500PCI=m -CONFIG_RT2500PCI_RFKILL=y -CONFIG_RT2500PCI_LEDS=y CONFIG_RT61PCI=m -CONFIG_RT61PCI_RFKILL=y -CONFIG_RT61PCI_LEDS=y CONFIG_RT2500USB=m -CONFIG_RT2500USB_LEDS=y CONFIG_RT73USB=m -CONFIG_RT73USB_LEDS=y +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_RFKILL=y +CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set # @@ -1593,6 +1647,7 @@ CONFIG_USB_USBNET=m CONFIG_USB_NET_AX8817X=m CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_GL620A=m CONFIG_USB_NET_NET1080=m CONFIG_USB_NET_PLUSB=m @@ -1606,6 +1661,7 @@ CONFIG_USB_ARMLINUX=y CONFIG_USB_EPSON2888=y CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_HSO=m CONFIG_NET_PCMCIA=y CONFIG_PCMCIA_3C589=m CONFIG_PCMCIA_3C574=m @@ -1634,8 +1690,12 @@ CONFIG_ATM_AMBASSADOR=m # CONFIG_ATM_AMBASSADOR_DEBUG is not set CONFIG_ATM_HORIZON=m # CONFIG_ATM_HORIZON_DEBUG is not set -CONFIG_ATM_FORE200E_MAYBE=m -# CONFIG_ATM_FORE200E_PCA is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 CONFIG_ATM_HE=m # CONFIG_ATM_HE_USE_SUNI is not set # CONFIG_FDDI is not set @@ -1663,7 +1723,16 @@ CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y # CONFIG_NETPOLL_TRAP is not set CONFIG_NET_POLL_CONTROLLER=y -CONFIG_ISDN=m +CONFIG_ISDN=y +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m CONFIG_ISDN_I4L=m CONFIG_ISDN_PPP=y CONFIG_ISDN_PPP_VJ=y @@ -1752,7 +1821,7 @@ CONFIG_GIGASET_M101=m CONFIG_GIGASET_UNDOCREQ=y CONFIG_ISDN_CAPI=m CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y -# CONFIG_CAPI_TRACE is not set +CONFIG_CAPI_TRACE=y CONFIG_ISDN_CAPI_MIDDLEWARE=y CONFIG_ISDN_CAPI_CAPI20=m CONFIG_ISDN_CAPI_CAPIFS_BOOL=y @@ -1813,9 +1882,11 @@ CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_PS2_ELANTECH=y # CONFIG_MOUSE_PS2_TOUCHKIT is not set CONFIG_MOUSE_SERIAL=y CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m CONFIG_MOUSE_VSXXXAA=m CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=m @@ -1858,11 +1929,11 @@ CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_INEXIO=m CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_PENMOUNT=m CONFIG_TOUCHSCREEN_TOUCHRIGHT=m CONFIG_TOUCHSCREEN_TOUCHWIN=m -CONFIG_TOUCHSCREEN_UCB1400=m CONFIG_TOUCHSCREEN_WM97XX=m # CONFIG_TOUCHSCREEN_WM9705 is not set # CONFIG_TOUCHSCREEN_WM9712 is not set @@ -1879,6 +1950,7 @@ CONFIG_TOUCHSCREEN_USB_IRTOUCH=y CONFIG_TOUCHSCREEN_USB_IDEALTEK=y CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=m CONFIG_INPUT_APANEL=m @@ -1888,6 +1960,7 @@ CONFIG_INPUT_ATI_REMOTE2=m CONFIG_INPUT_KEYSPAN_REMOTE=m CONFIG_INPUT_POWERMATE=m CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m CONFIG_INPUT_UINPUT=m # @@ -1911,6 +1984,7 @@ CONFIG_GAMEPORT_FM801=m # Character devices # CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y @@ -1995,12 +2069,17 @@ CONFIG_DEVPORT=y CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=m +CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=m CONFIG_I2C_ALGOPCA=m # # I2C Hardware Bus support # + +# +# PC SMBus host controller drivers +# CONFIG_I2C_ALI1535=m CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m @@ -2008,33 +2087,50 @@ CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m CONFIG_I2C_I801=m -CONFIG_I2C_I810=m +CONFIG_I2C_ISCH=m CONFIG_I2C_PIIX4=m CONFIG_I2C_NFORCE2=m -CONFIG_I2C_OCORES=m -CONFIG_I2C_PARPORT=m -CONFIG_I2C_PARPORT_LIGHT=m -CONFIG_I2C_PROSAVAGE=m -CONFIG_I2C_SAVAGE4=m -CONFIG_I2C_SIMTEC=m +CONFIG_I2C_NFORCE2_S4985=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m -CONFIG_I2C_TAOS_EVM=m -# CONFIG_I2C_STUB is not set -CONFIG_I2C_TINY_USB=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_OCORES=m +CONFIG_I2C_SIMTEC=m + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m + +# +# Graphics adapter I2C/DDC channel drivers +# CONFIG_I2C_VOODOO3=m + +# +# Other I2C/SMBus bus drivers +# CONFIG_I2C_PCA_PLATFORM=m +# CONFIG_I2C_STUB is not set # # Miscellaneous I2C Chip support # CONFIG_DS1682=m +CONFIG_AT24=m CONFIG_SENSORS_EEPROM=m CONFIG_SENSORS_PCF8574=m CONFIG_PCF8575=m +CONFIG_SENSORS_PCA9539=m CONFIG_SENSORS_PCF8591=m CONFIG_SENSORS_MAX6875=m CONFIG_SENSORS_TSL2550=m @@ -2059,6 +2155,8 @@ CONFIG_SPI_LM70_LLP=m CONFIG_SPI_AT25=m CONFIG_SPI_SPIDEV=m CONFIG_SPI_TLE62X0=m +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_GPIOLIB is not set CONFIG_W1=m CONFIG_W1_CON=y @@ -2077,21 +2175,26 @@ CONFIG_W1_SLAVE_SMEM=m CONFIG_W1_SLAVE_DS2433=m # CONFIG_W1_SLAVE_DS2433_CRC is not set CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_BQ27000=m CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_PDA_POWER=m CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_BQ27x00=m CONFIG_HWMON=y CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_AD7414=m CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADCXX=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7462=m CONFIG_SENSORS_ADT7470=m CONFIG_SENSORS_ADT7473=m CONFIG_SENSORS_K8TEMP=m @@ -2123,6 +2226,7 @@ CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_MAX1111=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m @@ -2146,16 +2250,63 @@ CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_LIS3LV02D=m CONFIG_SENSORS_APPLESMC=m # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y -# CONFIG_WATCHDOG is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_SC520_WDT=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_60XX_WDT=m +CONFIG_SBC8360_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83697HF_WDT=m +CONFIG_W83697UG_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # -CONFIG_SSB_POSSIBLE=y CONFIG_SSB=m CONFIG_SSB_SPROM=y CONFIG_SSB_BLOCKIO=y @@ -2171,8 +2322,14 @@ CONFIG_SSB_DRIVER_PCICORE=y # # Multifunction device drivers # +# CONFIG_MFD_CORE is not set CONFIG_MFD_SM501=m # CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_WM8400=m +CONFIG_MFD_WM8350=m +CONFIG_MFD_WM8350_I2C=m +# CONFIG_REGULATOR is not set # # Multimedia devices @@ -2193,7 +2350,7 @@ CONFIG_VIDEO_MEDIA=m # CONFIG_VIDEO_SAA7146=m CONFIG_VIDEO_SAA7146_VV=m -# CONFIG_MEDIA_ATTACH is not set +CONFIG_MEDIA_ATTACH=y CONFIG_MEDIA_TUNER=m # CONFIG_MEDIA_TUNER_CUSTOMIZE is not set CONFIG_MEDIA_TUNER_SIMPLE=m @@ -2211,20 +2368,23 @@ CONFIG_MEDIA_TUNER_QT1010=m CONFIG_MEDIA_TUNER_XC2028=m CONFIG_MEDIA_TUNER_XC5000=m CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEO_V4L1=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOBUF_DMA_CONTIG=m CONFIG_VIDEOBUF_DVB=m CONFIG_VIDEO_BTCX=m -CONFIG_VIDEO_IR_I2C=m CONFIG_VIDEO_IR=m CONFIG_VIDEO_TVEEPROM=m CONFIG_VIDEO_TUNER=m CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set # CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +CONFIG_VIDEO_IR_I2C=m # # Encoders/decoders and other helper chips @@ -2302,13 +2462,12 @@ CONFIG_VIDEO_CPIA_USB=m CONFIG_VIDEO_CPIA2=m CONFIG_VIDEO_SAA5246A=m CONFIG_VIDEO_SAA5249=m -CONFIG_TUNER_3036=m CONFIG_VIDEO_STRADIS=m -CONFIG_VIDEO_ZORAN_ZR36060=m CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_ZR36060=m CONFIG_VIDEO_ZORAN_BUZ=m CONFIG_VIDEO_ZORAN_DC10=m -CONFIG_VIDEO_ZORAN_DC30=m CONFIG_VIDEO_ZORAN_LML33=m CONFIG_VIDEO_ZORAN_LML33R10=m CONFIG_VIDEO_ZORAN_AVS6EYES=m @@ -2317,7 +2476,6 @@ CONFIG_VIDEO_SAA7134=m CONFIG_VIDEO_SAA7134_ALSA=m CONFIG_VIDEO_SAA7134_DVB=m CONFIG_VIDEO_MXB=m -CONFIG_VIDEO_DPC=m CONFIG_VIDEO_HEXIUM_ORION=m CONFIG_VIDEO_HEXIUM_GEMINI=m CONFIG_VIDEO_CX88=m @@ -2331,9 +2489,38 @@ CONFIG_VIDEO_IVTV=m CONFIG_VIDEO_FB_IVTV=m CONFIG_VIDEO_CX18=m CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_VIDEO_SH_MOBILE_CEU=m CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y @@ -2359,15 +2546,14 @@ CONFIG_USB_PWC=m # CONFIG_USB_PWC_DEBUG is not set CONFIG_USB_ZR364XX=m CONFIG_USB_STKWEBCAM=m -CONFIG_SOC_CAMERA=m -CONFIG_SOC_CAMERA_MT9M001=m -CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_USB_S2255=m CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_GEMTEK_PCI=m CONFIG_RADIO_MAXIRADIO=m CONFIG_RADIO_MAESTRO=m CONFIG_USB_DSBR=m CONFIG_USB_SI470X=m +CONFIG_USB_MR800=m CONFIG_DVB_CAPTURE_DRIVERS=y # @@ -2407,15 +2593,15 @@ CONFIG_DVB_USB_DTT200U=m CONFIG_DVB_USB_OPERA1=m CONFIG_DVB_USB_AF9005=m CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m -CONFIG_DVB_CINERGYT2=m -CONFIG_DVB_CINERGYT2_TUNING=y -CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 -CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 -CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250 -CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y -CONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=20 +CONFIG_DVB_SIANO_SMS1XXX=m +CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y # # Supported FlexCopII (B2C2) Adapters @@ -2436,6 +2622,11 @@ CONFIG_DVB_BT8XX=m CONFIG_DVB_PLUTO2=m # +# Supported SDMC DM1105 Adapters +# +CONFIG_DVB_DM1105=m + +# # Supported DVB Frontends # @@ -2451,6 +2642,8 @@ CONFIG_DVB_CX24110=m CONFIG_DVB_CX24123=m CONFIG_DVB_MT312=m CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m CONFIG_DVB_STV0299=m CONFIG_DVB_TDA8083=m CONFIG_DVB_TDA10086=m @@ -2458,6 +2651,8 @@ CONFIG_DVB_VES1X93=m CONFIG_DVB_TUNER_ITD1000=m CONFIG_DVB_TDA826X=m CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m # # DVB-T (terrestrial) frontends @@ -2466,6 +2661,7 @@ CONFIG_DVB_SP8870=m CONFIG_DVB_SP887X=m CONFIG_DVB_CX22700=m CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set CONFIG_DVB_L64781=m CONFIG_DVB_TDA1004X=m CONFIG_DVB_NXT6000=m @@ -2509,6 +2705,13 @@ CONFIG_DVB_TUNER_DIB0070=m CONFIG_DVB_LNBP21=m CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m +CONFIG_DVB_LGS8GL5=m + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_AF9013=m CONFIG_DAB=y CONFIG_USB_DABUSB=m @@ -2536,6 +2739,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=m CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_DDC=m +CONFIG_FB_BOOT_VESA_SUPPORT=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y @@ -2565,7 +2769,6 @@ CONFIG_FB_CYBER2000=m CONFIG_FB_UVESA=m CONFIG_FB_VESA=y CONFIG_FB_EFI=y -# CONFIG_FB_IMAC is not set # CONFIG_FB_N411 is not set # CONFIG_FB_HGA is not set # CONFIG_FB_S1D13XXX is not set @@ -2601,6 +2804,7 @@ CONFIG_FB_SAVAGE_ACCEL=y CONFIG_FB_SIS=m CONFIG_FB_SIS_300=y CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m CONFIG_FB_NEOMAGIC=m CONFIG_FB_KYRO=m CONFIG_FB_3DFX=m @@ -2611,16 +2815,25 @@ CONFIG_FB_TRIDENT=m CONFIG_FB_TRIDENT_ACCEL=y # CONFIG_FB_ARK is not set # CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set # CONFIG_FB_GEODE is not set # CONFIG_FB_SM501 is not set # CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_CORGI=m CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_MBP_NVIDIA=m +CONFIG_BACKLIGHT_SAHARA=m # # Display device support @@ -2636,7 +2849,6 @@ CONFIG_DISPLAY_SUPPORT=m # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set -CONFIG_VIDEO_SELECT=y CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set @@ -2656,15 +2868,8 @@ CONFIG_LOGO=y CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y CONFIG_LOGO_LINUX_CLUT224=y - -# -# Sound -# CONFIG_SOUND=m - -# -# Advanced Linux Sound Architecture -# +CONFIG_SOUND_OSS_CORE=y CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m @@ -2683,15 +2888,12 @@ CONFIG_SND_VERBOSE_PROCFS=y # CONFIG_SND_VERBOSE_PRINTK is not set # CONFIG_SND_DEBUG is not set CONFIG_SND_VMASTER=y - -# -# Generic devices -# -# CONFIG_SND_PCSP is not set CONFIG_SND_MPU401_UART=m CONFIG_SND_OPL3_LIB=m CONFIG_SND_VX_LIB=m CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +CONFIG_SND_PCSP=m CONFIG_SND_DUMMY=m CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m @@ -2699,12 +2901,11 @@ CONFIG_SND_MTS64=m CONFIG_SND_SERIAL_U16550=m CONFIG_SND_MPU401=m CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 CONFIG_SND_SB_COMMON=m CONFIG_SND_SB16_DSP=m - -# -# PCI devices -# +CONFIG_SND_PCI=y CONFIG_SND_AD1889=m CONFIG_SND_ALS300=m CONFIG_SND_ALS4000=m @@ -2749,11 +2950,13 @@ CONFIG_SND_FM801_TEA575X_BOOL=y CONFIG_SND_FM801_TEA575X=m CONFIG_SND_HDA_INTEL=m CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y CONFIG_SND_HDA_CODEC_ATIHDMI=y +CONFIG_SND_HDA_CODEC_NVHDMI=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y @@ -2768,9 +2971,7 @@ CONFIG_SND_ICE1724=m CONFIG_SND_INTEL8X0=m CONFIG_SND_INTEL8X0M=m CONFIG_SND_KORG1212=m -CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y CONFIG_SND_MAESTRO3=m -CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y CONFIG_SND_MIXART=m CONFIG_SND_NM256=m CONFIG_SND_PCXHR=m @@ -2785,44 +2986,18 @@ CONFIG_SND_VIA82XX_MODEM=m CONFIG_SND_VIRTUOSO=m CONFIG_SND_VX222=m CONFIG_SND_YMFPCI=m -CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y -CONFIG_SND_AC97_POWER_SAVE=y -CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 - -# -# SPI devices -# - -# -# USB devices -# +CONFIG_SND_SPI=y +CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_USX2Y=m CONFIG_SND_USB_CAIAQ=m CONFIG_SND_USB_CAIAQ_INPUT=y - -# -# PCMCIA devices -# +CONFIG_SND_USB_US122L=m +CONFIG_SND_PCMCIA=y CONFIG_SND_VXPOCKET=m CONFIG_SND_PDAUDIOCF=m - -# -# System on Chip audio support -# CONFIG_SND_SOC=m - -# -# ALSA SoC audio for Freescale SOCs -# - -# -# SoC Audio for the Texas Instruments OMAP -# - -# -# Open Sound System -# +# CONFIG_SND_SOC_ALL_CODECS is not set # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m CONFIG_HID_SUPPORT=y @@ -2834,14 +3009,7 @@ CONFIG_HIDRAW=y # USB Input Devices # CONFIG_USB_HID=m -CONFIG_USB_HIDINPUT_POWERBOOK=y -CONFIG_HID_FF=y CONFIG_HID_PID=y -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_PANTHERLORD_FF=y -CONFIG_THRUSTMASTER_FF=y -CONFIG_ZEROPLUS_FF=y CONFIG_USB_HIDDEV=y # @@ -2849,6 +3017,34 @@ CONFIG_USB_HIDDEV=y # # CONFIG_USB_KBD is not set # CONFIG_USB_MOUSE is not set + +# +# Special HID drivers +# +# CONFIG_HID_COMPAT is not set +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BRIGHT=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DELL=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GYRATION=m +CONFIG_HID_LOGITECH=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +CONFIG_THRUSTMASTER_FF=m +CONFIG_ZEROPLUS_FF=m CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y @@ -2865,6 +3061,10 @@ CONFIG_USB_DEVICE_CLASS=y CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set +CONFIG_USB_MON=y +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set # # USB Host Controller Drivers @@ -2875,7 +3075,6 @@ CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_ISP116X_HCD=m CONFIG_USB_ISP1760_HCD=m -# CONFIG_USB_ISP1760_PCI is not set CONFIG_USB_OHCI_HCD=m # CONFIG_USB_OHCI_HCD_SSB is not set # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set @@ -2886,6 +3085,9 @@ CONFIG_USB_U132_HCD=m CONFIG_USB_SL811_HCD=m CONFIG_USB_SL811_CS=m CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_HWA_HCD=m +# CONFIG_USB_GADGET_MUSB_HDRC is not set # # USB Device Class drivers @@ -2893,13 +3095,14 @@ CONFIG_USB_R8A66597_HCD=m CONFIG_USB_ACM=m CONFIG_USB_PRINTER=m CONFIG_USB_WDM=m +CONFIG_USB_TMC=m # -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; # # -# may also be needed; see USB_STORAGE Help for more information +# see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set @@ -2922,7 +3125,6 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=y # CONFIG_USB_MDC800=m CONFIG_USB_MICROTEK=m -CONFIG_USB_MON=y # # USB port drivers @@ -2932,7 +3134,6 @@ CONFIG_USB_SERIAL=m CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=m -CONFIG_USB_SERIAL_AIRPRIME=m CONFIG_USB_SERIAL_ARK3116=m CONFIG_USB_SERIAL_BELKIN=m CONFIG_USB_SERIAL_CH341=m @@ -2992,7 +3193,7 @@ CONFIG_USB_SERIAL_OMNINET=m CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m CONFIG_USB_ADUTUX=m -CONFIG_USB_AUERSWALD=m +CONFIG_USB_SEVSEG=m CONFIG_USB_RIO500=m CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m @@ -3014,6 +3215,7 @@ CONFIG_USB_TRANCEVIBRATOR=m CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m +CONFIG_USB_VST=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m @@ -3023,20 +3225,22 @@ CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_SELECTED=y -# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_ATMEL_USBA is not set # CONFIG_USB_GADGET_FSL_USB2 is not set -CONFIG_USB_GADGET_NET2280=y -CONFIG_USB_NET2280=m -# CONFIG_USB_GADGET_PXA2XX is not set -# CONFIG_USB_GADGET_M66592 is not set -# CONFIG_USB_GADGET_PXA27X is not set -# CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA25X is not set +# CONFIG_USB_GADGET_PXA27X is not set # CONFIG_USB_GADGET_S3C2410 is not set -# CONFIG_USB_GADGET_AT91 is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_FSL_QE is not set +CONFIG_USB_GADGET_NET2280=y +CONFIG_USB_NET2280=m +# CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y # CONFIG_USB_ZERO is not set @@ -3048,12 +3252,19 @@ CONFIG_USB_FILE_STORAGE=m CONFIG_USB_G_SERIAL=m CONFIG_USB_MIDI_GADGET=m CONFIG_USB_G_PRINTER=m +# CONFIG_USB_CDC_COMPOSITE is not set +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_WHCI=m +CONFIG_UWB_WLP=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_I1480U_WLP=m CONFIG_MMC=m # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_UNSAFE_RESUME is not set # -# MMC/SD Card Drivers +# MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=m CONFIG_MMC_BLOCK_BOUNCE=y @@ -3061,13 +3272,15 @@ CONFIG_SDIO_UART=m # CONFIG_MMC_TEST is not set # -# MMC/SD Host Controller Drivers +# MMC/SD/SDIO Host Controller Drivers # CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_RICOH_MMC=m CONFIG_MMC_WBSD=m CONFIG_MMC_TIFM_SD=m CONFIG_MMC_SPI=m +CONFIG_MMC_SDRICOH_CS=m CONFIG_MEMSTICK=m # CONFIG_MEMSTICK_DEBUG is not set @@ -3088,7 +3301,10 @@ CONFIG_LEDS_CLASS=m # # LED drivers # +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_HP_DISK=m CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_PCA955X=m # # LED Triggers @@ -3097,8 +3313,10 @@ CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_IDE_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m CONFIG_LEDS_TRIGGER_DEFAULT_ON=m -# CONFIG_ACCESSIBILITY is not set +CONFIG_ACCESSIBILITY=y +CONFIG_A11Y_BRAILLE_CONSOLE=y # CONFIG_INFINIBAND is not set CONFIG_EDAC=y @@ -3110,7 +3328,9 @@ CONFIG_EDAC_MM_EDAC=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I82975X=m CONFIG_EDAC_I3000=m +CONFIG_EDAC_X38=m CONFIG_EDAC_I5000=m +CONFIG_EDAC_I5100=m CONFIG_RTC_LIB=m CONFIG_RTC_CLASS=m @@ -3139,25 +3359,34 @@ CONFIG_RTC_DRV_M41T80=m CONFIG_RTC_DRV_M41T80_WDT=y CONFIG_RTC_DRV_S35390A=m CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m # # SPI RTC drivers # +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m CONFIG_RTC_DRV_MAX6902=m CONFIG_RTC_DRV_R9701=m CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m # # Platform RTC drivers # CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS1286=m CONFIG_RTC_DRV_DS1511=m CONFIG_RTC_DRV_DS1553=m CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_STK17TA8=m CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_WM8350=m # # on-CPU RTC drivers @@ -3174,6 +3403,7 @@ CONFIG_DMA_ENGINE=y # DMA Clients # CONFIG_NET_DMA=y +# CONFIG_DMATEST is not set CONFIG_DCA=m CONFIG_AUXDISPLAY=y CONFIG_KS0108=m @@ -3183,13 +3413,34 @@ CONFIG_CFAG12864B=m CONFIG_CFAG12864B_RATE=20 CONFIG_UIO=m CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m CONFIG_UIO_SMX=m +CONFIG_UIO_SERCOS3=m +CONFIG_STAGING=y +# CONFIG_STAGING_EXCLUDE_BUILD is not set +CONFIG_ET131X=m +# CONFIG_ET131X_DEBUG is not set +CONFIG_SLICOSS=m +CONFIG_SXG=m +CONFIG_ME4000=m +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_USB_IP_COMMON=m +CONFIG_USB_IP_VHCI_HCD=m +CONFIG_USB_IP_HOST=m +CONFIG_W35UND=m +CONFIG_PRISM2_USB=m +CONFIG_ECHO=m +CONFIG_USB_ATMEL=m +CONFIG_POCH=m # # Firmware Drivers # CONFIG_EDD=m # CONFIG_EDD_OFF is not set +CONFIG_FIRMWARE_MEMMAP=y CONFIG_EFI_VARS=m CONFIG_DELL_RBU=m CONFIG_DCDBAS=m @@ -3208,10 +3459,11 @@ CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -CONFIG_EXT4DEV_FS=m -CONFIG_EXT4DEV_FS_XATTR=y -CONFIG_EXT4DEV_FS_POSIX_ACL=y -CONFIG_EXT4DEV_FS_SECURITY=y +CONFIG_EXT4_FS=m +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_JBD2=m @@ -3229,19 +3481,21 @@ CONFIG_JFS_SECURITY=y # CONFIG_JFS_DEBUG is not set # CONFIG_JFS_STATISTICS is not set CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y CONFIG_XFS_FS=m CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y # CONFIG_XFS_DEBUG is not set CONFIG_GFS2_FS=m -CONFIG_GFS2_FS_LOCKING_NOLOCK=m CONFIG_GFS2_FS_LOCKING_DLM=m CONFIG_OCFS2_FS=m CONFIG_OCFS2_FS_O2CB=m CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y # CONFIG_OCFS2_DEBUG_MASKLOG is not set # CONFIG_OCFS2_DEBUG_FS is not set +# CONFIG_OCFS2_COMPAT_JBD is not set CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y @@ -3283,6 +3537,7 @@ CONFIG_NTFS_RW=y CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y @@ -3326,6 +3581,7 @@ CONFIG_SQUASHFS=m CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_VXFS_FS is not set # CONFIG_MINIX_FS is not set +CONFIG_OMFS_FS=m # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_ROMFS_FS is not set @@ -3350,7 +3606,7 @@ CONFIG_NFS_ACL_SUPPORT=m CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m -CONFIG_SUNRPC_BIND34=y +# CONFIG_SUNRPC_REGISTER_V4 is not set CONFIG_RPCSEC_GSS_KRB5=m CONFIG_RPCSEC_GSS_SPKM3=m CONFIG_SMB_FS=m @@ -3359,6 +3615,7 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y # CONFIG_CIFS_STATS2 is not set CONFIG_CIFS_WEAK_PW_HASH=y +# CONFIG_CIFS_UPCALL is not set CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set @@ -3373,7 +3630,6 @@ CONFIG_NCPFS_SMALLDOS=y CONFIG_NCPFS_NLS=y # CONFIG_NCPFS_EXTRAS is not set CONFIG_CODA_FS=m -# CONFIG_CODA_FS_OLD_API is not set CONFIG_AFS_FS=m # CONFIG_AFS_DEBUG is not set CONFIG_9P_FS=m @@ -3396,7 +3652,7 @@ CONFIG_SOLARIS_X86_PARTITION=y # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set -# CONFIG_KARMA_PARTITION is not set +CONFIG_KARMA_PARTITION=y CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y @@ -3457,6 +3713,8 @@ CONFIG_DEBUG_FS=y CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set CONFIG_TIMER_STATS=y @@ -3477,21 +3735,44 @@ CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_WRITECOUNT is not set +CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_FRAME_POINTER is not set # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_BOOT_TRACER is not set +# CONFIG_STACK_TRACER is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set -# CONFIG_NONPROMISC_DEVMEM is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_X86_VERBOSE_BOOTUP=y CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set @@ -3500,8 +3781,8 @@ CONFIG_EARLY_PRINTK=y # CONFIG_DEBUG_RODATA is not set # CONFIG_DIRECT_GBPAGES is not set # CONFIG_DEBUG_NX_TEST is not set -CONFIG_X86_MPPARSE=y # CONFIG_IOMMU_DEBUG is not set +# CONFIG_MMIOTRACE is not set CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 @@ -3513,6 +3794,7 @@ CONFIG_IO_DELAY_0X80=y CONFIG_DEFAULT_IO_DELAY_TYPE=0 # CONFIG_DEBUG_BOOT_PARAMS is not set # CONFIG_CPA_DEBUG is not set +# CONFIG_OPTIMIZE_INLINING is not set # # Security options @@ -3520,9 +3802,9 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0 CONFIG_KEYS=y # CONFIG_KEYS_DEBUG_PROC_KEYS is not set CONFIG_SECURITY=y +CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y # CONFIG_SECURITY_NETWORK_XFRM is not set -CONFIG_SECURITY_CAPABILITIES=y CONFIG_SECURITY_FILE_CAPABILITIES=y CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 # CONFIG_SECURITY_SMACK is not set @@ -3535,11 +3817,19 @@ CONFIG_CRYPTO=y # # Crypto core or helper # -CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_FIPS=y +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=m -CONFIG_CRYPTO_BLKCIPHER=y -CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_GF128MUL=m CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_CRYPTD=m @@ -3556,7 +3846,7 @@ CONFIG_CRYPTO_SEQIV=m # # Block modes # -CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_CTR=m CONFIG_CRYPTO_CTS=m CONFIG_CRYPTO_ECB=m @@ -3567,16 +3857,21 @@ CONFIG_CRYPTO_XTS=m # # Hash modes # -CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_HMAC=m CONFIG_CRYPTO_XCBC=m # # Digest # CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_CRC32C_INTEL=m CONFIG_CRYPTO_MD4=m -CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MD5=m CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD128=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_RMD256=m +CONFIG_CRYPTO_RMD320=m CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m @@ -3594,7 +3889,7 @@ CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_CAMELLIA=m CONFIG_CRYPTO_CAST5=m CONFIG_CRYPTO_CAST6=m -CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_KHAZAD=m CONFIG_CRYPTO_SALSA20=m @@ -3611,6 +3906,11 @@ CONFIG_CRYPTO_TWOFISH_X86_64=m # CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_LZO=m + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=m CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_HIFN_795X=m CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y @@ -3630,6 +3930,7 @@ CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_CRC_CCITT=m CONFIG_CRC16=m +CONFIG_CRC_T10DIF=m CONFIG_CRC_ITU_T=m CONFIG_CRC32=y CONFIG_CRC7=m diff --git a/abs/core/kernel26/ext4.patch b/abs/core/kernel26/ext4.patch new file mode 100644 index 0000000..40ecfde --- /dev/null +++ b/abs/core/kernel26/ext4.patch @@ -0,0 +1,152 @@ +diff -ruaN linux-2.6.28.orig/fs/ext4/ext4.h linux-2.6.28/fs/ext4/ext4.h +--- linux-2.6.28.orig/fs/ext4/ext4.h 2008-12-24 23:26:37.000000000 +0000 ++++ linux-2.6.28/fs/ext4/ext4.h 2009-08-17 04:22:43.000000000 +0000 +@@ -254,6 +254,7 @@ + #define EXT4_STATE_NEW 0x00000002 /* inode is newly created */ + #define EXT4_STATE_XATTR 0x00000004 /* has in-inode xattrs */ + #define EXT4_STATE_NO_EXPAND 0x00000008 /* No space for expansion */ ++#define EXT4_STATE_DA_ALLOC_CLOSE 0x00000010 /* Alloc DA blks on close */ + + /* Used to pass group descriptor data when online resize is done */ + struct ext4_new_group_input { +@@ -301,7 +302,9 @@ + #define EXT4_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) + #define EXT4_IOC_GROUP_ADD _IOW('f', 8, struct ext4_new_group_input) + #define EXT4_IOC_MIGRATE _IO('f', 9) ++ /* note ioctl 10 reserved for an early version of the FIEMAP ioctl */ + /* note ioctl 11 reserved for filesystem-independent FIEMAP ioctl */ ++#define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12) + + /* + * ioctl commands in 32 bit emulation +@@ -1088,6 +1091,7 @@ + extern void ext4_truncate(struct inode *); + extern void ext4_set_inode_flags(struct inode *); + extern void ext4_get_inode_flags(struct ext4_inode_info *); ++extern int ext4_alloc_da_blocks(struct inode *inode); + extern void ext4_set_aops(struct inode *inode); + extern int ext4_writepage_trans_blocks(struct inode *); + extern int ext4_meta_trans_blocks(struct inode *, int nrblocks, int idxblocks); +diff -ruaN linux-2.6.28.orig/fs/ext4/file.c linux-2.6.28/fs/ext4/file.c +--- linux-2.6.28.orig/fs/ext4/file.c 2008-12-24 23:26:37.000000000 +0000 ++++ linux-2.6.28/fs/ext4/file.c 2009-08-17 04:15:17.000000000 +0000 +@@ -33,6 +33,10 @@ + */ + static int ext4_release_file(struct inode *inode, struct file *filp) + { ++ if (EXT4_I(inode)->i_state & EXT4_STATE_DA_ALLOC_CLOSE) { ++ ext4_alloc_da_blocks(inode); ++ EXT4_I(inode)->i_state &= ~EXT4_STATE_DA_ALLOC_CLOSE; ++ } + /* if we are the last writer on the inode, drop the block reservation */ + if ((filp->f_mode & FMODE_WRITE) && + (atomic_read(&inode->i_writecount) == 1)) +diff -ruaN linux-2.6.28.orig/fs/ext4/inode.c linux-2.6.28/fs/ext4/inode.c +--- linux-2.6.28.orig/fs/ext4/inode.c 2008-12-24 23:26:37.000000000 +0000 ++++ linux-2.6.28/fs/ext4/inode.c 2009-08-17 04:34:48.000000000 +0000 +@@ -2686,6 +2686,42 @@ + return; + } + ++/* ++ * Force all delayed allocation blocks to be allocated for a given inode. ++ */ ++int ext4_alloc_da_blocks(struct inode *inode) ++{ ++ if (!EXT4_I(inode)->i_reserved_data_blocks && ++ !EXT4_I(inode)->i_reserved_meta_blocks) ++ return 0; ++ /* ++ * We do something simple for now. The filemap_flush() will ++ * also start triggering a write of the data blocks, which is ++ * not strictly speaking necessary (and for users of ++ * laptop_mode, not even desirable). However, to do otherwise ++ * would require replicating code paths in: ++ * ++ * ext4_da_writepages() -> ++ * write_cache_pages() ---> (via passed in callback function) ++ * __mpage_da_writepage() --> ++ * mpage_ad_bh_to_extent() ++ * mpage_da_map_blocks() ++ * ++ * The problem is that write_cache_pages(), and then redirty all of ++ * the pages calling redirty_page_for_writeback() but that ++ * would be ugly in the extreme. So instead we would need to ++ * replicate parts of the code in teh above functions, ++ * simplifying them because we wouldn't actually intend to ++ * write out the pages, but rather only collect contiguous ++ * logical block extents, call the multi-block allocator, and ++ * then update the buffer heads with the block allocations. ++ * ++ * For now, though we'll cheat by calling filemap_flush(), ++ * which will map the blocks, and start the I/O, but not ++ * actually wait for the I/O to complte. ++ */ ++ return filemap_flush(inode->i_mapping); ++} + + /* + * bmap() is special. It gets used by applications such as lilo and by +@@ -3695,6 +3731,9 @@ + if (!ext4_can_truncate(inode)) + return; + ++ if (inode->i_size == 0) ++ ei->i_state |= EXT4_STATE_DA_ALLOC_CLOSE; ++ + if (EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL) { + ext4_ext_truncate(inode); + return; +diff -ruaN linux-2.6.28.orig/fs/ext4/ioctl.c linux-2.6.28/fs/ext4/ioctl.c +--- linux-2.6.28.orig/fs/ext4/ioctl.c 2008-12-24 23:26:37.000000000 +0000 ++++ linux-2.6.28/fs/ext4/ioctl.c 2009-08-17 04:38:43.000000000 +0000 +@@ -263,6 +263,20 @@ + return err; + } + ++ case EXT4_IOC_ALLOC_DA_BLKS: ++ { ++ int err; ++ if (!is_owner_or_cap(inode)) ++ return -EACCES; ++ ++ err = mnt_want_write(filp->f_path.mnt); ++ if (err) ++ return err; ++ err = ext4_alloc_da_blocks(inode); ++ mnt_drop_write(filp->f_path.mnt); ++ return err; ++ } ++ + default: + return -ENOTTY; + } +diff -ruaN linux-2.6.28.orig/fs/ext4/namei.c linux-2.6.28/fs/ext4/namei.c +--- linux-2.6.28.orig/fs/ext4/namei.c 2008-12-24 23:26:37.000000000 +0000 ++++ linux-2.6.28/fs/ext4/namei.c 2009-08-17 04:11:01.000000000 +0000 +@@ -2283,7 +2283,7 @@ + struct inode *old_inode, *new_inode; + struct buffer_head *old_bh, *new_bh, *dir_bh; + struct ext4_dir_entry_2 *old_de, *new_de; +- int retval; ++ int retval, force_da_alloc = 0; + + old_bh = new_bh = dir_bh = NULL; + +@@ -2421,6 +2421,7 @@ + ext4_mark_inode_dirty(handle, new_inode); + if (!new_inode->i_nlink) + ext4_orphan_add(handle, new_inode); ++ force_da_alloc = 1; + } + retval = 0; + +@@ -2429,6 +2430,8 @@ + brelse(old_bh); + brelse(new_bh); + ext4_journal_stop(handle); ++ if (retval == 0 && force_da_alloc) ++ ext4_alloc_da_blocks(old_inode); + return retval; + } + diff --git a/abs/core/kernel26/kernel26.install b/abs/core/kernel26/kernel26.install index 514bcb7..f0bd904 100644 --- a/abs/core/kernel26/kernel26.install +++ b/abs/core/kernel26/kernel26.install @@ -1,12 +1,12 @@ # arg 1: the new package version # arg 2: the old package version -KERNEL_VERSION=2.6.26-ARCH +KERNEL_VERSION=2.6.28-LinHES post_install () { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - depmod -v $KERNEL_VERSION > /dev/null 2>&1 + depmod $KERNEL_VERSION # generate init ramdisks echo ">>> MKINITCPIO SETUP" echo ">>> ----------------" @@ -81,7 +81,7 @@ post_upgrade() { fi # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - depmod -v $KERNEL_VERSION > /dev/null 2>&1 + depmod $KERNEL_VERSION echo ">>> MKINITCPIO SETUP" echo ">>> ----------------" if [ "`vercmp $2 2.6.18`" -lt 0 ]; then diff --git a/abs/core/kernel26/kernel26.preset b/abs/core/kernel26/kernel26.preset index 742a442..269b23a 100644 --- a/abs/core/kernel26/kernel26.preset +++ b/abs/core/kernel26/kernel26.preset @@ -14,4 +14,4 @@ default_image="/boot/kernel26.img" #fallback_config="/etc/mkinitcpio.conf" fallback_image="/boot/kernel26-fallback.img" -fallback_options="-S autodetect" \ No newline at end of file +fallback_options="-S autodetect" diff --git a/abs/core/kernel26/logo_linux_mono.pbm b/abs/core/kernel26/logo_linux_mono.pbm index 6a5e007..7b1369c 100644 --- a/abs/core/kernel26/logo_linux_mono.pbm +++ b/abs/core/kernel26/logo_linux_mono.pbm @@ -1,883 +1,95 @@ -P3 +P1 +# CREATOR: GIMP PNM Filter Version 1.1 80 80 -255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 0 0 0 -128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 0 0 0 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 128 128 127 0 0 0 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 - -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 - -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 - -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 -0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 0 0 0 128 128 127 -0 0 0 128 128 127 0 0 0 128 128 127 0 0 0 128 128 127 0 0 0 128 128 127 -0 0 0 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 0 0 0 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 128 128 127 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 -128 128 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 127 128 128 127 128 128 127 -128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 128 128 127 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - +1111111111111111111111111111111111000000000000111111111111111111111111 +1111111111111111111111111111111111111111100000010101000000111111111111 +1111111111111111111111111111111111111111111111111100011111111111110000 +1111111111111111111111111111111111111111111111111111111111000111111111 +1111111100011111111111111111111111111111111111111111111111111111111100 +1111111111111110111100111111111111111111111111111111111111111111111111 +1111111001111111111111111000110001111111111111111111111111111111111111 +1111111111111111000111111111111111001111110011111111111111111111111111 +1111111111111111111111111100111111111111111111111111001111111111111111 +1111111111111111111111111111111111110011111111111111111111111110011111 +1111111111111111111111111111111111111111111110011111111111111111111111 +1110011111111111111111111111111111111111111111111111111100111111111111 +1111111111111100111111111111111111111111111111111111111111111111100111 +1110111111111111011111100011111111111111111111111111111111111111111111 +1111110011100111111110000001111111001111111111111111111111111111111111 +1111111111111110011100000111110000000111111100111111111111111111111111 +1111111111111111111111111100100000001110000000001111111001111111111111 +1111111111111111111111111111111111100110000000111000000000111111001111 +1111111111111111111111111111111111111111111111001001000011100011010001 +1111100111111111111111111111111111111111111111111111111001100110000100 +0011100011111100111111111111111111111111111111111111111111111111110010 +0111000000001111000111111001111111111111111111111111111111111111111111 +1111110011000000000000000000111111001111111111111111111111111111111111 +1111111111111111001100000000000000000011111110011111111111111111111111 +1111111111111111111111111100110000000000000000001111110011111111111111 +1111111111111111111111111111111111110010000000000000000000111111100111 +1111111111111111111111111111111111111111111111001000000000000000000011 +1111100111111111111111111111111111111111111111111111110000110000000000 +0000000011111110011111111111111111111111111111111111111111111100000000 +0000000000000000001110001001111111111111111111111111111111111111111111 +1000000000000000000000000000011100110011111111111111111111111111111111 +1111111111000000000000000000000000000001111110011111111111111111111111 +1111111111111111111110000000000000000000000000000011111100111111111111 +1111111111111111111111111111110000000000000000000000000000000111110011 +1111111111111111111111111111111111111111100000000000000000000000000000 +0111111000111111111111111111111111111111111111111000000000000000000000 +0000000000011111110001111111111111111111111111111111111111100110000000 +0000000000000000000000111111110011111111111111111111111111111111111100 +1110000000000000000000000000000011111111000111111111111111111111111111 +1111111000111000000000000000000000000000000111111110011111111111111111 +1111111111111111001111110000000000000000000000000000011111111100111111 +1111111111111111111111111100011111000000000000000000000000000000111111 +1100011111111111111111111111111111110001111100000000000000000000000000 +0000111111111001111111111111111111111111111110010011111000000000000000 +0000000000000001111100110011111111111111111111111111111001100001000000 +0000000000000000001000000111001110011111111111111111111111111111100111 +0000000000000000000000000000110000000001111100111111111111111111111111 +1111001111111000000000000000000000000011000000111111110011111111111111 +1111111111111110011111111000000000000100000000011110101111111111001111 +1111111111111111111111110011111111111111111111110000111111111111111111 +1111001111111111111111111111111111100111111111111111111111100011111111 +1111111111111100111111111111111111111111111110011111111111111111111100 +0011111111111111111111100111111111111111111111111111111000111111111111 +1111111100000111111111111111111110011111111111111111111111111111110011 +1111111111111111100000011111111111111111111001111111111111111111111111 +1111110011111111111111111100000000111111111111111111100111111111111111 +1111111111111110011000111111111111000000000000111111111111111100011111 +1111111111111111111111111100100000000000000000000000000000000010000011 +1110011111111111111111111111111111100110000000000000000000000000000000 +0000000011111001111111111111111111111111111110011000000000000000000000 +0000000000000000000111100111111111111111111111111111100001000000000000 +0000000000000000000000000000111110011111111111111111111111111100000010 +0000000000000000000000000000000000000001111001111111111111111111111111 +1000000000000000000000000000000000000000000000001111100000000111111111 +1111111111000000000000000000000000000000000000000000000000000000000000 +0001111111111111111000000000000000000000000000000000000000000000000000 +0000000000000111111111111111000000000000000000000000000000000000000000 +0000000000000000000000011111111111000000000000000000000000000000000000 +0000000000000000000000000000000001111111110000000000000000000000000000 +0000000000000000000000000000000000000000000011111110000000000000000000 +0000000000000000000000000000000000000000000000000000001111111000000000 +0000000000000000000000000000000000000000000000000000000000000000001111 +0000000000000000000000000000000000000000000000000000000000000000000000 +0000000111100000000000000000000000000000000000000000000000000000000000 +0000000000000000000110000000000000000000000000000000000000000000000000 +0000000000000000000000000000011000000000000000000000000000000000000000 +0000000000001000000000000000000000000000000000000000000000000000000000 +0000000000000000000001100000000000000000000000001110000000000000000000 +0000000000000000000000000000011110000000000000000000000000111000000000 +0000000000000000000000000000000000000011111000000000000000000000000111 +1000000000000000000000000000000000000000000001111111100000000000000000 +0000001111000000000000000000000000000000001000000001011111111100000000 +0000000000000001111110000000000000000000000000000001111111111111111111 +1110000000000000000000011111110000000000000000000000000000000111111111 +1111111111110000000000000000000011111111110000000000000000000000000000 +1111111111111111111111100000000000000000111111111111101000000000000000 +0000000000010000000000000000000000000000000000001111111111111111111010 +0000000000000000000100000010101010101010100000000000000001111111111111 +1111111111111100000000000001000011111111111111111110001000000000011111 +1111111111111111111111111110100000000000111111111111111111111100000000 +0000011111111111111111111111111111111111100000000111111111111111111111 +111000000000011111111111111111 \ No newline at end of file diff --git a/abs/core/kernel26/logo_linux_vga16.ppm b/abs/core/kernel26/logo_linux_vga16.ppm index 51ffad6..8b2d1ea 100644 --- a/abs/core/kernel26/logo_linux_vga16.ppm +++ b/abs/core/kernel26/logo_linux_vga16.ppm @@ -5,8 +5,8 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 36 26 8 102 124 121 157 146 143 232 232 232 232 232 232 232 232 232 232 232 232 +232 232 232 232 232 232 232 232 232 214 202 162 157 146 143 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -15,10 +15,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 255 255 255 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 255 255 255 170 170 170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +157 146 143 232 232 232 157 146 143 44 44 44 36 26 8 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 214 202 162 232 232 232 157 146 143 +36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -26,10 +26,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 214 202 162 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 +232 232 232 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -37,10 +37,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 214 202 162 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -48,10 +48,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 -0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 44 44 44 44 44 44 0 0 0 +0 0 0 44 44 44 157 146 143 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -59,10 +59,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 214 202 162 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 -0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 102 124 121 44 44 44 +0 0 0 0 0 0 0 0 0 157 146 143 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -70,10 +70,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 102 124 121 214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 118 110 50 44 44 44 +0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -81,10 +81,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 157 146 143 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 44 44 44 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -92,10 +92,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -103,10 +103,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -114,10 +114,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -125,10 +125,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85 +0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +36 26 8 44 44 44 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 44 44 44 36 26 8 44 44 44 44 44 44 44 44 44 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -136,10 +136,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 +102 124 121 44 44 44 36 26 8 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 44 44 44 157 146 143 157 146 143 157 146 143 157 146 143 44 44 44 36 26 8 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -147,10 +147,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 -170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -85 85 85 170 170 170 170 170 170 170 170 170 255 255 255 170 170 170 85 85 85 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 +0 0 0 0 0 0 255 255 254 0 0 0 0 0 0 36 26 8 157 146 143 157 146 143 +232 232 232 157 146 143 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +102 124 121 214 202 162 214 202 162 232 232 232 232 232 232 214 202 162 102 124 121 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -158,10 +158,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 85 85 85 170 170 170 255 255 255 -255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 255 255 255 170 170 170 85 85 85 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +0 0 0 0 0 0 250 246 233 0 0 0 0 0 0 102 124 121 214 202 162 232 232 232 +232 232 232 254 254 254 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 102 124 121 +232 232 232 232 232 232 232 232 232 157 146 143 214 202 162 232 232 232 232 232 232 44 44 44 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -169,10 +169,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 -85 85 85 170 170 170 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 -255 255 255 170 170 170 0 0 0 0 0 0 85 85 85 85 85 85 255 255 255 170 170 170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 102 124 121 157 146 143 0 0 0 +44 44 44 157 146 143 232 232 232 102 124 121 0 0 0 0 0 0 0 0 0 102 124 121 +232 232 232 214 202 162 44 44 44 0 0 0 102 124 121 102 124 121 232 232 232 232 232 232 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -180,10 +180,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 -85 85 85 85 85 85 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 85 85 85 -255 255 255 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 255 255 255 255 255 255 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +0 0 0 0 0 0 232 232 232 44 44 44 0 0 0 157 146 143 44 44 44 44 44 44 +102 124 121 44 44 44 232 232 232 157 146 143 0 0 0 44 44 44 36 26 8 102 124 121 +232 232 232 102 124 121 0 0 0 0 0 0 44 44 44 0 0 0 232 232 232 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -191,32 +191,32 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 85 85 85 0 0 0 170 170 170 85 85 85 0 0 0 -0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 85 85 85 -255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 232 232 232 44 44 44 0 0 0 157 146 143 102 124 121 0 0 0 +0 0 0 44 44 44 214 202 162 157 146 143 36 26 8 36 26 8 36 26 8 44 44 44 +232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 214 202 162 254 254 254 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 +36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 85 85 85 170 170 170 0 0 0 -0 0 0 0 0 0 255 85 85 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -255 255 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 157 146 143 102 124 121 0 0 0 44 44 44 214 202 162 0 0 0 +0 0 0 36 26 8 188 146 47 227 174 11 227 174 11 226 188 8 227 174 11 188 146 47 +226 177 55 118 110 50 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 232 232 232 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 170 170 170 170 170 170 -170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 -255 255 85 255 255 85 170 85 0 170 85 0 85 85 85 255 255 255 255 255 255 85 85 85 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +0 0 0 0 0 0 157 146 143 102 124 121 0 0 0 0 0 0 232 232 232 157 146 143 +44 44 44 223 156 6 188 146 47 227 174 11 226 188 8 226 188 8 226 188 8 226 188 8 +226 177 55 226 188 8 188 146 47 118 110 50 118 110 50 232 232 232 254 254 254 102 124 121 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -224,10 +224,10 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 85 85 85 255 85 85 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 170 170 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +0 0 0 0 0 0 157 146 143 102 124 121 0 0 0 0 0 0 44 44 44 226 177 55 +223 156 6 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 +226 177 55 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 157 146 143 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -235,649 +235,649 @@ P3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 102 124 121 102 124 121 0 0 0 36 26 8 118 110 50 223 156 6 +227 174 11 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 226 177 55 +226 177 55 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 188 146 47 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 157 146 143 102 124 121 0 0 0 118 110 50 223 156 6 223 156 6 +223 156 6 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 226 177 55 +226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 188 146 47 223 156 6 223 156 6 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 170 170 170 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 102 124 121 157 146 143 36 26 8 36 26 8 188 146 47 223 156 6 +227 174 11 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 226 177 55 226 188 8 +226 188 8 226 188 8 226 188 8 226 188 8 188 146 47 223 156 6 223 156 6 188 146 47 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 214 202 162 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 85 85 85 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +157 146 143 232 232 232 232 232 232 157 146 143 0 0 0 36 26 8 118 110 50 188 146 47 +223 156 6 226 188 8 226 188 8 226 188 8 226 177 55 226 188 8 226 188 8 226 188 8 +226 188 8 188 146 47 188 146 47 188 146 47 188 146 47 223 156 6 188 146 47 36 26 8 +36 26 8 0 0 0 0 0 0 44 44 44 36 26 8 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255 -170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 170 170 170 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 255 85 85 170 170 170 170 170 170 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 157 146 143 232 232 232 +157 146 143 157 146 143 102 124 121 102 124 121 102 124 121 44 44 44 118 110 50 118 110 50 +118 110 50 223 156 6 226 188 8 226 188 8 226 188 8 188 146 47 226 188 8 188 146 47 +188 146 47 188 146 47 188 146 47 188 146 47 188 146 47 188 146 47 157 146 143 214 202 162 +36 26 8 0 0 0 0 0 0 44 44 44 102 124 121 44 44 44 0 0 0 102 124 121 +157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255 170 170 170 -170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 170 170 170 170 170 170 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 232 232 232 157 146 143 +157 146 143 157 146 143 157 146 143 157 146 143 102 124 121 102 124 121 214 202 162 157 146 143 +118 110 50 188 146 47 188 146 47 223 156 6 188 146 47 223 156 6 188 146 47 188 146 47 +188 146 47 188 146 47 188 146 47 188 146 47 157 146 143 214 202 162 214 202 162 214 202 162 +102 124 121 0 0 0 0 0 0 0 0 0 102 124 121 102 124 121 44 44 44 0 0 0 +254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 170 170 170 85 85 85 -170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 170 170 170 170 170 170 -170 170 170 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 170 170 170 170 170 170 170 170 255 255 255 255 255 255 255 255 255 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 157 146 143 102 124 121 +157 146 143 157 146 143 157 146 143 102 124 121 102 124 121 102 124 121 157 146 143 214 202 162 +188 146 47 118 110 50 118 110 50 118 110 50 188 146 47 188 146 47 188 146 47 188 146 47 +118 110 50 188 146 47 157 146 143 214 202 162 214 202 162 232 232 232 232 232 232 232 232 232 +214 202 162 44 44 44 0 0 0 0 0 0 0 0 0 44 44 44 0 0 0 0 0 0 +232 232 232 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 170 170 170 170 170 170 -170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 170 170 170 170 170 170 -170 170 170 170 170 170 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 170 170 170 170 170 170 170 170 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 157 146 143 102 124 121 +102 124 121 157 146 143 102 124 121 157 146 143 102 124 121 157 146 143 102 124 121 232 232 232 +157 146 143 214 202 162 188 146 47 118 110 50 118 110 50 118 110 50 118 110 50 188 146 47 +188 146 47 214 202 162 157 146 143 232 232 232 232 232 232 232 232 232 254 254 254 232 232 232 +232 232 232 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +157 146 143 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170 -85 85 85 170 170 170 85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 255 255 255 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 -170 170 170 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -85 85 85 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 157 146 143 157 146 143 +102 124 121 157 146 143 102 124 121 157 146 143 102 124 121 102 124 121 102 124 121 232 232 232 +232 232 232 214 202 162 157 146 143 214 202 162 157 146 143 214 202 162 157 146 143 214 202 162 +157 146 143 232 232 232 232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +44 44 44 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 170 170 170 170 170 170 -85 85 85 170 170 170 85 85 85 85 85 85 170 170 170 85 85 85 170 170 170 170 170 170 -255 255 255 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 85 85 85 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 102 124 121 232 232 232 +102 124 121 102 124 121 102 124 121 102 124 121 157 146 143 102 124 121 102 124 121 214 202 162 +232 232 232 157 146 143 232 232 232 157 146 143 214 202 162 157 146 143 232 232 232 214 202 162 +232 232 232 232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 102 124 121 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 85 85 85 0 0 0 170 170 170 -85 85 85 170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 170 170 170 -255 255 255 255 255 255 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 44 44 44 44 44 44 102 124 121 +102 124 121 157 146 143 102 124 121 102 124 121 102 124 121 102 124 121 157 146 143 157 146 143 +232 232 232 232 232 232 157 146 143 232 232 232 157 146 143 232 232 232 214 202 162 232 232 232 +232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 36 26 8 232 232 232 214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 255 255 255 85 85 85 0 0 0 0 0 0 170 170 170 -170 170 170 85 85 85 170 170 170 85 85 85 170 170 170 170 170 170 85 85 85 85 85 85 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 +0 0 0 0 0 0 36 26 8 232 232 232 44 44 44 0 0 0 0 0 0 157 146 143 +102 124 121 102 124 121 157 146 143 102 124 121 157 146 143 102 124 121 102 124 121 102 124 121 +254 254 254 254 254 254 254 254 254 232 232 232 232 232 232 232 232 232 232 232 232 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 170 170 170 85 85 85 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 85 85 85 0 0 0 +0 0 0 0 0 0 214 202 162 102 124 121 0 0 0 0 0 0 0 0 0 102 124 121 +157 146 143 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 157 146 143 102 124 121 +232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 232 232 232 36 26 8 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 0 0 0 +0 0 0 157 146 143 214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +157 146 143 157 146 143 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 +214 202 162 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 102 124 121 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 254 254 254 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 +0 0 0 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +157 146 143 157 146 143 44 44 44 102 124 121 102 124 121 102 124 121 102 124 121 157 146 143 +157 146 143 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 232 232 232 250 246 233 255 255 254 157 146 143 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 85 85 85 -85 85 85 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -170 170 170 170 170 170 170 170 170 255 255 255 255 255 255 85 85 85 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +102 124 121 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +102 124 121 157 146 143 102 124 121 102 124 121 102 124 121 118 110 50 102 124 121 102 124 121 +102 124 121 254 254 254 232 232 232 232 232 232 232 232 232 232 232 232 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 +214 202 162 232 232 232 214 202 162 232 232 232 254 254 254 44 44 44 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 +36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -255 255 255 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 -85 85 85 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 -85 85 85 85 85 85 170 170 170 170 170 170 255 255 255 170 170 170 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +232 232 232 44 44 44 102 124 121 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 +44 44 44 157 146 143 157 146 143 157 146 143 102 124 121 102 124 121 102 124 121 102 124 121 +102 124 121 232 232 232 232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 232 232 232 232 232 232 232 232 232 157 146 143 +102 124 121 102 124 121 214 202 162 214 202 162 232 232 232 214 202 162 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 0 0 0 157 146 143 +157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 -0 0 0 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 -85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 -85 85 85 0 0 0 170 170 170 170 170 170 170 170 170 255 255 255 85 85 85 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +232 232 232 0 0 0 102 124 121 157 146 143 44 44 44 0 0 0 0 0 0 0 0 0 +44 44 44 157 146 143 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 +102 124 121 214 202 162 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 232 232 232 232 232 232 157 146 143 +44 44 44 0 0 0 214 202 162 232 232 232 157 146 143 232 232 232 102 124 121 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 0 0 0 0 0 0 +254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 -170 170 170 170 170 170 170 170 170 85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 -85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 85 85 85 -0 0 0 0 0 0 170 170 170 255 255 255 170 170 170 170 170 170 255 255 255 0 0 0 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 +157 146 143 0 0 0 44 44 44 102 124 121 102 124 121 102 124 121 44 44 44 44 44 44 +157 146 143 157 146 143 157 146 143 102 124 121 157 146 143 102 124 121 102 124 121 102 124 121 +157 146 143 157 146 143 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 232 232 232 102 124 121 +44 44 44 0 0 0 157 146 143 232 232 232 232 232 232 214 202 162 232 232 232 36 26 8 +0 0 0 36 26 8 102 124 121 102 124 121 44 44 44 0 0 0 0 0 0 0 0 0 +254 254 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 -170 170 170 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85 -0 0 0 0 0 0 170 170 170 255 255 255 255 255 255 170 170 170 170 170 170 170 170 170 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 214 202 162 +44 44 44 0 0 0 0 0 0 36 26 8 44 44 44 102 124 121 102 124 121 102 124 121 +157 146 143 157 146 143 157 146 143 157 146 143 157 146 143 157 146 143 157 146 143 157 146 143 +157 146 143 157 146 143 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 214 202 162 102 124 121 +0 0 0 0 0 0 157 146 143 232 232 232 232 232 232 232 232 232 157 146 143 102 124 121 +102 124 121 102 124 121 44 44 44 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 +232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 -170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 -0 0 0 0 0 0 85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 44 44 44 102 124 121 +102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 157 146 143 102 124 121 +157 146 143 157 146 143 157 146 143 157 146 143 102 124 121 102 124 121 232 232 232 254 254 254 +254 254 254 254 254 254 232 232 232 157 146 143 157 146 143 157 146 143 102 124 121 44 44 44 +0 0 0 0 0 0 44 44 44 102 124 121 102 124 121 102 124 121 102 124 121 44 44 44 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +157 146 143 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 255 255 255 -255 255 255 255 255 255 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +44 44 44 44 44 44 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 102 124 121 +102 124 121 102 124 121 102 124 121 44 44 44 36 26 8 0 0 0 44 44 44 255 255 254 +254 254 254 232 232 232 36 26 8 44 44 44 102 124 121 44 44 44 44 44 44 44 44 44 +0 0 0 0 0 0 0 0 0 44 44 44 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +157 146 143 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +254 254 254 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +102 124 121 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +254 254 254 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +157 146 143 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +254 254 254 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 254 254 254 +254 254 254 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 -255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 +157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +157 146 143 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 -255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 232 232 232 254 254 254 +254 254 254 255 255 254 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 254 254 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 +214 202 162 44 44 44 0 0 0 0 0 0 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 +0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 250 246 233 254 254 254 254 254 254 +254 254 254 254 254 254 255 255 254 157 146 143 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -255 255 255 0 0 0 0 0 0 85 85 85 255 255 255 170 170 170 85 85 85 0 0 0 +254 254 254 0 0 0 0 0 0 102 124 121 232 232 232 157 146 143 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85 0 0 0 +0 0 0 36 26 8 102 124 121 214 202 162 255 255 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 232 232 232 157 146 143 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 232 232 +44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 0 0 0 0 0 0 85 85 85 255 255 255 255 255 255 255 255 255 255 255 255 -170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 -170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +232 232 232 0 0 0 0 0 0 102 124 121 254 254 254 254 254 254 254 254 254 232 232 232 +157 146 143 157 146 143 102 124 121 118 110 50 102 124 121 102 124 121 102 124 121 157 146 143 +232 232 232 232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 232 232 232 +214 202 162 102 124 121 102 124 121 44 44 44 102 124 121 44 44 44 102 124 121 102 124 121 +157 146 143 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 0 0 0 0 0 0 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 +157 146 143 0 0 0 0 0 0 102 124 121 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 232 232 232 254 254 254 250 246 233 254 254 254 254 254 254 +232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 0 0 0 0 0 0 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 +214 202 162 0 0 0 0 0 0 157 146 143 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255 -170 170 170 0 0 0 0 0 0 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 157 146 143 232 232 232 +157 146 143 0 0 0 0 0 0 157 146 143 254 254 254 254 254 254 255 255 254 255 255 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +250 246 233 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255 255 255 85 255 255 85 -170 85 0 0 0 0 0 0 0 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 232 232 232 214 202 162 226 177 55 +226 177 55 36 26 8 0 0 0 157 146 143 254 254 254 254 254 254 254 254 254 255 255 254 +255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +102 124 121 0 0 0 36 26 8 44 44 44 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 255 255 85 255 255 85 255 255 85 -255 255 85 170 85 0 170 85 0 85 85 85 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85 +0 0 0 0 0 0 0 0 0 157 146 143 214 202 162 227 174 11 226 188 8 226 188 8 +226 188 8 223 156 6 118 110 50 102 124 121 254 254 254 254 254 254 255 255 254 255 255 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 250 246 233 +232 232 232 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 146 143 +250 246 233 232 232 232 232 232 232 232 232 232 214 202 162 232 232 232 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 255 255 255 170 85 0 170 85 0 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 85 85 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 170 170 255 255 255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 255 255 255 255 85 85 170 85 0 170 85 0 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 255 255 85 170 85 0 170 85 0 170 85 0 170 170 170 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -85 85 85 255 255 255 255 255 85 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 255 255 85 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 170 170 170 255 255 255 -170 170 170 255 85 85 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 -255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 0 0 0 170 170 170 255 255 255 170 170 170 255 255 85 255 255 85 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 170 170 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 85 85 85 255 255 255 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 170 170 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 -255 85 85 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 170 170 170 255 255 85 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 170 170 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 -170 85 0 170 170 170 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 255 255 255 255 85 85 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 170 170 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 -170 85 0 170 85 0 255 85 85 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 - -0 0 0 255 255 255 255 255 85 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 255 255 85 255 255 255 170 170 170 0 0 0 - -0 0 0 170 170 170 255 255 85 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 170 170 170 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 255 85 85 255 255 255 0 0 0 - -0 0 0 170 170 170 170 170 170 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 255 255 85 170 170 170 0 0 0 - -0 0 0 170 170 170 170 170 170 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 255 255 85 255 255 255 0 0 0 0 0 0 - -0 0 0 170 170 170 255 255 85 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 170 85 0 170 170 170 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 170 85 0 170 85 0 255 85 85 255 255 255 0 0 0 0 0 0 0 0 0 - -0 0 0 170 170 170 255 255 85 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 170 170 170 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -170 85 0 170 85 0 255 85 85 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 - -0 0 0 255 255 255 255 255 85 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 -255 255 85 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 170 85 0 85 85 85 170 170 170 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 -170 85 0 170 170 170 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 255 255 255 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 170 85 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0 0 0 255 255 255 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 255 255 85 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -255 255 85 255 255 85 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 170 170 255 255 255 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 102 124 121 232 232 232 227 174 11 227 174 11 226 188 8 226 188 8 +226 188 8 226 188 8 227 174 11 188 146 47 255 255 254 255 255 254 255 255 254 255 255 254 +255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +250 246 233 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 250 246 233 188 146 47 +223 156 6 223 156 6 188 146 47 188 146 47 118 110 50 118 110 50 118 110 50 188 146 47 +223 156 6 188 146 47 223 156 6 223 156 6 223 156 6 223 156 6 226 177 55 232 232 232 +36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 36 26 8 232 232 232 226 177 55 223 156 6 227 174 11 227 174 11 226 188 8 +226 188 8 226 188 8 226 188 8 226 188 8 214 202 162 255 255 254 255 255 254 255 255 254 +255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +232 232 232 232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 226 177 55 223 156 6 +223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 +223 156 6 223 156 6 227 174 11 227 174 11 227 174 11 223 156 6 223 156 6 214 202 162 +157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +102 124 121 232 232 232 226 177 55 188 146 47 223 156 6 227 174 11 227 174 11 226 188 8 +227 174 11 226 188 8 226 188 8 226 188 8 226 177 55 250 246 233 255 255 254 255 255 254 +255 255 254 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 255 255 254 254 254 254 232 232 232 188 146 47 188 146 47 +223 156 6 223 156 6 223 156 6 227 174 11 223 156 6 227 174 11 223 156 6 227 174 11 +227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 227 174 11 226 177 55 +232 232 232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 157 146 143 214 202 162 232 232 232 +214 202 162 188 146 47 223 156 6 223 156 6 227 174 11 227 174 11 227 174 11 226 188 8 +226 177 55 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 250 246 233 255 255 254 +255 255 254 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 232 232 232 232 232 232 226 177 55 118 110 50 188 146 47 +223 156 6 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 +227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 227 174 11 227 174 11 188 146 47 +250 246 233 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 0 0 0 102 124 121 250 246 233 214 202 162 214 202 162 226 177 55 188 146 47 +223 156 6 223 156 6 223 156 6 223 156 6 227 174 11 227 174 11 226 188 8 226 188 8 +226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 177 55 255 255 254 +255 255 254 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 214 202 162 157 146 143 157 146 143 223 156 6 223 156 6 +223 156 6 223 156 6 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 +226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 227 174 11 227 174 11 223 156 6 +214 202 162 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 102 124 121 232 232 232 223 156 6 223 156 6 223 156 6 223 156 6 227 174 11 +223 156 6 223 156 6 227 174 11 227 174 11 227 174 11 226 188 8 226 188 8 227 174 11 +226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 226 188 8 214 202 162 +255 255 254 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 232 232 232 232 232 232 214 202 162 188 146 47 118 110 50 188 146 47 +223 156 6 227 174 11 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 +227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 223 156 6 188 146 47 +226 177 55 232 232 232 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 214 202 162 226 177 55 223 156 6 227 174 11 227 174 11 227 174 11 227 174 11 +227 174 11 227 174 11 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 177 55 +250 246 233 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 214 202 162 214 202 162 157 146 143 223 156 6 223 156 6 +223 156 6 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 +226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 227 174 11 223 156 6 +188 146 47 226 177 55 232 232 232 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 232 232 232 226 177 55 227 174 11 227 174 11 227 174 11 226 188 8 226 188 8 +226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 +226 188 8 226 188 8 226 177 55 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 +226 177 55 250 246 233 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 232 232 232 232 232 232 157 146 143 188 146 47 188 146 47 223 156 6 +223 156 6 226 188 8 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 227 174 11 227 174 11 223 156 6 +223 156 6 188 146 47 226 177 55 254 254 254 157 146 143 44 44 44 0 0 0 0 0 0 + +0 0 0 232 232 232 226 177 55 223 156 6 227 174 11 226 188 8 227 174 11 226 188 8 +227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 +226 188 8 214 202 162 255 255 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 232 232 232 157 146 143 102 124 121 223 156 6 223 156 6 +223 156 6 227 174 11 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 +226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 227 174 11 227 174 11 +223 156 6 223 156 6 188 146 47 223 156 6 214 202 162 250 246 233 102 124 121 0 0 0 + +0 0 0 214 202 162 214 202 162 223 156 6 227 174 11 226 188 8 227 174 11 226 188 8 +226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 +226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 +226 188 8 226 188 8 214 202 162 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 232 232 232 232 232 232 36 26 8 118 110 50 118 110 50 223 156 6 +223 156 6 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 +226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 227 174 11 227 174 11 +227 174 11 223 156 6 223 156 6 223 156 6 223 156 6 226 177 55 232 232 232 0 0 0 + +0 0 0 157 146 143 214 202 162 223 156 6 227 174 11 227 174 11 227 174 11 226 188 8 +227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 227 174 11 +226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 +226 188 8 226 188 8 226 177 55 250 246 233 255 255 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 214 202 162 0 0 0 0 0 0 118 110 50 223 156 6 223 156 6 +223 156 6 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 +226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 226 188 8 226 188 8 +227 174 11 227 174 11 227 174 11 223 156 6 223 156 6 214 202 162 214 202 162 0 0 0 + +0 0 0 157 146 143 214 202 162 223 156 6 227 174 11 227 174 11 226 188 8 227 174 11 +226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 226 188 8 226 177 55 226 188 8 226 188 8 227 174 11 226 188 8 +226 188 8 226 188 8 226 188 8 226 177 55 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 102 124 121 0 0 0 0 0 0 36 26 8 36 26 8 188 146 47 223 156 6 +227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 +226 188 8 227 174 11 223 156 6 223 156 6 226 177 55 232 232 232 0 0 0 0 0 0 + +0 0 0 157 146 143 214 202 162 223 156 6 223 156 6 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 +226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 226 188 8 226 188 8 214 202 162 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 157 146 143 +36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 188 146 47 223 156 6 223 156 6 +223 156 6 227 174 11 227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 +226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 +226 188 8 227 174 11 223 156 6 188 146 47 232 232 232 36 26 8 0 0 0 0 0 0 + +0 0 0 157 146 143 226 177 55 223 156 6 227 174 11 227 174 11 226 188 8 227 174 11 +226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 +226 177 55 226 188 8 226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 +226 188 8 227 174 11 227 174 11 227 174 11 223 156 6 214 202 162 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 157 146 143 44 44 44 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118 110 50 223 156 6 223 156 6 +227 174 11 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 +227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 226 188 8 227 174 11 +227 174 11 223 156 6 226 177 55 232 232 232 102 124 121 0 0 0 0 0 0 0 0 0 + +0 0 0 232 232 232 226 177 55 223 156 6 227 174 11 227 174 11 227 174 11 227 174 11 +226 188 8 227 174 11 227 174 11 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 +226 188 8 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 +227 174 11 226 188 8 227 174 11 223 156 6 223 156 6 118 110 50 118 110 50 157 146 143 +232 232 232 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 +232 232 232 232 232 232 157 146 143 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 118 110 50 223 156 6 223 156 6 +223 156 6 227 174 11 227 174 11 226 188 8 226 188 8 226 188 8 227 174 11 226 188 8 +226 188 8 227 174 11 226 188 8 227 174 11 226 188 8 227 174 11 227 174 11 227 174 11 +223 156 6 214 202 162 232 232 232 44 44 44 36 26 8 0 0 0 0 0 0 0 0 0 + +36 26 8 250 246 233 188 146 47 223 156 6 223 156 6 227 174 11 227 174 11 227 174 11 +227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 226 188 8 226 188 8 226 177 55 227 174 11 226 188 8 226 188 8 +227 174 11 226 188 8 223 156 6 223 156 6 223 156 6 188 146 47 36 26 8 0 0 0 +0 0 0 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 36 26 8 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 36 26 8 36 26 8 118 110 50 223 156 6 223 156 6 +227 174 11 227 174 11 227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 227 174 11 +227 174 11 226 188 8 227 174 11 227 174 11 227 174 11 227 174 11 223 156 6 223 156 6 +232 232 232 157 146 143 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +44 44 44 250 246 233 223 156 6 188 146 47 223 156 6 223 156 6 223 156 6 223 156 6 +223 156 6 223 156 6 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 +227 174 11 226 188 8 227 174 11 226 188 8 226 188 8 226 188 8 226 188 8 227 174 11 +226 188 8 227 174 11 227 174 11 223 156 6 188 146 47 118 110 50 118 110 50 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 223 156 6 223 156 6 223 156 6 +223 156 6 227 174 11 227 174 11 227 174 11 226 188 8 227 174 11 227 174 11 226 188 8 +227 174 11 227 174 11 227 174 11 227 174 11 223 156 6 188 146 47 214 202 162 250 246 233 +118 110 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + +0 0 0 232 232 232 214 202 162 226 177 55 118 110 50 188 146 47 188 146 47 188 146 47 +223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 227 174 11 +227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 +227 174 11 227 174 11 223 156 6 188 146 47 223 156 6 118 110 50 118 110 50 36 26 8 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 36 26 8 36 26 8 118 110 50 118 110 50 223 156 6 +223 156 6 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 227 174 11 +227 174 11 223 156 6 223 156 6 223 156 6 214 202 162 232 232 232 102 124 121 36 26 8 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 170 170 170 255 255 255 170 170 170 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 0 0 0 +0 0 0 0 0 0 102 124 121 157 146 143 250 246 233 214 202 162 214 202 162 188 146 47 +118 110 50 188 146 47 118 110 50 223 156 6 118 110 50 223 156 6 188 146 47 223 156 6 +188 146 47 223 156 6 223 156 6 223 156 6 227 174 11 227 174 11 227 174 11 227 174 11 +223 156 6 223 156 6 223 156 6 118 110 50 118 110 50 118 110 50 36 26 8 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 170 170 255 255 255 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 188 146 47 188 146 47 188 146 47 +223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 223 156 6 +223 156 6 188 146 47 118 110 50 232 232 232 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 170 170 170 255 255 255 255 255 255 170 170 170 170 170 170 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 102 124 121 157 146 143 +232 232 232 250 246 233 214 202 162 157 146 143 188 146 47 118 110 50 118 110 50 118 110 50 +118 110 50 118 110 50 188 146 47 188 146 47 223 156 6 223 156 6 223 156 6 223 156 6 +188 146 47 223 156 6 118 110 50 188 146 47 118 110 50 118 110 50 36 26 8 36 26 8 +44 44 44 157 146 143 157 146 143 232 232 232 214 202 162 232 232 232 214 202 162 232 232 232 +232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 +232 232 232 232 232 232 232 232 232 157 146 143 36 26 8 36 26 8 118 110 50 118 110 50 +188 146 47 118 110 50 223 156 6 223 156 6 223 156 6 223 156 6 188 146 47 223 156 6 +118 110 50 188 146 47 232 232 232 118 110 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 0 0 0 0 0 0 -85 85 85 170 170 170 170 170 170 170 170 170 170 170 170 255 255 255 170 170 170 255 255 255 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 -255 255 255 255 255 255 255 255 255 85 85 85 85 85 85 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 170 170 255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - +0 0 0 36 26 8 118 110 50 102 124 121 157 146 143 214 202 162 232 232 232 214 202 162 +188 146 47 118 110 50 118 110 50 118 110 50 118 110 50 118 110 50 118 110 50 118 110 50 +118 110 50 118 110 50 118 110 50 118 110 50 36 26 8 118 110 50 157 146 143 232 232 232 +214 202 162 102 124 121 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 170 170 170 255 255 255 170 170 170 -170 170 170 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 85 85 85 170 170 170 255 255 255 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 85 85 85 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 -170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 214 202 162 157 146 143 118 110 50 118 110 50 188 146 47 +118 110 50 223 156 6 118 110 50 188 146 47 118 110 50 188 146 47 118 110 50 118 110 50 +157 146 143 214 202 162 44 44 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 -170 170 170 170 170 170 255 255 255 170 170 170 85 85 85 170 85 0 170 85 0 170 85 0 -170 85 0 170 85 0 170 85 0 85 85 85 85 85 85 255 255 255 85 85 85 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 44 44 44 +157 146 143 214 202 162 232 232 232 188 146 47 118 110 50 118 110 50 118 110 50 118 110 50 +118 110 50 118 110 50 118 110 50 36 26 8 118 110 50 214 202 162 157 146 143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 85 85 85 85 85 85 170 85 0 -170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 85 0 170 170 170 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 44 44 44 214 202 162 118 110 50 36 26 8 36 26 8 +118 110 50 118 110 50 118 110 50 118 110 50 188 146 47 36 26 8 118 110 50 214 202 162 +214 202 162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 85 85 85 85 85 85 -85 85 85 85 85 85 85 85 85 170 170 170 255 255 255 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 +0 0 0 0 0 0 36 26 8 102 124 121 214 202 162 214 202 162 118 110 50 118 110 50 +118 110 50 118 110 50 118 110 50 157 146 143 232 232 232 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255 170 170 170 85 85 85 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 255 255 255 85 85 85 +0 0 0 0 0 0 0 0 0 0 0 0 102 124 121 232 232 232 214 202 162 188 146 47 +36 26 8 36 26 8 118 110 50 36 26 8 118 110 50 157 146 143 214 202 162 102 124 121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 -170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 36 26 8 44 44 44 157 146 143 157 146 143 +157 146 143 214 202 162 214 202 162 157 146 143 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 -170 170 170 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 44 44 118 110 50 157 146 143 +232 232 232 214 202 162 232 232 232 232 232 232 214 202 162 157 146 143 36 26 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/abs/core/kernel26/serial.diff b/abs/core/kernel26/serial.diff new file mode 100644 index 0000000..9b53e48 --- /dev/null +++ b/abs/core/kernel26/serial.diff @@ -0,0 +1,13 @@ +--- include/linux/serial.h.orig 2009-02-11 05:59:28.000000000 +0000 ++++ include/linux/serial.h 2009-02-11 06:09:24.000000000 +0000 +@@ -10,8 +10,9 @@ + #ifndef _LINUX_SERIAL_H + #define _LINUX_SERIAL_H + +-#ifdef __KERNEL__ + #include ++ ++#ifdef __KERNEL__ + #include + + /* diff --git a/abs/core/klibc-extras/PKGBUILD b/abs/core/klibc-extras/PKGBUILD index 155d959..286616c 100644 --- a/abs/core/klibc-extras/PKGBUILD +++ b/abs/core/klibc-extras/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 1644 2008-05-14 12:09:30Z thomas $ +# $Id: PKGBUILD 23611 2009-01-11 14:09:50Z thomas $ # Maintainer: Aaron Griffin pkgname=klibc-extras -pkgver=2.4 -pkgrel=11 +pkgver=2.5 +pkgrel=30 pkgdesc="Extra apps for klibc early-userspace" arch=(i686 x86_64) -url="http://phraktured.net/initramfs/klibc-extras/" +url="http://projects.archlinux.org/?p=klibc-extras.git" license=('GPL') groups=('base') depends=('klibc' $(basename /lib/klibc-*.so .so)) source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('f7887993f4a3d4fbb04aa1ddf730568e') +md5sums=('edd16b1a558164db0107c7319a21f0d4') build() { cd $startdir/src/${pkgname}-${pkgver} make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=$startdir/pkg install || return 1 + rm -f ${pkgdir}/usr/lib/klibc/bin/mknod } diff --git a/abs/core/klibc-kbd/PKGBUILD b/abs/core/klibc-kbd/PKGBUILD index 8c4e0db..9b232ce 100644 --- a/abs/core/klibc-kbd/PKGBUILD +++ b/abs/core/klibc-kbd/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 1645 2008-05-14 12:09:34Z thomas $ +# $Id: PKGBUILD 23614 2009-01-11 14:10:20Z thomas $ # Maintainer: Tobias Powalowski pkgname=klibc-kbd pkgver=1.15.20080312 -pkgrel=15 +pkgrel=30 pkgdesc="Keytable files and keyboard utilities" arch=('i686' 'x86_64') url="ftp://ftp.altlinux.org/pub/people/legion/kbd/" @@ -14,19 +14,22 @@ source=(ftp://ftp.archlinux.org/other/kbd/kbd-$pkgver.tar.gz #ftp://ftp.altlinux.org/pub/people/legion/kbd/kbd-${pkgver}.tar.gz no-isatty.patch no-exit.patch + no-fflush.patch keymap_install keymap_hook) md5sums=('709b087bb9d6c073bade70eda2da7770' '53e9612ac5fc1b23601f793410742ed3' '8c1bec330e8c98355502ac861561667d' + '8310d1a6cc72b5827898d0e9e29824ab' '735d7268f567deee4db3bed951a8303a' '85457e44dfd7046224e87f0add8da4b2') build() { cd ${startdir}/src #cd ${startdir}/src/kbd-${pkgver} - patch -Np1 -i ../no-isatty.patch - patch -Np1 -i ../no-exit.patch + patch -Np1 -i no-isatty.patch || return 1 + patch -Np1 -i no-exit.patch || return 1 + patch -Np1 -i no-fflush.patch || return 1 aclocal autoconf diff --git a/abs/core/klibc-kbd/no-fflush.patch b/abs/core/klibc-kbd/no-fflush.patch new file mode 100644 index 0000000..1a2bd78 --- /dev/null +++ b/abs/core/klibc-kbd/no-fflush.patch @@ -0,0 +1,14 @@ +diff -Nur src.orig/src/klibc_compat.c src/src/klibc_compat.c +--- src.orig/src/klibc_compat.c 2008-03-12 01:56:14.000000000 +0100 ++++ src/src/klibc_compat.c 2008-09-15 18:59:31.000000000 +0200 +@@ -18,10 +18,6 @@ + return (errno != 0 && errno != EOF); + } + +-int fflush(FILE *stream) { +- return 0; +-} +- + int ungetc(int c, FILE *stream) { + if (fseek(stream, -1, SEEK_CUR) < 0) + return EOF; diff --git a/abs/core/klibc-module-init-tools/PKGBUILD b/abs/core/klibc-module-init-tools/PKGBUILD index 80a1ede..a7d6884 100644 --- a/abs/core/klibc-module-init-tools/PKGBUILD +++ b/abs/core/klibc-module-init-tools/PKGBUILD @@ -1,29 +1,23 @@ -# $Id: PKGBUILD 5989 2008-07-22 12:58:46Z thomas $ +# $Id: PKGBUILD 23617 2009-01-11 14:11:13Z thomas $ # Maintainer: Thomas Baechler pkgname=klibc-module-init-tools -pkgver=3.4 -pkgrel=10 +pkgver=3.5 +pkgrel=30 pkgdesc="Utilities for inserting and removing modules from the Linux kernel" arch=(i686 x86_64) url="http://www.kernel.org" license=('GPL') groups=('base') depends=('klibc' $(basename /lib/klibc-*.so .so)) -source=(http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-$pkgver.tar.bz2 \ - makefile.patch - fix-modprobe-ignore-path.patch) -md5sums=('db6ac059e80e8dd4389dbe81ee61f3c6' - 'c48553c2b61fd8d9784aa86e559b9d7b' - '335c3f8317f257ddd70b09271b4360bd') +source=(http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-$pkgver.tar.bz2) +md5sums=('2b47686247fc9a99bfdb9dd1d1d80e6f') build() { cd $startdir/src/module-init-tools-$pkgver - patch -p1 -i ../makefile.patch || return 1 - autoreconf || return 1 - patch -p0 -i ../fix-modprobe-ignore-path.patch || return 1 - sed -i 's|/usr/bin/install|/bin/install|g' install-with-care CFLAGS="${CFLAGS} -DCONFIG_NO_BACKWARDS_COMPAT" CC=klcc LD=klcc ./configure --prefix=/usr/lib/klibc + # klibc lacks getc_unlocked, so use getc instead + sed 's|getc_unlocked|getc|g' -i *.c make || return 1 INSTALL=/bin/install make DESTDIR=$startdir/pkg install || return 1 rm -f $startdir/pkg/usr/lib/klibc/sbin/{generate-modprobe.conf,insmod.static} diff --git a/abs/core/klibc-udev/50-udev-default.rules b/abs/core/klibc-udev/50-udev-default.rules new file mode 100644 index 0000000..8593c7b --- /dev/null +++ b/abs/core/klibc-udev/50-udev-default.rules @@ -0,0 +1,5 @@ +# firmware class requests +SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh" + +# do not delete static device nodes +ACTION=="remove", NAME=="?*", TEST=="/lib/udev/devices/$name", OPTIONS+="ignore_remove" diff --git a/abs/core/klibc-udev/60-persistent-storage.rules b/abs/core/klibc-udev/60-persistent-storage.rules new file mode 100644 index 0000000..d32a143 --- /dev/null +++ b/abs/core/klibc-udev/60-persistent-storage.rules @@ -0,0 +1,47 @@ +# do not edit this file, it will be overwritten on update + +# persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path} +# scheme based on "Linux persistent device names", 2004, Hannes Reinecke + +# forward scsi device event to corresponding block device +ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change" + +ACTION!="add|change", GOTO="persistent_storage_end" +SUBSYSTEM!="block", GOTO="persistent_storage_end" + +# skip rules for inappropriate block devices +KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*|btibm*", GOTO="persistent_storage_end" + +# never access non-cdrom removable ide devices, the drivers are causing event loops on open() +KERNEL=="hd*[!0-9]", ATTR{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end" +KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GOTO="persistent_storage_end" + +# ignore partitions that span the entire disk +TEST=="whole_disk", GOTO="persistent_storage_end" + +# /sys/class/block will export this +ENV{DEVTYPE}!="?*", ATTR{range}=="?*", ENV{DEVTYPE}="disk" +ENV{DEVTYPE}!="?*", ATTR{start}=="?*", ENV{DEVTYPE}="partition" + +# for partitions import parent information +ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*" + +# by-path (parent device path) +ENV{DEVTYPE}=="disk", IMPORT{program}="path_id %p" +ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}" +ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n" + +# skip unpartitioned removable media devices from drivers which do not send "change" events +ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end" + +# probe filesystem metadata of optical drives which have a media inserted +KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode" + +# probe filesystem metadata of disks +KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode" + +# by-label/by-uuid links (filesystem metadata) +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" + +LABEL="persistent_storage_end" diff --git a/abs/core/klibc-udev/64-device-mapper.rules b/abs/core/klibc-udev/64-device-mapper.rules new file mode 100644 index 0000000..8154ef3 --- /dev/null +++ b/abs/core/klibc-udev/64-device-mapper.rules @@ -0,0 +1,4 @@ +# do not edit this file, it will be overwritten on update + +KERNEL=="device-mapper", NAME="mapper/control" + diff --git a/abs/core/klibc-udev/64-md-raid.rules b/abs/core/klibc-udev/64-md-raid.rules new file mode 100644 index 0000000..e094ca7 --- /dev/null +++ b/abs/core/klibc-udev/64-md-raid.rules @@ -0,0 +1,18 @@ +# do not edit this file, it will be overwritten on update + +SUBSYSTEM!="block", GOTO="md_end" +ACTION!="add|change", GOTO="md_end" + +# import data from a raid member and activate it +#ENV{ID_FS_TYPE}=="linux_raid_member", IMPORT{program}="/sbin/mdadm --examine --export $tempnode", RUN+="/sbin/mdadm --incremental $env{DEVNAME}" +# import data from a raid set +KERNEL!="md*", GOTO="md_end" + +ATTR{md/array_state}=="|clear|inactive", GOTO="md_end" + +IMPORT{program}="vol_id --export $tempnode" +OPTIONS+="link_priority=100" +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" + +LABEL="md_end" diff --git a/abs/core/klibc-udev/80-drivers.rules b/abs/core/klibc-udev/80-drivers.rules new file mode 100644 index 0000000..6f6fcc3 --- /dev/null +++ b/abs/core/klibc-udev/80-drivers.rules @@ -0,0 +1,7 @@ +# do not edit this file, it will be overwritten on update + +ACTION!="add", GOTO="drivers_end" + +DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/lib/udev/load-modules.sh $env{MODALIAS}" + +LABEL="drivers_end" diff --git a/abs/core/klibc-udev/PKGBUILD b/abs/core/klibc-udev/PKGBUILD index baad6d4..0775b05 100644 --- a/abs/core/klibc-udev/PKGBUILD +++ b/abs/core/klibc-udev/PKGBUILD @@ -1,58 +1,59 @@ -# $Id: PKGBUILD 5858 2008-07-21 18:47:23Z thomas $ +# $Id: PKGBUILD 23620 2009-01-11 14:11:40Z thomas $ # Maintainer: Tobias Powalowski pkgname=klibc-udev -pkgver=116 -pkgrel=13 -pkgdesc="udevd compiled under klibc" +pkgver=135 +pkgrel=30 +pkgdesc="udev compiled for klibc" arch=(i686 x86_64) url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html" groups=('base') depends=('coreutils' 'klibc' $(basename /lib/klibc-*.so .so)) license=('GPL') -source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-$pkgver.tar.bz2 \ - udev_hook udev_install start_udev udev.rules load-modules.sh \ - vol_id-suspend2.patch) -md5sums=('02c49d93ffda4a104c853c082138b835' - 'bcfed63882660e7d33f367d722e0a5c9' - '92b62124dd43d61a2e610c305bf95d15' - '22741baf8f5d7d8bc88022b39bca74d8' - 'f50bd6b378a5e75b2475bc67b32cb692' - '1ecfeec15e88485e88f2e37f46861f2e' - '80f75fc9a8fc32c7b8ff146d53bf579f') +source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-$pkgver.tar.bz2 + udev-fix-klibc-build.patch + disable-uid-gid-lookup.patch + udev_hook + udev_install + 50-udev-default.rules + 60-persistent-storage.rules + 64-device-mapper.rules + 64-md-raid.rules + 80-drivers.rules + load-modules.sh) +md5sums=('661b9df34e1304dad10f595d95b472bb' + 'c769a0440fc90ba0fee7a2ae2bf7d76f' + '89acd170a2771f81ca9e4b7920820555' + '042fd2ba6a0351bbae30da33ff492c03' + 'a3d81917e2bbe66f6c24486a86d4dc9c' + 'f9095dbad80fc93bcde60d7fe4572022' + '6625a4000069b9d46ae0ff9d9c2cebb7' + '258fea1c2b024f9755f905a21bd45a01' + 'e20efd69738bbbba35c49e7b63ee0212' + 'd42740d13b6bb5c5d90bfc2062019f58' + '5dd248da5d5fa3adfbe87309807ab734') -build() -{ - cd $startdir/src/udev-$pkgver - patch -p1 -i ${startdir}/src/vol_id-suspend2.patch || return 1 - sed -i "s|USE_LOG = .*|USE_LOG = false|g" Makefile +build() { + cd ${srcdir}/udev-$pkgver + patch -p1 -i ../udev-fix-klibc-build.patch || return 1 + # uid/gid lookup fails to build on klibc due to incomplete headers + # we don't use this feature in klibc, simply omit it + patch -p1 -i ../disable-uid-gid-lookup.patch || return 1 - #I need to look at this... it appears the __CTYPE_NO_INLINE may be a klibc issue - aaron - make VOLUME_ID_STATIC=true CC=klcc LD=klcc PROGRAMS="udevd udevsettle udevtrigger" \ - CFLAGS="$CFLAGS -U__CTYPE_NO_INLINE" \ - EXTRAS="extras/firmware extras/cdrom_id extras/ata_id \ - extras/edd_id extras/usb_id extras/volume_id" \ - || return 1 + CC=klcc LD=klcc ./configure --prefix="" + make || return 1 - mkdir -p $startdir/pkg/lib/initcpio/udev - install -m755 udevd $startdir/pkg/lib/initcpio/udev - install -m755 udevtrigger $startdir/pkg/lib/initcpio/udev - install -m755 udevsettle $startdir/pkg/lib/initcpio/udev - install -m755 extras/firmware/firmware.sh $startdir/pkg/lib/initcpio/udev - install -m755 extras/cdrom_id/cdrom_id $startdir/pkg/lib/initcpio/udev - install -m755 extras/ata_id/ata_id $startdir/pkg/lib/initcpio/udev - install -m755 extras/edd_id/edd_id $startdir/pkg/lib/initcpio/udev - install -m755 extras/scsi_id/scsi_id $startdir/pkg/lib/initcpio/udev - install -m755 extras/usb_id/usb_id $startdir/pkg/lib/initcpio/udev - # broken atm - install -m755 extras/volume_id/vol_id $startdir/pkg/lib/initcpio/udev - #install -m755 extras/path_id/path_id $startdir/pkg/lib/initcpio/udev - install -m755 $startdir/src/start_udev $startdir/pkg/lib/initcpio/udev - install -m644 $startdir/src/udev.rules $startdir/pkg/lib/initcpio/udev - install -m755 $startdir/src/load-modules.sh $startdir/pkg/lib/initcpio/udev + mkdir -p ${pkgdir}/lib/initcpio/udev + install -m755 udev/udevd ${pkgdir}/lib/initcpio/udev/ || return 1 + install -m755 udev/udevadm ${pkgdir}/lib/initcpio/udev/ || return 1 + install -m755 extras/path_id/path_id ${pkgdir}/lib/initcpio/udev/ || return 1 + install -m755 extras/volume_id/vol_id ${pkgdir}/lib/initcpio/udev/ || return 1 + install -m755 extras/firmware/firmware.sh ${pkgdir}/lib/initcpio/udev/ || return 1 + for rules in 50-udev-default.rules 60-persistent-storage.rules 64-device-mapper.rules 64-md-raid.rules 80-drivers.rules; do + install -m644 ${srcdir}/${rules} ${pkgdir}/lib/initcpio/udev/ || return 1 + done + install -m755 ${srcdir}/load-modules.sh ${pkgdir}/lib/initcpio/udev/ || return 1 - mkdir -p $startdir/pkg/lib/initcpio/install - install -m644 $startdir/src/udev_install $startdir/pkg/lib/initcpio/install/udev - mkdir -p $startdir/pkg/lib/initcpio/hooks/ - install -m644 $startdir/src/udev_hook $startdir/pkg/lib/initcpio/hooks/udev + install -D -m644 ${srcdir}/udev_install ${pkgdir}/lib/initcpio/install/udev || return 1 + install -D -m644 ${srcdir}/udev_hook ${pkgdir}/lib/initcpio/hooks/udev || return 1 } diff --git a/abs/core/klibc-udev/disable-uid-gid-lookup.patch b/abs/core/klibc-udev/disable-uid-gid-lookup.patch new file mode 100644 index 0000000..578c3ee --- /dev/null +++ b/abs/core/klibc-udev/disable-uid-gid-lookup.patch @@ -0,0 +1,33 @@ +diff -Nur udev-132.orig/udev/udev-util.c udev-132/udev/udev-util.c +--- udev-132.orig/udev/udev-util.c 2008-11-06 02:56:15.000000000 +0100 ++++ udev-132/udev/udev-util.c 2008-11-09 18:28:30.000000000 +0100 +@@ -126,6 +126,7 @@ + + uid_t util_lookup_user(struct udev *udev, const char *user) + { ++ /* + char *endptr; + int buflen = sysconf(_SC_GETPW_R_SIZE_MAX); + char buf[buflen]; +@@ -147,11 +148,13 @@ + err(udev, "specified user '%s' unknown\n", user); + else + err(udev, "error resolving user '%s': %m\n", user); ++ */ + return 0; + } + + extern gid_t util_lookup_group(struct udev *udev, const char *group) + { ++ /* + char *endptr; + int buflen = sysconf(_SC_GETGR_R_SIZE_MAX); + char buf[buflen]; +@@ -173,6 +176,7 @@ + err(udev, "specified group '%s' unknown\n", group); + else + err(udev, "error resolving group '%s': %m\n", group); ++ */ + return 0; + } + diff --git a/abs/core/klibc-udev/load-modules.sh b/abs/core/klibc-udev/load-modules.sh index f0961a7..3d52d6b 100755 --- a/abs/core/klibc-udev/load-modules.sh +++ b/abs/core/klibc-udev/load-modules.sh @@ -4,29 +4,48 @@ # - Aaron Griffin & Tobias Powalowski for Archlinux [ $# -ne 1 ] && exit 1 +MODPROBE="/sbin/modprobe" +RESOLVEALIAS="/bin/resolve-modalias" +USEBLACKLIST="--use-blacklist" +REPLACE="/bin/replace" +MODDEPS="/bin/moddeps" + if [ -f /proc/cmdline ]; then - for cmd in $(cat /proc/cmdline); do - case $cmd in - *=*) eval $cmd ;; - esac - done + for cmd in $(cat /proc/cmdline); do + case $cmd in + disablemodules=*) eval $cmd ;; + load_modules=off) exit ;; + esac + done + #parse cmdline entries of the form "disablemodules=x,y,z" + if [ -n "${disablemodules}" ]; then + BLACKLIST="$(${REPLACE} ${disablemodules} ',')" + fi fi -# get the real names from modaliases -i="$(/bin/moddeps $1)" -# add disablemodules= from commandline to blacklist -k="$(/bin/replace "${disablemodules}" ',')" -j="$(/bin/replace "${k}" '-' '_')" +# sanitize the module names +BLACKLIST="$(${REPLACE} "${BLACKLIST}" '-' '_')" -if [ "${j}" != "" ] ; then - for n in ${i}; do - for o in ${j}; do - if [ "$n" = "$o" ]; then - exit 1 - fi - done - done +if [ -n "${BLACKLIST}" ] ; then + # Try to find all modules for the alias + mods="$($RESOLVEALIAS /lib/modules/$(uname -r)/modules.alias $1)" + # If no modules could be found, try if the alias name is a module name + # In that case, omit the --use-blacklist parameter to imitate normal modprobe behaviour + [ -z "${mods}" ] && $MODPROBE -qni $1 && mods="$1" && USEBLACKLIST="" + [ -z "${mods}" ] && exit + for mod in ${mods}; do + deps="$(${MODDEPS} ${mod})" + [ $? -ne 0 ] && continue + # If the module or any of its dependencies is blacklisted, don't load it + for dep in $deps; do + for blackmod in ${BLACKLIST}; do + [ "${blackmod}" = "${dep}" ] && continue 3 + done + done + $MODPROBE $USEBLACKLIST ${mod} + done +else + $MODPROBE $1 fi -/sbin/modprobe $1 # vim: set et ts=4: diff --git a/abs/core/klibc-udev/udev-fix-klibc-build.patch b/abs/core/klibc-udev/udev-fix-klibc-build.patch new file mode 100644 index 0000000..7ac0917 --- /dev/null +++ b/abs/core/klibc-udev/udev-fix-klibc-build.patch @@ -0,0 +1,48 @@ +diff -Nur udev-128.orig/extras/Makefile.in udev-128/extras/Makefile.in +--- udev-128.orig/extras/Makefile.in 2008-09-11 16:58:01.000000000 +0200 ++++ udev-128/extras/Makefile.in 2008-09-18 12:03:09.000000000 +0200 +@@ -176,15 +176,11 @@ + udev_prefix = @udev_prefix@ + SUBDIRS = \ + ata_id \ +- cdrom_id \ + edd_id \ + path_id \ + firmware \ +- collect \ + floppy \ +- fstab_import \ + rule_generator \ +- scsi_id \ + usb_id \ + volume_id + +diff -Nur udev-128.orig/extras/volume_id/lib/libvolume_id-private.h udev-128/extras/volume_id/lib/libvolume_id-private.h +--- udev-128.orig/extras/volume_id/lib/libvolume_id-private.h 2008-09-10 02:37:09.000000000 +0200 ++++ udev-128/extras/volume_id/lib/libvolume_id-private.h 2008-09-18 12:07:57.000000000 +0200 +@@ -35,12 +35,8 @@ + log_null(const char *format, ...) {} + + #define err(format, arg...) volume_id_log_fn(LOG_ERR, __FILE__, __LINE__, format, ##arg) +-#define info(format, arg...) volume_id_log_fn(LOG_INFO, __FILE__, __LINE__, format, ##arg) +-#ifdef DEBUG +-#define dbg(format, arg...) volume_id_log_fn(LOG_DEBUG, __FILE__, __LINE__, format, ##arg) +-#else ++#define info(format, arg...) log_null(format, ##arg) + #define dbg(format, arg...) log_null(format, ##arg) +-#endif + + #if (__BYTE_ORDER == __LITTLE_ENDIAN) + #define le16_to_cpu(x) (x) +diff -Nur udev-128.orig/extras/volume_id/lib/md5.c udev-128/extras/volume_id/lib/md5.c +--- udev-128.orig/extras/volume_id/lib/md5.c 2008-09-10 02:18:59.000000000 +0200 ++++ udev-128/extras/volume_id/lib/md5.c 2008-09-18 12:03:09.000000000 +0200 +@@ -21,7 +21,7 @@ + * along with this program. If not, see . + */ + +-#include ++/*#include */ + #include + #include + #include diff --git a/abs/core/klibc-udev/udev_hook b/abs/core/klibc-udev/udev_hook index fc4c814..4d8212a 100644 --- a/abs/core/klibc-udev/udev_hook +++ b/abs/core/klibc-udev/udev_hook @@ -2,6 +2,9 @@ run_hook () { msg -n ":: Loading udev..." - /etc/start_udev + echo > /proc/sys/kernel/hotplug + /sbin/udevd --daemon + /sbin/udevadm trigger + /sbin/udevadm settle msg "done." } diff --git a/abs/core/klibc-udev/udev_install b/abs/core/klibc-udev/udev_install index 62d5b00..94dcd80 100644 --- a/abs/core/klibc-udev/udev_install +++ b/abs/core/klibc-udev/udev_install @@ -7,16 +7,14 @@ install () FILES=" /etc/udev/udev.conf" SCRIPT="udev" add_file /lib/initcpio/udev/udevd /sbin/udevd - add_file /lib/initcpio/udev/udevtrigger /sbin/udevtrigger - add_file /lib/initcpio/udev/udevsettle /sbin/udevsettle - add_file /lib/initcpio/udev/udev.rules /etc/udev/rules.d/udev.rules - add_file /lib/initcpio/udev/start_udev /etc/start_udev + add_file /lib/initcpio/udev/udevadm /sbin/udevadm + add_file /lib/initcpio/udev/50-udev-default.rules /lib/udev/rules.d/50-udev-default.rules + add_file /lib/initcpio/udev/60-persistent-storage.rules /lib/udev/rules.d/60-persistent-storage.rules + add_file /lib/initcpio/udev/64-device-mapper.rules /lib/udev/rules.d/64-device-mapper.rules + add_file /lib/initcpio/udev/64-md-raid.rules /lib/udev/rules.d/64-md-raid.rules + add_file /lib/initcpio/udev/80-drivers.rules /lib/udev/rules.d/80-drivers.rules add_file /lib/initcpio/udev/firmware.sh /lib/udev/firmware.sh - add_file /lib/initcpio/udev/cdrom_id /lib/udev/cdrom_id - add_file /lib/initcpio/udev/ata_id /lib/udev/ata_id - add_file /lib/initcpio/udev/usb_id /lib/udev/usb_id - add_file /lib/initcpio/udev/edd_id /lib/udev/edd_id - #add_file /lib/initcpio/udev/scsi_id /lib/udev/scsi_id + add_file /lib/initcpio/udev/path_id /lib/udev/path_id add_file /lib/initcpio/udev/vol_id /lib/udev/vol_id add_file /lib/initcpio/udev/load-modules.sh /lib/udev/load-modules.sh } diff --git a/abs/core/klibc/PKGBUILD b/abs/core/klibc/PKGBUILD index a65d119..11080c0 100644 --- a/abs/core/klibc/PKGBUILD +++ b/abs/core/klibc/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 5849 2008-07-21 18:46:34Z thomas $ +# $Id: PKGBUILD 23627 2009-01-11 14:22:23Z thomas $ # Maintainer: Aaron Griffin # Maintainer: Thomas Baechler @@ -9,28 +9,26 @@ ### pkgname=klibc -pkgver=1.5 -_klibcbranch=Stable #Stable/Testing -_kver=2.6.26-ARCH -pkgrel=15 +pkgver=1.5.15 +_klibcbranch=Testing #Stable/Testing +_kver=2.6.28-ARCH +pkgrel=30 pkgdesc="A minimal libc made for early-userspace" arch=(i686 x86_64) url="http://www.kernel.org/pub/linux/libs/klibc/" license=('BSD') groups=('base') options=(!ccache !strip) -source=(http://www.kernel.org/pub/linux/libs/klibc/$_klibcbranch/$pkgname-$pkgver.tar.gz - multiple_raid_assembly_fix.patch +source=(http://www.kernel.org/pub/linux/libs/klibc/${_klibcbranch}/${pkgname}-${pkgver}.tar.gz klibc-compile-shared-by-default.patch - klibc-module-init-tools.patch - klibc-2.6.24.patch - klibc-Kbuild.patch) -md5sums=('d55ce89c0656a7d6896ec0b2af07b5dc' - '8d257d50a4554d57b8f461c6a87a2877' + klibc-Kbuild.patch + klibc-x86_64-fix-io.h.patch + klibc-fix-2.6.28-includes.patch) +md5sums=('b5527be46f24779884557b11888c8075' 'c263a7c3fd290fcc84a4e230d456d022' - '4d78311ebce63f2fbb711f8518e71839' - 'a98b3e96aff53339572ed0bdccc8aed2' - 'c928be0153585a487b72a7eb5dfa8b13') + 'ff5b113024256de31af59c2f1a966516' + 'fcee75cfaa65638b07f9cc4a7719fa29' + '85e39751debc304119eb481d6bc26d59') build() { @@ -39,23 +37,19 @@ build() sed -i "/#define INI_DEBUG/d" usr/kinit/kinit.h || return 1 ln -sf /usr/src/linux-${_kver} linux - patch -p1 -i ../multiple_raid_assembly_fix.patch || return 1 - # make klibc-module-init-tools compile - # don't build insmod - patch -p1 -i ../klibc-module-init-tools.patch || return 1 # compile binaries shared by default patch -p1 -i ../klibc-compile-shared-by-default.patch || return 1 - # fix compilation on 2.6.24 - patch -p1 -i ../klibc-2.6.24.patch || return 1 - # don't build kill, gzip and cpio - patch -p1 -i ../klibc-Kbuild.patch || return 1 + # don't build gzip, cpio, kill, build shared binaries for kinit and sh + patch -p1 -i ../klibc-Kbuild.patch || return 1 + # fix errors in io.h header + patch -p1 -i ../klibc-x86_64-fix-io.h.patch || return 1 + # fix includes for 2.6.28 build + patch -p1 -i ../klibc-fix-2.6.28-includes.patch || return 1 make EXTRA_KLIBCFLAGS='' || return 1 make INSTALLROOT=$startdir/pkg install || return 1 - #simplify - mv $startdir/pkg/usr/lib/klibc/bin/sh.shared $startdir/pkg/usr/lib/klibc/bin/sh - mv $startdir/pkg/usr/lib/klibc/bin/kinit.shared $startdir/pkg/usr/lib/klibc/bin/kinit - ln -sf asm-x86 $startdir/pkg/usr/lib/klibc/include/asm + #ln -sf asm-x86 $startdir/pkg/usr/lib/klibc/include/asm + cp -a linux/arch/x86/include/asm/* $startdir/pkg/usr/lib/klibc/include/asm/ provides[${#provides[@]}]="$(basename $startdir/pkg/lib/klibc-*.so .so)" export provides diff --git a/abs/core/klibc/klibc-Kbuild.patch b/abs/core/klibc/klibc-Kbuild.patch index 93a95da..28beee9 100644 --- a/abs/core/klibc/klibc-Kbuild.patch +++ b/abs/core/klibc/klibc-Kbuild.patch @@ -1,6 +1,6 @@ -diff -Nur klibc-1.5.orig/Kbuild klibc-1.5/Kbuild ---- klibc-1.5.orig/Kbuild 2007-03-04 02:52:10.000000000 +0100 -+++ klibc-1.5/Kbuild 2008-05-14 12:45:02.000000000 +0200 +diff -Nur klibc-1.5.14.orig/Kbuild klibc-1.5.14/Kbuild +--- klibc-1.5.14.orig/Kbuild 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/Kbuild 2008-09-18 13:08:42.000000000 +0200 @@ -10,9 +10,8 @@ $(Q)$(MAKE) $(klibc)=usr/kinit $(Q)$(MAKE) $(klibc)=usr/dash @@ -12,9 +12,9 @@ diff -Nur klibc-1.5.orig/Kbuild klibc-1.5/Kbuild -subdir- := scripts/basic klcc usr/klibc usr/dash usr/utils usr/gzip \ +subdir- := scripts/basic klcc usr/klibc usr/dash usr/utils \ usr/kinit usr/klibc/tests -diff -Nur klibc-1.5.orig/usr/Kbuild klibc-1.5/usr/Kbuild ---- klibc-1.5.orig/usr/Kbuild 2007-03-04 02:52:10.000000000 +0100 -+++ klibc-1.5/usr/Kbuild 2008-05-14 12:45:02.000000000 +0200 +diff -Nur klibc-1.5.14.orig/usr/Kbuild klibc-1.5.14/usr/Kbuild +--- klibc-1.5.14.orig/usr/Kbuild 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/usr/Kbuild 2008-09-18 13:08:42.000000000 +0200 @@ -6,7 +6,7 @@ include-subdir := include @@ -24,18 +24,57 @@ diff -Nur klibc-1.5.orig/usr/Kbuild klibc-1.5/usr/Kbuild subdir- := $(include-subdir) $(klibc-subdir) $(usr-subdirs) usr-subdirs := $(addprefix _usr_,$(usr-subdirs)) -diff -Nur klibc-1.5.orig/usr/utils/Kbuild klibc-1.5/usr/utils/Kbuild ---- klibc-1.5.orig/usr/utils/Kbuild 2008-05-14 12:44:47.000000000 +0200 -+++ klibc-1.5/usr/utils/Kbuild 2008-05-14 12:45:20.000000000 +0200 -@@ -2,9 +2,9 @@ - # Kbuild file for klib utils - # - --progs := chroot dd mkdir mkfifo mknod mount pivot_root umount -+progs := chroot dd mkdir mkfifo mount pivot_root umount +diff -Nur klibc-1.5.14.orig/usr/dash/Kbuild klibc-1.5.14/usr/dash/Kbuild +--- klibc-1.5.14.orig/usr/dash/Kbuild 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/usr/dash/Kbuild 2008-09-18 13:08:42.000000000 +0200 +@@ -23,11 +23,8 @@ + hostprogs-y := mkinit mksyntax mknodes mksignames + gen-h-files := arith.h builtins.h nodes.h syntax.h token.h + +-static-y := sh +- + # The shared binary +-shared-y := sh.shared +-sh.shared-y := $(sh-y) ++shared-y := sh + + # For cleaning + targets := sh sh.g sh.shared sh.shared.g $(gen-o-files) +@@ -108,4 +105,4 @@ + $(Q): + + # Targets to install +-install-y := sh.shared ++install-y := sh +diff -Nur klibc-1.5.14.orig/usr/kinit/Kbuild klibc-1.5.14/usr/kinit/Kbuild +--- klibc-1.5.14.orig/usr/kinit/Kbuild 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/usr/kinit/Kbuild 2008-09-18 13:08:42.000000000 +0200 +@@ -17,9 +17,7 @@ + kinit-y += fstype/ + kinit-y += resume/ + +-static-y := kinit +-shared-y := kinit.shared +-kinit.shared-y := $(kinit-y) ++shared-y := kinit + + # Additional include paths files + KLIBCCFLAGS += -I$(srctree)/$(src)/fstype \ +@@ -34,4 +32,4 @@ + + + # install binary +-install-y := kinit kinit.shared ++install-y := kinit +diff -Nur klibc-1.5.14.orig/usr/utils/Kbuild klibc-1.5.14/usr/utils/Kbuild +--- klibc-1.5.14.orig/usr/utils/Kbuild 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/usr/utils/Kbuild 2008-09-18 13:08:56.000000000 +0200 +@@ -4,7 +4,7 @@ + + progs := chroot dd mkdir mkfifo mknod mount pivot_root umount progs += true false sleep ln nuke minips cat --progs += uname halt kill readlink cpio -+progs += uname halt readlink +-progs += uname halt kill readlink cpio sync dmesg ++progs += uname halt readlink sync dmesg static-y := $(addprefix static/, $(progs)) shared-y := $(addprefix shared/, $(progs)) diff --git a/abs/core/klibc/klibc-fix-2.6.28-includes.patch b/abs/core/klibc/klibc-fix-2.6.28-includes.patch new file mode 100644 index 0000000..d7108a4 --- /dev/null +++ b/abs/core/klibc/klibc-fix-2.6.28-includes.patch @@ -0,0 +1,12 @@ +diff -Nur klibc-1.5.14.orig/scripts/Kbuild.klibc klibc-1.5.14/scripts/Kbuild.klibc +--- klibc-1.5.14.orig/scripts/Kbuild.klibc 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/scripts/Kbuild.klibc 2008-12-29 23:59:14.000000000 +0100 +@@ -103,7 +103,7 @@ + -I$(KLIBCINC) + # kernel include paths + KLIBCKERNELSRC ?= $(srctree)/ +-KLIBCCPPFLAGS += -I$(KLIBCKERNELSRC)include \ ++KLIBCCPPFLAGS += -I$(KLIBCKERNELSRC)include -I$(KLIBCKERNELSRC)arch/x86/include \ + $(if $(KBUILD_SRC),-I$(KLIBCKERNELOBJ)include2 -I$(KLIBCKERNELOBJ)include -I$(srctree)/include) \ + $(KLIBCARCHINCFLAGS) + diff --git a/abs/core/klibc/klibc-x86_64-fix-io.h.patch b/abs/core/klibc/klibc-x86_64-fix-io.h.patch new file mode 100644 index 0000000..25ef789 --- /dev/null +++ b/abs/core/klibc/klibc-x86_64-fix-io.h.patch @@ -0,0 +1,28 @@ +diff -Nur klibc-1.5.14.orig/usr/include/arch/x86_64/sys/io.h klibc-1.5.14/usr/include/arch/x86_64/sys/io.h +--- klibc-1.5.14.orig/usr/include/arch/x86_64/sys/io.h 2008-07-30 23:06:03.000000000 +0200 ++++ klibc-1.5.14/usr/include/arch/x86_64/sys/io.h 2008-09-18 14:34:20.000000000 +0200 +@@ -60,21 +60,21 @@ + { + unsigned char __v; + asm volatile ("inb %1,%0" : "=a" (__v) : "dN"(__p)); +- return v; ++ return __v; + } + + static __inline__ unsigned short inw(unsigned short __p) + { + unsigned short __v; + asm volatile ("inw %1,%0" : "=a" (__v) : "dN"(__p)); +- return v; ++ return __v; + } + + static __inline__ unsigned int inl(unsigned short __p) + { + unsigned int __v; + asm volatile ("inl %1,%0" : "=a" (__v) : "dN"(__p)); +- return v; ++ return __v; + } + + /* String I/O macros */ diff --git a/abs/core/lcms/PKGBUILD b/abs/core/lcms/PKGBUILD index 7e40429..3cd6add 100644 --- a/abs/core/lcms/PKGBUILD +++ b/abs/core/lcms/PKGBUILD @@ -4,7 +4,7 @@ pkgname=lcms pkgver=1.17 -pkgrel=2 +pkgrel=3 pkgdesc="Lightweight color management development library/engine" arch=(i686 x86_64) license=('CUSTOM') diff --git a/abs/core/less/PKGBUILD b/abs/core/less/PKGBUILD index b703def..28cbe39 100644 --- a/abs/core/less/PKGBUILD +++ b/abs/core/less/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: judd pkgname=less pkgver=418 -pkgrel=10 +pkgrel=12 pkgdesc="A terminal based program for viewing text files" license=('GPL3') arch=('i686' 'x86_64') diff --git a/abs/core/libarchive/PKGBUILD b/abs/core/libarchive/PKGBUILD index b70f376..c8209a7 100644 --- a/abs/core/libarchive/PKGBUILD +++ b/abs/core/libarchive/PKGBUILD @@ -1,17 +1,16 @@ -# $Id: PKGBUILD 5444 2008-07-16 01:29:27Z dan $ +# $Id: PKGBUILD 24591 2009-01-18 20:59:48Z dan $ # Maintainer: Dan McGee # Maintainer: Aaron Griffin pkgname=libarchive -pkgver=2.5.5 -pkgrel=10 +pkgver=2.6.1 +pkgrel=1 pkgdesc="library that can create and read several streaming archive formats" arch=(i686 x86_64) url="http://people.freebsd.org/~kientzle/libarchive/" license=('BSD') groups=('base') depends=('zlib' 'bzip2' 'acl') -source=(http://people.freebsd.org/~kientzle/libarchive/src/libarchive-$pkgver.tar.gz) -md5sums=('ff6387de3a3830785b229d1e1f11f523') +source=(http://libarchive.googlecode.com/files/libarchive-$pkgver.tar.gz) # pacman.static build fails unless we keep the libtool files (or unless we link # the missing symbols inside the libarchive .a static lib, but that is dirty) @@ -19,7 +18,7 @@ options=(libtool) build() { cd $startdir/src/$pkgname-$pkgver - ./configure --prefix=/usr + ./configure --prefix=/usr --without-lzmadec make || return 1 make DESTDIR=$startdir/pkg install @@ -29,3 +28,5 @@ build() { install -m644 COPYING $startdir/pkg/usr/share/licenses/libarchive/ } +md5sums=('9d9f83947ee9d5732289ed48d00e3743') +sha256sums=('4d0ad4e5c33aa9725c7d92a42ae605815781372db949cd9906945e6c0d85c179') diff --git a/abs/core/libavc1394/PKGBUILD b/abs/core/libavc1394/PKGBUILD new file mode 100644 index 0000000..23aa5cc --- /dev/null +++ b/abs/core/libavc1394/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 8934 2008-08-17 00:56:51Z eric $ +# Maintainer: damir +# Contributor: Robert Emil Berge + +pkgname=libavc1394 +pkgver=0.5.3 +pkgrel=2 +pkgdesc="A library to control A/V devices using the 1394ta AV/C commands." +arch=("i686" "x86_64") +url="http://sourceforge.net/projects/libavc1394/" +depends=('libraw1394') +options=('!libtool') +source=(http://internap.dl.sourceforge.net/sourceforge/libavc1394/$pkgname\-$pkgver.tar.gz) +md5sums=('09e30b1fb5ae455b6d8407e457a711a3') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} + diff --git a/abs/core/libcaca/PKGBUILD b/abs/core/libcaca/PKGBUILD new file mode 100644 index 0000000..f0c3710 --- /dev/null +++ b/abs/core/libcaca/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 9776 2008-08-19 00:46:51Z eric $ +# Maintainer: Jan de Groot + +pkgname=libcaca +pkgver=0.9 +pkgrel=2 +pkgdesc="Color AsCii Art library" +arch=('i686' 'x86_64') +license=('LGPL') +url="http://libcaca.zoy.org/" +depends=('freetype2' 'imlib2' 'ncurses>=5.6-7') +source=(http://libcaca.zoy.org/files/libcaca/${pkgname}-${pkgver}.tar.gz) +md5sums=('97b0f526f39491389e159055f574c921') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --mandir=/usr/share/man --enable-shared --disable-doc + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/core/libcap/PKGBUILD b/abs/core/libcap/PKGBUILD index 8d09b19..a80dccf 100644 --- a/abs/core/libcap/PKGBUILD +++ b/abs/core/libcap/PKGBUILD @@ -1,20 +1,22 @@ -#$Id: PKGBUILD 8870 2008-08-16 22:39:56Z eric $ -# Maintainer: Arjan Timmerman +#$Id: PKGBUILD 29964 2009-03-15 02:32:04Z hugo $ +# Maintainer: Hugo Doria + pkgname=libcap -pkgver=1.10 -pkgrel=2 +pkgver=2.16 +pkgrel=3 pkgdesc="POSIX 1003.1e capabilities" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.kernel.org/pub/linux/libs/security/linux-privs/" -license="GPL" +license=('GPL') depends=('glibc') -source=(http://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.4/${pkgname}-${pkgver}.tar.gz - libcap-1.10-debian.patch) -md5sums=('2c09eea823f67cfdde96177a959bc39b' 'ba642c86c4072917fcff77ec31411194') +source=(http://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/${pkgname}-${pkgver}.tar.gz) +md5sums=('9e075fda242c4070ba76407064c13302') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/src/libcap-1.10-debian.patch || return 1 - make prefix=/usr DESTDIR=${startdir}/pkg install - rmdir ${startdir}/pkg/usr/share/man/man2 + cd ${srcdir}/${pkgname}-${pkgver} + sed -i -e "s|LIBDIR=\$(FAKEROOT)\$(lib_prefix)/\$(lib)|LIBDIR=\$(FAKEROOT)/\$(lib)|g" Make.Rules || return 1 + make prefix=/usr DESTDIR=${pkgdir} install + + rm ${pkgdir}/lib/*.a || return 1 + chmod 755 ${pkgdir}/lib/libcap.so.* || return 1 } diff --git a/abs/core/libcddb/PKGBUILD b/abs/core/libcddb/PKGBUILD new file mode 100644 index 0000000..0435ab5 --- /dev/null +++ b/abs/core/libcddb/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot +# Contributor: Sarah Hay + +pkgname=libcddb +pkgver=1.3.0 +pkgrel=3 +pkgdesc="Libcddb is a library that implements the different protocols (CDDBP, HTTP, SMTP) to access data on a CDDB server (e.g. http://freedb.org)." +arch=(i686 x86_64) +license=('LGPL') +options=('!libtool') +depends=('glibc') +source=(http://heanet.dl.sourceforge.net/sourceforge/libcddb/${pkgname}-${pkgver}.tar.bz2) +url="http://sourceforge.net/projects/libcddb/" +md5sums=('e4a7f9579956c32b7f300eb12e9ea6df') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/core/libcups/PKGBUILD b/abs/core/libcups/PKGBUILD index 363a46a..9b31bd0 100644 --- a/abs/core/libcups/PKGBUILD +++ b/abs/core/libcups/PKGBUILD @@ -1,15 +1,16 @@ -# $Id: PKGBUILD 7638 2008-08-03 15:54:53Z jgc $ +# $Id: PKGBUILD 20496 2008-12-05 11:29:11Z allan $ # Maintainer: Andreas Radke + pkgname=libcups -pkgver=1.3.8 -pkgrel=2 +pkgver=1.3.9 +pkgrel=4 pkgdesc="The CUPS Printing System" -arch=(i686 x86_64) +arch=('i686' 'x86_64') license=('GPL') url="http://www.cups.org/" depends=('gnutls>=2.4.1' 'libtiff' 'libpng' 'heimdal>=1.2') -source=(http://ftp.funet.fi/pub/mirrors/ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2) -md5sums=('84e09577d673b212f605dd09caee456c') +source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2) +md5sums=('72430b36094cf587cf2e0087047d5643') build() { cd ${srcdir}/cups-${pkgver} diff --git a/abs/core/libdaemon/PKGBUILD b/abs/core/libdaemon/PKGBUILD new file mode 100644 index 0000000..6c123ab --- /dev/null +++ b/abs/core/libdaemon/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 19217 2008-11-17 21:02:07Z thayer $ +# Contributor: Manolis Tzanidakis +# Contributor: Mark Rosenstand +# Maintainer: Thayer Williams + +pkgname=libdaemon +pkgver=0.13 +pkgrel=1 +pkgdesc="A lightweight C library which eases the writing of UNIX daemons" +url="http://0pointer.de/lennart/projects/libdaemon/" +license=('LGPL') +arch=('i686' 'x86_64') +depends=('glibc') +source=(http://0pointer.de/lennart/projects/libdaemon/$pkgname-$pkgver.tar.gz) +options=('!libtool') +md5sums=('ae9113fcd825d5a7f07e5ddccb3c3102') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr --disable-lynx || return 1 + make || return 1 + make DESTDIR=$pkgdir install || return 1 +} + diff --git a/abs/core/libdatrie/PKGBUILD b/abs/core/libdatrie/PKGBUILD index 9a199e3..a4408d7 100644 --- a/abs/core/libdatrie/PKGBUILD +++ b/abs/core/libdatrie/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 35276 2009-04-11 20:11:41Z jgc $ # Maintainer: Jan de Groot # Contributor: Chaiwat Suttipongsakul pkgname=libdatrie -pkgver=0.1.2 +pkgver=0.2.1 pkgrel=1 pkgdesc="Libdatrie is an implementation of double-array structure for representing trie, as proposed by Junichi Aoe." url="http://linux.thai.net/~thep/datrie/datrie.html" @@ -12,11 +12,11 @@ arch=('i686' 'x86_64') depends=('glibc') options=('!libtool' '!emptydirs') source=(http://linux.thai.net/pub/thailinux/software/libthai/${pkgname}-${pkgver}.tar.gz) -md5sums=('3eaedd5452149e11547a0dc74ee3fcfd') +md5sums=('196e485958f74cf13e676d93729067cf') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr --disable-static + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/libdc1394/PKGBUILD b/abs/core/libdc1394/PKGBUILD new file mode 100644 index 0000000..90ad87b --- /dev/null +++ b/abs/core/libdc1394/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot + +pkgname=libdc1394 +pkgver=2.1.0 +pkgrel=2 +pkgdesc="High level programming interface to control IEEE 1394 based cameras" +arch=(i686 x86_64) +license=('LGPL') +depends=('libraw1394>=1.3.0') +options=(!libtool !emptydirs) +source=(http://downloads.sourceforge.net/sourceforge/libdc1394/${pkgname}-${pkgver}.tar.gz) +url="http://sourceforge.net/projects/libdc1394/" +md5sums=('51909785c8c3da6881dd983c98c0c6d6') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/core/libdca/PKGBUILD b/abs/core/libdca/PKGBUILD new file mode 100644 index 0000000..4794c02 --- /dev/null +++ b/abs/core/libdca/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Andreas Radke + +pkgname=libdca +pkgver=0.0.5 +pkgrel=1 +pkgdesc="Free library for decoding DTS Coherent Acoustics streams" +arch=(i686 x86_64) +license=('GPL') +url="http://www.videolan.org/developers/libdca.html" +source=(http://download.videolan.org/pub/videolan/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2) +md5sums=('dab6b2795c66a82a6fcd4f8343343021') +provides=('libdts') +replaces=('libdts') +options=('!libtool' '!emptydirs') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/libdrm/PKGBUILD b/abs/core/libdrm/PKGBUILD index 19a4db2..816aa2a 100644 --- a/abs/core/libdrm/PKGBUILD +++ b/abs/core/libdrm/PKGBUILD @@ -1,20 +1,20 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 19237 2008-11-17 22:36:17Z jgc $ # Maintainer: Jan de Groot pkgname=libdrm -pkgver=2.3.0 -pkgrel=1 +pkgver=2.3.1 +pkgrel=2 pkgdesc="Userspace interface to kernel DRM services" arch=(i686 x86_64) depends=('glibc') -options=('!libtool') +options=('!libtool' 'force') url="http://dri.freedesktop.org/" source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('01a1e1ee0268a2403db42fa630036ab2') +md5sums=('620fe7dd02c3236c3e9881a3a238173d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/libdv/PKGBUILD b/abs/core/libdv/PKGBUILD new file mode 100644 index 0000000..bd54a0d --- /dev/null +++ b/abs/core/libdv/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 4510 2008-07-07 21:13:34Z ronald $ +# Maintainer: Jason Chu +# Contributor: Tom Newsom + +pkgname=libdv +pkgver=1.0.0 +pkgrel=2 +pkgdesc="The Quasar DV codec (libdv) is a software codec for DV video" +arch=('i686' 'x86_64') +depends=('popt' 'gtk') +makedepends=('pkgconfig' 'gtk') +source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('f895162161cfa4bb4a94c070a7caa6c7') +url="http://libdv.sourceforge.net/" +license=('GPL') +options=(!libtool) + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/libdv/libdv-0.104-amd64reloc.patch b/abs/core/libdv/libdv-0.104-amd64reloc.patch new file mode 100644 index 0000000..f3cbdbd --- /dev/null +++ b/abs/core/libdv/libdv-0.104-amd64reloc.patch @@ -0,0 +1,262 @@ +diff -aur libdv-0.104/libdv/encode_x86_64.S libdv-0.104-patched/libdv/encode_x86_64.S +--- libdv-0.104/libdv/encode_x86_64.S 2004-11-17 03:36:30.000000000 +0000 ++++ libdv-0.104-patched/libdv/encode_x86_64.S 2004-12-10 07:53:12.000000000 +0000 +@@ -47,7 +47,8 @@ + + mov $63, %rcx # loop counter + +- mov vlc_encode_lookup(%rip), %r11 ++ mov vlc_encode_lookup@GOTPCREL(%rip), %r11 ++ mov (%r11),%r11 + + pxor %mm0, %mm0 + pxor %mm2, %mm2 +@@ -129,7 +130,8 @@ + add $2, %rdi /* skip the DC coefficient */ + mov $63, %rcx + +- mov vlc_num_bits_lookup(%rip), %r11 ++ mov vlc_num_bits_lookup@GOTPCREL(%rip), %r11 ++ mov (%r11),%r11 + + vlc_num_bits_block_x86_loop: + movw (%rdi), %ax /* get the next coeffiecient */ +diff -aur libdv-0.104/libdv/idct_block_mmx_x86_64.S libdv-0.104-patched/libdv/idct_block_mmx_x86_64.S +--- libdv-0.104/libdv/idct_block_mmx_x86_64.S 2004-10-20 04:49:24.000000000 +0100 ++++ libdv-0.104-patched/libdv/idct_block_mmx_x86_64.S 2004-12-10 07:38:23.000000000 +0000 +@@ -22,7 +22,7 @@ + /* void _dv_idct_88(dv_coeff_t *block) */ + /* argument block=rdi */ + +- lea preSC(%rip), %r11 ++ mov preSC@GOTPCREL(%rip), %r11 + + /* + * column 0: even part +diff -aur libdv-0.104/libdv/quant_x86_64.S libdv-0.104-patched/libdv/quant_x86_64.S +--- libdv-0.104/libdv/quant_x86_64.S 2004-11-17 03:36:30.000000000 +0000 ++++ libdv-0.104-patched/libdv/quant_x86_64.S 2004-12-10 07:36:42.000000000 +0000 +@@ -73,10 +73,10 @@ + /* pq = dv_quant_shifts[qno + dv_quant_offset[class]]; */ + mov %rsi,%rax /* qno */ + mov %rdx,%r12 /* class */ +- lea dv_quant_offset(%rip),%rcx ++ mov dv_quant_offset@GOTPCREL(%rip),%rcx + movzbq (%rcx,%r12,1),%rcx /* dv_quant_offset[class] */ + add %rcx,%rax /* qno + */ +- lea dv_quant_shifts(%rip),%r11 ++ mov dv_quant_shifts@GOTPCREL(%rip),%r11 + lea (%r11,%rax,4),%r11 /* r11 is pq = dv_quant_shifts[...] */ + + /* extra = (class == 3); */ +@@ -217,10 +217,10 @@ + mov %rsi,%rax /* qno */ + mov %rdx,%r12 /* class */ + +- lea dv_quant_offset(%rip),%rcx ++ mov dv_quant_offset@GOTPCREL(%rip),%rcx + movzbq (%rcx,%r12,1),%rcx + add %rcx,%rax +- lea dv_quant_shifts(%rip),%r11 ++ mov dv_quant_shifts@GOTPCREL(%rip),%r11 + lea (%r11,%rax,4),%r11 /* r11 is pq */ + + /* extra = (class == 3); */ +diff -aur libdv-0.104/libdv/vlc_x86_64.S libdv-0.104-patched/libdv/vlc_x86_64.S +--- libdv-0.104/libdv/vlc_x86_64.S 2004-10-20 04:49:24.000000000 +0100 ++++ libdv-0.104-patched/libdv/vlc_x86_64.S 2004-12-12 05:43:49.000000000 +0000 +@@ -16,28 +16,28 @@ + /* klass = dv_vlc_classes[maxbits][(bits & (dv_vlc_class_index_mask[maxbits])) >> */ + /* (dv_vlc_class_index_rshift[maxbits])]; */ + /* xor %rbp,%rbp */ +- lea dv_vlc_class_index_mask(%rip),%r11 /* use %rip for PIC code */ ++ mov dv_vlc_class_index_mask@GOTPCREL(%rip),%r11 /* use %rip for PIC code */ + mov (%r11,%rbx,4),%ebp /* int32 */ /* dv_vlc_class_index_mask[maxbits] */ + and %eax,%ebp /* bits & */ +- lea dv_vlc_class_index_rshift(%rip),%rcx ++ mov dv_vlc_class_index_rshift@GOTPCREL(%rip),%rcx + mov (%rcx,%rbx,4),%ecx /* int32 */ /* dv_vlc_class_index_rshift[maxbits] */ + sar %cl,%ebp /* >> */ +- lea dv_vlc_classes(%rip),%rcx ++ mov dv_vlc_classes@GOTPCREL(%rip),%rcx + mov (%rcx,%rbx,8),%rcx /* ptr */ /* dv_vlc_classes[maxbits], a pointer */ + movsbq (%rcx,%rbp,1),%rbp /* int8 */ /* klass = */ + + /* *result = dv_vlc_lookups[klass][(bits & (dv_vlc_index_mask[klass])) >> */ + /* (dv_vlc_index_rshift[klass])]; */ + /* xor %rbx,%rbx */ +- lea dv_vlc_index_mask(%rip),%r11 ++ mov dv_vlc_index_mask@GOTPCREL(%rip),%r11 + mov (%r11,%rbp,4),%ebx /* int32 */ /* (dv_vlc_index_mask[klass]) */ + /* xor %rcx,%rcx */ +- lea dv_vlc_index_rshift(%rip),%r11 ++ mov dv_vlc_index_rshift@GOTPCREL(%rip),%r11 + mov (%r11,%rbp,4),%ecx /* int32 */ /* dv_vlc_index_rshift[klass] */ + and %eax,%ebx /* bits & */ + sar %cl,%ebx /* >> */ + +- lea dv_vlc_lookups(%rip),%r11 ++ mov dv_vlc_lookups@GOTPCREL(%rip),%r11 + mov (%r11,%rbp,8),%rbp /* ptr */ /* dv_vlc_lookups[klass] */ + mov (%rbp,%rbx,4),%ebp /* int32 */ /* *result = */ + +@@ -57,7 +57,7 @@ + mov %ebp,%ecx + sar $8,%ecx + and $0xff,%ecx /* result->len */ +- lea sign_mask(%rip),%rbx ++ mov sign_mask@GOTPCREL(%rip),%rbx + mov (%rbx,%rcx,4),%ebx /* int32 */ + and %ebx,%eax + neg %eax +@@ -109,17 +109,17 @@ + mov %rax,%rbp + and $0xfe00,%ebp + sar $9,%ebp +- lea dv_vlc_class_lookup5(%rip),%r11 ++ mov dv_vlc_class_lookup5@GOTPCREL(%rip),%r11 + movsbq (%r11,%rbp),%rbp /* int8 klass */ + +- lea dv_vlc_index_mask(%rip),%rbx ++ mov dv_vlc_index_mask@GOTPCREL(%rip),%rbx + mov (%rbx,%rbp,4),%ebx /* int32 */ +- lea dv_vlc_index_rshift(%rip),%rcx ++ mov dv_vlc_index_rshift@GOTPCREL(%rip),%rcx + mov (%rcx,%rbp,4),%ecx /* int32 */ + and %eax,%ebx + sar %cl,%ebx /* %rbx is klass */ + +- lea dv_vlc_lookups(%rip),%r11 ++ mov dv_vlc_lookups@GOTPCREL(%rip),%r11 + mov (%r11,%rbp,8),%rbp /* ptr */ + mov (%rbp,%rbx,4),%ebp /* int32 */ + +@@ -138,7 +138,7 @@ + mov %ebp,%ecx + sar $8,%ecx + and $0xff,%ecx +- lea sign_mask(%rip),%r11 ++ mov sign_mask@GOTPCREL(%rip),%r11 + mov (%r11,%rcx,4),%ecx /* int32 */ + and %ecx,%eax + neg %eax +@@ -253,7 +253,7 @@ + + /* Attempt to use the shortcut first. If it hits, then + this vlc term has been decoded. */ +- lea dv_vlc_class1_shortcut(%rip),%r10 ++ mov dv_vlc_class1_shortcut@GOTPCREL(%rip),%r10 + mov (%r10,%rcx,4),%r11d /* record32 dv_vlc_tab_t */ + test $0x80,%r11d + +@@ -267,17 +267,17 @@ + + /* %rax is bits */ + +- lea dv_vlc_class_lookup5(%rip),%r10 ++ mov dv_vlc_class_lookup5@GOTPCREL(%rip),%r10 + movsbq (%r10,%rcx,1),%rcx /* int8 */ + + /* xor %r12,%r12 */ +- lea dv_vlc_index_mask(%rip),%r10 ++ mov dv_vlc_index_mask@GOTPCREL(%rip),%r10 + mov (%r10,%rcx,4),%r12d /* int32 */ + +- lea dv_vlc_lookups(%rip),%r10 ++ mov dv_vlc_lookups@GOTPCREL(%rip),%r10 + mov (%r10,%rcx,8),%r11 /* ptr->record32 */ + +- lea dv_vlc_index_rshift(%rip),%r10 ++ mov dv_vlc_index_rshift@GOTPCREL(%rip),%r10 + mov (%r10,%rcx,4),%ecx /* int32 */ + + and %eax,%r12d +@@ -303,7 +303,7 @@ + mov %r11d,%ecx + sar $8,%ecx + and $0xff,%ecx +- lea sign_mask(%rip),%r10 ++ mov sign_mask@GOTPCREL(%rip),%r10 + mov (%r10,%rcx,4),%ecx /* int32 */ + and %ecx,%eax + neg %eax +@@ -388,7 +388,8 @@ + mov %r11,%rsi /* bits */ + mov %rax,%rdi /* bits_left */ + lea vlc(%rip),%rdx /* *vlc */ +- call dv_decode_vlc ++ mov dv_decode_vlc@GOTPCREL(%rip),%r11 ++ call *%r11 + pop %rdx + pop %rsi + pop %rdi +@@ -473,7 +474,7 @@ + movl %r11d,dv_macroblock_t_eob_count(%r13) /* int32 */ + + /* mb->i = (seg->i + dv_super_map_vertical[m]) % (seg->isPAL?12:10); */ +- lea dv_super_map_vertical(%rip),%r11 ++ mov dv_super_map_vertical@GOTPCREL(%rip),%r11 + movl (%r11,%rax,4),%r11d /* int32 */ + /* xor %rcx,%rcx */ + movl dv_videosegment_t_i(%r12),%ecx /* int32 */ +@@ -493,7 +494,7 @@ + movl %r11d,dv_macroblock_t_i(%r13) /* int32 */ + + /* mb->j = dv_super_map_horizontal[m]; */ +- lea dv_super_map_horizontal(%rip),%r11 ++ mov dv_super_map_horizontal@GOTPCREL(%rip),%r11 + movl (%r11,%rax,4),%r11d /* int32 */ + movl %r11d,dv_macroblock_t_j(%r13) /* int32 */ + +@@ -546,7 +547,8 @@ + + /* bl->reorder = &dv_reorder[bl->dct_mode][1]; */ + shl $6,%rax /* *64 */ +- lea (dv_reorder+1)(%rip),%rcx ++ mov dv_reorder@GOTPCREL(%rip),%rcx ++ add $1,%rcx + add %rcx,%rax + mov %rax,dv_block_t_reorder(%r15) /* ptr */ + +@@ -557,13 +559,13 @@ + /* bl->offset= mb_start + dv_parse_bit_start[b]; */ + /* xor %rcx,%rcx */ + movl mb_start(%rip),%ecx /* int32 */ +- lea dv_parse_bit_start(%rip),%rax ++ mov dv_parse_bit_start@GOTPCREL(%rip),%rax + mov (%rax,%r12,4),%eax /* int32 */ + add %rcx,%rax + movl %eax,dv_block_t_offset(%r15) /* int32 */ + + /* bl->end= mb_start + dv_parse_bit_end[b]; */ +- lea dv_parse_bit_end(%rip),%rax ++ mov dv_parse_bit_end@GOTPCREL(%rip),%rax + mov (%rax,%r12,4),%eax /* int32 */ + add %ecx,%eax + mov %eax,dv_block_t_end(%r15) /* int32 */ +@@ -603,7 +605,8 @@ + mov dv_videosegment_t_bs(%rdi),%rdi /* passed in rdi was seg, now passing seg->bs */ + mov %r13,%rsi /* mb */ + mov %r15,%rdx /* bl */ +- call dv_parse_ac_coeffs_pass0 ++ mov dv_parse_ac_coeffs_pass0@GOTPCREL(%rip),%r11 ++ call *%r11 + pop %rdi + pop %rsi + pop %rdx +@@ -635,10 +638,12 @@ + mov %rsi,%rax /* quality */ + and $DV_QUALITY_AC_MASK,%rax + cmp $DV_QUALITY_AC_2,%rax ++ ++ jne done ++ mov dv_parse_ac_coeffs@GOTPCREL(%rip),%r11 ++ jmp *%r11 + +- jz dv_parse_ac_coeffs +- +- mov $0,%rax ++done: mov $0,%rax + + ret + diff --git a/abs/core/libevent/PKGBUILD b/abs/core/libevent/PKGBUILD new file mode 100644 index 0000000..265699f --- /dev/null +++ b/abs/core/libevent/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 13094 2008-09-25 22:07:09Z ronald $ +# Maintainer: +# Contributor: Judd + +pkgname=libevent +pkgver=1.4.8 +pkgrel=2 +pkgdesc="a mechanism to execute a callback function" +license=('GPL2') +arch=('i686' 'x86_64') +url="http://www.monkey.org/~provos/libevent/" +depends=('glibc') +source=(http://www.monkey.org/~provos/libevent-$pkgver-stable.tar.gz) +options=(!libtool) +md5sums=('e626c34f86746dffe8d055af0a84d08e') + +build() { + cd $srcdir/$pkgname-$pkgver-stable + ./configure --prefix=/usr --sysconfdir=/etc + make || return 1 + make DESTDIR=$pkgdir install || return 1 +} diff --git a/abs/core/libexif/PKGBUILD b/abs/core/libexif/PKGBUILD index 74989c8..7c47361 100644 --- a/abs/core/libexif/PKGBUILD +++ b/abs/core/libexif/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 23029 2009-01-01 16:38:33Z jgc $ # Maintainer: Jan de Groot # Contributor: Tobias Kieslich pkgname=libexif -pkgver=0.6.16 +pkgver=0.6.17 pkgrel=1 pkgdesc="A library to parse an EXIF file and read the data from those tags" arch=(i686 x86_64) @@ -12,11 +12,11 @@ url="http://sourceforge.net/projects/libexif" depends=('glibc') options=('!libtool') source=(http://downloads.sf.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('deee153b1ded5a944ea05d041d959eca') +md5sums=('f7cf4e623a48c9a3b13f7f95f0a41015') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/libgcrypt/PKGBUILD b/abs/core/libgcrypt/PKGBUILD index f4ebfea..5498563 100644 --- a/abs/core/libgcrypt/PKGBUILD +++ b/abs/core/libgcrypt/PKGBUILD @@ -1,23 +1,24 @@ -# $Id: PKGBUILD 3545 2008-06-24 17:33:25Z andyrtr $ +# $Id: PKGBUILD 32861 2009-04-01 19:16:30Z andyrtr $ # Maintainer: Andreas Radke pkgname=libgcrypt -pkgver=1.4.1 -pkgrel=10 +pkgver=1.4.4 +pkgrel=1 pkgdesc="a general purpose crypto library based on the code used" arch=(i686 x86_64) url="http://www.gnupg.org" license=('LGPL') groups=('base') -depends=('libgpg-error>=1.6') +depends=('libgpg-error>=1.6' 'texinfo') options=(!libtool) source=(#ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2 ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/libgcrypt/${pkgname}-${pkgver}.tar.bz2) -md5sums=('26703ecef4bbe113b8e6a87572b80b32') +md5sums=('34105aa927e23c217741966496b97e67') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr --disable-padlock-support + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-padlock-support --disable-static make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/libgcrypt/libgcrypt.install b/abs/core/libgcrypt/libgcrypt.install new file mode 100644 index 0000000..81547f5 --- /dev/null +++ b/abs/core/libgcrypt/libgcrypt.install @@ -0,0 +1,22 @@ +infodir=/usr/share/info +filelist=(gcrypt.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/libgl/PKGBUILD b/abs/core/libgl/PKGBUILD index 43e7c58..ce2faba 100644 --- a/abs/core/libgl/PKGBUILD +++ b/abs/core/libgl/PKGBUILD @@ -1,49 +1,40 @@ -# $Id: PKGBUILD 1895 2008-05-22 17:55:59Z jgc $ +# $Id: PKGBUILD 12994 2008-09-25 18:01:13Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=libgl -pkgver=7.0.3 -pkgrel=2 +pkgver=7.2 +pkgrel=1 pkgdesc="Mesa DRI OpenGL library and drivers" arch=(i686 x86_64) license=('LGPL') url="http://www.mesa3d.org" -depends=('libxxf86vm' 'libdrm>=2.3' 'libxdamage') -makedepends=('imake' 'glproto>=1.4.9' 'fixesproto' 'damageproto' 'pkgconfig') +depends=('libdrm>=2.3.1' 'libxxf86vm' 'libxdamage' 'expat>=2.0.1') +makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig') provides=('libgl-dri') replaces=('libgl-dri' 'libgl-mesa') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2) -md5sums=('e6e6379d7793af40a6bc3ce1bace572e') +options=(!makeflags) +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { cd ${startdir}/src/Mesa-${pkgver} - - CONFIG="linux-dri-x86" - if [ "${CARCH}" = "x86_64" ]; then - CONFIG="linux-dri-x86-64" - sed -i -e "s/lib64/lib/g" configs/${CONFIG} - fi - - echo "EXTRA_LIB_PATH =" >> configs/${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> configs/${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> configs/${CONFIG} - rm -f include/GL/glut*h - echo "USING_EGL = 0" >> configs/${CONFIG} - echo "PROGRAM_DIRS =" >> configs/${CONFIG} - echo "MKDEP = makedepend" >> configs/${CONFIG} - echo "DRI_DIRS =" >> configs/${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> configs/${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> configs/${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> configs/${CONFIG} - - make ${CONFIG} || return 1 - install -m755 -d ${startdir}/pkg/usr - make INSTALL_DIR=${startdir}/pkg/usr install || return 1 - - rm -rf ${startdir}/pkg/usr/include - - install -m755 -d ${startdir}/pkg/usr/lib/xorg/modules/extensions || return 1 - cd ${startdir}/pkg/usr/lib/xorg/modules/extensions || return 1 - ln -sf libGLcore.xorg libGLcore.so - ln -sf libglx.xorg libglx.so + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=swrast \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig + install -m755 -d ${pkgdir}/usr/lib/xorg/modules/extensions + ln -sf libglx.xorg ${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so || return 1 } diff --git a/abs/core/libgl/mesa-7.1-link-shared.patch b/abs/core/libgl/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/libgl/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/libglade/PKGBUILD b/abs/core/libglade/PKGBUILD index fc10160..95eff9b 100644 --- a/abs/core/libglade/PKGBUILD +++ b/abs/core/libglade/PKGBUILD @@ -1,26 +1,28 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 30217 2009-03-17 18:11:58Z jgc $ # Maintainer: Jan de Groot pkgname=libglade -pkgver=2.6.2 +pkgver=2.6.4 pkgrel=1 pkgdesc="Allows you to load glade interface files in a program at runtime" arch=(i686 x86_64) license=('LGPL') -depends=('gtk2' 'libxml2') +depends=('gtk2>=2.16.0' 'libxml2>=2.7.3') makedepends=('python' 'pkgconfig') +optdepends=('python: libglade-convert script') options=('!libtool') install=glade.install source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2 libglade-2.0.1-nowarning.patch) url="http://www.gnome.org" -md5sums=('da4f9d1c6cd1337f6ef5e2db768d8557' '4f879c0ce550004905aa0fb24f25c353') +md5sums=('d1776b40f4e166b5e9c107f1c8fe4139' + '4f879c0ce550004905aa0fb24f25c353') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/src/libglade-2.0.1-nowarning.patch || return 1 - ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/libglade-2.0.1-nowarning.patch" || return 1 + ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install - install -m755 libglade-convert ${startdir}/pkg/usr/bin/libglade-convert + make DESTDIR="${pkgdir}" install || return 1 + install -m755 libglade-convert "${pkgdir}/usr/bin/" || return 1 } diff --git a/abs/core/libglade/glade.install b/abs/core/libglade/glade.install index c98d2ed..a7f05c5 100644 --- a/abs/core/libglade/glade.install +++ b/abs/core/libglade/glade.install @@ -23,8 +23,3 @@ post_remove() { xmlcatalog --noout --del \ /usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog } - -op=$1 -shift - -$op $* diff --git a/abs/core/libgsf/PKGBUILD b/abs/core/libgsf/PKGBUILD index 84f5edb..67aa465 100644 --- a/abs/core/libgsf/PKGBUILD +++ b/abs/core/libgsf/PKGBUILD @@ -1,25 +1,27 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22409 2008-12-26 18:58:32Z jgc $ # Maintainer: Jan de Groot # Contributor: Sarah Hay pkgname=libgsf -pkgver=1.14.8 +pkgver=1.14.10 pkgrel=1 pkgdesc="The GNOME Structured File Library is a utility library for reading and writing structured file formats." arch=(i686 x86_64) url="http://www.gnome.org/" license=('GPL' 'LGPL') -depends=('libxml2' 'glib2>=2.16.1' 'bzip2') +depends=('libxml2>=2.7.2' 'glib2>=2.18.3' 'bzip2') makedepends=('perlxml' 'pkgconfig' 'python') options=('!libtool') source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/1.14/${pkgname}-${pkgver}.tar.bz2) -md5sums=('09e4b6639be79fa888cabc751f73674f') +md5sums=('f9b2f309089af683066ff0b319227e57') build() { cd ${startdir}/src/${pkgname}-${pkgver} - sed -i -e 's/gsf-gnome gsf-win32//' -e 's/thumbnailer//' Makefile.* - ./configure --prefix=/usr --disable-gtk-doc --without-gnome --without-bonobo + sed -i -e 's/gsf-gnome//' -e 's/thumbnailer//' Makefile.* + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --without-gnome-vfs --without-bonobo \ + --disable-static || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${startdir}/pkg install || return 1 rm -f ${startdir}/pkg/usr{,/share}/man/man1/gsf-office-thumbnailer.1 } diff --git a/abs/core/libidn/PKGBUILD b/abs/core/libidn/PKGBUILD index 6fb7d24..170388c 100644 --- a/abs/core/libidn/PKGBUILD +++ b/abs/core/libidn/PKGBUILD @@ -1,22 +1,30 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: Jan de Groot -# Contributor: Eric Johnson +# $Id: PKGBUILD 19577 2008-11-27 10:01:45Z ronald $ +# Maintainer: Ronald van Haren +# Contributor: Jan de Groot +# Contributor: Eric Johnson + pkgname=libidn -pkgver=1.0 +pkgver=1.11 pkgrel=1 pkgdesc="Implementation of the Stringprep, Punycode and IDNA specifications" -arch=(i686 x86_64) url="http://www.gnu.org/software/libidn/" -license=('GPL' 'LGPL') +arch=('i686' 'x86_64') +license=('GPL3' 'LGPL2') depends=('glibc') makedepends=('pkgconfig') options=('!libtool') -source=(ftp://alpha.gnu.org/pub/gnu/libidn/${pkgname}-${pkgver}.tar.gz) -md5sums=('8a6a15dc061c0e17a97cb6b77d850e86') +source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) +install=libidn.install +md5sums=('8859b17928f84b899b19e72bfa1c6dbf') +sha1sums=('08cffdcf9736f4ac61acc32e79a1d9672f640351') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${pkgdir} install || return 1 + + # handle info files + rm $pkgdir/usr/share/info/{dir,libidn-components.png} # nobody is missing a png I assume + gzip $pkgdir/usr/share/info/* } diff --git a/abs/core/libidn/libidn.install b/abs/core/libidn/libidn.install new file mode 100644 index 0000000..a0366eb --- /dev/null +++ b/abs/core/libidn/libidn.install @@ -0,0 +1,19 @@ +info_dir=/usr/share/info +info_files=(libidn.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + diff --git a/abs/core/libiec61883/PKGBUILD b/abs/core/libiec61883/PKGBUILD new file mode 100644 index 0000000..8159d36 --- /dev/null +++ b/abs/core/libiec61883/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jason Chu +# Contributor: Jaroslaw Swierczynski +# Contributor: Stephen Caraher + +pkgname=libiec61883 +pkgver=1.2.0 +pkgrel=2 +pkgdesc="A higher level API for streaming DV, MPEG-2 and audio over Linux IEEE 1394" +arch=('i686' 'x86_64') +url="http://www.linux1394.org/" +license=('LGPL') +depends=('libraw1394') +options=('!libtool') +source=(http://www.linux1394.org/dl/$pkgname-$pkgver.tar.gz) +md5sums=('8af39fff74988073c3ad53fbab147da9') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/libjpeg/PKGBUILD b/abs/core/libjpeg/PKGBUILD index 807f7f5..3f671b4 100644 --- a/abs/core/libjpeg/PKGBUILD +++ b/abs/core/libjpeg/PKGBUILD @@ -1,21 +1,28 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: dorphell -# Committer: Judd Vinet +# $Id$ +# Maintainer: Allan McRae +# Contributor: Judd Vinet + pkgname=libjpeg -pkgver=6b -pkgrel=4 +pkgver=7 +pkgrel=1 pkgdesc="Library of JPEG support functions" arch=('i686' 'x86_64') +url="http://www.ijg.org/" +license=('custom') depends=('glibc') -source=(ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v$pkgver.tar.gz) -md5sums=('dbd5f3b47ed13132f04c685d608a7547') +makedepends=('libtool') +options=(!libtool) +source=(http://www.ijg.org/files/jpegsrc.v7.tar.gz) +md5sums=('382ef33b339c299b56baf1296cda9785') build() { - cd $startdir/src/jpeg-$pkgver + cd $srcdir/jpeg-$pkgver ./configure --prefix=/usr --enable-shared --enable-static make || return 1 - mkdir -p $startdir/pkg/usr/{bin,lib,include,man/man1} - make prefix=$startdir/pkg/usr install + make prefix=$pkgdir/usr mandir=$pkgdir/usr/share/man install + + # See FS#11116 - re-assess need with v7 release sometime... + install -m644 jpegint.h $pkgdir/usr/include - find $startdir/pkg -name '*.la' -exec rm {} \; + install -Dm644 README $pkgdir/usr/share/licenses/libjpeg/README } diff --git a/abs/core/libmcrypt/PKGBUILD b/abs/core/libmcrypt/PKGBUILD new file mode 100644 index 0000000..bdacb84 --- /dev/null +++ b/abs/core/libmcrypt/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot +# Contributor: Tom Newsom + +pkgname=libmcrypt +pkgver=2.5.8 +pkgrel=1 +pkgdesc="A library which provides a uniform interface to several symmetric encryption algorithms" +arch=(i686 x86_64) +license=('LGPL') +depends=('glibc') +options=('!libtool') +source=(http://heanet.dl.sourceforge.net/mcrypt/${pkgname}-${pkgver}.tar.bz2) +url="http://mcrypt.sourceforge.net/" +md5sums=('c4f491dd411a09e9de3b8702ea6f73eb') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/core/libmcrypt/aclocal-fixes.patch b/abs/core/libmcrypt/aclocal-fixes.patch new file mode 100644 index 0000000..f001a18 --- /dev/null +++ b/abs/core/libmcrypt/aclocal-fixes.patch @@ -0,0 +1,11 @@ +--- lib/libmcrypt.m4.orig 2006-03-05 13:47:22.000000000 +0000 ++++ lib/libmcrypt.m4 2006-03-05 13:47:39.000000000 +0000 +@@ -14,7 +14,7 @@ + dnl AM_PATH_LIBMCRYPT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]]) + dnl Test for libmcrypt, and define LIBMCRYPT_CFLAGS and LIBMCRYPT_LIBS + dnl +-AC_DEFUN(AM_PATH_LIBMCRYPT, ++AC_DEFUN([AM_PATH_LIBMCRYPT], + [dnl + dnl Get the cflags and libraries from the libmcrypt-config script + dnl diff --git a/abs/core/libmng/PKGBUILD b/abs/core/libmng/PKGBUILD new file mode 100644 index 0000000..dc3958a --- /dev/null +++ b/abs/core/libmng/PKGBUILD @@ -0,0 +1,25 @@ +# $Id$ +# Contributor: Tom Newsom +# Maintainer: judd +pkgname=libmng +pkgver=1.0.10 +pkgrel=3 +pkgdesc="A collection of routines used to create and manipulate MNG format graphics files" +arch=('i686' 'x86_64') +url="http://www.libmng.com/" +license=('custom') +depends=('zlib' 'libjpeg>=7') +options=(!libtool) +source=(http://dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('a464ae7d679781beebdf7440d144b7bd') + +build() { + cd $startdir/src/$pkgname-$pkgver + ln -s makefiles/configure.in . + ln -s makefiles/Makefile.am . + autoreconf --force --install + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + install -D -m644 LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE +} diff --git a/abs/core/libmpeg2/PKGBUILD b/abs/core/libmpeg2/PKGBUILD new file mode 100644 index 0000000..672e098 --- /dev/null +++ b/abs/core/libmpeg2/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 8677 2008-08-15 11:05:35Z andyrtr $ +# Contributor: Sarah Hay +# Maintainer: Andreas Radke + +pkgname=libmpeg2 +pkgver=0.5.1 +pkgrel=1 +pkgdesc="libmpeg2 is a library for decoding MPEG-1 and MPEG-2 video streams." +arch=('i686' 'x86_64') +url="http://libmpeg2.sourceforge.net/" +depends=('glibc') +optdepends=('sdl: requiered for mpeg2dec' + 'libsm: requiered for mpeg2dec' + 'libxv: requiered for mpeg2dec') +source=(http://libmpeg2.sourceforge.net/files/${pkgname}-${pkgver}.tar.gz) +license=('GPL2') +options=(!libtool) +provides=('mpeg2dec') +md5sums=('0f92c7454e58379b4a5a378485bbd8ef') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --enable-shared --disable-static || return 1 + make OPT_CFLAGS="${CFLAGS}" \ + MPEG2DEC_CFLAGS="${CFLAGS}" \ + LIBMPEG2_CFLAGS="" || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/core/libmysqlclient/PKGBUILD b/abs/core/libmysqlclient/PKGBUILD index b8e84d1..5ab1e46 100644 --- a/abs/core/libmysqlclient/PKGBUILD +++ b/abs/core/libmysqlclient/PKGBUILD @@ -1,8 +1,9 @@ -# $Id: PKGBUILD 2463 2008-06-02 11:37:21Z alexander $ +# $Id: PKGBUILD 23680 2009-01-11 15:55:34Z douglas $ # Maintainer: judd + pkgname=libmysqlclient -pkgver=5.0.60 -pkgrel=1 +pkgver=5.0.75 +pkgrel=2 pkgdesc="MySQL client libraries" arch=(i686 x86_64) depends=('openssl' 'zlib') @@ -10,7 +11,7 @@ makedepends=('gcc' 'readline' 'tcp_wrappers' 'libtool') options=('!libtool') license=('GPL') url=('http://www.mysql.com/') -source=(http://mirror.provenscaling.com/mysql/enterprise/source/5.0/mysql-${pkgver}.tar.gz) +source=(http://mysql.cce.usp.br/Downloads/MySQL-5.0/mysql-$pkgver.tar.gz) build() { # PIC @@ -19,7 +20,7 @@ build() { ./configure --prefix=/usr --libexecdir=/usr/sbin \ --localstatedir=/var --sysconfdir=/etc \ --without-debug --without-docs --without-bench --without-readline \ - --with-innodb --enable-local-infile --with-openssl \ + --with-innodb --enable-local-infile --with-ssl \ --with-charset=latin1 --with-collation=latin1_general_ci \ --with-extra-charsets=complex --enable-thread-safe-client \ --with-libwrap --with-berkeley-db @@ -52,4 +53,4 @@ build() { ln -sf libmysqlclient_r.so.15 $startdir/pkg/usr/lib/libmysqlclient_r.so ln -sf libmysqlclient_r.so.15 $startdir/pkg/usr/lib/libmysqlclient_r.so.1 } -md5sums=('2709a53f3da6f1cd868825ed2ea80431') +md5sums=('a234f0a60a7f8c290d9875cba3a2c5a2') diff --git a/abs/core/libpcap/PKGBUILD b/abs/core/libpcap/PKGBUILD index 0a586db..e5c11e2 100644 --- a/abs/core/libpcap/PKGBUILD +++ b/abs/core/libpcap/PKGBUILD @@ -1,44 +1,34 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: dorphell +# $Id: PKGBUILD 20200 2008-12-01 17:56:56Z thomas $ +# Maintainer: Thomas Bächler pkgname=libpcap -pkgver=0.9.8 -pkgrel=11 +pkgver=1.0.0 +pkgrel=1 pkgdesc="A system-independent interface for user-level packet capture" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.tcpdump.org/" license=('BSD') groups=('base') depends=('glibc') makedepends=('flex') -source=(http://www.sfr-fresh.com/unix/misc/libpcap-${pkgver}.tar.gz - libpcap-shared.patch) -md5sums=('5208f24d0328ee7c20b52c43eaa9aa0e' - 'b8a9c5e5cea0b89a8a7456c6c4d59db4') - -# This package has a strict SONAME that changes in EVERY MINOR -# release. Whenever you feel like updating this package, DON'T, -# it will break a number of essential system tools. -# Again, for dummies: IF YOU UPDATE THIS PACKAGE DIRECTLY TO CORE, -# I WILL PERSONALLY CHOP YOUR HEAD OFF! +source=(http://www.tcpdump.org/release/libpcap-${pkgver}.tar.gz) +md5sums=('9ad1358c5dec48456405eac197a46d3d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/libpcap-shared.patch || return 1 - sed -i -e "s/@MAJOR@/`awk -F '.' '{ print $1 }' VERSION`/" \ - -e "s/@MINOR@/`awk -F '.' '{ print $2 }' VERSION`/" \ - -e "s/@SUBMINOR@/`awk -F '.' '{ print $3 }' VERSION`/" \ - -e "s/@VERSION@/`cat VERSION`/" Makefile.in - + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr --enable-ipv6 - DEFS="-g -D_U_=\"\" -fPIC -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" - make -j1 DEFS="${DEFS}" || return 1 - make DESTDIR=${startdir}/pkg install -# # backwards compatibility, programs often look for net/bpf.h - mkdir -p ${startdir}/pkg/usr/include/net - cd ${startdir}/pkg/usr/include/net + make || return 1 + make shared || return 1 + + install -d -m755 ${pkgdir}/usr/bin + make DESTDIR=${pkgdir} install install-shared || return 1 + ln -s libpcap.so.1.0.0 ${pkgdir}/usr/lib/libpcap.so.1 + ln -s libpcap.so.1.0.0 ${pkgdir}/usr/lib/libpcap.so + # backwards compatibility, programs often look for net/bpf.h + mkdir -p ${pkgdir}/usr/include/net + cd ${pkgdir}/usr/include/net ln -s ../pcap-bpf.h bpf.h #install the license - install -D -m644 $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE + install -D -m644 ${srcdir}/$pkgname-$pkgver/LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE } diff --git a/abs/core/libpciaccess/PKGBUILD b/abs/core/libpciaccess/PKGBUILD new file mode 100644 index 0000000..499f365 --- /dev/null +++ b/abs/core/libpciaccess/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=libpciaccess +pkgver=0.10.5 +pkgrel=1 +pkgdesc="X11 PCI access library" +arch=(i686 x86_64) +license=('custom') +url="http://xorg.freedesktop.org/" +depends=('glibc') +makedepends=('pkgconfig') +options=('!libtool') +source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) +md5sums=('617bebf31e5685c83f935009aeae5f38') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/abs/core/libpng/ChangeLog b/abs/core/libpng/ChangeLog index 9612756..98aa66d 100644 --- a/abs/core/libpng/ChangeLog +++ b/abs/core/libpng/ChangeLog @@ -1,4 +1,8 @@ +2008-10-06 Douglas Soares de Andrade + + * Updated for i686: 1.2.32 + 2008-08-23 Douglas Soares de Andrade * Updated for i686: 1.2.31 diff --git a/abs/core/libpng/PKGBUILD b/abs/core/libpng/PKGBUILD index a67b300..12515ed 100644 --- a/abs/core/libpng/PKGBUILD +++ b/abs/core/libpng/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 10073 2008-08-23 15:51:29Z douglas $ +# $Id: PKGBUILD 22148 2008-12-22 12:33:23Z pierre $ # Maintainer: dorphell # Maintainer: Travis Willard # Maintainer: Douglas Soares de Andrade pkgname=libpng -pkgver=1.2.31 +pkgver=1.2.34 pkgrel=1 pkgdesc="A collection of routines used to create PNG format graphics files" arch=('i686' 'x86_64') @@ -12,19 +12,18 @@ url="http://www.libpng.org/pub/png/libpng.html" license=('custom') depends=('zlib') options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 - # http://littlesvr.ca/apng/diff/${pkgname}-${pkgver}-apng.patch - ${pkgname}-${pkgver}-apng.patch ) +source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2" + "http://hp.vector.co.jp/authors/VA013651/lib/libpng-${pkgver}-apng.patch.gz") options=('!libtool') - -md5sums=('78d2f8c4e0d64f8948819563587302d3' - 'fab42a4ad4de6fcb87dcca6a7a19aefb') +md5sums=('37362876feb21344fd3af1228527db0f' + 'a7ee9fd9af34692b75eedd5b03b69ca9') build() { cd ${startdir}/src/${pkgname}-${pkgver} # Add animated PNG (apng) support - patch -Np0 -i $startdir/src/${pkgname}-${pkgver}-apng.patch || return 1 + # see http://hp.vector.co.jp/authors/VA013651/freeSoftware/apng.html + patch -p1 -i $srcdir/libpng-${pkgver}-apng.patch || return 1 libtoolize --force --copy || return 1 aclocal || return 1 diff --git a/abs/core/libraw1394/PKGBUILD b/abs/core/libraw1394/PKGBUILD new file mode 100644 index 0000000..b1065fd --- /dev/null +++ b/abs/core/libraw1394/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 13741 2008-09-28 13:27:16Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Tom Newsom + +pkgname=libraw1394 +pkgver=2.0.2 +pkgrel=3 +arch=('i686' 'x86_64') +license=('LGPL') +pkgdesc="Provides an API to the Linux IEEE1394 (FireWire) driver" +depends=('glibc') +makedepends=('pkgconfig') +url="http://www.linux1394.org/" +options=(!libtool force) +install=libraw1394.install +source=(http://www.linux1394.org/dl/${pkgname}-${pkgver}.tar.gz) +md5sums=('9fbbef5ea31101c4c28085db134fd448') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/core/libraw1394/libraw1394.install b/abs/core/libraw1394/libraw1394.install new file mode 100644 index 0000000..33fb64c --- /dev/null +++ b/abs/core/libraw1394/libraw1394.install @@ -0,0 +1,18 @@ +# arg 1: the new package version +post_install() { + ln -s /usr/lib/libraw1394.so.11.0.1 /usr/lib/libraw1394.so.8 +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + rm -fr /usr/lib/libraw1394.so.8 +} + +op=$1 +shift +$op $* diff --git a/abs/core/librsvg/PKGBUILD b/abs/core/librsvg/PKGBUILD index c4f4a11..6a702aa 100644 --- a/abs/core/librsvg/PKGBUILD +++ b/abs/core/librsvg/PKGBUILD @@ -1,28 +1,27 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 13073 2008-09-25 20:24:43Z jgc $ # Maintainer: Jan de Groot pkgname=librsvg -pkgver=2.22.2 +pkgver=2.22.3 pkgrel=1 pkgdesc="SAX-based renderer for SVG files into a GdkPixbuf" arch=(i686 x86_64) license=('LGPL') -depends=('gtk2>=2.12.9' 'libcroco>=0.6.1' 'libgsf>=1.14.8') +depends=('gtk2>=2.14.3' 'libcroco>=0.6.1' 'libgsf>=1.14.8') makedepends=('perlxml' 'pkgconfig') options=('!libtool') url="http://librsvg.sourceforge.net/" source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.22/${pkgname}-${pkgver}.tar.bz2) install=librsvg.install -md5sums=('aae602677ce201b1a0ed6a0c18c207f2') +md5sums=('c4ec4fdb2b1842e221ca39127e85682d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --libexecdir=/usr/lib/${pkgname} \ --with-croco \ --disable-mozilla-plugin --with-svgz make || return 1 - make DESTDIR=${startdir}/pkg install - rm -rf ${startdir}/pkg/usr/share/gtk-doc - rm -rf ${startdir}/pkg/usr/lib/mozilla - rm ${startdir}/pkg/usr/lib/gtk-2.0/*/{engines,loaders}/*.a + make DESTDIR="${pkgdir}" install + rm -rf "${pkgdir}/usr/lib/mozilla" + rm ${pkgdir}/usr/lib/gtk-2.0/*/{engines,loaders}/*.a } diff --git a/abs/core/librsvg/librsvg.install b/abs/core/librsvg/librsvg.install index 8a6dd5a..01eaab0 100644 --- a/abs/core/librsvg/librsvg.install +++ b/abs/core/librsvg/librsvg.install @@ -1,4 +1,3 @@ -# arg 1: the new package version post_install() { #We need to update the pixbuf loaders to let GTK support SVG images usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules diff --git a/abs/core/libtasn1/PKGBUILD b/abs/core/libtasn1/PKGBUILD index 9d0f14a..5187cef 100644 --- a/abs/core/libtasn1/PKGBUILD +++ b/abs/core/libtasn1/PKGBUILD @@ -1,21 +1,26 @@ -# $Id: PKGBUILD 3687 2008-06-29 10:44:27Z jgc $ -# Maintainer: judd +# $Id: PKGBUILD 35541 2009-04-13 20:54:05Z jgc $ +# Maintainer: Jan de Groot +# Contributor: judd pkgname=libtasn1 -pkgver=1.4 +pkgver=2.0 pkgrel=1 pkgdesc="The ASN.1 library used in GNUTLS" arch=(i686 x86_64) -license=('GPL' 'LGPL') +license=('GPL3' 'LGPL') url="http://www.gnu.org/software/gnutls/" -depends=('glibc') +depends=('glibc' 'texinfo') options=('!libtool') -source=(ftp://ftp.gnutls.org/pub/gnutls/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('a733ecdfed3517910e627d24e050979f') +install=libtasn1.install +source=(ftp://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.gz) +md5sums=('e9b1462f04b2586b03905b0ed9528261') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -f "${pkgdir}/usr/share/info/dir" + gzip ${pkgdir}/usr/share/info/* || return 1 } diff --git a/abs/core/libtasn1/libtasn1.install b/abs/core/libtasn1/libtasn1.install new file mode 100644 index 0000000..2d1ecc0 --- /dev/null +++ b/abs/core/libtasn1/libtasn1.install @@ -0,0 +1,18 @@ +info_dir=/usr/share/info +info_files=(libtasn1.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} diff --git a/abs/core/libthai/PKGBUILD b/abs/core/libthai/PKGBUILD index 68f426e..aa5ba12 100644 --- a/abs/core/libthai/PKGBUILD +++ b/abs/core/libthai/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 35277 2009-04-11 20:15:53Z jgc $ # Maintainer: Jan de Groot # Contributor: Chaiwat Suttipongsakul pkgname=libthai -pkgver=0.1.9 -pkgrel=1 +pkgver=0.1.11 +pkgrel=2 pkgdesc="Thai language support routines" url="http://linux.thai.net/projects/libthai" arch=('i686' 'x86_64') license=('LGPL') -depends=('libdatrie>=0.1.2') +depends=('libdatrie>=0.2.1') makedepends=('pkgconfig') options=('!libtool' '!emptydirs') source=(http://linux.thai.net/pub/thailinux/software/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('7002d111b293f202d20b28aa2b4ed68f') +md5sums=('f27fd7b67116939b2676ddff7180957a') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr --disable-static + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/libtiff/ChangeLog b/abs/core/libtiff/ChangeLog new file mode 100644 index 0000000..1a1c85b --- /dev/null +++ b/abs/core/libtiff/ChangeLog @@ -0,0 +1,8 @@ +2008-09-05 Eric Belanger + + * libtiff 3.8.2-4 + * Applied patch to fix buffer underflow in LZW decoding (tiff-3.8.2-CVE-2008-2327.patch) + * Added license + * Added freeglut optdepends + * FHS man pages + * Added ChangeLog diff --git a/abs/core/libtiff/PKGBUILD b/abs/core/libtiff/PKGBUILD index 67cb689..51e106c 100644 --- a/abs/core/libtiff/PKGBUILD +++ b/abs/core/libtiff/PKGBUILD @@ -1,31 +1,43 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: dorphell +# $Id$ +# Maintainer: Eric Belanger +# Contributor: dorphell pkgname=libtiff pkgver=3.8.2 -pkgrel=3 +pkgrel=5 pkgdesc="Library for manipulation of TIFF images" -arch=(i686 x86_64) -depends=(libjpeg zlib) -makedepends=(libgl freeglut libxmu libxi) -options=(!libtool) +arch=('i686' 'x86_64') url="http://www.libtiff.org/" -source=(ftp://ftp.remotesensing.org/pub/libtiff/tiff-${pkgver}.tar.gz - tiff2pdf-octal-printf.patch - tiffsplit-fname-overflow.patch - CVE-2006-3459-3465.patch - tiff2pdf-compression.patch) +license=('custom') +depends=('libjpeg>=7' 'zlib') +makedepends=('libgl' 'freeglut' 'libxmu' 'libxi') +optdepends=('freeglut: for using tiffgt') +options=('!libtool') +source=(ftp://ftp.remotesensing.org/pub/libtiff/tiff-${pkgver}.tar.gz \ + tiff2pdf-octal-printf.patch \ + tiffsplit-fname-overflow.patch \ + CVE-2006-3459-3465.patch \ + tiff2pdf-compression.patch \ + tiff-3.8.2-CVE-2008-2327.patch) md5sums=('fbb6f446ea4ed18955e2714934e5b698' 'd54368687d2645ffbbe6c2df384b11bf'\ '323352fd60a7bd3ffac8724c3c031669' '624d3067e6a4c0680767eb62253ea980'\ - 'b443ffca9d498bb3a88c17da0200025b') + 'b443ffca9d498bb3a88c17da0200025b' 'c2c2e22557d9c63011df5777dda6a86b') +sha1sums=('549e67b6a15b42bfcd72fe17cda7c9a198a393eb' + 'c79245249634a121bfaff6cfecb763f72fe7f8eb' + 'dc86bb68c7831ff70ff01d952d553be9f986be46' + '85dc50a60a10025757e249d869dab7eb73ba6e3c' + '508751f55131356ea8a7e7c4994ffbc9bd881769' + '1da2ec6a47c0666cad9d07fb8427c1c75ca27b10') build() { - cd ${startdir}/src/tiff-${pkgver} - patch -Np1 -i ${startdir}/src/tiff2pdf-octal-printf.patch || return 1 - patch -Np1 -i ${startdir}/src/tiffsplit-fname-overflow.patch || return 1 - patch -Np1 -i ${startdir}/src/CVE-2006-3459-3465.patch || return 1 - patch -Np1 -i ${startdir}/src/tiff2pdf-compression.patch || return 1 - ./configure --prefix=/usr --sysconfdir=/etc + cd ${srcdir}/tiff-${pkgver} + patch -Np1 -i ${srcdir}/tiff2pdf-octal-printf.patch || return 1 + patch -Np1 -i ${srcdir}/tiffsplit-fname-overflow.patch || return 1 + patch -Np1 -i ${srcdir}/CVE-2006-3459-3465.patch || return 1 + patch -Np1 -i ${srcdir}/tiff2pdf-compression.patch || return 1 + patch -Np1 -i ${srcdir}/tiff-3.8.2-CVE-2008-2327.patch || return 1 + ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${pkgdir} install || return 1 + install -D -m644 COPYRIGHT ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 } diff --git a/abs/core/libtiff/tiff-3.8.2-CVE-2008-2327.patch b/abs/core/libtiff/tiff-3.8.2-CVE-2008-2327.patch new file mode 100644 index 0000000..e6d74a6 --- /dev/null +++ b/abs/core/libtiff/tiff-3.8.2-CVE-2008-2327.patch @@ -0,0 +1,64 @@ +Fixes security issues in libTIFF's handling of LZW-encoded +images. The use of uninitialized data could lead to a buffer +underflow and a crash or arbitrary code execution. + +CVE-ID: CVE-2008-2327 +Security bug: https://bugs.gentoo.org/show_bug.cgi?id=234080 + +Index: tiff-3.8.2/libtiff/tif_lzw.c +=================================================================== +--- tiff-3.8.2.orig/libtiff/tif_lzw.c ++++ tiff-3.8.2/libtiff/tif_lzw.c +@@ -237,6 +237,12 @@ LZWSetupDecode(TIFF* tif) + sp->dec_codetab[code].length = 1; + sp->dec_codetab[code].next = NULL; + } while (code--); ++ /* ++ * Zero-out the unused entries ++ */ ++ _TIFFmemset(&sp->dec_codetab[CODE_CLEAR], 0, ++ (CODE_FIRST-CODE_CLEAR)*sizeof (code_t)); ++ + } + return (1); + } +@@ -408,12 +414,19 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize + break; + if (code == CODE_CLEAR) { + free_entp = sp->dec_codetab + CODE_FIRST; ++ _TIFFmemset(free_entp, 0, (CSIZE-CODE_FIRST)*sizeof (code_t)); + nbits = BITS_MIN; + nbitsmask = MAXCODE(BITS_MIN); + maxcodep = sp->dec_codetab + nbitsmask-1; + NextCode(tif, sp, bp, code, GetNextCode); + if (code == CODE_EOI) + break; ++ if (code == CODE_CLEAR) { ++ TIFFErrorExt(tif->tif_clientdata, tif->tif_name, ++ "LZWDecode: Corrupted LZW table at scanline %d", ++ tif->tif_row); ++ return (0); ++ } + *op++ = (char)code, occ--; + oldcodep = sp->dec_codetab + code; + continue; +@@ -604,12 +617,19 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, + break; + if (code == CODE_CLEAR) { + free_entp = sp->dec_codetab + CODE_FIRST; ++ _TIFFmemset(free_entp, 0, (CSIZE-CODE_FIRST)*sizeof (code_t)); + nbits = BITS_MIN; + nbitsmask = MAXCODE(BITS_MIN); + maxcodep = sp->dec_codetab + nbitsmask; + NextCode(tif, sp, bp, code, GetNextCodeCompat); + if (code == CODE_EOI) + break; ++ if (code == CODE_CLEAR) { ++ TIFFErrorExt(tif->tif_clientdata, tif->tif_name, ++ "LZWDecode: Corrupted LZW table at scanline %d", ++ tif->tif_row); ++ return (0); ++ } + *op++ = code, occ--; + oldcodep = sp->dec_codetab + code; + continue; diff --git a/abs/core/libtool/PKGBUILD b/abs/core/libtool/PKGBUILD index 965a282..f861926 100644 --- a/abs/core/libtool/PKGBUILD +++ b/abs/core/libtool/PKGBUILD @@ -1,21 +1,25 @@ -# $Id: PKGBUILD 1505 2008-05-12 10:28:03Z andyrtr $ +# $Id: PKGBUILD 12053 2008-09-08 14:37:58Z andyrtr $ # Maintainer: judd pkgname=libtool -pkgver=2.2.4 +pkgver=2.2.6a pkgrel=1 pkgdesc="A generic library support script" arch=('i686' 'x86_64') license=('GPL') url="http://www.gnu.org/software/libtool" +install=libtool.install groups=('base-devel') -depends=('sh') +depends=('sh' 'tar') source=(ftp://ftp.gnu.org/pub/gnu/libtool/${pkgname}-${pkgver}.tar.gz) -md5sums=('0b87e84c7aad3b5e979bbe35312fd4c1') +md5sums=('8ca1ea241cd27ff9832e045fe9afe4fd') options=('!libtool') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + #cd ${startdir}/src/${pkgname}-${pkgver} + cd ${startdir}/src/${pkgname}-2.2.6 ./configure --prefix=/usr make || return 1 make DESTDIR=${startdir}/pkg install + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/libtool/libtool.install b/abs/core/libtool/libtool.install new file mode 100644 index 0000000..1794742 --- /dev/null +++ b/abs/core/libtool/libtool.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(libtool.info libtool.info-1 libtool.info-2) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/libvisual-plugins/01_disable-gforce-dfsg.patch b/abs/core/libvisual-plugins/01_disable-gforce-dfsg.patch new file mode 100644 index 0000000..686bde1 --- /dev/null +++ b/abs/core/libvisual-plugins/01_disable-gforce-dfsg.patch @@ -0,0 +1,52 @@ +diff -Nur libvisual-plugins-0.4.0/configure.ac libvisual-plugins-0.4.0.new/configure.ac +--- libvisual-plugins-0.4.0/configure.ac 2006-03-17 03:50:41.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/configure.ac 2007-07-04 18:01:57.000000000 +1000 +@@ -414,7 +414,7 @@ + AS_HELP_STRING([--disable-gforce], + [Do not build the G-Force plugin @<:@default=enabled@:>@]), + [ENABLE_GFORCE=$enableval], +- [ENABLE_GFORCE=yes]) ++ [ENABLE_GFORCE=no]) + + if test "$ENABLE_GFORCE" = "yes"; then + build_actor_plugins="$build_actor_plugins G-Force" +@@ -558,28 +558,6 @@ + plugins/actor/nastyfft/Makefile + plugins/actor/oinksie/Makefile + plugins/actor/pseudotoad_flower/Makefile +- plugins/actor/G-Force/Makefile +- plugins/actor/G-Force/docs/Makefile +- plugins/actor/G-Force/Common/Makefile +- plugins/actor/G-Force/Common/GeneralTools/Makefile +- plugins/actor/G-Force/Common/GeneralTools/Headers/Makefile +- plugins/actor/G-Force/Common/io/Makefile +- plugins/actor/G-Force/Common/io/Headers/Makefile +- plugins/actor/G-Force/Common/math/Makefile +- plugins/actor/G-Force/Common/math/Headers/Makefile +- plugins/actor/G-Force/Common/UI/Makefile +- plugins/actor/G-Force/Common/UI/Headers/Makefile +- plugins/actor/G-Force/GForceCommon/Makefile +- plugins/actor/G-Force/GForceCommon/Headers/Makefile +- plugins/actor/G-Force/unix/Makefile +- plugins/actor/G-Force/unix/Headers/Makefile +- plugins/actor/G-Force/unix/libmfl/Makefile +- plugins/actor/G-Force/unix/libvisual/Makefile +- plugins/actor/G-Force/GForceColorMaps/Makefile +- plugins/actor/G-Force/GForceDeltaFields/Makefile +- plugins/actor/G-Force/GForceParticles/Makefile +- plugins/actor/G-Force/GForceWaveShapes/Makefile +- plugins/actor/G-Force/NotWorkingWaveShapes/Makefile + plugins/input/Makefile + plugins/input/esd/Makefile + plugins/input/alsa/Makefile +diff -Nur libvisual-plugins-0.4.0/plugins/actor/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/Makefile.am 2006-03-17 03:50:41.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/Makefile.am 2007-07-04 18:02:30.000000000 +1000 +@@ -4,7 +4,6 @@ + DIST_SUBDIRS = \ + bumpscope \ + corona \ +- G-Force \ + gdkpixbuf \ + gstreamer \ + infinite \ diff --git a/abs/core/libvisual-plugins/02_64-bit_JESS_fix.patch b/abs/core/libvisual-plugins/02_64-bit_JESS_fix.patch new file mode 100644 index 0000000..1d7f99e --- /dev/null +++ b/abs/core/libvisual-plugins/02_64-bit_JESS_fix.patch @@ -0,0 +1,58 @@ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/JESS/renderer.c libvisual-plugins-0.4.0.new/plugins/actor/JESS/renderer.c +--- libvisual-plugins-0.4.0/plugins/actor/JESS/renderer.c 2006-02-06 05:47:26.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/JESS/renderer.c 2007-07-04 18:12:58.000000000 +1000 +@@ -282,7 +282,7 @@ + + void render_deformation(JessPrivate *priv, int defmode) + { +- uint32_t bmax; ++ intptr_t bmax; + uint32_t *tab1 = NULL, *tab2, *tab3, *tab4, i; + uint8_t *pix = priv->pixel, *buf = priv->buffer, *aux; + +@@ -294,7 +294,7 @@ + tab2 = priv->table2; + tab3 = priv->table3; + tab4 = priv->table4; +- bmax = priv->resx * priv->resy + (uint32_t) priv->pixel; ++ bmax = priv->resx * priv->resy + (intptr_t) priv->pixel; + + switch(defmode) + { +@@ -352,7 +352,7 @@ + } + for (i = 0; i < priv->resy * priv->resx; i++) + { +- aux = (uint8_t *) ((*(tab1) << 2 ) + (uint32_t) priv->buffer); ++ aux = (uint8_t *) ((*(tab1) << 2 ) + (intptr_t) priv->buffer); + *(pix++) = *(aux++) ; + *(pix++) = *(aux++); + *(pix++) = *(aux); +@@ -373,7 +373,8 @@ + /* j'ai mis pixel par defaut... */ + + uint8_t *pix = priv->pixel; +- uint32_t bmax,pitch_4; ++ intptr_t bmax; ++ uint32_t pitch_4; + + pix = priv->pixel; + if (priv->pixel == NULL) +@@ -387,7 +388,7 @@ + if (priv->video == 8) + { + if (visual_cpu_get_mmx ()) { +- bmax = priv->resx * (priv->resy-1) + (uint32_t) priv->pixel; ++ bmax = priv->resx * (priv->resy-1) + (intptr_t) priv->pixel; + #if defined(VISUAL_ARCH_X86) || defined(VISUAL_ARCH_X86_64) + __asm __volatile + ("\n\t pxor %%mm6, %%mm6" +@@ -423,7 +424,7 @@ + else + { + pitch_4 = priv->pitch+4; +- bmax = priv->pitch*(priv->resy-1) + (uint32_t) priv->pixel; ++ bmax = priv->pitch*(priv->resy-1) + (intptr_t) priv->pixel; + + if (visual_cpu_get_mmx ()) { + #if defined(VISUAL_ARCH_X86) || defined(VISUAL_ARCH_X86_64) diff --git a/abs/core/libvisual-plugins/03_build_against_gl_fixes.patch b/abs/core/libvisual-plugins/03_build_against_gl_fixes.patch new file mode 100644 index 0000000..b215582 --- /dev/null +++ b/abs/core/libvisual-plugins/03_build_against_gl_fixes.patch @@ -0,0 +1,372 @@ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/bumpscope/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/bumpscope/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/bumpscope/Makefile.am 2006-02-23 20:03:24.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/bumpscope/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_bumpscope.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_bumpscope_la_LDFLAGS = -module -avoid-version ++actor_bumpscope_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_bumpscope_la_SOURCES = actor_bumpscope.c \ + actor_bumpscope.h \ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/corona/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/corona/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/corona/Makefile.am 2006-02-23 20:03:24.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/corona/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_corona.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CXXFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_corona_la_LDFLAGS = -module -avoid-version ++actor_corona_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_corona_la_SOURCES = actor_corona.cpp \ + autopal.h \ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/gdkpixbuf/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/gdkpixbuf/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/gdkpixbuf/Makefile.am 2006-02-24 00:34:48.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/gdkpixbuf/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_gdkpixbuf.la + +-LIBS += $(LIBVISUAL_LIBS) $(GTK_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) $(GTK_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_gdkpixbuf_la_LDFLAGS = -module -avoid-version ++actor_gdkpixbuf_la_LIBADD = $(LIBVISUAL_LIBS) $(GTK_LIBS) + + actor_gdkpixbuf_la_SOURCES = actor_gdkpixbuf.c + +diff -Nur libvisual-plugins-0.4.0/plugins/actor/gstreamer/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/gstreamer/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/gstreamer/Makefile.am 2006-02-23 20:03:27.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/gstreamer/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,14 +2,13 @@ + + actor_plugin_LTLIBRARIES = actor_gstreamer.la + +-LIBS += $(LIBVISUAL_LIBS) $(GSTREAMER_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) $(GSTREAMER_CFLAGS) + + INCLUDES = $(all_includes) \ + -I$(top_srcdir) + + actor_gstreamer_la_LDFLAGS = -module -avoid-version ++actor_gstreamer_la_LIBADD = $(LIBVISUAL_LIBS) $(GSTREAMER_LIBS) + + actor_gstreamer_la_SOURCES = actor_gstreamer.c + +diff -Nur libvisual-plugins-0.4.0/plugins/actor/infinite/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/infinite/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/infinite/Makefile.am 2006-02-23 20:03:27.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/infinite/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_infinite.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_infinite_la_LDFLAGS = -module -avoid-version ++actor_infinite_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_infinite_la_SOURCES = compute.c compute.h \ + display.c display.h \ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/jakdaw/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/jakdaw/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/jakdaw/Makefile.am 2006-02-23 20:03:28.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/jakdaw/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_jakdaw.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_jakdaw_la_LDFLAGS = -module -avoid-version ++actor_jakdaw_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_jakdaw_la_SOURCES = actor_jakdaw.c \ + actor_jakdaw.h \ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/JESS/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/JESS/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/JESS/Makefile.am 2006-02-23 20:03:24.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/JESS/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_JESS.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_JESS_la_LDFLAGS = -module -avoid-version ++actor_JESS_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_JESS_la_SOURCES = analyser.c analyser.h analyser_struct.h\ + distorsion.c distorsion.h\ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_analyzer/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/lv_analyzer/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/lv_analyzer/Makefile.am 2006-02-23 20:03:28.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_analyzer/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,14 +2,13 @@ + + actor_plugin_LTLIBRARIES = actor_lv_analyzer.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) \ + -I$(top_srcdir) + + actor_lv_analyzer_la_LDFLAGS = -module -avoid-version ++actor_lv_analyzer_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_lv_analyzer_la_SOURCES = actor_lv_analyzer.c + +diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_gltest/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/lv_gltest/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/lv_gltest/Makefile.am 2006-02-24 22:24:49.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_gltest/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -4,5 +4,5 @@ + + actor_lv_gltest_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS) + actor_lv_gltest_la_LDFLAGS = -module -avoid-version +-actor_lv_gltest_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU ++actor_lv_gltest_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU + actor_lv_gltest_la_SOURCES = actor_lv_gltest.c +diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_scope/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/lv_scope/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/lv_scope/Makefile.am 2006-02-23 20:03:29.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_scope/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_lv_scope.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_lv_scope_la_LDFLAGS = -module -avoid-version ++actor_lv_scope_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_lv_scope_la_SOURCES = actor_lv_scope.c + +diff -Nur libvisual-plugins-0.4.0/plugins/actor/madspin/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/madspin/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/madspin/Makefile.am 2006-02-24 22:24:49.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/madspin/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -10,5 +10,5 @@ + + actor_madspin_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) -DSTAR_DIR=\""$(imagesdir)/"\" + actor_madspin_la_LDFLAGS = -module -avoid-version +-actor_madspin_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL ++actor_madspin_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL + actor_madspin_la_SOURCES = madspin.c +diff -Nur libvisual-plugins-0.4.0/plugins/actor/nastyfft/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/nastyfft/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/nastyfft/Makefile.am 2006-02-24 22:24:50.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/nastyfft/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -4,5 +4,5 @@ + + actor_nastyfft_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS) + actor_nastyfft_la_LDFLAGS = -module -avoid-version +-actor_nastyfft_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU ++actor_nastyfft_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU + actor_nastyfft_la_SOURCES = actor_nastyfft.c +diff -Nur libvisual-plugins-0.4.0/plugins/actor/oinksie/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/oinksie/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/oinksie/Makefile.am 2006-02-23 20:03:31.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/oinksie/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + actor_plugin_LTLIBRARIES = actor_oinksie.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + actor_oinksie_la_LDFLAGS = -module -avoid-version ++actor_oinksie_la_LIBADD = $(LIBVISUAL_LIBS) + + actor_oinksie_la_SOURCES = actor_oinksie.c\ + oinksie.c oinksie.h\ +diff -Nur libvisual-plugins-0.4.0/plugins/actor/pseudotoad_flower/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/pseudotoad_flower/Makefile.am +--- libvisual-plugins-0.4.0/plugins/actor/pseudotoad_flower/Makefile.am 2006-03-09 00:06:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/pseudotoad_flower/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -4,7 +4,7 @@ + + actor_flower_la_LDFLAGS = -module -avoid-version + actor_flower_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS) +-actor_flower_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU ++actor_flower_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU + + actor_flower_la_SOURCES = \ + actor_flower.c \ +diff -Nur libvisual-plugins-0.4.0/plugins/input/alsa/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/alsa/Makefile.am +--- libvisual-plugins-0.4.0/plugins/input/alsa/Makefile.am 2006-02-23 20:03:35.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/alsa/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,12 +2,11 @@ + + input_plugin_LTLIBRARIES = input_alsa.la + +-LIBS += $(ALSA_LIBS) $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(ALSA_CFLAGS) $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) -I$(top_builddir) + + input_alsa_la_LDFLAGS = -module -avoid-version ++input_alsa_la_LIBADD = $(ALSA_LIBS) $(LIBVISUAL_LIBS) + + input_alsa_la_SOURCES = input_alsa.c +diff -Nur libvisual-plugins-0.4.0/plugins/input/debug/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/debug/Makefile.am +--- libvisual-plugins-0.4.0/plugins/input/debug/Makefile.am 2006-02-23 20:03:36.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/debug/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,11 +2,10 @@ + + input_plugin_LTLIBRARIES = input_debug.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) -I$(top_builddir) + + input_debug_la_LDFLAGS = -module -avoid-version ++input_debug_la_LIBADD = $(LIBVISUAL_LIBS) + input_debug_la_SOURCES = input_debug.c +diff -Nur libvisual-plugins-0.4.0/plugins/input/esd/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/esd/Makefile.am +--- libvisual-plugins-0.4.0/plugins/input/esd/Makefile.am 2006-02-23 20:03:37.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/esd/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,11 +2,10 @@ + + input_plugin_LTLIBRARIES = input_esd.la + +-LIBS += $(LIBESD_LIBS) $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBESD_CFLAGS) $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + input_esd_la_LDFLAGS = -module -avoid-version ++input_esd_la_LIBADD = $(LIBESD_LIBS) $(LIBVISUAL_LIBS) + input_esd_la_SOURCES = input_esd.c +diff -Nur libvisual-plugins-0.4.0/plugins/input/jack/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/jack/Makefile.am +--- libvisual-plugins-0.4.0/plugins/input/jack/Makefile.am 2006-02-23 20:03:37.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/jack/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,13 +2,12 @@ + + input_plugin_LTLIBRARIES = input_jack.la + +-LIBS += $(LIBJACK_LIBS) $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBJACK_CFLAGS) $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + input_jack_la_LDFLAGS = -module -avoid-version ++input_jack_la_LIBADD = $(LIBJACK_LIBS) $(LIBVISUAL_LIBS) + + input_jack_la_SOURCES = input_jack.c + +diff -Nur libvisual-plugins-0.4.0/plugins/input/mplayer/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/mplayer/Makefile.am +--- libvisual-plugins-0.4.0/plugins/input/mplayer/Makefile.am 2006-02-23 20:03:38.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/mplayer/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,12 +2,11 @@ + + input_plugin_LTLIBRARIES = input_mplayer.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + input_mplayer_la_LDFLAGS = -module -avoid-version ++input_mplayer_la_LIBADD = $(LIBVISUAL_LIBS) + input_mplayer_la_SOURCES = input_mplayer.c + +diff -Nur libvisual-plugins-0.4.0/plugins/morph/alphablend/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/alphablend/Makefile.am +--- libvisual-plugins-0.4.0/plugins/morph/alphablend/Makefile.am 2006-02-23 20:03:38.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/alphablend/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,11 +2,10 @@ + + morph_plugin_LTLIBRARIES = morph_alphablend.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + morph_alphablend_la_LDFLAGS = -module -avoid-version ++morph_alphablend_la_LIBADD = $(LIBVISUAL_LIBS) + morph_alphablend_la_SOURCES = morph_alphablend.c +diff -Nur libvisual-plugins-0.4.0/plugins/morph/flash/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/flash/Makefile.am +--- libvisual-plugins-0.4.0/plugins/morph/flash/Makefile.am 2006-02-23 20:03:39.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/flash/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,11 +2,10 @@ + + morph_plugin_LTLIBRARIES = morph_flash.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + morph_flash_la_LDFLAGS = -module -avoid-version ++morph_flash_la_LIBADD = $(LIBVISUAL_LIBS) + morph_flash_la_SOURCES = morph_flash.c +diff -Nur libvisual-plugins-0.4.0/plugins/morph/slide/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/slide/Makefile.am +--- libvisual-plugins-0.4.0/plugins/morph/slide/Makefile.am 2006-02-23 20:03:39.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/slide/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,11 +2,10 @@ + + morph_plugin_LTLIBRARIES = morph_slide.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + morph_slide_la_LDFLAGS = -module -avoid-version ++morph_slide_la_LIBADD = $(LIBVISUAL_LIBS) + morph_slide_la_SOURCES = morph_slide.c +diff -Nur libvisual-plugins-0.4.0/plugins/morph/tentacle/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/tentacle/Makefile.am +--- libvisual-plugins-0.4.0/plugins/morph/tentacle/Makefile.am 2006-02-23 20:03:39.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/tentacle/Makefile.am 2007-07-04 18:19:43.000000000 +1000 +@@ -2,11 +2,10 @@ + + morph_plugin_LTLIBRARIES = morph_tentacle.la + +-LIBS += $(LIBVISUAL_LIBS) +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) + + INCLUDES = $(all_includes) -I$(top_srcdir) + + morph_tentacle_la_LDFLAGS = -module -avoid-version ++morph_tentacle_la_LIBADD = $(LIBVISUAL_LIBS) + morph_tentacle_la_SOURCES = morph_tentacle.c diff --git a/abs/core/libvisual-plugins/04_lv_analyzer_build_fix.patch b/abs/core/libvisual-plugins/04_lv_analyzer_build_fix.patch new file mode 100644 index 0000000..1fc5f7f --- /dev/null +++ b/abs/core/libvisual-plugins/04_lv_analyzer_build_fix.patch @@ -0,0 +1,12 @@ +diff -Nur libvisual-plugins-0.4.0/configure.ac libvisual-plugins-0.4.0.new/configure.ac +--- libvisual-plugins-0.4.0/configure.ac 2006-03-17 03:50:41.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/configure.ac 2007-07-04 18:22:38.000000000 +1000 +@@ -361,7 +361,7 @@ + [ENABLE_ANALYZER=$enableval], + [ENABLE_ANALYZER=yes]) + +-if test "$ENABLE_ANALYZER" = xyes; then ++if test "$ENABLE_ANALYZER" = "yes"; then + build_actor_plugins="$build_actor_plugins lv_analyzer" + fi + diff --git a/abs/core/libvisual-plugins/05_fix_po.patch b/abs/core/libvisual-plugins/05_fix_po.patch new file mode 100644 index 0000000..a5413ef --- /dev/null +++ b/abs/core/libvisual-plugins/05_fix_po.patch @@ -0,0 +1,127 @@ +diff -Nur libvisual-plugins-0.4.0/po/Makefile.in.in libvisual-plugins-0.4.0.new/po/Makefile.in.in +--- libvisual-plugins-0.4.0/po/Makefile.in.in 2006-03-21 05:48:28.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/po/Makefile.in.in 2007-07-09 21:50:13.000000000 +1000 +@@ -28,7 +28,7 @@ + + INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKINSTALLDIRS = mkinstalldirs + mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + + GMSGFMT = @GMSGFMT@ +diff -Nur libvisual-plugins-0.4.0/po/mkinstalldirs libvisual-plugins-0.4.0.new/po/mkinstalldirs +--- libvisual-plugins-0.4.0/po/mkinstalldirs 1970-01-01 10:00:00.000000000 +1000 ++++ libvisual-plugins-0.4.0.new/po/mkinstalldirs 2006-03-21 05:48:42.000000000 +1100 +@@ -0,0 +1,111 @@ ++#! /bin/sh ++# mkinstalldirs --- make directory hierarchy ++# Author: Noah Friedman ++# Created: 1993-05-16 ++# Public domain ++ ++errstatus=0 ++dirmode="" ++ ++usage="\ ++Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." ++ ++# process command line arguments ++while test $# -gt 0 ; do ++ case $1 in ++ -h | --help | --h*) # -h for help ++ echo "$usage" 1>&2 ++ exit 0 ++ ;; ++ -m) # -m PERM arg ++ shift ++ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } ++ dirmode=$1 ++ shift ++ ;; ++ --) # stop option processing ++ shift ++ break ++ ;; ++ -*) # unknown option ++ echo "$usage" 1>&2 ++ exit 1 ++ ;; ++ *) # first non-opt arg ++ break ++ ;; ++ esac ++done ++ ++for file ++do ++ if test -d "$file"; then ++ shift ++ else ++ break ++ fi ++done ++ ++case $# in ++ 0) exit 0 ;; ++esac ++ ++case $dirmode in ++ '') ++ if mkdir -p -- . 2>/dev/null; then ++ echo "mkdir -p -- $*" ++ exec mkdir -p -- "$@" ++ fi ++ ;; ++ *) ++ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then ++ echo "mkdir -m $dirmode -p -- $*" ++ exec mkdir -m "$dirmode" -p -- "$@" ++ fi ++ ;; ++esac ++ ++for file ++do ++ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` ++ shift ++ ++ pathcomp= ++ for d ++ do ++ pathcomp="$pathcomp$d" ++ case $pathcomp in ++ -*) pathcomp=./$pathcomp ;; ++ esac ++ ++ if test ! -d "$pathcomp"; then ++ echo "mkdir $pathcomp" ++ ++ mkdir "$pathcomp" || lasterr=$? ++ ++ if test ! -d "$pathcomp"; then ++ errstatus=$lasterr ++ else ++ if test ! -z "$dirmode"; then ++ echo "chmod $dirmode $pathcomp" ++ lasterr="" ++ chmod "$dirmode" "$pathcomp" || lasterr=$? ++ ++ if test ! -z "$lasterr"; then ++ errstatus=$lasterr ++ fi ++ fi ++ fi ++ fi ++ ++ pathcomp="$pathcomp/" ++ done ++done ++ ++exit $errstatus ++ ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# End: ++# mkinstalldirs ends here diff --git a/abs/core/libvisual-plugins/60_no-const-vispluginfo-in-nastyfft.patch b/abs/core/libvisual-plugins/60_no-const-vispluginfo-in-nastyfft.patch new file mode 100644 index 0000000..8e54e02 --- /dev/null +++ b/abs/core/libvisual-plugins/60_no-const-vispluginfo-in-nastyfft.patch @@ -0,0 +1,18 @@ +The static VisPluginInfo in nastyfft was declared as const, but libvisual write +to its refcount when it visual_object_unref()s it (nasty!). This is broken at +various levels: libvisual shouldn't be writing to this static plugin which is +allocated by a dlopen()ed plugin, and it should also honor the "const +VisPluginInfo" API... Anyway, nastyfft was the only occurrence and this fixes +the crash for now; LP: #287448. + +--- libvisual-plugins-0.4.0.dfsg.1.orig/plugins/actor/nastyfft/actor_nastyfft.c ++++ libvisual-plugins-0.4.0.dfsg.1/plugins/actor/nastyfft/actor_nastyfft.c +@@ -80,7 +80,7 @@ + .vidoptions.depth = VISUAL_VIDEO_DEPTH_GL + }}; + +- static const VisPluginInfo info[] = {{ ++ static VisPluginInfo info[] = {{ + .type = VISUAL_PLUGIN_TYPE_ACTOR, + + .plugname = N_("nastyfft"), diff --git a/abs/core/libvisual-plugins/90_autoreconf.patch b/abs/core/libvisual-plugins/90_autoreconf.patch new file mode 100644 index 0000000..c292a89 --- /dev/null +++ b/abs/core/libvisual-plugins/90_autoreconf.patch @@ -0,0 +1,60483 @@ +diff -Nur libvisual-plugins-0.4.0/aclocal.m4 libvisual-plugins-0.4.0.new/aclocal.m4 +--- libvisual-plugins-0.4.0/aclocal.m4 2006-03-21 05:48:31.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/aclocal.m4 2007-10-10 23:28:44.000000000 +1000 +@@ -1,7 +1,7 @@ +-# generated automatically by aclocal 1.7.9 -*- Autoconf -*- ++# generated automatically by aclocal 1.10 -*- Autoconf -*- + +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -11,10003 +11,9769 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-# Do all the work for Automake. -*- Autoconf -*- +- +-# This macro actually does too much some checks are only needed if +-# your package does certain things. But this isn't really a big deal. +- +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. +- +-# 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, 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. ++m4_if(m4_PACKAGE_VERSION, [2.61],, ++[m4_fatal([this file was generated for autoconf 2.61. ++You have another version of autoconf. If you want to use that, ++you should regenerate the build system entirely.], [63])]) + +-# 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. ++dnl Configure Paths for Alsa ++dnl Some modifications by Richard Boulton ++dnl Christopher Lansdown ++dnl Jaroslav Kysela ++dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $ ++dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) ++dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. ++dnl enables arguments --with-alsa-prefix= ++dnl --with-alsa-enc-prefix= ++dnl --disable-alsatest ++dnl ++dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, ++dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. ++dnl ++AC_DEFUN([AM_PATH_ALSA], ++[dnl Save the original CFLAGS, LDFLAGS, and LIBS ++alsa_save_CFLAGS="$CFLAGS" ++alsa_save_LDFLAGS="$LDFLAGS" ++alsa_save_LIBS="$LIBS" ++alsa_found=yes + +-# serial 10 ++dnl ++dnl Get the cflags and libraries for alsa ++dnl ++AC_ARG_WITH(alsa-prefix, ++[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], ++[alsa_prefix="$withval"], [alsa_prefix=""]) + +-AC_PREREQ([2.54]) ++AC_ARG_WITH(alsa-inc-prefix, ++[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], ++[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + +-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +-# the ones we care about. +-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++dnl FIXME: this is not yet implemented ++AC_ARG_ENABLE(alsatest, ++[ --disable-alsatest Do not try to compile and run a test Alsa program], ++[enable_alsatest="$enableval"], ++[enable_alsatest=yes]) + +-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +-# AM_INIT_AUTOMAKE([OPTIONS]) +-# ----------------------------------------------- +-# The call with PACKAGE and VERSION arguments is the old style +-# call (pre autoconf-2.50), which is being phased out. PACKAGE +-# and VERSION should now be passed to AC_INIT and removed from +-# the call to AM_INIT_AUTOMAKE. +-# We support both call styles for the transition. After +-# the next Automake release, Autoconf can make the AC_INIT +-# arguments mandatory, and then we can depend on a new Autoconf +-# release and drop the old call support. +-AC_DEFUN([AM_INIT_AUTOMAKE], +-[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +- AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++dnl Add any special include directories ++AC_MSG_CHECKING(for ALSA CFLAGS) ++if test "$alsa_inc_prefix" != "" ; then ++ ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" ++ CFLAGS="$CFLAGS -I$alsa_inc_prefix" + fi ++AC_MSG_RESULT($ALSA_CFLAGS) ++CFLAGS="$alsa_save_CFLAGS" + +-# test whether we have cygpath +-if test -z "$CYGPATH_W"; then +- if (cygpath --version) >/dev/null 2>/dev/null; then +- CYGPATH_W='cygpath -w' +- else +- CYGPATH_W=echo +- fi ++dnl add any special lib dirs ++AC_MSG_CHECKING(for ALSA LDFLAGS) ++if test "$alsa_prefix" != "" ; then ++ ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" ++ LDFLAGS="$LDFLAGS $ALSA_LIBS" + fi +-AC_SUBST([CYGPATH_W]) +- +-# Define the identity of the package. +-dnl Distinguish between old-style and new-style calls. +-m4_ifval([$2], +-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +- AC_SUBST([PACKAGE], [$1])dnl +- AC_SUBST([VERSION], [$2])], +-[_AM_SET_OPTIONS([$1])dnl +- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl +- +-_AM_IF_OPTION([no-define],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +- +-# Some tools Automake needs. +-AC_REQUIRE([AM_SANITY_CHECK])dnl +-AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +-AM_MISSING_PROG(AUTOCONF, autoconf) +-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +-AM_MISSING_PROG(AUTOHEADER, autoheader) +-AM_MISSING_PROG(MAKEINFO, makeinfo) +-AM_MISSING_PROG(AMTAR, tar) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([AC_PROG_MAKE_SET])dnl +-AC_REQUIRE([AM_SET_LEADING_DOT])dnl +- +-_AM_IF_OPTION([no-dependencies],, +-[AC_PROVIDE_IFELSE([AC_PROG_CC], +- [_AM_DEPENDENCIES(CC)], +- [define([AC_PROG_CC], +- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +-AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [_AM_DEPENDENCIES(CXX)], +- [define([AC_PROG_CXX], +- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +-]) +-]) +- +- +-# When config.status generates a header, we must update the stamp-h file. +-# This file resides in the same directory as the config header +-# that is generated. The stamp files are numbered to have different names. +- +-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +-# loop where config.status creates the headers, so we can generate +-# our stamp files there. +-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +-[# Compute $1's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $1 | $1:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +-# Copyright 2002 Free Software Foundation, Inc. ++dnl add the alsa library ++ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" ++LIBS="$ALSA_LIBS $LIBS" ++AC_MSG_RESULT($ALSA_LIBS) + +-# 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, or (at your option) +-# any later version. ++dnl Check for a working version of libasound that is of the right version. ++min_alsa_version=ifelse([$1], ,0.1.1,$1) ++AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) ++no_alsa="" ++ alsa_min_major_version=`echo $min_alsa_version | \ ++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` ++ alsa_min_minor_version=`echo $min_alsa_version | \ ++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` ++ alsa_min_micro_version=`echo $min_alsa_version | \ ++ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + +-# 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. ++AC_LANG_SAVE ++AC_LANG_C ++AC_TRY_COMPILE([ ++#include ++], [ ++/* ensure backward compatibility */ ++#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) ++#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR ++#endif ++#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) ++#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR ++#endif ++#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) ++#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR ++#endif + +-# 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 ++# if(SND_LIB_MAJOR > $alsa_min_major_version) ++ exit(0); ++# else ++# if(SND_LIB_MAJOR < $alsa_min_major_version) ++# error not present ++# endif + +-# AM_AUTOMAKE_VERSION(VERSION) +-# ---------------------------- +-# Automake X.Y traces this macro to ensure aclocal.m4 has been +-# generated from the m4 files accompanying Automake X.Y. +-AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) ++# if(SND_LIB_MINOR > $alsa_min_minor_version) ++ exit(0); ++# else ++# if(SND_LIB_MINOR < $alsa_min_minor_version) ++# error not present ++# endif + +-# AM_SET_CURRENT_AUTOMAKE_VERSION +-# ------------------------------- +-# Call AM_AUTOMAKE_VERSION so it can be traced. +-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.7.9])]) ++# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) ++# error not present ++# endif ++# endif ++# endif ++exit(0); ++], ++ [AC_MSG_RESULT(found.)], ++ [AC_MSG_RESULT(not present.) ++ ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) ++ alsa_found=no] ++) ++AC_LANG_RESTORE + +-# Helper functions for option handling. -*- Autoconf -*- ++dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. ++if test "x$enable_alsatest" = "xyes"; then ++AC_CHECK_LIB([asound], [snd_ctl_open],, ++ [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) ++ alsa_found=no] ++) ++fi + +-# Copyright 2001, 2002 Free Software Foundation, Inc. ++LDFLAGS="$alsa_save_LDFLAGS" ++LIBS="$alsa_save_LIBS" + +-# 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, or (at your option) +-# any later version. ++if test "x$alsa_found" = "xyes" ; then ++ ifelse([$2], , :, [$2]) ++else ++ ALSA_CFLAGS="" ++ ALSA_LIBS="" ++ ifelse([$3], , :, [$3]) ++fi + +-# 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. ++dnl That should be it. Now just export out symbols: ++AC_SUBST(ALSA_CFLAGS) ++AC_SUBST(ALSA_LIBS) ++]) + +-# 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. + +-# serial 2 ++# gettext.m4 serial 59 (gettext-0.16.1) ++dnl Copyright (C) 1995-2006 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. + +-# _AM_MANGLE_OPTION(NAME) +-# ----------------------- +-AC_DEFUN([_AM_MANGLE_OPTION], +-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2006. + +-# _AM_SET_OPTION(NAME) +-# ------------------------------ +-# Set option NAME. Presently that only means defining a flag for this option. +-AC_DEFUN([_AM_SET_OPTION], +-[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ++dnl Macro to add for using GNU gettext. + +-# _AM_SET_OPTIONS(OPTIONS) +-# ---------------------------------- +-# OPTIONS is a space-separated list of Automake options. +-AC_DEFUN([_AM_SET_OPTIONS], +-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +- +-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +-# ------------------------------------------- +-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +-AC_DEFUN([_AM_IF_OPTION], +-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +- +-# +-# Check to make sure that the build environment is sane. +-# ++dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). ++dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The ++dnl default (if it is not specified or empty) is 'no-libtool'. ++dnl INTLSYMBOL should be 'external' for packages with no intl directory, ++dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. ++dnl If INTLSYMBOL is 'use-libtool', then a libtool library ++dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, ++dnl depending on --{enable,disable}-{shared,static} and on the presence of ++dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library ++dnl $(top_builddir)/intl/libintl.a will be created. ++dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext ++dnl implementations (in libc or libintl) without the ngettext() function ++dnl will be ignored. If NEEDSYMBOL is specified and is ++dnl 'need-formatstring-macros', then GNU gettext implementations that don't ++dnl support the ISO C 99 formatstring macros will be ignored. ++dnl INTLDIR is used to find the intl libraries. If empty, ++dnl the value `$(top_builddir)/intl/' is used. ++dnl ++dnl The result of the configuration is one of three cases: ++dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled ++dnl and used. ++dnl Catalog format: GNU --> install in $(datadir) ++dnl Catalog extension: .mo after installation, .gmo in source tree ++dnl 2) GNU gettext has been found in the system's C library. ++dnl Catalog format: GNU --> install in $(datadir) ++dnl Catalog extension: .mo after installation, .gmo in source tree ++dnl 3) No internationalization, always use English msgid. ++dnl Catalog format: none ++dnl Catalog extension: none ++dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. ++dnl The use of .gmo is historical (it was needed to avoid overwriting the ++dnl GNU format catalogs when building on a platform with an X/Open gettext), ++dnl but we keep it in order not to force irrelevant filename changes on the ++dnl maintainers. ++dnl ++AC_DEFUN([AM_GNU_GETTEXT], ++[ ++ dnl Argument checking. ++ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , ++ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ++])])])])]) ++ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , ++ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ++])])])]) ++ define([gt_included_intl], ++ ifelse([$1], [external], ++ ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), ++ [yes])) ++ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) ++ gt_NEEDS_INIT ++ AM_GNU_GETTEXT_NEED([$2]) + +-# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ++ AC_REQUIRE([AM_PO_SUBDIRS])dnl ++ ifelse(gt_included_intl, yes, [ ++ AC_REQUIRE([AM_INTL_SUBDIR])dnl ++ ]) + +-# 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, or (at your option) +-# any later version. ++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) + +-# 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. ++ dnl Sometimes libintl requires libiconv, so first search for libiconv. ++ dnl Ideally we would do this search only after the ++ dnl if test "$USE_NLS" = "yes"; then ++ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then ++ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT ++ dnl the configure script would need to contain the same shell code ++ dnl again, outside any 'if'. There are two solutions: ++ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. ++ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. ++ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not ++ dnl documented, we avoid it. ++ ifelse(gt_included_intl, yes, , [ ++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ++ ]) + +-# 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. ++ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. ++ gt_INTL_MACOSX + +-# serial 3 ++ dnl Set USE_NLS. ++ AC_REQUIRE([AM_NLS]) + +-# AM_SANITY_CHECK +-# --------------- +-AC_DEFUN([AM_SANITY_CHECK], +-[AC_MSG_CHECKING([whether build environment is sane]) +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$[*]" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$[*]" != "X $srcdir/configure conftest.file" \ +- && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ ifelse(gt_included_intl, yes, [ ++ BUILD_INCLUDED_LIBINTL=no ++ USE_INCLUDED_LIBINTL=no ++ ]) ++ LIBINTL= ++ LTLIBINTL= ++ POSUB= + +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +-alias in your environment]) +- fi ++ dnl Add a version number to the cache macros. ++ case " $gt_needs " in ++ *" need-formatstring-macros "*) gt_api_version=3 ;; ++ *" need-ngettext "*) gt_api_version=2 ;; ++ *) gt_api_version=1 ;; ++ esac ++ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" ++ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + +- test "$[2]" = conftest.file +- ) +-then +- # Ok. +- : +-else +- AC_MSG_ERROR([newly created file is older than distributed files! +-Check your system clock]) +-fi +-AC_MSG_RESULT(yes)]) ++ dnl If we use NLS figure out what method ++ if test "$USE_NLS" = "yes"; then ++ gt_use_preinstalled_gnugettext=no ++ ifelse(gt_included_intl, yes, [ ++ AC_MSG_CHECKING([whether included gettext is requested]) ++ AC_ARG_WITH(included-gettext, ++ [ --with-included-gettext use the GNU gettext library included here], ++ nls_cv_force_use_gnu_gettext=$withval, ++ nls_cv_force_use_gnu_gettext=no) ++ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + +-# -*- Autoconf -*- ++ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" ++ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ++ ]) ++ dnl User does not insist on using GNU NLS library. Figure out what ++ dnl to use. If GNU gettext is available we use this. Else we have ++ dnl to fall back to GNU NLS library. + ++ if test $gt_api_version -ge 3; then ++ gt_revision_test_code=' ++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) ++#endif ++changequote(,)dnl ++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ++changequote([,])dnl ++' ++ else ++ gt_revision_test_code= ++ fi ++ if test $gt_api_version -ge 2; then ++ gt_expression_test_code=' + * ngettext ("", "", 0)' ++ else ++ gt_expression_test_code= ++ fi + +-# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. ++ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], ++ [AC_TRY_LINK([#include ++$gt_revision_test_code ++extern int _nl_msg_cat_cntr; ++extern int *_nl_domain_bindings;], ++ [bindtextdomain ("", ""); ++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], ++ [eval "$gt_func_gnugettext_libc=yes"], ++ [eval "$gt_func_gnugettext_libc=no"])]) + +-# 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, or (at your option) +-# any later version. ++ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then ++ dnl Sometimes libintl requires libiconv, so first search for libiconv. ++ ifelse(gt_included_intl, yes, , [ ++ AM_ICONV_LINK ++ ]) ++ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL ++ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) ++ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL ++ dnl even if libiconv doesn't exist. ++ AC_LIB_LINKFLAGS_BODY([intl]) ++ AC_CACHE_CHECK([for GNU gettext in libintl], ++ [$gt_func_gnugettext_libintl], ++ [gt_save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS="$CPPFLAGS $INCINTL" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBINTL" ++ dnl Now see whether libintl exists and does not depend on libiconv. ++ AC_TRY_LINK([#include ++$gt_revision_test_code ++extern int _nl_msg_cat_cntr; ++extern ++#ifdef __cplusplus ++"C" ++#endif ++const char *_nl_expand_alias (const char *);], ++ [bindtextdomain ("", ""); ++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], ++ [eval "$gt_func_gnugettext_libintl=yes"], ++ [eval "$gt_func_gnugettext_libintl=no"]) ++ dnl Now see whether libintl exists and depends on libiconv. ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then ++ LIBS="$LIBS $LIBICONV" ++ AC_TRY_LINK([#include ++$gt_revision_test_code ++extern int _nl_msg_cat_cntr; ++extern ++#ifdef __cplusplus ++"C" ++#endif ++const char *_nl_expand_alias (const char *);], ++ [bindtextdomain ("", ""); ++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], ++ [LIBINTL="$LIBINTL $LIBICONV" ++ LTLIBINTL="$LTLIBINTL $LTLIBICONV" ++ eval "$gt_func_gnugettext_libintl=yes" ++ ]) ++ fi ++ CPPFLAGS="$gt_save_CPPFLAGS" ++ LIBS="$gt_save_LIBS"]) ++ fi + +-# 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. ++ dnl If an already present or preinstalled GNU gettext() is found, ++ dnl use it. But if this macro is used in GNU gettext, and GNU ++ dnl gettext is already preinstalled in libintl, we update this ++ dnl libintl. (Cf. the install rule in intl/Makefile.in.) ++ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ ++ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ ++ && test "$PACKAGE" != gettext-runtime \ ++ && test "$PACKAGE" != gettext-tools; }; then ++ gt_use_preinstalled_gnugettext=yes ++ else ++ dnl Reset the values set by searching for libintl. ++ LIBINTL= ++ LTLIBINTL= ++ INCINTL= ++ fi + +-# 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. ++ ifelse(gt_included_intl, yes, [ ++ if test "$gt_use_preinstalled_gnugettext" != "yes"; then ++ dnl GNU gettext is not found in the C library. ++ dnl Fall back on included GNU gettext library. ++ nls_cv_use_gnu_gettext=yes ++ fi ++ fi + +-# serial 3 ++ if test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Mark actions used to generate GNU NLS library. ++ BUILD_INCLUDED_LIBINTL=yes ++ USE_INCLUDED_LIBINTL=yes ++ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" ++ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" ++ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` ++ fi + +-# AM_MISSING_PROG(NAME, PROGRAM) +-# ------------------------------ +-AC_DEFUN([AM_MISSING_PROG], +-[AC_REQUIRE([AM_MISSING_HAS_RUN]) +-$1=${$1-"${am_missing_run}$2"} +-AC_SUBST($1)]) ++ CATOBJEXT= ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Mark actions to use GNU gettext tools. ++ CATOBJEXT=.gmo ++ fi ++ ]) + ++ if test -n "$INTL_MACOSX_LIBS"; then ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ dnl Some extra flags are needed during linking. ++ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" ++ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" ++ fi ++ fi + +-# AM_MISSING_HAS_RUN +-# ------------------ +-# Define MISSING if not defined so far and test if it supports --run. +-# If it does, set am_missing_run to use it, otherwise, to nothing. +-AC_DEFUN([AM_MISSING_HAS_RUN], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- AC_MSG_WARN([`missing' script is too old or missing]) +-fi +-]) ++ if test "$gt_use_preinstalled_gnugettext" = "yes" \ ++ || test "$nls_cv_use_gnu_gettext" = "yes"; then ++ AC_DEFINE(ENABLE_NLS, 1, ++ [Define to 1 if translation of program messages to the user's native language ++ is requested.]) ++ else ++ USE_NLS=no ++ fi ++ fi + +-# AM_AUX_DIR_EXPAND ++ AC_MSG_CHECKING([whether to use NLS]) ++ AC_MSG_RESULT([$USE_NLS]) ++ if test "$USE_NLS" = "yes"; then ++ AC_MSG_CHECKING([where the gettext function comes from]) ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then ++ gt_source="external libintl" ++ else ++ gt_source="libc" ++ fi ++ else ++ gt_source="included intl directory" ++ fi ++ AC_MSG_RESULT([$gt_source]) ++ fi + +-# Copyright 2001 Free Software Foundation, Inc. ++ if test "$USE_NLS" = "yes"; then + +-# 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, or (at your option) +-# any later version. ++ if test "$gt_use_preinstalled_gnugettext" = "yes"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then ++ AC_MSG_CHECKING([how to link with libintl]) ++ AC_MSG_RESULT([$LIBINTL]) ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) ++ fi + +-# 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. ++ dnl For backward compatibility. Some packages may be using this. ++ AC_DEFINE(HAVE_GETTEXT, 1, ++ [Define if the GNU gettext() function is already present or preinstalled.]) ++ AC_DEFINE(HAVE_DCGETTEXT, 1, ++ [Define if the GNU dcgettext() function is already present or preinstalled.]) ++ fi + +-# 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. ++ dnl We need to process the po/ directory. ++ POSUB=po ++ fi + +-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +-# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +-# +-# Of course, Automake must honor this variable whenever it calls a +-# tool from the auxiliary directory. The problem is that $srcdir (and +-# therefore $ac_aux_dir as well) can be either absolute or relative, +-# depending on how configure is run. This is pretty annoying, since +-# it makes $ac_aux_dir quite unusable in subdirectories: in the top +-# source directory, any form will work fine, but in subdirectories a +-# relative path needs to be adjusted first. +-# +-# $ac_aux_dir/missing +-# fails when called from a subdirectory if $ac_aux_dir is relative +-# $top_srcdir/$ac_aux_dir/missing +-# fails if $ac_aux_dir is absolute, +-# fails when called from a subdirectory in a VPATH build with +-# a relative $ac_aux_dir +-# +-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +-# are both prefixed by $srcdir. In an in-source build this is usually +-# harmless because $srcdir is `.', but things will broke when you +-# start a VPATH build or use an absolute $srcdir. +-# +-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +-# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +-# and then we would define $MISSING as +-# MISSING="\${SHELL} $am_aux_dir/missing" +-# This will work as long as MISSING is not called from configure, because +-# unfortunately $(top_srcdir) has no meaning in configure. +-# However there are other variables, like CC, which are often used in +-# configure, and could therefore not use this "fixed" $ac_aux_dir. +-# +-# Another solution, used here, is to always expand $ac_aux_dir to an +-# absolute PATH. The drawback is that using absolute paths prevent a +-# configured tree to be moved without reconfiguration. ++ ifelse(gt_included_intl, yes, [ ++ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL ++ dnl to 'yes' because some of the testsuite requires it. ++ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then ++ BUILD_INCLUDED_LIBINTL=yes ++ fi + +-# Rely on autoconf to set up CDPATH properly. +-AC_PREREQ([2.50]) ++ dnl Make all variables we use known to autoconf. ++ AC_SUBST(BUILD_INCLUDED_LIBINTL) ++ AC_SUBST(USE_INCLUDED_LIBINTL) ++ AC_SUBST(CATOBJEXT) + +-AC_DEFUN([AM_AUX_DIR_EXPAND], [ +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +-]) ++ dnl For backward compatibility. Some configure.ins may be using this. ++ nls_cv_header_intl= ++ nls_cv_header_libgt= + +-# AM_PROG_INSTALL_SH +-# ------------------ +-# Define $install_sh. ++ dnl For backward compatibility. Some Makefiles may be using this. ++ DATADIRNAME=share ++ AC_SUBST(DATADIRNAME) + +-# Copyright 2001 Free Software Foundation, Inc. ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INSTOBJEXT=.mo ++ AC_SUBST(INSTOBJEXT) + +-# 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, or (at your option) +-# any later version. ++ dnl For backward compatibility. Some Makefiles may be using this. ++ GENCAT=gencat ++ AC_SUBST(GENCAT) + +-# 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. ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INTLOBJS= ++ if test "$USE_INCLUDED_LIBINTL" = yes; then ++ INTLOBJS="\$(GETTOBJS)" ++ fi ++ AC_SUBST(INTLOBJS) + +-# 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. ++ dnl Enable libtool support if the surrounding package wishes it. ++ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix ++ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ++ ]) + +-AC_DEFUN([AM_PROG_INSTALL_SH], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +-AC_SUBST(install_sh)]) ++ dnl For backward compatibility. Some Makefiles may be using this. ++ INTLLIBS="$LIBINTL" ++ AC_SUBST(INTLLIBS) + +-# AM_PROG_INSTALL_STRIP ++ dnl Make all documented variables known to autoconf. ++ AC_SUBST(LIBINTL) ++ AC_SUBST(LTLIBINTL) ++ AC_SUBST(POSUB) ++]) + +-# Copyright 2001 Free Software Foundation, Inc. + +-# 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, or (at your option) +-# any later version. ++dnl Checks for special options needed on MacOS X. ++dnl Defines INTL_MACOSX_LIBS. ++AC_DEFUN([gt_INTL_MACOSX], ++[ ++ dnl Check for API introduced in MacOS X 10.2. ++ AC_CACHE_CHECK([for CFPreferencesCopyAppValue], ++ gt_cv_func_CFPreferencesCopyAppValue, ++ [gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" ++ AC_TRY_LINK([#include ], ++ [CFPreferencesCopyAppValue(NULL, NULL)], ++ [gt_cv_func_CFPreferencesCopyAppValue=yes], ++ [gt_cv_func_CFPreferencesCopyAppValue=no]) ++ LIBS="$gt_save_LIBS"]) ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then ++ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, ++ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) ++ fi ++ dnl Check for API introduced in MacOS X 10.3. ++ AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, ++ [gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" ++ AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], ++ [gt_cv_func_CFLocaleCopyCurrent=yes], ++ [gt_cv_func_CFLocaleCopyCurrent=no]) ++ LIBS="$gt_save_LIBS"]) ++ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then ++ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, ++ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) ++ fi ++ INTL_MACOSX_LIBS= ++ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then ++ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" ++ fi ++ AC_SUBST([INTL_MACOSX_LIBS]) ++]) + +-# 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. ++dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. ++m4_define([gt_NEEDS_INIT], ++[ ++ m4_divert_text([DEFAULTS], [gt_needs=]) ++ m4_define([gt_NEEDS_INIT], []) ++]) + +-# One issue with vendor `install' (even GNU) is that you can't +-# specify the program used to strip binaries. This is especially +-# annoying in cross-compiling environments, where the build's strip +-# is unlikely to handle the host's binaries. +-# Fortunately install-sh will honor a STRIPPROG variable, so we +-# always use install-sh in `make install-strip', and initialize +-# STRIPPROG with the value of the STRIP variable (set by the user). +-AC_DEFUN([AM_PROG_INSTALL_STRIP], +-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +-if test "$cross_compiling" != no; then +- AC_CHECK_TOOL([STRIP], [strip], :) +-fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +-AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-# -*- Autoconf -*- +-# Copyright (C) 2003 Free Software Foundation, Inc. ++dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) ++AC_DEFUN([AM_GNU_GETTEXT_NEED], ++[ ++ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ++]) + +-# 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, 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. ++dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) ++AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + +-# 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. ++# iconv.m4 serial AM4 (gettext-0.11.3) ++dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# serial 1 ++dnl From Bruno Haible. + +-# Check whether the underlying file-system supports filenames +-# with a leading dot. For instance MS-DOS doesn't. +-AC_DEFUN([AM_SET_LEADING_DOT], +-[rm -rf .tst 2>/dev/null +-mkdir .tst 2>/dev/null +-if test -d .tst; then +- am__leading_dot=. +-else +- am__leading_dot=_ +-fi +-rmdir .tst 2>/dev/null +-AC_SUBST([am__leading_dot])]) ++AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], ++[ ++ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) + +-# serial 5 -*- Autoconf -*- ++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV ++ dnl accordingly. ++ AC_LIB_LINKFLAGS_BODY([iconv]) ++]) + +-# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ++AC_DEFUN([AM_ICONV_LINK], ++[ ++ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and ++ dnl those with the standalone portable GNU libiconv installed). + +-# 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, or (at your option) +-# any later version. ++ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV ++ dnl accordingly. ++ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + +-# 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. ++ dnl Add $INCICONV to CPPFLAGS before performing the following checks, ++ dnl because if the user has installed libiconv and not disabled its use ++ dnl via --without-libiconv-prefix, he wants to use it. The first ++ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. ++ am_save_CPPFLAGS="$CPPFLAGS" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + +-# 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. +- +- +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... +- +- +- +-# _AM_DEPENDENCIES(NAME) +-# ---------------------- +-# See how the compiler implements dependency checking. +-# NAME is "CC", "CXX", "GCJ", or "OBJC". +-# We try a few techniques and use that to set a single cache variable. +-# +-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +-# dependency, and given that the user is not expected to run this macro, +-# just rely on AC_PROG_CC. +-AC_DEFUN([_AM_DEPENDENCIES], +-[AC_REQUIRE([AM_SET_DEPDIR])dnl +-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +-AC_REQUIRE([AM_MAKE_INCLUDE])dnl +-AC_REQUIRE([AM_DEP_TRACK])dnl +- +-ifelse([$1], CC, [depcc="$CC" am_compiler_list=], +- [$1], CXX, [depcc="$CXX" am_compiler_list=], +- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], +- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], +- [depcc="$$1" am_compiler_list=]) +- +-AC_CACHE_CHECK([dependency style of $depcc], +- [am_cv_$1_dependencies_compiler_type], +-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +- # We make a subdir and do the tests there. Otherwise we can end up +- # making bogus files that we don't know about and never remove. For +- # instance it was reported that on HP-UX the gcc test will end up +- # making a dummy file named `D' -- because `-MD' means `put the output +- # in D'. +- mkdir conftest.dir +- # Copy depcomp to subdir because otherwise we won't find it if we're +- # using a relative directory. +- cp "$am_depcomp" conftest.dir +- cd conftest.dir +- # We will build objects and dependencies in a subdirectory because +- # it helps to detect inapplicable dependency modes. For instance +- # both Tru64's cc and ICC support -MD to output dependencies as a +- # side effect of compilation, but ICC will put the dependencies in +- # the current directory while Tru64 will put them in the object +- # directory. +- mkdir sub +- +- am_cv_$1_dependencies_compiler_type=none +- if test "$am_compiler_list" = ""; then +- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` +- fi +- for depmode in $am_compiler_list; do +- # Setup a source with many dependencies, because some compilers +- # like to wrap large dependency lists on column 80 (with \), and +- # we should not choose a depcomp mode which is confused by this. +- # +- # We need to recreate these files for each test, as the compiler may +- # overwrite some of them when testing with obscure command lines. +- # This happens at least with the AIX C compiler. +- : > sub/conftest.c +- for i in 1 2 3 4 5 6; do +- echo '#include "conftst'$i'.h"' >> sub/conftest.c +- : > sub/conftst$i.h +- done +- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +- +- case $depmode in +- nosideeffect) +- # after this tag, mechanisms are not by side-effect, so they'll +- # only be used when explicitly requested +- if test "x$enable_dependency_tracking" = xyes; then +- continue +- else +- break +- fi +- ;; +- none) break ;; +- esac +- # We check with `-c' and `-o' for the sake of the "dashmstdout" +- # mode. It turns out that the SunPro C++ compiler does not properly +- # handle `-M -o', and we need to detect this. +- if depmode=$depmode \ +- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ +- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ +- >/dev/null 2>conftest.err && +- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && +- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +- # icc doesn't choke on unknown options, it will just issue warnings +- # (even with -Werror). So we grep stderr for any message +- # that says an option was ignored. +- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else +- am_cv_$1_dependencies_compiler_type=$depmode +- break +- fi ++ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ ++ am_cv_func_iconv="no, consider installing GNU libiconv" ++ am_cv_lib_iconv=no ++ AC_TRY_LINK([#include ++#include ], ++ [iconv_t cd = iconv_open("",""); ++ iconv(cd,NULL,NULL,NULL,NULL); ++ iconv_close(cd);], ++ am_cv_func_iconv=yes) ++ if test "$am_cv_func_iconv" != yes; then ++ am_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIBICONV" ++ AC_TRY_LINK([#include ++#include ], ++ [iconv_t cd = iconv_open("",""); ++ iconv(cd,NULL,NULL,NULL,NULL); ++ iconv_close(cd);], ++ am_cv_lib_iconv=yes ++ am_cv_func_iconv=yes) ++ LIBS="$am_save_LIBS" + fi +- done +- +- cd .. +- rm -rf conftest.dir +-else +- am_cv_$1_dependencies_compiler_type=none +-fi +-]) +-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +-AM_CONDITIONAL([am__fastdep$1], [ +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +-]) +- +- +-# AM_SET_DEPDIR +-# ------------- +-# Choose a directory name for dependency files. +-# This macro is AC_REQUIREd in _AM_DEPENDENCIES +-AC_DEFUN([AM_SET_DEPDIR], +-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++ ]) ++ if test "$am_cv_func_iconv" = yes; then ++ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) ++ fi ++ if test "$am_cv_lib_iconv" = yes; then ++ AC_MSG_CHECKING([how to link with libiconv]) ++ AC_MSG_RESULT([$LIBICONV]) ++ else ++ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV ++ dnl either. ++ CPPFLAGS="$am_save_CPPFLAGS" ++ LIBICONV= ++ LTLIBICONV= ++ fi ++ AC_SUBST(LIBICONV) ++ AC_SUBST(LTLIBICONV) + ]) + +- +-# AM_DEP_TRACK +-# ------------ +-AC_DEFUN([AM_DEP_TRACK], +-[AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors]) +-if test "x$enable_dependency_tracking" != xno; then +- am_depcomp="$ac_aux_dir/depcomp" +- AMDEPBACKSLASH='\' +-fi +-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +-AC_SUBST([AMDEPBACKSLASH]) ++AC_DEFUN([AM_ICONV], ++[ ++ AM_ICONV_LINK ++ if test "$am_cv_func_iconv" = yes; then ++ AC_MSG_CHECKING([for iconv declaration]) ++ AC_CACHE_VAL(am_cv_proto_iconv, [ ++ AC_TRY_COMPILE([ ++#include ++#include ++extern ++#ifdef __cplusplus ++"C" ++#endif ++#if defined(__STDC__) || defined(__cplusplus) ++size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); ++#else ++size_t iconv(); ++#endif ++], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") ++ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) ++ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` ++ AC_MSG_RESULT([$]{ac_t:- ++ }[$]am_cv_proto_iconv) ++ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, ++ [Define as const if the declaration of iconv() needs const.]) ++ fi + ]) + +-# Generate code to set up dependency tracking. -*- Autoconf -*- +- +-# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +- +-# 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, 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. ++# lib-ld.m4 serial 3 (gettext-0.13) ++dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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. ++dnl Subroutines of libtool.m4, ++dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision ++dnl with libtool.m4. + +-#serial 2 ++dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. ++AC_DEFUN([AC_LIB_PROG_LD_GNU], ++[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, ++[# I'd rather use --version here, but apparently some GNU ld's only accept -v. ++case `$LD -v 2>&1 /dev/null 2>&1; then +- dirpart=`AS_DIRNAME("$mf")` ++dnl From libtool-1.4. Sets the variable LD. ++AC_DEFUN([AC_LIB_PROG_LD], ++[AC_ARG_WITH(gnu-ld, ++[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], ++test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++# Prepare PATH_SEPARATOR. ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' + else +- continue ++ PATH_SEPARATOR=: + fi +- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` +- test -z "$DEPDIR" && continue +- # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ +- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do +- # Make sure the directory exists. +- test -f "$dirpart/$file" && continue +- fdir=`AS_DIRNAME(["$file"])` +- AS_MKDIR_P([$dirpart/$fdir]) +- # echo "creating $dirpart/$file" +- echo '# dummy' > "$dirpart/$file" ++ rm -f conf$$.sh ++fi ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ AC_MSG_CHECKING([for ld used by GCC]) ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [[\\/]* | [A-Za-z]:[\\/]*)] ++ [re_direlt='/[^/][^/]*/\.\./'] ++ # Canonicalize the path of ld ++ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) ++else ++ AC_MSG_CHECKING([for non-GNU ld]) ++fi ++AC_CACHE_VAL(acl_cv_path_LD, ++[if test -z "$LD"; then ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" ++ for ac_dir in $PATH; do ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ acl_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some GNU ld's only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in ++ *GNU* | *'with BFD'*) ++ test "$with_gnu_ld" != no && break ;; ++ *) ++ test "$with_gnu_ld" != yes && break ;; ++ esac ++ fi + done +-done +-])# _AM_OUTPUT_DEPENDENCY_COMMANDS +- +- +-# AM_OUTPUT_DEPENDENCY_COMMANDS +-# ----------------------------- +-# This macro should only be invoked once -- use via AC_REQUIRE. +-# +-# This code is only required when automatic dependency tracking +-# is enabled. FIXME. This creates each `.P' file that we will +-# need in order to bootstrap the dependency handling code. +-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +-[AC_CONFIG_COMMANDS([depfiles], +- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], +- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ++ IFS="$ac_save_ifs" ++else ++ acl_cv_path_LD="$LD" # Let the user override the test with a path. ++fi]) ++LD="$acl_cv_path_LD" ++if test -n "$LD"; then ++ AC_MSG_RESULT($LD) ++else ++ AC_MSG_RESULT(no) ++fi ++test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) ++AC_LIB_PROG_LD_GNU + ]) + +-# Check to see how 'make' treats includes. -*- Autoconf -*- +- +-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +- +-# 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, 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. ++# lib-link.m4 serial 9 (gettext-0.16) ++dnl Copyright (C) 2001-2006 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# 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. ++dnl From Bruno Haible. + +-# serial 2 ++AC_PREREQ(2.50) + +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-am__doit: +- @echo done +-.PHONY: am__doit +-END +-# If we don't find an include directive, just comment out the code. +-AC_MSG_CHECKING([for style of include used by $am_make]) +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote="\"" +- _am_result=BSD +- fi +-fi +-AC_SUBST([am__include]) +-AC_SUBST([am__quote]) +-AC_MSG_RESULT([$_am_result]) +-rm -f confinc confmf ++dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and ++dnl the libraries corresponding to explicit and implicit dependencies. ++dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and ++dnl augments the CPPFLAGS variable. ++AC_DEFUN([AC_LIB_LINKFLAGS], ++[ ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) ++ define([Name],[translit([$1],[./-], [___])]) ++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) ++ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ ++ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ++ ac_cv_lib[]Name[]_libs="$LIB[]NAME" ++ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ++ ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ++ ]) ++ LIB[]NAME="$ac_cv_lib[]Name[]_libs" ++ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" ++ INC[]NAME="$ac_cv_lib[]Name[]_cppflags" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) ++ AC_SUBST([LIB]NAME) ++ AC_SUBST([LTLIB]NAME) ++ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the ++ dnl results of this search when this library appears as a dependency. ++ HAVE_LIB[]NAME=yes ++ undefine([Name]) ++ undefine([NAME]) + ]) + +-# AM_CONDITIONAL -*- Autoconf -*- +- +-# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. +- +-# 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, or (at your option) +-# any later version. ++dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) ++dnl searches for libname and the libraries corresponding to explicit and ++dnl implicit dependencies, together with the specified include files and ++dnl the ability to compile and link the specified testcode. If found, it ++dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and ++dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and ++dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs ++dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. ++AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], ++[ ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ AC_REQUIRE([AC_LIB_RPATH]) ++ define([Name],[translit([$1],[./-], [___])]) ++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + +-# 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. ++ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME ++ dnl accordingly. ++ AC_LIB_LINKFLAGS_BODY([$1], [$2]) + +-# 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. ++ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, ++ dnl because if the user has installed lib[]Name and not disabled its use ++ dnl via --without-lib[]Name-prefix, he wants to use it. ++ ac_save_CPPFLAGS="$CPPFLAGS" ++ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + +-# serial 5 ++ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ++ ac_save_LIBS="$LIBS" ++ LIBS="$LIBS $LIB[]NAME" ++ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) ++ LIBS="$ac_save_LIBS" ++ ]) ++ if test "$ac_cv_lib[]Name" = yes; then ++ HAVE_LIB[]NAME=yes ++ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) ++ AC_MSG_CHECKING([how to link with lib[]$1]) ++ AC_MSG_RESULT([$LIB[]NAME]) ++ else ++ HAVE_LIB[]NAME=no ++ dnl If $LIB[]NAME didn't lead to a usable library, we don't need ++ dnl $INC[]NAME either. ++ CPPFLAGS="$ac_save_CPPFLAGS" ++ LIB[]NAME= ++ LTLIB[]NAME= ++ fi ++ AC_SUBST([HAVE_LIB]NAME) ++ AC_SUBST([LIB]NAME) ++ AC_SUBST([LTLIB]NAME) ++ undefine([Name]) ++ undefine([NAME]) ++]) + +-AC_PREREQ(2.52) ++dnl Determine the platform dependent parameters needed to use rpath: ++dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, ++dnl hardcode_direct, hardcode_minus_L. ++AC_DEFUN([AC_LIB_RPATH], ++[ ++ dnl Tell automake >= 1.10 to complain if config.rpath is missing. ++ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) ++ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS ++ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld ++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host ++ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir ++ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ ++ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ++ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh ++ . ./conftest.sh ++ rm -f ./conftest.sh ++ acl_cv_rpath=done ++ ]) ++ wl="$acl_cv_wl" ++ libext="$acl_cv_libext" ++ shlibext="$acl_cv_shlibext" ++ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" ++ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" ++ hardcode_direct="$acl_cv_hardcode_direct" ++ hardcode_minus_L="$acl_cv_hardcode_minus_L" ++ dnl Determine whether the user wants rpath handling at all. ++ AC_ARG_ENABLE(rpath, ++ [ --disable-rpath do not hardcode runtime library paths], ++ :, enable_rpath=yes) ++]) + +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-AC_DEFUN([AM_CONDITIONAL], +-[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], +- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) +-if $2; then +- $1_TRUE= +- $1_FALSE='#' +-else +- $1_TRUE='#' +- $1_FALSE= +-fi +-AC_CONFIG_COMMANDS_PRE( +-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then +- AC_MSG_ERROR([conditional "$1" was never defined. +-Usually this means the macro was only invoked conditionally.]) +-fi])]) +- +-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +-# +-# Copyright © 2004 Scott James Remnant . +-# +-# 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. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. +- +-# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +-# ---------------------------------- +-AC_DEFUN([PKG_PROG_PKG_CONFIG], +-[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +-m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then +- AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +-fi +-if test -n "$PKG_CONFIG"; then +- _pkg_min_version=m4_default([$1], [0.9.0]) +- AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) +- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) +- PKG_CONFIG="" +- fi +- +-fi[]dnl +-])# PKG_PROG_PKG_CONFIG +- +-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +-# +-# Check to see whether a particular set of modules exists. Similar +-# to PKG_CHECK_MODULES(), but does not set variables or print errors. +-# +-# +-# Similar to PKG_CHECK_MODULES, make sure that the first instance of +-# this or PKG_CHECK_MODULES is called, or make sure to call +-# PKG_CHECK_EXISTS manually +-# -------------------------------------------------------------- +-AC_DEFUN([PKG_CHECK_EXISTS], +-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +-if test -n "$PKG_CONFIG" && \ +- AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then +- m4_ifval([$2], [$2], [:]) +-m4_ifvaln([$3], [else +- $3])dnl +-fi]) +- +- +-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +-# --------------------------------------------- +-m4_define([_PKG_CONFIG], +-[if test -n "$PKG_CONFIG"; then +- if test -n "$$1"; then +- pkg_cv_[]$1="$$1" ++dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and ++dnl the libraries corresponding to explicit and implicit dependencies. ++dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. ++AC_DEFUN([AC_LIB_LINKFLAGS_BODY], ++[ ++ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) ++ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], ++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) ++ dnl By default, look in $includedir and $libdir. ++ use_additional=yes ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ AC_LIB_ARG_WITH([lib$1-prefix], ++[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib ++ --without-lib$1-prefix don't search for lib$1 in includedir and libdir], ++[ ++ if test "X$withval" = "Xno"; then ++ use_additional=no + else +- PKG_CHECK_EXISTS([$3], +- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], +- [pkg_failed=yes]) ++ if test "X$withval" = "X"; then ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ else ++ additional_includedir="$withval/include" ++ additional_libdir="$withval/$acl_libdirstem" ++ fi + fi +-else +- pkg_failed=untried +-fi[]dnl +-])# _PKG_CONFIG +- +-# _PKG_SHORT_ERRORS_SUPPORTED +-# ----------------------------- +-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +-[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then +- _pkg_short_errors_supported=yes +-else +- _pkg_short_errors_supported=no +-fi[]dnl +-])# _PKG_SHORT_ERRORS_SUPPORTED +- +- +-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +-# [ACTION-IF-NOT-FOUND]) +-# +-# +-# Note that if there is a possibility the first call to +-# PKG_CHECK_MODULES might not happen, you should be sure to include an +-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +-# +-# +-# -------------------------------------------------------------- +-AC_DEFUN([PKG_CHECK_MODULES], +-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl +- +-pkg_failed=no +-AC_MSG_CHECKING([for $1]) +- +-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +-_PKG_CONFIG([$1][_LIBS], [libs], [$2]) +- +-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +-and $1[]_LIBS to avoid the need to call pkg-config. +-See the pkg-config man page for more details.]) +- +-if test $pkg_failed = yes; then +- _PKG_SHORT_ERRORS_SUPPORTED +- if test $_pkg_short_errors_supported = yes; then +- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` +- else +- $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` ++]) ++ dnl Search the library and its dependencies in $additional_libdir and ++ dnl $LDFLAGS. Using breadth-first-seach. ++ LIB[]NAME= ++ LTLIB[]NAME= ++ INC[]NAME= ++ rpathdirs= ++ ltrpathdirs= ++ names_already_handled= ++ names_next_round='$1 $2' ++ while test -n "$names_next_round"; do ++ names_this_round="$names_next_round" ++ names_next_round= ++ for name in $names_this_round; do ++ already_handled= ++ for n in $names_already_handled; do ++ if test "$n" = "$name"; then ++ already_handled=yes ++ break + fi +- # Put the nasty error message in config.log where it belongs +- echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD +- +- ifelse([$4], , [AC_MSG_ERROR(dnl +-[Package requirements ($2) were not met: +- +-$$1_PKG_ERRORS +- +-Consider adjusting the PKG_CONFIG_PATH environment variable if you +-installed software in a non-standard prefix. +- +-_PKG_TEXT +-])], +- [$4]) +-elif test $pkg_failed = untried; then +- ifelse([$4], , [AC_MSG_FAILURE(dnl +-[The pkg-config script could not be found or is too old. Make sure it +-is in your PATH or set the PKG_CONFIG environment variable to the full +-path to pkg-config. +- +-_PKG_TEXT +- +-To get pkg-config, see .])], +- [$4]) +-else +- $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS +- $1[]_LIBS=$pkg_cv_[]$1[]_LIBS +- AC_MSG_RESULT([yes]) +- ifelse([$3], , :, [$3]) +-fi[]dnl +-])# PKG_CHECK_MODULES +- +-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +- +-# serial 47 AC_PROG_LIBTOOL +- +- +-# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +-# ----------------------------------------------------------- +-# If this macro is not defined by Autoconf, define it here. +-m4_ifdef([AC_PROVIDE_IFELSE], +- [], +- [m4_define([AC_PROVIDE_IFELSE], +- [m4_ifdef([AC_PROVIDE_$1], +- [$2], [$3])])]) +- +- +-# AC_PROG_LIBTOOL +-# --------------- +-AC_DEFUN([AC_PROG_LIBTOOL], +-[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +-dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +-dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. +- AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [AC_LIBTOOL_CXX], +- [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX +- ])]) +-dnl And a similar setup for Fortran 77 support +- AC_PROVIDE_IFELSE([AC_PROG_F77], +- [AC_LIBTOOL_F77], +- [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +-])]) +- +-dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +-dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +-dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. +- AC_PROVIDE_IFELSE([AC_PROG_GCJ], +- [AC_LIBTOOL_GCJ], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], +- [AC_LIBTOOL_GCJ], +- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], +- [AC_LIBTOOL_GCJ], +- [ifdef([AC_PROG_GCJ], +- [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) +- ifdef([A][M_PROG_GCJ], +- [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) +- ifdef([LT_AC_PROG_GCJ], +- [define([LT_AC_PROG_GCJ], +- defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +-])])# AC_PROG_LIBTOOL +- +- +-# _AC_PROG_LIBTOOL +-# ---------------- +-AC_DEFUN([_AC_PROG_LIBTOOL], +-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +-AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +-AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +-AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl +- +-# Prevent multiple expansion +-define([AC_PROG_LIBTOOL], []) +-])# _AC_PROG_LIBTOOL +- +- +-# AC_LIBTOOL_SETUP +-# ---------------- +-AC_DEFUN([AC_LIBTOOL_SETUP], +-[AC_PREREQ(2.50)dnl +-AC_REQUIRE([AC_ENABLE_SHARED])dnl +-AC_REQUIRE([AC_ENABLE_STATIC])dnl +-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_LD])dnl +-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +-AC_REQUIRE([AC_PROG_NM])dnl +- +-AC_REQUIRE([AC_PROG_LN_S])dnl +-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +-AC_REQUIRE([AC_OBJEXT])dnl +-AC_REQUIRE([AC_EXEEXT])dnl +-dnl +- +-AC_LIBTOOL_SYS_MAX_CMD_LEN +-AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +-AC_LIBTOOL_OBJDIR +- +-AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +-_LT_AC_PROG_ECHO_BACKSLASH +- +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac +- +-# Sed substitution that helps us do robust quoting. It backslashifies +-# metacharacters that are still active within double-quoted strings. +-Xsed='sed -e 1s/^X//' +-[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] +- +-# Same as above, but do not quote variable references. +-[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +- +-# Constants: +-rm="rm -f" +- +-# Global variables: +-default_ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except M$VC, +-# which needs '.lib'). +-libext=a +-ltmain="$ac_aux_dir/ltmain.sh" +-ofile="$default_ofile" +-with_gnu_ld="$lt_cv_prog_gnu_ld" +- +-AC_CHECK_TOOL(AR, ar, false) +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-AC_CHECK_TOOL(STRIP, strip, :) +- +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" +- +-# Set sane defaults for various variables +-test -z "$AR" && AR=ar +-test -z "$AR_FLAGS" && AR_FLAGS=cru +-test -z "$AS" && AS=as +-test -z "$CC" && CC=cc +-test -z "$LTCC" && LTCC=$CC +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-test -z "$LD" && LD=ld +-test -z "$LN_S" && LN_S="ln -s" +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-test -z "$NM" && NM=nm +-test -z "$SED" && SED=sed +-test -z "$OBJDUMP" && OBJDUMP=objdump +-test -z "$RANLIB" && RANLIB=: +-test -z "$STRIP" && STRIP=: +-test -z "$ac_objext" && ac_objext=o +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= +- +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" +- ;; +- *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +-fi +- +-_LT_CC_BASENAME([$compiler]) +- +-# Only perform the check for file, if the check method requires it +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- AC_PATH_MAGIC +- fi +- ;; +-esac +- +-AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +-enable_win32_dll=yes, enable_win32_dll=no) +- +-AC_ARG_ENABLE([libtool-lock], +- [AC_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-AC_ARG_WITH([pic], +- [AC_HELP_STRING([--with-pic], +- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], +- [pic_mode="$withval"], +- [pic_mode=default]) +-test -z "$pic_mode" && pic_mode=default +- +-# Use C for the default configuration in the libtool script +-tagname= +-AC_LIBTOOL_LANG_C_CONFIG +-_LT_AC_TAGCONFIG +-])# AC_LIBTOOL_SETUP +- +- +-# _LT_AC_SYS_COMPILER +-# ------------------- +-AC_DEFUN([_LT_AC_SYS_COMPILER], +-[AC_REQUIRE([AC_PROG_CC])dnl +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +-])# _LT_AC_SYS_COMPILER +- +- +-# _LT_CC_BASENAME(CC) +-# ------------------- +-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +-AC_DEFUN([_LT_CC_BASENAME], +-[for cc_temp in $1""; do +- case $cc_temp in +- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; +- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +-]) +- +- +-# _LT_COMPILER_BOILERPLATE +-# ------------------------ +-# Check for compiler boilerplate output or warnings with +-# the simple compiler test code. +-AC_DEFUN([_LT_COMPILER_BOILERPLATE], +-[ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$rm conftest* +-])# _LT_COMPILER_BOILERPLATE +- +- +-# _LT_LINKER_BOILERPLATE +-# ---------------------- +-# Check for linker boilerplate output or warnings with +-# the simple link test code. +-AC_DEFUN([_LT_LINKER_BOILERPLATE], +-[ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$rm conftest* +-])# _LT_LINKER_BOILERPLATE +- +- +-# _LT_AC_SYS_LIBPATH_AIX +-# ---------------------- +-# Links a minimal program and checks the executable +-# for the system default hardcoded library path. In most cases, +-# this is /usr/lib:/lib, but when the MPI compilers are used +-# the location of the communication and MPI libs are included too. +-# If we don't find anything, use the default library path according +-# to the aix ld manual. +-AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` +-# Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi],[]) +-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +-])# _LT_AC_SYS_LIBPATH_AIX +- +- +-# _LT_AC_SHELL_INIT(ARG) +-# ---------------------- +-AC_DEFUN([_LT_AC_SHELL_INIT], +-[ifdef([AC_DIVERSION_NOTICE], +- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], +- [AC_DIVERT_PUSH(NOTICE)]) +-$1 +-AC_DIVERT_POP +-])# _LT_AC_SHELL_INIT +- +- +-# _LT_AC_PROG_ECHO_BACKSLASH +-# -------------------------- +-# Add some code to the start of the generated configure script which +-# will find an echo command which doesn't interpret backslashes. +-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +-[_LT_AC_SHELL_INIT([ +-# Check that we are running under the correct shell. +-SHELL=${CONFIG_SHELL-/bin/sh} +- +-case X$ECHO in +-X*--fallback-echo) +- # Remove one level of quotation (which was required for Make). +- ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` +- ;; +-esac +- +-echo=${ECHO-echo} +-if test "X[$]1" = X--no-reexec; then +- # Discard the --no-reexec flag, and continue. +- shift +-elif test "X[$]1" = X--fallback-echo; then +- # Avoid inline document here, it may be left over +- : +-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then +- # Yippee, $echo works! +- : +-else +- # Restart under the correct shell. +- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +-fi +- +-if test "X[$]1" = X--fallback-echo; then +- # used as fallback echo +- shift +- cat </dev/null 2>&1 && unset CDPATH +- +-if test -z "$ECHO"; then +-if test "X${echo_test_string+set}" != Xset; then +-# find a string as large as possible, as long as the shell can cope with it +- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do +- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string="`eval $cmd`") 2>/dev/null && +- echo_test_string="`eval $cmd`" && +- (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null +- then +- break +- fi +- done +-fi +- +-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- : +-else +- # The Solaris, AIX, and Digital Unix default echo programs unquote +- # backslashes. This makes it impossible to quote backslashes using +- # echo "$something" | sed 's/\\/\\\\/g' +- # +- # So, first we look for a working echo in the user's PATH. +- +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for dir in $PATH /usr/ucb; do +- IFS="$lt_save_ifs" +- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && +- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$dir/echo" +- break +- fi +- done +- IFS="$lt_save_ifs" +- +- if test "X$echo" = Xecho; then +- # We didn't find a better echo, so look for alternatives. +- if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # This shell has a builtin print -r that does the trick. +- echo='print -r' +- elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && +- test "X$CONFIG_SHELL" != X/bin/ksh; then +- # If we have ksh, try running configure again with it. +- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +- export ORIGINAL_CONFIG_SHELL +- CONFIG_SHELL=/bin/ksh +- export CONFIG_SHELL +- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} +- else +- # Try using printf. +- echo='printf %s\n' +- if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && +- echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- # Cool, printf works +- : +- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL +- export CONFIG_SHELL +- SHELL="$CONFIG_SHELL" +- export SHELL +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && +- test "X$echo_testing_string" = 'X\t' && +- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && +- test "X$echo_testing_string" = "X$echo_test_string"; then +- echo="$CONFIG_SHELL [$]0 --fallback-echo" +- else +- # maybe with a smaller string... +- prev=: +- +- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do +- if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null +- then +- break +- fi +- prev="$cmd" +- done +- +- if test "$prev" != 'sed 50q "[$]0"'; then +- echo_test_string=`eval $prev` +- export echo_test_string +- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} +- else +- # Oops. We lost completely, so just stick with echo. +- echo=echo +- fi +- fi +- fi +- fi +-fi +-fi +- +-# Copy echo and quote the copy suitably for passing to libtool from +-# the Makefile, instead of quoting the original, which is used later. +-ECHO=$echo +-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then +- ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +-fi +- +-AC_SUBST(ECHO) +-])])# _LT_AC_PROG_ECHO_BACKSLASH +- +- +-# _LT_AC_LOCK +-# ----------- +-AC_DEFUN([_LT_AC_LOCK], +-[AC_ARG_ENABLE([libtool-lock], +- [AC_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- if test "$lt_cv_prog_gnu_ld" = yes; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -melf32bsmip" +- ;; +- *N32*) +- LD="${LD-ld} -melf32bmipn32" +- ;; +- *64-bit*) +- LD="${LD-ld} -melf64bmip" +- ;; +- esac +- else +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- fi +- rm -rf conftest* +- ;; +- +-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case "`/usr/bin/file conftest.o`" in +- *32-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_i386" +- ;; +- ppc64-*linux*|powerpc64-*linux*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- ppc*-*linux*|powerpc*-*linux*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_PUSH(C) +- AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_POP]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +-[*-*-cygwin* | *-*-mingw* | *-*-pw32*) +- AC_CHECK_TOOL(DLLTOOL, dlltool, false) +- AC_CHECK_TOOL(AS, as, false) +- AC_CHECK_TOOL(OBJDUMP, objdump, false) +- ;; +- ]) +-esac +- +-need_locks="$enable_libtool_lock" +- +-])# _LT_AC_LOCK +- +- +-# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------------------- +-# Check whether the given compiler option works +-AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +-[AC_REQUIRE([LT_AC_PROG_SED]) +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$3" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- fi +- $rm conftest* +-]) +- +-if test x"[$]$2" = xyes; then +- ifelse([$5], , :, [$5]) +-else +- ifelse([$6], , :, [$6]) +-fi +-])# AC_LIBTOOL_COMPILER_OPTION +- +- +-# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ------------------------------------------------------------ +-# Check whether the given compiler option works +-AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +-[AC_CACHE_CHECK([$1], [$2], +- [$2=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $3" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&AS_MESSAGE_LOG_FD +- $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- else +- $2=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" +-]) +- +-if test x"[$]$2" = xyes; then +- ifelse([$4], , :, [$4]) +-else +- ifelse([$5], , :, [$5]) +-fi +-])# AC_LIBTOOL_LINKER_OPTION +- +- +-# AC_LIBTOOL_SYS_MAX_CMD_LEN +-# -------------------------- +-AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +-[# find the maximum length of command line arguments +-AC_MSG_CHECKING([the maximum length of command line arguments]) +-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl +- i=0 +- teststring="ABCD" +- +- case $build_os in +- msdosdjgpp*) +- # On DJGPP, this test can blow up pretty badly due to problems in libc +- # (any single argument exceeding 2000 bytes causes a buffer overrun +- # during glob expansion). Even if it were fixed, the result of this +- # check would be larger than it should be. +- lt_cv_sys_max_cmd_len=12288; # 12K is about right +- ;; +- +- gnu*) +- # Under GNU Hurd, this test is not required because there is +- # no limit to the length of command line arguments. +- # Libtool will interpret -1 as no limit whatsoever +- lt_cv_sys_max_cmd_len=-1; +- ;; +- +- cygwin* | mingw*) +- # On Win9x/ME, this test blows up -- it succeeds, but takes +- # about 5 minutes as the teststring grows exponentially. +- # Worse, since 9x/ME are not pre-emptively multitasking, +- # you end up with a "frozen" computer, even though with patience +- # the test eventually succeeds (with a max line length of 256k). +- # Instead, let's just punt: use the minimum linelength reported by +- # all of the supported platforms: 8192 (on NT/2K/XP). +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- amigaos*) +- # On AmigaOS with pdksh, this test takes hours, literally. +- # So we just punt and use a minimum line length of 8192. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +- # This has been around since 386BSD, at least. Likely further. +- if test -x /sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +- elif test -x /usr/sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +- else +- lt_cv_sys_max_cmd_len=65536 # usable default for *BSD +- fi +- # And add a safety zone +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- ;; +- osf*) +- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +- # nice to cause kernel panics so lets avoid the loop below. +- # First set a reasonable default. +- lt_cv_sys_max_cmd_len=16384 +- # +- if test -x /sbin/sysconfig; then +- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +- *1*) lt_cv_sys_max_cmd_len=-1 ;; +- esac +- fi +- ;; +- *) +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ +- = "XX$teststring") >/dev/null 2>&1 && +- new_result=`expr "X$teststring" : ".*" 2>&1` && +- lt_cv_sys_max_cmd_len=$new_result && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- teststring= +- # Add a significant safety factor because C++ compilers can tack on massive +- # amounts of additional arguments before passing them to the linker. +- # It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +- ;; +- esac +-]) +-if test -n $lt_cv_sys_max_cmd_len ; then +- AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +-else +- AC_MSG_RESULT(none) +-fi +-])# AC_LIBTOOL_SYS_MAX_CMD_LEN +- +- +-# _LT_AC_CHECK_DLFCN +-# -------------------- +-AC_DEFUN([_LT_AC_CHECK_DLFCN], +-[AC_CHECK_HEADERS(dlfcn.h)dnl +-])# _LT_AC_CHECK_DLFCN +- +- +-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# ------------------------------------------------------------------ +-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +-if test "$cross_compiling" = yes; then : +- [$4] +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif +- +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } +- +- exit (status); +-}] +-EOF +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_unknown|x*) $3 ;; +- esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_AC_TRY_DLOPEN_SELF +- +- +-# AC_LIBTOOL_DLOPEN_SELF +-# ------------------- +-AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; +- +- darwin*) +- # if libdl is installed we need to link against it +- AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ]) +- ;; +- +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) +- ]) +- ]) +- ]) +- ]) +- ]) +- ;; +- esac +- +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi +- +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" +- +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) +- +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_AC_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac +- +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac +- +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-])# AC_LIBTOOL_DLOPEN_SELF +- +- +-# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +-# --------------------------------- +-# Check to see if options -c and -o are simultaneously supported by compiler +-AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], +- [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], +- [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no +- $rm -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp +- $SED '/^$/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- fi +- fi +- chmod u+w . +- $rm conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files +- $rm out/* && rmdir out +- cd .. +- rmdir conftest +- $rm conftest* +-]) +-])# AC_LIBTOOL_PROG_CC_C_O +- +- +-# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +-# ----------------------------------------- +-# Check to see if we can do hard links to lock some files if needed +-AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +-[AC_REQUIRE([_LT_AC_LOCK])dnl +- +-hard_links="nottested" +-if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $rm conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi +-])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS +- +- +-# AC_LIBTOOL_OBJDIR +-# ----------------- +-AC_DEFUN([AC_LIBTOOL_OBJDIR], +-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +-[rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- lt_cv_objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- lt_cv_objdir=_libs +-fi +-rmdir .libs 2>/dev/null]) +-objdir=$lt_cv_objdir +-])# AC_LIBTOOL_OBJDIR +- +- +-# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +-# ---------------------------------------------- +-# Check hardcoding attributes. +-AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +-[AC_MSG_CHECKING([how to hardcode library paths into programs]) +-_LT_AC_TAGVAR(hardcode_action, $1)= +-if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ +- test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ +- test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && +- test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then +- # Linking always hardcodes the temporary library directory. +- _LT_AC_TAGVAR(hardcode_action, $1)=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- _LT_AC_TAGVAR(hardcode_action, $1)=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +-fi +-AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) +- +-if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +-])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH +- +- +-# AC_LIBTOOL_SYS_LIB_STRIP +-# ------------------------ +-AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +-[striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) +-fi +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac +-fi +-])# AC_LIBTOOL_SYS_LIB_STRIP +- +- +-# AC_LIBTOOL_SYS_DYNAMIC_LINKER +-# ----------------------------- +-# PORTME Fill in your ld.so characteristics +-AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +-[AC_MSG_CHECKING([dynamic linker characteristics]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix4* | aix5*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[[45]]*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$host_os in +- yes,cygwin* | yes,mingw* | yes,pw32*) +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +- ;; +- mingw*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- ;; +- +- *) +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd1*) +- dynamic_linker=no +- ;; +- +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[[01]]* | freebsdelf3.[[01]]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- *) # from 3.2 on +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case "$host_cpu" in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # find out which ABI we are using +- libsuff= +- case "$host_cpu" in +- x86_64*|s390x*|powerpc64*) +- echo '[#]line __oline__ "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *64-bit*) +- libsuff=64 +- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- esac +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-nto-qnx*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no +-])# AC_LIBTOOL_SYS_DYNAMIC_LINKER +- +- +-# _LT_AC_TAGCONFIG +-# ---------------- +-AC_DEFUN([_LT_AC_TAGCONFIG], +-[AC_ARG_WITH([tags], +- [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], +- [include additional configurations @<:@automatic@:>@])], +- [tagnames="$withval"]) +- +-if test -f "$ltmain" && test -n "$tagnames"; then +- if test ! -f "${ofile}"; then +- AC_MSG_WARN([output file `$ofile' does not exist]) +- fi +- +- if test -z "$LTCC"; then +- eval "`$SHELL ${ofile} --config | grep '^LTCC='`" +- if test -z "$LTCC"; then +- AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) +- else +- AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) +- fi +- fi +- +- # Extract list of available tagged configurations in $ofile. +- # Note that this assumes the entire list is on one line. +- available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` +- +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for tagname in $tagnames; do +- IFS="$lt_save_ifs" +- # Check whether tagname contains only valid characters +- case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in +- "") ;; +- *) AC_MSG_ERROR([invalid tag name: $tagname]) +- ;; +- esac +- +- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null +- then +- AC_MSG_ERROR([tag name \"$tagname\" already exists]) +- fi +- +- # Update the list of available tags. +- if test -n "$tagname"; then +- echo appending configuration tag \"$tagname\" to $ofile +- +- case $tagname in +- CXX) +- if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_LIBTOOL_LANG_CXX_CONFIG +- else +- tagname="" +- fi +- ;; +- +- F77) +- if test -n "$F77" && test "X$F77" != "Xno"; then +- AC_LIBTOOL_LANG_F77_CONFIG +- else +- tagname="" +- fi +- ;; +- +- GCJ) +- if test -n "$GCJ" && test "X$GCJ" != "Xno"; then +- AC_LIBTOOL_LANG_GCJ_CONFIG +- else +- tagname="" +- fi +- ;; +- +- RC) +- AC_LIBTOOL_LANG_RC_CONFIG +- ;; +- +- *) +- AC_MSG_ERROR([Unsupported tag name: $tagname]) +- ;; +- esac +- +- # Append the new tag name to the list of available tags. +- if test -n "$tagname" ; then +- available_tags="$available_tags $tagname" +- fi +- fi +- done +- IFS="$lt_save_ifs" +- +- # Now substitute the updated list of available tags. +- if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then +- mv "${ofile}T" "$ofile" +- chmod +x "$ofile" +- else +- rm -f "${ofile}T" +- AC_MSG_ERROR([unable to update list of available tagged configurations.]) +- fi +-fi +-])# _LT_AC_TAGCONFIG +- +- +-# AC_LIBTOOL_DLOPEN +-# ----------------- +-# enable checks for dlopen support +-AC_DEFUN([AC_LIBTOOL_DLOPEN], +- [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +-])# AC_LIBTOOL_DLOPEN +- +- +-# AC_LIBTOOL_WIN32_DLL +-# -------------------- +-# declare package support for building win32 dll's +-AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +-[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +-])# AC_LIBTOOL_WIN32_DLL +- +- +-# AC_ENABLE_SHARED([DEFAULT]) +-# --------------------------- +-# implement the --enable-shared flag +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-AC_DEFUN([AC_ENABLE_SHARED], +-[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE([shared], +- [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], +- [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_shared=yes ;; +- no) enable_shared=no ;; +- *) +- enable_shared=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_shared=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +-])# AC_ENABLE_SHARED +- +- +-# AC_DISABLE_SHARED +-# ----------------- +-#- set the default shared flag to --disable-shared +-AC_DEFUN([AC_DISABLE_SHARED], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_SHARED(no) +-])# AC_DISABLE_SHARED +- +- +-# AC_ENABLE_STATIC([DEFAULT]) +-# --------------------------- +-# implement the --enable-static flag +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-AC_DEFUN([AC_ENABLE_STATIC], +-[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE([static], +- [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], +- [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_static=yes ;; +- no) enable_static=no ;; +- *) +- enable_static=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_static=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_static=]AC_ENABLE_STATIC_DEFAULT) +-])# AC_ENABLE_STATIC +- +- +-# AC_DISABLE_STATIC +-# ----------------- +-# set the default static flag to --disable-static +-AC_DEFUN([AC_DISABLE_STATIC], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_STATIC(no) +-])# AC_DISABLE_STATIC +- +- +-# AC_ENABLE_FAST_INSTALL([DEFAULT]) +-# --------------------------------- +-# implement the --enable-fast-install flag +-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +-AC_DEFUN([AC_ENABLE_FAST_INSTALL], +-[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +-AC_ARG_ENABLE([fast-install], +- [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], +- [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], +- [p=${PACKAGE-default} +- case $enableval in +- yes) enable_fast_install=yes ;; +- no) enable_fast_install=no ;; +- *) +- enable_fast_install=no +- # Look at the argument we got. We use all the common list separators. +- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +- for pkg in $enableval; do +- IFS="$lt_save_ifs" +- if test "X$pkg" = "X$p"; then +- enable_fast_install=yes +- fi +- done +- IFS="$lt_save_ifs" +- ;; +- esac], +- [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +-])# AC_ENABLE_FAST_INSTALL +- +- +-# AC_DISABLE_FAST_INSTALL +-# ----------------------- +-# set the default to --disable-fast-install +-AC_DEFUN([AC_DISABLE_FAST_INSTALL], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-AC_ENABLE_FAST_INSTALL(no) +-])# AC_DISABLE_FAST_INSTALL +- +- +-# AC_LIBTOOL_PICMODE([MODE]) +-# -------------------------- +-# implement the --with-pic flag +-# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +-AC_DEFUN([AC_LIBTOOL_PICMODE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +-pic_mode=ifelse($#,1,$1,default) +-])# AC_LIBTOOL_PICMODE +- +- +-# AC_PROG_EGREP +-# ------------- +-# This is predefined starting with Autoconf 2.54, so this conditional +-# definition can be removed once we require Autoconf 2.54 or later. +-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +-[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], +- [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' +- fi]) +- EGREP=$ac_cv_prog_egrep +- AC_SUBST([EGREP]) +-])]) +- +- +-# AC_PATH_TOOL_PREFIX +-# ------------------- +-# find a file program which can recognise shared library +-AC_DEFUN([AC_PATH_TOOL_PREFIX], +-[AC_REQUIRE([AC_PROG_EGREP])dnl +-AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +-[[\\/*] | ?:[\\/]*]) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="ifelse([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-])# AC_PATH_TOOL_PREFIX +- +- +-# AC_PATH_MAGIC +-# ------------- +-# find a file program which can recognise a shared library +-AC_DEFUN([AC_PATH_MAGIC], +-[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) +- else +- MAGIC_CMD=: +- fi +-fi +-])# AC_PATH_MAGIC +- +- +-# AC_PROG_LD +-# ---------- +-# find the pathname to the GNU or non-GNU linker +-AC_DEFUN([AC_PROG_LD], +-[AC_ARG_WITH([gnu-ld], +- [AC_HELP_STRING([--with-gnu-ld], +- [assume the C compiler uses GNU ld @<:@default=no@:>@])], +- [test "$withval" = no || with_gnu_ld=yes], +- [with_gnu_ld=no]) +-AC_REQUIRE([LT_AC_PROG_SED])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by $CC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | ?:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) +-else +- AC_MSG_CHECKING([for non-GNU ld]) +-fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file +- case "$host_cpu" in +- ia64*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' +- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +- ;; +- hppa*64*) +- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] +- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl +- ;; +- *) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- esac +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be Linux ELF. +-linux*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' +- fi +- ;; +- +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-nto-qnx*) +- lt_cv_deplibs_check_method=unknown +- ;; +- +-openbsd*) +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sco3.2v5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- siemens) +- lt_cv_deplibs_check_method=pass_all +- ;; +- esac +- ;; +- +-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +-esac +-]) +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +-])# AC_DEPLIBS_CHECK_METHOD +- +- +-# AC_PROG_NM +-# ---------- +-# find the pathname to a BSD-compatible name lister +-AC_DEFUN([AC_PROG_NM], +-[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- tmp_nm="$ac_dir/${ac_tool_prefix}nm" +- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in +- */dev/null* | *'Invalid file or object type'*) +- lt_cv_path_NM="$tmp_nm -B" +- break +- ;; +- *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in +- */dev/null*) +- lt_cv_path_NM="$tmp_nm -p" +- break +- ;; +- *) +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- ;; +- esac +- esac +- fi +- done +- IFS="$lt_save_ifs" +- test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +-fi]) +-NM="$lt_cv_path_NM" +-])# AC_PROG_NM +- +- +-# AC_CHECK_LIBM +-# ------------- +-# check for math library +-AC_DEFUN([AC_CHECK_LIBM], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +- # These system don't have libm, or don't need it +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, cos, LIBM="-lm") +- ;; +-esac +-])# AC_CHECK_LIBM +- +- +-# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +-# ----------------------------------- +-# sets LIBLTDL to the link flags for the libltdl convenience library and +-# LTDLINCL to the include flags for the libltdl header and adds +-# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +-# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +-# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +-# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +-# '${top_srcdir}/' (note the single quotes!). If your package is not +-# flat and you're not using automake, define top_builddir and +-# top_srcdir appropriately in the Makefiles. +-AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- case $enable_ltdl_convenience in +- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; +- "") enable_ltdl_convenience=yes +- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; +- esac +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la +- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- # For backwards non-gettext consistent compatibility... +- INCLTDL="$LTDLINCL" +-])# AC_LIBLTDL_CONVENIENCE +- +- +-# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +-# ----------------------------------- +-# sets LIBLTDL to the link flags for the libltdl installable library and +-# LTDLINCL to the include flags for the libltdl header and adds +-# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +-# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +-# DIRECTORY is not provided and an installed libltdl is not found, it is +-# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +-# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +-# quotes!). If your package is not flat and you're not using automake, +-# define top_builddir and top_srcdir appropriately in the Makefiles. +-# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +-AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +- AC_CHECK_LIB(ltdl, lt_dlinit, +- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], +- [if test x"$enable_ltdl_install" = xno; then +- AC_MSG_WARN([libltdl not installed, but installation disabled]) +- else +- enable_ltdl_install=yes +- fi +- ]) +- if test x"$enable_ltdl_install" = x"yes"; then +- ac_configure_args="$ac_configure_args --enable-ltdl-install" +- LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la +- LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) +- else +- ac_configure_args="$ac_configure_args --enable-ltdl-install=no" +- LIBLTDL="-lltdl" +- LTDLINCL= +- fi +- # For backwards non-gettext consistent compatibility... +- INCLTDL="$LTDLINCL" +-])# AC_LIBLTDL_INSTALLABLE +- +- +-# AC_LIBTOOL_CXX +-# -------------- +-# enable support for C++ libraries +-AC_DEFUN([AC_LIBTOOL_CXX], +-[AC_REQUIRE([_LT_AC_LANG_CXX]) +-])# AC_LIBTOOL_CXX +- +- +-# _LT_AC_LANG_CXX +-# --------------- +-AC_DEFUN([_LT_AC_LANG_CXX], +-[AC_REQUIRE([AC_PROG_CXX]) +-AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +-])# _LT_AC_LANG_CXX +- +-# _LT_AC_PROG_CXXCPP +-# --------------- +-AC_DEFUN([_LT_AC_PROG_CXXCPP], +-[ +-AC_REQUIRE([AC_PROG_CXX]) +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_PROG_CXXCPP +-fi +-])# _LT_AC_PROG_CXXCPP +- +-# AC_LIBTOOL_F77 +-# -------------- +-# enable support for Fortran 77 libraries +-AC_DEFUN([AC_LIBTOOL_F77], +-[AC_REQUIRE([_LT_AC_LANG_F77]) +-])# AC_LIBTOOL_F77 +- +- +-# _LT_AC_LANG_F77 +-# --------------- +-AC_DEFUN([_LT_AC_LANG_F77], +-[AC_REQUIRE([AC_PROG_F77]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +-])# _LT_AC_LANG_F77 +- +- +-# AC_LIBTOOL_GCJ +-# -------------- +-# enable support for GCJ libraries +-AC_DEFUN([AC_LIBTOOL_GCJ], +-[AC_REQUIRE([_LT_AC_LANG_GCJ]) +-])# AC_LIBTOOL_GCJ +- +- +-# _LT_AC_LANG_GCJ +-# --------------- +-AC_DEFUN([_LT_AC_LANG_GCJ], +-[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], +- [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], +- [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], +- [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], +- [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +-])# _LT_AC_LANG_GCJ +- +- +-# AC_LIBTOOL_RC +-# -------------- +-# enable support for Windows resource files +-AC_DEFUN([AC_LIBTOOL_RC], +-[AC_REQUIRE([LT_AC_PROG_RC]) +-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +-])# AC_LIBTOOL_RC +- +- +-# AC_LIBTOOL_LANG_C_CONFIG +-# ------------------------ +-# Ensure that the configuration vars for the C compiler are +-# suitably defined. Those variables are subsequently used by +-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +-AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +-AC_DEFUN([_LT_AC_LANG_C_CONFIG], +-[lt_save_CC="$CC" +-AC_LANG_PUSH(C) +- +-# Source file extension for C test sources. +-ac_ext=c +- +-# Object file extension for compiled C test sources. +-objext=o +-_LT_AC_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}\n' +- +-_LT_AC_SYS_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# +-# Check for any special shared library compilation flags. +-# +-_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +-if test "$GCC" = no; then +- case $host_os in +- sco3.2v5*) +- _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' +- ;; +- esac +-fi +-if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then +- AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) +- if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : +- else +- AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) +- _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no +- fi +-fi +- +- +-# +-# Check to make sure the static flag actually works. +-# +-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], +- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), +- $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), +- [], +- [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +- +- +-AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +-AC_LIBTOOL_PROG_COMPILER_PIC($1) +-AC_LIBTOOL_PROG_CC_C_O($1) +-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +-AC_LIBTOOL_PROG_LD_SHLIBS($1) +-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +-AC_LIBTOOL_SYS_LIB_STRIP +-AC_LIBTOOL_DLOPEN_SELF($1) +- +-# Report which librarie types wil actually be built +-AC_MSG_CHECKING([if libtool supports shared libraries]) +-AC_MSG_RESULT([$can_build_shared]) +- +-AC_MSG_CHECKING([whether to build shared libraries]) +-test "$can_build_shared" = "no" && enable_shared=no +- +-# On AIX, shared libraries and static libraries use the same namespace, and +-# are all built from PIC. +-case "$host_os" in +-aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- +-aix4* | aix5*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +-esac +-AC_MSG_RESULT([$enable_shared]) +- +-AC_MSG_CHECKING([whether to build static libraries]) +-# Make sure either enable_shared or enable_static is yes. +-test "$enable_shared" = yes || enable_static=yes +-AC_MSG_RESULT([$enable_static]) +- +-AC_LIBTOOL_CONFIG($1) +- +-AC_LANG_POP +-CC="$lt_save_CC" +-])# AC_LIBTOOL_LANG_C_CONFIG +- +- +-# AC_LIBTOOL_LANG_CXX_CONFIG +-# -------------------------- +-# Ensure that the configuration vars for the C compiler are +-# suitably defined. Those variables are subsequently used by +-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +-AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +-AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +-[AC_LANG_PUSH(C++) +-AC_REQUIRE([AC_PROG_CXX]) +-AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +- +-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_AC_TAGVAR(allow_undefined_flag, $1)= +-_LT_AC_TAGVAR(always_export_symbols, $1)=no +-_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_AC_TAGVAR(hardcode_direct, $1)=no +-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +-_LT_AC_TAGVAR(hardcode_automatic, $1)=no +-_LT_AC_TAGVAR(module_cmds, $1)= +-_LT_AC_TAGVAR(module_expsym_cmds, $1)= +-_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_AC_TAGVAR(no_undefined_flag, $1)= +-_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Dependencies to place before and after the object being linked: +-_LT_AC_TAGVAR(predep_objects, $1)= +-_LT_AC_TAGVAR(postdep_objects, $1)= +-_LT_AC_TAGVAR(predeps, $1)= +-_LT_AC_TAGVAR(postdeps, $1)= +-_LT_AC_TAGVAR(compiler_lib_search_path, $1)= +- +-# Source file extension for C++ test sources. +-ac_ext=cc +- +-# Object file extension for compiled C++ test sources. +-objext=o +-_LT_AC_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_AC_SYS_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_LD=$LD +-lt_save_GCC=$GCC +-GCC=$GXX +-lt_save_with_gnu_ld=$with_gnu_ld +-lt_save_path_LD=$lt_cv_path_LD +-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then +- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +-else +- unset lt_cv_prog_gnu_ld +-fi +-if test -n "${lt_cv_path_LDCXX+set}"; then +- lt_cv_path_LD=$lt_cv_path_LDCXX +-else +- unset lt_cv_path_LD +-fi +-test -z "${LDCXX+set}" || LD=$LDCXX +-CC=${CXX-"c++"} +-compiler=$CC +-_LT_AC_TAGVAR(compiler, $1)=$CC +-_LT_CC_BASENAME([$compiler]) +- +-# We don't want -fno-exception wen compiling C++ code, so set the +-# no_builtin_flag separately +-if test "$GXX" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +-else +- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +-fi +- +-if test "$GXX" = yes; then +- # Set up default GNU C++ configuration +- +- AC_PROG_LD +- +- # Check if GNU C++ uses GNU ld as the underlying linker, since the +- # archiving commands below assume that GNU ld is being used. +- if test "$with_gnu_ld" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # If archive_cmds runs LD, not CC, wlarc should be empty +- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to +- # investigate it a little bit more. (MM) +- wlarc='${wl}' +- +- # ancient GNU ld didn't support --whole-archive et. al. +- if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ +- grep 'no-whole-archive' > /dev/null; then +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- with_gnu_ld=no +- wlarc= +- +- # A generic and very simple default shared library creation +- # command for GNU C++ for the case where it uses the native +- # linker, instead of GNU ld. If possible, this setting should +- # overridden to take advantage of the native linker features on +- # the platform it is being used on. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- fi +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +-else +- GXX=no +- with_gnu_ld=no +- wlarc= +-fi +- +-# PORTME: fill in a description of your system's C++ link characteristics +-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-_LT_AC_TAGVAR(ld_shlibs, $1)=yes +-case $host_os in +- aix3*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) +- for ld_flag in $LDFLAGS; do +- case $ld_flag in +- *-brtl*) +- aix_use_runtimelinking=yes +- break +- ;; +- esac +- done +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_AC_TAGVAR(archive_cmds, $1)='' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- if test "$GXX" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- else +- # We have old collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- # -bexpall does not export symbols beginning with underscore (_) +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- # Exported symbols can be pulled into shared objects from archives +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds it's shared libraries. +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- chorus*) +- case $cc_basename in +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(always_export_symbols, $1)=no +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- if test "$GXX" = yes ; then +- lt_int_apple_cc_single_mod=no +- output_verbose_link_cmd='echo' +- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then +- lt_int_apple_cc_single_mod=yes +- fi +- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- fi +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- fi +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- fi +- ;; +- +- dgux*) +- case $cc_basename in +- ec++*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- freebsd[[12]]*) +- # C++ shared libraries reported to be fairly broken before switch to ELF +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- freebsd-elf*) +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) +- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF +- # conventions +- _LT_AC_TAGVAR(ld_shlibs, $1)=yes +- ;; +- gnu*) +- ;; +- hpux9*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- hpux10*|hpux11*) +- if test $with_gnu_ld = no; then +- case "$host_cpu" in +- hppa*64*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- ia64*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- ;; +- *) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- esac +- fi +- case "$host_cpu" in +- hppa*64*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- ia64*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; +- *) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; +- esac +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- case "$host_cpu" in +- hppa*64*|ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes; then +- if test $with_gnu_ld = no; then +- case "$host_cpu" in +- ia64*|hppa*64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- fi +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- irix5* | irix6*) +- case $cc_basename in +- CC*) +- # SGI C++ +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- +- # Archives containing C++ object files must be created using +- # "CC -ar", where "CC" is the IRIX C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' +- ;; +- *) +- if test "$GXX" = yes; then +- if test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' +- fi +- fi +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- esac +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- linux*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- ;; +- icpc*) +- # Intel C++ +- with_gnu_ld=yes +- # version 8.0 and above of icpc choke on multiply defined symbols +- # if we add $predep_objects and $postdep_objects, however 7.1 and +- # earlier do not add the objects themselves. +- case `$CC -V 2>&1` in +- *"Version 7."*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- *) # Version 8.0 or newer +- tmp_idyn= +- case $host_cpu in +- ia64*) tmp_idyn=' -i_dynamic';; +- esac +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- esac +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- ;; +- pgCC*) +- # Portland Group C++ compiler +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' +- ;; +- cxx*) +- # Compaq C++ +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' +- +- runpath_var=LD_RUN_PATH +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- esac +- ;; +- lynxos*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- m88k*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' +- wlarc= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- fi +- # Workaround some broken pre-1.5 toolchains +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' +- ;; +- openbsd2*) +- # C++ shared libraries are fairly broken +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- openbsd*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- fi +- output_verbose_link_cmd='echo' +- ;; +- osf3*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- osf4* | osf5*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # the KAI C++ compiler. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ +- echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ +- $rm $lib.exp' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- psos*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- sco*) +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- lcc*) +- # Lucid +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- solaris*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The C++ compiler is used as linker so we must use $wl +- # flag to pass the commands to the underlying system +- # linker. We must also pass each convience library through +- # to the system linker between allextract/defaultextract. +- # The C++ compiler will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' +- ;; +- esac +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- +- # The C++ compiler must be used to create the archive. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' +- ;; +- *) +- # GNU C++ compiler with Solaris linker +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' +- if $CC --version | grep -v '^2\.7' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" +- else +- # g++ 2.7 appears to require `-G' NOT `-shared' on this +- # platform. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" +- fi +- +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' +- fi +- ;; +- esac +- ;; +- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- vxworks*) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +-esac +-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +-_LT_AC_TAGVAR(GCC, $1)="$GXX" +-_LT_AC_TAGVAR(LD, $1)="$LD" +- +-AC_LIBTOOL_POSTDEP_PREDEP($1) +-AC_LIBTOOL_PROG_COMPILER_PIC($1) +-AC_LIBTOOL_PROG_CC_C_O($1) +-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +-AC_LIBTOOL_PROG_LD_SHLIBS($1) +-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +-AC_LIBTOOL_SYS_LIB_STRIP +-AC_LIBTOOL_DLOPEN_SELF($1) +- +-AC_LIBTOOL_CONFIG($1) +- +-AC_LANG_POP +-CC=$lt_save_CC +-LDCXX=$LD +-LD=$lt_save_LD +-GCC=$lt_save_GCC +-with_gnu_ldcxx=$with_gnu_ld +-with_gnu_ld=$lt_save_with_gnu_ld +-lt_cv_path_LDCXX=$lt_cv_path_LD +-lt_cv_path_LD=$lt_save_path_LD +-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +-])# AC_LIBTOOL_LANG_CXX_CONFIG +- +-# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +-# ------------------------ +-# Figure out "hidden" library dependencies from verbose +-# compiler output when linking a shared library. +-# Parse the compiler output and extract the necessary +-# objects, libraries and library flags. +-AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +-dnl we can't use the lt_simple_compile_test_code here, +-dnl because it contains code intended for an executable, +-dnl not a library. It's possible we should let each +-dnl tag define a new lt_????_link_test_code variable, +-dnl but it's only used here... +-ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +-ifelse([$1], [], +-[#! $SHELL +- +-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +-# Free Software Foundation, Inc. +-# +-# This file is part of GNU Libtool: +-# Originally by Gordon Matzigkeit , 1996 +-# +-# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-# +-# As a special exception to the GNU General Public License, if you +-# distribute this file as part of a program that contains a +-# configuration script generated by Autoconf, you may include it under +-# the same distribution terms that you use for the rest of that program. +- +-# A sed program that does not truncate output. +-SED=$lt_SED +- +-# Sed that helps us avoid accidentally triggering echo(1) options like -n. +-Xsed="$SED -e 1s/^X//" +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-# The names of the tagged configurations supported by this script. +-available_tags= +- +-# ### BEGIN LIBTOOL CONFIG], +-[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) +- +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +- +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL +- +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared +- +-# Whether or not to build static libraries. +-build_old_libs=$enable_static +- +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) +- +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) +- +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install +- +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os +- +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os +- +-# An echo program that does not interpret backslashes. +-echo=$lt_echo +- +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS +- +-# A C compiler. +-LTCC=$lt_LTCC +- +-# A language-specific compiler. +-CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) +- +-# Is the compiler the GNU C compiler? +-with_gcc=$_LT_AC_TAGVAR(GCC, $1) +- +-# An ERE matcher. +-EGREP=$lt_EGREP +- +-# The linker used to build libraries. +-LD=$lt_[]_LT_AC_TAGVAR(LD, $1) +- +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S +- +-# A BSD-compatible nm program. +-NM=$lt_NM +- +-# A symbol stripping program +-STRIP=$lt_STRIP +- +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD +- +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" +- +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" +- +-# Used on cygwin: assembler. +-AS="$AS" +- +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir +- +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds +- +-# How to pass a linker flag through the compiler. +-wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) +- +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +-pic_mode=$pic_mode +- +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) ++ done ++ if test -z "$already_handled"; then ++ names_already_handled="$names_already_handled $name" ++ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS ++ dnl or AC_LIB_HAVE_LINKFLAGS call. ++ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` ++ eval value=\"\$HAVE_LIB$uppername\" ++ if test -n "$value"; then ++ if test "$value" = yes; then ++ eval value=\"\$LIB$uppername\" ++ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" ++ eval value=\"\$LTLIB$uppername\" ++ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" ++ else ++ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined ++ dnl that this library doesn't exist. So just drop it. ++ : ++ fi ++ else ++ dnl Search the library lib$name in $additional_libdir and $LDFLAGS ++ dnl and the already constructed $LIBNAME/$LTLIBNAME. ++ found_dir= ++ found_la= ++ found_so= ++ found_a= ++ if test $use_additional = yes; then ++ if test -n "$shlibext" \ ++ && { test -f "$additional_libdir/lib$name.$shlibext" \ ++ || { test "$shlibext" = dll \ ++ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then ++ found_dir="$additional_libdir" ++ if test -f "$additional_libdir/lib$name.$shlibext"; then ++ found_so="$additional_libdir/lib$name.$shlibext" ++ else ++ found_so="$additional_libdir/lib$name.dll.a" ++ fi ++ if test -f "$additional_libdir/lib$name.la"; then ++ found_la="$additional_libdir/lib$name.la" ++ fi ++ else ++ if test -f "$additional_libdir/lib$name.$libext"; then ++ found_dir="$additional_libdir" ++ found_a="$additional_libdir/lib$name.$libext" ++ if test -f "$additional_libdir/lib$name.la"; then ++ found_la="$additional_libdir/lib$name.la" ++ fi ++ fi ++ fi ++ fi ++ if test "X$found_dir" = "X"; then ++ for x in $LDFLAGS $LTLIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ case "$x" in ++ -L*) ++ dir=`echo "X$x" | sed -e 's/^X-L//'` ++ if test -n "$shlibext" \ ++ && { test -f "$dir/lib$name.$shlibext" \ ++ || { test "$shlibext" = dll \ ++ && test -f "$dir/lib$name.dll.a"; }; }; then ++ found_dir="$dir" ++ if test -f "$dir/lib$name.$shlibext"; then ++ found_so="$dir/lib$name.$shlibext" ++ else ++ found_so="$dir/lib$name.dll.a" ++ fi ++ if test -f "$dir/lib$name.la"; then ++ found_la="$dir/lib$name.la" ++ fi ++ else ++ if test -f "$dir/lib$name.$libext"; then ++ found_dir="$dir" ++ found_a="$dir/lib$name.$libext" ++ if test -f "$dir/lib$name.la"; then ++ found_la="$dir/lib$name.la" ++ fi ++ fi ++ fi ++ ;; ++ esac ++ if test "X$found_dir" != "X"; then ++ break ++ fi ++ done ++ fi ++ if test "X$found_dir" != "X"; then ++ dnl Found the library. ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" ++ if test "X$found_so" != "X"; then ++ dnl Linking with a shared library. We attempt to hardcode its ++ dnl directory into the executable's runpath, unless it's the ++ dnl standard /usr/lib. ++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then ++ dnl No hardcoding is needed. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ else ++ dnl Use an explicit option to hardcode DIR into the resulting ++ dnl binary. ++ dnl Potentially add DIR to ltrpathdirs. ++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. ++ haveit= ++ for x in $ltrpathdirs; do ++ if test "X$x" = "X$found_dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ ltrpathdirs="$ltrpathdirs $found_dir" ++ fi ++ dnl The hardcoding into $LIBNAME is system dependent. ++ if test "$hardcode_direct" = yes; then ++ dnl Using DIR/libNAME.so during linking hardcodes DIR into the ++ dnl resulting binary. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ else ++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then ++ dnl Use an explicit option to hardcode DIR into the resulting ++ dnl binary. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ dnl Potentially add DIR to rpathdirs. ++ dnl The rpathdirs will be appended to $LIBNAME at the end. ++ haveit= ++ for x in $rpathdirs; do ++ if test "X$x" = "X$found_dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ rpathdirs="$rpathdirs $found_dir" ++ fi ++ else ++ dnl Rely on "-L$found_dir". ++ dnl But don't add it if it's already contained in the LDFLAGS ++ dnl or the already constructed $LIBNAME ++ haveit= ++ for x in $LDFLAGS $LIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$found_dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" ++ fi ++ if test "$hardcode_minus_L" != no; then ++ dnl FIXME: Not sure whether we should use ++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" ++ dnl here. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" ++ else ++ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH ++ dnl here, because this doesn't fit in flags passed to the ++ dnl compiler. So give up. No hardcoding. This affects only ++ dnl very old systems. ++ dnl FIXME: Not sure whether we should use ++ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" ++ dnl here. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" ++ fi ++ fi ++ fi ++ fi ++ else ++ if test "X$found_a" != "X"; then ++ dnl Linking with a static library. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" ++ else ++ dnl We shouldn't come here, but anyway it's good to have a ++ dnl fallback. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" ++ fi ++ fi ++ dnl Assume the include files are nearby. ++ additional_includedir= ++ case "$found_dir" in ++ */$acl_libdirstem | */$acl_libdirstem/) ++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` ++ additional_includedir="$basedir/include" ++ ;; ++ esac ++ if test "X$additional_includedir" != "X"; then ++ dnl Potentially add $additional_includedir to $INCNAME. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/include, ++ dnl 2. if it's /usr/local/include and we are using GCC on Linux, ++ dnl 3. if it's already present in $CPPFLAGS or the already ++ dnl constructed $INCNAME, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_includedir" != "X/usr/include"; then ++ haveit= ++ if test "X$additional_includedir" = "X/usr/local/include"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ for x in $CPPFLAGS $INC[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-I$additional_includedir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test -d "$additional_includedir"; then ++ dnl Really add $additional_includedir to $INCNAME. ++ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" ++ fi ++ fi ++ fi ++ fi ++ fi ++ dnl Look for dependencies. ++ if test -n "$found_la"; then ++ dnl Read the .la file. It defines the variables ++ dnl dlname, library_names, old_library, dependency_libs, current, ++ dnl age, revision, installed, dlopen, dlpreopen, libdir. ++ save_libdir="$libdir" ++ case "$found_la" in ++ */* | *\\*) . "$found_la" ;; ++ *) . "./$found_la" ;; ++ esac ++ libdir="$save_libdir" ++ dnl We use only dependency_libs. ++ for dep in $dependency_libs; do ++ case "$dep" in ++ -L*) ++ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` ++ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/lib, ++ dnl 2. if it's /usr/local/lib and we are using GCC on Linux, ++ dnl 3. if it's already present in $LDFLAGS or the already ++ dnl constructed $LIBNAME, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then ++ haveit= ++ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ haveit= ++ for x in $LDFLAGS $LIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$additional_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test -d "$additional_libdir"; then ++ dnl Really add $additional_libdir to $LIBNAME. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" ++ fi ++ fi ++ haveit= ++ for x in $LDFLAGS $LTLIB[]NAME; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$additional_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test -d "$additional_libdir"; then ++ dnl Really add $additional_libdir to $LTLIBNAME. ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" ++ fi ++ fi ++ fi ++ fi ++ ;; ++ -R*) ++ dir=`echo "X$dep" | sed -e 's/^X-R//'` ++ if test "$enable_rpath" != no; then ++ dnl Potentially add DIR to rpathdirs. ++ dnl The rpathdirs will be appended to $LIBNAME at the end. ++ haveit= ++ for x in $rpathdirs; do ++ if test "X$x" = "X$dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ rpathdirs="$rpathdirs $dir" ++ fi ++ dnl Potentially add DIR to ltrpathdirs. ++ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. ++ haveit= ++ for x in $ltrpathdirs; do ++ if test "X$x" = "X$dir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ ltrpathdirs="$ltrpathdirs $dir" ++ fi ++ fi ++ ;; ++ -l*) ++ dnl Handle this in the next round. ++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ++ ;; ++ *.la) ++ dnl Handle this in the next round. Throw away the .la's ++ dnl directory; it is already contained in a preceding -L ++ dnl option. ++ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ++ ;; ++ *) ++ dnl Most likely an immediate library name. ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ++ ;; ++ esac ++ done ++ fi ++ else ++ dnl Didn't find the library; assume it is in the system directories ++ dnl known to the linker and runtime loader. (All the system ++ dnl directories known to the linker should also be known to the ++ dnl runtime loader, otherwise the system is severely misconfigured.) ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" ++ fi ++ fi ++ fi ++ done ++ done ++ if test "X$rpathdirs" != "X"; then ++ if test -n "$hardcode_libdir_separator"; then ++ dnl Weird platform: only the last -rpath option counts, the user must ++ dnl pass all path elements in one option. We can arrange that for a ++ dnl single library, but not when more than one $LIBNAMEs are used. ++ alldirs= ++ for found_dir in $rpathdirs; do ++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" ++ done ++ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. ++ acl_save_libdir="$libdir" ++ libdir="$alldirs" ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ libdir="$acl_save_libdir" ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" ++ else ++ dnl The -rpath options are cumulative. ++ for found_dir in $rpathdirs; do ++ acl_save_libdir="$libdir" ++ libdir="$found_dir" ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ libdir="$acl_save_libdir" ++ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" ++ done ++ fi ++ fi ++ if test "X$ltrpathdirs" != "X"; then ++ dnl When using libtool, the option that works for both libraries and ++ dnl executables is -R. The -R options are cumulative. ++ for found_dir in $ltrpathdirs; do ++ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" ++ done ++ fi ++]) + +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) ++dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, ++dnl unless already present in VAR. ++dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes ++dnl contains two or three consecutive elements that belong together. ++AC_DEFUN([AC_LIB_APPENDTOVAR], ++[ ++ for element in [$2]; do ++ haveit= ++ for x in $[$1]; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X$element"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ [$1]="${[$1]}${[$1]:+ }$element" ++ fi ++ done ++]) + +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) ++dnl For those cases where a variable contains several -L and -l options ++dnl referring to unknown libraries and directories, this macro determines the ++dnl necessary additional linker options for the runtime path. ++dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) ++dnl sets LDADDVAR to linker options needed together with LIBSVALUE. ++dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, ++dnl otherwise linking without libtool is assumed. ++AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], ++[ ++ AC_REQUIRE([AC_LIB_RPATH]) ++ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) ++ $1= ++ if test "$enable_rpath" != no; then ++ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then ++ dnl Use an explicit option to hardcode directories into the resulting ++ dnl binary. ++ rpathdirs= ++ next= ++ for opt in $2; do ++ if test -n "$next"; then ++ dir="$next" ++ dnl No need to hardcode the standard /usr/lib. ++ if test "X$dir" != "X/usr/$acl_libdirstem"; then ++ rpathdirs="$rpathdirs $dir" ++ fi ++ next= ++ else ++ case $opt in ++ -L) next=yes ;; ++ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` ++ dnl No need to hardcode the standard /usr/lib. ++ if test "X$dir" != "X/usr/$acl_libdirstem"; then ++ rpathdirs="$rpathdirs $dir" ++ fi ++ next= ;; ++ *) next= ;; ++ esac ++ fi ++ done ++ if test "X$rpathdirs" != "X"; then ++ if test -n ""$3""; then ++ dnl libtool is used for linking. Use -R options. ++ for dir in $rpathdirs; do ++ $1="${$1}${$1:+ }-R$dir" ++ done ++ else ++ dnl The linker is used for linking directly. ++ if test -n "$hardcode_libdir_separator"; then ++ dnl Weird platform: only the last -rpath option counts, the user ++ dnl must pass all path elements in one option. ++ alldirs= ++ for dir in $rpathdirs; do ++ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$dir" ++ done ++ acl_save_libdir="$libdir" ++ libdir="$alldirs" ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ libdir="$acl_save_libdir" ++ $1="$flag" ++ else ++ dnl The -rpath options are cumulative. ++ for dir in $rpathdirs; do ++ acl_save_libdir="$libdir" ++ libdir="$dir" ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ libdir="$acl_save_libdir" ++ $1="${$1}${$1:+ }$flag" ++ done ++ fi ++ fi ++ fi ++ fi ++ fi ++ AC_SUBST([$1]) ++]) + +-# Library versioning type. +-version_type=$version_type ++# lib-prefix.m4 serial 5 (gettext-0.15) ++dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. + +-# Format of library name prefix. +-libname_spec=$lt_libname_spec ++dnl From Bruno Haible. + +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec ++dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and ++dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't ++dnl require excessive bracketing. ++ifdef([AC_HELP_STRING], ++[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], ++[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec ++dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed ++dnl to access previously installed libraries. The basic assumption is that ++dnl a user will want packages to use other packages he previously installed ++dnl with the same --prefix option. ++dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate ++dnl libraries, but is otherwise very convenient. ++AC_DEFUN([AC_LIB_PREFIX], ++[ ++ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) ++ AC_REQUIRE([AC_PROG_CC]) ++ AC_REQUIRE([AC_CANONICAL_HOST]) ++ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) ++ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) ++ dnl By default, look in $includedir and $libdir. ++ use_additional=yes ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ AC_LIB_ARG_WITH([lib-prefix], ++[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib ++ --without-lib-prefix don't search for libraries in includedir and libdir], ++[ ++ if test "X$withval" = "Xno"; then ++ use_additional=no ++ else ++ if test "X$withval" = "X"; then ++ AC_LIB_WITH_FINAL_PREFIX([ ++ eval additional_includedir=\"$includedir\" ++ eval additional_libdir=\"$libdir\" ++ ]) ++ else ++ additional_includedir="$withval/include" ++ additional_libdir="$withval/$acl_libdirstem" ++ fi ++ fi ++]) ++ if test $use_additional = yes; then ++ dnl Potentially add $additional_includedir to $CPPFLAGS. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/include, ++ dnl 2. if it's already present in $CPPFLAGS, ++ dnl 3. if it's /usr/local/include and we are using GCC on Linux, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_includedir" != "X/usr/include"; then ++ haveit= ++ for x in $CPPFLAGS; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-I$additional_includedir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test "X$additional_includedir" = "X/usr/local/include"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux* | gnu* | k*bsd*-gnu) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ if test -d "$additional_includedir"; then ++ dnl Really add $additional_includedir to $CPPFLAGS. ++ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" ++ fi ++ fi ++ fi ++ fi ++ dnl Potentially add $additional_libdir to $LDFLAGS. ++ dnl But don't add it ++ dnl 1. if it's the standard /usr/lib, ++ dnl 2. if it's already present in $LDFLAGS, ++ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, ++ dnl 4. if it doesn't exist as a directory. ++ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then ++ haveit= ++ for x in $LDFLAGS; do ++ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) ++ if test "X$x" = "X-L$additional_libdir"; then ++ haveit=yes ++ break ++ fi ++ done ++ if test -z "$haveit"; then ++ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then ++ if test -n "$GCC"; then ++ case $host_os in ++ linux*) haveit=yes;; ++ esac ++ fi ++ fi ++ if test -z "$haveit"; then ++ if test -d "$additional_libdir"; then ++ dnl Really add $additional_libdir to $LDFLAGS. ++ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" ++ fi ++ fi ++ fi ++ fi ++ fi ++]) + +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds ++dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, ++dnl acl_final_exec_prefix, containing the values to which $prefix and ++dnl $exec_prefix will expand at the end of the configure script. ++AC_DEFUN([AC_LIB_PREPARE_PREFIX], ++[ ++ dnl Unfortunately, prefix and exec_prefix get only finally determined ++ dnl at the end of configure. ++ if test "X$prefix" = "XNONE"; then ++ acl_final_prefix="$ac_default_prefix" ++ else ++ acl_final_prefix="$prefix" ++ fi ++ if test "X$exec_prefix" = "XNONE"; then ++ acl_final_exec_prefix='${prefix}' ++ else ++ acl_final_exec_prefix="$exec_prefix" ++ fi ++ acl_save_prefix="$prefix" ++ prefix="$acl_final_prefix" ++ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" ++ prefix="$acl_save_prefix" ++]) + +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) ++dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the ++dnl variables prefix and exec_prefix bound to the values they will have ++dnl at the end of the configure script. ++AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], ++[ ++ acl_save_prefix="$prefix" ++ prefix="$acl_final_prefix" ++ acl_save_exec_prefix="$exec_prefix" ++ exec_prefix="$acl_final_exec_prefix" ++ $1 ++ exec_prefix="$acl_save_exec_prefix" ++ prefix="$acl_save_prefix" ++]) + +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) ++dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing ++dnl the basename of the libdir, either "lib" or "lib64". ++AC_DEFUN([AC_LIB_PREPARE_MULTILIB], ++[ ++ dnl There is no formal standard regarding lib and lib64. The current ++ dnl practice is that on a system supporting 32-bit and 64-bit instruction ++ dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit ++ dnl libraries go under $prefix/lib. We determine the compiler's default ++ dnl mode by looking at the compiler's library search path. If at least ++ dnl of its elements ends in /lib64 or points to a directory whose absolute ++ dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the ++ dnl default, namely "lib". ++ acl_libdirstem=lib ++ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` ++ if test -n "$searchpath"; then ++ acl_save_IFS="${IFS= }"; IFS=":" ++ for searchdir in $searchpath; do ++ if test -d "$searchdir"; then ++ case "$searchdir" in ++ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; ++ *) searchdir=`cd "$searchdir" && pwd` ++ case "$searchdir" in ++ */lib64 ) acl_libdirstem=lib64 ;; ++ esac ;; ++ esac ++ fi ++ done ++ IFS="$acl_save_IFS" ++ fi ++]) + +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +-archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds ++# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +-module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) ++# serial 51 Debian 1.5.24-1ubuntu1 AC_PROG_LIBTOOL + +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib + +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) ++# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) ++# ----------------------------------------------------------- ++# If this macro is not defined by Autoconf, define it here. ++m4_ifdef([AC_PROVIDE_IFELSE], ++ [], ++ [m4_define([AC_PROVIDE_IFELSE], ++ [m4_ifdef([AC_PROVIDE_$1], ++ [$2], [$3])])]) + +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) ++# AC_PROG_LIBTOOL ++# --------------- ++AC_DEFUN([AC_PROG_LIBTOOL], ++[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl ++dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX ++dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. ++ AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [AC_LIBTOOL_CXX], ++ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX ++ ])]) ++dnl And a similar setup for Fortran 77 support ++ AC_PROVIDE_IFELSE([AC_PROG_F77], ++ [AC_LIBTOOL_F77], ++ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 ++])]) + +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) ++dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. ++dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run ++dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. ++ AC_PROVIDE_IFELSE([AC_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], ++ [AC_LIBTOOL_GCJ], ++ [ifdef([AC_PROG_GCJ], ++ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ++ ifdef([A][M_PROG_GCJ], ++ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) ++ ifdef([LT_AC_PROG_GCJ], ++ [define([LT_AC_PROG_GCJ], ++ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) ++])])# AC_PROG_LIBTOOL + +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method ++# _AC_PROG_LIBTOOL ++# ---------------- ++AC_DEFUN([_AC_PROG_LIBTOOL], ++[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl ++AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++AC_SUBST(LIBTOOL)dnl + +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) ++# Prevent multiple expansion ++define([AC_PROG_LIBTOOL], []) ++])# _AC_PROG_LIBTOOL + +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds + +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval ++# AC_LIBTOOL_SETUP ++# ---------------- ++AC_DEFUN([AC_LIBTOOL_SETUP], ++[AC_PREREQ(2.50)dnl ++AC_REQUIRE([AC_ENABLE_SHARED])dnl ++AC_REQUIRE([AC_ENABLE_STATIC])dnl ++AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_PROG_LD])dnl ++AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl ++AC_REQUIRE([AC_PROG_NM])dnl + +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++AC_REQUIRE([AC_PROG_LN_S])dnl ++AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl ++# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! ++AC_REQUIRE([AC_OBJEXT])dnl ++AC_REQUIRE([AC_EXEEXT])dnl ++dnl + +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++AC_LIBTOOL_SYS_MAX_CMD_LEN ++AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++AC_LIBTOOL_OBJDIR + +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++_LT_AC_PROG_ECHO_BACKSLASH + +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac + +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='sed -e 1s/^X//' ++[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++# Same as above, but do not quote variable references. ++[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +-# How to hardcode a shared library path into an executable. +-hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' + +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) ++# Constants: ++rm="rm -f" + +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) ++# Global variables: ++default_ofile=libtool ++can_build_shared=yes + +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ltmain="$ac_aux_dir/ltmain.sh" ++ofile="$default_ofile" ++with_gnu_ld="$lt_cv_prog_gnu_ld" + +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) ++AC_CHECK_TOOL(AR, ar, false) ++AC_CHECK_TOOL(RANLIB, ranlib, :) ++AC_CHECK_TOOL(STRIP, strip, :) + +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" + +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) ++# Set sane defaults for various variables ++test -z "$AR" && AR=ar ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++test -z "$AS" && AS=as ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$LD" && LD=ld ++test -z "$LN_S" && LN_S="ln -s" ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++test -z "$NM" && NM=nm ++test -z "$SED" && SED=sed ++test -z "$OBJDUMP" && OBJDUMP=objdump ++test -z "$RANLIB" && RANLIB=: ++test -z "$STRIP" && STRIP=: ++test -z "$ac_objext" && ac_objext=o + +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= + +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi + +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) ++_LT_CC_BASENAME([$compiler]) + +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++# Only perform the check for file, if the check method requires it ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ AC_PATH_MAGIC ++ fi ++ ;; ++esac + +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) ++AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], ++enable_win32_dll=yes, enable_win32_dll=no) + +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" ++AC_ARG_ENABLE([libtool-lock], ++ [AC_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +-# Set to yes if exported symbols are required. +-always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) ++AC_ARG_WITH([pic], ++ [AC_HELP_STRING([--with-pic], ++ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], ++ [pic_mode="$withval"], ++ [pic_mode=default]) ++test -z "$pic_mode" && pic_mode=default + +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) ++# Use C for the default configuration in the libtool script ++tagname= ++AC_LIBTOOL_LANG_C_CONFIG ++_LT_AC_TAGCONFIG ++])# AC_LIBTOOL_SETUP + +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds + +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) ++# _LT_AC_SYS_COMPILER ++# ------------------- ++AC_DEFUN([_LT_AC_SYS_COMPILER], ++[AC_REQUIRE([AC_PROG_CC])dnl + +-# Symbols that must always be exported. +-include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} + +-ifelse([$1],[], +-[# ### END LIBTOOL CONFIG], +-[# ### END LIBTOOL TAG CONFIG: $tagname]) ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +-__EOF__ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++])# _LT_AC_SYS_COMPILER + +-ifelse([$1],[], [ +- case $host_os in +- aix3*) +- cat <<\EOF >> "$cfgfile" + +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-EOF +- ;; ++# _LT_CC_BASENAME(CC) ++# ------------------- ++# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. ++AC_DEFUN([_LT_CC_BASENAME], ++[for cc_temp in $1""; do ++ case $cc_temp in ++ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; ++ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; ++ \-*) ;; ++ *) break;; + esac +- +- # We use sed instead of cat because bash on DJGPP gets confused if +- # if finds mixed CR/LF and LF-only lines. Since sed operates in +- # text mode, it properly converts lines to CR/LF. This bash problem +- # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) +- +- mv -f "$cfgfile" "$ofile" || \ +- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +- chmod +x "$ofile" ++done ++cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + ]) +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" +- fi +-fi +-])# AC_LIBTOOL_CONFIG +- +- +-# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +-# ------------------------------------------- +-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +-_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +-if test "$GCC" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++# _LT_COMPILER_BOILERPLATE ++# ------------------------ ++# Check for compiler boilerplate output or warnings with ++# the simple compiler test code. ++AC_DEFUN([_LT_COMPILER_BOILERPLATE], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$rm conftest* ++])# _LT_COMPILER_BOILERPLATE + +- AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], +- lt_cv_prog_compiler_rtti_exceptions, +- [-fno-rtti -fno-exceptions], [], +- [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +-fi +-])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + ++# _LT_LINKER_BOILERPLATE ++# ---------------------- ++# Check for linker boilerplate output or warnings with ++# the simple link test code. ++AC_DEFUN([_LT_LINKER_BOILERPLATE], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$rm conftest* ++])# _LT_LINKER_BOILERPLATE + +-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +-# --------------------------------- +-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +-[AC_REQUIRE([AC_CANONICAL_HOST]) +-AC_REQUIRE([AC_PROG_NM]) +-AC_REQUIRE([AC_OBJEXT]) +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +-[ +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' ++# _LT_AC_SYS_LIBPATH_AIX ++# ---------------------- ++# Links a minimal program and checks the executable ++# for the system default hardcoded library path. In most cases, ++# this is /usr/lib:/lib, but when the MPI compilers are used ++# the location of the communication and MPI libs are included too. ++# If we don't find anything, use the default library path according ++# to the aix ld manual. ++AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_LINK_IFELSE(AC_LANG_PROGRAM,[ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi],[]) ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++])# _LT_AC_SYS_LIBPATH_AIX + +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +-# Transform an extracted symbol line into a proper C declaration +-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" ++# _LT_AC_SHELL_INIT(ARG) ++# ---------------------- ++AC_DEFUN([_LT_AC_SHELL_INIT], ++[ifdef([AC_DIVERSION_NOTICE], ++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], ++ [AC_DIVERT_PUSH(NOTICE)]) ++$1 ++AC_DIVERT_POP ++])# _LT_AC_SHELL_INIT + +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) # Its linker distinguishes data from code symbols +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDEGRST]]' +- fi +- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- ;; +-linux*) +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDGIRSTW]]' +- lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" +- fi +- ;; +-irix* | nonstopux*) +- symcode='[[BCDEGRST]]' +- ;; +-osf*) +- symcode='[[BCDEGQRST]]' +- ;; +-solaris* | sysv5*) +- symcode='[[BDRT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac ++# _LT_AC_PROG_ECHO_BACKSLASH ++# -------------------------- ++# Add some code to the start of the generated configure script which ++# will find an echo command which doesn't interpret backslashes. ++AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], ++[_LT_AC_SHELL_INIT([ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} + +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $build_os in +-mingw*) +- opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++case X$ECHO in ++X*--fallback-echo) ++ # Remove one level of quotation (which was required for Make). ++ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; + esac + +-# If we're using GNU nm, then use its standard symbol codes. +-case `$NM -V 2>&1` in +-*GNU* | *'with BFD'*) +- symcode='[[ABCDGIRSTW]]' ;; +-esac +- +-# Try without a prefix undercore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +- symxfrm="\\1 $ac_symprfx\\2 \\2" +- +- # Write the raw and C identifiers. +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no ++echo=${ECHO-echo} ++if test "X[$]1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X[$]1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then ++ # Yippee, $echo works! ++ : ++else ++ # Restart under the correct shell. ++ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} ++fi + +- rm -f conftest* +- cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +- # Make sure that we snagged all the symbols we need. +- if grep ' nm_test_var$' "$nlist" >/dev/null; then +- if grep ' nm_test_func$' "$nlist" >/dev/null; then +- cat < conftest.$ac_ext +-#ifdef __cplusplus +-extern "C" { +-#endif ++if test -z "$ECHO"; then ++if test "X${echo_test_string+set}" != Xset; then ++# find a string as large as possible, as long as the shell can cope with it ++ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do ++ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... ++ if (echo_test_string=`eval $cmd`) 2>/dev/null && ++ echo_test_string=`eval $cmd` && ++ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null ++ then ++ break ++ fi ++ done ++fi + +-EOF +- # Now generate the symbol file. +- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' ++if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ : ++else ++ # The Solaris, AIX, and Digital Unix default echo programs unquote ++ # backslashes. This makes it impossible to quote backslashes using ++ # echo "$something" | sed 's/\\/\\\\/g' ++ # ++ # So, first we look for a working echo in the user's PATH. + +- cat <> conftest.$ac_ext +-#if defined (__STDC__) && __STDC__ +-# define lt_ptr_t void * +-#else +-# define lt_ptr_t char * +-# define const +-#endif ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for dir in $PATH /usr/ucb; do ++ IFS="$lt_save_ifs" ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ echo="$dir/echo" ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" + +-/* The mapping between symbol names and symbols. */ +-const struct { +- const char *name; +- lt_ptr_t address; +-} +-lt_preloaded_symbols[[]] = +-{ +-EOF +- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext +- cat <<\EOF >> conftest.$ac_ext +- {0, (lt_ptr_t) 0} +-}; ++ if test "X$echo" = Xecho; then ++ # We didn't find a better echo, so look for alternatives. ++ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # This shell has a builtin print -r that does the trick. ++ echo='print -r' ++ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && ++ test "X$CONFIG_SHELL" != X/bin/ksh; then ++ # If we have ksh, try running configure again with it. ++ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++ export ORIGINAL_CONFIG_SHELL ++ CONFIG_SHELL=/bin/ksh ++ export CONFIG_SHELL ++ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} ++ else ++ # Try using printf. ++ echo='printf %s\n' ++ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && ++ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL ++ export CONFIG_SHELL ++ SHELL="$CONFIG_SHELL" ++ export SHELL ++ echo="$CONFIG_SHELL [$]0 --fallback-echo" ++ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && ++ test "X$echo_testing_string" = 'X\t' && ++ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && ++ test "X$echo_testing_string" = "X$echo_test_string"; then ++ echo="$CONFIG_SHELL [$]0 --fallback-echo" ++ else ++ # maybe with a smaller string... ++ prev=: + +-#ifdef __cplusplus +-} +-#endif +-EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- lt_save_LIBS="$LIBS" +- lt_save_CFLAGS="$CFLAGS" +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then +- pipe_works=yes ++ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do ++ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null ++ then ++ break + fi +- LIBS="$lt_save_LIBS" +- CFLAGS="$lt_save_CFLAGS" ++ prev="$cmd" ++ done ++ ++ if test "$prev" != 'sed 50q "[$]0"'; then ++ echo_test_string=`eval $prev` ++ export echo_test_string ++ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else +- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD ++ # Oops. We lost completely, so just stick with echo. ++ echo=echo + fi +- else +- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi +- else +- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD +- cat conftest.$ac_ext >&5 +- fi +- rm -f conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= + fi +-done +-]) +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- lt_cv_sys_global_symbol_to_cdecl= + fi +-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) + fi +-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + ++# Copy echo and quote the copy suitably for passing to libtool from ++# the Makefile, instead of quoting the original, which is used later. ++ECHO=$echo ++if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ++ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" ++fi ++ ++AC_SUBST(ECHO) ++])])# _LT_AC_PROG_ECHO_BACKSLASH + +-# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +-# --------------------------------------- +-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +-[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +-_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +-_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +-AC_MSG_CHECKING([for $compiler option to produce PIC]) +- ifelse([$1],[CXX],[ +- # C++ specific cases for pic, static, wl, etc. +- if test "$GXX" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++# _LT_AC_LOCK ++# ----------- ++AC_DEFUN([_LT_AC_LOCK], ++[AC_ARG_ENABLE([libtool-lock], ++ [AC_HELP_STRING([--disable-libtool-lock], ++ [avoid locking (might break parallel builds)])]) ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" + ;; +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. ++ *ELF-64*) ++ HPUX_IA64_MODE="64" + ;; +- mingw* | os2* | pw32*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '[#]line __oline__ "configure"' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" + ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" + ;; +- *djgpp*) +- # DJGPP does not support shared libraries at all +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" + ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" + ;; +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case "$host_cpu" in +- hppa*64*|ia64*) +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac ++ *N32*) ++ LD="${LD-ld} -n32" + ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ *64-bit*) ++ LD="${LD-ld} -64" + ;; + esac +- else +- case $host_os in +- aix4* | aix5*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- chorus*) +- case $cc_basename in +- cxch68*) +- # Green Hills C++ Compiler +- # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" +- ;; +- esac +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- esac +- ;; +- dgux*) +- case $cc_basename in +- ec++*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) +- # FreeBSD uses GNU C++ +- ;; +- hpux9* | hpux10* | hpux11*) +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" +- if test "$host_cpu" != ia64; then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- fi +- ;; +- aCC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" +- case "$host_cpu" in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- ;; +- *) +- ;; +- esac +- ;; +- irix5* | irix6* | nonstopux*) +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- # CC pic flag -KPIC is the default. +- ;; +- *) +- ;; +- esac +- ;; +- linux*) +- case $cc_basename in +- KCC*) +- # KAI C++ Compiler +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- icpc* | ecpc*) +- # Intel C++ +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgCC*) +- # Portland Group C++ compiler. +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- cxx*) +- # Compaq C++ +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- lynxos*) +- ;; +- m88k*) +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' +- ;; +- *) +- ;; +- esac +- ;; +- netbsd*) +- ;; +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- cxx*) +- # Digital/Compaq C++ +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- psos*) +- ;; +- sco*) +- case $cc_basename in +- CC*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- *) +- ;; +- esac +- ;; +- solaris*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- ;; +- *) +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- lcc*) +- # Lucid +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- *) +- ;; +- esac +- ;; +- unixware*) +- ;; +- vxworks*) +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ ppc64-*linux*|powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ ppc*-*linux*|powerpc*-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; + esac + fi +-], +-[ +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ rm -rf conftest* ++ ;; + +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, ++ [AC_LANG_PUSH(C) ++ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) ++ AC_LANG_POP]) ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) LD="${LD-ld} -64" ;; ++ esac + ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; + +- amigaos*) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; ++AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], ++[*-*-cygwin* | *-*-mingw* | *-*-pw32*) ++ AC_CHECK_TOOL(DLLTOOL, dlltool, false) ++ AC_CHECK_TOOL(AS, as, false) ++ AC_CHECK_TOOL(OBJDUMP, objdump, false) ++ ;; ++ ]) ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++])# _LT_AC_LOCK ++ ++ ++# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ---------------------------------------------------------------- ++# Check whether the given compiler option works ++AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], ++[AC_REQUIRE([LT_AC_PROG_SED]) ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$3" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ fi ++ $rm conftest* ++]) ++ ++if test x"[$]$2" = xyes; then ++ ifelse([$5], , :, [$5]) ++else ++ ifelse([$6], , :, [$6]) ++fi ++])# AC_LIBTOOL_COMPILER_OPTION ++ ++ ++# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, ++# [ACTION-SUCCESS], [ACTION-FAILURE]) ++# ------------------------------------------------------------ ++# Check whether the given compiler option works ++AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_CACHE_CHECK([$1], [$2], ++ [$2=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $3" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&AS_MESSAGE_LOG_FD ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ $2=yes ++ fi ++ else ++ $2=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++]) ++ ++if test x"[$]$2" = xyes; then ++ ifelse([$4], , :, [$4]) ++else ++ ifelse([$5], , :, [$5]) ++fi ++])# AC_LIBTOOL_LINKER_OPTION ++ ++ ++# AC_LIBTOOL_SYS_MAX_CMD_LEN ++# -------------------------- ++AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], ++[# find the maximum length of command line arguments ++AC_MSG_CHECKING([the maximum length of command line arguments]) ++AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ ++ = "XX$teststring") >/dev/null 2>&1 && ++ new_result=`expr "X$teststring" : ".*" 2>&1` && ++ lt_cv_sys_max_cmd_len=$new_result && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on massive ++ # amounts of additional arguments before passing them to the linker. ++ # It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++]) ++if test -n $lt_cv_sys_max_cmd_len ; then ++ AC_MSG_RESULT($lt_cv_sys_max_cmd_len) ++else ++ AC_MSG_RESULT(none) ++fi ++])# AC_LIBTOOL_SYS_MAX_CMD_LEN ++ ++ ++# _LT_AC_CHECK_DLFCN ++# ------------------ ++AC_DEFUN([_LT_AC_CHECK_DLFCN], ++[AC_CHECK_HEADERS(dlfcn.h)dnl ++])# _LT_AC_CHECK_DLFCN ++ ++ ++# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, ++# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) ++# --------------------------------------------------------------------- ++AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], ++[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl ++if test "$cross_compiling" = yes; then : ++ [$4] ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext < ++#endif + +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' +- ;; ++#include + +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif + +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- enable_shared=no +- ;; ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif + +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; ++#ifdef __cplusplus ++extern "C" void exit (int); ++#endif + +- hpux*) +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case "$host_cpu" in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; ++void fnord() { int i=42;} ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; + +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ /* dlclose (self); */ ++ } + else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- darwin*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- case $cc_basename in +- xlc*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- esac +- ;; +- +- mingw* | pw32* | os2*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' +- ;; +- +- hpux9* | hpux10* | hpux11*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case "$host_cpu" in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- ;; +- +- irix5* | irix6* | nonstopux*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC (with -KPIC) is the default. +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; ++ puts (dlerror ()); + +- newsos6) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; ++ exit (status); ++}] ++EOF ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) $1 ;; ++ x$lt_dlneed_uscore) $2 ;; ++ x$lt_dlunknown|x*) $3 ;; ++ esac ++ else : ++ # compilation failed ++ $3 ++ fi ++fi ++rm -fr conftest* ++])# _LT_AC_TRY_DLOPEN_SELF + +- linux*) +- case $cc_basename in +- icc* | ecc*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgcc* | pgf77* | pgf90*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- ccc*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All Alpha code is PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- esac +- ;; + +- osf3* | osf4* | osf5*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All OSF/1 code is PIC. +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; ++# AC_LIBTOOL_DLOPEN_SELF ++# ---------------------- ++AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], ++[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= + +- sco3.2v5*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' +- ;; ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; + +- solaris*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; +- esac +- ;; ++ mingw* | pw32*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; + +- sunos4*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; ++ darwin*) ++ # if libdl is installed we need to link against it ++ AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ]) ++ ;; + +- sysv4*MP*) +- if test -d /usr/nec ;then +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; ++ *) ++ AC_CHECK_FUNC([shl_load], ++ [lt_cv_dlopen="shl_load"], ++ [AC_CHECK_LIB([dld], [shl_load], ++ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], ++ [AC_CHECK_FUNC([dlopen], ++ [lt_cv_dlopen="dlopen"], ++ [AC_CHECK_LIB([dl], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], ++ [AC_CHECK_LIB([svld], [dlopen], ++ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], ++ [AC_CHECK_LIB([dld], [dld_link], ++ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ]) ++ ;; ++ esac + +- unicos*) +- _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi + +- uts4*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-]) +-AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then +- AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], +- _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), +- [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], +- [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in +- "" | " "*) ;; +- *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; +- esac], +- [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +-fi +-case "$host_os" in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- *) +- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" +- ;; +-esac +-]) ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" + ++ AC_CACHE_CHECK([whether a program can dlopen itself], ++ lt_cv_dlopen_self, [dnl ++ _LT_AC_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, ++ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ++ ]) + +-# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +-# ------------------------------------ +-# See if the linker supports building shared libraries. +-AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +-[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-ifelse([$1],[CXX],[ +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- case $host_os in +- aix4* | aix5*) +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- fi +- ;; +- pw32*) +- _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" +- ;; +- cygwin* | mingw*) +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- *) +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- esac +-],[ +- runpath_var= +- _LT_AC_TAGVAR(allow_undefined_flag, $1)= +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- _LT_AC_TAGVAR(archive_cmds, $1)= +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)= +- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= +- _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +- _LT_AC_TAGVAR(hardcode_automatic, $1)=no +- _LT_AC_TAGVAR(module_cmds, $1)= +- _LT_AC_TAGVAR(module_expsym_cmds, $1)= +- _LT_AC_TAGVAR(always_export_symbols, $1)=no +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- _LT_AC_TAGVAR(include_expsyms, $1)= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- extract_expsyms_cmds= +- # Just being paranoid about ensuring that cc_basename is set. +- _LT_CC_BASENAME([$compiler]) +- case $host_os in +- cygwin* | mingw* | pw32*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ AC_CACHE_CHECK([whether a statically linked program can dlopen itself], ++ lt_cv_dlopen_self_static, [dnl ++ _LT_AC_TRY_DLOPEN_SELF( ++ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, ++ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ++ ]) + fi +- ;; +- openbsd*) +- with_gnu_ld=no ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" + ;; + esac + +- _LT_AC_TAGVAR(ld_shlibs, $1)=yes +- if test "$with_gnu_ld" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>/dev/null` in +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix3* | aix4* | aix5*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- cat <&2 +- +-*** Warning: the GNU linker, at least up to release 2.9.1, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to modify your PATH +-*** so that a non-GNU linker is found, and then restart. ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac + +-EOF +- fi +- ;; ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++])# AC_LIBTOOL_DLOPEN_SELF + +- amigaos*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + +- # Samuel A. Falvo II reports +- # that the semantics of dynamic libraries on AmigaOS, at least up +- # to version 4, is to share data among multiple programs linked +- # with the same dynamic library. Since this doesn't match the +- # behavior of shared libraries on other platforms, we can't use +- # them. +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; ++# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) ++# --------------------------------- ++# Check to see if options -c and -o are simultaneously supported by compiler ++AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], ++ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], ++ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no ++ $rm -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + +- beos*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&AS_MESSAGE_LOG_FD ++ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ fi ++ fi ++ chmod u+w . 2>&AS_MESSAGE_LOG_FD ++ $rm conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files ++ $rm out/* && rmdir out ++ cd .. ++ rmdir conftest ++ $rm conftest* ++]) ++])# AC_LIBTOOL_PROG_CC_C_O + +- cygwin* | mingw* | pw32*) +- # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(always_export_symbols, $1)=no +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + +- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; ++# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) ++# ----------------------------------------- ++# Check to see if we can do hard links to lock some files if needed ++AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], ++[AC_REQUIRE([_LT_AC_LOCK])dnl + +- linux*) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- tmp_addflag= +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- ;; +- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- tmp_addflag=' -fpic -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- esac +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++hard_links="nottested" ++if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ AC_MSG_CHECKING([if we can lock with hard links]) ++ hard_links=yes ++ $rm conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ AC_MSG_RESULT([$hard_links]) ++ if test "$hard_links" = no; then ++ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + +- if test $supports_anon_versioning = yes; then +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; ++# AC_LIBTOOL_OBJDIR ++# ----------------- ++AC_DEFUN([AC_LIBTOOL_OBJDIR], ++[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], ++[rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null]) ++objdir=$lt_cv_objdir ++])# AC_LIBTOOL_OBJDIR + +- solaris* | sysv5*) +- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- cat <&2 + +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. ++# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) ++# ---------------------------------------------- ++# Check hardcoding attributes. ++AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], ++[AC_MSG_CHECKING([how to hardcode library paths into programs]) ++_LT_AC_TAGVAR(hardcode_action, $1)= ++if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ ++ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ ++ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + +-EOF +- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; ++ # We can hardcode non-existant directories. ++ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && ++ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then ++ # Linking always hardcodes the temporary library directory. ++ _LT_AC_TAGVAR(hardcode_action, $1)=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ _LT_AC_TAGVAR(hardcode_action, $1)=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported ++fi ++AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +- sunos4*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + +- *) +- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac + +- if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then +- runpath_var= +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported +- fi +- ;; ++# AC_LIBTOOL_SYS_LIB_STRIP ++# ------------------------ ++AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], ++[striplib= ++old_striplib= ++AC_MSG_CHECKING([whether stripping libraries is possible]) ++if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ AC_MSG_RESULT([yes]) ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++fi ++ ;; ++ *) ++ AC_MSG_RESULT([no]) ++ ;; ++ esac ++fi ++])# AC_LIBTOOL_SYS_LIB_STRIP + +- aix4* | aix5*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- if $NM -V 2>&1 | grep 'GNU' > /dev/null; then +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no + +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- esac ++# AC_LIBTOOL_SYS_DYNAMIC_LINKER ++# ----------------------------- ++# PORTME Fill in your ld.so characteristics ++AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_MSG_CHECKING([dynamic linker characteristics]) ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++m4_if($1,[],[ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[[lt_foo]]++; } ++ if (lt_freq[[lt_foo]] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`echo $lt_search_path_spec` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi]) ++need_lib_prefix=unknown ++hardcode_into_libs=no + +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown + +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH + +- _LT_AC_TAGVAR(archive_cmds, $1)='' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; + +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && \ +- strings "$collect2name" | grep resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- else +- # We have old collect2 +- _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[[01]] | aix4.[[01]].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : + else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an empty executable. +- _LT_AC_SYS_LIBPATH_AIX +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- # -bexpall does not export symbols beginning with underscore (_) +- _LT_AC_TAGVAR(always_export_symbols, $1)=yes +- # Exported symbols can be pulled into shared objects from archives +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds it's shared libraries. +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi ++ can_build_shared=no + fi + ;; +- +- amigaos*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- # see comment about different semantics on the GNU ld section +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- bsdi[[45]]*) +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic +- ;; +- +- cygwin* | mingw* | pw32*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' +- # FIXME: Should let the user specify the lib program. +- _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' +- _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' +- _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- ;; +- +- darwin* | rhapsody*) +- case "$host_os" in +- rhapsody* | darwin1.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' +- ;; +- *) # Darwin 1.3 on +- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- else +- case ${MACOSX_DEPLOYMENT_TARGET} in +- 10.[[012]]) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +- ;; +- 10.*) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' +- ;; +- esac +- fi +- ;; +- esac +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_automatic, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- if test "$GCC" = yes ; then +- output_verbose_link_cmd='echo' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else +- case $cc_basename in +- xlc*) +- output_verbose_link_cmd='echo' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' +- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' +- ;; +- *) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' + fi +- ;; ++ shlibpath_var=LIBPATH ++ fi ++ ;; + +- dgux*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; + +- freebsd1*) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; + +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++bsdi[[45]]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no + +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes + +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; +- +- hpux9*) +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else +- _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; + +- hpux10* | hpux11*) +- if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*|ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case "$host_cpu" in +- hppa*64*|ia64*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- ia64*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- *) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ m4_if([$1], [],[ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; + +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- fi +- ;; ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; + +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- ;; ++freebsd1*) ++ dynamic_linker=no ++ ;; + +- netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[[123]]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no + ;; +- +- newsos6) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes + ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[[01]]* | freebsdelf3.[[01]]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ ++ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++interix[[3-9]]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; + +- openbsd*) +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- else +- case $host_os in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- ;; +- *) +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- ;; ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; + +- os2*) +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; + +- osf3*) +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes + +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- else +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ +- $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi + +- # Both c and cxx compiler support -rpath directly +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; + +- sco3.2v5*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ;; ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; + +- solaris*) +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' +- else +- wlarc='' +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; +- *) +- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; +- esac +- _LT_AC_TAGVAR(link_all_deplibs, $1)=yes +- ;; ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; + +- sysv4) +- case $host_vendor in +- sni) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[[89]] | openbsd2.[[89]].*) ++ shlibpath_overrides_runpath=no + ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' +- _LT_AC_TAGVAR(hardcode_direct, $1)=no +- ;; +- motorola) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ++ *) ++ shlibpath_overrides_runpath=yes + ;; + esac +- runpath_var='LD_RUN_PATH' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; + +- sysv4.3*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' +- ;; ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; + +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- _LT_AC_TAGVAR(ld_shlibs, $1)=yes +- fi +- ;; ++rdos*) ++ dynamic_linker=no ++ ;; + +- sysv4.2uw2*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_direct, $1)=yes +- _LT_AC_TAGVAR(hardcode_minus_L, $1)=no +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- hardcode_runpath_var=yes ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; +- +- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) +- _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' +- if test "$GCC" = yes; then +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- runpath_var='LD_RUN_PATH' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ siemens) ++ need_lib_prefix=no + ;; +- +- sysv5*) +- _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; ++ esac ++ ;; + +- uts4*) +- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; + +- *) +- _LT_AC_TAGVAR(ld_shlibs, $1)=no +- ;; ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; + esac + fi +-]) +-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++AC_MSG_RESULT([$dynamic_linker]) ++test "$dynamic_linker" = no && can_build_shared=no + + variables_saved_for_relink="PATH $shlibpath_var $runpath_var" + if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + fi ++])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + +-# +-# Do we need to explicitly link libc? +-# +-case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +-x|xyes) +- # Assume -lc should be added +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $_LT_AC_TAGVAR(archive_cmds, $1) in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_MSG_CHECKING([whether -lc should be explicitly linked in]) +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++# _LT_AC_TAGCONFIG ++# ---------------- ++AC_DEFUN([_LT_AC_TAGCONFIG], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_ARG_WITH([tags], ++ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], ++ [include additional configurations @<:@automatic@:>@])], ++ [tagnames="$withval"]) + +- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) +- _LT_AC_TAGVAR(allow_undefined_flag, $1)= +- if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) +- then +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +- else +- _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes +- fi +- _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $rm conftest* +- AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) +- ;; ++if test -f "$ltmain" && test -n "$tagnames"; then ++ if test ! -f "${ofile}"; then ++ AC_MSG_WARN([output file `$ofile' does not exist]) ++ fi ++ ++ if test -z "$LTCC"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" ++ if test -z "$LTCC"; then ++ AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) ++ else ++ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) ++ fi ++ fi ++ if test -z "$LTCFLAGS"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" ++ fi ++ ++ # Extract list of available tagged configurations in $ofile. ++ # Note that this assumes the entire list is on one line. ++ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` ++ ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for tagname in $tagnames; do ++ IFS="$lt_save_ifs" ++ # Check whether tagname contains only valid characters ++ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in ++ "") ;; ++ *) AC_MSG_ERROR([invalid tag name: $tagname]) ++ ;; + esac ++ ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null ++ then ++ AC_MSG_ERROR([tag name \"$tagname\" already exists]) ++ fi ++ ++ # Update the list of available tags. ++ if test -n "$tagname"; then ++ echo appending configuration tag \"$tagname\" to $ofile ++ ++ case $tagname in ++ CXX) ++ if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_LIBTOOL_LANG_CXX_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ F77) ++ if test -n "$F77" && test "X$F77" != "Xno"; then ++ AC_LIBTOOL_LANG_F77_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ GCJ) ++ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then ++ AC_LIBTOOL_LANG_GCJ_CONFIG ++ else ++ tagname="" ++ fi ++ ;; ++ ++ RC) ++ AC_LIBTOOL_LANG_RC_CONFIG ++ ;; ++ ++ *) ++ AC_MSG_ERROR([Unsupported tag name: $tagname]) ++ ;; ++ esac ++ ++ # Append the new tag name to the list of available tags. ++ if test -n "$tagname" ; then ++ available_tags="$available_tags $tagname" ++ fi ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ++ # Now substitute the updated list of available tags. ++ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then ++ mv "${ofile}T" "$ofile" ++ chmod +x "$ofile" ++ else ++ rm -f "${ofile}T" ++ AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +- ;; +-esac +-])# AC_LIBTOOL_PROG_LD_SHLIBS ++fi ++])# _LT_AC_TAGCONFIG + + +-# _LT_AC_FILE_LTDLL_C +-# ------------------- +-# Be careful that the start marker always follows a newline. +-AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +-# /* ltdll.c starts here */ +-# #define WIN32_LEAN_AND_MEAN +-# #include +-# #undef WIN32_LEAN_AND_MEAN +-# #include +-# +-# #ifndef __CYGWIN__ +-# # ifdef __CYGWIN32__ +-# # define __CYGWIN__ __CYGWIN32__ +-# # endif +-# #endif +-# +-# #ifdef __cplusplus +-# extern "C" { +-# #endif +-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +-# #ifdef __cplusplus +-# } +-# #endif +-# +-# #ifdef __CYGWIN__ +-# #include +-# DECLARE_CYGWIN_DLL( DllMain ); +-# #endif +-# HINSTANCE __hDllInstance_base; +-# +-# BOOL APIENTRY +-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +-# { +-# __hDllInstance_base = hInst; +-# return TRUE; +-# } +-# /* ltdll.c ends here */ +-])# _LT_AC_FILE_LTDLL_C ++# AC_LIBTOOL_DLOPEN ++# ----------------- ++# enable checks for dlopen support ++AC_DEFUN([AC_LIBTOOL_DLOPEN], ++ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) ++])# AC_LIBTOOL_DLOPEN + + +-# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +-# --------------------------------- +-AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) ++# AC_LIBTOOL_WIN32_DLL ++# -------------------- ++# declare package support for building win32 DLLs ++AC_DEFUN([AC_LIBTOOL_WIN32_DLL], ++[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) ++])# AC_LIBTOOL_WIN32_DLL + + +-# old names +-AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +-AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +-AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +-AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +-AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +-AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +-AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) ++# AC_ENABLE_SHARED([DEFAULT]) ++# --------------------------- ++# implement the --enable-shared flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_SHARED], ++[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([shared], ++ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], ++ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_shared=]AC_ENABLE_SHARED_DEFAULT) ++])# AC_ENABLE_SHARED + +-# This is just to silence aclocal about the macro not being used +-ifelse([AC_DISABLE_FAST_INSTALL]) + +-AC_DEFUN([LT_AC_PROG_GCJ], +-[AC_CHECK_TOOL(GCJ, gcj, no) +- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" +- AC_SUBST(GCJFLAGS) +-]) ++# AC_DISABLE_SHARED ++# ----------------- ++# set the default shared flag to --disable-shared ++AC_DEFUN([AC_DISABLE_SHARED], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_SHARED(no) ++])# AC_DISABLE_SHARED + +-AC_DEFUN([LT_AC_PROG_RC], +-[AC_CHECK_TOOL(RC, windres, no) +-]) + +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_SED. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-# LT_AC_PROG_SED +-# -------------- +-# Check for a fully-functional sed program, that truncates +-# as few characters as possible. Prefer GNU sed if found. +-AC_DEFUN([LT_AC_PROG_SED], +-[AC_MSG_CHECKING([for a sed that does not truncate output]) +-AC_CACHE_VAL(lt_cv_path_SED, +-[# Loop through the user's path and test for sed and gsed. +-# Then use that list of sed's as ones to test for truncation. +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for lt_ac_prog in sed gsed; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then +- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" +- fi +- done +- done +-done +-lt_ac_max=0 +-lt_ac_count=0 +-# Add /usr/xpg4/bin/sed as it is typically found on Solaris +-# along with /bin/sed that truncates output. +-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do +- test ! -f $lt_ac_sed && continue +- cat /dev/null > conftest.in +- lt_ac_count=0 +- echo $ECHO_N "0123456789$ECHO_C" >conftest.in +- # Check for GNU sed and select it if it is found. +- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then +- lt_cv_path_SED=$lt_ac_sed +- break +- fi +- while true; do +- cat conftest.in conftest.in >conftest.tmp +- mv conftest.tmp conftest.in +- cp conftest.in conftest.nl +- echo >>conftest.nl +- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break +- cmp -s conftest.out conftest.nl || break +- # 10000 chars as input seems more than enough +- test $lt_ac_count -gt 10 && break +- lt_ac_count=`expr $lt_ac_count + 1` +- if test $lt_ac_count -gt $lt_ac_max; then +- lt_ac_max=$lt_ac_count +- lt_cv_path_SED=$lt_ac_sed +- fi +- done +-done +-]) +-SED=$lt_cv_path_SED +-AC_MSG_RESULT([$SED]) +-]) ++# AC_ENABLE_STATIC([DEFAULT]) ++# --------------------------- ++# implement the --enable-static flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_STATIC], ++[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([static], ++ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], ++ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_static=]AC_ENABLE_STATIC_DEFAULT) ++])# AC_ENABLE_STATIC + + +-# Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. ++# AC_DISABLE_STATIC ++# ----------------- ++# set the default static flag to --disable-static ++AC_DEFUN([AC_DISABLE_STATIC], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_STATIC(no) ++])# AC_DISABLE_STATIC + +-# 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, 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. ++# AC_ENABLE_FAST_INSTALL([DEFAULT]) ++# --------------------------------- ++# implement the --enable-fast-install flag ++# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. ++AC_DEFUN([AC_ENABLE_FAST_INSTALL], ++[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl ++AC_ARG_ENABLE([fast-install], ++ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], ++ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], ++ [p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac], ++ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) ++])# AC_ENABLE_FAST_INSTALL + +-# 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. + +-# serial 3 ++# AC_DISABLE_FAST_INSTALL ++# ----------------------- ++# set the default to --disable-fast-install ++AC_DEFUN([AC_DISABLE_FAST_INSTALL], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++AC_ENABLE_FAST_INSTALL(no) ++])# AC_DISABLE_FAST_INSTALL + +-AC_PREREQ(2.50) + +-# AM_PROG_LEX +-# ----------- +-# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a +-# "missing" invocation, for better error output. +-AC_DEFUN([AM_PROG_LEX], +-[AC_REQUIRE([AM_MISSING_HAS_RUN])dnl +-AC_REQUIRE([AC_PROG_LEX])dnl +-if test "$LEX" = :; then +- LEX=${am_missing_run}flex +-fi]) ++# AC_LIBTOOL_PICMODE([MODE]) ++# -------------------------- ++# implement the --with-pic flag ++# MODE is either `yes' or `no'. If omitted, it defaults to `both'. ++AC_DEFUN([AC_LIBTOOL_PICMODE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++pic_mode=ifelse($#,1,$1,default) ++])# AC_LIBTOOL_PICMODE + +-# gettext.m4 serial 36 (gettext-0.14.3) +-dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. + +-dnl Authors: +-dnl Ulrich Drepper , 1995-2000. +-dnl Bruno Haible , 2000-2003. ++# AC_PROG_EGREP ++# ------------- ++# This is predefined starting with Autoconf 2.54, so this conditional ++# definition can be removed once we require Autoconf 2.54 or later. ++m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], ++[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], ++ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 ++ then ac_cv_prog_egrep='grep -E' ++ else ac_cv_prog_egrep='egrep' ++ fi]) ++ EGREP=$ac_cv_prog_egrep ++ AC_SUBST([EGREP]) ++])]) + +-dnl Macro to add for using GNU gettext. + +-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +-dnl default (if it is not specified or empty) is 'no-libtool'. +-dnl INTLSYMBOL should be 'external' for packages with no intl directory, +-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +-dnl If INTLSYMBOL is 'use-libtool', then a libtool library +-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +-dnl depending on --{enable,disable}-{shared,static} and on the presence of +-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +-dnl $(top_builddir)/intl/libintl.a will be created. +-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +-dnl implementations (in libc or libintl) without the ngettext() function +-dnl will be ignored. If NEEDSYMBOL is specified and is +-dnl 'need-formatstring-macros', then GNU gettext implementations that don't +-dnl support the ISO C 99 formatstring macros will be ignored. +-dnl INTLDIR is used to find the intl libraries. If empty, +-dnl the value `$(top_builddir)/intl/' is used. +-dnl +-dnl The result of the configuration is one of three cases: +-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +-dnl and used. +-dnl Catalog format: GNU --> install in $(datadir) +-dnl Catalog extension: .mo after installation, .gmo in source tree +-dnl 2) GNU gettext has been found in the system's C library. +-dnl Catalog format: GNU --> install in $(datadir) +-dnl Catalog extension: .mo after installation, .gmo in source tree +-dnl 3) No internationalization, always use English msgid. +-dnl Catalog format: none +-dnl Catalog extension: none +-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +-dnl The use of .gmo is historical (it was needed to avoid overwriting the +-dnl GNU format catalogs when building on a platform with an X/Open gettext), +-dnl but we keep it in order not to force irrelevant filename changes on the +-dnl maintainers. +-dnl +-AC_DEFUN([AM_GNU_GETTEXT], +-[ +- dnl Argument checking. +- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , +- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +-])])])])]) +- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , +- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +-])])])]) +- define([gt_included_intl], ifelse([$1], [external], [no], [yes])) +- define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) ++# AC_PATH_TOOL_PREFIX ++# ------------------- ++# find a file program which can recognize shared library ++AC_DEFUN([AC_PATH_TOOL_PREFIX], ++[AC_REQUIRE([AC_PROG_EGREP])dnl ++AC_MSG_CHECKING([for $1]) ++AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, ++[case $MAGIC_CMD in ++[[\\/*] | ?:[\\/]*]) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++dnl $ac_dummy forces splitting on constant user-supplied paths. ++dnl POSIX.2 word splitting is done only on the output of word expansions, ++dnl not every word. This closes a longstanding sh security hole. ++ ac_dummy="ifelse([$2], , $PATH, [$2])" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/$1; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/$1" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 + +- AC_REQUIRE([AM_PO_SUBDIRS])dnl +- ifelse(gt_included_intl, yes, [ +- AC_REQUIRE([AM_INTL_SUBDIR])dnl +- ]) ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org + +- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) ++EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac]) ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ AC_MSG_RESULT($MAGIC_CMD) ++else ++ AC_MSG_RESULT(no) ++fi ++])# AC_PATH_TOOL_PREFIX + +- dnl Sometimes libintl requires libiconv, so first search for libiconv. +- dnl Ideally we would do this search only after the +- dnl if test "$USE_NLS" = "yes"; then +- dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then +- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT +- dnl the configure script would need to contain the same shell code +- dnl again, outside any 'if'. There are two solutions: +- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. +- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. +- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not +- dnl documented, we avoid it. +- ifelse(gt_included_intl, yes, , [ +- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) +- ]) + +- dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. +- gt_INTL_MACOSX ++# AC_PATH_MAGIC ++# ------------- ++# find a file program which can recognize a shared library ++AC_DEFUN([AC_PATH_MAGIC], ++[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) ++ else ++ MAGIC_CMD=: ++ fi ++fi ++])# AC_PATH_MAGIC + +- dnl Set USE_NLS. +- AM_NLS + +- ifelse(gt_included_intl, yes, [ +- BUILD_INCLUDED_LIBINTL=no +- USE_INCLUDED_LIBINTL=no +- ]) +- LIBINTL= +- LTLIBINTL= +- POSUB= ++# AC_PROG_LD ++# ---------- ++# find the pathname to the GNU or non-GNU linker ++AC_DEFUN([AC_PROG_LD], ++[AC_ARG_WITH([gnu-ld], ++ [AC_HELP_STRING([--with-gnu-ld], ++ [assume the C compiler uses GNU ld @<:@default=no@:>@])], ++ [test "$withval" = no || with_gnu_ld=yes], ++ [with_gnu_ld=no]) ++AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_REQUIRE([AC_PROG_CC])dnl ++AC_REQUIRE([AC_CANONICAL_HOST])dnl ++AC_REQUIRE([AC_CANONICAL_BUILD])dnl ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ AC_MSG_CHECKING([for ld used by $CC]) ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [[\\/]]* | ?:[[\\/]]*) ++ re_direlt='/[[^/]][[^/]]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ AC_MSG_CHECKING([for GNU ld]) ++else ++ AC_MSG_CHECKING([for non-GNU ld]) ++fi ++AC_CACHE_VAL(lt_cv_path_LD, ++[if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &1 +-]ifelse([$2], [need-formatstring-macros], +-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +-#endif +-changequote(,)dnl +-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +-changequote([,])dnl +-], [])[extern int _nl_msg_cat_cntr; +-extern int *_nl_domain_bindings;], +- [bindtextdomain ("", ""); +-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], +- gt_cv_func_gnugettext_libc=yes, +- gt_cv_func_gnugettext_libc=no)]) ++# AC_PROG_LD_RELOAD_FLAG ++# ---------------------- ++# find reload flag for linker ++# -- PORTME Some linkers may need a different reload flag. ++AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], ++[AC_CACHE_CHECK([for $LD option to reload object files], ++ lt_cv_ld_reload_flag, ++ [lt_cv_ld_reload_flag='-r']) ++reload_flag=$lt_cv_ld_reload_flag ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac ++])# AC_PROG_LD_RELOAD_FLAG + +- if test "$gt_cv_func_gnugettext_libc" != "yes"; then +- dnl Sometimes libintl requires libiconv, so first search for libiconv. +- ifelse(gt_included_intl, yes, , [ +- AM_ICONV_LINK +- ]) +- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL +- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) +- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL +- dnl even if libiconv doesn't exist. +- AC_LIB_LINKFLAGS_BODY([intl]) +- AC_CACHE_CHECK([for GNU gettext in libintl], +- gt_cv_func_gnugettext_libintl, +- [gt_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS $INCINTL" +- gt_save_LIBS="$LIBS" +- LIBS="$LIBS $LIBINTL" +- dnl Now see whether libintl exists and does not depend on libiconv. +- AC_TRY_LINK([#include +-]ifelse([$2], [need-formatstring-macros], +-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +-#endif +-changequote(,)dnl +-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +-changequote([,])dnl +-], [])[extern int _nl_msg_cat_cntr; +-extern +-#ifdef __cplusplus +-"C" +-#endif +-const char *_nl_expand_alias (const char *);], +- [bindtextdomain ("", ""); +-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], +- gt_cv_func_gnugettext_libintl=yes, +- gt_cv_func_gnugettext_libintl=no) +- dnl Now see whether libintl exists and depends on libiconv. +- if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then +- LIBS="$LIBS $LIBICONV" +- AC_TRY_LINK([#include +-]ifelse([$2], [need-formatstring-macros], +-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +-#endif +-changequote(,)dnl +-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +-changequote([,])dnl +-], [])[extern int _nl_msg_cat_cntr; +-extern +-#ifdef __cplusplus +-"C" +-#endif +-const char *_nl_expand_alias (const char *);], +- [bindtextdomain ("", ""); +-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], +- [LIBINTL="$LIBINTL $LIBICONV" +- LTLIBINTL="$LTLIBINTL $LTLIBICONV" +- gt_cv_func_gnugettext_libintl=yes +- ]) +- fi +- CPPFLAGS="$gt_save_CPPFLAGS" +- LIBS="$gt_save_LIBS"]) +- fi + +- dnl If an already present or preinstalled GNU gettext() is found, +- dnl use it. But if this macro is used in GNU gettext, and GNU +- dnl gettext is already preinstalled in libintl, we update this +- dnl libintl. (Cf. the install rule in intl/Makefile.in.) +- if test "$gt_cv_func_gnugettext_libc" = "yes" \ +- || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ +- && test "$PACKAGE" != gettext-runtime \ +- && test "$PACKAGE" != gettext-tools; }; then +- gt_use_preinstalled_gnugettext=yes +- else +- dnl Reset the values set by searching for libintl. +- LIBINTL= +- LTLIBINTL= +- INCINTL= +- fi ++# AC_DEPLIBS_CHECK_METHOD ++# ----------------------- ++# how to check for library dependencies ++# -- PORTME fill in with the dynamic library characteristics ++AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], ++[AC_CACHE_CHECK([how to recognize dependent libraries], ++lt_cv_deplibs_check_method, ++[lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_deplibs_check_method='unknown' ++# Need to set the preceding variable on all platforms that support ++# interlibrary dependencies. ++# 'none' -- dependencies not supported. ++# `unknown' -- same as none, but documents that we really don't know. ++# 'pass_all' -- all dependencies passed with no checks. ++# 'test_compile' -- check by making test program. ++# 'file_magic [[regex]]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given extended regex. ++# If you have `file' or equivalent on your system and you're not sure ++# whether `pass_all' will *always* work, you probably want this one. + +- ifelse(gt_included_intl, yes, [ +- if test "$gt_use_preinstalled_gnugettext" != "yes"; then +- dnl GNU gettext is not found in the C library. +- dnl Fall back on included GNU gettext library. +- nls_cv_use_gnu_gettext=yes +- fi +- fi ++case $host_os in ++aix4* | aix5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- if test "$nls_cv_use_gnu_gettext" = "yes"; then +- dnl Mark actions used to generate GNU NLS library. +- BUILD_INCLUDED_LIBINTL=yes +- USE_INCLUDED_LIBINTL=yes +- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" +- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" +- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` +- fi ++beos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- CATOBJEXT= +- if test "$gt_use_preinstalled_gnugettext" = "yes" \ +- || test "$nls_cv_use_gnu_gettext" = "yes"; then +- dnl Mark actions to use GNU gettext tools. +- CATOBJEXT=.gmo +- fi +- ]) ++bsdi[[45]]*) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' ++ lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_test_file=/shlib/libc.so ++ ;; + +- if test -n "$INTL_MACOSX_LIBS"; then +- if test "$gt_use_preinstalled_gnugettext" = "yes" \ +- || test "$nls_cv_use_gnu_gettext" = "yes"; then +- dnl Some extra flags are needed during linking. +- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" +- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" +- fi +- fi ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; + +- if test "$gt_use_preinstalled_gnugettext" = "yes" \ +- || test "$nls_cv_use_gnu_gettext" = "yes"; then +- AC_DEFINE(ENABLE_NLS, 1, +- [Define to 1 if translation of program messages to the user's native language +- is requested.]) +- else +- USE_NLS=no +- fi ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' + fi ++ ;; + +- AC_MSG_CHECKING([whether to use NLS]) +- AC_MSG_RESULT([$USE_NLS]) +- if test "$USE_NLS" = "yes"; then +- AC_MSG_CHECKING([where the gettext function comes from]) +- if test "$gt_use_preinstalled_gnugettext" = "yes"; then +- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then +- gt_source="external libintl" +- else +- gt_source="libc" +- fi +- else +- gt_source="included intl directory" +- fi +- AC_MSG_RESULT([$gt_source]) ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all + fi ++ ;; + +- if test "$USE_NLS" = "yes"; then ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- if test "$gt_use_preinstalled_gnugettext" = "yes"; then +- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then +- AC_MSG_CHECKING([how to link with libintl]) +- AC_MSG_RESULT([$LIBINTL]) +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) +- fi ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; + +- dnl For backward compatibility. Some packages may be using this. +- AC_DEFINE(HAVE_GETTEXT, 1, +- [Define if the GNU gettext() function is already present or preinstalled.]) +- AC_DEFINE(HAVE_DCGETTEXT, 1, +- [Define if the GNU dcgettext() function is already present or preinstalled.]) +- fi ++interix[[3-9]]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ++ ;; + +- dnl We need to process the po/ directory. +- POSUB=po +- fi ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- ifelse(gt_included_intl, yes, [ +- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL +- dnl to 'yes' because some of the testsuite requires it. +- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then +- BUILD_INCLUDED_LIBINTL=yes +- fi ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- dnl Make all variables we use known to autoconf. +- AC_SUBST(BUILD_INCLUDED_LIBINTL) +- AC_SUBST(USE_INCLUDED_LIBINTL) +- AC_SUBST(CATOBJEXT) ++netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' ++ fi ++ ;; + +- dnl For backward compatibility. Some configure.ins may be using this. +- nls_cv_header_intl= +- nls_cv_header_libgt= ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; + +- dnl For backward compatibility. Some Makefiles may be using this. +- DATADIRNAME=share +- AC_SUBST(DATADIRNAME) ++nto-qnx*) ++ lt_cv_deplibs_check_method=unknown ++ ;; + +- dnl For backward compatibility. Some Makefiles may be using this. +- INSTOBJEXT=.mo +- AC_SUBST(INSTOBJEXT) ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' ++ fi ++ ;; + +- dnl For backward compatibility. Some Makefiles may be using this. +- GENCAT=gencat +- AC_SUBST(GENCAT) ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- dnl For backward compatibility. Some Makefiles may be using this. +- INTLOBJS= +- if test "$USE_INCLUDED_LIBINTL" = yes; then +- INTLOBJS="\$(GETTOBJS)" +- fi +- AC_SUBST(INTLOBJS) ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- dnl Enable libtool support if the surrounding package wishes it. +- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix +- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) +- ]) ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + +- dnl For backward compatibility. Some Makefiles may be using this. +- INTLLIBS="$LIBINTL" +- AC_SUBST(INTLLIBS) ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; + +- dnl Make all documented variables known to autoconf. +- AC_SUBST(LIBINTL) +- AC_SUBST(LTLIBINTL) +- AC_SUBST(POSUB) ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac + ]) ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++])# AC_DEPLIBS_CHECK_METHOD + + +-dnl Checks for all prerequisites of the intl subdirectory, +-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +-dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +-AC_DEFUN([AM_INTL_SUBDIR], +-[ +- AC_REQUIRE([AC_PROG_INSTALL])dnl +- AC_REQUIRE([AM_MKINSTALLDIRS])dnl +- AC_REQUIRE([AC_PROG_CC])dnl +- AC_REQUIRE([AC_CANONICAL_HOST])dnl +- AC_REQUIRE([gt_GLIBC2])dnl +- AC_REQUIRE([AC_PROG_RANLIB])dnl +- AC_REQUIRE([AC_ISC_POSIX])dnl +- AC_REQUIRE([AC_HEADER_STDC])dnl +- AC_REQUIRE([AC_C_CONST])dnl +- AC_REQUIRE([bh_C_SIGNED])dnl +- AC_REQUIRE([AC_C_INLINE])dnl +- AC_REQUIRE([AC_TYPE_OFF_T])dnl +- AC_REQUIRE([AC_TYPE_SIZE_T])dnl +- AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl +- AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl +- AC_REQUIRE([gt_TYPE_WCHAR_T])dnl +- AC_REQUIRE([gt_TYPE_WINT_T])dnl +- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) +- AC_REQUIRE([gl_AC_HEADER_STDINT_H]) +- AC_REQUIRE([gt_TYPE_INTMAX_T]) +- AC_REQUIRE([gt_PRINTF_POSIX]) +- AC_REQUIRE([AC_FUNC_ALLOCA])dnl +- AC_REQUIRE([AC_FUNC_MMAP])dnl +- AC_REQUIRE([gl_GLIBC21])dnl +- AC_REQUIRE([gt_INTDIV0])dnl +- AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl +- AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl +- AC_REQUIRE([gt_INTTYPES_PRI])dnl +- AC_REQUIRE([gl_XSIZE])dnl +- AC_REQUIRE([gt_INTL_MACOSX])dnl +- +- AC_CHECK_TYPE([ptrdiff_t], , +- [AC_DEFINE([ptrdiff_t], [long], +- [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) +- ]) +- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +-stdlib.h string.h unistd.h sys/param.h]) +- AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ +-mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ +-strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ +-__fsetlocking]) +- +- dnl Use the _snprintf function only if it is declared (because on NetBSD it +- dnl is defined as a weak alias of snprintf; we prefer to use the latter). +- gt_CHECK_DECL(_snprintf, [#include ]) +- gt_CHECK_DECL(_snwprintf, [#include ]) +- +- dnl Use the *_unlocked functions only if they are declared. +- dnl (because some of them were defined without being declared in Solaris +- dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built +- dnl on Solaris 2.5.1 to run on Solaris 2.6). +- dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. +- gt_CHECK_DECL(feof_unlocked, [#include ]) +- gt_CHECK_DECL(fgets_unlocked, [#include ]) +- gt_CHECK_DECL(getc_unlocked, [#include ]) +- +- case $gt_cv_func_printf_posix in +- *yes) HAVE_POSIX_PRINTF=1 ;; +- *) HAVE_POSIX_PRINTF=0 ;; +- esac +- AC_SUBST([HAVE_POSIX_PRINTF]) +- if test "$ac_cv_func_asprintf" = yes; then +- HAVE_ASPRINTF=1 +- else +- HAVE_ASPRINTF=0 +- fi +- AC_SUBST([HAVE_ASPRINTF]) +- if test "$ac_cv_func_snprintf" = yes; then +- HAVE_SNPRINTF=1 +- else +- HAVE_SNPRINTF=0 +- fi +- AC_SUBST([HAVE_SNPRINTF]) +- if test "$ac_cv_func_wprintf" = yes; then +- HAVE_WPRINTF=1 +- else +- HAVE_WPRINTF=0 +- fi +- AC_SUBST([HAVE_WPRINTF]) ++# AC_PROG_NM ++# ---------- ++# find the pathname to a BSD-compatible name lister ++AC_DEFUN([AC_PROG_NM], ++[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, ++[if test -n "$NM"; then ++ # Let the user override the test. ++ lt_cv_path_NM="$NM" ++else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm ++fi]) ++NM="$lt_cv_path_NM" ++])# AC_PROG_NM + +- AM_ICONV +- AM_LANGINFO_CODESET +- if test $ac_cv_header_locale_h = yes; then +- gt_LC_MESSAGES +- fi +- +- if test -n "$INTL_MACOSX_LIBS"; then +- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" +- fi +- +- dnl intl/plural.c is generated from intl/plural.y. It requires bison, +- dnl because plural.y uses bison specific features. It requires at least +- dnl bison-1.26 because earlier versions generate a plural.c that doesn't +- dnl compile. +- dnl bison is only needed for the maintainer (who touches plural.y). But in +- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put +- dnl the rule in general Makefile. Now, some people carelessly touch the +- dnl files or have a broken "make" program, hence the plural.c rule will +- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not +- dnl present or too old. +- AC_CHECK_PROGS([INTLBISON], [bison]) +- if test -z "$INTLBISON"; then +- ac_verc_fail=yes +- else +- dnl Found it, now check the version. +- AC_MSG_CHECKING([version of bison]) +-changequote(<<,>>)dnl +- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` +- case $ac_prog_version in +- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +-changequote([,])dnl +- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; +- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; +- esac +- AC_MSG_RESULT([$ac_prog_version]) +- fi +- if test $ac_verc_fail = yes; then +- INTLBISON=: +- fi +-]) + ++# AC_CHECK_LIBM ++# ------------- ++# check for math library ++AC_DEFUN([AC_CHECK_LIBM], ++[AC_REQUIRE([AC_CANONICAL_HOST])dnl ++LIBM= ++case $host in ++*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) ++ # These system don't have libm, or don't need it ++ ;; ++*-ncr-sysv4.3*) ++ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") ++ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ++ ;; ++*) ++ AC_CHECK_LIB(m, cos, LIBM="-lm") ++ ;; ++esac ++])# AC_CHECK_LIBM + +-dnl Checks for special options needed on MacOS X. +-dnl Defines INTL_MACOSX_LIBS. +-AC_DEFUN([gt_INTL_MACOSX], +-[ +- dnl Check for API introduced in MacOS X 10.2. +- AC_CACHE_CHECK([for CFPreferencesCopyAppValue], +- gt_cv_func_CFPreferencesCopyAppValue, +- [gt_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" +- gt_save_LIBS="$LIBS" +- LIBS="$LIBS -framework CoreFoundation" +- AC_TRY_LINK([#include ], +- [CFPreferencesCopyAppValue(NULL, NULL)], +- [gt_cv_func_CFPreferencesCopyAppValue=yes], +- [gt_cv_func_CFPreferencesCopyAppValue=no]) +- CPPFLAGS="$gt_save_CPPFLAGS" +- LIBS="$gt_save_LIBS"]) +- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then +- AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, +- [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) +- fi +- dnl Check for API introduced in MacOS X 10.3. +- AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, +- [gt_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" +- gt_save_LIBS="$LIBS" +- LIBS="$LIBS -framework CoreFoundation" +- AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], +- [gt_cv_func_CFLocaleCopyCurrent=yes], +- [gt_cv_func_CFLocaleCopyCurrent=no]) +- CPPFLAGS="$gt_save_CPPFLAGS" +- LIBS="$gt_save_LIBS"]) +- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then +- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, +- [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) +- fi +- INTL_MACOSX_LIBS= +- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then +- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" +- fi +- AC_SUBST([INTL_MACOSX_LIBS]) +-]) ++ ++# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) ++# ----------------------------------- ++# sets LIBLTDL to the link flags for the libltdl convenience library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-convenience to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, ++# it is assumed to be `libltdl'. LIBLTDL will be prefixed with ++# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' ++# (note the single quotes!). If your package is not flat and you're not ++# using automake, define top_builddir and top_srcdir appropriately in ++# the Makefiles. ++AC_DEFUN([AC_LIBLTDL_CONVENIENCE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++ case $enable_ltdl_convenience in ++ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; ++ "") enable_ltdl_convenience=yes ++ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; ++ esac ++ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la ++ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ++ # For backwards non-gettext consistent compatibility... ++ INCLTDL="$LTDLINCL" ++])# AC_LIBLTDL_CONVENIENCE + + +-dnl gt_CHECK_DECL(FUNC, INCLUDES) +-dnl Check whether a function is declared. +-AC_DEFUN([gt_CHECK_DECL], +-[ +- AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, +- [AC_TRY_COMPILE([$2], [ +-#ifndef $1 +- char *p = (char *) $1; +-#endif +-], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) +- if test $ac_cv_have_decl_$1 = yes; then +- gt_value=1 ++# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) ++# ----------------------------------- ++# sets LIBLTDL to the link flags for the libltdl installable library and ++# LTDLINCL to the include flags for the libltdl header and adds ++# --enable-ltdl-install to the configure arguments. Note that ++# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, ++# and an installed libltdl is not found, it is assumed to be `libltdl'. ++# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with ++# '${top_srcdir}/' (note the single quotes!). If your package is not ++# flat and you're not using automake, define top_builddir and top_srcdir ++# appropriately in the Makefiles. ++# In the future, this macro may have to be called after AC_PROG_LIBTOOL. ++AC_DEFUN([AC_LIBLTDL_INSTALLABLE], ++[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl ++ AC_CHECK_LIB(ltdl, lt_dlinit, ++ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], ++ [if test x"$enable_ltdl_install" = xno; then ++ AC_MSG_WARN([libltdl not installed, but installation disabled]) ++ else ++ enable_ltdl_install=yes ++ fi ++ ]) ++ if test x"$enable_ltdl_install" = x"yes"; then ++ ac_configure_args="$ac_configure_args --enable-ltdl-install" ++ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la ++ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else +- gt_value=0 ++ ac_configure_args="$ac_configure_args --enable-ltdl-install=no" ++ LIBLTDL="-lltdl" ++ LTDLINCL= + fi +- AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], +- [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) +-]) +- ++ # For backwards non-gettext consistent compatibility... ++ INCLTDL="$LTDLINCL" ++])# AC_LIBLTDL_INSTALLABLE + +-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +-AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) + +-# po.m4 serial 7 (gettext-0.14.3) +-dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. ++# AC_LIBTOOL_CXX ++# -------------- ++# enable support for C++ libraries ++AC_DEFUN([AC_LIBTOOL_CXX], ++[AC_REQUIRE([_LT_AC_LANG_CXX]) ++])# AC_LIBTOOL_CXX + +-dnl Authors: +-dnl Ulrich Drepper , 1995-2000. +-dnl Bruno Haible , 2000-2003. + +-AC_PREREQ(2.50) ++# _LT_AC_LANG_CXX ++# --------------- ++AC_DEFUN([_LT_AC_LANG_CXX], ++[AC_REQUIRE([AC_PROG_CXX]) ++AC_REQUIRE([_LT_AC_PROG_CXXCPP]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) ++])# _LT_AC_LANG_CXX + +-dnl Checks for all prerequisites of the po subdirectory. +-AC_DEFUN([AM_PO_SUBDIRS], ++# _LT_AC_PROG_CXXCPP ++# ------------------ ++AC_DEFUN([_LT_AC_PROG_CXXCPP], + [ +- AC_REQUIRE([AC_PROG_MAKE_SET])dnl +- AC_REQUIRE([AC_PROG_INSTALL])dnl +- AC_REQUIRE([AM_MKINSTALLDIRS])dnl +- AC_REQUIRE([AM_NLS])dnl ++AC_REQUIRE([AC_PROG_CXX]) ++if test -n "$CXX" && ( test "X$CXX" != "Xno" && ++ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || ++ (test "X$CXX" != "Xg++"))) ; then ++ AC_PROG_CXXCPP ++fi ++])# _LT_AC_PROG_CXXCPP + +- dnl Perform the following tests also if --disable-nls has been given, +- dnl because they are needed for "make dist" to work. ++# AC_LIBTOOL_F77 ++# -------------- ++# enable support for Fortran 77 libraries ++AC_DEFUN([AC_LIBTOOL_F77], ++[AC_REQUIRE([_LT_AC_LANG_F77]) ++])# AC_LIBTOOL_F77 + +- dnl Search for GNU msgfmt in the PATH. +- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. +- dnl The second test excludes FreeBSD msgfmt. +- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, +- [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && +- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], +- :) +- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + +- dnl Search for GNU xgettext 0.12 or newer in the PATH. +- dnl The first test excludes Solaris xgettext and early GNU xgettext versions. +- dnl The second test excludes FreeBSD xgettext. +- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +- [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && +- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], +- :) +- dnl Remove leftover from FreeBSD xgettext call. +- rm -f messages.po ++# _LT_AC_LANG_F77 ++# --------------- ++AC_DEFUN([_LT_AC_LANG_F77], ++[AC_REQUIRE([AC_PROG_F77]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) ++])# _LT_AC_LANG_F77 + +- dnl Search for GNU msgmerge 0.11 or newer in the PATH. +- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, +- [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + +- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. +- dnl Test whether we really found GNU msgfmt. +- if test "$GMSGFMT" != ":"; then +- dnl If it is no GNU msgfmt we define it as : so that the +- dnl Makefiles still can work. +- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && +- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` +- AC_MSG_RESULT( +- [found $GMSGFMT program is not GNU msgfmt; ignore it]) +- GMSGFMT=":" +- fi +- fi ++# AC_LIBTOOL_GCJ ++# -------------- ++# enable support for GCJ libraries ++AC_DEFUN([AC_LIBTOOL_GCJ], ++[AC_REQUIRE([_LT_AC_LANG_GCJ]) ++])# AC_LIBTOOL_GCJ + +- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. +- dnl Test whether we really found GNU xgettext. +- if test "$XGETTEXT" != ":"; then +- dnl If it is no GNU xgettext we define it as : so that the +- dnl Makefiles still can work. +- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && +- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- AC_MSG_RESULT( +- [found xgettext program is not GNU xgettext; ignore it]) +- XGETTEXT=":" +- fi +- dnl Remove leftover from FreeBSD xgettext call. +- rm -f messages.po +- fi + +- AC_OUTPUT_COMMANDS([ +- for ac_file in $CONFIG_FILES; do +- # Support "outfile[:infile[:infile...]]" +- case "$ac_file" in +- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; +- esac +- # PO directories have a Makefile.in generated from Makefile.in.in. +- case "$ac_file" in */Makefile.in) +- # Adjust a relative srcdir. +- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` +- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" +- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` +- # In autoconf-2.13 it is called $ac_given_srcdir. +- # In autoconf-2.50 it is called $srcdir. +- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" +- case "$ac_given_srcdir" in +- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; +- /*) top_srcdir="$ac_given_srcdir" ;; +- *) top_srcdir="$ac_dots$ac_given_srcdir" ;; +- esac +- # Treat a directory as a PO directory if and only if it has a +- # POTFILES.in file. This allows packages to have multiple PO +- # directories under different names or in different locations. +- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then +- rm -f "$ac_dir/POTFILES" +- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" +- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" +- POMAKEFILEDEPS="POTFILES.in" +- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend +- # on $ac_dir but don't depend on user-specified configuration +- # parameters. +- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then +- # The LINGUAS file contains the set of available languages. +- if test -n "$OBSOLETE_ALL_LINGUAS"; then +- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" +- fi +- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` +- # Hide the ALL_LINGUAS assigment from automake. +- eval 'ALL_LINGUAS''=$ALL_LINGUAS_' +- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" +- else +- # The set of available languages was given in configure.in. +- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' +- fi +- # Compute POFILES +- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) +- # Compute UPDATEPOFILES +- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) +- # Compute DUMMYPOFILES +- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) +- # Compute GMOFILES +- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) +- case "$ac_given_srcdir" in +- .) srcdirpre= ;; +- *) srcdirpre='$(srcdir)/' ;; +- esac +- POFILES= +- UPDATEPOFILES= +- DUMMYPOFILES= +- GMOFILES= +- for lang in $ALL_LINGUAS; do +- POFILES="$POFILES $srcdirpre$lang.po" +- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" +- DUMMYPOFILES="$DUMMYPOFILES $lang.nop" +- GMOFILES="$GMOFILES $srcdirpre$lang.gmo" +- done +- # CATALOGS depends on both $ac_dir and the user's LINGUAS +- # environment variable. +- INST_LINGUAS= +- if test -n "$ALL_LINGUAS"; then +- for presentlang in $ALL_LINGUAS; do +- useit=no +- if test "%UNSET%" != "$LINGUAS"; then +- desiredlanguages="$LINGUAS" +- else +- desiredlanguages="$ALL_LINGUAS" +- fi +- for desiredlang in $desiredlanguages; do +- # Use the presentlang catalog if desiredlang is +- # a. equal to presentlang, or +- # b. a variant of presentlang (because in this case, +- # presentlang can be used as a fallback for messages +- # which are not translated in the desiredlang catalog). +- case "$desiredlang" in +- "$presentlang"*) useit=yes;; +- esac +- done +- if test $useit = yes; then +- INST_LINGUAS="$INST_LINGUAS $presentlang" +- fi +- done +- fi +- CATALOGS= +- if test -n "$INST_LINGUAS"; then +- for lang in $INST_LINGUAS; do +- CATALOGS="$CATALOGS $lang.gmo" +- done +- fi +- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" +- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" +- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do +- if test -f "$f"; then +- case "$f" in +- *.orig | *.bak | *~) ;; +- *) cat "$f" >> "$ac_dir/Makefile" ;; +- esac +- fi +- done +- fi +- ;; +- esac +- done], +- [# Capture the value of obsolete ALL_LINGUAS because we need it to compute +- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it +- # from automake. +- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' +- # Capture the value of LINGUAS because we need it to compute CATALOGS. +- LINGUAS="${LINGUAS-%UNSET%}" +- ]) +-]) ++# _LT_AC_LANG_GCJ ++# --------------- ++AC_DEFUN([_LT_AC_LANG_GCJ], ++[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], ++ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], ++ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], ++ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], ++ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], ++ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) ++])# _LT_AC_LANG_GCJ + +-dnl Postprocesses a Makefile in a directory containing PO files. +-AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +-[ +- # When this code is run, in config.status, two variables have already been +- # set: +- # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, +- # - LINGUAS is the value of the environment variable LINGUAS at configure +- # time. + +-changequote(,)dnl +- # Adjust a relative srcdir. +- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` +- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" +- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` +- # In autoconf-2.13 it is called $ac_given_srcdir. +- # In autoconf-2.50 it is called $srcdir. +- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" +- case "$ac_given_srcdir" in +- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; +- /*) top_srcdir="$ac_given_srcdir" ;; +- *) top_srcdir="$ac_dots$ac_given_srcdir" ;; +- esac ++# AC_LIBTOOL_RC ++# ------------- ++# enable support for Windows resource files ++AC_DEFUN([AC_LIBTOOL_RC], ++[AC_REQUIRE([LT_AC_PROG_RC]) ++_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) ++])# AC_LIBTOOL_RC ++ ++ ++# AC_LIBTOOL_LANG_C_CONFIG ++# ------------------------ ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) ++AC_DEFUN([_LT_AC_LANG_C_CONFIG], ++[lt_save_CC="$CC" ++AC_LANG_PUSH(C) + +- # Find a way to echo strings without interpreting backslash. +- if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then +- gt_echo='echo' +- else +- if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then +- gt_echo='printf %s\n' +- else +- echo_func () { +- cat < "$ac_file.tmp" +- if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then +- # Add dependencies that cannot be formulated as a simple suffix rule. +- for lang in $ALL_LINGUAS; do +- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` +- cat >> "$ac_file.tmp" < /dev/null; then +- # Add dependencies that cannot be formulated as a simple suffix rule. +- for lang in $ALL_LINGUAS; do +- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` +- cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1995-2000. +-dnl Bruno Haible , 2000-2003. ++AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++AC_LIBTOOL_SYS_LIB_STRIP ++AC_LIBTOOL_DLOPEN_SELF + +-AC_PREREQ(2.50) ++# Report which library types will actually be built ++AC_MSG_CHECKING([if libtool supports shared libraries]) ++AC_MSG_RESULT([$can_build_shared]) + +-AC_DEFUN([AM_NLS], +-[ +- AC_MSG_CHECKING([whether NLS is requested]) +- dnl Default is enabled NLS +- AC_ARG_ENABLE(nls, +- [ --disable-nls do not use Native Language Support], +- USE_NLS=$enableval, USE_NLS=yes) +- AC_MSG_RESULT($USE_NLS) +- AC_SUBST(USE_NLS) +-]) ++AC_MSG_CHECKING([whether to build shared libraries]) ++test "$can_build_shared" = "no" && enable_shared=no + +-AC_DEFUN([AM_MKINSTALLDIRS], +-[ +- dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. +- m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) +- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly +- dnl find the mkinstalldirs script in another subdir but $(top_srcdir). +- dnl Try to locate it. +- MKINSTALLDIRS= +- if test -n "$ac_aux_dir"; then +- case "$ac_aux_dir" in +- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; +- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; +- esac ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' + fi +- if test -z "$MKINSTALLDIRS"; then +- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" ++ ;; ++ ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no + fi +- AC_SUBST(MKINSTALLDIRS) +-]) ++ ;; ++esac ++AC_MSG_RESULT([$enable_shared]) + +-# progtest.m4 serial 4 (gettext-0.14.2) +-dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. ++AC_MSG_CHECKING([whether to build static libraries]) ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++AC_MSG_RESULT([$enable_static]) + +-dnl Authors: +-dnl Ulrich Drepper , 1996. ++AC_LIBTOOL_CONFIG($1) + +-AC_PREREQ(2.50) ++AC_LANG_POP ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_C_CONFIG + +-# Search path for a program which passes the given test. + +-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +-AC_DEFUN([AM_PATH_PROG_WITH_TEST], +-[ +-# Prepare PATH_SEPARATOR. +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# AC_LIBTOOL_LANG_CXX_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) ++AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], ++[AC_LANG_PUSH(C++) ++AC_REQUIRE([AC_PROG_CXX]) ++AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +-# Find out how to test for executable files. Don't use a zero-byte file, +-# as systems may use methods other than mode bits to determine executability. +-cat >conf$$.file <<_ASEOF +-#! /bin/sh +-exit 0 +-_ASEOF +-chmod +x conf$$.file +-if test -x conf$$.file >/dev/null 2>&1; then +- ac_executable_p="test -x" +-else +- ac_executable_p="test -f" +-fi +-rm -f conf$$.file ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_AC_TAGVAR(allow_undefined_flag, $1)= ++_LT_AC_TAGVAR(always_export_symbols, $1)=no ++_LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_direct, $1)=no ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++_LT_AC_TAGVAR(hardcode_automatic, $1)=no ++_LT_AC_TAGVAR(module_cmds, $1)= ++_LT_AC_TAGVAR(module_expsym_cmds, $1)= ++_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_AC_TAGVAR(no_undefined_flag, $1)= ++_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +-# Extract the first word of "$2", so it can be a program name with args. +-set dummy $2; ac_word=[$]2 +-AC_MSG_CHECKING([for $ac_word]) +-AC_CACHE_VAL(ac_cv_path_$1, +-[case "[$]$1" in +- [[\\/]]* | ?:[[\\/]]*) +- ac_cv_path_$1="[$]$1" # Let the user override the test with a path. +- ;; +- *) +- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in ifelse([$5], , $PATH, [$5]); do +- IFS="$ac_save_IFS" +- test -z "$ac_dir" && ac_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then +- echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD +- if [$3]; then +- ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" +- break 2 +- fi +- fi +- done +- done +- IFS="$ac_save_IFS" +-dnl If no 4th arg is given, leave the cache variable unset, +-dnl so AC_PATH_PROGS will keep looking. +-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +-])dnl +- ;; +-esac])dnl +-$1="$ac_cv_path_$1" +-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then +- AC_MSG_RESULT([$]$1) +-else +- AC_MSG_RESULT(no) +-fi +-AC_SUBST($1)dnl +-]) ++# Dependencies to place before and after the object being linked: ++_LT_AC_TAGVAR(predep_objects, $1)= ++_LT_AC_TAGVAR(postdep_objects, $1)= ++_LT_AC_TAGVAR(predeps, $1)= ++_LT_AC_TAGVAR(postdeps, $1)= ++_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +-# lib-prefix.m4 serial 4 (gettext-0.14.2) +-dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Source file extension for C++ test sources. ++ac_ext=cpp + +-dnl From Bruno Haible. ++# Object file extension for compiled C++ test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext + +-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +-dnl require excessive bracketing. +-ifdef([AC_HELP_STRING], +-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" + +-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +-dnl to access previously installed libraries. The basic assumption is that +-dnl a user will want packages to use other packages he previously installed +-dnl with the same --prefix option. +-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +-dnl libraries, but is otherwise very convenient. +-AC_DEFUN([AC_LIB_PREFIX], +-[ +- AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) +- AC_REQUIRE([AC_PROG_CC]) +- AC_REQUIRE([AC_CANONICAL_HOST]) +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- dnl By default, look in $includedir and $libdir. +- use_additional=yes +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- AC_LIB_ARG_WITH([lib-prefix], +-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib +- --without-lib-prefix don't search for libraries in includedir and libdir], +-[ +- if test "X$withval" = "Xno"; then +- use_additional=no +- else +- if test "X$withval" = "X"; then +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- else +- additional_includedir="$withval/include" +- additional_libdir="$withval/lib" +- fi +- fi +-]) +- if test $use_additional = yes; then +- dnl Potentially add $additional_includedir to $CPPFLAGS. +- dnl But don't add it +- dnl 1. if it's the standard /usr/include, +- dnl 2. if it's already present in $CPPFLAGS, +- dnl 3. if it's /usr/local/include and we are using GCC on Linux, +- dnl 4. if it doesn't exist as a directory. +- if test "X$additional_includedir" != "X/usr/include"; then +- haveit= +- for x in $CPPFLAGS; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-I$additional_includedir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test "X$additional_includedir" = "X/usr/local/include"; then +- if test -n "$GCC"; then +- case $host_os in +- linux* | gnu* | k*bsd*-gnu) haveit=yes;; +- esac +- fi +- fi +- if test -z "$haveit"; then +- if test -d "$additional_includedir"; then +- dnl Really add $additional_includedir to $CPPFLAGS. +- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" +- fi +- fi +- fi +- fi +- dnl Potentially add $additional_libdir to $LDFLAGS. +- dnl But don't add it +- dnl 1. if it's the standard /usr/lib, +- dnl 2. if it's already present in $LDFLAGS, +- dnl 3. if it's /usr/local/lib and we are using GCC on Linux, +- dnl 4. if it doesn't exist as a directory. +- if test "X$additional_libdir" != "X/usr/lib"; then +- haveit= +- for x in $LDFLAGS; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-L$additional_libdir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test "X$additional_libdir" = "X/usr/local/lib"; then +- if test -n "$GCC"; then +- case $host_os in +- linux*) haveit=yes;; +- esac +- fi +- fi +- if test -z "$haveit"; then +- if test -d "$additional_libdir"; then +- dnl Really add $additional_libdir to $LDFLAGS. +- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" +- fi +- fi +- fi +- fi +- fi +-]) ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER + +-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +-dnl acl_final_exec_prefix, containing the values to which $prefix and +-dnl $exec_prefix will expand at the end of the configure script. +-AC_DEFUN([AC_LIB_PREPARE_PREFIX], +-[ +- dnl Unfortunately, prefix and exec_prefix get only finally determined +- dnl at the end of configure. +- if test "X$prefix" = "XNONE"; then +- acl_final_prefix="$ac_default_prefix" +- else +- acl_final_prefix="$prefix" +- fi +- if test "X$exec_prefix" = "XNONE"; then +- acl_final_exec_prefix='${prefix}' ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC=$CC ++lt_save_LD=$LD ++lt_save_GCC=$GCC ++GCC=$GXX ++lt_save_with_gnu_ld=$with_gnu_ld ++lt_save_path_LD=$lt_cv_path_LD ++if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then ++ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx ++else ++ $as_unset lt_cv_prog_gnu_ld ++fi ++if test -n "${lt_cv_path_LDCXX+set}"; then ++ lt_cv_path_LD=$lt_cv_path_LDCXX ++else ++ $as_unset lt_cv_path_LD ++fi ++test -z "${LDCXX+set}" || LD=$LDCXX ++CC=${CXX-"c++"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++# We don't want -fno-exception wen compiling C++ code, so set the ++# no_builtin_flag separately ++if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++else ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++fi ++ ++if test "$GXX" = yes; then ++ # Set up default GNU C++ configuration ++ ++ AC_PROG_LD ++ ++ # Check if GNU C++ uses GNU ld as the underlying linker, since the ++ # archiving commands below assume that GNU ld is being used. ++ if test "$with_gnu_ld" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to ++ # investigate it a little bit more. (MM) ++ wlarc='${wl}' ++ ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ ++ grep 'no-whole-archive' > /dev/null; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi + else +- acl_final_exec_prefix="$exec_prefix" ++ with_gnu_ld=no ++ wlarc= ++ ++ # A generic and very simple default shared library creation ++ # command for GNU C++ for the case where it uses the native ++ # linker, instead of GNU ld. If possible, this setting should ++ # overridden to take advantage of the native linker features on ++ # the platform it is being used on. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi +- acl_save_prefix="$prefix" +- prefix="$acl_final_prefix" +- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" +- prefix="$acl_save_prefix" +-]) + +-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +-dnl variables prefix and exec_prefix bound to the values they will have +-dnl at the end of the configure script. +-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +-[ +- acl_save_prefix="$prefix" +- prefix="$acl_final_prefix" +- acl_save_exec_prefix="$exec_prefix" +- exec_prefix="$acl_final_exec_prefix" +- $1 +- exec_prefix="$acl_save_exec_prefix" +- prefix="$acl_save_prefix" +-]) ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +-# lib-link.m4 serial 6 (gettext-0.14.3) +-dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++else ++ GXX=no ++ with_gnu_ld=no ++ wlarc= ++fi + +-dnl From Bruno Haible. ++# PORTME: fill in a description of your system's C++ link characteristics ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++_LT_AC_TAGVAR(ld_shlibs, $1)=yes ++case $host_os in ++ aix3*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ aix_use_runtimelinking=no + +-AC_PREREQ(2.50) ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ case $ld_flag in ++ *-brtl*) ++ aix_use_runtimelinking=yes ++ break ++ ;; ++ esac ++ done ++ ;; ++ esac + +-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +-dnl the libraries corresponding to explicit and implicit dependencies. +-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +-dnl augments the CPPFLAGS variable. +-AC_DEFUN([AC_LIB_LINKFLAGS], +-[ +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) +- define([Name],[translit([$1],[./-], [___])]) +- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], +- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) +- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ +- AC_LIB_LINKFLAGS_BODY([$1], [$2]) +- ac_cv_lib[]Name[]_libs="$LIB[]NAME" +- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" +- ac_cv_lib[]Name[]_cppflags="$INC[]NAME" +- ]) +- LIB[]NAME="$ac_cv_lib[]Name[]_libs" +- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" +- INC[]NAME="$ac_cv_lib[]Name[]_cppflags" +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) +- AC_SUBST([LIB]NAME) +- AC_SUBST([LTLIB]NAME) +- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the +- dnl results of this search when this library appears as a dependency. +- HAVE_LIB[]NAME=yes +- undefine([Name]) +- undefine([NAME]) +-]) ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi + +-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +-dnl searches for libname and the libraries corresponding to explicit and +-dnl implicit dependencies, together with the specified include files and +-dnl the ability to compile and link the specified testcode. If found, it +-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +-[ +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) +- define([Name],[translit([$1],[./-], [___])]) +- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], +- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + +- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME +- dnl accordingly. +- AC_LIB_LINKFLAGS_BODY([$1], [$2]) ++ _LT_AC_TAGVAR(archive_cmds, $1)='' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ++ if test "$GXX" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + +- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, +- dnl because if the user has installed lib[]Name and not disabled its use +- dnl via --without-lib[]Name-prefix, he wants to use it. +- ac_save_CPPFLAGS="$CPPFLAGS" +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; + +- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ +- ac_save_LIBS="$LIBS" +- LIBS="$LIBS $LIB[]NAME" +- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) +- LIBS="$ac_save_LIBS" +- ]) +- if test "$ac_cv_lib[]Name" = yes; then +- HAVE_LIB[]NAME=yes +- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) +- AC_MSG_CHECKING([how to link with lib[]$1]) +- AC_MSG_RESULT([$LIB[]NAME]) +- else +- HAVE_LIB[]NAME=no +- dnl If $LIB[]NAME didn't lead to a usable library, we don't need +- dnl $INC[]NAME either. +- CPPFLAGS="$ac_save_CPPFLAGS" +- LIB[]NAME= +- LTLIB[]NAME= +- fi +- AC_SUBST([HAVE_LIB]NAME) +- AC_SUBST([LIB]NAME) +- AC_SUBST([LTLIB]NAME) +- undefine([Name]) +- undefine([NAME]) +-]) ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; + +-dnl Determine the platform dependent parameters needed to use rpath: +-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +-dnl hardcode_direct, hardcode_minus_L. +-AC_DEFUN([AC_LIB_RPATH], +-[ +- dnl Tell automake >= 1.10 to complain if config.rpath is missing. +- m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) +- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS +- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld +- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host +- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir +- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ +- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ +- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh +- . ./conftest.sh +- rm -f ./conftest.sh +- acl_cv_rpath=done +- ]) +- wl="$acl_cv_wl" +- libext="$acl_cv_libext" +- shlibext="$acl_cv_shlibext" +- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" +- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" +- hardcode_direct="$acl_cv_hardcode_direct" +- hardcode_minus_L="$acl_cv_hardcode_minus_L" +- dnl Determine whether the user wants rpath handling at all. +- AC_ARG_ENABLE(rpath, +- [ --disable-rpath do not hardcode runtime library paths], +- :, enable_rpath=yes) +-]) ++ chorus*) ++ case $cc_basename in ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; + +-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +-dnl the libraries corresponding to explicit and implicit dependencies. +-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +-AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +-[ +- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], +- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) +- dnl By default, look in $includedir and $libdir. +- use_additional=yes +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) +- AC_LIB_ARG_WITH([lib$1-prefix], +-[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib +- --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +-[ +- if test "X$withval" = "Xno"; then +- use_additional=no +- else +- if test "X$withval" = "X"; then +- AC_LIB_WITH_FINAL_PREFIX([ +- eval additional_includedir=\"$includedir\" +- eval additional_libdir=\"$libdir\" +- ]) ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; + else +- additional_includedir="$withval/include" +- additional_libdir="$withval/lib" +- fi ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi +-]) +- dnl Search the library and its dependencies in $additional_libdir and +- dnl $LDFLAGS. Using breadth-first-seach. +- LIB[]NAME= +- LTLIB[]NAME= +- INC[]NAME= +- rpathdirs= +- ltrpathdirs= +- names_already_handled= +- names_next_round='$1 $2' +- while test -n "$names_next_round"; do +- names_this_round="$names_next_round" +- names_next_round= +- for name in $names_this_round; do +- already_handled= +- for n in $names_already_handled; do +- if test "$n" = "$name"; then +- already_handled=yes +- break +- fi +- done +- if test -z "$already_handled"; then +- names_already_handled="$names_already_handled $name" +- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS +- dnl or AC_LIB_HAVE_LINKFLAGS call. +- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` +- eval value=\"\$HAVE_LIB$uppername\" +- if test -n "$value"; then +- if test "$value" = yes; then +- eval value=\"\$LIB$uppername\" +- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" +- eval value=\"\$LTLIB$uppername\" +- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" +- else +- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined +- dnl that this library doesn't exist. So just drop it. +- : +- fi +- else +- dnl Search the library lib$name in $additional_libdir and $LDFLAGS +- dnl and the already constructed $LIBNAME/$LTLIBNAME. +- found_dir= +- found_la= +- found_so= +- found_a= +- if test $use_additional = yes; then +- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then +- found_dir="$additional_libdir" +- found_so="$additional_libdir/lib$name.$shlibext" +- if test -f "$additional_libdir/lib$name.la"; then +- found_la="$additional_libdir/lib$name.la" +- fi +- else +- if test -f "$additional_libdir/lib$name.$libext"; then +- found_dir="$additional_libdir" +- found_a="$additional_libdir/lib$name.$libext" +- if test -f "$additional_libdir/lib$name.la"; then +- found_la="$additional_libdir/lib$name.la" +- fi +- fi +- fi +- fi +- if test "X$found_dir" = "X"; then +- for x in $LDFLAGS $LTLIB[]NAME; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- case "$x" in +- -L*) +- dir=`echo "X$x" | sed -e 's/^X-L//'` +- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then +- found_dir="$dir" +- found_so="$dir/lib$name.$shlibext" +- if test -f "$dir/lib$name.la"; then +- found_la="$dir/lib$name.la" +- fi +- else +- if test -f "$dir/lib$name.$libext"; then +- found_dir="$dir" +- found_a="$dir/lib$name.$libext" +- if test -f "$dir/lib$name.la"; then +- found_la="$dir/lib$name.la" +- fi +- fi +- fi +- ;; +- esac +- if test "X$found_dir" != "X"; then +- break +- fi +- done ++ ;; ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ++ if test "$GXX" = yes ; then ++ lt_int_apple_cc_single_mod=no ++ output_verbose_link_cmd='echo' ++ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then ++ lt_int_apple_cc_single_mod=yes ++ fi ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ fi ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi +- if test "X$found_dir" != "X"; then +- dnl Found the library. +- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" +- if test "X$found_so" != "X"; then +- dnl Linking with a shared library. We attempt to hardcode its +- dnl directory into the executable's runpath, unless it's the +- dnl standard /usr/lib. +- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then +- dnl No hardcoding is needed. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" +- else +- dnl Use an explicit option to hardcode DIR into the resulting +- dnl binary. +- dnl Potentially add DIR to ltrpathdirs. +- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. +- haveit= +- for x in $ltrpathdirs; do +- if test "X$x" = "X$found_dir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- ltrpathdirs="$ltrpathdirs $found_dir" +- fi +- dnl The hardcoding into $LIBNAME is system dependent. +- if test "$hardcode_direct" = yes; then +- dnl Using DIR/libNAME.so during linking hardcodes DIR into the +- dnl resulting binary. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" +- else +- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then +- dnl Use an explicit option to hardcode DIR into the resulting +- dnl binary. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" +- dnl Potentially add DIR to rpathdirs. +- dnl The rpathdirs will be appended to $LIBNAME at the end. +- haveit= +- for x in $rpathdirs; do +- if test "X$x" = "X$found_dir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- rpathdirs="$rpathdirs $found_dir" +- fi +- else +- dnl Rely on "-L$found_dir". +- dnl But don't add it if it's already contained in the LDFLAGS +- dnl or the already constructed $LIBNAME +- haveit= +- for x in $LDFLAGS $LIB[]NAME; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-L$found_dir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" +- fi +- if test "$hardcode_minus_L" != no; then +- dnl FIXME: Not sure whether we should use +- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" +- dnl here. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" +- else +- dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH +- dnl here, because this doesn't fit in flags passed to the +- dnl compiler. So give up. No hardcoding. This affects only +- dnl very old systems. +- dnl FIXME: Not sure whether we should use +- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" +- dnl here. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" +- fi +- fi +- fi +- fi +- else +- if test "X$found_a" != "X"; then +- dnl Linking with a static library. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" +- else +- dnl We shouldn't come here, but anyway it's good to have a +- dnl fallback. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" +- fi +- fi +- dnl Assume the include files are nearby. +- additional_includedir= +- case "$found_dir" in +- */lib | */lib/) +- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` +- additional_includedir="$basedir/include" +- ;; +- esac +- if test "X$additional_includedir" != "X"; then +- dnl Potentially add $additional_includedir to $INCNAME. +- dnl But don't add it +- dnl 1. if it's the standard /usr/include, +- dnl 2. if it's /usr/local/include and we are using GCC on Linux, +- dnl 3. if it's already present in $CPPFLAGS or the already +- dnl constructed $INCNAME, +- dnl 4. if it doesn't exist as a directory. +- if test "X$additional_includedir" != "X/usr/include"; then +- haveit= +- if test "X$additional_includedir" = "X/usr/local/include"; then +- if test -n "$GCC"; then +- case $host_os in +- linux* | gnu* | k*bsd*-gnu) haveit=yes;; +- esac +- fi +- fi +- if test -z "$haveit"; then +- for x in $CPPFLAGS $INC[]NAME; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-I$additional_includedir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test -d "$additional_includedir"; then +- dnl Really add $additional_includedir to $INCNAME. +- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" +- fi +- fi +- fi +- fi +- fi +- dnl Look for dependencies. +- if test -n "$found_la"; then +- dnl Read the .la file. It defines the variables +- dnl dlname, library_names, old_library, dependency_libs, current, +- dnl age, revision, installed, dlopen, dlpreopen, libdir. +- save_libdir="$libdir" +- case "$found_la" in +- */* | *\\*) . "$found_la" ;; +- *) . "./$found_la" ;; +- esac +- libdir="$save_libdir" +- dnl We use only dependency_libs. +- for dep in $dependency_libs; do +- case "$dep" in +- -L*) +- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` +- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. +- dnl But don't add it +- dnl 1. if it's the standard /usr/lib, +- dnl 2. if it's /usr/local/lib and we are using GCC on Linux, +- dnl 3. if it's already present in $LDFLAGS or the already +- dnl constructed $LIBNAME, +- dnl 4. if it doesn't exist as a directory. +- if test "X$additional_libdir" != "X/usr/lib"; then +- haveit= +- if test "X$additional_libdir" = "X/usr/local/lib"; then +- if test -n "$GCC"; then +- case $host_os in +- linux* | gnu* | k*bsd*-gnu) haveit=yes;; +- esac +- fi +- fi +- if test -z "$haveit"; then +- haveit= +- for x in $LDFLAGS $LIB[]NAME; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-L$additional_libdir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test -d "$additional_libdir"; then +- dnl Really add $additional_libdir to $LIBNAME. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" +- fi +- fi +- haveit= +- for x in $LDFLAGS $LTLIB[]NAME; do +- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) +- if test "X$x" = "X-L$additional_libdir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- if test -d "$additional_libdir"; then +- dnl Really add $additional_libdir to $LTLIBNAME. +- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" +- fi +- fi +- fi +- fi +- ;; +- -R*) +- dir=`echo "X$dep" | sed -e 's/^X-R//'` +- if test "$enable_rpath" != no; then +- dnl Potentially add DIR to rpathdirs. +- dnl The rpathdirs will be appended to $LIBNAME at the end. +- haveit= +- for x in $rpathdirs; do +- if test "X$x" = "X$dir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- rpathdirs="$rpathdirs $dir" +- fi +- dnl Potentially add DIR to ltrpathdirs. +- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. +- haveit= +- for x in $ltrpathdirs; do +- if test "X$x" = "X$dir"; then +- haveit=yes +- break +- fi +- done +- if test -z "$haveit"; then +- ltrpathdirs="$ltrpathdirs $dir" +- fi +- fi +- ;; +- -l*) +- dnl Handle this in the next round. +- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` +- ;; +- *.la) +- dnl Handle this in the next round. Throw away the .la's +- dnl directory; it is already contained in a preceding -L +- dnl option. +- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` +- ;; +- *) +- dnl Most likely an immediate library name. +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" +- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" +- ;; +- esac +- done ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ freebsd[[12]]*) ++ # C++ shared libraries reported to be fairly broken before switch to ELF ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ freebsd-elf*) ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF ++ # conventions ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ ;; ++ gnu*) ++ ;; ++ hpux9*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ hpux10*|hpux11*) ++ if test $with_gnu_ld = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ;; ++ *) ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; ++ esac ++ fi ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, ++ # but as the default ++ # location of the library. ++ ;; ++ esac ++ ++ case $cc_basename in ++ CC*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ aCC*) ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test $with_gnu_ld = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ esac ++ fi ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ interix[[3-9]]*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ irix5* | irix6*) ++ case $cc_basename in ++ CC*) ++ # SGI C++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -ar", where "CC" is the IRIX C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ++ ;; ++ *) ++ if test "$GXX" = yes; then ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' ++ fi ++ fi ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ esac ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ++ ;; ++ icpc*) ++ # Intel C++ ++ with_gnu_ld=yes ++ # version 8.0 and above of icpc choke on multiply defined symbols ++ # if we add $predep_objects and $postdep_objects, however 7.1 and ++ # earlier do not add the objects themselves. ++ case `$CC -V 2>&1` in ++ *"Version 7."*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ *) # Version 8.0 or newer ++ tmp_idyn= ++ case $host_cpu in ++ ia64*) tmp_idyn=' -i_dynamic';; ++ esac ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ;; ++ cxx*) ++ # Compaq C++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' ++ ++ runpath_var=LD_RUN_PATH ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ m88k*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' ++ wlarc= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ fi ++ # Workaround some broken pre-1.5 toolchains ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ++ ;; ++ openbsd2*) ++ # C++ shared libraries are fairly broken ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd='echo' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ osf3*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # "CC -Bstatic", where "CC" is the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ++ ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ # Kuck and Associates, Inc. (KAI) C++ Compiler ++ ++ # KCC will only create a shared library if the output file ++ # ends with ".so" (or ".sl" for HP-UX), so rename the library ++ # to its proper name (with version) after linking. ++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Archives containing C++ object files must be created using ++ # the KAI C++ compiler. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ cxx*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ ++ echo "-hidden">> $lib.exp~ ++ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ ++ $rm $lib.exp' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ # ++ # There doesn't appear to be a way to prevent this compiler from ++ # explicitly linking system object files so we need to strip them ++ # from the output so that they don't get included in the library ++ # dependencies. ++ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ ;; ++ *) ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' ++ ++ else ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ psos*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ lcc*) ++ # Lucid ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ ;; ++ esac ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ ++ # The C++ compiler must be used to create the archive. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ++ ;; ++ *) ++ # GNU C++ compiler with Solaris linker ++ if test "$GXX" = yes && test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' ++ if $CC --version | grep -v '^2\.7' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ else ++ # g++ 2.7 appears to require `-G' NOT `-shared' on this ++ # platform. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ ++ # Commands to make compiler produce verbose output that lists ++ # what "hidden" libraries, object files and flags are used when ++ # linking a shared library. ++ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" ++ fi ++ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ ;; ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ # So that behaviour is only enabled if SCOABSPATH is set to a ++ # non-empty value in the environment. Most likely only useful for ++ # creating official distributions of packages. ++ # This is a hack until libtool officially supports absolute path ++ # names for shared libraries. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ ;; ++ vxworks*) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ *) ++ # FIXME: insert proper C++ library support ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++esac ++AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no ++ ++_LT_AC_TAGVAR(GCC, $1)="$GXX" ++_LT_AC_TAGVAR(LD, $1)="$LD" ++ ++AC_LIBTOOL_POSTDEP_PREDEP($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_POP ++CC=$lt_save_CC ++LDCXX=$LD ++LD=$lt_save_LD ++GCC=$lt_save_GCC ++with_gnu_ldcxx=$with_gnu_ld ++with_gnu_ld=$lt_save_with_gnu_ld ++lt_cv_path_LDCXX=$lt_cv_path_LD ++lt_cv_path_LD=$lt_save_path_LD ++lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld ++lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld ++])# AC_LIBTOOL_LANG_CXX_CONFIG ++ ++# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) ++# ------------------------------------ ++# Figure out "hidden" library dependencies from verbose ++# compiler output when linking a shared library. ++# Parse the compiler output and extract the necessary ++# objects, libraries and library flags. ++AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ ++dnl we can't use the lt_simple_compile_test_code here, ++dnl because it contains code intended for an executable, ++dnl not a library. It's possible we should let each ++dnl tag define a new lt_????_link_test_code variable, ++dnl but it's only used here... ++ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ # ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++ ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++esac ++]) ++ ++case " $_LT_AC_TAGVAR(postdeps, $1) " in ++*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; ++esac ++])# AC_LIBTOOL_POSTDEP_PREDEP ++ ++# AC_LIBTOOL_LANG_F77_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) ++AC_DEFUN([_LT_AC_LANG_F77_CONFIG], ++[AC_REQUIRE([AC_PROG_F77]) ++AC_LANG_PUSH(Fortran 77) ++ ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++_LT_AC_TAGVAR(allow_undefined_flag, $1)= ++_LT_AC_TAGVAR(always_export_symbols, $1)=no ++_LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_direct, $1)=no ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++_LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++_LT_AC_TAGVAR(hardcode_automatic, $1)=no ++_LT_AC_TAGVAR(module_cmds, $1)= ++_LT_AC_TAGVAR(module_expsym_cmds, $1)= ++_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++_LT_AC_TAGVAR(no_undefined_flag, $1)= ++_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ ++# Source file extension for f77 test sources. ++ac_ext=f ++ ++# Object file extension for compiled f77 test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="\ ++ program t ++ end ++" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${F77-"f77"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++AC_MSG_CHECKING([if libtool supports shared libraries]) ++AC_MSG_RESULT([$can_build_shared]) ++ ++AC_MSG_CHECKING([whether to build shared libraries]) ++test "$can_build_shared" = "no" && enable_shared=no ++ ++# On AIX, shared libraries and static libraries use the same namespace, and ++# are all built from PIC. ++case $host_os in ++aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++aix4* | aix5*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++esac ++AC_MSG_RESULT([$enable_shared]) ++ ++AC_MSG_CHECKING([whether to build static libraries]) ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++AC_MSG_RESULT([$enable_static]) ++ ++_LT_AC_TAGVAR(GCC, $1)="$G77" ++_LT_AC_TAGVAR(LD, $1)="$LD" ++ ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_POP ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_F77_CONFIG ++ ++ ++# AC_LIBTOOL_LANG_GCJ_CONFIG ++# -------------------------- ++# Ensure that the configuration vars for the C compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) ++AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], ++[AC_LANG_SAVE ++ ++# Source file extension for Java test sources. ++ac_ext=java ++ ++# Object file extension for compiled Java test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="class foo {}" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${GCJ-"gcj"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++ ++# GCJ did not exist at the time GCC didn't implicitly link libc in. ++_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ ++_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ++ ++AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) ++AC_LIBTOOL_PROG_COMPILER_PIC($1) ++AC_LIBTOOL_PROG_CC_C_O($1) ++AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) ++AC_LIBTOOL_PROG_LD_SHLIBS($1) ++AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) ++AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_GCJ_CONFIG ++ ++ ++# AC_LIBTOOL_LANG_RC_CONFIG ++# ------------------------- ++# Ensure that the configuration vars for the Windows resource compiler are ++# suitably defined. Those variables are subsequently used by ++# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. ++AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) ++AC_DEFUN([_LT_AC_LANG_RC_CONFIG], ++[AC_LANG_SAVE ++ ++# Source file extension for RC test sources. ++ac_ext=rc ++ ++# Object file extension for compiled RC test sources. ++objext=o ++_LT_AC_TAGVAR(objext, $1)=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code="$lt_simple_compile_test_code" ++ ++# ltmain only uses $CC for tagged configurations so make sure $CC is set. ++_LT_AC_SYS_COMPILER ++ ++# save warnings/boilerplate of simple test code ++_LT_COMPILER_BOILERPLATE ++_LT_LINKER_BOILERPLATE ++ ++# Allow CC to be a program name with arguments. ++lt_save_CC="$CC" ++CC=${RC-"windres"} ++compiler=$CC ++_LT_AC_TAGVAR(compiler, $1)=$CC ++_LT_CC_BASENAME([$compiler]) ++_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes ++ ++AC_LIBTOOL_CONFIG($1) ++ ++AC_LANG_RESTORE ++CC="$lt_save_CC" ++])# AC_LIBTOOL_LANG_RC_CONFIG ++ ++ ++# AC_LIBTOOL_CONFIG([TAGNAME]) ++# ---------------------------- ++# If TAGNAME is not passed, then create an initial libtool script ++# with a default configuration from the untagged config vars. Otherwise ++# add code to config.status for appending the configuration named by ++# TAGNAME from the matching tagged config vars. ++AC_DEFUN([AC_LIBTOOL_CONFIG], ++[# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ _LT_AC_TAGVAR(compiler, $1) \ ++ _LT_AC_TAGVAR(CC, $1) \ ++ _LT_AC_TAGVAR(LD, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ ++ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ ++ _LT_AC_TAGVAR(old_archive_cmds, $1) \ ++ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ ++ _LT_AC_TAGVAR(predep_objects, $1) \ ++ _LT_AC_TAGVAR(postdep_objects, $1) \ ++ _LT_AC_TAGVAR(predeps, $1) \ ++ _LT_AC_TAGVAR(postdeps, $1) \ ++ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ ++ _LT_AC_TAGVAR(archive_cmds, $1) \ ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ ++ _LT_AC_TAGVAR(postinstall_cmds, $1) \ ++ _LT_AC_TAGVAR(postuninstall_cmds, $1) \ ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ ++ _LT_AC_TAGVAR(allow_undefined_flag, $1) \ ++ _LT_AC_TAGVAR(no_undefined_flag, $1) \ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ ++ _LT_AC_TAGVAR(hardcode_automatic, $1) \ ++ _LT_AC_TAGVAR(module_cmds, $1) \ ++ _LT_AC_TAGVAR(module_expsym_cmds, $1) \ ++ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ ++ _LT_AC_TAGVAR(fix_srcfile_path, $1) \ ++ _LT_AC_TAGVAR(exclude_expsyms, $1) \ ++ _LT_AC_TAGVAR(include_expsyms, $1); do ++ ++ case $var in ++ _LT_AC_TAGVAR(old_archive_cmds, $1) | \ ++ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ ++ _LT_AC_TAGVAR(archive_cmds, $1) | \ ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ ++ _LT_AC_TAGVAR(module_cmds, $1) | \ ++ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\[$]0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` ++ ;; ++ esac ++ ++ifelse([$1], [], ++ [cfgfile="${ofile}T" ++ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 ++ $rm -f "$cfgfile" ++ AC_MSG_NOTICE([creating $ofile])], ++ [cfgfile="$ofile"]) ++ ++ cat <<__EOF__ >> "$cfgfile" ++ifelse([$1], [], ++[#! $SHELL ++ ++# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 ++# Free Software Foundation, Inc. ++# ++# This file is part of GNU Libtool: ++# Originally by Gordon Matzigkeit , 1996 ++# ++# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="$SED -e 1s/^X//" ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++# The names of the tagged configurations supported by this script. ++available_tags= ++ ++# ### BEGIN LIBTOOL CONFIG], ++[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) ++ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) ++ ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# An echo program that does not interpret backslashes. ++echo=$lt_echo ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A C compiler. ++LTCC=$lt_LTCC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ ++# A language-specific compiler. ++CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) ++ ++# Is the compiler the GNU C compiler? ++with_gcc=$_LT_AC_TAGVAR(GCC, $1) ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# The linker used to build libraries. ++LD=$lt_[]_LT_AC_TAGVAR(LD, $1) ++ ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S ++ ++# A BSD-compatible nm program. ++NM=$lt_NM ++ ++# A symbol stripping program ++STRIP=$lt_STRIP ++ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD ++ ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" ++ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" ++ ++# Used on cygwin: assembler. ++AS="$AS" ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) ++ ++# Object file suffix (normally "o"). ++objext="$ac_objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) ++pic_mode=$pic_mode ++ ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) ++archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to build a loadable module (assumed same as above if empty) ++module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) ++module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) ++ ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) ++ ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) ++ ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) ++ ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) ++ ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) ++ ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) ++ ++ifelse([$1],[], ++[# ### END LIBTOOL CONFIG], ++[# ### END LIBTOOL TAG CONFIG: $tagname]) ++ ++__EOF__ ++ ++ifelse([$1],[], [ ++ case $host_os in ++ aix3*) ++ cat <<\EOF >> "$cfgfile" ++ ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++EOF ++ ;; ++ esac ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || \ ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++]) ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi ++])# AC_LIBTOOL_CONFIG ++ ++ ++# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) ++# ------------------------------------------- ++AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], ++[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl ++ ++_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= ++ ++if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ++ ++ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], ++ lt_cv_prog_compiler_rtti_exceptions, ++ [-fno-rtti -fno-exceptions], [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) ++fi ++])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI ++ ++ ++# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++# --------------------------------- ++AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], ++[AC_REQUIRE([AC_CANONICAL_HOST]) ++AC_REQUIRE([LT_AC_PROG_SED]) ++AC_REQUIRE([AC_PROG_NM]) ++AC_REQUIRE([AC_OBJEXT]) ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++AC_MSG_CHECKING([command to parse $NM output from $compiler object]) ++AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], ++[ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[[BCDEGRST]]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' ++ ++# Transform an extracted symbol line into a proper C declaration ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[[BCDT]]' ++ ;; ++cygwin* | mingw* | pw32*) ++ symcode='[[ABCDGISTW]]' ++ ;; ++hpux*) # Its linker distinguishes data from code symbols ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDEGRST]]' ++ fi ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ ;; ++linux* | k*bsd*-gnu) ++ if test "$host_cpu" = ia64; then ++ symcode='[[ABCDGIRSTW]]' ++ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[[BCDEGRST]]' ++ ;; ++osf*) ++ symcode='[[BCDEGQRST]]' ++ ;; ++solaris*) ++ symcode='[[BDRT]]' ++ ;; ++sco3.2v5*) ++ symcode='[[DT]]' ++ ;; ++sysv4.2uw2*) ++ symcode='[[DT]]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[[ABDT]]' ++ ;; ++sysv4) ++ symcode='[[DFNSTU]]' ++ ;; ++esac ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[[ABCDGIRSTW]]' ;; ++esac ++ ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if grep ' nm_test_var$' "$nlist" >/dev/null; then ++ if grep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' ++ ++ cat <> conftest.$ac_ext ++#if defined (__STDC__) && __STDC__ ++# define lt_ptr_t void * ++#else ++# define lt_ptr_t char * ++# define const ++#endif ++ ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ lt_ptr_t address; ++} ++lt_preloaded_symbols[[]] = ++{ ++EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext ++ cat <<\EOF >> conftest.$ac_ext ++ {0, (lt_ptr_t) 0} ++}; ++ ++#ifdef __cplusplus ++} ++#endif ++EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" ++ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD ++ fi ++ else ++ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -f conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++]) ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ AC_MSG_RESULT(failed) ++else ++ AC_MSG_RESULT(ok) ++fi ++]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE ++ ++ ++# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) ++# --------------------------------------- ++AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], ++[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= ++_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= ++ ++AC_MSG_CHECKING([for $compiler option to produce PIC]) ++ ifelse([$1],[CXX],[ ++ # C++ specific cases for pic, static, wl, etc. ++ if test "$GXX" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ mingw* | cygwin* | os2* | pw32*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; ++ *djgpp*) ++ # DJGPP does not support shared libraries at all ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ else ++ case $host_os in ++ aix4* | aix5*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ chorus*) ++ case $cc_basename in ++ cxch68*) ++ # Green Hills C++ Compiler ++ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ++ ;; ++ esac ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ esac ++ ;; ++ dgux*) ++ case $cc_basename in ++ ec++*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ ghcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ freebsd* | dragonfly*) ++ # FreeBSD uses GNU C++ ++ ;; ++ hpux9* | hpux10* | hpux11*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ if test "$host_cpu" != ia64; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ fi ++ ;; ++ aCC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; ++ irix5* | irix6* | nonstopux*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ # CC pic flag -KPIC is the default. ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ KCC*) ++ # KAI C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ icpc* | ecpc*) ++ # Intel C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgCC*) ++ # Portland Group C++ compiler. ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ cxx*) ++ # Compaq C++ ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ lynxos*) ++ ;; ++ m88k*) ++ ;; ++ mvs*) ++ case $cc_basename in ++ cxx*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ netbsd* | netbsdelf*-gnu) ++ ;; ++ osf3* | osf4* | osf5*) ++ case $cc_basename in ++ KCC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ++ ;; ++ RCC*) ++ # Rational C++ 2.4.1 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ cxx*) ++ # Digital/Compaq C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # Make sure the PIC flag is empty. It appears that all Alpha ++ # Linux and Compaq Tru64 Unix objects are PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ psos*) ++ ;; ++ solaris*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.2, 5.x and Centerline C++ ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ ;; ++ gcx*) ++ # Green Hills C++ Compiler ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sunos4*) ++ case $cc_basename in ++ CC*) ++ # Sun C++ 4.x ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ lcc*) ++ # Lucid ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ tandem*) ++ case $cc_basename in ++ NCC*) ++ # NonStop-UX NCC 3.20 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ esac ++ ;; ++ vxworks*) ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++], ++[ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; ++ ++ amigaos*) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ++ ;; ++ ++ interix[[3-9]]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ enable_shared=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic ++ fi ++ ;; ++ ++ hpux*) ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ else ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ darwin*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ case $cc_basename in ++ xlc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ esac ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # PIC (with -KPIC) is the default. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ ++ newsos6) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ linux* | k*bsd*-gnu) ++ case $cc_basename in ++ icc* | ecc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ccc*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All Alpha code is PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ # All OSF/1 code is PIC. ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ ++ rdos*) ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ++ ;; ++ ++ solaris*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ unicos*) ++ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ ++ uts4*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ++ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ++ ;; ++ ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ++ ;; ++ esac ++ fi ++]) ++AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then ++ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], ++ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), ++ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], ++ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in ++ "" | " "*) ;; ++ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; ++ esac], ++ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) ++fi ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= ++ ;; ++ *) ++ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" ++ ;; ++esac ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" ++AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], ++ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), ++ $lt_tmp_static_flag, ++ [], ++ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) ++]) ++ ++ ++# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) ++# ------------------------------------ ++# See if the linker supports building shared libraries. ++AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], ++[AC_REQUIRE([LT_AC_PROG_SED])dnl ++AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) ++ifelse([$1],[CXX],[ ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ case $host_os in ++ aix4* | aix5*) ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ else ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ fi ++ ;; ++ pw32*) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ++ ;; ++ cygwin* | mingw*) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ;; ++ linux* | k*bsd*-gnu) ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ ;; ++ esac ++],[ ++ runpath_var= ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)= ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no ++ _LT_AC_TAGVAR(archive_cmds, $1)= ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)= ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= ++ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=no ++ _LT_AC_TAGVAR(module_cmds, $1)= ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)= ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ _LT_AC_TAGVAR(include_expsyms, $1)= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ extract_expsyms_cmds= ++ # Just being paranoid about ensuring that cc_basename is set. ++ _LT_CC_BASENAME([$compiler]) ++ case $host_os in ++ cygwin* | mingw* | pw32*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>/dev/null` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix3* | aix4* | aix5*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ fi ++ ;; ++ ++ amigaos*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can't use ++ # them. ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, ++ # as there is no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=no ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ interix[[3-9]]*) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ tmp_addflag= ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test $supports_anon_versioning = yes; then ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ $echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=no ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ esac ++ ++ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then ++ runpath_var= ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ fi ++ ;; ++ ++ aix4* | aix5*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ else ++ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ _LT_AC_TAGVAR(archive_cmds, $1)='' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[[012]]|aix4.[[012]].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ _LT_AC_TAGVAR(always_export_symbols, $1)=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an empty executable. ++ _LT_AC_SYS_LIBPATH_AIX ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' ++ # Exported symbols can be pulled into shared objects from archives ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ # see comment about different semantics on the GNU ld section ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ bsdi[[45]]*) ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' ++ # FIXME: Should let the user specify the lib program. ++ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' ++ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ case $host_os in ++ rhapsody* | darwin1.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' ++ ;; ++ *) # Darwin 1.3 on ++ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ else ++ case ${MACOSX_DEPLOYMENT_TARGET} in ++ 10.[[012]]) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ 10.*) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' ++ ;; ++ esac ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ if test "$GCC" = yes ; then ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ else ++ case $cc_basename in ++ xlc*) ++ output_verbose_link_cmd='echo' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' ++ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ ;; ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++ ;; ++ ++ dgux*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ freebsd1*) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ *) ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ ++ netbsd* | netbsdelf*-gnu) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ newsos6) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ++ else ++ case $host_os in ++ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ ;; ++ *) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ fi ++ ;; ++ ++ os2*) ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported ++ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ++ else ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ ++ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: ++ ;; ++ ++ solaris*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' ++ else ++ wlarc='' ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ case $host_os in ++ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes ++ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no ++ ;; ++ motorola) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ sysv4.3*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ _LT_AC_TAGVAR(ld_shlibs, $1)=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' ++ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes ++ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ++ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no ++ ;; ++ ++ *) ++ _LT_AC_TAGVAR(ld_shlibs, $1)=no ++ ;; ++ esac ++ fi ++]) ++AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) ++test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in ++x|xyes) ++ # Assume -lc should be added ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $_LT_AC_TAGVAR(archive_cmds, $1) in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ AC_MSG_CHECKING([whether -lc should be explicitly linked in]) ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) ++ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)= ++ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) ++ then ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ++ else ++ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes ++ fi ++ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) ++ ;; ++ esac ++ fi ++ ;; ++esac ++])# AC_LIBTOOL_PROG_LD_SHLIBS ++ ++ ++# _LT_AC_FILE_LTDLL_C ++# ------------------- ++# Be careful that the start marker always follows a newline. ++AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ ++# /* ltdll.c starts here */ ++# #define WIN32_LEAN_AND_MEAN ++# #include ++# #undef WIN32_LEAN_AND_MEAN ++# #include ++# ++# #ifndef __CYGWIN__ ++# # ifdef __CYGWIN32__ ++# # define __CYGWIN__ __CYGWIN32__ ++# # endif ++# #endif ++# ++# #ifdef __cplusplus ++# extern "C" { ++# #endif ++# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); ++# #ifdef __cplusplus ++# } ++# #endif ++# ++# #ifdef __CYGWIN__ ++# #include ++# DECLARE_CYGWIN_DLL( DllMain ); ++# #endif ++# HINSTANCE __hDllInstance_base; ++# ++# BOOL APIENTRY ++# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) ++# { ++# __hDllInstance_base = hInst; ++# return TRUE; ++# } ++# /* ltdll.c ends here */ ++])# _LT_AC_FILE_LTDLL_C ++ ++ ++# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) ++# --------------------------------- ++AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) ++ ++ ++# old names ++AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) ++AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) ++AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) ++AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) ++AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) ++AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) ++AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) ++ ++# This is just to silence aclocal about the macro not being used ++ifelse([AC_DISABLE_FAST_INSTALL]) ++ ++AC_DEFUN([LT_AC_PROG_GCJ], ++[AC_CHECK_TOOL(GCJ, gcj, no) ++ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" ++ AC_SUBST(GCJFLAGS) ++]) ++ ++AC_DEFUN([LT_AC_PROG_RC], ++[AC_CHECK_TOOL(RC, windres, no) ++]) ++ ++ ++# Cheap backport of AS_EXECUTABLE_P and required macros ++# from Autoconf 2.59; we should not use $as_executable_p directly. ++ ++# _AS_TEST_PREPARE ++# ---------------- ++m4_ifndef([_AS_TEST_PREPARE], ++[m4_defun([_AS_TEST_PREPARE], ++[if test -x / >/dev/null 2>&1; then ++ as_executable_p='test -x' ++else ++ as_executable_p='test -f' ++fi ++])])# _AS_TEST_PREPARE ++ ++# AS_EXECUTABLE_P ++# --------------- ++# Check whether a file is executable. ++m4_ifndef([AS_EXECUTABLE_P], ++[m4_defun([AS_EXECUTABLE_P], ++[AS_REQUIRE([_AS_TEST_PREPARE])dnl ++$as_executable_p $1[]dnl ++])])# AS_EXECUTABLE_P ++ ++# NOTE: This macro has been submitted for inclusion into # ++# GNU Autoconf as AC_PROG_SED. When it is available in # ++# a released version of Autoconf we should remove this # ++# macro and use it instead. # ++# LT_AC_PROG_SED ++# -------------- ++# Check for a fully-functional sed program, that truncates ++# as few characters as possible. Prefer GNU sed if found. ++AC_DEFUN([LT_AC_PROG_SED], ++[AC_MSG_CHECKING([for a sed that does not truncate output]) ++AC_CACHE_VAL(lt_cv_path_SED, ++[# Loop through the user's path and test for sed and gsed. ++# Then use that list of sed's as ones to test for truncation. ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for lt_ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then ++ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" ++ fi ++ done ++ done ++done ++IFS=$as_save_IFS ++lt_ac_max=0 ++lt_ac_count=0 ++# Add /usr/xpg4/bin/sed as it is typically found on Solaris ++# along with /bin/sed that truncates output. ++for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do ++ test ! -f $lt_ac_sed && continue ++ cat /dev/null > conftest.in ++ lt_ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >conftest.in ++ # Check for GNU sed and select it if it is found. ++ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then ++ lt_cv_path_SED=$lt_ac_sed ++ break ++ fi ++ while true; do ++ cat conftest.in conftest.in >conftest.tmp ++ mv conftest.tmp conftest.in ++ cp conftest.in conftest.nl ++ echo >>conftest.nl ++ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break ++ cmp -s conftest.out conftest.nl || break ++ # 10000 chars as input seems more than enough ++ test $lt_ac_count -gt 10 && break ++ lt_ac_count=`expr $lt_ac_count + 1` ++ if test $lt_ac_count -gt $lt_ac_max; then ++ lt_ac_max=$lt_ac_count ++ lt_cv_path_SED=$lt_ac_sed ++ fi ++ done ++done ++]) ++SED=$lt_cv_path_SED ++AC_SUBST([SED]) ++AC_MSG_RESULT([$SED]) ++]) ++ ++# nls.m4 serial 3 (gettext-0.15) ++dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2003. ++ ++AC_PREREQ(2.50) ++ ++AC_DEFUN([AM_NLS], ++[ ++ AC_MSG_CHECKING([whether NLS is requested]) ++ dnl Default is enabled NLS ++ AC_ARG_ENABLE(nls, ++ [ --disable-nls do not use Native Language Support], ++ USE_NLS=$enableval, USE_NLS=yes) ++ AC_MSG_RESULT($USE_NLS) ++ AC_SUBST(USE_NLS) ++]) ++ ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# ++# Copyright © 2004 Scott James Remnant . ++# ++# 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. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# PKG_PROG_PKG_CONFIG([MIN-VERSION]) ++# ---------------------------------- ++AC_DEFUN([PKG_PROG_PKG_CONFIG], ++[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) ++m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) ++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl ++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then ++ AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) ++fi ++if test -n "$PKG_CONFIG"; then ++ _pkg_min_version=m4_default([$1], [0.9.0]) ++ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) ++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ PKG_CONFIG="" ++ fi ++ ++fi[]dnl ++])# PKG_PROG_PKG_CONFIG ++ ++# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ++# Check to see whether a particular set of modules exists. Similar ++# to PKG_CHECK_MODULES(), but does not set variables or print errors. ++# ++# ++# Similar to PKG_CHECK_MODULES, make sure that the first instance of ++# this or PKG_CHECK_MODULES is called, or make sure to call ++# PKG_CHECK_EXISTS manually ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_EXISTS], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++if test -n "$PKG_CONFIG" && \ ++ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then ++ m4_ifval([$2], [$2], [:]) ++m4_ifvaln([$3], [else ++ $3])dnl ++fi]) ++ ++ ++# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) ++# --------------------------------------------- ++m4_define([_PKG_CONFIG], ++[if test -n "$PKG_CONFIG"; then ++ if test -n "$$1"; then ++ pkg_cv_[]$1="$$1" ++ else ++ PKG_CHECK_EXISTS([$3], ++ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], ++ [pkg_failed=yes]) ++ fi ++else ++ pkg_failed=untried ++fi[]dnl ++])# _PKG_CONFIG ++ ++# _PKG_SHORT_ERRORS_SUPPORTED ++# ----------------------------- ++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then ++ _pkg_short_errors_supported=yes ++else ++ _pkg_short_errors_supported=no ++fi[]dnl ++])# _PKG_SHORT_ERRORS_SUPPORTED ++ ++ ++# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], ++# [ACTION-IF-NOT-FOUND]) ++# ++# ++# Note that if there is a possibility the first call to ++# PKG_CHECK_MODULES might not happen, you should be sure to include an ++# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac ++# ++# ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_MODULES], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl ++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl ++ ++pkg_failed=no ++AC_MSG_CHECKING([for $1]) ++ ++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) ++_PKG_CONFIG([$1][_LIBS], [libs], [$2]) ++ ++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS ++and $1[]_LIBS to avoid the need to call pkg-config. ++See the pkg-config man page for more details.]) ++ ++if test $pkg_failed = yes; then ++ _PKG_SHORT_ERRORS_SUPPORTED ++ if test $_pkg_short_errors_supported = yes; then ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` ++ else ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` ++ fi ++ # Put the nasty error message in config.log where it belongs ++ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ++ ++ ifelse([$4], , [AC_MSG_ERROR(dnl ++[Package requirements ($2) were not met: ++ ++$$1_PKG_ERRORS ++ ++Consider adjusting the PKG_CONFIG_PATH environment variable if you ++installed software in a non-standard prefix. ++ ++_PKG_TEXT ++])], ++ [AC_MSG_RESULT([no]) ++ $4]) ++elif test $pkg_failed = untried; then ++ ifelse([$4], , [AC_MSG_FAILURE(dnl ++[The pkg-config script could not be found or is too old. Make sure it ++is in your PATH or set the PKG_CONFIG environment variable to the full ++path to pkg-config. ++ ++_PKG_TEXT ++ ++To get pkg-config, see .])], ++ [$4]) ++else ++ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS ++ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS ++ AC_MSG_RESULT([yes]) ++ ifelse([$3], , :, [$3]) ++fi[]dnl ++])# PKG_CHECK_MODULES ++ ++# po.m4 serial 13 (gettext-0.15) ++dnl Copyright (C) 1995-2006 Free Software Foundation, Inc. ++dnl This file is free software; the Free Software Foundation ++dnl gives unlimited permission to copy and/or distribute it, ++dnl with or without modifications, as long as this notice is preserved. ++dnl ++dnl This file can can be used in projects which are not available under ++dnl the GNU General Public License or the GNU Library General Public ++dnl License but which still want to provide support for the GNU gettext ++dnl functionality. ++dnl Please note that the actual code of the GNU gettext library is covered ++dnl by the GNU Library General Public License, and the rest of the GNU ++dnl gettext package package is covered by the GNU General Public License. ++dnl They are *not* in the public domain. ++ ++dnl Authors: ++dnl Ulrich Drepper , 1995-2000. ++dnl Bruno Haible , 2000-2003. ++ ++AC_PREREQ(2.50) ++ ++dnl Checks for all prerequisites of the po subdirectory. ++AC_DEFUN([AM_PO_SUBDIRS], ++[ ++ AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++ AC_REQUIRE([AC_PROG_INSTALL])dnl ++ AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake ++ AC_REQUIRE([AM_NLS])dnl ++ ++ dnl Perform the following tests also if --disable-nls has been given, ++ dnl because they are needed for "make dist" to work. ++ ++ dnl Search for GNU msgfmt in the PATH. ++ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. ++ dnl The second test excludes FreeBSD msgfmt. ++ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, ++ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && ++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], ++ :) ++ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) ++ ++ dnl Test whether it is GNU msgfmt >= 0.15. ++changequote(,)dnl ++ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; ++ *) MSGFMT_015=$MSGFMT ;; ++ esac ++changequote([,])dnl ++ AC_SUBST([MSGFMT_015]) ++changequote(,)dnl ++ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; ++ *) GMSGFMT_015=$GMSGFMT ;; ++ esac ++changequote([,])dnl ++ AC_SUBST([GMSGFMT_015]) ++ ++ dnl Search for GNU xgettext 0.12 or newer in the PATH. ++ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. ++ dnl The second test excludes FreeBSD xgettext. ++ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, ++ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && ++ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], ++ :) ++ dnl Remove leftover from FreeBSD xgettext call. ++ rm -f messages.po ++ ++ dnl Test whether it is GNU xgettext >= 0.15. ++changequote(,)dnl ++ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; ++ *) XGETTEXT_015=$XGETTEXT ;; ++ esac ++changequote([,])dnl ++ AC_SUBST([XGETTEXT_015]) ++ ++ dnl Search for GNU msgmerge 0.11 or newer in the PATH. ++ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, ++ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) ++ ++ dnl Installation directories. ++ dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we ++ dnl have to define it here, so that it can be used in po/Makefile. ++ test -n "$localedir" || localedir='${datadir}/locale' ++ AC_SUBST([localedir]) ++ ++ AC_CONFIG_COMMANDS([po-directories], [[ ++ for ac_file in $CONFIG_FILES; do ++ # Support "outfile[:infile[:infile...]]" ++ case "$ac_file" in ++ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; ++ esac ++ # PO directories have a Makefile.in generated from Makefile.in.in. ++ case "$ac_file" in */Makefile.in) ++ # Adjust a relative srcdir. ++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` ++ # In autoconf-2.13 it is called $ac_given_srcdir. ++ # In autoconf-2.50 it is called $srcdir. ++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" ++ case "$ac_given_srcdir" in ++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; ++ /*) top_srcdir="$ac_given_srcdir" ;; ++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; ++ esac ++ # Treat a directory as a PO directory if and only if it has a ++ # POTFILES.in file. This allows packages to have multiple PO ++ # directories under different names or in different locations. ++ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then ++ rm -f "$ac_dir/POTFILES" ++ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" ++ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" ++ POMAKEFILEDEPS="POTFILES.in" ++ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend ++ # on $ac_dir but don't depend on user-specified configuration ++ # parameters. ++ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then ++ # The LINGUAS file contains the set of available languages. ++ if test -n "$OBSOLETE_ALL_LINGUAS"; then ++ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi ++ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` ++ # Hide the ALL_LINGUAS assigment from automake < 1.5. ++ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' ++ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else +- dnl Didn't find the library; assume it is in the system directories +- dnl known to the linker and runtime loader. (All the system +- dnl directories known to the linker should also be known to the +- dnl runtime loader, otherwise the system is severely misconfigured.) +- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" +- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" ++ # The set of available languages was given in configure.in. ++ # Hide the ALL_LINGUAS assigment from automake < 1.5. ++ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' ++ fi ++ # Compute POFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) ++ # Compute UPDATEPOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) ++ # Compute DUMMYPOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) ++ # Compute GMOFILES ++ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) ++ case "$ac_given_srcdir" in ++ .) srcdirpre= ;; ++ *) srcdirpre='$(srcdir)/' ;; ++ esac ++ POFILES= ++ UPDATEPOFILES= ++ DUMMYPOFILES= ++ GMOFILES= ++ for lang in $ALL_LINGUAS; do ++ POFILES="$POFILES $srcdirpre$lang.po" ++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" ++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop" ++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" ++ done ++ # CATALOGS depends on both $ac_dir and the user's LINGUAS ++ # environment variable. ++ INST_LINGUAS= ++ if test -n "$ALL_LINGUAS"; then ++ for presentlang in $ALL_LINGUAS; do ++ useit=no ++ if test "%UNSET%" != "$LINGUAS"; then ++ desiredlanguages="$LINGUAS" ++ else ++ desiredlanguages="$ALL_LINGUAS" ++ fi ++ for desiredlang in $desiredlanguages; do ++ # Use the presentlang catalog if desiredlang is ++ # a. equal to presentlang, or ++ # b. a variant of presentlang (because in this case, ++ # presentlang can be used as a fallback for messages ++ # which are not translated in the desiredlang catalog). ++ case "$desiredlang" in ++ "$presentlang"*) useit=yes;; ++ esac ++ done ++ if test $useit = yes; then ++ INST_LINGUAS="$INST_LINGUAS $presentlang" ++ fi ++ done ++ fi ++ CATALOGS= ++ if test -n "$INST_LINGUAS"; then ++ for lang in $INST_LINGUAS; do ++ CATALOGS="$CATALOGS $lang.gmo" ++ done + fi ++ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" ++ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" ++ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do ++ if test -f "$f"; then ++ case "$f" in ++ *.orig | *.bak | *~) ;; ++ *) cat "$f" >> "$ac_dir/Makefile" ;; ++ esac ++ fi ++ done + fi +- fi +- done ++ ;; ++ esac ++ done]], ++ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute ++ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it ++ # from automake < 1.5. ++ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' ++ # Capture the value of LINGUAS because we need it to compute CATALOGS. ++ LINGUAS="${LINGUAS-%UNSET%}" ++ ]) ++]) ++ ++dnl Postprocesses a Makefile in a directory containing PO files. ++AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], ++[ ++ # When this code is run, in config.status, two variables have already been ++ # set: ++ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, ++ # - LINGUAS is the value of the environment variable LINGUAS at configure ++ # time. ++ ++changequote(,)dnl ++ # Adjust a relative srcdir. ++ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ++ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ++ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` ++ # In autoconf-2.13 it is called $ac_given_srcdir. ++ # In autoconf-2.50 it is called $srcdir. ++ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" ++ case "$ac_given_srcdir" in ++ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; ++ /*) top_srcdir="$ac_given_srcdir" ;; ++ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; ++ esac ++ ++ # Find a way to echo strings without interpreting backslash. ++ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then ++ gt_echo='echo' ++ else ++ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then ++ gt_echo='printf %s\n' ++ else ++ echo_func () { ++ cat < "$ac_file.tmp" ++ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then ++ # Add dependencies that cannot be formulated as a simple suffix rule. ++ for lang in $ALL_LINGUAS; do ++ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` ++ cat >> "$ac_file.tmp" <&1 conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: + fi +- rm -f conf$$.sh +-fi +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by GCC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]* | [A-Za-z]:[\\/]*)] +- [re_direlt='/[^/][^/]*/\.\./'] +- # Canonicalize the path of ld +- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` +- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) +-else +- AC_MSG_CHECKING([for non-GNU ld]) +-fi +-AC_CACHE_VAL(acl_cv_path_LD, +-[if test -z "$LD"; then +- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" +- for ac_dir in $PATH; do +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- acl_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in +- *GNU* | *'with BFD'*) +- test "$with_gnu_ld" != no && break ;; +- *) +- test "$with_gnu_ld" != yes && break ;; +- esac +- fi +- done +- IFS="$ac_save_ifs" +-else +- acl_cv_path_LD="$LD" # Let the user override the test with a path. +-fi]) +-LD="$acl_cv_path_LD" +-if test -n "$LD"; then +- AC_MSG_RESULT($LD) +-else +- AC_MSG_RESULT(no) +-fi +-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +-AC_LIB_PROG_LD_GNU ++ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then ++ # Add dependencies that cannot be formulated as a simple suffix rule. ++ for lang in $ALL_LINGUAS; do ++ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` ++ cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +-[ +- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. +- AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) +- AC_REQUIRE([AC_LIB_RPATH]) ++AC_PREREQ(2.50) + +- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV +- dnl accordingly. +- AC_LIB_LINKFLAGS_BODY([iconv]) +-]) ++# Search path for a program which passes the given test. + +-AC_DEFUN([AM_ICONV_LINK], ++dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, ++dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) ++AC_DEFUN([AM_PATH_PROG_WITH_TEST], + [ +- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and +- dnl those with the standalone portable GNU libiconv installed). +- +- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV +- dnl accordingly. +- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) +- +- dnl Add $INCICONV to CPPFLAGS before performing the following checks, +- dnl because if the user has installed libiconv and not disabled its use +- dnl via --without-libiconv-prefix, he wants to use it. The first +- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. +- am_save_CPPFLAGS="$CPPFLAGS" +- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) +- +- AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ +- am_cv_func_iconv="no, consider installing GNU libiconv" +- am_cv_lib_iconv=no +- AC_TRY_LINK([#include +-#include ], +- [iconv_t cd = iconv_open("",""); +- iconv(cd,NULL,NULL,NULL,NULL); +- iconv_close(cd);], +- am_cv_func_iconv=yes) +- if test "$am_cv_func_iconv" != yes; then +- am_save_LIBS="$LIBS" +- LIBS="$LIBS $LIBICONV" +- AC_TRY_LINK([#include +-#include ], +- [iconv_t cd = iconv_open("",""); +- iconv(cd,NULL,NULL,NULL,NULL); +- iconv_close(cd);], +- am_cv_lib_iconv=yes +- am_cv_func_iconv=yes) +- LIBS="$am_save_LIBS" +- fi +- ]) +- if test "$am_cv_func_iconv" = yes; then +- AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) +- fi +- if test "$am_cv_lib_iconv" = yes; then +- AC_MSG_CHECKING([how to link with libiconv]) +- AC_MSG_RESULT([$LIBICONV]) ++# Prepare PATH_SEPARATOR. ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' + else +- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV +- dnl either. +- CPPFLAGS="$am_save_CPPFLAGS" +- LIBICONV= +- LTLIBICONV= ++ PATH_SEPARATOR=: + fi +- AC_SUBST(LIBICONV) +- AC_SUBST(LTLIBICONV) ++ rm -f conf$$.sh ++fi ++ ++# Find out how to test for executable files. Don't use a zero-byte file, ++# as systems may use methods other than mode bits to determine executability. ++cat >conf$$.file <<_ASEOF ++#! /bin/sh ++exit 0 ++_ASEOF ++chmod +x conf$$.file ++if test -x conf$$.file >/dev/null 2>&1; then ++ ac_executable_p="test -x" ++else ++ ac_executable_p="test -f" ++fi ++rm -f conf$$.file ++ ++# Extract the first word of "$2", so it can be a program name with args. ++set dummy $2; ac_word=[$]2 ++AC_MSG_CHECKING([for $ac_word]) ++AC_CACHE_VAL(ac_cv_path_$1, ++[case "[$]$1" in ++ [[\\/]]* | ?:[[\\/]]*) ++ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ++ ;; ++ *) ++ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in ifelse([$5], , $PATH, [$5]); do ++ IFS="$ac_save_IFS" ++ test -z "$ac_dir" && ac_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then ++ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD ++ if [$3]; then ++ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" ++ break 2 ++ fi ++ fi ++ done ++ done ++ IFS="$ac_save_IFS" ++dnl If no 4th arg is given, leave the cache variable unset, ++dnl so AC_PATH_PROGS will keep looking. ++ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ++])dnl ++ ;; ++esac])dnl ++$1="$ac_cv_path_$1" ++if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then ++ AC_MSG_RESULT([$]$1) ++else ++ AC_MSG_RESULT(no) ++fi ++AC_SUBST($1)dnl + ]) + +-AC_DEFUN([AM_ICONV], +-[ +- AM_ICONV_LINK +- if test "$am_cv_func_iconv" = yes; then +- AC_MSG_CHECKING([for iconv declaration]) +- AC_CACHE_VAL(am_cv_proto_iconv, [ +- AC_TRY_COMPILE([ +-#include +-#include +-extern +-#ifdef __cplusplus +-"C" +-#endif +-#if defined(__STDC__) || defined(__cplusplus) +-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +-#else +-size_t iconv(); +-#endif +-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") +- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) +- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` +- AC_MSG_RESULT([$]{ac_t:- +- }[$]am_cv_proto_iconv) +- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, +- [Define as const if the declaration of iconv() needs const.]) +- fi ++# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_AUTOMAKE_VERSION(VERSION) ++# ---------------------------- ++# Automake X.Y traces this macro to ensure aclocal.m4 has been ++# generated from the m4 files accompanying Automake X.Y. ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.10' ++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to ++dnl require some minimum version. Point them to the right macro. ++m4_if([$1], [1.10], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl + ]) + +-# glibc2.m4 serial 1 +-dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) + +-# Test for the GNU C Library, version 2.0 or newer. +-# From Bruno Haible. ++# AM_SET_CURRENT_AUTOMAKE_VERSION ++# ------------------------------- ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. ++# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. ++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ++[AM_AUTOMAKE_VERSION([1.10])dnl ++_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +-AC_DEFUN([gt_GLIBC2], +- [ +- AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, +- ac_cv_gnu_library_2, +- [AC_EGREP_CPP([Lucky GNU user], +- [ +-#include +-#ifdef __GNU_LIBRARY__ +- #if (__GLIBC__ >= 2) +- Lucky GNU user +- #endif +-#endif +- ], +- ac_cv_gnu_library_2=yes, +- ac_cv_gnu_library_2=no) +- ] +- ) +- AC_SUBST(GLIBC2) +- GLIBC2="$ac_cv_gnu_library_2" +- ] +-) ++# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +-# isc-posix.m4 serial 2 (gettext-0.11.2) +-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to ++# `$srcdir', `$srcdir/..', or `$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is `.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. + +-# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[dnl Rely on autoconf to set up CDPATH properly. ++AC_PREREQ([2.50])dnl ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++]) + +-# This test replaces the one in autoconf. +-# Currently this macro should have the same name as the autoconf macro +-# because gettext's gettext.m4 (distributed in the automake package) +-# still uses it. Otherwise, the use in gettext.m4 makes autoheader +-# give these diagnostics: +-# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +-# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX +- +-undefine([AC_ISC_POSIX]) +- +-AC_DEFUN([AC_ISC_POSIX], +- [ +- dnl This test replaces the obsolescent AC_ISC_POSIX kludge. +- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) +- ] +-) ++# AM_CONDITIONAL -*- Autoconf -*- + +-# signed.m4 serial 1 (gettext-0.10.40) +-dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-dnl From Bruno Haible. ++# serial 8 ++ ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ(2.52)dnl ++ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) + +-AC_DEFUN([bh_C_SIGNED], +-[ +- AC_CACHE_CHECK([for signed], bh_cv_c_signed, +- [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) +- if test $bh_cv_c_signed = no; then +- AC_DEFINE(signed, , +- [Define to empty if the C compiler doesn't support this keyword.]) +- fi +-]) ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# longlong.m4 serial 5 +-dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# serial 9 + +-dnl From Paul Eggert. ++# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + +-# Define HAVE_LONG_LONG if 'long long' works. + +-AC_DEFUN([gl_AC_TYPE_LONG_LONG], +-[ +- AC_CACHE_CHECK([for long long], ac_cv_type_long_long, +- [AC_TRY_LINK([long long ll = 1LL; int i = 63;], +- [long long llmax = (long long) -1; +- return ll << i | ll >> i | llmax / ll | llmax % ll;], +- ac_cv_type_long_long=yes, +- ac_cv_type_long_long=no)]) +- if test $ac_cv_type_long_long = yes; then +- AC_DEFINE(HAVE_LONG_LONG, 1, +- [Define if you have the 'long long' type.]) +- fi +-]) ++# _AM_DEPENDENCIES(NAME) ++# ---------------------- ++# See how the compiler implements dependency checking. ++# NAME is "CC", "CXX", "GCJ", or "OBJC". ++# We try a few techniques and use that to set a single cache variable. ++# ++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ++# dependency, and given that the user is not expected to run this macro, ++# just rely on AC_PROG_CC. ++AC_DEFUN([_AM_DEPENDENCIES], ++[AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++AC_REQUIRE([AM_MAKE_INCLUDE])dnl ++AC_REQUIRE([AM_DEP_TRACK])dnl + +-# longdouble.m4 serial 1 (gettext-0.12) +-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++ifelse([$1], CC, [depcc="$CC" am_compiler_list=], ++ [$1], CXX, [depcc="$CXX" am_compiler_list=], ++ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ++ [$1], UPC, [depcc="$UPC" am_compiler_list=], ++ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ++ [depcc="$$1" am_compiler_list=]) + +-dnl From Bruno Haible. +-dnl Test whether the compiler supports the 'long double' type. +-dnl Prerequisite: AC_PROG_CC ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named `D' -- because `-MD' means `put the output ++ # in D'. ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub + +-AC_DEFUN([gt_TYPE_LONGDOUBLE], +-[ +- AC_CACHE_CHECK([for long double], gt_cv_c_long_double, +- [if test "$GCC" = yes; then +- gt_cv_c_long_double=yes +- else +- AC_TRY_COMPILE([ +- /* The Stardent Vistra knows sizeof(long double), but does not support it. */ +- long double foo = 0.0; +- /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ +- int array [2*(sizeof(long double) >= sizeof(double)) - 1]; +- ], , +- gt_cv_c_long_double=yes, gt_cv_c_long_double=no) +- fi]) +- if test $gt_cv_c_long_double = yes; then +- AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi +-]) +- +-# wchar_t.m4 serial 1 (gettext-0.12) +-dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +-dnl From Bruno Haible. +-dnl Test whether has the 'wchar_t' type. +-dnl Prerequisite: AC_PROG_CC ++ case $depmode in ++ nosideeffect) ++ # after this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ none) break ;; ++ esac ++ # We check with `-c' and `-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle `-M -o', and we need to detect this. ++ if depmode=$depmode \ ++ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done + +-AC_DEFUN([gt_TYPE_WCHAR_T], +-[ +- AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, +- [AC_TRY_COMPILE([#include +- wchar_t foo = (wchar_t)'\0';], , +- gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) +- if test $gt_cv_c_wchar_t = yes; then +- AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) +- fi ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none ++fi + ]) +- +-# wint_t.m4 serial 1 (gettext-0.12) +-dnl Copyright (C) 2003 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +- +-dnl From Bruno Haible. +-dnl Test whether has the 'wint_t' type. +-dnl Prerequisite: AC_PROG_CC +- +-AC_DEFUN([gt_TYPE_WINT_T], +-[ +- AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, +- [AC_TRY_COMPILE([#include +- wint_t foo = (wchar_t)'\0';], , +- gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) +- if test $gt_cv_c_wint_t = yes; then +- AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) +- fi ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) + ]) + +-# inttypes_h.m4 serial 6 +-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. + +-dnl From Paul Eggert. ++# AM_SET_DEPDIR ++# ------------- ++# Choose a directory name for dependency files. ++# This macro is AC_REQUIREd in _AM_DEPENDENCIES ++AC_DEFUN([AM_SET_DEPDIR], ++[AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++]) + +-# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +-# doesn't clash with , and declares uintmax_t. + +-AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +-[ +- AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, +- [AC_TRY_COMPILE( +- [#include +-#include ], +- [uintmax_t i = (uintmax_t) -1;], +- gl_cv_header_inttypes_h=yes, +- gl_cv_header_inttypes_h=no)]) +- if test $gl_cv_header_inttypes_h = yes; then +- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, +- [Define if exists, doesn't clash with , +- and declares uintmax_t. ]) +- fi ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE(dependency-tracking, ++[ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl + ]) + +-# stdint_h.m4 serial 5 +-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Generate code to set up dependency tracking. -*- Autoconf -*- + +-dnl From Paul Eggert. ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +-# doesn't clash with , and declares uintmax_t. ++#serial 3 + +-AC_DEFUN([gl_AC_HEADER_STDINT_H], +-[ +- AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, +- [AC_TRY_COMPILE( +- [#include +-#include ], +- [uintmax_t i = (uintmax_t) -1;], +- gl_cv_header_stdint_h=yes, +- gl_cv_header_stdint_h=no)]) +- if test $gl_cv_header_stdint_h = yes; then +- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, +- [Define if exists, doesn't clash with , +- and declares uintmax_t. ]) ++# _AM_OUTPUT_DEPENDENCY_COMMANDS ++# ------------------------------ ++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ++[for mf in $CONFIG_FILES; do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named `Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue + fi +-]) +- +-# intmax.m4 serial 2 (gettext-0.14.2) +-dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # When using ansi2knr, U may be empty or an underscore; expand it ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++done ++])# _AM_OUTPUT_DEPENDENCY_COMMANDS + +-dnl From Bruno Haible. +-dnl Test whether the system has the 'intmax_t' type, but don't attempt to +-dnl find a replacement if it is lacking. + +-AC_DEFUN([gt_TYPE_INTMAX_T], +-[ +- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) +- AC_REQUIRE([gl_AC_HEADER_STDINT_H]) +- AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, +- [AC_TRY_COMPILE([ +-#include +-#include +-#if HAVE_STDINT_H_WITH_UINTMAX +-#include +-#endif +-#if HAVE_INTTYPES_H_WITH_UINTMAX +-#include +-#endif +-], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) +- if test $gt_cv_c_intmax_t = yes; then +- AC_DEFINE(HAVE_INTMAX_T, 1, +- [Define if you have the 'intmax_t' type in or .]) +- fi ++# AM_OUTPUT_DEPENDENCY_COMMANDS ++# ----------------------------- ++# This macro should only be invoked once -- use via AC_REQUIRE. ++# ++# This code is only required when automatic dependency tracking ++# is enabled. FIXME. This creates each `.P' file that we will ++# need in order to bootstrap the dependency handling code. ++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ++[AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) + ]) + +-# printf-posix.m4 serial 2 (gettext-0.13.1) +-dnl Copyright (C) 2003 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +- +-dnl From Bruno Haible. +-dnl Test whether the printf() function supports POSIX/XSI format strings with +-dnl positions. +- +-AC_DEFUN([gt_PRINTF_POSIX], +-[ +- AC_REQUIRE([AC_PROG_CC]) +- AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], +- gt_cv_func_printf_posix, +- [ +- AC_TRY_RUN([ +-#include +-#include +-/* The string "%2$d %1$d", with dollar characters protected from the shell's +- dollar expansion (possibly an autoconf bug). */ +-static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +-static char buf[100]; +-int main () +-{ +- sprintf (buf, format, 33, 55); +- return (strcmp (buf, "55 33") != 0); +-}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, +- [ +- AC_EGREP_CPP(notposix, [ +-#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ +- notposix +-#endif +- ], gt_cv_func_printf_posix="guessing no", +- gt_cv_func_printf_posix="guessing yes") +- ]) +- ]) +- case $gt_cv_func_printf_posix in +- *yes) +- AC_DEFINE(HAVE_POSIX_PRINTF, 1, +- [Define if your printf() function supports format strings with positions.]) +- ;; +- esac +-]) ++# Do all the work for Automake. -*- Autoconf -*- + +-# glibc21.m4 serial 3 +-dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ++# 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Test for the GNU C Library, version 2.1 or newer. +-# From Bruno Haible. ++# serial 12 + +-AC_DEFUN([gl_GLIBC21], +- [ +- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, +- ac_cv_gnu_library_2_1, +- [AC_EGREP_CPP([Lucky GNU user], +- [ +-#include +-#ifdef __GNU_LIBRARY__ +- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) +- Lucky GNU user +- #endif +-#endif +- ], +- ac_cv_gnu_library_2_1=yes, +- ac_cv_gnu_library_2_1=no) +- ] +- ) +- AC_SUBST(GLIBC21) +- GLIBC21="$ac_cv_gnu_library_2_1" +- ] +-) ++# This macro actually does too much. Some checks are only needed if ++# your package does certain things. But this isn't really a big deal. + +-# intdiv0.m4 serial 1 (gettext-0.11.3) +-dnl Copyright (C) 2002 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.60])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi + +-dnl From Bruno Haible. ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++AC_SUBST([CYGPATH_W]) + +-AC_DEFUN([gt_INTDIV0], +-[ +- AC_REQUIRE([AC_PROG_CC])dnl +- AC_REQUIRE([AC_CANONICAL_HOST])dnl ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. ++m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, ++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], +- gt_cv_int_divbyzero_sigfpe, +- [ +- AC_TRY_RUN([ +-#include +-#include ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +-static void +-#ifdef __cplusplus +-sigfpe_handler (int sig) +-#else +-sigfpe_handler (sig) int sig; +-#endif +-{ +- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ +- exit (sig != SIGFPE); +-} ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ++AM_MISSING_PROG(AUTOCONF, autoconf) ++AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ++AM_MISSING_PROG(AUTOHEADER, autoheader) ++AM_MISSING_PROG(MAKEINFO, makeinfo) ++AM_PROG_INSTALL_SH ++AM_PROG_INSTALL_STRIP ++AC_REQUIRE([AM_PROG_MKDIR_P])dnl ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES(CC)], ++ [define([AC_PROG_CC], ++ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES(CXX)], ++ [define([AC_PROG_CXX], ++ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJC], ++ [_AM_DEPENDENCIES(OBJC)], ++ [define([AC_PROG_OBJC], ++ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ++]) ++]) + +-int x = 1; +-int y = 0; +-int z; +-int nan; + +-int main () +-{ +- signal (SIGFPE, sigfpe_handler); +-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) +- signal (SIGTRAP, sigfpe_handler); +-#endif +-/* Linux/SPARC yields signal SIGILL. */ +-#if defined (__sparc__) && defined (__linux__) +- signal (SIGILL, sigfpe_handler); +-#endif ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. + +- z = x / y; +- nan = y / y; +- exit (1); +-} +-], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, +- [ +- # Guess based on the CPU. +- case "$host_cpu" in +- alpha* | i[34567]86 | m68k | s390*) +- gt_cv_int_divbyzero_sigfpe="guessing yes";; +- *) +- gt_cv_int_divbyzero_sigfpe="guessing no";; +- esac +- ]) +- ]) +- case "$gt_cv_int_divbyzero_sigfpe" in +- *yes) value=1;; +- *) value=0;; ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $1 | $1:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, +- [Define if integer division by zero raises signal SIGFPE.]) +-]) +- +-# uintmax_t.m4 serial 9 +-dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++done ++echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +-dnl From Paul Eggert. ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-AC_PREREQ(2.13) ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} ++AC_SUBST(install_sh)]) + +-# Define uintmax_t to 'unsigned long' or 'unsigned long long' +-# if it is not already defined in or . ++# Copyright (C) 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +-[ +- AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) +- AC_REQUIRE([gl_AC_HEADER_STDINT_H]) +- if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then +- AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) +- test $ac_cv_type_unsigned_long_long = yes \ +- && ac_type='unsigned long long' \ +- || ac_type='unsigned long' +- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, +- [Define to unsigned long or unsigned long long +- if and don't define.]) +- else +- AC_DEFINE(HAVE_UINTMAX_T, 1, +- [Define if you have the 'uintmax_t' type in or .]) +- fi +-]) ++# serial 2 + +-# ulonglong.m4 serial 4 +-dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Check whether the underlying file-system supports filenames ++# with a leading dot. For instance MS-DOS doesn't. ++AC_DEFUN([AM_SET_LEADING_DOT], ++[rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++AC_SUBST([am__leading_dot])]) + +-dnl From Paul Eggert. ++# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. ++# serial 5 + +-AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], +-[ +- AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, +- [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], +- [unsigned long long ullmax = (unsigned long long) -1; +- return ull << i | ull >> i | ullmax / ull | ullmax % ull;], +- ac_cv_type_unsigned_long_long=yes, +- ac_cv_type_unsigned_long_long=no)]) +- if test $ac_cv_type_unsigned_long_long = yes; then +- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, +- [Define if you have the 'unsigned long long' type.]) +- fi +-]) ++# AM_PROG_LEX ++# ----------- ++# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a ++# "missing" invocation, for better error output. ++AC_DEFUN([AM_PROG_LEX], ++[AC_PREREQ(2.50)dnl ++AC_REQUIRE([AM_MISSING_HAS_RUN])dnl ++AC_REQUIRE([AC_PROG_LEX])dnl ++if test "$LEX" = :; then ++ LEX=${am_missing_run}flex ++fi]) + +-# inttypes.m4 serial 1 (gettext-0.11.4) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Check to see how 'make' treats includes. -*- Autoconf -*- + +-dnl From Paul Eggert. ++# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Define HAVE_INTTYPES_H if exists and doesn't clash with +-# . ++# serial 3 + +-AC_DEFUN([gt_HEADER_INTTYPES_H], +-[ +- AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, +- [ +- AC_TRY_COMPILE( +- [#include +-#include ], +- [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) +- ]) +- if test $gt_cv_header_inttypes_h = yes; then +- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, +- [Define if exists and doesn't clash with .]) +- fi ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU ++fi ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf + ]) + +-# inttypes-pri.m4 serial 1 (gettext-0.11.4) +-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-dnl From Bruno Haible. ++# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# Define PRI_MACROS_BROKEN if exists and defines the PRI* +-# macros to non-string values. This is the case on AIX 4.3.3. ++# serial 5 + +-AC_DEFUN([gt_INTTYPES_PRI], +-[ +- AC_REQUIRE([gt_HEADER_INTTYPES_H]) +- if test $gt_cv_header_inttypes_h = yes; then +- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], +- gt_cv_inttypes_pri_broken, +- [ +- AC_TRY_COMPILE([#include +-#ifdef PRId32 +-char *p = PRId32; +-#endif +-], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) +- ]) +- fi +- if test "$gt_cv_inttypes_pri_broken" = yes; then +- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, +- [Define if exists and defines unusable PRI* macros.]) +- fi +-]) ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) + +-# xsize.m4 serial 3 +-dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. + +-AC_DEFUN([gl_XSIZE], +-[ +- dnl Prerequisites of lib/xsize.h. +- AC_REQUIRE([gl_SIZE_MAX]) +- AC_REQUIRE([AC_C_INLINE]) +- AC_CHECK_HEADERS(stdint.h) ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it supports --run. ++# If it does, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " ++else ++ am_missing_run= ++ AC_MSG_WARN([`missing' script is too old or missing]) ++fi + ]) + +-# size_max.m4 serial 2 +-dnl Copyright (C) 2003 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +- +-dnl From Bruno Haible. ++# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-AC_DEFUN([gl_SIZE_MAX], +-[ +- AC_CHECK_HEADERS(stdint.h) +- dnl First test whether the system already has SIZE_MAX. +- AC_MSG_CHECKING([for SIZE_MAX]) +- result= +- AC_EGREP_CPP([Found it], [ +-#include +-#if HAVE_STDINT_H +-#include +-#endif +-#ifdef SIZE_MAX +-Found it +-#endif +-], result=yes) +- if test -z "$result"; then +- dnl Define it ourselves. Here we assume that the type 'size_t' is not wider +- dnl than the type 'unsigned long'. +- dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', +- dnl which is guaranteed to work from LONG_MIN to LONG_MAX. +- _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, +- [#include ], result=?) +- _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, +- [#include ], result=?) +- _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, +- [#include ], result=?) +- if test "$fits_in_uint" = 1; then +- dnl Even though SIZE_MAX fits in an unsigned int, it must be of type +- dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. +- AC_TRY_COMPILE([#include +- extern size_t foo; +- extern unsigned long foo; +- ], [], fits_in_uint=0) +- fi +- if test -z "$result"; then +- if test "$fits_in_uint" = 1; then +- result="$res_hi$res_lo"U +- else +- result="$res_hi$res_lo"UL +- fi +- else +- dnl Shouldn't happen, but who knows... +- result='~(size_t)0' +- fi +- fi +- AC_MSG_RESULT([$result]) +- if test "$result" != yes; then +- AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], +- [Define as the maximum value of type 'size_t', if the system doesn't define it.]) +- fi ++# AM_PROG_MKDIR_P ++# --------------- ++# Check for `mkdir -p'. ++AC_DEFUN([AM_PROG_MKDIR_P], ++[AC_PREREQ([2.60])dnl ++AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, ++dnl while keeping a definition of mkdir_p for backward compatibility. ++dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. ++dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of ++dnl Makefile.ins that do not define MKDIR_P, so we do our own ++dnl adjustment using top_builddir (which is defined more often than ++dnl MKDIR_P). ++AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl ++case $mkdir_p in ++ [[\\/$]]* | ?:[[\\/]]*) ;; ++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; ++esac + ]) + +-# codeset.m4 serial AM1 (gettext-0.10.40) +-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. ++# Helper functions for option handling. -*- Autoconf -*- + +-dnl From Bruno Haible. ++# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-AC_DEFUN([AM_LANGINFO_CODESET], +-[ +- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, +- [AC_TRY_LINK([#include ], +- [char* cs = nl_langinfo(CODESET);], +- am_cv_langinfo_codeset=yes, +- am_cv_langinfo_codeset=no) +- ]) +- if test $am_cv_langinfo_codeset = yes; then +- AC_DEFINE(HAVE_LANGINFO_CODESET, 1, +- [Define if you have and nl_langinfo(CODESET).]) +- fi +-]) ++# serial 3 + +-# lcmessage.m4 serial 4 (gettext-0.14.2) +-dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. +-dnl This file is free software; the Free Software Foundation +-dnl gives unlimited permission to copy and/or distribute it, +-dnl with or without modifications, as long as this notice is preserved. +-dnl +-dnl This file can can be used in projects which are not available under +-dnl the GNU General Public License or the GNU Library General Public +-dnl License but which still want to provide support for the GNU gettext +-dnl functionality. +-dnl Please note that the actual code of the GNU gettext library is covered +-dnl by the GNU Library General Public License, and the rest of the GNU +-dnl gettext package package is covered by the GNU General Public License. +-dnl They are *not* in the public domain. ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +-dnl Authors: +-dnl Ulrich Drepper , 1995. ++# _AM_SET_OPTION(NAME) ++# ------------------------------ ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +-# Check whether LC_MESSAGES is available in . ++# _AM_SET_OPTIONS(OPTIONS) ++# ---------------------------------- ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +-AC_DEFUN([gt_LC_MESSAGES], +-[ +- AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, +- [AC_TRY_LINK([#include ], [return LC_MESSAGES], +- gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) +- if test $gt_cv_val_LC_MESSAGES = yes; then +- AC_DEFINE(HAVE_LC_MESSAGES, 1, +- [Define if your file defines LC_MESSAGES.]) +- fi +-]) ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +-dnl Configure Paths for Alsa +-dnl Some modifications by Richard Boulton +-dnl Christopher Lansdown +-dnl Jaroslav Kysela +-dnl Last modification: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp +-dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +-dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. +-dnl enables arguments --with-alsa-prefix= +-dnl --with-alsa-enc-prefix= +-dnl --disable-alsatest +-dnl +-dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, +-dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. +-dnl +-AC_DEFUN([AM_PATH_ALSA], +-[dnl Save the original CFLAGS, LDFLAGS, and LIBS +-alsa_save_CFLAGS="$CFLAGS" +-alsa_save_LDFLAGS="$LDFLAGS" +-alsa_save_LIBS="$LIBS" +-alsa_found=yes ++# Check to make sure that the build environment is sane. -*- Autoconf -*- + +-dnl +-dnl Get the cflags and libraries for alsa +-dnl +-AC_ARG_WITH(alsa-prefix, +-[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], +-[alsa_prefix="$withval"], [alsa_prefix=""]) ++# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 ++# Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-AC_ARG_WITH(alsa-inc-prefix, +-[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], +-[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) ++# serial 4 + +-dnl FIXME: this is not yet implemented +-AC_ARG_ENABLE(alsatest, +-[ --disable-alsatest Do not try to compile and run a test Alsa program], +-[enable_alsatest="$enableval"], +-[enable_alsatest=yes]) ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# Do `set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t $srcdir/configure conftest.file` ++ fi ++ rm -f conftest.file ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then + +-dnl Add any special include directories +-AC_MSG_CHECKING(for ALSA CFLAGS) +-if test "$alsa_inc_prefix" != "" ; then +- ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" +- CFLAGS="$CFLAGS -I$alsa_inc_prefix" +-fi +-AC_MSG_RESULT($ALSA_CFLAGS) ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++alias in your environment]) ++ fi + +-dnl add any special lib dirs +-AC_MSG_CHECKING(for ALSA LDFLAGS) +-if test "$alsa_prefix" != "" ; then +- ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" +- LDFLAGS="$LDFLAGS $ALSA_LIBS" ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) + fi ++AC_MSG_RESULT(yes)]) + +-dnl add the alsa library +-ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +-LIBS="$ALSA_LIBS $LIBS" +-AC_MSG_RESULT($ALSA_LIBS) ++# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-dnl Check for a working version of libasound that is of the right version. +-min_alsa_version=ifelse([$1], ,0.1.1,$1) +-AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) +-no_alsa="" +- alsa_min_major_version=`echo $min_alsa_version | \ +- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` +- alsa_min_minor_version=`echo $min_alsa_version | \ +- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` +- alsa_min_micro_version=`echo $min_alsa_version | \ +- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` ++# AM_PROG_INSTALL_STRIP ++# --------------------- ++# One issue with vendor `install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in `make install-strip', and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using `strip' when the user ++# run `make install-strip'. However `strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the `STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-AC_LANG_SAVE +-AC_LANG_C +-AC_TRY_COMPILE([ +-#include +-], [ +-/* ensure backward compatibility */ +-#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +-#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +-#endif +-#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +-#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +-#endif +-#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +-#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +-#endif ++# Copyright (C) 2006 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-# if(SND_LIB_MAJOR > $alsa_min_major_version) +- exit(0); +-# else +-# if(SND_LIB_MAJOR < $alsa_min_major_version) +-# error not present +-# endif ++# _AM_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) + +-# if(SND_LIB_MINOR > $alsa_min_minor_version) +- exit(0); +-# else +-# if(SND_LIB_MINOR < $alsa_min_minor_version) +-# error not present +-# endif ++# Check how to create a tarball. -*- Autoconf -*- + +-# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +-# error not present +-# endif +-# endif +-# endif +-exit(0); +-], +- [AC_MSG_RESULT(found.)], +- [AC_MSG_RESULT(not present.) +- ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) +- alsa_found=no] +-) +-AC_LANG_RESTORE ++# Copyright (C) 2004, 2005 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. + +-dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. +-if test "x$enable_alsatest" = "xyes"; then +-AC_CHECK_LIB([asound], [snd_ctl_open],, +- [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) +- alsa_found=no] +-) +-fi ++# serial 2 + +-if test "x$alsa_found" = "xyes" ; then +- ifelse([$2], , :, [$2]) +- LIBS=`echo $LIBS | sed 's/-lasound//g'` +- LIBS=`echo $LIBS | sed 's/ //'` +- LIBS="-lasound $LIBS" +-fi +-if test "x$alsa_found" = "xno" ; then +- ifelse([$3], , :, [$3]) +- CFLAGS="$alsa_save_CFLAGS" +- LDFLAGS="$alsa_save_LDFLAGS" +- LIBS="$alsa_save_LIBS" +- ALSA_CFLAGS="" +- ALSA_LIBS="" +-fi ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of `v7', `ustar', or `pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. ++AM_MISSING_PROG([AMTAR], [tar]) ++m4_if([$1], [v7], ++ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], ++ [m4_case([$1], [ustar],, [pax],, ++ [m4_fatal([Unknown tar format])]) ++AC_MSG_CHECKING([how to create a $1 tar archive]) ++# Loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++_am_tools=${am_cv_prog_tar_$1-$_am_tools} ++# Do not fold the above two line into one, because Tru64 sh and ++# Solaris sh will not grok spaces in the rhs of `-'. ++for _am_tool in $_am_tools ++do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; ++ do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; ++ esac + +-dnl That should be it. Now just export out symbols: +-AC_SUBST(ALSA_CFLAGS) +-AC_SUBST(ALSA_LIBS) +-]) ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break ++ ++ # tar/untar a dummy directory, and stop if the command works ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ++ fi ++done ++rm -rf conftest.dir + ++AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR + +diff -Nur libvisual-plugins-0.4.0/configure libvisual-plugins-0.4.0.new/configure +--- libvisual-plugins-0.4.0/configure 2006-03-21 05:48:36.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/configure 2007-10-10 23:28:47.000000000 +1000 +@@ -1,27 +1,56 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59 for Libvisual plugins 0.4.0. ++# Generated by GNU Autoconf 2.61 for Libvisual plugins 0.4.0. + # + # Report bugs to . + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. + ## --------------------- ## + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -31,8 +60,43 @@ + fi + + ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ + # Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -46,18 +110,19 @@ + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -65,157 +130,388 @@ + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no + fi + ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi + +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | + sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno + N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; + esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +@@ -224,7 +520,28 @@ + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -233,15 +550,6 @@ + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + + + # Check that we are running under the correct shell. +@@ -287,8 +595,8 @@ + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... +- if (echo_test_string="`eval $cmd`") 2>/dev/null && +- echo_test_string="`eval $cmd`" && ++ if (echo_test_string=`eval $cmd`) 2>/dev/null && ++ echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break +@@ -397,29 +705,26 @@ + + tagnames=${tagnames+${tagnames},}F77 + ++exec 7<&0 &1 ++ + # Name of the host. + # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +-exec 6>&1 +- + # + # Initializations. + # + ac_default_prefix=/usr/local ++ac_clean_files= + ac_config_libobj_dir=. ++LIBOBJS= + cross_compiling=no + subdirs= + MFLAGS= + MAKEFLAGS= + SHELL=${CONFIG_SHELL-/bin/sh} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME='Libvisual plugins' + PACKAGE_TARNAME='libvisual-plugins' +@@ -431,42 +736,225 @@ + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot PKG_CONFIG ac_pt_PKG_CONFIG LIBVISUAL_CFLAGS LIBVISUAL_LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CPP EGREP LIBOBJS LN_S build build_cpu build_vendor build_os host host_cpu host_vendor host_os ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXXCPP LIBTOOL LEX LEXLIB LEX_OUTPUT_ROOT YACC GETTEXT_PACKAGE MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB DYNAMIC_LOADER_LIBS LIBESD_CFLAGS LIBESD_LIBS LIBJACK_CFLAGS LIBJACK_LIBS GTK_CFLAGS GTK_LIBS GSTREAMER_CFLAGS GSTREAMER_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS HAVE_X_TRUE HAVE_X_FALSE HAVE_OPENGL_TRUE HAVE_OPENGL_FALSE XF86VMODE_LIB HAVE_XF86VMODE_TRUE HAVE_XF86VMODE_FALSE ALSA_CFLAGS ALSA_LIBS GFORCE_FLAGS DEBUG_CFLAGS OPT_CFLAGS LIBVISUAL_PLUGINS_BASE_DIR actor_plugindir input_plugindir morph_plugindir LIBVISUAL_PLUGINS_DATA_DIR build_actor_plugins build_input_plugins build_morph_plugins LTLIBOBJS' ++gt_needs= ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++am__isrc ++CYGPATH_W ++PACKAGE ++VERSION ++ACLOCAL ++AUTOCONF ++AUTOMAKE ++AUTOHEADER ++MAKEINFO ++install_sh ++STRIP ++INSTALL_STRIP_PROGRAM ++mkdir_p ++AWK ++SET_MAKE ++am__leading_dot ++AMTAR ++am__tar ++am__untar ++PKG_CONFIG ++LIBVISUAL_CFLAGS ++LIBVISUAL_LIBS ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++DEPDIR ++am__include ++am__quote ++AMDEP_TRUE ++AMDEP_FALSE ++AMDEPBACKSLASH ++CCDEPMODE ++am__fastdepCC_TRUE ++am__fastdepCC_FALSE ++CXX ++CXXFLAGS ++ac_ct_CXX ++CXXDEPMODE ++am__fastdepCXX_TRUE ++am__fastdepCXX_FALSE ++CPP ++GREP ++EGREP ++LIBOBJS ++LN_S ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++SED ++ECHO ++AR ++RANLIB ++CXXCPP ++LIBTOOL ++LEX ++LEX_OUTPUT_ROOT ++LEXLIB ++YACC ++GETTEXT_PACKAGE ++USE_NLS ++MSGFMT ++GMSGFMT ++MSGFMT_015 ++GMSGFMT_015 ++XGETTEXT ++XGETTEXT_015 ++MSGMERGE ++INTL_MACOSX_LIBS ++LIBICONV ++LTLIBICONV ++INTLLIBS ++LIBINTL ++LTLIBINTL ++POSUB ++DYNAMIC_LOADER_LIBS ++LIBESD_CFLAGS ++LIBESD_LIBS ++LIBJACK_CFLAGS ++LIBJACK_LIBS ++GTK_CFLAGS ++GTK_LIBS ++GSTREAMER_CFLAGS ++GSTREAMER_LIBS ++XMKMF ++X_CFLAGS ++X_PRE_LIBS ++X_LIBS ++X_EXTRA_LIBS ++HAVE_X_TRUE ++HAVE_X_FALSE ++HAVE_OPENGL_TRUE ++HAVE_OPENGL_FALSE ++XF86VMODE_LIB ++HAVE_XF86VMODE_TRUE ++HAVE_XF86VMODE_FALSE ++ALSA_CFLAGS ++ALSA_LIBS ++GFORCE_FLAGS ++DEBUG_CFLAGS ++OPT_CFLAGS ++LIBVISUAL_PLUGINS_BASE_DIR ++actor_plugindir ++input_plugindir ++morph_plugindir ++LIBVISUAL_PLUGINS_DATA_DIR ++build_actor_plugins ++build_input_plugins ++build_morph_plugins ++LTLIBOBJS' + ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++PKG_CONFIG ++LIBVISUAL_CFLAGS ++LIBVISUAL_LIBS ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CXX ++CXXFLAGS ++CCC ++CPP ++CXXCPP ++LIBESD_CFLAGS ++LIBESD_LIBS ++LIBJACK_CFLAGS ++LIBJACK_LIBS ++GTK_CFLAGS ++GTK_LIBS ++GSTREAMER_CFLAGS ++GSTREAMER_LIBS ++XMKMF' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -493,34 +981,48 @@ + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) + bindir='${exec_prefix}/bin' + sbindir='${exec_prefix}/sbin' + libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' + + ac_prev= ++ac_dashdash= + for ac_option + do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + +- case $ac_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -542,33 +1044,45 @@ + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -595,6 +1109,12 @@ + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; +@@ -619,13 +1139,16 @@ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ + -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -690,6 +1213,16 @@ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; +@@ -742,24 +1275,20 @@ + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -790,8 +1319,7 @@ + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -811,27 +1339,19 @@ + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix ++# Be sure to have absolute directory names. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir + do +- eval ac_val=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } + done + + # There might be people who depend on the old broken behavior: `$host' +@@ -858,130 +1378,76 @@ + test "$silent" = yes && exec 6>/dev/null + + ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ + # Find the source files, if location was not specified. + if test -z "$srcdir"; then + ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +- fi + fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_PKG_CONFIG_set=${PKG_CONFIG+set} +-ac_env_PKG_CONFIG_value=$PKG_CONFIG +-ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set} +-ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG +-ac_env_LIBVISUAL_CFLAGS_set=${LIBVISUAL_CFLAGS+set} +-ac_env_LIBVISUAL_CFLAGS_value=$LIBVISUAL_CFLAGS +-ac_cv_env_LIBVISUAL_CFLAGS_set=${LIBVISUAL_CFLAGS+set} +-ac_cv_env_LIBVISUAL_CFLAGS_value=$LIBVISUAL_CFLAGS +-ac_env_LIBVISUAL_LIBS_set=${LIBVISUAL_LIBS+set} +-ac_env_LIBVISUAL_LIBS_value=$LIBVISUAL_LIBS +-ac_cv_env_LIBVISUAL_LIBS_set=${LIBVISUAL_LIBS+set} +-ac_cv_env_LIBVISUAL_LIBS_value=$LIBVISUAL_LIBS +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CXX_set=${CXX+set} +-ac_env_CXX_value=$CXX +-ac_cv_env_CXX_set=${CXX+set} +-ac_cv_env_CXX_value=$CXX +-ac_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_env_CXXFLAGS_value=$CXXFLAGS +-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +-ac_cv_env_CXXFLAGS_value=$CXXFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP +-ac_env_CXXCPP_set=${CXXCPP+set} +-ac_env_CXXCPP_value=$CXXCPP +-ac_cv_env_CXXCPP_set=${CXXCPP+set} +-ac_cv_env_CXXCPP_value=$CXXCPP +-ac_env_LIBESD_CFLAGS_set=${LIBESD_CFLAGS+set} +-ac_env_LIBESD_CFLAGS_value=$LIBESD_CFLAGS +-ac_cv_env_LIBESD_CFLAGS_set=${LIBESD_CFLAGS+set} +-ac_cv_env_LIBESD_CFLAGS_value=$LIBESD_CFLAGS +-ac_env_LIBESD_LIBS_set=${LIBESD_LIBS+set} +-ac_env_LIBESD_LIBS_value=$LIBESD_LIBS +-ac_cv_env_LIBESD_LIBS_set=${LIBESD_LIBS+set} +-ac_cv_env_LIBESD_LIBS_value=$LIBESD_LIBS +-ac_env_LIBJACK_CFLAGS_set=${LIBJACK_CFLAGS+set} +-ac_env_LIBJACK_CFLAGS_value=$LIBJACK_CFLAGS +-ac_cv_env_LIBJACK_CFLAGS_set=${LIBJACK_CFLAGS+set} +-ac_cv_env_LIBJACK_CFLAGS_value=$LIBJACK_CFLAGS +-ac_env_LIBJACK_LIBS_set=${LIBJACK_LIBS+set} +-ac_env_LIBJACK_LIBS_value=$LIBJACK_LIBS +-ac_cv_env_LIBJACK_LIBS_set=${LIBJACK_LIBS+set} +-ac_cv_env_LIBJACK_LIBS_value=$LIBJACK_LIBS +-ac_env_GTK_CFLAGS_set=${GTK_CFLAGS+set} +-ac_env_GTK_CFLAGS_value=$GTK_CFLAGS +-ac_cv_env_GTK_CFLAGS_set=${GTK_CFLAGS+set} +-ac_cv_env_GTK_CFLAGS_value=$GTK_CFLAGS +-ac_env_GTK_LIBS_set=${GTK_LIBS+set} +-ac_env_GTK_LIBS_value=$GTK_LIBS +-ac_cv_env_GTK_LIBS_set=${GTK_LIBS+set} +-ac_cv_env_GTK_LIBS_value=$GTK_LIBS +-ac_env_GSTREAMER_CFLAGS_set=${GSTREAMER_CFLAGS+set} +-ac_env_GSTREAMER_CFLAGS_value=$GSTREAMER_CFLAGS +-ac_cv_env_GSTREAMER_CFLAGS_set=${GSTREAMER_CFLAGS+set} +-ac_cv_env_GSTREAMER_CFLAGS_value=$GSTREAMER_CFLAGS +-ac_env_GSTREAMER_LIBS_set=${GSTREAMER_LIBS+set} +-ac_env_GSTREAMER_LIBS_value=$GSTREAMER_LIBS +-ac_cv_env_GSTREAMER_LIBS_set=${GSTREAMER_LIBS+set} +-ac_cv_env_GSTREAMER_LIBS_value=$GSTREAMER_LIBS ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done + + # + # Report the --help message. +@@ -1010,9 +1476,6 @@ + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -1030,15 +1493,22 @@ + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root [DATAROOTDIR/doc/libvisual-plugins] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -1067,12 +1537,10 @@ + Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +- --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors +- --enable-static[=PKGS] +- build static libraries [default=no] +- --enable-shared[=PKGS] +- build shared libraries [default=yes] ++ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors ++ --enable-static[=PKGS] build static libraries [default=no] ++ --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) +@@ -1084,15 +1552,11 @@ + --disable-gstreamer-plugin + Do not build GStreamer visualization plugin + [default=enabled] +- --disable-alsa Do not build ALSA input plugin +- [default=enabled] ++ --disable-alsa Do not build ALSA input plugin [default=enabled] + --disable-alsatest Do not try to compile and run a test Alsa program +- --disable-mplayer Do not build mplayer input plugin +- [default=enabled] +- --disable-inputdebug Do not build input debug plugin +- [default=enabled] +- --disable-gltest Do not build lv_gltest plugin +- [default=enabled] ++ --disable-mplayer Do not build mplayer input plugin [default=enabled] ++ --disable-inputdebug Do not build input debug plugin [default=enabled] ++ --disable-gltest Do not build lv_gltest plugin [default=enabled] + --disable-nastyfft Do not build nastyfft plugin [default=enabled] + --disable-madspin Do not build Madspin plugin [default=enabled] + --disable-flower Do not build Pseudotoad Flower plugin +@@ -1104,18 +1568,13 @@ + --disable-scope Do not build Scope plugin [default=enabled] + --disable-oinksie Do not build Oinksie plugin [default=enabled] + --disable-jakdaw Do not build Jakdaw plugin [default=enabled] +- --disable-bumpscope Do not build bumpscope plugin +- [default=enabled] +- --disable-gforce Do not build the G-Force plugin +- [default=enabled] ++ --disable-bumpscope Do not build bumpscope plugin [default=enabled] ++ --disable-gforce Do not build the G-Force plugin [default=enabled] + --disable-alphablend Do not build alphablend morph plugin + [default=enabled] +- --disable-flash Do not build flash morph plugin +- [default=enabled] +- --disable-tentacle Do not build tentacle morph plugin +- [default=enabled] +- --disable-slide Do not build slide morph plugin +- [default=enabled] ++ --disable-flash Do not build flash morph plugin [default=enabled] ++ --disable-tentacle Do not build tentacle morph plugin [default=enabled] ++ --disable-slide Do not build slide morph plugin [default=enabled] + --enable-profiling Enable emision of profile data to be used by gprof + [default=disabled] + --enable-debug Enable debug [default=disabled] +@@ -1128,8 +1587,7 @@ + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] +- --with-tags[=TAGS] +- include additional configurations [automatic] ++ --with-tags[=TAGS] include additional configurations [automatic] + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir +@@ -1152,8 +1610,9 @@ + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor +@@ -1171,126 +1630,93 @@ + C compiler flags for GSTREAMER, overriding pkg-config + GSTREAMER_LIBS + linker flags for GSTREAMER, overriding pkg-config ++ XMKMF Path to xmkmf, Makefile generator for X Window System + + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + + Report bugs to . + _ACEOF ++ac_status=$? + fi + + if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix + + case $srcdir in +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_srcdir/configure.gnu; then +- echo +- $SHELL $ac_srcdir/configure.gnu --help=recursive +- elif test -f $ac_srcdir/configure; then +- echo +- $SHELL $ac_srcdir/configure --help=recursive +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF + Libvisual plugins configure 0.4.0 +-generated by GNU Autoconf 2.59 ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +- exit 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++cat >config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + + It was created by Libvisual plugins $as_me 0.4.0, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -1309,7 +1735,7 @@ + /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` + /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` + /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` + /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` + /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` + /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +@@ -1323,6 +1749,7 @@ + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1344,7 +1771,6 @@ + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1355,7 +1781,7 @@ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1377,9 +1803,7 @@ + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1390,8 +1814,8 @@ + # When interrupted or exit'd, cleanup temporary files, and complete + # config.log. We remove comments because anyway the quotes in there + # would cause problems or look ugly. +-# WARNING: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. + trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { +@@ -1404,20 +1828,34 @@ + _ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1428,22 +1866,28 @@ + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1455,26 +1899,24 @@ + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 0 + for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1505,14 +1947,17 @@ + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1528,8 +1973,8 @@ + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1538,15 +1983,15 @@ + >$cache_file + fi + ++gt_needs="$gt_needs " + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1571,8 +2016,7 @@ + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1589,11 +2033,6 @@ + { (exit 1); exit 1; }; } + fi + +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +@@ -1618,34 +2057,45 @@ + + + ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ++am__api_version='1.10' + +-am__api_version="1.7" + ac_aux_dir= +-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break +- elif test -f $ac_dir/install.sh; then ++ elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break +- elif test -f $ac_dir/shtool; then ++ elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi + done + if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ + + # Find a good install program. We prefer a C program (faster), + # so one script is as good as another. But avoid the broken or +@@ -1660,8 +2110,8 @@ + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -1683,7 +2133,7 @@ + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. +@@ -1702,21 +2152,22 @@ + ;; + esac + done ++IFS=$as_save_IFS + + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -1726,8 +2177,8 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ++echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } + # Just in case + sleep 1 + echo timestamp > conftest.file +@@ -1769,21 +2220,20 @@ + Check your system clock" >&2;} + { (exit 1); exit 1; }; } + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + test "$program_prefix" != NONE && +- program_transform_name="s,^,$program_prefix,;$program_transform_name" ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" + # Use a double $ so make ignores it. + test "$program_suffix" != NONE && +- program_transform_name="s,\$,$program_suffix,;$program_transform_name" ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" + # Double any \ or $. echo might interpret backslashes. + # By default was `s,x,x', remove it if useless. + cat <<\_ACEOF >conftest.sed + s/[\\$]/&&/g;s/;s,x,x,$// + _ACEOF + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +-rm conftest.sed +- ++rm -f conftest.sed + + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` +@@ -1798,12 +2248,60 @@ + echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + fi + ++{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 ++echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } ++if test -z "$MKDIR_P"; then ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++done ++IFS=$as_save_IFS ++ ++fi ++ ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ test -d ./--version && rmdir ./--version ++ MKDIR_P="$ac_install_sh -d" ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 ++echo "${ECHO_T}$MKDIR_P" >&6; } ++ ++mkdir_p="$MKDIR_P" ++case $mkdir_p in ++ [\\/$]* | ?:[\\/]*) ;; ++ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; ++esac ++ + for ac_prog in gawk mawk nawk awk + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1816,54 +2314,57 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + AWK=$ac_cv_prog_AWK + if test -n "$AWK"; then +- echo "$as_me:$LINENO: result: $AWK" >&5 +-echo "${ECHO_T}$AWK" >&6 ++ { echo "$as_me:$LINENO: result: $AWK" >&5 ++echo "${ECHO_T}$AWK" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$AWK" && break + done + +-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } ++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh + all: +- @echo 'ac_maketemp="$(MAKE)"' ++ @echo '@@@%%%=$(MAKE)=@@@%%%' + _ACEOF + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +-if test -n "$ac_maketemp"; then +- eval ac_cv_prog_make_${ac_make}_set=yes +-else +- eval ac_cv_prog_make_${ac_make}_set=no +-fi ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac + rm -f conftest.make + fi +-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + SET_MAKE= + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -1876,12 +2377,16 @@ + fi + rmdir .tst 2>/dev/null + +- # test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 + echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } ++ fi + fi + + # test whether we have cygpath +@@ -1924,10 +2429,7 @@ + + MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +- +-AMTAR=${AMTAR-"${am_missing_run}tar"} +- +-install_sh=${install_sh-"$am_aux_dir/install-sh"} ++install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + + # Installed binaries are usually stripped using `strip' when the user + # run `make install-strip'. However `strip' might not be the right +@@ -1937,8 +2439,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1951,32 +2453,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1989,42 +2493,63 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi + + fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + # We need awk for the "check" target. The system "awk" is bad on + # some platforms. ++# Always define AMTAR for backward compatibility. ++ ++AMTAR=${AMTAR-"${am_missing_run}tar"} ++ ++am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ++ + + + + + +- ac_config_headers="$ac_config_headers config.h" ++ ++ac_config_headers="$ac_config_headers config.h" + + + +@@ -2042,8 +2567,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. + set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2058,34 +2583,35 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + ;; + esac + fi + PKG_CONFIG=$ac_cv_path_PKG_CONFIG +- + if test -n "$PKG_CONFIG"; then +- echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +-echo "${ECHO_T}$PKG_CONFIG" >&6 ++ { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 ++echo "${ECHO_T}$PKG_CONFIG" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. + set dummy pkg-config; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2100,28 +2626,42 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + ;; + esac + fi + ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +- + if test -n "$ac_pt_PKG_CONFIG"; then +- echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 +-echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 ++ { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 ++echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- PKG_CONFIG=$ac_pt_PKG_CONFIG ++ if test "x$ac_pt_PKG_CONFIG" = x; then ++ PKG_CONFIG="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ PKG_CONFIG=$ac_pt_PKG_CONFIG ++ fi + else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" + fi +@@ -2129,14 +2669,14 @@ + fi + if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.14 +- echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 +-echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 ++echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + PKG_CONFIG="" + fi + +@@ -2149,8 +2689,8 @@ + + + pkg_failed=no +-echo "$as_me:$LINENO: checking for LIBVISUAL" >&5 +-echo $ECHO_N "checking for LIBVISUAL... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for LIBVISUAL" >&5 ++echo $ECHO_N "checking for LIBVISUAL... $ECHO_C" >&6; } + + if test -n "$PKG_CONFIG"; then + if test -n "$LIBVISUAL_CFLAGS"; then +@@ -2206,7 +2746,9 @@ + # Put the nasty error message in config.log where it belongs + echo "$LIBVISUAL_PKG_ERRORS" >&5 + +- { { echo "$as_me:$LINENO: error: *** libvisual 0.4.0 not found. ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ { { echo "$as_me:$LINENO: error: *** libvisual 0.4.0 not found. + It is needed to build this package. + You can download libvisual at http://libvisual.sf.net/" >&5 + echo "$as_me: error: *** libvisual 0.4.0 not found. +@@ -2226,8 +2768,8 @@ + else + LIBVISUAL_CFLAGS=$pkg_cv_LIBVISUAL_CFLAGS + LIBVISUAL_LIBS=$pkg_cv_LIBVISUAL_LIBS +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + : + fi + +@@ -2239,8 +2781,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2253,32 +2795,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2291,36 +2835,51 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2333,74 +2892,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2414,7 +2933,7 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +@@ -2425,6 +2944,7 @@ + fi + done + done ++IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. +@@ -2442,22 +2962,23 @@ + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2470,36 +2991,38 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2512,29 +3035,45 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -2547,21 +3086,35 @@ + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -2586,47 +3139,77 @@ + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -2638,19 +3221,21 @@ + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -2669,22 +3254,27 @@ + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -2695,9 +3285,8 @@ + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -2711,14 +3300,14 @@ + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2738,14 +3327,20 @@ + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -2763,12 +3358,12 @@ + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2791,50 +3386,49 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2850,38 +3444,118 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } + if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS + elif test $ac_cv_prog_cc_g = yes; then +@@ -2897,12 +3571,12 @@ + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2936,12 +3610,17 @@ + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2956,205 +3635,57 @@ + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -3162,7 +3693,7 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + DEPDIR="${am__leading_dot}deps" + +- ac_config_commands="$ac_config_commands depfiles" ++ac_config_commands="$ac_config_commands depfiles" + + + am_make=${MAKE-make} +@@ -3172,8 +3703,8 @@ + .PHONY: am__doit + END + # If we don't find an include directive, just comment out the code. +-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 ++echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } + am__include="#" + am__quote= + _am_result=none +@@ -3200,22 +3731,20 @@ + fi + + +-echo "$as_me:$LINENO: result: $_am_result" >&5 +-echo "${ECHO_T}$_am_result" >&6 ++{ echo "$as_me:$LINENO: result: $_am_result" >&5 ++echo "${ECHO_T}$_am_result" >&6; } + rm -f confinc confmf + +-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. ++# Check whether --enable-dependency-tracking was given. + if test "${enable_dependency_tracking+set}" = set; then +- enableval="$enable_dependency_tracking" ++ enableval=$enable_dependency_tracking; ++fi + +-fi; + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + fi +- +- +-if test "x$enable_dependency_tracking" != xno; then ++ if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' + else +@@ -3225,11 +3754,10 @@ + + + +- + depcc="$CC" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3267,7 +3795,9 @@ + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c +- : > sub/conftst$i.h ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +@@ -3291,13 +3821,19 @@ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings +- # (even with -Werror). So we grep stderr for any message +- # that says an option was ignored. +- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi +@@ -3311,13 +3847,11 @@ + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + +- +- +-if ++ if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= +@@ -3328,18 +3862,22 @@ + fi + + +-ac_ext=cc ++ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-if test -n "$ac_tool_prefix"; then +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC ++if test -z "$CXX"; then ++ if test -n "$CCC"; then ++ CXX=$CCC ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3352,36 +3890,38 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CXX=$ac_cv_prog_CXX + if test -n "$CXX"; then +- echo "$as_me:$LINENO: result: $CXX" >&5 +-echo "${ECHO_T}$CXX" >&6 ++ { echo "$as_me:$LINENO: result: $CXX" >&5 ++echo "${ECHO_T}$CXX" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CXX" && break + done + fi + if test -z "$CXX"; then + ac_ct_CXX=$CXX +- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3394,55 +3934,85 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CXX=$ac_cv_prog_ac_ct_CXX + if test -n "$ac_ct_CXX"; then +- echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +-echo "${ECHO_T}$ac_ct_CXX" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 ++echo "${ECHO_T}$ac_ct_CXX" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CXX" && break + done +-test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + +- CXX=$ac_ct_CXX ++ if test "x$ac_ct_CXX" = x; then ++ CXX="g++" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CXX=$ac_ct_CXX ++ fi + fi + +- ++ fi ++fi + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C++ compiler version" >&5 ++echo "$as_me:$LINENO: checking for C++ compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } + if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3465,50 +4035,49 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } + GXX=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CXXFLAGS=${CXXFLAGS+set} + ac_save_CXXFLAGS=$CXXFLAGS +-CXXFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 ++echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_save_cxx_werror_flag=$ac_cxx_werror_flag ++ ac_cxx_werror_flag=yes ++ ac_cv_prog_cxx_g=no ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3524,159 +4093,133 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cxx_g=no +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +-if test "$ac_test_CXXFLAGS" = set; then +- CXXFLAGS=$ac_save_CXXFLAGS +-elif test $ac_cv_prog_cxx_g = yes; then +- if test "$GXX" = yes; then +- CXXFLAGS="-g -O2" +- else +- CXXFLAGS="-g" +- fi +-else +- if test "$GXX" = yes; then +- CXXFLAGS="-O2" +- else +- CXXFLAGS= +- fi +-fi +-for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF ++ CXXFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration +-#include ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + : + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++ CXXFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-$ac_declaration ++ + int + main () + { +-exit (42); ++ + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cxx_g=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cxx_werror_flag=$ac_save_cxx_werror_flag ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } ++if test "$ac_test_CXXFLAGS" = set; then ++ CXXFLAGS=$ac_save_CXXFLAGS ++elif test $ac_cv_prog_cxx_g = yes; then ++ if test "$GXX" = yes; then ++ CXXFLAGS="-g -O2" ++ else ++ CXXFLAGS="-g" ++ fi ++else ++ if test "$GXX" = yes; then ++ CXXFLAGS="-O2" ++ else ++ CXXFLAGS= ++ fi ++fi + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -3685,8 +4228,8 @@ + + depcc="$CXX" am_compiler_list= + +-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 ++echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } + if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3724,7 +4267,9 @@ + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c +- : > sub/conftst$i.h ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +@@ -3748,13 +4293,19 @@ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings +- # (even with -Werror). So we grep stderr for any message +- # that says an option was ignored. +- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi +@@ -3768,13 +4319,11 @@ + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 ++echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } + CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + +- +- +-if ++ if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= +@@ -3787,8 +4336,8 @@ + + + +-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 ++echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } + if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3806,10 +4355,10 @@ + #ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; +- const charset x; ++ const charset cs; + /* SunOS 4.1.1 cc rejects this. */ +- char const *const *ccp; +- char **p; ++ char const *const *pcpcc; ++ char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; +@@ -3818,16 +4367,17 @@ + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; +- ccp = &g + (g ? g-g : 0); ++ pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ +- ++ccp; +- p = (char**) ccp; +- ccp = (char const *const *) p; ++ ++pcpcc; ++ ppc = (char**) pcpcc; ++ pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; ++ if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; +@@ -3846,7 +4396,9 @@ + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; ++ if (!foo) return 0; + } ++ return !cs[0] && !zero.x; + #endif + + ; +@@ -3854,38 +4406,34 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_c_const=no ++ ac_cv_c_const=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +-echo "${ECHO_T}$ac_cv_c_const" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 ++echo "${ECHO_T}$ac_cv_c_const" >&6; } + if test $ac_cv_c_const = no; then + + cat >>confdefs.h <<\_ACEOF +@@ -3894,8 +4442,8 @@ + + fi + +-echo "$as_me:$LINENO: checking for inline" >&5 +-echo $ECHO_N "checking for inline... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for inline" >&5 ++echo $ECHO_N "checking for inline... $ECHO_C" >&6; } + if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3915,39 +4463,37 @@ + + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_c_inline=$ac_kw; break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_c_inline=$ac_kw + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ test "$ac_cv_c_inline" != no && break + done + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +-echo "${ECHO_T}$ac_cv_c_inline" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 ++echo "${ECHO_T}$ac_cv_c_inline" >&6; } + + + case $ac_cv_c_inline in +@@ -3966,8 +4512,8 @@ + esac + + +-echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 ++echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } + if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3991,38 +4537,34 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_header_time=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_time=no ++ ac_cv_header_time=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +-echo "${ECHO_T}$ac_cv_header_time" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 ++echo "${ECHO_T}$ac_cv_header_time" >&6; } + if test $ac_cv_header_time = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -4036,8 +4578,8 @@ + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -4071,24 +4613,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -4097,9 +4637,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -4109,24 +4650,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -4137,6 +4676,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -4154,8 +4694,8 @@ + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -4178,24 +4718,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -4204,9 +4742,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -4216,24 +4755,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -4244,6 +4781,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -4266,27 +4804,174 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' +- fi +-fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep +- +- +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +-if test "${ac_cv_header_stdc+set}" = set; then ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } ++if test "${ac_cv_header_stdc+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4306,35 +4991,31 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_stdc=no ++ ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +@@ -4390,6 +5071,7 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#include + #if ((' ' & 0x0FF) == 0x020) + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -4409,18 +5091,27 @@ + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++ return 2; ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -4433,12 +5124,14 @@ + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -4461,9 +5154,9 @@ + inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -4477,38 +5170,35 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +@@ -4527,18 +5217,19 @@ + for ac_header in fcntl.h unistd.h stdlib.h string.h sys/time.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -4549,41 +5240,37 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -4592,24 +5279,22 @@ + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -4617,9 +5302,10 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -4643,25 +5329,24 @@ + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ ( cat <<\_ASBOX + ## ---------------------------------------- ## + ## Report this to ds@nerds-incorporated.org ## + ## ---------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -4678,18 +5363,19 @@ + for ac_header in stdlib.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -4700,41 +5386,37 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -4743,24 +5425,22 @@ + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -4768,9 +5448,10 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -4794,25 +5475,24 @@ + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ ( cat <<\_ASBOX + ## ---------------------------------------- ## + ## Report this to ds@nerds-incorporated.org ## + ## ---------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -4824,8 +5504,8 @@ + + done + +-echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 +-echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 ++echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; } + if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4838,7 +5518,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#if STDC_HEADERS || HAVE_STDLIB_H ++#if defined STDC_HEADERS || defined HAVE_STDLIB_H + # include + #else + char *malloc (); +@@ -4847,19 +5527,28 @@ + int + main () + { +-exit (malloc (0) ? 0 : 1); ++return ! malloc (0); + ; + return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -4872,11 +5561,13 @@ + ( exit $ac_status ) + ac_cv_func_malloc_0_nonnull=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 +-echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 ++echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; } + if test $ac_cv_func_malloc_0_nonnull = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -4888,12 +5579,10 @@ + #define HAVE_MALLOC 0 + _ACEOF + +- case $LIBOBJS in +- "malloc.$ac_objext" | \ +- *" malloc.$ac_objext" | \ +- "malloc.$ac_objext "* | \ ++ case " $LIBOBJS " in + *" malloc.$ac_objext "* ) ;; +- *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; ++ *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ++ ;; + esac + + +@@ -4914,9 +5603,9 @@ + for ac_func in floor gettimeofday memmove memset pow sqrt + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -4942,68 +5631,60 @@ + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -5012,8 +5693,8 @@ + fi + done + +-echo "$as_me:$LINENO: checking for munmap" >&5 +-echo $ECHO_N "checking for munmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for munmap" >&5 ++echo $ECHO_N "checking for munmap... $ECHO_C" >&6; } + if test "${ac_cv_func_munmap+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5040,68 +5721,59 @@ + + #undef munmap + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char munmap (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_munmap) || defined (__stub___munmap) ++#if defined __stub_munmap || defined __stub___munmap + choke me +-#else +-char (*f) () = munmap; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != munmap; ++return munmap (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_munmap=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_munmap=no ++ ac_cv_func_munmap=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_munmap" >&5 +-echo "${ECHO_T}$ac_cv_func_munmap" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_munmap" >&5 ++echo "${ECHO_T}$ac_cv_func_munmap" >&6; } + if test $ac_cv_func_munmap = yes; then + lv_have_munmap=yes + else +@@ -5113,18 +5785,19 @@ + for ac_header in stdlib.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -5135,41 +5808,37 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -5178,24 +5847,22 @@ + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -5203,9 +5870,10 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -5229,25 +5897,24 @@ + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ ( cat <<\_ASBOX + ## ---------------------------------------- ## + ## Report this to ds@nerds-incorporated.org ## + ## ---------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -5263,9 +5930,9 @@ + for ac_func in getpagesize + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_func" >&5 +-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_var+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_func" >&5 ++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } ++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -5291,68 +5958,60 @@ + + #undef $ac_func + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char $ac_func (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_$ac_func) || defined (__stub___$ac_func) ++#if defined __stub_$ac_func || defined __stub___$ac_func + choke me +-#else +-char (*f) () = $ac_func; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != $ac_func; ++return $ac_func (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_var=no" ++ eval "$as_ac_var=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_var'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +@@ -5361,8 +6020,8 @@ + fi + done + +-echo "$as_me:$LINENO: checking for working mmap" >&5 +-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for working mmap" >&5 ++echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } + if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5404,21 +6063,21 @@ + #include + #include + +-#if !STDC_HEADERS && !HAVE_STDLIB_H ++#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H + char *malloc (); + #endif + + /* This mess was copied from the GNU getpagesize.h. */ +-#if !HAVE_GETPAGESIZE ++#ifndef HAVE_GETPAGESIZE + /* Assume that all systems that can run configure have sys/param.h. */ +-# if !HAVE_SYS_PARAM_H ++# ifndef HAVE_SYS_PARAM_H + # define HAVE_SYS_PARAM_H 1 + # endif + + # ifdef _SC_PAGESIZE + # define getpagesize() sysconf(_SC_PAGESIZE) + # else /* no _SC_PAGESIZE */ +-# if HAVE_SYS_PARAM_H ++# ifdef HAVE_SYS_PARAM_H + # include + # ifdef EXEC_PAGESIZE + # define getpagesize() EXEC_PAGESIZE +@@ -5457,15 +6116,15 @@ + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) +- exit (1); ++ return 1; + if (write (fd, data, pagesize) != pagesize) +- exit (1); ++ return 1; + close (fd); + + /* Next, try to mmap the file at a fixed address which already has +@@ -5473,17 +6132,17 @@ + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) +- exit (1); ++ return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) +- exit (1); +- data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); ++ return 1; ++ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) +- exit (1); ++ return 1; + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on +@@ -5492,24 +6151,33 @@ + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) +- exit (1); ++ return 1; + if (read (fd, data3, pagesize) != pagesize) +- exit (1); ++ return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) +- exit (1); ++ return 1; + close (fd); +- exit (0); ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -5522,11 +6190,13 @@ + ( exit $ac_status ) + ac_cv_func_mmap_fixed_mapped=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 ++echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } + if test $ac_cv_func_mmap_fixed_mapped = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -5550,8 +6220,8 @@ + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. +-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } + if test -z "$INSTALL"; then + if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -5573,7 +6243,7 @@ + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. +@@ -5592,21 +6262,22 @@ + ;; + esac + done ++IFS=$as_save_IFS + + + fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else +- # As a last resort, use the slow shell script. We don't cache a +- # path for INSTALL within a source directory, because that will ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is +- # removed, or if the path is relative. ++ # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi + fi +-echo "$as_me:$LINENO: result: $INSTALL" >&5 +-echo "${ECHO_T}$INSTALL" >&6 ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -5616,22 +6287,21 @@ + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-echo "$as_me:$LINENO: checking whether ln -s works" >&5 +-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +-echo "${ECHO_T}no, using $LN_S" >&6 ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } + fi + + +-# Check whether --enable-static or --disable-static was given. ++# Check whether --enable-static was given. + if test "${enable_static+set}" = set; then +- enableval="$enable_static" +- p=${PACKAGE-default} ++ enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; +@@ -5650,16 +6320,16 @@ + esac + else + enable_static=no +-fi; ++fi + + + + + +-# Check whether --enable-shared or --disable-shared was given. ++ ++# Check whether --enable-shared was given. + if test "${enable_shared+set}" = set; then +- enableval="$enable_shared" +- p=${PACKAGE-default} ++ enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; +@@ -5678,12 +6348,12 @@ + esac + else + enable_shared=yes +-fi; ++fi + +-# Check whether --enable-fast-install or --disable-fast-install was given. ++ ++# Check whether --enable-fast-install was given. + if test "${enable_fast_install+set}" = set; then +- enableval="$enable_fast_install" +- p=${PACKAGE-default} ++ enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; +@@ -5702,64 +6372,94 @@ + esac + else + enable_fast_install=yes +-fi; ++fi ++ + + # Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +-echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ++echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } + if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5772,12 +6472,13 @@ + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then ++ if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done + done ++IFS=$as_save_IFS + lt_ac_max=0 + lt_ac_count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris +@@ -5812,22 +6513,23 @@ + fi + + SED=$lt_cv_path_SED +-echo "$as_me:$LINENO: result: $SED" >&5 +-echo "${ECHO_T}$SED" >&6 ++ ++{ echo "$as_me:$LINENO: result: $SED" >&5 ++echo "${ECHO_T}$SED" >&6; } + + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -5856,11 +6558,11 @@ + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -5873,7 +6575,7 @@ + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. ++ # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. + case `$LD -v 2>&1 &5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ++echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } + if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_ld_reload_flag='-r' + fi +-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ++echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + case $reload_flag in + "" | " "*) ;; +@@ -5940,15 +6642,15 @@ + case $host_os in + darwin*) + if test "$GCC" = yes; then +- reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; + esac + +-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ++echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } + if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -5956,45 +6658,52 @@ + # Let the user override the test. + lt_cv_path_NM="$NM" + else +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- tmp_nm="$ac_dir/${ac_tool_prefix}nm" +- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in +- */dev/null* | *'Invalid file or object type'*) +- lt_cv_path_NM="$tmp_nm -B" +- break +- ;; +- *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in +- */dev/null*) +- lt_cv_path_NM="$tmp_nm -p" ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ for lt_tmp_nm in $lt_nm_to_check; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ tmp_nm="$ac_dir/$lt_tmp_nm" ++ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ # Tru64's nm complains that /dev/null is an invalid object file ++ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in ++ */dev/null* | *'Invalid file or object type'*) ++ lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags ++ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ */dev/null*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac + ;; + esac +- esac +- fi ++ fi ++ done ++ IFS="$lt_save_ifs" + done +- IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm + fi + fi +-echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +-echo "${ECHO_T}$lt_cv_path_NM" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 ++echo "${ECHO_T}$lt_cv_path_NM" >&6; } + NM="$lt_cv_path_NM" + +-echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 ++echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } + if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6035,16 +6744,22 @@ + + mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by +- # func_win32_libid shell function, so use a weaker test based on 'objdump'. +- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ if ( file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi + ;; + + darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* | kfreebsd*-gnu | dragonfly*) ++freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -6066,7 +6781,7 @@ + + hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file +- case "$host_cpu" in ++ case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +@@ -6082,6 +6797,11 @@ + esac + ;; + ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ + irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; +@@ -6093,11 +6813,11 @@ + ;; + + # This must be Linux ELF. +-linux*) ++linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +-netbsd*) ++netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else +@@ -6127,7 +6847,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-sco3.2v5*) ++rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +@@ -6135,7 +6855,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' +@@ -6156,17 +6876,20 @@ + siemens) + lt_cv_deplibs_check_method=pass_all + ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; + esac + ;; + +-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + esac + + fi +-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ++echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } + file_magic_cmd=$lt_cv_file_magic_cmd + deplibs_check_method=$lt_cv_deplibs_check_method + test -z "$deplibs_check_method" && deplibs_check_method=unknown +@@ -6177,14 +6900,17 @@ + # If no C compiler was specified, use CC. + LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ + # Allow CC to be a program name with arguments. + compiler=$CC + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. ++# Check whether --enable-libtool-lock was given. + if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ enableval=$enable_libtool_lock; ++fi + +-fi; + test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + # Some flags need to be propagated to the compiler or linker for good +@@ -6211,7 +6937,7 @@ + ;; + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 6214 "configure"' > conftest.$ac_ext ++ echo '#line 6940 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -6246,7 +6972,8 @@ + rm -rf conftest* + ;; + +-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +@@ -6254,9 +6981,12 @@ + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- case "`/usr/bin/file conftest.o`" in ++ case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; +@@ -6273,6 +7003,9 @@ + ;; + *64-bit*) + case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; +@@ -6296,8 +7029,8 @@ + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" +- echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ++echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } + if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6323,35 +7056,32 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-lt_cv_cc_needs_belf=no ++ lt_cv_cc_needs_belf=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -6360,35 +7090,56 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ++echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) LD="${LD-ld} -64" ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++ ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ + +-esac +- +-need_locks="$enable_libtool_lock" +- +- +- + for ac_header in dlfcn.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6399,41 +7150,37 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -6442,24 +7189,22 @@ + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -6467,9 +7212,10 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -6493,25 +7239,24 @@ + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ ( cat <<\_ASBOX + ## ---------------------------------------- ## + ## Report this to ds@nerds-incorporated.org ## + ## ---------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then +@@ -6528,13 +7273,13 @@ + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then +- ac_ext=cc ++ ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 ++echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } + if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -6564,24 +7309,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -6590,9 +7333,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -6602,24 +7346,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -6630,6 +7372,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -6647,8 +7390,8 @@ + else + ac_cv_prog_CXXCPP=$CXXCPP + fi +-echo "$as_me:$LINENO: result: $CXXCPP" >&5 +-echo "${ECHO_T}$CXXCPP" >&6 ++{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 ++echo "${ECHO_T}$CXXCPP" >&6; } + ac_preproc_ok=false + for ac_cxx_preproc_warn_flag in '' yes + do +@@ -6671,24 +7414,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -6697,9 +7438,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -6709,24 +7451,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_cxx_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -6737,6 +7477,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -6752,7 +7493,7 @@ + { (exit 1); exit 1; }; } + fi + +-ac_ext=cc ++ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +@@ -6767,8 +7508,8 @@ + # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + + # find the maximum length of command line arguments +-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 ++echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } + if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6815,12 +7556,18 @@ + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else +- lt_cv_sys_max_cmd_len=65536 # usable default for *BSD ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +@@ -6834,44 +7581,59 @@ + esac + fi + ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; + *) +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && +- new_result=`expr "X$teststring" : ".*" 2>&1` && +- lt_cv_sys_max_cmd_len=$new_result && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- teststring= +- # Add a significant safety factor because C++ compilers can tack on massive +- # amounts of additional arguments before passing them to the linker. +- # It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ new_result=`expr "X$teststring" : ".*" 2>&1` && ++ lt_cv_sys_max_cmd_len=$new_result && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on massive ++ # amounts of additional arguments before passing them to the linker. ++ # It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi + ;; + esac + + fi + + if test -n $lt_cv_sys_max_cmd_len ; then +- echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 ++ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 ++echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } + else +- echo "$as_me:$LINENO: result: none" >&5 +-echo "${ECHO_T}none" >&6 ++ { echo "$as_me:$LINENO: result: none" >&5 ++echo "${ECHO_T}none" >&6; } + fi + + + + ++ + # Check for command to grab the raw symbol name followed by C symbol from nm. +-echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 ++echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } + if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -6906,7 +7668,7 @@ + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +-linux*) ++linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +@@ -6919,9 +7681,18 @@ + osf*) + symcode='[BCDEGQRST]' + ;; +-solaris* | sysv5*) ++solaris*) + symcode='[BDRT]' + ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; + sysv4) + symcode='[DFNSTU]' + ;; +@@ -7066,15 +7837,15 @@ + lt_cv_sys_global_symbol_to_cdecl= + fi + if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- echo "$as_me:$LINENO: result: failed" >&5 +-echo "${ECHO_T}failed" >&6 ++ { echo "$as_me:$LINENO: result: failed" >&5 ++echo "${ECHO_T}failed" >&6; } + else +- echo "$as_me:$LINENO: result: ok" >&5 +-echo "${ECHO_T}ok" >&6 ++ { echo "$as_me:$LINENO: result: ok" >&5 ++echo "${ECHO_T}ok" >&6; } + fi + +-echo "$as_me:$LINENO: checking for objdir" >&5 +-echo $ECHO_N "checking for objdir... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for objdir" >&5 ++echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } + if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7088,8 +7859,8 @@ + fi + rmdir .libs 2>/dev/null + fi +-echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +-echo "${ECHO_T}$lt_cv_objdir" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 ++echo "${ECHO_T}$lt_cv_objdir" >&6; } + objdir=$lt_cv_objdir + + +@@ -7130,7 +7901,7 @@ + default_ofile=libtool + can_build_shared=yes + +-# All known linkers require a `.a' archive for static linking (except M$VC, ++# All known linkers require a `.a' archive for static linking (except MSVC, + # which needs '.lib'). + libext=a + ltmain="$ac_aux_dir/ltmain.sh" +@@ -7140,8 +7911,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. + set dummy ${ac_tool_prefix}ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7154,32 +7925,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + AR=$ac_cv_prog_AR + if test -n "$AR"; then +- echo "$as_me:$LINENO: result: $AR" >&5 +-echo "${ECHO_T}$AR" >&6 ++ { echo "$as_me:$LINENO: result: $AR" >&5 ++echo "${ECHO_T}$AR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7192,27 +7965,41 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" + fi + fi + ac_ct_AR=$ac_cv_prog_ac_ct_AR + if test -n "$ac_ct_AR"; then +- echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +-echo "${ECHO_T}$ac_ct_AR" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ++echo "${ECHO_T}$ac_ct_AR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- AR=$ac_ct_AR ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi + else + AR="$ac_cv_prog_AR" + fi +@@ -7220,8 +8007,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7234,32 +8021,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + RANLIB=$ac_cv_prog_RANLIB + if test -n "$RANLIB"; then +- echo "$as_me:$LINENO: result: $RANLIB" >&5 +-echo "${ECHO_T}$RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $RANLIB" >&5 ++echo "${ECHO_T}$RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7272,27 +8061,41 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +-echo "${ECHO_T}$ac_ct_RANLIB" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ++echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- RANLIB=$ac_ct_RANLIB ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi + else + RANLIB="$ac_cv_prog_RANLIB" + fi +@@ -7300,8 +8103,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7314,32 +8117,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- echo "$as_me:$LINENO: result: $STRIP" >&5 +-echo "${ECHO_T}$STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $STRIP" >&5 ++echo "${ECHO_T}$STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7352,27 +8157,41 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" + fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +-echo "${ECHO_T}$ac_ct_STRIP" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ++echo "${ECHO_T}$ac_ct_STRIP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- STRIP=$ac_ct_STRIP ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf@gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi + else + STRIP="$ac_cv_prog_STRIP" + fi +@@ -7387,6 +8206,7 @@ + test -z "$AS" && AS=as + test -z "$CC" && CC=cc + test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS + test -z "$DLLTOOL" && DLLTOOL=dlltool + test -z "$LD" && LD=ld + test -z "$LN_S" && LN_S="ln -s" +@@ -7399,17 +8219,17 @@ + test -z "$ac_objext" && ac_objext=o + + # Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' + old_postinstall_cmds='chmod 644 $oldlib' + old_postuninstall_cmds= + + if test -n "$RANLIB"; then + case $host_os in + openbsd*) +- old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) +- old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +@@ -7430,8 +8250,8 @@ + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ++echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7451,7 +8271,7 @@ + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then +@@ -7483,17 +8303,17 @@ + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- echo "$as_me:$LINENO: checking for file" >&5 +-echo $ECHO_N "checking for file... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for file" >&5 ++echo $ECHO_N "checking for file... $ECHO_C" >&6; } + if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -7513,7 +8333,7 @@ + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) +- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then +@@ -7545,11 +8365,11 @@ + + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if test -n "$MAGIC_CMD"; then +- echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +-echo "${ECHO_T}$MAGIC_CMD" >&6 ++ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ++echo "${ECHO_T}$MAGIC_CMD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + else +@@ -7564,21 +8384,21 @@ + enable_dlopen=no + enable_win32_dll=no + +-# Check whether --enable-libtool-lock or --disable-libtool-lock was given. ++# Check whether --enable-libtool-lock was given. + if test "${enable_libtool_lock+set}" = set; then +- enableval="$enable_libtool_lock" ++ enableval=$enable_libtool_lock; ++fi + +-fi; + test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +-# Check whether --with-pic or --without-pic was given. ++# Check whether --with-pic was given. + if test "${with_pic+set}" = set; then +- withval="$with_pic" +- pic_mode="$withval" ++ withval=$with_pic; pic_mode="$withval" + else + pic_mode=default +-fi; ++fi ++ + test -z "$pic_mode" && pic_mode=default + + # Use C for the default configuration in the libtool script +@@ -7599,98 +8419,36 @@ + objext=$objext + + # Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" ++lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}\n' ++lt_simple_link_test_code='int main(){return(0);}' + + + # If no C compiler was specified, use CC. + LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ + # Allow CC to be a program name with arguments. + compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_compiler_boilerplate=`cat conftest.err` + $rm conftest* + + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_linker_boilerplate=`cat conftest.err` + $rm conftest* + + +-# +-# Check for any special shared library compilation flags. +-# +-lt_prog_cc_shlib= +-if test "$GCC" = no; then +- case $host_os in +- sco3.2v5*) +- lt_prog_cc_shlib='-belf' +- ;; +- esac +-fi +-if test -n "$lt_prog_cc_shlib"; then +- { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +-echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} +- if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : +- else +- { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +-echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} +- lt_cv_prog_cc_can_build_shared=no +- fi +-fi +- +- +-# +-# Check to make sure the static flag actually works. +-# +-echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +-echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +-if test "${lt_prog_compiler_static_works+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- lt_prog_compiler_static_works=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $lt_prog_compiler_static" +- printf "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&5 +- $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- lt_prog_compiler_static_works=yes +- fi +- else +- lt_prog_compiler_static_works=yes +- fi +- fi +- $rm conftest* +- LDFLAGS="$save_LDFLAGS" +- +-fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 +- +-if test x"$lt_prog_compiler_static_works" = xyes; then +- : +-else +- lt_prog_compiler_static= +-fi +- +- +- + + lt_prog_compiler_no_builtin_flag= + +@@ -7698,14 +8456,14 @@ + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } + if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. +@@ -7713,28 +8471,28 @@ + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7719: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:8477: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:7723: \$? = $ac_status" >&5 ++ echo "$as_me:8481: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + + if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +@@ -7748,8 +8506,8 @@ + lt_prog_compiler_pic= + lt_prog_compiler_static= + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' +@@ -7771,13 +8529,15 @@ + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + +- mingw* | pw32* | os2*) ++ mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + +@@ -7787,6 +8547,11 @@ + lt_prog_compiler_pic='-fno-common' + ;; + ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. +@@ -7803,7 +8568,7 @@ + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -7840,7 +8605,7 @@ + esac + ;; + +- mingw* | pw32* | os2*) ++ mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' +@@ -7850,7 +8615,7 @@ + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -7873,25 +8638,41 @@ + lt_prog_compiler_static='-Bstatic' + ;; + +- linux*) ++ linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; +- pgcc* | pgf77* | pgf90*) ++ pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' +- lt_prog_compiler_static='-static' ++ lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ esac ++ ;; + esac + ;; + +@@ -7901,9 +8682,8 @@ + lt_prog_compiler_static='-non_shared' + ;; + +- sco3.2v5*) +- lt_prog_compiler_pic='-Kpic' +- lt_prog_compiler_static='-dn' ++ rdos*) ++ lt_prog_compiler_static='-non_shared' + ;; + + solaris*) +@@ -7923,7 +8703,7 @@ + lt_prog_compiler_static='-Bstatic' + ;; + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' +@@ -7936,6 +8716,12 @@ + fi + ;; + ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no +@@ -7952,22 +8738,22 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + + # + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic"; then + +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } + if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. +@@ -7975,28 +8761,28 @@ + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7981: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:8767: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:7985: \$? = $ac_status" >&5 ++ echo "$as_me:8771: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; } + + if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in +@@ -8009,7 +8795,7 @@ + fi + + fi +-case "$host_os" in ++case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= +@@ -8019,8 +8805,50 @@ + ;; + esac + +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works=yes ++ fi ++ else ++ lt_prog_compiler_static_works=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } + if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -8029,7 +8857,7 @@ + mkdir conftest + cd conftest + mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or +@@ -8037,25 +8865,25 @@ + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8043: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:8871: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:8047: \$? = $ac_status" >&5 ++ echo "$as_me:8875: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp +- $SED '/^$/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi +- chmod u+w . ++ chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation +@@ -8066,23 +8894,23 @@ + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + + + hard_links="nottested" + if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 + echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +@@ -8092,8 +8920,8 @@ + need_locks=no + fi + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag= +@@ -8151,6 +8979,10 @@ + with_gnu_ld=no + fi + ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; + openbsd*) + with_gnu_ld=no + ;; +@@ -8232,10 +9064,10 @@ + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes +- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +@@ -8244,22 +9076,38 @@ + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + +- linux*) ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler +- whole_archive_flag_spec= ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' + ;; +- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec= +- tmp_addflag=' -fpic -Mnomain' ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +@@ -8267,20 +9115,30 @@ + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac +- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi ++ link_all_deplibs=no + else + ld_shlibs=no + fi + ;; + +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -8290,7 +9148,7 @@ + fi + ;; + +- solaris* | sysv5*) ++ solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 +@@ -8311,6 +9169,33 @@ + fi + ;; + ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= +@@ -8344,7 +9229,7 @@ + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported +@@ -8378,6 +9263,7 @@ + break + fi + done ++ ;; + esac + + exp_sym_flag='-bexport' +@@ -8404,7 +9290,7 @@ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 +- hardcode_direct=yes ++ : + else + # We have old collect2 + hardcode_direct=unsupported +@@ -8415,6 +9301,7 @@ + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi ++ ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then +@@ -8427,11 +9314,11 @@ + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else +- if test "$aix_use_runtimelinking" = yes; then ++ if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' +- fi ++ fi + fi + fi + +@@ -8459,49 +9346,54 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +@@ -8520,39 +9412,44 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +@@ -8561,13 +9458,11 @@ + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' +- # -bexpall does not export symbols beginning with underscore (_) +- always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec=' ' ++ whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes +- # This is similar to how AIX traditionally builds it's shared libraries. +- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; +@@ -8600,13 +9495,13 @@ + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. +- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) +- case "$host_os" in ++ case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; +@@ -8635,17 +9530,17 @@ + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' +- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' ++ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) +@@ -8685,7 +9580,7 @@ + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) ++ freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +@@ -8708,47 +9603,62 @@ + export_dynamic_flag_spec='${wl}-E' + ;; + +- hpux10* | hpux11*) ++ hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*|ia64*) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ hardcode_direct=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; ++ ia64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else +- case "$host_cpu" in +- hppa*64*|ia64*) +- archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) +- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*) +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' +- hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; +- ia64*) +- hardcode_libdir_flag_spec='-L$libdir' +- hardcode_direct=no +- hardcode_shlibpath_var=no +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L=yes +- ;; + *) +- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + +@@ -8772,7 +9682,7 @@ + link_all_deplibs=yes + ;; + +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +@@ -8792,24 +9702,28 @@ + ;; + + openbsd*) +- hardcode_direct=yes +- hardcode_shlibpath_var=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- export_dynamic_flag_spec='${wl}-E' ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi + else +- case $host_os in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec='-R$libdir' +- ;; +- *) +- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +- ;; +- esac ++ ld_shlibs=no + fi + ;; + +@@ -8850,14 +9764,6 @@ + hardcode_libdir_separator=: + ;; + +- sco3.2v5*) +- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var=no +- export_dynamic_flag_spec='${wl}-Bexport' +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ;; +- + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then +@@ -8876,17 +9782,16 @@ + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; +- *) +- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; + esac + link_all_deplibs=yes + ;; +@@ -8943,36 +9848,45 @@ + fi + ;; + +- sysv4.2uw2*) +- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct=yes +- hardcode_minus_L=no ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no + hardcode_shlibpath_var=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ runpath_var='LD_RUN_PATH' + +- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) +- no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then +- archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else +- archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var=no + ;; + +- sysv5*) +- no_undefined_flag=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec= ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no + hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi + ;; + + uts4*) +@@ -8987,15 +9901,10 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +-echo "${ECHO_T}$ld_shlibs" >&6 ++{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ++echo "${ECHO_T}$ld_shlibs" >&6; } + test "$ld_shlibs" = no && can_build_shared=no + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- + # + # Do we need to explicitly link libc? + # +@@ -9013,10 +9922,10 @@ + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 +@@ -9028,6 +9937,7 @@ + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= +@@ -9050,16 +9960,16 @@ + cat conftest.err 1>&5 + fi + $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc" >&6 ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; + esac + +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + library_names_spec= + libname_spec='lib$name' + soname_spec= +@@ -9073,17 +9983,55 @@ + version_type=none + dynamic_linker="$host_os ld.so" + sys_lib_dlsearch_path_spec="/lib /usr/lib" ++ + if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ sys_lib_search_path_spec=`echo $lt_search_path_spec` + else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + fi +@@ -9188,7 +10136,8 @@ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' +@@ -9241,13 +10190,9 @@ + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +@@ -9264,22 +10209,17 @@ + dynamic_linker=no + ;; + +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- + freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) +@@ -9301,10 +10241,15 @@ + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; +- *) # from 3.2 on ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + esac + ;; + +@@ -9324,7 +10269,7 @@ + version_type=sunos + need_lib_prefix=no + need_version=no +- case "$host_cpu" in ++ case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes +@@ -9364,6 +10309,18 @@ + postinstall_cmds='chmod 555 $lib' + ;; + ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ + irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; +@@ -9407,7 +10364,7 @@ + ;; + + # This must be Linux ELF. +-linux*) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -9421,31 +10378,10 @@ + # before this can be enabled. + hardcode_into_libs=yes + +- # find out which ABI we are using +- libsuff= +- case "$host_cpu" in +- x86_64*|s390x*|powerpc64*) +- echo '#line 9428 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *64-bit*) +- libsuff=64 +- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- esac +- + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -9457,7 +10393,7 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + +-knetbsd*-gnu) ++netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -9466,7 +10402,7 @@ + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' ++ dynamic_linker='NetBSD ld.elf_so' + ;; + + netbsd*) +@@ -9506,8 +10442,13 @@ + + openbsd*) + version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no +- need_version=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH +@@ -9545,11 +10486,8 @@ + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH ++rdos*) ++ dynamic_linker=no + ;; + + solaris*) +@@ -9577,7 +10515,7 @@ + need_version=yes + ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' +@@ -9610,6 +10548,29 @@ + fi + ;; + ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ + uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +@@ -9621,12 +10582,17 @@ + dynamic_linker=no + ;; + esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } + test "$dynamic_linker" = no && can_build_shared=no + +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + hardcode_action= + if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ +@@ -9650,8 +10616,8 @@ + # directories. + hardcode_action=unsupported + fi +-echo "$as_me:$LINENO: result: $hardcode_action" >&5 +-echo "${ECHO_T}$hardcode_action" >&6 ++{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 ++echo "${ECHO_T}$hardcode_action" >&6; } + + if test "$hardcode_action" = relink; then + # Fast installation is not supported +@@ -9664,29 +10630,30 @@ + + striplib= + old_striplib= +-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ++echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } + if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else + # FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ old_striplib="$STRIP -S" ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ;; + *) +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + ;; + esac + fi +@@ -9718,8 +10685,8 @@ + + darwin*) + # if libdl is installed we need to link against it +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } + if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9732,56 +10699,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dlopen (); + int + main () + { +-dlopen (); ++return dlopen (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dl_dlopen=no ++ ac_cv_lib_dl_dlopen=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } + if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + else +@@ -9795,8 +10759,8 @@ + ;; + + *) +- echo "$as_me:$LINENO: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for shl_load" >&5 ++echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } + if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9823,73 +10787,64 @@ + + #undef shl_load + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char shl_load (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) ++#if defined __stub_shl_load || defined __stub___shl_load + choke me +-#else +-char (*f) () = shl_load; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != shl_load; ++return shl_load (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_shl_load=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_shl_load=no ++ ac_cv_func_shl_load=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } + if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" + else +- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ++echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } + if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9902,61 +10857,58 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char shl_load (); + int + main () + { +-shl_load (); ++return shl_load (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_shl_load=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dld_shl_load=no ++ ac_cv_lib_dld_shl_load=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } + if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" + else +- echo "$as_me:$LINENO: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dlopen" >&5 ++echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } + if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -9983,73 +10935,64 @@ + + #undef dlopen + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dlopen (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) ++#if defined __stub_dlopen || defined __stub___dlopen + choke me +-#else +-char (*f) () = dlopen; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != dlopen; ++return dlopen (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_dlopen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_dlopen=no ++ ac_cv_func_dlopen=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } + if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" + else +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ++echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } + if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10062,61 +11005,58 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dlopen (); + int + main () + { +-dlopen (); ++return dlopen (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dl_dlopen=no ++ ac_cv_lib_dl_dlopen=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } + if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + else +- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ++echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } + if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10129,61 +11069,58 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dlopen (); + int + main () + { +-dlopen (); ++return dlopen (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_svld_dlopen=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_svld_dlopen=no ++ ac_cv_lib_svld_dlopen=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ++echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } + if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" + else +- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ++echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } + if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10196,56 +11133,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dld_link (); + int + main () + { +-dld_link (); ++return dld_link (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_dld_link=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dld_dld_link=no ++ ac_cv_lib_dld_dld_link=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ++echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } + if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" + fi +@@ -10280,13 +11214,13 @@ + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + +- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } + if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10296,7 +11230,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null ++ (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed +@@ -10378,13 +11314,13 @@ + + + fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ++echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } + if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -10394,7 +11330,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null ++ (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed +@@ -10476,8 +11414,8 @@ + + + fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ++echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" +@@ -10498,19 +11436,19 @@ + fi + + +-# Report which librarie types wil actually be built +-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 ++# Report which library types will actually be built ++{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } + +-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. +-case "$host_os" in ++case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then +@@ -10525,15 +11463,15 @@ + fi + ;; + esac +-echo "$as_me:$LINENO: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 ++{ echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } + +-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:$LINENO: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 ++{ echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } + + # The else clause should only fire when bootstrapping the + # libtool distribution, otherwise you forgot to ship ltmain.sh +@@ -10548,7 +11486,7 @@ + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +@@ -10590,6 +11528,7 @@ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ ++ fix_srcfile_path \ + exclude_expsyms \ + include_expsyms; do + +@@ -10634,7 +11573,7 @@ + # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) + # NOTE: Changes made to this file will be lost: look at ltmain.sh. + # +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + # Free Software Foundation, Inc. + # + # This file is part of GNU Libtool: +@@ -10714,6 +11653,9 @@ + # A C compiler. + LTCC=$lt_LTCC + ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ + # A language-specific compiler. + CC=$lt_compiler + +@@ -10955,7 +11897,7 @@ + sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + + # Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path" ++fix_srcfile_path=$lt_fix_srcfile_path + + # Set to yes if exported symbols are required. + always_export_symbols=$always_export_symbols +@@ -11022,11 +11964,11 @@ + CC="$lt_save_CC" + + +-# Check whether --with-tags or --without-tags was given. ++# Check whether --with-tags was given. + if test "${with_tags+set}" = set; then +- withval="$with_tags" +- tagnames="$withval" +-fi; ++ withval=$with_tags; tagnames="$withval" ++fi ++ + + if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then +@@ -11044,6 +11986,9 @@ + echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi ++ if test -z "$LTCFLAGS"; then ++ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" ++ fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. +@@ -11077,7 +12022,7 @@ + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then +- ac_ext=cc ++ ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +@@ -11096,6 +12041,7 @@ + hardcode_libdir_flag_spec_ld_CXX= + hardcode_libdir_separator_CXX= + hardcode_minus_L_CXX=no ++hardcode_shlibpath_var_CXX=unsupported + hardcode_automatic_CXX=no + module_cmds_CXX= + module_expsym_cmds_CXX= +@@ -11113,37 +12059,40 @@ + compiler_lib_search_path_CXX= + + # Source file extension for C++ test sources. +-ac_ext=cc ++ac_ext=cpp + + # Object file extension for compiled C++ test sources. + objext=o + objext_CXX=$objext + + # Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;\n" ++lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests +-lt_simple_link_test_code='int main(int, char *) { return(0); }\n' ++lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + # If no C compiler was specified, use CC. + LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ + # Allow CC to be a program name with arguments. + compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_compiler_boilerplate=`cat conftest.err` + $rm conftest* + + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_linker_boilerplate=`cat conftest.err` + $rm conftest* + +@@ -11158,12 +12107,12 @@ + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else +- unset lt_cv_prog_gnu_ld ++ $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else +- unset lt_cv_path_LD ++ $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} +@@ -11192,18 +12141,18 @@ + # Set up default GNU C++ configuration + + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 ++echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -11232,11 +12181,11 @@ + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -11249,7 +12198,7 @@ + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some GNU ld's only accept -v. ++ # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- # I'd rather use --version here, but apparently some GNU ld's only accept -v. ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. + case `$LD -v 2>&1 &5 +-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +@@ -11344,8 +12293,8 @@ + fi + + # PORTME: fill in a description of your system's C++ link characteristics +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) +@@ -11374,6 +12323,7 @@ + ;; + esac + done ++ ;; + esac + + exp_sym_flag='-bexport' +@@ -11400,7 +12350,7 @@ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 +- hardcode_direct_CXX=yes ++ : + else + # We have old collect2 + hardcode_direct_CXX=unsupported +@@ -11411,6 +12361,7 @@ + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi ++ ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then +@@ -11455,50 +12406,55 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + +- archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" +- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +@@ -11517,39 +12473,44 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_cxx_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +@@ -11558,16 +12519,26 @@ + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' +- # -bexpall does not export symbols beginning with underscore (_) +- always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec_CXX=' ' ++ whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes +- # This is similar to how AIX traditionally builds it's shared libraries. +- archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; ++ ++ beos*) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag_CXX=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs_CXX=no ++ fi ++ ;; ++ + chorus*) + case $cc_basename in + *) +@@ -11577,7 +12548,6 @@ + esac + ;; + +- + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. +@@ -11587,7 +12557,7 @@ + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +@@ -11596,13 +12566,13 @@ + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) +- case "$host_os" in ++ case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; +@@ -11640,7 +12610,7 @@ + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else +@@ -11651,10 +12621,10 @@ + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' +- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' ++ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) +@@ -11688,7 +12658,7 @@ + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) ++ freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes +@@ -11733,34 +12703,21 @@ + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then +- case "$host_cpu" in +- hppa*64*) +- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' +- hardcode_libdir_flag_spec_ld_CXX='+b $libdir' +- hardcode_libdir_separator_CXX=: +- ;; +- ia64*) +- hardcode_libdir_flag_spec_CXX='-L$libdir' +- ;; ++ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_CXX=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ;; + *) +- hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi +- case "$host_cpu" in +- hppa*64*) ++ case $host_cpu in ++ hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; +- ia64*) +- hardcode_direct_CXX=no +- hardcode_shlibpath_var_CXX=no +- hardcode_minus_L_CXX=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, +@@ -11775,9 +12732,12 @@ + ld_shlibs_CXX=no + ;; + aCC*) +- case "$host_cpu" in +- hppa*64*|ia64*) +- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +@@ -11796,9 +12756,12 @@ + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then +- case "$host_cpu" in +- ia64*|hppa*64*) +- archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +@@ -11812,6 +12775,20 @@ + ;; + esac + ;; ++ interix[3-9]*) ++ hardcode_direct_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; + irix5* | irix6*) + case $cc_basename in + CC*) +@@ -11838,7 +12815,7 @@ + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; +- linux*) ++ linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler +@@ -11892,12 +12869,12 @@ + ;; + pgCC*) + # Portland Group C++ compiler +- archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ++ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' ++ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +- whole_archive_flag_spec_CXX='' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ +@@ -11918,6 +12895,29 @@ + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ no_undefined_flag_CXX=' -zdefs' ++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' ++ hardcode_libdir_flag_spec_CXX='-R$libdir' ++ whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ ++ # Not sure whether something based on ++ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 ++ # would be better. ++ output_verbose_link_cmd='echo' ++ ++ # Archives containing C++ object files must be created using ++ # "CC -xar", where "CC" is the Sun C++ compiler. This is ++ # necessary to make sure instantiated templates are included ++ # in the archive. ++ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ++ ;; ++ esac ++ ;; + esac + ;; + lynxos*) +@@ -11940,7 +12940,7 @@ + ;; + esac + ;; +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= +@@ -11956,16 +12956,20 @@ + ld_shlibs_CXX=no + ;; + openbsd*) +- hardcode_direct_CXX=yes +- hardcode_shlibpath_var_CXX=no +- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- export_dynamic_flag_spec_CXX='${wl}-E' +- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_CXX=yes ++ hardcode_shlibpath_var_CXX=no ++ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' ++ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' ++ export_dynamic_flag_spec_CXX='${wl}-E' ++ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ fi ++ output_verbose_link_cmd='echo' ++ else ++ ld_shlibs_CXX=no + fi +- output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in +@@ -12094,19 +13098,6 @@ + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +- sco*) +- archive_cmds_need_lc_CXX=no +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- ld_shlibs_CXX=no +- ;; +- esac +- ;; + sunos4*) + case $cc_basename in + CC*) +@@ -12129,38 +13120,26 @@ + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ ++ archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' +- archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ++ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' ++ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) +- # The C++ compiler is used as linker so we must use $wl +- # flag to pass the commands to the underlying system +- # linker. We must also pass each convience library through +- # to the system linker between allextract/defaultextract. +- # The C++ compiler will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl. ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) +- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ++ whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' ++ output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is +@@ -12202,12 +13181,69 @@ + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ ;; ++ esac + fi + ;; + esac + ;; +- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_CXX='${wl}-z,text' ++ archive_cmds_need_lc_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ ;; ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ # So that behaviour is only enabled if SCOABSPATH is set to a ++ # non-empty value in the environment. Most likely only useful for ++ # creating official distributions of packages. ++ # This is a hack until libtool officially supports absolute path ++ # names for shared libraries. ++ no_undefined_flag_CXX='${wl}-z,text' ++ allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no ++ hardcode_shlibpath_var_CXX=no ++ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_CXX=':' ++ link_all_deplibs_CXX=yes ++ export_dynamic_flag_spec_CXX='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ case $cc_basename in ++ CC*) ++ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac + ;; + tandem*) + case $cc_basename in +@@ -12231,8 +13267,8 @@ + ld_shlibs_CXX=no + ;; + esac +-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +-echo "${ECHO_T}$ld_shlibs_CXX" >&6 ++{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 ++echo "${ECHO_T}$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" +@@ -12264,7 +13300,7 @@ + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. +- output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" ++ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in +@@ -12340,6 +13376,62 @@ + + $rm -f confest.$objext + ++# PORTME: override above test on systems where it is broken ++case $host_os in ++interix[3-9]*) ++ # Interix 3.5 installs completely hosed .la files for C++, so rather than ++ # hack all around it, let's just trust "g++" to DTRT. ++ predep_objects_CXX= ++ postdep_objects_CXX= ++ postdeps_CXX= ++ ;; ++ ++linux*) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ # ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ if test "$solaris_use_stlport4" != yes; then ++ postdeps_CXX='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++ ++solaris*) ++ case $cc_basename in ++ CC*) ++ # The more standards-conforming stlport4 library is ++ # incompatible with the Cstd library. Avoid specifying ++ # it if it's in CXXFLAGS. Ignore libCrun as ++ # -library=stlport4 depends on it. ++ case " $CXX $CXXFLAGS " in ++ *" -library=stlport4 "*) ++ solaris_use_stlport4=yes ++ ;; ++ esac ++ ++ # Adding this requires a known-good setup of shared libraries for ++ # Sun compiler versions before 5.6, else PIC objects from an old ++ # archive will be linked into the output, leading to subtle bugs. ++ if test "$solaris_use_stlport4" != yes; then ++ postdeps_CXX='-library=Cstd -library=Crun' ++ fi ++ ;; ++ esac ++ ;; ++esac ++ ++ + case " $postdeps_CXX " in + *" -lc "*) archive_cmds_need_lc_CXX=no ;; + esac +@@ -12348,8 +13440,8 @@ + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX= + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then +@@ -12370,12 +13462,14 @@ + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; +- mingw* | os2* | pw32*) ++ mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) +@@ -12387,6 +13481,10 @@ + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic +@@ -12395,7 +13493,7 @@ + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + ;; + *) +@@ -12449,22 +13547,22 @@ + ;; + esac + ;; +- freebsd* | kfreebsd*-gnu | dragonfly*) ++ freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" ++ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' +- lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" +- case "$host_cpu" in ++ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -12477,6 +13575,10 @@ + ;; + esac + ;; ++ interix*) ++ # This is c89, which is MS Visual C++ (no shared libs) ++ # Anyone wants to do a port? ++ ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) +@@ -12488,7 +13590,7 @@ + ;; + esac + ;; +- linux*) ++ linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler +@@ -12505,7 +13607,7 @@ + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' +- lt_prog_compiler_static_CXX='-static' ++ lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ +@@ -12515,6 +13617,14 @@ + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C++ 5.9 ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ lt_prog_compiler_wl_CXX='-Qoption ld ' ++ ;; ++ esac + ;; + esac + ;; +@@ -12531,7 +13641,7 @@ + ;; + esac + ;; +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in +@@ -12556,15 +13666,6 @@ + ;; + psos*) + ;; +- sco*) +- case $cc_basename in +- CC*) +- lt_prog_compiler_pic_CXX='-fPIC' +- ;; +- *) +- ;; +- esac +- ;; + solaris*) + case $cc_basename in + CC*) +@@ -12606,7 +13707,14 @@ + ;; + esac + ;; +- unixware*) ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ case $cc_basename in ++ CC*) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_pic_CXX='-KPIC' ++ lt_prog_compiler_static_CXX='-Bstatic' ++ ;; ++ esac + ;; + vxworks*) + ;; +@@ -12616,22 +13724,22 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } + + # + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic_CXX"; then + +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } + if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. +@@ -12639,28 +13747,28 @@ + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:12645: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:13753: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:12649: \$? = $ac_status" >&5 ++ echo "$as_me:13757: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; } + + if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in +@@ -12673,7 +13781,7 @@ + fi + + fi +-case "$host_os" in ++case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= +@@ -12683,8 +13791,50 @@ + ;; + esac + +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_CXX+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_CXX=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_CXX=yes ++ fi ++ else ++ lt_prog_compiler_static_works_CXX=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_CXX" = xyes; then ++ : ++else ++ lt_prog_compiler_static_CXX= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } + if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -12693,7 +13843,7 @@ + mkdir conftest + cd conftest + mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or +@@ -12701,25 +13851,25 @@ + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:12707: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:13857: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:12711: \$? = $ac_status" >&5 ++ echo "$as_me:13861: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp +- $SED '/^$/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi +- chmod u+w . ++ chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation +@@ -12730,23 +13880,23 @@ + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + hard_links="nottested" + if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 + echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +@@ -12756,8 +13906,8 @@ + need_locks=no + fi + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in +@@ -12774,22 +13924,20 @@ + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) +- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ++ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ;; ++ linux* | k*bsd*-gnu) ++ link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +-echo "${ECHO_T}$ld_shlibs_CXX" >&6 ++{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 ++echo "${ECHO_T}$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- + # + # Do we need to explicitly link libc? + # +@@ -12807,10 +13955,10 @@ + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 +@@ -12822,6 +13970,7 @@ + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX ++ pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= +@@ -12844,16 +13993,16 @@ + cat conftest.err 1>&5 + fi + $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; + esac + +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + library_names_spec= + libname_spec='lib$name' + soname_spec= +@@ -12867,20 +14016,7 @@ + version_type=none + dynamic_linker="$host_os ld.so" + sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi ++ + need_lib_prefix=unknown + hardcode_into_libs=no + +@@ -12982,7 +14118,8 @@ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' +@@ -13035,13 +14172,8 @@ + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +@@ -13058,22 +14190,17 @@ + dynamic_linker=no + ;; + +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- + freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) +@@ -13095,10 +14222,15 @@ + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; +- *) # from 3.2 on ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + esac + ;; + +@@ -13118,7 +14250,7 @@ + version_type=sunos + need_lib_prefix=no + need_version=no +- case "$host_cpu" in ++ case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes +@@ -13158,6 +14290,18 @@ + postinstall_cmds='chmod 555 $lib' + ;; + ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ + irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; +@@ -13201,7 +14345,7 @@ + ;; + + # This must be Linux ELF. +-linux*) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -13215,31 +14359,10 @@ + # before this can be enabled. + hardcode_into_libs=yes + +- # find out which ABI we are using +- libsuff= +- case "$host_cpu" in +- x86_64*|s390x*|powerpc64*) +- echo '#line 13222 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *64-bit*) +- libsuff=64 +- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- esac +- + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -13251,7 +14374,7 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + +-knetbsd*-gnu) ++netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -13260,7 +14383,7 @@ + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' ++ dynamic_linker='NetBSD ld.elf_so' + ;; + + netbsd*) +@@ -13300,8 +14423,13 @@ + + openbsd*) + version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no +- need_version=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH +@@ -13339,11 +14467,8 @@ + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH ++rdos*) ++ dynamic_linker=no + ;; + + solaris*) +@@ -13371,7 +14496,7 @@ + need_version=yes + ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' +@@ -13404,6 +14529,29 @@ + fi + ;; + ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ + uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +@@ -13415,12 +14563,17 @@ + dynamic_linker=no + ;; + esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } + test "$dynamic_linker" = no && can_build_shared=no + +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + hardcode_action_CXX= + if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ +@@ -13444,8 +14597,8 @@ + # directories. + hardcode_action_CXX=unsupported + fi +-echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +-echo "${ECHO_T}$hardcode_action_CXX" >&6 ++{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 ++echo "${ECHO_T}$hardcode_action_CXX" >&6; } + + if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported +@@ -13456,1252 +14609,421 @@ + enable_fast_install=needless + fi + +-striplib= +-old_striplib= +-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- ;; +- *) +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- ;; +- esac +-fi + +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= ++# The else clause should only fire when bootstrapping the ++# libtool distribution, otherwise you forgot to ship ltmain.sh ++# with your package, and you will get complaints that there are ++# no rules to generate ltmain.sh. ++if test -f "$ltmain"; then ++ # See if we are running on zsh, and set the options which allow our commands through ++ # without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ # Now quote all the things that may contain metacharacters while being ++ # careful not to overquote the AC_SUBSTed values. We take copies of the ++ # variables and quote the copies for generation of the libtool script. ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ ++ SED SHELL STRIP \ ++ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ ++ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ ++ deplibs_check_method reload_flag reload_cmds need_locks \ ++ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ ++ lt_cv_sys_global_symbol_to_c_name_address \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ old_postinstall_cmds old_postuninstall_cmds \ ++ compiler_CXX \ ++ CC_CXX \ ++ LD_CXX \ ++ lt_prog_compiler_wl_CXX \ ++ lt_prog_compiler_pic_CXX \ ++ lt_prog_compiler_static_CXX \ ++ lt_prog_compiler_no_builtin_flag_CXX \ ++ export_dynamic_flag_spec_CXX \ ++ thread_safe_flag_spec_CXX \ ++ whole_archive_flag_spec_CXX \ ++ enable_shared_with_static_runtimes_CXX \ ++ old_archive_cmds_CXX \ ++ old_archive_from_new_cmds_CXX \ ++ predep_objects_CXX \ ++ postdep_objects_CXX \ ++ predeps_CXX \ ++ postdeps_CXX \ ++ compiler_lib_search_path_CXX \ ++ archive_cmds_CXX \ ++ archive_expsym_cmds_CXX \ ++ postinstall_cmds_CXX \ ++ postuninstall_cmds_CXX \ ++ old_archive_from_expsyms_cmds_CXX \ ++ allow_undefined_flag_CXX \ ++ no_undefined_flag_CXX \ ++ export_symbols_cmds_CXX \ ++ hardcode_libdir_flag_spec_CXX \ ++ hardcode_libdir_flag_spec_ld_CXX \ ++ hardcode_libdir_separator_CXX \ ++ hardcode_automatic_CXX \ ++ module_cmds_CXX \ ++ module_expsym_cmds_CXX \ ++ lt_cv_prog_compiler_c_o_CXX \ ++ fix_srcfile_path_CXX \ ++ exclude_expsyms_CXX \ ++ include_expsyms_CXX; do + +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes ++ case $var in ++ old_archive_cmds_CXX | \ ++ old_archive_from_new_cmds_CXX | \ ++ archive_cmds_CXX | \ ++ archive_expsym_cmds_CXX | \ ++ module_cmds_CXX | \ ++ module_expsym_cmds_CXX | \ ++ old_archive_from_expsyms_cmds_CXX | \ ++ export_symbols_cmds_CXX | \ ++ extract_expsyms_cmds | reload_cmds | finish_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case $lt_echo in ++ *'\$0 --fallback-echo"') ++ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; ++ esac + +- mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; ++cfgfile="$ofile" + +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; ++ cat <<__EOF__ >> "$cfgfile" ++# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +- darwin*) +- # if libdl is installed we need to link against it +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL + +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared + +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes ++# Whether or not to build static libraries. ++build_old_libs=$enable_static + +-fi ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc_CXX + +- ;; ++# Whether or not to disallow shared libs when runtime libs are static ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +- *) +- echo "$as_me:$LINENO: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +-if test "${ac_cv_func_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define shl_load to an innocuous variant, in case declares shl_load. +- For example, HP-UX 11i declares gettimeofday. */ +-#define shl_load innocuous_shl_load ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os + +-#undef shl_load ++# An echo program that does not interpret backslashes. ++echo=$lt_echo + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) +-choke me +-#else +-char (*f) () = shl_load; +-#endif +-#ifdef __cplusplus +-} +-#endif ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS + +-int +-main () +-{ +-return f != shl_load; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# A C compiler. ++LTCC=$lt_LTCC + +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +-if test $ac_cv_func_shl_load = yes; then +- lt_cv_dlopen="shl_load" +-else +- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-int +-main () +-{ +-shl_load (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# A language-specific compiler. ++CC=$lt_compiler_CXX + +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +-if test $ac_cv_lib_dld_shl_load = yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +-else +- echo "$as_me:$LINENO: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +-if test "${ac_cv_func_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define dlopen to an innocuous variant, in case declares dlopen. +- For example, HP-UX 11i declares gettimeofday. */ +-#define dlopen innocuous_dlopen ++# Is the compiler the GNU C compiler? ++with_gcc=$GCC_CXX + +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ ++# An ERE matcher. ++EGREP=$lt_EGREP + +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++# The linker used to build libraries. ++LD=$lt_LD_CXX + +-#undef dlopen ++# Whether we need hard or soft links. ++LN_S=$lt_LN_S + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) +-choke me +-#else +-char (*f) () = dlopen; +-#endif +-#ifdef __cplusplus +-} +-#endif ++# A BSD-compatible nm program. ++NM=$lt_NM + +-int +-main () +-{ +-return f != dlopen; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# A symbol stripping program ++STRIP=$lt_STRIP + +-ac_cv_func_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +-if test $ac_cv_func_dlopen = yes; then +- lt_cv_dlopen="dlopen" +-else +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# Used to examine libraries when file_magic_cmd begins "file" ++MAGIC_CMD=$MAGIC_CMD + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Used on cygwin: DLL creation program. ++DLLTOOL="$DLLTOOL" + +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# Used on cygwin: object dumper. ++OBJDUMP="$OBJDUMP" + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_svld_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# Used on cygwin: assembler. ++AS="$AS" + +-ac_cv_lib_svld_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +-if test $ac_cv_lib_svld_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dld_link (); +-int +-main () +-{ +-dld_link (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_dld_link=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds + +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +-if test $ac_cv_lib_dld_dld_link = yes; then +- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +-fi ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl_CXX + ++# Object file suffix (normally "o"). ++objext="$ac_objext" + +-fi ++# Old archive suffix (normally "a"). ++libext="$libext" + ++# Shared library suffix (normally ".so"). ++shrext_cmds='$shrext_cmds' + +-fi ++# Executable file suffix (normally ""). ++exeext="$exeext" + ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic_CXX ++pic_mode=$pic_mode + +-fi ++# What is the maximum length of a command? ++max_cmd_len=$lt_cv_sys_max_cmd_len + ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +-fi ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks + ++# Do we need the lib prefix for modules? ++need_lib_prefix=$need_lib_prefix + +-fi ++# Do we need a version for libraries? ++need_version=$need_version + +- ;; +- esac ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static + +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static_CXX + +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +-#include ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# Library versioning type. ++version_type=$version_type + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Format of library name prefix. ++libname_spec=$lt_libname_spec + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME. ++library_names_spec=$lt_library_names_spec + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++# Commands used to build and install an old-style archive. ++RANLIB=$lt_RANLIB ++old_archive_cmds=$lt_old_archive_cmds_CXX ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self=no +- fi +-fi +-rm -fr conftest* ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 ++# Commands used to build and install a shared archive. ++archive_cmds=$lt_archive_cmds_CXX ++archive_expsym_cmds=$lt_archive_expsym_cmds_CXX ++postinstall_cmds=$lt_postinstall_cmds ++postuninstall_cmds=$lt_postuninstall_cmds + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self_static+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self_static=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib + +-#include ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predep_objects=$lt_predep_objects_CXX + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdep_objects=$lt_postdep_objects_CXX + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# Dependencies to place before the objects being linked to create a ++# shared library. ++predeps=$lt_predeps_CXX + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++# Dependencies to place after the objects being linked to create a ++# shared library. ++postdeps=$lt_postdeps_CXX + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++# The library search path used internally by the compiler when linking ++# a shared library. ++compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no +- fi +-fi +-rm -fr conftest* +- +- +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$lt_file_magic_cmd + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag_CXX + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi ++# Flag that forces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag_CXX + ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds + +-# The else clause should only fire when bootstrapping the +-# libtool distribution, otherwise you forgot to ship ltmain.sh +-# with your package, and you will get complaints that there are +-# no rules to generate ltmain.sh. +-if test -f "$ltmain"; then +- # See if we are running on zsh, and set the options which allow our commands through +- # without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- # Now quote all the things that may contain metacharacters while being +- # careful not to overquote the AC_SUBSTed values. We take copies of the +- # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ +- SED SHELL STRIP \ +- libname_spec library_names_spec soname_spec extract_expsyms_cmds \ +- old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +- deplibs_check_method reload_flag reload_cmds need_locks \ +- lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ +- lt_cv_sys_global_symbol_to_c_name_address \ +- sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ +- old_postinstall_cmds old_postuninstall_cmds \ +- compiler_CXX \ +- CC_CXX \ +- LD_CXX \ +- lt_prog_compiler_wl_CXX \ +- lt_prog_compiler_pic_CXX \ +- lt_prog_compiler_static_CXX \ +- lt_prog_compiler_no_builtin_flag_CXX \ +- export_dynamic_flag_spec_CXX \ +- thread_safe_flag_spec_CXX \ +- whole_archive_flag_spec_CXX \ +- enable_shared_with_static_runtimes_CXX \ +- old_archive_cmds_CXX \ +- old_archive_from_new_cmds_CXX \ +- predep_objects_CXX \ +- postdep_objects_CXX \ +- predeps_CXX \ +- postdeps_CXX \ +- compiler_lib_search_path_CXX \ +- archive_cmds_CXX \ +- archive_expsym_cmds_CXX \ +- postinstall_cmds_CXX \ +- postuninstall_cmds_CXX \ +- old_archive_from_expsyms_cmds_CXX \ +- allow_undefined_flag_CXX \ +- no_undefined_flag_CXX \ +- export_symbols_cmds_CXX \ +- hardcode_libdir_flag_spec_CXX \ +- hardcode_libdir_flag_spec_ld_CXX \ +- hardcode_libdir_separator_CXX \ +- hardcode_automatic_CXX \ +- module_cmds_CXX \ +- module_expsym_cmds_CXX \ +- lt_cv_prog_compiler_c_o_CXX \ +- exclude_expsyms_CXX \ +- include_expsyms_CXX; do ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$lt_finish_eval + +- case $var in +- old_archive_cmds_CXX | \ +- old_archive_from_new_cmds_CXX | \ +- archive_cmds_CXX | \ +- archive_expsym_cmds_CXX | \ +- module_cmds_CXX | \ +- module_expsym_cmds_CXX | \ +- old_archive_from_expsyms_cmds_CXX | \ +- export_symbols_cmds_CXX | \ +- extract_expsyms_cmds | reload_cmds | finish_cmds | \ +- postinstall_cmds | postuninstall_cmds | \ +- old_postinstall_cmds | old_postuninstall_cmds | \ +- sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) +- # Double-quote double-evaled strings. +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" +- ;; +- *) +- eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" +- ;; +- esac +- done ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +- case $lt_echo in +- *'\$0 --fallback-echo"') +- lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` +- ;; +- esac ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +-cfgfile="$ofile" ++# Transform the output of nm in a C name address pair ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +- cat <<__EOF__ >> "$cfgfile" +-# ### BEGIN LIBTOOL TAG CONFIG: $tagname ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var + +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var + +-# Shell to use when invoking shell scripts. +-SHELL=$lt_SHELL ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +-# Whether or not to build shared libraries. +-build_libtool_libs=$enable_shared ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action_CXX + +-# Whether or not to build static libraries. +-build_old_libs=$enable_static ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs + +-# Whether or not to add -lc for building shared libraries. +-build_libtool_need_lc=$archive_cmds_need_lc_CXX ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +-# Whether or not to disallow shared libs when runtime libs are static +-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX ++# If ld is used when linking, flag to hardcode \$libdir into ++# a binary during linking. This must work even if \$libdir does ++# not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +-# Whether or not to optimize for fast installation. +-fast_install=$enable_fast_install ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +-# The host system. +-host_alias=$host_alias +-host=$host +-host_os=$host_os ++# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct_CXX + +-# The build system. +-build_alias=$build_alias +-build=$build +-build_os=$build_os ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L_CXX + +-# An echo program that does not interpret backslashes. +-echo=$lt_echo ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +-# The archiver. +-AR=$lt_AR +-AR_FLAGS=$lt_AR_FLAGS ++# Set to yes if building a shared library automatically hardcodes DIR into the library ++# and all subsequent libraries and executables linked against it. ++hardcode_automatic=$hardcode_automatic_CXX + +-# A C compiler. +-LTCC=$lt_LTCC ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at relink time. ++variables_saved_for_relink="$variables_saved_for_relink" + +-# A language-specific compiler. +-CC=$lt_compiler_CXX ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs_CXX + +-# Is the compiler the GNU C compiler? +-with_gcc=$GCC_CXX ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +-# An ERE matcher. +-EGREP=$lt_EGREP ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +-# The linker used to build libraries. +-LD=$lt_LD_CXX ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path + +-# Whether we need hard or soft links. +-LN_S=$lt_LN_S ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols_CXX + +-# A BSD-compatible nm program. +-NM=$lt_NM ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds_CXX + +-# A symbol stripping program +-STRIP=$lt_STRIP ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds + +-# Used to examine libraries when file_magic_cmd begins "file" +-MAGIC_CMD=$MAGIC_CMD ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms_CXX + +-# Used on cygwin: DLL creation program. +-DLLTOOL="$DLLTOOL" ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms_CXX + +-# Used on cygwin: object dumper. +-OBJDUMP="$OBJDUMP" ++# ### END LIBTOOL TAG CONFIG: $tagname + +-# Used on cygwin: assembler. +-AS="$AS" ++__EOF__ + +-# The name of the directory that contains temporary libtool files. +-objdir=$objdir + +-# How to create reloadable object files. +-reload_flag=$lt_reload_flag +-reload_cmds=$lt_reload_cmds ++else ++ # If there is no Makefile yet, we rely on a make rule to execute ++ # `config.status --recheck' to rerun these tests and create the ++ # libtool script then. ++ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` ++ if test -f "$ltmain_in"; then ++ test -f Makefile && make "$ltmain" ++ fi ++fi + +-# How to pass a linker flag through the compiler. +-wl=$lt_lt_prog_compiler_wl_CXX + +-# Object file suffix (normally "o"). +-objext="$ac_objext" +- +-# Old archive suffix (normally "a"). +-libext="$libext" +- +-# Shared library suffix (normally ".so"). +-shrext_cmds='$shrext_cmds' +- +-# Executable file suffix (normally ""). +-exeext="$exeext" +- +-# Additional compiler flags for building library objects. +-pic_flag=$lt_lt_prog_compiler_pic_CXX +-pic_mode=$pic_mode +- +-# What is the maximum length of a command? +-max_cmd_len=$lt_cv_sys_max_cmd_len +- +-# Does compiler simultaneously support -c and -o options? +-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX +- +-# Must we lock files when doing compilation? +-need_locks=$lt_need_locks +- +-# Do we need the lib prefix for modules? +-need_lib_prefix=$need_lib_prefix +- +-# Do we need a version for libraries? +-need_version=$need_version +- +-# Whether dlopen is supported. +-dlopen_support=$enable_dlopen +- +-# Whether dlopen of programs is supported. +-dlopen_self=$enable_dlopen_self +- +-# Whether dlopen of statically linked programs is supported. +-dlopen_self_static=$enable_dlopen_self_static +- +-# Compiler flag to prevent dynamic linking. +-link_static_flag=$lt_lt_prog_compiler_static_CXX +- +-# Compiler flag to turn off builtin functions. +-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX +- +-# Compiler flag to allow reflexive dlopens. +-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX +- +-# Compiler flag to generate shared objects directly from archives. +-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX +- +-# Compiler flag to generate thread-safe objects. +-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX +- +-# Library versioning type. +-version_type=$version_type +- +-# Format of library name prefix. +-libname_spec=$lt_libname_spec +- +-# List of archive names. First name is the real one, the rest are links. +-# The last name is the one that the linker finds with -lNAME. +-library_names_spec=$lt_library_names_spec +- +-# The coded name of the library, if different from the real name. +-soname_spec=$lt_soname_spec +- +-# Commands used to build and install an old-style archive. +-RANLIB=$lt_RANLIB +-old_archive_cmds=$lt_old_archive_cmds_CXX +-old_postinstall_cmds=$lt_old_postinstall_cmds +-old_postuninstall_cmds=$lt_old_postuninstall_cmds +- +-# Create an old-style archive from a shared archive. +-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX +- +-# Create a temporary old-style archive to link instead of a shared archive. +-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX +- +-# Commands used to build and install a shared archive. +-archive_cmds=$lt_archive_cmds_CXX +-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +-postinstall_cmds=$lt_postinstall_cmds +-postuninstall_cmds=$lt_postuninstall_cmds +- +-# Commands used to build a loadable module (assumed same as above if empty) +-module_cmds=$lt_module_cmds_CXX +-module_expsym_cmds=$lt_module_expsym_cmds_CXX +- +-# Commands to strip libraries. +-old_striplib=$lt_old_striplib +-striplib=$lt_striplib +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predep_objects=$lt_predep_objects_CXX +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdep_objects=$lt_postdep_objects_CXX +- +-# Dependencies to place before the objects being linked to create a +-# shared library. +-predeps=$lt_predeps_CXX +- +-# Dependencies to place after the objects being linked to create a +-# shared library. +-postdeps=$lt_postdeps_CXX +- +-# The library search path used internally by the compiler when linking +-# a shared library. +-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX +- +-# Method to check whether dependent libraries are shared objects. +-deplibs_check_method=$lt_deplibs_check_method +- +-# Command to use when deplibs_check_method == file_magic. +-file_magic_cmd=$lt_file_magic_cmd +- +-# Flag that allows shared libraries with undefined symbols to be built. +-allow_undefined_flag=$lt_allow_undefined_flag_CXX +- +-# Flag that forces no undefined symbols. +-no_undefined_flag=$lt_no_undefined_flag_CXX +- +-# Commands used to finish a libtool library installation in a directory. +-finish_cmds=$lt_finish_cmds +- +-# Same as above, but a single script fragment to be evaled but not shown. +-finish_eval=$lt_finish_eval +- +-# Take the output of nm and produce a listing of raw symbols and C names. +-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +- +-# Transform the output of nm in a proper C declaration +-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +- +-# Transform the output of nm in a C name address pair +-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +- +-# This is the shared library runtime path variable. +-runpath_var=$runpath_var +- +-# This is the shared library path variable. +-shlibpath_var=$shlibpath_var +- +-# Is shlibpath searched before the hard-coded library search path? +-shlibpath_overrides_runpath=$shlibpath_overrides_runpath +- +-# How to hardcode a shared library path into an executable. +-hardcode_action=$hardcode_action_CXX +- +-# Whether we should hardcode library paths into libraries. +-hardcode_into_libs=$hardcode_into_libs +- +-# Flag to hardcode \$libdir into a binary during linking. +-# This must work even if \$libdir does not exist. +-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX +- +-# If ld is used when linking, flag to hardcode \$libdir into +-# a binary during linking. This must work even if \$libdir does +-# not exist. +-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX +- +-# Whether we need a single -rpath flag with a separated argument. +-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX +- +-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +-# resulting binary. +-hardcode_direct=$hardcode_direct_CXX +- +-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +-# resulting binary. +-hardcode_minus_L=$hardcode_minus_L_CXX +- +-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +-# the resulting binary. +-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX +- +-# Set to yes if building a shared library automatically hardcodes DIR into the library +-# and all subsequent libraries and executables linked against it. +-hardcode_automatic=$hardcode_automatic_CXX +- +-# Variables whose values should be saved in libtool wrapper scripts and +-# restored at relink time. +-variables_saved_for_relink="$variables_saved_for_relink" +- +-# Whether libtool must link a program against all its dependency libraries. +-link_all_deplibs=$link_all_deplibs_CXX +- +-# Compile-time system search path for libraries +-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +- +-# Run-time system search path for libraries +-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +- +-# Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_CXX" +- +-# Set to yes if exported symbols are required. +-always_export_symbols=$always_export_symbols_CXX +- +-# The commands to list exported symbols. +-export_symbols_cmds=$lt_export_symbols_cmds_CXX +- +-# The commands to extract the exported symbol list from a shared archive. +-extract_expsyms_cmds=$lt_extract_expsyms_cmds +- +-# Symbols that should not be listed in the preloaded symbols. +-exclude_expsyms=$lt_exclude_expsyms_CXX +- +-# Symbols that must always be exported. +-include_expsyms=$lt_include_expsyms_CXX +- +-# ### END LIBTOOL TAG CONFIG: $tagname +- +-__EOF__ +- +- +-else +- # If there is no Makefile yet, we rely on a make rule to execute +- # `config.status --recheck' to rerun these tests and create the +- # libtool script then. +- ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` +- if test -f "$ltmain_in"; then +- test -f Makefile && make "$ltmain" +- fi +-fi +- +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + + CC=$lt_save_CC + LDCXX=$LD +@@ -14755,30 +15077,40 @@ + objext_F77=$objext + + # Code to be used in simple compile tests +-lt_simple_compile_test_code=" subroutine t\n return\n end\n" ++lt_simple_compile_test_code="\ ++ subroutine t ++ return ++ end ++" + + # Code to be used in simple link tests +-lt_simple_link_test_code=" program t\n end\n" ++lt_simple_link_test_code="\ ++ program t ++ end ++" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + # If no C compiler was specified, use CC. + LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ + # Allow CC to be a program name with arguments. + compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_compiler_boilerplate=`cat conftest.err` + $rm conftest* + + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_linker_boilerplate=`cat conftest.err` + $rm conftest* + +@@ -14799,18 +15131,18 @@ + cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $can_build_shared" >&5 +-echo "${ECHO_T}$can_build_shared" >&6 ++{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ++echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 ++echo "${ECHO_T}$can_build_shared" >&6; } + +-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ++echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. +-case "$host_os" in ++case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then +@@ -14824,17 +15156,15 @@ + fi + ;; + esac +-echo "$as_me:$LINENO: result: $enable_shared" >&5 +-echo "${ECHO_T}$enable_shared" >&6 ++{ echo "$as_me:$LINENO: result: $enable_shared" >&5 ++echo "${ECHO_T}$enable_shared" >&6; } + +-echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ++echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes +-echo "$as_me:$LINENO: result: $enable_static" >&5 +-echo "${ECHO_T}$enable_static" >&6 +- +-test "$ld_shlibs_F77" = no && can_build_shared=no ++{ echo "$as_me:$LINENO: result: $enable_static" >&5 ++echo "${ECHO_T}$enable_static" >&6; } + + GCC_F77="$G77" + LD_F77="$LD" +@@ -14843,8 +15173,8 @@ + lt_prog_compiler_pic_F77= + lt_prog_compiler_static_F77= + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' +@@ -14866,13 +15196,15 @@ + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + +- mingw* | pw32* | os2*) ++ mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + +@@ -14882,6 +15214,11 @@ + lt_prog_compiler_pic_F77='-fno-common' + ;; + ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. +@@ -14898,7 +15235,7 @@ + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -14935,7 +15272,7 @@ + esac + ;; + +- mingw* | pw32* | os2*) ++ mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' +@@ -14945,7 +15282,7 @@ + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -14968,25 +15305,41 @@ + lt_prog_compiler_static_F77='-Bstatic' + ;; + +- linux*) ++ linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; +- pgcc* | pgf77* | pgf90*) ++ pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' +- lt_prog_compiler_static_F77='-static' ++ lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ lt_prog_compiler_wl_F77='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ lt_prog_compiler_wl_F77='' ++ ;; ++ esac ++ ;; + esac + ;; + +@@ -14996,9 +15349,8 @@ + lt_prog_compiler_static_F77='-non_shared' + ;; + +- sco3.2v5*) +- lt_prog_compiler_pic_F77='-Kpic' +- lt_prog_compiler_static_F77='-dn' ++ rdos*) ++ lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) +@@ -15018,7 +15370,7 @@ + lt_prog_compiler_static_F77='-Bstatic' + ;; + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' +@@ -15031,6 +15383,12 @@ + fi + ;; + ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl_F77='-Wl,' ++ lt_prog_compiler_pic_F77='-KPIC' ++ lt_prog_compiler_static_F77='-Bstatic' ++ ;; ++ + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no +@@ -15047,22 +15405,22 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } + + # + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic_F77"; then + +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } + if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. +@@ -15070,28 +15428,28 @@ + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:15076: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:15434: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:15080: \$? = $ac_status" >&5 ++ echo "$as_me:15438: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; } + + if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in +@@ -15104,7 +15462,7 @@ + fi + + fi +-case "$host_os" in ++case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= +@@ -15114,8 +15472,50 @@ + ;; + esac + +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_F77+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_F77=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_F77=yes ++ fi ++ else ++ lt_prog_compiler_static_works_F77=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_F77" = xyes; then ++ : ++else ++ lt_prog_compiler_static_F77= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } + if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -15124,7 +15524,7 @@ + mkdir conftest + cd conftest + mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or +@@ -15132,25 +15532,25 @@ + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:15138: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:15538: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:15142: \$? = $ac_status" >&5 ++ echo "$as_me:15542: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp +- $SED '/^$/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi +- chmod u+w . ++ chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation +@@ -15161,23 +15561,23 @@ + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } + + + hard_links="nottested" + if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 + echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +@@ -15187,8 +15587,8 @@ + need_locks=no + fi + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_F77= +@@ -15246,6 +15646,10 @@ + with_gnu_ld=no + fi + ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; + openbsd*) + with_gnu_ld=no + ;; +@@ -15327,10 +15731,10 @@ + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes +- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ++ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +@@ -15339,22 +15743,38 @@ + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + +- linux*) ++ interix[3-9]*) ++ hardcode_direct_F77=no ++ hardcode_shlibpath_var_F77=no ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_F77='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler +- whole_archive_flag_spec_F77= ++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' + ;; +- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec_F77= +- tmp_addflag=' -fpic -Mnomain' ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +@@ -15362,20 +15782,30 @@ + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac +- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi ++ link_all_deplibs_F77=no + else + ld_shlibs_F77=no + fi + ;; + +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -15385,7 +15815,7 @@ + fi + ;; + +- solaris* | sysv5*) ++ solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 +@@ -15406,6 +15836,33 @@ + fi + ;; + ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs_F77=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs_F77=no ++ fi ++ ;; ++ esac ++ ;; ++ + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= +@@ -15439,7 +15896,7 @@ + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported +@@ -15473,6 +15930,7 @@ + break + fi + done ++ ;; + esac + + exp_sym_flag='-bexport' +@@ -15499,7 +15957,7 @@ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 +- hardcode_direct_F77=yes ++ : + else + # We have old collect2 + hardcode_direct_F77=unsupported +@@ -15510,6 +15968,7 @@ + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi ++ ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then +@@ -15522,11 +15981,11 @@ + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else +- if test "$aix_use_runtimelinking" = yes; then ++ if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' +- fi ++ fi + fi + fi + +@@ -15544,49 +16003,54 @@ + end + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" +- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +@@ -15595,39 +16059,44 @@ + end + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_f77_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +@@ -15636,13 +16105,11 @@ + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' +- # -bexpall does not export symbols beginning with underscore (_) +- always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec_F77=' ' ++ whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes +- # This is similar to how AIX traditionally builds it's shared libraries. +- archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; +@@ -15675,13 +16142,13 @@ + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. +- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' ++ old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) +- case "$host_os" in ++ case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; +@@ -15710,17 +16177,17 @@ + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' +- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' ++ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) +@@ -15760,7 +16227,7 @@ + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) ++ freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes +@@ -15783,47 +16250,62 @@ + export_dynamic_flag_spec_F77='${wl}-E' + ;; + +- hpux10* | hpux11*) ++ hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*|ia64*) ++ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ++ hardcode_direct_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_F77=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; ++ ia64*) ++ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else +- case "$host_cpu" in +- hppa*64*|ia64*) +- archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) +- archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*) +- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_F77=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' +- hardcode_libdir_separator_F77=: +- hardcode_direct_F77=no +- hardcode_shlibpath_var_F77=no +- ;; +- ia64*) +- hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_F77=yes + ;; + *) +- hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + +@@ -15847,7 +16329,7 @@ + link_all_deplibs_F77=yes + ;; + +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +@@ -15867,24 +16349,28 @@ + ;; + + openbsd*) +- hardcode_direct_F77=yes +- hardcode_shlibpath_var_F77=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_F77='${wl}-E' ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_F77=yes ++ hardcode_shlibpath_var_F77=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_F77='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_F77='-R$libdir' ++ ;; ++ *) ++ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi + else +- case $host_os in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_F77='-R$libdir' +- ;; +- *) +- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' +- ;; +- esac ++ ld_shlibs_F77=no + fi + ;; + +@@ -15925,14 +16411,6 @@ + hardcode_libdir_separator_F77=: + ;; + +- sco3.2v5*) +- archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var_F77=no +- export_dynamic_flag_spec_F77='${wl}-Bexport' +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ;; +- + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then +@@ -15951,17 +16429,16 @@ + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; +- *) +- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ++ fi ++ ;; + esac + link_all_deplibs_F77=yes + ;; +@@ -16018,36 +16495,45 @@ + fi + ;; + +- sysv4.2uw2*) +- archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_F77=yes +- hardcode_minus_L_F77=no ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_F77='${wl}-z,text' ++ archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ runpath_var='LD_RUN_PATH' + +- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) +- no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then +- archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else +- archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var_F77=no + ;; + +- sysv5*) +- no_undefined_flag_F77=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec_F77= ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag_F77='${wl}-z,text' ++ allow_undefined_flag_F77='${wl}-z,nodefs' ++ archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no ++ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_F77=':' ++ link_all_deplibs_F77=yes ++ export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi + ;; + + uts4*) +@@ -16062,15 +16548,10 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +-echo "${ECHO_T}$ld_shlibs_F77" >&6 ++{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 ++echo "${ECHO_T}$ld_shlibs_F77" >&6; } + test "$ld_shlibs_F77" = no && can_build_shared=no + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- + # + # Do we need to explicitly link libc? + # +@@ -16088,10 +16569,10 @@ + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 +@@ -16103,6 +16584,7 @@ + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 ++ pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= +@@ -16125,16 +16607,16 @@ + cat conftest.err 1>&5 + fi + $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; + esac + +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } + library_names_spec= + libname_spec='lib$name' + soname_spec= +@@ -16148,20 +16630,7 @@ + version_type=none + dynamic_linker="$host_os ld.so" + sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi ++ + need_lib_prefix=unknown + hardcode_into_libs=no + +@@ -16263,7 +16732,8 @@ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' +@@ -16316,13 +16786,8 @@ + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +@@ -16339,22 +16804,17 @@ + dynamic_linker=no + ;; + +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- + freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) +@@ -16376,10 +16836,15 @@ + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; +- *) # from 3.2 on ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + esac + ;; + +@@ -16399,7 +16864,7 @@ + version_type=sunos + need_lib_prefix=no + need_version=no +- case "$host_cpu" in ++ case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes +@@ -16439,6 +16904,18 @@ + postinstall_cmds='chmod 555 $lib' + ;; + ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ + irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; +@@ -16482,7 +16959,7 @@ + ;; + + # This must be Linux ELF. +-linux*) ++linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -16496,31 +16973,10 @@ + # before this can be enabled. + hardcode_into_libs=yes + +- # find out which ABI we are using +- libsuff= +- case "$host_cpu" in +- x86_64*|s390x*|powerpc64*) +- echo '#line 16503 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *64-bit*) +- libsuff=64 +- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- esac +- + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on +@@ -16532,7 +16988,7 @@ + dynamic_linker='GNU/Linux ld.so' + ;; + +-knetbsd*-gnu) ++netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no +@@ -16541,7 +16997,7 @@ + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' ++ dynamic_linker='NetBSD ld.elf_so' + ;; + + netbsd*) +@@ -16581,8 +17037,13 @@ + + openbsd*) + version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no +- need_version=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH +@@ -16620,11 +17081,8 @@ + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH ++rdos*) ++ dynamic_linker=no + ;; + + solaris*) +@@ -16652,7 +17110,7 @@ + need_version=yes + ;; + +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' +@@ -16685,6 +17143,29 @@ + fi + ;; + ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ + uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +@@ -16696,12 +17177,17 @@ + dynamic_linker=no + ;; + esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } + test "$dynamic_linker" = no && can_build_shared=no + +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } + hardcode_action_F77= + if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ +@@ -16725,8 +17211,8 @@ + # directories. + hardcode_action_F77=unsupported + fi +-echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +-echo "${ECHO_T}$hardcode_action_F77" >&6 ++{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 ++echo "${ECHO_T}$hardcode_action_F77" >&6; } + + if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported +@@ -16737,36 +17223,6 @@ + enable_fast_install=needless + fi + +-striplib= +-old_striplib= +-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- ;; +- *) +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- ;; +- esac +-fi +- +- + + # The else clause should only fire when bootstrapping the + # libtool distribution, otherwise you forgot to ship ltmain.sh +@@ -16781,7 +17237,7 @@ + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +@@ -16823,6 +17279,7 @@ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ ++ fix_srcfile_path_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + +@@ -16899,6 +17356,9 @@ + # A C compiler. + LTCC=$lt_LTCC + ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ + # A language-specific compiler. + CC=$lt_compiler_F77 + +@@ -17140,7 +17600,7 @@ + sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + + # Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_F77" ++fix_srcfile_path=$lt_fix_srcfile_path + + # Set to yes if exported symbols are required. + always_export_symbols=$always_export_symbols_F77 +@@ -17190,7 +17650,6 @@ + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +- + # Source file extension for Java test sources. + ac_ext=java + +@@ -17199,30 +17658,33 @@ + objext_GCJ=$objext + + # Code to be used in simple compile tests +-lt_simple_compile_test_code="class foo {}\n" ++lt_simple_compile_test_code="class foo {}" + + # Code to be used in simple link tests +-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' ++lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + # If no C compiler was specified, use CC. + LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ + # Allow CC to be a program name with arguments. + compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_compiler_boilerplate=`cat conftest.err` + $rm conftest* + + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_linker_boilerplate=`cat conftest.err` + $rm conftest* + +@@ -17255,14 +17717,14 @@ + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } + if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. +@@ -17270,28 +17732,28 @@ + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:17276: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:17738: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:17280: \$? = $ac_status" >&5 ++ echo "$as_me:17742: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + + if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +@@ -17305,8 +17767,8 @@ + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_static_GCJ= + +-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ++echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' +@@ -17328,13 +17790,15 @@ + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + +- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + +- mingw* | pw32* | os2*) ++ mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + +@@ -17344,6 +17808,11 @@ + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. +@@ -17360,7 +17829,7 @@ + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -17397,7 +17866,7 @@ + esac + ;; + +- mingw* | pw32* | os2*) ++ mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' +@@ -17407,7 +17876,7 @@ + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. +- case "$host_cpu" in ++ case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; +@@ -17430,25 +17899,41 @@ + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + +- linux*) ++ linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; +- pgcc* | pgf77* | pgf90*) ++ pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' +- lt_prog_compiler_static_GCJ='-static' ++ lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ ;; ++ *Sun\ F*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ lt_prog_compiler_wl_GCJ='' ++ ;; ++ esac ++ ;; + esac + ;; + +@@ -17458,9 +17943,8 @@ + lt_prog_compiler_static_GCJ='-non_shared' + ;; + +- sco3.2v5*) +- lt_prog_compiler_pic_GCJ='-Kpic' +- lt_prog_compiler_static_GCJ='-dn' ++ rdos*) ++ lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) +@@ -17480,7 +17964,7 @@ + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' +@@ -17493,6 +17977,12 @@ + fi + ;; + ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl_GCJ='-Wl,' ++ lt_prog_compiler_pic_GCJ='-KPIC' ++ lt_prog_compiler_static_GCJ='-Bstatic' ++ ;; ++ + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no +@@ -17509,22 +17999,22 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } + + # + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic_GCJ"; then + +-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 ++echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } + if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. +@@ -17532,28 +18022,28 @@ + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:17538: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:18028: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:17542: \$? = $ac_status" >&5 ++ echo "$as_me:18032: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +- $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp +- $SED '/^$/d' conftest.err >conftest.er2 +- if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; } + + if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in +@@ -17566,7 +18056,7 @@ + fi + + fi +-case "$host_os" in ++case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= +@@ -17576,8 +18066,50 @@ + ;; + esac + +-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" ++{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } ++if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ lt_prog_compiler_static_works_GCJ=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_prog_compiler_static_works_GCJ=yes ++ fi ++ else ++ lt_prog_compiler_static_works_GCJ=yes ++ fi ++ fi ++ $rm conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 ++echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; } ++ ++if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then ++ : ++else ++ lt_prog_compiler_static_GCJ= ++fi ++ ++ ++{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ++echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } + if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -17586,7 +18118,7 @@ + mkdir conftest + cd conftest + mkdir out +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or +@@ -17594,25 +18126,25 @@ + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:17600: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:18132: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:17604: \$? = $ac_status" >&5 ++ echo "$as_me:18136: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings +- $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp +- $SED '/^$/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi +- chmod u+w . ++ chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation +@@ -17623,23 +18155,23 @@ + $rm conftest* + + fi +-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 ++{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 ++echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + + hard_links="nottested" + if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user +- echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ++echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- echo "$as_me:$LINENO: result: $hard_links" >&5 +-echo "${ECHO_T}$hard_links" >&6 ++ { echo "$as_me:$LINENO: result: $hard_links" >&5 ++echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 + echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +@@ -17649,8 +18181,8 @@ + need_locks=no + fi + +-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_GCJ= +@@ -17708,6 +18240,10 @@ + with_gnu_ld=no + fi + ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; + openbsd*) + with_gnu_ld=no + ;; +@@ -17789,10 +18325,10 @@ + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes +- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' ++ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then +- archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +@@ -17801,22 +18337,38 @@ + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + +- linux*) ++ interix[3-9]*) ++ hardcode_direct_GCJ=no ++ hardcode_shlibpath_var_GCJ=no ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler +- whole_archive_flag_spec_GCJ= ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' + ;; +- pgf77* | pgf90* ) # Portland Group f77 and f90 compilers +- whole_archive_flag_spec_GCJ= +- tmp_addflag=' -fpic -Mnomain' ;; ++ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +@@ -17824,20 +18376,30 @@ + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac +- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ *) ++ tmp_sharedflag='-shared' ;; ++ esac ++ archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi ++ link_all_deplibs_GCJ=no + else + ld_shlibs_GCJ=no + fi + ;; + +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -17847,7 +18409,7 @@ + fi + ;; + +- solaris* | sysv5*) ++ solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 +@@ -17868,6 +18430,33 @@ + fi + ;; + ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs_GCJ=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' ++ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' ++ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' ++ else ++ ld_shlibs_GCJ=no ++ fi ++ ;; ++ esac ++ ;; ++ + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= +@@ -17901,7 +18490,7 @@ + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes +- if test "$GCC" = yes && test -z "$link_static_flag"; then ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported +@@ -17935,6 +18524,7 @@ + break + fi + done ++ ;; + esac + + exp_sym_flag='-bexport' +@@ -17961,7 +18551,7 @@ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 +- hardcode_direct_GCJ=yes ++ : + else + # We have old collect2 + hardcode_direct_GCJ=unsupported +@@ -17972,6 +18562,7 @@ + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi ++ ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then +@@ -17984,11 +18575,11 @@ + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else +- if test "$aix_use_runtimelinking" = yes; then ++ if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' +- fi ++ fi + fi + fi + +@@ -18016,49 +18607,54 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" +- archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" +- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" ++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +@@ -18077,39 +18673,44 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + +-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'` ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. +-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +-}'`; fi ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + +@@ -18118,13 +18719,11 @@ + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' +- # -bexpall does not export symbols beginning with underscore (_) +- always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives +- whole_archive_flag_spec_GCJ=' ' ++ whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes +- # This is similar to how AIX traditionally builds it's shared libraries. +- archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; +@@ -18157,13 +18756,13 @@ + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. +- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' ++ old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) +- case "$host_os" in ++ case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; +@@ -18192,17 +18791,17 @@ + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' +- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' ++ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' +- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's +- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds ++ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) +@@ -18242,7 +18841,7 @@ + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | kfreebsd*-gnu | dragonfly*) ++ freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes +@@ -18265,47 +18864,62 @@ + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + +- hpux10* | hpux11*) ++ hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*|ia64*) ++ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ++ hardcode_direct_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L_GCJ=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes -a "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; ++ ia64*) ++ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else +- case "$host_cpu" in +- hppa*64*|ia64*) +- archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) +- archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then +- case "$host_cpu" in +- hppa*64*) +- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator_GCJ=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' +- hardcode_libdir_separator_GCJ=: +- hardcode_direct_GCJ=no +- hardcode_shlibpath_var_GCJ=no +- ;; +- ia64*) +- hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- hardcode_minus_L_GCJ=yes + ;; + *) +- hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' +- hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + +@@ -18329,7 +18943,7 @@ + link_all_deplibs_GCJ=yes + ;; + +- netbsd*) ++ netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +@@ -18349,24 +18963,28 @@ + ;; + + openbsd*) +- hardcode_direct_GCJ=yes +- hardcode_shlibpath_var_GCJ=no +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' +- export_dynamic_flag_spec_GCJ='${wl}-E' ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct_GCJ=yes ++ hardcode_shlibpath_var_GCJ=no ++ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec_GCJ='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec_GCJ='-R$libdir' ++ ;; ++ *) ++ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi + else +- case $host_os in +- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- hardcode_libdir_flag_spec_GCJ='-R$libdir' +- ;; +- *) +- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' +- ;; +- esac ++ ld_shlibs_GCJ=no + fi + ;; + +@@ -18407,14 +19025,6 @@ + hardcode_libdir_separator_GCJ=: + ;; + +- sco3.2v5*) +- archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- hardcode_shlibpath_var_GCJ=no +- export_dynamic_flag_spec_GCJ='${wl}-Bexport' +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- ;; +- + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then +@@ -18433,17 +19043,16 @@ + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) +- # The compiler driver will combine linker options so we +- # cannot just pass the convience library names through +- # without $wl, iff we do not link with $LD. +- # Luckily, gcc supports the same syntax we need for Sun Studio. ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) +- case $wlarc in +- '') +- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; +- *) +- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; +- esac ;; ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ++ fi ++ ;; + esac + link_all_deplibs_GCJ=yes + ;; +@@ -18500,36 +19109,45 @@ + fi + ;; + +- sysv4.2uw2*) +- archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- hardcode_direct_GCJ=yes +- hardcode_minus_L_GCJ=no ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag_GCJ='${wl}-z,text' ++ archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no +- hardcode_runpath_var=yes +- runpath_var=LD_RUN_PATH +- ;; ++ runpath_var='LD_RUN_PATH' + +- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) +- no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then +- archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else +- archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi +- runpath_var='LD_RUN_PATH' +- hardcode_shlibpath_var_GCJ=no + ;; + +- sysv5*) +- no_undefined_flag_GCJ=' -z text' +- # $CC -shared without GNU ld will not create a library from C++ +- # object files and a static libstdc++, better avoid it by now +- archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' +- hardcode_libdir_flag_spec_GCJ= ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag_GCJ='${wl}-z,text' ++ allow_undefined_flag_GCJ='${wl}-z,nodefs' ++ archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no ++ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' ++ hardcode_libdir_separator_GCJ=':' ++ link_all_deplibs_GCJ=yes ++ export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi + ;; + + uts4*) +@@ -18544,15 +19162,10 @@ + esac + fi + +-echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +-echo "${ECHO_T}$ld_shlibs_GCJ" >&6 ++{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 ++echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } + test "$ld_shlibs_GCJ" = no && can_build_shared=no + +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- + # + # Do we need to explicitly link libc? + # +@@ -18565,1493 +19178,663 @@ + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 +- $rm conftest* +- printf "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$lt_prog_compiler_wl_GCJ +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ +- allow_undefined_flag_GCJ= +- if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 +- (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +- then +- archive_cmds_need_lc_GCJ=no +- else +- archive_cmds_need_lc_GCJ=yes +- fi +- allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $rm conftest* +- echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 +- ;; +- esac +- fi +- ;; +-esac +- +-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix4* | aix5*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[01] | aix4.[01].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[45]*) +- version_type=linux +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$host_os in +- yes,cygwin* | yes,mingw* | yes,pw32*) +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $rm \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +- ;; +- mingw*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` +- if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then +- # It is most probably a Windows format PATH printed by +- # mingw gcc, but we are running on Cygwin. Gcc prints its search +- # path with ; separators, and with drive letters. We can handle the +- # drive letters (cygwin fileutils understands them), so leave them, +- # especially as we might pass files found there to a mingw objdump, +- # which wouldn't understand a cygwinified path. Ahh. +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- ;; +- +- *) +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' +- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. +- if test "$GCC" = yes; then +- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` +- else +- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +- fi +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd1*) +- dynamic_linker=no +- ;; +- +-kfreebsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[01]* | freebsdelf3.[01]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- *) # from 3.2 on +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-gnu*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case "$host_cpu" in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555. +- postinstall_cmds='chmod 555 $lib' +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be Linux ELF. +-linux*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # find out which ABI we are using +- libsuff= +- case "$host_cpu" in +- x86_64*|s390x*|powerpc64*) +- echo '#line 18985 "configure"' > conftest.$ac_ext +- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; then +- case `/usr/bin/file conftest.$ac_objext` in +- *64-bit*) +- libsuff=64 +- sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- esac +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-knetbsd*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='GNU ld.so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-nto-qnx*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-openbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[89] | openbsd2.[89].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-sco3.2v5*) +- version_type=osf +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-solaris*) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- export_dynamic_flag_spec='${wl}-Blargedynsym' +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-uts4*) +- version_type=linux +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +-echo "${ECHO_T}$dynamic_linker" >&6 +-test "$dynamic_linker" = no && can_build_shared=no +- +-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +-hardcode_action_GCJ= +-if test -n "$hardcode_libdir_flag_spec_GCJ" || \ +- test -n "$runpath_var_GCJ" || \ +- test "X$hardcode_automatic_GCJ" = "Xyes" ; then +- +- # We can hardcode non-existant directories. +- if test "$hardcode_direct_GCJ" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && +- test "$hardcode_minus_L_GCJ" != no; then +- # Linking always hardcodes the temporary library directory. +- hardcode_action_GCJ=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- hardcode_action_GCJ=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- hardcode_action_GCJ=unsupported +-fi +-echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +-echo "${ECHO_T}$hardcode_action_GCJ" >&6 +- +-if test "$hardcode_action_GCJ" = relink; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +- +-striplib= +-old_striplib= +-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- ;; +- *) +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- ;; +- esac +-fi +- +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- mingw* | pw32*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; +- +- darwin*) +- # if libdl is installed we need to link against it +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- +-fi +- +- ;; +- +- *) +- echo "$as_me:$LINENO: checking for shl_load" >&5 +-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +-if test "${ac_cv_func_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define shl_load to an innocuous variant, in case declares shl_load. +- For example, HP-UX 11i declares gettimeofday. */ +-#define shl_load innocuous_shl_load +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char shl_load (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef shl_load +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shl_load) || defined (__stub___shl_load) +-choke me +-#else +-char (*f) () = shl_load; +-#endif +-#ifdef __cplusplus +-} +-#endif +- +-int +-main () +-{ +-return f != shl_load; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_func_shl_load=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +-if test $ac_cv_func_shl_load = yes; then +- lt_cv_dlopen="shl_load" +-else +- echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_shl_load+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char shl_load (); +-int +-main () +-{ +-shl_load (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_shl_load=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_dld_shl_load=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +-if test $ac_cv_lib_dld_shl_load = yes; then +- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +-else +- echo "$as_me:$LINENO: checking for dlopen" >&5 +-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +-if test "${ac_cv_func_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-/* Define dlopen to an innocuous variant, in case declares dlopen. +- For example, HP-UX 11i declares gettimeofday. */ +-#define dlopen innocuous_dlopen +- +-/* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char dlopen (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- +-#undef dlopen +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-{ +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-/* The GNU C library defines this for functions which it implements +- to always fail with ENOSYS. Some functions are actually named +- something starting with __ and the normal name is an alias. */ +-#if defined (__stub_dlopen) || defined (__stub___dlopen) +-choke me +-#else +-char (*f) () = dlopen; +-#endif +-#ifdef __cplusplus +-} +-#endif +- +-int +-main () +-{ +-return f != dlopen; +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_func_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_func_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-fi +-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +-if test $ac_cv_func_dlopen = yes; then +- lt_cv_dlopen="dlopen" +-else +- echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +-if test "${ac_cv_lib_dl_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dl_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-ac_cv_lib_dl_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +-if test $ac_cv_lib_dl_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +-else +- echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +-if test "${ac_cv_lib_svld_dlopen+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lsvld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ++echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } ++ $rm conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dlopen (); +-int +-main () +-{ +-dlopen (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl_GCJ ++ pic_flag=$lt_prog_compiler_pic_GCJ ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ ++ allow_undefined_flag_GCJ= ++ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ++ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_svld_dlopen=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++ (exit $ac_status); } ++ then ++ archive_cmds_need_lc_GCJ=no ++ else ++ archive_cmds_need_lc_GCJ=yes ++ fi ++ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $rm conftest* ++ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 ++echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } ++ ;; ++ esac ++ fi ++ ;; ++esac + +-ac_cv_lib_svld_dlopen=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +-if test $ac_cv_lib_svld_dlopen = yes; then +- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +-else +- echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +-if test "${ac_cv_lib_dld_dld_link+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ldld $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ ++{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ++echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char dld_link (); +-int +-main () +-{ +-dld_link (); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_dld_dld_link=yes +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 ++need_lib_prefix=unknown ++hardcode_into_libs=no + +-ac_cv_lib_dld_dld_link=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +-if test $ac_cv_lib_dld_dld_link = yes; then +- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +-fi ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH + ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; + +-fi ++aix4* | aix5*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; + ++amigaos*) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; + +-fi ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; + ++cygwin* | mingw* | pw32*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no + +-fi ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $rm \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ++ ;; ++ mingw*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` ++ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then ++ # It is most probably a Windows format PATH printed by ++ # mingw gcc, but we are running on Cygwin. Gcc prints its search ++ # path with ; separators, and with drive letters. We can handle the ++ # drive letters (cygwin fileutils understands them), so leave them, ++ # especially as we might pass files found there to a mingw objdump, ++ # which wouldn't understand a cygwinified path. Ahh. ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` ++ else ++ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ++ fi ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; + ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; + +-fi ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; + +-fi ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; + +- ;; +- esac ++freebsd1*) ++ dynamic_linker=no ++ ;; + +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` + else +- enable_dlopen=no ++ case $host_os in ++ freebsd[123]*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac + fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; + +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ ;; + +- echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; + +-#include ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++# This must be Linux ELF. ++linux* | k*bsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++netbsdelf*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='NetBSD ld.elf_so' ++ ;; + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self=no ;; +- esac +- else : +- # compilation failed +- lt_cv_dlopen_self=no ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' + fi +-fi +-rm -fr conftest* ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; + ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; + +-fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self" >&6 ++nto-qnx*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; + +- if test "x$lt_cv_dlopen_self" = xyes; then +- LDFLAGS="$LDFLAGS $link_static_flag" +- echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +-if test "${lt_cv_dlopen_self_static+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test "$cross_compiling" = yes; then : +- lt_cv_dlopen_self_static=cross +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext < +-#endif ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; + +-#include ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; + +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif ++rdos*) ++ dynamic_linker=no ++ ;; + +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; + +-#ifdef __cplusplus +-extern "C" void exit (int); +-#endif ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; + +-void fnord() { int i=42;} +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; + +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- /* dlclose (self); */ +- } ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; + +- exit (status); +-} +-EOF +- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +- x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ shlibpath_overrides_runpath=no ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ shlibpath_overrides_runpath=yes ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; + esac +- else : +- # compilation failed +- lt_cv_dlopen_self_static=no + fi +-fi +-rm -fr conftest* ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; + ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ++echo "${ECHO_T}$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no + ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + fi +-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +- fi + +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac ++{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ++echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } ++hardcode_action_GCJ= ++if test -n "$hardcode_libdir_flag_spec_GCJ" || \ ++ test -n "$runpath_var_GCJ" || \ ++ test "X$hardcode_automatic_GCJ" = "Xyes" ; then + +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct_GCJ" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && ++ test "$hardcode_minus_L_GCJ" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action_GCJ=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action_GCJ=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action_GCJ=unsupported ++fi ++{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 ++echo "${ECHO_T}$hardcode_action_GCJ" >&6; } + +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac ++if test "$hardcode_action_GCJ" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless + fi + + +@@ -20068,7 +19851,7 @@ + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +@@ -20110,6 +19893,7 @@ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ ++ fix_srcfile_path_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + +@@ -20186,6 +19970,9 @@ + # A C compiler. + LTCC=$lt_LTCC + ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ + # A language-specific compiler. + CC=$lt_compiler_GCJ + +@@ -20427,7 +20214,7 @@ + sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + + # Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_GCJ" ++fix_srcfile_path=$lt_fix_srcfile_path + + # Set to yes if exported symbols are required. + always_export_symbols=$always_export_symbols_GCJ +@@ -20476,7 +20263,6 @@ + RC) + + +- + # Source file extension for RC test sources. + ac_ext=rc + +@@ -20485,7 +20271,7 @@ + objext_RC=$objext + + # Code to be used in simple compile tests +-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' ++lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + + # Code to be used in simple link tests + lt_simple_link_test_code="$lt_simple_compile_test_code" +@@ -20495,20 +20281,23 @@ + # If no C compiler was specified, use CC. + LTCC=${LTCC-"$CC"} + ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ + # Allow CC to be a program name with arguments. + compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_compiler_boilerplate=`cat conftest.err` + $rm conftest* + + ac_outfile=conftest.$ac_objext +-printf "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err + _lt_linker_boilerplate=`cat conftest.err` + $rm conftest* + +@@ -20543,7 +20332,7 @@ + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. +- for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ ++ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ +@@ -20585,6 +20374,7 @@ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ ++ fix_srcfile_path_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + +@@ -20661,6 +20451,9 @@ + # A C compiler. + LTCC=$lt_LTCC + ++# LTCC compiler flags. ++LTCFLAGS=$lt_LTCFLAGS ++ + # A language-specific compiler. + CC=$lt_compiler_RC + +@@ -20902,7 +20695,7 @@ + sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + + # Fix the shell variable \$srcfile for the compiler. +-fix_srcfile_path="$fix_srcfile_path_RC" ++fix_srcfile_path=$lt_fix_srcfile_path + + # Set to yes if exported symbols are required. + always_export_symbols=$always_export_symbols_RC +@@ -21006,8 +20799,8 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_LEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21020,253 +20813,182 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LEX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + LEX=$ac_cv_prog_LEX + if test -n "$LEX"; then +- echo "$as_me:$LINENO: result: $LEX" >&5 +-echo "${ECHO_T}$LEX" >&6 ++ { echo "$as_me:$LINENO: result: $LEX" >&5 ++echo "${ECHO_T}$LEX" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$LEX" && break + done + test -n "$LEX" || LEX=":" + +-if test -z "$LEXLIB" +-then +- echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 +-echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 +-if test "${ac_cv_lib_fl_yywrap+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lfl $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +- +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" ++if test "x$LEX" != "x:"; then ++ cat >conftest.l <<_ACEOF ++%% ++a { ECHO; } ++b { REJECT; } ++c { yymore (); } ++d { yyless (1); } ++e { yyless (input () != 0); } ++f { unput (yytext[0]); } ++. { BEGIN INITIAL; } ++%% ++#ifdef YYTEXT_POINTER ++extern char *yytext; + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char yywrap (); + int +-main () ++main (void) + { +-yywrap (); +- ; +- return 0; ++ return ! yylex () + ! yywrap (); + } + _ACEOF +-rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++{ (ac_try="$LEX conftest.l" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$LEX conftest.l") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_fl_yywrap=yes ++ (exit $ac_status); } ++{ echo "$as_me:$LINENO: checking lex output file root" >&5 ++echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; } ++if test "${ac_cv_prog_lex_root+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_fl_yywrap=no ++if test -f lex.yy.c; then ++ ac_cv_prog_lex_root=lex.yy ++elif test -f lexyy.c; then ++ ac_cv_prog_lex_root=lexyy ++else ++ { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 ++echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} ++ { (exit 1); exit 1; }; } + fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 +-echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 +-if test $ac_cv_lib_fl_yywrap = yes; then +- LEXLIB="-lfl" +-else +- echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 +-echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 +-if test "${ac_cv_lib_l_yywrap+set}" = set; then ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 ++echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; } ++LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root ++ ++if test -z "${LEXLIB+set}"; then ++ { echo "$as_me:$LINENO: checking lex library" >&5 ++echo $ECHO_N "checking lex library... $ECHO_C" >&6; } ++if test "${ac_cv_lib_lex+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-ll $LIBS" +-cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ +-char yywrap (); +-int +-main () +-{ +-yywrap (); +- ; +- return 0; +-} ++ ac_save_LIBS=$LIBS ++ ac_cv_lib_lex='none needed' ++ for ac_lib in '' -lfl -ll; do ++ LIBS="$ac_lib $ac_save_LIBS" ++ cat >conftest.$ac_ext <<_ACEOF ++`cat $LEX_OUTPUT_ROOT.c` + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_lib_l_yywrap=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ ac_cv_lib_lex=$ac_lib + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_l_yywrap=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 +-echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 +-if test $ac_cv_lib_l_yywrap = yes; then +- LEXLIB="-ll" +-fi + + fi + +-fi ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext ++ test "$ac_cv_lib_lex" != 'none needed' && break ++ done ++ LIBS=$ac_save_LIBS + +-if test "x$LEX" != "x:"; then +- echo "$as_me:$LINENO: checking lex output file root" >&5 +-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 +-if test "${ac_cv_prog_lex_root+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- # The minimal lex program is just a single line: %%. But some broken lexes +-# (Solaris, I think it was) want two %% lines, so accommodate them. +-cat >conftest.l <<_ACEOF +-%% +-%% +-_ACEOF +-{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5 +- (eval $LEX conftest.l) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } +-if test -f lex.yy.c; then +- ac_cv_prog_lex_root=lex.yy +-elif test -f lexyy.c; then +- ac_cv_prog_lex_root=lexyy +-else +- { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} +- { (exit 1); exit 1; }; } + fi ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 ++echo "${ECHO_T}$ac_cv_lib_lex" >&6; } ++ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 +-rm -f conftest.l +-LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +-echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 ++ ++{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 ++echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; } + if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + # POSIX says lex can declare yytext either as a pointer or an array; the +-# default is implementation-dependent. Figure out which it is, since ++# default is implementation-dependent. Figure out which it is, since + # not all implementations provide the %pointer and %array declarations. + ac_cv_prog_lex_yytext_pointer=no +-echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c + ac_save_LIBS=$LIBS +-LIBS="$LIBS $LEXLIB" ++LIBS="$LEXLIB $ac_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF ++#define YYTEXT_POINTER 1 + `cat $LEX_OUTPUT_ROOT.c` + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_prog_lex_yytext_pointer=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_save_LIBS +-rm -f "${LEX_OUTPUT_ROOT}.c" + + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 +-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 ++echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; } + if test $ac_cv_prog_lex_yytext_pointer = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -21274,6 +20996,7 @@ + _ACEOF + + fi ++rm -f conftest.l $LEX_OUTPUT_ROOT.c + + fi + if test "$LEX" = :; then +@@ -21283,8 +21006,8 @@ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21297,25 +21020,27 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + YACC=$ac_cv_prog_YACC + if test -n "$YACC"; then +- echo "$as_me:$LINENO: result: $YACC" >&5 +-echo "${ECHO_T}$YACC" >&6 ++ { echo "$as_me:$LINENO: result: $YACC" >&5 ++echo "${ECHO_T}$YACC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$YACC" && break + done + +@@ -21339,31 +21064,17 @@ + + + +- +- MKINSTALLDIRS= +- if test -n "$ac_aux_dir"; then +- case "$ac_aux_dir" in +- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; +- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; +- esac +- fi +- if test -z "$MKINSTALLDIRS"; then +- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" +- fi +- +- +- +- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 +- # Check whether --enable-nls or --disable-nls was given. ++ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5 ++echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6; } ++ # Check whether --enable-nls was given. + if test "${enable_nls+set}" = set; then +- enableval="$enable_nls" +- USE_NLS=$enableval ++ enableval=$enable_nls; USE_NLS=$enableval + else + USE_NLS=yes +-fi; +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 ++fi ++ ++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6; } + + + +@@ -21400,8 +21111,8 @@ + + # Extract the first word of "msgfmt", so it can be a program name with args. + set dummy msgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21432,17 +21143,17 @@ + fi + MSGFMT="$ac_cv_path_MSGFMT" + if test "$MSGFMT" != ":"; then +- echo "$as_me:$LINENO: result: $MSGFMT" >&5 +-echo "${ECHO_T}$MSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $MSGFMT" >&5 ++echo "${ECHO_T}$MSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. + set dummy gmsgfmt; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21457,30 +21168,42 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; + esac + fi + GMSGFMT=$ac_cv_path_GMSGFMT +- + if test -n "$GMSGFMT"; then +- echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +-echo "${ECHO_T}$GMSGFMT" >&6 ++ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5 ++echo "${ECHO_T}$GMSGFMT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + + ++ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; ++ *) MSGFMT_015=$MSGFMT ;; ++ esac ++ ++ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; ++ *) GMSGFMT_015=$GMSGFMT ;; ++ esac ++ ++ ++ + # Prepare PATH_SEPARATOR. + # The user is always right. + if test "${PATH_SEPARATOR+set}" != set; then +@@ -21511,8 +21234,8 @@ + + # Extract the first word of "xgettext", so it can be a program name with args. + set dummy xgettext; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21543,15 +21266,21 @@ + fi + XGETTEXT="$ac_cv_path_XGETTEXT" + if test "$XGETTEXT" != ":"; then +- echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +-echo "${ECHO_T}$XGETTEXT" >&6 ++ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5 ++echo "${ECHO_T}$XGETTEXT" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + rm -f messages.po + ++ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in ++ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; ++ *) XGETTEXT_015=$XGETTEXT ;; ++ esac ++ ++ + + # Prepare PATH_SEPARATOR. + # The user is always right. +@@ -21583,8 +21312,8 @@ + + # Extract the first word of "msgmerge", so it can be a program name with args. + set dummy msgmerge; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_path_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21614,39 +21343,18 @@ + fi + MSGMERGE="$ac_cv_path_MSGMERGE" + if test "$MSGMERGE" != ":"; then +- echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +-echo "${ECHO_T}$MSGMERGE" >&6 ++ { echo "$as_me:$LINENO: result: $MSGMERGE" >&5 ++echo "${ECHO_T}$MSGMERGE" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + +- if test "$GMSGFMT" != ":"; then +- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && +- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` +- echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +-echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 +- GMSGFMT=":" +- fi +- fi ++ test -n "$localedir" || localedir='${datadir}/locale' + +- if test "$XGETTEXT" != ":"; then +- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && +- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then +- : ; +- else +- echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +-echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 +- XGETTEXT=":" +- fi +- rm -f messages.po +- fi + +- ac_config_commands="$ac_config_commands default-1" ++ ac_config_commands="$ac_config_commands po-directories" + + + +@@ -21666,13 +21374,13 @@ + prefix="$acl_save_prefix" + + +-# Check whether --with-gnu-ld or --without-gnu-ld was given. ++# Check whether --with-gnu-ld was given. + if test "${with_gnu_ld+set}" = set; then +- withval="$with_gnu_ld" +- test "$withval" = no || with_gnu_ld=yes ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + else + with_gnu_ld=no +-fi; ++fi ++ + # Prepare PATH_SEPARATOR. + # The user is always right. + if test "${PATH_SEPARATOR+set}" != set; then +@@ -21689,8 +21397,8 @@ + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. +- echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5 ++echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw +@@ -21719,11 +21427,11 @@ + ;; + esac + elif test "$with_gnu_ld" = yes; then +- echo "$as_me:$LINENO: checking for GNU ld" >&5 +-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for GNU ld" >&5 ++echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } + else +- echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ++echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } + fi + if test "${acl_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +@@ -21753,17 +21461,17 @@ + + LD="$acl_cv_path_LD" + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 + echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ++echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } + if test "${acl_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21775,15 +21483,15 @@ + acl_cv_prog_gnu_ld=no ;; + esac + fi +-echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 +-echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 ++{ echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 ++echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$acl_cv_prog_gnu_ld + + + + +- echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +-echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for shared library run path origin" >&5 ++echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; } + if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -21795,8 +21503,8 @@ + acl_cv_rpath=done + + fi +-echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +-echo "${ECHO_T}$acl_cv_rpath" >&6 ++{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 ++echo "${ECHO_T}$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" +@@ -21804,13 +21512,33 @@ + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" +- # Check whether --enable-rpath or --disable-rpath was given. ++ # Check whether --enable-rpath was given. + if test "${enable_rpath+set}" = set; then +- enableval="$enable_rpath" +- : ++ enableval=$enable_rpath; : + else + enable_rpath=yes +-fi; ++fi ++ ++ ++ ++ acl_libdirstem=lib ++ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` ++ if test -n "$searchpath"; then ++ acl_save_IFS="${IFS= }"; IFS=":" ++ for searchdir in $searchpath; do ++ if test -d "$searchdir"; then ++ case "$searchdir" in ++ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; ++ *) searchdir=`cd "$searchdir" && pwd` ++ case "$searchdir" in ++ */lib64 ) acl_libdirstem=lib64 ;; ++ esac ;; ++ esac ++ fi ++ done ++ IFS="$acl_save_IFS" ++ fi ++ + + + +@@ -21832,10 +21560,9 @@ + prefix="$acl_save_prefix" + + +-# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. ++# Check whether --with-libiconv-prefix was given. + if test "${with_libiconv_prefix+set}" = set; then +- withval="$with_libiconv_prefix" +- ++ withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else +@@ -21854,11 +21581,12 @@ + + else + additional_includedir="$withval/include" +- additional_libdir="$withval/lib" ++ additional_libdir="$withval/$acl_libdirstem" + fi + fi + +-fi; ++fi ++ + LIBICONV= + LTLIBICONV= + INCICONV= +@@ -21896,9 +21624,16 @@ + found_so= + found_a= + if test $use_additional = yes; then +- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then ++ if test -n "$shlibext" \ ++ && { test -f "$additional_libdir/lib$name.$shlibext" \ ++ || { test "$shlibext" = dll \ ++ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then + found_dir="$additional_libdir" +- found_so="$additional_libdir/lib$name.$shlibext" ++ if test -f "$additional_libdir/lib$name.$shlibext"; then ++ found_so="$additional_libdir/lib$name.$shlibext" ++ else ++ found_so="$additional_libdir/lib$name.dll.a" ++ fi + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi +@@ -21926,9 +21661,16 @@ + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` +- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then ++ if test -n "$shlibext" \ ++ && { test -f "$dir/lib$name.$shlibext" \ ++ || { test "$shlibext" = dll \ ++ && test -f "$dir/lib$name.dll.a"; }; }; then + found_dir="$dir" +- found_so="$dir/lib$name.$shlibext" ++ if test -f "$dir/lib$name.$shlibext"; then ++ found_so="$dir/lib$name.$shlibext" ++ else ++ found_so="$dir/lib$name.dll.a" ++ fi + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi +@@ -21951,7 +21693,7 @@ + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then +- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then ++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= +@@ -22016,8 +21758,8 @@ + fi + additional_includedir= + case "$found_dir" in +- */lib | */lib/) +- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` ++ */$acl_libdirstem | */$acl_libdirstem/) ++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + additional_includedir="$basedir/include" + ;; + esac +@@ -22066,9 +21808,9 @@ + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` +- if test "X$additional_libdir" != "X/usr/lib"; then ++ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= +- if test "X$additional_libdir" = "X/usr/local/lib"; then ++ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; +@@ -22211,22 +21953,27 @@ + + + +- echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 +-echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6 ++ ++ ++ ++ ++ ++ ++ ++ { echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 ++echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6; } + if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- gt_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" +- gt_save_LIBS="$LIBS" +- LIBS="$LIBS -framework CoreFoundation" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + int + main () + { +@@ -22236,41 +21983,37 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_CFPreferencesCopyAppValue=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_CFPreferencesCopyAppValue=no ++ gt_cv_func_CFPreferencesCopyAppValue=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +- CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +-echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 ++echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -22278,22 +22021,20 @@ + _ACEOF + + fi +- echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 +-echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 ++echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6; } + if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- gt_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" +- gt_save_LIBS="$LIBS" +- LIBS="$LIBS -framework CoreFoundation" ++ gt_save_LIBS="$LIBS" ++ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + int + main () + { +@@ -22303,41 +22044,37 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + gt_cv_func_CFLocaleCopyCurrent=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_CFLocaleCopyCurrent=no ++ gt_cv_func_CFLocaleCopyCurrent=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +- CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +-echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6 ++{ echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 ++echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -22353,36 +22090,43 @@ + + + +- echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +-echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 +- # Check whether --enable-nls or --disable-nls was given. +-if test "${enable_nls+set}" = set; then +- enableval="$enable_nls" +- USE_NLS=$enableval +-else +- USE_NLS=yes +-fi; +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 +- +- + + + LIBINTL= + LTLIBINTL= + POSUB= + ++ case " $gt_needs " in ++ *" need-formatstring-macros "*) gt_api_version=3 ;; ++ *" need-ngettext "*) gt_api_version=2 ;; ++ *) gt_api_version=1 ;; ++ esac ++ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" ++ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" ++ + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + ++ if test $gt_api_version -ge 3; then ++ gt_revision_test_code=' ++#ifndef __GNU_GETTEXT_SUPPORTED_REVISION ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) ++#endif ++typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ++' ++ else ++ gt_revision_test_code= ++ fi ++ if test $gt_api_version -ge 2; then ++ gt_expression_test_code=' + * ngettext ("", "", 0)' ++ else ++ gt_expression_test_code= ++ fi + +- +- +- +- echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +-echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +-if test "${gt_cv_func_gnugettext1_libc+set}" = set; then ++ { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 ++echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; } ++if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -22392,53 +22136,52 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++$gt_revision_test_code + extern int _nl_msg_cat_cntr; + extern int *_nl_domain_bindings; + int + main () + { + bindtextdomain ("", ""); +-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- gt_cv_func_gnugettext1_libc=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$gt_func_gnugettext_libc=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gnugettext1_libc=no ++ eval "$gt_func_gnugettext_libc=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 +-echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 ++ac_res=`eval echo '${'$gt_func_gnugettext_libc'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + +- if test "$gt_cv_func_gnugettext1_libc" != "yes"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + + + +@@ -22469,8 +22212,8 @@ + done + + +- echo "$as_me:$LINENO: checking for iconv" >&5 +-echo $ECHO_N "checking for iconv... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for iconv" >&5 ++echo $ECHO_N "checking for iconv... $ECHO_C" >&6; } + if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -22496,34 +22239,32 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + am_cv_func_iconv=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" +@@ -22547,42 +22288,40 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + + fi +-echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +-echo "${ECHO_T}$am_cv_func_iconv" >&6 ++{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 ++echo "${ECHO_T}$am_cv_func_iconv" >&6; } + if test "$am_cv_func_iconv" = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -22591,10 +22330,10 @@ + + fi + if test "$am_cv_lib_iconv" = yes; then +- echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +-echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 +- echo "$as_me:$LINENO: result: $LIBICONV" >&5 +-echo "${ECHO_T}$LIBICONV" >&6 ++ { echo "$as_me:$LINENO: checking how to link with libiconv" >&5 ++echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; } ++ { echo "$as_me:$LINENO: result: $LIBICONV" >&5 ++echo "${ECHO_T}$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= +@@ -22606,6 +22345,7 @@ + + + ++ + use_additional=yes + + acl_save_prefix="$prefix" +@@ -22620,10 +22360,9 @@ + prefix="$acl_save_prefix" + + +-# Check whether --with-libintl-prefix or --without-libintl-prefix was given. ++# Check whether --with-libintl-prefix was given. + if test "${with_libintl_prefix+set}" = set; then +- withval="$with_libintl_prefix" +- ++ withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else +@@ -22642,11 +22381,12 @@ + + else + additional_includedir="$withval/include" +- additional_libdir="$withval/lib" ++ additional_libdir="$withval/$acl_libdirstem" + fi + fi + +-fi; ++fi ++ + LIBINTL= + LTLIBINTL= + INCINTL= +@@ -22684,9 +22424,16 @@ + found_so= + found_a= + if test $use_additional = yes; then +- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then ++ if test -n "$shlibext" \ ++ && { test -f "$additional_libdir/lib$name.$shlibext" \ ++ || { test "$shlibext" = dll \ ++ && test -f "$additional_libdir/lib$name.dll.a"; }; }; then + found_dir="$additional_libdir" +- found_so="$additional_libdir/lib$name.$shlibext" ++ if test -f "$additional_libdir/lib$name.$shlibext"; then ++ found_so="$additional_libdir/lib$name.$shlibext" ++ else ++ found_so="$additional_libdir/lib$name.dll.a" ++ fi + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi +@@ -22714,9 +22461,16 @@ + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` +- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then ++ if test -n "$shlibext" \ ++ && { test -f "$dir/lib$name.$shlibext" \ ++ || { test "$shlibext" = dll \ ++ && test -f "$dir/lib$name.dll.a"; }; }; then + found_dir="$dir" +- found_so="$dir/lib$name.$shlibext" ++ if test -f "$dir/lib$name.$shlibext"; then ++ found_so="$dir/lib$name.$shlibext" ++ else ++ found_so="$dir/lib$name.dll.a" ++ fi + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi +@@ -22739,7 +22493,7 @@ + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then +- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then ++ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= +@@ -22804,8 +22558,8 @@ + fi + additional_includedir= + case "$found_dir" in +- */lib | */lib/) +- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` ++ */$acl_libdirstem | */$acl_libdirstem/) ++ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + additional_includedir="$basedir/include" + ;; + esac +@@ -22854,9 +22608,9 @@ + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` +- if test "X$additional_libdir" != "X/usr/lib"; then ++ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= +- if test "X$additional_libdir" = "X/usr/local/lib"; then ++ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; +@@ -22982,9 +22736,9 @@ + done + fi + +- echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +-echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +-if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then ++ { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 ++echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; } ++if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + gt_save_CPPFLAGS="$CPPFLAGS" +@@ -22998,6 +22752,7 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++$gt_revision_test_code + extern int _nl_msg_cat_cntr; + extern + #ifdef __cplusplus +@@ -23008,43 +22763,40 @@ + main () + { + bindtextdomain ("", ""); +-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") ++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- gt_cv_func_gnugettext1_libintl=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ eval "$gt_func_gnugettext_libintl=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-gt_cv_func_gnugettext1_libintl=no ++ eval "$gt_func_gnugettext_libintl=no" + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +- if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -23053,6 +22805,7 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++$gt_revision_test_code + extern int _nl_msg_cat_cntr; + extern + #ifdef __cplusplus +@@ -23063,54 +22816,53 @@ + main () + { + bindtextdomain ("", ""); +-return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") ++return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" +- gt_cv_func_gnugettext1_libintl=yes ++ eval "$gt_func_gnugettext_libintl=yes" + + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" + fi +-echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 +-echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 ++ac_res=`eval echo '${'$gt_func_gnugettext_libintl'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + fi + +- if test "$gt_cv_func_gnugettext1_libc" = "yes" \ +- || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ ++ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ ++ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes +@@ -23142,15 +22894,15 @@ + fi + fi + +- echo "$as_me:$LINENO: checking whether to use NLS" >&5 +-echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6 +- echo "$as_me:$LINENO: result: $USE_NLS" >&5 +-echo "${ECHO_T}$USE_NLS" >&6 ++ { echo "$as_me:$LINENO: checking whether to use NLS" >&5 ++echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; } ++ { echo "$as_me:$LINENO: result: $USE_NLS" >&5 ++echo "${ECHO_T}$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then +- echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +-echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 ++echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then +- if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" +@@ -23158,18 +22910,18 @@ + else + gt_source="included intl directory" + fi +- echo "$as_me:$LINENO: result: $gt_source" >&5 +-echo "${ECHO_T}$gt_source" >&6 ++ { echo "$as_me:$LINENO: result: $gt_source" >&5 ++echo "${ECHO_T}$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then +- if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then +- echo "$as_me:$LINENO: checking how to link with libintl" >&5 +-echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 +- echo "$as_me:$LINENO: result: $LIBINTL" >&5 +-echo "${ECHO_T}$LIBINTL" >&6 ++ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then ++ { echo "$as_me:$LINENO: checking how to link with libintl" >&5 ++echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; } ++ { echo "$as_me:$LINENO: result: $LIBINTL" >&5 ++echo "${ECHO_T}$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= +@@ -23227,8 +22979,8 @@ + + + pkg_failed=no +-echo "$as_me:$LINENO: checking for LIBESD" >&5 +-echo $ECHO_N "checking for LIBESD... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for LIBESD" >&5 ++echo $ECHO_N "checking for LIBESD... $ECHO_C" >&6; } + + if test -n "$PKG_CONFIG"; then + if test -n "$LIBESD_CFLAGS"; then +@@ -23284,14 +23036,16 @@ + # Put the nasty error message in config.log where it belongs + echo "$LIBESD_PKG_ERRORS" >&5 + +- HAVE_ESD="no" ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ HAVE_ESD="no" + elif test $pkg_failed = untried; then + HAVE_ESD="no" + else + LIBESD_CFLAGS=$pkg_cv_LIBESD_CFLAGS + LIBESD_LIBS=$pkg_cv_LIBESD_LIBS +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + HAVE_ESD="yes" + fi + +@@ -23304,8 +23058,8 @@ + + + pkg_failed=no +-echo "$as_me:$LINENO: checking for LIBJACK" >&5 +-echo $ECHO_N "checking for LIBJACK... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for LIBJACK" >&5 ++echo $ECHO_N "checking for LIBJACK... $ECHO_C" >&6; } + + if test -n "$PKG_CONFIG"; then + if test -n "$LIBJACK_CFLAGS"; then +@@ -23361,14 +23115,16 @@ + # Put the nasty error message in config.log where it belongs + echo "$LIBJACK_PKG_ERRORS" >&5 + +- HAVE_JACK="no" ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ HAVE_JACK="no" + elif test $pkg_failed = untried; then + HAVE_JACK="no" + else + LIBJACK_CFLAGS=$pkg_cv_LIBJACK_CFLAGS + LIBJACK_LIBS=$pkg_cv_LIBJACK_LIBS +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + HAVE_JACK="yes" + fi + if test "$HAVE_JACK" = "yes"; then +@@ -23384,19 +23140,19 @@ + build_actor_plugins="" + build_morph_plugins="" + +-# Check whether --enable-gdkpixbuf-plugin or --disable-gdkpixbuf-plugin was given. ++# Check whether --enable-gdkpixbuf-plugin was given. + if test "${enable_gdkpixbuf_plugin+set}" = set; then +- enableval="$enable_gdkpixbuf_plugin" +- ENABLE_PLUGIN_GDKPIXBUF=$enableval ++ enableval=$enable_gdkpixbuf_plugin; ENABLE_PLUGIN_GDKPIXBUF=$enableval + else + ENABLE_PLUGIN_GDKPIXBUF=yes +-fi; ++fi ++ + + if test "$ENABLE_PLUGIN_GDKPIXBUF" = "yes"; then + + pkg_failed=no +-echo "$as_me:$LINENO: checking for GTK" >&5 +-echo $ECHO_N "checking for GTK... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for GTK" >&5 ++echo $ECHO_N "checking for GTK... $ECHO_C" >&6; } + + if test -n "$PKG_CONFIG"; then + if test -n "$GTK_CFLAGS"; then +@@ -23452,14 +23208,16 @@ + # Put the nasty error message in config.log where it belongs + echo "$GTK_PKG_ERRORS" >&5 + +- HAVE_GTK="no" ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ HAVE_GTK="no" + elif test $pkg_failed = untried; then + HAVE_GTK="no" + else + GTK_CFLAGS=$pkg_cv_GTK_CFLAGS + GTK_LIBS=$pkg_cv_GTK_LIBS +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + HAVE_GTK="yes" + fi + +@@ -23477,19 +23235,19 @@ + fi + fi + +-# Check whether --enable-gstreamer-plugin or --disable-gstreamer-plugin was given. ++# Check whether --enable-gstreamer-plugin was given. + if test "${enable_gstreamer_plugin+set}" = set; then +- enableval="$enable_gstreamer_plugin" +- ENABLE_GSTREAMER_PLUGIN=$enableval ++ enableval=$enable_gstreamer_plugin; ENABLE_GSTREAMER_PLUGIN=$enableval + else + ENABLE_GSTREAMER_PLUGIN=yes +-fi; ++fi ++ + + if test "$ENABLE_GSTREAMER_PLUGIN" = "yes"; then + + pkg_failed=no +-echo "$as_me:$LINENO: checking for GSTREAMER" >&5 +-echo $ECHO_N "checking for GSTREAMER... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for GSTREAMER" >&5 ++echo $ECHO_N "checking for GSTREAMER... $ECHO_C" >&6; } + + if test -n "$PKG_CONFIG"; then + if test -n "$GSTREAMER_CFLAGS"; then +@@ -23545,14 +23303,16 @@ + # Put the nasty error message in config.log where it belongs + echo "$GSTREAMER_PKG_ERRORS" >&5 + +- HAVE_GSTREAMER="no" ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ HAVE_GSTREAMER="no" + elif test $pkg_failed = untried; then + HAVE_GSTREAMER="no" + else + GSTREAMER_CFLAGS=$pkg_cv_GSTREAMER_CFLAGS + GSTREAMER_LIBS=$pkg_cv_GSTREAMER_LIBS +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + HAVE_GSTREAMER="yes" + fi + +@@ -23568,44 +23328,49 @@ + fi + fi + +-echo "$as_me:$LINENO: checking for X" >&5 +-echo $ECHO_N "checking for X... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for X" >&5 ++echo $ECHO_N "checking for X... $ECHO_C" >&6; } + + +-# Check whether --with-x or --without-x was given. ++# Check whether --with-x was given. + if test "${with_x+set}" = set; then +- withval="$with_x" ++ withval=$with_x; ++fi + +-fi; + # $have_x is `yes', `no', `disabled', or empty when we do not yet know. + if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled + else +- if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then +- # Both variables are already set. +- have_x=yes +- else +- if test "${ac_cv_have_x+set}" = set; then ++ case $x_includes,$x_libraries in #( ++ *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 ++echo "$as_me: error: Cannot use X directory names containing '" >&2;} ++ { (exit 1); exit 1; }; };; #( ++ *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + # One or both of the vars are not set, and there is no cached value. + ac_x_includes=no ac_x_libraries=no +-rm -fr conftest.dir ++rm -f -r conftest.dir + if mkdir conftest.dir; then + cd conftest.dir +- # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'_ACEOF' +-acfindx: +- @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' ++incroot: ++ @echo incroot='${INCROOT}' ++usrlibdir: ++ @echo usrlibdir='${USRLIBDIR}' ++libdir: ++ @echo libdir='${LIBDIR}' + _ACEOF +- if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then ++ if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. +- eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` ++ for ac_var in incroot usrlibdir libdir; do ++ eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" ++ done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do +- if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && +- test -f $ac_im_libdir/libX11.$ac_extension; then ++ if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && ++ test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done +@@ -23613,7 +23378,7 @@ + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in +- /usr/include) ;; ++ /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in +@@ -23622,7 +23387,7 @@ + esac + fi + cd .. +- rm -fr conftest.dir ++ rm -f -r conftest.dir + fi + + # Standard set of common directories for X headers. +@@ -23663,7 +23428,7 @@ + /usr/openwin/share/include' + + if test "$ac_x_includes" = no; then +- # Guess where to find include files, by looking for Intrinsic.h. ++ # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -23671,26 +23436,24 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # We can compile using X headers with no special include directory. + ac_x_includes= + else +@@ -23698,12 +23461,13 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do +- if test -r "$ac_dir/X11/Intrinsic.h"; then ++ if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi + done + fi ++ + rm -f conftest.err conftest.$ac_ext + fi # $ac_x_includes = no + +@@ -23712,44 +23476,40 @@ + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS +- LIBS="-lXt $LIBS" ++ LIBS="-lX11 $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + int + main () + { +-XtMalloc (0) ++XrmInitialize () + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + LIBS=$ac_save_LIBS + # We can link X programs with no special library path. + ac_x_libraries= +@@ -23757,49 +23517,54 @@ + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-LIBS=$ac_save_LIBS ++ LIBS=$ac_save_LIBS + for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` + do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do +- if test -r $ac_dir/libXt.$ac_extension; then ++ if test -r "$ac_dir/libX11.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done + done + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi # $ac_x_libraries = no + +-if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then +- # Didn't find X anywhere. Cache the known absence of X. +- ac_cv_have_x="have_x=no" +-else +- # Record where we found X for the cache. +- ac_cv_have_x="have_x=yes \ +- ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +-fi ++case $ac_x_includes,$ac_x_libraries in #( ++ no,* | *,no | *\'*) ++ # Didn't find X, or a directory has "'" in its name. ++ ac_cv_have_x="have_x=no";; #( ++ *) ++ # Record where we found X for the cache. ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$ac_x_includes'\ ++ ac_x_libraries='$ac_x_libraries'" ++esac + fi +- +- fi ++;; #( ++ *) have_x=yes;; ++ esac + eval "$ac_cv_have_x" + fi # $with_x != no + + if test "$have_x" != yes; then +- echo "$as_me:$LINENO: result: $have_x" >&5 +-echo "${ECHO_T}$have_x" >&6 ++ { echo "$as_me:$LINENO: result: $have_x" >&5 ++echo "${ECHO_T}$have_x" >&6; } + no_x=yes + else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. +- ac_cv_have_x="have_x=yes \ +- ac_x_includes=$x_includes ac_x_libraries=$x_libraries" +- echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 ++ ac_cv_have_x="have_x=yes\ ++ ac_x_includes='$x_includes'\ ++ ac_x_libraries='$x_libraries'" ++ { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 ++echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } + fi + + if test "$no_x" = yes; then +@@ -23820,12 +23585,12 @@ + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . +- case `(uname -sr) 2>/dev/null` in +- "SunOS 5"*) +- echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 +-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 +- ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" +- cat >conftest.$ac_ext <<_ACEOF ++ { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 ++echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } ++ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ++ ac_xsave_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -23841,43 +23606,32 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_R_nospace=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } ++ X_LIBS="$X_LIBS -R$x_libraries" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_R_nospace=no +-fi +-rm -f conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +- if test $ac_R_nospace = yes; then +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +- X_LIBS="$X_LIBS -R$x_libraries" +- else + LIBS="$ac_xsave_LIBS -R $x_libraries" +- cat >conftest.$ac_ext <<_ACEOF ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -23893,47 +23647,42 @@ + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_R_space=yes ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++ X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_R_space=no ++ { echo "$as_me:$LINENO: result: neither works" >&5 ++echo "${ECHO_T}neither works" >&6; } ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ ++ conftest$ac_exeext conftest.$ac_ext + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +- if test $ac_R_space = yes; then +- echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 +- X_LIBS="$X_LIBS -R $x_libraries" +- else +- echo "$as_me:$LINENO: result: neither works" >&5 +-echo "${ECHO_T}neither works" >&6 +- fi +- fi +- LIBS=$ac_xsave_LIBS +- esac ++ ac_c_werror_flag=$ac_xsave_c_werror_flag ++ LIBS=$ac_xsave_LIBS + fi + + # Check for system-dependent libraries X programs must link with. +@@ -23954,50 +23703,46 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char XOpenDisplay (); + int + main () + { +-XOpenDisplay (); ++return XOpenDisplay (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + : + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 +-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } + if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24010,63 +23755,60 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dnet_ntoa (); + int + main () + { +-dnet_ntoa (); ++return dnet_ntoa (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_dnet_dnet_ntoa=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dnet_dnet_ntoa=no ++ ac_cv_lib_dnet_dnet_ntoa=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } + if test $ac_cv_lib_dnet_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" + fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then +- echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 +-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 ++echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } + if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24079,63 +23821,61 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char dnet_ntoa (); + int + main () + { +-dnet_ntoa (); ++return dnet_ntoa (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_dnet_stub_dnet_ntoa=no ++ ac_cv_lib_dnet_stub_dnet_ntoa=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 ++echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } + if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" + fi + + fi + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + +@@ -24147,8 +23887,8 @@ + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. +- echo "$as_me:$LINENO: checking for gethostbyname" >&5 +-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gethostbyname" >&5 ++echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } + if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24175,72 +23915,63 @@ + + #undef gethostbyname + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char gethostbyname (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) ++#if defined __stub_gethostbyname || defined __stub___gethostbyname + choke me +-#else +-char (*f) () = gethostbyname; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != gethostbyname; ++return gethostbyname (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_gethostbyname=no ++ ac_cv_func_gethostbyname=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } + + if test $ac_cv_func_gethostbyname = no; then +- echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 ++echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } + if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24253,63 +23984,60 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char gethostbyname (); + int + main () + { +-gethostbyname (); ++return gethostbyname (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_nsl_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_nsl_gethostbyname=no ++ ac_cv_lib_nsl_gethostbyname=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } + if test $ac_cv_lib_nsl_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" + fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then +- echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 +-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 ++echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } + if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24322,56 +24050,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char gethostbyname (); + int + main () + { +-gethostbyname (); ++return gethostbyname (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_bsd_gethostbyname=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_bsd_gethostbyname=no ++ ac_cv_lib_bsd_gethostbyname=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 +-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 ++echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } + if test $ac_cv_lib_bsd_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" + fi +@@ -24386,8 +24111,8 @@ + # variants that don't use the name server (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. +- echo "$as_me:$LINENO: checking for connect" >&5 +-echo $ECHO_N "checking for connect... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for connect" >&5 ++echo $ECHO_N "checking for connect... $ECHO_C" >&6; } + if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24414,72 +24139,63 @@ + + #undef connect + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char connect (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_connect) || defined (__stub___connect) ++#if defined __stub_connect || defined __stub___connect + choke me +-#else +-char (*f) () = connect; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != connect; ++return connect (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_connect=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_connect=no ++ ac_cv_func_connect=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +-echo "${ECHO_T}$ac_cv_func_connect" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 ++echo "${ECHO_T}$ac_cv_func_connect" >&6; } + + if test $ac_cv_func_connect = no; then +- echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 ++echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } + if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24492,56 +24208,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char connect (); + int + main () + { +-connect (); ++return connect (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_socket_connect=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_socket_connect=no ++ ac_cv_lib_socket_connect=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 +-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 ++echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } + if test $ac_cv_lib_socket_connect = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" + fi +@@ -24549,8 +24262,8 @@ + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. +- echo "$as_me:$LINENO: checking for remove" >&5 +-echo $ECHO_N "checking for remove... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for remove" >&5 ++echo $ECHO_N "checking for remove... $ECHO_C" >&6; } + if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24577,72 +24290,63 @@ + + #undef remove + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char remove (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_remove) || defined (__stub___remove) ++#if defined __stub_remove || defined __stub___remove + choke me +-#else +-char (*f) () = remove; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != remove; ++return remove (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_remove=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_remove=no ++ ac_cv_func_remove=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 +-echo "${ECHO_T}$ac_cv_func_remove" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 ++echo "${ECHO_T}$ac_cv_func_remove" >&6; } + + if test $ac_cv_func_remove = no; then +- echo "$as_me:$LINENO: checking for remove in -lposix" >&5 +-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 ++echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } + if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24655,56 +24359,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char remove (); + int + main () + { +-remove (); ++return remove (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_posix_remove=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_posix_remove=no ++ ac_cv_lib_posix_remove=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 +-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 ++echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } + if test $ac_cv_lib_posix_remove = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" + fi +@@ -24712,8 +24413,8 @@ + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. +- echo "$as_me:$LINENO: checking for shmat" >&5 +-echo $ECHO_N "checking for shmat... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for shmat" >&5 ++echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } + if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24740,72 +24441,63 @@ + + #undef shmat + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" +-{ + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char shmat (); + /* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +-#if defined (__stub_shmat) || defined (__stub___shmat) ++#if defined __stub_shmat || defined __stub___shmat + choke me +-#else +-char (*f) () = shmat; +-#endif +-#ifdef __cplusplus +-} + #endif + + int + main () + { +-return f != shmat; ++return shmat (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_func_shmat=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_func_shmat=no ++ ac_cv_func_shmat=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 +-echo "${ECHO_T}$ac_cv_func_shmat" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 ++echo "${ECHO_T}$ac_cv_func_shmat" >&6; } + + if test $ac_cv_func_shmat = no; then +- echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 +-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 ++echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } + if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24818,56 +24510,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char shmat (); + int + main () + { +-shmat (); ++return shmat (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_ipc_shmat=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_ipc_shmat=no ++ ac_cv_lib_ipc_shmat=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 +-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 ++echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } + if test $ac_cv_lib_ipc_shmat = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" + fi +@@ -24884,8 +24573,8 @@ + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry +- echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 +-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 ++echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } + if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -24898,56 +24587,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char IceConnectionNumber (); + int + main () + { +-IceConnectionNumber (); ++return IceConnectionNumber (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_ICE_IceConnectionNumber=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_ICE_IceConnectionNumber=no ++ ac_cv_lib_ICE_IceConnectionNumber=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 ++echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } + if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" + fi +@@ -24956,9 +24642,7 @@ + + fi + +- +- +-if test "$have_x" = "yes"; then ++ if test "$have_x" = "yes"; then + HAVE_X_TRUE= + HAVE_X_FALSE='#' + else +@@ -24978,18 +24662,19 @@ + for ac_header in GL/gl.h GL/glx.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-if eval "test \"\${$as_ac_Header+set}\" = set"; then +- echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then ++ { echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking $ac_header usability" >&5 +-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -25000,41 +24685,37 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking $ac_header presence" >&5 +-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -25043,24 +24724,22 @@ + /* end confdefs.h. */ + #include <$ac_header> + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -25068,9 +24747,10 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -25094,33 +24774,32 @@ + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX ++ ( cat <<\_ASBOX + ## ---------------------------------------- ## + ## Report this to ds@nerds-incorporated.org ## + ## ---------------------------------------- ## + _ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; + esac +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + eval "$as_ac_Header=\$ac_header_preproc" + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + + fi + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +- echo "$as_me:$LINENO: checking for glBegin in -lGL" >&5 +-echo $ECHO_N "checking for glBegin in -lGL... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for glBegin in -lGL" >&5 ++echo $ECHO_N "checking for glBegin in -lGL... $ECHO_C" >&6; } + if test "${ac_cv_lib_GL_glBegin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -25133,56 +24812,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char glBegin (); + int + main () + { +-glBegin (); ++return glBegin (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_GL_glBegin=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_GL_glBegin=no ++ ac_cv_lib_GL_glBegin=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glBegin" >&5 +-echo "${ECHO_T}$ac_cv_lib_GL_glBegin" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glBegin" >&5 ++echo "${ECHO_T}$ac_cv_lib_GL_glBegin" >&6; } + if test $ac_cv_lib_GL_glBegin = yes; then + HAVE_OPENGL=yes + fi +@@ -25195,9 +24871,7 @@ + CPPFLAGS=$CPPFLAGS_SAVE + fi + +- +- +-if test "$HAVE_OPENGL" = "yes"; then ++ if test "$HAVE_OPENGL" = "yes"; then + HAVE_OPENGL_TRUE= + HAVE_OPENGL_FALSE='#' + else +@@ -25216,9 +24890,9 @@ + for ac_header in X11/extensions/xf86vmode.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -25234,44 +24908,41 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 + _ACEOF +- echo "$as_me:$LINENO: checking for XF86VidModeSwitchToMode in -lXxf86vm" >&5 +-echo $ECHO_N "checking for XF86VidModeSwitchToMode in -lXxf86vm... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for XF86VidModeSwitchToMode in -lXxf86vm" >&5 ++echo $ECHO_N "checking for XF86VidModeSwitchToMode in -lXxf86vm... $ECHO_C" >&6; } + if test "${ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -25284,56 +24955,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char XF86VidModeSwitchToMode (); + int + main () + { +-XF86VidModeSwitchToMode (); ++return XF86VidModeSwitchToMode (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=no ++ ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&5 +-echo "${ECHO_T}$ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&5 ++echo "${ECHO_T}$ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode" >&6; } + if test $ac_cv_lib_Xxf86vm_XF86VidModeSwitchToMode = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -25352,9 +25020,7 @@ + CPPFLAGS=$CPPFLAGS_SAVE + + +- +- +-if test "$HAVE_XF86VMODE" = "yes"; then ++ if test "$HAVE_XF86VMODE" = "yes"; then + HAVE_XF86VMODE_TRUE= + HAVE_XF86VMODE_FALSE='#' + else +@@ -25364,13 +25030,13 @@ + + + LV_ALSA_MIN_VERSION=0.9.0 +-# Check whether --enable-alsa or --disable-alsa was given. ++# Check whether --enable-alsa was given. + if test "${enable_alsa+set}" = set; then +- enableval="$enable_alsa" +- ENABLE_ALSA=$enableval ++ enableval=$enable_alsa; ENABLE_ALSA=$enableval + else + ENABLE_ALSA=yes +-fi; ++fi ++ + + if test "$ENABLE_ALSA" = "yes"; then + alsa_save_CFLAGS="$CFLAGS" +@@ -25379,42 +25045,43 @@ + alsa_found=yes + + +-# Check whether --with-alsa-prefix or --without-alsa-prefix was given. ++# Check whether --with-alsa-prefix was given. + if test "${with_alsa_prefix+set}" = set; then +- withval="$with_alsa_prefix" +- alsa_prefix="$withval" ++ withval=$with_alsa_prefix; alsa_prefix="$withval" + else + alsa_prefix="" +-fi; ++fi ++ + + +-# Check whether --with-alsa-inc-prefix or --without-alsa-inc-prefix was given. ++# Check whether --with-alsa-inc-prefix was given. + if test "${with_alsa_inc_prefix+set}" = set; then +- withval="$with_alsa_inc_prefix" +- alsa_inc_prefix="$withval" ++ withval=$with_alsa_inc_prefix; alsa_inc_prefix="$withval" + else + alsa_inc_prefix="" +-fi; ++fi ++ + +-# Check whether --enable-alsatest or --disable-alsatest was given. ++# Check whether --enable-alsatest was given. + if test "${enable_alsatest+set}" = set; then +- enableval="$enable_alsatest" +- enable_alsatest="$enableval" ++ enableval=$enable_alsatest; enable_alsatest="$enableval" + else + enable_alsatest=yes +-fi; ++fi ++ + +-echo "$as_me:$LINENO: checking for ALSA CFLAGS" >&5 +-echo $ECHO_N "checking for ALSA CFLAGS... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for ALSA CFLAGS" >&5 ++echo $ECHO_N "checking for ALSA CFLAGS... $ECHO_C" >&6; } + if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" + fi +-echo "$as_me:$LINENO: result: $ALSA_CFLAGS" >&5 +-echo "${ECHO_T}$ALSA_CFLAGS" >&6 ++{ echo "$as_me:$LINENO: result: $ALSA_CFLAGS" >&5 ++echo "${ECHO_T}$ALSA_CFLAGS" >&6; } ++CFLAGS="$alsa_save_CFLAGS" + +-echo "$as_me:$LINENO: checking for ALSA LDFLAGS" >&5 +-echo $ECHO_N "checking for ALSA LDFLAGS... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for ALSA LDFLAGS" >&5 ++echo $ECHO_N "checking for ALSA LDFLAGS... $ECHO_C" >&6; } + if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +@@ -25422,12 +25089,12 @@ + + ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" + LIBS="$ALSA_LIBS $LIBS" +-echo "$as_me:$LINENO: result: $ALSA_LIBS" >&5 +-echo "${ECHO_T}$ALSA_LIBS" >&6 ++{ echo "$as_me:$LINENO: result: $ALSA_LIBS" >&5 ++echo "${ECHO_T}$ALSA_LIBS" >&6; } + + min_alsa_version=$LV_ALSA_MIN_VERSION +-echo "$as_me:$LINENO: checking for libasound headers version >= $min_alsa_version" >&5 +-echo $ECHO_N "checking for libasound headers version >= $min_alsa_version... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for libasound headers version >= $min_alsa_version" >&5 ++echo $ECHO_N "checking for libasound headers version >= $min_alsa_version... $ECHO_C" >&6; } + no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` +@@ -25437,7 +25104,6 @@ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + +- + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -25494,40 +25160,36 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- echo "$as_me:$LINENO: result: found." >&5 +-echo "${ECHO_T}found." >&6 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ { echo "$as_me:$LINENO: result: found." >&5 ++echo "${ECHO_T}found." >&6; } + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-echo "$as_me:$LINENO: result: not present." >&5 +-echo "${ECHO_T}not present." >&6 ++ { echo "$as_me:$LINENO: result: not present." >&5 ++echo "${ECHO_T}not present." >&6; } + + alsa_found=no + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -25537,8 +25199,8 @@ + + if test "x$enable_alsatest" = "xyes"; then + +-echo "$as_me:$LINENO: checking for snd_ctl_open in -lasound" >&5 +-echo $ECHO_N "checking for snd_ctl_open in -lasound... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for snd_ctl_open in -lasound" >&5 ++echo $ECHO_N "checking for snd_ctl_open in -lasound... $ECHO_C" >&6; } + if test "${ac_cv_lib_asound_snd_ctl_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -25551,56 +25213,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char snd_ctl_open (); + int + main () + { +-snd_ctl_open (); ++return snd_ctl_open (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_asound_snd_ctl_open=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_asound_snd_ctl_open=no ++ ac_cv_lib_asound_snd_ctl_open=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_ctl_open" >&5 +-echo "${ECHO_T}$ac_cv_lib_asound_snd_ctl_open" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_ctl_open" >&5 ++echo "${ECHO_T}$ac_cv_lib_asound_snd_ctl_open" >&6; } + if test $ac_cv_lib_asound_snd_ctl_open = yes; then + cat >>confdefs.h <<_ACEOF + #define HAVE_LIBASOUND 1 +@@ -25616,19 +25275,15 @@ + + fi + ++LDFLAGS="$alsa_save_LDFLAGS" ++LIBS="$alsa_save_LIBS" ++ + if test "x$alsa_found" = "xyes" ; then + HAVE_ALSA=yes +- LIBS=`echo $LIBS | sed 's/-lasound//g'` +- LIBS=`echo $LIBS | sed 's/ //'` +- LIBS="-lasound $LIBS" +-fi +-if test "x$alsa_found" = "xno" ; then +- HAVE_ALSA=no +- CFLAGS="$alsa_save_CFLAGS" +- LDFLAGS="$alsa_save_LDFLAGS" +- LIBS="$alsa_save_LIBS" ++else + ALSA_CFLAGS="" + ALSA_LIBS="" ++ HAVE_ALSA=no + fi + + +@@ -25660,27 +25315,22 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + + cat >>confdefs.h <<\_ACEOF + #define HAVE_0_9_X_ALSA 1 +@@ -25696,7 +25346,8 @@ + _ACEOF + + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else + { echo "$as_me:$LINENO: WARNING: *** Alsa input plugin cannot be built. + May be you have an ALSA library older than $LV_ALSA_MIN_VERSION. +@@ -25707,13 +25358,13 @@ + fi + fi + +-# Check whether --enable-mplayer or --disable-mplayer was given. ++# Check whether --enable-mplayer was given. + if test "${enable_mplayer+set}" = set; then +- enableval="$enable_mplayer" +- ENABLE_MPLAYER=$enableval ++ enableval=$enable_mplayer; ENABLE_MPLAYER=$enableval + else + ENABLE_MPLAYER=yes +-fi; ++fi ++ + + # FIXME: Missing check for MPlayer... + if test "$ENABLE_MPLAYER" = "yes"; then +@@ -25728,25 +25379,25 @@ + fi + fi + +-# Check whether --enable-inputdebug or --disable-inputdebug was given. ++# Check whether --enable-inputdebug was given. + if test "${enable_inputdebug+set}" = set; then +- enableval="$enable_inputdebug" +- ENABLE_INPUTDEBUG=$enableval ++ enableval=$enable_inputdebug; ENABLE_INPUTDEBUG=$enableval + else + ENABLE_INPUTDEBUG=yes +-fi; ++fi ++ + + if test "$inputdebug" = "yes"; then + build_input_plugins="$build_input_plugins debug" + fi + +-# Check whether --enable-gltest or --disable-gltest was given. ++# Check whether --enable-gltest was given. + if test "${enable_gltest+set}" = set; then +- enableval="$enable_gltest" +- ENABLE_LVGLTEST=$enableval ++ enableval=$enable_gltest; ENABLE_LVGLTEST=$enableval + else + ENABLE_LVGLTEST=yes +-fi; ++fi ++ + + if test "$ENABLE_LVGLTEST" = "yes"; then + if test "$HAVE_OPENGL" = "yes"; then +@@ -25759,13 +25410,13 @@ + fi + fi + +-# Check whether --enable-nastyfft or --disable-nastyfft was given. ++# Check whether --enable-nastyfft was given. + if test "${enable_nastyfft+set}" = set; then +- enableval="$enable_nastyfft" +- ENABLE_NASTYFFT=$enableval ++ enableval=$enable_nastyfft; ENABLE_NASTYFFT=$enableval + else + ENABLE_NASTYFFT=yes +-fi; ++fi ++ + + if test "$ENABLE_NASTYFFT" = "yes"; then + if test "$HAVE_OPENGL" = "yes"; then +@@ -25778,13 +25429,13 @@ + fi + fi + +-# Check whether --enable-madspin or --disable-madspin was given. ++# Check whether --enable-madspin was given. + if test "${enable_madspin+set}" = set; then +- enableval="$enable_madspin" +- ENABLE_MADSPIN=$enableval ++ enableval=$enable_madspin; ENABLE_MADSPIN=$enableval + else + ENABLE_MADSPIN=yes +-fi; ++fi ++ + + if test "$ENABLE_MADSPIN" = "yes"; then + if test "$HAVE_OPENGL" = "yes"; then +@@ -25797,13 +25448,13 @@ + fi + fi + +-# Check whether --enable-flower or --disable-flower was given. ++# Check whether --enable-flower was given. + if test "${enable_flower+set}" = set; then +- enableval="$enable_flower" +- ENABLE_FLOWER=$enableval ++ enableval=$enable_flower; ENABLE_FLOWER=$enableval + else + ENABLE_FLOWER=yes +-fi; ++fi ++ + + if test "$ENABLE_FLOWER" = "yes"; then + if test "$HAVE_OPENGL" = "yes"; then +@@ -25816,109 +25467,109 @@ + fi + fi + +-# Check whether --enable-infinite or --disable-infinite was given. ++# Check whether --enable-infinite was given. + if test "${enable_infinite+set}" = set; then +- enableval="$enable_infinite" +- ENABLE_INFINITE=$enableval ++ enableval=$enable_infinite; ENABLE_INFINITE=$enableval + else + ENABLE_INFINITE=yes +-fi; ++fi ++ + + if test "$ENABLE_INFINITE" = "yes"; then + build_actor_plugins="$build_actor_plugins infinite" + fi + +-# Check whether --enable-jess or --disable-jess was given. ++# Check whether --enable-jess was given. + if test "${enable_jess+set}" = set; then +- enableval="$enable_jess" +- ENABLE_JESS=$enableval ++ enableval=$enable_jess; ENABLE_JESS=$enableval + else + ENABLE_JESS=yes +-fi; ++fi ++ + + if test "$ENABLE_JESS" = "yes"; then + build_actor_plugins="$build_actor_plugins JESS" + fi + +-# Check whether --enable-corona or --disable-corona was given. ++# Check whether --enable-corona was given. + if test "${enable_corona+set}" = set; then +- enableval="$enable_corona" +- ENABLE_CORONA=$enableval ++ enableval=$enable_corona; ENABLE_CORONA=$enableval + else + ENABLE_CORONA=yes +-fi; ++fi ++ + + if test "$ENABLE_CORONA" = "yes"; then + build_actor_plugins="$build_actor_plugins corona" + fi + +-# Check whether --enable-analyzer or --disable-analyzer was given. ++# Check whether --enable-analyzer was given. + if test "${enable_analyzer+set}" = set; then +- enableval="$enable_analyzer" +- ENABLE_ANALYZER=$enableval ++ enableval=$enable_analyzer; ENABLE_ANALYZER=$enableval + else + ENABLE_ANALYZER=yes +-fi; ++fi + +-if test "$ENABLE_ANALYZER" = xyes; then ++ ++if test "$ENABLE_ANALYZER" = "yes"; then + build_actor_plugins="$build_actor_plugins lv_analyzer" + fi + +-# Check whether --enable-scope or --disable-scope was given. ++# Check whether --enable-scope was given. + if test "${enable_scope+set}" = set; then +- enableval="$enable_scope" +- ENABLE_SCOPE=$enableval ++ enableval=$enable_scope; ENABLE_SCOPE=$enableval + else + ENABLE_SCOPE=yes +-fi; ++fi ++ + + if test "$ENABLE_SCOPE" = "yes"; then + build_actor_plugins="$build_actor_plugins lv_scope" + fi + +-# Check whether --enable-oinksie or --disable-oinksie was given. ++# Check whether --enable-oinksie was given. + if test "${enable_oinksie+set}" = set; then +- enableval="$enable_oinksie" +- ENABLE_OINKSIE=$enableval ++ enableval=$enable_oinksie; ENABLE_OINKSIE=$enableval + else + ENABLE_OINKSIE=yes +-fi; ++fi ++ + + if test "$ENABLE_OINKSIE" = "yes"; then + build_actor_plugins="$build_actor_plugins oinksie" + fi + +-# Check whether --enable-jakdaw or --disable-jakdaw was given. ++# Check whether --enable-jakdaw was given. + if test "${enable_jakdaw+set}" = set; then +- enableval="$enable_jakdaw" +- ENABLE_JAKDAW=$enableval ++ enableval=$enable_jakdaw; ENABLE_JAKDAW=$enableval + else + ENABLE_JAKDAW=yes +-fi; ++fi ++ + + if test "$ENABLE_JAKDAW" = "yes"; then + build_actor_plugins="$build_actor_plugins jakdaw" + fi + +-# Check whether --enable-bumpscope or --disable-bumpscope was given. ++# Check whether --enable-bumpscope was given. + if test "${enable_bumpscope+set}" = set; then +- enableval="$enable_bumpscope" +- ENABLE_BUMPSCOPE=$enableval ++ enableval=$enable_bumpscope; ENABLE_BUMPSCOPE=$enableval + else + ENABLE_BUMPSCOPE=yes +-fi; ++fi ++ + + if test "$ENABLE_BUMPSCOPE" = "yes"; then + build_actor_plugins="$build_actor_plugins bumpscope" + fi + +-# Check whether --enable-gforce or --disable-gforce was given. ++# Check whether --enable-gforce was given. + if test "${enable_gforce+set}" = set; then +- enableval="$enable_gforce" +- ENABLE_GFORCE=$enableval ++ enableval=$enable_gforce; ENABLE_GFORCE=$enableval + else +- ENABLE_GFORCE=yes +-fi; ++ ENABLE_GFORCE=no ++fi ++ + + if test "$ENABLE_GFORCE" = "yes"; then + build_actor_plugins="$build_actor_plugins G-Force" +@@ -25928,49 +25579,49 @@ + + fi + +-# Check whether --enable-alphablend or --disable-alphablend was given. ++# Check whether --enable-alphablend was given. + if test "${enable_alphablend+set}" = set; then +- enableval="$enable_alphablend" +- ENABLE_ALPHABLEND=$enableval ++ enableval=$enable_alphablend; ENABLE_ALPHABLEND=$enableval + else + ENABLE_ALPHABLEND=yes +-fi; ++fi ++ + + if test "$ENABLE_ALPHABLEND" = "yes"; then + build_morph_plugins="$build_morph_plugins alphablend" + fi + +-# Check whether --enable-flash or --disable-flash was given. ++# Check whether --enable-flash was given. + if test "${enable_flash+set}" = set; then +- enableval="$enable_flash" +- ENABLE_FLASH=$enableval ++ enableval=$enable_flash; ENABLE_FLASH=$enableval + else + ENABLE_FLASH=yes +-fi; ++fi ++ + + if test "$ENABLE_FLASH" = "yes"; then + build_morph_plugins="$build_morph_plugins flash" + fi + +-# Check whether --enable-tentacle or --disable-tentacle was given. ++# Check whether --enable-tentacle was given. + if test "${enable_tentacle+set}" = set; then +- enableval="$enable_tentacle" +- ENABLE_TENTACLE=$enableval ++ enableval=$enable_tentacle; ENABLE_TENTACLE=$enableval + else + ENABLE_TENTACLE=yes +-fi; ++fi ++ + + if test "$ENABLE_TENTACLE" = "yes"; then + build_morph_plugins="$build_morph_plugins tentacle" + fi + +-# Check whether --enable-slide or --disable-slide was given. ++# Check whether --enable-slide was given. + if test "${enable_slide+set}" = set; then +- enableval="$enable_slide" +- ENABLE_SLIDE=$enableval ++ enableval=$enable_slide; ENABLE_SLIDE=$enableval + else + ENABLE_SLIDE=yes +-fi; ++fi ++ + + if test "$ENABLE_SLIDE" = "yes"; then + build_morph_plugins="$build_morph_plugins slide" +@@ -25979,25 +25630,25 @@ + + DEBUG_CFLAGS= + +-# Check whether --enable-profiling or --disable-profiling was given. ++# Check whether --enable-profiling was given. + if test "${enable_profiling+set}" = set; then +- enableval="$enable_profiling" +- ENABLE_PROFILING=$enableval ++ enableval=$enable_profiling; ENABLE_PROFILING=$enableval + else + ENABLE_PROFILING=no +-fi; ++fi ++ + + if test "$ENABLE_PROFILING" = "yes"; then + DEBUG_CFLAGS="$DEBUG_CFLAGS -pg" + fi + +-# Check whether --enable-debug or --disable-debug was given. ++# Check whether --enable-debug was given. + if test "${enable_debug+set}" = set; then +- enableval="$enable_debug" +- ENABLE_DEBUG=$enableval ++ enableval=$enable_debug; ENABLE_DEBUG=$enableval + else + ENABLE_DEBUG=no +-fi; ++fi ++ + + if test "$ENABLE_DEBUG" = "yes"; then + DEBUG_CFLAGS="$DEBUG_CFLAGS -ggdb3" +@@ -26006,13 +25657,13 @@ + fi + + +-# Check whether --enable-extra-optimization or --disable-extra-optimization was given. ++# Check whether --enable-extra-optimization was given. + if test "${enable_extra_optimization+set}" = set; then +- enableval="$enable_extra_optimization" +- ENABLE_EXTRA_OPT=$enableval ++ enableval=$enable_extra_optimization; ENABLE_EXTRA_OPT=$enableval + else + ENABLE_EXTRA_OPT=no +-fi; ++fi ++ + + OPT_CFLAGS= + if test "$ENABLE_EXTRA_OPT" = "yes"; then +@@ -26031,13 +25682,13 @@ + + + +-# Check whether --with-plugins-base-dir or --without-plugins-base-dir was given. ++# Check whether --with-plugins-base-dir was given. + if test "${with_plugins_base_dir+set}" = set; then +- withval="$with_plugins_base_dir" +- plugins_base_dir=$withval ++ withval=$with_plugins_base_dir; plugins_base_dir=$withval + else + plugins_base_dir=`$PKG_CONFIG --variable=pluginsbasedir $LIBVISUAL_PKG` +-fi; ++fi ++ + + LIBVISUAL_PLUGINS_BASE_DIR="$plugins_base_dir" + +@@ -26055,7 +25706,7 @@ + + + +- ac_config_files="$ac_config_files Makefile po/Makevars po/Makefile.in plugins/Makefile plugins/actor/Makefile plugins/actor/bumpscope/Makefile plugins/actor/corona/Makefile plugins/actor/gdkpixbuf/Makefile plugins/actor/gstreamer/Makefile plugins/actor/infinite/Makefile plugins/actor/jakdaw/Makefile plugins/actor/JESS/Makefile plugins/actor/lv_analyzer/Makefile plugins/actor/lv_gltest/Makefile plugins/actor/lv_scope/Makefile plugins/actor/madspin/Makefile plugins/actor/nastyfft/Makefile plugins/actor/oinksie/Makefile plugins/actor/pseudotoad_flower/Makefile plugins/actor/G-Force/Makefile plugins/actor/G-Force/docs/Makefile plugins/actor/G-Force/Common/Makefile plugins/actor/G-Force/Common/GeneralTools/Makefile plugins/actor/G-Force/Common/GeneralTools/Headers/Makefile plugins/actor/G-Force/Common/io/Makefile plugins/actor/G-Force/Common/io/Headers/Makefile plugins/actor/G-Force/Common/math/Makefile plugins/actor/G-Force/Common/math/Headers/Makefile plugins/actor/G-Force/Common/UI/Makefile plugins/actor/G-Force/Common/UI/Headers/Makefile plugins/actor/G-Force/GForceCommon/Makefile plugins/actor/G-Force/GForceCommon/Headers/Makefile plugins/actor/G-Force/unix/Makefile plugins/actor/G-Force/unix/Headers/Makefile plugins/actor/G-Force/unix/libmfl/Makefile plugins/actor/G-Force/unix/libvisual/Makefile plugins/actor/G-Force/GForceColorMaps/Makefile plugins/actor/G-Force/GForceDeltaFields/Makefile plugins/actor/G-Force/GForceParticles/Makefile plugins/actor/G-Force/GForceWaveShapes/Makefile plugins/actor/G-Force/NotWorkingWaveShapes/Makefile plugins/input/Makefile plugins/input/esd/Makefile plugins/input/alsa/Makefile plugins/input/mplayer/Makefile plugins/input/jack/Makefile plugins/input/debug/Makefile plugins/morph/Makefile plugins/morph/alphablend/Makefile plugins/morph/tentacle/Makefile plugins/morph/flash/Makefile plugins/morph/slide/Makefile" ++ac_config_files="$ac_config_files Makefile po/Makevars po/Makefile.in plugins/Makefile plugins/actor/Makefile plugins/actor/bumpscope/Makefile plugins/actor/corona/Makefile plugins/actor/gdkpixbuf/Makefile plugins/actor/gstreamer/Makefile plugins/actor/infinite/Makefile plugins/actor/jakdaw/Makefile plugins/actor/JESS/Makefile plugins/actor/lv_analyzer/Makefile plugins/actor/lv_gltest/Makefile plugins/actor/lv_scope/Makefile plugins/actor/madspin/Makefile plugins/actor/nastyfft/Makefile plugins/actor/oinksie/Makefile plugins/actor/pseudotoad_flower/Makefile plugins/input/Makefile plugins/input/esd/Makefile plugins/input/alsa/Makefile plugins/input/mplayer/Makefile plugins/input/jack/Makefile plugins/input/debug/Makefile plugins/morph/Makefile plugins/morph/alphablend/Makefile plugins/morph/tentacle/Makefile plugins/morph/flash/Makefile plugins/morph/slide/Makefile" + + + +@@ -26077,39 +25728,58 @@ + + # The following way of writing the cache mishandles newlines in values, + # but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. ++# So, we kill variables containing newlines. + # Ultrix sh set writes to stderr and can't be redirected directly, + # and sets the high bit in the cache file unless we assign to the vars. +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; ++ ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if diff $cache_file confcache >/dev/null 2>&1; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -26118,32 +25788,18 @@ + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- + DEFS=-DHAVE_CONFIG_H + + ac_libobjs= + ac_ltlibobjs= + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. +- ac_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + done + LIBOBJS=$ac_libobjs + +@@ -26216,17 +25872,45 @@ + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -26236,8 +25920,43 @@ + fi + + ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ + # Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -26251,18 +25970,19 @@ + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -26270,159 +25990,120 @@ + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# CDPATH. ++$as_unset CDPATH + + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done + +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | + sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno + N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; + esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +@@ -26431,7 +26112,28 @@ + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -26440,31 +26142,14 @@ + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- +-exec 6>&1 +- +-# Open the log real soon, to keep \$[0] and so on meaningful, and to +-# report actual input values of CONFIG_FILES etc. instead of their +-# values after options handling. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- ++exec 6>&1 ++ ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" + This file was extended by Libvisual plugins $as_me 0.4.0, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -26472,30 +26157,20 @@ + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ + _ACEOF + ++cat >>$CONFIG_STATUS <<_ACEOF + # Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" + +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +- + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -26503,7 +26178,7 @@ + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions +@@ -26522,19 +26197,22 @@ + $config_commands + + Report bugs to ." +-_ACEOF + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + Libvisual plugins config.status 0.4.0 +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir +-INSTALL="$INSTALL" ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' + _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +@@ -26545,39 +26223,24 @@ + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; +- -*) ++ *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift +@@ -26587,18 +26250,24 @@ + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ { echo "$as_me: error: ambiguous option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; };; ++ --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + +- *) ac_config_targets="$ac_config_targets $1" ;; ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift +@@ -26614,21 +26283,32 @@ + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + fi + + _ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + # +-# INIT-COMMANDS section. ++# INIT-COMMANDS + # +- + AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + # Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it +- # from automake. ++ # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" +@@ -26636,74 +26316,53 @@ + + _ACEOF + +- +- + cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; +- "po/Makevars" ) CONFIG_FILES="$CONFIG_FILES po/Makevars" ;; +- "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; +- "plugins/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; +- "plugins/actor/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/Makefile" ;; +- "plugins/actor/bumpscope/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/bumpscope/Makefile" ;; +- "plugins/actor/corona/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/corona/Makefile" ;; +- "plugins/actor/gdkpixbuf/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/gdkpixbuf/Makefile" ;; +- "plugins/actor/gstreamer/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/gstreamer/Makefile" ;; +- "plugins/actor/infinite/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/infinite/Makefile" ;; +- "plugins/actor/jakdaw/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/jakdaw/Makefile" ;; +- "plugins/actor/JESS/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/JESS/Makefile" ;; +- "plugins/actor/lv_analyzer/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/lv_analyzer/Makefile" ;; +- "plugins/actor/lv_gltest/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/lv_gltest/Makefile" ;; +- "plugins/actor/lv_scope/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/lv_scope/Makefile" ;; +- "plugins/actor/madspin/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/madspin/Makefile" ;; +- "plugins/actor/nastyfft/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/nastyfft/Makefile" ;; +- "plugins/actor/oinksie/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/oinksie/Makefile" ;; +- "plugins/actor/pseudotoad_flower/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/pseudotoad_flower/Makefile" ;; +- "plugins/actor/G-Force/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Makefile" ;; +- "plugins/actor/G-Force/docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/docs/Makefile" ;; +- "plugins/actor/G-Force/Common/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/Makefile" ;; +- "plugins/actor/G-Force/Common/GeneralTools/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/GeneralTools/Makefile" ;; +- "plugins/actor/G-Force/Common/GeneralTools/Headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/GeneralTools/Headers/Makefile" ;; +- "plugins/actor/G-Force/Common/io/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/io/Makefile" ;; +- "plugins/actor/G-Force/Common/io/Headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/io/Headers/Makefile" ;; +- "plugins/actor/G-Force/Common/math/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/math/Makefile" ;; +- "plugins/actor/G-Force/Common/math/Headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/math/Headers/Makefile" ;; +- "plugins/actor/G-Force/Common/UI/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/UI/Makefile" ;; +- "plugins/actor/G-Force/Common/UI/Headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/Common/UI/Headers/Makefile" ;; +- "plugins/actor/G-Force/GForceCommon/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/GForceCommon/Makefile" ;; +- "plugins/actor/G-Force/GForceCommon/Headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/GForceCommon/Headers/Makefile" ;; +- "plugins/actor/G-Force/unix/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/unix/Makefile" ;; +- "plugins/actor/G-Force/unix/Headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/unix/Headers/Makefile" ;; +- "plugins/actor/G-Force/unix/libmfl/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/unix/libmfl/Makefile" ;; +- "plugins/actor/G-Force/unix/libvisual/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/unix/libvisual/Makefile" ;; +- "plugins/actor/G-Force/GForceColorMaps/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/GForceColorMaps/Makefile" ;; +- "plugins/actor/G-Force/GForceDeltaFields/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/GForceDeltaFields/Makefile" ;; +- "plugins/actor/G-Force/GForceParticles/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/GForceParticles/Makefile" ;; +- "plugins/actor/G-Force/GForceWaveShapes/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/GForceWaveShapes/Makefile" ;; +- "plugins/actor/G-Force/NotWorkingWaveShapes/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/actor/G-Force/NotWorkingWaveShapes/Makefile" ;; +- "plugins/input/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/input/Makefile" ;; +- "plugins/input/esd/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/input/esd/Makefile" ;; +- "plugins/input/alsa/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/input/alsa/Makefile" ;; +- "plugins/input/mplayer/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/input/mplayer/Makefile" ;; +- "plugins/input/jack/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/input/jack/Makefile" ;; +- "plugins/input/debug/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/input/debug/Makefile" ;; +- "plugins/morph/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/morph/Makefile" ;; +- "plugins/morph/alphablend/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/morph/alphablend/Makefile" ;; +- "plugins/morph/tentacle/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/morph/tentacle/Makefile" ;; +- "plugins/morph/flash/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/morph/flash/Makefile" ;; +- "plugins/morph/slide/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/morph/slide/Makefile" ;; +- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +- "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; +- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ++ case $ac_config_target in ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "po/Makevars") CONFIG_FILES="$CONFIG_FILES po/Makevars" ;; ++ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; ++ "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; ++ "plugins/actor/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/Makefile" ;; ++ "plugins/actor/bumpscope/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/bumpscope/Makefile" ;; ++ "plugins/actor/corona/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/corona/Makefile" ;; ++ "plugins/actor/gdkpixbuf/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/gdkpixbuf/Makefile" ;; ++ "plugins/actor/gstreamer/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/gstreamer/Makefile" ;; ++ "plugins/actor/infinite/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/infinite/Makefile" ;; ++ "plugins/actor/jakdaw/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/jakdaw/Makefile" ;; ++ "plugins/actor/JESS/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/JESS/Makefile" ;; ++ "plugins/actor/lv_analyzer/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/lv_analyzer/Makefile" ;; ++ "plugins/actor/lv_gltest/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/lv_gltest/Makefile" ;; ++ "plugins/actor/lv_scope/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/lv_scope/Makefile" ;; ++ "plugins/actor/madspin/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/madspin/Makefile" ;; ++ "plugins/actor/nastyfft/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/nastyfft/Makefile" ;; ++ "plugins/actor/oinksie/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/oinksie/Makefile" ;; ++ "plugins/actor/pseudotoad_flower/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/actor/pseudotoad_flower/Makefile" ;; ++ "plugins/input/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/input/Makefile" ;; ++ "plugins/input/esd/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/input/esd/Makefile" ;; ++ "plugins/input/alsa/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/input/alsa/Makefile" ;; ++ "plugins/input/mplayer/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/input/mplayer/Makefile" ;; ++ "plugins/input/jack/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/input/jack/Makefile" ;; ++ "plugins/input/debug/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/input/debug/Makefile" ;; ++ "plugins/morph/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/morph/Makefile" ;; ++ "plugins/morph/alphablend/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/morph/alphablend/Makefile" ;; ++ "plugins/morph/tentacle/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/morph/tentacle/Makefile" ;; ++ "plugins/morph/flash/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/morph/flash/Makefile" ;; ++ "plugins/morph/slide/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/morph/slide/Makefile" ;; ++ + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac + done + ++ + # If the user did not use the arguments to specify the items to instantiate, + # then the envvar interface is used. Set only those that are not. + # We use the long form for the default assignment because of an extremely +@@ -26715,400 +26374,518 @@ + fi + + # Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, ++# simply because there is no reason against having it here, and in addition, + # creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. + $debug || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 + } +- + # Create a (secure) tmp directory for tmp files. + + { +- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- + # +-# CONFIG_FILES section. ++# Set up the sed scripts for CONFIG_FILES section. + # + + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s,@SHELL@,$SHELL,;t t +-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s,@exec_prefix@,$exec_prefix,;t t +-s,@prefix@,$prefix,;t t +-s,@program_transform_name@,$program_transform_name,;t t +-s,@bindir@,$bindir,;t t +-s,@sbindir@,$sbindir,;t t +-s,@libexecdir@,$libexecdir,;t t +-s,@datadir@,$datadir,;t t +-s,@sysconfdir@,$sysconfdir,;t t +-s,@sharedstatedir@,$sharedstatedir,;t t +-s,@localstatedir@,$localstatedir,;t t +-s,@libdir@,$libdir,;t t +-s,@includedir@,$includedir,;t t +-s,@oldincludedir@,$oldincludedir,;t t +-s,@infodir@,$infodir,;t t +-s,@mandir@,$mandir,;t t +-s,@build_alias@,$build_alias,;t t +-s,@host_alias@,$host_alias,;t t +-s,@target_alias@,$target_alias,;t t +-s,@DEFS@,$DEFS,;t t +-s,@ECHO_C@,$ECHO_C,;t t +-s,@ECHO_N@,$ECHO_N,;t t +-s,@ECHO_T@,$ECHO_T,;t t +-s,@LIBS@,$LIBS,;t t +-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +-s,@INSTALL_DATA@,$INSTALL_DATA,;t t +-s,@CYGPATH_W@,$CYGPATH_W,;t t +-s,@PACKAGE@,$PACKAGE,;t t +-s,@VERSION@,$VERSION,;t t +-s,@ACLOCAL@,$ACLOCAL,;t t +-s,@AUTOCONF@,$AUTOCONF,;t t +-s,@AUTOMAKE@,$AUTOMAKE,;t t +-s,@AUTOHEADER@,$AUTOHEADER,;t t +-s,@MAKEINFO@,$MAKEINFO,;t t +-s,@AMTAR@,$AMTAR,;t t +-s,@install_sh@,$install_sh,;t t +-s,@STRIP@,$STRIP,;t t +-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +-s,@AWK@,$AWK,;t t +-s,@SET_MAKE@,$SET_MAKE,;t t +-s,@am__leading_dot@,$am__leading_dot,;t t +-s,@PKG_CONFIG@,$PKG_CONFIG,;t t +-s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t +-s,@LIBVISUAL_CFLAGS@,$LIBVISUAL_CFLAGS,;t t +-s,@LIBVISUAL_LIBS@,$LIBVISUAL_LIBS,;t t +-s,@CC@,$CC,;t t +-s,@CFLAGS@,$CFLAGS,;t t +-s,@LDFLAGS@,$LDFLAGS,;t t +-s,@CPPFLAGS@,$CPPFLAGS,;t t +-s,@ac_ct_CC@,$ac_ct_CC,;t t +-s,@EXEEXT@,$EXEEXT,;t t +-s,@OBJEXT@,$OBJEXT,;t t +-s,@DEPDIR@,$DEPDIR,;t t +-s,@am__include@,$am__include,;t t +-s,@am__quote@,$am__quote,;t t +-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +-s,@CCDEPMODE@,$CCDEPMODE,;t t +-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +-s,@CXX@,$CXX,;t t +-s,@CXXFLAGS@,$CXXFLAGS,;t t +-s,@ac_ct_CXX@,$ac_ct_CXX,;t t +-s,@CXXDEPMODE@,$CXXDEPMODE,;t t +-s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +-s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +-s,@CPP@,$CPP,;t t +-s,@EGREP@,$EGREP,;t t +-s,@LIBOBJS@,$LIBOBJS,;t t +-s,@LN_S@,$LN_S,;t t +-s,@build@,$build,;t t +-s,@build_cpu@,$build_cpu,;t t +-s,@build_vendor@,$build_vendor,;t t +-s,@build_os@,$build_os,;t t +-s,@host@,$host,;t t +-s,@host_cpu@,$host_cpu,;t t +-s,@host_vendor@,$host_vendor,;t t +-s,@host_os@,$host_os,;t t +-s,@ECHO@,$ECHO,;t t +-s,@AR@,$AR,;t t +-s,@ac_ct_AR@,$ac_ct_AR,;t t +-s,@RANLIB@,$RANLIB,;t t +-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +-s,@CXXCPP@,$CXXCPP,;t t +-s,@LIBTOOL@,$LIBTOOL,;t t +-s,@LEX@,$LEX,;t t +-s,@LEXLIB@,$LEXLIB,;t t +-s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t +-s,@YACC@,$YACC,;t t +-s,@GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t +-s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +-s,@USE_NLS@,$USE_NLS,;t t +-s,@MSGFMT@,$MSGFMT,;t t +-s,@GMSGFMT@,$GMSGFMT,;t t +-s,@XGETTEXT@,$XGETTEXT,;t t +-s,@MSGMERGE@,$MSGMERGE,;t t +-s,@INTL_MACOSX_LIBS@,$INTL_MACOSX_LIBS,;t t +-s,@LIBICONV@,$LIBICONV,;t t +-s,@LTLIBICONV@,$LTLIBICONV,;t t +-s,@INTLLIBS@,$INTLLIBS,;t t +-s,@LIBINTL@,$LIBINTL,;t t +-s,@LTLIBINTL@,$LTLIBINTL,;t t +-s,@POSUB@,$POSUB,;t t +-s,@DYNAMIC_LOADER_LIBS@,$DYNAMIC_LOADER_LIBS,;t t +-s,@LIBESD_CFLAGS@,$LIBESD_CFLAGS,;t t +-s,@LIBESD_LIBS@,$LIBESD_LIBS,;t t +-s,@LIBJACK_CFLAGS@,$LIBJACK_CFLAGS,;t t +-s,@LIBJACK_LIBS@,$LIBJACK_LIBS,;t t +-s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t +-s,@GTK_LIBS@,$GTK_LIBS,;t t +-s,@GSTREAMER_CFLAGS@,$GSTREAMER_CFLAGS,;t t +-s,@GSTREAMER_LIBS@,$GSTREAMER_LIBS,;t t +-s,@X_CFLAGS@,$X_CFLAGS,;t t +-s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +-s,@X_LIBS@,$X_LIBS,;t t +-s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +-s,@HAVE_X_TRUE@,$HAVE_X_TRUE,;t t +-s,@HAVE_X_FALSE@,$HAVE_X_FALSE,;t t +-s,@HAVE_OPENGL_TRUE@,$HAVE_OPENGL_TRUE,;t t +-s,@HAVE_OPENGL_FALSE@,$HAVE_OPENGL_FALSE,;t t +-s,@XF86VMODE_LIB@,$XF86VMODE_LIB,;t t +-s,@HAVE_XF86VMODE_TRUE@,$HAVE_XF86VMODE_TRUE,;t t +-s,@HAVE_XF86VMODE_FALSE@,$HAVE_XF86VMODE_FALSE,;t t +-s,@ALSA_CFLAGS@,$ALSA_CFLAGS,;t t +-s,@ALSA_LIBS@,$ALSA_LIBS,;t t +-s,@GFORCE_FLAGS@,$GFORCE_FLAGS,;t t +-s,@DEBUG_CFLAGS@,$DEBUG_CFLAGS,;t t +-s,@OPT_CFLAGS@,$OPT_CFLAGS,;t t +-s,@LIBVISUAL_PLUGINS_BASE_DIR@,$LIBVISUAL_PLUGINS_BASE_DIR,;t t +-s,@actor_plugindir@,$actor_plugindir,;t t +-s,@input_plugindir@,$input_plugindir,;t t +-s,@morph_plugindir@,$morph_plugindir,;t t +-s,@LIBVISUAL_PLUGINS_DATA_DIR@,$LIBVISUAL_PLUGINS_DATA_DIR,;t t +-s,@build_actor_plugins@,$build_actor_plugins,;t t +-s,@build_input_plugins@,$build_input_plugins,;t t +-s,@build_morph_plugins@,$build_morph_plugins,;t t +-s,@LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++am__isrc!$am__isrc$ac_delim ++CYGPATH_W!$CYGPATH_W$ac_delim ++PACKAGE!$PACKAGE$ac_delim ++VERSION!$VERSION$ac_delim ++ACLOCAL!$ACLOCAL$ac_delim ++AUTOCONF!$AUTOCONF$ac_delim ++AUTOMAKE!$AUTOMAKE$ac_delim ++AUTOHEADER!$AUTOHEADER$ac_delim ++MAKEINFO!$MAKEINFO$ac_delim ++install_sh!$install_sh$ac_delim ++STRIP!$STRIP$ac_delim ++INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim ++mkdir_p!$mkdir_p$ac_delim ++AWK!$AWK$ac_delim ++SET_MAKE!$SET_MAKE$ac_delim ++am__leading_dot!$am__leading_dot$ac_delim ++AMTAR!$AMTAR$ac_delim ++am__tar!$am__tar$ac_delim ++am__untar!$am__untar$ac_delim ++PKG_CONFIG!$PKG_CONFIG$ac_delim ++LIBVISUAL_CFLAGS!$LIBVISUAL_CFLAGS$ac_delim ++LIBVISUAL_LIBS!$LIBVISUAL_LIBS$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++DEPDIR!$DEPDIR$ac_delim ++am__include!$am__include$ac_delim ++am__quote!$am__quote$ac_delim ++AMDEP_TRUE!$AMDEP_TRUE$ac_delim ++AMDEP_FALSE!$AMDEP_FALSE$ac_delim ++AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim ++CCDEPMODE!$CCDEPMODE$ac_delim ++am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim ++am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim ++CXX!$CXX$ac_delim ++CXXFLAGS!$CXXFLAGS$ac_delim ++ac_ct_CXX!$ac_ct_CXX$ac_delim ++CXXDEPMODE!$CXXDEPMODE$ac_delim ++am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim ++am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim ++CPP!$CPP$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LN_S!$LN_S$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +-fi # test -n "$CONFIG_FILES" ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++CEOF$ac_eof ++_ACEOF ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SED!$SED$ac_delim ++ECHO!$ECHO$ac_delim ++AR!$AR$ac_delim ++RANLIB!$RANLIB$ac_delim ++CXXCPP!$CXXCPP$ac_delim ++LIBTOOL!$LIBTOOL$ac_delim ++LEX!$LEX$ac_delim ++LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim ++LEXLIB!$LEXLIB$ac_delim ++YACC!$YACC$ac_delim ++GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim ++USE_NLS!$USE_NLS$ac_delim ++MSGFMT!$MSGFMT$ac_delim ++GMSGFMT!$GMSGFMT$ac_delim ++MSGFMT_015!$MSGFMT_015$ac_delim ++GMSGFMT_015!$GMSGFMT_015$ac_delim ++XGETTEXT!$XGETTEXT$ac_delim ++XGETTEXT_015!$XGETTEXT_015$ac_delim ++MSGMERGE!$MSGMERGE$ac_delim ++INTL_MACOSX_LIBS!$INTL_MACOSX_LIBS$ac_delim ++LIBICONV!$LIBICONV$ac_delim ++LTLIBICONV!$LTLIBICONV$ac_delim ++INTLLIBS!$INTLLIBS$ac_delim ++LIBINTL!$LIBINTL$ac_delim ++LTLIBINTL!$LTLIBINTL$ac_delim ++POSUB!$POSUB$ac_delim ++DYNAMIC_LOADER_LIBS!$DYNAMIC_LOADER_LIBS$ac_delim ++LIBESD_CFLAGS!$LIBESD_CFLAGS$ac_delim ++LIBESD_LIBS!$LIBESD_LIBS$ac_delim ++LIBJACK_CFLAGS!$LIBJACK_CFLAGS$ac_delim ++LIBJACK_LIBS!$LIBJACK_LIBS$ac_delim ++GTK_CFLAGS!$GTK_CFLAGS$ac_delim ++GTK_LIBS!$GTK_LIBS$ac_delim ++GSTREAMER_CFLAGS!$GSTREAMER_CFLAGS$ac_delim ++GSTREAMER_LIBS!$GSTREAMER_LIBS$ac_delim ++XMKMF!$XMKMF$ac_delim ++X_CFLAGS!$X_CFLAGS$ac_delim ++X_PRE_LIBS!$X_PRE_LIBS$ac_delim ++X_LIBS!$X_LIBS$ac_delim ++X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim ++HAVE_X_TRUE!$HAVE_X_TRUE$ac_delim ++HAVE_X_FALSE!$HAVE_X_FALSE$ac_delim ++HAVE_OPENGL_TRUE!$HAVE_OPENGL_TRUE$ac_delim ++HAVE_OPENGL_FALSE!$HAVE_OPENGL_FALSE$ac_delim ++XF86VMODE_LIB!$XF86VMODE_LIB$ac_delim ++HAVE_XF86VMODE_TRUE!$HAVE_XF86VMODE_TRUE$ac_delim ++HAVE_XF86VMODE_FALSE!$HAVE_XF86VMODE_FALSE$ac_delim ++ALSA_CFLAGS!$ALSA_CFLAGS$ac_delim ++ALSA_LIBS!$ALSA_LIBS$ac_delim ++GFORCE_FLAGS!$GFORCE_FLAGS$ac_delim ++DEBUG_CFLAGS!$DEBUG_CFLAGS$ac_delim ++OPT_CFLAGS!$OPT_CFLAGS$ac_delim ++LIBVISUAL_PLUGINS_BASE_DIR!$LIBVISUAL_PLUGINS_BASE_DIR$ac_delim ++actor_plugindir!$actor_plugindir$ac_delim ++input_plugindir!$input_plugindir$ac_delim ++morph_plugindir!$morph_plugindir$ac_delim ++LIBVISUAL_PLUGINS_DATA_DIR!$LIBVISUAL_PLUGINS_DATA_DIR$ac_delim ++build_actor_plugins!$build_actor_plugins$ac_delim ++build_input_plugins!$build_input_plugins$ac_delim ++build_morph_plugins!$build_morph_plugins$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 61; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done + ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof + _ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ + cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; + esac + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || ++ ac_dir=`$as_dirname -- "$ac_file" || + $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || + $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break + done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix + + case $srcdir in +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac + ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +- *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++_ACEOF + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- configure_input= +- else +- configure_input="$ac_file. " +- fi +- configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac + _ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? + cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub + $extrasub +@@ -27116,248 +26893,131 @@ + cat >>$CONFIG_STATUS <<\_ACEOF + :t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b +-s,@configure_input@,$configure_input,;t t +-s,@srcdir@,$ac_srcdir,;t t +-s,@abs_srcdir@,$ac_abs_srcdir,;t t +-s,@top_srcdir@,$ac_top_srcdir,;t t +-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +-s,@builddir@,$ac_builddir,;t t +-s,@abs_builddir@,$ac_abs_builddir,;t t +-s,@top_builddir@,$ac_top_builddir,;t t +-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +-s,@INSTALL@,$ac_INSTALL,;t t +-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out +- rm -f $tmp/stdin +- if test x"$ac_file" != x-; then +- mv $tmp/out $ac_file +- else +- cat $tmp/out +- rm -f $tmp/out +- fi +- +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_HEADER section. +-# ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} + +-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +-# NAME is the cpp macro being defined and VALUE is the value it is being given. +-# +-# ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' +-ac_dC=' ' +-ac_dD=',;t' +-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +-ac_uB='$,\1#\2define\3' +-ac_uC=' ' +-ac_uD=',;t' +- +-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ++ rm -f "$tmp/stdin" + case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac +- +- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- +- # First look for the input files in the build tree, otherwise in the +- # src tree. +- ac_file_inputs=`IFS=: +- for f in $ac_file_in; do +- case $f in +- -) echo $tmp/stdin ;; +- [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- # Do quote $f, to prevent DOS paths from being IFS'd. +- echo "$f";; +- *) # Relative +- if test -f "$f"; then +- # Build tree +- echo "$f" +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo "$srcdir/$f" +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +-echo "$as_me: error: cannot find input file: $f" >&2;} +- { (exit 1); exit 1; }; } +- fi;; +- esac +- done` || { (exit 1); exit 1; } +- # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +- ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # + _ACEOF + +-# Transform confdefs.h into two sed scripts, `conftest.defines' and +-# `conftest.undefs', that substitutes the proper values into +-# config.h.in to produce config.h. The first handles `#define' +-# templates, and the second `#undef' templates. +-# And first: Protect against being on the right side of a sed subst in +-# config.status. Protect against being in an unquoted here document +-# in config.status. +-rm -f conftest.defines conftest.undefs +-# Using a here document instead of a string reduces the quoting nightmare. +-# Putting comments in sed scripts is not portable. +-# +-# `end' is used to avoid that the second main sed command (meant for +-# 0-ary CPP macros) applies to n-ary macro definitions. +-# See the Autoconf documentation for `clear'. +-cat >confdef2sed.sed <<\_ACEOF +-s/[\\&,]/\\&/g +-s,[\\$`],\\&,g +-t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +-t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +-: end +-_ACEOF +-# If some macros were called several times there might be several times +-# the same #defines, which is useless. Nevertheless, we may not want to +-# sort them, since we want the *last* AC-DEFINE to be honored. +-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +-rm -f confdef2sed.sed ++# Transform confdefs.h into a sed script `conftest.defines', that ++# substitutes the proper values into config.h.in to produce config.h. ++rm -f conftest.defines conftest.tail ++# First, append a space to every undef/define line, to ease matching. ++echo 's/$/ /' >conftest.defines ++# Then, protect against being on the right side of a sed subst, or in ++# an unquoted here document, in config.status. If some macros were ++# called several times there might be several #defines for the same ++# symbol, which is useless. But do not sort them, since the last ++# AC_DEFINE must be honored. ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where ++# NAME is the cpp macro being defined, VALUE is the value it is being given. ++# PARAMS is the parameter list in the macro definition--in most cases, it's ++# just an empty string. ++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ++ac_dB='\\)[ (].*,\\1define\\2' ++ac_dC=' ' ++ac_dD=' ,' + +-# This sed command replaces #undef with comments. This is necessary, for ++uniq confdefs.h | ++ sed -n ' ++ t rset ++ :rset ++ s/^[ ]*#[ ]*define[ ][ ]*// ++ t ok ++ d ++ :ok ++ s/[\\&,]/\\&/g ++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p ++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ++ ' >>conftest.defines ++ ++# Remove the space that was appended to ease matching. ++# Then replace #undef with comments. This is necessary, for + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. +-cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +-_ACEOF ++# (The regexp can be short, since the line contains either #define or #undef.) ++echo 's/ $// ++s,^[ #]*u.*,/* & */,' >>conftest.defines ++ ++# Break up conftest.defines: ++ac_max_sed_lines=50 ++ ++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" ++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" ++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" ++# et cetera. ++ac_in='$ac_file_inputs' ++ac_out='"$tmp/out1"' ++ac_nxt='"$tmp/out2"' + +-# Break up conftest.defines because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +-echo ' :' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.defines >/dev/null ++while : + do +- # Write a limited-size here document to $tmp/defines.sed. +- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS ++ # Write a here document: ++ cat >>$CONFIG_STATUS <<_ACEOF ++ # First, check the format of the line: ++ cat >"\$tmp/defines.sed" <<\\CEOF ++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def ++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def ++b ++:def ++_ACEOF ++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF +- sed -f $tmp/defines.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in ++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail ++ grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines + done +-rm -f conftest.defines +-echo ' fi # grep' >>$CONFIG_STATUS +-echo >>$CONFIG_STATUS +- +-# Break up conftest.undefs because some shells have a limit on the size +-# of here documents, and old seds have small limits too (100 cmds). +-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +-rm -f conftest.tail +-while grep . conftest.undefs >/dev/null +-do +- # Write a limited-size here document to $tmp/undefs.sed. +- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS +- # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS +- # Work around the forget-to-reset-the-flag bug. +- echo 't clr' >>$CONFIG_STATUS +- echo ': clr' >>$CONFIG_STATUS +- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS +- echo 'CEOF +- sed -f $tmp/undefs.sed $tmp/in >$tmp/out +- rm -f $tmp/in +- mv $tmp/out $tmp/in +-' >>$CONFIG_STATUS +- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail +- rm -f conftest.undefs +- mv conftest.tail conftest.undefs +-done +-rm -f conftest.undefs ++rm -f conftest.defines conftest.tail + ++echo "ac_result=$ac_in" >>$CONFIG_STATUS + cat >>$CONFIG_STATUS <<\_ACEOF +- # Let's still pretend it is `configure' which instantiates (i.e., don't +- # use $as_me), people would be surprised to read: +- # /* config.h. Generated by config.status. */ +- if test x"$ac_file" = x-; then +- echo "/* Generated by configure. */" >$tmp/config.h +- else +- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h +- fi +- cat $tmp/in >>$tmp/config.h +- rm -f $tmp/in + if test x"$ac_file" != x-; then +- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then ++ echo "/* $configure_input */" >"$tmp/config.h" ++ cat "$ac_result" >>"$tmp/config.h" ++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 + echo "$as_me: $ac_file is unchanged" >&6;} + else +- ac_dir=`(dirname "$ac_file") 2>/dev/null || +-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- + rm -f $ac_file +- mv $tmp/config.h $ac_file ++ mv "$tmp/config.h" $ac_file + fi + else +- cat $tmp/config.h +- rm -f $tmp/config.h ++ echo "/* $configure_input */" ++ cat "$ac_result" + fi ++ rm -f "$tmp/out12" + # Compute $ac_file's index in $config_headers. + _am_stamp_count=1 + for _am_header in $config_headers :; do +@@ -27368,135 +27028,39 @@ + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done +-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || ++echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || + $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ +- X$ac_file : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X$ac_file : 'X\(/\)' \| . 2>/dev/null || + echo X$ac_file | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'`/stamp-h$_am_stamp_count +-done +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF +- +-# +-# CONFIG_COMMANDS section. +-# +-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue +- ac_dest=`echo "$ac_file" | sed 's,:.*,,'` +- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_dir=`(dirname "$ac_dest") 2>/dev/null || +-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$ac_dest" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" +- as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || +-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || +-echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} +- { (exit 1); exit 1; }; }; } +- +- ac_builddir=. +- +-if test "$ac_dir" != .; then +- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi +- +-case $srcdir in +- .) # No --srcdir option. We are building in place. +- ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. +- ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; + +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; +-esac ++ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 ++echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac + + +- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +-echo "$as_me: executing $ac_dest commands" >&6;} +- case $ac_dest in +- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do ++ case $ac_file$ac_mode in ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. +@@ -27504,90 +27068,123 @@ + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. +- # So let's grep whole file. +- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then +- dirpart=`(dirname "$mf") 2>/dev/null || ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || + $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || + echo X"$mf" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + else + continue + fi +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +- fdir=`(dirname "$file") 2>/dev/null || ++ fdir=`$as_dirname -- "$file" || + $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p $dirpart/$fdir +- else +- as_dir=$dirpart/$fdir ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir=$dirpart/$fdir ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || + $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break + done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done + ;; +- default-1 ) ++ "po-directories":C) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in +@@ -27624,11 +27221,12 @@ + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` +- # Hide the ALL_LINGUAS assigment from automake. ++ # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. ++ # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES +@@ -27699,11 +27297,10 @@ + ;; + esac + done ;; ++ + esac +-done +-_ACEOF ++done # for ac_tag + +-cat >>$CONFIG_STATUS <<\_ACEOF + + { (exit 0); exit 0; } + _ACEOF +diff -Nur libvisual-plugins-0.4.0/Makefile.in libvisual-plugins-0.4.0.new/Makefile.in +--- libvisual-plugins-0.4.0/Makefile.in 2006-03-21 05:48:51.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,17 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = . +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +29,51 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = . ++DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ ++ $(top_srcdir)/configure ABOUT-NLS AUTHORS COPYING ChangeLog \ ++ INSTALL NEWS TODO compile config.guess config.rpath config.sub \ ++ depcomp install-sh ltmain.sh missing mkinstalldirs ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno config.status.lineno ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++ETAGS = etags ++CTAGS = ctags ++DIST_SUBDIRS = $(SUBDIRS) ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++distdir = $(PACKAGE)-$(VERSION) ++top_distdir = $(distdir) ++am__remove_distdir = \ ++ { test ! -d $(distdir) \ ++ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ ++ && rm -fr $(distdir); }; } ++DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 ++GZIP_ENV = --best ++distuninstallcheck_listfiles = find . -type f -print ++distcleancheck_listfiles = find . -type f -print + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +103,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +138,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +154,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +162,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,88 +190,96 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + SUBDIRS = plugins po +- + EXTRA_DIST = libvisual-plugins.spec gettext.h po/Makevars.in +- + CLEANFILES = po/Makevars + DISTCLEANFILES = $(CLEANFILES) +-subdir = . +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +- +-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ +- ps-recursive install-info-recursive uninstall-info-recursive \ +- all-recursive install-data-recursive install-exec-recursive \ +- installdirs-recursive install-recursive uninstall-recursive \ +- check-recursive installcheck-recursive +-DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \ +- ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS \ +- TODO aclocal.m4 compile config.guess config.h.in config.rpath \ +- config.sub configure configure.ac depcomp install-sh ltmain.sh \ +- missing mkinstalldirs +-DIST_SUBDIRS = $(SUBDIRS) + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + + .SUFFIXES: +- +-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++am--refresh: ++ @: ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ ++ cd $(srcdir) && $(AUTOMAKE) --gnu \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; + +-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +-$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +- cd $(srcdir) && $(AUTOCONF) + +-$(ACLOCAL_M4): configure.ac ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + + config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ +- $(MAKE) stamp-h1; \ ++ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + + stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +- +-$(srcdir)/config.h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) +- touch $(srcdir)/config.h.in ++ rm -f stamp-h1 ++ touch $@ + + distclean-hdr: + -rm -f config.h stamp-h1 +@@ -252,7 +292,6 @@ + + distclean-libtool: + -rm -f libtool +-uninstall-info-am: + + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. +@@ -261,7 +300,13 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -273,15 +318,20 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++$(RECURSIVE_CLEAN_TARGETS): ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -302,7 +352,7 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done && test -z "$$fail" + tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -313,14 +363,6 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -329,19 +371,22 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- if (etags --etags-include --version) >/dev/null 2>&1; then \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ ++ empty_fix=.; \ + else \ + include_option=--include; \ ++ empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -f $$subdir/TAGS && \ ++ test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ +@@ -351,10 +396,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -377,40 +423,25 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = . +-distdir = $(PACKAGE)-$(VERSION) +- +-am__remove_distdir = \ +- { test ! -d $(distdir) \ +- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ +- && rm -fr $(distdir); }; } +- +-GZIP_ENV = --best +-distuninstallcheck_listfiles = find . -type f -print +-distcleancheck_listfiles = find . -type f -print + + distdir: $(DISTFILES) + $(am__remove_distdir) +- mkdir $(distdir) +- $(mkinstalldirs) $(distdir)/po +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ test -d $(distdir) || mkdir $(distdir) ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -421,15 +452,19 @@ + || exit 1; \ + fi; \ + done +- list='$(SUBDIRS)'; for subdir in $$list; do \ ++ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -d $(distdir)/$$subdir \ +- || mkdir $(distdir)/$$subdir \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ ++ distdir=`$(am__cd) $(distdir) && pwd`; \ ++ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" \ +- distdir=../$(distdir)/$$subdir \ ++ top_distdir="$$top_distdir" \ ++ distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -437,27 +472,49 @@ + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ +- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ ++ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) + dist-gzip: distdir +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) +- + dist-bzip2: distdir +- $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 ++ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 ++ $(am__remove_distdir) ++ ++dist-tarZ: distdir ++ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z ++ $(am__remove_distdir) ++ ++dist-shar: distdir ++ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz ++ $(am__remove_distdir) ++ ++dist-zip: distdir ++ -rm -f $(distdir).zip ++ zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + + dist dist-all: distdir +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz +- $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 ++ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + + # This target untars the dist file and tries a VPATH configuration. Then + # it guarantees that the distribution is self-contained by making another + # tarfile. + distcheck: dist +- $(am__remove_distdir) +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ++ case '$(DIST_ARCHIVES)' in \ ++ *.tar.gz*) \ ++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ ++ *.tar.bz2*) \ ++ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ ++ *.tar.Z*) \ ++ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ ++ *.shar.gz*) \ ++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ ++ *.zip*) \ ++ unzip $(distdir).zip ;;\ ++ esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst +@@ -477,19 +534,20 @@ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ +- (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ ++ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ +- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ +- && rm -f $(distdir).tar.gz \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist \ ++ && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) +- @echo "$(distdir).tar.gz is ready for distribution" | \ +- sed 'h;s/./=/g;p;x;p;x' ++ @(echo "$(distdir) archives ready for distribution: "; \ ++ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ ++ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' + distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ +@@ -513,7 +571,6 @@ + all-am: Makefile config.h + installdirs: installdirs-recursive + installdirs-am: +- + install: install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive +@@ -534,7 +591,7 @@ + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + + maintainer-clean-generic: +@@ -547,25 +604,35 @@ + distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ +- distclean-tags ++distclean-am: clean-am distclean-generic distclean-hdr \ ++ distclean-libtool distclean-tags + + dvi: dvi-recursive + + dvi-am: + ++html: html-recursive ++ + info: info-recursive + + info-am: + + install-data-am: + ++install-dvi: install-dvi-recursive ++ + install-exec-am: + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -586,27 +653,26 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ +- clean-generic clean-libtool clean-recursive ctags \ +- ctags-recursive dist dist-all dist-bzip2 dist-gzip distcheck \ +- distclean distclean-generic distclean-hdr distclean-libtool \ +- distclean-recursive distclean-tags distcleancheck distdir \ +- distuninstallcheck dvi dvi-am dvi-recursive info info-am \ +- info-recursive install install-am install-data install-data-am \ +- install-data-recursive install-exec install-exec-am \ +- install-exec-recursive install-info install-info-am \ +- install-info-recursive install-man install-recursive \ +- install-strip installcheck installcheck-am installdirs \ +- installdirs-am installdirs-recursive maintainer-clean \ +- maintainer-clean-generic maintainer-clean-recursive mostlyclean \ +- mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ +- pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ +- tags-recursive uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am am--refresh check check-am clean clean-generic \ ++ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ ++ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ ++ distclean-generic distclean-hdr distclean-libtool \ ++ distclean-tags distcleancheck distdir distuninstallcheck dvi \ ++ dvi-am html html-am info info-am install install-am \ ++ install-data install-data-am install-dvi install-dvi-am \ ++ install-exec install-exec-am install-html install-html-am \ ++ install-info install-info-am install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ ++ installcheck installcheck-am installdirs installdirs-am \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags tags-recursive uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/bumpscope/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/bumpscope/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/bumpscope/Makefile.in 2006-03-21 05:48:54.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/bumpscope/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/bumpscope ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_bumpscope_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_bumpscope_la_OBJECTS = actor_bumpscope.lo bump_scope.lo ++actor_bumpscope_la_OBJECTS = $(am_actor_bumpscope_la_OBJECTS) ++actor_bumpscope_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_bumpscope_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_bumpscope_la_SOURCES) ++DIST_SOURCES = $(actor_bumpscope_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,112 +193,116 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_bumpscope.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_bumpscope_la_LDFLAGS = -module -avoid-version +- ++actor_bumpscope_la_LIBADD = $(LIBVISUAL_LIBS) + actor_bumpscope_la_SOURCES = actor_bumpscope.c \ + actor_bumpscope.h \ + bump_scope.c \ + bump_scope.h + +-subdir = plugins/actor/bumpscope +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_bumpscope_la_LIBADD = +-am_actor_bumpscope_la_OBJECTS = actor_bumpscope.lo bump_scope.lo +-actor_bumpscope_la_OBJECTS = $(am_actor_bumpscope_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_bumpscope.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/bump_scope.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_bumpscope_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_bumpscope_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/bumpscope/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/bumpscope/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_bumpscope.la: $(actor_bumpscope_la_OBJECTS) $(actor_bumpscope_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_bumpscope_la_LDFLAGS) $(actor_bumpscope_la_OBJECTS) $(actor_bumpscope_la_LIBADD) $(LIBS) ++ $(actor_bumpscope_la_LINK) -rpath $(actor_plugindir) $(actor_bumpscope_la_OBJECTS) $(actor_bumpscope_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -273,37 +311,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bump_scope.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -311,18 +337,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -331,6 +345,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -342,10 +357,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -368,28 +384,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -403,9 +414,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -425,7 +437,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -439,24 +451,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -477,20 +499,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/corona/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/corona/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/corona/Makefile.in 2006-03-21 05:48:54.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/corona/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,62 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/corona ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_corona_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_corona_la_OBJECTS = actor_corona.lo corona.lo palette.lo ++actor_corona_la_OBJECTS = $(am_actor_corona_la_OBJECTS) ++actor_corona_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ ++ $(CXXFLAGS) $(actor_corona_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++CXXLD = $(CXX) ++CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_corona_la_SOURCES) ++DIST_SOURCES = $(actor_corona_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +115,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +139,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +150,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +166,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +174,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,38 +202,46 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_corona.la +- + AM_CXXFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_corona_la_LDFLAGS = -module -avoid-version +- ++actor_corona_la_LIBADD = $(LIBVISUAL_LIBS) + actor_corona_la_SOURCES = actor_corona.cpp \ + autopal.h \ + corona.cpp \ +@@ -199,83 +250,71 @@ + palette.cpp \ + palette.h + +-subdir = plugins/actor/corona +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_corona_la_LIBADD = +-am_actor_corona_la_OBJECTS = actor_corona.lo corona.lo palette.lo +-actor_corona_la_OBJECTS = $(am_actor_corona_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_corona.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/corona.Plo ./$(DEPDIR)/palette.Plo +-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ +- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +- $(AM_CXXFLAGS) $(CXXFLAGS) +-CXXLD = $(CXX) +-CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_corona_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_corona_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .cpp .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/corona/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/corona/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_corona.la: $(actor_corona_la_OBJECTS) $(actor_corona_la_DEPENDENCIES) +- $(CXXLINK) -rpath $(actor_plugindir) $(actor_corona_la_LDFLAGS) $(actor_corona_la_OBJECTS) $(actor_corona_la_LIBADD) $(LIBS) ++ $(actor_corona_la_LINK) -rpath $(actor_plugindir) $(actor_corona_la_OBJECTS) $(actor_corona_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -285,37 +324,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palette.Plo@am__quote@ + + .cpp.o: +-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCXX_TRUE@ fi ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + + .cpp.obj: +-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCXX_TRUE@ fi ++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + + .cpp.lo: +-@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCXX_TRUE@ fi ++@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -323,18 +350,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -343,6 +358,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -354,10 +370,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -380,28 +397,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -415,9 +427,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -437,7 +450,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -451,24 +464,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -489,20 +512,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/gdkpixbuf/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/gdkpixbuf/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/gdkpixbuf/Makefile.in 2006-03-21 05:48:55.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/gdkpixbuf/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/gdkpixbuf ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_gdkpixbuf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_actor_gdkpixbuf_la_OBJECTS = actor_gdkpixbuf.lo ++actor_gdkpixbuf_la_OBJECTS = $(am_actor_gdkpixbuf_la_OBJECTS) ++actor_gdkpixbuf_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_gdkpixbuf_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_gdkpixbuf_la_SOURCES) ++DIST_SOURCES = $(actor_gdkpixbuf_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) $(GTK_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,107 +194,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_gdkpixbuf.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) $(GTK_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_gdkpixbuf_la_LDFLAGS = -module -avoid-version +- ++actor_gdkpixbuf_la_LIBADD = $(LIBVISUAL_LIBS) $(GTK_LIBS) + actor_gdkpixbuf_la_SOURCES = actor_gdkpixbuf.c +-subdir = plugins/actor/gdkpixbuf +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_gdkpixbuf_la_LIBADD = +-am_actor_gdkpixbuf_la_OBJECTS = actor_gdkpixbuf.lo +-actor_gdkpixbuf_la_OBJECTS = $(am_actor_gdkpixbuf_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_gdkpixbuf.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_gdkpixbuf_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_gdkpixbuf_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/gdkpixbuf/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/gdkpixbuf/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_gdkpixbuf.la: $(actor_gdkpixbuf_la_OBJECTS) $(actor_gdkpixbuf_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_gdkpixbuf_la_LDFLAGS) $(actor_gdkpixbuf_la_OBJECTS) $(actor_gdkpixbuf_la_LIBADD) $(LIBS) ++ $(actor_gdkpixbuf_la_LINK) -rpath $(actor_plugindir) $(actor_gdkpixbuf_la_OBJECTS) $(actor_gdkpixbuf_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -267,37 +307,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_gdkpixbuf.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -305,18 +333,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -325,6 +341,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -336,10 +353,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -362,28 +380,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -397,9 +410,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -419,7 +433,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -433,24 +447,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -471,20 +495,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/gstreamer/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/gstreamer/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/gstreamer/Makefile.in 2006-03-21 05:48:55.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/gstreamer/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/gstreamer ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_gstreamer_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_actor_gstreamer_la_OBJECTS = actor_gstreamer.lo ++actor_gstreamer_la_OBJECTS = $(am_actor_gstreamer_la_OBJECTS) ++actor_gstreamer_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_gstreamer_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_gstreamer_la_SOURCES) ++DIST_SOURCES = $(actor_gstreamer_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) $(GSTREAMER_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,109 +194,114 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_gstreamer.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) $(GSTREAMER_CFLAGS) +- + INCLUDES = $(all_includes) \ + -I$(top_srcdir) + +- + actor_gstreamer_la_LDFLAGS = -module -avoid-version +- ++actor_gstreamer_la_LIBADD = $(LIBVISUAL_LIBS) $(GSTREAMER_LIBS) + actor_gstreamer_la_SOURCES = actor_gstreamer.c +-subdir = plugins/actor/gstreamer +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_gstreamer_la_LIBADD = +-am_actor_gstreamer_la_OBJECTS = actor_gstreamer.lo +-actor_gstreamer_la_OBJECTS = $(am_actor_gstreamer_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_gstreamer.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_gstreamer_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_gstreamer_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/gstreamer/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/gstreamer/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_gstreamer.la: $(actor_gstreamer_la_OBJECTS) $(actor_gstreamer_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_gstreamer_la_LDFLAGS) $(actor_gstreamer_la_OBJECTS) $(actor_gstreamer_la_LIBADD) $(LIBS) ++ $(actor_gstreamer_la_LINK) -rpath $(actor_plugindir) $(actor_gstreamer_la_OBJECTS) $(actor_gstreamer_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -269,37 +309,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_gstreamer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -307,18 +335,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -327,6 +343,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -338,10 +355,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -364,28 +382,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -399,9 +412,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -421,7 +435,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -435,24 +449,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -473,20 +497,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/infinite/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/infinite/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/infinite/Makefile.in 2006-03-21 05:48:55.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/infinite/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/infinite ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_infinite_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_infinite_la_OBJECTS = compute.lo display.lo renderer.lo \ ++ file.lo lv_infinite.lo ++actor_infinite_la_OBJECTS = $(am_actor_infinite_la_OBJECTS) ++actor_infinite_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_infinite_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_infinite_la_SOURCES) ++DIST_SOURCES = $(actor_infinite_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,115 +194,117 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_infinite.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_infinite_la_LDFLAGS = -module -avoid-version +- ++actor_infinite_la_LIBADD = $(LIBVISUAL_LIBS) + actor_infinite_la_SOURCES = compute.c compute.h \ + display.c display.h \ + renderer.c renderer.h \ + file.c lv_infinite.c \ + main.h + +-subdir = plugins/actor/infinite +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_infinite_la_LIBADD = +-am_actor_infinite_la_OBJECTS = compute.lo display.lo renderer.lo file.lo \ +- lv_infinite.lo +-actor_infinite_la_OBJECTS = $(am_actor_infinite_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/compute.Plo ./$(DEPDIR)/display.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/file.Plo ./$(DEPDIR)/lv_infinite.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/renderer.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_infinite_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_infinite_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/infinite/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/infinite/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_infinite.la: $(actor_infinite_la_OBJECTS) $(actor_infinite_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_infinite_la_LDFLAGS) $(actor_infinite_la_OBJECTS) $(actor_infinite_la_LIBADD) $(LIBS) ++ $(actor_infinite_la_LINK) -rpath $(actor_plugindir) $(actor_infinite_la_OBJECTS) $(actor_infinite_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -279,37 +316,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renderer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -317,18 +342,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -337,6 +350,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -348,10 +362,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -374,28 +389,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -409,9 +419,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -431,7 +442,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -445,24 +456,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -483,20 +504,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/jakdaw/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/jakdaw/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/jakdaw/Makefile.in 2006-03-21 05:48:55.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/jakdaw/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/jakdaw ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_jakdaw_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_jakdaw_la_OBJECTS = actor_jakdaw.lo feedback.lo plotter.lo ++actor_jakdaw_la_OBJECTS = $(am_actor_jakdaw_la_OBJECTS) ++actor_jakdaw_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_jakdaw_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_jakdaw_la_SOURCES) ++DIST_SOURCES = $(actor_jakdaw_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,38 +193,46 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_jakdaw.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_jakdaw_la_LDFLAGS = -module -avoid-version +- ++actor_jakdaw_la_LIBADD = $(LIBVISUAL_LIBS) + actor_jakdaw_la_SOURCES = actor_jakdaw.c \ + actor_jakdaw.h \ + feedback.c \ +@@ -198,75 +240,71 @@ + plotter.c \ + plotter.h + +-subdir = plugins/actor/jakdaw +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_jakdaw_la_LIBADD = +-am_actor_jakdaw_la_OBJECTS = actor_jakdaw.lo feedback.lo plotter.lo +-actor_jakdaw_la_OBJECTS = $(am_actor_jakdaw_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_jakdaw.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/feedback.Plo ./$(DEPDIR)/plotter.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_jakdaw_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_jakdaw_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/jakdaw/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/jakdaw/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_jakdaw.la: $(actor_jakdaw_la_OBJECTS) $(actor_jakdaw_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_jakdaw_la_LDFLAGS) $(actor_jakdaw_la_OBJECTS) $(actor_jakdaw_la_LIBADD) $(LIBS) ++ $(actor_jakdaw_la_LINK) -rpath $(actor_plugindir) $(actor_jakdaw_la_OBJECTS) $(actor_jakdaw_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -276,37 +314,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plotter.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -314,18 +340,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -334,6 +348,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -345,10 +360,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -371,28 +387,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -406,9 +417,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -428,7 +440,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -442,24 +454,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -480,20 +502,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/JESS/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/JESS/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/JESS/Makefile.in 2006-03-21 05:48:54.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/JESS/Makefile.in 2007-10-10 23:28:47.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/JESS ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_JESS_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_JESS_la_OBJECTS = analyser.lo distorsion.lo draw.lo \ ++ draw_low_level.lo jess.lo pal.lo projection.lo renderer.lo ++actor_JESS_la_OBJECTS = $(am_actor_JESS_la_OBJECTS) ++actor_JESS_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_JESS_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_JESS_la_SOURCES) ++DIST_SOURCES = $(actor_JESS_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,38 +194,46 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_JESS.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_JESS_la_LDFLAGS = -module -avoid-version +- ++actor_JESS_la_LIBADD = $(LIBVISUAL_LIBS) + actor_JESS_la_SOURCES = analyser.c analyser.h analyser_struct.h\ + distorsion.c distorsion.h\ + draw.c draw.h\ +@@ -201,79 +244,71 @@ + renderer.c renderer.h\ + def.h struct.h + +-subdir = plugins/actor/JESS +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_JESS_la_LIBADD = +-am_actor_JESS_la_OBJECTS = analyser.lo distorsion.lo draw.lo \ +- draw_low_level.lo jess.lo pal.lo projection.lo renderer.lo +-actor_JESS_la_OBJECTS = $(am_actor_JESS_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/analyser.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/distorsion.Plo ./$(DEPDIR)/draw.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/draw_low_level.Plo ./$(DEPDIR)/jess.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/pal.Plo ./$(DEPDIR)/projection.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/renderer.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_JESS_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_JESS_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/JESS/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/JESS/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_JESS.la: $(actor_JESS_la_OBJECTS) $(actor_JESS_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_JESS_la_LDFLAGS) $(actor_JESS_la_OBJECTS) $(actor_JESS_la_LIBADD) $(LIBS) ++ $(actor_JESS_la_LINK) -rpath $(actor_plugindir) $(actor_JESS_la_OBJECTS) $(actor_JESS_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -288,37 +323,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renderer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -326,18 +349,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -346,6 +357,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -357,10 +369,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -383,28 +396,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -418,9 +426,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -440,7 +449,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -454,24 +463,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -492,20 +511,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_analyzer/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/lv_analyzer/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/lv_analyzer/Makefile.in 2006-03-21 05:48:55.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_analyzer/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/lv_analyzer ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_lv_analyzer_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_lv_analyzer_la_OBJECTS = actor_lv_analyzer.lo ++actor_lv_analyzer_la_OBJECTS = $(am_actor_lv_analyzer_la_OBJECTS) ++actor_lv_analyzer_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_lv_analyzer_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_lv_analyzer_la_SOURCES) ++DIST_SOURCES = $(actor_lv_analyzer_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,109 +193,114 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_lv_analyzer.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) \ + -I$(top_srcdir) + +- + actor_lv_analyzer_la_LDFLAGS = -module -avoid-version +- ++actor_lv_analyzer_la_LIBADD = $(LIBVISUAL_LIBS) + actor_lv_analyzer_la_SOURCES = actor_lv_analyzer.c +-subdir = plugins/actor/lv_analyzer +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_lv_analyzer_la_LIBADD = +-am_actor_lv_analyzer_la_OBJECTS = actor_lv_analyzer.lo +-actor_lv_analyzer_la_OBJECTS = $(am_actor_lv_analyzer_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_lv_analyzer.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_lv_analyzer_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_lv_analyzer_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/lv_analyzer/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/lv_analyzer/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_lv_analyzer.la: $(actor_lv_analyzer_la_OBJECTS) $(actor_lv_analyzer_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_lv_analyzer_la_LDFLAGS) $(actor_lv_analyzer_la_OBJECTS) $(actor_lv_analyzer_la_LIBADD) $(LIBS) ++ $(actor_lv_analyzer_la_LINK) -rpath $(actor_plugindir) $(actor_lv_analyzer_la_OBJECTS) $(actor_lv_analyzer_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -269,37 +308,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_lv_analyzer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -307,18 +334,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -327,6 +342,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -338,10 +354,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -364,28 +381,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -399,9 +411,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -421,7 +434,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -435,24 +448,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -473,20 +496,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_gltest/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/lv_gltest/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/lv_gltest/Makefile.in 2006-03-21 05:48:55.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_gltest/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,55 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/lv_gltest ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_lv_gltest_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_actor_lv_gltest_la_OBJECTS = actor_lv_gltest_la-actor_lv_gltest.lo ++actor_lv_gltest_la_OBJECTS = $(am_actor_lv_gltest_la_OBJECTS) ++actor_lv_gltest_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) \ ++ $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) \ ++ $(actor_lv_gltest_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_lv_gltest_la_SOURCES) ++DIST_SOURCES = $(actor_lv_gltest_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +108,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +143,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +159,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +167,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,105 +195,111 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_lv_gltest.la +- + actor_lv_gltest_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS) + actor_lv_gltest_la_LDFLAGS = -module -avoid-version +-actor_lv_gltest_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU ++actor_lv_gltest_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU + actor_lv_gltest_la_SOURCES = actor_lv_gltest.c +-subdir = plugins/actor/lv_gltest +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_lv_gltest_la_LIBADD = +-am_actor_lv_gltest_la_OBJECTS = actor_lv_gltest_la-actor_lv_gltest.lo +-actor_lv_gltest_la_OBJECTS = $(am_actor_lv_gltest_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = \ +-@AMDEP_TRUE@ ./$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_lv_gltest_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_lv_gltest_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/lv_gltest/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/lv_gltest/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_lv_gltest.la: $(actor_lv_gltest_la_OBJECTS) $(actor_lv_gltest_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_lv_gltest_la_LDFLAGS) $(actor_lv_gltest_la_OBJECTS) $(actor_lv_gltest_la_LIBADD) $(LIBS) ++ $(actor_lv_gltest_la_LINK) -rpath $(actor_plugindir) $(actor_lv_gltest_la_OBJECTS) $(actor_lv_gltest_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -264,70 +307,32 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +- +-actor_lv_gltest_la-actor_lv_gltest.o: actor_lv_gltest.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -MT actor_lv_gltest_la-actor_lv_gltest.o -MD -MP -MF "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_lv_gltest_la-actor_lv_gltest.o `test -f 'actor_lv_gltest.c' || echo '$(srcdir)/'`actor_lv_gltest.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo" "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_lv_gltest.c' object='actor_lv_gltest_la-actor_lv_gltest.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Po' tmpdepfile='$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -c -o actor_lv_gltest_la-actor_lv_gltest.o `test -f 'actor_lv_gltest.c' || echo '$(srcdir)/'`actor_lv_gltest.c +- +-actor_lv_gltest_la-actor_lv_gltest.obj: actor_lv_gltest.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -MT actor_lv_gltest_la-actor_lv_gltest.obj -MD -MP -MF "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_lv_gltest_la-actor_lv_gltest.obj `if test -f 'actor_lv_gltest.c'; then $(CYGPATH_W) 'actor_lv_gltest.c'; else $(CYGPATH_W) '$(srcdir)/actor_lv_gltest.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo" "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_lv_gltest.c' object='actor_lv_gltest_la-actor_lv_gltest.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Po' tmpdepfile='$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -c -o actor_lv_gltest_la-actor_lv_gltest.obj `if test -f 'actor_lv_gltest.c'; then $(CYGPATH_W) 'actor_lv_gltest.c'; else $(CYGPATH_W) '$(srcdir)/actor_lv_gltest.c'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + actor_lv_gltest_la-actor_lv_gltest.lo: actor_lv_gltest.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -MT actor_lv_gltest_la-actor_lv_gltest.lo -MD -MP -MF "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_lv_gltest_la-actor_lv_gltest.lo `test -f 'actor_lv_gltest.c' || echo '$(srcdir)/'`actor_lv_gltest.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo" "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -MT actor_lv_gltest_la-actor_lv_gltest.lo -MD -MP -MF $(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo -c -o actor_lv_gltest_la-actor_lv_gltest.lo `test -f 'actor_lv_gltest.c' || echo '$(srcdir)/'`actor_lv_gltest.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Tpo $(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_lv_gltest.c' object='actor_lv_gltest_la-actor_lv_gltest.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.Plo' tmpdepfile='$(DEPDIR)/actor_lv_gltest_la-actor_lv_gltest.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -c -o actor_lv_gltest_la-actor_lv_gltest.lo `test -f 'actor_lv_gltest.c' || echo '$(srcdir)/'`actor_lv_gltest.c ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_lv_gltest_la_CFLAGS) $(CFLAGS) -c -o actor_lv_gltest_la-actor_lv_gltest.lo `test -f 'actor_lv_gltest.c' || echo '$(srcdir)/'`actor_lv_gltest.c + + mostlyclean-libtool: + -rm -f *.lo +@@ -335,18 +340,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -355,6 +348,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -366,10 +360,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -392,28 +387,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -427,9 +417,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -449,7 +440,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -463,24 +454,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -501,20 +502,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_scope/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/lv_scope/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/lv_scope/Makefile.in 2006-03-21 05:48:56.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_scope/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/lv_scope ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_lv_scope_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_lv_scope_la_OBJECTS = actor_lv_scope.lo ++actor_lv_scope_la_OBJECTS = $(am_actor_lv_scope_la_OBJECTS) ++actor_lv_scope_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_lv_scope_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_lv_scope_la_SOURCES) ++DIST_SOURCES = $(actor_lv_scope_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,107 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_lv_scope.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_lv_scope_la_LDFLAGS = -module -avoid-version +- ++actor_lv_scope_la_LIBADD = $(LIBVISUAL_LIBS) + actor_lv_scope_la_SOURCES = actor_lv_scope.c +-subdir = plugins/actor/lv_scope +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_lv_scope_la_LIBADD = +-am_actor_lv_scope_la_OBJECTS = actor_lv_scope.lo +-actor_lv_scope_la_OBJECTS = $(am_actor_lv_scope_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_lv_scope.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_lv_scope_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_lv_scope_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/lv_scope/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/lv_scope/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_lv_scope.la: $(actor_lv_scope_la_OBJECTS) $(actor_lv_scope_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_lv_scope_la_LDFLAGS) $(actor_lv_scope_la_OBJECTS) $(actor_lv_scope_la_LIBADD) $(LIBS) ++ $(actor_lv_scope_la_LINK) -rpath $(actor_plugindir) $(actor_lv_scope_la_OBJECTS) $(actor_lv_scope_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -267,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_lv_scope.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -305,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -325,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -336,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -362,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -397,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -419,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -433,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -471,20 +494,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/madspin/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/madspin/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/madspin/Makefile.in 2006-03-21 05:48:56.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/madspin/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,12 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ ++ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +31,57 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/madspin ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" \ ++ "$(DESTDIR)$(imagesdir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_madspin_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_actor_madspin_la_OBJECTS = actor_madspin_la-madspin.lo ++actor_madspin_la_OBJECTS = $(am_actor_madspin_la_OBJECTS) ++actor_madspin_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(actor_madspin_la_CFLAGS) \ ++ $(CFLAGS) $(actor_madspin_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_madspin_la_SOURCES) ++DIST_SOURCES = $(actor_madspin_la_SOURCES) ++imagesDATA_INSTALL = $(INSTALL_DATA) ++DATA = $(images_DATA) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +111,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +146,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +162,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +170,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,113 +198,116 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + imagesdir = $(LIBVISUAL_PLUGINS_DATA_DIR)/actor/actor_madspin + images_DATA = star1.bmp \ + star2.bmp + +- + EXTRA_DIST = $(images_DATA) +- + actor_plugin_LTLIBRARIES = actor_madspin.la +- + actor_madspin_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) -DSTAR_DIR=\""$(imagesdir)/"\" + actor_madspin_la_LDFLAGS = -module -avoid-version +-actor_madspin_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL ++actor_madspin_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL + actor_madspin_la_SOURCES = madspin.c +-subdir = plugins/actor/madspin +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_madspin_la_LIBADD = +-am_actor_madspin_la_OBJECTS = actor_madspin_la-madspin.lo +-actor_madspin_la_OBJECTS = $(am_actor_madspin_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_madspin_la-madspin.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_madspin_la_SOURCES) +-DATA = $(images_DATA) +- +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_madspin_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/madspin/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/madspin/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_madspin.la: $(actor_madspin_la_OBJECTS) $(actor_madspin_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_madspin_la_LDFLAGS) $(actor_madspin_la_OBJECTS) $(actor_madspin_la_LIBADD) $(LIBS) ++ $(actor_madspin_la_LINK) -rpath $(actor_plugindir) $(actor_madspin_la_OBJECTS) $(actor_madspin_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -272,107 +315,56 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_madspin_la-madspin.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +- +-actor_madspin_la-madspin.o: madspin.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -MT actor_madspin_la-madspin.o -MD -MP -MF "$(DEPDIR)/actor_madspin_la-madspin.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_madspin_la-madspin.o `test -f 'madspin.c' || echo '$(srcdir)/'`madspin.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_madspin_la-madspin.Tpo" "$(DEPDIR)/actor_madspin_la-madspin.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_madspin_la-madspin.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='madspin.c' object='actor_madspin_la-madspin.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_madspin_la-madspin.Po' tmpdepfile='$(DEPDIR)/actor_madspin_la-madspin.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -c -o actor_madspin_la-madspin.o `test -f 'madspin.c' || echo '$(srcdir)/'`madspin.c +- +-actor_madspin_la-madspin.obj: madspin.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -MT actor_madspin_la-madspin.obj -MD -MP -MF "$(DEPDIR)/actor_madspin_la-madspin.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_madspin_la-madspin.obj `if test -f 'madspin.c'; then $(CYGPATH_W) 'madspin.c'; else $(CYGPATH_W) '$(srcdir)/madspin.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_madspin_la-madspin.Tpo" "$(DEPDIR)/actor_madspin_la-madspin.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_madspin_la-madspin.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='madspin.c' object='actor_madspin_la-madspin.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_madspin_la-madspin.Po' tmpdepfile='$(DEPDIR)/actor_madspin_la-madspin.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -c -o actor_madspin_la-madspin.obj `if test -f 'madspin.c'; then $(CYGPATH_W) 'madspin.c'; else $(CYGPATH_W) '$(srcdir)/madspin.c'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + actor_madspin_la-madspin.lo: madspin.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -MT actor_madspin_la-madspin.lo -MD -MP -MF "$(DEPDIR)/actor_madspin_la-madspin.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_madspin_la-madspin.lo `test -f 'madspin.c' || echo '$(srcdir)/'`madspin.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_madspin_la-madspin.Tpo" "$(DEPDIR)/actor_madspin_la-madspin.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_madspin_la-madspin.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -MT actor_madspin_la-madspin.lo -MD -MP -MF $(DEPDIR)/actor_madspin_la-madspin.Tpo -c -o actor_madspin_la-madspin.lo `test -f 'madspin.c' || echo '$(srcdir)/'`madspin.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/actor_madspin_la-madspin.Tpo $(DEPDIR)/actor_madspin_la-madspin.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='madspin.c' object='actor_madspin_la-madspin.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_madspin_la-madspin.Plo' tmpdepfile='$(DEPDIR)/actor_madspin_la-madspin.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -c -o actor_madspin_la-madspin.lo `test -f 'madspin.c' || echo '$(srcdir)/'`madspin.c ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_madspin_la_CFLAGS) $(CFLAGS) -c -o actor_madspin_la-madspin.lo `test -f 'madspin.c' || echo '$(srcdir)/'`madspin.c + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs +- +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +-imagesDATA_INSTALL = $(INSTALL_DATA) + install-imagesDATA: $(images_DATA) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(imagesdir) ++ test -z "$(imagesdir)" || $(MKDIR_P) "$(DESTDIR)$(imagesdir)" + @list='$(images_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(imagesDATA_INSTALL) $$d$$p $(DESTDIR)$(imagesdir)/$$f"; \ +- $(imagesDATA_INSTALL) $$d$$p $(DESTDIR)$(imagesdir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(imagesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(imagesdir)/$$f'"; \ ++ $(imagesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(imagesdir)/$$f"; \ + done + + uninstall-imagesDATA: + @$(NORMAL_UNINSTALL) + @list='$(images_DATA)'; for p in $$list; do \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " rm -f $(DESTDIR)$(imagesdir)/$$f"; \ +- rm -f $(DESTDIR)$(imagesdir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " rm -f '$(DESTDIR)$(imagesdir)/$$f'"; \ ++ rm -f "$(DESTDIR)$(imagesdir)/$$f"; \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -381,6 +373,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -392,10 +385,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -418,28 +412,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -453,9 +442,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) $(DATA) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) $(DESTDIR)$(imagesdir) ++ for dir in "$(DESTDIR)$(actor_plugindir)" "$(DESTDIR)$(imagesdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -475,7 +465,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -489,24 +479,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES install-imagesDATA + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -527,21 +527,25 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-imagesDATA \ +- uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-imagesDATA ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-imagesDATA \ +- install-info install-info-am install-man install-strip \ +- installcheck installcheck-am installdirs maintainer-clean \ ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-imagesDATA install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-imagesDATA uninstall-info-am ++ uninstall-imagesDATA + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/Makefile.in 2006-03-21 05:48:54.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,17 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +29,34 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +86,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +121,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +137,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +145,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,36 +173,45 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + SUBDIRS = $(build_actor_plugins) +- + DIST_SUBDIRS = \ + bumpscope \ + corona \ +- G-Force \ + gdkpixbuf \ + gstreamer \ + infinite \ +@@ -201,27 +225,38 @@ + oinksie \ + pseudotoad_flower + +-subdir = plugins/actor +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +- +-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ +- ps-recursive install-info-recursive uninstall-info-recursive \ +- all-recursive install-data-recursive install-exec-recursive \ +- installdirs-recursive install-recursive uninstall-recursive \ +- check-recursive installcheck-recursive +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am + all: all-recursive + + .SUFFIXES: +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + mostlyclean-libtool: + -rm -f *.lo +@@ -229,10 +264,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. + # To change the values of `make' variables: instead of editing Makefiles, +@@ -240,7 +271,13 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -252,15 +289,20 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++$(RECURSIVE_CLEAN_TARGETS): ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -281,7 +323,7 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done && test -z "$$fail" + tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -292,14 +334,6 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -308,19 +342,22 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- if (etags --etags-include --version) >/dev/null 2>&1; then \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ ++ empty_fix=.; \ + else \ + include_option=--include; \ ++ empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -f $$subdir/TAGS && \ ++ test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ +@@ -330,10 +367,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -356,28 +394,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -390,13 +423,17 @@ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -d $(distdir)/$$subdir \ +- || mkdir $(distdir)/$$subdir \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ ++ distdir=`$(am__cd) $(distdir) && pwd`; \ ++ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" \ +- distdir=../$(distdir)/$$subdir \ ++ top_distdir="$$top_distdir" \ ++ distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -406,7 +443,6 @@ + all-am: Makefile + installdirs: installdirs-recursive + installdirs-am: +- + install: install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive +@@ -426,7 +462,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -437,25 +473,34 @@ + + distclean: distclean-recursive + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-recursive + + dvi-am: + ++html: html-recursive ++ + info: info-recursive + + info-am: + + install-data-am: + ++install-dvi: install-dvi-recursive ++ + install-exec-am: + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -474,26 +519,24 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ +- clean-generic clean-libtool clean-recursive ctags \ +- ctags-recursive distclean distclean-generic distclean-libtool \ +- distclean-recursive distclean-tags distdir dvi dvi-am \ +- dvi-recursive info info-am info-recursive install install-am \ +- install-data install-data-am install-data-recursive \ +- install-exec install-exec-am install-exec-recursive \ +- install-info install-info-am install-info-recursive install-man \ +- install-recursive install-strip installcheck installcheck-am \ +- installdirs installdirs-am installdirs-recursive \ +- maintainer-clean maintainer-clean-generic \ +- maintainer-clean-recursive mostlyclean mostlyclean-generic \ +- mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ +- pdf-recursive ps ps-am ps-recursive tags tags-recursive \ +- uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am check check-am clean clean-generic clean-libtool \ ++ ctags ctags-recursive distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/nastyfft/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/nastyfft/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/nastyfft/Makefile.in 2006-03-21 05:48:56.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/nastyfft/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,55 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/nastyfft ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_nastyfft_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_actor_nastyfft_la_OBJECTS = actor_nastyfft_la-actor_nastyfft.lo ++actor_nastyfft_la_OBJECTS = $(am_actor_nastyfft_la_OBJECTS) ++actor_nastyfft_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) \ ++ $(actor_nastyfft_la_CFLAGS) $(CFLAGS) \ ++ $(actor_nastyfft_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_nastyfft_la_SOURCES) ++DIST_SOURCES = $(actor_nastyfft_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +108,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +143,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +159,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +167,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,104 +195,111 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_nastyfft.la +- + actor_nastyfft_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS) + actor_nastyfft_la_LDFLAGS = -module -avoid-version +-actor_nastyfft_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU ++actor_nastyfft_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU + actor_nastyfft_la_SOURCES = actor_nastyfft.c +-subdir = plugins/actor/nastyfft +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_nastyfft_la_LIBADD = +-am_actor_nastyfft_la_OBJECTS = actor_nastyfft_la-actor_nastyfft.lo +-actor_nastyfft_la_OBJECTS = $(am_actor_nastyfft_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_nastyfft_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_nastyfft_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/nastyfft/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/nastyfft/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_nastyfft.la: $(actor_nastyfft_la_OBJECTS) $(actor_nastyfft_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_nastyfft_la_LDFLAGS) $(actor_nastyfft_la_OBJECTS) $(actor_nastyfft_la_LIBADD) $(LIBS) ++ $(actor_nastyfft_la_LINK) -rpath $(actor_plugindir) $(actor_nastyfft_la_OBJECTS) $(actor_nastyfft_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -263,70 +307,32 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +- +-actor_nastyfft_la-actor_nastyfft.o: actor_nastyfft.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -MT actor_nastyfft_la-actor_nastyfft.o -MD -MP -MF "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_nastyfft_la-actor_nastyfft.o `test -f 'actor_nastyfft.c' || echo '$(srcdir)/'`actor_nastyfft.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo" "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_nastyfft.c' object='actor_nastyfft_la-actor_nastyfft.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Po' tmpdepfile='$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -c -o actor_nastyfft_la-actor_nastyfft.o `test -f 'actor_nastyfft.c' || echo '$(srcdir)/'`actor_nastyfft.c +- +-actor_nastyfft_la-actor_nastyfft.obj: actor_nastyfft.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -MT actor_nastyfft_la-actor_nastyfft.obj -MD -MP -MF "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_nastyfft_la-actor_nastyfft.obj `if test -f 'actor_nastyfft.c'; then $(CYGPATH_W) 'actor_nastyfft.c'; else $(CYGPATH_W) '$(srcdir)/actor_nastyfft.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo" "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_nastyfft.c' object='actor_nastyfft_la-actor_nastyfft.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Po' tmpdepfile='$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -c -o actor_nastyfft_la-actor_nastyfft.obj `if test -f 'actor_nastyfft.c'; then $(CYGPATH_W) 'actor_nastyfft.c'; else $(CYGPATH_W) '$(srcdir)/actor_nastyfft.c'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + actor_nastyfft_la-actor_nastyfft.lo: actor_nastyfft.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -MT actor_nastyfft_la-actor_nastyfft.lo -MD -MP -MF "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_nastyfft_la-actor_nastyfft.lo `test -f 'actor_nastyfft.c' || echo '$(srcdir)/'`actor_nastyfft.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo" "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -MT actor_nastyfft_la-actor_nastyfft.lo -MD -MP -MF $(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo -c -o actor_nastyfft_la-actor_nastyfft.lo `test -f 'actor_nastyfft.c' || echo '$(srcdir)/'`actor_nastyfft.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Tpo $(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_nastyfft.c' object='actor_nastyfft_la-actor_nastyfft.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.Plo' tmpdepfile='$(DEPDIR)/actor_nastyfft_la-actor_nastyfft.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -c -o actor_nastyfft_la-actor_nastyfft.lo `test -f 'actor_nastyfft.c' || echo '$(srcdir)/'`actor_nastyfft.c ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_nastyfft_la_CFLAGS) $(CFLAGS) -c -o actor_nastyfft_la-actor_nastyfft.lo `test -f 'actor_nastyfft.c' || echo '$(srcdir)/'`actor_nastyfft.c + + mostlyclean-libtool: + -rm -f *.lo +@@ -334,18 +340,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -354,6 +348,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -365,10 +360,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -391,28 +387,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -426,9 +417,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -448,7 +440,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -462,24 +454,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -500,20 +502,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/oinksie/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/oinksie/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/oinksie/Makefile.in 2006-03-21 05:48:57.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/oinksie/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,56 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/oinksie ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_oinksie_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_actor_oinksie_la_OBJECTS = actor_oinksie.lo oinksie.lo config.lo \ ++ gfx-background.lo gfx-misc.lo gfx-scope.lo screen.lo audio.lo \ ++ gfx-analyzer.lo gfx-blur.lo gfx-palette.lo misc.lo scene.lo \ ++ table.lo ++actor_oinksie_la_OBJECTS = $(am_actor_oinksie_la_OBJECTS) ++actor_oinksie_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(actor_oinksie_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_oinksie_la_SOURCES) ++DIST_SOURCES = $(actor_oinksie_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +109,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +133,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +144,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +160,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +168,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,38 +196,46 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_oinksie.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + actor_oinksie_la_LDFLAGS = -module -avoid-version +- ++actor_oinksie_la_LIBADD = $(LIBVISUAL_LIBS) + actor_oinksie_la_SOURCES = actor_oinksie.c\ + oinksie.c oinksie.h\ + config.c config.h\ +@@ -207,85 +252,71 @@ + table.c table.h\ + config-defines.h common.h + +-subdir = plugins/actor/oinksie +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_oinksie_la_LIBADD = +-am_actor_oinksie_la_OBJECTS = actor_oinksie.lo oinksie.lo config.lo \ +- gfx-background.lo gfx-misc.lo gfx-scope.lo screen.lo audio.lo \ +- gfx-analyzer.lo gfx-blur.lo gfx-palette.lo misc.lo scene.lo \ +- table.lo +-actor_oinksie_la_OBJECTS = $(am_actor_oinksie_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_oinksie.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/audio.Plo ./$(DEPDIR)/config.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/gfx-analyzer.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/gfx-background.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/gfx-blur.Plo ./$(DEPDIR)/gfx-misc.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/gfx-palette.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/gfx-scope.Plo ./$(DEPDIR)/misc.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/oinksie.Plo ./$(DEPDIR)/scene.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/screen.Plo ./$(DEPDIR)/table.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_oinksie_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_oinksie_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/oinksie/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/oinksie/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_oinksie.la: $(actor_oinksie_la_OBJECTS) $(actor_oinksie_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_oinksie_la_LDFLAGS) $(actor_oinksie_la_OBJECTS) $(actor_oinksie_la_LIBADD) $(LIBS) ++ $(actor_oinksie_la_LINK) -rpath $(actor_plugindir) $(actor_oinksie_la_OBJECTS) $(actor_oinksie_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -306,37 +337,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -344,18 +363,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -364,6 +371,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -375,10 +383,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -401,28 +410,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -436,9 +440,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -458,7 +463,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -472,24 +477,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -510,20 +525,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/actor/pseudotoad_flower/Makefile.in libvisual-plugins-0.4.0.new/plugins/actor/pseudotoad_flower/Makefile.in +--- libvisual-plugins-0.4.0/plugins/actor/pseudotoad_flower/Makefile.in 2006-03-21 05:48:57.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/actor/pseudotoad_flower/Makefile.in 2007-10-10 23:28:48.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,55 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/actor/pseudotoad_flower ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(actor_plugindir)" ++actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(actor_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++actor_flower_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_actor_flower_la_OBJECTS = actor_flower_la-actor_flower.lo \ ++ actor_flower_la-main.lo actor_flower_la-notch.lo ++actor_flower_la_OBJECTS = $(am_actor_flower_la_OBJECTS) ++actor_flower_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(actor_flower_la_CFLAGS) \ ++ $(CFLAGS) $(actor_flower_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(actor_flower_la_SOURCES) ++DIST_SOURCES = $(actor_flower_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +108,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +143,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +159,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +167,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,36 +195,45 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + actor_plugin_LTLIBRARIES = actor_flower.la +- + actor_flower_la_LDFLAGS = -module -avoid-version + actor_flower_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS) +-actor_flower_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU +- ++actor_flower_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU + actor_flower_la_SOURCES = \ + actor_flower.c \ + main.c \ +@@ -195,77 +241,71 @@ + notch.c \ + notch.h + +-subdir = plugins/actor/pseudotoad_flower +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(actor_plugin_LTLIBRARIES) +- +-actor_flower_la_LIBADD = +-am_actor_flower_la_OBJECTS = actor_flower_la-actor_flower.lo \ +- actor_flower_la-main.lo actor_flower_la-notch.lo +-actor_flower_la_OBJECTS = $(am_actor_flower_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/actor_flower_la-actor_flower.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/actor_flower_la-main.Plo \ +-@AMDEP_TRUE@ ./$(DEPDIR)/actor_flower_la-notch.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(actor_flower_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(actor_flower_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/actor/pseudotoad_flower/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/actor/pseudotoad_flower/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-actor_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-actor_pluginLTLIBRARIES: $(actor_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ test -z "$(actor_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(actor_plugindir)" + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(actor_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(actor_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(actor_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(actor_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-actor_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(actor_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(actor_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(actor_plugindir)/$$p"; \ + done + + clean-actor_pluginLTLIBRARIES: + -test -z "$(actor_plugin_LTLIBRARIES)" || rm -f $(actor_plugin_LTLIBRARIES) + @list='$(actor_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + actor_flower.la: $(actor_flower_la_OBJECTS) $(actor_flower_la_DEPENDENCIES) +- $(LINK) -rpath $(actor_plugindir) $(actor_flower_la_LDFLAGS) $(actor_flower_la_OBJECTS) $(actor_flower_la_LIBADD) $(LIBS) ++ $(actor_flower_la_LINK) -rpath $(actor_plugindir) $(actor_flower_la_OBJECTS) $(actor_flower_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -275,136 +315,46 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actor_flower_la-notch.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +- +-actor_flower_la-actor_flower.o: actor_flower.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-actor_flower.o -MD -MP -MF "$(DEPDIR)/actor_flower_la-actor_flower.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-actor_flower.o `test -f 'actor_flower.c' || echo '$(srcdir)/'`actor_flower.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-actor_flower.Tpo" "$(DEPDIR)/actor_flower_la-actor_flower.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-actor_flower.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_flower.c' object='actor_flower_la-actor_flower.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-actor_flower.Po' tmpdepfile='$(DEPDIR)/actor_flower_la-actor_flower.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-actor_flower.o `test -f 'actor_flower.c' || echo '$(srcdir)/'`actor_flower.c +- +-actor_flower_la-actor_flower.obj: actor_flower.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-actor_flower.obj -MD -MP -MF "$(DEPDIR)/actor_flower_la-actor_flower.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-actor_flower.obj `if test -f 'actor_flower.c'; then $(CYGPATH_W) 'actor_flower.c'; else $(CYGPATH_W) '$(srcdir)/actor_flower.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-actor_flower.Tpo" "$(DEPDIR)/actor_flower_la-actor_flower.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-actor_flower.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_flower.c' object='actor_flower_la-actor_flower.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-actor_flower.Po' tmpdepfile='$(DEPDIR)/actor_flower_la-actor_flower.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-actor_flower.obj `if test -f 'actor_flower.c'; then $(CYGPATH_W) 'actor_flower.c'; else $(CYGPATH_W) '$(srcdir)/actor_flower.c'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + actor_flower_la-actor_flower.lo: actor_flower.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-actor_flower.lo -MD -MP -MF "$(DEPDIR)/actor_flower_la-actor_flower.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-actor_flower.lo `test -f 'actor_flower.c' || echo '$(srcdir)/'`actor_flower.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-actor_flower.Tpo" "$(DEPDIR)/actor_flower_la-actor_flower.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-actor_flower.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-actor_flower.lo -MD -MP -MF $(DEPDIR)/actor_flower_la-actor_flower.Tpo -c -o actor_flower_la-actor_flower.lo `test -f 'actor_flower.c' || echo '$(srcdir)/'`actor_flower.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/actor_flower_la-actor_flower.Tpo $(DEPDIR)/actor_flower_la-actor_flower.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='actor_flower.c' object='actor_flower_la-actor_flower.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-actor_flower.Plo' tmpdepfile='$(DEPDIR)/actor_flower_la-actor_flower.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-actor_flower.lo `test -f 'actor_flower.c' || echo '$(srcdir)/'`actor_flower.c +- +-actor_flower_la-main.o: main.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-main.o -MD -MP -MF "$(DEPDIR)/actor_flower_la-main.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-main.Tpo" "$(DEPDIR)/actor_flower_la-main.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-main.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='actor_flower_la-main.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-main.Po' tmpdepfile='$(DEPDIR)/actor_flower_la-main.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c +- +-actor_flower_la-main.obj: main.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-main.obj -MD -MP -MF "$(DEPDIR)/actor_flower_la-main.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-main.Tpo" "$(DEPDIR)/actor_flower_la-main.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-main.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='actor_flower_la-main.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-main.Po' tmpdepfile='$(DEPDIR)/actor_flower_la-main.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-actor_flower.lo `test -f 'actor_flower.c' || echo '$(srcdir)/'`actor_flower.c + + actor_flower_la-main.lo: main.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-main.lo -MD -MP -MF "$(DEPDIR)/actor_flower_la-main.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-main.lo `test -f 'main.c' || echo '$(srcdir)/'`main.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-main.Tpo" "$(DEPDIR)/actor_flower_la-main.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-main.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-main.lo -MD -MP -MF $(DEPDIR)/actor_flower_la-main.Tpo -c -o actor_flower_la-main.lo `test -f 'main.c' || echo '$(srcdir)/'`main.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/actor_flower_la-main.Tpo $(DEPDIR)/actor_flower_la-main.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='actor_flower_la-main.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-main.Plo' tmpdepfile='$(DEPDIR)/actor_flower_la-main.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-main.lo `test -f 'main.c' || echo '$(srcdir)/'`main.c +- +-actor_flower_la-notch.o: notch.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-notch.o -MD -MP -MF "$(DEPDIR)/actor_flower_la-notch.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-notch.o `test -f 'notch.c' || echo '$(srcdir)/'`notch.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-notch.Tpo" "$(DEPDIR)/actor_flower_la-notch.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-notch.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='notch.c' object='actor_flower_la-notch.o' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-notch.Po' tmpdepfile='$(DEPDIR)/actor_flower_la-notch.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-notch.o `test -f 'notch.c' || echo '$(srcdir)/'`notch.c +- +-actor_flower_la-notch.obj: notch.c +-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-notch.obj -MD -MP -MF "$(DEPDIR)/actor_flower_la-notch.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-notch.obj `if test -f 'notch.c'; then $(CYGPATH_W) 'notch.c'; else $(CYGPATH_W) '$(srcdir)/notch.c'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-notch.Tpo" "$(DEPDIR)/actor_flower_la-notch.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-notch.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='notch.c' object='actor_flower_la-notch.obj' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-notch.Po' tmpdepfile='$(DEPDIR)/actor_flower_la-notch.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-notch.obj `if test -f 'notch.c'; then $(CYGPATH_W) 'notch.c'; else $(CYGPATH_W) '$(srcdir)/notch.c'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-main.lo `test -f 'main.c' || echo '$(srcdir)/'`main.c + + actor_flower_la-notch.lo: notch.c +-@am__fastdepCC_TRUE@ if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-notch.lo -MD -MP -MF "$(DEPDIR)/actor_flower_la-notch.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o actor_flower_la-notch.lo `test -f 'notch.c' || echo '$(srcdir)/'`notch.c; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/actor_flower_la-notch.Tpo" "$(DEPDIR)/actor_flower_la-notch.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/actor_flower_la-notch.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -MT actor_flower_la-notch.lo -MD -MP -MF $(DEPDIR)/actor_flower_la-notch.Tpo -c -o actor_flower_la-notch.lo `test -f 'notch.c' || echo '$(srcdir)/'`notch.c ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/actor_flower_la-notch.Tpo $(DEPDIR)/actor_flower_la-notch.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='notch.c' object='actor_flower_la-notch.lo' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/actor_flower_la-notch.Plo' tmpdepfile='$(DEPDIR)/actor_flower_la-notch.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-notch.lo `test -f 'notch.c' || echo '$(srcdir)/'`notch.c ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(actor_flower_la_CFLAGS) $(CFLAGS) -c -o actor_flower_la-notch.lo `test -f 'notch.c' || echo '$(srcdir)/'`notch.c + + mostlyclean-libtool: + -rm -f *.lo +@@ -412,18 +362,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -432,6 +370,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -443,10 +382,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -469,28 +409,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -504,9 +439,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(actor_plugindir) ++ for dir in "$(DESTDIR)$(actor_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -526,7 +462,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -540,24 +476,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-actor_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -578,20 +524,24 @@ + + ps-am: + +-uninstall-am: uninstall-actor_pluginLTLIBRARIES uninstall-info-am ++uninstall-am: uninstall-actor_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean \ +- clean-actor_pluginLTLIBRARIES clean-generic clean-libtool ctags \ +- distclean distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-actor_pluginLTLIBRARIES install-am install-data \ +- install-data-am install-exec install-exec-am install-info \ +- install-info-am install-man install-strip installcheck \ +- installcheck-am installdirs maintainer-clean \ +- maintainer-clean-generic mostlyclean mostlyclean-compile \ +- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-actor_pluginLTLIBRARIES uninstall-am \ +- uninstall-info-am ++ clean-actor_pluginLTLIBRARIES clean-generic clean-libtool \ ++ ctags distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-actor_pluginLTLIBRARIES \ ++ install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags uninstall \ ++ uninstall-actor_pluginLTLIBRARIES uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/input/alsa/Makefile.in libvisual-plugins-0.4.0.new/plugins/input/alsa/Makefile.in +--- libvisual-plugins-0.4.0/plugins/input/alsa/Makefile.in 2006-03-21 05:48:57.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/alsa/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/input/alsa ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(input_plugindir)" ++input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(input_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++input_alsa_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_input_alsa_la_OBJECTS = input_alsa.lo ++input_alsa_la_OBJECTS = $(am_input_alsa_la_OBJECTS) ++input_alsa_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(input_alsa_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(input_alsa_la_SOURCES) ++DIST_SOURCES = $(input_alsa_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(ALSA_LIBS) $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,107 +194,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + input_plugin_LTLIBRARIES = input_alsa.la +- + AM_CFLAGS = $(ALSA_CFLAGS) $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) -I$(top_builddir) +- + input_alsa_la_LDFLAGS = -module -avoid-version +- ++input_alsa_la_LIBADD = $(ALSA_LIBS) $(LIBVISUAL_LIBS) + input_alsa_la_SOURCES = input_alsa.c +-subdir = plugins/input/alsa +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(input_plugin_LTLIBRARIES) +- +-input_alsa_la_LIBADD = +-am_input_alsa_la_OBJECTS = input_alsa.lo +-input_alsa_la_OBJECTS = $(am_input_alsa_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/input_alsa.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(input_alsa_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(input_alsa_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/input/alsa/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/input/alsa/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-input_pluginLTLIBRARIES: $(input_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ test -z "$(input_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(input_plugindir)" + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(input_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(input_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-input_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(input_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(input_plugindir)/$$p"; \ + done + + clean-input_pluginLTLIBRARIES: + -test -z "$(input_plugin_LTLIBRARIES)" || rm -f $(input_plugin_LTLIBRARIES) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + input_alsa.la: $(input_alsa_la_OBJECTS) $(input_alsa_la_DEPENDENCIES) +- $(LINK) -rpath $(input_plugindir) $(input_alsa_la_LDFLAGS) $(input_alsa_la_OBJECTS) $(input_alsa_la_LIBADD) $(LIBS) ++ $(input_alsa_la_LINK) -rpath $(input_plugindir) $(input_alsa_la_OBJECTS) $(input_alsa_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -267,37 +307,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_alsa.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -305,18 +333,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -325,6 +341,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -336,10 +353,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -362,28 +380,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -397,9 +410,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ for dir in "$(DESTDIR)$(input_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -419,7 +433,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -433,24 +447,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-input_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -471,20 +495,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-input_pluginLTLIBRARIES ++uninstall-am: uninstall-input_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-input_pluginLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-input_pluginLTLIBRARIES install-man install-strip \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-input_pluginLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-input_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-input_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/input/debug/Makefile.in libvisual-plugins-0.4.0.new/plugins/input/debug/Makefile.in +--- libvisual-plugins-0.4.0/plugins/input/debug/Makefile.in 2006-03-21 05:48:57.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/debug/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/input/debug ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(input_plugindir)" ++input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(input_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++input_debug_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_input_debug_la_OBJECTS = input_debug.lo ++input_debug_la_OBJECTS = $(am_input_debug_la_OBJECTS) ++input_debug_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(input_debug_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(input_debug_la_SOURCES) ++DIST_SOURCES = $(input_debug_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + input_plugin_LTLIBRARIES = input_debug.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) -I$(top_builddir) +- + input_debug_la_LDFLAGS = -module -avoid-version ++input_debug_la_LIBADD = $(LIBVISUAL_LIBS) + input_debug_la_SOURCES = input_debug.c +-subdir = plugins/input/debug +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(input_plugin_LTLIBRARIES) +- +-input_debug_la_LIBADD = +-am_input_debug_la_OBJECTS = input_debug.lo +-input_debug_la_OBJECTS = $(am_input_debug_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/input_debug.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(input_debug_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(input_debug_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/input/debug/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/input/debug/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-input_pluginLTLIBRARIES: $(input_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ test -z "$(input_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(input_plugindir)" + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(input_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(input_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-input_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(input_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(input_plugindir)/$$p"; \ + done + + clean-input_pluginLTLIBRARIES: + -test -z "$(input_plugin_LTLIBRARIES)" || rm -f $(input_plugin_LTLIBRARIES) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + input_debug.la: $(input_debug_la_OBJECTS) $(input_debug_la_DEPENDENCIES) +- $(LINK) -rpath $(input_plugindir) $(input_debug_la_LDFLAGS) $(input_debug_la_OBJECTS) $(input_debug_la_LIBADD) $(LIBS) ++ $(input_debug_la_LINK) -rpath $(input_plugindir) $(input_debug_la_OBJECTS) $(input_debug_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_debug.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ for dir in "$(DESTDIR)$(input_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-input_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +494,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-input_pluginLTLIBRARIES ++uninstall-am: uninstall-input_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-input_pluginLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-input_pluginLTLIBRARIES install-man install-strip \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-input_pluginLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-input_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-input_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/input/esd/Makefile.in libvisual-plugins-0.4.0.new/plugins/input/esd/Makefile.in +--- libvisual-plugins-0.4.0/plugins/input/esd/Makefile.in 2006-03-21 05:48:57.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/esd/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/input/esd ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(input_plugindir)" ++input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(input_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++input_esd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_input_esd_la_OBJECTS = input_esd.lo ++input_esd_la_OBJECTS = $(am_input_esd_la_OBJECTS) ++input_esd_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(input_esd_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(input_esd_la_SOURCES) ++DIST_SOURCES = $(input_esd_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBESD_LIBS) $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +194,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + input_plugin_LTLIBRARIES = input_esd.la +- + AM_CFLAGS = $(LIBESD_CFLAGS) $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + input_esd_la_LDFLAGS = -module -avoid-version ++input_esd_la_LIBADD = $(LIBESD_LIBS) $(LIBVISUAL_LIBS) + input_esd_la_SOURCES = input_esd.c +-subdir = plugins/input/esd +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(input_plugin_LTLIBRARIES) +- +-input_esd_la_LIBADD = +-am_input_esd_la_OBJECTS = input_esd.lo +-input_esd_la_OBJECTS = $(am_input_esd_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/input_esd.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(input_esd_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(input_esd_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/input/esd/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/input/esd/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-input_pluginLTLIBRARIES: $(input_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ test -z "$(input_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(input_plugindir)" + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(input_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(input_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-input_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(input_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(input_plugindir)/$$p"; \ + done + + clean-input_pluginLTLIBRARIES: + -test -z "$(input_plugin_LTLIBRARIES)" || rm -f $(input_plugin_LTLIBRARIES) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + input_esd.la: $(input_esd_la_OBJECTS) $(input_esd_la_DEPENDENCIES) +- $(LINK) -rpath $(input_plugindir) $(input_esd_la_LDFLAGS) $(input_esd_la_OBJECTS) $(input_esd_la_LIBADD) $(LIBS) ++ $(input_esd_la_LINK) -rpath $(input_plugindir) $(input_esd_la_OBJECTS) $(input_esd_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +307,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_esd.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +333,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +341,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +353,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +380,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +410,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ for dir in "$(DESTDIR)$(input_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +433,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +447,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-input_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +495,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-input_pluginLTLIBRARIES ++uninstall-am: uninstall-input_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-input_pluginLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-input_pluginLTLIBRARIES install-man install-strip \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-input_pluginLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-input_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-input_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/input/jack/Makefile.in libvisual-plugins-0.4.0.new/plugins/input/jack/Makefile.in +--- libvisual-plugins-0.4.0/plugins/input/jack/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/jack/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,54 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/input/jack ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(input_plugindir)" ++input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(input_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++input_jack_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_1) ++am_input_jack_la_OBJECTS = input_jack.lo ++input_jack_la_OBJECTS = $(am_input_jack_la_OBJECTS) ++input_jack_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(input_jack_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(input_jack_la_SOURCES) ++DIST_SOURCES = $(input_jack_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +107,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +131,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBJACK_LIBS) $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +142,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +158,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +166,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,107 +194,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + input_plugin_LTLIBRARIES = input_jack.la +- + AM_CFLAGS = $(LIBJACK_CFLAGS) $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + input_jack_la_LDFLAGS = -module -avoid-version +- ++input_jack_la_LIBADD = $(LIBJACK_LIBS) $(LIBVISUAL_LIBS) + input_jack_la_SOURCES = input_jack.c +-subdir = plugins/input/jack +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(input_plugin_LTLIBRARIES) +- +-input_jack_la_LIBADD = +-am_input_jack_la_OBJECTS = input_jack.lo +-input_jack_la_OBJECTS = $(am_input_jack_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/input_jack.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(input_jack_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(input_jack_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/input/jack/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/input/jack/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-input_pluginLTLIBRARIES: $(input_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ test -z "$(input_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(input_plugindir)" + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(input_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(input_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-input_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(input_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(input_plugindir)/$$p"; \ + done + + clean-input_pluginLTLIBRARIES: + -test -z "$(input_plugin_LTLIBRARIES)" || rm -f $(input_plugin_LTLIBRARIES) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + input_jack.la: $(input_jack_la_OBJECTS) $(input_jack_la_DEPENDENCIES) +- $(LINK) -rpath $(input_plugindir) $(input_jack_la_LDFLAGS) $(input_jack_la_OBJECTS) $(input_jack_la_LIBADD) $(LIBS) ++ $(input_jack_la_LINK) -rpath $(input_plugindir) $(input_jack_la_OBJECTS) $(input_jack_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -267,37 +307,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_jack.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -305,18 +333,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -325,6 +341,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -336,10 +353,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -362,28 +380,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -397,9 +410,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ for dir in "$(DESTDIR)$(input_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -419,7 +433,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -433,24 +447,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-input_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -471,20 +495,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-input_pluginLTLIBRARIES ++uninstall-am: uninstall-input_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-input_pluginLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-input_pluginLTLIBRARIES install-man install-strip \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-input_pluginLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-input_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-input_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/input/Makefile.in libvisual-plugins-0.4.0.new/plugins/input/Makefile.in +--- libvisual-plugins-0.4.0/plugins/input/Makefile.in 2006-03-21 05:48:57.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,17 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +29,34 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/input ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +86,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +121,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +137,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +145,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,54 +173,75 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + SUBDIRS = $(build_input_plugins) +- + DIST_SUBDIRS = mplayer esd jack alsa debug +-subdir = plugins/input +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +- +-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ +- ps-recursive install-info-recursive uninstall-info-recursive \ +- all-recursive install-data-recursive install-exec-recursive \ +- installdirs-recursive install-recursive uninstall-recursive \ +- check-recursive installcheck-recursive +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am + all: all-recursive + + .SUFFIXES: +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/input/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/input/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + mostlyclean-libtool: + -rm -f *.lo +@@ -213,10 +249,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. + # To change the values of `make' variables: instead of editing Makefiles, +@@ -224,7 +256,13 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -236,15 +274,20 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++$(RECURSIVE_CLEAN_TARGETS): ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -265,7 +308,7 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done && test -z "$$fail" + tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -276,14 +319,6 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -292,19 +327,22 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- if (etags --etags-include --version) >/dev/null 2>&1; then \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ ++ empty_fix=.; \ + else \ + include_option=--include; \ ++ empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -f $$subdir/TAGS && \ ++ test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ +@@ -314,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -340,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -374,13 +408,17 @@ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -d $(distdir)/$$subdir \ +- || mkdir $(distdir)/$$subdir \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ ++ distdir=`$(am__cd) $(distdir) && pwd`; \ ++ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" \ +- distdir=../$(distdir)/$$subdir \ ++ top_distdir="$$top_distdir" \ ++ distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -390,7 +428,6 @@ + all-am: Makefile + installdirs: installdirs-recursive + installdirs-am: +- + install: install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive +@@ -410,7 +447,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -421,25 +458,34 @@ + + distclean: distclean-recursive + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-recursive + + dvi-am: + ++html: html-recursive ++ + info: info-recursive + + info-am: + + install-data-am: + ++install-dvi: install-dvi-recursive ++ + install-exec-am: + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -458,26 +504,24 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ +- clean-generic clean-libtool clean-recursive ctags \ +- ctags-recursive distclean distclean-generic distclean-libtool \ +- distclean-recursive distclean-tags distdir dvi dvi-am \ +- dvi-recursive info info-am info-recursive install install-am \ +- install-data install-data-am install-data-recursive \ +- install-exec install-exec-am install-exec-recursive \ +- install-info install-info-am install-info-recursive install-man \ +- install-recursive install-strip installcheck installcheck-am \ +- installdirs installdirs-am installdirs-recursive \ +- maintainer-clean maintainer-clean-generic \ +- maintainer-clean-recursive mostlyclean mostlyclean-generic \ +- mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ +- pdf-recursive ps ps-am ps-recursive tags tags-recursive \ +- uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am check check-am clean clean-generic clean-libtool \ ++ ctags ctags-recursive distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/input/mplayer/Makefile.in libvisual-plugins-0.4.0.new/plugins/input/mplayer/Makefile.in +--- libvisual-plugins-0.4.0/plugins/input/mplayer/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/input/mplayer/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/input/mplayer ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(input_plugindir)" ++input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(input_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++input_mplayer_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_input_mplayer_la_OBJECTS = input_mplayer.lo ++input_mplayer_la_OBJECTS = $(am_input_mplayer_la_OBJECTS) ++input_mplayer_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(input_mplayer_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(input_mplayer_la_SOURCES) ++DIST_SOURCES = $(input_mplayer_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + input_plugin_LTLIBRARIES = input_mplayer.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + input_mplayer_la_LDFLAGS = -module -avoid-version ++input_mplayer_la_LIBADD = $(LIBVISUAL_LIBS) + input_mplayer_la_SOURCES = input_mplayer.c +-subdir = plugins/input/mplayer +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(input_plugin_LTLIBRARIES) +- +-input_mplayer_la_LIBADD = +-am_input_mplayer_la_OBJECTS = input_mplayer.lo +-input_mplayer_la_OBJECTS = $(am_input_mplayer_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/input_mplayer.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(input_mplayer_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(input_mplayer_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/input/mplayer/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/input/mplayer/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-input_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-input_pluginLTLIBRARIES: $(input_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ test -z "$(input_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(input_plugindir)" + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(input_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(input_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(input_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(input_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-input_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(input_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(input_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(input_plugindir)/$$p"; \ + done + + clean-input_pluginLTLIBRARIES: + -test -z "$(input_plugin_LTLIBRARIES)" || rm -f $(input_plugin_LTLIBRARIES) + @list='$(input_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + input_mplayer.la: $(input_mplayer_la_OBJECTS) $(input_mplayer_la_DEPENDENCIES) +- $(LINK) -rpath $(input_plugindir) $(input_mplayer_la_LDFLAGS) $(input_mplayer_la_OBJECTS) $(input_mplayer_la_LIBADD) $(LIBS) ++ $(input_mplayer_la_LINK) -rpath $(input_plugindir) $(input_mplayer_la_OBJECTS) $(input_mplayer_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_mplayer.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(input_plugindir) ++ for dir in "$(DESTDIR)$(input_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-input_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +494,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-input_pluginLTLIBRARIES ++uninstall-am: uninstall-input_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-input_pluginLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am \ +- install-input_pluginLTLIBRARIES install-man install-strip \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am \ ++ install-input_pluginLTLIBRARIES install-man install-pdf \ ++ install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-input_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-input_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/Makefile.in libvisual-plugins-0.4.0.new/plugins/Makefile.in +--- libvisual-plugins-0.4.0/plugins/Makefile.in 2006-03-21 05:48:51.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/Makefile.in 2007-10-10 23:28:47.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,17 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = .. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +29,35 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++ETAGS = etags ++CTAGS = ctags ++DIST_SUBDIRS = $(SUBDIRS) ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +87,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +122,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +138,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +146,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,52 +174,74 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + SUBDIRS = actor input morph +-subdir = plugins +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +- +-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ +- ps-recursive install-info-recursive uninstall-info-recursive \ +- all-recursive install-data-recursive install-exec-recursive \ +- installdirs-recursive install-recursive uninstall-recursive \ +- check-recursive installcheck-recursive +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-DIST_SUBDIRS = $(SUBDIRS) + all: all-recursive + + .SUFFIXES: +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + mostlyclean-libtool: + -rm -f *.lo +@@ -211,10 +249,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. + # To change the values of `make' variables: instead of editing Makefiles, +@@ -222,7 +256,13 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -234,15 +274,20 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++$(RECURSIVE_CLEAN_TARGETS): ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -263,7 +308,7 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done && test -z "$$fail" + tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -274,14 +319,6 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -290,19 +327,22 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- if (etags --etags-include --version) >/dev/null 2>&1; then \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ ++ empty_fix=.; \ + else \ + include_option=--include; \ ++ empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -f $$subdir/TAGS && \ ++ test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ +@@ -312,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -338,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = .. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -370,15 +406,19 @@ + || exit 1; \ + fi; \ + done +- list='$(SUBDIRS)'; for subdir in $$list; do \ ++ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -d $(distdir)/$$subdir \ +- || mkdir $(distdir)/$$subdir \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ ++ distdir=`$(am__cd) $(distdir) && pwd`; \ ++ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" \ +- distdir=../$(distdir)/$$subdir \ ++ top_distdir="$$top_distdir" \ ++ distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -388,7 +428,6 @@ + all-am: Makefile + installdirs: installdirs-recursive + installdirs-am: +- + install: install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive +@@ -408,7 +447,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -419,25 +458,34 @@ + + distclean: distclean-recursive + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-recursive + + dvi-am: + ++html: html-recursive ++ + info: info-recursive + + info-am: + + install-data-am: + ++install-dvi: install-dvi-recursive ++ + install-exec-am: + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -456,26 +504,24 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ +- clean-generic clean-libtool clean-recursive ctags \ +- ctags-recursive distclean distclean-generic distclean-libtool \ +- distclean-recursive distclean-tags distdir dvi dvi-am \ +- dvi-recursive info info-am info-recursive install install-am \ +- install-data install-data-am install-data-recursive \ +- install-exec install-exec-am install-exec-recursive \ +- install-info install-info-am install-info-recursive install-man \ +- install-recursive install-strip installcheck installcheck-am \ +- installdirs installdirs-am installdirs-recursive \ +- maintainer-clean maintainer-clean-generic \ +- maintainer-clean-recursive mostlyclean mostlyclean-generic \ +- mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ +- pdf-recursive ps ps-am ps-recursive tags tags-recursive \ +- uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am check check-am clean clean-generic clean-libtool \ ++ ctags ctags-recursive distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/morph/alphablend/Makefile.in libvisual-plugins-0.4.0.new/plugins/morph/alphablend/Makefile.in +--- libvisual-plugins-0.4.0/plugins/morph/alphablend/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/alphablend/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/morph/alphablend ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(morph_plugindir)" ++morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(morph_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++morph_alphablend_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_morph_alphablend_la_OBJECTS = morph_alphablend.lo ++morph_alphablend_la_OBJECTS = $(am_morph_alphablend_la_OBJECTS) ++morph_alphablend_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(morph_alphablend_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(morph_alphablend_la_SOURCES) ++DIST_SOURCES = $(morph_alphablend_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + morph_plugin_LTLIBRARIES = morph_alphablend.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + morph_alphablend_la_LDFLAGS = -module -avoid-version ++morph_alphablend_la_LIBADD = $(LIBVISUAL_LIBS) + morph_alphablend_la_SOURCES = morph_alphablend.c +-subdir = plugins/morph/alphablend +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(morph_plugin_LTLIBRARIES) +- +-morph_alphablend_la_LIBADD = +-am_morph_alphablend_la_OBJECTS = morph_alphablend.lo +-morph_alphablend_la_OBJECTS = $(am_morph_alphablend_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/morph_alphablend.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(morph_alphablend_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(morph_alphablend_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/morph/alphablend/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/morph/alphablend/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-morph_pluginLTLIBRARIES: $(morph_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ test -z "$(morph_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(morph_plugindir)" + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(morph_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(morph_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-morph_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(morph_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(morph_plugindir)/$$p"; \ + done + + clean-morph_pluginLTLIBRARIES: + -test -z "$(morph_plugin_LTLIBRARIES)" || rm -f $(morph_plugin_LTLIBRARIES) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + morph_alphablend.la: $(morph_alphablend_la_OBJECTS) $(morph_alphablend_la_DEPENDENCIES) +- $(LINK) -rpath $(morph_plugindir) $(morph_alphablend_la_LDFLAGS) $(morph_alphablend_la_OBJECTS) $(morph_alphablend_la_LIBADD) $(LIBS) ++ $(morph_alphablend_la_LINK) -rpath $(morph_plugindir) $(morph_alphablend_la_OBJECTS) $(morph_alphablend_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph_alphablend.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ for dir in "$(DESTDIR)$(morph_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-morph_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +494,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-morph_pluginLTLIBRARIES ++uninstall-am: uninstall-morph_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-morph_pluginLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ +- install-morph_pluginLTLIBRARIES install-strip installcheck \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-morph_pluginLTLIBRARIES install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-morph_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-morph_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/morph/flash/Makefile.in libvisual-plugins-0.4.0.new/plugins/morph/flash/Makefile.in +--- libvisual-plugins-0.4.0/plugins/morph/flash/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/flash/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/morph/flash ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(morph_plugindir)" ++morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(morph_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++morph_flash_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_morph_flash_la_OBJECTS = morph_flash.lo ++morph_flash_la_OBJECTS = $(am_morph_flash_la_OBJECTS) ++morph_flash_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(morph_flash_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(morph_flash_la_SOURCES) ++DIST_SOURCES = $(morph_flash_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + morph_plugin_LTLIBRARIES = morph_flash.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + morph_flash_la_LDFLAGS = -module -avoid-version ++morph_flash_la_LIBADD = $(LIBVISUAL_LIBS) + morph_flash_la_SOURCES = morph_flash.c +-subdir = plugins/morph/flash +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(morph_plugin_LTLIBRARIES) +- +-morph_flash_la_LIBADD = +-am_morph_flash_la_OBJECTS = morph_flash.lo +-morph_flash_la_OBJECTS = $(am_morph_flash_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/morph_flash.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(morph_flash_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(morph_flash_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/morph/flash/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/morph/flash/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-morph_pluginLTLIBRARIES: $(morph_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ test -z "$(morph_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(morph_plugindir)" + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(morph_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(morph_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-morph_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(morph_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(morph_plugindir)/$$p"; \ + done + + clean-morph_pluginLTLIBRARIES: + -test -z "$(morph_plugin_LTLIBRARIES)" || rm -f $(morph_plugin_LTLIBRARIES) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + morph_flash.la: $(morph_flash_la_OBJECTS) $(morph_flash_la_DEPENDENCIES) +- $(LINK) -rpath $(morph_plugindir) $(morph_flash_la_LDFLAGS) $(morph_flash_la_OBJECTS) $(morph_flash_la_LIBADD) $(LIBS) ++ $(morph_flash_la_LINK) -rpath $(morph_plugindir) $(morph_flash_la_OBJECTS) $(morph_flash_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph_flash.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ for dir in "$(DESTDIR)$(morph_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-morph_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +494,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-morph_pluginLTLIBRARIES ++uninstall-am: uninstall-morph_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-morph_pluginLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ +- install-morph_pluginLTLIBRARIES install-strip installcheck \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-morph_pluginLTLIBRARIES install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-morph_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-morph_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/morph/Makefile.in libvisual-plugins-0.4.0.new/plugins/morph/Makefile.in +--- libvisual-plugins-0.4.0/plugins/morph/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -13,17 +13,11 @@ + # PARTICULAR PURPOSE. + + @SET_MAKE@ +- +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +29,34 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/morph ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++SOURCES = ++DIST_SOURCES = ++RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ ++ html-recursive info-recursive install-data-recursive \ ++ install-dvi-recursive install-exec-recursive \ ++ install-html-recursive install-info-recursive \ ++ install-pdf-recursive install-ps-recursive install-recursive \ ++ installcheck-recursive installdirs-recursive pdf-recursive \ ++ ps-recursive uninstall-recursive ++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ ++ distclean-recursive maintainer-clean-recursive ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +86,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -108,8 +121,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -123,6 +137,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -130,25 +145,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -158,54 +173,75 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + SUBDIRS = $(build_morph_plugins) +- + DIST_SUBDIRS = alphablend flash tentacle slide +-subdir = plugins/morph +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-DIST_SOURCES = +- +-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ +- ps-recursive install-info-recursive uninstall-info-recursive \ +- all-recursive install-data-recursive install-exec-recursive \ +- installdirs-recursive install-recursive uninstall-recursive \ +- check-recursive installcheck-recursive +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am + all: all-recursive + + .SUFFIXES: +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/morph/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/morph/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + + mostlyclean-libtool: + -rm -f *.lo +@@ -213,10 +249,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- + # This directory's subdirectories are mostly independent; you can cd + # into them and run `make' without going through this Makefile. + # To change the values of `make' variables: instead of editing Makefiles, +@@ -224,7 +256,13 @@ + # (which will cause the Makefiles to be regenerated when you run `make'); + # (2) otherwise, pass the desired values on the `make' command line. + $(RECURSIVE_TARGETS): +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -236,15 +274,20 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +-mostlyclean-recursive clean-recursive distclean-recursive \ +-maintainer-clean-recursive: +- @set fnord $$MAKEFLAGS; amf=$$2; \ ++$(RECURSIVE_CLEAN_TARGETS): ++ @failcom='exit 1'; \ ++ for f in x $$MAKEFLAGS; do \ ++ case $$f in \ ++ *=* | --[!k]*);; \ ++ *k*) failcom='fail=yes';; \ ++ esac; \ ++ done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ +@@ -265,7 +308,7 @@ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ +- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ ++ || eval $$failcom; \ + done && test -z "$$fail" + tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ +@@ -276,14 +319,6 @@ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -292,19 +327,22 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ +- if (etags --etags-include --version) >/dev/null 2>&1; then \ ++ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ ++ empty_fix=.; \ + else \ + include_option=--include; \ ++ empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -f $$subdir/TAGS && \ ++ test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ +@@ -314,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -340,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -374,13 +408,17 @@ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ +- test -d $(distdir)/$$subdir \ +- || mkdir $(distdir)/$$subdir \ ++ test -d "$(distdir)/$$subdir" \ ++ || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ ++ distdir=`$(am__cd) $(distdir) && pwd`; \ ++ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ +- top_distdir="$(top_distdir)" \ +- distdir=../$(distdir)/$$subdir \ ++ top_distdir="$$top_distdir" \ ++ distdir="$$distdir/$$subdir" \ ++ am__remove_distdir=: \ ++ am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ +@@ -390,7 +428,6 @@ + all-am: Makefile + installdirs: installdirs-recursive + installdirs-am: +- + install: install-recursive + install-exec: install-exec-recursive + install-data: install-data-recursive +@@ -410,7 +447,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -421,25 +458,34 @@ + + distclean: distclean-recursive + -rm -f Makefile +-distclean-am: clean-am distclean-generic distclean-libtool \ +- distclean-tags ++distclean-am: clean-am distclean-generic distclean-tags + + dvi: dvi-recursive + + dvi-am: + ++html: html-recursive ++ + info: info-recursive + + info-am: + + install-data-am: + ++install-dvi: install-dvi-recursive ++ + install-exec-am: + ++install-html: install-html-recursive ++ + install-info: install-info-recursive + + install-man: + ++install-pdf: install-pdf-recursive ++ ++install-ps: install-ps-recursive ++ + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +@@ -458,26 +504,24 @@ + + ps-am: + +-uninstall-am: uninstall-info-am ++uninstall-am: + +-uninstall-info: uninstall-info-recursive ++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ ++ install-strip + +-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ +- clean-generic clean-libtool clean-recursive ctags \ +- ctags-recursive distclean distclean-generic distclean-libtool \ +- distclean-recursive distclean-tags distdir dvi dvi-am \ +- dvi-recursive info info-am info-recursive install install-am \ +- install-data install-data-am install-data-recursive \ +- install-exec install-exec-am install-exec-recursive \ +- install-info install-info-am install-info-recursive install-man \ +- install-recursive install-strip installcheck installcheck-am \ +- installdirs installdirs-am installdirs-recursive \ +- maintainer-clean maintainer-clean-generic \ +- maintainer-clean-recursive mostlyclean mostlyclean-generic \ +- mostlyclean-libtool mostlyclean-recursive pdf pdf-am \ +- pdf-recursive ps ps-am ps-recursive tags tags-recursive \ +- uninstall uninstall-am uninstall-info-am \ +- uninstall-info-recursive uninstall-recursive ++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ ++ all all-am check check-am clean clean-generic clean-libtool \ ++ ctags ctags-recursive distclean distclean-generic \ ++ distclean-libtool distclean-tags distdir dvi dvi-am html \ ++ html-am info info-am install install-am install-data \ ++ install-data-am install-dvi install-dvi-am install-exec \ ++ install-exec-am install-html install-html-am install-info \ ++ install-info-am install-man install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-generic \ ++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ ++ uninstall uninstall-am + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/morph/slide/Makefile.in libvisual-plugins-0.4.0.new/plugins/morph/slide/Makefile.in +--- libvisual-plugins-0.4.0/plugins/morph/slide/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/slide/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/morph/slide ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(morph_plugindir)" ++morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(morph_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++morph_slide_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_morph_slide_la_OBJECTS = morph_slide.lo ++morph_slide_la_OBJECTS = $(am_morph_slide_la_OBJECTS) ++morph_slide_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(morph_slide_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(morph_slide_la_SOURCES) ++DIST_SOURCES = $(morph_slide_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + morph_plugin_LTLIBRARIES = morph_slide.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + morph_slide_la_LDFLAGS = -module -avoid-version ++morph_slide_la_LIBADD = $(LIBVISUAL_LIBS) + morph_slide_la_SOURCES = morph_slide.c +-subdir = plugins/morph/slide +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(morph_plugin_LTLIBRARIES) +- +-morph_slide_la_LIBADD = +-am_morph_slide_la_OBJECTS = morph_slide.lo +-morph_slide_la_OBJECTS = $(am_morph_slide_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/morph_slide.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(morph_slide_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(morph_slide_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/morph/slide/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/morph/slide/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-morph_pluginLTLIBRARIES: $(morph_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ test -z "$(morph_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(morph_plugindir)" + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(morph_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(morph_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-morph_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(morph_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(morph_plugindir)/$$p"; \ + done + + clean-morph_pluginLTLIBRARIES: + -test -z "$(morph_plugin_LTLIBRARIES)" || rm -f $(morph_plugin_LTLIBRARIES) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + morph_slide.la: $(morph_slide_la_OBJECTS) $(morph_slide_la_DEPENDENCIES) +- $(LINK) -rpath $(morph_plugindir) $(morph_slide_la_LDFLAGS) $(morph_slide_la_OBJECTS) $(morph_slide_la_LIBADD) $(LIBS) ++ $(morph_slide_la_LINK) -rpath $(morph_plugindir) $(morph_slide_la_OBJECTS) $(morph_slide_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph_slide.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ for dir in "$(DESTDIR)$(morph_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-morph_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +494,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-morph_pluginLTLIBRARIES ++uninstall-am: uninstall-morph_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-morph_pluginLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ +- install-morph_pluginLTLIBRARIES install-strip installcheck \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-morph_pluginLTLIBRARIES install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-morph_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-morph_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +diff -Nur libvisual-plugins-0.4.0/plugins/morph/tentacle/Makefile.in libvisual-plugins-0.4.0.new/plugins/morph/tentacle/Makefile.in +--- libvisual-plugins-0.4.0/plugins/morph/tentacle/Makefile.in 2006-03-21 05:48:58.000000000 +1100 ++++ libvisual-plugins-0.4.0.new/plugins/morph/tentacle/Makefile.in 2007-10-10 23:28:49.000000000 +1000 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.9 from Makefile.am. ++# Makefile.in generated by automake 1.10 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,16 +14,11 @@ + + @SET_MAKE@ + +-srcdir = @srcdir@ +-top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ +-top_builddir = ../../.. +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +-INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c +@@ -35,12 +30,53 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++build_triplet = @build@ + host_triplet = @host@ ++subdir = plugins/morph/tentacle ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; ++am__installdirs = "$(DESTDIR)$(morph_plugindir)" ++morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++LTLIBRARIES = $(morph_plugin_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++morph_tentacle_la_DEPENDENCIES = $(am__DEPENDENCIES_1) ++am_morph_tentacle_la_OBJECTS = morph_tentacle.lo ++morph_tentacle_la_OBJECTS = $(am_morph_tentacle_la_OBJECTS) ++morph_tentacle_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(morph_tentacle_la_LDFLAGS) $(LDFLAGS) -o $@ ++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++SOURCES = $(morph_tentacle_la_SOURCES) ++DIST_SOURCES = $(morph_tentacle_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ + ALSA_CFLAGS = @ALSA_CFLAGS@ + ALSA_LIBS = @ALSA_LIBS@ +-AMDEP_FALSE = @AMDEP_FALSE@ +-AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ +@@ -70,16 +106,13 @@ + GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ + GFORCE_FLAGS = @GFORCE_FLAGS@ + GMSGFMT = @GMSGFMT@ ++GMSGFMT_015 = @GMSGFMT_015@ ++GREP = @GREP@ + GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@ + GSTREAMER_LIBS = @GSTREAMER_LIBS@ + GTK_CFLAGS = @GTK_CFLAGS@ + GTK_LIBS = @GTK_LIBS@ +-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@ +-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@ +-HAVE_XF86VMODE_FALSE = @HAVE_XF86VMODE_FALSE@ +-HAVE_XF86VMODE_TRUE = @HAVE_XF86VMODE_TRUE@ +-HAVE_X_FALSE = @HAVE_X_FALSE@ +-HAVE_X_TRUE = @HAVE_X_TRUE@ ++INSTALL = @INSTALL@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ +@@ -97,8 +130,7 @@ + LIBJACK_CFLAGS = @LIBJACK_CFLAGS@ + LIBJACK_LIBS = @LIBJACK_LIBS@ + LIBOBJS = @LIBOBJS@ +- +-LIBS = @LIBS@ $(LIBVISUAL_LIBS) ++LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@ + LIBVISUAL_LIBS = @LIBVISUAL_LIBS@ +@@ -109,8 +141,9 @@ + LTLIBINTL = @LTLIBINTL@ + LTLIBOBJS = @LTLIBOBJS@ + MAKEINFO = @MAKEINFO@ +-MKINSTALLDIRS = @MKINSTALLDIRS@ ++MKDIR_P = @MKDIR_P@ + MSGFMT = @MSGFMT@ ++MSGFMT_015 = @MSGFMT_015@ + MSGMERGE = @MSGMERGE@ + OBJEXT = @OBJEXT@ + OPT_CFLAGS = @OPT_CFLAGS@ +@@ -124,6 +157,7 @@ + PKG_CONFIG = @PKG_CONFIG@ + POSUB = @POSUB@ + RANLIB = @RANLIB@ ++SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ +@@ -131,25 +165,25 @@ + VERSION = @VERSION@ + XF86VMODE_LIB = @XF86VMODE_LIB@ + XGETTEXT = @XGETTEXT@ ++XGETTEXT_015 = @XGETTEXT_015@ ++XMKMF = @XMKMF@ + X_CFLAGS = @X_CFLAGS@ + X_EXTRA_LIBS = @X_EXTRA_LIBS@ + X_LIBS = @X_LIBS@ + X_PRE_LIBS = @X_PRE_LIBS@ + YACC = @YACC@ +-ac_ct_AR = @ac_ct_AR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_CXX = @ac_ct_CXX@ +-ac_ct_RANLIB = @ac_ct_RANLIB@ +-ac_ct_STRIP = @ac_ct_STRIP@ +-ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ + actor_plugindir = @actor_plugindir@ +-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build = @build@ + build_actor_plugins = @build_actor_plugins@ +@@ -159,106 +193,112 @@ + build_morph_plugins = @build_morph_plugins@ + build_os = @build_os@ + build_vendor = @build_vendor@ ++builddir = @builddir@ + datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ ++htmldir = @htmldir@ + includedir = @includedir@ + infodir = @infodir@ + input_plugindir = @input_plugindir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ ++localedir = @localedir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + morph_plugindir = @morph_plugindir@ + oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ ++psdir = @psdir@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +- ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + morph_plugin_LTLIBRARIES = morph_tentacle.la +- + AM_CFLAGS = $(LIBVISUAL_CFLAGS) +- + INCLUDES = $(all_includes) -I$(top_srcdir) +- + morph_tentacle_la_LDFLAGS = -module -avoid-version ++morph_tentacle_la_LIBADD = $(LIBVISUAL_LIBS) + morph_tentacle_la_SOURCES = morph_tentacle.c +-subdir = plugins/morph/tentacle +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = $(top_builddir)/config.h +-CONFIG_CLEAN_FILES = +-LTLIBRARIES = $(morph_plugin_LTLIBRARIES) +- +-morph_tentacle_la_LIBADD = +-am_morph_tentacle_la_OBJECTS = morph_tentacle.lo +-morph_tentacle_la_OBJECTS = $(am_morph_tentacle_la_OBJECTS) +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/morph_tentacle.Plo +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ +- $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +- $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(morph_tentacle_la_SOURCES) +-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am +-SOURCES = $(morph_tentacle_la_SOURCES) +- + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu plugins/morph/tentacle/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu plugins/morph/tentacle/Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +-morph_pluginLTLIBRARIES_INSTALL = $(INSTALL) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + install-morph_pluginLTLIBRARIES: $(morph_plugin_LTLIBRARIES) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ test -z "$(morph_plugindir)" || $(MKDIR_P) "$(DESTDIR)$(morph_plugindir)" + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ +- f="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f"; \ +- $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(morph_plugindir)/$$f; \ ++ f=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(morph_plugindir)/$$f'"; \ ++ $(LIBTOOL) --mode=install $(morph_pluginLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(morph_plugindir)/$$f"; \ + else :; fi; \ + done + + uninstall-morph_pluginLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ +- p="`echo $$p | sed -e 's|^.*/||'`"; \ +- echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p"; \ +- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(morph_plugindir)/$$p; \ ++ p=$(am__strip_dir) \ ++ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(morph_plugindir)/$$p'"; \ ++ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(morph_plugindir)/$$p"; \ + done + + clean-morph_pluginLTLIBRARIES: + -test -z "$(morph_plugin_LTLIBRARIES)" || rm -f $(morph_plugin_LTLIBRARIES) + @list='$(morph_plugin_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ +- test "$$dir" = "$$p" && dir=.; \ ++ test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + morph_tentacle.la: $(morph_tentacle_la_OBJECTS) $(morph_tentacle_la_DEPENDENCIES) +- $(LINK) -rpath $(morph_plugindir) $(morph_tentacle_la_LDFLAGS) $(morph_tentacle_la_OBJECTS) $(morph_tentacle_la_LIBADD) $(LIBS) ++ $(morph_tentacle_la_LINK) -rpath $(morph_plugindir) $(morph_tentacle_la_OBJECTS) $(morph_tentacle_la_LIBADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -266,37 +306,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph_tentacle.Plo@am__quote@ + + .c.o: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< + + .c.obj: +-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .c.lo: +-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCC_TRUE@ fi ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo + @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + + mostlyclean-libtool: + -rm -f *.lo +@@ -304,18 +332,6 @@ + clean-libtool: + -rm -rf .libs _libs + +-distclean-libtool: +- -rm -f libtool +-uninstall-info-am: +- +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -324,6 +340,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -335,10 +352,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -361,28 +379,23 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = ../../.. +-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) +- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ +- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ +- list='$(DISTFILES)'; for file in $$list; do \ +- case $$file in \ +- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ +- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ +- esac; \ ++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++ list='$(DISTFILES)'; \ ++ dist_files=`for file in $$list; do echo $$file; done | \ ++ sed -e "s|^$$srcdirstrip/||;t" \ ++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++ case $$dist_files in \ ++ */*) $(MKDIR_P) `echo "$$dist_files" | \ ++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++ sort -u` ;; \ ++ esac; \ ++ for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ +- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ +- if test "$$dir" != "$$file" && test "$$dir" != "."; then \ +- dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ +- else \ +- dir=''; \ +- fi; \ + if test -d $$d/$$file; then \ ++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ +@@ -396,9 +409,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(LTLIBRARIES) +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(morph_plugindir) ++ for dir in "$(DESTDIR)$(morph_plugindir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -418,7 +432,7 @@ + clean-generic: + + distclean-generic: +- -rm -f $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -432,24 +446,34 @@ + -rm -rf ./$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ +- distclean-libtool distclean-tags ++ distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: + + install-data-am: install-morph_pluginLTLIBRARIES + ++install-dvi: install-dvi-am ++ + install-exec-am: + ++install-html: install-html-am ++ + install-info: install-info-am + + install-man: + ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ + installcheck-am: + + maintainer-clean: maintainer-clean-am +@@ -470,20 +494,23 @@ + + ps-am: + +-uninstall-am: uninstall-info-am uninstall-morph_pluginLTLIBRARIES ++uninstall-am: uninstall-morph_pluginLTLIBRARIES ++ ++.MAKE: install-am install-strip + + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-morph_pluginLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ +- distclean-tags distdir dvi dvi-am info info-am install \ +- install-am install-data install-data-am install-exec \ +- install-exec-am install-info install-info-am install-man \ +- install-morph_pluginLTLIBRARIES install-strip installcheck \ ++ distclean-tags distdir dvi dvi-am html html-am info info-am \ ++ install install-am install-data install-data-am install-dvi \ ++ install-dvi-am install-exec install-exec-am install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-morph_pluginLTLIBRARIES install-pdf install-pdf-am \ ++ install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ +- tags uninstall uninstall-am uninstall-info-am \ +- uninstall-morph_pluginLTLIBRARIES ++ tags uninstall uninstall-am uninstall-morph_pluginLTLIBRARIES + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/abs/core/libvisual-plugins/PKGBUILD b/abs/core/libvisual-plugins/PKGBUILD new file mode 100644 index 0000000..cced714 --- /dev/null +++ b/abs/core/libvisual-plugins/PKGBUILD @@ -0,0 +1,46 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir + +pkgname=libvisual-plugins +pkgver=0.4.0 +pkgrel=6 +pkgdesc="plugins for libvisual" +arch=("i686" "x86_64") +license=('GPL') +url="http://www.localhost.nl/~synap/libvisual/" +depends=('libvisual>=0.4.0' 'gtk2' 'mesa' 'alsa-lib' 'esd' 'jack-audio-connection-kit') +makedepends=(pkgconfig bison) +install=libvisual-plugins.install +source=("http://downloads.sourceforge.net/sourceforge/libvisual/libvisual-plugins-${pkgver}.tar.gz" + '01_disable-gforce-dfsg.patch' + '02_64-bit_JESS_fix.patch' + '03_build_against_gl_fixes.patch' + '04_lv_analyzer_build_fix.patch' + '05_fix_po.patch' + '60_no-const-vispluginfo-in-nastyfft.patch' + '90_autoreconf.patch') +md5sums=('4330e9287f9d6fae02f482f428a1e77b' + '600969a691372c8894c90765de84f732' + 'f9cfb607bfcbfef60830fae4e7dc6963' + '116701408747dbb87dc134434478ebe2' + '01678a8f1584c76a44e59d81003a1109' + '6189b7427c4e11c8b8d6c6266d6a1629' + '7012518727cb072a7e90a826a5577cc6' + '4aa3ffc17dcb4d25129f483b1842fac9') +options=(!libtool) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} +# patch -p1 < ../01_disable-gforce-dfsg.patch +# patch -p1 < ../02_64-bit_JESS_fix.patch +# patch -p1 < ../03_build_against_gl_fixes.patch +# patch -p1 < ../04_lv_analyzer_build_fix.patch +# patch -p1 < ../05_fix_po.patch +# patch -p1 < ../60_no-const-vispluginfo-in-nastyfft.patch +# patch -p1 < ../90_autoreconf.patch + ./configure --prefix=/usr --enable-alsa --disable-gstreamer-plugin \ + --disable-gdkpixbuf-plugin --disable-nastyfft --disable-madspin --disable-flower --disable-bumpscope --disable-gltest + + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/core/libvisual-plugins/__changelog b/abs/core/libvisual-plugins/__changelog new file mode 100644 index 0000000..bce7c81 --- /dev/null +++ b/abs/core/libvisual-plugins/__changelog @@ -0,0 +1,3 @@ +disable plugins that cause mythmusic to oops + --disable-gdkpixbuf-plugin --disable-nastyfft --disable-madspin --disable-flower --disable-bumpscope --disable-gltest + diff --git a/abs/core/libvisual-plugins/libvisual-plugins.install b/abs/core/libvisual-plugins/libvisual-plugins.install new file mode 100644 index 0000000..a04b64c --- /dev/null +++ b/abs/core/libvisual-plugins/libvisual-plugins.install @@ -0,0 +1,22 @@ +post_install() { + cat << EOF + +==> libvisual-plugins has been built with support for "esd" and +==> "jack-audio-connection-kit" input. +==> If you want to use them, install them. + +EOF +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + /bin/true +} + +op=$1 +shift + +$op $* diff --git a/abs/core/libvisual-projectm/PKGBUILD b/abs/core/libvisual-projectm/PKGBUILD new file mode 100644 index 0000000..5b217e8 --- /dev/null +++ b/abs/core/libvisual-projectm/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +pkgname=libvisual-projectm +pkgver=0.99 +pkgrel=1 +pkgdesc="ProjectM XMMS plugin" +arch=(i686) +url="http://xmms-projectm.sourceforge.net" +license="GPL" +depends=('projectm' 'libvisual>=0.4.0' 'sdl') +makedepends=('pkgconfig') +options=(!libtool) +source=(http://superb-east.dl.sourceforge.net/sourceforge/projectm/libvisual-projectM-$pkgver.tar.bz2) + +build() { + cd $startdir/src/libvisual-projectM + ./configure --prefix=/usr + make || return + make DESTDIR=$startdir/pkg install +} +md5sums=('be076af79aff508fb75241b061937c04') diff --git a/abs/core/libvisual/PKGBUILD b/abs/core/libvisual/PKGBUILD new file mode 100644 index 0000000..eb01e19 --- /dev/null +++ b/abs/core/libvisual/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 8760 2008-08-16 05:23:46Z eric $ +# Maintainer: damir + +pkgname=libvisual +pkgver=0.4.0 +pkgrel=1 +pkgdesc="abstraction library that comes between applications and audio visualisation plugins" +arch=("i686" "x86_64") +url="http://localhost.nl/~synap/libvisual/" +depends=('glibc') +options=('!libtool') +source=("http://downloads.sourceforge.net/sourceforge/libvisual/libvisual-$pkgver.tar.gz") +md5sums=('f4e78547c79ea8a8ad111cf8b85011bb') + +build() +{ + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/libwmf/PKGBUILD b/abs/core/libwmf/PKGBUILD index f1c3d17..4ec415d 100644 --- a/abs/core/libwmf/PKGBUILD +++ b/abs/core/libwmf/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: FJ pkgname=libwmf pkgver=0.2.8.4 -pkgrel=4 +pkgrel=5 pkgdesc="A library for reading vector images in Microsoft's native Windows Metafile Format (WMF)." arch=(i686 x86_64) url="http://wvware.sourceforge.net/libwmf.html" diff --git a/abs/core/libx11/PKGBUILD b/abs/core/libx11/PKGBUILD index e69ed0a..cfcc85a 100644 --- a/abs/core/libx11/PKGBUILD +++ b/abs/core/libx11/PKGBUILD @@ -1,44 +1,32 @@ -# $Id: PKGBUILD 1882 2008-05-22 17:44:17Z jgc $ +# $Id: PKGBUILD 34217 2009-04-08 08:01:42Z jgc $ # Maintainer: Alexander Baldeck # Contributor Jan de Groot pkgname=libx11 -pkgver=1.1.4 -pkgrel=2 +pkgver=1.2.1 +pkgrel=1 pkgdesc="X11 client-side library" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libxau' 'libxdmcp' 'libxcb>=1.1' 'kbproto' 'inputproto' 'bigreqsproto') -makedepends=('pkgconfig' 'xcmiscproto' 'xextproto' 'xf86bigfontproto' 'xtrans' \ - 'bigreqsproto' 'xorg-util-macros' 'autoconf' 'automake' 'libtool') +depends=('libxcb>=1.2' 'kbproto>=1.0.3') +makedepends=('xproto>=7.0.14' 'xextproto>=7.0.5' 'xf86bigfontproto>=1.1.2' 'xtrans>=1.2.3' 'kbproto>=1.0.3' 'inputproto>=1.5.0' 'xorg-util-macros>=1.2.1') options=('!libtool') license=('custom:XFREE86') source=(${url}/releases/individual/lib/libX11-${pkgver}.tar.bz2 - 012_ru_RU_UTF-8_XLC_LOCALE.diff xorg.sh) -md5sums=('1469a5a8aa8d288dce6f4c45d2f68dc3' - 'c7e38a68b932ed557bc71979eed2a8a1' - 'ea3f14c529072c8be061493763479800') +md5sums=('2f2beb98e71f397e1209beaca4e97cb1' + '942ff006e69e041f0307c1316e0dec5d') build() { - cd ${startdir}/src/libX11-${pkgver} - patch -Np1 -i ${startdir}/src/012_ru_RU_UTF-8_XLC_LOCALE.diff || return 1 - - - libtoolize --force --copy || return 1 - aclocal || return 1 - autoconf || return 1 - automake --add-missing || return 1 - + cd "${srcdir}/libX11-${pkgver}" ./configure --prefix=/usr \ --with-xcb || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -d -m755 ${startdir}/pkg/etc/profile.d - install -m755 ${startdir}/src/xorg.sh \ - ${startdir}/pkg/etc/profile.d/ || return 1 + install -m755 -d "${pkgdir}/etc/profile.d" + install -m755 "${srcdir}/xorg.sh" \ + "${pkgdir}/etc/profile.d/" || return 1 - install -d -m755 ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 -D ${startdir}/src/libX11-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/libx11/xorg.sh b/abs/core/libx11/xorg.sh index d3ade91..9b37312 100644 --- a/abs/core/libx11/xorg.sh +++ b/abs/core/libx11/xorg.sh @@ -13,7 +13,3 @@ if [ -z $XDG_CONFIG_DIRS ]; then else export XDG_CONFIG_DIRS=/etc/xdg:$XDG_CONFIG_DIRS fi - -# temporarily loosen restrictions in libxcb to get java -# application involving X to work. -export LIBXCB_ALLOW_SLOPPY_LOCK=true diff --git a/abs/core/libxaw/PKGBUILD b/abs/core/libxaw/PKGBUILD index 3b447d1..c1d71de 100644 --- a/abs/core/libxaw/PKGBUILD +++ b/abs/core/libxaw/PKGBUILD @@ -1,26 +1,25 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 18578 2008-11-07 22:16:28Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=libxaw -pkgver=1.0.4 +pkgver=1.0.5 pkgrel=1 pkgdesc="X11 Athena Widget library" arch=(i686 x86_64) license=('custom:') url="http://xorg.freedesktop.org/" -depends=('libxmu' 'libxpm' 'libxp') +depends=('libxmu' 'libxpm') makedepends=('pkgconfig') options=('!libtool') source=(${url}/releases/individual/lib/libXaw-${pkgver}.tar.bz2) +md5sums=('64e7782db4653cb57c7f7e660b2431c3') build() { - cd ${startdir}/src/libXaw-${pkgver} - ./configure --prefix=/usr --sysconfdir=/etc + cd "${srcdir}/libXaw-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 ${startdir}/src/libXaw-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/license.txt + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('73671d8f1cf36fdd81395328cc3539c9') diff --git a/abs/core/libxcb/PKGBUILD b/abs/core/libxcb/PKGBUILD index b1eadee..59982e9 100644 --- a/abs/core/libxcb/PKGBUILD +++ b/abs/core/libxcb/PKGBUILD @@ -1,29 +1,32 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 27498 2009-02-22 09:23:59Z andyrtr $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=libxcb -pkgver=1.1 +pkgver=1.2 pkgrel=1 pkgdesc="X11 client-side library" arch=(i686 x86_64) url="http://xcb.freedesktop.org/" -depends=('xcb-proto>=1.1' 'libxdmcp' 'libxau') -makedepends=('pkgconfig' 'libxslt' 'libpthread-stubs') +depends=('xcb-proto>=1.4' 'libxdmcp' 'libxau') +makedepends=('pkgconfig' 'libxslt' 'python') +conflicts=('libx11<1.1.99.2') options=('!libtool') license=('custom') -source=(${url}/dist/${pkgname}-${pkgver}.tar.bz2) +source=(${url}/dist/${pkgname}-${pkgver}.tar.bz2 + libxcb-1.1-no-pthread-stubs.patch) +md5sums=('ae32b7846a7d83f5ec542a5431117564' + 'a53f09ab3ec5cbfc1b0848bd137c535a') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/libxcb-1.1-no-pthread-stubs.patch" || return 1 + libtoolize --force --copy || return 1 + aclocal || return 1 + autoconf || return 1 + automake --add-missing || return 1 + ./configure --prefix=/usr --enable-xinput || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - # Remove pthread-stubs dependency from pc files, - # the stubs package doesn't provide any libs since our libc is complete. - sed -i -e 's/pthread-stubs//' ${startdir}/pkg/usr/lib/pkgconfig/*.pc - - install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('9310b02433273d75d42f10da3c7455aa') diff --git a/abs/core/libxcb/libxcb-1.1-no-pthread-stubs.patch b/abs/core/libxcb/libxcb-1.1-no-pthread-stubs.patch new file mode 100644 index 0000000..67a09f2 --- /dev/null +++ b/abs/core/libxcb/libxcb-1.1-no-pthread-stubs.patch @@ -0,0 +1,12 @@ +diff -up libxcb-1.1/configure.ac.pthread-stubs libxcb-1.1/configure.ac +--- libxcb-1.1/configure.ac.pthread-stubs 2007-11-04 18:17:11.000000000 -0500 ++++ libxcb-1.1/configure.ac 2007-11-12 10:27:06.000000000 -0500 +@@ -31,7 +31,7 @@ AC_SUBST(HTML_CHECK_RESULT) + + # Checks for pkg-config packages + PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.1) +-NEEDED="pthread-stubs xau >= 0.99.2" ++NEEDED="xau >= 0.99.2" + PKG_CHECK_MODULES(NEEDED, $NEEDED) + + have_xdmcp="no" diff --git a/abs/core/libxcb/libxcb-1.1-sloppy-lock.patch b/abs/core/libxcb/libxcb-1.1-sloppy-lock.patch new file mode 100644 index 0000000..130890e --- /dev/null +++ b/abs/core/libxcb/libxcb-1.1-sloppy-lock.patch @@ -0,0 +1,12 @@ +diff -up libxcb-1.1/src/xcb_conn.c.jx libxcb-1.1/src/xcb_conn.c +--- libxcb-1.1/src/xcb_conn.c.jx 2007-10-28 16:11:18.000000000 -0400 ++++ libxcb-1.1/src/xcb_conn.c 2008-04-22 11:58:05.000000000 -0400 +@@ -63,7 +63,7 @@ static int _xcb_xlib_init(_xcb_xlib *xli + { + xlib->lock = 0; + #ifndef NDEBUG +- xlib->sloppy_lock = (getenv("LIBXCB_ALLOW_SLOPPY_LOCK") != 0); ++ xlib->sloppy_lock = 1; + #endif + pthread_cond_init(&xlib->cond, 0); + return 1; diff --git a/abs/core/libxext/PKGBUILD b/abs/core/libxext/PKGBUILD index 63bc23d..66cc29a 100644 --- a/abs/core/libxext/PKGBUILD +++ b/abs/core/libxext/PKGBUILD @@ -1,21 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 35597 2009-04-14 06:27:02Z eric $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=libxext -pkgver=1.0.4 -pkgrel=1 +pkgver=1.0.5 +pkgrel=2 pkgdesc="X11 miscellaneous extensions library" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libx11' 'xextproto') +license=('custom') +depends=('libx11>=1.1.93' 'xextproto>=7.0.5') makedepends=('pkgconfig') options=('!libtool') source=(${url}/releases/individual/lib/libXext-${pkgver}.tar.bz2) +md5sums=('aa11d859cc8e9a0bad3bb55e1666547b') build() { - cd ${startdir}/src/libXext-${pkgver} - ./configure --prefix=/usr --sysconfdir=/etc + cd "${srcdir}/libXext-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" } -md5sums=('a91f1f722ac80c597cf0b75dcb8b48c0') diff --git a/abs/core/libxfont/PKGBUILD b/abs/core/libxfont/PKGBUILD index 3055554..a9decca 100644 --- a/abs/core/libxfont/PKGBUILD +++ b/abs/core/libxfont/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: Jan de Groot pkgname=libxfont pkgver=1.3.3 -pkgrel=1 +pkgrel=3 pkgdesc="X11 font rasterisation library" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" diff --git a/abs/core/libxi/PKGBUILD b/abs/core/libxi/PKGBUILD index 66414d3..593d805 100644 --- a/abs/core/libxi/PKGBUILD +++ b/abs/core/libxi/PKGBUILD @@ -1,22 +1,25 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 28322 2009-02-28 18:50:37Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=libxi -pkgver=1.1.3 +pkgver=1.2.1 pkgrel=1 pkgdesc="X11 Input extension library" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://xorg.freedesktop.org" -depends=('libxext') +depends=('libxext>=1.0.5') makedepends=('pkgconfig') -options=(!libtool) +options=(!libtool force) +license=('custom') source=(${url}/releases/individual/lib/libXi-${pkgver}.tar.bz2) +md5sums=('cfb36307e8e7ffafe40848dba24e0b11') build() { - cd ${startdir}/src/libXi-${pkgver} - ./configure --prefix=/usr --sysconfdir=/etc \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/libXi-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('7c510abb0cad8dc20493fb27ff7859d8') diff --git a/abs/core/libxml-perl/PKGBUILD b/abs/core/libxml-perl/PKGBUILD new file mode 100644 index 0000000..5867a11 --- /dev/null +++ b/abs/core/libxml-perl/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=libxml-perl +pkgver=0.08 +pkgrel=1 +pkgdesc="Perl library for working with XML" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~KMACLEOD/libxml-perl" +license=('GPL' 'PerlArtistic') +depends=('perlxml>=2.19') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/K/KM/KMACLEOD/libxml-perl-$pkgver.tar.gz) +md5sums=('0ed5fbdda53d1301ddaed88db10503bb') + +build() { + cd $startdir/src/libxml-perl-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/libxml2/PKGBUILD b/abs/core/libxml2/PKGBUILD index be9b8bc..8123cfc 100644 --- a/abs/core/libxml2/PKGBUILD +++ b/abs/core/libxml2/PKGBUILD @@ -1,25 +1,25 @@ -# $Id: PKGBUILD 1153 2008-05-01 14:49:04Z jgc $ +# $Id: PKGBUILD 26966 2009-02-14 23:57:37Z jgc $ # Maintainer: Jan de Groot # Contributor: John Proctor pkgname=libxml2 -pkgver=2.6.32 +pkgver=2.7.3 pkgrel=1 pkgdesc="XML parsing library, version 2" arch=(i686 x86_64) license=('custom') -depends=('zlib' 'readline') -makedepends=('python>=2.5') +depends=('zlib>=1.2.3.3' 'readline>=5.2.013' 'ncurses>=5.7') +makedepends=('python') options=('!libtool') -source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz) url="http://www.xmlsoft.org/" -md5sums=('2621d322c16f0257e30f0ff2b13384de') +source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('8f4fda3969237c2a33bdb1583b5d06b2') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --with-threads --with-history || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/libxml2/largefile64.patch b/abs/core/libxml2/largefile64.patch new file mode 100644 index 0000000..29be827 --- /dev/null +++ b/abs/core/libxml2/largefile64.patch @@ -0,0 +1,12 @@ +--- libxml2-2.6.32.dfsg.orig/libxml.h ++++ libxml2-2.6.32.dfsg/libxml.h +@@ -13,6 +13,9 @@ + #ifndef _LARGEFILE_SOURCE + #define _LARGEFILE_SOURCE + #endif ++#ifndef _LARGEFILE64_SOURCE ++#define _LARGEFILE64_SOURCE ++#endif + #ifndef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 64 + #endif diff --git a/abs/core/libxrandr/PKGBUILD b/abs/core/libxrandr/PKGBUILD index 2ab366a..9c64cc8 100644 --- a/abs/core/libxrandr/PKGBUILD +++ b/abs/core/libxrandr/PKGBUILD @@ -1,24 +1,24 @@ -# $Id: PKGBUILD 4333 2008-07-06 17:39:17Z jgc $ +# $Id: PKGBUILD 29289 2009-03-07 18:44:39Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=libxrandr -pkgver=1.2.3 +pkgver=1.3.0 pkgrel=1 pkgdesc="X11 RandR extension library" arch=('i686' 'x86_64') license=('custom') url="http://xorg.freedesktop.org/" -depends=('libxext>=1.0.4' 'libxrender' 'randrproto>=1.2.2') +depends=('libxext>=1.0.5' 'libxrender' 'randrproto>=1.3.0') makedepends=('pkgconfig') options=('!libtool') source=(${url}/releases/individual/lib/libXrandr-${pkgver}.tar.bz2) -md5sums=('5cd67cc02a50c9644ba0a1846ea3b08e') +md5sums=('68eb59c3b7524db6ffd78746ee893d1d') build() { - cd ${startdir}/src/libXrandr-${pkgver} + cd "${srcdir}/libXrandr-${pkgver}" ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/libxres/PKGBUILD b/abs/core/libxres/PKGBUILD new file mode 100644 index 0000000..56dbf49 --- /dev/null +++ b/abs/core/libxres/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=libxres +pkgver=1.0.3 +pkgrel=1 +pkgdesc="X11 Resource extension library" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org" +depends=('libxext') +makedepends=('pkgconfig' 'resourceproto' 'damageproto' 'compositeproto' 'scrnsaverproto') +options=(!libtool) +source=(${url}/releases/individual/lib/libXres-${pkgver}.tar.bz2) + +build() { + cd ${startdir}/src/libXres-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc \ + --build=${CHOST} --host=${CHOST} + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} +md5sums=('de66ffb657aba64c9d6dbdeabb757f3e') diff --git a/abs/core/libxtst/PKGBUILD b/abs/core/libxtst/PKGBUILD index 6144308..cd160da 100644 --- a/abs/core/libxtst/PKGBUILD +++ b/abs/core/libxtst/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: Jan de Groot pkgname=libxtst pkgver=1.0.3 -pkgrel=1 +pkgrel=2 pkgdesc="X11 Testing -- Resource extension library" arch=(i686 x86_64) options=('!libtool') diff --git a/abs/core/lighttpd/PKGBUILD b/abs/core/lighttpd/PKGBUILD new file mode 100644 index 0000000..d0811ae --- /dev/null +++ b/abs/core/lighttpd/PKGBUILD @@ -0,0 +1,70 @@ +# $Id: PKGBUILD 17048 2008-10-24 16:27:19Z pierre $ +# Maintainer: Pierre Schmitz + +pkgname=lighttpd +pkgver=1.4.20 +pkgrel=35 +pkgdesc='a secure, fast, compliant and very flexible web-server' +license=('custom') +arch=('i686' 'x86_64') +url="http://www.lighttpd.net/" +depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap' 'lua') +makedepends=('fcgi' 'libmysqlclient' 'lua' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig') +optdepends=('libxml2: mod_webdav' \ + 'e2fsprogs: mod_webdav' \ + 'libmysqlclient: mod_mysql_vhost' \ + 'sqlite3: mod_webdav' \ + 'gdbm: mod_trigger_b4_dl' \ + ) +backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd' 'etc/lighttpd/auth-inc.conf') +options=('!libtool' 'emptydirs') +source=("http://www.lighttpd.net/download/lighttpd-${pkgver}.tar.bz2" \ + 'lighttpd.rc.d' 'lighttpd.logrotate.d' 'lighttpd.conf' auth-inc.conf) + +md5sums=('ed6ee0bb714f393219a32768d86984d8' + 'bd690eee0d9e51857448770a151023b0' + '857e174643fd7761a2f0d8431a679f6c' + 'db6b8b8f144125cf249e97c4b13f3f18') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr \ + --libexecdir=/usr/lib/lighttpd/modules \ + --sysconfdir=/etc/lighttpd \ + --sharedstatedir=/usr/var \ + --localstatedir=/var \ + --libdir=/usr/lib/lighttpd \ + --includedir=/usr/include/lighttpd \ + --with-mysql \ + --with-ldap \ + --with-attr \ + --with-openssl \ + --with-kerberos5 \ + --without-fam \ + --with-webdav-props \ + --with-webdav-locks \ + --with-gdbm \ + --with-memcache \ + --with-lua || return 1 + make || return 1 + make DESTDIR=$pkgdir install || return 1 + + install -D -m755 ../lighttpd.rc.d $pkgdir/etc/rc.d/lighttpd + install -D -m644 ../lighttpd.logrotate.d $pkgdir/etc/logrotate.d/lighttpd + install -d -m755 -o http -g http $pkgdir/var/run/lighttpd/ + install -d -m755 -o http -g http $pkgdir/var/log/lighttpd/ + + install -D -m644 ../lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf + install -D -m644 ../auth-inc.conf $pkgdir/etc/lighttpd/auth-inc.conf + + # set sane defaults + sed -e 's|/srv/www/htdocs/|/srv/http/|' \ + -e 's|/srv/www/|/srv/http/|' \ + -e 's|#server.username = "wwwrun"|server.username = "http"|' \ + -e 's|#server.groupname = "wwwrun"|server.groupname = "http"|' \ + -e 's|#server.pid-file = "/var/run/lighttpd.pid"|server.pid-file = "/var/run/lighttpd/lighttpd.pid"|' \ + -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \ + -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1 + + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/core/lighttpd/_changelog b/abs/core/lighttpd/_changelog new file mode 100644 index 0000000..439f42d --- /dev/null +++ b/abs/core/lighttpd/_changelog @@ -0,0 +1,2 @@ +changed docroot to /data/srv/ +modified auth to require valid user (include auth-inc.conf) diff --git a/abs/core/lighttpd/auth-inc.conf b/abs/core/lighttpd/auth-inc.conf new file mode 100644 index 0000000..21c4c55 --- /dev/null +++ b/abs/core/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/lighttpd/lighttpd.conf b/abs/core/lighttpd/lighttpd.conf new file mode 100644 index 0000000..7305133 --- /dev/null +++ b/abs/core/lighttpd/lighttpd.conf @@ -0,0 +1,348 @@ +# lighttpd configuration file +# +# use it as a base for lighttpd 1.0.0 and above +# +# $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $ + +############ 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", + "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" ) + +## set the event-handler (read the performance section in the manual) +# server.event-handler = "freebsd-kqueue" # needed on OS X + +# 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", + ".jar" => "application/x-java-archive", + ".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", + ".mp4" => "video/quicktime", + ".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", + # default mime type + "" => "application/octet-stream", + ) + +# 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" +} + +## +# which extensions should not be handle via static-file transfer +# +# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi +static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) + +######### Options that are good to be but not neccesary to be changed ####### + +## bind to port (default: 80) +#server.port = 81 + +## bind to localhost (default: all interfaces) +#server.bind = "127.0.0.1" + +## 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/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 = "/srv/http/vhosts/" +#simple-vhost.default-host = "www.example.org" +#simple-vhost.document-root = "/htdocs/" + + +## +## Format: .html +## -> ..../status-404.html for 'File not found' +#server.errorfile-prefix = "/usr/share/lighttpd/errors/status-" +#server.errorfile-prefix = "/srv/http/errors/status-" + +## virtual directory listings +#dir-listing.activate = "enable" +## select encoding for directory listings +#dir-listing.encoding = "utf-8" + +## 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 = "http" + +## change uid to (default: don't care) +server.groupname = "http" + +#### compress module +#compress.cache-dir = "/var/cache/lighttpd/compress/" +#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 +## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini + fastcgi.server = ( + ".php" => (( + "bin-path" => "/usr/bin/php-cgi", + "socket" => "/var/run/lighttpd/mythtv-php-fcgi.socket", + "broken-scriptfilename" => "enable", + "bin-environment" => ( + "db_server" => "localhost", + "db_name" => "mythconverg", + "db_login" => "mythtv", + "db_password" => "mythtv" + ) + )) + ) + + setenv.add-environment = ( + "db_server" => "localhost", + "db_name" => "mythconverg", + "db_login" => "mythtv", + "db_password" => "mythtv" +) +#### CGI module +cgi.assign = ( ".pl" => "/usr/bin/perl", + ".cgi" => "/bin/bash" ) + + url.rewrite-once = ( + "^/mythweb/(css|data|images|js|themes|skins|[a-z_]+\.(php|pl)).*" => "$0", + "^/mythweb/(pl(/.*)?)$" => "/mythweb/mythweb.pl/$1", + "^/mythweb/(.+)$" => "/mythweb/mythweb.php/$1", + "^/mythweb/(.*)$" => "/mythweb/mythweb.php" + ) + + + +#### SSL engine +#ssl.engine = "enable" +#ssl.pemfile = "/etc/ssl/private/lighttpd.pem" + +#### 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 = ( "/mythweb => +# ( +# "method" => "plain", +# "realm" => "download archiv", +# "require" => "valid-user" +# ) +# "/server-config" => +# ( +# "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" ) +#### both rewrite/redirect support back reference to regex conditional using %n +#$HTTP["host"] =~ "^www\.(.*)" { +# url.redirect = ( "^/(.*)" => "http://%1/$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 = "/srv/http/vhosts/%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/lib/lighttpd/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 = "/var/lib/lighttpd/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/auth-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/lighttpd/lighttpd.install b/abs/core/lighttpd/lighttpd.install new file mode 100644 index 0000000..bf4c132 --- /dev/null +++ b/abs/core/lighttpd/lighttpd.install @@ -0,0 +1,6 @@ +pre_upgrade() { + mv /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.old +} +post_upgrade() { + touch /etc/lighttpd/lighttpd.user +} diff --git a/abs/core/lighttpd/lighttpd.logrotate.d b/abs/core/lighttpd/lighttpd.logrotate.d new file mode 100644 index 0000000..15cacc9 --- /dev/null +++ b/abs/core/lighttpd/lighttpd.logrotate.d @@ -0,0 +1,5 @@ +/var/log/lighttpd/*log { + postrotate + /bin/kill -HUP `cat /var/run/lighttpd/lighttpd.pid 2>/dev/null` 2> /dev/null || true + endscript +} diff --git a/abs/core/lighttpd/lighttpd.rc.d b/abs/core/lighttpd/lighttpd.rc.d new file mode 100644 index 0000000..97c315f --- /dev/null +++ b/abs/core/lighttpd/lighttpd.rc.d @@ -0,0 +1,38 @@ +#!/bin/bash + +# general config +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/lighttpd` + +case "$1" in + start) + stat_busy "Starting lighttpd Daemon" + [ -z "$PID" ] && /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf 2>&1 + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon lighttpd + stat_done + fi + ;; + stop) + stat_busy "Stopping lighttpd Daemon" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon lighttpd + rm -f /var/run/lighttpd/lighttpd.pid + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core/linhes-live/PKGBUILD b/abs/core/linhes-live/PKGBUILD index d497fcf..c86e3cc 100644 --- a/abs/core/linhes-live/PKGBUILD +++ b/abs/core/linhes-live/PKGBUILD @@ -2,7 +2,7 @@ # 2008.09.25 pkgname=linhes-live pkgver=5.3.3 -pkgrel=4 +pkgrel=25 pkgdesc="LinHes compulsory components for the Live System." url="http://KnoppMyth.net" @@ -28,3 +28,5 @@ build() { } # End +#change hook1 to wait for usb cdroms +#add extra login to f_remountro for vmware/usb diff --git a/abs/core/linhes-live/etc/live-shutdown b/abs/core/linhes-live/etc/live-shutdown index 807ec47..b6a8378 100644 --- a/abs/core/linhes-live/etc/live-shutdown +++ b/abs/core/linhes-live/etc/live-shutdown @@ -9,12 +9,12 @@ f_saveclock () f_swapoff () { ############################# Include session saving functions - . /opt/linhes-live/session-save/shutdown2 - if [ -f /tmp/checkse ]; then - . /tmp/checkse - else - checkse - fi +# . /opt/linhes-live/session-save/shutdown2 +# if [ -f /tmp/checkse ]; then +# . /tmp/checkse +# else +# checkse +# fi if [ -n "${saving}" ] && ! session_save; then echo @@ -37,14 +37,54 @@ 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` + echo "Boot device was $bootdev" + #bootdev=`basename $bootdev` + for i in `ls /dev/cd/*` + do + cdrom=`readlink -f $i` + if [ x$cdrom = x$bootdev ] + then + ejectdev=$cdrom + break + fi + + done + lspci |grep -q VMware + if [ ! $? = 0 ] + then + if [ -n "${ejectdev}" ] + then + echo "Ejecting CD $ejectdev" + eject ${ejectdev} + echo "========================================" + echo "Tray will retract after 10 seconds" + for timer in `seq -w 10 -1 0` + do + #echo -n $timer '\x08' + echo -ne "\t"$timer '\010\010\010\010' + sleep 1 + done + echo + echo "========================================" + eject -t ${ejectdev} + echo + echo "It's safe to switch the computer off now" + #echo -ne "Press Enter to continue" + #read junk + else + echo "Boot device is not a cdrom, no need to eject" + fi + else + echo "VMWARE detected, not ejecting the CD" fi } +#Preloads these commands so we can eject the CD. +# +seq --help >/dev/null 2>&1 +eject --help >/dev/null 2>&1 +halt --help >/dev/null 2>&1 +poweroff --help >/dev/null 2>&1 +reboot --help >/dev/null 2>&1 # End diff --git a/abs/core/linhes-live/etc/live-sysinit b/abs/core/linhes-live/etc/live-sysinit index abab4a8..40edad9 100644 --- a/abs/core/linhes-live/etc/live-sysinit +++ b/abs/core/linhes-live/etc/live-sysinit @@ -52,3 +52,22 @@ f_swapon () status "Activating Swap" /sbin/swapon -a fi } +f_loadmodules() +{ + CMDLINE=$(cat /proc/cmdline) + echo $CMDLINE | grep -q modules + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#* modules=} + CMDMODULES=${TEMPVAR%% *} + mymod=`echo $CMDMODULES|/bin/sed 's|-|_|g' |/bin/sed 's|,| |g'` + stat_busy "Loading CMD module" + for mod in $mymod + do + /sbin/modprobe $mod + done + stat_done + fi + + +} diff --git a/abs/core/linhes-live/etc/rc.shutdown-live b/abs/core/linhes-live/etc/rc.shutdown-live index 7fa97e6..79eae47 100755 --- a/abs/core/linhes-live/etc/rc.shutdown-live +++ b/abs/core/linhes-live/etc/rc.shutdown-live @@ -149,6 +149,7 @@ fi #F Remount / ro f_remountro +#Eject the CD # Power off or reboot if [ "$RUNLEVEL" = "0" ]; then diff --git a/abs/core/linhes-live/etc/rc.sysinit-live b/abs/core/linhes-live/etc/rc.sysinit-live index 3f72a50..afdc2ae 100755 --- a/abs/core/linhes-live/etc/rc.sysinit-live +++ b/abs/core/linhes-live/etc/rc.sysinit-live @@ -176,6 +176,9 @@ fi # Load modules from the MODULES array defined in rc.conf if ! [ "$load_modules" = "off" ]; then if [ -f /proc/modules ]; then +############Added by jm to load modules from /proc/cmdline + f_loadmodules +############## stat_busy "Loading Modules" for mod in "${MODULES[@]}"; do if [ "$mod" = "${mod#!}" ]; then diff --git a/abs/core/linhes-live/lib/initcpio/hooks/larch1 b/abs/core/linhes-live/lib/initcpio/hooks/larch1 index e1a3753..88ccc3e 100644 --- a/abs/core/linhes-live/lib/initcpio/hooks/larch1 +++ b/abs/core/linhes-live/lib/initcpio/hooks/larch1 @@ -115,6 +115,11 @@ run_hook () test_live_data_dir "${d}" "${cdmount}" if [ $? -eq 0 ]; then break 2; fi done + msg_ ":: Searching for usb cdroms .." + for d in /dev/sr[0-9]*; do + test_live_data_dir "${d}" "${cdmount}" + if [ $? -eq 0 ]; then break 2; fi + done done fi } diff --git a/abs/core/linhes-live/lib/initcpio/hooks/larch3 b/abs/core/linhes-live/lib/initcpio/hooks/larch3 index 47be81a..b301aa9 100644 --- a/abs/core/linhes-live/lib/initcpio/hooks/larch3 +++ b/abs/core/linhes-live/lib/initcpio/hooks/larch3 @@ -96,6 +96,8 @@ run_hook () msg_ ":: Mounting squashed images" /bin/mkdir /tfs/system + #added sleep for 3 seconds, because well i don't know but it seems to fix things + sleep 3 # The klibc mount command doesn't support '-o loop' /bin/losetup /dev/loop0 ${sysSqf} /bin/mount -r -t squashfs /dev/loop0 /tfs/system @@ -107,11 +109,13 @@ run_hook () export LD_LIBRARY_PATH=/tfs/system/lib:/tfs/system/usr/lib /bin/mkdir /tfs/mods + # The klibc mount command doesn't support '-o loop' /bin/losetup /dev/loop1 ${modsSqf} /bin/mount -r -t squashfs /dev/loop1 /tfs/mods # Unpack the overlay + msg_ ":: Initializing writable layer for union (overlay)" /tfs/system/usr/bin/lzop -d < ${overlay} | \ /tfs/system/bin/tar -C /tfs -xf - diff --git a/abs/core/linhes-scripts/770-wrapper.sh b/abs/core/linhes-scripts/770-wrapper.sh new file mode 100755 index 0000000..65573f4 --- /dev/null +++ b/abs/core/linhes-scripts/770-wrapper.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# 770-wrapper.sh by Cecil Watsona +# Modifed from +# pdatranscode +# +# created by Jeff Volckaert (inspired by Zach White) +# modified 01/16/06 +VIDEODIR=$1 +FILENAME=$2 +TITLE=$3 +# Remove non-alpha characters from TITLE +TITLE=${TITLE//[^a-zA-Z0-9]/} +STARTTIME=$4 +DIROUT=/myth/n770 + +# Sanity checking, to make sure everything is in order. +if [ -z "$VIDEODIR" -o -z "$FILENAME" ]; then + echo "Usage: $0 "" <Starttime>" + exit 5 +fi +if [ ! -f $VIDEODIR/$FILENAME ]; then + echo "File does not exist: $VIDEODIR/$FILENAME" + exit 6 +fi + +# Transcode the file + + +perl /usr/local/bin/770-encode.pl -q -p mplayer $VIDEODIR/$FILENAME $DIROUT/$TITLE-$STARTTIME.avi + +chmod 664 $DIROUT/$TITLE-$STARTTIME.avi + +ERROR=$? +if [ $ERROR -ne 0 ]; then + echo "Transcoding failed for ${FILENAME} with error $ERROR" + exit 3 +fi diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD new file mode 100644 index 0000000..4b3244f --- /dev/null +++ b/abs/core/linhes-scripts/PKGBUILD @@ -0,0 +1,47 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson<knoppmyth@gmail.com> + +pkgname=linhes-scripts +pkgver=1 +pkgrel=35 +pkgdesc="Various scripts that help to make LinHES, LinHES." +arch=('i686' 'x86_64') +license=('GPL2') +depends=('xosd' 'cpulimit') +url="http://linhes.org/" +source=( +myth2xvid +shootscreens.sh +mplayer-resumer-vdpau.pl +run-pause-mythcommflag +shootscreens-mythtv.sh +importfiles.sh +myth2mp3 +mplayer-resumer.pl +mythwelcome-test-wakeup.sh +pause-mythcommflag.sh +myth2x264 +770-wrapper.sh +mythwelcome-set-alarm.sh +pause_mythcommflag +limit-mythcommflag.sh +vdpau-detector +idle.sh +screenshooter.sh +run-limit-mythcommflag +linhes_update.sh +linhes_update2.sh +linhes_update3.sh +) + +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/LH/bin + install -D -m755 myt* 770* idle.sh imp* shoo* *commflag*sh mplayer* vdpau* screen* linhes_* $startdir/pkg/usr/LH/bin + mkdir -p $startdir/pkg/etc/sv/pause-mythcommflag/supervise + cp run-pause-mythcommflag $startdir/pkg/etc/sv/pause-mythcommflag/run + mkdir -p $startdir/pkg/etc/sv/limit-mythcommflag/supervise + cp run-limit-mythcommflag $startdir/pkg/etc/sv/limit-mythcommflag/run + mkdir -p $startdir/pkg/etc/logrotate.d/ + cp pause_mythcommflag $startdir/pkg/etc/logrotate.d/ +} diff --git a/abs/core/linhes-scripts/idle.sh b/abs/core/linhes-scripts/idle.sh new file mode 100755 index 0000000..f95b9fa --- /dev/null +++ b/abs/core/linhes-scripts/idle.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +usage () { + echo "Usage: $0 [-h] [-s] [-t <minutes_needed>]" + echo + echo "-h - Print this help/usage message and quit" + echo "-s - Run silently (default is verbose)" + echo "-t - Minutes of idle time needed (default is 20)" + echo "-v - Be more verbose for debugging" + echo + echo "Silent mode is recommended for use in cron jobs or scripts." + exit $1 +} + +msg () { # A status reporting function + [ "$VERBOSE" -ne 0 ] && echo "$*" +} + +mysql_cmd () { + /usr/bin/mysql -u root mythconverg -sBe "$*" +} + +# Command line argument handling +VERBOSE=1 +TIME_BEFORE=20 +TIME_AFTER=5 # Only adjustable by editing here + +while getopts "hst:v" OPT ; do + case $OPT in + h) usage 0 ;; + s) VERBOSE=0 ;; + t) TIME_BEFORE=$OPTARG ;; + v) VERBOSE=2 ;; + *) usage 1 ;; + esac +done +# Check for extra cruft on the command line... +shift $(($OPTIND - 1)) +[ -n "$*" ] && usage 1 + +msg "Checking what MythTV is doing now or plans within $TIME_BEFORE minutes..." +msg + +/usr/bin/mythshutdown -s 1 +BUSY="$?" +msg "mythshutdown returned $BUSY" +# Ignore certain non-zero flag values +BUSY=$(($BUSY & 0x2F)) + +SCHEMALOCK=$(mysql_cmd "select count(*) from schemalock") +msg "schemalock $SCHEMALOCK" + +JOBS=$(mysql_cmd "select count(*) from jobqueue where status = 4") +msg "running jobs $JOBS" + +INUSE=$(mysql_cmd "select count(*) from inuseprograms") +msg "inuse programs $INUSE" + +POTENTIAL=$(mysql_cmd "select count(*) from recordmatch as rm, program as p + where rm.chanid = p.chanid and rm.starttime = p.starttime + and rm.starttime < now() + interval $TIME_BEFORE minute + and now() < p.endtime + interval $TIME_AFTER minute") +msg "potential recordings $POTENTIAL" +# See if any of the potential upcoming recordings are real. +# This is ugly, but only the backend knows what programs it really +# plans to record or ignore, so we can't just check the DB. :-( +if [ "$VERBOSE" -ge 2 ] ; then + mysql_cmd "select p.starttime, p.endtime, p.title, subtitle + from recordmatch as rm, program as p + where rm.chanid = p.chanid and rm.starttime = p.starttime + and rm.starttime < now() + interval $TIME_BEFORE minute + and now() < p.endtime + interval $TIME_AFTER minute + order by p.starttime, p.endtime" +fi +UPCOMING=$(/usr/bin/mythbackend --printsched 2>&1 | + /bin/awk -v potential=$POTENTIAL ' + BEGIN {item=-1;real=0} + /--- print list start ---/,/--- print list end ---/ { + if (item>0 && item<=potential && substr($0,70,1) ~ "[0-9]") real+=1; + item += 1; + } + END {print real} +') +msg "planned recordings $UPCOMING" +if [ "$VERBOSE" -ge 2 ] ; then + /usr/bin/mythbackend --printsched 2>&1 | + /bin/awk -v potential=$POTENTIAL ' + BEGIN {item=-1} + /--- print list start ---/,/--- print list end ---/ { + if (item>0 && item<=potential) print $0; + item += 1; + }' +fi +activities=$(($BUSY + $SCHEMALOCK + $JOBS + $INUSE + $UPCOMING)) +msg +if [ "$activities" -eq 0 ] ; then + msg "System is idle" + exit 0 +else + msg "System is busy" + exit 1 +fi diff --git a/abs/core/linhes-scripts/importfiles.sh b/abs/core/linhes-scripts/importfiles.sh new file mode 100755 index 0000000..84f1ab5 --- /dev/null +++ b/abs/core/linhes-scripts/importfiles.sh @@ -0,0 +1,18 @@ +#!/bin/bash +export FONT="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*" + +DVD_or_CD=`cat /proc/mounts |grep iso9660|awk '{print $2}'|tail -1` +if [ "$DVD_or_CD" != "" ]; then + echo "Copying files from $DVD_or_CD to /myth/video." > /tmp/screens + echo "This could take several minutes, depending on the" >> /tmp/screens + echo "speed and size of your optical media." >> /tmp/screens + cat /tmp/screens | osd_cat --font=$FONT --shadow=3 --pos=middle --align=centre --color=yellow --delay=0 & + /bin/cp -R $DVD_or_CD/* /myth/video/ + killall osd_cat + echo "Copied videos from $DVD_or_CD to /myth/video" > /tmp/screens + cat /tmp/screens | osd_cat --font=$FONT --shadow=3 --pos=middle --align=centre --color=yellow --delay=2 & +else + echo "No optical media found. If you just inserted" > /tmp/screens + echo "your media, please wait a moment and try again." >> /tmp/screens + cat /tmp/screens | osd_cat --font=$FONT --shadow=3 --pos=middle --align=centre --color=yellow --delay=5 & +fi diff --git a/abs/core/linhes-scripts/limit-mythcommflag.sh b/abs/core/linhes-scripts/limit-mythcommflag.sh new file mode 100755 index 0000000..8ca61c7 --- /dev/null +++ b/abs/core/linhes-scripts/limit-mythcommflag.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# limit-mythcommflag.sh v0.1 05/17/09 +# Utility to automatically limit mythcommflag if CPU usage is above a certain level. +# Uses cpulimit from http://cpulimit.sourceforge.net/ +# Free for any use. +# Installation: +# cp limit-mythcommflag.sh /usr/LH/bin +# chmod +x /usr/LH/bin/limit-mythcommflag.sh +# Usage: Executed from runit limit-mythcommflag at boot + +# Threshold for when mythcommflag will be paused +CPUTHRESHOLD=43 + +# Limit mythcommflag to percentage +LIMITCPU=20 + +# Log file to write (use /dev/null for no log) +#LOG=/var/log/mythtv/limit-mythcommflag.log +LOG=/dev/null + +# Number of seconds to wait between checking for mythcommflag process +SLEEP=5 + +#sleep $SLEEP + +touch $LOG + +ALREADYLIMITED=0 + +while true; do + PROCCOMMFLAG=`pidof mythcommflag` + if [ -n "${PROCCOMMFLAG}" ] + then + FRONTENDCPU=`top -bn1u mythtv | grep mythfrontend | awk '{ print $9 }'` + if [ "$FRONTENDCPU" -ge "$CPUTHRESHOLD" ] + then + echo "$(date) FE CPU $FRONTENDCPU% is greater than $CPUTHRESHOLD%, LIMIT Commflagging" # >> $LOG + if [ $ALREADYLIMITED -eq 0 ]; then + cpulimit -e mythcommflag -l $LIMITCPU & + cpulimit_pid=$! + ALREADYLIMITED=1 + fi + else + echo "$(date) FE CPU $FRONTENDCPU% is less than $CPUTHRESHOLD%, UNLIMIT Commflagging" #>> $LOG + if [ $ALREADYLIMITED -eq 1 ]; then + kill $cpulimit_pid + ALREADYLIMITED=0 + fi + fi +# else +# echo "No COMMFLAG Process Active" >> $LOG + fi + sleep $SLEEP +done diff --git a/abs/core/linhes-scripts/linhes_update.sh b/abs/core/linhes-scripts/linhes_update.sh new file mode 100644 index 0000000..3b455e0 --- /dev/null +++ b/abs/core/linhes-scripts/linhes_update.sh @@ -0,0 +1,38 @@ +#!/bin/bash +dsply () { + if grep -q Updates\ Available /usr/share/mythtv/linhes.xml + then + killall osd_cat + echo -e "Updates available!\n Exit and reenter Service Menu\n to perform updates." | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 10 -A centre + exit + else + echo -e "Checking for updates." | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 300 -A centre & + fi +} +chck () { + sudo pacman -Sy + sudo pacman -Qu > /tmp/check_update + sudo grep Target /tmp/check_update > /tmp/to_be_upgraded + if grep -q no\ upgrades\ found /tmp/check_update + then + killall osd_cat + echo -e "No updates available\n at this time." | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 5 -A centre + else + mv /usr/share/mythtv/linhes.xml /tmp/linhes.xml.tmp + sed -e '/\#Check/,/\#Check/d' < /tmp/linhes.xml.tmp > /usr/share/mythtv/linhes.xml + mv /usr/share/mythtv/linhes.xml /tmp + grep -v -e /mythmenu /tmp/linhes.xml > /tmp/linhes.xml.tmp + echo "<!--#UpdatesAvailable-->" >> /tmp/linhes.xml.tmp + echo " <button>" >> /tmp/linhes.xml.tmp + echo " <type>UPGRADE</type>" >> /tmp/linhes.xml.tmp + echo " <text>Updates Available</text>" >> /tmp/linhes.xml.tmp + echo " <action>MENU update2.xml</action>" >> /tmp/linhes.xml.tmp + echo " </button>" >> /tmp/linhes.xml.tmp + echo "<!--#UpdatesAvailable-->" >> /tmp/linhes.xml.tmp + echo "</mythmenu>" >> /tmp/linhes.xml.tmp + mv /tmp/linhes.xml.tmp /usr/share/mythtv/linhes.xml + dsply + fi + } +dsply +chck diff --git a/abs/core/linhes-scripts/linhes_update2.sh b/abs/core/linhes-scripts/linhes_update2.sh new file mode 100644 index 0000000..20f32b9 --- /dev/null +++ b/abs/core/linhes-scripts/linhes_update2.sh @@ -0,0 +1,25 @@ +#!/bin/bash +echo -e "Performing updates." | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 300000 -A centre & +sudo pacman -Syuf --noconfirm && sudo killall -9 osd_cat +if grep -q Check\ for\ updates /usr/share/mythtv/linhes.xml +then +rm -fr /tmp/to_be_upgraded +echo -e "Update complete." | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 5 -A centre +else +mv /usr/share/mythtv/linhes.xml /tmp/linhes.xml.tmp +sed -e '/\#UpdatesAv/,/\#UpdatesAv/d' < /tmp/linhes.xml.tmp > /usr/share/mythtv/linhes.xml +mv /usr/share/mythtv/linhes.xml /tmp +grep -v -e /mythmenu /tmp/linhes.xml > /tmp/linhes.xml.tmp +echo "<!--#Check for updates-->" >> /tmp/linhes.xml.tmp +echo " <button>" >> /tmp/linhes.xml.tmp +echo " <type>UPGRADE</type>" >> /tmp/linhes.xml.tmp +echo " <text>Upgrade LinHES</text>" >> /tmp/linhes.xml.tmp +echo " <action>MENU update.xml</action>" >> /tmp/linhes.xml.tmp +echo " </button>" >> /tmp/linhes.xml.tmp +echo "<!--#Check for updates-->" >> /tmp/linhes.xml.tmp +echo "" >> /tmp/linhes.xml.tmp +echo "</mythmenu>" >> /tmp/linhes.xml.tmp +mv /tmp/linhes.xml.tmp /usr/share/mythtv/linhes.xml +rm -fr /tmp/to_be_upgraded +echo -e "Update complete." | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 5 -A centre +fi diff --git a/abs/core/linhes-scripts/linhes_update3.sh b/abs/core/linhes-scripts/linhes_update3.sh new file mode 100644 index 0000000..56e8612 --- /dev/null +++ b/abs/core/linhes-scripts/linhes_update3.sh @@ -0,0 +1,10 @@ +#!/bin/bash +sudo killall osd_cat +cat /tmp/to_be_upgraded | sed 's/ /\n/g' | sed '/^$/d' | grep - > /tmp/to_be_upgraded2 +COUNT=$(wc -l /tmp/to_be_upgraded2 | awk '{print $1}') +if [ $COUNT -lt 20 ] + then + cat /tmp/to_be_upgraded2 | osd_cat -p top -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 12 -A centre -l 20 + else + cat /tmp/to_be_upgraded2 | osd_cat -p top -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 1 -A centre -l 20 -w +fi diff --git a/abs/core/linhes-scripts/mplayer-resumer-vdpau.pl b/abs/core/linhes-scripts/mplayer-resumer-vdpau.pl new file mode 100755 index 0000000..9c82158 --- /dev/null +++ b/abs/core/linhes-scripts/mplayer-resumer-vdpau.pl @@ -0,0 +1,204 @@ +#!/usr/bin/perl + +use Shell; +use strict; +use POSIX qw(floor); + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# CHANGE LOG: +# 3/9/2009 +# Modded Bob's wonderful resumer script to work with the vdpau +# options detector script someone anonymously posted to the wiki +# +# http://www.knoppmythwiki.org/index.php?page=HardwareAcceleratedVideo +# +# You need to have both this and the vdpau-detector script in the same +# dir for this to work properly. Also, change your default mplayer +# options in mythfrontend to read simply: # mplayer-resumer-vdpau.pl %s +# +# To tweak the shell commands for mplayer, edit the vdpau-detector script. +# It has a small README inside it as comments +# ENJOY! + +# 5/3/2006 +# Added last time started checking. +# If this script is restarted within $tdiff (default 5 seconds) +# then it will delete the file used to keep track of the videos +# resume position. + +# PURPOSE: +# -------------------------- +# This is a wrapper script to prove the concept of having MythTV +# resume playback of previously-stopped video where you left off. +# It's likely that a good solution will look different than this +# initial code. + +# RATIONALE: +# -------------------------- +# Watching 90% of a video and stopping causes you to return to the +# beginning again the next time you watch it. Remembering where +# you were in the video and resuming at that position is a much nicer +# behavior for the user. +# +# By default, mplayer spits out timecode information that tells you +# where you are in the video, to the tenth of a second. Mplayer also +# supports a seek feature on the command-line. We can make use of these +# features to write an mplayer wrapper that will remember the last +# position in a video file and resume to it on playback. + +# PARAMETERS: +# -------------------------- +# see print_usage() below + +# FILES: +# -------------------------- +# $infile, the video to play +# $resumefile, the video's resume file (see get_resume_filename() below) + +# KNOWN ISSUES: +# -------------------------- +# Mplayer misreports the timecodes on .nuv MPEG-2 files. Currently, anything +# captured via an HDTV tuner card and put into your /myth/video directory +# will fail with this resumer. +# +# Current theories include the timecode having to do with the show's broadcast +# time, recording time, or perhaps its upload time to the station that +# broadcast it. + +# DESIGN LIMITATION: +# ------------------------- +# If the video file to be played is on a read-only filesystem, or otherwise +# lives in a location that cannot be written to, resume will fail. This is +# because the current implementation uses a file parallel to the video file +# to store the timecode. +# + +my $infile; +my $resumefile; +my $mplayer_parameters; +my $fudge_factor=2; # number of additional seconds to skip back before playback +my $tnow; # Time now. +my $tprev; # Time the prog was last started. + # Returned from the modification time of the xx.resume file. +my $tdiff=5; # How many seconds before we should start from + # the beginning of the movie +#DEBUG +#open(DEBUG,">/tmp/debug") || die "unable to open debug file"; + +sub init () { + $tnow = time(); + $infile = @ARGV[$#ARGV]; + + $resumefile = &get_resume_filename($infile); + # This returns the 9th element of the 13 element array + # created by the stat function. + $tprev = (stat ($resumefile))[9]; + # if this file is restarted in less than 5 seconds then + # remove the .resume file + if ( ($tnow - $tprev) < $tdiff ) { + unlink($resumefile); + } + + $mplayer_parameters = join(' ',@ARGV[0..$#ARGV-1]); +} + +&init(); +&save_time_offset(&mplayer($mplayer_parameters,$infile), $resumefile); + +#close(DEBUG); + +# For $pathname, return $path.$filename.resume +sub get_resume_filename () { + my($pathname)=@_; + + my $idx = rindex($pathname,"/"); + + if ($idx == -1) { # There was no "/" in $pathname + return ".".$pathname.".resume"; + } else { + # Now we need to split out the path from the filename. + my $path = substr($pathname,0,$idx+1); + my $filename = substr($pathname,$idx+1); + return "$path.$filename.resume"; + } +} + +# Calls mplayer and returns the last known video position +sub mplayer () { + my($parameters,$infile)=@_; + my $seconds=0; + my $timecode=&get_time_offset($infile); + my $mplayeropts=`./vdpau-detector $infile`; chomp $mplayeropts; + my @lines = split "\n", $mplayeropts; + my $last_line = pop(@lines); + my $command = "mplayer $last_line $parameters -ss $timecode \"$infile\" 2>&1 2>/dev/null |"; + + open(SHELL, $command); + # The kind of line we care about looks like this example: + # A:1215.2 V:1215.2 A-V: 0.006 ct: 0.210 207/201 13% 0% 1.9% 0 0 68% + # But all we care to look at is the first number. + + while (<SHELL>) { + #print DEBUG $_; + if (m/A: *[0-9]+\.[0-9]/) { # See if this line has timecodes on it + my $last_timecode_line = &extract_last_timecode_line($_); + if ($last_timecode_line =~ m/ *([0-9]+\.[0-9]) V/) { + $seconds=$1; + } + } + } + close(SHELL); + + return $seconds; + + sub extract_last_timecode_line () { + my ($line)=@_; + my @lines=split('A:',$line); + return @lines[$#lines-1]; + } +} + +# Save the last known video position +sub save_time_offset () { + my($seconds, $resumefile)=@_; + + open(RESUMEFILE, ">$resumefile") || die "Unable to open $resumefile for writing"; + print RESUMEFILE "$seconds"; + close(RESUMEFILE); +} + +# returns the number of seconds corresponding to the last known video position, +# in hh:mm:ss format, compatible with the "-ss" parameter to mplayer +sub get_time_offset () { + my($videofile)=@_; + my($resumefile) = &get_resume_filename($videofile); + my $seconds=0; + my $timecode; + + open(RESUMEFILE, "<$resumefile") || return "00:00:00"; + while(<RESUMEFILE>) { + $seconds=$_; + } + close(RESUMEFILE); + + my $hours = floor($seconds/3600); + $seconds = $seconds - $hours*3600; + + my $minutes = floor($seconds/60); + $seconds = int($seconds - $minutes*60) - $fudge_factor; + + $timecode = sprintf "%02d:%02d:%02d",$hours,$minutes,$seconds; +# print "TIMECODE: $timecode\n"; + return $timecode; +} + +sub print_usage () { + print "USAGE:\n"; + print "\t",$ARGV[0], "[mplayer parameters] video_file\n"; + print "\t","e.g. ",$ARGV[0], "-fs -zoom my.mpg\n"; + print "\t","Version 3/9/2009\n"; +} diff --git a/abs/core/linhes-scripts/mplayer-resumer.pl b/abs/core/linhes-scripts/mplayer-resumer.pl new file mode 100755 index 0000000..c785a25 --- /dev/null +++ b/abs/core/linhes-scripts/mplayer-resumer.pl @@ -0,0 +1,188 @@ +#!/usr/bin/perl + +use Shell; +use strict; +use POSIX qw(floor); + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# PURPOSE: +# -------------------------- +# This is a wrapper script to prove the concept of having MythTV +# resume playback of previously-stopped video where you left off. +# It's likely that a good solution will look different than this +# initial code. + +# RATIONALE: +# -------------------------- +# Watching 90% of a video and stopping causes you to return to the +# beginning again the next time you watch it. Remembering where +# you were in the video and resuming at that position is a much nicer +# behavior for the user. +# +# By default, mplayer spits out timecode information that tells you +# where you are in the video, to the tenth of a second. Mplayer also +# supports a seek feature on the command-line. We can make use of these +# features to write an mplayer wrapper that will remember the last +# position in a video file and resume to it on playback. + +# PARAMETERS: +# -------------------------- +# see print_usage() below + +# FILES: +# -------------------------- +# $infile, the video to play +# $resumefile, the video's resume file (see get_resume_filename() below) + +# KNOWN ISSUES: +# -------------------------- +# Mplayer misreports the timecodes on .nuv MPEG-2 files. Currently, anything +# captured via an HDTV tuner card and put into your /myth/video directory +# will fail with this resumer. +# +# Current theories include the timecode having to do with the show's broadcast +# time, recording time, or perhaps its upload time to the station that +# broadcast it. + +# DESIGN LIMITATION: +# ------------------------- +# If the video file to be played is on a read-only filesystem, or otherwise +# lives in a location that cannot be written to, resume will fail. This is +# because the current implementation uses a file parallel to the video file +# to store the timecode. +# + +# CHANGE LOG: +# 5/3/2006 +# Added last time started checking. +# If this script is restarted within $tdiff (default 5 seconds) +# then it will delete the file used to keep track of the videos +# resume position. + + +my $infile; +my $resumefile; +my $mplayer_parameters; +my $fudge_factor=2; # number of additional seconds to skip back before playback +my $tnow; # Time now. +my $tprev; # Time the prog was last started. + # Returned from the modification time of the xx.resume file. +my $tdiff=5; # How many seconds before we should start from + # the beginning of the movie +#DEBUG +#open(DEBUG,">/tmp/debug") || die "unable to open debug file"; + +sub init () { + $tnow = time(); + $infile = @ARGV[$#ARGV]; + + $resumefile = &get_resume_filename($infile); + # This returns the 9th element of the 13 element array + # created by the stat function. + $tprev = (stat ($resumefile))[9]; + # if this file is restarted in less than 5 seconds then + # remove the .resume file + if ( ($tnow - $tprev) < $tdiff ) { + unlink($resumefile); + } + + $mplayer_parameters = join(' ',@ARGV[0..$#ARGV-1]); +} + +&init(); +&save_time_offset(&mplayer($mplayer_parameters,$infile), $resumefile); + +#close(DEBUG); + +# For $pathname, return $path.$filename.resume +sub get_resume_filename () { + my($pathname)=@_; + + my $idx = rindex($pathname,"/"); + + if ($idx == -1) { # There was no "/" in $pathname + return ".".$pathname.".resume"; + } else { + # Now we need to split out the path from the filename. + my $path = substr($pathname,0,$idx+1); + my $filename = substr($pathname,$idx+1); + return "$path.$filename.resume"; + } +} + +# Calls mplayer and returns the last known video position +sub mplayer () { + my($parameters,$infile)=@_; + my $seconds=0; + my $timecode=&get_time_offset($infile); + my $command = "mplayer $parameters -ss $timecode \"$infile\" 2>&1 2>/dev/null |"; + + open(SHELL, $command); + # The kind of line we care about looks like this example: + # A:1215.2 V:1215.2 A-V: 0.006 ct: 0.210 207/201 13% 0% 1.9% 0 0 68% + # But all we care to look at is the first number. + + while (<SHELL>) { + #print DEBUG $_; + if (m/A: *[0-9]+\.[0-9]/) { # See if this line has timecodes on it + my $last_timecode_line = &extract_last_timecode_line($_); + if ($last_timecode_line =~ m/ *([0-9]+\.[0-9]) V/) { + $seconds=$1; + } + } + } + close(SHELL); + + return $seconds; + + sub extract_last_timecode_line () { + my ($line)=@_; + my @lines=split('A:',$line); + return @lines[$#lines-1]; + } +} + +# Save the last known video position +sub save_time_offset () { + my($seconds, $resumefile)=@_; + + open(RESUMEFILE, ">$resumefile") || die "Unable to open $resumefile for writing"; + print RESUMEFILE "$seconds"; + close(RESUMEFILE); +} + +# returns the number of seconds corresponding to the last known video position, +# in hh:mm:ss format, compatible with the "-ss" parameter to mplayer +sub get_time_offset () { + my($videofile)=@_; + my($resumefile) = &get_resume_filename($videofile); + my $seconds=0; + my $timecode; + + open(RESUMEFILE, "<$resumefile") || return "00:00:00"; + while(<RESUMEFILE>) { + $seconds=$_; + } + close(RESUMEFILE); + + my $hours = floor($seconds/3600); + $seconds = $seconds - $hours*3600; + + my $minutes = floor($seconds/60); + $seconds = int($seconds - $minutes*60) - $fudge_factor; + + $timecode = sprintf "%02d:%02d:%02d",$hours,$minutes,$seconds; +# print "TIMECODE: $timecode\n"; + return $timecode; +} + +sub print_usage () { + print "USAGE:\n"; + print "\t",$ARGV[0], "[mplayer parameters] video_file\n"; + print "\t","e.g. ",$ARGV[0], "-fs -zoom my.mpg\n"; + print "\t","Version 5/3/2006\n"; +} diff --git a/abs/core/linhes-scripts/myth2mp3 b/abs/core/linhes-scripts/myth2mp3 new file mode 100755 index 0000000..89181c1 --- /dev/null +++ b/abs/core/linhes-scripts/myth2mp3 @@ -0,0 +1,82 @@ +#!/bin/sh +# convert recordings to as mp3 audio only +# version 0.9 + +# usage: +# first parameter must be %DIR%/%FILE% of the recording +# second parameter must be the desired base name of the output +# third parameter must be %CHANID% if you set USECUTLIST=Y +# fourth parameter must be %STARTTIME% if you set USECUTLIST=Y +# In the mythtv setup screen invoke this script like this: +# MYTHTV User Job Command: +# /usr/LH/bin/myth2mp3 "%DIR%/%FILE%" "%TITLE% - %SUBTITLE%" "%CHANID%" "%STARTTIME%" + +# options: +BITRATE=256k #ie. 128k, 160k, 192k, 224k, 256k +USECUTLIST=Y #Y or N + +# where the converted audio is stored +OUT_DIR=/myth/music + +# create temp filename so multiple instances won't conflict +TMPNAME=toMP3-$$ +TMPFILE=/myth/tmp/$TMPNAME.mp3 +TMPCUTFILE=/myth/tmp/$TMPNAME.mpg +FFINPUTFILE=$1 + +# log file location +LOGFILE=/var/log/mythtv/myth2mp3.log +CDate="`date`" +echo "" >> $LOGFILE +echo $CDate >> $LOGFILE +echo "File to encode: $1 Name: $2" >> $LOGFILE + +# start timer +beforetime="$(date +%s)" + +# check if using cutlist +if [ $USECUTLIST = Y ];then + MYTHCOMMFRAMES=`mythcommflag --getcutlist -f "$FFINPUTFILE" | grep 'Cutlist:' | cut -d \ -f 2` + if [ -n "$MYTHCOMMFRAMES" ]; then + echo "Extracting Cutlist..." >> $LOGFILE + /usr/bin/nice -n19 /usr/bin/mythtranscode --chanid "$3" --starttime "$4" --outfile "$TMPCUTFILE" --mpeg2 --honorcutlist + FFINPUTFILE=$TMPCUTFILE + fi +fi + +# run ffmpeg to do conversion +echo "Encoding..." >> $LOGFILE +/usr/bin/nice -n19 /usr/bin/ffmpeg -i "$FFINPUTFILE" -vn -acodec libmp3lame -ab $BITRATE -ar 44100 -ac 2 "$TMPFILE" +ERROR=$? + +# make output filename unique +OUTPUTFILE=$OUT_DIR/$2.mp3 +i=1 +while [ -e "$OUTPUTFILE" ] +do + OUTPUTFILE=$OUT_DIR/$2-$i.mp3 + i=`expr $i + 1` +done + +# move temp file to output location +chown mythtv "$TMPFILE" && mv "$TMPFILE" "$OUTPUTFILE" + +# stop timer +aftertime="$(date +%s)" +seconds="$(expr $aftertime - $beforetime)" + +if [ $ERROR -eq 0 ]; then + echo "File Encoded Sucessfully: $OUTPUTFILE" >> $LOGFILE + hours=$((seconds / 3600)) + seconds=$((seconds % 3600)) + minutes=$((seconds / 60)) + seconds=$((seconds % 60)) + echo "Encoding Time: $hours hour(s) $minutes minute(s) $seconds second(s)" >> $LOGFILE +else + echo "ERROR: $ERROR" >> $LOGFILE +fi + +# clean up left over files +unlink $TMPFILE 2> /dev/null +unlink $TMPCUTFILE 2> /dev/null +unlink $TMPCUTFILE.map 2> /dev/null diff --git a/abs/core/linhes-scripts/myth2x264 b/abs/core/linhes-scripts/myth2x264 new file mode 100755 index 0000000..014fcbe --- /dev/null +++ b/abs/core/linhes-scripts/myth2x264 @@ -0,0 +1,223 @@ +#!/bin/sh +# convert recording to x264 encoded avi +# version 0.6 + +# usage: +# first parameter must be %DIR%/%FILE% of the recording +# second parameter must be the desired base name of the output +# third parameter must be %CHANID% if you set USECUTLIST=Y +# fourth parameter must be %STARTTIME% if you set USECUTLIST=Y +# fifth parameter must be %JOBID% for the User Job status to be updated in MythTV +# in the mythtv setup screen invoke this script like this: +# MYTHTV User Job Command: +# /usr/LH/bin/myth2x264 "%DIR%/%FILE%" "%TITLE% - %SUBTITLE%" "%CHANID%" "%STARTTIME%" "%JOBID%" + +# options: +RESOLUTION=960:544 # to keep the source resolution use -1 or to scale down use xxx:xxx (ie 960:544) +BITRATE=2500 # use negative bitrate to set output file size in KB (ie. -700000) +USECUTLIST=Y # Y or N + +# where the converted video is stored +OUT_DIR=/myth/video + +# database settings +BACKEND_HOSTNAME=${BACKEND_HOSTNAME:-"localhost"} +DBUSERNAME=${DBUSERNAME:-"mythtv"} +DBPASSWORD=${DBPASSWORD:-"mythtv"} +SQLCMD="mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -e" + +#------FUNCTIONS--------------- +update_comment() +# Arg_1 = COMMENT +{ +if [ $NO_JOBID = 0 ]; then + `$SQLCMD "update jobqueue set comment=\"$1\" where id=\"$JOBID\";"` +fi +} + +update_status() +# Arg_1 = status code +{ +if [ $NO_JOBID = 0 ]; then + `$SQLCMD "update jobqueue set status=\"$1\" where id=\"$JOBID\";"` +fi +} + +check_background_progress() +# check mencoder progress in background +# Arg_1 = PROGRESS CALCULATION +{ +while [ `tail -1 $STATUSFILE | grep -c "^x264 \[info\]: kb/s:"` = 0 ] +do + sleep 10 + check_myth_jobcmds + current_status=`tail -1 $STATUSFILE | grep "([ 0-9]\{1,\}%)"` + prog_percent=`echo "$current_status" | sed 's_.*(\([ 0-9][ 0-9]\)%).*_\1_'` + current_FPS=`echo "$current_status" | sed 's_.*\([ 0-9][ 0-9].[ 0-9][ 0-9]\)fps.*_\1_'` + if [ -n "$prog_percent" ]; then + prog_percent=`expr $prog_percent / $1` + echo "$prog_percent% Completed @ $current_FPS fps" + update_comment "$prog_percent% Completed @ $current_FPS fps" + fi + sleep 10 +done +} + +check_myth_jobcmds() +# check the myth database for stop pause or resume commands +{ +if [ $NO_JOBID = 0 ]; then + CURRENT_CMD=`$SQLCMD "select cmds from jobqueue where id=\"$JOBID\";" | sed '/[0-9]/!d'` + case "$CURRENT_CMD" in + # JOB_RUN + 0) ;; + # JOB_PAUSE + 1) update_status 6 + kill -s STOP $mencoder_pid ;; + # JOB_RESUME + 2) update_status 4 + `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` + kill -s CONT $mencoder_pid ;; + # JOB_STOP + 4) update_status 5 + `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` + kill -9 $mencoder_pid $command_pid + clean_up_files + echo "Encode Cancelled" >> $LOGFILE + update_status 320 + exit ;; + esac +fi +} + +get_mencoder_pid() +{ +process_name="" +i1=1 +while [ "$process_name" != "found" ]; do + if [ "`ps $mencoder_pid | grep mencoder | sed 's_.*\(mencoder\).*_\1_'`" = "mencoder" ]; then + process_name="found" + else + mencoder_pid=`expr $mencoder_pid + 1` + fi + i1=`expr $i1 + 1` + if [ $i1 -gt 20 ]; then + break + fi +done +} + +clean_up_files() +# clean up left over files +{ +unlink $TMPFILE 2> /dev/null +unlink $TMPCUTFILE 2> /dev/null +unlink $TMPCUTFILE.map 2> /dev/null +unlink $TWOPASSFILE 2> /dev/null +unlink $TWOPASSFILE.tmp 2> /dev/null +unlink $STATUSFILE 2> /dev/null +unlink $MENCODER_RETURN_CODE 2> /dev/null +unlink $MENCODER_RETURN_CODE_2 2> /dev/null +} + +#-------MAIN SCRIPT------------ + +# check if %JOBID% is passed from command line +JOBID=$5 +if [ -z "$JOBID" ]; then + NO_JOBID=1 +else + NO_JOBID=0 +fi + +# create temp filename so multiple instances won't conflict +TMPNAME=toX264-$$ +TMPFILE=/myth/tmp/$TMPNAME.avi +TMPCUTFILE=/myth/tmp/$TMPNAME.mpg +MENINPUTFILE=$1 +TWOPASSFILE=/myth/tmp/$TMPNAME-2pass.log +STATUSFILE=/myth/tmp/$TMPNAME-status.log +MENCODER_RETURN_CODE=/myth/tmp/$TMPNAME-mencoder_return_code +MENCODER_RETURN_CODE_2=/myth/tmp/$TMPNAME-mencoder_return_code_2 + +# log file location +LOGFILE=/var/log/mythtv/myth2x264.log +CDate="`date`" +echo "" >> $LOGFILE +echo $CDate >> $LOGFILE +echo "File to encode: $MENINPUTFILE Name: $2" >> $LOGFILE + +# start timer +beforetime="$(date +%s)" + +check_myth_jobcmds + +# check if using cutlist +if [ $USECUTLIST = Y ]; then + MYTHCOMMFRAMES=`mythcommflag --getcutlist -f $MENINPUTFILE | grep 'Cutlist:' | cut -d \ -f 2` + if [ -n "$MYTHCOMMFRAMES" ]; then + echo "Extracting Cutlist..." >> $LOGFILE + update_comment "Extracting Cutlist" + /usr/bin/nice -n19 /usr/bin/mythtranscode --chanid "$3" --starttime "$4" --outfile "$TMPCUTFILE" --mpeg2 --honorcutlist + MENINPUTFILE=$TMPCUTFILE + fi +fi + +# run mencoder in background to do 1st pass conversion +echo "Encoding 1st Pass at $RESOLUTION..." >> $LOGFILE +( /usr/bin/nice -n19 /usr/bin/mencoder $MENINPUTFILE -passlogfile $TWOPASSFILE \ +-oac copy -ovc x264 -vf lavcdeint,scale=$RESOLUTION \ +-x264encopts threads=auto:pass=1:turbo=1:subq=1:frameref=1:bframes=3:bitrate=$BITRATE \ +-o /dev/null > $STATUSFILE 2>&1 ; echo $? > $MENCODER_RETURN_CODE ) & +mencoder_pid=$! +command_pid=$mencoder_pid +get_mencoder_pid + +check_background_progress "2" + +# run mencoder in background to do 2nd pass conversion +echo "Encoding 2nd Pass at $RESOLUTION..." >> $LOGFILE +( /usr/bin/nice -n19 /usr/bin/mencoder $MENINPUTFILE -passlogfile $TWOPASSFILE \ +-oac copy -ovc x264 -vf lavcdeint,scale=$RESOLUTION \ +-x264encopts threads=auto:pass=2:subq=5:8x8dct:frameref=3:bframes=3:b_pyramid:weight_b:bitrate=$BITRATE \ +-o "$TMPFILE" > $STATUSFILE 2>&1 ; echo $? > $MENCODER_RETURN_CODE_2 ) & +mencoder_pid=$! +command_pid=$mencoder_pid +get_mencoder_pid + +check_background_progress "2 + 50" + +ERROR=$? + +# make output filename unique +OUTPUTFILE=$OUT_DIR/$2.avi +i=1 +while [ -e "$OUTPUTFILE" ] +do + OUTPUTFILE=$OUT_DIR/$2-$i.avi + i=`expr $i + 1` +done + +# move temp file to output location +chown mythtv "$TMPFILE" && mv "$TMPFILE" "$OUTPUTFILE" + +# stop timer +aftertime="$(date +%s)" +seconds="$(expr $aftertime - $beforetime)" + +if [ $ERROR -eq 0 ]; then + echo "File Encoded Successfully: $OUTPUTFILE" >> $LOGFILE + hours=$((seconds / 3600)) + seconds=$((seconds % 3600)) + minutes=$((seconds / 60)) + seconds=$((seconds % 60)) + echo "Encoding took $hours hour(s) $minutes minute(s) $seconds second(s) @ $current_FPS fps." >> $LOGFILE + update_status 272 + update_comment "Encode Successful. Encoding Time: $hours hour(s) $minutes minute(s) $seconds second(s)" +else + update_status 304 + update_comment "Encode Failed. Exit status: $ERROR" + echo "ERROR: $ERROR" >> $LOGFILE +fi + +clean_up_files diff --git a/abs/core/linhes-scripts/myth2xvid b/abs/core/linhes-scripts/myth2xvid new file mode 100755 index 0000000..d0fcb42 --- /dev/null +++ b/abs/core/linhes-scripts/myth2xvid @@ -0,0 +1,223 @@ +#!/bin/sh +# convert recording to xvid encoded avi +# version 1.3 + +# usage: +# first parameter must be %DIR%/%FILE% of the recording +# second parameter must be the desired base name of the output +# third parameter must be %CHANID% if you set USECUTLIST=Y +# fourth parameter must be %STARTTIME% if you set USECUTLIST=Y +# fifth parameter must be %JOBID% for the User Job status to be updated in MythTV +# in the mythtv setup screen invoke this script like this: +# MYTHTV User Job Command: +# /usr/LH/bin/myth2xvid "%DIR%/%FILE%" "%TITLE% - %SUBTITLE%" "%CHANID%" "%STARTTIME%" "%JOBID%" + +# options: +RESOLUTION=960:544 # to keep the source resolution use -1 or to scale down use xxx:xxx (ie 960:544) +BITRATE=2500 # use negative bitrate to set output file size in KB (ie. -700000) +USECUTLIST=Y # Y or N + +# where the converted video is stored +OUT_DIR=/myth/video + +# database settings +BACKEND_HOSTNAME=${BACKEND_HOSTNAME:-"localhost"} +DBUSERNAME=${DBUSERNAME:-"mythtv"} +DBPASSWORD=${DBPASSWORD:-"mythtv"} +SQLCMD="mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -e" + +#------FUNCTIONS--------------- +update_comment() +# Arg_1 = COMMENT +{ +if [ $NO_JOBID = 0 ]; then + `$SQLCMD "update jobqueue set comment=\"$1\" where id=\"$JOBID\";"` +fi +} + +update_status() +# Arg_1 = status code +{ +if [ $NO_JOBID = 0 ]; then + `$SQLCMD "update jobqueue set status=\"$1\" where id=\"$JOBID\";"` +fi +} + +check_background_progress() +# check mencoder progress in background +# Arg_1 = PROGRESS CALCULATION +{ +while [ `tail -1 $STATUSFILE | grep -c "^Audio stream:"` = 0 ] +do + sleep 10 + check_myth_jobcmds + current_status=`tail -1 $STATUSFILE | grep "([ 0-9]\{1,\}%)"` + prog_percent=`echo "$current_status" | sed 's_.*(\([ 0-9][ 0-9]\)%).*_\1_'` + current_FPS=`echo "$current_status" | sed 's_.*\([ 0-9][ 0-9].[ 0-9][ 0-9]\)fps.*_\1_'` + if [ -n "$prog_percent" ]; then + prog_percent=`expr $prog_percent / $1` + echo "$prog_percent% Completed @ $current_FPS fps" + update_comment "$prog_percent% Completed @ $current_FPS fps" + fi + sleep 10 +done +} + +check_myth_jobcmds() +# check the myth database for stop pause or resume commands +{ +if [ $NO_JOBID = 0 ]; then + CURRENT_CMD=`$SQLCMD "select cmds from jobqueue where id=\"$JOBID\";" | sed '/[0-9]/!d'` + case "$CURRENT_CMD" in + # JOB_RUN + 0) ;; + # JOB_PAUSE + 1) update_status 6 + kill -s STOP $mencoder_pid ;; + # JOB_RESUME + 2) update_status 4 + `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` + kill -s CONT $mencoder_pid ;; + # JOB_STOP + 4) update_status 5 + `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` + kill -9 $mencoder_pid $command_pid + clean_up_files + echo "Encode Cancelled" >> $LOGFILE + update_status 320 + exit ;; + esac +fi +} + +get_mencoder_pid() +{ +process_name="" +i1=1 +while [ "$process_name" != "found" ]; do + if [ "`ps $mencoder_pid | grep mencoder | sed 's_.*\(mencoder\).*_\1_'`" = "mencoder" ]; then + process_name="found" + else + mencoder_pid=`expr $mencoder_pid + 1` + fi + i1=`expr $i1 + 1` + if [ $i1 -gt 20 ]; then + break + fi +done +} + +clean_up_files() +# clean up left over files +{ +unlink $TMPFILE 2> /dev/null +unlink $TMPCUTFILE 2> /dev/null +unlink $TMPCUTFILE.map 2> /dev/null +unlink $TWOPASSFILE 2> /dev/null +unlink $TWOPASSFILE.tmp 2> /dev/null +unlink $STATUSFILE 2> /dev/null +unlink $MENCODER_RETURN_CODE 2> /dev/null +unlink $MENCODER_RETURN_CODE_2 2> /dev/null +} + +#-------MAIN SCRIPT------------ + +# check if %JOBID% is passed from command line +JOBID=$5 +if [ -z "$JOBID" ]; then + NO_JOBID=1 +else + NO_JOBID=0 +fi + +# create temp filename so multiple instances won't conflict +TMPNAME=toXVID-$$ +TMPFILE=/myth/tmp/$TMPNAME.avi +TMPCUTFILE=/myth/tmp/$TMPNAME.mpg +MENINPUTFILE=$1 +TWOPASSFILE=/myth/tmp/$TMPNAME-2pass.log +STATUSFILE=/myth/tmp/$TMPNAME-status.log +MENCODER_RETURN_CODE=/myth/tmp/$TMPNAME-mencoder_return_code +MENCODER_RETURN_CODE_2=/myth/tmp/$TMPNAME-mencoder_return_code_2 + +# log file location +LOGFILE=/var/log/mythtv/myth2xvid.log +CDate="`date`" +echo "" >> $LOGFILE +echo $CDate >> $LOGFILE +echo "File to encode: $MENINPUTFILE Name: $2" >> $LOGFILE + +# start timer +beforetime="$(date +%s)" + +check_myth_jobcmds + +# check if using cutlist +if [ $USECUTLIST = Y ]; then + MYTHCOMMFRAMES=`mythcommflag --getcutlist -f $MENINPUTFILE | grep 'Cutlist:' | cut -d \ -f 2` + if [ -n "$MYTHCOMMFRAMES" ]; then + echo "Extracting Cutlist..." >> $LOGFILE + update_comment "Extracting Cutlist" + /usr/bin/nice -n19 /usr/bin/mythtranscode --chanid "$3" --starttime "$4" --outfile "$TMPCUTFILE" --mpeg2 --honorcutlist + MENINPUTFILE=$TMPCUTFILE + fi +fi + +# run mencoder in background to do 1st pass conversion +echo "Encoding 1st Pass at $RESOLUTION..." >> $LOGFILE +( /usr/bin/nice -n19 /usr/bin/mencoder $MENINPUTFILE -passlogfile $TWOPASSFILE \ +-oac copy -ovc xvid -vf lavcdeint,scale=$RESOLUTION \ +-xvidencopts pass=1:vhq=0:turbo:me_quality=5:quant_type=mpeg:max_bframes=0:bitrate=$BITRATE \ +-o /dev/null > $STATUSFILE 2>&1 ; echo $? > $MENCODER_RETURN_CODE ) & +mencoder_pid=$! +command_pid=$mencoder_pid +get_mencoder_pid + +check_background_progress "2" + +# run mencoder in background to do 2nd pass conversion +echo "Encoding 2nd Pass at $RESOLUTION..." >> $LOGFILE +( /usr/bin/nice -n19 /usr/bin/mencoder $MENINPUTFILE -passlogfile $TWOPASSFILE \ +-oac copy -ovc xvid -vf lavcdeint,scale=$RESOLUTION \ +-xvidencopts pass=2:vhq=0:bvhq=1:me_quality=5:quant_type=mpeg:max_bframes=0:bitrate=$BITRATE \ +-o "$TMPFILE" > $STATUSFILE 2>&1 ; echo $? > $MENCODER_RETURN_CODE_2 ) & +mencoder_pid=$! +command_pid=$mencoder_pid +get_mencoder_pid + +check_background_progress "2 + 50" + +ERROR=$? + +# make output filename unique +OUTPUTFILE=$OUT_DIR/$2.avi +i=1 +while [ -e "$OUTPUTFILE" ] +do + OUTPUTFILE=$OUT_DIR/$2-$i.avi + i=`expr $i + 1` +done + +# move temp file to output location +chown mythtv "$TMPFILE" && mv "$TMPFILE" "$OUTPUTFILE" + +# stop timer +aftertime="$(date +%s)" +seconds="$(expr $aftertime - $beforetime)" + +if [ $ERROR -eq 0 ]; then + echo "File Encoded Successfully: $OUTPUTFILE" >> $LOGFILE + hours=$((seconds / 3600)) + seconds=$((seconds % 3600)) + minutes=$((seconds / 60)) + seconds=$((seconds % 60)) + echo "Encoding took $hours hour(s) $minutes minute(s) $seconds second(s) @ $current_FPS fps." >> $LOGFILE + update_status 272 + update_comment "Encode Successful. Encoding Time: $hours hour(s) $minutes minute(s) $seconds second(s)" +else + update_status 304 + update_comment "Encode Failed. Exit status: $ERROR" + echo "ERROR: $ERROR" >> $LOGFILE +fi + +clean_up_files \ No newline at end of file diff --git a/abs/core/linhes-scripts/mythwelcome-set-alarm.sh b/abs/core/linhes-scripts/mythwelcome-set-alarm.sh new file mode 100755 index 0000000..6dbd39e --- /dev/null +++ b/abs/core/linhes-scripts/mythwelcome-set-alarm.sh @@ -0,0 +1,23 @@ +#!/bin/sh +#$1 is the first argument to the script. It is the time in seconds since 1970 +#This is defined in mythwelcome with the time_t argument + +# Configure mythwelcome --setup page: +# Command to Set Wakeup Time: sudo sh -c "/usr/LH/bin/mythwelcome-set-alarm.sh $time" +# Wakeup Time Format: time_t +# nvram-wakeup Restart Command: Leave this blank +# Command to reboot: sudo /sbin/reboot +# Command to shutdown: sudo /sbin/poweroff +# Command to run Xterm: xterm +# Command to start the Frontend: /usr/bin/mythfrontend -l /var/log/mythtv/mythfrontend.log + +# Configure mythtv-setup Shutdown/Wakeup Options page: +# Idletimeout (secs): any value greater that 0 +# Wakeup time format: yyyy-MM-dd:hh:mm +# Set wakeup time command: /usr/bin/mythshutdown --setwakeup $time +# Server Halt command: /usr/bin/mythshutdown --shutdown +# Pre shutdown check command: /usr/bin/mythshutdown --check + +echo 0 > /sys/class/rtc/rtc0/wakealarm #this clears your alarm +echo $1 > /sys/class/rtc/rtc0/wakealarm #this writes your alarm +cat /proc/driver/rtc > /var/log/wake_alarm diff --git a/abs/core/linhes-scripts/mythwelcome-test-wakeup.sh b/abs/core/linhes-scripts/mythwelcome-test-wakeup.sh new file mode 100755 index 0000000..4aadf6d --- /dev/null +++ b/abs/core/linhes-scripts/mythwelcome-test-wakeup.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +sudo sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm" #this clears your alarm +sudo sh -c "echo `date '+%s' -d '+ 4 minutes'` > /sys/class/rtc/rtc0/wakealarm" #this writes your alarm +cat /proc/driver/rtc +cat /proc/driver/rtc > /var/log/wake_alarm +echo "Your computer is set to start up in 4 minutes using ACPI." +echo -n "Do you want to shutdown the computer now? (y/n): " +read -n 1 shutdown +if [ "$shutdown" == "y" ]; then + echo -e "\nShutting down now..." + sudo shutdown -t 5 -h now +else + echo -e "\nTo shutdown execute the following:" + echo " sudo shutdown -t 5 -h now" +fi diff --git a/abs/core/linhes-scripts/pause-mythcommflag.sh b/abs/core/linhes-scripts/pause-mythcommflag.sh new file mode 100755 index 0000000..4da808b --- /dev/null +++ b/abs/core/linhes-scripts/pause-mythcommflag.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# pause-mythcommflag.sh v0.2 05/21/09 +# Utility to automatically pause & unpause mythcommflag if CPU usage is above a certain level +# Free for any use. +# Installation: +# cp pause-mythcommflag.sh /usr/LH/bin +# chmod +x /usr/LH/bin/pause-mythcommflag.sh +# Usage: Executed from sv start pause-mythcommflag + +# Threshold for when mythcommflag will be paused +CPUTHRESHOLD=75 + +# Second Threshold for when mythcommflag is already paused +PAUSEDCPUTHRESHOLD=45 + +# Log file to write (change to /dev/null for no log) +LOG=/var/log/mythtv/pause-mythcommflag.log + +# Number of seconds to wait between checking for mythcommflag process +SLEEP=5 + +#sleep $SLEEP + +touch $LOG + +COMMFLAGSTATE=1 + +while true; do + PROCCOMMFLAG=`pidof mythcommflag` + if [ -n "${PROCCOMMFLAG}" ] + then + FRONTENDCPU=`top -bn1u mythtv | grep mythfrontend | awk '{ print $9 }'` + if [ $COMMFLAGSTATE -eq 1 ] + then + CPUTHRESHOLD1=$CPUTHRESHOLD + else + CPUTHRESHOLD1=$PAUSEDCPUTHRESHOLD + fi + if [ "$FRONTENDCPU" -ge "$CPUTHRESHOLD1" ] + then +# echo "$(date) FE CPU $FRONTENDCPU% is greater than $CPUTHRESHOLD1%, PAUSE Commflagging" >> $LOG + kill -s STOP $PROCCOMMFLAG + COMMFLAGSTATE=0 + else +# echo "$(date) FE CPU $FRONTENDCPU% is less than $CPUTHRESHOLD1%, CONTINUE Commflagging" >> $LOG + kill -s CONT $PROCCOMMFLAG + COMMFLAGSTATE=1 + fi +# else +# echo "No COMMFLAG Process Active" >> $LOG + fi + sleep $SLEEP +done diff --git a/abs/core/linhes-scripts/pause_mythcommflag b/abs/core/linhes-scripts/pause_mythcommflag new file mode 100755 index 0000000..c20f9b0 --- /dev/null +++ b/abs/core/linhes-scripts/pause_mythcommflag @@ -0,0 +1,8 @@ +/var/log/mythtv/pause-mythcommflag.log { + daily + rotate 7 + notifempty + copytruncate + compress + missingok +} diff --git a/abs/core/linhes-scripts/run-limit-mythcommflag b/abs/core/linhes-scripts/run-limit-mythcommflag new file mode 100755 index 0000000..38ca45f --- /dev/null +++ b/abs/core/linhes-scripts/run-limit-mythcommflag @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/bin/nice -19 /usr/LH/bin/limit-mythcommflag.sh diff --git a/abs/core/linhes-scripts/run-pause-mythcommflag b/abs/core/linhes-scripts/run-pause-mythcommflag new file mode 100755 index 0000000..8bd25ac --- /dev/null +++ b/abs/core/linhes-scripts/run-pause-mythcommflag @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/bin/nice -19 /usr/LH/bin/pause-mythcommflag.sh diff --git a/abs/core/linhes-scripts/screenshooter.sh b/abs/core/linhes-scripts/screenshooter.sh new file mode 100755 index 0000000..94ea6fd --- /dev/null +++ b/abs/core/linhes-scripts/screenshooter.sh @@ -0,0 +1,230 @@ +#!/bin/bash + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# with contributions from TJC and Sarah Hayes +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# This is alpha code to auto-generate thumbnails for previews in MythVideo. +# It won't currently work on some filenames that have spaces in them. +# It's surely just a matter of escaping or quoting, but I have yet to find +# the right incantation. + +# example usage: +# find -L /myth/video -wholename '*.covers' -prune -o -name '*.resume' -o -type f -exec screenshooter.sh -v {} \; + +# limitations: +# -- +# In an MBE/SBE/FE setup this might get the settings for the wrong machine... +# The script has no AI to know if a grabbed frame is useful to identify the video, only that it was able to grab it. +# Doesn't clean up after itself if videos are deleted, though MythTV may do this on its own. +# Minimum theoretical compatible video length is 4 seconds. Shorter videos will not work with this version. +# Surely more limitations I can't think of because it's my baby :) + +Usage() { + echo "USAGE:" + echo `basename $0` "-v PATHNAME [-s SECONDS] [-c] [-b HOSTNAME] [-u USERNAME] [-p PASSWORD] [-o]" + echo "-v: pathname to Video" + echo "-s: number of Seconds to skip before capturing (270 by default)" + echo "-c: Clobber any previous screenshot found for this video (off by default)" + echo "-b: mysql server (Backend) hostname (localhost by default)" + echo "-u: mysql Username (mythtv by default)" + echo "-p: mysql Password (mythtv by default)" + echo "-o: verbOse mode (off by default)" + echo "-x: check for valid video eXtension (off by default)" + echo + echo "EXAMPLE: $0 -v /myth/video/HDTV/shuttle.mpg -c -s 30" + exit 3 +} + +if [ -z $1 ]; then + Usage +fi + +V_MISSING=1 + +while getopts "v:sbupochx" FLAG ; do + case "$FLAG" in + v) VIDEO_PATHNAME="$OPTARG" + V_MISSING=0;; + s) SKIPAHEAD="$OPTARG";; + c) CLOBBER=1;; + b) BACKEND_HOSTNAME="$OPTARG";; + u) DBUSERNAME="$OPTARG";; + p) DBPASSWORD="$OPTARG";; + o) VERBOSE=1;; + x) EXTENSION_CHECK=1;; + *) Usage;; + esac +done + +if [ $V_MISSING == 1 ]; then + Usage +fi + +# Declaring Variables here and assigning sensible defaults. + +# SKIPAHEAD is the number of seconds to skip ahead before starting the frame capture. +# Set it to an arbitrary value if none is specified. +SKIPAHEAD=${SKIPAHEAD:-"270"} +BACKEND_HOSTNAME=${BACKEND_HOSTNAME:-"localhost"} +DBUSERNAME=${DBUSERNAME:-"mythtv"} +DBPASSWORD=${DBPASSWORD:-"mythtv"} +# Defaults to quiet. +VERBOSE=${VERBOSE:-0} +# Unless otherwise told, do not clobber existing cover files. +CLOBBER=${CLOBBER:-0} +# Unless otherwise told, do not check the file extension against +# MythTV's list of registered video file types. +EXTENSION_CHECK=${EXTENSION_CHECK:-0} + +VIDEO_CAPTURE_HOME=$(mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -sNBe "select data from settings where value='VideoArtworkDir' limit 1") +if [ ! -d "$VIDEO_CAPTURE_HOME" ] ; then + echo "Directory $VIDEO_CAPTURE_HOME does not exist, nowhere to put the screen shot!" + echo "Have you configured MythVideo yet?" + exit 1 +fi + +VIDEO_HOME=$(mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -sNBe "select data from settings where value='VideoStartupDir' limit 1") +VIDEO_HOME=(${VIDEO_HOME//:/ }); +VIDEO_HOME_COUNT=${#VIDEO_HOME[@]} +for (( i=0; i<${VIDEO_HOME_COUNT}; i++ )); +do + if [ ! -d "${VIDEO_HOME[${i}]}" ] ; then + echo "Directory ${VIDEO_HOME[${i}]} does not exist, nowhere to put the screen shot!" + echo "Have you configured MythVideo yet?" + exit 1 + fi +done + +VIDEO_FILENAME=$(basename "$VIDEO_PATHNAME") +VIDEO_EXTENSION=${VIDEO_FILENAME##*.} +# Since we cron'd lets first make sure the validity of the file +if [ "$EXTENSION_CHECK" == "1" ]; then + EXCHECK=$(mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -sNBe "select f_ignore from videotypes where extension=\"$VIDEO_EXTENSION\";") + #excheck returns blank, it found nothing. + if [ "$EXCHECK" == "" ]; then + if [ "$VERBOSE" == "1" ]; then + echo "$VIDEO_EXTENSION does not appear to be a valid media file, skipping." + fi + exit 1 + else + # It is valid, but should we ignore it. If so then excheck will equal 1. + if [ "EXCHECK" == "1" ]; then + if [ "$VERBOSE" == "1" ]; then + echo "$VIDEO_EXTENSION is set to ignore." + fi + exit 1 + fi + # It is valid, it's not set to ignore. + if [ "$VERBOSE" == "1" ]; then + echo "$VIDEO_EXTENSION appears in the Database, checking further." + fi + EXCHECK=$(mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -sNBe "select title from videometadata where filename=\"$VIDEO_PATHNAME\";") + #Right, the file is supposed to be playable. Has it been imported to the Db yet? + if [ "$EXCHECK" == "" ] ; then + if [ "$VERBOSE" == "1" ]; then + echo "$VIDEO_FILENAME does not exist in the database." + fi + exit 1 + # If you decide you want the system to 'auto import' the video then comment out + # the exit line and uncomment the rest of it. Bewarned, this is sucky SQL at + # the best but will give sensible defaults. + # + # if [ "$VERBOSE" == "1" ]; then + # echo "Importing $VIDEO_FILENAME in to database." + # fi + # mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -sNBe "insert into videometadata (intid, title, director, plot, rating, inetref, year, userrating, length, showlevel, filename, coverfile, childid, browse, playcommand, category) values (' ', '$VIDEO_FILENAME', 'Unknown', 'Unknown', 'NR', '00000000', 1895, 0.0, 0, 1, '$VIDEO_PATHNAME', 'No Cover', -1, 1, ' ', 0);" + fi + fi +fi + +if [ "$CLOBBER" -eq 0 ]; then + # Since we're not clobbering, first check to see if this video already has a coverfile entry in MySQL: + SQL_CMD="select coverfile from videometadata where filename=\"$VIDEO_PATHNAME\";" + CURRENT_COVERFILE=`mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -B -e "$SQL_CMD" | tail -1` + + if [[ "$CURRENT_COVERFILE" != "" ]] && [[ "$CURRENT_COVERFILE" != "No Cover" ]]; then + # there's already a cover file for this video + if [ "$VERBOSE" == "1" ]; then + echo "$VIDEO_FILENAME has cover file, skipping." + fi + exit 2 + fi +fi + + +# Swap the video file extension for png. Should work assuming the extension only appears ONCE! +VIDEO_CAPTURE_PATHNAME="$VIDEO_CAPTURE_HOME/$VIDEO_FILENAME.png" + +# How many frames of video to capture. We'll grab the last frame as our screenshot. +if [ "$VIDEO_EXTENSION" == "m4v" ]; then + FRAMES_TO_CAPTURE="90" + SHOTFILE="000000"$FRAMES_TO_CAPTURE".png" +else + FRAMES_TO_CAPTURE="05" +fi + +SHOTFILE="000000"$FRAMES_TO_CAPTURE".png" +VIDEO_STATS="/tmp/screenshooter_video_stats.txt" + +cd /tmp + +# The video we're processing may be shorter than SKIPAHEAD seconds. +# Keep trying to capture until we find a SKIPAHEAD value within the length of the video. +# Give up if we reach 0 seconds. +while [ ! -f "$SHOTFILE" ]; do + /usr/bin/mplayer -ss $SKIPAHEAD -vf scale=640:-2 -ao null -vo png -quiet -frames $FRAMES_TO_CAPTURE -identify "$VIDEO_PATHNAME" &> $VIDEO_STATS & + TIMEOUT=9 + + # Some video formats will play audio only. This loop gives the above command 20 seconds to + # finish, otherwise it gets killed. + while [ -n "`ps -p $! --no-heading`" ]; do + TIMEOUT=$(expr $TIMEOUT - 1) + if [ "$TIMEOUT" -le 0 ]; then + kill -9 $! + break + fi + sleep 1 + done + + SKIPAHEAD=$(expr $SKIPAHEAD / 2) + if [ "$SKIPAHEAD" -le 0 ]; then + break + fi +done + +if [ -f "$SHOTFILE" ]; then + # Now, the video_capture is taken, and the name of the shot is in $SHOTFILE + # Rename it and move it to the place where video_captures live. + /bin/mv -f "$SHOTFILE" "$VIDEO_CAPTURE_PATHNAME" + /bin/rm -f 000000*png + chown mythtv: "$VIDEO_CAPTURE_PATHNAME" + + # We've got the shotfile nailed, now calculate video run length. + VIDEO_LENGTH_IN_SECONDS=`grep ID_LENGTH $VIDEO_STATS | awk -F'=' '{print $2}'` + VIDEO_LENGTH_IN_INTEGER_SECONDS=${VIDEO_LENGTH_IN_SECONDS/%.*/} + if [ $VIDEO_LENGTH_IN_INTEGER_SECONDS -lt 60 ]; then + VIDEO_LENGTH_IN_MINUTES="1" + else + VIDEO_LENGTH_IN_MINUTES=$(expr $VIDEO_LENGTH_IN_INTEGER_SECONDS / 60) + fi + + SQL_CMD="update videometadata set length=\"$MIN_LENGTH\" where filename=\"$VIDEO_PATHNAME\";" + mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -e "$SQL_CMD" + + + # put the screenshot pathname and any runlength info into videometadatatable + + # Pre-escape any single or double quotes for the SQL command. + + VIDEO_CAPTURE_PATHNAME=`echo $VIDEO_CAPTURE_PATHNAME | sed -e "s/'/\\\'/g" -e 's/"/\\\"/g' ` + VIDEO_PATHNAME=`echo $VIDEO_PATHNAME | sed -e "s/'/\\\'/g" -e 's/"/\\\"/g' ` + SQL_CMD="update videometadata set coverfile=\"$VIDEO_CAPTURE_PATHNAME\", length=\"$VIDEO_LENGTH_IN_MINUTES\" where filename=\"$VIDEO_PATHNAME\";" + + mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -e "$SQL_CMD" +else + echo "No image could be captured from $VIDEO_PATHNAME" + exit 1 +fi diff --git a/abs/core/linhes-scripts/shootscreens-mythtv.sh b/abs/core/linhes-scripts/shootscreens-mythtv.sh new file mode 100755 index 0000000..db01147 --- /dev/null +++ b/abs/core/linhes-scripts/shootscreens-mythtv.sh @@ -0,0 +1,11 @@ +#! /bin/bash +# available sizes: 34, 25, 24, 20, 18, 17, 14, 12, 11, 10 +export FONT="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*" +echo "This could take several minutes," > /tmp/screens +echo "depending on your hardware and the" >> /tmp/screens +echo "number and type of videos you have." >> /tmp/screens +echo "It will only work on videos scanned" >> /tmp/screens +echo "with Video Manager." >> /tmp/screens +cat /tmp/screens | osd_cat --font=$FONT --shadow=3 --pos=middle --align=centre --offset=200 --color=yellow --delay=0 & +shootscreens.sh 1 +/bin/rm -f /tmp/screens \ No newline at end of file diff --git a/abs/core/linhes-scripts/shootscreens.sh b/abs/core/linhes-scripts/shootscreens.sh new file mode 100755 index 0000000..7b1260c --- /dev/null +++ b/abs/core/linhes-scripts/shootscreens.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# This code generates screenshots (cover files) for all videos in +# MythTV's videometadata table that do not have covers associated with them. + +if [ "$1" == "1" ]; then + OSD=1 +else + OSD=0 +fi + +> /tmp/shooter.log +{ + percentage=0 + # Change IFS to be a newline so that filenames with spaces will be handled properly. + IFS=$'\n' + vidcount=`mysql -u root mythconverg -B -e "select filename from videometadata where coverfile=\"No Cover\";" | wc -l` + increment=$(expr 100 / $vidcount) + for vid in `mysql -u root mythconverg -B -e "select filename from videometadata where coverfile=\"No Cover\";" | grep -v -e "^filename$"` + do + if [ $OSD == 1 ]; then + osd_cat --barmode=percentage --percentage=$percentage --pos=middle --align=center --color=white --text="Generating Video Thumbnails..." --font=$FONT --shadow=3 --color=yellow --delay=0 & + percentage=$(expr $percentage + $increment) + fi + + screenshooter.sh -v $vid + done + if [ $OSD == 1 ]; then + killall -9 osd_cat + osd_cat --barmode=percentage --percentage=100 --pos=middle --align=center --color=white --text="Video Thumbnails Generated!" --font=$FONT --shadow=3 --color=yellow --delay=3 & + fi +} \ No newline at end of file diff --git a/abs/core/linhes-scripts/vdpau-detector b/abs/core/linhes-scripts/vdpau-detector new file mode 100755 index 0000000..c8cd155 --- /dev/null +++ b/abs/core/linhes-scripts/vdpau-detector @@ -0,0 +1,103 @@ +#!/bin/bash + +# This script written by an anonymous author +# Original page http://www.knoppmythwiki.org/index.php?page=HardwareAcceleratedVideo +# +# It's modded to allow vdpau switches commands to pass to a modded version of Bob Igo's +# mplayer-resumer.pl wrapper for mplayer +# +# User can customize commandline for mplayer by editing the appropriate sections below +# They include BASIC_OPTS, NOHD_OPTS, and LOW_OPTS + +IAM=$0 +FILE=$1 + +#if no input display usage +if [[ -z "$FILE" ]]; then + echo usage: $0 /path/to/file + exit +fi + +MPLAYER="/usr/bin/mplayer" + +# For a complete list of options, see the mplayer DOCS +# http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html +# + +# Options for all videos: fullscreen, zoom, and use software eq +BASIC_OPTS="-fs -zoom" + +# Options for non-HD videos: force aspect to 16x10 (to ensure video fills TV screen) +# You'll need to modify the ratio if your res differs +# Example: 1920x1080 = 1.778 = 16:9 +# Example: 1680x1050 = 1.600 = 16:10 +# Example: 1280x720 = 1.778 = 16:9 + +NOHD_OPTS="-aspect 16:10" + +# Options for normal and lowres videos: use XV forcing 16x10 +LOW_OPTS="-aspect 16:10 -vo xv" + +VWIDTH=$($MPLAYER -identify -vo vdpau -frames 0 "$FILE" | grep ID_VIDEO_WIDTH | cut -c 16-25) +VCODEC=$($MPLAYER -identify -vo vdpau -frames 0 "$FILE" | grep ID_VIDEO_CODEC | cut -c 16-25) + +# all following echo commands can be uncommented for debug info +#echo . +#echo " DEBUG info: video codec: $VCODEC" +#echo " DEBUG info: video width: $VWIDTH" +#echo " Debug info: + + +# Test for codec, if it's supported by VDPAU, set options to use it. Then, check if the video is in HD, +# and if it's not, set non-HD options. +case $VCODEC in +ffh264) + #echo -e "Playing h.264 file $FILE:\n" + MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffh264vdpau" + if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS" + fi + if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS" + fi + ;; +ffmpeg2) + #echo -e "Playing MPEG2 file $FILE:\n" + MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffmpeg12vdpau" + if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS" + fi + if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS" + fi + ;; +ffwmv3) + #echo -e "Playing WMV3 file $FILE:\n" + MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffwmv3vdpau" + if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS" + fi + if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS" + fi + ;; +# VC-1 is largely unsupported by nvidia - uncomment this section if you're sure your card supports it. +ffvc1) + #echo -e "Playing VC-1 file $FILE:\n" + MPLAYEROPTS="$BASIC_OPTS -vo vdpau -vc ffvc1vdpau" + if [ $VWIDTH -lt 1280 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$MPLAYEROPTS $NOHD_OPTS" + fi + if [ $VWIDTH -lt 700 ] && [ $VWIDTH != 0 ]; then + MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS" + fi + ;; +*) + #echo -e "Playing normal file $FILE:\n" + # Use XV and yadif filter with 'normal' (DiVX, XViD, old WMV, etc.) files, and force 16:9 + # -vf filters only seem to work with XV, or at least they don't work w/VDPAU + MPLAYEROPTS="$BASIC_OPTS $LOW_OPTS" + ;; +esac + +echo $MPLAYEROPTS diff --git a/abs/core/linhes-sounds/PKGBUILD b/abs/core/linhes-sounds/PKGBUILD new file mode 100644 index 0000000..0e0de92 --- /dev/null +++ b/abs/core/linhes-sounds/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson<knoppmyth@gmail.com> + +pkgname=linhes-sounds +pkgver=1 +pkgrel=6 +pkgdesc="Sounds used in backing up and restoring." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://linhes.org/" +source=( +rf.wav +testing.wav +restore.wav +vr.wav +beg.wav +end.wav +complete.wav +fail.wav +init.wav +half_second_of_silence.wav +restored.wav +) + +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/sounds + cp -aL *.wav $startdir/pkg/usr/share/sounds +} diff --git a/abs/core/linhes-sounds/beg.wav b/abs/core/linhes-sounds/beg.wav new file mode 100644 index 0000000..1f7e377 Binary files /dev/null and b/abs/core/linhes-sounds/beg.wav differ diff --git a/abs/core/linhes-sounds/complete.wav b/abs/core/linhes-sounds/complete.wav new file mode 100644 index 0000000..67f19dd Binary files /dev/null and b/abs/core/linhes-sounds/complete.wav differ diff --git a/abs/core/linhes-sounds/end.wav b/abs/core/linhes-sounds/end.wav new file mode 100644 index 0000000..1c66530 Binary files /dev/null and b/abs/core/linhes-sounds/end.wav differ diff --git a/abs/core/linhes-sounds/fail.wav b/abs/core/linhes-sounds/fail.wav new file mode 100644 index 0000000..e256615 Binary files /dev/null and b/abs/core/linhes-sounds/fail.wav differ diff --git a/abs/core/linhes-sounds/half_second_of_silence.wav b/abs/core/linhes-sounds/half_second_of_silence.wav new file mode 100644 index 0000000..15ccfab Binary files /dev/null and b/abs/core/linhes-sounds/half_second_of_silence.wav differ diff --git a/abs/core/linhes-sounds/init.wav b/abs/core/linhes-sounds/init.wav new file mode 100644 index 0000000..ea49844 Binary files /dev/null and b/abs/core/linhes-sounds/init.wav differ diff --git a/abs/core/linhes-sounds/restore.wav b/abs/core/linhes-sounds/restore.wav new file mode 100644 index 0000000..946e371 Binary files /dev/null and b/abs/core/linhes-sounds/restore.wav differ diff --git a/abs/core/linhes-sounds/restored.wav b/abs/core/linhes-sounds/restored.wav new file mode 100644 index 0000000..d9d8f12 Binary files /dev/null and b/abs/core/linhes-sounds/restored.wav differ diff --git a/abs/core/linhes-sounds/rf.wav b/abs/core/linhes-sounds/rf.wav new file mode 100644 index 0000000..ac2690d Binary files /dev/null and b/abs/core/linhes-sounds/rf.wav differ diff --git a/abs/core/linhes-sounds/testing.wav b/abs/core/linhes-sounds/testing.wav new file mode 100644 index 0000000..8757501 Binary files /dev/null and b/abs/core/linhes-sounds/testing.wav differ diff --git a/abs/core/linhes-sounds/vr.wav b/abs/core/linhes-sounds/vr.wav new file mode 100644 index 0000000..e954297 Binary files /dev/null and b/abs/core/linhes-sounds/vr.wav differ diff --git a/abs/core/linhes-splash/1024x768.cfg b/abs/core/linhes-splash/1024x768.cfg new file mode 100644 index 0000000..84fb7ce --- /dev/null +++ b/abs/core/linhes-splash/1024x768.cfg @@ -0,0 +1,28 @@ +# Based on theme design and configs by +# Rensel <rensel@email.it> +# Redesigned by Cecil Watson <knoppmyth@gmail.com> +# for LinHES + +bgcolor=0 + +pic=/etc/splash/linhes/images/verbose-1024x768.png +silentpic=/etc/splash/linhes/images/background-1024x768.png + +tx=5 +ty=5 +tw=1014 +th=714 + +text_x=12 +text_y=744 +text_size=18 +text_color=0xffffff +text_font=/etc/splash/linhes/Vera.ttf + +box silent 284 575 740 575 #ffffff66 +box silent 284 575 284 591 #ffffff66 +box silent 284 591 740 591 #ffffff66 +box silent 740 575 740 591 #ffffff66 + +box silent inter 284 575 284 591 #0072bc +box silent 284 575 740 591 #0072bc diff --git a/abs/core/linhes-splash/800x600.cfg b/abs/core/linhes-splash/800x600.cfg new file mode 100644 index 0000000..e795dff --- /dev/null +++ b/abs/core/linhes-splash/800x600.cfg @@ -0,0 +1,28 @@ +#Based on original darch theme design and configs by +# Rensel <rensel@email.it> +#Redesigned by Cecil Watson for LinHES <knoppmyth@gmail.com> +# + +bgcolor=0 + +pic=/etc/splash/linhes/images/verbose-800x600.png +silentpic=/etc/splash/linhes/images/background-800x600.png + +tx=4 +ty=4 +tw=792 +th=558 + +text_x=10 +text_y=570 +text_size=20 +text_color=0xffffff +text_font=/etc/splash/linhes/Vera.ttf + +box silent 300 450 500 460 #ffffff66 +box silent 300 450 300 466 #ffffff66 +box silent 300 456 500 466 #ffffff66 +box silent 500 450 500 466 #ffffff66 + +box silent inter 300 450 300 466 #ffffff66 +box silent 300 450 500 466 #ffffff66 diff --git a/abs/core/linhes-splash/PKGBUILD b/abs/core/linhes-splash/PKGBUILD new file mode 100644 index 0000000..a19575d --- /dev/null +++ b/abs/core/linhes-splash/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson<knoppmyth@gmail.com> + +pkgname=linhes-splash +pkgver=1 +pkgrel=5 +pkgdesc="FBSplash theme for LinHES." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://linhes.org/" +#source=(ftp://ftp.knoppmyth.net/R6/sources/linhes-splash.tar.bz2) +source=('1024x768.cfg' 'Vera.ttf' 'background-800x600.png' 'verbose-1024x768.png' '800x600.cfg' 'Vera.copyright' 'background-1024x768.png' 'verbose-800x600.png') + + +build() { + cd $startdir/src/ + mkdir -p $startdir/pkg/etc/splash/linhes/images + #cp -a linhes $startdir/pkg/etc/splash + for i in * + do + echo $i | grep -q .png + if [ $? = 0 ] + then + install -m755 $i $startdir/pkg/etc/splash/linhes/images/$i + else + install -m755 $i $startdir/pkg/etc/splash/linhes/$i + fi + done +} diff --git a/abs/core/linhes-splash/Vera.copyright b/abs/core/linhes-splash/Vera.copyright new file mode 100644 index 0000000..e651be1 --- /dev/null +++ b/abs/core/linhes-splash/Vera.copyright @@ -0,0 +1,124 @@ +Bitstream Vera Fonts Copyright + +The fonts have a generous copyright, allowing derivative works (as +long as "Bitstream" or "Vera" are not in the names), and full +redistribution (so long as they are not *sold* by themselves). They +can be be bundled, redistributed and sold with any software. + +The fonts are distributed under the following copyright: + +Copyright +========= + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream +Vera is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute +the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished +to do so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Bitstream Vera" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT +SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font +Software without prior written authorization from the Gnome Foundation +or Bitstream Inc., respectively. For further information, contact: +fonts at gnome dot org. + +Copyright FAQ +============= + + 1. I don't understand the resale restriction... What gives? + + Bitstream is giving away these fonts, but wishes to ensure its + competitors can't just drop the fonts as is into a font sale system + and sell them as is. It seems fair that if Bitstream can't make money + from the Bitstream Vera fonts, their competitors should not be able to + do so either. You can sell the fonts as part of any software package, + however. + + 2. I want to package these fonts separately for distribution and + sale as part of a larger software package or system. Can I do so? + + Yes. A RPM or Debian package is a "larger software package" to begin + with, and you aren't selling them independently by themselves. + See 1. above. + + 3. Are derivative works allowed? + Yes! + + 4. Can I change or add to the font(s)? + Yes, but you must change the name(s) of the font(s). + + 5. Under what terms are derivative works allowed? + + You must change the name(s) of the fonts. This is to ensure the + quality of the fonts, both to protect Bitstream and Gnome. We want to + ensure that if an application has opened a font specifically of these + names, it gets what it expects (though of course, using fontconfig, + substitutions could still could have occurred during font + opening). You must include the Bitstream copyright. Additional + copyrights can be added, as per copyright law. Happy Font Hacking! + + 6. If I have improvements for Bitstream Vera, is it possible they might get + adopted in future versions? + + Yes. The contract between the Gnome Foundation and Bitstream has + provisions for working with Bitstream to ensure quality additions to + the Bitstream Vera font family. Please contact us if you have such + additions. Note, that in general, we will want such additions for the + entire family, not just a single font, and that you'll have to keep + both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add + glyphs to the font, they must be stylistically in keeping with Vera's + design. Vera cannot become a "ransom note" font. Jim Lyles will be + providing a document describing the design elements used in Vera, as a + guide and aid for people interested in contributing to Vera. + + 7. I want to sell a software package that uses these fonts: Can I do so? + + Sure. Bundle the fonts with your software and sell your software + with the fonts. That is the intent of the copyright. + + 8. If applications have built the names "Bitstream Vera" into them, + can I override this somehow to use fonts of my choosing? + + This depends on exact details of the software. Most open source + systems and software (e.g., Gnome, KDE, etc.) are now converting to + use fontconfig (see www.fontconfig.org) to handle font configuration, + selection and substitution; it has provisions for overriding font + names and subsituting alternatives. An example is provided by the + supplied local.conf file, which chooses the family Bitstream Vera for + "sans", "serif" and "monospace". Other software (e.g., the XFree86 + core server) has other mechanisms for font substitution. + diff --git a/abs/core/linhes-splash/Vera.ttf b/abs/core/linhes-splash/Vera.ttf new file mode 100644 index 0000000..58cd6b5 Binary files /dev/null and b/abs/core/linhes-splash/Vera.ttf differ diff --git a/abs/core/linhes-splash/__changelog b/abs/core/linhes-splash/__changelog new file mode 100644 index 0000000..886928e --- /dev/null +++ b/abs/core/linhes-splash/__changelog @@ -0,0 +1 @@ +changed 800x600.cfg. Moved the box down and made the font bigger diff --git a/abs/core/linhes-splash/background-1024x768.png b/abs/core/linhes-splash/background-1024x768.png new file mode 100644 index 0000000..a3ff6d3 Binary files /dev/null and b/abs/core/linhes-splash/background-1024x768.png differ diff --git a/abs/core/linhes-splash/background-800x600.png b/abs/core/linhes-splash/background-800x600.png new file mode 100644 index 0000000..b930899 Binary files /dev/null and b/abs/core/linhes-splash/background-800x600.png differ diff --git a/abs/core/linhes-splash/verbose-1024x768.png b/abs/core/linhes-splash/verbose-1024x768.png new file mode 100644 index 0000000..da27a9c Binary files /dev/null and b/abs/core/linhes-splash/verbose-1024x768.png differ diff --git a/abs/core/linhes-splash/verbose-800x600.png b/abs/core/linhes-splash/verbose-800x600.png new file mode 100644 index 0000000..4222621 Binary files /dev/null and b/abs/core/linhes-splash/verbose-800x600.png differ diff --git a/abs/core/linux-atm/PKGBUILD b/abs/core/linux-atm/PKGBUILD new file mode 100644 index 0000000..18cd3c8 --- /dev/null +++ b/abs/core/linux-atm/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 13520 2008-09-27 14:40:44Z tpowa $ +# Maintainer: Tobias Powalowski <tpowa@archlinux.org> +# Contributor: Surain Mallawa Arachchi <mas@crc32.net> + +pkgname=linux-atm +pkgver=2.5.0 +pkgrel=1 +pkgdesc="Drivers and tools to support ATM networking under Linux." +arch=('i686' 'x86_64') +depends=('glibc') +source=(http://heanet.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz \ + linux-atm-2.5.0-glibc28.patch) +url="http://linux-atm.sourceforge.net/" +license=(GPL) +options=(!libtool) +md5sums=('0b45a0e801fac7093ce4b0cadf419965' + '2e195df66995d2feb9ccc602cbf399b2') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -Np1 -i ../linux-atm-2.5.0-glibc28.patch || return 1 + ./configure --prefix=/usr --sysconfdir=/etc || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/linux-atm/linux-atm-2.5.0-glibc28.patch b/abs/core/linux-atm/linux-atm-2.5.0-glibc28.patch new file mode 100644 index 0000000..692f316 --- /dev/null +++ b/abs/core/linux-atm/linux-atm-2.5.0-glibc28.patch @@ -0,0 +1,11 @@ +diff -up linux-atm-2.5.0/src/led/main.c.path_max linux-atm-2.5.0/src/led/main.c +--- linux-atm-2.5.0/src/led/main.c.path_max 2008-05-19 02:47:40.000000000 +0900 ++++ linux-atm-2.5.0/src/led/main.c 2008-05-19 02:47:52.000000000 +0900 +@@ -41,6 +41,7 @@ + #include <getopt.h> + #include <errno.h> + #include <fcntl.h> ++#include <linux/limits.h> + + #include <atm.h> + #include <atmd.h> diff --git a/abs/core/lirc-utils/PKGBUILD b/abs/core/lirc-utils/PKGBUILD index b1f1f9a..afcfb81 100644 --- a/abs/core/lirc-utils/PKGBUILD +++ b/abs/core/lirc-utils/PKGBUILD @@ -2,29 +2,35 @@ # Maintainer: Paul Mattal <paul@archlinux.org> pkgname=lirc-utils -pkgver=0.8.3 -pkgrel=1 +pkgver=0.8.5CVS +pkgrel=6 pkgdesc="Linux Infrared Remote Control utils" arch=(i686 x86_64) url="http://www.lirc.org/" license=('GPL') -_kernver=2.6.26-ARCH -depends=('alsa-lib' 'libusb' 'libx11' 'libsm') -makedepends=('help2man') +_kernver=2.6.28-LinHES +depends=('alsa-lib' 'libusb' 'libx11' 'libsm' 'iguanaIR') +#makedepends=('help2man') replaces=('lirc+pctv') backup=('etc/lircd.conf' 'etc/lircmd.conf'\ 'etc/conf.d/lircd') options=('!libtool' '!makeflags') -source=(http://umn.dl.sf.net/sourceforge/lirc/lirc-$pkgver.tar.bz2 \ - lircd lircmd lirc.logrotate lircd.conf.d kernel-2.6.26.patch) -md5sums=('8e78eeded7b31e5ad02e328970437c0f' '909ad968afa10e4511e1da277bb23c3b'\ +source=(http://www.blushingpenguin.com/mark/lmilk/lirc-0.8.5-CVS-pvr150.tar.bz2 \ + lircd lircmd lirc.logrotate lircd.conf.d \ + kernel-2.6.26.patch lirc_atiusb.patch + hw_commandir.c + hw_commandir.h) +md5sums=('b96dae91b566143b3af433fa2714ec9a' '909ad968afa10e4511e1da277bb23c3b'\ '85f7fdac55e5256967241864049bf5e9' '3deb02604b37811d41816e9b4385fcc3'\ - '5b1f8c9cd788a39a6283f93302ce5c6e' '1753acd774f50b638e6173d364de53fd') + '5b1f8c9cd788a39a6283f93302ce5c6e' '1753acd774f50b638e6173d364de53fd'\ + '7eccd7826ab99e5cf1b9154171c8b927') build() { # configure - cd $startdir/src/lirc-$pkgver || return 1 - patch -Np1 -i ../kernel-2.6.26.patch || return 1 + cd $startdir/src/lirc-0.8.5-CVS-pvr150 || return 1 + cp $startdir/src/hw_commandir.* $startdir/src/lirc-0.8.5-CVS-pvr150/daemons +# patch -Np1 -i ../kernel-2.6.26.patch || return 1 + patch -Np1 -i ../lirc_atiusb.patch || return 1 # Disabling lirc_gpio driver as it does no longer work Kernel 2.6.22+ sed -i -e "s:lirc_gpio\.o::" drivers/lirc_gpio/Makefile.am || return 1 diff --git a/abs/core/lirc-utils/hw_commandir.c b/abs/core/lirc-utils/hw_commandir.c new file mode 100755 index 0000000..40ac0de --- /dev/null +++ b/abs/core/lirc-utils/hw_commandir.c @@ -0,0 +1,1926 @@ +/* CommandIR transceivers driver 0.96 + * Supporting CommandIR II and CommandIR Mini (and multiple of both) + * April-June 2008, Matthew Bodkin + * December 2008, bug fixes, Matthew Bodkin + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <limits.h> +#include <signal.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <sys/wait.h> +#include <sys/un.h> +#include <sys/utsname.h> + +#include "hardware.h" +#include "ir_remote.h" +#include "lircd.h" +#include "receive.h" +#include "transmit.h" +#include "hw_commandir.h" +#include <usb.h> + +#define RAPID_DECODE 1 + +extern struct ir_remote *repeat_remote; +extern char *progname; + + +/********************************************************************** + * + * internal function prototypes + * + **********************************************************************/ +static int commandir_init(); +static int commandir_deinit(void); +static char *commandir_rec(struct ir_remote *remotes); +static void commandir_read_loop(); +static int cmdir_convert_RX(unsigned char *orig_rxbuffer); +static unsigned int get_time_value(unsigned int firstint, + unsigned int secondint, unsigned char overflow); +static lirc_t commandir_readdata(lirc_t timeout); +static int commandir_send(struct ir_remote *remote,struct ir_ncode *code); +static int commandir_ioctl(unsigned int cmd, void *arg); +//static void setEmitterMask(unsigned char highbyte, unsigned char lowbyte); +static void setEmitterMask(int bitmask); +static void commandir_transmit(char *buffer, int bytes, int bitmask, + unsigned int); +static void commandir_child_init(); +static void shutdown_usb(); +static void hardware_scan(); +static void hardware_disconnect(int); +static void hardware_setorder(); +static void raise_event(unsigned int); +static int commandir_read(); +static int check_irsend_commandir(unsigned char *command); +static int commandir_decode(char *command); +static int commandir_receive_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, + int *repeat_flagp, + lirc_t *min_remaining_gapp, lirc_t *max_remaining_gapp); +static void pipeline_check(); +static int inline get_bit(int bitnum); +static void add_to_tx_pipeline(unsigned char *buffer, int bytes, + int channel_mask, unsigned int); +static void recalc_tx_available(int); +static void set_hash_mask(int channel_mask); +static int commandir2_convert_RX(unsigned short *bufferrx, + unsigned char numvalues); +static void cleanup_commandir_dev(int spotnum); + +/********************************************************************** + * + * CommandIR Vars + * + **********************************************************************/ +static int current_transmitter_mask = 0xff; +static char unsigned commandir_data_buffer[512]; +static int last_mc_time = -1; +static int commandir_rx_num = 0; + + +static char channels_en[MAX_DEVICES]; +static char open_bus_hash[USB_MAX_BUSES][USB_MAX_BUSDEV]; +static int tx_order[MAX_DEVICES]; +static char device_count = 0; +static int mini_freq[MAX_DEVICES]; +static int child_pipe_write = 0; +static char haveInited = 0; +// Fake 'commandir' remote signal values +static unsigned int signal_base[2][2] = { {100|PULSE_BIT, 200}, + {1000|PULSE_BIT, 200} }; + +// Pipes to and from the child/parent +static pid_t child_pid = -1; +static int pipe_fd[2] = { -1, -1 }; +static int pipe_tochild[2] = { -1, -1 }; +static int tochild_read = -1, tochild_write = -1; + +struct commandir_device +{ + usb_dev_handle *cmdir_udev; + int bus; + int busdev; + int interface; + int location; + int hw_type; + int hw_revision; + int hw_subversion; + unsigned char devnum; + int endpoint_max[3]; +} open_commandir_devices[4]; + +struct hardware hw_commandir = +{ + NULL, /* default device */ + -1, /* fd */ + LIRC_CAN_SET_SEND_CARRIER| + LIRC_CAN_SEND_PULSE| + LIRC_CAN_SET_TRANSMITTER_MASK| + LIRC_CAN_REC_MODE2, + LIRC_MODE_PULSE, /* send_mode */ + LIRC_MODE_MODE2, /* rec_mode */ + sizeof(lirc_t), /* code_length in BITS */ + commandir_init, /* init_func */ + NULL, /* config_func */ + commandir_deinit, /* deinit_func */ + commandir_send, /* send_func */ + commandir_rec, /* rec_func */ + commandir_receive_decode, /* decode_func */ + commandir_ioctl, /* ioctl_func */ + commandir_readdata, /* readdata */ + "commandir" +}; + +/*** LIRC Interface Functions - Non-blocking parent thread +*/ + +static int commandir_receive_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, + int *repeat_flagp, + lirc_t *min_remaining_gapp, lirc_t *max_remaining_gapp) { + + int i; + i = receive_decode(remote, + prep,codep,postp, + repeat_flagp, + min_remaining_gapp, max_remaining_gapp); + + if(i > 0){ + static char rx_char[3] = {3, 0, RXDECODE_HEADER_LIRC}; + write(tochild_write, rx_char, 3); + } + + return i; +} + + +static int commandir_init() +{ + long fd_flags; + if(haveInited){ + static char init_char[3] = {3, 0, INIT_HEADER_LIRC}; + write(tochild_write, init_char, 3); + return 1; + } + + init_rec_buffer(); // LIRC's rec + init_send_buffer(); // LIRC's send + + /* A separate process will be forked to read data from the USB + * receiver and write it to a pipe. hw.fd is set to the readable + * end of this pipe. */ + if (pipe(pipe_fd) != 0) + { + logprintf(LOG_ERR, "couldn't open pipe 1"); + return 0; + } + + hw.fd = pipe_fd[0]; // the READ end of the Pipe + + if (pipe(pipe_tochild) != 0) + { + logprintf(LOG_ERR, "couldn't open pipe 1"); + return 0; + } + + tochild_read = pipe_tochild[0]; // the READ end of the Pipe + tochild_write = pipe_tochild[1]; // the WRITE end of the Pipe + + fd_flags = fcntl(pipe_tochild[0], F_GETFL); + if(fcntl(pipe_tochild[0], F_SETFL, fd_flags | O_NONBLOCK) == -1) + { + logprintf(LOG_ERR, "can't set pipe to non-blocking"); + return 0; + } + + child_pid= fork(); + if (child_pid== -1) + { + logprintf(LOG_ERR, "couldn't fork child process"); + return 0; + } + else if (child_pid== 0) + { + child_pipe_write = pipe_fd[1]; + commandir_child_init(); + commandir_read_loop(); + return 0; + } + haveInited = 1; + + logprintf(LOG_ERR, "CommandIR driver initialized"); + return 1; +} + + +static int commandir_deinit(void) +{ + /* Trying something a bit new with this driver. Keeping the driver + * connected so in the future we can still monitor in the client */ + if(USB_KEEP_WARM && (!strncmp(progname, "lircd", 5))) + { + static char deinit_char[3] = {3, 0, DEINIT_HEADER_LIRC}; + write(tochild_write, deinit_char, 3); + logprintf(LOG_ERR, "LIRC_deinit but keeping warm"); + } + else + { + if (tochild_read >= 0) + { + if (close(tochild_read) < 0) + { + logprintf(LOG_ERR, "Error closing pipe2");; + } + tochild_read = tochild_write = -1; + } + + if(haveInited){ + // shutdown all USB + if(child_pid > 0) + { + logprintf(LOG_ERR, "Closing child process"); + kill(child_pid, SIGTERM); + waitpid(child_pid, NULL, 0); + child_pid = -1; + haveInited = 0; + } + } + + if (hw.fd >= 0) + { + if (close(hw.fd) < 0) logprintf(LOG_ERR, "Error closing pipe"); + hw.fd = -1; + } + + logprintf(LOG_ERR, "commandir_deinit()"); + } + return(1); +} + +static int commandir_send(struct ir_remote *remote,struct ir_ncode *code) +{ + int length; + lirc_t *signals; + + if(!init_send(remote,code)) { + return 0; + } + + length = send_buffer.wptr; + signals = send_buffer.data; + + if (length <= 0 || signals == NULL) { + return 0; + } + + int cmdir_cnt =0; + char cmdir_char[70]; + + // Set the frequency of the signal along with the signal + transmitters + cmdir_char[0] = 7; + cmdir_char[1] = 0; + + cmdir_char[2] = FREQ_HEADER_LIRC; + cmdir_char[3] = (remote->freq >> 24) & (0xff); + cmdir_char[4] = (remote->freq >> 16) & (0xff); + cmdir_char[5] = (remote->freq >> 8) & (0xff); + cmdir_char[6] = (remote->freq & 0xff); + + write(tochild_write, cmdir_char, cmdir_char[0]); + + cmdir_cnt = 3; + + unsigned char * send_signals = malloc(sizeof(signals) * length + 4); + + send_signals[0] = (sizeof(lirc_t) * length + 4) & 0xff; + send_signals[1] = ((sizeof(lirc_t) * length + 4) >> 8) & 0xff; + + send_signals[2] = TX_LIRC_T; + send_signals[3] = (char)current_transmitter_mask; + + memcpy(&send_signals[4], signals, sizeof(lirc_t) * length); + + if(write(tochild_write, send_signals, + send_signals[0] + send_signals[1] * 256) < 0) + { + logprintf(LOG_ERR, "Error writing to child_write"); + } + + free(send_signals); + return(length); +} + +static char *commandir_rec(struct ir_remote *remotes) +{ + char * returnit; + if (!clear_rec_buffer()) return NULL; + returnit = decode_all(remotes); + return returnit; +} + +static int commandir_ioctl(unsigned int cmd, void *arg) +{ + unsigned int ivalue; + char cmdir_char[5]; + + switch(cmd) + { + case LIRC_SET_TRANSMITTER_MASK: + + ivalue=*(unsigned int*)arg; + + if(ivalue >= MAX_MASK) return (MAX_CHANNELS); + + /* Support the old way of setting the frequency of the signal along + * with the signal + transmitters */ + cmdir_char[0] = 5; + cmdir_char[1] = 0; + cmdir_char[2] = CHANNEL_EN_MASK; + cmdir_char[3] = (unsigned char)(ivalue & 0x00FF); // Low bits + cmdir_char[4] = (unsigned char)(ivalue >> 8); // High bits + + write(tochild_write, cmdir_char, cmdir_char[0]); + + return (0); + + default: + logprintf(LOG_ERR, "Unknown ioctl - %d", cmd); + return(-1); + } + + return 1; +} + +static lirc_t commandir_readdata(lirc_t timeout) +{ + lirc_t code = 0; + struct timeval tv = {0, timeout}; + fd_set fds; + + FD_ZERO(&fds); + FD_SET(hw.fd, &fds); + + /* attempt a read with a timeout using select */ + if (select(hw.fd + 1, &fds, NULL, &fds, &tv) > 0) + /* if we failed to get data return 0 */ + if (read(hw.fd, &code, sizeof(lirc_t)) <= 0) + commandir_deinit(); + return code; +} + +/*** End of parent fork / LIRC accessible functions */ + + + + + + + + + + + + + + + +/*** CommandIR Client Process Functions (Handle all USB operations) + */ + +int channels_space_available[MAX_CHANNELS]; +int channels_space_updated = 0; // last updated time + +char * signalq[MAX_SIGNALQ]; // how many signals can be queued +int signalq_len[MAX_SIGNALQ]; +int signalq_bitmask[MAX_SIGNALQ]; +unsigned int signalq_frequency[MAX_SIGNALQ]; + +int top_signalq = -1; +int next_signalq_per_channel[MAX_CHANNELS]; + +unsigned char commandir_tx_start[MAX_CHANNELS*4]; +unsigned char commandir_tx_end[MAX_CHANNELS*4]; +unsigned char commandir_tx_available[MAX_CHANNELS]; +unsigned char lastSendSignalID[MAX_CHANNELS]; +unsigned char commandir_last_signal_id[MAX_CHANNELS]; + + +// Global variables to convert channel masks to consistant easier formats +unsigned char hash_mask[MAX_CHANNELS]; +unsigned char selected_channels[MAX_CHANNELS]; +unsigned char total_selected_channels = 0; +int shutdown_pending = 0; +int read_delay = WAIT_BETWEEN_READS_US; +int insert_fast_zeros = 0; + +int rx_hold = 0; + +// This is the only one for pre-pipelinging +int pre_pipeline_emitter_mask = 0x000f; // default tx on only first CommandIR + + +static void pipeline_check() +{ + /* Transmit from the pipeline if it's time and there's space + * what's available should now be updated in the main_loop + */ + + int i,j,k; + + i=0; + if(top_signalq < 0) return; + + while(i <= top_signalq) + { + + // Are ALL the channels this signal should TX on currently available? + int oktosend = 1; + set_hash_mask( signalq_bitmask[ i ] ); + for(j = 0; j<total_selected_channels; j++) + { + if(commandir_tx_available[ selected_channels[j] ] < + (36 + (signalq_len[ i ])/sizeof(lirc_t))) + { + oktosend = 0; + break; + } + } + + if(oktosend) + { + // great, TX this on all the channels. + + commandir_transmit(signalq[ i ], signalq_len[ i ], signalq_bitmask[ i ], signalq_frequency[ i ]); + + for(j = 0; j<total_selected_channels; j++) + { + /* commandir_tx_available[ selected_channels[j] ] -= + (64 + (signalq_len[ i ])/sizeof(lirc_t)); */ + commandir_tx_available[ selected_channels[j] ] = 0; + } + + /* Free up the memory, and see if there are new next_signalq's + * (any more for this channel to TX) + */ + free(signalq[i]); + + for(k=i; k<top_signalq; k++) + { + signalq[k] = signalq[k+1]; + signalq_len[k] = signalq_len[k+1]; + signalq_bitmask[k] = signalq_bitmask[k+1]; + signalq_frequency[k] = signalq_frequency[k+1]; + } + top_signalq--; + } + else + { + i++; + } + } +} + +static int get_bit(int bitnum) +{ + int r = 1; + return r << bitnum; // bit 0 is 1, bit 1 is 10, bit 2 is 100... +} + +static void add_to_tx_pipeline(unsigned char *buffer, int bytes, + int channel_mask, unsigned int frequency) +{ + /* *buffer points to a buffer that will be OVERWRITTEN; malloc our copy. + * buffer is a LIRC_T packet for CommandIR + */ + top_signalq++; + if(top_signalq > MAX_SIGNALQ) + { + logprintf(LOG_ERR, "Too many signals in queue: > %d", MAX_SIGNALQ); + return; + } + + signalq[top_signalq] = malloc(bytes); + + signalq_len[top_signalq] = bytes; + signalq_bitmask[top_signalq] = channel_mask; + signalq_frequency[top_signalq] = frequency; + + lirc_t *oldsignal, *newsignal; + int x, pulse_now = 1; + int projected_signal_length; + short aPCAFOM = 0; + float afPCAFOM = 0.0; + int difference = 0; + + afPCAFOM = (6000000.0 / ((frequency > 0) ? frequency : DEFAULT_FREQ) ) ; + aPCAFOM = afPCAFOM; + + // Trim off mid-modulation pulse fragments, add to space for exact signals + for(x=0; x<(bytes/sizeof(lirc_t)); x++) + { + oldsignal = (lirc_t *)&buffer[x*sizeof(lirc_t)]; + newsignal = (lirc_t *)signalq[top_signalq]; + newsignal += x; + + if(pulse_now==1){ + projected_signal_length = + (((int)( (*oldsignal * 12)/( afPCAFOM ) )) * aPCAFOM) / 12; + difference = *oldsignal - projected_signal_length; + // take off difference plus 1 full FOM cycle + *newsignal = *oldsignal - difference - (aPCAFOM / 12); + + } + else + { + if(difference != 0) + { + // Add anything subtracted from the pulse to the space + *newsignal = *oldsignal + difference + (aPCAFOM / 12); + difference = 0; + } + + } + + pulse_now++; + if(pulse_now > 1) pulse_now = 0; + } + + return; +} + +static void recalc_tx_available(int which_commandir) +{ + int i; + int length = 0; + static int failsafe = 0; + + if(lastSendSignalID[which_commandir] != + commandir_last_signal_id[which_commandir]) + { + /* INNOVATIONONE_FLAG:REMOVE This will be removed pending testing + * for a future release + */ + if(failsafe++ < 1000) + { + return; + } + logprintf(LOG_ERR, "Error: required the failsafe"); + } + + failsafe = 0; + for(i=which_commandir*4; i<((which_commandir+1)*4); i++) + { + length = commandir_tx_end[i] - commandir_tx_start[i]; + if(length < 0) length += 0xff; + + if(commandir_tx_available[i] < 0xff - length) + commandir_tx_available[i] = 0xff - length; + + } +} + +static void set_hash_mask(int channel_mask) // eg, 8 +{ + // bitwise set of hash_mask for easier coding... + int i,j; + j=channel_mask; + total_selected_channels = 0; + for(i=0; i<MAX_CHANNELS; i++) + { + hash_mask[i] = j & 0x01; + j = j >> 1; + if(hash_mask[i]) + selected_channels[total_selected_channels++] = i; + } +} + + +static void commandir_transmit(char *buffer, int bytes, int bitmask, + unsigned int frequency) +{ + /*** Send a TX command to 1 or more CommandIRs. + * Keep in mind: TX frequency, TX channels, TX signal length, + * which CommandIR, & what hardware version + */ + + int send_status; + unsigned char packet[TX_BUFFER_SIZE]; + /* So we know where there should be gaps between signals and more + * importantly, where there shouldn't be + */ + static char signalid = 1; + + /* Depending on the tx channels, then depending on what hardware it is, + * set the freq if needed, and send the buffer with the channel header + * that's right for that CommandIR + */ + + int devicenum = 0; + int sent = 0, tosend = 0; + unsigned char mini_tx_mask = 0; + lirc_t * signals; // have bytes/sizeof(lirc_t) signals + signals = (lirc_t *)buffer; + int total_signals = 0; + int i; + char cmdir_char[66]; + int which_signal = 0; + + total_signals = bytes / sizeof(lirc_t); + + setEmitterMask(bitmask); + + for(devicenum = 0; devicenum < device_count; devicenum++) + { + // Do we transmit on any channels on this device? + if(channels_en[ devicenum ]) + { + which_signal = 0; + switch(open_commandir_devices[ tx_order[devicenum] ].hw_type) + { + case HW_COMMANDIR_2: + + mini_tx_mask = 0; + // Short enough loop to unroll + if(channels_en[ devicenum ] & 1) mini_tx_mask |= 0x10; + if(channels_en[ devicenum ] & 2) mini_tx_mask |= 0x20; + if(channels_en[ devicenum ] & 4) mini_tx_mask |= 0x40; + if(channels_en[ devicenum ] & 8) mini_tx_mask |= 0x80; + + packet[1] = TX_COMMANDIR_II; + packet[2] = mini_tx_mask; + + short PCAFOM = 0; + float fPCAFOM = 0.0; + + if(bytes/sizeof(lirc_t) > 255) + { + logprintf(LOG_ERR, "Error: signal over max size"); + continue; + } + + fPCAFOM = (6000000 / ((frequency > 0) ? frequency : + DEFAULT_FREQ) ) ; + PCAFOM = fPCAFOM; + + lastSendSignalID[ tx_order[devicenum] ] = packet[5] = (getpid() + signalid++) + 1; + + packet[4] = PCAFOM & 0xff; + packet[3] = (PCAFOM >> 8) & 0xff; + + short packlets_to_send = 0, sending_this_time = 0; + + packlets_to_send = bytes / sizeof(lirc_t); + + int attempts; + for(attempts = 0; attempts < 10; attempts++) + { + + if((packlets_to_send*3 + 7) > open_commandir_devices[ tx_order[devicenum] ].endpoint_max[1]) + { + sending_this_time = open_commandir_devices[ tx_order[devicenum] ].endpoint_max[1]/3 - 3; + } + else + { + sending_this_time = packlets_to_send; + } + int sending; + + for(i=0; i<sending_this_time; i++) + { + sending = signals[which_signal++]; + + packet[i*3+7] = sending >> 8; // high1 + packet[i*3+8] = sending & 0xff; // low + packet[i*3+9] = sending >> 16 & 0xff; // high2 + } + + packet[0] = (sending_this_time * 3 + 7); + packet[6] = (sending_this_time == packlets_to_send) ? 0xcb : 0x00; + + send_status=usb_bulk_write( + open_commandir_devices[ tx_order[devicenum] ].cmdir_udev, + 2, // endpoint2 + (char*)packet, + packet[0], + USB_TIMEOUT_MS); + if(send_status < 0) + { + // Error transmitting. + hardware_scan(); + return; + } + + packlets_to_send -= ((send_status - 7) / 3); + if(!packlets_to_send) + { + // "No more packlets to send\n" + break; + } + } + continue; // for transmitting on next CommandIR device + + + case HW_COMMANDIR_MINI: + mini_tx_mask = 0; + if(channels_en[ devicenum ] & 1) mini_tx_mask |= 0x80; + if(channels_en[ devicenum ] & 2) mini_tx_mask |= 0x40; + if(channels_en[ devicenum ] & 4) mini_tx_mask |= 0x20; + if(channels_en[ devicenum ] & 8) mini_tx_mask |= 0x10; + + char freqPulseWidth = DEFAULT_PULSE_WIDTH; + + freqPulseWidth = (unsigned char)((1000000 / + ((frequency > 0) ? frequency: DEFAULT_FREQ) ) / 2); + + if(freqPulseWidth == 0) + { + freqPulseWidth = DEFAULT_PULSE_WIDTH; + } + + if(mini_freq[ tx_order[devicenum] ] != freqPulseWidth) + { + // Update the CommandIR Mini's next tx frequency + cmdir_char[0] = FREQ_HEADER; + cmdir_char[1] = freqPulseWidth; + cmdir_char[2] = 0; + mini_freq[ tx_order[devicenum] ] = freqPulseWidth; + send_status=usb_bulk_write( + open_commandir_devices[ tx_order[devicenum] ].cmdir_udev, + 2, // endpoint2 + cmdir_char, + 2, // 2 bytes + USB_TIMEOUT_MS); + if(send_status < 2) + { + // Error transmitting. + hardware_scan(); + return ; + } + } + + unsigned int mod_signal_length=0; + + cmdir_char[0] = TX_HEADER_NEW; + cmdir_char[1] = mini_tx_mask; + + unsigned int hibyte, lobyte; + + sent = 0; + which_signal = 0; + while(sent < (bytes / sizeof(lirc_t) * 2 ) ) + { + tosend = (bytes / sizeof(lirc_t) * 2 ) - sent; + + if(tosend > (MAX_HW_MINI_PACKET - 2)) + { + tosend = MAX_HW_MINI_PACKET - 2; + } + + for(i=0;i<(tosend/2);i++) // 2 bytes per CommandIR pkt + { + mod_signal_length = signals[which_signal++] >> 3; + hibyte = mod_signal_length/256; + lobyte = mod_signal_length%256; + cmdir_char[i*2+3] = lobyte; + cmdir_char[i*2+2] = hibyte; + } + + send_status=usb_bulk_write( + open_commandir_devices[ tx_order[devicenum] ].cmdir_udev, + 2, // endpoint2 + cmdir_char, + tosend + 2, + USB_TIMEOUT_MS); + if(send_status < 1) + { + // Error transmitting. + hardware_scan(); + return; + } + sent += tosend; + } // while unsent data + continue; // for transmitting on next CommandIR device + default: + logprintf(LOG_ERR, "Unknown hardware: %d", + open_commandir_devices[tx_order[devicenum]].hw_type); + } // hardware switch() + } // if we should tx on this device + } // for each device we have +} + + +static void commandir_child_init() +{ + alarm(0); + signal(SIGTERM, shutdown_usb); + signal(SIGPIPE, SIG_DFL); + signal(SIGINT, shutdown_usb); + signal(SIGHUP, SIG_IGN); + signal(SIGALRM, SIG_IGN); + + logprintf(LOG_ERR, "Child Initializing CommandIR Hardware"); + + usb_init(); + int i; + for(i=0;i<MAX_CHANNELS;i++) + { + next_signalq_per_channel[i] = -1; + channels_en[i] = 0xff; + } +/* + // Check kernel version: support fast decoding + char checkV[] = {0,0,0,0,0,0,0,0,0,0}; + FILE * checkfile; + int kernel_major = 0, kernel_minor = 0; + + checkfile=fopen("/proc/sys/kernel/osrelease", "r"); + if(checkfile!=NULL) + { + fgets(checkV, 7, checkfile); + printf("Checking: %s.\n", checkV); + printf("Version checking %s.\n", &checkV[4]); + kernel_major = atoi(&checkV[2]); + kernel_minor = atoi(&checkV[4]); + printf("Major is: %d, minor is %d.\n", kernel_major, kernel_minor); + fclose(checkfile); + } + + if(kernel_major < 6){ + insert_fast_zeros = 0; + logprintf(LOG_ERR, "Fast decoding disabled"); + } + else + { + if(kernel_minor <= 24) + { + logprintf(LOG_ERR, "Fast decoding enabled (1)"); + insert_fast_zeros = 1; + } + else + { + logprintf(LOG_ERR, "Fast decoding enabled"); + insert_fast_zeros = 2; + } + }*/ + hardware_scan(); +} + +static void hardware_disconnect(int commandir_spot) +{ + /* We had a read/write error, try disconnecting it and force _scan to + * reconnect - otherwise we may get perpetual read/write errors + */ + + int x; + + // reset the hash so we don't try and disconnect this device again + // device_count is decremented here + cleanup_commandir_dev(commandir_spot); + + raise_event(COMMANDIR_UNPLUG_1 + commandir_spot); + + /* Cases are: + removing device 0 when there's no more device (do nothing) + removing device < MAX when there's still 1+ devices (patch up) + removing device==MAX when there's more devices (do nothing) + */ + + // new device count-- from cleanup (if device_count > 0 AND commandir removed isn't 0 or max) + if( (device_count > 0) && (commandir_spot != device_count) ) + { + /* It wasn't the top device removed, and there's + * more than 1 device, so we have some vars to patch up + */ + for(x=commandir_spot; x<(device_count); x++) + { + channels_en[x] = channels_en[x+1]; + mini_freq[x] = mini_freq[x+1]; + commandir_last_signal_id[x] = commandir_last_signal_id[x+1]; + lastSendSignalID[x] = lastSendSignalID[x+1]; + memcpy(&open_commandir_devices[x], + &open_commandir_devices[x+1], + sizeof(struct commandir_device)); + } + + // Reset the TOP one that was just removed: + channels_en[(int)device_count] = 0x0f; + mini_freq[(int)device_count] = -1; + commandir_last_signal_id[(int)device_count] = 0; + lastSendSignalID[(int)device_count] = 0; + open_commandir_devices[(int)device_count].cmdir_udev = 0; + open_commandir_devices[(int)device_count].bus = 0; + open_commandir_devices[(int)device_count].busdev = 0; + open_commandir_devices[(int)device_count].interface = 0; + open_commandir_devices[(int)device_count].hw_type = 0; + open_commandir_devices[(int)device_count].hw_revision = 0; + open_commandir_devices[(int)device_count].hw_subversion = 0; + + } + + if(commandir_rx_num>=commandir_spot) + { + commandir_rx_num--; + } + + hardware_setorder(); +} + +static void hardware_setorder(){ + /* Tried to order to the detected CommandIRs based on bus and dev ids + * so they remain the same on reboot. Adding a new device in front + * will mean it becomes device 0 and emitters or scripts must be fixed + * Need a different param, these still change. + */ + + tx_order[0] = tx_order[1] = tx_order[2] = tx_order[3] = 0; + mini_freq[0] = mini_freq[1] = mini_freq[2] = mini_freq[3] = -1; + int largest = 0; + int tmpvals[4]; + int x, tx_spots, find_spot; + + for(x=0; x<device_count; x++) + { + tmpvals[x] = 256 * open_commandir_devices[x].bus + + open_commandir_devices[x].busdev; + } + + for(tx_spots = 0; tx_spots < device_count; tx_spots++) + { + largest = 0; + for(find_spot = 0; find_spot < device_count; find_spot++) + { + if(tmpvals[find_spot] > tmpvals[largest]) + { + largest = find_spot; + } + } + tx_order[device_count - tx_spots - 1 ] = largest; + tmpvals[largest] = 0; + } + + + // The formerly receiving CommandIR has been unplugged + if(commandir_rx_num < 0) + { + if(device_count > 0) + commandir_rx_num = 0; + } + + // Clear all pending signals + for(x=top_signalq; x >= 0; x--) + { + free(signalq[top_signalq]); + } + top_signalq = -1; + +} + +static void cleanup_commandir_dev(int spotnum) +{ + int location, devnum; + + location = open_commandir_devices[spotnum].location; + devnum = open_commandir_devices[spotnum].devnum; + + open_bus_hash[ location ][ devnum ] = 0; + device_count--; + + if(open_commandir_devices[spotnum].cmdir_udev==NULL) + { + return; + } + usb_release_interface(open_commandir_devices[spotnum].cmdir_udev, + open_commandir_devices[spotnum].interface); + usb_close(open_commandir_devices[spotnum].cmdir_udev); + open_commandir_devices[spotnum].cmdir_udev = NULL; +} + + +static void hardware_scan() +{ + // Scan for hardware changes; libusb doesn't notify us... + unsigned char located = 0; + struct usb_bus *bus = 0; + struct usb_device *dev = 0; + + int scan_find[MAX_DEVICES][2]; // [0]=bus#, [1]=busdev# + unsigned char found = 0; + // Using hash for performance instead of memory conservation (+1k) + unsigned char still_found[USB_MAX_BUSES][USB_MAX_BUSDEV]; + unsigned changed = 0; + int find_spot = 0; + + usb_find_busses(); + usb_find_devices(); + + for (bus = usb_busses; bus; bus = bus->next) + { + for (dev = bus->devices; dev; dev = dev->next) + { + if (dev->descriptor.idVendor == USB_CMDIR_VENDOR_ID) + { + located++; + // Do we already know about it? + if(!open_bus_hash[bus->location][dev->devnum]){ + // Then it's new, open it if we have a spot available + for(find_spot=0; find_spot < MAX_DEVICES; find_spot++) + { + if(open_commandir_devices[find_spot].cmdir_udev == NULL) + { + // Try to open here + open_commandir_devices[find_spot].cmdir_udev = usb_open(dev); + if(open_commandir_devices[find_spot].cmdir_udev == NULL) + { + logprintf(LOG_ERR, + "Error opening commandir - bus %d, device %d.", + bus, dev); + break; + } + else + { + + // Try to set configuration; not needed on Linux +// int usb_set_configuration(usb_dev_handle *dev, int configuration); + int r = 0; +// r = usb_set_configuration(open_commandir_devices[find_spot].cmdir_udev, 1); +// printf("Set_configuration returned %d.\n", r); + + r = usb_claim_interface( + open_commandir_devices[find_spot].cmdir_udev,0); + if(r < 0) + { + cleanup_commandir_dev(find_spot); + logprintf(LOG_ERR, + "Unable to claim CommandIR - Is it already busy?" + ); + logprintf(LOG_ERR, + "Try 'rmmod commandir' or check for other lircds" + ); + break; + } + else + { + // great, it's ours + open_commandir_devices[find_spot].location = bus->location; + open_commandir_devices[find_spot].devnum = dev->devnum; + open_bus_hash[bus->location][dev->devnum] = 1; + open_commandir_devices[find_spot].bus = bus->location; + open_commandir_devices[find_spot].busdev = dev->devnum; + scan_find[++found][0] = bus->location; + scan_find[found][1] = dev->devnum; + device_count++; + changed++; + still_found[bus->location][dev->devnum] = 1; + + struct usb_config_descriptor *config = &dev->config[0]; + struct usb_interface *interface = &config->interface[0]; + struct usb_interface_descriptor *ainterface = &interface->altsetting[0]; +/* struct usb_endpoint_descriptor *endpoint = &ainterface->endpoint[2];*/ + + int i;// Load wMaxPacketSize for each endpoint; subtract 0x80 + // for double-buffer bit + for (i = 0; i < ainterface->bNumEndpoints; i++) + { + open_commandir_devices[find_spot].endpoint_max[ + (ainterface->endpoint[i].bEndpointAddress >= 0x80) + ? (ainterface->endpoint[i].bEndpointAddress-0x80) + : (ainterface->endpoint[i].bEndpointAddress)] + = ainterface->endpoint[i].wMaxPacketSize; + } + + // compensate for double buffer: + open_commandir_devices[find_spot].endpoint_max[1] *= 2; + + // Always use the latest to RX: + commandir_rx_num = find_spot; + + switch(dev->descriptor.iProduct) + { + case 2: + logprintf(LOG_ERR, "Product identified as CommandIR II"); + open_commandir_devices[find_spot].hw_type = HW_COMMANDIR_2; + open_commandir_devices[find_spot].hw_revision = 0; + open_commandir_devices[find_spot].hw_subversion = 0; + + int send_status = 0, tries=20; + static char get_version[] = {2, GET_VERSION}; + + send_status = 4; // just to start the while() + + while(tries--){ + usleep(USB_TIMEOUT_US); // wait a moment + + // try moving this below: + send_status = usb_bulk_write( + open_commandir_devices[find_spot].cmdir_udev, + 2, // endpoint2 + get_version, + 2, + 1500); + if(send_status < 0) + { + logprintf(LOG_ERR, + "Unable to write version request - Is CommandIR busy? Error %d", send_status); + break; + } + + send_status = usb_bulk_read( + open_commandir_devices[find_spot].cmdir_udev, + 1, + (char *)commandir_data_buffer, + open_commandir_devices[ find_spot ].endpoint_max[1], + 1500); + + if(send_status < 0) + { + logprintf(LOG_ERR, + "Unable to read version request - Is CommandIR busy? Error %d", send_status); + cleanup_commandir_dev(find_spot); + break; + } + if(send_status==3) + { + if(commandir_data_buffer[0]==GET_VERSION) + { + // Sending back version information. + open_commandir_devices[find_spot].hw_revision = + commandir_data_buffer[1]; + open_commandir_devices[find_spot].hw_subversion = + commandir_data_buffer[2]; + logprintf(LOG_ERR, "Hardware revision is %d.%d.", + commandir_data_buffer[1], commandir_data_buffer[2]); + break; + } + else + { + continue; + } + } + + } + break; + default: + logprintf(LOG_ERR, "Product identified as CommandIR Mini"); + open_commandir_devices[find_spot].hw_type = + HW_COMMANDIR_MINI; + } + + if(open_commandir_devices[find_spot].hw_type == + HW_COMMANDIR_UNKNOWN) + { + logprintf(LOG_ERR, "Product UNKNOWN - cleanup"); + cleanup_commandir_dev(find_spot); + } + else + { + lastSendSignalID[find_spot] = 0; + commandir_last_signal_id[find_spot] = 0; + } + break; // don't keep looping through find_spot + } // claim? + }// open? + }// spot available? + }// for(spots) + } // if we haven't seen it before + else + { + still_found[bus->location][dev->devnum] = 1; + } + }// if it's a CommandIR + }// for bus dev's + }// for bus's + + if(!located) + { + logprintf(LOG_ERR, "No CommandIRs found"); + } + + /* Check if any we currently know about have been removed + * (Usually, we get a read/write error first) + */ + for(find_spot = 0; find_spot < MAX_DEVICES; find_spot++) + { + if(open_commandir_devices[find_spot].cmdir_udev != NULL) + { + if(still_found[open_commandir_devices[find_spot].location] + [open_commandir_devices[find_spot].devnum] != 1) + { + logprintf(LOG_ERR, "Commandir %d removed from [%d][%d].", find_spot,open_commandir_devices[find_spot].location, open_commandir_devices[find_spot].devnum); + raise_event(COMMANDIR_UNPLUG_1 + find_spot); + hardware_disconnect(find_spot); + commandir_rx_num = -1; + changed++; + } + } + } + + if(changed) + { + hardware_setorder(); + raise_event(COMMANDIR_REORDERED); + } + +} + + +// Shutdown everything and terminate +static void shutdown_usb() +{ + int x; + + // Wait for any TX to complete before shutting down + if(top_signalq >= 0) + { + shutdown_pending++; + logprintf(LOG_ERR, "Waiting for signals to finish transmitting before shutdown"); + return; + } + + for(x=0; x<MAX_DEVICES; x++) + { + if(open_commandir_devices[x].cmdir_udev ) + { + usb_release_interface(open_commandir_devices[x].cmdir_udev, + open_commandir_devices[x].interface); + usb_close(open_commandir_devices[x].cmdir_udev); + } + } + logprintf(LOG_ERR, "CommandIR driver child cleaned up and exiting"); + raise_event(COMMANDIR_STOPPED); + + _exit(EXIT_SUCCESS); +} + +static void commandir_read_loop() +{ + // Read from CommandIR, Write to pipe + + unsigned char commands[MAX_COMMAND]; + int curCommandStart = 0; + int curCommandLength = 0; + int bytes_read; + unsigned char periodic_checks = 0; + static unsigned char rx_decode_led[7] = {7, PROC_SET, 0x40, 0, 0,4, 2}; + static unsigned char init_led[7] = {7, PROC_SET, 0x00, 0x01, 3, 55, 2}; + static unsigned char deinit_led[7] = {7, PROC_SET, 0x0, 0x02, 3, 45, 2}; + static unsigned int LIRC_frequency = 38000; + + int send_status = 0; + int i = 0; + int tmp = 0; + int tmp2 = 0; + + raise_event(COMMANDIR_READY); + + for(;;){ + /*** This is the main loop the monitors control and TX events from + * the parent, and monitors the CommandIR RX buffer + */ + + curCommandStart = 0; + curCommandLength = 0; + bytes_read = read(tochild_read, commands, MAX_COMMAND); + + if(shutdown_pending > 0 && (top_signalq==-1)) + shutdown_usb(); + + if(bytes_read > 0){ + + while(curCommandStart < bytes_read){ + curCommandLength = commands[curCommandStart] + + commands[curCommandStart + 1] * 256; + + switch(commands[curCommandStart + 2]){ // the control value + case DEINIT_HEADER_LIRC: + for(i=0; i<device_count; i++) + { + if(open_commandir_devices[tx_order[i]].hw_type == + HW_COMMANDIR_2) + { + if(open_commandir_devices[tx_order[i]].cmdir_udev > 0) + { + send_status=usb_bulk_write( + open_commandir_devices[tx_order[i]].cmdir_udev, + 2, // endpoint2 + (char*)deinit_led, + 7, // bytes + USB_TIMEOUT_MS); + } + rx_hold = 1; // Put a hold on RX, but queue events + } + } + + break; + case INIT_HEADER_LIRC: + for(i=0; i<device_count; i++) + { + if(open_commandir_devices[tx_order[i]].hw_type == + HW_COMMANDIR_2) + { + if(open_commandir_devices[tx_order[i] ].cmdir_udev > 0) + { + send_status=usb_bulk_write( + open_commandir_devices[tx_order[i] ].cmdir_udev, + 2, // endpoint2 + (char*)init_led, + 7, // bytes + USB_TIMEOUT_MS); + } + rx_hold = 0; // Resume RX after queue events + } + } + break; + case RXDECODE_HEADER_LIRC: + // Successful RX decode: show it on the light. + if(open_commandir_devices[commandir_rx_num].cmdir_udev > 0) + { + send_status=usb_bulk_write( + open_commandir_devices[commandir_rx_num].cmdir_udev, + 2, // endpoint2 + (char*)rx_decode_led, + 7, // bytes + USB_TIMEOUT_MS); + + } + break; + + case FREQ_HEADER_LIRC: + LIRC_frequency = (commands[curCommandStart + 6] & 0x000000ff) | + ((commands[curCommandStart + 5] << 8) & 0x0000ff00) | + ((commands[curCommandStart + 4] << 16) & 0x00ff0000) | + ((commands[curCommandStart + 3] << 24) & 0xff000000); + if(!LIRC_frequency) + LIRC_frequency = DEFAULT_FREQ; + break; + case TX_HEADER_NEW: + case TX_LIRC_T: + if(curCommandLength==64) + { + if(check_irsend_commandir(&commands[curCommandStart + 4])) + { + break; // it's a command for us + } + } + add_to_tx_pipeline(&commands[curCommandStart + 4], + curCommandLength - 4, pre_pipeline_emitter_mask, LIRC_frequency); + break; + + case CHANNEL_EN_MASK: + pre_pipeline_emitter_mask = (commands[curCommandStart+4] << 8) | + commands[curCommandStart+3]; + break; + } + curCommandStart += curCommandLength; + + } + } + // If we're receiving, make sure the commandir buffer doesn't overrun + if(commandir_read() < 20 ) + tmp = 2; + while(tmp-- > 0) + { + tmp2 = commandir_read(); +// printf("commandir_read() (%d) returning %d.\n", tmp,tmp2); + } + if(tmp2 < 20 ){ + // once in a while, but never while we're retreaving a signal + if(++periodic_checks>100) + { + hardware_scan(); + periodic_checks = 0; + } + else + { + usleep(read_delay); + } + } + } + +} + +static int check_irsend_commandir(unsigned char *command) +{ + // decode the code like LIRC would do, and take an action + int commandir_code = 0; + + commandir_code = commandir_decode((char*)command); + + if(commandir_code > 0xef) + { + // It's a settransmitters command + int channel = commandir_code & 0x0f; + + // can only set 1 bit from here so far.., + pre_pipeline_emitter_mask = 0x0001 << channel; + + return commandir_code; + } + + switch(commandir_code) + { + case 0x53: + read_delay /= 2; // "faster" means less time + if(read_delay < MIN_WAIT_BETWEEN_READS_US) + read_delay = MIN_WAIT_BETWEEN_READS_US; + break; + case 0x54: + read_delay *= 2; // "slower" means more time + if(read_delay > MAX_WAIT_BETWEEN_READS_US) + read_delay = MAX_WAIT_BETWEEN_READS_US; + break; + + case 0x09: + case 0x0A: + logprintf(LOG_ERR, "Re-selecting RX not implemented yet"); + break; + + case 0xe6: // disable-fast-decode + logprintf(LOG_ERR, "Fast decoding disabled"); + insert_fast_zeros = 0; + break; + + case 0xe7: // enable-fast-decode + case 0xe9: // force-fast-decode-2 + logprintf(LOG_ERR, "Fast decoding enabled"); + insert_fast_zeros = 2; + break; + + case 0xe8: // force-fast-decode-1 + logprintf(LOG_ERR, "Fast decoding enabled (1)"); + insert_fast_zeros = 1; + break; + + default: + if(commandir_code > 0x60 && commandir_code < 0xf0) + { + int ledhigh = 0, ledlow = 0, ledprog = -1; + // LED Command + switch(commandir_code >> 4) + { + case 0x6: ledlow = 0x80; break; + case 0x7: ledlow = 0x40; break; + case 0x8: ledlow = 0x20; break; + case 0x9: ledlow = 0x10; break; + case 0xa: ledlow = 0x04; break; + case 0xb: ledhigh = 0x80; break; + case 0xc: ledlow = 0x01; break; + case 0xd: ledlow = 0x02; break; + case 0xe: ledlow = 0x08; break; + } + ledprog = (commandir_code & 0x0f) - 1; + + if( ((ledhigh + ledlow) > 0) && ledprog > -1) + { + // Set light: + static unsigned char lightchange[7] = {7, + PROC_SET, 0, 0, 0, 0, 3}; + lightchange[2] = ledhigh; + lightchange[3] = ledlow; + lightchange[4] = ledprog; + int send_status = 0; + + send_status=usb_bulk_write( + open_commandir_devices[tx_order[0]].cmdir_udev, + 2, // endpoint2 + (char *)lightchange, + 7, // bytes + USB_TIMEOUT_MS); + } + + return commandir_code; // done + } + + } + + return commandir_code; +} + + +// return how many RX's were in the last receive; so we know whether to poll more frequently or not +static int commandir_read() +{ + + /*** Which CommandIRs do we have to read from? Poll RX CommandIRs + * regularly, but non-receiving CommandIRs should be more periodically + */ + + int i,j; + int read_received = 0; + int read_retval = 0; + int conv_retval = 0; + int max_read = 5; + static int zeroterminated = 0; + + for(i=0; i<device_count; i++) + { + + switch(open_commandir_devices[tx_order[i]].hw_type) + { + case HW_COMMANDIR_2: + + read_retval = usb_bulk_read( + open_commandir_devices[ tx_order[i] ].cmdir_udev, + 1, + (char *)commandir_data_buffer, + open_commandir_devices[ tx_order[i] ].endpoint_max[1], + 5000); + + if(read_retval==0) + break; + + if(read_retval < 1) + { + if(read_retval < 0) + { + if(read_retval == -19){ + logprintf(LOG_ERR, "Read Error - CommandIR probably unplugged"); + } + else + { + logprintf(LOG_ERR, + "Didn't receive a full packet from a CommandIR II! - err %d ." + , read_retval); + } + hardware_disconnect(tx_order[i]); + hardware_scan(); + } + // 0 bytes is the most frequency case; nothing to report + + break; + } + + if(commandir_data_buffer[0]==RX_HEADER_TXAVAIL) + { + // sending us the current tx_start, tx_end arrays, and where it's at + commandir_tx_start[tx_order[i]*4] = commandir_data_buffer[4]; + commandir_tx_start[tx_order[i]*4+1] = commandir_data_buffer[3]; + commandir_tx_start[tx_order[i]*4+2] = commandir_data_buffer[2]; + commandir_tx_start[tx_order[i]*4+3] = commandir_data_buffer[1]; + + commandir_tx_end[tx_order[i]*4] = commandir_data_buffer[8]; + commandir_tx_end[tx_order[i]*4+1] = commandir_data_buffer[7]; + commandir_tx_end[tx_order[i]*4+2] = commandir_data_buffer[6]; + commandir_tx_end[tx_order[i]*4+3] = commandir_data_buffer[5]; + + commandir_last_signal_id[ tx_order[i] ] = commandir_data_buffer[9]; + + recalc_tx_available(tx_order[i]); + pipeline_check(); + if(top_signalq > 0) + { + read_received++; + } + + // This ALSO implies there's NO MORE RX DATA. + lirc_t lirc_zero_buffer[2] = {0, 0}; + + int tmp4 = 0; + if(zeroterminated>1001) + { + // Send LIRC a 0,0 packet to allow IMMEDIATE decoding + if(insert_fast_zeros > 0) + { + tmp4 = write(child_pipe_write, lirc_zero_buffer, sizeof(lirc_t)*insert_fast_zeros); + } + zeroterminated = 0; + } + else + { + if((zeroterminated < 1000) && (zeroterminated > 0)) + zeroterminated += 1000; + if(zeroterminated > 1000) + zeroterminated++; + } + + break; + } + + + if(commandir_data_buffer[0]==RX_HEADER_EVENTS) + { + for(j=1; j<(read_retval); j++) + { + raise_event(commandir_data_buffer[j]+tx_order[i]*0x10); + } + } + else + { + if( (commandir_data_buffer[0]==RX_HEADER_DATA) && + (commandir_rx_num==tx_order[i]) ) + { + if(rx_hold==0) // Only if we should be listening for remote cmds + { + zeroterminated = 1; + conv_retval = commandir2_convert_RX( + (unsigned short *)&commandir_data_buffer[2], + commandir_data_buffer[1]); + read_received = conv_retval; // header + } + } + } + break; + + case HW_COMMANDIR_MINI: + + max_read = 5; + while(max_read--){ + + read_retval = usb_bulk_read( + open_commandir_devices[ tx_order[i] ].cmdir_udev, + 1, + (char *)commandir_data_buffer, + 64, + USB_TIMEOUT_MS); + + if (!(read_retval == MAX_HW_MINI_PACKET)) + { + if(read_retval == -19){ + logprintf(LOG_ERR, "Read Error - CommandIR probably unplugged"); + } + else + { + logprintf(LOG_ERR, + "Didn't receive a full packet from a Mini! - err %d ." + , read_retval); + } + + hardware_disconnect(tx_order[i]); + hardware_scan(); + break; + } + + + if ( (commandir_data_buffer[1] > 0) && + (commandir_rx_num==tx_order[i]) ) + { + conv_retval = cmdir_convert_RX(commandir_data_buffer); + + read_received += commandir_data_buffer[1]; + + if(commandir_data_buffer[1] < 20) + { + // Lots of hardware buffer room left; don't tie up CPU + break; + } + } + else + { + break; + } + } // while; should only repeat if there's more RX data + + /* CommandIR Mini only has 1 buffer */ + commandir_tx_start[tx_order[i]*4] = 0; + commandir_tx_start[tx_order[i]*4+1] = 0; + commandir_tx_start[tx_order[i]*4+2] = 0; + commandir_tx_start[tx_order[i]*4+3] = 0; + + commandir_tx_end[tx_order[i]*4] = commandir_data_buffer[2]; + commandir_tx_end[tx_order[i]*4+1] = commandir_data_buffer[2]; + commandir_tx_end[tx_order[i]*4+2] = commandir_data_buffer[2]; + commandir_tx_end[tx_order[i]*4+3] = commandir_data_buffer[2]; + + /* .. and it can't pipeline... */ + commandir_last_signal_id[i] = lastSendSignalID[i]; + recalc_tx_available(tx_order[i]); + pipeline_check(); + break; + case HW_COMMANDIR_UNKNOWN: + break; + } // end switch + } // for each attached hardware device + return read_received; +} + +static void setEmitterMask(int bitmask) +{ + channels_en[0] = bitmask & 0x0F; + channels_en[1] = (bitmask >> 4) & 0xfF; + channels_en[2] = (bitmask >> 8) & 0xfF; + channels_en[3] = (bitmask >> 12) & 0xfF; +} + + +static int commandir2_convert_RX(unsigned short *bufferrx, + unsigned char numvalues) +{ + // convert hardware timestamp values to elapsed time values + + int i; + int curpos = 0; + int bytes_w = 0; + lirc_t lirc_data_buffer[256]; + + i=0; + int pca_count = 0; + int overflows = 0; + + while(curpos < numvalues ) + { + pca_count = (bufferrx[curpos] & 0x3fff) << 2; + pca_count = pca_count / 12; + + if(bufferrx[curpos] & COMMANDIR_2_OVERFLOW_MASK) + { + overflows = bufferrx[curpos+1]; + lirc_data_buffer[i] = pca_count + (overflows * 0xffff / 12); + + if(bufferrx[curpos] & COMMANDIR_2_PULSE_MASK) + { + lirc_data_buffer[i] |= PULSE_BIT; + } + curpos++; + + } + else + { + lirc_data_buffer[i] = pca_count; + if(bufferrx[curpos] & COMMANDIR_2_PULSE_MASK) + { + lirc_data_buffer[i] |= PULSE_BIT; + } + } + + curpos++; + i++; + if(i> 255) + { + break; + } + } + + bytes_w = write(child_pipe_write, lirc_data_buffer, sizeof(lirc_t)*i); + + if (bytes_w < 0) + { + logprintf(LOG_ERR, "Can't write to LIRC pipe! %d", child_pipe_write); + return 0; + } + + return bytes_w; +} + + + + +// Originally from lirc_cmdir.c +static int cmdir_convert_RX(unsigned char *orig_rxbuffer) +{ + unsigned int num_data_values = 0; + unsigned int num_data_bytes = 0; + unsigned int asint1 = 0, asint2 = 0, overflows = 0; + int i; + int bytes_w; // Pipe write + lirc_t lirc_data_buffer[256]; + + + num_data_bytes = orig_rxbuffer[1]; + + /* check if num_bytes is multiple of 3; if not, error */ + if (num_data_bytes%3 > 0) return -1; + if (num_data_bytes > 60) return -3; + if (num_data_bytes < 3) return -2; + + num_data_values = num_data_bytes/3; + + asint2 = orig_rxbuffer[3] + orig_rxbuffer[4] * 0xff; + if(last_mc_time==-1) + { + // The first time we run there's no previous time value + last_mc_time = asint2 - 110000; + if(last_mc_time < 0) last_mc_time+=0xffff; + } + + asint1 = last_mc_time; + overflows = orig_rxbuffer[5]; + + for(i=2; i<num_data_values+2; i++) + { + if(overflows < 0xff) + { + // space + lirc_data_buffer[i-2] = get_time_value(asint1, + asint2, overflows) - 26; + } + else + { // pulse + lirc_data_buffer[i-2] = get_time_value(asint1, + asint2, 0) + 26; + lirc_data_buffer[i-2] |= PULSE_BIT; + } + asint1 = asint2; + asint2 = orig_rxbuffer[i*3] + orig_rxbuffer[i*3+1] * 0xff; + overflows = orig_rxbuffer[i*3+2]; + } + last_mc_time = asint1; + + + bytes_w = write(child_pipe_write, lirc_data_buffer, sizeof(lirc_t)*num_data_values); + + if (bytes_w < 0) + { + logprintf(LOG_ERR, "Can't write to LIRC pipe! %d", child_pipe_write); + goto done; + } + +done: + return bytes_w; + +} + + + + +static unsigned int get_time_value(unsigned int firstint, + unsigned int secondint, unsigned char overflow) +{ + /* get difference between two MCU timestamps, CommandIR Mini version */ + unsigned int t_answer = 0; + + if (secondint > firstint) + { + t_answer = secondint - firstint + overflow*0xffff; + } + else + { + if (overflow > 0) + { + t_answer = (65536 - firstint) + secondint + (overflow - 1)*0xffff - 250; + } + else + { + t_answer = (65536 - firstint) + secondint; + } + } + + /* clamp to long signal */ + if (t_answer > 16000000) t_answer = PULSE_MASK; + return t_answer; +} + + +static void raise_event(unsigned int eventid) +{ + /* Raise an LIRC Event by + * Generating lirc_t Pattern + */ + static lirc_t event_data[18] = {LIRCCODE_GAP, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + int i, bytes_w; + + // logprintf(LOG_ERR, "Raising event %d", eventid); + for(i=0; i<8; i++) + { + if( (eventid & 0x80) ) + { + event_data[i*2+1] = signal_base[0][0]; + event_data[i*2+2] = signal_base[0][1]; + } + else + { + event_data[i*2+1] = signal_base[1][0]; + event_data[i*2+2] = signal_base[1][1]; + } + eventid = eventid << 1; + } + + event_data[16] = LIRCCODE_GAP*4; + + bytes_w = write(child_pipe_write, event_data, sizeof(lirc_t) * 17); + + if (bytes_w < 0) + { + logprintf(LOG_ERR, "Can't write to LIRC pipe! %d", child_pipe_write); + } + +} + +static int commandir_decode(char *command) +{ + // Decode the signal to a number, just like LIRC; + // there's probably a built-in way to do this. + int i; + int code = 0; + + lirc_t *codes; + codes = (lirc_t *)command; + + for(i=0; i<15; i+=2) + { + code = code << 1; + if(codes[i]==100) + code |= 1; + } + return code; +} + diff --git a/abs/core/lirc-utils/hw_commandir.h b/abs/core/lirc-utils/hw_commandir.h new file mode 100755 index 0000000..2280f6c --- /dev/null +++ b/abs/core/lirc-utils/hw_commandir.h @@ -0,0 +1,175 @@ + +/**************************************************************************** + ** hw_commandir.h ********************************************************** + **************************************************************************** + * + * Copyright (C) 1999 Christoph Bartelmus <lirc@bartelmus.de> + * -- Original hw_default.h + * Modified for CommandIR Transceivers, April-June 2008, Matthew Bodkin + * + */ + +#ifndef HW_COMMANDIR_H +#define HW_COMMANDIR_H + +#define RX_BUFFER_SIZE 1024 +#define TX_BUFFER_SIZE 1024 +#define TX_QUEUE 1 +#define RX_QUEUE 0 +#define MAX_COMMANDIRS 4 +#define MAX_COMMAND 8192 + +/* transmitter channel control */ +#define MAX_DEVICES 4 +#define MAX_CHANNELS 16 +#define DEVICE_CHANNELS 4 +#define MAX_MASK 0xffff +#define MAX_SIGNALQ 100 + +/* CommandIR control codes */ +#define CHANNEL_EN_MASK 1 +#define FREQ_HEADER 2 +#define MCU_CTRL_SIZE 3 +#define TX_HEADER 7 +#define TX_HEADER_NEW 8 +/* New for CommandIR II */ + +#define READ_INPUTS 10 +#define PROC_SET 11 +#define INIT_FUNCTION 12 +#define RX_SELECT 13 +#define TX_COMMANDIR_II 14 +/* Internal to driver */ +#define TX_LIRC_T 15 +#define FREQ_HEADER_LIRC 16 +#define RXDECODE_HEADER_LIRC 17 +#define INIT_HEADER_LIRC 18 +#define DEINIT_HEADER_LIRC 19 +#define GET_VERSION 20 + +#define COMMANDIR_2_PULSE_MASK 0x8000 +#define COMMANDIR_2_OVERFLOW_MASK 0x4000 + +#define DEFAULT_PULSE_WIDTH 13 + +#define USB_CMDIR_VENDOR_ID 0x10c4 +#define USB_CMDIR_PRODUCT_ID 0x0003 +#define USB_CMDIR_MINOR_BASE 192 + +#define HW_COMMANDIR_MINI 1 +#define HW_COMMANDIR_2 2 +#define HW_COMMANDIR_UNKNOWN 127 + +#define MAX_HW_MINI_PACKET 64 + +// CommandIR has lots of buffer room, we don't need to poll constantly +#define USB_TIMEOUT_MS 5000 +#define USB_TIMEOUT_US 1000 +#define WAIT_BETWEEN_READS_US 10000 +#define MAX_WAIT_BETWEEN_READS_US 5000000 +#define MIN_WAIT_BETWEEN_READS_US 5000 + +#define USB_MAX_BUSES 8 +#define USB_MAX_BUSDEV 127 + +#define RX_HEADER_DATA 0x01 +#define RX_HEADER_EVENTS 0x02 +#define RX_HEADER_TXAVAIL 0x03 + + +// We keep CommandIR's OPEN even on -deinit for speed and to monitor +// Other non-LIRC events (plugin, suspend, etc) +#define USB_KEEP_WARM 1 + +// CommandIR lircd.conf event driven code definitions +#define LIRCCODE_GAP 125000 +#define JACK_PLUG_1 0x01 +#define JACK_PLUG_2 0x02 +#define JACK_PLUG_3 0x03 +#define JACK_PLUG_4 0x04 +#define JACK_PLUG_5 0x11 +#define JACK_PLUG_6 0x12 +#define JACK_PLUG_7 0x13 +#define JACK_PLUG_8 0x14 +#define JACK_PLUG_9 0x21 +#define JACK_PLUG_10 0x22 +#define JACK_PLUG_11 0x23 +#define JACK_PLUG_12 0x24 +#define JACK_PLUG_13 0x31 +#define JACK_PLUG_14 0x32 +#define JACK_PLUG_15 0x33 +#define JACK_PLUG_16 0x34 + +#define JACK_UNPLUG_1 0x05 +#define JACK_UNPLUG_2 0x06 +#define JACK_UNPLUG_3 0x07 +#define JACK_UNPLUG_4 0x08 +#define JACK_UNPLUG_5 0x15 +#define JACK_UNPLUG_6 0x16 +#define JACK_UNPLUG_7 0x17 +#define JACK_UNPLUG_8 0x18 +#define JACK_UNPLUG_9 0x25 +#define JACK_UNPLUG_10 0x26 +#define JACK_UNPLUG_11 0x27 +#define JACK_UNPLUG_12 0x28 +#define JACK_UNPLUG_13 0x35 +#define JACK_UNPLUG_14 0x36 +#define JACK_UNPLUG_15 0x37 +#define JACK_UNPLUG_16 0x38 + +#define SELECT_TX_INTERNAL 0x09 +#define SELECT_TX_ExTERNAL 0x0A + +#define SELECT_TX_ON_1 0x0D +#define SELECT_TX_ON_2 0x1D +#define SELECT_TX_ON_3 0x2D +#define SELECT_TX_ON_4 0x3D + +#define JACK_PLUG_RX_1 0x0B +#define JACK_UNPLUG_RX_1 0x0C +#define JACK_PLUG_RX_2 0x1B +#define JACK_UNPLUG_RX_2 0x1C +#define JACK_PLUG_RX_3 0x2B +#define JACK_UNPLUG_RX_3 0x2C +#define JACK_PLUG_RX_4 0x3B +#define JACK_UNPLUG_RX_4 0x3C + +#define COMMANDIR_PLUG_1 0x41 +#define COMMANDIR_PLUG_2 0x42 +#define COMMANDIR_PLUG_3 0x43 +#define COMMANDIR_PLUG_4 0x44 + +#define COMMANDIR_UNPLUG_1 0x45 +#define COMMANDIR_UNPLUG_2 0x46 +#define COMMANDIR_UNPLUG_3 0x47 +#define COMMANDIR_UNPLUG_4 0x48 + +#define COMMANDIR_REORDERED 0x50 +#define COMMANDIR_READY 0x51 +#define COMMANDIR_STOPPED 0x52 +#define COMMANDIR_POLL_FASTER 0x53 +#define COMMANDIR_POLL_SLOWER 0x54 + +#define SETTRANSMITTERS_1 0xf0 +#define SETTRANSMITTERS_2 0xf1 +#define SETTRANSMITTERS_3 0xf2 +#define SETTRANSMITTERS_4 0xf3 +#define SETTRANSMITTERS_5 0xf4 +#define SETTRANSMITTERS_6 0xf5 +#define SETTRANSMITTERS_7 0xf6 +#define SETTRANSMITTERS_8 0xf7 +#define SETTRANSMITTERS_9 0xf8 +#define SETTRANSMITTERS_10 0xf9 +#define SETTRANSMITTERS_11 0xfa +#define SETTRANSMITTERS_12 0xfb +#define SETTRANSMITTERS_13 0xfc +#define SETTRANSMITTERS_14 0xfd +#define SETTRANSMITTERS_15 0xfe +#define SETTRANSMITTERS_16 0xff + +// What's in a returning data packet +#define COMMANDIR_RX_EVENTS 0x02 +#define COMMANDIR_RX_DATA 0x01 + + +#endif diff --git a/abs/core/lirc-utils/lirc_atiusb.patch b/abs/core/lirc-utils/lirc_atiusb.patch new file mode 100644 index 0000000..2f0c61e --- /dev/null +++ b/abs/core/lirc-utils/lirc_atiusb.patch @@ -0,0 +1,27 @@ +diff -ruaN lirc-0.8.4.orig/drivers/lirc_atiusb/lirc_atiusb.c lirc-0.8.4/drivers/lirc_atiusb/lirc_atiusb.c +--- lirc-0.8.4.orig/drivers/lirc_atiusb/lirc_atiusb.c 2008-05-19 08:10:35.000000000 +0000 ++++ lirc-0.8.4/drivers/lirc_atiusb/lirc_atiusb.c 2009-02-14 22:35:44.000000000 +0000 +@@ -192,8 +192,9 @@ + /* init strings */ + #define USB_OUTLEN 7 + +-static char init1[] = {0x01, 0x00, 0x20, 0x14}; +-static char init2[] = {0x01, 0x00, 0x20, 0x14, 0x20, 0x20, 0x20}; ++static char init1[] = {0x80, 0x05, 0x1b, 0x15, 0x14, 0x20, 0x24, 0x15}; ++static char init2[] = {0x83, 0x03}; ++static char init3[] = {0x84, 0xd7, 0x020}; + + struct in_endpt { + /* inner link in list of endpoints for the remote specified by ir */ +@@ -1183,8 +1184,9 @@ + oep->buf, USB_OUTLEN, usb_remote_send, + oep, oep->ep->bInterval); + +- send_packet(oep, 0x8004, init1); +- send_packet(oep, 0x8007, init2); ++ send_packet(oep, 0x8007, init1); ++ send_packet(oep, 0x8002, init2); ++ send_packet(oep, 0x8003, init3); + } + } + diff --git a/abs/core/lirc/PKGBUILD b/abs/core/lirc/PKGBUILD index d7fc488..d15cf1d 100644 --- a/abs/core/lirc/PKGBUILD +++ b/abs/core/lirc/PKGBUILD @@ -1,27 +1,37 @@ -# $Id: PKGBUILD 6055 2008-07-23 02:44:55Z eric $ +# $Id: PKGBUILD 14978 2008-10-11 21:04:37Z tpowa $ # Maintainer: Paul Mattal <paul@archlinux.org> pkgname=lirc -pkgver=0.8.3 -pkgrel=1 -_kernver=2.6.26-ARCH +pkgver=0.8.5CVS +pkgrel=15 +_kernver=2.6.28-LinHES pkgdesc="Linux Infrared Remote Control kernel modules for stock arch kernel" arch=(i686 x86_64) url="http://www.lirc.org/" license=('GPL') -depends=('lirc-utils=0.8.3' 'kernel26>=2.6.26-1' 'kernel26<2.6.27') -makedepends=('help2man') +depends=('lirc-utils=0.8.5CVS' 'kernel26>=2.6.27' 'kernel26<2.6.29' 'iguanaIR') +makedepends=('python') replaces=('lirc+pctv') options=('!makeflags') install=$pkgname.install -source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 \ - kernel-2.6.26.patch) -md5sums=('8e78eeded7b31e5ad02e328970437c0f' '1753acd774f50b638e6173d364de53fd') +source=(http://www.blushingpenguin.com/mark/lmilk/lirc-0.8.5-CVS-pvr150.tar.bz2 \ + kernel-2.6.26.patch + kernel-2.6.27.patch + lirc_atiusb.patch + http://superb-east.dl.sourceforge.net/sourceforge/mod-mce/lirc_mod_mce-0.1.5.tar.bz2 + lirc_mod_mce.patch + hw_commandir.c + hw_commandir.h + dvicoIR.rules + lirc.fdi) build() { # configure - cd $startdir/src/lirc-$pkgver || return 1 - patch -Np1 -i ../kernel-2.6.26.patch || return 1 + cd $startdir/src/lirc-0.8.5-CVS-pvr150 || return 1 + cp $startdir/src/hw_commandir.* $startdir/src/lirc-0.8.5-CVS-pvr150/daemons +# patch -Np1 -i ../kernel-2.6.26.patch || return 1 +# patch -Np1 -i ../kernel-2.6.27.patch || return 1 + patch -Np1 -i ../lirc_atiusb.patch || return 1 ./configure --enable-sandboxed --prefix=/usr \ --with-driver=all --with-kerneldir=/usr/src/linux-${_kernver}/ \ @@ -47,4 +57,30 @@ build() { # set the kernel we've built for inside the install script sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \ $startdir/lirc.install || return 1 + cd $startdir/src/lirc_mod_mce + cp ../lirc-0.8.5-CVS-pvr150/drivers/lirc_dev/lirc_dev.h . + patch -p1 < ../lirc_mod_mce.patch + make KDIR=/usr/src/linux-2.6.28-LinHES/ + cp lirc_mod_mce.ko $startdir/pkg/lib/modules/2.6.28-LinHES/kernel/drivers/misc/ + mv $startdir/pkg/lib/modules/2.6.28-LinHES/kernel/drivers/misc/lirc_mceusb2.ko $startdir/pkg/lib/modules/2.6.28-LinHES/kernel/drivers/misc/lirc_mceusb2.ko.not + #remove old commandir + rm $startdir/pkg/lib/modules/$_kernver/kernel/drivers/misc/lirc_cmdir.ko + rm $startdir/pkg/lib/modules/$_kernver/kernel/drivers/misc/commandir.ko + + # Add a udev rule for the DVICO remote so that if there is more than + # one hiddev device, the system cant get confused. + install -D -m644 $srcdir/dvicoIR.rules $pkgdir/etc/udev/rules.d/dvicoIR.rules + + # Add the fdi file to prevent the Dvico dual 4 remotes from screwing up keyboard interaction. + install -D -m644 $srcdir/lirc.fdi $pkgdir/usr/share/hal/fdi/preprobe/20thirdparty/lirc.fdi } +md5sums=('b96dae91b566143b3af433fa2714ec9a' + '1753acd774f50b638e6173d364de53fd' + '6f151eb4e81fc7776a06c9063e6ad9a5' + '7eccd7826ab99e5cf1b9154171c8b927' + '21ce358809105f005e888e3b138c59e6' + 'd299b696b007fc9b663a73cc1758a1ef' + 'f059f4030afc682c9539a03bf837c1cf' + '4e698654cc44fc6c4163814acda5a7ee' + '9a3a6dc03647ee6674a166dfb884ddd6' + '203d9cd014c4276be4c84cecd103919d') diff --git a/abs/core/lirc/dvicoIR.rules b/abs/core/lirc/dvicoIR.rules new file mode 100644 index 0000000..ada5466 --- /dev/null +++ b/abs/core/lirc/dvicoIR.rules @@ -0,0 +1,15 @@ +# This rule is for the Dvico Dual Digital 4 Rev 2. It has 2 IR modules +# identified, only the first of which is connected to the receiver. +# The KERNELS=="*-1" part of this rule makes sure that the first +# device is the one that gets the symlink. +KERNEL=="event*", \ + KERNELS=="*-1", \ + ATTRS{manufacturer}=="Dvico", \ + ATTRS{idVendor}=="0fe9", \ + ATTRS{idProduct}=="db98", \ + SYMLINK="input/irremote" + +# This rule is for the older style USB DVICO remote dongles. +SUBSYSTEMS=="usb", KERNEL=="hiddev*", \ + ATTRS{product}=="DVICO USB HID Remocon V1.00", \ + SYMLINK+="usb/dvicoIR" diff --git a/abs/core/lirc/hw_commandir.c b/abs/core/lirc/hw_commandir.c new file mode 100755 index 0000000..40ac0de --- /dev/null +++ b/abs/core/lirc/hw_commandir.c @@ -0,0 +1,1926 @@ +/* CommandIR transceivers driver 0.96 + * Supporting CommandIR II and CommandIR Mini (and multiple of both) + * April-June 2008, Matthew Bodkin + * December 2008, bug fixes, Matthew Bodkin + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <unistd.h> +#include <limits.h> +#include <signal.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <sys/wait.h> +#include <sys/un.h> +#include <sys/utsname.h> + +#include "hardware.h" +#include "ir_remote.h" +#include "lircd.h" +#include "receive.h" +#include "transmit.h" +#include "hw_commandir.h" +#include <usb.h> + +#define RAPID_DECODE 1 + +extern struct ir_remote *repeat_remote; +extern char *progname; + + +/********************************************************************** + * + * internal function prototypes + * + **********************************************************************/ +static int commandir_init(); +static int commandir_deinit(void); +static char *commandir_rec(struct ir_remote *remotes); +static void commandir_read_loop(); +static int cmdir_convert_RX(unsigned char *orig_rxbuffer); +static unsigned int get_time_value(unsigned int firstint, + unsigned int secondint, unsigned char overflow); +static lirc_t commandir_readdata(lirc_t timeout); +static int commandir_send(struct ir_remote *remote,struct ir_ncode *code); +static int commandir_ioctl(unsigned int cmd, void *arg); +//static void setEmitterMask(unsigned char highbyte, unsigned char lowbyte); +static void setEmitterMask(int bitmask); +static void commandir_transmit(char *buffer, int bytes, int bitmask, + unsigned int); +static void commandir_child_init(); +static void shutdown_usb(); +static void hardware_scan(); +static void hardware_disconnect(int); +static void hardware_setorder(); +static void raise_event(unsigned int); +static int commandir_read(); +static int check_irsend_commandir(unsigned char *command); +static int commandir_decode(char *command); +static int commandir_receive_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, + int *repeat_flagp, + lirc_t *min_remaining_gapp, lirc_t *max_remaining_gapp); +static void pipeline_check(); +static int inline get_bit(int bitnum); +static void add_to_tx_pipeline(unsigned char *buffer, int bytes, + int channel_mask, unsigned int); +static void recalc_tx_available(int); +static void set_hash_mask(int channel_mask); +static int commandir2_convert_RX(unsigned short *bufferrx, + unsigned char numvalues); +static void cleanup_commandir_dev(int spotnum); + +/********************************************************************** + * + * CommandIR Vars + * + **********************************************************************/ +static int current_transmitter_mask = 0xff; +static char unsigned commandir_data_buffer[512]; +static int last_mc_time = -1; +static int commandir_rx_num = 0; + + +static char channels_en[MAX_DEVICES]; +static char open_bus_hash[USB_MAX_BUSES][USB_MAX_BUSDEV]; +static int tx_order[MAX_DEVICES]; +static char device_count = 0; +static int mini_freq[MAX_DEVICES]; +static int child_pipe_write = 0; +static char haveInited = 0; +// Fake 'commandir' remote signal values +static unsigned int signal_base[2][2] = { {100|PULSE_BIT, 200}, + {1000|PULSE_BIT, 200} }; + +// Pipes to and from the child/parent +static pid_t child_pid = -1; +static int pipe_fd[2] = { -1, -1 }; +static int pipe_tochild[2] = { -1, -1 }; +static int tochild_read = -1, tochild_write = -1; + +struct commandir_device +{ + usb_dev_handle *cmdir_udev; + int bus; + int busdev; + int interface; + int location; + int hw_type; + int hw_revision; + int hw_subversion; + unsigned char devnum; + int endpoint_max[3]; +} open_commandir_devices[4]; + +struct hardware hw_commandir = +{ + NULL, /* default device */ + -1, /* fd */ + LIRC_CAN_SET_SEND_CARRIER| + LIRC_CAN_SEND_PULSE| + LIRC_CAN_SET_TRANSMITTER_MASK| + LIRC_CAN_REC_MODE2, + LIRC_MODE_PULSE, /* send_mode */ + LIRC_MODE_MODE2, /* rec_mode */ + sizeof(lirc_t), /* code_length in BITS */ + commandir_init, /* init_func */ + NULL, /* config_func */ + commandir_deinit, /* deinit_func */ + commandir_send, /* send_func */ + commandir_rec, /* rec_func */ + commandir_receive_decode, /* decode_func */ + commandir_ioctl, /* ioctl_func */ + commandir_readdata, /* readdata */ + "commandir" +}; + +/*** LIRC Interface Functions - Non-blocking parent thread +*/ + +static int commandir_receive_decode(struct ir_remote *remote, + ir_code *prep,ir_code *codep,ir_code *postp, + int *repeat_flagp, + lirc_t *min_remaining_gapp, lirc_t *max_remaining_gapp) { + + int i; + i = receive_decode(remote, + prep,codep,postp, + repeat_flagp, + min_remaining_gapp, max_remaining_gapp); + + if(i > 0){ + static char rx_char[3] = {3, 0, RXDECODE_HEADER_LIRC}; + write(tochild_write, rx_char, 3); + } + + return i; +} + + +static int commandir_init() +{ + long fd_flags; + if(haveInited){ + static char init_char[3] = {3, 0, INIT_HEADER_LIRC}; + write(tochild_write, init_char, 3); + return 1; + } + + init_rec_buffer(); // LIRC's rec + init_send_buffer(); // LIRC's send + + /* A separate process will be forked to read data from the USB + * receiver and write it to a pipe. hw.fd is set to the readable + * end of this pipe. */ + if (pipe(pipe_fd) != 0) + { + logprintf(LOG_ERR, "couldn't open pipe 1"); + return 0; + } + + hw.fd = pipe_fd[0]; // the READ end of the Pipe + + if (pipe(pipe_tochild) != 0) + { + logprintf(LOG_ERR, "couldn't open pipe 1"); + return 0; + } + + tochild_read = pipe_tochild[0]; // the READ end of the Pipe + tochild_write = pipe_tochild[1]; // the WRITE end of the Pipe + + fd_flags = fcntl(pipe_tochild[0], F_GETFL); + if(fcntl(pipe_tochild[0], F_SETFL, fd_flags | O_NONBLOCK) == -1) + { + logprintf(LOG_ERR, "can't set pipe to non-blocking"); + return 0; + } + + child_pid= fork(); + if (child_pid== -1) + { + logprintf(LOG_ERR, "couldn't fork child process"); + return 0; + } + else if (child_pid== 0) + { + child_pipe_write = pipe_fd[1]; + commandir_child_init(); + commandir_read_loop(); + return 0; + } + haveInited = 1; + + logprintf(LOG_ERR, "CommandIR driver initialized"); + return 1; +} + + +static int commandir_deinit(void) +{ + /* Trying something a bit new with this driver. Keeping the driver + * connected so in the future we can still monitor in the client */ + if(USB_KEEP_WARM && (!strncmp(progname, "lircd", 5))) + { + static char deinit_char[3] = {3, 0, DEINIT_HEADER_LIRC}; + write(tochild_write, deinit_char, 3); + logprintf(LOG_ERR, "LIRC_deinit but keeping warm"); + } + else + { + if (tochild_read >= 0) + { + if (close(tochild_read) < 0) + { + logprintf(LOG_ERR, "Error closing pipe2");; + } + tochild_read = tochild_write = -1; + } + + if(haveInited){ + // shutdown all USB + if(child_pid > 0) + { + logprintf(LOG_ERR, "Closing child process"); + kill(child_pid, SIGTERM); + waitpid(child_pid, NULL, 0); + child_pid = -1; + haveInited = 0; + } + } + + if (hw.fd >= 0) + { + if (close(hw.fd) < 0) logprintf(LOG_ERR, "Error closing pipe"); + hw.fd = -1; + } + + logprintf(LOG_ERR, "commandir_deinit()"); + } + return(1); +} + +static int commandir_send(struct ir_remote *remote,struct ir_ncode *code) +{ + int length; + lirc_t *signals; + + if(!init_send(remote,code)) { + return 0; + } + + length = send_buffer.wptr; + signals = send_buffer.data; + + if (length <= 0 || signals == NULL) { + return 0; + } + + int cmdir_cnt =0; + char cmdir_char[70]; + + // Set the frequency of the signal along with the signal + transmitters + cmdir_char[0] = 7; + cmdir_char[1] = 0; + + cmdir_char[2] = FREQ_HEADER_LIRC; + cmdir_char[3] = (remote->freq >> 24) & (0xff); + cmdir_char[4] = (remote->freq >> 16) & (0xff); + cmdir_char[5] = (remote->freq >> 8) & (0xff); + cmdir_char[6] = (remote->freq & 0xff); + + write(tochild_write, cmdir_char, cmdir_char[0]); + + cmdir_cnt = 3; + + unsigned char * send_signals = malloc(sizeof(signals) * length + 4); + + send_signals[0] = (sizeof(lirc_t) * length + 4) & 0xff; + send_signals[1] = ((sizeof(lirc_t) * length + 4) >> 8) & 0xff; + + send_signals[2] = TX_LIRC_T; + send_signals[3] = (char)current_transmitter_mask; + + memcpy(&send_signals[4], signals, sizeof(lirc_t) * length); + + if(write(tochild_write, send_signals, + send_signals[0] + send_signals[1] * 256) < 0) + { + logprintf(LOG_ERR, "Error writing to child_write"); + } + + free(send_signals); + return(length); +} + +static char *commandir_rec(struct ir_remote *remotes) +{ + char * returnit; + if (!clear_rec_buffer()) return NULL; + returnit = decode_all(remotes); + return returnit; +} + +static int commandir_ioctl(unsigned int cmd, void *arg) +{ + unsigned int ivalue; + char cmdir_char[5]; + + switch(cmd) + { + case LIRC_SET_TRANSMITTER_MASK: + + ivalue=*(unsigned int*)arg; + + if(ivalue >= MAX_MASK) return (MAX_CHANNELS); + + /* Support the old way of setting the frequency of the signal along + * with the signal + transmitters */ + cmdir_char[0] = 5; + cmdir_char[1] = 0; + cmdir_char[2] = CHANNEL_EN_MASK; + cmdir_char[3] = (unsigned char)(ivalue & 0x00FF); // Low bits + cmdir_char[4] = (unsigned char)(ivalue >> 8); // High bits + + write(tochild_write, cmdir_char, cmdir_char[0]); + + return (0); + + default: + logprintf(LOG_ERR, "Unknown ioctl - %d", cmd); + return(-1); + } + + return 1; +} + +static lirc_t commandir_readdata(lirc_t timeout) +{ + lirc_t code = 0; + struct timeval tv = {0, timeout}; + fd_set fds; + + FD_ZERO(&fds); + FD_SET(hw.fd, &fds); + + /* attempt a read with a timeout using select */ + if (select(hw.fd + 1, &fds, NULL, &fds, &tv) > 0) + /* if we failed to get data return 0 */ + if (read(hw.fd, &code, sizeof(lirc_t)) <= 0) + commandir_deinit(); + return code; +} + +/*** End of parent fork / LIRC accessible functions */ + + + + + + + + + + + + + + + +/*** CommandIR Client Process Functions (Handle all USB operations) + */ + +int channels_space_available[MAX_CHANNELS]; +int channels_space_updated = 0; // last updated time + +char * signalq[MAX_SIGNALQ]; // how many signals can be queued +int signalq_len[MAX_SIGNALQ]; +int signalq_bitmask[MAX_SIGNALQ]; +unsigned int signalq_frequency[MAX_SIGNALQ]; + +int top_signalq = -1; +int next_signalq_per_channel[MAX_CHANNELS]; + +unsigned char commandir_tx_start[MAX_CHANNELS*4]; +unsigned char commandir_tx_end[MAX_CHANNELS*4]; +unsigned char commandir_tx_available[MAX_CHANNELS]; +unsigned char lastSendSignalID[MAX_CHANNELS]; +unsigned char commandir_last_signal_id[MAX_CHANNELS]; + + +// Global variables to convert channel masks to consistant easier formats +unsigned char hash_mask[MAX_CHANNELS]; +unsigned char selected_channels[MAX_CHANNELS]; +unsigned char total_selected_channels = 0; +int shutdown_pending = 0; +int read_delay = WAIT_BETWEEN_READS_US; +int insert_fast_zeros = 0; + +int rx_hold = 0; + +// This is the only one for pre-pipelinging +int pre_pipeline_emitter_mask = 0x000f; // default tx on only first CommandIR + + +static void pipeline_check() +{ + /* Transmit from the pipeline if it's time and there's space + * what's available should now be updated in the main_loop + */ + + int i,j,k; + + i=0; + if(top_signalq < 0) return; + + while(i <= top_signalq) + { + + // Are ALL the channels this signal should TX on currently available? + int oktosend = 1; + set_hash_mask( signalq_bitmask[ i ] ); + for(j = 0; j<total_selected_channels; j++) + { + if(commandir_tx_available[ selected_channels[j] ] < + (36 + (signalq_len[ i ])/sizeof(lirc_t))) + { + oktosend = 0; + break; + } + } + + if(oktosend) + { + // great, TX this on all the channels. + + commandir_transmit(signalq[ i ], signalq_len[ i ], signalq_bitmask[ i ], signalq_frequency[ i ]); + + for(j = 0; j<total_selected_channels; j++) + { + /* commandir_tx_available[ selected_channels[j] ] -= + (64 + (signalq_len[ i ])/sizeof(lirc_t)); */ + commandir_tx_available[ selected_channels[j] ] = 0; + } + + /* Free up the memory, and see if there are new next_signalq's + * (any more for this channel to TX) + */ + free(signalq[i]); + + for(k=i; k<top_signalq; k++) + { + signalq[k] = signalq[k+1]; + signalq_len[k] = signalq_len[k+1]; + signalq_bitmask[k] = signalq_bitmask[k+1]; + signalq_frequency[k] = signalq_frequency[k+1]; + } + top_signalq--; + } + else + { + i++; + } + } +} + +static int get_bit(int bitnum) +{ + int r = 1; + return r << bitnum; // bit 0 is 1, bit 1 is 10, bit 2 is 100... +} + +static void add_to_tx_pipeline(unsigned char *buffer, int bytes, + int channel_mask, unsigned int frequency) +{ + /* *buffer points to a buffer that will be OVERWRITTEN; malloc our copy. + * buffer is a LIRC_T packet for CommandIR + */ + top_signalq++; + if(top_signalq > MAX_SIGNALQ) + { + logprintf(LOG_ERR, "Too many signals in queue: > %d", MAX_SIGNALQ); + return; + } + + signalq[top_signalq] = malloc(bytes); + + signalq_len[top_signalq] = bytes; + signalq_bitmask[top_signalq] = channel_mask; + signalq_frequency[top_signalq] = frequency; + + lirc_t *oldsignal, *newsignal; + int x, pulse_now = 1; + int projected_signal_length; + short aPCAFOM = 0; + float afPCAFOM = 0.0; + int difference = 0; + + afPCAFOM = (6000000.0 / ((frequency > 0) ? frequency : DEFAULT_FREQ) ) ; + aPCAFOM = afPCAFOM; + + // Trim off mid-modulation pulse fragments, add to space for exact signals + for(x=0; x<(bytes/sizeof(lirc_t)); x++) + { + oldsignal = (lirc_t *)&buffer[x*sizeof(lirc_t)]; + newsignal = (lirc_t *)signalq[top_signalq]; + newsignal += x; + + if(pulse_now==1){ + projected_signal_length = + (((int)( (*oldsignal * 12)/( afPCAFOM ) )) * aPCAFOM) / 12; + difference = *oldsignal - projected_signal_length; + // take off difference plus 1 full FOM cycle + *newsignal = *oldsignal - difference - (aPCAFOM / 12); + + } + else + { + if(difference != 0) + { + // Add anything subtracted from the pulse to the space + *newsignal = *oldsignal + difference + (aPCAFOM / 12); + difference = 0; + } + + } + + pulse_now++; + if(pulse_now > 1) pulse_now = 0; + } + + return; +} + +static void recalc_tx_available(int which_commandir) +{ + int i; + int length = 0; + static int failsafe = 0; + + if(lastSendSignalID[which_commandir] != + commandir_last_signal_id[which_commandir]) + { + /* INNOVATIONONE_FLAG:REMOVE This will be removed pending testing + * for a future release + */ + if(failsafe++ < 1000) + { + return; + } + logprintf(LOG_ERR, "Error: required the failsafe"); + } + + failsafe = 0; + for(i=which_commandir*4; i<((which_commandir+1)*4); i++) + { + length = commandir_tx_end[i] - commandir_tx_start[i]; + if(length < 0) length += 0xff; + + if(commandir_tx_available[i] < 0xff - length) + commandir_tx_available[i] = 0xff - length; + + } +} + +static void set_hash_mask(int channel_mask) // eg, 8 +{ + // bitwise set of hash_mask for easier coding... + int i,j; + j=channel_mask; + total_selected_channels = 0; + for(i=0; i<MAX_CHANNELS; i++) + { + hash_mask[i] = j & 0x01; + j = j >> 1; + if(hash_mask[i]) + selected_channels[total_selected_channels++] = i; + } +} + + +static void commandir_transmit(char *buffer, int bytes, int bitmask, + unsigned int frequency) +{ + /*** Send a TX command to 1 or more CommandIRs. + * Keep in mind: TX frequency, TX channels, TX signal length, + * which CommandIR, & what hardware version + */ + + int send_status; + unsigned char packet[TX_BUFFER_SIZE]; + /* So we know where there should be gaps between signals and more + * importantly, where there shouldn't be + */ + static char signalid = 1; + + /* Depending on the tx channels, then depending on what hardware it is, + * set the freq if needed, and send the buffer with the channel header + * that's right for that CommandIR + */ + + int devicenum = 0; + int sent = 0, tosend = 0; + unsigned char mini_tx_mask = 0; + lirc_t * signals; // have bytes/sizeof(lirc_t) signals + signals = (lirc_t *)buffer; + int total_signals = 0; + int i; + char cmdir_char[66]; + int which_signal = 0; + + total_signals = bytes / sizeof(lirc_t); + + setEmitterMask(bitmask); + + for(devicenum = 0; devicenum < device_count; devicenum++) + { + // Do we transmit on any channels on this device? + if(channels_en[ devicenum ]) + { + which_signal = 0; + switch(open_commandir_devices[ tx_order[devicenum] ].hw_type) + { + case HW_COMMANDIR_2: + + mini_tx_mask = 0; + // Short enough loop to unroll + if(channels_en[ devicenum ] & 1) mini_tx_mask |= 0x10; + if(channels_en[ devicenum ] & 2) mini_tx_mask |= 0x20; + if(channels_en[ devicenum ] & 4) mini_tx_mask |= 0x40; + if(channels_en[ devicenum ] & 8) mini_tx_mask |= 0x80; + + packet[1] = TX_COMMANDIR_II; + packet[2] = mini_tx_mask; + + short PCAFOM = 0; + float fPCAFOM = 0.0; + + if(bytes/sizeof(lirc_t) > 255) + { + logprintf(LOG_ERR, "Error: signal over max size"); + continue; + } + + fPCAFOM = (6000000 / ((frequency > 0) ? frequency : + DEFAULT_FREQ) ) ; + PCAFOM = fPCAFOM; + + lastSendSignalID[ tx_order[devicenum] ] = packet[5] = (getpid() + signalid++) + 1; + + packet[4] = PCAFOM & 0xff; + packet[3] = (PCAFOM >> 8) & 0xff; + + short packlets_to_send = 0, sending_this_time = 0; + + packlets_to_send = bytes / sizeof(lirc_t); + + int attempts; + for(attempts = 0; attempts < 10; attempts++) + { + + if((packlets_to_send*3 + 7) > open_commandir_devices[ tx_order[devicenum] ].endpoint_max[1]) + { + sending_this_time = open_commandir_devices[ tx_order[devicenum] ].endpoint_max[1]/3 - 3; + } + else + { + sending_this_time = packlets_to_send; + } + int sending; + + for(i=0; i<sending_this_time; i++) + { + sending = signals[which_signal++]; + + packet[i*3+7] = sending >> 8; // high1 + packet[i*3+8] = sending & 0xff; // low + packet[i*3+9] = sending >> 16 & 0xff; // high2 + } + + packet[0] = (sending_this_time * 3 + 7); + packet[6] = (sending_this_time == packlets_to_send) ? 0xcb : 0x00; + + send_status=usb_bulk_write( + open_commandir_devices[ tx_order[devicenum] ].cmdir_udev, + 2, // endpoint2 + (char*)packet, + packet[0], + USB_TIMEOUT_MS); + if(send_status < 0) + { + // Error transmitting. + hardware_scan(); + return; + } + + packlets_to_send -= ((send_status - 7) / 3); + if(!packlets_to_send) + { + // "No more packlets to send\n" + break; + } + } + continue; // for transmitting on next CommandIR device + + + case HW_COMMANDIR_MINI: + mini_tx_mask = 0; + if(channels_en[ devicenum ] & 1) mini_tx_mask |= 0x80; + if(channels_en[ devicenum ] & 2) mini_tx_mask |= 0x40; + if(channels_en[ devicenum ] & 4) mini_tx_mask |= 0x20; + if(channels_en[ devicenum ] & 8) mini_tx_mask |= 0x10; + + char freqPulseWidth = DEFAULT_PULSE_WIDTH; + + freqPulseWidth = (unsigned char)((1000000 / + ((frequency > 0) ? frequency: DEFAULT_FREQ) ) / 2); + + if(freqPulseWidth == 0) + { + freqPulseWidth = DEFAULT_PULSE_WIDTH; + } + + if(mini_freq[ tx_order[devicenum] ] != freqPulseWidth) + { + // Update the CommandIR Mini's next tx frequency + cmdir_char[0] = FREQ_HEADER; + cmdir_char[1] = freqPulseWidth; + cmdir_char[2] = 0; + mini_freq[ tx_order[devicenum] ] = freqPulseWidth; + send_status=usb_bulk_write( + open_commandir_devices[ tx_order[devicenum] ].cmdir_udev, + 2, // endpoint2 + cmdir_char, + 2, // 2 bytes + USB_TIMEOUT_MS); + if(send_status < 2) + { + // Error transmitting. + hardware_scan(); + return ; + } + } + + unsigned int mod_signal_length=0; + + cmdir_char[0] = TX_HEADER_NEW; + cmdir_char[1] = mini_tx_mask; + + unsigned int hibyte, lobyte; + + sent = 0; + which_signal = 0; + while(sent < (bytes / sizeof(lirc_t) * 2 ) ) + { + tosend = (bytes / sizeof(lirc_t) * 2 ) - sent; + + if(tosend > (MAX_HW_MINI_PACKET - 2)) + { + tosend = MAX_HW_MINI_PACKET - 2; + } + + for(i=0;i<(tosend/2);i++) // 2 bytes per CommandIR pkt + { + mod_signal_length = signals[which_signal++] >> 3; + hibyte = mod_signal_length/256; + lobyte = mod_signal_length%256; + cmdir_char[i*2+3] = lobyte; + cmdir_char[i*2+2] = hibyte; + } + + send_status=usb_bulk_write( + open_commandir_devices[ tx_order[devicenum] ].cmdir_udev, + 2, // endpoint2 + cmdir_char, + tosend + 2, + USB_TIMEOUT_MS); + if(send_status < 1) + { + // Error transmitting. + hardware_scan(); + return; + } + sent += tosend; + } // while unsent data + continue; // for transmitting on next CommandIR device + default: + logprintf(LOG_ERR, "Unknown hardware: %d", + open_commandir_devices[tx_order[devicenum]].hw_type); + } // hardware switch() + } // if we should tx on this device + } // for each device we have +} + + +static void commandir_child_init() +{ + alarm(0); + signal(SIGTERM, shutdown_usb); + signal(SIGPIPE, SIG_DFL); + signal(SIGINT, shutdown_usb); + signal(SIGHUP, SIG_IGN); + signal(SIGALRM, SIG_IGN); + + logprintf(LOG_ERR, "Child Initializing CommandIR Hardware"); + + usb_init(); + int i; + for(i=0;i<MAX_CHANNELS;i++) + { + next_signalq_per_channel[i] = -1; + channels_en[i] = 0xff; + } +/* + // Check kernel version: support fast decoding + char checkV[] = {0,0,0,0,0,0,0,0,0,0}; + FILE * checkfile; + int kernel_major = 0, kernel_minor = 0; + + checkfile=fopen("/proc/sys/kernel/osrelease", "r"); + if(checkfile!=NULL) + { + fgets(checkV, 7, checkfile); + printf("Checking: %s.\n", checkV); + printf("Version checking %s.\n", &checkV[4]); + kernel_major = atoi(&checkV[2]); + kernel_minor = atoi(&checkV[4]); + printf("Major is: %d, minor is %d.\n", kernel_major, kernel_minor); + fclose(checkfile); + } + + if(kernel_major < 6){ + insert_fast_zeros = 0; + logprintf(LOG_ERR, "Fast decoding disabled"); + } + else + { + if(kernel_minor <= 24) + { + logprintf(LOG_ERR, "Fast decoding enabled (1)"); + insert_fast_zeros = 1; + } + else + { + logprintf(LOG_ERR, "Fast decoding enabled"); + insert_fast_zeros = 2; + } + }*/ + hardware_scan(); +} + +static void hardware_disconnect(int commandir_spot) +{ + /* We had a read/write error, try disconnecting it and force _scan to + * reconnect - otherwise we may get perpetual read/write errors + */ + + int x; + + // reset the hash so we don't try and disconnect this device again + // device_count is decremented here + cleanup_commandir_dev(commandir_spot); + + raise_event(COMMANDIR_UNPLUG_1 + commandir_spot); + + /* Cases are: + removing device 0 when there's no more device (do nothing) + removing device < MAX when there's still 1+ devices (patch up) + removing device==MAX when there's more devices (do nothing) + */ + + // new device count-- from cleanup (if device_count > 0 AND commandir removed isn't 0 or max) + if( (device_count > 0) && (commandir_spot != device_count) ) + { + /* It wasn't the top device removed, and there's + * more than 1 device, so we have some vars to patch up + */ + for(x=commandir_spot; x<(device_count); x++) + { + channels_en[x] = channels_en[x+1]; + mini_freq[x] = mini_freq[x+1]; + commandir_last_signal_id[x] = commandir_last_signal_id[x+1]; + lastSendSignalID[x] = lastSendSignalID[x+1]; + memcpy(&open_commandir_devices[x], + &open_commandir_devices[x+1], + sizeof(struct commandir_device)); + } + + // Reset the TOP one that was just removed: + channels_en[(int)device_count] = 0x0f; + mini_freq[(int)device_count] = -1; + commandir_last_signal_id[(int)device_count] = 0; + lastSendSignalID[(int)device_count] = 0; + open_commandir_devices[(int)device_count].cmdir_udev = 0; + open_commandir_devices[(int)device_count].bus = 0; + open_commandir_devices[(int)device_count].busdev = 0; + open_commandir_devices[(int)device_count].interface = 0; + open_commandir_devices[(int)device_count].hw_type = 0; + open_commandir_devices[(int)device_count].hw_revision = 0; + open_commandir_devices[(int)device_count].hw_subversion = 0; + + } + + if(commandir_rx_num>=commandir_spot) + { + commandir_rx_num--; + } + + hardware_setorder(); +} + +static void hardware_setorder(){ + /* Tried to order to the detected CommandIRs based on bus and dev ids + * so they remain the same on reboot. Adding a new device in front + * will mean it becomes device 0 and emitters or scripts must be fixed + * Need a different param, these still change. + */ + + tx_order[0] = tx_order[1] = tx_order[2] = tx_order[3] = 0; + mini_freq[0] = mini_freq[1] = mini_freq[2] = mini_freq[3] = -1; + int largest = 0; + int tmpvals[4]; + int x, tx_spots, find_spot; + + for(x=0; x<device_count; x++) + { + tmpvals[x] = 256 * open_commandir_devices[x].bus + + open_commandir_devices[x].busdev; + } + + for(tx_spots = 0; tx_spots < device_count; tx_spots++) + { + largest = 0; + for(find_spot = 0; find_spot < device_count; find_spot++) + { + if(tmpvals[find_spot] > tmpvals[largest]) + { + largest = find_spot; + } + } + tx_order[device_count - tx_spots - 1 ] = largest; + tmpvals[largest] = 0; + } + + + // The formerly receiving CommandIR has been unplugged + if(commandir_rx_num < 0) + { + if(device_count > 0) + commandir_rx_num = 0; + } + + // Clear all pending signals + for(x=top_signalq; x >= 0; x--) + { + free(signalq[top_signalq]); + } + top_signalq = -1; + +} + +static void cleanup_commandir_dev(int spotnum) +{ + int location, devnum; + + location = open_commandir_devices[spotnum].location; + devnum = open_commandir_devices[spotnum].devnum; + + open_bus_hash[ location ][ devnum ] = 0; + device_count--; + + if(open_commandir_devices[spotnum].cmdir_udev==NULL) + { + return; + } + usb_release_interface(open_commandir_devices[spotnum].cmdir_udev, + open_commandir_devices[spotnum].interface); + usb_close(open_commandir_devices[spotnum].cmdir_udev); + open_commandir_devices[spotnum].cmdir_udev = NULL; +} + + +static void hardware_scan() +{ + // Scan for hardware changes; libusb doesn't notify us... + unsigned char located = 0; + struct usb_bus *bus = 0; + struct usb_device *dev = 0; + + int scan_find[MAX_DEVICES][2]; // [0]=bus#, [1]=busdev# + unsigned char found = 0; + // Using hash for performance instead of memory conservation (+1k) + unsigned char still_found[USB_MAX_BUSES][USB_MAX_BUSDEV]; + unsigned changed = 0; + int find_spot = 0; + + usb_find_busses(); + usb_find_devices(); + + for (bus = usb_busses; bus; bus = bus->next) + { + for (dev = bus->devices; dev; dev = dev->next) + { + if (dev->descriptor.idVendor == USB_CMDIR_VENDOR_ID) + { + located++; + // Do we already know about it? + if(!open_bus_hash[bus->location][dev->devnum]){ + // Then it's new, open it if we have a spot available + for(find_spot=0; find_spot < MAX_DEVICES; find_spot++) + { + if(open_commandir_devices[find_spot].cmdir_udev == NULL) + { + // Try to open here + open_commandir_devices[find_spot].cmdir_udev = usb_open(dev); + if(open_commandir_devices[find_spot].cmdir_udev == NULL) + { + logprintf(LOG_ERR, + "Error opening commandir - bus %d, device %d.", + bus, dev); + break; + } + else + { + + // Try to set configuration; not needed on Linux +// int usb_set_configuration(usb_dev_handle *dev, int configuration); + int r = 0; +// r = usb_set_configuration(open_commandir_devices[find_spot].cmdir_udev, 1); +// printf("Set_configuration returned %d.\n", r); + + r = usb_claim_interface( + open_commandir_devices[find_spot].cmdir_udev,0); + if(r < 0) + { + cleanup_commandir_dev(find_spot); + logprintf(LOG_ERR, + "Unable to claim CommandIR - Is it already busy?" + ); + logprintf(LOG_ERR, + "Try 'rmmod commandir' or check for other lircds" + ); + break; + } + else + { + // great, it's ours + open_commandir_devices[find_spot].location = bus->location; + open_commandir_devices[find_spot].devnum = dev->devnum; + open_bus_hash[bus->location][dev->devnum] = 1; + open_commandir_devices[find_spot].bus = bus->location; + open_commandir_devices[find_spot].busdev = dev->devnum; + scan_find[++found][0] = bus->location; + scan_find[found][1] = dev->devnum; + device_count++; + changed++; + still_found[bus->location][dev->devnum] = 1; + + struct usb_config_descriptor *config = &dev->config[0]; + struct usb_interface *interface = &config->interface[0]; + struct usb_interface_descriptor *ainterface = &interface->altsetting[0]; +/* struct usb_endpoint_descriptor *endpoint = &ainterface->endpoint[2];*/ + + int i;// Load wMaxPacketSize for each endpoint; subtract 0x80 + // for double-buffer bit + for (i = 0; i < ainterface->bNumEndpoints; i++) + { + open_commandir_devices[find_spot].endpoint_max[ + (ainterface->endpoint[i].bEndpointAddress >= 0x80) + ? (ainterface->endpoint[i].bEndpointAddress-0x80) + : (ainterface->endpoint[i].bEndpointAddress)] + = ainterface->endpoint[i].wMaxPacketSize; + } + + // compensate for double buffer: + open_commandir_devices[find_spot].endpoint_max[1] *= 2; + + // Always use the latest to RX: + commandir_rx_num = find_spot; + + switch(dev->descriptor.iProduct) + { + case 2: + logprintf(LOG_ERR, "Product identified as CommandIR II"); + open_commandir_devices[find_spot].hw_type = HW_COMMANDIR_2; + open_commandir_devices[find_spot].hw_revision = 0; + open_commandir_devices[find_spot].hw_subversion = 0; + + int send_status = 0, tries=20; + static char get_version[] = {2, GET_VERSION}; + + send_status = 4; // just to start the while() + + while(tries--){ + usleep(USB_TIMEOUT_US); // wait a moment + + // try moving this below: + send_status = usb_bulk_write( + open_commandir_devices[find_spot].cmdir_udev, + 2, // endpoint2 + get_version, + 2, + 1500); + if(send_status < 0) + { + logprintf(LOG_ERR, + "Unable to write version request - Is CommandIR busy? Error %d", send_status); + break; + } + + send_status = usb_bulk_read( + open_commandir_devices[find_spot].cmdir_udev, + 1, + (char *)commandir_data_buffer, + open_commandir_devices[ find_spot ].endpoint_max[1], + 1500); + + if(send_status < 0) + { + logprintf(LOG_ERR, + "Unable to read version request - Is CommandIR busy? Error %d", send_status); + cleanup_commandir_dev(find_spot); + break; + } + if(send_status==3) + { + if(commandir_data_buffer[0]==GET_VERSION) + { + // Sending back version information. + open_commandir_devices[find_spot].hw_revision = + commandir_data_buffer[1]; + open_commandir_devices[find_spot].hw_subversion = + commandir_data_buffer[2]; + logprintf(LOG_ERR, "Hardware revision is %d.%d.", + commandir_data_buffer[1], commandir_data_buffer[2]); + break; + } + else + { + continue; + } + } + + } + break; + default: + logprintf(LOG_ERR, "Product identified as CommandIR Mini"); + open_commandir_devices[find_spot].hw_type = + HW_COMMANDIR_MINI; + } + + if(open_commandir_devices[find_spot].hw_type == + HW_COMMANDIR_UNKNOWN) + { + logprintf(LOG_ERR, "Product UNKNOWN - cleanup"); + cleanup_commandir_dev(find_spot); + } + else + { + lastSendSignalID[find_spot] = 0; + commandir_last_signal_id[find_spot] = 0; + } + break; // don't keep looping through find_spot + } // claim? + }// open? + }// spot available? + }// for(spots) + } // if we haven't seen it before + else + { + still_found[bus->location][dev->devnum] = 1; + } + }// if it's a CommandIR + }// for bus dev's + }// for bus's + + if(!located) + { + logprintf(LOG_ERR, "No CommandIRs found"); + } + + /* Check if any we currently know about have been removed + * (Usually, we get a read/write error first) + */ + for(find_spot = 0; find_spot < MAX_DEVICES; find_spot++) + { + if(open_commandir_devices[find_spot].cmdir_udev != NULL) + { + if(still_found[open_commandir_devices[find_spot].location] + [open_commandir_devices[find_spot].devnum] != 1) + { + logprintf(LOG_ERR, "Commandir %d removed from [%d][%d].", find_spot,open_commandir_devices[find_spot].location, open_commandir_devices[find_spot].devnum); + raise_event(COMMANDIR_UNPLUG_1 + find_spot); + hardware_disconnect(find_spot); + commandir_rx_num = -1; + changed++; + } + } + } + + if(changed) + { + hardware_setorder(); + raise_event(COMMANDIR_REORDERED); + } + +} + + +// Shutdown everything and terminate +static void shutdown_usb() +{ + int x; + + // Wait for any TX to complete before shutting down + if(top_signalq >= 0) + { + shutdown_pending++; + logprintf(LOG_ERR, "Waiting for signals to finish transmitting before shutdown"); + return; + } + + for(x=0; x<MAX_DEVICES; x++) + { + if(open_commandir_devices[x].cmdir_udev ) + { + usb_release_interface(open_commandir_devices[x].cmdir_udev, + open_commandir_devices[x].interface); + usb_close(open_commandir_devices[x].cmdir_udev); + } + } + logprintf(LOG_ERR, "CommandIR driver child cleaned up and exiting"); + raise_event(COMMANDIR_STOPPED); + + _exit(EXIT_SUCCESS); +} + +static void commandir_read_loop() +{ + // Read from CommandIR, Write to pipe + + unsigned char commands[MAX_COMMAND]; + int curCommandStart = 0; + int curCommandLength = 0; + int bytes_read; + unsigned char periodic_checks = 0; + static unsigned char rx_decode_led[7] = {7, PROC_SET, 0x40, 0, 0,4, 2}; + static unsigned char init_led[7] = {7, PROC_SET, 0x00, 0x01, 3, 55, 2}; + static unsigned char deinit_led[7] = {7, PROC_SET, 0x0, 0x02, 3, 45, 2}; + static unsigned int LIRC_frequency = 38000; + + int send_status = 0; + int i = 0; + int tmp = 0; + int tmp2 = 0; + + raise_event(COMMANDIR_READY); + + for(;;){ + /*** This is the main loop the monitors control and TX events from + * the parent, and monitors the CommandIR RX buffer + */ + + curCommandStart = 0; + curCommandLength = 0; + bytes_read = read(tochild_read, commands, MAX_COMMAND); + + if(shutdown_pending > 0 && (top_signalq==-1)) + shutdown_usb(); + + if(bytes_read > 0){ + + while(curCommandStart < bytes_read){ + curCommandLength = commands[curCommandStart] + + commands[curCommandStart + 1] * 256; + + switch(commands[curCommandStart + 2]){ // the control value + case DEINIT_HEADER_LIRC: + for(i=0; i<device_count; i++) + { + if(open_commandir_devices[tx_order[i]].hw_type == + HW_COMMANDIR_2) + { + if(open_commandir_devices[tx_order[i]].cmdir_udev > 0) + { + send_status=usb_bulk_write( + open_commandir_devices[tx_order[i]].cmdir_udev, + 2, // endpoint2 + (char*)deinit_led, + 7, // bytes + USB_TIMEOUT_MS); + } + rx_hold = 1; // Put a hold on RX, but queue events + } + } + + break; + case INIT_HEADER_LIRC: + for(i=0; i<device_count; i++) + { + if(open_commandir_devices[tx_order[i]].hw_type == + HW_COMMANDIR_2) + { + if(open_commandir_devices[tx_order[i] ].cmdir_udev > 0) + { + send_status=usb_bulk_write( + open_commandir_devices[tx_order[i] ].cmdir_udev, + 2, // endpoint2 + (char*)init_led, + 7, // bytes + USB_TIMEOUT_MS); + } + rx_hold = 0; // Resume RX after queue events + } + } + break; + case RXDECODE_HEADER_LIRC: + // Successful RX decode: show it on the light. + if(open_commandir_devices[commandir_rx_num].cmdir_udev > 0) + { + send_status=usb_bulk_write( + open_commandir_devices[commandir_rx_num].cmdir_udev, + 2, // endpoint2 + (char*)rx_decode_led, + 7, // bytes + USB_TIMEOUT_MS); + + } + break; + + case FREQ_HEADER_LIRC: + LIRC_frequency = (commands[curCommandStart + 6] & 0x000000ff) | + ((commands[curCommandStart + 5] << 8) & 0x0000ff00) | + ((commands[curCommandStart + 4] << 16) & 0x00ff0000) | + ((commands[curCommandStart + 3] << 24) & 0xff000000); + if(!LIRC_frequency) + LIRC_frequency = DEFAULT_FREQ; + break; + case TX_HEADER_NEW: + case TX_LIRC_T: + if(curCommandLength==64) + { + if(check_irsend_commandir(&commands[curCommandStart + 4])) + { + break; // it's a command for us + } + } + add_to_tx_pipeline(&commands[curCommandStart + 4], + curCommandLength - 4, pre_pipeline_emitter_mask, LIRC_frequency); + break; + + case CHANNEL_EN_MASK: + pre_pipeline_emitter_mask = (commands[curCommandStart+4] << 8) | + commands[curCommandStart+3]; + break; + } + curCommandStart += curCommandLength; + + } + } + // If we're receiving, make sure the commandir buffer doesn't overrun + if(commandir_read() < 20 ) + tmp = 2; + while(tmp-- > 0) + { + tmp2 = commandir_read(); +// printf("commandir_read() (%d) returning %d.\n", tmp,tmp2); + } + if(tmp2 < 20 ){ + // once in a while, but never while we're retreaving a signal + if(++periodic_checks>100) + { + hardware_scan(); + periodic_checks = 0; + } + else + { + usleep(read_delay); + } + } + } + +} + +static int check_irsend_commandir(unsigned char *command) +{ + // decode the code like LIRC would do, and take an action + int commandir_code = 0; + + commandir_code = commandir_decode((char*)command); + + if(commandir_code > 0xef) + { + // It's a settransmitters command + int channel = commandir_code & 0x0f; + + // can only set 1 bit from here so far.., + pre_pipeline_emitter_mask = 0x0001 << channel; + + return commandir_code; + } + + switch(commandir_code) + { + case 0x53: + read_delay /= 2; // "faster" means less time + if(read_delay < MIN_WAIT_BETWEEN_READS_US) + read_delay = MIN_WAIT_BETWEEN_READS_US; + break; + case 0x54: + read_delay *= 2; // "slower" means more time + if(read_delay > MAX_WAIT_BETWEEN_READS_US) + read_delay = MAX_WAIT_BETWEEN_READS_US; + break; + + case 0x09: + case 0x0A: + logprintf(LOG_ERR, "Re-selecting RX not implemented yet"); + break; + + case 0xe6: // disable-fast-decode + logprintf(LOG_ERR, "Fast decoding disabled"); + insert_fast_zeros = 0; + break; + + case 0xe7: // enable-fast-decode + case 0xe9: // force-fast-decode-2 + logprintf(LOG_ERR, "Fast decoding enabled"); + insert_fast_zeros = 2; + break; + + case 0xe8: // force-fast-decode-1 + logprintf(LOG_ERR, "Fast decoding enabled (1)"); + insert_fast_zeros = 1; + break; + + default: + if(commandir_code > 0x60 && commandir_code < 0xf0) + { + int ledhigh = 0, ledlow = 0, ledprog = -1; + // LED Command + switch(commandir_code >> 4) + { + case 0x6: ledlow = 0x80; break; + case 0x7: ledlow = 0x40; break; + case 0x8: ledlow = 0x20; break; + case 0x9: ledlow = 0x10; break; + case 0xa: ledlow = 0x04; break; + case 0xb: ledhigh = 0x80; break; + case 0xc: ledlow = 0x01; break; + case 0xd: ledlow = 0x02; break; + case 0xe: ledlow = 0x08; break; + } + ledprog = (commandir_code & 0x0f) - 1; + + if( ((ledhigh + ledlow) > 0) && ledprog > -1) + { + // Set light: + static unsigned char lightchange[7] = {7, + PROC_SET, 0, 0, 0, 0, 3}; + lightchange[2] = ledhigh; + lightchange[3] = ledlow; + lightchange[4] = ledprog; + int send_status = 0; + + send_status=usb_bulk_write( + open_commandir_devices[tx_order[0]].cmdir_udev, + 2, // endpoint2 + (char *)lightchange, + 7, // bytes + USB_TIMEOUT_MS); + } + + return commandir_code; // done + } + + } + + return commandir_code; +} + + +// return how many RX's were in the last receive; so we know whether to poll more frequently or not +static int commandir_read() +{ + + /*** Which CommandIRs do we have to read from? Poll RX CommandIRs + * regularly, but non-receiving CommandIRs should be more periodically + */ + + int i,j; + int read_received = 0; + int read_retval = 0; + int conv_retval = 0; + int max_read = 5; + static int zeroterminated = 0; + + for(i=0; i<device_count; i++) + { + + switch(open_commandir_devices[tx_order[i]].hw_type) + { + case HW_COMMANDIR_2: + + read_retval = usb_bulk_read( + open_commandir_devices[ tx_order[i] ].cmdir_udev, + 1, + (char *)commandir_data_buffer, + open_commandir_devices[ tx_order[i] ].endpoint_max[1], + 5000); + + if(read_retval==0) + break; + + if(read_retval < 1) + { + if(read_retval < 0) + { + if(read_retval == -19){ + logprintf(LOG_ERR, "Read Error - CommandIR probably unplugged"); + } + else + { + logprintf(LOG_ERR, + "Didn't receive a full packet from a CommandIR II! - err %d ." + , read_retval); + } + hardware_disconnect(tx_order[i]); + hardware_scan(); + } + // 0 bytes is the most frequency case; nothing to report + + break; + } + + if(commandir_data_buffer[0]==RX_HEADER_TXAVAIL) + { + // sending us the current tx_start, tx_end arrays, and where it's at + commandir_tx_start[tx_order[i]*4] = commandir_data_buffer[4]; + commandir_tx_start[tx_order[i]*4+1] = commandir_data_buffer[3]; + commandir_tx_start[tx_order[i]*4+2] = commandir_data_buffer[2]; + commandir_tx_start[tx_order[i]*4+3] = commandir_data_buffer[1]; + + commandir_tx_end[tx_order[i]*4] = commandir_data_buffer[8]; + commandir_tx_end[tx_order[i]*4+1] = commandir_data_buffer[7]; + commandir_tx_end[tx_order[i]*4+2] = commandir_data_buffer[6]; + commandir_tx_end[tx_order[i]*4+3] = commandir_data_buffer[5]; + + commandir_last_signal_id[ tx_order[i] ] = commandir_data_buffer[9]; + + recalc_tx_available(tx_order[i]); + pipeline_check(); + if(top_signalq > 0) + { + read_received++; + } + + // This ALSO implies there's NO MORE RX DATA. + lirc_t lirc_zero_buffer[2] = {0, 0}; + + int tmp4 = 0; + if(zeroterminated>1001) + { + // Send LIRC a 0,0 packet to allow IMMEDIATE decoding + if(insert_fast_zeros > 0) + { + tmp4 = write(child_pipe_write, lirc_zero_buffer, sizeof(lirc_t)*insert_fast_zeros); + } + zeroterminated = 0; + } + else + { + if((zeroterminated < 1000) && (zeroterminated > 0)) + zeroterminated += 1000; + if(zeroterminated > 1000) + zeroterminated++; + } + + break; + } + + + if(commandir_data_buffer[0]==RX_HEADER_EVENTS) + { + for(j=1; j<(read_retval); j++) + { + raise_event(commandir_data_buffer[j]+tx_order[i]*0x10); + } + } + else + { + if( (commandir_data_buffer[0]==RX_HEADER_DATA) && + (commandir_rx_num==tx_order[i]) ) + { + if(rx_hold==0) // Only if we should be listening for remote cmds + { + zeroterminated = 1; + conv_retval = commandir2_convert_RX( + (unsigned short *)&commandir_data_buffer[2], + commandir_data_buffer[1]); + read_received = conv_retval; // header + } + } + } + break; + + case HW_COMMANDIR_MINI: + + max_read = 5; + while(max_read--){ + + read_retval = usb_bulk_read( + open_commandir_devices[ tx_order[i] ].cmdir_udev, + 1, + (char *)commandir_data_buffer, + 64, + USB_TIMEOUT_MS); + + if (!(read_retval == MAX_HW_MINI_PACKET)) + { + if(read_retval == -19){ + logprintf(LOG_ERR, "Read Error - CommandIR probably unplugged"); + } + else + { + logprintf(LOG_ERR, + "Didn't receive a full packet from a Mini! - err %d ." + , read_retval); + } + + hardware_disconnect(tx_order[i]); + hardware_scan(); + break; + } + + + if ( (commandir_data_buffer[1] > 0) && + (commandir_rx_num==tx_order[i]) ) + { + conv_retval = cmdir_convert_RX(commandir_data_buffer); + + read_received += commandir_data_buffer[1]; + + if(commandir_data_buffer[1] < 20) + { + // Lots of hardware buffer room left; don't tie up CPU + break; + } + } + else + { + break; + } + } // while; should only repeat if there's more RX data + + /* CommandIR Mini only has 1 buffer */ + commandir_tx_start[tx_order[i]*4] = 0; + commandir_tx_start[tx_order[i]*4+1] = 0; + commandir_tx_start[tx_order[i]*4+2] = 0; + commandir_tx_start[tx_order[i]*4+3] = 0; + + commandir_tx_end[tx_order[i]*4] = commandir_data_buffer[2]; + commandir_tx_end[tx_order[i]*4+1] = commandir_data_buffer[2]; + commandir_tx_end[tx_order[i]*4+2] = commandir_data_buffer[2]; + commandir_tx_end[tx_order[i]*4+3] = commandir_data_buffer[2]; + + /* .. and it can't pipeline... */ + commandir_last_signal_id[i] = lastSendSignalID[i]; + recalc_tx_available(tx_order[i]); + pipeline_check(); + break; + case HW_COMMANDIR_UNKNOWN: + break; + } // end switch + } // for each attached hardware device + return read_received; +} + +static void setEmitterMask(int bitmask) +{ + channels_en[0] = bitmask & 0x0F; + channels_en[1] = (bitmask >> 4) & 0xfF; + channels_en[2] = (bitmask >> 8) & 0xfF; + channels_en[3] = (bitmask >> 12) & 0xfF; +} + + +static int commandir2_convert_RX(unsigned short *bufferrx, + unsigned char numvalues) +{ + // convert hardware timestamp values to elapsed time values + + int i; + int curpos = 0; + int bytes_w = 0; + lirc_t lirc_data_buffer[256]; + + i=0; + int pca_count = 0; + int overflows = 0; + + while(curpos < numvalues ) + { + pca_count = (bufferrx[curpos] & 0x3fff) << 2; + pca_count = pca_count / 12; + + if(bufferrx[curpos] & COMMANDIR_2_OVERFLOW_MASK) + { + overflows = bufferrx[curpos+1]; + lirc_data_buffer[i] = pca_count + (overflows * 0xffff / 12); + + if(bufferrx[curpos] & COMMANDIR_2_PULSE_MASK) + { + lirc_data_buffer[i] |= PULSE_BIT; + } + curpos++; + + } + else + { + lirc_data_buffer[i] = pca_count; + if(bufferrx[curpos] & COMMANDIR_2_PULSE_MASK) + { + lirc_data_buffer[i] |= PULSE_BIT; + } + } + + curpos++; + i++; + if(i> 255) + { + break; + } + } + + bytes_w = write(child_pipe_write, lirc_data_buffer, sizeof(lirc_t)*i); + + if (bytes_w < 0) + { + logprintf(LOG_ERR, "Can't write to LIRC pipe! %d", child_pipe_write); + return 0; + } + + return bytes_w; +} + + + + +// Originally from lirc_cmdir.c +static int cmdir_convert_RX(unsigned char *orig_rxbuffer) +{ + unsigned int num_data_values = 0; + unsigned int num_data_bytes = 0; + unsigned int asint1 = 0, asint2 = 0, overflows = 0; + int i; + int bytes_w; // Pipe write + lirc_t lirc_data_buffer[256]; + + + num_data_bytes = orig_rxbuffer[1]; + + /* check if num_bytes is multiple of 3; if not, error */ + if (num_data_bytes%3 > 0) return -1; + if (num_data_bytes > 60) return -3; + if (num_data_bytes < 3) return -2; + + num_data_values = num_data_bytes/3; + + asint2 = orig_rxbuffer[3] + orig_rxbuffer[4] * 0xff; + if(last_mc_time==-1) + { + // The first time we run there's no previous time value + last_mc_time = asint2 - 110000; + if(last_mc_time < 0) last_mc_time+=0xffff; + } + + asint1 = last_mc_time; + overflows = orig_rxbuffer[5]; + + for(i=2; i<num_data_values+2; i++) + { + if(overflows < 0xff) + { + // space + lirc_data_buffer[i-2] = get_time_value(asint1, + asint2, overflows) - 26; + } + else + { // pulse + lirc_data_buffer[i-2] = get_time_value(asint1, + asint2, 0) + 26; + lirc_data_buffer[i-2] |= PULSE_BIT; + } + asint1 = asint2; + asint2 = orig_rxbuffer[i*3] + orig_rxbuffer[i*3+1] * 0xff; + overflows = orig_rxbuffer[i*3+2]; + } + last_mc_time = asint1; + + + bytes_w = write(child_pipe_write, lirc_data_buffer, sizeof(lirc_t)*num_data_values); + + if (bytes_w < 0) + { + logprintf(LOG_ERR, "Can't write to LIRC pipe! %d", child_pipe_write); + goto done; + } + +done: + return bytes_w; + +} + + + + +static unsigned int get_time_value(unsigned int firstint, + unsigned int secondint, unsigned char overflow) +{ + /* get difference between two MCU timestamps, CommandIR Mini version */ + unsigned int t_answer = 0; + + if (secondint > firstint) + { + t_answer = secondint - firstint + overflow*0xffff; + } + else + { + if (overflow > 0) + { + t_answer = (65536 - firstint) + secondint + (overflow - 1)*0xffff - 250; + } + else + { + t_answer = (65536 - firstint) + secondint; + } + } + + /* clamp to long signal */ + if (t_answer > 16000000) t_answer = PULSE_MASK; + return t_answer; +} + + +static void raise_event(unsigned int eventid) +{ + /* Raise an LIRC Event by + * Generating lirc_t Pattern + */ + static lirc_t event_data[18] = {LIRCCODE_GAP, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + int i, bytes_w; + + // logprintf(LOG_ERR, "Raising event %d", eventid); + for(i=0; i<8; i++) + { + if( (eventid & 0x80) ) + { + event_data[i*2+1] = signal_base[0][0]; + event_data[i*2+2] = signal_base[0][1]; + } + else + { + event_data[i*2+1] = signal_base[1][0]; + event_data[i*2+2] = signal_base[1][1]; + } + eventid = eventid << 1; + } + + event_data[16] = LIRCCODE_GAP*4; + + bytes_w = write(child_pipe_write, event_data, sizeof(lirc_t) * 17); + + if (bytes_w < 0) + { + logprintf(LOG_ERR, "Can't write to LIRC pipe! %d", child_pipe_write); + } + +} + +static int commandir_decode(char *command) +{ + // Decode the signal to a number, just like LIRC; + // there's probably a built-in way to do this. + int i; + int code = 0; + + lirc_t *codes; + codes = (lirc_t *)command; + + for(i=0; i<15; i+=2) + { + code = code << 1; + if(codes[i]==100) + code |= 1; + } + return code; +} + diff --git a/abs/core/lirc/hw_commandir.h b/abs/core/lirc/hw_commandir.h new file mode 100755 index 0000000..2280f6c --- /dev/null +++ b/abs/core/lirc/hw_commandir.h @@ -0,0 +1,175 @@ + +/**************************************************************************** + ** hw_commandir.h ********************************************************** + **************************************************************************** + * + * Copyright (C) 1999 Christoph Bartelmus <lirc@bartelmus.de> + * -- Original hw_default.h + * Modified for CommandIR Transceivers, April-June 2008, Matthew Bodkin + * + */ + +#ifndef HW_COMMANDIR_H +#define HW_COMMANDIR_H + +#define RX_BUFFER_SIZE 1024 +#define TX_BUFFER_SIZE 1024 +#define TX_QUEUE 1 +#define RX_QUEUE 0 +#define MAX_COMMANDIRS 4 +#define MAX_COMMAND 8192 + +/* transmitter channel control */ +#define MAX_DEVICES 4 +#define MAX_CHANNELS 16 +#define DEVICE_CHANNELS 4 +#define MAX_MASK 0xffff +#define MAX_SIGNALQ 100 + +/* CommandIR control codes */ +#define CHANNEL_EN_MASK 1 +#define FREQ_HEADER 2 +#define MCU_CTRL_SIZE 3 +#define TX_HEADER 7 +#define TX_HEADER_NEW 8 +/* New for CommandIR II */ + +#define READ_INPUTS 10 +#define PROC_SET 11 +#define INIT_FUNCTION 12 +#define RX_SELECT 13 +#define TX_COMMANDIR_II 14 +/* Internal to driver */ +#define TX_LIRC_T 15 +#define FREQ_HEADER_LIRC 16 +#define RXDECODE_HEADER_LIRC 17 +#define INIT_HEADER_LIRC 18 +#define DEINIT_HEADER_LIRC 19 +#define GET_VERSION 20 + +#define COMMANDIR_2_PULSE_MASK 0x8000 +#define COMMANDIR_2_OVERFLOW_MASK 0x4000 + +#define DEFAULT_PULSE_WIDTH 13 + +#define USB_CMDIR_VENDOR_ID 0x10c4 +#define USB_CMDIR_PRODUCT_ID 0x0003 +#define USB_CMDIR_MINOR_BASE 192 + +#define HW_COMMANDIR_MINI 1 +#define HW_COMMANDIR_2 2 +#define HW_COMMANDIR_UNKNOWN 127 + +#define MAX_HW_MINI_PACKET 64 + +// CommandIR has lots of buffer room, we don't need to poll constantly +#define USB_TIMEOUT_MS 5000 +#define USB_TIMEOUT_US 1000 +#define WAIT_BETWEEN_READS_US 10000 +#define MAX_WAIT_BETWEEN_READS_US 5000000 +#define MIN_WAIT_BETWEEN_READS_US 5000 + +#define USB_MAX_BUSES 8 +#define USB_MAX_BUSDEV 127 + +#define RX_HEADER_DATA 0x01 +#define RX_HEADER_EVENTS 0x02 +#define RX_HEADER_TXAVAIL 0x03 + + +// We keep CommandIR's OPEN even on -deinit for speed and to monitor +// Other non-LIRC events (plugin, suspend, etc) +#define USB_KEEP_WARM 1 + +// CommandIR lircd.conf event driven code definitions +#define LIRCCODE_GAP 125000 +#define JACK_PLUG_1 0x01 +#define JACK_PLUG_2 0x02 +#define JACK_PLUG_3 0x03 +#define JACK_PLUG_4 0x04 +#define JACK_PLUG_5 0x11 +#define JACK_PLUG_6 0x12 +#define JACK_PLUG_7 0x13 +#define JACK_PLUG_8 0x14 +#define JACK_PLUG_9 0x21 +#define JACK_PLUG_10 0x22 +#define JACK_PLUG_11 0x23 +#define JACK_PLUG_12 0x24 +#define JACK_PLUG_13 0x31 +#define JACK_PLUG_14 0x32 +#define JACK_PLUG_15 0x33 +#define JACK_PLUG_16 0x34 + +#define JACK_UNPLUG_1 0x05 +#define JACK_UNPLUG_2 0x06 +#define JACK_UNPLUG_3 0x07 +#define JACK_UNPLUG_4 0x08 +#define JACK_UNPLUG_5 0x15 +#define JACK_UNPLUG_6 0x16 +#define JACK_UNPLUG_7 0x17 +#define JACK_UNPLUG_8 0x18 +#define JACK_UNPLUG_9 0x25 +#define JACK_UNPLUG_10 0x26 +#define JACK_UNPLUG_11 0x27 +#define JACK_UNPLUG_12 0x28 +#define JACK_UNPLUG_13 0x35 +#define JACK_UNPLUG_14 0x36 +#define JACK_UNPLUG_15 0x37 +#define JACK_UNPLUG_16 0x38 + +#define SELECT_TX_INTERNAL 0x09 +#define SELECT_TX_ExTERNAL 0x0A + +#define SELECT_TX_ON_1 0x0D +#define SELECT_TX_ON_2 0x1D +#define SELECT_TX_ON_3 0x2D +#define SELECT_TX_ON_4 0x3D + +#define JACK_PLUG_RX_1 0x0B +#define JACK_UNPLUG_RX_1 0x0C +#define JACK_PLUG_RX_2 0x1B +#define JACK_UNPLUG_RX_2 0x1C +#define JACK_PLUG_RX_3 0x2B +#define JACK_UNPLUG_RX_3 0x2C +#define JACK_PLUG_RX_4 0x3B +#define JACK_UNPLUG_RX_4 0x3C + +#define COMMANDIR_PLUG_1 0x41 +#define COMMANDIR_PLUG_2 0x42 +#define COMMANDIR_PLUG_3 0x43 +#define COMMANDIR_PLUG_4 0x44 + +#define COMMANDIR_UNPLUG_1 0x45 +#define COMMANDIR_UNPLUG_2 0x46 +#define COMMANDIR_UNPLUG_3 0x47 +#define COMMANDIR_UNPLUG_4 0x48 + +#define COMMANDIR_REORDERED 0x50 +#define COMMANDIR_READY 0x51 +#define COMMANDIR_STOPPED 0x52 +#define COMMANDIR_POLL_FASTER 0x53 +#define COMMANDIR_POLL_SLOWER 0x54 + +#define SETTRANSMITTERS_1 0xf0 +#define SETTRANSMITTERS_2 0xf1 +#define SETTRANSMITTERS_3 0xf2 +#define SETTRANSMITTERS_4 0xf3 +#define SETTRANSMITTERS_5 0xf4 +#define SETTRANSMITTERS_6 0xf5 +#define SETTRANSMITTERS_7 0xf6 +#define SETTRANSMITTERS_8 0xf7 +#define SETTRANSMITTERS_9 0xf8 +#define SETTRANSMITTERS_10 0xf9 +#define SETTRANSMITTERS_11 0xfa +#define SETTRANSMITTERS_12 0xfb +#define SETTRANSMITTERS_13 0xfc +#define SETTRANSMITTERS_14 0xfd +#define SETTRANSMITTERS_15 0xfe +#define SETTRANSMITTERS_16 0xff + +// What's in a returning data packet +#define COMMANDIR_RX_EVENTS 0x02 +#define COMMANDIR_RX_DATA 0x01 + + +#endif diff --git a/abs/core/lirc/kernel-2.6.27.patch b/abs/core/lirc/kernel-2.6.27.patch new file mode 100644 index 0000000..05cf75b --- /dev/null +++ b/abs/core/lirc/kernel-2.6.27.patch @@ -0,0 +1,78 @@ +diff -Nur lirc-0.8.3.orig/drivers/lirc_dev/lirc_dev.c lirc-0.8.3/drivers/lirc_dev/lirc_dev.c +--- lirc-0.8.3.orig/drivers/lirc_dev/lirc_dev.c 2008-01-13 11:45:02.000000000 +0100 ++++ lirc-0.8.3/drivers/lirc_dev/lirc_dev.c 2008-10-10 16:29:15.000000000 +0200 +@@ -49,7 +49,7 @@ + #include <linux/uaccess.h> + #include <linux/errno.h> + #endif +-#include <asm/semaphore.h> ++#include <linux/semaphore.h> + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + #include <linux/wrapper.h> + #endif +diff -Nur lirc-0.8.3.orig/drivers/lirc_i2c/lirc_i2c.c lirc-0.8.3/drivers/lirc_i2c/lirc_i2c.c +--- lirc-0.8.3.orig/drivers/lirc_i2c/lirc_i2c.c 2008-05-04 15:49:53.000000000 +0200 ++++ lirc-0.8.3/drivers/lirc_i2c/lirc_i2c.c 2008-10-10 16:29:00.000000000 +0200 +@@ -54,7 +54,7 @@ + #include <linux/i2c.h> + #include <linux/i2c-algo-bit.h> + +-#include <asm/semaphore.h> ++#include <linux/semaphore.h> + + #include "drivers/kcompat.h" + #include "drivers/lirc_dev/lirc_dev.h" +--- lirc-0.8.3.orig/drivers/kcompat.h 2008/05/14 16:37:49 5.36 ++++ lirc-0.8.3.orig/drivers/kcompat.h 2008/09/27 08:16:15 5.37 +@@ -36,7 +36,7 @@ + class_simple_destroy(cls); + } + +-#define lirc_device_create(cs, parent, dev, fmt, args...) \ ++#define lirc_device_create(cs, parent, dev, drvdata, fmt, args...) \ + class_simple_device_add(cs, dev, parent, fmt, ## args) + + static inline void lirc_device_destroy(lirc_class_t *cls, dev_t devt) +@@ -48,20 +48,29 @@ + + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 15) + +-#define lirc_device_create(cs, parent, dev, fmt, args...) \ ++#define lirc_device_create(cs, parent, dev, drvdata, fmt, args...) \ + class_device_create(cs, dev, parent, fmt, ## args) + + #else /* >= 2.6.15 */ + + #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26) + +-#define lirc_device_create(cs, parent, dev, fmt, args...) \ ++#define lirc_device_create(cs, parent, dev, drvdata, fmt, args...) \ + class_device_create(cs, NULL, dev, parent, fmt, ## args) + + #else /* >= 2.6.26 */ + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) ++ ++#define lirc_device_create(cs, parent, dev, drvdata, fmt, args...) \ ++ class_device_create(cs, parent, dev, fmt, ## args) ++ ++#else /* >= 2.6.27 */ ++ + #define lirc_device_create device_create + ++#endif /* >= 2.6.27 */ ++ + #endif /* >= 2.6.26 */ + + #define LIRC_DEVFS_PREFIX +--- lirc-0.8.3.orig/drivers/lirc_dev/lirc_dev.c 2008/09/06 07:30:16 1.60 ++++ lirc-0.8.3.orig/drivers/lirc_dev/lirc_dev.c 2008/09/27 08:16:15 1.61 +@@ -397,7 +397,7 @@ + DEV_LIRC "/%u", ir->p.minor); + #endif + (void) lirc_device_create(lirc_class, ir->p.dev, +- MKDEV(IRCTL_DEV_MAJOR, ir->p.minor), ++ MKDEV(IRCTL_DEV_MAJOR, ir->p.minor), NULL, + "lirc%u", ir->p.minor); + + if (p->sample_rate || p->get_queue) { diff --git a/abs/core/lirc/lirc.fdi b/abs/core/lirc/lirc.fdi new file mode 100644 index 0000000..6f2443a --- /dev/null +++ b/abs/core/lirc/lirc.fdi @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<deviceinfo version="0.2"> + <device> + <!-- This rule prevents the Dvico dual digital4 rev 2 + remote input device from making your keyboard act wierd. --> + <match key="info.product" contains_ncase="IR-receiver inside an USB DVB receiver"> + <merge key="info.ignore" type="bool">true</merge> + </match> + </device> +</deviceinfo> diff --git a/abs/core/lirc/lirc.install b/abs/core/lirc/lirc.install index 704c341..53340e5 100644 --- a/abs/core/lirc/lirc.install +++ b/abs/core/lirc/lirc.install @@ -10,7 +10,7 @@ pre_install() { post_install() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } @@ -26,7 +26,7 @@ pre_upgrade() { post_upgrade() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } @@ -40,7 +40,7 @@ pre_remove() { post_remove() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } diff --git a/abs/core/lirc/lirc_atiusb.patch b/abs/core/lirc/lirc_atiusb.patch new file mode 100644 index 0000000..2f0c61e --- /dev/null +++ b/abs/core/lirc/lirc_atiusb.patch @@ -0,0 +1,27 @@ +diff -ruaN lirc-0.8.4.orig/drivers/lirc_atiusb/lirc_atiusb.c lirc-0.8.4/drivers/lirc_atiusb/lirc_atiusb.c +--- lirc-0.8.4.orig/drivers/lirc_atiusb/lirc_atiusb.c 2008-05-19 08:10:35.000000000 +0000 ++++ lirc-0.8.4/drivers/lirc_atiusb/lirc_atiusb.c 2009-02-14 22:35:44.000000000 +0000 +@@ -192,8 +192,9 @@ + /* init strings */ + #define USB_OUTLEN 7 + +-static char init1[] = {0x01, 0x00, 0x20, 0x14}; +-static char init2[] = {0x01, 0x00, 0x20, 0x14, 0x20, 0x20, 0x20}; ++static char init1[] = {0x80, 0x05, 0x1b, 0x15, 0x14, 0x20, 0x24, 0x15}; ++static char init2[] = {0x83, 0x03}; ++static char init3[] = {0x84, 0xd7, 0x020}; + + struct in_endpt { + /* inner link in list of endpoints for the remote specified by ir */ +@@ -1183,8 +1184,9 @@ + oep->buf, USB_OUTLEN, usb_remote_send, + oep, oep->ep->bInterval); + +- send_packet(oep, 0x8004, init1); +- send_packet(oep, 0x8007, init2); ++ send_packet(oep, 0x8007, init1); ++ send_packet(oep, 0x8002, init2); ++ send_packet(oep, 0x8003, init3); + } + } + diff --git a/abs/core/lirc/lirc_mod_mce.patch b/abs/core/lirc/lirc_mod_mce.patch new file mode 100644 index 0000000..314f2d7 --- /dev/null +++ b/abs/core/lirc/lirc_mod_mce.patch @@ -0,0 +1,97 @@ +diff -Naru lirc_mod_mce.orig/lirc_mod_mce.c lirc_mod_mce/lirc_mod_mce.c +--- lirc_mod_mce.orig/lirc_mod_mce.c 2008-04-18 02:12:28.000000000 +0930 ++++ lirc_mod_mce/lirc_mod_mce.c 2009-05-28 07:53:10.000000000 +0930 +@@ -171,17 +171,76 @@ + #define VENDOR_TATUNG 0x1460 + #define VENDOR_GATEWAY 0x107b + #define VENDOR_SHUTTLE 0x1308 ++#define VENDOR_PHILIPS 0x0471 ++#define VENDOR_SMK 0x0609 ++#define VENDOR_TATUNG 0x1460 ++#define VENDOR_GATEWAY 0x107b ++#define VENDOR_SHUTTLE 0x1308 ++#define VENDOR_SHUTTLE2 0x051c ++#define VENDOR_MITSUMI 0x03ee ++#define VENDOR_TOPSEED 0x1784 ++#define VENDOR_RICAVISION 0x179d ++#define VENDOR_ITRON 0x195d ++#define VENDOR_FIC 0x1509 ++#define VENDOR_LG 0x043e ++#define VENDOR_MICROSOFT 0x045e ++#define VENDOR_FORMOSA 0x147a ++#define VENDOR_FINTEK 0x1934 + #define VENDOR_PINNACLE 0x2304 + +- + static struct usb_device_id usb_remote_table [] = { +- { USB_DEVICE(VENDOR_PHILIPS, 0x0815) }, /* Philips eHome Infrared Transciever */ +- { USB_DEVICE(VENDOR_SMK, 0x031d) }, /* SMK/Toshiba G83C0004D410 */ +- { USB_DEVICE(VENDOR_TATUNG, 0x9150) }, /* Tatung eHome Infrared Transceiver */ +- { USB_DEVICE(VENDOR_SHUTTLE, 0xc001) }, /* Shuttle eHome Infrared Transceiver */ +- { USB_DEVICE(VENDOR_GATEWAY, 0x3009) }, /* Gateway eHome Infrared Transceiver */ +- { USB_DEVICE(VENDOR_PINNACLE, 0x0225) }, /* Pinnacle Remote USB RC6 */ +- { } /* Terminating entry */ ++ /* Philips eHome Infrared Transciever */ ++ { USB_DEVICE(VENDOR_PHILIPS, 0x0815) }, ++ /* Philips Infrared Transciever - HP branded */ ++ { USB_DEVICE(VENDOR_PHILIPS, 0x060c) }, ++ /* Philips SRM5100 */ ++ { USB_DEVICE(VENDOR_PHILIPS, 0x060d) }, ++ /* SMK/Toshiba G83C0004D410 */ ++ { USB_DEVICE(VENDOR_SMK, 0x031d) }, ++ /* SMK eHome Infrared Transceiver (Sony VAIO) */ ++ { USB_DEVICE(VENDOR_SMK, 0x0322) }, ++ /* bundled with Hauppauge PVR-150 */ ++ { USB_DEVICE(VENDOR_SMK, 0x0334) }, ++ /* Tatung eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_TATUNG, 0x9150) }, ++ /* Shuttle eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_SHUTTLE, 0xc001) }, ++ /* Shuttle eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_SHUTTLE2, 0xc001) }, ++ /* Gateway eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_GATEWAY, 0x3009) }, ++ /* Mitsumi */ ++ { USB_DEVICE(VENDOR_MITSUMI, 0x2501) }, ++ /* Topseed eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_TOPSEED, 0x0001) }, ++ /* Topseed HP eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_TOPSEED, 0x0006) }, ++ /* Topseed eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_TOPSEED, 0x0007) }, ++ /* Topseed eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_TOPSEED, 0x0008) }, ++ /* Ricavision internal Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_RICAVISION, 0x0010) }, ++ /* Itron ione Libra Q-11 */ ++ { USB_DEVICE(VENDOR_ITRON, 0x7002) }, ++ /* FIC eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_FIC, 0x9242) }, ++ /* LG eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_LG, 0x9803) }, ++ /* Microsoft MCE Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_MICROSOFT, 0x00a0) }, ++ /* Formosa eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_FORMOSA, 0xe015) }, ++ /* Formosa aim / Trust MCE Infrared Receiver */ ++ { USB_DEVICE(VENDOR_FORMOSA, 0xe017) }, ++ /* Formosa Industrial Computing / Beanbag Emulation Device */ ++ { USB_DEVICE(VENDOR_FORMOSA, 0xe018) }, ++ /* Fintek eHome Infrared Transceiver */ ++ { USB_DEVICE(VENDOR_FINTEK, 0x0602) }, ++ /* Pinnacle Remote USB RC6 */ ++ { USB_DEVICE(VENDOR_PINNACLE, 0x0225) }, ++ /* Terminating entry */ ++ { } + }; + + static unsigned char usb_kbd_keycode[256] = { +@@ -1108,7 +1167,7 @@ + input_dev->name = ir->name; + input_dev->phys = ir->phys; + usb_to_input_id(dev, &input_dev->id); +- input_dev->cdev.dev = &dev->dev; ++ input_dev->dev.parent = &dev->dev; + input_dev->evbit[BIT_WORD(EV_KEY)] |= BIT_MASK(EV_KEY); + input_dev->evbit[BIT_WORD(EV_REL)] |= BIT_MASK(EV_REL); + input_dev->relbit[BIT_WORD(REL_X)] |= BIT_MASK(REL_X); diff --git a/abs/core/live-media/PKGBUILD b/abs/core/live-media/PKGBUILD new file mode 100644 index 0000000..f3f230d --- /dev/null +++ b/abs/core/live-media/PKGBUILD @@ -0,0 +1,32 @@ +#$Id: PKGBUILD 21746 2008-12-15 23:00:08Z giovanni $ +# Maintainer: Giovanni Scafora <giovanni@archlinux.org> +# Contributor: Gilles CHAUVIN <gcnweb@gmail.com> + +pkgname=live-media +pkgver=2008.12.20 +pkgrel=1 +pkgdesc="A set of C++ libraries for multimedia streaming" +arch=('i686' 'x86_64') +license=('LGPL') +url="http://live555.com/liveMedia" +depends=(gcc-libs) +source=(http://live555.com/liveMedia/public/live.$pkgver.tar.gz) +md5sums=('266d9b15f57ca952667780d9c2185e5e') + +build() +{ + cd $startdir/src/live + sed -i "s|COMPILE_OPTS =.*|COMPILE_OPTS = \$(INCLUDES) -I. -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 $CFLAGS|g" config.linux + ./genMakefiles linux + make || return 1 + + for dir in BasicUsageEnvironment UsageEnvironment groupsock liveMedia; do + mkdir -p $startdir/pkg/usr/lib/$pkgname/$dir + cp -r $dir/*.a $dir/include $startdir/pkg/usr/lib/$pkgname/$dir + done + + mkdir -p $startdir/pkg/usr/bin + for testprog in `find testProgs -type f -perm 755`; do + install $testprog $startdir/pkg/usr/bin + done +} diff --git a/abs/core/local-website/PKGBUILD b/abs/core/local-website/PKGBUILD new file mode 100644 index 0000000..1f1faa9 --- /dev/null +++ b/abs/core/local-website/PKGBUILD @@ -0,0 +1,21 @@ +pkgname=local-website +pkgver=2 +pkgrel=15 +pkgdesc="Contents of http://localhost" +arch=(i686 x86_64) +license=('GPL') +url="http://localhost" +#install=filesystem.install +depends=('lighttpd' 'php') +source=() + +build() +{ + cd $startdir/pkg + mkdir -p data/srv/httpd/htdocs + cp -rp $startdir/htdocs/* $startdir/pkg/data/srv/httpd/htdocs + chown -R http:users $startdir/pkg/data/srv/httpd + chmod -R 755 $startdir/pkg/data/srv/httpd + +} + diff --git a/abs/core/local-website/htdocs/KnoppMyth.css b/abs/core/local-website/htdocs/KnoppMyth.css new file mode 100644 index 0000000..7c5c8cf --- /dev/null +++ b/abs/core/local-website/htdocs/KnoppMyth.css @@ -0,0 +1,24 @@ +/* KnoppMyth Style Sheet */ + .headerimage { + border: thin solid #000000; + font-size: 18px; + background-color: #000080; + color: #FFFFFF; + } + table { + width: 725px; + text-align: left; + margin-left: auto; + margin-right: auto; + } + td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + border: thin solid #000000; + background-color: #CCCCCC; + color: #000000; + } + a, a:link, a:active, a:visited, a:hover { + font-size: 16px; + } +/* End of KnoppMyth Style Sheet */ diff --git a/abs/core/local-website/htdocs/favicon.ico b/abs/core/local-website/htdocs/favicon.ico new file mode 100644 index 0000000..6a99443 Binary files /dev/null and b/abs/core/local-website/htdocs/favicon.ico differ diff --git a/abs/core/local-website/htdocs/fuppes.php b/abs/core/local-website/htdocs/fuppes.php new file mode 100644 index 0000000..44129d2 --- /dev/null +++ b/abs/core/local-website/htdocs/fuppes.php @@ -0,0 +1,4 @@ +<?php +$HTTP_HOST = getenv('HTTP_HOST'); +header("Location: http://$HTTP_HOST:8100/"); +?> diff --git a/abs/core/local-website/htdocs/header.png b/abs/core/local-website/htdocs/header.png new file mode 100644 index 0000000..c8b0d34 Binary files /dev/null and b/abs/core/local-website/htdocs/header.png differ diff --git a/abs/core/local-website/htdocs/index.html b/abs/core/local-website/htdocs/index.html new file mode 100644 index 0000000..9c46aac --- /dev/null +++ b/abs/core/local-website/htdocs/index.html @@ -0,0 +1,125 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head> + + + + + <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> + + + <meta content="Cecil Watson" name="author"> + + + + + + <title>LinHES R6 + +

+ Tux with a Remote +

+ + + + + + + + + + + + + + + + + + +
+ +

The Linux Home Entertainment System Release 6

+ + +

MythWeb:
+ +     The MythWeb allows you to use a web page to control + aspects of your MythTV system. MythWeb is a separate application, + but it is dependent upon MythTV being installed and operational." +

+ + +

MythTV Web Virtual Remote:
+ +     A web based virtual remote control for MythTV. +  In order for this to work, you must enable + "Network Remote Control interface".   See: + Utilities/Setup -> Setup -> General -> Fourth Page. +

+ + +

MythTV Documentation:
+ +     The MythTV Installation / User's Guide. +

+ + +

MythTV Keybindings:
+ +     The keybindings for the normal MythTV interface. +

+ + +

LinHES:
+ +     Describes how "The Project Leader" setup multiple systems + to form a Linux Home Entertainment System. +

+ + +

Folding@home:
+ +     KnoppMyth Team status for the folding@home effort. Install via the Service Menu. +

+ +

My Folding Status:
+ +     Status of the folding@home work for the local user. +

+ + +

iPod Feeds
+ +     Transcodes ready for the ipod (if any).  Additionally, you can delete unwanted files using this link.  Note:  If you have no recordings, you will see a warning issued from PHP.

+XviD Feed dir
+    Any programs you have transcoded to XviD. + Additionally, you can delete unwanted files using this link.  Note:  If you have no recordings, you will see a warning issued from PHP. +

FUPPES
+    FUPPES - Free UPnP Entertainment Service.  A +UPnP to be used inplace of the UPnP server that comes with MythTV. + If the UPnP that comes with MythTV doesn't work for you, you can +try FUPPES. Install via the Service Menu.

Mediaserv
+    Mediaserv - A on-demand transcoding server for +videos.  Mediaserv is designed to transcode video in a format +playable on the Nokia Internet Tablets.  However it works well at +transcoding and streaming to any device.  As longs as the +device will playback AVIs (think streaming to any browser!).  By +default, we have it set to link to +TV recordings (pretty) and your video directory.  Additionally if +you want it to stream contents from a network share, it will!  ln +-s /path/to/share /myth/mediaserv/media/

RRDTool:
+ +     Hardware status graphs. Install via the Service Menu. +

+ + +

KnoppMyth Radio:
+ +     Your music must be encoded as MP3 in MythMusic for this to work.

+ +

ZoneMinder
+     Video camera security software with motion detection. Install via the Service Menu. +

+
+ + diff --git a/abs/core/local-website/htdocs/layout.css b/abs/core/local-website/htdocs/layout.css new file mode 100644 index 0000000..a91a651 --- /dev/null +++ b/abs/core/local-website/htdocs/layout.css @@ -0,0 +1,29 @@ +/* Layout Stylesheet - Colors taken from MythWeb - arranged by md10md*/ + +.style2 {color: #FFFFFF} +.style3 {color: #FFFFFF} +.header { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + background-color: #CCCCCC; + border: solid thin #000000; +} +a, a:link { color: #E0E0FF; text-decoration: none; font-size: 14px; } +a:active { color: #990033; text-decoration: none; font-size: 14px; } +a:visited { color: #E0E0FF; text-decoration: none; font-size: 14px; } +a:hover { color: #F0F000; text-decoration: underline; font-size: 14px; } +body,td,th { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + background-color: #002650; +} +td,th { + border: thin solid #000000; + background-color: #265990; +} +.headerimage { + background-color: #335555; + border: solid thin #000000; + font-size: 18px; + color: #FFFFFF; +} diff --git a/abs/core/local-website/htdocs/linhes.html b/abs/core/local-website/htdocs/linhes.html new file mode 100644 index 0000000..6cfebeb --- /dev/null +++ b/abs/core/local-website/htdocs/linhes.html @@ -0,0 +1,392 @@ + + + + + + + + + + My Settop Box + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinHES
+ + + Linux Home +Entertainment System
+ + +
+ + +
+ + +
Introduction:
+ + +
+ + +     LinHES is what I called my home entertainment +system.  LinHES is of course based on KnoppMyth, but the setup I +describe can be accomplished with any Linux distro and MythTV.  My +setup consists of a master and slave backend.  My master backend is +in my bedroom and it is used to store all recorded programs.  My +slave backend is in my living room.  It's primary function is to +entertainment visitors.  Both backends are hooked up to a TV via, +TV out(SVIDEO).  SBE is also hooked to a Kenwood receiver w/ +surround(works w/o additional tweaking!). NFS is used to share the files +between the systems.
+ + +
+ + +MBE hardware:
+ + +Chaintech 7NIF2 w/ Athlon XP 2400+
+ + +512 megabytes of RAM
+ + +120 gigabyte hard drive
+ + + Hauppauge +PVR 350
+ + + Hauppauge +PVR 250
+ + +DVD-ROM drive
+ + +
+ + +SBE hardware:
+ + +Asus A7N266 w/ Athlon XP 1800+
+ + +512 megabytes of RAM
+ + +160 gigabyte hard drive
+ + +nVidia Geforce 4-440mx w/ TV out
+ + +Hauppauge WinTV model 401
+ + +AverMedia M179
+ + +DVD-ROM drive
+ + +2 Logitech Wingman Wireless rumblepad
+ + + RadioShack +15-2116 universal remote
+ + +
+ + + Installation:
+ + +
+ + +     I performed an auto install on MBE, while SBE +was installed manual (I wanted /cache no larger than 5 gigs).  Both +systems installed w/o issue all hardware was seen and worked w/o +additional configuration.  MBE was recently changed to R5 +Alpha(auto upgrade and not ready +for the average user), while SBE is running R4V3.  Both are of +course running MythTV 0.15.1.
+ + +
+ + + Customization:
+ + +
+ + +MBE:
+ + +/etc/hosts:
+ + +127.0.0.1       mbe.mysettopbox.tv +localhost
+ + +192.168.1.91 sbe
+ + +
+ + +Added the following to /etc/fstab:
+ + + sbe:/myth /mnt/sbe nfs rsize=8192,wsize=8192,soft,nfsvers=3
+ + +
+ + +/etc/exports:
+ + +/myth   *(rw)
+ + +update-rc.d nfs-kernel-server defaults
+ + +
+ + +Made a directory under /mnt called sbe and symlinked music and video to +sbe/music and sbe/video.
+ + +mkdir /mnt/sbe
+ + +cd /mnt
+ + +ln -s sbe/music music(Setup-Music Settings-General Settings, change the +directory to hold music to /mnt/music)
+ + +ln -s sbe/video video(Setup-Video Settings-General Settings change +directory to hold videos to /mnt/video)
+ + +
+ + +Ran mythtv-setup and change both IPs from 127.0.0.1 to my actual +IP.  Modified /etc/mysql/my.cnf, commented bind-address and +restarted mysql.  Finally as the user mythtv:
+ + +cd ~/.mythtv
+ + +rm -fr MythVideo
+ + +ln -s /mnt/sbe/image_cache/MythVideo/ MythVideo
+ + +
+ + +
+ + +SBE:
+ + +/etc/hosts
+ + +127.0.0.1       localhost
+ + +192.168.1.91 sbe.mysettopbox.tv sbe
+ + +192.168.1.92 mbe.mysettopbox.tv mbe
+ + +
+ + +Added the following to /etc/fstab:
+ + + mbe:/myth /mnt/mbe nfs rsize=8192,wsize=8192,soft,nfsvers=3
+ + +
+ + +
/etc/exports:
+ + +/myth   *(rw)
+ + +update-rc.d nfs-kernel-server defaults
+ + +update-rc.d -f mysql remove
+ + +update-rc.d -f apache remove
+ + +rm -fr /etc/cron.daily/mythtv-backend
+ + +
+ + +Made a directory under /mnt called mbe and symlinked tv to mbe/tv, +music is symlinked to /myth/music and video is symlinked to /myth/video.
+ + +mkdir /mnt/mbe
+ + +cd /mnt
+ + +ln -s mbe/tv tv(mythtv-setup 2nd screen, directory to hold  +recordings, change to /mnt/tv)
+ + +
+ + +Run mythtv-setup and change the first IP to the IP for SBE and the +second to MBE's IP.  Configure capture cards and bind input to +source(configured during MBE setup).  Finally as the user mythtv:
+ + +cd ~/.mythtv
+ + +rm -fr MythVideo
+ + +ln -s /myth/image_cache/MythVideo/ MythVideo
+ + +vi mysql.txt
+ + +
+ + +DBHostName=mbe
+ + +DBUserName=mythtv
+ + +DBPassword=mythtv
+ + +DBName=mythconverg
+ + +LocalHostName=sbe
+ + +
+ + +At this point, one can reboot boot systems or:
+ + +MBE:/etc/init.d/nfs-kernel-server start
+ + +SBE:/etc/init.d/nfs-kernel-server start
+ + +MBE:mount /mnt/sbe
+ + +SBE:mount /mnt/mbe
+ + +M/SBE:/etc/init.d/mythtv-backend restart
+ + +
+ +Tips  :
+ + +
+ + +     In Setup-TV Settings-Playback-2nd screen, +"Action on playback exit", set this to "Save position on exit".  +This way you can migrate watching a recorded show from one system to the +next.
+ + +
+ + +
+ + +
+ + +
+ + + + diff --git a/abs/core/local-website/htdocs/mediaserv.php b/abs/core/local-website/htdocs/mediaserv.php new file mode 100755 index 0000000..832dec5 --- /dev/null +++ b/abs/core/local-website/htdocs/mediaserv.php @@ -0,0 +1,4 @@ + diff --git a/abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps b/abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps new file mode 100644 index 0000000..ce5d92d --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.eps @@ -0,0 +1,331 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: jpeg2ps V1.9 by Thomas Merz +%%Title: Block Diagram of a video capture device.jpg +%%CreationDate: Fri Jan 5 11:03:30 2007 +%%BoundingBox: 20 20 336 229 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +%%EndProlog +%%Page: 1 1 +/languagelevel where {pop languagelevel 2 lt}{true} ifelse { + (JPEG file 'Block Diagram of a video capture device.jpg' needs PostScript Level 2!\n) dup print flush + /Helvetica findfont 20 scalefont setfont 100 100 moveto show showpage stop +} if +save +/RawData currentfile /ASCII85Decode filter def +/Data RawData << >> /DCTDecode filter def +20 20 translate +315.75 208.50 scale +/DeviceRGB setcolorspace +{ << /ImageType 1 + /Width 421 + /Height 278 + /ImageMatrix [ 421 0 0 -278 0 278 ] + /DataSource Data + /BitsPerComponent 8 + /Decode [0 1 0 1 0 1] + >> image + Data closefile + RawData flushfile + showpage + restore +} exec +s4IA0!"_al8O`[\!;#6tJ?#m^kH'FbHY$Odmc'+Yc +t)BU"@)B9_>,VCGe+tOrY*%3`p/2/e81c-:%3B]>W4>&EH1B6)/6NIK"#n.1M(_$ +ok1*IV\1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1, +:U?1,AmF!"fJ;('166!?qLF&HMtG!WU(<*rl9A"T\W)!10ZOeE%*6F"? +A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u +!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2 +lBFdaQ^rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!%;)SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEp +pG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!*&r5LsX.H +iF)';PoSYrr?V$\g0`%m"mprkK1^\N)0aVU%jYs?@01kK'q4Tc'8X^au^D;2"Mnc>eq3cQ]H+_ESK +E;3(jbBl5bsg$W:#F!tmfK+t*oIVn6K\t%fL!;1*iXZU0mh:si!hY%57kLa1PRN+ +h=0P=9.+HeuE[RgI=mp))X\i$&AK^LreGk9a+P3fg8FOD,OG(km9+O;;EVfrt**V +!9QBUUb=+,=_]Kd0__8N\c?b.qg+>_!.+#Mi^7Vut\NY9:M::#PD[`&AL<8)h^=X ++Z=hb6];ZALeHC\]3&!%Cj:[5..).Dkc.ThD0Ql?Sk[6X>38Bl(]$)[R+Mc#DV"p +O7&'85Wq<9U@CF<2i?beij>=qL*&F4>Ts!?W&`siFZ@E/;.s.(`*NPpoj)C$k=mr +h0$=Y76t)IFldi`08)cU+%bZ*4D&*;<)s5`>-'%W)`X)hj5;14?&J-\,rQ5-68u? +`80s(m0c2Rc=2Wj>Kg3AZt>j&"`d_,;:9X+%6V;l?\M.X8T#iV)gP'79?2QFV^!. +YpUF6l'U4r07TVUJU4k3EZT1gIi?8M])]N"5"kZ1q-#Y>JUliQ//H\F@51D0;[DF ++#5=kDrK3id:>H9T(0F?8i?h8\u'uMEEtt6iR,l=,&h+k1ot:CE6.eRcN6aArWsP +7PY:ic)2EChlQm)r>"B,l&abHDoUMTZJ>H[B^*+1gK@:\%Lp.hXo]$i%-K`n%P$( +gNLm&Lpl197;otn@`iV.oWB:K'`]`7r)CZr%K=I&-^cYEuWmOrj'V9*D#O%Kj&i? +pf@0=UrSg%2$VchbM2u;39JPi&0r59#8I;./ERXN/QfdF&5QJ6\ +7-/hm!`0*mD0q=DJl>#,h!D6'.9UAU^6;9Mgmun].=p6YlULQ0L%tq=i!;K)B4^. +OeCY-1e.:QG^Q&W=FeNR"ojR!0s(!onrMfSMM$YJqLFCS_eaLd^E+"8GEc6r_f(@ +^-Fn6A=#d)\,XE[YL-kX".T]MZcY6Lh*EbI*Ie<0!=jd^e\9&^((hZILP%&PY.MV +6nW@11Fn,NYt[n!49A.I77MRe0f/H=m:+!:>":_nX*s">cK4EApfa.)c-^ZFR'lZ +jGjTuG`kK$lB*QN:qJt8%R;!7l,=gpC^dc#Rk&D4eTT]VPduHW(dj@K@u`%h'ELh +\7agYlA\GM#CuDmk5%O1KWpcOi?nuIrYd95@4)""(80_O,'#k!R"1SmsJ90"aH)h +WU"b3aZLhDM0OEjn9bqaQSCk]Hd)!%:aW2J&8];t/aXu+lnD^-)lM',i]IZ-`b?( +uioJd?4$81ih](h4L_37KFVoDih[8gp>6MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!M +C>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,! +MC>,!MC>,!MC>,.3q9o-4rTd4\8`:PW9Q8W"jc"^Gj_7Yrr@I:]=tP\mp0:Tm:I, +tC3PfIGM88ZU-rn(-8?Kin.YjEp5:!b=3!5gguoODcOrjBg:D7Wl]KHQ+T@%T`k" +bB.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.& +)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!.&)S!. +&)S!kPSpYkZ6c+!7c2N8cJdofP@.YDQRdED4]JLhCFC-(jMlBlGMBu%:]>;_CV"& +2MnBhBmAkL5FZT`nt.'qZ>H6EJr8ajhr64LMsW,;8g437/bIZIrr>t+LQB:(qc0[ +-''VHBa4Xn5&`."Edbu)^JG&Kg#04G45T8-L70"$!70"$!70"$!70"$!70"$!70" +$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70"$!70 +"$!70"$!70"$!70"$!<9D_ImI+*$8P$@.Qp?UO]Wb^p+2I'l.6Rh7>b\R-2;L%>> +-u]?]2[94eXdV$P#q]U3Q;:keFSVMC8J)\,'ZjX)I][6I+HU*9Ul&LB.10oKMq_ZLs7il$90,jgm^pQ4@#nH-(4L8CX/R_k`I/7>t:riP +"*GgED!ucMk`3FT-BAEaosND5etp:VlTI+&^AUTFQR2kPkP@+MY/@=jZSG;: +amFS%-3Z!^ZhdHsh9OVOac%g:Sb<3qhFp']G!K#24J2m!Xin>b[*(!2>?!!2>?!! +2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?! +!2>?!!2>?!!2>?!!3GM"#>;e\@FQp2UR(<\L,iHu?%eL@M`9g&1le9WOgBcZ3&mQ +A*n7(;p!hRj8#L$eQVSXgEbSU;aUgjteVH1cE9'%NZ3'S:Ffp7$rrBo?j*N2Voiq +35Mld"5eiQNjLpIt<#qBs$#FljQ4Y^6uQ'JeKAIY3#.1Np>&ie6G-l#NQnEuF7bo +F/-&R2neQk6-D=Nd$\4gu&;"4++:jj^L3$ubU<-_;jE6JTj=*]A!SS>o?43?\AM^ +H&CjooBdDBp8=H.'KDU9@j5ZF_IMUN%CefQ\;RC?u71e`16"eH@=+ooP;WP/Zpqo +A;1JH\VWlSP-JUM4UE[sSO3;enGJ`ceQYYT2hjUQHlOtqUQs-QgjS0n,6m7W5@?.9N*Um6m7?DCJK`ekPkOg2=3Jr2cs;:LJ*%m14G-:!5n*Ek)] +:/T$*+38\EOBeoY9+>Q&cC8rn0rY(DN2Y@W,pW7roKNRSau2r0c;"0)2g'k4H:Hn +V;PgpQ%mNOA(p]!INlPl4_j/3TIIg8k19`4BkF\+\O_,Q:hQVire4rJYSX6Qb>R* +HH=o`sb +;*Y]L>c!^MpJM2E$uI3ml9H6InuN49IpTapL?:,t'-,*!/oTbT"Cu\X?$lQ>m8*_ +p-3!tl%2ocTMqVhBH:@i6TF(\Frn$ZVrm]X0DZF`!:kS'n?.A#!9a +@^[JWJn!(+I":WNGKIr"h;re5k"T9&n#TV?rsrrDG9&V&02rrA8Qrr@`pgAW;r!2 +3d"!%6h,!".p)Jr0QkrrBJ)7K3?S^]%$LrY0itpl#-*J,Gq"r%"G7 +J3!W0m=,^td'*HLPO\YQKcf%J,6%Y:?iL*Rj8T)dkU<)6J,lK!9F'-iCEU +VLqi.TrrC19rrBpI$7H"Krn$ZVrm]X0DZF`!:kS'n?.A#!9WIrFo- +N2-^2FQA85DTIigp2HWK6^g1hOK[HqYNQOtLCXjdOTN;dr@XoAADC[_,oPQ(VK2. ++7.ng`lGp#Q_`J1(LtMC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!M +C>,!MC>,!MC>,!MC>,!MC>,"W55Pq]HsDBT&R_#ddEXnBsd[uS]B9FI#`^5;d5J_ +#=#]9qJY2:4_=`JrrCHL1%cDS5Cs5aIP0)ZO^ZbjI3Nho$)jbfV"tAu0sUFQ-F]t +[7Ztd=aGT3!"^#:ImO/1*]^\IPX'>@_8@,s#0=:Uh'?-P^A'X&u3Pcr6r$u8CrrA +1.9`G*r8AFct?;R6s/bCJFp%7bplJ='j8k#O)!Z\0c2Z2GUjC?WO?U=\lOaBe%!3 +\r.oDq2pqM1'C5GdXDC"HFh[r;L+`g5&pZZ+"-.Anm4&=uE^ptm29,pk6@;5lMg0(qQQ^1hWIA@]O-4[?/,89keWf@N57BY?XEj)R +9h/06mbqhQ95?R_$@,'!'?8F`S@3M'5TTQ^j3J0MRZ)QAS#L]-;?Bi\M&/,h4L0O +b=%?Bh9)+KR5PE=49AAh/7@\BKm`=_)LrM7IpK?]U&P,>"TW:772,`!72,`!72,`!72,`!72,`!72,`!72,`!72,`!72,`!7 +2,`!72,`!72,`!72,`!72,`!72,`!72,cpYCFX,WW)tMUqca,UI"n[OaBe%!3\r. +oDqFprr=8:VuHa'P5bOG#)rle7I;o1]d!IVcijDBDl-[kl5,fV^_5r(BA+WQq=Y4 +M*Y&nO[kY?mTL-.)Z4<7L(0@3R)5C?$BQeGfO7dU2q +Qd@gL>aM"I#f;)dM!2Em#!0MV,rrB5oJ+Nh4KDtoqp6kp\?BKa$!e<:X%6DhR5!8 +?clSb('LJMS8XWY,>,/Y?f*3`[$oG8:K0hl;mWCAL)i#ZB +ANQ"C=qr(= +OM((u@ooshDVR2RqriXNM7.\Ke`!2#U@.quA;G4>uefm/%pQAoPo,A+ +rq21O3Y.gJufU1,`;$`44p^)nT=jVREWl5ZQ--r$N-`DmD&f< +!K2$Y:D-dalWRtV48hZEP1qp=p;H)"Z^Eq;fk*LOnqQ=gHDN!Gk.1!RY:\n%XGD! +l(f\2D`?K5g!A["!Fb.Y8#Fp-B8tH?qq_d9#J#H"iFZaj\l39ZjDia='_X%WBiHF +7F_9F.m7@`As9De&0bI`V5VO$@3)R8iTHti_]:nZu2)*'h+#:45jl@'\\nNGZo&D +TDI+o<5d/L51r1;l,5XBCc@n:@/lo3EGlHpajhl]^S";Fu:S/c>D4NghVl(bc.P< +u<\Rd^Ae2:GsCp7+QOF@.&*s74A--lV0-2 +MS^$97(/&rhgaVh0SWdgLou`^'gnKq%FCpLOoGEg-X<50fJj!&X`*u$oM=m^J)JK4rrA'Vi/d[J +/:[&bretU@eMV+O(?H>lOfob!4h +md6G0irr@[%TDgiOZu6WArZGp=9t_1_#R3hf)EAKQKVO(M5.JRI:^95b!!lnfrQF +[-)-m1An]F)T$dh2LIK';"/"cf$>.S=DB<5h;?g70=m:FSb!$aHK*Y1D"U;p3=eG +dqj3Q/[ESZSd),@l^lbKm%S!+gYs(SZD"qu6X#=$QV'O8)'6:[VS>i6(6_!01,H> +dgEt+2W=mr74s'Y_M-Ro%a]eS2[<3i;ODkBDrIU'Dn-RpbKD[!99;n_AAqrEr5k: +#$4%eEi%0r?_M^rE<_h[-]k)o'ZB7$;?8"]*=ED'[%C1&O&:g2BntF(NMT0r,j\D +0A*>\`F4W5LOoGCe?A\X(n,+&.rrDT35N*!t5Il4B!.ueor]+#eT+^Ae+#'joGTi +5X9Q;O=No4Cm.KXQE3QHHPV/#jU[ph!IgSD?0Z!GQ'=EO`f62!Ff#&!iWH7/G?^[ +PfUrrC(frr@^*7/lrZpuQD<1fj+f1t!Xh7]"qsJ5oE$8LL/G"jWlWBr4J$9 +e[?&`TK(N()nuun]Bh>J22W5$dh2LIK';"/"cf$8,ONV-hf:/n7?\@!66TMIO]Ro +T4$6$DE.MMg#o:&=(=K8rrDs?H7/G?^[PfUrrC(frr@^*7/lrZpuQT3:^95 +b!!lnfrQF[-)-m1An]F)T$dh2LIK';"/"cf$f2Y'UrrDs?H7/G?^[PfUrrC(frr@^*7/lrZpuQT3:^7H1G[F.Rf5 +qCFNV^V8E@OYsg,C*5&A%u;rBNT$D#XLP(SZD"qu6X#=$QV'NH>(g?OVG9gu%s(- +$0h%ci4!^(SZD"qu6X#=$QV'O8)'6:[VS>i6(6_!01,H70%E/!:Y^+TA70\!5XrH +rr=%6rXcaVqj6481:dDbj-@tg5TKe(r#pA6pFj;NATRkOa"&CR4ohn'n?/a)VT!Z +/dp"ju,h-HW]T+`baN)lDH7/m5Hp@*Ee&/aseuc&h10nWKgIUkRC@*!XYu`"4 +H:-\/`^$hPE$J:GUF@U]kL>B4&cWYS.;IJR.*Hm8KTCTFWeCYG(27G=]6EJsq<3`@93Jge:1i/Ju$2C\\]l&Wi74S&8lEVrbpDtm +$JbS=6o`V.Epq0B%`pUMWl\AWIo*eHjQGi=p,G>RlD?PQ3Li##7oTciVT` +'ED!!'ED!!'ED!!'ED!!'EM!1rrA-b7KQh(gZ]oWtQR)UiaE1k.A;__R_(U[j'8:1N^5VH'tOD=.bbGa +X)3pB,oHK56Q4S`d:j]YWcp!LUME:Oj#'P0SPn]>S8rT&#U*BkM@/ +=hJGam3DKEQjaV'QR4L"69b.f:3tuI;e"8L.smc102>0aC-F)\=dmUqN`)hnD2Ra +H;GK7*M$=b#Y_>?XdYVeC%m(8#I*$"(oARG$Fdl'?K=R,A"eWNUF09grGo\ +4!%tP2\/e)e;=$DESF/F5AcA@bOV7&QN"9LAcKAiamc/FX;0/csQCkmD?\[`Tt +I0OXRJ>fPs-_b>EhF.U.iHZN/E77GN4H\Q]Kq+@9"S&"'=7j`qdmql\Yd'#'CBu+ +@0$Ua9:KAb8TFQ0ArrA4aY5\LS.a.hl7Sd,F=#uWH!/GqjicWlAD!pr=Mm^%'7Ss +;(!tZ)9cOO/t,kLVd@uBmqo]o&U3OKQS$b>7fA="YpLfgUr:('#D=dNG)cnBMH^: +;XWk)n4d=3PY(Y.Y_5#@j>1/.Y$3*6ji)]MIN-I;UpsrAklgXX/]0Bsr9r,U&()+ +#(bu*]iA.FZpDf/iCBLBf_g5JN_8`8E:0`,^nY8=OWi/Fl@L5OLNTH.aQY4qk+Lccm3?l:nC +\eM!8o^V)J`BF(\$S%"kjp?:9!(F4kY(+O9iK*j4S,WI[jK=)b3WB*S9_=VM!*pYFDL;3Uj6E1$tK$tkhLV2ZeN:p'eEL84f60YjLdCo)\_P&!9`3h2 +sS*TotHil?!lF%bA14OBjVb3M?tXP5\hJ@&A8s2eI=k&g>>l?Lk"HJ$H)D#KW^f\ +]"C()UTNd/qR_OdQ/ILiJl5/D3$3r:U'?\Iq3+`F&;8M>RV.nT>>3 +]-c?Dqi7"etM%s@`Vo=$sJ@>Tl0!Ub*e6AW=6=<*B+)HH +=%-VK?DSR>AjpTM;c4Z\%K3!RQ$3R45W[(?9%-UPV6u[]f!?<@ +L=-E"!$lSJ#j8*C?i,=Gqf&kXC1fIiAD.cSo6,D51Q5it-_Y@do_BDY8p +QGjMhT36`^b7cA?)V![K,ZtC@"9Qa7a4\*DUSe-IKFhH5s.;..p$lNT=)5Un/7bS ++EU4>>+h+#jg=;pU9&>!FAN0$g!*8st[;c]s@c+V])iQho,Nq6MgRca3BZBe^/,[ +Vf4R""E6&!WtcK:eCk1maZ/M)>h2buWa!mH"i>FfiOg.nPj +([W"sb468a%"Gnp@!_f/!P(W5:]X!!:]X!!:]X!!:]X!!:^'!dr]o)mp$X:-Jni& +T^Z8DC5O6H6r;]iW>Q-n>ht?Fcrdnn"L;2eLdQd'?+8l19#,N#25TKe(Jj8m?WrrA1.9`G*r8AFct5SUVU#A>%;o%r9giU55SH1 +=Ms3F>+o^le;l4ZcEFdVNBuYdTSKg*)-00n;D_\L3PeeZ(#!L9%(`g>"ALWEQ.BE +(mUXYFGi&i:5Eui:5&bFf/DLgfdKn#a/CP9[GL>CiZ@nq(WlceZ(#"!-g$3bBtrI +R\EfP>bD]n`0;rmlC$A-8BDt_o:4mihKUiop\KQ0f/drbd^m*/b]+WH^N@+rluFd +Dn3&:JM?(WG4=?k=2eM@ObC%Nc3?9Djr6u^?IACd$Sf8o<>4G$$&>V#"Z,IW86pZ +?rDu^!5VpRa5'N%+!'N%+!'N%+!'N%+!'N%+0ol'X.?[p\?TDAkorYke:O]P*R!3 +[f#oDquMDtsKBJ(M?*q?a2$)ZKf"=%N>kY:+nm!C.Qf;+1I!;+1I!;+1I!;+1I!; ++1I?8YUuYRjocFL"sISi1<.5:Z-!$eu>S"g+D.:rN3c>j)!/fW/[B<(n=T3G7Gn,(B2J!iSH"qL1W"HZSiVEM$?=$aTM=*$KJOt&F*=X:Q"d;S*BCDS&=gR76 +T4nCuc%gKEWN>U_%U.`6\anDI'l`%Cj])`[R!F(!HtH&u;bQToqt!19`nI,H.asD +Y;g$rr>`seFa)#U"*P=2Fdb.m*[.Jr`00i63@^Ck]>IgSIrCk(p#U](gC$\-M-a8Z#EkB),Z<&!!0kjVcaUTOKi +=-d(AD32P<#l[icNn0%PaQQ?.l$b4onC=,,"lZ_=;q*ouFW.[;j_`rW("nLf/'n= +54,6E.m_@]bn@/>rCk(p#U](gC$\-M-a8Z#EkH01WaSL&Gc7CUJ!4+25dPNRdS0ft&WH"/hiSF'>P\dXZ`H(YY6rX`uUJ'\D?rr!0gi_%"6;@@?^]FH!,_bQ0.25POA=rr<<`KtlgRA,c +OXKk/n^Y?b7PI8a%JZ&_N-jb>1XL/r$UbeNGdPOc1Z%P`q:`H+T^4p6MYS*"R4h5 +oaLS^-;3NJ8Ec"Z@C5H=V?K#C$1J#WIIPkQ>>p!.KVDn:PsirdZmkpZP[E70%E/! +:YVc>Q0.25POA=rr<<`KtlgRA,cOXKle#*#&U4>7di,'k=*d\Zcn`HEb\WZogc-&e6'Rfc7N!o\?#'f4YF*I +pb]6i4LYOsEVmqc?,SlqpqZqNd$!C0O;`W5:FP?h0&!RKEn6H[UD/nDT.]Qdn!/O +e1*`NhE*-NfM3)k/F1N786nCBuN!f^(9!)[WnK;.gWg[&PBr7n%jK!#/:!!#/:!!#/:!!#/:!!#/:! +!#/:!!#/:!!#/:!!#/:!!#8./Z$fP?]s*OWm-Sj%_rh3Y;fKPqA93B)BV5bS:W&5 +N`J*H:Ge.bRN(jFk@ImuB>8`Ea+H_pe0Lc>LR!]&h]s3kdDI;dBe7@'<^1\5JGn; +3o9]2T^i":u'GiuH.J2")f5TKG[PZ+[0p5:',j)(?Sd +J1V8(.&(e0MR$/be#&ApD+,\NXK7\`4)pp\TJBO_ibNNud$!noUrKTnI +4BlM+<`rhtP-Pb(W5TGcmK.`Ab0%0>rH^uZ[R3f8Lq_Ft#a8W/3+?qPd3\':p3M^ +!aa9l%!CHq_Al#n]2:CmN\KDC',RH?[4!&cau[VN(@J-m^!J-m^!J-m^!J-m^!J- +m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J +-m^!J-q<^$s)r?\B5t'T4(Vs=";O31+:=$0E^2H!Ts+42Xrn9(=TohH?:%l/qaXL +Xi-'8I+D+/$"=8Oh(d2:=%s3_dN*\Qf(tTbgM-LFgG6un$1e_5h9RH.!!1ssRe*Q +j$cW,G#Z[1]A`-eI0,-on)CDC+NXmUY#%]QFh10NlAG#=pg:rDcWI.:?C,"@53^n +OphBHpRCIh9Y'm%AaEWPS3!-ZpW.a^*ZmbSo@T4:YPj_c;f)C-GebcUsSJ9f-o23 +"^4qSGH+C:DnRkr%k!\@>(I@$3[q8-+=H;TmBdj/4bkiXI,3nX[[rI:oD&CDuGHe +i<-J7+X1#dSd\uOLRWfC^e&uACZ_UbGb3:5h2O5nC?;Gp'6OPFUFqa6KggWN1@$O +,kT.uBEPf+;mVrmT1t2^pNGc+9T#YA@D;0iMuni)`fG_NeFRKeWIQQ#l +(B772K]o#>)Wuk,5.km]tX4d]pKo^2OIG@u1h!r[6#8]7Z-o93. +5M9)+X>_W^iUop]Xp!+ju!)S$K+`NXC#Yl-uj4F"&/Z&;kkejc-CWbL$np+(jg)V +S:gi#JrX)d,^?P'UW?CZ"p%7FJ"D?JZbe@M;?V\!Bl0TAj^FFq296**4GgB\L4Wl +o\4K5*\",f/b^%\p]g%VIs8(fpjK@$SbH^F7SqRS#b7YP3RA$Rp'Rk*Q>[*A2MBd +=QfY0"OAeAJIR`n7MKj4cj+-3ilr!.q_5Oo"PgoX`$(-&-852Y63Do(mi2jaK&al +m)n)uX^6_boZebpFm'4/?FtctN!$pKbgY\[,>Jn>X!5j#Hd^G9ZIk:FBNO4f%R/H +8Q,?J0RXM\d-,jso^2$\_LDJikO:&L!V:<.niU%iWin!j#o&d@]VcAIAns"Yl2Uslj" +EJb]Xp;mkGDJ+.42bI=(_LL@\Y1^\@3M%. +1>0j[;6bg,8RM.l/_rr=i1,6Q!Rb(pY=-nu1T/p`XLC8072m'pMPgW?Lt^c#eOce +[[_&GNM$n&7"uA&OMDUm`H/N=^=VP!&P/VH4rr?$<."D +Qm;u'FqH7Q*Z`S,6d'2Q-f/Rl)UdR`be4HL@i@3VmQ%aCmkngFRSLqIeI#D_\"F? +>;UHeYs9N`WZT3An`%NN1c(-2Ue=!57nS[JF(82oQ,[e@U6M$.r@?g#ngg4DFbk1aG+^]1jd26 +IM7\8L9B>i3UG,ns:@dIh$H`(Nc8^Bj0?2p@^ETf+8+"@@@KGO]A`?[F?09*c[(I +QhI_"1?n*Qqcm""Y7UmXN(=@?7T>C2.uEblNhF*I]@k.E"*ej(!;N@%1(jbt:/o?sX)j-r2)`Hk"=V96*[G6IM2AV*J."UIthE#DT?k6 +)cDCS(& +r$Ei7a'.DC%0KIKiVbh2e&8tLSNJPd>[0b +,;#*KI7_qZ88E!&u4H\3mD(et/!QEu(m#/9d=]RGpM.ZO +Fa#re5n`U2,[dXIe<=3;%^W:,B%%\s^9TKgRN4P%\Tk_t30m-_&#>QQ#juD%sQ]p_$2f@J@&7$5Pe,`'_V+EGMm[RY*#]P"3Ll/!)BimLbB +4H`&BSi4'>,`trrSj#uhrY,C;FW3WH/sp5mChQPYM[(R__+SF=;?u5_X3EL--LdX +bmr*(9$b]#34?%J(**8;[*Ecp3p#,3b\$DGr?f2lM56RhAMK,Y&t$dHj!@Jgo&PgE"/MZK-ig!!-ig!!-ig!!-ig! +!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig +!!-ig!!-ig!!-j#F.UY'?_bAVk8RY]rk+k[_MFCf#,Pk')&Ffb?,B8>QRK$`.e80 +quFOX?2:%`8_3BOKn`eMI!mWO''^6s>GXb+7"n07'h,=qD-1%RI>a,Z\[gD!LM&C'.:&)8b@QGBu_ +U@JlkncE=HFtqg>>iakL3NJGe*n%F+D<8(0=C0k>g;H?5gC[i4Gs7l>.%gpRpbTh +^3fKEsC!+mt.a9@S30$KG__bcfA&./X>5+>+g4c'JQZ,GX[)c-9Ug0t"l3O,A!6i +o>.ACN8/TYW;M:s;1V3Y2JN+An999MpFUB@1VeC-8##A>#=m!!V6G`GmkQ6"DcX< +G02eVOU)p-@Yq.%h"WD'm9O;SCRsm?TiGh4JAF':C`e/q/H$W(Z(i%UD-@^tEOUb +i9c:U@?D4]34C>1ge=`pj`:LijlOc;-Qo\Z>R= +QXcdmV3[`iQM0N6#eB#[P"@d!:F)N+'MntU.&)5!.&)5!.&)5Vs4I~> +%%EOF diff --git a/abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png b/abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png new file mode 100644 index 0000000..a01ae3d Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/BlockDiagramofavideocapturedevice.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png b/abs/core/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png new file mode 100644 index 0000000..013856e Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/Card1 HDTV Card2 Cable.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png b/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png new file mode 100644 index 0000000..344095a Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1-TDS.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png b/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png new file mode 100644 index 0000000..3dfb909 Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri -1.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png b/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png new file mode 100644 index 0000000..7eb25aa Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/Card1 Pri 0 Card2 Pri 0.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/Makefile b/abs/core/local-website/htdocs/mythtv-doc/Makefile new file mode 100644 index 0000000..0368fd2 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/Makefile @@ -0,0 +1,42 @@ +# To build this stuff, you need the linuxdoc tools and htmldoc. On Debian, +# this means: linuxdoc-tools linuxdoc-tools-text htmldoc +# +# - mdz + +TARGETS = mythtv-HOWTO.txt mythtv-HOWTO.html mythtv-HOWTO-singlehtml.html mythtv-HOWTO.pdf index.html +LINUXDOC_HTML_SPLIT := 1 + +all: $(TARGETS) +clean: + rm -f $(TARGETS) $(patsubst %.html,%-[0-9]*.html,$(filter %.html,$(TARGETS))) + rm -Rf doxygen-dev-docs doxygen-warnings.txt + +distclean: clean + +validate: mythtv-HOWTO.sgml + linuxdoc -B check $< + +%.txt: %.sgml + linuxdoc -B txt $< + +# Generate PDF via LaTeX using linuxdoc +#%.pdf: %.sgml +# linuxdoc -B latex -o pdf $< + +# Generate PDF via HTML using htmldoc +%.pdf: %-singlehtml.html + # htmldoc exits unsuccessfully for no good reason -mdz + htmldoc --book --quiet --outfile $@ $< || true + +%.html: %.sgml + linuxdoc -B html --split=$(LINUXDOC_HTML_SPLIT) --toc=2 $< + +%-singlehtml.html: LINUXDOC_HTML_SPLIT=0 +%-singlehtml.sgml: %.sgml + cp $< $@ + +index.html: mythtv-HOWTO.html + cp $< $@ + +devdocs: + doxygen doxygen-create-developer-docs.cfg diff --git a/abs/core/local-website/htdocs/mythtv-doc/add.eps b/abs/core/local-website/htdocs/mythtv-doc/add.eps new file mode 100644 index 0000000..5a6bfb7 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/add.eps @@ -0,0 +1,27 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%BoundingBox: 0 0 16 16 +% +% created by bmeps 1.2.7 (SCCS=1.78) +% +/pstr + 16 string +def +/inputf + currentfile + /ASCII85Decode filter + /RunLengthDecode filter +def +gsave +0 16 translate +16 16 scale +16 16 8 [16 0 0 -16 0 0] +{ inputf pstr readstring pop } +image +mJdF^dB'"3UWN!$rs@Ya]@u6"bb(3Qr;R/`V9S;S_naFJWJB%'s"j5Gb3-LGZ+7BO +cCTm[s8UHNjM8:-s8T6tVp'V$s8T.Cb-.n=s8S.NR^fMRs8S\=\ubf/$(%F'EW?'- +b-A#Es"g"7_/95PU:%M-SrE^LQ^=,IVgACCaGnB:S=T][Q^*rZDQs0@n!'EcSXPn1 +Q'fUPEU!K&$eL*#ag@\2[)e8?b5D8Ge:i1K]tC4YDp%qV#OK!PEGg',kjAB +~> +grestore +currentdict /inputf undef +currentdict /pstr undef diff --git a/abs/core/local-website/htdocs/mythtv-doc/add.png b/abs/core/local-website/htdocs/mythtv-doc/add.png new file mode 100644 index 0000000..6332fef Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/add.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp b/abs/core/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp new file mode 100644 index 0000000..16ad56d --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/doxygen-architecture-document.cpp @@ -0,0 +1,787 @@ +/** +\mainpage MythTV Architecture + +\section intro Introduction + +Over the last couple years %MythTV has grown into a rather large +application. The purpose of these pages is to provide a portal +into the code for developers to get their heads around it. +This is intended for both those new to %MythTV and experienced +with it to get familiar with different aspects of the code base. + +If you are just looking for the code formatting standards, +see the official %MythTV wiki article + +coding standards. If you are looking for the +bug tracker, +it can be found on the official pages. +If you haven't already, you should subscribe to +the +developer mailing list and the SVN commits mailing list + +If you just stumbled onto the developer pages +by accident, maybe you want to go to the official +%MythTV +Installation page. There is also a good unofficial +Fedora %MythTV installation page, +and a +Gentoo %MythTV installation page. + +If you are new to Qt programming it is essential that you keep in mind +that almost all Qt objects are not thread-safe, including QString. +Almost all Qt container objects, including QString, make shallow copies +on assignment, the two copies of the object must only be used in one +thread unless you use a lock on the object. You can use the +QDeepCopy +template on most Qt containers to make a copy you can use in another +thread. + +There are also special dangers when +\ref qobject_dangers "using QObject" outside the Qt event thread. + +The is also short HOWTO on \ref profiling_mythtv available in addition +to documentation on the code itself. + +\section libs Libraries + +%MythTV is divided up into eleven libraries: +
+
libmyth
Core %MythTV library. Used by the Plugins. + The \ref database_subsystem "database", + \ref audio_subsystem "audio", + \ref lcd_subsystem "LCD", + \ref osd_subsystem "OSD", + \ref lirc_subsystem "LIRC", and the + \ref myth_network_protocol "myth network protocol" are supported by libmyth. +
libmythtv
%MythTV %TV functionality library. + The + \ref recorder_subsystem "recorders", \ref video_subsystem "video" and + \ref av_player_subsystem "A/V players" are supported by libmythtv. +
libmythui
Main user interface rendering library +
libavcodec/libavformat/libavutil +
This is the ffmpeg A/V decoding library (aka avlib). + Documented Externally. +
libmythmpeg2
Alternate MPEG-1/2 A/V decoding library. + External Website. +
libmythsamplerate
Audio resampling library + Documented Externally. + We use this to support a different output sample rates than the sample + rate used in the audio streams we play. +
libmythsoundtouch
Pitch preserving audio resampling library. + External Website. + We use this for the time-stretch feature. +
libmythdvdnav +
Used for navigating DVD menus when using the internal player +
libmythfreemheg
UK interactive %TV viewer +
libmythlivemedia
Support for the FreeBox recorder device +
libmythupnp
Initial uPnP (universal Plug and Play) support +
+Two libraries libmythmpeg2 and libmythsamplerate appear redundant, but +libmpeg2 decodes MPEG-2 more quickly than ffmpeg on some systems, and +libmythsamplerate resamples audio with better quality when we only need +to match the hardware sample rate to the A/V streams audio sample rate. + +\section db Database Schema +The database schema is documented here \ref db_schema. + +\section apps Applications +%MythTV contains 14 applications: + +
+
mythbackend
This is the backend which runs the recorders. +
mythfrontend +
This is the frontend which is the main application + for viewing programs and using the %MythTV plugins. +
mythtv-setup
This is the program which sets up the database + to use a machine as a backend server. +
mythtv
This was an "External Player" used to play videos + from within mythfrontend. Setting the player command + to "internal" does the same thing now. This is handy + for testing the audio and videoout code, though. +
mythtvosd +
This is used externally by programs that want to pop-up an + on screen display in %MythTV while one is watching a recording. +
mythfilldatabase +
This is used both internally and externally to fetch program listings. + Tribune Media provides + listings in exchange for demographic information in the USA, + and Australia uses a + + community-driven TV guide originally developed for OzTiVo. + Other markets are served by the + XMLTV + web spiders. +
mythtranscode
This is used both internally and externally to + transcode videos from one format to another. + This is used to shrink HDTV programs to lower + quality recordings that match the hardware the + user has. +
mythjobqueue
This is used internally by mythfrontend to schedule + jobs such as commercial flagging and transcoding. +
mythcommflag
This is used internally by mythfrontend to flag + commercials. +
mythepg
This is used internally by mythfrontend to find + upcoming programs to record based on the channel + and time. +
mythprogfind
This is used internally by mythfrontend to find + programs to record based on the first letter of + the program name. +
mythuitest
This is a test program for libmythui development. +
mythlcdserver
This is an interface between a number of Myth + clients and a small text display (LCDProc server). +
mythwelcome/mythshutdown +
These programs manage Power Saving (shutdown/wakeup) on your Myth PCs. +
+ +\section fe_plugins Frontend Plugins +
+
mytharchive
Creates themed Video DVDs from recordings + (and other video files). +
mythbrowser
Provides a simple web browser. +
mythcontrols
Editor for Myth Key bindings, \e et \e c. +
mythflix
+
mythgallery
A simple picture viewer for your %TV. +
mythgame
Launches the xmame classic game system emulator. +
mythmovies
+
mythmusic
A simple music player for your %TV. +
mythnews
Browses RSS news feeds. +
mythphone
SIP based video phone. +
mythvideo
Launch DVD players, and a Video Browser for other files + (non-%MythTV recordings). +
mythweather
Presents your local weather report. +
mythzoneminder
+
+ +\section be_plugins Backend Plugins +
+
mythweb
Provides a PHP based web pages to control mythbackend. +
+ +\section spt_scripts Support Scripts +These tools are in the contrib directory of the source tree: +
+
osx-packager.pl
Downloads and builds all dependencies, then the + source, of %MythTV and all the official plugins, + on Mac OS 10.3 thru 10.5 +
win32-packager.pl
Similar tool for Windows XP +
+ */ + +/** \defgroup database_subsystem Database Subsystem + \todo No one is working on documenting the database subsystem. + +There are a few classes that deal directly with the database: +MythContext, MSqlDatabase, DBStorage, MDBManager, SimpleDBStorage. + +And one function UpgradeTVDatabaseSchema() located in dbcheck.cpp. + +MythTV's Configurable widgets also do save and restore their values +from the database automagically when used in %MythTV's window classes. + */ + +/** \defgroup audio_subsystem Audio Subsystem + \todo Ed W will be documenting the audio subsystem. + */ + +/** \defgroup lcd_subsystem LCD Subsystem + \todo No one is working on documenting the LCD Subsystem + */ + +/** \defgroup osd_subsystem OSD Subsystem + \todo No one is working on documenting the OSD Subsystem + */ + +/** \defgroup lirc_subsystem LIRC Subsystem + \todo No one is working on documenting the LIRC Subsystem + */ + +/** \defgroup video_subsystem Video Subsystem + \todo No one is working on documenting the video subsystem + */ + +/** \defgroup recorder_subsystem Recorder Subsystem +This line is filler that is ignored by Doxygen. + +TVRec is the main class for handling recording. +It is passed a ProgramInfo for the current and next recordings, +and in turn creates three main worker classes: +
+
RecorderBase
Recordings from device into RingBuffer. +
ChannelBase
Changes the channel and other recording device attributes. Optional. +
RingBuffer
Handles A/V file I/O, including streaming. +
+ +%TVRec also presents the public face of a recordings to the +\ref myth_network_protocol, and hence the rest of %MythTV. This +means that any call to the %RecorderBase, %RingBuffer, or +%ChannelBase is marshalled via methods in the %TVRec. + +RecorderBase contains classes for recording %MythTV's +specialized Nuppel Video files, as well as classes for +handling various hardware encoding devices such as MPEG2, +HDTV, DVB and Firewire recorders. +ChannelBase meanwhile only contains three subclasses, %Channel +for handling v4l and v4l2 devices, and %DVBChannel and +%FirewireChannel, for handling DVB and Firewire respectively. +Other channel changing hardware use ChannelBase's external +channel changing program support. +Finally, RingBuffer does all reading and writing of A/V files +for both TV (playback) and %TVRec, including streaming +over network connections to the frontend's %RingBuffer. + +%TVRec has four active states, the first three of which +correspond to the same states in %TV: kState_WatchingLiveTV, +kState_WatchingPreRecorded, kState_WatchingRecording, and +kState_RecordingOnly. +When watching "Live TV" the recorder records whatever the +frontend requests and streams it out using the %RingBuffer, +this may be to disk or over the network. +When watching pre-recorded programs %TVRec simply streams a +file on disk out using the %RingBuffer. +When just watching a recording, %TVRec continues a recording +started as recording-only while simultaneously streaming out +using the %RingBuffer. +Finally, when in the recording-only mode the recording +is only saved to disk using %RingBuffer and no streaming +to the frontend is performed. + +%TVRec also has three additional states: kState_Error, +kState_None, kState_ChangingState. The error state allows +%MythTV to know when something has gone wrong. The null or +none state means the recorder is not doing anything and +is ready for commands. Finally, the "ChangingState" state +tells us that a state change request is pending, so other +state changing commands should not be issued. + +\todo Check if the TVRec is actually still passed a ProgramInfo for the current and next recordings + +\todo Document the massive changes Daniel has made in the Vid and MultiRec branches + */ + +/** \defgroup av_player_subsystem A/V Player Subsystem +This line is filler that is ignored by Doxygen. + +TV is the main class for handling playback. +It instantiates several important classes: +
+
NuppelVideoPlayer
Decodes audio and video from the RingBuffer, then plays and displays them, resp. +
RemoteEncoder
Communicates with TVRec on the backend. +
OSD
Creates on-screen-display for NuppelVideoPlayer to display. +
RingBuffer
Handles A/V file I/O, including streaming. +
+ +NuppelVideoPlayer is a bit of a misnomer. This class plays all video formats +that %MythTV can handle. It creates AudioOutput to handle the audio, a FilterChain +to perform post-processing on the video, a DecoderBase class to do the actual +video decoding, and a VideoOutput class to do the actual video output. See +that class for more on what it does. + +%TV has three active states that correspond to the same states in TVRec: +kState_WatchingLiveTV, kState_WatchingPreRecorded, kState_WatchingRecording. +When watching "LiveTV" the %TVRec via RemoteEncoder responds to channel +changing and other commands from %TV while streaming the recording to +%TV's %RingBuffer. +When watching a pre-recorded stream, a recording is streamed from TVRec's +%RingBuffer to %TV's %RingBuffer, but no channel changing commands can be +sent to TVRec. +When watching an 'in-progress' recording things work pretty much as when +watching a pre-recorded stream, except %TV must be prevented from seeking +too far ahead in the program, and keyframe and commercial flags must be +synced from the recorder periodically. + +%TV also has three additional states: kState_Error, +kState_None, kState_ChangingState. The error state allows +%MythTV to know when something has gone wrong. The null or +none state means the player is not doing anything and +is ready for commands. Finally, the "ChangingState" state +tells us that a state change request is pending, so other +state changing commands should not be issued. + + */ + +/** \defgroup plugin_arch Plugin Architecture +This line is filler that is ignored by Doxygen. + +MythPlugins are shared object files (i.e. libraries) which are loaded +from a specific directory (%e.g. /usr/local/lib/mythtv/plugins). +Currently, all plugins are written in the C++ language, but there is nothing +preventing other languages being used (the functions are in the C name space). + +int mythplugin_init(const char *libversion); is invoked whenever mythfrontend +is started. This typically handles upgrading any database records - it will be +the first method called after a new version of the plugin has been installed. + +int mythplugin_run(); is invoked when the action attribute of a menu item +requests it via the PLUGIN directive. This is when the user chooses to enter +the plugin from the main menu or the appropriate submenu. + +int mythplugin_config(); is invoked when the action attribute of a menu item +requests it via the CONFIGPLUGIN directive. This should be when the users +wishes to change the plugin's settings (in the main Setup menu). + +Other plugin functions are listed in the file \link mythpluginapi.h \endlink +(see also the \link MythPlugin \endlink + and \link MythPluginManager \endlink classes.) + +*/ + +/** \defgroup mtd MTD (the Myth Transcoding Daemon) +This line is filler that is ignored by Doxygen. + +The %MTD is a simple program that is used by the MythVideo plugin. + +It currently \b only transcodes tracks from DVDs, but could in the +future also rip CD/VCD tracks, transcode %TV recordings, \e et \e cetera. + +The DVD Rip screen will offer to start %MTD if it is not running. +It does \b not currently shut it down afterwards, though. + +By default, the %MTD listens on port 2442, for commands of this format: + +\verbatim +halt +quit +shutdown +\endverbatim +- Tells the %MTD to wait for all jobs to finish, stop listening, and exit. + +\verbatim +hello +\endverbatim +- Send a trivial response if the %MTD is listening. + +\verbatim +status +\endverbatim +\verbatim +status dvd summary 1 +status dvd job 0 overall 0.0262568 ISO copy of UNTITLED +status dvd job 0 subjob 0.0262568 Ripping to file ~ 00:08/05:04 +status dvd complete +\endverbatim +- Sends a response listing the status of all jobs. + +\verbatim +media +\endverbatim +\verbatim +media dvd summary 1 UNTITLED +media dvd title 1 1 1 0 5 27 8 +media dvd title-audio 1 1 2 nl ac3 2Ch +media dvd complete +\endverbatim +- Sends a detailed list of titles/tracks on the current disk. + +\verbatim +job dvd TITLE AUDIOTRK QUALITY AC3 SUBTITLETRK DESTPATH +\endverbatim +\verbatim +e.g. job dvd 1 1 -1 0 -1 /myth/video/UNTITLED +\endverbatim +- Starts a transcoding job. TITLE, AUDIOTRK and SUBTITLETRK are integers + to select the track details. AC3 is 0 or 1. DESTPATH is the output file. + QUALITY is one of enum \ref RIP_QUALITIES (-1, 0 or 1). + +\verbatim +abort dvd job NNNN +\endverbatim +- Stops the job identified by the job number NNNN. + +\verbatim +use dvd PATH +\endverbatim +- Check dvd PATH is usable, and if so set the current drive to it. + +\verbatim +no dvd +\endverbatim +- Forget about the current dvd path, ending any jobs that are trying to read it. + +\verbatim +no dvd PATH +\endverbatim +- End any jobs that are reading from dvd PATH, and if it is the current drive, + forget about it. + */ + +/** \defgroup myth_media Myth Media Manager +This line is filler that is ignored by Doxygen. + +The Myth Media Manager is a thread in the frontend which looks for any +changes to removable media, and sends events to any Frontend Plugins +which are interested in that media. + +At startup, it creates a list of MythMediaDevice objects (currently +MythHDD or MythCDROM and its subclasses) for each removable device +configured on the system. A runtime loop then monitors each of these +via its checkMedia() method. + +When any of these devices change status, a MediaEvent object is created. +If the device has a status which is usable, the window jumps to the main menu +(to allow the registered jump to work correctly), and the event is dispatched +to the relevant plugin's registered media handler. If the device status is +unusable (%e.g. ejected), the plugin's media handler is called directly +(so it can "forget" about this device). + +The following tables show +typical status transitions for CD/DVD and USB flash drive devices: + +\verbatim + CD/DVD USB/FireWire HDD +State Action State Action +-------------------------------------------------- +NODISK NODISK + eject attach +OPEN USEABLE + insert disk, close detach +USEABLE UNPLUGGED + mount +MOUNTED + unmount +NOTMOUNTED +-------------------------------------------------- +\endverbatim + */ + +/** \defgroup myth_network_protocol Myth Network Protocol +This line is filler that is ignored by Doxygen. + +The MythTV backend process currently opens sockets for three different types +of commands; a custom protocol (by default at port 6543), +an HTML server (by default +http://127.0.0.1:6544 + for the status, and other services under that, like +< HREF="http://127.0.0.1:6544/Myth/GetMusic?Id=1"> +http://127.0.0.1:6544/Myth/GetMusic?Id=1 +), and a UPnP media server (several ports that I cannot +remember right now that throw around lots of little bits of XML :-) + +The custom protocol is an ASCII encoded length and command string. +Command sequences can be easily sent to the backend using telnet. +%e.g. \verbatim telnet 127.0.0.1 5432 +Trying 127.0.0.1... +Connected to localhost. +Escape character is '^]'.\endverbatim +\verbatim21 MYTH_PROTO_VERSION 36 23 ANN Playback hostname 1 10 QUERY_LOAD 4DONE\endverbatim +\verbatim13 ACCEPT[]:[]362 OK34 0.919922[]:[]0.908203[]:[]0.856445Connection closed by foreign host.\endverbatim +The command string is prefixed by 8 characters, containing the length +of the forthcoming command. This can be justified in any way +(as the above example shows) + +The backend responds with a length, and the response to the command. +This can be numbers (up to 32 bit, represented in ASCII), +a single string, or an ASCII encoding of a QStringList. +The 5 byte sequence "[]:[]" seperates items in the stringlist. +Any 64 bit numbers are represented as a stringlist of two 32bit words +(MSB first). + +\section commands Commands + +There are three main types of networking interactions in MythTV; +identification commands (which tell the backend about this client), +query commands that are sent to the master backend +(%e.g. listing recordings or viewing guide data), and +file streaming commands (when a frontend is watching or editing a recording). + +Until a client is identified to the backend (via the ANN commands), +any of the query or file streaming commands will silently fail. + +The following summarises some of these commands. +For a full understanding of all the commands, either read the source code +(programs/mythbackend/mainserver.cpp), or look on the Wiki +(http://www.mythtv.org/wiki/index.php/Myth_Protocol_Command_List). + + */ + +/** \defgroup qobject_dangers QObject is dangerous for your health +This line is filler that is ignored by Doxygen. + +QObject derived classes can be quite useful, they can send and receive +signals, get keyboard events, translate strings into another language +and use QTimers. + +But they also can't be \ref qobject_delete "deleted" easily, they +are not \ref qobject_threadsafe "thread-safe", can't participate +as equals in multiple \ref qobject_inheritence "inheritence", can +not be used at all in virtual \ref qobject_inheritence "inheritence". + +\section qobject_delete Deleting QObjects + +The problem with deleting QObjects has to do with signals, and events. +These can arrive from any thread, and often arrive from the Qt event +thread even if you have not explicitly requested them. + +If you have not explicitly connected any signals or slots, and the +only events you might get are dispatched with qApp->postEvent(), +not qApp->sendEvent(), then it is safe to delete the QObject in the +Qt event thread. If your QObject is a GUI object you've passed +given to Qt for it to delete all is good. If your object is only +deleted in response to a posted event or a signal from the Qt event +thread (say from a QTimer()) then you are OK as well. + +If your class may be deleted outside a Qt thread, but it does not +explicitly connect any signals or slots, and the only events it +might get are dispatched with qApp->postEvent(), then you can +safely use deleteLater() to queue your object up for deletion +in the event thread. + +%MythTV is a very much a multithreaded program so you may need to have +a QObject that may get events from another thread if you send signals +but do not get any signals and or events from outside the Qt event +thread, then you can use deleteLater() or delete depending on whether +you are deleteing the QObject in the event thread, see above. But +if you are not in the Qt event thread then you need to call disconnect() +in the thread that is sending the signals, before calling deleteLater(). +This prevents your object from sending events after you consider it +deleted (and begin to delete other QObjects that may still be getting +signals from your object.) + +What about if you are getting events via qApp->sendEvent() or a signal +from another thread? In this case things get complicated, so we highly +discourage this in %MythTV and prefer that you use callbacks if at all +possible. But in say you need to do this, then you need to disconnect +all the signals being sent to your QObject. But disconnect() itself +is not atomic. That is you may still get a signal after you disconnect +it. What you need to is disconnect the signal from your slot in the +thread that is sending the signal. This prevents the signal from +being emitted while you are disconnecting. Doing this gracefully is +left as an excersize for the reader. + +Ok, so the above is not entirely complete, for instance you could wrap +every signal emit in an instance lock and reimplement a disconnect +that uses that instance lock. But if you've figured this or another +solution out already all you need to know is that almost all Qt +objects are reenterant but not thread-safe, and that QObjects recieve +events and signals from the Qt event thread and from other threads +if you use qApp->sendEvent() or send signals to it from another thread. + +\section qobject_threadsafe QObject thread-safety + +The only thread-safe classes in Qt are QThread and the mutex classes. +when you call any non-static QObject method you must have a lock on +it or make sure only thread ever calls that function. + +QObject itself is pretty safe because when you assign one QObject to +another you make a copy. Qt's container classes, including QString +do not make a copy but rather pass a reference counted pointer to +the data when you assign one to another. This reference counter is +not protected by a mutex so you can not use regular assignment when +passing a QString or other Qt container from one thread to another. + +In order to use these classes safely you must use +QDeepCopy +when passing them from one thread to another. This is thankfully quite +easy to use. + +\code + QString original = "hello world"; + QString unsafe = original; + QString safe = QDeepCopy(original); +\endcode + +In this case safe and original can be used by two seperate +threads, while unsafe can only be used in the same thread +as originalStr. + +The QDeepCopy template will work on the most popular Qt containers, +for the ones it doesn't support you will have to copy manually. + +\section qobject_inheritence QObject inheritence + +You can not inherit more than one QObject derived class. +This is because of how signals and slots are implemented. What +happens is that each slot is transformed into an integer that +is used to find the right function pointer quickly when a signal +is sent. But if you have more than one QObject in the inheritence +tree the integers will alias so that signals intended for the +second slot in parent class B might get sent to the second slot +in parent class A instead. Badness ensues. + +For the similar reason you can not inherit a QObject derived +class virtually, in this case the badness is a little more +complicated. The result is the same however, signals arrive +at the wrong slot. Usually, what happens is that the developer +tries to inherit two QObject derived classes but gets linking +errors, so they make one or more of the classes virtual, or +inherit a QObject non-virtually but then also inherit one +or more QObject derived classes virtually. The linker doesn't +complain, but strange unexplainable behaviour ensues when +the application is run and signals start showing up on the +wrong slots. + +*/ + +/** \defgroup profiling_mythtv Profiling MythTV +This line is filler that is ignored by Doxygen. + +You can use any sampling profiler to profile %MythTV, the most +popular GPL one is OProfile and this section tells you how to +use it to profile %MythTV. For Intel also makes VTune, AMD +makes CodeAnalyst, and Apple makes Shark. These all work +similarly to oprofile, so the %MythTV portions are the same. + +This do not describe how to install oprofile. There are a +few cotchas on installation: You must have APIC enabled to +use performance counters. This is usually the default, but +you may want to check this in your kernel configuration. You +also need the oprofile module, this is part of the kernel +config in Linux 2.6+, but must be compiled seperately for +earlier kernels. Finally, some RedHat kernels does not work +with the standard oprofile, so you must use the RedHat +version of oprofile, or compile your own kernel. + + +\section prof_compile Compiling MythTV for profiling + +The first thing you need to do is compile with profiling in +mind. %MythTV has three compile types "release", "debug" and +"profile". The "release" type enables optimizations that +make debugging practically impossible, while "debug" has so +few optimizations that profiling it usually won't tell you +where the real performance problems are. The "profile" compile +type enables the all the optimizations in "release" but also +enables debugging symbols, so that you know which functions +are the CPU hogs. + +So we configure thusly: +\code + make distclean + ./configure --compile-type=profile --enable-proc-opt [+your normal opts] +\endcode + +The "make distclean" clears out all your old binaries and the the configure +sets the compile type approriately. You may not want the "--enable-proc-opt" +if you plan on making a package for other CPUs. This only makes about a +10% difference in playback speed because MMX and CMOV are enabled for +CPUs that support them regardless of this option. + +Next, you compile and install %MythTV as you normally would. +\code + qmake; make -j2 -k + su + make install +\endcode + + +\section prof_init Initializing profiler + +Most sampling profilers, OProfile included, require a kernel module so +this module must be loaded. In oprofile's case the module gets confused +when it has been loaded a long time, so it is best to begin each session +by shutting down the OProfile server and reloading the module: + +\code + opcontrol --deinit + opcontrol --init +\endcode + +You also will want to tell the profiler whether to profile the +kernel as well, if you want the kernel profiled, and assuming +your compiled kernel is in /usr/src/linux, issue this command: +\code + opcontrol --vmlinux=/usr/src/linux/vmlinux +\endcode +If you don't want it in your profile report, use this command: +\code + opcontrol --no-vmlinux +\endcode +Normally, you don't need it when profiling %MythTV, but there are +times when the kernel is a bottleneck. For example when writing +streams to disk is taking too long. + +Now all CPU's are not profiled the same way. In the days of olde, +a sampling profiler would hook into the clock interupt and record +the instuction pointer's location at the instant the interrupt was +triggered. But the wall clock timer still ticks as often as it did +when CPU's ran at 5 Mhz, and now they run almost a thousand times +faster. Such a profile would now take a thousand times longer than +it did in 1985. + +So modern processors include explicit support for profiling. For, +example the Pentium Pro has the INST_RETIRED counter, the Pentium 4 +has the INSTR_RETIRED counter, the AMD64 has the RETIRED_INSNS +counter, etc. For a full list see the +OProfile documentation. +You need to find a performance counter you can use for your CPU, +after you've run "opcontrol --init" you can run the following command: +\code + opcontrol --list-events +\endcode +And it will list all the performance counters available with your +CPU. You need to pick the best one for what you want to measure, +for overall performance you want something line INSTR_RETIRED. + +For an Intel Pentium 4, the following will work +\code + opcontrol -e INSTR_RETIRED:6000:0x0f:0:1 +\endcode + +This tells OProfile to schedule an interrupt on every 6000th +instruction that finishes and matches the flag 0x0f. You +could also count cycles when not in idle for the same type of +measurements. The last two numbers tell OProfile it should not +profile the kernel and should profile userspace, if you want +to profile the kernel as well you need to replace the zero with +a one. + +It is possible to profile in oprofile the old fashioned way, by +using the real-time-clock. But you must compile your Linux kernel +WITHOUT RTC support, and run %MythTV significantly longer to get +enough samples for a good report. + + +\section prof_run Running Profiler + +Normally, oprofile will tell you about everything running in +its reports. You can limit what information is collected by +running a opcontrol command such as: +\code + opcontrol --image=/usr/local/bin/mythfrontend +\endcode +This tells OProfile to only profile the frontend. + +Now you want to start %MythTV as usual: + +Then begin doing whatever you want to profile, then issue these +commands: +\code + opcontrol --reset ; opcontrol --start +\endcode + +After a few seconds/minutes your should have collected enough data. +Then you want to issue the following commands: +\code + opcontrol --shutdown + opreport --merge tgid -l --image-path=/usr/local/bin > report.txt +\endcode + +Now you can peruse the report at your pleasure. + +This should be enough to get you started with finding and fixing +performance problems in %MythTV, but there is more information +available from the +OProfile manual. +This includes information on constructing callgraphs, producing +an annotated versions of the code, and saving results. + +*/ + +// The file ac3.h in ffmpeg contains no Doxygen markup, +// but for some reason generates the following modules: +// * Coded elements +// * Derived values +// +// They add nothing useful to this programmer doco, so I camouflage these +// by manually defining the block here. Same thing for the few modules +// in ffmpeg that are documented; Macroblock and VC9 bitplanes from vc1.c, +// Monkey Audio from apedec.c, multithreaded slicing from h264.h, + +/** + @defgroup coded . + @defgroup derived . + @defgroup block . + @defgroup std_mb . + @defgroup rangecoder . + @defgroup multithreading . + @defgroup bitplane . + */ diff --git a/abs/core/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg b/abs/core/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg new file mode 100644 index 0000000..c00b3cf --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/doxygen-create-developer-docs.cfg @@ -0,0 +1,1142 @@ +# Doxyfile 1.3.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = MythTV + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 0.21 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen-dev-docs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 2 levels of 10 sub-directories under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of source +# files, where putting all generated files in the same directory would otherwise +# cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is used +# as the annotated text. Otherwise, the brief description is used as-is. If left +# blank, the following values are used ("$name" is automatically replaced with the +# name of the entity): "The $name class" "The $name widget" "The $name file" +# "is" "provides" "specifies" "contains" "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = "sideeffect=\par Side Effects:\n" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = doxygen-warnings.txt + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = doxygen-architecture-document.cpp ../contrib ../filters ../libs ../programs ../../mythplugins + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm + +FILE_PATTERNS = *.cpp *.c *.h *.mm *.pl *.pm *.sh *.py *.php *.css + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = ../libs/libmythsamplerate + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = moc_*.cpp moc_*.h + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = NO + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = USING_XVMC_VLD USING_XVMCW USING_XVMC USING_XV USING_IVTV MMX USING_FIREWIRE USING_DVB USING_DVB_EIT USING_XRANDR USING_DIRECTX USING_DIRECTFB USING_OPENGL_VSYNC Q_OS_MACX + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superseded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes that +# lay further from the root node will be omitted. Note that setting this option to +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also +# note that a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = YES diff --git a/abs/core/local-website/htdocs/mythtv-doc/doxygen.perl.patch b/abs/core/local-website/htdocs/mythtv-doc/doxygen.perl.patch new file mode 100644 index 0000000..c7288b6 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/doxygen.perl.patch @@ -0,0 +1,141 @@ +diff -ru doxygen-1.5.4.orig/src/scanner.l doxygen-1.5.4/src/scanner.l +--- doxygen-1.5.4.orig/src/scanner.l 2007-10-26 21:52:35.000000000 +1000 ++++ doxygen-1.5.4/src/scanner.l 2008-01-09 13:19:14.000000000 +1100 +@@ -115,6 +115,7 @@ + static bool insideObjC = FALSE; //!< processing Objective C code? + static bool insideCli = FALSE; //!< processing C++/CLI code? + static bool insideJS = FALSE; //!< processing JavaScript code? ++static bool insidePerl = FALSE; //!< processing Perl code? + + static bool insideCppQuote = FALSE; + static bool insideProtocolList = FALSE; +@@ -332,13 +333,15 @@ + insidePHP = langExt==SrcLangExt_PHP; + insideObjC = langExt==SrcLangExt_ObjC; + insideJS = langExt==SrcLangExt_JS; ++ insidePerl = langExt==SrcLangExt_Perl; + if ( insidePHP ) + { + useOverrideCommands = TRUE; + } + //printf("setContext(%s) insideIDL=%d insideJava=%d insideCS=%d " +- // "insideD=%d insidePHP=%d insideObjC=%d\n", +- // yyFileName.data(),insideIDL,insideJava,insideCS,insideD,insidePHP,insideObjC ++ // "insideD=%d insidePHP=%d insideObjC=%d insidePerl=%d\n", ++ // yyFileName.data(),insideIDL,insideJava,insideCS,insideD, ++ // insidePHP,insideObjC,insidePerl + // ); + } + +@@ -591,6 +594,7 @@ + %x Define + %x DefineEnd + %x CompoundName ++%x PerlSubName + %x ClassVar + %x CSConstraintName + %x CSConstraintType +@@ -604,6 +608,7 @@ + %x BitFields + %x FindMembers + %x FindMembersPHP ++%x FindMembersPerl + %x FindMemberName + %x FindFields + %x FindFieldArg +@@ -920,6 +925,29 @@ + REJECT; + } + } ++{B}*"sub"{B}+ { ++ BEGIN( PerlSubName ); ++ } ++{LABELID} { ++ //printf("### Perl SUB name = %s\n", yytext); ++ isTypedef=FALSE; ++ current->name = yytext; ++ current->section ++ = Entry::FUNCTION_SEC; ++ current->type = "sub" ; ++ current->fileName = yyFileName; ++ current->startLine = yyLineNr; ++ current->bodyLine = yyLineNr; ++ lineCount(); ++ curlyCount = 0; ++ current_root->addSubEntry(current); ++ //current_root = current ; ++ current = new Entry ; ++ initEntry(); ++ lastCurlyContext = FindMembersPerl; ++ BEGIN( SkipCurly ); ++ BEGIN( FindMembersPerl ); ++ } + {ID} { + addType( current ); + current->name = yytext; +@@ -3431,6 +3459,13 @@ + BEGIN( CopyArgComment ); + } + } ++ /* Same in Perl or Sh */ ++"###" { ++ fullArgString+=yytext; ++ lastCopyArgChar=0; ++ lastCommentInArgContext=YY_START; ++ BEGIN( CopyArgCommentLine ); ++ } + /* a non-special comment */ + "/*" { + lastCContext = YY_START; +@@ -5434,6 +5469,10 @@ + { + BEGIN( FindMembersPHP ); + } ++ else if ( insidePerl ) ++ { ++ BEGIN( FindMembersPerl ); ++ } + else + { + BEGIN( FindMembers ); +diff -ru doxygen-1.5.4.orig/src/util.cpp doxygen-1.5.4/src/util.cpp +--- doxygen-1.5.4.orig/src/util.cpp 2007-10-26 21:33:49.000000000 +1000 ++++ doxygen-1.5.4/src/util.cpp 2008-01-09 09:27:43.000000000 +1100 +@@ -6158,6 +6158,9 @@ + extLookup.insert(".m", new int(SrcLangExt_ObjC)); + extLookup.insert(".M", new int(SrcLangExt_ObjC)); + extLookup.insert(".mm", new int(SrcLangExt_ObjC)); ++ extLookup.insert(".pl", new int(SrcLangExt_Perl)); ++ extLookup.insert(".pm", new int(SrcLangExt_Perl)); ++ extLookup.insert(".sh", new int(SrcLangExt_Shell)); + init=TRUE; + } + if (i!=-1) // name has an extension +diff -ru doxygen-1.5.4.orig/src/util.h doxygen-1.5.4/src/util.h +--- doxygen-1.5.4.orig/src/util.h 2007-08-12 05:45:51.000000000 +1000 ++++ doxygen-1.5.4/src/util.h 2008-01-09 09:28:43.000000000 +1100 +@@ -85,14 +85,16 @@ + + enum SrcLangExt + { +- SrcLangExt_IDL = 0x008, +- SrcLangExt_Java = 0x010, +- SrcLangExt_CSharp = 0x020, +- SrcLangExt_D = 0x040, +- SrcLangExt_PHP = 0x080, +- SrcLangExt_ObjC = 0x100, +- SrcLangExt_Cpp = 0x200, +- SrcLangExt_JS = 0x400, ++ SrcLangExt_IDL = 0x0008, ++ SrcLangExt_Java = 0x0010, ++ SrcLangExt_CSharp = 0x0020, ++ SrcLangExt_D = 0x0040, ++ SrcLangExt_PHP = 0x0080, ++ SrcLangExt_ObjC = 0x0100, ++ SrcLangExt_Cpp = 0x0200, ++ SrcLangExt_JS = 0x0400, ++ SrcLangExt_Perl = 0x0800, ++ SrcLangExt_Shell = 0x1000, + }; + + //-------------------------------------------------------------------- diff --git a/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops new file mode 100644 index 0000000..e7b0699 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/15931/branches/release-0-21-fixes/mythtv/docs/i18n +END +keys_de.txt +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/15931/branches/release-0-21-fixes/mythtv/docs/i18n/keys_de.txt +END diff --git a/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/entries b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/entries new file mode 100644 index 0000000..4deb045 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/entries @@ -0,0 +1,40 @@ +8 + +dir +17449 +http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythtv/docs/i18n +http://svn.mythtv.org/svn + + + +2005-06-22T17:08:33.437073Z +6689 +rkulagow + + +svn:special svn:externals svn:needs-lock + + + + + + + + + + + +7dbf422c-18fa-0310-86e9-fd20926502f2 + +keys_de.txt +file + + + + +2008-02-17T05:32:05.000000Z +c1a687298b5a96e93dd9daed3ee6f452 +2005-06-22T17:08:33.437073Z +6689 +rkulagow + diff --git a/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/format b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/format new file mode 100644 index 0000000..45a4fb7 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/format @@ -0,0 +1 @@ +8 diff --git a/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base new file mode 100644 index 0000000..3e7346c --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/i18n/.svn/text-base/keys_de.txt.svn-base @@ -0,0 +1,298 @@ +Translation provided by Michael Haas (hansi.urpils at gmail.com) 2005-06-22 + +Verschiedene Tasten und ihre Funktionen: + +mythfrontend +------------ + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- ALT-F4 beendet die Anwendung. +- Leertaste oder Enter, um den gewählten Menupünkt zu aktiveren. +- P zum Abspielen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- D zum Loeschen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- U fuer eine Detailansicht der momentan ausgewaehlten Sendung in "Aufnahmen + ansehen", "Loeschen", "EPG", "Suche" und "FIXME" sowie in den Suchergebnissen. +- O für eine Liste der anstehenden Folgen der momentan ausgewählten Sendung in + "EPG", "Suche", "Sendung Aufnahmeprioritaeten" und "FIXME" sowie in den + Suchergebnissen. +- I zum Bearbeiten der Aufnahmeoptionen in "EPG", "Suche", + "Sendung Aufnahmeprioritäten" und FIXME. In den Bildschirmen + "Aufnahmen ansehen" und "Loeschen" zeigt 'I' Optionen für aufgenommene + Sendungen wie "Automatisch löschen" oder "Aufnahme stoppen". + +Aufnahmen oder Fernsehen schauen +-------------------------------- + +- Pfeiltasten hoch und runter, um den Kanal zu wechseln +- Eine Nummer eintippen, um zu einem bestimmten Kanal oder um um eine bestimmte + Zeitspanne zu springen (HHMM-Format) +- P für Pause/Abspielen + - Es ist ebenfalls möglich, eine bestimmte Taste fuer "Abspielen" + ueber die Konfiguration der Tastenbelegung in MythWeb festzulegen, + um von Zeitlupenmodus, Zurückspulen, Vorspulen oder Pause wieder auf + normale Geschwindigkeit zu wechseln. + - C zum Wechseln des Eingangs auf der TV-Karte + - ESC zum Abbrechen + - I ruft das On-Screen-Display auf. + - Während der Wiedergabe wechselt 'I' zwischen Informationen zur aktuellen + Position und der Beschreibung der Sendung hin und her. Wenn eine Zeit + (HHMM) angegeben wird, springt MythTV um diese Zeit. + - M ruft das EPG auf. siehe Abschnitt zu EPG. + - Bild Runter springt um die vorkonfigurierte Zeitspanne zurueck. Standardwert ist 10 Minuten. + - Bild Hoch springt um die vorkonfigurierte Zeitspanne vor. Standardwert ist + 10 Minuten. + - Ende oder 'Z', um zur nächsten Werbungsmarkierung zu springen. + - Position 1 oder 'Q', um zur vorherigen Werbungsmarkierung zu springen. + - T zum Ein-/Ausschalten der Untertitel. + - F rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + Waehrend dieser Bildschirm zu sehen ist, benutzt man die linke bzw + rechte Pfeiltaste, um Einstellungen vorzunehmen. Diese Einstellungen + beeinflussen das Aussehen der Videowiedergabe und sind unabhaengig von + den Einstellungen, die mit der Taste 'G' gemacht werden koennen (siehe + unten) die bei der Aufnahme benutzt werden. + - [ oder F10 verringert die Lautstaerke + - ] oder F11 erhoeht die Lautstaerke + - / springt zum nächsten "bevorzugten Sender". + - ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" + - U erhöht die Abspielgeschwindigkeit + - J verringert die Abspielgeschwindigkeit + - A passt den Zeitraffer an (Beschleunigung oder Verlangsamung FIXME) + - W veraendert das Seitenverhaeltnis. Zur Auswahl stehen: 4:3, 16:9, + 4:3 Zoom (wie "Pan and Scan" FIXME), 16:9 Zoom und 16:9 "Stretch" FIXME + (beseitigt schwarze Raender im TV-Signal) + - Links (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + zurueckspringen + - Rechts (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + vorzuspringen + - F8 wechselt zwischen den Einstellungen des "sleep timer" FIXME: + 30min->1h->1h30min->2h->Aus. + +"Klebrige" Tasten ("sticky keys") ausgeschaltet: + + - Linke Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 5s) + zurueck. + - Rechte Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 30s) + vor. + - < startet den Rueckspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + - > startet den Vorspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + + "Klebrige" Tasten ("sticky keys") eingeschaltet: + + - Rechte Pfeiltaste startet den Vorspulmodus + - Linke Pfeiltaste startet den Rueckspulmodus + Waehrend dem Spulen: + - Linke/Rechte Pfeiltaste erhoeht die Vor-/Rueckspulgeschwindigkeit + - 0 spielt mit Normalgeschnwindigkeit, laesst allerdings den Zeitanzeiger + auf dem Bildschirm + - 1 oder 2, um langsamer als normales Vor-/Zurueckspulen zu spulen + (1 ist am langsamsten) + - 3 fuer normale Vor-/Rueckspulgeschwindigkeit + - 4 - 9 spult schneller als normales Vor-/Zurueckspulen + (9 ist am schnellsten) + - Leertaste, um den Spulmodus zu verlassen + +Nur Fernsehen: + + - G rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + fuer Aufnahmen. Diese Werte beeinflussen das Aussehen der resultierenden + .nuv-Datei. Waehrend dieser Bildschirm zu sehen ist, + benutzt man die linke bzw rechte Pfeiltaste, um Einstellungen vorzunehmen. + - H Senderverlauf. Jeder Druck auf diese Taste schaltet auf den jeweils + vorher geschauten Sender um. + - O schaltet den Browse-Modus an und erlaubt es so dem Benutzer, in den + Kanaelen und deren Programminformation zu stoebern waehrend er die + aktuelle Sendung in voller groesse schaut. + - Y wechselt zwischen den TV-Karten. + +Browse-Modus waehrend LiveTV + + - Linke Pfeiltaste blaettert im Programm vor dem aktuell angezeigten. + - Rechte Pfeiltaste blaettert im Programm nach dem aktuell angezeigten. + - Pfeiltaste Hoch blaettert im Programm des Kanals ueber dem aktuell + angezeigten. + - Pfeiltaste Runter blaettert im Programm des Kanals unter dem aktuell + angezeigten. + - / blattert durch das Programm des naechsten "bevorzugten Senders". + - 0-9 ermoeglicht es, eine Kanalnummer einzugeben und deren Programm + einzusehen. + - Leertaste/Enter wechselt den Kanal zu dem aktuell angezeigten. + - R/r nimmt die angezeigte Sendung auf (wechselt durch die Typen) + - ESC/O beendet den Browse-Modus + +Zoom-Modus während der Wiedergabe einer Aufnahme + - Linke Pfeiltaste bewegt das Video nach links + - Rechte Pfeiltaste bewegt das Video nach rechts + - Pfeiltaste Hoch bewegt das Video nach oben + - Pfeiltaste Runter bewegt das Video nach unten + - Bild Hoch zoomt rein + - Bild Runter zoomt raus + - Leertaste/Enter beendet den Zoom-Modus und laesst das Bild bei der momentanen + Groesse und Position + - ESC beendet den Zoom-Modus und kehrt zur Ausgangsgroesse zurück. + +Wenn man zwei oder mehr TV-Karten hat: + + - V schaltet Bild-in-Bild ein oder aus + - B holt die verschiedenen Fenster nacheinander in den Fokus + (erlaubt den Kanalwechsel im Bild-in-Bild-Fenster + - N vertauscht die Beiden Sender, indem die Kanäle auf beiden Karten gewechselt + werden + +Waehrend man eine Aufnahme ansieht: + - Leertaste oder Enter setzt ein Lesezeichen an dem Punkt. Wenn die Aufnahme + das nächste mal angeschaut wird, springt MythTV automatisch zu diesem + Punkt und loescht das Lesezeichen. + - E oder M startet/beendet den "Aufnahme bearbeiten"-Modus. + - Die linke und rechte Pfeiltaste bewegen den Cursor rueckwaerts und + vorwaerts + - Die Pfeiltasten Hoch und Runter veraendern die Zeitspanne, um die man + vorwaerts oder rueckwaerts springt. Verfügbare Schritte: naechster + Schnittpunkt, naechster Video-Keyframe, 1 frame, 0,5 Sekunden, + 1 Sekunde, 20 Sekunden, 1 Minute, 5 Minuten und 10 Minuten. + - Bild Hoch und Bild Runter wechseln zum naechsten Schnittpunkt + - < und > springen um das 10-fache der gesetzten Zeitspanne + nach vorne. + - 'Z' laedt die Liste mit den erkannten Werbespots in die Schnittliste, + falls eine existiert. + - 'C' oder 'Q' löschen alle Schnittpunkte in der Schnittliste. + - 'I' kehrt die Schnittliste um. + - X reiht die Aufnahme in die Warteschlange zur Umwandlung ein. + - O ruft das Menue zur Einstellung von "Automatisch loeschen", + "Werbung ueberspringen", etc auf. + - D beendet die gerade laufende Wiedergabe und zeigt das "Löschen"-Menue an. + +EPG +--- + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- A, D, S und W tun das selbe wie die Pfeiltasten. +- Bild Hoch/Bild Runter bewegen die Kanalliste eine Seite hoch oder runter. +- Position 1 oder Ende bewegen die Auswahl um einen Tag nach links oder rechts. +- 9, 3, 7 und 1 (wie auf dem Nummernblock) tun das gleiche wie Bild Hoch, + Bild Runter, Position 1 und Ende. +- I zeigt mehr Informationen ueber eine Sendung an und erlaubt es, eine + Aufnahme zu programmieren. + - Wenn man "Diese Sendung aufnehmen" auswaehlt waehrend man LiveTV schaut, + kann man eine Sendung direkt aufnehmen. +- Leertaste oder Enter, um Konflikte aufzuloesen oder um Sonderoptionen + zu veraendern. Wenn die Sendung nicht bereits zur Aufnahme bestimmt ist, + verhaelt sich MythTV als waere stattdessen 'I' gedrueckt worden. +- M, um auf den ausgewaehlten Kanal zu wechseln. +- ESC oder C, um den EPG zu verlassen, ohne den Kanal zu wechseln. +- R wechselt zwischen Aufnehmen/nicht Aufnehmen. Fortlaufendes Betätigen + wechselt zwischen den Aufnahmemodi. +- X wechselt den Kanal zu dem momentan ausgewaehlten, ohne den EPG zu verlassen. +- ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" +- / oder 4 zeigt alternativ nur die "bevorzugten Sender" an, bzw. schaltet + wieder zurueck zur normalen Ansicht. + +Setzen der "Sendung Aufnahmeprioritäten" und der "Sender Aufnahmeprioritäten" +---------------------------------------------------------------------------- + +- Die Rechte Pfeiltaste erhöht den Prioritaetswert +- Die Linke Pfeiltaste verringert den Prioritaetswert +- 1 sortiert nach dem Titel +- 2 sortiert nach der Priorität +- Position 1/Ende schaltet zwischen der Sortierung nach Prioritaet hin und her +- I, um die Aufnahmeoptionen zu editieren +- ESC speichert die Änderungen und verlässt den Bildschirm + +Ansehen der geplanten Aufnahmen/Konflikte lösen +------------------------------------------------ + +- 1 zeigt alle Aufnahmen an +- 2 zeigt nur wichtige Aufnahmen +- Position1/Ende wechselt zwischen der Ansicht von wichtigen und normalen + Aufnahmen. +- I, um die Aufnahmeoptionen zu editieren +- Leertaste oder Enter, um Konflikte zu lösen/außer Kraft zu setzen + +Ansehen der Suchlisten: +----------------------- + +- Position 1 wechselt zur vorherigen Ansicht, wenn anwendbar +- Ende wechselt zur naechsten Ansicht, wenn verfügbar +- M wechselt zu einer anderen Ansicht, wenn moeglich + - In dem Suchbildschirm für Titel und Beschreibung, druecke M noch einmal um + die ausgewählte Ansicht zu editieren oder zu löschen + +Einstellungsbildschirm der Aufnahmeprofile: +------------------------------------------ +- D ruft einen Bildschirm zum Löschen einer eigenen Profilgruppe auf. + +Aufnahmegruppen: +--------------- + +Aufnahmegruppen erlauben es, Programme in benutzerdefinierte Kategorien zu +unterteilen, wie beispielsweise "Kinder", "Alice", "Karl-Heinz" etc. +Diese Funktion kann benutzt werden, um Durcheinanger zu reduzieren oder um +Inhalt (Sendungen etc) abzusondern, wenn man die PIN-Funktion nutzt. + +Im "Aufnahmen ansehen"-Bildschirm: +- M wechselt die Ansicht oder setzt ein Passwort für die Gruppe +- I verschiebt eine Sendung von einer Gruppe in eine andere + +"Aufnahmen ansehen"-Bildschirm: +------------------------------- + +- "1" oder F1 zeigt einen Bildschirm mit der Bedeutung der Icons +- / markiert eine Aufnahme. Markierte Aufnahmen koennen als Gruppe + abgespielt (in Reihenfolge oder zufaellig) und geloescht werden. + Man kann ebenfalls die Aufnahmegruppe für einige Aufnahmen aendern, + indem man sie markiert und dann mit dem INFO-Menue die Aufnahmegruppe + aendert. +- ? leert die Liste der markierten Aufnahmen + +Fernbedienungen +--------------- + +Wenn man MythTV nur mit einer Fernbedienung benutzt, ist es empfohlen, dass man +die Tasten auf der Fernbedienung wie unten beschrieben belegt. +Es ist moeglich, dass die Fernbedienung nicht den gleichen Satz an Tasten +wie die unten genannten hat, die Namen sind nur Vorschlaege, die ungefaehr +der Funktion entsprechen. + +Wenn man neue Tastaturbelegungen zu dem Programm hinzufügt, wird es Benutzern +von Fernbedienungen helfen, wenn die vorgeschlagene Liste berücksichtigt wird. + +Diese Liste nimmt eine minimale Fernbedienung an, die nur 20 Tasten hat. +Nahezu alle Faehigkeiten koennen mit dieser Konfiguration genutzt werden. +Wenn man mehr Tasten hart, kann man alle Faehigkeiten ausnutzen. +Mit nru 16 Tasten sind die meisten Fähigkeiten verfügbar. + + +Fernbedienung LIRC-Tastendruck Funktion +------------- ---------------- -------- + +0 - 9 0 - 9 Kanalauswahl, Navigation im + EPG, + Rück-/Vorspulgeschwindigkeit + (mit "klebigen Tasten") + +Linke Pfeiltaste Left nach links scrollen, + zurueckspulen + +Rechte Pfeiltaste Right nach rechts scrollen, + vorspulen + +Pfeiltaste hoch Up hoch scrollen, Kanalwechsel + nach oben + +Pfeiltaste runter Down runter scrollen, Kanalwechsel + nach unten + +Auswahl/OK/Abspielen Space Menuepunkt auswaehlen, Abspielen + (mit "klebrigen Tasten"), + Lesezeichen setzen + +Abbrechen Escape Abbrechen, Wiedergabe beenden + +Menue m EPG (in LiveTV) + Editieren (bei Aufnahmen) + +Pause p Pause + +Andere Taste 1 i Information + +Andere Taste 2 c Wechselt den Eingang der + TV-Karte diff --git a/abs/core/local-website/htdocs/mythtv-doc/i18n/keys_de.txt b/abs/core/local-website/htdocs/mythtv-doc/i18n/keys_de.txt new file mode 100644 index 0000000..3e7346c --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/i18n/keys_de.txt @@ -0,0 +1,298 @@ +Translation provided by Michael Haas (hansi.urpils at gmail.com) 2005-06-22 + +Verschiedene Tasten und ihre Funktionen: + +mythfrontend +------------ + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- ALT-F4 beendet die Anwendung. +- Leertaste oder Enter, um den gewählten Menupünkt zu aktiveren. +- P zum Abspielen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- D zum Loeschen, sowohl in "Aufnahmen ansehen" als auch in "Loeschen". +- U fuer eine Detailansicht der momentan ausgewaehlten Sendung in "Aufnahmen + ansehen", "Loeschen", "EPG", "Suche" und "FIXME" sowie in den Suchergebnissen. +- O für eine Liste der anstehenden Folgen der momentan ausgewählten Sendung in + "EPG", "Suche", "Sendung Aufnahmeprioritaeten" und "FIXME" sowie in den + Suchergebnissen. +- I zum Bearbeiten der Aufnahmeoptionen in "EPG", "Suche", + "Sendung Aufnahmeprioritäten" und FIXME. In den Bildschirmen + "Aufnahmen ansehen" und "Loeschen" zeigt 'I' Optionen für aufgenommene + Sendungen wie "Automatisch löschen" oder "Aufnahme stoppen". + +Aufnahmen oder Fernsehen schauen +-------------------------------- + +- Pfeiltasten hoch und runter, um den Kanal zu wechseln +- Eine Nummer eintippen, um zu einem bestimmten Kanal oder um um eine bestimmte + Zeitspanne zu springen (HHMM-Format) +- P für Pause/Abspielen + - Es ist ebenfalls möglich, eine bestimmte Taste fuer "Abspielen" + ueber die Konfiguration der Tastenbelegung in MythWeb festzulegen, + um von Zeitlupenmodus, Zurückspulen, Vorspulen oder Pause wieder auf + normale Geschwindigkeit zu wechseln. + - C zum Wechseln des Eingangs auf der TV-Karte + - ESC zum Abbrechen + - I ruft das On-Screen-Display auf. + - Während der Wiedergabe wechselt 'I' zwischen Informationen zur aktuellen + Position und der Beschreibung der Sendung hin und her. Wenn eine Zeit + (HHMM) angegeben wird, springt MythTV um diese Zeit. + - M ruft das EPG auf. siehe Abschnitt zu EPG. + - Bild Runter springt um die vorkonfigurierte Zeitspanne zurueck. Standardwert ist 10 Minuten. + - Bild Hoch springt um die vorkonfigurierte Zeitspanne vor. Standardwert ist + 10 Minuten. + - Ende oder 'Z', um zur nächsten Werbungsmarkierung zu springen. + - Position 1 oder 'Q', um zur vorherigen Werbungsmarkierung zu springen. + - T zum Ein-/Ausschalten der Untertitel. + - F rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + Waehrend dieser Bildschirm zu sehen ist, benutzt man die linke bzw + rechte Pfeiltaste, um Einstellungen vorzunehmen. Diese Einstellungen + beeinflussen das Aussehen der Videowiedergabe und sind unabhaengig von + den Einstellungen, die mit der Taste 'G' gemacht werden koennen (siehe + unten) die bei der Aufnahme benutzt werden. + - [ oder F10 verringert die Lautstaerke + - ] oder F11 erhoeht die Lautstaerke + - / springt zum nächsten "bevorzugten Sender". + - ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" + - U erhöht die Abspielgeschwindigkeit + - J verringert die Abspielgeschwindigkeit + - A passt den Zeitraffer an (Beschleunigung oder Verlangsamung FIXME) + - W veraendert das Seitenverhaeltnis. Zur Auswahl stehen: 4:3, 16:9, + 4:3 Zoom (wie "Pan and Scan" FIXME), 16:9 Zoom und 16:9 "Stretch" FIXME + (beseitigt schwarze Raender im TV-Signal) + - Links (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + zurueckspringen + - Rechts (falls eine Sprungzeit angegeben wurde), um diese Zeitspanne + vorzuspringen + - F8 wechselt zwischen den Einstellungen des "sleep timer" FIXME: + 30min->1h->1h30min->2h->Aus. + +"Klebrige" Tasten ("sticky keys") ausgeschaltet: + + - Linke Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 5s) + zurueck. + - Rechte Pfeiltaste spult um die konfigurierte Zeitspanne (Standard: 30s) + vor. + - < startet den Rueckspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + - > startet den Vorspulmodus (wie wenn "klebrige Tasten" aktiviert waere) + + "Klebrige" Tasten ("sticky keys") eingeschaltet: + + - Rechte Pfeiltaste startet den Vorspulmodus + - Linke Pfeiltaste startet den Rueckspulmodus + Waehrend dem Spulen: + - Linke/Rechte Pfeiltaste erhoeht die Vor-/Rueckspulgeschwindigkeit + - 0 spielt mit Normalgeschnwindigkeit, laesst allerdings den Zeitanzeiger + auf dem Bildschirm + - 1 oder 2, um langsamer als normales Vor-/Zurueckspulen zu spulen + (1 ist am langsamsten) + - 3 fuer normale Vor-/Rueckspulgeschwindigkeit + - 4 - 9 spult schneller als normales Vor-/Zurueckspulen + (9 ist am schnellsten) + - Leertaste, um den Spulmodus zu verlassen + +Nur Fernsehen: + + - G rotiert zwischen den verschiedenen Bildeinstellungen (Farbe, Farbton etc.) + fuer Aufnahmen. Diese Werte beeinflussen das Aussehen der resultierenden + .nuv-Datei. Waehrend dieser Bildschirm zu sehen ist, + benutzt man die linke bzw rechte Pfeiltaste, um Einstellungen vorzunehmen. + - H Senderverlauf. Jeder Druck auf diese Taste schaltet auf den jeweils + vorher geschauten Sender um. + - O schaltet den Browse-Modus an und erlaubt es so dem Benutzer, in den + Kanaelen und deren Programminformation zu stoebern waehrend er die + aktuelle Sendung in voller groesse schaut. + - Y wechselt zwischen den TV-Karten. + +Browse-Modus waehrend LiveTV + + - Linke Pfeiltaste blaettert im Programm vor dem aktuell angezeigten. + - Rechte Pfeiltaste blaettert im Programm nach dem aktuell angezeigten. + - Pfeiltaste Hoch blaettert im Programm des Kanals ueber dem aktuell + angezeigten. + - Pfeiltaste Runter blaettert im Programm des Kanals unter dem aktuell + angezeigten. + - / blattert durch das Programm des naechsten "bevorzugten Senders". + - 0-9 ermoeglicht es, eine Kanalnummer einzugeben und deren Programm + einzusehen. + - Leertaste/Enter wechselt den Kanal zu dem aktuell angezeigten. + - R/r nimmt die angezeigte Sendung auf (wechselt durch die Typen) + - ESC/O beendet den Browse-Modus + +Zoom-Modus während der Wiedergabe einer Aufnahme + - Linke Pfeiltaste bewegt das Video nach links + - Rechte Pfeiltaste bewegt das Video nach rechts + - Pfeiltaste Hoch bewegt das Video nach oben + - Pfeiltaste Runter bewegt das Video nach unten + - Bild Hoch zoomt rein + - Bild Runter zoomt raus + - Leertaste/Enter beendet den Zoom-Modus und laesst das Bild bei der momentanen + Groesse und Position + - ESC beendet den Zoom-Modus und kehrt zur Ausgangsgroesse zurück. + +Wenn man zwei oder mehr TV-Karten hat: + + - V schaltet Bild-in-Bild ein oder aus + - B holt die verschiedenen Fenster nacheinander in den Fokus + (erlaubt den Kanalwechsel im Bild-in-Bild-Fenster + - N vertauscht die Beiden Sender, indem die Kanäle auf beiden Karten gewechselt + werden + +Waehrend man eine Aufnahme ansieht: + - Leertaste oder Enter setzt ein Lesezeichen an dem Punkt. Wenn die Aufnahme + das nächste mal angeschaut wird, springt MythTV automatisch zu diesem + Punkt und loescht das Lesezeichen. + - E oder M startet/beendet den "Aufnahme bearbeiten"-Modus. + - Die linke und rechte Pfeiltaste bewegen den Cursor rueckwaerts und + vorwaerts + - Die Pfeiltasten Hoch und Runter veraendern die Zeitspanne, um die man + vorwaerts oder rueckwaerts springt. Verfügbare Schritte: naechster + Schnittpunkt, naechster Video-Keyframe, 1 frame, 0,5 Sekunden, + 1 Sekunde, 20 Sekunden, 1 Minute, 5 Minuten und 10 Minuten. + - Bild Hoch und Bild Runter wechseln zum naechsten Schnittpunkt + - < und > springen um das 10-fache der gesetzten Zeitspanne + nach vorne. + - 'Z' laedt die Liste mit den erkannten Werbespots in die Schnittliste, + falls eine existiert. + - 'C' oder 'Q' löschen alle Schnittpunkte in der Schnittliste. + - 'I' kehrt die Schnittliste um. + - X reiht die Aufnahme in die Warteschlange zur Umwandlung ein. + - O ruft das Menue zur Einstellung von "Automatisch loeschen", + "Werbung ueberspringen", etc auf. + - D beendet die gerade laufende Wiedergabe und zeigt das "Löschen"-Menue an. + +EPG +--- + +- Pfeiltasten werden benutzt, um einen Menuepunkt auszuwaehlen. +- A, D, S und W tun das selbe wie die Pfeiltasten. +- Bild Hoch/Bild Runter bewegen die Kanalliste eine Seite hoch oder runter. +- Position 1 oder Ende bewegen die Auswahl um einen Tag nach links oder rechts. +- 9, 3, 7 und 1 (wie auf dem Nummernblock) tun das gleiche wie Bild Hoch, + Bild Runter, Position 1 und Ende. +- I zeigt mehr Informationen ueber eine Sendung an und erlaubt es, eine + Aufnahme zu programmieren. + - Wenn man "Diese Sendung aufnehmen" auswaehlt waehrend man LiveTV schaut, + kann man eine Sendung direkt aufnehmen. +- Leertaste oder Enter, um Konflikte aufzuloesen oder um Sonderoptionen + zu veraendern. Wenn die Sendung nicht bereits zur Aufnahme bestimmt ist, + verhaelt sich MythTV als waere stattdessen 'I' gedrueckt worden. +- M, um auf den ausgewaehlten Kanal zu wechseln. +- ESC oder C, um den EPG zu verlassen, ohne den Kanal zu wechseln. +- R wechselt zwischen Aufnehmen/nicht Aufnehmen. Fortlaufendes Betätigen + wechselt zwischen den Aufnahmemodi. +- X wechselt den Kanal zu dem momentan ausgewaehlten, ohne den EPG zu verlassen. +- ? kennzeichnet den aktuellen Kanal als "bevorzugten Sender" +- / oder 4 zeigt alternativ nur die "bevorzugten Sender" an, bzw. schaltet + wieder zurueck zur normalen Ansicht. + +Setzen der "Sendung Aufnahmeprioritäten" und der "Sender Aufnahmeprioritäten" +---------------------------------------------------------------------------- + +- Die Rechte Pfeiltaste erhöht den Prioritaetswert +- Die Linke Pfeiltaste verringert den Prioritaetswert +- 1 sortiert nach dem Titel +- 2 sortiert nach der Priorität +- Position 1/Ende schaltet zwischen der Sortierung nach Prioritaet hin und her +- I, um die Aufnahmeoptionen zu editieren +- ESC speichert die Änderungen und verlässt den Bildschirm + +Ansehen der geplanten Aufnahmen/Konflikte lösen +------------------------------------------------ + +- 1 zeigt alle Aufnahmen an +- 2 zeigt nur wichtige Aufnahmen +- Position1/Ende wechselt zwischen der Ansicht von wichtigen und normalen + Aufnahmen. +- I, um die Aufnahmeoptionen zu editieren +- Leertaste oder Enter, um Konflikte zu lösen/außer Kraft zu setzen + +Ansehen der Suchlisten: +----------------------- + +- Position 1 wechselt zur vorherigen Ansicht, wenn anwendbar +- Ende wechselt zur naechsten Ansicht, wenn verfügbar +- M wechselt zu einer anderen Ansicht, wenn moeglich + - In dem Suchbildschirm für Titel und Beschreibung, druecke M noch einmal um + die ausgewählte Ansicht zu editieren oder zu löschen + +Einstellungsbildschirm der Aufnahmeprofile: +------------------------------------------ +- D ruft einen Bildschirm zum Löschen einer eigenen Profilgruppe auf. + +Aufnahmegruppen: +--------------- + +Aufnahmegruppen erlauben es, Programme in benutzerdefinierte Kategorien zu +unterteilen, wie beispielsweise "Kinder", "Alice", "Karl-Heinz" etc. +Diese Funktion kann benutzt werden, um Durcheinanger zu reduzieren oder um +Inhalt (Sendungen etc) abzusondern, wenn man die PIN-Funktion nutzt. + +Im "Aufnahmen ansehen"-Bildschirm: +- M wechselt die Ansicht oder setzt ein Passwort für die Gruppe +- I verschiebt eine Sendung von einer Gruppe in eine andere + +"Aufnahmen ansehen"-Bildschirm: +------------------------------- + +- "1" oder F1 zeigt einen Bildschirm mit der Bedeutung der Icons +- / markiert eine Aufnahme. Markierte Aufnahmen koennen als Gruppe + abgespielt (in Reihenfolge oder zufaellig) und geloescht werden. + Man kann ebenfalls die Aufnahmegruppe für einige Aufnahmen aendern, + indem man sie markiert und dann mit dem INFO-Menue die Aufnahmegruppe + aendert. +- ? leert die Liste der markierten Aufnahmen + +Fernbedienungen +--------------- + +Wenn man MythTV nur mit einer Fernbedienung benutzt, ist es empfohlen, dass man +die Tasten auf der Fernbedienung wie unten beschrieben belegt. +Es ist moeglich, dass die Fernbedienung nicht den gleichen Satz an Tasten +wie die unten genannten hat, die Namen sind nur Vorschlaege, die ungefaehr +der Funktion entsprechen. + +Wenn man neue Tastaturbelegungen zu dem Programm hinzufügt, wird es Benutzern +von Fernbedienungen helfen, wenn die vorgeschlagene Liste berücksichtigt wird. + +Diese Liste nimmt eine minimale Fernbedienung an, die nur 20 Tasten hat. +Nahezu alle Faehigkeiten koennen mit dieser Konfiguration genutzt werden. +Wenn man mehr Tasten hart, kann man alle Faehigkeiten ausnutzen. +Mit nru 16 Tasten sind die meisten Fähigkeiten verfügbar. + + +Fernbedienung LIRC-Tastendruck Funktion +------------- ---------------- -------- + +0 - 9 0 - 9 Kanalauswahl, Navigation im + EPG, + Rück-/Vorspulgeschwindigkeit + (mit "klebigen Tasten") + +Linke Pfeiltaste Left nach links scrollen, + zurueckspulen + +Rechte Pfeiltaste Right nach rechts scrollen, + vorspulen + +Pfeiltaste hoch Up hoch scrollen, Kanalwechsel + nach oben + +Pfeiltaste runter Down runter scrollen, Kanalwechsel + nach unten + +Auswahl/OK/Abspielen Space Menuepunkt auswaehlen, Abspielen + (mit "klebrigen Tasten"), + Lesezeichen setzen + +Abbrechen Escape Abbrechen, Wiedergabe beenden + +Menue m EPG (in LiveTV) + Editieren (bei Aufnahmen) + +Pause p Pause + +Andere Taste 1 i Information + +Andere Taste 2 c Wechselt den Eingang der + TV-Karte diff --git a/abs/core/local-website/htdocs/mythtv-doc/index.html b/abs/core/local-website/htdocs/mythtv-doc/index.html new file mode 100644 index 0000000..6efe675 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/index.html @@ -0,0 +1,250 @@ + + + + + Installing and using MythTV + + + + + +Next +Previous +Contents +
+

Installing and using MythTV

+ +

Robert Kulagowski, +mailto:rkulagow@rocketmail.com

2008-06-04, v0.21.02 +
+Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +
+

+

1. First things first.

+ + +

+

2. Introduction.

+ +

+

3. Checking prerequisites.

+ + +

+

4. System Configuration Requirements for Compiling MythTV.

+ + +

+

5. Downloading and compiling.

+ + +

+

6. MySQL.

+ + +

+

7. Configuring Sound.

+ + +

+

8. Setting up a remote control.

+ + +

+

9. Configuring MythTV.

+ + +

+

10. Configuring mythfrontend.

+ + +

+

11. Using MythTV.

+ + +

+

12. Scheduling Recordings.

+ + +

+

13. MythPlugins.

+ +

+

14. MythWeb.

+ + +

+

15. MythGallery.

+ + +

+

16. MythGame.

+ + +

+

17. MythMusic.

+ + +

+

18. MythWeather.

+ +

+

19. MythVideo.

+ +

+

20. MythDVD.

+ + +

+

21. MythNews.

+ +

+

22. Troubleshooting.

+ + +

+

23. Miscellaneous.

+ + +

+

24. Example Configurations.

+ + +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/keys.txt b/abs/core/local-website/htdocs/mythtv-doc/keys.txt new file mode 100644 index 0000000..4385fb4 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/keys.txt @@ -0,0 +1,325 @@ +Various keys and their actions: + +mythfrontend +------------ + +- Arrow keys are used to move the highlight point around. +- ALT-F4 to exit out of the application. +- Space or Enter to take action on the item under the highlight point. +- P to play in both "Watch a Recording" and "Delete a Recording". +- D to delete in both "Watch a Recording" and "Delete a Recording". +- E to enter the Custom Record editor for the selected title on the EPG, + "Program Finder", "Upcoming Recordings" and search results screens. +- U to view details for the currently selected show on the Watch or + Delete screens, EPG, "Program Finder", "Upcoming Recordings" + and search results screens. +- O to list the upcoming episodes for the currently selected show + on any page where a show title may be highlighed. +- I to edit recording options from any of the pages for scheduling + recordings. From the Watch and Delete screens, 'I' presents options + for recorded shows such as Auto Expire or Stop Recording. +- Y on the "Upcoming Recordings" page switches which capture cards' + items are displayed in the highlight color. + +Watching TV or a recording +-------------------------- + +- P Pause / Play. + You may also add an explicit keybinding for "Play" through the + MythWeb keybindings page, returning you to normal speed if you + are in slow-motion, rewind, fast forward or pause mode. +- ESC Exit player if no OSD on screen, otherwise exit OSD. +- I Puts the On-screen Display up again. + During playback, 'I' toggles between position and show description info. + If a number of minutes is entered, jump to that position. +- M Menu (allows access to EPG and many other useful features +- K Jumps to the bookmark position. +- T In North America this toggles closed caption support. +- T In Europe follow this with the teletext page and another T +- F Rotate between the various Picture Adjustments (Colour, Hue, etc.) + While Picture Adjustment is on-screen, use Left and Right arrows + to adjust. These settings adjust the look of the video playback, + and are independent of the G-key settings used at record-time. + The Xv picture controls must be enabled in the Playback settings. +- U Increase the play speed [muted] +- J Decrease the play speed [muted] +- A Adjust time stretch (speed up or slow down play speed [with audio]) + Use the arrow keys to make adjustment. +- W Cycle through zoom modes: Half, Full, Stretch +- Ctrl-W Force aspect ratio of video to be treated as either 4:3 or 16:9 +- S Display the Program Guide (EPG). +- F6 Display the Program Finder. +- F8 Cycle through sleep timer settings Off->30m->1hr->1hr30m->2hr->Off +- Left arrow Skip back +- Right arrow Skip ahead + NOTE: During playback of a recording you can enter a number of minutes to + jump before using the Skip key. Otherwise, the configured defaults + will be used. Seconds can be entered by entering four digits in the + MMss format. + +- Page Up Jump back the configured number of minutes. (default is 10) +- Page Down Jump ahead the configured number of minutes. (default is 10) +- Z or End Skip to next commercial break marker +- Q or Home Skip back to previous commercial break marker +- + or - Cycle through audio streams +- | or F9 Toggle mute +- [ or F10 Decrease volume +- ] or F11 Increase volume +- Ctrl+B Jump to the beginning of the recording / ringbuffer. + +When in Teletext Menu mode: +- Up/Down Previous/Next Page +- Left/Right Previous/Next Subpage +- T Exit Teletext Menu +- F2-F6 Menu Red, Green, Yellow, Blue, or White, respectively +- F7 Toggle Background on/off +- F8 Reveal hidden text. + +When MHEG ITV is enabled: +- F2-F5 Menu Red, Green, Yellow, or Blue, respectively +- F6 Exit key, exits from interactive mode on some channels +- F7 Text key, enters interactive mode on some channels +- F12 EPG key, enters EPG mode (New Zealand only). + The effect of these keys depends on what is being displayed. The arrow, + Enter, and 0-9 keys may also be used. + +Without the stickykeys option selected: + +- Left arrow to rewind the configured number of seconds. (default is 5) +- Right arrow to fast forward the configured number of seconds. (default is 30) +- < starts rewind mode as if stickykeys are selected. + If a jump amount is entered, jump to that position. +- > starts fast forward mode as if stickykeys are selected. + If a jump amount is entered, jump that amount from the end. + +With the stickykeys option selected: + +- Right starts fast forward mode. +- Left starts rewind mode. + While in fast forward or rewind mode. + - Left/Right increases the ff/rew speed. + - 0 plays at normal speed, but leaves the time indicator on screen. + - 1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest). + - 3 plays back at normal ff/rew speed. + - 4 - 9 plays back faster than normal ff/rew speed (9 is fastest). + - Space exits fast forward or rewind mode. + +With the video paused: + +- Left arrow Rewind one frame +- < or comma Rewind one second +- Right arrow Advance one frame +- > or period Advance one second + +Watching TV only: + +- 0-9 Enter a channel number... + If the channel is not unique or smart channel change is disabled + press Return/OK when done, to commit the channel change. +- G Rotate between the various Picture Adjustments (Colour, Hue, etc.) + for recording. These values affect the look for all recordings made + with the current capture card and are independent of the playback + picture settings. While Picture Adjustment is on-screen, use Left and + Right arrows to adjust. +- Ctrl-G The same as G, except it affects the look for all recordings made + on the current channel, independent of the capture card used. +- H Channel history. Each repeat steps back through the previous channels. +- O Turns on 'Browse' mode, allowing user to browse channels and program + info while watching current show FullScreen. +- / Change to the next "favorite" channel +- ? Mark/Unmark the current channel as a "favorite" channel +- Y Switch to the next available capture source +- Ctrl-Y Switch to the previous capture source +- C Change to the next available tuner card input +- F7 Monitor signal quality on a card capable of signal monitoring + +LiveTV while not in Browse Mode: +- Up/Down arrows Change the channel. + +LiveTV Browse Mode: +- Left browse program prior to current listed program. +- Right browse program following current listed program. +- Up browse program on channel above current listed channel/program. +- Down browse program on channel below current listed channel/program. +- / browse program on next favorite channel. +- 0-9 enter a channel number to browse. +- Space/Enter change channel to channel of current listed program. +- R Toggle recording of current program (cycles through types) +- ESC/O Exit Browse mode. + +Playback Recording +- Y Adjust Audio Sync +- R Cycle Commercial-Skip Mode + +Playback Recording Zoom Mode: +- Left Move video to Left +- Right Move video to Right +- Up Move video Up +- Down Move video Down +- PageUp Zoom In +- PageDown Zoom Out +- Space/Enter Exit Zoom mode leaving picture at current size and position +- ESC Exit Zoom mode and return to original size. + +If you have two or more tuner cards: + +- V toggle Picture-in-picture on or off +- B toggles the window focus (lets you change channels on the PiP window). +- N swaps the two channels by changing channels on both cards. + +While watching a recording: + +- SPACE or ENTER will set a bookmark at that point. Next time you start the + recording, you will automatically jump forward to this point and clear the + bookmark. +- E or M enters/exits edit mode. + - The left and right keys move forward and backward. + - The up and down arrow keys alter the amount of time you jump forward and + backward. Increments are: nearest cutpoint, nearest video keyframe, + 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and + 10 minutes. + - The page up and down keys move forward and backward to the nearest cut + point. + - The < or comma and > or period keys move forward or backward by 10 times + the normal jump amount. + - Space/Enter allows you to set or delete a cut point. + - 'Z' loads the commercial skip list (if one exists) into the cutlist. + - 'C' and 'Q' clear all cut points in the cutlist. + - 'I' inverts the cutlist. +- X queues the current recording for transcoding. +- O brings up menu to allow toggling settings such as Commercial Auto-Skip, + Auto-Expire, etc. +- D exits the current recording and displays the Delete menu for it. + + +EPG +--- + +- Arrow keys are used to move the highlighted program point around. +- The keys A, D, S, W perform the same as left, right, down and up. +- PageUp and PageDown move the channel list up or down a page. +- Home and End move the highlight left or right by one day. +- Control-Left and Control Right, <, >, period and comma keys move the + highlight left or right by one page. +- The keys 9, 3, 7 and 1 (like a numeric keypad) perform the same as PageUp, + PageDown, Home and End. +- I will bring up more information about a show, and allow you to schedule + a recording. + - If you select "Record this showing" while watching Live TV you can + "Instant Record" a program. +- Space or Enter will allow you resolve conflicts or change overrides. + If the program is not already scheduled to record, it will act like + pressing I instead. +- Pressing M when on a channel will change to that channel. +- Pressing ESC or C exits without changing the channel. +- Pressing R will change the current item from Recording/Not-Recording. + Successive keypresses cycle through the scheduled recording type list. +- Pressing X will change the channel to the currently selected channel without + leaving the EPG (Most useful in the alternate EPG) +- Pressing '?' will mark/unmark the current channel as a "favorite" +- Pressing '/' or 4 will toggle the guide listing between all channels and + "favorites". + +Set Program Recording Priorities and Set Channel Recording Priorities +--------------------------------------------------------------------- + +- Right increases priority value. +- Left decreases priority value. +- 1 sorts by title. +- 2 sorts by priority. +- Home/End to toggle sort priority. +- I to edit recording options. +- ESC commits changes and exits. + +Viewing Scheduled Recordings/Resolving Conflicts +------------------------------------------------- + +- 1 to show all recordings. +- 2 to show only important recordings. +- Home/End to toggle show showing all/important. +- I to edit recording options. +- Space or Enter to resolve conflict or override. + +Viewing Search Listings +----------------------- +- Home to change to the previous view if applicable. +- End to change to the next view if applicable. +- M to select another view if applicable. + - In the title and description search popup, press M again to edit or + delete the selected view. + +Program Finder +-------------- +- R will change the current item from Recording/Not-Recording. + Successive keypresses cycle through the scheduled recording type list. +- 4 switch to the Program Guide. +- 5 move to the middle of the active list. + +Recording Profiles Setup Screen +------------------------------- + +- D on a custom profile group displays a popup to delete the group. + +Recording Groups +---------------- + +Recording Groups allow you to separate programs into user-defined +categories, such as "Kids", "Alice", "Bob", etc. This can be used to reduce +clutter, or to segregate content if you use the PIN function. + +In the Watch Recordings Screen +- M to change the view or to set a group password +- I to move a program from one Recording Group to another + +Watch Recordings Screen +----------------------- + +- "1" or F1 to get a popup on the meaning of the icons +- / to tag a recording. Tagged recordings can be played (in order or + shuffled) and deleted as a group. You can also change the + recording group for several recordings at once by tagging them and + using the popup INFO menu to change the recording group. +- ? to clear the tagged list. + +Remote Controls +--------------- + +If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function. + +If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls. + +This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. + + +Remote Control LIRC Keystroke Function +-------------- -------------- -------- + +0 - 9 0 - 9 channel selection, EPG navigation, + ff/rew speed setting (with stickykeys) + +Left Arrow Left scroll left, rewind +Right Arrow Right scroll right, fast forward + +Up Arrow Up scroll up, channel change up +Down Arrow Down scroll down, channel change down + +Select / OK / Play Space Select item, play (with stickykeys) + set bookmark + +Cancel Escape Cancel, quit playback + +Menu m EPG (from watching TV) + edit (from playback). + +Pause p Pause + +Other key 1 i Information + +Other key 2 c Change tuner card input + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html new file mode 100644 index 0000000..2f9fb22 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-1.html @@ -0,0 +1,272 @@ + + + + + Installing and using MythTV: First things first. + + + + + +Next +Previous +Contents +
+

1. First things first.

+ +

+

+ + +NOTE: Please note that I, Robert Kulagowski, am NOT the +author/programmer of the MythTV application! I can not give you +personalized installation support. If you are having issues installing +MythTV you should examine the archives, or post your question to the +MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? +messages - I will simply instruct you to ask your question on the +mythtv-users mailing list. +
+

+

1.1 What is MythTV? +

+ +

MythTV is a GPL licensed suite of programs that allow you to build the +mythical home media convergence box on your own using Open Source software +and operating systems. MythTV is known to work on Linux and Mac OS X +(PowerPC and Intel). It does not run on Windows.

+

MythTV has a number of capabilities. The television portion allows you to +do the following: +

    +
  • You may pause, fast-forward and rewind live Television.
  • +
  • You may install multiple video capture cards to record more than one +program at a time.
  • +
  • You can have multiple servers (called "backends"), each with multiple +capture cards in them. All scheduling is performed by the Master backend, +which arbitrates which recording will be performed by each device. All +recording requests are managed by the Master backend, so you can schedule a +recording from any client.
  • +
  • You can have multiple clients (called "frontends" in MythTV parlance), +each with a common view of all available programs. Any client can watch any +program that was recorded by any of the servers, assuming that they have the +hardware capabilities to view the content; a low-powered frontend will not +be able to watch HDTV, for example. Clients can be diskless and controlled +entirely by a remote control.
  • +
  • You may use any combination of standard analog capture card, MPEG-2, +MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate +hardware, MythTV can control set top boxes, often found in digital cable and +satellite TV systems.
  • +
  • Program Guide Data in North America is downloaded from +schedulesdirect.org, a non-profit organization which has licensed data from +Tribune Media Services. This service provides almost two weeks of +scheduling information. Program Guide Data in other countries is obtained +using XMLTV. MythTV uses this information to create a schedule that +maximizes the number of programs that can be recorded if you don't have +enough tuners.
  • +
  • MythTV implements a UPNP server, so a UPNP client should automatically +see content from your MythTV system.
  • +
+ +Other modules in MythTV include: +
    +
  • MythArchive, a tool to create DVDs
  • +
  • MythBrowser, a web browser
  • +
  • MythControls, an application to configure your remote control
  • +
  • MythFlix, a Netflix module
  • +
  • MythGallery, a picture-viewing application
  • +
  • MythGame
  • +
  • MythMusic, a music playing / ripping application which supports MP3 +and FLAC
  • +
  • MythNews, a RSS news grabber
  • +
  • MythPhone, phone and videophone using SIP.
  • +
  • MythVideo, DVD ripper and a media-viewer for content not created within MythTV
  • +
  • MythWeather
  • +
  • MythWeb, which allows you to control your MythTV system using a web +browser. With MythWeb, you can schedule and delete recordings, change +keybindings and more. With proper security, you may even schedule a program +over the Internet and have it immediately acted on by the Master backend.
  • +
+

+

1.2 QuickStart +

+ +

Custom mini-distributions are available to make it easier to install +MythTV. A mini-distribution removes many of the "general purpose" +workstation / server software packages that may be installed by default if +you use one of the big-name OS packages.

+

See +http://mysettopbox.tv if you'd +like to install a custom version of Knoppix optimized for MythTV.

+

See +http://www.minimyth.org if you'd like +to install MythTV onto a diskless system.

+

See +http://bit.blkbk.com if you'd +like to install MythTV on a Xbox. +NOTE: Site appears unmaintained.

+

See +http://wilsonet.com/mythtv/ for instructions tailored to RedHat's +Fedora Core distribution.

+

See +http://www.mythbuntu.org if +you'd like to install a customized version of Ubuntu optimized for MythTV.

+

There is a MythTV wiki at +http://wiki.mythtv.org.

+

If you are installing this version for Schedules Direct support, please see +the +Migrating from DataDirect Labs to Schedules Direct section for additional information.

+ +

1.3 Upgrading from previous versions +

+ +

The upgrade from previous versions should be transparent. Any changes to +the database structure should be applied automatically.

+

It is strongly recommended that you back up your database before +installing a new version of MythTV.

+

See +Saving or Restoring the database for instructions.

+ +

1.4 How to obtain this document / PDF versions of this document +

+ +

This HOWTO document is maintained at the primary MythTV website: +http://www.mythtv.org by Robert +Kulagowski +mailto:rkulagow@rocketmail.com.

+

This document is available as a single-page HTML document at +http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html or as a PDF +at +http://www.mythtv.org/docs/mythtv-HOWTO.pdf.

+

This HOWTO is for MythTV v0.21

+

Release notes for this version may be found in the MythTV Wiki at +http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21

+ +

1.5 Books about MythTV +

+ +

If you would like to purchase a book specifically about MythTV:

+

+

    +
  • Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and Korelc
  • +
  • Practical MythTV: Building a PVR and Media Center PC, ISBN 978-1590597798 by Smith and Still
  • +
+

+ +

1.6 Document conventions +

+ +

The following conventions are used throughout this document.
+boldface - used for program names.
+typewriter - used for program paths.
+emphasis - Pay attention here.

+

+

+ + +Pay more attention. +
+

+

+

+ + +Ignore at your own peril. +
+

+

+

+ + +Feature that has been added to SVN (subversion, a revision control system) +but is not available in the current release. +
+

+ +

1.7 Mailing lists / getting help +

+ +

It's recommended that you join the user list at +http://www.mythtv.org/mailman/listinfo/mythtv-users. The developer +list is at +http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev. Please keep +the developer list strictly for development-related issues.

+

Searchable archives for the lists are available at +http://www.gossamer-threads.com/lists/mythtv/.

+ +

1.8 IRC +

+ +

There are two IRC channels dedicated to MythTV which can be found on +irc.freenode.net +

    +
  • mythtv
  • +
  • mythtv-users
  • +
+

+

The mythtv channel is where the developers discuss code. It is +not a user-support channel. Please don't ask non-development +related questions there.

+

+

+ + +Really. Even if there's no one in the mythtv-users IRC group or everyone +seems to be ignoring you. +
+

+ +

1.9 Bug database +

+ +

If you feel you need to contribute to a bug database, use the MythTV bug +ticketing system at +http://svn.mythtv.org/trac.

+

Good entries will contain the following: +

    +
  1. Qt version
  2. +
  3. Linux distribution
  4. +
  5. gcc version
  6. +
  7. the last entry in config.log to detail how you compiled
  8. +
  9. MythTV version numbers (e.g.from mythfrontend --version)
  10. +
  11. Hardware
  12. +
  13. How you are able to reproduce the bug
  14. +
+

+

See the instructions on how to debug in +Section 22.

+

The bug database is not a chat room, so restrict your entries to what is +relevant. It's also not a repository of feature requests; a feature request +without an accompanying patch file to implement that feature will be quickly +closed. There is a feature wishlist on the wiki at +http://www.mythtv.org/wiki/index.php/Feature_Wishlist. There is no +guarantee that anything on the wishlist will ever get code written to +implement it.

+

If a developer closes out your bug, it's likely you didn't provide enough +information. Don't re-open a bug without providing additional information.

+ +

1.10 Contributing to this document +

+ +

Contributions to the HOWTO are welcome, especially if you find a +grammatical or spelling error, or if the wording of something is just plain +confusing.

+

If you'd like to make a new contribution, create a ticket at +http://svn.mythtv.org/trac and +click "New Ticket". The type should be set to "patch" and the owner set to +"rkulagow" to ensure that I see your contribution.

+

Please send it as either SGML or as plain text. NO HTML. The +source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of +SGML! A quick look at the source of this HOWTO will show that it is not +difficult, because there aren't that many tags to worry about, so at least +try to submit as SGML. See the Linuxdoc HOWTO at +http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html for information +on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml +file as an example.

+

To create the actual patch, run diff -u origfilename newfile > +doc.patch and attach your contribution to the trac ticket.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html new file mode 100644 index 0000000..636696e --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-10.html @@ -0,0 +1,387 @@ + + + + + Installing and using MythTV: Configuring mythfrontend. + + + + + +Next +Previous +Contents +
+

10. Configuring mythfrontend.

+ +

Once you have completed configuration of your backend systems, the next +step is to configure the frontend client.

+

When you start mythfrontend for the first time, it will attempt to connect +to a configuration database on the local machine. If there is none, a +"Database Configuration" screen will appear, and you will need to fill in +some details. The "Host name" field needs the backend or database server's +IP address or DNS name, and the User or password fields may need to be set +to match your database user accounts. After editing those fields, press +Enter twice to write these configurations on your local machine, and attempt +to connect to the database. If you make any mistakes, the screens will pop +up again.

+

Now that mythfrontend has started up, you should have a number of +buttons/choices. Before doing anything, go to TV, then to Setup and +configure the frontend client. +

+ + +NOTE: You should go through the various setup screens in +mythfrontend before using any other modules to ensure that the the database +is correctly initialized. +
+

+

10.1 General +

+ +

The General screen has configuration items that don't really fit anywhere +else. The first few configuration items ask you to indicate the number of +seconds to record before or after a program, which is useful if the +broadcast network or your system clock are out of sync and will help prevent +you missing the beginning or end of a program.

+

To change the value, use the left and right arrow keys to increment and +decrement the number of seconds. When you're satisfied with the result, use +the down arrow to put the input focus on the Next button or press RETURN to +continue to the next page.

+

The next page has a number of options to do with how channels are displayed +on your system. The help text will give you more information. Move the +focus to Next and press the space bar to continue.

+

The last General page sets up some final configuration items. See the help +text for more information.

+ +

10.2 Appearance +

+ +

This set of screens is mostly concerned with how MythTV will look on your +system. From here, you can choose different themes and set the resolution +of your system.

+ +

10.3 Program Guide +

+ +

Fairly self explanatory. Note that the alternate program guide does not +use the same font settings as defined in Appearance, so if the EPG is +unreadable this is where you make the adjustments to fonts, number of +elements displayed, etc.

+ +

10.4 Playback +

+ +

The one configuration item which may cause problems on your system is the +"Deinterlace playback" setting. MythTV uses a linear blend algorithm for +deinterlacing, which will improve how the image looks on your screen. +Deinterlacing requires that your processor support SSE. (Streaming SIMD +Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the +Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II +CPUs do not have SSE, so make sure you haven't enabled deinterlacing if +your processor doesn't support it. If you enable it, and your processor +doesn't support SSE, you will get "Illegal Instruction" errors.

+

To determine if you've got SSE on an Intel processor, you can: +

+
+$ cat /proc/cpuinfo
+[snip]
+flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
+cmov pat pse36 mmx fxsr sse
+
+
+

+

Notice the sse at the end of the line - this tells you that this +processor will be able to deinterlace correctly.

+

On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's +implementation of SSE instructions, so if your processor has 3dnow you +shouldn't have any issues with deinterlacing.

+

Video Filters

+ +

MythTV provides a means of employing video filters while recording and +during playback. These filters can be used to improve or modify the video +image, including hiding the effects of an interlaced image or reducing the +impact of noise in a poor video signal. The following is a brief +introduction to introduce you to the filters that are available in MythTV +version 0.20 and higher.

+

Applying filters

+ +

One or more filters can be included in a "filter chain". The filters to +be used are identified in a "filter string". A filter string is a group of +filter names and parameters separated by commas. To include parameters, the +filter name is followed by "=" and the parameter information. There should +be no spaces in the filter string. Here is an example filter string:

+

With parameters: kerneldeint=10:1,denoise3d=12

+

Without: kerneldeint,denoise3d

+

Recording filters are set for each individual channel. These may be used +when encoding in software (MPEG-4, RTjpeg) but do not apply when using a +capture card with hardware encoding such as those supported by the ivtv +driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and +select the "Channel Editor". On the first page for each channel, you can +enter a filter string in the box titled "Video filters". If you are running +"mythweb" on your web server, you can click on "Settings" then "Channels" +and enter filter strings in the "videofilters" column.

+

Playback filters are per-host and apply to any recording you watch from the +frontend where filters have been applied. Playback filtering can only +work with software decoding so the viaslice, xvmc, and ivtv outputs ignore +filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. +Enter your filter string in the box titled "Custom Filters".

+ +

Currently Available Filters

+ +

"Deinterlace Playback" checkbox.

+

This implements special behavior needed for the "bobdeint" filter but can +also be used to choose any of the deinterlace filters. If you prefer, you +may leave this unchecked and include any of the deinterlace filters, other +than "bobdeint", in your custom filter chain.

+

o The "invert" filter

+

Invert ignores any parameters and inverts the pixel values of the video +frames. In other words, a negative image. This would rarely be useful but +may be a good example to verify that your filter strings take effect.

+

o The "linearblend" filter

+

It is a simple deinterlacing filter that ignores parameters and works by +blending adjacent lines. It replaces combing in interlaced video with a +less distracting "ghost" image.

+

o The "bobdeint" filter

+

This filter splits the interlaced image into two separate fields that +can be line doubled then displayed at twice the frame rate. If the +display is at the same refresh rate as the recording (59.92Hz NTSC or +50Hz PAL) this will cause each refresh to show objects in motion in +a new position with no jagged edges. However, if the display is not +synchronous, it will cause flickering or the appearance of the picture +moving up and down by one line.

+

+

+ + +NOTE: This filter requires the frame rate to be doubled +and therefore can only be used with the "Deinterlace Playback" checkbox. +Do not include this in your filter chain. +
+

+

o The "kerneldeint" filter

+

Kerneldeint is a more complex deinterlacing filter which applies a filter +kernel using input from several lines. It generally removes combing without +a "ghost" image, sometimes leaving a faint outline of the image from the +other field. It is considered to be less distracting to watch than +linearblend or no filter at all. It accepts one or two integer parameters +separated by a colon.

+

The first parameter is the filter threshold and defaults to 12. Adjacent +lines differing by more than the threshold value are filtered. The second +option defaults to 0. If set to a non-zero value, it will cause the filter +to skip chroma, and filter only the luminance. It may be useful on some +capture cards which do not capture the chroma fields of interlaced video +correctly.

+

o The "onefield" filter

+

This is a simple one-field deinterlacing filter that uses only one field of +the interlaced video. By default it keeps the top field, though passing the +parameter "bottom" will cause it to keep the bottom field instead.

+

This filter is primarily useful for those who display 1080i HDTV signals +with a video mode that has 540 pixels vertically. The advantage over other +deinterlacing filters is that scenes with motion never show combing or +ghosting.

+

o The "adjust" filter

+

This filter adjusts the digital values for luma and chroma to ensure that +they will fall within the ranges specified in the ITU-R601 standard. By +default, this corrects a known problem for the luma range used by bt8x8 +chips which causes video to look washed out. If parameters are passed, there +need to be exactly six. However, passing a single parameter of "-1" will +disable the filter.

+

1: luma minimum input value (int) +2: luma maximum input value (int) +3: luma gamma correction (float) +4: chroma minimum input value (int) +5: chroma maximum input value (int) +6: chroma gamma correction (float)

+

The default bt8x8 correction values are equivalent to +"16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 +luma, 16-240 chroma).

+

NOTE: If it is not already specified in the filter chain, this +filter will be automatically applied when recording with the "bttv" driver.

+

o The "quickdnr" filter

+

A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a +value from "0" for the least filtering to "255" for the greatest filtering. +With one parameter, the filter will compute the values it should use for all +of its variables. Two parameters will set the filter strength for luma and +chroma independently. If you are interested in how the algorithm works, you +may examine the source code to see how four parameter are used.

+

o The "denoise3d" filter

+

A slower denoiser that applies a spatial and temporal low-pass filter. The +spatial filter can remove some noise that quickdnr can't, but a more +powerful CPU is needed. This filter accepts 3 float parameters:

+

+

    +
  • luma spatial filter strength
  • +
  • chroma spatial filter strength
  • +
  • luma temporal filter strength
  • +
+

+

Reasonable defaults will be selected for omitted parameters. The chroma +temporal filter strength is calculated from the other filter strengths.

+

o The "crop" filter

+

Covers edges of video with black bars. This helps improve video quality +when the edges of the frame are distorted. By default, this removes 16 +pixels from each edge. This can optionally take four parameters representing +top:left:bottom:right. The number times 16 is the number of pixels to remove +so, for example, the default is "=1:1:1:1".

+

o The "forceyv12" and "forceyuv422p" filters

+

These force the filter manager to use the given format. You can use one of +these at the head of a filter chain to change the capture format. The most +likely use would be forceyuv422p to use YUV422P capture on cards with known +chroma interlacing problems with YV12.

+

There are some filters included in the MythTV source code that should +not be used:

+

o The "forcergb24" and "forceargb32" filters

+

The two RGB formats should not be used because there is no conversion filter +for them yet.

+

o The "convert" filter

+

It exists but don't use it. The filter manager uses this filter +automatically when it is unable to match the input/output formats of two +adjacent filters.

+

o The "postprocess" filter

+

While this exists in MythTV source code, it is currently not recommended for +use.

+ +

Usage Considerations

+ +

There are trade-offs to consider when deciding if it would be wise to use +a filter. Any processing will modify the original image so you should assess +if the filter has made a noticeable improvement to the picture in order to +justify the impact of the processing. Adding any filter will inherently +increase CPU usage. The impact can vary dramatically depending on your CPU +type and speed, the resolution of the recording, which filters you are using +and other factors. You can only determine what is right for you through +experimentation. However, as a starting point, here are some filter strings +that you may find useful:

+

For typical broadcast stations: "kerneldeint,quickdnr"

+

For stations with poor signal quality: "linearblend,denoise3d=12"

+

For synchronous TV-out: check Deinterlace with "Bob (2x framerate)"

+ +

10.5 Recording +

+ +

Depending on your capture card, MythTV offers different video encoders. +The following types of hardware encoding cards are supported: +

+ +For cards without hardware encoding capabilities (all cards supported by +V4L not listed above), Myth includes two methods for software encoding: +RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, +but it generates larger files than MPEG-4 for a given recording.

+

For DVB and HDTV cards, no further configuration is required after +setting up the card using the 'mythtv-setup' program. +For all other cards, configuration is done through MythFrontend. +Selecting 'Recording Profiles' from the 'TV Settings' screen will list +the profiles currently available for the cards in your system. +Depending on what types of cards you have installed you may see: +

+
+(Create new profile group)
+Software Encoders
+Hardware MPEG Encoders
+Hardware MJPEG Encoders
+Transcoders
+
+
+ +The '(Create new profile group)' option will allow you to create custom +profiles in case you have multiple backends. Note that custom profiles +are per backend and card type. If you have 2 MPEG-2 encoders in a given +backend system, creating a custom profile will affect both of them. This +option should not be needed otherwise.

+

The 'Transcoders' group is a little different from the others. Selecting +this group will result in a menu with the following options: 'RTjpeg/MPEG-4' +and 'MPEG-2'. These types indicate what transcoder options will be used for +a given input type (i.e. the 'MPEG-2' settings would be used to transcode +MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or +PVR-x50) does not matter. Configuration of the options is the same as below +(although any resolution settings will be ignored).

+

Selecting any of the other options will show a new screen with a list of +four profiles: +

    +
  • Default
  • +
  • Live TV
  • +
  • Low Quality
  • +
  • High Quality
  • +
+

+

The Default profile will be used for any recording which does not otherwise +have a specific profile assigned. The 'Live TV' profile will be used when +watching TV. The remaining two profiles are available for customizing to +allow for more precise control over what quality is used for a given +program.

+

Selecting a profile will allow you to adjust the relevant options for that +card. The most significant setting is the recording resolution, but you can +also choose encoding format, audio format, and tweak other encoder specific +properties.

+

+

+ + +NOTE: although the width and height can be changed to almost +anything, if you start MythTV and don't see video or you get "segmentation +fault" errors, it is likely that the video4linux (v4l) subsystem did not +like the height and width parameters specified. It's best to leave the +default as-is until you're sure that MythTV is operational. +
+

+

See the +What capture resolution should I use? How does video work? section for more information.

+ +

10.6 Xbox Frontends +

+ +

MythTV is able to control the LED on the Xbox to indicate backend +recording status.

+

To control the LED, you will need the blink program from the +xbox-linux project, which is installed as /bin/led on GentooX. On +Xebian (the new Ed's Debian) you must install it yourself. On other +distributions it may or may not be installed as a program called +blink and should be located in your path. (Type which +blink to see if the program is available.) If you do not have +blink, you may obtain it from the Xbox-Linux project site at +http://xbox-linux.sf.net/. The +program you need is part of the eds_i2c_staff module in CVS. Note +the spelling.

+

Once you have installed blink you will need to set permissions. +blink needs write permission to the i2c device to function +properly. There are three methods to accomplish this. First, you could run +mythfrontend as root, which is the simplest method, but could +potentially be a security risk. Next, you may make the blink +binary setuid root, which allows non-privileged users to run a program with +root capability. This is done by typing the command: +

+
+$ su
+# chmod u+s /path/to/blink
+
+
+ +The final technique would be to set the /dev/i2c/0 device read/write +for all users, but this is the least preferred method.

+

Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. +On the second page check the 'Enable Xbox Hardware' option. Upon reentering +the settings, you should have a new option named 'Xbox'. Within this option +you may select the distribution, LED colors for recording and the update +interval. If you select GentooX as the distribution led will be +used as the blink binary name, otherwise, blink is used. +Colors should be self explanatory. The update interval determines how often +the frontend should poll the backend to determine if the status has changed.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html new file mode 100644 index 0000000..696189f --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-11.html @@ -0,0 +1,626 @@ + + + + + Installing and using MythTV: Using MythTV. + + + + + +Next +Previous +Contents +
+

11. Using MythTV.

+ +

+

+ + +NOTE to Red Hat/Fedora 4 users: Red Hat Linux and Fedora Core ship +with Gnome as the default desktop environment. However, Gnome seems to have +issues with window focus and window switching which sometimes cause +mythfrontend to obscure the video. KDE does not seem to have any such +issues. Therefore you will need to switch to KDE by selecting +RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose "KDE". +NOTE to Fedora Core 5 and 6 users: Fedora 5 and 6 no longer have +this tool in the Menu. Use "switchdesk KDE" from a command line. Read "man +switchdesk" for further information about changing to other desktop +environments. +
+

+

11.1 Keyboard commands +

+ +

The keys.txt file describes what the various keyboard commands are. +If you have loaded mythweb, you may change the default keys to your liking.

+

mythfrontend

+ +

+

+
+Arrow keys used to move the highlight point around
+ALT-F4 exit out of the application
+Space/Enter take action on the item under the highlight point
+P play in both "Watch a Recording" and "Delete a Recording"
+D delete in both "Watch a Recording" and "Delete a Recording"
+U to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens
+O to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens
+I edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. +
+

+

+

Watching TV or a recording

+ +

+

+
+Up or down keys change the channel
+num pad Type a number to enter a channel number or jump amount (HHMM format)
+P pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode.
+C change inputs on TV Tuner card
+ESC quits
+I puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position.
+M brings up the electronic program guide (Grid) -- see the EPG section
+Page Up jump back the configured number of minutes (default is 10)
+Page Down jump ahead the configured number of minutes (default is 10)
+End or Z skip to next commercial break marker
+Home or Q skip back to previous commercial break marker
+T toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext.
+F rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time.
+[ or F10 decrease volume
+] or F11 increase volume
+| or F9 toggle mute
+/ jump to the next "favorite" channel
+? mark/unmark the current channel as a "favorite"
+U increase the play speed
+J decrease the play speed
+A Adjust time stretch (speed up or slow down normal play of audio and video
+W cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom  (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black  sidebars in TV signal)
+F8 toggle the sleep timer 30m->1hr->1hr30m->2hr->Off
+CTRL-B Jump to the beginning of the recording / ringbuffer
++ Switch between audio streams
+Left (if a jump amount is entered) to jump back that amount
+Right (if a jump amount is entered) to jump ahead that amount
+
+
+ Without the stickykeys option selected
+Left rewind the configured number of seconds (default is 5)
+Right fast forward the configured number of seconds (default is 30)
+< starts rewind mode as if stickykeys are selected
+> starts fast forward mode as if stickykeys are selected
+
+
+ With Stickykeys option selected
+Right starts fast forward mode
+Left starts rewind mode
+
+
+ In fast forward or rewind mode:
+Left/Right increases the ff/rew speed
+0 plays at normal speed, but leaves the time indicator on screen
+1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest)
+3 plays back at normal ff/rew speed
+4-9 plays back faster than normal ff/rew speed (9 is fastest)
+Space exits fast forward or rewind mode
+
+
+ While video is paused:
+Left rewind 1 frame
+< rewind 1 second
+Right advance 1 frame
+> advance 1 second +
+

+

+

Watching TV only

+ +

+

+
+G rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust.
+H Channel history. Each repeat steps back through the previous channels.
+O Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen.
+Y switch between multiple capture cards.  NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.)
+
+

+

+

LiveTV Browse Mode

+ +

+

+
+Left browse program prior to current listed program
+Right browse program following current listed program
+Up browse program on channel above current listed channel/program
+Down browse program on channel below current listed channel/program
+/ browse program on next favorite channel
+0-9 enter a channel number to browse
+Space/Enter change channel to channel of current listed program
+R/r Toggle recording of current program (cycles through types)
+ESC/O Exit Browse mode +
+

+

+

Playback Recording Zoom Mode

+ +

+

+
+Left Move video to Left
+Right Move video to Right
+Up Move video Up
+Down Move video Down
+PageUp Zoom In
+PageDown Zoom Out
+Space/Enter Exit Zoom mode leaving picture at current size and position
+ESC Exit Zoom mode and return to original size +
+

+

+

If you have two or more tuner cards

+ +

+

+
+V toggle Picture-in-picture on or off
+B toggles the window focus (lets you change channels on the PiP window)
+N swaps the two channels by changing channels on both cards +
+

+

+

Watching a recording only

+ +

+

+
+Space/Enter set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark.
+X queues the current recording for transcoding
+O brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc.
+D exits the current recording and displays the Delete menu
+E or M enters/exits edit mode.
+
+
+ In edit mode
+Left/Right move forward and backward
+Up/Down alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes.
+PageUp/PageDown move forward and backward to the nearest cut point
+< or > move forward or backward by 10 times the normal jump amount
+Space/Enter allows you to set or delete a cut point
+Z loads the commercial skip list (if one exists) into the cutlist
+C or Q clear all cut points in the cutlist
+I Inverts the cutlist +
+

+

+

EPG

+ +

+

+
+Arrows are used to move the highlighted program point around
+A, D, S, W perform the same as left, right, down and up
+PageUp/PageDown move the channel list up or down a page
+Home/End move the highlight left or right by one day
+Ctrl+Left or < move the highlight left by one page
+Ctrl+Right or > move the highlight right by one page
+9, 3, 7, 1 (like a numeric keypad) perform the same as PageUp, PageDown, Home and End
+I bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program.
+Space/Enter allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'.
+M when on a channel will change to that channel
+ESC or C exits without changing the channel
+R change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list.
+X change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG)
+? mark/unmark the current channel as a "favorite"
+/ or 4 toggle the guide listing between all channels and filtered "favorites" +
+

+

+

Setting Program or Channel Recording Priorities

+ +

+

+
+Right increases priority value
+Left decreases priority value
+1 sorts by title
+2 sorts by priority
+Home/End toggle sort priority
+I edit recording options
+ESC commits changes and exits +
+

+

+

Viewing Scheduled Recordings/Resolving Conflicts

+ +

+

+
+1 show all recordings
+2 show only important recordings
+Home/End toggle show showing all/important
+I edit recording options
+Space/Enter resolve conflict or override +
+

+

+

Viewing Search Listings

+ +

+

+
+Home change to the previous view if applicable
+End change to the next view if applicable
+M select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. +
+

+

+

Recording Profiles Setup Screen

+ +

+

+
+D on a custom profile group displays a popup to delete the group
+
+

+

+

Recording Groups

+ +

In the Watch Recordings screen, Recording Groups allow you to separate +programs into user-defined categories, such as "Kids", "Alice", "Bob", etc. +This can be used to reduce clutter, or to segregate content if you use the +PIN function. +

+
+M change the view or to set a group password
+I move a program from one Recording Group to another +
+

+

+

Watch Recordings Screen

+ +

+

+
+1 or F1 Meaning of the icons
+/ Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the  Menu (m) button, selecting "Playlist options",  then "Change Recording Group".
+? Clear the tagged list. +
+

+

+

Remote Controls

+ +

If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function.

+

If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls.

+

This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. +

+
+REMOTE CONTROL LIRC KEYSTROKE FUNCTION
+0 - 9 0 - 9 channel selection, EPG navigation, ff/rew speed setting (with stickykeys)
+Left Arrow Left scroll left, rewind
+Right Arrow Right scroll right, fast forward
+Up Arrow Up scroll up, channel change up
+Down Arrow Down scroll down, channel change down
+Select / OK / Play Space Select item, play (with stickykeys) set bookmark
+Cancel Escape Cancel, quit playback
+Menu m EPG (from watching TV) edit (from playback).
+Pause p Pause
+Other key 1 i Information
+Other key 2 c Change tuner card input +
+

+

+ +

11.2 Using themes with MythTV +

+ +

MythTV is "themeable", meaning that the visual appearance of the program +can be modified by the user without re-compiling or altering the program +functionality. Download the MythThemes tarball from the website and untar it:

+

+

+
+$ tar -xjf myththemes-0.21.tar.bz2
+$ cd ~/myththemes-0.21
+$ qmake myththemes.pro
+$ su -
+# make install
+# exit
+$
+
+
+

+

The theme will now be available in the mythfrontend Appearance section.

+ +

11.3 Adding DishTV information to the database +

+ +

A script for adding Pay Per View information into the MythTV database for +DishTV subscribers is available at +http://www.mythppv.com/.

+ +

11.4 Adding support for an external tuner +

+ +

MythTV supports changing the channel on an external tuner. If you have +an external tuner, such as a DirecTV or digital cable set top box, you +should add /usr/local/bin/changechannel to your Input Connections in the +mythbackend configuration GUI.

+

However, there is not changechannel program per-se, because this is +going to be dependent on what sort of external tuner you have. Look in the +contrib/channel_changers directory for a number of programs and +scripts which may be used to change channels. Once you find one which +works, copy it to /usr/local/bin/changechannel.

+

Feel free to browse some of what sort of hardware is available at +http://store.snapstream.com/accessories.html, or if you wish to +assemble your own, rather than purchase, the following may be helpful: +http://www.dtvcontrol.com/ for +cable pinouts.

+ +

11.5 Using Shutdown/Wakeup +

+ +

What does the MythTV Shutdown/Wakeup function do? The scheduler on the +Master backend (MBE) keeps track of the idle status of the entire MythTV +system, including the Slave backends (SBE). If it considers the system to be +idle, and thus ready to shutdown, it sets the wakeuptime to the time of the +next recording and then proceeds to shut down all Slave backends and then +itself. Once it is time to begin recording, the Master backend and the Slave +Backends are automatically woken up. This system allows MythTV to record +like a normal VCR, thereby conserving power when not in active use.

+

In order to use the Shutdown/Wakeup function there must be some method of +waking up the Master backend. There are any number of solutions, but we +will discuss in detail two possibilities:

+

+

    +
  • Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) +packet to wake the Master backend. This assumes that you have the WOL tools +installed, and that your Master backend motherboard supports WOL.
  • +
  • Use your motherboard's BIOS wakeup capability. You'll need a motherboard +that supports BIOS wakeup, and some tools. Two that work are: +http://sourceforge.net/projects/nvram-wakeup and +http://www.malloc.de/tools/wakeup_clock.html
  • +
+

+ +

A deeper look into the operation

+ +

The scheduler keeps track of the idle status of the MythTV system. To +determine whether or not the MythTV system is idle, the following conditions +must be met for a period of time defined in the "Idle timeout (secs)" +parameter. +

    +
  • no client is connected to the server
  • +
  • no recording (neither LiveTV nor a regular recording) is currently taking place
  • +
  • no recording starts within a definable amount of time ("Max. wait for recording (min)")
  • +
  • the "pre Shutdown check-command" returns 0
  • +
+

+

If we get to this idle state the Master backend will set the wakeuptime using the "Set +wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will +then shut down the Slave backends and itself using the "Server halt command".

+

One caveat is that the scheduler tries to guess if the Master backend was started by a +wakeup call or by the user. If it thinks it was woken up by a user, it +blocks shutdown until a client connects to the Master backend, after which it will +behave as described above. To disable this feature, unset "Block shutdown +before client connected" in the mythfrontend Setup->Setup->General screen.

+

Once it is time to startup the system, the Master backend is woken up first and will +wakeup the Slave backends using the "Wake command for slaves". At this time, there is +no support for starting only the required Slave backend, so all Slave backends will startup.

+ +

Setting up the MythTV side of this extension.

+ +

There are a number of options that are used to control the Shutdown / +Wakeup feature.

+

Shutdown/Wakeup Options: +

    +
  • "Idle timeout (secs)" is the time the server waits while idle until a +shutdown occurs.
  • +
  • "Max. wait for recording (min)" is the time the Master backend waits for a recording +without shutting down. For example, this would be used to prevent a 10 +minute system shutdown if a recording is set to start 15 minutes from now.
  • +
  • "Startup before rec. (secs)" Sets how long before a programmed +recording the MythTV system will be woken up. This should be roughly be the +time your systems need to bootup, and if you have Slave backends, you'll +need to ensure this value is long enough for all your machines to perform +their bootup cycle.
  • +
  • "Wakeup time format" is the format of the wakeup time that is given in +the "Set wakeuptime command" as a parameter "$time". You need to set this +according to your wakeup mechanism. If you need seconds since the epoch +(1970-01-01) set the "Wakeup time format" to "time_t".
  • +
  • "Set wakeuptime command" is the command executed to set the new wakeuptime.
  • +
  • "Server Halt Command" is the command executed to shutdown the Master +backend and the Slave backends.
  • +
  • "pre Shutdown check-command" is used to give a +"Go/NO-GO" decision from a non-MythTV source. This command is executed +immediately before the shutdown would occur. The return value is use to make +the following choices: +
      +
    • If it returns a "0" the shutdown will occur as scheduled.
    • +
    • If it returns a "1" the "idle timeout" will be reset and the system +waits again for the timeout.
    • +
    • If it returns a "2" the entire shutdown sequence is reset. This means +that a new client connect is needed before a shutdown occurs, unless you have +the "Wait for client connect" setting disabled, in which case this is the same as +returning "1". An example of a use for this return value is to prevent the shutdown +if a user is currently logged in, or if a specific program (i.e. transcode, +automatic updates, etc.) is currently running. If you don't need it, leave +the field blank.
    • +
    +
  • +
+

+

The "WakeOnLan settings": +These settings have nothing to do with using BIOS or WOL wakeup, they are +the same for both. +

    +
  • "Master backend" This setting defines timings for the frontends to +wakeup the Master backend using WOL. Useful if your frontend can emit a WOL +packet so you don't need to physically go to the Master backend if you're +trying to watch TV.
  • +
  • "Reconnect wait time (secs)" is the time the frontend waits after +executing the "Wake command" before attempting to retry the connection. This +should be roughly the amount of time your Master backend needs for bootup. +Set to "0" to disable. The frontends will retry to connect for "Count of +reconnect tries" times before giving up.
  • +
  • "Wake command for slaves" is the one command executed to wake +your Slave backends. This should be a script that contains the calls to +wakeup all Slave backend systems.
  • +
+

+ +

Using WOL to wake your Master backend.

+ +

To use WOL to wake your Master backend you will need a WOL capable Master +backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) +on the Master backend. I use some little bash scripts to make my DSL router +wakeup my mythbox if required.

+

Replace $SERVER and $PORT with your own settings! +On my Master backend I have a script that gets called as 'setwakeuptime command' which +looks like the following: +

+
+#! /bin/sh
+echo $@ | nc $SERVER $PORT
+
+
+ +This simply cats the parameters (that is $time) to my 24/7 server. On my +$SERVER I have (x)inetd listening on $PORT starting a little script which +cares about setting the at-job. The following additions are necessary on the +$SERVER:

+

If you use inetd:

+

In /etc/inetd.conf add: +

+
+mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake
+
+
+ +If you use xinetd, save the following as mythwake in your +/etc/xinet.d/ directory: +
+
+service mythwake
+  {    
+        socket_type     = stream
+        wait            = no
+        user            = mythtv        
+        protocol        = tcp
+        id              = mythwake
+        server          = /usr/local/bin/mythwake
+  }
+
+
+ +and add the following to /etc/services: +
+
+mythwake        $PORT/tcp
+
+
+

+

Finally, /usr/local/bin/mythwake looks like: +

+
+#! /bin/bash
+#this should be a command to wake your server
+WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE"
+#first we need to delete all wake jobs in queue
+for JOB in atq | cut -f 1 ; do
+    atrm $JOB;
+done
+#now we read the date from 'nc'
+read date;
+#now set the atjob
+echo -e "$WAKECMD" | at $date ;
+
+
+ +SECURITY WARNING: +Be sure to secure $SERVER:$PORT from untrusted networks, because this +allows 3rd parties to run arbitrary code on your server!

+ +

Using BIOS wakeup to wake your Master backend.

+ +

Since I don't use this, I cannot say much about this. If your motherboard +supports any wakeup tool you have to call that tool as "Set wakeuptime +command" with the "Wakeup time format" suitable for that tool.

+

Wakeup the MySQL server using WOL

+ +

If your MySQL server and your Master backend are not on the same machine, +you can have the Master backend wake your MySQL server using WOL. You will +find the settings for this in the second page of the mythtv-setup program, +or at the end of mysql.txt. The meanings are the same as +discussed in "The WakeOnLan settings" above.

+ +

Tips/Tricks:

+ +

If, for example, one of the Slave backends is also your desktop computer, +you could simply use a little script as 'server halt command' which first +calls /sbin/shutdown -t TIMEOUT where TIMEOUT is a value sufficient +for you to react. You could then popup a window using *dialog, asking for +permission to shutdown. If you cancel the shutdown, simply call +/sbin/shutdown -c.

+

If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your +set-wakeuptime-script should stop the program that uses /dev/rtc before +setting the wakeuptime.

+

11.6 Controlling the mythfrontend via telnet +

+ +

To use this feature you must first enable it in Settings>General>General

+

The network control listens on port 6546, as demonstrated below:

+

+

+
+$ telnet basement 6546
+Connected to basement.
+Escape character is '^]'.
+MythFrontend Network Control
+Type 'help' for usage information
+---------------------------------
+# help
+Valid Commands:
+---------------
+jump               - Jump to a specified location in Myth
+key                - Send a keypress to the program
+play               - Playback related commands
+query              - Queries
+exit               - Exit Network Control
+
+Type 'help COMMANDNAME' for help on any specific command.
+
+# help jump
+Usage: jump JUMPPOINT
+
+Where JUMPPOINT is one of the following:
+channelpriorities    - Channel Recording Priorities
+channelrecpriority   - Channel Recording Priorities
+deletebox            - TV Recording Deletion
+deleterecordings     - TV Recording Deletion
+guidegrid            - Program Guide
+livetv               - Live TV
+livetvinguide        - Live TV In Guide
+mainmenu             - Main Menu
+...snip...
+# exit
+$
+
+
+

+

Please note that this feature only allows one connection at a time, so any +new connections will automatically terminate prior ones.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html new file mode 100644 index 0000000..f9cf96e --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-12.html @@ -0,0 +1,1112 @@ + + + + + Installing and using MythTV: Scheduling Recordings. + + + + + +Next +Previous +Contents +
+

12. Scheduling Recordings.

+ +

The MythTV master backend is responsible for managing the schedule for +all TV tuner cards on the master and any slave. Its job is to search the TV +listing for the shows you have requested and assign recordings to the TV +tuner cards. If none of the shows that you've chosen overlap, it simply +records all of them. However, if there are shows where the beginning +and end times overlap, the scheduler follows rules that you've specified or +makes logical decisions about what would be best if you haven't expressed your +preference. Further, the "Upcoming Recordings" page allows you make specific +decisions about what you really do and don't want to record.

+ +

12.1 Record Types +

+ +

When you choose a show that you would like to record from the +Options Page, there are eight different types of rules to help the +scheduler find which showings you would like to record.

+

+

    +
  • Single Record -- record only this title at this specific time and +this station. This is the best way to be sure that a certain showing will +be recorded. However, if the TV listings change and the show is not broadcast +at that time, the show will not be recorded but will be marked as Not Listed +to let you know that you should investigate. +
  • +
  • Find One -- this will record a title once from any of the times +that appear in the TV listings. This is useful for recording a movie +or special that has multiple showings because it allows the scheduler +to choose one that doesn't conflict. It is not a good choice for +recording a single episode of a series because it records the first +available showing of the title without regard to the episode +information. +
  • +
  • Record Weekly -- this records a show whenever the title is listed +on the same channel, weekday and time. Note that if the TV station +changes the schedule for a special episode, it would not be +recorded. However, you can add a Single record for the special +episode. If there are no matching showings in the TV listings, +a Not Listed item will be added to your schedule for the next +time slot to let you know that you should investigate. +
  • +
  • Find Weekly -- this will record a title once per week from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each week but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the week. +
  • +
  • Record Daily -- this records a show whenever the title is listed +for the time and station on any day of the week. Here again, a show +will not be recorded if the time was altered by the station. If there +are no matching showings in the TV listings, a Not Listed item will be +added to your schedule for the next time slot to let you know that you +should investigate. +
  • +
  • Find Daily -- this will record a title once per day from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each day but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the day. +
  • +
  • Channel Record -- records one showing of each unique episode from +any of the times the title is listed on this station. This is perhaps +the most common rule to use for most shows. +
  • +
  • Record All -- records one showing of each unique episode from +any of the times this title is listed on any channel. This can be +useful if a station has sister stations where shows are rebroadcast +allowing the scheduler to record rebroadcasts on the other station +when the original airing cannot be recorded.
  • +
+

+ +

12.2 Scheduling Options +

+ +

Priority

+ +

By default, all shows you select have equal value to the +scheduler. There are a set of rules to make good choices when +two or more shows are in conflict. However, priority values let the +scheduler know what you prefer so that it can set the schedule based +on your preferences.

+

Initially, recording rule priority values are set to zero. You may choose +to leave everything at "0" and let the scheduler follow rules to guess +what you might prefer when there are conflicts. However, if you have +one or two favorite shows, you may want to increase the priority +value so the scheduler will know that you would prefer recording +these over other shows. You might use certain values to rate shows +so that all favorites are 2. good shows are 1 and extra 'filler' +shows are all -1 for example. You could sort each title on the "Set +Priorities" page to have a unique value so the scheduler can know +which show you'd prefer versus any other show. The choice and style +are entirely up to you. However, the more information you give to +the scheduler, the more likely it will make the choices you would +prefer in the first place.

+

The scheduler choices are based on the total priority for a showing by +adding up all priority factors that match the showing. By default, most +of these factors are "0" but you may use any combination to express your +likes and needs.

+

+

    +
  • Per record rule -- this is the "priority" selection in the "Scheduling +Options" section of the options page and this value is included for any +showings that match the recording rule. You may choose to only use these +values and not use the other factors for the sake of simplicity and clarity.
  • +
  • Per record type -- Setup->TV Settings->Recording Priorities->General allows +you to add to the priority based on the type. It may make sense to increase +the value for "Single" so that by default they have an extra advantage over +other shows. The default is +1. You may want to decrease the value for Find +rules so that they will be less likely to interfere with regularly scheduled +shows and will be more likely to record in a non-conflicting time instead. +The default is -1.
  • +
  • Per channel -- Setup->TV Settings->Recording Priorities->Channel Priorities +can be useful if you believe that you prefer any of the shows on certain +channels. This would give all shows on a channel an advantage by default.
  • +
  • Input priority -- in the "mythtv-setup" program, the "Input Connections" +section allows you to add additional priority in the "Input priority". +This is simply another priority factor but has an interesting effect. If a +card input has a higher value than the other cards, the scheduler will see +that you would rather record showings of episodes on this input rather than a +showing on other inputs. If you have multiple cards of different quality, +you may want to set input priority to encourage the scheduler to record +shows on your best card(s) whenever possible. This can also be useful if you +have multiple video sources which include the same stations. For example, +with digital and analog cable you could increase the digital cable input +preference by 1 to tell the scheduler that you want to record from the +digital channel whenever possible but the channel on the analog input could +still be used when the digital input is busy.
  • +
  • Custom Priority -- this allows you to add any specialized factors you +would like in order to influence scheduling decisions. See the +Custom Priority section below.
  • +
+ +For any single showing of any show you've chosen to record, these factors +are added together to find the "total priority". This is the priority that +the scheduler uses to decide which showings are given the first choice when +filling in the schedule.

+

The scheduling priority of a show may also be used to determine +auto-expiration of recordings when disk space gets full (see +Auto-Expire, below).

+ +

Duplicates

+ +

Singles will record without regard to duplicate matching.

+ +

The standard recurring methods of All, Channel, Weekly and Daily use the +descriptive information in the TV listings to try to record only one showing +of each unique episode. However, This goal is sometimes complicated by the +fact that the stations may not include a description for a specific episode +but use a generic description for the series instead. When there is a +generic description, the default behavior is to assume that it may be an +episode that you have not seen and to record it for you. One of the +duplicate matching options is "Record new episodes only". If this is +selected, listing that have an original air date of more than 14 days +earlier are considered repeats and are not eligible to record. Generally, +generic episodes will be marked as repeats also.

+ +

Because of generic episodes and other situations, MythTV offers an +alternative approach where shows may be recorded by choosing from multiple +showings even when the descriptive information is not reliable. All of the +"Find" record types look for matching titles in the listings. If there is a +showing with specific episode information and that episode has recorded +before, that showing is marked as previously or currently recorded. The +scheduler will then choose to record the earliest non-conflicting showing +from any of other remaining showings regardless of the descriptive +information. Generally, Find One is most useful for movies or specials and +the Find Daily and Find Weekly rules are best for news or current events +shows that are repeated. However, these may be useful in other situations +where the standard recording rules may not work correctly.

+ +

Conflicts

+ +

As you add more shows that you would like to record, the scheduler +will eventually encounter conflicts. If there are two shows at the +same time and you have two or more TV tuner cards, both shows will +record. However, if there are more shows than cards, the scheduler +will have to decide what it thinks it should not record based on the +information you have given. If you see an unexpected situation you +are not "stuck" with the scheduler's choice. You can still tell the +scheduler exactly which shows you do want to record and/or don't +want to record in any situation.

+ +

Scheduling decisions

+ +

Here are the actual decisions made by the scheduler as it fills in the +schedule.

+

+

    +
  • Currently recording beats not currently recording -- A recording +in progress can not be moved to another input or time so it "wins" +its current timeslot. +
  • +
  • Single, Daily, or Weekly rules with no match are marked Not Listed -- +If these or Overrides do not match the current listings because the +listings have changed, they are added to the schedule and marked to +indicate that they will not record. +
  • +
  • Rules that could record beat rules that can not record a showing -- +If two rules match the same showing of a program, a rule marked as inactive +or a showing marked as a repeat, for example, yield to the other rule. +
  • +
  • More specific record type is used in place of less specific -- If +two rules match the same showing of a program, preference is given to +Don't Record then Override, Single, Find One, Record Weekly, Find Weekly, +Record Daily, Find Daily, Channel and finally All. +
  • +
  • Higher total priority beats lower total priority -- This is the +core of the scheduling process. Episodes of the highest priority show +are placed on the first available input followed by the next highest +priority show and so on. +
  • +
  • Future start time beats past start time -- If there is an +episode in progress and also a later showing of the same episode, it +is better to record the complete episode. If there isn't another +showing, it will start recording immediately to record the remaining +portion. This should only happen if you add a new rule while the show +is in progress or if the master backend is started after the start time +of a scheduled show. +
  • +
  • More specific record type beats less specific record type -- If +two shows are on at the same time and have the same total priority but +different types they will be sorted by Single then Find One, Record +Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally +All. This only applies if the priorities are the same. +
  • +
  • If both start times have passed, later start time beats earlier start +time -- This attempts to miss the least amount of time. +
  • +
  • If neither start time has passed, earlier start time beats later +start time -- This helps assure that the earliest showing of an episode +has the advantage. +
  • +
  • Lower input id beats higher input id -- The scheduler fills in +open time slots on the first available input for the video source. The +next input is used when there is another show already placed for the +card of the first input. +
  • +
  • Older record rule beats newer record rule -- If two shows are still +equal after all of these other checks, the show whose record rule was added +first is preferred over a more recent addition. +
  • +
  • Postpone showings to resolve conflicts -- If Reschedule Higher +Priorities is set or if a conflict has the same priority as a show +that was scheduled at the same time, the scheduler will check to see +if a scheduled show can be moved to another input or later matching +showing without creating a new conflict so that the conflicting show +can be scheduled to record. +
  • +
+

+ +

Reschedule Higher Priorities

+ +

Setup->TV Settings->Recording Priorities->General has a checkbox for +"Reschedule Higher Priorities" which tells the scheduler to try to be a +little smarter in certain situations. If this is checked, the scheduler will +look for situations where a show cannot record because all inputs for the +channel are used for higher priority shows. It will check to see if any of +the other shows could be recorded at another time so that the conflicting +show can be recorded in its place.

+

Generally, this is a good strategy but there are tradeoffs. If a higher +priority show is postponed, you will not get to watch it until it is +recorded in the later timeslot. There is also a risk that the TV listings +may change and the later showing may go away. In this rare case the higher +priority show may never record. On the other hand, if you do not use this +option you will miss recording some lower priority shows unnecessarily +unless you manually make similar changes.

+

By using Reschedule Higher Priorities, the scheduler will do a better job of +recording as many of your shows as possible when left unattended. It will +also be easy to see that shows have been marked to record at a later time. +You can then decide for yourself when you would prefer to record the first +showing by clicking "Record anyway".

+ +

Controlling Your Schedule

+ +

The Manage Recordings->Upcoming Recordings page is your control center +for the MythTV scheduler. Unlike other DVR systems, this one page gives you +all of the information and tools you need to see all of your alternatives +and make whatever adjustments you desire.

+

The upper half of the screen has a scrollable box listing items that match +your record rules sorted by time. The lower half shows the details for the +highlighted item. There are two 'views' available. Press "1" to include all +of the items that match record rules even if they do not need to be +recorded. Press "2" to focus on just the things that will record and items +that may need your attention. The message in the upper right-hand corner +will remind you when there are conflicts that would prevent one or more +shows from being recorded.

+

The items in the list are colored in the record color for things that +will record, white for things that may need attention, gray for those +that do not need to record and yellow when there is a time conflict. +Items at the top of the list may also be highlighted indicating that the +recording is in progress.

+

Along with the channels, start times and titles, the right-hand column has +a status code. Numbers indicate which card number has been assigned to +record the show. Letters are used to indicate the reason that something +will not be recorded. Just below the box is a short status message for the +highlighted item that indicates the type of record rule that was matched, +the "total priority" for this showing and a one or two word explanation of +the status code. If you press SELECT, you will see more information about +the status.

+

There are a few status codes that may require your attention. "C" indicates +that there are more overlapping shows to record than there are TV tuners to +record them. "L" indicates that the scheduler found that it may be better to +record a later showing of this episode. These states happen as a result of +your choices and should normally reflect your preferences. However, you may +notice situations where you would like to modify the scheduler's initial +choices.

+

The first thing you can do is to highlight an item and press INFO to +see the recording options page. From this page you can change the +record rule type, the duplicate matching rules, or raise or lower the +priority to resolve whatever problem you noticed.

+

Additionally, you can treat any individual showing as an exception that you +do want to record or don't want to record. To use these "override" features, +highlight the item and press SELECT. You will see a message explaining the +current status and at least an "OK" button to exit without making changes.

+

For items scheduled to record, there will be a button for "Don't record" +which will prevent recording this showing but will still allow the same +episode to record in the future. If there is episode description +information, you may also see a button for "Never record". This prevents +recording this showing and tells MythTV to remember that this is an episode +that you've seen or don't need to see if it is ever in the TV listings +again.

+

For items that are not scheduled to record, the message will describe the +reason and in the case of "C" or "L" it will include a list of the shows +that are scheduled to record instead. For any item that could potentially be +recorded there will be buttons for "Edit Options" and "Add Override". "Edit +Options" will allow you to change the options for the existing record rule +such as raising the priority so that the show will record. These changes +would apply to this and all future showings that match this record rule. +"Add Override" will allow you to set options that apply to the specific +showing without affecting the recurring record rule.

+

If you return to an override page after an override has already been set, +you will also see a "Clear Override" to undo your changes. This option makes +it very easy to try out some "what if" attempts when deciding on your best +strategy in a difficult situation.

+

For a recording in progress, there will be a "Change Ending Time" button. +This will take you to the options page for a Single or Override or create +an Override if it is a recurring rule. Here you can go to the Recording +Options section to change the program end time offset. If you extend the +end time so that it overlaps upcoming recordings, the schedule will change +to accommodate the new end time. This may cause a conflict or later showing +even for a show with higher priority. Therefore, it is a good idea to +check your schedule after changing the end time of a recording in +progress.

+ +

12.3 Storage Options +

+ +

Recording Profile

+ +

Each recording rule can be configured with a different recording +profile. For example, colorful cinematography can be configured with a +"High Quality" profile, while 'talking heads' interviews shows can be +configured with a "Low Quality" profile. These recording profiles need to +be configured before using them (see +Recording, +above).

+ +

Recording Group

+ +

For organization of the "Watch Recordings" screen and the MythWeb +interface, recordings can be assigned into "recording groups".

+ +

Storage Groups

+ +

This allows you to select any special "Storage Groups" you may have +created to determine where recordings from this rule should be stored +on your disks. The "Default" storage group is always available.

+ +

Playback Group

+ +

This selects a set of pre-configured playback parameters which can be +created and edited in Setup->TV Settings->Playback Groups. When the +recording is played, the values from this playback group will be +used. This allows you to choose a default time stretch value, skip and +jump amounts appropriate for this type of television program.

+ +

Auto-Expire

+ +

MythTV will "autoexpire" old recordings to make room for new recordings +when disk space gets filled up. This option can be set to "Don't allow +auto expire" to prevent these recordings from being automatically deleted +when disk space fills up.

+ +

The default setting is for all scheduled recordings to be eligible +for auto-expiration; this can be changed in the Settings->TV +Settings->General page by manipulating the "Auto Expire Default" +checkbox.

+ +

The default auto-expire policy is "Oldest Show First"; the oldest +recordings are deleted first. The "Lowest Priority First" method +chooses to expire the lowest-priority recordings first.

+ +

Episode Limit

+ +

An episode limit can also be configured to limit the maximum number +of episodes recorded of a single series, to restrict that series' disk +usage. If this is set, you can further decide what to do when this +limit is reached; either stop recording that series, or to delete the +oldest episodes in favor of the new ones.

+ +

12.4 Post Recording Processing +

+ +

Commercial Flagging

+ +

Select whether or not to automatically flag commercials for these +recordings. Commercial Flagging parameters can be set in +Setup->TV Settings->General.

+ +

Transcoding

+ +

Select whether or not to automatically transcode recordings to save +disk space. Before using this, you must first enable auto-transcode in +the recording profile and configure the transcoding parameters; see +Recording, above.

+ +

User Jobs

+ +

User Jobs allow you to configure up to 4 custom commands to run on +recordings. They can be configured in mythtv-setup. The following +tokens have special meaning when used in the User Job commands:

+

+

    +
  • %DIR% - the directory component of the recording's filename
  • +
  • %FILE% - the filename component of the recording's filename
  • +
  • %TITLE% - the title of the recording (e.g., name of the series)
  • +
  • %SUBTITLE% - the subtitle of the recording (e.g., name of the +episode)
  • +
  • %DESCRIPTION% - description text for the recording (from guide +data)
  • +
  • %HOSTNAME% - the backend making the recording
  • +
  • %CATEGORY% - the category of the recording (from guide data)
  • +
  • %RECGROUP% - the +recording group
  • +
  • %CHANID% - the MythTV channel ID making the recording
  • +
  • %STARTTIME% - the recording start time (YYYYMMDDhhmmss)
  • +
  • %ENDTIME% - the recording end time (YYYYMMDDhhmmss)
  • +
  • %STARTTIMEISO% - the recording start time in ISO 8601 format +(YYYY-MM-DDTHH:MM:SS)
  • +
  • %ENDTIMEISO% - the recording end time in ISO 8601 format
  • +
  • %PROGSTART% - the recording's start time (from guide data; +YYYYMMDDhhmmss)
  • +
  • %PROGEND% - the recording's end time (from guide data)
  • +
  • %PROGSTARTISO%, %PROGENDISO% - the recording's start and end +time in ISO 8601 format.
  • +
+

+ +

12.5 Advanced Recording Options +

+ +

Creating Power Search rules with Custom Record

+ +

MythTV's "Custom Record" feature gives you unlimited control for creating +specialized search recording rules to meet your needs. It allows you to +choose your criteria to search for matching shows based on any of the +information in the program listings, channel information, time functions and +more. This goes beyond the capabilities of any other DVR system and it is +unlikely that this level of scheduling customization will ever be available +in any commercial DVR system.

+ +

Getting Started

+ +

Go to Schedule Recordings->Custom Record. This page, helps you build a +database search one clause at a time. Each added clause further limits +which showings will be matched in the TV listings. You can test the +search at any time and when you are done, you can save your search as a +recording rule.

+

To familiarize yourself with how you can create custom rules, create a +simple rule to record "Nova" only in primetime.

+

The first item at the top of the page allows you to edit an existing rule +or create a new rule. Leave it on "<New rule>". Arrow down to the +third item which says "Match an exact title". Right and left arrows would +allow you to select any of several prefabricated pieces or full examples +but leave it on the default for now. Arrow down to "Add this example +clause" and press SELECT (Enter or Space on a keyboard). The large text +box should now show: +

+
+     program.title = 'Nova'
+
+
+ +As you have probably guessed, this says that we want to search for all +programs with the title "Nova" regardless of the time, day, channel, etc.

+

If you do not receive a PBS station that carries "Nova" or would like to use +another title, edit the title by pressing the down arrow to highlight the +text box and right arrow over the the word "Nova". If you are using a +keyboard you can simply delete the four letters and type a different title +between the quotes. With a remote control, you can do 'cell phone' style +text entry with the number pad. The delete key is the "X" in the grouping +for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You +can press ENTER in the text box to popup a virtual keyboard.

+

Note: the text box honors many familiar Emacs control keys. It is also +possible to cut and paste text into the text box so you can edit with a +favorite editor or insert a rule sent in email or from other sources.

+

In any case, choose a title that is shown both in primetime and late night +or daytime. Next, click the "Test" button. You should see a list of the +upcoming episodes for "Nova" just as if you had clicked the Upcoming +button for "Nova" elsewhere in MythTV.

+

Press ESC to go back to the Custom Record page. Move to the example +selector then press the right or left arrows until you find "Only in +primetime". Click "Add this example clause". You should now see: +

+
+            program.title = 'Nova'
+            AND HOUR(program.starttime) >= 19
+            AND HOUR(program.starttime) < 23
+
+
+ +Click "Test". You should now see a shorter list with only the showings that +begin between 7PM and 11PM. To create a rule for this, press ESC to go back +to the custom page and move to "Rule Name:" then type "Nova" or anything +else you would like. This is only a label and will not affect the search +results. Once a name has been entered, the "Record" button will light up. +Click this to enter the recording options page. If you named it "Nova" the +title will say "Nova (Power Search)". Set whatever options you would like +then click "Save these settings". You now have a special rule to record +"Nova" but only when it is shown in primetime.

+

You can make further modifications to this rule by returning to the Custom +Record page then press the right or left arrow keys on "Edit Rule:" until +you find "Nova". You can experiment and test but the saved rule will not +be updated until you click "Record" then "Save these settings".

+

To remove this, or any other rule, you can go to the "Recording Priorities" +page, arrow down to the title, press Enter and change the the recording type +to "Do not record this program" then "Save these settings".

+ +

How it Works

+ +

MythTV stores TV program information in a database and uses the Structured +Query Language (SQL) to access the data. Information about each TV program +is stored in the 'program' table and information about each TV station you +receive is stored in 'channel'. These two tables are used in the scheduler +queries and their columns are available to be used in your rules. The rules +you create are stored in 'record'.

+

Normal rules in MythTV simply match the title in the rule with the titles +in the 'program' table. MythTV also has search rules for "Titles", +"Keywords" and "People". These store the key phrase in the description +column of the rule and includes them in specialized SQL replacements for +the normal title check. There is also a type called "Power Search" which +takes the raw SQL in the description as the replacement for title +matching.

+

Custom Record is a tool to help you build valid SQL for Power Search rules. +You do not need to be a SQL expert to use Custom Record because the +examples are known to work correctly and are usually self-explanatory so you +can choose the pieces you need then modify them. Many powerful solutions to +unique problems are possible by combining the examples. With some creativity +and some knowledge of SQL, the possibilities are limitless.

+ +

Common Tricks and Tips

+ +

The example clauses marked "complete example" are actual rules that have +been used to address specific problems. You may find that some of these +are useful for you as-is or with slight modifications. These show off how +powerful custom rules can be but there are also several simple idioms that +you may find useful for many of the shows you would like to record.

+

Wait for a known title -- If there is a movie that you anticipate will be +televised in the coming months but is not yet in the listings, you can +select "Match an exact title", edit the movie title, click "Record" then +choose "Record one showing of this title". The rule will wait weeks, months +or years until this title shows up in your listings then it will record one +showing. These rules have no impact on the scheduler throughout the day and +only take a tiny fraction of a second when the master backend starts or when +the listings are updated.

+

Silence series out of season -- "Celebrity Poker Showdown", for example, +will have new episodes for a while then long periods where reruns are shown +dozens of times per week. By checking the previously shown flag you can +create a rule that will only match new episodes. Therefore, your schedule +won't be polluted with dozens of entries marked as "Repeat" or "Previously +Recorded". +

+
+       program.title = "Celebrity Poker Showdown"
+       AND program.previouslyshown = 0
+
+
+ +This allows you to keep rules for your favorite shows that are dormant while +out of season but will spring back to life when new episodes appear.

+

Choose showings on certain days -- Several cable stations will show their +highest rated shows a dozen on more times per week. However, the scheduler +only needs two or three choices to do a good job of making a flexible +choice. +

+
+       program.title LIKE "Celebrity Fit Club%"
+       AND DAYNAME(program.starttime) = "Sunday"
+
+
+ +This says to choose any showing of an episode that hasn't been recorded +when it appears on Sunday. This prevents all the other showings during the +week from being listed in the schedule.

+

Notice the word "LIKE" and the "%" at the end. This does wildcard matching +so that this would match even if the title ended with "2". "III" or +":Revenge of the Snapple Lady". This can be useful where the title may +change from one season to the next like "Survivor: %", "Big Brother%" or +"The Amazing Race%".

+ +

Working with SQL

+ +

As you experiment, it is possible that you may misplace a quote or mistype a +word. If there is a mistake when you press "Test" or "Record" you will see +an error message returned from the database. This will usually give you a +good idea about what needs to be fixed. However, for more subtle MySQL +syntax errors, you can find more information in the documentation at +http://dev.mysql.com/doc/mysql/en/. This contains a lot of +information that can be useful for Power Search rules such as the "Date and +Time Functions". There are many other good resources for SQL on the Web.

+

While the example clauses demonstrate how to use many of the data columns, +you can get a more complete list of all the columns that are available by +using a MySQL client program: +

+
+$ mysql -u mythtv -pmythtv mythconverg
+mysql> describe program;
+mysql> describe channel;
+
+
+ +This will show the names of all of the columns along with their type and +default value. Most are easy to understand but a few need some explanation +in order to use them effectively with Power Search. +
    +
  • "program.category_type" holds one of these exact four strings: "movie", +"series", "sports" or "tvshow". +
  • +
  • "program.airdate" is a string representing the year of release for +movies and may have no meaning for other types of shows. +
  • +
  • "program.stars" is a floating point number from 0.0 to 1.0. On a +four star scale, 1.0 would be four stars, 0.75 would be three stars and so +on. +
  • +
  • "program.originalairdate" if provided is the date when a show +was, or will be, first televised. This may be useful for finding +episodes before or after a certain date such as finding just the +original series of "Battlestar Galactica". +
  • +
  • "program.previouslyshown" is a column created by MythTV to try to +determine if a showing is more than 14 days after its original air date or +if the show was marked as a repeat and did not have a date for the first +airing. If this is "0" it usually means that this is a brand new show or a +rebroadcast within the first two weeks. +
  • +
  • "program.generic" is a column created by MythTV to try mark +showings for a series where the specific episode information is not +included. When these generic showings appear, it is impossible for the +system to determine if they are repeats of the same episode(s) or if +they are all different episodes. +
  • +
  • "program.first" is a column created by MythTV to mark the first +showing in the current listings for each episode, movie or special. +Choosing to match only the "first" showing can be useful for sports +that are brodcast live then repeated. +
  • +
  • "program.last" is a column created by MythTV to mark the last +showing in the current listings for each episode, movie or special. +If a showing is marked both "first" and "last" then it is the only +showing of that program in the current TV listings. +
  • +
  • "program.programid" is the Tribune Media Service database record +identifier for each program description. In general, these start with a two +letter prefix, MV, EP, SP or SH that correspond to the +"program.category_type". For most, the last four digits are "0000" except +EP where the last four digits are the episode number in the series. Note +that these are generated by TMS and not the show's producers but they are +usually in the same order as the original air dates for the episodes. +
  • +
  • "program.videoprop" also "audioprop" and "subtitletypes". +These columns contain bit flags for a variety of attributes that +may be associated with a program. These are filled with information +offered by the TV listings provider. However, your listings source +will not have information for all of the available flags. Therefore, +some of these may not be useful for your search rules. This information +is organized in "sets" and the MySQL function FIND_IN_SET() can be used +to test for any of these flags. For example: +
    +
    +FIND_IN_SET('SURROUND', program.audioprop) > 0
    +
    +
    + +would be true for the programs where the surround sound bit is present. +To see all of the available attribute names: +
    +
    +$ mysql -u mythtv -pmythtv mythconverg
    +mysql> SHOW COLUMNS FROM program LIKE '%prop'\G
    +mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G
    +
    +
    +
  • +
+ +Finally, if you are doing something very experimental and a column is not +giving you the results you had anticipated, you can always check the MythTV +source code to see exactly how a column is used. The open source for MythTV +is available from +http://www.mythtv.org/ .

+ +

12.6 Scheduling with more than one Input +

+ + +

MythTV is designed to allow recording television programs from one or more +service providers, or video source, on one or more video input from each +provider. Some inputs may not be allowed to record at the same time as +each other while others may record simultaneously.

+

A television station may be broadcast on more than one channel from one +provider or may be available on channels from two or more providers. If a TV +station is available from more than one source, the video quality or type of +broadcast may differ. Therefore, MythTV allows you to control how you would +like the scheduler to select the best channel and input for a show which is +available on more than one input or more than one channel.

+ +

Mutually Exclusive Inputs

+ +

A single TV capture card may have video connections to more than +one of its inputs and each input may be from a different service. The card +may only be allowed to record from one of these inputs at one time because +there is only one encoder on the card that actually captures the content.

+

+

+ + + +
+

+

These are mutually exclusive meaning that only one input or the other +may record at a given time but not both.

+

Usually, inputs on different cards can record at the same time +but two or more inputs on the same card cannot. However, there are cases +where inputs on different cards should not be allowed to record at the +same time, for example, a firewire card and s-video analog card connected +to the same set top cable box.

+

+

+
+|
+|   coax +--------------+ firewire    ------------------+
+|     .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV
+|     |  |HD/Cable STB  |=--.          +-----||||||||||||
+|     |  +--------------+   | s-video ------------------+
+|     |                     `---------=|        input 2 | Digital
+|wall |               coax             | Card 2         |
+|=---=^=------------------------------=|        input 3 | Cable
+|                                      +-----|||||||||||| 
+
+
+

+

Input 1 and input 2 receive content from the same set top box and the +channels can not be tuned independently. Therefore only one of these two +inputs should be used at any given time. The solution is to create an "Input +Group" with mythtv-setup in "Input connections". Including these +two inputs in the same Input Group will tell the scheduler that these are +mutually exclusive and may not record at the same time. Inputs 2 and 3 are +automatically mutually exclusive because they are on the same card so there +is no need to create an Input Group for these inputs.

+

Cards such as the Hauppauge PVR-500 are able to record as two cards +simultaneously because it has two MPEG-2 encoders and each encoder appears +as a separate device. DVB cards may be allowed to capture content from more +than one channel at a time if the channels are in the same MUX.

+ +

Stations, Channels and Video Sources

+ +

Although we may be accustomed to thinking of a broadcast station and its +channel number as being synonymous, stations and channels are very different +things. A "station" is in a building with wires and employees. A "channel" +is a carrier frequency or digital ID that carries a broadcast stream. The +same TV station may be broadcast over different frequencies in different +cities or by different providers in the same city. The same frequency will +carry different stations in different cities. In the digital realm of DVB +and ATSC (HDTV), it is even possible for a single frequency to carry +multiple program streams but each of these streams of content are actually +different channels that the receiving devices can 'tune' to independently.

+

+

    +
  • Station: building
  • +
  • Channel: frequency
  • +
+

+

In MythTV, a "video source" is a set of channels from a provider, or over +the air, that can be received by an input. The set defines the channels and +the broadcasters primarily associated with each of those channels. If you +have more than one device or cable from the same provider connected to more +than one card and input, you only need to create one video source in +mythtv-setup then associate that one source with each of these connected +inputs. This will let your MythTV system know that the same channels and +their TV listings are available to be recorded from any of these inputs.

+

For example. A MythTV system may have two capture cards. Both have a cable +connected to the coaxial connectors. These cables carry the local cable TV +service. In mythtv-setup, the user should create one "Video source" called +"Cable", for example. Under "Input connections", "Cable" should be +associated with each of the two tuner inputs. The scheduler will then know +that any program on one of the channels from the "Cable" source could be +recorded by either card from the card's tuner input.

+

You need to create a different video source for each provider or service +that has a different set of channels. Each input with a connection to that +service should be associated with the video source for that service so the +system will know which set of channels are available for each of your active +inputs.

+

Let's say that this user also has one digital cable set top box. The digital +cable service carries channels that are not available over basic cable. The +user would create another source called "Digital". This set top box is +connected to the second card by S-Video so under "Input connections", +"Digital" is associated with the S-Video input of card 2. The system would +then know that programs on channels from the Digital source can only be +recorded from this input. Further, the scheduler understands that it can +only record one show at a time from card 2 so it can assign Cable or Digital +shows to the card but not both at the same time.

+

Some TV stations may be broadcast over a channel from the Cable source and +also broadcast over a channel from the Digital source. Note that two +channels carrying the same primary station may not have the same TV listings +due to carrying the primary station part time, including local programming +exclusive to one of the channels, the channels may be in different +timezones, etc. Listings information must be associated with each channel +even if two or more channels report that they carry the same station.

+ +

Order of Inputs

+ +

By default the scheduler chooses the first (lowest numbered) input which has +a showing of the scheduled program as it fills the schedule. If a lower +priority show is on at the same time as a higher priority show that has been +assigned to input 1, then input 2 will be used next and so on. Therefore, +configure your best card and input first and next best card and input +second. There may be differences in the type or brand of capture card, +signal quality from the cable, system resources such as disk space, CPU, +etc. By configuring your best input first, more recordings, and your highest +priority recordings, will use that input.

+

A common situation is that a newer and better card is added last. For +example, you may initially setup your system with two analog cable cards and +then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is +shown in HDTV on an NBC HD channel, the scheduler would still prefer analog +inputs 1 and 2 over the new HD input 3.

+

So, if you'd like the scheduler to prefer a new source, the simplest thing +is to run mythtv-setup and "Delete all capture cards" then enter +your cards and inputs in your preferred order. This will not remove your +sources and channels - you want to keep those and only renumber your cards +and inputs. In this example, once the changes have been made and the Master +Backend is restarted, the scheduler would then choose "The Apprentice" in HD +on the new input 1 and only use the analog inputs (now numbered 2 and 3) +when the HDTV input was occupied with another show.

+ +

Matching Callsigns

+ +

If a recording rule is a type that can record from any channel, "The +Apprentice" would match for any channel that shows episodes which may +include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel +rules, "The Apprentice" would only match showings on the selected station as +identified by the "callsign". For example, KVBC is an NBC affiliate on +channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same +station. If a Single record rule was set for "The Apprentice" on KVBC +channel 3, it could not record this showing from KVBCDT on 733. If 733 was +chosen when the rule was saved, channel 3 could not be used to record.

+

However, the "Channel Editor" in mythtv-setup can be used to change the +Callsign for channel 733 to "KVBC". MythTV would then understand that both +of these channels are from the same broadcast station. Assuming the HDTV +input was input number "1", "The Apprentice" would record on 733. If, +however, this HDTV input already had a higher priority show assigned to it +in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on +input 2.

+

Having two channels with the same callsign may affect how program +information is shown in mythfrontend. If two sources have the same callsign +and channel number, the program guide and program lists will only show one +instance of the channel number and callsign. If the same callsign is on two +different channel numbers, both will be shown and if two sources have +different callsigns with the same channel number, both of those will be +shown.

+

Continuing with the example above, the Electronic Program Guide would +include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also +included in the Digital cable source, the EPG would still include just one +line for "3 KVBC" even though there are two different channels, Cable and +Digital, with this identification. Regardless of how these are displayed and +which "KVBC" channel you select to add a rule to record "The Apprentice", +the scheduler will pick the best channel, source and input to record "The +Apprentice" on "KVBC".

+ +

Using Priorities to Prefer an Input

+ +

The fundamental concept to keep in mind is that the MythTV scheduler will +choose the lowest numbered input available when showings have the same +priority. If there are factors that cause two showings of the same show to +have different priorities then the higher priority showing will be +considered before the showings with lower priority.

+ +

Input Priority

+ +

"Input Connections" in mythtv-setup includes a box to set "Input priority" +which defaults to "0". If a value is set, that amount will be added to the +"total priority" for showings on that input. This can be used to influence +using favored cards or not using less favored cards unless necessary.

+

Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who +Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The +scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 +at 8:00pm. If the input priority for the input on card 2 was changed to -1, +"Who Cares" would have a total priority of -2 for showings on card 1 and -3 +for showings on card 2. The scheduler would assign "The Apprentice" to card +1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is +available. If there was another higher priority show at 11pm, the next best +choice for "Who Cares" would be card 2 at 8pm with the priority -3.

+

Card 1 and 2 have input priority "0":

+

+

+ + + +
+

+

+

+
+ Time  Title     Priority  Card  Status
+ 8:00  The Apprentice  +3  1     Will Record
+ 8:00  Who Cares       -2  2     Will Record
+11:00  Who Cares       -2  1     Earlier Showing
+
+
+

+

Card 2 with input priority "-1":

+

+

+ + + +
+

+

+

+
+ Time  Title     Priority  Card  Status
+ 8:00  The Apprentice  +3  1     Will Record
+ 8:00  Who Cares       -3  2     Later Showing
+11:00  Who Cares       -2  1     Will Record
+
+
+

+

Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.:

+

+

+ + + +
+

+

+

+
+ Time  Title     Priority  Card  Status
+ 8:00  The Apprentice  +3  1     Will Record
+ 8:00  Who Cares       -3  2     Will Record
+11:00  The Daily Show  +1  1     Will Record
+11:00  Who Cares       -3  2     Earlier Showing
+
+
+

+

Note the two different effects, each of which may be what you desire +depending on circumstance. If input priorities are equal, shows will record +at the earliest time if any input is available. If input priorities differ, +shows may be postponed to a later time in order to record on the best input.

+ +

Channel Priority

+ +

Priority can be added for individual channels (remember, frequencies from a +video source, not stations). This can be used to tell the system that you +generally prefer the content of the station on a channel over the formats of +other stations. You may want to raise the priority for ESPN, SciFi, Comedy +Central or lower the priority for CSPAN, CourtTV, etc. If the same station +is on two different channels, you can use channel priority to have the same +effect for these channels as input priority would have for whole inputs.

+

For example, say CNN is on analog channel 20 and there is an HD CNN on 750. +You may not want to tie up the HD input for news originating in standard +definition. Under TV Settings->Recording Priorities->Channel Priorities you +could set channel 750 to -1. The scheduler would then prefer to record CNN +shows on any analog channel 20 before considering using 750 only when there +are no analog inputs available.

+ +

Preferred Input

+ +

For an even finer grain of control, there is a per rule option to specify +which input should be preferred for showings that match the rule. By +default, this adds +2 to the priority for showings on the specified input.

+

For illustration, let's say there will be a Space Shuttle launch on CNN that +will be broadcast in high definition. Adding a rule to record the launch +with priority "0" should default to channel 20 on input 2. Channel 750 would +have this at -1 due to the channel priority set in the previous example. If +on the recording options page for this rule, the "Scheduling Options" had +the input set to prefer the HD input on card 1, then the showing on channel +750 for this input would be increased in value by +2 for a total of +1 and +would be the best choice for this launch coverage. While this one rule +would prefer the HD input with channel 750, all other rules that match shows +on CNN would still prefer channel 20.

+

Note that this will not work properly if the preferred input priority does +not out weigh differences in input and channel priorities. The value of the +priority boost when this option is chosen defaults to +2 but can be modified +in TV Settings->Recording Priorities->Set Recording Priorities.

+ +

HDTV Priority

+ +

In the preceeding fictious example, the Space Shuttle launch is broadcast in +high definition and a preferred input is selected to give preference to the +HD input. However, TV listings from zap2it.com through the DataDirect +service may allow this to work without having to use this per rule option.

+

In Settings->Recording Priorities->Set Recording Priorities there is an +option for "HDTV Recording Priority". This value will be added automatically +if the listings for the show have the "hdtv" flag set. DataDirect will set +this flag for shows known to be broadcast in HDTV on HD channels. However, +the flag is not set for standard definition channels. This is another +example of the listings being different for the same station on a different +channel. If the HDTV priority is set to "+2", the shuttle launch would +automatically have a total priority of +1 so that channel 750 would be +preferred over channel 20 for this HDTV broadcast.

+

Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2":

+

+

+ + + +
+

+ +

Custom Priority

+ +

+

+ + +New for MythTV 0.21 +
+

+

While Input, Channel, and HDTV Priority can be used for indicating a +preference for certain programs and inputs, there may be circumstances that +cannot be resolved easily with these standard features. MythTV version 0.21 +includes a feature for "power priority". The Custom Priority editor in +mythfrontend's "TV Settings" screen is similar to Custom Record, however, +Custom Priority allows you to create specialized power priority factors to +influence scheduling decisions.

+

For example, the 'program.closecaptioned' flag can be used in a +similar way as the 'program.hdtv' flag.

+

+

+
+Priority Rule Name: Closed Captioned priority
+Priority Value: 2
+program.closecaptioned > 0
+
+
+

+

This will raise the priority of shows marked with "CC" over those that are +not by applying the "Priority Value" whenever the SQL fragment evaluates to +true. If the expression evaluates to false for a showing, the "Priority +Value" is not applied.

+

+

+
+Priority Rule Name: Priority when shown once
+Priority Value: 1
+program.first > 0 AND program.last > 0
+
+
+

+

The "first" and "last" flags for an episode will only be set for the +same showing when there is only one showing of that episode in the +current TV listings. This rule would raise the priority in these cases +so that these shows would have an advantage to record in their only +available time slot.

+

+

+
+Priority Rule Name: Input 1 signal quality
+Priority Value: -1
+cardinput.cardinputid = 1 AND
+channel.channum IN (3, 5, 39, 66)
+
+
+

+

A common issue with two or more analog capture cards is that one of +the cards may have more interference on some channels than the same +channels on other cards. This example gives a disadvantage to the +channels in this list but only for the first input. Therefore, a show +on channel 39 would choose input 2 or 3 if possible but for channels +not in this list, input 1 is still the first choice.

+

The Custom Priority editor includes many example fragments and complete +examples that can be used or you can create your own to suit your needs.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html new file mode 100644 index 0000000..2f4f192 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-13.html @@ -0,0 +1,106 @@ + + + + + Installing and using MythTV: MythPlugins. + + + + + +Next +Previous +Contents +
+

13. MythPlugins.

+ +

MythTV has a rich set of plugins available. Once you have downloaded +the tarball, untar it and run the configure script:

+

+

+
+$ tar -xjf mythplugins-0.21.tar.bz2
+$ cd mythplugins-0.21
+$ ./configure --help
+
+Usage:   configure [options]
+Options: [defaults in brackets after descriptions]
+NB:      all --enable-* options can be reversed with --disable-*
+
+Generic options:
+  --help                   print this message
+  --enable-all             Enable all options
+  --enable-opengl          enable OpenGL (Music and Gallery) [default=no]
+
+MythBrowser related options:
+  --enable-mythbrowser     build the mythbrowser plugin [default=yes]
+
+MythDVD related options:
+  --enable-mythdvd         build the mythdvd plugin [default=yes]
+  --enable-transcode       enable DVD ripping and transcoding [default=no]
+  --enable-vcd             enable VCD playing [default=no]
+
+MythGallery related options:
+  --enable-mythgallery     build the mythgallery plugin [default=yes]
+  --enable-exif            enable reading of EXIF headers [default=no]
+
+MythGame related options:
+  --enable-mythgame        build the mythgame plugin [default=yes]
+
+MythMusic related options:
+  --enable-mythmusic       build the mythmusic plugin [default=yes]
+  --enable-fftw            enable fftw visualizers [default=no]
+  --enable-sdl             use SDL for the synaesthesia output [default=no]
+  --enable-aac             enable AAC/MP4 audio file decompression [default=no]
+
+MythNews related options:
+  --enable-mythnews        build the mythnews plugin [default=yes]
+
+MythPhone related options:
+  --enable-mythphone       build the mythphone plugin [default=yes]
+  --enable-festival        enable festival TTS Engine [default=no]
+
+MythVideo related options:
+  --enable-mythvideo       build the mythvideo plugin [default=yes]
+
+MythWeather related options:
+  --enable-mythweather     build the mythweather plugin [default=yes]
+
+
+

+

The sections detailing configuration of the plugins assume that you are +already in the ~/mythplugins-0.21/ directory.

+

Note that a single configure script now does configuration for all +modules. By default, it will compile all modules. If you do not wish to +compile a module, either because it is of no use to you, or you do not have +the prerequisites, the simplest course of action is to go through the +various sections below, satisfying the prerequisites, and then compile all +modules at once.

+

For example, you would only like to compile and install MythGallery and +MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG +file to present additional information onscreen. For MythMusic, you would +like to enable support for the opengl and FFT visualizations. The command +line would look like:

+

+

+
+$ cd ~/mythplugins-0.21 
+$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft
+$ qmake mythplugins.pro
+$ make
+$ su -
+# make install
+# exit
+$
+
+
+

+

For simplicity, the examples below will disable compilation of all other +modules other than the one being discussed.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html new file mode 100644 index 0000000..f1ab3cb --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-14.html @@ -0,0 +1,112 @@ + + + + + Installing and using MythTV: MythWeb. + + + + + +Next +Previous +Contents +
+

14. MythWeb.

+ +

MythWeb allows you to use a web page to control various aspects of your +MythTV system. MythWeb is a separate application, but it's dependent on +MythTV being installed and operational.

+ +

14.1 Installation and prerequisites +

+ +

Mythweb is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. The next step depends on whether your distribution has a web server +and if you have PHP support.

+ +

Mandriva

+ +

Mandriva has apache and PHP pre-packaged, so +installation is quite simple.

+

+

+ + +NOTE: Mandriva 9.1 users, perform the following: +
+ +
+
+# urpmi apache2 apache2-mod_php php-mysql
+# chkconfig --level 345 httpd on
+# /etc/rc.d/init.d/httpd restart
+
+
+

+ +

14.2 Completing the installation +

+ +

+

+
+$ cd ~/mythplugins-0.21/mythweb
+$ su
+# mkdir /var/www/html/mythweb
+# cp -r . /var/www/html/mythweb
+# exit
+$ 
+
+
+

+

By default, MythWeb uses an Apache .htaccess file to restrict +access to the website and to configure some variables.

+

To create the password file for Apache (if your system doesn't already have +one), you could do something like this: +

+
+# cd /var/www
+# htpasswd -c htpasswd mythtv
+New password:
+Re-type new password:
+Adding password for user mythtv
+
+
+

+

See the man page for htpasswd for more examples.

+

To access the web page, open a web browser and use http://[name or ip +address]/mythweb/

+

+

+ + +NOTE: Make sure that you have a trailing slash on the URL, +otherwise you will get a 404 Page not Found error. +
+

+

14.3 Resetting the key binding table +

+ +

MythWeb allows you to configure which keys are bound to which actions +within MythTV. If you'd like to reset this back to the default, execute the +following command: +

+
+$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg
+
+
+

+

14.4 Resetting the theme. +

+ +

If you find yourself wedged into a theme that isn't working, open your +web browser and go to site: +http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes

+
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html new file mode 100644 index 0000000..f9a6ba7 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-15.html @@ -0,0 +1,137 @@ + + + + + Installing and using MythTV: MythGallery. + + + + + +Next +Previous +Contents +
+

15. MythGallery.

+ +

MythGallery is a photo and slideshow application. MythGallery is a +separate application, but it's dependent on MythTV being installed and +operational.

+

15.1 Installation and prerequisites +

+ +

MythGallery is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

+

There are a number of transitions available, some requiring OpenGL +support. You will also need to install a TIFF library. Under Mandriva, you +would perform the following command: +

+
+# urpmi libtiff3-devel
+
+
+ +Once you have satisfied the prerequisites for your distribution, install the application: +
+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-opengl --enable-mythgallery
+$ qmake mythplugins.pro
+$ make
+# su
+# make install
+# exit
+$ 
+
+
+ +The configuration for MythGallery is accessed through the main Setup option +in mythfrontend. Make sure you set your pictures directory to wherever +you're storing your photos.

+

The controls for MythGallery can be found in the README that comes with the +application.

+

15.2 Using MythGallery +

+ +

When you first start MythGallery, you will see a thumbnail view of any +folders and pictures in the Gallery Directory you specified in setup. If +this is the first time you have accessed this directory, the thumbnails will +be generated on the fly. If the Gallery Dir is writable, these thumbnails +will be cached thus speeding up future access. On the left is a greyed-out +menu of options.

+

Use the arrow keys to select a folder or picture to open/view with the +Select key, or use the Menu key to toggle access the menu on the left. The +menu options are as follows: +

    +
  • Slideshow - Will cycle through all the pictures in the current folder. +The currently selected item must be a picture (not a folder) for this to +work. It does not currently traverse subfolders.
  • +
  • Rotate CW - Rotate the current image 90 degrees in the clockwise +direction. This change persists if the current directory is writable.
  • +
  • Rotate CCW - As above except the direction of rotation is counter(anti) +clockwise.
  • +
  • Import - Import pictures into your Gallery Dir. This option is +described in the next section.
  • +
  • Settings - Access the MythGallery settings screen.
  • +
+

+

15.3 Importing Pictures +

+ +

The import path in the setup dialog is a colon separated list of +directories and/or executable files. When the import key is pressed, a new +directory (the destination directory) under the current directory will be +created and the import path will be searched. If the item in the import +path is a directory (the source directory), the contents of that directory +will be copied to the destination directory. If you would like the source +directory to be that of a removable device, it might be a good idea to use +autofs. See the automount howto at +www.linuxdoc.org for info on how to get it working.

+

If the item in the import path is an executable file, MythGallery will +attempt to execute it with the destination directory as its sole argument. +Be careful when using executable scripts that the script runs unattended +(doesn't need user intervention) and returns properly, otherwise it could +create the appearance of MythGallery hanging (e.g. running +smbclient and prompting for password). Also be sure that scripts +have executable permissions set.

+

Here is an example script that a user may want to run +on import: +

+
+#!/bin/csh
+
+if ($#argv == 0) then 
+        echo "Usage: $0 dest_dir" 
+        exit 
+endif 
+
+cd $argv[1]
+
+# get stuff over the network
+wget http://www.somesite.dom/dir/file1.jpg 
+wget http://www.somesite.dom/dir/file2.jpg
+wget http://www.somesite.dom/dir/file3.jpg
+
+# stuff that requires manual module loading and/or fs mounting
+modprobe camera_module
+mount /dev/camera /mnt/camera
+cp /mnt/camera/* $argv[1]
+umount /mnt/camera
+rmmod camera_module
+
+# perform some processing
+foreach pname (`ls *.jpg`)
+        jpegtran -flip vertical $pname > $pname.new
+        mv $pname.new $pname
+end
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html new file mode 100644 index 0000000..6660a7d --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-16.html @@ -0,0 +1,241 @@ + + + + + Installing and using MythTV: MythGame. + + + + + +Next +Previous +Contents +
+

16. MythGame.

+ +

MythGame can used as a frontend to start any emulator that your host OS +runs. This is an example of how to set up xmame on Linux. +http://www.mameworld.net/ is +an excellent resource for all things mame.

+

Installation overview: +

    +
  1. Setup directory structure
  2. +
  3. Download and install xmame
  4. +
  5. Download and place extra files (artwork/catver.ini/etc..)
  6. +
  7. Download and install MythGame plugin
  8. +
  9. Setup xmame in MythGame
  10. +
  11. Hints
  12. +
+

+

16.1 Setup Directory Structure +

+ +

To keep things organized, create the following directories for xmame to use +in /usr/local/share/xmame: hiscore, roms, and snaps.

+

+

+
+$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps}
+
+
+

+ +

16.2 Download and Install xmame +

+ +

NOTE: There may be pre-packaged versions of xmame +available for your distribution. Check +http://x.mame.net/download.html for the latest version.

+

Download the source to xmame from +http://x.mame.net/download/xmame-0.103.tar.bz2

+

+

+
+$ wget http://x.mame.net/download/xmame-0.103.tar.bz2
+$ tar -xjf xmame-0.103.tar.bz2
+$ cd xmame-0.103
+
+
+

+

Edit the Makefile with your favorite editor. Adjust the options as required for your system. +

+
+$ joe Makefile
+
+
+

+

Then make and install xmame +

+
+$ make
+$ su
+(enter password)
+# make install
+# exit
+
+
+

+

After mame has been installed, we need to create some defaults. +

+
+$ mkdir ~/.xmame
+$ cp docs/xmamerc.dist ~/.xmame/xmamerc
+
+
+

+

Because some ROMS work better with different display toolkits, or possibly +even older versions of xmame, it's convenient to keep all of your +xmame binaries and to rename them to include the version number. +MythGame allows you to match individual roms to preferred binaries.

+

+

+
+$ su
+(enter password)
+# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11
+# exit
+
+
+

+

NOTE: Depending on how you compiled xmame, you may have +xmame.X11, xmame.SDL or xmame.xgl based on what +display toolkit you used. Also, you may need to remove and recreate +xmamerc after upgrading since some of the default options may have +changed.

+

Edit ~/.xmame/xmamerc to include your paths. +

+
+### Fileio Related ###
+rompath                         /usr/local/share/xmame/roms
+snapshot_directory              /usr/local/share/xmame/snaps
+cheat_file                      /usr/local/share/xmame/cheat.dat
+hiscore_file                    /usr/local/share/xmame/hiscore.dat
+hiscore_directory               /usr/local/share/xmame/hiscore
+history_file                    /usr/local/share/xmame/history.dat
+mameinfo_file                   /usr/local/share/xmame/mameinfo.dat
+
+
+

+

Confirm that xmame works before running it inside MythTV. Place +your ROM in the /usr/local/share/xmame/roms directory you created +earlier.

+

NOTE: There are three public domain ROM sets available at +http://www.mame.net/downmisc.html

+

Launch xmame with your game of choice. In this example, we are using Gauntlet. +

+
+$ xmame gauntlet
+
+
+

+

Some basic mame keyboard commands: +

+
+5 = Insert coin
+1 = Player 1 start
+arrow keys = movement
+left control = button 1
+left alt = button 2
+SPACE = button 3
+ESC = exit
+TAB - menu
+~ to adjust Volume
+     < and >
+
+
+

+ +

16.3 Download extra files +

+ +

The following files allow you to add extra functionality. Place them +into /usr/local/share/xmame

+

- catver.ini is a catalog of categories and versions of popular mame ROMs.

+

Useful for keeping large libraries of ROMs organized.

+

It may be downloaded from +http://www.catver.com or +http://www.mameworld.net/catlist

+

- Screenshots aka "snaps"

+

These may be downloaded from +http://www.classicgaming.com/mame32qa/

+

Screenshots are displayed when you are browsing your ROMS in mythgame. +Unzip and place them in /usr/local/share/xmame/snaps

+

- history.dat

+

Download from +http://www.arcade-history.com/ +This file fills in a bit of background about each ROM.

+

- hiscore.dat

+

Download from +http://www.mameworld.net/highscore/

+

- Cheats

+

Download from +http://cheat.retrogames.com/

+ +

16.4 Download and Install MythGame. +

+ +

MythGame is part of the mythplugins package. See the instructions +in the +Downloading and Compiling +section to obtain mythplugins.

+

Switch to the mythplugins directory: +

+
+$ cd ~/mythplugins-0.21
+
+
+

+

Compile and install mythgame: +

+
+$ ./configure --disable-all --enable-mythgame
+$ qmake mythplugins.pro
+$ make
+$ su
+(enter password)
+# make install
+# exit
+
+
+

+ +

16.5 Setup xmame in MythGame +

+ +

Start mythfrontend and navigate to Utilities/Setup > Setup > Media +Settings > Game Settings > Game Players. Select (New Game Player).

+

To set up a new player for xmame enter the following:

+

+

+
+Player Name:    xmame-0.103.x11                  (Name by which you want your emulator or game called)
+Type:           xmame                           (This is used for display purposes only and does not affect the function of your system)
+Command:        xmame-0.103.x11 -vidmod 1 -fullscreen     (Path and name of binary + any optional parameters)
+Rom Path:       /usr/local/share/xmame/roms     (This tells MythGame what directories to scan for roms to be used with this emulator)
+ScreenShots:    /usr/local/share/xmame/snaps    (This tells MythGame what directories to scan for snapshots to be used with these roms)
+Working Directory:                              (Directory to change to before launching game or emulator. Blank in our case ignores this setting)
+File Extensions:                                (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path)
+[] Allow games to span multiple roms/disks      (will treat game.1.rom game.2.rom game.3.rom as one game)
+
+
+

+ +

16.6 Hints: +

+ +

+

    +
  • Rom name before options: %s can be used as a standin for rom names on the command line.
  • +
  • Multiple disk/rom games: %d1 %d2 etc can be used as standins for multiple disc games on the command line.
  • +
  • Associating a rom with an emulator: Browse to the desired rom and press 'M' to enter the settings page for that rom.
  • +
  • Assign a Game Favorite Status: Browse to the desired game and press "/".
  • +
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html new file mode 100644 index 0000000..e7eaf9c --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-17.html @@ -0,0 +1,348 @@ + + + + + Installing and using MythTV: MythMusic. + + + + + +Next +Previous +Contents +
+

17. MythMusic.

+ +

MythMusic has a number of prerequisites that must be satisfied before it +is operational. Depending on your distribution, some of these prerequisites can +be satisfied through the various package managers. If your distribution doesn't +offer pre-compiled versions of the software below, then follow the generic +instructions for manually compiling and installing the software.

+

The prerequisites for MythMusic are: +

    +
  • MAD
  • +
  • taglib
  • +
  • libogg and libvorbis
  • +
  • FLAC
  • +
  • libcdaudio
  • +
  • CDParanoia
  • +
+

+ +

17.1 Manual installation of prerequisites +

+ +

These instructions are for distributions which don't have pre-compiled +versions of the software necessary to run MythTV.

+

Download MAD from +http://www.underbit.com/products/mad and install:

+

+

+
+$ tar -xzf mad-0.15.1b.tar.gz
+$ cd mad-0.15.1b
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+
+
+

+

Download TagLib from +http://developer.kde.org/~wheeler/taglib.html and install:

+

+

+
+$ tar -xzf taglib-1.4.tar.gz
+$ cd taglib-1.4
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+
+
+

+

Download libogg and libvorbis from +http://www.xiph.org/downloads and install in a similar manner +to the above packages.

+

Download FLAC from +http://flac.sourceforge.net and install: +

+
+$ tar -xzf flac-1.1.2.tar.gz
+$ cd flac-1.1.2
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+$ 
+
+
+

+

Download libcdaudio from +http://libcdaudio.sourceforge.net and +install: +

+
+$ tar -xzf libcdaudio-0.99.12p2.tar.gz
+$ cd libcdaudio-0.99.12p2
+$ ./configure
+$ make
+$ su
+# make install
+# exit
+$ 
+
+
+

+

Download cdparanoia from +http://www.xiph.org/paranoia/down.html. +

+
+$ tar -xzf cdparanoia-III-alpha9.8.src.tgz
+$ cd cdparanoia-III-alpha9.8
+$ ./configure
+$ make
+$ su
+# make install
+# cd /usr/lib
+# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so
+# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so
+# exit
+$ 
+
+
+

+ +

17.2 Mandriva +

+ +

Mandriva has a number of the prerequisites available on the +installation CD. Some of the software you're going to need will have to be +obtained from the "contrib" or "cooker" development repositories. +Applications downloaded from "cooker" come from the development branch, so +there may be issues with some software. It isn't recommended that you mix +cooker and release-level software.

+ +

urpmi is the simplest tool for installation of packages from the +command line. The difficult part is the configuration, but this has been +made easier at the following website: +http://addmedia.linuxfornewbies.org/ The website will allow +you to choose a mirror site and then present the command-line configuration +text for that mirror. You will most likely need to add a "Contrib" mirror +to your setup. Once you have done that, you can proceed. If urpmi +prompts you about other modules that need to be installed to satisfy +dependencies, say "Yes".

+

+

+
+# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
+# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
+# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel
+
+
+

+ +

Additional options with MythMusic

+ +

Additional visualizations have been added to MythMusic. If you wish to +use these, there are some prerequisites you must install prior to compiling.

+

+

    +
  • fftw
  • +
  • OpenGL
  • +
  • SDL
  • +
+

+

fftw may be obtained from +http://www.fftw.org/. In Mandriva it may be installed by +typing: +

+
+# urpmi libfftw2 libfftw2-devel
+
+
+

+

OpenGL should be installed on practically all distributions. +However, you will need the devel module. In Mandriva it may be +installed by typing: +

+
+# urpmi libMesaGLU1-devel
+
+
+

+

SDL may be obtained from +http://www.libsdl.org. In Mandriva it may be installed by +typing: +

+
+# urpmi libSDL1.2 libSDL1.2-devel
+
+
+

+ +

17.3 Red Hat Linux 9 +

+ +

Red Hat provides packages for several of the prerequisites, making +installation very simple. Of the prerequisites, Red Hat provides +packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably +already have installed). To install these all at once, simply type (all on +the same line): +

+
+$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL
+
+
+

+

If you get the following message: "None of the packages you requested +were found, or they are already updated" it probably means you already +have all of those packages installed.

+

You must install the remaining packages, (MAD, FLAC, libcdaudio and +optionally fftw) manually following the installation directions above. When +installing fftw do not use the rpm package offered on the website because it +will cause an error, so use the source package instead.

+

+

+ + +NOTE: you can use the instructions given at the +automated installation section to install all of MythMusic in one +step. +
+

+

17.4 Compiling MythMusic +

+ +

Once all the prerequisites have been installed, you can proceed with +compiling MythMusic.

+

+

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+# exit
+
+
+

+ +

17.5 Configuring MythMusic +

+ +

Configuration of MythMusic occurs in two places. The main mythfrontend +Setup is for global MythMusic configuration. Go to the +Setup/MythMusic/General Setup screen and adjust it for your particular +configuration.

+

The second configuration screen is within the MythMusic program and will +allow you rescan your music library, etc.

+

Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat:

+

If Ignore_ID3 is set to TRUE, MythMusic will try to determine the +Genre, Artist, Album, Track Number, and Title from the filename of the +mp3 file. The NonID3FileNameFormat variable should be set to the +directory/file format where the mp3 files are stored. For instance, I +store mine in the above shown Genre/Artist/Album/Track format. MythMusic +will then use this information to fill in the proper fields when it +populates the musicmetadata table rather than searching for an ID3 tag in +the mp3 file.

+

The files can be laid out in any format, such as:

+

Genre/Artist/Album/Title +Artist/Genre/Album/Title +Artist/Album/Title (with Genre left as Unknown)

+

The track number is optional but can be specified with the title by using +the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, +then the filename can have a space, hyphen, or underscore separating the +track number from the track title. Keywords are case insensitive, so if +you specify GENRE it's the same as Genre in the format field.

+

The Ignore_ID3 option does not disable the code that determines the track +length, just the portion that tries to read ID3 info.

+ +

17.6 Using MythMusic +

+ +

MythMusic is fairly simple to use. It is recommended that you insert the +CD before selecting "Import CD". You should also ensure that your system +doesn't try to automount the CD and begin playing it automatically.

+

Here's some information on playlist management:

+

Q: How do I create a new playlist? +A: Using the MythMusic "Select Music" menu option, setup the playlist as you +normally would by adding songs or other playlists as needed. When you are +ready to save the new playlist, highlight "Active Play Queue" at the bottom +of the selection tree and hit the "i" key. This will pop up a menu allowing +you to name and save the new playlist. You can also hit Enter to bring up +the popup on the Active Play Queue. This does not work on the playlists +above, as Enter is obviously bound to checking/unchecking the boxes. Any +number (i.e. keypad on remote) will also bring up the menu in both cases.

+

Q: How do I enter the playlist name in the text field without a keyboard? +A: Use the keypad number keys (bound to your remote) to select letters +quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text +entry. 1 cycles through a few special characters, delete, and space. 0 is +like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be +able to specify the cycle timing in a Setup screen. You can type fairly +quickly through a combination of jumping around the number keys AND hitting +a non-number key (right arrow is particularly good for this) to force the +current character.

+

Q: How do I edit a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Move to Active Play Queue" in the popup. You can now modify the +"Active Play Queue" like normal, adding songs and playlists by selecting +them from the song tree. When you are done, highlight the "Active Play +Queue" in the selection tree and hit the "i" key then select "Save Back to +Playlist Tree". And whatever you were editing as your Active Queue before +you moved an existing playlist "on top" of Active reappears. Think of Active +has having a push on, pop off capability, but with a depth of only 1.

+

Q: How do I delete an item from a playlist? +A: Highlight the item in the selection tree and hit the "d" key.

+

Q: How do I rearrange the songs in my playlist? +A: Highlight a song and hit the "space" bar, the song will now have pair of +red arrows in front of it. Use the up and down arrow keys to move it around +in the playlist. When you have it where you want it, hit the "space" bar +again.

+

Q: How do I delete a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Delete this Playlist" from the popup.

+ +

17.7 Troubleshooting MythMusic +

+ +

You may run into errors when running MythMusic.

+

When I run MythMusic and try and look up a CD, I get an error message

+ +

The full text of the message will say:

+

databasebox.o: Couldn't find your CD. It may not be in the freedb database. +More likely, however, is that you need to delete  /.cddb and  /.cdserverrc +and restart mythmusic. Have a nice day.

+

If you get this message, you should go to the home directory of whatever +user MythMusic is running as and type: +

+
+rm .cdserverrc
+rm -rf .cddb/
+
+
+

+

These files aren't automatically deleted because of a conscious design +decision by the author that programs that automatically delete things are +bad.

+

The files are used to locally cache CD lookups. If you are re-inserting +CDs, your machine will not actually have to go out to the Internet to +determine what is on them. However, the URL used to access the freedb +database has recently changed, so the stale information in the files from +previous runs of MythMusic would cause the error above. Once the files have +been deleted the stale information will be gone and your local database +will be rebuilt as you use CDs.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html new file mode 100644 index 0000000..01ca0e6 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-18.html @@ -0,0 +1,71 @@ + + + + + Installing and using MythTV: MythWeather. + + + + + +Next +Previous +Contents +
+

18. MythWeather.

+ +

MythWeather is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

+

+

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythweather
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+# exit
+
+
+

+

MythWeather uses MSNBC.com as its source for weather data and weather.com +for its radar image.

+

These are the keyboard commands for MythWeather: +

+
+Left Key             Goes back one page, and extends the time spent
+                     on the page you are on.
+Right Key            Goes forward one page, see above.
+Space                Pause, wait on the current page until space is hit
+                     again.
+Numeric Keys         You can check other weather by keying in other ZIP codes.
+Enter Key            Switch between Celsius and Fahrenheit. Can also
+                     be used a way to force a data update.
+"m" Key              Resets the location to the database default, then updates the data.
+"i"                  Enter / Save settings
+ESC                  Exit the settings screen without saving / Exit the program
+
+
+

+

MythWeather also has an "Aggressiveness" setting. This affects how long +MythWeather waits for data from the msnbc.com website before timing out. If +you are on a slow connection, or have a slow DNS, or MythWeather just +doesn't seem to be working and you've already tried everything else, then +try increasing the aggressiveness level parameter. This parameter is +inverse; a higher number actually means that MythWeather will be less +aggressive, and will therefore wait longer before timing out.

+

MythWeather will print debugging information on the terminal. If you wish +to see additional debugging information while MythWeather is running, run +mythweather from the command line with as mythweather --debug

+

You may also force mythweather to re-run the configuration by starting it on +the command line as mythweather --configure. These two options are +mutually exclusive.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html new file mode 100644 index 0000000..f9e9969 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-19.html @@ -0,0 +1,42 @@ + + + + + Installing and using MythTV: MythVideo. + + + + + +Next +Previous +Contents +
+

19. MythVideo.

+ +

MythVideo is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

+

MythVideo will allow you to use an external program to watch media files +that are not directly supported by MythTV.

+

+

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythvideo
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+# exit
+
+
+

+

See MythVideo's README file for additional information.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html new file mode 100644 index 0000000..c958ba0 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-2.html @@ -0,0 +1,27 @@ + + + + + Installing and using MythTV: Introduction. + + + + + +Next +Previous +Contents +
+

2. Introduction.

+ +

This HOWTO document will focus on manually building MythTV in a North +American environment. If you have installation instructions for a different +region or Linux distribution, please send them to the author so that it can +be included in other versions of this document.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html new file mode 100644 index 0000000..6b3561b --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-20.html @@ -0,0 +1,102 @@ + + + + + Installing and using MythTV: MythDVD. + + + + + +Next +Previous +Contents +
+

20. MythDVD.

+ +

MythDVD is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythDVD is an application which rips DVDs and makes them available for +use with MythVideo. You may also transcode the DVD content from MPEG-2 to +other formats which should greatly reduce the amount of space the DVD +material takes up on your hard drive.

+

MythDVD has a number of prerequisites to enable transcoding functionality. +If you only wish to play DVDs rather than convert them to something like +MPEG-4 or xvid you may skip the prerequisite installation step.

+ +

20.1 Manual Compilation of Prerequisites +

+ + +

20.2 Pre-compiled binaries +

+ +

Mandriva users may install the prerequisites this way: +

+
+# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel 
+# urpmi mplayer ogle xine
+
+
+ +Assuming that you've added a PLF mirror, you may also load the rest of the +prerequisites using the following command: +
+
+# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss
+
+
+

+

In the example below, we have enabled support for transcoding and for VCD +playing. You may remove these options if you don't need them. +

+
+$ cd ~/mythplugins-0.20
+$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+
+
+

+

20.3 Running the Myth Transcoding Daemon +

+ +

Transcoding ("ripping") a DVD requires you to run the Myth Transcoding +Daemon (mtd). To ensure that mtd is configured correctly, you should first +test it at the command line. +

+
+$ mtd -n
+
+
+ +The last line of text should show something like: +
+
+mtd is listening on port 2342
+
+
+ +This indicates that mtd is ready for use. Once you've successfully +tested mtd in the foreground, type CTRL-C to stop mtd. You may +then start it as a background (daemon) process. +
+
+$ mtd -d
+
+
+

+

Running mtd as a daemon will allow you to automatically start it during the +boot process. For example, you may add mtd -d to your +rc.local file, or you can adjust the script/steps outlined in the +section called +Automatically starting mythbackend at system boot time to start mtd instead of mythbackend.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html new file mode 100644 index 0000000..8b8d7dd --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-21.html @@ -0,0 +1,37 @@ + + + + + Installing and using MythTV: MythNews. + + + + + +Next +Previous +Contents +
+

21. MythNews.

+ +

MythNews is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythNews is a RSS reader. +

+
+$ cd ~/mythplugins-0.21
+$ ./configure --disable-all --enable-mythnews
+$ qmake mythplugins.pro
+$ make
+$ su
+# make install
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html new file mode 100644 index 0000000..9a4f0b6 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-22.html @@ -0,0 +1,608 @@ + + + + + Installing and using MythTV: Troubleshooting. + + + + + +Next +Previous +Contents +
+

22. Troubleshooting.

+ +

22.1 Compiling +

+ +

Compile errors

+ +

Some compile errors are worse than others. If you get an error that +doesn't abort the compilation, and says something like: +

+
+cc1plus: warning: changing search order for system directory
+"/usr/local/include"
+cc1plus: warning:   as it has already been specified as a non-system
+directory
+
+
+ +then it shouldn't be a problem.

+

If you get an error like /usr/bin/ld: cannot find -lXext, the +compiler is telling you that you don't have XFree86-devel installed, or that +your distribution hasn't set it up correctly. This needs to be fixed before +MythTV will compile.

+ +

make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop.

+ +

This error happens when there's a missing link in the +/usr/lib/qt3/mkspecs directory. There are two ways to fix this +error:

+

1. Create the link manually: +

+
+$ su
+# cd /usr/lib/qt3/mkspecs
+# ln -sf linux-g++ default
+
+
+ +and then restart the compile,

+

or

+

2. Run qmake mythtv.pro in the mythtv directory. Rerunning +qmake will create a new Makefile for you, however this still +doesn't fix the root cause of the issue, which is that your distribution +didn't create the symlink for you when the qt3 package was installed. The +first choice is the better solution.

+ +

make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop.

+ +

You didn't set your QTDIR. Re-read the section on +Setting up paths.

+ +

Internal Segmentation Fault.

+ +

This is most likely to be caused by an overheating processor rather than +an actual programming fault within gcc.

+ +

22.2 Debugging +

+ +

MythTV segfaults

+ +

MythTV isn't doing anything

+ +

Debugging with GDB

+ +

Without details, the developers will not be able to determine if you have +discovered a genuine code-bug, or if the problem is with your system. In +order to determine what's going on, you must recompile MythTV with debugging +support and run MythTV within gdb, the GNU debugger. +Note that, on OS X, some data is provided without going through these steps. +See  /Library/Logs/CrashReporter/MythFrontend.crash.log

+

Re-run the configure script and add --compile-type=debug +to any previous configuration options you may have used. Check the +config.log file if you have forgotten.

+

Now, you need to clear out the old versions of the software to ensure that +you're running with the debugging code, then compile and install. +

+
+$ make distclean
+$ ./configure --compile-type=debug
+$ make
+$ su
+# make install
+# exit
+
+
+

+

At this point, you now have debug-enabled software ready. To make sure that +you don't forget to type a command required for debugging, it's best to +setup a gdbcommands file. This will be read by gdb when it's +started. +Put the following into gdbcommands in your home directory:

+

+

+
+handle SIGPIPE nostop noprint
+handle SIG33 nostop noprint
+set logging on
+set pagination off
+set args -l myth.log -v record,channel,siparser
+run
+thread apply all bt full
+set logging off
+
+
+

+

Let's assume that the problem you're having is in mythbackend.

+

+

+
+$ gdb mythbackend -x gdbcommands
+GNU gdb 6.3-debian
+Copyright 2004 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License, and you are
+welcome to change it and/or distribute copies of it under certain conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty" for details.
+This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1".
+[Thread debugging using libthread_db enabled]
+
+
+

+

gdb will automatically read the commands that you've placed in the +gdbcommands file and begin running the program you specified on the +command line.

+

If the program appears to be locked up, press CTRL-C to create the backtrace +file.

+

All of the output from gdb.txt should be posted to the mythtv-dev +mailing list, along with the steps you followed to get the program to crash.

+

NOTE: If you're trimming the gdb.txt file to remove +extraneous information from the beginning of the file, make sure you include +at least 10 lines prior to the point where the backtrace actually +begins. This ensures that there is some context to the backtrace, and so +that it's possible to see what exactly caused the segfault.

+

gdb has a number of options, read the man page for more +information.

+

Using the gdbcommands file in conjunction with a while loop +will ensure that gdb creates a trace file and then restarts:

+

+

+
+$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done;
+
+
+

+

NOTE: To exit this loop you will need to kill the while loop.

+

If you're trying to troubleshoot and you can't get back to the gdb window +for some reason, it may be easier to use two systems or to start +mythfrontend from the text console.

+

If you're going to troubleshoot from a remote system, connect to the machine +that you're going to test using ssh or telnet. Next, type +$ export DISPLAY=localhost:0.0. This will allow the graphics to be +displayed on the X console (usually ALT-F6 or ALT-F7) and still give you +output and control of mythfrontend, either from the ssh +session, or by switching back to the text console by pressing CTRL-ALT-F1. +You can now continue troubleshooting using gdb as detailed in the +instructions.

+ +

MythTV is crashing your system

+ +

When run as a non-privileged user, MythTV can not crash your +system. If your system is crashing when you run MythTV, then you have some +issue with the drivers for your capture card or other hardware, or the CPU +fan has fallen off/broken and your system is overheating when asked to +perform a CPU intensive task like encoding video.

+

If you are running as root, which is strongly discouraged, it is +possible that your system may crash due to the real-time thread using all +available CPU. You will not be able to interrupt the process, so for all +intents and purposes your computer will have crashed.

+ +

22.3 Installing +

+ +

When trying to run mythtv-setup, you get an error like this: "mythtv-setup: error while loading shared libraries:"

+ +

You didn't add /usr/local/lib to /etc/ld.so.conf. See the +section on modifying +/etc/ld.so.conf.

+ +

22.4 Using +

+ +

No programs are displayed in "Watch Recordings"

+ +

This situation occurs most often with a system that acts as a frontend +and a slave backend. MythTV supports system-global and user-specific +configuration files, with user-configuration files taking precedence. 99% +of the configuration for MythTV is in the MySQL database, but MythTV still +needs to know where the MySQL server is running. This information is in the +mysql.txt file. By default, it will be installed to +/usr/local/share/mythtv, but a copy placed into ~/.mythtv +will over-ride the global configuration.

+

You must ensure that there aren't multiple, conflicting versions of this +file on your system! +

+
+$ locate mysql.txt
+/usr/local/share/mythtv/mysql.txt
+/home/mythtv/.mythtv/mysql.txt
+$
+
+
+

+

As you can see, in this example there are two mysql.txt files. If +they are not identical, then there may be unintended consequences.

+

You may also see this error if you completely fill the /var +partition. The most likely mythtv-related reason for this is an +overly large mythbackend or mythfrontend log file in /var/log. If +you have logging enabled for the backend, and myth runs for weeks at a time, +this may creep up and surprise you. Note that many system processes also +write to /var and the system may not boot if it is unable to write +to /var due to a full partition.

+ +

MySQL not connecting correctly

+ +

Your MySQL installation may have networking turned off. +Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

+ +

MySQL database is corrupt

+ +

If you have reason to believe that your MySQL database is corrupt, +execute the following commands to attempt to repair it.

+

NOTE: Ensure that there are no programs accessing the database +while you attempt to repair it. Make sure that all backend and frontend +programs have exited.

+

mysqlcheck -r -umythtv -p<password> mythconverg

+ +

Using a MPEG-2 encoder card and the video appears "jittery"

+ +

Using a MPEG-2 encoder card and the video is jumping up and down

+ +

This is a different problem than the one discussed in the previous +section. Currently, the ivtv driver or firmware appear to have some issues +if the vertical capture resolution is not the full screen height. If you +are having a jitter problem then ensure that you are capturing either 480 +lines (for NTSC) or 576 lines (for PAL). The default capture profiles may +need to be edited for your setup. Go to Settings->TV Settings->Recording +Profiles and adjust the Default and Live TV options to +480 or 576 from their defaults.

+ +

Screen goes blank but returns when mouse is moved or keyboard is used

+ +

This is due to DPMS, the Display Power Management System, which is used +to save power by turning off your monitor when the system decides that it's +not being used or due to a screensaver that has defaulted to a blank screen. +MythTV now has DPMS support built-in, and should intelligently handle the +screen. Continue reading if you wish to override DPMS and force it off.

+

Since it's likely that watching TV will not generate keyboard or mouse +events for a time, you need to turn off DPMS and the screensaver. There are +a few ways to do this. You may also need to check your BIOS for power +saving modes and disable screen blanking there as well.

+

Edit your /etc/X11/XF86Config-4 or /etc/X11/xorg.conf +file, and look for: +

+
+Section "ServerFlags"
+    #DontZap # disable <Ctrl><Alt><BS> (server abort)
+    #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
+    AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work
+
+    Option "blank time" "0"
+    Option "standby time" "0"
+    Option "suspend time" "0"
+    Option "off time" "0"
+    Option "NoPM" "1"
+EndSection
+
+
+

+

Also, look for: +

+
+Section "Device"
+    Identifier "device1"
+    VendorName "nVidia Corporation"
+    BoardName "NVIDIA GeForce 256 (generic)"
+    Driver "nv"
+    Option "DPMS"
+EndSection
+
+
+

+

In this case, you would need to either delete the Option "DPMS" +line, or change it to # Option "DPMS" to comment it out. The next +time you start XFree this change will take effect.

+

Finally, check: +

+
+Section "Monitor"
+    Identifier "monitor1"
+    VendorName "Plug'n Play"
+    HorizSync 30-85
+    VertRefresh 50-160
+
+    # Sony Vaio C1(X,XS,VE,VN)?
+    # 1024x480 @ 85.6 Hz, 48 kHz hsync
+    ModeLine "1024x480"    65.00 1024 1032 1176 1344   480  488  494  563 -hsync -vsync
+
+    # TV fullscreen mode or DVD fullscreen output.
+    # 768x576 @ 79 Hz, 50 kHz hsync
+    ModeLine "768x576"     50.00  768  832  846 1000   576  590  595  630
+
+    # 768x576 @ 100 Hz, 61.6 kHz hsync
+    ModeLine "768x576"     63.07  768  800  960 1024   576  578  590  616
+EndSection
+
+
+

+

Ensure that there isn't an Option "DPMS" in the Monitor +configuration.

+

You can also turn off DPMS from the Command Line, but this will not survive +a reboot. +

+
+$ xset -dpms
+
+
+

+

Using xset +dpms will turn it back on.

+

Another technique to try, which will turn off the screensaver: +

+
+$ xset s off
+
+
+ +You may also combine the command to turn off DPMS and the screensaver: +
+
+$ xset -dpms s off
+
+
+

+

Finally, depending on your distribution, you may be able to turn it off from +within the control panel.

+

22.5 Miscellaneous +

+ +

mythfilldatabase failing

+ +

If mythfilldatabase suddenly appears to be failing, there are at least +two things to check.

+

First, if you are in North America, ensure that your DataDirect subscription +is still valid, otherwise, check to see what version of XMLTV you're +running and that it's the latest version.

+

+

+ + +NOTE: It is highly recommended that you run the latest +version of XMLTV available. Your listings provider may have made changes +which negatively impact XMLTV. +
+

+ +

Fast CPU, choppy or jittery video

+ +

First, you should check that your kernel has been enabled for DMA: +

+
+[mythtv@pvr mythtv]$ dmesg |grep DMA
+    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
+    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio
+hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33)
+hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33)
+
+
+

+

From the listing above, you can see that hda, hdb and hdc are set for DMA, +and hdd is set for pio. If your kernel is not reporting DMA being enabled, +you may need to recompile your kernel. Check your motherboard's chipset +(look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more +information.

+

Next, check that the hard drive has DMA enabled. Use the hdparm +program to check and enable DMA. +

+
+# hdparm -d /dev/hd?
+
+
+ will tell you the DMA status for your hard drives. If you run +hdparm with the -d1 parameter, it will turn DMA on.

+ +

You may also setup your PC to do this at boot time, either by adding the +command to your /etc/rc.local file, or by adding files to +/etc/sysconfig.

+

On Mandriva and other distributions, if you install hdparm from an RPM you +will most likely get a /etc/sysconfig/harddisks file installed. +This file will be parsed by the /etc/rc.sysinit script. If you use +the default harddisks file, your changes will affect all IDE devices +(including CD ROMs). If you wish to use different parameters for various +devices, rename and/or copy the file to harddiskhda, +harddiskhdb, etc. Edit the file to your liking and on the next +reboot your setting will be preserved.

+ +

Frontend appears to be slow at jumping / seeking.

+ +

On-screen Display shows incorrect program length.

+ +

This may occur when MythTV doesn't have an accurate seek table. Run +mythcommflag --rebuild

+ +

Troubleshooting audio

+ +

+

+ + +NOTE: the following instructions do not apply to PVR-250/350 +encoders; the MPEG-2 file will have the audio embedded in the stream so it +is not accessible using /dev/dsp. +
+

+

Audio appears to be one of the bigger issues that users run into on the +mailing list. If the audio isn't configured correctly, then MythTV will +often appear to hang, when in fact it is trying to manipulate the audio +subsystem and failing. You may or may not receive error messages indicating +that the source of the error is the audio subsystem.

+

You can not use xawtv to determine if your audio is working +correctly, since xawtv is simply using the analog sound patched +through line-in to line-out. It doesn't need to digitize the sound unless +you are using the recording function.

+

A better test to verify that sound will work for MythTV (and recording with +xawtv for that matter) is to startup xawtv, mute the +line-in then run aplay /dev/dsp. You should hear the recorded audio +slightly delayed behind the real-time video. You should see messages about +"underrun". These can be ignored but they do confirm that the driver is +loaded and there is an active device. Once this test succeeds, MythTV +should work correctly because it writes to and read from /dev/dsp in +the same way that aplay does.

+

To record audio along with video the audio signal must be digitized by a DSP +so that the audio data can be stored in a file. On playback, the audio data +is written to /dev/dsp and converted back to an analog signal. This analog +signal should then be sent to your speakers. Here is what is needed in +alsamixer. If you are using an ALSA version after 1.0.6, use +alsamixer -V all:

+

CAPTUR source - the analog source to be sent to the DSP. This should be set +to the input source from the tuner card to the sound card. In most cases +this is Line but this could also be Aux, CD, Mic, etc., depending on how you +connect the input cable. This source should be muted to prevent patching +through the analog sound. The volume of this source will not affect the +record level.

+

Capture mixer - this sets the level for the analog to digital recording. +While a volume of 100% is recommended for testing, distortion may occur. +Lowering this level to 75% to 85% may result in better audio quality. +"Capture" should be marked as the CAPTUR destination.

+

PCM mixer - this sets the level for the digital to analog playback. While a +volume of 100% is recommended for testing, distortion may occur. Lowering +this level to 75% to 85% may result in better audio quality.

+

Master mixer - sets the level for the analog signal sent to line-out or the +speakers.

+

You may also want to ensure that /dev/dsp , or whatever device file +is being used, hasn't already been grabbed by another process, like +esd or artsd. If the device file isn't available, then +MythTV won't work. You may wish to run configure and enable +support for these.

+

If you wish to see what application is grabbing a resource, you can use the +fuser command: +

+
+# fuser -v /dev/dsp
+
+
+

+

To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and +uncheck the "Start aRts soundserver on KDE startup" box. Run # killall +artsd from the command line to stop the artsd program.

+

If you're using multiple sound cards and multiple tuners, use alsamixer +-c 1 to work with the second sound card. The first card is #0, the +second card is #1, etc.

+ +

Mythbackend reports that your card is not reporting full duplex capabilities

+ +

The mythbackend program told me to look at this section

+ +

mythbackend does a check to see if your sound device is capable of full +duplex operation. If it's not, it's most likely that you're going to run +into issues when you try to record and play sound at the same time. If your +backend is a separate machine than your frontend, then there's no problem, +since you're only going to be doing one thing at a time with the card. +Likewise, if you're running the frontend and backend on the same machine, +but you're using btaudio or a hardware encoder card such as the Hauppauge +PVR-250, DVB cards or HDTV capture cards as your recording source and you're +only using the playback function of your sound card, then you also shouldn't +have an issue, since the sound card isn't being asked to perform two +functions at once.

+

If you can't get your sound card to go full-duplex and need it to, then check +your distribution for updated sound drivers. If your sound card is not +capable of full-duplex operation, either because the drivers don't support +it, or it has been designed that way, then you're pretty much out of luck +and will either need to purchase a new sound card, or will need to get +btaudio +operational.

+ +

My remote doesn't work / works sometimes and not others / "ghost" keypresses

+ +

This can be due to a number of factors. The simplest case is the +"ghost" keypresses. For me, it was due to compact fluorescent lights in +the same room as the IR receiver, which the receiver was picking up as +keypresses. Once the lights were switched to incandescent bulbs, the ghost +went away.

+

You may have an issue with lirc misinterpreting IR commands from a +different remote. I also have an issue where the TiVo "Peanut" remote will +eventually cause lircd to stop responding; even though lircd +is configured for the Pinnacle Systems remote, the TiVo remote IR patterns +are being seen by the IR receiver.

+

If your remote has been properly configured, and irw and +irxevent are working correctly, then it's highly likely that your +window manager is not giving focus correctly to the various Myth programs as +they run. The following window managers are known to work correctly:

+

+

    +
  • fvwm
  • +
  • blackbox (using "Sloppy Focus" and "Focus New Windows")
  • +
+

+

NOTE: You do not need to use irxevent if you are using +MythTV's native LIRC support, so the window manager focus issue does not +apply in that case.

+ +

Where's "canada-cable"?

+ +

Channels are off by one

+ +

There is no such thing as "Canada Cable"; Canada uses the same +frequencies as the United States. "Canada Cable" was a hack that some +people used when they would discover that their channels were off-by-one, +i.e. when tuning to channel 42, they might get channel 41 or 43. This is +actually due to the tuner on the video capture device being mis-detected. +You must manually specify the tuner type in your /etc/modules.conf. +See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information.

+ +

Mythweb is showing a db_open error when I connect to it

+ +

Find your php.ini file. Make sure you've got a line in it like this:

+

extension=mysql.so

+

Restart apache for it to take effect.

+ +

Mouse pointer disappears when placed over the MythTV windows

+ +

This is the intended behavior. The MythTV interface is meant for use +with a remote control or a keyboard.

+ +

What does "strange error flushing buffer" mean on the console?

+ +

Nothing, really. It's just lame (the mp3 encoder) complaining for some +obscure reason. This seems to be fixed in more recent versions of the +libmp3lame library.

+ +

Can't change the channel when watching Live TV.

+ +

Something's wrong with your program database. Did mythfilldatabase run +with no major errors? Or, MythTV may not have permissions to the +appropriate video4linux devices. See the section titled +Device Permissions for an example.

+ +

Screen goes black when you try to play something

+ +

MythTV prints error and status messages to the shell that was used to +start the application. If nothing seems to be happening when you try to +view a program, try switching back to the shell and look for error messages +there, or, if you're running from a startup script, check the log file.

+ +

Poor performance with NVidia cards and XvMC

+ +

XvMC is a NVidia driver feature which is supposed to help with decoding +video. Users have reported that rather than speeding up their video it +appears to be doing the opposite. You may want to check that your color +depth is set for 24bpp.

+ +

Computer is loading a media player application when you insert a CD or DVD

+ +

You need to disable any sort of auto-running media player in your +environment, otherwise MythDVD or MythMusic will not be able to work +properly.

+

In KDE, you may want to perform the following: +

+
+$ rm ~/.kde/Autostart/Autorun.desktop
+
+
+

+
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html new file mode 100644 index 0000000..8b7439e --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-23.html @@ -0,0 +1,1193 @@ + + + + + Installing and using MythTV: Miscellaneous. + + + + + +Next +Previous +Contents +
+

23. Miscellaneous.

+ +

23.1 I'd like to watch the files without using MythTV / I'd like to convert the files to some other format +

+ +

First, check if the mytharchive plugin does what you want. If not, then +read on:

+

MythTV comes with a utility called mythtranscode which can +decode nuv files into raw format for use with other applications. This +command-line utility was not designed to be used by the end-user, but +instead to be called by other applications or scripts. Programs like +nuvexport ( +http://forevermore.net/myth/) are better suited for the end user. +However, since mythtranscode can be a useful tool, directions on +using it follow.

+

mythtranscode creates raw streams, which means that they do not +contain any container information such as resolution, frame-rate, or audio +sampling rate. In order to process the output, you must supply this +information to the processing utility. mythtranscode provides the +relevant information on STDOUT.

+

There are two modes in which mythtranscode can create raw streams. +The first has no synchronization and assumes that the processing utility +will read audio and video at a constant rate. This method is useful when a +single application will be processing the raw output, such as +mencoder or ffmpeg. The second method assumes that two +separate applications will be processing the audio and video streams +independently, and there is no rate control between them which means that +the two programs don't coordinate their efforts to maintain synchronization.

+ +

mythtranscode example

+ +

First, start mythtranscode. You will need to determine the +channel and the start time manually. +

+
+$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \
+autodetect --fifodir . &
+
+
+

+

When mythtranscode begins executing, it will create two FIFOs +("audout" and "vidout") in the directory specified (in this case ".", +meaning the current directory) and will print out information about the +video stream.

+

The next step is to start the processing application. The following assumes +that the stream is NTSC 640x480 with 32Kbps audio.

+

To use mencoder you would enter a command like: +

+
+mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
+-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \
+vidout
+
+
+

+

+

+ + +NOTE: You must use mencoder 1.0PRE1 or later. mencoder +version 0.9x WILL NOT WORK! +
+ +Using ffmepg: +
+
+ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \
+-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi
+
+
+

+

Or to play directly using mplayer (again 1.0PRE1 or later is needed): +

+
+mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
+-rawvideo on:w=640:h=480:fps=29.97 vidout
+
+
+

+

If you wanted to write the raw data to separate audio and video files for +later processing, the following would work (note the use of --fifosync +for rate-control): +

+
+$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \
+--profile autodetect --fifodir . --fifosync &
+$ cat audout > audio.raw &
+$ cat vidout > video.yuv
+
+
+

+ +

23.2 Using a different window manager +

+ +

MythTV is not dependent on any particular window manager. If you wish to +run a lightweight window manager, the contrib/configfiles/ directory has an +example of a .twmrc and .fvwmrc file you may use.

+ +

23.3 What capture resolution should I use? How does video work? +

+ +

While MythTV allows you to set various GUI and capture resolutions, not +all combinations make sense.

+

First, analog video signals have a defined vertical resolution. In NTSC, +the video standard specifies that there are 525 vertical scan lines. Once +the "extra" lines are removed (they're used to synchronize the video signal, +and encode closed captioning data), you have 480 horizontal lines stacked +vertically.

+

In PAL, there are 625 "raw" lines of resolution, with a net of 576 +horizontal lines stacked vertically.

+

Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, +due to limitations in the chip and other limitations of broadcast +television, there may not be a noticeable improvement in image quality +beyond 400 or 500 pixels.

+

With this in mind, there are certain commonly accepted values for +resolution. While other values may be accepted for the vertical +resolution, they will cause scan lines to be repeated or dropped.

+

From "best" to "worst", in NTSC: +

    +
  • 720x480 "DVD" resolution. ReplayTV High and medium resolution
  • +
  • 704x480 DVD standalone recorder standard resolution
  • +
  • 640x480 4:3
  • +
  • 544x480 TiVo Best resolution
  • +
  • 480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution
  • +
  • 352x480 ReplayTV "Standard" quality, TiVo Basic and Medium resolution, DVD "LP" resolution
  • +
  • 320x480
  • +
  • 544x240
  • +
  • 480x240
  • +
  • 352x240 Video CD (VCD) resolution
  • +
  • 320x240
  • +
+

+

As you can see, the lower quality values are half of the better ones. +720x240 is possible, but isn't a good tradeoff relative to the number of +vertical lines lost. In a PAL country, the you would use values like +720x576 or x288.

+

The higher resolutions will be more CPU intensive if you're using software +encoding (PVR-250/350 will have minimal host CPU impact even if you're using +720x480). If the CPU is overtaxed, frames will be dropped causing uneven +motion. You will likely see the best results at resolutions which average at +least 10% CPU idle time. You can use system tools such as top or +sar to check the CPU % idle while recording. If the CPU average +usage is consistently exceeding 90%, frames will need to be dropped during +peak times when more than 100% of the available CPU would be needed to +process all of the frames.

+

If you'd like to read more on this, go to the vcdhelp website at +http://www.vcdhelp.com/forum/userguides/94382.php.

+ +

23.4 MythTV GUI and X Display Sizes +

+ +

MythTV is designed to be run as dedicated full screen TV application +but can also be run as a desktop application on a computer monitor. Here +are a few consideration for configuring sizes to best suit you needs.

+ +

X Dimensions

+ +

For output to a Television, common resolutions are 640x480, 800x600, and +some rare devices support 1024x768. Generally, higher resolutions are +better. However, you may find that you prefer the picture quality at one of +the lower resolutions. Everything in MythTV is scalable and should 'fit' +regardless of the resolution you choose.

+

Edit your X configuration file, usually /etc/X11/XF86Config-4 for +XFree, or /etc/X11/xorg.conf for Xorg, so that the resolution you +want to use is listed first in the lists under "Screen". If this resolution +is higher than the resolutions supported by your output device, you will see +a 'panning' effect where moving the mouse to the edge will scroll around a +desktop area which is larger than the display size. If this happens, edit +your X configuration file to match the display size then restart X.

+ +

MythTV Dimensions

+ +

From "mythfrontend" go to Setup->Appearance. +The default for the height and width is "0" - this will cause +MythTV to automatically size itself to full screen.

+

If the MythTV GUI width and height are not 0, mythfrontend uses these GUI +dimensions and is anchored to the upper left corner of the X Desktop. If +the GUI X and/or Y are not 0, the upper left corner is positioned at the +specified coordinates. If the "Run the frontend in a window" box is checked, +the window will have a frame and can then be dragged to any position on the +desktop.

+

+

+ + +NOTE: When the GUI is full screen, you may see windows rapidly +flipping on top of each other. If this happens you will need to set your +window manager to 'Click to Focus' for windows to stack properly. +
+ +The fonts for the GUI and OSD will scale to whatever sizes you use. Most +font sizes can be changed in setup selections or in the .xml files under +/usr/local/share/mythtv/ . Make sure to use fonts large enough +to be read on a TV screen from a distance.

+

The full screen TV size is based on the X display size. For Xinerama, you +can specify a screen in Setup->General. The TV picture will be stretched +to fit the entire GUI area regardless of the +capture resolutions used. However, during playback, the "W" key can +to used to correct differences between 16:9 and 4:3.

+ +

Overscan Dimensions

+ +

Because picture edges can be ragged and screen edges aren't straight, +Television is designed to project an image larger than the physical screen. +This is called "overscan". Underscan is fitting the entire image inside the +screen. Underscan is useful for computer monitors so that toolbars and +scrollbars at the edges can be seen.

+

For best results, match the X display area as close as possible to the edges +of the physical screen. This can only be adjusted by your tv-out device or +by the settings for the television set. Many sets have these adjustments in +a 'service mode'. If you cannot make these adjustments, there will be black +borders around the edges of the X desktop, MythTV GUI and TV playback.

+

MythTV has settings for "Overscan" in Setup->Playback. These can not, and do +not, cause the image to display beyond the edge of the X display area. The +purpose of these settings are to cut off rough edges and to expand the image +so that objects will appear to be the same size as a normal overscanned TV +picture.

+ +

23.5 Saving or restoring the database +

+ +

See the mysqldump manpage for more information. +

+
+$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
+
+
+

+

To restore: (assuming that you've dropped the database) +

+
+$ mysql -u root
+mysql>create database mythconverg;
+mysql>exit
+$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql
+
+
+

+

You may need to alter the MySQL permissions if this database is being shared +with multiple systems. See the +Modifying access to the MySQL database for multiple systems section for more +information.

+ +

23.6 Deleting the MySQL database +

+ +

+

+ + +NOTE: Performing this step will remove the entire database. You will lose all of your settings and will need to re-run the mc.sql script +to setup the database structure before running the mythtv-setup program. +
+ +
+
+$ mysql -u root
+mysql> drop database mythconverg;
+mysql> quit
+
+
+

+ +

23.7 Moving your data to new hardware +

+ +

This assumes that you will be moving your data to newer / bigger hardware +and don't want to lose your programs.

+

The first step is to create a database backup as demonstrated in an earlier +section.

+

Next, you will extract only the data that is relevant to the programs: +

+
+$ grep "INSERT INTO record "          mythtv_backup.sql > restore.sql
+$ grep "INSERT INTO recorded "        mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO oldrecorded "     mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedrating "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedmarkup "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO recordedseek "    mythtv_backup.sql >> restore.sql
+
+
+

+

NOTE: Newer versions of mysqldump place backticks around +the table names. Backticks are not the same as apostrophes! On a typical +North American keyboard, backticks are located to the left of the "1" key, +on the same key as the tilde. Also, because the bash shell may try +to interpret the backticks, make sure you use a \ before each one.

+

If your restore.sql file is empty, you'll need to re-run the +commands like this: +

+
+$ grep "INSERT INTO \`record\` "          mythtv_backup.sql > restore.sql
+$ grep "INSERT INTO \`recorded\` "        mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`oldrecorded\` "     mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedrating\` "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedmarkup\` "  mythtv_backup.sql >> restore.sql
+$ grep "INSERT INTO \`recordedseek\` "    mythtv_backup.sql >> restore.sql
+
+
+

+

Note the space after the table name and the ">>" to append to the file for +all but the first grep. "recordedmarkup" and "recordedseek" are +huge and there may be hundreds of thousands of lines if you had lots of +hours of recordings.

+

After you have moved the data files to the new hardware, configure MythTV +using the mythtv-setup program as you normally would with a +standard MythTV installation.

+

At this point we will restore the information about your programs back into +the database: +

+
+$ mysql -u mythtv -pmythtv mythconverg < restore.sql 
+
+
+

+

After successful insertion of the data you may delete the +restore.sql file.

+ +

23.8 btaudio +

+ +

btaudio allows you to obtain the audio data from your tuner card directly +over the PCI bus without using a sound card. This is useful if you would +like to use multiple tuner cards in a system without adding a sound card for +each one, or if your existing sound card is not capable of full-duplex +operation.

+

In order to use btaudio, your tuner card will need certain hardware +installed on it, and that hardware must be wired correctly. The chip that +will allow you to use the btaudio module is the MSP34xx. However, having a +MSP34xx is no guarantee that you will be able to use the btaudio module.

+

As of 2003-03-31, this is the current list of cards and their status: +Works with btaudio:

+

+

    +
  • Hauppauge WinTV-radio with dbx-TV stereo, model 401
  • +
  • Hauppauge WinTV-Theater, model 495, 498 (Europe)
  • +
  • ATI TV Wonder
  • +
+

+

The following cards do not work: +

    +
  • Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not +wired correctly to the BT878 chip.
  • +
  • ATI TV Wonder VE
  • +
  • Leadtek Winfast 2000 XP (PAL, UK and NTSC)
  • +
  • I/O Magic PC-PVR. No MSP34xx chip.
  • +
+

+

The following cards have been reported to work, but have issues: +

    +
  • Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on +analog)
  • +
+

+

Once btaudio loads, it should register additional /dev/dsp and +/dev/mixer devices. Typing $ dmesg will let you know +what's going on.

+ +

23.9 Removing unwanted channels +

+ +

If mythfilldatabase grabbed a channel which you do not want to +include in your TV listings, you can remove the entries from the grabber +configuration and the MySQL database. This often happens with premium +channels; for example, HBO or Showtime may be available on your cable TV +system, but is scrambled because you're not a subscriber to that channel. +Since you can never watch it, you want to get rid of it.

+

If you are using the DataDirect service, login to your account at +http://labs.zap2it.com/ to +modify your lineup. Uncheck the boxes for any unwanted channels, and they +will no longer be included in your download.

+

If you are using a grabber from XMLTV, comment out the channel from the +~/.mythtv/<sourcename>.xmltv file by inserting the word "not +" (including the space) in front of the unwanted entry. This will prevent +xmltv from grabbing future listings.

+

Next, delete the unwanted item from the channel table so that it will not +appear in the EPG or when changing channels. To delete the data from the +database we need to perform some steps. First, assuming that HBO is channel +15, we need to find out the internal chanid used by MySQL: +

+
+$ mysql -u root mythconverg
+mysql> select chanid from channel where channum=15;
++--------+
+| chanid |
++--------+
+|   1015 |
++--------+
+1 row in set (0.00 sec)
+mysql> delete from channel where chanid = 1015;
+
+
+

+

Old program data will be removed over the course of a week. However, you may +want to immediately delete any current program listings for the channel that +has been removed: +

+
+$ mysql -u root mythconverg
+mysql> delete from program where chanid = 1015;
+
+
+

+ +

23.10 NFS +

+ +

You may want to use a central server to store your files.

+

On the host machine, (in this case, the hostname is "masterbackend") you'll +want to edit your /etc/exports file and use something like: +

+
+/var/video (rw)
+
+
+

+

To export the /var/video directory with read / write privileges.

+

On the "slave" machine, you'll want to edit the /etc/fstab file and +add something like: +

+
+masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0
+
+
+

+

Then run # mount -a to re-read the file to mount the file system.

+

In this case, the source is a machine called "masterbackend" which is +exporting the directory "/var/video", which we're mounting locally at +"/var/video". The rsize and wsize options are used to increase the +performance of NFS; "hard,intr" is there because that's the recommendation +of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo +is used to turn off file attribute caching. Attribute caching for a shared +media point causes problems; you always want to see the latest state of the +directory and files. See +http://www.mythtv.org/wiki/index.php/Optimizing_Performance for +additional information regarding performance optimization.

+ +

23.11 Automatically starting mythfrontend at system boot time +

+ +

Here's an example submitted to the mythtv-dev list by Pat Pflaum +mailto:pat@netburp.com using fvwm: +

+
+$ cat > .xinitrc
+fvwm &
+mythfrontend
+^D
+$ cat > .fvwmrc
+Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0
+^D
+$
+
+
+

+

The following also works with blackbox: +

+
+$ cat > .xinitrc
+xset -dpms s off &
+irxevent &
+mythfrontend &
+blackbox
+
+
+

+

Make sure that your .blackboxrc file has: +

+
+session.screen0.focusNewWindows:        True
+session.screen0.focusModel:     SloppyFocus
+
+
+ in it.

+

+

+

23.12 Automatically starting mythbackend at system boot time +

+ +

Red Hat And Mandriva

+ +

Here's a method for automatically starting mythbackend submitted by Mike +Thomson ( +mailto:linux@m-thomson.net) and Stu Tomlinson ( +mailto:stu@nosnilmot.com).

+

Copy the files from the MythTV contrib directory or from Mike's web +site ( +http://m-thomson.net/mythtv/) as follows:

+

etc.rc.d.init.mythbackend should be made executable and copied to +/etc/rc.d/init.d/: +

+
+$ cd contrib
+$ su
+# chmod a+x etc.rc.d.init.d.mythbackend
+# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend
+
+
+

+

etc.sysconfig.mythbackend should be copied to +/etc/sysconfig/: +

+
+$ cd contrib
+$ su
+# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend
+
+
+

+

Edit /etc/sysconfig/mythbackend if you want to change the defaults +(the userid that should start mythbackend, location of the logfile and (if +required) the name and location of the mythbackend binary).

+

Use chkconfig to make sure the script is called when +entering runlevels 3, 4 or 5: +

+
+$ su
+# chkconfig --level 345 mythbackend on
+# exit
+$
+
+
+

+

+

+

Log files

+ +

By default, the log file for mythbackend will be written to +/var/tmp/mythbackend.log. This has been tested and is known to work +on Mandriva and Red Hat, but many people prefer to place logs under +/var/log/.

+

To do this, create a group called mythtv (or anything you prefer) +and add your usual MythTV users to that group. If you changed the user that +starts mythbackend from the default of root you must perform this +step.

+

Create the directory /var/log/mythtv and set its +permissions as follows: +

+
+$ su
+# mkdir /var/log/mythtv
+# chown root:mythtv /var/log/mythtv
+# chmod 0775 /var/log/mythtv
+# exit
+$ ls -ld /var/log/mythtv
+drwxrwxr-x    2 root     mythtv       4096 Apr 28 21:58 /var/log/mythtv/
+$
+
+
+

+

Create a mythtv file in /etc/logrotate.d: +

+
+$ su
+# cat > /etc/logrotate.d/mythtv
+# Set default values for all log files first...
+
+# Rotate the logs once a week, or more frequently if they 
+# exceed 10Mb in size (size is checked daily).
+weekly
+size 10M
+
+# 'copytruncate' is used for logs generated by 
+# currently-running programs that should not be restarted 
+# (and can't be signalled to start a new log) after the 
+# rotation.  It duplicates the existing log file and then 
+# sets the length of the existing file to 0.  The only time 
+# this would break would be if the program writing the log 
+# was using lseek.
+copytruncate
+
+# After rotating the files, leave the most recent rotated 
+# copy alone but gzip everything else to save space.
+compress
+delaycompress
+
+# If a log isn't present then don't worry about it.
+missingok
+
+# Don't rotate an empty file.
+notifempty
+
+# end of the global options
+
+/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log {
+  # Keep logs until they are 2 months old or the number of 
+  # logs reaches 12.  If the log files stay small, the age will 
+  # kick in first and you'll only have 8 log files.  If they 
+  # get larger than 10Mb then you won't keep all 60 days.
+  rotate 12
+  maxage 60
+}
+
+# Different options for mythfilldatabase:
+/var/log/mythtv/mythfilldatabase.log {
+  rotate 2
+}
+^D
+#
+
+
+

+ +

Mandriva

+ +

Mandriva adds one more twist in the form of the msec utility, +which runs regularly and (at the default or any higher security level) sets +permissions on many files, including those under /var/log.

+

To tell msec about the MythTV log files and their directory, you need to +edit the /etc/security/msec/perm.local file to include the +following: +

+
+# /etc/security/msec/perm.local
+# Local overrides to the msec program
+#
+# Full file path                user.group              permissions
+/var/log/mythtv/                root.mythtv             775
+/var/log/mythtv/*               root.mythtv             664
+
+
+

+

A copy of the above has been included in the contrib/ directory. You may +add it by typing: +

+
+$ cd contrib
+$ su
+# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local
+# exit
+
+
+

+

Finally run the msec tool to check and implement your +changes. +

+
+$ su
+# msec
+# exit
+$
+
+
+

+

+

+ + +NOTE: msec can only reduce the permissions of files, so if +you don't get the results you expect, check that you're not asking +msec to add missing permissions to the files or directories you +created. +
+

+

Gentoo

+ +

The portage file for MythTV has scripts that will allow you to run +mythbackend at startup.

+

To run mythbackend as a daemon which starts at boot time: +

+
+# rc-update add mythbackend default
+
+
+ +To stop mythbackend as a daemon: +
+
+# /etc/init.d/mythbackend stop
+
+
+

+

To obtain a list of options: +

+
+# /etc/init.d/mythbackend
+
+
+

+ +

23.13 Advanced Backend Configurations +

+ +

MythTV is flexible in the way that you define multiple backend tuner +configurations. The only hard-and-fast rule is that the Master backend +must have a capture device defined, but shouldn't imply that the +capture device in the Master backend must be the first capture card defined in the +database.

+

One example of an advanced configuration is the round-robin scheme. Rather +than defining all of the cards on the master, you could first go into +mythtv-setup on the master to define globals such as the general configuration +and the channel lineup but not the host-specific configuration item like the +capture card. In this example, we will use a 4 tuner configuration, where two +slaves have one card each and the master has two. +

    +
  1. Add the first capture card on one of the slaves. Complete the +configuration, connecting the input source to the card. This will get +cardid #1 in the database. Exit mythtv-setup.
  2. +
  3. Configure the first capture card on the master backend. This will get +cardid #2 in the database. Exit mythtv-setup.
  4. +
  5. Configure the first capture card on the second slave. This will be +cardid #3 in the database. Exit mythtv-setup.
  6. +
  7. Configure the second capture card on the master backend. This will +get cardid #4 in the database. Exit mythtv-setup.
  8. +
+

+

Using this scheme, the master backend will not use both capture cards until +one of the following happens: +

    +
  • There are four recordings scheduled for the same time
  • +
  • Both slaves are unavailable
  • +
+

+

The scheduler in MythTV checks whether an encoder is available; if a slave +backend isn't running, its encoder isn't available, so the scheduler will +look for the next available encoder. This makes MythTV very flexible; slave +tuners can come and go, and as long as there are enough tuners for what +you'd like to record it doesn't matter which tuner in particular is going to +be used.

+

Using this round-robin scheme along with a shared storage directory like +NFS and enabling the Master Backend Override setting will allow you to view +content even if the slave backend that recorded a program is not available.

+ +

23.14 Using the transcoder +

+ +

MythTV's built-in transcoder re-encodes recordings from one codec to +another. The transcoder has three primary uses; it can transcode MPEG-2 +files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, +etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used +on systems that can not real-time encode to MPEG-4 using a framegrabber) to +MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file +while leaving the file in MPEG-2 format.

+

When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format +is NuppelVideo (nuv). NuppelVideo is a container which provides a method of +keeping the audio and video in sync throughout the recording, which is why +it is used instead of the .avi format. You may have difficulty +playing .nuv files in non-MythTV systems.

+ +

The original file is removed when the transcoding process is complete. +Unless you're sure that you will be satisfied with the result you may want +to enable the mythtv-setup option which causes mythbackend +to keep the original file after transcoding. This option is on the second +page of the General section in mythtv-setup. Enabling this allows you to +compare the two files and restore the original if you like. Outside of the +initial setup phase it usually isn't necessary to leave this option enabled. +A recording can be transcoded in two ways:

+

+

    +
  • Automatically transcode the file once it has completed +recording.
  • +
  • Manually choosing to transcode a recording, usually after +importing a cutlist or manually marking commercials to be +removed.
  • +
+

+

The second method can be used on files that have already been transcoded (or +files which were are already in the desired format), so only the frames +immediately following a cut section will be re-encoded, resulting in a +minimal loss of quality when removing commercials with the added benefit of +being extremely quick.

+

The current transcoding system has a lot flexibility, but there are +a number of steps involved in setting it up. In order to +automatically transcode a given recording you must do the following: +

    +
  1. Configure recording profile for your capture source and enable +transcoding on one or more profiles.
  2. +
  3. Configure one or more transcoding profiles.
  4. +
  5. Create or alter existing scheduled recordings to enable +transcoding for that recording.
  6. +
+

+ +

Configuring Recording Profiles to Allow Transcoding

+ +

Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles +section in mythfrontend. Choose the option that corresponds to +your capture source (ignore the Transcoders for now.) Choose the quality +profile you are interested in using for transcoding. Ensure that "Enable +auto-transcode after recording" is checked.

+ +

Configure Transcoding Profiles

+ +

Enter the Recording Profiles > Transcoders menu. There are three quality +settings to choose from and a two special Autodetect settings. Later, when +scheduling recordings you'll have to choose one of Autodetect, High, Medium, +and Low Quality transcode settings in addition to the recording profile we +set up above. If you choose the Autodetect transcoding profile for a +recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for +recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the +"Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you +choose one of the others (High, Medium, Low) it will use the settings in +that profile regardless of the codec of the original recording.

+

There are a number of options for transcoding but the simplest is to enable +lossless transcoding (the first option) which subsequently removes all other +options. Enabling lossless encoding simply removes commercials (if you've +marked them) and attempts to clean up MPEG-2 streams. Note that with this +option MythTV will not apply any sort of filters and will only attempt to +normalize the stream into something cleaner and less likely to have trouble +with other less forgiving MPEG-2 hardware/software (including players, video +editors, etc.)

+

If you enable resizing of the recording the next page has the settings for +choosing the final resolution. MythTV will scale the video as appropriate, +not crop it to this resolution.

+

The final two pages allow configuration of the video and audio codecs. +Although RTjpeg is an option for video codec there is no reason to transcode +to this format because it will produce larger files than MPEG-4 and +the recording will take more CPU power to play back. The MPEG-4 +settings are described in the documentation for the ffmpeg project +at +http://ffmpeg.sourceforge.net/ffmpeg-doc.html. It's a matter of +trial and error to discover which settings achieve a good compromise between +size and quality.

+

If you wish to return to the default settings, they are Bitrate: 2200-2500, +MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is +enabled. The other options are unchecked.

+ +

Create/Alter Scheduled Recordings to Enable Transcoding

+ +

Transcoding is actually enabled on a per-recording basis. Two things +must be true before any given recording will be auto-transcoded, however. +The first is that the recording must have been made with a recording profile +that has auto-transcode enabled. Under "Storage Options" for the recording +you must set the "Record using the "X" profile" to the profile you +configured in the first step. In addition, under the "Post Recording +Options" section of the recording you must also set "Transcode new +recordings." This is also where you specify the Transcoding profile to use +(Auto, High, Medium, Low.)

+

It may not be obvious from above but the flexibility of this system is +primarily to make it possible to auto-transcode a show recorded via one +source (ie: pcHDTV 3000), and not transcode that same show if it's recorded +on another kind of card (ie: PVR-250.) There are other uses however. You +could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 +from the PVR-250 but there is no need to transcode the recordings made with +the V4L card, as it's already likely to be MPEG-4.

+

As an example, you could configure the Default profile for "Hardware DVB +Encoders" (the profile group used for DVB cards, including ATSC cards like +the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for +MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. +For programs that are available on both kinds of cards you'd set the +recording profile to Default and enable auto-transcoding in the record +settings. Then you pick your transcoding profile. The result is that when +a program is recorded on your DVB card, it will get transcoded. When it +plays on a channel available via your PVR card, it won't be.

+ +

Manual Transcoding

+ +

Manually transcoding is activated while watching a show by hitting 'x', +from the OSD menu by choosing the Transcode option, or by choosing Job +Options/Transcode from the info menu from the Watch or Delete +Recordings screens.

+

The transcoding profile used for manual transcoding is whatever was set when +the recording was originally configured, even if you didn't enable +auto-transcoding. The only way to change what transcoding profile will be +used is to alter the transcoder column in the recorded table in the +database. The transcoder column contains a number which corresponds with +the id column in the recordingprofiles table. You can find out the id +number for each profile in the transcoder group with an SQL command like:

+

+

+
+mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup;
++----+----------------+------------+------------+--------------+
+| id | name           | videocodec | audiocodec | profilegroup |
++----+----------------+------------+------------+--------------+
+| 21 | RTjpeg/MPEG4   | MPEG-4     | MP3        |            6 |
+| 22 | MPEG2          | MPEG-4     | MP3        |            6 |
+| 27 | High Quality   | MPEG-4     | MP3        |            6 |
+| 28 | Medium Quality | MPEG-4     | MP3        |            6 |
+| 29 | Low Quality    | MPEG-4     | MP3        |            6 |
++----+----------------+------------+------------+--------------+
+5 rows in set (0.01 sec)
+
+mysql>                                                                        
+
+
+

+

Armed with the knowledge of what the profile ID's are you can also choose to +run mythtranscode from the command line and explicitly specify the transcoder +profile. Run mythtranscode --help for usage information.

+ +

23.15 Changing your hostname +

+ +

If you need to change the name of the computers used with MythTV you'll +need to perform a sequence of steps. There are a number of pieces of +information that MythTV keeps track of which are tied to the hostname of the +box, so changing the hostname involves altering the name in the +operating system and in the MySQL database. In the examples below, the old +name of the system was "frontend1" and we're going to change it to +"kidsroom".

+

+

+ + +NOTE: Changing the hostname using direct SQL update commands will +break things. You MUST use this indirect method. +
+

+

1. Stop all backends. If you run mythbackend from a terminal +session, press control-c. If your backends are started with an init +script, you would do something like the following: +

+
+$ su
+# /etc/init.d/mythbackend stop
+
+
+

+

2. Change the hostname.

+

For Red Hat and derived distributions, edit the +/etc/sysconfig/network file. Look for +HOSTNAME=frontend1 and change this to +HOSTNAME=kidsroom or whatever you'll be using. For other +distributions, refer to the documentation, such as the +

+hostname(1)
+
+ man page.

+ +

To alter the +hostname in the current session, run: +

+
+# hostname kidsroom
+
+
+

+

3. Dump the database. +

+
+$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
+
+
+

+

4. Rename the host in the database. First, ensure that the new hostname +you'll be using isn't already in the database. +

+
+$ grep kidsroom mythtv_backup.sql
+
+
+ +Now we're actually going to change the name. The following should all be +typed on the same line: +
+
+$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql
+
+
+ +If you don't feel comfortable using sed, you can open the +mythtv_backup.sql file in a text editor and perform a global search +and replace. When saving the file, make sure you use the new name, +mythtv_restore.sql or the rest of the steps below will fail.

+

5. Drop and recreate the database. +

+
+$ mysql -u root
+mysql>drop database mythconverg;
+mysql>create database mythconverg;
+mysql>exit      
+
+
+

+

6. Restore the database using your edited version. +

+
+$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql
+
+
+

+

If you are running slave backends or frontends, don't forget to re-enable +access as detailed in +Modifying access to the MySQL database for multiple systems.

+

7. Start the backends. If you use init scripts, do the following, otherwise +start them from terminal consoles. +

+
+# /etc/init.d/mythbackend start
+
+
+

+

8. Quit and restart all frontends. Delete the mythtv_backup.sql +and mythtv_restore.sql files.

+ +

23.16 Can I run MythTV on my TiVo? +

+ +

23.17 Can I run MythTV on my ReplayTV? +

+ +

No.

+

While it is true that the TiVo runs the Linux kernel, and TiVo has released +their changes to the kernel under the GPL, the TiVo is not a +general-purpose computer, and there is no programming information available +for the custom hardware contained within a TiVo. TiVo is under no +obligation to release the source code to their application.

+

The ReplayTV runs VxWorks, a Real Time Operating System from Wind River +Systems.

+

23.18 Can a wireless connection be used between the frontend and the backend? +

+ +

Yes, assuming that your wireless connection has sufficient bandwidth to +maintain the datarate between the frontend and the backend. 802.11b should +be sufficient if the encoded bitrate of the content is less than the +datarate of your wireless connection, which in the case of 802.11b would be +approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual +throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed +modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple +wireless frontends, poor signal strength or other factors can severely +impact the viewing experience on the frontend.

+ +

23.19 How can I burn shows that I have recorded to a DVD? +

+ +

Use the mytharchive plugin.

+ +

23.20 Using the DBoxII within MythTV +

+ +

The configuration of the DBoxII for use within MythTV is tricky (as of +May 16 2005), that's why it's covered here. Your DBoxII has to be running +linux and the Neutrino GUI instead of the stock BetaNova firmware. For +further information, please refer to +http://www.tuxbox.org. Additionally, you need to enable the SPTS +mode in Neutrino.

+

+

    +
  • Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input", +the other values have to be adjusted according to your setup. +The default values, except for the "DBOX2 host ip", should work fine.
  • +
  • Define a new video source. It doesn't need to be configured, +you just need to define it. MythTV grabs the EPG from the DBoxII.
  • +
  • Connect the DBoxII to the newly defined input source in "input connections".
  • +
  • Since channel scanning is not implemented yet, you need to define channels +in the "Channel Editor". Make sure that you use the same value for +"Channel Name" as on the DBoxII. You can get a list of available +channels from the web interface of Neutrino at http://ip-of-your-box:80/. +Associate the channel with your new video source and repeat when needed.
  • +
+

+

You may leave the Setup now and proceed as usual.

+ +

23.21 What do the icons on the Watch Recordings screen mean? +

+ +

Press "1" or F1 to get a popup.

+

23.22 What do the letters mean when I change channels? +

+ +

These letters let you know what's going on with the backend as it tries +to tune to a channel.

+

Lower case = seen

+

Upper Case = seen & good +

    +
  • l/L = Lock : This could be seen by PVR-250/BTTV users
  • +
  • a/A = PAT : Any recording transmitted in MPEG
  • +
  • m/M = PMT : Any recording transmitted in MPEG
  • +
  • g/G = MGT : ATSC only
  • +
  • v/V = VCT : ATSC only
  • +
  • n/N = NIT : DVB only
  • +
  • s/S = SDT : DVB only
  • +
+

+

23.23 What is the difference between the various Hauppauge PVR models? +

+ +

This is covered in the hardware section, and extensively covered on the +Hauppauge website. ( +http://www.hauppauge.com/pages/compare_pvr.html) Please check the +Hauppauge website for the most accurate information.

+

A PVR-150 comes in a number of versions: +

    +
  • The PVR-150 (Model 1045) is the retail kit. It comes with a remote +control and an IR Blaster. It does not have a radio tuner.
  • +
  • The PVR-150 MCE (Model 1042) will usually come in a plain white box and is +sold as an OEM device. It does not come with a remote control, since it's +usually used as the second, third, etc capture device.
  • +
  • The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and +comes with a Microsoft Media Center remote control instead of Hauppauge's.
  • +
  • The PVR-150 low profile (Model 1086) is a low-profile card. It has a +radio tuner and is approximately half the height of a standard card. +However, it comes with a low-profile PCI bracket, so it is not suitable for +use in a standard PCI slot without removing the bracket, which may not be +worth the trouble.
  • +
+

+

A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a +remote control.

+

The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does +not contain a IR receiver or a remote.

+

The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was +not connected to any output jacks, and there doesn't appear to be any way to +pull decoded video from the card, so it's a fairly useless feature.

+

The PVR-350 (model 990) has the features of the PVR-250 as well as being +able to decode MPEG-2. The encode and decode functions may be used +simultaneously. The MPEG-2 decoder function gives superior video quality +compared to what you'll find on a standard video card. However, the decoder +function is only available once Linux has started, so you will not see any +boot-time messages. Also, the card is not capable of resolutions higher +than 720x480, so it cannot be used with HDTV. Make a conscious decision +(and ask for advice on the mailing list) that you want to tradeoff potential +HDTV use in the future compared to video quality.

+

The X-driver for the PVR-350 support playback using Xv efficiently but does +not support any other 2D or 3D acceleration. For some application this may +place a large load on the host CPU, some will run without any problem and +others (mplayer, xine, xmame etc.) should be configured to utilize the Xv +interface.

+

Note that for the PVR-350 there are some +considerations +regarding the way audio is handled.

+

The PVR-500 is a dual-encoder version of the PVR-150 card, so you can +simultaneously record two different programs at the same time, because there +are two encoder chips on the PCI card. Hauppuage has also installed an +onboard splitter, so you can use one COAX to feed both tuners. Current +versions of the PVR-500 should come with an adapter to allow you to connect +a second S-Video or composite input, but this will take up a second PCI +slot. Early adopters may need to purchase this item separately.

+ +

23.24 Changing channels on an external Set Top Box +

+ +

If you need to use an external Set Top Box (STB), such as for satellite +TV or for digital cable you will need some way for MythTV to tell the STB to +switch to a new channel. There are several methods: +

    +
  1. Use an IR blaster. An IR blaster is an infrared transmitter connected +to your computer. When MythTV needs to change channels it will send IR +pulses, thereby emulating a remote control.
  2. +
  3. Use a direct serial connection. Some STB's have a serial port on the +back, although it may not look like a serial port. It may look like a phone +jack, or a strange VGA connector. It may be labeled "Low Speed Data". A +direct serial connection is more reliable than an IR blaster. Not all STB's +that have a Low Speed Data port have it enabled; you may need to convince +your service provider to turn it on. Stating that you have a Tivo may help; +the Tivo has a direct-connect capability.
  4. +
  5. Use a firewire connection. There is a 6200ch.c in the MythTV +contrib directory which may work for you.
  6. +
+

+

23.25 Configuring one machine to flag all commercials +

+ +

Commercial flagging can be CPU intensive. By default, the backend that +created a recording is the one which will flag commercials. You may wish to +use a different machine to run commercial flagging.

+

On the slower machine:

+

Start the mythtv-setup program. Advance through the pages until you get to +the Job Queue page. Turn off the setting that says "Allow Commercial +Detection jobs", thereby preventing any commercial flagging jobs from +running on this machine.

+

Next, make sure that "Run Jobs only on original recording host" is turned +OFF so that new jobs are allowed to run anywhere.

+

Restart mythbackend since it only reads this setting when it starts +up.

+

On the faster machine:

+

Start the mythtv-setup program. Advance through the pages until +you get to the Job Queue page. Ensure that "Allow Commercial Detection +jobs" is turned ON for this machine.

+

Run mythjobqueue. mythjobqueue will examine the JobQueue +and run any jobs it finds. mythjobqueue should be left running so +that it will pick up any new commercial flagging jobs that are added to the +queue, otherwise new jobs will be added to the queue and your programs won't +be flagged until you run manually run mythjobqueue.

+

Using this technique it's possible to add commercial flagging machines as +needed, even on systems that aren't running a backend. It's also possible +to run the commercial flagger in a virtual machine environment such as +VMWare.

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html new file mode 100644 index 0000000..32a0eb5 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-24.html @@ -0,0 +1,452 @@ + + + + + Installing and using MythTV: Example Configurations. + + + + +Next +Previous +Contents +
+

24. Example Configurations.

+ +

24.1 Logical Volume Manager (LVM) +

+ +

LVM greatly increases the flexibility you have in managing your storage +than traditional physical partitions. This section will provide some brief +notes on how to use LVM to create storage space for your video files and how +to add additional disk space in the future. There's lots more that can be +done with LVM, so check the LVM HOWTO +http://tldp.org/HOWTO/LVM-HOWTO/ document for details.

+ +

+

+ + +NOTE: If you are running MythTV 0.21 and you are using LVM to +create one large filesystem to store your recordings, it's no longer +recommended that you go the LVM route. The preferred solution is to use +Storage Groups. They're more flexible and less +likely to lose all of your recordings if you have a drive failure. +
+

+

If you don't understand how to partition a drive, or how to change the +partition type you should stop and look at documentation on how to perform +these steps.

+

+

+ + +BIG FAT WARNING: Using an incorrect parameter can make your files +inaccessible, prevent your computer from booting, etc. Be careful! +
+

+

Make sure your kernel configuration includes LVM support or that it's +available as a module. Today, most vendors include this by default. You'll +also want to ensure that you have a copy of the LVM utilities; check your +distribution, or get the latest versions from +http://www.sistina.com/products_lvm.htm and build them manually.

+

Check that the vgscan program is being run at some point during +your boot sequence - most distributions do this by default. Look for a +message during boot up that looks like this: vgscan -- reading all +physical volumes (this may take a while...) If you don't see any +messages during boot, you may need to install a LVM init script or confirm +that you have all of the LVM packages installed from your distribution.

+

LVM uses a few concepts you should be familiar with before starting. +

    +
  • PV (Physical Volume). The actual partition on the hard drive.
  • +
  • VG (Volume Group). The aggregation of all the PVs make a VG.
  • +
  • LV (Logical Volume). Subdivision of the pool of space available in +the VG into individual chunks, like /usr, /var/video, etc.
  • +
+

+

The following example assumes that you want to create a LVM partition from a +chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on +/var/video. You later decide to extend this filesystem by adding a new disk: +/dev/hdb.

+

You need to create at least one LVM partition for a physical volume. Use +fdisk or your favorite partition editor to set the type to LVM +(0x8e). If you're using an entire disk, create one big partition rather than +using the device itself. e.g. use /dev/hdb1 not /dev/hdb.

+

In the following example, you have a 15GB disk. The first 6GB are set as +your boot partition. /dev/hda2 was added as an extended partition, +and within that partition you created the /dev/hda5 linux (ext2) +partition.

+

+

+
+# fdisk /dev/hda
+
+The number of cylinders for this disk is set to 1823.
+There is nothing wrong with that, but this is larger than 1024,
+and could in certain setups cause problems with:
+1) software that runs at boot time (e.g., old versions of LILO)
+2) booting and partitioning software from other OSs
+   (e.g., DOS FDISK, OS/2 FDISK)
+
+Command (m for help): p
+
+Disk /dev/hda: 15.0 GB, 15000330240 bytes
+255 heads, 63 sectors/track, 1823 cylinders
+Units = cylinders of 16065 * 512 = 8225280 bytes
+
+   Device Boot    Start       End    Blocks   Id  System
+/dev/hda1   *         1       764   6136798+  83  Linux
+/dev/hda2           765      1823   8506417+   5  Extended
+/dev/hda5           765      1823   8506417   83  Linux
+
+Command (m for help): t
+Partition number (1-6): 5
+Hex code (type L to list codes): 8e
+
+Command (m for help): p
+
+Disk /dev/hda: 15.0 GB, 15000330240 bytes
+255 heads, 63 sectors/track, 1823 cylinders
+Units = cylinders of 16065 * 512 = 8225280 bytes
+
+   Device Boot    Start       End    Blocks   Id  System
+/dev/hda1   *         1       764   6136798+  83  Linux
+/dev/hda2           765      1823   8506417+   5  Extended
+/dev/hda5           765      1823   8506417   8e  Linux LVM
+
+Command (m for help): w
+
+#
+
+
+

+

Create the LVM physical volume from the partitions (repeat if you have +multiple partitions to use): +

+
+# pvcreate /dev/hda5
+
+
+ +Create a LVM volume group out of this physical volume called "VGforMyth" that is +allocated in chunks that are a multiple of 64MB +
+
+# vgcreate VGforMyth -s 64m /dev/hda5
+
+
+ +Create a logical volume of 5GB called "video" and then create the reiserfs +filesystem and mount it: +
+
+# lvcreate --name video --size 5G VGforMyth
+# mkreiserfs /dev/VGforMyth/video
+# mount /dev/VGforMyth/video /var/video
+
+
+ +Now create a 3GB volume for mythmusic files if you like: +
+
+# lvcreate --name music --size 3G VGforMyth
+# mkreiserfs /dev/VGforMyth/music
+# mount /dev/VGforMyth/music /var/music
+
+
+ +Display the volume group status: +# vgdisplay -v

+

Now, lets suppose you want to add a 60GB hard disk to the system as hdb and +allocate 50GB of it to video storage.

+

First, create a single partition /dev/hdb1 covering the whole disk and make +it type 0x8e using your partition editor.

+

# fdisk /dev/hdb +.... create partition, set type, save and reboot if it says you have to

+

Create the new LVM physical volume:

+

# pvcreate /dev/hdb1

+

Add the new physical volume to the volume group:

+

# vgextend VGforMyth /dev/hdb1

+

+

+ + +NOTE: You may get errors at this point stating that there are no +physical volumes available for adding to the LV, even though you know for a +fact that there are. You may need to specify the physical volume in the /dev/ide/host/bus/target/lun/etc format. +
+ +Once you've completed one of the following two procedures, use df +to check that you've got more space.

+

Make the logical volume used for video bigger:

+

# lvextend --size +50G /dev/VGforMyth/video

+

ReiserFS

+ +

Unmount, resize and remount the filesystem. Technically, you don't need to +unmount and remount the ReiserFS. +

+
+# umount /var/video
+# resize_reiserfs /dev/VGforMyth/video
+# mount /dev/VGforMyth/video /var/video
+
+
+

+ +

ext2 or ext3

+ +

LVM comes with a program called resize2fs.

+

Unmount, resize and remount the filesystem. The filesystem must be +unmounted during this procedure. +

+
+# umount /var/video
+# resize2fs --size +50G /dev/VGforMyth/video
+# mount /dev/VGforMyth/video /var/video
+
+
+

+

xfs

+ +

XFS does not need to be unmounted to extend the size: +

+
+# xfs_growfs /var/video
+
+
+

+

24.2 Advanced Partition Formatting +

+ +

The partitions that your distribution sets up for you may not be +optimized for large files. Using LVM in conjunction with the following +techniques can be quite useful.

+

Unlike a typical filesystem, a MythTV video partition is usually a very +large filesystem filled with a fairly small number of large files. +Filesystem I/O is usually not an issue, even in multi-tuner and/or +multi-frontend setups.

+

There is however, one aspect of filesystem performance that can have a +bearing on the performance of MythTV. In Linux, deleting a file will +utilize I/O bandwidth until the deletion has been completed. If deleting +the file takes long enough, the video capture buffer may overrun, thereby +resulting in dropped frames. Some filesystems are faster at deleting files +than others and, for multi-gigabyte MythTV video files, these differences +can be significant.

+

Fortunately, there are published tests ( +http://aurora.zemris.fer.hr/filesystems/big.html) that provide +insight into filesystem performance under conditions relevant to MythTV +usage. In addition, some limited testing (archived at +http://www.gossamer-threads.com/lists/mythtv/users/52672) +with very large files (10 gigabytes) was reported in the MythTV Users +mailing list.

+ +

Ext2

+ +

Ext2 was the defacto standard Linux filesystem for many years. It is +stable, provides good I/O performance and can quickly delete large files. +The primary disadvantage of Ext2 is that it is not a journaling filesystem, +so a file system consistency check (fsck, which is normally only performed +after a system crash) can take many hours on a filesystem the size of a +typical MythTV partition.

+ +

Ext3

+ +

Ext3 is Ext2 with a journal, so your biggest gain is that in case of a +crash and reboot you won't have to wait very long for your partition to be +remounted.

+

There are options available when formatting an Ext3 partition, as in: +

+
+# mkfs.ext3 -T largefile4 /dev/hdb1
+
+
+

+

This example assumes that /dev/hdb1 has already been created using +fdisk. If you're using LVM, /dev/hdb1 may be something like +/dev/VGforMyth/video.

+

The "-T largefile4" option creates one inode per 4 megabytes, which can +provide a few percent more storage space. However, tests indicate that +using the "-T largefile4" option can drastically increase the amount of time +required to delete a large file and thus it should only be used with encoder +settings that produce small video files (YMMV).

+

You can check on your filesystem using the dumpe2fs program. See +the man page for details.

+

ReiserFS

+ +

The Reiser filesystem is another journaling filesystem commonly +distributed with Linux. It is known to be an extremely efficient filesystem +and it especially excels at managing partitions containing a large number of +small files. However, tests indicate it is not the fastest at deleting very +large files. For that reason, it may not be the best choice when using +encoder bitrates that produce very large files.

+ +

JFS

+ +

JFS (Journaling File System) is a journaling filesystem originally +developed by IBM for AIX which was later released as open source. While not +as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora +Core and Mandriva as well as other distros. According to tests, JFS is the +file deletion speed king, deleting virtually any file in under one second, +even files as large as 10 gigabytes.

+ +

XFS

+ +

XFS is a journaling file system originally developed by SGI for Irix, and +later released as open source. While not a part of the default RedHat Linux +9 or Fedora Core installation (although it is a part of Mandriva and Fedora +Core 2+), it can be easily installed via ATrpms. XFS provides deletion +speeds for large files only slightly slower than JFS. According to the test +results shown at ( +http://aurora.zemris.fer.hr/filesystems/big.html), XFS provide +higher I/O rates than JFS, albeit at a higher CPU loading. This may cause +issues if you do not have the spare CPU capacity to handle XFS, potentially +leading to dropped frames.

+

+

+

24.3 Migrating from DataDirect Labs to Schedules Direct +

+ +

MythTV v0.20.2 or later is required to natively support Schedules Direct. +Code has been included to make the transition as simple as possible.

+

You do not need to delete your existing video sources or add new ones!

+

The following steps should work for most users: +

    +
  • Create a Schedules Direct account and use the same information as your +existing lineups at Zap2It Labs. Do not add or delete channels at this +time.
  • +
  • Shut down any running mythfrontend and mythbackend programs.
  • +
  • Perform a backup of your existing database. See +Saving or restoring the database for instructions.
  • +
  • Run mythtv-setup -> Video Sources. Change the grabber to +Schedules Direct, update the username and password fields with the account +information you created at Schedules Direct and select "Retrieve Lineups". +Click Finish.
  • +
  • Exit mythtv-setup and run mythfilldatabase. Check +if there were any errors.
  • +
  • Restart your mythbackend and mythfrontend programs.
  • +
+

+ +

24.4 Caching support for Schedules Direct +

+ +

MythTV 0.20.2 or later supports caching of downloaded information from +Schedules Direct, so devices that share a common source do not require +multiple downloads.

+

Before beginning, perform a backup of your existing database. See +Saving or restoring the database for instructions.

+

In the following scenario, assume that you have the following: +

    +
  1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source.
  2. +
  3. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set Top Box.
  4. +
+

+

What we are going to do is to create a single lineup at Schedules Direct and +then create two Video Sources which use the same login information but have +different channels associated with them.

+

On your Schedules Direct account, create a lineup that has all of the +channels that you can receive. Because we have a Set Top Box (STB), choose +a Digital lineup. Yes, this means that you may have 900 channels in this +lineup, but that's OK.

+

Use the Schedules Direct channel editor and unselect any channels that you +can't tune without the STB. This will usually be channels higher than 125, +but check your CATV provider lineup if you're not sure. Once you've +deselected them (using a click on the first channel you can't receive and +then a shift-click on the last channel you can't receive will deselect all +the channels in between those two.) click the Save Changes button at the +bottom of the screen.

+

In mythtv-setup, create a Video Source with an appropriate name. +"SD-Analog Only" will be used in this example. Click "Retrieve Lineups" +and select the digital lineup you just created at Schedules Direct.

+

Click "Finish" to return to the Video sources selector and then press the +ESC key to go back to the main screen.

+

Now choose Input Connections. Select the PVR-150 which is connected +directly to the CATV. Set the Video Source to "SD-Analog Only" and click +"Fetch channels from listings source".

+

Set the start channel to an appropriate value.

+

NOTE: There is a bug where the "Fetch" command may not work; you +can tell that the Fetch did not retrieve any channels in one of two ways: in +the text-mode console, you will see a connection to Schedules Direct, but it +doesn't appear to retrieve any channel information: +

+
+2007-08-25 15:03:05.526 New DB DataDirect connection
+2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
+2007-08-25 15:03:05.707 New DB connection, total: 3
+2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital
+2007-08-25 15:03:06.623 Data fetching complete.
+2007-08-25 15:03:06.624 DataDirect: Deleting temporary files
+
+
+

+

or, the "Please add channels to this source" message in the "Starting +channel" field stays on the screen.

+

If either of these happens, save the information on this screen by clicking +the "Finish" button. Exit back to the Input connections screen by pressing +ESC, then select this Input Connection again. This time the Fetch will work +and the "Please add channels to this source" message will disappear.

+

If you look at the text-mode console, you'll see this if the channel +retrieval is working: +

+
+2007-08-25 15:04:32.437 New DB DataDirect connection
+2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
+2007-08-25 15:04:32.622 New DB connection, total: 3
+2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost
+2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital
+2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC).
+2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV).
+2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET).
+2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO).
+2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM).
+2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV).
+2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC).
+2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN).
+2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH).
+
+
+

+

Repeat the Input Connection configuration for any other capture devices that +are connected directly to the CATV system. You do not need to click Fetch +once you've done one successful download of the channel information - the +Starting channel should be automatically populated.

+

Go back to Schedules Direct and re-enable the channels that you had +previously deselected, then click Save Changes.

+

Create a new Video Source, here called "SD-All Digital Channels". Perform +the same "Retrieve Listings" you did before.

+

Go back to the Input Connections screen, select the PVR-250 which is +connected to the STB, assign the "SD-All Digital Channels" video source and +perform a retrieve channels. This will pull down the complete channel +listing, but only for this device.

+

When mythfilldatabase runs, it will cache the "big" download which +is appropriate for the STB, and then copy the information to the channels +that can only be accessed without the STB. But by default +mythfilldatabase is going to notice that the "Analog only" video +source is missing the channels that are in the Digital lineup you created at +Schedules Direct, so we need to override the addition of new channels.

+

When you run mythfilldatabase to populate your database, you'll +need to run it like this:

+

+

+
+$ mythfilldatabase --remove-new-channels
+
+
+

+

You will also need to modify how the mythbackend calls +mythfilldatabase when it performs its automatic listings update.

+

In mythfrontend, select "Setup" -> "General".

+

Continue press ENTER until you reach the Mythfilldatabase configuration +screen. In the "mythfilldatabase Arguments" field, type +--remove-new-channels

+

then press the TAB key until you reach Finish, then press ENTER to save. +You can then press ESC until you return to the main screen.

+
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html new file mode 100644 index 0000000..bd6e3b4 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-3.html @@ -0,0 +1,805 @@ + + + + + Installing and using MythTV: Checking prerequisites. + + + + + +Next +Previous +Contents +
+

3. Checking prerequisites.

+ +

You must ensure that any firewalls (either hardware, or a software +firewall installed by your distribution) will not block access to the ports +that will be used by the MythTV clients and servers on the "inside" LAN. +The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and +6544) must be open. It is strongly recommended that you do +not expose the MythTV and MySQL ports to the Internet or your +"Outside" LAN.

+ +

3.1 Hardware +

+ +

Hardware selection is a complex topic, one this HOWTO will only discuss +briefly and in general terms. The following subsections offer some general +guidance but stop short of offering specific recommendations.

+

For a good MythTV experience, you must understand that MythTV exercises your +hardware more than a typical desktop. Encoder cards generate DMA across the +PCI bus. The CPU is busy encoding / decoding video. Hard drives are +constantly reading and writing data. Building a MythTV system on older / +"spare" hardware may be an exercise in frustration and can waste many hours +of valuable time.

+

For more detail about actual configurations that others have used, Mark +Cooper has setup a hardware database at +http://pvrhw.goldfish.org/. The +website will let you browse what other users have reported as their hardware +configuration, and how happy they are with the results.

+

If you have specific questions about the suitability of specific hardware +choices, you can consult the archives of the mythtv-users mailing list at +http://www.gossamer-threads.com/lists/mythtv/ or +post a question to the list.

+

CPU Type and Speed

+ +

Selection of CPU type and speed is one of the trickiest elements of +hardware selection, mainly because there are so many tradeoffs which can be +made. For example, if you have plenty of CPU, you can use higher bitrates +or capture sizes, etc.

+

MythTV has two modes of operation. First, it can function as a software +video encoder, which means that it uses a fairly generic "dumb" video +capture card to get frames of video, encodes them using the CPU on your +motherboard and writes them to disk. High-end video capture cards and +devices like the TiVo and ReplayTV have dedicated encoder chips which use +specialized hardware to convert the video stream to the MPEG-2 format +without using the motherboard CPU. The main CPU has the responsibility of +running the Operating System and reading and writing the encoded frames to +the disk. These tasks have fairly low CPU requirements compared to encoding +video, which is why a device like a Series 1 TiVo can run with only 16MB of +RAM and a 54MHz CPU.

+

There are many variables that go into the question: "How fast a CPU do I +need to run MythTV"? Obviously, the faster your CPU, the better your +experience will be with MythTV. If you are using the software MPEG-4 +encoder and performing the "Watch TV" function, where the CPU is both +encoding and decoding video simultaneously to allow Pause, Fast Forward and +Rewind functions for live TV requires more CPU then just encoding or +decoding. MythTV also supports multiple encoder cards in a single PC, +thereby increasing the CPU requirements if you plan on simultaneously +encoding multiple programs. As a general guideline, plan on 1GHz per +encoder if you are doing software-based encoding, less if you are using a +hardware-based encoder.

+

Here are a few data points: +

    +
  • A PIII/733MHz system can encode one video stream using the MPEG-4 +codec using 480x480 capture resolution. This does not allow for live TV +watching, but does allow for encoding video and then watching it later.
  • +
  • A developer states that his AMD1800+ system can almost +encode two MPEG-4 video streams and watch one program simultaneously.
  • +
  • A PIII/800MHz system with 512MB RAM can encode one video +stream using the RTjpeg codec with 480x480 capture resolution and play it back +simultaneously, thereby allowing live TV watching.
  • +
  • A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file +created on a different system with 30% CPU usage.
  • +
  • A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and +simultaneously serve content to a remote frontend.
  • +
+

+

The second mode of operation is where MythTV is paired with a hardware-based +video encoder, such as a Matrox G200 or a Hauppauge +WinTV-PVR-150/250/350/500. In this mode, because the video encoding is +being done by a dedicated video processor, the host CPU requirements are +quite low. See the +Video Capture Device section for details.

+

The price differential between a frame grabber and a card that implements +hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less +than $30 US. Primary development in MythTV has transitioned to supporting +MPEG-2 capture devices and HDTV, so if given the option, go with the +hardware MPEG-2 encoder.

+

If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the +hardware-based video decoder for playback, which further reduces CPU +requirements.

+ +

Memory

+ +

A MythTV host that is both a backend and a frontend and using software +encoding with a single capture card should run adequately in 256MB of RAM. +Additional RAM above 256MB will not necessarily increase performance, but +may be useful if you are running multiple encoders.

+ +

Hard Disk(s)

+ +

Encoded video takes up a lot of hard disk space. The exact amount depends +on the encoding scheme, the size of the raw images and the frames per +second, but typical values for MythTV range from 700 megabytes/hour for +MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV.

+

+

+ + +NOTE: You must use DMA for hard drive access to prevent +choppy or jittery video. Not all distributions enable DMA at boot time. See the Troubleshooting Section for +instructions on how to do this. +
+

+

Writing video to disk is sensitive to timing issues; RTjpeg requires less +CPU with the tradeoff being larger files and needing to write to the disk +faster. MPEG-4 requires more CPU, but the files are smaller. At the +default resolution, MPEG-2 creates the largest files of all with almost no +CPU impact.

+

See the Troubleshooting +section for more +information.

+ +

Filesystems

+ +

MythTV creates large files, many in excess of 4GB. You must +use a 64 or 128 bit filesystem. These will allow you to create large files. +Filesystems known to have problems with large files are FAT (all versions), +and ReiserFS (versions 3 and 4).

+

Because MythTV creates very large files, a filesystem that does well at +deleting large files is important. Numerous benchmarks show that XFS and +JFS do very well at this task. You are strongly encouraged to +consider one of these for your MythTV filesystem. JFS is the absolute best +at deletion, so you may want to try it if XFS gives you problems. MythTV +.21 incorporates a "slow delete" feature, which progressively shrinks +the file rather than attempting to delete it all at once, so if you're more +comfortable with a filesystem such as ext3 (whose delete performance for +large files isn't that good) you may use it rather than one of the +known-good high-performance file systems. There are other ramifications to +using XFS and JFS - neither offer the opportunity to shrink a filesystem; +they may only be expanded.

+

+

+ + +NOTE: You must not use ReiserFS v3 for +your recordings. You will get corrupted recordings if you do. +
+

+

Because of the size of the MythTV files, it may be useful to plan for future +expansion right from the beginning. If your case and power supply have the +capacity for additional hard drives, read through the +LVM and +Advanced Partition Formatting sections for some pointers.

+

+

+

Video Capture Device

+ +

In order to capture video, MythTV will need one or more video capture +devices with Linux drivers. There are a number of classes of hardware +available for capturing video.

+

Frame Grabbers.

+ +

This class of card is the simplest and is usually the cheapest. There is no +on-board encoding of the analog video; hardware known as a Digital-Analog +Converter (DAC) takes the video and presents it to the computer in an +essentially raw digital form.

+

For a list of video capture cards known to work with Linux, please see +/usr/src/linux/Documentation/video4linux/bttv for a partial +listing; even if your specific card is not listed, it may be that the vendor +is actually using a standard reference design and placing their own name on +it. See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information and for specific hardware questions.

+

The most common inexpensive cards available use the Bt848, Bt878 or CX2388x +series of video capture chips; examples are the "Hauppauge WinTV Go" card and +the "AverTV Desktop PVR" card, both of which use the bttv kernel module.

+

+


+
+NOTE:  The ATI TV Wonder series and the ATI All-in-Wonder series of cards
+are not the same.  The All-in-Wonder cards will not work with MythTV.
+
+
+

+

+

+ + +
+ +
+ + +NOTE: The ATI All-in-Wonder cards (which are not the same +as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) will not work +as a MythTV capture device because the GATOS +http://gatos.sourceforge.net +drivers that are available provide only a limited subset of the V4L API. The TV Wonder series of cards are supported by the Bt8x8 Video4Linux driver. +
+

+

After you have installed a suitable capture device, you can check that +the kernel sees it with lspci. Look for an entry labeled "Multimedia +video controller". To get more detailed information about the card, use +lspci -v or lspci -vv. Ensure that your system is loading +the bttv modules by typing: +

+
+# lsmod |grep bttv
+
+
+

+

You want to see the bttv module listed.

+

Hardware MPEG-2 encoders.

+ +

While inexpensive video-capture cards simply capture raw frames, leaving +encoding to software, some higher-end cards incorporate hardware-based +encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card +supported by the IvyTV project +http://ivtvdriver.org such as the Hauppauge +PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 +cards will allow you to use dedicated hardware encoders rather than your +CPU. (The PVR-350 can simultaneously be used as an output device.) Using the +on-board MPEG-2 encoder greatly reduces the CPU requirements for +encoding.

+

The ivtv driver was incorporated into the Linux kernel starting at v2.6.22.

+

There is a Beta driver for the HVR-1600 card at +http://www.ivtvdriver.org/index.php/Cx18

+

NOTE: Motherboards with the Via chipset are notoriously bad with +DMA and have caused numerous issues with ivtv, including hard locks. See +the ivtv website +http://ivtvdriver.org +for the latest information on what works and what doesn't.

+

Here are some data points for encoding: +

    +
  • A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream.
  • +
+

+

Here are some data points for decoding:

+

+

    +
  • An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU
  • +
  • An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% +CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% +for Live TV at 416x480.
  • +
  • A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU.
  • +
  • A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with +80% CPU.
  • +
+

+ +

DVB capture cards.

+ +

DVB is a video standard primarily found in Europe (where it comes in +DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and +is also used as the programming interface for HDTV capture cards in Linux. +To see if your DVB card is supported, see the list of cards in the +"Supported Hardware" section of the DVB Wiki at +http://www.linuxtv.org/wiki/index.php/Main_Page for more +information.

+

In the United States, you may use a card such as the TwinHan to obtain +unencrypted Free-To-Air satellite channels. See +http://www.lyngsat.com/ for the types +of content which is available.

+ +

HDTV.

+ +

There are a number of HDTV cards with Linux drivers which are known to +operate in the United States; a complete list of cards with DVB drivers can +be found at +http://www.linuxtv.org/wiki/index.php/ATSC_Devices Some cards +support capture of unencrypted digital cable TV (utilizing QAM256), others +will only work with Over The Air (aka "OTA") signals captured with an +antenna (with 8VSB).

+

Cards that have been reported to work include: +

    +
  • pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only)
  • +
  • SiliconDust HDHomeRun (8VSB, QAM256)
  • +
  • pcHDTV HD-3000/5500 (8VSB, QAM256)
  • +
  • Air2PC HD-5000 (8VSB, QAM256)
  • +
  • DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256)
  • +
+

+

NOTE: There are no known consumer-level capture devices which will +allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) +from a set-top box commonly found with digital cable systems or satellite +systems. None of the capture devices listed above +perform any encoding; they merely allow your computer to save a copy of a +HDTV stream which has already been converted to MPEG-2 at the broadcast +facility.

+

NOTE:: All of the cards listed above (except for the HD-2000 and +HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured +as a pcHDTV card if you use the V4L drivers from +http://www.pchdtv.com and use Linux +kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be +configured as a DVB card, but you lose access to the second antenna input in +ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one +for each tuner.

+

To playback HDTV content, plan on a powerful CPU. "How powerful?" depends +on a number of factors, such as the capture resolution, whether the video is +progressive or interlaced, and whether your display card has hardware-assist +support for Linux.

+

The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have +no issues with viewing HDTV.

+

The Complicated Answer:

+

For 720p content (1280x720), a 2.4GHz P4 should be sufficient.

+

For 1920x1080i->1920x1080p with the better deinterlacing methods +done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and +Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware +acceleration. If you enable the hardware acceleration, you may be able to +use a 1.8GHz processor.

+ +

Firewire.

+ +

You may use the Firewire output of the Motorola DCT6200 or the SA3250. +If your provider uses 5C encryption on a particular channel, you won't be +able to get any content.

+ +

DBoxII or other devices running Neutrino

+ +

You may use the Ethernet port of an DBoxII or a similar device to capture +MPEG2. Your set top box has to be running the Neutrino GUI.

+ +

USB Capture Devices.

+ +

The Plextor ConvertX PVR devices are supported through Linux drivers +available from +http://www.plextor.com/english/support/LinuxSDK.htm. MythTV uses the +Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low.

+

Hauppauge WinTV-PVR-USB2 (driver available at +http://www.isely.net/pvrusb2/) +emulates a PVR-x50 card.

+ +

IP Recorder (RTSP, RTS, UDP)

+ +

MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using +the IPTV recorder in MythTV. This recorder expects the channels to be supplied +as a m3u playlist. If your DSL/Fiber provider supplies television service, +but does not provide a m3u playlist for the channels, you can construct one +for your own use. You do not need to download it from the same server as the +streams themselves, and can also read it from a file if this is more convenient.

+

NOTE: Some DSL providers only allow you to use one recorder at a +time, so you may need to limit yourself to one recorder in MythTV and turn +off any set top box the cable provider sold or rented to you with your +service. This limitation is independent of the bandwidth you have purchased.

+ +

Hardware known NOT to work and other issues

+ +

+

    +
  • Hauppauge WinTV-D or -HD (no driver)
  • +
  • Hauppauge WinTV-USB series
  • +
  • Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) cards (no driver - this is not the PVR-250/350 +series of cards supported by the IvyTV driver)
  • +
  • ATI All-in-Wonder series
  • +
+

+ +

Sound card

+ +

The system needs a sound card or an on-board equivalent on the motherboard +to play back and in most cases, to record sound. Any sound card that can be +operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will +work with MythTV. However, some cards and drivers will provide better +quality or compatibility than others. In particular, many audio +devices included on motherboards can be problematic.

+

The usual practice for capturing the audio associated with the video is to +run a cable from an audio output on the video capture card to the Line input +on a sound card. However, some video capture cards provide on-board audio +capabilities that work with the kernel btaudio module instead, +thereby eliminating the need for a cable. This is useful if you will be +using multiple capture cards in a single chassis, since each capture card +will not need its own sound card. Note that a separate sound card is still +required for playback when using btaudio, and that often the audio +recorded in this way will be mono only. See the +btaudio section for more information.

+

+

+ + +NOTE: Analog video capture cards are the only ones which +require a soundcard for capturing audio. DVB, HDTV, and other hardware +encoder cards all provide a combined audio / video stream. +
+

+

+

+ + +NOTE: Plugging a Line-level device into the Mic input is +not recommended. Line-level devices have higher voltages and can damage the +sound card. In addition, even if it doesn't break your card, you will be +getting Mono sound. See the Linux MP3 HOWTO at +http://www.tldp.org/HOWTO/MP3-HOWTO.html for additional information. +
+

+ +

Video Display Card

+ +

MythTV will work with just about any video card. However, it is highly +recommended that you use a card which supports XVideo (XV) extensions. If +your card does not support XV, color conversion and scaling will be +performed by your CPU rather than the video card. This is very CPU +and memory intensive and will often result in dropped frames and a +corresponding degradation of quality. Check the X documentation +for details if you are uncertain about your preferred card. You may +also run xvinfo; look for your video card to be listed as one +of the adapters.

+ +

If you want to use MythTV with a standard television, you will need a +physical connection from your video card to your TV set, which can either be +a TV-out port on the card itself or an external adapter that converts the +VGA signal to an appropriate video signal. "Appropriate" depends on a number +of factors, such as video standard (NTSC vs. PAL), the type of input +connection (Composite vs. SVideo), etc.

+

Note that with some video cards and X drivers, XVideo extensions are +only supported on the VGA output, and not on the TV output.

+ +

Cards with TV-out

+ +

The next section deals with a number of cards that are known to have +TV-out ports. The list is unlikely to be complete, so if you know of +others, please post a message to the mythtv-users mailing list so the +information can be included in future versions of the HOWTO. The list is +organized by manufacturer.

+

Reports here are based on what users of the cards have posted on the +mythtv-users mailing list, so if you need configuration details, please +search the archives at +http://www.gossamer-threads.com/lists/mythtv/ using +the card name in your search string.

+ +

ATI

+ +

ATI makes many cards with TV-out capability, but only offers Linux +drivers for Radeon 8500 and above cards. See the Drivers and Software +section of +http://www.ati.com for the +driver and additional information.

+

The enhanced ati.2 X driver created by the GATOS +http://gatos.sourceforge.net +project offers some support for TV-out on other ATI cards, but only in its +"experimental" version, available through CVS. There have been reports from +people who say they have made this driver work with one or another ATI card. +For example, Bruce Markey +mailto:bjm@lvcm.com writes (on the +mythtv-users mailing list): "I got this to work. You can quote me on that. +I've used TV-out on several models of ATI cards both All-In-Wonder and +regular cards with TV-out." See the "Adventurous Setup" section of +http://gatos.sourceforge.net/watching_tv.php for details. Also see +http://www.retinalburn.net/linux/tvout.html for more information.

+ +

NVIDIA

+ +

Some NVIDIA cards with TV-out can be run using the standard nv driver in +X, combined with the userspace application nvtv to control the TV-out +port. See +http://sourceforge.net/projects/nv-tv-out/ for details. Recent +versions of the NVIDIA driver have better support for overscan and other +features useful with TV-Out, so the nvtv application may not be +required.

+

Some NVIDIA cards can be run with a proprietary NVIDIA X driver made +available by NVIDIA. See +http://www.nvidia.com/object/unix.html for more information.

+

NOTE: It's strongly recommended that you use the proprietary +NVIDIA drivers; they have excellent support for XvMC and ship with a good +configuration utility. XvMC provides MPEG-2 hardware acceleration, which is +important if you want to display HDTV.

+ +

Hauppauge PVR-350

+ +

MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV +driver.

+

The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also +supports audio output, but you need to connect that audio output to +something. There are two courses of action you may take: +

    +
  1. Take the audio output from the PVR-350 and plug it into an input on a +sound card on your machine. You may then use MythTV's internal audio +controls.
  2. +
  3. Take the audio output from the PVR-350 and connect it directly to your +television / audio system. You must indicate that you are using external +audio control on the PVR-350 setup page.
  4. +
+

+ +

Other Options

+ +

Some devices with on-board TV-out capability, such as Xboxes converted to +Linux and some laptops can be used as MythTV frontends to display on a +television screen. Please consult the mythtv-users mailing list for messages +that report the details of these special arrangements.

+ +

External Adapters

+ +

External adapters convert standard VGA output to a form suitable for +display on a television. The output format varies by region, since +different countries have different TV standards. People on the mythtv-users +list have mentioned these adapters:

+

+

    +
  • AITech Web Cable Plus, powered by external transformer or takes power +from PS/2 keyboard connector, support resolutions up to 1024x768, outputs +composite and SVideo, provides position adjustment.
  • +
  • Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr +outputs; pan, brightness, overscan/underscan controls; supports up to +1024x768 outputs; and supports PAL and NTSC.
  • +
  • ADS TV Elite XGA
  • +
  • AverKey iMicro (comments are generally favorable)
  • +
  • AITech Web Cable (comments are generally unfavorable, different than +the "Plus" version above)
  • +
  • TVIEW Gold (mentioned once, favorably)
  • +
+

+ +

3.2 Software +

+ +

There are a few ways of installing programs on Linux systems; you can +either use a pre-compiled package, or install from a tarball after +satisfying any prerequisites.

+

+

+ + +NOTE: you must have the MySQL database software installed on a +system to store the master database. This does not necessarily mean that +MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0. +
+

+ +

Pre-compiled packages

+ +

A number of people have created pre-compiled packages for MythTV that may +make your installation easier.

+

+

+ + +BIG FAT WARNING: This HOWTO assumes that you have not +installed MythTV from a package. All example command lines and file +locations are based on the MythTV tarball defaults. Some packagers have +modified the filenames, binaries and file locations to match what is +commonly found in that distribution. Any issues with MythTV installed via a +pre-compiled package MUST be raised with the packager. +
+

+

If you use any of the pre-compiled packages you may not need to perform any +additional configuration steps in this HOWTO. The next logical step is +configuring MySQL, which you may or may not have to +perform. See your package documentation.

+ +

Red Hat Linux / Fedora Core

+ +

The definitive documentation on installing MythTV on Red Hat Linux / +Fedora Core can be found in Jarod Wilson's ( +mailto:jcw@wilsonet.com) HOWTO at +http://wilsonet.com/mythtv/ Just +like 3rd-party packages, any 3rd-party documentation problems should be +brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The +installation instructions which follow should be used as a guide only; refer +to Jarod's guide.

+

Red Hat Linux and Fedora Core packages for MythTV and all of its add-on +modules and some themes have been packaged by +mailto:Axel.Thimm@ATrpms.net and +are available at +http://ATrpms.net/topic/multimedia/. All of the prerequisites for +MythTV (such as XMLTV) are available as RPM packages. If you have problems +with the RPMs, please contact the ATrpms lists at +http://lists.ATrpms.net/ or file a +bug against +http://bugzilla.ATrpms.net/.

+

Given the large number of dependent RPMs you are advised to use tools like +apt or yum for automatic retrieval and installation of the required RPMs. +( +http://ATrpms.net/install.html) In this case a +special meta-package called mythtv-suite will allow you to install all of +MythTV and its add-ons, plus all dependencies.

+

If you don't have apt or yum on your machine, download and +install the atrpms-kickstart package from +http://ATrpms.net/name/atrpms-kickstart/. +Install the package with: +

+
+# rpm -Uvh atrpms-kickstart*
+
+
+ +Then run: +
+
+# apt-get update
+# apt-get dist-upgrade
+# apt-get update
+
+
+ +And finally: +
+
+# apt-get install mythtv-suite
+
+
+ +These steps however, do NOT perform the installation of any drivers required +for ALSA, capture cards, lirc kernel modules, etc., nor do +they set up your MythTV database. Check +http://ATrpms.net/topic/multimedia/ for the drivers you +need.

+ +

Mandriva

+ +

Thac has created RPMs for MythTV for Mandriva which may +be obtained from +http://rpm.nyvalls.se/ If you have problems with the RPMs, please +send him email directly at +thac@nyvalls.se.

+

Debian

+ +

Debian packages for MythTV and most of its add-on modules are maintained +by Christian Marillat +mailto:marillat@free.fr and are available at +http://www.debian-multimedia.org/. +Installation instructions can be found on those pages as well. All of the +prerequisites for MythTV are available as Debian packages, most of them from +the official Debian archive.

+

If you have followed the instructions on the above page you should have added +

+
+deb-src http://www.debian-multimedia.org sid main
+
+
+

+

to your /etc/apt/sources.list file. Running apt-get update and then +executing apt-get build-dep mythtv should install all the +pre-requisites required to compile MythTV.

+

+

+ + +NOTE: Due to the requirement for Qt 3.3+, there are no packages for +Debian woody/stable. +
+

+ +

The Debian packages are configured such that MythTV programs should be +run as the mythtv user, which is automatically created during +installation. This user has access to write new recordings to disk in the +default directory, read and write the database, access the audio and video +devices, and everything else that MythTV needs to do.

+ +

See /usr/share/doc/packagename/README.Debian for more +information, including copies of the MythTV documentation. The +mythtv-doc package contains a copy of this HOWTO in +/usr/share/doc/mythtv-doc.

+

Manual installation

+ +

You may use the graphical tools that come with your distribution, or you +can use command-line utilities. Either system will get the job done, and it +all depends on your comfort level with Linux.

+

In order to compile MythTV, we need to make sure that the software it needs +is installed. This list includes mysql, gcc, +freetype2-devel, xorg-xserver-devel, qt-devel and +lame. If you're going to use a remote control with MythTV, you're +going to need the cdialog package in order to compile +lircd if your distribution doesn't have a pre-packaged +lirc. If you are using XMLTV as a grabber, you will need +perl.

+

+


+
+NOTE:  Qt v3.3 or higher is required.
+
+NOTE:  MythTV DOES NOT WORK with Qt4.
+
+NOTE:  If you are going to be using RPMs to install various
+components, you should be aware that not all packages include the necessary
+headers for compiling.  If you're having trouble compiling, ensure
+that you've installed the -devel version of a prerequisite.
+
+
+

+ +

Command-line installation

+ +

This section details the various methods for installing prerequisites +from the command line.

+ +

Mandriva

+ +

NOTE: The following instructions should be considered out of +date as of 2006-09-10. If updated instructions are not submitted by the +release of v0.21 of MythTV they will be removed.

+

urpmi is the simplest tool for installation of packages from the +command line, but properly configuring it can be difficult. The +following website +http://easyurpmi.zarb.org/ will allow you to choose +a mirror site and then present the command-line configuration text for that +mirror. You will most likely need to add a "Contrib" mirror to your setup. +If you add a site from the "Penguin Liberation Front", you will be able to +load the lame library without compiling from source.

+

Open a shell, and execute the following. You may get +asked a number of questions regarding dependencies. It's best to answer +"YES". +

+
+$ su
+# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils
+# urpmi XFree86-devel perl
+# urpmi libqt3-devel libMesaGLU1-devel
+
+
+

+

+


+
+NOTE for Mandriva 9.1+ users: execute the following command.
+
+# urpmi libqt3-mysql
+
+
+ +However, you might get this when you execute the commands above: +
+
+everything already installed
+
+
+

+

In that case, you're ready to move to the next +section. Once you have completed installing the pre-requisites, +exit out of the shell and start a new one to ensure that any environment +variables setup by the installation have a chance to take effect.

+ +

Gentoo.

+ +

NOTE: MythTV does not run on Qt4. +If Qt has not been installed on your system: Edit +/etc/make.conf and locate the "USE" variable. If the line is +commented out, remove the comment. The line should have at least: +

+
+USE="mysql alsa"
+
+
+ +Next you need to build Qt. If you don't plan on using the ebuilds as +described in the Gentoo section then you also need to install lame. +
+
+# emerge lame mysql qt
+
+
+

+

If you have already installed Qt: you will need to rebuild because the +default installation doesn't include MySQL support, a requirement for MythTV. +To enable SQL support, add "mysql" to your USE variable in +/etc/make.conf and rebuild Qt by running +

+
+# emerge qt
+
+
+

+

All the necessary files will be downloaded and built. Even on a fast machine +this may take a lot of time if you need to do a full Qt build.

+ +

Debian.

+ +

Build-dependencies for MythTV can be satisfied by adding the following to +your /etc/apt/sources.list +

+
+# Christian Marillat's packages (mplayer, lame)
+deb http://www.debian-multimedia.org sid main
+deb-src http://www.debian-multimedia.org sid main
+
+
+ +and executing: +
+
+# apt-get build-dep mythtv
+# apt-get source mythtv --compile
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html new file mode 100644 index 0000000..fbe5386 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-4.html @@ -0,0 +1,181 @@ + + + + + Installing and using MythTV: System Configuration Requirements for Compiling MythTV. + + + + + +Next +Previous +Contents +
+

4. System Configuration Requirements for Compiling MythTV.

+ +

Before you compile MythTV from the current source tarball or from +subversion, you may need to modify your system configuration in a +few ways.

+

In general, if you install MythTV from pre-packaged binaries for your Linux +distribution/version, you don't need to be too concerned about the issues in +this section of the HOWTO - the install script for the packages should take +care of them. However, this section is still recommended reading which may +help if the packager skipped a step in their packaging.

+ +

4.1 Software requirements for compiling MythTV +

+ +

General requirements

+ +

MythTV is written in C++ and requires a fairly complete, but standard, +compilation environment, including a recent g++ compiler, make, and +appropriate header files for shared libraries. Any standard Linux +distribution should be able to install a suitable compilation environment +from its packaging system. Section 3.2 of this HOWTO provides some details +of how to install the required environment for many distributions.

+

Subsequent sections of this chapter address the few oddities that you may +have to adjust by hand before you compile MythTV.

+

The reference compilation system for MythTV is Ubuntu.

+ +

4.2 Shared-Library requirements for MythTV +

+ +

Modifying /etc/ld.so.conf

+ +

The runtime manager for shared libraries, /lib/ld.so, gets +information about the locations and contents of shared libraries from +/etc/ld.so.cache, a file created by ldconfig from +information in /etc/ld.so.conf. Because MythTV installs some +shared libraries in /usr/local/lib, that directory needs to be +added to the list of directories for ld.so to search when doing +runtime linking of programs, if it is not already there. +You do this, as root, by editing /etc/ld.so.conf, then +running ldconfig. There are many ways to do this; one that +works is to enter this series of commands:

+

+

+
+$ su -
+# echo /usr/local/lib >> /etc/ld.so.conf
+# /sbin/ldconfig
+# exit
+$
+
+
+

+

4.3 Environment variable requirements for MythTV +

+ +

General requirements

+ +

QT libraries and binaries

+ +

The compiler needs to be able to locate QT binaries and libraries in +order to compile MythTV. QTDIR needs to be set and the directory holding the +QT binaries needs to be added to your PATH. Your distribution may already +be making these changes as a part of the installation of the software +prerequisites detailed earlier.

+

One way to do this is as follows: +

+

Open a shell and execute the following: +

+
+$ echo $PATH
+/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin
+$ echo $QTDIR
+/usr/lib/qt3
+$ which qmake
+/usr/lib/qt3/bin/qmake
+
+
+

+

For Mandriva, you should see a value like /usr/lib/qt3 for +QTDIR and /usr/lib/qt3/bin should be in $PATH.

+

For Gentoo, you should see a value like /usr/qt/3 for QTDIR +and /usr/qt/3/bin should be in $PATH.

+

If you don't, do not proceed past this step until you have resolved this +error. You may need to manually specify the QTDIR and PATH at the shell +prompt before compiling.

+

Also, check that there has been a link created in +/usr/lib/qt3/mkspecs (/usr/share/qt3/mkspecs for Debian) +called default. If not, you'll get errors during the compile. See +the Troubleshooting Section for more information.

+

Distribution-Specific Notes

+ +

Mandriva

+ +

The following instructions work for Mandriva using +bash as the shell, and may be applicable for a distribution which +uses /etc/profile.d.

+

+

+ + +NOTE: Mandriva 10 installs a /etc/profile.d/qtdir3.sh +file, but it doesn't include the addition of the PATH variable. If you're +running Mandriva 10, don't create a mythtv.sh file as detailed +below; edit the qtdir3.sh file and add the PATH statement within +the if / fi block. +
+ +As root, create the following file in /etc/profile.d The example +filename is "mythtv.sh". Use what you feel is appropriate.

+

Open a shell, and switch to superuser mode.

+

+

+ + +NOTE: ^D means press CTRL and d at the same time. +
+ +
+
+$ su
+# cd /etc/profile.d
+cat > mythtv.sh
+export QTDIR=/usr/lib/qt3
+export PATH=$PATH:/usr/lib/qt3/bin
+^D
+
+# chmod a+x mythtv.sh
+# exit
+$ exit
+
+
+ +The last two commands are to exit out of the shell. This way, when you next +open a shell your new commands +will take effect.

+ +

Device Permissions

+ +

MythTV will need access to the video4linux devices on your system. By +default, your distribution may restrict access to these devices to the +logged-in user, so if you will be automatically starting +mythbackend from a script rather than an interactive terminal +session you will need to make some adjustments.

+

NOTE: The following instructions are accurate for Mandriva.

+

Check for a file called /etc/security/console.perms. Open the file +in your favorite text editor and look for a line that has: +

+
+<console>  0600 <v4l>        0600 root.video
+
+
+ +and replace it with +
+
+<console>  0666 <v4l>        0666 root.video
+
+
+

+

What we're doing is allowing read and write access to the files in the +video4linux directory.

+
+Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html new file mode 100644 index 0000000..0ecf975 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-5.html @@ -0,0 +1,426 @@ + + + + + Installing and using MythTV: Downloading and compiling. + + + + + +Next +Previous +Contents +
+

5. Downloading and compiling.

+ +

Get MythTV from the +http://www.mythtv.org web site. There are two installation methods +you may choose from. The first is to download the latest release in tarball +format and compile. The tarball release of MythTV should work on a wide +variety of systems and should be the preferred method for new users. If you +wish to use the subversion copy of MythTV you may obtain it from +http://svn.mythtv.org

+

+

+ + +NOTE: If you are going to use subversion to +compile MythTV rather than using the distribution tarball, you must +join the +http://www.mythtv.org/mailman/listinfo/mythtv-commits/ and +http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mailing lists to +keep up to date with the current status of the code. Code obtained from +subversion has no guarantees regarding stability, etc. +
+

+

If you are in North America you will use the Schedules Direct grabber which is +built-in to MythTV. You do not need to install XMLTV (so you may +skip XMLTV-related instructions), but you need wget version 1.9.1 +or higher.

+

Get XMLTV from +http://xmltv.sourceforge.net. Download the latest version (0.5.51).

+

+


+
+NOTE for Mandriva users:  If you have added a "PLF" mirror, you may skip the
+next step and type:
+
+# urpmi libmp3lame0 libmp3lame0-devel
+
+After downloading, be sure to install both:
+# rpm -Uvh lame*
+
+
+

+

Get lame from +http://lame.sourceforge.net/. Download the source code to v3.96.1 +by following the links from "Using" through "Download...".

+ +

5.1 Building LAME +

+ +

Open a shell and switch to the directory where you saved lame. +

+
+$ tar -xzf lame-3.96.1.tar.gz
+$ cd lame-3.96.1
+$ ./configure
+$ make
+$ make test
+$ su
+# make install
+
+
+ +Check that it worked: +
+
+# ls -l /usr/local/lib
+-rw-r--r--    1 root     root       381706 Nov  4 14:22 libmp3lame.a
+-rwxr-xr-x    1 root     root          674 Nov  4 14:22 libmp3lame.la*
+lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so ->
+libmp3lame.so.0.0.0*
+lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so.0 ->
+libmp3lame.so.0.0.0*
+-rwxr-xr-x    1 root     root       360197 Nov  4 14:22
+libmp3lame.so.0.0.0*
+
+# exit
+$ 
+
+
+

+ +

5.2 XMLTV +

+ +

Red Hat Linux and Fedora Core:

+ +

RPMs for XMLTV and all of its dependencies can be obtained from +http://ATrpms.net/name/xmltv/. The web page has a +list of all the dependent packages you must download and install. +

+
+# rpm -Uvh xmltv* perl*
+
+
+

+

If you install from this location you may skip to +Manually building MythTV.

+

Mandriva

+ +

RPMs for XMLTV and all of its dependencies are located in +Mandriva's "contrib". If you have added a contrib mirror, try installing +XMLTV: +

+
+# urpmi xmltv xmltv-grabbers
+
+
+ +If this does not work, it is possible that contrib for your Mandriva version +does not have XMLTV, so you may install the XMLTV prerequisites by typing: +
+
+# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl
+
+
+

+

and skip straight to the XMLTV compilation step.

+ +

Manual installation

+ +

+ Untar the xmltv file: +

+
+$ tar -xjf xmltv-0.5.51.tar.bz2
+
+
+ +Install the xmltv prerequisites. The following prerequisites are the +minimum required; when you actually start running the xmltv setup program it +may alert you to other modules that are required.:

+

+

+
+$ su
+# perl -MCPAN -e shell
+cpan> install XML::Twig
+cpan> install Date::Manip
+Date::Manip is up to date.
+cpan> install LWP
+cpan> install XML::Writer
+cpan> exit
+
+
+

+

Change to the XMLTV directory and compile it: +

+
+$ cd xmltv-0.5.51
+$ perl Makefile.PL
+
+
+ +You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to +the grabber required for your location.

+

You may get errors about modules not being installed. You will need to +resolve any missing dependencies at this point, or your grabber may not work +correctly. +

+
+$ make
+$ make test
+$ su
+# make install
+# exit
+
+
+

+ +

5.3 Configuring the Schedules Direct service +

+ +

As of 2007-09-01, Tribune Media Services will no longer offer free guide +data. Schedules Direct is a non-profit organization which has licensed the +data to make it available to users of Freeware and Open Source applications.

+

If you wish to use Schedules Direct, you'll need to establish a user +account. Go to +http://www.schedulesdirect.org and click on the "Membership" link.

+

Once you've read and agreed to the Subscriber Agreement, Terms of Use and +Privacy Policy proceed to the lineup choices and configure your account for +your particular location and the channels that you have. This configuration +will be imported into MythTV when you first run the mythtv-setup +program.

+ +

+

+

5.4 Manually building MythTV +

+ +

If you are going to use subversion, execute the following +instructions to obtain the latest version of MythTV:

+

+

+
+$ mkdir mythtv
+$ svn co http://svn.mythtv.org/svn/trunk/ mythtv
+$ cd mythtv
+
+
+

+

To use a release version, you can execute: +

+
+$ mkdir mythtv-release-0.21
+$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21
+$ cd mythtv-release-0.21
+
+
+

+

NOTE: Using a svn version of the code allows you to stay +up-to-date with changes. So, if there's an update to the 0.21 release and +you originally obtained it using svn, you could enter the +mythtv-release-0.21 directory and type "svn up", which will update your copy +with the fixed version from the website. You would then recompile and +install the updated 0.21 code.

+

If you are using the tarball, then unpack it: +

+
+$ tar -xjf mythtv-0.21.tar.bz2
+$ cd mythtv-0.21
+$ ./configure
+
+
+

+

If you wish to change options, run ./configure --help to +see what is available and to override and automatically detected options. +See the config.log file after running configure to see +previous runs.

+

To compile: +

+
+$ make -j 2
+
+
+

+

The MythTV compile can take advantage of multiple CPUs, SMP and +Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with +distcc), specify "-j numjobs", where "numjobs" is greater than 2. +In the above example, we had two concurrent jobs executing, which is +recommended for a single CPU system. Do not set the number of jobs too +high, or your compile will actually take longer to complete than it would if +you did a "normal" build.

+

If you are using distcc, and you had two other host machines (red, blue) +participating, you would do something like: +

+
+$ export DISTCC_HOSTS='localhost red blue'
+$ make -j 6 CXX=distcc
+
+
+

+

The actual speed-up, if any, is dependant on a number of factors, such as +number of CPUs / hosts, etc. The distcc documentation recommends +using a -j value of twice the number of CPUs available to keep all +of them busy.

+

Some timing information. The following should only be used for +illustration; your actual results may vary. The test involves a complete +make distclean to the final binary. +

    +
  • P4 3.2Ghz HT: "standard" make: 12m 49s
  • +
  • P4 3.2Ghz HT: make -j 2: 11m 24s
  • +
+

+

In the above example, we see that with a single CPU, a multi-stage +make does not significantly decrease compile time.

+

Once the compile is done, switch to superuser: +

+
+$ su
+# make install
+# exit
+
+
+

+

+

+ + +NOTE: subsequent configuration steps assume that you are within +the MythTV directory that you cd'd to above. +
+

+ +

Enabling real-time scheduling of the display thread.

+ +

MythTV supports real-time scheduling of the video output thread. There +are three ways to go about enabling this: You can use rlimits, you can use +the realtime security module, or on older systems you can SUID the +executable. Enabling real-time scheduling is optional, but can make the +video display smoother, especially if you are decoding HDTV.

+ +

rlimits

+ +

The rlimits method is the preferred method and is included in Linux +2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which +may not be supported by your distribution yet. Assuming anyone running +mythfrontend is in the audio group and rlimits are supported, all +you need to do is place this in your /etc/security/limits.conf

+

+

+
+*               -       rtprio     0
+*               -       nice       0
+@audio          -       rtprio     50
+@audio          -       nice       0
+
+
+

+ +

realtime module

+ +

The second option is to use the Linux realtime kernel module. +This is will be phased out over time, but is currently supported +by many distributions that do not yet support rlimits. If you are +not using the distribution kernel you must configure your kernel +with: +

+
+Security options : [*] Enable different security models
+Security options : [M] Default Linux Capabilties
+
+
+ +You may also need to install the realtime module, using your distribution's +realtime package. Assuming the users who will be running +mythfrontend will be in the audio group you can get the GUID of a named +group like so: +
+
+$ grep audio /etc/group
+
+
+ +If the number printed out from the grep was 18, you can now load +this module as root before starting mythfrontend: +
+
+# modprobe realtime gid=18
+
+
+

+ +

run as root option (not safe)

+ +

The final and least preferred option is to set the sticky bit +on the mythfrontend executable. This opens a security hole, +but is the only option on systems that do not support either +rlimits or the realtime module. This does not work on modern +distributions either, and is not recommended +on any system connected to the Internet. This may also make it +impossible to debug MythTV without running gdb as root. If you +would still like to do this, you just need to run this as root: +

+
+# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv
+
+
+

+ +

Frontend-only configuration

+ +

Since MythTV uses a client/server architecture, multiple frontend +computers can simultaneously access content on a Myth system. Live TV, +watching and scheduling recordings, etc. are all possible from multiple +frontends.

+

To get a better picture of what is needed to run a frontend, note the +following: +

  • You do NOT need the MySQL server installed on your remote frontend
  • +
  • You do NOT need XMLTV installed on your remote frontend
  • +
  • You do NOT need to run the mythtv-setup program on +your frontend machine
  • +

    +

    Other than the exclusion of the MySQL server and XMLTV, the MythTV +compilation procedure is the same as when you're setting up both a backend +and a frontend. However, you will need to install the database +access libraries.

    +

    Once MythTV is compiled and installed: +

  • Run the mythtv-setup program on your Master backend. Under the "General" +menu, change the IP address of the current machine (by default, "127.0.0.1") +to the real external IP address - 127.0.0.1 is the loopback address and no +external machine can access it. Change the Master Server IP setting to the +same IP address as well.
  • +
  • Run the mythfrontend program on your frontend machine, +and a "Database Configuration" screen should appear. +Set the "Host name" field to point to your Master backend's IP address.
  • +

    + +

    5.5 Gentoo +

    + +

    Installation of MythTV on Gentoo consists of simply emerging the desired +ebuild because all of the packages are now part of the official Portage tree. +

    +
    +$ su -
    +# emerge --sync # make sure portage is up to date.
    +# vi /etc/make.conf
    +
    +
    + +Add mysql to your USE variable. i.e. USE="mysql ...." +
    +
    +# emerge mythtv
    +
    +
    +

    +
    +Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html new file mode 100644 index 0000000..2f9af20 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-6.html @@ -0,0 +1,176 @@ + + + + + Installing and using MythTV: MySQL. + + + + + +Next +Previous +Contents +
    +

    6. MySQL.

    + +

    When you install MySQL 5.x you will also want to comment +out "log-bin" in your my.cnf configuration file. This option will +quickly fill your "/var" disk partition with many gigabytes of data, +unless you are doing database replication and deleting these files regularly.

    +

    6.1 Distribution-specific information +

    + +

    Mandriva

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Mandriva Control +Center->System->Services, find MySQL and click the "On Boot" button and the +"Start" button if the MySQL status shows that it isn't running yet.

    +

    +

    + + +NOTE: There have been reports that MySQL isn't starting at boot. +If this is happening to you, try running the following commands. +
    + +
    +
    +$ su
    +# chkconfig --level 35 mysql on
    +# /etc/rc.d/init.d/mysql start
    +# exit
    +
    +
    +

    + +

    Red Hat Linux and Fedora Core

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Redhat menu>Server Settings>Services +and enter the root password when asked. Check "mysqld" and then click Start. +Click Save, then close the window.

    +

    This can be done from the command line by typing: +

    +
    +# /sbin/chkconfig mysqld on
    +# /sbin/service mysqld start
    +
    +
    +

    + +

    Gentoo

    + +

    After installing MySQL you need to initialize the database by running +mysql_install_db as root.

    +

    6.2 Setting up the initial database +

    + +

    This step is only required on the system maintaining the database, which +may or may not be one of your MythTV boxes. If the database is on a +non-MythTV machine you'll need to copy the database/mc.sql file to it.

    +

    To setup the initial MySQL databases: +

    +
    +$ cd database
    +
    +
    +

    +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    +

    +
    +$ mysql -u root < mc.sql
    +
    +
    +

    +

    Debian 3.0

    + +

    +

    +
    +$ mysql < mc.sql
    +
    +
    +

    +

    Gentoo

    + +

    +

    +
    +$ su
    +# mysql < /usr/share/mythtv/database/mc.sql
    +
    +
    + +
    + + +NOTE: It is good practice to set a root password for MySQL. Instructions for doing so can be found on MySQL's web site at +http://www.mysql.com/doc/en/Security.html. +
    +

    +

    Modifying access to the MySQL database for multiple systems

    + +

    If you're going to have multiple systems accessing a master database, +you must grant access to the database from remote systems. By default, the +mc.sql script is only granting access to the local host.

    +

    To allow other hosts access to your master database, you can either set it +up for no security at all, or with more granularity. Note that the "%" is +the wildcard character in MySQL.

    +

    +

    + + +NOTE: The "no security" option is very dangerous unless +you're in a controlled environment. +
    + +This example has no security at all, and allows access from any host. +
    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    For a more secure setup, you can restrict which machines or subnets have +access. If you have a complete DNS system operational, you could do the +following: +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    Finally, if you just want to restrict by IP subnet (in this example, the +192.168.1. network): +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    You'll also need to check that the "networking" feature of MySQL is turned +on. Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

    +

    NOTE: Your distribution may have a customized MySQL configuration +file; in Mandriva, check /etc/sysconfig/mysqld for additional +configuration.

    + +
    +Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html new file mode 100644 index 0000000..97bc763 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-7.html @@ -0,0 +1,130 @@ + + + + + Installing and using MythTV: Configuring Sound. + + + + + +Next +Previous +Contents +
    +

    7. Configuring Sound.

    + +

    If your video doesn't appear to be in-sync with your audio and you're +using an analog video capture card and a soundcard to capture audio, it +could be because you are listening to the real-time audio from your video +card rather than after it's been processed and synchronized to the video by +MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really +live - to let you pause live TV, MythTV is actually encoding the video, +saving to disk, and then playing it back. This procedure puts your MythTV +"live" TV about 2 seconds behind real-time, so it's important that you're +not listening to the live audio. However, if you're having an issue where +the audio and video aren't synchronized by small but varying amount, it's +most likely because the sound driver that you're using doesn't have the +DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not +with newer versions. See the +Troubleshooting Audio section for more information if you're having +issues with sound. Also, ensure that no other programs are grabbing the +audio output, like arts or esd.

    +

    What you need to do is to mute the "line-in" of your sound card and also +set it as the recording source.

    +

    There are two ways to do this. Graphically, and from the command line.

    + +

    7.1 Graphically setting up the mixer +

    + +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or +

    +RedHat Menu>Sound & Video>Volume Control
    +
    + on Red Hat/Fedora.

    +

    Click on Settings->Configure Make sure that "Tick Marks" and "Show +labels" have "X"'s in them. This will make it easier to find the correct +audio source. Click OK.

    +

    On the mixer page, look for Line-In on your sound card. You should see +two LED's - a green one at the top, and a red one at the bottom. The green +one at the top is for muting; you want to make sure that the green LED is a +dark green, meaning that it's "off". You also want to click on the red LED +so that it turns bright red, indicating that it's "ON"; this insures that +the Line-in is used as the source. Click OK, and make sure that you save +the settings so that this is your default.

    + +

    Using ALSA.

    + +

    To use ALSA, you'll need to correctly setup your +asoundrc file. Configuring this file is beyond the scope of this +HOWTO. Once ALSA is working correctly, change the output sound device in +mythfrontend->setup->Audio from /dev/dsp to ALSA:default. +This field may be edited to suit your ALSA requirements.

    + +

    7.2 Setting the mixer from the command line +

    + +

    If you have installed the alsa-utils package, then the amixer +program can be used to setup the mixer. The "Master" volume setting is only +required on a frontend machine to ensure that the sound channels are unmuted +and configured for outputting sound. The "Line" and "Capture" controls are +required for your sound card to actually capture audio from the external +Line-in if it's connected to an analog frame grabber. Not all sound cards +have a "Capture" control, but if yours does and you don't set it then MythTV +will not capture audio.

    +

    +


    +
    +Note the spelling in the following commands.
    +
    +
    + +
    +
    +$ amixer set Master,0 100%,100% unmute
    +$ amixer set PCM,0 100%,100% unmute
    +$ amixer set Line,0 75%,75% mute captur
    +$ amixer set Capture,0 100%,100% captur
    +$ su
    +# alsactl store
    +# exit
    +$ 
    +
    +
    +

    +

    If you have multiple sound cards, then use the -c parameter to +specify which card to adjust. Note that the first card will be "0", the +second will be "1", etc.

    +

    That takes care of setting the volume correctly, and the ALSA startup script +will restore the volume after a reboot. If you find that your sound is +distorted, it's possible that the levels in the above examples are too high +for your particular hardware combination. Try reducing the percentages by +5-10% and checking again. Once you're satisfied, re-run the alsactl +store command.

    +

    You may also use the alsamixer program to set the volume. If you +are using an ALSA version after 1.0.6, use alsamixer -V all First, +start alsamixer from the command line. You should start out on the +"Master" volume control slider. Use the up and down cursor to set the +master volume to around 75%. Next, use the left and right cursor keys to +move around on the screen until you find the "Line" slider. Press SPACE to +set it as the capture source, set the level to around 50-75% and press "M" +to mute it. You can now press ESC to exit out of the alsamixer +program. You can also have MythTV manage all volume and mute settings, but +this will only affect the "Master" or PCM volume, not the capture volume. See +the mythfrontend setup page for options.

    +

    Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output. +

    +
    +$ v4lctl -c /dev/video0 setattr mute off
    +
    +
    +

    + +
    +Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html new file mode 100644 index 0000000..98d4b66 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-8.html @@ -0,0 +1,530 @@ + + + + + Installing and using MythTV: Setting up a remote control. + + + + + +Next +Previous +Contents +
    +

    8. Setting up a remote control.

    + +

    MythTV does not have native remote control receiver and decoder software +built-in. Instead, remote control functions are implemented by cooperating +with lirc, the Linux Infrared Remote Control program. lirc +handles the IR hardware and passes keystrokes to MythTV, which then acts as +if the user had pressed the keys on the keyboard. The file +keys.txt describes the keys used to control MythTV.

    +

    +

    + + +NOTE: If you are running Mandriva, you may install +lirc by executing: # urpmi lirc lirc-remotes and bypass +the manual compilation steps described below by jumping to the +Completing the lirc install section. See the contrib/mandrake91.etc.sysconfig.lircd file for an example of how to +configure lircd. +
    +

    +

    Some IR devices require a kernel recompile, and some don't. However, all at +least require having the kernel source available as a resource for the lirc +build process.

    + +

    8.1 Gentoo +

    + +

    To install lirc on Gentoo, all you need to do is: +

    +
    +# emerge lirc
    +
    +
    +

    + +

    8.2 Obtaining and compiling lirc +

    + +

    You're going to need to download and compile lircd. Go to +http://www.lirc.org and download lirc; as +of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as +well. +

    +
    +$ tar -xjf lirc-0.8.0.tar.bz2
    +$ cd lirc-0.8.0
    +$ ./setup.sh
    +
    +
    + +You're going to need to know what sort of receiver you have and where it's +connected. In the case of the Pinnacle Studio TV card, with the IR receiver +connected to COM1 (/dev/ttys0), once the configuration menu comes up, +perform the configuration by going to Driver Configuration->Other Serial +Port Devices->Pinnacle Systems Receiver->OK and on the next page select +COM1->OK.

    +

    Each remote is different; some remote receivers connect directly to your +capture card and not to a serial port, so make sure that you've got the +correct one.

    +

    You then click "Save Configuration and run configure" to continue.

    +

    Make sure you read the last text generated by the configure step. It will +tell you if you require a kernel recompile, and what the name of your kernel +module will be (if necessary). For instance a home-built receiver may +require a kernel recompile, so you would be notified that you will have to +load the lirc_serial module. If you did not get any such messages skip the +kernel recompile steps below and go directly to making and installing the +lirc driver.

    +

    Once the configuration step is complete: +

    +
    +$ make
    +$ su
    +# make install
    +# chmod 666 /dev/lircd
    +
    +
    +

    +

    At this point, if you're using a serial receiver, check that there's a +lirc device in /dev: +

    +
    +$ ls -l /dev/li*
    +lr-xr-xr-x    1 root     root            5 Jan 27 09:00 /dev/lirc -> ttyS0
    +srw-rw-rw-    1 root     root            0 Jan 27 15:01 /dev/lircd=
    +prw-r--r--    1 root     root            0 Jan 27 09:00 /dev/lircm|
    +
    +
    +

    +

    As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is +appropriate for the Pinnacle Systems PCTV Pro. However, you may notice +something like this: +

    +
    +crw-------    1 root     root      61,   0 Dec 31  1969 lirc
    +
    +
    + +Some IR receivers (including some homebrew units) use a character device as +their data interface as opposed to a link to a serial port. If the make +install step has created a character device for you, don't replace it +with a link to a COM port.

    +

    So, if the link or character device was not created (but should have been), +ensure that you ran the make install step as root. If it still +doesn't work, then there are three options. The first option is to re-read +the lirc documentation to determine whether your IR receiver is a +character device or should be a link to a serial port and to create the +link/character device manually. In this example, the IR device is connected +to ttyS0. If it were connected to "COM2", then use ttyS1, etc. +

    +
    +$ su
    +# cd /dev
    +# ln -sf ttyS0 lirc
    +# exit
    +$
    +
    +
    +

    +

    +

    + + +NOTE: The above example assumes that your receiver uses the +standard serial driver. Some receivers do not, including receivers that +plug into a TV capture card. Check the lirc documentation, but it may be +necessary to replace the link created above with a character pipe: +
    + +
    +
    +# mknod /dev/lirc c 61 0
    +
    +
    +

    +

    See the lirc documentation for additional information. The lirc +installation should create this for you, so manually creating it +indicates that your lirc installation may have other issues.

    +

    The second option is to post your issue to the lirc list, not the +mythtv-users list. The lirc programmers will be the ones that can assist +you best.

    +

    The third option is to dispense with lirc altogether by purchasing an IR +keyboard (various options exist, although Chicony appears to work for some +people) and a learning remote control. The IR keyboard receiver plugs into +the PS/2 keyboard port on your PC and you would train your learning remote +to emulate the various keystrokes from keys.txt of your IR +keyboard. Using this method removes lirc entirely from the picture - your +remote will be sending keypresses that your PC "sees" on the keyboard port.

    + +

    8.3 Completing the lirc install +

    + +

    +

    + + +NOTE to Mandriva 9.1 users: skip to the manual start paragraph +below. +
    +

    +

    If the lirc configure program / compile did not mention anything about a +kernel module, then you are finished. If it did mention a kernel module, you +must edit the /etc/modules.conf file. Add this line as the first +thing in the file. It must come first, or it may not work. +

    +
    +alias char-major-61 XXX
    +
    +
    +

    +

    replace XXX with the name which you determined earlier, which in this +example was "lirc_serial" +

    +
    +$ su
    +# modprobe lirc_serial
    +# /sbin/ldconfig
    +
    +
    +

    +

    Next, we're going to manually start lircd the first time. Mandriva 9.1 +users, type: # /etc/rc.d/init.d/lircd start instead of: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    NOTE: Read this next section if you're not familiar with how lirc works!

    +

    There are two separate files used by lirc, and both are required for your +remote control to do anything useful. First is the lircd.conf file. +lircd.conf tells the lirc daemon how to interpret the IR pulses +that it receives from a remote control and what name to assign to each +sequence of pulses. Without getting too involved, a particular series of +pulses may correlate to "Channel Up". The lircd.conf file will +then contain a line that looks something like this:

    +

    +

    +
    +          ChannelUp                0x0000000000001020
    +
    +
    +

    +

    The lircd.conf file can have multiple remote controls defined.

    +

    The second file is lircrc, which takes the name of the button which +was pressed ("ChannelUp") in the above example, and correlates that to an +action to be performed by a program using the remote control. So in MythTV, +ChannelUp means one thing, while in mplayer it means something +different. lircrc gives you the flexibility of taking the name of +the button and having it perform different actions depending on which +program you're using at the time.

    +

    NOTE: The definitions in lircd.conf come from the user +community, and there is no standard for the common button names. One +lircd.conf file may contain a definition for a button called +"ChannelUp", while another may contain a definition for "Chan+". Your +lircrc file must therefore be configured appropriately, or it won't +work.

    +

    If this fails, complaining of a missing lircd.conf file, then you +must find or make one. First look for a pre-made configuration file at +http://lirc.sourceforge.net/remotes/. Mandriva 9.1 users, look in +/usr/share/lirc-remotes. If you find one your remotes either on the +website or in /usr/share, download or copy the file, name it +lircd.conf and put it in your /etc directory. If you +couldn't find your remote, you must make your own lircd.conf file.

    +

    To make your own lircd.conf file +

    +
    +$ irrecord myremote
    +
    +
    +

    +

    Follow the on-screen directions to train your remote and define keys. If +your remote ends up working well, you should consider submitting your +lircd.conf file back to the lirc developers. Once finished: +

    +
    +$ su
    +# cp myremote /etc/lircd.conf
    +
    +
    +

    +

    now try to start lircd again: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    Now, we're going to add the commands necessary for lircd to run each time we +boot. Mandriva 9.1 users, you can execute: +

    +
    +$ su
    +# chkconfig --level 35 lircd on
    +# exit
    +
    +
    +

    +

    All other distributions: +

    +
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    This takes care of the lircd portion, which "listens" for the IR signals. If +everything went well, the install script for lircd put an appropriate +configuration file for your remote into /etc/lircd.conf This file +maps the buttons on the remote control to the IR pulses coming from the +receiver.

    +

    The next step is to convert those signals into something that can be used +to control MythTV. MythTV now includes native support for lirc and can +interact directly with

    +

    +

    +
    +$ cd ~/mythtv-0.21/contrib/configfiles
    +$ cp lircrc.example ~/.lircrc
    +
    +
    + +or +
    +
    +$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc
    +
    +
    + +if you've got a Pinnacle Studio PCTV remote. +
    +
    +$ irw
    +
    +
    + +Start pressing the keys on your remote; irw will +print the name of the button as it is defined in your +/etc/lircd.conf. If you don't see anything at this point, you need +to troubleshoot further by going back to the lirc home page and investigating +from there.

    +

    If it is working, then press CTRL-C to abort the program. Once you +know that your remote is working, you can either recompile MythTV with +native lirc support by enabling it in configure or you +need to run the irxevent program, which takes the key presses and +sends them to MythTV. If you use native lirc support, you don't need to run +irxevent. If you are going to use irxevent, then you need to run +it like this: +

    +
    +$ irxevent &
    +
    +
    + +If irxevent isn't running, then MythTV will not respond to your remote +control unless you're using native lirc support.

    + +

    8.4 Additional information for lirc +

    + +

    Take a look at the lircrc.example files in the contrib/configfiles/ +directory. In my case, (Pinnacle Studio card) the channel up and down functions +weren't working, due to the fact that the button names were different than +the default lircrc.example file that came with MythTV.

    +

    The lircrc.example file has this: +

    +
    +begin
    +    prog = irxevent
    +    button = ChannelUp
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = ChannelDown
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +but the /etc/lircd.conf that comes in the lircd package +defines the buttons for the Pinnacle Studio PCTV as: +
    +
    +          channel+                 0x0000000000000017
    +          channel-                 0x000000000000001C
    +
    +
    + +rather than "ChannelUp" and "ChannelDown". I added the +following to my /home/[yourusername]/.lircrc file: +
    +
    +begin
    +    prog = irxevent
    +    button = channel+
    +    repeat = 3
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = channel-
    +    repeat = 3
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +which took care of basic functionality. Because the PCTV Studio remote +has additional buttons, look at the +contrib/configfiles/lircrc.example.pinnaclestudiopctv for an example of how +to define additional buttons, and how to debug potential button name +conflicts between the lircrc.example file and how your +remote defines the button names.

    +

    By examining the button names defined in /etc/lircd.conf and using +the irw program to make sure that your remote is working, you can +create the appropriate mappings in .lircrc to get excellent remote +functionality with MythTV.

    +

    Note the repeat = parameter. This informs the irxevent +program to pass through every third keypress. By default, lirc +will only send one keypress to the application, even if you're holding down +the key. The actual repeat = number will vary from system to +system, so experiment and see which value works best for you.

    + +

    8.5 Configuring lirc for use with an IR blaster +

    + +

    Lirc has support for various IR transmitters. A popular model is the Actisys +IR-200L +http://store.snapstreamstore.com/accessories.html. It was +originally designed for IRDA communication, but can be used to transmit A/V remote +control codes. By using the lirc SIR driver, this device can easily be +integrated with MythTV. I have tested this device with an AT&T DCT2000 +digital cable box but the instructions can be used to configure other IRDA +devices and A/V remotes.

    +

    Follow the steps in the previous section. When you run setup.sh, select +option 1, driver configuration. From here select option 6, IrDA hardware. +Select your appropriate device and the corresponding serial port, then Save +configuration & run configure from the main menu. Once configure is done +type: +

    +
    +$ make
    +
    +
    +

    +

    Please note: unlike the Pinnacle receiver above you will be compiling lircd +in addition to a kernel module for the SIR transmitter. Depending on whether +you have your serial port driver configured as a kernel module you might see +the following message during make: +

    +
    +lirc_sir.c:56:2: warning: #warning
    +"******************************************"
    +
    +lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into "
    +
    +lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the "
    +
    +lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:"
    +
    +lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none"
    +
    +lirc_sir.c:61:2: warning: #warning
    +"******************************************"
    +
    +
    +

    +

    If you do receive this statement make sure to run the setserial command +before you load the lirc_sir module. Follow this with the install: +

    +
    +$ su
    +# make install
    +
    +
    +

    +

    You will notice that lirc installs the kernel module in +/lib/modules/uname -a/misc.

    +

    The configuration for starting lircd differs if you're going to be +sending and receiving IR versus just receiving. +

    +
    + 
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +setserial /dev/ttySx uart none        # (if required)
    +modprobe lirc_sir
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    At this point you have to populate the /etc/lircd.conf file with the proper +codes for your A/V remote. You should be able to find your remote within the +lirc remote tar file located at +http://www.lirc.org/remotes.tar.bz2. In my case I +extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000)

    +

    To test the lirc_sir module you can run irw to verify the codes are being +received. If everything is configured correctly +you should see something similar to the following: +

    +
    +$ irw
    +0000000000007ff0 00 1 gi-motorola-dct2000
    +000000000000bff8 00 2 gi-motorola-dct2000
    +000000000000f7f0 00 ENTER gi-motorola-dct2000
    +
    +
    +

    +

    Once you've verified lirc is working you can press CTRL-C to exit +irw and configure the channel changing script.

    +

    The path to the channel changing script will need to be entered on the +mythtv-setup screen for Input Connections.

    +

    This csh script will be called each time MythTV needs to change the channel. +Below is a copy of the script followed by the corresponding perl script. +Make sure both are in your path. Also make sure you leave the #!/bin/csh +setting and not change it to Bourne or bash. This will create a frustrating +symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or +bash, csh scripts automatically close parent file descriptors before they +start. +

    +
    +$ cd /usr/local/bin
    +# su
    +# cat > change_channel.csh
    +#!/bin/csh
    +echo "changing to $1"
    +/usr/local/bin/channel.pl $1 &
    +^D
    +# chmod a+x change_channel.csh
    +# exit
    +$ exit
    +
    +
    +

    +

    See contrib/channel.pl for the actual file. Copy it to +/usr/local/bin/

    +

    The last statement within the perl script is the lirc rc command. This is +the command that transmits the code to your cable/DSS box. Make sure to have +the IRDA device within a few feet of the box.

    + +
    +Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html new file mode 100644 index 0000000..4fc01d5 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-9.html @@ -0,0 +1,649 @@ + + + + + Installing and using MythTV: Configuring MythTV. + + + + + +Next +Previous +Contents +
    +

    9. Configuring MythTV.

    + +

    By this point, all of the compile-time prerequisites have been installed, +mysql is running and has had its initial database setup. It's now +time to configure MythTV. +

    + + +NOTE: If you're running Debian unstable and you have compiled +MythTV from source, you will need to install an additional package before +you will be able to run MythTV. Execute the following to install the MySQL +driver for QT. +
    + +
    +
    +$ su -
    +# apt-get install libqt3c102-mt-mysql
    +# exit
    +
    +
    +

    +

    9.1 Configuring the Master backend system +

    + +

    Open a shell and decide where you will store your video files. This may +be one directory or multiple directories on the same or different +filesystems. There is no default directory used for new recordings, you +must create at least one storage directory and configure Myth to +use it by running mythtv-setup. If you do not do this, then MythTV +will be unable to record anything. The following example is specific for +/var/video, but the same instructions would apply for any directory +name you choose to use. See the +Advanced Partition Formatting section for hints on creating a +partition for MythTV.

    +

    +

    +
    +$ su
    +# mkdir /var/video
    +# chmod a+rwx /var/video
    +# exit
    +
    +
    +

    +

    NOTE: The last slash "/" is not required.

    +

    + +TIP: Try not to have your video mount point on the same partition +as your root partition, which could lead to the filling up of your root +partition with video data if the mount fails. For example:

    +

    If /var/video is created on your root partition and you then +perform a mount of another drive to this directory there won't be any +problems if everything is working the way it should. However, if the mount +fails for some reason, /var/video still exists, so MythTV will find +the directory and write files to it. If your / mount point is +space limited, /var/video will also be space limited, and +it won't take long to fill the partition. This will cause a number of +side-effects, most of them bad. Instead, create subdirectories as the +destination for the storage group.

    +

    Your directory structure could then look something like this: +

    +
    +/mnt/video/drive1/video
    +/mnt/video/drive2/video
    +
    +
    +

    +

    Your /etc/fstab would look like this: +

    +
    +/dev/hdb1 /mnt/video/drive1
    +/dev/hdc1 /mnt/video/drive2
    +
    +
    +

    +

    Because the Storage Group path is /mnt/video/drive1/video, if the +mythbackend can only find /mnt/video/drive1 it will not +write files to that share.

    +

    After you create the desired directory or directories for storing your video +files, you will need to add them to the proper Storage Group using +mythtv-setup. This procedure is described below in the +Storage Groups section.

    +

    The first thing to configure is the Master backend system. If you are +running multiple backend systems, the Master backend will make all +decisions about which programs will be recorded on which tuners. If you +have only one backend, then it will be its own master.

    +

    The Master backend will always choose the first available tuner in the same +order as you add cards through "mythtv-setup". In other words, the second +card you add will only be used when there are two overlapping recordings, +the third when there are three, and so on. + Therefore, you will want to have +the greatest amount of disk space on the Master backend because its tuner +will always be the first choice. You will then want to add your +other backends in the order of your +preference for recording.

    +

    +

    + + +NOTE: It is possible to not have the cards on the Master +backend be the first ones used. However, if you are new to MythTV it is +easier to configure the Master backend first before moving on to the Slaves, +at least until you become more familiar with the MythTV system. See +Advanced Backend Configurations for +information on configuring multiple backend systems in various ways. +
    +

    +

    Because MythTV uses a database to store all configuration variables, +part of the bootstrap of MythTV is to indicate the location of the MySQL +database server. If the frontend, backend and MySQL database server are all +going to be running on the same box, you can continue to the next step. If +not, you'll need to change the Host Name in the "Database Configuration" +screen of the mythfrontend program.

    +

    +

    + + +NOTE: Users that have been running the frontend and the backend on +different machines have stated that they have been having issues with remote +access to the MySQL database. The following instructions may or may not +work. Add the following to /etc/my.cnf on the backend machine and +restart MySQL. +
    + +
    +
    +skip-innodb
    +set-variable=thread_stack=256k
    +
    +
    +

    +

    Run the setup program: +

    +
    +$ mythtv-setup
    +
    +
    +

    +

    The backend setup program will start and offer you a number of choices. It +is strongly recommended that you go through them in order.

    +

    The first question will ask if you wish to clear out your existing +configurations for your capture cards. Initially, you should say "YES" so +that there are no surprises later.

    +

    The next question will ask you if you wish to clear out your video source +information. You should answer "YES" to this as well.

    +

    Once the graphical setup starts, you'll see that there are six choices

    +

    +

    + + +The Storage Directories feature is available only in the SVN version of MythTV. +
    +

    +

    +

      +
    1. General
    2. +
    3. Capture Cards
    4. +
    5. Video Sources
    6. +
    7. Input connections
    8. +
    9. Channel Editor
    10. +
    11. Storage Directories
    12. +
    +

    +

    Use the arrow keys to move around, and press the space bar to select which +option you wish to configure.

    + +

    General

    + +

    The first screen of the General configuration deals with IP addresses of the +system that you're running mythtv-setup on and any master backend you may have. +If you've only got one machine, then the default values are fine and you can +move to the next page by pressing the space bar. If you need to move around +the screen, use the arrow keys to move focus between settings, not the +mouse.

    +

    If you will be deploying multiple backends, or if your backend is on one +system and you're running the frontend on another machine then do +not use the "127.0.0.1" IP address.

    +

    NOTE: If you modify the 127.0.0.1 address and use a "real" IP +address, you must use real IP addresses in both fields, otherwise your +frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" +errors.

    +

    Changing any of the port settings is very strongly discouraged. +(If you do accidentally change them, the defaults are 6543 for +the master/backend server, and 6544 for the HTTP requests)

    +

    Once you're satisfied with the values, move the focus down to Next and hit +the space bar.

    +

    The next screen details the Host-specific Backend setup. This is where you +will set the specific directory paths for this particular backend. Make +sure that you've followed the steps at the beginning of this section and +created a directory that exists and that MythTV will have write privileges +to. When you're done, press Next to continue, taking you to the Global +Backend Setup.

    +

    On the Global Backend Setup configure your backend with the appropriate +settings. Use the left and right arrow keys to iterate through the choices +available on each setting, and the up and down keys to move between +settings. Move to Finish when you're done and press the space bar, taking +you back to the main configuration screen.

    + +

    Capture Cards

    + +

    You should have no capture cards defined, so the highlight will be on +(New Capture Card). Press space to begin.

    +

    Choose the appropriate settings for your particular tuner. Use the arrow +keys to move around and to make your choices, and press RETURN when +complete. Pressing RETURN will take you back to the Capture Cards screen; +if you have additional capture cards in this machine, press the space bar +when the highlight is on the (New Capture Card) row to define another card.

    +

    If you have made a mistake, you can delete a card by highlighting it and +pressing the 'D' key, or you can highlight it and press the RETURN or 'E' +key to edit it.

    +

    Once you have no additional cards to setup, press ESC.

    +

    +

    + + +NOTE: If you have a dual digital/analog card, such as the pcHDTV +cards and some DViCO cards, then you should not configure this as two +separate cards. Configure the digital portion as a DVB card, then click +on the "Analog Options" button within the DVB configuration panel for +the card and configure the analog portion of the card there. +
    +

    + +

    Video Sources

    + +

    When you start, the highlight should be on (New Video Source). Press the +space bar to begin. The first field asks for the name of the video source. +You may choose something easy to remember, like "Antenna" or "Cable". Once +you've chosen a name, press the down arrow to move to the next field.

    +

    If you're in North America, change the grabber to +"SchedulesDirect.org(Internal)", then continue pressing the down arrow to +move to the next field. Fill in the username (lowercase only) and password +that you have established with Schedules Direct, then move to the "Retrieve +Listings" button and press the space bar.

    +

    NOTE: You need wget version 1.9.1 or higher to use +Schedules Direct.

    +

    The mythtv-setup program will contact the Schedules Direct servers and get +your account information. Once you're done, you may click the Finish button +and skip the next few paragraphs in this document since they only apply to +users that are using the external XMLTV script to get their guide data.

    +

    If you wish to continue using the XMLTV grabber, then move to the Zip/postal +code field and put in the appropriate value.

    +

    If you're outside of North America, then some manual interaction will be +required with XMLTV. You may need to switch from the MythTV setup program +to the console it was run on to interact with XMLTV.

    +

    Once you have chosen your provider, press RETURN to continue. XMLTV will +now begin collecting the initial data for your location. The screen may +blank for a few seconds to several minutes, depending on the load of the +listings provider and the speed of your connection to the Internet. Be +patient!

    +

    You will then be returned to the Video Sources screen. If you have multiple +video sources available, such as Antenna, Cable, etc, go ahead and define +them all, even if they're not all going to be physically connected to the +master backend server. Once you're done, press ESC to return to the main +screen.

    + +

    Input Connections

    + +

    The final configuration item is Input Connections. On this screen, you +will associate the various video sources you defined earlier with a physical +input to a encoder card. It's entirely possible that you have multiple +tuners, and each tuner has a different input, so on this screen you let +MythTV know which device will connect to which input source.

    +

    When you start this screen, you should see a listing of the various input +connections available on each of the Capture cards you defined earlier. For +example, you may have a capture card with a tuner, a SVideo and a Composite +connection. If you wanted to associate the tuner (a.k.a., "Television") +with an "Antenna" source you defined in Video Sources, you would move to the +/dev/videodevice (Television) -> line and press the space bar. +Using the left and right arrow keys will show you the various choices you +have already created for video source. In our case, you would use the +left/right cursor keys until "Antenna" was shown in the Video Source field. +Press down to move to the next setting.

    +

    On the connection pane there is a "Scan for channels" button, if you are +configuring a digital source such as a DVB card, you need scan for channels +and you must do this before pressing the "Fetch channels from listings +source" button. You may scan for analog channels on an analog input, but +this is not needed.

    + +

    The other button is called "Fetch channels from listings source". As long as +you have a real listings source you should fetch channels from them for +analog channels. You can do this for digital sources as well (unless the +listing source is transmitted EIT data). If you are using XMLTV, you may need +to switch from the MythTV setup program to the console it was run on to +interact with XMLTV after pressing this button. It is possible to fetch the +channels on the command line using mythfilldatabase. But if you need to do +this, you will probably need to re-enter the MythTV setup program to +configure the "Starting channel" setting for this source->input connection.

    +

    +

    + + +NOTE: If you have a Hauppauge PVR-500, you must think of +it has two PVR-150's on a single PCI card. For example, if you have a +single PVR-500 card, it will appear as /dev/video0 and +/dev/video1. Each /dev/video device will have a Tuner input. +
    + +Once you're done, press RETURN to go back to the Input Connections screen. +You would then finish associating the video sources to any other hardware +devices you have available.

    +

    +

    + + +NOTE: Don't add a video source to a hardware input if you don't +actually have anything connected there. For example, adding "Cable" to the +Tuner and to the Composite inputs without having something connected to +Composite will lead to blank recordings. +
    +

    +

    Press ESC to return to the main menu, and press ESC again if you have no +further items to configure, thereby returning you to the command line.

    + +

    Channel Editor

    + +

    The channel editor is used to globally alter channel information, +including items like hue, contrast, fine tuning and others. Users in North +America shouldn't run the channel editor until you've completed the initial +mythtv-setup and ran mythfilldatabase at least once to populate the +database.

    + +

    Storage Groups

    + +

    +

    + + +New in MythTV 0.21 +
    +

    +

    Introduction.

    + +

    Storage Groups are lists of directories that are used to hold MythTV +recording files giving you a flexible way to allow you to add capacity to +your MythTV system without having to use exotic solutions such as LVM, +filesystem expansion or RAID Online Capacity Expansion. You can also use +Storage Groups to organize recordings and to put recordings of a certain +type into one subdirectory.

    +

    Storage Groups do not offer redundancy in case of hard drive failure, but +unlike LVM, if you lose a hard drive, you only lose the recordings that were +on that drive. With LVM, if you lose a hard drive, you will most likely +lose everything.

    + +

    How to use Storage Groups.

    + +

    By default, there is only one Storage Group called "Default", and it is +used for all recordings and Live TV.

    +

    +

    + + +NOTE: You need to add at least one directory to the Default +Storage Group or else you will not be able to record anything with MythTV. +
    +

    +

    For example, if you have 5 hard drives in your system, your first hard drive +could be your "boot" drive, and the remaining four could be dedicated to +media storage. You could format the drives and mount them as +/mnt/store/d2, /mnt/store/d3, /mnt/store/d4 and +/mnt/store/d5.

    +

    Within each mount point, it's strongly recommended that you use a +sub-directory and make that the destination path for the Storage Group. See +the +Tip in the "Configuring the Master +backend" section for additional information.

    +

    You would then add the four subdirectories you created under the mount +points (/mnt/store/d1/video, etc) into the "Default" Storage Group.

    +

    At recording time, if there were four simultaneous recordings, MythTV would +put one recording onto each drive.

    +

    Or, say that you originally installed MythTV to a 80GB hard drive, and that +hard drive is now filling up. You could simply add a new drive to your +system, mount it and update the Storage Group to add additional space.

    +

    You may create additional Storage Groups to store specific recordings in +their own directories. Storage Groups are edited via the 'Storage +Directories' section of mythtv-setup.

    +

    You can also create multiple Storage Groups to group recordings together; +recording schedules now have an option to specify which Storage Group to +use.

    +

    MythTV will balance concurrent recordings across the available directories +in a Storage Group in order to spread out the file I/O load. MythTV will +prefer filesystems that are local to the backend over filesystems that are +remote until the local filesystem has 2 concurrent recordings active or +other equivalent I/O, then the next recording will go to the remote +filesystem. The balancing method is based purely on I/O, Myth does not try +to balance out disk space unless a filesystem is too low on free disk space +in which case it will not be used except as a last resort.

    +

    Storage Groups are global, but can be overridden on a slave backend by +creating a local Storage Group by running mythtv-setup on the +slave. If a problem occurs and the slave backend is unable to use the +desired Storage Group, it will fail back and try the directories defined in +the master's Storage Group.

    +

    There's also a special 'LiveTV' Storage Group, but the directory list starts +out empty. If you add a directory to the Storage Group, it will be used +instead of putting LiveTV recordings in the Default Storage Group. This +will allow you to put your LiveTV recordings on their own filesystem, which +is similar to the old MythTV method which used a RingBuffer for LiveTV. Of +course, you don't have to do anything, and Live TV recordings will just go +into the Default Storage Group where they'll be the first programs eligible +for expiration if the system needs free space for recordings.

    +

    Usage information for all Storage Group directories is visible on the +mythfrontend status screen as well as the mythbackend status webpage. +MythTV is smart enough to determine which directories are on shared +filesystems so it should not count free or used space multiple times if you +have more than one directory on the same filesystem.

    + +

    Migrating to Storage Groups.

    + +

    Migrating to Storage groups is very simple: if you have existing +recordings in a storage directory, then the system will automatically add +that directory to the Default Storage Group. If you then add additional +directories to a storage group, the system is flexible enough to check +all Storage Groups for a file before deciding that it can't be +found, which means that you can use the mv command from the Unix +command line to arrange files however you'd like.

    + +

    Advanced: Algorithm used by the Storage Group

    + +

    This section details the logic of the Storage Group allocation engine.

    +

    The current load-balancing preferences (in order) are: +

      +
    • Local filesystems over remote
    • +
    • Less-busy (less weight) over more-busy (more weight)
    • +
    • More Free Space over Less Free Space
    • +
    +

    +

    The 'business' of a filesystem is determined by weights. The following +weights are added to a filesystem if it is in use for the following things: +

      +
    • recording = +10
    • +
    • playback = +5 (mythfrontend)
    • +
    • comm flagging = +5 (mythcommflag)
    • +
    • transcoding = +5 (mythtranscode)
    • +
    +

    +

    If a recording is due to end within 3 minutes, it is not counted against +the weight of a filesystem. This is done to account for the pre/post-roll +and start-early/end-late settings.

    + +

    9.2 Post-configuration +

    + +

    Run the mythfilldatabase program as directed. The master +backend will obtain guide data for all the video sources you defined during +setup.

    +

    NOTE: If you are using Schedules Direct and watching the output messages +on the console or the log file it is normal to see a "401 Unauthorized" +error followed by a "200 OK" when the connection to Schedules Direct is being +established. +

    +
    +From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
    +--02:58:01--
    +http://datadirect.webservices.zap2it.com/tvlistings/xtvdService
    +           => -'
    +Resolving datadirect.webservices.zap2it.com... 206.18.98.160
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 401 Unauthorized
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 200 OK
    +Length: unspecified [text/xml]
    +
    +    [    <=>                              ] 114,125       63.57K/s
    +
    +02:58:03 (63.53 KB/s) - -' saved [114125]
    +
    +Your subscription expires on 08/20/2004 12:00:00 AM
    +Grab complete.  Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14
    +00:00:00 2004 (UTC)
    +
    +
    +

    +

    Once mythfilldatabase has finished, start the master server before +continuing. +

    +
    +$ mythbackend
    +
    +
    +

    +

    mythbackend will print information about connections and what it's doing to +the console. If you'd like to see the options that are available for +mythbackend, type mythbackend -h for help.

    +

    As of MythTV v0.21, the available options are: +

    +
    +$ mythbackend --help
    +Valid options are:
    +-h or --help                   List valid command line parameters
    +-l or --logfile filename       Writes STDERR and STDOUT messages to filename
    +-p or --pidfile filename       Write PID of mythbackend to filename
    +-d or --daemon                 Runs mythbackend as a daemon
    +-v or --verbose debug-level    Use '-v help' for level info
    +--printexpire                  List of auto-expire programs
    +--printsched                   Upcoming scheduled programs
    +--testsched                    Test run scheduler (ignore existing schedule)
    +--resched                      Force the scheduler to update
    +--nosched                      Do not perform any scheduling
    +--nojobqueue                   Do not start the JobQueue
    +--noautoexpire                 Do not start the AutoExpire thread
    +--version                      Version information
    +
    +
    +

    +

    Running mythbackend as a daemon and using the logfile option will allow you +to have mythbackend automatically start up during boot. You can follow the +steps outlined in the section called +Automatically starting mythbackend at system boot time for +configuration steps.

    +

    If you enable the -l parameter, you will want to keep your logfiles +rotated (so that they don't fill up a partition). See the section called +Automatically rotating logs for more +information.

    + +

    9.3 Configuring a non-master backend +

    + +

    Ensure that you've granted access to the master MySQL database for remote +backends as discussed in the section titled +Modifying access to the MySQL database for multiple systems and that +you have the correct IP address for the database server in the "Database +Configuration" screen of the mythtv-setup application on this slave backend.

    +

    +

    + + +NOTE: Slave backends must not run a local MySQL +daemon. By default, they will connect to their local daemon rather than the +central database, causing unexpected behavior such as empty "Watch +Recordings" lists and a failure to locate the Video Sources defined on the +master backend. Modify the /usr/local/share/mythtv/mysql.txt file +on all slave backends to ensure that the DBHostName has the address +of the MySQL server. +Caveat: You may make a slave backend the primary MySQL server, or run a +non-MythTV database on a slave backend as long as you have edited the +mysql.txt file on all systems and made it consistent. There can be only one authoritative MySQL database in a MythTV system - +errors such as the one above ensue if backends and frontends have differing +ideas of which MySQL database they should talk to. +
    +

    +

    Make sure that the IP addresses on the General setup screen are accurate. +If the slave backend can't communicate with the master backend due to IP +address misconfiguration then MythTV will not function properly.

    +

    Configuration of a non-master backend follows the same general procedure +as that of the master backend, with the exception that you skip over the +"Video Sources" step. All possible video sources need to be defined on the +master backend system; only the master backend will query a listings +provider to obtain guide data for all the non-master backends.

    +

    +

    + + +NOTE: Do not run mythfilldatabase on a non-master backend. +
    +

    +

    9.4 Configuring and running mythfilldatabase +

    + +

    +

    + + +NOTE: mythfilldatabase might take a while to complete, +depending on any number of factors, most of which you can't control. It's +best to just let the program run to completion. +
    + +mythfilldatabase --help will give a full listing of the options +available.

    +

    mythfilldatabase --manual is another option; the manual option will +allow you to fine tune channel frequencies and specify which channels will +be added to the database.

    +

    mythfilldatabase --file is an option if there isn't an XMLTV grabber +for your country, but you do have an XML formatted listings file +created by some other program.

    +

    mythfilldatabase --xawchannels is an option if you have used +xawtv to fine-tune your channels and would like to import the fine +tuning offsets into MythTV.

    +

    mythfilldatabase --refresh-today will only pull guide data for +today (in case of late-breaking changes to the schedule).

    + + +

    Periodically running mythfilldatabase

    + +

    In order to keep your database filled, mythfilldatabase should be +run once a day.

    +

    To use MythTV's built-in capability, you'll need to run the +mythfrontend Setup option. From the mythfrontend, enter the +Setup>General screen and advance to "Mythfilldatabase", the fourth screen. +Select the checkbox, then complete the options as you see fit. The +mythbackend program will now run mythfilldatabase for you.

    + +

    9.5 Grabbing channel icons for Schedules Direct users +

    + +

    While the Schedules Direct TV listings service has several advantages, it +does not support grabbing logo icons for the stations you receive. However, +there are utilities provided with MythTV which you may use to grab your +initial set of icons and to keep them updated if your lineups change.

    +

    First, you need to generate or obtain an XML file with the information for +your stations.

    +

    If you have XMLTV software installed, there is a perl script in MythTV's +contrib/ directory which will generate this file for you. Run the +command: +

    +
    +$ perl mkiconmap.pl
    +
    +
    +

    +

    You will be asked for your zip code and the service that you use. If there +are no errors, the iconmap.xml file that you need for the next step +will be created.

    +

    If you do not have XMLTV software installed and do not want to install it +for the sake of this minor task, there is a generic +contrib/master_iconmap.xml which you can copy and use but this may +not be as complete as using the specific information for your service.

    +

    Once you have an iconmap.xml file, add the icon information to your +database and grab any new icons with the command: +

    +
    +$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map
    +
    +
    +

    + +
    +Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html new file mode 100644 index 0000000..b5b82a2 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO-singlehtml.html @@ -0,0 +1,8532 @@ + + + + + Installing and using MythTV + + +

    Installing and using MythTV

    + +

    Robert Kulagowski, +mailto:rkulagow@rocketmail.com

    2008-06-04, v0.21.02 +
    +Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +
    +

    +

    1. First things first.

    + + +

    +

    2. Introduction.

    + +

    +

    3. Checking prerequisites.

    + + +

    +

    4. System Configuration Requirements for Compiling MythTV.

    + + +

    +

    5. Downloading and compiling.

    + + +

    +

    6. MySQL.

    + + +

    +

    7. Configuring Sound.

    + + +

    +

    8. Setting up a remote control.

    + + +

    +

    9. Configuring MythTV.

    + + +

    +

    10. Configuring mythfrontend.

    + + +

    +

    11. Using MythTV.

    + + +

    +

    12. Scheduling Recordings.

    + + +

    +

    13. MythPlugins.

    + +

    +

    14. MythWeb.

    + + +

    +

    15. MythGallery.

    + + +

    +

    16. MythGame.

    + + +

    +

    17. MythMusic.

    + + +

    +

    18. MythWeather.

    + +

    +

    19. MythVideo.

    + +

    +

    20. MythDVD.

    + + +

    +

    21. MythNews.

    + +

    +

    22. Troubleshooting.

    + + +

    +

    23. Miscellaneous.

    + + +

    +

    24. Example Configurations.

    + + + +
    +

    1. First things first.

    + +

    +

    + + +NOTE: Please note that I, Robert Kulagowski, am NOT the +author/programmer of the MythTV application! I can not give you +personalized installation support. If you are having issues installing +MythTV you should examine the archives, or post your question to the +MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? +messages - I will simply instruct you to ask your question on the +mythtv-users mailing list. +
    +

    +

    1.1 What is MythTV? +

    + +

    MythTV is a GPL licensed suite of programs that allow you to build the +mythical home media convergence box on your own using Open Source software +and operating systems. MythTV is known to work on Linux and Mac OS X +(PowerPC and Intel). It does not run on Windows.

    +

    MythTV has a number of capabilities. The television portion allows you to +do the following: +

      +
    • You may pause, fast-forward and rewind live Television.
    • +
    • You may install multiple video capture cards to record more than one +program at a time.
    • +
    • You can have multiple servers (called "backends"), each with multiple +capture cards in them. All scheduling is performed by the Master backend, +which arbitrates which recording will be performed by each device. All +recording requests are managed by the Master backend, so you can schedule a +recording from any client.
    • +
    • You can have multiple clients (called "frontends" in MythTV parlance), +each with a common view of all available programs. Any client can watch any +program that was recorded by any of the servers, assuming that they have the +hardware capabilities to view the content; a low-powered frontend will not +be able to watch HDTV, for example. Clients can be diskless and controlled +entirely by a remote control.
    • +
    • You may use any combination of standard analog capture card, MPEG-2, +MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate +hardware, MythTV can control set top boxes, often found in digital cable and +satellite TV systems.
    • +
    • Program Guide Data in North America is downloaded from +schedulesdirect.org, a non-profit organization which has licensed data from +Tribune Media Services. This service provides almost two weeks of +scheduling information. Program Guide Data in other countries is obtained +using XMLTV. MythTV uses this information to create a schedule that +maximizes the number of programs that can be recorded if you don't have +enough tuners.
    • +
    • MythTV implements a UPNP server, so a UPNP client should automatically +see content from your MythTV system.
    • +
    + +Other modules in MythTV include: +
      +
    • MythArchive, a tool to create DVDs
    • +
    • MythBrowser, a web browser
    • +
    • MythControls, an application to configure your remote control
    • +
    • MythFlix, a Netflix module
    • +
    • MythGallery, a picture-viewing application
    • +
    • MythGame
    • +
    • MythMusic, a music playing / ripping application which supports MP3 +and FLAC
    • +
    • MythNews, a RSS news grabber
    • +
    • MythPhone, phone and videophone using SIP.
    • +
    • MythVideo, DVD ripper and a media-viewer for content not created within MythTV
    • +
    • MythWeather
    • +
    • MythWeb, which allows you to control your MythTV system using a web +browser. With MythWeb, you can schedule and delete recordings, change +keybindings and more. With proper security, you may even schedule a program +over the Internet and have it immediately acted on by the Master backend.
    • +
    +

    +

    1.2 QuickStart +

    + +

    Custom mini-distributions are available to make it easier to install +MythTV. A mini-distribution removes many of the "general purpose" +workstation / server software packages that may be installed by default if +you use one of the big-name OS packages.

    +

    See +http://mysettopbox.tv if you'd +like to install a custom version of Knoppix optimized for MythTV.

    +

    See +http://www.minimyth.org if you'd like +to install MythTV onto a diskless system.

    +

    See +http://bit.blkbk.com if you'd +like to install MythTV on a Xbox. +NOTE: Site appears unmaintained.

    +

    See +http://wilsonet.com/mythtv/ for instructions tailored to RedHat's +Fedora Core distribution.

    +

    See +http://www.mythbuntu.org if +you'd like to install a customized version of Ubuntu optimized for MythTV.

    +

    There is a MythTV wiki at +http://wiki.mythtv.org.

    +

    If you are installing this version for Schedules Direct support, please see +the +Migrating from DataDirect Labs to Schedules Direct section for additional information.

    + +

    1.3 Upgrading from previous versions +

    + +

    The upgrade from previous versions should be transparent. Any changes to +the database structure should be applied automatically.

    +

    It is strongly recommended that you back up your database before +installing a new version of MythTV.

    +

    See +Saving or Restoring the database for instructions.

    + +

    1.4 How to obtain this document / PDF versions of this document +

    + +

    This HOWTO document is maintained at the primary MythTV website: +http://www.mythtv.org by Robert +Kulagowski +mailto:rkulagow@rocketmail.com.

    +

    This document is available as a single-page HTML document at +http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html or as a PDF +at +http://www.mythtv.org/docs/mythtv-HOWTO.pdf.

    +

    This HOWTO is for MythTV v0.21

    +

    Release notes for this version may be found in the MythTV Wiki at +http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21

    + +

    1.5 Books about MythTV +

    + +

    If you would like to purchase a book specifically about MythTV:

    +

    +

      +
    • Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and Korelc
    • +
    • Practical MythTV: Building a PVR and Media Center PC, ISBN 978-1590597798 by Smith and Still
    • +
    +

    + +

    1.6 Document conventions +

    + +

    The following conventions are used throughout this document.
    +boldface - used for program names.
    +typewriter - used for program paths.
    +emphasis - Pay attention here.

    +

    +

    + + +Pay more attention. +
    +

    +

    +

    + + +Ignore at your own peril. +
    +

    +

    +

    + + +Feature that has been added to SVN (subversion, a revision control system) +but is not available in the current release. +
    +

    + +

    1.7 Mailing lists / getting help +

    + +

    It's recommended that you join the user list at +http://www.mythtv.org/mailman/listinfo/mythtv-users. The developer +list is at +http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev. Please keep +the developer list strictly for development-related issues.

    +

    Searchable archives for the lists are available at +http://www.gossamer-threads.com/lists/mythtv/.

    + +

    1.8 IRC +

    + +

    There are two IRC channels dedicated to MythTV which can be found on +irc.freenode.net +

      +
    • mythtv
    • +
    • mythtv-users
    • +
    +

    +

    The mythtv channel is where the developers discuss code. It is +not a user-support channel. Please don't ask non-development +related questions there.

    +

    +

    + + +Really. Even if there's no one in the mythtv-users IRC group or everyone +seems to be ignoring you. +
    +

    + +

    1.9 Bug database +

    + +

    If you feel you need to contribute to a bug database, use the MythTV bug +ticketing system at +http://svn.mythtv.org/trac.

    +

    Good entries will contain the following: +

      +
    1. Qt version
    2. +
    3. Linux distribution
    4. +
    5. gcc version
    6. +
    7. the last entry in config.log to detail how you compiled
    8. +
    9. MythTV version numbers (e.g.from mythfrontend --version)
    10. +
    11. Hardware
    12. +
    13. How you are able to reproduce the bug
    14. +
    +

    +

    See the instructions on how to debug in +Section 22.

    +

    The bug database is not a chat room, so restrict your entries to what is +relevant. It's also not a repository of feature requests; a feature request +without an accompanying patch file to implement that feature will be quickly +closed. There is a feature wishlist on the wiki at +http://www.mythtv.org/wiki/index.php/Feature_Wishlist. There is no +guarantee that anything on the wishlist will ever get code written to +implement it.

    +

    If a developer closes out your bug, it's likely you didn't provide enough +information. Don't re-open a bug without providing additional information.

    + +

    1.10 Contributing to this document +

    + +

    Contributions to the HOWTO are welcome, especially if you find a +grammatical or spelling error, or if the wording of something is just plain +confusing.

    +

    If you'd like to make a new contribution, create a ticket at +http://svn.mythtv.org/trac and +click "New Ticket". The type should be set to "patch" and the owner set to +"rkulagow" to ensure that I see your contribution.

    +

    Please send it as either SGML or as plain text. NO HTML. The +source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of +SGML! A quick look at the source of this HOWTO will show that it is not +difficult, because there aren't that many tags to worry about, so at least +try to submit as SGML. See the Linuxdoc HOWTO at +http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html for information +on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml +file as an example.

    +

    To create the actual patch, run diff -u origfilename newfile > +doc.patch and attach your contribution to the trac ticket.

    + +

    2. Introduction.

    + +

    This HOWTO document will focus on manually building MythTV in a North +American environment. If you have installation instructions for a different +region or Linux distribution, please send them to the author so that it can +be included in other versions of this document.

    + +

    3. Checking prerequisites.

    + +

    You must ensure that any firewalls (either hardware, or a software +firewall installed by your distribution) will not block access to the ports +that will be used by the MythTV clients and servers on the "inside" LAN. +The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and +6544) must be open. It is strongly recommended that you do +not expose the MythTV and MySQL ports to the Internet or your +"Outside" LAN.

    + +

    3.1 Hardware +

    + +

    Hardware selection is a complex topic, one this HOWTO will only discuss +briefly and in general terms. The following subsections offer some general +guidance but stop short of offering specific recommendations.

    +

    For a good MythTV experience, you must understand that MythTV exercises your +hardware more than a typical desktop. Encoder cards generate DMA across the +PCI bus. The CPU is busy encoding / decoding video. Hard drives are +constantly reading and writing data. Building a MythTV system on older / +"spare" hardware may be an exercise in frustration and can waste many hours +of valuable time.

    +

    For more detail about actual configurations that others have used, Mark +Cooper has setup a hardware database at +http://pvrhw.goldfish.org/. The +website will let you browse what other users have reported as their hardware +configuration, and how happy they are with the results.

    +

    If you have specific questions about the suitability of specific hardware +choices, you can consult the archives of the mythtv-users mailing list at +http://www.gossamer-threads.com/lists/mythtv/ or +post a question to the list.

    +

    CPU Type and Speed

    + +

    Selection of CPU type and speed is one of the trickiest elements of +hardware selection, mainly because there are so many tradeoffs which can be +made. For example, if you have plenty of CPU, you can use higher bitrates +or capture sizes, etc.

    +

    MythTV has two modes of operation. First, it can function as a software +video encoder, which means that it uses a fairly generic "dumb" video +capture card to get frames of video, encodes them using the CPU on your +motherboard and writes them to disk. High-end video capture cards and +devices like the TiVo and ReplayTV have dedicated encoder chips which use +specialized hardware to convert the video stream to the MPEG-2 format +without using the motherboard CPU. The main CPU has the responsibility of +running the Operating System and reading and writing the encoded frames to +the disk. These tasks have fairly low CPU requirements compared to encoding +video, which is why a device like a Series 1 TiVo can run with only 16MB of +RAM and a 54MHz CPU.

    +

    There are many variables that go into the question: "How fast a CPU do I +need to run MythTV"? Obviously, the faster your CPU, the better your +experience will be with MythTV. If you are using the software MPEG-4 +encoder and performing the "Watch TV" function, where the CPU is both +encoding and decoding video simultaneously to allow Pause, Fast Forward and +Rewind functions for live TV requires more CPU then just encoding or +decoding. MythTV also supports multiple encoder cards in a single PC, +thereby increasing the CPU requirements if you plan on simultaneously +encoding multiple programs. As a general guideline, plan on 1GHz per +encoder if you are doing software-based encoding, less if you are using a +hardware-based encoder.

    +

    Here are a few data points: +

      +
    • A PIII/733MHz system can encode one video stream using the MPEG-4 +codec using 480x480 capture resolution. This does not allow for live TV +watching, but does allow for encoding video and then watching it later.
    • +
    • A developer states that his AMD1800+ system can almost +encode two MPEG-4 video streams and watch one program simultaneously.
    • +
    • A PIII/800MHz system with 512MB RAM can encode one video +stream using the RTjpeg codec with 480x480 capture resolution and play it back +simultaneously, thereby allowing live TV watching.
    • +
    • A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file +created on a different system with 30% CPU usage.
    • +
    • A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and +simultaneously serve content to a remote frontend.
    • +
    +

    +

    The second mode of operation is where MythTV is paired with a hardware-based +video encoder, such as a Matrox G200 or a Hauppauge +WinTV-PVR-150/250/350/500. In this mode, because the video encoding is +being done by a dedicated video processor, the host CPU requirements are +quite low. See the +Video Capture Device section for details.

    +

    The price differential between a frame grabber and a card that implements +hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less +than $30 US. Primary development in MythTV has transitioned to supporting +MPEG-2 capture devices and HDTV, so if given the option, go with the +hardware MPEG-2 encoder.

    +

    If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the +hardware-based video decoder for playback, which further reduces CPU +requirements.

    + +

    Memory

    + +

    A MythTV host that is both a backend and a frontend and using software +encoding with a single capture card should run adequately in 256MB of RAM. +Additional RAM above 256MB will not necessarily increase performance, but +may be useful if you are running multiple encoders.

    + +

    Hard Disk(s)

    + +

    Encoded video takes up a lot of hard disk space. The exact amount depends +on the encoding scheme, the size of the raw images and the frames per +second, but typical values for MythTV range from 700 megabytes/hour for +MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV.

    +

    +

    + + +NOTE: You must use DMA for hard drive access to prevent +choppy or jittery video. Not all distributions enable DMA at boot time. See the Troubleshooting Section for +instructions on how to do this. +
    +

    +

    Writing video to disk is sensitive to timing issues; RTjpeg requires less +CPU with the tradeoff being larger files and needing to write to the disk +faster. MPEG-4 requires more CPU, but the files are smaller. At the +default resolution, MPEG-2 creates the largest files of all with almost no +CPU impact.

    +

    See the Troubleshooting +section for more +information.

    + +

    Filesystems

    + +

    MythTV creates large files, many in excess of 4GB. You must +use a 64 or 128 bit filesystem. These will allow you to create large files. +Filesystems known to have problems with large files are FAT (all versions), +and ReiserFS (versions 3 and 4).

    +

    Because MythTV creates very large files, a filesystem that does well at +deleting large files is important. Numerous benchmarks show that XFS and +JFS do very well at this task. You are strongly encouraged to +consider one of these for your MythTV filesystem. JFS is the absolute best +at deletion, so you may want to try it if XFS gives you problems. MythTV +.21 incorporates a "slow delete" feature, which progressively shrinks +the file rather than attempting to delete it all at once, so if you're more +comfortable with a filesystem such as ext3 (whose delete performance for +large files isn't that good) you may use it rather than one of the +known-good high-performance file systems. There are other ramifications to +using XFS and JFS - neither offer the opportunity to shrink a filesystem; +they may only be expanded.

    +

    +

    + + +NOTE: You must not use ReiserFS v3 for +your recordings. You will get corrupted recordings if you do. +
    +

    +

    Because of the size of the MythTV files, it may be useful to plan for future +expansion right from the beginning. If your case and power supply have the +capacity for additional hard drives, read through the +LVM and +Advanced Partition Formatting sections for some pointers.

    +

    +

    +

    Video Capture Device

    + +

    In order to capture video, MythTV will need one or more video capture +devices with Linux drivers. There are a number of classes of hardware +available for capturing video.

    +

    Frame Grabbers.

    + +

    This class of card is the simplest and is usually the cheapest. There is no +on-board encoding of the analog video; hardware known as a Digital-Analog +Converter (DAC) takes the video and presents it to the computer in an +essentially raw digital form.

    +

    For a list of video capture cards known to work with Linux, please see +/usr/src/linux/Documentation/video4linux/bttv for a partial +listing; even if your specific card is not listed, it may be that the vendor +is actually using a standard reference design and placing their own name on +it. See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information and for specific hardware questions.

    +

    The most common inexpensive cards available use the Bt848, Bt878 or CX2388x +series of video capture chips; examples are the "Hauppauge WinTV Go" card and +the "AverTV Desktop PVR" card, both of which use the bttv kernel module.

    +

    +


    +
    +NOTE:  The ATI TV Wonder series and the ATI All-in-Wonder series of cards
    +are not the same.  The All-in-Wonder cards will not work with MythTV.
    +
    +
    +

    +

    +

    + + +
    + +
    + + +NOTE: The ATI All-in-Wonder cards (which are not the same +as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) will not work +as a MythTV capture device because the GATOS +http://gatos.sourceforge.net +drivers that are available provide only a limited subset of the V4L API. The TV Wonder series of cards are supported by the Bt8x8 Video4Linux driver. +
    +

    +

    After you have installed a suitable capture device, you can check that +the kernel sees it with lspci. Look for an entry labeled "Multimedia +video controller". To get more detailed information about the card, use +lspci -v or lspci -vv. Ensure that your system is loading +the bttv modules by typing: +

    +
    +# lsmod |grep bttv
    +
    +
    +

    +

    You want to see the bttv module listed.

    +

    Hardware MPEG-2 encoders.

    + +

    While inexpensive video-capture cards simply capture raw frames, leaving +encoding to software, some higher-end cards incorporate hardware-based +encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card +supported by the IvyTV project +http://ivtvdriver.org such as the Hauppauge +PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 +cards will allow you to use dedicated hardware encoders rather than your +CPU. (The PVR-350 can simultaneously be used as an output device.) Using the +on-board MPEG-2 encoder greatly reduces the CPU requirements for +encoding.

    +

    The ivtv driver was incorporated into the Linux kernel starting at v2.6.22.

    +

    There is a Beta driver for the HVR-1600 card at +http://www.ivtvdriver.org/index.php/Cx18

    +

    NOTE: Motherboards with the Via chipset are notoriously bad with +DMA and have caused numerous issues with ivtv, including hard locks. See +the ivtv website +http://ivtvdriver.org +for the latest information on what works and what doesn't.

    +

    Here are some data points for encoding: +

      +
    • A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream.
    • +
    +

    +

    Here are some data points for decoding:

    +

    +

      +
    • An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU
    • +
    • An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% +CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% +for Live TV at 416x480.
    • +
    • A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU.
    • +
    • A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with +80% CPU.
    • +
    +

    + +

    DVB capture cards.

    + +

    DVB is a video standard primarily found in Europe (where it comes in +DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and +is also used as the programming interface for HDTV capture cards in Linux. +To see if your DVB card is supported, see the list of cards in the +"Supported Hardware" section of the DVB Wiki at +http://www.linuxtv.org/wiki/index.php/Main_Page for more +information.

    +

    In the United States, you may use a card such as the TwinHan to obtain +unencrypted Free-To-Air satellite channels. See +http://www.lyngsat.com/ for the types +of content which is available.

    + +

    HDTV.

    + +

    There are a number of HDTV cards with Linux drivers which are known to +operate in the United States; a complete list of cards with DVB drivers can +be found at +http://www.linuxtv.org/wiki/index.php/ATSC_Devices Some cards +support capture of unencrypted digital cable TV (utilizing QAM256), others +will only work with Over The Air (aka "OTA") signals captured with an +antenna (with 8VSB).

    +

    Cards that have been reported to work include: +

      +
    • pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only)
    • +
    • SiliconDust HDHomeRun (8VSB, QAM256)
    • +
    • pcHDTV HD-3000/5500 (8VSB, QAM256)
    • +
    • Air2PC HD-5000 (8VSB, QAM256)
    • +
    • DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256)
    • +
    +

    +

    NOTE: There are no known consumer-level capture devices which will +allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) +from a set-top box commonly found with digital cable systems or satellite +systems. None of the capture devices listed above +perform any encoding; they merely allow your computer to save a copy of a +HDTV stream which has already been converted to MPEG-2 at the broadcast +facility.

    +

    NOTE:: All of the cards listed above (except for the HD-2000 and +HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured +as a pcHDTV card if you use the V4L drivers from +http://www.pchdtv.com and use Linux +kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be +configured as a DVB card, but you lose access to the second antenna input in +ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one +for each tuner.

    +

    To playback HDTV content, plan on a powerful CPU. "How powerful?" depends +on a number of factors, such as the capture resolution, whether the video is +progressive or interlaced, and whether your display card has hardware-assist +support for Linux.

    +

    The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have +no issues with viewing HDTV.

    +

    The Complicated Answer:

    +

    For 720p content (1280x720), a 2.4GHz P4 should be sufficient.

    +

    For 1920x1080i->1920x1080p with the better deinterlacing methods +done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and +Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware +acceleration. If you enable the hardware acceleration, you may be able to +use a 1.8GHz processor.

    + +

    Firewire.

    + +

    You may use the Firewire output of the Motorola DCT6200 or the SA3250. +If your provider uses 5C encryption on a particular channel, you won't be +able to get any content.

    + +

    DBoxII or other devices running Neutrino

    + +

    You may use the Ethernet port of an DBoxII or a similar device to capture +MPEG2. Your set top box has to be running the Neutrino GUI.

    + +

    USB Capture Devices.

    + +

    The Plextor ConvertX PVR devices are supported through Linux drivers +available from +http://www.plextor.com/english/support/LinuxSDK.htm. MythTV uses the +Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low.

    +

    Hauppauge WinTV-PVR-USB2 (driver available at +http://www.isely.net/pvrusb2/) +emulates a PVR-x50 card.

    + +

    IP Recorder (RTSP, RTS, UDP)

    + +

    MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using +the IPTV recorder in MythTV. This recorder expects the channels to be supplied +as a m3u playlist. If your DSL/Fiber provider supplies television service, +but does not provide a m3u playlist for the channels, you can construct one +for your own use. You do not need to download it from the same server as the +streams themselves, and can also read it from a file if this is more convenient.

    +

    NOTE: Some DSL providers only allow you to use one recorder at a +time, so you may need to limit yourself to one recorder in MythTV and turn +off any set top box the cable provider sold or rented to you with your +service. This limitation is independent of the bandwidth you have purchased.

    + +

    Hardware known NOT to work and other issues

    + +

    +

      +
    • Hauppauge WinTV-D or -HD (no driver)
    • +
    • Hauppauge WinTV-USB series
    • +
    • Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) cards (no driver - this is not the PVR-250/350 +series of cards supported by the IvyTV driver)
    • +
    • ATI All-in-Wonder series
    • +
    +

    + +

    Sound card

    + +

    The system needs a sound card or an on-board equivalent on the motherboard +to play back and in most cases, to record sound. Any sound card that can be +operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will +work with MythTV. However, some cards and drivers will provide better +quality or compatibility than others. In particular, many audio +devices included on motherboards can be problematic.

    +

    The usual practice for capturing the audio associated with the video is to +run a cable from an audio output on the video capture card to the Line input +on a sound card. However, some video capture cards provide on-board audio +capabilities that work with the kernel btaudio module instead, +thereby eliminating the need for a cable. This is useful if you will be +using multiple capture cards in a single chassis, since each capture card +will not need its own sound card. Note that a separate sound card is still +required for playback when using btaudio, and that often the audio +recorded in this way will be mono only. See the +btaudio section for more information.

    +

    +

    + + +NOTE: Analog video capture cards are the only ones which +require a soundcard for capturing audio. DVB, HDTV, and other hardware +encoder cards all provide a combined audio / video stream. +
    +

    +

    +

    + + +NOTE: Plugging a Line-level device into the Mic input is +not recommended. Line-level devices have higher voltages and can damage the +sound card. In addition, even if it doesn't break your card, you will be +getting Mono sound. See the Linux MP3 HOWTO at +http://www.tldp.org/HOWTO/MP3-HOWTO.html for additional information. +
    +

    + +

    Video Display Card

    + +

    MythTV will work with just about any video card. However, it is highly +recommended that you use a card which supports XVideo (XV) extensions. If +your card does not support XV, color conversion and scaling will be +performed by your CPU rather than the video card. This is very CPU +and memory intensive and will often result in dropped frames and a +corresponding degradation of quality. Check the X documentation +for details if you are uncertain about your preferred card. You may +also run xvinfo; look for your video card to be listed as one +of the adapters.

    + +

    If you want to use MythTV with a standard television, you will need a +physical connection from your video card to your TV set, which can either be +a TV-out port on the card itself or an external adapter that converts the +VGA signal to an appropriate video signal. "Appropriate" depends on a number +of factors, such as video standard (NTSC vs. PAL), the type of input +connection (Composite vs. SVideo), etc.

    +

    Note that with some video cards and X drivers, XVideo extensions are +only supported on the VGA output, and not on the TV output.

    + +

    Cards with TV-out

    + +

    The next section deals with a number of cards that are known to have +TV-out ports. The list is unlikely to be complete, so if you know of +others, please post a message to the mythtv-users mailing list so the +information can be included in future versions of the HOWTO. The list is +organized by manufacturer.

    +

    Reports here are based on what users of the cards have posted on the +mythtv-users mailing list, so if you need configuration details, please +search the archives at +http://www.gossamer-threads.com/lists/mythtv/ using +the card name in your search string.

    + +

    ATI

    + +

    ATI makes many cards with TV-out capability, but only offers Linux +drivers for Radeon 8500 and above cards. See the Drivers and Software +section of +http://www.ati.com for the +driver and additional information.

    +

    The enhanced ati.2 X driver created by the GATOS +http://gatos.sourceforge.net +project offers some support for TV-out on other ATI cards, but only in its +"experimental" version, available through CVS. There have been reports from +people who say they have made this driver work with one or another ATI card. +For example, Bruce Markey +mailto:bjm@lvcm.com writes (on the +mythtv-users mailing list): "I got this to work. You can quote me on that. +I've used TV-out on several models of ATI cards both All-In-Wonder and +regular cards with TV-out." See the "Adventurous Setup" section of +http://gatos.sourceforge.net/watching_tv.php for details. Also see +http://www.retinalburn.net/linux/tvout.html for more information.

    + +

    NVIDIA

    + +

    Some NVIDIA cards with TV-out can be run using the standard nv driver in +X, combined with the userspace application nvtv to control the TV-out +port. See +http://sourceforge.net/projects/nv-tv-out/ for details. Recent +versions of the NVIDIA driver have better support for overscan and other +features useful with TV-Out, so the nvtv application may not be +required.

    +

    Some NVIDIA cards can be run with a proprietary NVIDIA X driver made +available by NVIDIA. See +http://www.nvidia.com/object/unix.html for more information.

    +

    NOTE: It's strongly recommended that you use the proprietary +NVIDIA drivers; they have excellent support for XvMC and ship with a good +configuration utility. XvMC provides MPEG-2 hardware acceleration, which is +important if you want to display HDTV.

    + +

    Hauppauge PVR-350

    + +

    MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV +driver.

    +

    The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also +supports audio output, but you need to connect that audio output to +something. There are two courses of action you may take: +

      +
    1. Take the audio output from the PVR-350 and plug it into an input on a +sound card on your machine. You may then use MythTV's internal audio +controls.
    2. +
    3. Take the audio output from the PVR-350 and connect it directly to your +television / audio system. You must indicate that you are using external +audio control on the PVR-350 setup page.
    4. +
    +

    + +

    Other Options

    + +

    Some devices with on-board TV-out capability, such as Xboxes converted to +Linux and some laptops can be used as MythTV frontends to display on a +television screen. Please consult the mythtv-users mailing list for messages +that report the details of these special arrangements.

    + +

    External Adapters

    + +

    External adapters convert standard VGA output to a form suitable for +display on a television. The output format varies by region, since +different countries have different TV standards. People on the mythtv-users +list have mentioned these adapters:

    +

    +

      +
    • AITech Web Cable Plus, powered by external transformer or takes power +from PS/2 keyboard connector, support resolutions up to 1024x768, outputs +composite and SVideo, provides position adjustment.
    • +
    • Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr +outputs; pan, brightness, overscan/underscan controls; supports up to +1024x768 outputs; and supports PAL and NTSC.
    • +
    • ADS TV Elite XGA
    • +
    • AverKey iMicro (comments are generally favorable)
    • +
    • AITech Web Cable (comments are generally unfavorable, different than +the "Plus" version above)
    • +
    • TVIEW Gold (mentioned once, favorably)
    • +
    +

    + +

    3.2 Software +

    + +

    There are a few ways of installing programs on Linux systems; you can +either use a pre-compiled package, or install from a tarball after +satisfying any prerequisites.

    +

    +

    + + +NOTE: you must have the MySQL database software installed on a +system to store the master database. This does not necessarily mean that +MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0. +
    +

    + +

    Pre-compiled packages

    + +

    A number of people have created pre-compiled packages for MythTV that may +make your installation easier.

    +

    +

    + + +BIG FAT WARNING: This HOWTO assumes that you have not +installed MythTV from a package. All example command lines and file +locations are based on the MythTV tarball defaults. Some packagers have +modified the filenames, binaries and file locations to match what is +commonly found in that distribution. Any issues with MythTV installed via a +pre-compiled package MUST be raised with the packager. +
    +

    +

    If you use any of the pre-compiled packages you may not need to perform any +additional configuration steps in this HOWTO. The next logical step is +configuring MySQL, which you may or may not have to +perform. See your package documentation.

    + +

    Red Hat Linux / Fedora Core

    + +

    The definitive documentation on installing MythTV on Red Hat Linux / +Fedora Core can be found in Jarod Wilson's ( +mailto:jcw@wilsonet.com) HOWTO at +http://wilsonet.com/mythtv/ Just +like 3rd-party packages, any 3rd-party documentation problems should be +brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The +installation instructions which follow should be used as a guide only; refer +to Jarod's guide.

    +

    Red Hat Linux and Fedora Core packages for MythTV and all of its add-on +modules and some themes have been packaged by +mailto:Axel.Thimm@ATrpms.net and +are available at +http://ATrpms.net/topic/multimedia/. All of the prerequisites for +MythTV (such as XMLTV) are available as RPM packages. If you have problems +with the RPMs, please contact the ATrpms lists at +http://lists.ATrpms.net/ or file a +bug against +http://bugzilla.ATrpms.net/.

    +

    Given the large number of dependent RPMs you are advised to use tools like +apt or yum for automatic retrieval and installation of the required RPMs. +( +http://ATrpms.net/install.html) In this case a +special meta-package called mythtv-suite will allow you to install all of +MythTV and its add-ons, plus all dependencies.

    +

    If you don't have apt or yum on your machine, download and +install the atrpms-kickstart package from +http://ATrpms.net/name/atrpms-kickstart/. +Install the package with: +

    +
    +# rpm -Uvh atrpms-kickstart*
    +
    +
    + +Then run: +
    +
    +# apt-get update
    +# apt-get dist-upgrade
    +# apt-get update
    +
    +
    + +And finally: +
    +
    +# apt-get install mythtv-suite
    +
    +
    + +These steps however, do NOT perform the installation of any drivers required +for ALSA, capture cards, lirc kernel modules, etc., nor do +they set up your MythTV database. Check +http://ATrpms.net/topic/multimedia/ for the drivers you +need.

    + +

    Mandriva

    + +

    Thac has created RPMs for MythTV for Mandriva which may +be obtained from +http://rpm.nyvalls.se/ If you have problems with the RPMs, please +send him email directly at +thac@nyvalls.se.

    +

    Debian

    + +

    Debian packages for MythTV and most of its add-on modules are maintained +by Christian Marillat +mailto:marillat@free.fr and are available at +http://www.debian-multimedia.org/. +Installation instructions can be found on those pages as well. All of the +prerequisites for MythTV are available as Debian packages, most of them from +the official Debian archive.

    +

    If you have followed the instructions on the above page you should have added +

    +
    +deb-src http://www.debian-multimedia.org sid main
    +
    +
    +

    +

    to your /etc/apt/sources.list file. Running apt-get update and then +executing apt-get build-dep mythtv should install all the +pre-requisites required to compile MythTV.

    +

    +

    + + +NOTE: Due to the requirement for Qt 3.3+, there are no packages for +Debian woody/stable. +
    +

    + +

    The Debian packages are configured such that MythTV programs should be +run as the mythtv user, which is automatically created during +installation. This user has access to write new recordings to disk in the +default directory, read and write the database, access the audio and video +devices, and everything else that MythTV needs to do.

    + +

    See /usr/share/doc/packagename/README.Debian for more +information, including copies of the MythTV documentation. The +mythtv-doc package contains a copy of this HOWTO in +/usr/share/doc/mythtv-doc.

    +

    Manual installation

    + +

    You may use the graphical tools that come with your distribution, or you +can use command-line utilities. Either system will get the job done, and it +all depends on your comfort level with Linux.

    +

    In order to compile MythTV, we need to make sure that the software it needs +is installed. This list includes mysql, gcc, +freetype2-devel, xorg-xserver-devel, qt-devel and +lame. If you're going to use a remote control with MythTV, you're +going to need the cdialog package in order to compile +lircd if your distribution doesn't have a pre-packaged +lirc. If you are using XMLTV as a grabber, you will need +perl.

    +

    +


    +
    +NOTE:  Qt v3.3 or higher is required.
    +
    +NOTE:  MythTV DOES NOT WORK with Qt4.
    +
    +NOTE:  If you are going to be using RPMs to install various
    +components, you should be aware that not all packages include the necessary
    +headers for compiling.  If you're having trouble compiling, ensure
    +that you've installed the -devel version of a prerequisite.
    +
    +
    +

    + +

    Command-line installation

    + +

    This section details the various methods for installing prerequisites +from the command line.

    + +

    Mandriva

    + +

    NOTE: The following instructions should be considered out of +date as of 2006-09-10. If updated instructions are not submitted by the +release of v0.21 of MythTV they will be removed.

    +

    urpmi is the simplest tool for installation of packages from the +command line, but properly configuring it can be difficult. The +following website +http://easyurpmi.zarb.org/ will allow you to choose +a mirror site and then present the command-line configuration text for that +mirror. You will most likely need to add a "Contrib" mirror to your setup. +If you add a site from the "Penguin Liberation Front", you will be able to +load the lame library without compiling from source.

    +

    Open a shell, and execute the following. You may get +asked a number of questions regarding dependencies. It's best to answer +"YES". +

    +
    +$ su
    +# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils
    +# urpmi XFree86-devel perl
    +# urpmi libqt3-devel libMesaGLU1-devel
    +
    +
    +

    +

    +


    +
    +NOTE for Mandriva 9.1+ users: execute the following command.
    +
    +# urpmi libqt3-mysql
    +
    +
    + +However, you might get this when you execute the commands above: +
    +
    +everything already installed
    +
    +
    +

    +

    In that case, you're ready to move to the next +section. Once you have completed installing the pre-requisites, +exit out of the shell and start a new one to ensure that any environment +variables setup by the installation have a chance to take effect.

    + +

    Gentoo.

    + +

    NOTE: MythTV does not run on Qt4. +If Qt has not been installed on your system: Edit +/etc/make.conf and locate the "USE" variable. If the line is +commented out, remove the comment. The line should have at least: +

    +
    +USE="mysql alsa"
    +
    +
    + +Next you need to build Qt. If you don't plan on using the ebuilds as +described in the Gentoo section then you also need to install lame. +
    +
    +# emerge lame mysql qt
    +
    +
    +

    +

    If you have already installed Qt: you will need to rebuild because the +default installation doesn't include MySQL support, a requirement for MythTV. +To enable SQL support, add "mysql" to your USE variable in +/etc/make.conf and rebuild Qt by running +

    +
    +# emerge qt
    +
    +
    +

    +

    All the necessary files will be downloaded and built. Even on a fast machine +this may take a lot of time if you need to do a full Qt build.

    + +

    Debian.

    + +

    Build-dependencies for MythTV can be satisfied by adding the following to +your /etc/apt/sources.list +

    +
    +# Christian Marillat's packages (mplayer, lame)
    +deb http://www.debian-multimedia.org sid main
    +deb-src http://www.debian-multimedia.org sid main
    +
    +
    + +and executing: +
    +
    +# apt-get build-dep mythtv
    +# apt-get source mythtv --compile
    +
    +
    +

    + +

    4. System Configuration Requirements for Compiling MythTV.

    + +

    Before you compile MythTV from the current source tarball or from +subversion, you may need to modify your system configuration in a +few ways.

    +

    In general, if you install MythTV from pre-packaged binaries for your Linux +distribution/version, you don't need to be too concerned about the issues in +this section of the HOWTO - the install script for the packages should take +care of them. However, this section is still recommended reading which may +help if the packager skipped a step in their packaging.

    + +

    4.1 Software requirements for compiling MythTV +

    + +

    General requirements

    + +

    MythTV is written in C++ and requires a fairly complete, but standard, +compilation environment, including a recent g++ compiler, make, and +appropriate header files for shared libraries. Any standard Linux +distribution should be able to install a suitable compilation environment +from its packaging system. Section 3.2 of this HOWTO provides some details +of how to install the required environment for many distributions.

    +

    Subsequent sections of this chapter address the few oddities that you may +have to adjust by hand before you compile MythTV.

    +

    The reference compilation system for MythTV is Ubuntu.

    + +

    4.2 Shared-Library requirements for MythTV +

    + +

    Modifying /etc/ld.so.conf

    + +

    The runtime manager for shared libraries, /lib/ld.so, gets +information about the locations and contents of shared libraries from +/etc/ld.so.cache, a file created by ldconfig from +information in /etc/ld.so.conf. Because MythTV installs some +shared libraries in /usr/local/lib, that directory needs to be +added to the list of directories for ld.so to search when doing +runtime linking of programs, if it is not already there. +You do this, as root, by editing /etc/ld.so.conf, then +running ldconfig. There are many ways to do this; one that +works is to enter this series of commands:

    +

    +

    +
    +$ su -
    +# echo /usr/local/lib >> /etc/ld.so.conf
    +# /sbin/ldconfig
    +# exit
    +$
    +
    +
    +

    +

    4.3 Environment variable requirements for MythTV +

    + +

    General requirements

    + +

    QT libraries and binaries

    + +

    The compiler needs to be able to locate QT binaries and libraries in +order to compile MythTV. QTDIR needs to be set and the directory holding the +QT binaries needs to be added to your PATH. Your distribution may already +be making these changes as a part of the installation of the software +prerequisites detailed earlier.

    +

    One way to do this is as follows: +

    +

    Open a shell and execute the following: +

    +
    +$ echo $PATH
    +/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin
    +$ echo $QTDIR
    +/usr/lib/qt3
    +$ which qmake
    +/usr/lib/qt3/bin/qmake
    +
    +
    +

    +

    For Mandriva, you should see a value like /usr/lib/qt3 for +QTDIR and /usr/lib/qt3/bin should be in $PATH.

    +

    For Gentoo, you should see a value like /usr/qt/3 for QTDIR +and /usr/qt/3/bin should be in $PATH.

    +

    If you don't, do not proceed past this step until you have resolved this +error. You may need to manually specify the QTDIR and PATH at the shell +prompt before compiling.

    +

    Also, check that there has been a link created in +/usr/lib/qt3/mkspecs (/usr/share/qt3/mkspecs for Debian) +called default. If not, you'll get errors during the compile. See +the Troubleshooting Section for more information.

    +

    Distribution-Specific Notes

    + +

    Mandriva

    + +

    The following instructions work for Mandriva using +bash as the shell, and may be applicable for a distribution which +uses /etc/profile.d.

    +

    +

    + + +NOTE: Mandriva 10 installs a /etc/profile.d/qtdir3.sh +file, but it doesn't include the addition of the PATH variable. If you're +running Mandriva 10, don't create a mythtv.sh file as detailed +below; edit the qtdir3.sh file and add the PATH statement within +the if / fi block. +
    + +As root, create the following file in /etc/profile.d The example +filename is "mythtv.sh". Use what you feel is appropriate.

    +

    Open a shell, and switch to superuser mode.

    +

    +

    + + +NOTE: ^D means press CTRL and d at the same time. +
    + +
    +
    +$ su
    +# cd /etc/profile.d
    +cat > mythtv.sh
    +export QTDIR=/usr/lib/qt3
    +export PATH=$PATH:/usr/lib/qt3/bin
    +^D
    +
    +# chmod a+x mythtv.sh
    +# exit
    +$ exit
    +
    +
    + +The last two commands are to exit out of the shell. This way, when you next +open a shell your new commands +will take effect.

    + +

    Device Permissions

    + +

    MythTV will need access to the video4linux devices on your system. By +default, your distribution may restrict access to these devices to the +logged-in user, so if you will be automatically starting +mythbackend from a script rather than an interactive terminal +session you will need to make some adjustments.

    +

    NOTE: The following instructions are accurate for Mandriva.

    +

    Check for a file called /etc/security/console.perms. Open the file +in your favorite text editor and look for a line that has: +

    +
    +<console>  0600 <v4l>        0600 root.video
    +
    +
    + +and replace it with +
    +
    +<console>  0666 <v4l>        0666 root.video
    +
    +
    +

    +

    What we're doing is allowing read and write access to the files in the +video4linux directory.

    +

    5. Downloading and compiling.

    + +

    Get MythTV from the +http://www.mythtv.org web site. There are two installation methods +you may choose from. The first is to download the latest release in tarball +format and compile. The tarball release of MythTV should work on a wide +variety of systems and should be the preferred method for new users. If you +wish to use the subversion copy of MythTV you may obtain it from +http://svn.mythtv.org

    +

    +

    + + +NOTE: If you are going to use subversion to +compile MythTV rather than using the distribution tarball, you must +join the +http://www.mythtv.org/mailman/listinfo/mythtv-commits/ and +http://www.mythtv.org/mailman/listinfo/mythtv-dev/ mailing lists to +keep up to date with the current status of the code. Code obtained from +subversion has no guarantees regarding stability, etc. +
    +

    +

    If you are in North America you will use the Schedules Direct grabber which is +built-in to MythTV. You do not need to install XMLTV (so you may +skip XMLTV-related instructions), but you need wget version 1.9.1 +or higher.

    +

    Get XMLTV from +http://xmltv.sourceforge.net. Download the latest version (0.5.51).

    +

    +


    +
    +NOTE for Mandriva users:  If you have added a "PLF" mirror, you may skip the
    +next step and type:
    +
    +# urpmi libmp3lame0 libmp3lame0-devel
    +
    +After downloading, be sure to install both:
    +# rpm -Uvh lame*
    +
    +
    +

    +

    Get lame from +http://lame.sourceforge.net/. Download the source code to v3.96.1 +by following the links from "Using" through "Download...".

    + +

    5.1 Building LAME +

    + +

    Open a shell and switch to the directory where you saved lame. +

    +
    +$ tar -xzf lame-3.96.1.tar.gz
    +$ cd lame-3.96.1
    +$ ./configure
    +$ make
    +$ make test
    +$ su
    +# make install
    +
    +
    + +Check that it worked: +
    +
    +# ls -l /usr/local/lib
    +-rw-r--r--    1 root     root       381706 Nov  4 14:22 libmp3lame.a
    +-rwxr-xr-x    1 root     root          674 Nov  4 14:22 libmp3lame.la*
    +lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so ->
    +libmp3lame.so.0.0.0*
    +lrwxrwxrwx    1 root     root           19 Nov  4 14:22 libmp3lame.so.0 ->
    +libmp3lame.so.0.0.0*
    +-rwxr-xr-x    1 root     root       360197 Nov  4 14:22
    +libmp3lame.so.0.0.0*
    +
    +# exit
    +$ 
    +
    +
    +

    + +

    5.2 XMLTV +

    + +

    Red Hat Linux and Fedora Core:

    + +

    RPMs for XMLTV and all of its dependencies can be obtained from +http://ATrpms.net/name/xmltv/. The web page has a +list of all the dependent packages you must download and install. +

    +
    +# rpm -Uvh xmltv* perl*
    +
    +
    +

    +

    If you install from this location you may skip to +Manually building MythTV.

    +

    Mandriva

    + +

    RPMs for XMLTV and all of its dependencies are located in +Mandriva's "contrib". If you have added a contrib mirror, try installing +XMLTV: +

    +
    +# urpmi xmltv xmltv-grabbers
    +
    +
    + +If this does not work, it is possible that contrib for your Mandriva version +does not have XMLTV, so you may install the XMLTV prerequisites by typing: +
    +
    +# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl
    +
    +
    +

    +

    and skip straight to the XMLTV compilation step.

    + +

    Manual installation

    + +

    + Untar the xmltv file: +

    +
    +$ tar -xjf xmltv-0.5.51.tar.bz2
    +
    +
    + +Install the xmltv prerequisites. The following prerequisites are the +minimum required; when you actually start running the xmltv setup program it +may alert you to other modules that are required.:

    +

    +

    +
    +$ su
    +# perl -MCPAN -e shell
    +cpan> install XML::Twig
    +cpan> install Date::Manip
    +Date::Manip is up to date.
    +cpan> install LWP
    +cpan> install XML::Writer
    +cpan> exit
    +
    +
    +

    +

    Change to the XMLTV directory and compile it: +

    +
    +$ cd xmltv-0.5.51
    +$ perl Makefile.PL
    +
    +
    + +You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to +the grabber required for your location.

    +

    You may get errors about modules not being installed. You will need to +resolve any missing dependencies at this point, or your grabber may not work +correctly. +

    +
    +$ make
    +$ make test
    +$ su
    +# make install
    +# exit
    +
    +
    +

    + +

    5.3 Configuring the Schedules Direct service +

    + +

    As of 2007-09-01, Tribune Media Services will no longer offer free guide +data. Schedules Direct is a non-profit organization which has licensed the +data to make it available to users of Freeware and Open Source applications.

    +

    If you wish to use Schedules Direct, you'll need to establish a user +account. Go to +http://www.schedulesdirect.org and click on the "Membership" link.

    +

    Once you've read and agreed to the Subscriber Agreement, Terms of Use and +Privacy Policy proceed to the lineup choices and configure your account for +your particular location and the channels that you have. This configuration +will be imported into MythTV when you first run the mythtv-setup +program.

    + +

    +

    +

    5.4 Manually building MythTV +

    + +

    If you are going to use subversion, execute the following +instructions to obtain the latest version of MythTV:

    +

    +

    +
    +$ mkdir mythtv
    +$ svn co http://svn.mythtv.org/svn/trunk/ mythtv
    +$ cd mythtv
    +
    +
    +

    +

    To use a release version, you can execute: +

    +
    +$ mkdir mythtv-release-0.21
    +$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21
    +$ cd mythtv-release-0.21
    +
    +
    +

    +

    NOTE: Using a svn version of the code allows you to stay +up-to-date with changes. So, if there's an update to the 0.21 release and +you originally obtained it using svn, you could enter the +mythtv-release-0.21 directory and type "svn up", which will update your copy +with the fixed version from the website. You would then recompile and +install the updated 0.21 code.

    +

    If you are using the tarball, then unpack it: +

    +
    +$ tar -xjf mythtv-0.21.tar.bz2
    +$ cd mythtv-0.21
    +$ ./configure
    +
    +
    +

    +

    If you wish to change options, run ./configure --help to +see what is available and to override and automatically detected options. +See the config.log file after running configure to see +previous runs.

    +

    To compile: +

    +
    +$ make -j 2
    +
    +
    +

    +

    The MythTV compile can take advantage of multiple CPUs, SMP and +Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with +distcc), specify "-j numjobs", where "numjobs" is greater than 2. +In the above example, we had two concurrent jobs executing, which is +recommended for a single CPU system. Do not set the number of jobs too +high, or your compile will actually take longer to complete than it would if +you did a "normal" build.

    +

    If you are using distcc, and you had two other host machines (red, blue) +participating, you would do something like: +

    +
    +$ export DISTCC_HOSTS='localhost red blue'
    +$ make -j 6 CXX=distcc
    +
    +
    +

    +

    The actual speed-up, if any, is dependant on a number of factors, such as +number of CPUs / hosts, etc. The distcc documentation recommends +using a -j value of twice the number of CPUs available to keep all +of them busy.

    +

    Some timing information. The following should only be used for +illustration; your actual results may vary. The test involves a complete +make distclean to the final binary. +

      +
    • P4 3.2Ghz HT: "standard" make: 12m 49s
    • +
    • P4 3.2Ghz HT: make -j 2: 11m 24s
    • +
    +

    +

    In the above example, we see that with a single CPU, a multi-stage +make does not significantly decrease compile time.

    +

    Once the compile is done, switch to superuser: +

    +
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    +

    + + +NOTE: subsequent configuration steps assume that you are within +the MythTV directory that you cd'd to above. +
    +

    + +

    Enabling real-time scheduling of the display thread.

    + +

    MythTV supports real-time scheduling of the video output thread. There +are three ways to go about enabling this: You can use rlimits, you can use +the realtime security module, or on older systems you can SUID the +executable. Enabling real-time scheduling is optional, but can make the +video display smoother, especially if you are decoding HDTV.

    + +

    rlimits

    + +

    The rlimits method is the preferred method and is included in Linux +2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which +may not be supported by your distribution yet. Assuming anyone running +mythfrontend is in the audio group and rlimits are supported, all +you need to do is place this in your /etc/security/limits.conf

    +

    +

    +
    +*               -       rtprio     0
    +*               -       nice       0
    +@audio          -       rtprio     50
    +@audio          -       nice       0
    +
    +
    +

    + +

    realtime module

    + +

    The second option is to use the Linux realtime kernel module. +This is will be phased out over time, but is currently supported +by many distributions that do not yet support rlimits. If you are +not using the distribution kernel you must configure your kernel +with: +

    +
    +Security options : [*] Enable different security models
    +Security options : [M] Default Linux Capabilties
    +
    +
    + +You may also need to install the realtime module, using your distribution's +realtime package. Assuming the users who will be running +mythfrontend will be in the audio group you can get the GUID of a named +group like so: +
    +
    +$ grep audio /etc/group
    +
    +
    + +If the number printed out from the grep was 18, you can now load +this module as root before starting mythfrontend: +
    +
    +# modprobe realtime gid=18
    +
    +
    +

    + +

    run as root option (not safe)

    + +

    The final and least preferred option is to set the sticky bit +on the mythfrontend executable. This opens a security hole, +but is the only option on systems that do not support either +rlimits or the realtime module. This does not work on modern +distributions either, and is not recommended +on any system connected to the Internet. This may also make it +impossible to debug MythTV without running gdb as root. If you +would still like to do this, you just need to run this as root: +

    +
    +# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv
    +
    +
    +

    + +

    Frontend-only configuration

    + +

    Since MythTV uses a client/server architecture, multiple frontend +computers can simultaneously access content on a Myth system. Live TV, +watching and scheduling recordings, etc. are all possible from multiple +frontends.

    +

    To get a better picture of what is needed to run a frontend, note the +following: +

  • You do NOT need the MySQL server installed on your remote frontend
  • +
  • You do NOT need XMLTV installed on your remote frontend
  • +
  • You do NOT need to run the mythtv-setup program on +your frontend machine
  • +

    +

    Other than the exclusion of the MySQL server and XMLTV, the MythTV +compilation procedure is the same as when you're setting up both a backend +and a frontend. However, you will need to install the database +access libraries.

    +

    Once MythTV is compiled and installed: +

  • Run the mythtv-setup program on your Master backend. Under the "General" +menu, change the IP address of the current machine (by default, "127.0.0.1") +to the real external IP address - 127.0.0.1 is the loopback address and no +external machine can access it. Change the Master Server IP setting to the +same IP address as well.
  • +
  • Run the mythfrontend program on your frontend machine, +and a "Database Configuration" screen should appear. +Set the "Host name" field to point to your Master backend's IP address.
  • +

    + +

    5.5 Gentoo +

    + +

    Installation of MythTV on Gentoo consists of simply emerging the desired +ebuild because all of the packages are now part of the official Portage tree. +

    +
    +$ su -
    +# emerge --sync # make sure portage is up to date.
    +# vi /etc/make.conf
    +
    +
    + +Add mysql to your USE variable. i.e. USE="mysql ...." +
    +
    +# emerge mythtv
    +
    +
    +

    +

    6. MySQL.

    + +

    When you install MySQL 5.x you will also want to comment +out "log-bin" in your my.cnf configuration file. This option will +quickly fill your "/var" disk partition with many gigabytes of data, +unless you are doing database replication and deleting these files regularly.

    +

    6.1 Distribution-specific information +

    + +

    Mandriva

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Mandriva Control +Center->System->Services, find MySQL and click the "On Boot" button and the +"Start" button if the MySQL status shows that it isn't running yet.

    +

    +

    + + +NOTE: There have been reports that MySQL isn't starting at boot. +If this is happening to you, try running the following commands. +
    + +
    +
    +$ su
    +# chkconfig --level 35 mysql on
    +# /etc/rc.d/init.d/mysql start
    +# exit
    +
    +
    +

    + +

    Red Hat Linux and Fedora Core

    + +

    If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Redhat menu>Server Settings>Services +and enter the root password when asked. Check "mysqld" and then click Start. +Click Save, then close the window.

    +

    This can be done from the command line by typing: +

    +
    +# /sbin/chkconfig mysqld on
    +# /sbin/service mysqld start
    +
    +
    +

    + +

    Gentoo

    + +

    After installing MySQL you need to initialize the database by running +mysql_install_db as root.

    +

    6.2 Setting up the initial database +

    + +

    This step is only required on the system maintaining the database, which +may or may not be one of your MythTV boxes. If the database is on a +non-MythTV machine you'll need to copy the database/mc.sql file to it.

    +

    To setup the initial MySQL databases: +

    +
    +$ cd database
    +
    +
    +

    +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    +

    +
    +$ mysql -u root < mc.sql
    +
    +
    +

    +

    Debian 3.0

    + +

    +

    +
    +$ mysql < mc.sql
    +
    +
    +

    +

    Gentoo

    + +

    +

    +
    +$ su
    +# mysql < /usr/share/mythtv/database/mc.sql
    +
    +
    + +
    + + +NOTE: It is good practice to set a root password for MySQL. Instructions for doing so can be found on MySQL's web site at +http://www.mysql.com/doc/en/Security.html. +
    +

    +

    Modifying access to the MySQL database for multiple systems

    + +

    If you're going to have multiple systems accessing a master database, +you must grant access to the database from remote systems. By default, the +mc.sql script is only granting access to the local host.

    +

    To allow other hosts access to your master database, you can either set it +up for no security at all, or with more granularity. Note that the "%" is +the wildcard character in MySQL.

    +

    +

    + + +NOTE: The "no security" option is very dangerous unless +you're in a controlled environment. +
    + +This example has no security at all, and allows access from any host. +
    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    For a more secure setup, you can restrict which machines or subnets have +access. If you have a complete DNS system operational, you could do the +following: +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    Finally, if you just want to restrict by IP subnet (in this example, the +192.168.1. network): +

    +
    +$ mysql -u root mythconverg
    +mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv";
    +mysql> flush privileges;
    +
    +
    +

    +

    You'll also need to check that the "networking" feature of MySQL is turned +on. Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

    +

    NOTE: Your distribution may have a customized MySQL configuration +file; in Mandriva, check /etc/sysconfig/mysqld for additional +configuration.

    + +

    7. Configuring Sound.

    + +

    If your video doesn't appear to be in-sync with your audio and you're +using an analog video capture card and a soundcard to capture audio, it +could be because you are listening to the real-time audio from your video +card rather than after it's been processed and synchronized to the video by +MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really +live - to let you pause live TV, MythTV is actually encoding the video, +saving to disk, and then playing it back. This procedure puts your MythTV +"live" TV about 2 seconds behind real-time, so it's important that you're +not listening to the live audio. However, if you're having an issue where +the audio and video aren't synchronized by small but varying amount, it's +most likely because the sound driver that you're using doesn't have the +DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not +with newer versions. See the +Troubleshooting Audio section for more information if you're having +issues with sound. Also, ensure that no other programs are grabbing the +audio output, like arts or esd.

    +

    What you need to do is to mute the "line-in" of your sound card and also +set it as the recording source.

    +

    There are two ways to do this. Graphically, and from the command line.

    + +

    7.1 Graphically setting up the mixer +

    + +

    Mandriva and Red Hat Linux/Fedora Core

    + +

    Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or +

    +RedHat Menu>Sound & Video>Volume Control
    +
    + on Red Hat/Fedora.

    +

    Click on Settings->Configure Make sure that "Tick Marks" and "Show +labels" have "X"'s in them. This will make it easier to find the correct +audio source. Click OK.

    +

    On the mixer page, look for Line-In on your sound card. You should see +two LED's - a green one at the top, and a red one at the bottom. The green +one at the top is for muting; you want to make sure that the green LED is a +dark green, meaning that it's "off". You also want to click on the red LED +so that it turns bright red, indicating that it's "ON"; this insures that +the Line-in is used as the source. Click OK, and make sure that you save +the settings so that this is your default.

    + +

    Using ALSA.

    + +

    To use ALSA, you'll need to correctly setup your +asoundrc file. Configuring this file is beyond the scope of this +HOWTO. Once ALSA is working correctly, change the output sound device in +mythfrontend->setup->Audio from /dev/dsp to ALSA:default. +This field may be edited to suit your ALSA requirements.

    + +

    7.2 Setting the mixer from the command line +

    + +

    If you have installed the alsa-utils package, then the amixer +program can be used to setup the mixer. The "Master" volume setting is only +required on a frontend machine to ensure that the sound channels are unmuted +and configured for outputting sound. The "Line" and "Capture" controls are +required for your sound card to actually capture audio from the external +Line-in if it's connected to an analog frame grabber. Not all sound cards +have a "Capture" control, but if yours does and you don't set it then MythTV +will not capture audio.

    +

    +


    +
    +Note the spelling in the following commands.
    +
    +
    + +
    +
    +$ amixer set Master,0 100%,100% unmute
    +$ amixer set PCM,0 100%,100% unmute
    +$ amixer set Line,0 75%,75% mute captur
    +$ amixer set Capture,0 100%,100% captur
    +$ su
    +# alsactl store
    +# exit
    +$ 
    +
    +
    +

    +

    If you have multiple sound cards, then use the -c parameter to +specify which card to adjust. Note that the first card will be "0", the +second will be "1", etc.

    +

    That takes care of setting the volume correctly, and the ALSA startup script +will restore the volume after a reboot. If you find that your sound is +distorted, it's possible that the levels in the above examples are too high +for your particular hardware combination. Try reducing the percentages by +5-10% and checking again. Once you're satisfied, re-run the alsactl +store command.

    +

    You may also use the alsamixer program to set the volume. If you +are using an ALSA version after 1.0.6, use alsamixer -V all First, +start alsamixer from the command line. You should start out on the +"Master" volume control slider. Use the up and down cursor to set the +master volume to around 75%. Next, use the left and right cursor keys to +move around on the screen until you find the "Line" slider. Press SPACE to +set it as the capture source, set the level to around 50-75% and press "M" +to mute it. You can now press ESC to exit out of the alsamixer +program. You can also have MythTV manage all volume and mute settings, but +this will only affect the "Master" or PCM volume, not the capture volume. See +the mythfrontend setup page for options.

    +

    Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output. +

    +
    +$ v4lctl -c /dev/video0 setattr mute off
    +
    +
    +

    + +

    8. Setting up a remote control.

    + +

    MythTV does not have native remote control receiver and decoder software +built-in. Instead, remote control functions are implemented by cooperating +with lirc, the Linux Infrared Remote Control program. lirc +handles the IR hardware and passes keystrokes to MythTV, which then acts as +if the user had pressed the keys on the keyboard. The file +keys.txt describes the keys used to control MythTV.

    +

    +

    + + +NOTE: If you are running Mandriva, you may install +lirc by executing: # urpmi lirc lirc-remotes and bypass +the manual compilation steps described below by jumping to the +Completing the lirc install section. See the contrib/mandrake91.etc.sysconfig.lircd file for an example of how to +configure lircd. +
    +

    +

    Some IR devices require a kernel recompile, and some don't. However, all at +least require having the kernel source available as a resource for the lirc +build process.

    + +

    8.1 Gentoo +

    + +

    To install lirc on Gentoo, all you need to do is: +

    +
    +# emerge lirc
    +
    +
    +

    + +

    8.2 Obtaining and compiling lirc +

    + +

    You're going to need to download and compile lircd. Go to +http://www.lirc.org and download lirc; as +of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as +well. +

    +
    +$ tar -xjf lirc-0.8.0.tar.bz2
    +$ cd lirc-0.8.0
    +$ ./setup.sh
    +
    +
    + +You're going to need to know what sort of receiver you have and where it's +connected. In the case of the Pinnacle Studio TV card, with the IR receiver +connected to COM1 (/dev/ttys0), once the configuration menu comes up, +perform the configuration by going to Driver Configuration->Other Serial +Port Devices->Pinnacle Systems Receiver->OK and on the next page select +COM1->OK.

    +

    Each remote is different; some remote receivers connect directly to your +capture card and not to a serial port, so make sure that you've got the +correct one.

    +

    You then click "Save Configuration and run configure" to continue.

    +

    Make sure you read the last text generated by the configure step. It will +tell you if you require a kernel recompile, and what the name of your kernel +module will be (if necessary). For instance a home-built receiver may +require a kernel recompile, so you would be notified that you will have to +load the lirc_serial module. If you did not get any such messages skip the +kernel recompile steps below and go directly to making and installing the +lirc driver.

    +

    Once the configuration step is complete: +

    +
    +$ make
    +$ su
    +# make install
    +# chmod 666 /dev/lircd
    +
    +
    +

    +

    At this point, if you're using a serial receiver, check that there's a +lirc device in /dev: +

    +
    +$ ls -l /dev/li*
    +lr-xr-xr-x    1 root     root            5 Jan 27 09:00 /dev/lirc -> ttyS0
    +srw-rw-rw-    1 root     root            0 Jan 27 15:01 /dev/lircd=
    +prw-r--r--    1 root     root            0 Jan 27 09:00 /dev/lircm|
    +
    +
    +

    +

    As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is +appropriate for the Pinnacle Systems PCTV Pro. However, you may notice +something like this: +

    +
    +crw-------    1 root     root      61,   0 Dec 31  1969 lirc
    +
    +
    + +Some IR receivers (including some homebrew units) use a character device as +their data interface as opposed to a link to a serial port. If the make +install step has created a character device for you, don't replace it +with a link to a COM port.

    +

    So, if the link or character device was not created (but should have been), +ensure that you ran the make install step as root. If it still +doesn't work, then there are three options. The first option is to re-read +the lirc documentation to determine whether your IR receiver is a +character device or should be a link to a serial port and to create the +link/character device manually. In this example, the IR device is connected +to ttyS0. If it were connected to "COM2", then use ttyS1, etc. +

    +
    +$ su
    +# cd /dev
    +# ln -sf ttyS0 lirc
    +# exit
    +$
    +
    +
    +

    +

    +

    + + +NOTE: The above example assumes that your receiver uses the +standard serial driver. Some receivers do not, including receivers that +plug into a TV capture card. Check the lirc documentation, but it may be +necessary to replace the link created above with a character pipe: +
    + +
    +
    +# mknod /dev/lirc c 61 0
    +
    +
    +

    +

    See the lirc documentation for additional information. The lirc +installation should create this for you, so manually creating it +indicates that your lirc installation may have other issues.

    +

    The second option is to post your issue to the lirc list, not the +mythtv-users list. The lirc programmers will be the ones that can assist +you best.

    +

    The third option is to dispense with lirc altogether by purchasing an IR +keyboard (various options exist, although Chicony appears to work for some +people) and a learning remote control. The IR keyboard receiver plugs into +the PS/2 keyboard port on your PC and you would train your learning remote +to emulate the various keystrokes from keys.txt of your IR +keyboard. Using this method removes lirc entirely from the picture - your +remote will be sending keypresses that your PC "sees" on the keyboard port.

    + +

    8.3 Completing the lirc install +

    + +

    +

    + + +NOTE to Mandriva 9.1 users: skip to the manual start paragraph +below. +
    +

    +

    If the lirc configure program / compile did not mention anything about a +kernel module, then you are finished. If it did mention a kernel module, you +must edit the /etc/modules.conf file. Add this line as the first +thing in the file. It must come first, or it may not work. +

    +
    +alias char-major-61 XXX
    +
    +
    +

    +

    replace XXX with the name which you determined earlier, which in this +example was "lirc_serial" +

    +
    +$ su
    +# modprobe lirc_serial
    +# /sbin/ldconfig
    +
    +
    +

    +

    Next, we're going to manually start lircd the first time. Mandriva 9.1 +users, type: # /etc/rc.d/init.d/lircd start instead of: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    NOTE: Read this next section if you're not familiar with how lirc works!

    +

    There are two separate files used by lirc, and both are required for your +remote control to do anything useful. First is the lircd.conf file. +lircd.conf tells the lirc daemon how to interpret the IR pulses +that it receives from a remote control and what name to assign to each +sequence of pulses. Without getting too involved, a particular series of +pulses may correlate to "Channel Up". The lircd.conf file will +then contain a line that looks something like this:

    +

    +

    +
    +          ChannelUp                0x0000000000001020
    +
    +
    +

    +

    The lircd.conf file can have multiple remote controls defined.

    +

    The second file is lircrc, which takes the name of the button which +was pressed ("ChannelUp") in the above example, and correlates that to an +action to be performed by a program using the remote control. So in MythTV, +ChannelUp means one thing, while in mplayer it means something +different. lircrc gives you the flexibility of taking the name of +the button and having it perform different actions depending on which +program you're using at the time.

    +

    NOTE: The definitions in lircd.conf come from the user +community, and there is no standard for the common button names. One +lircd.conf file may contain a definition for a button called +"ChannelUp", while another may contain a definition for "Chan+". Your +lircrc file must therefore be configured appropriately, or it won't +work.

    +

    If this fails, complaining of a missing lircd.conf file, then you +must find or make one. First look for a pre-made configuration file at +http://lirc.sourceforge.net/remotes/. Mandriva 9.1 users, look in +/usr/share/lirc-remotes. If you find one your remotes either on the +website or in /usr/share, download or copy the file, name it +lircd.conf and put it in your /etc directory. If you +couldn't find your remote, you must make your own lircd.conf file.

    +

    To make your own lircd.conf file +

    +
    +$ irrecord myremote
    +
    +
    +

    +

    Follow the on-screen directions to train your remote and define keys. If +your remote ends up working well, you should consider submitting your +lircd.conf file back to the lirc developers. Once finished: +

    +
    +$ su
    +# cp myremote /etc/lircd.conf
    +
    +
    +

    +

    now try to start lircd again: +

    +
    +# /usr/local/sbin/lircd
    +
    +
    +

    +

    Now, we're going to add the commands necessary for lircd to run each time we +boot. Mandriva 9.1 users, you can execute: +

    +
    +$ su
    +# chkconfig --level 35 lircd on
    +# exit
    +
    +
    +

    +

    All other distributions: +

    +
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    This takes care of the lircd portion, which "listens" for the IR signals. If +everything went well, the install script for lircd put an appropriate +configuration file for your remote into /etc/lircd.conf This file +maps the buttons on the remote control to the IR pulses coming from the +receiver.

    +

    The next step is to convert those signals into something that can be used +to control MythTV. MythTV now includes native support for lirc and can +interact directly with

    +

    +

    +
    +$ cd ~/mythtv-0.21/contrib/configfiles
    +$ cp lircrc.example ~/.lircrc
    +
    +
    + +or +
    +
    +$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc
    +
    +
    + +if you've got a Pinnacle Studio PCTV remote. +
    +
    +$ irw
    +
    +
    + +Start pressing the keys on your remote; irw will +print the name of the button as it is defined in your +/etc/lircd.conf. If you don't see anything at this point, you need +to troubleshoot further by going back to the lirc home page and investigating +from there.

    +

    If it is working, then press CTRL-C to abort the program. Once you +know that your remote is working, you can either recompile MythTV with +native lirc support by enabling it in configure or you +need to run the irxevent program, which takes the key presses and +sends them to MythTV. If you use native lirc support, you don't need to run +irxevent. If you are going to use irxevent, then you need to run +it like this: +

    +
    +$ irxevent &
    +
    +
    + +If irxevent isn't running, then MythTV will not respond to your remote +control unless you're using native lirc support.

    + +

    8.4 Additional information for lirc +

    + +

    Take a look at the lircrc.example files in the contrib/configfiles/ +directory. In my case, (Pinnacle Studio card) the channel up and down functions +weren't working, due to the fact that the button names were different than +the default lircrc.example file that came with MythTV.

    +

    The lircrc.example file has this: +

    +
    +begin
    +    prog = irxevent
    +    button = ChannelUp
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = ChannelDown
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +but the /etc/lircd.conf that comes in the lircd package +defines the buttons for the Pinnacle Studio PCTV as: +
    +
    +          channel+                 0x0000000000000017
    +          channel-                 0x000000000000001C
    +
    +
    + +rather than "ChannelUp" and "ChannelDown". I added the +following to my /home/[yourusername]/.lircrc file: +
    +
    +begin
    +    prog = irxevent
    +    button = channel+
    +    repeat = 3
    +    config = Key Up CurrentWindow
    +end
    +
    +begin
    +    prog = irxevent
    +    button = channel-
    +    repeat = 3
    +    config = Key Down CurrentWindow
    +end
    +
    +
    + +which took care of basic functionality. Because the PCTV Studio remote +has additional buttons, look at the +contrib/configfiles/lircrc.example.pinnaclestudiopctv for an example of how +to define additional buttons, and how to debug potential button name +conflicts between the lircrc.example file and how your +remote defines the button names.

    +

    By examining the button names defined in /etc/lircd.conf and using +the irw program to make sure that your remote is working, you can +create the appropriate mappings in .lircrc to get excellent remote +functionality with MythTV.

    +

    Note the repeat = parameter. This informs the irxevent +program to pass through every third keypress. By default, lirc +will only send one keypress to the application, even if you're holding down +the key. The actual repeat = number will vary from system to +system, so experiment and see which value works best for you.

    + +

    8.5 Configuring lirc for use with an IR blaster +

    + +

    Lirc has support for various IR transmitters. A popular model is the Actisys +IR-200L +http://store.snapstreamstore.com/accessories.html. It was +originally designed for IRDA communication, but can be used to transmit A/V remote +control codes. By using the lirc SIR driver, this device can easily be +integrated with MythTV. I have tested this device with an AT&T DCT2000 +digital cable box but the instructions can be used to configure other IRDA +devices and A/V remotes.

    +

    Follow the steps in the previous section. When you run setup.sh, select +option 1, driver configuration. From here select option 6, IrDA hardware. +Select your appropriate device and the corresponding serial port, then Save +configuration & run configure from the main menu. Once configure is done +type: +

    +
    +$ make
    +
    +
    +

    +

    Please note: unlike the Pinnacle receiver above you will be compiling lircd +in addition to a kernel module for the SIR transmitter. Depending on whether +you have your serial port driver configured as a kernel module you might see +the following message during make: +

    +
    +lirc_sir.c:56:2: warning: #warning
    +"******************************************"
    +
    +lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into "
    +
    +lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the "
    +
    +lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:"
    +
    +lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none"
    +
    +lirc_sir.c:61:2: warning: #warning
    +"******************************************"
    +
    +
    +

    +

    If you do receive this statement make sure to run the setserial command +before you load the lirc_sir module. Follow this with the install: +

    +
    +$ su
    +# make install
    +
    +
    +

    +

    You will notice that lirc installs the kernel module in +/lib/modules/uname -a/misc.

    +

    The configuration for starting lircd differs if you're going to be +sending and receiving IR versus just receiving. +

    +
    + 
    +# cd /etc/rc.d
    +# cat >> rc.local
    +echo "Starting lircd"
    +setserial /dev/ttySx uart none        # (if required)
    +modprobe lirc_sir
    +/usr/local/sbin/lircd
    +^D
    +# exit
    +$ 
    +
    +
    +

    +

    At this point you have to populate the /etc/lircd.conf file with the proper +codes for your A/V remote. You should be able to find your remote within the +lirc remote tar file located at +http://www.lirc.org/remotes.tar.bz2. In my case I +extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000)

    +

    To test the lirc_sir module you can run irw to verify the codes are being +received. If everything is configured correctly +you should see something similar to the following: +

    +
    +$ irw
    +0000000000007ff0 00 1 gi-motorola-dct2000
    +000000000000bff8 00 2 gi-motorola-dct2000
    +000000000000f7f0 00 ENTER gi-motorola-dct2000
    +
    +
    +

    +

    Once you've verified lirc is working you can press CTRL-C to exit +irw and configure the channel changing script.

    +

    The path to the channel changing script will need to be entered on the +mythtv-setup screen for Input Connections.

    +

    This csh script will be called each time MythTV needs to change the channel. +Below is a copy of the script followed by the corresponding perl script. +Make sure both are in your path. Also make sure you leave the #!/bin/csh +setting and not change it to Bourne or bash. This will create a frustrating +symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or +bash, csh scripts automatically close parent file descriptors before they +start. +

    +
    +$ cd /usr/local/bin
    +# su
    +# cat > change_channel.csh
    +#!/bin/csh
    +echo "changing to $1"
    +/usr/local/bin/channel.pl $1 &
    +^D
    +# chmod a+x change_channel.csh
    +# exit
    +$ exit
    +
    +
    +

    +

    See contrib/channel.pl for the actual file. Copy it to +/usr/local/bin/

    +

    The last statement within the perl script is the lirc rc command. This is +the command that transmits the code to your cable/DSS box. Make sure to have +the IRDA device within a few feet of the box.

    + +

    9. Configuring MythTV.

    + +

    By this point, all of the compile-time prerequisites have been installed, +mysql is running and has had its initial database setup. It's now +time to configure MythTV. +

    + + +NOTE: If you're running Debian unstable and you have compiled +MythTV from source, you will need to install an additional package before +you will be able to run MythTV. Execute the following to install the MySQL +driver for QT. +
    + +
    +
    +$ su -
    +# apt-get install libqt3c102-mt-mysql
    +# exit
    +
    +
    +

    +

    9.1 Configuring the Master backend system +

    + +

    Open a shell and decide where you will store your video files. This may +be one directory or multiple directories on the same or different +filesystems. There is no default directory used for new recordings, you +must create at least one storage directory and configure Myth to +use it by running mythtv-setup. If you do not do this, then MythTV +will be unable to record anything. The following example is specific for +/var/video, but the same instructions would apply for any directory +name you choose to use. See the +Advanced Partition Formatting section for hints on creating a +partition for MythTV.

    +

    +

    +
    +$ su
    +# mkdir /var/video
    +# chmod a+rwx /var/video
    +# exit
    +
    +
    +

    +

    NOTE: The last slash "/" is not required.

    +

    + +TIP: Try not to have your video mount point on the same partition +as your root partition, which could lead to the filling up of your root +partition with video data if the mount fails. For example:

    +

    If /var/video is created on your root partition and you then +perform a mount of another drive to this directory there won't be any +problems if everything is working the way it should. However, if the mount +fails for some reason, /var/video still exists, so MythTV will find +the directory and write files to it. If your / mount point is +space limited, /var/video will also be space limited, and +it won't take long to fill the partition. This will cause a number of +side-effects, most of them bad. Instead, create subdirectories as the +destination for the storage group.

    +

    Your directory structure could then look something like this: +

    +
    +/mnt/video/drive1/video
    +/mnt/video/drive2/video
    +
    +
    +

    +

    Your /etc/fstab would look like this: +

    +
    +/dev/hdb1 /mnt/video/drive1
    +/dev/hdc1 /mnt/video/drive2
    +
    +
    +

    +

    Because the Storage Group path is /mnt/video/drive1/video, if the +mythbackend can only find /mnt/video/drive1 it will not +write files to that share.

    +

    After you create the desired directory or directories for storing your video +files, you will need to add them to the proper Storage Group using +mythtv-setup. This procedure is described below in the +Storage Groups section.

    +

    The first thing to configure is the Master backend system. If you are +running multiple backend systems, the Master backend will make all +decisions about which programs will be recorded on which tuners. If you +have only one backend, then it will be its own master.

    +

    The Master backend will always choose the first available tuner in the same +order as you add cards through "mythtv-setup". In other words, the second +card you add will only be used when there are two overlapping recordings, +the third when there are three, and so on. + Therefore, you will want to have +the greatest amount of disk space on the Master backend because its tuner +will always be the first choice. You will then want to add your +other backends in the order of your +preference for recording.

    +

    +

    + + +NOTE: It is possible to not have the cards on the Master +backend be the first ones used. However, if you are new to MythTV it is +easier to configure the Master backend first before moving on to the Slaves, +at least until you become more familiar with the MythTV system. See +Advanced Backend Configurations for +information on configuring multiple backend systems in various ways. +
    +

    +

    Because MythTV uses a database to store all configuration variables, +part of the bootstrap of MythTV is to indicate the location of the MySQL +database server. If the frontend, backend and MySQL database server are all +going to be running on the same box, you can continue to the next step. If +not, you'll need to change the Host Name in the "Database Configuration" +screen of the mythfrontend program.

    +

    +

    + + +NOTE: Users that have been running the frontend and the backend on +different machines have stated that they have been having issues with remote +access to the MySQL database. The following instructions may or may not +work. Add the following to /etc/my.cnf on the backend machine and +restart MySQL. +
    + +
    +
    +skip-innodb
    +set-variable=thread_stack=256k
    +
    +
    +

    +

    Run the setup program: +

    +
    +$ mythtv-setup
    +
    +
    +

    +

    The backend setup program will start and offer you a number of choices. It +is strongly recommended that you go through them in order.

    +

    The first question will ask if you wish to clear out your existing +configurations for your capture cards. Initially, you should say "YES" so +that there are no surprises later.

    +

    The next question will ask you if you wish to clear out your video source +information. You should answer "YES" to this as well.

    +

    Once the graphical setup starts, you'll see that there are six choices

    +

    +

    + + +The Storage Directories feature is available only in the SVN version of MythTV. +
    +

    +

    +

      +
    1. General
    2. +
    3. Capture Cards
    4. +
    5. Video Sources
    6. +
    7. Input connections
    8. +
    9. Channel Editor
    10. +
    11. Storage Directories
    12. +
    +

    +

    Use the arrow keys to move around, and press the space bar to select which +option you wish to configure.

    + +

    General

    + +

    The first screen of the General configuration deals with IP addresses of the +system that you're running mythtv-setup on and any master backend you may have. +If you've only got one machine, then the default values are fine and you can +move to the next page by pressing the space bar. If you need to move around +the screen, use the arrow keys to move focus between settings, not the +mouse.

    +

    If you will be deploying multiple backends, or if your backend is on one +system and you're running the frontend on another machine then do +not use the "127.0.0.1" IP address.

    +

    NOTE: If you modify the 127.0.0.1 address and use a "real" IP +address, you must use real IP addresses in both fields, otherwise your +frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" +errors.

    +

    Changing any of the port settings is very strongly discouraged. +(If you do accidentally change them, the defaults are 6543 for +the master/backend server, and 6544 for the HTTP requests)

    +

    Once you're satisfied with the values, move the focus down to Next and hit +the space bar.

    +

    The next screen details the Host-specific Backend setup. This is where you +will set the specific directory paths for this particular backend. Make +sure that you've followed the steps at the beginning of this section and +created a directory that exists and that MythTV will have write privileges +to. When you're done, press Next to continue, taking you to the Global +Backend Setup.

    +

    On the Global Backend Setup configure your backend with the appropriate +settings. Use the left and right arrow keys to iterate through the choices +available on each setting, and the up and down keys to move between +settings. Move to Finish when you're done and press the space bar, taking +you back to the main configuration screen.

    + +

    Capture Cards

    + +

    You should have no capture cards defined, so the highlight will be on +(New Capture Card). Press space to begin.

    +

    Choose the appropriate settings for your particular tuner. Use the arrow +keys to move around and to make your choices, and press RETURN when +complete. Pressing RETURN will take you back to the Capture Cards screen; +if you have additional capture cards in this machine, press the space bar +when the highlight is on the (New Capture Card) row to define another card.

    +

    If you have made a mistake, you can delete a card by highlighting it and +pressing the 'D' key, or you can highlight it and press the RETURN or 'E' +key to edit it.

    +

    Once you have no additional cards to setup, press ESC.

    +

    +

    + + +NOTE: If you have a dual digital/analog card, such as the pcHDTV +cards and some DViCO cards, then you should not configure this as two +separate cards. Configure the digital portion as a DVB card, then click +on the "Analog Options" button within the DVB configuration panel for +the card and configure the analog portion of the card there. +
    +

    + +

    Video Sources

    + +

    When you start, the highlight should be on (New Video Source). Press the +space bar to begin. The first field asks for the name of the video source. +You may choose something easy to remember, like "Antenna" or "Cable". Once +you've chosen a name, press the down arrow to move to the next field.

    +

    If you're in North America, change the grabber to +"SchedulesDirect.org(Internal)", then continue pressing the down arrow to +move to the next field. Fill in the username (lowercase only) and password +that you have established with Schedules Direct, then move to the "Retrieve +Listings" button and press the space bar.

    +

    NOTE: You need wget version 1.9.1 or higher to use +Schedules Direct.

    +

    The mythtv-setup program will contact the Schedules Direct servers and get +your account information. Once you're done, you may click the Finish button +and skip the next few paragraphs in this document since they only apply to +users that are using the external XMLTV script to get their guide data.

    +

    If you wish to continue using the XMLTV grabber, then move to the Zip/postal +code field and put in the appropriate value.

    +

    If you're outside of North America, then some manual interaction will be +required with XMLTV. You may need to switch from the MythTV setup program +to the console it was run on to interact with XMLTV.

    +

    Once you have chosen your provider, press RETURN to continue. XMLTV will +now begin collecting the initial data for your location. The screen may +blank for a few seconds to several minutes, depending on the load of the +listings provider and the speed of your connection to the Internet. Be +patient!

    +

    You will then be returned to the Video Sources screen. If you have multiple +video sources available, such as Antenna, Cable, etc, go ahead and define +them all, even if they're not all going to be physically connected to the +master backend server. Once you're done, press ESC to return to the main +screen.

    + +

    Input Connections

    + +

    The final configuration item is Input Connections. On this screen, you +will associate the various video sources you defined earlier with a physical +input to a encoder card. It's entirely possible that you have multiple +tuners, and each tuner has a different input, so on this screen you let +MythTV know which device will connect to which input source.

    +

    When you start this screen, you should see a listing of the various input +connections available on each of the Capture cards you defined earlier. For +example, you may have a capture card with a tuner, a SVideo and a Composite +connection. If you wanted to associate the tuner (a.k.a., "Television") +with an "Antenna" source you defined in Video Sources, you would move to the +/dev/videodevice (Television) -> line and press the space bar. +Using the left and right arrow keys will show you the various choices you +have already created for video source. In our case, you would use the +left/right cursor keys until "Antenna" was shown in the Video Source field. +Press down to move to the next setting.

    +

    On the connection pane there is a "Scan for channels" button, if you are +configuring a digital source such as a DVB card, you need scan for channels +and you must do this before pressing the "Fetch channels from listings +source" button. You may scan for analog channels on an analog input, but +this is not needed.

    + +

    The other button is called "Fetch channels from listings source". As long as +you have a real listings source you should fetch channels from them for +analog channels. You can do this for digital sources as well (unless the +listing source is transmitted EIT data). If you are using XMLTV, you may need +to switch from the MythTV setup program to the console it was run on to +interact with XMLTV after pressing this button. It is possible to fetch the +channels on the command line using mythfilldatabase. But if you need to do +this, you will probably need to re-enter the MythTV setup program to +configure the "Starting channel" setting for this source->input connection.

    +

    +

    + + +NOTE: If you have a Hauppauge PVR-500, you must think of +it has two PVR-150's on a single PCI card. For example, if you have a +single PVR-500 card, it will appear as /dev/video0 and +/dev/video1. Each /dev/video device will have a Tuner input. +
    + +Once you're done, press RETURN to go back to the Input Connections screen. +You would then finish associating the video sources to any other hardware +devices you have available.

    +

    +

    + + +NOTE: Don't add a video source to a hardware input if you don't +actually have anything connected there. For example, adding "Cable" to the +Tuner and to the Composite inputs without having something connected to +Composite will lead to blank recordings. +
    +

    +

    Press ESC to return to the main menu, and press ESC again if you have no +further items to configure, thereby returning you to the command line.

    + +

    Channel Editor

    + +

    The channel editor is used to globally alter channel information, +including items like hue, contrast, fine tuning and others. Users in North +America shouldn't run the channel editor until you've completed the initial +mythtv-setup and ran mythfilldatabase at least once to populate the +database.

    + +

    Storage Groups

    + +

    +

    + + +New in MythTV 0.21 +
    +

    +

    Introduction.

    + +

    Storage Groups are lists of directories that are used to hold MythTV +recording files giving you a flexible way to allow you to add capacity to +your MythTV system without having to use exotic solutions such as LVM, +filesystem expansion or RAID Online Capacity Expansion. You can also use +Storage Groups to organize recordings and to put recordings of a certain +type into one subdirectory.

    +

    Storage Groups do not offer redundancy in case of hard drive failure, but +unlike LVM, if you lose a hard drive, you only lose the recordings that were +on that drive. With LVM, if you lose a hard drive, you will most likely +lose everything.

    + +

    How to use Storage Groups.

    + +

    By default, there is only one Storage Group called "Default", and it is +used for all recordings and Live TV.

    +

    +

    + + +NOTE: You need to add at least one directory to the Default +Storage Group or else you will not be able to record anything with MythTV. +
    +

    +

    For example, if you have 5 hard drives in your system, your first hard drive +could be your "boot" drive, and the remaining four could be dedicated to +media storage. You could format the drives and mount them as +/mnt/store/d2, /mnt/store/d3, /mnt/store/d4 and +/mnt/store/d5.

    +

    Within each mount point, it's strongly recommended that you use a +sub-directory and make that the destination path for the Storage Group. See +the +Tip in the "Configuring the Master +backend" section for additional information.

    +

    You would then add the four subdirectories you created under the mount +points (/mnt/store/d1/video, etc) into the "Default" Storage Group.

    +

    At recording time, if there were four simultaneous recordings, MythTV would +put one recording onto each drive.

    +

    Or, say that you originally installed MythTV to a 80GB hard drive, and that +hard drive is now filling up. You could simply add a new drive to your +system, mount it and update the Storage Group to add additional space.

    +

    You may create additional Storage Groups to store specific recordings in +their own directories. Storage Groups are edited via the 'Storage +Directories' section of mythtv-setup.

    +

    You can also create multiple Storage Groups to group recordings together; +recording schedules now have an option to specify which Storage Group to +use.

    +

    MythTV will balance concurrent recordings across the available directories +in a Storage Group in order to spread out the file I/O load. MythTV will +prefer filesystems that are local to the backend over filesystems that are +remote until the local filesystem has 2 concurrent recordings active or +other equivalent I/O, then the next recording will go to the remote +filesystem. The balancing method is based purely on I/O, Myth does not try +to balance out disk space unless a filesystem is too low on free disk space +in which case it will not be used except as a last resort.

    +

    Storage Groups are global, but can be overridden on a slave backend by +creating a local Storage Group by running mythtv-setup on the +slave. If a problem occurs and the slave backend is unable to use the +desired Storage Group, it will fail back and try the directories defined in +the master's Storage Group.

    +

    There's also a special 'LiveTV' Storage Group, but the directory list starts +out empty. If you add a directory to the Storage Group, it will be used +instead of putting LiveTV recordings in the Default Storage Group. This +will allow you to put your LiveTV recordings on their own filesystem, which +is similar to the old MythTV method which used a RingBuffer for LiveTV. Of +course, you don't have to do anything, and Live TV recordings will just go +into the Default Storage Group where they'll be the first programs eligible +for expiration if the system needs free space for recordings.

    +

    Usage information for all Storage Group directories is visible on the +mythfrontend status screen as well as the mythbackend status webpage. +MythTV is smart enough to determine which directories are on shared +filesystems so it should not count free or used space multiple times if you +have more than one directory on the same filesystem.

    + +

    Migrating to Storage Groups.

    + +

    Migrating to Storage groups is very simple: if you have existing +recordings in a storage directory, then the system will automatically add +that directory to the Default Storage Group. If you then add additional +directories to a storage group, the system is flexible enough to check +all Storage Groups for a file before deciding that it can't be +found, which means that you can use the mv command from the Unix +command line to arrange files however you'd like.

    + +

    Advanced: Algorithm used by the Storage Group

    + +

    This section details the logic of the Storage Group allocation engine.

    +

    The current load-balancing preferences (in order) are: +

      +
    • Local filesystems over remote
    • +
    • Less-busy (less weight) over more-busy (more weight)
    • +
    • More Free Space over Less Free Space
    • +
    +

    +

    The 'business' of a filesystem is determined by weights. The following +weights are added to a filesystem if it is in use for the following things: +

      +
    • recording = +10
    • +
    • playback = +5 (mythfrontend)
    • +
    • comm flagging = +5 (mythcommflag)
    • +
    • transcoding = +5 (mythtranscode)
    • +
    +

    +

    If a recording is due to end within 3 minutes, it is not counted against +the weight of a filesystem. This is done to account for the pre/post-roll +and start-early/end-late settings.

    + +

    9.2 Post-configuration +

    + +

    Run the mythfilldatabase program as directed. The master +backend will obtain guide data for all the video sources you defined during +setup.

    +

    NOTE: If you are using Schedules Direct and watching the output messages +on the console or the log file it is normal to see a "401 Unauthorized" +error followed by a "200 OK" when the connection to Schedules Direct is being +established. +

    +
    +From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC)
    +--02:58:01--
    +http://datadirect.webservices.zap2it.com/tvlistings/xtvdService
    +           => -'
    +Resolving datadirect.webservices.zap2it.com... 206.18.98.160
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 401 Unauthorized
    +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80...
    +connected.
    +HTTP request sent, awaiting response... 200 OK
    +Length: unspecified [text/xml]
    +
    +    [    <=>                              ] 114,125       63.57K/s
    +
    +02:58:03 (63.53 KB/s) - -' saved [114125]
    +
    +Your subscription expires on 08/20/2004 12:00:00 AM
    +Grab complete.  Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14
    +00:00:00 2004 (UTC)
    +
    +
    +

    +

    Once mythfilldatabase has finished, start the master server before +continuing. +

    +
    +$ mythbackend
    +
    +
    +

    +

    mythbackend will print information about connections and what it's doing to +the console. If you'd like to see the options that are available for +mythbackend, type mythbackend -h for help.

    +

    As of MythTV v0.21, the available options are: +

    +
    +$ mythbackend --help
    +Valid options are:
    +-h or --help                   List valid command line parameters
    +-l or --logfile filename       Writes STDERR and STDOUT messages to filename
    +-p or --pidfile filename       Write PID of mythbackend to filename
    +-d or --daemon                 Runs mythbackend as a daemon
    +-v or --verbose debug-level    Use '-v help' for level info
    +--printexpire                  List of auto-expire programs
    +--printsched                   Upcoming scheduled programs
    +--testsched                    Test run scheduler (ignore existing schedule)
    +--resched                      Force the scheduler to update
    +--nosched                      Do not perform any scheduling
    +--nojobqueue                   Do not start the JobQueue
    +--noautoexpire                 Do not start the AutoExpire thread
    +--version                      Version information
    +
    +
    +

    +

    Running mythbackend as a daemon and using the logfile option will allow you +to have mythbackend automatically start up during boot. You can follow the +steps outlined in the section called +Automatically starting mythbackend at system boot time for +configuration steps.

    +

    If you enable the -l parameter, you will want to keep your logfiles +rotated (so that they don't fill up a partition). See the section called +Automatically rotating logs for more +information.

    + +

    9.3 Configuring a non-master backend +

    + +

    Ensure that you've granted access to the master MySQL database for remote +backends as discussed in the section titled +Modifying access to the MySQL database for multiple systems and that +you have the correct IP address for the database server in the "Database +Configuration" screen of the mythtv-setup application on this slave backend.

    +

    +

    + + +NOTE: Slave backends must not run a local MySQL +daemon. By default, they will connect to their local daemon rather than the +central database, causing unexpected behavior such as empty "Watch +Recordings" lists and a failure to locate the Video Sources defined on the +master backend. Modify the /usr/local/share/mythtv/mysql.txt file +on all slave backends to ensure that the DBHostName has the address +of the MySQL server. +Caveat: You may make a slave backend the primary MySQL server, or run a +non-MythTV database on a slave backend as long as you have edited the +mysql.txt file on all systems and made it consistent. There can be only one authoritative MySQL database in a MythTV system - +errors such as the one above ensue if backends and frontends have differing +ideas of which MySQL database they should talk to. +
    +

    +

    Make sure that the IP addresses on the General setup screen are accurate. +If the slave backend can't communicate with the master backend due to IP +address misconfiguration then MythTV will not function properly.

    +

    Configuration of a non-master backend follows the same general procedure +as that of the master backend, with the exception that you skip over the +"Video Sources" step. All possible video sources need to be defined on the +master backend system; only the master backend will query a listings +provider to obtain guide data for all the non-master backends.

    +

    +

    + + +NOTE: Do not run mythfilldatabase on a non-master backend. +
    +

    +

    9.4 Configuring and running mythfilldatabase +

    + +

    +

    + + +NOTE: mythfilldatabase might take a while to complete, +depending on any number of factors, most of which you can't control. It's +best to just let the program run to completion. +
    + +mythfilldatabase --help will give a full listing of the options +available.

    +

    mythfilldatabase --manual is another option; the manual option will +allow you to fine tune channel frequencies and specify which channels will +be added to the database.

    +

    mythfilldatabase --file is an option if there isn't an XMLTV grabber +for your country, but you do have an XML formatted listings file +created by some other program.

    +

    mythfilldatabase --xawchannels is an option if you have used +xawtv to fine-tune your channels and would like to import the fine +tuning offsets into MythTV.

    +

    mythfilldatabase --refresh-today will only pull guide data for +today (in case of late-breaking changes to the schedule).

    + + +

    Periodically running mythfilldatabase

    + +

    In order to keep your database filled, mythfilldatabase should be +run once a day.

    +

    To use MythTV's built-in capability, you'll need to run the +mythfrontend Setup option. From the mythfrontend, enter the +Setup>General screen and advance to "Mythfilldatabase", the fourth screen. +Select the checkbox, then complete the options as you see fit. The +mythbackend program will now run mythfilldatabase for you.

    + +

    9.5 Grabbing channel icons for Schedules Direct users +

    + +

    While the Schedules Direct TV listings service has several advantages, it +does not support grabbing logo icons for the stations you receive. However, +there are utilities provided with MythTV which you may use to grab your +initial set of icons and to keep them updated if your lineups change.

    +

    First, you need to generate or obtain an XML file with the information for +your stations.

    +

    If you have XMLTV software installed, there is a perl script in MythTV's +contrib/ directory which will generate this file for you. Run the +command: +

    +
    +$ perl mkiconmap.pl
    +
    +
    +

    +

    You will be asked for your zip code and the service that you use. If there +are no errors, the iconmap.xml file that you need for the next step +will be created.

    +

    If you do not have XMLTV software installed and do not want to install it +for the sake of this minor task, there is a generic +contrib/master_iconmap.xml which you can copy and use but this may +not be as complete as using the specific information for your service.

    +

    Once you have an iconmap.xml file, add the icon information to your +database and grab any new icons with the command: +

    +
    +$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map
    +
    +
    +

    + +

    10. Configuring mythfrontend.

    + +

    Once you have completed configuration of your backend systems, the next +step is to configure the frontend client.

    +

    When you start mythfrontend for the first time, it will attempt to connect +to a configuration database on the local machine. If there is none, a +"Database Configuration" screen will appear, and you will need to fill in +some details. The "Host name" field needs the backend or database server's +IP address or DNS name, and the User or password fields may need to be set +to match your database user accounts. After editing those fields, press +Enter twice to write these configurations on your local machine, and attempt +to connect to the database. If you make any mistakes, the screens will pop +up again.

    +

    Now that mythfrontend has started up, you should have a number of +buttons/choices. Before doing anything, go to TV, then to Setup and +configure the frontend client. +

    + + +NOTE: You should go through the various setup screens in +mythfrontend before using any other modules to ensure that the the database +is correctly initialized. +
    +

    +

    10.1 General +

    + +

    The General screen has configuration items that don't really fit anywhere +else. The first few configuration items ask you to indicate the number of +seconds to record before or after a program, which is useful if the +broadcast network or your system clock are out of sync and will help prevent +you missing the beginning or end of a program.

    +

    To change the value, use the left and right arrow keys to increment and +decrement the number of seconds. When you're satisfied with the result, use +the down arrow to put the input focus on the Next button or press RETURN to +continue to the next page.

    +

    The next page has a number of options to do with how channels are displayed +on your system. The help text will give you more information. Move the +focus to Next and press the space bar to continue.

    +

    The last General page sets up some final configuration items. See the help +text for more information.

    + +

    10.2 Appearance +

    + +

    This set of screens is mostly concerned with how MythTV will look on your +system. From here, you can choose different themes and set the resolution +of your system.

    + +

    10.3 Program Guide +

    + +

    Fairly self explanatory. Note that the alternate program guide does not +use the same font settings as defined in Appearance, so if the EPG is +unreadable this is where you make the adjustments to fonts, number of +elements displayed, etc.

    + +

    10.4 Playback +

    + +

    The one configuration item which may cause problems on your system is the +"Deinterlace playback" setting. MythTV uses a linear blend algorithm for +deinterlacing, which will improve how the image looks on your screen. +Deinterlacing requires that your processor support SSE. (Streaming SIMD +Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the +Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II +CPUs do not have SSE, so make sure you haven't enabled deinterlacing if +your processor doesn't support it. If you enable it, and your processor +doesn't support SSE, you will get "Illegal Instruction" errors.

    +

    To determine if you've got SSE on an Intel processor, you can: +

    +
    +$ cat /proc/cpuinfo
    +[snip]
    +flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
    +cmov pat pse36 mmx fxsr sse
    +
    +
    +

    +

    Notice the sse at the end of the line - this tells you that this +processor will be able to deinterlace correctly.

    +

    On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's +implementation of SSE instructions, so if your processor has 3dnow you +shouldn't have any issues with deinterlacing.

    +

    Video Filters

    + +

    MythTV provides a means of employing video filters while recording and +during playback. These filters can be used to improve or modify the video +image, including hiding the effects of an interlaced image or reducing the +impact of noise in a poor video signal. The following is a brief +introduction to introduce you to the filters that are available in MythTV +version 0.20 and higher.

    +

    Applying filters

    + +

    One or more filters can be included in a "filter chain". The filters to +be used are identified in a "filter string". A filter string is a group of +filter names and parameters separated by commas. To include parameters, the +filter name is followed by "=" and the parameter information. There should +be no spaces in the filter string. Here is an example filter string:

    +

    With parameters: kerneldeint=10:1,denoise3d=12

    +

    Without: kerneldeint,denoise3d

    +

    Recording filters are set for each individual channel. These may be used +when encoding in software (MPEG-4, RTjpeg) but do not apply when using a +capture card with hardware encoding such as those supported by the ivtv +driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and +select the "Channel Editor". On the first page for each channel, you can +enter a filter string in the box titled "Video filters". If you are running +"mythweb" on your web server, you can click on "Settings" then "Channels" +and enter filter strings in the "videofilters" column.

    +

    Playback filters are per-host and apply to any recording you watch from the +frontend where filters have been applied. Playback filtering can only +work with software decoding so the viaslice, xvmc, and ivtv outputs ignore +filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. +Enter your filter string in the box titled "Custom Filters".

    + +

    Currently Available Filters

    + +

    "Deinterlace Playback" checkbox.

    +

    This implements special behavior needed for the "bobdeint" filter but can +also be used to choose any of the deinterlace filters. If you prefer, you +may leave this unchecked and include any of the deinterlace filters, other +than "bobdeint", in your custom filter chain.

    +

    o The "invert" filter

    +

    Invert ignores any parameters and inverts the pixel values of the video +frames. In other words, a negative image. This would rarely be useful but +may be a good example to verify that your filter strings take effect.

    +

    o The "linearblend" filter

    +

    It is a simple deinterlacing filter that ignores parameters and works by +blending adjacent lines. It replaces combing in interlaced video with a +less distracting "ghost" image.

    +

    o The "bobdeint" filter

    +

    This filter splits the interlaced image into two separate fields that +can be line doubled then displayed at twice the frame rate. If the +display is at the same refresh rate as the recording (59.92Hz NTSC or +50Hz PAL) this will cause each refresh to show objects in motion in +a new position with no jagged edges. However, if the display is not +synchronous, it will cause flickering or the appearance of the picture +moving up and down by one line.

    +

    +

    + + +NOTE: This filter requires the frame rate to be doubled +and therefore can only be used with the "Deinterlace Playback" checkbox. +Do not include this in your filter chain. +
    +

    +

    o The "kerneldeint" filter

    +

    Kerneldeint is a more complex deinterlacing filter which applies a filter +kernel using input from several lines. It generally removes combing without +a "ghost" image, sometimes leaving a faint outline of the image from the +other field. It is considered to be less distracting to watch than +linearblend or no filter at all. It accepts one or two integer parameters +separated by a colon.

    +

    The first parameter is the filter threshold and defaults to 12. Adjacent +lines differing by more than the threshold value are filtered. The second +option defaults to 0. If set to a non-zero value, it will cause the filter +to skip chroma, and filter only the luminance. It may be useful on some +capture cards which do not capture the chroma fields of interlaced video +correctly.

    +

    o The "onefield" filter

    +

    This is a simple one-field deinterlacing filter that uses only one field of +the interlaced video. By default it keeps the top field, though passing the +parameter "bottom" will cause it to keep the bottom field instead.

    +

    This filter is primarily useful for those who display 1080i HDTV signals +with a video mode that has 540 pixels vertically. The advantage over other +deinterlacing filters is that scenes with motion never show combing or +ghosting.

    +

    o The "adjust" filter

    +

    This filter adjusts the digital values for luma and chroma to ensure that +they will fall within the ranges specified in the ITU-R601 standard. By +default, this corrects a known problem for the luma range used by bt8x8 +chips which causes video to look washed out. If parameters are passed, there +need to be exactly six. However, passing a single parameter of "-1" will +disable the filter.

    +

    1: luma minimum input value (int) +2: luma maximum input value (int) +3: luma gamma correction (float) +4: chroma minimum input value (int) +5: chroma maximum input value (int) +6: chroma gamma correction (float)

    +

    The default bt8x8 correction values are equivalent to +"16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 +luma, 16-240 chroma).

    +

    NOTE: If it is not already specified in the filter chain, this +filter will be automatically applied when recording with the "bttv" driver.

    +

    o The "quickdnr" filter

    +

    A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a +value from "0" for the least filtering to "255" for the greatest filtering. +With one parameter, the filter will compute the values it should use for all +of its variables. Two parameters will set the filter strength for luma and +chroma independently. If you are interested in how the algorithm works, you +may examine the source code to see how four parameter are used.

    +

    o The "denoise3d" filter

    +

    A slower denoiser that applies a spatial and temporal low-pass filter. The +spatial filter can remove some noise that quickdnr can't, but a more +powerful CPU is needed. This filter accepts 3 float parameters:

    +

    +

      +
    • luma spatial filter strength
    • +
    • chroma spatial filter strength
    • +
    • luma temporal filter strength
    • +
    +

    +

    Reasonable defaults will be selected for omitted parameters. The chroma +temporal filter strength is calculated from the other filter strengths.

    +

    o The "crop" filter

    +

    Covers edges of video with black bars. This helps improve video quality +when the edges of the frame are distorted. By default, this removes 16 +pixels from each edge. This can optionally take four parameters representing +top:left:bottom:right. The number times 16 is the number of pixels to remove +so, for example, the default is "=1:1:1:1".

    +

    o The "forceyv12" and "forceyuv422p" filters

    +

    These force the filter manager to use the given format. You can use one of +these at the head of a filter chain to change the capture format. The most +likely use would be forceyuv422p to use YUV422P capture on cards with known +chroma interlacing problems with YV12.

    +

    There are some filters included in the MythTV source code that should +not be used:

    +

    o The "forcergb24" and "forceargb32" filters

    +

    The two RGB formats should not be used because there is no conversion filter +for them yet.

    +

    o The "convert" filter

    +

    It exists but don't use it. The filter manager uses this filter +automatically when it is unable to match the input/output formats of two +adjacent filters.

    +

    o The "postprocess" filter

    +

    While this exists in MythTV source code, it is currently not recommended for +use.

    + +

    Usage Considerations

    + +

    There are trade-offs to consider when deciding if it would be wise to use +a filter. Any processing will modify the original image so you should assess +if the filter has made a noticeable improvement to the picture in order to +justify the impact of the processing. Adding any filter will inherently +increase CPU usage. The impact can vary dramatically depending on your CPU +type and speed, the resolution of the recording, which filters you are using +and other factors. You can only determine what is right for you through +experimentation. However, as a starting point, here are some filter strings +that you may find useful:

    +

    For typical broadcast stations: "kerneldeint,quickdnr"

    +

    For stations with poor signal quality: "linearblend,denoise3d=12"

    +

    For synchronous TV-out: check Deinterlace with "Bob (2x framerate)"

    + +

    10.5 Recording +

    + +

    Depending on your capture card, MythTV offers different video encoders. +The following types of hardware encoding cards are supported: +

    + +For cards without hardware encoding capabilities (all cards supported by +V4L not listed above), Myth includes two methods for software encoding: +RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, +but it generates larger files than MPEG-4 for a given recording.

    +

    For DVB and HDTV cards, no further configuration is required after +setting up the card using the 'mythtv-setup' program. +For all other cards, configuration is done through MythFrontend. +Selecting 'Recording Profiles' from the 'TV Settings' screen will list +the profiles currently available for the cards in your system. +Depending on what types of cards you have installed you may see: +

    +
    +(Create new profile group)
    +Software Encoders
    +Hardware MPEG Encoders
    +Hardware MJPEG Encoders
    +Transcoders
    +
    +
    + +The '(Create new profile group)' option will allow you to create custom +profiles in case you have multiple backends. Note that custom profiles +are per backend and card type. If you have 2 MPEG-2 encoders in a given +backend system, creating a custom profile will affect both of them. This +option should not be needed otherwise.

    +

    The 'Transcoders' group is a little different from the others. Selecting +this group will result in a menu with the following options: 'RTjpeg/MPEG-4' +and 'MPEG-2'. These types indicate what transcoder options will be used for +a given input type (i.e. the 'MPEG-2' settings would be used to transcode +MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or +PVR-x50) does not matter. Configuration of the options is the same as below +(although any resolution settings will be ignored).

    +

    Selecting any of the other options will show a new screen with a list of +four profiles: +

      +
    • Default
    • +
    • Live TV
    • +
    • Low Quality
    • +
    • High Quality
    • +
    +

    +

    The Default profile will be used for any recording which does not otherwise +have a specific profile assigned. The 'Live TV' profile will be used when +watching TV. The remaining two profiles are available for customizing to +allow for more precise control over what quality is used for a given +program.

    +

    Selecting a profile will allow you to adjust the relevant options for that +card. The most significant setting is the recording resolution, but you can +also choose encoding format, audio format, and tweak other encoder specific +properties.

    +

    +

    + + +NOTE: although the width and height can be changed to almost +anything, if you start MythTV and don't see video or you get "segmentation +fault" errors, it is likely that the video4linux (v4l) subsystem did not +like the height and width parameters specified. It's best to leave the +default as-is until you're sure that MythTV is operational. +
    +

    +

    See the +What capture resolution should I use? How does video work? section for more information.

    + +

    10.6 Xbox Frontends +

    + +

    MythTV is able to control the LED on the Xbox to indicate backend +recording status.

    +

    To control the LED, you will need the blink program from the +xbox-linux project, which is installed as /bin/led on GentooX. On +Xebian (the new Ed's Debian) you must install it yourself. On other +distributions it may or may not be installed as a program called +blink and should be located in your path. (Type which +blink to see if the program is available.) If you do not have +blink, you may obtain it from the Xbox-Linux project site at +http://xbox-linux.sf.net/. The +program you need is part of the eds_i2c_staff module in CVS. Note +the spelling.

    +

    Once you have installed blink you will need to set permissions. +blink needs write permission to the i2c device to function +properly. There are three methods to accomplish this. First, you could run +mythfrontend as root, which is the simplest method, but could +potentially be a security risk. Next, you may make the blink +binary setuid root, which allows non-privileged users to run a program with +root capability. This is done by typing the command: +

    +
    +$ su
    +# chmod u+s /path/to/blink
    +
    +
    + +The final technique would be to set the /dev/i2c/0 device read/write +for all users, but this is the least preferred method.

    +

    Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. +On the second page check the 'Enable Xbox Hardware' option. Upon reentering +the settings, you should have a new option named 'Xbox'. Within this option +you may select the distribution, LED colors for recording and the update +interval. If you select GentooX as the distribution led will be +used as the blink binary name, otherwise, blink is used. +Colors should be self explanatory. The update interval determines how often +the frontend should poll the backend to determine if the status has changed.

    + +

    11. Using MythTV.

    + +

    +

    + + +NOTE to Red Hat/Fedora 4 users: Red Hat Linux and Fedora Core ship +with Gnome as the default desktop environment. However, Gnome seems to have +issues with window focus and window switching which sometimes cause +mythfrontend to obscure the video. KDE does not seem to have any such +issues. Therefore you will need to switch to KDE by selecting +RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose "KDE". +NOTE to Fedora Core 5 and 6 users: Fedora 5 and 6 no longer have +this tool in the Menu. Use "switchdesk KDE" from a command line. Read "man +switchdesk" for further information about changing to other desktop +environments. +
    +

    +

    11.1 Keyboard commands +

    + +

    The keys.txt file describes what the various keyboard commands are. +If you have loaded mythweb, you may change the default keys to your liking.

    +

    mythfrontend

    + +

    +

    +
    +Arrow keys used to move the highlight point around
    +ALT-F4 exit out of the application
    +Space/Enter take action on the item under the highlight point
    +P play in both "Watch a Recording" and "Delete a Recording"
    +D delete in both "Watch a Recording" and "Delete a Recording"
    +U to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens
    +O to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens
    +I edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. +
    +

    +

    +

    Watching TV or a recording

    + +

    +

    +
    +Up or down keys change the channel
    +num pad Type a number to enter a channel number or jump amount (HHMM format)
    +P pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode.
    +C change inputs on TV Tuner card
    +ESC quits
    +I puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position.
    +M brings up the electronic program guide (Grid) -- see the EPG section
    +Page Up jump back the configured number of minutes (default is 10)
    +Page Down jump ahead the configured number of minutes (default is 10)
    +End or Z skip to next commercial break marker
    +Home or Q skip back to previous commercial break marker
    +T toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext.
    +F rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time.
    +[ or F10 decrease volume
    +] or F11 increase volume
    +| or F9 toggle mute
    +/ jump to the next "favorite" channel
    +? mark/unmark the current channel as a "favorite"
    +U increase the play speed
    +J decrease the play speed
    +A Adjust time stretch (speed up or slow down normal play of audio and video
    +W cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom  (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black  sidebars in TV signal)
    +F8 toggle the sleep timer 30m->1hr->1hr30m->2hr->Off
    +CTRL-B Jump to the beginning of the recording / ringbuffer
    ++ Switch between audio streams
    +Left (if a jump amount is entered) to jump back that amount
    +Right (if a jump amount is entered) to jump ahead that amount
    +
    +
    + Without the stickykeys option selected
    +Left rewind the configured number of seconds (default is 5)
    +Right fast forward the configured number of seconds (default is 30)
    +< starts rewind mode as if stickykeys are selected
    +> starts fast forward mode as if stickykeys are selected
    +
    +
    + With Stickykeys option selected
    +Right starts fast forward mode
    +Left starts rewind mode
    +
    +
    + In fast forward or rewind mode:
    +Left/Right increases the ff/rew speed
    +0 plays at normal speed, but leaves the time indicator on screen
    +1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest)
    +3 plays back at normal ff/rew speed
    +4-9 plays back faster than normal ff/rew speed (9 is fastest)
    +Space exits fast forward or rewind mode
    +
    +
    + While video is paused:
    +Left rewind 1 frame
    +< rewind 1 second
    +Right advance 1 frame
    +> advance 1 second +
    +

    +

    +

    Watching TV only

    + +

    +

    +
    +G rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust.
    +H Channel history. Each repeat steps back through the previous channels.
    +O Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen.
    +Y switch between multiple capture cards.  NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.)
    +
    +

    +

    +

    LiveTV Browse Mode

    + +

    +

    +
    +Left browse program prior to current listed program
    +Right browse program following current listed program
    +Up browse program on channel above current listed channel/program
    +Down browse program on channel below current listed channel/program
    +/ browse program on next favorite channel
    +0-9 enter a channel number to browse
    +Space/Enter change channel to channel of current listed program
    +R/r Toggle recording of current program (cycles through types)
    +ESC/O Exit Browse mode +
    +

    +

    +

    Playback Recording Zoom Mode

    + +

    +

    +
    +Left Move video to Left
    +Right Move video to Right
    +Up Move video Up
    +Down Move video Down
    +PageUp Zoom In
    +PageDown Zoom Out
    +Space/Enter Exit Zoom mode leaving picture at current size and position
    +ESC Exit Zoom mode and return to original size +
    +

    +

    +

    If you have two or more tuner cards

    + +

    +

    +
    +V toggle Picture-in-picture on or off
    +B toggles the window focus (lets you change channels on the PiP window)
    +N swaps the two channels by changing channels on both cards +
    +

    +

    +

    Watching a recording only

    + +

    +

    +
    +Space/Enter set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark.
    +X queues the current recording for transcoding
    +O brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc.
    +D exits the current recording and displays the Delete menu
    +E or M enters/exits edit mode.
    +
    +
    + In edit mode
    +Left/Right move forward and backward
    +Up/Down alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes.
    +PageUp/PageDown move forward and backward to the nearest cut point
    +< or > move forward or backward by 10 times the normal jump amount
    +Space/Enter allows you to set or delete a cut point
    +Z loads the commercial skip list (if one exists) into the cutlist
    +C or Q clear all cut points in the cutlist
    +I Inverts the cutlist +
    +

    +

    +

    EPG

    + +

    +

    +
    +Arrows are used to move the highlighted program point around
    +A, D, S, W perform the same as left, right, down and up
    +PageUp/PageDown move the channel list up or down a page
    +Home/End move the highlight left or right by one day
    +Ctrl+Left or < move the highlight left by one page
    +Ctrl+Right or > move the highlight right by one page
    +9, 3, 7, 1 (like a numeric keypad) perform the same as PageUp, PageDown, Home and End
    +I bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program.
    +Space/Enter allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'.
    +M when on a channel will change to that channel
    +ESC or C exits without changing the channel
    +R change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list.
    +X change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG)
    +? mark/unmark the current channel as a "favorite"
    +/ or 4 toggle the guide listing between all channels and filtered "favorites" +
    +

    +

    +

    Setting Program or Channel Recording Priorities

    + +

    +

    +
    +Right increases priority value
    +Left decreases priority value
    +1 sorts by title
    +2 sorts by priority
    +Home/End toggle sort priority
    +I edit recording options
    +ESC commits changes and exits +
    +

    +

    +

    Viewing Scheduled Recordings/Resolving Conflicts

    + +

    +

    +
    +1 show all recordings
    +2 show only important recordings
    +Home/End toggle show showing all/important
    +I edit recording options
    +Space/Enter resolve conflict or override +
    +

    +

    +

    Viewing Search Listings

    + +

    +

    +
    +Home change to the previous view if applicable
    +End change to the next view if applicable
    +M select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. +
    +

    +

    +

    Recording Profiles Setup Screen

    + +

    +

    +
    +D on a custom profile group displays a popup to delete the group
    +
    +

    +

    +

    Recording Groups

    + +

    In the Watch Recordings screen, Recording Groups allow you to separate +programs into user-defined categories, such as "Kids", "Alice", "Bob", etc. +This can be used to reduce clutter, or to segregate content if you use the +PIN function. +

    +
    +M change the view or to set a group password
    +I move a program from one Recording Group to another +
    +

    +

    +

    Watch Recordings Screen

    + +

    +

    +
    +1 or F1 Meaning of the icons
    +/ Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the  Menu (m) button, selecting "Playlist options",  then "Change Recording Group".
    +? Clear the tagged list. +
    +

    +

    +

    Remote Controls

    + +

    If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function.

    +

    If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls.

    +

    This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. +

    +
    +REMOTE CONTROL LIRC KEYSTROKE FUNCTION
    +0 - 9 0 - 9 channel selection, EPG navigation, ff/rew speed setting (with stickykeys)
    +Left Arrow Left scroll left, rewind
    +Right Arrow Right scroll right, fast forward
    +Up Arrow Up scroll up, channel change up
    +Down Arrow Down scroll down, channel change down
    +Select / OK / Play Space Select item, play (with stickykeys) set bookmark
    +Cancel Escape Cancel, quit playback
    +Menu m EPG (from watching TV) edit (from playback).
    +Pause p Pause
    +Other key 1 i Information
    +Other key 2 c Change tuner card input +
    +

    +

    + +

    11.2 Using themes with MythTV +

    + +

    MythTV is "themeable", meaning that the visual appearance of the program +can be modified by the user without re-compiling or altering the program +functionality. Download the MythThemes tarball from the website and untar it:

    +

    +

    +
    +$ tar -xjf myththemes-0.21.tar.bz2
    +$ cd ~/myththemes-0.21
    +$ qmake myththemes.pro
    +$ su -
    +# make install
    +# exit
    +$
    +
    +
    +

    +

    The theme will now be available in the mythfrontend Appearance section.

    + +

    11.3 Adding DishTV information to the database +

    + +

    A script for adding Pay Per View information into the MythTV database for +DishTV subscribers is available at +http://www.mythppv.com/.

    + +

    11.4 Adding support for an external tuner +

    + +

    MythTV supports changing the channel on an external tuner. If you have +an external tuner, such as a DirecTV or digital cable set top box, you +should add /usr/local/bin/changechannel to your Input Connections in the +mythbackend configuration GUI.

    +

    However, there is not changechannel program per-se, because this is +going to be dependent on what sort of external tuner you have. Look in the +contrib/channel_changers directory for a number of programs and +scripts which may be used to change channels. Once you find one which +works, copy it to /usr/local/bin/changechannel.

    +

    Feel free to browse some of what sort of hardware is available at +http://store.snapstream.com/accessories.html, or if you wish to +assemble your own, rather than purchase, the following may be helpful: +http://www.dtvcontrol.com/ for +cable pinouts.

    + +

    11.5 Using Shutdown/Wakeup +

    + +

    What does the MythTV Shutdown/Wakeup function do? The scheduler on the +Master backend (MBE) keeps track of the idle status of the entire MythTV +system, including the Slave backends (SBE). If it considers the system to be +idle, and thus ready to shutdown, it sets the wakeuptime to the time of the +next recording and then proceeds to shut down all Slave backends and then +itself. Once it is time to begin recording, the Master backend and the Slave +Backends are automatically woken up. This system allows MythTV to record +like a normal VCR, thereby conserving power when not in active use.

    +

    In order to use the Shutdown/Wakeup function there must be some method of +waking up the Master backend. There are any number of solutions, but we +will discuss in detail two possibilities:

    +

    +

      +
    • Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) +packet to wake the Master backend. This assumes that you have the WOL tools +installed, and that your Master backend motherboard supports WOL.
    • +
    • Use your motherboard's BIOS wakeup capability. You'll need a motherboard +that supports BIOS wakeup, and some tools. Two that work are: +http://sourceforge.net/projects/nvram-wakeup and +http://www.malloc.de/tools/wakeup_clock.html
    • +
    +

    + +

    A deeper look into the operation

    + +

    The scheduler keeps track of the idle status of the MythTV system. To +determine whether or not the MythTV system is idle, the following conditions +must be met for a period of time defined in the "Idle timeout (secs)" +parameter. +

      +
    • no client is connected to the server
    • +
    • no recording (neither LiveTV nor a regular recording) is currently taking place
    • +
    • no recording starts within a definable amount of time ("Max. wait for recording (min)")
    • +
    • the "pre Shutdown check-command" returns 0
    • +
    +

    +

    If we get to this idle state the Master backend will set the wakeuptime using the "Set +wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will +then shut down the Slave backends and itself using the "Server halt command".

    +

    One caveat is that the scheduler tries to guess if the Master backend was started by a +wakeup call or by the user. If it thinks it was woken up by a user, it +blocks shutdown until a client connects to the Master backend, after which it will +behave as described above. To disable this feature, unset "Block shutdown +before client connected" in the mythfrontend Setup->Setup->General screen.

    +

    Once it is time to startup the system, the Master backend is woken up first and will +wakeup the Slave backends using the "Wake command for slaves". At this time, there is +no support for starting only the required Slave backend, so all Slave backends will startup.

    + +

    Setting up the MythTV side of this extension.

    + +

    There are a number of options that are used to control the Shutdown / +Wakeup feature.

    +

    Shutdown/Wakeup Options: +

      +
    • "Idle timeout (secs)" is the time the server waits while idle until a +shutdown occurs.
    • +
    • "Max. wait for recording (min)" is the time the Master backend waits for a recording +without shutting down. For example, this would be used to prevent a 10 +minute system shutdown if a recording is set to start 15 minutes from now.
    • +
    • "Startup before rec. (secs)" Sets how long before a programmed +recording the MythTV system will be woken up. This should be roughly be the +time your systems need to bootup, and if you have Slave backends, you'll +need to ensure this value is long enough for all your machines to perform +their bootup cycle.
    • +
    • "Wakeup time format" is the format of the wakeup time that is given in +the "Set wakeuptime command" as a parameter "$time". You need to set this +according to your wakeup mechanism. If you need seconds since the epoch +(1970-01-01) set the "Wakeup time format" to "time_t".
    • +
    • "Set wakeuptime command" is the command executed to set the new wakeuptime.
    • +
    • "Server Halt Command" is the command executed to shutdown the Master +backend and the Slave backends.
    • +
    • "pre Shutdown check-command" is used to give a +"Go/NO-GO" decision from a non-MythTV source. This command is executed +immediately before the shutdown would occur. The return value is use to make +the following choices: +
        +
      • If it returns a "0" the shutdown will occur as scheduled.
      • +
      • If it returns a "1" the "idle timeout" will be reset and the system +waits again for the timeout.
      • +
      • If it returns a "2" the entire shutdown sequence is reset. This means +that a new client connect is needed before a shutdown occurs, unless you have +the "Wait for client connect" setting disabled, in which case this is the same as +returning "1". An example of a use for this return value is to prevent the shutdown +if a user is currently logged in, or if a specific program (i.e. transcode, +automatic updates, etc.) is currently running. If you don't need it, leave +the field blank.
      • +
      +
    • +
    +

    +

    The "WakeOnLan settings": +These settings have nothing to do with using BIOS or WOL wakeup, they are +the same for both. +

      +
    • "Master backend" This setting defines timings for the frontends to +wakeup the Master backend using WOL. Useful if your frontend can emit a WOL +packet so you don't need to physically go to the Master backend if you're +trying to watch TV.
    • +
    • "Reconnect wait time (secs)" is the time the frontend waits after +executing the "Wake command" before attempting to retry the connection. This +should be roughly the amount of time your Master backend needs for bootup. +Set to "0" to disable. The frontends will retry to connect for "Count of +reconnect tries" times before giving up.
    • +
    • "Wake command for slaves" is the one command executed to wake +your Slave backends. This should be a script that contains the calls to +wakeup all Slave backend systems.
    • +
    +

    + +

    Using WOL to wake your Master backend.

    + +

    To use WOL to wake your Master backend you will need a WOL capable Master +backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) +on the Master backend. I use some little bash scripts to make my DSL router +wakeup my mythbox if required.

    +

    Replace $SERVER and $PORT with your own settings! +On my Master backend I have a script that gets called as 'setwakeuptime command' which +looks like the following: +

    +
    +#! /bin/sh
    +echo $@ | nc $SERVER $PORT
    +
    +
    + +This simply cats the parameters (that is $time) to my 24/7 server. On my +$SERVER I have (x)inetd listening on $PORT starting a little script which +cares about setting the at-job. The following additions are necessary on the +$SERVER:

    +

    If you use inetd:

    +

    In /etc/inetd.conf add: +

    +
    +mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake
    +
    +
    + +If you use xinetd, save the following as mythwake in your +/etc/xinet.d/ directory: +
    +
    +service mythwake
    +  {    
    +        socket_type     = stream
    +        wait            = no
    +        user            = mythtv        
    +        protocol        = tcp
    +        id              = mythwake
    +        server          = /usr/local/bin/mythwake
    +  }
    +
    +
    + +and add the following to /etc/services: +
    +
    +mythwake        $PORT/tcp
    +
    +
    +

    +

    Finally, /usr/local/bin/mythwake looks like: +

    +
    +#! /bin/bash
    +#this should be a command to wake your server
    +WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE"
    +#first we need to delete all wake jobs in queue
    +for JOB in atq | cut -f 1 ; do
    +    atrm $JOB;
    +done
    +#now we read the date from 'nc'
    +read date;
    +#now set the atjob
    +echo -e "$WAKECMD" | at $date ;
    +
    +
    + +SECURITY WARNING: +Be sure to secure $SERVER:$PORT from untrusted networks, because this +allows 3rd parties to run arbitrary code on your server!

    + +

    Using BIOS wakeup to wake your Master backend.

    + +

    Since I don't use this, I cannot say much about this. If your motherboard +supports any wakeup tool you have to call that tool as "Set wakeuptime +command" with the "Wakeup time format" suitable for that tool.

    +

    Wakeup the MySQL server using WOL

    + +

    If your MySQL server and your Master backend are not on the same machine, +you can have the Master backend wake your MySQL server using WOL. You will +find the settings for this in the second page of the mythtv-setup program, +or at the end of mysql.txt. The meanings are the same as +discussed in "The WakeOnLan settings" above.

    + +

    Tips/Tricks:

    + +

    If, for example, one of the Slave backends is also your desktop computer, +you could simply use a little script as 'server halt command' which first +calls /sbin/shutdown -t TIMEOUT where TIMEOUT is a value sufficient +for you to react. You could then popup a window using *dialog, asking for +permission to shutdown. If you cancel the shutdown, simply call +/sbin/shutdown -c.

    +

    If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your +set-wakeuptime-script should stop the program that uses /dev/rtc before +setting the wakeuptime.

    +

    11.6 Controlling the mythfrontend via telnet +

    + +

    To use this feature you must first enable it in Settings>General>General

    +

    The network control listens on port 6546, as demonstrated below:

    +

    +

    +
    +$ telnet basement 6546
    +Connected to basement.
    +Escape character is '^]'.
    +MythFrontend Network Control
    +Type 'help' for usage information
    +---------------------------------
    +# help
    +Valid Commands:
    +---------------
    +jump               - Jump to a specified location in Myth
    +key                - Send a keypress to the program
    +play               - Playback related commands
    +query              - Queries
    +exit               - Exit Network Control
    +
    +Type 'help COMMANDNAME' for help on any specific command.
    +
    +# help jump
    +Usage: jump JUMPPOINT
    +
    +Where JUMPPOINT is one of the following:
    +channelpriorities    - Channel Recording Priorities
    +channelrecpriority   - Channel Recording Priorities
    +deletebox            - TV Recording Deletion
    +deleterecordings     - TV Recording Deletion
    +guidegrid            - Program Guide
    +livetv               - Live TV
    +livetvinguide        - Live TV In Guide
    +mainmenu             - Main Menu
    +...snip...
    +# exit
    +$
    +
    +
    +

    +

    Please note that this feature only allows one connection at a time, so any +new connections will automatically terminate prior ones.

    + +

    12. Scheduling Recordings.

    + +

    The MythTV master backend is responsible for managing the schedule for +all TV tuner cards on the master and any slave. Its job is to search the TV +listing for the shows you have requested and assign recordings to the TV +tuner cards. If none of the shows that you've chosen overlap, it simply +records all of them. However, if there are shows where the beginning +and end times overlap, the scheduler follows rules that you've specified or +makes logical decisions about what would be best if you haven't expressed your +preference. Further, the "Upcoming Recordings" page allows you make specific +decisions about what you really do and don't want to record.

    + +

    12.1 Record Types +

    + +

    When you choose a show that you would like to record from the +Options Page, there are eight different types of rules to help the +scheduler find which showings you would like to record.

    +

    +

      +
    • Single Record -- record only this title at this specific time and +this station. This is the best way to be sure that a certain showing will +be recorded. However, if the TV listings change and the show is not broadcast +at that time, the show will not be recorded but will be marked as Not Listed +to let you know that you should investigate. +
    • +
    • Find One -- this will record a title once from any of the times +that appear in the TV listings. This is useful for recording a movie +or special that has multiple showings because it allows the scheduler +to choose one that doesn't conflict. It is not a good choice for +recording a single episode of a series because it records the first +available showing of the title without regard to the episode +information. +
    • +
    • Record Weekly -- this records a show whenever the title is listed +on the same channel, weekday and time. Note that if the TV station +changes the schedule for a special episode, it would not be +recorded. However, you can add a Single record for the special +episode. If there are no matching showings in the TV listings, +a Not Listed item will be added to your schedule for the next +time slot to let you know that you should investigate. +
    • +
    • Find Weekly -- this will record a title once per week from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each week but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the week. +
    • +
    • Record Daily -- this records a show whenever the title is listed +for the time and station on any day of the week. Here again, a show +will not be recorded if the time was altered by the station. If there +are no matching showings in the TV listings, a Not Listed item will be +added to your schedule for the next time slot to let you know that you +should investigate. +
    • +
    • Find Daily -- this will record a title once per day from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each day but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the day. +
    • +
    • Channel Record -- records one showing of each unique episode from +any of the times the title is listed on this station. This is perhaps +the most common rule to use for most shows. +
    • +
    • Record All -- records one showing of each unique episode from +any of the times this title is listed on any channel. This can be +useful if a station has sister stations where shows are rebroadcast +allowing the scheduler to record rebroadcasts on the other station +when the original airing cannot be recorded.
    • +
    +

    + +

    12.2 Scheduling Options +

    + +

    Priority

    + +

    By default, all shows you select have equal value to the +scheduler. There are a set of rules to make good choices when +two or more shows are in conflict. However, priority values let the +scheduler know what you prefer so that it can set the schedule based +on your preferences.

    +

    Initially, recording rule priority values are set to zero. You may choose +to leave everything at "0" and let the scheduler follow rules to guess +what you might prefer when there are conflicts. However, if you have +one or two favorite shows, you may want to increase the priority +value so the scheduler will know that you would prefer recording +these over other shows. You might use certain values to rate shows +so that all favorites are 2. good shows are 1 and extra 'filler' +shows are all -1 for example. You could sort each title on the "Set +Priorities" page to have a unique value so the scheduler can know +which show you'd prefer versus any other show. The choice and style +are entirely up to you. However, the more information you give to +the scheduler, the more likely it will make the choices you would +prefer in the first place.

    +

    The scheduler choices are based on the total priority for a showing by +adding up all priority factors that match the showing. By default, most +of these factors are "0" but you may use any combination to express your +likes and needs.

    +

    +

      +
    • Per record rule -- this is the "priority" selection in the "Scheduling +Options" section of the options page and this value is included for any +showings that match the recording rule. You may choose to only use these +values and not use the other factors for the sake of simplicity and clarity.
    • +
    • Per record type -- Setup->TV Settings->Recording Priorities->General allows +you to add to the priority based on the type. It may make sense to increase +the value for "Single" so that by default they have an extra advantage over +other shows. The default is +1. You may want to decrease the value for Find +rules so that they will be less likely to interfere with regularly scheduled +shows and will be more likely to record in a non-conflicting time instead. +The default is -1.
    • +
    • Per channel -- Setup->TV Settings->Recording Priorities->Channel Priorities +can be useful if you believe that you prefer any of the shows on certain +channels. This would give all shows on a channel an advantage by default.
    • +
    • Input priority -- in the "mythtv-setup" program, the "Input Connections" +section allows you to add additional priority in the "Input priority". +This is simply another priority factor but has an interesting effect. If a +card input has a higher value than the other cards, the scheduler will see +that you would rather record showings of episodes on this input rather than a +showing on other inputs. If you have multiple cards of different quality, +you may want to set input priority to encourage the scheduler to record +shows on your best card(s) whenever possible. This can also be useful if you +have multiple video sources which include the same stations. For example, +with digital and analog cable you could increase the digital cable input +preference by 1 to tell the scheduler that you want to record from the +digital channel whenever possible but the channel on the analog input could +still be used when the digital input is busy.
    • +
    • Custom Priority -- this allows you to add any specialized factors you +would like in order to influence scheduling decisions. See the +Custom Priority section below.
    • +
    + +For any single showing of any show you've chosen to record, these factors +are added together to find the "total priority". This is the priority that +the scheduler uses to decide which showings are given the first choice when +filling in the schedule.

    +

    The scheduling priority of a show may also be used to determine +auto-expiration of recordings when disk space gets full (see +Auto-Expire, below).

    + +

    Duplicates

    + +

    Singles will record without regard to duplicate matching.

    + +

    The standard recurring methods of All, Channel, Weekly and Daily use the +descriptive information in the TV listings to try to record only one showing +of each unique episode. However, This goal is sometimes complicated by the +fact that the stations may not include a description for a specific episode +but use a generic description for the series instead. When there is a +generic description, the default behavior is to assume that it may be an +episode that you have not seen and to record it for you. One of the +duplicate matching options is "Record new episodes only". If this is +selected, listing that have an original air date of more than 14 days +earlier are considered repeats and are not eligible to record. Generally, +generic episodes will be marked as repeats also.

    + +

    Because of generic episodes and other situations, MythTV offers an +alternative approach where shows may be recorded by choosing from multiple +showings even when the descriptive information is not reliable. All of the +"Find" record types look for matching titles in the listings. If there is a +showing with specific episode information and that episode has recorded +before, that showing is marked as previously or currently recorded. The +scheduler will then choose to record the earliest non-conflicting showing +from any of other remaining showings regardless of the descriptive +information. Generally, Find One is most useful for movies or specials and +the Find Daily and Find Weekly rules are best for news or current events +shows that are repeated. However, these may be useful in other situations +where the standard recording rules may not work correctly.

    + +

    Conflicts

    + +

    As you add more shows that you would like to record, the scheduler +will eventually encounter conflicts. If there are two shows at the +same time and you have two or more TV tuner cards, both shows will +record. However, if there are more shows than cards, the scheduler +will have to decide what it thinks it should not record based on the +information you have given. If you see an unexpected situation you +are not "stuck" with the scheduler's choice. You can still tell the +scheduler exactly which shows you do want to record and/or don't +want to record in any situation.

    + +

    Scheduling decisions

    + +

    Here are the actual decisions made by the scheduler as it fills in the +schedule.

    +

    +

      +
    • Currently recording beats not currently recording -- A recording +in progress can not be moved to another input or time so it "wins" +its current timeslot. +
    • +
    • Single, Daily, or Weekly rules with no match are marked Not Listed -- +If these or Overrides do not match the current listings because the +listings have changed, they are added to the schedule and marked to +indicate that they will not record. +
    • +
    • Rules that could record beat rules that can not record a showing -- +If two rules match the same showing of a program, a rule marked as inactive +or a showing marked as a repeat, for example, yield to the other rule. +
    • +
    • More specific record type is used in place of less specific -- If +two rules match the same showing of a program, preference is given to +Don't Record then Override, Single, Find One, Record Weekly, Find Weekly, +Record Daily, Find Daily, Channel and finally All. +
    • +
    • Higher total priority beats lower total priority -- This is the +core of the scheduling process. Episodes of the highest priority show +are placed on the first available input followed by the next highest +priority show and so on. +
    • +
    • Future start time beats past start time -- If there is an +episode in progress and also a later showing of the same episode, it +is better to record the complete episode. If there isn't another +showing, it will start recording immediately to record the remaining +portion. This should only happen if you add a new rule while the show +is in progress or if the master backend is started after the start time +of a scheduled show. +
    • +
    • More specific record type beats less specific record type -- If +two shows are on at the same time and have the same total priority but +different types they will be sorted by Single then Find One, Record +Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally +All. This only applies if the priorities are the same. +
    • +
    • If both start times have passed, later start time beats earlier start +time -- This attempts to miss the least amount of time. +
    • +
    • If neither start time has passed, earlier start time beats later +start time -- This helps assure that the earliest showing of an episode +has the advantage. +
    • +
    • Lower input id beats higher input id -- The scheduler fills in +open time slots on the first available input for the video source. The +next input is used when there is another show already placed for the +card of the first input. +
    • +
    • Older record rule beats newer record rule -- If two shows are still +equal after all of these other checks, the show whose record rule was added +first is preferred over a more recent addition. +
    • +
    • Postpone showings to resolve conflicts -- If Reschedule Higher +Priorities is set or if a conflict has the same priority as a show +that was scheduled at the same time, the scheduler will check to see +if a scheduled show can be moved to another input or later matching +showing without creating a new conflict so that the conflicting show +can be scheduled to record. +
    • +
    +

    + +

    Reschedule Higher Priorities

    + +

    Setup->TV Settings->Recording Priorities->General has a checkbox for +"Reschedule Higher Priorities" which tells the scheduler to try to be a +little smarter in certain situations. If this is checked, the scheduler will +look for situations where a show cannot record because all inputs for the +channel are used for higher priority shows. It will check to see if any of +the other shows could be recorded at another time so that the conflicting +show can be recorded in its place.

    +

    Generally, this is a good strategy but there are tradeoffs. If a higher +priority show is postponed, you will not get to watch it until it is +recorded in the later timeslot. There is also a risk that the TV listings +may change and the later showing may go away. In this rare case the higher +priority show may never record. On the other hand, if you do not use this +option you will miss recording some lower priority shows unnecessarily +unless you manually make similar changes.

    +

    By using Reschedule Higher Priorities, the scheduler will do a better job of +recording as many of your shows as possible when left unattended. It will +also be easy to see that shows have been marked to record at a later time. +You can then decide for yourself when you would prefer to record the first +showing by clicking "Record anyway".

    + +

    Controlling Your Schedule

    + +

    The Manage Recordings->Upcoming Recordings page is your control center +for the MythTV scheduler. Unlike other DVR systems, this one page gives you +all of the information and tools you need to see all of your alternatives +and make whatever adjustments you desire.

    +

    The upper half of the screen has a scrollable box listing items that match +your record rules sorted by time. The lower half shows the details for the +highlighted item. There are two 'views' available. Press "1" to include all +of the items that match record rules even if they do not need to be +recorded. Press "2" to focus on just the things that will record and items +that may need your attention. The message in the upper right-hand corner +will remind you when there are conflicts that would prevent one or more +shows from being recorded.

    +

    The items in the list are colored in the record color for things that +will record, white for things that may need attention, gray for those +that do not need to record and yellow when there is a time conflict. +Items at the top of the list may also be highlighted indicating that the +recording is in progress.

    +

    Along with the channels, start times and titles, the right-hand column has +a status code. Numbers indicate which card number has been assigned to +record the show. Letters are used to indicate the reason that something +will not be recorded. Just below the box is a short status message for the +highlighted item that indicates the type of record rule that was matched, +the "total priority" for this showing and a one or two word explanation of +the status code. If you press SELECT, you will see more information about +the status.

    +

    There are a few status codes that may require your attention. "C" indicates +that there are more overlapping shows to record than there are TV tuners to +record them. "L" indicates that the scheduler found that it may be better to +record a later showing of this episode. These states happen as a result of +your choices and should normally reflect your preferences. However, you may +notice situations where you would like to modify the scheduler's initial +choices.

    +

    The first thing you can do is to highlight an item and press INFO to +see the recording options page. From this page you can change the +record rule type, the duplicate matching rules, or raise or lower the +priority to resolve whatever problem you noticed.

    +

    Additionally, you can treat any individual showing as an exception that you +do want to record or don't want to record. To use these "override" features, +highlight the item and press SELECT. You will see a message explaining the +current status and at least an "OK" button to exit without making changes.

    +

    For items scheduled to record, there will be a button for "Don't record" +which will prevent recording this showing but will still allow the same +episode to record in the future. If there is episode description +information, you may also see a button for "Never record". This prevents +recording this showing and tells MythTV to remember that this is an episode +that you've seen or don't need to see if it is ever in the TV listings +again.

    +

    For items that are not scheduled to record, the message will describe the +reason and in the case of "C" or "L" it will include a list of the shows +that are scheduled to record instead. For any item that could potentially be +recorded there will be buttons for "Edit Options" and "Add Override". "Edit +Options" will allow you to change the options for the existing record rule +such as raising the priority so that the show will record. These changes +would apply to this and all future showings that match this record rule. +"Add Override" will allow you to set options that apply to the specific +showing without affecting the recurring record rule.

    +

    If you return to an override page after an override has already been set, +you will also see a "Clear Override" to undo your changes. This option makes +it very easy to try out some "what if" attempts when deciding on your best +strategy in a difficult situation.

    +

    For a recording in progress, there will be a "Change Ending Time" button. +This will take you to the options page for a Single or Override or create +an Override if it is a recurring rule. Here you can go to the Recording +Options section to change the program end time offset. If you extend the +end time so that it overlaps upcoming recordings, the schedule will change +to accommodate the new end time. This may cause a conflict or later showing +even for a show with higher priority. Therefore, it is a good idea to +check your schedule after changing the end time of a recording in +progress.

    + +

    12.3 Storage Options +

    + +

    Recording Profile

    + +

    Each recording rule can be configured with a different recording +profile. For example, colorful cinematography can be configured with a +"High Quality" profile, while 'talking heads' interviews shows can be +configured with a "Low Quality" profile. These recording profiles need to +be configured before using them (see +Recording, +above).

    + +

    Recording Group

    + +

    For organization of the "Watch Recordings" screen and the MythWeb +interface, recordings can be assigned into "recording groups".

    + +

    Storage Groups

    + +

    This allows you to select any special "Storage Groups" you may have +created to determine where recordings from this rule should be stored +on your disks. The "Default" storage group is always available.

    + +

    Playback Group

    + +

    This selects a set of pre-configured playback parameters which can be +created and edited in Setup->TV Settings->Playback Groups. When the +recording is played, the values from this playback group will be +used. This allows you to choose a default time stretch value, skip and +jump amounts appropriate for this type of television program.

    + +

    Auto-Expire

    + +

    MythTV will "autoexpire" old recordings to make room for new recordings +when disk space gets filled up. This option can be set to "Don't allow +auto expire" to prevent these recordings from being automatically deleted +when disk space fills up.

    + +

    The default setting is for all scheduled recordings to be eligible +for auto-expiration; this can be changed in the Settings->TV +Settings->General page by manipulating the "Auto Expire Default" +checkbox.

    + +

    The default auto-expire policy is "Oldest Show First"; the oldest +recordings are deleted first. The "Lowest Priority First" method +chooses to expire the lowest-priority recordings first.

    + +

    Episode Limit

    + +

    An episode limit can also be configured to limit the maximum number +of episodes recorded of a single series, to restrict that series' disk +usage. If this is set, you can further decide what to do when this +limit is reached; either stop recording that series, or to delete the +oldest episodes in favor of the new ones.

    + +

    12.4 Post Recording Processing +

    + +

    Commercial Flagging

    + +

    Select whether or not to automatically flag commercials for these +recordings. Commercial Flagging parameters can be set in +Setup->TV Settings->General.

    + +

    Transcoding

    + +

    Select whether or not to automatically transcode recordings to save +disk space. Before using this, you must first enable auto-transcode in +the recording profile and configure the transcoding parameters; see +Recording, above.

    + +

    User Jobs

    + +

    User Jobs allow you to configure up to 4 custom commands to run on +recordings. They can be configured in mythtv-setup. The following +tokens have special meaning when used in the User Job commands:

    +

    +

      +
    • %DIR% - the directory component of the recording's filename
    • +
    • %FILE% - the filename component of the recording's filename
    • +
    • %TITLE% - the title of the recording (e.g., name of the series)
    • +
    • %SUBTITLE% - the subtitle of the recording (e.g., name of the +episode)
    • +
    • %DESCRIPTION% - description text for the recording (from guide +data)
    • +
    • %HOSTNAME% - the backend making the recording
    • +
    • %CATEGORY% - the category of the recording (from guide data)
    • +
    • %RECGROUP% - the +recording group
    • +
    • %CHANID% - the MythTV channel ID making the recording
    • +
    • %STARTTIME% - the recording start time (YYYYMMDDhhmmss)
    • +
    • %ENDTIME% - the recording end time (YYYYMMDDhhmmss)
    • +
    • %STARTTIMEISO% - the recording start time in ISO 8601 format +(YYYY-MM-DDTHH:MM:SS)
    • +
    • %ENDTIMEISO% - the recording end time in ISO 8601 format
    • +
    • %PROGSTART% - the recording's start time (from guide data; +YYYYMMDDhhmmss)
    • +
    • %PROGEND% - the recording's end time (from guide data)
    • +
    • %PROGSTARTISO%, %PROGENDISO% - the recording's start and end +time in ISO 8601 format.
    • +
    +

    + +

    12.5 Advanced Recording Options +

    + +

    Creating Power Search rules with Custom Record

    + +

    MythTV's "Custom Record" feature gives you unlimited control for creating +specialized search recording rules to meet your needs. It allows you to +choose your criteria to search for matching shows based on any of the +information in the program listings, channel information, time functions and +more. This goes beyond the capabilities of any other DVR system and it is +unlikely that this level of scheduling customization will ever be available +in any commercial DVR system.

    + +

    Getting Started

    + +

    Go to Schedule Recordings->Custom Record. This page, helps you build a +database search one clause at a time. Each added clause further limits +which showings will be matched in the TV listings. You can test the +search at any time and when you are done, you can save your search as a +recording rule.

    +

    To familiarize yourself with how you can create custom rules, create a +simple rule to record "Nova" only in primetime.

    +

    The first item at the top of the page allows you to edit an existing rule +or create a new rule. Leave it on "<New rule>". Arrow down to the +third item which says "Match an exact title". Right and left arrows would +allow you to select any of several prefabricated pieces or full examples +but leave it on the default for now. Arrow down to "Add this example +clause" and press SELECT (Enter or Space on a keyboard). The large text +box should now show: +

    +
    +     program.title = 'Nova'
    +
    +
    + +As you have probably guessed, this says that we want to search for all +programs with the title "Nova" regardless of the time, day, channel, etc.

    +

    If you do not receive a PBS station that carries "Nova" or would like to use +another title, edit the title by pressing the down arrow to highlight the +text box and right arrow over the the word "Nova". If you are using a +keyboard you can simply delete the four letters and type a different title +between the quotes. With a remote control, you can do 'cell phone' style +text entry with the number pad. The delete key is the "X" in the grouping +for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You +can press ENTER in the text box to popup a virtual keyboard.

    +

    Note: the text box honors many familiar Emacs control keys. It is also +possible to cut and paste text into the text box so you can edit with a +favorite editor or insert a rule sent in email or from other sources.

    +

    In any case, choose a title that is shown both in primetime and late night +or daytime. Next, click the "Test" button. You should see a list of the +upcoming episodes for "Nova" just as if you had clicked the Upcoming +button for "Nova" elsewhere in MythTV.

    +

    Press ESC to go back to the Custom Record page. Move to the example +selector then press the right or left arrows until you find "Only in +primetime". Click "Add this example clause". You should now see: +

    +
    +            program.title = 'Nova'
    +            AND HOUR(program.starttime) >= 19
    +            AND HOUR(program.starttime) < 23
    +
    +
    + +Click "Test". You should now see a shorter list with only the showings that +begin between 7PM and 11PM. To create a rule for this, press ESC to go back +to the custom page and move to "Rule Name:" then type "Nova" or anything +else you would like. This is only a label and will not affect the search +results. Once a name has been entered, the "Record" button will light up. +Click this to enter the recording options page. If you named it "Nova" the +title will say "Nova (Power Search)". Set whatever options you would like +then click "Save these settings". You now have a special rule to record +"Nova" but only when it is shown in primetime.

    +

    You can make further modifications to this rule by returning to the Custom +Record page then press the right or left arrow keys on "Edit Rule:" until +you find "Nova". You can experiment and test but the saved rule will not +be updated until you click "Record" then "Save these settings".

    +

    To remove this, or any other rule, you can go to the "Recording Priorities" +page, arrow down to the title, press Enter and change the the recording type +to "Do not record this program" then "Save these settings".

    + +

    How it Works

    + +

    MythTV stores TV program information in a database and uses the Structured +Query Language (SQL) to access the data. Information about each TV program +is stored in the 'program' table and information about each TV station you +receive is stored in 'channel'. These two tables are used in the scheduler +queries and their columns are available to be used in your rules. The rules +you create are stored in 'record'.

    +

    Normal rules in MythTV simply match the title in the rule with the titles +in the 'program' table. MythTV also has search rules for "Titles", +"Keywords" and "People". These store the key phrase in the description +column of the rule and includes them in specialized SQL replacements for +the normal title check. There is also a type called "Power Search" which +takes the raw SQL in the description as the replacement for title +matching.

    +

    Custom Record is a tool to help you build valid SQL for Power Search rules. +You do not need to be a SQL expert to use Custom Record because the +examples are known to work correctly and are usually self-explanatory so you +can choose the pieces you need then modify them. Many powerful solutions to +unique problems are possible by combining the examples. With some creativity +and some knowledge of SQL, the possibilities are limitless.

    + +

    Common Tricks and Tips

    + +

    The example clauses marked "complete example" are actual rules that have +been used to address specific problems. You may find that some of these +are useful for you as-is or with slight modifications. These show off how +powerful custom rules can be but there are also several simple idioms that +you may find useful for many of the shows you would like to record.

    +

    Wait for a known title -- If there is a movie that you anticipate will be +televised in the coming months but is not yet in the listings, you can +select "Match an exact title", edit the movie title, click "Record" then +choose "Record one showing of this title". The rule will wait weeks, months +or years until this title shows up in your listings then it will record one +showing. These rules have no impact on the scheduler throughout the day and +only take a tiny fraction of a second when the master backend starts or when +the listings are updated.

    +

    Silence series out of season -- "Celebrity Poker Showdown", for example, +will have new episodes for a while then long periods where reruns are shown +dozens of times per week. By checking the previously shown flag you can +create a rule that will only match new episodes. Therefore, your schedule +won't be polluted with dozens of entries marked as "Repeat" or "Previously +Recorded". +

    +
    +       program.title = "Celebrity Poker Showdown"
    +       AND program.previouslyshown = 0
    +
    +
    + +This allows you to keep rules for your favorite shows that are dormant while +out of season but will spring back to life when new episodes appear.

    +

    Choose showings on certain days -- Several cable stations will show their +highest rated shows a dozen on more times per week. However, the scheduler +only needs two or three choices to do a good job of making a flexible +choice. +

    +
    +       program.title LIKE "Celebrity Fit Club%"
    +       AND DAYNAME(program.starttime) = "Sunday"
    +
    +
    + +This says to choose any showing of an episode that hasn't been recorded +when it appears on Sunday. This prevents all the other showings during the +week from being listed in the schedule.

    +

    Notice the word "LIKE" and the "%" at the end. This does wildcard matching +so that this would match even if the title ended with "2". "III" or +":Revenge of the Snapple Lady". This can be useful where the title may +change from one season to the next like "Survivor: %", "Big Brother%" or +"The Amazing Race%".

    + +

    Working with SQL

    + +

    As you experiment, it is possible that you may misplace a quote or mistype a +word. If there is a mistake when you press "Test" or "Record" you will see +an error message returned from the database. This will usually give you a +good idea about what needs to be fixed. However, for more subtle MySQL +syntax errors, you can find more information in the documentation at +http://dev.mysql.com/doc/mysql/en/. This contains a lot of +information that can be useful for Power Search rules such as the "Date and +Time Functions". There are many other good resources for SQL on the Web.

    +

    While the example clauses demonstrate how to use many of the data columns, +you can get a more complete list of all the columns that are available by +using a MySQL client program: +

    +
    +$ mysql -u mythtv -pmythtv mythconverg
    +mysql> describe program;
    +mysql> describe channel;
    +
    +
    + +This will show the names of all of the columns along with their type and +default value. Most are easy to understand but a few need some explanation +in order to use them effectively with Power Search. +
      +
    • "program.category_type" holds one of these exact four strings: "movie", +"series", "sports" or "tvshow". +
    • +
    • "program.airdate" is a string representing the year of release for +movies and may have no meaning for other types of shows. +
    • +
    • "program.stars" is a floating point number from 0.0 to 1.0. On a +four star scale, 1.0 would be four stars, 0.75 would be three stars and so +on. +
    • +
    • "program.originalairdate" if provided is the date when a show +was, or will be, first televised. This may be useful for finding +episodes before or after a certain date such as finding just the +original series of "Battlestar Galactica". +
    • +
    • "program.previouslyshown" is a column created by MythTV to try to +determine if a showing is more than 14 days after its original air date or +if the show was marked as a repeat and did not have a date for the first +airing. If this is "0" it usually means that this is a brand new show or a +rebroadcast within the first two weeks. +
    • +
    • "program.generic" is a column created by MythTV to try mark +showings for a series where the specific episode information is not +included. When these generic showings appear, it is impossible for the +system to determine if they are repeats of the same episode(s) or if +they are all different episodes. +
    • +
    • "program.first" is a column created by MythTV to mark the first +showing in the current listings for each episode, movie or special. +Choosing to match only the "first" showing can be useful for sports +that are brodcast live then repeated. +
    • +
    • "program.last" is a column created by MythTV to mark the last +showing in the current listings for each episode, movie or special. +If a showing is marked both "first" and "last" then it is the only +showing of that program in the current TV listings. +
    • +
    • "program.programid" is the Tribune Media Service database record +identifier for each program description. In general, these start with a two +letter prefix, MV, EP, SP or SH that correspond to the +"program.category_type". For most, the last four digits are "0000" except +EP where the last four digits are the episode number in the series. Note +that these are generated by TMS and not the show's producers but they are +usually in the same order as the original air dates for the episodes. +
    • +
    • "program.videoprop" also "audioprop" and "subtitletypes". +These columns contain bit flags for a variety of attributes that +may be associated with a program. These are filled with information +offered by the TV listings provider. However, your listings source +will not have information for all of the available flags. Therefore, +some of these may not be useful for your search rules. This information +is organized in "sets" and the MySQL function FIND_IN_SET() can be used +to test for any of these flags. For example: +
      +
      +FIND_IN_SET('SURROUND', program.audioprop) > 0
      +
      +
      + +would be true for the programs where the surround sound bit is present. +To see all of the available attribute names: +
      +
      +$ mysql -u mythtv -pmythtv mythconverg
      +mysql> SHOW COLUMNS FROM program LIKE '%prop'\G
      +mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G
      +
      +
      +
    • +
    + +Finally, if you are doing something very experimental and a column is not +giving you the results you had anticipated, you can always check the MythTV +source code to see exactly how a column is used. The open source for MythTV +is available from +http://www.mythtv.org/ .

    + +

    12.6 Scheduling with more than one Input +

    + + +

    MythTV is designed to allow recording television programs from one or more +service providers, or video source, on one or more video input from each +provider. Some inputs may not be allowed to record at the same time as +each other while others may record simultaneously.

    +

    A television station may be broadcast on more than one channel from one +provider or may be available on channels from two or more providers. If a TV +station is available from more than one source, the video quality or type of +broadcast may differ. Therefore, MythTV allows you to control how you would +like the scheduler to select the best channel and input for a show which is +available on more than one input or more than one channel.

    + +

    Mutually Exclusive Inputs

    + +

    A single TV capture card may have video connections to more than +one of its inputs and each input may be from a different service. The card +may only be allowed to record from one of these inputs at one time because +there is only one encoder on the card that actually captures the content.

    +

    +

    + + + +
    +

    +

    These are mutually exclusive meaning that only one input or the other +may record at a given time but not both.

    +

    Usually, inputs on different cards can record at the same time +but two or more inputs on the same card cannot. However, there are cases +where inputs on different cards should not be allowed to record at the +same time, for example, a firewire card and s-video analog card connected +to the same set top cable box.

    +

    +

    +
    +|
    +|   coax +--------------+ firewire    ------------------+
    +|     .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV
    +|     |  |HD/Cable STB  |=--.          +-----||||||||||||
    +|     |  +--------------+   | s-video ------------------+
    +|     |                     `---------=|        input 2 | Digital
    +|wall |               coax             | Card 2         |
    +|=---=^=------------------------------=|        input 3 | Cable
    +|                                      +-----|||||||||||| 
    +
    +
    +

    +

    Input 1 and input 2 receive content from the same set top box and the +channels can not be tuned independently. Therefore only one of these two +inputs should be used at any given time. The solution is to create an "Input +Group" with mythtv-setup in "Input connections". Including these +two inputs in the same Input Group will tell the scheduler that these are +mutually exclusive and may not record at the same time. Inputs 2 and 3 are +automatically mutually exclusive because they are on the same card so there +is no need to create an Input Group for these inputs.

    +

    Cards such as the Hauppauge PVR-500 are able to record as two cards +simultaneously because it has two MPEG-2 encoders and each encoder appears +as a separate device. DVB cards may be allowed to capture content from more +than one channel at a time if the channels are in the same MUX.

    + +

    Stations, Channels and Video Sources

    + +

    Although we may be accustomed to thinking of a broadcast station and its +channel number as being synonymous, stations and channels are very different +things. A "station" is in a building with wires and employees. A "channel" +is a carrier frequency or digital ID that carries a broadcast stream. The +same TV station may be broadcast over different frequencies in different +cities or by different providers in the same city. The same frequency will +carry different stations in different cities. In the digital realm of DVB +and ATSC (HDTV), it is even possible for a single frequency to carry +multiple program streams but each of these streams of content are actually +different channels that the receiving devices can 'tune' to independently.

    +

    +

      +
    • Station: building
    • +
    • Channel: frequency
    • +
    +

    +

    In MythTV, a "video source" is a set of channels from a provider, or over +the air, that can be received by an input. The set defines the channels and +the broadcasters primarily associated with each of those channels. If you +have more than one device or cable from the same provider connected to more +than one card and input, you only need to create one video source in +mythtv-setup then associate that one source with each of these connected +inputs. This will let your MythTV system know that the same channels and +their TV listings are available to be recorded from any of these inputs.

    +

    For example. A MythTV system may have two capture cards. Both have a cable +connected to the coaxial connectors. These cables carry the local cable TV +service. In mythtv-setup, the user should create one "Video source" called +"Cable", for example. Under "Input connections", "Cable" should be +associated with each of the two tuner inputs. The scheduler will then know +that any program on one of the channels from the "Cable" source could be +recorded by either card from the card's tuner input.

    +

    You need to create a different video source for each provider or service +that has a different set of channels. Each input with a connection to that +service should be associated with the video source for that service so the +system will know which set of channels are available for each of your active +inputs.

    +

    Let's say that this user also has one digital cable set top box. The digital +cable service carries channels that are not available over basic cable. The +user would create another source called "Digital". This set top box is +connected to the second card by S-Video so under "Input connections", +"Digital" is associated with the S-Video input of card 2. The system would +then know that programs on channels from the Digital source can only be +recorded from this input. Further, the scheduler understands that it can +only record one show at a time from card 2 so it can assign Cable or Digital +shows to the card but not both at the same time.

    +

    Some TV stations may be broadcast over a channel from the Cable source and +also broadcast over a channel from the Digital source. Note that two +channels carrying the same primary station may not have the same TV listings +due to carrying the primary station part time, including local programming +exclusive to one of the channels, the channels may be in different +timezones, etc. Listings information must be associated with each channel +even if two or more channels report that they carry the same station.

    + +

    Order of Inputs

    + +

    By default the scheduler chooses the first (lowest numbered) input which has +a showing of the scheduled program as it fills the schedule. If a lower +priority show is on at the same time as a higher priority show that has been +assigned to input 1, then input 2 will be used next and so on. Therefore, +configure your best card and input first and next best card and input +second. There may be differences in the type or brand of capture card, +signal quality from the cable, system resources such as disk space, CPU, +etc. By configuring your best input first, more recordings, and your highest +priority recordings, will use that input.

    +

    A common situation is that a newer and better card is added last. For +example, you may initially setup your system with two analog cable cards and +then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is +shown in HDTV on an NBC HD channel, the scheduler would still prefer analog +inputs 1 and 2 over the new HD input 3.

    +

    So, if you'd like the scheduler to prefer a new source, the simplest thing +is to run mythtv-setup and "Delete all capture cards" then enter +your cards and inputs in your preferred order. This will not remove your +sources and channels - you want to keep those and only renumber your cards +and inputs. In this example, once the changes have been made and the Master +Backend is restarted, the scheduler would then choose "The Apprentice" in HD +on the new input 1 and only use the analog inputs (now numbered 2 and 3) +when the HDTV input was occupied with another show.

    + +

    Matching Callsigns

    + +

    If a recording rule is a type that can record from any channel, "The +Apprentice" would match for any channel that shows episodes which may +include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel +rules, "The Apprentice" would only match showings on the selected station as +identified by the "callsign". For example, KVBC is an NBC affiliate on +channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same +station. If a Single record rule was set for "The Apprentice" on KVBC +channel 3, it could not record this showing from KVBCDT on 733. If 733 was +chosen when the rule was saved, channel 3 could not be used to record.

    +

    However, the "Channel Editor" in mythtv-setup can be used to change the +Callsign for channel 733 to "KVBC". MythTV would then understand that both +of these channels are from the same broadcast station. Assuming the HDTV +input was input number "1", "The Apprentice" would record on 733. If, +however, this HDTV input already had a higher priority show assigned to it +in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on +input 2.

    +

    Having two channels with the same callsign may affect how program +information is shown in mythfrontend. If two sources have the same callsign +and channel number, the program guide and program lists will only show one +instance of the channel number and callsign. If the same callsign is on two +different channel numbers, both will be shown and if two sources have +different callsigns with the same channel number, both of those will be +shown.

    +

    Continuing with the example above, the Electronic Program Guide would +include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also +included in the Digital cable source, the EPG would still include just one +line for "3 KVBC" even though there are two different channels, Cable and +Digital, with this identification. Regardless of how these are displayed and +which "KVBC" channel you select to add a rule to record "The Apprentice", +the scheduler will pick the best channel, source and input to record "The +Apprentice" on "KVBC".

    + +

    Using Priorities to Prefer an Input

    + +

    The fundamental concept to keep in mind is that the MythTV scheduler will +choose the lowest numbered input available when showings have the same +priority. If there are factors that cause two showings of the same show to +have different priorities then the higher priority showing will be +considered before the showings with lower priority.

    + +

    Input Priority

    + +

    "Input Connections" in mythtv-setup includes a box to set "Input priority" +which defaults to "0". If a value is set, that amount will be added to the +"total priority" for showings on that input. This can be used to influence +using favored cards or not using less favored cards unless necessary.

    +

    Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who +Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The +scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 +at 8:00pm. If the input priority for the input on card 2 was changed to -1, +"Who Cares" would have a total priority of -2 for showings on card 1 and -3 +for showings on card 2. The scheduler would assign "The Apprentice" to card +1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is +available. If there was another higher priority show at 11pm, the next best +choice for "Who Cares" would be card 2 at 8pm with the priority -3.

    +

    Card 1 and 2 have input priority "0":

    +

    +

    + + + +
    +

    +

    +

    +
    + Time  Title     Priority  Card  Status
    + 8:00  The Apprentice  +3  1     Will Record
    + 8:00  Who Cares       -2  2     Will Record
    +11:00  Who Cares       -2  1     Earlier Showing
    +
    +
    +

    +

    Card 2 with input priority "-1":

    +

    +

    + + + +
    +

    +

    +

    +
    + Time  Title     Priority  Card  Status
    + 8:00  The Apprentice  +3  1     Will Record
    + 8:00  Who Cares       -3  2     Later Showing
    +11:00  Who Cares       -2  1     Will Record
    +
    +
    +

    +

    Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.:

    +

    +

    + + + +
    +

    +

    +

    +
    + Time  Title     Priority  Card  Status
    + 8:00  The Apprentice  +3  1     Will Record
    + 8:00  Who Cares       -3  2     Will Record
    +11:00  The Daily Show  +1  1     Will Record
    +11:00  Who Cares       -3  2     Earlier Showing
    +
    +
    +

    +

    Note the two different effects, each of which may be what you desire +depending on circumstance. If input priorities are equal, shows will record +at the earliest time if any input is available. If input priorities differ, +shows may be postponed to a later time in order to record on the best input.

    + +

    Channel Priority

    + +

    Priority can be added for individual channels (remember, frequencies from a +video source, not stations). This can be used to tell the system that you +generally prefer the content of the station on a channel over the formats of +other stations. You may want to raise the priority for ESPN, SciFi, Comedy +Central or lower the priority for CSPAN, CourtTV, etc. If the same station +is on two different channels, you can use channel priority to have the same +effect for these channels as input priority would have for whole inputs.

    +

    For example, say CNN is on analog channel 20 and there is an HD CNN on 750. +You may not want to tie up the HD input for news originating in standard +definition. Under TV Settings->Recording Priorities->Channel Priorities you +could set channel 750 to -1. The scheduler would then prefer to record CNN +shows on any analog channel 20 before considering using 750 only when there +are no analog inputs available.

    + +

    Preferred Input

    + +

    For an even finer grain of control, there is a per rule option to specify +which input should be preferred for showings that match the rule. By +default, this adds +2 to the priority for showings on the specified input.

    +

    For illustration, let's say there will be a Space Shuttle launch on CNN that +will be broadcast in high definition. Adding a rule to record the launch +with priority "0" should default to channel 20 on input 2. Channel 750 would +have this at -1 due to the channel priority set in the previous example. If +on the recording options page for this rule, the "Scheduling Options" had +the input set to prefer the HD input on card 1, then the showing on channel +750 for this input would be increased in value by +2 for a total of +1 and +would be the best choice for this launch coverage. While this one rule +would prefer the HD input with channel 750, all other rules that match shows +on CNN would still prefer channel 20.

    +

    Note that this will not work properly if the preferred input priority does +not out weigh differences in input and channel priorities. The value of the +priority boost when this option is chosen defaults to +2 but can be modified +in TV Settings->Recording Priorities->Set Recording Priorities.

    + +

    HDTV Priority

    + +

    In the preceeding fictious example, the Space Shuttle launch is broadcast in +high definition and a preferred input is selected to give preference to the +HD input. However, TV listings from zap2it.com through the DataDirect +service may allow this to work without having to use this per rule option.

    +

    In Settings->Recording Priorities->Set Recording Priorities there is an +option for "HDTV Recording Priority". This value will be added automatically +if the listings for the show have the "hdtv" flag set. DataDirect will set +this flag for shows known to be broadcast in HDTV on HD channels. However, +the flag is not set for standard definition channels. This is another +example of the listings being different for the same station on a different +channel. If the HDTV priority is set to "+2", the shuttle launch would +automatically have a total priority of +1 so that channel 750 would be +preferred over channel 20 for this HDTV broadcast.

    +

    Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2":

    +

    +

    + + + +
    +

    + +

    Custom Priority

    + +

    +

    + + +New for MythTV 0.21 +
    +

    +

    While Input, Channel, and HDTV Priority can be used for indicating a +preference for certain programs and inputs, there may be circumstances that +cannot be resolved easily with these standard features. MythTV version 0.21 +includes a feature for "power priority". The Custom Priority editor in +mythfrontend's "TV Settings" screen is similar to Custom Record, however, +Custom Priority allows you to create specialized power priority factors to +influence scheduling decisions.

    +

    For example, the 'program.closecaptioned' flag can be used in a +similar way as the 'program.hdtv' flag.

    +

    +

    +
    +Priority Rule Name: Closed Captioned priority
    +Priority Value: 2
    +program.closecaptioned > 0
    +
    +
    +

    +

    This will raise the priority of shows marked with "CC" over those that are +not by applying the "Priority Value" whenever the SQL fragment evaluates to +true. If the expression evaluates to false for a showing, the "Priority +Value" is not applied.

    +

    +

    +
    +Priority Rule Name: Priority when shown once
    +Priority Value: 1
    +program.first > 0 AND program.last > 0
    +
    +
    +

    +

    The "first" and "last" flags for an episode will only be set for the +same showing when there is only one showing of that episode in the +current TV listings. This rule would raise the priority in these cases +so that these shows would have an advantage to record in their only +available time slot.

    +

    +

    +
    +Priority Rule Name: Input 1 signal quality
    +Priority Value: -1
    +cardinput.cardinputid = 1 AND
    +channel.channum IN (3, 5, 39, 66)
    +
    +
    +

    +

    A common issue with two or more analog capture cards is that one of +the cards may have more interference on some channels than the same +channels on other cards. This example gives a disadvantage to the +channels in this list but only for the first input. Therefore, a show +on channel 39 would choose input 2 or 3 if possible but for channels +not in this list, input 1 is still the first choice.

    +

    The Custom Priority editor includes many example fragments and complete +examples that can be used or you can create your own to suit your needs.

    + +

    13. MythPlugins.

    + +

    MythTV has a rich set of plugins available. Once you have downloaded +the tarball, untar it and run the configure script:

    +

    +

    +
    +$ tar -xjf mythplugins-0.21.tar.bz2
    +$ cd mythplugins-0.21
    +$ ./configure --help
    +
    +Usage:   configure [options]
    +Options: [defaults in brackets after descriptions]
    +NB:      all --enable-* options can be reversed with --disable-*
    +
    +Generic options:
    +  --help                   print this message
    +  --enable-all             Enable all options
    +  --enable-opengl          enable OpenGL (Music and Gallery) [default=no]
    +
    +MythBrowser related options:
    +  --enable-mythbrowser     build the mythbrowser plugin [default=yes]
    +
    +MythDVD related options:
    +  --enable-mythdvd         build the mythdvd plugin [default=yes]
    +  --enable-transcode       enable DVD ripping and transcoding [default=no]
    +  --enable-vcd             enable VCD playing [default=no]
    +
    +MythGallery related options:
    +  --enable-mythgallery     build the mythgallery plugin [default=yes]
    +  --enable-exif            enable reading of EXIF headers [default=no]
    +
    +MythGame related options:
    +  --enable-mythgame        build the mythgame plugin [default=yes]
    +
    +MythMusic related options:
    +  --enable-mythmusic       build the mythmusic plugin [default=yes]
    +  --enable-fftw            enable fftw visualizers [default=no]
    +  --enable-sdl             use SDL for the synaesthesia output [default=no]
    +  --enable-aac             enable AAC/MP4 audio file decompression [default=no]
    +
    +MythNews related options:
    +  --enable-mythnews        build the mythnews plugin [default=yes]
    +
    +MythPhone related options:
    +  --enable-mythphone       build the mythphone plugin [default=yes]
    +  --enable-festival        enable festival TTS Engine [default=no]
    +
    +MythVideo related options:
    +  --enable-mythvideo       build the mythvideo plugin [default=yes]
    +
    +MythWeather related options:
    +  --enable-mythweather     build the mythweather plugin [default=yes]
    +
    +
    +

    +

    The sections detailing configuration of the plugins assume that you are +already in the ~/mythplugins-0.21/ directory.

    +

    Note that a single configure script now does configuration for all +modules. By default, it will compile all modules. If you do not wish to +compile a module, either because it is of no use to you, or you do not have +the prerequisites, the simplest course of action is to go through the +various sections below, satisfying the prerequisites, and then compile all +modules at once.

    +

    For example, you would only like to compile and install MythGallery and +MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG +file to present additional information onscreen. For MythMusic, you would +like to enable support for the opengl and FFT visualizations. The command +line would look like:

    +

    +

    +
    +$ cd ~/mythplugins-0.21 
    +$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft
    +$ qmake mythplugins.pro
    +$ make
    +$ su -
    +# make install
    +# exit
    +$
    +
    +
    +

    +

    For simplicity, the examples below will disable compilation of all other +modules other than the one being discussed.

    + +

    14. MythWeb.

    + +

    MythWeb allows you to use a web page to control various aspects of your +MythTV system. MythWeb is a separate application, but it's dependent on +MythTV being installed and operational.

    + +

    14.1 Installation and prerequisites +

    + +

    Mythweb is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. The next step depends on whether your distribution has a web server +and if you have PHP support.

    + +

    Mandriva

    + +

    Mandriva has apache and PHP pre-packaged, so +installation is quite simple.

    +

    +

    + + +NOTE: Mandriva 9.1 users, perform the following: +
    + +
    +
    +# urpmi apache2 apache2-mod_php php-mysql
    +# chkconfig --level 345 httpd on
    +# /etc/rc.d/init.d/httpd restart
    +
    +
    +

    + +

    14.2 Completing the installation +

    + +

    +

    +
    +$ cd ~/mythplugins-0.21/mythweb
    +$ su
    +# mkdir /var/www/html/mythweb
    +# cp -r . /var/www/html/mythweb
    +# exit
    +$ 
    +
    +
    +

    +

    By default, MythWeb uses an Apache .htaccess file to restrict +access to the website and to configure some variables.

    +

    To create the password file for Apache (if your system doesn't already have +one), you could do something like this: +

    +
    +# cd /var/www
    +# htpasswd -c htpasswd mythtv
    +New password:
    +Re-type new password:
    +Adding password for user mythtv
    +
    +
    +

    +

    See the man page for htpasswd for more examples.

    +

    To access the web page, open a web browser and use http://[name or ip +address]/mythweb/

    +

    +

    + + +NOTE: Make sure that you have a trailing slash on the URL, +otherwise you will get a 404 Page not Found error. +
    +

    +

    14.3 Resetting the key binding table +

    + +

    MythWeb allows you to configure which keys are bound to which actions +within MythTV. If you'd like to reset this back to the default, execute the +following command: +

    +
    +$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg
    +
    +
    +

    +

    14.4 Resetting the theme. +

    + +

    If you find yourself wedged into a theme that isn't working, open your +web browser and go to site: +http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes

    +

    15. MythGallery.

    + +

    MythGallery is a photo and slideshow application. MythGallery is a +separate application, but it's dependent on MythTV being installed and +operational.

    +

    15.1 Installation and prerequisites +

    + +

    MythGallery is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

    +

    There are a number of transitions available, some requiring OpenGL +support. You will also need to install a TIFF library. Under Mandriva, you +would perform the following command: +

    +
    +# urpmi libtiff3-devel
    +
    +
    + +Once you have satisfied the prerequisites for your distribution, install the application: +
    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-opengl --enable-mythgallery
    +$ qmake mythplugins.pro
    +$ make
    +# su
    +# make install
    +# exit
    +$ 
    +
    +
    + +The configuration for MythGallery is accessed through the main Setup option +in mythfrontend. Make sure you set your pictures directory to wherever +you're storing your photos.

    +

    The controls for MythGallery can be found in the README that comes with the +application.

    +

    15.2 Using MythGallery +

    + +

    When you first start MythGallery, you will see a thumbnail view of any +folders and pictures in the Gallery Directory you specified in setup. If +this is the first time you have accessed this directory, the thumbnails will +be generated on the fly. If the Gallery Dir is writable, these thumbnails +will be cached thus speeding up future access. On the left is a greyed-out +menu of options.

    +

    Use the arrow keys to select a folder or picture to open/view with the +Select key, or use the Menu key to toggle access the menu on the left. The +menu options are as follows: +

      +
    • Slideshow - Will cycle through all the pictures in the current folder. +The currently selected item must be a picture (not a folder) for this to +work. It does not currently traverse subfolders.
    • +
    • Rotate CW - Rotate the current image 90 degrees in the clockwise +direction. This change persists if the current directory is writable.
    • +
    • Rotate CCW - As above except the direction of rotation is counter(anti) +clockwise.
    • +
    • Import - Import pictures into your Gallery Dir. This option is +described in the next section.
    • +
    • Settings - Access the MythGallery settings screen.
    • +
    +

    +

    15.3 Importing Pictures +

    + +

    The import path in the setup dialog is a colon separated list of +directories and/or executable files. When the import key is pressed, a new +directory (the destination directory) under the current directory will be +created and the import path will be searched. If the item in the import +path is a directory (the source directory), the contents of that directory +will be copied to the destination directory. If you would like the source +directory to be that of a removable device, it might be a good idea to use +autofs. See the automount howto at +www.linuxdoc.org for info on how to get it working.

    +

    If the item in the import path is an executable file, MythGallery will +attempt to execute it with the destination directory as its sole argument. +Be careful when using executable scripts that the script runs unattended +(doesn't need user intervention) and returns properly, otherwise it could +create the appearance of MythGallery hanging (e.g. running +smbclient and prompting for password). Also be sure that scripts +have executable permissions set.

    +

    Here is an example script that a user may want to run +on import: +

    +
    +#!/bin/csh
    +
    +if ($#argv == 0) then 
    +        echo "Usage: $0 dest_dir" 
    +        exit 
    +endif 
    +
    +cd $argv[1]
    +
    +# get stuff over the network
    +wget http://www.somesite.dom/dir/file1.jpg 
    +wget http://www.somesite.dom/dir/file2.jpg
    +wget http://www.somesite.dom/dir/file3.jpg
    +
    +# stuff that requires manual module loading and/or fs mounting
    +modprobe camera_module
    +mount /dev/camera /mnt/camera
    +cp /mnt/camera/* $argv[1]
    +umount /mnt/camera
    +rmmod camera_module
    +
    +# perform some processing
    +foreach pname (`ls *.jpg`)
    +        jpegtran -flip vertical $pname > $pname.new
    +        mv $pname.new $pname
    +end
    +
    +
    +

    + +

    16. MythGame.

    + +

    MythGame can used as a frontend to start any emulator that your host OS +runs. This is an example of how to set up xmame on Linux. +http://www.mameworld.net/ is +an excellent resource for all things mame.

    +

    Installation overview: +

      +
    1. Setup directory structure
    2. +
    3. Download and install xmame
    4. +
    5. Download and place extra files (artwork/catver.ini/etc..)
    6. +
    7. Download and install MythGame plugin
    8. +
    9. Setup xmame in MythGame
    10. +
    11. Hints
    12. +
    +

    +

    16.1 Setup Directory Structure +

    + +

    To keep things organized, create the following directories for xmame to use +in /usr/local/share/xmame: hiscore, roms, and snaps.

    +

    +

    +
    +$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps}
    +
    +
    +

    + +

    16.2 Download and Install xmame +

    + +

    NOTE: There may be pre-packaged versions of xmame +available for your distribution. Check +http://x.mame.net/download.html for the latest version.

    +

    Download the source to xmame from +http://x.mame.net/download/xmame-0.103.tar.bz2

    +

    +

    +
    +$ wget http://x.mame.net/download/xmame-0.103.tar.bz2
    +$ tar -xjf xmame-0.103.tar.bz2
    +$ cd xmame-0.103
    +
    +
    +

    +

    Edit the Makefile with your favorite editor. Adjust the options as required for your system. +

    +
    +$ joe Makefile
    +
    +
    +

    +

    Then make and install xmame +

    +
    +$ make
    +$ su
    +(enter password)
    +# make install
    +# exit
    +
    +
    +

    +

    After mame has been installed, we need to create some defaults. +

    +
    +$ mkdir ~/.xmame
    +$ cp docs/xmamerc.dist ~/.xmame/xmamerc
    +
    +
    +

    +

    Because some ROMS work better with different display toolkits, or possibly +even older versions of xmame, it's convenient to keep all of your +xmame binaries and to rename them to include the version number. +MythGame allows you to match individual roms to preferred binaries.

    +

    +

    +
    +$ su
    +(enter password)
    +# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11
    +# exit
    +
    +
    +

    +

    NOTE: Depending on how you compiled xmame, you may have +xmame.X11, xmame.SDL or xmame.xgl based on what +display toolkit you used. Also, you may need to remove and recreate +xmamerc after upgrading since some of the default options may have +changed.

    +

    Edit ~/.xmame/xmamerc to include your paths. +

    +
    +### Fileio Related ###
    +rompath                         /usr/local/share/xmame/roms
    +snapshot_directory              /usr/local/share/xmame/snaps
    +cheat_file                      /usr/local/share/xmame/cheat.dat
    +hiscore_file                    /usr/local/share/xmame/hiscore.dat
    +hiscore_directory               /usr/local/share/xmame/hiscore
    +history_file                    /usr/local/share/xmame/history.dat
    +mameinfo_file                   /usr/local/share/xmame/mameinfo.dat
    +
    +
    +

    +

    Confirm that xmame works before running it inside MythTV. Place +your ROM in the /usr/local/share/xmame/roms directory you created +earlier.

    +

    NOTE: There are three public domain ROM sets available at +http://www.mame.net/downmisc.html

    +

    Launch xmame with your game of choice. In this example, we are using Gauntlet. +

    +
    +$ xmame gauntlet
    +
    +
    +

    +

    Some basic mame keyboard commands: +

    +
    +5 = Insert coin
    +1 = Player 1 start
    +arrow keys = movement
    +left control = button 1
    +left alt = button 2
    +SPACE = button 3
    +ESC = exit
    +TAB - menu
    +~ to adjust Volume
    +     < and >
    +
    +
    +

    + +

    16.3 Download extra files +

    + +

    The following files allow you to add extra functionality. Place them +into /usr/local/share/xmame

    +

    - catver.ini is a catalog of categories and versions of popular mame ROMs.

    +

    Useful for keeping large libraries of ROMs organized.

    +

    It may be downloaded from +http://www.catver.com or +http://www.mameworld.net/catlist

    +

    - Screenshots aka "snaps"

    +

    These may be downloaded from +http://www.classicgaming.com/mame32qa/

    +

    Screenshots are displayed when you are browsing your ROMS in mythgame. +Unzip and place them in /usr/local/share/xmame/snaps

    +

    - history.dat

    +

    Download from +http://www.arcade-history.com/ +This file fills in a bit of background about each ROM.

    +

    - hiscore.dat

    +

    Download from +http://www.mameworld.net/highscore/

    +

    - Cheats

    +

    Download from +http://cheat.retrogames.com/

    + +

    16.4 Download and Install MythGame. +

    + +

    MythGame is part of the mythplugins package. See the instructions +in the +Downloading and Compiling +section to obtain mythplugins.

    +

    Switch to the mythplugins directory: +

    +
    +$ cd ~/mythplugins-0.21
    +
    +
    +

    +

    Compile and install mythgame: +

    +
    +$ ./configure --disable-all --enable-mythgame
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +(enter password)
    +# make install
    +# exit
    +
    +
    +

    + +

    16.5 Setup xmame in MythGame +

    + +

    Start mythfrontend and navigate to Utilities/Setup > Setup > Media +Settings > Game Settings > Game Players. Select (New Game Player).

    +

    To set up a new player for xmame enter the following:

    +

    +

    +
    +Player Name:    xmame-0.103.x11                  (Name by which you want your emulator or game called)
    +Type:           xmame                           (This is used for display purposes only and does not affect the function of your system)
    +Command:        xmame-0.103.x11 -vidmod 1 -fullscreen     (Path and name of binary + any optional parameters)
    +Rom Path:       /usr/local/share/xmame/roms     (This tells MythGame what directories to scan for roms to be used with this emulator)
    +ScreenShots:    /usr/local/share/xmame/snaps    (This tells MythGame what directories to scan for snapshots to be used with these roms)
    +Working Directory:                              (Directory to change to before launching game or emulator. Blank in our case ignores this setting)
    +File Extensions:                                (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path)
    +[] Allow games to span multiple roms/disks      (will treat game.1.rom game.2.rom game.3.rom as one game)
    +
    +
    +

    + +

    16.6 Hints: +

    + +

    +

      +
    • Rom name before options: %s can be used as a standin for rom names on the command line.
    • +
    • Multiple disk/rom games: %d1 %d2 etc can be used as standins for multiple disc games on the command line.
    • +
    • Associating a rom with an emulator: Browse to the desired rom and press 'M' to enter the settings page for that rom.
    • +
    • Assign a Game Favorite Status: Browse to the desired game and press "/".
    • +
    +

    + +

    17. MythMusic.

    + +

    MythMusic has a number of prerequisites that must be satisfied before it +is operational. Depending on your distribution, some of these prerequisites can +be satisfied through the various package managers. If your distribution doesn't +offer pre-compiled versions of the software below, then follow the generic +instructions for manually compiling and installing the software.

    +

    The prerequisites for MythMusic are: +

      +
    • MAD
    • +
    • taglib
    • +
    • libogg and libvorbis
    • +
    • FLAC
    • +
    • libcdaudio
    • +
    • CDParanoia
    • +
    +

    + +

    17.1 Manual installation of prerequisites +

    + +

    These instructions are for distributions which don't have pre-compiled +versions of the software necessary to run MythTV.

    +

    Download MAD from +http://www.underbit.com/products/mad and install:

    +

    +

    +
    +$ tar -xzf mad-0.15.1b.tar.gz
    +$ cd mad-0.15.1b
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    Download TagLib from +http://developer.kde.org/~wheeler/taglib.html and install:

    +

    +

    +
    +$ tar -xzf taglib-1.4.tar.gz
    +$ cd taglib-1.4
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    Download libogg and libvorbis from +http://www.xiph.org/downloads and install in a similar manner +to the above packages.

    +

    Download FLAC from +http://flac.sourceforge.net and install: +

    +
    +$ tar -xzf flac-1.1.2.tar.gz
    +$ cd flac-1.1.2
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +$ 
    +
    +
    +

    +

    Download libcdaudio from +http://libcdaudio.sourceforge.net and +install: +

    +
    +$ tar -xzf libcdaudio-0.99.12p2.tar.gz
    +$ cd libcdaudio-0.99.12p2
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# exit
    +$ 
    +
    +
    +

    +

    Download cdparanoia from +http://www.xiph.org/paranoia/down.html. +

    +
    +$ tar -xzf cdparanoia-III-alpha9.8.src.tgz
    +$ cd cdparanoia-III-alpha9.8
    +$ ./configure
    +$ make
    +$ su
    +# make install
    +# cd /usr/lib
    +# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so
    +# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so
    +# exit
    +$ 
    +
    +
    +

    + +

    17.2 Mandriva +

    + +

    Mandriva has a number of the prerequisites available on the +installation CD. Some of the software you're going to need will have to be +obtained from the "contrib" or "cooker" development repositories. +Applications downloaded from "cooker" come from the development branch, so +there may be issues with some software. It isn't recommended that you mix +cooker and release-level software.

    + +

    urpmi is the simplest tool for installation of packages from the +command line. The difficult part is the configuration, but this has been +made easier at the following website: +http://addmedia.linuxfornewbies.org/ The website will allow +you to choose a mirror site and then present the command-line configuration +text for that mirror. You will most likely need to add a "Contrib" mirror +to your setup. Once you have done that, you can proceed. If urpmi +prompts you about other modules that need to be installed to satisfy +dependencies, say "Yes".

    +

    +

    +
    +# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
    +# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
    +# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel
    +
    +
    +

    + +

    Additional options with MythMusic

    + +

    Additional visualizations have been added to MythMusic. If you wish to +use these, there are some prerequisites you must install prior to compiling.

    +

    +

      +
    • fftw
    • +
    • OpenGL
    • +
    • SDL
    • +
    +

    +

    fftw may be obtained from +http://www.fftw.org/. In Mandriva it may be installed by +typing: +

    +
    +# urpmi libfftw2 libfftw2-devel
    +
    +
    +

    +

    OpenGL should be installed on practically all distributions. +However, you will need the devel module. In Mandriva it may be +installed by typing: +

    +
    +# urpmi libMesaGLU1-devel
    +
    +
    +

    +

    SDL may be obtained from +http://www.libsdl.org. In Mandriva it may be installed by +typing: +

    +
    +# urpmi libSDL1.2 libSDL1.2-devel
    +
    +
    +

    + +

    17.3 Red Hat Linux 9 +

    + +

    Red Hat provides packages for several of the prerequisites, making +installation very simple. Of the prerequisites, Red Hat provides +packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably +already have installed). To install these all at once, simply type (all on +the same line): +

    +
    +$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL
    +
    +
    +

    +

    If you get the following message: "None of the packages you requested +were found, or they are already updated" it probably means you already +have all of those packages installed.

    +

    You must install the remaining packages, (MAD, FLAC, libcdaudio and +optionally fftw) manually following the installation directions above. When +installing fftw do not use the rpm package offered on the website because it +will cause an error, so use the source package instead.

    +

    +

    + + +NOTE: you can use the instructions given at the +automated installation section to install all of MythMusic in one +step. +
    +

    +

    17.4 Compiling MythMusic +

    + +

    Once all the prerequisites have been installed, you can proceed with +compiling MythMusic.

    +

    +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    + +

    17.5 Configuring MythMusic +

    + +

    Configuration of MythMusic occurs in two places. The main mythfrontend +Setup is for global MythMusic configuration. Go to the +Setup/MythMusic/General Setup screen and adjust it for your particular +configuration.

    +

    The second configuration screen is within the MythMusic program and will +allow you rescan your music library, etc.

    +

    Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat:

    +

    If Ignore_ID3 is set to TRUE, MythMusic will try to determine the +Genre, Artist, Album, Track Number, and Title from the filename of the +mp3 file. The NonID3FileNameFormat variable should be set to the +directory/file format where the mp3 files are stored. For instance, I +store mine in the above shown Genre/Artist/Album/Track format. MythMusic +will then use this information to fill in the proper fields when it +populates the musicmetadata table rather than searching for an ID3 tag in +the mp3 file.

    +

    The files can be laid out in any format, such as:

    +

    Genre/Artist/Album/Title +Artist/Genre/Album/Title +Artist/Album/Title (with Genre left as Unknown)

    +

    The track number is optional but can be specified with the title by using +the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, +then the filename can have a space, hyphen, or underscore separating the +track number from the track title. Keywords are case insensitive, so if +you specify GENRE it's the same as Genre in the format field.

    +

    The Ignore_ID3 option does not disable the code that determines the track +length, just the portion that tries to read ID3 info.

    + +

    17.6 Using MythMusic +

    + +

    MythMusic is fairly simple to use. It is recommended that you insert the +CD before selecting "Import CD". You should also ensure that your system +doesn't try to automount the CD and begin playing it automatically.

    +

    Here's some information on playlist management:

    +

    Q: How do I create a new playlist? +A: Using the MythMusic "Select Music" menu option, setup the playlist as you +normally would by adding songs or other playlists as needed. When you are +ready to save the new playlist, highlight "Active Play Queue" at the bottom +of the selection tree and hit the "i" key. This will pop up a menu allowing +you to name and save the new playlist. You can also hit Enter to bring up +the popup on the Active Play Queue. This does not work on the playlists +above, as Enter is obviously bound to checking/unchecking the boxes. Any +number (i.e. keypad on remote) will also bring up the menu in both cases.

    +

    Q: How do I enter the playlist name in the text field without a keyboard? +A: Use the keypad number keys (bound to your remote) to select letters +quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text +entry. 1 cycles through a few special characters, delete, and space. 0 is +like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be +able to specify the cycle timing in a Setup screen. You can type fairly +quickly through a combination of jumping around the number keys AND hitting +a non-number key (right arrow is particularly good for this) to force the +current character.

    +

    Q: How do I edit a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Move to Active Play Queue" in the popup. You can now modify the +"Active Play Queue" like normal, adding songs and playlists by selecting +them from the song tree. When you are done, highlight the "Active Play +Queue" in the selection tree and hit the "i" key then select "Save Back to +Playlist Tree". And whatever you were editing as your Active Queue before +you moved an existing playlist "on top" of Active reappears. Think of Active +has having a push on, pop off capability, but with a depth of only 1.

    +

    Q: How do I delete an item from a playlist? +A: Highlight the item in the selection tree and hit the "d" key.

    +

    Q: How do I rearrange the songs in my playlist? +A: Highlight a song and hit the "space" bar, the song will now have pair of +red arrows in front of it. Use the up and down arrow keys to move it around +in the playlist. When you have it where you want it, hit the "space" bar +again.

    +

    Q: How do I delete a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Delete this Playlist" from the popup.

    + +

    17.7 Troubleshooting MythMusic +

    + +

    You may run into errors when running MythMusic.

    +

    When I run MythMusic and try and look up a CD, I get an error message

    + +

    The full text of the message will say:

    +

    databasebox.o: Couldn't find your CD. It may not be in the freedb database. +More likely, however, is that you need to delete  /.cddb and  /.cdserverrc +and restart mythmusic. Have a nice day.

    +

    If you get this message, you should go to the home directory of whatever +user MythMusic is running as and type: +

    +
    +rm .cdserverrc
    +rm -rf .cddb/
    +
    +
    +

    +

    These files aren't automatically deleted because of a conscious design +decision by the author that programs that automatically delete things are +bad.

    +

    The files are used to locally cache CD lookups. If you are re-inserting +CDs, your machine will not actually have to go out to the Internet to +determine what is on them. However, the URL used to access the freedb +database has recently changed, so the stale information in the files from +previous runs of MythMusic would cause the error above. Once the files have +been deleted the stale information will be gone and your local database +will be rebuilt as you use CDs.

    + +

    18. MythWeather.

    + +

    MythWeather is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

    +

    +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythweather
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    MythWeather uses MSNBC.com as its source for weather data and weather.com +for its radar image.

    +

    These are the keyboard commands for MythWeather: +

    +
    +Left Key             Goes back one page, and extends the time spent
    +                     on the page you are on.
    +Right Key            Goes forward one page, see above.
    +Space                Pause, wait on the current page until space is hit
    +                     again.
    +Numeric Keys         You can check other weather by keying in other ZIP codes.
    +Enter Key            Switch between Celsius and Fahrenheit. Can also
    +                     be used a way to force a data update.
    +"m" Key              Resets the location to the database default, then updates the data.
    +"i"                  Enter / Save settings
    +ESC                  Exit the settings screen without saving / Exit the program
    +
    +
    +

    +

    MythWeather also has an "Aggressiveness" setting. This affects how long +MythWeather waits for data from the msnbc.com website before timing out. If +you are on a slow connection, or have a slow DNS, or MythWeather just +doesn't seem to be working and you've already tried everything else, then +try increasing the aggressiveness level parameter. This parameter is +inverse; a higher number actually means that MythWeather will be less +aggressive, and will therefore wait longer before timing out.

    +

    MythWeather will print debugging information on the terminal. If you wish +to see additional debugging information while MythWeather is running, run +mythweather from the command line with as mythweather --debug

    +

    You may also force mythweather to re-run the configuration by starting it on +the command line as mythweather --configure. These two options are +mutually exclusive.

    + +

    19. MythVideo.

    + +

    MythVideo is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball.

    +

    MythVideo will allow you to use an external program to watch media files +that are not directly supported by MythTV.

    +

    +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythvideo
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    See MythVideo's README file for additional information.

    + +

    20. MythDVD.

    + +

    MythDVD is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythDVD is an application which rips DVDs and makes them available for +use with MythVideo. You may also transcode the DVD content from MPEG-2 to +other formats which should greatly reduce the amount of space the DVD +material takes up on your hard drive.

    +

    MythDVD has a number of prerequisites to enable transcoding functionality. +If you only wish to play DVDs rather than convert them to something like +MPEG-4 or xvid you may skip the prerequisite installation step.

    + +

    20.1 Manual Compilation of Prerequisites +

    + + +

    20.2 Pre-compiled binaries +

    + +

    Mandriva users may install the prerequisites this way: +

    +
    +# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel 
    +# urpmi mplayer ogle xine
    +
    +
    + +Assuming that you've added a PLF mirror, you may also load the rest of the +prerequisites using the following command: +
    +
    +# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss
    +
    +
    +

    +

    In the example below, we have enabled support for transcoding and for VCD +playing. You may remove these options if you don't need them. +

    +
    +$ cd ~/mythplugins-0.20
    +$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +
    +
    +

    +

    20.3 Running the Myth Transcoding Daemon +

    + +

    Transcoding ("ripping") a DVD requires you to run the Myth Transcoding +Daemon (mtd). To ensure that mtd is configured correctly, you should first +test it at the command line. +

    +
    +$ mtd -n
    +
    +
    + +The last line of text should show something like: +
    +
    +mtd is listening on port 2342
    +
    +
    + +This indicates that mtd is ready for use. Once you've successfully +tested mtd in the foreground, type CTRL-C to stop mtd. You may +then start it as a background (daemon) process. +
    +
    +$ mtd -d
    +
    +
    +

    +

    Running mtd as a daemon will allow you to automatically start it during the +boot process. For example, you may add mtd -d to your +rc.local file, or you can adjust the script/steps outlined in the +section called +Automatically starting mythbackend at system boot time to start mtd instead of mythbackend.

    + +

    21. MythNews.

    + +

    MythNews is a part of the mythplugins package. See +MythPlugins for instructions on downloading the +tarball. MythNews is a RSS reader. +

    +
    +$ cd ~/mythplugins-0.21
    +$ ./configure --disable-all --enable-mythnews
    +$ qmake mythplugins.pro
    +$ make
    +$ su
    +# make install
    +
    +
    +

    + +

    22. Troubleshooting.

    + +

    22.1 Compiling +

    + +

    Compile errors

    + +

    Some compile errors are worse than others. If you get an error that +doesn't abort the compilation, and says something like: +

    +
    +cc1plus: warning: changing search order for system directory
    +"/usr/local/include"
    +cc1plus: warning:   as it has already been specified as a non-system
    +directory
    +
    +
    + +then it shouldn't be a problem.

    +

    If you get an error like /usr/bin/ld: cannot find -lXext, the +compiler is telling you that you don't have XFree86-devel installed, or that +your distribution hasn't set it up correctly. This needs to be fixed before +MythTV will compile.

    + +

    make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop.

    + +

    This error happens when there's a missing link in the +/usr/lib/qt3/mkspecs directory. There are two ways to fix this +error:

    +

    1. Create the link manually: +

    +
    +$ su
    +# cd /usr/lib/qt3/mkspecs
    +# ln -sf linux-g++ default
    +
    +
    + +and then restart the compile,

    +

    or

    +

    2. Run qmake mythtv.pro in the mythtv directory. Rerunning +qmake will create a new Makefile for you, however this still +doesn't fix the root cause of the issue, which is that your distribution +didn't create the symlink for you when the qt3 package was installed. The +first choice is the better solution.

    + +

    make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop.

    + +

    You didn't set your QTDIR. Re-read the section on +Setting up paths.

    + +

    Internal Segmentation Fault.

    + +

    This is most likely to be caused by an overheating processor rather than +an actual programming fault within gcc.

    + +

    22.2 Debugging +

    + +

    MythTV segfaults

    + +

    MythTV isn't doing anything

    + +

    Debugging with GDB

    + +

    Without details, the developers will not be able to determine if you have +discovered a genuine code-bug, or if the problem is with your system. In +order to determine what's going on, you must recompile MythTV with debugging +support and run MythTV within gdb, the GNU debugger. +Note that, on OS X, some data is provided without going through these steps. +See  /Library/Logs/CrashReporter/MythFrontend.crash.log

    +

    Re-run the configure script and add --compile-type=debug +to any previous configuration options you may have used. Check the +config.log file if you have forgotten.

    +

    Now, you need to clear out the old versions of the software to ensure that +you're running with the debugging code, then compile and install. +

    +
    +$ make distclean
    +$ ./configure --compile-type=debug
    +$ make
    +$ su
    +# make install
    +# exit
    +
    +
    +

    +

    At this point, you now have debug-enabled software ready. To make sure that +you don't forget to type a command required for debugging, it's best to +setup a gdbcommands file. This will be read by gdb when it's +started. +Put the following into gdbcommands in your home directory:

    +

    +

    +
    +handle SIGPIPE nostop noprint
    +handle SIG33 nostop noprint
    +set logging on
    +set pagination off
    +set args -l myth.log -v record,channel,siparser
    +run
    +thread apply all bt full
    +set logging off
    +
    +
    +

    +

    Let's assume that the problem you're having is in mythbackend.

    +

    +

    +
    +$ gdb mythbackend -x gdbcommands
    +GNU gdb 6.3-debian
    +Copyright 2004 Free Software Foundation, Inc.
    +GDB is free software, covered by the GNU General Public License, and you are
    +welcome to change it and/or distribute copies of it under certain conditions.
    +Type "show copying" to see the conditions.
    +There is absolutely no warranty for GDB.  Type "show warranty" for details.
    +This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1".
    +[Thread debugging using libthread_db enabled]
    +
    +
    +

    +

    gdb will automatically read the commands that you've placed in the +gdbcommands file and begin running the program you specified on the +command line.

    +

    If the program appears to be locked up, press CTRL-C to create the backtrace +file.

    +

    All of the output from gdb.txt should be posted to the mythtv-dev +mailing list, along with the steps you followed to get the program to crash.

    +

    NOTE: If you're trimming the gdb.txt file to remove +extraneous information from the beginning of the file, make sure you include +at least 10 lines prior to the point where the backtrace actually +begins. This ensures that there is some context to the backtrace, and so +that it's possible to see what exactly caused the segfault.

    +

    gdb has a number of options, read the man page for more +information.

    +

    Using the gdbcommands file in conjunction with a while loop +will ensure that gdb creates a trace file and then restarts:

    +

    +

    +
    +$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done;
    +
    +
    +

    +

    NOTE: To exit this loop you will need to kill the while loop.

    +

    If you're trying to troubleshoot and you can't get back to the gdb window +for some reason, it may be easier to use two systems or to start +mythfrontend from the text console.

    +

    If you're going to troubleshoot from a remote system, connect to the machine +that you're going to test using ssh or telnet. Next, type +$ export DISPLAY=localhost:0.0. This will allow the graphics to be +displayed on the X console (usually ALT-F6 or ALT-F7) and still give you +output and control of mythfrontend, either from the ssh +session, or by switching back to the text console by pressing CTRL-ALT-F1. +You can now continue troubleshooting using gdb as detailed in the +instructions.

    + +

    MythTV is crashing your system

    + +

    When run as a non-privileged user, MythTV can not crash your +system. If your system is crashing when you run MythTV, then you have some +issue with the drivers for your capture card or other hardware, or the CPU +fan has fallen off/broken and your system is overheating when asked to +perform a CPU intensive task like encoding video.

    +

    If you are running as root, which is strongly discouraged, it is +possible that your system may crash due to the real-time thread using all +available CPU. You will not be able to interrupt the process, so for all +intents and purposes your computer will have crashed.

    + +

    22.3 Installing +

    + +

    When trying to run mythtv-setup, you get an error like this: "mythtv-setup: error while loading shared libraries:"

    + +

    You didn't add /usr/local/lib to /etc/ld.so.conf. See the +section on modifying +/etc/ld.so.conf.

    + +

    22.4 Using +

    + +

    No programs are displayed in "Watch Recordings"

    + +

    This situation occurs most often with a system that acts as a frontend +and a slave backend. MythTV supports system-global and user-specific +configuration files, with user-configuration files taking precedence. 99% +of the configuration for MythTV is in the MySQL database, but MythTV still +needs to know where the MySQL server is running. This information is in the +mysql.txt file. By default, it will be installed to +/usr/local/share/mythtv, but a copy placed into ~/.mythtv +will over-ride the global configuration.

    +

    You must ensure that there aren't multiple, conflicting versions of this +file on your system! +

    +
    +$ locate mysql.txt
    +/usr/local/share/mythtv/mysql.txt
    +/home/mythtv/.mythtv/mysql.txt
    +$
    +
    +
    +

    +

    As you can see, in this example there are two mysql.txt files. If +they are not identical, then there may be unintended consequences.

    +

    You may also see this error if you completely fill the /var +partition. The most likely mythtv-related reason for this is an +overly large mythbackend or mythfrontend log file in /var/log. If +you have logging enabled for the backend, and myth runs for weeks at a time, +this may creep up and surprise you. Note that many system processes also +write to /var and the system may not boot if it is unable to write +to /var due to a full partition.

    + +

    MySQL not connecting correctly

    + +

    Your MySQL installation may have networking turned off. +Check that /etc/mysql/my.cnf does not contain +skip-networking. If it does, remove it. Also verify that +bind-address is set to your IP address instead of +127.0.0.1. If you change either of these items, restart +MySQL.

    + +

    MySQL database is corrupt

    + +

    If you have reason to believe that your MySQL database is corrupt, +execute the following commands to attempt to repair it.

    +

    NOTE: Ensure that there are no programs accessing the database +while you attempt to repair it. Make sure that all backend and frontend +programs have exited.

    +

    mysqlcheck -r -umythtv -p<password> mythconverg

    + +

    Using a MPEG-2 encoder card and the video appears "jittery"

    + +

    Using a MPEG-2 encoder card and the video is jumping up and down

    + +

    This is a different problem than the one discussed in the previous +section. Currently, the ivtv driver or firmware appear to have some issues +if the vertical capture resolution is not the full screen height. If you +are having a jitter problem then ensure that you are capturing either 480 +lines (for NTSC) or 576 lines (for PAL). The default capture profiles may +need to be edited for your setup. Go to Settings->TV Settings->Recording +Profiles and adjust the Default and Live TV options to +480 or 576 from their defaults.

    + +

    Screen goes blank but returns when mouse is moved or keyboard is used

    + +

    This is due to DPMS, the Display Power Management System, which is used +to save power by turning off your monitor when the system decides that it's +not being used or due to a screensaver that has defaulted to a blank screen. +MythTV now has DPMS support built-in, and should intelligently handle the +screen. Continue reading if you wish to override DPMS and force it off.

    +

    Since it's likely that watching TV will not generate keyboard or mouse +events for a time, you need to turn off DPMS and the screensaver. There are +a few ways to do this. You may also need to check your BIOS for power +saving modes and disable screen blanking there as well.

    +

    Edit your /etc/X11/XF86Config-4 or /etc/X11/xorg.conf +file, and look for: +

    +
    +Section "ServerFlags"
    +    #DontZap # disable <Ctrl><Alt><BS> (server abort)
    +    #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
    +    AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work
    +
    +    Option "blank time" "0"
    +    Option "standby time" "0"
    +    Option "suspend time" "0"
    +    Option "off time" "0"
    +    Option "NoPM" "1"
    +EndSection
    +
    +
    +

    +

    Also, look for: +

    +
    +Section "Device"
    +    Identifier "device1"
    +    VendorName "nVidia Corporation"
    +    BoardName "NVIDIA GeForce 256 (generic)"
    +    Driver "nv"
    +    Option "DPMS"
    +EndSection
    +
    +
    +

    +

    In this case, you would need to either delete the Option "DPMS" +line, or change it to # Option "DPMS" to comment it out. The next +time you start XFree this change will take effect.

    +

    Finally, check: +

    +
    +Section "Monitor"
    +    Identifier "monitor1"
    +    VendorName "Plug'n Play"
    +    HorizSync 30-85
    +    VertRefresh 50-160
    +
    +    # Sony Vaio C1(X,XS,VE,VN)?
    +    # 1024x480 @ 85.6 Hz, 48 kHz hsync
    +    ModeLine "1024x480"    65.00 1024 1032 1176 1344   480  488  494  563 -hsync -vsync
    +
    +    # TV fullscreen mode or DVD fullscreen output.
    +    # 768x576 @ 79 Hz, 50 kHz hsync
    +    ModeLine "768x576"     50.00  768  832  846 1000   576  590  595  630
    +
    +    # 768x576 @ 100 Hz, 61.6 kHz hsync
    +    ModeLine "768x576"     63.07  768  800  960 1024   576  578  590  616
    +EndSection
    +
    +
    +

    +

    Ensure that there isn't an Option "DPMS" in the Monitor +configuration.

    +

    You can also turn off DPMS from the Command Line, but this will not survive +a reboot. +

    +
    +$ xset -dpms
    +
    +
    +

    +

    Using xset +dpms will turn it back on.

    +

    Another technique to try, which will turn off the screensaver: +

    +
    +$ xset s off
    +
    +
    + +You may also combine the command to turn off DPMS and the screensaver: +
    +
    +$ xset -dpms s off
    +
    +
    +

    +

    Finally, depending on your distribution, you may be able to turn it off from +within the control panel.

    +

    22.5 Miscellaneous +

    + +

    mythfilldatabase failing

    + +

    If mythfilldatabase suddenly appears to be failing, there are at least +two things to check.

    +

    First, if you are in North America, ensure that your DataDirect subscription +is still valid, otherwise, check to see what version of XMLTV you're +running and that it's the latest version.

    +

    +

    + + +NOTE: It is highly recommended that you run the latest +version of XMLTV available. Your listings provider may have made changes +which negatively impact XMLTV. +
    +

    + +

    Fast CPU, choppy or jittery video

    + +

    First, you should check that your kernel has been enabled for DMA: +

    +
    +[mythtv@pvr mythtv]$ dmesg |grep DMA
    +    ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
    +    ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio
    +hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33)
    +hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33)
    +
    +
    +

    +

    From the listing above, you can see that hda, hdb and hdc are set for DMA, +and hdd is set for pio. If your kernel is not reporting DMA being enabled, +you may need to recompile your kernel. Check your motherboard's chipset +(look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more +information.

    +

    Next, check that the hard drive has DMA enabled. Use the hdparm +program to check and enable DMA. +

    +
    +# hdparm -d /dev/hd?
    +
    +
    + will tell you the DMA status for your hard drives. If you run +hdparm with the -d1 parameter, it will turn DMA on.

    + +

    You may also setup your PC to do this at boot time, either by adding the +command to your /etc/rc.local file, or by adding files to +/etc/sysconfig.

    +

    On Mandriva and other distributions, if you install hdparm from an RPM you +will most likely get a /etc/sysconfig/harddisks file installed. +This file will be parsed by the /etc/rc.sysinit script. If you use +the default harddisks file, your changes will affect all IDE devices +(including CD ROMs). If you wish to use different parameters for various +devices, rename and/or copy the file to harddiskhda, +harddiskhdb, etc. Edit the file to your liking and on the next +reboot your setting will be preserved.

    + +

    Frontend appears to be slow at jumping / seeking.

    + +

    On-screen Display shows incorrect program length.

    + +

    This may occur when MythTV doesn't have an accurate seek table. Run +mythcommflag --rebuild

    + +

    Troubleshooting audio

    + +

    +

    + + +NOTE: the following instructions do not apply to PVR-250/350 +encoders; the MPEG-2 file will have the audio embedded in the stream so it +is not accessible using /dev/dsp. +
    +

    +

    Audio appears to be one of the bigger issues that users run into on the +mailing list. If the audio isn't configured correctly, then MythTV will +often appear to hang, when in fact it is trying to manipulate the audio +subsystem and failing. You may or may not receive error messages indicating +that the source of the error is the audio subsystem.

    +

    You can not use xawtv to determine if your audio is working +correctly, since xawtv is simply using the analog sound patched +through line-in to line-out. It doesn't need to digitize the sound unless +you are using the recording function.

    +

    A better test to verify that sound will work for MythTV (and recording with +xawtv for that matter) is to startup xawtv, mute the +line-in then run aplay /dev/dsp. You should hear the recorded audio +slightly delayed behind the real-time video. You should see messages about +"underrun". These can be ignored but they do confirm that the driver is +loaded and there is an active device. Once this test succeeds, MythTV +should work correctly because it writes to and read from /dev/dsp in +the same way that aplay does.

    +

    To record audio along with video the audio signal must be digitized by a DSP +so that the audio data can be stored in a file. On playback, the audio data +is written to /dev/dsp and converted back to an analog signal. This analog +signal should then be sent to your speakers. Here is what is needed in +alsamixer. If you are using an ALSA version after 1.0.6, use +alsamixer -V all:

    +

    CAPTUR source - the analog source to be sent to the DSP. This should be set +to the input source from the tuner card to the sound card. In most cases +this is Line but this could also be Aux, CD, Mic, etc., depending on how you +connect the input cable. This source should be muted to prevent patching +through the analog sound. The volume of this source will not affect the +record level.

    +

    Capture mixer - this sets the level for the analog to digital recording. +While a volume of 100% is recommended for testing, distortion may occur. +Lowering this level to 75% to 85% may result in better audio quality. +"Capture" should be marked as the CAPTUR destination.

    +

    PCM mixer - this sets the level for the digital to analog playback. While a +volume of 100% is recommended for testing, distortion may occur. Lowering +this level to 75% to 85% may result in better audio quality.

    +

    Master mixer - sets the level for the analog signal sent to line-out or the +speakers.

    +

    You may also want to ensure that /dev/dsp , or whatever device file +is being used, hasn't already been grabbed by another process, like +esd or artsd. If the device file isn't available, then +MythTV won't work. You may wish to run configure and enable +support for these.

    +

    If you wish to see what application is grabbing a resource, you can use the +fuser command: +

    +
    +# fuser -v /dev/dsp
    +
    +
    +

    +

    To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and +uncheck the "Start aRts soundserver on KDE startup" box. Run # killall +artsd from the command line to stop the artsd program.

    +

    If you're using multiple sound cards and multiple tuners, use alsamixer +-c 1 to work with the second sound card. The first card is #0, the +second card is #1, etc.

    + +

    Mythbackend reports that your card is not reporting full duplex capabilities

    + +

    The mythbackend program told me to look at this section

    + +

    mythbackend does a check to see if your sound device is capable of full +duplex operation. If it's not, it's most likely that you're going to run +into issues when you try to record and play sound at the same time. If your +backend is a separate machine than your frontend, then there's no problem, +since you're only going to be doing one thing at a time with the card. +Likewise, if you're running the frontend and backend on the same machine, +but you're using btaudio or a hardware encoder card such as the Hauppauge +PVR-250, DVB cards or HDTV capture cards as your recording source and you're +only using the playback function of your sound card, then you also shouldn't +have an issue, since the sound card isn't being asked to perform two +functions at once.

    +

    If you can't get your sound card to go full-duplex and need it to, then check +your distribution for updated sound drivers. If your sound card is not +capable of full-duplex operation, either because the drivers don't support +it, or it has been designed that way, then you're pretty much out of luck +and will either need to purchase a new sound card, or will need to get +btaudio +operational.

    + +

    My remote doesn't work / works sometimes and not others / "ghost" keypresses

    + +

    This can be due to a number of factors. The simplest case is the +"ghost" keypresses. For me, it was due to compact fluorescent lights in +the same room as the IR receiver, which the receiver was picking up as +keypresses. Once the lights were switched to incandescent bulbs, the ghost +went away.

    +

    You may have an issue with lirc misinterpreting IR commands from a +different remote. I also have an issue where the TiVo "Peanut" remote will +eventually cause lircd to stop responding; even though lircd +is configured for the Pinnacle Systems remote, the TiVo remote IR patterns +are being seen by the IR receiver.

    +

    If your remote has been properly configured, and irw and +irxevent are working correctly, then it's highly likely that your +window manager is not giving focus correctly to the various Myth programs as +they run. The following window managers are known to work correctly:

    +

    +

      +
    • fvwm
    • +
    • blackbox (using "Sloppy Focus" and "Focus New Windows")
    • +
    +

    +

    NOTE: You do not need to use irxevent if you are using +MythTV's native LIRC support, so the window manager focus issue does not +apply in that case.

    + +

    Where's "canada-cable"?

    + +

    Channels are off by one

    + +

    There is no such thing as "Canada Cable"; Canada uses the same +frequencies as the United States. "Canada Cable" was a hack that some +people used when they would discover that their channels were off-by-one, +i.e. when tuning to channel 42, they might get channel 41 or 43. This is +actually due to the tuner on the video capture device being mis-detected. +You must manually specify the tuner type in your /etc/modules.conf. +See the video4linux mailing list ( +https://listman.redhat.com/mailman/listinfo/video4linux-list) for +more information.

    + +

    Mythweb is showing a db_open error when I connect to it

    + +

    Find your php.ini file. Make sure you've got a line in it like this:

    +

    extension=mysql.so

    +

    Restart apache for it to take effect.

    + +

    Mouse pointer disappears when placed over the MythTV windows

    + +

    This is the intended behavior. The MythTV interface is meant for use +with a remote control or a keyboard.

    + +

    What does "strange error flushing buffer" mean on the console?

    + +

    Nothing, really. It's just lame (the mp3 encoder) complaining for some +obscure reason. This seems to be fixed in more recent versions of the +libmp3lame library.

    + +

    Can't change the channel when watching Live TV.

    + +

    Something's wrong with your program database. Did mythfilldatabase run +with no major errors? Or, MythTV may not have permissions to the +appropriate video4linux devices. See the section titled +Device Permissions for an example.

    + +

    Screen goes black when you try to play something

    + +

    MythTV prints error and status messages to the shell that was used to +start the application. If nothing seems to be happening when you try to +view a program, try switching back to the shell and look for error messages +there, or, if you're running from a startup script, check the log file.

    + +

    Poor performance with NVidia cards and XvMC

    + +

    XvMC is a NVidia driver feature which is supposed to help with decoding +video. Users have reported that rather than speeding up their video it +appears to be doing the opposite. You may want to check that your color +depth is set for 24bpp.

    + +

    Computer is loading a media player application when you insert a CD or DVD

    + +

    You need to disable any sort of auto-running media player in your +environment, otherwise MythDVD or MythMusic will not be able to work +properly.

    +

    In KDE, you may want to perform the following: +

    +
    +$ rm ~/.kde/Autostart/Autorun.desktop
    +
    +
    +

    +

    23. Miscellaneous.

    + +

    23.1 I'd like to watch the files without using MythTV / I'd like to convert the files to some other format +

    + +

    First, check if the mytharchive plugin does what you want. If not, then +read on:

    +

    MythTV comes with a utility called mythtranscode which can +decode nuv files into raw format for use with other applications. This +command-line utility was not designed to be used by the end-user, but +instead to be called by other applications or scripts. Programs like +nuvexport ( +http://forevermore.net/myth/) are better suited for the end user. +However, since mythtranscode can be a useful tool, directions on +using it follow.

    +

    mythtranscode creates raw streams, which means that they do not +contain any container information such as resolution, frame-rate, or audio +sampling rate. In order to process the output, you must supply this +information to the processing utility. mythtranscode provides the +relevant information on STDOUT.

    +

    There are two modes in which mythtranscode can create raw streams. +The first has no synchronization and assumes that the processing utility +will read audio and video at a constant rate. This method is useful when a +single application will be processing the raw output, such as +mencoder or ffmpeg. The second method assumes that two +separate applications will be processing the audio and video streams +independently, and there is no rate control between them which means that +the two programs don't coordinate their efforts to maintain synchronization.

    + +

    mythtranscode example

    + +

    First, start mythtranscode. You will need to determine the +channel and the start time manually. +

    +
    +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \
    +autodetect --fifodir . &
    +
    +
    +

    +

    When mythtranscode begins executing, it will create two FIFOs +("audout" and "vidout") in the directory specified (in this case ".", +meaning the current directory) and will print out information about the +video stream.

    +

    The next step is to start the processing application. The following assumes +that the stream is NTSC 640x480 with 32Kbps audio.

    +

    To use mencoder you would enter a command like: +

    +
    +mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
    +-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \
    +vidout
    +
    +
    +

    +

    +

    + + +NOTE: You must use mencoder 1.0PRE1 or later. mencoder +version 0.9x WILL NOT WORK! +
    + +Using ffmepg: +
    +
    +ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \
    +-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi
    +
    +
    +

    +

    Or to play directly using mplayer (again 1.0PRE1 or later is needed): +

    +
    +mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \
    +-rawvideo on:w=640:h=480:fps=29.97 vidout
    +
    +
    +

    +

    If you wanted to write the raw data to separate audio and video files for +later processing, the following would work (note the use of --fifosync +for rate-control): +

    +
    +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \
    +--profile autodetect --fifodir . --fifosync &
    +$ cat audout > audio.raw &
    +$ cat vidout > video.yuv
    +
    +
    +

    + +

    23.2 Using a different window manager +

    + +

    MythTV is not dependent on any particular window manager. If you wish to +run a lightweight window manager, the contrib/configfiles/ directory has an +example of a .twmrc and .fvwmrc file you may use.

    + +

    23.3 What capture resolution should I use? How does video work? +

    + +

    While MythTV allows you to set various GUI and capture resolutions, not +all combinations make sense.

    +

    First, analog video signals have a defined vertical resolution. In NTSC, +the video standard specifies that there are 525 vertical scan lines. Once +the "extra" lines are removed (they're used to synchronize the video signal, +and encode closed captioning data), you have 480 horizontal lines stacked +vertically.

    +

    In PAL, there are 625 "raw" lines of resolution, with a net of 576 +horizontal lines stacked vertically.

    +

    Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, +due to limitations in the chip and other limitations of broadcast +television, there may not be a noticeable improvement in image quality +beyond 400 or 500 pixels.

    +

    With this in mind, there are certain commonly accepted values for +resolution. While other values may be accepted for the vertical +resolution, they will cause scan lines to be repeated or dropped.

    +

    From "best" to "worst", in NTSC: +

      +
    • 720x480 "DVD" resolution. ReplayTV High and medium resolution
    • +
    • 704x480 DVD standalone recorder standard resolution
    • +
    • 640x480 4:3
    • +
    • 544x480 TiVo Best resolution
    • +
    • 480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution
    • +
    • 352x480 ReplayTV "Standard" quality, TiVo Basic and Medium resolution, DVD "LP" resolution
    • +
    • 320x480
    • +
    • 544x240
    • +
    • 480x240
    • +
    • 352x240 Video CD (VCD) resolution
    • +
    • 320x240
    • +
    +

    +

    As you can see, the lower quality values are half of the better ones. +720x240 is possible, but isn't a good tradeoff relative to the number of +vertical lines lost. In a PAL country, the you would use values like +720x576 or x288.

    +

    The higher resolutions will be more CPU intensive if you're using software +encoding (PVR-250/350 will have minimal host CPU impact even if you're using +720x480). If the CPU is overtaxed, frames will be dropped causing uneven +motion. You will likely see the best results at resolutions which average at +least 10% CPU idle time. You can use system tools such as top or +sar to check the CPU % idle while recording. If the CPU average +usage is consistently exceeding 90%, frames will need to be dropped during +peak times when more than 100% of the available CPU would be needed to +process all of the frames.

    +

    If you'd like to read more on this, go to the vcdhelp website at +http://www.vcdhelp.com/forum/userguides/94382.php.

    + +

    23.4 MythTV GUI and X Display Sizes +

    + +

    MythTV is designed to be run as dedicated full screen TV application +but can also be run as a desktop application on a computer monitor. Here +are a few consideration for configuring sizes to best suit you needs.

    + +

    X Dimensions

    + +

    For output to a Television, common resolutions are 640x480, 800x600, and +some rare devices support 1024x768. Generally, higher resolutions are +better. However, you may find that you prefer the picture quality at one of +the lower resolutions. Everything in MythTV is scalable and should 'fit' +regardless of the resolution you choose.

    +

    Edit your X configuration file, usually /etc/X11/XF86Config-4 for +XFree, or /etc/X11/xorg.conf for Xorg, so that the resolution you +want to use is listed first in the lists under "Screen". If this resolution +is higher than the resolutions supported by your output device, you will see +a 'panning' effect where moving the mouse to the edge will scroll around a +desktop area which is larger than the display size. If this happens, edit +your X configuration file to match the display size then restart X.

    + +

    MythTV Dimensions

    + +

    From "mythfrontend" go to Setup->Appearance. +The default for the height and width is "0" - this will cause +MythTV to automatically size itself to full screen.

    +

    If the MythTV GUI width and height are not 0, mythfrontend uses these GUI +dimensions and is anchored to the upper left corner of the X Desktop. If +the GUI X and/or Y are not 0, the upper left corner is positioned at the +specified coordinates. If the "Run the frontend in a window" box is checked, +the window will have a frame and can then be dragged to any position on the +desktop.

    +

    +

    + + +NOTE: When the GUI is full screen, you may see windows rapidly +flipping on top of each other. If this happens you will need to set your +window manager to 'Click to Focus' for windows to stack properly. +
    + +The fonts for the GUI and OSD will scale to whatever sizes you use. Most +font sizes can be changed in setup selections or in the .xml files under +/usr/local/share/mythtv/ . Make sure to use fonts large enough +to be read on a TV screen from a distance.

    +

    The full screen TV size is based on the X display size. For Xinerama, you +can specify a screen in Setup->General. The TV picture will be stretched +to fit the entire GUI area regardless of the +capture resolutions used. However, during playback, the "W" key can +to used to correct differences between 16:9 and 4:3.

    + +

    Overscan Dimensions

    + +

    Because picture edges can be ragged and screen edges aren't straight, +Television is designed to project an image larger than the physical screen. +This is called "overscan". Underscan is fitting the entire image inside the +screen. Underscan is useful for computer monitors so that toolbars and +scrollbars at the edges can be seen.

    +

    For best results, match the X display area as close as possible to the edges +of the physical screen. This can only be adjusted by your tv-out device or +by the settings for the television set. Many sets have these adjustments in +a 'service mode'. If you cannot make these adjustments, there will be black +borders around the edges of the X desktop, MythTV GUI and TV playback.

    +

    MythTV has settings for "Overscan" in Setup->Playback. These can not, and do +not, cause the image to display beyond the edge of the X display area. The +purpose of these settings are to cut off rough edges and to expand the image +so that objects will appear to be the same size as a normal overscanned TV +picture.

    + +

    23.5 Saving or restoring the database +

    + +

    See the mysqldump manpage for more information. +

    +
    +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
    +
    +
    +

    +

    To restore: (assuming that you've dropped the database) +

    +
    +$ mysql -u root
    +mysql>create database mythconverg;
    +mysql>exit
    +$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql
    +
    +
    +

    +

    You may need to alter the MySQL permissions if this database is being shared +with multiple systems. See the +Modifying access to the MySQL database for multiple systems section for more +information.

    + +

    23.6 Deleting the MySQL database +

    + +

    +

    + + +NOTE: Performing this step will remove the entire database. You will lose all of your settings and will need to re-run the mc.sql script +to setup the database structure before running the mythtv-setup program. +
    + +
    +
    +$ mysql -u root
    +mysql> drop database mythconverg;
    +mysql> quit
    +
    +
    +

    + +

    23.7 Moving your data to new hardware +

    + +

    This assumes that you will be moving your data to newer / bigger hardware +and don't want to lose your programs.

    +

    The first step is to create a database backup as demonstrated in an earlier +section.

    +

    Next, you will extract only the data that is relevant to the programs: +

    +
    +$ grep "INSERT INTO record "          mythtv_backup.sql > restore.sql
    +$ grep "INSERT INTO recorded "        mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO oldrecorded "     mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedrating "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedmarkup "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO recordedseek "    mythtv_backup.sql >> restore.sql
    +
    +
    +

    +

    NOTE: Newer versions of mysqldump place backticks around +the table names. Backticks are not the same as apostrophes! On a typical +North American keyboard, backticks are located to the left of the "1" key, +on the same key as the tilde. Also, because the bash shell may try +to interpret the backticks, make sure you use a \ before each one.

    +

    If your restore.sql file is empty, you'll need to re-run the +commands like this: +

    +
    +$ grep "INSERT INTO \`record\` "          mythtv_backup.sql > restore.sql
    +$ grep "INSERT INTO \`recorded\` "        mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`oldrecorded\` "     mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedrating\` "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedmarkup\` "  mythtv_backup.sql >> restore.sql
    +$ grep "INSERT INTO \`recordedseek\` "    mythtv_backup.sql >> restore.sql
    +
    +
    +

    +

    Note the space after the table name and the ">>" to append to the file for +all but the first grep. "recordedmarkup" and "recordedseek" are +huge and there may be hundreds of thousands of lines if you had lots of +hours of recordings.

    +

    After you have moved the data files to the new hardware, configure MythTV +using the mythtv-setup program as you normally would with a +standard MythTV installation.

    +

    At this point we will restore the information about your programs back into +the database: +

    +
    +$ mysql -u mythtv -pmythtv mythconverg < restore.sql 
    +
    +
    +

    +

    After successful insertion of the data you may delete the +restore.sql file.

    + +

    23.8 btaudio +

    + +

    btaudio allows you to obtain the audio data from your tuner card directly +over the PCI bus without using a sound card. This is useful if you would +like to use multiple tuner cards in a system without adding a sound card for +each one, or if your existing sound card is not capable of full-duplex +operation.

    +

    In order to use btaudio, your tuner card will need certain hardware +installed on it, and that hardware must be wired correctly. The chip that +will allow you to use the btaudio module is the MSP34xx. However, having a +MSP34xx is no guarantee that you will be able to use the btaudio module.

    +

    As of 2003-03-31, this is the current list of cards and their status: +Works with btaudio:

    +

    +

      +
    • Hauppauge WinTV-radio with dbx-TV stereo, model 401
    • +
    • Hauppauge WinTV-Theater, model 495, 498 (Europe)
    • +
    • ATI TV Wonder
    • +
    +

    +

    The following cards do not work: +

      +
    • Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not +wired correctly to the BT878 chip.
    • +
    • ATI TV Wonder VE
    • +
    • Leadtek Winfast 2000 XP (PAL, UK and NTSC)
    • +
    • I/O Magic PC-PVR. No MSP34xx chip.
    • +
    +

    +

    The following cards have been reported to work, but have issues: +

      +
    • Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on +analog)
    • +
    +

    +

    Once btaudio loads, it should register additional /dev/dsp and +/dev/mixer devices. Typing $ dmesg will let you know +what's going on.

    + +

    23.9 Removing unwanted channels +

    + +

    If mythfilldatabase grabbed a channel which you do not want to +include in your TV listings, you can remove the entries from the grabber +configuration and the MySQL database. This often happens with premium +channels; for example, HBO or Showtime may be available on your cable TV +system, but is scrambled because you're not a subscriber to that channel. +Since you can never watch it, you want to get rid of it.

    +

    If you are using the DataDirect service, login to your account at +http://labs.zap2it.com/ to +modify your lineup. Uncheck the boxes for any unwanted channels, and they +will no longer be included in your download.

    +

    If you are using a grabber from XMLTV, comment out the channel from the +~/.mythtv/<sourcename>.xmltv file by inserting the word "not +" (including the space) in front of the unwanted entry. This will prevent +xmltv from grabbing future listings.

    +

    Next, delete the unwanted item from the channel table so that it will not +appear in the EPG or when changing channels. To delete the data from the +database we need to perform some steps. First, assuming that HBO is channel +15, we need to find out the internal chanid used by MySQL: +

    +
    +$ mysql -u root mythconverg
    +mysql> select chanid from channel where channum=15;
    ++--------+
    +| chanid |
    ++--------+
    +|   1015 |
    ++--------+
    +1 row in set (0.00 sec)
    +mysql> delete from channel where chanid = 1015;
    +
    +
    +

    +

    Old program data will be removed over the course of a week. However, you may +want to immediately delete any current program listings for the channel that +has been removed: +

    +
    +$ mysql -u root mythconverg
    +mysql> delete from program where chanid = 1015;
    +
    +
    +

    + +

    23.10 NFS +

    + +

    You may want to use a central server to store your files.

    +

    On the host machine, (in this case, the hostname is "masterbackend") you'll +want to edit your /etc/exports file and use something like: +

    +
    +/var/video (rw)
    +
    +
    +

    +

    To export the /var/video directory with read / write privileges.

    +

    On the "slave" machine, you'll want to edit the /etc/fstab file and +add something like: +

    +
    +masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0
    +
    +
    +

    +

    Then run # mount -a to re-read the file to mount the file system.

    +

    In this case, the source is a machine called "masterbackend" which is +exporting the directory "/var/video", which we're mounting locally at +"/var/video". The rsize and wsize options are used to increase the +performance of NFS; "hard,intr" is there because that's the recommendation +of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo +is used to turn off file attribute caching. Attribute caching for a shared +media point causes problems; you always want to see the latest state of the +directory and files. See +http://www.mythtv.org/wiki/index.php/Optimizing_Performance for +additional information regarding performance optimization.

    + +

    23.11 Automatically starting mythfrontend at system boot time +

    + +

    Here's an example submitted to the mythtv-dev list by Pat Pflaum +mailto:pat@netburp.com using fvwm: +

    +
    +$ cat > .xinitrc
    +fvwm &
    +mythfrontend
    +^D
    +$ cat > .fvwmrc
    +Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0
    +^D
    +$
    +
    +
    +

    +

    The following also works with blackbox: +

    +
    +$ cat > .xinitrc
    +xset -dpms s off &
    +irxevent &
    +mythfrontend &
    +blackbox
    +
    +
    +

    +

    Make sure that your .blackboxrc file has: +

    +
    +session.screen0.focusNewWindows:        True
    +session.screen0.focusModel:     SloppyFocus
    +
    +
    + in it.

    +

    +

    +

    23.12 Automatically starting mythbackend at system boot time +

    + +

    Red Hat And Mandriva

    + +

    Here's a method for automatically starting mythbackend submitted by Mike +Thomson ( +mailto:linux@m-thomson.net) and Stu Tomlinson ( +mailto:stu@nosnilmot.com).

    +

    Copy the files from the MythTV contrib directory or from Mike's web +site ( +http://m-thomson.net/mythtv/) as follows:

    +

    etc.rc.d.init.mythbackend should be made executable and copied to +/etc/rc.d/init.d/: +

    +
    +$ cd contrib
    +$ su
    +# chmod a+x etc.rc.d.init.d.mythbackend
    +# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend
    +
    +
    +

    +

    etc.sysconfig.mythbackend should be copied to +/etc/sysconfig/: +

    +
    +$ cd contrib
    +$ su
    +# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend
    +
    +
    +

    +

    Edit /etc/sysconfig/mythbackend if you want to change the defaults +(the userid that should start mythbackend, location of the logfile and (if +required) the name and location of the mythbackend binary).

    +

    Use chkconfig to make sure the script is called when +entering runlevels 3, 4 or 5: +

    +
    +$ su
    +# chkconfig --level 345 mythbackend on
    +# exit
    +$
    +
    +
    +

    +

    +

    +

    Log files

    + +

    By default, the log file for mythbackend will be written to +/var/tmp/mythbackend.log. This has been tested and is known to work +on Mandriva and Red Hat, but many people prefer to place logs under +/var/log/.

    +

    To do this, create a group called mythtv (or anything you prefer) +and add your usual MythTV users to that group. If you changed the user that +starts mythbackend from the default of root you must perform this +step.

    +

    Create the directory /var/log/mythtv and set its +permissions as follows: +

    +
    +$ su
    +# mkdir /var/log/mythtv
    +# chown root:mythtv /var/log/mythtv
    +# chmod 0775 /var/log/mythtv
    +# exit
    +$ ls -ld /var/log/mythtv
    +drwxrwxr-x    2 root     mythtv       4096 Apr 28 21:58 /var/log/mythtv/
    +$
    +
    +
    +

    +

    Create a mythtv file in /etc/logrotate.d: +

    +
    +$ su
    +# cat > /etc/logrotate.d/mythtv
    +# Set default values for all log files first...
    +
    +# Rotate the logs once a week, or more frequently if they 
    +# exceed 10Mb in size (size is checked daily).
    +weekly
    +size 10M
    +
    +# 'copytruncate' is used for logs generated by 
    +# currently-running programs that should not be restarted 
    +# (and can't be signalled to start a new log) after the 
    +# rotation.  It duplicates the existing log file and then 
    +# sets the length of the existing file to 0.  The only time 
    +# this would break would be if the program writing the log 
    +# was using lseek.
    +copytruncate
    +
    +# After rotating the files, leave the most recent rotated 
    +# copy alone but gzip everything else to save space.
    +compress
    +delaycompress
    +
    +# If a log isn't present then don't worry about it.
    +missingok
    +
    +# Don't rotate an empty file.
    +notifempty
    +
    +# end of the global options
    +
    +/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log {
    +  # Keep logs until they are 2 months old or the number of 
    +  # logs reaches 12.  If the log files stay small, the age will 
    +  # kick in first and you'll only have 8 log files.  If they 
    +  # get larger than 10Mb then you won't keep all 60 days.
    +  rotate 12
    +  maxage 60
    +}
    +
    +# Different options for mythfilldatabase:
    +/var/log/mythtv/mythfilldatabase.log {
    +  rotate 2
    +}
    +^D
    +#
    +
    +
    +

    + +

    Mandriva

    + +

    Mandriva adds one more twist in the form of the msec utility, +which runs regularly and (at the default or any higher security level) sets +permissions on many files, including those under /var/log.

    +

    To tell msec about the MythTV log files and their directory, you need to +edit the /etc/security/msec/perm.local file to include the +following: +

    +
    +# /etc/security/msec/perm.local
    +# Local overrides to the msec program
    +#
    +# Full file path                user.group              permissions
    +/var/log/mythtv/                root.mythtv             775
    +/var/log/mythtv/*               root.mythtv             664
    +
    +
    +

    +

    A copy of the above has been included in the contrib/ directory. You may +add it by typing: +

    +
    +$ cd contrib
    +$ su
    +# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local
    +# exit
    +
    +
    +

    +

    Finally run the msec tool to check and implement your +changes. +

    +
    +$ su
    +# msec
    +# exit
    +$
    +
    +
    +

    +

    +

    + + +NOTE: msec can only reduce the permissions of files, so if +you don't get the results you expect, check that you're not asking +msec to add missing permissions to the files or directories you +created. +
    +

    +

    Gentoo

    + +

    The portage file for MythTV has scripts that will allow you to run +mythbackend at startup.

    +

    To run mythbackend as a daemon which starts at boot time: +

    +
    +# rc-update add mythbackend default
    +
    +
    + +To stop mythbackend as a daemon: +
    +
    +# /etc/init.d/mythbackend stop
    +
    +
    +

    +

    To obtain a list of options: +

    +
    +# /etc/init.d/mythbackend
    +
    +
    +

    + +

    23.13 Advanced Backend Configurations +

    + +

    MythTV is flexible in the way that you define multiple backend tuner +configurations. The only hard-and-fast rule is that the Master backend +must have a capture device defined, but shouldn't imply that the +capture device in the Master backend must be the first capture card defined in the +database.

    +

    One example of an advanced configuration is the round-robin scheme. Rather +than defining all of the cards on the master, you could first go into +mythtv-setup on the master to define globals such as the general configuration +and the channel lineup but not the host-specific configuration item like the +capture card. In this example, we will use a 4 tuner configuration, where two +slaves have one card each and the master has two. +

      +
    1. Add the first capture card on one of the slaves. Complete the +configuration, connecting the input source to the card. This will get +cardid #1 in the database. Exit mythtv-setup.
    2. +
    3. Configure the first capture card on the master backend. This will get +cardid #2 in the database. Exit mythtv-setup.
    4. +
    5. Configure the first capture card on the second slave. This will be +cardid #3 in the database. Exit mythtv-setup.
    6. +
    7. Configure the second capture card on the master backend. This will +get cardid #4 in the database. Exit mythtv-setup.
    8. +
    +

    +

    Using this scheme, the master backend will not use both capture cards until +one of the following happens: +

      +
    • There are four recordings scheduled for the same time
    • +
    • Both slaves are unavailable
    • +
    +

    +

    The scheduler in MythTV checks whether an encoder is available; if a slave +backend isn't running, its encoder isn't available, so the scheduler will +look for the next available encoder. This makes MythTV very flexible; slave +tuners can come and go, and as long as there are enough tuners for what +you'd like to record it doesn't matter which tuner in particular is going to +be used.

    +

    Using this round-robin scheme along with a shared storage directory like +NFS and enabling the Master Backend Override setting will allow you to view +content even if the slave backend that recorded a program is not available.

    + +

    23.14 Using the transcoder +

    + +

    MythTV's built-in transcoder re-encodes recordings from one codec to +another. The transcoder has three primary uses; it can transcode MPEG-2 +files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, +etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used +on systems that can not real-time encode to MPEG-4 using a framegrabber) to +MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file +while leaving the file in MPEG-2 format.

    +

    When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format +is NuppelVideo (nuv). NuppelVideo is a container which provides a method of +keeping the audio and video in sync throughout the recording, which is why +it is used instead of the .avi format. You may have difficulty +playing .nuv files in non-MythTV systems.

    + +

    The original file is removed when the transcoding process is complete. +Unless you're sure that you will be satisfied with the result you may want +to enable the mythtv-setup option which causes mythbackend +to keep the original file after transcoding. This option is on the second +page of the General section in mythtv-setup. Enabling this allows you to +compare the two files and restore the original if you like. Outside of the +initial setup phase it usually isn't necessary to leave this option enabled. +A recording can be transcoded in two ways:

    +

    +

      +
    • Automatically transcode the file once it has completed +recording.
    • +
    • Manually choosing to transcode a recording, usually after +importing a cutlist or manually marking commercials to be +removed.
    • +
    +

    +

    The second method can be used on files that have already been transcoded (or +files which were are already in the desired format), so only the frames +immediately following a cut section will be re-encoded, resulting in a +minimal loss of quality when removing commercials with the added benefit of +being extremely quick.

    +

    The current transcoding system has a lot flexibility, but there are +a number of steps involved in setting it up. In order to +automatically transcode a given recording you must do the following: +

      +
    1. Configure recording profile for your capture source and enable +transcoding on one or more profiles.
    2. +
    3. Configure one or more transcoding profiles.
    4. +
    5. Create or alter existing scheduled recordings to enable +transcoding for that recording.
    6. +
    +

    + +

    Configuring Recording Profiles to Allow Transcoding

    + +

    Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles +section in mythfrontend. Choose the option that corresponds to +your capture source (ignore the Transcoders for now.) Choose the quality +profile you are interested in using for transcoding. Ensure that "Enable +auto-transcode after recording" is checked.

    + +

    Configure Transcoding Profiles

    + +

    Enter the Recording Profiles > Transcoders menu. There are three quality +settings to choose from and a two special Autodetect settings. Later, when +scheduling recordings you'll have to choose one of Autodetect, High, Medium, +and Low Quality transcode settings in addition to the recording profile we +set up above. If you choose the Autodetect transcoding profile for a +recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for +recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the +"Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you +choose one of the others (High, Medium, Low) it will use the settings in +that profile regardless of the codec of the original recording.

    +

    There are a number of options for transcoding but the simplest is to enable +lossless transcoding (the first option) which subsequently removes all other +options. Enabling lossless encoding simply removes commercials (if you've +marked them) and attempts to clean up MPEG-2 streams. Note that with this +option MythTV will not apply any sort of filters and will only attempt to +normalize the stream into something cleaner and less likely to have trouble +with other less forgiving MPEG-2 hardware/software (including players, video +editors, etc.)

    +

    If you enable resizing of the recording the next page has the settings for +choosing the final resolution. MythTV will scale the video as appropriate, +not crop it to this resolution.

    +

    The final two pages allow configuration of the video and audio codecs. +Although RTjpeg is an option for video codec there is no reason to transcode +to this format because it will produce larger files than MPEG-4 and +the recording will take more CPU power to play back. The MPEG-4 +settings are described in the documentation for the ffmpeg project +at +http://ffmpeg.sourceforge.net/ffmpeg-doc.html. It's a matter of +trial and error to discover which settings achieve a good compromise between +size and quality.

    +

    If you wish to return to the default settings, they are Bitrate: 2200-2500, +MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is +enabled. The other options are unchecked.

    + +

    Create/Alter Scheduled Recordings to Enable Transcoding

    + +

    Transcoding is actually enabled on a per-recording basis. Two things +must be true before any given recording will be auto-transcoded, however. +The first is that the recording must have been made with a recording profile +that has auto-transcode enabled. Under "Storage Options" for the recording +you must set the "Record using the "X" profile" to the profile you +configured in the first step. In addition, under the "Post Recording +Options" section of the recording you must also set "Transcode new +recordings." This is also where you specify the Transcoding profile to use +(Auto, High, Medium, Low.)

    +

    It may not be obvious from above but the flexibility of this system is +primarily to make it possible to auto-transcode a show recorded via one +source (ie: pcHDTV 3000), and not transcode that same show if it's recorded +on another kind of card (ie: PVR-250.) There are other uses however. You +could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 +from the PVR-250 but there is no need to transcode the recordings made with +the V4L card, as it's already likely to be MPEG-4.

    +

    As an example, you could configure the Default profile for "Hardware DVB +Encoders" (the profile group used for DVB cards, including ATSC cards like +the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for +MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. +For programs that are available on both kinds of cards you'd set the +recording profile to Default and enable auto-transcoding in the record +settings. Then you pick your transcoding profile. The result is that when +a program is recorded on your DVB card, it will get transcoded. When it +plays on a channel available via your PVR card, it won't be.

    + +

    Manual Transcoding

    + +

    Manually transcoding is activated while watching a show by hitting 'x', +from the OSD menu by choosing the Transcode option, or by choosing Job +Options/Transcode from the info menu from the Watch or Delete +Recordings screens.

    +

    The transcoding profile used for manual transcoding is whatever was set when +the recording was originally configured, even if you didn't enable +auto-transcoding. The only way to change what transcoding profile will be +used is to alter the transcoder column in the recorded table in the +database. The transcoder column contains a number which corresponds with +the id column in the recordingprofiles table. You can find out the id +number for each profile in the transcoder group with an SQL command like:

    +

    +

    +
    +mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup;
    ++----+----------------+------------+------------+--------------+
    +| id | name           | videocodec | audiocodec | profilegroup |
    ++----+----------------+------------+------------+--------------+
    +| 21 | RTjpeg/MPEG4   | MPEG-4     | MP3        |            6 |
    +| 22 | MPEG2          | MPEG-4     | MP3        |            6 |
    +| 27 | High Quality   | MPEG-4     | MP3        |            6 |
    +| 28 | Medium Quality | MPEG-4     | MP3        |            6 |
    +| 29 | Low Quality    | MPEG-4     | MP3        |            6 |
    ++----+----------------+------------+------------+--------------+
    +5 rows in set (0.01 sec)
    +
    +mysql>                                                                        
    +
    +
    +

    +

    Armed with the knowledge of what the profile ID's are you can also choose to +run mythtranscode from the command line and explicitly specify the transcoder +profile. Run mythtranscode --help for usage information.

    + +

    23.15 Changing your hostname +

    + +

    If you need to change the name of the computers used with MythTV you'll +need to perform a sequence of steps. There are a number of pieces of +information that MythTV keeps track of which are tied to the hostname of the +box, so changing the hostname involves altering the name in the +operating system and in the MySQL database. In the examples below, the old +name of the system was "frontend1" and we're going to change it to +"kidsroom".

    +

    +

    + + +NOTE: Changing the hostname using direct SQL update commands will +break things. You MUST use this indirect method. +
    +

    +

    1. Stop all backends. If you run mythbackend from a terminal +session, press control-c. If your backends are started with an init +script, you would do something like the following: +

    +
    +$ su
    +# /etc/init.d/mythbackend stop
    +
    +
    +

    +

    2. Change the hostname.

    +

    For Red Hat and derived distributions, edit the +/etc/sysconfig/network file. Look for +HOSTNAME=frontend1 and change this to +HOSTNAME=kidsroom or whatever you'll be using. For other +distributions, refer to the documentation, such as the +

    +hostname(1)
    +
    + man page.

    + +

    To alter the +hostname in the current session, run: +

    +
    +# hostname kidsroom
    +
    +
    +

    +

    3. Dump the database. +

    +
    +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
    +
    +
    +

    +

    4. Rename the host in the database. First, ensure that the new hostname +you'll be using isn't already in the database. +

    +
    +$ grep kidsroom mythtv_backup.sql
    +
    +
    + +Now we're actually going to change the name. The following should all be +typed on the same line: +
    +
    +$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql
    +
    +
    + +If you don't feel comfortable using sed, you can open the +mythtv_backup.sql file in a text editor and perform a global search +and replace. When saving the file, make sure you use the new name, +mythtv_restore.sql or the rest of the steps below will fail.

    +

    5. Drop and recreate the database. +

    +
    +$ mysql -u root
    +mysql>drop database mythconverg;
    +mysql>create database mythconverg;
    +mysql>exit      
    +
    +
    +

    +

    6. Restore the database using your edited version. +

    +
    +$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql
    +
    +
    +

    +

    If you are running slave backends or frontends, don't forget to re-enable +access as detailed in +Modifying access to the MySQL database for multiple systems.

    +

    7. Start the backends. If you use init scripts, do the following, otherwise +start them from terminal consoles. +

    +
    +# /etc/init.d/mythbackend start
    +
    +
    +

    +

    8. Quit and restart all frontends. Delete the mythtv_backup.sql +and mythtv_restore.sql files.

    + +

    23.16 Can I run MythTV on my TiVo? +

    + +

    23.17 Can I run MythTV on my ReplayTV? +

    + +

    No.

    +

    While it is true that the TiVo runs the Linux kernel, and TiVo has released +their changes to the kernel under the GPL, the TiVo is not a +general-purpose computer, and there is no programming information available +for the custom hardware contained within a TiVo. TiVo is under no +obligation to release the source code to their application.

    +

    The ReplayTV runs VxWorks, a Real Time Operating System from Wind River +Systems.

    +

    23.18 Can a wireless connection be used between the frontend and the backend? +

    + +

    Yes, assuming that your wireless connection has sufficient bandwidth to +maintain the datarate between the frontend and the backend. 802.11b should +be sufficient if the encoded bitrate of the content is less than the +datarate of your wireless connection, which in the case of 802.11b would be +approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual +throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed +modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple +wireless frontends, poor signal strength or other factors can severely +impact the viewing experience on the frontend.

    + +

    23.19 How can I burn shows that I have recorded to a DVD? +

    + +

    Use the mytharchive plugin.

    + +

    23.20 Using the DBoxII within MythTV +

    + +

    The configuration of the DBoxII for use within MythTV is tricky (as of +May 16 2005), that's why it's covered here. Your DBoxII has to be running +linux and the Neutrino GUI instead of the stock BetaNova firmware. For +further information, please refer to +http://www.tuxbox.org. Additionally, you need to enable the SPTS +mode in Neutrino.

    +

    +

      +
    • Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input", +the other values have to be adjusted according to your setup. +The default values, except for the "DBOX2 host ip", should work fine.
    • +
    • Define a new video source. It doesn't need to be configured, +you just need to define it. MythTV grabs the EPG from the DBoxII.
    • +
    • Connect the DBoxII to the newly defined input source in "input connections".
    • +
    • Since channel scanning is not implemented yet, you need to define channels +in the "Channel Editor". Make sure that you use the same value for +"Channel Name" as on the DBoxII. You can get a list of available +channels from the web interface of Neutrino at http://ip-of-your-box:80/. +Associate the channel with your new video source and repeat when needed.
    • +
    +

    +

    You may leave the Setup now and proceed as usual.

    + +

    23.21 What do the icons on the Watch Recordings screen mean? +

    + +

    Press "1" or F1 to get a popup.

    +

    23.22 What do the letters mean when I change channels? +

    + +

    These letters let you know what's going on with the backend as it tries +to tune to a channel.

    +

    Lower case = seen

    +

    Upper Case = seen & good +

      +
    • l/L = Lock : This could be seen by PVR-250/BTTV users
    • +
    • a/A = PAT : Any recording transmitted in MPEG
    • +
    • m/M = PMT : Any recording transmitted in MPEG
    • +
    • g/G = MGT : ATSC only
    • +
    • v/V = VCT : ATSC only
    • +
    • n/N = NIT : DVB only
    • +
    • s/S = SDT : DVB only
    • +
    +

    +

    23.23 What is the difference between the various Hauppauge PVR models? +

    + +

    This is covered in the hardware section, and extensively covered on the +Hauppauge website. ( +http://www.hauppauge.com/pages/compare_pvr.html) Please check the +Hauppauge website for the most accurate information.

    +

    A PVR-150 comes in a number of versions: +

      +
    • The PVR-150 (Model 1045) is the retail kit. It comes with a remote +control and an IR Blaster. It does not have a radio tuner.
    • +
    • The PVR-150 MCE (Model 1042) will usually come in a plain white box and is +sold as an OEM device. It does not come with a remote control, since it's +usually used as the second, third, etc capture device.
    • +
    • The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and +comes with a Microsoft Media Center remote control instead of Hauppauge's.
    • +
    • The PVR-150 low profile (Model 1086) is a low-profile card. It has a +radio tuner and is approximately half the height of a standard card. +However, it comes with a low-profile PCI bracket, so it is not suitable for +use in a standard PCI slot without removing the bracket, which may not be +worth the trouble.
    • +
    +

    +

    A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a +remote control.

    +

    The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does +not contain a IR receiver or a remote.

    +

    The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was +not connected to any output jacks, and there doesn't appear to be any way to +pull decoded video from the card, so it's a fairly useless feature.

    +

    The PVR-350 (model 990) has the features of the PVR-250 as well as being +able to decode MPEG-2. The encode and decode functions may be used +simultaneously. The MPEG-2 decoder function gives superior video quality +compared to what you'll find on a standard video card. However, the decoder +function is only available once Linux has started, so you will not see any +boot-time messages. Also, the card is not capable of resolutions higher +than 720x480, so it cannot be used with HDTV. Make a conscious decision +(and ask for advice on the mailing list) that you want to tradeoff potential +HDTV use in the future compared to video quality.

    +

    The X-driver for the PVR-350 support playback using Xv efficiently but does +not support any other 2D or 3D acceleration. For some application this may +place a large load on the host CPU, some will run without any problem and +others (mplayer, xine, xmame etc.) should be configured to utilize the Xv +interface.

    +

    Note that for the PVR-350 there are some +considerations +regarding the way audio is handled.

    +

    The PVR-500 is a dual-encoder version of the PVR-150 card, so you can +simultaneously record two different programs at the same time, because there +are two encoder chips on the PCI card. Hauppuage has also installed an +onboard splitter, so you can use one COAX to feed both tuners. Current +versions of the PVR-500 should come with an adapter to allow you to connect +a second S-Video or composite input, but this will take up a second PCI +slot. Early adopters may need to purchase this item separately.

    + +

    23.24 Changing channels on an external Set Top Box +

    + +

    If you need to use an external Set Top Box (STB), such as for satellite +TV or for digital cable you will need some way for MythTV to tell the STB to +switch to a new channel. There are several methods: +

      +
    1. Use an IR blaster. An IR blaster is an infrared transmitter connected +to your computer. When MythTV needs to change channels it will send IR +pulses, thereby emulating a remote control.
    2. +
    3. Use a direct serial connection. Some STB's have a serial port on the +back, although it may not look like a serial port. It may look like a phone +jack, or a strange VGA connector. It may be labeled "Low Speed Data". A +direct serial connection is more reliable than an IR blaster. Not all STB's +that have a Low Speed Data port have it enabled; you may need to convince +your service provider to turn it on. Stating that you have a Tivo may help; +the Tivo has a direct-connect capability.
    4. +
    5. Use a firewire connection. There is a 6200ch.c in the MythTV +contrib directory which may work for you.
    6. +
    +

    +

    23.25 Configuring one machine to flag all commercials +

    + +

    Commercial flagging can be CPU intensive. By default, the backend that +created a recording is the one which will flag commercials. You may wish to +use a different machine to run commercial flagging.

    +

    On the slower machine:

    +

    Start the mythtv-setup program. Advance through the pages until you get to +the Job Queue page. Turn off the setting that says "Allow Commercial +Detection jobs", thereby preventing any commercial flagging jobs from +running on this machine.

    +

    Next, make sure that "Run Jobs only on original recording host" is turned +OFF so that new jobs are allowed to run anywhere.

    +

    Restart mythbackend since it only reads this setting when it starts +up.

    +

    On the faster machine:

    +

    Start the mythtv-setup program. Advance through the pages until +you get to the Job Queue page. Ensure that "Allow Commercial Detection +jobs" is turned ON for this machine.

    +

    Run mythjobqueue. mythjobqueue will examine the JobQueue +and run any jobs it finds. mythjobqueue should be left running so +that it will pick up any new commercial flagging jobs that are added to the +queue, otherwise new jobs will be added to the queue and your programs won't +be flagged until you run manually run mythjobqueue.

    +

    Using this technique it's possible to add commercial flagging machines as +needed, even on systems that aren't running a backend. It's also possible +to run the commercial flagger in a virtual machine environment such as +VMWare.

    + +

    24. Example Configurations.

    + +

    24.1 Logical Volume Manager (LVM) +

    + +

    LVM greatly increases the flexibility you have in managing your storage +than traditional physical partitions. This section will provide some brief +notes on how to use LVM to create storage space for your video files and how +to add additional disk space in the future. There's lots more that can be +done with LVM, so check the LVM HOWTO +http://tldp.org/HOWTO/LVM-HOWTO/ document for details.

    + +

    +

    + + +NOTE: If you are running MythTV 0.21 and you are using LVM to +create one large filesystem to store your recordings, it's no longer +recommended that you go the LVM route. The preferred solution is to use +Storage Groups. They're more flexible and less +likely to lose all of your recordings if you have a drive failure. +
    +

    +

    If you don't understand how to partition a drive, or how to change the +partition type you should stop and look at documentation on how to perform +these steps.

    +

    +

    + + +BIG FAT WARNING: Using an incorrect parameter can make your files +inaccessible, prevent your computer from booting, etc. Be careful! +
    +

    +

    Make sure your kernel configuration includes LVM support or that it's +available as a module. Today, most vendors include this by default. You'll +also want to ensure that you have a copy of the LVM utilities; check your +distribution, or get the latest versions from +http://www.sistina.com/products_lvm.htm and build them manually.

    +

    Check that the vgscan program is being run at some point during +your boot sequence - most distributions do this by default. Look for a +message during boot up that looks like this: vgscan -- reading all +physical volumes (this may take a while...) If you don't see any +messages during boot, you may need to install a LVM init script or confirm +that you have all of the LVM packages installed from your distribution.

    +

    LVM uses a few concepts you should be familiar with before starting. +

      +
    • PV (Physical Volume). The actual partition on the hard drive.
    • +
    • VG (Volume Group). The aggregation of all the PVs make a VG.
    • +
    • LV (Logical Volume). Subdivision of the pool of space available in +the VG into individual chunks, like /usr, /var/video, etc.
    • +
    +

    +

    The following example assumes that you want to create a LVM partition from a +chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on +/var/video. You later decide to extend this filesystem by adding a new disk: +/dev/hdb.

    +

    You need to create at least one LVM partition for a physical volume. Use +fdisk or your favorite partition editor to set the type to LVM +(0x8e). If you're using an entire disk, create one big partition rather than +using the device itself. e.g. use /dev/hdb1 not /dev/hdb.

    +

    In the following example, you have a 15GB disk. The first 6GB are set as +your boot partition. /dev/hda2 was added as an extended partition, +and within that partition you created the /dev/hda5 linux (ext2) +partition.

    +

    +

    +
    +# fdisk /dev/hda
    +
    +The number of cylinders for this disk is set to 1823.
    +There is nothing wrong with that, but this is larger than 1024,
    +and could in certain setups cause problems with:
    +1) software that runs at boot time (e.g., old versions of LILO)
    +2) booting and partitioning software from other OSs
    +   (e.g., DOS FDISK, OS/2 FDISK)
    +
    +Command (m for help): p
    +
    +Disk /dev/hda: 15.0 GB, 15000330240 bytes
    +255 heads, 63 sectors/track, 1823 cylinders
    +Units = cylinders of 16065 * 512 = 8225280 bytes
    +
    +   Device Boot    Start       End    Blocks   Id  System
    +/dev/hda1   *         1       764   6136798+  83  Linux
    +/dev/hda2           765      1823   8506417+   5  Extended
    +/dev/hda5           765      1823   8506417   83  Linux
    +
    +Command (m for help): t
    +Partition number (1-6): 5
    +Hex code (type L to list codes): 8e
    +
    +Command (m for help): p
    +
    +Disk /dev/hda: 15.0 GB, 15000330240 bytes
    +255 heads, 63 sectors/track, 1823 cylinders
    +Units = cylinders of 16065 * 512 = 8225280 bytes
    +
    +   Device Boot    Start       End    Blocks   Id  System
    +/dev/hda1   *         1       764   6136798+  83  Linux
    +/dev/hda2           765      1823   8506417+   5  Extended
    +/dev/hda5           765      1823   8506417   8e  Linux LVM
    +
    +Command (m for help): w
    +
    +#
    +
    +
    +

    +

    Create the LVM physical volume from the partitions (repeat if you have +multiple partitions to use): +

    +
    +# pvcreate /dev/hda5
    +
    +
    + +Create a LVM volume group out of this physical volume called "VGforMyth" that is +allocated in chunks that are a multiple of 64MB +
    +
    +# vgcreate VGforMyth -s 64m /dev/hda5
    +
    +
    + +Create a logical volume of 5GB called "video" and then create the reiserfs +filesystem and mount it: +
    +
    +# lvcreate --name video --size 5G VGforMyth
    +# mkreiserfs /dev/VGforMyth/video
    +# mount /dev/VGforMyth/video /var/video
    +
    +
    + +Now create a 3GB volume for mythmusic files if you like: +
    +
    +# lvcreate --name music --size 3G VGforMyth
    +# mkreiserfs /dev/VGforMyth/music
    +# mount /dev/VGforMyth/music /var/music
    +
    +
    + +Display the volume group status: +# vgdisplay -v

    +

    Now, lets suppose you want to add a 60GB hard disk to the system as hdb and +allocate 50GB of it to video storage.

    +

    First, create a single partition /dev/hdb1 covering the whole disk and make +it type 0x8e using your partition editor.

    +

    # fdisk /dev/hdb +.... create partition, set type, save and reboot if it says you have to

    +

    Create the new LVM physical volume:

    +

    # pvcreate /dev/hdb1

    +

    Add the new physical volume to the volume group:

    +

    # vgextend VGforMyth /dev/hdb1

    +

    +

    + + +NOTE: You may get errors at this point stating that there are no +physical volumes available for adding to the LV, even though you know for a +fact that there are. You may need to specify the physical volume in the /dev/ide/host/bus/target/lun/etc format. +
    + +Once you've completed one of the following two procedures, use df +to check that you've got more space.

    +

    Make the logical volume used for video bigger:

    +

    # lvextend --size +50G /dev/VGforMyth/video

    +

    ReiserFS

    + +

    Unmount, resize and remount the filesystem. Technically, you don't need to +unmount and remount the ReiserFS. +

    +
    +# umount /var/video
    +# resize_reiserfs /dev/VGforMyth/video
    +# mount /dev/VGforMyth/video /var/video
    +
    +
    +

    + +

    ext2 or ext3

    + +

    LVM comes with a program called resize2fs.

    +

    Unmount, resize and remount the filesystem. The filesystem must be +unmounted during this procedure. +

    +
    +# umount /var/video
    +# resize2fs --size +50G /dev/VGforMyth/video
    +# mount /dev/VGforMyth/video /var/video
    +
    +
    +

    +

    xfs

    + +

    XFS does not need to be unmounted to extend the size: +

    +
    +# xfs_growfs /var/video
    +
    +
    +

    +

    24.2 Advanced Partition Formatting +

    + +

    The partitions that your distribution sets up for you may not be +optimized for large files. Using LVM in conjunction with the following +techniques can be quite useful.

    +

    Unlike a typical filesystem, a MythTV video partition is usually a very +large filesystem filled with a fairly small number of large files. +Filesystem I/O is usually not an issue, even in multi-tuner and/or +multi-frontend setups.

    +

    There is however, one aspect of filesystem performance that can have a +bearing on the performance of MythTV. In Linux, deleting a file will +utilize I/O bandwidth until the deletion has been completed. If deleting +the file takes long enough, the video capture buffer may overrun, thereby +resulting in dropped frames. Some filesystems are faster at deleting files +than others and, for multi-gigabyte MythTV video files, these differences +can be significant.

    +

    Fortunately, there are published tests ( +http://aurora.zemris.fer.hr/filesystems/big.html) that provide +insight into filesystem performance under conditions relevant to MythTV +usage. In addition, some limited testing (archived at +http://www.gossamer-threads.com/lists/mythtv/users/52672) +with very large files (10 gigabytes) was reported in the MythTV Users +mailing list.

    + +

    Ext2

    + +

    Ext2 was the defacto standard Linux filesystem for many years. It is +stable, provides good I/O performance and can quickly delete large files. +The primary disadvantage of Ext2 is that it is not a journaling filesystem, +so a file system consistency check (fsck, which is normally only performed +after a system crash) can take many hours on a filesystem the size of a +typical MythTV partition.

    + +

    Ext3

    + +

    Ext3 is Ext2 with a journal, so your biggest gain is that in case of a +crash and reboot you won't have to wait very long for your partition to be +remounted.

    +

    There are options available when formatting an Ext3 partition, as in: +

    +
    +# mkfs.ext3 -T largefile4 /dev/hdb1
    +
    +
    +

    +

    This example assumes that /dev/hdb1 has already been created using +fdisk. If you're using LVM, /dev/hdb1 may be something like +/dev/VGforMyth/video.

    +

    The "-T largefile4" option creates one inode per 4 megabytes, which can +provide a few percent more storage space. However, tests indicate that +using the "-T largefile4" option can drastically increase the amount of time +required to delete a large file and thus it should only be used with encoder +settings that produce small video files (YMMV).

    +

    You can check on your filesystem using the dumpe2fs program. See +the man page for details.

    +

    ReiserFS

    + +

    The Reiser filesystem is another journaling filesystem commonly +distributed with Linux. It is known to be an extremely efficient filesystem +and it especially excels at managing partitions containing a large number of +small files. However, tests indicate it is not the fastest at deleting very +large files. For that reason, it may not be the best choice when using +encoder bitrates that produce very large files.

    + +

    JFS

    + +

    JFS (Journaling File System) is a journaling filesystem originally +developed by IBM for AIX which was later released as open source. While not +as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora +Core and Mandriva as well as other distros. According to tests, JFS is the +file deletion speed king, deleting virtually any file in under one second, +even files as large as 10 gigabytes.

    + +

    XFS

    + +

    XFS is a journaling file system originally developed by SGI for Irix, and +later released as open source. While not a part of the default RedHat Linux +9 or Fedora Core installation (although it is a part of Mandriva and Fedora +Core 2+), it can be easily installed via ATrpms. XFS provides deletion +speeds for large files only slightly slower than JFS. According to the test +results shown at ( +http://aurora.zemris.fer.hr/filesystems/big.html), XFS provide +higher I/O rates than JFS, albeit at a higher CPU loading. This may cause +issues if you do not have the spare CPU capacity to handle XFS, potentially +leading to dropped frames.

    +

    +

    +

    24.3 Migrating from DataDirect Labs to Schedules Direct +

    + +

    MythTV v0.20.2 or later is required to natively support Schedules Direct. +Code has been included to make the transition as simple as possible.

    +

    You do not need to delete your existing video sources or add new ones!

    +

    The following steps should work for most users: +

      +
    • Create a Schedules Direct account and use the same information as your +existing lineups at Zap2It Labs. Do not add or delete channels at this +time.
    • +
    • Shut down any running mythfrontend and mythbackend programs.
    • +
    • Perform a backup of your existing database. See +Saving or restoring the database for instructions.
    • +
    • Run mythtv-setup -> Video Sources. Change the grabber to +Schedules Direct, update the username and password fields with the account +information you created at Schedules Direct and select "Retrieve Lineups". +Click Finish.
    • +
    • Exit mythtv-setup and run mythfilldatabase. Check +if there were any errors.
    • +
    • Restart your mythbackend and mythfrontend programs.
    • +
    +

    + +

    24.4 Caching support for Schedules Direct +

    + +

    MythTV 0.20.2 or later supports caching of downloaded information from +Schedules Direct, so devices that share a common source do not require +multiple downloads.

    +

    Before beginning, perform a backup of your existing database. See +Saving or restoring the database for instructions.

    +

    In the following scenario, assume that you have the following: +

      +
    1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source.
    2. +
    3. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set Top Box.
    4. +
    +

    +

    What we are going to do is to create a single lineup at Schedules Direct and +then create two Video Sources which use the same login information but have +different channels associated with them.

    +

    On your Schedules Direct account, create a lineup that has all of the +channels that you can receive. Because we have a Set Top Box (STB), choose +a Digital lineup. Yes, this means that you may have 900 channels in this +lineup, but that's OK.

    +

    Use the Schedules Direct channel editor and unselect any channels that you +can't tune without the STB. This will usually be channels higher than 125, +but check your CATV provider lineup if you're not sure. Once you've +deselected them (using a click on the first channel you can't receive and +then a shift-click on the last channel you can't receive will deselect all +the channels in between those two.) click the Save Changes button at the +bottom of the screen.

    +

    In mythtv-setup, create a Video Source with an appropriate name. +"SD-Analog Only" will be used in this example. Click "Retrieve Lineups" +and select the digital lineup you just created at Schedules Direct.

    +

    Click "Finish" to return to the Video sources selector and then press the +ESC key to go back to the main screen.

    +

    Now choose Input Connections. Select the PVR-150 which is connected +directly to the CATV. Set the Video Source to "SD-Analog Only" and click +"Fetch channels from listings source".

    +

    Set the start channel to an appropriate value.

    +

    NOTE: There is a bug where the "Fetch" command may not work; you +can tell that the Fetch did not retrieve any channels in one of two ways: in +the text-mode console, you will see a connection to Schedules Direct, but it +doesn't appear to retrieve any channel information: +

    +
    +2007-08-25 15:03:05.526 New DB DataDirect connection
    +2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
    +2007-08-25 15:03:05.707 New DB connection, total: 3
    +2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital
    +2007-08-25 15:03:06.623 Data fetching complete.
    +2007-08-25 15:03:06.624 DataDirect: Deleting temporary files
    +
    +
    +

    +

    or, the "Please add channels to this source" message in the "Starting +channel" field stays on the screen.

    +

    If either of these happens, save the information on this screen by clicking +the "Finish" button. Exit back to the Input connections screen by pressing +ESC, then select this Input Connection again. This time the Fetch will work +and the "Please add channels to this source" message will disappear.

    +

    If you look at the text-mode console, you'll see this if the channel +retrieval is working: +

    +
    +2007-08-25 15:04:32.437 New DB DataDirect connection
    +2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM
    +2007-08-25 15:04:32.622 New DB connection, total: 3
    +2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost
    +2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital
    +2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC).
    +2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV).
    +2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET).
    +2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO).
    +2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM).
    +2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV).
    +2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC).
    +2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN).
    +2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH).
    +
    +
    +

    +

    Repeat the Input Connection configuration for any other capture devices that +are connected directly to the CATV system. You do not need to click Fetch +once you've done one successful download of the channel information - the +Starting channel should be automatically populated.

    +

    Go back to Schedules Direct and re-enable the channels that you had +previously deselected, then click Save Changes.

    +

    Create a new Video Source, here called "SD-All Digital Channels". Perform +the same "Retrieve Listings" you did before.

    +

    Go back to the Input Connections screen, select the PVR-250 which is +connected to the STB, assign the "SD-All Digital Channels" video source and +perform a retrieve channels. This will pull down the complete channel +listing, but only for this device.

    +

    When mythfilldatabase runs, it will cache the "big" download which +is appropriate for the STB, and then copy the information to the channels +that can only be accessed without the STB. But by default +mythfilldatabase is going to notice that the "Analog only" video +source is missing the channels that are in the Digital lineup you created at +Schedules Direct, so we need to override the addition of new channels.

    +

    When you run mythfilldatabase to populate your database, you'll +need to run it like this:

    +

    +

    +
    +$ mythfilldatabase --remove-new-channels
    +
    +
    +

    +

    You will also need to modify how the mythbackend calls +mythfilldatabase when it performs its automatic listings update.

    +

    In mythfrontend, select "Setup" -> "General".

    +

    Continue press ENTER until you reach the Mythfilldatabase configuration +screen. In the "mythfilldatabase Arguments" field, type +--remove-new-channels

    +

    then press the TAB key until you reach Finish, then press ENTER to save. +You can then press ESC until you return to the main screen.

    + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html new file mode 100644 index 0000000..6efe675 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.html @@ -0,0 +1,250 @@ + + + + + Installing and using MythTV + + + + + +Next +Previous +Contents +
    +

    Installing and using MythTV

    + +

    Robert Kulagowski, +mailto:rkulagow@rocketmail.com

    2008-06-04, v0.21.02 +
    +Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +
    +

    +

    1. First things first.

    + + +

    +

    2. Introduction.

    + +

    +

    3. Checking prerequisites.

    + + +

    +

    4. System Configuration Requirements for Compiling MythTV.

    + + +

    +

    5. Downloading and compiling.

    + + +

    +

    6. MySQL.

    + + +

    +

    7. Configuring Sound.

    + + +

    +

    8. Setting up a remote control.

    + + +

    +

    9. Configuring MythTV.

    + + +

    +

    10. Configuring mythfrontend.

    + + +

    +

    11. Using MythTV.

    + + +

    +

    12. Scheduling Recordings.

    + + +

    +

    13. MythPlugins.

    + +

    +

    14. MythWeb.

    + + +

    +

    15. MythGallery.

    + + +

    +

    16. MythGame.

    + + +

    +

    17. MythMusic.

    + + +

    +

    18. MythWeather.

    + +

    +

    19. MythVideo.

    + +

    +

    20. MythDVD.

    + + +

    +

    21. MythNews.

    + +

    +

    22. Troubleshooting.

    + + +

    +

    23. Miscellaneous.

    + + +

    +

    24. Example Configurations.

    + + +
    +Next +Previous +Contents + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf new file mode 100644 index 0000000..47e70c1 Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.pdf differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml new file mode 100644 index 0000000..08fc851 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.sgml @@ -0,0 +1,7977 @@ + +
    +Installing and using MythTV +<author>Robert Kulagowski, <url url="mailto:rkulagow@rocketmail.com" +name="mailto:rkulagow@rocketmail.com"> +<date>2008-06-04, v0.21.02 +<abstract> +Initially, installation of MythTV seems like a huge task. There are lots +of dependencies, and various distributions seem to do the same thing +different ways. This document will attempt to give general installation +instructions, as well as including distribution-specific instructions where +necessary. +</abstract> +<toc> +<sect>First things first. +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: Please note that I, Robert Kulagowski, am <em>NOT</em> the +author/programmer of the MythTV application! I can not give you +personalized installation support. If you are having issues installing +MythTV you should examine the archives, or post your question to the +MythTV-users mailing list. If you send me "Does MythTV work with 'X'"? +messages - I will simply instruct you to ask your question on the +mythtv-users mailing list. +</caption> +</figure> +<sect1>What is MythTV? +<p>MythTV is a GPL licensed suite of programs that allow you to build the +mythical home media convergence box on your own using Open Source software +and operating systems. MythTV is known to work on Linux and Mac OS X +(PowerPC and Intel). It does not run on Windows. + +MythTV has a number of capabilities. The television portion allows you to +do the following: +<itemize> +<item>You may pause, fast-forward and rewind live Television. +<item>You may install multiple video capture cards to record more than one +program at a time. +<item>You can have multiple servers (called "backends"), each with multiple +capture cards in them. All scheduling is performed by the Master backend, +which arbitrates which recording will be performed by each device. All +recording requests are managed by the Master backend, so you can schedule a +recording from any client. +<item>You can have multiple clients (called "frontends" in MythTV parlance), +each with a common view of all available programs. Any client can watch any +program that was recorded by any of the servers, assuming that they have the +hardware capabilities to view the content; a low-powered frontend will not +be able to watch HDTV, for example. Clients can be diskless and controlled +entirely by a remote control. +<item>You may use any combination of standard analog capture card, MPEG-2, +MJPEG, DVB, HDTV, USB and firewire capture devices. With appropriate +hardware, MythTV can control set top boxes, often found in digital cable and +satellite TV systems. +<item>Program Guide Data in North America is downloaded from +schedulesdirect.org, a non-profit organization which has licensed data from +Tribune Media Services. This service provides almost two weeks of +scheduling information. Program Guide Data in other countries is obtained +using XMLTV. MythTV uses this information to create a schedule that +maximizes the number of programs that can be recorded if you don't have +enough tuners. +<item>MythTV implements a UPNP server, so a UPNP client should automatically +see content from your MythTV system. +</itemize> +Other modules in MythTV include: +<itemize> +<item>MythArchive, a tool to create DVDs +<item>MythBrowser, a web browser +<item>MythControls, an application to configure your remote control +<item>MythFlix, a Netflix module +<item>MythGallery, a picture-viewing application +<item>MythGame +<item>MythMusic, a music playing / ripping application which supports MP3 +and FLAC +<item>MythNews, a RSS news grabber +<item>MythPhone, phone and videophone using SIP. +<item>MythVideo, DVD ripper and a media-viewer for content not created within MythTV +<item>MythWeather +<item>MythWeb, which allows you to control your MythTV system using a web +browser. With MythWeb, you can schedule and delete recordings, change +keybindings and more. With proper security, you may even schedule a program +over the Internet and have it immediately acted on by the Master backend. +</itemize> +<sect1>QuickStart +<p>Custom mini-distributions are available to make it easier to install +MythTV. A mini-distribution removes many of the "general purpose" +workstation / server software packages that may be installed by default if +you use one of the big-name OS packages. + +See <url url="http://mysettopbox.tv" name="http://mysettopbox.tv"> if you'd +like to install a custom version of Knoppix optimized for MythTV. + +See <url url="http://www.minimyth.org" name="http://www.minimyth.org"> if you'd like +to install MythTV onto a diskless system. + +See <url url="http://bit.blkbk.com" name="http://bit.blkbk.com"> if you'd +like to install MythTV on a Xbox. +<bf>NOTE</bf>: Site appears unmaintained. + +See <url url="http://wilsonet.com/mythtv/" +name="http://wilsonet.com/mythtv/"> for instructions tailored to RedHat's +Fedora Core distribution. + +See <url url="http://www.mythbuntu.org" name="http://www.mythbuntu.org"> if +you'd like to install a customized version of Ubuntu optimized for MythTV. + +There is a MythTV wiki at <url url="http://wiki.mythtv.org" +name="http://wiki.mythtv.org">. + +If you are installing this version for Schedules Direct support, please see +the <ref id="migratingtoSD" name="Migrating from DataDirect Labs to +Schedules Direct"> section for additional information. + +<sect1>Upgrading from previous versions +<p>The upgrade from previous versions should be transparent. Any changes to +the database structure should be applied automatically. + +It is <em>strongly</em> recommended that you back up your database before +installing a new version of MythTV. + +See <ref id="backupdb" name="Saving or Restoring the database"> for instructions. + +<sect1>How to obtain this document / PDF versions of this document <label id="how_to_obtain"> +<p>This HOWTO document is maintained at the primary MythTV website: <url +url="http://www.mythtv.org" name="http://www.mythtv.org"> by Robert +Kulagowski <url url="mailto:rkulagow@rocketmail.com">. + +This document is available as a single-page HTML document at <url +url="http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html" +name="http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html"> or as a PDF +at <url url="http://www.mythtv.org/docs/mythtv-HOWTO.pdf" +name="http://www.mythtv.org/docs/mythtv-HOWTO.pdf">. + +This HOWTO is for MythTV v0.21 + +Release notes for this version may be found in the MythTV Wiki at <url +url="http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21" +name="http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21"> + +<sect1>Books about MythTV +<p>If you would like to purchase a book specifically about MythTV: + +<itemize> +<item>Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and Korelc +<item>Practical MythTV: Building a PVR and Media Center PC, ISBN 978-1590597798 by Smith and Still +</itemize> + +<sect1>Document conventions +<p>The following conventions are used throughout this document.<newline> +<bf>boldface</bf> - used for program names.<newline> +<tt>typewriter</tt> - used for program paths.<newline> +<em>emphasis</em> - Pay attention here.<newline> + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption> +Pay more attention. +</caption> +</figure> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +Ignore at your own peril. +</caption> +</figure> + +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +Feature that has been added to SVN (subversion, a revision control system) +but is not available in the current release. +</caption> +</figure> + +<sect1>Mailing lists / getting help +<p>It's recommended that you join the user list at <url +url="http://www.mythtv.org/mailman/listinfo/mythtv-users" +name="http://www.mythtv.org/mailman/listinfo/mythtv-users">. The developer +list is at <url url="http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev" +name="http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev">. Please keep +the developer list strictly for development-related issues. + +Searchable archives for the lists are available at <url +url="http://www.gossamer-threads.com/lists/mythtv/" +name="http://www.gossamer-threads.com/lists/mythtv/">. + +<sect1>IRC +<p>There are two IRC channels dedicated to MythTV which can be found on +irc.freenode.net +<itemize> +<item>mythtv +<item>mythtv-users +</itemize> + +The <tt>mythtv</tt> channel is where the developers discuss code. It is +<em>not</em> a user-support channel. Please don't ask non-development +related questions there. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +Really. Even if there's no one in the mythtv-users IRC group or everyone +seems to be ignoring you. +</caption> +</figure> + +<sect1>Bug database +<p>If you feel you need to contribute to a bug database, use the MythTV bug +ticketing system at <url url="http://svn.mythtv.org/trac" +name="http://svn.mythtv.org/trac">. + +Good entries will contain the following: +<enum> +<item>Qt version +<item>Linux distribution +<item>gcc version +<item>the last entry in config.log to detail how you compiled +<item>MythTV version numbers (<em>e.g.</em>from mythfrontend --version) +<item>Hardware +<item>How you are able to reproduce the bug +</enum> + +See the instructions on how to debug in <ref id="debugging" name="Section 22">. + +The bug database is not a chat room, so restrict your entries to what is +relevant. It's also not a repository of feature requests; a feature request +without an accompanying patch file to implement that feature will be quickly +closed. There is a feature wishlist on the wiki at <url +url="http://www.mythtv.org/wiki/index.php/Feature_Wishlist" +name="http://www.mythtv.org/wiki/index.php/Feature_Wishlist">. There is no +guarantee that anything on the wishlist will ever get code written to +implement it. + +If a developer closes out your bug, it's likely you didn't provide enough +information. Don't re-open a bug without providing additional information. + +<sect1>Contributing to this document +<p>Contributions to the HOWTO are welcome, especially if you find a +grammatical or spelling error, or if the wording of something is just plain +confusing. + +If you'd like to make a new contribution, create a ticket at <url +url="http://svn.mythtv.org/trac" name="http://svn.mythtv.org/trac"> and +click "New Ticket". The type should be set to "patch" and the owner set to +"rkulagow" to ensure that I see your contribution. + +Please send it as either SGML or as plain text. <em>NO HTML</em>. The +source used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of +SGML! A quick look at the source of this HOWTO will show that it is not +difficult, because there aren't that many tags to worry about, so at least +<em>try</em> to submit as SGML. See the Linuxdoc HOWTO at <url +url="http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html" +name="http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html"> for information +on the linuxdoc format itself, or look at the <tt>mythtv-HOWTO.sgml</tt> +file as an example. + +To create the actual patch, run <bf>diff -u origfilename newfile > +doc.patch</bf> and attach your contribution to the trac ticket. + +<sect>Introduction. +<p>This HOWTO document will focus on manually building MythTV in a North +American environment. If you have installation instructions for a different +region or Linux distribution, please send them to the author so that it can +be included in other versions of this document. + +<sect>Checking prerequisites. +<p>You must ensure that any firewalls (either hardware, or a software +firewall installed by your distribution) will not block access to the ports +that will be used by the MythTV clients and servers on the "inside" LAN. +The ports for MySQL (TCP port 3306) and mythbackend (TCP ports 6543 and +6544) must be open. It is <em>strongly</em> recommended that you do +<em>not</em> expose the MythTV and MySQL ports to the Internet or your +"Outside" LAN. + +<sect1>Hardware +<p>Hardware selection is a complex topic, one this HOWTO will only discuss +briefly and in general terms. The following subsections offer some general +guidance but stop short of offering specific recommendations. + +For a good MythTV experience, you must understand that MythTV exercises your +hardware more than a typical desktop. Encoder cards generate DMA across the +PCI bus. The CPU is busy encoding / decoding video. Hard drives are +constantly reading and writing data. Building a MythTV system on older / +"spare" hardware may be an exercise in frustration and can waste many hours +of valuable time. + +For more detail about actual configurations that others have used, Mark +Cooper has setup a hardware database at <url +url="http://pvrhw.goldfish.org/" name="http://pvrhw.goldfish.org/">. The +website will let you browse what other users have reported as their hardware +configuration, and how happy they are with the results. + +If you have specific questions about the suitability of specific hardware +choices, you can consult the archives of the mythtv-users mailing list at +<url url="http://www.gossamer-threads.com/lists/mythtv/" +name="http://www.gossamer-threads.com/lists/mythtv/"> or +post a question to the list. +<sect2>CPU Type and Speed +<p>Selection of CPU type and speed is one of the trickiest elements of +hardware selection, mainly because there are so many tradeoffs which can be +made. For example, if you have plenty of CPU, you can use higher bitrates +or capture sizes, etc. + +MythTV has two modes of operation. First, it can function as a software +video encoder, which means that it uses a fairly generic "dumb" video +capture card to get frames of video, encodes them using the CPU on your +motherboard and writes them to disk. High-end video capture cards and +devices like the TiVo and ReplayTV have dedicated encoder chips which use +specialized hardware to convert the video stream to the MPEG-2 format +without using the motherboard CPU. The main CPU has the responsibility of +running the Operating System and reading and writing the encoded frames to +the disk. These tasks have fairly low CPU requirements compared to encoding +video, which is why a device like a Series 1 TiVo can run with only 16MB of +RAM and a 54MHz CPU. + +There are many variables that go into the question: "How fast a CPU do I +need to run MythTV"? Obviously, the faster your CPU, the better your +experience will be with MythTV. If you are using the software MPEG-4 +encoder and performing the "Watch TV" function, where the CPU is both +encoding and decoding video simultaneously to allow Pause, Fast Forward and +Rewind functions for live TV requires more CPU then just encoding or +decoding. MythTV also supports multiple encoder cards in a single PC, +thereby increasing the CPU requirements if you plan on simultaneously +encoding multiple programs. As a general guideline, plan on 1GHz per +encoder if you are doing software-based encoding, less if you are using a +hardware-based encoder. + +Here are a few data points: +<itemize> +<item>A PIII/733MHz system can encode one video stream using the MPEG-4 +codec using 480x480 capture resolution. This does not allow for live TV +watching, but does allow for encoding video and then watching it later. +<item>A developer states that his AMD1800+ system can <bf>almost</bf> +encode two MPEG-4 video streams and watch one program simultaneously. +<item>A PIII/800MHz system with 512MB RAM can encode one video +stream using the RTjpeg codec with 480x480 capture resolution and play it back +simultaneously, thereby allowing live TV watching. +<item>A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps file +created on a different system with 30% CPU usage. +<item>A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files and +simultaneously serve content to a remote frontend. +</itemize> + +The second mode of operation is where MythTV is paired with a hardware-based +video encoder, such as a Matrox G200 or a Hauppauge +WinTV-PVR-150/250/350/500. In this mode, because the video encoding is +being done by a dedicated video processor, the host CPU requirements are +quite low. See the <ref id="video_capture_device" name="Video Capture +Device"> section for details. + +The price differential between a frame grabber and a card that implements +hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 series, is now less +than $30 US. Primary development in MythTV has transitioned to supporting +MPEG-2 capture devices and HDTV, so if given the option, go with the +hardware MPEG-2 encoder. + +If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use the +hardware-based video decoder for playback, which further reduces CPU +requirements. + +<sect2>Memory +<p>A MythTV host that is both a backend and a frontend and using software +encoding with a single capture card should run adequately in 256MB of RAM. +Additional RAM above 256MB will not necessarily increase performance, but +may be useful if you are running multiple encoders. + +<sect2>Hard Disk(s) +<p>Encoded video takes up a lot of hard disk space. The exact amount depends +on the encoding scheme, the size of the raw images and the frames per +second, but typical values for MythTV range from 700 megabytes/hour for +MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 GB/hour for ATSC HDTV. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You <em>must</em> use DMA for hard drive access to prevent +choppy or jittery video. Not all distributions enable DMA at boot time. +See the Troubleshooting Section for <ref id="Setting_DMA" +name="instructions"> on how to do this.</caption> +</figure> + +Writing video to disk is sensitive to timing issues; RTjpeg requires less +CPU with the tradeoff being larger files and needing to write to the disk +faster. MPEG-4 requires more CPU, but the files are smaller. At the +default resolution, MPEG-2 creates the largest files of all with almost no +CPU impact. + +See the Troubleshooting <ref id="Setting_DMA" name="section"> for more +information. + +<sect2>Filesystems +<p>MythTV creates large files, many in excess of 4GB. You <em>must</em> +use a 64 or 128 bit filesystem. These will allow you to create large files. +Filesystems known to have problems with large files are FAT (all versions), +and ReiserFS (versions 3 and 4). + +Because MythTV creates very large files, a filesystem that does well at +deleting large files is important. Numerous benchmarks show that XFS and +JFS do very well at this task. You are <em>strongly</em> encouraged to +consider one of these for your MythTV filesystem. JFS is the absolute best +at deletion, so you may want to try it if XFS gives you problems. MythTV +.21 incorporates a "slow delete" feature, which progressively shrinks +the file rather than attempting to delete it all at once, so if you're more +comfortable with a filesystem such as ext3 (whose delete performance for +large files isn't that good) you may use it rather than one of the +known-good high-performance file systems. There are other ramifications to +using XFS and JFS - neither offer the opportunity to shrink a filesystem; +they may only be expanded. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You <em>must not</em> use ReiserFS v3 for +your recordings. You will get corrupted recordings if you do. +</caption> +</figure> + +Because of the size of the MythTV files, it may be useful to plan for future +expansion right from the beginning. If your case and power supply have the +capacity for additional hard drives, read through the <ref id="LVM" +name="LVM"> and <ref id="advancedpartitionformatting" name="Advanced +Partition Formatting"> sections for some pointers. + +<label id="video_capture_device"> +<sect2>Video Capture Device +<p>In order to capture video, MythTV will need one or more video capture +devices with Linux drivers. There are a number of classes of hardware +available for capturing video. +<sect3>Frame Grabbers. +<p>This class of card is the simplest and is usually the cheapest. There is no +on-board encoding of the analog video; hardware known as a Digital-Analog +Converter (DAC) takes the video and presents it to the computer in an +essentially raw digital form. + +For a list of video capture cards known to work with Linux, please see +<tt>/usr/src/linux/Documentation/video4linux/bttv</tt> for a partial +listing; even if your specific card is not listed, it may be that the vendor +is actually using a standard reference design and placing their own name on +it. See the video4linux mailing list (<url +url="https://listman.redhat.com/mailman/listinfo/video4linux-list" +name="https://listman.redhat.com/mailman/listinfo/video4linux-list">) for +more information and for specific hardware questions. + +The most common inexpensive cards available use the Bt848, Bt878 or CX2388x +series of video capture chips; examples are the "Hauppauge WinTV Go" card and +the "AverTV Desktop PVR" card, both of which use the bttv kernel module. + +<code> +NOTE: The ATI TV Wonder series and the ATI All-in-Wonder series of cards +are not the same. The All-in-Wonder cards will not work with MythTV. +</code> + +<figure loc="here"> +<eps file="stop.eps" height="4cm"> +<img src="stop.png"> +</figure> +<figure loc="here"> +<eps file="stop.eps" height="4cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: The ATI All-in-Wonder cards (which are not the same +as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) <em>will not</em> work +as a MythTV capture device because the GATOS <url +url="http://gatos.sourceforge.net" name="http://gatos.sourceforge.net"> +drivers that are available provide only a limited subset of the V4L API. +The TV Wonder series of cards are supported by the Bt8x8 Video4Linux driver. +</caption> +</figure> + +After you have installed a suitable capture device, you can check that +the kernel sees it with <tt>lspci</tt>. Look for an entry labeled "Multimedia +video controller". To get more detailed information about the card, use +<tt>lspci -v</tt> or <tt>lspci -vv</tt>. Ensure that your system is loading +the bttv modules by typing: +<tscreen><verb> +# lsmod |grep bttv +</verb></tscreen> + +You want to see the <tt>bttv</tt> module listed. +<sect3>Hardware MPEG-2 encoders. +<p>While inexpensive video-capture cards simply capture raw frames, leaving +encoding to software, some higher-end cards incorporate hardware-based +encoding. Using either a G200 MJPEG encoder card, or a MPEG-2 encoder card +supported by the IvyTV project <url url="http://ivtvdriver.org/" +name="http://ivtvdriver.org"> such as the Hauppauge +PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan M600 +cards will allow you to use dedicated hardware encoders rather than your +CPU. (The PVR-350 can simultaneously be used as an output device.) Using the +on-board MPEG-2 encoder greatly reduces the CPU requirements for +encoding. + +The ivtv driver was incorporated into the Linux kernel starting at v2.6.22. + +There is a Beta driver for the HVR-1600 card at <url +url="http://www.ivtvdriver.org/index.php/Cx18" +name="http://www.ivtvdriver.org/index.php/Cx18"> + +<bf>NOTE</bf>: Motherboards with the Via chipset are notoriously bad with +DMA and have caused numerous issues with ivtv, including hard locks. See +the ivtv website <url url="http://ivtvdriver.org" name="http://ivtvdriver.org"> +for the latest information on what works and what doesn't. + +Here are some data points for encoding: +<itemize> +<item>A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 stream. +</itemize> + +Here are some data points for decoding: + +<itemize> +<item>An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% CPU +<item>An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% +CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and approximately 30% +for Live TV at 416x480. +<item>A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU. +<item>A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with +80% CPU. +</itemize> + +<sect3>DVB capture cards. +<p>DVB is a video standard primarily found in Europe (where it comes in +DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) and +is also used as the programming interface for HDTV capture cards in Linux. +To see if your DVB card is supported, see the list of cards in the +"Supported Hardware" section of the DVB Wiki at <url +url="http://www.linuxtv.org/wiki/index.php/Main_Page" +name="http://www.linuxtv.org/wiki/index.php/Main_Page"> for more +information. + +In the United States, you may use a card such as the TwinHan to obtain +unencrypted Free-To-Air satellite channels. See <url +url="http://www.lyngsat.com/" name="http://www.lyngsat.com/"> for the types +of content which is available. + +<sect3>HDTV. +<p>There are a number of HDTV cards with Linux drivers which are known to +operate in the United States; a complete list of cards with DVB drivers can +be found at <url url="http://www.linuxtv.org/wiki/index.php/ATSC_Devices" +name="http://www.linuxtv.org/wiki/index.php/ATSC_Devices"> Some cards +support capture of unencrypted digital cable TV (utilizing QAM256), others +will only work with Over The Air (aka "OTA") signals captured with an +antenna (with 8VSB). + +Cards that have been reported to work include: +<itemize> +<item>pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only) +<item>SiliconDust HDHomeRun (8VSB, QAM256) +<item>pcHDTV HD-3000/5500 (8VSB, QAM256) +<item>Air2PC HD-5000 (8VSB, QAM256) +<item>DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256) +</itemize> + +<bf>NOTE</bf>: There are no known consumer-level capture devices which will +allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / Component) +from a set-top box commonly found with digital cable systems or satellite +systems. <em>None</em> of the capture devices listed above +perform any encoding; they merely allow your computer to save a copy of a +HDTV stream which has already been converted to MPEG-2 at the broadcast +facility. + +<bf>NOTE:</bf>: All of the cards listed above (except for the HD-2000 and +HDHomeRun) should be configured as DVB cards. The HD-2000 can be configured +as a pcHDTV card if you use the V4L drivers from <url +url="http://www.pchdtv.com" name="http://www.pchdtv.com"> and use Linux +kernel 2.6.9 or earlier. With kernel 2.6.10 and higher it must be +configured as a DVB card, but you lose access to the second antenna input in +ATSC mode. The HDHomeRun should be configured as two HDHomeRun cards, one +for each tuner. + +To playback HDTV content, plan on a powerful CPU. "How powerful?" depends +on a number of factors, such as the capture resolution, whether the video is +progressive or interlaced, and whether your display card has hardware-assist +support for Linux. + +The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you should have +no issues with viewing HDTV. + +The Complicated Answer: + +For 720p content (1280x720), a 2.4GHz P4 should be sufficient. + +For 1920x1080i->1920x1080p with the better deinterlacing methods +done in real time a 2.4GHz CPU is taxed, but should work if you use "Bob and +Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 hardware +acceleration. If you enable the hardware acceleration, you may be able to +use a 1.8GHz processor. + +<sect3>Firewire. +<p>You may use the Firewire output of the Motorola DCT6200 or the SA3250. +If your provider uses 5C encryption on a particular channel, you won't be +able to get any content. + +<sect3>DBoxII or other devices running Neutrino +<p>You may use the Ethernet port of an DBoxII or a similar device to capture +MPEG2. Your set top box has to be running the Neutrino GUI. + +<sect3>USB Capture Devices. +<p>The Plextor ConvertX PVR devices are supported through Linux drivers +available from <url +url="http://www.plextor.com/english/support/LinuxSDK.htm" +name="http://www.plextor.com/english/support/LinuxSDK.htm">. MythTV uses the +Plextor to capture hardware encoded MPEG-4, so the host CPU requirements are low. + +Hauppauge WinTV-PVR-USB2 (driver available at <url +url="http://www.isely.net/pvrusb2/" name="http://www.isely.net/pvrusb2/">) +emulates a PVR-x50 card. + +<sect3>IP Recorder (RTSP, RTS, UDP) +<p>MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported using +the IPTV recorder in MythTV. This recorder expects the channels to be supplied +as a m3u playlist. If your DSL/Fiber provider supplies television service, +but does not provide a m3u playlist for the channels, you can construct one +for your own use. You do not need to download it from the same server as the +streams themselves, and can also read it from a file if this is more convenient. + +<bf>NOTE</bf>: Some DSL providers only allow you to use one recorder at a +time, so you may need to limit yourself to one recorder in MythTV and turn +off any set top box the cable provider sold or rented to you with your +service. This limitation is independent of the bandwidth you have purchased. + +<sect2>Hardware known NOT to work and other issues +<p> +<itemize> +<item>Hauppauge WinTV-D or -HD (no driver) +<item>Hauppauge WinTV-USB series +<item>Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) cards (no driver - this is not the PVR-250/350 +series of cards supported by the IvyTV driver) +<item>ATI All-in-Wonder series +</itemize> + +<sect2>Sound card +<p>The system needs a sound card or an on-board equivalent on the motherboard +to play back and in most cases, to record sound. Any sound card that can be +operated by the ALSA (Advanced Linux Sound Architecture) kernel modules will +work with MythTV. However, some cards and drivers will provide better +quality or compatibility than others. In particular, many audio +devices included on motherboards can be problematic. + +The usual practice for capturing the audio associated with the video is to +run a cable from an audio output on the video capture card to the Line input +on a sound card. However, some video capture cards provide on-board audio +capabilities that work with the kernel <tt>btaudio</tt> module instead, +thereby eliminating the need for a cable. This is useful if you will be +using multiple capture cards in a single chassis, since each capture card +will not need its own sound card. Note that a separate sound card is still +required for playback when using <tt>btaudio</tt>, and that often the audio +recorded in this way will be mono only. See the <ref id="btaudio" +name="btaudio"> section for more information. + +<figure loc="here"> +<eps file="warning" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: Analog video capture cards are the only ones which +require a soundcard for capturing audio. DVB, HDTV, and other hardware +encoder cards all provide a combined audio / video stream. +</caption> +</figure> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Plugging a Line-level device into the Mic input is +not recommended. Line-level devices have higher voltages and can damage the +sound card. In addition, even if it doesn't break your card, you will be +getting Mono sound. See the Linux MP3 HOWTO at <url +url="http://www.tldp.org/HOWTO/MP3-HOWTO.html" +name="http://www.tldp.org/HOWTO/MP3-HOWTO.html"> for additional information. +</caption> +</figure> + +<sect2>Video Display Card +<p>MythTV will work with just about any video card. However, it is highly +recommended that you use a card which supports XVideo (XV) extensions. If +your card does not support XV, color conversion and scaling will be +performed by your CPU rather than the video card. This is very CPU +and memory intensive and will often result in dropped frames and a +corresponding degradation of quality. Check the X documentation +for details if you are uncertain about your preferred card. You may +also run <tt>xvinfo</tt>; look for your video card to be listed as one +of the adapters. + +<!-- Updated information from "Ray Olszewski" <ray@comarre.com> --> + +If you want to use MythTV with a standard television, you will need a +physical connection from your video card to your TV set, which can either be +a TV-out port on the card itself or an external adapter that converts the +VGA signal to an appropriate video signal. "Appropriate" depends on a number +of factors, such as video standard (NTSC vs. PAL), the type of input +connection (Composite vs. SVideo), etc. + +Note that with some video cards and X drivers, XVideo extensions are +only supported on the VGA output, and not on the TV output. + +<sect2>Cards with TV-out +<p>The next section deals with a number of cards that are known to have +TV-out ports. The list is unlikely to be complete, so if you know of +others, please post a message to the mythtv-users mailing list so the +information can be included in future versions of the HOWTO. The list is +organized by manufacturer. + +Reports here are based on what users of the cards have posted on the +mythtv-users mailing list, so if you need configuration details, please +search the archives at <url +url="http://www.gossamer-threads.com/lists/mythtv/" +name="http://www.gossamer-threads.com/lists/mythtv/"> using +the card name in your search string. + +<sect3>ATI +<p>ATI makes many cards with TV-out capability, but only offers Linux +drivers for Radeon 8500 and above cards. See the Drivers and Software +section of <url url="http://www.ati.com/" name="http://www.ati.com"> for the +driver and additional information. + +The enhanced ati.2 X driver created by the GATOS <url +url="http://gatos.sourceforge.net" name="http://gatos.sourceforge.net"> +project offers some support for TV-out on other ATI cards, but only in its +"experimental" version, available through CVS. There have been reports from +people who say they have made this driver work with one or another ATI card. +For example, Bruce Markey <url url="mailto:bjm@lvcm.com"> writes (on the +mythtv-users mailing list): "I got this to work. You can quote me on that. +I've used TV-out on several models of ATI cards both All-In-Wonder and +regular cards with TV-out." See the "Adventurous Setup" section of <url +url="http://gatos.sourceforge.net/watching_tv.php" +name="http://gatos.sourceforge.net/watching_tv.php"> for details. Also see +<url url="http://www.retinalburn.net/linux/tvout.html" +name="http://www.retinalburn.net/linux/tvout.html"> for more information. + +<sect3>NVIDIA +<p>Some NVIDIA cards with TV-out can be run using the standard nv driver in +X, combined with the userspace application <bf>nvtv</bf> to control the TV-out +port. See <url url="http://sourceforge.net/projects/nv-tv-out/" +name="http://sourceforge.net/projects/nv-tv-out/"> for details. Recent +versions of the NVIDIA driver have better support for overscan and other +features useful with TV-Out, so the <bf>nvtv</bf> application may not be +required. + +Some NVIDIA cards can be run with a proprietary NVIDIA X driver made +available by NVIDIA. See <url url="http://www.nvidia.com/object/unix.html" +name="http://www.nvidia.com/object/unix.html"> for more information. + +<bf>NOTE</bf>: It's strongly recommended that you use the proprietary +NVIDIA drivers; they have excellent support for XvMC and ship with a good +configuration utility. XvMC provides MPEG-2 hardware acceleration, which is +important if you want to display HDTV. + +<sect3>Hauppauge PVR-350 <label id="PVR-350"> +<p>MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV +driver. + +The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it also +supports audio output, but you need to connect that audio output to +something. There are two courses of action you may take: +<enum> +<item>Take the audio output from the PVR-350 and plug it into an input on a +sound card on your machine. You may then use MythTV's internal audio +controls. +<item>Take the audio output from the PVR-350 and connect it directly to your +television / audio system. You must indicate that you are using external +audio control on the PVR-350 setup page. +</enum> + +<sect3>Other Options +<p>Some devices with on-board TV-out capability, such as Xboxes converted to +Linux and some laptops can be used as MythTV frontends to display on a +television screen. Please consult the mythtv-users mailing list for messages +that report the details of these special arrangements. + +<sect2>External Adapters +<p>External adapters convert standard VGA output to a form suitable for +display on a television. The output format varies by region, since +different countries have different TV standards. People on the mythtv-users +list have mentioned these adapters: + +<itemize> +<item>AITech Web Cable Plus, powered by external transformer or takes power +from PS/2 keyboard connector, support resolutions up to 1024x768, outputs +composite and SVideo, provides position adjustment. +<item>Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr +outputs; pan, brightness, overscan/underscan controls; supports up to +1024x768 outputs; and supports PAL and NTSC. +<item>ADS TV Elite XGA +<item>AverKey iMicro (comments are generally favorable) +<item>AITech Web Cable (comments are generally unfavorable, different than +the "Plus" version above) +<item>TVIEW Gold (mentioned once, favorably) +</itemize> + +<sect1>Software +<p>There are a few ways of installing programs on Linux systems; you can +either use a pre-compiled package, or install from a tarball after +satisfying any prerequisites. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: you must have the MySQL database software installed on a +system to store the master database. This does not necessarily mean that +MySQL must run on one of the MythTV boxes. The minimum MySQL version is 5.0. +</caption></figure> + +<sect2>Pre-compiled packages <label id="precompiled"> +<p>A number of people have created pre-compiled packages for MythTV that may +make your installation easier. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>BIG FAT WARNING</bf>: This HOWTO assumes that you have <em>not</em> +installed MythTV from a package. All example command lines and file +locations are based on the MythTV tarball defaults. Some packagers have +modified the filenames, binaries and file locations to match what is +commonly found in that distribution. Any issues with MythTV installed via a +pre-compiled package <bf>MUST</bf> be raised with the packager. +</caption> +</figure> + +If you use any of the pre-compiled packages you may not need to perform any +additional configuration steps in this HOWTO. The next logical step is +<ref id="mysql" name="configuring MySQL">, which you may or may not have to +perform. See your package documentation. + +<sect3>Red Hat Linux / Fedora Core +<label id="atrpms"> +<p>The definitive documentation on installing MythTV on Red Hat Linux / +Fedora Core can be found in Jarod Wilson's (<url +url="mailto:jcw@wilsonet.com" name="mailto:jcw@wilsonet.com">) HOWTO at <url +url="http://wilsonet.com/mythtv/" name="http://wilsonet.com/mythtv/"> Just +like 3rd-party packages, any 3rd-party documentation problems should be +brought up with the 3rd-parties (maintainer, lists, bugzillas etc.). The +installation instructions which follow should be used as a guide only; refer +to Jarod's guide. + +Red Hat Linux and Fedora Core packages for MythTV and all of its add-on +modules and some themes have been packaged by <url +url="mailto:Axel.Thimm@ATrpms.net" name="mailto:Axel.Thimm@ATrpms.net"> and +are available at <url url="http://ATrpms.net/topic/multimedia/" +name="http://ATrpms.net/topic/multimedia/">. All of the prerequisites for +MythTV (such as XMLTV) are available as RPM packages. If you have problems +with the RPMs, please contact the ATrpms lists at <url +url="http://lists.ATrpms.net/" name="http://lists.ATrpms.net/"> or file a +bug against <url url="http://bugzilla.ATrpms.net/" +name="http://bugzilla.ATrpms.net/">. + +Given the large number of dependent RPMs you are advised to use tools like +apt or yum for automatic retrieval and installation of the required RPMs. +(<url url="http://ATrpms.net/install.html" +name="http://ATrpms.net/install.html">) In this case a +special meta-package called mythtv-suite will allow you to install all of +MythTV and its add-ons, plus all dependencies. + +If you don't have <bf>apt</bf> or <bf>yum</bf> on your machine, download and +install the atrpms-kickstart package from <url +url="http://ATrpms.net/name/atrpms-kickstart/" +name="http://ATrpms.net/name/atrpms-kickstart/">. +Install the package with: +<tscreen><verb> +# rpm -Uvh atrpms-kickstart* +</verb></tscreen> +Then run: +<tscreen><verb> +# apt-get update +# apt-get dist-upgrade +# apt-get update +</verb></tscreen> +And finally: +<tscreen><verb> +# apt-get install mythtv-suite +</verb></tscreen> +These steps however, do NOT perform the installation of any drivers required +for <bf>ALSA</bf>, capture cards, <bf>lirc kernel modules</bf>, etc., nor do +they set up your MythTV database. Check <url +url="http://ATrpms.net/topic/multimedia/" name="http://ATrpms.net/topic/multimedia/"> for the drivers you +need. + +<sect3>Mandriva +<p>Thac has created RPMs for MythTV for Mandriva which may +be obtained from <url url="http://rpm.nyvalls.se/" +name="http://rpm.nyvalls.se/"> If you have problems with the RPMs, please +send him email directly at <url url="thac@nyvalls.se" name="thac@nyvalls.se">. +<sect3>Debian +<p>Debian packages for MythTV and most of its add-on modules are maintained +by Christian Marillat <url url="mailto:marillat@free.fr" +name="mailto:marillat@free.fr"> and are available at <url +url="http://www.debian-multimedia.org/" +name="http://www.debian-multimedia.org/">. +Installation instructions can be found on those pages as well. All of the +prerequisites for MythTV are available as Debian packages, most of them from +the official Debian archive. + +If you have followed the instructions on the above page you should have added +<tscreen><verb> +deb-src http://www.debian-multimedia.org sid main +</verb></tscreen> + +to your <tt>/etc/apt/sources.list</tt> file. Running <bf>apt-get update</bf> and then +executing <bf>apt-get build-dep mythtv</bf> should install all the +pre-requisites required to compile MythTV. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: Due to the requirement for Qt 3.3+, there are no packages for +Debian woody/stable. +</caption></figure> + +<p>The Debian packages are configured such that MythTV programs should be +run as the <tt>mythtv</tt> user, which is automatically created during +installation. This user has access to write new recordings to disk in the +default directory, read and write the database, access the audio and video +devices, and everything else that MythTV needs to do. + +<p>See <tt>/usr/share/doc/<it>packagename</it>/README.Debian</tt> for more +information, including copies of the MythTV documentation. The +<tt>mythtv-doc</tt> package contains a copy of this HOWTO in +<tt>/usr/share/doc/mythtv-doc</tt>. +<sect2>Manual installation +<p>You may use the graphical tools that come with your distribution, or you +can use command-line utilities. Either system will get the job done, and it +all depends on your comfort level with Linux. + +In order to compile MythTV, we need to make sure that the software it needs +is installed. This list includes <bf>mysql</bf>, <bf>gcc</bf>, +<bf>freetype2-devel</bf>, <bf>xorg-xserver-devel</bf>, <bf>qt-devel</bf> and +<bf>lame</bf>. If you're going to use a remote control with MythTV, you're +going to need the <bf>cdialog</bf> package in order to compile +<bf>lircd</bf> if your distribution doesn't have a pre-packaged +<bf>lirc</bf>. If you are using <bf>XMLTV</bf> as a grabber, you will need +<bf>perl</bf>. + +<code> +NOTE: Qt v3.3 or higher is required. + +NOTE: MythTV DOES NOT WORK with Qt4. + +NOTE: If you are going to be using RPMs to install various +components, you should be aware that not all packages include the necessary +headers for compiling. If you're having trouble compiling, ensure +that you've installed the -devel version of a prerequisite. +</code> + +<sect2>Command-line installation <label id="CLIinstalltools_"> +<p> This section details the various methods for installing prerequisites +from the command line. + +<sect3>Mandriva +<p><bf>NOTE</bf>: The following instructions should be considered out of +date as of 2006-09-10. If updated instructions are not submitted by the +release of v0.21 of MythTV they will be removed. + +<bf>urpmi</bf> is the simplest tool for installation of packages from the +command line, but properly configuring it can be difficult. The +following website <url url="http://easyurpmi.zarb.org/" +name="http://easyurpmi.zarb.org/"> will allow you to choose +a mirror site and then present the command-line configuration text for that +mirror. You will most likely need to add a "Contrib" mirror to your setup. +If you add a site from the "Penguin Liberation Front", you will be able to +load the <tt>lame</tt> library without compiling from source. + +Open a shell, and execute the following. You may get +asked a number of questions regarding dependencies. It's best to answer +"YES". +<tscreen><verb> +$ su +# urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils +# urpmi XFree86-devel perl +# urpmi libqt3-devel libMesaGLU1-devel +</verb></tscreen> + +<code> +NOTE for Mandriva 9.1+ users: execute the following command. + +# urpmi libqt3-mysql +</code> +However, you might get this when you execute the commands above: +<tscreen><verb> +everything already installed +</verb></tscreen> + +In that case, you're ready to move to the next <ref id="Setting_up_paths" +name="section">. Once you have completed installing the pre-requisites, +exit out of the shell and start a new one to ensure that any environment +variables setup by the installation have a chance to take effect. + +<sect3>Gentoo. +<p><bf>NOTE</bf>: MythTV does <em>not</em> run on Qt4. +If Qt has not been installed on your system: Edit +<tt>/etc/make.conf</tt> and locate the "USE" variable. If the line is +commented out, remove the comment. The line should have at least: +<tscreen><verb> +USE="mysql alsa" +</verb></tscreen> +Next you need to build Qt. If you don't plan on using the ebuilds as +described in the Gentoo section then you also need to install lame. +<tscreen><verb> +# emerge lame mysql qt +</verb></tscreen> + +If you have already installed Qt: you will need to rebuild because the +default installation doesn't include MySQL support, a requirement for MythTV. +To enable SQL support, add "mysql" to your USE variable in +<tt>/etc/make.conf</tt> and rebuild Qt by running +<tscreen><verb> +# emerge qt +</verb></tscreen> + +All the necessary files will be downloaded and built. Even on a fast machine +this may take a lot of time if you need to do a full Qt build. + +<sect3>Debian. +<p>Build-dependencies for MythTV can be satisfied by adding the following to +your <tt>/etc/apt/sources.list</tt> +<tscreen><verb> +# Christian Marillat's packages (mplayer, lame) +deb http://www.debian-multimedia.org sid main +deb-src http://www.debian-multimedia.org sid main +</verb></tscreen> +and executing: +<tscreen><verb> +# apt-get build-dep mythtv +# apt-get source mythtv --compile +</verb></tscreen> + +<sect>System Configuration Requirements for Compiling MythTV. <label +id="Setting_up_paths"> +<p>Before you compile MythTV from the current source tarball or from +<bf>subversion</bf>, you may need to modify your system configuration in a +few ways. + +In general, if you install MythTV from pre-packaged binaries for your Linux +distribution/version, you don't need to be too concerned about the issues in +this section of the HOWTO - the install script for the packages should take +care of them. However, this section is still recommended reading which may +help if the packager skipped a step in their packaging. + +<sect1>Software requirements for compiling MythTV +<sect2>General requirements +<p>MythTV is written in C++ and requires a fairly complete, but standard, +compilation environment, including a recent g++ compiler, <tt>make</tt>, and +appropriate header files for shared libraries. Any standard Linux +distribution should be able to install a suitable compilation environment +from its packaging system. Section 3.2 of this HOWTO provides some details +of how to install the required environment for many distributions. + +Subsequent sections of this chapter address the few oddities that you may +have to adjust by hand before you compile MythTV. + +The reference compilation system for MythTV is Ubuntu. + +<sect1>Shared-Library requirements for MythTV +<sect2>Modifying /etc/ld.so.conf <label id="modifying_ld.so.conf"> +<p>The runtime manager for shared libraries, <bf>/lib/ld.so</bf>, gets +information about the locations and contents of shared libraries from +<tt>/etc/ld.so.cache</tt>, a file created by <bf>ldconfig</bf> from +information in <tt>/etc/ld.so.conf</tt>. Because MythTV installs some +shared libraries in <tt>/usr/local/lib</tt>, that directory needs to be +added to the list of directories for <bf>ld.so</bf> to search when doing +runtime linking of programs, if it is not already there. +You do this, as root, by editing <tt>/etc/ld.so.conf</tt>, then +running <bf>ldconfig</bf>. There are many ways to do this; one that +works is to enter this series of commands: + +<tscreen><verb> +$ su - +# echo /usr/local/lib >> /etc/ld.so.conf +# /sbin/ldconfig +# exit +$ +</verb></tscreen> +<sect1>Environment variable requirements for MythTV +<sect2>General requirements +<sect3>QT libraries and binaries +<p>The compiler needs to be able to locate QT binaries and libraries in +order to compile MythTV. QTDIR needs to be set and the directory holding the +QT binaries needs to be added to your PATH. Your distribution may already +be making these changes as a part of the installation of the software +prerequisites detailed earlier. + +One way to do this is as follows: <label id="Checking_that_it_worked"> + +Open a shell and execute the following: +<tscreen><verb> +$ echo $PATH +/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin +$ echo $QTDIR +/usr/lib/qt3 +$ which qmake +/usr/lib/qt3/bin/qmake +</verb></tscreen> + +For Mandriva, you should see a value like <tt>/usr/lib/qt3</tt> for +<tt>QTDIR</tt> and <tt>/usr/lib/qt3/bin</tt> should be in $PATH. + +For Gentoo, you should see a value like <tt>/usr/qt/3</tt> for <tt>QTDIR</tt> +and <tt>/usr/qt/3/bin</tt> should be in $PATH. + +If you don't, do not proceed past this step until you have resolved this +error. You may need to manually specify the QTDIR and PATH at the shell +prompt before compiling. + +Also, check that there has been a link created in +<tt>/usr/lib/qt3/mkspecs</tt> (<tt>/usr/share/qt3/mkspecs</tt> for Debian) +called <tt>default</tt>. If not, you'll get errors during the compile. See +the Troubleshooting Section for more information. +<sect2>Distribution-Specific Notes +<sect3>Mandriva +<p>The following instructions work for Mandriva using +<bf>bash</bf> as the shell, and may be applicable for a distribution which +uses <tt>/etc/profile.d</tt>. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Mandriva 10 installs a <tt>/etc/profile.d/qtdir3.sh</tt> +file, but it doesn't include the addition of the PATH variable. If you're +running Mandriva 10, don't create a <tt>mythtv.sh</tt> file as detailed +below; edit the <tt>qtdir3.sh</tt> file and add the PATH statement within +the if / fi block. +</caption> +</figure> +As root, create the following file in <tt>/etc/profile.d</tt> The example +filename is "mythtv.sh". Use what you feel is appropriate. + +Open a shell, and switch to superuser mode. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: ^D means press CTRL and d at the same time. +</caption> +</figure> +<tscreen><verb> +$ su +# cd /etc/profile.d +cat > mythtv.sh +export QTDIR=/usr/lib/qt3 +export PATH=$PATH:/usr/lib/qt3/bin +^D + +# chmod a+x mythtv.sh +# exit +$ exit +</verb></tscreen> +The last two commands are to exit out of the shell. This way, when you next +open a shell your new commands +will take effect. + +<sect2>Device Permissions <label id="devperms"> +<p>MythTV will need access to the video4linux devices on your system. By +default, your distribution may restrict access to these devices to the +logged-in user, so if you will be automatically starting +<bf>mythbackend</bf> from a script rather than an interactive terminal +session you will need to make some adjustments. + +<bf>NOTE</bf>: The following instructions are accurate for Mandriva. + +Check for a file called <tt>/etc/security/console.perms</tt>. Open the file +in your favorite text editor and look for a line that has: +<tscreen><verb> +<console> 0600 <v4l> 0600 root.video +</verb></tscreen> +and replace it with +<tscreen><verb> +<console> 0666 <v4l> 0666 root.video +</verb></tscreen> + +What we're doing is allowing read and write access to the files in the +video4linux directory. +<sect>Downloading and compiling. <label id="DownloadAndCompile"> +<p>Get MythTV from the <url url="http://www.mythtv.org" +name="http://www.mythtv.org"> web site. There are two installation methods +you may choose from. The first is to download the latest release in tarball +format and compile. The tarball release of MythTV should work on a wide +variety of systems and should be the preferred method for new users. If you +wish to use the <bf>subversion</bf> copy of MythTV you may obtain it from +<url url="http://svn.mythtv.org" name="http://svn.mythtv.org"> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: If you are going to use <bf>subversion</bf> to +compile MythTV rather than using the distribution tarball, you <em>must</em> +join the <url url="http://www.mythtv.org/mailman/listinfo/mythtv-commits/" +name="http://www.mythtv.org/mailman/listinfo/mythtv-commits/"> and <url +url="http://www.mythtv.org/mailman/listinfo/mythtv-dev/" +name="http://www.mythtv.org/mailman/listinfo/mythtv-dev/"> mailing lists to +keep up to date with the current status of the code. Code obtained from +subversion has no guarantees regarding stability, etc. +</caption> +</figure> + +If you are in North America you will use the Schedules Direct grabber which is +built-in to MythTV. You <em>do not</em> need to install XMLTV (so you may +skip XMLTV-related instructions), but you need <bf>wget</bf> version 1.9.1 +or higher. + +Get XMLTV from <url url="http://xmltv.sourceforge.net" +name="http://xmltv.sourceforge.net">. Download the latest version (0.5.51). + +<code> +NOTE for Mandriva users: If you have added a "PLF" mirror, you may skip the +next step and type: + +# urpmi libmp3lame0 libmp3lame0-devel + +After downloading, be sure to install both: +# rpm -Uvh lame* + +</code> + +Get lame from <url url="http://lame.sourceforge.net/" +name="http://lame.sourceforge.net/">. Download the source code to v3.96.1 +by following the links from "Using" through "Download...". + +<sect1>Building LAME +<p>Open a shell and switch to the directory where you saved lame. +<tscreen><verb> +$ tar -xzf lame-3.96.1.tar.gz +$ cd lame-3.96.1 +$ ./configure +$ make +$ make test +$ su +# make install +</verb></tscreen> +Check that it worked: +<tscreen><verb> +# ls -l /usr/local/lib +-rw-r--r-- 1 root root 381706 Nov 4 14:22 libmp3lame.a +-rwxr-xr-x 1 root root 674 Nov 4 14:22 libmp3lame.la* +lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so -> +libmp3lame.so.0.0.0* +lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so.0 -> +libmp3lame.so.0.0.0* +-rwxr-xr-x 1 root root 360197 Nov 4 14:22 +libmp3lame.so.0.0.0* + +# exit +$ +</verb></tscreen> + +<sect1>XMLTV +<sect2>Red Hat Linux and Fedora Core: +<p>RPMs for <bf>XMLTV</bf> and all of its dependencies can be obtained from +<url url="http://ATrpms.net/name/xmltv/" +name="http://ATrpms.net/name/xmltv/">. The web page has a +list of all the dependent packages you must download and install. +<tscreen><verb> +# rpm -Uvh xmltv* perl* +</verb></tscreen> + +If you install from this location you may skip to <ref id="manually_building_mythtv" +name="Manually building MythTV">. +<sect2>Mandriva +<p>RPMs for <bf>XMLTV</bf> and all of its dependencies are located in +Mandriva's "contrib". If you have added a contrib mirror, try installing +<bf>XMLTV</bf>: +<tscreen><verb> +# urpmi xmltv xmltv-grabbers +</verb></tscreen> +If this does not work, it is possible that contrib for your Mandriva version +does not have <bf>XMLTV</bf>, so you may install the XMLTV prerequisites by typing: +<tscreen><verb> +# urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl +</verb></tscreen> + +and skip straight to the XMLTV compilation step. + +<sect2>Manual installation +<p> +<label id="untarring_xmltv">Untar the xmltv file: +<tscreen><verb> +$ tar -xjf xmltv-0.5.51.tar.bz2 +</verb></tscreen> +Install the xmltv prerequisites. The following prerequisites are the +minimum required; when you actually start running the xmltv setup program it +may alert you to other modules that are required.: + +<tscreen><verb> +$ su +# perl -MCPAN -e shell +cpan> install XML::Twig +cpan> install Date::Manip +Date::Manip is up to date. +cpan> install LWP +cpan> install XML::Writer +cpan> exit +</verb></tscreen> + +Change to the XMLTV directory and compile it: +<tscreen><verb> +$ cd xmltv-0.5.51 +$ perl Makefile.PL +</verb></tscreen> +You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" to +the grabber required for your location. + +You may get errors about modules not being installed. You will need to +resolve any missing dependencies at this point, or your grabber may not work +correctly. +<tscreen><verb> +$ make +$ make test +$ su +# make install +# exit +</verb></tscreen> + +<sect1>Configuring the Schedules Direct service <label id="ConfigureSD"> +<p>As of 2007-09-01, Tribune Media Services will no longer offer free guide +data. Schedules Direct is a non-profit organization which has licensed the +data to make it available to users of Freeware and Open Source applications. + +If you wish to use Schedules Direct, you'll need to establish a user +account. Go to <url url="http://www.schedulesdirect.org" +name="http://www.schedulesdirect.org"> and click on the "Membership" link. + +Once you've read and agreed to the Subscriber Agreement, Terms of Use and +Privacy Policy proceed to the lineup choices and configure your account for +your particular location and the channels that you have. This configuration +will be imported into MythTV when you first run the <bf>mythtv-setup</bf> +program. + + +<label id="manually_building_mythtv"> +<sect1>Manually building MythTV +<p>If you are going to use <bf>subversion</bf>, execute the following +instructions to obtain the latest version of MythTV: + +<tscreen><verb> +$ mkdir mythtv +$ svn co http://svn.mythtv.org/svn/trunk/ mythtv +$ cd mythtv +</verb></tscreen> + +To use a release version, you can execute: +<tscreen><verb> +$ mkdir mythtv-release-0.21 +$ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21 +$ cd mythtv-release-0.21 +</verb></tscreen> + +<bf>NOTE</bf>: Using a svn version of the code allows you to stay +up-to-date with changes. So, if there's an update to the 0.21 release and +you originally obtained it using svn, you could enter the +mythtv-release-0.21 directory and type "svn up", which will update your copy +with the fixed version from the website. You would then recompile and +install the updated 0.21 code. + +If you are using the tarball, then unpack it: +<tscreen><verb> +$ tar -xjf mythtv-0.21.tar.bz2 +$ cd mythtv-0.21 +$ ./configure +</verb></tscreen> + +If you wish to change options, run <bf>./configure --help</bf> to +see what is available and to override and automatically detected options. +See the <tt>config.log</tt> file after running <bf>configure</bf> to see +previous runs. + +To compile: +<tscreen><verb> +$ make -j 2 +</verb></tscreen> + +The MythTV compile can take advantage of multiple CPUs, SMP and +Hyperthreading. If you want to build MythTV on a multi-CPU machine (or with +<bf>distcc</bf>), specify "-j numjobs", where "numjobs" is greater than 2. +In the above example, we had two concurrent jobs executing, which is +recommended for a single CPU system. Do not set the number of jobs too +high, or your compile will actually take longer to complete than it would if +you did a "normal" build. + +If you are using <bf>distcc</bf>, and you had two other host machines (red, blue) +participating, you would do something like: +<tscreen><verb> +$ export DISTCC_HOSTS='localhost red blue' +$ make -j 6 CXX=distcc +</verb></tscreen> + +The actual speed-up, if any, is dependant on a number of factors, such as +number of CPUs / hosts, etc. The <bf>distcc</bf> documentation recommends +using a <tt>-j</tt> value of twice the number of CPUs available to keep all +of them busy. + +Some timing information. The following should only be used for +illustration; your actual results may vary. The test involves a complete +<tt>make distclean</tt> to the final binary. +<itemize> +<item>P4 3.2Ghz HT: "standard" make: 12m 49s +<item>P4 3.2Ghz HT: make -j 2: 11m 24s +</itemize> + +In the above example, we see that with a single CPU, a multi-stage +<bf>make</bf> does not significantly decrease compile time. + +Once the compile is done, switch to superuser: +<tscreen><verb> +$ su +# make install +# exit +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: subsequent configuration steps assume that you are within +the MythTV directory that you <tt>cd</tt>'d to above. +</caption> +</figure> + +<sect2>Enabling real-time scheduling of the display thread. +<p>MythTV supports real-time scheduling of the video output thread. There +are three ways to go about enabling this: You can use rlimits, you can use +the realtime security module, or on older systems you can SUID the +executable. Enabling real-time scheduling is optional, but can make the +video display smoother, especially if you are decoding HDTV. + +<sect3>rlimits +<p>The rlimits method is the preferred method and is included in Linux +2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, which +may not be supported by your distribution yet. Assuming anyone running +<bf>mythfrontend</bf> is in the audio group and rlimits are supported, all +you need to do is place this in your <tt>/etc/security/limits.conf</tt> + +<tscreen><verb> +* - rtprio 0 +* - nice 0 +@audio - rtprio 50 +@audio - nice 0 +</verb></tscreen> + +<sect3>realtime module +<p>The second option is to use the Linux realtime kernel module. +This is will be phased out over time, but is currently supported +by many distributions that do not yet support rlimits. If you are +not using the distribution kernel you must configure your kernel +with: +<tscreen><verb> +Security options : [*] Enable different security models +Security options : [M] Default Linux Capabilties +</verb></tscreen> +You may also need to install the realtime module, using your distribution's +realtime package. Assuming the users who will be running +<bf>mythfrontend</bf> will be in the audio group you can get the GUID of a named +group like so: +<tscreen><verb> +$ grep audio /etc/group +</verb></tscreen> +If the number printed out from the grep was 18, you can now load +this module as root before starting <bf>mythfrontend</bf>: +<tscreen><verb> +# modprobe realtime gid=18 +</verb></tscreen> + +<sect3>run as root option (not safe) +<p>The final and least preferred option is to set the sticky bit +on the <bf>mythfrontend</bf> executable. This <bf>opens a security hole</bf>, +but is the only option on systems that do not support either +rlimits or the realtime module. This does not work on modern +distributions either, and is <bf><em>not recommended</em></bf> +on any system connected to the Internet. This may also make it +impossible to debug MythTV without running <bf>gdb</bf> as root. If you +would still like to do this, you just need to run this as root: +<tscreen><verb> +# chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv +</verb></tscreen> + +<sect2>Frontend-only configuration <label id="frontend-only"> +<p>Since MythTV uses a client/server architecture, multiple frontend +computers can simultaneously access content on a Myth system. Live TV, +watching and scheduling recordings, etc. are all possible from multiple +frontends. + +To get a better picture of what is needed to run a frontend, note the +following: +<list> +<item>You do NOT need the MySQL server installed on your remote frontend +<item>You do NOT need XMLTV installed on your remote frontend +<item>You do NOT need to run the mythtv-setup program on +your frontend machine +</list> + +Other than the exclusion of the MySQL server and XMLTV, the MythTV +compilation procedure is the same as when you're setting up both a backend +and a frontend. However, you <em>will</em> need to install the database +access libraries. + +Once MythTV is compiled and installed: +<list> +<item> +Run the mythtv-setup program on your Master backend. Under the "General" +menu, change the IP address of the current machine (by default, "127.0.0.1") +to the real external IP address - 127.0.0.1 is the loopback address and no +external machine can access it. Change the Master Server IP setting to the +same IP address as well. +<item> +Run the mythfrontend program on your frontend machine, +and a "Database Configuration" screen should appear. +Set the "Host name" field to point to your Master backend's IP address. +</list> + +<sect1>Gentoo <label id="Gentoo_build"> +<p>Installation of MythTV on Gentoo consists of simply emerging the desired +ebuild because all of the packages are now part of the official Portage tree. +<tscreen><verb> +$ su - +# emerge --sync # make sure portage is up to date. +# vi /etc/make.conf +</verb></tscreen> +Add mysql to your USE variable. i.e. <tt>USE="mysql ...."</tt> +<tscreen><verb> +# emerge mythtv +</verb></tscreen> +<sect>MySQL.<label id="mysql"> +<p>When you install MySQL 5.x you will also want to comment +out "log-bin" in your <tt>my.cnf</tt> configuration file. This option will +quickly fill your "/var" disk partition with many gigabytes of data, +unless you are doing database replication and deleting these files regularly. +<sect1>Distribution-specific information +<sect2>Mandriva +<p>If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Mandriva Control +Center->System->Services, find MySQL and click the "On Boot" button and the +"Start" button if the MySQL status shows that it isn't running yet. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: There have been reports that MySQL isn't starting at boot. +If this is happening to you, try running the following commands. +</caption> +</figure> +<tscreen><verb> +$ su +# chkconfig --level 35 mysql on +# /etc/rc.d/init.d/mysql start +# exit +</verb></tscreen> + +<sect2>Red Hat Linux and Fedora Core +<p>If this is the system maintaining the database, make sure that MySQL is +running and started at boot. Click on Redhat menu>Server Settings>Services +and enter the root password when asked. Check "mysqld" and then click Start. +Click Save, then close the window. + +This can be done from the command line by typing: +<tscreen><verb> +# /sbin/chkconfig mysqld on +# /sbin/service mysqld start +</verb></tscreen> + +<sect2>Gentoo +<p>After installing MySQL you need to initialize the database by running +<bf>mysql_install_db</bf> as root. +<sect1>Setting up the initial database +<p>This step is only required on the system maintaining the database, which +may or may not be one of your MythTV boxes. If the database is on a +non-MythTV machine you'll need to copy the <tt>database/mc.sql</tt> file to it. + +To setup the initial MySQL databases: +<tscreen><verb> +$ cd database +</verb></tscreen> +<sect2>Mandriva and Red Hat Linux/Fedora Core +<p><tscreen><verb> +$ mysql -u root < mc.sql +</verb></tscreen> +<sect2>Debian 3.0 +<p><tscreen><verb> +$ mysql < mc.sql +</verb></tscreen> +<sect2>Gentoo +<p><tscreen><verb> +$ su +# mysql < /usr/share/mythtv/database/mc.sql +</verb></tscreen> +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: It is good practice to set a root password for MySQL. +Instructions for doing so can be found on MySQL's web site at <url +url="http://www.mysql.com/doc/en/Security.html" +name="http://www.mysql.com/doc/en/Security.html">. +</caption> +</figure> +<sect2>Modifying access to the MySQL database for multiple systems <label +id="modify_perm_mysql"> +<p>If you're going to have multiple systems accessing a master database, +you must grant access to the database from remote systems. By default, the +<tt>mc.sql</tt> script is only granting access to the local host. + +To allow other hosts access to your master database, you can either set it +up for no security at all, or with more granularity. Note that the "%" is +the wildcard character in MySQL. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: The "no security" option is <em>very</em> dangerous unless +you're in a controlled environment. +</caption> +</figure> +This example has no security at all, and allows access from any host. +<tscreen><verb> +$ mysql -u root mythconverg +mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv"; +mysql> flush privileges; +</verb></tscreen> + +For a more secure setup, you can restrict which machines or subnets have +access. If you have a complete DNS system operational, you could do the +following: +<tscreen><verb> +$ mysql -u root mythconverg +mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv"; +mysql> flush privileges; +</verb></tscreen> + +Finally, if you just want to restrict by IP subnet (in this example, the +192.168.1. network): +<tscreen><verb> +$ mysql -u root mythconverg +mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv"; +mysql> flush privileges; +</verb></tscreen> + +You'll also need to check that the "networking" feature of MySQL is turned +on. Check that <tt>/etc/mysql/my.cnf</tt> <em>does not</em> contain +<tt>skip-networking</tt>. If it does, remove it. Also verify that +<tt>bind-address</tt> is set to your IP address instead of +<tt>127.0.0.1</tt>. If you change either of these items, restart +<bf>MySQL</bf>. + +<bf>NOTE</bf>: Your distribution may have a customized MySQL configuration +file; in Mandriva, check <tt>/etc/sysconfig/mysqld</tt> for additional +configuration. + +<sect>Configuring Sound. +<p>If your video doesn't appear to be in-sync with your audio and you're +using an analog video capture card and a soundcard to capture audio, it +could be because you are listening to the real-time audio from your video +card rather than after it's been processed and synchronized to the video by +MythTV. Because MythTV is a personal video recorder, "Live TV" isn't really +live - to let you pause live TV, MythTV is actually encoding the video, +saving to disk, and then playing it back. This procedure puts your MythTV +"live" TV about 2 seconds behind real-time, so it's important that you're +not listening to the live audio. However, if you're having an issue where +the audio and video aren't synchronized by small but varying amount, it's +most likely because the sound driver that you're using doesn't have the +DSP_CAP_REALTIME capability. This was the case with ALSA (0.5), but not +with newer versions. See the <ref id="Troubleshooting_Audio" +name="Troubleshooting Audio"> section for more information if you're having +issues with sound. Also, ensure that no other programs are grabbing the +audio output, like <bf>arts</bf> or <bf>esd</bf>. + +What you need to do is to mute the "line-in" of your sound card and also +set it as the recording source. + +There are two ways to do this. Graphically, and from the command line. + +<sect1>Graphically setting up the mixer +<sect2>Mandriva and Red Hat Linux/Fedora Core +<p>Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or +<verb>RedHat Menu>Sound & Video>Volume Control</verb> on Red Hat/Fedora. + +Click on Settings->Configure Make sure that "Tick Marks" and "Show +labels" have "X"'s in them. This will make it easier to find the correct +audio source. Click OK. + +On the mixer page, look for Line-In on your sound card. You should see +two LED's - a green one at the top, and a red one at the bottom. The green +one at the top is for muting; you want to make sure that the green LED is a +dark green, meaning that it's "off". You also want to click on the red LED +so that it turns bright red, indicating that it's "ON"; this insures that +the Line-in is used as the source. Click OK, and make sure that you save +the settings so that this is your default. + +<sect3>Using ALSA. +<p>To use ALSA, you'll need to correctly setup your +<tt>asoundrc</tt> file. Configuring this file is beyond the scope of this +HOWTO. Once ALSA is working correctly, change the output sound device in +mythfrontend->setup->Audio from <tt>/dev/dsp</tt> to <tt>ALSA:default</tt>. +This field may be edited to suit your ALSA requirements. + +<sect1>Setting the mixer from the command line +<p>If you have installed the alsa-utils package, then the <bf>amixer</bf> +program can be used to setup the mixer. The "Master" volume setting is only +required on a frontend machine to ensure that the sound channels are unmuted +and configured for outputting sound. The "Line" and "Capture" controls are +required for your sound card to actually capture audio from the external +Line-in if it's connected to an analog frame grabber. Not all sound cards +have a "Capture" control, but if yours does and you don't set it then MythTV +will not capture audio. + +<code> +Note the spelling in the following commands. +</code> +<tscreen><verb> +$ amixer set Master,0 100%,100% unmute +$ amixer set PCM,0 100%,100% unmute +$ amixer set Line,0 75%,75% mute captur +$ amixer set Capture,0 100%,100% captur +$ su +# alsactl store +# exit +$ +</verb></tscreen> + +If you have multiple sound cards, then use the <tt>-c</tt> parameter to +specify which card to adjust. Note that the first card will be "0", the +second will be "1", etc. + +That takes care of setting the volume correctly, and the ALSA startup script +will restore the volume after a reboot. If you find that your sound is +distorted, it's possible that the levels in the above examples are too high +for your particular hardware combination. Try reducing the percentages by +5-10% and checking again. Once you're satisfied, re-run the <tt>alsactl +store</tt> command. + +You may also use the <bf>alsamixer</bf> program to set the volume. If you +are using an ALSA version after 1.0.6, use <bf>alsamixer -V all</bf> First, +start <bf>alsamixer</bf> from the command line. You should start out on the +"Master" volume control slider. Use the up and down cursor to set the +master volume to around 75%. Next, use the left and right cursor keys to +move around on the screen until you find the "Line" slider. Press SPACE to +set it as the capture source, set the level to around 50-75% and press "M" +to mute it. You can now press ESC to exit out of the <bf>alsamixer</bf> +program. You can also have MythTV manage all volume and mute settings, but +this will only affect the "Master" or PCM volume, not the capture volume. See +the mythfrontend setup page for options. + +Finally, if you've performed all of the above steps, and you still don't seem to have any sound, it's possible that your video capture device is muting the audio output. +<tscreen><verb> +$ v4lctl -c /dev/video0 setattr mute off +</verb></tscreen> + +<sect>Setting up a remote control. +<p>MythTV does not have native remote control receiver and decoder software +built-in. Instead, remote control functions are implemented by cooperating +with <bf>lirc</bf>, the Linux Infrared Remote Control program. <bf>lirc</bf> +handles the IR hardware and passes keystrokes to MythTV, which then acts as +if the user had pressed the keys on the keyboard. The file +<tt>keys.txt</tt> describes the keys used to control MythTV. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: If you are running Mandriva, you may install +<bf>lirc</bf> by executing: <tt># urpmi lirc lirc-remotes</tt> and bypass +the manual compilation steps described below by jumping to the <ref +id="completing_lirc_install" name="Completing the lirc install"> section. +See the contrib/mandrake91.etc.sysconfig.lircd file for an example of how to +configure lircd. +</caption> +</figure> + +Some IR devices require a kernel recompile, and some don't. However, all at +least require having the kernel source available as a resource for the lirc +build process. + +<sect1>Gentoo +<p>To install lirc on Gentoo, all you need to do is: +<tscreen><verb> +# emerge lirc +</verb></tscreen> + +<sect1>Obtaining and compiling lirc +<p>You're going to need to download and compile <bf>lircd</bf>. Go to <url +url="http://www.lirc.org" name="http://www.lirc.org"> and download lirc; as +of 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 file as +well. +<tscreen><verb> +$ tar -xjf lirc-0.8.0.tar.bz2 +$ cd lirc-0.8.0 +$ ./setup.sh +</verb></tscreen> +You're going to need to know what sort of receiver you have and where it's +connected. In the case of the Pinnacle Studio TV card, with the IR receiver +connected to COM1 (/dev/ttys0), once the configuration menu comes up, +perform the configuration by going to Driver Configuration->Other Serial +Port Devices->Pinnacle Systems Receiver->OK and on the next page select +COM1->OK. + +Each remote is different; some remote receivers connect directly to your +capture card and not to a serial port, so make sure that you've got the +correct one. + +You then click "Save Configuration and run configure" to continue. + +Make sure you read the last text generated by the configure step. It will +tell you if you require a kernel recompile, and what the name of your kernel +module will be (if necessary). For instance a home-built receiver may +require a kernel recompile, so you would be notified that you will have to +load the lirc_serial module. If you did not get any such messages skip the +kernel recompile steps below and go directly to making and installing the +lirc driver. + +Once the configuration step is complete: +<tscreen><verb> +$ make +$ su +# make install +# chmod 666 /dev/lircd +</verb></tscreen> + +At this point, if you're using a serial receiver, check that there's a +<tt>lirc</tt> device in <tt>/dev</tt>: +<tscreen><verb> +$ ls -l /dev/li* +lr-xr-xr-x 1 root root 5 Jan 27 09:00 /dev/lirc -> ttyS0 +srw-rw-rw- 1 root root 0 Jan 27 15:01 /dev/lircd= +prw-r--r-- 1 root root 0 Jan 27 09:00 /dev/lircm| +</verb></tscreen> + +As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", which is +appropriate for the Pinnacle Systems PCTV Pro. However, you may notice +something like this: +<tscreen><verb> +crw------- 1 root root 61, 0 Dec 31 1969 lirc +</verb></tscreen> +Some IR receivers (including some homebrew units) use a character device as +their data interface as opposed to a link to a serial port. If the <tt>make +install</tt> step has created a character device for you, don't replace it +with a link to a COM port. + +So, if the link or character device was not created (but should have been), +ensure that you ran the <tt>make install</tt> step as root. If it still +doesn't work, then there are three options. The first option is to re-read +the <bf>lirc</bf> documentation to determine whether your IR receiver is a +character device or should be a link to a serial port and to create the +link/character device manually. In this example, the IR device is connected +to ttyS0. If it were connected to "COM2", then use ttyS1, etc. +<tscreen><verb> +$ su +# cd /dev +# ln -sf ttyS0 lirc +# exit +$ +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: The above example assumes that your receiver uses the +standard serial driver. Some receivers do not, including receivers that +plug into a TV capture card. Check the lirc documentation, but it may be +necessary to replace the link created above with a character pipe: +</caption> +</figure> +<tscreen><verb> +# mknod /dev/lirc c 61 0 +</verb></tscreen> + +See the lirc documentation for additional information. The lirc +installation <em>should</em> create this for you, so manually creating it +indicates that your lirc installation may have other issues. + +The second option is to post your issue to the <em>lirc</em> list, not the +mythtv-users list. The lirc programmers will be the ones that can assist +you best. + +The third option is to dispense with lirc altogether by purchasing an IR +keyboard (various options exist, although Chicony appears to work for some +people) and a learning remote control. The IR keyboard receiver plugs into +the PS/2 keyboard port on your PC and you would train your learning remote +to emulate the various keystrokes from <tt>keys.txt</tt> of your IR +keyboard. Using this method removes lirc entirely from the picture - your +remote will be sending keypresses that your PC "sees" on the keyboard port. + +<sect1>Completing the lirc install <label id="completing_lirc_install"> +<p><figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE to Mandriva 9.1 users</bf>: skip to the manual start paragraph +below. +</caption> +</figure> +<p>If the lirc configure program / compile did not mention anything about a +kernel module, then you are finished. If it did mention a kernel module, you +must edit the <tt>/etc/modules.conf</tt> file. Add this line as the first +thing in the file. It must come first, or it may not work. +<tscreen><verb> +alias char-major-61 XXX +</verb></tscreen> + +replace XXX with the name which you determined earlier, which in this +example was "lirc_serial" +<tscreen><verb> +$ su +# modprobe lirc_serial +# /sbin/ldconfig +</verb></tscreen> + +Next, we're going to manually start lircd the first time. Mandriva 9.1 +users, type: <tt># /etc/rc.d/init.d/lircd start</tt> instead of: +<tscreen><verb> +# /usr/local/sbin/lircd +</verb></tscreen> + +<bf>NOTE</bf>: Read this next section if you're not familiar with how lirc works! + +There are two separate files used by lirc, and both are required for your +remote control to do anything useful. First is the <tt>lircd.conf</tt> file. +<tt>lircd.conf</tt> tells the lirc daemon how to interpret the IR pulses +that it receives from a remote control and what name to assign to each +sequence of pulses. Without getting too involved, a particular series of +pulses may correlate to "Channel Up". The <tt>lircd.conf</tt> file will +then contain a line that looks something like this: + +<tscreen><verb> + ChannelUp 0x0000000000001020 +</verb></tscreen> + +The <tt>lircd.conf</tt> file can have multiple remote controls defined. + +The second file is <tt>lircrc</tt>, which takes the name of the button which +was pressed ("ChannelUp") in the above example, and correlates that to an +action to be performed by a program using the remote control. So in MythTV, +ChannelUp means one thing, while in <bf>mplayer</bf> it means something +different. <tt>lircrc</tt> gives you the flexibility of taking the name of +the button and having it perform different actions depending on which +program you're using at the time. + +<bf>NOTE</bf>: The definitions in <tt>lircd.conf</tt> come from the user +community, and there is no standard for the common button names. One +<tt>lircd.conf</tt> file may contain a definition for a button called +"ChannelUp", while another may contain a definition for "Chan+". Your +<tt>lircrc</tt> file must therefore be configured appropriately, or it won't +work. + +If this fails, complaining of a missing <tt>lircd.conf</tt> file, then you +must find or make one. First look for a pre-made configuration file at <url +url="http://lirc.sourceforge.net/remotes/" +name="http://lirc.sourceforge.net/remotes/">. Mandriva 9.1 users, look in +<tt>/usr/share/lirc-remotes</tt>. If you find one your remotes either on the +website or in <tt>/usr/share</tt>, download or copy the file, name it +<tt>lircd.conf</tt> and put it in your <tt>/etc</tt> directory. If you +couldn't find your remote, you must make your own <tt>lircd.conf</tt> file. + +To make your own <tt>lircd.conf</tt> file +<tscreen><verb> +$ irrecord myremote +</verb></tscreen> + +Follow the on-screen directions to train your remote and define keys. If +your remote ends up working well, you should consider submitting your +<tt>lircd.conf</tt> file back to the lirc developers. Once finished: +<tscreen><verb> +$ su +# cp myremote /etc/lircd.conf +</verb></tscreen> + +now try to start lircd again: +<tscreen><verb> +# /usr/local/sbin/lircd +</verb></tscreen> + +Now, we're going to add the commands necessary for lircd to run each time we +boot. Mandriva 9.1 users, you can execute: +<tscreen><verb> +$ su +# chkconfig --level 35 lircd on +# exit +</verb></tscreen> + +All other distributions: +<tscreen><verb> +# cd /etc/rc.d +# cat >> rc.local +echo "Starting lircd" +/usr/local/sbin/lircd +^D +# exit +$ +</verb></tscreen> + +This takes care of the lircd portion, which "listens" for the IR signals. If +everything went well, the install script for lircd put an appropriate +configuration file for your remote into <tt>/etc/lircd.conf</tt> This file +maps the buttons on the remote control to the IR pulses coming from the +receiver. + +The next step is to convert those signals into something that can be used +to control MythTV. MythTV now includes native support for lirc and can +interact directly with + +<tscreen><verb> +$ cd ~/mythtv-0.21/contrib/configfiles +$ cp lircrc.example ~/.lircrc +</verb></tscreen> +or +<tscreen><verb> +$ cp lircrc.example.pinnaclestudiopctv ~/.lircrc +</verb></tscreen> +if you've got a Pinnacle Studio PCTV remote. +<tscreen><verb> +$ irw +</verb></tscreen> +Start pressing the keys on your remote; <bf>irw</bf> will +print the name of the button as it is defined in your +<tt>/etc/lircd.conf</tt>. If you don't see anything at this point, you need +to troubleshoot further by going back to the lirc home page and investigating +from there. + +If it is working, then press <bf>CTRL-C</bf> to abort the program. Once you +know that your remote is working, you can either recompile MythTV with +native lirc support by enabling it in <bf>configure</bf> or you +need to run the <bf>irxevent</bf> program, which takes the key presses and +sends them to MythTV. If you use native lirc support, you don't need to run +<bf>irxevent</bf>. If you are going to use irxevent, then you need to run +it like this: +<tscreen><verb> +$ irxevent & +</verb></tscreen> +If <bf>irxevent</bf> isn't running, then MythTV will not respond to your remote +control unless you're using native lirc support. + +<sect1>Additional information for lirc +<p>Take a look at the lircrc.example files in the <tt>contrib/configfiles/</tt> +directory. In my case, (Pinnacle Studio card) the channel up and down functions +weren't working, due to the fact that the button names were different than +the default <tt>lircrc.example</tt> file that came with MythTV. + +The <tt>lircrc.example</tt> file has this: +<tscreen><verb> +begin + prog = irxevent + button = ChannelUp + config = Key Up CurrentWindow +end + +begin + prog = irxevent + button = ChannelDown + config = Key Down CurrentWindow +end +</verb></tscreen> +but the <tt>/etc/lircd.conf</tt> that comes in the lircd package +defines the buttons for the Pinnacle Studio PCTV as: +<tscreen><verb> + channel+ 0x0000000000000017 + channel- 0x000000000000001C +</verb></tscreen> +rather than "ChannelUp" and "ChannelDown". I added the +following to my /home/[yourusername]/.lircrc file: +<tscreen><verb> +begin + prog = irxevent + button = channel+ + repeat = 3 + config = Key Up CurrentWindow +end + +begin + prog = irxevent + button = channel- + repeat = 3 + config = Key Down CurrentWindow +end +</verb></tscreen> +which took care of basic functionality. Because the PCTV Studio remote +has additional buttons, look at the +<tt>contrib/configfiles/lircrc.example.pinnaclestudiopctv</tt> for an example of how +to define additional buttons, and how to debug potential button name +conflicts between the <tt>lircrc.example</tt> file and how <bf>your</bf> +remote defines the button names. + +By examining the button names defined in <tt>/etc/lircd.conf</tt> and using +the <bf>irw</bf> program to make sure that your remote is working, you can +create the appropriate mappings in <tt>.lircrc</tt> to get excellent remote +functionality with MythTV. + +Note the <bf>repeat =</bf> parameter. This informs the <tt>irxevent</tt> +program to pass through every third keypress. By default, <tt>lirc</tt> +will only send one keypress to the application, even if you're holding down +the key. The actual <bf>repeat =</bf> number will vary from system to +system, so experiment and see which value works best for you. + +<sect1>Configuring lirc for use with an IR blaster +<p> +<!-- By Carlos Talbot, <url url="mailto:carlos@talbot.net"> --> +Lirc has support for various IR transmitters. A popular model is the Actisys +IR-200L <url url="http://store.snapstreamstore.com/accessories.html" +name="http://store.snapstreamstore.com/accessories.html">. It was +originally designed for IRDA communication, but can be used to transmit A/V remote +control codes. By using the lirc SIR driver, this device can easily be +integrated with MythTV. I have tested this device with an AT&T DCT2000 +digital cable box but the instructions can be used to configure other IRDA +devices and A/V remotes. + +Follow the steps in the previous section. When you run setup.sh, select +option 1, driver configuration. From here select option 6, IrDA hardware. +Select your appropriate device and the corresponding serial port, then Save +configuration & run configure from the main menu. Once configure is done +type: +<tscreen><verb> +$ make +</verb></tscreen> + +Please note: unlike the Pinnacle receiver above you will be compiling lircd +in addition to a kernel module for the SIR transmitter. Depending on whether +you have your serial port driver configured as a kernel module you might see +the following message during make: +<tscreen><verb> +lirc_sir.c:56:2: warning: #warning +"******************************************" + +lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into " + +lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the " + +lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:" + +lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none" + +lirc_sir.c:61:2: warning: #warning +"******************************************" +</verb</tscreen> + +If you do receive this statement make sure to run the <bf>setserial</bf> command +before you load the lirc_sir module. Follow this with the install: +<tscreen><verb> +$ su +# make install +</verb></tscreen> + +You will notice that lirc installs the kernel module in +<tt>/lib/modules/uname -a/misc</tt>. + +The configuration for starting <bf>lircd</bf> differs if you're going to be +sending and receiving IR versus just receiving. +<tscreen><verb> +# cd /etc/rc.d +# cat >> rc.local +echo "Starting lircd" +setserial /dev/ttySx uart none # (if required) +modprobe lirc_sir +/usr/local/sbin/lircd +^D +# exit +$ +</verb></tscreen> + +At this point you have to populate the <tt>/etc/lircd.conf</tt> file with the proper +codes for your A/V remote. You should be able to find your remote within the +lirc remote tar file located at <url +url="http://www.lirc.org/remotes.tar.bz2" +name="http://www.lirc.org/remotes.tar.bz2">. In my case I +extracted the file from remotes/motorola/DCT2000 (gi-motorola-dct2000) + +To test the lirc_sir module you can run <bf>irw</bf> to verify the codes are being +received. If everything is configured correctly +you should see something similar to the following: +<tscreen><verb> +$ irw +0000000000007ff0 00 1 gi-motorola-dct2000 +000000000000bff8 00 2 gi-motorola-dct2000 +000000000000f7f0 00 ENTER gi-motorola-dct2000 +</verb></tscreen> + +Once you've verified lirc is working you can press <bf>CTRL-C</bf> to exit +<bf>irw</bf> and configure the channel changing script. + +The path to the channel changing script will need to be entered on the +mythtv-setup screen for Input Connections. + +This csh script will be called each time MythTV needs to change the channel. +Below is a copy of the script followed by the corresponding perl script. +Make sure both are in your path. Also make sure you leave the #!/bin/csh +setting and not change it to Bourne or bash. This will create a frustrating +symptom to diagnose where MythTV cannot open /dev/device. Unlike Bourne or +bash, csh scripts automatically close parent file descriptors before they +start. +<tscreen><verb> +$ cd /usr/local/bin +# su +# cat > change_channel.csh +#!/bin/csh +echo "changing to $1" +/usr/local/bin/channel.pl $1 & +^D +# chmod a+x change_channel.csh +# exit +$ exit +</verb></tscreen> + +See <tt>contrib/channel.pl</tt> for the actual file. Copy it to +<tt>/usr/local/bin/</tt> + +The last statement within the perl script is the lirc rc command. This is +the command that transmits the code to your cable/DSS box. Make sure to have +the IRDA device within a few feet of the box. + +<sect>Configuring MythTV. <label id="Configuring_mythtv"> +<p>By this point, all of the compile-time prerequisites have been installed, +<bf>mysql</bf> is running and has had its initial database setup. It's now +time to configure MythTV. +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: If you're running Debian unstable and you have compiled +MythTV from source, you will need to install an additional package before +you will be able to run MythTV. Execute the following to install the MySQL +driver for QT. +</caption> +</figure> +<tscreen><verb> +$ su - +# apt-get install libqt3c102-mt-mysql +# exit +</verb></tscreen> +<sect1>Configuring the Master backend system +<p>Open a shell and decide where you will store your video files. This may +be one directory or multiple directories on the same or different +filesystems. There is no default directory used for new recordings, you +<bf>must</bf> create at least one storage directory and configure Myth to +use it by running <bf>mythtv-setup</bf>. If you do not do this, then MythTV +will be unable to record anything. The following example is specific for +<tt>/var/video</tt>, but the same instructions would apply for any directory +name you choose to use. See the <ref id="advancedpartitionformatting" +name="Advanced Partition Formatting"> section for hints on creating a +partition for MythTV. + +<tscreen><verb> +$ su +# mkdir /var/video +# chmod a+rwx /var/video +# exit +</verb></tscreen> + +<bf>NOTE</bf>: The last slash "/" is not required. + +<label id="storagegrouptip"> +<bf>TIP</bf>: Try not to have your video mount point on the same partition +as your root partition, which could lead to the filling up of your root +partition with video data if the mount fails. For example: + +If <tt>/var/video</tt> is created on your root partition and you then +perform a mount of another drive to this directory there won't be any +problems if everything is working the way it should. However, if the mount +fails for some reason, <tt>/var/video</tt> still exists, so MythTV will find +the directory and write files to it. If your <tt>/</tt> mount point is +space limited, <tt>/var/video</tt> will <bf>also</bf> be space limited, and +it won't take long to fill the partition. This will cause a number of +side-effects, most of them bad. Instead, create subdirectories as the +destination for the storage group. + +Your directory structure could then look something like this: +<tscreen><verb> +/mnt/video/drive1/video +/mnt/video/drive2/video +</verb></tscreen> + +Your <tt>/etc/fstab</tt> would look like this: +<tscreen><verb> +/dev/hdb1 /mnt/video/drive1 +/dev/hdc1 /mnt/video/drive2 +</verb></tscreen> + +Because the Storage Group path is <tt>/mnt/video/drive1/video</tt>, if the +mythbackend can only find <tt>/mnt/video/drive1</tt> it will <em>not</em> +write files to that share. + +After you create the desired directory or directories for storing your video +files, you will need to add them to the proper Storage Group using +<bf>mythtv-setup</bf>. This procedure is described below in the <ref +id="storagegroups" name="Storage Groups"> section. + +The first thing to configure is the Master backend system. If you are +running multiple backend systems, the Master backend will make all +decisions about which programs will be recorded on which tuners. If you +have only one backend, then it will be its own master. + +The Master backend will always choose the first available tuner in the same +order as you add cards through "mythtv-setup". In other words, the second +card you add will only be used when there are two overlapping recordings, +the third when there are three, and so on. +<!-- Remove the next part once .21 is released --> Therefore, you will want to have +the greatest amount of disk space on the Master backend because its tuner +will always be the first choice. You will then want to add your <ref +id="nonmaster_backend" name="other backends"> in the order of your +preference for recording. + +<figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: It is possible to <em>not</em> have the cards on the Master +backend be the first ones used. However, if you are new to MythTV it is +easier to configure the Master backend first before moving on to the Slaves, +at least until you become more familiar with the MythTV system. See <ref +id="advanced_backend_config" name="Advanced Backend Configurations"> for +information on configuring multiple backend systems in various ways. +</caption> +</figure> + +Because MythTV uses a database to store all configuration variables, +part of the bootstrap of MythTV is to indicate the location of the MySQL +database server. If the frontend, backend and MySQL database server are all +going to be running on the same box, you can continue to the next step. If +not, you'll need to change the Host Name in the "Database Configuration" +screen of the mythfrontend program. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Users that have been running the frontend and the backend on +different machines have stated that they have been having issues with remote +access to the MySQL database. The following instructions may or may not +work. Add the following to <tt>/etc/my.cnf</tt> on the backend machine and +restart MySQL. +</caption> +</figure> +<tscreen><verb> +skip-innodb +set-variable=thread_stack=256k +</verb></tscreen> + +Run the setup program: +<tscreen><verb> +$ mythtv-setup +</verb></tscreen> + +The backend setup program will start and offer you a number of choices. It +is <em>strongly</em> recommended that you go through them in order. + +The first question will ask if you wish to clear out your existing +configurations for your capture cards. Initially, you should say "YES" so +that there are no surprises later. + +The next question will ask you if you wish to clear out your video source +information. You should answer "YES" to this as well. + +Once the graphical setup starts, you'll see that there are six choices + +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +The Storage Directories feature is available only in the SVN version of MythTV. +</caption> +</figure> + +<enum> +<item>General +<item>Capture Cards +<item>Video Sources +<item>Input connections +<item>Channel Editor +<item>Storage Directories +</enum> + +Use the arrow keys to move around, and press the space bar to select which +option you wish to configure. + +<sect2>General +<p>The first screen of the General configuration deals with IP addresses of the +system that you're running mythtv-setup on and any master backend you may have. +If you've only got one machine, then the default values are fine and you can +move to the next page by pressing the space bar. If you need to move around +the screen, use the arrow keys to move focus between settings, not the +mouse. + +If you will be deploying multiple backends, or if your backend is on one +system and you're running the frontend on another machine then <em>do +not</em> use the "127.0.0.1" IP address. + +<bf>NOTE</bf>: If you modify the 127.0.0.1 address and use a "real" IP +address, you must use real IP addresses in both fields, otherwise your +frontend machines will generate "Unexpected response to MYTH_PROTO_VERSION" +errors. + +Changing any of the port settings is very strongly discouraged. +(If you do accidentally change them, the defaults are 6543 for +the master/backend server, and 6544 for the HTTP requests) + +Once you're satisfied with the values, move the focus down to Next and hit +the space bar. + +The next screen details the Host-specific Backend setup. This is where you +will set the specific directory paths for this particular backend. Make +sure that you've followed the steps at the beginning of this section and +created a directory that exists and that MythTV will have write privileges +to. When you're done, press Next to continue, taking you to the Global +Backend Setup. + +On the Global Backend Setup configure your backend with the appropriate +settings. Use the left and right arrow keys to iterate through the choices +available on each setting, and the up and down keys to move between +settings. Move to Finish when you're done and press the space bar, taking +you back to the main configuration screen. + +<sect2>Capture Cards +<p>You should have no capture cards defined, so the highlight will be on +(New Capture Card). Press space to begin. + +Choose the appropriate settings for your particular tuner. Use the arrow +keys to move around and to make your choices, and press RETURN when +complete. Pressing RETURN will take you back to the Capture Cards screen; +if you have additional capture cards in this machine, press the space bar +when the highlight is on the (New Capture Card) row to define another card. + +If you have made a mistake, you can delete a card by highlighting it and +pressing the 'D' key, or you can highlight it and press the RETURN or 'E' +key to edit it. + +Once you have no additional cards to setup, press ESC. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: If you have a dual digital/analog card, such as the pcHDTV +cards and some DViCO cards, then you should not configure this as two +separate cards. Configure the digital portion as a DVB card, then click +on the "Analog Options" button within the DVB configuration panel for +the card and configure the analog portion of the card there. +</caption> +</figure> + +<sect2>Video Sources <label id="VideoSources"> +<p>When you start, the highlight should be on (New Video Source). Press the +space bar to begin. The first field asks for the name of the video source. +You may choose something easy to remember, like "Antenna" or "Cable". Once +you've chosen a name, press the down arrow to move to the next field. + +If you're in North America, change the grabber to +"SchedulesDirect.org(Internal)", then continue pressing the down arrow to +move to the next field. Fill in the username (lowercase only) and password +that you have established with Schedules Direct, then move to the "Retrieve +Listings" button and press the space bar. + +<bf>NOTE</bf>: You need <bf>wget</bf> version 1.9.1 or higher to use +Schedules Direct. + +The mythtv-setup program will contact the Schedules Direct servers and get +your account information. Once you're done, you may click the Finish button +and skip the next few paragraphs in this document since they only apply to +users that are using the external XMLTV script to get their guide data. + +If you wish to continue using the XMLTV grabber, then move to the Zip/postal +code field and put in the appropriate value. + +If you're outside of North America, then some manual interaction will be +required with XMLTV. You may need to switch from the MythTV setup program +to the console it was run on to interact with XMLTV. + +Once you have chosen your provider, press RETURN to continue. XMLTV will +now begin collecting the initial data for your location. The screen may +blank for a few seconds to several minutes, depending on the load of the +listings provider and the speed of your connection to the Internet. Be +patient! + +You will then be returned to the Video Sources screen. If you have multiple +video sources available, such as Antenna, Cable, etc, go ahead and define +them all, even if they're not all going to be physically connected to the +master backend server. Once you're done, press ESC to return to the main +screen. + +<sect2>Input Connections +<p>The final configuration item is Input Connections. On this screen, you +will associate the various video sources you defined earlier with a physical +input to a encoder card. It's entirely possible that you have multiple +tuners, and each tuner has a different input, so on this screen you let +MythTV know which device will connect to which input source. + +When you start this screen, you should see a listing of the various input +connections available on each of the Capture cards you defined earlier. For +example, you may have a capture card with a tuner, a SVideo and a Composite +connection. If you wanted to associate the tuner (a.k.a., "Television") +with an "Antenna" source you defined in Video Sources, you would move to the +<tt>/dev/videodevice (Television) -> </tt> line and press the space bar. +Using the left and right arrow keys will show you the various choices you +have already created for video source. In our case, you would use the +left/right cursor keys until "Antenna" was shown in the Video Source field. +Press down to move to the next setting. + +On the connection pane there is a "Scan for channels" button, if you are +configuring a digital source such as a DVB card, you need scan for channels +and you must do this before pressing the "Fetch channels from listings +source" button. You may scan for analog channels on an analog input, but +this is not needed. + +<!-- Ugh! Who's been editing the HOWTO? This next section needs some cleanup --> + +The other button is called "Fetch channels from listings source". As long as +you have a real listings source you should fetch channels from them for +analog channels. You can do this for digital sources as well (unless the +listing source is transmitted EIT data). If you are using XMLTV, you may need +to switch from the MythTV setup program to the console it was run on to +interact with XMLTV after pressing this button. It is possible to fetch the +channels on the command line using mythfilldatabase. But if you need to do +this, you will probably need to re-enter the MythTV setup program to +configure the "Starting channel" setting for this source->input connection. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: If you have a Hauppauge PVR-500, you must think of +it has two PVR-150's on a single PCI card. For example, if you have a +single PVR-500 card, it will appear as <tt>/dev/video0</tt> and +<tt>/dev/video1</tt>. Each <tt>/dev/video</tt> device will have a Tuner input. +</caption> +</figure> +Once you're done, press RETURN to go back to the Input Connections screen. +You would then finish associating the video sources to any other hardware +devices you have available. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Don't add a video source to a hardware input if you don't +actually have anything connected there. For example, adding "Cable" to the +Tuner and to the Composite inputs without having something connected to +Composite will lead to blank recordings. +</caption> +</figure> + +Press ESC to return to the main menu, and press ESC again if you have no +further items to configure, thereby returning you to the command line. + +<sect2>Channel Editor +<p>The channel editor is used to globally alter channel information, +including items like hue, contrast, fine tuning and others. Users in North +America shouldn't run the channel editor until you've completed the initial +mythtv-setup and ran <bf>mythfilldatabase</bf> at least once to populate the +database. + +<sect2>Storage Groups <label id="storagegroups"> +<p> +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +New in MythTV 0.21 +</caption> +</figure> +<sect3>Introduction. +<p> +Storage Groups are lists of directories that are used to hold MythTV +recording files giving you a flexible way to allow you to add capacity to +your MythTV system without having to use exotic solutions such as LVM, +filesystem expansion or RAID Online Capacity Expansion. You can also use +Storage Groups to organize recordings and to put recordings of a certain +type into one subdirectory. + +Storage Groups do not offer redundancy in case of hard drive failure, but +unlike LVM, if you lose a hard drive, you only lose the recordings that were +on that drive. With LVM, if you lose a hard drive, you will most likely +lose <bf>everything</bf>. + +<sect3>How to use Storage Groups. +<p> +By default, there is only one Storage Group called "Default", and it is +used for all recordings and Live TV. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: You need to add at least one directory to the Default +Storage Group or else you will not be able to record anything with MythTV. +</caption> +</figure> + +For example, if you have 5 hard drives in your system, your first hard drive +could be your "boot" drive, and the remaining four could be dedicated to +media storage. You could format the drives and mount them as +<tt>/mnt/store/d2</tt>, <tt>/mnt/store/d3</tt>, <tt>/mnt/store/d4</tt> and +<tt>/mnt/store/d5</tt>. + +Within each mount point, it's <em>strongly</em> recommended that you use a +sub-directory and make that the destination path for the Storage Group. See +the <ref id="storagegrouptip" name="Tip"> in the "Configuring the Master +backend" section for additional information. + +You would then add the four subdirectories you created under the mount +points (<tt>/mnt/store/d1/video</tt>, etc) into the "Default" Storage Group. + +At recording time, if there were four simultaneous recordings, MythTV would +put one recording onto each drive. + +Or, say that you originally installed MythTV to a 80GB hard drive, and that +hard drive is now filling up. You could simply add a new drive to your +system, mount it and update the Storage Group to add additional space. + +You may create additional Storage Groups to store specific recordings in +their own directories. Storage Groups are edited via the 'Storage +Directories' section of mythtv-setup. + +You can also create multiple Storage Groups to group recordings together; +recording schedules now have an option to specify which Storage Group to +use. + +MythTV will balance concurrent recordings across the available directories +in a Storage Group in order to spread out the file I/O load. MythTV will +prefer filesystems that are local to the backend over filesystems that are +remote until the local filesystem has 2 concurrent recordings active or +other equivalent I/O, then the next recording will go to the remote +filesystem. The balancing method is based purely on I/O, Myth does not try +to balance out disk space unless a filesystem is too low on free disk space +in which case it will not be used except as a last resort. + +Storage Groups are global, but can be overridden on a slave backend by +creating a local Storage Group by running <bf>mythtv-setup</bf> on the +slave. If a problem occurs and the slave backend is unable to use the +desired Storage Group, it will fail back and try the directories defined in +the master's Storage Group. + +There's also a special 'LiveTV' Storage Group, but the directory list starts +out empty. If you add a directory to the Storage Group, it will be used +instead of putting LiveTV recordings in the Default Storage Group. This +will allow you to put your LiveTV recordings on their own filesystem, which +is similar to the old MythTV method which used a RingBuffer for LiveTV. Of +course, you don't have to do anything, and Live TV recordings will just go +into the Default Storage Group where they'll be the first programs eligible +for expiration if the system needs free space for recordings. + +Usage information for all Storage Group directories is visible on the +mythfrontend status screen as well as the mythbackend status webpage. +MythTV is smart enough to determine which directories are on shared +filesystems so it should not count free or used space multiple times if you +have more than one directory on the same filesystem. + +<sect3>Migrating to Storage Groups. +<p>Migrating to Storage groups is very simple: if you have existing +recordings in a storage directory, then the system will automatically add +that directory to the Default Storage Group. If you then add additional +directories to a storage group, the system is flexible enough to check +<em>all</em> Storage Groups for a file before deciding that it can't be +found, which means that you can use the <bf>mv</bf> command from the Unix +command line to arrange files however you'd like. + +<sect3>Advanced: Algorithm used by the Storage Group +<p>This section details the logic of the Storage Group allocation engine. + +The current load-balancing preferences (in order) are: +<itemize> +<item>Local filesystems over remote +<item>Less-busy (less weight) over more-busy (more weight) +<item>More Free Space over Less Free Space +</itemize> + +The 'business' of a filesystem is determined by weights. The following +weights are added to a filesystem if it is in use for the following things: +<itemize> +<item>recording = +10 +<item>playback = +5 (mythfrontend) +<item>comm flagging = +5 (mythcommflag) +<item>transcoding = +5 (mythtranscode) +</itemize> + +If a recording is due to end within 3 minutes, it is not counted against +the weight of a filesystem. This is done to account for the pre/post-roll +and start-early/end-late settings. + +<sect1>Post-configuration +<p>Run the <tt>mythfilldatabase</tt> program as directed. The master +backend will obtain guide data for all the video sources you defined during +setup. + +<bf>NOTE</bf>: If you are using Schedules Direct and watching the output messages +on the console or the log file it is normal to see a "401 Unauthorized" +error followed by a "200 OK" when the connection to Schedules Direct is being +established. +<tscreen><verb> +From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC) +--02:58:01-- +http://datadirect.webservices.zap2it.com/tvlistings/xtvdService + => -' +Resolving datadirect.webservices.zap2it.com... 206.18.98.160 +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... +connected. +HTTP request sent, awaiting response... 401 Unauthorized +Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... +connected. +HTTP request sent, awaiting response... 200 OK +Length: unspecified [text/xml] + + [ <=> ] 114,125 63.57K/s + +02:58:03 (63.53 KB/s) - -' saved [114125] + +Your subscription expires on 08/20/2004 12:00:00 AM +Grab complete. Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14 +00:00:00 2004 (UTC) +</verb></tscreen> + +Once <tt>mythfilldatabase</tt> has finished, start the master server before +continuing. +<tscreen><verb> +$ mythbackend +</verb></tscreen> + +mythbackend will print information about connections and what it's doing to +the console. If you'd like to see the options that are available for +mythbackend, type <tt>mythbackend -h</tt> for help. + +As of MythTV v0.21, the available options are: +<tscreen><verb> +$ mythbackend --help +Valid options are: +-h or --help List valid command line parameters +-l or --logfile filename Writes STDERR and STDOUT messages to filename +-p or --pidfile filename Write PID of mythbackend to filename +-d or --daemon Runs mythbackend as a daemon +-v or --verbose debug-level Use '-v help' for level info +--printexpire List of auto-expire programs +--printsched Upcoming scheduled programs +--testsched Test run scheduler (ignore existing schedule) +--resched Force the scheduler to update +--nosched Do not perform any scheduling +--nojobqueue Do not start the JobQueue +--noautoexpire Do not start the AutoExpire thread +--version Version information +</verb></tscreen> + +Running mythbackend as a daemon and using the logfile option will allow you +to have mythbackend automatically start up during boot. You can follow the +steps outlined in the section called <ref id="mythbackend_autostart" +name="Automatically starting mythbackend at system boot time"> for +configuration steps. + +If you enable the <tt>-l</tt> parameter, you will want to keep your logfiles +rotated (so that they don't fill up a partition). See the section called +<ref id="logrotate" name="Automatically rotating logs"> for more +information. + +<sect1>Configuring a non-master backend <label id="nonmaster_backend"> +<p>Ensure that you've granted access to the master MySQL database for remote +backends as discussed in the section titled <ref id="modify_perm_mysql" +name="Modifying access to the MySQL database for multiple systems"> and that +you have the correct IP address for the database server in the "Database +Configuration" screen of the mythtv-setup application on this slave backend. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Slave backends <bf>must not</bf> run a local MySQL +daemon. By default, they will connect to their local daemon rather than the +central database, causing unexpected behavior such as empty "Watch +Recordings" lists and a failure to locate the Video Sources defined on the +master backend. Modify the <tt>/usr/local/share/mythtv/mysql.txt</tt> file +on all slave backends to ensure that the <tt>DBHostName</tt> has the address +of the MySQL server. + +Caveat: You may make a slave backend the primary MySQL server, or run a +non-MythTV database on a slave backend as long as you have edited the +<tt>mysql.txt</tt> file on <bf>all</bf> systems and made it consistent. +There can be only one authoritative MySQL database in a MythTV system - +errors such as the one above ensue if backends and frontends have differing +ideas of which MySQL database they should talk to. +</caption> +</figure> + +Make sure that the IP addresses on the General setup screen are accurate. +If the slave backend can't communicate with the master backend due to IP +address misconfiguration then MythTV will not function properly. + +Configuration of a non-master backend follows the same general procedure +as that of the master backend, with the exception that you skip over the +"Video Sources" step. All possible video sources need to be defined on the +master backend system; only the master backend will query a listings +provider to obtain guide data for all the non-master backends. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Do not run <tt>mythfilldatabase</tt> on a non-master backend. +</caption> +</figure> +<sect1>Configuring and running mythfilldatabase +<p><figure loc="here"> +<eps file="warning.eps" height="1cm"> +<img src="warning.png"> +<caption><bf>NOTE</bf>: <bf>mythfilldatabase</bf> might take a while to complete, +depending on any number of factors, most of which you can't control. It's +best to just let the program run to completion. +</caption> +</figure> +<bf>mythfilldatabase --help</bf> will give a full listing of the options +available. + +<bf>mythfilldatabase --manual</bf> is another option; the manual option will +allow you to fine tune channel frequencies and specify which channels will +be added to the database. + +<bf>mythfilldatabase --file</bf> is an option if there isn't an XMLTV grabber +for your country, but you <bf>do</bf> have an XML formatted listings file +created by some other program. + +<bf>mythfilldatabase --xawchannels</bf> is an option if you have used +<bf>xawtv</bf> to fine-tune your channels and would like to import the fine +tuning offsets into MythTV. + +<bf>mythfilldatabase --refresh-today</bf> will only pull guide data for +today (in case of late-breaking changes to the schedule). + +<!-- get more information on the manual setting --> + +<sect2>Periodically running <bf>mythfilldatabase</bf> +<p>In order to keep your database filled, <bf>mythfilldatabase</bf> should be +run once a day. + +To use MythTV's built-in capability, you'll need to run the +<bf>mythfrontend</bf> Setup option. From the mythfrontend, enter the +Setup>General screen and advance to "Mythfilldatabase", the fourth screen. +Select the checkbox, then complete the options as you see fit. The +<bf>mythbackend</bf> program will now run <bf>mythfilldatabase</bf> for you. + +<sect1>Grabbing channel icons for Schedules Direct users +<p>While the Schedules Direct TV listings service has several advantages, it +does not support grabbing logo icons for the stations you receive. However, +there are utilities provided with MythTV which you may use to grab your +initial set of icons and to keep them updated if your lineups change. + +First, you need to generate or obtain an XML file with the information for +your stations. + +If you have XMLTV software installed, there is a perl script in MythTV's +<tt>contrib/</tt> directory which will generate this file for you. Run the +command: +<tscreen><verb> +$ perl mkiconmap.pl +</verb></tscreen> + +You will be asked for your zip code and the service that you use. If there +are no errors, the <tt>iconmap.xml</tt> file that you need for the next step +will be created. + +If you do not have XMLTV software installed and do not want to install it +for the sake of this minor task, there is a generic +<tt>contrib/master_iconmap.xml</tt> which you can copy and use but this may +not be as complete as using the specific information for your service. + +Once you have an <tt>iconmap.xml</tt> file, add the icon information to your +database and grab any new icons with the command: +<tscreen><verb> +$ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map +</verb></tscreen> + +<sect>Configuring mythfrontend. +<p>Once you have completed configuration of your backend systems, the next +step is to configure the frontend client. + +When you start mythfrontend for the first time, it will attempt to connect +to a configuration database on the local machine. If there is none, a +"Database Configuration" screen will appear, and you will need to fill in +some details. The "Host name" field needs the backend or database server's +IP address or DNS name, and the User or password fields may need to be set +to match your database user accounts. After editing those fields, press +Enter twice to write these configurations on your local machine, and attempt +to connect to the database. If you make any mistakes, the screens will pop +up again. + +Now that mythfrontend has started up, you should have a number of +buttons/choices. Before doing anything, go to TV, then to Setup and +configure the frontend client. +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You should go through the various setup screens in +mythfrontend before using any other modules to ensure that the the database +is correctly initialized. +</caption> +</figure> +<sect1>General +<p>The General screen has configuration items that don't really fit anywhere +else. The first few configuration items ask you to indicate the number of +seconds to record before or after a program, which is useful if the +broadcast network or your system clock are out of sync and will help prevent +you missing the beginning or end of a program. + +To change the value, use the left and right arrow keys to increment and +decrement the number of seconds. When you're satisfied with the result, use +the down arrow to put the input focus on the Next button or press RETURN to +continue to the next page. + +The next page has a number of options to do with how channels are displayed +on your system. The help text will give you more information. Move the +focus to Next and press the space bar to continue. + +The last General page sets up some final configuration items. See the help +text for more information. + +<sect1>Appearance +<p>This set of screens is mostly concerned with how MythTV will look on your +system. From here, you can choose different themes and set the resolution +of your system. + +<sect1>Program Guide +<p>Fairly self explanatory. Note that the alternate program guide does not +use the same font settings as defined in Appearance, so if the EPG is +unreadable this is where you make the adjustments to fonts, number of +elements displayed, etc. + +<sect1>Playback <label id="deinterlace_"> +<p>The one configuration item which may cause problems on your system is the +"Deinterlace playback" setting. MythTV uses a linear blend algorithm for +deinterlacing, which will improve how the image looks on your screen. +Deinterlacing requires that your processor support SSE. (Streaming SIMD +Extensions, aka "MMX2"). Early Intel Celeron (those that don't use the +Coppermine 0.18um core and are usually <600MHz), Pentium Pro and Pentium II +CPUs do not have SSE, so make sure you haven't enabled deinterlacing if +your processor doesn't support it. If you enable it, and your processor +doesn't support SSE, you will get "Illegal Instruction" errors. + +To determine if you've got SSE on an Intel processor, you can: +<tscreen><verb> +$ cat /proc/cpuinfo +[snip] +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca +cmov pat pse36 mmx fxsr sse +</verb></tscreen> + +Notice the <bf>sse</bf> at the end of the line - this tells you that this +processor will be able to deinterlace correctly. + +On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is AMD's +implementation of SSE instructions, so if your processor has 3dnow you +shouldn't have any issues with deinterlacing. +<sect2>Video Filters +<!-- Submitted by Bruce Markey --> +<p>MythTV provides a means of employing video filters while recording and +during playback. These filters can be used to improve or modify the video +image, including hiding the effects of an interlaced image or reducing the +impact of noise in a poor video signal. The following is a brief +introduction to introduce you to the filters that are available in MythTV +version 0.20 and higher. +<sect2>Applying filters +<p>One or more filters can be included in a "filter chain". The filters to +be used are identified in a "filter string". A filter string is a group of +filter names and parameters separated by commas. To include parameters, the +filter name is followed by "=" and the parameter information. There should +be no spaces in the filter string. Here is an example filter string: + +With parameters: <tt>kerneldeint=10:1,denoise3d=12</tt> + +Without: <tt>kerneldeint,denoise3d</tt> + +Recording filters are set for each individual channel. These may be used +when encoding in software (MPEG-4, RTjpeg) but do not apply when using a +capture card with hardware encoding such as those supported by the ivtv +driver, DVB, HDTV or MJPEG cards. You can run MythTV's "setup" program and +select the "Channel Editor". On the first page for each channel, you can +enter a filter string in the box titled "Video filters". If you are running +"mythweb" on your web server, you can click on "Settings" then "Channels" +and enter filter strings in the "videofilters" column. + +Playback filters are per-host and apply to any recording you watch from the +frontend where filters have been applied. Playback filtering can only +work with software decoding so the viaslice, xvmc, and ivtv outputs ignore +filters entirely. From "mythfrontend" go to Setup->TV Settings->Playback. +Enter your filter string in the box titled "Custom Filters". + +<sect2>Currently Available Filters +<p>"Deinterlace Playback" checkbox. + +This implements special behavior needed for the "bobdeint" filter but can +also be used to choose any of the deinterlace filters. If you prefer, you +may leave this unchecked and include any of the deinterlace filters, other +than "bobdeint", in your custom filter chain. + +o The "invert" filter + +Invert ignores any parameters and inverts the pixel values of the video +frames. In other words, a negative image. This would rarely be useful but +may be a good example to verify that your filter strings take effect. + +o The "linearblend" filter + +It is a simple deinterlacing filter that ignores parameters and works by +blending adjacent lines. It replaces combing in interlaced video with a +less distracting "ghost" image. + +o The "bobdeint" filter + +This filter splits the interlaced image into two separate fields that +can be line doubled then displayed at twice the frame rate. If the +display is at the same refresh rate as the recording (59.92Hz NTSC or +50Hz PAL) this will cause each refresh to show objects in motion in +a new position with no jagged edges. However, if the display is not +synchronous, it will cause flickering or the appearance of the picture +moving up and down by one line. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: This filter requires the frame rate to be doubled +and therefore can only be used with the "Deinterlace Playback" checkbox. +Do not include this in your filter chain. +</caption> +</figure> + +o The "kerneldeint" filter + +Kerneldeint is a more complex deinterlacing filter which applies a filter +kernel using input from several lines. It generally removes combing without +a "ghost" image, sometimes leaving a faint outline of the image from the +other field. It is considered to be less distracting to watch than +linearblend or no filter at all. It accepts one or two integer parameters +separated by a colon. + +The first parameter is the filter threshold and defaults to 12. Adjacent +lines differing by more than the threshold value are filtered. The second +option defaults to 0. If set to a non-zero value, it will cause the filter +to skip chroma, and filter only the luminance. It may be useful on some +capture cards which do not capture the chroma fields of interlaced video +correctly. + +o The "onefield" filter + +This is a simple one-field deinterlacing filter that uses only one field of +the interlaced video. By default it keeps the top field, though passing the +parameter "bottom" will cause it to keep the bottom field instead. + +This filter is primarily useful for those who display 1080i HDTV signals +with a video mode that has 540 pixels vertically. The advantage over other +deinterlacing filters is that scenes with motion never show combing or +ghosting. + +o The "adjust" filter + +This filter adjusts the digital values for luma and chroma to ensure that +they will fall within the ranges specified in the ITU-R601 standard. By +default, this corrects a known problem for the luma range used by bt8x8 +chips which causes video to look washed out. If parameters are passed, there +need to be exactly six. However, passing a single parameter of "-1" will +disable the filter. + +1: luma minimum input value (int) +2: luma maximum input value (int) +3: luma gamma correction (float) +4: chroma minimum input value (int) +5: chroma maximum input value (int) +6: chroma gamma correction (float) + +The default bt8x8 correction values are equivalent to +"16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values (16-235 +luma, 16-240 chroma). + +<bf>NOTE</bf>: If it is not already specified in the filter chain, this +filter will be automatically applied when recording with the "bttv" driver. + +o The "quickdnr" filter + +A fast temporal denoiser. This can take 1, 2 or 4 parameters, each being a +value from "0" for the least filtering to "255" for the greatest filtering. +With one parameter, the filter will compute the values it should use for all +of its variables. Two parameters will set the filter strength for luma and +chroma independently. If you are interested in how the algorithm works, you +may examine the source code to see how four parameter are used. + +o The "denoise3d" filter + +A slower denoiser that applies a spatial and temporal low-pass filter. The +spatial filter can remove some noise that quickdnr can't, but a more +powerful CPU is needed. This filter accepts 3 float parameters: + +<itemize> +<item>luma spatial filter strength +<item>chroma spatial filter strength +<item>luma temporal filter strength +</itemize> + +Reasonable defaults will be selected for omitted parameters. The chroma +temporal filter strength is calculated from the other filter strengths. + +o The "crop" filter + +Covers edges of video with black bars. This helps improve video quality +when the edges of the frame are distorted. By default, this removes 16 +pixels from each edge. This can optionally take four parameters representing +top:left:bottom:right. The number times 16 is the number of pixels to remove +so, for example, the default is "=1:1:1:1". + +o The "forceyv12" and "forceyuv422p" filters + +These force the filter manager to use the given format. You can use one of +these at the head of a filter chain to change the capture format. The most +likely use would be forceyuv422p to use YUV422P capture on cards with known +chroma interlacing problems with YV12. + +There are some filters included in the MythTV source code that should +not be used: + +o The "forcergb24" and "forceargb32" filters + +The two RGB formats should not be used because there is no conversion filter +for them yet. + +o The "convert" filter + +It exists but don't use it. The filter manager uses this filter +automatically when it is unable to match the input/output formats of two +adjacent filters. + +o The "postprocess" filter + +While this exists in MythTV source code, it is currently not recommended for +use. + +<sect2>Usage Considerations +<p>There are trade-offs to consider when deciding if it would be wise to use +a filter. Any processing will modify the original image so you should assess +if the filter has made a noticeable improvement to the picture in order to +justify the impact of the processing. Adding any filter will inherently +increase CPU usage. The impact can vary dramatically depending on your CPU +type and speed, the resolution of the recording, which filters you are using +and other factors. You can only determine what is right for you through +experimentation. However, as a starting point, here are some filter strings +that you may find useful: + +For typical broadcast stations: "kerneldeint,quickdnr" + +For stations with poor signal quality: "linearblend,denoise3d=12" + +For synchronous TV-out: check Deinterlace with "Bob (2x framerate)" + +<sect1>Recording <label id="Recording"> +<p>Depending on your capture card, MythTV offers different video encoders. +The following types of hardware encoding cards are supported: +<itemize> +<item>MJPEG - Zoran-based cards; see <url url="http://mjpeg.sourceforge.net" name="http://mjpeg.sourceforge.net"> +<item>MPEG-2 - iTVC15/16 based cards (Hauppauge PVR-250/PVR-350); see <url +url="http://ivtvdriver.org" name="http://ivtvdriver.org"> +<item>HDTV - pcHDTV cards; see <url url="http://pchdtv.com" name="http://pchdtv.com"> and +the Air2PC-ATSC-PCI see <url +url="http://www.cyberestore.com/product_info.php?cPath=28&products_id=103" +name="http://www.cyberestore.com/product_info.php?cPath=28&products_id=103"> +<item>DVB - cards supporting DVB; see <url url="http://linuxtv.org" name="http://linuxtv.org"> +</itemize> +For cards without hardware encoding capabilities (all cards supported by +V4L not listed above), Myth includes two methods for software encoding: +RTjpeg and MPEG-4. RTjpeg has significantly fewer CPU demands than MPEG-4, +but it generates larger files than MPEG-4 for a given recording. + +For DVB and HDTV cards, no further configuration is required after +setting up the card using the 'mythtv-setup' program. +For all other cards, configuration is done through MythFrontend. +Selecting 'Recording Profiles' from the 'TV Settings' screen will list +the profiles currently available for the cards in your system. +Depending on what types of cards you have installed you may see: +<tscreen><verb> +(Create new profile group) +Software Encoders +Hardware MPEG Encoders +Hardware MJPEG Encoders +Transcoders +</verb></tscreen> +The '(Create new profile group)' option will allow you to create custom +profiles in case you have multiple backends. Note that custom profiles +are per backend and card type. If you have 2 MPEG-2 encoders in a given +backend system, creating a custom profile will affect both of them. This +option should not be needed otherwise. + +The 'Transcoders' group is a little different from the others. Selecting +this group will result in a menu with the following options: 'RTjpeg/MPEG-4' +and 'MPEG-2'. These types indicate what transcoder options will be used for +a given input type (i.e. the 'MPEG-2' settings would be used to transcode +MPEG-2 files into MPEG-4. The source of the MPEG-2 stream (DVB, HDTV, or +PVR-x50) does not matter. Configuration of the options is the same as below +(although any resolution settings will be ignored). + +Selecting any of the other options will show a new screen with a list of +four profiles: +<itemize> +<item>Default +<item>Live TV +<item>Low Quality +<item>High Quality +</itemize> + +The Default profile will be used for any recording which does not otherwise +have a specific profile assigned. The 'Live TV' profile will be used when +watching TV. The remaining two profiles are available for customizing to +allow for more precise control over what quality is used for a given +program. + +Selecting a profile will allow you to adjust the relevant options for that +card. The most significant setting is the recording resolution, but you can +also choose encoding format, audio format, and tweak other encoder specific +properties. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: although the width and height can be changed to almost +anything, if you start MythTV and don't see video or you get "segmentation +fault" errors, it is likely that the video4linux (v4l) subsystem did not +like the height and width parameters specified. It's best to leave the +default as-is until you're sure that MythTV is operational. +</caption> +</figure> + +See the <ref id="capture_resolution_" name="What capture resolution should I +use? How does video work?"> section for more information. + +<sect1>Xbox Frontends +<p>MythTV is able to control the LED on the Xbox to indicate backend +recording status. + +To control the LED, you will need the <bf>blink</bf> program from the +xbox-linux project, which is installed as <tt>/bin/led</tt> on GentooX. On +Xebian (the new Ed's Debian) you must install it yourself. On other +distributions it may or may not be installed as a program called +<bf>blink</bf> and should be located in your path. (Type <tt>which +blink</tt> to see if the program is available.) If you do not have +<bf>blink</bf>, you may obtain it from the Xbox-Linux project site at <url +url="http://xbox-linux.sf.net/" name="http://xbox-linux.sf.net/">. The +program you need is part of the <tt>eds_i2c_staff</tt> module in CVS. Note +the spelling. + +Once you have installed <bf>blink</bf> you will need to set permissions. +<bf>blink</bf> needs write permission to the i2c device to function +properly. There are three methods to accomplish this. First, you could run +<tt>mythfrontend</tt> as root, which is the simplest method, but could +potentially be a security risk. Next, you may make the <bf>blink</bf> +binary setuid root, which allows non-privileged users to run a program with +root capability. This is done by typing the command: +<tscreen><verb> +$ su +# chmod u+s /path/to/blink +</verb></tscreen> +The final technique would be to set the <tt>/dev/i2c/0</tt> device read/write +for all users, but this is the least preferred method. + +Now it's time to setup MythTV for Xbox hardware. Enter Setup -> General. +On the second page check the 'Enable Xbox Hardware' option. Upon reentering +the settings, you should have a new option named 'Xbox'. Within this option +you may select the distribution, LED colors for recording and the update +interval. If you select GentooX as the distribution <bf>led</bf> will be +used as the <bf>blink</bf> binary name, otherwise, <bf>blink</bf> is used. +Colors should be self explanatory. The update interval determines how often +the frontend should poll the backend to determine if the status has changed. + +<sect>Using MythTV. +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE to Red Hat/Fedora 4 users</bf>: Red Hat Linux and Fedora Core ship +with Gnome as the default desktop environment. However, Gnome seems to have +issues with window focus and window switching which sometimes cause +mythfrontend to obscure the video. KDE does not seem to have any such +issues. Therefore you will need to switch to KDE by selecting +RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose "KDE". + +<bf>NOTE to Fedora Core 5 and 6 users</bf>: Fedora 5 and 6 no longer have +this tool in the Menu. Use "switchdesk KDE" from a command line. Read "man +switchdesk" for further information about changing to other desktop +environments. +</caption></figure> +<sect1>Keyboard commands +<p>The <tt>keys.txt</tt> file describes what the various keyboard commands are. +If you have loaded mythweb, you may change the default keys to your liking. +<sect2>mythfrontend +<p> +<table loc=p> +<tabular ca="rll"> +Arrow keys | used to move the highlight point around @ +ALT-F4 | exit out of the application @ +Space/Enter | take action on the item under the highlight point @ +P | play in both "Watch a Recording" and "Delete a Recording" @ +D | delete in both "Watch a Recording" and "Delete a Recording" @ +U | to view details for the currently selected show on the Watch  + or Delete screens, EPG, "Program Finder", "Fix Scheduling  + Conflicts" and search results screens @ +O | to list the upcoming episodes for the currently selected show  + on the EPG, "Program Finder", "Program Recording Priorities",  + "Fix Scheduling Conflicts" or search results screens @ +I | edit recording options from the EPG, "Program Finder",  + "Program Recording Priorities", or "Fix Scheduling Conflicts"  + screens. From the Playback and Delete screens, 'I' presents  + options for recorded shows such as Auto Expire or Stop Recording.  + Pressing 'I' while on the Recording Options screen will take you  + to the Advanced Recording Options screen. +</tabular> +</table> +<sect2>Watching TV or a recording +<p> +<table loc=p> +<tabular ca="rll"> +Up or down | keys change the channel @ +num pad | Type a number to enter a channel number or jump amount (HHMM format) @ +P | pause / play. You may also add an explicit keybinding for 'Play' through  + MythWeb, returning you to normal speed if you are in slow motion, rewind  + fast forward or pause mode. @ +C | change inputs on TV Tuner card @ +ESC | quits @ +I | puts the On-screen Display up again. During playback, 'I' toggles  + between position and show description info. If a jump amount is  + entered, jump to that position. @ +M | brings up the electronic program guide (Grid) -- see the EPG section @ +Page Up | jump back the configured number of minutes (default is 10) @ +Page Down | jump ahead the configured number of minutes (default is 10) @ +End or Z | skip to next commercial break marker @ +Home or Q | skip back to previous commercial break marker @ +T | toggle close caption support  + Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext. @ +F | rotate between the various Picture Adjustments (Colour, Hue, etc.)  + While Picture Adjustment is on-screen, use Left and Right arrows to  + adjust. These settings adjust the look of the video playback, and are  + independent of the G-key settings used at record-time. @ +[ or F10 | decrease volume @ +] or F11 | increase volume @ +| or F9 | toggle mute @ +/ | jump to the next "favorite" channel @ +? | mark/unmark the current channel as a "favorite" @ +U | increase the play speed @ +J | decrease the play speed @ +A | Adjust time stretch (speed up or slow down normal play of audio and video @ +W | cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom   + (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black   + sidebars in TV signal) @ +F8 | toggle the sleep timer 30m->1hr->1hr30m->2hr->Off @ +CTRL-B | Jump to the beginning of the recording / ringbuffer @ ++ | Switch between audio streams @ +Left | (if a jump amount is entered) to jump back that amount @ +Right | (if a jump amount is entered) to jump ahead that amount @ + | @ + | @ + | <bf>Without the stickykeys option selected</bf> @ +Left | rewind the configured number of seconds (default is 5) @ +Right | fast forward the configured number of seconds (default is 30) @ +< | starts rewind mode as if stickykeys are selected @ +> | starts fast forward mode as if stickykeys are selected @ + | @ + | @ + | <BF>With Stickykeys option selected</BF> @ +Right | starts fast forward mode @ +Left | starts rewind mode @ + | @ + | @ + | <bf>In fast forward or rewind mode:</bf> @ +Left/Right | increases the ff/rew speed @ +0 | plays at normal speed, but leaves the time indicator on screen @ +1 or 2 | plays back more slowly than normal ff/rew speed (1 is slowest) @ +3 | plays back at normal ff/rew speed @ +4-9 | plays back faster than normal ff/rew speed (9 is fastest) @ +Space | exits fast forward or rewind mode @ + | @ + | @ + | <bf>While video is paused:</bf> @ +Left | rewind 1 frame @ +< | rewind 1 second @ +Right | advance 1 frame @ +> | advance 1 second +</tabular> +</table> +<sect2>Watching TV only +<p> +<table loc=p> +<tabular ca="rll"> +G | rotate between the various Picture Adjustments (Colour, Hue, etc.)  + for recording. These values affect the look of the resulting .nuv  + file, and are independent of the playback picture settings. While  + Picture Adjustment is on-screen, use Left and Right arrows to adjust. @ +H | Channel history. Each repeat steps back through the previous channels. @ +O | Turns on 'Browse' mode, allowing user to browse channels and program  + info while watching current show FullScreen. @ +Y | switch between multiple capture cards.  <bf>NOTE</bf>:  + you will lose your LiveTV buffer on your current card. Useful  + for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.) @ +</tabular> +</table> +<sect2>LiveTV Browse Mode +<p> +<table loc=p> +<tabular ca="rll"> +Left | browse program prior to current listed program @ +Right | browse program following current listed program @ +Up | browse program on channel above current listed channel/program @ +Down | browse program on channel below current listed channel/program @ +/ | browse program on next favorite channel @ +0-9 | enter a channel number to browse @ +Space/Enter | change channel to channel of current listed program @ +R/r | Toggle recording of current program (cycles through types) @ +ESC/O | Exit Browse mode +</tabular> +</table> +<sect2>Playback Recording Zoom Mode +<p> +<table loc=p> +<tabular ca="rll"> +Left | Move video to Left @ +Right | Move video to Right @ +Up | Move video Up @ +Down | Move video Down @ +PageUp | Zoom In @ +PageDown | Zoom Out @ +Space/Enter | Exit Zoom mode leaving picture at current size and position @ +ESC | Exit Zoom mode and return to original size +</tabular> +</table> +<sect2>If you have two or more tuner cards +<p> +<table loc=p> +<tabular ca="rll"> +V | toggle Picture-in-picture on or off @ +B | toggles the window focus (lets you change channels on the PiP window) @ +N | swaps the two channels by changing channels on both cards +</tabular> +</table> +<sect2>Watching a recording only +<p> +<table loc=p> +<tabular ca="rll"> +Space/Enter | set a bookmark at that point. Next time you start the  + recording, you will automatically jump forward to this point  + and clear the bookmark. @ +X | queues the current recording for transcoding @ +O | brings up menu to allow toggling settings such as Commercial  + Auto-Skip, Auto-Expire, etc. @ +D | exits the current recording and displays the Delete menu @ +E or M | enters/exits edit mode. @ + | @ + | @ + | <bf>In edit mode</bf> @ +Left/Right | move forward and backward @ +Up/Down | alter the amount of time you jump forward and backward.  + Increments are: nearest cutpoint, nearest video keyframe, 1  + frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes,  + and 10 minutes. @ +PageUp/PageDown | move forward and backward to the nearest cut point @ +< or > | move forward or backward by 10 times the normal jump amount @ +Space/Enter | allows you to set or delete a cut point @ +Z | loads the commercial skip list (if one exists) into the cutlist @ +C or Q | clear all cut points in the cutlist @ +I | Inverts the cutlist +</tabular> +</table> +<sect2>EPG +<p> +<table loc=p> +<tabular ca="rll"> +Arrows | are used to move the highlighted program point around @ +A, D, S, W | perform the same as left, right, down and up @ +PageUp/PageDown | move the channel list up or down a page @ +Home/End | move the highlight left or right by one day @ +Ctrl+Left or < | move the highlight left by one page @ +Ctrl+Right or > | move the highlight right by one page @ +9, 3, 7, 1 | (like a numeric keypad) perform the same as PageUp, PageDown,  + Home and End @ +I | bring up more information about a show, and allow you to  + schedule a recording. If you select "Record this showing"  + while watching Live TV you can "Instant Record" a program. @ +Space/Enter | allow you resolve conflicts or change overrides. If the  + program is not already scheduled to record, it will instead act like  + pressing 'I'. @ +M | when on a channel will change to that channel @ +ESC or C | exits without changing the channel @ +R | change the current item from Recording/Not-Recording.  + Successive keypresses cycle through the scheduled recording  + type list. @ +X | change the channel to the currently selected channel without  + leaving the EPG (Most useful in the alternate EPG) @ +? | mark/unmark the current channel as a "favorite" @ +/ or 4 | toggle the guide listing between all channels and filtered  + "favorites" +</tabular> +</table> +<sect2>Setting Program or Channel Recording Priorities +<p> +<table loc="l"> +<tabular ca="rll"> +Right | increases priority value @ +Left | decreases priority value @ +1 | sorts by title @ +2 | sorts by priority @ +Home/End | toggle sort priority @ +I | edit recording options @ +ESC | commits changes and exits +</tabular> +</table> +<sect2>Viewing Scheduled Recordings/Resolving Conflicts +<p> +<table loc=p> +<tabular ca="rll"> +1 | show all recordings @ +2 | show only important recordings @ +Home/End | toggle show showing all/important @ +I | edit recording options @ +Space/Enter | resolve conflict or override +</tabular> +</table> +<sect2>Viewing Search Listings +<p> +<table loc=p> +<tabular ca="rll"> +Home | change to the previous view if applicable @ +End | change to the next view if applicable @ +M | select another view if applicable. In the  + title and description search popup, press  + M again to edit or delete the selected view. +</tabular> +</table> +<sect2>Recording Profiles Setup Screen +<p> +<table loc=p> +<tabular ca="rll"> +D | on a custom profile group displays a popup to delete the group@ +</tabular> +</table> +<sect2>Recording Groups +<p>In the Watch Recordings screen, Recording Groups allow you to separate +programs into user-defined categories, such as "Kids", "Alice", "Bob", etc. +This can be used to reduce clutter, or to segregate content if you use the +PIN function. +<table loc=p> +<tabular ca="rll"> +M | change the view or to set a group password @ +I | move a program from one Recording Group to another +</tabular> +</table> +<sect2>Watch Recordings Screen +<p> +<table loc=p> +<tabular ca="rll"> +1 or F1 | Meaning of the icons @ +/ | Tags a recording. Tagged recordings can be played  + either in order or shuffled and deleted as a group.  + You can also change the recording group for several  + recordings at once by tagging them and using the   + Menu (m) button, selecting "Playlist options",   + then "Change Recording Group". @ +? | Clear the tagged list. +</tabular> +</table> +<sect2>Remote Controls +<p> +If you are using MythTV with just a remote control then it is suggested that you +map the remote control keys as described below. Your remote control may not +have the same set of keys as those named below, the names are only a suggestion +that roughly correspond to the function. +<p> +If you are adding new key bindings to the program then consideration of this +suggested list will help users with remote controls. +<p> +This list assumes a minimal remote control that only has 20 keys, nearly all +features can be used with this configuration. If you have more keys then you +can access all of the features. With only 16 keys most features are usable. +<table loc=p> +<tabular ca="rll"> +REMOTE CONTROL | LIRC KEYSTROKE | FUNCTION @ +0 - 9 | 0 - 9 | channel selection, EPG navigation, ff/rew speed setting (with stickykeys) @ +Left Arrow | Left | scroll left, rewind @ +Right Arrow | Right | scroll right, fast forward @ +Up Arrow | Up | scroll up, channel change up @ +Down Arrow | Down | scroll down, channel change down @ +Select / OK / Play | Space | Select item, play (with stickykeys) set bookmark @ +Cancel | Escape | Cancel, quit playback @ +Menu | m | EPG (from watching TV) edit (from playback). @ +Pause | p | Pause @ +Other key 1 | i | Information @ +Other key 2 | c | Change tuner card input +</tabular> +</table> + +<sect1>Using themes with MythTV +<p>MythTV is "themeable", meaning that the visual appearance of the program +can be modified by the user without re-compiling or altering the program +functionality. Download the MythThemes tarball from the website and untar it: + +<tscreen><verb> +$ tar -xjf myththemes-0.21.tar.bz2 +$ cd ~/myththemes-0.21 +$ qmake myththemes.pro +$ su - +# make install +# exit +$ +</verb</tscreen> + +The theme will now be available in the mythfrontend Appearance section. + +<sect1>Adding DishTV information to the database +<p>A script for adding Pay Per View information into the MythTV database for +DishTV subscribers is available at <url url="http://www.mythppv.com/" +name="http://www.mythppv.com/">. + +<sect1>Adding support for an external tuner +<p>MythTV supports changing the channel on an external tuner. If you have +an external tuner, such as a DirecTV or digital cable set top box, you +should add <tt>/usr/local/bin/changechannel</tt> to your Input Connections in the +mythbackend configuration GUI. + +However, there is not <bf>changechannel</bf> program per-se, because this is +going to be dependent on what sort of external tuner you have. Look in the +<tt>contrib/channel_changers</tt> directory for a number of programs and +scripts which may be used to change channels. Once you find one which +works, copy it to <tt>/usr/local/bin/changechannel</tt>. + +Feel free to browse some of what sort of hardware is available at <url +url="http://store.snapstream.com/accessories.html" +name="http://store.snapstream.com/accessories.html">, or if you wish to +assemble your own, rather than purchase, the following may be helpful: <url +url="http://www.dtvcontrol.com/" name="http://www.dtvcontrol.com/"> for +cable pinouts. + +<sect1>Using Shutdown/Wakeup +<p>What does the MythTV Shutdown/Wakeup function do? The scheduler on the +Master backend (MBE) keeps track of the idle status of the entire MythTV +system, including the Slave backends (SBE). If it considers the system to be +idle, and thus ready to shutdown, it sets the wakeuptime to the time of the +next recording and then proceeds to shut down all Slave backends and then +itself. Once it is time to begin recording, the Master backend and the Slave +Backends are automatically woken up. This system allows MythTV to record +like a normal VCR, thereby conserving power when not in active use. + +In order to use the Shutdown/Wakeup function there must be some method of +waking up the Master backend. There are any number of solutions, but we +will discuss in detail two possibilities: + +<itemize> +<item>Use another server that runs 24/7 and have it send a WakeOnLAN (WOL) +packet to wake the Master backend. This assumes that you have the WOL tools +installed, and that your Master backend motherboard supports WOL. +<item>Use your motherboard's BIOS wakeup capability. You'll need a motherboard +that supports BIOS wakeup, and some tools. Two that work are: <url +url="http://sourceforge.net/projects/nvram-wakeup" +name="http://sourceforge.net/projects/nvram-wakeup"> and <url +url="http://www.malloc.de/tools/wakeup_clock.html" +name="http://www.malloc.de/tools/wakeup_clock.html"> +</itemize> + +<sect2>A deeper look into the operation +<p>The scheduler keeps track of the idle status of the MythTV system. To +determine whether or not the MythTV system is idle, the following conditions +must be met for a period of time defined in the "Idle timeout (secs)" +parameter. +<itemize> +<item>no client is connected to the server +<item>no recording (neither LiveTV nor a regular recording) is currently taking place +<item>no recording starts within a definable amount of time ("Max. wait for recording (min)") +<item>the "pre Shutdown check-command" returns 0 +</itemize> + +If we get to this idle state the Master backend will set the wakeuptime using the "Set +wakeuptime command", which is the same for WOL and BIOS wakeup. The Master backend will +then shut down the Slave backends and itself using the "Server halt command". + +One caveat is that the scheduler tries to guess if the Master backend was started by a +wakeup call or by the user. If it thinks it was woken up by a user, it +blocks shutdown until a client connects to the Master backend, after which it will +behave as described above. To disable this feature, unset "Block shutdown +before client connected" in the mythfrontend Setup->Setup->General screen. + +Once it is time to startup the system, the Master backend is woken up first and will +wakeup the Slave backends using the "Wake command for slaves". At this time, there is +no support for starting only the required Slave backend, so all Slave backends will startup. + +<sect2>Setting up the MythTV side of this extension. +<p>There are a number of options that are used to control the Shutdown / +Wakeup feature. + +Shutdown/Wakeup Options: +<itemize> +<item>"Idle timeout (secs)" is the time the server waits while idle until a +shutdown occurs. +<item>"Max. wait for recording (min)" is the time the Master backend waits for a recording +without shutting down. For example, this would be used to prevent a 10 +minute system shutdown if a recording is set to start 15 minutes from now. +<item>"Startup before rec. (secs)" Sets how long before a programmed +recording the MythTV system will be woken up. This should be roughly be the +time your systems need to bootup, and if you have Slave backends, you'll +need to ensure this value is long enough for all your machines to perform +their bootup cycle. +<item>"Wakeup time format" is the format of the wakeup time that is given in +the "Set wakeuptime command" as a parameter "$time". You need to set this +according to your wakeup mechanism. If you need seconds since the epoch +(1970-01-01) set the "Wakeup time format" to "time_t". +<item>"Set wakeuptime command" is the command executed to set the new wakeuptime. +<item>"Server Halt Command" is the command executed to shutdown the Master +backend and the Slave backends. +<item>"pre Shutdown check-command" is used to give a +"Go/NO-GO" decision from a non-MythTV source. This command is executed +immediately before the shutdown would occur. The return value is use to make +the following choices: +<itemize> +<item>If it returns a "0" the shutdown will occur as scheduled. +<item>If it returns a "1" the "idle timeout" will be reset and the system +waits again for the timeout. +<item>If it returns a "2" the entire shutdown sequence is reset. This means +that a new client connect is needed before a shutdown occurs, unless you have +the "Wait for client connect" setting disabled, in which case this is the same as +returning "1". An example of a use for this return value is to prevent the shutdown +if a user is currently logged in, or if a specific program (i.e. transcode, +automatic updates, etc.) is currently running. If you don't need it, leave +the field blank. +</itemize> +</itemize> + +The "WakeOnLan settings": +These settings have nothing to do with using BIOS or WOL wakeup, they are +the same for both. +<itemize> +<item>"Master backend" This setting defines timings for the frontends to +wakeup the Master backend using WOL. Useful if your frontend can emit a WOL +packet so you don't need to physically go to the Master backend if you're +trying to watch TV. +<item>"Reconnect wait time (secs)" is the time the frontend waits after +executing the "Wake command" before attempting to retry the connection. This +should be roughly the amount of time your Master backend needs for bootup. +Set to "0" to disable. The frontends will retry to connect for "Count of +reconnect tries" times before giving up. +<item>"Wake command for slaves" is the <em>one</em> command executed to wake +your Slave backends. This should be a script that contains the calls to +wakeup all Slave backend systems. +</itemize> + +<sect3>Using WOL to wake your Master backend. +<p>To use WOL to wake your Master backend you will need a WOL capable Master +backend, a machine that runs 24/7 which can execute an at-job and nc (netcat) +on the Master backend. I use some little bash scripts to make my DSL router +wakeup my mythbox if required. + +Replace $SERVER and $PORT with your own settings! +On my Master backend I have a script that gets called as 'setwakeuptime command' which +looks like the following: +<tscreen><verb> +#! /bin/sh +echo $@ | nc $SERVER $PORT +</verb></tscreen> +This simply cats the parameters (that is $time) to my 24/7 server. On my +$SERVER I have (x)inetd listening on $PORT starting a little script which +cares about setting the at-job. The following additions are necessary on the +$SERVER: + +If you use <bf>inetd</bf>: +<p>In <tt>/etc/inetd.conf</tt> add: +<tscreen><verb> +mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake +</verb></tscreen> +If you use <bf>xinetd</bf>, save the following as <bf>mythwake</bf> in your +<tt>/etc/xinet.d/</tt> directory: +<tscreen><verb> +service mythwake + { + socket_type = stream + wait = no + user = mythtv + protocol = tcp + id = mythwake + server = /usr/local/bin/mythwake + } +</verb></tscreen> +and add the following to <tt>/etc/services</tt>: +<tscreen><verb> +mythwake $PORT/tcp +</verb></tscreen> + +Finally, <tt>/usr/local/bin/mythwake</tt> looks like: +<tscreen><verb> +#! /bin/bash +#this should be a command to wake your server +WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE" +#first we need to delete all wake jobs in queue +for JOB in atq | cut -f 1 ; do + atrm $JOB; +done +#now we read the date from 'nc' +read date; +#now set the atjob +echo -e "$WAKECMD" | at $date ; +</verb></tscreen> +<bf>SECURITY WARNING</bf>: +Be sure to secure $SERVER:$PORT from untrusted networks, because this +allows 3rd parties to run arbitrary code on your server! + +<sect3>Using BIOS wakeup to wake your Master backend. +<p>Since I don't use this, I cannot say much about this. If your motherboard +supports any wakeup tool you have to call that tool as "Set wakeuptime +command" with the "Wakeup time format" suitable for that tool. +<sect2>Wakeup the MySQL server using WOL +<p>If your MySQL server and your Master backend are not on the same machine, +you can have the Master backend wake your MySQL server using WOL. You will +find the settings for this in the second page of the mythtv-setup program, +or at the end of <tt>mysql.txt</tt>. The meanings are the same as +discussed in "The WakeOnLan settings" above. + +<sect2>Tips/Tricks: +<p>If, for example, one of the Slave backends is also your desktop computer, +you could simply use a little script as 'server halt command' which first +calls <tt>/sbin/shutdown -t TIMEOUT</tt> where TIMEOUT is a value sufficient +for you to react. You could then popup a window using *dialog, asking for +permission to shutdown. If you cancel the shutdown, simply call +<tt>/sbin/shutdown -c</tt>. + +If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your +set-wakeuptime-script should stop the program that uses <tt>/dev/rtc</tt> before +setting the wakeuptime. +<sect1>Controlling the mythfrontend via telnet +<p>To use this feature you must first enable it in Settings>General>General + +The network control listens on port 6546, as demonstrated below: + +<tscreen><verb> +$ telnet basement 6546 +Connected to basement. +Escape character is '^]'. +MythFrontend Network Control +Type 'help' for usage information +--------------------------------- +# help +Valid Commands: +--------------- +jump - Jump to a specified location in Myth +key - Send a keypress to the program +play - Playback related commands +query - Queries +exit - Exit Network Control + +Type 'help COMMANDNAME' for help on any specific command. + +# help jump +Usage: jump JUMPPOINT + +Where JUMPPOINT is one of the following: +channelpriorities - Channel Recording Priorities +channelrecpriority - Channel Recording Priorities +deletebox - TV Recording Deletion +deleterecordings - TV Recording Deletion +guidegrid - Program Guide +livetv - Live TV +livetvinguide - Live TV In Guide +mainmenu - Main Menu +...snip... +# exit +$ +</verb></tscreen> + +Please note that this feature only allows one connection at a time, so any +new connections will automatically terminate prior ones. + +<sect>Scheduling Recordings. +<p>The MythTV master backend is responsible for managing the schedule for +all TV tuner cards on the master and any slave. Its job is to search the TV +listing for the shows you have requested and assign recordings to the TV +tuner cards. If none of the shows that you've chosen overlap, it simply +records all of them. However, if there are shows where the beginning +and end times overlap, the scheduler follows rules that you've specified or +makes logical decisions about what would be best if you haven't expressed your +preference. Further, the "Upcoming Recordings" page allows you make specific +decisions about what you really do and don't want to record. + +<sect1>Record Types +<p>When you choose a show that you would like to record from the +Options Page, there are eight different types of rules to help the +scheduler find which showings you would like to record. + +<itemize> +<item>Single Record -- record only this title at this specific time and +this station. This is the best way to be sure that a certain showing will +be recorded. However, if the TV listings change and the show is not broadcast +at that time, the show will not be recorded but will be marked as Not Listed +to let you know that you should investigate. + +<item>Find One -- this will record a title once from any of the times +that appear in the TV listings. This is useful for recording a movie +or special that has multiple showings because it allows the scheduler +to choose one that doesn't conflict. It is not a good choice for +recording a single episode of a series because it records the first +available showing of the title without regard to the episode +information. + +<item>Record Weekly -- this records a show whenever the title is listed +on the same channel, weekday and time. Note that if the TV station +changes the schedule for a special episode, it would not be +recorded. However, you can add a Single record for the special +episode. If there are no matching showings in the TV listings, +a Not Listed item will be added to your schedule for the next +time slot to let you know that you should investigate. + +<item>Find Weekly -- this will record a title once per week from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each week but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the week. + +<item>Record Daily -- this records a show whenever the title is listed +for the time and station on any day of the week. Here again, a show +will not be recorded if the time was altered by the station. If there +are no matching showings in the TV listings, a Not Listed item will be +added to your schedule for the next time slot to let you know that you +should investigate. + +<item>Find Daily -- this will record a title once per day from any +of the times that appear in the TV listings beginning from the time of +the showing that was selected when the rule was set. This is useful +for news, current events or other programs where the same episode is +shown several times each day but the listings may not include +descriptive information. This may not be a good choice if there are +different episodes shown during the day. + +<item>Channel Record -- records one showing of each unique episode from +any of the times the title is listed on this station. This is perhaps +the most common rule to use for most shows. + +<item>Record All -- records one showing of each unique episode from +any of the times this title is listed on any channel. This can be +useful if a station has sister stations where shows are rebroadcast +allowing the scheduler to record rebroadcasts on the other station +when the original airing cannot be recorded. +</itemize> + +<sect1>Scheduling Options +<sect2>Priority +<p>By default, all shows you select have equal value to the +scheduler. There are a set of rules to make good choices when +two or more shows are in conflict. However, priority values let the +scheduler know what you prefer so that it can set the schedule based +on your preferences. + +Initially, recording rule priority values are set to zero. You may choose +to leave everything at "0" and let the scheduler follow rules to guess +what you might prefer when there are conflicts. However, if you have +one or two favorite shows, you may want to increase the priority +value so the scheduler will know that you would prefer recording +these over other shows. You might use certain values to rate shows +so that all favorites are 2. good shows are 1 and extra 'filler' +shows are all -1 for example. You could sort each title on the "Set +Priorities" page to have a unique value so the scheduler can know +which show you'd prefer versus any other show. The choice and style +are entirely up to you. However, the more information you give to +the scheduler, the more likely it will make the choices you would +prefer in the first place. + +The scheduler choices are based on the total priority for a showing by +adding up all priority factors that match the showing. By default, most +of these factors are "0" but you may use any combination to express your +likes and needs. + +<itemize> +<item>Per record rule -- this is the "priority" selection in the "Scheduling +Options" section of the options page and this value is included for any +showings that match the recording rule. You may choose to only use these +values and not use the other factors for the sake of simplicity and clarity. +<item> +Per record type -- Setup->TV Settings->Recording Priorities->General allows +you to add to the priority based on the type. It may make sense to increase +the value for "Single" so that by default they have an extra advantage over +other shows. The default is +1. You may want to decrease the value for Find +rules so that they will be less likely to interfere with regularly scheduled +shows and will be more likely to record in a non-conflicting time instead. +The default is -1. +<item> +Per channel -- Setup->TV Settings->Recording Priorities->Channel Priorities +can be useful if you believe that you prefer any of the shows on certain +channels. This would give all shows on a channel an advantage by default. +<item> +Input priority -- in the "mythtv-setup" program, the "Input Connections" +section allows you to add additional priority in the "Input priority". +This is simply another priority factor but has an interesting effect. If a +card input has a higher value than the other cards, the scheduler will see +that you would rather record showings of episodes on this input rather than a +showing on other inputs. If you have multiple cards of different quality, +you may want to set input priority to encourage the scheduler to record +shows on your best card(s) whenever possible. This can also be useful if you +have multiple video sources which include the same stations. For example, +with digital and analog cable you could increase the digital cable input +preference by 1 to tell the scheduler that you want to record from the +digital channel whenever possible but the channel on the analog input could +still be used when the digital input is busy. +<item> +Custom Priority -- this allows you to add any specialized factors you +would like in order to influence scheduling decisions. See the +<ref id="Custom Priority" name="Custom Priority"> section below. +</itemize> +For any single showing of any show you've chosen to record, these factors +are added together to find the "total priority". This is the priority that +the scheduler uses to decide which showings are given the first choice when +filling in the schedule. + +The scheduling priority of a show may also be used to determine +auto-expiration of recordings when disk space gets full (see <ref +id="Auto-Expire" name="Auto-Expire">, below). + +<sect2>Duplicates +<p>Singles will record without regard to duplicate matching. + +<p>The standard recurring methods of All, Channel, Weekly and Daily use the +descriptive information in the TV listings to try to record only one showing +of each unique episode. However, This goal is sometimes complicated by the +fact that the stations may not include a description for a specific episode +but use a generic description for the series instead. When there is a +generic description, the default behavior is to assume that it may be an +episode that you have not seen and to record it for you. One of the +duplicate matching options is "Record new episodes only". If this is +selected, listing that have an original air date of more than 14 days +earlier are considered repeats and are not eligible to record. Generally, +generic episodes will be marked as repeats also. + +<p>Because of generic episodes and other situations, MythTV offers an +alternative approach where shows may be recorded by choosing from multiple +showings even when the descriptive information is not reliable. All of the +"Find" record types look for matching titles in the listings. If there is a +showing with specific episode information and that episode has recorded +before, that showing is marked as previously or currently recorded. The +scheduler will then choose to record the earliest non-conflicting showing +from any of other remaining showings regardless of the descriptive +information. Generally, Find One is most useful for movies or specials and +the Find Daily and Find Weekly rules are best for news or current events +shows that are repeated. However, these may be useful in other situations +where the standard recording rules may not work correctly. + +<sect2>Conflicts +<p>As you add more shows that you would like to record, the scheduler +will eventually encounter conflicts. If there are two shows at the +same time and you have two or more TV tuner cards, both shows will +record. However, if there are more shows than cards, the scheduler +will have to decide what it thinks it should not record based on the +information you have given. If you see an unexpected situation you +are not "stuck" with the scheduler's choice. You can still tell the +scheduler exactly which shows you do want to record and/or don't +want to record in any situation. + +<sect2>Scheduling decisions +<p>Here are the actual decisions made by the scheduler as it fills in the +schedule. + +<itemize> +<item>Currently recording beats not currently recording -- A recording +in progress can not be moved to another input or time so it "wins" +its current timeslot. + +<item>Single, Daily, or Weekly rules with no match are marked Not Listed -- +If these or Overrides do not match the current listings because the +listings have changed, they are added to the schedule and marked to +indicate that they will not record. + +<item>Rules that could record beat rules that can not record a showing -- +If two rules match the same showing of a program, a rule marked as inactive +or a showing marked as a repeat, for example, yield to the other rule. + +<item>More specific record type is used in place of less specific -- If +two rules match the same showing of a program, preference is given to +Don't Record then Override, Single, Find One, Record Weekly, Find Weekly, +Record Daily, Find Daily, Channel and finally All. + +<item>Higher total priority beats lower total priority -- This is the +core of the scheduling process. Episodes of the highest priority show +are placed on the first available input followed by the next highest +priority show and so on. + +<item>Future start time beats past start time -- If there is an +episode in progress and also a later showing of the same episode, it +is better to record the complete episode. If there isn't another +showing, it will start recording immediately to record the remaining +portion. This should only happen if you add a new rule while the show +is in progress or if the master backend is started after the start time +of a scheduled show. + +<item>More specific record type beats less specific record type -- If +two shows are on at the same time and have the same total priority but +different types they will be sorted by Single then Find One, Record +Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally +All. This only applies if the priorities are the same. + +<item>If both start times have passed, later start time beats earlier start +time -- This attempts to miss the least amount of time. + +<item>If neither start time has passed, earlier start time beats later +start time -- This helps assure that the earliest showing of an episode +has the advantage. + +<item>Lower input id beats higher input id -- The scheduler fills in +open time slots on the first available input for the video source. The +next input is used when there is another show already placed for the +card of the first input. + +<item>Older record rule beats newer record rule -- If two shows are still +equal after all of these other checks, the show whose record rule was added +first is preferred over a more recent addition. + +<item>Postpone showings to resolve conflicts -- If Reschedule Higher +Priorities is set or if a conflict has the same priority as a show +that was scheduled at the same time, the scheduler will check to see +if a scheduled show can be moved to another input or later matching +showing without creating a new conflict so that the conflicting show +can be scheduled to record. + +</itemize> + +<sect2>Reschedule Higher Priorities + +<p>Setup->TV Settings->Recording Priorities->General has a checkbox for +"Reschedule Higher Priorities" which tells the scheduler to try to be a +little smarter in certain situations. If this is checked, the scheduler will +look for situations where a show cannot record because all inputs for the +channel are used for higher priority shows. It will check to see if any of +the other shows could be recorded at another time so that the conflicting +show can be recorded in its place. + +Generally, this is a good strategy but there are tradeoffs. If a higher +priority show is postponed, you will not get to watch it until it is +recorded in the later timeslot. There is also a risk that the TV listings +may change and the later showing may go away. In this rare case the higher +priority show may never record. On the other hand, if you do not use this +option you will miss recording some lower priority shows unnecessarily +unless you manually make similar changes. + +By using Reschedule Higher Priorities, the scheduler will do a better job of +recording as many of your shows as possible when left unattended. It will +also be easy to see that shows have been marked to record at a later time. +You can then decide for yourself when you would prefer to record the first +showing by clicking "Record anyway". + +<sect2>Controlling Your Schedule +<p>The Manage Recordings->Upcoming Recordings page is your control center +for the MythTV scheduler. Unlike other DVR systems, this one page gives you +all of the information and tools you need to see all of your alternatives +and make whatever adjustments you desire. + +The upper half of the screen has a scrollable box listing items that match +your record rules sorted by time. The lower half shows the details for the +highlighted item. There are two 'views' available. Press "1" to include all +of the items that match record rules even if they do not need to be +recorded. Press "2" to focus on just the things that will record and items +that may need your attention. The message in the upper right-hand corner +will remind you when there are conflicts that would prevent one or more +shows from being recorded. + +The items in the list are colored in the record color for things that +will record, white for things that may need attention, gray for those +that do not need to record and yellow when there is a time conflict. +Items at the top of the list may also be highlighted indicating that the +recording is in progress. + +Along with the channels, start times and titles, the right-hand column has +a status code. Numbers indicate which card number has been assigned to +record the show. Letters are used to indicate the reason that something +will not be recorded. Just below the box is a short status message for the +highlighted item that indicates the type of record rule that was matched, +the "total priority" for this showing and a one or two word explanation of +the status code. If you press SELECT, you will see more information about +the status. + +There are a few status codes that may require your attention. "C" indicates +that there are more overlapping shows to record than there are TV tuners to +record them. "L" indicates that the scheduler found that it may be better to +record a later showing of this episode. These states happen as a result of +your choices and should normally reflect your preferences. However, you may +notice situations where you would like to modify the scheduler's initial +choices. + +The first thing you can do is to highlight an item and press INFO to +see the recording options page. From this page you can change the +record rule type, the duplicate matching rules, or raise or lower the +priority to resolve whatever problem you noticed. + +Additionally, you can treat any individual showing as an exception that you +do want to record or don't want to record. To use these "override" features, +highlight the item and press SELECT. You will see a message explaining the +current status and at least an "OK" button to exit without making changes. + +For items scheduled to record, there will be a button for "Don't record" +which will prevent recording this showing but will still allow the same +episode to record in the future. If there is episode description +information, you may also see a button for "Never record". This prevents +recording this showing and tells MythTV to remember that this is an episode +that you've seen or don't need to see if it is ever in the TV listings +again. + +For items that are not scheduled to record, the message will describe the +reason and in the case of "C" or "L" it will include a list of the shows +that are scheduled to record instead. For any item that could potentially be +recorded there will be buttons for "Edit Options" and "Add Override". "Edit +Options" will allow you to change the options for the existing record rule +such as raising the priority so that the show will record. These changes +would apply to this and all future showings that match this record rule. +"Add Override" will allow you to set options that apply to the specific +showing without affecting the recurring record rule. + +If you return to an override page after an override has already been set, +you will also see a "Clear Override" to undo your changes. This option makes +it very easy to try out some "what if" attempts when deciding on your best +strategy in a difficult situation. + +For a recording in progress, there will be a "Change Ending Time" button. +This will take you to the options page for a Single or Override or create +an Override if it is a recurring rule. Here you can go to the Recording +Options section to change the program end time offset. If you extend the +end time so that it overlaps upcoming recordings, the schedule will change +to accommodate the new end time. This may cause a conflict or later showing +even for a show with higher priority. Therefore, it is a good idea to +check your schedule after changing the end time of a recording in +progress. + +<sect1>Storage Options +<sect2>Recording Profile +<p>Each recording rule can be configured with a different recording +profile. For example, colorful cinematography can be configured with a +"High Quality" profile, while 'talking heads' interviews shows can be +configured with a "Low Quality" profile. These recording profiles need to +be configured before using them (see <ref id="Recording" name="Recording">, +above). + +<sect2>Recording Group <label id="Recording Group"> +<p>For organization of the "Watch Recordings" screen and the MythWeb +interface, recordings can be assigned into "recording groups". + +<sect2><ref id="storagegroups" name="Storage Groups"> +<p>This allows you to select any special "Storage Groups" you may have +created to determine where recordings from this rule should be stored +on your disks. The "Default" storage group is always available. + +<sect2>Playback Group <label id="Playback Group"> +<p>This selects a set of pre-configured playback parameters which can be +created and edited in Setup->TV Settings->Playback Groups. When the +recording is played, the values from this playback group will be +used. This allows you to choose a default time stretch value, skip and +jump amounts appropriate for this type of television program. + +<sect2>Auto-Expire <label id="Auto-Expire"> +<p>MythTV will "autoexpire" old recordings to make room for new recordings +when disk space gets filled up. This option can be set to "Don't allow +auto expire" to prevent these recordings from being automatically deleted +when disk space fills up. + +<p>The default setting is for all scheduled recordings to be eligible +for auto-expiration; this can be changed in the Settings->TV +Settings->General page by manipulating the "Auto Expire Default" +checkbox. + +<p>The default auto-expire policy is "Oldest Show First"; the oldest +recordings are deleted first. The "Lowest Priority First" method +chooses to expire the lowest-priority recordings first. + +<sect2>Episode Limit +<p>An episode limit can also be configured to limit the maximum number +of episodes recorded of a single series, to restrict that series' disk +usage. If this is set, you can further decide what to do when this +limit is reached; either stop recording that series, or to delete the +oldest episodes in favor of the new ones. + +<sect1>Post Recording Processing +<sect2>Commercial Flagging +<p>Select whether or not to automatically flag commercials for these +recordings. Commercial Flagging parameters can be set in +Setup->TV Settings->General. + +<sect2>Transcoding +<p>Select whether or not to automatically transcode recordings to save +disk space. Before using this, you must first enable auto-transcode in +the recording profile and configure the transcoding parameters; see +<ref id="Recording" name="Recording">, above. + +<sect2>User Jobs +<p>User Jobs allow you to configure up to 4 custom commands to run on +recordings. They can be configured in mythtv-setup. The following +tokens have special meaning when used in the User Job commands: + +<itemize> +<item>%DIR% - the directory component of the recording's filename +<item>%FILE% - the filename component of the recording's filename +<item>%TITLE% - the title of the recording (e.g., name of the series) +<item>%SUBTITLE% - the subtitle of the recording (e.g., name of the +episode) +<item>%DESCRIPTION% - description text for the recording (from guide +data) +<item>%HOSTNAME% - the backend making the recording +<item>%CATEGORY% - the category of the recording (from guide data) +<item>%RECGROUP% - the <ref id="Recording Group" name="recording +group"> +<item>%CHANID% - the MythTV channel ID making the recording +<item>%STARTTIME% - the recording start time (YYYYMMDDhhmmss) +<item>%ENDTIME% - the recording end time (YYYYMMDDhhmmss) +<item>%STARTTIMEISO% - the recording start time in ISO 8601 format +(YYYY-MM-DDTHH:MM:SS) +<item>%ENDTIMEISO% - the recording end time in ISO 8601 format +<item>%PROGSTART% - the recording's start time (from guide data; +YYYYMMDDhhmmss) +<item>%PROGEND% - the recording's end time (from guide data) +<item>%PROGSTARTISO%, %PROGENDISO% - the recording's start and end +time in ISO 8601 format. +</itemize> + +<sect1>Advanced Recording Options +<sect2>Creating Power Search rules with Custom Record +<p> +MythTV's "Custom Record" feature gives you unlimited control for creating +specialized search recording rules to meet your needs. It allows you to +choose your criteria to search for matching shows based on any of the +information in the program listings, channel information, time functions and +more. This goes beyond the capabilities of any other DVR system and it is +unlikely that this level of scheduling customization will ever be available +in any commercial DVR system. + +<sect2>Getting Started +<p> +Go to Schedule Recordings->Custom Record. This page, helps you build a +database search one clause at a time. Each added clause further limits +which showings will be matched in the TV listings. You can test the +search at any time and when you are done, you can save your search as a +recording rule. + +To familiarize yourself with how you can create custom rules, create a +simple rule to record "Nova" only in primetime. + +The first item at the top of the page allows you to edit an existing rule +or create a new rule. Leave it on "<New rule>". Arrow down to the +third item which says "Match an exact title". Right and left arrows would +allow you to select any of several prefabricated pieces or full examples +but leave it on the default for now. Arrow down to "Add this example +clause" and press SELECT (Enter or Space on a keyboard). The large text +box should now show: +<tscreen><verb> + program.title = 'Nova' +</verb></tscreen> +As you have probably guessed, this says that we want to search for all +programs with the title "Nova" regardless of the time, day, channel, etc. + +If you do not receive a PBS station that carries "Nova" or would like to use +another title, edit the title by pressing the down arrow to highlight the +text box and right arrow over the the word "Nova". If you are using a +keyboard you can simply delete the four letters and type a different title +between the quotes. With a remote control, you can do 'cell phone' style +text entry with the number pad. The delete key is the "X" in the grouping +for "1", zero is grouped with "9" and "0" acts as the "Caps Lock" key. You +can press ENTER in the text box to popup a virtual keyboard. + +Note: the text box honors many familiar Emacs control keys. It is also +possible to cut and paste text into the text box so you can edit with a +favorite editor or insert a rule sent in email or from other sources. + +In any case, choose a title that is shown both in primetime and late night +or daytime. Next, click the "Test" button. You should see a list of the +upcoming episodes for "Nova" just as if you had clicked the Upcoming +button for "Nova" elsewhere in MythTV. + +Press ESC to go back to the Custom Record page. Move to the example +selector then press the right or left arrows until you find "Only in +primetime". Click "Add this example clause". You should now see: +<tscreen><verb> + program.title = 'Nova' + AND HOUR(program.starttime) >= 19 + AND HOUR(program.starttime) < 23 +</verb></tscreen> +Click "Test". You should now see a shorter list with only the showings that +begin between 7PM and 11PM. To create a rule for this, press ESC to go back +to the custom page and move to "Rule Name:" then type "Nova" or anything +else you would like. This is only a label and will not affect the search +results. Once a name has been entered, the "Record" button will light up. +Click this to enter the recording options page. If you named it "Nova" the +title will say "Nova (Power Search)". Set whatever options you would like +then click "Save these settings". You now have a special rule to record +"Nova" but only when it is shown in primetime. + +You can make further modifications to this rule by returning to the Custom +Record page then press the right or left arrow keys on "Edit Rule:" until +you find "Nova". You can experiment and test but the saved rule will not +be updated until you click "Record" then "Save these settings". + +To remove this, or any other rule, you can go to the "Recording Priorities" +page, arrow down to the title, press Enter and change the the recording type +to "Do not record this program" then "Save these settings". + +<sect2>How it Works +<p> +MythTV stores TV program information in a database and uses the Structured +Query Language (SQL) to access the data. Information about each TV program +is stored in the 'program' table and information about each TV station you +receive is stored in 'channel'. These two tables are used in the scheduler +queries and their columns are available to be used in your rules. The rules +you create are stored in 'record'. + +Normal rules in MythTV simply match the title in the rule with the titles +in the 'program' table. MythTV also has search rules for "Titles", +"Keywords" and "People". These store the key phrase in the description +column of the rule and includes them in specialized SQL replacements for +the normal title check. There is also a type called "Power Search" which +takes the raw SQL in the description as the replacement for title +matching. + +Custom Record is a tool to help you build valid SQL for Power Search rules. +You do not need to be a SQL expert to use Custom Record because the +examples are known to work correctly and are usually self-explanatory so you +can choose the pieces you need then modify them. Many powerful solutions to +unique problems are possible by combining the examples. With some creativity +and some knowledge of SQL, the possibilities are limitless. + +<sect2>Common Tricks and Tips +<p> +The example clauses marked "complete example" are actual rules that have +been used to address specific problems. You may find that some of these +are useful for you as-is or with slight modifications. These show off how +powerful custom rules can be but there are also several simple idioms that +you may find useful for many of the shows you would like to record. + +Wait for a known title -- If there is a movie that you anticipate will be +televised in the coming months but is not yet in the listings, you can +select "Match an exact title", edit the movie title, click "Record" then +choose "Record one showing of this title". The rule will wait weeks, months +or years until this title shows up in your listings then it will record one +showing. These rules have no impact on the scheduler throughout the day and +only take a tiny fraction of a second when the master backend starts or when +the listings are updated. + +Silence series out of season -- "Celebrity Poker Showdown", for example, +will have new episodes for a while then long periods where reruns are shown +dozens of times per week. By checking the previously shown flag you can +create a rule that will only match new episodes. Therefore, your schedule +won't be polluted with dozens of entries marked as "Repeat" or "Previously +Recorded". +<tscreen><verb> + program.title = "Celebrity Poker Showdown" + AND program.previouslyshown = 0 +</verb></tscreen> +This allows you to keep rules for your favorite shows that are dormant while +out of season but will spring back to life when new episodes appear. + +Choose showings on certain days -- Several cable stations will show their +highest rated shows a dozen on more times per week. However, the scheduler +only needs two or three choices to do a good job of making a flexible +choice. +<tscreen><verb> + program.title LIKE "Celebrity Fit Club%" + AND DAYNAME(program.starttime) = "Sunday" +</verb></tscreen> +This says to choose any showing of an episode that hasn't been recorded +when it appears on Sunday. This prevents all the other showings during the +week from being listed in the schedule. + +Notice the word "LIKE" and the "%" at the end. This does wildcard matching +so that this would match even if the title ended with "2". "III" or +":Revenge of the Snapple Lady". This can be useful where the title may +change from one season to the next like "Survivor: %", "Big Brother%" or +"The Amazing Race%". + +<sect2>Working with SQL +<p> +As you experiment, it is possible that you may misplace a quote or mistype a +word. If there is a mistake when you press "Test" or "Record" you will see +an error message returned from the database. This will usually give you a +good idea about what needs to be fixed. However, for more subtle MySQL +syntax errors, you can find more information in the documentation at <url +url="http://dev.mysql.com/doc/mysql/en/" +name="http://dev.mysql.com/doc/mysql/en/">. This contains a lot of +information that can be useful for Power Search rules such as the "Date and +Time Functions". There are many other good resources for SQL on the Web. + +While the example clauses demonstrate how to use many of the data columns, +you can get a more complete list of all the columns that are available by +using a MySQL client program: +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg +mysql> describe program; +mysql> describe channel; +</verb></tscreen> +This will show the names of all of the columns along with their type and +default value. Most are easy to understand but a few need some explanation +in order to use them effectively with Power Search. +<itemize> +<item>"program.category_type" holds one of these exact four strings: "movie", +"series", "sports" or "tvshow". + +<item>"program.airdate" is a string representing the year of release for +movies and may have no meaning for other types of shows. + +<item>"program.stars" is a floating point number from 0.0 to 1.0. On a +four star scale, 1.0 would be four stars, 0.75 would be three stars and so +on. + +<item>"program.originalairdate" if provided is the date when a show +was, or will be, first televised. This may be useful for finding +episodes before or after a certain date such as finding just the +original series of "Battlestar Galactica". + +<item>"program.previouslyshown" is a column created by MythTV to try to +determine if a showing is more than 14 days after its original air date or +if the show was marked as a repeat and did not have a date for the first +airing. If this is "0" it usually means that this is a brand new show or a +rebroadcast within the first two weeks. + +<item>"program.generic" is a column created by MythTV to try mark +showings for a series where the specific episode information is not +included. When these generic showings appear, it is impossible for the +system to determine if they are repeats of the same episode(s) or if +they are all different episodes. + +<item>"program.first" is a column created by MythTV to mark the first +showing in the current listings for each episode, movie or special. +Choosing to match only the "first" showing can be useful for sports +that are brodcast live then repeated. + +<item>"program.last" is a column created by MythTV to mark the last +showing in the current listings for each episode, movie or special. +If a showing is marked both "first" and "last" then it is the only +showing of that program in the current TV listings. + +<item>"program.programid" is the Tribune Media Service database record +identifier for each program description. In general, these start with a two +letter prefix, MV, EP, SP or SH that correspond to the +"program.category_type". For most, the last four digits are "0000" except +EP where the last four digits are the episode number in the series. Note +that these are generated by TMS and not the show's producers but they are +usually in the same order as the original air dates for the episodes. + +<item>"program.videoprop" also "audioprop" and "subtitletypes". +These columns contain bit flags for a variety of attributes that +may be associated with a program. These are filled with information +offered by the TV listings provider. However, your listings source +will not have information for all of the available flags. Therefore, +some of these may not be useful for your search rules. This information +is organized in "sets" and the MySQL function FIND_IN_SET() can be used +to test for any of these flags. For example: +<tscreen><verb> +FIND_IN_SET('SURROUND', program.audioprop) > 0 +</verb></tscreen> +would be true for the programs where the surround sound bit is present. +To see all of the available attribute names: +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg +mysql> SHOW COLUMNS FROM program LIKE '%prop'\G +mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G +</verb></tscreen> +</itemize> +Finally, if you are doing something very experimental and a column is not +giving you the results you had anticipated, you can always check the MythTV +source code to see exactly how a column is used. The open source for MythTV +is available from <url url="http://www.mythtv.org/" +name="http://www.mythtv.org/"> . + +<sect1>Scheduling with more than one Input +<p> + +MythTV is designed to allow recording television programs from one or more +service providers, or video source, on one or more video input from each +provider. Some inputs may not be allowed to record at the same time as +each other while others may record simultaneously. + +A television station may be broadcast on more than one channel from one +provider or may be available on channels from two or more providers. If a TV +station is available from more than one source, the video quality or type of +broadcast may differ. Therefore, MythTV allows you to control how you would +like the scheduler to select the best channel and input for a show which is +available on more than one input or more than one channel. + +<sect2>Mutually Exclusive Inputs +<p> +A single TV capture card may have video connections to more than +one of its inputs and each input may be from a different service. The card +may only be allowed to record from one of these inputs at one time because +there is only one encoder on the card that actually captures the content. + +<figure loc="here"> +<eps file="BlockDiagramofavideocapturedevice.eps" height="1cm"> +<img src="BlockDiagramofavideocapturedevice.png"> +<caption> +</caption> +</figure> + +These are mutually exclusive meaning that only one input or the other +may record at a given time but not both. + +Usually, inputs on different cards can record at the same time +but two or more inputs on the same card cannot. However, there are cases +where inputs on different cards should not be allowed to record at the +same time, for example, a firewire card and s-video analog card connected +to the same set top cable box. + +<tscreen><verb> +| +| coax +--------------+ firewire ------------------+ +| .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV +| | |HD/Cable STB |=--. +-----|||||||||||| +| | +--------------+ | s-video ------------------+ +| | `---------=| input 2 | Digital +|wall | coax | Card 2 | +|=---=^=------------------------------=| input 3 | Cable +| +-----|||||||||||| +</verb></tscreen> + +Input 1 and input 2 receive content from the same set top box and the +channels can not be tuned independently. Therefore only one of these two +inputs should be used at any given time. The solution is to create an "Input +Group" with <bf>mythtv-setup</bf> in "Input connections". Including these +two inputs in the same Input Group will tell the scheduler that these are +mutually exclusive and may not record at the same time. Inputs 2 and 3 are +automatically mutually exclusive because they are on the same card so there +is no need to create an Input Group for these inputs. + +Cards such as the Hauppauge PVR-500 are able to record as two cards +simultaneously because it has two MPEG-2 encoders and each encoder appears +as a separate device. DVB cards may be allowed to capture content from more +than one channel at a time if the channels are in the same MUX. + +<sect2>Stations, Channels and Video Sources +<p> +Although we may be accustomed to thinking of a broadcast station and its +channel number as being synonymous, stations and channels are very different +things. A "station" is in a building with wires and employees. A "channel" +is a carrier frequency or digital ID that carries a broadcast stream. The +same TV station may be broadcast over different frequencies in different +cities or by different providers in the same city. The same frequency will +carry different stations in different cities. In the digital realm of DVB +and ATSC (HDTV), it is even possible for a single frequency to carry +multiple program streams but each of these streams of content are actually +different channels that the receiving devices can 'tune' to independently. + +<itemize> +<item>Station: building +<item>Channel: frequency +</itemize> + +In MythTV, a "video source" is a set of channels from a provider, or over +the air, that can be received by an input. The set defines the channels and +the broadcasters primarily associated with each of those channels. If you +have more than one device or cable from the same provider connected to more +than one card and input, you only need to create one video source in +mythtv-setup then associate that one source with each of these connected +inputs. This will let your MythTV system know that the same channels and +their TV listings are available to be recorded from any of these inputs. + +For example. A MythTV system may have two capture cards. Both have a cable +connected to the coaxial connectors. These cables carry the local cable TV +service. In mythtv-setup, the user should create one "Video source" called +"Cable", for example. Under "Input connections", "Cable" should be +associated with each of the two tuner inputs. The scheduler will then know +that any program on one of the channels from the "Cable" source could be +recorded by either card from the card's tuner input. + +You need to create a different video source for each provider or service +that has a different set of channels. Each input with a connection to that +service should be associated with the video source for that service so the +system will know which set of channels are available for each of your active +inputs. + +Let's say that this user also has one digital cable set top box. The digital +cable service carries channels that are not available over basic cable. The +user would create another source called "Digital". This set top box is +connected to the second card by S-Video so under "Input connections", +"Digital" is associated with the S-Video input of card 2. The system would +then know that programs on channels from the Digital source can only be +recorded from this input. Further, the scheduler understands that it can +only record one show at a time from card 2 so it can assign Cable or Digital +shows to the card but not both at the same time. + +Some TV stations may be broadcast over a channel from the Cable source and +also broadcast over a channel from the Digital source. Note that two +channels carrying the same primary station may not have the same TV listings +due to carrying the primary station part time, including local programming +exclusive to one of the channels, the channels may be in different +timezones, etc. Listings information must be associated with each channel +even if two or more channels report that they carry the same station. + +<sect2>Order of Inputs +<p> +By default the scheduler chooses the first (lowest numbered) input which has +a showing of the scheduled program as it fills the schedule. If a lower +priority show is on at the same time as a higher priority show that has been +assigned to input 1, then input 2 will be used next and so on. Therefore, +configure your best card and input first and next best card and input +second. There may be differences in the type or brand of capture card, +signal quality from the cable, system resources such as disk space, CPU, +etc. By configuring your best input first, more recordings, and your highest +priority recordings, will use that input. + +A common situation is that a newer and better card is added last. For +example, you may initially setup your system with two analog cable cards and +then add a HDTV card. If NBC is on a cable channel and "The Apprentice" is +shown in HDTV on an NBC HD channel, the scheduler would still prefer analog +inputs 1 and 2 over the new HD input 3. + +So, if you'd like the scheduler to prefer a new source, the simplest thing +is to run <bf>mythtv-setup</bf> and "Delete all capture cards" then enter +your cards and inputs in your preferred order. This will not remove your +sources and channels - you want to keep those and only renumber your cards +and inputs. In this example, once the changes have been made and the Master +Backend is restarted, the scheduler would then choose "The Apprentice" in HD +on the new input 1 and only use the analog inputs (now numbered 2 and 3) +when the HDTV input was occupied with another show. + +<sect2>Matching Callsigns +<p> +If a recording rule is a type that can record from any channel, "The +Apprentice" would match for any channel that shows episodes which may +include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or Channel +rules, "The Apprentice" would only match showings on the selected station as +identified by the "callsign". For example, KVBC is an NBC affiliate on +channel 3. Channel 733 is KVBCDT which is HDTV over cable from the same +station. If a Single record rule was set for "The Apprentice" on KVBC +channel 3, it could not record this showing from KVBCDT on 733. If 733 was +chosen when the rule was saved, channel 3 could not be used to record. + +However, the "Channel Editor" in mythtv-setup can be used to change the +Callsign for channel 733 to "KVBC". MythTV would then understand that both +of these channels are from the same broadcast station. Assuming the HDTV +input was input number "1", "The Apprentice" would record on 733. If, +however, this HDTV input already had a higher priority show assigned to it +in that time slot, "The Apprentice" would be assigned to KVBC channel 3 on +input 2. + +Having two channels with the same callsign may affect how program +information is shown in mythfrontend. If two sources have the same callsign +and channel number, the program guide and program lists will only show one +instance of the channel number and callsign. If the same callsign is on two +different channel numbers, both will be shown and if two sources have +different callsigns with the same channel number, both of those will be +shown. + +Continuing with the example above, the Electronic Program Guide would +include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was also +included in the Digital cable source, the EPG would still include just one +line for "3 KVBC" even though there are two different channels, Cable and +Digital, with this identification. Regardless of how these are displayed and +which "KVBC" channel you select to add a rule to record "The Apprentice", +the scheduler will pick the best channel, source and input to record "The +Apprentice" on "KVBC". + +<sect2>Using Priorities to Prefer an Input +<p> +The fundamental concept to keep in mind is that the MythTV scheduler will +choose the lowest numbered input available when showings have the same +priority. If there are factors that cause two showings of the same show to +have different priorities then the higher priority showing will be +considered before the showings with lower priority. + +<sect2>Input Priority +<p> +"Input Connections" in mythtv-setup includes a box to set "Input priority" +which defaults to "0". If a value is set, that amount will be added to the +"total priority" for showings on that input. This can be used to influence +using favored cards or not using less favored cards unless necessary. + +Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. "Who +Cares" is -2 and an episode is shown at 8:00pm then repeated at 11:00pm. The +scheduler would assign "The Apprentice" to card 1 and "Who Cares" to card 2 +at 8:00pm. If the input priority for the input on card 2 was changed to -1, +"Who Cares" would have a total priority of -2 for showings on card 1 and -3 +for showings on card 2. The scheduler would assign "The Apprentice" to card +1 at 8:00pm and "Who Cares" to card 1 at 11:00pm when the better card is +available. If there was another higher priority show at 11pm, the next best +choice for "Who Cares" would be card 2 at 8pm with the priority -3. + +Card 1 and 2 have input priority "0": + +<figure loc="here"> +<eps file="Card1 Pri 0 Card2 Pri 0.eps" height="1cm"> +<img src="Card1 Pri 0 Card2 Pri 0.png"> +<caption> +</caption> +</figure> + +<tscreen><verb> + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -2 2 Will Record +11:00 Who Cares -2 1 Earlier Showing +</verb></tscreen> + +Card 2 with input priority "-1": + +<figure loc="here"> +<eps file="Card1 Pri 0 Card2 Pri -1.eps" height="1cm"> +<img src="Card1 Pri 0 Card2 Pri -1.png"> +<caption> +</caption> +</figure> + +<tscreen><verb> + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Later Showing +11:00 Who Cares -2 1 Will Record +</verb></tscreen> + +Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.: + +<figure loc="here"> +<eps file="Card1 Pri 0 Card2 Pri -1-TDS.eps" height="1cm"> +<img src="Card1 Pri 0 Card2 Pri -1-TDS.png"> +<caption> +</caption> +</figure> + +<tscreen><verb> + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Will Record +11:00 The Daily Show +1 1 Will Record +11:00 Who Cares -3 2 Earlier Showing +</verb></tscreen> + +Note the two different effects, each of which may be what you desire +depending on circumstance. If input priorities are equal, shows will record +at the earliest time if any input is available. If input priorities differ, +shows may be postponed to a later time in order to record on the best input. + +<sect2>Channel Priority +<p> +Priority can be added for individual channels (remember, frequencies from a +video source, not stations). This can be used to tell the system that you +generally prefer the content of the station on a channel over the formats of +other stations. You may want to raise the priority for ESPN, SciFi, Comedy +Central or lower the priority for CSPAN, CourtTV, etc. If the same station +is on two different channels, you can use channel priority to have the same +effect for these channels as input priority would have for whole inputs. + +For example, say CNN is on analog channel 20 and there is an HD CNN on 750. +You may not want to tie up the HD input for news originating in standard +definition. Under TV Settings->Recording Priorities->Channel Priorities you +could set channel 750 to -1. The scheduler would then prefer to record CNN +shows on any analog channel 20 before considering using 750 only when there +are no analog inputs available. + +<sect2>Preferred Input +<p> +For an even finer grain of control, there is a per rule option to specify +which input should be preferred for showings that match the rule. By +default, this adds +2 to the priority for showings on the specified input. + +For illustration, let's say there will be a Space Shuttle launch on CNN that +will be broadcast in high definition. Adding a rule to record the launch +with priority "0" should default to channel 20 on input 2. Channel 750 would +have this at -1 due to the channel priority set in the previous example. If +on the recording options page for this rule, the "Scheduling Options" had +the input set to prefer the HD input on card 1, then the showing on channel +750 for this input would be increased in value by +2 for a total of +1 and +would be the best choice for this launch coverage. While this one rule +would prefer the HD input with channel 750, all other rules that match shows +on CNN would still prefer channel 20. + +Note that this will not work properly if the preferred input priority does +not out weigh differences in input and channel priorities. The value of the +priority boost when this option is chosen defaults to +2 but can be modified +in TV Settings->Recording Priorities->Set Recording Priorities. + +<sect2>HDTV Priority +<p> +In the preceeding fictious example, the Space Shuttle launch is broadcast in +high definition and a preferred input is selected to give preference to the +HD input. However, TV listings from zap2it.com through the DataDirect +service may allow this to work without having to use this per rule option. + +In Settings->Recording Priorities->Set Recording Priorities there is an +option for "HDTV Recording Priority". This value will be added automatically +if the listings for the show have the "hdtv" flag set. DataDirect will set +this flag for shows known to be broadcast in HDTV on HD channels. However, +the flag is not set for standard definition channels. This is another +example of the listings being different for the same station on a different +channel. If the HDTV priority is set to "+2", the shuttle launch would +automatically have a total priority of +1 so that channel 750 would be +preferred over channel 20 for this HDTV broadcast. + +Channel "750 CNN" at priority "-1" and HDTV broadcast priority at "+2": + +<figure loc="here"> +<eps file="Card1 HDTV Card2 Cable.eps" height="1cm"> +<img src="Card1 HDTV Card2 Cable.png"> +<caption> +</caption> +</figure> + +<sect2>Custom Priority <label id="Custom Priority"> +<p> +<figure loc="here"> +<eps file="add.eps" height="1cm"> +<img src="add.png"> +<caption> +New for MythTV 0.21</caption> +</figure> + +While Input, Channel, and HDTV Priority can be used for indicating a +preference for certain programs and inputs, there may be circumstances that +cannot be resolved easily with these standard features. MythTV version 0.21 +includes a feature for "power priority". The Custom Priority editor in +mythfrontend's "TV Settings" screen is similar to Custom Record, however, +Custom Priority allows you to create specialized power priority factors to +influence scheduling decisions. + +For example, the 'program.closecaptioned' flag can be used in a +similar way as the 'program.hdtv' flag. + +<tscreen><verb> +Priority Rule Name: Closed Captioned priority +Priority Value: 2 +program.closecaptioned > 0 +</verb></tscreen> + +This will raise the priority of shows marked with "CC" over those that are +not by applying the "Priority Value" whenever the SQL fragment evaluates to +true. If the expression evaluates to false for a showing, the "Priority +Value" is not applied. + +<tscreen><verb> +Priority Rule Name: Priority when shown once +Priority Value: 1 +program.first > 0 AND program.last > 0 +</verb></tscreen> + +The "first" and "last" flags for an episode will only be set for the +same showing when there is only one showing of that episode in the +current TV listings. This rule would raise the priority in these cases +so that these shows would have an advantage to record in their only +available time slot. + +<tscreen><verb> +Priority Rule Name: Input 1 signal quality +Priority Value: -1 +cardinput.cardinputid = 1 AND +channel.channum IN (3, 5, 39, 66) +</verb></tscreen> + +A common issue with two or more analog capture cards is that one of +the cards may have more interference on some channels than the same +channels on other cards. This example gives a disadvantage to the +channels in this list but only for the first input. Therefore, a show +on channel 39 would choose input 2 or 3 if possible but for channels +not in this list, input 1 is still the first choice. + +The Custom Priority editor includes many example fragments and complete +examples that can be used or you can create your own to suit your needs. + +<sect>MythPlugins. <label id="mythplugins_"> +<p>MythTV has a rich set of plugins available. Once you have downloaded +the tarball, untar it and run the <bf>configure</bf> script: + +<tscreen><verb> +$ tar -xjf mythplugins-0.21.tar.bz2 +$ cd mythplugins-0.21 +$ ./configure --help + +Usage: configure [options] +Options: [defaults in brackets after descriptions] +NB: all --enable-* options can be reversed with --disable-* + +Generic options: + --help print this message + --enable-all Enable all options + --enable-opengl enable OpenGL (Music and Gallery) [default=no] + +MythBrowser related options: + --enable-mythbrowser build the mythbrowser plugin [default=yes] + +MythDVD related options: + --enable-mythdvd build the mythdvd plugin [default=yes] + --enable-transcode enable DVD ripping and transcoding [default=no] + --enable-vcd enable VCD playing [default=no] + +MythGallery related options: + --enable-mythgallery build the mythgallery plugin [default=yes] + --enable-exif enable reading of EXIF headers [default=no] + +MythGame related options: + --enable-mythgame build the mythgame plugin [default=yes] + +MythMusic related options: + --enable-mythmusic build the mythmusic plugin [default=yes] + --enable-fftw enable fftw visualizers [default=no] + --enable-sdl use SDL for the synaesthesia output [default=no] + --enable-aac enable AAC/MP4 audio file decompression [default=no] + +MythNews related options: + --enable-mythnews build the mythnews plugin [default=yes] + +MythPhone related options: + --enable-mythphone build the mythphone plugin [default=yes] + --enable-festival enable festival TTS Engine [default=no] + +MythVideo related options: + --enable-mythvideo build the mythvideo plugin [default=yes] + +MythWeather related options: + --enable-mythweather build the mythweather plugin [default=yes] +</verb></tscreen> + +The sections detailing configuration of the plugins assume that you are +already in the <tt>~/mythplugins-0.21/</tt> directory. + +Note that a single <bf>configure</bf> script now does configuration for all +modules. By default, it will compile all modules. If you do not wish to +compile a module, either because it is of no use to you, or you do not have +the prerequisites, the simplest course of action is to go through the +various sections below, satisfying the prerequisites, and then compile all +modules at once. + +For example, you would only like to compile and install MythGallery and +MythMusic. For MythGallery, you would like to use the EXIF data in the .JPG +file to present additional information onscreen. For MythMusic, you would +like to enable support for the opengl and FFT visualizations. The command +line would look like: + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft +$ qmake mythplugins.pro +$ make +$ su - +# make install +# exit +$ +</verb></tscreen> + +For simplicity, the examples below will disable compilation of all other +modules other than the one being discussed. + +<sect>MythWeb. +<p>MythWeb allows you to use a web page to control various aspects of your +MythTV system. MythWeb is a separate application, but it's dependent on +MythTV being installed and operational. + +<sect1>Installation and prerequisites + +<p>Mythweb is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. The next step depends on whether your distribution has a web server +and if you have PHP support. + +<sect2>Mandriva +<p>Mandriva has <bf>apache</bf> and <bf>PHP</bf> pre-packaged, so +installation is quite simple. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Mandriva 9.1 users, perform the following: +</caption> +</figure> +<tscreen><verb> +# urpmi apache2 apache2-mod_php php-mysql +# chkconfig --level 345 httpd on +# /etc/rc.d/init.d/httpd restart +</verb></tscreen> + +<sect1>Completing the installation +<p> +<tscreen><verb> +$ cd ~/mythplugins-0.21/mythweb +$ su +# mkdir /var/www/html/mythweb +# cp -r . /var/www/html/mythweb +# exit +$ +</verb></tscreen> + +By default, MythWeb uses an Apache <tt>.htaccess</tt> file to restrict +access to the website and to configure some variables. + +To create the password file for Apache (if your system doesn't already have +one), you could do something like this: +<tscreen><verb> +# cd /var/www +# htpasswd -c htpasswd mythtv +New password: +Re-type new password: +Adding password for user mythtv +</verb></tscreen> + +See the man page for <bf>htpasswd</bf> for more examples. + +To access the web page, open a web browser and use <bf>http://[name or ip +address]/mythweb/</bf> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Make sure that you have a trailing slash on the URL, +otherwise you will get a <tt>404 Page not Found</tt> error. +</caption> +</figure> +<sect1>Resetting the key binding table +<p>MythWeb allows you to configure which keys are bound to which actions +within MythTV. If you'd like to reset this back to the default, execute the +following command: +<tscreen><verb> +$ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg +</verb></tscreen> +<sect1>Resetting the theme. +<p>If you find yourself wedged into a theme that isn't working, open your +web browser and go to site: +<tt>http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes</tt> +<sect>MythGallery. +<p>MythGallery is a photo and slideshow application. MythGallery is a +separate application, but it's dependent on MythTV being installed and +operational. +<sect1>Installation and prerequisites + +<p>MythGallery is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. + +There are a number of transitions available, some requiring OpenGL +support. You will also need to install a TIFF library. Under Mandriva, you +would perform the following command: +<tscreen><verb> +# urpmi libtiff3-devel +</verb></tscreen> +Once you have satisfied the prerequisites for your distribution, install the application: +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-opengl --enable-mythgallery +$ qmake mythplugins.pro +$ make +# su +# make install +# exit +$ +</verb></tscreen> +The configuration for MythGallery is accessed through the main Setup option +in mythfrontend. Make sure you set your pictures directory to wherever +you're storing your photos. + +The controls for MythGallery can be found in the README that comes with the +application. +<sect1>Using MythGallery +<p>When you first start MythGallery, you will see a thumbnail view of any +folders and pictures in the Gallery Directory you specified in setup. If +this is the first time you have accessed this directory, the thumbnails will +be generated on the fly. If the Gallery Dir is writable, these thumbnails +will be cached thus speeding up future access. On the left is a greyed-out +menu of options. + +Use the arrow keys to select a folder or picture to open/view with the +Select key, or use the Menu key to toggle access the menu on the left. The +menu options are as follows: +<itemize> +<item> Slideshow - Will cycle through all the pictures in the current folder. +The currently selected item must be a picture (not a folder) for this to +work. It does not currently traverse subfolders. +<item> Rotate CW - Rotate the current image 90 degrees in the clockwise +direction. This change persists if the current directory is writable. +<item> Rotate CCW - As above except the direction of rotation is counter(anti) +clockwise. +<item> Import - Import pictures into your Gallery Dir. This option is +described in the next section. +<item> Settings - Access the MythGallery settings screen. +</itemize> +<sect1>Importing Pictures +<p>The import path in the setup dialog is a colon separated list of +directories and/or executable files. When the import key is pressed, a new +directory (the destination directory) under the current directory will be +created and the import path will be searched. If the item in the import +path is a directory (the source directory), the contents of that directory +will be copied to the destination directory. If you would like the source +directory to be that of a removable device, it might be a good idea to use +autofs. See the automount howto at <url url="www.linuxdoc.org" +name="www.linuxdoc.org"> for info on how to get it working. + +If the item in the import path is an executable file, MythGallery will +attempt to execute it with the destination directory as its sole argument. +Be careful when using executable scripts that the script runs unattended +(doesn't need user intervention) and returns properly, otherwise it could +create the appearance of MythGallery hanging (e.g. running +<bf>smbclient</bf> and prompting for password). Also be sure that scripts +have executable permissions set. + +Here is an example script that a user may want to run +on import: +<tscreen><verb> +#!/bin/csh + +if ($#argv == 0) then + echo "Usage: $0 dest_dir" + exit +endif + +cd $argv[1] + +# get stuff over the network +wget http://www.somesite.dom/dir/file1.jpg +wget http://www.somesite.dom/dir/file2.jpg +wget http://www.somesite.dom/dir/file3.jpg + +# stuff that requires manual module loading and/or fs mounting +modprobe camera_module +mount /dev/camera /mnt/camera +cp /mnt/camera/* $argv[1] +umount /mnt/camera +rmmod camera_module + +# perform some processing +foreach pname (`ls *.jpg`) + jpegtran -flip vertical $pname > $pname.new + mv $pname.new $pname +end +</verb></tscreen> + +<sect>MythGame. +<!-- Install instructions by Hary Wilke (harywilke at yahoo.com --> +<p>MythGame can used as a frontend to start any emulator that your host OS +runs. This is an example of how to set up xmame on Linux. +<url url="http://www.mameworld.net/" name="http://www.mameworld.net/"> is +an excellent resource for all things mame. + +Installation overview: +<enum> +<item>Setup directory structure +<item>Download and install xmame +<item>Download and place extra files (artwork/catver.ini/etc..) +<item>Download and install MythGame plugin +<item>Setup xmame in MythGame +<item>Hints +</enum> +<sect1>Setup Directory Structure +<p>To keep things organized, create the following directories for <bf>xmame</bf> to use +in <tt>/usr/local/share/xmame</tt>: hiscore, roms, and snaps. + +<tscreen><verb> +$ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps} +</verb></tscreen> + +<sect1>Download and Install xmame +<p><bf>NOTE</bf>: There may be pre-packaged versions of <bf>xmame</bf> +available for your distribution. Check <url +url="http://x.mame.net/download.html" +name="http://x.mame.net/download.html"> for the latest version. + +Download the source to <bf>xmame</bf> from <url +url="http://x.mame.net/download/xmame-0.103.tar.bz2" +name="http://x.mame.net/download/xmame-0.103.tar.bz2"> + +<tscreen><verb> +$ wget http://x.mame.net/download/xmame-0.103.tar.bz2 +$ tar -xjf xmame-0.103.tar.bz2 +$ cd xmame-0.103 +</verb></tscreen> + +Edit the Makefile with your favorite editor. Adjust the options as required for your system. +<tscreen><verb> +$ joe Makefile +</verb></tscreen> + +Then make and install xmame +<tscreen><verb> +$ make +$ su +(enter password) +# make install +# exit +</verb></tscreen> + +After <bf>mame</bf> has been installed, we need to create some defaults. +<tscreen><verb> +$ mkdir ~/.xmame +$ cp docs/xmamerc.dist ~/.xmame/xmamerc +</verb></tscreen> + +Because some ROMS work better with different display toolkits, or possibly +even older versions of xmame, it's convenient to keep all of your +<bf>xmame</bf> binaries and to rename them to include the version number. +MythGame allows you to match individual roms to preferred binaries. + +<tscreen><verb> +$ su +(enter password) +# mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11 +# exit +</verb></tscreen> + +<bf>NOTE</bf>: Depending on how you compiled <bf>xmame</bf>, you may have +<bf>xmame.X11</bf>, <bf>xmame.SDL</bf> or <bf>xmame.xgl</bf> based on what +display toolkit you used. Also, you may need to remove and recreate +<tt>xmamerc</tt> after upgrading since some of the default options may have +changed. + +Edit <tt>~/.xmame/xmamerc</tt> to include your paths. +<tscreen><verb> +### Fileio Related ### +rompath /usr/local/share/xmame/roms +snapshot_directory /usr/local/share/xmame/snaps +cheat_file /usr/local/share/xmame/cheat.dat +hiscore_file /usr/local/share/xmame/hiscore.dat +hiscore_directory /usr/local/share/xmame/hiscore +history_file /usr/local/share/xmame/history.dat +mameinfo_file /usr/local/share/xmame/mameinfo.dat +</verb></tscreen> + +Confirm that <bf>xmame</bf> works before running it inside MythTV. Place +your ROM in the <tt>/usr/local/share/xmame/roms</tt> directory you created +earlier. + +<bf>NOTE</bf>: There are three public domain ROM sets available at +<url url="http://www.mame.net/downmisc.html" name="http://www.mame.net/downmisc.html"> + +Launch <bf>xmame</bf> with your game of choice. In this example, we are using Gauntlet. +<tscreen><verb> +$ xmame gauntlet +</verb></tscreen> + +Some basic <bf>mame</bf> keyboard commands: +<tscreen><verb> +5 = Insert coin +1 = Player 1 start +arrow keys = movement +left control = button 1 +left alt = button 2 +SPACE = button 3 +ESC = exit +TAB - menu +~ to adjust Volume + < and > +</verb></tscreen> + +<sect1>Download extra files +<p>The following files allow you to add extra functionality. Place them +into <tt>/usr/local/share/xmame</tt> + +- <tt>catver.ini</tt> is a catalog of categories and versions of popular mame ROMs. +<p>Useful for keeping large libraries of ROMs organized. + +It may be downloaded from <url url="http://www.catver.com" +name="http://www.catver.com"> or <url url="http://www.mameworld.net/catlist" +name="http://www.mameworld.net/catlist"> + +- Screenshots aka "snaps" +<p>These may be downloaded from <url +url="http://www.classicgaming.com/mame32qa/" +name="http://www.classicgaming.com/mame32qa/"> + +Screenshots are displayed when you are browsing your ROMS in <bf>mythgame</bf>. +Unzip and place them in <tt>/usr/local/share/xmame/snaps</tt> + +- <tt>history.dat</tt> +<p>Download from <url url="http://www.arcade-history.com/" +name="http://www.arcade-history.com/"> +This file fills in a bit of background about each ROM. + +- <tt>hiscore.dat</tt> +<p>Download from <url url="http://www.mameworld.net/highscore/" +name="http://www.mameworld.net/highscore/"> + +- Cheats +<p>Download from <url url="http://cheat.retrogames.com/" +name="http://cheat.retrogames.com/"> + +<sect1>Download and Install MythGame. +<p><bf>MythGame</bf> is part of the mythplugins package. See the instructions +in the <ref id="DownloadAndCompile" name="Downloading and Compiling"> +section to obtain mythplugins. + +Switch to the mythplugins directory: +<tscreen><verb> +$ cd ~/mythplugins-0.21 +</verb></tscreen> + +Compile and install mythgame: +<tscreen><verb> +$ ./configure --disable-all --enable-mythgame +$ qmake mythplugins.pro +$ make +$ su +(enter password) +# make install +# exit +</verb></tscreen> + +<sect1>Setup xmame in MythGame +<p>Start <bf>mythfrontend</bf> and navigate to Utilities/Setup > Setup > Media +Settings > Game Settings > Game Players. Select <tt>(New Game Player)</tt>. + +To set up a new player for xmame enter the following: + +<tscreen><verb> +Player Name: xmame-0.103.x11 (Name by which you want your emulator or game called) +Type: xmame (This is used for display purposes only and does not affect the function of your system) +Command: xmame-0.103.x11 -vidmod 1 -fullscreen (Path and name of binary + any optional parameters) +Rom Path: /usr/local/share/xmame/roms (This tells MythGame what directories to scan for roms to be used with this emulator) +ScreenShots: /usr/local/share/xmame/snaps (This tells MythGame what directories to scan for snapshots to be used with these roms) +Working Directory: (Directory to change to before launching game or emulator. Blank in our case ignores this setting) +File Extensions: (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path) +[] Allow games to span multiple roms/disks (will treat game.1.rom game.2.rom game.3.rom as one game) +</verb></tscreen> + +<sect1>Hints: +<p> +<itemize> +<item>Rom name before options: %s can be used as a standin for rom names on the command line. +<item>Multiple disk/rom games: %d1 %d2 etc can be used as standins for multiple disc games on the command line. +<item>Associating a rom with an emulator: Browse to the desired rom and press 'M' to enter the settings page for that rom. +<item>Assign a Game Favorite Status: Browse to the desired game and press "/". +</itemize> + +<sect>MythMusic. +<p>MythMusic has a number of prerequisites that must be satisfied before it +is operational. Depending on your distribution, some of these prerequisites can +be satisfied through the various package managers. If your distribution doesn't +offer pre-compiled versions of the software below, then follow the generic +instructions for manually compiling and installing the software. + +The prerequisites for MythMusic are: +<itemize> +<item>MAD +<item>taglib +<item>libogg and libvorbis +<item>FLAC +<item>libcdaudio +<item>CDParanoia +</itemize> + +<sect1>Manual installation of prerequisites +<p>These instructions are for distributions which don't have pre-compiled +versions of the software necessary to run MythTV. + +Download MAD from <url url="http://www.underbit.com/products/mad" +name="http://www.underbit.com/products/mad"> and install: + +<tscreen><verb> +$ tar -xzf mad-0.15.1b.tar.gz +$ cd mad-0.15.1b +$ ./configure +$ make +$ su +# make install +# exit +</verb></tscreen> + +Download TagLib from <url url="http://developer.kde.org/~wheeler/taglib.html" +name="http://developer.kde.org/~wheeler/taglib.html"> and install: + +<tscreen><verb> +$ tar -xzf taglib-1.4.tar.gz +$ cd taglib-1.4 +$ ./configure +$ make +$ su +# make install +# exit +</verb></tscreen> + +Download libogg and libvorbis from <url url="http://www.xiph.org/downloads" +name="http://www.xiph.org/downloads"> and install in a similar manner +to the above packages. + +Download FLAC from <url url="http://flac.sourceforge.net" +name="http://flac.sourceforge.net"> and install: +<tscreen><verb> +$ tar -xzf flac-1.1.2.tar.gz +$ cd flac-1.1.2 +$ ./configure +$ make +$ su +# make install +# exit +$ +</verb></tscreen> + +Download libcdaudio from <url name="http://libcdaudio.sourceforge.net" +url="http://sourceforge.net/project/showfiles.php?group_id=27134"> and +install: +<tscreen><verb> +$ tar -xzf libcdaudio-0.99.12p2.tar.gz +$ cd libcdaudio-0.99.12p2 +$ ./configure +$ make +$ su +# make install +# exit +$ +</verb></tscreen> + +Download cdparanoia from <url name="http://www.xiph.org/paranoia/down.html" +url="http://www.xiph.org/paranoia/download/cdparanoia-III-alpha9.8.src.tgz">. +<tscreen><verb> +$ tar -xzf cdparanoia-III-alpha9.8.src.tgz +$ cd cdparanoia-III-alpha9.8 +$ ./configure +$ make +$ su +# make install +# cd /usr/lib +# ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so +# ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so +# exit +$ +</verb></tscreen> + +<sect1>Mandriva +<p>Mandriva has a number of the prerequisites available on the +installation CD. Some of the software you're going to need will have to be +obtained from the "contrib" or "cooker" development repositories. +Applications downloaded from "cooker" come from the development branch, so +there may be issues with some software. It isn't recommended that you mix +cooker and release-level software. + +<p><bf>urpmi</bf> is the simplest tool for installation of packages from the +command line. The difficult part is the configuration, but this has been +made easier at the following website: <url +url="http://addmedia.linuxfornewbies.org/" +name="http://addmedia.linuxfornewbies.org/"> The website will allow +you to choose a mirror site and then present the command-line configuration +text for that mirror. You will most likely need to add a "Contrib" mirror +to your setup. Once you have done that, you can proceed. If <bf>urpmi</bf> +prompts you about other modules that need to be installed to satisfy +dependencies, say "Yes". + +<tscreen><verb> +# urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia +# urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel +# urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel +</verb></tscreen> + +<sect2>Additional options with MythMusic +<p>Additional visualizations have been added to MythMusic. If you wish to +use these, there are some prerequisites you must install prior to compiling. + +<itemize> +<item>fftw +<item>OpenGL +<item>SDL +</itemize> + +<tt>fftw</tt> may be obtained from <url url="http://www.fftw.org/" +name="http://www.fftw.org/">. In Mandriva it may be installed by +typing: +<tscreen><verb> +# urpmi libfftw2 libfftw2-devel +</verb></tscreen> + +<tt>OpenGL</tt> should be installed on practically all distributions. +However, you will need the devel module. In Mandriva it may be +installed by typing: +<tscreen><verb> +# urpmi libMesaGLU1-devel +</verb></tscreen> + +<tt>SDL</tt> may be obtained from <url url="http://www.libsdl.org" +name="http://www.libsdl.org">. In Mandriva it may be installed by +typing: +<tscreen><verb> +# urpmi libSDL1.2 libSDL1.2-devel +</verb></tscreen> + +<sect1>Red Hat Linux 9 +<p>Red Hat provides packages for several of the prerequisites, making +installation very simple. Of the prerequisites, Red Hat provides +packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably +already have installed). To install these all at once, simply type (all on +the same line): +<tscreen><verb> +$ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL +</verb></tscreen> + +If you get the following message: "None of the packages you requested +were found, or they are already updated" it probably means you already +have all of those packages installed. + +You must install the remaining packages, (MAD, FLAC, libcdaudio and +optionally fftw) manually following the installation directions above. When +installing fftw do not use the rpm package offered on the website because it +will cause an error, so use the source package instead. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: you can use the instructions given at the <ref id="atrpms" +name="automated installation section"> to install all of MythMusic in one +step. +</caption> +</figure> +<sect1>Compiling MythMusic +<p>Once all the prerequisites have been installed, you can proceed with +compiling MythMusic. + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac +$ qmake mythplugins.pro +$ make +$ su +# make install +# exit +</verb></tscreen> + +<sect1>Configuring MythMusic +<p>Configuration of MythMusic occurs in two places. The main mythfrontend +Setup is for global MythMusic configuration. Go to the +Setup/MythMusic/General Setup screen and adjust it for your particular +configuration. + +The second configuration screen is within the MythMusic program and will +allow you rescan your music library, etc. + +Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat: + +If Ignore_ID3 is set to TRUE, MythMusic will try to determine the +Genre, Artist, Album, Track Number, and Title from the filename of the +mp3 file. The NonID3FileNameFormat variable should be set to the +directory/file format where the mp3 files are stored. For instance, I +store mine in the above shown Genre/Artist/Album/Track format. MythMusic +will then use this information to fill in the proper fields when it +populates the musicmetadata table rather than searching for an ID3 tag in +the mp3 file. + +The files can be laid out in any format, such as: + +Genre/Artist/Album/Title +Artist/Genre/Album/Title +Artist/Album/Title (with Genre left as Unknown) + +The track number is optional but can be specified with the title by using +the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, +then the filename can have a space, hyphen, or underscore separating the +track number from the track title. Keywords are case insensitive, so if +you specify GENRE it's the same as Genre in the format field. + +The Ignore_ID3 option does not disable the code that determines the track +length, just the portion that tries to read ID3 info. + +<sect1>Using MythMusic +<p>MythMusic is fairly simple to use. It is recommended that you insert the +CD before selecting "Import CD". You should also ensure that your system +doesn't try to automount the CD and begin playing it automatically. + +<!-- +Next stuff is from a message by jasonmiller [jasonmiller@micron.com] +with additional comments by Thor +--> +Here's some information on playlist management: + +Q: How do I create a new playlist? +A: Using the MythMusic "Select Music" menu option, setup the playlist as you +normally would by adding songs or other playlists as needed. When you are +ready to save the new playlist, highlight "Active Play Queue" at the bottom +of the selection tree and hit the "i" key. This will pop up a menu allowing +you to name and save the new playlist. You can also hit Enter to bring up +the popup on the Active Play Queue. This does not work on the playlists +above, as Enter is obviously bound to checking/unchecking the boxes. Any +number (i.e. keypad on remote) will also bring up the menu in both cases. + +Q: How do I enter the playlist name in the text field without a keyboard? +A: Use the keypad number keys (bound to your remote) to select letters +quasi-cell phone style. Keys 2-9 work pretty much like any cell phone text +entry. 1 cycles through a few special characters, delete, and space. 0 is +like a CAPS LOCK. Hard to describe, fairly easy to use. You will soon be +able to specify the cycle timing in a Setup screen. You can type fairly +quickly through a combination of jumping around the number keys AND hitting +a non-number key (right arrow is particularly good for this) to force the +current character. + +Q: How do I edit a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Move to Active Play Queue" in the popup. You can now modify the +"Active Play Queue" like normal, adding songs and playlists by selecting +them from the song tree. When you are done, highlight the "Active Play +Queue" in the selection tree and hit the "i" key then select "Save Back to +Playlist Tree". And whatever you were editing as your Active Queue before +you moved an existing playlist "on top" of Active reappears. Think of Active +has having a push on, pop off capability, but with a depth of only 1. + +Q: How do I delete an item from a playlist? +A: Highlight the item in the selection tree and hit the "d" key. + +Q: How do I rearrange the songs in my playlist? +A: Highlight a song and hit the "space" bar, the song will now have pair of +red arrows in front of it. Use the up and down arrow keys to move it around +in the playlist. When you have it where you want it, hit the "space" bar +again. + +Q: How do I delete a playlist? +A: Highlight the playlist in the selection tree and hit the "i" key then +select "Delete this Playlist" from the popup. + +<sect1>Troubleshooting MythMusic +<p>You may run into errors when running MythMusic. +<sect2>When I run MythMusic and try and look up a CD, I get an error message +<p>The full text of the message will say: + +databasebox.o: Couldn't find your CD. It may not be in the freedb database. +More likely, however, is that you need to delete ~/.cddb and ~/.cdserverrc +and restart mythmusic. Have a nice day. + +If you get this message, you should go to the home directory of whatever +user MythMusic is running as and type: +<tscreen><verb> +rm .cdserverrc +rm -rf .cddb/ +</verb></tscreen> + +These files aren't automatically deleted because of a conscious design +decision by the author that programs that automatically delete things are +bad. + +The files are used to locally cache CD lookups. If you are re-inserting +CDs, your machine will not actually have to go out to the Internet to +determine what is on them. However, the URL used to access the freedb +database has recently changed, so the stale information in the files from +previous runs of MythMusic would cause the error above. Once the files have +been deleted the stale information will be gone and your local database +will be rebuilt as you use CDs. + +<sect>MythWeather. +<p> +MythWeather is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythweather +$ qmake mythplugins.pro +$ make +$ su +# make install +# exit +</verb></tscreen> + +MythWeather uses MSNBC.com as its source for weather data and weather.com +for its radar image. + +These are the keyboard commands for MythWeather: +<tscreen><verb> +Left Key Goes back one page, and extends the time spent + on the page you are on. +Right Key Goes forward one page, see above. +Space Pause, wait on the current page until space is hit + again. +Numeric Keys You can check other weather by keying in other ZIP codes. +Enter Key Switch between Celsius and Fahrenheit. Can also + be used a way to force a data update. +"m" Key Resets the location to the database default, then updates the data. +"i" Enter / Save settings +ESC Exit the settings screen without saving / Exit the program +</verb></tscreen> + +MythWeather also has an "Aggressiveness" setting. This affects how long +MythWeather waits for data from the msnbc.com website before timing out. If +you are on a slow connection, or have a slow DNS, or MythWeather just +doesn't seem to be working and you've already tried everything else, then +try increasing the aggressiveness level parameter. This parameter is +inverse; a higher number actually means that MythWeather will be less +aggressive, and will therefore wait longer before timing out. + +MythWeather will print debugging information on the terminal. If you wish +to see additional debugging information while MythWeather is running, run +mythweather from the command line with as <tt>mythweather --debug</tt> + +You may also force mythweather to re-run the configuration by starting it on +the command line as <tt>mythweather --configure</tt>. These two options are +mutually exclusive. + +<sect>MythVideo. +<p>MythVideo is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. + +MythVideo will allow you to use an external program to watch media files +that are not directly supported by MythTV. + +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythvideo +$ qmake mythplugins.pro +$ make +$ su +# make install +# exit +</verb></tscreen> + +See MythVideo's <tt>README</tt> file for additional information. + +<sect>MythDVD. +<p>MythDVD is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. MythDVD is an application which rips DVDs and makes them available for +use with MythVideo. You may also transcode the DVD content from MPEG-2 to +other formats which should greatly reduce the amount of space the DVD +material takes up on your hard drive. + +MythDVD has a number of prerequisites to enable transcoding functionality. +If you only wish to play DVDs rather than convert them to something like +MPEG-4 or xvid you may skip the prerequisite installation step. + +<sect1>Manual Compilation of Prerequisites +<p> +<sect1>Pre-compiled binaries +<p>Mandriva users may install the prerequisites this way: +<tscreen><verb> +# urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel +# urpmi mplayer ogle xine +</verb></tscreen> +Assuming that you've added a PLF mirror, you may also load the rest of the +prerequisites using the following command: +<tscreen><verb> +# urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss +</verb></tscreen> + +In the example below, we have enabled support for transcoding and for VCD +playing. You may remove these options if you don't need them. +<tscreen><verb> +$ cd ~/mythplugins-0.20 +$ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd +$ qmake mythplugins.pro +$ make +$ su +# make install +</verb></tscreen> +<sect1>Running the Myth Transcoding Daemon +<p>Transcoding ("ripping") a DVD requires you to run the Myth Transcoding +Daemon (mtd). To ensure that mtd is configured correctly, you should first +test it at the command line. +<tscreen><verb> +$ mtd -n +</verb></tscreen> +The last line of text should show something like: +<tscreen><verb> +mtd is listening on port 2342 +</verb></tscreen> +This indicates that mtd is ready for use. Once you've successfully +tested mtd in the foreground, type <bf>CTRL-C</bf> to stop mtd. You may +then start it as a background (daemon) process. +<tscreen><verb> +$ mtd -d +</verb></tscreen> + +Running mtd as a daemon will allow you to automatically start it during the +boot process. For example, you may add <tt>mtd -d</tt> to your +<tt>rc.local</tt> file, or you can adjust the script/steps outlined in the +section called <ref id="mythbackend_autostart" name="Automatically starting +mythbackend at system boot time"> to start mtd instead of mythbackend. + +<sect>MythNews. +<p>MythNews is a part of the <bf>mythplugins</bf> package. See <ref +id="mythplugins_" name="MythPlugins"> for instructions on downloading the +tarball. MythNews is a RSS reader. +<tscreen><verb> +$ cd ~/mythplugins-0.21 +$ ./configure --disable-all --enable-mythnews +$ qmake mythplugins.pro +$ make +$ su +# make install +</verb></tscreen> + +<sect>Troubleshooting. +<sect1>Compiling +<sect2>Compile errors +<p>Some compile errors are worse than others. If you get an error that +doesn't abort the compilation, and says something like: +<tscreen><verb> +cc1plus: warning: changing search order for system directory +"/usr/local/include" +cc1plus: warning: as it has already been specified as a non-system +directory +</verb></tscreen> +then it shouldn't be a problem. + +If you get an error like <tt>/usr/bin/ld: cannot find -lXext</tt>, the +compiler is telling you that you don't have XFree86-devel installed, or that +your distribution hasn't set it up correctly. This needs to be fixed before +MythTV will compile. + +<sect2>make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop. +<label id="mkspecs_error"> +<p>This error happens when there's a missing link in the +<tt>/usr/lib/qt3/mkspecs</tt> directory. There are two ways to fix this +error: + +1. Create the link manually: +<tscreen><verb> +$ su +# cd /usr/lib/qt3/mkspecs +# ln -sf linux-g++ default +</verb></tscreen> +and then restart the compile, + +or + +2. Run <bf>qmake mythtv.pro</bf> in the mythtv directory. Rerunning +<bf>qmake</bf> will create a new Makefile for you, however this still +doesn't fix the root cause of the issue, which is that your distribution +didn't create the symlink for you when the qt3 package was installed. The +first choice is the better solution. + +<sect2>make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop. +<p>You didn't set your <tt>QTDIR</tt>. Re-read the section on <ref +id="Setting_up_paths" name="Setting up paths">. + +<sect2>Internal Segmentation Fault. +<p>This is most likely to be caused by an overheating processor rather than +an actual programming fault within gcc. + +<sect1>Debugging <label id="debugging"> +<sect2>MythTV segfaults +<sect2>MythTV isn't doing anything +<sect2>Debugging with GDB +<p>Without details, the developers will not be able to determine if you have +discovered a genuine code-bug, or if the problem is with your system. In +order to determine what's going on, you must recompile MythTV with debugging +support and run MythTV within <bf>gdb</bf>, the GNU debugger. +Note that, on OS X, some data is provided without going through these steps. +See ~/Library/Logs/CrashReporter/MythFrontend.crash.log + +Re-run the <bf>configure</bf> script and add <tt>--compile-type=debug</tt> +to any previous configuration options you may have used. Check the +<tt>config.log</tt> file if you have forgotten. + +Now, you need to clear out the old versions of the software to ensure that +you're running with the debugging code, then compile and install. +<tscreen><verb> +$ make distclean +$ ./configure --compile-type=debug +$ make +$ su +# make install +# exit +</verb></tscreen> + +At this point, you now have debug-enabled software ready. To make sure that +you don't forget to type a command required for debugging, it's best to +setup a <tt>gdbcommands</tt> file. This will be read by <bf>gdb</bf> when it's +started. +Put the following into <tt>gdbcommands</tt> in your home directory: + +<tscreen><verb> +handle SIGPIPE nostop noprint +handle SIG33 nostop noprint +set logging on +set pagination off +set args -l myth.log -v record,channel,siparser +run +thread apply all bt full +set logging off +</verb></tscreen> + +Let's assume that the problem you're having is in <bf>mythbackend</bf>. + +<tscreen><verb> +$ gdb mythbackend -x gdbcommands +GNU gdb 6.3-debian +Copyright 2004 Free Software Foundation, Inc. +GDB is free software, covered by the GNU General Public License, and you are +welcome to change it and/or distribute copies of it under certain conditions. +Type "show copying" to see the conditions. +There is absolutely no warranty for GDB. Type "show warranty" for details. +This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1". +[Thread debugging using libthread_db enabled] +</verb></tscreen> + +<bf>gdb</bf> will automatically read the commands that you've placed in the +<tt>gdbcommands</tt> file and begin running the program you specified on the +command line. + +If the program appears to be locked up, press CTRL-C to create the backtrace +file. + +All of the output from <tt>gdb.txt</tt> should be posted to the mythtv-dev +mailing list, along with the steps you followed to get the program to crash. + +<bf>NOTE</bf>: If you're trimming the <tt>gdb.txt</tt> file to remove +extraneous information from the beginning of the file, make sure you include +at least 10 lines <em>prior</em> to the point where the backtrace actually +begins. This ensures that there is some context to the backtrace, and so +that it's possible to see what exactly caused the segfault. + +<bf>gdb</bf> has a number of options, read the <tt>man</tt> page for more +information. + +Using the <tt>gdbcommands</tt> file in conjunction with a <bf>while</bf> loop +will ensure that <bf>gdb</bf> creates a trace file and then restarts: + +<tscreen><verb> +$ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done; +</verb></tscreen> + +<bf>NOTE</bf>: To exit this loop you will need to kill the while loop. + +If you're trying to troubleshoot and you can't get back to the <bf>gdb</bf> window +for some reason, it may be easier to use two systems or to start +mythfrontend from the text console. + +If you're going to troubleshoot from a remote system, connect to the machine +that you're going to test using <bf/ssh</> or <bf>telnet</bf>. Next, type +<tt>$ export DISPLAY=localhost:0.0</tt>. This will allow the graphics to be +displayed on the X console (usually ALT-F6 or ALT-F7) and still give you +output and control of <bf>mythfrontend</bf>, either from the <bf>ssh</bf> +session, or by switching back to the text console by pressing CTRL-ALT-F1. +You can now continue troubleshooting using <bf>gdb</bf> as detailed in the +instructions. + +<sect2>MythTV is crashing your system +<p>When run as a non-privileged user, MythTV <em>can not</em> crash your +system. If your system is crashing when you run MythTV, then you have some +issue with the drivers for your capture card or other hardware, or the CPU +fan has fallen off/broken and your system is overheating when asked to +perform a CPU intensive task like encoding video. + +If you are running as root, which is <bf>strongly discouraged</bf>, it is +possible that your system may crash due to the real-time thread using all +available CPU. You will not be able to interrupt the process, so for all +intents and purposes your computer will have crashed. + +<sect1>Installing +<sect2>When trying to run mythtv-setup, you get an error like this: +"mythtv-setup: error while loading shared libraries:" +<p>You didn't add <tt>/usr/local/lib</tt> to <tt>/etc/ld.so.conf</tt>. See the +section on modifying <ref id="modifying_ld.so.conf" name="/etc/ld.so.conf">. + +<sect1>Using +<sect2>No programs are displayed in "Watch Recordings" +<p>This situation occurs most often with a system that acts as a frontend +and a slave backend. MythTV supports system-global and user-specific +configuration files, with user-configuration files taking precedence. 99% +of the configuration for MythTV is in the MySQL database, but MythTV still +needs to know where the MySQL server is running. This information is in the +<tt>mysql.txt</tt> file. By default, it will be installed to +<tt>/usr/local/share/mythtv</tt>, but a copy placed into <tt>~/.mythtv</tt> +will over-ride the global configuration. + +You must ensure that there aren't multiple, conflicting versions of this +file on your system! +<tscreen><verb> +$ locate mysql.txt +/usr/local/share/mythtv/mysql.txt +/home/mythtv/.mythtv/mysql.txt +$ +</verb></tscreen> + +As you can see, in this example there are two <tt>mysql.txt</tt> files. If +they are not identical, then there may be unintended consequences. + +You may also see this error if you completely fill the <tt>/var</tt> +partition. The most likely <em>mythtv-related</em> reason for this is an +overly large mythbackend or mythfrontend log file in <tt>/var/log</tt>. If +you have logging enabled for the backend, and myth runs for weeks at a time, +this may creep up and surprise you. Note that many system processes also +write to <tt>/var</tt> and the system may not boot if it is unable to write +to <tt>/var</tt> due to a full partition. + +<sect2>MySQL not connecting correctly +<p>Your <bf>MySQL</bf> installation may have networking turned off. +Check that <tt>/etc/mysql/my.cnf</tt> <em>does not</em> contain +<tt>skip-networking</tt>. If it does, remove it. Also verify that +<tt>bind-address</tt> is set to your IP address instead of +<tt>127.0.0.1</tt>. If you change either of these items, restart +<bf>MySQL</bf>. + +<sect2>MySQL database is corrupt +<p>If you have reason to believe that your MySQL database is corrupt, +execute the following commands to attempt to repair it. + +<bf>NOTE</bf>: Ensure that there are no programs accessing the database +while you attempt to repair it. Make sure that all backend and frontend +programs have exited. + +<tt>mysqlcheck -r -umythtv -p<password> mythconverg</tt> + +<sect2>Using a MPEG-2 encoder card and the video appears "jittery" +<sect2>Using a MPEG-2 encoder card and the video is jumping up and down +<p>This is a different problem than the one discussed in the previous +section. Currently, the ivtv driver or firmware appear to have some issues +if the vertical capture resolution is not the full screen height. If you +are having a jitter problem then ensure that you are capturing either 480 +lines (for NTSC) or 576 lines (for PAL). The default capture profiles may +need to be edited for your setup. Go to Settings->TV Settings->Recording +Profiles and adjust the <bf>Default</bf> and <bf>Live TV</bf> options to +480 or 576 from their defaults. + +<sect2>Screen goes blank but returns when mouse is moved or keyboard is used +<p>This is due to DPMS, the Display Power Management System, which is used +to save power by turning off your monitor when the system decides that it's +not being used or due to a screensaver that has defaulted to a blank screen. +MythTV now has DPMS support built-in, and should intelligently handle the +screen. Continue reading if you wish to override DPMS and force it off. + +Since it's likely that watching TV will not generate keyboard or mouse +events for a time, you need to turn off DPMS and the screensaver. There are +a few ways to do this. You may also need to check your BIOS for power +saving modes and disable screen blanking there as well. + +Edit your <tt>/etc/X11/XF86Config-4</tt> or <tt>/etc/X11/xorg.conf</tt> +file, and look for: +<tscreen><verb> +Section "ServerFlags" + #DontZap # disable <Ctrl><Alt><BS> (server abort) + #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching) + AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work + + Option "blank time" "0" + Option "standby time" "0" + Option "suspend time" "0" + Option "off time" "0" + Option "NoPM" "1" +EndSection +</verb></tscreen> + +Also, look for: +<tscreen><verb> +Section "Device" + Identifier "device1" + VendorName "nVidia Corporation" + BoardName "NVIDIA GeForce 256 (generic)" + Driver "nv" + Option "DPMS" +EndSection +</verb></tscreen> + +In this case, you would need to either delete the <tt>Option "DPMS"</tt> +line, or change it to <tt># Option "DPMS"</tt> to comment it out. The next +time you start XFree this change will take effect. + +Finally, check: +<tscreen><verb> +Section "Monitor" + Identifier "monitor1" + VendorName "Plug'n Play" + HorizSync 30-85 + VertRefresh 50-160 + + # Sony Vaio C1(X,XS,VE,VN)? + # 1024x480 @ 85.6 Hz, 48 kHz hsync + ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync + + # TV fullscreen mode or DVD fullscreen output. + # 768x576 @ 79 Hz, 50 kHz hsync + ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630 + + # 768x576 @ 100 Hz, 61.6 kHz hsync + ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616 +EndSection +</verb></tscreen> + +Ensure that there isn't an <tt>Option "DPMS"</tt> in the Monitor +configuration. + +You can also turn off DPMS from the Command Line, but this will not survive +a reboot. +<tscreen><verb> +$ xset -dpms +</verb></tscreen> + +Using <tt>xset +dpms</tt> will turn it back on. + +Another technique to try, which will turn off the screensaver: +<tscreen><verb> +$ xset s off +</verb></tscreen> +You may also combine the command to turn off DPMS and the screensaver: +<tscreen><verb> +$ xset -dpms s off +</verb></tscreen> + +Finally, depending on your distribution, you may be able to turn it off from +within the control panel. +<sect1>Miscellaneous +<sect2>mythfilldatabase failing +<p>If mythfilldatabase suddenly appears to be failing, there are at least +two things to check. + +First, if you are in North America, ensure that your DataDirect subscription +is still valid, otherwise, check to see what version of XMLTV you're +running and that it's the latest version. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: It is highly recommended that you run the latest +version of XMLTV available. Your listings provider may have made changes +which negatively impact XMLTV. +</caption> +</figure> + +<sect2>Fast CPU, choppy or jittery video <label id="Setting_DMA"> +<p>First, you should check that your kernel has been enabled for DMA: +<tscreen><verb> +[mythtv@pvr mythtv]$ dmesg |grep DMA + ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA + ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio +hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33) +hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33) +</verb></tscreen> + +From the listing above, you can see that hda, hdb and hdc are set for DMA, +and hdd is set for pio. If your kernel is not reporting DMA being enabled, +you may need to recompile your kernel. Check your motherboard's chipset +(look in the "ATA/IDE/MFM/RLL support" section in "make menuconfig") for more +information. + +Next, check that the hard drive has DMA enabled. Use the <bf>hdparm</bf> +program to check and enable DMA. +<tscreen><verb> +# hdparm -d /dev/hd? +</verb></tscreen> will tell you the DMA status for your hard drives. If you run +<bf>hdparm</bf> with the <tt>-d1</tt> parameter, it will turn DMA on. + +<!-- Next section adopted from a post by Dwaine Garden +dwainegarden@rogers.com to the mailing list. --> + +You may also setup your PC to do this at boot time, either by adding the +command to your <tt>/etc/rc.local</tt> file, or by adding files to +/etc/sysconfig. + +On Mandriva and other distributions, if you install <bf>hdparm</bf> from an RPM you +will most likely get a <tt>/etc/sysconfig/harddisks</tt> file installed. +This file will be parsed by the <tt>/etc/rc.sysinit</tt> script. If you use +the default <tt>harddisks</tt> file, your changes will affect all IDE devices +(including CD ROMs). If you wish to use different parameters for various +devices, rename and/or copy the file to <tt>harddiskhda</tt>, +<tt>harddiskhdb</tt>, etc. Edit the file to your liking and on the next +reboot your setting will be preserved. + +<sect2>Frontend appears to be slow at jumping / seeking. +<sect2>On-screen Display shows incorrect program length. +<p>This may occur when MythTV doesn't have an accurate seek table. Run +<bf>mythcommflag --rebuild</bf> + +<sect2>Troubleshooting audio <label id="Troubleshooting_Audio"> +<!-- By Bruce Markey --> +<p> +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: the following instructions do not apply to PVR-250/350 +encoders; the MPEG-2 file will have the audio embedded in the stream so it +is not accessible using <tt>/dev/dsp</tt>. +</caption> +</figure> + +Audio appears to be one of the bigger issues that users run into on the +mailing list. If the audio isn't configured correctly, then MythTV will +often appear to hang, when in fact it is trying to manipulate the audio +subsystem and failing. You may or may not receive error messages indicating +that the source of the error is the audio subsystem. + +You can not use <bf>xawtv</bf> to determine if your audio is working +correctly, since <bf>xawtv</bf> is simply using the analog sound patched +through line-in to line-out. It doesn't need to digitize the sound unless +you are using the recording function. + +A better test to verify that sound will work for MythTV (and recording with +<bf>xawtv</bf> for that matter) is to startup <bf>xawtv</bf>, mute the +line-in then run <tt>aplay /dev/dsp</tt>. You should hear the recorded audio +slightly delayed behind the real-time video. You should see messages about +"underrun". These can be ignored but they do confirm that the driver is +loaded and there is an active device. Once this test succeeds, MythTV +should work correctly because it writes to and read from /dev/dsp in +the same way that <bf>aplay</bf> does. + +To record audio along with video the audio signal must be digitized by a DSP +so that the audio data can be stored in a file. On playback, the audio data +is written to /dev/dsp and converted back to an analog signal. This analog +signal should then be sent to your speakers. Here is what is needed in +<bf>alsamixer</bf>. If you are using an ALSA version after 1.0.6, use +<bf>alsamixer -V all</bf>: + +CAPTUR source - the analog source to be sent to the DSP. This should be set +to the input source from the tuner card to the sound card. In most cases +this is Line but this could also be Aux, CD, Mic, etc., depending on how you +connect the input cable. This source should be muted to prevent patching +through the analog sound. The volume of this source will not affect the +record level. + +Capture mixer - this sets the level for the analog to digital recording. +While a volume of 100% is recommended for testing, distortion may occur. +Lowering this level to 75% to 85% may result in better audio quality. +"Capture" should be marked as the CAPTUR destination. + +PCM mixer - this sets the level for the digital to analog playback. While a +volume of 100% is recommended for testing, distortion may occur. Lowering +this level to 75% to 85% may result in better audio quality. + +Master mixer - sets the level for the analog signal sent to line-out or the +speakers. + +You may also want to ensure that <tt>/dev/dsp</tt> , or whatever device file +is being used, hasn't already been grabbed by another process, like +<bf>esd</bf> or <bf>artsd</bf>. If the device file isn't available, then +MythTV won't work. You may wish to run <bf>configure</bf> and enable +support for these. + +If you wish to see what application is grabbing a resource, you can use the +<tt>fuser</tt> command: +<tscreen><verb> +# fuser -v /dev/dsp +</verb></tscreen> + +To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System and +uncheck the "Start aRts soundserver on KDE startup" box. Run <tt># killall +artsd</tt> from the command line to stop the artsd program. + +If you're using multiple sound cards and multiple tuners, use <tt>alsamixer +-c 1</tt> to work with the second sound card. The first card is #0, the +second card is #1, etc. + +<sect2>Mythbackend reports that your card is not reporting full duplex capabilities +<sect2>The mythbackend program told me to look at this section +<p>mythbackend does a check to see if your sound device is capable of full +duplex operation. If it's not, it's most likely that you're going to run +into issues when you try to record and play sound at the same time. If your +backend is a separate machine than your frontend, then there's no problem, +since you're only going to be doing one thing at a time with the card. +Likewise, if you're running the frontend and backend on the same machine, +but you're using btaudio or a hardware encoder card such as the Hauppauge +PVR-250, DVB cards or HDTV capture cards as your recording source and you're +only using the playback function of your sound card, then you also shouldn't +have an issue, since the sound card isn't being asked to perform two +functions at once. + +If you can't get your sound card to go full-duplex and need it to, then check +your distribution for updated sound drivers. If your sound card is not +capable of full-duplex operation, either because the drivers don't support +it, or it has been designed that way, then you're pretty much out of luck +and will either need to purchase a new sound card, or will need to get +btaudio <ref id="btaudio" name="operational">. + +<sect2>My remote doesn't work / works sometimes and not others / "ghost" keypresses +<p>This can be due to a number of factors. The simplest case is the +"ghost" keypresses. For me, it was due to compact fluorescent lights in +the same room as the IR receiver, which the receiver was picking up as +keypresses. Once the lights were switched to incandescent bulbs, the ghost +went away. + +You may have an issue with <bf>lirc</bf> misinterpreting IR commands from a +different remote. I also have an issue where the TiVo "Peanut" remote will +eventually cause <bf>lircd</bf> to stop responding; even though <bf>lircd</bf> +is configured for the Pinnacle Systems remote, the TiVo remote IR patterns +are being seen by the IR receiver. + +If your remote has been properly configured, and <bf>irw</bf> and +<bf>irxevent</bf> are working correctly, then it's highly likely that your +window manager is not giving focus correctly to the various Myth programs as +they run. The following window managers are known to work correctly: + +<itemize> +<item>fvwm +<item>blackbox (using "Sloppy Focus" and "Focus New Windows") +</itemize> + +<bf>NOTE</bf>: You do not need to use <bf>irxevent</bf> if you are using +MythTV's native LIRC support, so the window manager focus issue does not +apply in that case. + +<sect2>Where's "canada-cable"? +<sect2>Channels are off by one +<p>There is no such thing as "Canada Cable"; Canada uses the same +frequencies as the United States. "Canada Cable" was a hack that some +people used when they would discover that their channels were off-by-one, +i.e. when tuning to channel 42, they might get channel 41 or 43. This is +actually due to the tuner on the video capture device being mis-detected. +You must manually specify the tuner type in your <tt>/etc/modules.conf</tt>. +See the video4linux mailing list (<url +url="https://listman.redhat.com/mailman/listinfo/video4linux-list" +name="https://listman.redhat.com/mailman/listinfo/video4linux-list">) for +more information. + +<sect2>Mythweb is showing a db_open error when I connect to it +<!-- Fix by Chris Ripp [chris@ripp.net] post to mailing list --> +<p>Find your <tt>php.ini</tt> file. Make sure you've got a line in it like this: + +<tt>extension=mysql.so</tt> + +Restart <bf>apache</bf> for it to take effect. + +<sect2>Mouse pointer disappears when placed over the MythTV windows +<p>This is the intended behavior. The MythTV interface is meant for use +with a remote control or a keyboard. + +<sect2>What does "strange error flushing buffer" mean on the console? +<p>Nothing, really. It's just lame (the mp3 encoder) complaining for some +obscure reason. This seems to be fixed in more recent versions of the +libmp3lame library. + +<sect2>Can't change the channel when watching Live TV. +<p>Something's wrong with your program database. Did mythfilldatabase run +with no major errors? Or, MythTV may not have permissions to the +appropriate video4linux devices. See the section titled <ref id="devperms" +name="Device Permissions"> for an example. + +<sect2>Screen goes black when you try to play something +<p>MythTV prints error and status messages to the shell that was used to +start the application. If nothing seems to be happening when you try to +view a program, try switching back to the shell and look for error messages +there, or, if you're running from a startup script, check the log file. + +<sect2>Poor performance with NVidia cards and XvMC +<p>XvMC is a NVidia driver feature which is supposed to help with decoding +video. Users have reported that rather than speeding up their video it +appears to be doing the opposite. You may want to check that your color +depth is set for 24bpp. + +<sect2>Computer is loading a media player application when you insert a CD or DVD +<p>You need to disable any sort of auto-running media player in your +environment, otherwise MythDVD or MythMusic will not be able to work +properly. + +In KDE, you may want to perform the following: +<tscreen><verb> +$ rm ~/.kde/Autostart/Autorun.desktop +</verb></tscreen> +<sect>Miscellaneous. +<sect1>I'd like to watch the files without using MythTV / I'd like to convert the files to some other format +<p>First, check if the <bf>mytharchive</bf> plugin does what you want. If not, then +read on: + +MythTV comes with a utility called <bf>mythtranscode</bf> which can +decode nuv files into raw format for use with other applications. This +command-line utility was not designed to be used by the end-user, but +instead to be called by other applications or scripts. Programs like +<bf>nuvexport</bf> (<url url="http://forevermore.net/myth/" +name="http://forevermore.net/myth/">) are better suited for the end user. +However, since <bf>mythtranscode</bf> can be a useful tool, directions on +using it follow. + +<bf>mythtranscode</bf> creates raw streams, which means that they do not +contain any container information such as resolution, frame-rate, or audio +sampling rate. In order to process the output, you must supply this +information to the processing utility. <bf>mythtranscode</bf> provides the +relevant information on STDOUT. + +There are two modes in which <bf>mythtranscode</bf> can create raw streams. +The first has no synchronization and assumes that the processing utility +will read audio and video at a constant rate. This method is useful when a +single application will be processing the raw output, such as +<bf>mencoder</bf> or <bf>ffmpeg</bf>. The second method assumes that two +separate applications will be processing the audio and video streams +independently, and there is no rate control between them which means that +the two programs don't coordinate their efforts to maintain synchronization. + +<sect2>mythtranscode example +<p>First, start <bf>mythtranscode</bf>. You will need to determine the +channel and the start time manually. +<tscreen><verb> +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \ +autodetect --fifodir . & +</verb></tscreen> + +When <bf>mythtranscode</bf> begins executing, it will create two FIFOs +("audout" and "vidout") in the directory specified (in this case ".", +meaning the current directory) and will print out information about the +video stream. + +The next step is to start the processing application. The following assumes +that the stream is NTSC 640x480 with 32Kbps audio. + +To use <bf>mencoder</bf> you would enter a command like: +<tscreen><verb> +mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ +-rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \ +vidout +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You must use mencoder 1.0PRE1 or later. <bf>mencoder</bf> +version 0.9x <em>WILL NOT WORK!</em> +</caption> +</figure> +Using ffmepg: +<tscreen><verb> +ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \ +-i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi +</verb></tscreen> + +Or to play directly using mplayer (again 1.0PRE1 or later is needed): +<tscreen><verb> +mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ +-rawvideo on:w=640:h=480:fps=29.97 vidout +</verb></tscreen> + +If you wanted to write the raw data to separate audio and video files for +later processing, the following would work (note the use of --fifosync +for rate-control): +<tscreen><verb> +$ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \ +--profile autodetect --fifodir . --fifosync & +$ cat audout > audio.raw & +$ cat vidout > video.yuv +</verb></tscreen> + +<sect1>Using a different window manager +<p>MythTV is not dependent on any particular window manager. If you wish to +run a lightweight window manager, the <tt>contrib/configfiles/</tt> directory has an +example of a <tt>.twmrc</tt> and <tt>.fvwmrc</tt> file you may use. + +<sect1>What capture resolution should I use? How does video work? +<label id="capture_resolution_"> +<!-- Lots of the following is from a Bruce Markey mailto:bjm@lvcm.com post +to the mailing list, 2003-01-21. Updated 2005-02-09 bjm --> +<p>While MythTV allows you to set various GUI and capture resolutions, not +all combinations make sense. + +First, analog video signals have a defined vertical resolution. In NTSC, +the video standard specifies that there are 525 vertical scan lines. Once +the "extra" lines are removed (they're used to synchronize the video signal, +and encode closed captioning data), you have 480 horizontal lines stacked +vertically. + +In PAL, there are 625 "raw" lines of resolution, with a net of 576 +horizontal lines stacked vertically. + +Horizontally, the maximum value allowed for a Bt8X8 chip is 720. However, +due to limitations in the chip and other limitations of broadcast +television, there may not be a noticeable improvement in image quality +beyond 400 or 500 pixels. + +With this in mind, there are certain commonly accepted values for +resolution. While other values may be accepted for the vertical +resolution, they will cause scan lines to be repeated or dropped. + +From "best" to "worst", in NTSC: +<itemize> +<item>720x480 "DVD" resolution. ReplayTV High and medium resolution +<item>704x480 DVD standalone recorder standard resolution +<item>640x480 4:3 +<item>544x480 TiVo Best resolution +<item>480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution +<item>352x480 ReplayTV "Standard" quality, TiVo Basic and Medium resolution, DVD "LP" resolution +<item>320x480 +<item>544x240 +<item>480x240 +<item>352x240 Video CD (VCD) resolution +<item>320x240 +</itemize> + +As you can see, the lower quality values are half of the better ones. +720x240 is possible, but isn't a good tradeoff relative to the number of +vertical lines lost. In a PAL country, the you would use values like +720x576 or x288. + +The higher resolutions will be more CPU intensive if you're using software +encoding (PVR-250/350 will have minimal host CPU impact even if you're using +720x480). If the CPU is overtaxed, frames will be dropped causing uneven +motion. You will likely see the best results at resolutions which average at +least 10% CPU idle time. You can use system tools such as <tt>top</tt> or +<tt>sar</tt> to check the CPU % idle while recording. If the CPU average +usage is consistently exceeding 90%, frames will need to be dropped during +peak times when more than 100% of the available CPU would be needed to +process all of the frames. + +If you'd like to read more on this, go to the vcdhelp website at <url +url="http://www.vcdhelp.com/forum/userguides/94382.php" +name="http://www.vcdhelp.com/forum/userguides/94382.php">. + +<sect1>MythTV GUI and X Display Sizes +<p>MythTV is designed to be run as dedicated full screen TV application +but can also be run as a desktop application on a computer monitor. Here +are a few consideration for configuring sizes to best suit you needs. + +<sect2>X Dimensions +<p>For output to a Television, common resolutions are 640x480, 800x600, and +some rare devices support 1024x768. Generally, higher resolutions are +better. However, you may find that you prefer the picture quality at one of +the lower resolutions. Everything in MythTV is scalable and should 'fit' +regardless of the resolution you choose. + +Edit your X configuration file, usually <tt>/etc/X11/XF86Config-4</tt> for +XFree, or <tt>/etc/X11/xorg.conf</tt> for Xorg, so that the resolution you +want to use is listed first in the lists under "Screen". If this resolution +is higher than the resolutions supported by your output device, you will see +a 'panning' effect where moving the mouse to the edge will scroll around a +desktop area which is larger than the display size. If this happens, edit +your X configuration file to match the display size then restart X. + +<sect2>MythTV Dimensions +<p>From "mythfrontend" go to Setup->Appearance. +The default for the height and width is "0" - this will cause +MythTV to automatically size itself to full screen. + +If the MythTV GUI width and height are not 0, mythfrontend uses these GUI +dimensions and is anchored to the upper left corner of the X Desktop. If +the GUI X and/or Y are not 0, the upper left corner is positioned at the +specified coordinates. If the "Run the frontend in a window" box is checked, +the window will have a frame and can then be dragged to any position on the +desktop. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: When the GUI is full screen, you may see windows rapidly +flipping on top of each other. If this happens you will need to set your +window manager to 'Click to Focus' for windows to stack properly. +</caption> +</figure> +The fonts for the GUI and OSD will scale to whatever sizes you use. Most +font sizes can be changed in setup selections or in the .xml files under +<tt>/usr/local/share/mythtv/</tt> . Make sure to use fonts large enough +to be read on a TV screen from a distance. + +The full screen TV size is based on the X display size. For Xinerama, you +can specify a screen in Setup->General. The TV picture will be stretched +to fit the entire GUI area regardless of the <ref id="capture_resolution_" +name="capture resolutions"> used. However, during playback, the "W" key can +to used to correct differences between 16:9 and 4:3. + +<sect2>Overscan Dimensions +<p>Because picture edges can be ragged and screen edges aren't straight, +Television is designed to project an image larger than the physical screen. +This is called "overscan". Underscan is fitting the entire image inside the +screen. Underscan is useful for computer monitors so that toolbars and +scrollbars at the edges can be seen. + +For best results, match the X display area as close as possible to the edges +of the physical screen. This can only be adjusted by your tv-out device or +by the settings for the television set. Many sets have these adjustments in +a 'service mode'. If you cannot make these adjustments, there will be black +borders around the edges of the X desktop, MythTV GUI and TV playback. + +MythTV has settings for "Overscan" in Setup->Playback. These can not, and do +not, cause the image to display beyond the edge of the X display area. The +purpose of these settings are to cut off rough edges and to expand the image +so that objects will appear to be the same size as a normal overscanned TV +picture. + +<sect1>Saving or restoring the database <label id="backupdb"> +<p>See the <bf>mysqldump</bf> manpage for more information. +<tscreen><verb> +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql +</verb></tscreen> + +To restore: (assuming that you've dropped the database) +<tscreen><verb> +$ mysql -u root +mysql>create database mythconverg; +mysql>exit +$ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql +</verb></tscreen> + +You may need to alter the MySQL permissions if this database is being shared +with multiple systems. See the <ref id="modify_perm_mysql" name="Modifying +access to the MySQL database for multiple systems"> section for more +information. + +<sect1>Deleting the MySQL database +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Performing this step will remove the entire database. +You will lose all of your settings and will need to re-run the mc.sql script +to setup the database structure before running the mythtv-setup program. +</caption> +</figure> +<tscreen><verb> +$ mysql -u root +mysql> drop database mythconverg; +mysql> quit +</verb></tscreen> + +<sect1>Moving your data to new hardware +<p>This assumes that you will be moving your data to newer / bigger hardware +and don't want to lose your programs. + +The first step is to create a database backup as demonstrated in an earlier +section. + +Next, you will extract only the data that is relevant to the programs: +<tscreen><verb> +$ grep "INSERT INTO record " mythtv_backup.sql > restore.sql +$ grep "INSERT INTO recorded " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO oldrecorded " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedrating " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedmarkup " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO recordedseek " mythtv_backup.sql >> restore.sql +</verb></tscreen> + +<bf>NOTE</bf>: Newer versions of <bf>mysqldump</bf> place backticks around +the table names. Backticks are not the same as apostrophes! On a typical +North American keyboard, backticks are located to the left of the "1" key, +on the same key as the tilde. Also, because the <bf>bash</bf> shell may try +to interpret the backticks, make sure you use a \ before each one. + +If your <tt>restore.sql</tt> file is empty, you'll need to re-run the +commands like this: +<tscreen><verb> +$ grep "INSERT INTO \`record\` " mythtv_backup.sql > restore.sql +$ grep "INSERT INTO \`recorded\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`oldrecorded\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedrating\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedmarkup\` " mythtv_backup.sql >> restore.sql +$ grep "INSERT INTO \`recordedseek\` " mythtv_backup.sql >> restore.sql +</verb></tscreen> + +Note the space after the table name and the ">>" to append to the file for +all but the first <bf>grep</bf>. "recordedmarkup" and "recordedseek" are +huge and there may be hundreds of thousands of lines if you had lots of +hours of recordings. + +After you have moved the data files to the new hardware, configure MythTV +using the <bf>mythtv-setup</bf> program as you normally would with a +standard MythTV installation. + +At this point we will restore the information about your programs back into +the database: +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg < restore.sql +</verb></tscreen> + +After successful insertion of the data you may delete the +<tt>restore.sql</tt> file. + +<sect1>btaudio <label id="btaudio"> +<p>btaudio allows you to obtain the audio data from your tuner card directly +over the PCI bus without using a sound card. This is useful if you would +like to use multiple tuner cards in a system without adding a sound card for +each one, or if your existing sound card is not capable of full-duplex +operation. + +In order to use btaudio, your tuner card will need certain hardware +installed on it, and that hardware must be wired correctly. The chip that +will allow you to use the btaudio module is the MSP34xx. However, having a +MSP34xx is no guarantee that you will be able to use the btaudio module. + +As of 2003-03-31, this is the current list of cards and their status: +Works with btaudio: + +<itemize> +<item>Hauppauge WinTV-radio with dbx-TV stereo, model 401 +<item>Hauppauge WinTV-Theater, model 495, 498 (Europe) +<item>ATI TV Wonder +</itemize> + +The following cards do not work: +<itemize> +<item>Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not +wired correctly to the BT878 chip. +<item>ATI TV Wonder VE +<item>Leadtek Winfast 2000 XP (PAL, UK and NTSC) +<item>I/O Magic PC-PVR. No MSP34xx chip. +</itemize> + +The following cards have been reported to work, but have issues: +<itemize> +<item>Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on +analog) +</itemize> + +Once btaudio loads, it should register additional <tt>/dev/dsp</tt> and +<tt>/dev/mixer</tt> devices. Typing <tt>$ dmesg</tt> will let you know +what's going on. + +<sect1>Removing unwanted channels +<p>If <bf>mythfilldatabase</bf> grabbed a channel which you do not want to +include in your TV listings, you can remove the entries from the grabber +configuration and the MySQL database. This often happens with premium +channels; for example, HBO or Showtime may be available on your cable TV +system, but is scrambled because you're not a subscriber to that channel. +Since you can never watch it, you want to get rid of it. + +If you are using the DataDirect service, login to your account at +<url url="http://labs.zap2it.com/" name="http://labs.zap2it.com/"> to +modify your lineup. Uncheck the boxes for any unwanted channels, and they +will no longer be included in your download. + +If you are using a grabber from XMLTV, comment out the channel from the +<tt>~/.mythtv/<sourcename>.xmltv</tt> file by inserting the word "not +" (including the space) in front of the unwanted entry. This will prevent +<bf>xmltv</bf> from grabbing future listings. + +Next, delete the unwanted item from the channel table so that it will not +appear in the EPG or when changing channels. To delete the data from the +database we need to perform some steps. First, assuming that HBO is channel +15, we need to find out the internal <tt>chanid</tt> used by MySQL: +<tscreen><verb> +$ mysql -u root mythconverg +mysql> select chanid from channel where channum=15; ++--------+ +| chanid | ++--------+ +| 1015 | ++--------+ +1 row in set (0.00 sec) +mysql> delete from channel where chanid = 1015; +</verb></tscreen> + +Old program data will be removed over the course of a week. However, you may +want to immediately delete any current program listings for the channel that +has been removed: +<tscreen><verb> +$ mysql -u root mythconverg +mysql> delete from program where chanid = 1015; +</verb></tscreen> + +<sect1>NFS +<p>You may want to use a central server to store your files. + +On the host machine, (in this case, the hostname is "masterbackend") you'll +want to edit your <tt>/etc/exports</tt> file and use something like: +<tscreen><verb> +/var/video (rw) +</verb></tscreen> + +To export the <tt>/var/video</tt> directory with read / write privileges. + +On the "slave" machine, you'll want to edit the <tt>/etc/fstab</tt> file and +add something like: +<tscreen><verb> +masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0 +</verb></tscreen> + +Then run <tt># mount -a</tt> to re-read the file to mount the file system. + +In this case, the source is a machine called "masterbackend" which is +exporting the directory "/var/video", which we're mounting locally at +"/var/video". The rsize and wsize options are used to increase the +performance of NFS; "hard,intr" is there because that's the recommendation +of the NFS-HOWTO, the nfsvers is required for filesizes over 2GB and actimeo +is used to turn off file attribute caching. Attribute caching for a shared +media point causes problems; you always want to see the latest state of the +directory and files. See <url +url="http://www.mythtv.org/wiki/index.php/Optimizing_Performance" +name="http://www.mythtv.org/wiki/index.php/Optimizing_Performance"> for +additional information regarding performance optimization. + +<sect1>Automatically starting mythfrontend at system boot time +<p>Here's an example submitted to the mythtv-dev list by Pat Pflaum +<url url="mailto:pat@netburp.com" name="mailto:pat@netburp.com"> using fvwm: +<tscreen><verb> +$ cat > .xinitrc +fvwm & +mythfrontend +^D +$ cat > .fvwmrc +Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0 +^D +$ +</verb></tscreen> + +The following also works with blackbox: +<tscreen><verb> +$ cat > .xinitrc +xset -dpms s off & +irxevent & +mythfrontend & +blackbox +</verb></tscreen> + +Make sure that your <tt>.blackboxrc</tt> file has: +<tscreen><verb> +session.screen0.focusNewWindows: True +session.screen0.focusModel: SloppyFocus +</verb></tscreen> in it. + +<label id="mythbackend_autostart"> +<sect1>Automatically starting mythbackend at system boot time +<sect2>Red Hat And Mandriva +<p>Here's a method for automatically starting mythbackend submitted by Mike +Thomson (<url url="mailto:linux@m-thomson.net" name="mailto:linux@m-thomson.net">) and Stu Tomlinson (<url +url="mailto:stu@nosnilmot.com" name="mailto:stu@nosnilmot.com">). + +Copy the files from the MythTV <tt>contrib</tt> directory or from Mike's web +site (<url url="http://m-thomson.net/mythtv/" +name="http://m-thomson.net/mythtv/">) as follows: + +<tt>etc.rc.d.init.mythbackend</tt> should be made executable and copied to +<tt>/etc/rc.d/init.d/</tt>: +<tscreen><verb> +$ cd contrib +$ su +# chmod a+x etc.rc.d.init.d.mythbackend +# cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend +</verb></tscreen> + +<tt>etc.sysconfig.mythbackend</tt> should be copied to +<tt>/etc/sysconfig/</tt>: +<tscreen><verb> +$ cd contrib +$ su +# cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend +</verb></tscreen> + +Edit <tt>/etc/sysconfig/mythbackend</tt> if you want to change the defaults +(the userid that should start mythbackend, location of the logfile and (if +required) the name and location of the mythbackend binary). + +Use <bf>chkconfig</bf> to make sure the script is called when +entering runlevels 3, 4 or 5: +<tscreen><verb> +$ su +# chkconfig --level 345 mythbackend on +# exit +$ +</verb></tscreen> + +<label id="logrotate"> +<sect3>Log files +<p>By default, the log file for mythbackend will be written to +<tt>/var/tmp/mythbackend.log</tt>. This has been tested and is known to work +on Mandriva and Red Hat, but many people prefer to place logs under +<tt>/var/log/</tt>. + +To do this, create a group called <tt>mythtv</tt> (or anything you prefer) +and add your usual MythTV users to that group. If you changed the user that +starts mythbackend from the default of root you <em>must</em> perform this +step. + +Create the directory <tt>/var/log/mythtv</tt> and set its +permissions as follows: +<tscreen><verb> +$ su +# mkdir /var/log/mythtv +# chown root:mythtv /var/log/mythtv +# chmod 0775 /var/log/mythtv +# exit +$ ls -ld /var/log/mythtv +drwxrwxr-x 2 root mythtv 4096 Apr 28 21:58 /var/log/mythtv/ +$ +</verb></tscreen> + +<!-- From an email by chris at cpr.homelinux.net on 2006-09-01 --> +Create a <tt>mythtv</tt> file in <tt>/etc/logrotate.d</tt>: +<tscreen><verb> +$ su +# cat > /etc/logrotate.d/mythtv +# Set default values for all log files first... + +# Rotate the logs once a week, or more frequently if they +# exceed 10Mb in size (size is checked daily). +weekly +size 10M + +# 'copytruncate' is used for logs generated by +# currently-running programs that should not be restarted +# (and can't be signalled to start a new log) after the +# rotation. It duplicates the existing log file and then +# sets the length of the existing file to 0. The only time +# this would break would be if the program writing the log +# was using lseek. +copytruncate + +# After rotating the files, leave the most recent rotated +# copy alone but gzip everything else to save space. +compress +delaycompress + +# If a log isn't present then don't worry about it. +missingok + +# Don't rotate an empty file. +notifempty + +# end of the global options + +/var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log { + # Keep logs until they are 2 months old or the number of + # logs reaches 12. If the log files stay small, the age will + # kick in first and you'll only have 8 log files. If they + # get larger than 10Mb then you won't keep all 60 days. + rotate 12 + maxage 60 +} + +# Different options for mythfilldatabase: +/var/log/mythtv/mythfilldatabase.log { + rotate 2 +} +^D +# +</verb></tscreen> + +<sect3>Mandriva +<p>Mandriva adds one more twist in the form of the <tt>msec</tt> utility, +which runs regularly and (at the default or any higher security level) sets +permissions on many files, including those under <tt>/var/log</tt>. + +To tell msec about the MythTV log files and their directory, you need to +edit the <tt>/etc/security/msec/perm.local</tt> file to include the +following: +<tscreen><verb> +# /etc/security/msec/perm.local +# Local overrides to the msec program +# +# Full file path user.group permissions +/var/log/mythtv/ root.mythtv 775 +/var/log/mythtv/* root.mythtv 664 +</verb></tscreen> + +A copy of the above has been included in the contrib/ directory. You may +add it by typing: +<tscreen><verb> +$ cd contrib +$ su +# cat etc.security.msec.perm.local >> /etc/security/msec/perm.local +# exit +</verb></tscreen> + +Finally run the <tt>msec</tt> tool to check and implement your +changes. +<tscreen><verb> +$ su +# msec +# exit +$ +</verb></tscreen> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: msec can only <em>reduce</em> the permissions of files, so if +you don't get the results you expect, check that you're not asking +<tt>msec</tt> to add missing permissions to the files or directories you +created. +</caption> +</figure> +<sect2>Gentoo +<p>The portage file for MythTV has scripts that will allow you to run +mythbackend at startup. + +To run mythbackend as a daemon which starts at boot time: +<tscreen><verb> +# rc-update add mythbackend default +</verb></tscreen> +To stop mythbackend as a daemon: +<tscreen><verb> +# /etc/init.d/mythbackend stop +</verb></tscreen> + +To obtain a list of options: +<tscreen><verb> +# /etc/init.d/mythbackend +</verb></tscreen> + +<sect1>Advanced Backend Configurations <label id="advanced_backend_config"> +<p>MythTV is flexible in the way that you define multiple backend tuner +configurations. The only hard-and-fast rule is that the Master backend +<em>must</em> have a capture device defined, but shouldn't imply that the +capture device in the Master backend must be the first capture card defined in the +database. + +One example of an advanced configuration is the round-robin scheme. Rather +than defining all of the cards on the master, you could first go into +mythtv-setup on the master to define globals such as the general configuration +and the channel lineup but not the host-specific configuration item like the +capture card. In this example, we will use a 4 tuner configuration, where two +slaves have one card each and the master has two. +<enum> +<item>Add the first capture card on one of the slaves. Complete the +configuration, connecting the input source to the card. This will get +cardid #1 in the database. Exit mythtv-setup. +<item>Configure the first capture card on the master backend. This will get +cardid #2 in the database. Exit mythtv-setup. +<item>Configure the first capture card on the second slave. This will be +cardid #3 in the database. Exit mythtv-setup. +<item>Configure the second capture card on the master backend. This will +get cardid #4 in the database. Exit mythtv-setup. +</enum> + +Using this scheme, the master backend will not use both capture cards until +one of the following happens: +<itemize> +<item>There are four recordings scheduled for the same time +<item>Both slaves are unavailable +</itemize> + +The scheduler in MythTV checks whether an encoder is available; if a slave +backend isn't running, its encoder isn't available, so the scheduler will +look for the next available encoder. This makes MythTV very flexible; slave +tuners can come and go, and as long as there are enough tuners for what +you'd like to record it doesn't matter which tuner in particular is going to +be used. + +Using this round-robin scheme along with a shared storage directory like +NFS and enabling the Master Backend Override setting will allow you to view +content even if the slave backend that recorded a program is not available. + +<sect1>Using the transcoder +<!-- Aran Cox, spin667 at mchsi.com --> +<p>MythTV's built-in transcoder re-encodes recordings from one codec to +another. The transcoder has three primary uses; it can transcode MPEG-2 +files captured using a hardware encoder (PVR cards, DVB cards, ATSC HD, +etc.) to MPEG-4, it can be used to transcode RTjpeg files (usually only used +on systems that can not real-time encode to MPEG-4 using a framegrabber) to +MPEG-4, and finally it can be used to remove commercials from a MPEG-2 file +while leaving the file in MPEG-2 format. + +When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file format +is NuppelVideo (nuv). NuppelVideo is a container which provides a method of +keeping the audio and video in sync throughout the recording, which is why +it is used instead of the <tt>.avi</tt> format. You may have difficulty +playing <tt>.nuv</tt> files in non-MythTV systems. + +<!-- If +you want something more portable you can look at some of the other sections +in this HOWTO. --> + +The original file is removed when the transcoding process is complete. +Unless you're sure that you will be satisfied with the result you may want +to enable the <bf>mythtv-setup</bf> option which causes <bf>mythbackend</bf> +to keep the original file after transcoding. This option is on the second +page of the General section in mythtv-setup. Enabling this allows you to +compare the two files and restore the original if you like. Outside of the +initial setup phase it usually isn't necessary to leave this option enabled. +A recording can be transcoded in two ways: + +<itemize> +<item>Automatically transcode the file once it has completed +recording.</item> +<item>Manually choosing to transcode a recording, usually after +importing a cutlist or manually marking commercials to be +removed.</item> +</itemize> + +The second method can be used on files that have already been transcoded (or +files which were are already in the desired format), so only the frames +immediately following a cut section will be re-encoded, resulting in a +minimal loss of quality when removing commercials with the added benefit of +being extremely quick. + +The current transcoding system has a lot flexibility, but there are +a number of steps involved in setting it up. In order to +automatically transcode a given recording you must do the following: +<enum> +<item>Configure recording profile for your capture source and enable +transcoding on one or more profiles.</item> +<item>Configure one or more transcoding profiles.</item> +<item>Create or alter existing scheduled recordings to enable +transcoding for that recording.</item> +</enum> + +<sect2>Configuring Recording Profiles to Allow Transcoding + +<p>Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles +section in <bf>mythfrontend</bf>. Choose the option that corresponds to +your capture source (ignore the Transcoders for now.) Choose the quality +profile you are interested in using for transcoding. Ensure that "Enable +auto-transcode after recording" is checked. <!-- This option might ought to +be called "allow auto-transcode" as we'll soon see though. You might want to +verify that the other settings for this profile are correct while your here. +--> + +<sect2>Configure Transcoding Profiles + +<p>Enter the Recording Profiles > Transcoders menu. There are three quality +settings to choose from and a two special Autodetect settings. Later, when +scheduling recordings you'll have to choose one of Autodetect, High, Medium, +and Low Quality transcode settings in addition to the recording profile we +set up above. If you choose the Autodetect transcoding profile for a +recording, MythTV will use the "Autodetect from RTjpeg/MPEG-4" profile for +recordings which are RTjpeg/MPEG-4 files. Otherwise, it will use the +"Autodetect from MPEG-2" profile provided it's an MPEG-2 recording. If you +choose one of the others (High, Medium, Low) it will use the settings in +that profile regardless of the codec of the original recording. + +There are a number of options for transcoding but the simplest is to enable +lossless transcoding (the first option) which subsequently removes all other +options. Enabling lossless encoding simply removes commercials (if you've +marked them) and attempts to clean up MPEG-2 streams. Note that with this +option MythTV will not apply any sort of filters and will only attempt to +normalize the stream into something cleaner and less likely to have trouble +with other less forgiving MPEG-2 hardware/software (including players, video +editors, etc.) + +If you enable resizing of the recording the next page has the settings for +choosing the final resolution. MythTV will scale the video as appropriate, +not crop it to this resolution. + +The final two pages allow configuration of the video and audio codecs. +Although RTjpeg is an option for video codec there is no reason to transcode +<em>to</em> this format because it will produce larger files than MPEG-4 and +the recording will take <em>more</em> CPU power to play back. The MPEG-4 +settings are described in the documentation for the <bf>ffmpeg</bf> project +at <url url="http://ffmpeg.sourceforge.net/ffmpeg-doc.html" +name="http://ffmpeg.sourceforge.net/ffmpeg-doc.html">. It's a matter of +trial and error to discover which settings achieve a good compromise between +size and quality. + +If you wish to return to the default settings, they are Bitrate: 2200-2500, +MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for frame size" is +enabled. The other options are unchecked. <!-- If you're getting weird +results from MPEG-4 transcoding try setting as above and go from there. --> + +<sect2>Create/Alter Scheduled Recordings to Enable Transcoding + +<p>Transcoding is actually enabled on a per-recording basis. Two things +must be true before any given recording will be auto-transcoded, however. +The first is that the recording must have been made with a recording profile +that has auto-transcode enabled. Under "Storage Options" for the recording +you must set the "Record using the "X" profile" to the profile you +configured in the first step. In addition, under the "Post Recording +Options" section of the recording you must also set "Transcode new +recordings." This is also where you specify the Transcoding profile to use +(Auto, High, Medium, Low.) + +It may not be obvious from above but the flexibility of this system is +primarily to make it possible to auto-transcode a show recorded via one +source (ie: pcHDTV 3000), and not transcode that same show if it's recorded +on another kind of card (ie: PVR-250.) There are other uses however. You +could have a PVR-250 and a V4L card. You may want to transcode the MPEG-2 +from the PVR-250 but there is no need to transcode the recordings made with +the V4L card, as it's already likely to be MPEG-4. + +As an example, you could configure the Default profile for "Hardware DVB +Encoders" (the profile group used for DVB cards, including ATSC cards like +the pcHDTV 3000) to "Enable auto-transcoding". In the Default profile for +MPEG-2 Encoders (PVR cards) you'd leave "Enable auto-transcoding" unchecked. +For programs that are available on both kinds of cards you'd set the +recording profile to Default and enable auto-transcoding in the record +settings. Then you pick your transcoding profile. The result is that when +a program is recorded on your DVB card, it will get transcoded. When it +plays on a channel available via your PVR card, it won't be. + +<sect2>Manual Transcoding + +<p>Manually transcoding is activated while watching a show by hitting 'x', +from the OSD menu by choosing the Transcode option, or by choosing Job +Options/Transcode from the info menu from the Watch or Delete +Recordings screens. + +The transcoding profile used for manual transcoding is whatever was set when +the recording was originally configured, even if you didn't enable +auto-transcoding. The only way to change what transcoding profile will be +used is to alter the transcoder column in the recorded table in the +database. The transcoder column contains a number which corresponds with +the id column in the recordingprofiles table. You can find out the id +number for each profile in the transcoder group with an SQL command like: + +<tscreen><verb> +mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup; ++----+----------------+------------+------------+--------------+ +| id | name | videocodec | audiocodec | profilegroup | ++----+----------------+------------+------------+--------------+ +| 21 | RTjpeg/MPEG4 | MPEG-4 | MP3 | 6 | +| 22 | MPEG2 | MPEG-4 | MP3 | 6 | +| 27 | High Quality | MPEG-4 | MP3 | 6 | +| 28 | Medium Quality | MPEG-4 | MP3 | 6 | +| 29 | Low Quality | MPEG-4 | MP3 | 6 | ++----+----------------+------------+------------+--------------+ +5 rows in set (0.01 sec) + +mysql> +</verb></tscreen> + +Armed with the knowledge of what the profile ID's are you can also choose to +run mythtranscode from the command line and explicitly specify the transcoder +profile. Run <tt>mythtranscode --help</tt> for usage information. + +<sect1>Changing your hostname +<!-- Edited instructions from a post by Alan Snyder ax763 at yahoo.com --> +<p>If you need to change the name of the computers used with MythTV you'll +need to perform a sequence of steps. There are a number of pieces of +information that MythTV keeps track of which are tied to the hostname of the +box, so changing the hostname involves altering the name in the +operating system and in the MySQL database. In the examples below, the old +name of the system was "frontend1" and we're going to change it to +"kidsroom". + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: Changing the hostname using direct SQL update commands will +break things. You <em>MUST</em> use this indirect method. +</caption> +</figure> + +1. Stop all backends. If you run <bf>mythbackend</bf> from a terminal +session, press control-c. If your backends are started with an init +script, you would do something like the following: +<tscreen><verb> +$ su +# /etc/init.d/mythbackend stop +</verb></tscreen> + +2. Change the hostname. + +For Red Hat and derived distributions, edit the +<tt>/etc/sysconfig/network</tt> file. Look for +<tt>HOSTNAME=frontend1</tt> and change this to +<tt>HOSTNAME=kidsroom</tt> or whatever you'll be using. For other +distributions, refer to the documentation, such as the +<verb>hostname(1)</verb> man page. + +<p> +To alter the +hostname in the current session, run: +<tscreen><verb> +# hostname kidsroom +</verb></tscreen> + +3. Dump the database. +<tscreen><verb> +$ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql +</verb></tscreen> + +4. Rename the host in the database. First, ensure that the new hostname +you'll be using isn't already in the database. +<tscreen><verb> +$ grep kidsroom mythtv_backup.sql +</verb></tscreen> +Now we're actually going to change the name. The following should all be +typed on the same line: +<tscreen><verb> +$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql +</verb></tscreen> +If you don't feel comfortable using <bf>sed</bf>, you can open the +<tt>mythtv_backup.sql</tt> file in a text editor and perform a global search +and replace. When saving the file, make sure you use the new name, +<tt>mythtv_restore.sql</tt> or the rest of the steps below will fail. + +5. Drop and recreate the database. +<tscreen><verb> +$ mysql -u root +mysql>drop database mythconverg; +mysql>create database mythconverg; +mysql>exit +</verb></tscreen> + +6. Restore the database using your edited version. +<tscreen><verb> +$ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql +</verb></tscreen> + +If you are running slave backends or frontends, don't forget to re-enable +access as detailed in <ref id="modify_perm_mysql" name="Modifying access to +the MySQL database for multiple systems">. + +7. Start the backends. If you use init scripts, do the following, otherwise +start them from terminal consoles. +<tscreen><verb> +# /etc/init.d/mythbackend start +</verb></tscreen> + +8. Quit and restart all frontends. Delete the <tt>mythtv_backup.sql</tt> +and <tt>mythtv_restore.sql</tt> files. + +<sect1>Can I run MythTV on my TiVo? +<sect1>Can I run MythTV on my ReplayTV? +<p>No. + +While it is true that the TiVo runs the Linux kernel, and TiVo has released +their changes to the kernel under the GPL, the TiVo is <em>not</em> a +general-purpose computer, and there is no programming information available +for the custom hardware contained within a TiVo. TiVo is under no +obligation to release the source code to their <em>application</em>. + +The ReplayTV runs VxWorks, a Real Time Operating System from Wind River +Systems. +<sect1>Can a wireless connection be used between the frontend and the backend? +<p>Yes, assuming that your wireless connection has sufficient bandwidth to +maintain the datarate between the frontend and the backend. 802.11b should +be sufficient if the encoded bitrate of the content is less than the +datarate of your wireless connection, which in the case of 802.11b would be +approximately 4 Mbps. (The advertised rate of 11Mbps gives an actual +throughput of 4 Mbps.) 802.11a and 802.11g, if operating in their high-speed +modes, or proprietary 802.11b "Turbo" schemes should be adequate. Multiple +wireless frontends, poor signal strength or other factors can severely +impact the viewing experience on the frontend. + +<sect1>How can I burn shows that I have recorded to a DVD? +<p>Use the mytharchive plugin. + +<sect1>Using the DBoxII within MythTV +<p>The configuration of the DBoxII for use within MythTV is tricky (as of +May 16 2005), that's why it's covered here. Your DBoxII has to be running +linux and the Neutrino GUI instead of the stock BetaNova firmware. For +further information, please refer to <url url="http://www.tuxbox.org" +name="http://www.tuxbox.org">. Additionally, you need to enable the SPTS +mode in Neutrino. + +<itemize> +<item>Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 Input", +the other values have to be adjusted according to your setup. +The default values, except for the "DBOX2 host ip", should work fine. +<item>Define a new video source. It doesn't need to be configured, +you just need to define it. MythTV grabs the EPG from the DBoxII. +<item>Connect the DBoxII to the newly defined input source in "input connections". +<item>Since channel scanning is not implemented yet, you need to define channels +in the "Channel Editor". Make sure that you use the same value for +"Channel Name" as on the DBoxII. You can get a list of available +channels from the web interface of Neutrino at http://ip-of-your-box:80/. +Associate the channel with your new video source and repeat when needed. +</itemize> + +You may leave the Setup now and proceed as usual. + +<sect1>What do the icons on the Watch Recordings screen mean? +<p>Press "1" or F1 to get a popup. +<sect1>What do the letters mean when I change channels? +<p>These letters let you know what's going on with the backend as it tries +to tune to a channel. + +Lower case = seen + +Upper Case = seen & good +<itemize> +<item>l/L = Lock : This could be seen by PVR-250/BTTV users +<item>a/A = PAT : Any recording transmitted in MPEG +<item>m/M = PMT : Any recording transmitted in MPEG +<item>g/G = MGT : ATSC only +<item>v/V = VCT : ATSC only +<item>n/N = NIT : DVB only +<item>s/S = SDT : DVB only +</itemize> +<sect1>What is the difference between the various Hauppauge PVR models? +<p>This is covered in the hardware section, and extensively covered on the +Hauppauge website. (<url +url="http://www.hauppauge.com/pages/compare_pvr.html" +name="http://www.hauppauge.com/pages/compare_pvr.html">) Please check the +Hauppauge website for the most accurate information. + +A PVR-150 comes in a number of versions: +<itemize> +<item>The PVR-150 (Model 1045) is the retail kit. It comes with a remote +control and an IR Blaster. It does not have a radio tuner. +<item>The PVR-150 MCE (Model 1042) will usually come in a plain white box and is +sold as an OEM device. It does not come with a remote control, since it's +usually used as the second, third, etc capture device. +<item>The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and +comes with a Microsoft Media Center remote control instead of Hauppauge's. +<item>The PVR-150 low profile (Model 1086) is a low-profile card. It has a +radio tuner and is approximately half the height of a standard card. +However, it comes with a low-profile PCI bracket, so it is not suitable for +use in a standard PCI slot without removing the bracket, which may not be +worth the trouble. +</itemize> + +A PVR-250 (Model 980) is a retail kit which comes with an IR receiver and a +remote control. + +The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 MCE does +not contain a IR receiver or a remote. + +The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function was +not connected to any output jacks, and there doesn't appear to be any way to +pull decoded video from the card, so it's a fairly useless feature. + +The PVR-350 (model 990) has the features of the PVR-250 as well as being +able to decode MPEG-2. The encode and decode functions may be used +simultaneously. The MPEG-2 decoder function gives superior video quality +compared to what you'll find on a standard video card. However, the decoder +function is only available once Linux has started, so you will not see any +boot-time messages. Also, the card is not capable of resolutions higher +than 720x480, so it cannot be used with HDTV. Make a conscious decision +(and ask for advice on the mailing list) that you want to tradeoff potential +HDTV use in the future compared to video quality. + +The X-driver for the PVR-350 support playback using Xv efficiently but does +not support any other 2D or 3D acceleration. For some application this may +place a large load on the host CPU, some will run without any problem and +others (mplayer, xine, xmame etc.) should be configured to utilize the Xv +interface. + +Note that for the PVR-350 there are some <ref id="PVR-350" name="considerations"> +regarding the way audio is handled. + +The PVR-500 is a dual-encoder version of the PVR-150 card, so you can +simultaneously record two different programs at the same time, because there +are two encoder chips on the PCI card. Hauppuage has also installed an +onboard splitter, so you can use one COAX to feed both tuners. Current +versions of the PVR-500 should come with an adapter to allow you to connect +a second S-Video or composite input, but this will take up a second PCI +slot. Early adopters may need to purchase this item separately. + +<sect1>Changing channels on an external Set Top Box +<p>If you need to use an external Set Top Box (STB), such as for satellite +TV or for digital cable you will need some way for MythTV to tell the STB to +switch to a new channel. There are several methods: +<enum> +<item>Use an IR blaster. An IR blaster is an infrared transmitter connected +to your computer. When MythTV needs to change channels it will send IR +pulses, thereby emulating a remote control. +<item>Use a direct serial connection. Some STB's have a serial port on the +back, although it may not look like a serial port. It may look like a phone +jack, or a strange VGA connector. It may be labeled "Low Speed Data". A +direct serial connection is more reliable than an IR blaster. Not all STB's +that have a Low Speed Data port have it enabled; you may need to convince +your service provider to turn it on. Stating that you have a Tivo may help; +the Tivo has a direct-connect capability. +<item>Use a firewire connection. There is a <tt>6200ch.c</tt> in the MythTV +contrib directory which may work for you. +</enum> +<sect1>Configuring one machine to flag all commercials +<p>Commercial flagging can be CPU intensive. By default, the backend that +created a recording is the one which will flag commercials. You may wish to +use a different machine to run commercial flagging. + +On the slower machine: + +Start the mythtv-setup program. Advance through the pages until you get to +the Job Queue page. Turn off the setting that says "Allow Commercial +Detection jobs", thereby preventing any commercial flagging jobs from +running on this machine. + +Next, make sure that "Run Jobs only on original recording host" is turned +OFF so that new jobs are allowed to run anywhere. + +Restart <bf>mythbackend</bf> since it only reads this setting when it starts +up. + +On the faster machine: + +Start the <bf>mythtv-setup</bf> program. Advance through the pages until +you get to the Job Queue page. Ensure that "Allow Commercial Detection +jobs" is turned ON for this machine. + +Run <bf>mythjobqueue</bf>. <bf>mythjobqueue</bf> will examine the JobQueue +and run any jobs it finds. <bf>mythjobqueue</bf> should be left running so +that it will pick up any new commercial flagging jobs that are added to the +queue, otherwise new jobs will be added to the queue and your programs won't +be flagged until you run manually run <bf>mythjobqueue</bf>. + +Using this technique it's possible to add commercial flagging machines as +needed, even on systems that aren't running a backend. It's also possible +to run the commercial flagger in a virtual machine environment such as +VMWare. + +<sect>Example Configurations. +<sect1>Logical Volume Manager (LVM) <label id="LVM"> +<!-- Contributed by Martin Smith martin at spamcop.net --> +<!-- XXXXX REMOVE ME FOR 0.22 --> +<p>LVM greatly increases the flexibility you have in managing your storage +than traditional physical partitions. This section will provide some brief +notes on how to use LVM to create storage space for your video files and how +to add additional disk space in the future. There's lots more that can be +done with LVM, so check the LVM HOWTO <url +url="http://tldp.org/HOWTO/LVM-HOWTO/" +name="http://tldp.org/HOWTO/LVM-HOWTO/"> document for details. + +<p><figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>NOTE</bf>: If you are running MythTV 0.21 and you are using LVM to +create one large filesystem to store your recordings, it's no longer +recommended that you go the LVM route. The preferred solution is to use <ref +id="storagegroups" name="Storage Groups">. They're more flexible and less +likely to lose all of your recordings if you have a drive failure. +</caption> +</figure> + +If you don't understand how to partition a drive, or how to change the +partition type you should stop and look at documentation on how to perform +these steps. + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption> +<bf>BIG FAT WARNING</bf>: Using an incorrect parameter can make your files +inaccessible, prevent your computer from booting, etc. Be careful! +</caption> +</figure> + +Make sure your kernel configuration includes LVM support or that it's +available as a module. Today, most vendors include this by default. You'll +also want to ensure that you have a copy of the LVM utilities; check your +distribution, or get the latest versions from <url +url="http://www.sistina.com/products_lvm.htm" +name="http://www.sistina.com/products_lvm.htm"> and build them manually. + +Check that the <bf>vgscan</bf> program is being run at some point during +your boot sequence - most distributions do this by default. Look for a +message during boot up that looks like this: <tt>vgscan -- reading all +physical volumes (this may take a while...)</tt> If you don't see any +messages during boot, you may need to install a LVM init script or confirm +that you have all of the LVM packages installed from your distribution. + +LVM uses a few concepts you should be familiar with before starting. +<itemize> +<item>PV (Physical Volume). The actual partition on the hard drive. +<item>VG (Volume Group). The aggregation of all the PVs make a VG. +<item>LV (Logical Volume). Subdivision of the pool of space available in +the VG into individual chunks, like /usr, /var/video, etc. +</itemize> + +The following example assumes that you want to create a LVM partition from a +chunk of space in /dev/hda5, using a reiserfs filesystem and mounted on +/var/video. You later decide to extend this filesystem by adding a new disk: +/dev/hdb. + +You need to create at least one LVM partition for a physical volume. Use +<bf>fdisk</bf> or your favorite partition editor to set the type to LVM +(0x8e). If you're using an entire disk, create one big partition rather than +using the device itself. e.g. use /dev/hdb1 not /dev/hdb. + +In the following example, you have a 15GB disk. The first 6GB are set as +your boot partition. <tt>/dev/hda2</tt> was added as an extended partition, +and within that partition you created the <tt>/dev/hda5</tt> linux (ext2) +partition. + +<tscreen><verb> +# fdisk /dev/hda + +The number of cylinders for this disk is set to 1823. +There is nothing wrong with that, but this is larger than 1024, +and could in certain setups cause problems with: +1) software that runs at boot time (e.g., old versions of LILO) +2) booting and partitioning software from other OSs + (e.g., DOS FDISK, OS/2 FDISK) + +Command (m for help): p + +Disk /dev/hda: 15.0 GB, 15000330240 bytes +255 heads, 63 sectors/track, 1823 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/hda1 * 1 764 6136798+ 83 Linux +/dev/hda2 765 1823 8506417+ 5 Extended +/dev/hda5 765 1823 8506417 83 Linux + +Command (m for help): t +Partition number (1-6): 5 +Hex code (type L to list codes): 8e + +Command (m for help): p + +Disk /dev/hda: 15.0 GB, 15000330240 bytes +255 heads, 63 sectors/track, 1823 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/hda1 * 1 764 6136798+ 83 Linux +/dev/hda2 765 1823 8506417+ 5 Extended +/dev/hda5 765 1823 8506417 8e Linux LVM + +Command (m for help): w + +# +</verb></tscreen> + +Create the LVM physical volume from the partitions (repeat if you have +multiple partitions to use): +<tscreen><verb> +# pvcreate /dev/hda5 +</verb></tscreen> +Create a LVM volume group out of this physical volume called "VGforMyth" that is +allocated in chunks that are a multiple of 64MB +<tscreen><verb> +# vgcreate VGforMyth -s 64m /dev/hda5 +</verb></tscreen> +Create a logical volume of 5GB called "video" and then create the reiserfs +filesystem and mount it: +<tscreen><verb> +# lvcreate --name video --size 5G VGforMyth +# mkreiserfs /dev/VGforMyth/video +# mount /dev/VGforMyth/video /var/video +</verb></tscreen> +Now create a 3GB volume for mythmusic files if you like: +<tscreen><verb> +# lvcreate --name music --size 3G VGforMyth +# mkreiserfs /dev/VGforMyth/music +# mount /dev/VGforMyth/music /var/music +</verb></tscreen> +Display the volume group status: +<tt># vgdisplay -v</tt> + +Now, lets suppose you want to add a 60GB hard disk to the system as hdb and +allocate 50GB of it to video storage. + +First, create a single partition /dev/hdb1 covering the whole disk and make +it type 0x8e using your partition editor. + +<tt># fdisk /dev/hdb</tt> +.... create partition, set type, save and reboot if it says you have to + +Create the new LVM physical volume: + +<tt># pvcreate /dev/hdb1</tt> + +Add the new physical volume to the volume group: + +<tt># vgextend VGforMyth /dev/hdb1</tt> + +<figure loc="here"> +<eps file="stop.eps" height="1cm"> +<img src="stop.png"> +<caption><bf>NOTE</bf>: You may get errors at this point stating that there are no +physical volumes available for adding to the LV, even though you know for a +fact that there are. You may need to specify the physical volume in the +<tt>/dev/ide/host/bus/target/lun/etc</tt> format. +</caption> +</figure> +Once you've completed one of the following two procedures, use <bf>df</bf> +to check that you've got more space. + +Make the logical volume used for video bigger: + +<tt># lvextend --size +50G /dev/VGforMyth/video</tt> +<sect2>ReiserFS +<p>Unmount, resize and remount the filesystem. Technically, you don't need to +unmount and remount the ReiserFS. +<tscreen><verb> +# umount /var/video +# resize_reiserfs /dev/VGforMyth/video +# mount /dev/VGforMyth/video /var/video +</verb></tscreen> + +<sect2>ext2 or ext3 +<p>LVM comes with a program called <bf>resize2fs</bf>. + +Unmount, resize and remount the filesystem. The filesystem <em>must</em> be +unmounted during this procedure. +<tscreen><verb> +# umount /var/video +# resize2fs --size +50G /dev/VGforMyth/video +# mount /dev/VGforMyth/video /var/video +</verb></tscreen> +<sect2>xfs +<p>XFS does not need to be unmounted to extend the size: +<tscreen><verb> +# xfs_growfs /var/video +</verb></tscreen> +<sect1>Advanced Partition Formatting <label +id="advancedpartitionformatting"> +<p>The partitions that your distribution sets up for you may not be +optimized for large files. Using LVM in conjunction with the following +techniques can be quite useful. + +Unlike a typical filesystem, a MythTV video partition is usually a very +large filesystem filled with a fairly small number of large files. +Filesystem I/O is usually not an issue, even in multi-tuner and/or +multi-frontend setups. + +There is however, one aspect of filesystem performance that can have a +bearing on the performance of MythTV. In Linux, deleting a file will +utilize I/O bandwidth until the deletion has been completed. If deleting +the file takes long enough, the video capture buffer may overrun, thereby +resulting in dropped frames. Some filesystems are faster at deleting files +than others and, for multi-gigabyte MythTV video files, these differences +can be significant. + +Fortunately, there are published tests (<url +url="http://aurora.zemris.fer.hr/filesystems/big.html" +name="http://aurora.zemris.fer.hr/filesystems/big.html">) that provide +insight into filesystem performance under conditions relevant to MythTV +usage. In addition, some limited testing (archived at <url +url="http://www.gossamer-threads.com/lists/mythtv/users/52672" +name="http://www.gossamer-threads.com/lists/mythtv/users/52672">) +with very large files (10 gigabytes) was reported in the MythTV Users +mailing list. + +<sect2>Ext2 +<p>Ext2 was the defacto standard Linux filesystem for many years. It is +stable, provides good I/O performance and can quickly delete large files. +The primary disadvantage of Ext2 is that it is not a journaling filesystem, +so a file system consistency check (fsck, which is normally only performed +after a system crash) can take many hours on a filesystem the size of a +typical MythTV partition. + +<sect2>Ext3 +<p>Ext3 is Ext2 with a journal, so your biggest gain is that in case of a +crash and reboot you won't have to wait very long for your partition to be +remounted. + +There are options available when formatting an Ext3 partition, as in: +<tscreen><verb> +# mkfs.ext3 -T largefile4 /dev/hdb1 +</verb></tscreen> + +This example assumes that <tt>/dev/hdb1</tt> has already been created using +<bf>fdisk</bf>. If you're using LVM, <tt>/dev/hdb1</tt> may be something like +<tt>/dev/VGforMyth/video</tt>. + +The "-T largefile4" option creates one inode per 4 megabytes, which can +provide a few percent more storage space. However, tests indicate that +using the "-T largefile4" option can drastically increase the amount of time +required to delete a large file and thus it should only be used with encoder +settings that produce small video files (YMMV). + +You can check on your filesystem using the <bf>dumpe2fs</bf> program. See +the man page for details. +<sect2>ReiserFS +<p>The Reiser filesystem is another journaling filesystem commonly +distributed with Linux. It is known to be an extremely efficient filesystem +and it especially excels at managing partitions containing a large number of +small files. However, tests indicate it is not the fastest at deleting very +large files. For that reason, it may not be the best choice when using +encoder bitrates that produce very large files. + +<sect2>JFS +<p>JFS (Journaling File System) is a journaling filesystem originally +developed by IBM for AIX which was later released as open source. While not +as common as Ext3 or ReiserFS, it is distributed with RedHat 9 (RH9), Fedora +Core and Mandriva as well as other distros. According to tests, JFS is the +file deletion speed king, deleting virtually any file in under one second, +even files as large as 10 gigabytes. + +<sect2>XFS +<p>XFS is a journaling file system originally developed by SGI for Irix, and +later released as open source. While not a part of the default RedHat Linux +9 or Fedora Core installation (although it is a part of Mandriva and Fedora +Core 2+), it can be easily installed via ATrpms. XFS provides deletion +speeds for large files only slightly slower than JFS. According to the test +results shown at (<url +url="http://aurora.zemris.fer.hr/filesystems/big.html" +name="http://aurora.zemris.fer.hr/filesystems/big.html">), XFS provide +higher I/O rates than JFS, albeit at a higher CPU loading. This may cause +issues if you do not have the spare CPU capacity to handle XFS, potentially +leading to dropped frames. + +<label id="migratingtoSD"> +<!-- Mostly from a post by Bruce Markey --> +<sect1>Migrating from DataDirect Labs to Schedules Direct + +<p>MythTV v0.20.2 or later is required to natively support Schedules Direct. +Code has been included to make the transition as simple as possible. + +<bf>You do not need to delete your existing video sources or add new ones!</bf> + +The following steps should work for most users: +<itemize> +<item>Create a Schedules Direct account and use the same information as your +existing lineups at Zap2It Labs. Do not add or delete channels at this +time. +<item>Shut down any running <bf>mythfrontend</bf> and <bf>mythbackend</bf> programs. +<item>Perform a backup of your existing database. See <ref id="backupdb" +name="Saving or restoring the database"> for instructions. +<item>Run <bf>mythtv-setup</bf> -> Video Sources. Change the grabber to +Schedules Direct, update the username and password fields with the account +information you created at Schedules Direct and select "Retrieve Lineups". +Click Finish. +<item>Exit <bf>mythtv-setup</bf> and run <bf>mythfilldatabase</bf>. Check +if there were any errors. +<item>Restart your <bf>mythbackend</bf> and <bf>mythfrontend</bf> programs. +</itemize> + +<sect1>Caching support for Schedules Direct +<p>MythTV 0.20.2 or later supports caching of downloaded information from +Schedules Direct, so devices that share a common source do not require +multiple downloads. + +Before beginning, perform a backup of your existing database. See <ref +id="backupdb" name="Saving or restoring the database"> for instructions. + +In the following scenario, assume that you have the following: +<enum> +<item>A PVR-150 MPEG-2 encoder card connected directly to a CATV source. +<item>A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set Top Box. +</enum> + +What we are going to do is to create a single lineup at Schedules Direct and +then create two Video Sources which use the same login information but have +different channels associated with them. + +On your Schedules Direct account, create a lineup that has all of the +channels that you can receive. Because we have a Set Top Box (STB), choose +a Digital lineup. Yes, this means that you may have 900 channels in this +lineup, but that's OK. + +Use the Schedules Direct channel editor and unselect any channels that you +can't tune without the STB. This will usually be channels higher than 125, +but check your CATV provider lineup if you're not sure. Once you've +deselected them (using a click on the first channel you can't receive and +then a shift-click on the last channel you can't receive will deselect all +the channels in between those two.) click the Save Changes button at the +bottom of the screen. + +In <bf>mythtv-setup</bf>, create a Video Source with an appropriate name. +"SD-Analog Only" will be used in this example. Click "Retrieve Lineups" +and select the digital lineup you just created at Schedules Direct. + +Click "Finish" to return to the Video sources selector and then press the +ESC key to go back to the main screen. + +Now choose Input Connections. Select the PVR-150 which is connected +directly to the CATV. Set the Video Source to "SD-Analog Only" and click +"Fetch channels from listings source". + +Set the start channel to an appropriate value. + +<bf>NOTE</bf>: There is a bug where the "Fetch" command may not work; you +can tell that the Fetch did not retrieve any channels in one of two ways: in +the text-mode console, you will see a connection to Schedules Direct, but it +doesn't appear to retrieve any channel information: +<tscreen><verb> +2007-08-25 15:03:05.526 New DB DataDirect connection +2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM +2007-08-25 15:03:05.707 New DB connection, total: 3 +2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital +2007-08-25 15:03:06.623 Data fetching complete. +2007-08-25 15:03:06.624 DataDirect: Deleting temporary files +</verb></tscreen> + +or, the "Please add channels to this source" message in the "Starting +channel" field stays on the screen. + +If either of these happens, save the information on this screen by clicking +the "Finish" button. Exit back to the Input connections screen by pressing +ESC, then select this Input Connection again. This time the Fetch will work +and the "Please add channels to this source" message will disappear. + +If you look at the text-mode console, you'll see this if the channel +retrieval is working: +<tscreen><verb> +2007-08-25 15:04:32.437 New DB DataDirect connection +2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM +2007-08-25 15:04:32.622 New DB connection, total: 3 +2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost +2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital +2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC). +2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV). +2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET). +2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO). +2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM). +2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV). +2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC). +2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN). +2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH). +</verb></tscreen> + +Repeat the Input Connection configuration for any other capture devices that +are connected directly to the CATV system. You do not need to click Fetch +once you've done one successful download of the channel information - the +Starting channel should be automatically populated. + +Go back to Schedules Direct and re-enable the channels that you had +previously deselected, then click Save Changes. + +Create a new Video Source, here called "SD-All Digital Channels". Perform +the same "Retrieve Listings" you did before. + +Go back to the Input Connections screen, select the PVR-250 which is +connected to the STB, assign the "SD-All Digital Channels" video source and +perform a retrieve channels. This will pull down the complete channel +listing, but only for <em>this</em> device. + +When <bf>mythfilldatabase</bf> runs, it will cache the "big" download which +is appropriate for the STB, and then copy the information to the channels +that can only be accessed without the STB. But by default +<bf>mythfilldatabase</bf> is going to notice that the "Analog only" video +source is missing the channels that are in the Digital lineup you created at +Schedules Direct, so we need to override the addition of new channels. + +When you run <bf>mythfilldatabase</bf> to populate your database, you'll +need to run it like this: + +<tscreen><verb> +$ mythfilldatabase --remove-new-channels +</verb></tscreen> + +You will also need to modify how the <bf>mythbackend</bf> calls +<bf>mythfilldatabase</bf> when it performs its automatic listings update. + +In <bf>mythfrontend</bf>, select "Setup" -> "General". + +Continue press ENTER until you reach the Mythfilldatabase configuration +screen. In the "mythfilldatabase Arguments" field, type +--remove-new-channels + +then press the TAB key until you reach Finish, then press ENTER to save. +You can then press ESC until you return to the main screen. +</article> +<!-- Revision History + +v0.21.00, 2008-03-10. Initial version for 0.21. Update link to ATSC +devices. Add note that ivtv driver is in kernel. Add note that xbox +mini-distribution site appears dead. Update information on HVR-1600. +Update minimum MySQL version. +v0.21.01, 2008-06-03. Add mythbuntu. +v0.21.02, 2008-06-04. Update minimyth link. +--> + +<!-- +To create documentation, run "make" in the docs/ subdirectory +--> + +<!-- Basic Style Guide for the HOWTO. + +Paths are specified with <tt> + +Program names are specified with <bf> + +Use full close tags, such as </tt> rather than the "/>" shortcut. + +For a URL link, the url= and name= should be the same. This ensures that +users who are reading the text version of the document will see what the URL +is. + +For "Notes", the format is <bf>NOTE</bf>: text here. + +label id's must be contained on one line. If they break across the right +margin the wrapped text will be considered as text and not a destination. + +Don't make a section "a" if there's no section "b". Same for numbers; no +number 1 if there's no number 2, etc. + +Itemized and enumerated items should be full sentences, and should end with +a period. + +All major sections end with a period; subsections don't. + +Dates must be in ISO8601 format YYYY-MM-DD. + +--> diff --git a/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt new file mode 100644 index 0000000..f89175c --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/mythtv-HOWTO.txt @@ -0,0 +1,9235 @@ + Installing and using MythTV + Robert Kulagowski, mailto:rkulagow@rocketmail.com + <mailto:rkulagow@rocketmail.com> + 2008-06-04, v0.21.02 + + Initially, installation of MythTV seems like a huge task. There are + lots of dependencies, and various distributions seem to do the same + thing different ways. This document will attempt to give general + installation instructions, as well as including distribution-specific + instructions where necessary. + ______________________________________________________________________ + + Table of Contents + + + + 1. First things first. + 1.1 What is MythTV? + 1.2 QuickStart + 1.3 Upgrading from previous versions + 1.4 How to obtain this document / PDF versions of this document + 1.5 Books about MythTV + 1.6 Document conventions + 1.7 Mailing lists / getting help + 1.8 IRC + 1.9 Bug database + 1.10 Contributing to this document + + 2. Introduction. + 3. Checking prerequisites. + 3.1 Hardware + 3.1.1 CPU Type and Speed + 3.1.2 Memory + 3.1.3 Hard Disk(s) + 3.1.4 Filesystems + 3.1.5 Video Capture Device + 3.1.5.1 Frame Grabbers. + 3.1.5.2 Hardware MPEG-2 encoders. + 3.1.5.3 DVB capture cards. + 3.1.5.4 HDTV. + 3.1.5.5 Firewire. + 3.1.5.6 DBoxII or other devices running Neutrino + 3.1.5.7 USB Capture Devices. + 3.1.5.8 IP Recorder (RTSP, RTS, UDP) + 3.1.6 Hardware known NOT to work and other issues + 3.1.7 Sound card + 3.1.8 Video Display Card + 3.1.9 Cards with TV-out + 3.1.9.1 ATI + 3.1.9.2 NVIDIA + 3.1.9.3 Hauppauge PVR-350 + 3.1.9.4 Other Options + 3.1.10 External Adapters + 3.2 Software + 3.2.1 Pre-compiled packages + 3.2.1.1 Red Hat Linux / Fedora Core + 3.2.1.2 Mandriva + 3.2.1.3 Debian + 3.2.2 Manual installation + 3.2.3 Command-line installation + 3.2.3.1 Mandriva + 3.2.3.2 Gentoo. + 3.2.3.3 Debian. + + 4. System Configuration Requirements for Compiling MythTV. + 4.1 Software requirements for compiling MythTV + 4.1.1 General requirements + 4.2 Shared-Library requirements for MythTV + 4.2.1 Modifying /etc/ld.so.conf + 4.3 Environment variable requirements for MythTV + 4.3.1 General requirements + 4.3.1.1 QT libraries and binaries + 4.3.2 Distribution-Specific Notes + 4.3.2.1 Mandriva + 4.3.3 Device Permissions + + 5. Downloading and compiling. + 5.1 Building LAME + 5.2 XMLTV + 5.2.1 Red Hat Linux and Fedora Core: + 5.2.2 Mandriva + 5.2.3 Manual installation + 5.3 Configuring the Schedules Direct service + 5.4 Manually building MythTV + 5.4.1 Enabling real-time scheduling of the display thread. + 5.4.1.1 rlimits + 5.4.1.2 realtime module + 5.4.1.3 run as root option (not safe) + 5.4.2 Frontend-only configuration + 5.5 Gentoo + + 6. MySQL. + 6.1 Distribution-specific information + 6.1.1 Mandriva + 6.1.2 Red Hat Linux and Fedora Core + 6.1.3 Gentoo + 6.2 Setting up the initial database + 6.2.1 Mandriva and Red Hat Linux/Fedora Core + 6.2.2 Debian 3.0 + 6.2.3 Gentoo + 6.2.4 Modifying access to the MySQL database for multiple systems + + 7. Configuring Sound. + 7.1 Graphically setting up the mixer + 7.1.1 Mandriva and Red Hat Linux/Fedora Core + 7.1.1.1 Using ALSA. + 7.2 Setting the mixer from the command line + + 8. Setting up a remote control. + 8.1 Gentoo + 8.2 Obtaining and compiling lirc + 8.3 Completing the lirc install + 8.4 Additional information for lirc + 8.5 Configuring lirc for use with an IR blaster + + 9. Configuring MythTV. + 9.1 Configuring the Master backend system + 9.1.1 General + 9.1.2 Capture Cards + 9.1.3 Video Sources + 9.1.4 Input Connections + 9.1.5 Channel Editor + 9.1.6 Storage Groups + 9.1.6.1 Introduction. + 9.1.6.2 How to use Storage Groups. + 9.1.6.3 Migrating to Storage Groups. + 9.1.6.4 Advanced: Algorithm used by the Storage Group + 9.2 Post-configuration + 9.3 Configuring a non-master backend + 9.4 Configuring and running mythfilldatabase + 9.4.1 Periodically running mythfilldatabase + 9.5 Grabbing channel icons for Schedules Direct users + + 10. Configuring mythfrontend. + 10.1 General + 10.2 Appearance + 10.3 Program Guide + 10.4 Playback + 10.4.1 Video Filters + 10.4.2 Applying filters + 10.4.3 Currently Available Filters + 10.4.4 Usage Considerations + 10.5 Recording + 10.6 Xbox Frontends + + 11. Using MythTV. + 11.1 Keyboard commands + 11.1.1 mythfrontend + 11.1.2 Watching TV or a recording + 11.1.3 Watching TV only + 11.1.4 LiveTV Browse Mode + 11.1.5 Playback Recording Zoom Mode + 11.1.6 If you have two or more tuner cards + 11.1.7 Watching a recording only + 11.1.8 EPG + 11.1.9 Setting Program or Channel Recording Priorities + 11.1.10 Viewing Scheduled Recordings/Resolving Conflicts + 11.1.11 Viewing Search Listings + 11.1.12 Recording Profiles Setup Screen + 11.1.13 Recording Groups + 11.1.14 Watch Recordings Screen + 11.1.15 Remote Controls + 11.2 Using themes with MythTV + 11.3 Adding DishTV information to the database + 11.4 Adding support for an external tuner + 11.5 Using Shutdown/Wakeup + 11.5.1 A deeper look into the operation + 11.5.2 Setting up the MythTV side of this extension. + 11.5.2.1 Using WOL to wake your Master backend. + 11.5.2.2 Using BIOS wakeup to wake your Master backend. + 11.5.3 Wakeup the MySQL server using WOL + 11.5.4 Tips/Tricks: + 11.6 Controlling the mythfrontend via telnet + + 12. Scheduling Recordings. + 12.1 Record Types + 12.2 Scheduling Options + 12.2.1 Priority + 12.2.2 Duplicates + 12.2.3 Conflicts + 12.2.4 Scheduling decisions + 12.2.5 Reschedule Higher Priorities + 12.2.6 Controlling Your Schedule + 12.3 Storage Options + 12.3.1 Recording Profile + 12.3.2 Recording Group + 12.3.3 ANAME CDATA Storage Groups(REF)REF + 12.3.4 Playback Group + 12.3.5 Auto-Expire + 12.3.6 Episode Limit + 12.4 Post Recording Processing + 12.4.1 Commercial Flagging + 12.4.2 Transcoding + 12.4.3 User Jobs + 12.5 Advanced Recording Options + 12.5.1 Creating Power Search rules with Custom Record + 12.5.2 Getting Started + 12.5.3 How it Works + 12.5.4 Common Tricks and Tips + 12.5.5 Working with SQL + 12.6 Scheduling with more than one Input + 12.6.1 Mutually Exclusive Inputs + 12.6.2 Stations, Channels and Video Sources + 12.6.3 Order of Inputs + 12.6.4 Matching Callsigns + 12.6.5 Using Priorities to Prefer an Input + 12.6.6 Input Priority + 12.6.7 Channel Priority + 12.6.8 Preferred Input + 12.6.9 HDTV Priority + 12.6.10 Custom Priority + + 13. MythPlugins. + 14. MythWeb. + 14.1 Installation and prerequisites + 14.1.1 Mandriva + 14.2 Completing the installation + 14.3 Resetting the key binding table + 14.4 Resetting the theme. + + 15. MythGallery. + 15.1 Installation and prerequisites + 15.2 Using MythGallery + 15.3 Importing Pictures + + 16. MythGame. + 16.1 Setup Directory Structure + 16.2 Download and Install xmame + 16.3 Download extra files + 16.4 Download and Install MythGame. + 16.5 Setup xmame in MythGame + 16.6 Hints: + + 17. MythMusic. + 17.1 Manual installation of prerequisites + 17.2 Mandriva + 17.2.1 Additional options with MythMusic + 17.3 Red Hat Linux 9 + 17.4 Compiling MythMusic + 17.5 Configuring MythMusic + 17.6 Using MythMusic + 17.7 Troubleshooting MythMusic + 17.7.1 When I run MythMusic and try and look up a CD, I get an error message + + 18. MythWeather. + 19. MythVideo. + 20. MythDVD. + 20.1 Manual Compilation of Prerequisites + 20.2 Pre-compiled binaries + 20.3 Running the Myth Transcoding Daemon + + 21. MythNews. + 22. Troubleshooting. + 22.1 Compiling + 22.1.1 Compile errors + 22.1.2 make: *** No rule to make target /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop. + 22.1.3 make: *** No rule to make target /mkspecs/default/qmake.conf', needed by Makefile'. Stop. + 22.1.4 Internal Segmentation Fault. + 22.2 Debugging + 22.2.1 MythTV segfaults + 22.2.2 MythTV isn't doing anything + 22.2.3 Debugging with GDB + 22.2.4 MythTV is crashing your system + 22.3 Installing + 22.3.1 When trying to run mythtv-setup, you get an error like this: "mythtv-setup: error while loading shared libraries:" + 22.4 Using + 22.4.1 No programs are displayed in "Watch Recordings" + 22.4.2 MySQL not connecting correctly + 22.4.3 MySQL database is corrupt + 22.4.4 Using a MPEG-2 encoder card and the video appears "jittery" + 22.4.5 Using a MPEG-2 encoder card and the video is jumping up and down + 22.4.6 Screen goes blank but returns when mouse is moved or keyboard is used + 22.5 Miscellaneous + 22.5.1 mythfilldatabase failing + 22.5.2 Fast CPU, choppy or jittery video + 22.5.3 Frontend appears to be slow at jumping / seeking. + 22.5.4 On-screen Display shows incorrect program length. + 22.5.5 Troubleshooting audio + 22.5.6 Mythbackend reports that your card is not reporting full duplex capabilities + 22.5.7 The mythbackend program told me to look at this section + 22.5.8 My remote doesn't work / works sometimes and not others / "ghost" keypresses + 22.5.9 Where's "canada-cable"? + 22.5.10 Channels are off by one + 22.5.11 Mythweb is showing a db_open error when I connect to it + 22.5.12 Mouse pointer disappears when placed over the MythTV windows + 22.5.13 What does "strange error flushing buffer" mean on the console? + 22.5.14 Can't change the channel when watching Live TV. + 22.5.15 Screen goes black when you try to play something + 22.5.16 Poor performance with NVidia cards and XvMC + 22.5.17 Computer is loading a media player application when you insert a CD or DVD + + 23. Miscellaneous. + 23.1 I'd like to watch the files without using MythTV / I'd like to convert the files to some other format + 23.1.1 mythtranscode example + 23.2 Using a different window manager + 23.3 What capture resolution should I use? How does video work? + 23.4 MythTV GUI and X Display Sizes + 23.4.1 X Dimensions + 23.4.2 MythTV Dimensions + 23.4.3 Overscan Dimensions + 23.5 Saving or restoring the database + 23.6 Deleting the MySQL database + 23.7 Moving your data to new hardware + 23.8 btaudio + 23.9 Removing unwanted channels + 23.10 NFS + 23.11 Automatically starting mythfrontend at system boot time + 23.12 Automatically starting mythbackend at system boot time + 23.12.1 Red Hat And Mandriva + 23.12.1.1 Log files + 23.12.1.2 Mandriva + 23.12.2 Gentoo + 23.13 Advanced Backend Configurations + 23.14 Using the transcoder + 23.14.1 Configuring Recording Profiles to Allow Transcoding + 23.14.2 Configure Transcoding Profiles + 23.14.3 Create/Alter Scheduled Recordings to Enable Transcoding + 23.14.4 Manual Transcoding + 23.15 Changing your hostname + 23.16 Can I run MythTV on my TiVo? + 23.17 Can I run MythTV on my ReplayTV? + 23.18 Can a wireless connection be used between the frontend and the backend? + 23.19 How can I burn shows that I have recorded to a DVD? + 23.20 Using the DBoxII within MythTV + 23.21 What do the icons on the Watch Recordings screen mean? + 23.22 What do the letters mean when I change channels? + 23.23 What is the difference between the various Hauppauge PVR models? + 23.24 Changing channels on an external Set Top Box + 23.25 Configuring one machine to flag all commercials + + 24. Example Configurations. + 24.1 Logical Volume Manager (LVM) + 24.1.1 ReiserFS + 24.1.2 ext2 or ext3 + 24.1.3 xfs + 24.2 Advanced Partition Formatting + 24.2.1 Ext2 + 24.2.2 Ext3 + 24.2.3 ReiserFS + 24.2.4 JFS + 24.2.5 XFS + 24.3 Migrating from DataDirect Labs to Schedules Direct + 24.4 Caching support for Schedules Direct + + + + ______________________________________________________________________ + + 1. First things first. + + + + NOTE: Please note that I, Robert Kulagowski, am NOT the + author/programmer of the MythTV application! I can not give you + personalized installation support. If you are having issues + installing MythTV you should examine the archives, or post your + question to the MythTV-users mailing list. If you send me "Does + MythTV work with 'X'"? messages - I will simply instruct you to ask + your question on the mythtv-users mailing list. + + 1.1. What is MythTV? + + MythTV is a GPL licensed suite of programs that allow you to build the + mythical home media convergence box on your own using Open Source + software and operating systems. MythTV is known to work on Linux and + Mac OS X (PowerPC and Intel). It does not run on Windows. + + MythTV has a number of capabilities. The television portion allows + you to do the following: + + +o You may pause, fast-forward and rewind live Television. + + +o You may install multiple video capture cards to record more than + one program at a time. + + +o You can have multiple servers (called "backends"), each with + multiple capture cards in them. All scheduling is performed by the + Master backend, which arbitrates which recording will be performed + by each device. All recording requests are managed by the Master + backend, so you can schedule a recording from any client. + + +o You can have multiple clients (called "frontends" in MythTV + parlance), each with a common view of all available programs. Any + client can watch any program that was recorded by any of the + servers, assuming that they have the hardware capabilities to view + the content; a low-powered frontend will not be able to watch HDTV, + for example. Clients can be diskless and controlled entirely by a + remote control. + + +o You may use any combination of standard analog capture card, + MPEG-2, MJPEG, DVB, HDTV, USB and firewire capture devices. With + appropriate hardware, MythTV can control set top boxes, often found + in digital cable and satellite TV systems. + + +o Program Guide Data in North America is downloaded from + schedulesdirect.org, a non-profit organization which has licensed + data from Tribune Media Services. This service provides almost two + weeks of scheduling information. Program Guide Data in other + countries is obtained using XMLTV. MythTV uses this information to + create a schedule that maximizes the number of programs that can be + recorded if you don't have enough tuners. + + +o MythTV implements a UPNP server, so a UPNP client should + automatically see content from your MythTV system. + + Other modules in MythTV include: + + +o MythArchive, a tool to create DVDs + + +o MythBrowser, a web browser + + +o MythControls, an application to configure your remote control + + +o MythFlix, a Netflix module + + +o MythGallery, a picture-viewing application + + +o MythGame + + +o MythMusic, a music playing / ripping application which supports MP3 + and FLAC + + +o MythNews, a RSS news grabber + + +o MythPhone, phone and videophone using SIP. + + +o MythVideo, DVD ripper and a media-viewer for content not created + within MythTV + + +o MythWeather + + +o MythWeb, which allows you to control your MythTV system using a web + browser. With MythWeb, you can schedule and delete recordings, + change keybindings and more. With proper security, you may even + schedule a program over the Internet and have it immediately acted + on by the Master backend. + + 1.2. QuickStart + + Custom mini-distributions are available to make it easier to install + MythTV. A mini-distribution removes many of the "general purpose" + workstation / server software packages that may be installed by + default if you use one of the big-name OS packages. + + See http://mysettopbox.tv <http://mysettopbox.tv> if you'd like to + install a custom version of Knoppix optimized for MythTV. + + See http://www.minimyth.org <http://www.minimyth.org> if you'd like to + install MythTV onto a diskless system. + + See http://bit.blkbk.com <http://bit.blkbk.com> if you'd like to + install MythTV on a Xbox. NOTE: Site appears unmaintained. + + See http://wilsonet.com/mythtv/ <http://wilsonet.com/mythtv/> for + instructions tailored to RedHat's Fedora Core distribution. + + See http://www.mythbuntu.org <http://www.mythbuntu.org> if you'd like + to install a customized version of Ubuntu optimized for MythTV. + + There is a MythTV wiki at http://wiki.mythtv.org + <http://wiki.mythtv.org>. + + If you are installing this version for Schedules Direct support, + please see the ``Migrating from DataDirect Labs to Schedules Direct'' + section for additional information. + + + 1.3. Upgrading from previous versions + + The upgrade from previous versions should be transparent. Any changes + to the database structure should be applied automatically. + + It is strongly recommended that you back up your database before + installing a new version of MythTV. + + See ``Saving or Restoring the database'' for instructions. + + + 1.4. How to obtain this document / PDF versions of this document + + This HOWTO document is maintained at the primary MythTV website: + http://www.mythtv.org <http://www.mythtv.org> by Robert Kulagowski + <mailto:rkulagow@rocketmail.com>. + + This document is available as a single-page HTML document at + http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html + <http://www.mythtv.org/docs/mythtv-HOWTO-singlehtml.html> or as a PDF + at http://www.mythtv.org/docs/mythtv-HOWTO.pdf + <http://www.mythtv.org/docs/mythtv-HOWTO.pdf>. + + This HOWTO is for MythTV v0.21 + + Release notes for this version may be found in the MythTV Wiki at + http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21 + <http://www.mythtv.org/wiki/index.php/Release_Notes_-_0.21> + + + 1.5. Books about MythTV + + If you would like to purchase a book specifically about MythTV: + + + +o Hacking MythTV, ISBN 978-0470037874 by Wilson, Tittel, Wright and + Korelc + + +o Practical MythTV: Building a PVR and Media Center PC, ISBN + 978-1590597798 by Smith and Still + + + 1.6. Document conventions + + The following conventions are used throughout this document. + boldface - used for program names. + typewriter - used for program paths. + emphasis - Pay attention here. + + + + Pay more attention. + + + + Ignore at your own peril. + + + + Feature that has been added to SVN (subversion, a revision control system) + but is not available in the current release. + + + + 1.7. Mailing lists / getting help + + It's recommended that you join the user list at + http://www.mythtv.org/mailman/listinfo/mythtv-users + <http://www.mythtv.org/mailman/listinfo/mythtv-users>. The developer + list is at http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev + <http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev>. Please keep + the developer list strictly for development-related issues. + + Searchable archives for the lists are available at + http://www.gossamer-threads.com/lists/mythtv/ <http://www.gossamer- + threads.com/lists/mythtv/>. + + + 1.8. IRC + + There are two IRC channels dedicated to MythTV which can be found on + irc.freenode.net + + +o mythtv + + +o mythtv-users + + The mythtv channel is where the developers discuss code. It is not a + user-support channel. Please don't ask non-development related + questions there. + + + + Really. Even if there's no one in the mythtv-users IRC group or everyone + seems to be ignoring you. + + + 1.9. Bug database + + If you feel you need to contribute to a bug database, use the MythTV + bug ticketing system at http://svn.mythtv.org/trac + <http://svn.mythtv.org/trac>. + + Good entries will contain the following: + + 1. Qt version + + 2. Linux distribution + + 3. gcc version + + 4. the last entry in config.log to detail how you compiled + + 5. MythTV version numbers (e.g.from mythfrontend --version) + + 6. Hardware + + 7. How you are able to reproduce the bug + + See the instructions on how to debug in ``Section 22''. + + The bug database is not a chat room, so restrict your entries to what + is relevant. It's also not a repository of feature requests; a + feature request without an accompanying patch file to implement that + feature will be quickly closed. There is a feature wishlist on the + wiki at http://www.mythtv.org/wiki/index.php/Feature_Wishlist + <http://www.mythtv.org/wiki/index.php/Feature_Wishlist>. There is no + guarantee that anything on the wishlist will ever get code written to + implement it. + + If a developer closes out your bug, it's likely you didn't provide + enough information. Don't re-open a bug without providing additional + information. + + + 1.10. Contributing to this document + + Contributions to the HOWTO are welcome, especially if you find a + grammatical or spelling error, or if the wording of something is just + plain confusing. + + If you'd like to make a new contribution, create a ticket at + http://svn.mythtv.org/trac <http://svn.mythtv.org/trac> and click "New + Ticket". The type should be set to "patch" and the owner set to + "rkulagow" to ensure that I see your contribution. + + Please send it as either SGML or as plain text. NO HTML. The source + used to create the HOWTO is in SGML / Linuxdoc. Do not be afraid of + SGML! A quick look at the source of this HOWTO will show that it is + not difficult, because there aren't that many tags to worry about, so + at least try to submit as SGML. See the Linuxdoc HOWTO at + http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html + <http://www.tldp.org/HOWTO/Howtos-with-LinuxDoc.html> for information + on the linuxdoc format itself, or look at the mythtv-HOWTO.sgml file + as an example. + + To create the actual patch, run diff -u origfilename newfile > + doc.patch and attach your contribution to the trac ticket. + + + 2. Introduction. + + This HOWTO document will focus on manually building MythTV in a North + American environment. If you have installation instructions for a + different region or Linux distribution, please send them to the author + so that it can be included in other versions of this document. + + + 3. Checking prerequisites. + + You must ensure that any firewalls (either hardware, or a software + firewall installed by your distribution) will not block access to the + ports that will be used by the MythTV clients and servers on the + "inside" LAN. The ports for MySQL (TCP port 3306) and mythbackend + (TCP ports 6543 and 6544) must be open. It is strongly recommended + that you do not expose the MythTV and MySQL ports to the Internet or + your "Outside" LAN. + + + 3.1. Hardware + + Hardware selection is a complex topic, one this HOWTO will only + discuss briefly and in general terms. The following subsections offer + some general guidance but stop short of offering specific + recommendations. + + For a good MythTV experience, you must understand that MythTV + exercises your hardware more than a typical desktop. Encoder cards + generate DMA across the PCI bus. The CPU is busy encoding / decoding + video. Hard drives are constantly reading and writing data. Building a + MythTV system on older / "spare" hardware may be an exercise in + frustration and can waste many hours of valuable time. + + For more detail about actual configurations that others have used, + Mark Cooper has setup a hardware database at + http://pvrhw.goldfish.org/ <http://pvrhw.goldfish.org/>. The website + will let you browse what other users have reported as their hardware + configuration, and how happy they are with the results. + + If you have specific questions about the suitability of specific + hardware choices, you can consult the archives of the mythtv-users + mailing list at http://www.gossamer-threads.com/lists/mythtv/ + <http://www.gossamer-threads.com/lists/mythtv/> or post a question to + the list. + + 3.1.1. CPU Type and Speed + + Selection of CPU type and speed is one of the trickiest elements of + hardware selection, mainly because there are so many tradeoffs which + can be made. For example, if you have plenty of CPU, you can use + higher bitrates or capture sizes, etc. + + MythTV has two modes of operation. First, it can function as a + software video encoder, which means that it uses a fairly generic + "dumb" video capture card to get frames of video, encodes them using + the CPU on your motherboard and writes them to disk. High-end video + capture cards and devices like the TiVo and ReplayTV have dedicated + encoder chips which use specialized hardware to convert the video + stream to the MPEG-2 format without using the motherboard CPU. The + main CPU has the responsibility of running the Operating System and + reading and writing the encoded frames to the disk. These tasks have + fairly low CPU requirements compared to encoding video, which is why a + device like a Series 1 TiVo can run with only 16MB of RAM and a 54MHz + CPU. + + There are many variables that go into the question: "How fast a CPU do + I need to run MythTV"? Obviously, the faster your CPU, the better + your experience will be with MythTV. If you are using the software + MPEG-4 encoder and performing the "Watch TV" function, where the CPU + is both encoding and decoding video simultaneously to allow Pause, + Fast Forward and Rewind functions for live TV requires more CPU then + just encoding or decoding. MythTV also supports multiple encoder + cards in a single PC, thereby increasing the CPU requirements if you + plan on simultaneously encoding multiple programs. As a general + guideline, plan on 1GHz per encoder if you are doing software-based + encoding, less if you are using a hardware-based encoder. + + Here are a few data points: + + +o A PIII/733MHz system can encode one video stream using the MPEG-4 + codec using 480x480 capture resolution. This does not allow for + live TV watching, but does allow for encoding video and then + watching it later. + + +o A developer states that his AMD1800+ system can almost encode two + MPEG-4 video streams and watch one program simultaneously. + + +o A PIII/800MHz system with 512MB RAM can encode one video stream + using the RTjpeg codec with 480x480 capture resolution and play it + back simultaneously, thereby allowing live TV watching. + + +o A dual Celeron/450MHz is able to view a 480x480 MPEG-4/3300kbps + file created on a different system with 30% CPU usage. + + +o A P4 2.4GHz machine can encode two 3300Kbps 480x480 MPEG-4 files + and simultaneously serve content to a remote frontend. + + The second mode of operation is where MythTV is paired with a + hardware-based video encoder, such as a Matrox G200 or a Hauppauge + WinTV-PVR-150/250/350/500. In this mode, because the video encoding + is being done by a dedicated video processor, the host CPU + requirements are quite low. See the ``Video Capture Device'' section + for details. + + The price differential between a frame grabber and a card that + implements hardware MPEG-2 encoding, such as the Hauppauge PVR-x50 + series, is now less than $30 US. Primary development in MythTV has + transitioned to supporting MPEG-2 capture devices and HDTV, so if + given the option, go with the hardware MPEG-2 encoder. + + If you have a Via M10000 series or a Hauppauge PVR-350, MythTV can use + the hardware-based video decoder for playback, which further reduces + CPU requirements. + + + 3.1.2. Memory + + A MythTV host that is both a backend and a frontend and using software + encoding with a single capture card should run adequately in 256MB of + RAM. Additional RAM above 256MB will not necessarily increase + performance, but may be useful if you are running multiple encoders. + + + 3.1.3. Hard Disk(s) + + Encoded video takes up a lot of hard disk space. The exact amount + depends on the encoding scheme, the size of the raw images and the + frames per second, but typical values for MythTV range from 700 + megabytes/hour for MPEG-4, 2 GB/hour for MPEG-2 and RTjpeg and 7 + GB/hour for ATSC HDTV. + + + + NOTE: You must use DMA for hard drive access to prevent + choppy or jittery video. Not all distributions enable DMA at boot + time. See the Troubleshooting Section for ``instructions'' on how to + do this. + + Writing video to disk is sensitive to timing issues; RTjpeg requires + less CPU with the tradeoff being larger files and needing to write to + the disk faster. MPEG-4 requires more CPU, but the files are smaller. + At the default resolution, MPEG-2 creates the largest files of all + with almost no CPU impact. + + See the Troubleshooting ``section'' for more information. + + + 3.1.4. Filesystems + + MythTV creates large files, many in excess of 4GB. You must use a 64 + or 128 bit filesystem. These will allow you to create large files. + Filesystems known to have problems with large files are FAT (all + versions), and ReiserFS (versions 3 and 4). + + Because MythTV creates very large files, a filesystem that does well + at deleting large files is important. Numerous benchmarks show that + XFS and JFS do very well at this task. You are strongly encouraged to + consider one of these for your MythTV filesystem. JFS is the absolute + best at deletion, so you may want to try it if XFS gives you problems. + MythTV .21 incorporates a "slow delete" feature, which progressively + shrinks the file rather than attempting to delete it all at once, so + if you're more comfortable with a filesystem such as ext3 (whose + delete performance for large files isn't that good) you may use it + rather than one of the known-good high-performance file systems. + There are other ramifications to using XFS and JFS - neither offer the + opportunity to shrink a filesystem; they may only be expanded. + + + + NOTE: You must not use ReiserFS v3 for + your recordings. You will get corrupted recordings if you do. + + Because of the size of the MythTV files, it may be useful to plan for + future expansion right from the beginning. If your case and power + supply have the capacity for additional hard drives, read through the + ``LVM'' and ``Advanced Partition Formatting'' sections for some + pointers. + + + 3.1.5. Video Capture Device + + In order to capture video, MythTV will need one or more video capture + devices with Linux drivers. There are a number of classes of hardware + available for capturing video. + + 3.1.5.1. Frame Grabbers. + + This class of card is the simplest and is usually the cheapest. There + is no on-board encoding of the analog video; hardware known as a + Digital-Analog Converter (DAC) takes the video and presents it to the + computer in an essentially raw digital form. + + For a list of video capture cards known to work with Linux, please see + /usr/src/linux/Documentation/video4linux/bttv for a partial listing; + even if your specific card is not listed, it may be that the vendor is + actually using a standard reference design and placing their own name + on it. See the video4linux mailing list + (https://listman.redhat.com/mailman/listinfo/video4linux-list + <https://listman.redhat.com/mailman/listinfo/video4linux-list>) for + more information and for specific hardware questions. + + The most common inexpensive cards available use the Bt848, Bt878 or + CX2388x series of video capture chips; examples are the "Hauppauge + WinTV Go" card and the "AverTV Desktop PVR" card, both of which use + the bttv kernel module. + + + ______________________________________________________________________ + NOTE: The ATI TV Wonder series and the ATI All-in-Wonder series of cards + are not the same. The All-in-Wonder cards will not work with MythTV. + ______________________________________________________________________ + + + + NOTE: The ATI All-in-Wonder cards (which are not the same + as the ATI TV Wonder, TV Wonder VE or TV Wonder Pro) will not work as + a MythTV capture device because the GATOS http://gatos.sourceforge.net + <http://gatos.sourceforge.net> drivers that are available provide only + a limited subset of the V4L API. The TV Wonder series of cards are + supported by the Bt8x8 Video4Linux driver. + + After you have installed a suitable capture device, you can check that + the kernel sees it with lspci. Look for an entry labeled "Multimedia + video controller". To get more detailed information about the card, + use lspci -v or lspci -vv. Ensure that your system is loading the + bttv modules by typing: + + + # lsmod |grep bttv + + + + You want to see the bttv module listed. + + 3.1.5.2. Hardware MPEG-2 encoders. + + While inexpensive video-capture cards simply capture raw frames, + leaving encoding to software, some higher-end cards incorporate + hardware-based encoding. Using either a G200 MJPEG encoder card, or a + MPEG-2 encoder card supported by the IvyTV project + http://ivtvdriver.org <http://ivtvdriver.org/> such as the Hauppauge + PVR-150/250/350/500, Avermedia M179, Hauppauge "Freestyle" or Yuan + M600 cards will allow you to use dedicated hardware encoders rather + than your CPU. (The PVR-350 can simultaneously be used as an output + device.) Using the on-board MPEG-2 encoder greatly reduces the CPU + requirements for encoding. + + The ivtv driver was incorporated into the Linux kernel starting at + v2.6.22. + + There is a Beta driver for the HVR-1600 card at + http://www.ivtvdriver.org/index.php/Cx18 + <http://www.ivtvdriver.org/index.php/Cx18> + + NOTE: Motherboards with the Via chipset are notoriously bad with DMA + and have caused numerous issues with ivtv, including hard locks. See + the ivtv website http://ivtvdriver.org <http://ivtvdriver.org> for the + latest information on what works and what doesn't. + + Here are some data points for encoding: + + +o A Celeron 450 uses 2% CPU for encoding a 480x480 16Mbps MPEG-2 + stream. + + Here are some data points for decoding: + + + +o An Athlon 1800XP can decode a 720x480 8Mbps MPEG-2 file using 10% + CPU + + +o An Athlon 1GHz can decode a 720x480 16Mbps MPEG-2 file using 30-50% + CPU, can decode a 480x480 16Mbps MPEG-2 using 30% CPU and + approximately 30% for Live TV at 416x480. + + +o A P3-550 can decode a 480x480 16Mbps MPEG-2 file with 55% CPU. + + +o A Celeron 450 (no SSE) can decode a 480x480 16Mbps MPEG-2 file with + 80% CPU. + + + 3.1.5.3. DVB capture cards. + + DVB is a video standard primarily found in Europe (where it comes in + DVB-C, DVB-T and DVB-S varieties for Cable, Terrestrial and Satellite) + and is also used as the programming interface for HDTV capture cards + in Linux. To see if your DVB card is supported, see the list of cards + in the "Supported Hardware" section of the DVB Wiki at + http://www.linuxtv.org/wiki/index.php/Main_Page + <http://www.linuxtv.org/wiki/index.php/Main_Page> for more + information. + + In the United States, you may use a card such as the TwinHan to obtain + unencrypted Free-To-Air satellite channels. See + http://www.lyngsat.com/ <http://www.lyngsat.com/> for the types of + content which is available. + + + 3.1.5.4. HDTV. + + There are a number of HDTV cards with Linux drivers which are known to + operate in the United States; a complete list of cards with DVB + drivers can be found at + http://www.linuxtv.org/wiki/index.php/ATSC_Devices + <http://www.linuxtv.org/wiki/index.php/ATSC_Devices> Some cards + support capture of unencrypted digital cable TV (utilizing QAM256), + others will only work with Over The Air (aka "OTA") signals captured + with an antenna (with 8VSB). + + Cards that have been reported to work include: + + +o pcHDTV HD-2000, Air2PC PCI rev 1-3 (8VSB only) + + +o SiliconDust HDHomeRun (8VSB, QAM256) + + +o pcHDTV HD-3000/5500 (8VSB, QAM256) + + +o Air2PC HD-5000 (8VSB, QAM256) + + +o DViCO Fusion HDTV Lite/Gold 5 (8VSB, QAM256) + + NOTE: There are no known consumer-level capture devices which will + allow you to capture the HDTV output (DVI, HDMI, VGA, YPbPr / + Component) from a set-top box commonly found with digital cable + systems or satellite systems. None of the capture devices listed above + perform any encoding; they merely allow your computer to save a copy + of a HDTV stream which has already been converted to MPEG-2 at the + broadcast facility. + + NOTE:: All of the cards listed above (except for the HD-2000 and + HDHomeRun) should be configured as DVB cards. The HD-2000 can be + configured as a pcHDTV card if you use the V4L drivers from + http://www.pchdtv.com <http://www.pchdtv.com> and use Linux kernel + 2.6.9 or earlier. With kernel 2.6.10 and higher it must be configured + as a DVB card, but you lose access to the second antenna input in ATSC + mode. The HDHomeRun should be configured as two HDHomeRun cards, one + for each tuner. + + To playback HDTV content, plan on a powerful CPU. "How powerful?" + depends on a number of factors, such as the capture resolution, + whether the video is progressive or interlaced, and whether your + display card has hardware-assist support for Linux. + + The Simple Answer: Once you are in the 3.2 Ghz P4-class of CPU you + should have no issues with viewing HDTV. + + + The Complicated Answer: + + For 720p content (1280x720), a 2.4GHz P4 should be sufficient. + + For 1920x1080i->1920x1080p with the better deinterlacing methods done + in real time a 2.4GHz CPU is taxed, but should work if you use "Bob + and Weave" deinterlacing, or if you have an NVIDIA card with MPEG-2 + hardware acceleration. If you enable the hardware acceleration, you + may be able to use a 1.8GHz processor. + + + 3.1.5.5. Firewire. + + You may use the Firewire output of the Motorola DCT6200 or the SA3250. + If your provider uses 5C encryption on a particular channel, you won't + be able to get any content. + + + 3.1.5.6. DBoxII or other devices running Neutrino + + You may use the Ethernet port of an DBoxII or a similar device to + capture MPEG2. Your set top box has to be running the Neutrino GUI. + + + 3.1.5.7. USB Capture Devices. + + The Plextor ConvertX PVR devices are supported through Linux drivers + available from http://www.plextor.com/english/support/LinuxSDK.htm + <http://www.plextor.com/english/support/LinuxSDK.htm>. MythTV uses the + Plextor to capture hardware encoded MPEG-4, so the host CPU + requirements are low. + + Hauppauge WinTV-PVR-USB2 (driver available at + http://www.isely.net/pvrusb2/ <http://www.isely.net/pvrusb2/>) + emulates a PVR-x50 card. + + + 3.1.5.8. IP Recorder (RTSP, RTS, UDP) + + MPEG-2, MPEG-4 and H.264 internet TS stream recording is supported + using the IPTV recorder in MythTV. This recorder expects the channels + to be supplied as a m3u playlist. If your DSL/Fiber provider supplies + television service, but does not provide a m3u playlist for the + channels, you can construct one for your own use. You do not need to + download it from the same server as the streams themselves, and can + also read it from a file if this is more convenient. + + NOTE: Some DSL providers only allow you to use one recorder at a time, + so you may need to limit yourself to one recorder in MythTV and turn + off any set top box the cable provider sold or rented to you with your + service. This limitation is independent of the bandwidth you have + purchased. + + + 3.1.6. Hardware known NOT to work and other issues + + + +o Hauppauge WinTV-D or -HD (no driver) + + +o Hauppauge WinTV-USB series + + +o Hauppauge WinTV-PVR-usb (model 602), or WinTV-PVR-PCI (model 880) + cards (no driver - this is not the PVR-250/350 series of cards + supported by the IvyTV driver) + + + +o ATI All-in-Wonder series + + + 3.1.7. Sound card + + The system needs a sound card or an on-board equivalent on the + motherboard to play back and in most cases, to record sound. Any sound + card that can be operated by the ALSA (Advanced Linux Sound + Architecture) kernel modules will work with MythTV. However, some + cards and drivers will provide better quality or compatibility than + others. In particular, many audio devices included on motherboards + can be problematic. + + The usual practice for capturing the audio associated with the video + is to run a cable from an audio output on the video capture card to + the Line input on a sound card. However, some video capture cards + provide on-board audio capabilities that work with the kernel btaudio + module instead, thereby eliminating the need for a cable. This is + useful if you will be using multiple capture cards in a single + chassis, since each capture card will not need its own sound card. + Note that a separate sound card is still required for playback when + using btaudio, and that often the audio recorded in this way will be + mono only. See the ``btaudio'' section for more information. + + + + NOTE: Analog video capture cards are the only ones which + require a soundcard for capturing audio. DVB, HDTV, and other + hardware encoder cards all provide a combined audio / video stream. + + + + NOTE: Plugging a Line-level device into the Mic input is + not recommended. Line-level devices have higher voltages and can + damage the sound card. In addition, even if it doesn't break your + card, you will be getting Mono sound. See the Linux MP3 HOWTO at + http://www.tldp.org/HOWTO/MP3-HOWTO.html + <http://www.tldp.org/HOWTO/MP3-HOWTO.html> for additional information. + + + 3.1.8. Video Display Card + + MythTV will work with just about any video card. However, it is + highly recommended that you use a card which supports XVideo (XV) + extensions. If your card does not support XV, color conversion and + scaling will be performed by your CPU rather than the video card. + This is very CPU and memory intensive and will often result in dropped + frames and a corresponding degradation of quality. Check the X + documentation for details if you are uncertain about your preferred + card. You may also run xvinfo; look for your video card to be listed + as one of the adapters. + + + If you want to use MythTV with a standard television, you will need a + physical connection from your video card to your TV set, which can + either be a TV-out port on the card itself or an external adapter that + converts the VGA signal to an appropriate video signal. "Appropriate" + depends on a number of factors, such as video standard (NTSC vs. PAL), + the type of input connection (Composite vs. SVideo), etc. + + Note that with some video cards and X drivers, XVideo extensions are + only supported on the VGA output, and not on the TV output. + + + 3.1.9. Cards with TV-out + + The next section deals with a number of cards that are known to have + TV-out ports. The list is unlikely to be complete, so if you know of + others, please post a message to the mythtv-users mailing list so the + information can be included in future versions of the HOWTO. The list + is organized by manufacturer. + + Reports here are based on what users of the cards have posted on the + mythtv-users mailing list, so if you need configuration details, + please search the archives at http://www.gossamer- + threads.com/lists/mythtv/ <http://www.gossamer- + threads.com/lists/mythtv/> using the card name in your search string. + + + 3.1.9.1. ATI + + ATI makes many cards with TV-out capability, but only offers Linux + drivers for Radeon 8500 and above cards. See the Drivers and Software + section of http://www.ati.com <http://www.ati.com/> for the driver and + additional information. + + The enhanced ati.2 X driver created by the GATOS + http://gatos.sourceforge.net <http://gatos.sourceforge.net> project + offers some support for TV-out on other ATI cards, but only in its + "experimental" version, available through CVS. There have been reports + from people who say they have made this driver work with one or + another ATI card. For example, Bruce Markey <mailto:bjm@lvcm.com> + writes (on the mythtv-users mailing list): "I got this to work. You + can quote me on that. I've used TV-out on several models of ATI cards + both All-In-Wonder and regular cards with TV-out." See the + "Adventurous Setup" section of + http://gatos.sourceforge.net/watching_tv.php + <http://gatos.sourceforge.net/watching_tv.php> for details. Also see + http://www.retinalburn.net/linux/tvout.html + <http://www.retinalburn.net/linux/tvout.html> for more information. + + + 3.1.9.2. NVIDIA + + Some NVIDIA cards with TV-out can be run using the standard nv driver + in X, combined with the userspace application nvtv to control the TV- + out port. See http://sourceforge.net/projects/nv-tv-out/ + <http://sourceforge.net/projects/nv-tv-out/> for details. Recent + versions of the NVIDIA driver have better support for overscan and + other features useful with TV-Out, so the nvtv application may not be + required. + + Some NVIDIA cards can be run with a proprietary NVIDIA X driver made + available by NVIDIA. See http://www.nvidia.com/object/unix.html + <http://www.nvidia.com/object/unix.html> for more information. + + NOTE: It's strongly recommended that you use the proprietary NVIDIA + drivers; they have excellent support for XvMC and ship with a good + configuration utility. XvMC provides MPEG-2 hardware acceleration, + which is important if you want to display HDTV. + + + 3.1.9.3. Hauppauge PVR-350 + + MythTV supports the TV-out and MPEG-2 decoder functions in the IvyTV + driver. + The PVR-350 is unique amongst the Hauppauge PVR-x50 cards in that it + also supports audio output, but you need to connect that audio output + to something. There are two courses of action you may take: + + 1. Take the audio output from the PVR-350 and plug it into an input on + a sound card on your machine. You may then use MythTV's internal + audio controls. + + 2. Take the audio output from the PVR-350 and connect it directly to + your television / audio system. You must indicate that you are + using external audio control on the PVR-350 setup page. + + + 3.1.9.4. Other Options + + Some devices with on-board TV-out capability, such as Xboxes converted + to Linux and some laptops can be used as MythTV frontends to display + on a television screen. Please consult the mythtv-users mailing list + for messages that report the details of these special arrangements. + + + 3.1.10. External Adapters + + External adapters convert standard VGA output to a form suitable for + display on a television. The output format varies by region, since + different countries have different TV standards. People on the mythtv- + users list have mentioned these adapters: + + + +o AITech Web Cable Plus, powered by external transformer or takes + power from PS/2 keyboard connector, support resolutions up to + 1024x768, outputs composite and SVideo, provides position + adjustment. + + +o Averkey lite, powered by a USB port, has Composite, SVideo, YPbPr + outputs; pan, brightness, overscan/underscan controls; supports up + to 1024x768 outputs; and supports PAL and NTSC. + + +o ADS TV Elite XGA + + +o AverKey iMicro (comments are generally favorable) + + +o AITech Web Cable (comments are generally unfavorable, different + than the "Plus" version above) + + +o TVIEW Gold (mentioned once, favorably) + + + 3.2. Software + + There are a few ways of installing programs on Linux systems; you can + either use a pre-compiled package, or install from a tarball after + satisfying any prerequisites. + + + + NOTE: you must have the MySQL database software installed on a + system to store the master database. This does not necessarily mean + that MySQL must run on one of the MythTV boxes. The minimum MySQL + version is 5.0. + + + + 3.2.1. Pre-compiled packages + + A number of people have created pre-compiled packages for MythTV that + may make your installation easier. + + + + BIG FAT WARNING: This HOWTO assumes that you have not + installed MythTV from a package. All example command lines and file + locations are based on the MythTV tarball defaults. Some packagers + have modified the filenames, binaries and file locations to match what + is commonly found in that distribution. Any issues with MythTV + installed via a pre-compiled package MUST be raised with the packager. + + If you use any of the pre-compiled packages you may not need to + perform any additional configuration steps in this HOWTO. The next + logical step is ``configuring MySQL'', which you may or may not have + to perform. See your package documentation. + + + 3.2.1.1. Red Hat Linux / Fedora Core + + The definitive documentation on installing MythTV on Red Hat Linux / + Fedora Core can be found in Jarod Wilson's (mailto:jcw@wilsonet.com + <mailto:jcw@wilsonet.com>) HOWTO at http://wilsonet.com/mythtv/ + <http://wilsonet.com/mythtv/> Just like 3rd-party packages, any 3rd- + party documentation problems should be brought up with the 3rd-parties + (maintainer, lists, bugzillas etc.). The installation instructions + which follow should be used as a guide only; refer to Jarod's guide. + + Red Hat Linux and Fedora Core packages for MythTV and all of its add- + on modules and some themes have been packaged by + mailto:Axel.Thimm@ATrpms.net <mailto:Axel.Thimm@ATrpms.net> and are + available at http://ATrpms.net/topic/multimedia/ + <http://ATrpms.net/topic/multimedia/>. All of the prerequisites for + MythTV (such as XMLTV) are available as RPM packages. If you have + problems with the RPMs, please contact the ATrpms lists at + http://lists.ATrpms.net/ <http://lists.ATrpms.net/> or file a bug + against http://bugzilla.ATrpms.net/ <http://bugzilla.ATrpms.net/>. + + Given the large number of dependent RPMs you are advised to use tools + like apt or yum for automatic retrieval and installation of the + required RPMs. (http://ATrpms.net/install.html + <http://ATrpms.net/install.html>) In this case a special meta-package + called mythtv-suite will allow you to install all of MythTV and its + add-ons, plus all dependencies. + + If you don't have apt or yum on your machine, download and install the + atrpms-kickstart package from http://ATrpms.net/name/atrpms-kickstart/ + <http://ATrpms.net/name/atrpms-kickstart/>. Install the package with: + + + # rpm -Uvh atrpms-kickstart* + + + + Then run: + + + + # apt-get update + # apt-get dist-upgrade + # apt-get update + + + + And finally: + + + # apt-get install mythtv-suite + + + + These steps however, do NOT perform the installation of any drivers + required for ALSA, capture cards, lirc kernel modules, etc., nor do + they set up your MythTV database. Check http://ATrpms.net/topic/multi- + media/ <http://ATrpms.net/topic/multimedia/> for the drivers you need. + + + 3.2.1.2. Mandriva + + Thac has created RPMs for MythTV for Mandriva which may be obtained + from http://rpm.nyvalls.se/ <http://rpm.nyvalls.se/> If you have + problems with the RPMs, please send him email directly at + thac@nyvalls.se <thac@nyvalls.se>. + + 3.2.1.3. Debian + + Debian packages for MythTV and most of its add-on modules are + maintained by Christian Marillat mailto:marillat@free.fr + <mailto:marillat@free.fr> and are available at http://www.debian- + multimedia.org/ <http://www.debian-multimedia.org/>. Installation + instructions can be found on those pages as well. All of the + prerequisites for MythTV are available as Debian packages, most of + them from the official Debian archive. + + If you have followed the instructions on the above page you should + have added + + + deb-src http://www.debian-multimedia.org sid main + + + + to your /etc/apt/sources.list file. Running apt-get update and then + executing apt-get build-dep mythtv should install all the pre- + requisites required to compile MythTV. + + + + NOTE: Due to the requirement for Qt 3.3+, there are no packages for + Debian woody/stable. + + + The Debian packages are configured such that MythTV programs should be + run as the mythtv user, which is automatically created during + installation. This user has access to write new recordings to disk in + the default directory, read and write the database, access the audio + and video devices, and everything else that MythTV needs to do. + + See /usr/share/doc/packagename/README.Debian for more information, + including copies of the MythTV documentation. The mythtv-doc package + contains a copy of this HOWTO in /usr/share/doc/mythtv-doc. + + 3.2.2. Manual installation + + You may use the graphical tools that come with your distribution, or + you can use command-line utilities. Either system will get the job + done, and it all depends on your comfort level with Linux. + + In order to compile MythTV, we need to make sure that the software it + needs is installed. This list includes mysql, gcc, freetype2-devel, + xorg-xserver-devel, qt-devel and lame. If you're going to use a + remote control with MythTV, you're going to need the cdialog package + in order to compile lircd if your distribution doesn't have a pre- + packaged lirc. If you are using XMLTV as a grabber, you will need + perl. + + + ______________________________________________________________________ + NOTE: Qt v3.3 or higher is required. + + NOTE: MythTV DOES NOT WORK with Qt4. + + NOTE: If you are going to be using RPMs to install various + components, you should be aware that not all packages include the necessary + headers for compiling. If you're having trouble compiling, ensure + that you've installed the -devel version of a prerequisite. + ______________________________________________________________________ + + + + 3.2.3. Command-line installation + + This section details the various methods for installing prerequisites + from the command line. + + + 3.2.3.1. Mandriva + + NOTE: The following instructions should be considered out of date as + of 2006-09-10. If updated instructions are not submitted by the + release of v0.21 of MythTV they will be removed. + + urpmi is the simplest tool for installation of packages from the + command line, but properly configuring it can be difficult. The + following website http://easyurpmi.zarb.org/ + <http://easyurpmi.zarb.org/> will allow you to choose a mirror site + and then present the command-line configuration text for that mirror. + You will most likely need to add a "Contrib" mirror to your setup. If + you add a site from the "Penguin Liberation Front", you will be able + to load the lame library without compiling from source. + + Open a shell, and execute the following. You may get asked a number of + questions regarding dependencies. It's best to answer "YES". + + + $ su + # urpmi mysql gcc gcc-c++ freetype2-devel cdialog alsa-utils + # urpmi XFree86-devel perl + # urpmi libqt3-devel libMesaGLU1-devel + + + + ______________________________________________________________________ + NOTE for Mandriva 9.1+ users: execute the following command. + + # urpmi libqt3-mysql + ______________________________________________________________________ + + + However, you might get this when you execute the commands above: + + + everything already installed + + + + In that case, you're ready to move to the next ``section''. Once you + have completed installing the pre-requisites, exit out of the shell + and start a new one to ensure that any environment variables setup by + the installation have a chance to take effect. + + + 3.2.3.2. Gentoo. + + NOTE: MythTV does not run on Qt4. If Qt has not been installed on + your system: Edit /etc/make.conf and locate the "USE" variable. If the + line is commented out, remove the comment. The line should have at + least: + + + USE="mysql alsa" + + + + Next you need to build Qt. If you don't plan on using the ebuilds as + described in the Gentoo section then you also need to install lame. + + + # emerge lame mysql qt + + + + If you have already installed Qt: you will need to rebuild because the + default installation doesn't include MySQL support, a requirement for + MythTV. To enable SQL support, add "mysql" to your USE variable in + /etc/make.conf and rebuild Qt by running + + + # emerge qt + + + + All the necessary files will be downloaded and built. Even on a fast + machine this may take a lot of time if you need to do a full Qt build. + + + 3.2.3.3. Debian. + + Build-dependencies for MythTV can be satisfied by adding the following + to your /etc/apt/sources.list + + + + # Christian Marillat's packages (mplayer, lame) + deb http://www.debian-multimedia.org sid main + deb-src http://www.debian-multimedia.org sid main + + + + and executing: + + + # apt-get build-dep mythtv + # apt-get source mythtv --compile + + + + 4. System Configuration Requirements for Compiling MythTV. + + Before you compile MythTV from the current source tarball or from + subversion, you may need to modify your system configuration in a few + ways. + + In general, if you install MythTV from pre-packaged binaries for your + Linux distribution/version, you don't need to be too concerned about + the issues in this section of the HOWTO - the install script for the + packages should take care of them. However, this section is still + recommended reading which may help if the packager skipped a step in + their packaging. + + + 4.1. Software requirements for compiling MythTV + + 4.1.1. General requirements + + MythTV is written in C++ and requires a fairly complete, but standard, + compilation environment, including a recent g++ compiler, make, and + appropriate header files for shared libraries. Any standard Linux + distribution should be able to install a suitable compilation + environment from its packaging system. Section 3.2 of this HOWTO + provides some details of how to install the required environment for + many distributions. + + Subsequent sections of this chapter address the few oddities that you + may have to adjust by hand before you compile MythTV. + + The reference compilation system for MythTV is Ubuntu. + + + 4.2. Shared-Library requirements for MythTV + + 4.2.1. Modifying /etc/ld.so.conf + + The runtime manager for shared libraries, /lib/ld.so, gets information + about the locations and contents of shared libraries from + /etc/ld.so.cache, a file created by ldconfig from information in + /etc/ld.so.conf. Because MythTV installs some shared libraries in + /usr/local/lib, that directory needs to be added to the list of + directories for ld.so to search when doing runtime linking of + programs, if it is not already there. You do this, as root, by + editing /etc/ld.so.conf, then running ldconfig. There are many ways to + do this; one that works is to enter this series of commands: + + + + $ su - + # echo /usr/local/lib >> /etc/ld.so.conf + # /sbin/ldconfig + # exit + $ + + + + 4.3. Environment variable requirements for MythTV + + 4.3.1. General requirements + + 4.3.1.1. QT libraries and binaries + + The compiler needs to be able to locate QT binaries and libraries in + order to compile MythTV. QTDIR needs to be set and the directory + holding the QT binaries needs to be added to your PATH. Your + distribution may already be making these changes as a part of the + installation of the software prerequisites detailed earlier. + + One way to do this is as follows: + + Open a shell and execute the following: + + + $ echo $PATH + /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin + $ echo $QTDIR + /usr/lib/qt3 + $ which qmake + /usr/lib/qt3/bin/qmake + + + + For Mandriva, you should see a value like /usr/lib/qt3 for QTDIR and + /usr/lib/qt3/bin should be in $PATH. + + For Gentoo, you should see a value like /usr/qt/3 for QTDIR and + /usr/qt/3/bin should be in $PATH. + + If you don't, do not proceed past this step until you have resolved + this error. You may need to manually specify the QTDIR and PATH at the + shell prompt before compiling. + + Also, check that there has been a link created in /usr/lib/qt3/mkspecs + (/usr/share/qt3/mkspecs for Debian) called default. If not, you'll get + errors during the compile. See the Troubleshooting Section for more + information. + + 4.3.2. Distribution-Specific Notes + + 4.3.2.1. Mandriva + + The following instructions work for Mandriva using bash as the shell, + and may be applicable for a distribution which uses /etc/profile.d. + + + + NOTE: Mandriva 10 installs a /etc/profile.d/qtdir3.sh + file, but it doesn't include the addition of the PATH variable. If + you're running Mandriva 10, don't create a mythtv.sh file as detailed + below; edit the qtdir3.sh file and add the PATH statement within the + if / fi block. As root, create the following file in /etc/profile.d + The example filename is "mythtv.sh". Use what you feel is appropriate. + + Open a shell, and switch to superuser mode. + + + + NOTE: ^D means press CTRL and d at the same time. + + + $ su + # cd /etc/profile.d + cat > mythtv.sh + export QTDIR=/usr/lib/qt3 + export PATH=$PATH:/usr/lib/qt3/bin + ^D + + # chmod a+x mythtv.sh + # exit + $ exit + + + + The last two commands are to exit out of the shell. This way, when you + next open a shell your new commands will take effect. + + + 4.3.3. Device Permissions + + MythTV will need access to the video4linux devices on your system. By + default, your distribution may restrict access to these devices to the + logged-in user, so if you will be automatically starting mythbackend + from a script rather than an interactive terminal session you will + need to make some adjustments. + + NOTE: The following instructions are accurate for Mandriva. + + Check for a file called /etc/security/console.perms. Open the file in + your favorite text editor and look for a line that has: + + + <console> 0600 <v4l> 0600 root.video + + + + and replace it with + + + <console> 0666 <v4l> 0666 root.video + + + + What we're doing is allowing read and write access to the files in the + video4linux directory. + + 5. Downloading and compiling. + + Get MythTV from the http://www.mythtv.org <http://www.mythtv.org> web + site. There are two installation methods you may choose from. The + first is to download the latest release in tarball format and compile. + The tarball release of MythTV should work on a wide variety of systems + and should be the preferred method for new users. If you wish to use + the subversion copy of MythTV you may obtain it from + http://svn.mythtv.org <http://svn.mythtv.org> + + + + NOTE: If you are going to use subversion to + compile MythTV rather than using the distribution tarball, you must + join the http://www.mythtv.org/mailman/listinfo/mythtv-commits/ + <http://www.mythtv.org/mailman/listinfo/mythtv-commits/> and + http://www.mythtv.org/mailman/listinfo/mythtv-dev/ + <http://www.mythtv.org/mailman/listinfo/mythtv-dev/> mailing lists to + keep up to date with the current status of the code. Code obtained + from subversion has no guarantees regarding stability, etc. + + If you are in North America you will use the Schedules Direct grabber + which is built-in to MythTV. You do not need to install XMLTV (so you + may skip XMLTV-related instructions), but you need wget version 1.9.1 + or higher. + + Get XMLTV from http://xmltv.sourceforge.net + <http://xmltv.sourceforge.net>. Download the latest version (0.5.51). + + + ______________________________________________________________________ + NOTE for Mandriva users: If you have added a "PLF" mirror, you may skip the + next step and type: + + # urpmi libmp3lame0 libmp3lame0-devel + + After downloading, be sure to install both: + # rpm -Uvh lame* + ______________________________________________________________________ + + + + Get lame from http://lame.sourceforge.net/ + <http://lame.sourceforge.net/>. Download the source code to v3.96.1 + by following the links from "Using" through "Download...". + + + 5.1. Building LAME + + Open a shell and switch to the directory where you saved lame. + + + $ tar -xzf lame-3.96.1.tar.gz + $ cd lame-3.96.1 + $ ./configure + $ make + $ make test + $ su + # make install + + + + Check that it worked: + + + + # ls -l /usr/local/lib + -rw-r--r-- 1 root root 381706 Nov 4 14:22 libmp3lame.a + -rwxr-xr-x 1 root root 674 Nov 4 14:22 libmp3lame.la* + lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so -> + libmp3lame.so.0.0.0* + lrwxrwxrwx 1 root root 19 Nov 4 14:22 libmp3lame.so.0 -> + libmp3lame.so.0.0.0* + -rwxr-xr-x 1 root root 360197 Nov 4 14:22 + libmp3lame.so.0.0.0* + + # exit + $ + + + + 5.2. XMLTV + + 5.2.1. Red Hat Linux and Fedora Core: + + RPMs for XMLTV and all of its dependencies can be obtained from + http://ATrpms.net/name/xmltv/ <http://ATrpms.net/name/xmltv/>. The web + page has a list of all the dependent packages you must download and + install. + + + # rpm -Uvh xmltv* perl* + + + + If you install from this location you may skip to ``Manually building + MythTV''. + + 5.2.2. Mandriva + + RPMs for XMLTV and all of its dependencies are located in Mandriva's + "contrib". If you have added a contrib mirror, try installing XMLTV: + + + # urpmi xmltv xmltv-grabbers + + + + If this does not work, it is possible that contrib for your Mandriva + version does not have XMLTV, so you may install the XMLTV prerequi- + sites by typing: + + + # urpmi perl-xml-twig perl-xml-writer perl-datemanip perl-libwww-perl + + + + and skip straight to the XMLTV compilation step. + + + 5.2.3. Manual installation + + Untar the xmltv file: + + + $ tar -xjf xmltv-0.5.51.tar.bz2 + + Install the xmltv prerequisites. The following prerequisites are the + minimum required; when you actually start running the xmltv setup pro- + gram it may alert you to other modules that are required.: + + + + $ su + # perl -MCPAN -e shell + cpan> install XML::Twig + cpan> install Date::Manip + Date::Manip is up to date. + cpan> install LWP + cpan> install XML::Writer + cpan> exit + + + + Change to the XMLTV directory and compile it: + + + $ cd xmltv-0.5.51 + $ perl Makefile.PL + + + + You can answer "N" to the tv_check, tv_pick_cgi questions. Say "yes" + to the grabber required for your location. + + You may get errors about modules not being installed. You will need + to resolve any missing dependencies at this point, or your grabber may + not work correctly. + + + $ make + $ make test + $ su + # make install + # exit + + + + 5.3. Configuring the Schedules Direct service + + As of 2007-09-01, Tribune Media Services will no longer offer free + guide data. Schedules Direct is a non-profit organization which has + licensed the data to make it available to users of Freeware and Open + Source applications. + + If you wish to use Schedules Direct, you'll need to establish a user + account. Go to http://www.schedulesdirect.org + <http://www.schedulesdirect.org> and click on the "Membership" link. + + Once you've read and agreed to the Subscriber Agreement, Terms of Use + and Privacy Policy proceed to the lineup choices and configure your + account for your particular location and the channels that you have. + This configuration will be imported into MythTV when you first run the + mythtv-setup program. + + + + 5.4. Manually building MythTV + + If you are going to use subversion, execute the following instructions + to obtain the latest version of MythTV: + + + + $ mkdir mythtv + $ svn co http://svn.mythtv.org/svn/trunk/ mythtv + $ cd mythtv + + + + To use a release version, you can execute: + + + $ mkdir mythtv-release-0.21 + $ svn co http://svn.mythtv.org/svn/branches/release-0-21-fixes/ mythtv-release-0.21 + $ cd mythtv-release-0.21 + + + + NOTE: Using a svn version of the code allows you to stay up-to-date + with changes. So, if there's an update to the 0.21 release and you + originally obtained it using svn, you could enter the mythtv- + release-0.21 directory and type "svn up", which will update your copy + with the fixed version from the website. You would then recompile and + install the updated 0.21 code. + + If you are using the tarball, then unpack it: + + + $ tar -xjf mythtv-0.21.tar.bz2 + $ cd mythtv-0.21 + $ ./configure + + + + If you wish to change options, run ./configure --help to see what is + available and to override and automatically detected options. See the + config.log file after running configure to see previous runs. + + To compile: + + + $ make -j 2 + + + + The MythTV compile can take advantage of multiple CPUs, SMP and + Hyperthreading. If you want to build MythTV on a multi-CPU machine + (or with distcc), specify "-j numjobs", where "numjobs" is greater + than 2. In the above example, we had two concurrent jobs executing, + which is recommended for a single CPU system. Do not set the number + of jobs too high, or your compile will actually take longer to + complete than it would if you did a "normal" build. + + If you are using distcc, and you had two other host machines (red, + blue) participating, you would do something like: + + + + $ export DISTCC_HOSTS='localhost red blue' + $ make -j 6 CXX=distcc + + + + The actual speed-up, if any, is dependant on a number of factors, such + as number of CPUs / hosts, etc. The distcc documentation recommends + using a -j value of twice the number of CPUs available to keep all of + them busy. + + Some timing information. The following should only be used for + illustration; your actual results may vary. The test involves a + complete make distclean to the final binary. + + +o P4 3.2Ghz HT: "standard" make: 12m 49s + + +o P4 3.2Ghz HT: make -j 2: 11m 24s + + In the above example, we see that with a single CPU, a multi-stage + make does not significantly decrease compile time. + + Once the compile is done, switch to superuser: + + + $ su + # make install + # exit + + + + NOTE: subsequent configuration steps assume that you are within + the MythTV directory that you cd'd to above. + + + 5.4.1. Enabling real-time scheduling of the display thread. + + MythTV supports real-time scheduling of the video output thread. There + are three ways to go about enabling this: You can use rlimits, you can + use the realtime security module, or on older systems you can SUID the + executable. Enabling real-time scheduling is optional, but can make + the video display smoother, especially if you are decoding HDTV. + + + 5.4.1.1. rlimits + + The rlimits method is the preferred method and is included in Linux + 2.6.12 and above. Unfortunately, you need PAM version 0.79 or above, + which may not be supported by your distribution yet. Assuming anyone + running mythfrontend is in the audio group and rlimits are supported, + all you need to do is place this in your /etc/security/limits.conf + + + + * - rtprio 0 + * - nice 0 + @audio - rtprio 50 + @audio - nice 0 + + + 5.4.1.2. realtime module + + The second option is to use the Linux realtime kernel module. This is + will be phased out over time, but is currently supported by many + distributions that do not yet support rlimits. If you are not using + the distribution kernel you must configure your kernel with: + + + Security options : [*] Enable different security models + Security options : [M] Default Linux Capabilties + + + + You may also need to install the realtime module, using your distribu- + tion's realtime package. Assuming the users who will be running myth- + frontend will be in the audio group you can get the GUID of a named + group like so: + + + $ grep audio /etc/group + + + + If the number printed out from the grep was 18, you can now load this + module as root before starting mythfrontend: + + + # modprobe realtime gid=18 + + + + 5.4.1.3. run as root option (not safe) + + The final and least preferred option is to set the sticky bit on the + mythfrontend executable. This opens a security hole, but is the only + option on systems that do not support either rlimits or the realtime + module. This does not work on modern distributions either, and is not + recommended on any system connected to the Internet. This may also + make it impossible to debug MythTV without running gdb as root. If you + would still like to do this, you just need to run this as root: + + + # chmod a+s /usr/local/bin/mythfrontend /usr/local/bin/mythtv + + + + 5.4.2. Frontend-only configuration + + Since MythTV uses a client/server architecture, multiple frontend + computers can simultaneously access content on a Myth system. Live + TV, watching and scheduling recordings, etc. are all possible from + multiple frontends. + + To get a better picture of what is needed to run a frontend, note the + following: + + You do NOT need the MySQL server installed on your remote frontend + + You do NOT need XMLTV installed on your remote frontend + + You do NOT need to run the mythtv-setup program on your frontend + machine + + Other than the exclusion of the MySQL server and XMLTV, the MythTV + compilation procedure is the same as when you're setting up both a + backend and a frontend. However, you will need to install the + database access libraries. + + Once MythTV is compiled and installed: + + Run the mythtv-setup program on your Master backend. Under the + "General" menu, change the IP address of the current machine (by + default, "127.0.0.1") to the real external IP address - 127.0.0.1 is + the loopback address and no external machine can access it. Change the + Master Server IP setting to the same IP address as well. + + Run the mythfrontend program on your frontend machine, and a "Database + Configuration" screen should appear. Set the "Host name" field to + point to your Master backend's IP address. + + + 5.5. Gentoo + + Installation of MythTV on Gentoo consists of simply emerging the + desired ebuild because all of the packages are now part of the + official Portage tree. + + + $ su - + # emerge --sync # make sure portage is up to date. + # vi /etc/make.conf + + + + Add mysql to your USE variable. i.e. USE="mysql ...." + + + # emerge mythtv + + + + 6. MySQL. + + When you install MySQL 5.x you will also want to comment out "log-bin" + in your my.cnf configuration file. This option will quickly fill your + "/var" disk partition with many gigabytes of data, unless you are + doing database replication and deleting these files regularly. + + 6.1. Distribution-specific information + + 6.1.1. Mandriva + + If this is the system maintaining the database, make sure that MySQL + is running and started at boot. Click on Mandriva Control + Center->System->Services, find MySQL and click the "On Boot" button + and the "Start" button if the MySQL status shows that it isn't running + yet. + + + + NOTE: There have been reports that MySQL isn't starting at boot. + If this is happening to you, try running the following commands. + + + $ su + # chkconfig --level 35 mysql on + # /etc/rc.d/init.d/mysql start + # exit + + + + 6.1.2. Red Hat Linux and Fedora Core + + If this is the system maintaining the database, make sure that MySQL + is running and started at boot. Click on Redhat menu>Server + Settings>Services and enter the root password when asked. Check + "mysqld" and then click Start. Click Save, then close the window. + + This can be done from the command line by typing: + + + # /sbin/chkconfig mysqld on + # /sbin/service mysqld start + + + + 6.1.3. Gentoo + + After installing MySQL you need to initialize the database by running + mysql_install_db as root. + + 6.2. Setting up the initial database + + This step is only required on the system maintaining the database, + which may or may not be one of your MythTV boxes. If the database is + on a non-MythTV machine you'll need to copy the database/mc.sql file + to it. + + To setup the initial MySQL databases: + + + $ cd database + + + + 6.2.1. Mandriva and Red Hat Linux/Fedora Core + + + + $ mysql -u root < mc.sql + + + + 6.2.2. Debian 3.0 + + + + $ mysql < mc.sql + + + + 6.2.3. Gentoo + + + + $ su + # mysql < /usr/share/mythtv/database/mc.sql + + + + NOTE: It is good practice to set a root password for MySQL. Instruc- + tions for doing so can be found on MySQL's web site at + http://www.mysql.com/doc/en/Security.html <http://www.mysql.com/doc/en/Security.html>. + + 6.2.4. Modifying access to the MySQL database for multiple systems + + If you're going to have multiple systems accessing a master database, + you must grant access to the database from remote systems. By + default, the mc.sql script is only granting access to the local host. + + To allow other hosts access to your master database, you can either + set it up for no security at all, or with more granularity. Note that + the "%" is the wildcard character in MySQL. + + + + NOTE: The "no security" option is very dangerous unless + you're in a controlled environment. This example has no security at + all, and allows access from any host. + + + $ mysql -u root mythconverg + mysql> grant all on mythconverg.* to mythtv@"%" identified by "mythtv"; + mysql> flush privileges; + + + + For a more secure setup, you can restrict which machines or subnets + have access. If you have a complete DNS system operational, you could + do the following: + + + $ mysql -u root mythconverg + mysql> grant all on mythconverg.* to mythtv@"%.mydomain.com" identified by "mythtv"; + mysql> flush privileges; + + + + Finally, if you just want to restrict by IP subnet (in this example, + the 192.168.1. network): + + + $ mysql -u root mythconverg + mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv"; + mysql> flush privileges; + + You'll also need to check that the "networking" feature of MySQL is + turned on. Check that /etc/mysql/my.cnf does not contain skip- + networking. If it does, remove it. Also verify that bind-address is + set to your IP address instead of 127.0.0.1. If you change either of + these items, restart MySQL. + + NOTE: Your distribution may have a customized MySQL configuration + file; in Mandriva, check /etc/sysconfig/mysqld for additional + configuration. + + + 7. Configuring Sound. + + If your video doesn't appear to be in-sync with your audio and you're + using an analog video capture card and a soundcard to capture audio, + it could be because you are listening to the real-time audio from your + video card rather than after it's been processed and synchronized to + the video by MythTV. Because MythTV is a personal video recorder, + "Live TV" isn't really live - to let you pause live TV, MythTV is + actually encoding the video, saving to disk, and then playing it back. + This procedure puts your MythTV "live" TV about 2 seconds behind real- + time, so it's important that you're not listening to the live audio. + However, if you're having an issue where the audio and video aren't + synchronized by small but varying amount, it's most likely because the + sound driver that you're using doesn't have the DSP_CAP_REALTIME + capability. This was the case with ALSA (0.5), but not with newer + versions. See the ``Troubleshooting Audio'' section for more + information if you're having issues with sound. Also, ensure that no + other programs are grabbing the audio output, like arts or esd. + + What you need to do is to mute the "line-in" of your sound card and + also set it as the recording source. + + There are two ways to do this. Graphically, and from the command + line. + + + 7.1. Graphically setting up the mixer + + 7.1.1. Mandriva and Red Hat Linux/Fedora Core + + Open Kmix by clicking K->Multimedia->Sound->Kmix for Mandriva, or + + RedHat Menu>Sound & Video>Volume Control + + + + Click on Settings->Configure Make sure that "Tick Marks" and "Show + labels" have "X"'s in them. This will make it easier to find the + correct audio source. Click OK. + + On the mixer page, look for Line-In on your sound card. You should + see two LED's - a green one at the top, and a red one at the bottom. + The green one at the top is for muting; you want to make sure that the + green LED is a dark green, meaning that it's "off". You also want to + click on the red LED so that it turns bright red, indicating that it's + "ON"; this insures that the Line-in is used as the source. Click OK, + and make sure that you save the settings so that this is your default. + + + 7.1.1.1. Using ALSA. + + To use ALSA, you'll need to correctly setup your asoundrc file. + Configuring this file is beyond the scope of this HOWTO. Once ALSA is + working correctly, change the output sound device in + mythfrontend->setup->Audio from /dev/dsp to ALSA:default. This field + may be edited to suit your ALSA requirements. + + + 7.2. Setting the mixer from the command line + + If you have installed the alsa-utils package, then the amixer program + can be used to setup the mixer. The "Master" volume setting is only + required on a frontend machine to ensure that the sound channels are + unmuted and configured for outputting sound. The "Line" and "Capture" + controls are required for your sound card to actually capture audio + from the external Line-in if it's connected to an analog frame + grabber. Not all sound cards have a "Capture" control, but if yours + does and you don't set it then MythTV will not capture audio. + + + ______________________________________________________________________ + Note the spelling in the following commands. + ______________________________________________________________________ + + + + $ amixer set Master,0 100%,100% unmute + $ amixer set PCM,0 100%,100% unmute + $ amixer set Line,0 75%,75% mute captur + $ amixer set Capture,0 100%,100% captur + $ su + # alsactl store + # exit + $ + + + + If you have multiple sound cards, then use the -c parameter to specify + which card to adjust. Note that the first card will be "0", the + second will be "1", etc. + + That takes care of setting the volume correctly, and the ALSA startup + script will restore the volume after a reboot. If you find that your + sound is distorted, it's possible that the levels in the above + examples are too high for your particular hardware combination. Try + reducing the percentages by 5-10% and checking again. Once you're + satisfied, re-run the alsactl store command. + + You may also use the alsamixer program to set the volume. If you are + using an ALSA version after 1.0.6, use alsamixer -V all First, start + alsamixer from the command line. You should start out on the "Master" + volume control slider. Use the up and down cursor to set the master + volume to around 75%. Next, use the left and right cursor keys to + move around on the screen until you find the "Line" slider. Press + SPACE to set it as the capture source, set the level to around 50-75% + and press "M" to mute it. You can now press ESC to exit out of the + alsamixer program. You can also have MythTV manage all volume and + mute settings, but this will only affect the "Master" or PCM volume, + not the capture volume. See the mythfrontend setup page for options. + + Finally, if you've performed all of the above steps, and you still + don't seem to have any sound, it's possible that your video capture + device is muting the audio output. + + + $ v4lctl -c /dev/video0 setattr mute off + + + + 8. Setting up a remote control. + + MythTV does not have native remote control receiver and decoder + software built-in. Instead, remote control functions are implemented + by cooperating with lirc, the Linux Infrared Remote Control program. + lirc handles the IR hardware and passes keystrokes to MythTV, which + then acts as if the user had pressed the keys on the keyboard. The + file keys.txt describes the keys used to control MythTV. + + + + NOTE: If you are running Mandriva, you may install + lirc by executing: # urpmi lirc lirc-remotes and bypass the manual + compilation steps described below by jumping to the ``Completing the + lirc install'' section. See the contrib/mandrake91.etc.sysconfig.lircd + file for an example of how to configure lircd. + + Some IR devices require a kernel recompile, and some don't. However, + all at least require having the kernel source available as a resource + for the lirc build process. + + + 8.1. Gentoo + + To install lirc on Gentoo, all you need to do is: + + + # emerge lirc + + + + 8.2. Obtaining and compiling lirc + + You're going to need to download and compile lircd. Go to + http://www.lirc.org <http://www.lirc.org> and download lirc; as of + 2006-01-21, the version available is 0.8.0. Grab the remotes.tar.bz2 + file as well. + + + $ tar -xjf lirc-0.8.0.tar.bz2 + $ cd lirc-0.8.0 + $ ./setup.sh + + + + You're going to need to know what sort of receiver you have and where + it's connected. In the case of the Pinnacle Studio TV card, with the + IR receiver connected to COM1 (/dev/ttys0), once the configuration + menu comes up, perform the configuration by going to Driver Configura- + tion->Other Serial Port Devices->Pinnacle Systems Receiver->OK and on + the next page select COM1->OK. + + Each remote is different; some remote receivers connect directly to + your capture card and not to a serial port, so make sure that you've + got the correct one. + + You then click "Save Configuration and run configure" to continue. + + Make sure you read the last text generated by the configure step. It + will tell you if you require a kernel recompile, and what the name of + your kernel module will be (if necessary). For instance a home-built + receiver may require a kernel recompile, so you would be notified that + you will have to load the lirc_serial module. If you did not get any + such messages skip the kernel recompile steps below and go directly to + making and installing the lirc driver. + + Once the configuration step is complete: + + + $ make + $ su + # make install + # chmod 666 /dev/lircd + + + + At this point, if you're using a serial receiver, check that there's a + lirc device in /dev: + + + $ ls -l /dev/li* + lr-xr-xr-x 1 root root 5 Jan 27 09:00 /dev/lirc -> ttyS0 + srw-rw-rw- 1 root root 0 Jan 27 15:01 /dev/lircd= + prw-r--r-- 1 root root 0 Jan 27 09:00 /dev/lircm| + + + + As you can see, there's a link from /dev/lirc to ttyS0, a.k.a. "COM1", + which is appropriate for the Pinnacle Systems PCTV Pro. However, you + may notice something like this: + + + crw------- 1 root root 61, 0 Dec 31 1969 lirc + + + + Some IR receivers (including some homebrew units) use a character + device as their data interface as opposed to a link to a serial port. + If the make install step has created a character device for you, don't + replace it with a link to a COM port. + + So, if the link or character device was not created (but should have + been), ensure that you ran the make install step as root. If it still + doesn't work, then there are three options. The first option is to + re-read the lirc documentation to determine whether your IR receiver + is a character device or should be a link to a serial port and to + create the link/character device manually. In this example, the IR + device is connected to ttyS0. If it were connected to "COM2", then + use ttyS1, etc. + + + $ su + # cd /dev + # ln -sf ttyS0 lirc + # exit + $ + + + + NOTE: The above example assumes that your receiver uses the + standard serial driver. Some receivers do not, including receivers + that plug into a TV capture card. Check the lirc documentation, but + it may be necessary to replace the link created above with a character + pipe: + + + # mknod /dev/lirc c 61 0 + + + + See the lirc documentation for additional information. The lirc + installation should create this for you, so manually creating it + indicates that your lirc installation may have other issues. + + The second option is to post your issue to the lirc list, not the + mythtv-users list. The lirc programmers will be the ones that can + assist you best. + + The third option is to dispense with lirc altogether by purchasing an + IR keyboard (various options exist, although Chicony appears to work + for some people) and a learning remote control. The IR keyboard + receiver plugs into the PS/2 keyboard port on your PC and you would + train your learning remote to emulate the various keystrokes from + keys.txt of your IR keyboard. Using this method removes lirc entirely + from the picture - your remote will be sending keypresses that your PC + "sees" on the keyboard port. + + + 8.3. Completing the lirc install + + + + NOTE to Mandriva 9.1 users: skip to the manual start paragraph + below. + + If the lirc configure program / compile did not mention anything about + a kernel module, then you are finished. If it did mention a kernel + module, you must edit the /etc/modules.conf file. Add this line as the + first thing in the file. It must come first, or it may not work. + + + alias char-major-61 XXX + + + + replace XXX with the name which you determined earlier, which in this + example was "lirc_serial" + + + $ su + # modprobe lirc_serial + # /sbin/ldconfig + + + + Next, we're going to manually start lircd the first time. Mandriva + 9.1 users, type: # /etc/rc.d/init.d/lircd start instead of: + + + # /usr/local/sbin/lircd + + + + NOTE: Read this next section if you're not familiar with how lirc + works! + + There are two separate files used by lirc, and both are required for + your remote control to do anything useful. First is the lircd.conf + file. lircd.conf tells the lirc daemon how to interpret the IR pulses + that it receives from a remote control and what name to assign to each + sequence of pulses. Without getting too involved, a particular series + of pulses may correlate to "Channel Up". The lircd.conf file will + then contain a line that looks something like this: + + + + ChannelUp 0x0000000000001020 + + + + The lircd.conf file can have multiple remote controls defined. + + The second file is lircrc, which takes the name of the button which + was pressed ("ChannelUp") in the above example, and correlates that to + an action to be performed by a program using the remote control. So + in MythTV, ChannelUp means one thing, while in mplayer it means + something different. lircrc gives you the flexibility of taking the + name of the button and having it perform different actions depending + on which program you're using at the time. + + NOTE: The definitions in lircd.conf come from the user community, and + there is no standard for the common button names. One lircd.conf file + may contain a definition for a button called "ChannelUp", while + another may contain a definition for "Chan+". Your lircrc file must + therefore be configured appropriately, or it won't work. + + If this fails, complaining of a missing lircd.conf file, then you must + find or make one. First look for a pre-made configuration file at + http://lirc.sourceforge.net/remotes/ + <http://lirc.sourceforge.net/remotes/>. Mandriva 9.1 users, look in + /usr/share/lirc-remotes. If you find one your remotes either on the + website or in /usr/share, download or copy the file, name it + lircd.conf and put it in your /etc directory. If you couldn't find + your remote, you must make your own lircd.conf file. + + To make your own lircd.conf file + + + $ irrecord myremote + + + + Follow the on-screen directions to train your remote and define keys. + If your remote ends up working well, you should consider submitting + your lircd.conf file back to the lirc developers. Once finished: + + + $ su + # cp myremote /etc/lircd.conf + + + + now try to start lircd again: + + + # /usr/local/sbin/lircd + + + + Now, we're going to add the commands necessary for lircd to run each + time we boot. Mandriva 9.1 users, you can execute: + + + $ su + # chkconfig --level 35 lircd on + # exit + + + + All other distributions: + + + # cd /etc/rc.d + # cat >> rc.local + echo "Starting lircd" + /usr/local/sbin/lircd + ^D + # exit + $ + + + + This takes care of the lircd portion, which "listens" for the IR + signals. If everything went well, the install script for lircd put an + appropriate configuration file for your remote into /etc/lircd.conf + This file maps the buttons on the remote control to the IR pulses + coming from the receiver. + + The next step is to convert those signals into something that can be + used to control MythTV. MythTV now includes native support for lirc + and can interact directly with + + + + $ cd ~/mythtv-0.21/contrib/configfiles + $ cp lircrc.example ~/.lircrc + + + + or + + + $ cp lircrc.example.pinnaclestudiopctv ~/.lircrc + + + + if you've got a Pinnacle Studio PCTV remote. + + + $ irw + + + Start pressing the keys on your remote; irw will print the name of the + button as it is defined in your /etc/lircd.conf. If you don't see any- + thing at this point, you need to troubleshoot further by going back to + the lirc home page and investigating from there. + + If it is working, then press CTRL-C to abort the program. Once you + know that your remote is working, you can either recompile MythTV with + native lirc support by enabling it in configure or you need to run the + irxevent program, which takes the key presses and sends them to + MythTV. If you use native lirc support, you don't need to run + irxevent. If you are going to use irxevent, then you need to run it + like this: + + + $ irxevent & + + + + If irxevent isn't running, then MythTV will not respond to your remote + control unless you're using native lirc support. + + + 8.4. Additional information for lirc + + Take a look at the lircrc.example files in the contrib/configfiles/ + directory. In my case, (Pinnacle Studio card) the channel up and down + functions weren't working, due to the fact that the button names were + different than the default lircrc.example file that came with MythTV. + + The lircrc.example file has this: + + + begin + prog = irxevent + button = ChannelUp + config = Key Up CurrentWindow + end + + begin + prog = irxevent + button = ChannelDown + config = Key Down CurrentWindow + end + + + + but the /etc/lircd.conf that comes in the lircd package defines the + buttons for the Pinnacle Studio PCTV as: + + + channel+ 0x0000000000000017 + channel- 0x000000000000001C + + + + rather than "ChannelUp" and "ChannelDown". I added the following to + my /home/[yourusername]/.lircrc file: + + + + begin + prog = irxevent + button = channel+ + repeat = 3 + config = Key Up CurrentWindow + end + + begin + prog = irxevent + button = channel- + repeat = 3 + config = Key Down CurrentWindow + end + + + + which took care of basic functionality. Because the PCTV Studio + remote has additional buttons, look at the contrib/configfiles/lir- + crc.example.pinnaclestudiopctv for an example of how to define addi- + tional buttons, and how to debug potential button name conflicts + between the lircrc.example file and how your remote defines the button + names. + + By examining the button names defined in /etc/lircd.conf and using the + irw program to make sure that your remote is working, you can create + the appropriate mappings in .lircrc to get excellent remote + functionality with MythTV. + + Note the repeat = parameter. This informs the irxevent program to + pass through every third keypress. By default, lirc will only send + one keypress to the application, even if you're holding down the key. + The actual repeat = number will vary from system to system, so + experiment and see which value works best for you. + + + 8.5. Configuring lirc for use with an IR blaster + + Lirc has support for various IR transmitters. A popular model is the + Actisys IR-200L http://store.snapstreamstore.com/accessories.html + <http://store.snapstreamstore.com/accessories.html>. It was originally + designed for IRDA communication, but can be used to transmit A/V + remote control codes. By using the lirc SIR driver, this device can + easily be integrated with MythTV. I have tested this device with an + AT&T DCT2000 digital cable box but the instructions can be used to + configure other IRDA devices and A/V remotes. + + Follow the steps in the previous section. When you run setup.sh, + select option 1, driver configuration. From here select option 6, IrDA + hardware. Select your appropriate device and the corresponding serial + port, then Save configuration & run configure from the main menu. Once + configure is done type: + + + $ make + + + + Please note: unlike the Pinnacle receiver above you will be compiling + lircd in addition to a kernel module for the SIR transmitter. + Depending on whether you have your serial port driver configured as a + kernel module you might see the following message during make: + + + + lirc_sir.c:56:2: warning: #warning + "******************************************" + + lirc_sir.c:57:2: warning: #warning "Your serial port driver is compiled into " + + lirc_sir.c:58:2: warning: #warning "the kernel. You will have to release the " + + lirc_sir.c:59:2: warning: #warning "port you want to use for LIRC with:" + + lirc_sir.c:60:2: warning: #warning "setserial /dev/ttySx uart none" + + lirc_sir.c:61:2: warning: #warning + "******************************************" + + + + If you do receive this statement make sure to run the setserial + command before you load the lirc_sir module. Follow this with the + install: + + + $ su + # make install + + + + You will notice that lirc installs the kernel module in + /lib/modules/uname -a/misc. + + The configuration for starting lircd differs if you're going to be + sending and receiving IR versus just receiving. + + + + # cd /etc/rc.d + # cat >> rc.local + echo "Starting lircd" + setserial /dev/ttySx uart none # (if required) + modprobe lirc_sir + /usr/local/sbin/lircd + ^D + # exit + $ + + + + At this point you have to populate the /etc/lircd.conf file with the + proper codes for your A/V remote. You should be able to find your + remote within the lirc remote tar file located at + http://www.lirc.org/remotes.tar.bz2 + <http://www.lirc.org/remotes.tar.bz2>. In my case I extracted the file + from remotes/motorola/DCT2000 (gi-motorola-dct2000) + + To test the lirc_sir module you can run irw to verify the codes are + being received. If everything is configured correctly you should see + something similar to the following: + + + $ irw + 0000000000007ff0 00 1 gi-motorola-dct2000 + 000000000000bff8 00 2 gi-motorola-dct2000 + 000000000000f7f0 00 ENTER gi-motorola-dct2000 + + Once you've verified lirc is working you can press CTRL-C to exit irw + and configure the channel changing script. + + The path to the channel changing script will need to be entered on the + mythtv-setup screen for Input Connections. + + This csh script will be called each time MythTV needs to change the + channel. Below is a copy of the script followed by the corresponding + perl script. Make sure both are in your path. Also make sure you + leave the #!/bin/csh setting and not change it to Bourne or bash. This + will create a frustrating symptom to diagnose where MythTV cannot open + /dev/device. Unlike Bourne or bash, csh scripts automatically close + parent file descriptors before they start. + + + $ cd /usr/local/bin + # su + # cat > change_channel.csh + #!/bin/csh + echo "changing to $1" + /usr/local/bin/channel.pl $1 & + ^D + # chmod a+x change_channel.csh + # exit + $ exit + + + + See contrib/channel.pl for the actual file. Copy it to + /usr/local/bin/ + + The last statement within the perl script is the lirc rc command. This + is the command that transmits the code to your cable/DSS box. Make + sure to have the IRDA device within a few feet of the box. + + + 9. Configuring MythTV. + + By this point, all of the compile-time prerequisites have been + installed, mysql is running and has had its initial database setup. + It's now time to configure MythTV. + + + + NOTE: If you're running Debian unstable and you have compiled + MythTV from source, you will need to install an additional package + before you will be able to run MythTV. Execute the following to + install the MySQL driver for QT. + + + $ su - + # apt-get install libqt3c102-mt-mysql + # exit + + + + 9.1. Configuring the Master backend system + + Open a shell and decide where you will store your video files. This + may be one directory or multiple directories on the same or different + filesystems. There is no default directory used for new recordings, + you must create at least one storage directory and configure Myth to + use it by running mythtv-setup. If you do not do this, then MythTV + will be unable to record anything. The following example is specific + for /var/video, but the same instructions would apply for any + directory name you choose to use. See the ``Advanced Partition + Formatting'' section for hints on creating a partition for MythTV. + + + + $ su + # mkdir /var/video + # chmod a+rwx /var/video + # exit + + + + NOTE: The last slash "/" is not required. + + + TIP: Try not to have your video mount point on the same partition as + your root partition, which could lead to the filling up of your root + partition with video data if the mount fails. For example: + + If /var/video is created on your root partition and you then perform a + mount of another drive to this directory there won't be any problems + if everything is working the way it should. However, if the mount + fails for some reason, /var/video still exists, so MythTV will find + the directory and write files to it. If your / mount point is space + limited, /var/video will also be space limited, and it won't take long + to fill the partition. This will cause a number of side-effects, most + of them bad. Instead, create subdirectories as the destination for + the storage group. + + Your directory structure could then look something like this: + + + /mnt/video/drive1/video + /mnt/video/drive2/video + + + + Your /etc/fstab would look like this: + + + /dev/hdb1 /mnt/video/drive1 + /dev/hdc1 /mnt/video/drive2 + + + + Because the Storage Group path is /mnt/video/drive1/video, if the + mythbackend can only find /mnt/video/drive1 it will not write files to + that share. + + After you create the desired directory or directories for storing your + video files, you will need to add them to the proper Storage Group + using mythtv-setup. This procedure is described below in the + ``Storage Groups'' section. + + The first thing to configure is the Master backend system. If you are + running multiple backend systems, the Master backend will make all + decisions about which programs will be recorded on which tuners. If + you have only one backend, then it will be its own master. + + + The Master backend will always choose the first available tuner in the + same order as you add cards through "mythtv-setup". In other words, + the second card you add will only be used when there are two + overlapping recordings, the third when there are three, and so on. + Therefore, you will want to have the greatest amount of disk space on + the Master backend because its tuner will always be the first choice. + You will then want to add your ``other backends'' in the order of your + preference for recording. + + + + NOTE: It is possible to not have the cards on the Master + backend be the first ones used. However, if you are new to MythTV it + is easier to configure the Master backend first before moving on to + the Slaves, at least until you become more familiar with the MythTV + system. See ``Advanced Backend Configurations'' for information on + configuring multiple backend systems in various ways. + + Because MythTV uses a database to store all configuration variables, + part of the bootstrap of MythTV is to indicate the location of the + MySQL database server. If the frontend, backend and MySQL database + server are all going to be running on the same box, you can continue + to the next step. If not, you'll need to change the Host Name in the + "Database Configuration" screen of the mythfrontend program. + + + + NOTE: Users that have been running the frontend and the backend on + different machines have stated that they have been having issues with + remote access to the MySQL database. The following instructions may + or may not work. Add the following to /etc/my.cnf on the backend + machine and restart MySQL. + + + skip-innodb + set-variable=thread_stack=256k + + + + Run the setup program: + + + $ mythtv-setup + + + + The backend setup program will start and offer you a number of + choices. It is strongly recommended that you go through them in + order. + + The first question will ask if you wish to clear out your existing + configurations for your capture cards. Initially, you should say + "YES" so that there are no surprises later. + + The next question will ask you if you wish to clear out your video + source information. You should answer "YES" to this as well. + + + Once the graphical setup starts, you'll see that there are six choices + + + + The Storage Directories feature is available only in the SVN version + of MythTV. + + + 1. General + + 2. Capture Cards + + 3. Video Sources + + 4. Input connections + + 5. Channel Editor + + 6. Storage Directories + + Use the arrow keys to move around, and press the space bar to select + which option you wish to configure. + + + 9.1.1. General + + The first screen of the General configuration deals with IP addresses + of the system that you're running mythtv-setup on and any master + backend you may have. If you've only got one machine, then the + default values are fine and you can move to the next page by pressing + the space bar. If you need to move around the screen, use the arrow + keys to move focus between settings, not the mouse. + + If you will be deploying multiple backends, or if your backend is on + one system and you're running the frontend on another machine then do + not use the "127.0.0.1" IP address. + + NOTE: If you modify the 127.0.0.1 address and use a "real" IP address, + you must use real IP addresses in both fields, otherwise your frontend + machines will generate "Unexpected response to MYTH_PROTO_VERSION" + errors. + + Changing any of the port settings is very strongly discouraged. (If + you do accidentally change them, the defaults are 6543 for the + master/backend server, and 6544 for the HTTP requests) + + Once you're satisfied with the values, move the focus down to Next and + hit the space bar. + + The next screen details the Host-specific Backend setup. This is + where you will set the specific directory paths for this particular + backend. Make sure that you've followed the steps at the beginning of + this section and created a directory that exists and that MythTV will + have write privileges to. When you're done, press Next to continue, + taking you to the Global Backend Setup. + + On the Global Backend Setup configure your backend with the + appropriate settings. Use the left and right arrow keys to iterate + through the choices available on each setting, and the up and down + keys to move between settings. Move to Finish when you're done and + press the space bar, taking you back to the main configuration screen. + + + 9.1.2. Capture Cards + + You should have no capture cards defined, so the highlight will be on + (New Capture Card). Press space to begin. + + Choose the appropriate settings for your particular tuner. Use the + arrow keys to move around and to make your choices, and press RETURN + when complete. Pressing RETURN will take you back to the Capture + Cards screen; if you have additional capture cards in this machine, + press the space bar when the highlight is on the (New Capture Card) + row to define another card. + + If you have made a mistake, you can delete a card by highlighting it + and pressing the 'D' key, or you can highlight it and press the RETURN + or 'E' key to edit it. + + Once you have no additional cards to setup, press ESC. + + + + NOTE: If you have a dual digital/analog card, such as the pcHDTV + cards and some DViCO cards, then you should not configure this as two + separate cards. Configure the digital portion as a DVB card, then + click on the "Analog Options" button within the DVB configuration + panel for the card and configure the analog portion of the card there. + + + 9.1.3. Video Sources + + When you start, the highlight should be on (New Video Source). Press + the space bar to begin. The first field asks for the name of the + video source. You may choose something easy to remember, like + "Antenna" or "Cable". Once you've chosen a name, press the down arrow + to move to the next field. + + If you're in North America, change the grabber to + "SchedulesDirect.org(Internal)", then continue pressing the down arrow + to move to the next field. Fill in the username (lowercase only) and + password that you have established with Schedules Direct, then move to + the "Retrieve Listings" button and press the space bar. + + NOTE: You need wget version 1.9.1 or higher to use Schedules Direct. + + The mythtv-setup program will contact the Schedules Direct servers and + get your account information. Once you're done, you may click the + Finish button and skip the next few paragraphs in this document since + they only apply to users that are using the external XMLTV script to + get their guide data. + + If you wish to continue using the XMLTV grabber, then move to the + Zip/postal code field and put in the appropriate value. + + If you're outside of North America, then some manual interaction will + be required with XMLTV. You may need to switch from the MythTV setup + program to the console it was run on to interact with XMLTV. + + Once you have chosen your provider, press RETURN to continue. XMLTV + will now begin collecting the initial data for your location. The + screen may blank for a few seconds to several minutes, depending on + the load of the listings provider and the speed of your connection to + the Internet. Be patient! + + + You will then be returned to the Video Sources screen. If you have + multiple video sources available, such as Antenna, Cable, etc, go + ahead and define them all, even if they're not all going to be + physically connected to the master backend server. Once you're done, + press ESC to return to the main screen. + + + 9.1.4. Input Connections + + The final configuration item is Input Connections. On this screen, + you will associate the various video sources you defined earlier with + a physical input to a encoder card. It's entirely possible that you + have multiple tuners, and each tuner has a different input, so on this + screen you let MythTV know which device will connect to which input + source. + + When you start this screen, you should see a listing of the various + input connections available on each of the Capture cards you defined + earlier. For example, you may have a capture card with a tuner, a + SVideo and a Composite connection. If you wanted to associate the + tuner (a.k.a., "Television") with an "Antenna" source you defined in + Video Sources, you would move to the /dev/videodevice (Television) -> + line and press the space bar. Using the left and right arrow keys + will show you the various choices you have already created for video + source. In our case, you would use the left/right cursor keys until + "Antenna" was shown in the Video Source field. Press down to move to + the next setting. + + On the connection pane there is a "Scan for channels" button, if you + are configuring a digital source such as a DVB card, you need scan for + channels and you must do this before pressing the "Fetch channels from + listings source" button. You may scan for analog channels on an analog + input, but this is not needed. + + + The other button is called "Fetch channels from listings source". As + long as you have a real listings source you should fetch channels from + them for analog channels. You can do this for digital sources as well + (unless the listing source is transmitted EIT data). If you are using + XMLTV, you may need to switch from the MythTV setup program to the + console it was run on to interact with XMLTV after pressing this + button. It is possible to fetch the channels on the command line using + mythfilldatabase. But if you need to do this, you will probably need + to re-enter the MythTV setup program to configure the "Starting + channel" setting for this source->input connection. + + + + NOTE: If you have a Hauppauge PVR-500, you must think of + it has two PVR-150's on a single PCI card. For example, if you have a + single PVR-500 card, it will appear as /dev/video0 and /dev/video1. + Each /dev/video device will have a Tuner input. Once you're done, + press RETURN to go back to the Input Connections screen. You would + then finish associating the video sources to any other hardware + devices you have available. + + + + NOTE: Don't add a video source to a hardware input if you don't + actually have anything connected there. For example, adding "Cable" + to the Tuner and to the Composite inputs without having something + connected to Composite will lead to blank recordings. + + Press ESC to return to the main menu, and press ESC again if you have + no further items to configure, thereby returning you to the command + line. + + + 9.1.5. Channel Editor + + The channel editor is used to globally alter channel information, + including items like hue, contrast, fine tuning and others. Users in + North America shouldn't run the channel editor until you've completed + the initial mythtv-setup and ran mythfilldatabase at least once to + populate the database. + + + 9.1.6. Storage Groups + + + + New in MythTV 0.21 + + 9.1.6.1. Introduction. + + Storage Groups are lists of directories that are used to hold MythTV + recording files giving you a flexible way to allow you to add capacity + to your MythTV system without having to use exotic solutions such as + LVM, filesystem expansion or RAID Online Capacity Expansion. You can + also use Storage Groups to organize recordings and to put recordings + of a certain type into one subdirectory. + + Storage Groups do not offer redundancy in case of hard drive failure, + but unlike LVM, if you lose a hard drive, you only lose the recordings + that were on that drive. With LVM, if you lose a hard drive, you will + most likely lose everything. + + + 9.1.6.2. How to use Storage Groups. + + By default, there is only one Storage Group called "Default", and it + is used for all recordings and Live TV. + + + + NOTE: You need to add at least one directory to the Default + Storage Group or else you will not be able to record anything with + MythTV. + + For example, if you have 5 hard drives in your system, your first hard + drive could be your "boot" drive, and the remaining four could be + dedicated to media storage. You could format the drives and mount them + as /mnt/store/d2, /mnt/store/d3, /mnt/store/d4 and /mnt/store/d5. + + Within each mount point, it's strongly recommended that you use a sub- + directory and make that the destination path for the Storage Group. + See the ``Tip'' in the "Configuring the Master backend" section for + additional information. + + + You would then add the four subdirectories you created under the mount + points (/mnt/store/d1/video, etc) into the "Default" Storage Group. + + At recording time, if there were four simultaneous recordings, MythTV + would put one recording onto each drive. + + Or, say that you originally installed MythTV to a 80GB hard drive, and + that hard drive is now filling up. You could simply add a new drive + to your system, mount it and update the Storage Group to add + additional space. + + You may create additional Storage Groups to store specific recordings + in their own directories. Storage Groups are edited via the 'Storage + Directories' section of mythtv-setup. + + You can also create multiple Storage Groups to group recordings + together; recording schedules now have an option to specify which + Storage Group to use. + + MythTV will balance concurrent recordings across the available + directories in a Storage Group in order to spread out the file I/O + load. MythTV will prefer filesystems that are local to the backend + over filesystems that are remote until the local filesystem has 2 + concurrent recordings active or other equivalent I/O, then the next + recording will go to the remote filesystem. The balancing method is + based purely on I/O, Myth does not try to balance out disk space + unless a filesystem is too low on free disk space in which case it + will not be used except as a last resort. + + Storage Groups are global, but can be overridden on a slave backend by + creating a local Storage Group by running mythtv-setup on the slave. + If a problem occurs and the slave backend is unable to use the desired + Storage Group, it will fail back and try the directories defined in + the master's Storage Group. + + There's also a special 'LiveTV' Storage Group, but the directory list + starts out empty. If you add a directory to the Storage Group, it + will be used instead of putting LiveTV recordings in the Default + Storage Group. This will allow you to put your LiveTV recordings on + their own filesystem, which is similar to the old MythTV method which + used a RingBuffer for LiveTV. Of course, you don't have to do + anything, and Live TV recordings will just go into the Default Storage + Group where they'll be the first programs eligible for expiration if + the system needs free space for recordings. + + Usage information for all Storage Group directories is visible on the + mythfrontend status screen as well as the mythbackend status webpage. + MythTV is smart enough to determine which directories are on shared + filesystems so it should not count free or used space multiple times + if you have more than one directory on the same filesystem. + + + 9.1.6.3. Migrating to Storage Groups. + + Migrating to Storage groups is very simple: if you have existing + recordings in a storage directory, then the system will automatically + add that directory to the Default Storage Group. If you then add + additional directories to a storage group, the system is flexible + enough to check all Storage Groups for a file before deciding that it + can't be found, which means that you can use the mv command from the + Unix command line to arrange files however you'd like. + + + + 9.1.6.4. Advanced: Algorithm used by the Storage Group + + This section details the logic of the Storage Group allocation engine. + + The current load-balancing preferences (in order) are: + + +o Local filesystems over remote + + +o Less-busy (less weight) over more-busy (more weight) + + +o More Free Space over Less Free Space + + The 'business' of a filesystem is determined by weights. The following + weights are added to a filesystem if it is in use for the following + things: + + +o recording = +10 + + +o playback = +5 (mythfrontend) + + +o comm flagging = +5 (mythcommflag) + + +o transcoding = +5 (mythtranscode) + + If a recording is due to end within 3 minutes, it is not counted + against the weight of a filesystem. This is done to account for the + pre/post-roll and start-early/end-late settings. + + + 9.2. Post-configuration + + Run the mythfilldatabase program as directed. The master backend will + obtain guide data for all the video sources you defined during setup. + + NOTE: If you are using Schedules Direct and watching the output + messages on the console or the log file it is normal to see a "401 + Unauthorized" error followed by a "200 OK" when the connection to + Schedules Direct is being established. + + + From : Sun Jun 13 05:00:00 2004 To : Mon Jun 14 05:00:00 2004 (UTC) + --02:58:01-- + http://datadirect.webservices.zap2it.com/tvlistings/xtvdService + => -' + Resolving datadirect.webservices.zap2it.com... 206.18.98.160 + Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... + connected. + HTTP request sent, awaiting response... 401 Unauthorized + Connecting to datadirect.webservices.zap2it.com[206.18.98.160]:80... + connected. + HTTP request sent, awaiting response... 200 OK + Length: unspecified [text/xml] + + [ <=> ] 114,125 63.57K/s + + 02:58:03 (63.53 KB/s) - -' saved [114125] + + Your subscription expires on 08/20/2004 12:00:00 AM + Grab complete. Actual data from Sun Jun 13 05:00:00 2004 to Mon Jun 14 + 00:00:00 2004 (UTC) + + + + Once mythfilldatabase has finished, start the master server before + continuing. + $ mythbackend + + + + mythbackend will print information about connections and what it's + doing to the console. If you'd like to see the options that are + available for mythbackend, type mythbackend -h for help. + + As of MythTV v0.21, the available options are: + + + $ mythbackend --help + Valid options are: + -h or --help List valid command line parameters + -l or --logfile filename Writes STDERR and STDOUT messages to filename + -p or --pidfile filename Write PID of mythbackend to filename + -d or --daemon Runs mythbackend as a daemon + -v or --verbose debug-level Use '-v help' for level info + --printexpire List of auto-expire programs + --printsched Upcoming scheduled programs + --testsched Test run scheduler (ignore existing schedule) + --resched Force the scheduler to update + --nosched Do not perform any scheduling + --nojobqueue Do not start the JobQueue + --noautoexpire Do not start the AutoExpire thread + --version Version information + + + + Running mythbackend as a daemon and using the logfile option will + allow you to have mythbackend automatically start up during boot. You + can follow the steps outlined in the section called ``Automatically + starting mythbackend at system boot time'' for configuration steps. + + If you enable the -l parameter, you will want to keep your logfiles + rotated (so that they don't fill up a partition). See the section + called ``Automatically rotating logs'' for more information. + + + 9.3. Configuring a non-master backend + + Ensure that you've granted access to the master MySQL database for + remote backends as discussed in the section titled ``Modifying access + to the MySQL database for multiple systems'' and that you have the + correct IP address for the database server in the "Database + Configuration" screen of the mythtv-setup application on this slave + backend. + + + + NOTE: Slave backends must not run a local MySQL + daemon. By default, they will connect to their local daemon rather + than the central database, causing unexpected behavior such as empty + "Watch Recordings" lists and a failure to locate the Video Sources + defined on the master backend. Modify the + /usr/local/share/mythtv/mysql.txt file on all slave backends to ensure + that the DBHostName has the address of the MySQL server. Caveat: You + may make a slave backend the primary MySQL server, or run a non-MythTV + database on a slave backend as long as you have edited the mysql.txt + file on all systems and made it consistent. There can be only one + authoritative MySQL database in a MythTV system - errors such as the + one above ensue if backends and frontends have differing ideas of + which MySQL database they should talk to. + + Make sure that the IP addresses on the General setup screen are + accurate. If the slave backend can't communicate with the master + backend due to IP address misconfiguration then MythTV will not + function properly. + + Configuration of a non-master backend follows the same general + procedure as that of the master backend, with the exception that you + skip over the "Video Sources" step. All possible video sources need + to be defined on the master backend system; only the master backend + will query a listings provider to obtain guide data for all the non- + master backends. + + + + NOTE: Do not run mythfilldatabase on a non-master backend. + + 9.4. Configuring and running mythfilldatabase + + + + NOTE: mythfilldatabase might take a while to complete, + depending on any number of factors, most of which you can't control. + It's best to just let the program run to completion. mythfilldatabase + --help will give a full listing of the options available. + + mythfilldatabase --manual is another option; the manual option will + allow you to fine tune channel frequencies and specify which channels + will be added to the database. + + mythfilldatabase --file is an option if there isn't an XMLTV grabber + for your country, but you do have an XML formatted listings file + created by some other program. + + mythfilldatabase --xawchannels is an option if you have used xawtv to + fine-tune your channels and would like to import the fine tuning + offsets into MythTV. + + mythfilldatabase --refresh-today will only pull guide data for today + (in case of late-breaking changes to the schedule). + + + + 9.4.1. Periodically running mythfilldatabase + + In order to keep your database filled, mythfilldatabase should be run + once a day. + + To use MythTV's built-in capability, you'll need to run the + mythfrontend Setup option. From the mythfrontend, enter the + Setup>General screen and advance to "Mythfilldatabase", the fourth + screen. Select the checkbox, then complete the options as you see + fit. The mythbackend program will now run mythfilldatabase for you. + + + + 9.5. Grabbing channel icons for Schedules Direct users + + While the Schedules Direct TV listings service has several advantages, + it does not support grabbing logo icons for the stations you receive. + However, there are utilities provided with MythTV which you may use to + grab your initial set of icons and to keep them updated if your + lineups change. + + First, you need to generate or obtain an XML file with the information + for your stations. + + If you have XMLTV software installed, there is a perl script in + MythTV's contrib/ directory which will generate this file for you. Run + the command: + + + $ perl mkiconmap.pl + + + + You will be asked for your zip code and the service that you use. If + there are no errors, the iconmap.xml file that you need for the next + step will be created. + + If you do not have XMLTV software installed and do not want to install + it for the sake of this minor task, there is a generic + contrib/master_iconmap.xml which you can copy and use but this may not + be as complete as using the specific information for your service. + + Once you have an iconmap.xml file, add the icon information to your + database and grab any new icons with the command: + + + $ mythfilldatabase --import-icon-map iconmap.xml --update-icon-map + + + + 10. Configuring mythfrontend. + + Once you have completed configuration of your backend systems, the + next step is to configure the frontend client. + + When you start mythfrontend for the first time, it will attempt to + connect to a configuration database on the local machine. If there is + none, a "Database Configuration" screen will appear, and you will need + to fill in some details. The "Host name" field needs the backend or + database server's IP address or DNS name, and the User or password + fields may need to be set to match your database user accounts. After + editing those fields, press Enter twice to write these configurations + on your local machine, and attempt to connect to the database. If you + make any mistakes, the screens will pop up again. + + Now that mythfrontend has started up, you should have a number of + buttons/choices. Before doing anything, go to TV, then to Setup and + configure the frontend client. + + + + NOTE: You should go through the various setup screens in + mythfrontend before using any other modules to ensure that the the + database is correctly initialized. + 10.1. General + + The General screen has configuration items that don't really fit + anywhere else. The first few configuration items ask you to indicate + the number of seconds to record before or after a program, which is + useful if the broadcast network or your system clock are out of sync + and will help prevent you missing the beginning or end of a program. + + To change the value, use the left and right arrow keys to increment + and decrement the number of seconds. When you're satisfied with the + result, use the down arrow to put the input focus on the Next button + or press RETURN to continue to the next page. + + The next page has a number of options to do with how channels are + displayed on your system. The help text will give you more + information. Move the focus to Next and press the space bar to + continue. + + The last General page sets up some final configuration items. See the + help text for more information. + + + 10.2. Appearance + + This set of screens is mostly concerned with how MythTV will look on + your system. From here, you can choose different themes and set the + resolution of your system. + + + 10.3. Program Guide + + Fairly self explanatory. Note that the alternate program guide does + not use the same font settings as defined in Appearance, so if the EPG + is unreadable this is where you make the adjustments to fonts, number + of elements displayed, etc. + + + 10.4. Playback + + The one configuration item which may cause problems on your system is + the "Deinterlace playback" setting. MythTV uses a linear blend + algorithm for deinterlacing, which will improve how the image looks on + your screen. Deinterlacing requires that your processor support SSE. + (Streaming SIMD Extensions, aka "MMX2"). Early Intel Celeron (those + that don't use the Coppermine 0.18um core and are usually <600MHz), + Pentium Pro and Pentium II CPUs do not have SSE, so make sure you + haven't enabled deinterlacing if your processor doesn't support it. If + you enable it, and your processor doesn't support SSE, you will get + "Illegal Instruction" errors. + + To determine if you've got SSE on an Intel processor, you can: + + + $ cat /proc/cpuinfo + [snip] + flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca + cmov pat pse36 mmx fxsr sse + + + + Notice the sse at the end of the line - this tells you that this + processor will be able to deinterlace correctly. + + On an AMD processor, look for "3dnow" in the cpuinfo line; "3dnow" is + AMD's implementation of SSE instructions, so if your processor has + 3dnow you shouldn't have any issues with deinterlacing. + + 10.4.1. Video Filters + + MythTV provides a means of employing video filters while recording and + during playback. These filters can be used to improve or modify the + video image, including hiding the effects of an interlaced image or + reducing the impact of noise in a poor video signal. The following is + a brief introduction to introduce you to the filters that are + available in MythTV version 0.20 and higher. + + 10.4.2. Applying filters + + One or more filters can be included in a "filter chain". The filters + to be used are identified in a "filter string". A filter string is a + group of filter names and parameters separated by commas. To include + parameters, the filter name is followed by "=" and the parameter + information. There should be no spaces in the filter string. Here is + an example filter string: + + With parameters: kerneldeint=10:1,denoise3d=12 + + Without: kerneldeint,denoise3d + + Recording filters are set for each individual channel. These may be + used when encoding in software (MPEG-4, RTjpeg) but do not apply when + using a capture card with hardware encoding such as those supported by + the ivtv driver, DVB, HDTV or MJPEG cards. You can run MythTV's + "setup" program and select the "Channel Editor". On the first page for + each channel, you can enter a filter string in the box titled "Video + filters". If you are running "mythweb" on your web server, you can + click on "Settings" then "Channels" and enter filter strings in the + "videofilters" column. + + Playback filters are per-host and apply to any recording you watch + from the frontend where filters have been applied. Playback filtering + can only work with software decoding so the viaslice, xvmc, and ivtv + outputs ignore filters entirely. From "mythfrontend" go to Setup->TV + Settings->Playback. Enter your filter string in the box titled + "Custom Filters". + + + 10.4.3. Currently Available Filters + + "Deinterlace Playback" checkbox. + + This implements special behavior needed for the "bobdeint" filter but + can also be used to choose any of the deinterlace filters. If you + prefer, you may leave this unchecked and include any of the + deinterlace filters, other than "bobdeint", in your custom filter + chain. + + o The "invert" filter + + Invert ignores any parameters and inverts the pixel values of the + video frames. In other words, a negative image. This would rarely be + useful but may be a good example to verify that your filter strings + take effect. + + o The "linearblend" filter + + It is a simple deinterlacing filter that ignores parameters and works + by blending adjacent lines. It replaces combing in interlaced video + with a less distracting "ghost" image. + + + o The "bobdeint" filter + + This filter splits the interlaced image into two separate fields that + can be line doubled then displayed at twice the frame rate. If the + display is at the same refresh rate as the recording (59.92Hz NTSC or + 50Hz PAL) this will cause each refresh to show objects in motion in a + new position with no jagged edges. However, if the display is not + synchronous, it will cause flickering or the appearance of the picture + moving up and down by one line. + + + + NOTE: This filter requires the frame rate to be doubled + and therefore can only be used with the "Deinterlace Playback" + checkbox. Do not include this in your filter chain. + + o The "kerneldeint" filter + + Kerneldeint is a more complex deinterlacing filter which applies a + filter kernel using input from several lines. It generally removes + combing without a "ghost" image, sometimes leaving a faint outline of + the image from the other field. It is considered to be less + distracting to watch than linearblend or no filter at all. It accepts + one or two integer parameters separated by a colon. + + The first parameter is the filter threshold and defaults to 12. + Adjacent lines differing by more than the threshold value are + filtered. The second option defaults to 0. If set to a non-zero + value, it will cause the filter to skip chroma, and filter only the + luminance. It may be useful on some capture cards which do not + capture the chroma fields of interlaced video correctly. + + o The "onefield" filter + + This is a simple one-field deinterlacing filter that uses only one + field of the interlaced video. By default it keeps the top field, + though passing the parameter "bottom" will cause it to keep the bottom + field instead. + + This filter is primarily useful for those who display 1080i HDTV + signals with a video mode that has 540 pixels vertically. The + advantage over other deinterlacing filters is that scenes with motion + never show combing or ghosting. + + o The "adjust" filter + + This filter adjusts the digital values for luma and chroma to ensure + that they will fall within the ranges specified in the ITU-R601 + standard. By default, this corrects a known problem for the luma range + used by bt8x8 chips which causes video to look washed out. If + parameters are passed, there need to be exactly six. However, passing + a single parameter of "-1" will disable the filter. + + 1: luma minimum input value (int) 2: luma maximum input value (int) 3: + luma gamma correction (float) 4: chroma minimum input value (int) 5: + chroma maximum input value (int) 6: chroma gamma correction (float) + + The default bt8x8 correction values are equivalent to + "16:253:1.0:2:253:1.0". Output ranges are fixed at ITU-R601 values + (16-235 luma, 16-240 chroma). + + NOTE: If it is not already specified in the filter chain, this filter + will be automatically applied when recording with the "bttv" driver. + o The "quickdnr" filter + + A fast temporal denoiser. This can take 1, 2 or 4 parameters, each + being a value from "0" for the least filtering to "255" for the + greatest filtering. With one parameter, the filter will compute the + values it should use for all of its variables. Two parameters will set + the filter strength for luma and chroma independently. If you are + interested in how the algorithm works, you may examine the source code + to see how four parameter are used. + + o The "denoise3d" filter + + A slower denoiser that applies a spatial and temporal low-pass filter. + The spatial filter can remove some noise that quickdnr can't, but a + more powerful CPU is needed. This filter accepts 3 float parameters: + + + +o luma spatial filter strength + + +o chroma spatial filter strength + + +o luma temporal filter strength + + Reasonable defaults will be selected for omitted parameters. The + chroma temporal filter strength is calculated from the other filter + strengths. + + o The "crop" filter + + Covers edges of video with black bars. This helps improve video + quality when the edges of the frame are distorted. By default, this + removes 16 pixels from each edge. This can optionally take four + parameters representing top:left:bottom:right. The number times 16 is + the number of pixels to remove so, for example, the default is + "=1:1:1:1". + + o The "forceyv12" and "forceyuv422p" filters + + These force the filter manager to use the given format. You can use + one of these at the head of a filter chain to change the capture + format. The most likely use would be forceyuv422p to use YUV422P + capture on cards with known chroma interlacing problems with YV12. + + There are some filters included in the MythTV source code that should + not be used: + + o The "forcergb24" and "forceargb32" filters + + The two RGB formats should not be used because there is no conversion + filter for them yet. + + o The "convert" filter + + It exists but don't use it. The filter manager uses this filter + automatically when it is unable to match the input/output formats of + two adjacent filters. + + o The "postprocess" filter + + While this exists in MythTV source code, it is currently not + recommended for use. + + + + 10.4.4. Usage Considerations + + There are trade-offs to consider when deciding if it would be wise to + use a filter. Any processing will modify the original image so you + should assess if the filter has made a noticeable improvement to the + picture in order to justify the impact of the processing. Adding any + filter will inherently increase CPU usage. The impact can vary + dramatically depending on your CPU type and speed, the resolution of + the recording, which filters you are using and other factors. You can + only determine what is right for you through experimentation. However, + as a starting point, here are some filter strings that you may find + useful: + + For typical broadcast stations: "kerneldeint,quickdnr" + + For stations with poor signal quality: "linearblend,denoise3d=12" + + For synchronous TV-out: check Deinterlace with "Bob (2x framerate)" + + + 10.5. Recording + + Depending on your capture card, MythTV offers different video + encoders. The following types of hardware encoding cards are + supported: + + +o MJPEG - Zoran-based cards; see http://mjpeg.sourceforge.net + <http://mjpeg.sourceforge.net> + + +o MPEG-2 - iTVC15/16 based cards (Hauppauge PVR-250/PVR-350); see + http://ivtvdriver.org <http://ivtvdriver.org> + + +o HDTV - pcHDTV cards; see http://pchdtv.com <http://pchdtv.com> and + the Air2PC-ATSC-PCI see + http://www.cyberestore.com/product_info.php?cPath=28&products_id=103 + <http://www.cyberestore.com/product_info.php?cPath=28&products_id=103> + + +o DVB - cards supporting DVB; see http://linuxtv.org + <http://linuxtv.org> + + For cards without hardware encoding capabilities (all cards + supported by V4L not listed above), Myth includes two methods for + software encoding: RTjpeg and MPEG-4. RTjpeg has significantly + fewer CPU demands than MPEG-4, but it generates larger files than + MPEG-4 for a given recording. + + For DVB and HDTV cards, no further configuration is required after + setting up the card using the 'mythtv-setup' program. For all other + cards, configuration is done through MythFrontend. Selecting + 'Recording Profiles' from the 'TV Settings' screen will list the + profiles currently available for the cards in your system. Depending + on what types of cards you have installed you may see: + + + (Create new profile group) + Software Encoders + Hardware MPEG Encoders + Hardware MJPEG Encoders + Transcoders + + + + The '(Create new profile group)' option will allow you to create cus- + tom profiles in case you have multiple backends. Note that custom + profiles are per backend and card type. If you have 2 MPEG-2 encoders + in a given backend system, creating a custom profile will affect both + of them. This option should not be needed otherwise. + + The 'Transcoders' group is a little different from the others. + Selecting this group will result in a menu with the following options: + 'RTjpeg/MPEG-4' and 'MPEG-2'. These types indicate what transcoder + options will be used for a given input type (i.e. the 'MPEG-2' + settings would be used to transcode MPEG-2 files into MPEG-4. The + source of the MPEG-2 stream (DVB, HDTV, or PVR-x50) does not matter. + Configuration of the options is the same as below (although any + resolution settings will be ignored). + + Selecting any of the other options will show a new screen with a list + of four profiles: + + +o Default + + +o Live TV + + +o Low Quality + + +o High Quality + + The Default profile will be used for any recording which does not + otherwise have a specific profile assigned. The 'Live TV' profile will + be used when watching TV. The remaining two profiles are available + for customizing to allow for more precise control over what quality is + used for a given program. + + Selecting a profile will allow you to adjust the relevant options for + that card. The most significant setting is the recording resolution, + but you can also choose encoding format, audio format, and tweak other + encoder specific properties. + + + + NOTE: although the width and height can be changed to almost + anything, if you start MythTV and don't see video or you get + "segmentation fault" errors, it is likely that the video4linux (v4l) + subsystem did not like the height and width parameters specified. + It's best to leave the default as-is until you're sure that MythTV is + operational. + + See the ``What capture resolution should I use? How does video work?'' + section for more information. + + + 10.6. Xbox Frontends + + MythTV is able to control the LED on the Xbox to indicate backend + recording status. + + To control the LED, you will need the blink program from the xbox- + linux project, which is installed as /bin/led on GentooX. On Xebian + (the new Ed's Debian) you must install it yourself. On other + distributions it may or may not be installed as a program called blink + and should be located in your path. (Type which blink to see if the + program is available.) If you do not have blink, you may obtain it + from the Xbox-Linux project site at http://xbox-linux.sf.net/ + <http://xbox-linux.sf.net/>. The program you need is part of the + eds_i2c_staff module in CVS. Note the spelling. + + + Once you have installed blink you will need to set permissions. blink + needs write permission to the i2c device to function properly. There + are three methods to accomplish this. First, you could run + mythfrontend as root, which is the simplest method, but could + potentially be a security risk. Next, you may make the blink binary + setuid root, which allows non-privileged users to run a program with + root capability. This is done by typing the command: + + + $ su + # chmod u+s /path/to/blink + + + + The final technique would be to set the /dev/i2c/0 device read/write + for all users, but this is the least preferred method. + + Now it's time to setup MythTV for Xbox hardware. Enter Setup -> + General. On the second page check the 'Enable Xbox Hardware' option. + Upon reentering the settings, you should have a new option named + 'Xbox'. Within this option you may select the distribution, LED + colors for recording and the update interval. If you select GentooX + as the distribution led will be used as the blink binary name, + otherwise, blink is used. Colors should be self explanatory. The + update interval determines how often the frontend should poll the + backend to determine if the status has changed. + + + 11. Using MythTV. + + + + NOTE to Red Hat/Fedora 4 users: Red Hat Linux and Fedora Core ship + with Gnome as the default desktop environment. However, Gnome seems + to have issues with window focus and window switching which sometimes + cause mythfrontend to obscure the video. KDE does not seem to have any + such issues. Therefore you will need to switch to KDE by selecting + RedHatMenu>Extras>System Settings>Desktop Switching Tool and choose + "KDE". NOTE to Fedora Core 5 and 6 users: Fedora 5 and 6 no longer + have this tool in the Menu. Use "switchdesk KDE" from a command line. + Read "man switchdesk" for further information about changing to other + desktop environments. + + 11.1. Keyboard commands + + The keys.txt file describes what the various keyboard commands are. + If you have loaded mythweb, you may change the default keys to your + liking. + + 11.1.1. mythfrontend + + + Arrow keys used to move the highlight point around + ALT-F4 exit out of the application + Space/Enter take action on the item under the highlight point + P play in both "Watch a Recording" and "Delete a Recording" + D delete in both "Watch a Recording" and "Delete a Recording" + U to view details for the currently selected show on the Watch or Delete screens, EPG, "Program Finder", "Fix Scheduling Conflicts" and search results screens + O to list the upcoming episodes for the currently selected show on the EPG, "Program Finder", "Program Recording Priorities", "Fix Scheduling Conflicts" or search results screens + I edit recording options from the EPG, "Program Finder", "Program Recording Priorities", or "Fix Scheduling Conflicts" screens. From the Playback and Delete screens, 'I' presents options for recorded shows such as Auto Expire or Stop Recording. Pressing 'I' while on the Recording Options screen will take you to the Advanced Recording Options screen. + + + 11.1.2. Watching TV or a recording + + + Up or down keys change the channel + num pad Type a number to enter a channel number or jump amount (HHMM format) + P pause / play. You may also add an explicit keybinding for 'Play' through MythWeb, returning you to normal speed if you are in slow motion, rewind fast forward or pause mode. + C change inputs on TV Tuner card + ESC quits + I puts the On-screen Display up again. During playback, 'I' toggles between position and show description info. If a jump amount is entered, jump to that position. + M brings up the electronic program guide (Grid) -- see the EPG section + Page Up jump back the configured number of minutes (default is 10) + Page Down jump ahead the configured number of minutes (default is 10) + End or Z skip to next commercial break marker + Home or Q skip back to previous commercial break marker + T toggle close caption support Pressing 0-9 (preferably 3 times) + T changes teletext page and turns on teletext. + F rotate between the various Picture Adjustments (Colour, Hue, etc.) While Picture Adjustment is on-screen, use Left and Right arrows to adjust. These settings adjust the look of the video playback, and are independent of the G-key settings used at record-time. + [ or F10 decrease volume + ] or F11 increase volume + or F9 toggle mute + / jump to the next "favorite" channel + ? mark/unmark the current channel as a "favorite" + U increase the play speed + J decrease the play speed + A Adjust time stretch (speed up or slow down normal play of audio and video + W cycle through zoom and fill modes: 4:3 aspect ratio, 16:9, 4:3 Zoom (like Pan and Scan), 16:9 Zoom, and 16:9 Stretch (eliminates black sidebars in TV signal) + F8 toggle the sleep timer 30m->1hr->1hr30m->2hr->Off + CTRL-B Jump to the beginning of the recording / ringbuffer + + Switch between audio streams + Left (if a jump amount is entered) to jump back that amount + Right (if a jump amount is entered) to jump ahead that amount + + + Without the stickykeys option selected + Left rewind the configured number of seconds (default is 5) + Right fast forward the configured number of seconds (default is 30) + < starts rewind mode as if stickykeys are selected + > starts fast forward mode as if stickykeys are selected + + + With Stickykeys option selected + Right starts fast forward mode + Left starts rewind mode + + + In fast forward or rewind mode: + Left/Right increases the ff/rew speed + 0 plays at normal speed, but leaves the time indicator on screen + 1 or 2 plays back more slowly than normal ff/rew speed (1 is slowest) + 3 plays back at normal ff/rew speed + 4-9 plays back faster than normal ff/rew speed (9 is fastest) + Space exits fast forward or rewind mode + + + While video is paused: + Left rewind 1 frame + < rewind 1 second + Right advance 1 frame + > advance 1 second + + + 11.1.3. Watching TV only + + + + G rotate between the various Picture Adjustments (Colour, Hue, etc.) for recording. These values affect the look of the resulting .nuv file, and are independent of the playback picture settings. While Picture Adjustment is on-screen, use Left and Right arrows to adjust. + H Channel history. Each repeat steps back through the previous channels. + O Turns on 'Browse' mode, allowing user to browse channels and program info while watching current show FullScreen. + Y switch between multiple capture cards. NOTE: you will lose your LiveTV buffer on your current card. Useful for different-sourced cards (such as Dish Network on one, HDTV over-the-air on another card.) + + 11.1.4. LiveTV Browse Mode + + + Left browse program prior to current listed program + Right browse program following current listed program + Up browse program on channel above current listed channel/program + Down browse program on channel below current listed channel/program + / browse program on next favorite channel + 0-9 enter a channel number to browse + Space/Enter change channel to channel of current listed program + R/r Toggle recording of current program (cycles through types) + ESC/O Exit Browse mode + + + 11.1.5. Playback Recording Zoom Mode + + + Left Move video to Left + Right Move video to Right + Up Move video Up + Down Move video Down + PageUp Zoom In + PageDown Zoom Out + Space/Enter Exit Zoom mode leaving picture at current size and position + ESC Exit Zoom mode and return to original size + + + 11.1.6. If you have two or more tuner cards + + + V toggle Picture-in-picture on or off + B toggles the window focus (lets you change channels on the PiP window) + N swaps the two channels by changing channels on both cards + + + 11.1.7. Watching a recording only + + + Space/Enter set a bookmark at that point. Next time you start the recording, you will automatically jump forward to this point and clear the bookmark. + X queues the current recording for transcoding + O brings up menu to allow toggling settings such as Commercial Auto-Skip, Auto-Expire, etc. + D exits the current recording and displays the Delete menu + E or M enters/exits edit mode. + + + In edit mode + Left/Right move forward and backward + Up/Down alter the amount of time you jump forward and backward. Increments are: nearest cutpoint, nearest video keyframe, 1 frame, 0.5 seconds, 1 second, 20 seconds, 1 minute, 5 minutes, and 10 minutes. + PageUp/PageDown move forward and backward to the nearest cut point + < or > move forward or backward by 10 times the normal jump amount + Space/Enter allows you to set or delete a cut point + Z loads the commercial skip list (if one exists) into the cutlist + C or Q clear all cut points in the cutlist + I Inverts the cutlist + + + 11.1.8. EPG + + + + Arrows are used to move the highlighted program point around + A, D, S, W perform the same as left, right, down and up + PageUp/PageDown move the channel list up or down a page + Home/End move the highlight left or right by one day + Ctrl+Left or < move the highlight left by one page + Ctrl+Right or > move the highlight right by one page + 9, 3, 7, 1 (like a numeric keypad) perform the same as PageUp, PageDown, Home and End + I bring up more information about a show, and allow you to schedule a recording. If you select "Record this showing" while watching Live TV you can "Instant Record" a program. + Space/Enter allow you resolve conflicts or change overrides. If the program is not already scheduled to record, it will instead act like pressing 'I'. + M when on a channel will change to that channel + ESC or C exits without changing the channel + R change the current item from Recording/Not-Recording. Successive keypresses cycle through the scheduled recording type list. + X change the channel to the currently selected channel without leaving the EPG (Most useful in the alternate EPG) + ? mark/unmark the current channel as a "favorite" + / or 4 toggle the guide listing between all channels and filtered "favorites" + + 11.1.9. Setting Program or Channel Recording Priorities + + + Right increases priority value + Left decreases priority value + 1 sorts by title + 2 sorts by priority + Home/End toggle sort priority + I edit recording options + ESC commits changes and exits + + + 11.1.10. Viewing Scheduled Recordings/Resolving Conflicts + + + 1 show all recordings + 2 show only important recordings + Home/End toggle show showing all/important + I edit recording options + Space/Enter resolve conflict or override + + + 11.1.11. Viewing Search Listings + + + Home change to the previous view if applicable + End change to the next view if applicable + M select another view if applicable. In the title and description search popup, press M again to edit or delete the selected view. + + + 11.1.12. Recording Profiles Setup Screen + + + D on a custom profile group displays a popup to delete the group + + + 11.1.13. Recording Groups + + In the Watch Recordings screen, Recording Groups allow you to separate + programs into user-defined categories, such as "Kids", "Alice", "Bob", + etc. This can be used to reduce clutter, or to segregate content if + you use the PIN function. + + M change the view or to set a group password + I move a program from one Recording Group to another + + + + 11.1.14. Watch Recordings Screen + + + 1 or F1 Meaning of the icons + / Tags a recording. Tagged recordings can be played either in order or shuffled and deleted as a group. You can also change the recording group for several recordings at once by tagging them and using the Menu (m) button, selecting "Playlist options", then "Change Recording Group". + ? Clear the tagged list. + + + 11.1.15. Remote Controls + + If you are using MythTV with just a remote control then it is + suggested that you map the remote control keys as described below. + Your remote control may not have the same set of keys as those named + below, the names are only a suggestion that roughly correspond to the + function. + + If you are adding new key bindings to the program then consideration + of this suggested list will help users with remote controls. + + This list assumes a minimal remote control that only has 20 keys, + nearly all features can be used with this configuration. If you have + more keys then you can access all of the features. With only 16 keys + most features are usable. + + REMOTE CONTROL LIRC KEYSTROKE FUNCTION + 0 - 9 0 - 9 channel selection, EPG navigation, ff/rew speed setting (with stickykeys) + Left Arrow Left scroll left, rewind + Right Arrow Right scroll right, fast forward + Up Arrow Up scroll up, channel change up + Down Arrow Down scroll down, channel change down + Select / OK / Play Space Select item, play (with stickykeys) set bookmark + Cancel Escape Cancel, quit playback + Menu m EPG (from watching TV) edit (from playback). + Pause p Pause + Other key 1 i Information + Other key 2 c Change tuner card input + + + + 11.2. Using themes with MythTV + + MythTV is "themeable", meaning that the visual appearance of the + program can be modified by the user without re-compiling or altering + the program functionality. Download the MythThemes tarball from the + website and untar it: + + + + $ tar -xjf myththemes-0.21.tar.bz2 + $ cd ~/myththemes-0.21 + $ qmake myththemes.pro + $ su - + # make install + # exit + $ + + + + The theme will now be available in the mythfrontend Appearance + section. + + + + 11.3. Adding DishTV information to the database + + A script for adding Pay Per View information into the MythTV database + for DishTV subscribers is available at http://www.mythppv.com/ + <http://www.mythppv.com/>. + + + 11.4. Adding support for an external tuner + + MythTV supports changing the channel on an external tuner. If you + have an external tuner, such as a DirecTV or digital cable set top + box, you should add /usr/local/bin/changechannel to your Input + Connections in the mythbackend configuration GUI. + + However, there is not changechannel program per-se, because this is + going to be dependent on what sort of external tuner you have. Look + in the contrib/channel_changers directory for a number of programs and + scripts which may be used to change channels. Once you find one which + works, copy it to /usr/local/bin/changechannel. + + Feel free to browse some of what sort of hardware is available at + http://store.snapstream.com/accessories.html + <http://store.snapstream.com/accessories.html>, or if you wish to + assemble your own, rather than purchase, the following may be helpful: + http://www.dtvcontrol.com/ <http://www.dtvcontrol.com/> for cable + pinouts. + + + 11.5. Using Shutdown/Wakeup + + What does the MythTV Shutdown/Wakeup function do? The scheduler on the + Master backend (MBE) keeps track of the idle status of the entire + MythTV system, including the Slave backends (SBE). If it considers the + system to be idle, and thus ready to shutdown, it sets the wakeuptime + to the time of the next recording and then proceeds to shut down all + Slave backends and then itself. Once it is time to begin recording, + the Master backend and the Slave Backends are automatically woken up. + This system allows MythTV to record like a normal VCR, thereby + conserving power when not in active use. + + In order to use the Shutdown/Wakeup function there must be some method + of waking up the Master backend. There are any number of solutions, + but we will discuss in detail two possibilities: + + + +o Use another server that runs 24/7 and have it send a WakeOnLAN + (WOL) packet to wake the Master backend. This assumes that you + have the WOL tools installed, and that your Master backend + motherboard supports WOL. + + +o Use your motherboard's BIOS wakeup capability. You'll need a + motherboard that supports BIOS wakeup, and some tools. Two that + work are: http://sourceforge.net/projects/nvram-wakeup + <http://sourceforge.net/projects/nvram-wakeup> and + http://www.malloc.de/tools/wakeup_clock.html + <http://www.malloc.de/tools/wakeup_clock.html> + + + 11.5.1. A deeper look into the operation + + The scheduler keeps track of the idle status of the MythTV system. To + determine whether or not the MythTV system is idle, the following + conditions must be met for a period of time defined in the "Idle + timeout (secs)" parameter. + + + +o no client is connected to the server + + +o no recording (neither LiveTV nor a regular recording) is currently + taking place + + +o no recording starts within a definable amount of time ("Max. wait + for recording (min)") + + +o the "pre Shutdown check-command" returns 0 + + If we get to this idle state the Master backend will set the + wakeuptime using the "Set wakeuptime command", which is the same for + WOL and BIOS wakeup. The Master backend will then shut down the Slave + backends and itself using the "Server halt command". + + One caveat is that the scheduler tries to guess if the Master backend + was started by a wakeup call or by the user. If it thinks it was woken + up by a user, it blocks shutdown until a client connects to the Master + backend, after which it will behave as described above. To disable + this feature, unset "Block shutdown before client connected" in the + mythfrontend Setup->Setup->General screen. + + Once it is time to startup the system, the Master backend is woken up + first and will wakeup the Slave backends using the "Wake command for + slaves". At this time, there is no support for starting only the + required Slave backend, so all Slave backends will startup. + + + 11.5.2. Setting up the MythTV side of this extension. + + There are a number of options that are used to control the Shutdown / + Wakeup feature. + + Shutdown/Wakeup Options: + + +o "Idle timeout (secs)" is the time the server waits while idle until + a shutdown occurs. + + +o "Max. wait for recording (min)" is the time the Master backend + waits for a recording without shutting down. For example, this + would be used to prevent a 10 minute system shutdown if a recording + is set to start 15 minutes from now. + + +o "Startup before rec. (secs)" Sets how long before a programmed + recording the MythTV system will be woken up. This should be + roughly be the time your systems need to bootup, and if you have + Slave backends, you'll need to ensure this value is long enough for + all your machines to perform their bootup cycle. + + +o "Wakeup time format" is the format of the wakeup time that is given + in the "Set wakeuptime command" as a parameter "$time". You need to + set this according to your wakeup mechanism. If you need seconds + since the epoch (1970-01-01) set the "Wakeup time format" to + "time_t". + + +o "Set wakeuptime command" is the command executed to set the new + wakeuptime. + + +o "Server Halt Command" is the command executed to shutdown the + Master backend and the Slave backends. + + +o "pre Shutdown check-command" is used to give a "Go/NO-GO" decision + from a non-MythTV source. This command is executed immediately + before the shutdown would occur. The return value is use to make + the following choices: + + +o If it returns a "0" the shutdown will occur as scheduled. + + +o If it returns a "1" the "idle timeout" will be reset and the + system waits again for the timeout. + + +o If it returns a "2" the entire shutdown sequence is reset. This + means that a new client connect is needed before a shutdown + occurs, unless you have the "Wait for client connect" setting + disabled, in which case this is the same as returning "1". An + example of a use for this return value is to prevent the + shutdown if a user is currently logged in, or if a specific + program (i.e. transcode, automatic updates, etc.) is currently + running. If you don't need it, leave the field blank. + + The "WakeOnLan settings": These settings have nothing to do with using + BIOS or WOL wakeup, they are the same for both. + + +o "Master backend" This setting defines timings for the frontends to + wakeup the Master backend using WOL. Useful if your frontend can + emit a WOL packet so you don't need to physically go to the Master + backend if you're trying to watch TV. + + +o "Reconnect wait time (secs)" is the time the frontend waits after + executing the "Wake command" before attempting to retry the + connection. This should be roughly the amount of time your Master + backend needs for bootup. Set to "0" to disable. The frontends + will retry to connect for "Count of reconnect tries" times before + giving up. + + +o "Wake command for slaves" is the one command executed to wake your + Slave backends. This should be a script that contains the calls to + wakeup all Slave backend systems. + + + 11.5.2.1. Using WOL to wake your Master backend. + + To use WOL to wake your Master backend you will need a WOL capable + Master backend, a machine that runs 24/7 which can execute an at-job + and nc (netcat) on the Master backend. I use some little bash scripts + to make my DSL router wakeup my mythbox if required. + + Replace $SERVER and $PORT with your own settings! On my Master + backend I have a script that gets called as 'setwakeuptime command' + which looks like the following: + + + #! /bin/sh + echo $@ | nc $SERVER $PORT + + + + This simply cats the parameters (that is $time) to my 24/7 server. On + my $SERVER I have (x)inetd listening on $PORT starting a little script + which cares about setting the at-job. The following additions are nec- + essary on the $SERVER: + + If you use inetd: + + In /etc/inetd.conf add: + + + mythwake stream tcp nowait mythtv /usr/sbin/tcpd /usr/local/bin/mythwake + + + + If you use xinetd, save the following as mythwake in your + /etc/xinet.d/ directory: + + + service mythwake + { + socket_type = stream + wait = no + user = mythtv + protocol = tcp + id = mythwake + server = /usr/local/bin/mythwake + } + + + + and add the following to /etc/services: + + + mythwake $PORT/tcp + + + + Finally, /usr/local/bin/mythwake looks like: + + + #! /bin/bash + #this should be a command to wake your server + WAKECMD="#!/bin/sh\n /usr/local/bin/wakeMBE" + #first we need to delete all wake jobs in queue + for JOB in atq | cut -f 1 ; do + atrm $JOB; + done + #now we read the date from 'nc' + read date; + #now set the atjob + echo -e "$WAKECMD" | at $date ; + + + + SECURITY WARNING: Be sure to secure $SERVER:$PORT from untrusted net- + works, because this allows 3rd parties to run arbitrary code on your + server! + + + 11.5.2.2. Using BIOS wakeup to wake your Master backend. + + Since I don't use this, I cannot say much about this. If your + motherboard supports any wakeup tool you have to call that tool as + "Set wakeuptime command" with the "Wakeup time format" suitable for + that tool. + + 11.5.3. Wakeup the MySQL server using WOL + + If your MySQL server and your Master backend are not on the same + machine, you can have the Master backend wake your MySQL server using + WOL. You will find the settings for this in the second page of the + mythtv-setup program, or at the end of mysql.txt. The meanings are + the same as discussed in "The WakeOnLan settings" above. + + + + 11.5.4. Tips/Tricks: + + If, for example, one of the Slave backends is also your desktop + computer, you could simply use a little script as 'server halt + command' which first calls /sbin/shutdown -t TIMEOUT where TIMEOUT is + a value sufficient for you to react. You could then popup a window + using *dialog, asking for permission to shutdown. If you cancel the + shutdown, simply call /sbin/shutdown -c. + + If you get "nvram-wakeup: /dev/rtc: Device or resource busy" your set- + wakeuptime-script should stop the program that uses /dev/rtc before + setting the wakeuptime. + + 11.6. Controlling the mythfrontend via telnet + + To use this feature you must first enable it in + Settings>General>General + + The network control listens on port 6546, as demonstrated below: + + + + $ telnet basement 6546 + Connected to basement. + Escape character is '^]'. + MythFrontend Network Control + Type 'help' for usage information + --------------------------------- + # help + Valid Commands: + --------------- + jump - Jump to a specified location in Myth + key - Send a keypress to the program + play - Playback related commands + query - Queries + exit - Exit Network Control + + Type 'help COMMANDNAME' for help on any specific command. + + # help jump + Usage: jump JUMPPOINT + + Where JUMPPOINT is one of the following: + channelpriorities - Channel Recording Priorities + channelrecpriority - Channel Recording Priorities + deletebox - TV Recording Deletion + deleterecordings - TV Recording Deletion + guidegrid - Program Guide + livetv - Live TV + livetvinguide - Live TV In Guide + mainmenu - Main Menu + ...snip... + # exit + $ + + + + Please note that this feature only allows one connection at a time, so + any new connections will automatically terminate prior ones. + + + 12. Scheduling Recordings. + + The MythTV master backend is responsible for managing the schedule for + all TV tuner cards on the master and any slave. Its job is to search + the TV listing for the shows you have requested and assign recordings + to the TV tuner cards. If none of the shows that you've chosen + overlap, it simply records all of them. However, if there are shows + where the beginning and end times overlap, the scheduler follows rules + that you've specified or makes logical decisions about what would be + best if you haven't expressed your preference. Further, the "Upcoming + Recordings" page allows you make specific decisions about what you + really do and don't want to record. + + + 12.1. Record Types + + When you choose a show that you would like to record from the Options + Page, there are eight different types of rules to help the scheduler + find which showings you would like to record. + + + +o Single Record -- record only this title at this specific time and + this station. This is the best way to be sure that a certain + showing will be recorded. However, if the TV listings change and + the show is not broadcast at that time, the show will not be + recorded but will be marked as Not Listed to let you know that you + should investigate. + + +o Find One -- this will record a title once from any of the times + that appear in the TV listings. This is useful for recording a + movie or special that has multiple showings because it allows the + scheduler to choose one that doesn't conflict. It is not a good + choice for recording a single episode of a series because it + records the first available showing of the title without regard to + the episode information. + + +o Record Weekly -- this records a show whenever the title is listed + on the same channel, weekday and time. Note that if the TV station + changes the schedule for a special episode, it would not be + recorded. However, you can add a Single record for the special + episode. If there are no matching showings in the TV listings, a + Not Listed item will be added to your schedule for the next time + slot to let you know that you should investigate. + + +o Find Weekly -- this will record a title once per week from any of + the times that appear in the TV listings beginning from the time of + the showing that was selected when the rule was set. This is useful + for news, current events or other programs where the same episode + is shown several times each week but the listings may not include + descriptive information. This may not be a good choice if there are + different episodes shown during the week. + + +o Record Daily -- this records a show whenever the title is listed + for the time and station on any day of the week. Here again, a show + will not be recorded if the time was altered by the station. If + there are no matching showings in the TV listings, a Not Listed + item will be added to your schedule for the next time slot to let + you know that you should investigate. + + +o Find Daily -- this will record a title once per day from any of the + times that appear in the TV listings beginning from the time of the + showing that was selected when the rule was set. This is useful for + news, current events or other programs where the same episode is + shown several times each day but the listings may not include + descriptive information. This may not be a good choice if there are + different episodes shown during the day. + + +o Channel Record -- records one showing of each unique episode from + any of the times the title is listed on this station. This is + perhaps the most common rule to use for most shows. + +o Record All -- records one showing of each unique episode from any + of the times this title is listed on any channel. This can be + useful if a station has sister stations where shows are rebroadcast + allowing the scheduler to record rebroadcasts on the other station + when the original airing cannot be recorded. + + + 12.2. Scheduling Options + + 12.2.1. Priority + + By default, all shows you select have equal value to the scheduler. + There are a set of rules to make good choices when two or more shows + are in conflict. However, priority values let the scheduler know what + you prefer so that it can set the schedule based on your preferences. + + Initially, recording rule priority values are set to zero. You may + choose to leave everything at "0" and let the scheduler follow rules + to guess what you might prefer when there are conflicts. However, if + you have one or two favorite shows, you may want to increase the + priority value so the scheduler will know that you would prefer + recording these over other shows. You might use certain values to rate + shows so that all favorites are 2. good shows are 1 and extra 'filler' + shows are all -1 for example. You could sort each title on the "Set + Priorities" page to have a unique value so the scheduler can know + which show you'd prefer versus any other show. The choice and style + are entirely up to you. However, the more information you give to the + scheduler, the more likely it will make the choices you would prefer + in the first place. + + The scheduler choices are based on the total priority for a showing by + adding up all priority factors that match the showing. By default, + most of these factors are "0" but you may use any combination to + express your likes and needs. + + + +o Per record rule -- this is the "priority" selection in the + "Scheduling Options" section of the options page and this value is + included for any showings that match the recording rule. You may + choose to only use these values and not use the other factors for + the sake of simplicity and clarity. + + +o Per record type -- Setup->TV Settings->Recording + Priorities->General allows you to add to the priority based on the + type. It may make sense to increase the value for "Single" so that + by default they have an extra advantage over other shows. The + default is +1. You may want to decrease the value for Find rules so + that they will be less likely to interfere with regularly scheduled + shows and will be more likely to record in a non-conflicting time + instead. The default is -1. + + +o Per channel -- Setup->TV Settings->Recording Priorities->Channel + Priorities can be useful if you believe that you prefer any of the + shows on certain channels. This would give all shows on a channel + an advantage by default. + + +o Input priority -- in the "mythtv-setup" program, the "Input + Connections" section allows you to add additional priority in the + "Input priority". This is simply another priority factor but has + an interesting effect. If a card input has a higher value than the + other cards, the scheduler will see that you would rather record + showings of episodes on this input rather than a showing on other + inputs. If you have multiple cards of different quality, you may + want to set input priority to encourage the scheduler to record + shows on your best card(s) whenever possible. This can also be + useful if you have multiple video sources which include the same + stations. For example, with digital and analog cable you could + increase the digital cable input preference by 1 to tell the + scheduler that you want to record from the digital channel whenever + possible but the channel on the analog input could still be used + when the digital input is busy. + + +o Custom Priority -- this allows you to add any specialized factors + you would like in order to influence scheduling decisions. See the + ``Custom Priority'' section below. + + For any single showing of any show you've chosen to record, these + factors are added together to find the "total priority". This is + the priority that the scheduler uses to decide which showings are + given the first choice when filling in the schedule. + + The scheduling priority of a show may also be used to determine auto- + expiration of recordings when disk space gets full (see ``Auto- + Expire'', below). + + + 12.2.2. Duplicates + + Singles will record without regard to duplicate matching. + + + The standard recurring methods of All, Channel, Weekly and Daily use + the descriptive information in the TV listings to try to record only + one showing of each unique episode. However, This goal is sometimes + complicated by the fact that the stations may not include a + description for a specific episode but use a generic description for + the series instead. When there is a generic description, the default + behavior is to assume that it may be an episode that you have not seen + and to record it for you. One of the duplicate matching options is + "Record new episodes only". If this is selected, listing that have an + original air date of more than 14 days earlier are considered repeats + and are not eligible to record. Generally, generic episodes will be + marked as repeats also. + + + Because of generic episodes and other situations, MythTV offers an + alternative approach where shows may be recorded by choosing from + multiple showings even when the descriptive information is not + reliable. All of the "Find" record types look for matching titles in + the listings. If there is a showing with specific episode information + and that episode has recorded before, that showing is marked as + previously or currently recorded. The scheduler will then choose to + record the earliest non-conflicting showing from any of other + remaining showings regardless of the descriptive information. + Generally, Find One is most useful for movies or specials and the Find + Daily and Find Weekly rules are best for news or current events shows + that are repeated. However, these may be useful in other situations + where the standard recording rules may not work correctly. + + + 12.2.3. Conflicts + + As you add more shows that you would like to record, the scheduler + will eventually encounter conflicts. If there are two shows at the + same time and you have two or more TV tuner cards, both shows will + record. However, if there are more shows than cards, the scheduler + will have to decide what it thinks it should not record based on the + information you have given. If you see an unexpected situation you are + not "stuck" with the scheduler's choice. You can still tell the + scheduler exactly which shows you do want to record and/or don't want + to record in any situation. + + 12.2.4. Scheduling decisions + + Here are the actual decisions made by the scheduler as it fills in the + schedule. + + + +o Currently recording beats not currently recording -- A recording in + progress can not be moved to another input or time so it "wins" its + current timeslot. + + +o Single, Daily, or Weekly rules with no match are marked Not Listed + -- If these or Overrides do not match the current listings because + the listings have changed, they are added to the schedule and + marked to indicate that they will not record. + + +o Rules that could record beat rules that can not record a showing -- + If two rules match the same showing of a program, a rule marked as + inactive or a showing marked as a repeat, for example, yield to the + other rule. + + +o More specific record type is used in place of less specific -- If + two rules match the same showing of a program, preference is given + to Don't Record then Override, Single, Find One, Record Weekly, + Find Weekly, Record Daily, Find Daily, Channel and finally All. + + +o Higher total priority beats lower total priority -- This is the + core of the scheduling process. Episodes of the highest priority + show are placed on the first available input followed by the next + highest priority show and so on. + + +o Future start time beats past start time -- If there is an episode + in progress and also a later showing of the same episode, it is + better to record the complete episode. If there isn't another + showing, it will start recording immediately to record the + remaining portion. This should only happen if you add a new rule + while the show is in progress or if the master backend is started + after the start time of a scheduled show. + + +o More specific record type beats less specific record type -- If two + shows are on at the same time and have the same total priority but + different types they will be sorted by Single then Find One, Record + Weekly, Find Weekly, Record Daily, Find Daily, Channel and finally + All. This only applies if the priorities are the same. + + +o If both start times have passed, later start time beats earlier + start time -- This attempts to miss the least amount of time. + + +o If neither start time has passed, earlier start time beats later + start time -- This helps assure that the earliest showing of an + episode has the advantage. + + +o Lower input id beats higher input id -- The scheduler fills in open + time slots on the first available input for the video source. The + next input is used when there is another show already placed for + the card of the first input. + + +o Older record rule beats newer record rule -- If two shows are still + equal after all of these other checks, the show whose record rule + was added first is preferred over a more recent addition. + + +o Postpone showings to resolve conflicts -- If Reschedule Higher + Priorities is set or if a conflict has the same priority as a show + that was scheduled at the same time, the scheduler will check to + see if a scheduled show can be moved to another input or later + matching showing without creating a new conflict so that the + conflicting show can be scheduled to record. + 12.2.5. Reschedule Higher Priorities + + Setup->TV Settings->Recording Priorities->General has a checkbox for + "Reschedule Higher Priorities" which tells the scheduler to try to be + a little smarter in certain situations. If this is checked, the + scheduler will look for situations where a show cannot record because + all inputs for the channel are used for higher priority shows. It will + check to see if any of the other shows could be recorded at another + time so that the conflicting show can be recorded in its place. + + Generally, this is a good strategy but there are tradeoffs. If a + higher priority show is postponed, you will not get to watch it until + it is recorded in the later timeslot. There is also a risk that the TV + listings may change and the later showing may go away. In this rare + case the higher priority show may never record. On the other hand, if + you do not use this option you will miss recording some lower priority + shows unnecessarily unless you manually make similar changes. + + By using Reschedule Higher Priorities, the scheduler will do a better + job of recording as many of your shows as possible when left + unattended. It will also be easy to see that shows have been marked to + record at a later time. You can then decide for yourself when you + would prefer to record the first showing by clicking "Record anyway". + + + 12.2.6. Controlling Your Schedule + + The Manage Recordings->Upcoming Recordings page is your control center + for the MythTV scheduler. Unlike other DVR systems, this one page + gives you all of the information and tools you need to see all of your + alternatives and make whatever adjustments you desire. + + The upper half of the screen has a scrollable box listing items that + match your record rules sorted by time. The lower half shows the + details for the highlighted item. There are two 'views' available. + Press "1" to include all of the items that match record rules even if + they do not need to be recorded. Press "2" to focus on just the things + that will record and items that may need your attention. The message + in the upper right-hand corner will remind you when there are + conflicts that would prevent one or more shows from being recorded. + + The items in the list are colored in the record color for things that + will record, white for things that may need attention, gray for those + that do not need to record and yellow when there is a time conflict. + Items at the top of the list may also be highlighted indicating that + the recording is in progress. + + Along with the channels, start times and titles, the right-hand column + has a status code. Numbers indicate which card number has been + assigned to record the show. Letters are used to indicate the reason + that something will not be recorded. Just below the box is a short + status message for the highlighted item that indicates the type of + record rule that was matched, the "total priority" for this showing + and a one or two word explanation of the status code. If you press + SELECT, you will see more information about the status. + + There are a few status codes that may require your attention. "C" + indicates that there are more overlapping shows to record than there + are TV tuners to record them. "L" indicates that the scheduler found + that it may be better to record a later showing of this episode. These + states happen as a result of your choices and should normally reflect + your preferences. However, you may notice situations where you would + like to modify the scheduler's initial choices. + + The first thing you can do is to highlight an item and press INFO to + see the recording options page. From this page you can change the + record rule type, the duplicate matching rules, or raise or lower the + priority to resolve whatever problem you noticed. + + Additionally, you can treat any individual showing as an exception + that you do want to record or don't want to record. To use these + "override" features, highlight the item and press SELECT. You will see + a message explaining the current status and at least an "OK" button to + exit without making changes. + + For items scheduled to record, there will be a button for "Don't + record" which will prevent recording this showing but will still allow + the same episode to record in the future. If there is episode + description information, you may also see a button for "Never record". + This prevents recording this showing and tells MythTV to remember that + this is an episode that you've seen or don't need to see if it is ever + in the TV listings again. + + For items that are not scheduled to record, the message will describe + the reason and in the case of "C" or "L" it will include a list of the + shows that are scheduled to record instead. For any item that could + potentially be recorded there will be buttons for "Edit Options" and + "Add Override". "Edit Options" will allow you to change the options + for the existing record rule such as raising the priority so that the + show will record. These changes would apply to this and all future + showings that match this record rule. "Add Override" will allow you + to set options that apply to the specific showing without affecting + the recurring record rule. + + If you return to an override page after an override has already been + set, you will also see a "Clear Override" to undo your changes. This + option makes it very easy to try out some "what if" attempts when + deciding on your best strategy in a difficult situation. + + For a recording in progress, there will be a "Change Ending Time" + button. This will take you to the options page for a Single or + Override or create an Override if it is a recurring rule. Here you can + go to the Recording Options section to change the program end time + offset. If you extend the end time so that it overlaps upcoming + recordings, the schedule will change to accommodate the new end time. + This may cause a conflict or later showing even for a show with higher + priority. Therefore, it is a good idea to check your schedule after + changing the end time of a recording in progress. + + + 12.3. Storage Options + + 12.3.1. Recording Profile + + Each recording rule can be configured with a different recording + profile. For example, colorful cinematography can be configured with + a "High Quality" profile, while 'talking heads' interviews shows can + be configured with a "Low Quality" profile. These recording profiles + need to be configured before using them (see ``Recording'', above). + + + 12.3.2. Recording Group + + For organization of the "Watch Recordings" screen and the MythWeb + interface, recordings can be assigned into "recording groups". + + + 12.3.3. ``Storage Groups'' + + This allows you to select any special "Storage Groups" you may have + created to determine where recordings from this rule should be stored + on your disks. The "Default" storage group is always available. + 12.3.4. Playback Group + + This selects a set of pre-configured playback parameters which can be + created and edited in Setup->TV Settings->Playback Groups. When the + recording is played, the values from this playback group will be used. + This allows you to choose a default time stretch value, skip and jump + amounts appropriate for this type of television program. + + + 12.3.5. Auto-Expire + + MythTV will "autoexpire" old recordings to make room for new + recordings when disk space gets filled up. This option can be set to + "Don't allow auto expire" to prevent these recordings from being + automatically deleted when disk space fills up. + + + The default setting is for all scheduled recordings to be eligible for + auto-expiration; this can be changed in the Settings->TV + Settings->General page by manipulating the "Auto Expire Default" + checkbox. + + + The default auto-expire policy is "Oldest Show First"; the oldest + recordings are deleted first. The "Lowest Priority First" method + chooses to expire the lowest-priority recordings first. + + + 12.3.6. Episode Limit + + An episode limit can also be configured to limit the maximum number of + episodes recorded of a single series, to restrict that series' disk + usage. If this is set, you can further decide what to do when this + limit is reached; either stop recording that series, or to delete the + oldest episodes in favor of the new ones. + + + 12.4. Post Recording Processing + + 12.4.1. Commercial Flagging + + Select whether or not to automatically flag commercials for these + recordings. Commercial Flagging parameters can be set in Setup->TV + Settings->General. + + + 12.4.2. Transcoding + + Select whether or not to automatically transcode recordings to save + disk space. Before using this, you must first enable auto-transcode in + the recording profile and configure the transcoding parameters; see + ``Recording'', above. + + + 12.4.3. User Jobs + + User Jobs allow you to configure up to 4 custom commands to run on + recordings. They can be configured in mythtv-setup. The following + tokens have special meaning when used in the User Job commands: + + + +o %DIR% - the directory component of the recording's filename + + +o %FILE% - the filename component of the recording's filename + + + +o %TITLE% - the title of the recording (e.g., name of the series) + + +o %SUBTITLE% - the subtitle of the recording (e.g., name of the + episode) + + +o %DESCRIPTION% - description text for the recording (from guide + data) + + +o %HOSTNAME% - the backend making the recording + + +o %CATEGORY% - the category of the recording (from guide data) + + +o %RECGROUP% - the ``recording group'' + + +o %CHANID% - the MythTV channel ID making the recording + + +o %STARTTIME% - the recording start time (YYYYMMDDhhmmss) + + +o %ENDTIME% - the recording end time (YYYYMMDDhhmmss) + + +o %STARTTIMEISO% - the recording start time in ISO 8601 format (YYYY- + MM-DDTHH:MM:SS) + + +o %ENDTIMEISO% - the recording end time in ISO 8601 format + + +o %PROGSTART% - the recording's start time (from guide data; + YYYYMMDDhhmmss) + + +o %PROGEND% - the recording's end time (from guide data) + + +o %PROGSTARTISO%, %PROGENDISO% - the recording's start and end time + in ISO 8601 format. + + + 12.5. Advanced Recording Options + + 12.5.1. Creating Power Search rules with Custom Record + + MythTV's "Custom Record" feature gives you unlimited control for + creating specialized search recording rules to meet your needs. It + allows you to choose your criteria to search for matching shows based + on any of the information in the program listings, channel + information, time functions and more. This goes beyond the + capabilities of any other DVR system and it is unlikely that this + level of scheduling customization will ever be available in any + commercial DVR system. + + + 12.5.2. Getting Started + + Go to Schedule Recordings->Custom Record. This page, helps you build a + database search one clause at a time. Each added clause further limits + which showings will be matched in the TV listings. You can test the + search at any time and when you are done, you can save your search as + a recording rule. + + To familiarize yourself with how you can create custom rules, create a + simple rule to record "Nova" only in primetime. + + The first item at the top of the page allows you to edit an existing + rule or create a new rule. Leave it on "<New rule>". Arrow down to the + third item which says "Match an exact title". Right and left arrows + would allow you to select any of several prefabricated pieces or full + examples but leave it on the default for now. Arrow down to "Add this + example clause" and press SELECT (Enter or Space on a keyboard). The + large text box should now show: + program.title = 'Nova' + + + + As you have probably guessed, this says that we want to search for all + programs with the title "Nova" regardless of the time, day, channel, + etc. + + If you do not receive a PBS station that carries "Nova" or would like + to use another title, edit the title by pressing the down arrow to + highlight the text box and right arrow over the the word "Nova". If + you are using a keyboard you can simply delete the four letters and + type a different title between the quotes. With a remote control, you + can do 'cell phone' style text entry with the number pad. The delete + key is the "X" in the grouping for "1", zero is grouped with "9" and + "0" acts as the "Caps Lock" key. You can press ENTER in the text box + to popup a virtual keyboard. + + Note: the text box honors many familiar Emacs control keys. It is also + possible to cut and paste text into the text box so you can edit with + a favorite editor or insert a rule sent in email or from other + sources. + + In any case, choose a title that is shown both in primetime and late + night or daytime. Next, click the "Test" button. You should see a list + of the upcoming episodes for "Nova" just as if you had clicked the + Upcoming button for "Nova" elsewhere in MythTV. + + Press ESC to go back to the Custom Record page. Move to the example + selector then press the right or left arrows until you find "Only in + primetime". Click "Add this example clause". You should now see: + + + program.title = 'Nova' + AND HOUR(program.starttime) >= 19 + AND HOUR(program.starttime) < 23 + + + + Click "Test". You should now see a shorter list with only the showings + that begin between 7PM and 11PM. To create a rule for this, press ESC + to go back to the custom page and move to "Rule Name:" then type + "Nova" or anything else you would like. This is only a label and will + not affect the search results. Once a name has been entered, the + "Record" button will light up. Click this to enter the recording + options page. If you named it "Nova" the title will say "Nova (Power + Search)". Set whatever options you would like then click "Save these + settings". You now have a special rule to record "Nova" but only when + it is shown in primetime. + + You can make further modifications to this rule by returning to the + Custom Record page then press the right or left arrow keys on "Edit + Rule:" until you find "Nova". You can experiment and test but the + saved rule will not be updated until you click "Record" then "Save + these settings". + + To remove this, or any other rule, you can go to the "Recording + Priorities" page, arrow down to the title, press Enter and change the + the recording type to "Do not record this program" then "Save these + settings". + + + + 12.5.3. How it Works + + MythTV stores TV program information in a database and uses the + Structured Query Language (SQL) to access the data. Information about + each TV program is stored in the 'program' table and information about + each TV station you receive is stored in 'channel'. These two tables + are used in the scheduler queries and their columns are available to + be used in your rules. The rules you create are stored in 'record'. + + Normal rules in MythTV simply match the title in the rule with the + titles in the 'program' table. MythTV also has search rules for + "Titles", "Keywords" and "People". These store the key phrase in the + description column of the rule and includes them in specialized SQL + replacements for the normal title check. There is also a type called + "Power Search" which takes the raw SQL in the description as the + replacement for title matching. + + Custom Record is a tool to help you build valid SQL for Power Search + rules. You do not need to be a SQL expert to use Custom Record + because the examples are known to work correctly and are usually self- + explanatory so you can choose the pieces you need then modify them. + Many powerful solutions to unique problems are possible by combining + the examples. With some creativity and some knowledge of SQL, the + possibilities are limitless. + + + 12.5.4. Common Tricks and Tips + + The example clauses marked "complete example" are actual rules that + have been used to address specific problems. You may find that some of + these are useful for you as-is or with slight modifications. These + show off how powerful custom rules can be but there are also several + simple idioms that you may find useful for many of the shows you would + like to record. + + Wait for a known title -- If there is a movie that you anticipate will + be televised in the coming months but is not yet in the listings, you + can select "Match an exact title", edit the movie title, click + "Record" then choose "Record one showing of this title". The rule will + wait weeks, months or years until this title shows up in your listings + then it will record one showing. These rules have no impact on the + scheduler throughout the day and only take a tiny fraction of a second + when the master backend starts or when the listings are updated. + + Silence series out of season -- "Celebrity Poker Showdown", for + example, will have new episodes for a while then long periods where + reruns are shown dozens of times per week. By checking the previously + shown flag you can create a rule that will only match new episodes. + Therefore, your schedule won't be polluted with dozens of entries + marked as "Repeat" or "Previously Recorded". + + + program.title = "Celebrity Poker Showdown" + AND program.previouslyshown = 0 + + + + This allows you to keep rules for your favorite shows that are dormant + while out of season but will spring back to life when new episodes + appear. + + Choose showings on certain days -- Several cable stations will show + their highest rated shows a dozen on more times per week. However, the + scheduler only needs two or three choices to do a good job of making a + flexible choice. + program.title LIKE "Celebrity Fit Club%" + AND DAYNAME(program.starttime) = "Sunday" + + + + This says to choose any showing of an episode that hasn't been + recorded when it appears on Sunday. This prevents all the other show- + ings during the week from being listed in the schedule. + + Notice the word "LIKE" and the "%" at the end. This does wildcard + matching so that this would match even if the title ended with "2". + "III" or ":Revenge of the Snapple Lady". This can be useful where the + title may change from one season to the next like "Survivor: %", "Big + Brother%" or "The Amazing Race%". + + + 12.5.5. Working with SQL + + As you experiment, it is possible that you may misplace a quote or + mistype a word. If there is a mistake when you press "Test" or + "Record" you will see an error message returned from the database. + This will usually give you a good idea about what needs to be fixed. + However, for more subtle MySQL syntax errors, you can find more + information in the documentation at http://dev.mysql.com/doc/mysql/en/ + <http://dev.mysql.com/doc/mysql/en/>. This contains a lot of + information that can be useful for Power Search rules such as the + "Date and Time Functions". There are many other good resources for SQL + on the Web. + + While the example clauses demonstrate how to use many of the data + columns, you can get a more complete list of all the columns that are + available by using a MySQL client program: + + + $ mysql -u mythtv -pmythtv mythconverg + mysql> describe program; + mysql> describe channel; + + + + This will show the names of all of the columns along with their type + and default value. Most are easy to understand but a few need some + explanation in order to use them effectively with Power Search. + + +o "program.category_type" holds one of these exact four strings: + "movie", "series", "sports" or "tvshow". + + +o "program.airdate" is a string representing the year of release for + movies and may have no meaning for other types of shows. + + +o "program.stars" is a floating point number from 0.0 to 1.0. On a + four star scale, 1.0 would be four stars, 0.75 would be three stars + and so on. + + +o "program.originalairdate" if provided is the date when a show was, + or will be, first televised. This may be useful for finding + episodes before or after a certain date such as finding just the + original series of "Battlestar Galactica". + + +o "program.previouslyshown" is a column created by MythTV to try to + determine if a showing is more than 14 days after its original air + date or if the show was marked as a repeat and did not have a date + for the first airing. If this is "0" it usually means that this is + a brand new show or a rebroadcast within the first two weeks. + +o "program.generic" is a column created by MythTV to try mark + showings for a series where the specific episode information is not + included. When these generic showings appear, it is impossible for + the system to determine if they are repeats of the same episode(s) + or if they are all different episodes. + + +o "program.first" is a column created by MythTV to mark the first + showing in the current listings for each episode, movie or special. + Choosing to match only the "first" showing can be useful for sports + that are brodcast live then repeated. + + +o "program.last" is a column created by MythTV to mark the last + showing in the current listings for each episode, movie or special. + If a showing is marked both "first" and "last" then it is the only + showing of that program in the current TV listings. + + +o "program.programid" is the Tribune Media Service database record + identifier for each program description. In general, these start + with a two letter prefix, MV, EP, SP or SH that correspond to the + "program.category_type". For most, the last four digits are "0000" + except EP where the last four digits are the episode number in the + series. Note that these are generated by TMS and not the show's + producers but they are usually in the same order as the original + air dates for the episodes. + + +o "program.videoprop" also "audioprop" and "subtitletypes". These + columns contain bit flags for a variety of attributes that may be + associated with a program. These are filled with information + offered by the TV listings provider. However, your listings source + will not have information for all of the available flags. + Therefore, some of these may not be useful for your search rules. + This information is organized in "sets" and the MySQL function + FIND_IN_SET() can be used to test for any of these flags. For + example: + + + FIND_IN_SET('SURROUND', program.audioprop) > 0 + + + + would be true for the programs where the surround sound bit is + present. To see all of the available attribute names: + + + $ mysql -u mythtv -pmythtv mythconverg + mysql> SHOW COLUMNS FROM program LIKE '%prop'\G + mysql> SHOW COLUMNS FROM program LIKE 'subtitletypes'\G + + + + Finally, if you are doing something very experimental and a column is + not giving you the results you had anticipated, you can always check + the MythTV source code to see exactly how a column is used. The open + source for MythTV is available from http://www.mythtv.org/ + <http://www.mythtv.org/> . + + + 12.6. Scheduling with more than one Input + + + MythTV is designed to allow recording television programs from one or + more service providers, or video source, on one or more video input + from each provider. Some inputs may not be allowed to record at the + same time as each other while others may record simultaneously. + A television station may be broadcast on more than one channel from + one provider or may be available on channels from two or more + providers. If a TV station is available from more than one source, the + video quality or type of broadcast may differ. Therefore, MythTV + allows you to control how you would like the scheduler to select the + best channel and input for a show which is available on more than one + input or more than one channel. + + + 12.6.1. Mutually Exclusive Inputs + + A single TV capture card may have video connections to more than one + of its inputs and each input may be from a different service. The + card may only be allowed to record from one of these inputs at one + time because there is only one encoder on the card that actually + captures the content. + + + + These are mutually exclusive meaning that only one input or the other + may record at a given time but not both. + + Usually, inputs on different cards can record at the same time but two + or more inputs on the same card cannot. However, there are cases where + inputs on different cards should not be allowed to record at the same + time, for example, a firewire card and s-video analog card connected + to the same set top cable box. + + + + | + | coax +--------------+ firewire ------------------+ + | .-=|Cable Provider|=------------=| Card 1 input 1 | HDTV + | | |HD/Cable STB |=--. +-----|||||||||||| + | | +--------------+ | s-video ------------------+ + | | `---------=| input 2 | Digital + |wall | coax | Card 2 | + |=---=^=------------------------------=| input 3 | Cable + | +-----|||||||||||| + + + + Input 1 and input 2 receive content from the same set top box and the + channels can not be tuned independently. Therefore only one of these + two inputs should be used at any given time. The solution is to create + an "Input Group" with mythtv-setup in "Input connections". Including + these two inputs in the same Input Group will tell the scheduler that + these are mutually exclusive and may not record at the same time. + Inputs 2 and 3 are automatically mutually exclusive because they are + on the same card so there is no need to create an Input Group for + these inputs. + + Cards such as the Hauppauge PVR-500 are able to record as two cards + simultaneously because it has two MPEG-2 encoders and each encoder + appears as a separate device. DVB cards may be allowed to capture + content from more than one channel at a time if the channels are in + the same MUX. + + + + 12.6.2. Stations, Channels and Video Sources + + Although we may be accustomed to thinking of a broadcast station and + its channel number as being synonymous, stations and channels are very + different things. A "station" is in a building with wires and + employees. A "channel" is a carrier frequency or digital ID that + carries a broadcast stream. The same TV station may be broadcast over + different frequencies in different cities or by different providers in + the same city. The same frequency will carry different stations in + different cities. In the digital realm of DVB and ATSC (HDTV), it is + even possible for a single frequency to carry multiple program streams + but each of these streams of content are actually different channels + that the receiving devices can 'tune' to independently. + + + +o Station: building + + +o Channel: frequency + + In MythTV, a "video source" is a set of channels from a provider, or + over the air, that can be received by an input. The set defines the + channels and the broadcasters primarily associated with each of those + channels. If you have more than one device or cable from the same + provider connected to more than one card and input, you only need to + create one video source in mythtv-setup then associate that one source + with each of these connected inputs. This will let your MythTV system + know that the same channels and their TV listings are available to be + recorded from any of these inputs. + + For example. A MythTV system may have two capture cards. Both have a + cable connected to the coaxial connectors. These cables carry the + local cable TV service. In mythtv-setup, the user should create one + "Video source" called "Cable", for example. Under "Input connections", + "Cable" should be associated with each of the two tuner inputs. The + scheduler will then know that any program on one of the channels from + the "Cable" source could be recorded by either card from the card's + tuner input. + + You need to create a different video source for each provider or + service that has a different set of channels. Each input with a + connection to that service should be associated with the video source + for that service so the system will know which set of channels are + available for each of your active inputs. + + Let's say that this user also has one digital cable set top box. The + digital cable service carries channels that are not available over + basic cable. The user would create another source called "Digital". + This set top box is connected to the second card by S-Video so under + "Input connections", "Digital" is associated with the S-Video input of + card 2. The system would then know that programs on channels from the + Digital source can only be recorded from this input. Further, the + scheduler understands that it can only record one show at a time from + card 2 so it can assign Cable or Digital shows to the card but not + both at the same time. + + Some TV stations may be broadcast over a channel from the Cable source + and also broadcast over a channel from the Digital source. Note that + two channels carrying the same primary station may not have the same + TV listings due to carrying the primary station part time, including + local programming exclusive to one of the channels, the channels may + be in different timezones, etc. Listings information must be + associated with each channel even if two or more channels report that + they carry the same station. + + + + 12.6.3. Order of Inputs + + By default the scheduler chooses the first (lowest numbered) input + which has a showing of the scheduled program as it fills the schedule. + If a lower priority show is on at the same time as a higher priority + show that has been assigned to input 1, then input 2 will be used next + and so on. Therefore, configure your best card and input first and + next best card and input second. There may be differences in the type + or brand of capture card, signal quality from the cable, system + resources such as disk space, CPU, etc. By configuring your best input + first, more recordings, and your highest priority recordings, will use + that input. + + A common situation is that a newer and better card is added last. For + example, you may initially setup your system with two analog cable + cards and then add a HDTV card. If NBC is on a cable channel and "The + Apprentice" is shown in HDTV on an NBC HD channel, the scheduler would + still prefer analog inputs 1 and 2 over the new HD input 3. + + So, if you'd like the scheduler to prefer a new source, the simplest + thing is to run mythtv-setup and "Delete all capture cards" then enter + your cards and inputs in your preferred order. This will not remove + your sources and channels - you want to keep those and only renumber + your cards and inputs. In this example, once the changes have been + made and the Master Backend is restarted, the scheduler would then + choose "The Apprentice" in HD on the new input 1 and only use the + analog inputs (now numbered 2 and 3) when the HDTV input was occupied + with another show. + + + 12.6.4. Matching Callsigns + + If a recording rule is a type that can record from any channel, "The + Apprentice" would match for any channel that shows episodes which may + include CNBC or BRAVO. However, for Single, Timeslot, Weekslot or + Channel rules, "The Apprentice" would only match showings on the + selected station as identified by the "callsign". For example, KVBC is + an NBC affiliate on channel 3. Channel 733 is KVBCDT which is HDTV + over cable from the same station. If a Single record rule was set for + "The Apprentice" on KVBC channel 3, it could not record this showing + from KVBCDT on 733. If 733 was chosen when the rule was saved, channel + 3 could not be used to record. + + However, the "Channel Editor" in mythtv-setup can be used to change + the Callsign for channel 733 to "KVBC". MythTV would then understand + that both of these channels are from the same broadcast station. + Assuming the HDTV input was input number "1", "The Apprentice" would + record on 733. If, however, this HDTV input already had a higher + priority show assigned to it in that time slot, "The Apprentice" would + be assigned to KVBC channel 3 on input 2. + + Having two channels with the same callsign may affect how program + information is shown in mythfrontend. If two sources have the same + callsign and channel number, the program guide and program lists will + only show one instance of the channel number and callsign. If the same + callsign is on two different channel numbers, both will be shown and + if two sources have different callsigns with the same channel number, + both of those will be shown. + + Continuing with the example above, the Electronic Program Guide would + include rows for both "3 KVBC" and "733 KVBC". If channel 3 KVBC was + also included in the Digital cable source, the EPG would still include + just one line for "3 KVBC" even though there are two different + channels, Cable and Digital, with this identification. Regardless of + how these are displayed and which "KVBC" channel you select to add a + rule to record "The Apprentice", the scheduler will pick the best + channel, source and input to record "The Apprentice" on "KVBC". + + + 12.6.5. Using Priorities to Prefer an Input + + The fundamental concept to keep in mind is that the MythTV scheduler + will choose the lowest numbered input available when showings have the + same priority. If there are factors that cause two showings of the + same show to have different priorities then the higher priority + showing will be considered before the showings with lower priority. + + + 12.6.6. Input Priority + + "Input Connections" in mythtv-setup includes a box to set "Input + priority" which defaults to "0". If a value is set, that amount will + be added to the "total priority" for showings on that input. This can + be used to influence using favored cards or not using less favored + cards unless necessary. + + Let's say the "The Apprentice" is on at 8:00pm with a priority of 3. + "Who Cares" is -2 and an episode is shown at 8:00pm then repeated at + 11:00pm. The scheduler would assign "The Apprentice" to card 1 and + "Who Cares" to card 2 at 8:00pm. If the input priority for the input + on card 2 was changed to -1, "Who Cares" would have a total priority + of -2 for showings on card 1 and -3 for showings on card 2. The + scheduler would assign "The Apprentice" to card 1 at 8:00pm and "Who + Cares" to card 1 at 11:00pm when the better card is available. If + there was another higher priority show at 11pm, the next best choice + for "Who Cares" would be card 2 at 8pm with the priority -3. + + Card 1 and 2 have input priority "0": + + + + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -2 2 Will Record + 11:00 Who Cares -2 1 Earlier Showing + + + + Card 2 with input priority "-1": + + + + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Later Showing + 11:00 Who Cares -2 1 Will Record + + + + Card 2 at "-1" but higher priority shows at both 8 P.M. and 11 P.M.: + + + + Time Title Priority Card Status + 8:00 The Apprentice +3 1 Will Record + 8:00 Who Cares -3 2 Will Record + 11:00 The Daily Show +1 1 Will Record + 11:00 Who Cares -3 2 Earlier Showing + + + + Note the two different effects, each of which may be what you desire + depending on circumstance. If input priorities are equal, shows will + record at the earliest time if any input is available. If input + priorities differ, shows may be postponed to a later time in order to + record on the best input. + + + 12.6.7. Channel Priority + + Priority can be added for individual channels (remember, frequencies + from a video source, not stations). This can be used to tell the + system that you generally prefer the content of the station on a + channel over the formats of other stations. You may want to raise the + priority for ESPN, SciFi, Comedy Central or lower the priority for + CSPAN, CourtTV, etc. If the same station is on two different channels, + you can use channel priority to have the same effect for these + channels as input priority would have for whole inputs. + + For example, say CNN is on analog channel 20 and there is an HD CNN on + 750. You may not want to tie up the HD input for news originating in + standard definition. Under TV Settings->Recording Priorities->Channel + Priorities you could set channel 750 to -1. The scheduler would then + prefer to record CNN shows on any analog channel 20 before considering + using 750 only when there are no analog inputs available. + + + 12.6.8. Preferred Input + + For an even finer grain of control, there is a per rule option to + specify which input should be preferred for showings that match the + rule. By default, this adds +2 to the priority for showings on the + specified input. + + For illustration, let's say there will be a Space Shuttle launch on + CNN that will be broadcast in high definition. Adding a rule to record + the launch with priority "0" should default to channel 20 on input 2. + Channel 750 would have this at -1 due to the channel priority set in + the previous example. If on the recording options page for this rule, + the "Scheduling Options" had the input set to prefer the HD input on + card 1, then the showing on channel 750 for this input would be + increased in value by +2 for a total of +1 and would be the best + choice for this launch coverage. While this one rule would prefer the + HD input with channel 750, all other rules that match shows on CNN + would still prefer channel 20. + + Note that this will not work properly if the preferred input priority + does not out weigh differences in input and channel priorities. The + value of the priority boost when this option is chosen defaults to +2 + but can be modified in TV Settings->Recording Priorities->Set + Recording Priorities. + + + 12.6.9. HDTV Priority + + In the preceeding fictious example, the Space Shuttle launch is + broadcast in high definition and a preferred input is selected to give + preference to the HD input. However, TV listings from zap2it.com + through the DataDirect service may allow this to work without having + to use this per rule option. + + In Settings->Recording Priorities->Set Recording Priorities there is + an option for "HDTV Recording Priority". This value will be added + automatically if the listings for the show have the "hdtv" flag set. + DataDirect will set this flag for shows known to be broadcast in HDTV + on HD channels. However, the flag is not set for standard definition + channels. This is another example of the listings being different for + the same station on a different channel. If the HDTV priority is set + to "+2", the shuttle launch would automatically have a total priority + of +1 so that channel 750 would be preferred over channel 20 for this + HDTV broadcast. + + Channel "750 CNN" at priority "-1" and HDTV broadcast priority at + "+2": + + + + 12.6.10. Custom Priority + + + + New for MythTV 0.21 + + While Input, Channel, and HDTV Priority can be used for indicating a + preference for certain programs and inputs, there may be circumstances + that cannot be resolved easily with these standard features. MythTV + version 0.21 includes a feature for "power priority". The Custom + Priority editor in mythfrontend's "TV Settings" screen is similar to + Custom Record, however, Custom Priority allows you to create + specialized power priority factors to influence scheduling decisions. + + For example, the 'program.closecaptioned' flag can be used in a + similar way as the 'program.hdtv' flag. + + + + Priority Rule Name: Closed Captioned priority + Priority Value: 2 + program.closecaptioned > 0 + + + + This will raise the priority of shows marked with "CC" over those that + are not by applying the "Priority Value" whenever the SQL fragment + evaluates to true. If the expression evaluates to false for a showing, + the "Priority Value" is not applied. + + + + Priority Rule Name: Priority when shown once + Priority Value: 1 + program.first > 0 AND program.last > 0 + + + + The "first" and "last" flags for an episode will only be set for the + same showing when there is only one showing of that episode in the + current TV listings. This rule would raise the priority in these cases + so that these shows would have an advantage to record in their only + available time slot. + + + + Priority Rule Name: Input 1 signal quality + Priority Value: -1 + cardinput.cardinputid = 1 AND + channel.channum IN (3, 5, 39, 66) + + + + A common issue with two or more analog capture cards is that one of + the cards may have more interference on some channels than the same + channels on other cards. This example gives a disadvantage to the + channels in this list but only for the first input. Therefore, a show + on channel 39 would choose input 2 or 3 if possible but for channels + not in this list, input 1 is still the first choice. + + The Custom Priority editor includes many example fragments and + complete examples that can be used or you can create your own to suit + your needs. + + + 13. MythPlugins. + + MythTV has a rich set of plugins available. Once you have downloaded + the tarball, untar it and run the configure script: + + + + $ tar -xjf mythplugins-0.21.tar.bz2 + $ cd mythplugins-0.21 + $ ./configure --help + + Usage: configure [options] + Options: [defaults in brackets after descriptions] + NB: all --enable-* options can be reversed with --disable-* + + Generic options: + --help print this message + --enable-all Enable all options + --enable-opengl enable OpenGL (Music and Gallery) [default=no] + + MythBrowser related options: + --enable-mythbrowser build the mythbrowser plugin [default=yes] + + MythDVD related options: + --enable-mythdvd build the mythdvd plugin [default=yes] + --enable-transcode enable DVD ripping and transcoding [default=no] + --enable-vcd enable VCD playing [default=no] + + MythGallery related options: + --enable-mythgallery build the mythgallery plugin [default=yes] + --enable-exif enable reading of EXIF headers [default=no] + + MythGame related options: + --enable-mythgame build the mythgame plugin [default=yes] + + MythMusic related options: + --enable-mythmusic build the mythmusic plugin [default=yes] + --enable-fftw enable fftw visualizers [default=no] + --enable-sdl use SDL for the synaesthesia output [default=no] + --enable-aac enable AAC/MP4 audio file decompression [default=no] + + MythNews related options: + --enable-mythnews build the mythnews plugin [default=yes] + + MythPhone related options: + --enable-mythphone build the mythphone plugin [default=yes] + --enable-festival enable festival TTS Engine [default=no] + + MythVideo related options: + --enable-mythvideo build the mythvideo plugin [default=yes] + + MythWeather related options: + --enable-mythweather build the mythweather plugin [default=yes] + + + + The sections detailing configuration of the plugins assume that you + are already in the ~/mythplugins-0.21/ directory. + + Note that a single configure script now does configuration for all + modules. By default, it will compile all modules. If you do not wish + to compile a module, either because it is of no use to you, or you do + not have the prerequisites, the simplest course of action is to go + through the various sections below, satisfying the prerequisites, and + then compile all modules at once. + + For example, you would only like to compile and install MythGallery + and MythMusic. For MythGallery, you would like to use the EXIF data + in the .JPG file to present additional information onscreen. For + MythMusic, you would like to enable support for the opengl and FFT + visualizations. The command line would look like: + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif --enable-mythmusic --enable-fft + $ qmake mythplugins.pro + $ make + $ su - + # make install + # exit + $ + + + + For simplicity, the examples below will disable compilation of all + other modules other than the one being discussed. + + + 14. MythWeb. + + MythWeb allows you to use a web page to control various aspects of + your MythTV system. MythWeb is a separate application, but it's + dependent on MythTV being installed and operational. + + + 14.1. Installation and prerequisites + + Mythweb is a part of the mythplugins package. See ``MythPlugins'' for + instructions on downloading the tarball. The next step depends on + whether your distribution has a web server and if you have PHP + support. + + + 14.1.1. Mandriva + + Mandriva has apache and PHP pre-packaged, so installation is quite + simple. + + + + NOTE: Mandriva 9.1 users, perform the following: + + + # urpmi apache2 apache2-mod_php php-mysql + # chkconfig --level 345 httpd on + # /etc/rc.d/init.d/httpd restart + + + + 14.2. Completing the installation + + + + $ cd ~/mythplugins-0.21/mythweb + $ su + # mkdir /var/www/html/mythweb + # cp -r . /var/www/html/mythweb + # exit + $ + + + + By default, MythWeb uses an Apache .htaccess file to restrict access + to the website and to configure some variables. + + To create the password file for Apache (if your system doesn't already + have one), you could do something like this: + + + # cd /var/www + # htpasswd -c htpasswd mythtv + New password: + Re-type new password: + Adding password for user mythtv + + + + See the man page for htpasswd for more examples. + + To access the web page, open a web browser and use http://[name or ip + address]/mythweb/ + + + + NOTE: Make sure that you have a trailing slash on the URL, + otherwise you will get a 404 Page not Found error. + + 14.3. Resetting the key binding table + + MythWeb allows you to configure which keys are bound to which actions + within MythTV. If you'd like to reset this back to the default, + execute the following command: + + + $ echo "delete from keybindings ;" | mysql -u mythtv -pmythtv mythconverg + + + + 14.4. Resetting the theme. + + If you find yourself wedged into a theme that isn't working, open your + web browser and go to site: + http://mythweb_name_or_ip_address/mythweb/settings.php?RESET_THEME=yes + + 15. MythGallery. + + MythGallery is a photo and slideshow application. MythGallery is a + separate application, but it's dependent on MythTV being installed and + operational. + + 15.1. Installation and prerequisites + + MythGallery is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. + + There are a number of transitions available, some requiring OpenGL + support. You will also need to install a TIFF library. Under + Mandriva, you would perform the following command: + + + # urpmi libtiff3-devel + + + Once you have satisfied the prerequisites for your distribution, + install the application: + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-opengl --enable-mythgallery + $ qmake mythplugins.pro + $ make + # su + # make install + # exit + $ + + + + The configuration for MythGallery is accessed through the main Setup + option in mythfrontend. Make sure you set your pictures directory to + wherever you're storing your photos. + + The controls for MythGallery can be found in the README that comes + with the application. + + 15.2. Using MythGallery + + When you first start MythGallery, you will see a thumbnail view of any + folders and pictures in the Gallery Directory you specified in setup. + If this is the first time you have accessed this directory, the + thumbnails will be generated on the fly. If the Gallery Dir is + writable, these thumbnails will be cached thus speeding up future + access. On the left is a greyed-out menu of options. + + Use the arrow keys to select a folder or picture to open/view with the + Select key, or use the Menu key to toggle access the menu on the left. + The menu options are as follows: + + +o Slideshow - Will cycle through all the pictures in the current + folder. The currently selected item must be a picture (not a + folder) for this to work. It does not currently traverse + subfolders. + + +o Rotate CW - Rotate the current image 90 degrees in the clockwise + direction. This change persists if the current directory is + writable. + + +o Rotate CCW - As above except the direction of rotation is + counter(anti) clockwise. + + +o Import - Import pictures into your Gallery Dir. This option is + described in the next section. + + +o Settings - Access the MythGallery settings screen. + + 15.3. Importing Pictures + + The import path in the setup dialog is a colon separated list of + directories and/or executable files. When the import key is pressed, + a new directory (the destination directory) under the current + directory will be created and the import path will be searched. If + the item in the import path is a directory (the source directory), the + contents of that directory will be copied to the destination + directory. If you would like the source directory to be that of a + removable device, it might be a good idea to use autofs. See the + automount howto at www.linuxdoc.org <www.linuxdoc.org> for info on how + to get it working. + + If the item in the import path is an executable file, MythGallery will + attempt to execute it with the destination directory as its sole + argument. Be careful when using executable scripts that the script + runs unattended (doesn't need user intervention) and returns properly, + otherwise it could create the appearance of MythGallery hanging (e.g. + running smbclient and prompting for password). Also be sure that + scripts have executable permissions set. + + Here is an example script that a user may want to run on import: + + + #!/bin/csh + + if ($#argv == 0) then + echo "Usage: $0 dest_dir" + exit + endif + + cd $argv[1] + + # get stuff over the network + wget http://www.somesite.dom/dir/file1.jpg + wget http://www.somesite.dom/dir/file2.jpg + wget http://www.somesite.dom/dir/file3.jpg + + # stuff that requires manual module loading and/or fs mounting + modprobe camera_module + mount /dev/camera /mnt/camera + cp /mnt/camera/* $argv[1] + umount /mnt/camera + rmmod camera_module + + # perform some processing + foreach pname (`ls *.jpg`) + jpegtran -flip vertical $pname > $pname.new + mv $pname.new $pname + end + + + + 16. MythGame. + + MythGame can used as a frontend to start any emulator that your host + OS runs. This is an example of how to set up xmame on Linux. + http://www.mameworld.net/ <http://www.mameworld.net/> is an excellent + resource for all things mame. + + Installation overview: + + 1. Setup directory structure + + 2. Download and install xmame + + 3. Download and place extra files (artwork/catver.ini/etc..) + + 4. Download and install MythGame plugin + + 5. Setup xmame in MythGame + + 6. Hints + + + + 16.1. Setup Directory Structure + + To keep things organized, create the following directories for xmame + to use in /usr/local/share/xmame: hiscore, roms, and snaps. + + + + $ mkdir -p /usr/local/share/xmame/{highscore,roms,snaps} + + + + 16.2. Download and Install xmame + + NOTE: There may be pre-packaged versions of xmame available for your + distribution. Check http://x.mame.net/download.html + <http://x.mame.net/download.html> for the latest version. + + Download the source to xmame from + http://x.mame.net/download/xmame-0.103.tar.bz2 + <http://x.mame.net/download/xmame-0.103.tar.bz2> + + + + $ wget http://x.mame.net/download/xmame-0.103.tar.bz2 + $ tar -xjf xmame-0.103.tar.bz2 + $ cd xmame-0.103 + + + + Edit the Makefile with your favorite editor. Adjust the options as + required for your system. + + + $ joe Makefile + + + + Then make and install xmame + + + $ make + $ su + (enter password) + # make install + # exit + + + + After mame has been installed, we need to create some defaults. + + + $ mkdir ~/.xmame + $ cp docs/xmamerc.dist ~/.xmame/xmamerc + + + + Because some ROMS work better with different display toolkits, or + possibly even older versions of xmame, it's convenient to keep all of + your xmame binaries and to rename them to include the version number. + MythGame allows you to match individual roms to preferred binaries. + $ su + (enter password) + # mv /usr/local/bin/xmame.x11 /usr/local/bin/xmame-0.103.x11 + # exit + + + + NOTE: Depending on how you compiled xmame, you may have xmame.X11, + xmame.SDL or xmame.xgl based on what display toolkit you used. Also, + you may need to remove and recreate xmamerc after upgrading since some + of the default options may have changed. + + Edit ~/.xmame/xmamerc to include your paths. + + + ### Fileio Related ### + rompath /usr/local/share/xmame/roms + snapshot_directory /usr/local/share/xmame/snaps + cheat_file /usr/local/share/xmame/cheat.dat + hiscore_file /usr/local/share/xmame/hiscore.dat + hiscore_directory /usr/local/share/xmame/hiscore + history_file /usr/local/share/xmame/history.dat + mameinfo_file /usr/local/share/xmame/mameinfo.dat + + + + Confirm that xmame works before running it inside MythTV. Place your + ROM in the /usr/local/share/xmame/roms directory you created earlier. + + NOTE: There are three public domain ROM sets available at + http://www.mame.net/downmisc.html <http://www.mame.net/downmisc.html> + + Launch xmame with your game of choice. In this example, we are using + Gauntlet. + + + $ xmame gauntlet + + + + Some basic mame keyboard commands: + + + 5 = Insert coin + 1 = Player 1 start + arrow keys = movement + left control = button 1 + left alt = button 2 + SPACE = button 3 + ESC = exit + TAB - menu + ~ to adjust Volume + < and > + + + + 16.3. Download extra files + + The following files allow you to add extra functionality. Place them + into /usr/local/share/xmame + + - catver.ini is a catalog of categories and versions of popular mame + ROMs. + + Useful for keeping large libraries of ROMs organized. + + It may be downloaded from http://www.catver.com + <http://www.catver.com> or http://www.mameworld.net/catlist + <http://www.mameworld.net/catlist> + + - Screenshots aka "snaps" + + These may be downloaded from http://www.classicgaming.com/mame32qa/ + <http://www.classicgaming.com/mame32qa/> + + Screenshots are displayed when you are browsing your ROMS in mythgame. + Unzip and place them in /usr/local/share/xmame/snaps + + - history.dat + + Download from http://www.arcade-history.com/ <http://www.arcade- + history.com/> This file fills in a bit of background about each ROM. + + - hiscore.dat + + Download from http://www.mameworld.net/highscore/ + <http://www.mameworld.net/highscore/> + + - Cheats + + Download from http://cheat.retrogames.com/ + <http://cheat.retrogames.com/> + + + 16.4. Download and Install MythGame. + + MythGame is part of the mythplugins package. See the instructions in + the ``Downloading and Compiling'' section to obtain mythplugins. + + Switch to the mythplugins directory: + + + $ cd ~/mythplugins-0.21 + + + + Compile and install mythgame: + + + $ ./configure --disable-all --enable-mythgame + $ qmake mythplugins.pro + $ make + $ su + (enter password) + # make install + # exit + + + + 16.5. Setup xmame in MythGame + + Start mythfrontend and navigate to Utilities/Setup > Setup > Media + Settings > Game Settings > Game Players. Select (New Game Player). + + To set up a new player for xmame enter the following: + + + + Player Name: xmame-0.103.x11 (Name by which you want your emulator or game called) + Type: xmame (This is used for display purposes only and does not affect the function of your system) + Command: xmame-0.103.x11 -vidmod 1 -fullscreen (Path and name of binary + any optional parameters) + Rom Path: /usr/local/share/xmame/roms (This tells MythGame what directories to scan for roms to be used with this emulator) + ScreenShots: /usr/local/share/xmame/snaps (This tells MythGame what directories to scan for snapshots to be used with these roms) + Working Directory: (Directory to change to before launching game or emulator. Blank in our case ignores this setting) + File Extensions: (List of all file extension to be used for this emulator. Blank menas any file under the Rom Path) + [] Allow games to span multiple roms/disks (will treat game.1.rom game.2.rom game.3.rom as one game) + + + + 16.6. Hints: + + + +o Rom name before options: %s can be used as a standin for rom names + on the command line. + + +o Multiple disk/rom games: %d1 %d2 etc can be used as standins for + multiple disc games on the command line. + + +o Associating a rom with an emulator: Browse to the desired rom and + press 'M' to enter the settings page for that rom. + + +o Assign a Game Favorite Status: Browse to the desired game and press + "/". + + + 17. MythMusic. + + MythMusic has a number of prerequisites that must be satisfied before + it is operational. Depending on your distribution, some of these + prerequisites can be satisfied through the various package managers. + If your distribution doesn't offer pre-compiled versions of the + software below, then follow the generic instructions for manually + compiling and installing the software. + + The prerequisites for MythMusic are: + + +o MAD + + +o taglib + + +o libogg and libvorbis + + +o FLAC + + +o libcdaudio + + +o CDParanoia + + + 17.1. Manual installation of prerequisites + + These instructions are for distributions which don't have pre-compiled + versions of the software necessary to run MythTV. + + Download MAD from http://www.underbit.com/products/mad + <http://www.underbit.com/products/mad> and install: + + + $ tar -xzf mad-0.15.1b.tar.gz + $ cd mad-0.15.1b + $ ./configure + $ make + $ su + # make install + # exit + + + + Download TagLib from http://developer.kde.org/~wheeler/taglib.html + <http://developer.kde.org/~wheeler/taglib.html> and install: + + + + $ tar -xzf taglib-1.4.tar.gz + $ cd taglib-1.4 + $ ./configure + $ make + $ su + # make install + # exit + + + + Download libogg and libvorbis from http://www.xiph.org/downloads + <http://www.xiph.org/downloads> and install in a similar manner to the + above packages. + + Download FLAC from http://flac.sourceforge.net + <http://flac.sourceforge.net> and install: + + + $ tar -xzf flac-1.1.2.tar.gz + $ cd flac-1.1.2 + $ ./configure + $ make + $ su + # make install + # exit + $ + + + + Download libcdaudio from http://libcdaudio.sourceforge.net + <http://sourceforge.net/project/showfiles.php?group_id=27134> and + install: + + + $ tar -xzf libcdaudio-0.99.12p2.tar.gz + $ cd libcdaudio-0.99.12p2 + $ ./configure + $ make + $ su + # make install + # exit + $ + + + + Download cdparanoia from http://www.xiph.org/paranoia/down.html + <http://www.xiph.org/paranoia/download/cdparanoia-III- + alpha9.8.src.tgz>. + + + $ tar -xzf cdparanoia-III-alpha9.8.src.tgz + $ cd cdparanoia-III-alpha9.8 + $ ./configure + $ make + $ su + # make install + # cd /usr/lib + # ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so + # ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so + # exit + $ + + + + 17.2. Mandriva + + Mandriva has a number of the prerequisites available on the + installation CD. Some of the software you're going to need will have + to be obtained from the "contrib" or "cooker" development + repositories. Applications downloaded from "cooker" come from the + development branch, so there may be issues with some software. It + isn't recommended that you mix cooker and release-level software. + + + urpmi is the simplest tool for installation of packages from the + command line. The difficult part is the configuration, but this has + been made easier at the following website: + http://addmedia.linuxfornewbies.org/ + <http://addmedia.linuxfornewbies.org/> The website will allow you to + choose a mirror site and then present the command-line configuration + text for that mirror. You will most likely need to add a "Contrib" + mirror to your setup. Once you have done that, you can proceed. If + urpmi prompts you about other modules that need to be installed to + satisfy dependencies, say "Yes". + + + + # urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia + # urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel + # urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel + + + + 17.2.1. Additional options with MythMusic + + Additional visualizations have been added to MythMusic. If you wish + to use these, there are some prerequisites you must install prior to + compiling. + + + +o fftw + + +o OpenGL + + +o SDL + + fftw may be obtained from http://www.fftw.org/ <http://www.fftw.org/>. + In Mandriva it may be installed by typing: + + # urpmi libfftw2 libfftw2-devel + + + + OpenGL should be installed on practically all distributions. However, + you will need the devel module. In Mandriva it may be installed by + typing: + + + # urpmi libMesaGLU1-devel + + + + SDL may be obtained from http://www.libsdl.org + <http://www.libsdl.org>. In Mandriva it may be installed by typing: + + + # urpmi libSDL1.2 libSDL1.2-devel + + + + 17.3. Red Hat Linux 9 + + Red Hat provides packages for several of the prerequisites, making + installation very simple. Of the prerequisites, Red Hat provides + packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably + already have installed). To install these all at once, simply type + (all on the same line): + + + $ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL + + + + If you get the following message: "None of the packages you requested + were found, or they are already updated" it probably means you already + have all of those packages installed. + + You must install the remaining packages, (MAD, FLAC, libcdaudio and + optionally fftw) manually following the installation directions above. + When installing fftw do not use the rpm package offered on the website + because it will cause an error, so use the source package instead. + + + + NOTE: you can use the instructions given at the ``automated + installation section'' to install all of MythMusic in one + step. + + 17.4. Compiling MythMusic + + Once all the prerequisites have been installed, you can proceed with + compiling MythMusic. + + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac + $ qmake mythplugins.pro + $ make + $ su + # make install + # exit + + + + 17.5. Configuring MythMusic + + Configuration of MythMusic occurs in two places. The main + mythfrontend Setup is for global MythMusic configuration. Go to the + Setup/MythMusic/General Setup screen and adjust it for your particular + configuration. + + The second configuration screen is within the MythMusic program and + will allow you rescan your music library, etc. + + Here's some explanation about the Ignore_ID3 and The + NonID3FileNameFormat: + + If Ignore_ID3 is set to TRUE, MythMusic will try to determine the + Genre, Artist, Album, Track Number, and Title from the filename of the + mp3 file. The NonID3FileNameFormat variable should be set to the + directory/file format where the mp3 files are stored. For instance, I + store mine in the above shown Genre/Artist/Album/Track format. + MythMusic will then use this information to fill in the proper fields + when it populates the musicmetadata table rather than searching for an + ID3 tag in the mp3 file. + + The files can be laid out in any format, such as: + + Genre/Artist/Album/Title Artist/Genre/Album/Title Artist/Album/Title + (with Genre left as Unknown) + + The track number is optional but can be specified with the title by + using the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is + used, then the filename can have a space, hyphen, or underscore + separating the track number from the track title. Keywords are case + insensitive, so if you specify GENRE it's the same as Genre in the + format field. + + The Ignore_ID3 option does not disable the code that determines the + track length, just the portion that tries to read ID3 info. + + + 17.6. Using MythMusic + + MythMusic is fairly simple to use. It is recommended that you insert + the CD before selecting "Import CD". You should also ensure that your + system doesn't try to automount the CD and begin playing it + automatically. + + Here's some information on playlist management: + + Q: How do I create a new playlist? A: Using the MythMusic "Select + Music" menu option, setup the playlist as you normally would by adding + songs or other playlists as needed. When you are ready to save the + new playlist, highlight "Active Play Queue" at the bottom of the + selection tree and hit the "i" key. This will pop up a menu allowing + you to name and save the new playlist. You can also hit Enter to + bring up the popup on the Active Play Queue. This does not work on the + playlists above, as Enter is obviously bound to checking/unchecking + the boxes. Any number (i.e. keypad on remote) will also bring up the + menu in both cases. + + Q: How do I enter the playlist name in the text field without a + keyboard? A: Use the keypad number keys (bound to your remote) to + select letters quasi-cell phone style. Keys 2-9 work pretty much like + any cell phone text entry. 1 cycles through a few special characters, + delete, and space. 0 is like a CAPS LOCK. Hard to describe, fairly + easy to use. You will soon be able to specify the cycle timing in a + Setup screen. You can type fairly quickly through a combination of + jumping around the number keys AND hitting a non-number key (right + arrow is particularly good for this) to force the current character. + + Q: How do I edit a playlist? A: Highlight the playlist in the + selection tree and hit the "i" key then select "Move to Active Play + Queue" in the popup. You can now modify the "Active Play Queue" like + normal, adding songs and playlists by selecting them from the song + tree. When you are done, highlight the "Active Play Queue" in the + selection tree and hit the "i" key then select "Save Back to Playlist + Tree". And whatever you were editing as your Active Queue before you + moved an existing playlist "on top" of Active reappears. Think of + Active has having a push on, pop off capability, but with a depth of + only 1. + + Q: How do I delete an item from a playlist? A: Highlight the item in + the selection tree and hit the "d" key. + + Q: How do I rearrange the songs in my playlist? A: Highlight a song + and hit the "space" bar, the song will now have pair of red arrows in + front of it. Use the up and down arrow keys to move it around in the + playlist. When you have it where you want it, hit the "space" bar + again. + + Q: How do I delete a playlist? A: Highlight the playlist in the + selection tree and hit the "i" key then select "Delete this Playlist" + from the popup. + + + 17.7. Troubleshooting MythMusic + + You may run into errors when running MythMusic. + + 17.7.1. When I run MythMusic and try and look up a CD, I get an error + message + + The full text of the message will say: + + databasebox.o: Couldn't find your CD. It may not be in the freedb + database. More likely, however, is that you need to delete /.cddb + and /.cdserverrc and restart mythmusic. Have a nice day. + + If you get this message, you should go to the home directory of + whatever user MythMusic is running as and type: + + + rm .cdserverrc + rm -rf .cddb/ + + + + These files aren't automatically deleted because of a conscious design + decision by the author that programs that automatically delete things + are bad. + + The files are used to locally cache CD lookups. If you are re- + inserting CDs, your machine will not actually have to go out to the + Internet to determine what is on them. However, the URL used to + access the freedb database has recently changed, so the stale + information in the files from previous runs of MythMusic would cause + the error above. Once the files have been deleted the stale + information will be gone and your local database will be rebuilt as + you use CDs. + + + 18. MythWeather. + + MythWeather is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. + + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythweather + $ qmake mythplugins.pro + $ make + $ su + # make install + # exit + + + + MythWeather uses MSNBC.com as its source for weather data and + weather.com for its radar image. + + These are the keyboard commands for MythWeather: + + + Left Key Goes back one page, and extends the time spent + on the page you are on. + Right Key Goes forward one page, see above. + Space Pause, wait on the current page until space is hit + again. + Numeric Keys You can check other weather by keying in other ZIP codes. + Enter Key Switch between Celsius and Fahrenheit. Can also + be used a way to force a data update. + "m" Key Resets the location to the database default, then updates the data. + "i" Enter / Save settings + ESC Exit the settings screen without saving / Exit the program + + + + MythWeather also has an "Aggressiveness" setting. This affects how + long MythWeather waits for data from the msnbc.com website before + timing out. If you are on a slow connection, or have a slow DNS, or + MythWeather just doesn't seem to be working and you've already tried + everything else, then try increasing the aggressiveness level + parameter. This parameter is inverse; a higher number actually means + that MythWeather will be less aggressive, and will therefore wait + longer before timing out. + + MythWeather will print debugging information on the terminal. If you + wish to see additional debugging information while MythWeather is + running, run mythweather from the command line with as mythweather + --debug + + You may also force mythweather to re-run the configuration by starting + it on the command line as mythweather --configure. These two options + are mutually exclusive. + 19. MythVideo. + + MythVideo is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. + + MythVideo will allow you to use an external program to watch media + files that are not directly supported by MythTV. + + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythvideo + $ qmake mythplugins.pro + $ make + $ su + # make install + # exit + + + + See MythVideo's README file for additional information. + + + 20. MythDVD. + + MythDVD is a part of the mythplugins package. See ``MythPlugins'' for + instructions on downloading the tarball. MythDVD is an application + which rips DVDs and makes them available for use with MythVideo. You + may also transcode the DVD content from MPEG-2 to other formats which + should greatly reduce the amount of space the DVD material takes up on + your hard drive. + + MythDVD has a number of prerequisites to enable transcoding + functionality. If you only wish to play DVDs rather than convert them + to something like MPEG-4 or xvid you may skip the prerequisite + installation step. + + + 20.1. Manual Compilation of Prerequisites + + + 20.2. Pre-compiled binaries + + Mandriva users may install the prerequisites this way: + + + # urpmi libdvdread3 libdvdread3-devel a52dec liba52dec-devel + # urpmi mplayer ogle xine + + + + Assuming that you've added a PLF mirror, you may also load the rest of + the prerequisites using the following command: + + + # urpmi xvid xvid-devel fame libfame0.9-devel transcode libdvdcss + + + + In the example below, we have enabled support for transcoding and for + VCD playing. You may remove these options if you don't need them. + + + $ cd ~/mythplugins-0.20 + $ ./configure --disable-all --enable-mythdvd --enable-transcode --enable-vcd + $ qmake mythplugins.pro + $ make + $ su + # make install + + + + 20.3. Running the Myth Transcoding Daemon + + Transcoding ("ripping") a DVD requires you to run the Myth Transcoding + Daemon (mtd). To ensure that mtd is configured correctly, you should + first test it at the command line. + + + $ mtd -n + + + + The last line of text should show something like: + + + mtd is listening on port 2342 + + + + This indicates that mtd is ready for use. Once you've successfully + tested mtd in the foreground, type CTRL-C to stop mtd. You may then + start it as a background (daemon) process. + + + $ mtd -d + + + + Running mtd as a daemon will allow you to automatically start it + during the boot process. For example, you may add mtd -d to your + rc.local file, or you can adjust the script/steps outlined in the + section called ``Automatically starting mythbackend at system boot + time'' to start mtd instead of mythbackend. + + + 21. MythNews. + + MythNews is a part of the mythplugins package. See ``MythPlugins'' + for instructions on downloading the tarball. MythNews is a RSS + reader. + + + $ cd ~/mythplugins-0.21 + $ ./configure --disable-all --enable-mythnews + $ qmake mythplugins.pro + $ make + $ su + # make install + + + + 22. Troubleshooting. + + 22.1. Compiling + + 22.1.1. Compile errors + + Some compile errors are worse than others. If you get an error that + doesn't abort the compilation, and says something like: + + + cc1plus: warning: changing search order for system directory + "/usr/local/include" + cc1plus: warning: as it has already been specified as a non-system + directory + + + + then it shouldn't be a problem. + + If you get an error like /usr/bin/ld: cannot find -lXext, the compiler + is telling you that you don't have XFree86-devel installed, or that + your distribution hasn't set it up correctly. This needs to be fixed + before MythTV will compile. + + + 22.1.2. make: *** No rule to make target + /usr/lib/qt3/mkspecs/default/qmake.conf', needed by Makefile'. Stop. + + This error happens when there's a missing link in the + /usr/lib/qt3/mkspecs directory. There are two ways to fix this error: + + 1. Create the link manually: + + + $ su + # cd /usr/lib/qt3/mkspecs + # ln -sf linux-g++ default + + + + and then restart the compile, + + or + + 2. Run qmake mythtv.pro in the mythtv directory. Rerunning qmake + will create a new Makefile for you, however this still doesn't fix the + root cause of the issue, which is that your distribution didn't create + the symlink for you when the qt3 package was installed. The first + choice is the better solution. + + + 22.1.3. make: *** No rule to make target + /mkspecs/default/qmake.conf', needed by Makefile'. Stop. + + You didn't set your QTDIR. Re-read the section on ``Setting up + paths''. + + + 22.1.4. Internal Segmentation Fault. + + This is most likely to be caused by an overheating processor rather + than an actual programming fault within gcc. + + + 22.2. Debugging + + 22.2.1. MythTV segfaults + + 22.2.2. MythTV isn't doing anything + + 22.2.3. Debugging with GDB + + Without details, the developers will not be able to determine if you + have discovered a genuine code-bug, or if the problem is with your + system. In order to determine what's going on, you must recompile + MythTV with debugging support and run MythTV within gdb, the GNU + debugger. Note that, on OS X, some data is provided without going + through these steps. See + /Library/Logs/CrashReporter/MythFrontend.crash.log + + Re-run the configure script and add --compile-type=debug to any + previous configuration options you may have used. Check the + config.log file if you have forgotten. + + Now, you need to clear out the old versions of the software to ensure + that you're running with the debugging code, then compile and install. + + + $ make distclean + $ ./configure --compile-type=debug + $ make + $ su + # make install + # exit + + + + At this point, you now have debug-enabled software ready. To make + sure that you don't forget to type a command required for debugging, + it's best to setup a gdbcommands file. This will be read by gdb when + it's started. Put the following into gdbcommands in your home + directory: + + + + handle SIGPIPE nostop noprint + handle SIG33 nostop noprint + set logging on + set pagination off + set args -l myth.log -v record,channel,siparser + run + thread apply all bt full + set logging off + + + + Let's assume that the problem you're having is in mythbackend. + + + + $ gdb mythbackend -x gdbcommands + GNU gdb 6.3-debian + Copyright 2004 Free Software Foundation, Inc. + GDB is free software, covered by the GNU General Public License, and you are + welcome to change it and/or distribute copies of it under certain conditions. + Type "show copying" to see the conditions. + There is absolutely no warranty for GDB. Type "show warranty" for details. + This GDB was configured as "i386-linux".Using host libthread_db library "/lib/tls/libthread_db.so.1". + [Thread debugging using libthread_db enabled] + + + + gdb will automatically read the commands that you've placed in the + gdbcommands file and begin running the program you specified on the + command line. + + If the program appears to be locked up, press CTRL-C to create the + backtrace file. + + All of the output from gdb.txt should be posted to the mythtv-dev + mailing list, along with the steps you followed to get the program to + crash. + + NOTE: If you're trimming the gdb.txt file to remove extraneous + information from the beginning of the file, make sure you include at + least 10 lines prior to the point where the backtrace actually begins. + This ensures that there is some context to the backtrace, and so that + it's possible to see what exactly caused the segfault. + + gdb has a number of options, read the man page for more information. + + Using the gdbcommands file in conjunction with a while loop will + ensure that gdb creates a trace file and then restarts: + + + + $ while true; do date >> gdb.txt; gdb mythbackend -x gdbcommands; done; + + + + NOTE: To exit this loop you will need to kill the while loop. + + If you're trying to troubleshoot and you can't get back to the gdb + window for some reason, it may be easier to use two systems or to + start mythfrontend from the text console. + + If you're going to troubleshoot from a remote system, connect to the + machine that you're going to test using ssh or telnet. Next, type $ + export DISPLAY=localhost:0.0. This will allow the graphics to be + displayed on the X console (usually ALT-F6 or ALT-F7) and still give + you output and control of mythfrontend, either from the ssh session, + or by switching back to the text console by pressing CTRL-ALT-F1. You + can now continue troubleshooting using gdb as detailed in the + instructions. + + + 22.2.4. MythTV is crashing your system + + When run as a non-privileged user, MythTV can not crash your system. + If your system is crashing when you run MythTV, then you have some + issue with the drivers for your capture card or other hardware, or the + CPU fan has fallen off/broken and your system is overheating when + asked to perform a CPU intensive task like encoding video. + + If you are running as root, which is strongly discouraged, it is + possible that your system may crash due to the real-time thread using + all available CPU. You will not be able to interrupt the process, so + for all intents and purposes your computer will have crashed. + + + 22.3. Installing + + 22.3.1. When trying to run mythtv-setup, you get an error like this: + "mythtv-setup: error while loading shared libraries:" + + You didn't add /usr/local/lib to /etc/ld.so.conf. See the section on + modifying ``/etc/ld.so.conf''. + + + 22.4. Using + + 22.4.1. No programs are displayed in "Watch Recordings" + + This situation occurs most often with a system that acts as a frontend + and a slave backend. MythTV supports system-global and user-specific + configuration files, with user-configuration files taking precedence. + 99% of the configuration for MythTV is in the MySQL database, but + MythTV still needs to know where the MySQL server is running. This + information is in the mysql.txt file. By default, it will be + installed to /usr/local/share/mythtv, but a copy placed into ~/.mythtv + will over-ride the global configuration. + + You must ensure that there aren't multiple, conflicting versions of + this file on your system! + + + $ locate mysql.txt + /usr/local/share/mythtv/mysql.txt + /home/mythtv/.mythtv/mysql.txt + $ + + + + As you can see, in this example there are two mysql.txt files. If + they are not identical, then there may be unintended consequences. + + You may also see this error if you completely fill the /var partition. + The most likely mythtv-related reason for this is an overly large + mythbackend or mythfrontend log file in /var/log. If you have logging + enabled for the backend, and myth runs for weeks at a time, this may + creep up and surprise you. Note that many system processes also write + to /var and the system may not boot if it is unable to write to /var + due to a full partition. + + + 22.4.2. MySQL not connecting correctly + + Your MySQL installation may have networking turned off. Check that + /etc/mysql/my.cnf does not contain skip-networking. If it does, + remove it. Also verify that bind-address is set to your IP address + instead of 127.0.0.1. If you change either of these items, restart + MySQL. + + + 22.4.3. MySQL database is corrupt + + If you have reason to believe that your MySQL database is corrupt, + execute the following commands to attempt to repair it. + + NOTE: Ensure that there are no programs accessing the database while + you attempt to repair it. Make sure that all backend and frontend + programs have exited. + + mysqlcheck -r -umythtv -p<password> mythconverg + + + 22.4.4. Using a MPEG-2 encoder card and the video appears "jittery" + + 22.4.5. Using a MPEG-2 encoder card and the video is jumping up and + down + + This is a different problem than the one discussed in the previous + section. Currently, the ivtv driver or firmware appear to have some + issues if the vertical capture resolution is not the full screen + height. If you are having a jitter problem then ensure that you are + capturing either 480 lines (for NTSC) or 576 lines (for PAL). The + default capture profiles may need to be edited for your setup. Go to + Settings->TV Settings->Recording Profiles and adjust the Default and + Live TV options to 480 or 576 from their defaults. + + + 22.4.6. Screen goes blank but returns when mouse is moved or keyboard + is used + + This is due to DPMS, the Display Power Management System, which is + used to save power by turning off your monitor when the system decides + that it's not being used or due to a screensaver that has defaulted to + a blank screen. MythTV now has DPMS support built-in, and should + intelligently handle the screen. Continue reading if you wish to + override DPMS and force it off. + + Since it's likely that watching TV will not generate keyboard or mouse + events for a time, you need to turn off DPMS and the screensaver. + There are a few ways to do this. You may also need to check your BIOS + for power saving modes and disable screen blanking there as well. + + Edit your /etc/X11/XF86Config-4 or /etc/X11/xorg.conf file, and look + for: + + + Section "ServerFlags" + #DontZap # disable <Ctrl><Alt><BS> (server abort) + #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching) + AllowMouseOpenFail # allows the server to start up even if the mouse doesn't work + + Option "blank time" "0" + Option "standby time" "0" + Option "suspend time" "0" + Option "off time" "0" + Option "NoPM" "1" + EndSection + + + + Also, look for: + + + + Section "Device" + Identifier "device1" + VendorName "nVidia Corporation" + BoardName "NVIDIA GeForce 256 (generic)" + Driver "nv" + Option "DPMS" + EndSection + + + + In this case, you would need to either delete the Option "DPMS" line, + or change it to # Option "DPMS" to comment it out. The next time you + start XFree this change will take effect. + + Finally, check: + + + Section "Monitor" + Identifier "monitor1" + VendorName "Plug'n Play" + HorizSync 30-85 + VertRefresh 50-160 + + # Sony Vaio C1(X,XS,VE,VN)? + # 1024x480 @ 85.6 Hz, 48 kHz hsync + ModeLine "1024x480" 65.00 1024 1032 1176 1344 480 488 494 563 -hsync -vsync + + # TV fullscreen mode or DVD fullscreen output. + # 768x576 @ 79 Hz, 50 kHz hsync + ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630 + + # 768x576 @ 100 Hz, 61.6 kHz hsync + ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616 + EndSection + + + + Ensure that there isn't an Option "DPMS" in the Monitor configuration. + + You can also turn off DPMS from the Command Line, but this will not + survive a reboot. + + + $ xset -dpms + + + + Using xset +dpms will turn it back on. + + Another technique to try, which will turn off the screensaver: + + + $ xset s off + + + + You may also combine the command to turn off DPMS and the screensaver: + + + $ xset -dpms s off + + + Finally, depending on your distribution, you may be able to turn it + off from within the control panel. + + 22.5. Miscellaneous + + 22.5.1. mythfilldatabase failing + + If mythfilldatabase suddenly appears to be failing, there are at least + two things to check. + + First, if you are in North America, ensure that your DataDirect + subscription is still valid, otherwise, check to see what version of + XMLTV you're running and that it's the latest version. + + + + NOTE: It is highly recommended that you run the latest + version of XMLTV available. Your listings provider may have made + changes which negatively impact XMLTV. + + + 22.5.2. Fast CPU, choppy or jittery video + + First, you should check that your kernel has been enabled for DMA: + + + [mythtv@pvr mythtv]$ dmesg |grep DMA + ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA + ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:DMA, hdd:pio + hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=9729/255/63, UDMA(33) + hdb: 80043264 sectors (40982 MB) w/2048KiB Cache, CHS=4982/255/63, UDMA(33) + + + + From the listing above, you can see that hda, hdb and hdc are set for + DMA, and hdd is set for pio. If your kernel is not reporting DMA + being enabled, you may need to recompile your kernel. Check your + motherboard's chipset (look in the "ATA/IDE/MFM/RLL support" section + in "make menuconfig") for more information. + + Next, check that the hard drive has DMA enabled. Use the hdparm + program to check and enable DMA. + + + # hdparm -d /dev/hd? + + + + will tell you the DMA status for your hard drives. If you run hdparm + with the -d1 parameter, it will turn DMA on. + + + You may also setup your PC to do this at boot time, either by adding + the command to your /etc/rc.local file, or by adding files to + /etc/sysconfig. + + On Mandriva and other distributions, if you install hdparm from an RPM + you will most likely get a /etc/sysconfig/harddisks file installed. + This file will be parsed by the /etc/rc.sysinit script. If you use + the default harddisks file, your changes will affect all IDE devices + (including CD ROMs). If you wish to use different parameters for + various devices, rename and/or copy the file to harddiskhda, + harddiskhdb, etc. Edit the file to your liking and on the next reboot + your setting will be preserved. + + + 22.5.3. Frontend appears to be slow at jumping / seeking. + + 22.5.4. On-screen Display shows incorrect program length. + + This may occur when MythTV doesn't have an accurate seek table. Run + mythcommflag --rebuild + + + 22.5.5. Troubleshooting audio + + + + NOTE: the following instructions do not apply to PVR-250/350 + encoders; the MPEG-2 file will have the audio embedded in the stream + so it is not accessible using /dev/dsp. + + Audio appears to be one of the bigger issues that users run into on + the mailing list. If the audio isn't configured correctly, then + MythTV will often appear to hang, when in fact it is trying to + manipulate the audio subsystem and failing. You may or may not + receive error messages indicating that the source of the error is the + audio subsystem. + + You can not use xawtv to determine if your audio is working correctly, + since xawtv is simply using the analog sound patched through line-in + to line-out. It doesn't need to digitize the sound unless you are + using the recording function. + + A better test to verify that sound will work for MythTV (and recording + with xawtv for that matter) is to startup xawtv, mute the line-in then + run aplay /dev/dsp. You should hear the recorded audio slightly + delayed behind the real-time video. You should see messages about + "underrun". These can be ignored but they do confirm that the driver + is loaded and there is an active device. Once this test succeeds, + MythTV should work correctly because it writes to and read from + /dev/dsp in the same way that aplay does. + + To record audio along with video the audio signal must be digitized by + a DSP so that the audio data can be stored in a file. On playback, the + audio data is written to /dev/dsp and converted back to an analog + signal. This analog signal should then be sent to your speakers. Here + is what is needed in alsamixer. If you are using an ALSA version after + 1.0.6, use alsamixer -V all: + + CAPTUR source - the analog source to be sent to the DSP. This should + be set to the input source from the tuner card to the sound card. In + most cases this is Line but this could also be Aux, CD, Mic, etc., + depending on how you connect the input cable. This source should be + muted to prevent patching through the analog sound. The volume of this + source will not affect the record level. + + Capture mixer - this sets the level for the analog to digital + recording. While a volume of 100% is recommended for testing, + distortion may occur. Lowering this level to 75% to 85% may result in + better audio quality. "Capture" should be marked as the CAPTUR + destination. + + PCM mixer - this sets the level for the digital to analog playback. + While a volume of 100% is recommended for testing, distortion may + occur. Lowering this level to 75% to 85% may result in better audio + quality. + + Master mixer - sets the level for the analog signal sent to line-out + or the speakers. + + You may also want to ensure that /dev/dsp , or whatever device file is + being used, hasn't already been grabbed by another process, like esd + or artsd. If the device file isn't available, then MythTV won't work. + You may wish to run configure and enable support for these. + + If you wish to see what application is grabbing a resource, you can + use the fuser command: + + + # fuser -v /dev/dsp + + + + To disable aRts in KDE, go to KDE->Control Center->Sound->Sound System + and uncheck the "Start aRts soundserver on KDE startup" box. Run # + killall artsd from the command line to stop the artsd program. + + If you're using multiple sound cards and multiple tuners, use + alsamixer -c 1 to work with the second sound card. The first card is + #0, the second card is #1, etc. + + + 22.5.6. Mythbackend reports that your card is not reporting full + duplex capabilities + + 22.5.7. The mythbackend program told me to look at this section + + mythbackend does a check to see if your sound device is capable of + full duplex operation. If it's not, it's most likely that you're + going to run into issues when you try to record and play sound at the + same time. If your backend is a separate machine than your frontend, + then there's no problem, since you're only going to be doing one thing + at a time with the card. Likewise, if you're running the frontend and + backend on the same machine, but you're using btaudio or a hardware + encoder card such as the Hauppauge PVR-250, DVB cards or HDTV capture + cards as your recording source and you're only using the playback + function of your sound card, then you also shouldn't have an issue, + since the sound card isn't being asked to perform two functions at + once. + + If you can't get your sound card to go full-duplex and need it to, + then check your distribution for updated sound drivers. If your sound + card is not capable of full-duplex operation, either because the + drivers don't support it, or it has been designed that way, then + you're pretty much out of luck and will either need to purchase a new + sound card, or will need to get btaudio ``operational''. + + + 22.5.8. My remote doesn't work / works sometimes and not others / + "ghost" keypresses + + This can be due to a number of factors. The simplest case is the + "ghost" keypresses. For me, it was due to compact fluorescent lights + in the same room as the IR receiver, which the receiver was picking up + as keypresses. Once the lights were switched to incandescent bulbs, + the ghost went away. + + You may have an issue with lirc misinterpreting IR commands from a + different remote. I also have an issue where the TiVo "Peanut" remote + will eventually cause lircd to stop responding; even though lircd is + configured for the Pinnacle Systems remote, the TiVo remote IR + patterns are being seen by the IR receiver. + + If your remote has been properly configured, and irw and irxevent are + working correctly, then it's highly likely that your window manager is + not giving focus correctly to the various Myth programs as they run. + The following window managers are known to work correctly: + + + +o fvwm + + +o blackbox (using "Sloppy Focus" and "Focus New Windows") + + NOTE: You do not need to use irxevent if you are using MythTV's + native LIRC support, so the window manager focus issue does not apply + in that case. + + + 22.5.9. Where's "canada-cable"? + + 22.5.10. Channels are off by one + + There is no such thing as "Canada Cable"; Canada uses the same + frequencies as the United States. "Canada Cable" was a hack that some + people used when they would discover that their channels were off-by- + one, i.e. when tuning to channel 42, they might get channel 41 or 43. + This is actually due to the tuner on the video capture device being + mis-detected. You must manually specify the tuner type in your + /etc/modules.conf. See the video4linux mailing list + (https://listman.redhat.com/mailman/listinfo/video4linux-list + <https://listman.redhat.com/mailman/listinfo/video4linux-list>) for + more information. + + + 22.5.11. Mythweb is showing a db_open error when I connect to it + + Find your php.ini file. Make sure you've got a line in it like this: + + extension=mysql.so + + Restart apache for it to take effect. + + + 22.5.12. Mouse pointer disappears when placed over the MythTV windows + + This is the intended behavior. The MythTV interface is meant for use + with a remote control or a keyboard. + + + 22.5.13. What does "strange error flushing buffer" mean on the con- + sole? + + Nothing, really. It's just lame (the mp3 encoder) complaining for + some obscure reason. This seems to be fixed in more recent versions + of the libmp3lame library. + + + 22.5.14. Can't change the channel when watching Live TV. + + Something's wrong with your program database. Did mythfilldatabase + run with no major errors? Or, MythTV may not have permissions to the + appropriate video4linux devices. See the section titled ``Device + Permissions'' for an example. + + + 22.5.15. Screen goes black when you try to play something + + MythTV prints error and status messages to the shell that was used to + start the application. If nothing seems to be happening when you try + to view a program, try switching back to the shell and look for error + messages there, or, if you're running from a startup script, check the + log file. + + + 22.5.16. Poor performance with NVidia cards and XvMC + + XvMC is a NVidia driver feature which is supposed to help with + decoding video. Users have reported that rather than speeding up + their video it appears to be doing the opposite. You may want to + check that your color depth is set for 24bpp. + + + 22.5.17. Computer is loading a media player application when you + insert a CD or DVD + + You need to disable any sort of auto-running media player in your + environment, otherwise MythDVD or MythMusic will not be able to work + properly. + + In KDE, you may want to perform the following: + + + $ rm ~/.kde/Autostart/Autorun.desktop + + + + 23. Miscellaneous. + + 23.1. I'd like to watch the files without using MythTV / I'd like to + convert the files to some other format + + First, check if the mytharchive plugin does what you want. If not, + then read on: + + MythTV comes with a utility called mythtranscode which can decode nuv + files into raw format for use with other applications. This command- + line utility was not designed to be used by the end-user, but instead + to be called by other applications or scripts. Programs like + nuvexport (http://forevermore.net/myth/ + <http://forevermore.net/myth/>) are better suited for the end user. + However, since mythtranscode can be a useful tool, directions on using + it follow. + + mythtranscode creates raw streams, which means that they do not + contain any container information such as resolution, frame-rate, or + audio sampling rate. In order to process the output, you must supply + this information to the processing utility. mythtranscode provides + the relevant information on STDOUT. + + There are two modes in which mythtranscode can create raw streams. + The first has no synchronization and assumes that the processing + utility will read audio and video at a constant rate. This method is + useful when a single application will be processing the raw output, + such as mencoder or ffmpeg. The second method assumes that two + separate applications will be processing the audio and video streams + independently, and there is no rate control between them which means + that the two programs don't coordinate their efforts to maintain + synchronization. + + + 23.1.1. mythtranscode example + + First, start mythtranscode. You will need to determine the channel + and the start time manually. + + + $ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 --profile \ + autodetect --fifodir . & + + + + When mythtranscode begins executing, it will create two FIFOs + ("audout" and "vidout") in the directory specified (in this case ".", + meaning the current directory) and will print out information about + the video stream. + + The next step is to start the processing application. The following + assumes that the stream is NTSC 640x480 with 32Kbps audio. + + To use mencoder you would enter a command like: + + + mencoder -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ + -rawvideo on:w=640:h=480:fps=29.97 -ovc lavc -oac mp3lame -o out.avi \ + vidout + + + + NOTE: You must use mencoder 1.0PRE1 or later. mencoder + version 0.9x WILL NOT WORK! Using ffmepg: + + + ffmpeg -f u16le -ar 32000 -ac 2 -i audout -f rawvideo -s 640x480 -r 29.97 \ + -i vidout -vcodec mpeg4 -b 2000 -acodec mp3 -ab 128 out.avi + + + + Or to play directly using mplayer (again 1.0PRE1 or later is needed): + + + mplayer -audiofile audout -audio-demuxer 20 -rawaudio rate=32000 \ + -rawvideo on:w=640:h=480:fps=29.97 vidout + + + + If you wanted to write the raw data to separate audio and video files + for later processing, the following would work (note the use of + --fifosync for rate-control): + + + $ mythtranscode --chanid 1036 --starttime 2003-10-20T15:30:00 \ + --profile autodetect --fifodir . --fifosync & + $ cat audout > audio.raw & + $ cat vidout > video.yuv + + + + 23.2. Using a different window manager + + MythTV is not dependent on any particular window manager. If you wish + to run a lightweight window manager, the contrib/configfiles/ + directory has an example of a .twmrc and .fvwmrc file you may use. + + + 23.3. What capture resolution should I use? How does video work? + + While MythTV allows you to set various GUI and capture resolutions, + not all combinations make sense. + + First, analog video signals have a defined vertical resolution. In + NTSC, the video standard specifies that there are 525 vertical scan + lines. Once the "extra" lines are removed (they're used to + synchronize the video signal, and encode closed captioning data), you + have 480 horizontal lines stacked vertically. + + In PAL, there are 625 "raw" lines of resolution, with a net of 576 + horizontal lines stacked vertically. + + Horizontally, the maximum value allowed for a Bt8X8 chip is 720. + However, due to limitations in the chip and other limitations of + broadcast television, there may not be a noticeable improvement in + image quality beyond 400 or 500 pixels. + + With this in mind, there are certain commonly accepted values for + resolution. While other values may be accepted for the vertical + resolution, they will cause scan lines to be repeated or dropped. + + From "best" to "worst", in NTSC: + + +o 720x480 "DVD" resolution. ReplayTV High and medium resolution + + +o 704x480 DVD standalone recorder standard resolution + + +o 640x480 4:3 + + +o 544x480 TiVo Best resolution + + +o 480x480 SuperVCD (SVCD) Video CD resolution, TiVo High resolution + + +o 352x480 ReplayTV "Standard" quality, TiVo Basic and Medium + resolution, DVD "LP" resolution + + +o 320x480 + + +o 544x240 + + +o 480x240 + + +o 352x240 Video CD (VCD) resolution + + +o 320x240 + + As you can see, the lower quality values are half of the better ones. + 720x240 is possible, but isn't a good tradeoff relative to the number + of vertical lines lost. In a PAL country, the you would use values + like 720x576 or x288. + + The higher resolutions will be more CPU intensive if you're using + software encoding (PVR-250/350 will have minimal host CPU impact even + if you're using 720x480). If the CPU is overtaxed, frames will be + dropped causing uneven motion. You will likely see the best results at + resolutions which average at least 10% CPU idle time. You can use + system tools such as top or sar to check the CPU % idle while + recording. If the CPU average usage is consistently exceeding 90%, + frames will need to be dropped during peak times when more than 100% + of the available CPU would be needed to process all of the frames. + + If you'd like to read more on this, go to the vcdhelp website at + http://www.vcdhelp.com/forum/userguides/94382.php + <http://www.vcdhelp.com/forum/userguides/94382.php>. + + + 23.4. MythTV GUI and X Display Sizes + + MythTV is designed to be run as dedicated full screen TV application + but can also be run as a desktop application on a computer monitor. + Here are a few consideration for configuring sizes to best suit you + needs. + + + 23.4.1. X Dimensions + + For output to a Television, common resolutions are 640x480, 800x600, + and some rare devices support 1024x768. Generally, higher resolutions + are better. However, you may find that you prefer the picture quality + at one of the lower resolutions. Everything in MythTV is scalable and + should 'fit' regardless of the resolution you choose. + + Edit your X configuration file, usually /etc/X11/XF86Config-4 for + XFree, or /etc/X11/xorg.conf for Xorg, so that the resolution you want + to use is listed first in the lists under "Screen". If this resolution + is higher than the resolutions supported by your output device, you + will see a 'panning' effect where moving the mouse to the edge will + scroll around a desktop area which is larger than the display size. If + this happens, edit your X configuration file to match the display size + then restart X. + + + 23.4.2. MythTV Dimensions + + From "mythfrontend" go to Setup->Appearance. The default for the + height and width is "0" - this will cause MythTV to automatically size + itself to full screen. + + If the MythTV GUI width and height are not 0, mythfrontend uses these + GUI dimensions and is anchored to the upper left corner of the X + Desktop. If the GUI X and/or Y are not 0, the upper left corner is + positioned at the specified coordinates. If the "Run the frontend in a + window" box is checked, the window will have a frame and can then be + dragged to any position on the desktop. + + + + NOTE: When the GUI is full screen, you may see windows rapidly + flipping on top of each other. If this happens you will need to set + your window manager to 'Click to Focus' for windows to stack properly. + The fonts for the GUI and OSD will scale to whatever sizes you use. + Most font sizes can be changed in setup selections or in the .xml + files under /usr/local/share/mythtv/ . Make sure to use fonts large + enough to be read on a TV screen from a distance. + + The full screen TV size is based on the X display size. For Xinerama, + you can specify a screen in Setup->General. The TV picture will be + stretched to fit the entire GUI area regardless of the ``capture + resolutions'' used. However, during playback, the "W" key can to used + to correct differences between 16:9 and 4:3. + 23.4.3. Overscan Dimensions + + Because picture edges can be ragged and screen edges aren't straight, + Television is designed to project an image larger than the physical + screen. This is called "overscan". Underscan is fitting the entire + image inside the screen. Underscan is useful for computer monitors so + that toolbars and scrollbars at the edges can be seen. + + For best results, match the X display area as close as possible to the + edges of the physical screen. This can only be adjusted by your tv-out + device or by the settings for the television set. Many sets have these + adjustments in a 'service mode'. If you cannot make these adjustments, + there will be black borders around the edges of the X desktop, MythTV + GUI and TV playback. + + MythTV has settings for "Overscan" in Setup->Playback. These can not, + and do not, cause the image to display beyond the edge of the X + display area. The purpose of these settings are to cut off rough edges + and to expand the image so that objects will appear to be the same + size as a normal overscanned TV picture. + + + 23.5. Saving or restoring the database + + See the mysqldump manpage for more information. + + + $ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql + + + + To restore: (assuming that you've dropped the database) + + + $ mysql -u root + mysql>create database mythconverg; + mysql>exit + $ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql + + + + You may need to alter the MySQL permissions if this database is being + shared with multiple systems. See the ``Modifying access to the MySQL + database for multiple systems'' section for more information. + + + 23.6. Deleting the MySQL database + + + + NOTE: Performing this step will remove the entire database. You will + lose all of your settings and will need to re-run the mc.sql script + to setup the database structure before running the mythtv-setup + program. + + + $ mysql -u root + mysql> drop database mythconverg; + mysql> quit + + + 23.7. Moving your data to new hardware + + This assumes that you will be moving your data to newer / bigger + hardware and don't want to lose your programs. + + The first step is to create a database backup as demonstrated in an + earlier section. + + Next, you will extract only the data that is relevant to the programs: + + + $ grep "INSERT INTO record " mythtv_backup.sql > restore.sql + $ grep "INSERT INTO recorded " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO oldrecorded " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedprogram " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedrating " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedmarkup " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO recordedseek " mythtv_backup.sql >> restore.sql + + + + NOTE: Newer versions of mysqldump place backticks around the table + names. Backticks are not the same as apostrophes! On a typical North + American keyboard, backticks are located to the left of the "1" key, + on the same key as the tilde. Also, because the bash shell may try to + interpret the backticks, make sure you use a \ before each one. + + If your restore.sql file is empty, you'll need to re-run the commands + like this: + + + $ grep "INSERT INTO \`record\` " mythtv_backup.sql > restore.sql + $ grep "INSERT INTO \`recorded\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`oldrecorded\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedprogram\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedrating\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedmarkup\` " mythtv_backup.sql >> restore.sql + $ grep "INSERT INTO \`recordedseek\` " mythtv_backup.sql >> restore.sql + + + + Note the space after the table name and the ">>" to append to the file + for all but the first grep. "recordedmarkup" and "recordedseek" are + huge and there may be hundreds of thousands of lines if you had lots + of hours of recordings. + + After you have moved the data files to the new hardware, configure + MythTV using the mythtv-setup program as you normally would with a + standard MythTV installation. + + At this point we will restore the information about your programs back + into the database: + + + $ mysql -u mythtv -pmythtv mythconverg < restore.sql + + + + After successful insertion of the data you may delete the restore.sql + file. + + + + 23.8. btaudio + + btaudio allows you to obtain the audio data from your tuner card + directly over the PCI bus without using a sound card. This is useful + if you would like to use multiple tuner cards in a system without + adding a sound card for each one, or if your existing sound card is + not capable of full-duplex operation. + + In order to use btaudio, your tuner card will need certain hardware + installed on it, and that hardware must be wired correctly. The chip + that will allow you to use the btaudio module is the MSP34xx. + However, having a MSP34xx is no guarantee that you will be able to use + the btaudio module. + + As of 2003-03-31, this is the current list of cards and their status: + Works with btaudio: + + + +o Hauppauge WinTV-radio with dbx-TV stereo, model 401 + + +o Hauppauge WinTV-Theater, model 495, 498 (Europe) + + +o ATI TV Wonder + + The following cards do not work: + + +o Pinnacle Studio PCTV Pro - note: this has a MSP34xx, but it's not + wired correctly to the BT878 chip. + + +o ATI TV Wonder VE + + +o Leadtek Winfast 2000 XP (PAL, UK and NTSC) + + +o I/O Magic PC-PVR. No MSP34xx chip. + + The following cards have been reported to work, but have issues: + + +o Avermedia AVerTV Studio (no digital DSP output, "whiney noise" on + analog) + + Once btaudio loads, it should register additional /dev/dsp and + /dev/mixer devices. Typing $ dmesg will let you know what's going on. + + + 23.9. Removing unwanted channels + + If mythfilldatabase grabbed a channel which you do not want to include + in your TV listings, you can remove the entries from the grabber + configuration and the MySQL database. This often happens with premium + channels; for example, HBO or Showtime may be available on your cable + TV system, but is scrambled because you're not a subscriber to that + channel. Since you can never watch it, you want to get rid of it. + + If you are using the DataDirect service, login to your account at + http://labs.zap2it.com/ <http://labs.zap2it.com/> to modify your + lineup. Uncheck the boxes for any unwanted channels, and they will no + longer be included in your download. + + If you are using a grabber from XMLTV, comment out the channel from + the ~/.mythtv/<sourcename>.xmltv file by inserting the word "not " + (including the space) in front of the unwanted entry. This will + prevent xmltv from grabbing future listings. + + Next, delete the unwanted item from the channel table so that it will + not appear in the EPG or when changing channels. To delete the data + from the database we need to perform some steps. First, assuming that + HBO is channel 15, we need to find out the internal chanid used by + MySQL: + + + $ mysql -u root mythconverg + mysql> select chanid from channel where channum=15; + +--------+ + | chanid | + +--------+ + | 1015 | + +--------+ + 1 row in set (0.00 sec) + mysql> delete from channel where chanid = 1015; + + + + Old program data will be removed over the course of a week. However, + you may want to immediately delete any current program listings for + the channel that has been removed: + + + $ mysql -u root mythconverg + mysql> delete from program where chanid = 1015; + + + + 23.10. NFS + + You may want to use a central server to store your files. + + On the host machine, (in this case, the hostname is "masterbackend") + you'll want to edit your /etc/exports file and use something like: + + + /var/video (rw) + + + + To export the /var/video directory with read / write privileges. + + On the "slave" machine, you'll want to edit the /etc/fstab file and + add something like: + + + masterbackend:/var/video /var/video nfs rsize=8192,wsize=8192,hard,intr,nfsvers=3,actimeo=0 + + + + Then run # mount -a to re-read the file to mount the file system. + + In this case, the source is a machine called "masterbackend" which is + exporting the directory "/var/video", which we're mounting locally at + "/var/video". The rsize and wsize options are used to increase the + performance of NFS; "hard,intr" is there because that's the + recommendation of the NFS-HOWTO, the nfsvers is required for filesizes + over 2GB and actimeo is used to turn off file attribute caching. + Attribute caching for a shared media point causes problems; you always + want to see the latest state of the directory and files. See + http://www.mythtv.org/wiki/index.php/Optimizing_Performance + <http://www.mythtv.org/wiki/index.php/Optimizing_Performance> for + additional information regarding performance optimization. + 23.11. Automatically starting mythfrontend at system boot time + + Here's an example submitted to the mythtv-dev list by Pat Pflaum + mailto:pat@netburp.com <mailto:pat@netburp.com> using fvwm: + + + $ cat > .xinitrc + fvwm & + mythfrontend + ^D + $ cat > .fvwmrc + Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0 + ^D + $ + + + + The following also works with blackbox: + + + $ cat > .xinitrc + xset -dpms s off & + irxevent & + mythfrontend & + blackbox + + + + Make sure that your .blackboxrc file has: + + + session.screen0.focusNewWindows: True + session.screen0.focusModel: SloppyFocus + + + + in it. + + + 23.12. Automatically starting mythbackend at system boot time + + 23.12.1. Red Hat And Mandriva + + Here's a method for automatically starting mythbackend submitted by + Mike Thomson (mailto:linux@m-thomson.net <mailto:linux@m-thomson.net>) + and Stu Tomlinson (mailto:stu@nosnilmot.com + <mailto:stu@nosnilmot.com>). + + Copy the files from the MythTV contrib directory or from Mike's web + site (http://m-thomson.net/mythtv/ <http://m-thomson.net/mythtv/>) as + follows: + + etc.rc.d.init.mythbackend should be made executable and copied to + /etc/rc.d/init.d/: + + + $ cd contrib + $ su + # chmod a+x etc.rc.d.init.d.mythbackend + # cp etc.rc.d.init.d.mythbackend /etc/rc.d/init.d/mythbackend + + + + etc.sysconfig.mythbackend should be copied to /etc/sysconfig/: + + + $ cd contrib + $ su + # cp etc.sysconfig.mythbackend /etc/sysconfig/mythbackend + + + + Edit /etc/sysconfig/mythbackend if you want to change the defaults + (the userid that should start mythbackend, location of the logfile and + (if required) the name and location of the mythbackend binary). + + Use chkconfig to make sure the script is called when entering + runlevels 3, 4 or 5: + + + $ su + # chkconfig --level 345 mythbackend on + # exit + $ + + + + 23.12.1.1. Log files + + By default, the log file for mythbackend will be written to + /var/tmp/mythbackend.log. This has been tested and is known to work on + Mandriva and Red Hat, but many people prefer to place logs under + /var/log/. + + To do this, create a group called mythtv (or anything you prefer) and + add your usual MythTV users to that group. If you changed the user + that starts mythbackend from the default of root you must perform this + step. + + Create the directory /var/log/mythtv and set its permissions as + follows: + + + $ su + # mkdir /var/log/mythtv + # chown root:mythtv /var/log/mythtv + # chmod 0775 /var/log/mythtv + # exit + $ ls -ld /var/log/mythtv + drwxrwxr-x 2 root mythtv 4096 Apr 28 21:58 /var/log/mythtv/ + $ + + + + Create a mythtv file in /etc/logrotate.d: + + + + $ su + # cat > /etc/logrotate.d/mythtv + # Set default values for all log files first... + + # Rotate the logs once a week, or more frequently if they + # exceed 10Mb in size (size is checked daily). + weekly + size 10M + + # 'copytruncate' is used for logs generated by + # currently-running programs that should not be restarted + # (and can't be signalled to start a new log) after the + # rotation. It duplicates the existing log file and then + # sets the length of the existing file to 0. The only time + # this would break would be if the program writing the log + # was using lseek. + copytruncate + + # After rotating the files, leave the most recent rotated + # copy alone but gzip everything else to save space. + compress + delaycompress + + # If a log isn't present then don't worry about it. + missingok + + # Don't rotate an empty file. + notifempty + + # end of the global options + + /var/log/mythtv/mythbackend.log /var/log/mythtv/mythfrontend.log { + # Keep logs until they are 2 months old or the number of + # logs reaches 12. If the log files stay small, the age will + # kick in first and you'll only have 8 log files. If they + # get larger than 10Mb then you won't keep all 60 days. + rotate 12 + maxage 60 + } + + # Different options for mythfilldatabase: + /var/log/mythtv/mythfilldatabase.log { + rotate 2 + } + ^D + # + + + + 23.12.1.2. Mandriva + + Mandriva adds one more twist in the form of the msec utility, which + runs regularly and (at the default or any higher security level) sets + permissions on many files, including those under /var/log. + + To tell msec about the MythTV log files and their directory, you need + to edit the /etc/security/msec/perm.local file to include the + following: + + + + # /etc/security/msec/perm.local + # Local overrides to the msec program + # + # Full file path user.group permissions + /var/log/mythtv/ root.mythtv 775 + /var/log/mythtv/* root.mythtv 664 + + + + A copy of the above has been included in the contrib/ directory. You + may add it by typing: + + + $ cd contrib + $ su + # cat etc.security.msec.perm.local >> /etc/security/msec/perm.local + # exit + + + + Finally run the msec tool to check and implement your changes. + + + $ su + # msec + # exit + $ + + + + NOTE: msec can only reduce the permissions of files, so if + you don't get the results you expect, check that you're not asking + msec to add missing permissions to the files or directories you + created. + + 23.12.2. Gentoo + + The portage file for MythTV has scripts that will allow you to run + mythbackend at startup. + + To run mythbackend as a daemon which starts at boot time: + + + # rc-update add mythbackend default + + + + To stop mythbackend as a daemon: + + + # /etc/init.d/mythbackend stop + + + + To obtain a list of options: + + # /etc/init.d/mythbackend + + + + 23.13. Advanced Backend Configurations + + MythTV is flexible in the way that you define multiple backend tuner + configurations. The only hard-and-fast rule is that the Master + backend must have a capture device defined, but shouldn't imply that + the capture device in the Master backend must be the first capture + card defined in the database. + + One example of an advanced configuration is the round-robin scheme. + Rather than defining all of the cards on the master, you could first + go into mythtv-setup on the master to define globals such as the + general configuration and the channel lineup but not the host-specific + configuration item like the capture card. In this example, we will + use a 4 tuner configuration, where two slaves have one card each and + the master has two. + + 1. Add the first capture card on one of the slaves. Complete the + configuration, connecting the input source to the card. This will + get cardid #1 in the database. Exit mythtv-setup. + + 2. Configure the first capture card on the master backend. This will + get cardid #2 in the database. Exit mythtv-setup. + + 3. Configure the first capture card on the second slave. This will be + cardid #3 in the database. Exit mythtv-setup. + + 4. Configure the second capture card on the master backend. This will + get cardid #4 in the database. Exit mythtv-setup. + + Using this scheme, the master backend will not use both capture cards + until one of the following happens: + + +o There are four recordings scheduled for the same time + + +o Both slaves are unavailable + + The scheduler in MythTV checks whether an encoder is available; if a + slave backend isn't running, its encoder isn't available, so the + scheduler will look for the next available encoder. This makes MythTV + very flexible; slave tuners can come and go, and as long as there are + enough tuners for what you'd like to record it doesn't matter which + tuner in particular is going to be used. + + Using this round-robin scheme along with a shared storage directory + like NFS and enabling the Master Backend Override setting will allow + you to view content even if the slave backend that recorded a program + is not available. + + + 23.14. Using the transcoder + + MythTV's built-in transcoder re-encodes recordings from one codec to + another. The transcoder has three primary uses; it can transcode + MPEG-2 files captured using a hardware encoder (PVR cards, DVB cards, + ATSC HD, etc.) to MPEG-4, it can be used to transcode RTjpeg files + (usually only used on systems that can not real-time encode to MPEG-4 + using a framegrabber) to MPEG-4, and finally it can be used to remove + commercials from a MPEG-2 file while leaving the file in MPEG-2 + format. + + When MythTV transcodes a file to MPEG-4 or RTjpeg the resulting file + format is NuppelVideo (nuv). NuppelVideo is a container which + provides a method of keeping the audio and video in sync throughout + the recording, which is why it is used instead of the .avi format. + You may have difficulty playing .nuv files in non-MythTV systems. + + + The original file is removed when the transcoding process is complete. + Unless you're sure that you will be satisfied with the result you may + want to enable the mythtv-setup option which causes mythbackend to + keep the original file after transcoding. This option is on the + second page of the General section in mythtv-setup. Enabling this + allows you to compare the two files and restore the original if you + like. Outside of the initial setup phase it usually isn't necessary + to leave this option enabled. A recording can be transcoded in two + ways: + + + +o Automatically transcode the file once it has completed recording. + + +o Manually choosing to transcode a recording, usually after importing + a cutlist or manually marking commercials to be removed. + + The second method can be used on files that have already been + transcoded (or files which were are already in the desired format), so + only the frames immediately following a cut section will be re- + encoded, resulting in a minimal loss of quality when removing + commercials with the added benefit of being extremely quick. + + The current transcoding system has a lot flexibility, but there are a + number of steps involved in setting it up. In order to automatically + transcode a given recording you must do the following: + + 1. Configure recording profile for your capture source and enable + transcoding on one or more profiles. + + 2. Configure one or more transcoding profiles. + + 3. Create or alter existing scheduled recordings to enable transcoding + for that recording. + + + 23.14.1. Configuring Recording Profiles to Allow Transcoding + + Enter the Utilities/Setup > Setup > TV Settings > Recording Profiles + section in mythfrontend. Choose the option that corresponds to your + capture source (ignore the Transcoders for now.) Choose the quality + profile you are interested in using for transcoding. Ensure that + "Enable auto-transcode after recording" is checked. + + + 23.14.2. Configure Transcoding Profiles + + Enter the Recording Profiles > Transcoders menu. There are three + quality settings to choose from and a two special Autodetect settings. + Later, when scheduling recordings you'll have to choose one of + Autodetect, High, Medium, and Low Quality transcode settings in + addition to the recording profile we set up above. If you choose the + Autodetect transcoding profile for a recording, MythTV will use the + "Autodetect from RTjpeg/MPEG-4" profile for recordings which are + RTjpeg/MPEG-4 files. Otherwise, it will use the "Autodetect from + MPEG-2" profile provided it's an MPEG-2 recording. If you choose one + of the others (High, Medium, Low) it will use the settings in that + profile regardless of the codec of the original recording. + + + There are a number of options for transcoding but the simplest is to + enable lossless transcoding (the first option) which subsequently + removes all other options. Enabling lossless encoding simply removes + commercials (if you've marked them) and attempts to clean up MPEG-2 + streams. Note that with this option MythTV will not apply any sort of + filters and will only attempt to normalize the stream into something + cleaner and less likely to have trouble with other less forgiving + MPEG-2 hardware/software (including players, video editors, etc.) + + If you enable resizing of the recording the next page has the settings + for choosing the final resolution. MythTV will scale the video as + appropriate, not crop it to this resolution. + + The final two pages allow configuration of the video and audio codecs. + Although RTjpeg is an option for video codec there is no reason to + transcode to this format because it will produce larger files than + MPEG-4 and the recording will take more CPU power to play back. The + MPEG-4 settings are described in the documentation for the ffmpeg + project at http://ffmpeg.sourceforge.net/ffmpeg-doc.html + <http://ffmpeg.sourceforge.net/ffmpeg-doc.html>. It's a matter of + trial and error to discover which settings achieve a good compromise + between size and quality. + + If you wish to return to the default settings, they are Bitrate: + 2200-2500, MaxQ: 2, MinQ: 15, MaxQDiff: 3, and "Scale bitrate for + frame size" is enabled. The other options are unchecked. + + + 23.14.3. Create/Alter Scheduled Recordings to Enable Transcoding + + Transcoding is actually enabled on a per-recording basis. Two things + must be true before any given recording will be auto-transcoded, + however. The first is that the recording must have been made with a + recording profile that has auto-transcode enabled. Under "Storage + Options" for the recording you must set the "Record using the "X" + profile" to the profile you configured in the first step. In + addition, under the "Post Recording Options" section of the recording + you must also set "Transcode new recordings." This is also where you + specify the Transcoding profile to use (Auto, High, Medium, Low.) + + It may not be obvious from above but the flexibility of this system is + primarily to make it possible to auto-transcode a show recorded via + one source (ie: pcHDTV 3000), and not transcode that same show if it's + recorded on another kind of card (ie: PVR-250.) There are other uses + however. You could have a PVR-250 and a V4L card. You may want to + transcode the MPEG-2 from the PVR-250 but there is no need to + transcode the recordings made with the V4L card, as it's already + likely to be MPEG-4. + + As an example, you could configure the Default profile for "Hardware + DVB Encoders" (the profile group used for DVB cards, including ATSC + cards like the pcHDTV 3000) to "Enable auto-transcoding". In the + Default profile for MPEG-2 Encoders (PVR cards) you'd leave "Enable + auto-transcoding" unchecked. For programs that are available on both + kinds of cards you'd set the recording profile to Default and enable + auto-transcoding in the record settings. Then you pick your + transcoding profile. The result is that when a program is recorded on + your DVB card, it will get transcoded. When it plays on a channel + available via your PVR card, it won't be. + + + 23.14.4. Manual Transcoding + + Manually transcoding is activated while watching a show by hitting + 'x', from the OSD menu by choosing the Transcode option, or by + choosing Job Options/Transcode from the info menu from the Watch or + Delete Recordings screens. + + The transcoding profile used for manual transcoding is whatever was + set when the recording was originally configured, even if you didn't + enable auto-transcoding. The only way to change what transcoding + profile will be used is to alter the transcoder column in the recorded + table in the database. The transcoder column contains a number which + corresponds with the id column in the recordingprofiles table. You + can find out the id number for each profile in the transcoder group + with an SQL command like: + + + + mysql> select r.* from recordingprofiles r,profilegroups p where p.name='Transcoders' and p.id=r.profilegroup; + +----+----------------+------------+------------+--------------+ + | id | name | videocodec | audiocodec | profilegroup | + +----+----------------+------------+------------+--------------+ + | 21 | RTjpeg/MPEG4 | MPEG-4 | MP3 | 6 | + | 22 | MPEG2 | MPEG-4 | MP3 | 6 | + | 27 | High Quality | MPEG-4 | MP3 | 6 | + | 28 | Medium Quality | MPEG-4 | MP3 | 6 | + | 29 | Low Quality | MPEG-4 | MP3 | 6 | + +----+----------------+------------+------------+--------------+ + 5 rows in set (0.01 sec) + + mysql> + + + + Armed with the knowledge of what the profile ID's are you can also + choose to run mythtranscode from the command line and explicitly + specify the transcoder profile. Run mythtranscode --help for usage + information. + + + 23.15. Changing your hostname + + If you need to change the name of the computers used with MythTV + you'll need to perform a sequence of steps. There are a number of + pieces of information that MythTV keeps track of which are tied to the + hostname of the box, so changing the hostname involves altering the + name in the operating system and in the MySQL database. In the + examples below, the old name of the system was "frontend1" and we're + going to change it to "kidsroom". + + + + NOTE: Changing the hostname using direct SQL update commands will + break things. You MUST use this indirect method. + + 1. Stop all backends. If you run mythbackend from a terminal + session, press control-c. If your backends are started with an init + script, you would do something like the following: + + + $ su + # /etc/init.d/mythbackend stop + + + + 2. Change the hostname. + + For Red Hat and derived distributions, edit the /etc/sysconfig/network + file. Look for HOSTNAME=frontend1 and change this to + HOSTNAME=kidsroom or whatever you'll be using. For other + distributions, refer to the documentation, such as the + + hostname(1) + + + + To alter the hostname in the current session, run: + + + # hostname kidsroom + + + + 3. Dump the database. + + + $ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql + + + + 4. Rename the host in the database. First, ensure that the new + hostname you'll be using isn't already in the database. + + + $ grep kidsroom mythtv_backup.sql + + + + Now we're actually going to change the name. The following should all + be typed on the same line: + + + $ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql + + + + If you don't feel comfortable using sed, you can open the + mythtv_backup.sql file in a text editor and perform a global search + and replace. When saving the file, make sure you use the new name, + mythtv_restore.sql or the rest of the steps below will fail. + + 5. Drop and recreate the database. + + + $ mysql -u root + mysql>drop database mythconverg; + mysql>create database mythconverg; + mysql>exit + + + + 6. Restore the database using your edited version. + + + + $ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql + + + + If you are running slave backends or frontends, don't forget to re- + enable access as detailed in ``Modifying access to the MySQL database + for multiple systems''. + + 7. Start the backends. If you use init scripts, do the following, + otherwise start them from terminal consoles. + + + # /etc/init.d/mythbackend start + + + + 8. Quit and restart all frontends. Delete the mythtv_backup.sql and + mythtv_restore.sql files. + + + 23.16. Can I run MythTV on my TiVo? + + 23.17. Can I run MythTV on my ReplayTV? + + No. + + While it is true that the TiVo runs the Linux kernel, and TiVo has + released their changes to the kernel under the GPL, the TiVo is not a + general-purpose computer, and there is no programming information + available for the custom hardware contained within a TiVo. TiVo is + under no obligation to release the source code to their application. + + The ReplayTV runs VxWorks, a Real Time Operating System from Wind + River Systems. + + 23.18. Can a wireless connection be used between the frontend and the + backend? + + Yes, assuming that your wireless connection has sufficient bandwidth + to maintain the datarate between the frontend and the backend. + 802.11b should be sufficient if the encoded bitrate of the content is + less than the datarate of your wireless connection, which in the case + of 802.11b would be approximately 4 Mbps. (The advertised rate of + 11Mbps gives an actual throughput of 4 Mbps.) 802.11a and 802.11g, if + operating in their high-speed modes, or proprietary 802.11b "Turbo" + schemes should be adequate. Multiple wireless frontends, poor signal + strength or other factors can severely impact the viewing experience + on the frontend. + + + 23.19. How can I burn shows that I have recorded to a DVD? + + Use the mytharchive plugin. + + + 23.20. Using the DBoxII within MythTV + + The configuration of the DBoxII for use within MythTV is tricky (as of + May 16 2005), that's why it's covered here. Your DBoxII has to be + running linux and the Neutrino GUI instead of the stock BetaNova + firmware. For further information, please refer to + http://www.tuxbox.org <http://www.tuxbox.org>. Additionally, you need + to enable the SPTS mode in Neutrino. + + +o Add a new "Capture Card" in the setup. The "Card type" is "DBOX2 + Input", the other values have to be adjusted according to your + setup. The default values, except for the "DBOX2 host ip", should + work fine. + + +o Define a new video source. It doesn't need to be configured, you + just need to define it. MythTV grabs the EPG from the DBoxII. + + +o Connect the DBoxII to the newly defined input source in "input + connections". + + +o Since channel scanning is not implemented yet, you need to define + channels in the "Channel Editor". Make sure that you use the same + value for "Channel Name" as on the DBoxII. You can get a list of + available channels from the web interface of Neutrino at http://ip- + of-your-box:80/. Associate the channel with your new video source + and repeat when needed. + + You may leave the Setup now and proceed as usual. + + + 23.21. What do the icons on the Watch Recordings screen mean? + + Press "1" or F1 to get a popup. + + 23.22. What do the letters mean when I change channels? + + These letters let you know what's going on with the backend as it + tries to tune to a channel. + + Lower case = seen + + Upper Case = seen & good + + +o l/L = Lock : This could be seen by PVR-250/BTTV users + + +o a/A = PAT : Any recording transmitted in MPEG + + +o m/M = PMT : Any recording transmitted in MPEG + + +o g/G = MGT : ATSC only + + +o v/V = VCT : ATSC only + + +o n/N = NIT : DVB only + + +o s/S = SDT : DVB only + + 23.23. What is the difference between the various Hauppauge PVR mod- + els? + + This is covered in the hardware section, and extensively covered on + the Hauppauge website. + (http://www.hauppauge.com/pages/compare_pvr.html + <http://www.hauppauge.com/pages/compare_pvr.html>) Please check the + Hauppauge website for the most accurate information. + + A PVR-150 comes in a number of versions: + + +o The PVR-150 (Model 1045) is the retail kit. It comes with a remote + control and an IR Blaster. It does not have a radio tuner. + + +o The PVR-150 MCE (Model 1042) will usually come in a plain white box + and is sold as an OEM device. It does not come with a remote + control, since it's usually used as the second, third, etc capture + device. + +o The PVR-150 MCE Kit (Model 1062) does not have a radio tuner and + comes with a Microsoft Media Center remote control instead of + Hauppauge's. + + +o The PVR-150 low profile (Model 1086) is a low-profile card. It has + a radio tuner and is approximately half the height of a standard + card. However, it comes with a low-profile PCI bracket, so it is + not suitable for use in a standard PCI slot without removing the + bracket, which may not be worth the trouble. + + A PVR-250 (Model 980) is a retail kit which comes with an IR receiver + and a remote control. + + The PVR-250 MCE (Model 975) contains a FM radio tuner. The PVR-250 + MCE does not contain a IR receiver or a remote. + + The PVR-250 Rev 1 contained an MPEG-2 decoder. However, this function + was not connected to any output jacks, and there doesn't appear to be + any way to pull decoded video from the card, so it's a fairly useless + feature. + + The PVR-350 (model 990) has the features of the PVR-250 as well as + being able to decode MPEG-2. The encode and decode functions may be + used simultaneously. The MPEG-2 decoder function gives superior video + quality compared to what you'll find on a standard video card. + However, the decoder function is only available once Linux has + started, so you will not see any boot-time messages. Also, the card + is not capable of resolutions higher than 720x480, so it cannot be + used with HDTV. Make a conscious decision (and ask for advice on the + mailing list) that you want to tradeoff potential HDTV use in the + future compared to video quality. + + The X-driver for the PVR-350 support playback using Xv efficiently but + does not support any other 2D or 3D acceleration. For some application + this may place a large load on the host CPU, some will run without any + problem and others (mplayer, xine, xmame etc.) should be configured to + utilize the Xv interface. + + Note that for the PVR-350 there are some ``considerations'' regarding + the way audio is handled. + + The PVR-500 is a dual-encoder version of the PVR-150 card, so you can + simultaneously record two different programs at the same time, because + there are two encoder chips on the PCI card. Hauppuage has also + installed an onboard splitter, so you can use one COAX to feed both + tuners. Current versions of the PVR-500 should come with an adapter + to allow you to connect a second S-Video or composite input, but this + will take up a second PCI slot. Early adopters may need to purchase + this item separately. + + + 23.24. Changing channels on an external Set Top Box + + If you need to use an external Set Top Box (STB), such as for + satellite TV or for digital cable you will need some way for MythTV to + tell the STB to switch to a new channel. There are several methods: + + 1. Use an IR blaster. An IR blaster is an infrared transmitter + connected to your computer. When MythTV needs to change channels + it will send IR pulses, thereby emulating a remote control. + + 2. Use a direct serial connection. Some STB's have a serial port on + the back, although it may not look like a serial port. It may look + like a phone jack, or a strange VGA connector. It may be labeled + "Low Speed Data". A direct serial connection is more reliable than + an IR blaster. Not all STB's that have a Low Speed Data port have + it enabled; you may need to convince your service provider to turn + it on. Stating that you have a Tivo may help; the Tivo has a + direct-connect capability. + + 3. Use a firewire connection. There is a 6200ch.c in the MythTV + contrib directory which may work for you. + + 23.25. Configuring one machine to flag all commercials + + Commercial flagging can be CPU intensive. By default, the backend + that created a recording is the one which will flag commercials. You + may wish to use a different machine to run commercial flagging. + + On the slower machine: + + Start the mythtv-setup program. Advance through the pages until you + get to the Job Queue page. Turn off the setting that says "Allow + Commercial Detection jobs", thereby preventing any commercial flagging + jobs from running on this machine. + + Next, make sure that "Run Jobs only on original recording host" is + turned OFF so that new jobs are allowed to run anywhere. + + Restart mythbackend since it only reads this setting when it starts + up. + + On the faster machine: + + Start the mythtv-setup program. Advance through the pages until you + get to the Job Queue page. Ensure that "Allow Commercial Detection + jobs" is turned ON for this machine. + + Run mythjobqueue. mythjobqueue will examine the JobQueue and run any + jobs it finds. mythjobqueue should be left running so that it will + pick up any new commercial flagging jobs that are added to the queue, + otherwise new jobs will be added to the queue and your programs won't + be flagged until you run manually run mythjobqueue. + + Using this technique it's possible to add commercial flagging machines + as needed, even on systems that aren't running a backend. It's also + possible to run the commercial flagger in a virtual machine + environment such as VMWare. + + + 24. Example Configurations. + + 24.1. Logical Volume Manager (LVM) + + LVM greatly increases the flexibility you have in managing your + storage than traditional physical partitions. This section will + provide some brief notes on how to use LVM to create storage space for + your video files and how to add additional disk space in the future. + There's lots more that can be done with LVM, so check the LVM HOWTO + http://tldp.org/HOWTO/LVM-HOWTO/ <http://tldp.org/HOWTO/LVM-HOWTO/> + document for details. + + + + NOTE: If you are running MythTV 0.21 and you are using LVM to + create one large filesystem to store your recordings, it's no longer + recommended that you go the LVM route. The preferred solution is to + use ``Storage Groups''. They're more flexible and less likely to lose + all of your recordings if you have a drive failure. + + If you don't understand how to partition a drive, or how to change the + partition type you should stop and look at documentation on how to + perform these steps. + + + + BIG FAT WARNING: Using an incorrect parameter can make your files + inaccessible, prevent your computer from booting, etc. Be careful! + + Make sure your kernel configuration includes LVM support or that it's + available as a module. Today, most vendors include this by default. + You'll also want to ensure that you have a copy of the LVM utilities; + check your distribution, or get the latest versions from + http://www.sistina.com/products_lvm.htm + <http://www.sistina.com/products_lvm.htm> and build them manually. + + Check that the vgscan program is being run at some point during your + boot sequence - most distributions do this by default. Look for a + message during boot up that looks like this: vgscan -- reading all + physical volumes (this may take a while...) If you don't see any + messages during boot, you may need to install a LVM init script or + confirm that you have all of the LVM packages installed from your + distribution. + + LVM uses a few concepts you should be familiar with before starting. + + +o PV (Physical Volume). The actual partition on the hard drive. + + +o VG (Volume Group). The aggregation of all the PVs make a VG. + + +o LV (Logical Volume). Subdivision of the pool of space available in + the VG into individual chunks, like /usr, /var/video, etc. + + The following example assumes that you want to create a LVM partition + from a chunk of space in /dev/hda5, using a reiserfs filesystem and + mounted on /var/video. You later decide to extend this filesystem by + adding a new disk: /dev/hdb. + + You need to create at least one LVM partition for a physical volume. + Use fdisk or your favorite partition editor to set the type to LVM + (0x8e). If you're using an entire disk, create one big partition + rather than using the device itself. e.g. use /dev/hdb1 not /dev/hdb. + + In the following example, you have a 15GB disk. The first 6GB are set + as your boot partition. /dev/hda2 was added as an extended partition, + and within that partition you created the /dev/hda5 linux (ext2) + partition. + + + + # fdisk /dev/hda + + The number of cylinders for this disk is set to 1823. + There is nothing wrong with that, but this is larger than 1024, + and could in certain setups cause problems with: + 1) software that runs at boot time (e.g., old versions of LILO) + 2) booting and partitioning software from other OSs + (e.g., DOS FDISK, OS/2 FDISK) + + Command (m for help): p + + Disk /dev/hda: 15.0 GB, 15000330240 bytes + 255 heads, 63 sectors/track, 1823 cylinders + Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System + /dev/hda1 * 1 764 6136798+ 83 Linux + /dev/hda2 765 1823 8506417+ 5 Extended + /dev/hda5 765 1823 8506417 83 Linux + + Command (m for help): t + Partition number (1-6): 5 + Hex code (type L to list codes): 8e + + Command (m for help): p + + Disk /dev/hda: 15.0 GB, 15000330240 bytes + 255 heads, 63 sectors/track, 1823 cylinders + Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System + /dev/hda1 * 1 764 6136798+ 83 Linux + /dev/hda2 765 1823 8506417+ 5 Extended + /dev/hda5 765 1823 8506417 8e Linux LVM + + Command (m for help): w + + # + + + + Create the LVM physical volume from the partitions (repeat if you have + multiple partitions to use): + + + # pvcreate /dev/hda5 + + + + Create a LVM volume group out of this physical volume called + "VGforMyth" that is allocated in chunks that are a multiple of 64MB + + + # vgcreate VGforMyth -s 64m /dev/hda5 + + + + Create a logical volume of 5GB called "video" and then create the + reiserfs filesystem and mount it: + + + + # lvcreate --name video --size 5G VGforMyth + # mkreiserfs /dev/VGforMyth/video + # mount /dev/VGforMyth/video /var/video + + + + Now create a 3GB volume for mythmusic files if you like: + + + # lvcreate --name music --size 3G VGforMyth + # mkreiserfs /dev/VGforMyth/music + # mount /dev/VGforMyth/music /var/music + + + + Display the volume group status: # vgdisplay -v + + Now, lets suppose you want to add a 60GB hard disk to the system as + hdb and allocate 50GB of it to video storage. + + First, create a single partition /dev/hdb1 covering the whole disk and + make it type 0x8e using your partition editor. + + # fdisk /dev/hdb .... create partition, set type, save and reboot if + it says you have to + + Create the new LVM physical volume: + + # pvcreate /dev/hdb1 + + Add the new physical volume to the volume group: + + # vgextend VGforMyth /dev/hdb1 + + + + NOTE: You may get errors at this point stating that there are no + physical volumes available for adding to the LV, even though you know + for a fact that there are. You may need to specify the physical + volume in the /dev/ide/host/bus/target/lun/etc format. Once you've + completed one of the following two procedures, use df to check that + you've got more space. + + Make the logical volume used for video bigger: + + # lvextend --size +50G /dev/VGforMyth/video + + 24.1.1. ReiserFS + + Unmount, resize and remount the filesystem. Technically, you don't + need to unmount and remount the ReiserFS. + + + # umount /var/video + # resize_reiserfs /dev/VGforMyth/video + # mount /dev/VGforMyth/video /var/video + + + + 24.1.2. ext2 or ext3 + + LVM comes with a program called resize2fs. + + Unmount, resize and remount the filesystem. The filesystem must be + unmounted during this procedure. + + + # umount /var/video + # resize2fs --size +50G /dev/VGforMyth/video + # mount /dev/VGforMyth/video /var/video + + + + 24.1.3. xfs + + XFS does not need to be unmounted to extend the size: + + + # xfs_growfs /var/video + + + + 24.2. Advanced Partition Formatting + + The partitions that your distribution sets up for you may not be + optimized for large files. Using LVM in conjunction with the following + techniques can be quite useful. + + Unlike a typical filesystem, a MythTV video partition is usually a + very large filesystem filled with a fairly small number of large + files. Filesystem I/O is usually not an issue, even in multi-tuner + and/or multi-frontend setups. + + There is however, one aspect of filesystem performance that can have a + bearing on the performance of MythTV. In Linux, deleting a file will + utilize I/O bandwidth until the deletion has been completed. If + deleting the file takes long enough, the video capture buffer may + overrun, thereby resulting in dropped frames. Some filesystems are + faster at deleting files than others and, for multi-gigabyte MythTV + video files, these differences can be significant. + + Fortunately, there are published tests + (http://aurora.zemris.fer.hr/filesystems/big.html + <http://aurora.zemris.fer.hr/filesystems/big.html>) that provide + insight into filesystem performance under conditions relevant to + MythTV usage. In addition, some limited testing (archived at + http://www.gossamer-threads.com/lists/mythtv/users/52672 + <http://www.gossamer-threads.com/lists/mythtv/users/52672>) with very + large files (10 gigabytes) was reported in the MythTV Users mailing + list. + + + 24.2.1. Ext2 + + Ext2 was the defacto standard Linux filesystem for many years. It is + stable, provides good I/O performance and can quickly delete large + files. The primary disadvantage of Ext2 is that it is not a + journaling filesystem, so a file system consistency check (fsck, which + is normally only performed after a system crash) can take many hours + on a filesystem the size of a typical MythTV partition. + + + + 24.2.2. Ext3 + + Ext3 is Ext2 with a journal, so your biggest gain is that in case of a + crash and reboot you won't have to wait very long for your partition + to be remounted. + + There are options available when formatting an Ext3 partition, as in: + + + # mkfs.ext3 -T largefile4 /dev/hdb1 + + + + This example assumes that /dev/hdb1 has already been created using + fdisk. If you're using LVM, /dev/hdb1 may be something like + /dev/VGforMyth/video. + + The "-T largefile4" option creates one inode per 4 megabytes, which + can provide a few percent more storage space. However, tests indicate + that using the "-T largefile4" option can drastically increase the + amount of time required to delete a large file and thus it should only + be used with encoder settings that produce small video files (YMMV). + + You can check on your filesystem using the dumpe2fs program. See the + man page for details. + + 24.2.3. ReiserFS + + The Reiser filesystem is another journaling filesystem commonly + distributed with Linux. It is known to be an extremely efficient + filesystem and it especially excels at managing partitions containing + a large number of small files. However, tests indicate it is not the + fastest at deleting very large files. For that reason, it may not be + the best choice when using encoder bitrates that produce very large + files. + + + 24.2.4. JFS + + JFS (Journaling File System) is a journaling filesystem originally + developed by IBM for AIX which was later released as open source. + While not as common as Ext3 or ReiserFS, it is distributed with RedHat + 9 (RH9), Fedora Core and Mandriva as well as other distros. According + to tests, JFS is the file deletion speed king, deleting virtually any + file in under one second, even files as large as 10 gigabytes. + + + 24.2.5. XFS + + XFS is a journaling file system originally developed by SGI for Irix, + and later released as open source. While not a part of the default + RedHat Linux 9 or Fedora Core installation (although it is a part of + Mandriva and Fedora Core 2+), it can be easily installed via ATrpms. + XFS provides deletion speeds for large files only slightly slower than + JFS. According to the test results shown at + (http://aurora.zemris.fer.hr/filesystems/big.html + <http://aurora.zemris.fer.hr/filesystems/big.html>), XFS provide + higher I/O rates than JFS, albeit at a higher CPU loading. This may + cause issues if you do not have the spare CPU capacity to handle XFS, + potentially leading to dropped frames. + + + + 24.3. Migrating from DataDirect Labs to Schedules Direct + + MythTV v0.20.2 or later is required to natively support Schedules + Direct. Code has been included to make the transition as simple as + possible. + + You do not need to delete your existing video sources or add new ones! + + The following steps should work for most users: + + +o Create a Schedules Direct account and use the same information as + your existing lineups at Zap2It Labs. Do not add or delete + channels at this time. + + +o Shut down any running mythfrontend and mythbackend programs. + + +o Perform a backup of your existing database. See ``Saving or + restoring the database'' for instructions. + + +o Run mythtv-setup -> Video Sources. Change the grabber to Schedules + Direct, update the username and password fields with the account + information you created at Schedules Direct and select "Retrieve + Lineups". Click Finish. + + +o Exit mythtv-setup and run mythfilldatabase. Check if there were + any errors. + + +o Restart your mythbackend and mythfrontend programs. + + + 24.4. Caching support for Schedules Direct + + MythTV 0.20.2 or later supports caching of downloaded information from + Schedules Direct, so devices that share a common source do not require + multiple downloads. + + Before beginning, perform a backup of your existing database. See + ``Saving or restoring the database'' for instructions. + + In the following scenario, assume that you have the following: + + 1. A PVR-150 MPEG-2 encoder card connected directly to a CATV source. + + 2. A PVR-250 MPEG-2 encoder card connected via S-Video to a CATV Set + Top Box. + + What we are going to do is to create a single lineup at Schedules + Direct and then create two Video Sources which use the same login + information but have different channels associated with them. + + On your Schedules Direct account, create a lineup that has all of the + channels that you can receive. Because we have a Set Top Box (STB), + choose a Digital lineup. Yes, this means that you may have 900 + channels in this lineup, but that's OK. + + Use the Schedules Direct channel editor and unselect any channels that + you can't tune without the STB. This will usually be channels higher + than 125, but check your CATV provider lineup if you're not sure. + Once you've deselected them (using a click on the first channel you + can't receive and then a shift-click on the last channel you can't + receive will deselect all the channels in between those two.) click + the Save Changes button at the bottom of the screen. + + In mythtv-setup, create a Video Source with an appropriate name. "SD- + Analog Only" will be used in this example. Click "Retrieve Lineups" + and select the digital lineup you just created at Schedules Direct. + Click "Finish" to return to the Video sources selector and then press + the ESC key to go back to the main screen. + + Now choose Input Connections. Select the PVR-150 which is connected + directly to the CATV. Set the Video Source to "SD-Analog Only" and + click "Fetch channels from listings source". + + Set the start channel to an appropriate value. + + NOTE: There is a bug where the "Fetch" command may not work; you can + tell that the Fetch did not retrieve any channels in one of two ways: + in the text-mode console, you will see a connection to Schedules + Direct, but it doesn't appear to retrieve any channel information: + + + 2007-08-25 15:03:05.526 New DB DataDirect connection + 2007-08-25 15:03:05.526 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:03:05.536 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM + 2007-08-25 15:03:05.707 New DB connection, total: 3 + 2007-08-25 15:03:05.707 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:03:05.708 sourceid 2 has lineup type: CableDigital + 2007-08-25 15:03:06.623 Data fetching complete. + 2007-08-25 15:03:06.624 DataDirect: Deleting temporary files + + + + or, the "Please add channels to this source" message in the "Starting + channel" field stays on the screen. + + If either of these happens, save the information on this screen by + clicking the "Finish" button. Exit back to the Input connections + screen by pressing ESC, then select this Input Connection again. This + time the Fetch will work and the "Please add channels to this source" + message will disappear. + + If you look at the text-mode console, you'll see this if the channel + retrieval is working: + + + 2007-08-25 15:04:32.437 New DB DataDirect connection + 2007-08-25 15:04:32.437 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:04:32.447 DataDirect: Your subscription expires on 11/23/2007 01:12:10 PM + 2007-08-25 15:04:32.622 New DB connection, total: 3 + 2007-08-25 15:04:32.622 Connected to database 'mythconverg' at host: localhost + 2007-08-25 15:04:32.623 sourceid 2 has lineup type: CableDigital + 2007-08-25 15:04:33.418 DataDirect: Adding channel 41 'AMC' (AMC). + 2007-08-25 15:04:33.422 DataDirect: Adding channel 32 'A & E Network' (AETV). + 2007-08-25 15:04:33.425 DataDirect: Adding channel 66 'Black Entertainment Television' (BET). + 2007-08-25 15:04:33.427 DataDirect: Adding channel 180 'Bravo' (BRAVO). + 2007-08-25 15:04:33.430 DataDirect: Adding channel 51 'ABC Family' (FAM). + 2007-08-25 15:04:33.432 DataDirect: Adding channel 146 'Country Music Television' (CMTV). + 2007-08-25 15:04:33.435 DataDirect: Adding channel 39 'CNBC' (CNBC). + 2007-08-25 15:04:33.437 DataDirect: Adding channel 36 'Cable News Network' (CNN). + 2007-08-25 15:04:33.440 DataDirect: Adding channel 35 'CNN Headline News' (CNNH). + + + + Repeat the Input Connection configuration for any other capture + devices that are connected directly to the CATV system. You do not + need to click Fetch once you've done one successful download of the + channel information - the Starting channel should be automatically + populated. + + + Go back to Schedules Direct and re-enable the channels that you had + previously deselected, then click Save Changes. + + Create a new Video Source, here called "SD-All Digital Channels". + Perform the same "Retrieve Listings" you did before. + + Go back to the Input Connections screen, select the PVR-250 which is + connected to the STB, assign the "SD-All Digital Channels" video + source and perform a retrieve channels. This will pull down the + complete channel listing, but only for this device. + + When mythfilldatabase runs, it will cache the "big" download which is + appropriate for the STB, and then copy the information to the channels + that can only be accessed without the STB. But by default + mythfilldatabase is going to notice that the "Analog only" video + source is missing the channels that are in the Digital lineup you + created at Schedules Direct, so we need to override the addition of + new channels. + + When you run mythfilldatabase to populate your database, you'll need + to run it like this: + + + + $ mythfilldatabase --remove-new-channels + + + + You will also need to modify how the mythbackend calls + mythfilldatabase when it performs its automatic listings update. + + In mythfrontend, select "Setup" -> "General". + + Continue press ENTER until you reach the Mythfilldatabase + configuration screen. In the "mythfilldatabase Arguments" field, type + --remove-new-channels + + then press the TAB key until you reach Finish, then press ENTER to + save. You can then press ESC until you return to the main screen. + + + diff --git a/abs/core/local-website/htdocs/mythtv-doc/stop.eps b/abs/core/local-website/htdocs/mythtv-doc/stop.eps new file mode 100644 index 0000000..534208a --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/stop.eps @@ -0,0 +1,103 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: tiff2ps +%%Title: stop.tif +%%CreationDate: Tue Feb 24 10:42:00 2004 +%%DocumentData: Clean7Bit +%%Origin: 0 0 +%%BoundingBox: 0 0 19 19 +%%LanguageLevel: 1 +%%Pages: (atend) +%%EndComments +%%BeginSetup +%%EndSetup +%%Page: 1 1 +gsave +100 dict begin +18.750000 18.750000 scale +/bwproc { + rgbproc + dup length 3 idiv string 0 3 0 + 5 -1 roll { + add 2 1 roll 1 sub dup 0 eq { + pop 3 idiv + 3 -1 roll + dup 4 -1 roll + dup 3 1 roll + 5 -1 roll put + 1 add 3 0 + } { 2 1 roll } ifelse + } forall + pop pop pop +} def +/colorimage where {pop} { + /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def +} ifelse +%ImageData: 25 25 8 3 0 1 2 "false 3 colorimage" +/line 75 string def +25 25 8 +[25 0 0 -25 0 25] +{currentfile line readhexstring pop} bind +false 3 colorimage +ffffffffffffffffffffffffffffffffffffffffffffc3c3ff9f9fff9f9fff9f9f +ff9f9fff9f9fff9f9fff9f9fff9f9fff9f9fffb7b7ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbcbcffc1c1 +ffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffc7c7ffabab +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffbcbcffc1c1ff3030ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff2020ffbfbfffababffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffbcbcffc1c1ff3030ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff2020ffbfbfffababffffffffffffffffff +ffffffffffffffffffffffffffbcbcffc1c1ff3030ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff2020ffbfbf +ffababffffffffffffffffffffffffffffffffbcbcffc1c1ff3030ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff2020ffbfbfffababffffffffffffffffffffbcbcffc1c1ff3030 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff2020ffbfbfffababffffffffc3c3 +ffc1c1ff3030ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff2020 +ffbfbfffb9b9ffafafff9f9fff0000ff3030ff4040ff4040ff3030ff2020ff4040 +ff4040ff4040ff4040ff0808ff0000ff3030ff4040ff1818ff0000ff0000ff1818 +ff4040ff3838ff0000ff8080ffbfbfffafafff9f9fff9797ffffffffffffffffff +ffbfbfff8080ffffffffffffffffffffffffff2020ffa7a7ffffffffffffffffff +ff4848ff3838ffffffffffffffffffffc7c7ff8080ffbfbfffafafff9f9ffff7f7 +ffe7e7ff5050ff4040ff3030ff2020ff4040ffffffffb7b7ff4040ff0808fff7f7 +ffd7d7ff7070ffffffff9f9fff9797ffffffff8787ffc7c7ffffffff8c8cffbfbf +ffafafff9f9fffffffffcfcfff4040ff0808ff0000ff0000ff0000ffffffff9f9f +ff0000ff0000ffffffff8080ff0000ffdfdfff9f9fff9f9fffffffff4040ffb7b7 +ffffffff9090ffbfbfffafafff9f9fffafaffffffffffffffff7f7ff5050ff0000 +ff0000ffffffff9f9fff0000ff0000ffffffff8080ff0000ffdfdfff9f9fff9f9f +ffffffffffffffffffffdfdfff8080ffbfbfffafafff9f9fff0808ff6060ff8f8f +ffffffffb7b7ff0000ff0000ffffffff9f9fff0000ff0000ffffffff8080ff0000 +ffdfdfff9f9fff9f9fffffffff8080ff7070ff1818ff8080ffbfbfffafafff9f9f +ff0000ff0000ff1818ffefefffbfbfff0000ff0000ffffffff9f9fff0000ff0000 +ffffffffb7b7ff2020fff7f7ff9f9fff9f9fffffffff0000ff0000ff0000ff8080 +ffbfbfffafafff9f9fffffffffffffffffffffffffff8f8fff0000ff0000ffffff +ff9f9fff0000ff0000ffcfcfffffffffffffffffffff7070ff9f9fffffffff0000 +ff0000ff0000ff8080ffbfbfffafafff9f9fff8080ff8080ff8080ff6868ff1010 +ff0000ff0000ff8080ff5050ff0000ff0000ff2828ff7878ff8080ff6868ff0808 +ff5050ff8080ff0000ff0000ff0000ff8080ffbfbfffaeaeffbfbfff0808ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ffafafffb2b2ffffff +ffa3a3ffafafff0808ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff9f9f +ff9c9cffffffffffffffffffffa3a3ffafafff0808ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff9f9fff9c9cffffffffffffffffffffffffffffffffa3a3ffafafff0808 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff9f9fff9c9cffffffffffffffffffffffffffffffffffff +ffffffffa3a3ffafafff0808ff0000ff0000ff0000ff0000ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff9f9fff9c9cffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffa3a3ffafafff0808ff0000ff0000ff0000 +ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff9f9fff9c9cffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffa3a3ffb7b7 +ff8080ff8080ff8080ff8080ff8080ff8080ff8080ff8080ff8080ffafafff9c9c +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffb7b7ffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbfffbfbf +ffbfbfffb2b2ffffffffffffffffffffffffffffffffffffffffff +end +grestore +showpage +%%Trailer +%%Pages: 1 +%%EOF diff --git a/abs/core/local-website/htdocs/mythtv-doc/stop.png b/abs/core/local-website/htdocs/mythtv-doc/stop.png new file mode 100644 index 0000000..bf24d76 Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/stop.png differ diff --git a/abs/core/local-website/htdocs/mythtv-doc/warning.eps b/abs/core/local-website/htdocs/mythtv-doc/warning.eps new file mode 100644 index 0000000..e9bf928 --- /dev/null +++ b/abs/core/local-website/htdocs/mythtv-doc/warning.eps @@ -0,0 +1,134 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: tiff2ps +%%Title: warning.tif +%%CreationDate: Tue Feb 24 11:06:30 2004 +%%DocumentData: Clean7Bit +%%Origin: 0 0 +%%BoundingBox: 0 0 24 24 +%%LanguageLevel: 1 +%%Pages: (atend) +%%EndComments +%%BeginSetup +%%EndSetup +%%Page: 1 1 +gsave +100 dict begin +23.250000 23.250000 scale +/bwproc { + rgbproc + dup length 3 idiv string 0 3 0 + 5 -1 roll { + add 2 1 roll 1 sub dup 0 eq { + pop 3 idiv + 3 -1 roll + dup 4 -1 roll + dup 3 1 roll + 5 -1 roll put + 1 add 3 0 + } { 2 1 roll } ifelse + } forall + pop pop pop +} def +/colorimage where {pop} { + /colorimage {pop pop /rgbproc exch def {bwproc} image} bind def +} ifelse +%ImageData: 31 31 8 3 0 1 2 "false 3 colorimage" +/line 93 string def +31 31 8 +[31 0 0 -31 0 31] +{currentfile line readhexstring pop} bind +false 3 colorimage +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffff8ffffdcffffbaffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4 +ffff7affff10ffff27fcfcc1f7f7f9fdfdffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff9feff92fcfe03ffff00 +ffff03f1f116b4b48dcbcbefffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffcffcf739e4dd01ffff28ffff21fefe00 +b3b315757595cecef6ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffff9ffffa3f9e601ffe40dffff4cffff3bffff04f5f51146464a +7e7ed4fefef8ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fafacff9fa38e6e400ffff07ffff1affff34ffff19ffff0096962b5f5f8ecfcfe9 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffff7efee94ece800 +f5ff00ffff12ffff14ffff1bffff1cffff00f7f7004343538282eafcfcf9ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffed5fffa38e2de00e7f606ffff0a +fffd00fffc16ffff1dffff07ffff008d8d2b61618ad5d5defffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff7ffffa9e6dc00e5f208fde21fd1d1199f8a009e8700 +d7d71effff1affff00dbdd004b4a559a9ddcfaf9f6ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffff8d2fcf82ed7e200fffa0ec9cc182c2c000000060000104b4d23e8eb27 +fff706fffc008b8e325e4e9dd5ddf4ffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfdf4a7 +eedc00e8e609fff40e9396000000080b0023080046231742c1b82afff01afff608 +dde3114a2d479dabe9f8fdfeffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffae1fff951d5ca00ffe90d +ffff169494000000181200340b004522114ec2af0fffff1efff019ffff008b9134 +5a5a96e5d2f2ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffdfcf7a7e9d400e9ef00ffff06ffff0fa9ab00 +0c111405004312003c3d3324cbcf0cffff22ffe816ffe300dfde10474a49bda3ea +fbf9feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffae3fff84ce8d200ffef0affff21ffff17e4d6004a3b120a0551 +2e1365706020e7eb00ffff13ffff1cffec0affff008c8f36404391dedef3ffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc +fbf9a8eecb00ffd000ffeb09fff615ffed00fff200695a1112055b342a738c9624 +fcf300fff400ffff27fff017ffe300e3e10f2f304cb0b0e7fbfbfeffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffff9e4fff747d3c700 +ffdb0bfff915ffe000ffee00fdfe0084750a362a84563389a89c0cfff900ffde00 +fff411ffee1dffc80afffd008f97365755a3e8e7fbffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffdf9f8a7e7ca00edd200fff107ffed15 +ffda00fff800fff000a79a0d1822724e4064cbbc05fff400ffe300ffe200fff625 +ffef16ffe600e4c80c2e4365aeb9f0fcf9ffffffffffffffffffffffffffffffff +fffffffffffffffffffffae7fff240d4ca00ffdc0afff818ffe500ffe800ffe000 +fff800c7bd14190655464e30eef800ffe200ffeb00ffe100ffe727ffff13ffd800 +ffe9007870364b4a86e8e8f1ffffffffffffffffffffffffffffffffffffffffff +fffffcf7f9a4e1cc00f0c800ffdb05fff213ffcb00ffe900ffe500fff000f4da07 +4c294763593dfee700ffe900ffe700ffcd00ffee0fffff1fffd708ffdc00ebd30d +4d4753a2a4d1fafafdfffffffffffffffffffffffffffffffffffffffaf0ffec56 +efcd00ffd40affe81bffe600ffe100ffcb00ffea00ffe900f9db006060247d602a +ffea00ffe900ffea00ffd400ffd300fff528fff22dffcf08ffff0072773a5655ae +ececfbfffffffffffffffffffffffffffffffffffcf9faaae7cc0affc800ffdb03 +fff611ffc900ffea00ffe100ffcc00ffe900fce600bd981cc5ad1efff400ffcf00 +ffd200ffee00ffd400ffed0cffff33ffd80fffd700d9d70b424566a2a2d6fbfafe +fffffffffffffffffffffffffffaeaffe730d4ce00ffd309ffeb1dffe400ffe500 +ffcc00ffea00ffde00ffdf00ffff00fff507ffed08ffee00ffd800ffdd00ffe900 +ffd000ffd300fff50bfff321ffd00affe000918e38595ba8eaeafbffffffffffff +fffffffffffcf9f3a3e1ad01f3c900ffdb03fff80effce00ffd900ffc700ffcd00 +ffea12ffe7179e85114a4e12504b0fc3a412fff800ffea00ffcd00ffc800ffc700 +fff100ffff2affd710ffc700edc40a4a4468a0a1d4fafafefffffffffffffffcf1 +fcdb4ad8c402ffca09ffce1fffd700ffc800ffd80effe71effd700fff707b1a509 +131606000006000017403c32d3bc10ffd500ffe500ffdd00ffc800ffd400fff729 +fff50effd400ffce006e88355761adedebfbfffffffffffff9fbc6e0d00ff6cd00 +ffd603ffec0cffc800ffcb00ffd105ffd60bffce00fff70091930000000c12153c +250e56301e64bcbb2affe600ffd300ffd200ffcb00ffc900ffd209fff923dfda0b +f9cc00dfc1072b296bbebfd4fffffffffdf7fdd172f4b005dfca00ffd000ffd500 +ffd800ffed00ffc700ffda00ffe800ffdb00ac9414040a180c052e5d40bba184b7 +e4d524ffec00ffc300ffe800ffdd00ffc900ffc800fff409f4da04fdcc00ffcd00 +6a615b5052a2f0f0fafffbf0facb39e1c603f4cb00ffcc00f4c900e0cf00f3d600 +e0cb00ffd100eed500e2c900f2dd06b3a4135f46478c776eecb937fed205ffd100 +e3cb00edd400ffd100e0cb00f2cc00ffd300e0cf00f7cd00ffce009c73341c1772 +bfc2d0fffbf4f9cb5cd7ab06d5aa00d4c500dfa100efaf00e0bf00efb000d2be00 +e4b000edbb00d4ba00edd700f0bf0df2c606ebb300d4bb00d3b300edbd00e5b100 +d2be00efb200e1c100d3ac00f1c200e3b000f4c4005b6e4d2d34709997c3fffffe +fef3dcf3c834d1c40bc09500c49b01cab501c59601ca9301c19701c69301c99601 +c19101c79a00d19e00cf9a00c7af00c1ac01c19101c99601c69401c19401cab401 +c5a501c18f01cc9701e9b6018778282a145e1d3977b79ac8fffffffffffffffce9 +bbbbac534b6c4d49654c4f664f47664c49664f47664d49664e47664e4b664e4766 +4c47664d46664e4d664e4c664f48664d47664e49664e47664e4f664d4966504966 +4d4865544f671d1d8f342d766c709defeaf3fffffffffffffffffff1f3ffc0b6ee +b4a0cd9db2cab1a1caa0b2caafa2caa2b0caada2caa4c6caaba9caa7a8caa8aaca +a9aacaa6a7caacaecaa3a5caadafcaa1a3cab0b0ca9fa0cab2b4ca9d9fcab1b3cb +9c9dd1bbbcc9f3f2f3ffffff +end +grestore +showpage +%%Trailer +%%Pages: 1 +%%EOF diff --git a/abs/core/local-website/htdocs/mythtv-doc/warning.png b/abs/core/local-website/htdocs/mythtv-doc/warning.png new file mode 100644 index 0000000..b0c668b Binary files /dev/null and b/abs/core/local-website/htdocs/mythtv-doc/warning.png differ diff --git a/abs/core/local-website/htdocs/remote/COPYING b/abs/core/local-website/htdocs/remote/COPYING new file mode 100644 index 0000000..caa0a06 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + 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 + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/abs/core/local-website/htdocs/remote/CREDITS b/abs/core/local-website/htdocs/remote/CREDITS new file mode 100644 index 0000000..7d959f8 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/CREDITS @@ -0,0 +1,11 @@ +Credits +------- + +Original concept - Steven Ellis <support@openmedia.co.nz> + +Initial base php code - Mike Poublon <poublon@geeksoft.dyndns.org> + +Original remote layout, core design and coding - Steven Ellis <support@openmedia.co.nz> + +CSS based layouts and IE support - Michael Lynch <lynchmv@gmail.com> +Additional PDA Layout - Michael Lynch <lynchmv@gmail.com> diff --git a/abs/core/local-website/htdocs/remote/Changelog b/abs/core/local-website/htdocs/remote/Changelog new file mode 100644 index 0000000..71172d9 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/Changelog @@ -0,0 +1,131 @@ +mythtv-web-remote (0.0.17) unstable; urgency=low + + * Remove old ie_hover.htc code as we no longer need it + * Tidy up style sheet + * Add stylesheet support for additional active buttons + * Rebuild all png files to optimise for size + * Generate new active png files for remaining buttons + * Redo index.html to point at new code + * Correct selected png files in gimp due to IE transparency issues + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 17 Dec 2006 16:05:46 +1300 + +mythtv-web-remote (0.0.16) unstable; urgency=low + + * Merge of IE Fixes and new layout code so that we have IE roll over buttons + * For the moment we are still using a table based layout + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 17 Dec 2006 14:04:37 +1300 + +mythtv-web-remote (0.0.15) unstable; urgency=low + + * Add apache configuration file remote.conf + * Fix IE roll over support on apache - AddType text/x-component .htc + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 17 Dec 2006 13:41:28 +1300 + +mythtv-web-remote (0.0.14) unstable; urgency=low + + * Change host to work for myPVR + * Fix missing support for Record button + * Create a remote-wide.html based on remote.html and layout-wide.html + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:59:06 +1300 + +mythtv-web-remote (0.0.13) unstable; urgency=low + + * Extra work from Mike Poublon <poublon@geeksoft.dyndns.org> + * Support image based submit buttons under IE + * Seperate GUI and PHP code + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:46:10 +1300 + +mythtv-web-remote (0.0.12) unstable; urgency=low + + * Makefile needs to install csshover.htc + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:28:18 +1300 + +mythtv-web-remote (0.0.11) unstable; urgency=low + + * Update wide layout to use new buttons + * Wide layout is still table based at this stage + * Correct some of the submit buttons on the normal layour as they were + passing the wrong value + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:24:54 +1300 + +mythtv-web-remote (0.0.10) unstable; urgency=low + + * Merge changes from Michael Lynch <lynchmv@gmail.com> + * Better IE support in layout.html + * Additional layout for his PDA + * Some php rework + * Add CREDITS file to track changes + + -- OpenMedia Support <support@openmedia.co.nz> Sat, 16 Dec 2006 18:04:51 +1300 + +mythtv-web-remote (0.0.9) unstable; urgency=low + + * Add in README, COPYING, Issues and Changelog files + * First release to MythTV team + + -- OpenMedia Support <support@openmedia.co.nz> Tue, 12 Dec 2006 09:19:13 +1300 + +mythtv-web-remote (0.0.8) unstable; urgency=low + + * Make sure we enable the Network Control port when installing on myPVR + + -- OpenMedia Support <support@openmedia.co.nz> Mon, 4 Dec 2006 15:23:26 +1300 + +mythtv-web-remote (0.0.7) unstable; urgency=low + + * Add wide layout + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 11:43:47 +1300 + +mythtv-web-remote (0.0.6) unstable; urgency=low + + * Load new layout into remote.php + * Issues with IE because of use if submit images + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 11:28:47 +1300 + +mythtv-web-remote (0.0.5) unstable; urgency=low + + * Add wide layout + * Try and make layouts HTML standards compliant + * Can't make CSS standards compliant due to IE hacks + * Correct permissions on installed files + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 09:56:22 +1300 + +mythtv-web-remote (0.0.4) unstable; urgency=low + + * Limited button roll over support for IE + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 3 Dec 2006 09:18:51 +1300 + +mythtv-web-remote (0.0.3) unstable; urgency=low + + * Setup index.html holder + * Rename php remote file + * More tidy ups of layout file + * Add remote.css to install + + -- OpenMedia Support <support@openmedia.co.nz> Mon, 27 Nov 2006 23:05:58 +1300 + +mythtv-web-remote (0.0.2) unstable; urgency=low + + * Update layout + * Add stylesheet remote.css + * Additional images for roll over graphics + + -- OpenMedia Support <support@openmedia.co.nz> Mon, 27 Nov 2006 22:40:33 +1300 + +mythtv-web-remote (0.0.1) unstable; urgency=low + + * Initial version of the mythtv-web-remote + * This is a web based virtual remote control for MythTV + + -- OpenMedia Support <support@openmedia.co.nz> Sun, 26 Nov 2006 11:57:33 +1300 diff --git a/abs/core/local-website/htdocs/remote/Issues b/abs/core/local-website/htdocs/remote/Issues new file mode 100644 index 0000000..95f808f --- /dev/null +++ b/abs/core/local-website/htdocs/remote/Issues @@ -0,0 +1,18 @@ +MythTV Web Remote ISSUES +------------------------ + +Limited IE Support +------------------ +At present the roll overs don't work very well in IE. Also the way the icons +are mapped as submit buttons needs modification as in IE it submits the image +co-ordinates rather than the value + +Rapid Clicking can cause mythfrontend to freeze +----------------------------------------------- +Possible an issue with the telnet control interface. If a user clicks too +rapidly it can cause the front end to lock up, requiring a restart of the GUI. + +Roll Over images required for remaining buttons +----------------------------------------------- +At present only the number and text buttons have rollover and click alternate +images diff --git a/abs/core/local-website/htdocs/remote/README b/abs/core/local-website/htdocs/remote/README new file mode 100644 index 0000000..ecc4797 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/README @@ -0,0 +1,43 @@ +MythWeb Remote - Version 0.0.9 +-------------- + +This has been designed to improve MythTV access for people with certain forms +of disability. It has two web based interfaces that are based on the Hauppauge +MCE Remote control with its additional fast access hotkeys. + +For more details on how the hotkeys are mapped see + http://openmedia.co.nz/openmedia/content/view/27/58/ + +All html/php/css code is released under GPL V2, and all images under +Creative Commons (http://web.resource.org/cc/PublicDomain) as they are based on +the Etiquette Icons by Andy Fitzsimon, see - + http://openclipart.org/clipart/computer/buttons/b_down.txt + + +Installing +---------- +In order to use this install as a directory called "remote" under your web +document root. You should then be able to access it as + http://mythtv/remote +You will also need to enable the Network Control port for the MythTV frontend +for the controls to work. + + +See COPYING for details on the GPL V2 license. + +See ISSUES for outstanding problems + +See Changelog for recent changes + +GPL 2.0 Components +------------------ +Original php code (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +Enhancements (c) 2006 Steven Ellis <support@openmedia.co.nz> +CSS (c) 2006 Steven Ellis <support@openmedia.co.nz> +Remote Layouts (c) 2006 Steven Ellis <support@openmedia.co.nz> + +Creative Commons +---------------- +Original image design (c) Andy Fitzsimon +Final buttom images (c) 2006 Steven Ellis <support@openmedia.co.nz> + diff --git a/abs/core/local-website/htdocs/remote/backend.php b/abs/core/local-website/htdocs/remote/backend.php new file mode 100644 index 0000000..530d220 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/backend.php @@ -0,0 +1,168 @@ +<? +# +# Original code (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +# +# Enhancements (c) 2006 Steven Ellis <support@openmedia.co.nz> and +# (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +# + +#change the line below that has localhost pointing to the address of your frontend. +$HOSTNAME = "localhost"; + +$submit = $_POST['submit']; + +#workaround for IE's image button wierdness +if ( $submit == "" ) +{ + $submit = $_POST['buttonvalue']; +} + +#if we aren't being posted to, then don't do anything useful +if ( $submit == "" ) +{ + echo "Sorry, this file is meant to be called by one of the frontend "; + echo "pages, please try using one of them instead."; + exit(); +} + +# We set jump when we want to perform more complex commands +$jump=""; + +if ($submit == "Power"){ + #Power - not really used yet + $key = ""; +} else if ($submit == "TV"){ + $jump = "livetv"; +} else if ($submit == "Music"){ + $jump = "playmusic"; +} else if ($submit == "Video"){ + $jump = "mythvideo"; +} else if ($submit == "Recordings"){ + $jump = "playbackrecordings"; +} else if ($submit == "Guide"){ + $jump = "programguide"; +} else if ($submit == "Pictures"){ + $jump = "mythgallery"; +} else if ($submit == "Back") { + $key = "escape"; +} else if ($submit == "Info") { + $key = "i"; +} else if ($submit == "Menu") { + #Menu + $key = "m"; +} else if ($submit == "U") { + $key = "up"; +} else if ($submit == "L") { + $key = "left"; +} else if ($submit == "D") { + $key = "down"; +} else if ($submit == "R") { + $key = "right"; +} else if ($submit == "OK") { + $key = "enter"; +} else if ($submit == "Page Up") { + $key = "pageup"; +} else if ($submit == "Page Dn") { + $key = "pagedown"; +} else if ($submit == "Vol Up") { + $key = "bracketright"; +} else if ($submit == "Vol Dn") { + $key = "bracketleft"; +} else if ($submit == "Mute") { + $key = "f9"; +} else if ($submit == "Pause") { + $key = "p"; +} else if ($submit == "Stop") { + $key = "s"; +} else if ($submit == "Play") { + $key = "p"; +} else if ($submit == "Rec") { + $key = "r"; +} else if ($submit == "<<") { + $key = "left"; +} else if ($submit == ">>") { + $key = "right"; +} else if ($submit == "|<") { + #skip commercial back + $key = "q"; +} else if ($submit == ">|") { + #skip commercial + $key = "z"; +# Special keys used by myPVR +} else if ($submit == "#") { + # Change tuner + $key = "y"; +} else if ($submit == "*") { + #skip commercial + $key = "z"; +} else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; +} + +#set the maximum time to execute the page +set_time_limit (5); + +#open the socket to the frontend +$fp = fsockopen($HOSTNAME, 6546, $errno, $errstr, 30); + +if (!$fp) { + #couldn't connect, print the error + echo "ERROR: $errstr ($errno)<br />\n"; + exit(); +} else { + #set up a place for the banner to get read into + $banner = ""; + + #read through the banner, one char at a time and append + #to the banner string until we see a '#' + $c = fgetc($fp); + while ($c !== false && $c != "#") + { + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) + { + #if the connection is still valid then read + #in the extra space after the # + $c = fgetc($fp); + } + + #create the command to issue to the frontend based + #on what the user clicked on + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + + #write the command to the socket + fwrite($fp,$cmd); + + #close the socket + fclose($fp); + + #get the specified page to redirect to + $redirectpage = $_POST['redirectpage']; + if ( $redirectpage == "" ) + { + #use the refering page if all else fails + $redirectpage = getenv('HTTP_REFERER'); + } + + #redirect to the desired location + header( "Location: $redirectpage" ); +} + +?> + diff --git a/abs/core/local-website/htdocs/remote/csshover.htc b/abs/core/local-website/htdocs/remote/csshover.htc new file mode 100644 index 0000000..f6e8f3c --- /dev/null +++ b/abs/core/local-website/htdocs/remote/csshover.htc @@ -0,0 +1,120 @@ +<attach event="ondocumentready" handler="parseStylesheets" /> +<script> +/** + * Whatever:hover - V1.42.060206 - hover & active + * ------------------------------------------------------------ + * (c) 2005 - Peter Nederlof + * Peterned - http://www.xs4all.nl/~peterned/ + * License - http://creativecommons.org/licenses/LGPL/2.1/ + * + * Whatever:hover is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Whatever:hover 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 + * Lesser General Public License for more details. + * + * Credits and thanks to: + * Arnoud Berendsen, Martin Reurings, Robert Hanson + * + * howto: body { behavior:url("csshover.htc"); } + * ------------------------------------------------------------ + */ + +var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i, +currentSheet, doc = window.document, hoverEvents = [], activators = { + onhover:{on:'onmouseover', off:'onmouseout'}, + onactive:{on:'onmousedown', off:'onmouseup'} +} + +function parseStylesheets() { + if(!/MSIE (5|6)/.test(navigator.userAgent)) return; + window.attachEvent('onunload', unhookHoverEvents); + var sheets = doc.styleSheets, l = sheets.length; + for(var i=0; i<l; i++) + parseStylesheet(sheets[i]); +} + function parseStylesheet(sheet) { + if(sheet.imports) { + try { + var imports = sheet.imports, l = imports.length; + for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]); + } catch(securityException){} + } + + try { + var rules = (currentSheet = sheet).rules, l = rules.length; + for(var j=0; j<l; j++) parseCSSRule(rules[j]); + } catch(securityException){} + } + + function parseCSSRule(rule) { + var select = rule.selectorText, style = rule.style.cssText; + if(!csshoverReg.test(select) || !style) return; + + var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1'); + var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo); + var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1]; + var affected = select.replace(/:(hover|active).*$/, ''); + var elements = getElementsBySelect(affected); + if(elements.length == 0) return; + + currentSheet.addRule(newSelect, style); + for(var i=0; i<elements.length; i++) + new HoverElement(elements[i], className, activators[pseudo]); + } + +function HoverElement(node, className, events) { + if(!node.hovers) node.hovers = {}; + if(node.hovers[className]) return; + node.hovers[className] = true; + hookHoverEvent(node, events.on, function() { node.className += ' ' + className; }); + hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); }); +} + function hookHoverEvent(node, type, handler) { + node.attachEvent(type, handler); + hoverEvents[hoverEvents.length] = { + node:node, type:type, handler:handler + }; + } + + function unhookHoverEvents() { + for(var e,i=0; i<hoverEvents.length; i++) { + e = hoverEvents[i]; + e.node.detachEvent(e.type, e.handler); + } + } + +function getElementsBySelect(rule) { + var parts, nodes = [doc]; + parts = rule.split(' '); + for(var i=0; i<parts.length; i++) { + nodes = getSelectedNodes(parts[i], nodes); + } return nodes; +} + function getSelectedNodes(select, elements) { + var result, node, nodes = []; + var identify = (/\#([a-z0-9_-]+)/i).exec(select); + if(identify) { + var element = doc.getElementById(identify[1]); + return element? [element]:nodes; + } + + var classname = (/\.([a-z0-9_-]+)/i).exec(select); + var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, ''); + var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false; + for(var i=0; i<elements.length; i++) { + result = tagName? elements[i].all.tags(tagName):elements[i].all; + for(var j=0; j<result.length; j++) { + node = result[j]; + if(classReg && !classReg.test(node.className)) continue; + nodes[nodes.length] = node; + } + } + + return nodes; + } +</script> diff --git a/abs/core/local-website/htdocs/remote/images/blank.gif b/abs/core/local-website/htdocs/remote/images/blank.gif new file mode 100644 index 0000000..35d42e8 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/blank.gif differ diff --git a/abs/core/local-website/htdocs/remote/images/button_30.png b/abs/core/local-website/htdocs/remote/images/button_30.png new file mode 100644 index 0000000..198b062 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/button_30.png differ diff --git a/abs/core/local-website/htdocs/remote/images/button_30g.png b/abs/core/local-website/htdocs/remote/images/button_30g.png new file mode 100644 index 0000000..19166b2 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/button_30g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/button_30r.png b/abs/core/local-website/htdocs/remote/images/button_30r.png new file mode 100644 index 0000000..3411381 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/button_30r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/button_text.png b/abs/core/local-website/htdocs/remote/images/button_text.png new file mode 100644 index 0000000..2976a2d Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/button_text.png differ diff --git a/abs/core/local-website/htdocs/remote/images/button_textg.png b/abs/core/local-website/htdocs/remote/images/button_textg.png new file mode 100644 index 0000000..6f2146c Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/button_textg.png differ diff --git a/abs/core/local-website/htdocs/remote/images/button_textr.png b/abs/core/local-website/htdocs/remote/images/button_textr.png new file mode 100644 index 0000000..02b5738 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/button_textr.png differ diff --git a/abs/core/local-website/htdocs/remote/images/down.png b/abs/core/local-website/htdocs/remote/images/down.png new file mode 100644 index 0000000..335f28c Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/down.png differ diff --git a/abs/core/local-website/htdocs/remote/images/down_g.png b/abs/core/local-website/htdocs/remote/images/down_g.png new file mode 100644 index 0000000..5d31913 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/down_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/down_r.png b/abs/core/local-website/htdocs/remote/images/down_r.png new file mode 100644 index 0000000..00cde0b Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/down_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/fast_forward.png b/abs/core/local-website/htdocs/remote/images/fast_forward.png new file mode 100644 index 0000000..6563f92 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/fast_forward.png differ diff --git a/abs/core/local-website/htdocs/remote/images/fast_forward_g.png b/abs/core/local-website/htdocs/remote/images/fast_forward_g.png new file mode 100644 index 0000000..f608095 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/fast_forward_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/fast_forward_r.png b/abs/core/local-website/htdocs/remote/images/fast_forward_r.png new file mode 100644 index 0000000..9c71739 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/fast_forward_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/fast_rewind.png b/abs/core/local-website/htdocs/remote/images/fast_rewind.png new file mode 100644 index 0000000..6daf86c Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/fast_rewind.png differ diff --git a/abs/core/local-website/htdocs/remote/images/fast_rewind_g.png b/abs/core/local-website/htdocs/remote/images/fast_rewind_g.png new file mode 100644 index 0000000..a7ba769 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/fast_rewind_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/fast_rewind_r.png b/abs/core/local-website/htdocs/remote/images/fast_rewind_r.png new file mode 100644 index 0000000..f8c1151 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/fast_rewind_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/left.png b/abs/core/local-website/htdocs/remote/images/left.png new file mode 100644 index 0000000..c9c4b72 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/left.png differ diff --git a/abs/core/local-website/htdocs/remote/images/left_g.png b/abs/core/local-website/htdocs/remote/images/left_g.png new file mode 100644 index 0000000..5e93269 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/left_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/left_r.png b/abs/core/local-website/htdocs/remote/images/left_r.png new file mode 100644 index 0000000..960ed9e Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/left_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/ok.png b/abs/core/local-website/htdocs/remote/images/ok.png new file mode 100644 index 0000000..269099c Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/ok.png differ diff --git a/abs/core/local-website/htdocs/remote/images/ok_g.png b/abs/core/local-website/htdocs/remote/images/ok_g.png new file mode 100644 index 0000000..73a0931 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/ok_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/ok_r.png b/abs/core/local-website/htdocs/remote/images/ok_r.png new file mode 100644 index 0000000..8b5473f Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/ok_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/pause.png b/abs/core/local-website/htdocs/remote/images/pause.png new file mode 100644 index 0000000..12a1e0e Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/pause.png differ diff --git a/abs/core/local-website/htdocs/remote/images/pause_g.png b/abs/core/local-website/htdocs/remote/images/pause_g.png new file mode 100644 index 0000000..720798c Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/pause_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/pause_r.png b/abs/core/local-website/htdocs/remote/images/pause_r.png new file mode 100644 index 0000000..df9d032 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/pause_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/rec.png b/abs/core/local-website/htdocs/remote/images/rec.png new file mode 100644 index 0000000..8dddf07 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/rec.png differ diff --git a/abs/core/local-website/htdocs/remote/images/rec_g.png b/abs/core/local-website/htdocs/remote/images/rec_g.png new file mode 100644 index 0000000..1f29994 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/rec_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/rec_r.png b/abs/core/local-website/htdocs/remote/images/rec_r.png new file mode 100644 index 0000000..8263119 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/rec_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/right.png b/abs/core/local-website/htdocs/remote/images/right.png new file mode 100644 index 0000000..3c94d77 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/right.png differ diff --git a/abs/core/local-website/htdocs/remote/images/right_g.png b/abs/core/local-website/htdocs/remote/images/right_g.png new file mode 100644 index 0000000..3b48fd0 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/right_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/right_r.png b/abs/core/local-website/htdocs/remote/images/right_r.png new file mode 100644 index 0000000..707bccb Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/right_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/skip_back.png b/abs/core/local-website/htdocs/remote/images/skip_back.png new file mode 100644 index 0000000..4708f76 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/skip_back.png differ diff --git a/abs/core/local-website/htdocs/remote/images/skip_back_g.png b/abs/core/local-website/htdocs/remote/images/skip_back_g.png new file mode 100644 index 0000000..d5654e7 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/skip_back_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/skip_back_r.png b/abs/core/local-website/htdocs/remote/images/skip_back_r.png new file mode 100644 index 0000000..52554b3 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/skip_back_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/skip_forward.png b/abs/core/local-website/htdocs/remote/images/skip_forward.png new file mode 100644 index 0000000..4103f16 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/skip_forward.png differ diff --git a/abs/core/local-website/htdocs/remote/images/skip_forward_g.png b/abs/core/local-website/htdocs/remote/images/skip_forward_g.png new file mode 100644 index 0000000..af37f40 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/skip_forward_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/skip_forward_r.png b/abs/core/local-website/htdocs/remote/images/skip_forward_r.png new file mode 100644 index 0000000..bd464ac Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/skip_forward_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/stop.png b/abs/core/local-website/htdocs/remote/images/stop.png new file mode 100644 index 0000000..0b10429 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/stop.png differ diff --git a/abs/core/local-website/htdocs/remote/images/stop_g.png b/abs/core/local-website/htdocs/remote/images/stop_g.png new file mode 100644 index 0000000..9f317f7 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/stop_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/stop_r.png b/abs/core/local-website/htdocs/remote/images/stop_r.png new file mode 100644 index 0000000..e53f0f4 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/stop_r.png differ diff --git a/abs/core/local-website/htdocs/remote/images/up.png b/abs/core/local-website/htdocs/remote/images/up.png new file mode 100644 index 0000000..42f5d67 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/up.png differ diff --git a/abs/core/local-website/htdocs/remote/images/up_g.png b/abs/core/local-website/htdocs/remote/images/up_g.png new file mode 100644 index 0000000..d944b71 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/up_g.png differ diff --git a/abs/core/local-website/htdocs/remote/images/up_r.png b/abs/core/local-website/htdocs/remote/images/up_r.png new file mode 100644 index 0000000..f8a7d16 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/images/up_r.png differ diff --git a/abs/core/local-website/htdocs/remote/inc/process.php b/abs/core/local-website/htdocs/remote/inc/process.php new file mode 100644 index 0000000..b71719b --- /dev/null +++ b/abs/core/local-website/htdocs/remote/inc/process.php @@ -0,0 +1,131 @@ +<?php +# +# Original code (c) 2006 Mike Poublon <poublon@geeksoft.dyndns.org> +# +# Enhancements (c) 2006 Steven Ellis <support@openmedia.co.nz> +# +#change the line below that has tv.local to the address of your frontend. + +#echo time() . "<br>"; +if(isset($_POST['submit'])){ + $submit = $_POST['submit']; + #echo "form submitted = $submit<br>"; + + # We set jump when we want to perform more complex commands + $jump=""; + + if ($submit == "Power"){ + #Power - not really used yet + $key = ""; + } else if ($submit == "TV"){ + $jump = "livetv"; + } else if ($submit == "Music"){ + $jump = "playmusic"; + } else if ($submit == "Video" || $submit == "Videos"){ + $jump = "mythvideo"; + } else if ($submit == "Recordings" || $submit == "Recorded"){ + $jump = "playbackrecordings"; + } else if ($submit == "Guide"){ + $jump = "programguide"; + } else if ($submit == "Pictures"){ + $jump = "mythgallery"; + } else if ($submit == "Back" || $submit == "Clear") { + $key = "escape"; + } else if ($submit == "Info") { + $key = "i"; + } else if ($submit == "Menu") { + #Menu + $key = "m"; + } else if ($submit == "U" || $submit == "^") { + $key = "up"; + } else if ($submit == "L" || $submit == "<") { + $key = "left"; + } else if ($submit == "D" || $submit == "v") { + $key = "down"; + } else if ($submit == "R" || $submit == ">") { + $key = "right"; + } else if ($submit == "OK" || $submit == "Enter") { + $key = "enter"; + } else if ($submit == "Page Up" || $submit == "Chan Up") { + $key = "pageup"; + } else if ($submit == "Page Dn" || $submit == "Chan Dn") { + $key = "pagedown"; + } else if ($submit == "Vol Up") { + $key = "bracketright"; + } else if ($submit == "Vol Dn") { + $key = "bracketleft"; + } else if ($submit == "Mute") { + $key = "f9"; + } else if ($submit == "Pause") { + $key = "p"; + } else if ($submit == "Stop") { + $key = "s"; + } else if ($submit == "Rec") { + $key = "r"; + } else if ($submit == "Play") { + $key = "p"; + } else if ($submit == "<<") { + $key = "left"; + } else if ($submit == ">>") { + $key = "right"; + } else if ($submit == "|<") { + #skip commercial back + $key = "q"; + } else if ($submit == ">|") { + #skip commercial + $key = "z"; + # Special keys used by myPVR + } else if ($submit == "#") { + # Change tuner + $key = "y"; + } else if ($submit == "*") { + #skip commercial + $key = "z"; + } else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; + } + + set_time_limit (5); + # change tv.local to the hostname/address of your frontend + $fp = fsockopen("localhost", 6546, $errno, $errstr, 30); + if (!$fp) { + $error = "ERROR: $errstr ($errno)"; + } else { + #stream_set_timeout ( $fp, 0, 100000); + #$banner = stream_get_contents($fp); + + $banner = ""; + + $c = fgetc($fp); + while ($c !== false && $c != "#") { + #echo "c = $c<br>\n"; + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) { + $c = fgetc($fp); #Read in the extra space after the # + } + + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + fwrite($fp,$cmd); + $res = fgets($fp); + #echo "result = $res<br>\n"; + + fclose($fp); + } +} +?> diff --git a/abs/core/local-website/htdocs/remote/index.html b/abs/core/local-website/htdocs/remote/index.html new file mode 100644 index 0000000..35ff9e7 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/index.html @@ -0,0 +1,19 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> + <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /> + + + <title>MythWeb Remote + + + + +Please click through for the vertical remote control.

    +Or click through for the horizontal remote control.
    +
    +There is now an initial PDA version of the layout
    + + + diff --git a/abs/core/local-website/htdocs/remote/layout-wide.html b/abs/core/local-website/htdocs/remote/layout-wide.html new file mode 100644 index 0000000..d534199 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/layout-wide.html @@ -0,0 +1,250 @@ + + + + + + Wide Remote Control + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
      
    + +
    + +
    + + + diff --git a/abs/core/local-website/htdocs/remote/layout.html b/abs/core/local-website/htdocs/remote/layout.html new file mode 100644 index 0000000..7e44ade --- /dev/null +++ b/abs/core/local-website/htdocs/remote/layout.html @@ -0,0 +1,269 @@ + + + + + + Remote Control + + + + + + + + + +
    + + + +
    + +
    + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + + diff --git a/abs/core/local-website/htdocs/remote/nav.php b/abs/core/local-website/htdocs/remote/nav.php new file mode 100644 index 0000000..916bfa2 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/nav.php @@ -0,0 +1,57 @@ + + + + +MythTV Web Remote + + + + + +
    + +
    +
    + Main + Nav + Digits +
    +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    +
    + +
    + + diff --git a/abs/core/local-website/htdocs/remote/num.php b/abs/core/local-website/htdocs/remote/num.php new file mode 100644 index 0000000..1665947 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/num.php @@ -0,0 +1,57 @@ + + + + +MythTV Web Remote + + + + + +
    + +
    +
    + Main + Nav + Digits +
    +
    +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    +
    + +
    + + diff --git a/abs/core/local-website/htdocs/remote/pda.php b/abs/core/local-website/htdocs/remote/pda.php new file mode 100644 index 0000000..888c966 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/pda.php @@ -0,0 +1,39 @@ + + + + +MythTV Web Remote + + + + + +
    + +
    +
    + Main + Nav + Digits +
    +
    +
    + + + +
    + +
    + + + +
    + +
    +
    + +
    + + diff --git a/abs/core/local-website/htdocs/remote/remote-wide.html b/abs/core/local-website/htdocs/remote/remote-wide.html new file mode 100644 index 0000000..2806007 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/remote-wide.html @@ -0,0 +1,275 @@ + + + +MythTV Web Wide Remote + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + +
    + + + diff --git a/abs/core/local-website/htdocs/remote/remote-wide.php b/abs/core/local-website/htdocs/remote/remote-wide.php new file mode 100644 index 0000000..a9035df --- /dev/null +++ b/abs/core/local-website/htdocs/remote/remote-wide.php @@ -0,0 +1,380 @@ + +# +# Enhancements (c) 2006 Steven Ellis +# +#change the line below that has tv.local to the address of your frontend. + +#echo time() . "
    "; +$submit = $_POST['submit']; +#echo "form submitted = $submit
    "; + +# We set jump when we want to perform more complex commands +$jump=""; + +if ($submit == "Power"){ + #Power - not really used yet + $key = ""; +} else if ($submit == "TV"){ + $jump = "livetv"; +} else if ($submit == "Music"){ + $jump = "playmusic"; +} else if ($submit == "Video"){ + $jump = "mythvideo"; +} else if ($submit == "Recordings"){ + $jump = "playbackrecordings"; +} else if ($submit == "Guide"){ + $jump = "programguide"; +} else if ($submit == "Pictures"){ + $jump = "mythgallery"; +} else if ($submit == "Back") { + $key = "escape"; +} else if ($submit == "Info") { + $key = "i"; +} else if ($submit == "Menu") { + #Menu + $key = "m"; +} else if ($submit == "U") { + $key = "up"; +} else if ($submit == "L") { + $key = "left"; +} else if ($submit == "D") { + $key = "down"; +} else if ($submit == "R") { + $key = "right"; +} else if ($submit == "OK") { + $key = "enter"; +} else if ($submit == "Page Up") { + $key = "pageup"; +} else if ($submit == "Page Dn") { + $key = "pagedown"; +} else if ($submit == "Vol Up") { + $key = "bracketright"; +} else if ($submit == "Vol Dn") { + $key = "bracketleft"; +} else if ($submit == "Mute") { + $key = "f9"; +} else if ($submit == "Pause") { + $key = "p"; +} else if ($submit == "Stop") { + $key = "s"; +} else if ($submit == "Play") { + $key = "p"; +} else if ($submit == "<<") { + $key = "left"; +} else if ($submit == ">>") { + $key = "right"; +} else if ($submit == "|<") { + #skip commercial back + $key = "q"; +} else if ($submit == ">|") { + #skip commercial + $key = "z"; +# Special keys used by myPVR +} else if ($submit == "#") { + # Change tuner + $key = "y"; +} else if ($submit == "*") { + #skip commercial + $key = "z"; +} else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; +} + +set_time_limit (5); +# change tv.local to the hostname/address of your frontend +$fp = fsockopen("localhost", 6546, $errno, $errstr, 30); +if (!$fp) { + echo "ERROR: $errstr ($errno)
    \n"; +} else { + #stream_set_timeout ( $fp, 0, 100000); + #$banner = stream_get_contents($fp); + + $banner = ""; + + $c = fgetc($fp); + while ($c !== false && $c != "#") + { + #echo "c = $c
    \n"; + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) + { + $c = fgetc($fp); #Read in the extra space after the # + } + + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + fwrite($fp,$cmd); + $res = fgets($fp); + #echo "result = $res
    \n"; + + fclose($fp); +} + + +?> + + + + +MythTV Web Remote + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + +
    + + + + diff --git a/abs/core/local-website/htdocs/remote/remote.css b/abs/core/local-website/htdocs/remote/remote.css new file mode 100644 index 0000000..0678a65 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/remote.css @@ -0,0 +1,436 @@ +/* + * Style sheet (c) 2006 Steven Ellis + * + * Enhancements by Michael Lynch + * + * Published under http://creativecommons.org/licenses/by/2.5/ + */ + +body { + width:300px; + margin:10px 0 0 10px; + padding 3px; + behavior:url('csshover.htc'); +} + +#narrow { + width:300px; +} + +.mypda { + width:285; + background-color:#fff; + color:#000; +} + +#subround { + width:100%; + min-height:40px; + height:40px; + padding-top:1%; + padding-right:1%; + padding-bottom:1%; + padding-left:1%; +} + +#subwide { + width:100%; + min-height:25px; + height:25px; + padding-top:1%; + padding-right:1%; + padding-bottom:1%; + padding-left:1%; +} + +#subpda { + width:100%; + height:auto; + padding:3px 2px 3px 2px; +} + +#halves { + float:left; + width:49%; +} + +#thirds { + float:left; + width:32.5%; +} + +#fourths { + float:left; + width:24%; +} + +#fifths { + float:left; + width:19%; +} + +#sixths { + float:left; + width:15%; + border:1px solid black; +} + +input.txt { + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; +} + +input.txt:hover { + background:url(images/button_textg.png) no-repeat; +} +input.txt:active { + background:url(images/button_textr.png) no-repeat; +} +input.tiny { + border:1px solid #f6f6f6; + background-color:#2991c7; + width:86px; + color:#fff; + text-align:center; + font-size:8pt; + font-weight:normal; +} + +input.tiny:hover { +} + +input.halfleft { + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; + float:right; +} + +input.halfleft:hover { + background:url(images/button_textg.png) no-repeat; +} +input.halfleft:active { + background:url(images/button_textr.png) no-repeat; +} + +input.halfright { + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; + float:left; +} + +input.halfright:hover { + background:url(images/button_textg.png) no-repeat; +} +input.halfright:active { + background:url(images/button_textr.png) no-repeat; +} + +input.notxt { + visibility:hidden; + background:none; + border-style:none; + width:80px; + height:24px; + text-align:center; + font-size:8pt; + font-weight:normal; + background:url(images/button_text.png) no-repeat; +} + +input.image { + background:#fff; + width:40px; + height:40px; + padding:2px; +} + +input.record { + background:url(images/rec.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.record:hover { + background:url(images/rec_g.png) no-repeat; +} + +input.record:active { + background:url(images/rec_r.png) no-repeat; +} + +input.stop { + background:url(images/stop.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.stop:hover { + background:url(images/stop_g.png) no-repeat; +} + +input.stop:active { + background:url(images/stop_r.png) no-repeat; +} + +input.pause { + background:url(images/pause.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.pause:hover { + background:url(images/pause_g.png) no-repeat; +} + +input.pause:active { + background:url(images/pause_r.png) no-repeat; +} + +input.rewind { + background:url(images/fast_rewind.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.rewind:hover { + background:url(images/fast_rewind_g.png) no-repeat; +} + +input.rewind:active { + background:url(images/fast_rewind_r.png) no-repeat; +} + +input.play { + background:url(images/right.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.play:hover { + background:url(images/right_g.png) no-repeat; +} + +input.play:active { + background:url(images/right_r.png) no-repeat; +} + +input.ffwd { + background:url(images/fast_forward.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.ffwd:hover { + background:url(images/fast_forward_g.png) no-repeat; +} + +input.ffwd:active { + background:url(images/fast_forward_r.png) no-repeat; +} + +input.sback { + background:url(images/skip_back.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.sback:hover { + background:url(images/skip_back_g.png) no-repeat; +} + +input.sback:active { + background:url(images/skip_back_r.png) no-repeat; +} + +input.sfwd { + background:url(images/skip_forward.png) no-repeat; + width:40px; + height:40px; + padding:2px; +} + +input.sfwd:hover { + background:url(images/skip_forward_g.png) no-repeat; +} + +input.sfwd:active { + background:url(images/skip_forward_r.png) no-repeat; +} + +input.navup { + background:url(images/up.png) no-repeat; + width:40px; + height:40px; + padding:2px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.navup:hover { + background:url(images/up_g.png) no-repeat; +} +input.navup:active { + background:url(images/up_r.png) no-repeat; +} + + +input.navleft { + background:url(images/left.png) no-repeat; + width:40px; + height:40px; + padding:2px; + float:right; +} + +input.navleft:hover { + background:url(images/left_g.png) no-repeat; +} + +input.navleft:active { + background:url(images/left_r.png) no-repeat; +} + +input.navok { + background:url(images/ok.png) no-repeat; + width:40px; + height:40px; + padding:2px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.navok:hover { + background:url(images/ok_g.png) no-repeat; +} + +input.navok:active { + background:url(images/ok_r.png) no-repeat; +} + +input.navright { + background:url(images/right.png) no-repeat; + width:40px; + height:40px; + padding:2px; + float:left; +} + +input.navright:hover { + background:url(images/right_g.png) no-repeat; +} + +input.navright:active { + background:url(images/right_r.png) no-repeat; +} + +input.navdown { + background:url(images/down.png) no-repeat; + width:40px; + height:40px; + padding:2px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.navdown:hover { + background:url(images/down_g.png) no-repeat; +} +input.navdown:active { + background:url(images/down_r.png) no-repeat; +} + +input.noimage { + visibility:hidden; + border-radius:21px; + background: #fff; + width:40px; + height:40px; + padding:2px; +} + +input.number { + border: none; + width: 30px; + height: 30px; + background: url(./images/button_30.png) no-repeat; + font-size: 12pt; + font-weight: bold; + padding: 0px; + display:block; + margin-left:auto; + margin-right:auto; +} + +input.number:hover { + background: url(./images/button_30g.png) no-repeat; +} + +input.number:active { + background: url(./images/button_30r.png) no-repeat; +} + +div.tabArea { + font-size: 80%; + font-weight: bold; +} + +a.tab { + background-color: #f0f0f0; + border: 1px solid #000000; + border-bottom-width: 0px; + padding: 2px .3em 2px .3em; + position:relative; + text-decoration: none; + top:-1px; + z-index:100; +} + +a.tab, a.tab:visited { + color: #808080; +} + +a.tab:hover { + background-color: #d0d0d0; + color: #606060; +} + +a.tab.activeTab, a.tab.activeTab:hover, a.tab.activeTab:visited { + background-color: #c0c0c0; + color: #000000; + z-index:102; +} + +div.tabMain { + background-color: #c0c0c0; + border: 1px solid #000000; + position:relative; + z-index:101; +} diff --git a/abs/core/local-website/htdocs/remote/remote.html b/abs/core/local-website/htdocs/remote/remote.html new file mode 100644 index 0000000..71ec374 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/remote.html @@ -0,0 +1,307 @@ + + + +MythTV Web Remote + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
      
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + +
    + +
    + +
    + + + diff --git a/abs/core/local-website/htdocs/remote/remote.php b/abs/core/local-website/htdocs/remote/remote.php new file mode 100644 index 0000000..bacf6a3 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/remote.php @@ -0,0 +1,413 @@ + +# +# Enhancements (c) 2006 Steven Ellis +# +#change the line below that has tv.local to the address of your frontend. + +#echo time() . "
    "; +$submit = $_POST['submit']; +#echo "form submitted = $submit
    "; + +# We set jump when we want to perform more complex commands +$jump=""; + +if ($submit == "Power"){ + #Power - not really used yet + $key = ""; +} else if ($submit == "TV"){ + $jump = "livetv"; +} else if ($submit == "Music"){ + $jump = "playmusic"; +} else if ($submit == "Video"){ + $jump = "mythvideo"; +} else if ($submit == "Recordings"){ + $jump = "playbackrecordings"; +} else if ($submit == "Guide"){ + $jump = "programguide"; +} else if ($submit == "Pictures"){ + $jump = "mythgallery"; +} else if ($submit == "Back") { + $key = "escape"; +} else if ($submit == "Info") { + $key = "i"; +} else if ($submit == "Menu") { + #Menu + $key = "m"; +} else if ($submit == "U") { + $key = "up"; +} else if ($submit == "L") { + $key = "left"; +} else if ($submit == "D") { + $key = "down"; +} else if ($submit == "R") { + $key = "right"; +} else if ($submit == "OK") { + $key = "enter"; +} else if ($submit == "Page Up") { + $key = "pageup"; +} else if ($submit == "Page Dn") { + $key = "pagedown"; +} else if ($submit == "Vol Up") { + $key = "bracketright"; +} else if ($submit == "Vol Dn") { + $key = "bracketleft"; +} else if ($submit == "Mute") { + $key = "f9"; +} else if ($submit == "Pause") { + $key = "p"; +} else if ($submit == "Stop") { + $key = "s"; +} else if ($submit == "Play") { + $key = "p"; +} else if ($submit == "<<") { + $key = "left"; +} else if ($submit == ">>") { + $key = "right"; +} else if ($submit == "|<") { + #skip commercial back + $key = "q"; +} else if ($submit == ">|") { + #skip commercial + $key = "z"; +# Special keys used by myPVR +} else if ($submit == "#") { + # Change tuner + $key = "y"; +} else if ($submit == "*") { + #skip commercial + $key = "z"; +} else if ($submit == "0" || + $submit == "1" || + $submit == "2" || + $submit == "3" || + $submit == "4" || + $submit == "5" || + $submit == "6" || + $submit == "7" || + $submit == "8" || + $submit == "9" ) { + $key = $submit; +} + +set_time_limit (5); +# change tv.local to the hostname/address of your frontend +$fp = fsockopen("localhost", 6546, $errno, $errstr, 30); +if (!$fp) { + echo "ERROR: $errstr ($errno)
    \n"; +} else { + #stream_set_timeout ( $fp, 0, 100000); + #$banner = stream_get_contents($fp); + + $banner = ""; + + $c = fgetc($fp); + while ($c !== false && $c != "#") + { + #echo "c = $c
    \n"; + $banner .= $c; + $c = fgetc($fp); + } + if ($c !== false) + { + $c = fgetc($fp); #Read in the extra space after the # + } + + if ($jump != "") { + $cmd = "jump $jump\x0d\x0a"; + $jump=""; + } else { + $cmd = "key $key\x0d\x0a"; + } + fwrite($fp,$cmd); + $res = fgets($fp); + #echo "result = $res
    \n"; + + fclose($fp); +} + + +?> + + + + +MythTV Web Remote + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
         
    + +
      
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       
       
       
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + +
    + +
    + +
    + + + diff --git a/abs/core/local-website/htdocs/remote/svg/button.svg b/abs/core/local-website/htdocs/remote/svg/button.svg new file mode 100644 index 0000000..6f34399 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/button.svg @@ -0,0 +1,353 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/button_30.xcf b/abs/core/local-website/htdocs/remote/svg/button_30.xcf new file mode 100644 index 0000000..baa07b4 Binary files /dev/null and b/abs/core/local-website/htdocs/remote/svg/button_30.xcf differ diff --git a/abs/core/local-website/htdocs/remote/svg/button_g.svg b/abs/core/local-website/htdocs/remote/svg/button_g.svg new file mode 100644 index 0000000..f219560 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/button_g.svg @@ -0,0 +1,373 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/button_r.svg b/abs/core/local-website/htdocs/remote/svg/button_r.svg new file mode 100644 index 0000000..d2cb508 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/button_r.svg @@ -0,0 +1,371 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/down.svg b/abs/core/local-website/htdocs/remote/svg/down.svg new file mode 100644 index 0000000..a321bc6 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/down.svg @@ -0,0 +1,361 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/fast_forward.svg b/abs/core/local-website/htdocs/remote/svg/fast_forward.svg new file mode 100644 index 0000000..a19f70a --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/fast_forward.svg @@ -0,0 +1,406 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/fast_rewind.svg b/abs/core/local-website/htdocs/remote/svg/fast_rewind.svg new file mode 100644 index 0000000..fe872e4 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/fast_rewind.svg @@ -0,0 +1,406 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/left.svg b/abs/core/local-website/htdocs/remote/svg/left.svg new file mode 100644 index 0000000..fdaec7e --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/left.svg @@ -0,0 +1,358 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/ok.svg b/abs/core/local-website/htdocs/remote/svg/ok.svg new file mode 100644 index 0000000..22975ff --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/ok.svg @@ -0,0 +1,378 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OK + diff --git a/abs/core/local-website/htdocs/remote/svg/pause.svg b/abs/core/local-website/htdocs/remote/svg/pause.svg new file mode 100644 index 0000000..26fcc74 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/pause.svg @@ -0,0 +1,410 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/rec.svg b/abs/core/local-website/htdocs/remote/svg/rec.svg new file mode 100644 index 0000000..bc3cd54 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/rec.svg @@ -0,0 +1,395 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/right.svg b/abs/core/local-website/htdocs/remote/svg/right.svg new file mode 100644 index 0000000..5873a44 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/right.svg @@ -0,0 +1,370 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/scratch.svg b/abs/core/local-website/htdocs/remote/svg/scratch.svg new file mode 100644 index 0000000..9da222b --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/scratch.svg @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/skip_back.svg b/abs/core/local-website/htdocs/remote/svg/skip_back.svg new file mode 100644 index 0000000..de35870 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/skip_back.svg @@ -0,0 +1,407 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/skip_forward.svg b/abs/core/local-website/htdocs/remote/svg/skip_forward.svg new file mode 100644 index 0000000..38bdc9c --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/skip_forward.svg @@ -0,0 +1,413 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/stop.svg b/abs/core/local-website/htdocs/remote/svg/stop.svg new file mode 100644 index 0000000..f3d082d --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/stop.svg @@ -0,0 +1,384 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/remote/svg/up.svg b/abs/core/local-website/htdocs/remote/svg/up.svg new file mode 100644 index 0000000..d980f23 --- /dev/null +++ b/abs/core/local-website/htdocs/remote/svg/up.svg @@ -0,0 +1,349 @@ + + + + + + + Etiquette Icons + + + + hash + + action + computer + icons + buttons + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + + Andy Fitzsimon + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/local-website/htdocs/rrd/Disabled b/abs/core/local-website/htdocs/rrd/Disabled new file mode 100644 index 0000000..e69de29 diff --git a/abs/core/local-website/htdocs/rrd/index.html b/abs/core/local-website/htdocs/rrd/index.html new file mode 100644 index 0000000..5f595b2 --- /dev/null +++ b/abs/core/local-website/htdocs/rrd/index.html @@ -0,0 +1,29 @@ + + + + + + KnoppMyth R5.5 + + +

    + Tux with a Remote +

    + + + + + + +
    +

    KnoppMyth R5.5

    +

    +RRD Tool
    +Is disabled +by rrd_Configure.sh and may be re-enabled by running as root:
    +rrd_Configure.sh
    +

    +

     

    +
    + + diff --git a/abs/core/local-website/htdocs/style.css b/abs/core/local-website/htdocs/style.css new file mode 100644 index 0000000..535ffec --- /dev/null +++ b/abs/core/local-website/htdocs/style.css @@ -0,0 +1,227 @@ +/* + * Global page handlers. +/*/ + + html,body { + border: 0; + margin: 0; + padding: 0; + font-size: 9pt; + font-family: Arial, Helvetica, sans-serif; + background-color: #191c26; + color: #dedede; + } + + /* For some reason, settings for the main body element doesn't always work for + * text inside of tables + /*/ + .body { + font-size: 12px; + font-family: Arial, Helvetica, sans-serif; + } + +/* + * We should try to keep links and labels looking consistent across the app. +/*/ + + a, a:link { color: #E0E0FF; text-decoration: none; } + a:active { color: #990033; text-decoration: none; } + a:visited { color: #E0E0FF; text-decoration: none; } + a:hover { color: #F0F000; text-decoration: underline; } + + label { color: #E0E0FF; text-decoration: none; } + label:hover { color: #F0F000; text-decoration: underline; } + +/* a class for the menu across the top of the page as well as menu headers throughout the page */ + .menu { background-color: #265990 } + .menu_border_t { border-top: 2px solid #9090B0 } + .menu_border_b { border-bottom: 2px solid #9090B0 } + .menu_border_l { border-left: 2px solid #9090B0 } + .menu_border_r { border-right: 2px solid #9090B0 } + +/* a class for commands and other user input boxes */ + +/* @deprecated old classes */ +.command { background-color: #1040A0 } +.command_border_t { border-top: 2px solid #9090B0 } +.command_border_b { border-bottom: 2px solid #9090B0 } +.command_border_l { border-left: 2px solid #9090B0 } +.command_border_r { border-right: 2px solid #9090B0 } +.activecommand { background-color: #108040 } + +/* New command classes */ + + /* Box to hold commands */ + .commandbox { + background-color: #102923; + color: #E0E0FF; + border: 1px solid #9090B0; + } + + /* Commands themselves */ + + .commands { /* Placeholder for handling sub-elements */ } + + .commands input.x-submit { + border: 2px outset #7b8; + padding: 0 .5em; + height: 2em; + background-color: #263; + color: #E0E0FF; + } + .commands input.x-submit:hover { + border: 1px outset #9da; + background-color: #485; + color: #F0F000; + text-decoration: underline; + } + + .commands a { + font-weight: bold; + border: 1px solid #7b8; + padding: .15em .5em; + background-color: #263; + } + .commands a:hover { + border: 1px solid #9da; + background-color: #485; + } + +/* + * The following styles refer to forms and form elements throughout MythWeb +/*/ + + /* Avoid those nasty extra linefeeds in IE tags */ + form { display: inline; } + + /* A special class for submit buttons */ + .submit { + border: 2px outset #7b8; + padding: 0 .5em; + background-color: #263; + color: #E0E0FF; + font-weight: bold; + height: 2em; + } + .submit:hover { + border: 2px outset #9da; + background-color: #485; + color: #F0F000; + text-decoration: underline; + } + + /* A special class for radio buttons and check boxes because some browsers render them weirdly */ + .radio { + height: 14px !important; + width: 14px !important; + color: #002000; + background-color: #C0D0C0; + } + + /* Default styles for form fields */ + select { + font-family: Arial, Helvetica, sans-serif; + color: #002000; + background-color: #C0D0C0; + font-size: 9pt; + } + + input { + padding-left: .25em; + font-family: Arial, Helvetica, sans-serif; + color: #002000; + background-color: #C0D0C0; + font-size: 9pt; + } + + textarea { + font-family: terminal, courier, courier-new; + color: #002000; + background-color: #C0D0C0; + font-size: 9pt; + } + + /* Quantity-sized elements look better with the text centered */ + input.quantity { + width: 2em !important; + text-align: center; + } + +/* + * A special class for error stuff, so all page errors look the same. +/*/ + + #error, .error { + color: #F03030; + background-color: #360000; + border-color: #F03030; + border: thin groove #F03030; + padding: 8px; + } + +/* + * The following represent some global classes to accommodate minor but + * oft-used manipulations like font sizes.0 +/*/ + + /* font size classes */ + .tiny { font-size: 9px; } + .small { font-size: 9pt; } + .normal { font-size: 10pt; } + .large { font-size: 12pt; } + .huge { font-size: 24px; } + + /* fony style classes */ + .bold, .bold a, .bold a:link, .bold a:visited, .bold a:active, .bold a:hover { + font-weight: bold !important; + } + .italic, .italic a, .italic a:link, .italic a:visited, .italic a:active, .italic a:hover { + font-style: italic !important; + } + + /* Handy for, well, hiding things.. Also for mouseover popup menus */ + .hidden { + visibility: hidden; + display: none; + } + +/* + * clearfix -- see http://positioniseverything.net/easyclearing.html for details on how/why this works +/*/ + + .clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + } + .clearfix {display: inline-block;} + /* Hides from IE-mac \*/ + * html .clearfix {height: 1%;} + .clearfix {display: block;} + /* End hide from IE-mac */ + + /* Ajax little popup request thing style */ + #ajax_working { + position: fixed; + background-color: green; + bottom: 0px; + left: 1em; + padding: 1em; + width: 10em; + text-align: center; + } + + .link { + cursor: pointer; + } + +/* I don't think we have a single image with a border in the default template, so disable it */ + a img { + border: 0px; + } + + .nowrap { + white-space: nowrap; + } diff --git a/abs/core/lshw/PKGBUILD b/abs/core/lshw/PKGBUILD new file mode 100644 index 0000000..b2d786b --- /dev/null +++ b/abs/core/lshw/PKGBUILD @@ -0,0 +1,26 @@ +# Contributor: Stefano Zamprogno +# Contributor: Chuck Yang + +pkgname=lshw +pkgver=B.02.13 +pkgrel=1 +pkgdesc="A small tool to provide detailed information on the hardware configuration of the machine." +url="http://ezix.org/project/wiki/HardwareLiSter" +license=('GPL') +source=(http://ezix.org/software/files/lshw-B.02.13.tar.gz abi_stdlib.diff) +md5sums=('e94c728ed037ca706436b5ef71aa392d' '8696f9e8ecb71bedf374b538e8634d2d') +arch=('i686' 'x86_64') +depends=('gtk2') +makedepends=('gcc') + +build() { + cd $startdir/src/$pkgname-$pkgver + + patch -Np0 -i ../abi_stdlib.diff || return 1 + + make || return 1 + make gui || return 1 + make DESTDIR=$startdir/pkg/ install + make DESTDIR=$startdir/pkg/ install-gui +} + diff --git a/abs/core/lshw/abi_stdlib.diff b/abs/core/lshw/abi_stdlib.diff new file mode 100644 index 0000000..8ab61a0 --- /dev/null +++ b/abs/core/lshw/abi_stdlib.diff @@ -0,0 +1,10 @@ +--- src/core/abi.cc 2008-05-24 22:30:21.000000000 -0500 ++++ src/core/abi.cc 2008-05-24 22:29:28.000000000 -0500 +@@ -9,6 +9,7 @@ + #include "osutils.h" + #include + #include ++#include + + __ID("@(#) $Id: mem.cc 1352 2006-05-27 23:54:13Z ezix $"); + diff --git a/abs/core/lshw/gcc4.3.patch b/abs/core/lshw/gcc4.3.patch new file mode 100644 index 0000000..70b1b12 --- /dev/null +++ b/abs/core/lshw/gcc4.3.patch @@ -0,0 +1,282 @@ +diff -Naur lshw-B.02.12.01-old/src/core/blockio.cc lshw-B.02.12.01/src/core/blockio.cc +--- lshw-B.02.12.01-old/src/core/blockio.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/blockio.cc 2008-05-01 14:35:02.000000000 -0600 +@@ -7,6 +7,8 @@ + #define _LARGEFILE_SOURCE + #define _FILE_OFFSET_BITS 64 + ++#include ++#include + #include "version.h" + #include "blockio.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/cdrom.cc lshw-B.02.12.01/src/core/cdrom.cc +--- lshw-B.02.12.01-old/src/core/cdrom.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/cdrom.cc 2008-05-01 14:15:33.000000000 -0600 +@@ -15,6 +15,7 @@ + * + */ + ++#include + #include "version.h" + #include "cdrom.h" + #include "partitions.h" +diff -Naur lshw-B.02.12.01-old/src/core/cpuid.cc lshw-B.02.12.01/src/core/cpuid.cc +--- lshw-B.02.12.01-old/src/core/cpuid.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/cpuid.cc 2008-05-01 14:11:32.000000000 -0600 +@@ -1,3 +1,5 @@ ++#include ++#include + #include "version.h" + #include "cpuid.h" + #include +diff -Naur lshw-B.02.12.01-old/src/core/cpuinfo.cc lshw-B.02.12.01/src/core/cpuinfo.cc +--- lshw-B.02.12.01-old/src/core/cpuinfo.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/cpuinfo.cc 2008-05-01 14:06:49.000000000 -0600 +@@ -1,3 +1,4 @@ ++#include + #include "version.h" + #include "cpuinfo.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/device-tree.cc lshw-B.02.12.01/src/core/device-tree.cc +--- lshw-B.02.12.01-old/src/core/device-tree.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/device-tree.cc 2008-05-01 14:05:05.000000000 -0600 +@@ -9,6 +9,8 @@ + * + */ + ++#include ++#include + #include "version.h" + #include "device-tree.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/fb.cc lshw-B.02.12.01/src/core/fb.cc +--- lshw-B.02.12.01-old/src/core/fb.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/fb.cc 2008-05-01 14:23:24.000000000 -0600 +@@ -4,6 +4,8 @@ + * + */ + ++#include ++#include + #include "version.h" + #include "fb.h" + #include +diff -Naur lshw-B.02.12.01-old/src/core/hw.cc lshw-B.02.12.01/src/core/hw.cc +--- lshw-B.02.12.01-old/src/core/hw.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/hw.cc 2008-05-01 13:59:33.000000000 -0600 +@@ -7,10 +7,12 @@ + #include + #include + #include +-#include ++#include + #include ++#include + #include + #include ++#include + #include + + using namespace hw; +diff -Naur lshw-B.02.12.01-old/src/core/ide.cc lshw-B.02.12.01/src/core/ide.cc +--- lshw-B.02.12.01-old/src/core/ide.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/ide.cc 2008-05-01 14:13:01.000000000 -0600 +@@ -10,6 +10,8 @@ + * by calling scan_disk() and scan_cdrom(), as appropriate. + */ + ++#include ++#include + #include "version.h" + #include "cpuinfo.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/ideraid.cc lshw-B.02.12.01/src/core/ideraid.cc +--- lshw-B.02.12.01-old/src/core/ideraid.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/ideraid.cc 2008-05-01 14:44:23.000000000 -0600 +@@ -3,6 +3,8 @@ + * + */ + ++#include ++#include + #include "version.h" + #include "cpuinfo.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/lvm.cc lshw-B.02.12.01/src/core/lvm.cc +--- lshw-B.02.12.01-old/src/core/lvm.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/lvm.cc 2008-05-01 14:40:42.000000000 -0600 +@@ -9,6 +9,8 @@ + * + */ + ++#include ++#include + #include "version.h" + #include "lvm.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/mounts.cc lshw-B.02.12.01/src/core/mounts.cc +--- lshw-B.02.12.01-old/src/core/mounts.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/mounts.cc 2008-05-01 14:54:07.000000000 -0600 +@@ -4,6 +4,8 @@ + * + */ + ++#include ++#include + #include "version.h" + #include "mounts.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/osutils.cc lshw-B.02.12.01/src/core/osutils.cc +--- lshw-B.02.12.01-old/src/core/osutils.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/osutils.cc 2008-05-01 14:08:08.000000000 -0600 +@@ -1,3 +1,4 @@ ++#include + #include "version.h" + #include "osutils.h" + #include +diff -Naur lshw-B.02.12.01-old/src/core/parisc.cc lshw-B.02.12.01/src/core/parisc.cc +--- lshw-B.02.12.01-old/src/core/parisc.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/parisc.cc 2008-05-01 14:28:11.000000000 -0600 +@@ -9,6 +9,7 @@ + * + */ + ++#include + #include "version.h" + #include "device-tree.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/partitions.cc lshw-B.02.12.01/src/core/partitions.cc +--- lshw-B.02.12.01-old/src/core/partitions.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/partitions.cc 2008-05-01 14:33:22.000000000 -0600 +@@ -14,6 +14,8 @@ + #define _LARGEFILE_SOURCE + #define _FILE_OFFSET_BITS 64 + ++#include ++#include + #include "version.h" + #include "partitions.h" + #include "blockio.h" +diff -Naur lshw-B.02.12.01-old/src/core/pci.cc lshw-B.02.12.01/src/core/pci.cc +--- lshw-B.02.12.01-old/src/core/pci.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/pci.cc 2008-05-01 14:09:46.000000000 -0600 +@@ -1,3 +1,5 @@ ++#include ++#include + #include "version.h" + #include "pci.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/pcmcia.cc lshw-B.02.12.01/src/core/pcmcia.cc +--- lshw-B.02.12.01-old/src/core/pcmcia.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/pcmcia.cc 2008-05-01 14:45:40.000000000 -0600 +@@ -1,3 +1,4 @@ ++#include + #include "version.h" + #include "pcmcia.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/pcmcia-legacy.cc lshw-B.02.12.01/src/core/pcmcia-legacy.cc +--- lshw-B.02.12.01-old/src/core/pcmcia-legacy.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/pcmcia-legacy.cc 2008-05-01 14:17:18.000000000 -0600 +@@ -1,3 +1,5 @@ ++#include ++#include + #include "version.h" + #include "pcmcia-legacy.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/pnp.cc lshw-B.02.12.01/src/core/pnp.cc +--- lshw-B.02.12.01-old/src/core/pnp.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/pnp.cc 2008-05-01 14:21:45.000000000 -0600 +@@ -6,6 +6,7 @@ + * + * + */ ++#include + #include "version.h" + #include "pnp.h" + +diff -Naur lshw-B.02.12.01-old/src/core/print.cc lshw-B.02.12.01/src/core/print.cc +--- lshw-B.02.12.01-old/src/core/print.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/print.cc 2008-05-01 14:02:00.000000000 -0600 +@@ -7,6 +7,8 @@ + * + */ + ++#include ++#include + #include "print.h" + #include "options.h" + #include "version.h" +diff -Naur lshw-B.02.12.01-old/src/core/scsi.cc lshw-B.02.12.01/src/core/scsi.cc +--- lshw-B.02.12.01-old/src/core/scsi.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/scsi.cc 2008-05-01 14:18:40.000000000 -0600 +@@ -1,3 +1,5 @@ ++#include ++#include + #include "version.h" + #include "mem.h" + #include "cdrom.h" +diff -Naur lshw-B.02.12.01-old/src/core/smp.cc lshw-B.02.12.01/src/core/smp.cc +--- lshw-B.02.12.01-old/src/core/smp.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/smp.cc 2008-05-01 14:56:39.000000000 -0600 +@@ -4,6 +4,7 @@ + * + */ + ++#include + #include "version.h" + #include "smp.h" + #include +diff -Naur lshw-B.02.12.01-old/src/core/spd.cc lshw-B.02.12.01/src/core/spd.cc +--- lshw-B.02.12.01-old/src/core/spd.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/spd.cc 2008-05-01 14:20:10.000000000 -0600 +@@ -1,3 +1,5 @@ ++#include ++#include + #include "version.h" + #include "spd.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/sysfs.cc lshw-B.02.12.01/src/core/sysfs.cc +--- lshw-B.02.12.01-old/src/core/sysfs.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/sysfs.cc 2008-05-01 14:26:29.000000000 -0600 +@@ -4,6 +4,7 @@ + * + */ + ++#include + #include "version.h" + #include "sysfs.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/usb.cc lshw-B.02.12.01/src/core/usb.cc +--- lshw-B.02.12.01-old/src/core/usb.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/usb.cc 2008-05-01 14:24:55.000000000 -0600 +@@ -7,6 +7,8 @@ + #define _GNU_SOURCE + #endif + ++#include ++#include + #include "version.h" + #include "usb.h" + #include "osutils.h" +diff -Naur lshw-B.02.12.01-old/src/core/volumes.cc lshw-B.02.12.01/src/core/volumes.cc +--- lshw-B.02.12.01-old/src/core/volumes.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/core/volumes.cc 2008-05-01 14:50:09.000000000 -0600 +@@ -6,6 +6,8 @@ + #define _LARGEFILE_SOURCE + #define _FILE_OFFSET_BITS 64 + ++#include ++#include + #include "version.h" + #include "volumes.h" + #include "blockio.h" +diff -Naur lshw-B.02.12.01-old/src/lshw.cc lshw-B.02.12.01/src/lshw.cc +--- lshw-B.02.12.01-old/src/lshw.cc 2008-05-01 13:22:58.000000000 -0600 ++++ lshw-B.02.12.01/src/lshw.cc 2008-05-01 14:58:24.000000000 -0600 +@@ -1,3 +1,5 @@ ++#include ++#include + #include "hw.h" + #include "print.h" + #include "main.h" diff --git a/abs/core/m4/PKGBUILD b/abs/core/m4/PKGBUILD new file mode 100644 index 0000000..b0738c8 --- /dev/null +++ b/abs/core/m4/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 17049 2008-10-24 17:18:43Z andyrtr $ +# Maintainer: Andreas Radke + +pkgname=m4 +pkgver=1.4.12 +pkgrel=1 +pkgdesc="m4 macro processor" +arch=(i686 x86_64) +license=('GPL') +url="http://www.gnu.org/software/m4" +install=m4.install +groups=('base-devel') +depends=('glibc' 'bash' 'texinfo') +source=(ftp://ftp.gnu.org/gnu/m4/$pkgname-$pkgver.tar.gz) +md5sums=('0499a958a561781b125c740f18061ea8') + +build() { + cd ${srcdir}/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make prefix=${pkgdir}/usr install || return 1 + + rm -f ${pkgdir}/usr/share/info/dir +} diff --git a/abs/core/m4/m4.install b/abs/core/m4/m4.install new file mode 100644 index 0000000..7954ba9 --- /dev/null +++ b/abs/core/m4/m4.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(m4.info m4.info-1 m4.info-2) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/madwifi-utils/PKGBUILD b/abs/core/madwifi-utils/PKGBUILD index fc821ba..6246983 100644 --- a/abs/core/madwifi-utils/PKGBUILD +++ b/abs/core/madwifi-utils/PKGBUILD @@ -4,8 +4,8 @@ pkgname=madwifi-utils pkgver=0.9.4.3844 -_kernver=2.6.26-ARCH -pkgrel=1 +_kernver=2.6.28-LinHES +pkgrel=3 pkgdesc="Userspace tools of madwifi drivers for Atheros wireless chipsets." arch=(i686 x86_64) license=('GPL') diff --git a/abs/core/madwifi/PKGBUILD b/abs/core/madwifi/PKGBUILD index da2ec7a..3cd078b 100644 --- a/abs/core/madwifi/PKGBUILD +++ b/abs/core/madwifi/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 7965 2008-08-05 10:52:26Z tpowa $ +# $Id: PKGBUILD 22482 2008-12-26 22:45:43Z tpowa $ # Originally by kleptophobiac # Modified by James Rayner for the repositories -_kernver=2.6.26-ARCH; +_kernver=2.6.28-LinHES; pkgname=madwifi pkgver=0.9.4.3844 -pkgrel=1 +pkgrel=5 pkgdesc="Madwifi drivers for Atheros wireless chipsets. For stock arch 2.6 kernel" arch=(i686 x86_64) license=('GPL') url="http://madwifi.org" -depends=('madwifi-utils' 'kernel26>=2.6.26-1' 'kernel26<2.6.27') +depends=('madwifi-utils' 'kernel26>=2.6.28' 'kernel26<2.6.29') makedepends=('sharutils') install=madwifi-ng.install # subversion source: svn checkout http://svn.madwifi.org/madwifi/trunk madwifi diff --git a/abs/core/madwifi/madwifi-ng.install b/abs/core/madwifi/madwifi-ng.install index a4cac8b..800cb98 100644 --- a/abs/core/madwifi/madwifi-ng.install +++ b/abs/core/madwifi/madwifi-ng.install @@ -1,20 +1,20 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the new package version # arg 2: the old package version post_upgrade() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core/mcpp/PKGBUILD b/abs/core/mcpp/PKGBUILD index 9d0afce..57dae67 100644 --- a/abs/core/mcpp/PKGBUILD +++ b/abs/core/mcpp/PKGBUILD @@ -1,27 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22398 2008-12-26 17:32:45Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=mcpp -pkgver=2.6.4 -pkgrel=2 +pkgver=2.7.2 +pkgrel=1 pkgdesc="Matsui's CPP implementation precisely conformed to standards" arch=(i686 x86_64) -license=('custom:') +license=('custom') url="http://mcpp.sourceforge.net" -source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz \ - mcpp-2.6.4-patch) +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz ) depends=(glibc) +md5sums=('512de48c87ab023a69250edc7a0c7b05') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np0 -i ${startdir}/src/mcpp-2.6.4-patch || return 1 - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR="${pkgdir}" install || return 1 - mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 ${startdir}/src/${pkgname}-${pkgver}/LICENSE \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + ln -sf ../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/" } -md5sums=('c0f5aa9b13e36ea0f2ab9358c5d65153' - '80890eb2988d7e80964b814cf134f842') diff --git a/abs/core/mdadm/PKGBUILD b/abs/core/mdadm/PKGBUILD index 13c5c98..0af45bf 100644 --- a/abs/core/mdadm/PKGBUILD +++ b/abs/core/mdadm/PKGBUILD @@ -1,8 +1,8 @@ # $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ # Maintainer: Judd Vinet pkgname=mdadm -pkgver=2.6.4 -pkgrel=10 +pkgver=3.0 +pkgrel=12 pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as Software RAID" arch=(i686 x86_64) license=('GPL') @@ -10,14 +10,15 @@ url="http://www.cse.unsw.edu.au/~neilb/source/mdadm/" groups=('base') depends=('glibc') backup=('etc/mdadm.conf') -source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.bz2 \ +conflicts=('udev<135-4') +source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/$pkgname-$pkgver.tar.bz2 \ mdadm mdadm.conf raid-partitions_install raid-partitions_hook) replaces=('raidtools') -md5sums=('b616697aecc870d5d580bd6e010472a3' +md5sums=('bcd27a1359b18e25e61593221d098f6a' '6df172c8f77b280018cf87eb3d313f29' - '0ce4c0f9770bf582a71228053566359d' - '9de7e423ec9c6766b5f5d39915929003' - '09d72c714b40b6fa1e8eab04c1dabd42') + '0ce4c0f9770bf582a71228053566359d' + '9de7e423ec9c6766b5f5d39915929003' + '09d72c714b40b6fa1e8eab04c1dabd42') build() { cd $startdir/src/$pkgname-$pkgver diff --git a/abs/core/mdadm/mdadm-2.2-segfault.patch b/abs/core/mdadm/mdadm-2.2-segfault.patch deleted file mode 100644 index d956a20..0000000 --- a/abs/core/mdadm/mdadm-2.2-segfault.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur mdadm-2.2-orig/Assemble.c mdadm-2.2/Assemble.c ---- mdadm-2.2-orig/Assemble.c 2005-12-04 21:56:20.000000000 -0800 -+++ mdadm-2.2/Assemble.c 2006-02-06 10:56:37.000000000 -0800 -@@ -219,7 +219,7 @@ - } - if (dfd >= 0) close(dfd); - -- if (ident->uuid_set && (!update && strcmp(update, "uuid")!= 0) && -+ if (ident->uuid_set && (!update || strcmp(update, "uuid")!= 0) && - (!super || same_uuid(info.uuid, ident->uuid, tst->ss->swapuuid)==0)) { - if ((inargv && verbose >= 0) || verbose > 0) - fprintf(stderr, Name ": %s has wrong uuid.\n", diff --git a/abs/core/media_dirs/PKGBUILD b/abs/core/media_dirs/PKGBUILD new file mode 100644 index 0000000..f3907fe --- /dev/null +++ b/abs/core/media_dirs/PKGBUILD @@ -0,0 +1,68 @@ +pkgname=media_dirs +pkgver=1 +pkgrel=12 +pkgdesc="creates the dir layout for mythtv to use" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +install=media_dirs.install +provides=() +source=() +md5sums=() +arch=('i686') + + +build() { + cd $startdir/src/ + DIR_PREFIX=myth + while read dirname + do + mkdir -p "$startdir/src/$DIR_PREFIX/${dirname}" + touch "$startdir/src/$DIR_PREFIX/${dirname}/.media" + done < # Contributor: Jan de Groot pkgname=mesa -pkgver=7.0.3 -pkgrel=3 +pkgver=7.2 +pkgrel=1 pkgdesc="Mesa OpenGL library" arch=(i686 x86_64) license=('LGPL') url="http://mesa3d.sourceforge.net" -depends=('libgl' 'glproto>=1.4.9' 'gcc-libs' 'libxt') -makedepends=('imake' 'pkgconfig') +depends=('libgl' 'libx11>=1.1.4-3' 'libxt' 'glproto>=1.4.9' 'gcc-libs>=4.3.1') +makedepends=('pkgconfig' 'dri2proto>=1.1' 'libdrm>=2.3.1') conflicts=('mesa-apps') replaces=('mesa-apps') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaDemos-${pkgver}.tar.bz2 - ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2 - mesa-6.5-apps-noglut.patch) -md5sums=('e6e6379d7793af40a6bc3ce1bace572e' - '47fd6863621d3c9c7dbb870ab7f0c303' - '6ae05158e678f4594343f32c2ca50515' - 'cc5a4ea4ea8de4425997fcda2a9d8648') +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/mesa3d/MesaDemos-${pkgver}.tar.bz2 + ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2) +md5sums=('04d379292e023df0b0266825cb0dbde5' + '22e03dc4038cd63f32c21eb60994892b' + '6ae05158e678f4594343f32c2ca50515') build() { - cd ${startdir}/src/Mesa-${pkgver} - patch -Np0 -i ${startdir}/src/mesa-6.5-apps-noglut.patch || return 1 - - unset CFLAGS - unset CXXFLAGS - - CONFIG="linux-dri-x86" - if [ "${CARCH}" = "x86_64" ]; then - CONFIG="linux-dri-x86-64" - sed -i -e "s/lib64/lib/g" configs/${CONFIG} - fi - echo "EXTRA_LIB_PATH =" >> configs/${CONFIG} - echo "SRC_DIRS = glx/x11 glu glw" >> configs/${CONFIG} - rm -f include/GL/glut*h - echo "USING_EGL = 0" >> configs/${CONFIG} - echo "PROGRAM_DIRS =" >> configs/${CONFIG} - echo "MKDEP = makedepend" >> configs/${CONFIG} - echo "DRI_DIRS =" >> configs/${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> configs/${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> configs/${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> configs/${CONFIG} + cd ${srcdir}/Mesa-${pkgver} + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=swrast \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glut || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 - make ${CONFIG} || return 1 - install -m755 -d ${startdir}/pkg/usr - make INSTALL_DIR=${startdir}/pkg/usr install || return 1 - install -m644 include/GL/*.h ${startdir}/pkg/usr/include/GL/ || return 1 + install -m755 -d ${pkgdir}/usr/bin + install -m755 progs/xdemos/glx{gears,info} ${pkgdir}/usr/bin/ || return 1 - rm -f ${startdir}/pkg/usr/lib/libGL.so* - cd progs/xdemos - make CFLAGS+="-I${startdir}/pkg/usr/include" glxinfo glxgears || return 1 - install -m755 -d ${startdir}/pkg/usr/bin || return 1 - install -m755 glxinfo glxgears ${startdir}/pkg/usr/bin/ || return 1 + rm -f ${pkgdir}/usr/lib/libGL.so* + rm -rf ${pkgdir}/usr/lib/xorg - cd ${startdir}/src/gl-manpages-1.0.1 + cd ${srcdir}/gl-manpages-1.0.1 ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR=${pkgdir} install || return 1 } diff --git a/abs/core/mesa/mesa-7.1-link-shared.patch b/abs/core/mesa/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/mesa/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/miscsplashutils/ChangeLog b/abs/core/miscsplashutils/ChangeLog new file mode 100644 index 0000000..811f87d --- /dev/null +++ b/abs/core/miscsplashutils/ChangeLog @@ -0,0 +1,3 @@ +2007-06-28 tardo +* Built for x86_64 + diff --git a/abs/core/miscsplashutils/PKGBUILD b/abs/core/miscsplashutils/PKGBUILD new file mode 100644 index 0000000..e0b85c8 --- /dev/null +++ b/abs/core/miscsplashutils/PKGBUILD @@ -0,0 +1,26 @@ +# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org + +pkgname=miscsplashutils +pkgver=0.1.8 +pkgrel=1 +pkgdesc="Miscellaneous framebuffer utilities including fbres and fbtruetype" +arch=(i686 x86_64) +url="http://dev.gentoo.org/~spock/projects/gensplash/" +license=('GPL') +depends=('freetype2') +conflicts=('bootsplash') +install=miscsplashutils.install +source=(http://dev.gentoo.org/~spock/projects/gensplash/current/$pkgname-$pkgver.tar.bz2) + +build() { + cd $startdir/src/$pkgname-$pkgver + make || return 1 + make DESTDIR=$startdir/pkg/ install + + install -d $startdir/pkg/lib/splash/bin + touch $startdir/pkg/lib/splash/bin/wc + + # install luxisri.ttf to avoid an x-server dependency + install -D -m644 fbtruetype/luxisri.ttf $startdir/pkg/etc/splash/luxisri.ttf +} +md5sums=('0a9505c5c5ed169e6158d2c1b06ff40b') diff --git a/abs/core/miscsplashutils/miscsplashutils.install b/abs/core/miscsplashutils/miscsplashutils.install new file mode 100644 index 0000000..4345f5d --- /dev/null +++ b/abs/core/miscsplashutils/miscsplashutils.install @@ -0,0 +1,39 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { +/bin/true +} + +# arg 1: the new package version +post_install() { +echo " : Copying /usr/bin/wc to /lib/splash/bin" +install -D -m755 /usr/bin/wc /lib/splash/bin/wc +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { +/bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { +post_install +} + +# arg 1: the old package version +pre_remove() { +/bin/true +} + +# arg 1: the old package version +post_remove() { +/bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/mjpegtools/1.9.patch b/abs/core/mjpegtools/1.9.patch new file mode 100644 index 0000000..ae3fc90 --- /dev/null +++ b/abs/core/mjpegtools/1.9.patch @@ -0,0 +1,147 @@ +http://bugs.gentoo.org/200767 +http://sourceforge.net/tracker/index.php?func=detail&aid=1947059&group_id=5776&atid=305776 + +--- mjpegtools-1.9.0rc3/mpeg2enc/encodertypes.h ++++ mjpegtools-1.9.0rc3/mpeg2enc/encodertypes.h +@@ -25,6 +25,8 @@ + */ + + ++#include ++ + class Parity + { + public: +--- mjpegtools-1.9.0rc3/mpeg2enc/macroblock.cc ++++ mjpegtools-1.9.0rc3/mpeg2enc/macroblock.cc +@@ -21,6 +21,7 @@ + + #include + #include ++#include + + #include "macroblock.hh" + #include "mpeg2syntaxcodes.h" +--- mjpegtools-1.9.0rc3/mpeg2enc/picturereader.cc ++++ mjpegtools-1.9.0rc3/mpeg2enc/picturereader.cc +@@ -23,6 +23,7 @@ + #include "picturereader.hh" + #include "mpeg2encoder.hh" + #include "imageplanes.hh" ++#include + //#include + //#include + //#include +--- mjpegtools-1.9.0rc3/mplex/inputstrm.cpp ++++ mjpegtools-1.9.0rc3/mplex/inputstrm.cpp +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #include "mjpeg_types.h" + #include "inputstrm.hpp" +--- mjpegtools-1.9.0rc3/mplex/padstrm.cpp ++++ mjpegtools-1.9.0rc3/mplex/padstrm.cpp +@@ -24,6 +24,7 @@ + #include "config.h" + #endif + ++#include + #include "padstrm.hpp" + + +--- mjpegtools-1.9.0rc3/mplex/multiplexor.cpp ++++ mjpegtools-1.9.0rc3/mplex/multiplexor.cpp +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + #include + #include +--- mjpegtools-1.9.0rc3/mplex/main.cpp ++++ mjpegtools-1.9.0rc3/mplex/main.cpp +@@ -31,6 +31,7 @@ + #include + #endif + #include ++#include + #include + #include + #ifndef _WIN32 +--- mjpegtools-1.9.0rc3/y4mdenoise/Set.hh ++++ mjpegtools-1.9.0rc3/y4mdenoise/Set.hh +@@ -23,7 +23,7 @@ + // How we implement ourselves. + + public: +- typedef typename Imp::Allocator Allocator; ++ typedef typename Imp::Allocator_t Allocator; + // The type of allocator to use to allocate items in the set. + + Set (const PRED &a_rPred = PRED(), +--- mjpegtools-1.9.0rc3/y4mdenoise/SkipList.hh ++++ mjpegtools-1.9.0rc3/y4mdenoise/SkipList.hh +@@ -57,19 +57,19 @@ + // Will give good sorting for up to e^10 items. + + public: +- typedef Allocator Allocator; ++ typedef Allocator Allocator_t; + // The type of node allocator to use. + +- static Allocator sm_oNodeAllocator; ++ static Allocator_t sm_oNodeAllocator; + // The default node allocator. + + SkipList (const PRED &a_rPred = PRED(), +- Allocator &a_rAlloc = sm_oNodeAllocator); ++ Allocator_t &a_rAlloc = sm_oNodeAllocator); + // Default constructor. Must be followed by Init(). + + SkipList (Status_t &a_reStatus, bool a_bAllowDuplicates, + uint32_t a_nRandSeed, const PRED &a_rPred = PRED(), +- Allocator &a_rAlloc = sm_oNodeAllocator); ++ Allocator_t &a_rAlloc = sm_oNodeAllocator); + // Constructor. Specify whether or not duplicates are allowed, + // and provide a random number seed. + +@@ -255,7 +255,7 @@ + + private: + +- Allocator &m_rNodeAllocator; ++ Allocator_t &m_rNodeAllocator; + // Where we get memory to allocate nodes. + + bool m_bAllowDuplicates; +@@ -337,7 +337,7 @@ + + // The default node allocator. Allocates 64K at a time. + template +-typename SkipList::Allocator ++typename SkipList::Allocator_t + SkipList::sm_oNodeAllocator (65536); + + +@@ -345,7 +345,7 @@ + // Default constructor. Must be followed by Init(). + template + SkipList::SkipList (const PRED &a_rPred, +- Allocator &a_rAlloc) ++ Allocator_t &a_rAlloc) + : m_rNodeAllocator (a_rAlloc), m_oPred (a_rPred) + { + // Set up some defaults. +@@ -371,7 +371,7 @@ + template + SkipList::SkipList (Status_t &a_reStatus, + bool a_bAllowDuplicates, uint32_t a_nRandSeed, +- const PRED &a_rPred, Allocator &a_rAlloc) ++ const PRED &a_rPred, Allocator_t &a_rAlloc) + : m_rNodeAllocator (a_rAlloc), m_oPred (a_rPred) + { + // Make sure they didn't start us off with an error. diff --git a/abs/core/mjpegtools/PKGBUILD b/abs/core/mjpegtools/PKGBUILD new file mode 100644 index 0000000..833d798 --- /dev/null +++ b/abs/core/mjpegtools/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Contributor: Damir Perisa +# Mantainer: Roberto Carvajal + +pkgname=mjpegtools +pkgver=1.9.0 +pkgrel=5 +pkgdesc="The mjpeg programs are a set of tools that can do recording of videos and playback, simple cut-and-paste editing and the MPEG compression of audio and video under Linux. " +arch=(i686 x86_64) +license=('GPL') +url="http://mjpeg.sourceforge.net/" +depends=('libjpeg' 'libpng' 'sdl' 'gcc' 'libdv') +makedepends=('gtk2') +options=('!makeflags' '!libtool') +source=(http://downloads.sourceforge.net/sourceforge/mjpeg/${pkgname}-${pkgver}.tar.gz + mjpegtools-1.8.0-gcc41.patch) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + # patch -Np1 -i ${startdir}/src/mjpegtools-1.8.0-gcc41.patch || return 1 + ./configure --prefix=/usr + find -name Makefile -exec sed -i -e 's:-march=k8 -mtune=k8::' -e 's:-march=pentium3 -mtune=pentium3::' {} \; + + make || return 1 + make DESTDIR=${startdir}/pkg install + + install -m644 mpeg2enc/mpeg2syntaxcodes.h \ + ${startdir}/pkg/usr/include/mjpegtools/mpeg2enc/ +} diff --git a/abs/core/mjpegtools/mjpegtools-1.8.0-gcc41.patch b/abs/core/mjpegtools/mjpegtools-1.8.0-gcc41.patch new file mode 100644 index 0000000..77d556f --- /dev/null +++ b/abs/core/mjpegtools/mjpegtools-1.8.0-gcc41.patch @@ -0,0 +1,12 @@ +diff -ur mjpegtools-1.8.0-orig/y4mdenoise/Region2D.hh mjpegtools-1.8.0/y4mdenoise/Region2D.hh +--- mjpegtools-1.8.0-orig/y4mdenoise/Region2D.hh 2005-12-19 12:36:54.000000000 +0300 ++++ mjpegtools-1.8.0/y4mdenoise/Region2D.hh 2005-12-19 12:44:36.000000000 +0300 +@@ -16,7 +16,7 @@ + + #include "Status_t.h" + #include +- ++#include + + + // The 2-dimensional region class. Parameterized by the numeric type diff --git a/abs/core/mjpegtools/mjpegtools-1.8.0-libc.patch b/abs/core/mjpegtools/mjpegtools-1.8.0-libc.patch new file mode 100644 index 0000000..7cffada --- /dev/null +++ b/abs/core/mjpegtools/mjpegtools-1.8.0-libc.patch @@ -0,0 +1,154 @@ +diff -Naur mjpegtools-1.8.0.orig/mpeg2enc/encodertypes.h mjpegtools-1.8.0/mpeg2enc/encodertypes.h +--- mjpegtools-1.8.0.orig/mpeg2enc/encodertypes.h 2008-12-10 10:57:56.000000000 -0600 ++++ mjpegtools-1.8.0/mpeg2enc/encodertypes.h 2008-12-10 11:02:08.000000000 -0600 +@@ -26,7 +26,7 @@ + + #include "config.h" + +- ++#include + + class Parity + { +diff -Naur mjpegtools-1.8.0.orig/mpeg2enc/macroblock.cc mjpegtools-1.8.0/mpeg2enc/macroblock.cc +--- mjpegtools-1.8.0.orig/mpeg2enc/macroblock.cc 2008-12-10 10:57:56.000000000 -0600 ++++ mjpegtools-1.8.0/mpeg2enc/macroblock.cc 2008-12-10 11:02:41.000000000 -0600 +@@ -20,6 +20,7 @@ + */ + + #include ++#include + + #include "macroblock.hh" + #include "mpeg2syntaxcodes.h" +diff -Naur mjpegtools-1.8.0.orig/mpeg2enc/picturereader.cc mjpegtools-1.8.0/mpeg2enc/picturereader.cc +--- mjpegtools-1.8.0.orig/mpeg2enc/picturereader.cc 2008-12-10 10:57:56.000000000 -0600 ++++ mjpegtools-1.8.0/mpeg2enc/picturereader.cc 2008-12-10 11:03:04.000000000 -0600 +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include "simd.h" + #include "mpeg2encoder.hh" +diff -Naur mjpegtools-1.8.0.orig/mplex/inputstrm.cpp mjpegtools-1.8.0/mplex/inputstrm.cpp +--- mjpegtools-1.8.0.orig/mplex/inputstrm.cpp 2008-12-10 10:58:55.000000000 -0600 ++++ mjpegtools-1.8.0/mplex/inputstrm.cpp 2008-12-10 11:03:36.000000000 -0600 +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #include "mjpeg_types.h" + #include "inputstrm.hpp" +diff -Naur mjpegtools-1.8.0.orig/mplex/padstrm.cpp mjpegtools-1.8.0/mplex/padstrm.cpp +--- mjpegtools-1.8.0.orig/mplex/padstrm.cpp 2008-12-10 10:58:55.000000000 -0600 ++++ mjpegtools-1.8.0/mplex/padstrm.cpp 2008-12-10 11:04:06.000000000 -0600 +@@ -24,6 +24,7 @@ + #include "config.h" + #endif + ++#include + #include "padstrm.hpp" + + +diff -Naur mjpegtools-1.8.0.orig/mplex/multiplexor.cpp mjpegtools-1.8.0/mplex/multiplexor.cpp +--- mjpegtools-1.8.0.orig/mplex/multiplexor.cpp 2008-12-10 10:58:55.000000000 -0600 ++++ mjpegtools-1.8.0/mplex/multiplexor.cpp 2008-12-10 11:04:53.000000000 -0600 +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + #include + #include +diff -Naur mjpegtools-1.8.0.orig/mplex/main.cpp mjpegtools-1.8.0/mplex/main.cpp +--- mjpegtools-1.8.0.orig/mplex/main.cpp 2008-12-10 10:58:55.000000000 -0600 ++++ mjpegtools-1.8.0/mplex/main.cpp 2008-12-10 11:05:20.000000000 -0600 +@@ -31,6 +31,7 @@ + #include + #endif + #include ++#include + #include + #include + #ifndef _WIN32 +diff -Naur mjpegtools-1.8.0.orig/y4mdenoise/Set.hh mjpegtools-1.8.0/y4mdenoise/Set.hh +--- mjpegtools-1.8.0.orig/y4mdenoise/Set.hh 2008-12-10 11:00:49.000000000 -0600 ++++ mjpegtools-1.8.0/y4mdenoise/Set.hh 2008-12-10 11:06:30.000000000 -0600 +@@ -23,7 +23,7 @@ + // How we implement ourselves. + + public: +- typedef typename Imp::Allocator Allocator; ++ typedef typename Imp::Allocator_t Allocator; + // The type of allocator to use to allocate items in the set. + + Set (const PRED &a_rPred = PRED(), +diff -Naur mjpegtools-1.8.0.orig/y4mdenoise/SkipList.hh mjpegtools-1.8.0/y4mdenoise/SkipList.hh +--- mjpegtools-1.8.0.orig/y4mdenoise/SkipList.hh 2008-12-10 11:00:49.000000000 -0600 ++++ mjpegtools-1.8.0/y4mdenoise/SkipList.hh 2008-12-10 11:09:34.000000000 -0600 +@@ -57,19 +57,19 @@ + // Will give good sorting for up to e^10 items. + + public: +- typedef Allocator Allocator; ++ typedef Allocator Allocator_t; + // The type of node allocator to use. + +- static Allocator sm_oNodeAllocator; ++ static Allocator_t sm_oNodeAllocator; + // The default node allocator. + + SkipList (const PRED &a_rPred = PRED(), +- Allocator &a_rAlloc = sm_oNodeAllocator); ++ Allocator_t &a_rAlloc = sm_oNodeAllocator); + // Default constructor. Must be followed by Init(). + + SkipList (Status_t &a_reStatus, bool a_bAllowDuplicates, + uint32_t a_nRandSeed, const PRED &a_rPred = PRED(), +- Allocator &a_rAlloc = sm_oNodeAllocator); ++ Allocator_t &a_rAlloc = sm_oNodeAllocator); + // Constructor. Specify whether or not duplicates are allowed, + // and provide a random number seed. + +@@ -255,7 +255,7 @@ + + private: + +- Allocator &m_rNodeAllocator; ++ Allocator_t &m_rNodeAllocator; + // Where we get memory to allocate nodes. + + bool m_bAllowDuplicates; +@@ -337,7 +337,7 @@ + + // The default node allocator. Allocates 64K at a time. + template +-typename SkipList::Allocator ++typename SkipList::Allocator_t + SkipList::sm_oNodeAllocator (65536); + + +@@ -345,7 +345,7 @@ + // Default constructor. Must be followed by Init(). + template + SkipList::SkipList (const PRED &a_rPred, +- Allocator &a_rAlloc) ++ Allocator_t &a_rAlloc) + : m_rNodeAllocator (a_rAlloc), m_oPred (a_rPred) + { + // Set up some defaults. +@@ -371,7 +371,7 @@ + template + SkipList::SkipList (Status_t &a_reStatus, + bool a_bAllowDuplicates, uint32_t a_nRandSeed, +- const PRED &a_rPred, Allocator &a_rAlloc) ++ const PRED &a_rPred, Allocator_t &a_rAlloc) + : m_rNodeAllocator (a_rAlloc), m_oPred (a_rPred) + { + // Make sure they didn't start us off with an error. + diff --git a/abs/core/mjpegtools/mjpegtools-1.8.0-limits.h.patch b/abs/core/mjpegtools/mjpegtools-1.8.0-limits.h.patch new file mode 100644 index 0000000..41a59ca --- /dev/null +++ b/abs/core/mjpegtools/mjpegtools-1.8.0-limits.h.patch @@ -0,0 +1,30 @@ +--- mjpegtools-1.8.0.orig/mpeg2enc/macroblock.cc 2007-11-29 19:45:06 +0000 ++++ mjpegtools-1.8.0.orig/mpeg2enc/macroblock.cc 2007-11-29 19:45:33 +0000 +@@ -20,6 +20,7 @@ + */ + + #include ++#include + + #include "macroblock.hh" + #include "mpeg2syntaxcodes.h" +--- mjpegtools-1.8.0.orig/mpeg2enc/picturereader.cc 2007-11-29 19:45:06 +0000 ++++ mjpegtools-1.8.0.orig/mpeg2enc/picturereader.cc 2007-11-29 19:45:52 +0000 +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #include "simd.h" + #include "mpeg2encoder.hh" + +--- mjpegtools-1.8.0.orig/mplex/inputstrm.cpp 2007-11-29 19:45:06 +0000 ++++ mjpegtools-1.8.0.orig/mplex/inputstrm.cpp 2007-11-29 19:46:15 +0000 +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #include "mjpeg_types.h" + #include "inputstrm.hpp" diff --git a/abs/core/mkinitcpio/PKGBUILD b/abs/core/mkinitcpio/PKGBUILD index 2de6daf..6ba0f0f 100644 --- a/abs/core/mkinitcpio/PKGBUILD +++ b/abs/core/mkinitcpio/PKGBUILD @@ -1,27 +1,31 @@ -# $Id: PKGBUILD 1779 2008-05-19 16:02:05Z thomas $ +# $Id: PKGBUILD 24393 2009-01-15 23:25:29Z thomas $ # Maintainer: Thomas Baechler # Maintainer: Tobias Powalowski # Maintainer: Aaron Griffin pkgname=mkinitcpio -pkgver=0.5.19 -pkgrel=10 +pkgver=0.5.21 +pkgrel=34 pkgdesc="Advanced, modular initramfs image creation utility" arch=(i686 x86_64) url="http://www.archlinux.org/" license=('GPL') groups=('base') -depends=('klibc>=1.5-5' 'klibc-extras>=2.4' 'klibc-udev>=116-3' +depends=('klibc>=1.5.14-2' 'klibc-extras>=2.5' 'klibc-udev>=130' 'gen-init-cpio' 'klibc-module-init-tools' 'coreutils' - 'bash' 'klibc-kbd') -#makedepends=('asciidoc') -source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.bz2) + 'bash' 'klibc-kbd' 'findutils' 'sed' 'grep' + 'filesystem>=2009.01' 'udev' 'gzip' 'fbsplash') +source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.bz2 mkinitcpio.conf.diff) backup=(etc/mkinitcpio.conf) replaces=('mkinitrd' 'mkinitramfs') -md5sums=('e2398505a28bbdb985b72fc0c4a18216') +md5sums=('d6673e8966d7c1f224c767d79434ed6b' + '288d1555e8499cd791b693945ba9b3b1') build() { cd $startdir/src/${pkgname}-${pkgver} + patch -p0 < ../mkinitcpio.conf.diff ./install.sh $startdir/pkg + mkdir -p $pkgdir/usr/share + mv $pkgdir/usr/man $pkgdir/usr/share } diff --git a/abs/core/mkinitcpio/mkinitcpio.conf.diff b/abs/core/mkinitcpio/mkinitcpio.conf.diff new file mode 100644 index 0000000..1beff54 --- /dev/null +++ b/abs/core/mkinitcpio/mkinitcpio.conf.diff @@ -0,0 +1,8 @@ +--- mkinitcpio.conf.orig 2009-02-11 21:59:50.000000000 +0000 ++++ mkinitcpio.conf 2009-02-11 22:00:10.000000000 +0000 +@@ -55,4 +55,4 @@ + # + # This setup loads an lvm2 volume group on a usb device. + # HOOKS="base udev usb lvm2 filesystems" +-HOOKS="base udev autodetect pata scsi sata filesystems" ++HOOKS="base udev autodetect pata scsi sata filesystems fbsplash" diff --git a/abs/core/mpfr/PKGBUILD b/abs/core/mpfr/PKGBUILD new file mode 100644 index 0000000..ac2ab77 --- /dev/null +++ b/abs/core/mpfr/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 12992 2008-09-25 17:47:29Z jgc $ +# Maintainer: Jan de Groot +# Contributor: damir + +pkgname=mpfr +pkgver=2.3.2 +pkgrel=2 +pkgdesc="multiple-precision floating-point library" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +url="http://www.mpfr.org/" +depends=('gmp>=4.2.3' 'texinfo') +options=('!libtool') +install=mpfr.install +#source=(http://www.mpfr.org/mpfr-current/mpfr-${pkgver}.tar.gz) + +source=(http://modular.math.washington.edu/home/novocin/tars/mpfr-2.3.2.tar.gz) +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --enable-thread-safe --enable-shared || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + cd "${pkgdir}/usr/share/info" || return 1 + rm -f dir + gzip * || return 1 +} diff --git a/abs/core/mpfr/mpfr.install b/abs/core/mpfr/mpfr.install new file mode 100644 index 0000000..a95dec6 --- /dev/null +++ b/abs/core/mpfr/mpfr.install @@ -0,0 +1,18 @@ +info_dir=/usr/share/info +info_files=(mpfr.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} diff --git a/abs/core/mplayer-wrapper/PKGBUILD b/abs/core/mplayer-wrapper/PKGBUILD new file mode 100644 index 0000000..c64875d --- /dev/null +++ b/abs/core/mplayer-wrapper/PKGBUILD @@ -0,0 +1,21 @@ +pkgname=mplayer-wrapper +pkgver=1 +pkgrel=9 +pkgdesc="wrapper for mplayer and mplayer derivatives" +arch=('i686' 'x86_64') + +depends=('perl') + +source=(mplayer-wrapper.pl) + +license=('GPL2') + +install=mplayer-wrapper.install +build() { + LH_ROOT=/usr/LH + mkdir -p $startdir/pkg/$LH_ROOT/bin/ + + cd $startdir + # executables + install -m0755 -D *.pl $startdir/pkg/$LH_ROOT/bin/ +} diff --git a/abs/core/mplayer-wrapper/mplayer-wrapper.install b/abs/core/mplayer-wrapper/mplayer-wrapper.install new file mode 100644 index 0000000..18f1b75 --- /dev/null +++ b/abs/core/mplayer-wrapper/mplayer-wrapper.install @@ -0,0 +1,38 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { +/bin/true +} + +# arg 1: the new package version +post_install() { +/bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + /bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/mplayer-wrapper/mplayer-wrapper.pl b/abs/core/mplayer-wrapper/mplayer-wrapper.pl new file mode 100755 index 0000000..da0e838 --- /dev/null +++ b/abs/core/mplayer-wrapper/mplayer-wrapper.pl @@ -0,0 +1,212 @@ +#!/usr/bin/perl + +use Shell; +use strict; +use POSIX qw(floor); + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# including some original code and contributions from Nick C. +# and graysky. +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# PURPOSE: +# -------------------------- +# This is a wrapper script that tries to find the best parameters +# for calling an underlying video player. The outer layer determines +# the best playback parameters, while the inner layer picks the best +# player to call. + +# RATIONALE: +# -------------------------- +# Default video playback options are not optimal on all hardware or +# for all video types. In addition, common video players do not +# offer to bookmark video so that you can resume where you left off. +# Both of these problems can be addressed by this wrapper. + +# PARAMETERS: +# -------------------------- +# The same parameters you'd use for mplayer, some of which may be +# translated automatically for use with smplayer. + +# FILES: +# -------------------------- +# $mediafile, the file to play + +sub run () { + my $mediafile = @ARGV[$#ARGV]; + my $player = &pick_player(); + + # mplayer evaluates configuration options in the following order, with + # later-evaluated options overriding earlier-evaluated ones, both within + # a given configuration location and between them: + # 1) system-wide configuration/profiles, /etc/mplayer/mplayer.conf + # 2) user-specific configuration/profiles, ~/.mplayer/config + # 3) commandline configuration parameters + # 4) file-specific configuration, ~/.mplayer/[filename].conf + # 5) any nonstandard configuration file, included via "-include" parameter + # + # This script's dynamic configuration options fall in at 2.5 above, + # so commandline options, file-specific configuration options, + # or a nonstandard configuration file will override the options that + # the script creates, but system-wide and user-specific configuration + # will be overridden by the dynamic configuration options. + # + # This is sub-optimal, as the easiest way for a user to compensate for + # a misfiring configuration rule would be to override it in a configuration + # file. Instead, they will have to change the way they run this script. + + my $player_parameters = join(' ', + &dynamic_parameters($mediafile), + &translate_parameters($player,@ARGV[0..$#ARGV-1])); + &player($player,$player_parameters,$mediafile); +} + +&run(); + +# Translates any parameters into ones that will be compatible with the given player. +sub translate_parameters() { + my($player,@parameters)=@_; + + if ($player eq "smplayer") { + # Stupidly, smplayer uses a different set of command-line parameters than generic + # mplayer, so we need to translate mplayer-centric ones into the few that are + # available in smplayer-ese. + my %smplayer_parameter_translation_array = ( + "-fs" => "-fullscreen", + "-zoom" => " " + ); + + sub translate() { + my($flag)=@_; + return $smplayer_parameter_translation_array{$flag}; + } + + return map(&translate($_), @parameters); + } else { + # currently, all other players used by this wrapper work with mplayer parameters + return @parameters; + } +} + +# Returns an array of dynamic parameters based on the media type, +# the presence of special playback decoding hardware, and the +# general capability of the CPU. +sub dynamic_parameters () { + my($mediafile)=@_; + my @parameters = (); + my $codec=""; + my %vdpau_supported_modes=(); + + # See if the GPU and driver support vdpau for GPU-based accelerated decoding + my $command="vdpinfo |"; + # On supported hardware, vdpinfo produces relevant results that look something like this (see + # http://www.phoronix.com/forums/showthread.php?t=14493 for additional details, or run + # vdpinfo on vdpau-capable hardware yourself): + # + #MPEG1 0 2 4096 4096 + #MPEG2_SIMPLE 3 2 4096 4096 + #MPEG2_MAIN 3 2 4096 4096 + #H264_MAIN 41 4 4096 4096 + #H264_HIGH 41 4 4096 4096 + + my $grabbing_modes=0; + open(SHELL, $command); + while () { + chop; + if (m/Decoder Capabilities/gi) { + $grabbing_modes=1; + #print "*** MODES START NOW" + } elsif (m/Output Surface/gi) { + $grabbing_modes=0; + } elsif ($grabbing_modes) { + if (m/[A-Z]+[0-9]+/g) { + s/(_.*)//g; + #print "*** GRABBED MODE $_\n"; + $vdpau_supported_modes{$_} = 1; + } + } + } + close(SHELL); + + # figure out what codec the video uses + my $command="mplayer -identify -frames 0 \"$mediafile\" | grep ID_VIDEO_CODEC | cut -c 16- |"; + open(SHELL, $command); + while () { + chop; + $codec = $_; + #print "DEBUG: codec is $codec\n"; + } + close(SHELL); + + # We should use vdpau if it's available and helps with the codec we need to decode. + if ($codec eq "ffh264") { # h.264 + if ($vdpau_supported_modes{"H264"}) { + push(@parameters, "-vo vdpau"); + push(@parameters, "-vc ffh264vdpau"); + } + } elsif ($codec eq "ffmpeg2") { # MPEG2 + if ($vdpau_supported_modes{"MPEG2"}) { + push(@parameters, "-vo vdpau"); + push(@parameters, "-vc ffmpeg12vdpau"); + } + + # ??? although MPEG1 is rare, it seems as if it should work with -vc ffmpeg12vdpau as well + + # problems have been reported with WMV3 support + +# } elsif ($codec eq "ffwmv3") { # WMV3 +# if ($vdpau_supported) { +# push(@parameters, "-vo vdpau"); +# push(@parameters, "-vc ffwmv3vdpau"); +# } + # problems have been reported with WVC1 support + +# } elsif ($codec eq "ffvc1") { # WVC1 +# if ($vdpau_supported) { +# push(@parameters, "-vo vdpau"); +# push(@parameters, "-vc ffvc1vdpau"); +# } + + } else { + push(@parameters, "-vo xv,x11,"); + push(@parameters, "-vc ,"); + push(@parameters, "-vf pp=lb,"); # doesn't actually work with vdpau, but doesn't break anything + } + return(@parameters); +} + +# Find the best player for use on this system. The script prefers smplayer, +# which has built-in bookmarking, falling back to mplayer-resumer.pl, which +# implements bookmarking as an mplayer wrapper, if smplayer cannot be found. +# Finally, if no bookmarking players can be found, a barebones mplayer is used. +sub pick_player () { + #my @possible_players = ("smplayer", "mplayer-resumer.pl", "mplayer"); + my @possible_players = ("mplayer-resumer.pl", "mplayer"); + my $command; + my $candidate_player; + foreach (@possible_players) { + $candidate_player = $_; + $command = "which $candidate_player |"; + open(SHELL, $command); + if () { + #print "player $candidate_player : $_\n"; + return $candidate_player; + } + close(SHELL); + } +} + +# Calls player +sub player () { + my($player,$parameters,$mediafile)=@_; + my $command = "$player $parameters \"$mediafile\" 2>&1 |"; + + print "DEBUG: $0's player command is: *** $command ***\n"; + open(SHELL, $command); + while () { + print $_; + } + close(SHELL); +} diff --git a/abs/core/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch b/abs/core/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch deleted file mode 100644 index 79deb93..0000000 --- a/abs/core/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch +++ /dev/null @@ -1,286 +0,0 @@ -diff -Nur MPlayer-1.0rc1.orig/configure MPlayer-1.0rc1/configure ---- MPlayer-1.0rc1.orig/configure 2006-10-23 00:32:31.000000000 +0200 -+++ MPlayer-1.0rc1/configure 2006-11-11 14:02:38.000000000 +0100 -@@ -257,6 +257,7 @@ - --disable-ftp Disable ftp support [enabled] - --disable-vstream Disable tivo vstream client support [autodetect] - --disable-pthreads Disable Posix threads support [autodetect] -+ --disable-dbus-glib Disable D-BUS GLib interface (required for GNOME screensaver support) [autodetect] - --disable-ass Disable internal SSA/ASS subtitles support [autodetect] - --enable-rpath Enable runtime linker path for extra libs [disabled] - -@@ -1721,6 +1722,7 @@ - _musepack=auto - _vstream=auto - _pthreads=auto -+_dbus_glib=auto - _ass=auto - _rpath=no - _asmalign_pot=auto -@@ -2033,6 +2035,8 @@ - --disable-vstream) _vstream=no ;; - --enable-pthreads) _pthreads=yes ;; - --disable-pthreads) _pthreads=no ;; -+ --enable-dbus-glib) _dbus_glib=yes ;; -+ --disable-dbus-glib) _dbus_glib=no ;; - --enable-ass) _ass=yes ;; - --disable-ass) _ass=no ;; - --enable-rpath) _rpath=yes ;; -@@ -7029,6 +7033,19 @@ - fi - echores "$_gethostbyname2" - -+echocheck "D-BUS GLib interface" -+if test "$_dbus_glib" = auto && pkg-config --exists dbus-glib-1; then -+ _dbus_glib=yes -+ _inc_dbus_glib=`pkg-config --cflags dbus-glib-1 2>/dev/null` -+ _ld_dbus_glib=`pkg-config --libs dbus-glib-1 2>/dev/null` -+fi -+ -+if test "$_dbus_glib" = yes; then -+ _def_dbus_glib='#define HAVE_DBUS_GLIB 1' -+else -+ _def_dbus_glib='#undef HAVE_DBUS_GLIB' -+fi -+echores "$_dbus_glib" - - # --------------- GUI specific tests begin ------------------- - echocheck "GUI" -@@ -7521,6 +7538,10 @@ - VESA_LIB = $_ld_vesa - AA_LIB = $_ld_aa - CACA_LIB = $_ld_caca -+DBUS_GLIB_INC = $_inc_dbus_glib -+DBUS_GLIB_LIB = $_ld_dbus_glib -+DBUS_GLIB = $_dbus_glib -+ - - # audio output - OSS = $_ossaudio -@@ -8378,6 +8399,7 @@ - $_def_tga - $_def_toolame - $_def_twolame -+$_def_dbus_glib - - /* used by GUI: */ - $_def_xshape -diff -Nur MPlayer-1.0rc1.orig/help/help_mp-en.h MPlayer-1.0rc1/help/help_mp-en.h ---- MPlayer-1.0rc1.orig/help/help_mp-en.h 2006-10-23 00:32:29.000000000 +0200 -+++ MPlayer-1.0rc1/help/help_mp-en.h 2006-11-11 14:02:38.000000000 +0100 -@@ -679,6 +679,13 @@ - #define MSGTR_InsertingAfVolume "[Mixer] No hardware mixing, inserting volume filter.\n" - #define MSGTR_NoVolume "[Mixer] No volume control available.\n" - -+// gnome_screensaver.c -+#define MSGTR_OpenBusConnectionError "%s: Failed to open connection to bus: %s\n" -+#define MSGTR_RemoteMethodException "%s: Caught remote method exception %s: %s\n" -+#define MSGTR_GError "%s: Error: %s\n" -+#define MSGTR_GNOMEScreensaverEnabled "GNOME screensaver enabled\n" -+#define MSGTR_GNOMEScreensaverDisabled "GNOME screensaver disabled\n" -+ - // ====================== GUI messages/buttons ======================== - - #ifdef HAVE_NEW_GUI -diff -Nur MPlayer-1.0rc1.orig/libvo/gnome_screensaver.c MPlayer-1.0rc1/libvo/gnome_screensaver.c ---- MPlayer-1.0rc1.orig/libvo/gnome_screensaver.c 1970-01-01 01:00:00.000000000 +0100 -+++ MPlayer-1.0rc1/libvo/gnome_screensaver.c 2006-11-11 14:02:38.000000000 +0100 -@@ -0,0 +1,120 @@ -+/* -+ * gnome_screensaver.c v0.0.7 -+ * -+ * Enable/Disable the GNOME screensaver -+ * Supports GNOME screensaver API 2.14 and 2.15 -+ * -+ * Call gnome_screensaver_control(1) to enable and -+ * gnome_screensaver_control(0) to disable -+ * -+ */ -+ -+#include -+#include -+#include -+ -+#include "gnome_screensaver.h" -+#include "mp_msg.h" -+#include "help_mp.h" -+ -+#define GS_SERVICE "org.gnome.ScreenSaver" -+#define GS_PATH "/org/gnome/ScreenSaver" -+#define GS_INTERFACE "org.gnome.ScreenSaver" -+ -+#define GS_APPLICATION_NAME "MPlayer" -+#define GS_REASON_FOR_INHIBIT "Playing a movie" -+ -+static guint32 cookie; -+ -+void gnome_screensaver_control(int enable) -+{ -+ DBusGConnection *connection; -+ GError *error; -+ DBusGProxy *proxy; -+ gboolean ret; -+ char *funcname = "gnome_screensaver_control()"; -+ -+ g_type_init(); -+ -+ /* Get a connection to the session bus */ -+ error = NULL; -+ connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error); -+ if (connection == NULL) { -+ mp_msg(MSGT_VO, MSGL_ERR, -+ funcname, MSGTR_OpenBusConnectionError, error->message); -+ g_error_free(error); -+ return; -+ } -+ -+ /* Create a proxy object */ -+ proxy = dbus_g_proxy_new_for_name(connection, -+ GS_SERVICE, GS_PATH, GS_INTERFACE); -+ -+ /* Enable the screensaver */ -+ if (enable) { -+ /* First call the GNOME screensaver 2.15 API method */ -+ error = NULL; -+ ret = -+ dbus_g_proxy_call(proxy, "UnInhibit", &error, G_TYPE_UINT, -+ cookie, G_TYPE_INVALID); -+ -+ /* If this fails, try the GNOME screensaver 2.14 API */ -+ if (!ret && error->domain == DBUS_GERROR -+ && error->code == DBUS_GERROR_UNKNOWN_METHOD) { -+ mp_msg(MSGT_VO, MSGL_V, -+ "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n", -+ funcname); -+ g_error_free(error); -+ error = NULL; -+ ret = -+ dbus_g_proxy_call(proxy, "AllowActivation", &error, -+ G_TYPE_INVALID, G_TYPE_INVALID); -+ } -+ } -+ /* Disable the screensaver */ -+ else { -+ /* First call the GNOME screensaver 2.15 API method */ -+ error = NULL; -+ ret = -+ dbus_g_proxy_call(proxy, "Inhibit", &error, G_TYPE_STRING, -+ GS_APPLICATION_NAME, G_TYPE_STRING, -+ GS_REASON_FOR_INHIBIT, G_TYPE_INVALID, -+ G_TYPE_UINT, cookie, G_TYPE_INVALID); -+ -+ /* If this fails, try the GNOME screensaver 2.14 API */ -+ if (!ret && error->domain == DBUS_GERROR -+ && error->code == DBUS_GERROR_UNKNOWN_METHOD) { -+ mp_msg(MSGT_VO, MSGL_V, -+ "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n", -+ funcname); -+ g_error_free(error); -+ error = NULL; -+ ret = -+ dbus_g_proxy_call(proxy, "InhibitActivation", &error, -+ G_TYPE_STRING, GS_REASON_FOR_INHIBIT, -+ G_TYPE_INVALID, G_TYPE_INVALID); -+ } -+ } -+ -+ if (!ret) { -+ /* Check if it's a remote exception or a regular GError */ -+ if (error->domain == DBUS_GERROR -+ && error->code == DBUS_GERROR_REMOTE_EXCEPTION) { -+ mp_msg(MSGT_VO, MSGL_ERR, -+ funcname, MSGTR_RemoteMethodException, -+ dbus_g_error_get_name(error), error->message); -+ } -+ else { -+ mp_msg(MSGT_VO, MSGL_ERR, -+ funcname, MSGTR_GError, error->message); -+ } -+ g_error_free(error); -+ } -+ else { -+ mp_msg(MSGT_VO, MSGL_INFO, -+ enable ? MSGTR_GNOMEScreensaverEnabled : -+ MSGTR_GNOMEScreensaverDisabled); -+ } -+ -+ g_object_unref(proxy); -+} -diff -Nur MPlayer-1.0rc1.orig/libvo/gnome_screensaver.h MPlayer-1.0rc1/libvo/gnome_screensaver.h ---- MPlayer-1.0rc1.orig/libvo/gnome_screensaver.h 1970-01-01 01:00:00.000000000 +0100 -+++ MPlayer-1.0rc1/libvo/gnome_screensaver.h 2006-11-11 14:02:38.000000000 +0100 -@@ -0,0 +1,6 @@ -+#ifndef _GNOME_SCREENSAVER_H -+#define _GNOME_SCREENSAVER_H -+ -+extern void gnome_screensaver_control(int enable); -+ -+#endif /* !_GNOME_SCREENSAVER_H */ -diff -Nur MPlayer-1.0rc1.orig/libvo/Makefile MPlayer-1.0rc1/libvo/Makefile ---- MPlayer-1.0rc1.orig/libvo/Makefile 2006-10-23 00:32:26.000000000 +0200 -+++ MPlayer-1.0rc1/libvo/Makefile 2006-11-11 14:02:38.000000000 +0100 -@@ -39,6 +39,11 @@ - SRCS += vosub_vidix.c - endif - -+ifeq ($(DBUS_GLIB),yes) -+SRCS += gnome_screensaver.c -+LIBAV_INC += $(DBUS_GLIB_INC) -+endif -+ - INCLUDE = -I. -I.. -I../osdep $(LIBAV_INC) - CFLAGS = $(INCLUDE) $(OPTFLAGS) -DMPG12PLAY - -diff -Nur MPlayer-1.0rc1.orig/libvo/x11_common.c MPlayer-1.0rc1/libvo/x11_common.c ---- MPlayer-1.0rc1.orig/libvo/x11_common.c 2006-10-23 00:32:26.000000000 +0200 -+++ MPlayer-1.0rc1/libvo/x11_common.c 2006-11-11 14:02:38.000000000 +0100 -@@ -58,6 +58,10 @@ - #include "mplayer.h" - #endif - -+#ifdef HAVE_DBUS_GLIB -+#include "gnome_screensaver.h" -+#endif -+ - #define WIN_LAYER_ONBOTTOM 2 - #define WIN_LAYER_NORMAL 4 - #define WIN_LAYER_ONTOP 6 -@@ -1701,8 +1705,12 @@ - timeout_save = 0; - } - -- if (stop_xscreensaver) -+ if (stop_xscreensaver) { - xscreensaver_enable(); -+#ifdef HAVE_DBUS_GLIB -+ gnome_screensaver_control(1); -+#endif -+ } - if (kdescreensaver_was_running && stop_xscreensaver) - { - system -@@ -1747,8 +1755,12 @@ - allow_exp); - } - // turning off screensaver -- if (stop_xscreensaver) -+ if (stop_xscreensaver) { - xscreensaver_disable(mDisplay); -+#ifdef HAVE_DBUS_GLIB -+ gnome_screensaver_control(0); -+#endif -+ } - if (stop_xscreensaver && !kdescreensaver_was_running) - { - kdescreensaver_was_running = -diff -Nur MPlayer-1.0rc1.orig/Makefile MPlayer-1.0rc1/Makefile ---- MPlayer-1.0rc1.orig/Makefile 2006-10-23 00:32:31.000000000 +0200 -+++ MPlayer-1.0rc1/Makefile 2006-11-11 14:02:38.000000000 +0100 -@@ -75,6 +75,7 @@ - $(DIRECTFB_LIB) \ - $(CACA_LIB) \ - $(VESA_LIB) \ -+ $(DBUS_GLIB_LIB) \ - - ifeq ($(VIDIX),yes) - VO_LIBS += vidix/libvidix.a diff --git a/abs/core/mplayer/PKGBUILD b/abs/core/mplayer/PKGBUILD index f69a21a..0b670c1 100644 --- a/abs/core/mplayer/PKGBUILD +++ b/abs/core/mplayer/PKGBUILD @@ -1,67 +1,63 @@ -# $Id: PKGBUILD 3632 2008-06-26 11:48:49Z paul $ -# Maintainer: Thomas Bächler pkgname=mplayer -pkgver=1.0rc2 -pkgrel=5 -pkgdesc="A movie player for linux" -arch=(i686 x86_64) +pkgver=29438 +pkgrel=1 +pkgdesc="Famous multimedia player, dev. version, without its GUI" +arch=('i686' 'x86_64') +url="http://www.mplayerhq.hu/" +license=('GPL') depends=('libxxf86dga' 'libxv' 'libmad' 'giflib' 'cdparanoia' 'gtk2' - 'sdl' 'lame' 'libtheora' 'xvidcore' - 'libgl' 'smbclient' 'aalib' 'jack-audio-connection-kit' - 'x264>=20080625' 'faac' 'lirc-utils' 'ttf-dejavu') + 'sdl' 'lame' 'libtheora' 'xvidcore' 'zlib' 'libmng' 'libxss' + 'libgl' 'smbclient' 'aalib' 'x264>=20090108' 'faac' 'lirc-utils' + 'ttf-dejavu' 'fribidi' 'libmng' 'libxfont' 'libjpeg') license=('GPL') -url="http://www.mplayerhq.hu/" -makedepends=('libcaca' 'unzip' 'live-media' 'libdca' 'mesa') -backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf') -source=(http://www.mplayerhq.hu/MPlayer/releases/MPlayer-${pkgver}.tar.bz2 - http://www.mplayerhq.hu/MPlayer/skins/Blue-1.7.tar.bz2 - http://www.mplayerhq.hu/MPlayer/patches/demux_audio_fix_20080129.diff - http://www.mplayerhq.hu/MPlayer/patches/demux_mov_fix_20080129.diff - http://www.mplayerhq.hu/MPlayer/patches/url_fix_20080120.diff - http://www.mplayerhq.hu/MPlayer/patches/stream_cddb_fix_20080120.diff - ivtv_2.6.24.patch) -md5sums=('7e27e535c2d267637df34898f1b91707' - 'e4e2020d11b681aac898103b3ba723c4' - '320af7daa1b248ee8e8c15d34d7923e3' - 'ce999929155f509a3e6bee41d9d613ed' - '6a2c124586e1e6c44ae4ca1b4be9b6e4' - 'c7d1bcdd61fcceb7598d61fe2213c587' - '1ef35068587f6b6dbc99342567895236') +makedepends=('libcaca' 'unzip' 'live-media' 'libdca' 'subversion' 'nvidia-utils') -build() { - cd $startdir/src/MPlayer-${pkgver} +conflicts=('mplayer-nogui-svn') +provides=('mplayer') +source=(http://knoppmyth.net/repo/source/mplayer-export-snapshot.tar.bz2 http://www.mplayerhq.hu/MPlayer/skins/Blue-1.7.tar.bz2) +md5sums=() - # Custom CFLAGS break the mplayer build - unset CFLAGS +_svnmod="mplayer" +_svntrunk=svn://svn.mplayerhq.hu/mplayer/trunk/ - # Add support for gnome screensaver - #patch -p1 -i ../MPlayer-1.0rc1-gnome-screensaver.patch || return 1 +build() { - # Workaround for changed ivtv interface since it went mainline in 2.6.24 - patch -p1 -i ../ivtv_2.6.24.patch || return 1 - - # Fix security issues - for p in demux_audio_fix_20080129.diff demux_mov_fix_20080129.diff url_fix_20080120.diff stream_cddb_fix_20080120.diff; do - patch -p0 -i ../${p} - done + cd $srcdir +# if [ -d $_svnmod/.svn ]; then +# cd $_svnmod +# svn up -r $pkgver +# else +# svn co $_svntrunk --config-dir . -r $pkgver $_svnmod +# fi + # msg "SVN checkout done or server timeout" - cd $startdir/src/MPlayer-${pkgver} + #cp -r $_svnmod $_svnmod-build + cp -r mplayer-export-2009-04-03/ $_svnmod-build + cd $_svnmod-build + msg "Building the package..." + CFLAGS="$CFLAGS -fomit-frame-pointer" + # Custom CFLAGS break the mplayer build +# unset CFLAGS ./configure --prefix=/usr --enable-gui --disable-arts --enable-x11 \ --enable-runtime-cpudetection --confdir=/etc/mplayer --disable-nas \ - --enable-gl --enable-tv-v4l1 --enable-tv-v4l2 --enable-largefiles \ + --enable-tv-v4l1 --enable-tv-v4l2 --enable-largefiles \ --disable-liblzo --disable-speex --disable-openal \ - --disable-fribidi --disable-libdv --disable-musepack \ + --enable-fribidi --disable-libdv --disable-musepack \ --language=all --disable-dvdnav --disable-esd --disable-mga \ - --disable-libamr_nb \ - --with-extraincdir=/usr/lib/live-media + --disable-libamr_nb --enable-lirc --disable-jack \ + --enable-freetype --enable-vdpau + make || return 1 + make DESTDIR=$pkgdir install || return 1 - [ "$CARCH" = "i686" ] && sed 's|-march=i486|-march=i686|g' -i config.mak + install -m0644 etc/{codecs.conf,input.conf,example.conf} $pkgdir/etc/mplayer + install -d $pkgdir/usr/share/mplayer/ + ln -s /usr/share/fonts/TTF/DejaVuSans.ttf $pkgdir/usr/share/mplayer/subfont.ttf + rm -rf ${pkgdir}/usr/share/mplayer/font + mv ${srcdir}/Blue ${pkgdir}/usr/share/mplayer/skins/default + mkdir -p ${pkgdir}/usr/share/doc/mplayer + cp ${srcdir}/$_svnmod-build/DOCS/tech/* ${pkgdir}/usr/share/doc/mplayer + msg "Cleaning build files..." + rm -rf $srcdir/$_svnmod-build - make || return 1 - make -j1 DESTDIR=${startdir}/pkg install - cp etc/{codecs.conf,input.conf,example.conf} ${startdir}/pkg/etc/mplayer/ - ln -s /usr/share/fonts/TTF/DejaVuSans.ttf ${startdir}/pkg/usr/share/mplayer/subfont.ttf - rm -rf ${startdir}/pkg/usr/share/mplayer/font - mv ${startdir}/src/Blue ${startdir}/pkg/usr/share/mplayer/skins/default } diff --git a/abs/core/mplayer/demux_audio_fix_20080129.diff b/abs/core/mplayer/demux_audio_fix_20080129.diff deleted file mode 100644 index 1b18b6e..0000000 --- a/abs/core/mplayer/demux_audio_fix_20080129.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- libmpdemux/demux_audio.c (revision 24724) -+++ libmpdemux/demux_audio.c (working copy) -@@ -229,6 +229,8 @@ - ptr += 4; - - comment = ptr; -+ if (&comment[length] < comments || &comment[length] >= &comments[blk_len]) -+ return; - c = comment[length]; - comment[length] = 0; - diff --git a/abs/core/mplayer/demux_mov_fix_20080129.diff b/abs/core/mplayer/demux_mov_fix_20080129.diff deleted file mode 100644 index d83477b..0000000 --- a/abs/core/mplayer/demux_mov_fix_20080129.diff +++ /dev/null @@ -1,45 +0,0 @@ ---- libmpdemux/demux_mov.c (revision 24724) -+++ libmpdemux/demux_mov.c (working copy) -@@ -173,11 +173,12 @@ - i=trak->chunkmap_size; - while(i>0){ - --i; -- for(j=trak->chunkmap[i].first;jchunkmap[i].first, 0); -+ for(;jchunks[j].desc=trak->chunkmap[i].sdid; - trak->chunks[j].size=trak->chunkmap[i].spc; - } -- last=trak->chunkmap[i].first; -+ last=FFMIN(trak->chunkmap[i].first, trak->chunks_size); - } - - #if 0 -@@ -235,6 +236,8 @@ - s=0; - for(j=0;jdurmap_size;j++){ - for(i=0;idurmap[j].num;i++){ -+ if (s >= trak->samples_size) -+ break; - trak->samples[s].pts=pts; - ++s; - pts+=trak->durmap[j].dur; -@@ -246,6 +249,8 @@ - for(j=0;jchunks_size;j++){ - off_t pos=trak->chunks[j].pos; - for(i=0;ichunks[j].size;i++){ -+ if (s >= trak->samples_size) -+ break; - trak->samples[s].pos=pos; - mp_msg(MSGT_DEMUX, MSGL_DBG3, "Sample %5d: pts=%8d off=0x%08X size=%d\n",s, - trak->samples[s].pts, -@@ -1568,8 +1573,7 @@ - if( udta_len>udta_size) - udta_len=udta_size; - { -- char dump[udta_len-4]; -- stream_read(demuxer->stream, (char *)&dump, udta_len-4-4); -+ stream_skip(demuxer->stream, udta_len-4-4); - udta_size -= udta_len; - } - } diff --git a/abs/core/mplayer/ivtv_2.6.24.patch b/abs/core/mplayer/ivtv_2.6.24.patch deleted file mode 100644 index 4e0a3fe..0000000 --- a/abs/core/mplayer/ivtv_2.6.24.patch +++ /dev/null @@ -1,33 +0,0 @@ -Patch to account for linux-2.6.24.x including ivtv, but MPlayer won't -build against it. See this link for more information and the origin -of the patch: -http://archives.free.net.ph/message/20080201.201454.1047775e.en.html -Thanks to Robby Workman for pointing me to this one. - -diff -Nur MPlayer-1.0rc2.orig/configure MPlayer-1.0rc2/configure ---- MPlayer-1.0rc2.orig/configure 2007-10-07 21:49:33.000000000 +0200 -+++ MPlayer-1.0rc2/configure 2008-03-10 10:27:29.000000000 +0100 -@@ -4920,7 +4920,7 @@ - echores "$_dxr3" - - --echocheck "IVTV TV-Out" -+echocheck "IVTV TV-Out (pre linux-2.6.24)" - if test "$_ivtv" = auto ; then - cat > $TMPC << EOF - #include -@@ -4928,7 +4928,13 @@ - #include - #include - #include --int main(void) { return 0; } -+#include -+int main(void) { -+struct ivtv_cfg_stop_decode sd; -+struct ivtv_cfg_start_decode sd1; -+ioctl (0, IVTV_IOC_START_DECODE, &sd1); -+ioctl (0, IVTV_IOC_STOP_DECODE, &sd); -+return 0; } - EOF - _ivtv=no - cc_check && _ivtv=yes diff --git a/abs/core/mplayer/stream_cddb_fix_20080120.diff b/abs/core/mplayer/stream_cddb_fix_20080120.diff deleted file mode 100644 index 45f7226..0000000 --- a/abs/core/mplayer/stream_cddb_fix_20080120.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- stream/stream_cddb.c (revision 24724) -+++ stream/stream_cddb.c (working copy) -@@ -53,6 +53,7 @@ - #include "version.h" - #include "stream.h" - #include "network.h" -+#include "libavutil/intreadwrite.h" - - #define DEFAULT_FREEDB_SERVER "freedb.freedb.org" - #define DEFAULT_CACHE_DIR "/.cddb/" -@@ -453,8 +454,9 @@ - } else { - len = ptr2-ptr+1; - } -+ len = FFMIN(sizeof(album_title) - 1, len); - strncpy(album_title, ptr, len); -- album_title[len-2]='\0'; -+ album_title[len]='\0'; - } - mp_msg(MSGT_DEMUX, MSGL_STATUS, MSGTR_MPDEMUX_CDDB_ParseOKFoundAlbumTitle, album_title); - return 0; -@@ -490,8 +492,9 @@ - } else { - len = ptr2-ptr+1; - } -+ len = FFMIN(sizeof(album_title) - 1, len); - strncpy(album_title, ptr, len); -- album_title[len-2]='\0'; -+ album_title[len]='\0'; - } - mp_msg(MSGT_DEMUX, MSGL_STATUS, MSGTR_MPDEMUX_CDDB_ParseOKFoundAlbumTitle, album_title); - return cddb_request_titles(cddb_data); diff --git a/abs/core/mplayer/url_fix_20080120.diff b/abs/core/mplayer/url_fix_20080120.diff deleted file mode 100644 index a073589..0000000 --- a/abs/core/mplayer/url_fix_20080120.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- stream/url.c (revision 24724) -+++ stream/url.c (working copy) -@@ -328,6 +328,7 @@ - } - } - -+ tmp = NULL; - while(i < len) { - // look for the next char that must be kept - for (j=i;j + pkgname=mysql-clients -pkgver=5.0.60 -pkgrel=1 +pkgver=5.0.75 +pkgrel=2 pkgdesc="MySQL client tools" arch=(i686 x86_64) depends=("libmysqlclient>=${pkgver}" 'gcc-libs' 'readline') @@ -33,4 +34,4 @@ build() { make || return 1 make DESTDIR=${startdir}/pkg install } -md5sums=('2709a53f3da6f1cd868825ed2ea80431') +md5sums=('a234f0a60a7f8c290d9875cba3a2c5a2') diff --git a/abs/core/mysql-python/PKGBUILD b/abs/core/mysql-python/PKGBUILD index 45714c1..1e3dea0 100644 --- a/abs/core/mysql-python/PKGBUILD +++ b/abs/core/mysql-python/PKGBUILD @@ -1,17 +1,19 @@ -# $Id: PKGBUILD 8941 2008-08-17 01:11:04Z eric $ +# $Id: PKGBUILD 16696 2008-10-22 02:26:55Z allan $ # Maintainer: damir pkgname=mysql-python pkgver=1.2.2 -pkgrel=1 +pkgrel=2 pkgdesc="MySQL support for Python" arch=("i686" "x86_64") url="http://sourceforge.net/projects/mysql-python" -depends=('python>=2.5' 'libmysqlclient') -makedepends=('mysql>=5.0.23' 'pyrex>=0.9.8.4' 'setuptools>=0.6c8') -source=("http://heanet.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-${pkgver}.tar.gz") +license=('GPL2') +depends=('python>=2.6' 'libmysqlclient') +makedepends=('mysql>=5.0.23' 'setuptools') +source=("http://downloads.sourceforge.net/sourceforge/mysql-python/MySQL-python-${pkgver}.tar.gz") md5sums=('532268f02870bea18c1d465e88afff30') + build() { cd ${startdir}/src/MySQL-python-${pkgver} yes | python setup.py install --root=${startdir}/pkg diff --git a/abs/core/mysql/PKGBUILD b/abs/core/mysql/PKGBUILD index 88460bc..11df8fb 100644 --- a/abs/core/mysql/PKGBUILD +++ b/abs/core/mysql/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 2465 2008-06-02 11:38:50Z alexander $ +# $Id: PKGBUILD 23595 2009-01-11 13:14:19Z douglas $ # Maintainer: Alexander Baldeck # Contributor: judd pkgname=mysql -pkgver=5.0.60 -pkgrel=1 +pkgver=5.0.75 +pkgrel=3 pkgdesc="A fast SQL database server" arch=(i686 x86_64) backup=(etc/my.cnf etc/conf.d/mysqld) @@ -11,8 +11,9 @@ depends=("mysql-clients>=${pkgver}" 'tcp_wrappers') makedepends=('libtool') url=('http://www.mysql.com/') options=('!libtool') +optdepends=('perl-dbi' 'perl-dbd-mysql') license=('GPL') -source=(http://mirror.provenscaling.com/mysql/enterprise/source/5.0/mysql-${pkgver}.tar.gz +source=(ftp://ftp.pucpr.br/mysql/Downloads/MySQL-5.0/mysql-${pkgver}.tar.gz mysql-no-clients.patch mysqld my.cnf @@ -27,7 +28,7 @@ build() { --with-innodb --enable-local-infile --with-openssl \ --with-charset=latin1 --with-collation=latin1_general_ci \ --with-extra-charsets=complex --enable-thread-safe-client \ - --with-libwrap --with-berkeley-db + --with-libwrap --with-berkeley-db --with-embedded-server # fixes sed -i -e 's/^.*HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE.*$/#define\ HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE/g' include/config.h || return 1 @@ -47,8 +48,3 @@ build() { install -D -m644 ../mysqld.conf.d ${startdir}/pkg/etc/conf.d/mysqld rm -f ${startdir}/pkg/usr/bin/mysql_config } -md5sums=('2709a53f3da6f1cd868825ed2ea80431' - 'e892aac36cbeb57f0e003ec0936afb3b' - '64d79a5a34043c1de949d734b720c217' - '0ee035590ffc61d32de994f461fd2bd2' - '4a9077fc95ec6db1d5420e0cdc74d31c') diff --git a/abs/core/mysql/__changelog b/abs/core/mysql/__changelog new file mode 100644 index 0000000..4fa7078 --- /dev/null +++ b/abs/core/mysql/__changelog @@ -0,0 +1,8 @@ +my.cnf +-enable networking +-datadir /data/srv/mysql + +mysqld + -redirect output to /dev/null + --skip-name-resolve + replace mkdir with mkdir -p diff --git a/abs/core/mysql/my.cnf b/abs/core/mysql/my.cnf index 927b9c8..7202fcd 100644 --- a/abs/core/mysql/my.cnf +++ b/abs/core/mysql/my.cnf @@ -20,7 +20,7 @@ socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock -datadir = /var/lib/mysql +datadir = /data/srv/mysql skip-locking key_buffer = 16M max_allowed_packet = 1M @@ -35,7 +35,7 @@ myisam_sort_buffer_size = 8M # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # -skip-networking +#skip-networking # Replication Master Server (default) # binary logging is required for replication diff --git a/abs/core/mysql/mysqld b/abs/core/mysql/mysqld index 0fcecf7..5857df8 100755 --- a/abs/core/mysql/mysqld +++ b/abs/core/mysql/mysqld @@ -22,21 +22,16 @@ if [ ! `egrep '^mysql:' /etc/passwd` ]; then fi if [ ! -d $MYSQLD_ROOT ]; then - mkdir $MYSQLD_ROOT - /usr/bin/mysql_install_db --datadir=$MYSQLD_ROOT --user=mysql + mkdir -p $MYSQLD_ROOT + /usr/bin/mysql_install_db --datadir=$MYSQLD_ROOT --user=mysql 2>/dev/null 1>/dev/null chown -R mysql.mysql $MYSQLD_ROOT fi -if [ ! -e /var/log/mysqld.log ]; then - touch /var/log/mysqld.log - chown mysql /var/log/mysqld.log -fi - case "$1" in start) stat_busy "Starting MySQL" if [ -z "$PID" ]; then - /usr/bin/mysqld_safe --datadir=$MYSQLD_ROOT &>/dev/null & + /usr/bin/mysqld_safe --skip-name-resolve --datadir=$MYSQLD_ROOT >/dev/null 2>/dev/null & if [ $? -gt 0 ]; then stat_fail exit 1 diff --git a/abs/core/mysql/mysqld.conf.d b/abs/core/mysql/mysqld.conf.d index 04752b1..10b7098 100644 --- a/abs/core/mysql/mysqld.conf.d +++ b/abs/core/mysql/mysqld.conf.d @@ -1 +1 @@ -MYSQLD_ROOT="/var/lib/mysql" +MYSQLD_ROOT="/data/srv/mysql" diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD new file mode 100644 index 0000000..bd58a19 --- /dev/null +++ b/abs/core/mythinstall/PKGBUILD @@ -0,0 +1,49 @@ +# Maintainer: Jams +pkgname=mythinstall +pkgver=1 +pkgrel=13 +pkgdesc="LinHES installer/systemconfig GUI." +arch=i686 +depends=() +makedepends=(mythtv) + +source=(autocard.cpp + autocard.h + infrared.cpp + infrared.h + installationtype.cpp + installationtype.h + installdialog.cpp + installdialog.h + installsettings.cpp + installsettings.h + main.cpp + misc_settings.cpp + misc_settings.h + mv_common.h + mythinstall.pro + password_manage.cpp + password_manage.h + settemplate.cpp + settemplate.h + statusbox.cpp + statusbox.h + xorgsettings.cpp + xorgsettings.h) + +build() { + +# It is assumed that you have built the mythtv package in the same +# LinHES-PKGBUILD area. + + cd ${srcdir} + qmake mythinstall.pro || return 1 + make || return 1 + MVBINDIR=$startdir/pkg/usr/MythVantage/bin + mkdir -p $MVBINDIR + install -m 0755 mythinstall $MVBINDIR/MythVantage + cd $MVBINDIR + ln -s MythVantage mythvantage + ln -s MythVantage mythinstall + cd - +} diff --git a/abs/core/mythinstall/autocard.cpp b/abs/core/mythinstall/autocard.cpp new file mode 100755 index 0000000..585fba7 --- /dev/null +++ b/abs/core/mythinstall/autocard.cpp @@ -0,0 +1,186 @@ +#include "libmyth/mythcontext.h" +#include "libmyth/mythdbcon.h" +#include +#include +#include +#include +#include +#include "autocard.h" +#include +#include + +AutoCard::AutoCard(void) : + listbox(new ListBoxSetting(this)) +{ + listbox->setLabel(tr("Cards")); + addChild(listbox); +} +void AutoCard::popup_menu(void) +{ + QString name = listbox->getValue(); +// cout << "in popup" << name << endl; + QString uniqid = name.section(' ', -1); + QString description = name.section('*',-3,-3); + description = description.section('.',1); + description = description.stripWhiteSpace(); +// cout << uniqid << endl; +// cout << "descriptn" << endl; +// cout << description << endl; + if (name.isEmpty() || name == "Default") + return; + + QString message = tr("Cardme:") + + QString("\n'%1'?").arg(name); + + DialogCode value = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), + "", message, + tr("Add Card"), + tr("Do not Add"), kDialogCodeButton0); + + if ( value == kDialogCodeButton1) + { + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("update autocard set devicestatus ='unused' where uniqid=:UNIQID and description=:DESCRIPTION;"); + query.bindValue(":UNIQID",uniqid ); + query.bindValue(":DESCRIPTION",description ); + if (!query.exec()) + MythContext::DBError("Autocard::popup", query); + + int lastIndex = listbox->getValueIndex(name); + lastValue = ""; + load(); + listbox->setValue(lastIndex); + } + else if (value == kDialogCodeButton0) + { + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("update autocard set devicestatus ='will-add' where uniqid=:UNIQID and description=:DESCRIPTION;"); + query.bindValue(":UNIQID",uniqid ); + query.bindValue(":DESCRIPTION",description ); + + + if (!query.exec()) + MythContext::DBError("Autocard::popup", query); + + int lastIndex = listbox->getValueIndex(name); + lastValue = ""; + load(); + listbox->setValue(lastIndex); + + + + + } + + + listbox->setFocus(); +} + + + +QStringList AutoCard::GetNames(void) +{ + QStringList names; + QString device; + QString description; + QString displayname ; + QString status ; + QString uniqid; + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("SELECT dev,description,uniqid,devicestatus FROM autocard order by uniqid"); + if (query.exec() && query.isActive() && query.size() > 0) + { + while (query.next()) + { + device=query.value(0).toString(); + description=query.value(1).toString(); + uniqid=query.value(2).toString(); + status=query.value(3).toString(); + //displayname=device; + displayname=". "; + displayname.append(description); + displayname.append(" * "); + displayname.append(status); + displayname.append(" * "); + + displayname.append(uniqid); + names << displayname ; + } + + return names; + } +} + +void AutoCard::open(QString name) +{ + lastValue = name; + bool created = false; + cout << name << endl; + if (name == "Mark all cards for addition") + { + cout <<"updating all cards" << endl; + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("update autocard set devicestatus='will-add' where devicestatus='unused' order by uniqid"); + query.exec(); + } + else if ( name == "Perform actions" ) + { + // write udev rules and reload udev + + system ("sudo autocard.py -w -i"); + system ("sudo autocard.py -r"); + + } + else if ( name == "Exit" ) + { + // write udev rules and reload udev + exit(0); + } + else + { + popup_menu(); +// bool ok = MythPopupBox::showGetTextPopup(gContext->GetMainWindow(), +// tr("Create New Playback Group"), +// tr("Enter group name or press SELECT to enter text via the " +// "On Screen Keyboard"), name); + + + } + +}; + +void AutoCard::load(void) +{ + listbox->clearSelections(); + + + QStringList names = AutoCard::GetNames(); + while (!names.isEmpty()) + { + listbox->addSelection(names.front()); + names.pop_front(); + } + listbox->addSelection("Mark all cards for addition"); + listbox->addSelection("Perform actions"); + listbox->addSelection("Exit"); + listbox->setValue(lastValue); + +} + + +int AutoCard::exec(void) +{ + while (ConfigurationDialog::exec() == QDialog::Accepted) + open(listbox->getValue()); + + return QDialog::Rejected; +} + + +MythDialog* AutoCard::dialogWidget(MythMainWindow* parent, + const char* widgetName) +{ + dialog = ConfigurationDialog::dialogWidget(parent, widgetName); + connect(dialog, SIGNAL(menuButtonPressed()), this, SLOT(popup_menu())); + return dialog; +} diff --git a/abs/core/mythinstall/autocard.h b/abs/core/mythinstall/autocard.h new file mode 100755 index 0000000..623fcc0 --- /dev/null +++ b/abs/core/mythinstall/autocard.h @@ -0,0 +1,30 @@ +#ifndef AUTOCARD_H +#define AUTOCARD_H + +#include "qstringlist.h" +#include "libmyth/settings.h" +#include "libmyth/mythwidgets.h" + +class MPUBLIC AutoCard : public QObject, public ConfigurationDialog +{ + Q_OBJECT + + public: + AutoCard(); + virtual int exec(void); + virtual void load(void); + virtual void save(void) { }; + virtual void save(QString) { }; + virtual MythDialog* dialogWidget(MythMainWindow* parent, + const char* widgetName=0); + static QStringList GetNames(void); + protected slots: + void open(QString name); + void popup_menu(void); + + protected: + ListBoxSetting *listbox; + QString lastValue; +}; + +#endif diff --git a/abs/core/mythinstall/infrared.cpp b/abs/core/mythinstall/infrared.cpp new file mode 100755 index 0000000..2f56ae5 --- /dev/null +++ b/abs/core/mythinstall/infrared.cpp @@ -0,0 +1,368 @@ +#include +#include +#include +#include +#include +#include +#include +#include "misc_settings.h" +#include "infrared.h" +#include "mv_common.h" +#include "uitypes.h" + +extern HostParms hostparm; + + +HostRemoteTypeIR::HostRemoteTypeIR(): + HostImageSelect("HostRemoteType") { + setLabel(QObject::tr("Remote")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/remotes"); + QDir remotes(dirtxt); + remotes.setFilter(QDir::Dirs); + remotes.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *fil = remotes.entryInfoList(QDir::Dirs); + if (!fil) + return; + QFileInfoListIterator it( *fil ); + QFileInfo *remote; + for( ; it.current() != 0 ; ++it ) + { + remote = it.current(); + QFileInfo preview(remote->absFilePath() + "/preview.jpg"); + if (remote->fileName()[0] == '.' || !preview.exists() ) + { + VERBOSE(VB_IMPORTANT, remote->absFilePath() + "Can't find preivew image, doesn't look like a remote\n"); + continue; + } + QImage* previewImage = new QImage(preview.absFilePath()); + addImageSelection(remote->fileName(), previewImage); + } +}; + +static HostComboBox *HostReceiverType() +{ + HostComboBox *gc = new HostComboBox("HostReceiverType"); + gc->setLabel(QObject::tr("Receiver")); + gc->addSelection("Default"); + gc->addSelection("tinker"); + gc->addSelection("Serial"); + gc->addSelection("imon"); + gc->addSelection("Hauppauge"); + gc->addSelection("tinker"); + gc->addSelection("CommandIR"); + gc->addSelection("iguanaIR-usb"); + gc->addSelection("mceusb"); + gc->addSelection("mod_mce"); + gc->addSelection("pvr150"); + gc->addSelection("streamzap"); + gc->addSelection("tatir"); + gc->setHelpText(QObject::tr("The type of infrared receiver used.")); + gc->setValue("Default"); + return gc; +}; + + + +static HostComboBox *HostSerialPortlirc() +{ + HostComboBox *gc = new HostComboBox("HostSerialPortlirc",false); + gc->setLabel(QObject::tr("Serial Port")); + gc->addSelection("ttyS0"); + gc->addSelection("ttyS1"); + gc->addSelection("ttyS2"); + gc->addSelection("ttyS3"); + gc->setHelpText(QObject::tr("Serial port with the lirc receiver or transmitter")); + return gc; +} + +class LIRC_ReceiverSettings: public TriggeredConfigurationGroup { +public: + LIRC_ReceiverSettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + Setting* trigger = HostReceiverType() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* blanksettings = new GridConfigurationGroup(2,true); + + ConfigurationGroup* settings = new GridConfigurationGroup(2,true); + settings->addChild(HostSerialPortlirc()); + + addTarget("Default", blanksettings); + addTarget("Serial", settings); + addTarget("imon", blanksettings ); + addTarget("Hauppauge",blanksettings); + addTarget("tinker", blanksettings ); + addTarget("imon", blanksettings); + addTarget("Hauppauge", blanksettings); + addTarget("CommandIR", blanksettings); + addTarget("iguanaIR-usb", blanksettings); + addTarget("mceusb", blanksettings); + addTarget("mod_mce", blanksettings); + addTarget("pvr150", blanksettings); + addTarget("streamzap", blanksettings); + addTarget("tatir", blanksettings); + }; +}; + + + +IRFrame::IRFrame(): + VerticalConfigurationGroup(false,false,false,false) + { + LIRC_ReceiverSettings *receiversettings = new LIRC_ReceiverSettings(); + addChild(new HostRemoteTypeIR()); + addChild(receiversettings); + } + + +//----------------transmit settings-------------- +static HostComboBox *HostTransmitproto_1() +{ + HostComboBox *gc = new HostComboBox("HostTransmitproto_1",false); + gc->setLabel(QObject::tr("Transmitter")); + gc->addSelection("none"); + gc->setValue(0); + gc->setHelpText(QObject::tr("Remote codes to control a cable box")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/transmit"); + QDir transmit(dirtxt); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; + +static HostComboBox *HostTransmitproto_2() +{ + HostComboBox *gc = new HostComboBox("HostTransmitproto_2",false); + gc->setLabel(QObject::tr("Transmitter")); + gc->addSelection("none"); + gc->setValue(0); + gc->setHelpText(QObject::tr("Remote codes to control a cable box")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/transmit"); + QDir transmit(dirtxt); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; + +static HostComboBox *HostTransmitproto_3() +{ + HostComboBox *gc = new HostComboBox("HostTransmitproto_3",false); + gc->setLabel(QObject::tr("Transmitter")); + gc->addSelection("none"); + gc->setValue(0); + gc->setHelpText(QObject::tr("Remote codes to control a cable box")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/transmit"); + QDir transmit(dirtxt); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; + +static HostComboBox *HostTransmitproto_4() +{ + HostComboBox *gc = new HostComboBox("HostTransmitproto_4",false); + gc->setLabel(QObject::tr("Transmitter")); + gc->addSelection("none"); + gc->setValue(0); + gc->setHelpText(QObject::tr("Remote codes to control a cable box")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/transmit"); + QDir transmit(dirtxt); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; + + +static HostComboBox *HostBlasterType() +{ + HostComboBox *gc = new HostComboBox("HostBlasterType"); + gc->setLabel(QObject::tr("Blaster")); + gc->addSelection("None"); + gc->addSelection("Receiver"); + gc->addSelection("Serial"); + gc->addSelection("CommandIR"); + //gc->addSelection("Hauppauge"); + gc->addSelection("MCE"); + gc->addSelection("pvr150"); + gc->addSelection("iguanaIR-usb"); + gc->setHelpText(QObject::tr("The type of infrared transmitter being used. Selecting CommandIR will use that device for both transmiting and receiving. Any other receiver will be disabled.")); + gc->setValue("None"); + return gc; +}; + +static HostComboBox *HostSerialPort_blasterlirc() +{ + HostComboBox *gc = new HostComboBox("HostSerialPort_blasterlirc",false); + gc->setLabel(QObject::tr("Serial Port")); + gc->addSelection("ttyS0"); + gc->addSelection("ttyS1"); + gc->addSelection("ttyS2"); + gc->addSelection("ttyS3"); + gc->setHelpText(QObject::tr("Serial port with the lirc transmitter")); + return gc; +} + + + +class LIRC_BlasterSettings: public TriggeredConfigurationGroup { +public: + LIRC_BlasterSettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + Setting* trigger = HostBlasterType() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* blanksettings = new GridConfigurationGroup(2,true); + + ConfigurationGroup* settings = new GridConfigurationGroup(1,true); + settings->addChild(HostTransmitproto_1()); + + ConfigurationGroup* CommandIRsettings = new GridConfigurationGroup(1,true); + CommandIRsettings->addChild(HostTransmitproto_1()); + CommandIRsettings->addChild(HostTransmitproto_2()); + CommandIRsettings->addChild(HostTransmitproto_3()); + CommandIRsettings->addChild(HostTransmitproto_4()); + + ConfigurationGroup* mcesettings = new GridConfigurationGroup(1,true); + mcesettings->addChild(HostTransmitproto_1()); + mcesettings->addChild(HostTransmitproto_2()); + + + + ConfigurationGroup* serial_settings = new GridConfigurationGroup(1,true); + serial_settings->addChild(HostSerialPort_blasterlirc()); + serial_settings->addChild(HostTransmitproto_1()); + addTarget("None", blanksettings); + addTarget("Receiver", settings); + addTarget("Serial", serial_settings); + addTarget("CommandIR", CommandIRsettings); + addTarget("pvr150",blanksettings); + addTarget("MCE",mcesettings); + addTarget("iguanaIR-usb",mcesettings); +// addTarget("tinker", blanksettings ); + }; +}; + +IR_TransmitFrame::IR_TransmitFrame(): + VerticalConfigurationGroup(false,false,false,false) + { + LIRC_BlasterSettings *blastersettings = new LIRC_BlasterSettings(); + addChild(blastersettings); + } + +//------------------LCD settings------------- + + + +static HostComboBox *HostLCDType() +{ + HostComboBox *gc = new HostComboBox("HostLCDType",false); + gc->setLabel(QObject::tr("LCD/VFD model")); + gc->addSelection("no_lcd"); + gc->addSelection("tinker"); + gc->setValue(0); + gc->setHelpText(QObject::tr("VFD or LCD")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/LCD"); + QDir transmit(dirtxt); + + //QDir transmit("/usr/share/templates/LCD"); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; + +LCDFrame::LCDFrame(): + VerticalConfigurationGroup(false,false,false,false) + { + addChild(HostLCDType()); + } + + diff --git a/abs/core/mythinstall/infrared.h b/abs/core/mythinstall/infrared.h new file mode 100755 index 0000000..c647952 --- /dev/null +++ b/abs/core/mythinstall/infrared.h @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +#include "settings.h" +#include "installsettings.h" +#include +#include + +#include +#include +#include +#include +#include +#include "util.h" + +class IRFrame: public VerticalConfigurationGroup { + public: + IRFrame(); + }; + + +class HostRemoteTypeIR: public HostImageSelect { +public: + HostRemoteTypeIR(); +}; + +class IR_TransmitFrame: public VerticalConfigurationGroup { + public: + IR_TransmitFrame(); + + }; + +class LCDFrame: public VerticalConfigurationGroup { + public: + LCDFrame(); + + }; + + + + + + diff --git a/abs/core/mythinstall/install-ui.xml b/abs/core/mythinstall/install-ui.xml new file mode 100755 index 0000000..8cebd11 --- /dev/null +++ b/abs/core/mythinstall/install-ui.xml @@ -0,0 +1,175 @@ + + + + + + + + #ffff00 + #000000 + 24 + 3,3 + yes + + + + #9999cc + 18 + yes + + + + #ffff00 + #000000 + 18 + 3,3 + yes + + + + #ffffff + 18 + yes + + + + #ffffff + 50 + yes + + + #ff0000 + #000000 + 16 + 2,2 + yes + + + + #ffff00 + 14 + yes + + + #9999cc + 12 + no + + + + 0,0,800,600 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/mythinstall/install_proxy.sh b/abs/core/mythinstall/install_proxy.sh new file mode 100755 index 0000000..a1a722e --- /dev/null +++ b/abs/core/mythinstall/install_proxy.sh @@ -0,0 +1,353 @@ +#!/bin/bash +disk=$2 +rootfs=$3 +rootsize=$4 +datafs=$5 +datasize=$6 +swapsize=$7 +mountpoint="/new_boot" +run=/root/install_functions.sh +. /etc/systemconfig 2>/dev/null + + +progress () { +mypercent=`echo "$1" | cut -d. -f1` +if [ x$mypercent = x ] +then +echo "" > /tmp/.install_percent +else +echo "${mypercent}% complete" > /tmp/.install_percent +fi + + +} + +full_install () { + if [ -f /tmp/.this_is_upgrade ] + then + rm /tmp/.this_is_upgrade + fi + echo "Partitioning $disk" > /tmp/.install_state + progress 1 + sleep 1 + $run partition_it $disk $rootsize $datasize $swapsize + + echo "Formating $disk" > /tmp/.install_state + progress 2 + sleep 1 + $run format_it $disk $rootfs $datafs + + echo "Preparing $disk" > /tmp/.install_state + progress 3 + sleep 1 + $run mount_it $disk + + startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` + + echo "STARTSIZE=$startsize">/tmp/.startsize.io + echo "Installing data" > /tmp/.install_state + + sleep 1 + $run copy_it $disk ALL + $run fstab_fix_it $disk $rootfs $datafs + + progress 99 + sleep 1 + $run grub_it $disk + + echo "Configuring system" > /tmp/.install_state + progress 100 + sleep 1 + cp -f /etc/systemconfig "$mountpoint"/etc + #run save syssettings to save settings, then copy to new mountpoint + /root/restore_default_settings.sh -c save -t syssettings -h myhost -d 127.0.0.1 + SE=/usr/share/templates/settings/syssettings + mkdir -p ${mountpoint}$SE + cp -rp $SE/* ${mountpoint}$SE/ + chown root:mythtv "$mountpoint"/etc/systemconfig + chown -R mythtv:mythtv ${mountpoint}$SE + + chmod -R 775 ${mountpoint}$SE + chmod 775 "$mountpoint"/etc/systemconfig + #copy over any updates that might have occured + cp -f /root/*.sh "$mountpoint"/root/ + chmod -R 755 ${mountpoint}/root + cp /etc/mtab "$mountpoint"/etc/mtab + chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network + + if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + then + #installing DB to local machine + + chroot "$mountpoint" /root/install_db_chroot.sh + else + #update remotedb with this host settings + chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t Default + chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t syssettings + #Run second time + chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network + fi + echo "Done" > /tmp/.install_state + $run unmount_it $disk +} + + + + +function upgrade () { + touch /tmp/.this_is_upgrade + + if [ ! x$rootfs = "xDo_not_format" ] + then + echo "Formating $disk" > /tmp/.install_state + progress 2 + sleep 1 + $run format_it $disk $rootfs NO + fi + + + echo "Preparing $disk" > /tmp/.install_state + progress 3 + sleep 1 + $run mount_it $disk + startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` + echo "STARTSIZE=$startsize">/tmp/.startsize.io + echo "Installing data" > /tmp/.install_state + sleep 1 + cp -rf /tmp/etc /new_boot/etc.old + cp -rf /tmp/oss /new_boot/var/lib/oss.old + $run copy_it $disk bin.lzm,boot.lzm,etc.lzm,home.lzm,lib.lzm,opt.lzm,root.lzm,sbin.lzm,usr.lzm,var.lzm + + if [ x$rootfs = "xDo_not_format" ] + then + rootfs=`grep ${disk}1 /tmp/etc/fstab |awk ' { print $3 } '` + fi + datafs=`grep ${disk}3 /tmp/etc/fstab |awk ' { print $3 } '` + $run fstab_fix_it $disk $rootfs $datafs + + echo "Writing boot sector" > /tmp/.install_state + progress 99 + sleep 1 + $run grub_it $disk + + + echo "Configuring system" > /tmp/.install_state + progress + sleep 1 + cp /etc/mtab "$mountpoint"/etc/mtab + cp -f /etc/systemconfig "$mountpoint"/etc + cp -f /root/*.sh "$mountpoint"/root/ + chmod -R 755 ${mountpoint}/root + chown root:mythtv "$mountpoint"/etc/systemconfig + chmod 775 "$mountpoint"/etc/systemconfig + chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network + # chroot "$mountpoint" /root/restore_default_settings.sh restore Default + chroot "$mountpoint" /root/restore_default_settings.sh -c restore -t syssettings + #Run second time + chroot "$mountpoint" /root/systemconfig.sh misc,hostype,network + # fi + + echo "Done" > /tmp/.install_state + + $run unmount_it $disk +} + + + +function killdhcp () { +if [ -f /etc/dhcpc/dhcpcd-eth0.pid ] + then + pid=`cat /etc/dhcpc/dhcpcd-eth0.pid` + kill -9 $pid + rm -f /etc/dhcpc/dhcpcd-eth0.pid + rm -f /var/run/dhcpcd* + fi +if [ -f /var/run/dhcpcd-eth0.pid ] + then + pid=`cat /var/rundhcpcd-eth0.pid` + kill -9 $pid + rm -f /var/run/dhcpcd-eth0.pid* + fi +ip address flush dev eth0 +} + +function network_setup () { +DEVICE=eth0 + if [ ! -f /etc/systemconfig ] + then + exit 1 + fi +killdhcp + +if [ $UseDHCP = 0 ] +then + /sbin/dhcpcd $DEVICE + if [ ! $? = 0 ] + then + exit 2 + fi +fi + +if [ $UseDHCP = 1 ] +then + + /sbin/ifconfig $DEVICE $ip + /sbin/route add default gw $route + echo "nameserver $nameserver" > /etc/resolv.conf +fi + + +} + +function SANE_SYSETTINGS () { +sed -e '/HOSTrootfstype/d' \ + -e '/HOSTrootfstype/d' \ + -e '/HOSTdatafstype/d' \ + -e '/HOSTOSsize/d' \ + -e '/HostUseALLdata/d' \ + -e '/HOSTDATAsize/d' \ + -e '/HOSTuprootfstype/d' \ + -e '/HostUseSWAP/d' \ + -e '/HOSTSWAPsize/d ' /tmp/usr/share/templates/settings/syssettings/settings.txt > /tmp/settings.new + mv /tmp/settings.new /tmp/usr/share/templates/settings/syssettings/settings.txt +} + +case $1 in + full_install_it ) + + full_install + ;; + find_update) + #TRY TO mount first partition of drive + #copy /etc/systemconfig to live, import settings into db + #umount drive + $run mount_it $disk + if [ -f /new_boot/etc/systemconfig ] + then + ###########ADD templates + mkdir -p /tmp/usr/share/templates + cp -pr /new_boot/usr/share/templates /tmp/usr/share + SANE_SYSETTINGS + cp -rp /tmp/usr/share/templates/settings /usr/share/templates + + + cp /new_boot/etc/systemconfig /etc/systemconfig + cp -rf /new_boot/etc /tmp/etc + cp -rf /new_boot/var/lib/oss /tmp/oss + + /root/restore_default_settings.sh -c restore -t syssettings -h myhost -d 127.0.0.1 + fi + $run umount_it $disk + ;; + + upgrade_it) + #"/root/install_proxy.sh upgrade_it " + install_drive + " " + rootfs + "&" + upgrade + + ;; + disk_model_it) + model="unknown" + size="xxx" + case $2 in + + h* ) + model=`cat /proc/ide/$2/model` + ;; + s*) model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '` + ;; + esac + size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` + + + echo ""$model" $size " >/tmp/model + + ;; + network_check_it) + #Should never return from check_network + case $2 in + setup_network) network_setup + ;; + + check_self) + myipeth0=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` + ping -c 1 $myipeth0 + if [ ! $? = 0 ] + then + exit 3 + #can't ping yourself + fi + ;; + check_gw) + #check gateway + mygweth0=`/sbin/route |grep eth0|grep UG|awk '{ print $2}'` + ping -c 1 $mygweth0 + if [ ! $? = 0 ] + then + exit 4 + #can't ping the gw + fi + ;; + check_ns) + #check nameserver + mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'` + ping -c 1 $mydns + if [ ! $? = 0 ] + then + exit 5 + #can't ping the gw + fi + ;; + check_names) + host google.com + if [ ! $? = 0 ] + then + exit 6 + #can't ping the gw + fi + ;; + esac + exit 0 + ;; + + + * ) + state=`cat /tmp/.install_state` + if [ x"${state}" = "xConfiguring system" ] + then + progress "" + else + #finding the drive + ddrive=`df | grep $mountpoint | head -n1 | awk -F/ ' { print $3 } ' | cut -d" " -f 1|cut -b1,2,3 ` + used=`statgrab -M disk.|grep ${ddrive}.write_bytes|cut -d= -f 2|tr -d " "` + . /tmp/.startsize.io + used=`echo $used-$STARTSIZE|bc` + echo $used + + if [ ! x$used = x ] + then + . /root/.install_size + #somehow find if it's an install or update + if [ -f /tmp/.this_is_upgrade ] + then + total=$UPGRADESIZE + else + total=$TOTALSIZE + fi + percent=`echo "scale=2 ; ($used/$total) * 100 " |bc ` + cond2=$(echo "$percent > 100" |bc ) + if [ $cond2 -eq 1 ] + then + percent=100 + fi + cond3=$(echo "$percent < 3" |bc ) + if [ $cond3 -eq 0 ] + then + progress $percent + fi + fi + fi + ;; +esac + + + diff --git a/abs/core/mythinstall/installationtype.cpp b/abs/core/mythinstall/installationtype.cpp new file mode 100755 index 0000000..d32b9fc --- /dev/null +++ b/abs/core/mythinstall/installationtype.cpp @@ -0,0 +1,272 @@ +#include +#include +#include +#include +#include +#include "settings.h" +#include "installsettings.h" +#include "installdialog.h" +#include "installationtype.h" +#include +#include +#include +#include +#include "mv_common.h" + +int mythinstalltype (QString tmp_install_drive) +{ + + Mythinstalltype setting; + setting.load(); + setting.save(); + //setting.exec(); + int retc = 1 ; + if ( setting.exec() == QDialog::Accepted ) + { + retc = 0; + } + return retc; + +}; + + static HostComboBox *HOSTinstallationtype() +{ + HostComboBox *gc = new HostComboBox("HOSTinstallationtype"); + gc->setLabel(QObject::tr("Upgrade or Full install")); + gc->addSelection("Full/Auto") ; + gc->addSelection("Upgrade"); + + + gc->setHelpText(QObject::tr("A full install will erase the entire drive and repartition. An upgrade will only format or overlay the first parition of the drive.")); + + return gc; +} + +static HostSpinBox *HOSTOSsize() +{ + #ifdef __MVAPP__ + HostSpinBox *gc = new HostSpinBox("HOSTOSsize", 2, 15, 1, true); + #else + HostSpinBox *gc = new HostSpinBox("HOSTOSsize", 3, 25, 1, true); + #endif + gc->setLabel(QObject::tr("OS size (GB)")); + gc->setValue(2); + gc->setHelpText(QObject::tr("" )); + + return gc; +} +static HostSpinBox *HOSTDATAsize() +{ + HostSpinBox *gc = new HostSpinBox("HOSTDATAsize", 2, 1500, 1, true); + gc->setLabel(QObject::tr("Data size (GB)")); + gc->setValue(2); + gc->setHelpText(QObject::tr("" )); + + return gc; +} + +static HostSpinBox *HOSTSWAPsize() +{ + QString currentitem; + QString line; + QFile file("/proc/meminfo"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + line = t.readLine(); + if ( line.startsWith("MemTotal:")) + { + currentitem = line.simplifyWhiteSpace(); + currentitem = currentitem.section( " ", 1, 1 ); + } + } + file.close(); + bool ok; + int mem = currentitem.toInt( &ok, 10 ); // dec == 0, ok == FALSE + mem = mem/1024 ; + if ( ! ok ) + mem = 120 ; + HostSpinBox *gc = new HostSpinBox("HOSTSWAPsize", 128, 128000, 128, true); + gc->setLabel(QObject::tr("Swapspace size (MB)")); + gc->setValue(mem); + gc->setHelpText(QObject::tr("" )); + + return gc; +} + +static HostCheckBox *HostUseSWAP() +{ + HostCheckBox *gc = new HostCheckBox("HostUseSWAP"); + gc->setLabel(QObject::tr("Use swap partition")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Enable or disable the swap partition.")); + return gc; +}; + +static HostCheckBox *HostUseALLdata() +{ + HostCheckBox *gc = new HostCheckBox("HostUseALLdata"); + gc->setLabel(QObject::tr("Use all remaining space for data")); + gc->setValue(true); + gc->setHelpText(QObject::tr("If checked myth will use the rest of the drive for the data. Otherwise you will be able to set the size of the partition.")); + return gc; +}; + + +static HostComboBox *HOSTdatafstype() +{ + HostComboBox *gc = new HostComboBox("HOSTdatafstype"); + gc->setLabel(QObject::tr("Data filesystem")); + gc->addSelection("ext3") ; + gc->addSelection("ext4") ; + gc->addSelection("reiserfs"); + gc->addSelection("jfs"); + gc->addSelection("xfs"); + + gc->setHelpText(QObject::tr("Filesystem for data. ")); + + return gc; +} + + static HostComboBox *HOSTuprootfstype() +{ + HostComboBox *gc = new HostComboBox("HOSTuprootfstype"); + gc->setLabel(QObject::tr("OS file system")); + gc->addSelection("ext3") ; + gc->addSelection("ext4") ; + gc->addSelection("reiserfs"); + gc->addSelection("jfs"); + //gc->addSelection("xfs"); + gc->addSelection("Do_not_format"); + + gc->setHelpText(QObject::tr("Filesystem for OS. ")); + + return gc; +} + +static HostComboBox *HOSTrootfstype() +{ + HostComboBox *gc = new HostComboBox("HOSTrootfstype"); + gc->setLabel(QObject::tr("Root filesystem format")); + gc->addSelection("ext3") ; + gc->addSelection("ext4") ; + gc->addSelection("reiserfs"); + gc->addSelection("jfs"); + //gc->addSelection("xfs"); + + gc->setHelpText(QObject::tr("Filesystem for OS. ")); + + return gc; +} + +class USESwap: + public TriggeredConfigurationGroup { +public: + USESwap(): + //ConfigurationGroup(false, true, false, false), + //VerticalConfigurationGroup(false, true, false, false), + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + //setLabel(QObject::tr("" )); +// setUseLabel(false); + + + Setting* useswap = HostUseSWAP(); + addChild(useswap); + setTrigger(useswap); + + + ConfigurationGroup* swapyes = new VerticalConfigurationGroup(false); + swapyes->addChild(HOSTSWAPsize()); + + + + addTarget("1", swapyes ); + addTarget("0", new VerticalConfigurationGroup(true)); + + + + + }; +}; + +class DATAsize: + public TriggeredConfigurationGroup { +public: + DATAsize(): + //ConfigurationGroup(false, true, false, false), + //VerticalConfigurationGroup(false, true, false, false), + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + //setLabel(QObject::tr("" )); +// setUseLabel(false); + + + Setting* datasize = HostUseALLdata(); + addChild(datasize); + setTrigger(datasize); + + + ConfigurationGroup* alldatano = new VerticalConfigurationGroup(false); + alldatano->addChild(HOSTDATAsize()); + alldatano->addChild(HOSTdatafstype()); + + ConfigurationGroup* alldatayes = new VerticalConfigurationGroup(false); + alldatayes->addChild(HOSTdatafstype()); + + + + + addTarget("1", alldatayes); + addTarget("0", alldatano); + + + + }; +}; + + +class Installationtype: + public TriggeredConfigurationGroup { +public: + Installationtype(): + //ConfigurationGroup(false, true, false, false), + //VerticalConfigurationGroup(false, true, false, false), + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { +// setLabel(QObject::tr("Upgrade or Full install" )); +// setUseLabel(false); + + + Setting* Mtemplate = HOSTinstallationtype(); + addChild(Mtemplate); + setTrigger(Mtemplate); + + + ConfigurationGroup* tupgrade = new VerticalConfigurationGroup(false); + tupgrade->addChild(HOSTuprootfstype()); + + ConfigurationGroup* tfull = new VerticalConfigurationGroup(false); + tfull->addChild(HOSTOSsize()); + tfull->addChild(HOSTrootfstype()); + tfull->addChild(new USESwap); + tfull->addChild(new DATAsize); + + + + addTarget("Upgrade",tupgrade ); + addTarget("Full/Auto", tfull); + + + }; +}; + +Mythinstalltype::Mythinstalltype() +{ + //Reseting the install type to remove "NET" + if ( gContext->GetSetting("Hostinstallationtype") == "NET") + gContext ->SaveSetting("HOSTinstallationtype","Full/Auto"); + Installationtype *installationtype = new Installationtype(); + addChild(installationtype); + +} + + + diff --git a/abs/core/mythinstall/installationtype.h b/abs/core/mythinstall/installationtype.h new file mode 100755 index 0000000..ad29224 --- /dev/null +++ b/abs/core/mythinstall/installationtype.h @@ -0,0 +1,11 @@ +#include +#include "mythdialogs.h" +//###################################################################################################3 +class Mythinstalltype: public ConfigurationWizard { +public: + Mythinstalltype(); + +}; + +int mythinstalltype(QString); + diff --git a/abs/core/mythinstall/installdialog.cpp b/abs/core/mythinstall/installdialog.cpp new file mode 100755 index 0000000..e5bdfc9 --- /dev/null +++ b/abs/core/mythinstall/installdialog.cpp @@ -0,0 +1,1034 @@ +#include +#include +#include +#include // For WIFEXITED on Mac OS X + +#include "mythcontext.h" +#include "mythdbcon.h" +#include "lcddevice.h" +#include "tv.h" +#include "programinfo.h" +#include "uitypes.h" +#include "remoteutil.h" +#include +#include "installdialog.h" +#include "installsettings.h" +#include "installationtype.h" +#include "mv_common.h" +#include "libmyth/dialogbox.h" +#include +#define UPDATE_STATUS_INTERVAL 5000 +#define UPDATE_SCREEN_INTERVAL 5000 + + + +WelcomeDialog::WelcomeDialog(MythMainWindow *parent, + QString window_name, + QString theme_filename, + const char* name) +:MythThemedDialog(parent, window_name, theme_filename, name) +{ + system("rm -f /tmp/.install_state"); + system("rm -f /tmp/.install_percent"); + system("rm -f /tmp/.install_error"); + install_drive = "" ; + recording_text = ""; + scheduled_text = ""; + install_text = ""; + version_text = ""; + I_AM_BUSY = false; + WORKING_ON_INSTALL = false; + current_hostname = ""; + + gContext->addListener(this); + m_timeFormat = gContext->GetSetting("TimeFormat", "h:mm AP"); + wireUpTheme(); + assignFirstFocus(); + + m_updateStatusTimer = new QTimer(this); + connect(m_updateStatusTimer, SIGNAL(timeout()), this, + SLOT(updateStatus())); + m_updateStatusTimer->start(UPDATE_STATUS_INTERVAL); + + m_updateScreenTimer = new QTimer(this); + connect(m_updateScreenTimer, SIGNAL(timeout()), this, + SLOT(updateScreen())); + + m_timeTimer = new QTimer(this); + connect(m_timeTimer, SIGNAL(timeout()), this, + SLOT(updateTime())); + m_timeTimer->start(1000); + + reboot_box = NULL; + popup = NULL; + showPopup(); +} +void WelcomeDialog::shutdownNow(int rc) +{ + QString NETBOOT = getenv("NETBOOT"); + NETBOOT=NETBOOT.stripWhiteSpace(); + system("rm -f /tmp/.install_state"); + system("rm -f /tmp/.install_percent"); + system("rm -f /tmp/.install_error"); + if (rc == 1) + system("/sbin/halt"); + else + system("/sbin/reboot"); + // system("/usr/bin/killall -9 X"); +} + +void WelcomeDialog::runLIVECD(void) +{ + cancelPopup(); + ask_validate_network(); + if ( runsettings(true) == 1 ) + { + QString PAINTER = gContext->GetSetting("ThemePainter"); + QString startFECmd = ("MYTHCONFDIR=/tmp mythfrontend -O ThemePainter=" + PAINTER ); + myth_system(startFECmd.ascii()); + } + else + { + cancelPopup(); + showPopup(); + } + + +} + + + +int WelcomeDialog::exec() +{ + updateAll(); + return MythDialog::exec(); +} + + + +void WelcomeDialog::keyPressEvent(QKeyEvent *e) +{ + bool handled = false; + QStringList actions; + gContext->GetMainWindow()->TranslateKeyPress("Welcome", e, actions); + for (unsigned int i = 0; i < actions.size() && !handled; i++) + { + QString action = actions[i]; + handled = true; + if (action == "ESCAPE") + { + return; // eat escape key + } + else if (action == "MENU") + { + showPopup(); + } + else if (action == "NEXTVIEW") + { + accept(); + } + else if (action == "SELECT") + { + activateCurrent(); + } + else + handled = false; + } + + if (!handled) + MythThemedDialog::keyPressEvent(e); +} + +UITextType* WelcomeDialog::getTextType(QString name) +{ + UITextType* type = getUITextType(name); + if (!type) + { + cout << "ERROR: Failed to find '" << name << "' UI element in theme file\n" + << "Bailing out!" << endl; + exit(0); + } + return type; +} + +void WelcomeDialog::wireUpTheme() +{ + m_status_text = getTextType("status_text"); + m_recording_text = getTextType("recording_text"); + m_scheduled_text = getTextType("scheduled_text"); + m_mv_text=getTextType("mythvantage_text"); + m_time_text = getTextType("time_text"); + m_date_text = getTextType("date_text"); + m_warning_text = getTextType("conflicts_text"); + m_warning_text->hide(); + buildFocusList(); +} + +void WelcomeDialog::closeDialog() +{ + done(1); +} + +WelcomeDialog::~WelcomeDialog() +{ + gContext->removeListener(this); + if (m_updateStatusTimer) + delete m_updateStatusTimer; + + if (m_updateScreenTimer) + delete m_updateScreenTimer; + + if (m_timeTimer) + delete m_timeTimer; +} + +void WelcomeDialog::updateTime(void) +{ + QString releasefile="/etc/"; + releasefile.append(RELEASEFILE); + + extern const char *myth_source_version; + extern const char *myth_source_path; + QString distro_line; + QFile file(releasefile); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + distro_line = t.readLine(); + file.close(); + } + + + QString s=""; + //QString s="MythVantage 1.4 Mythtv svn: "; + s.append(distro_line); + s.append( " , Mythtv svn:" ); + s.append(myth_source_version); + s.append(" "); + s.append(myth_source_path); + m_date_text->SetText(s); +} + +void WelcomeDialog::updateStatus(void) +{ +// checkConnectionToServer(); + updateStatusMessage(); +} + +void WelcomeDialog::updateScreen(void) +{ + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh " ); + system(cmdtxt); + recording_text=" "; + mythvantage_text=" "; + error_text=" "; + scheduled_text=" "; + QFile mystatus("/tmp/.install_state"); + QFile mypercent("/tmp/.install_percent"); + QFile myerror("/tmp/.install_error"); + QFile mylog("/tmp/mythvantage_install.log"); + if ( mystatus.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &mystatus ); // use a text stream + scheduled_text = t.readLine(); + mystatus.close(); + } + + if ( mypercent.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &mypercent ); // use a text stream + recording_text = t.readLine(); + mypercent.close(); + } + + if ( myerror.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &myerror ); // use a text stream + error_text = t.readLine(); + myerror.close(); + scheduled_text = error_text; + recording_text = "FAILED"; + WORKING_ON_INSTALL = false; + } + + if ( WORKING_ON_INSTALL ) + { + if ( mylog.open( IO_ReadOnly| IO_Translate ) ) + { + QTextStream t( &mylog ); + while ( !t.atEnd() ) + { + mythvantage_text=t.readLine(); + } + mylog.close(); + } + } + else + mythvantage_text=""; + m_recording_text->SetText(recording_text); + m_scheduled_text->SetText(scheduled_text); + m_mv_text->SetText(mythvantage_text); + + if ( install_drive != "" ) + install_text = ""; + + m_status_text->SetText(install_text ); + m_updateScreenTimer->start(UPDATE_SCREEN_INTERVAL, true); + if ( scheduled_text == "Done" ) + { + Reboot_popup () ; + } + // shows the busy box when configuring the system + if ( scheduled_text == "Configuring system") + { + if ( ! I_AM_BUSY ) + busy_box(); + assignFirstFocus(); + } +}; + +void WelcomeDialog::busy_box(void) +{ + QString msgtext = "Please wait, " ; + msgtext.append(current_hostname); + msgtext.append(" is preparing for life"); + MythBusyDialog *busy = new MythBusyDialog(msgtext); + busy->start(); + + while ( scheduled_text == "Configuring system" ) + { + qApp->processEvents (); + usleep(900); + I_AM_BUSY = true; + } + busy->Close(); + I_AM_BUSY = false; + busy->deleteLater(); +} + +void WelcomeDialog::busy_find_oldsettings(void) +{ + MythBusyDialog *busy = new MythBusyDialog( + QObject::tr("Importing old settings")); + busy->start(); + int return_code = 0; + while ( return_code == 0 ) + { + qApp->processEvents (); + usleep(900); + I_AM_BUSY = true; + return_code = myth_system("ps -ef|grep install_proxy.sh|grep -v grep > /dev/null"); + + } + busy->Close(); + I_AM_BUSY = false; + busy->deleteLater(); + +} + + + +void WelcomeDialog::updateAll(void) +{ + updateRecordingList(); + updateScheduledList(); +} + +bool WelcomeDialog::updateRecordingList() +{ + return true; +} + +bool WelcomeDialog::updateScheduledList() +{ + updateStatus(); + updateScreen(); + return true; +} + +void WelcomeDialog::updateStatusMessage(void) +{ + +} + +void WelcomeDialog::showPopup(void) +{ + if (popup) + return; + popup = new MythPopupBox(gContext->GetMainWindow(), "Menu"); + QButton *topButton; + QLabel *label = popup->addLabel(tr("Menu"), MythPopupBox::Large, false); + label->setAlignment(Qt::AlignCenter | Qt::WordBreak); + // This is a bad way to lock the buttons but it works for now. + if ( scheduled_text.length() <= 2 ) + { + topButton = popup->addButton(tr("Install or Upgrade "), this, + SLOT(Display_2ndpopup())); + popup->addButton(tr("Run MythFrontend"), this, + SLOT(runLIVECD())); + popup->addButton(tr("Exit"), this, + SLOT(closeDialog())); + popup->addButton(tr("Close menu"), this, SLOT(cancelPopup())); + + popup->ShowPopup(this, SLOT(cancelPopup())); + + } + else + { + topButton= popup->addButton(tr("Exit"), this, + SLOT(closeDialog())); + popup->addButton(tr("Close menu"), this, SLOT(cancelPopup())); + + popup->ShowPopup(this, SLOT(cancelPopup())); + } + + topButton->setFocus(); +} + + +QString WelcomeDialog::diskmodel(QString drive , QString tsize) +{ + string line; + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh disk_model_it " + drive + " " + tsize ); + myth_system(cmdtxt); + + ifstream model("/tmp/model"); + if (model.is_open()) + getline (model,line); + model.close(); + return line; +} + +QString WelcomeDialog::findinstallsouce(void) +{ + string line; + QString currentitem; + ifstream mountfile("/proc/mounts"); + //ifstream mountfile("procmounts"); + while (! mountfile.eof() ) + { + getline (mountfile,line); + if ( line.empty() ) + line = "oops didn't find andthing"; + currentitem = line; + + if ( ! currentitem.contains("/dev")) + currentitem="not the right line"; + + //if ( currentitem.contains("/mnt/live/mnt") ) + if ( currentitem.contains("/.livesys/medium") ) + { + int ndx = line.find(" "); + currentitem = line.substr(0,ndx); + ndx = currentitem.findRev("/"); + currentitem = currentitem.mid(ndx+1,3); + return currentitem; + }; + + } + +}; + +void WelcomeDialog::showPopup_2(void) +{ + + if (popup) + return; + popup = new MythPopupBox(gContext->GetMainWindow(), "Select the drive to install"); + findinstallsouce(); + QButton *CancelButton; + QLabel *label = popup->addLabel(tr("Select the install target."), MythPopupBox::Large, false); + label->setAlignment(Qt::AlignCenter | Qt::WordBreak); + string currentitem; + string sizeitem; + string disksize; + string line; + bool installsource = false; + + QString NETBOOT = getenv("NETBOOT"); + NETBOOT=NETBOOT.stripWhiteSpace(); + if ( NETBOOT == "YES" ) + popup->addButton(("Diskless Frontend " ), this, SLOT(install_net() ) ); + + QString INSTALLSOURCE = findinstallsouce(); + std::cout << "install source:" << std::endl; + std::cout << INSTALLSOURCE << std::endl; + ifstream partitions("/proc/partitions"); + if (partitions.is_open()) + while (! partitions.eof() ) + { + getline (partitions,line); + if ( line.empty() ) + { + line = "oops didn't find anything"; + } + int ndx = line.rfind(" "); + ndx = ndx +1; + int linelength = line.length(); + currentitem = line.substr(ndx,linelength); + sizeitem = line.substr(0,ndx-1); + linelength = sizeitem.length(); + ndx = sizeitem.rfind(" "); + disksize = sizeitem.substr(ndx+1,linelength); + +// std::cout << currentitem<< std::endl; + if( currentitem == INSTALLSOURCE ) + { + std::cout << currentitem<< std::endl; + installsource = true; + } + + + if (! installsource ) + { + if ( currentitem == "hda" ) + popup->addButton(("hda " + diskmodel(currentitem,disksize)), this, SLOT(install_hda() ) ); + if ( currentitem == "hdb" ) + popup->addButton(("hdb " + diskmodel(currentitem,disksize)), this, SLOT(install_hdb() ) ); + if ( currentitem == "hdc" ) + popup->addButton(("hdc " + diskmodel(currentitem,disksize)), this, SLOT(install_hdc() ) ); + if ( currentitem == "hdd" ) + popup->addButton(("hdd " + diskmodel(currentitem,disksize)), this, SLOT(install_hdd() ) ); + if (currentitem == "sda" ) + popup->addButton(("sda " + diskmodel(currentitem,disksize)), this, SLOT(install_sda() ) ); + if (currentitem == "sdb" ) + popup->addButton(("sdb " + diskmodel(currentitem,disksize)), this, SLOT(install_sdb() ) ); + if (currentitem == "sdc" ) + popup->addButton(("sdc "+ diskmodel(currentitem,disksize)), this, SLOT(install_sdc() ) ); + if (currentitem == "sdd" ) + popup->addButton(("sdd "+ diskmodel(currentitem,disksize)), this, SLOT(install_sdd() ) ); + } + installsource = false; + } + partitions.close(); + CancelButton = popup->addButton(tr("Cancel"), this, SLOT(MAINPopup())); + popup->ShowPopup(this, SLOT(cancelPopup())); + CancelButton->setFocus(); +} + +void WelcomeDialog::GO_popup(QString go_text) +{ + if (popup) + return; + DialogCode retval = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), + QString("Start the process"), + QObject::tr(go_text), + QObject::tr("Start the process"), QObject::tr("Cancel"), kDialogCodeButton0); + + if ( retval == kDialogCodeButton0 ) + { + install_it(); + } + else + { + cancelPopup(); + showPopup(); + } +} + + +void WelcomeDialog::Reboot_popup(void) +{ if (reboot_box) + return; + QString prompt1; + QFile updbstatus("/tmp/.upgrade_db_failed"); + if ( updbstatus.open(IO_ReadOnly | IO_Translate) ) + { + prompt1 = QObject::tr(" "); + prompt1.append("\n"); + prompt1.append("An error occured while attempting to restore the database!"); + prompt1.append("\n"); + prompt1.append("The old database could not be restored, so a new database was created"); + prompt1.append("\n"); + + } + else + { + prompt1 = QObject::tr("Ready to go!"); + } + + + + reboot_box = new DialogBox(gContext->GetMainWindow(), prompt1); + reboot_box->AddButton(QObject::tr("Reboot")); + reboot_box->AddButton(QObject::tr("Power off")); + + int returncode = 0; + DialogCode dcode = reboot_box->exec(); + reboot_box->deleteLater(); + if (kDialogCodeButton0 == dcode ) + returncode = 0; + if (kDialogCodeButton1 == dcode ) + returncode = 1; + if (kDialogCodeButton2 == dcode ) + returncode = 2; + + + reboot_box = NULL; + shutdownNow(returncode); +} + + + +void WelcomeDialog::cancelPopup(void) +{ + if (!popup) + return; + popup->hide(); + popup->deleteLater(); + popup = NULL; + setActiveWindow(); +} + +void WelcomeDialog::MAINPopup(void) +{ + if (!popup) + return; + popup->hide(); + popup->deleteLater(); + popup = NULL; + showPopup(); + setActiveWindow(); +} + +void WelcomeDialog::Display_2ndpopup(void) +{ + cancelPopup(); + showPopup_2(); + updateStatusMessage(); + updateScreen(); +} + +void WelcomeDialog::install_hda(void) +{ + install_drive = "hda" ; + install_generic(); +} + +void WelcomeDialog::install_hdb(void) +{ + install_drive = "hdb" ; + install_generic(); +} + +void WelcomeDialog::install_hdc(void) +{ + install_drive = "hdc" ; + install_generic(); +} + +void WelcomeDialog::install_hdd(void) +{ + install_drive = "hdd" ; + install_generic(); +} + +void WelcomeDialog::install_sda(void) +{ install_drive = "sda" ; + install_generic(); +} +void WelcomeDialog::install_sdb(void) +{ install_drive = "sdb" ; + install_generic(); +} + +void WelcomeDialog::install_sdc(void) +{ install_drive = "sdc" ; + install_generic(); +} + +void WelcomeDialog::install_sdd(void) +{ + install_drive = "sdd" ; + install_generic(); +} + +void WelcomeDialog::install_net(void) +{ + install_drive = "NET" ; + gContext->ActivateSettingsCache(false); + gContext ->SaveSetting("HOSTinstallationtype","NET"); + install_generic(); +} + +void WelcomeDialog::install_generic(void) +{ + gContext->ActivateSettingsCache(false); + cancelPopup(); + updateStatusMessage(); + updateScreen(); + QString installwarningtext; + int runNextSetting; + runNextSetting = 1; + int tflag; + tflag = 0; + int retcode; + retcode=0; + QString installtype; + if ( install_drive != "NET") + retcode = mythinstalltype(install_drive); + if ( retcode == 0 ) + { + installtype = gContext -> GetSetting("HOSTinstallationtype"); + if ( installtype == "Full/Auto" ) + { + runNextSetting = ask_validate_network(); + installwarningtext="Warning!"; + installwarningtext.append ("\n"); + installwarningtext.append ("\n"); + installwarningtext.append ("About to erase the entire"); + installwarningtext.append ("\n"); + installwarningtext.append ("installation drive of "); + installwarningtext.append (install_drive); + + } + else if ( installtype == "NET") + { + runNextSetting=0; + gContext ->SaveSetting("HostSystemType", "Frontend_only"); + gContext->SaveSetting("HostaccesshostypeSystemtype","0"); + installwarningtext.append ("About to install "); + installwarningtext.append ("\n"); + installwarningtext.append (install_drive); + // ask for hostname + runsettings(false,true,false,false,false,false,false); + } + else if ( installtype == "Upgrade" ) + { + installwarningtext="Warning!"; + installwarningtext.append ("\n"); + installwarningtext.append ("\n"); + installwarningtext.append ("About to erase the"); + installwarningtext.append ("\n"); + installwarningtext.append ("partition "); + installwarningtext.append (install_drive); + installwarningtext.append ("1"); + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh find_update " + install_drive +" &"); + system(cmdtxt); + busy_find_oldsettings(); + bool flag = false; + QString line; + QString currentitem; + QFile file("/etc/systemconfig"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.startsWith("hostname")) + { + flag=true; + currentitem = line.section( "=", 1, 1 ); + current_hostname = currentitem ; + } + } + file.close(); + cout << current_hostname << endl; + } + if ( flag ) + { + // GO_popup(installwarningtext); + tflag = 1; + } + else + { + cout << "searching for knoppmyth-versin" << endl; + //couldn't open /etc/systemconfig, so now look for /tmp/etc/Knoppmyth-version + QFile file("/tmp/etc/KnoppMyth-version"); + if ( file.exists() ) + { //appears to be a knoppmyth version, proceed + cout << "found knoppmyth-version" << endl; + QFile kmfile("/tmp/etc/hostname"); + if ( kmfile.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &kmfile ); // use a text stream + line = t.readLine(); + flag=true; + currentitem = line.stripWhiteSpace(); + current_hostname = currentitem ; + //gContext->ActivateSettingsCache(true); + gContext->ClearSettingsCache(); + gContext->SetSetting("HostMyhostname",current_hostname); + gContext->SaveSetting("HostMyhostname",current_hostname); + } + kmfile.close(); + cout << current_hostname << endl; + runNextSetting = ask_validate_network(); + } + else + { + //popup things went wrong + DialogCode returncode = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), + QString(""), + QObject::tr("Couldn't find the old config file, proceed with update?"), + QObject::tr("No"), QObject::tr("Yes"), kDialogCodeButton1); + if ( returncode == kDialogCodeButton1 ) + { + runNextSetting = ask_validate_network(); + } + else if ( returncode == kDialogCodeButton0 ) + { + runNextSetting = 1; + } + } + + } + } + + } + + +//run through the system settings +if ( runNextSetting == 0 ) +{ + tflag = runsettings(false,false,true,true,false,false,false,false,false,false,true,false); + +} +else +{ + cancelPopup(); + showPopup(); +} + +if ( tflag == 1 ) + { + cancelPopup(); + GO_popup(installwarningtext); + } + else + { + cancelPopup(); + showPopup(); + } + +} + +void busy_network(void) +{ + MythBusyDialog *busy = new MythBusyDialog( + QObject::tr("Starting network")); + busy->start(); + int return_code = 0; + while ( return_code == 0 ) + { + qApp->processEvents (); + usleep(900); + return_code = myth_system("ps -ef|grep install_proxy.sh| grep setup_network |grep -v grep > /dev/null"); + } + busy->Close(); + busy->deleteLater(); +} + + +int WelcomeDialog::ask_validate_network(void) +{ + + QString pop_text="abc"; + int retval = 1; + while ( retval != 0 ) + { + int settingsrec = runsettings(false,true,false,false,false,false,false); + if ( settingsrec != 1 ) + return 1; + else + { + MythProgressDialog *network_check = NULL; + network_check = new MythProgressDialog(QObject::tr("Please wait while the network is checked."), 6); + updateScreen(); + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it setup_network &"); + retval = system(cmdtxt); + busy_network(); + if (network_check) + { + network_check->setProgress(1); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_self"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not find myself on the network"; + } + } + + if ( retval == 0) + { + network_check->setProgress(2); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_gw"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not locate gateway"; + } + } + + if (retval == 0) + { + network_check->setProgress(3); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_ns"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not locate nameserver"; + } + } + if (retval == 0) + { + network_check->setProgress(4); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it check_names"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Could not lookup names"; + } + } + if (retval == 0) + { + network_check->setProgress(5); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh network_check_it host_names"); + retval = system(cmdtxt); + if ( retval != 0 ) + { + network_check->Close(); + pop_text="Hostname already on the network"; + } + } + + + network_check->setProgress(6); + if (network_check) + { + network_check->Close(); + network_check->deleteLater(); + } + + if (retval != 0 ) + { + DialogCode val = MythPopupBox::Show2ButtonPopup(gContext->GetMainWindow(), QString(""), QObject::tr(pop_text), QObject::tr("Continue"), QObject::tr("Try again"), kDialogCodeButton0); + + if (kDialogCodeButton0 == val ) + retval = 0; + } + } + } +return 0; +} + + +void WelcomeDialog::install_it(void) +{ + QString installtype = gContext -> GetSetting("HOSTinstallationtype"); + QString rootfs = gContext -> GetSetting("HOSTrootfstype"); + QString datafs = gContext -> GetSetting("HOSTdatafstype"); + QString rootsize = gContext -> GetSetting("HOSTOSsize"); + rootsize=rootsize + "000"; + QString usealldata = gContext -> GetSetting("HostUseALLdata"); + QString datasize = gContext -> GetSetting("HOSTDATAsize"); + QString uprootfs = gContext -> GetSetting("HOSTuprootfstype"); + QString useswap = gContext -> GetSetting("HostUseSWAP"); + QString swapsize = gContext -> GetSetting("HOSTSWAPsize"); + if ( installtype != "Upgrade" ) + current_hostname = gContext->GetSetting("HostMyhostname"); + QString clean_upgrade = getenv("CLEAN_UPGRADE"); + if ( clean_upgrade == "YES" ) + current_hostname = gContext->GetSetting("HostMyhostname"); + +//get the hostname here if upgrade then use previous declarion of hostname + if ( usealldata == "1" ) + { + datasize="ALL"; + } + else + { + datasize=datasize + "000"; + } + if ( useswap == "0" ) + { + swapsize="NO"; + }; + + + if ( installtype == "Full/Auto" ) + { + QString currentitem; + QString line; + QFile file("/proc/meminfo"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + line = t.readLine(); + if ( line.startsWith("MemTotal:")) + { + currentitem = line.simplifyWhiteSpace(); + currentitem = currentitem.section( " ", 1, 1 ); + } + } + file.close(); + bool ok; + int mem = currentitem.toInt( &ok, 10 ); // dec == 0, ok == FALSE + cout << mem << endl; + if ( mem >= 500000 ) + { + cout << gContext -> GetSetting("HostXres") << endl; + if ((gContext -> GetSetting("HostXres")) == "1280x720" ) + { + gContext->SaveSetting("Theme", "syth-lacquer-wide"); + cout <<"Setting theme to syth-wide" << endl; + } + } + + + QString cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh full_install_it " + install_drive + " " + rootfs + " " + rootsize + " " + datafs + " " + datasize + " " + swapsize + "&"); + system(cmdtxt); + } + else if ( installtype == "Upgrade" ) + { + QString cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh upgrade_it " + install_drive + " " + uprootfs + "&"); + system(cmdtxt); + } + else if (installtype=="NET") + { + QString olddb = gContext->GetSetting("HostMysqlserver"); + QString cmdtxt; + cmdtxt=MV_ROOT ; + char localhostname[1024]; + if (gethostname(localhostname, 1024)) + { + VERBOSE(VB_IMPORTANT, + "MCP: Error, could not determine host name." + ENO); + localhostname[0] = '\0'; + } + QString h; + h=localhostname; + cout << "calling restore_default_settings with hostname " << h << endl; + cmdtxt.append("bin/restore_default_settings.sh -c save -t syssettings -d 127.0.0.1 -h " + h); + system(cmdtxt); + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/install_proxy.sh NETBOOT " + install_drive + " &"); + system(cmdtxt); + } + WORKING_ON_INSTALL = true; + usleep (500); + updateScreen(); + usleep (500); + updateScreen(); + cancelPopup(); +} diff --git a/abs/core/mythinstall/installdialog.h b/abs/core/mythinstall/installdialog.h new file mode 100755 index 0000000..f1c98ab --- /dev/null +++ b/abs/core/mythinstall/installdialog.h @@ -0,0 +1,101 @@ +#ifndef WELCOMEDIALOG_H_ +#define WELCOMEDIALOG_H_ + +#include +using namespace std; + +#include +#include "mythdialogs.h" +#include "libmyth/dialogbox.h" +class WelcomeDialog : public MythThemedDialog +{ + + Q_OBJECT + + public: + + WelcomeDialog(MythMainWindow *parent, + QString window_name, + QString theme_filename, + const char* name = 0); + ~WelcomeDialog(); + + void keyPressEvent(QKeyEvent *e); + void wireUpTheme(); + int exec(void); + + protected slots: + void updateAll(void); + void updateStatus(void); + void updateScreen(void); + void closeDialog(); + void updateTime(); + void showPopup(); + void showPopup_2(); + void GO_popup(QString); + void Reboot_popup(); + void cancelPopup(); + void MAINPopup(); + QString diskmodel(QString,QString); + QString findinstallsouce(void); + void Display_2ndpopup(); + bool updateRecordingList(void); + bool updateScheduledList(void); + void shutdownNow(int); + + void install_hda(void); + void install_hdb(void); + void install_hdc(void); + void install_hdd(void); + void install_sda(void); + void install_sdb(void); + void install_sdc(void); + void install_sdd(void); + void install_net(void); + void install_generic(void); + void install_it(void); + void runLIVECD(void); + void busy_box(void); + void busy_find_oldsettings(void); + int ask_validate_network(void); + private: + void updateStatusMessage(void); + UITextType* getTextType(QString name); + MythPopupBox *popup; + DialogBox *reboot_box; + DialogBox *upgrade_box; + // + // GUI stuff + // + UITextType *m_status_text; + UITextType *m_recording_text; + UITextType *m_scheduled_text; + UITextType *m_error_text; + UITextType *m_mv_text; + UITextType *m_warning_text; + UITextType *m_time_text; + UITextType *m_date_text; + QTimer *m_updateStatusTimer; + QTimer *m_updateScreenTimer; + QTimer *m_timeTimer; + + QString m_installDir; + QString m_timeFormat; + QStringList m_statusList; + QString install_drive ; + QString install_text; + QString version_text; + QString recording_text; + QString scheduled_text; + QString error_text; + QString mythvantage_text; + string bin_prefix; + QString current_hostname; + + bool I_AM_BUSY; + bool WORKING_ON_INSTALL; + + +}; + +#endif diff --git a/abs/core/mythinstall/installsettings.cpp b/abs/core/mythinstall/installsettings.cpp new file mode 100755 index 0000000..8118132 --- /dev/null +++ b/abs/core/mythinstall/installsettings.cpp @@ -0,0 +1,4556 @@ +//_include +#include +#include +#include +#include +#include "settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +#include // For WIFEXITED on Mac OS X +#include +#include "mythcontext.h" +#include "libmyth/mythdialogs.h" +#include "mythdbcon.h" +#include "lcddevice.h" +#include "tv.h" +#include "programinfo.h" +#include "uitypes.h" +#include "remoteutil.h" +#include +#include +#include +#include + +#include "installsettings.h" +#include "installdialog.h" +#include "xorgsettings.h" +#include "password_manage.h" +#include "misc_settings.h" +#include "infrared.h" + +#include +#include +#include "mv_common.h" + +int timezone_unknown = FALSE; +extern HostParms hostparm; +extern DDCinfo ddcinfo; + + + +bool displaymysqlonly = false ; +bool displayshownetwork =false ; +bool displayshowhostype = false ; +bool displayshowmisc =false ; +bool displayshowshutdown =false ; +bool displayshowadvanced = false; +bool displayshowsound = false ; +bool displayshowadvancedX = false; +bool displayaccesscontrol= false; +bool displayplugins = false; +bool displayuser = false; +bool displaywebuser = false; +bool displayddns = false; +bool displayinfrared = false; +bool displayscreensaver = false; +bool install_hobbit = false; + + +static HostComboBox *ThemePainter() +{ + HostComboBox *gc = new HostComboBox("ThemePainter"); + gc->setLabel(QObject::tr("Paint Engine")); + gc->addSelection(QObject::tr("Qt"), "qt"); + gc->addSelection(QObject::tr("OpenGL"), "opengl"); + gc->setHelpText(QObject::tr("This selects what Myth uses to draw. If you have decent hardware, select OpenGL. Changing this requires a restart.")); + return gc; + +} +static HostComboBox *HostMyhostname() +{ + HostComboBox *gc = new HostComboBox("HostMyhostname",true); + gc->setLabel(QObject::tr("Hostname")); + gc->addSelection("Envy"); + gc->addSelection("Greed"); + gc->addSelection("Lust"); + gc->addSelection("Sloth"); + gc->addSelection("Wrath"); + gc->addSelection("Gluttony"); + gc->addSelection("Pride"); + gc->addSelection("Humility"); + gc->addSelection("Generosity"); + gc->addSelection("Love"); + gc->addSelection("Kindness"); + gc->addSelection("SelfControl"); + gc->addSelection("Faith"); + gc->addSelection("Zeal"); + gc->addSelection("type_hostname_here"); + gc->setHelpText(QObject::tr("Hostname of this machine")); + return gc; +}; + +static HostCheckBox *HostDHCPHostname() +{ + HostCheckBox *gc = new HostCheckBox("HostDHCPhostname"); + gc->setLabel(QObject::tr("Use Hostname provided by DHCP")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Checking this will use the hostname as provided by dhcp for the default interface. If none is provided by DHCP it will use the hostname provided in the hostname box")); + return gc; +}; + + +static HostLineEdit *HostDDnslogin() +{ + HostLineEdit *gc = new HostLineEdit("HostDDnslogin"); + gc->setLabel(QObject::tr("Login")); + gc->setValue(""); + gc->setHelpText(QObject::tr("Login for ddns account")); + return gc; +}; + +static HostLineEdit *HostDDnspassword() +{ + HostLineEdit *gc = new HostLineEdit("HostDDnspassword"); + gc->setLabel(QObject::tr("Password")); + gc->setValue(""); + gc->SetPasswordEcho(true); + gc->setHelpText(QObject::tr("Password for ddns account.")); + return gc; +}; + +static HostLineEdit *HostDDnshostname() +{ + HostLineEdit *gc = new HostLineEdit("HostDDnshostname"); + gc->setLabel(QObject::tr("DDNS hostname")); + gc->setValue(""); + gc->setHelpText(QObject::tr("Hostname used for DDNS.")); + return gc; +}; + +static HostCheckBox *HostDDnsEnable() +{ + HostCheckBox *gc = new HostCheckBox("HostDDnsEnable"); + gc->setLabel(QObject::tr("Enable DDNS support")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Update DDNS records at dyndns.com. Visit http://dyndns.com to setup your account.")); + return gc; +}; + +class DDnssettings: public TriggeredConfigurationGroup { +public: + DDnssettings(): + TriggeredConfigurationGroup(false,false,false,false) { + setLabel(QObject::tr("DDNS settings")); + SetVertical(true); + Setting* trigger = HostDDnsEnable() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false,false,false); + settings->addChild(HostDDnshostname()); + settings->addChild(HostDDnslogin()); + settings->addChild(HostDDnspassword()); + + addTarget("0", new VerticalConfigurationGroup(false, false)); + addTarget("1", settings); + }; +}; + + + + +// static HostLineEdit *HostIP() +// { +// HostLineEdit *gc = new HostLineEdit("HostIP"); +// gc->setLabel(QObject::tr("Ip address")); +// gc->setValue("192.168.1.12"); +// gc->setHelpText(QObject::tr("IP address of the new installation")); +// return gc; +// }; +// +// static HostComboBox *HostNETMASK() +// { +// HostComboBox *gc = new HostComboBox("HostNETMASK"); +// gc->setLabel(QObject::tr("Netmask")); +// gc->addSelection("/0 0.0.0.0"); +// gc->addSelection("/1 128.0.0.0"); +// gc->addSelection("/2 192.0.0.0"); +// gc->addSelection("/3 224.0.0.0"); +// gc->addSelection("/4 240.0.0.0"); +// gc->addSelection("/5 248.0.0.0"); +// gc->addSelection("/6 252.0.0.0"); +// gc->addSelection("/7 254.0.0.0"); +// gc->addSelection("/8 255.0.0.0"); +// gc->addSelection("/9 255.128.0.0"); +// gc->addSelection("/10 255.192.0.0 "); +// gc->addSelection("/11 255.224.0.0"); +// gc->addSelection("/12 255.240.0.0"); +// gc->addSelection("/13 255.248.0.0"); +// gc->addSelection("/14 255.252.0.0"); +// gc->addSelection("/15 255.254.0.0"); +// gc->addSelection("/16 255.255.0.0"); +// gc->addSelection("/17 255.255.128.0"); +// gc->addSelection("/18 255.255.192.0"); +// gc->addSelection("/19 255.255.224.0"); +// gc->addSelection("/20 255.255.240.0"); +// gc->addSelection("/21 255.255.248.0"); +// gc->addSelection("/22 255.255.252.0"); +// gc->addSelection("/23 255.255.254.0"); +// gc->addSelection("/24 255.255.255.0"); +// gc->addSelection("/25 255.255.255.128"); +// gc->addSelection("/26 255.255.255.192"); +// gc->addSelection("/27 255.255.255.224"); +// gc->addSelection("/28 255.255.255.240"); +// gc->addSelection("/29 255.255.255.248"); +// gc->addSelection("/30 255.255.255.252"); +// gc->addSelection("/31 255.255.255.254"); +// gc->addSelection("/32 255.255.255.255"); +// gc->setHelpText(QObject::tr("Netmask")); +// gc->setValue(24); +// return gc; +// }; + + +QString findnet() +{ + +QString netdev=""; +//QString netdev="eth0 eth1 wlan0 wlan1 ath0 "; +//QString netdev="eth0 eth1"; +system("/sbin/ifconfig -a > /tmp/.netinfo"); +QString line; +QFile file("/tmp/.netinfo"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.contains("HWaddr")) + { + QString s = line.simplifyWhiteSpace(); + s = s.section( " ", 0, 0 ); // s == "surname" + netdev+=s; + netdev+=" "; + } + } + file.close(); + } +return netdev; +} + +QString findnet_wireless() +{ + +QString netdev=""; +//QString netdev="eth0 eth1 wlan0 wlan1 ath0 "; +system("/usr/sbin/iwconfig > /tmp/.netinfo_wireless"); +QString line; +QFile file("/tmp/.netinfo_wireless"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.contains("Nickname") || line.contains("ESSID")) + { + QString s = line.simplifyWhiteSpace(); + s = s.section( " ", 0, 0 ); // s == "surname" + netdev+=s; + netdev+=" "; + } + } + file.close(); + } +return netdev; +} + +static HostComboBox *HostNetDevice() +{ + HostComboBox *gc = new HostComboBox("HostNetDevice"); + gc->setLabel(QObject::tr("Device")); + QString foundnet=findnet(); + cout << foundnet << endl; + + if (foundnet.contains(hostparm.ThisHostnetOLD)) + { +// cout << "old setting is still active" << endl; +// cout << hostparm.ThisHostnetOLD << endl; + QString s = "HostActiveonboot"; + s+=hostparm.ThisHostnetOLD; + gContext->SaveSetting(s, hostparm.ThisHostnetActiveOLD ); + } + + if (foundnet.contains("eth0")) + gc->addSelection("eth0"); + + if (foundnet.contains("eth1")) + gc->addSelection("eth1"); + + if (foundnet.contains("wlan0")) + gc->addSelection("wlan0"); + + if (foundnet.contains("wlan1")) + gc->addSelection("wlan1"); + + if (foundnet.contains("ath0")) + gc->addSelection("ath0"); + + int findoldnetdevice=gc->findSelection(hostparm.ThisHostnetOLD); + gc->setValue(findoldnetdevice); + + + + gc->setHelpText(QObject::tr("Network interface")); + return gc; +}; + +// static HostLineEdit *HostGW() +// { +// HostLineEdit *gc = new HostLineEdit("HostGW"); +// gc->setLabel(QObject::tr("Gateway")); +// gc->setValue("192.168.1.1"); +// gc->setHelpText(QObject::tr("This is the default route")); +// return gc; +// }; +// +// static HostLineEdit *HostDNS() +// { +// HostLineEdit *gc = new HostLineEdit("HostDNS"); +// gc->setLabel(QObject::tr("Name server")); +// gc->setValue("192.168.1.1"); +// gc->setHelpText(QObject::tr("Name server")); +// return gc; +// }; + +static HostCheckBox *HostActiveonboot() +{ + HostCheckBox *gc = new HostCheckBox("HostActiveonboot"); + gc->setLabel(QObject::tr("Device is active on boot")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Network is started on boot")); + return gc; +}; + + +static HostCheckBox *HostServiceSamba() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceSamba"); + gc->setLabel(QObject::tr("Windows sharing")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Allow window machines to access recorded files")); + return gc; +}; + +static HostCheckBox *HostServiceSamba_write() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceSamba_write"); + gc->setLabel(QObject::tr("Readonly")); + gc->setValue(false); + gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked then remote clients will have write and delete abilites. ")); + return gc; +}; + + +static HostCheckBox *HostServiceSamba_writehome() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceSamba_writehome"); + gc->setLabel(QObject::tr("Readonly")); + gc->setValue(false); + gc->setHelpText(QObject::tr("If checked, all remote connections will be read only. If not checked then remote clients will have write and delete abilites. ")); + return gc; +}; + +static HostCheckBox *HostServiceSamba_media() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceSamba_media"); + gc->setLabel(QObject::tr("share media")); + gc->setValue(true); + gc->setHelpText(QObject::tr(" ")); + return gc; +}; + +static HostCheckBox *HostServiceSamba_home() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceSamba_home"); + gc->setLabel(QObject::tr("share home")); + gc->setValue(true); + gc->setHelpText(QObject::tr(" ")); + return gc; +}; + + + +static HostComboBox *HostServiceSamba_domain() +{ + HostComboBox *gc = new HostComboBox("HostServiceSamba_domain",true); + gc->setLabel(QObject::tr("Workgroup")); + gc->setHelpText(QObject::tr("Workgroup for smb share")); + gc->addSelection("WORKGROUP"); + QString currentitem; + QString line; + QFile file("/tmp/smbdomainlist"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.startsWith("domain")) + { + currentitem = line.section( " ", 1, 1 ); + if ( currentitem != "-" ) + gc->addSelection(currentitem); + } + } + file.close(); + } + gc->addSelection("type_workgroup_here"); + return gc; +}; + +static HostCheckBox *HostLircWait() +{ + HostCheckBox *gc = new HostCheckBox("HostLircWait"); + gc->setLabel(QObject::tr("Wait for lirc")); + gc->setValue(false); + gc->setHelpText(QObject::tr("System will wait for lirc before starting the UI ")); + return gc; +}; + + +static HostComboBox *HostEvrouterConfig() +{ + HostComboBox *gc = new HostComboBox("HostEvrouterConfig",true); + gc->setLabel(QObject::tr("Layout")); + gc->setHelpText(QObject::tr("Choose the keypad layout")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/evrouter"); + QDir evrouter(dirtxt); + //evrouter.setFilter(QDir::Dirs); + evrouter.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = evrouter.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + gc->addSelection("tinker"); + return gc; +}; + + +static HostCheckBox *HostServiceNFS() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceNFS"); + gc->setLabel(QObject::tr("Standard file sharing")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Allow all machines to access recorded files with nfs")); + return gc; +}; + + +static HostCheckBox *HostServiceMythWEB() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceMythWEB"); + gc->setLabel(QObject::tr("Enable Mythweb")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Allow scheduling using a web browser")); + return gc; +}; + +static HostCheckBox *HostServiceHobbitclient() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceHobbitclient"); + gc->setLabel(QObject::tr("Hobbit-client")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Report stats and other stuff to the master backend")); + return gc; +}; + +static GlobalCheckBox *GlobalServiceHobbitserver() +{ + GlobalCheckBox *gc = new GlobalCheckBox("GlobalServiceHobbitserver"); + gc->setLabel(QObject::tr("Hobbit-server")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Run the hobbit server to collect stats and other stuff")); + return gc; +}; + + +static HostCheckBox *HostServiceRRD() +{ + HostCheckBox *gc = new HostCheckBox("HostServiceRRD"); + gc->setLabel(QObject::tr("rrd_stats")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Collect stats and create graphs of various system resources.")); + return gc; +}; + +static HostCheckBox *HostUseDHCP() +{ + HostCheckBox *gc = new HostCheckBox("HostUseDHCP"); + gc->setLabel(QObject::tr("Static ip address")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used.")); + return gc; +}; + +static HostCheckBox *HostRunDHCP() +{ + HostCheckBox *gc = new HostCheckBox("HostRunDHCP"); + gc->setLabel(QObject::tr("DHCP server")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Check to run a dhcp server.")); + return gc; +}; + +static HostCheckBox *HostRunEvrouter() +{ + HostCheckBox *gc = new HostCheckBox("HostRunEvrouter"); + gc->setLabel(QObject::tr("Enable special keys")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Check if using evrouter")); + return gc; +}; + +static HostCheckBox *HostUsemythfrontend() +{ + HostCheckBox *gc = new HostCheckBox("HostUseMythWelcome"); + gc->setLabel(QObject::tr("Run MythWelcome")); + gc->setValue(false); + gc->setHelpText(QObject::tr("If this option is checked mythwelcome will be started, instead of the usual frontend")); + return gc; +}; + +static HostCheckBox *HostRunFrontend() +{ + HostCheckBox *gc = new HostCheckBox("HostRunFrontend"); + gc->setLabel(QObject::tr("Run the Frontend.")); + gc->setValue(true); + gc->setHelpText(QObject::tr("If this option is checked mythfrontend will also start")); + return gc; +}; + + +/* +static HostComboBox *HostTransmitproto() +{ + HostComboBox *gc = new HostComboBox("HostTransmitproto",false); + gc->setLabel(QObject::tr("Transmitter")); + gc->addSelection("none"); + gc->setValue(0); + gc->setHelpText(QObject::tr("Remote codes to control a cable box")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/transmit"); + QDir transmit(dirtxt); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; + + + +static HostComboBox *HostReceiverType() +{ + HostComboBox *gc = new HostComboBox("HostReceiverType"); + gc->setLabel(QObject::tr("Receiver")); + gc->addSelection("Default"); + gc->addSelection("Serial"); + gc->addSelection("Usb"); + gc->addSelection("Usb-imon"); + gc->addSelection("Hauppauge"); + gc->addSelection("tinker"); + gc->setHelpText(QObject::tr("The type of infrared receiver and transmitter being used.")); + gc->setValue("Default"); + return gc; +}; + +static HostComboBox *HostSerialPortlirc() +{ + HostComboBox *gc = new HostComboBox("HostSerialPortlirc",false); + gc->setLabel(QObject::tr("Serial Port")); + gc->addSelection("ttyS0"); + gc->addSelection("ttyS1"); + gc->addSelection("ttyS2"); + gc->addSelection("ttyS3"); + gc->setHelpText(QObject::tr("Serial port with the lirc receiver or transmitter")); + return gc; +} + +*/ + +static HostComboBox *HostMysqlserverip_listbox() +{ + HostComboBox *gc = new HostComboBox("HostMysqlServer",true); + gc->setLabel(QObject::tr("Mysql server")); + + QString currentitem; + QString prevline; + QString line; + QFile file("/tmp/mysqllist"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.startsWith(" address")) + { + currentitem = line.section( " ", 5, 5 ); + currentitem = currentitem.section( "[" , 1,1 ); + currentitem = currentitem.section( "]" , 0, 0 ); + + currentitem = currentitem + "\t" + prevline.section( " ",5,5 ); + //cout << currentitem << endl; + gc->addSelection(currentitem); + } + prevline = line; + } + file.close(); + //system ("rm -f /tmp/mysqllist"); + } + gc->addSelection("Manual: type ip here"); + gc->setHelpText(QObject::tr("")); + + QString NETBOOT = getenv("NETBOOT"); + NETBOOT=NETBOOT.stripWhiteSpace(); + if ( NETBOOT != "YES" ) + { + if ( ((gContext->GetSetting("HostaccesshostypeSystemtype")) == "0" )) + gc->setEnabled(false); + } + + return gc; +} + + + +static HostCheckBox *HostRemoteBackup() +{ + HostCheckBox *gc = new HostCheckBox("HostRemoteBackup"); + gc->setLabel(QObject::tr("Remote Backup")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Copy the resulting backup file to another location")); + return gc; +}; + + +static HostComboBox *HostRemoteBackupDir() +{ + QString tempItem; + HostComboBox *gc = new HostComboBox("HostRemoteBackupDir",true); + gc->setLabel(QObject::tr("dir or host" )); + gc->addSelection("dir:/localdir"); + MSqlQuery query(MSqlQuery::InitCon()); + + + query.prepare( "SELECT DISTINCT hostname from settings where hostname is not null and not (hostname=:HOSTNAME);"); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + if (query.exec() && query.isActive() && query.size() > 0) + { + while (query.next()) + { + tempItem = query.value(0).toString(); + gc->addSelection(tempItem); + } + } + + gc->setHelpText(QObject::tr("Host to copy backup file to. dir:/$localdir will copy to a local directory instead of a remote host ")); + + return gc; +}; + +class Backupsettings: public TriggeredConfigurationGroup { +public: + Backupsettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + SetVertical(false); + setLabel(QObject::tr("Backup Settings")); + Setting* trigger = HostRemoteBackup(); + addChild(trigger); + setTrigger(trigger); + ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false); + settings->addChild(HostRemoteBackupDir()); + + addTarget("0", new VerticalConfigurationGroup(false, false)); + addTarget("1", settings); + + }; +}; + + + +static HostCheckBox *HostPKG_MIRROR() +{ + HostCheckBox *gc = new HostCheckBox("HostPKG_MIRROR"); + gc->setLabel(QObject::tr("Use Local mirror")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Master Backend will be used as the repo source.")); + return gc; +}; + +static GlobalCheckBox *GlobalPKG_MIRROR() +{ + GlobalCheckBox *gc = new GlobalCheckBox("GlobalPKG_MIRROR"); + gc->setLabel(QObject::tr("Local mirror")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Keep a local copy of the packages. Allow other frontends to install from the local copy.")); + return gc; +}; + + + +static HostCheckBox *HostncidClient() +{ + HostCheckBox *gc = new HostCheckBox("HostncidClient"); + gc->setLabel(QObject::tr("Show Callerid")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Callerid popup, backend must be running the callerid program")); + return gc; +}; + +static HostCheckBox *HostncidDaemon() +{ + HostCheckBox *gc = new HostCheckBox("HostncidDaemon"); + gc->setLabel(QObject::tr("Run Callerid ")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Run Daemon to collect callerid info")); + return gc; +}; + +static HostComboBox *HostSerialPortncid() +{ + HostComboBox *gc = new HostComboBox("HostSerialPortncid",false); + gc->setLabel(QObject::tr("Serial Port")); + gc->addSelection("ttyS0"); + gc->addSelection("ttyS1"); + gc->addSelection("ttyS2"); + gc->addSelection("ttyS3"); + gc->setHelpText(QObject::tr("Serial port where callerid capable modem is connected")); + return gc; +} + +static HostCheckBox *Hostbootsplash() +{ + HostCheckBox *gc = new HostCheckBox("Hostbootsplash"); + gc->setLabel(QObject::tr("Enable bootsplash")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Covers up boot messages. ")); + return gc; +}; + +//-------------------------------------screensaver settings------------------- + +static HostComboBox *HostScreensaverType() +{ + HostComboBox *gc = new HostComboBox("HostScreensaverType"); + gc->setLabel(QObject::tr("Screensaver program")); + gc->addSelection("xscreensaver"); + gc->addSelection("gscreensaver"); + gc->addSelection("none"); + gc->addSelection("tinker"); + gc->setHelpText(QObject::tr("Screen saver program to use.")); + gc->setValue("none"); + return gc; +}; + +static HostSpinBox *HostScreensaverIdle() +{ + HostSpinBox *gc = new HostSpinBox("HostScreensaverIdle", 5, 60, 1, true); + gc->setLabel(QObject::tr("Idle time")); + gc->setValue(5); + gc->setHelpText(QObject::tr("Number of minutes to wait before starting screensaver." )); + return gc; +} + +static HostCheckBox *HostScreensaverBlank() +{ + HostCheckBox *gc = new HostCheckBox("HostScreensaverBlank"); + gc->setLabel(QObject::tr("Blank")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Blank the screen instead of using a screensaver")); + return gc; +}; + +static HostCheckBox *HostScreensaverRandom() +{ + HostCheckBox *gc = new HostCheckBox("HostScreensaverRandom"); + gc->setLabel(QObject::tr("Random")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Use a random screensaver")); + return gc; +}; + + + +static HostComboBox *HostGScreensaverTheme() +{ + HostComboBox *gc = new HostComboBox("HostGScreensaverTheme"); + gc->setLabel(QObject::tr("Screensaver")); + gc->setHelpText(QObject::tr("Screen saver program to use.")); + QString line; + QString dirtxt=MV_ROOT; + dirtxt.append("templates/gscreensavers"); + QFile file(dirtxt); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + gc->addSelection(line); + } + file.close(); + } + return gc; +}; + +static HostComboBox *HostXScreensaverTheme() +{ + HostComboBox *gc = new HostComboBox("HostXScreensaverTheme"); + gc->setLabel(QObject::tr("Screensaver")); + gc->setHelpText(QObject::tr("Screen saver to display.")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/xscreensavers"); + //read in from a file. + QString line; + QFile file(dirtxt); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + gc->addSelection(line); + } + file.close(); + } + return gc; +}; + +class Screensaverhostsettings: public TriggeredConfigurationGroup { +public: + Screensaverhostsettings(): + + TriggeredConfigurationGroup() { + SetVertical(true); + setLabel(QObject::tr("Screensaver settings (1/1)")); + Setting* trigger = HostScreensaverType() ; + addChild(trigger); + setTrigger(trigger); + ConfigurationGroup* screensaversettings = new GridConfigurationGroup(2); + screensaversettings->addChild(HostScreensaverBlank()); + screensaversettings->addChild(HostScreensaverRandom()); + + ConfigurationGroup* xscreensaversettings = new VerticalConfigurationGroup(); + xscreensaversettings->addChild(screensaversettings); + xscreensaversettings->addChild(HostScreensaverIdle()); + xscreensaversettings->addChild(HostXScreensaverTheme()); + + + ConfigurationGroup* gscreensaversettings = new VerticalConfigurationGroup(); + gscreensaversettings->addChild(screensaversettings); + gscreensaversettings->addChild(HostScreensaverIdle()); + gscreensaversettings->addChild(HostGScreensaverTheme()); + + + + addTarget("tinker", new VerticalConfigurationGroup(false, false)); + addTarget("none", new VerticalConfigurationGroup(false, false)); + addTarget("gscreensaver", gscreensaversettings); + addTarget("xscreensaver", xscreensaversettings); + }; +}; + + + + +//-------------------------------------access setting---------------------- + +static HostCheckBox *Hostaccessnetwork() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccessnetwork"); + gc->setLabel(QObject::tr("Network ")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Control access to network screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccesshostype() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccesshostype"); + gc->setLabel(QObject::tr("hostype ")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to hostype screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *HostaccesshostypeSystemtype() +{ + HostCheckBox *gc = new HostCheckBox("HostaccesshostypeSystemtype"); + gc->setLabel(QObject::tr("Change hostype")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Ability to change sql server and system type. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccessmisc() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccessmisc"); + gc->setLabel(QObject::tr("misc ")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to misc screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccesssleep() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccesssleep"); + gc->setLabel(QObject::tr("sleep ")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to sleep screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccessadvanced() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccessadvanced"); + gc->setLabel(QObject::tr("advanced ")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to advanced screen. Checked means the screen is enabled. ")); + return gc; +}; + +static HostCheckBox *HostaccessadvancedX() +{ + HostCheckBox *gc = new HostCheckBox("HostaccessadvancedX"); + gc->setLabel(QObject::tr("advancedX ")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to advancedX screen. Checked means the screen is enabled. ")); + return gc; +}; +static HostCheckBox *Hostaccesssound() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccesssound"); + gc->setLabel(QObject::tr("sound ")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to sound screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccessplugins() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccessplugins"); + gc->setLabel(QObject::tr("plugins")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to plugin screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccessuser() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccessuser"); + gc->setLabel(QObject::tr("User")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Control access to the user managment screen. Checked means the screen is enabled.")); + return gc; +}; + +static HostCheckBox *Hostaccesswebuser() +{ + HostCheckBox *gc = new HostCheckBox("Hostaccesswebuser"); + gc->setLabel(QObject::tr("Web password")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Control access to the web password screen. Checked means the screen is enabled.")); + return gc; +}; + + +class ACCESShostsettings: public TriggeredConfigurationGroup { +public: + ACCESShostsettings(): + TriggeredConfigurationGroup(false,false,false,false) { + SetVertical(false); + Setting* trigger = Hostaccesshostype () ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false,false,false); + //settings->addChild(HostServiceSamba()); + settings->addChild(HostaccesshostypeSystemtype()); + + + addTarget("0", new VerticalConfigurationGroup(false, false)); + addTarget("1", settings); + }; +}; + + +//---------------------------------- PLUGINS ---------------------- + +static HostCheckBox *Hostpluginmytharchive() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmytharchive"); + gc->setLabel(QObject::tr("mytharchive")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mytharchive")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythbrowser() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythbrowser"); + gc->setLabel(QObject::tr("mythbrowser")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mythbrowser")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythcontrols() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythcontrols"); + gc->setLabel(QObject::tr("mythcontrols")); + gc->setValue(true); + gc->setHelpText(QObject::tr("check to enable mythcontrols")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythflix() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythflix"); + gc->setLabel(QObject::tr("mythflix")); + gc->setValue(true); + gc->setHelpText(QObject::tr("check to enable mythflix")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythgallery() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythgallery"); + gc->setLabel(QObject::tr("mythgallery")); + gc->setValue(true); + gc->setHelpText(QObject::tr("check to enable mythgallery")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythgame() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythgame"); + gc->setLabel(QObject::tr("mythgame")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mythgame")); + return gc; +}; + +static HostCheckBox *HostpluginmythgameZsnes() +{ + HostCheckBox *gc = new HostCheckBox("HostpluginmythgameZsnes"); + gc->setLabel(QObject::tr("zsnes")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Zsnes, super nintendo emulator")); + return gc; +}; + +static HostCheckBox *HostpluginmythgameFceu() +{ + HostCheckBox *gc = new HostCheckBox("HostpluginmythgameFceu"); + gc->setLabel(QObject::tr("fceu")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Fceu, nintendo emulator")); + return gc; +}; + +static HostCheckBox *HostpluginmythgameMame() +{ + HostCheckBox *gc = new HostCheckBox("HostpluginmythgameMame"); + gc->setLabel(QObject::tr("mame")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Mame, Multiple Arcade Machine Emulator.")); + return gc; +}; + +static HostCheckBox *HostpluginmythgameMednafen() +{ + HostCheckBox *gc = new HostCheckBox("HostpluginmythgameMednafen"); + gc->setLabel(QObject::tr("Mednafen")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Mednafen is a portable, utilizing OpenGL and SDL, command-line driven multi-system emulator with many advanced features.")); + return gc; +}; + +static HostCheckBox *HostpluginmythgameROMDB() +{ + HostCheckBox *gc = new HostCheckBox("HostpluginmythgameROMDB"); + gc->setLabel(QObject::tr("Romdb")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Table used my MythGames to store information about games. If you are into games, this is recommended.")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythmovietime() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythmovietime"); + gc->setLabel(QObject::tr("mythmovietime")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Check to enable mythmovietime")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythmusic() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythmusic"); + gc->setLabel(QObject::tr("mythmusic")); + gc->setValue(true); + gc->setHelpText(QObject::tr("check to enable mythmusic")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythnews() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythnews"); + gc->setLabel(QObject::tr("mythnews")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mythnews")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythphone() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythphone"); + gc->setLabel(QObject::tr("mythphone")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mythphone")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythsmolt() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythsmolt"); + gc->setLabel(QObject::tr("mythsmolt")); + gc->setValue(true); + gc->setHelpText(QObject::tr("check to enable mythsmolt")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythvideo() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythvideo"); + gc->setLabel(QObject::tr("mythvideo")); + gc->setValue(true); + gc->setHelpText(QObject::tr("check to enable mythvideo")); + return gc; +}; + +static HostCheckBox *Hostpluginmythvideo_dvdcss() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythvideo_dvdcss"); + gc->setLabel(QObject::tr("dvdcss")); + gc->setValue(false); + gc->setHelpText(QObject::tr("libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption.")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythvodka() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythvodka"); + gc->setLabel(QObject::tr("mythvodka")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Myth Video On Demand Killer App.")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythstream() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythstream"); + gc->setLabel(QObject::tr("mythstream")); + gc->setValue(false); + gc->setHelpText(QObject::tr("MythStream is an unofficial MythTv plugin that plays Internet audio and video streams.")); + return gc; +}; + +static HostCheckBox *Hostpluginmythappletrailers() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythappletrailers"); + gc->setLabel(QObject::tr("MythAppleTrailers")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Used to stream trailer's from Apple's website.")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythweather() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythweather"); + gc->setLabel(QObject::tr("mythweather")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mythweather")); + return gc; +}; + + +static HostCheckBox *HostMiro() +{ + HostCheckBox *gc = new HostCheckBox("HostMiro"); + gc->setLabel(QObject::tr("Miro")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Miro is a popular, free, and open internet TV application. It brings video channels from thousands of sources and has more free HD than any otherplatform.")); + return gc; +}; + + +static HostCheckBox *HostXine() +{ + HostCheckBox *gc = new HostCheckBox("HostXine"); + gc->setLabel(QObject::tr("Xine")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Xine is a free multimedia player")); + return gc; +}; + + +static HostCheckBox *Hostwebmin() +{ + HostCheckBox *gc = new HostCheckBox("Hostwebmin"); + gc->setLabel(QObject::tr("Webmin")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Webmin is a web-based interface for system administration for Unix. Once installed, you can access it at https://ip.of.back.end:10000 using your root password.")); + return gc; +}; + +static HostCheckBox *Hostfuppes() +{ + HostCheckBox *gc = new HostCheckBox("Hostfuppes"); + gc->setLabel(QObject::tr("Fuppes")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Upnp server")); + return gc; +}; + +static HostCheckBox *Hostfoldingathome() +{ + HostCheckBox *gc = new HostCheckBox("Hostfoldingathome"); + gc->setLabel(QObject::tr("Folding@home")); + gc->setValue(false); + gc->setHelpText(QObject::tr("A distributed computing project which studies protein folding, misfolding, aggregation, and related diseases.")); + return gc; +}; + +static HostComboBox *Hostfoldingusername() +{ + // If there is an old R5.5 style folding directory /myth/folding@home, attempt + // to retrieve the old username. + + FILE *username_pipe; + username_pipe = + popen ( + "grep username= /myth/folding@home/client.cfg 2> /dev/null | " + "sed 's/username=//g'", "r"); + + if (username_pipe) + { + char username[200]; + if (fgets (username, sizeof (username), username_pipe)) + { + char *new_line; + username[sizeof(username)-1]=0; + if ((new_line = strchr (username, '\n'))) + new_line[0] = 0; + + cout << "found old username " << username << endl; + + gContext->SetSetting("Hostfoldingusername", username); + gContext->SaveSetting("Hostfoldingusername", username); + } + pclose (username_pipe); + } + + HostComboBox *gc = new HostComboBox("Hostfoldingusername",true); + gc->setLabel(QObject::tr("Folding Username")); + gc->setValue(""); + + gc->setHelpText(QObject::tr("The username associated to the work-units you return.")); + return gc; +}; + +static HostComboBox *Hostfoldingworksize() +{ + HostComboBox *gc = new HostComboBox("Hostfoldingworksize"); + gc->setLabel(QObject::tr("Work Packet Size")); + gc->addSelection("Big", "big"); + gc->addSelection("Normal", "normal"); + gc->addSelection("Small", "small"); + gc->setHelpText(QObject::tr("Acceptable size of work assignment and work result packets (bigger units may have large memory demands).")); + return gc; +}; + +static HostCheckBox *HostXscreensaver() +{ + HostCheckBox *gc = new HostCheckBox("HostXscreensaver"); + gc->setLabel(QObject::tr("Screensaver")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Run screensaver after 10 minutes of inactivity.")); + return gc; +}; + + +static HostCheckBox *Hostpluginmythzoneminder() +{ + HostCheckBox *gc = new HostCheckBox("Hostpluginmythzoneminder"); + gc->setLabel(QObject::tr("mythzoneminder")); + gc->setValue(false); + gc->setHelpText(QObject::tr("check to enable mythzoneminder")); + return gc; +}; + + +// -------------End plugins-------------------------------- + + + +class NCIDsettings: public TriggeredConfigurationGroup { +public: + NCIDsettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + SetVertical(false); + Setting* trigger = HostncidDaemon() ; + addChild(trigger); + setTrigger(trigger); + ConfigurationGroup* settings = new HorizontalConfigurationGroup(false,false); + settings->addChild(HostSerialPortncid()); + addTarget("0", new HorizontalConfigurationGroup(false, false)); + addTarget("1", settings); + }; +}; + +class SAMBAsettings: public TriggeredConfigurationGroup { +public: + SAMBAsettings(): + TriggeredConfigurationGroup(false, true, true, true,false, false, true, true) { + SetVertical(false); + Setting* trigger = HostServiceSamba() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* settings = new GridConfigurationGroup(2,false,false); + //settings->addChild(HostServiceSamba()); + settings->addChild(HostServiceSamba_media()); + settings->addChild(HostServiceSamba_write()); + settings->addChild(HostServiceSamba_home()); + settings->addChild(HostServiceSamba_writehome()); + settings->addChild(HostServiceSamba_domain()); + + addTarget("0", new GridConfigurationGroup(2,false, false)); + addTarget("1", settings); + }; +}; + + + +/* +class LIRCsettings: public TriggeredConfigurationGroup { +public: + LIRCsettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + //SetVertical(false); + setLabel(QObject::tr("Misc Settings")); + Setting* trigger = HostReceiverType() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* settings = new GridConfigurationGroup(2,true); + settings->addChild(HostLircWait()); + settings->addChild(HostSerialPortlirc()); + + ConfigurationGroup* settings2 = new VerticalConfigurationGroup(true,true); + settings2->addChild(HostLircWait()); + + addTarget("Default", settings2); + addTarget("Serial", settings); + addTarget("Usb", settings2); + addTarget("Usb-imon", settings2 ); + addTarget("Hauppauge",settings2); + addTarget("tinker", new VerticalConfigurationGroup(false, false)); + }; +};*/ + +class Evroutersettings: public TriggeredConfigurationGroup { + public: + Evroutersettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + //SetVertical(false); + setLabel(QObject::tr("Evrouter config")); + Setting* trigger = HostRunEvrouter() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false,false); + settings->addChild(HostEvrouterConfig()); + + addTarget("0", new VerticalConfigurationGroup(false, false)); + addTarget("1", settings); + }; +}; + +class MythGamesettings: public TriggeredConfigurationGroup { + public: + MythGamesettings(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + //SetVertical(false); + //setLabel(QObject::tr("Evrouter config")); + Setting* trigger = Hostpluginmythgame() ; + addChild(trigger); + setTrigger(trigger); + + ConfigurationGroup* settings = new GridConfigurationGroup(3,true,true); + settings->addChild(HostpluginmythgameZsnes()); + settings->addChild(HostpluginmythgameFceu()); + settings->addChild(HostpluginmythgameMame()); + settings->addChild(HostpluginmythgameMednafen()); + settings->addChild(HostpluginmythgameROMDB()); + + + addTarget("0", new VerticalConfigurationGroup(false, false)); + addTarget("1", settings); + }; +}; + + +//____________________________________________________________________________ +class eth0_settings: public TriggeredConfigurationGroup { +public: + eth0_settings(): + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + + HostComboBox *HOSTESSIDeth0 = new HostComboBox("HOSTESSIDeth0",true); + HOSTESSIDeth0->setLabel(QObject::tr("ESSID")); + HOSTESSIDeth0->addSelection("MythVantage"); + HOSTESSIDeth0->addSelection("home_lan"); + HOSTESSIDeth0->addSelection("type_it_here"); + HOSTESSIDeth0->setHelpText(QObject::tr("ESSID")); + addChild(HOSTESSIDeth0); + + HostComboBox *HostUseEncryptioneth0 = new HostComboBox("HostUseEncryptioneth0"); + HostUseEncryptioneth0->setLabel(QObject::tr("Encryption")); + HostUseEncryptioneth0->setHelpText(QObject::tr("WPA uses a shared key phrase this is the most secure. For WEP use the generated key, this type of encryption is not recommended.")); + HostUseEncryptioneth0->addSelection("none"); + HostUseEncryptioneth0->addSelection("WPA"); + HostUseEncryptioneth0->addSelection("WEP"); + + Setting* HostUseEncryption = HostUseEncryptioneth0; + addChild(HostUseEncryption); + setTrigger(HostUseEncryption); + + HostLineEdit *Hostkeyeth0 = new HostLineEdit("Hostkeyeth0"); + Hostkeyeth0->setLabel(QObject::tr("key")); + Hostkeyeth0->setHelpText(QObject::tr("Key to use for encryption")); + + ConfigurationGroup* settings = new GridConfigurationGroup(1,false); + settings->addChild(Hostkeyeth0); + addTarget("none", new GridConfigurationGroup(1,false)); + addTarget("WPA", settings); + addTarget("WEP", settings); + }; +}; + + +NetworkSettingseth0::NetworkSettingseth0(): + TriggeredConfigurationGroup(false,false,false,false) { + setLabel(QObject::tr("Network Settings")); + HostLineEdit *HostIPeth0 = new HostLineEdit("HostIPeth0"); + HostIPeth0->setLabel(QObject::tr("Ip address")); + HostIPeth0->setValue("192.168.1.12"); + HostIPeth0->setHelpText(QObject::tr("IP address of the new installation")); + + HostComboBox *HostNETMASKeth0 = new HostComboBox("HostNETMASKeth0"); + HostNETMASKeth0->setLabel(QObject::tr("Netmask")); + HostNETMASKeth0->addSelection("/0 0.0.0.0"); + HostNETMASKeth0->addSelection("/1 128.0.0.0"); + HostNETMASKeth0->addSelection("/2 192.0.0.0"); + HostNETMASKeth0->addSelection("/3 224.0.0.0"); + HostNETMASKeth0->addSelection("/4 240.0.0.0"); + HostNETMASKeth0->addSelection("/5 248.0.0.0"); + HostNETMASKeth0->addSelection("/6 252.0.0.0"); + HostNETMASKeth0->addSelection("/7 254.0.0.0"); + HostNETMASKeth0->addSelection("/8 255.0.0.0"); + HostNETMASKeth0->addSelection("/9 255.128.0.0"); + HostNETMASKeth0->addSelection("/10 255.192.0.0 "); + HostNETMASKeth0->addSelection("/11 255.224.0.0"); + HostNETMASKeth0->addSelection("/12 255.240.0.0"); + HostNETMASKeth0->addSelection("/13 255.248.0.0"); + HostNETMASKeth0->addSelection("/14 255.252.0.0"); + HostNETMASKeth0->addSelection("/15 255.254.0.0"); + HostNETMASKeth0->addSelection("/16 255.255.0.0"); + HostNETMASKeth0->addSelection("/17 255.255.128.0"); + HostNETMASKeth0->addSelection("/18 255.255.192.0"); + HostNETMASKeth0->addSelection("/19 255.255.224.0"); + HostNETMASKeth0->addSelection("/20 255.255.240.0"); + HostNETMASKeth0->addSelection("/21 255.255.248.0"); + HostNETMASKeth0->addSelection("/22 255.255.252.0"); + HostNETMASKeth0->addSelection("/23 255.255.254.0"); + HostNETMASKeth0->addSelection("/24 255.255.255.0"); + HostNETMASKeth0->addSelection("/25 255.255.255.128"); + HostNETMASKeth0->addSelection("/26 255.255.255.192"); + HostNETMASKeth0->addSelection("/27 255.255.255.224"); + HostNETMASKeth0->addSelection("/28 255.255.255.240"); + HostNETMASKeth0->addSelection("/29 255.255.255.248"); + HostNETMASKeth0->addSelection("/30 255.255.255.252"); + HostNETMASKeth0->addSelection("/31 255.255.255.254"); + HostNETMASKeth0->addSelection("/32 255.255.255.255"); + HostNETMASKeth0->setHelpText(QObject::tr("Netmask")); + HostNETMASKeth0->setValue(24); + + HostLineEdit *HostGWeth0 = new HostLineEdit("HostGWeth0"); + HostGWeth0->setLabel(QObject::tr("Gateway")); + HostGWeth0->setValue("192.168.1.1"); + HostGWeth0->setHelpText(QObject::tr("This is the default route")); + + + HostLineEdit *HostDNSeth0 = new HostLineEdit("HostDNSeth0"); + HostDNSeth0->setLabel(QObject::tr("Name server")); + HostDNSeth0->setValue("192.168.1.1"); + HostDNSeth0->setHelpText(QObject::tr("Name server")); + + + HostCheckBox *HostActiveonbooteth0 = new HostCheckBox("HostActiveonbooteth0"); + HostActiveonbooteth0->setLabel(QObject::tr("Active")); + HostActiveonbooteth0->setValue(true); + HostActiveonbooteth0->setHelpText(QObject::tr("Network is started on boot")); + + HostDefaulteth0 = new HostCheckBox("HostDefaulteth0"); + HostDefaulteth0->setLabel(QObject::tr("Default")); + HostDefaulteth0->setValue(true); + HostDefaulteth0->setHelpText(QObject::tr("Will be used as the primary interface")); + connect(HostDefaulteth0, SIGNAL(valueChanged(bool)), this, SLOT(eth0_disable_others())); + + HostCheckBox *HostUseDHCPeth0 = new HostCheckBox("HostUseDHCPeth0"); + HostUseDHCPeth0 ->setLabel(QObject::tr("Static ip address")); + HostUseDHCPeth0 ->setValue(false); + HostUseDHCPeth0 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used.")); + + wirelessbuttoneth0 = new TransButtonSetting(); + wirelessbuttoneth0->setLabel(tr("Wireless Settings")); + connect(wirelessbuttoneth0, SIGNAL(pressed()), this, SLOT(eth0_wireless_settings())); + + ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, true, true); + settings1->addChild(HostActiveonbooteth0); + settings1->addChild(HostDefaulteth0); + settings1-> addChild(wirelessbuttoneth0); + addChild(settings1); + + + Setting* dhcpEnabled = HostUseDHCPeth0; + addChild(dhcpEnabled); + setTrigger(dhcpEnabled); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false, false, false); + settings->addChild(HostIPeth0); + settings->addChild(HostNETMASKeth0); + settings->addChild(HostGWeth0); + settings->addChild(HostDNSeth0); + + addTarget("0", new VerticalConfigurationGroup(false,false,false,false)); + addTarget("1", settings); + }; + +eth0options::eth0options() +{ + + VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false); + rec->setLabel(QObject::tr("Wireless configuration for eth0")); + //rec->setUseLabel(true); + rec->addChild(new eth0_settings); + addChild(rec); +} + +void NetworkSettingseth0::eth0_disable_others() +{ + QString my_current_value; + my_current_value = HostDefaulteth0->getValue(); + if ( my_current_value == "1" ) + { + cout <<"ETH0: set other defaults buttons to off"<setValue(0); +} +void NetworkSettingseth0::eth0_wireless_settings(void) +{ + //cout <<"button pressed for eth0"<setEnabled(false); +} + +class eth1_settings: public TriggeredConfigurationGroup { +public: + eth1_settings(): + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + + HostComboBox *HOSTESSIDeth1 = new HostComboBox("HOSTESSIDeth1",true); + HOSTESSIDeth1->setLabel(QObject::tr("ESSID")); + HOSTESSIDeth1->addSelection("MythVantage"); + HOSTESSIDeth1->addSelection("home_lan"); + HOSTESSIDeth1->addSelection("type_it_here"); + HOSTESSIDeth1->setHelpText(QObject::tr("ESSID")); + addChild(HOSTESSIDeth1); + HostComboBox *HostUseEncryptioneth0 = new HostComboBox("HostUseEncryptioneth0"); + HostUseEncryptioneth0->setLabel(QObject::tr("Encryption")); + HostUseEncryptioneth0->setHelpText(QObject::tr("WPA, WEP, none")); + HostUseEncryptioneth0->addSelection("none"); + HostUseEncryptioneth0->addSelection("WPA"); + HostUseEncryptioneth0->addSelection("WEP"); + + Setting* HostUseEncryption = HostUseEncryptioneth0; + addChild(HostUseEncryption); + setTrigger(HostUseEncryption); + + HostLineEdit *Hostkeyeth0 = new HostLineEdit("Hostkeyeth0"); + Hostkeyeth0->setLabel(QObject::tr("key")); + Hostkeyeth0->setHelpText(QObject::tr("Key to use for encryption")); + + ConfigurationGroup* settings = new GridConfigurationGroup(1,false); + settings->addChild(Hostkeyeth0); + addTarget("none", new GridConfigurationGroup(1,false)); + addTarget("WPA", settings); + addTarget("WEP", settings); + //- + + + }; +}; + + +NetworkSettingseth1::NetworkSettingseth1(): + TriggeredConfigurationGroup(false,false,false,false) { + setLabel(QObject::tr("Network Settings")); + HostLineEdit *HostIPeth1 = new HostLineEdit("HostIPeth1"); + HostIPeth1->setLabel(QObject::tr("Ip address")); + HostIPeth1->setValue("192.168.1.12"); + HostIPeth1->setHelpText(QObject::tr("IP address of the new installation")); + + HostComboBox *HostNETMASKeth1 = new HostComboBox("HostNETMASKeth1"); + HostNETMASKeth1->setLabel(QObject::tr("Netmask")); + HostNETMASKeth1->addSelection("/0 0.0.0.0"); + HostNETMASKeth1->addSelection("/1 128.0.0.0"); + HostNETMASKeth1->addSelection("/2 192.0.0.0"); + HostNETMASKeth1->addSelection("/3 224.0.0.0"); + HostNETMASKeth1->addSelection("/4 240.0.0.0"); + HostNETMASKeth1->addSelection("/5 248.0.0.0"); + HostNETMASKeth1->addSelection("/6 252.0.0.0"); + HostNETMASKeth1->addSelection("/7 254.0.0.0"); + HostNETMASKeth1->addSelection("/8 255.0.0.0"); + HostNETMASKeth1->addSelection("/9 255.128.0.0"); + HostNETMASKeth1->addSelection("/10 255.192.0.0 "); + HostNETMASKeth1->addSelection("/11 255.224.0.0"); + HostNETMASKeth1->addSelection("/12 255.240.0.0"); + HostNETMASKeth1->addSelection("/13 255.248.0.0"); + HostNETMASKeth1->addSelection("/14 255.252.0.0"); + HostNETMASKeth1->addSelection("/15 255.254.0.0"); + HostNETMASKeth1->addSelection("/16 255.255.0.0"); + HostNETMASKeth1->addSelection("/17 255.255.128.0"); + HostNETMASKeth1->addSelection("/18 255.255.192.0"); + HostNETMASKeth1->addSelection("/19 255.255.224.0"); + HostNETMASKeth1->addSelection("/20 255.255.240.0"); + HostNETMASKeth1->addSelection("/21 255.255.248.0"); + HostNETMASKeth1->addSelection("/22 255.255.252.0"); + HostNETMASKeth1->addSelection("/23 255.255.254.0"); + HostNETMASKeth1->addSelection("/24 255.255.255.0"); + HostNETMASKeth1->addSelection("/25 255.255.255.128"); + HostNETMASKeth1->addSelection("/26 255.255.255.192"); + HostNETMASKeth1->addSelection("/27 255.255.255.224"); + HostNETMASKeth1->addSelection("/28 255.255.255.240"); + HostNETMASKeth1->addSelection("/29 255.255.255.248"); + HostNETMASKeth1->addSelection("/30 255.255.255.252"); + HostNETMASKeth1->addSelection("/31 255.255.255.254"); + HostNETMASKeth1->addSelection("/32 255.255.255.255"); + HostNETMASKeth1->setHelpText(QObject::tr("Netmask")); + HostNETMASKeth1->setValue(24); + + HostLineEdit *HostGWeth1 = new HostLineEdit("HostGWeth1"); + HostGWeth1->setLabel(QObject::tr("Gateway")); + HostGWeth1->setValue("192.168.1.1"); + HostGWeth1->setHelpText(QObject::tr("This is the default route")); + + + HostLineEdit *HostDNSeth1 = new HostLineEdit("HostDNSeth1"); + HostDNSeth1->setLabel(QObject::tr("Name server")); + HostDNSeth1->setValue("192.168.1.1"); + HostDNSeth1->setHelpText(QObject::tr("Name server")); + + + HostCheckBox *HostActiveonbooteth1 = new HostCheckBox("HostActiveonbooteth1"); + HostActiveonbooteth1->setLabel(QObject::tr("Active")); + HostActiveonbooteth1->setValue(false); + HostActiveonbooteth1->setHelpText(QObject::tr("Network is started on boot")); + + HostDefaulteth1 = new HostCheckBox("HostDefaulteth1"); + HostDefaulteth1->setLabel(QObject::tr("Default")); + HostDefaulteth1->setValue(false); + HostDefaulteth1->setHelpText(QObject::tr("Will be used as the primary interface")); + connect(HostDefaulteth1, SIGNAL(valueChanged(bool)), this, SLOT(eth1_disable_others())); + + HostCheckBox *HostUseDHCPeth1 = new HostCheckBox("HostUseDHCPeth1"); + HostUseDHCPeth1 ->setLabel(QObject::tr("Static ip address")); + HostUseDHCPeth1 ->setValue(false); + HostUseDHCPeth1 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used.")); + + wirelessbuttoneth1 = new TransButtonSetting(); + wirelessbuttoneth1->setLabel(tr("Wireless Settings")); + connect(wirelessbuttoneth1, SIGNAL(pressed()), this, SLOT(eth1_wireless_settings())); + + ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false,false); + settings1->addChild(HostActiveonbooteth1); + settings1->addChild(HostDefaulteth1); + settings1-> addChild(wirelessbuttoneth1); + + addChild(settings1); + + Setting* dhcpEnabled = HostUseDHCPeth1; + addChild(dhcpEnabled); + setTrigger(dhcpEnabled); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false); + settings->addChild(HostIPeth1); + settings->addChild(HostNETMASKeth1); + settings->addChild(HostGWeth1); + settings->addChild(HostDNSeth1); + + addTarget("0", new VerticalConfigurationGroup(false,false,false,false)); + addTarget("1", settings); +}; +eth1options::eth1options() +{ + + VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false); + rec->setLabel(QObject::tr("Wireless configuration for eth1")); + //rec->setUseLabel(true); + rec->addChild(new eth1_settings); + addChild(rec); +} + +void NetworkSettingseth1::eth1_disable_others() +{ + QString my_current_value; + my_current_value = HostDefaulteth1->getValue(); + if ( my_current_value == "1" ) + { + cout <<"ETH1: set other defaults buttons to off"<setValue(0); +} + +void NetworkSettingseth1::eth1_wireless_settings(void) +{ + //cout <<"button pressed for eth1"<setEnabled(false); +} + + +class wlan0_settings: public TriggeredConfigurationGroup { +public: + wlan0_settings(): + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + + HostComboBox *HOSTESSIDwlan0 = new HostComboBox("HOSTESSIDwlan0",true); + HOSTESSIDwlan0->setLabel(QObject::tr("ESSID")); + HOSTESSIDwlan0->addSelection("MythVantage"); + HOSTESSIDwlan0->addSelection("home_lan"); + HOSTESSIDwlan0->addSelection("type_it_here"); + HOSTESSIDwlan0->setHelpText(QObject::tr("ESSID")); + addChild(HOSTESSIDwlan0); + HostComboBox *HostUseEncryptionwlan0 = new HostComboBox("HostUseEncryptionwlan0"); + HostUseEncryptionwlan0->setLabel(QObject::tr("Encryption")); + HostUseEncryptionwlan0->setHelpText(QObject::tr("WPA, WEP, none")); + HostUseEncryptionwlan0->addSelection("none"); + HostUseEncryptionwlan0->addSelection("WPA"); + HostUseEncryptionwlan0->addSelection("WEP"); + + Setting* HostUseEncryption = HostUseEncryptionwlan0; + addChild(HostUseEncryption); + setTrigger(HostUseEncryption); + + HostLineEdit *Hostkeywlan0 = new HostLineEdit("Hostkeywlan0"); + Hostkeywlan0->setLabel(QObject::tr("key")); + Hostkeywlan0->setHelpText(QObject::tr("Key to use for encryption")); + + ConfigurationGroup* settings = new GridConfigurationGroup(1,false); + settings->addChild(Hostkeywlan0); + addTarget("none", new GridConfigurationGroup(1,false)); + addTarget("WPA", settings); + addTarget("WEP", settings); + //- + }; +}; + +NetworkSettingswlan0::NetworkSettingswlan0(): + TriggeredConfigurationGroup(false,false,false,false) { + setLabel(QObject::tr("Network Settings")); + + HostIPwlan0 = new HostLineEdit("HostIPwlan0"); + HostIPwlan0->setLabel(QObject::tr("Ip address")); + HostIPwlan0->setValue("192.168.1.12"); + HostIPwlan0->setHelpText(QObject::tr("IP address of the new installation")); + + HostNETMASKwlan0 = new HostComboBox("HostNETMASKwlan0"); + HostNETMASKwlan0->setLabel(QObject::tr("Netmask")); + HostNETMASKwlan0->addSelection("/0 0.0.0.0"); + HostNETMASKwlan0->addSelection("/1 128.0.0.0"); + HostNETMASKwlan0->addSelection("/2 192.0.0.0"); + HostNETMASKwlan0->addSelection("/3 224.0.0.0"); + HostNETMASKwlan0->addSelection("/4 240.0.0.0"); + HostNETMASKwlan0->addSelection("/5 248.0.0.0"); + HostNETMASKwlan0->addSelection("/6 252.0.0.0"); + HostNETMASKwlan0->addSelection("/7 254.0.0.0"); + HostNETMASKwlan0->addSelection("/8 255.0.0.0"); + HostNETMASKwlan0->addSelection("/9 255.128.0.0"); + HostNETMASKwlan0->addSelection("/10 255.192.0.0 "); + HostNETMASKwlan0->addSelection("/11 255.224.0.0"); + HostNETMASKwlan0->addSelection("/12 255.240.0.0"); + HostNETMASKwlan0->addSelection("/13 255.248.0.0"); + HostNETMASKwlan0->addSelection("/14 255.252.0.0"); + HostNETMASKwlan0->addSelection("/15 255.254.0.0"); + HostNETMASKwlan0->addSelection("/16 255.255.0.0"); + HostNETMASKwlan0->addSelection("/17 255.255.128.0"); + HostNETMASKwlan0->addSelection("/18 255.255.192.0"); + HostNETMASKwlan0->addSelection("/19 255.255.224.0"); + HostNETMASKwlan0->addSelection("/20 255.255.240.0"); + HostNETMASKwlan0->addSelection("/21 255.255.248.0"); + HostNETMASKwlan0->addSelection("/22 255.255.252.0"); + HostNETMASKwlan0->addSelection("/23 255.255.254.0"); + HostNETMASKwlan0->addSelection("/24 255.255.255.0"); + HostNETMASKwlan0->addSelection("/25 255.255.255.128"); + HostNETMASKwlan0->addSelection("/26 255.255.255.192"); + HostNETMASKwlan0->addSelection("/27 255.255.255.224"); + HostNETMASKwlan0->addSelection("/28 255.255.255.240"); + HostNETMASKwlan0->addSelection("/29 255.255.255.248"); + HostNETMASKwlan0->addSelection("/30 255.255.255.252"); + HostNETMASKwlan0->addSelection("/31 255.255.255.254"); + HostNETMASKwlan0->addSelection("/32 255.255.255.255"); + HostNETMASKwlan0->setHelpText(QObject::tr("Netmask")); + HostNETMASKwlan0->setValue(24); + + HostGWwlan0 = new HostLineEdit("HostGWwlan0"); + HostGWwlan0->setLabel(QObject::tr("Gateway")); + HostGWwlan0->setValue("192.168.1.1"); + HostGWwlan0->setHelpText(QObject::tr("This is the default route")); + + + HostDNSwlan0 = new HostLineEdit("HostDNSwlan0"); + HostDNSwlan0->setLabel(QObject::tr("Name server")); + HostDNSwlan0->setValue("192.168.1.1"); + HostDNSwlan0->setHelpText(QObject::tr("Name server")); + + + HostActiveonbootwlan0 = new HostCheckBox("HostActiveonbootwlan0"); + HostActiveonbootwlan0->setLabel(QObject::tr("Active")); + HostActiveonbootwlan0->setValue(false); + HostActiveonbootwlan0->setHelpText(QObject::tr("Network is started on boot")); + + HostDefaultwlan0 = new HostCheckBox("HostDefaultwlan0"); + HostDefaultwlan0->setLabel(QObject::tr("Default")); + HostDefaultwlan0->setValue(false); + HostDefaultwlan0->setHelpText(QObject::tr("Will be used as the primary interface")); + connect(HostDefaultwlan0, SIGNAL(valueChanged(bool)), this, SLOT(wlan0_disable_others())); + + + + HostUseDHCPwlan0 = new HostCheckBox("HostUseDHCPwlan0"); + HostUseDHCPwlan0 ->setLabel(QObject::tr("Static ip address")); + HostUseDHCPwlan0 ->setValue(false); + HostUseDHCPwlan0 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used.")); + + wirelessbuttonwlan0 = new TransButtonSetting(); + wirelessbuttonwlan0->setLabel(tr("Wireless Settings")); + connect(wirelessbuttonwlan0, SIGNAL(pressed()), this, SLOT(wlan0_wireless_settings())); + + + ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false,false); + settings1->addChild(HostActiveonbootwlan0); + settings1->addChild(HostDefaultwlan0); + settings1-> addChild(wirelessbuttonwlan0); + addChild(settings1); + + Setting* dhcpEnabled = HostUseDHCPwlan0; + addChild(dhcpEnabled); + setTrigger(dhcpEnabled); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false); + settings->addChild(HostIPwlan0); + settings->addChild(HostNETMASKwlan0); + settings->addChild(HostGWwlan0); + settings->addChild(HostDNSwlan0); + + addTarget("0", new VerticalConfigurationGroup(false,false,false,false)); + addTarget("1", settings); + +}; + +Wlan0options::Wlan0options() +{ + + VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false); + rec->setLabel(QObject::tr("Wireless configuration for wlan0")); + //rec->setUseLabel(true); + rec->addChild(new wlan0_settings); + addChild(rec); +} + +void NetworkSettingswlan0::wlan0_disable_others() +{ + QString my_current_value; + my_current_value = HostDefaultwlan0->getValue(); + if ( my_current_value == "1" ) + { + cout <<"WLAN0: set other defaults buttons to off"<setValue(0); +} + + +void NetworkSettingswlan0::wlan0_wireless_settings(void) +{ + //cout <<"button pressed for wlan0"<setEnabled(false); +} + + +class wlan1_settings: public TriggeredConfigurationGroup { +public: + wlan1_settings(): + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + + HostComboBox *HOSTESSIDwlan1 = new HostComboBox("HOSTESSIDwlan1",true); + HOSTESSIDwlan1->setLabel(QObject::tr("ESSID")); + HOSTESSIDwlan1->addSelection("MythVantage"); + HOSTESSIDwlan1->addSelection("home_lan"); + HOSTESSIDwlan1->addSelection("type_it_here"); + HOSTESSIDwlan1->setHelpText(QObject::tr("ESSID")); + addChild(HOSTESSIDwlan1); + + + HostComboBox *HostUseEncryptionwlan1 = new HostComboBox("HostUseEncryptionwlan1"); + HostUseEncryptionwlan1->setLabel(QObject::tr("Encryption")); + HostUseEncryptionwlan1->setHelpText(QObject::tr("WPA, WEP, none")); + HostUseEncryptionwlan1->addSelection("none"); + HostUseEncryptionwlan1->addSelection("WPA"); + HostUseEncryptionwlan1->addSelection("WEP"); + + Setting* HostUseEncryption = HostUseEncryptionwlan1; + addChild(HostUseEncryption); + setTrigger(HostUseEncryption); + + HostLineEdit *Hostkeywlan1 = new HostLineEdit("Hostkeywlan1"); + Hostkeywlan1->setLabel(QObject::tr("key")); + Hostkeywlan1->setHelpText(QObject::tr("Key to use for encryption")); + + ConfigurationGroup* settings = new GridConfigurationGroup(1,false); + settings->addChild(Hostkeywlan1); + addTarget("none", new GridConfigurationGroup(1,false)); + addTarget("WPA", settings); + addTarget("WEP", settings); + //- + }; +}; + +NetworkSettingswlan1::NetworkSettingswlan1(): + TriggeredConfigurationGroup(false,false,false,false) { + setLabel(QObject::tr("Network Settings")); + + HostIPwlan1 = new HostLineEdit("HostIPwlan1"); + HostIPwlan1->setLabel(QObject::tr("Ip address")); + HostIPwlan1->setValue("192.168.1.12"); + HostIPwlan1->setHelpText(QObject::tr("IP address of the new installation")); + + HostNETMASKwlan1 = new HostComboBox("HostNETMASKwlan1"); + HostNETMASKwlan1->setLabel(QObject::tr("Netmask")); + HostNETMASKwlan1->addSelection("/0 0.0.0.0"); + HostNETMASKwlan1->addSelection("/1 128.0.0.0"); + HostNETMASKwlan1->addSelection("/2 192.0.0.0"); + HostNETMASKwlan1->addSelection("/3 224.0.0.0"); + HostNETMASKwlan1->addSelection("/4 240.0.0.0"); + HostNETMASKwlan1->addSelection("/5 248.0.0.0"); + HostNETMASKwlan1->addSelection("/6 252.0.0.0"); + HostNETMASKwlan1->addSelection("/7 254.0.0.0"); + HostNETMASKwlan1->addSelection("/8 255.0.0.0"); + HostNETMASKwlan1->addSelection("/9 255.128.0.0"); + HostNETMASKwlan1->addSelection("/10 255.192.0.0 "); + HostNETMASKwlan1->addSelection("/11 255.224.0.0"); + HostNETMASKwlan1->addSelection("/12 255.240.0.0"); + HostNETMASKwlan1->addSelection("/13 255.248.0.0"); + HostNETMASKwlan1->addSelection("/14 255.252.0.0"); + HostNETMASKwlan1->addSelection("/15 255.254.0.0"); + HostNETMASKwlan1->addSelection("/16 255.255.0.0"); + HostNETMASKwlan1->addSelection("/17 255.255.128.0"); + HostNETMASKwlan1->addSelection("/18 255.255.192.0"); + HostNETMASKwlan1->addSelection("/19 255.255.224.0"); + HostNETMASKwlan1->addSelection("/20 255.255.240.0"); + HostNETMASKwlan1->addSelection("/21 255.255.248.0"); + HostNETMASKwlan1->addSelection("/22 255.255.252.0"); + HostNETMASKwlan1->addSelection("/23 255.255.254.0"); + HostNETMASKwlan1->addSelection("/24 255.255.255.0"); + HostNETMASKwlan1->addSelection("/25 255.255.255.128"); + HostNETMASKwlan1->addSelection("/26 255.255.255.192"); + HostNETMASKwlan1->addSelection("/27 255.255.255.224"); + HostNETMASKwlan1->addSelection("/28 255.255.255.240"); + HostNETMASKwlan1->addSelection("/29 255.255.255.248"); + HostNETMASKwlan1->addSelection("/30 255.255.255.252"); + HostNETMASKwlan1->addSelection("/31 255.255.255.254"); + HostNETMASKwlan1->addSelection("/32 255.255.255.255"); + HostNETMASKwlan1->setHelpText(QObject::tr("Netmask")); + HostNETMASKwlan1->setValue(24); + + HostGWwlan1 = new HostLineEdit("HostGWwlan1"); + HostGWwlan1->setLabel(QObject::tr("Gateway")); + HostGWwlan1->setValue("192.168.1.1"); + HostGWwlan1->setHelpText(QObject::tr("This is the default route")); + + + HostDNSwlan1 = new HostLineEdit("HostDNSwlan1"); + HostDNSwlan1->setLabel(QObject::tr("Name server")); + HostDNSwlan1->setValue("192.168.1.1"); + HostDNSwlan1->setHelpText(QObject::tr("Name server")); + + + HostActiveonbootwlan1 = new HostCheckBox("HostActiveonbootwlan1"); + HostActiveonbootwlan1->setLabel(QObject::tr("Active")); + HostActiveonbootwlan1->setValue(false); + HostActiveonbootwlan1->setHelpText(QObject::tr("Network is started on boot")); + + HostUseDHCPwlan1 = new HostCheckBox("HostUseDHCPwlan1"); + HostUseDHCPwlan1 ->setLabel(QObject::tr("Static ip address")); + HostUseDHCPwlan1 ->setValue(false); + HostUseDHCPwlan1 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used.")); + + wirelessbuttonwlan1 = new TransButtonSetting(); + wirelessbuttonwlan1->setLabel(tr("Wireless Settings")); + connect(wirelessbuttonwlan1, SIGNAL(pressed()), this, SLOT(wlan1_wireless_settings())); + + HostDefaultwlan1 = new HostCheckBox("HostDefaultwlan1"); + HostDefaultwlan1->setLabel(QObject::tr("Default")); + HostDefaultwlan1->setValue(false); + HostDefaultwlan1->setHelpText(QObject::tr("Will be used as the primary interface")); + connect(HostDefaultwlan1, SIGNAL(valueChanged(bool)), this, SLOT(wlan1_disable_others())); + + + ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false, false); + settings1->addChild(HostActiveonbootwlan1); + settings1->addChild(HostDefaultwlan1); + settings1-> addChild(wirelessbuttonwlan1); + + addChild(settings1); + + Setting* dhcpEnabled = HostUseDHCPwlan1; + addChild(dhcpEnabled); + setTrigger(dhcpEnabled); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false); + settings->addChild(HostIPwlan1); + settings->addChild(HostNETMASKwlan1); + settings->addChild(HostGWwlan1); + settings->addChild(HostDNSwlan1); + + addTarget("0", new VerticalConfigurationGroup(true)); + addTarget("1", settings); + +}; + +wlan1options::wlan1options() +{ + VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false); + rec->setLabel(QObject::tr("Wireless configuration for wlan1")); + //rec->setUseLabel(true); + rec->addChild(new wlan1_settings); + addChild(rec); +} +void NetworkSettingswlan1::wlan1_disable_others() +{ + QString my_current_value; + my_current_value = HostDefaultwlan1->getValue(); + if ( my_current_value == "1" ) + { + cout <<"WLAN1: set other defaults buttons to off"<setValue(0); + + +} +void NetworkSettingswlan1::wlan1_wireless_disable() +{ + cout << " wlan1 disabling wireless button" << endl; + wirelessbuttonwlan1->setEnabled(false); +} + +void NetworkSettingswlan1::wlan1_wireless_settings(void) +{ +// cout <<"button pressed for wlan1"<setLabel(QObject::tr("ESSID")); + HOSTESSIDath0->addSelection("MythVantage"); + HOSTESSIDath0->addSelection("home_lan"); + HOSTESSIDath0->addSelection("type_it_here"); + HOSTESSIDath0->setHelpText(QObject::tr("ESSID")); + addChild(HOSTESSIDath0); + + HostComboBox *HostUseEncryptionath0 = new HostComboBox("HostUseEncryptionath0"); + HostUseEncryptionath0->setLabel(QObject::tr("Encryption")); + HostUseEncryptionath0->setHelpText(QObject::tr("WPA, WEP, none")); + HostUseEncryptionath0->addSelection("none"); + HostUseEncryptionath0->addSelection("WPA"); + HostUseEncryptionath0->addSelection("WEP"); + + Setting* HostUseEncryption = HostUseEncryptionath0; + addChild(HostUseEncryption); + setTrigger(HostUseEncryption); + + HostLineEdit *Hostkeyath0 = new HostLineEdit("Hostkeyath0"); + Hostkeyath0->setLabel(QObject::tr("key")); + Hostkeyath0->setHelpText(QObject::tr("Key to use for encryption")); + + ConfigurationGroup* settings = new GridConfigurationGroup(1,false); + settings->addChild(Hostkeyath0); + addTarget("none", new GridConfigurationGroup(1,false)); + addTarget("WPA", settings); + addTarget("WEP", settings); + //- + + }; +}; + + +NetworkSettingsath0::NetworkSettingsath0(): + TriggeredConfigurationGroup(false,false,false,false) { + setLabel(QObject::tr("Network Settings")); + HostLineEdit *HostIPath0 = new HostLineEdit("HostIPath0"); + HostIPath0->setLabel(QObject::tr("Ip address")); + HostIPath0->setValue("192.168.1.12"); + HostIPath0->setHelpText(QObject::tr("IP address of the new installation")); + + HostComboBox *HostNETMASKath0 = new HostComboBox("HostNETMASKath0"); + HostNETMASKath0->setLabel(QObject::tr("Netmask")); + HostNETMASKath0->addSelection("/0 0.0.0.0"); + HostNETMASKath0->addSelection("/1 128.0.0.0"); + HostNETMASKath0->addSelection("/2 192.0.0.0"); + HostNETMASKath0->addSelection("/3 224.0.0.0"); + HostNETMASKath0->addSelection("/4 240.0.0.0"); + HostNETMASKath0->addSelection("/5 248.0.0.0"); + HostNETMASKath0->addSelection("/6 252.0.0.0"); + HostNETMASKath0->addSelection("/7 254.0.0.0"); + HostNETMASKath0->addSelection("/8 255.0.0.0"); + HostNETMASKath0->addSelection("/9 255.128.0.0"); + HostNETMASKath0->addSelection("/10 255.192.0.0 "); + HostNETMASKath0->addSelection("/11 255.224.0.0"); + HostNETMASKath0->addSelection("/12 255.240.0.0"); + HostNETMASKath0->addSelection("/13 255.248.0.0"); + HostNETMASKath0->addSelection("/14 255.252.0.0"); + HostNETMASKath0->addSelection("/15 255.254.0.0"); + HostNETMASKath0->addSelection("/16 255.255.0.0"); + HostNETMASKath0->addSelection("/17 255.255.128.0"); + HostNETMASKath0->addSelection("/18 255.255.192.0"); + HostNETMASKath0->addSelection("/19 255.255.224.0"); + HostNETMASKath0->addSelection("/20 255.255.240.0"); + HostNETMASKath0->addSelection("/21 255.255.248.0"); + HostNETMASKath0->addSelection("/22 255.255.252.0"); + HostNETMASKath0->addSelection("/23 255.255.254.0"); + HostNETMASKath0->addSelection("/24 255.255.255.0"); + HostNETMASKath0->addSelection("/25 255.255.255.128"); + HostNETMASKath0->addSelection("/26 255.255.255.192"); + HostNETMASKath0->addSelection("/27 255.255.255.224"); + HostNETMASKath0->addSelection("/28 255.255.255.240"); + HostNETMASKath0->addSelection("/29 255.255.255.248"); + HostNETMASKath0->addSelection("/30 255.255.255.252"); + HostNETMASKath0->addSelection("/31 255.255.255.254"); + HostNETMASKath0->addSelection("/32 255.255.255.255"); + HostNETMASKath0->setHelpText(QObject::tr("Netmask")); + HostNETMASKath0->setValue(24); + + HostLineEdit *HostGWath0 = new HostLineEdit("HostGWath0"); + HostGWath0->setLabel(QObject::tr("Gateway")); + HostGWath0->setValue("192.168.1.1"); + HostGWath0->setHelpText(QObject::tr("This is the default route")); + + + HostLineEdit *HostDNSath0 = new HostLineEdit("HostDNSath0"); + HostDNSath0->setLabel(QObject::tr("Name server")); + HostDNSath0->setValue("192.168.1.1"); + HostDNSath0->setHelpText(QObject::tr("Name server")); + + + HostCheckBox *HostActiveonbootath0 = new HostCheckBox("HostActiveonbootath0"); + HostActiveonbootath0->setLabel(QObject::tr("Active")); + HostActiveonbootath0->setValue(false); + HostActiveonbootath0->setHelpText(QObject::tr("Network is started on boot")); + + HostDefaultath0 = new HostCheckBox("HostDefaultath0"); + HostDefaultath0->setLabel(QObject::tr("Default")); + HostDefaultath0->setValue(false); + HostDefaultath0->setHelpText(QObject::tr("Will be used as the primary interface")); + connect(HostDefaultath0, SIGNAL(valueChanged(bool)), this, SLOT(ath0_disable_others())); + + HostCheckBox *HostUseDHCPath0 = new HostCheckBox("HostUseDHCPath0"); + HostUseDHCPath0 ->setLabel(QObject::tr("Static ip address")); + HostUseDHCPath0 ->setValue(false); + HostUseDHCPath0 ->setHelpText(QObject::tr("Enable to use a static ip address, otherwise dhcp will be used.")); + + wirelessbuttonath0 = new TransButtonSetting(); + wirelessbuttonath0->setLabel(tr("Wireless Settings")); + connect(wirelessbuttonath0, SIGNAL(pressed()), this, SLOT(ath0_wireless_settings())); + + ConfigurationGroup* settings1 = new GridConfigurationGroup(3,false, false, false,false); + settings1->addChild(HostActiveonbootath0); + settings1->addChild(HostDefaultath0); + settings1-> addChild(wirelessbuttonath0); + + addChild(settings1); + + Setting* dhcpEnabled = HostUseDHCPath0; + addChild(dhcpEnabled); + setTrigger(dhcpEnabled); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false, false,false,false); + settings->addChild(HostIPath0); + settings->addChild(HostNETMASKath0); + settings->addChild(HostGWath0); + settings->addChild(HostDNSath0); + + addTarget("0", new VerticalConfigurationGroup(false,false,false,false)); + addTarget("1", settings); +}; +ath0options::ath0options() +{ + + VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false); + rec->setLabel(QObject::tr("Wireless configuration for ath0")); + //rec->setUseLabel(true); + rec->addChild(new ath0_settings); + addChild(rec); +} + +void NetworkSettingsath0::ath0_disable_others() +{ + QString my_current_value; + my_current_value = HostDefaultath0->getValue(); + if ( my_current_value == "1" ) + { + cout <<"ATH0: set other defaults buttons to off"<setValue(0); +} + +void NetworkSettingsath0::ath0_wireless_settings(void) +{ + //cout <<"button pressed for ath0"<setEnabled(false); +} + + +//-- + +class NetworkSettingsFrame: + public TriggeredConfigurationGroup { +public: + NetworkSettingsFrame(): + TriggeredConfigurationGroup(false, false, true, true,false, false, true, true) { + setLabel(QObject::tr("Network Settings Page (2/2)")); + Setting* netdevice = HostNetDevice(); + addChild(netdevice); + setTrigger(netdevice); + + NetworkSettingswlan0 *Nwlan0 = new NetworkSettingswlan0 ; + NetworkSettingswlan1 *Nwlan1 = new NetworkSettingswlan1 ; + NetworkSettingseth0 *Neth0 = new NetworkSettingseth0 ; + NetworkSettingseth1 *Neth1 = new NetworkSettingseth1 ; + NetworkSettingsath0 *Nath0 = new NetworkSettingsath0 ; + + QString found_wireless=findnet_wireless(); + + if ( not found_wireless.contains("eth0")) + { + Neth0->eth0_wireless_disable(); + hostparm.ThisHOST_iswirelesseth0="0"; + } + else + { + hostparm.ThisHOST_iswirelesseth0="1"; + } + + if ( not found_wireless.contains("eth1")) + { + Neth1->eth1_wireless_disable(); + hostparm.ThisHOST_iswirelesseth1="0"; + } + else + { + hostparm.ThisHOST_iswirelesseth1="1"; + } + + if ( not found_wireless.contains("wlan0")) + { + Nwlan0->wlan0_wireless_disable(); + hostparm.ThisHOST_iswirelesswlan0="0"; + } + else + { + hostparm.ThisHOST_iswirelesswlan0="1"; + } + + if ( not found_wireless.contains("wlan1")) + { + Nwlan1->wlan1_wireless_disable(); + hostparm.ThisHOST_iswirelesswlan1="0"; + } + else + { + hostparm.ThisHOST_iswirelesswlan0="1"; + } + + if ( not found_wireless.contains("ath0")) + { + Nath0->ath0_wireless_disable(); + hostparm.ThisHOST_iswirelessath0="0"; + } + else + { + hostparm.ThisHOST_iswirelessath0="1"; + } + connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Nwlan0, SLOT(wlan0_disabled())); + connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Neth0, SLOT(eth0_disabled())); + connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Neth1, SLOT(eth1_disabled())); + connect(Nwlan1, SIGNAL(wlan1_is_default(void)), Nath0, SLOT(ath0_disabled())); + + connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Nwlan1, SLOT(wlan1_disabled())); + connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Neth0, SLOT(eth0_disabled())); + connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Neth1, SLOT(eth1_disabled())); + connect(Nwlan0, SIGNAL(wlan0_is_default(void)), Nath0, SLOT(ath0_disabled())); + + connect(Neth1, SIGNAL(eth1_is_default(void)), Nwlan1, SLOT(wlan1_disabled())); + connect(Neth1, SIGNAL(eth1_is_default(void)), Nwlan0, SLOT(wlan0_disabled())); + connect(Neth1, SIGNAL(eth1_is_default(void)), Neth0, SLOT(eth0_disabled())); + connect(Neth1, SIGNAL(eth1_is_default(void)), Nath0, SLOT(ath0_disabled())); + + connect(Neth0, SIGNAL(eth0_is_default(void)), Nwlan0, SLOT(wlan0_disabled())); + connect(Neth0, SIGNAL(eth0_is_default(void)), Nwlan1, SLOT(wlan1_disabled())); + connect(Neth0, SIGNAL(eth0_is_default(void)), Neth1, SLOT(eth1_disabled())); + connect(Neth0, SIGNAL(eth0_is_default(void)), Nath0, SLOT(ath0_disabled())); + + connect(Nath0, SIGNAL(ath0_is_default(void)), Nwlan0, SLOT(wlan0_disabled())); + connect(Nath0, SIGNAL(ath0_is_default(void)), Nwlan1, SLOT(wlan1_disabled())); + connect(Nath0, SIGNAL(ath0_is_default(void)), Neth1, SLOT(eth1_disabled())); + connect(Nath0, SIGNAL(ath0_is_default(void)), Neth0, SLOT(eth0_disabled())); + + + HostLineEdit *HostMTUeth0 = new HostLineEdit("HostMTUeth0"); + HostMTUeth0->setLabel(QObject::tr("MTU")); + HostMTUeth0->setValue(""); + HostMTUeth0->setHelpText(QObject::tr("Leave this blank for default values. Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device.")); + + ConfigurationGroup* settingseth0 = new GridConfigurationGroup(1,false, false, false, false); + settingseth0->addChild(Neth0); + settingseth0->addChild(HostMTUeth0); + + + HostLineEdit *HostMTUeth1 = new HostLineEdit("HostMTUeth1"); + HostMTUeth1->setLabel(QObject::tr("MTU")); + HostMTUeth1->setValue(""); + HostMTUeth1->setHelpText(QObject::tr("Leave this blank for default values. Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device.")); + + ConfigurationGroup* settingseth1 = new GridConfigurationGroup(1,false, false, true, true); + settingseth1->addChild(Neth1); + settingseth1->addChild(HostMTUeth1); + + HostLineEdit *HostMTUwlan0 = new HostLineEdit("HostMTUwlan0"); + HostMTUwlan0->setLabel(QObject::tr("MTU")); + HostMTUwlan0->setValue(""); + HostMTUwlan0->setHelpText(QObject::tr("Leave this blank for default values. Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device.")); + + ConfigurationGroup* settingswlan0 = new GridConfigurationGroup(1,false, false, false, false); + settingswlan0->addChild(Nwlan0); + settingswlan0->addChild(HostMTUwlan0); + + HostLineEdit *HostMTUwlan1 = new HostLineEdit("HostMTUwlan1"); + HostMTUwlan1->setLabel(QObject::tr("MTU")); + HostMTUwlan1->setValue(""); + HostMTUwlan1->setHelpText(QObject::tr("Leave this blank for default values. Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device.")); + + ConfigurationGroup* settingswlan1 = new GridConfigurationGroup(1,false, false, false, false); + settingswlan1->addChild(Nwlan1); + settingswlan1->addChild(HostMTUwlan1); + + HostLineEdit *HostMTUath0 = new HostLineEdit("HostMTUath0"); + HostMTUath0->setLabel(QObject::tr("MTU")); + HostMTUath0->setValue(""); + HostMTUath0->setHelpText(QObject::tr("Leave this blank for default values. Changing this setting can have adverse affects, use with caution. Not all values will be supported by the device.")); + + ConfigurationGroup* settingsath0 = new GridConfigurationGroup(1,false, false, false, false); + settingsath0->addChild(Nath0); + settingsath0->addChild(HostMTUath0); + + + + addTarget("wlan0", settingswlan0); + addTarget("wlan1", settingswlan1); + addTarget("eth0", settingseth0); + addTarget("eth1", settingseth1); + addTarget("ath0", settingsath0); + }; +}; + + +static HostCheckBox *HostAutodown() +{ + HostCheckBox *gc = new HostCheckBox("HostAutodown"); + gc->setLabel(QObject::tr("Turn off machine at a specified time")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Will turn off this system.")); + return gc; +}; + + +static HostSpinBox *HostWakeupTime() +{ + HostSpinBox *gc = new HostSpinBox("HostWakeupTime", -1, 23, 1, true); + gc->setLabel(QObject::tr("Power on time")); + gc->setValue(6); + gc->setHelpText(QObject::tr("Select the hour to auto poweron this system. Use -1 to disable" )); + return gc; +} + + + +static HostSpinBox *HostShutdownTime() +{ + HostSpinBox *gc = new HostSpinBox("HostShutdownTime", -1, 23, 1, true); + gc->setLabel(QObject::tr("Auto Shutdown time")); + gc->setValue(2); + gc->setHelpText(QObject::tr("Select the hour to poweroff this syste. Times are in 24hour format. Use -1 to disable" )); + return gc; +} +static HostSpinBox *HostShutdownTime2() +{ + HostSpinBox *gc = new HostSpinBox("HostShutdownTime2", -1, 23, 1, true); + gc->setLabel(QObject::tr("2nd auto Shutdown time")); + gc->setValue(2); + gc->setHelpText(QObject::tr("Select the hour to poweroff this syste. Times are in 24hour format. Use -1 to disable" )); + return gc; +} + + + +static HostCheckBox *HostUseWOL() +{ + HostCheckBox *gc = new HostCheckBox("HostUseWOL"); + gc->setLabel(QObject::tr("Use Wake on Lan to turn on system")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Unless you know what your doing leave it checked")); + return gc; +}; + +static HostCheckBox *HostUseNVRAM() +{ + HostCheckBox *gc = new HostCheckBox("HostUseNVRAM"); + gc->setLabel(QObject::tr("Use nvram to turn on system")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Leaved checked unless nvram causes problems.")); + return gc; +}; + + + + + +class WakeSettings: public TriggeredConfigurationGroup { +public: + WakeSettings(): + + TriggeredConfigurationGroup(true) { + setLabel(QObject::tr("Shutdown Settings")); + Setting* Autodown = HostAutodown(); + addChild(Autodown); + setTrigger(Autodown); + ConfigurationGroup* settings = new VerticalConfigurationGroup(false); + settings->addChild(HostShutdownTime()); + settings->addChild(HostShutdownTime2()); + settings->addChild(HostWakeupTime()); + settings->addChild(HostUseNVRAM()); + settings->addChild(HostUseWOL()); + addTarget("0", new VerticalConfigurationGroup(true)); + addTarget("1", settings); + + }; +}; + +class Frontend_settings_group: public TriggeredConfigurationGroup { +public: + Frontend_settings_group(): + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + Setting* fe = HostRunFrontend(); + addChild(fe); + setTrigger(fe); + //HostXres = new HostComboBox("HostXres"); + ConfigurationGroup* setting1 = new GridConfigurationGroup(2,false); + setting1->addChild(HostXres()); + setting1->addChild(HostUsemythfrontend()); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false); + settings->addChild(setting1); + settings->addChild(new HostRemoteType); + + addTarget("0", new VerticalConfigurationGroup(false)); + addTarget("1", settings); + + }; +}; + +SystemtypeGroup::SystemtypeGroup(): TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) { + setLabel(QObject::tr("System Type")); + HostSystemType = new HostComboBox("HostSystemType"); + HostSystemType->setLabel(QObject::tr("Type of system setup")); + HostSystemType->addSelection("Standalone"); + HostSystemType->addSelection("Frontend_only"); + HostSystemType->addSelection("Master_backend"); + HostSystemType->addSelection("Slave_backend"); + +// HostXres = new HostComboBox("HostXres"); + if ( ((gContext->GetSetting("HostaccesshostypeSystemtype")) == "0" )) + HostSystemType->setEnabled(false); + + addChild(HostSystemType); + setTrigger(HostSystemType); + + ConfigurationGroup* standalone = new VerticalConfigurationGroup(false,false,true,true); + standalone->addChild(HostXres()); + standalone->addChild(new HostRemoteType); + standalone->addChild(HostUsemythfrontend()); + + ConfigurationGroup* frontend = new VerticalConfigurationGroup(false,false,true,true); + frontend->addChild(HostMysqlserverip_listbox()); + frontend->addChild(HostXres()); + frontend->addChild(new HostRemoteType); + frontend->addChild(HostUsemythfrontend()); + + ConfigurationGroup* backend = new VerticalConfigurationGroup(false,false,false,false); + backend->addChild( new Frontend_settings_group); + + ConfigurationGroup* slave = new VerticalConfigurationGroup(false,false,true,true); + slave->addChild(HostMysqlserverip_listbox()); + slave->addChild( new Frontend_settings_group); + + + addTarget("Standalone", standalone); + addTarget("Frontend_only", frontend); + addTarget("Master_backend", backend); + addTarget("Slave_backend", slave); + connect(HostSystemType, SIGNAL(valueChanged(const QString&)), + this, SLOT(SystemtypeHelp())); + + }; + +void SystemtypeGroup::SystemtypeHelp(void) + { + QString msg = (QObject::tr("Configuration for this system. Most people will use standalone")); + QString selectedhostype; + selectedhostype = HostSystemType->getValue(); + if ( selectedhostype.isEmpty()) + { + HostSystemType->setHelpText(msg) ; + return; + } + + if (selectedhostype == "Standalone") + msg="Complete System, that doesn't allow outside connections"; + if (selectedhostype == "Frontend_only") + msg="Frontend only, needs a master backend already on the network"; + if (selectedhostype == "Master_backend") + msg="Tuners, scheduling and database. This allows for remote frontend and slave backends"; + if (selectedhostype == "Slave_backend") + msg="Extra tuners"; + + HostSystemType->setHelpText(msg) ; +} + + + +HostRemoteType::HostRemoteType(): + HostImageSelect("HostRemoteType") { + setLabel(QObject::tr("Remote")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/remotes"); + QDir remotes(dirtxt); + remotes.setFilter(QDir::Dirs); + remotes.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *fil = remotes.entryInfoList(QDir::Dirs); + if (!fil) + return; + + QFileInfoListIterator it( *fil ); + QFileInfo *remote; + for( ; it.current() != 0 ; ++it ) + { + remote = it.current(); + QFileInfo preview(remote->absFilePath() + "/preview.jpg"); + if (remote->fileName()[0] == '.' || !preview.exists() ) + { + //cout << remote->absFilePath() << " Can't find preivew image, doesn't look like a remote\n"; + continue; + } + QImage* previewImage = new QImage(preview.absFilePath()); + addImageSelection(remote->fileName(), previewImage); + + } + +} +/* +static HostComboBox *HostLCDType() +{ + HostComboBox *gc = new HostComboBox("HostLCDType",false); + gc->setLabel(QObject::tr("LCD/VFD model")); + gc->addSelection("no_lcd"); + gc->addSelection("tinker"); + gc->setValue(0); + gc->setHelpText(QObject::tr("VFD or LCD")); + QString dirtxt; + dirtxt=MV_ROOT; + dirtxt.append("templates/LCD"); + QDir transmit(dirtxt); + + //QDir transmit("/usr/share/templates/LCD"); + transmit.setFilter(QDir::Dirs); + transmit.setSorting(QDir::Name | QDir::IgnoreCase); + const QFileInfoList *infos = transmit.entryInfoList(); + const QFileInfo *info; + if (!infos) + return gc; + QFileInfoListIterator infoIt( *infos ); + QString currentitem = "."; + while( (info=infoIt.current()) != 0 ) + { + currentitem = info->baseName( TRUE ); + if ( currentitem != ".." && currentitem != "." && currentitem != "") + { + gc->addSelection(currentitem); + } + ++infoIt; + } + return gc; +}; +*/ + +class AdvancedSettings: public TriggeredConfigurationGroup { +public: + void smb_busy_box() { + system ("nmbscan -d > /tmp/smbdomainlist & "); + QString msgtext="Searching for windows workgroups"; + int return_code; + MythBusyDialog *busy = new MythBusyDialog(msgtext); + // yet another incorrect way todo things, but I don't know anybetter + // as long as ps can find systemconfig in the list the busy box will appear and update + busy->start(); + while ( return_code == 0 ) + { + return_code = myth_system("ps -ef|grep nmbscan|grep -v grep > /dev/null"); + qApp->processEvents (); + usleep(900); + } + busy->Close(); + busy->deleteLater(); + } + + AdvancedSettings(): + TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) + { + + setLabel(QObject::tr("Advanced settings (1/3)")); + Setting* Autodown = HostAutodown(); + setTrigger(Autodown); + hostparm.ThisSystemType = gContext->GetSetting("HostSystemType"); + ConfigurationGroup *checkbox = new GridConfigurationGroup(2,false); + checkbox->addChild(HostServiceMythWEB()); + checkbox->addChild(HostServiceNFS()); + checkbox->addChild(Hostbootsplash()); + checkbox->addChild(HostncidClient()); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false); + if ( hostparm.ThisSystemType == "Standalone" ) + { + smb_busy_box(); + settings->addChild(new NCIDsettings); + settings->addChild(new SAMBAsettings); + #ifdef __MVAPP__ + checkbox->addChild(GlobalServiceHobbitserver() ); + #else + checkbox->addChild(HostServiceRRD() ); + #endif + settings->addChild(checkbox) ; + } + else if (hostparm.ThisSystemType == "Master_backend" ) + { + smb_busy_box(); + checkbox->addChild(GlobalPKG_MIRROR()); + settings->addChild(new NCIDsettings); + settings->addChild(new SAMBAsettings); + #ifdef __MVAPP__ + checkbox->addChild(GlobalServiceHobbitserver() ); + #else + checkbox->addChild(HostServiceRRD() ); + #endif + settings->addChild(checkbox) ; + } + else if (hostparm.ThisSystemType == "Frontend_only" ) + { + settings->addChild(Hostbootsplash()); + settings->addChild(HostncidClient()); + #ifdef __MVAPP__ + cout << gContext->GetSetting("GlobalServiceHobbitserver") << endl; + cout << "above"<GetSetting("GlobalServiceHobbitserver") != "0" ) + settings->addChild(HostServiceHobbitclient() ); + #else + settings->addChild(HostServiceRRD() ); + #endif + + + if ( (gContext->GetSetting("GlobalPKG_MIRROR") ) == "1" ) + settings->addChild(HostPKG_MIRROR()); + } + else if (hostparm.ThisSystemType == "Slave_backend" ) + { + settings->addChild(Hostbootsplash()); + settings->addChild(HostncidClient()); + #ifdef __MVAPP__ + if ( gContext->GetSetting("GlobalServiceHobbitserver") != "0" ) + settings->addChild(HostServiceHobbitclient() ); + #else + settings->addChild(HostServiceRRD() ); + #endif + + if ( (gContext->GetSetting("GlobalPKG_MIRROR")) == "1") + settings->addChild(HostPKG_MIRROR()); + }; + addTarget("", settings); + }; +}; + + +class AdvancedSettings_2: public TriggeredConfigurationGroup { +public: + AdvancedSettings_2(): + TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) { + setLabel(QObject::tr("Advanced settings (2/3)")); + Setting* Autodown = HostAutodown(); + setTrigger(Autodown); + hostparm.ThisSystemType = gContext->GetSetting("HostSystemType"); + + ConfigurationGroup *checkbox = new GridConfigurationGroup(2,false); + checkbox->addChild(HostServiceMythWEB()); + checkbox->addChild(HostServiceNFS()); + checkbox->addChild(Hostbootsplash()); + checkbox->addChild(HostncidClient()); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false); + if ( hostparm.ThisSystemType == "Standalone" ) + { +// settings->addChild(HostLCDType()); +// settings->addChild(HostTransmitproto()); +// settings->addChild(new LIRCsettings); + settings->addChild(HostRunDHCP()); + + settings->addChild(new Evroutersettings); + } + else if (hostparm.ThisSystemType == "Master_backend" ) + { +// settings->addChild(HostLCDType()); +// settings->addChild(HostTransmitproto()); +// settings->addChild(new LIRCsettings); + settings->addChild(new Backupsettings); + settings->addChild(HostRunDHCP()); + settings->addChild(new Evroutersettings); + } + else if (hostparm.ThisSystemType == "Frontend_only" ) + { +// settings->addChild(HostLCDType()); +// settings->addChild(new LIRCsettings); + settings->addChild(new Evroutersettings); + } + else if (hostparm.ThisSystemType == "Slave_backend" ) + { +// settings->addChild(HostLCDType()); +// settings->addChild(HostTransmitproto()); +// settings->addChild(new LIRCsettings); + settings->addChild(new Evroutersettings); + }; + + addTarget("", settings); + +}; +}; + + + +/*_______________________________Sound settings ____________________*/ +SoundSettings::SoundSettings(): + TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) { + setLabel(QObject::tr("Audio out settings")); + + HostAudiotype = new HostComboBox("HostAudiotype",false); + HostAudiotype->setLabel(QObject::tr("Sound card driver")); + HostAudiotype->addSelection("OSS"); + HostAudiotype->addSelection("ALSA"); + HostAudiotype->addSelection("tinker"); + + HostAudiotype->setHelpText(QObject::tr("OSS or ALSA, your choice")); + addChild(HostAudiotype); + setTrigger(HostAudiotype); + + HostsyncXine = new HostCheckBox("HostsyncXine"); + HostsyncXine->setLabel(QObject::tr("Xine")); + HostsyncXine->setValue(true); + + HostsyncMplayer = new HostCheckBox("HostsyncMplayer"); + HostsyncMplayer->setLabel(QObject::tr("mplayer")); + HostsyncMplayer->setValue(true); + + HostsyncMythMusic = new HostCheckBox("HostsyncMythMusic"); + HostsyncMythMusic->setLabel(QObject::tr("mythmusic")); + HostsyncMythMusic->setValue(true); + + HostsyncMythFrontend = new HostCheckBox("HostsyncMythFrontend"); + HostsyncMythFrontend->setLabel(QObject::tr("mythfrontend")); + HostsyncMythFrontend->setValue(true); + + HorizontalConfigurationGroup *syncboxes = new HorizontalConfigurationGroup(false, false, true, true); + syncboxes->addChild(HostsyncXine); + syncboxes->addChild(HostsyncMplayer); + syncboxes->addChild(HostsyncMythMusic); + syncboxes->addChild(HostsyncMythFrontend); + + HorizontalConfigurationGroup *lp = new HorizontalConfigurationGroup(false, false, true, true); + HorizontalConfigurationGroup *lpalsa = new HorizontalConfigurationGroup(false, false, true, true); + + TransButtonSetting *LoadOSSbutton = new TransButtonSetting(); + LoadOSSbutton->setLabel(tr("Load OSS driver")); + TransButtonSetting *LoadALSAbutton = new TransButtonSetting(); + LoadALSAbutton->setLabel(tr("Load ALSA driver")); + + TransButtonSetting *TestAudiobutton = new TransButtonSetting(); + TestAudiobutton->setLabel(tr("Test Audio Settings")); + lp->addChild(TestAudiobutton); + lp->addChild(LoadOSSbutton); + + TransButtonSetting *TestALSAAudiobutton = new TransButtonSetting(); + TestALSAAudiobutton->setLabel(tr("Test ALSA Audio Settings")); + lpalsa->addChild(TestALSAAudiobutton); + lpalsa->addChild(LoadALSAbutton); + + TransLabelSetting *osslabel = new TransLabelSetting(); + osslabel->setValue("The real OSS! More information can be found at:"); + + TransLabelSetting *osslabel1 = new TransLabelSetting(); + osslabel1->setValue(" http://www.opensound.com "); + + TransLabelSetting *AlsaLabel = new TransLabelSetting(); + AlsaLabel->setValue("The inferior and complicated soundsystem known as ALSA "); + +// OSS GROUP + SoundOSSsettings *OSS = new SoundOSSsettings ; + ConfigurationGroup* osssettings = new VerticalConfigurationGroup(false); + osssettings->addChild(osslabel); + osssettings->addChild(osslabel1); + osssettings->addChild(OSS); + osssettings->addChild(syncboxes); + osssettings->addChild(lp); + connect(this, SIGNAL(oss_sig()), + OSS, SLOT(soundossgathersettings())); + connect(TestAudiobutton, SIGNAL(pressed()), + this, SLOT(soundossgathersettings_1())); + connect(LoadOSSbutton, SIGNAL(pressed()), + OSS, SLOT(loadossdriver())); + +// ALSA GROUP + SoundALSAsettings *ALSA = new SoundALSAsettings ; + ConfigurationGroup* alsasettings = new VerticalConfigurationGroup(false); + alsasettings->addChild(AlsaLabel); + alsasettings->addChild(ALSA); + alsasettings->addChild(syncboxes); + alsasettings->addChild(lpalsa); + + connect(this, SIGNAL(alsa_sig()), + ALSA, SLOT(soundalsagathersettings())); + connect(TestALSAAudiobutton, SIGNAL(pressed()), + this, SLOT(soundalsagathersettings_1())); + connect(LoadALSAbutton, SIGNAL(pressed()), + ALSA, SLOT(loadalsadriver())); + addTarget("ALSA", alsasettings); + addTarget("OSS", osssettings); + addTarget("tinker", new VerticalConfigurationGroup(false)); +}; + + +SoundOSSsettings::SoundOSSsettings(): + TriggeredConfigurationGroup(true,false,true,true,true,true,true,true) +{ + SetVertical(true); + HostSoundTypeout = new HostComboBox("HostSoundTypeout"); + HostSoundTypeout->setLabel(QObject::tr("Type")); + HostSoundTypeout->addSelection("Analog"); + HostSoundTypeout->addSelection("Digital"); + HostSoundTypeout->setHelpText(QObject::tr("")); + + HostSoundOssAnalog = new HostComboBox("HostSoundOssAnalog"); + HostSoundOssDigital = new HostComboBox("HostSoundOssDigital"); + fillossselection(); + int findossanalog=HostSoundOssAnalog->findSelection(hostparm.OLDHostSoundOSSAnalog ); + int findossdigital=HostSoundOssDigital->findSelection(hostparm.OLDHostSoundOSSDigital ); + HostSoundOssAnalog->setValue(findossanalog); + HostSoundOssDigital->setValue(findossdigital); + addChild(HostSoundTypeout); + setTrigger(HostSoundTypeout); + addTarget("Analog", HostSoundOssAnalog); + addTarget("Digital", HostSoundOssDigital); +}; + +SoundALSAsettings::SoundALSAsettings(): + TriggeredConfigurationGroup(true,false,true,true,true,true,true,true) + { + SetVertical(true); + HostSoundALSATypeout = new HostComboBox("HostSoundALSATypeout"); + HostSoundALSATypeout->setLabel(QObject::tr("Type")); + HostSoundALSATypeout->addSelection("Analog"); + HostSoundALSATypeout->addSelection("Digital"); + HostSoundALSATypeout->setHelpText(QObject::tr("")); + + HostSoundALSAAnalog = new HostComboBox("HostSoundALSAAnalog"); + HostSoundALSADigital = new HostComboBox("HostSoundALSADigital"); + fillALSAselection(); + int findalsaanalog=HostSoundALSAAnalog->findSelection(hostparm.OLDHostSoundALSAAnalog ); + int findalsadigital=HostSoundALSADigital->findSelection(hostparm.OLDHostSoundALSADigital ); + HostSoundALSAAnalog->setValue(findalsaanalog); + HostSoundALSADigital->setValue(findalsadigital); + addChild(HostSoundALSATypeout); + setTrigger(HostSoundALSATypeout); + addTarget("Analog", HostSoundALSAAnalog); + addTarget("Digital", HostSoundALSADigital); + }; + +void SoundOSSsettings::loadossdriver() +{ + cout << "oss button pressed" << endl; + +// Add info popup right here + QString cmdtxt; + cmdtxt="sudo "; + cmdtxt.append(MV_ROOT) ; +// cmdtxt=MV_ROOT ; + cmdtxt.append("bin/soundconfig.sh -t LOAD -i OSS &"); + system(cmdtxt); + int return_code = 0; + QString msgtext = "Loading OSS driver" ; + + MythBusyDialog *busy = new MythBusyDialog(msgtext); + // yet another incorrect way todo things, but I don't know anybetter + // as long as ps can find systemconfig in the list the busy box will appear and update + busy->start(); + while ( return_code == 0 ) + { + return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null"); + qApp->processEvents (); + usleep(900); + } + busy->Close(); + busy->deleteLater(); + fillossselection(); + +} +void SoundALSAsettings::loadalsadriver() +{ + cout << "Loading alsa driver" << endl; + QString cmdtxt; + cmdtxt="sudo "; + cmdtxt.append(MV_ROOT) ; + cmdtxt.append("bin/soundconfig.sh -t LOAD -i ALSA &"); + system(cmdtxt); + int return_code = 0; + QString msgtext = "Loading ALSA driver" ; + + MythBusyDialog *busy = new MythBusyDialog(msgtext); + // yet another incorrect way todo things, but I don't know anybetter + // as long as ps can find systemconfig in the list the busy box will appear and update + busy->start(); + while ( return_code == 0 ) + { + return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null"); + qApp->processEvents (); + usleep(900); + } + busy->Close(); + busy->deleteLater(); + HostSoundALSAAnalog-> clearSelections(); + HostSoundALSADigital-> clearSelections(); + + fillALSAselection(); + +} +void SoundOSSsettings::fillossselection() +{ + myth_system("ossinfo -v1 -a |grep device > /tmp/ossdevices"); + QString currentitem; + QString currentfile = "/tmp/ossdevices"; + QString line; + QString legacy_device; + QString simpleitem; + QString currentitemtext; + QRegExp sep( "\t" ); + QFile file(currentfile); + QString ossfound="false"; + HostSoundOssAnalog->clearSelections(); + HostSoundOssDigital-> clearSelections(); + + + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if (line.contains("device index") ) + { + legacy_device = t.readLine(); + legacy_device= legacy_device.section( "/",2,2); + currentitemtext=line.section( "/" , 0 ,0 ); + simpleitem = currentitemtext.simplifyWhiteSpace(); + simpleitem = simpleitem.remove ( "(" ); + simpleitem = simpleitem.remove ( ")" ); + simpleitem.append(" ("); + simpleitem.append(legacy_device); + simpleitem.append(")"); + if (line.contains("spdout") || line.contains("digital") ) + HostSoundOssDigital->addSelection(simpleitem); + else + HostSoundOssAnalog->addSelection(simpleitem); + ossfound="true"; + } + } + if (ossfound=="false") + { + simpleitem="No cards found, try loading the OSS drivers"; + HostSoundOssAnalog->addSelection(simpleitem); + HostSoundOssDigital->addSelection(simpleitem); + } + } +return ; +}; + + +void SoundALSAsettings::fillALSAselection() +{ + HostSoundALSAAnalog-> clearSelections(); + HostSoundALSADigital-> clearSelections(); + myth_system("aplay -l > /tmp/alsadevices"); + QString currentfile = "/tmp/alsadevices"; + QString line; + QString hwdevice; + QString alsadescription; + QString temphwdevice; + QString simpleitem; + QFile file(currentfile); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if (line.startsWith("card") ) + { + if (line.contains("snd_ctl_card_info")) + { + simpleitem="Try loading the alsa drivers"; + HostSoundALSAAnalog->addSelection(simpleitem); + HostSoundALSADigital->addSelection(simpleitem); + break; + } + //card 0: I82801DBICH4 [Intel 82801DB-ICH4], device 0: Intel ICH [Intel 82801DB-ICH4] + alsadescription=line.section( "," , 0 ,0 ); + alsadescription=alsadescription.section(":",1,1); + hwdevice=line.section( ":" , 0 ,0 ); + hwdevice=hwdevice.section( " " , -1,-1 ); + //grabbing 2nd half of device + temphwdevice=line.section(",",1,1); + temphwdevice=temphwdevice.section(":",0,0); + temphwdevice=temphwdevice.section(" ",-1,-1 ); + hwdevice.append(","); + hwdevice.append(temphwdevice); + simpleitem=alsadescription + "(hw:" + hwdevice + ")"; + if (line.contains("IEC958") ) + HostSoundALSADigital->addSelection(simpleitem); + else + HostSoundALSAAnalog->addSelection(simpleitem); + } + } + } +return ; + +} + +void SoundSettings::soundossgathersettings_1 (void) +{ + hostparm.ThisHostAudiotype = HostAudiotype->getValue(); + hostparm.ThisHostsyncXine = HostsyncXine->getValue(); + hostparm.ThisHostsyncMplayer = HostsyncMplayer->getValue(); + hostparm.ThisHostsyncMythMusic = HostsyncMythMusic->getValue(); + hostparm.ThisHostsyncMythFrontend = HostsyncMythFrontend->getValue(); + // emit the signal to call soundossgathersetting. + emit oss_sig(); +}; +void SoundSettings::soundalsagathersettings_1 (void) +{ + hostparm.ThisHostAudiotype = HostAudiotype->getValue(); + hostparm.ThisHostsyncXine = HostsyncXine->getValue(); + hostparm.ThisHostsyncMplayer = HostsyncMplayer->getValue(); + hostparm.ThisHostsyncMythMusic = HostsyncMythMusic->getValue(); + hostparm.ThisHostsyncMythFrontend = HostsyncMythFrontend->getValue(); + // emit the signal to call soundALSAgathersetting. + emit alsa_sig(); +}; + + +void SoundOSSsettings::soundossgathersettings(void) +{ + hostparm.ThisHostSoundTypeout = HostSoundTypeout->getValue() ; + hostparm.ThisHostSoundOSSAnalog = HostSoundOssAnalog->getValue(); + hostparm.ThisHostSoundOSSDigital = HostSoundOssDigital->getValue(); + QString tempdevice; + if ( hostparm.ThisHostSoundTypeout == "Analog" ) + { + tempdevice = hostparm.ThisHostSoundOSSAnalog ; + } + else + { + tempdevice = hostparm.ThisHostSoundOSSDigital ; + }; + tempdevice = tempdevice.section( "(", 1,1 ); + tempdevice = tempdevice.section( ")", 0,0 ); + hostparm.ThisHostSoundDevice = "/dev/"; + hostparm.ThisHostSoundDevice.append(tempdevice); + // Add info popup right here + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/soundconfig.sh -t test -i OSS -d " + hostparm.ThisHostSoundDevice + "&"); + system(cmdtxt); + int return_code = 0; + QString msgtext = "Playing sample audio" ; + MythBusyDialog *busy = new MythBusyDialog(msgtext); + // yet another incorrect way todo things, but I don't know anybetter + // as long as ps can find systemconfig in the list the busy box will appear and update + busy->start(); + while ( return_code == 0 ) + { + return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null"); + qApp->processEvents (); + usleep(900); + } + busy->Close(); + busy->deleteLater(); +}; + +void SoundALSAsettings::soundalsagathersettings(void) +{ + + hostparm.ThisHostSoundALSATypeout = HostSoundALSATypeout->getValue() ; + hostparm.ThisHostSoundALSAAnalog = HostSoundALSAAnalog->getValue(); + hostparm.ThisHostSoundALSADigital = HostSoundALSADigital->getValue(); +// cout << hostparm.ThisHostSoundALSATypeout << endl; +// cout << hostparm.ThisHostSoundALSAAnalog << endl; +// cout << hostparm.ThisHostSoundALSADigital << endl; + + // Intel [HDA Intel](hw:0,0) + +// cout << "--------" << endl; + QString tempdevice; + if ( hostparm.ThisHostSoundALSATypeout == "Analog" ) + { + tempdevice = hostparm.ThisHostSoundALSAAnalog ; + } + else + { + tempdevice = hostparm.ThisHostSoundALSADigital ; + }; + tempdevice = tempdevice.section( "(", 1,1 ); + tempdevice = tempdevice.section( ")", 0,0 ); + hostparm.ThisHostSoundDevice = tempdevice; + // Add info popup right here + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/soundconfig.sh -t test -i ALSA -d " + hostparm.ThisHostSoundDevice + "&"); + system(cmdtxt); + int return_code = 0; + QString msgtext = "Playing sample audio" ; + + MythBusyDialog *busy = new MythBusyDialog(msgtext); + busy->start(); + while ( return_code == 0 ) + { + return_code = myth_system("ps -ef|grep soundconfig.sh|grep -v grep > /dev/null"); + qApp->processEvents (); + usleep(900); + } + busy->Close(); + busy->deleteLater(); +}; + + +/* __________________________ END OF CLASSES_________________________*/ + +void pre_writesettings () +{ + hostparm.ThisSystemType = gContext->GetSetting("HostSystemType"); + hostparm.ThisDBhost = gContext->GetSetting("HostMysqlServer"); + hostparm.ThisHostName = gContext->GetSetting("HostMyhostname"); + + if ( hostparm.ThisSystemType == "Standalone" ) + { + hostparm.ThisDBhost = "localhost" ; + hostparm.ThisRunfrontend = "1" ; + gContext->SaveSetting("HostRunFrontend", hostparm.ThisRunfrontend ); + // disable pkgmirror + hostparm.ThisHostPKG_MIRROR = "0"; + gContext->SaveSetting("GlobalPKG_MIRROR", hostparm.ThisHostPKG_MIRROR ); + hostparm.ThisHostServiceHobbit = gContext->GetSetting("GlobalServiceHobbitserver"); + if (hostparm.ThisHostServiceHobbit == "" ) + { + hostparm.ThisHostServiceHobbit = "1"; + QString s = "GlobalServiceHobbitserver"; + gContext->SaveSettingOnHost(s, hostparm.ThisHostServiceHobbit ,NULL); + } + } + else if (hostparm.ThisSystemType == "Master_backend" ) + { + if ( hostparm.ThisNFS =="" && gContext->GetSetting("HostServiceNFS") == "" ) + { + hostparm.ThisNFS = "1"; + gContext->SaveSetting("HostServiceNFS",hostparm.ThisNFS ); + } + hostparm.ThisDBhost = "127.0.0.1" ; + //GlobalPKG is only an option for MBE + hostparm.ThisHostPKG_MIRROR = (gContext->GetSetting("GlobalPKG_MIRROR")) ; + hostparm.ThisHostServiceHobbit = gContext->GetSetting("GlobalServiceHobbitserver"); + if (hostparm.ThisHostServiceHobbit == "" ) + { + hostparm.ThisHostServiceHobbit = "1"; + QString s = "GlobalServiceHobbitserver"; + gContext->SaveSettingOnHost(s, hostparm.ThisHostServiceHobbit,NULL ); + } + } + else if (hostparm.ThisSystemType == "Frontend_only" ) + { + hostparm.ThisRunfrontend = "1" ; + hostparm.ThisSamba = "0"; + hostparm.ThisNFS = "0"; + hostparm.ThisMythWEB = "0"; + gContext->SaveSetting("HostRunFrontend", hostparm.ThisRunfrontend ); + gContext->SaveSetting("HostServiceSamba", hostparm.ThisSamba ); + gContext->SaveSetting("HostServiceNFS", hostparm.ThisNFS ); + gContext->SaveSetting("HostServiceMythWEB",hostparm.ThisMythWEB ); + // if GBL is enabled, then check for host setting, else disable it + if ( (gContext->GetSetting("GlobalPKG_MIRROR") ) == "1" ) + { + hostparm.ThisHostPKG_MIRROR = gContext->GetSetting("HostPKG_MIRROR"); + } + else + { + hostparm.ThisHostPKG_MIRROR = "0"; + }; +// cout << "install_hobbit:" <GetSetting("GlobalServiceHobbitserver") ) == "1") || install_hobbit ) + { + hostparm.ThisHostServiceHobbit = gContext->GetSetting("HostServiceHobbitclient"); +// cout <<"might install hobbit!" << endl; + cout << hostparm.ThisHostServiceHobbit << endl; + + } + else + { + hostparm.ThisHostServiceHobbit = "0"; + cout <<" don't install hobbit" << endl; + } + + gContext->SaveSetting("HostPKG_MIRROR", hostparm.ThisHostPKG_MIRROR ); + gContext->SaveSetting("HostServiceHobbitclient", hostparm.ThisHostServiceHobbit); + + } + else if (hostparm.ThisSystemType == "Slave_backend" ) + { + hostparm.ThisSamba = "0"; + hostparm.ThisNFS = "0"; + hostparm.ThisMythWEB = "0"; + gContext->SaveSetting("HostServiceSamba", hostparm.ThisSamba ); + gContext->SaveSetting("HostServiceNFS", hostparm.ThisNFS ); + gContext->SaveSetting("HostServiceMythWEB",hostparm.ThisMythWEB ); + if ( (gContext->GetSetting("GlobalPKG_MIRROR") ) == "1" ) + { + hostparm.ThisHostPKG_MIRROR = gContext->GetSetting("HostPKG_MIRROR"); + } + else + { + hostparm.ThisHostPKG_MIRROR = "0"; + } + if ( ((gContext->GetSetting("GlobalServiceHobbitserver") ) == "1") || install_hobbit ) + { + hostparm.ThisHostServiceHobbit = gContext->GetSetting("HostServiceHobbitclient"); + } + else + { + + hostparm.ThisHostServiceHobbit = "0"; + } + + gContext->SaveSetting("HostPKG_MIRROR", hostparm.ThisHostPKG_MIRROR ); + gContext->SaveSetting("HostServiceHobbitclient", hostparm.ThisHostServiceHobbit); + + }; + + if ( hostparm.ThisHostDefaultInterface == "" ) + { + if ( gContext->GetSetting("HostDefaulteth0") == "1" ) + hostparm.ThisHostDefaultInterface = "eth0"; + else if ( gContext->GetSetting("HostDefaulteth1") == "1" ) + hostparm.ThisHostDefaultInterface = "eth1"; + else if ( gContext->GetSetting("HostDefaultwlan0") == "1" ) + hostparm.ThisHostDefaultInterface = "wlan0"; + else if ( gContext->GetSetting("HostDefaultwlan1") == "1" ) + hostparm.ThisHostDefaultInterface = "wlan1"; + else if ( gContext->GetSetting("HostActiveonbooteth0") == "1" ) + hostparm.ThisHostDefaultInterface = "eth0"; + else if ( gContext->GetSetting("HostActiveonbooteth1") == "1" ) + hostparm.ThisHostDefaultInterface = "eth1"; + else if ( gContext->GetSetting("HostActiveonbootwlan0") == "1" ) + hostparm.ThisHostDefaultInterface = "wlan0"; + else if ( gContext->GetSetting("HostActiveonbootwlan1") == "1" ) + hostparm.ThisHostDefaultInterface = "wlan1"; + else + hostparm.ThisHostDefaultInterface = "ack"; + } +// Even after all the above, it's still possible to set the Default interface to one that isn't active. + + hostparm.ThisDBhost = hostparm.ThisDBhost.section( "\t", 0, 0 ); + //remove spaces from hostname + std::string s = hostparm.ThisHostName; + std::string::iterator it = std::remove_if(s.begin(), s.end(), std::bind2nd(std::equal_to(), ' ')); + s = std::string(s.begin(), it); + hostparm.ThisHostName = s; + if ( hostparm.ThisHostName == "" ) + { + hostparm.ThisHostName=gContext->GetHostName(); + std::string s = hostparm.ThisHostName; + std::string::iterator it = std::remove_if(s.begin(), s.end(), std::bind2nd(std::equal_to(), ' ')); + s = std::string(s.begin(), it); + hostparm.ThisHostName = s; + if ( hostparm.ThisHostName == "" ) + hostparm.ThisHostName = "You_Fool"; + } + // piece togther the timezone + QString tz; + QString tregion; + QString tsubregion; + + tz=gContext->GetSetting("HostTimeZone"); + + cout << "tz extracted from database: " << tz << endl; + if ( tz.isEmpty() || (tz == "Unknown")) + timezone_unknown = TRUE; + + tregion=gContext->GetSetting("HostTimeZoneRegion"); + tsubregion=gContext->GetSetting("HostTimeZoneRegion_"+tregion); + if ( tsubregion.isEmpty() ) + hostparm.ThisTimeZone = tregion; + else + hostparm.ThisTimeZone = tregion + "/" + tsubregion; + + cout << "hostparm.ThisTimeZone " << hostparm.ThisTimeZone << endl; + // save some settings back to the datebase + gContext->SaveSetting("HostMyhostname" , hostparm.ThisHostName ); + gContext->SaveSetting("HostMysqlserver", hostparm.ThisDBhost ); + gContext->SaveSetting("HostTimeZone", hostparm.ThisTimeZone ); +} + +void run_systemconfig(QString modulelist, bool restart, QString dbcommand) +{ + QString cmdtxt; + cmdtxt="sudo "; + cmdtxt.append(MV_ROOT) ; + cmdtxt.append("bin/systemconfig.sh " + modulelist + " &"); + myth_system(cmdtxt); + int return_code = 0; + QString msgtext = "Please wait while " ; + msgtext.append(gContext->GetSetting("HostMyhostname")); + msgtext.append(" is configured"); + MythBusyDialog *busy = new MythBusyDialog(msgtext); + busy->start(); + while ( return_code == 0 ) + { + return_code = myth_system("ps -ef|grep systemconfig.sh|grep -v grep > /dev/null"); + qApp->processEvents (); + usleep(900); + } + busy->Close(); + busy->deleteLater(); + if (restart) + { + return_code = 1; + int loopnumber=0 ; + bool doloop = true; + MythBusyDialog *busy = new MythBusyDialog( + QObject::tr("Transferring database settings")); + // yet another incorrect way todo things, but I don't know anybetter + // as long as ps can find systemconfig in the list the busy box will appear and update + busy->start(); + while ( doloop ) + { + return_code = myth_system(dbcommand); + qApp->processEvents (); + usleep(100); + loopnumber++ ; + if ( return_code == 0 || loopnumber >= 20000000 ) + doloop=false; + cout << loopnumber << endl; + } + busy->Close(); + busy->deleteLater(); + }; + + + +} + + + +int runsettings (bool mysqlonly , bool shownetwork , bool showhostype, bool showmisc , bool showshutdown, bool showadvanced,bool showsound,bool showadvancedX, bool showaccesscontrol, bool showplugins , bool showuser , bool showwebuser , bool showddns , bool showinfrared , bool showscreensaver ) +{ + displaymysqlonly = false ; + displayshownetwork =false ; + displayshowhostype = false ; + displayshowmisc =false ; + displayshowshutdown =false ; + displayshowadvanced = false; + displayshowsound = false ; + displayshowadvancedX = false; + displayaccesscontrol= false; + displayplugins= false; + displayuser = false; + displaywebuser = false; + displayddns = false; + displayinfrared = false; + displayscreensaver = false; + + gContext->ActivateSettingsCache(true); + gContext->ClearSettingsCache(); + bool runothers=false; + bool continuerun=true; + int retc = 0 ; + displaymysqlonly = mysqlonly; + + if (displaymysqlonly ) + { + MythInstallSettings mysqlsettings; + mysqlsettings.load(); + mysqlsettings.save(); + if ( mysqlsettings.exec() == QDialog::Accepted ) + { + retc = 1; + } + else + { + retc=2; + }; + }; + + if ( shownetwork ) + { + displayshownetwork = shownetwork; + MythInstallSettings settings; + settings.load(); + settings.save(); + if ( settings.exec() == QDialog::Accepted ) + { + retc = 1; + } + else + { + continuerun=false; + retc=2; + }; + displayshownetwork = false; + }; + + if ( showhostype && continuerun ) + { + displayshowhostype = showhostype; + system ("avahi-browse -l -r -t _mysql._tcp > /tmp/mysqllist"); + MythInstallSettings settings1; + settings1.load(); + settings1.save(); + if ( settings1.exec() == QDialog::Accepted ) + { + retc = 1; + } + else + { + continuerun=false; + retc=2; + }; + displayshowhostype=false; + } + + if ( showmisc || showshutdown || showsound || showadvancedX || showadvanced || showaccesscontrol || showplugins || showuser || showwebuser || showddns || showinfrared || showscreensaver ) + { + runothers=true; + displayshowmisc = showmisc; + displayshowshutdown = showshutdown; + displayshowadvanced = showadvanced; + displayshowsound = showsound; + displayshowadvancedX = showadvancedX; + hostparm.displayshowadvancedX=showadvancedX; + displayaccesscontrol = showaccesscontrol ; + displayplugins = showplugins; + displayuser = showuser; + displaywebuser = showwebuser; + displayddns = showddns ; + displayinfrared = showinfrared; + displayscreensaver = showscreensaver; + + if (displayshowadvancedX) + { + ReadDDCvalues(); + } + }; + + + if ( runothers && continuerun ) + { + //do I need this prewerite? + pre_writesettings(); + DatabaseParams params = gContext->GetDatabaseParams(); + QString cmdtxt=MV_ROOT ; + cmdtxt.append("bin/timezip.py -m "); + QString zipcommand=cmdtxt; + zipcommand.append(hostparm.ThisDBhost); + zipcommand.append(" -d " + params.dbHostName ); + cout << zipcommand << endl; + myth_system(zipcommand); + hostparm.ThisHostZipcode = gContext->GetSetting("HostZipcode"); + hostparm.ThisTimeZone = gContext->GetSetting("HostTimeZone"); + hostparm.ThisHostServiceHobbit = gContext->GetSetting("HostServiceHobbitclient"); + if ( hostparm.ThisHostServiceHobbit == "1" ) + install_hobbit = true; +/* + cout << "install_hobbit:" <SaveSetting("HostServiceHobbitclient", hostparm.ThisHostServiceHobbit ); + if ( settings2.exec() == QDialog::Accepted ) + { + retc = 1; + cout <<"i should save my settings(2)" << endl; + } + else + { + continuerun=false; + retc=2; + cout <<"no save for settings2 " << endl; + }; + }; + pre_writesettings(); + if ( mysqlonly ) + { + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/systemconfig.sh Mysql_only " + hostparm.ThisDBhost); + myth_system(cmdtxt); + } + else + { + if (retc == 1) + writesettings(); + } + return retc; +}; + + + +void writesettings () +{ + ofstream myfile; + hostparm.ThisHostName = gContext->GetSetting("HostMyhostname"); + hostparm.ThisHostDHCPhostname = gContext->GetSetting("HostDHCPhostname"); + //hostparm.ThisTimeZone = gContext->GetSetting("HostTimeZone"); + hostparm.ThisHostIP = gContext->GetSetting("HostIP"); + hostparm.ThisNETMASK = gContext->GetSetting("HostNETMASK"); + hostparm.ThisGW = gContext->GetSetting("HostGW"); + hostparm.ThisDNS = gContext->GetSetting("HostDNS"); + hostparm.ThisDHCP = gContext->GetSetting("HostUseDHCP"); + + //hostparm.ThisHostDefaultInterface=gContext->GetSetting("HostDefaultInterface"); + + hostparm.ThisHostIPeth0 = gContext->GetSetting("HostIPeth0"); + hostparm.ThisHostNETMASKeth0 = gContext->GetSetting("HostNETMASKeth0"); + hostparm.ThisHostDNSeth0 = gContext->GetSetting("HostDNSeth0"); + hostparm.ThisHostUSEDHCPeth0 = gContext->GetSetting("HostUseDHCPeth0"); + hostparm.ThisHostGWeth0 = gContext->GetSetting("HostGWeth0"); + hostparm.ThisHostActiveonbooteth0 = gContext->GetSetting("HostActiveonbooteth0"); + hostparm.ThisHOSTESSIDeth0 = gContext->GetSetting("HOSTESSIDeth0"); + hostparm.ThisHostUseEncryptioneth0 = gContext->GetSetting("HostUseEncryptioneth0"); + hostparm.ThisHostkeyeth0 = gContext->GetSetting("Hostkeyeth0"); + hostparm.ThisHostMTUeth0 = gContext->GetSetting("HostMTUeth0"); + + hostparm.ThisHostIPeth1 = gContext->GetSetting("HostIPeth1"); + hostparm.ThisHostNETMASKeth1 = gContext->GetSetting("HostNETMASKeth1"); + hostparm.ThisHostDNSeth1 = gContext->GetSetting("HostDNSeth1"); + hostparm.ThisHostUSEDHCPeth1 = gContext->GetSetting("HostUseDHCPeth1"); + hostparm.ThisHostGWeth1 = gContext->GetSetting("HostGWeth1"); + hostparm.ThisHostActiveonbooteth1 = gContext->GetSetting("HostActiveonbooteth1"); + hostparm.ThisHOSTESSIDeth1 = gContext->GetSetting("HOSTESSIDeth1"); + hostparm.ThisHostUseEncryptioneth1 = gContext->GetSetting("HostUseEncryptioneth1"); + hostparm.ThisHostkeyeth1 = gContext->GetSetting("Hostkeyeth1"); + hostparm.ThisHostMTUeth1 = gContext->GetSetting("HostMTUeth1"); + + hostparm.ThisHostIPwlan0 = gContext->GetSetting("HostIPwlan0"); + hostparm.ThisHostNETMASKwlan0 = gContext->GetSetting("HostNETMASKwlan0"); + hostparm.ThisHostDNSwlan0 = gContext->GetSetting("HostDNSwlan0"); + hostparm.ThisHostUSEDHCPwlan0 = gContext->GetSetting("HostUseDHCPwlan0"); + hostparm.ThisHostGWwlan0 = gContext->GetSetting("HostGWwlan0"); + hostparm.ThisHostActiveonbootwlan0 = gContext->GetSetting("HostActiveonbootwlan0"); + hostparm.ThisHOSTESSIDwlan0 = gContext->GetSetting("HOSTESSIDwlan0"); + hostparm.ThisHostUseEncryptionwlan0 = gContext->GetSetting("HostUseEncryptionwlan0"); + hostparm.ThisHostkeywlan0 = gContext->GetSetting("Hostkeywlan0"); + hostparm.ThisHostMTUwlan0 = gContext->GetSetting("HostMTUwlan0"); + + hostparm.ThisHostIPwlan1 = gContext->GetSetting("HostIPwlan1"); + hostparm.ThisHostNETMASKwlan1 = gContext->GetSetting("HostNETMASKwlan1"); + hostparm.ThisHostDNSwlan1 = gContext->GetSetting("HostDNSwlan1"); + hostparm.ThisHostUSEDHCPwlan1 = gContext->GetSetting("HostUseDHCPwlan1"); + hostparm.ThisHostGWwlan1 = gContext->GetSetting("HostGWwlan1"); + hostparm.ThisHostActiveonbootwlan1 = gContext->GetSetting("HostActiveonbootwlan1"); + hostparm.ThisHOSTESSIDwlan1 = gContext->GetSetting("HOSTESSIDwlan1"); + hostparm.ThisHostUseEncryptionwlan1 = gContext->GetSetting("HostUseEncryptionwlan1"); + hostparm.ThisHostkeywlan1 = gContext->GetSetting("Hostkeywlan1"); + hostparm.ThisHostMTUwlan1 = gContext->GetSetting("HostMTUwlan1"); + + hostparm.ThisHostIPath0 = gContext->GetSetting("HostIPath0"); + hostparm.ThisHostNETMASKath0 = gContext->GetSetting("HostNETMASKath0"); + hostparm.ThisHostDNSath0 = gContext->GetSetting("HostDNSath0"); + hostparm.ThisHostUSEDHCPath0 = gContext->GetSetting("HostUseDHCPath0"); + hostparm.ThisHostGWath0 = gContext->GetSetting("HostGWath0"); + hostparm.ThisHostActiveonbootath0 = gContext->GetSetting("HostActiveonbootath0"); + hostparm.ThisHOSTESSIDath0 = gContext->GetSetting("HOSTESSIDath0"); + hostparm.ThisHostUseEncryptionath0 = gContext->GetSetting("HostUseEncryptionath0"); + hostparm.ThisHostkeyath0 = gContext->GetSetting("Hostkeyath0"); + hostparm.ThisHostMTUath0 = gContext->GetSetting("HostMTUath0"); + + + hostparm.ThisHostServiceRRD = gContext->GetSetting("HostServiceRRD"); + hostparm.ThisSamba = gContext->GetSetting("HostServiceSamba"); + hostparm.ThisHostServiceSamba_media = gContext->GetSetting("HostServiceSamba_media"); + hostparm.ThisHostServiceSamba_write = gContext->GetSetting("HostServiceSamba_write"); + hostparm.ThisHostServiceSamba_home = gContext->GetSetting("HostServiceSamba_home"); + hostparm.ThisHostServiceSamba_writehome = gContext->GetSetting("HostServiceSamba_writehome"); + hostparm.ThisHostServiceSamba_domain = gContext->GetSetting("HostServiceSamba_domain"); + hostparm.ThisNFS = gContext->GetSetting("HostServiceNFS"); + hostparm.ThisMythWEB = gContext->GetSetting("HostServiceMythWEB"); + hostparm.ThisHostwebauth = gContext->GetSetting("HOSTwebauth"); + + hostparm.ThisHostRunDHCP = gContext->GetSetting("HostRunDHCP"); + hostparm.ThisSystemType = gContext->GetSetting("HostSystemType"); + hostparm.ThisRemote = gContext->GetSetting("HostRemoteType"); + hostparm.ThisHostLircWait = gContext->GetSetting("HostLircWait"); + // hostparm.ThisBlaster = gContext->GetSetting("HostTransmitproto"); + hostparm.ThisReceiverType = gContext->GetSetting("HostReceiverType"); + hostparm.ThisHostSerialPortlirc = gContext->GetSetting("HostSerialPortlirc"); + hostparm.ThisHostUseEvrouter = gContext->GetSetting("HostRunEvrouter"); + hostparm.ThisHostEvrouterConfig = gContext->GetSetting("HostEvrouterConfig"); + hostparm.ThisXres = gContext->GetSetting("HostXres"); + hostparm.ThisAutodown = gContext->GetSetting("HostAutodown"); + hostparm.ThisShutdowntime = gContext->GetSetting("HostShutdownTime"); + hostparm.ThisShutdowntime2 = gContext->GetSetting("HostShutdownTime2"); + hostparm.ThisWakeuptime = gContext->GetSetting("HostWakeupTime"); + hostparm.ThisUseNVRAM = gContext->GetSetting("HostUseNVRAM"); + hostparm.ThisUseWOL = gContext->GetSetting("HostUseWOL"); + hostparm.ThisKeepPackage = gContext->GetSetting("HostKeepPackages"); + hostparm.ThisMythWelcome = gContext->GetSetting("HostUseMythWelcome"); + hostparm.ThisHaveNFS = gContext->GetSetting("HostHaveCentralNFS"); + hostparm.ThisNFSserver = gContext->GetSetting("HostCentralNFSIP"); + hostparm.ThisNFSmountpoint = gContext->GetSetting("HostNFSmountpoint"); + hostparm.ThisHostupdateplan = gContext->GetSetting("Hostupdateplan"); + hostparm.ThisShowToolTips = gContext->GetSetting("HostShowToolTips"); + hostparm.ThisRunfrontend = gContext->GetSetting("HostRunFrontend"); + hostparm.ThisHostZipcode = gContext->GetSetting("HostZipcode"); + hostparm.ThisHostncidClient = gContext->GetSetting("HostncidClient"); + hostparm.ThisHostncidDaemon = gContext->GetSetting("HostncidDaemon"); + hostparm.ThisHostSerialPortncid = gContext->GetSetting("HostSerialPortncid"); + hostparm.ThisHostbootsplash = gContext->GetSetting("Hostbootsplash"); + + hostparm.ThisXIgnoreConfig =gContext->GetSetting("HostXIgnoreConfig"); + hostparm.ThisXcardtype =gContext->GetSetting("HostXcardtype"); + hostparm.ThisXUseAdvanced =gContext->GetSetting("HostXUseAdvanced"); + hostparm.ThisXIgnoreEDID =gContext->GetSetting("HostXIgnoreEDID"); + hostparm.ThisXconnection =gContext->GetSetting("HostXconnection"); + hostparm.ThisXDisplaysize =gContext -> GetSetting("HostXDisplaysize"); + hostparm.ThisHostXNvidia1080p =gContext -> GetSetting("HostXNvidia1080p"); + hostparm.ThisHostXNvidia1080i =gContext -> GetSetting("HostXNvidia1080i"); + hostparm.ThisHostXNvidia720p =gContext -> GetSetting("HostXNvidia720p"); + hostparm.ThisHostXNvidia480p =gContext -> GetSetting("HostXNvidia480p"); +// EDID settings + QString tempstring; + tempstring = gContext->GetSetting("HostXHsyncLow"); + tempstring.append(" - "); + tempstring.append(gContext->GetSetting("HostXHsyncHigh") ); + hostparm.ThisXHsync=tempstring; + tempstring =""; + tempstring=gContext->GetSetting("HostXVrefreshLow"); + tempstring.append(" - "); + tempstring.append(gContext->GetSetting("HostXVrefreshHigh")); + hostparm.ThisXVrefresh=tempstring; + +// Assemble the advanced modeline string + QString modelinetype = gContext->GetSetting("HostXModelineCatagory");; + QString tempmodeline = "HostXadvancedres" + modelinetype ; + QString modeline = gContext ->GetSetting(tempmodeline); + hostparm.ThisXresadvanced = modelinetype +"_"+modeline; + +// Gather settings based on card type + if ( hostparm.ThisXcardtype == "nVidia" ) + { + hostparm.ThisXTVstandard = gContext->GetSetting("HostXnVidiaTVstandard"); + hostparm.ThisXTVconnection= gContext->GetSetting("HostXnVidiaTVformat"); + modelinetype = gContext->GetSetting("HostXNvidiaModelineCatagory");; + tempmodeline = "HostXNvidiaadvancedres" + modelinetype ; + modeline = gContext ->GetSetting(tempmodeline); + hostparm.ThisXresadvanced = modelinetype +"_"+modeline; + } + else if ( hostparm.ThisXcardtype == "ATI" ) + { + hostparm.ThisXTVstandard = gContext->GetSetting("HostXATITVstandard"); + hostparm.ThisXTVconnection= gContext->GetSetting("HostXati-tvformat"); + } + + +//********************************************************************************************* +// AUDIO SETTINGS +//****************************************************************************************** + hostparm.ThisHostAudiotype = gContext ->GetSetting("HostAudiotype"); + hostparm.ThisHostsyncXine = gContext ->GetSetting("HostsyncXine"); + hostparm.ThisHostsyncMplayer = gContext ->GetSetting("HostsyncMplayer"); + hostparm.ThisHostsyncMythMusic = gContext ->GetSetting("HostsyncMythMusic"); + hostparm.ThisHostsyncMythFrontend = gContext ->GetSetting("HostsyncMythFrontend"); + hostparm.ThisHostSoundTypeout = gContext ->GetSetting("HostSoundTypeout") ; + hostparm.ThisHostSoundOSSAnalog = gContext ->GetSetting("HostSoundOssAnalog"); + hostparm.ThisHostSoundOSSDigital = gContext ->GetSetting("HostSoundOssDigital"); + hostparm.ThisHostSoundALSATypeout = gContext ->GetSetting("HostSoundALSATypeout") ; + hostparm.ThisHostSoundALSAAnalog = gContext ->GetSetting("HostSoundALSAAnalog"); + hostparm.ThisHostSoundALSADigital = gContext ->GetSetting("HostSoundALSADigital"); + + if ( hostparm.ThisHostAudiotype == "OSS" ) + { + QString tempdevice; + QChar tempchar ; + hostparm.ThisHostSoundDevice = "/dev/dsp"; + if ( hostparm.ThisHostSoundTypeout == "Analog" ) + tempdevice = hostparm.ThisHostSoundOSSAnalog ; + + if ( hostparm.ThisHostSoundTypeout == "Digital" ) + tempdevice = hostparm.ThisHostSoundOSSDigital ; + + int tlength=(tempdevice.length() -2 ); + if ( tlength > 0 ) + { + tempchar = tempdevice.at( tlength); + hostparm.ThisHostSoundDevice.append(tempchar); + }; + } + + + if ( hostparm.ThisHostAudiotype == "ALSA" ) + { + QString tempdevice; + hostparm.ThisHostSoundTypeout = hostparm.ThisHostSoundALSATypeout; + if ( hostparm.ThisHostSoundTypeout == "Digital" ) + tempdevice=hostparm.ThisHostSoundALSADigital; + if ( hostparm.ThisHostSoundTypeout == "Analog" ) + tempdevice=hostparm.ThisHostSoundALSAAnalog; + + tempdevice = tempdevice.section( "(", 1,1 ); + tempdevice = tempdevice.section( ")", 0,0 ); + hostparm.ThisHostSoundDevice = tempdevice; + } +// Turn off internal audio controls is digital audio is seleced + if ( hostparm.ThisHostSoundTypeout == "Digital" ) + gContext->SaveSetting("MythControlsVolume","0"); + +// LCD TYPE + hostparm.ThisHostLCDType = gContext ->GetSetting("HostLCDType"); + if ( hostparm.ThisHostLCDType != "no_lcd" && hostparm.ThisHostLCDType != "tinker" && hostparm.ThisHostLCDType != "" ) + { + // enable mythtv lcddevice + gContext->SaveSetting("LCDEnable","1"); + }; +// Backupsettings + hostparm.ThisHostRemoteBackup = gContext ->GetSetting("HostRemoteBackup"); + hostparm.ThisHostRemoteBackupDir = gContext ->GetSetting("HostRemoteBackupDir"); +//plugins + hostparm.ThisHostpluginmytharchive = gContext->GetSetting("Hostpluginmytharchive"); + hostparm.ThisHostpluginmythbrowser = gContext->GetSetting("Hostpluginmythbrowser"); + hostparm.ThisHostpluginmythcontrols = gContext->GetSetting("Hostpluginmythcontrols"); + hostparm.ThisHostpluginmythflix = gContext->GetSetting("Hostpluginmythflix"); + hostparm.ThisHostpluginmythgallery = gContext->GetSetting("Hostpluginmythgallery"); + hostparm.ThisHostpluginmythgame = gContext->GetSetting("Hostpluginmythgame"); + hostparm.ThisHostpluginmythmovietime = gContext->GetSetting("Hostpluginmythmovietime"); + hostparm.ThisHostpluginmythmusic = gContext->GetSetting("Hostpluginmythmusic"); + hostparm.ThisHostpluginmythnews = gContext->GetSetting("Hostpluginmythnews"); + hostparm.ThisHostpluginmythphone = gContext->GetSetting("Hostpluginmythphone"); + hostparm.ThisHostpluginmythsmolt = gContext->GetSetting("Hostpluginmythsmolt"); + hostparm.ThisHostpluginmythvideo = gContext->GetSetting("Hostpluginmythvideo"); + hostparm.ThisHostpluginmythweather = gContext->GetSetting("Hostpluginmythweather"); + hostparm.ThisHostpluginmythzoneminder = gContext->GetSetting("Hostpluginmythzoneminder"); + hostparm.ThisHostpluginmythgameFceu = gContext->GetSetting("HostpluginmythgameFceu"); + hostparm.ThisHostpluginmythgameZsnes = gContext->GetSetting("HostpluginmythgameZsnes"); + hostparm.ThisHostpluginmythgameMame = gContext->GetSetting("HostpluginmythgameMame"); + hostparm.ThisHostpluginmythvideo_dvdcss = gContext->GetSetting("Hostpluginmythvideo_dvdcss"); + hostparm.ThisHostpluginmythappletrailers= gContext->GetSetting("Hostpluginmythappletrailers"); + hostparm.ThisHostpluginmythstream= gContext->GetSetting("Hostpluginmythstream"); + hostparm.ThisHostpluginmythvodka= gContext->GetSetting("Hostpluginmythvodka"); + hostparm.ThisHostMiro= gContext->GetSetting("HostMiro"); + hostparm.ThisHostpluginmythgameMednafen= gContext->GetSetting("HostpluginmythgameMednafen"); + hostparm.ThisHostpluginmythgameROMDB= gContext->GetSetting("HostpluginmythgameROMDB"); + hostparm.ThisHostXine = gContext->GetSetting("HostXine"); + hostparm.ThisHostwebmin = gContext->GetSetting("Hostwebmin"); + hostparm.ThisHostfuppes = gContext->GetSetting("Hostfuppes"); + hostparm.ThisHostfoldingathome = gContext->GetSetting("Hostfoldingathome"); + hostparm.ThisHostfoldingusername = gContext->GetSetting("Hostfoldingusername"); + hostparm.ThisHostfoldingworksize = gContext->GetSetting("Hostfoldingworksize"); + hostparm.ThisHostDDnslogin = gContext->GetSetting("HostDDnslogin"); + hostparm.ThisHostDDnspassword = gContext->GetSetting("HostDDnspassword"); + hostparm.ThisHostDDnshostname = gContext->GetSetting("HostDDnshostname"); + hostparm.ThisHostDDnsEnable = gContext->GetSetting("HostDDnsEnable"); + hostparm.ThisHostscreensavertype = gContext->GetSetting("Hostscreensavertype"); + hostparm.ThisHostscreensaveridle = gContext->GetSetting("Hostscreensaveridle"); + if (gContext->GetSetting("HostScreensaverBlank") == "1" ) + hostparm.ThisHostscreensavertheme="Blank"; + else if (gContext->GetSetting("HostScreensaverRandom") == "1" ) + hostparm.ThisHostscreensavertheme="Random"; + else + { + if ( hostparm.ThisHostscreensavertype == "gscreensaver" ) + hostparm.ThisHostscreensavertheme = gContext->GetSetting("HostGScreensavertheme"); + if ( hostparm.ThisHostscreensavertype == "xscreensaver" ) + hostparm.ThisHostscreensavertheme = gContext->GetSetting("HostXScreensavertheme"); + } + + hostparm.ThisHostTransmitproto_1 = + gContext->GetSetting("HostTransmitproto_1"); + hostparm.ThisHostTransmitproto_2 = + gContext->GetSetting("HostTransmitproto_2"); + hostparm.ThisHostTransmitproto_3 = + gContext->GetSetting("HostTransmitproto_3"); + hostparm.ThisHostTransmitproto_4 = + gContext->GetSetting("HostTransmitproto_4"); + hostparm.ThisHostBlasterType = + gContext->GetSetting("HostBlasterType"); + hostparm.ThisHostSerialPort_blasterlirc = + gContext->GetSetting("HostSerialPort_blasterlirc"); + hostparm.ThisHostnumblaster = "1"; + if ( hostparm.ThisHostBlasterType == "CommandIR" ) + hostparm.ThisHostnumblaster = "4" ; + if ( hostparm.ThisHostBlasterType == "MCE" ) + hostparm.ThisHostnumblaster = "2" ; + hostparm.ThisHOSTrootSSH = gContext->GetSetting("HOSTrootSSH"); + + + + + +//______________________WRITE OUT THE FILE__________________________ + QString systemheader; + + myfile.open ("/etc/systemconfig"); + myfile << "hostname=\"" + hostparm.ThisHostName + "\"\n"; + myfile << "dhcphostname=\"" + hostparm.ThisHostDHCPhostname + "\"\n"; + myfile << "timezone=\"" + hostparm.ThisTimeZone + "\"\n"; + myfile << "ip=\"" + hostparm.ThisHostIP + "\"\n"; + myfile << "netmask=\"" + hostparm.ThisNETMASK + "\"\n"; + myfile << "route=\"" + hostparm.ThisGW + "\"\n"; + myfile << "nameserver=\"" + hostparm.ThisDNS + "\"\n"; + + myfile << "default_interface=\"" + hostparm.ThisHostDefaultInterface + "\"\n"; + + if ( hostparm.ThisHostActiveonbooteth0 == "1" ) + { + systemheader= "\n#Network config for eth0 \n" ; + myfile << systemheader ; + myfile << "Hostipeth0=\"" + hostparm.ThisHostIPeth0 + "\"\n"; + myfile << "Hostnetmasketh0=\"" +hostparm.ThisHostNETMASKeth0 + "\"\n"; + myfile << "HostDNSeth0=\"" +hostparm.ThisHostDNSeth0 + "\"\n"; + myfile << "HostUSEDHCPeth0=\"" +hostparm.ThisHostUSEDHCPeth0 + "\"\n"; + myfile << "HostGWeth0=\"" +hostparm.ThisHostGWeth0 + "\"\n"; + myfile << "HostActiveeth0=\"" +hostparm.ThisHostActiveonbooteth0 + "\"\n"; + myfile << "HostESSIDeth0=\"" + hostparm.ThisHOSTESSIDeth0 + "\"\n"; + myfile << "HostUseEncryptioneth0=\"" + hostparm.ThisHostUseEncryptioneth0 + "\"\n"; + myfile << "HostKeyeth0=\"" + hostparm.ThisHostkeyeth0 + "\"\n"; + myfile << "HOST_iswirelesseth0=\"" + hostparm.ThisHOST_iswirelesseth0 + "\"\n"; + myfile << "HostMTUeth0=\"" + hostparm.ThisHostMTUeth0 + "\"\n"; + } + + if ( hostparm.ThisHostActiveonbooteth1 == "1" ) + { + systemheader= "\n#Network config for eth1 \n" ; + myfile << systemheader ; + myfile << "Hostipeth1=\"" + hostparm.ThisHostIPeth1 + "\"\n"; + myfile << "Hostnetmasketh1=\"" +hostparm.ThisHostNETMASKeth1 + "\"\n"; + myfile << "HostDNSeth1=\"" +hostparm.ThisHostDNSeth1 + "\"\n"; + myfile << "HostUSEDHCPeth1=\"" +hostparm.ThisHostUSEDHCPeth1 + "\"\n"; + myfile << "HostGWeth1=\"" +hostparm.ThisHostGWeth1 + "\"\n"; + myfile << "HostActiveeth1=\"" +hostparm.ThisHostActiveonbooteth1 + "\"\n"; + myfile << "HostESSIDeth1=\"" + hostparm.ThisHOSTESSIDeth1 + "\"\n"; + myfile << "HostUseEncryptioneth1=\"" + hostparm.ThisHostUseEncryptioneth1 + "\"\n"; + myfile << "HostKeyeth1=\"" + hostparm.ThisHostkeyeth1 + "\"\n"; + myfile << "HOST_iswirelesseth1=\"" + hostparm.ThisHOST_iswirelesseth1 + "\"\n"; + myfile << "HostMTUeth1=\"" + hostparm.ThisHostMTUeth1 + "\"\n"; + } + if ( hostparm.ThisHostActiveonbootwlan0 == "1" ) + { + systemheader= "\n#Network config for wlan0 \n" ; + myfile << systemheader ; + myfile << "Hostipwlan0=\"" + hostparm.ThisHostIPwlan0 + "\"\n"; + myfile << "Hostnetmaskwlan0=\"" +hostparm.ThisHostNETMASKwlan0 + "\"\n"; + myfile << "HostDNSwlan0=\"" +hostparm.ThisHostDNSwlan0 + "\"\n"; + myfile << "HostUSEDHCPwlan0=\"" +hostparm.ThisHostUSEDHCPwlan0 + "\"\n"; + myfile << "HostGWwlan0=\"" +hostparm.ThisHostGWwlan0 + "\"\n"; + myfile << "HostActivewlan0=\"" +hostparm.ThisHostActiveonbootwlan0 + "\"\n"; + myfile << "HostESSIDwlan0=\"" + hostparm.ThisHOSTESSIDwlan0 + "\"\n"; + myfile << "HostUseEncryptionwlan0=\"" + hostparm.ThisHostUseEncryptionwlan0 + "\"\n"; + myfile << "HostKeywlan0=\"" + hostparm.ThisHostkeywlan0 + "\"\n"; + myfile << "HOST_iswirelesswlan0=\"" + hostparm.ThisHOST_iswirelesswlan0 + "\"\n"; + myfile << "HostMTUwlan0=\"" + hostparm.ThisHostMTUwlan0 + "\"\n"; + } + if ( hostparm.ThisHostActiveonbootwlan1 == "1" ) + { + systemheader= "\n#Network config for wlan1 \n" ; + myfile << systemheader ; + myfile << "Hostipwlan1=\"" + hostparm.ThisHostIPwlan1 + "\"\n"; + myfile << "Hostnetmaskwlan1=\"" +hostparm.ThisHostNETMASKwlan1 + "\"\n"; + myfile << "HostDNSwlan1=\"" +hostparm.ThisHostDNSwlan1 + "\"\n"; + myfile << "HostUSEDHCPwlan1=\"" +hostparm.ThisHostUSEDHCPwlan1 + "\"\n"; + myfile << "HostGWwlan1=\"" +hostparm.ThisHostGWwlan1 + "\"\n"; + myfile << "HostActivewlan1=\"" +hostparm.ThisHostActiveonbootwlan1 + "\"\n"; + myfile << "HostESSIDwlan1=\"" + hostparm.ThisHOSTESSIDwlan1 + "\"\n"; + myfile << "HostUseEncryptionwlan1=\"" + hostparm.ThisHostUseEncryptionwlan1 + "\"\n"; + myfile << "HostKeywlan1=\"" + hostparm.ThisHostkeywlan1 + "\"\n"; + myfile << "HOST_iswirelesswlan1=\"" + hostparm.ThisHOST_iswirelesswlan1 + "\"\n"; + myfile << "HostMTUwlan1=\"" + hostparm.ThisHostMTUwlan1 + "\"\n"; + } + + if ( hostparm.ThisHostActiveonbootath0 == "1" ) + { + systemheader= "\n#Network config for ath0 \n" ; + myfile << systemheader ; + myfile << "Hostipath0=\"" + hostparm.ThisHostIPath0 + "\"\n"; + myfile << "Hostnetmaskath0=\"" +hostparm.ThisHostNETMASKath0 + "\"\n"; + myfile << "HostDNSath0=\"" +hostparm.ThisHostDNSath0 + "\"\n"; + myfile << "HostUSEDHCPath0=\"" +hostparm.ThisHostUSEDHCPath0 + "\"\n"; + myfile << "HostGWath0=\"" +hostparm.ThisHostGWath0 + "\"\n"; + myfile << "HostActiveath0=\"" +hostparm.ThisHostActiveonbootath0 + "\"\n"; + myfile << "HostESSIDath0=\"" + hostparm.ThisHOSTESSIDath0 + "\"\n"; + myfile << "HostUseEncryptionath0=\"" + hostparm.ThisHostUseEncryptionath0 + "\"\n"; + myfile << "HostKeyath0=\"" + hostparm.ThisHostkeyath0 + "\"\n"; + myfile << "HOST_iswirelessath0=\"" + hostparm.ThisHOST_iswirelessath0 + "\"\n"; + myfile << "HostMTUath0=\"" + hostparm.ThisHostMTUath0 + "\"\n"; + } + + + systemheader= "\n#Misc \n" ; + myfile << systemheader ; + myfile << "UseSamba=\"" + hostparm.ThisSamba + "\"\n"; + myfile << "Samba_media=\"" + hostparm.ThisHostServiceSamba_media + "\"\n"; + myfile << "Samba_mediareadonly=\"" + hostparm.ThisHostServiceSamba_write + "\"\n"; + myfile << "Samba_home=\"" + hostparm.ThisHostServiceSamba_home + "\"\n"; + myfile << "Samba_homereadonly=\"" + hostparm.ThisHostServiceSamba_writehome + "\"\n"; + myfile << "Samba_domain=\"" + hostparm.ThisHostServiceSamba_domain + "\"\n"; + myfile << "UseHobbit=\"" + hostparm.ThisHostServiceHobbit + "\"\n"; + myfile << "UseRRD=\"" + hostparm.ThisHostServiceRRD + "\"\n"; + myfile << "UseNFS=\"" + hostparm.ThisNFS + "\"\n"; + myfile << "UseMythWEB=\"" + hostparm.ThisMythWEB + "\"\n"; + myfile << "UseMythWEB_auth=\"" + hostparm.ThisHostwebauth + "\"\n"; + myfile << "UseDHCP=\"" + hostparm.ThisDHCP + "\"\n"; + myfile << "RunDHCP=\"" + hostparm.ThisHostRunDHCP + "\"\n"; + myfile << "SystemType=\"" + hostparm.ThisSystemType + "\"\n"; + + myfile << "UseEvrouter=\"" + hostparm.ThisHostUseEvrouter + "\"\n"; + myfile << "EvrouterConfig=\"" + hostparm.ThisHostEvrouterConfig + "\"\n"; + myfile << "dbhost=\"" + hostparm.ThisDBhost + "\"\n"; + myfile << "Xres=\"" + hostparm.ThisXres + "\"\n"; + myfile << "AutoShutdown=\"" + hostparm.ThisAutodown + "\"\n"; + myfile << "Shutdowntime=\"" + hostparm.ThisShutdowntime + "\"\n"; + myfile << "Shutdowntime2=\"" + hostparm.ThisShutdowntime2 + "\"\n"; + myfile << "Wakeuptime=\"" + hostparm.ThisWakeuptime + "\"\n"; + myfile << "UseNVRAM=\"" + hostparm.ThisUseNVRAM + "\"\n"; + myfile << "UseWOL=\"" + hostparm.ThisUseWOL + "\"\n"; + myfile << "KeepPackages=\"" + hostparm.ThisKeepPackage + "\"\n"; + myfile << "UseMythWelcome=\"" + hostparm.ThisMythWelcome + "\"\n"; + myfile << "HaveCentralNFS=\"" + hostparm.ThisHaveNFS + "\"\n"; + myfile << "NFSserver=\"" + hostparm.ThisNFSserver + "\"\n"; + myfile << "NFSmount=\"" + hostparm.ThisNFSmountpoint + "\"\n"; + myfile << "Hostupdateplan=\"" + hostparm.ThisHostupdateplan + "\"\n"; + myfile << "ShowTips=\"" + hostparm.ThisShowToolTips + "\"\n"; + myfile << "PKG_MIRROR=\"" + hostparm.ThisHostPKG_MIRROR + "\"\n"; + myfile << "RunFrontend=\"" + hostparm.ThisRunfrontend + "\"\n"; + myfile << "zipcode=\"" + hostparm.ThisHostZipcode + "\"\n"; + myfile << "ncidclient=\"" + hostparm.ThisHostncidClient + "\"\n"; + myfile << "Runncidd=\"" + hostparm.ThisHostncidDaemon + "\"\n"; + myfile << "nciddSerialPort=\"" + hostparm.ThisHostSerialPortncid + "\"\n"; + myfile << "Usebootsplash=\"" + hostparm.ThisHostbootsplash + "\"\n"; + myfile << "LCDtype=\"" + hostparm.ThisHostLCDType + "\"\n"; + myfile << "RemoteBackup=\"" + hostparm.ThisHostRemoteBackup + "\"\n"; + myfile << "RemoteBackupDir=\"" + hostparm.ThisHostRemoteBackupDir + "\"\n"; + + + systemheader= "\n#X display settings \n" ; + myfile << systemheader ; + myfile << "XIgnoreConfig=\"" + hostparm.ThisXIgnoreConfig + "\"\n"; + myfile << "Xcardtype=\"" + hostparm.ThisXcardtype + "\"\n"; + myfile << "XUseAdvanced=\"" + hostparm.ThisXUseAdvanced + "\"\n"; + myfile << "XIgnoreEDID=\"" + hostparm.ThisXIgnoreEDID + "\"\n"; + myfile << "Xconnection=\"" + hostparm.ThisXconnection + "\"\n"; + myfile << "XHsync=\"" + hostparm.ThisXHsync + "\"\n"; + myfile << "XVrefresh=\"" + hostparm.ThisXVrefresh+ "\"\n"; + myfile << "Xresadvanced=\"" + hostparm.ThisXresadvanced + "\"\n"; + myfile << "XTVstandard=\"" + hostparm.ThisXTVstandard + "\"\n"; + myfile << "XTVconnection=\"" + hostparm.ThisXTVconnection + "\"\n"; + myfile << "XDisplaysize=\"" + hostparm.ThisXDisplaysize + "\"\n"; + myfile << "XnVidia1080p=\"" + hostparm.ThisHostXNvidia1080p+ "\"\n"; + myfile << "XnVidia1080i=\"" + hostparm.ThisHostXNvidia1080i+ "\"\n"; + myfile << "XnVidia720p=\"" + hostparm.ThisHostXNvidia720p+ "\"\n"; + myfile << "XnVidia480p=\"" + hostparm.ThisHostXNvidia480p+ "\"\n"; + + systemheader= "\n#Audio settings\n" ; + myfile << systemheader ; + myfile << "Audiotype=\"" + hostparm.ThisHostAudiotype + "\"\n"; + myfile << "Audiotypeout=\"" + hostparm.ThisHostSoundTypeout + "\"\n"; + myfile << "SoundDevice=\"" + hostparm.ThisHostSoundDevice+ "\"\n"; + myfile << "syncXine=\"" + hostparm.ThisHostsyncXine + "\"\n"; + myfile << "syncMplayer=\"" + hostparm.ThisHostsyncMplayer + "\"\n"; + myfile << "syncMythMusic=\"" + hostparm.ThisHostsyncMythMusic + "\"\n"; + myfile << "syncMythFrontend=\"" + hostparm.ThisHostsyncMythFrontend + "\"\n"; + + + systemheader= "\n#Software settings\n" ; + myfile << systemheader ; + myfile << "mytharchive=\"" + hostparm.ThisHostpluginmytharchive + "\"\n"; + myfile << "mythbrowser=\"" + hostparm.ThisHostpluginmythbrowser + "\"\n"; + myfile << "mythcontrols=\"" + hostparm.ThisHostpluginmythcontrols + "\"\n"; + myfile << "mythflix=\"" + hostparm.ThisHostpluginmythflix + "\"\n"; + myfile << "mythgallery=\"" + hostparm.ThisHostpluginmythgallery + "\"\n"; + myfile << "mythgame=\"" + hostparm.ThisHostpluginmythgame + "\"\n"; + myfile << "mythmovietime=\"" + hostparm.ThisHostpluginmythmovietime + "\"\n"; + myfile << "mythmusic=\"" + hostparm.ThisHostpluginmythmusic + "\"\n"; + myfile << "mythnews=\"" + hostparm.ThisHostpluginmythnews + "\"\n"; + myfile << "mythphone=\"" + hostparm.ThisHostpluginmythphone + "\"\n"; + myfile << "mythsmolt=\"" + hostparm.ThisHostpluginmythsmolt + "\"\n"; + myfile << "mythvideo=\"" + hostparm.ThisHostpluginmythvideo + "\"\n"; + myfile << "mythweather=\"" + hostparm.ThisHostpluginmythweather + "\"\n"; + myfile << "mythzoneminder=\"" + hostparm.ThisHostpluginmythzoneminder + "\"\n"; + + myfile << "fceu=\"" + hostparm.ThisHostpluginmythgameFceu + "\"\n"; + myfile << "zsnes=\"" + hostparm.ThisHostpluginmythgameZsnes + "\"\n"; + myfile << "mame=\"" + hostparm.ThisHostpluginmythgameMame + "\"\n"; + myfile << "dvdcss=\"" + hostparm.ThisHostpluginmythvideo_dvdcss + "\"\n"; + + myfile << "mythappletrailers=\"" + hostparm.ThisHostpluginmythappletrailers + "\"\n"; + myfile << "mythstream=\"" + hostparm.ThisHostpluginmythstream + "\"\n"; + myfile << "mythvodka=\"" +hostparm.ThisHostpluginmythvodka + "\"\n"; + myfile << "miro=\"" + hostparm.ThisHostMiro + "\"\n"; + myfile << "mednafen=\"" + hostparm.ThisHostpluginmythgameMednafen + "\"\n"; + myfile << "romdb=\"" + hostparm.ThisHostpluginmythgameROMDB + "\"\n"; + myfile << "xine=\"" + hostparm.ThisHostXine + "\"\n"; + myfile << "webmin=\"" + hostparm.ThisHostwebmin + "\"\n"; + myfile << "fuppes=\"" + hostparm.ThisHostfuppes + "\"\n"; + myfile << "foldingathome=\"" + hostparm.ThisHostfoldingathome + "\"\n"; + myfile << "foldingusername=\"" + hostparm.ThisHostfoldingusername + "\"\n"; + myfile << "foldingworksize=\"" + hostparm.ThisHostfoldingworksize + "\"\n"; + + + + myfile << "DDnslogin=\"" + hostparm.ThisHostDDnslogin + "\"\n"; + myfile << "DDnspassword=\"" + hostparm.ThisHostDDnspassword + "\"\n"; + myfile << "DDnshostname=\"" + hostparm.ThisHostDDnshostname + "\"\n"; + myfile << "DDnsEnable=\"" + hostparm.ThisHostDDnsEnable + "\"\n"; + myfile << "Screensavertype=\"" + hostparm.ThisHostscreensavertype + "\"\n"; + myfile << "Screensaveridle=\"" + hostparm.ThisHostscreensaveridle + "\"\n"; + myfile << "Screensavertheme=\"" + hostparm.ThisHostscreensavertheme + "\"\n"; + + systemheader="\n#IR settings\n" ; + myfile << systemheader ; + myfile << "Remotetype=\"" + hostparm.ThisRemote + "\"\n"; + //myfile << "Blastertype=\"" + hostparm.ThisBlaster + "\"\n"; + myfile << "ReceiverType=\"" + hostparm.ThisReceiverType + "\"\n"; + myfile << "HostLircWait=\"" + hostparm.ThisHostLircWait + "\"\n"; + myfile << "ReceiverSerialport=\"" + hostparm.ThisHostSerialPortlirc + "\"\n"; + myfile << "HostTransmitproto_1=\"" + hostparm.ThisHostTransmitproto_1 + "\"\n"; + myfile << "HostTransmitproto_2=\"" + hostparm.ThisHostTransmitproto_2 + "\"\n"; + myfile << "HostTransmitproto_3=\"" + hostparm.ThisHostTransmitproto_3 + "\"\n"; + myfile << "HostTransmitproto_4=\"" + hostparm.ThisHostTransmitproto_4 + "\"\n"; + + myfile << "HostBlasterType=\"" + hostparm.ThisHostBlasterType + "\"\n"; + myfile << "HostSerialPort_blasterlirc=\"" + hostparm.ThisHostSerialPort_blasterlirc + "\"\n"; + myfile << "Hostnumblaster=\"" + hostparm.ThisHostnumblaster + "\"\n"; + myfile << "rootSSH=\"" + hostparm.ThisHOSTrootSSH + "\"\n"; + + myfile.close(); + +} + + +MythInstallSettings::MythInstallSettings() +{ + VerticalConfigurationGroup* vcg = new VerticalConfigurationGroup(false,false,true,true); + VerticalConfigurationGroup* denied = new VerticalConfigurationGroup(false,false,true,true); + TransLabelSetting *deniedlabel = new TransLabelSetting(); + deniedlabel->setValue(" You do not have access to this screen " ); denied->addChild(deniedlabel); + if ( displaymysqlonly ) + { + vcg->addChild(HostMysqlserverip_listbox()); + vcg->addChild(ThemePainter()); + addChild(vcg); + } + else + { + vcg->setLabel(QObject::tr("Host Settings")); + // Check to see if screen should appear + if ( displayshownetwork ) + { + //Check to see if screen is allowed to appear + if ( ((gContext->GetSetting("Hostaccessnetwork")) == "0" ) ) + { + denied ->setLabel(QObject::tr("Host Settings")); + addChild(denied); + } + else + { + + hostparm.ThisHostnetOLD = gContext ->GetSetting("HostNetDevice"); + QString s = "HostActiveonboot"; + s+=hostparm.ThisHostnetOLD; + hostparm.ThisHostnetActiveOLD = gContext ->GetSetting(s); + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare( "delete from settings where hostname=:HOSTNAME and value = 'HOSTNetDevice'; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + + VerticalConfigurationGroup* networksettings = new VerticalConfigurationGroup(false,true ,false,false); + networksettings->addChild(HostMyhostname()); + networksettings->addChild(HostDHCPHostname()); + networksettings ->setLabel(QObject::tr("Network Settings Page (1/2)")); + + NetworkSettingsFrame *netsettingsframe = new NetworkSettingsFrame(); + addChild(networksettings); + addChild(netsettingsframe); + + }; + } + + if ( displayshowhostype ) + { + if ( ((gContext->GetSetting("Hostaccesshostype")) =="0" )) + { + denied ->setLabel(QObject::tr("System type")); + addChild(denied); + } + else + { + SystemtypeGroup *systemtypegroup = new SystemtypeGroup(); + vcg->addChild(systemtypegroup); + addChild(vcg); + } + } + + if ( displayshowmisc ) + { + if ( ((gContext->GetSetting("Hostaccessmisc")) == "0" )) + { + denied ->setLabel(QObject::tr("NFS Settings")); + addChild(denied); + } + else + { + MiscMainFrame *miscsettings = new MiscMainFrame(); + MiscMainFrame2 *miscsettings2 = new MiscMainFrame2(); + addChild(miscsettings); + addChild(miscsettings2); + } + } + if ( displayshowshutdown ) + { + if ( ((gContext->GetSetting("Hostaccesssleep")) == "0" )) + { + denied ->setLabel(QObject::tr("WOL settings")); + addChild(denied); + } + else + { + WakeSettings *wakesettings = new WakeSettings(); + addChild(wakesettings); + } + } + if ( displayshowadvanced ) + { + if ( ((gContext->GetSetting("Hostaccessadvanced")) == "0" ) ) + { + denied ->setLabel(QObject::tr("Advaned Settings")); + addChild(denied); + } + else + { + AdvancedSettings *advancedsettings = new AdvancedSettings(); + AdvancedSettings_2 *advancedsettings_2 = new AdvancedSettings_2(); + + // Screensaverhostsettings *advancedsettings_3 = new Screensaverhostsettings(); +// advancedsettings_3 ->setLabel(QObject::tr("Advanced settings page 3")); + + + addChild(advancedsettings); + addChild(advancedsettings_2); + // addChild(advancedsettings_3); + } + } + if ( displayshowsound ) + { + if ( ((gContext->GetSetting("Hostaccesssound")) =="0") ) + { + denied ->setLabel(QObject::tr("Sound Settings")); + addChild(denied); + } + else + { + //remove old sound card setting from the db. This is useful for when the saved setting is no longer valid for this machine. + // Later search the list and set the value to the old setting if found in the dropdown. + hostparm.OLDHostSoundOSSAnalog = gContext ->GetSetting("HostSoundOssAnalog"); + hostparm.OLDHostSoundOSSDigital = gContext ->GetSetting("HostSoundOssDigital"); + hostparm.OLDHostSoundALSAAnalog = gContext ->GetSetting("HostSoundALSAAnalog"); + hostparm.OLDHostSoundALSADigital= gContext ->GetSetting("HostSoundALSADigital"); + + + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare( "delete from settings where hostname=:HOSTNAME and value = 'HOSTSoundOssAnalog'; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + query.prepare( "delete from settings where hostname=:HOSTNAME and value = 'HOSTSoundALSAAnalog'; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + query.prepare( "delete from settings where hostname=:HOSTNAME and value = 'HOSTSoundALSADigital'; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + query.prepare( "delete from settings where hostname=:HOSTNAME and value = 'HOSTSoundOssDigital'; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + + SoundSettings *soundsettings = new SoundSettings(); + addChild(soundsettings); + } + } + if ( displayshowadvancedX ) + { + if ( ((gContext->GetSetting("HostaccessadvancedX")) == "0" )) + { + denied ->setLabel(QObject::tr("AdvancedX Settings")); + addChild(denied); + } + else + { + AdvancedXSettings *advancedXsettings = new AdvancedXSettings(); + addChild(advancedXsettings); + } + } + if ( displayaccesscontrol ) + { + VerticalConfigurationGroup* accessettings = + new VerticalConfigurationGroup(false, true,false,false);; + ConfigurationGroup *GridAccess = + new GridConfigurationGroup(2,false,false,false,false); + + GridAccess->addChild(Hostaccessmisc()); + GridAccess->addChild(Hostaccesssleep()); + GridAccess->addChild(Hostaccessadvanced()); + GridAccess->addChild(HostaccessadvancedX()); + GridAccess->addChild(Hostaccesssound()); + GridAccess->addChild(Hostaccessplugins()); +// GridAccess->addChild(Hostaccessuser()); + GridAccess->addChild(Hostaccesswebuser()); + + accessettings->addChild(Hostaccessnetwork()); + accessettings->addChild(new ACCESShostsettings); + accessettings->addChild(GridAccess); + accessettings ->setLabel(QObject::tr("Access control")); + addChild(accessettings); + } + + if ( displayplugins ) + { + if ( ((gContext->GetSetting("Hostaccessplugins")) == "0" )) + { + denied ->setLabel(QObject::tr("Plugins")); + addChild(denied); + } + else + { + ConfigurationGroup *GridShowPlugin = new GridConfigurationGroup(2); + GridShowPlugin->addChild(Hostpluginmytharchive()); + GridShowPlugin->addChild(Hostpluginmythbrowser()); + GridShowPlugin->addChild(Hostpluginmythcontrols()); + GridShowPlugin->addChild(Hostpluginmythflix()); + GridShowPlugin->addChild(Hostpluginmythgallery()); + GridShowPlugin->addChild(Hostpluginmythmovietime()); + + ConfigurationGroup *GridShowPlugin2 = new GridConfigurationGroup(2); + GridShowPlugin2->addChild(Hostpluginmythmusic()); + GridShowPlugin2->addChild(Hostpluginmythnews()); + GridShowPlugin2->addChild(Hostpluginmythphone()); + GridShowPlugin2->addChild(Hostpluginmythsmolt()); + GridShowPlugin2->addChild(Hostpluginmythweather()); + GridShowPlugin2->addChild(Hostpluginmythzoneminder()); + + ConfigurationGroup *GridShowPlugin4 = new GridConfigurationGroup(2); + GridShowPlugin4->addChild(Hostpluginmythappletrailers()); + GridShowPlugin4->addChild(Hostpluginmythstream()); + GridShowPlugin4->addChild(Hostpluginmythvodka()); + GridShowPlugin4->addChild(HostMiro()); + GridShowPlugin4->addChild(HostXine()); + GridShowPlugin4->addChild(Hostwebmin()); + + ConfigurationGroup *GridShowPlugin5 = new GridConfigurationGroup(2); + GridShowPlugin5->addChild(Hostfuppes()); + + ConfigurationGroup *GridShowPlugin6 = new VerticalConfigurationGroup(true,true); + GridShowPlugin6->addChild(Hostfoldingathome()); + GridShowPlugin6->addChild(Hostfoldingusername()); + GridShowPlugin6->addChild(Hostfoldingworksize()); + + ConfigurationGroup *Mythvideoplugin = new HorizontalConfigurationGroup(); + Mythvideoplugin->addChild(Hostpluginmythvideo()); + Mythvideoplugin->addChild(Hostpluginmythvideo_dvdcss()); + + + ConfigurationGroup *GridShowPlugin3 = new VerticalConfigurationGroup(true,true); + GridShowPlugin3->addChild(new MythGamesettings); + GridShowPlugin3->addChild(Mythvideoplugin); + + + + addChild(GridShowPlugin); + addChild(GridShowPlugin2); + addChild(GridShowPlugin3); + addChild(GridShowPlugin4); + addChild(GridShowPlugin5); + addChild(GridShowPlugin6); + } + } + if ( displayuser ) + { + if ( ((gContext->GetSetting("Hostaccessuser")) == "0" )) + { + denied ->setLabel(QObject::tr("User Management")); + addChild(denied); + } + else + { + UserManagement *usermanagement = new UserManagement(); + addChild(usermanagement); + } + } + + if ( displaywebuser ) + { + if ( ((gContext->GetSetting("Hostaccesswebuser")) == "0" )) + { + denied ->setLabel(QObject::tr("Web security")); + addChild(denied); + } + else + { + WebPasswordFrame *webpasswordframe = new WebPasswordFrame(); + addChild(webpasswordframe); + + } + + } + if ( displayddns ) + { + if ( ((gContext->GetSetting("Hostaccessddns")) == "0" )) + { + denied ->setLabel(QObject::tr("DDNS security")); + addChild(denied); + } + else + { + DDnssettings *ddnsframe = new DDnssettings(); + addChild(ddnsframe); + } + } + if ( displayinfrared ) + { +// if ( ((gContext->GetSetting("Hostaccessddns")) == "0" )) +// { +// denied ->setLabel(QObject::tr("DDNS security")); +// addChild(denied); +// } +// else +// { + VERBOSE(VB_IMPORTANT, "LIRC"); + IRFrame *irframe = new IRFrame(); + IR_TransmitFrame *transmitframe = new IR_TransmitFrame(); + LCDFrame *lcdframe = new LCDFrame(); + addChild(irframe); + addChild(transmitframe); + addChild(lcdframe); + //} + } + if ( displayscreensaver ) + { +// if ( ((gContext->GetSetting("Hostaccessddns")) == "0" )) +// { +// denied ->setLabel(QObject::tr("DDNS security")); +// addChild(denied); +// } +// else +// { + VERBOSE(VB_IMPORTANT, "screensaver"); + Screensaverhostsettings *screensaver = new Screensaverhostsettings(); + addChild(screensaver); + //} + } + } + +}; + diff --git a/abs/core/mythinstall/installsettings.h b/abs/core/mythinstall/installsettings.h new file mode 100755 index 0000000..0df1d4e --- /dev/null +++ b/abs/core/mythinstall/installsettings.h @@ -0,0 +1,489 @@ +#ifndef WELCOMESETTINGS_H +#define WELCOMESETTINGS_H + +#include +#include "mythdialogs.h" +#include "libmyth/mythdialogs.h" +#include "libmyth/mythwidgets.h" + + +class SystemtypeGroup: public TriggeredConfigurationGroup { +Q_OBJECT +public: + SystemtypeGroup(); + HostComboBox *HostSystemType; +public slots: + void SystemtypeHelp(); +}; + +//------------------------------------------- +class NetworkSettingseth0: + public TriggeredConfigurationGroup { +Q_OBJECT +public: + NetworkSettingseth0(); + + HostLineEdit *HostIPeth0; + HostComboBox *HostNETMASKeth0; + HostLineEdit *HostGWeth0; + HostLineEdit *HostDNSeth0; + HostCheckBox *HostActiveonbooteth0; + HostCheckBox *HostUseDHCPeth0 ; + HostCheckBox *HostDefaulteth0; + TransButtonSetting *wirelessbuttoneth0; + +signals: + void eth0_is_default(void); +public slots: + void eth0_wireless_settings(); + void eth0_disable_others(); + void eth0_disabled(); + void eth0_wireless_disable(); +}; + +class eth0options : public ConfigurationWizard +{ +public: + eth0options(); +}; + + +class NetworkSettingseth1: + public TriggeredConfigurationGroup { +Q_OBJECT +public: + NetworkSettingseth1(); + + HostLineEdit *HostIPeth1; + HostComboBox *HostNETMASKeth1; + HostLineEdit *HostGWeth1; + HostLineEdit *HostDNSeth1; + HostCheckBox *HostActiveonbooteth1; + HostCheckBox *HostUseDHCPeth1 ; + HostCheckBox *HostDefaulteth1; + TransButtonSetting *wirelessbuttoneth1; +signals: + void eth1_is_default(void); +public slots: + void eth1_wireless_settings(); + void eth1_disable_others(); + void eth1_disabled(); + void eth1_wireless_disable(); +}; + +class eth1options : public ConfigurationWizard +{ +public: + eth1options(); +}; + + + +class NetworkSettingswlan0: + public TriggeredConfigurationGroup { +Q_OBJECT +public: + NetworkSettingswlan0(); + + HostLineEdit *HostIPwlan0; + HostComboBox *HostNETMASKwlan0; + HostLineEdit *HostGWwlan0; + HostLineEdit *HostDNSwlan0; + HostCheckBox *HostActiveonbootwlan0; + HostCheckBox *HostUseDHCPwlan0 ; + HostCheckBox *HostDefaultwlan0; + TransButtonSetting *wirelessbuttonwlan0; +signals: + void wlan0_is_default(void); +public slots: + void wlan0_wireless_settings(); + void wlan0_disable_others(); + void wlan0_disabled(); + void wlan0_wireless_disable(); +}; + +class Wlan0options : public ConfigurationWizard +{ +public: + Wlan0options(); +}; + + +class NetworkSettingswlan1: + public TriggeredConfigurationGroup { +Q_OBJECT +public: + NetworkSettingswlan1(); + + HostLineEdit *HostIPwlan1; + HostComboBox *HostNETMASKwlan1; + HostLineEdit *HostGWwlan1; + HostLineEdit *HostDNSwlan1; + HostCheckBox *HostActiveonbootwlan1; + HostCheckBox *HostUseDHCPwlan1 ; + HostCheckBox *HostDefaultwlan1; + TransButtonSetting *wirelessbuttonwlan1; +signals: + void wlan1_is_default(void); +public slots: + void wlan1_wireless_settings(); + void wlan1_disable_others(); + void wlan1_disabled(); + void wlan1_wireless_disable(); +}; + +class wlan1options : public ConfigurationWizard +{ +public: + wlan1options(); +}; + + + +class NetworkSettingsath0: + public TriggeredConfigurationGroup { +Q_OBJECT +public: + NetworkSettingsath0(); + + HostLineEdit *HostIPath0; + HostComboBox *HostNETMASKath0; + HostLineEdit *HostGWath0; + HostLineEdit *HostDNSath0; + HostCheckBox *HostActiveonbootath0; + HostCheckBox *HostUseDHCPath0 ; + HostCheckBox *HostDefaultath0; + TransButtonSetting *wirelessbuttonath0; +signals: + void ath0_is_default(void); +public slots: + void ath0_wireless_settings(); + void ath0_disable_others(); + void ath0_disabled(); + void ath0_wireless_disable(); +}; + +class ath0options : public ConfigurationWizard +{ +public: + ath0options(); +}; + + + +//-------------------------------------------- + + +class SoundSettings: public TriggeredConfigurationGroup { +Q_OBJECT +public: + SoundSettings(); + HostComboBox *HostAudiotype; + HostCheckBox *HostsyncXine; + HostCheckBox *HostsyncMplayer; + HostCheckBox *HostsyncMythMusic; + HostCheckBox *HostsyncMythFrontend; + + +signals: + void oss_sig(void); + void alsa_sig(void); +public slots: + void soundossgathersettings_1(); + void soundalsagathersettings_1(); + +}; + + +class SoundOSSsettings: public TriggeredConfigurationGroup { +Q_OBJECT +public: + SoundOSSsettings(); + HostComboBox *HostSoundOssAnalog; + HostComboBox *HostSoundOssDigital; + HostComboBox *HostSoundTypeout; + void fillossselection(); +public slots: + void soundossgathersettings(); + void loadossdriver(); +}; + +class SoundALSAsettings: public TriggeredConfigurationGroup { +Q_OBJECT +public: + SoundALSAsettings(); + HostComboBox *HostSoundALSAAnalog; + HostComboBox *HostSoundALSADigital; + HostComboBox *HostSoundALSATypeout; + void fillALSAselection(); +public slots: + void soundalsagathersettings(); + void loadalsadriver(); + +}; + + +//############################################ +class MythInstallSettings: public ConfigurationWizard +{ + +public: + MythInstallSettings(); + void testme(); +private: + MythPopupBox *popup; + +}; + + + + +class HostRemoteType: public HostImageSelect { +public: + HostRemoteType(); +}; + + + +#define MV_ROOT "/usr/MythVantage/" +int runsettings(bool = false , bool = false , bool = false ,bool = false ,bool = false, bool = false,bool = false,bool = false , bool = false , bool = false , bool = false, bool = false , bool = false , bool = false , bool = false); +//void ReadDDCifno(void); +void run_systemconfig(QString,bool = false,QString = ""); +void writesettings(); + +//void testXconfiguration(); + + + + + +struct HostParms +{ + QString ThisHostName; + QString ThisHostDHCPhostname; + + QString ThisHostIP; + QString ThisNETMASK; + QString ThisGW; + QString ThisDNS; + QString ThisDHCP; + QString ThisHostnetOLD; + QString ThisHostnetActiveOLD; + + QString ThisHostDefaultInterface; + QString ThisHostIPeth0; + QString ThisHostNETMASKeth0; + QString ThisHostDNSeth0; + QString ThisHostUSEDHCPeth0; + QString ThisHostGWeth0; + QString ThisHOST_iswirelesseth0; + QString ThisHostActiveonbooteth0; + QString ThisHOSTESSIDeth0; + QString ThisHostUseEncryptioneth0; + QString ThisHostkeyeth0; + QString ThisHostMTUeth0; + + + QString ThisHostIPeth1; + QString ThisHostNETMASKeth1; + QString ThisHostDNSeth1; + QString ThisHostUSEDHCPeth1; + QString ThisHostGWeth1; + QString ThisHostActiveonbooteth1 ; + QString ThisHOST_iswirelesseth1; + QString ThisHOSTESSIDeth1; + QString ThisHostUseEncryptioneth1; + QString ThisHostkeyeth1; + QString ThisHostMTUeth1; + + QString ThisHostIPwlan0; + QString ThisHostNETMASKwlan0; + QString ThisHostDNSwlan0; + QString ThisHostUSEDHCPwlan0; + QString ThisHostGWwlan0; + QString ThisHostActiveonbootwlan0; + QString ThisHOST_iswirelesswlan0; + QString ThisHOSTESSIDwlan0; + QString ThisHostUseEncryptionwlan0; + QString ThisHostkeywlan0; + QString ThisHostMTUwlan0; + + + QString ThisHostIPwlan1; + QString ThisHostNETMASKwlan1; + QString ThisHostDNSwlan1; + QString ThisHostUSEDHCPwlan1; + QString ThisHostGWwlan1; + QString ThisHostActiveonbootwlan1; + QString ThisHOST_iswirelesswlan1; + QString ThisHOSTESSIDwlan1; + QString ThisHostUseEncryptionwlan1; + QString ThisHostkeywlan1; + QString ThisHostMTUwlan1; + + QString ThisHostIPath0; + QString ThisHostNETMASKath0; + QString ThisHostDNSath0; + QString ThisHostUSEDHCPath0; + QString ThisHostGWath0; + QString ThisHostActiveonbootath0; + QString ThisHOST_iswirelessath0; + QString ThisHOSTESSIDath0; + QString ThisHostUseEncryptionath0; + QString ThisHostkeyath0; + QString ThisHostMTUath0; + + + QString ThisRemote; + QString ThisTimeZone; + QString ThisSamba; + QString ThisHostServiceSamba_media; + QString ThisHostServiceSamba_home; + QString ThisHostServiceSamba_writehome; + QString ThisHostServiceSamba_write; + QString ThisHostServiceSamba_domain; + QString ThisNFS; + QString ThisMythWEB; + QString ThisHostwebauth; + QString ThisHostServiceHobbit; + QString ThisHostServiceRRD; + + QString ThisHostRunDHCP; + QString ThisSystemType; +// QString ThisBlaster; + + QString ThisHostTransmitproto_1; + QString ThisHostTransmitproto_2; + QString ThisHostTransmitproto_3; + QString ThisHostTransmitproto_4; + QString ThisHostBlasterType; + QString ThisHostSerialPort_blasterlirc; + QString ThisHostnumblaster; + + QString ThisReceiverType; + QString ThisHostLircWait; + QString ThisHostSerialPortlirc; + QString ThisHostUseEvrouter; + QString ThisHostEvrouterConfig; + QString ThisDBhost; + QString ThisXres; + QString ThisShutdowntime; + QString ThisShutdowntime2; + QString ThisWakeuptime; + QString ThisAutodown; + QString ThisUseNVRAM; + QString ThisUseWOL; + QString ThisKeepPackage; + QString ThisMythWelcome; + QString ThisHaveNFS; + QString ThisNFSserver; + QString ThisNFSmountpoint; + QString ThisHostupdateplan; + // QString ThisOSS; + QString ThisShowToolTips; + QString ThisHostPKG_MIRROR; + QString ThisRunfrontend; + QString ThisHostZipcode; + QString ThisHostncidClient; + QString ThisHostncidDaemon; + QString ThisHostSerialPortncid; + QString ThisHostbootsplash; + QString ThisXIgnoreConfig; + QString ThisXcardtype; + QString ThisXUseAdvanced; + QString ThisXIgnoreEDID; + QString ThisXconnection; + QString ThisXHsync; + QString ThisXVrefresh; + QString ThisXresadvanced; + QString ThisXTVstandard; + QString ThisXTVconnection; + QString ThisXDisplaysize ; + + QString ThisHostXNvidia1080p; + QString ThisHostXNvidia1080i; + QString ThisHostXNvidia720p; + QString ThisHostXNvidia480p; + QString ThisHostAudiotype; + + QString ThisHostSoundTypeout; + QString ThisHostSoundOSSAnalog; + QString OLDHostSoundOSSAnalog; + QString ThisHostSoundOSSDigital; + QString OLDHostSoundOSSDigital; + + QString ThisHostSoundDigital; + QString ThisHostSoundDevice; + + QString ThisHostSoundALSAAnalog; + QString OLDHostSoundALSAAnalog; + QString ThisHostSoundALSADigital; + QString OLDHostSoundALSADigital; + QString ThisHostSoundALSATypeout; + + + QString ThisHostsyncXine; + QString ThisHostsyncMplayer; + QString ThisHostsyncMythMusic; + QString ThisHostsyncMythFrontend; + QString ThisHostLCDType; + QString ThisHostRemoteBackup; + QString ThisHostRemoteBackupDir; + QString ThisHostpluginmytharchive; + QString ThisHostpluginmythbrowser; + QString ThisHostpluginmythcontrols; + QString ThisHostpluginmythflix; + QString ThisHostpluginmythgallery; + QString ThisHostpluginmythgame; + QString ThisHostpluginmythmovietime; + QString ThisHostpluginmythmusic; + QString ThisHostpluginmythnews; + QString ThisHostpluginmythphone; + QString ThisHostpluginmythsmolt; + QString ThisHostpluginmythvideo; + QString ThisHostpluginmythweather; + QString ThisHostpluginmythzoneminder; + QString ThisHostpluginmythgameFceu; + QString ThisHostpluginmythgameZsnes; + QString ThisHostpluginmythgameMame; + QString ThisHostpluginmythvideo_dvdcss; + QString ThisHostpluginmythappletrailers; + QString ThisHostpluginmythstream; + QString ThisHostpluginmythvodka; + QString ThisHostMiro; + QString ThisHostpluginmythgameMednafen; + QString ThisHostpluginmythgameROMDB; + QString ThisHostXine; + QString ThisHostwebmin; + QString ThisHostfuppes; + QString ThisHostfoldingathome; + QString ThisHostfoldingusername; + QString ThisHostfoldingworksize; + + QString ThisHostDDnslogin; + QString ThisHostDDnspassword; + QString ThisHostDDnshostname; + QString ThisHostDDnsEnable; + QString ThisHostscreensavertype; + QString ThisHostscreensaveridle; + QString ThisHostscreensavertheme; + QString ThisHOSTrootSSH; + bool displayshowadvancedX; + + +}; + +struct DDCinfo +{ + QString XVrefresh; + QString XHsync; + QString Displaysize; +}; + + + + + + + +#endif diff --git a/abs/core/mythinstall/main.cpp b/abs/core/mythinstall/main.cpp new file mode 100755 index 0000000..afee4ea --- /dev/null +++ b/abs/core/mythinstall/main.cpp @@ -0,0 +1,533 @@ +#include +#include +//#include "libmyth/mythdialogs.h" +#include "libmyth/mythcontext.h" +#include "libmyth/settings.h" +#include "libmyth/langsettings.h" +#include "libmyth/mythdbcon.h" +#include +#include "libmythtv/tv.h" +#include "installdialog.h" +#include "installsettings.h" +#include "password_manage.h" +#include "autocard.h" +#include "settemplate.h" +#include "mythdialogbox.h" +//#include "mv_common.h" + +#include +#include +#include + +#include "libmyth/dialogbox.h" +#include +#include +#include +HostParms hostparm; +DDCinfo ddcinfo; + + +void initKeys(void) +{ + REG_KEY("Welcome", "STARTXTERM", "Open an Xterm window", "F12"); + REG_KEY("Welcome", "SHOWSETTINGS", "Show Mythshutdown settings", "F11"); +} + + +int main(int argc, char **argv) +{ + bool bShowSettings = false; + bool bShowNetwork = false; + bool bShowHostype = false; + bool bShowMisc = false; + bool bShowshutdown = false; + bool bShowadvanced = false; + bool bShowsound = false; + bool bShowadvancedX = false; + bool bShowAccesscontrol = false; + bool bShowplugins = false; + bool bShowTemplate = false; + bool bShowuser = false; + bool bShowwebuser = false; + bool bRunSetup = false; + bool bShowHelp = false; + bool bShowReadme = false; + bool bShowddns = false; + bool bShowinfrared = false; + bool bShowscreensaver = false; + + QStringList template_c_line ; + QString modulelist = "" ; + QString templateop=""; + QString templatename=""; + QString templatehostname=""; + QApplication a(argc, argv); + + gContext = NULL; + gContext = new MythContext(MYTH_BINARY_VERSION); + if (!gContext->Init()) + { + VERBOSE(VB_IMPORTANT, "mythwelcome: Could not initialize myth context. " + "Exiting."); + return FRONTEND_EXIT_NO_MYTHCONTEXT; + } + + if (!MSqlQuery::testDBConnection()) + { + VERBOSE(VB_IMPORTANT, "mythwelcome: Could not open the database. " + "Exiting."); + return -1; + } + + // Check command line arguments + for (int argpos = 1; argpos < a.argc(); ++argpos) + { + + if (!strcmp(a.argv()[argpos],"-v") || + !strcmp(a.argv()[argpos],"--verbose")) + { + if (a.argc()-1 > argpos) + { + if (parse_verbose_arg(a.argv()[argpos+1]) == + GENERIC_EXIT_INVALID_CMDLINE) + return FRONTEND_EXIT_INVALID_CMDLINE; + + ++argpos; + } + else + { + cerr << "Missing argument to -v/--verbose option\n"; + return FRONTEND_EXIT_INVALID_CMDLINE; + } + } + else if (!strcmp(a.argv()[argpos],"-s") || + !strcmp(a.argv()[argpos],"--setup")) + { + bShowSettings = true; +//--------------------------------------------- + if (a.argc()-1 > argpos) + { + QString tmpArg = a.argv()[argpos+1]; + if (tmpArg.startsWith("-")) + { + cerr << "Invalid or missing argument to -s \n"; + return FRONTEND_EXIT_INVALID_CMDLINE; + } + + QStringList pairs = QStringList::split(",", tmpArg); + for (unsigned int index = 0; index < pairs.size(); ++index) + { + if ( pairs[index] == "network" ) + { + // cout << pairs[index] << endl; + bShowNetwork = true; + modulelist.append("network,"); + } + else if ( pairs[index] == "misc" ) + { + // cout << pairs[index] << endl; + bShowMisc = true; + modulelist.append("misc,"); + } + else if ( pairs[index] == "sleep" ) + { + // cout << pairs[index] << endl; + bShowshutdown = true; + modulelist.append("sleep,"); + } + else if ( pairs[index] == "hostype" ) + { + // cout << pairs[index] << endl; + bShowHostype = true; + modulelist.append("hostype,"); + } + else if ( pairs[index] == "advanced" ) + { + // cout << pairs[index] << endl; + bShowadvanced = true; + modulelist.append("advanced,"); + } + else if ( pairs[index] == "sound" ) + { + // cout << pairs[index] << endl; + bShowsound = true; + modulelist.append("audio,"); + } + else if ( pairs[index] == "advancedX" ) + { + // cout << pairs[index] << endl; + bShowadvancedX = true; + modulelist.append("advancedX,"); + } + else if ( pairs[index] == "accesscontrol" ) + { + // cout << pairs[index] << endl; + bShowAccesscontrol = true; + modulelist.append("accesscontrol,"); + } + else if ( pairs[index] == "plugins" ) + { + // cout << pairs[index] << endl; + bShowplugins = true; + modulelist.append("plugins,"); + } + else if ( pairs[index] == "user" ) + { + // cout << pairs[index] << endl; + bShowuser = true; + modulelist.append("user,"); + } + else if ( pairs[index] == "webuser" ) + { + // cout << pairs[index] << endl; + bShowwebuser = true; + modulelist.append("webuser,"); + } + else if ( pairs[index] == "ddns" ) + { + // cout << pairs[index] << endl; + bShowddns = true; + modulelist.append("ddns,"); + } + else if ( pairs[index] == "ir" ) + { + // cout << pairs[index] << endl; + bShowinfrared = true; + modulelist.append("ir,"); + } + else if ( pairs[index] == "screensaver" ) + { + // cout << pairs[index] << endl; + bShowscreensaver = true; + modulelist.append("screensaver,"); + } + + } + // return FRONTEND_EXIT_OK; + } + else + { + // if no args, then show the default steup. + bShowNetwork = true; + bShowHostype = true; + bShowMisc = true; + bShowuser = true; + bShowshutdown = true; + + modulelist="network,hostype,misc,sleep"; + + } + + ++argpos; + + +//--------------------------------------------- + } + else if (!strcmp(a.argv()[argpos],"-u")) + bShowuser = true; + else if (!strcmp(a.argv()[argpos],"-t")) + { + bShowTemplate = true; + if (a.argc()-1 > argpos) + { + QString tmpArg = a.argv()[argpos+1]; + if (tmpArg.startsWith("-")) + { + cerr << "Invalid or missing argument to -t \n"; + return FRONTEND_EXIT_INVALID_CMDLINE; + } + template_c_line = QStringList::split(",", tmpArg); + if ( template_c_line.size() != 0 ) + { + if ( template_c_line.size() >3 || template_c_line.size() <2 ) + { + cerr << "Invalid or missing argument to -t \n"; + return FRONTEND_EXIT_INVALID_CMDLINE; + } + } + ++argpos; + } + + } + else if (!strcmp(a.argv()[argpos],"-b")) + { + bRunSetup = true; + } + else if (!strcmp(a.argv()[argpos],"-h")) + { + bShowHelp = true; + } + else if (!strcmp(a.argv()[argpos],"-r")) + { + bShowReadme = true; + } + else + { + cerr << "Invalid argument: " << a.argv()[argpos] << endl << + "Valid options are: " << endl << + "-v or --verbose debug-level Use '-v help' for level info" << endl << + "-b run backend setup" << endl << + "-h for help screens " << endl << + "-t show template screens (op,tname,hname)" << endl << + "-s or --setup (network,hostype,misc,sleep,advanced,advancedX,sound,accesscontrol, user,webuser,ddns,ir,screensaver)" << endl; + return FRONTEND_EXIT_INVALID_CMDLINE; + } + } + + gContext->LoadQtConfig(); + + LanguageSettings::load("mythfrontend"); + + MythMainWindow *mainWindow = GetMythMainWindow(); + // if parms were passed to -t then doen't init the screen. + if ( template_c_line.size() == 0 ) + { + gContext->SaveSetting("HOSTtemplatetype","Do Nothing" ); + mainWindow->Init(); + gContext->SetMainWindow(mainWindow); + }; + initKeys(); + + + if (bShowSettings) + { + bool runconfig = false; + system("cp -f /etc/systemconfig /tmp/systemconfig.bak"); + QString olddb = gContext->GetSetting("HostMysqlserver"); + QString oldhostype = gContext->GetSetting("HostSystemType"); + runsettings(false,bShowNetwork,bShowHostype,bShowMisc,bShowshutdown,bShowadvanced,bShowsound,bShowadvancedX,bShowAccesscontrol,bShowplugins,bShowuser,bShowwebuser,bShowddns,bShowinfrared,bShowscreensaver); + QString newdb = gContext->GetSetting("HostMysqlserver"); + QString newhostype = gContext->GetSetting("HostSystemType"); + int status = system("diff /tmp/systemconfig.bak /etc/systemconfig"); + bool restart = false; + + // save my settings in case db switches + //cout << "save for the heck of it " << endl; + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/restore_default_settings.sh -c save -t syssettings -d " + olddb); + system(cmdtxt); + //system("/root/restore_default_settings.sh -c save -t syssettings -d " + olddb); + + if ( status != 0 ) + { + runconfig = true; + } + + if ( newdb != olddb ) + { + runconfig = true; + restart = true; + //db changed save setting from olddb + // cout << "newdb_olddb" << endl; + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/restore_default_settings.sh -c save -t syssettings -d " + olddb ) ; + system(cmdtxt); + //system("/root/restore_default_settings.sh -c save -t syssettings -d " + olddb ) ; + } + + if ( runconfig ) + { + if ( newhostype != oldhostype ) + modulelist.append("hostypec,"); + //trim off last , + modulelist.truncate(modulelist.length()-1); + + + cout << modulelist <append("\n"); + problems->append("The frontend will need to restart to connect to the new database."); + problems->append("\n"); + dia = new DialogBox(mainWindow, problems->append("\n" )); + dia->AddButton(QObject::tr("OK")); + int returncode = 0; + returncode = dia->exec(); + dia->deleteLater(); + cout << "restarting" << endl; + //system("/root/systemconfig.sh restartfe" ); + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/systemconfig.sh reloadfe" ); + system(cmdtxt); + } + + } + else if (bShowTemplate) + { + // cout << templateparms << endl; + if ( template_c_line.size() == 2) + { + templateop=template_c_line[0]; + templatename=template_c_line[1]; + } + else if ( template_c_line.size() == 3) + { + templateop=template_c_line[0]; + templatename=template_c_line[1]; + templatehostname=template_c_line[2]; + }; + choosetemplate(templateop,templatename,templatehostname); + } + + else if (bRunSetup) + { + DialogBox *dia = NULL; + QString prompt; + QString *problems = new QString("To configure the TV cards and program guide the setup program needs to be run."); + problems->append("\n"); + problems->append("\n"); + + problems->append("For those in North America, guide data is provided by Schedules Direct."); + problems->append("\n"); + problems->append("Visit http://www.schedulesdirect.org/ to signup for your account today"); + problems->append("\n"); problems->append("\n"); problems->append("\n"); + + problems->append("If you choose to not run mythtv-setup now, the program can be run at any time by typing mythtv-setup or hitting ALT+s"); + problems->append("\n"); + + problems->append("\n"); + prompt = QObject::tr("Do you wish to run mythtv-setup ?"); + + dia = new DialogBox(mainWindow, problems->append("\n" + prompt)); + dia->AddButton(QObject::tr("Yes")); + dia->AddButton(QObject::tr("Yes and try to autodetect cards")); + dia->AddButton(QObject::tr("No")); + int returncode = 0; + //returncode = dia->exec(); + DialogCode dcode = dia->exec(); + dia->deleteLater(); + if (kDialogCodeButton0 == dcode ) + returncode = 0; + if (kDialogCodeButton1 == dcode ) + returncode = 1; + if (kDialogCodeButton2 == dcode ) + returncode = 2; + + if (returncode == 1) + { + AutoCard listcards; + listcards.exec(); + } + + return returncode; + + + } +else if (bShowHelp) + { + DialogBox *dia = NULL; + QString prompt; + QString *problems = new QString(" Help Screen"); + problems->append("\n"); + problems->append("-------------------------------------------------"); + problems->append("\n"); + problems->append("Alt+h This screen"); + problems->append("\n"); + #ifdef __MVAPP__ + problems->append("F2 open/close terminal"); + problems->append("\n"); + problems->append("Shift + Return opens new xterm"); + problems->append("\n"); + problems->append("Alt+F2 for 2nd desktop Alt+F1 to go back"); + problems->append("\n"); + problems->append("Alt+c Capture myth screenshot"); + problems->append("\n"); + #else + problems->append("Alt + X opens new xterm "); + problems->append("\n"); + problems->append("Alt + m start mythfrontend"); + problems->append("\n"); + problems->append("m will display a popup for power/about"); + problems->append("\n"); + #endif + problems->append("Ctrl + Alt + u unhide mouse cursor"); + problems->append("\n"); + problems->append("Alt+1 start masterbackend"); + problems->append("\n"); + problems->append("Alt+2 stop masterbackend"); + problems->append("\n"); + problems->append("Alt+3 restart masterbackend"); + problems->append("\n"); + problems->append("Alt+s run mythtv-setup"); + problems->append("\n"); + + + dia = new DialogBox(mainWindow, problems->append("\n" )); + dia->AddButton(QObject::tr("OK")); + // dia->AddButton(QObject::tr("No")); + int returncode = 0; + returncode = dia->exec(); + dia->deleteLater(); + return returncode; + + + } +else if (bShowReadme) + { + DialogBox *dia = NULL; + QString prompt; + QString line; + QString *problems = new QString(""); + problems->append("\n"); + QFile file("/usr/MythVantage/README"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + problems->append(line); + problems->append("\n"); + } + file.close(); + } + else + problems->append("Couldn't open file"); + + dia = new DialogBox(mainWindow, problems->append("\n" )); + dia->AddButton(QObject::tr("OK")); + // dia->AddButton(QObject::tr("No")); + int returncode = 0; + returncode = dia->exec(); + dia->deleteLater(); + return returncode; + } + else + + { + WelcomeDialog *mythWelcome = new WelcomeDialog(gContext->GetMainWindow(), + "welcome_screen", "install-", + "welcome_screen"); + + mythWelcome->exec(); + + + delete mythWelcome; + } + +// delete gContext; + + return 0; +} diff --git a/abs/core/mythinstall/misc_settings.cpp b/abs/core/mythinstall/misc_settings.cpp new file mode 100755 index 0000000..7c3eb67 --- /dev/null +++ b/abs/core/mythinstall/misc_settings.cpp @@ -0,0 +1,621 @@ +#include +#include +#include +#include +#include +#include +#include +#include "misc_settings.h" +#include "mv_common.h" +#include "uitypes.h" + +extern HostParms hostparm; + +static HostCheckBox *HostShowToolTips() +{ + HostCheckBox *gc = new HostCheckBox("HostShowToolTips"); + gc->setLabel(QObject::tr("Show shortcuts")); + gc->setValue(true); + gc->setHelpText(QObject::tr("Shows a popup window describing how to open a console and various other items.")); + return gc; +}; + +static HostComboBox *Hostupdateplan() +{ + HostComboBox *gc = new HostComboBox("Hostupdateplan"); + gc->setLabel(QObject::tr("Automatic updates")); + gc->addSelection("None"); + gc->addSelection("Myth_only"); + gc->addSelection("All"); + gc->setHelpText("Download and apply updates. None: Will not download any updates , Myth_only: automatic updates for MythTV, All: Automatic updates for the entire system."); + return gc; + +} +static HostLineEdit *HostZipcode() +{ + HostLineEdit *gc = new HostLineEdit("HostZipcode"); + gc->setLabel(QObject::tr("Zip Code")); + gc->setHelpText(QObject::tr("The zipcode will be used to configure MythMovieTimes. Leave it blank to use the existing value. People located outside the U.S.A should probably leave this blank")); + //gc->setRW(); + //gc->setRO(); + return gc; +}; + +//_______________Misc main frame +MiscMainFrame::MiscMainFrame(): + VerticalConfigurationGroup(false,false,false,false) + +{ + bool MVAPP; + #ifdef __MVAPP__ + MVAPP = true ; + #else + MVAPP = false ; + #endif + bool showLabels; + hostparm.ThisSystemType = gContext->GetSetting("HostSystemType"); + if ( hostparm.ThisSystemType == "Standalone" || hostparm.ThisSystemType=="Master_backend") + { + showLabels = false; + } + else + { + showLabels = true; + } + TransLabelSetting *temptimezone = new TransLabelSetting(); + temptimezone->setValue("Timezone: " + hostparm.ThisTimeZone ); + TransLabelSetting *tempzipcode = new TransLabelSetting(); + tempzipcode->setValue("Zipcode: " + hostparm.ThisHostZipcode ); + GridConfigurationGroup* miscsettings_2 = + new GridConfigurationGroup(1,true, true,false,false); + + if ( showLabels && ( hostparm.ThisHostZipcode != "" )) + if (MVAPP) + miscsettings_2->addChild(tempzipcode); + else + miscsettings_2->addChild(HostZipcode()); + else + miscsettings_2->addChild(HostZipcode()); + + TimezoneRegion *timezoneregion = new TimezoneRegion(); + TimezoneButton *timezonebutton = new TimezoneButton(); + + VerticalConfigurationGroup* miscsettings = + new VerticalConfigurationGroup(false, true,false,false); + if ( showLabels && ( hostparm.ThisTimeZone != "" )) + { + if (MVAPP) + { + miscsettings->addChild(temptimezone); + timezonebutton->disableButton(); + } + else + miscsettings->addChild(timezoneregion); + } + else + miscsettings->addChild(timezoneregion); + + miscsettings->addChild(timezonebutton); + miscsettings->addChild(miscsettings_2); + addChild(miscsettings); + + connect(timezonebutton, SIGNAL(mf_launch_tzgui()),timezoneregion ,SLOT(timezone_gathersettings())); + connect(timezoneregion,SIGNAL(mf_show_tz(QString)),this,SLOT(mf_show_tz(QString))); + connect(this,SIGNAL(update_timezone(QString)),timezoneregion,SLOT(update_timezone_values(QString))); + + autoLaunchTimer = new QTimer(this); + connect(autoLaunchTimer, SIGNAL(timeout()), timezonebutton, SLOT(launch_tzgui())); + autoLaunchTimer->start(0); + } + +QString MiscMainFrame::mf_show_tz(QString tz) +{ + QString GTimezone; + int rc; + + if (autoLaunchTimer->isActive()) + { + autoLaunchTimer->stop(); + + // This was triggered by the timer. Only launch the timezone gui if the timezone is unknown. + if (!timezone_unknown) + return NULL; + } + + cout << "MiscMainFrame::mf_show_tz " << tz << "\n"; + + if ((tz == "") || timezone_unknown) + tz = "guess"; + + //launch tzgui and load output into Gtimezone + int screenheight = 0, screenwidth = 0; + float wmult = 0, hmult = 0; + QString m_height , m_width , cmd; + gContext->GetScreenSettings(screenwidth, wmult, screenheight, hmult); + m_height.setNum(screenheight); + m_width.setNum(screenwidth); + QString tzpath; + tzpath=MV_ROOT; + tzpath.append("bin/timezone.bin"); + //cmd="ACCEL=500 " + tzpath + " -z " + tz + " -h " + m_height + " -w " + m_width + " > /tmp/.selected_tz" ; + cmd=tzpath + " -z " + tz + " -h " + m_height + " -w " + m_width + " > /tmp/.selected_tz" ; + rc=myth_system(cmd); + if ( rc == 0 ) + { + //read in value + QString line; + QFile file("/tmp/.selected_tz"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.contains("/")) + { + GTimezone = line.simplifyWhiteSpace(); + break; + } + } + file.close(); + } + timezone_unknown = FALSE; + emit update_timezone(GTimezone); + } + +} + + +//_______________Misc main frame +MiscMainFrame2::MiscMainFrame2(): + VerticalConfigurationGroup(false,false,false,false) + { + VerticalConfigurationGroup* miscsettings = + new VerticalConfigurationGroup(false, true,false,false); + + GridConfigurationGroup* miscsettings_2 = + new GridConfigurationGroup(1,false, false,false,false); + miscsettings_2->addChild(HostShowToolTips()); + miscsettings_2->addChild(Hostupdateplan()); + + NFSSettings *nfssettings = new NFSSettings(); + + miscsettings->addChild(nfssettings); + miscsettings->addChild(miscsettings_2); + + addChild(miscsettings); + + } + + +//_______________Misc time timezone + +TimezoneButton::TimezoneButton(): + VerticalConfigurationGroup(false,false,false,false) + { + TZButton = new TransButtonSetting; + TZButton->setLabel("Hitchhikers guide to timezones"); + addChild(TZButton); + connect(TZButton, SIGNAL(pressed()),this,SLOT(launch_tzgui())); + + }; + +void TimezoneButton::launch_tzgui() +{ + emit mf_launch_tzgui(); +} + +void TimezoneButton::disableButton() +{ + TZButton->setEnabled(false); +} + + + +//This is used for the timezone +QStringList findFilesRecursively ( QStringList paths, QString fileTypes ) { + if ( fileTypes.isEmpty() ) fileTypes = "*"; + QStringList result, more; + QStringList::Iterator it; + for ( uint i = 0 ; i < paths.size() ; i++ ) + { // inefficient...whatever + QDir dir( paths[i] ); + dir.setSorting( QDir::Reversed ); + more = dir.entryList( fileTypes, QDir::Files ); + for ( it = more.begin() ; it != more.end() ; ++it ) + result.append( paths[i] + "/" + *it ); + // reg exp in next line excludes . and .. dirs (and .* actually) + more = dir.entryList( QDir::Dirs ).grep( QRegExp( "[^.]" ) ); + for ( it = more.begin() ; it != more.end() ; ++it ) + *it = paths[i] + "/" + *it; + more = findFilesRecursively( more, fileTypes ); + for ( it = more.begin() ; it != more.end() ; ++it ) + result.append( *it ); + } + return result; // yields absolute paths +} + + +void TimezoneRegion::timezoneregion_fillselection_zone() +{ + HostTimeZoneRegion->setLabel(QObject::tr("TimeZone")); + HostTimeZoneRegion->addSelection("US"); + HostTimeZoneRegion->addSelection("Pacific"); + HostTimeZoneRegion->addSelection("Mideast"); + HostTimeZoneRegion->addSelection("Mexico"); + HostTimeZoneRegion->addSelection("Indian"); + HostTimeZoneRegion->addSelection("Europe"); + HostTimeZoneRegion->addSelection("Etc"); + HostTimeZoneRegion->addSelection("Chile"); + HostTimeZoneRegion->addSelection("Canada"); + HostTimeZoneRegion->addSelection("Brazil"); + HostTimeZoneRegion->addSelection("Australia"); + HostTimeZoneRegion->addSelection("Atlantic"); + HostTimeZoneRegion->addSelection("Asia"); + HostTimeZoneRegion->addSelection("Arctic"); + HostTimeZoneRegion->addSelection("Antarctica"); + HostTimeZoneRegion->addSelection("America"); + HostTimeZoneRegion->addSelection("Africa"); + //--single region + HostTimeZoneRegion->addSelection("Zulu"); + HostTimeZoneRegion->addSelection("WET"); + HostTimeZoneRegion->addSelection("W-SU"); + HostTimeZoneRegion->addSelection("Universal"); + HostTimeZoneRegion->addSelection("UTC"); + HostTimeZoneRegion->addSelection("UCT"); + HostTimeZoneRegion->addSelection("Turkey"); + HostTimeZoneRegion->addSelection("Singapore"); + HostTimeZoneRegion->addSelection("ROK"); + HostTimeZoneRegion->addSelection("ROC"); + HostTimeZoneRegion->addSelection("Portugal"); + HostTimeZoneRegion->addSelection("Poland"); + HostTimeZoneRegion->addSelection("PST8PDT"); + HostTimeZoneRegion->addSelection("PRC"); + HostTimeZoneRegion->addSelection("Navajo"); + HostTimeZoneRegion->addSelection("NZ-CHAT"); + HostTimeZoneRegion->addSelection("NZ"); + HostTimeZoneRegion->addSelection("MST7MDT"); + HostTimeZoneRegion->addSelection("MST"); + HostTimeZoneRegion->addSelection("MET"); + HostTimeZoneRegion->addSelection("Libya"); + HostTimeZoneRegion->addSelection("Kwajalein"); + HostTimeZoneRegion->addSelection("Japan"); + HostTimeZoneRegion->addSelection("Jamaica"); + HostTimeZoneRegion->addSelection("Israel"); + HostTimeZoneRegion->addSelection("Iran"); + HostTimeZoneRegion->addSelection("Iceland"); + HostTimeZoneRegion->addSelection("Hongkong"); + HostTimeZoneRegion->addSelection("HST"); + HostTimeZoneRegion->addSelection("Greenwich"); + HostTimeZoneRegion->addSelection("GMT0"); + HostTimeZoneRegion->addSelection("GMT-0"); + HostTimeZoneRegion->addSelection("GMT+0"); + HostTimeZoneRegion->addSelection("GMT"); + HostTimeZoneRegion->addSelection("GB-Eire"); + HostTimeZoneRegion->addSelection("GB"); + HostTimeZoneRegion->addSelection("Factory"); + HostTimeZoneRegion->addSelection("Eire"); + HostTimeZoneRegion->addSelection("Egypt"); + HostTimeZoneRegion->addSelection("EST5EDT"); + HostTimeZoneRegion->addSelection("EST"); + HostTimeZoneRegion->addSelection("EET"); + HostTimeZoneRegion->addSelection("Cuba"); + HostTimeZoneRegion->addSelection("CST6CDT"); + HostTimeZoneRegion->addSelection("CET"); + HostTimeZoneRegion->setHelpText(QObject::tr("Timezone Region")); +} + +void TimezoneRegion::timezoneregion_fillselection(QString tzonefile ) +{ + QString currentitem; + int foundtab; + int foundslashes; + QString timezonefile="/usr/share/zoneinfo/posix/"; + timezonefile.append(tzonefile); + QStringList answer = findFilesRecursively( timezonefile, "*" ); + QStringList onlyfiles = ""; + QStringList::Iterator it; + for ( it = answer.begin(); it != answer.end(); ++it ) + { + currentitem = *it; + foundtab=currentitem.contains(".tab"); + if ( foundtab == 0 ) + { + foundslashes=currentitem.contains("/"); + currentitem = currentitem.section( '/', 6, foundslashes ); + + if ( tzonefile == "US") + HostTimezoneRegion_US->addSelection(currentitem); + else if ( tzonefile == "Pacific") + HostTimezoneRegion_Pacific->addSelection(currentitem); + else if ( tzonefile == "Mideast") + HostTimezoneRegion_Mideast->addSelection(currentitem); + else if ( tzonefile == "Mexico") + HostTimezoneRegion_Mexico->addSelection(currentitem); + else if ( tzonefile == "Indian") + HostTimezoneRegion_Indian->addSelection(currentitem); + else if ( tzonefile == "Europe") + HostTimezoneRegion_Europe->addSelection(currentitem); + else if ( tzonefile == "Etc") + HostTimezoneRegion_Etc->addSelection(currentitem); + else if ( tzonefile == "Chile") + HostTimezoneRegion_Chile->addSelection(currentitem); + else if ( tzonefile == "Canada") + HostTimezoneRegion_Canada->addSelection(currentitem); + else if ( tzonefile == "Brazil") + HostTimezoneRegion_Brazil->addSelection(currentitem); + else if ( tzonefile == "Australia") + HostTimezoneRegion_Australia->addSelection(currentitem); + else if ( tzonefile == "Atlantic") + HostTimezoneRegion_Atlantic->addSelection(currentitem); + else if ( tzonefile == "Asia") + HostTimezoneRegion_Asia->addSelection(currentitem); + else if ( tzonefile == "Arctic") + HostTimezoneRegion_Arctic->addSelection(currentitem); + else if ( tzonefile == "Antarctica") + HostTimezoneRegion_Antarctica->addSelection(currentitem); + else if ( tzonefile == "America") + HostTimezoneRegion_America->addSelection(currentitem); + else if ( tzonefile == "Africa") + HostTimezoneRegion_Africa->addSelection(currentitem); + } + } +}; + +void TimezoneRegion::timezone_gathersettings() +{ + QString tz; + QString subregion; + QString region=HostTimeZoneRegion->getValue(); + if ( region == "US") + subregion=HostTimezoneRegion_US->getValue(); + else if ( region == "Pacific") + subregion=HostTimezoneRegion_Pacific->getValue(); + else if ( region == "Mideast") + subregion=HostTimezoneRegion_Mideast->getValue(); + else if ( region == "Mexico") + subregion=HostTimezoneRegion_Mexico->getValue(); + else if ( region == "Indian") + subregion=HostTimezoneRegion_Indian->getValue(); + else if ( region == "Europe") + subregion=HostTimezoneRegion_Europe->getValue(); + else if ( region == "Etc") + subregion=HostTimezoneRegion_Etc->getValue(); + else if ( region == "Chile") + subregion=HostTimezoneRegion_Chile->getValue(); + else if ( region == "Canada") + subregion=HostTimezoneRegion_Canada->getValue(); + else if ( region == "Brazil") + subregion=HostTimezoneRegion_Brazil->getValue(); + else if ( region == "Australia") + subregion=HostTimezoneRegion_Australia->getValue(); + else if ( region == "Atlantic") + subregion=HostTimezoneRegion_Atlantic->getValue(); + else if ( region == "Asia") + subregion=HostTimezoneRegion_Asia->getValue(); + else if ( region == "Arctic") + subregion=HostTimezoneRegion_Arctic->getValue(); + else if ( region == "Antarctica") + subregion=HostTimezoneRegion_Antarctica->getValue(); + else if ( region == "America") + subregion=HostTimezoneRegion_America->getValue(); + else if ( region == "Africa") + subregion=HostTimezoneRegion_Africa->getValue(); + + tz=region+"/"+subregion; + + emit mf_show_tz(tz); +} + +TimezoneRegion::TimezoneRegion(): + TriggeredConfigurationGroup(true,false,true,true,true,true,true,true) +{ + SetVertical(false); + HostTimeZoneRegion= new HostComboBox("HostTimeZoneRegion"); + timezoneregion_fillselection_zone(); + Setting* trigger = HostTimeZoneRegion; + addChild(trigger); + setTrigger(trigger); + //define all the new comboboxes + HostTimezoneRegion_US = new HostComboBox("HostTimezoneRegion_US"); + HostTimezoneRegion_Pacific = new HostComboBox("HostTimezoneRegion_Pacific"); + HostTimezoneRegion_Mideast = new HostComboBox("HostTimezoneRegion_Mideast"); + HostTimezoneRegion_Mexico = new HostComboBox("HostTimezoneRegion_Mexico"); + HostTimezoneRegion_Indian = new HostComboBox("HostTimezoneRegion_Indian"); + HostTimezoneRegion_Europe = new HostComboBox("HostTimezoneRegion_Europe"); + HostTimezoneRegion_Etc = new HostComboBox("HostTimezoneRegion_Etc"); + HostTimezoneRegion_Chile = new HostComboBox("HostTimezoneRegion_Chile"); + HostTimezoneRegion_Canada = new HostComboBox("HostTimezoneRegion_Canada"); + HostTimezoneRegion_Brazil = new HostComboBox("HostTimezoneRegion_Brazil"); + HostTimezoneRegion_Australia = new HostComboBox("HostTimezoneRegion_Australia"); + HostTimezoneRegion_Atlantic = new HostComboBox("HostTimezoneRegion_Atlantic"); + HostTimezoneRegion_Asia = new HostComboBox("HostTimezoneRegion_Asia"); + HostTimezoneRegion_Arctic = new HostComboBox("HostTimezoneRegion_Arctic"); + HostTimezoneRegion_Antarctica = new HostComboBox("HostTimezoneRegion_Antarctica"); + HostTimezoneRegion_America = new HostComboBox("HostTimezoneRegion_America"); + HostTimezoneRegion_Africa = new HostComboBox("HostTimezoneRegion_Africa"); + //fill the new comboboxes + timezoneregion_fillselection("US"); + timezoneregion_fillselection("Pacific"); + timezoneregion_fillselection("Mideast"); + timezoneregion_fillselection("Mexico"); + timezoneregion_fillselection("Indian"); + timezoneregion_fillselection("Europe"); + timezoneregion_fillselection("Etc"); + timezoneregion_fillselection("Chile"); + timezoneregion_fillselection("Canada"); + timezoneregion_fillselection("Brazil"); + timezoneregion_fillselection("Australia"); + timezoneregion_fillselection("Atlantic"); + timezoneregion_fillselection("Asia"); + timezoneregion_fillselection("Arctic"); + timezoneregion_fillselection("Antarctica"); + timezoneregion_fillselection("America"); + timezoneregion_fillselection("Africa"); + + // Add subregions to regions + addTarget("US", HostTimezoneRegion_US ); + addTarget("Pacific", HostTimezoneRegion_Pacific ); + addTarget("Mideast", HostTimezoneRegion_Mideast ); + addTarget("Mexico", HostTimezoneRegion_Mexico ); + addTarget("Indian", HostTimezoneRegion_Indian ); + addTarget("Europe", HostTimezoneRegion_Europe ); + addTarget("Etc", HostTimezoneRegion_Etc ); + addTarget("Chile", HostTimezoneRegion_Chile ); + addTarget("Canada", HostTimezoneRegion_Canada ); + addTarget("Brazil", HostTimezoneRegion_Brazil ); + addTarget("Australia", HostTimezoneRegion_Australia ); + addTarget("Atlantic", HostTimezoneRegion_Atlantic ); + addTarget("Asia", HostTimezoneRegion_Asia ); + addTarget("Arctic", HostTimezoneRegion_Arctic ); + addTarget("Antarctica", HostTimezoneRegion_Antarctica ); + addTarget("America", HostTimezoneRegion_America ); + addTarget("Africa", HostTimezoneRegion_Africa ); + //--single region + addTarget("Zulu", new VerticalConfigurationGroup(false, false)); + addTarget("WET", new VerticalConfigurationGroup(false, false)); + addTarget("W-SU", new VerticalConfigurationGroup(false, false)); + addTarget("Universal", new VerticalConfigurationGroup(false, false)); + addTarget("UTC", new VerticalConfigurationGroup(false, false)); + addTarget("UCT", new VerticalConfigurationGroup(false, false)); + addTarget("Turkey", new VerticalConfigurationGroup(false, false)); + addTarget("Singapore", new VerticalConfigurationGroup(false, false)); + addTarget("ROK", new VerticalConfigurationGroup(false, false)); + addTarget("ROC", new VerticalConfigurationGroup(false, false)); + addTarget("Portugal", new VerticalConfigurationGroup(false, false)); + addTarget("Poland", new VerticalConfigurationGroup(false, false)); + addTarget("PST8PDT", new VerticalConfigurationGroup(false, false)); + addTarget("PRC", new VerticalConfigurationGroup(false, false)); + addTarget("Navajo", new VerticalConfigurationGroup(false, false)); + addTarget("NZ-CHAT", new VerticalConfigurationGroup(false, false)); + addTarget("NZ", new VerticalConfigurationGroup(false, false)); + addTarget("MST7MDT", new VerticalConfigurationGroup(false, false)); + addTarget("MST", new VerticalConfigurationGroup(false, false)); + addTarget("MET", new VerticalConfigurationGroup(false, false)); + addTarget("Libya", new VerticalConfigurationGroup(false, false)); + addTarget("Kwajalein", new VerticalConfigurationGroup(false, false)); + addTarget("Japan", new VerticalConfigurationGroup(false, false)); + addTarget("Jamaica", new VerticalConfigurationGroup(false, false)); + addTarget("Israel", new VerticalConfigurationGroup(false, false)); + addTarget("Iran", new VerticalConfigurationGroup(false, false)); + addTarget("Iceland", new VerticalConfigurationGroup(false, false)); + addTarget("Hongkong", new VerticalConfigurationGroup(false, false)); + addTarget("HST", new VerticalConfigurationGroup(false, false)); + addTarget("Greenwich", new VerticalConfigurationGroup(false, false)); + addTarget("GMT0", new VerticalConfigurationGroup(false, false)); + addTarget("GMT-0", new VerticalConfigurationGroup(false, false)); + addTarget("GMT+0", new VerticalConfigurationGroup(false, false)); + addTarget("GMT", new VerticalConfigurationGroup(false, false)); + addTarget("GB-Eire", new VerticalConfigurationGroup(false, false)); + addTarget("GB", new VerticalConfigurationGroup(false, false)); + addTarget("Factory", new VerticalConfigurationGroup(false, false)); + addTarget("Eire", new VerticalConfigurationGroup(false, false)); + addTarget("Egypt", new VerticalConfigurationGroup(false, false)); + addTarget("EST5EDT", new VerticalConfigurationGroup(false, false)); + addTarget("EST", new VerticalConfigurationGroup(false, false)); + addTarget("EET", new VerticalConfigurationGroup(false, false)); + addTarget("Cuba", new VerticalConfigurationGroup(false, false)); + addTarget("CST6CDT", new VerticalConfigurationGroup(false, false)); + addTarget("CET", new VerticalConfigurationGroup(false, false)); +}; + +void TimezoneRegion::update_timezone_values(QString Gtimezone) +{ + QString region; + QString subregion; + region=Gtimezone.section('/',0,0); + subregion=Gtimezone.section('/',1,1); + HostTimeZoneRegion->setValue(region); + + if ( region == "US") + HostTimezoneRegion_US->setValue(subregion); + else if ( region == "Pacific") + HostTimezoneRegion_Pacific->setValue(subregion); + else if ( region == "Mideast") + HostTimezoneRegion_Mideast->setValue(subregion); + else if ( region == "Mexico") + HostTimezoneRegion_Mexico->setValue(subregion); + else if ( region == "Indian") + HostTimezoneRegion_Indian->setValue(subregion); + else if ( region == "Europe") + HostTimezoneRegion_Europe->setValue(subregion); + else if ( region == "Etc") + HostTimezoneRegion_Etc->setValue(subregion); + else if ( region == "Chile") + HostTimezoneRegion_Chile->setValue(subregion); + else if ( region == "Canada") + HostTimezoneRegion_Canada->setValue(subregion); + else if ( region == "Brazil") + HostTimezoneRegion_Brazil->setValue(subregion); + else if ( region == "Australia") + HostTimezoneRegion_Australia->setValue(subregion); + else if ( region == "Atlantic") + HostTimezoneRegion_Atlantic->setValue(subregion); + else if ( region == "Asia") + HostTimezoneRegion_Asia->setValue(subregion); + else if ( region == "Arctic") + HostTimezoneRegion_Arctic->setValue(subregion); + else if ( region == "Antarctica") + HostTimezoneRegion_Antarctica->setValue(subregion); + else if ( region == "America") + HostTimezoneRegion_America->setValue(subregion); + else if ( region == "Africa") + HostTimezoneRegion_Africa->setValue(subregion); +} + + +//________________Misc (NFS) Screen SETTINGS_________________________ +static HostComboBox *HostHaveCentralNFS() +{ + HostComboBox *gc = new HostComboBox("HostHaveCentralNFS"); + gc->setLabel(QObject::tr("Central NFS server")); + gc->addSelection("no"); + gc->addSelection("yes") ; + gc->setHelpText(QObject::tr("Select yes, if your media is stored on an NFS server different than the masterbackend. Say no if you are confused.")); + + return gc; +} + +static HostComboBox *HostCentralNFSIP() +{ + HostComboBox *gc = new HostComboBox("HostCentralNFSIP",true); + gc->setLabel(QObject::tr("NFS server and sharename ")); + gc->setHelpText(QObject::tr("Format should be IP:/SHARENAME, for example 192.168.1.6:/media. file:nfsmap will load shares from the nfsmap file")); + gc->addSelection("file:nfsmap") ; + gc->addSelection("") ; + return gc; +}; + +static HostComboBox *HostNFSmountpoint() +{ + #ifdef __MVAPP__ + HostComboBox *gc = new HostComboBox("HostNFSmountpoint"); + gc->addSelection("/data/media"); + #else + HostComboBox *gc = new HostComboBox("HostNFSmountpoint",true); + gc->addSelection("/myth"); + #endif + gc->setLabel(QObject::tr("Local mount point of NFS share")); + gc->addSelection("/mnt") ; + gc->setHelpText(QObject::tr("")); + return gc; +} + + +NFSSettings::NFSSettings(): + TriggeredConfigurationGroup(false,false,false,true,true,false,false,true) + { + setLabel(QObject::tr("Misc Settings")); + + Setting* havenfs = HostHaveCentralNFS(); + addChild(havenfs); + setTrigger(havenfs); + + ConfigurationGroup* settings = new VerticalConfigurationGroup(); + settings->addChild(HostCentralNFSIP()); + settings->addChild(HostNFSmountpoint()); + + addTarget("no", new VerticalConfigurationGroup()); + addTarget("yes", settings); + }; + diff --git a/abs/core/mythinstall/misc_settings.h b/abs/core/mythinstall/misc_settings.h new file mode 100755 index 0000000..66ad99c --- /dev/null +++ b/abs/core/mythinstall/misc_settings.h @@ -0,0 +1,97 @@ +#include +#include +#include +#include +#include +#include "settings.h" +#include "installsettings.h" +#include +#include + +#include +#include +#include +#include +#include +#include "util.h" + + +class MiscMainFrame: public VerticalConfigurationGroup { +Q_OBJECT +public: + MiscMainFrame(); +QTimer *autoLaunchTimer; + +public slots: + QString mf_show_tz(QString); + +signals: + void update_timezone(QString); +}; + +class MiscMainFrame2: public VerticalConfigurationGroup { +Q_OBJECT +public: + MiscMainFrame2(); +}; + + +class TimezoneButton: public VerticalConfigurationGroup { +Q_OBJECT +public: + TimezoneButton(); + TransButtonSetting *TZButton; + void disableButton(); +public slots: + void launch_tzgui(); +signals: + QString mf_launch_tzgui(); + //QString update_timezone(QString); +}; + +class TimezoneRegion: public TriggeredConfigurationGroup { +Q_OBJECT +public: + TimezoneRegion(); + HostComboBox *HostTimeZoneRegion; + HostComboBox *HostTimezoneRegion_US; + HostComboBox *HostTimezoneRegion_Pacific; + HostComboBox *HostTimezoneRegion_Mideast; + HostComboBox *HostTimezoneRegion_Mexico; + HostComboBox *HostTimezoneRegion_Indian; + HostComboBox *HostTimezoneRegion_Europe; + HostComboBox *HostTimezoneRegion_Etc; + HostComboBox *HostTimezoneRegion_Chile; + HostComboBox *HostTimezoneRegion_Canada; + HostComboBox *HostTimezoneRegion_Brazil; + HostComboBox *HostTimezoneRegion_Australia; + HostComboBox *HostTimezoneRegion_Atlantic; + HostComboBox *HostTimezoneRegion_Asia; + HostComboBox *HostTimezoneRegion_Arctic; + HostComboBox *HostTimezoneRegion_Antarctica; + HostComboBox *HostTimezoneRegion_America; + HostComboBox *HostTimezoneRegion_Africa; + void timezoneregion_fillselection(QString); + void timezoneregion_fillselection_zone(); + + +public slots: + void update_timezone_values(QString); + void timezone_gathersettings(); +signals: + void mf_show_tz(QString); +}; + + +class NFSSettings: public + TriggeredConfigurationGroup { + public: + NFSSettings(); + +}; + + + + + + diff --git a/abs/core/mythinstall/mv_common.h b/abs/core/mythinstall/mv_common.h new file mode 100755 index 0000000..865eb3d --- /dev/null +++ b/abs/core/mythinstall/mv_common.h @@ -0,0 +1,4 @@ +//#define __MVAPP__ MythVantage +#define RELEASEFILE "LinHES-release" + +extern int timezone_unknown; diff --git a/abs/core/mythinstall/mythinstall.pro b/abs/core/mythinstall/mythinstall.pro new file mode 100755 index 0000000..0a273cc --- /dev/null +++ b/abs/core/mythinstall/mythinstall.pro @@ -0,0 +1,46 @@ +# This is the path to the mythtv src. The assumtion is that this package and +# mythtv are both being build in the LinHES-PKGBUILD. +MYTHPATH="/data/LinHES-PKGBUILD/abs/core-testing/mythtv/stable/mythtv/src/mythtv-0.21" + +include ( $$MYTHPATH/libs/libmyth/mythconfig.mak) +include ( $$MYTHPATH/settings.pro) + +#pulled from program-libs.pro and modified to use $$MYTHPATH +INCLUDEPATH += $$MYTHPATH $$MYTHPATH/libs/ $$MYTHPATH/libs/libmyth $$MYTHPATH/libs/libmythtv +INCLUDEPATH += $$MYTHPATH/libs/libavutil $$MYTHPATH/libs/libavformat $$MYTHPATH/libs/libavcodec +INCLUDEPATH += $$MYTHPATH/libs/libmythupnp $$MYTHPATH/libs/libmythui +INCLUDEPATH += $$MYTHPATH/libs/libmythlivemedia + +LIBS += -L$$MYTHPATH/libs/libmyth -L$$MYTHPATH/libs/libmythtv +LIBS += -L$$MYTHPATH/libs/libavutil -L$$MYTHPATH/libs/libavcodec -L$$MYTHPATH/libs/libavformat +LIBS += -L$$MYTHPATH/libs/libmythfreemheg +LIBS += -L$$MYTHPATH/libs/libmythui +LIBS += -L$$MYTHPATH/libs/libmythupnp +LIBS += -L$$MYTHPATH/libs/libmythlivemedia + +LIBS += -lmythtv-$$LIBVERSION -lmythavformat-$$LIBVERSION +LIBS += -lmythavutil-$$LIBVERSION -lmythavcodec-$$LIBVERSION +LIBS += -lmythfreemheg-$$LIBVERSION +LIBS += -lmythupnp-$$LIBVERSION +LIBS += -lmythlivemedia-$$LIBVERSION + + + +TEMPLATE = app +CONFIG += thread +TARGET = mythinstall +target.path = $${PREFIX}/bin + +INSTALLS = target + +uifiles.path = $${PREFIX}/share/mythtv/themes/default +uifiles.files = install-ui.xml images/*.png + +INSTALLS += uifiles + +QMAKE_CLEAN += $(TARGET) + +# Input +HEADERS += installdialog.h installsettings.h settemplate.h installationtype.h autocard.h xorgsettings.h password_manage.h misc_settings.h mv_common.h infrared.h +SOURCES += main.cpp installdialog.cpp installsettings.cpp settemplate.cpp installationtype.cpp autocard.cpp xorgsettings.cpp password_manage.cpp misc_settings.cpp infrared.cpp +INCLUDEPATH += /usr/include/mythtv diff --git a/abs/core/mythinstall/password_manage.cpp b/abs/core/mythinstall/password_manage.cpp new file mode 100755 index 0000000..5156636 --- /dev/null +++ b/abs/core/mythinstall/password_manage.cpp @@ -0,0 +1,445 @@ +#include +#include +#include +#include +#include +#include "settings.h" +#include "installsettings.h" +#include "installdialog.h" +#include "password_manage.h" +#include +#include + +#include +#include +#include +#include +#include +#include "util.h" +#include +/****************************************************************************/ +typedef enum { + UseraddPopup_OK = 0, + UseraddPopup_CANCEL, + UseraddPopup_DELETE +} + UseraddPopupResult; + bool passtoggle = TRUE; + QString invalid_chars = "&<>/~`;:!"; + +class AddUserPopup +{ + public: + static UseraddPopupResult showPopup(MythMainWindow *parent, QString title, + QString message, QString& text); +}; + +UseraddPopupResult AddUserPopup::showPopup(MythMainWindow *parent, + QString title, QString message, QString& text) +{ + MythPopupBox *popup = new MythPopupBox(parent, title); + popup->addLabel(message); + + MythLineEdit *textEdit = new MythLineEdit(popup, "chooseEdit"); + textEdit->setText(text); + popup->addWidget(textEdit); + + popup->addButton(QObject::tr("OK"), popup, SLOT(accept())); + popup->addButton(QObject::tr("Cancel"), popup, SLOT(reject())); + + textEdit->setFocus(); + + bool ok = (MythDialog::Accepted == popup->ExecPopup()); + if (ok) + text = QDeepCopy(textEdit->text()); + + popup->hide(); + popup->deleteLater(); + + return (ok) ? UseraddPopup_OK : UseraddPopup_CANCEL; +} + +/****************************************************************************/ + + +void UserManagement::user_fillselection() +{ + //only add users with UID above 1000 + QString line; + QString user; + QString quid; + int uid; + QFile file("/etc/passwd"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + user = line.section(":",0,0); + quid = line.section(":",2,2); + uid=quid.toInt(); + if ( uid >= 1000 ) + userlist->addSelection(user); + } + file.close(); + } + +} + +bool UserManagement::user_exisit_check(QString name) +{ + QString line; + QString user; + QString quid; + bool founduser; + founduser=false; + int uid; + QFile file("/etc/passwd"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + user = line.section(":",0,0); + quid = line.section(":",2,2); + uid=quid.toInt(); + if ( user == name ) + { + founduser=true; + break; + } + } + file.close(); + } + + return founduser; + +} + +bool UserManagement::user_valid_check(QString check_string) +{ + QChar current_char; + int upperlimit; + int found_char; + int i ; + upperlimit = invalid_chars.length() -1 ; + for(i= 0; i <= upperlimit; i++) + { + found_char = -1; + current_char = invalid_chars.at(i); + found_char = check_string.contains(current_char,FALSE); + if ( found_char > 0 ) + return FALSE; + } + return TRUE ; + +} + +UserManagement::UserManagement(): + VerticalConfigurationGroup(false,false,false,false) + { + setLabel(QObject::tr("Password Management")); + userlist = new TransComboBoxSetting(false); + userlist->setLabel(QObject::tr("Current Accounts")); + userlist->addSelection("root"); + userlist->addSelection("mythtv"); + user_fillselection(); + userlist->setHelpText(QObject::tr("Select the account for password reset")); + + userpass1= new TransLineEditSetting(true); + userpass1->setLabel("Password"); + userpass1->SetPasswordEcho(passtoggle); + userpass1->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars)); + + + passToggleButton = new TransButtonSetting; + passToggleButton->setLabel("Toggle password view"); + passToggleButton->setHelpText(QObject::tr("Hide or show the password")); + + info = new TransLabelSetting; + info->setValue(""); + + userapplyButton = new TransButtonSetting; + userapplyButton->setLabel("Apply new password"); + + usercreateButton = new TransButtonSetting; + usercreateButton->setLabel("Create a new user account"); + usercreateButton->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars)); + + userdeleteButton = new TransButtonSetting; + userdeleteButton->setLabel("Delete current account"); + ConfigurationGroup *buttonlist = new GridConfigurationGroup(2,false); + buttonlist-> addChild(usercreateButton); + buttonlist-> addChild(userdeleteButton); + + ConfigurationGroup *buttonlist2 = new GridConfigurationGroup(2,false); + buttonlist2-> addChild(passToggleButton); + buttonlist2-> addChild(userapplyButton); + + rootSSH = new HostCheckBox("HOSTrootSSH"); + rootSSH->setLabel("Enable remote access for the root account."); + rootSSH->setHelpText(QObject::tr("Checking this will enable ssh for the root account. Leave this disabled unless you know what your doing.")); + rootSSH->setValue(false); + + addChild(userlist); + addChild(buttonlist); + addChild(userpass1); + addChild(info); + addChild(rootSSH); + addChild(buttonlist2); + + connect(userapplyButton, SIGNAL(pressed()), this, SLOT(applychanges())); + connect(userlist, SIGNAL(valueChanged(const QString&)), this, SLOT(userchanged())); + connect(usercreateButton, SIGNAL(pressed()), this, SLOT(usercreatepopup())); + connect(userdeleteButton, SIGNAL(pressed()), this, SLOT(userdeletepopup())); + connect(passToggleButton, SIGNAL(pressed()), this, SLOT(togglepass())); +}; + +void UserManagement::togglepass() +{ + + if ( passtoggle) + passtoggle = false; + else + passtoggle = true; + userpass1->SetPasswordEcho(passtoggle); +} + +void UserManagement::applychanges() +{ + QString user; + QString password; + QString user_e; + + user=userlist->getValue(); + password=userpass1->getValue(); + + user_e = QRegExp::escape( user ); + password = QRegExp::escape( password ); + if ( ! user_valid_check (password)) + { + info->setValue(" Password contains invalid characters!"); + return; + } + info->setValue(" Password has been changed for user: " + user ); + QString cmdtxt; + cmdtxt="sudo "; + cmdtxt.append("myth_user_call -c pass -u " + user_e + " -p " + password ); + myth_system(cmdtxt); + + +} + +void UserManagement::userchanged() +{ + info->setValue(" "); + userpass1->setValue(""); +} + +void UserManagement::usercreatepopup() +{ + QString name; + QString name_e; + int key = 0; + UseraddPopupResult result = AddUserPopup::showPopup( + gContext->GetMainWindow(), + tr(""), + tr("Enter a new user account name"), name); + if (result == UseraddPopup_CANCEL) + return; + //check if name exisit || add it + if ( user_exisit_check(name) ) + { + info->setValue(name + " Already present"); + userlist->setFocus(); + key = Qt::Key_Down; + QApplication::postEvent(gContext->GetMainWindow(), + new ExternalKeycodeEvent(key)); + + return; + } + + if ( ! user_valid_check (name)) + { + info->setValue(" Username contains invalid characters!"); + return; + } + userlist->addSelection(name); + userlist->setValue(name); + //run program to add user right here + QString cmdtxt; + name_e = QRegExp::escape( name ); + + cmdtxt="sudo "; + cmdtxt.append("myth_user_call -c add -u " + name_e ); + myth_system(cmdtxt); + + info->setValue("Now enter a password for " + name + " and press the apply button."); + //Set focus to userlist, then press down three times to set focus to the password box. + userlist->setFocus(); + + key = Qt::Key_Down; + QApplication::postEvent(gContext->GetMainWindow(), + new ExternalKeycodeEvent(key)); + key = Qt::Key_Down; + QApplication::postEvent(gContext->GetMainWindow(), + new ExternalKeycodeEvent(key)); + key = Qt::Key_Down; + QApplication::postEvent(gContext->GetMainWindow(), + new ExternalKeycodeEvent(key)); + +} + +void UserManagement::userdeletepopup() +{ + QString user; + QString user_e; + user=userlist->getValue(); + QString message = user ; + + DialogCode value = MythPopupBox::Show2ButtonPopup( + gContext->GetMainWindow(), "", message, + tr("Remove this account"), + tr("Do not remove this account"), + kDialogCodeButton1); + + if (kDialogCodeButton0 == value) + { + info->setValue("removed account: " + user); + if ( user == "root" || user == "mythtv" ) + { + info->setValue("Can not remove the account"); + return; + } + userlist->setValue("root"); + userlist->removeSelection(user); + //run program to remove user + QString cmdtxt; + user_e = QRegExp::escape( user ); + cmdtxt="sudo "; + cmdtxt.append("myth_user_call -c delete -u " + user_e ); + myth_system(cmdtxt); + info->setValue("Removed account: " + user); + } + else + info->setValue("Did not remove account: " + user); +} + +WebPassword::WebPassword(): + TriggeredConfigurationGroup(true,false,true,true,true,true,true,true) +{ + + webAuth = new HostCheckBox("HOSTwebauth"); + webAuth->setLabel("Enable password"); + webAuth->setHelpText(QObject::tr("Enable the use of password protection for the local website.")); + webAuth->setValue(false); + webuser = new HostLineEdit("Hostwebuser"); + webuser->setLabel("Username"); + webuser->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars)); + + webpassword = new HostLineEdit("Hostwebpassword"); + webpassword->setLabel("Password"); + webpassword->SetPasswordEcho(passtoggle); + webpassword->setHelpText(QObject::tr("The following characters will not be accepted: " + invalid_chars)); + + webpassToggleButton = new TransButtonSetting; + webpassToggleButton->setLabel("Toggle password view"); + webpassToggleButton->setHelpText(QObject::tr("Hide or show the password")); + + webapplyButton = new TransButtonSetting; + webapplyButton->setLabel("Apply new password"); + + info = new TransLabelSetting; + info->setValue(""); + + connect(webpassToggleButton, SIGNAL(pressed()), this, SLOT(togglepass())); + connect(webapplyButton, SIGNAL(pressed()),this , SLOT(webpassword_gathersettings())); + + ConfigurationGroup* webpassgroup = new VerticalConfigurationGroup(false); + webpassgroup->addChild(webuser); + webpassgroup->addChild(webpassword); + webpassgroup->addChild(info); + webpassgroup->addChild(webpassToggleButton); + webpassgroup->addChild(webapplyButton); + + addChild(webAuth); + setTrigger(webAuth); + + addTarget("0", new VerticalConfigurationGroup(false, false)); + addTarget("1", webpassgroup); + +} + + +void WebPassword::togglepass() +{ + if ( passtoggle) + passtoggle = false; + else + passtoggle = true; + webpassword->SetPasswordEcho(passtoggle); +} + +bool WebPassword::valid_check(QString check_string) +{ + // QString invalid_chars; + QChar current_char; + int upperlimit; + int found_char; + int i ; + //invalid_chars = "&<>/~`;"; + upperlimit = invalid_chars.length() -1 ; + for(i= 0; i <= upperlimit; i++) + { + found_char = -1; + current_char = invalid_chars.at(i); + found_char = check_string.contains(current_char,FALSE); + if ( found_char > 0 ) + return FALSE; + } + return TRUE ; + +} + +void WebPassword::webpassword_gathersettings() +{ + + QString pass_enabled; + QString web_user; + QString web_pass; + QString webuser_e; + QString webpass_e; + pass_enabled=webAuth->getValue(); + web_user=webuser->getValue(); + web_pass=webpassword->getValue(); + webuser_e = QRegExp::escape( web_user ); + webpass_e = QRegExp::escape( web_pass ); + if ( ! valid_check (webuser_e)) + { + info->setValue(" Username contains invalid characters!"); + return; + } + + if ( ! valid_check (webpass_e)) + { + info->setValue(" Password contains invalid characters!"); + return; + } + cout << "Running program to make the changes for web password" << endl; + QString cmdtxt; + + cmdtxt="sudo "; + cmdtxt.append("myth_user_call -c web -u " + webuser_e + " -p " + webpass_e ); + myth_system(cmdtxt); + info->setValue(" Changes applied"); + +} + +WebPasswordFrame::WebPasswordFrame(): + VerticalConfigurationGroup() +{ + WebPassword *webpassword = new WebPassword(); + addChild(webpassword); +} diff --git a/abs/core/mythinstall/password_manage.h b/abs/core/mythinstall/password_manage.h new file mode 100755 index 0000000..665f23f --- /dev/null +++ b/abs/core/mythinstall/password_manage.h @@ -0,0 +1,60 @@ +#include +#include "mythdialogs.h" +#include "libmyth/mythdialogs.h" +#include "libmyth/mythwidgets.h" +#include "installsettings.h" + + +class UserManagement: public VerticalConfigurationGroup { + Q_OBJECT +public: + UserManagement(); + TransComboBoxSetting *userlist; + TransLineEditSetting *userpass1; + TransButtonSetting *userapplyButton; + TransButtonSetting *usercreateButton; + TransButtonSetting *userdeleteButton; + TransButtonSetting *passToggleButton; + TransLabelSetting *info; + TransCheckBoxSetting *lockaccount; + HostCheckBox *rootSSH; + void user_fillselection(void); + bool user_exisit_check(QString); + bool user_valid_check(QString); + +public slots: + void applychanges(); + void userchanged(); + void usercreatepopup(); + void userdeletepopup(); + void togglepass(); +}; + + + +class WebPassword: public + TriggeredConfigurationGroup { + Q_OBJECT +public: + WebPassword(); + HostLineEdit *webuser; + HostLineEdit *webpassword; + HostCheckBox *webAuth; + TransButtonSetting *webpassToggleButton; + TransLabelSetting *info; + bool valid_check(QString); + TransButtonSetting *webapplyButton; + +public slots: + void webpassword_gathersettings(); + void togglepass(); +}; + +class WebPasswordFrame: public + VerticalConfigurationGroup { + Q_OBJECT +public: + WebPasswordFrame(); + TransButtonSetting *webapplyButton; + +}; diff --git a/abs/core/mythinstall/settemplate.cpp b/abs/core/mythinstall/settemplate.cpp new file mode 100755 index 0000000..c12ef06 --- /dev/null +++ b/abs/core/mythinstall/settemplate.cpp @@ -0,0 +1,419 @@ +#include +#include +#include +#include +#include +#include "settings.h" +#include "installsettings.h" +#include "installdialog.h" +#include "settemplate.h" +#include +#include +#include +#include + +#include + +void create_temp_table (QString create_table_name,QString like_name) +{ + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("create table " + create_table_name + " like " + like_name + ";" ); + query.exec(); + if ( like_name == "settings") + { + query.prepare("Alter table " + create_table_name + " add unique ( value ) ; " ); + query.exec(); + } + query.prepare(" truncate " + create_table_name + ";" ); + query.exec(); +}; + +void drop_temp_table (QString tname) +{ + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("drop table " + tname + ";" ); + query.exec(); +} + +void restart_frontend () +{ + + QString cmdtxt; + cmdtxt=MV_ROOT ; + cmdtxt.append("bin/systemconfig.sh reloadfe" ); + cout << "Calling systemconfig.sh reloadfe" << endl; + system(cmdtxt); + //system("/root/systemconfig.sh reloadfe" ); +} + +void choosetemplate (QString templateop, QString templatename , QString templatehostname = "") +{ + if ( templateop == "" ) + { + MythCtemplate setting; + setting.load(); + setting.save(); + setting.exec(); + }; + + QString thistemplate; + QString thisoperation; + QString thishost; + //QString runcommand = "/root/restore_default_settings.sh"; + QString runcommand = "echo "; + // cout << templateop << endl; + // cout << templatename << endl; + // cout << templatehostname << endl; + + if (templateop == "") + thisoperation = gContext -> GetSetting("HOSTtemplatetype"); + else + thisoperation = templateop; + + thistemplate = "none"; + + + if ( thisoperation == "save" ) + { + if (templatename == "" ) + thistemplate = gContext -> GetSetting("HostTemplateSave"); + else + thistemplate = templatename; + + savesettings(thistemplate); + } + else if ( thisoperation == "restore" ) + { + if (templatename == "" ) + thistemplate = gContext -> GetSetting("HostTemplateRestore"); + else + thistemplate = templatename; + + if ( thistemplate == "default_1") + c_from("default_1" , thistemplate); + else if ( thistemplate == "default_2") + c_from("default_2" ,thistemplate); + else + restoresettings(thistemplate); + + } + else if ( thisoperation == "copy_from" ) + { + if (templatename == "" ) + { + thishost = gContext ->GetSetting("HostSelectcopy_from"); + thistemplate = gContext ->GetSetting("HostTemplateRestore"); + } + else + { + thishost=templatehostname; + thistemplate=templatename; + }; + + c_from(thishost,thistemplate); + } + + +// if ( thistemplate != "none" ) +// { +// std::cout << runcommand << endl; + // system(runcommand); + //} +}; + + +void savesettings (QString templatenumber ) +{ + cout << "SAVING....." << templatenumber << endl; + QString templatename = "settings_" + templatenumber ; + // Remove old saved values + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare( "delete from " + templatename + " where hostname=:HOSTNAME ;" ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + //insert all new settings + query.prepare( "replace into " + templatename + " (select * from settings where hostname=:HOSTNAME ) ;" ) ; + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + // repeat for keybindings + templatename = "keybindings_" + templatenumber ; + query.prepare( "delete from " + templatename + " where hostname=:HOSTNAME ;" ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + query.prepare( "replace into " + templatename + " (select * from keybindings where hostname=:HOSTNAME ) ;" ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + +} + +void restoresettings (QString templatenumber ) +{ + cout << "RESTORING....." << templatenumber << endl; +// DEFAULT settings are handled by the copy from routine + MSqlQuery query(MSqlQuery::InitCon()); + QStringList tablelist ; + QStringList::Iterator it; + QString current_table; + tablelist.append ("settings"); + tablelist.append ("keybindings"); + QString templatename; + + for ( it = tablelist.begin(); it != tablelist.end(); ++it ) + { + current_table = *it ; + //find template table to use + QString templatename = current_table + "_" + templatenumber ; + QString temptable="temp_table_" + current_table + "_" + gContext->GetHostName() ; + // create temp table for merging settings, The merge is needed to accoutn for any new settings. + create_temp_table(temptable, current_table ); + + // copy in current settings + query.prepare( "replace into " + temptable + " (select * from " + current_table + " where hostname=:HOSTNAME ) ; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + // need to remove all non HOST settigns + + // copy in stored settings + query.prepare( "replace into " + temptable + " (select * from " + templatename + " where hostname=:HOSTNAME ) ; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + // remove current settings. Need to remove because the old table allows for duplicates and replace into doesn' seem to "replace" + query.prepare( "delete from " + current_table + " where hostname=:HOSTNAME ;" ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + + // copy new settings from temp to current + query.prepare( "replace into " + current_table + " (select * from " + temptable + " );" ); + query.exec(); + + // drop temptable + drop_temp_table(temptable); + + } +restart_frontend(); +}; + +void c_from(QString copyhost, QString templatenumber) +{ + cout << "Copying....." + copyhost + " " + "templatenumber" << endl; + MSqlQuery query(MSqlQuery::InitCon()); + //Create temp table, copy in settings from host_template, update hostname for new host,copy temp_table to settings. + QStringList tablelist ; + QStringList::Iterator it; + QString current_table ; + tablelist.append ("settings"); + tablelist.append ("keybindings"); + QString templatename; + QString temptable; + for ( it = tablelist.begin(); it != tablelist.end(); ++it ) + { + current_table = *it ; + cout << current_table << endl; + //find template table to use + if ( templatenumber == "Current" ) + templatename = current_table ; + else + templatename = current_table + "_" + templatenumber ; + + temptable="temp_table_" + current_table + "_" + gContext->GetHostName() ; + // create temp table for merging settings + + create_temp_table(temptable, current_table ); + cout << temptable + " " + current_table << endl; + + // copy current settings from this host into temptable minus all Mythvantage settings + if ( current_table == "settings") + { + query.prepare( "replace into " + temptable + " (select * from " + current_table + " where hostname=:HOSTNAME and value not like 'HOST%' ) ; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + } + else + query.prepare( "replace into " + temptable + " (select * from " + current_table + " where hostname=:HOSTNAME ) ; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + // update hostname to match whatever the hostname of the template is + query.prepare ("update " + temptable + " set hostname=:HOSTNAME ; " ); + query.bindValue( ":HOSTNAME" , copyhost ); + query.exec(); + + // copy current settings from copy host into temptable minus all Mythvantage settings + if ( current_table == "settings") + query.prepare( "replace into " + temptable + " (select * from " + templatename + " where hostname=:HOSTNAME and value not like 'HOST%' ) ; " ); + + else + query.prepare( "replace into " + temptable + " (select * from " + templatename + " where hostname=:HOSTNAME ) ; " ); + + query.bindValue( ":HOSTNAME" , copyhost ); + query.exec(); + + //update hostname + query.prepare ("update " + temptable + " set hostname=:HOSTNAME ; " ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + query.exec(); + + // delete old settings from settings table + if ( current_table == "settings") + { + query.prepare( "delete from " + current_table + " where hostname=:HOSTNAME and value not like 'HOST%' ;" ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + } + else + { + query.prepare( "delete from " + current_table + " where hostname=:HOSTNAME ;" ); + query.bindValue( ":HOSTNAME" , gContext->GetHostName() ); + } + query.exec(); + + // copy settings from temptable to settings + if ( current_table == "settings") + query.prepare( "replace into " + current_table + " (select * from " + temptable + " where value not like 'HOST% ' ) ;" ); + else + query.prepare( "replace into " + current_table + " (select * from " + temptable + " );" ); + + + query.exec(); + + // drop temptable + // drop_temp_table(temptable); + + +restart_frontend(); +}; + + +}; + + + + + static HostComboBox *HOSTtemplatetype() +{ + HostComboBox *gc = new HostComboBox("HOSTtemplatetype"); + gc->setLabel(QObject::tr("Template options")); + gc->addSelection("Do Nothing") ; + gc->addSelection("restore"); + gc->addSelection("save") ; + gc->addSelection("copy_from"); + + gc->setHelpText(QObject::tr("Select the name to save, this will make a copy of your keybindings and videoplayback. Choose none if you do not wish to change anything.")); + + return gc; +} + + static HostComboBox *HostTemplateSave() +{ + HostComboBox *gc = new HostComboBox("HostTemplateSave"); + gc->setLabel(QObject::tr("Save Template")); + // gc->addSelection("none"); + gc->addSelection("user1") ; + gc->addSelection("user2") ; + gc->addSelection("user3") ; + gc->setHelpText(QObject::tr("Select the name to save, this will make a copy of your keybindings and videoplayback. Choose none if you do not wish to change anything.")); + + return gc; +} + static HostComboBox *HostTemplateCopy_restore() +{ + HostComboBox *gc = new HostComboBox("HostTemplateRestore"); + gc->setLabel(QObject::tr("Template")); + // gc->addSelection("none"); + gc->addSelection("Current"); + gc->addSelection("user1") ; + gc->addSelection("user2") ; + gc->addSelection("user3") ; + gc->setHelpText(QObject::tr("Select the template you wish to restore. This will change the way Myth repsonds to you remote buttons. Choose none if you do not wish to change anything.")); + + return gc; +} + + static HostComboBox *HostTemplateRestore() +{ + HostComboBox *gc = new HostComboBox("HostTemplateRestore"); + gc->setLabel(QObject::tr("Template")); + // gc->addSelection("none"); + gc->addSelection("default_1"); + gc->addSelection("default_2"); + gc->addSelection("user1") ; + gc->addSelection("user2") ; + gc->addSelection("user3") ; + gc->setHelpText(QObject::tr("Select the template you wish to restore. This will change the way Myth repsonds to you remote buttons. Choose none if you do not wish to change anything.")); + + return gc; +} + + static HostComboBox *HostSelectcopy_from() +{ + HostComboBox *gc = new HostComboBox("HostSelectcopy_from"); + gc->setLabel(QObject::tr("Host")); + // gc->addSelection("none"); + + QString tempItem; + + MSqlQuery query(MSqlQuery::InitCon()); + + query.prepare( "SELECT DISTINCT hostname from settings where hostname is not null;"); + + if (query.exec() && query.isActive() && query.size() > 0) + { + while (query.next()) + { + tempItem = query.value(0).toString(); + gc->addSelection(tempItem); + + } + } + gc->setHelpText(QObject::tr("Select the Host you wish to copy settings from.")); + + return gc; +} + +class TemplateSettings: + public TriggeredConfigurationGroup { +public: + TemplateSettings(): + //ConfigurationGroup(false, true, false, false), + //VerticalConfigurationGroup(false, true, false, false), + TriggeredConfigurationGroup(true) { + setLabel(QObject::tr("Manage templates")); +// setUseLabel(false); + + Setting* Mtemplate = HOSTtemplatetype(); + addChild(Mtemplate); + setTrigger(Mtemplate); + + + ConfigurationGroup* trestore = new VerticalConfigurationGroup(false); + trestore->addChild(HostTemplateRestore()); + + ConfigurationGroup* tsave = new VerticalConfigurationGroup(false); + tsave->addChild(HostTemplateSave()); + + ConfigurationGroup* tcopy = new VerticalConfigurationGroup(false); + tcopy->addChild(HostSelectcopy_from()); + tcopy->addChild(HostTemplateCopy_restore()); + + + addTarget("Do Nothing", new VerticalConfigurationGroup(true)); + addTarget("restore", trestore); + addTarget("save", tsave); + addTarget("copy_from", tcopy); + + }; +}; + +MythCtemplate::MythCtemplate() +{ + + TemplateSettings *templatesettings = new TemplateSettings(); + addChild(templatesettings); + +} + + + diff --git a/abs/core/mythinstall/settemplate.h b/abs/core/mythinstall/settemplate.h new file mode 100755 index 0000000..a730cf5 --- /dev/null +++ b/abs/core/mythinstall/settemplate.h @@ -0,0 +1,13 @@ +#include +#include "mythdialogs.h" + +class MythCtemplate: public ConfigurationWizard { +public: + MythCtemplate(); + +}; + +void choosetemplate(QString,QString,QString); +void savesettings(QString); +void restoresettings(QString); +void c_from(QString , QString="current" ); diff --git a/abs/core/mythinstall/statusbox.cpp b/abs/core/mythinstall/statusbox.cpp new file mode 100755 index 0000000..fd8a6cd --- /dev/null +++ b/abs/core/mythinstall/statusbox.cpp @@ -0,0 +1,1411 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +using namespace std; + +#include "config.h" +#include "statusbox.h" +#include "mythcontext.h" +#include "remoteutil.h" +#include "programinfo.h" +#include "tv.h" +#include "jobqueue.h" +#include "util.h" +#include "mythdbcon.h" +#include "cardutil.h" + +#define REC_CAN_BE_DELETED(rec) \ + ((((rec)->programflags & FL_INUSEPLAYING) == 0) && \ + ((((rec)->programflags & FL_INUSERECORDING) == 0) || \ + ((rec)->recgroup != "LiveTV"))) + + +/** \class StatusBox + * \brief Reports on various status items. + * + * StatusBox reports on the listing status, that is how far + * into the future program listings exits. It also reports + * on the status of each tuner, the log entries, the status + * of the job queue, and the machine status. + */ + +StatusBox::StatusBox(MythMainWindow *parent, const char *name) + : MythDialog(parent, name), errored(false) +{ + // Set this value to the number of items in icon_list + // to prevent scrolling off the bottom + int item_count = 0; + dateFormat = gContext->GetSetting("ShortDateFormat", "M/d"); + timeFormat = gContext->GetSetting("TimeFormat", "h:mm AP"); + timeDateFormat = timeFormat + " " + dateFormat; + + setNoErase(); + LoadTheme(); + if (IsErrored()) + return; + + icon_list->SetItemText(item_count++, QObject::tr("Listings Status")); + icon_list->SetItemText(item_count++, QObject::tr("Tuner Status")); + icon_list->SetItemText(item_count++, QObject::tr("Log Entries")); + icon_list->SetItemText(item_count++, QObject::tr("Job Queue")); + icon_list->SetItemText(item_count++, QObject::tr("Machine Status")); + icon_list->SetItemText(item_count++, QObject::tr("AutoExpire List")); + icon_list->SetItemCurrent(0); + icon_list->SetActive(true); + + QStringList strlist; + strlist << "QUERY_IS_ACTIVE_BACKEND"; + strlist << gContext->GetHostName(); + + gContext->SendReceiveStringList(strlist); + + if (QString(strlist[0]) == "FALSE") + isBackend = false; + else if (QString(strlist[0]) == "TRUE") + isBackend = true; + else + isBackend = false; + + VERBOSE(VB_NETWORK, QString("QUERY_IS_ACTIVE_BACKEND=%1").arg(strlist[0])); + + max_icons = item_count; + inContent = false; + contentPos = 0; + contentTotalLines = 0; + contentSize = 0; + contentMid = 0; + min_level = gContext->GetNumSetting("LogDefaultView",5); + my_parent = parent; + clicked(); + + gContext->addCurrentLocation("StatusBox"); +} + +StatusBox::~StatusBox(void) +{ + gContext->removeCurrentLocation(); +} + +void StatusBox::paintEvent(QPaintEvent *e) +{ + QRect r = e->rect(); + + if (r.intersects(TopRect)) + updateTopBar(); + if (r.intersects(SelectRect)) + updateSelector(); + if (r.intersects(ContentRect)) + updateContent(); +} + +void StatusBox::updateContent() +{ + QRect pr = ContentRect; + QPixmap pix(pr.size()); + pix.fill(this, pr.topLeft()); + QPainter tmp(&pix); + QPainter p(this); + + // Normalize the variables here and set the contentMid + contentSize = list_area->GetItems(); + if (contentSize > contentTotalLines) + contentSize = contentTotalLines; + contentMid = contentSize / 2; + + int startPos = 0; + int highlightPos = 0; + + if (contentPos < contentMid) + { + startPos = 0; + highlightPos = contentPos; + } + else if (contentPos >= (contentTotalLines - contentMid)) + { + startPos = contentTotalLines - contentSize; + highlightPos = contentSize - (contentTotalLines - contentPos); + } + else if (contentPos >= contentMid) + { + startPos = contentPos - contentMid; + highlightPos = contentMid; + } + + if (content == NULL) return; + LayerSet *container = content; + + list_area->ResetList(); + for (int x = startPos; (x - startPos) <= contentSize; x++) + { + if (contentLines.contains(x)) + { + list_area->SetItemText(x - startPos, contentLines[x]); + if (contentFont.contains(x)) + list_area->EnableForcedFont(x - startPos, contentFont[x]); + } + } + + list_area->SetItemCurrent(highlightPos); + + if (inContent) + { + helptext->SetText(contentDetail[contentPos]); + update(TopRect); + } + + list_area->SetUpArrow((startPos > 0) && (contentSize < contentTotalLines)); + list_area->SetDownArrow((startPos + contentSize) < contentTotalLines); + + container->Draw(&tmp, 0, 0); + container->Draw(&tmp, 1, 0); + container->Draw(&tmp, 2, 0); + container->Draw(&tmp, 3, 0); + container->Draw(&tmp, 4, 0); + container->Draw(&tmp, 5, 0); + container->Draw(&tmp, 6, 0); + container->Draw(&tmp, 7, 0); + container->Draw(&tmp, 8, 0); + tmp.end(); + p.drawPixmap(pr.topLeft(), pix); +} + +void StatusBox::updateSelector() +{ + QRect pr = SelectRect; + QPixmap pix(pr.size()); + pix.fill(this, pr.topLeft()); + QPainter tmp(&pix); + QPainter p(this); + + if (selector == NULL) return; + LayerSet *container = selector; + + container->Draw(&tmp, 0, 0); + container->Draw(&tmp, 1, 0); + container->Draw(&tmp, 2, 0); + container->Draw(&tmp, 3, 0); + container->Draw(&tmp, 4, 0); + container->Draw(&tmp, 5, 0); + container->Draw(&tmp, 6, 0); + container->Draw(&tmp, 7, 0); + container->Draw(&tmp, 8, 0); + tmp.end(); + p.drawPixmap(pr.topLeft(), pix); +} + +void StatusBox::updateTopBar() +{ + QRect pr = TopRect; + QPixmap pix(pr.size()); + pix.fill(this, pr.topLeft()); + QPainter tmp(&pix); + QPainter p(this); + + if (topbar == NULL) return; + LayerSet *container = topbar; + + container->Draw(&tmp, 0, 0); + tmp.end(); + p.drawPixmap(pr.topLeft(), pix); +} + +void StatusBox::LoadTheme() +{ + int screenheight = 0, screenwidth = 0; + float wmult = 0, hmult = 0; + + gContext->GetScreenSettings(screenwidth, wmult, screenheight, hmult); + + theme = new XMLParse(); + theme->SetWMult(wmult); + theme->SetHMult(hmult); + if (!theme->LoadTheme(xmldata, "status", "status-")) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Unable to load theme."); + errored = true; + return; + } + + for (QDomNode child = xmldata.firstChild(); !child.isNull(); + child = child.nextSibling()) { + + QDomElement e = child.toElement(); + if (!e.isNull()) { + if (e.tagName() == "font") { + theme->parseFont(e); + } + else if (e.tagName() == "container") { + QRect area; + QString name; + int context; + theme->parseContainer(e, name, context, area); + + if (name.lower() == "topbar") + TopRect = area; + if (name.lower() == "selector") + SelectRect = area; + if (name.lower() == "content") + ContentRect = area; + } + else { + QString msg = + QString(tr("The theme you are using contains an " + "unknown element ('%1'). It will be ignored")) + .arg(e.tagName()); + VERBOSE(VB_IMPORTANT, msg); + errored = true; + } + } + } + + selector = theme->GetSet("selector"); + if (!selector) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get selector container."); + errored = true; + } + + icon_list = (UIListType*)selector->GetType("icon_list"); + if (!icon_list) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get icon list area."); + errored = true; + } + + content = theme->GetSet("content"); + if (!content) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get content container."); + errored = true; + } + + list_area = (UIListType*)content->GetType("list_area"); + if (!list_area) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get list area."); + errored = true; + } + + topbar = theme->GetSet("topbar"); + if (!topbar) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get topbar container."); + errored = true; + } + + heading = (UITextType*)topbar->GetType("heading"); + if (!heading) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get heading area."); + errored = true; + } + + helptext = (UITextType*)topbar->GetType("helptext"); + if (!helptext) + { + VERBOSE(VB_IMPORTANT, "StatusBox: Failed to get helptext area."); + errored = true; + } +} + +void StatusBox::keyPressEvent(QKeyEvent *e) +{ + bool handled = false; + QStringList actions; + gContext->GetMainWindow()->TranslateKeyPress("Status", e, actions); + + for (unsigned int i = 0; i < actions.size() && !handled; i++) + { + QString action = actions[i]; + QString currentItem; + QRegExp logNumberKeys( "^[12345678]$" ); + + currentItem = icon_list->GetItemText(icon_list->GetCurrentItem()); + handled = true; + + if (action == "SELECT") + { + clicked(); + } + else if (action == "MENU") + { + if ((inContent) && + (currentItem == QObject::tr("Log Entries"))) + { + int retval = MythPopupBox::show2ButtonPopup(my_parent, + QString("AckLogEntry"), + QObject::tr("Acknowledge all log entries at " + "this priority level or lower?"), + QObject::tr("Yes"), QObject::tr("No"), 0); + if (retval == 0) + { + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("UPDATE mythlog SET acknowledged = 1 " + "WHERE priority <= :PRIORITY ;"); + query.bindValue(":PRIORITY", min_level); + query.exec(); + doLogEntries(); + } + } + else if ((inContent) && + (currentItem == QObject::tr("Job Queue"))) + { + clicked(); + } + } + else if (action == "UP") + { + if (inContent) + { + if (contentPos > 0) + contentPos--; + update(ContentRect); + } + else + { + if (icon_list->GetCurrentItem() > 0) + icon_list->SetItemCurrent(icon_list->GetCurrentItem()-1); + clicked(); + setHelpText(); + update(SelectRect); + } + + } + else if (action == "DOWN") + { + if (inContent) + { + if (contentPos < (contentTotalLines - 1)) + contentPos++; + update(ContentRect); + } + else + { + if (icon_list->GetCurrentItem() < (max_icons - 1)) + icon_list->SetItemCurrent(icon_list->GetCurrentItem()+1); + clicked(); + setHelpText(); + update(SelectRect); + } + } + else if (action == "PAGEUP" && inContent) + { + contentPos -= contentSize; + if (contentPos < 0) + contentPos = 0; + update(ContentRect); + } + else if (action == "PAGEDOWN" && inContent) + { + contentPos += contentSize; + if (contentPos > (contentTotalLines - 1)) + contentPos = contentTotalLines - 1; + update(ContentRect); + } + else if ((action == "RIGHT") && + (!inContent) && + ((contentTotalLines > contentSize) || + (doScroll))) + { + clicked(); + inContent = true; + contentPos = 0; + icon_list->SetActive(false); + list_area->SetActive(true); + update(SelectRect); + update(ContentRect); + } + else if (action == "LEFT") + { + if (inContent) + { + inContent = false; + contentPos = 0; + list_area->SetActive(false); + icon_list->SetActive(true); + setHelpText(); + update(SelectRect); + update(ContentRect); + } + else + { + if (gContext->GetNumSetting("UseArrowAccels", 1)) + accept(); + } + } + else if ((currentItem == QObject::tr("Log Entries")) && + (logNumberKeys.search(action) == 0)) + { + min_level = action.toInt(); + helptext->SetText(QObject::tr("Setting priority level to %1") + .arg(min_level)); + update(TopRect); + doLogEntries(); + } + else + handled = false; + } + + if (!handled) + MythDialog::keyPressEvent(e); +} + +void StatusBox::setHelpText() +{ + if (inContent) + { + helptext->SetText(contentDetail[contentPos]); + } else { + topbar->ClearAllText(); + QString currentItem; + + currentItem = icon_list->GetItemText(icon_list->GetCurrentItem()); + + if (currentItem == QObject::tr("Listings Status")) + helptext->SetText(QObject::tr("Listings Status shows the latest " + "status information from " + "mythfilldatabase")); + + if (currentItem == QObject::tr("Tuner Status")) + helptext->SetText(QObject::tr("Tuner Status shows the current " + "information about the state of " + "backend tuner cards")); + + if (currentItem == QObject::tr("DVB Status")) + helptext->SetText(QObject::tr("DVB Status shows the quality " + "statistics of all DVB cards, if " + "present")); + + if (currentItem == QObject::tr("Log Entries")) + helptext->SetText(QObject::tr("Log Entries shows any unread log " + "entries from the system if you " + "have logging enabled")); + if (currentItem == QObject::tr("Job Queue")) + helptext->SetText(QObject::tr("Job Queue shows any jobs currently " + "in Myth's Job Queue such as a " + "commercial flagging job.")); + if (currentItem == QObject::tr("Machine Status")) + { + QString machineStr = QObject::tr("Machine Status shows " + "some operating system " + "statistics of this machine"); + if (!isBackend) + machineStr.append(" " + QObject::tr("and the MythTV server")); + + helptext->SetText(machineStr); + } + + if (currentItem == QObject::tr("AutoExpire List")) + helptext->SetText(QObject::tr("The AutoExpire List shows all " + "recordings which may be expired and the order of their " + "expiration. Recordings at the top of the list will be " + "expired first.")); + } + update(TopRect); +} + +void StatusBox::clicked() +{ + QString currentItem = icon_list->GetItemText(icon_list->GetCurrentItem()); + + if (inContent) + { + if (currentItem == QObject::tr("Log Entries")) + { + int retval; + + retval = MythPopupBox::show2ButtonPopup(my_parent, + QString("AckLogEntry"), + QObject::tr("Acknowledge this log entry?"), + QObject::tr("Yes"), QObject::tr("No"), 0); + if (retval == 0) + { + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("UPDATE mythlog SET acknowledged = 1 " + "WHERE logid = :LOGID ;"); + query.bindValue(":LOGID", contentData[contentPos]); + query.exec(); + doLogEntries(); + } + } + else if (currentItem == QObject::tr("Job Queue")) + { + QStringList msgs; + int jobStatus; + int retval; + + jobStatus = JobQueue::GetJobStatus( + contentData[contentPos].toInt()); + + if (jobStatus == JOB_QUEUED) + { + retval = MythPopupBox::show2ButtonPopup(my_parent, + QString("JobQueuePopup"), + QObject::tr("Delete Job?"), + QObject::tr("Yes"), + QObject::tr("No"), 1); + if (retval == 0) + { + JobQueue::DeleteJob(contentData[contentPos].toInt()); + doJobQueueStatus(); + } + } + else if ((jobStatus == JOB_PENDING) || + (jobStatus == JOB_STARTING) || + (jobStatus == JOB_RUNNING)) + { + msgs << QObject::tr("Pause"); + msgs << QObject::tr("Stop"); + msgs << QObject::tr("No Change"); + retval = MythPopupBox::showButtonPopup(my_parent, + QString("JobQueuePopup"), + QObject::tr("Job Queue Actions:"), + msgs, 2); + if (retval == 0) + { + JobQueue::PauseJob(contentData[contentPos].toInt()); + doJobQueueStatus(); + } + else if (retval == 1) + { + JobQueue::StopJob(contentData[contentPos].toInt()); + doJobQueueStatus(); + } + } + else if (jobStatus == JOB_PAUSED) + { + msgs << QObject::tr("Resume"); + msgs << QObject::tr("Stop"); + msgs << QObject::tr("No Change"); + retval = MythPopupBox::showButtonPopup(my_parent, + QString("JobQueuePopup"), + QObject::tr("Job Queue Actions:"), + msgs, 2); + if (retval == 0) + { + JobQueue::ResumeJob(contentData[contentPos].toInt()); + doJobQueueStatus(); + } + else if (retval == 1) + { + JobQueue::StopJob(contentData[contentPos].toInt()); + doJobQueueStatus(); + } + } + else if (jobStatus & JOB_DONE) + { + retval = MythPopupBox::show2ButtonPopup(my_parent, + QString("JobQueuePopup"), + QObject::tr("Requeue Job?"), + QObject::tr("Yes"), + QObject::tr("No"), 1); + if (retval == 0) + { + JobQueue::ChangeJobStatus(contentData[contentPos].toInt(), + JOB_QUEUED); + doJobQueueStatus(); + } + } + } + else if (currentItem == QObject::tr("AutoExpire List")) + { + ProgramInfo* rec; + + rec = expList[contentPos]; + + if (rec) + { + QStringList msgs; + int retval; + + msgs << QObject::tr("Delete Now"); + msgs << QObject::tr("Disable AutoExpire"); + msgs << QObject::tr("No Change"); + + retval = MythPopupBox::showButtonPopup(my_parent, + QString("AutoExpirePopup"), + QObject::tr("AutoExpire Actions:"), + msgs, 2); + + if (retval == 0 && REC_CAN_BE_DELETED(rec)) + { + RemoteDeleteRecording(rec, false, false); + } + else if (retval == 1) + { + rec->SetAutoExpire(0); + if ((rec)->recgroup == "LiveTV") + rec->ApplyRecordRecGroupChange("Default"); + } + + // Update list, prevent selected item going off bottom + doAutoExpireList(); + if (contentPos >= (int)expList.size()) + contentPos = max((int)expList.size()-1,0); + } + } + return; + } + + // Clear all visible content elements here + // I'm sure there's a better way to do this but I can't find it + content->ClearAllText(); + list_area->ResetList(); + contentLines.clear(); + contentDetail.clear(); + contentFont.clear(); + contentData.clear(); + + if (currentItem == QObject::tr("Listings Status")) + doListingsStatus(); + else if (currentItem == QObject::tr("Tuner Status")) + doTunerStatus(); + else if (currentItem == QObject::tr("Log Entries")) + doLogEntries(); + else if (currentItem == QObject::tr("Job Queue")) + doJobQueueStatus(); + else if (currentItem == QObject::tr("Machine Status")) + doMachineStatus(); + else if (currentItem == QObject::tr("AutoExpire List")) + doAutoExpireList(); +} + +void StatusBox::doListingsStatus() +{ + QString mfdLastRunStart, mfdLastRunEnd, mfdLastRunStatus, mfdNextRunStart; + QString querytext, Status, DataDirectMessage; + int DaysOfData; + QDateTime qdtNow, GuideDataThrough; + int count = 0; + + contentLines.clear(); + contentDetail.clear(); + contentFont.clear(); + doScroll = false; + + qdtNow = QDateTime::currentDateTime(); + + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("SELECT max(endtime) FROM program WHERE manualid=0;"); + query.exec(); + + if (query.isActive() && query.size()) + { + query.next(); + GuideDataThrough = QDateTime::fromString(query.value(0).toString(), + Qt::ISODate); + } + + mfdLastRunStart = gContext->GetSetting("mythfilldatabaseLastRunStart"); + mfdLastRunEnd = gContext->GetSetting("mythfilldatabaseLastRunEnd"); + mfdLastRunStatus = gContext->GetSetting("mythfilldatabaseLastRunStatus"); + mfdNextRunStart = gContext->GetSetting("MythFillSuggestedRunTime"); + DataDirectMessage = gContext->GetSetting("DataDirectMessage"); + + mfdNextRunStart.replace("T", " "); + + extern const char *myth_source_version; + contentLines[count++] = QObject::tr("Myth version:") + " " + + MYTH_BINARY_VERSION + " " + + myth_source_version; + contentLines[count++] = QObject::tr("Last mythfilldatabase guide update:"); + contentLines[count++] = QObject::tr("Started: ") + mfdLastRunStart; + + if (mfdLastRunEnd >= mfdLastRunStart) //if end < start, it's still running. + contentLines[count++] = QObject::tr("Finished: ") + mfdLastRunEnd; + + contentLines[count++] = QObject::tr("Result: ") + mfdLastRunStatus; + + + if (mfdNextRunStart >= mfdLastRunStart) + contentLines[count++] = QObject::tr("Suggested Next: ") + + mfdNextRunStart; + + DaysOfData = qdtNow.daysTo(GuideDataThrough); + + if (GuideDataThrough.isNull()) + { + contentLines[count++] = ""; + contentLines[count++] = QObject::tr("There's no guide data available!"); + contentLines[count++] = QObject::tr("Have you run mythfilldatabase?"); + } + else + { + contentLines[count++] = QObject::tr("There is guide data until ") + + QDateTime(GuideDataThrough) + .toString("yyyy-MM-dd hh:mm"); + + if (DaysOfData > 0) + { + Status = QString("(%1 ").arg(DaysOfData); + if (DaysOfData >1) + Status += QObject::tr("days"); + else + Status += QObject::tr("day"); + Status += ")."; + contentLines[count++] = Status; + } + } + + if (DaysOfData <= 3) + { + contentLines[count++] = QObject::tr("WARNING: is mythfilldatabase " + "running?"); + } + + if (!DataDirectMessage.isNull()) + { + contentLines[count++] = QObject::tr("DataDirect Status: "); + contentLines[count++] = DataDirectMessage; + } + + contentTotalLines = count; + update(ContentRect); +} + +void StatusBox::doTunerStatus() +{ + doScroll = true; + contentLines.clear(); + contentDetail.clear(); + contentFont.clear(); + + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare( + "SELECT cardid, cardtype, videodevice " + "FROM capturecard WHERE parentid='0' ORDER BY cardid"); + + if (!query.exec() || !query.isActive()) + { + MythContext::DBError("StatusBox::doTunerStatus()", query); + contentTotalLines = 0; + update(ContentRect); + return; + } + + uint count = 0; + while (query.next()) + { + int cardid = query.value(0).toInt(); + + QString cmd = QString("QUERY_REMOTEENCODER %1").arg(cardid); + QStringList strlist = cmd; + strlist << "GET_STATE"; + + gContext->SendReceiveStringList(strlist); + int state = strlist[0].toInt(); + + QString status = ""; + if (state == kState_Error) + status = tr("is unavailable"); + else if (state == kState_WatchingLiveTV) + status = tr("is watching live TV"); + else if (state == kState_RecordingOnly || + state == kState_WatchingRecording) + status = tr("is recording"); + else + status = tr("is not recording"); + + QString tun = tr("Tuner %1 ").arg(cardid); + QString devlabel = CardUtil::GetDeviceLabel( + cardid, query.value(1).toString(), query.value(2).toString()); + + contentLines[count] = tun + status; + contentDetail[count] = tun + devlabel + " " + status; + + if (state == kState_RecordingOnly || + state == kState_WatchingRecording) + { + strlist = QString("QUERY_RECORDER %1").arg(cardid); + strlist << "GET_RECORDING"; + gContext->SendReceiveStringList(strlist); + ProgramInfo *proginfo = new ProgramInfo; + proginfo->FromStringList(strlist, 0); + + status += " " + proginfo->title; + status += "\n"; + status += proginfo->subtitle; + contentDetail[count] = tun + devlabel + " " + status; + } + count++; + } + contentTotalLines = count; + update(ContentRect); +} + +void StatusBox::doLogEntries(void) +{ + QString line; + int count = 0; + + doScroll = true; + + contentLines.clear(); + contentDetail.clear(); + contentFont.clear(); + contentData.clear(); + + MSqlQuery query(MSqlQuery::InitCon()); + query.prepare("SELECT logid, module, priority, logdate, host, " + "message, details " + "FROM mythlog WHERE acknowledged = 0 " + "AND priority <= :PRIORITY ORDER BY logdate DESC;"); + query.bindValue(":PRIORITY", min_level); + query.exec(); + + if (query.isActive()) + { + while (query.next()) + { + line = QString("%1").arg(query.value(5).toString()); + contentLines[count] = line; + + if (query.value(6).toString() != "") + line = tr("On %1 %2 from %3.%4\n%5\n%6") + .arg(query.value(3).toDateTime() + .toString(dateFormat)) + .arg(query.value(3).toDateTime() + .toString(timeFormat)) + .arg(query.value(4).toString()) + .arg(query.value(1).toString()) + .arg(query.value(5).toString()) + .arg(QString::fromUtf8(query.value(6).toString())); + else + line = tr("On %1 %2 from %3.%4\n%5\nNo other details") + .arg(query.value(3).toDateTime() + .toString(dateFormat)) + .arg(query.value(3).toDateTime() + .toString(timeFormat)) + .arg(query.value(4).toString()) + .arg(query.value(1).toString()) + .arg(query.value(5).toString()); + contentDetail[count] = line; + contentData[count++] = query.value(0).toString(); + } + } + + if (!count) + { + doScroll = false; + contentLines[count++] = QObject::tr("No items found at priority " + "level %1 or lower.") + .arg(min_level); + contentLines[count++] = QObject::tr("Use 1-8 to change priority " + "level."); + } + + contentTotalLines = count; + if (contentPos > (contentTotalLines - 1)) + contentPos = contentTotalLines - 1; + + update(ContentRect); +} + +void StatusBox::doJobQueueStatus() +{ + QMap jobs; + QMap::Iterator it; + int count = 0; + + QString detail; + + JobQueue::GetJobsInQueue(jobs, + JOB_LIST_NOT_DONE | JOB_LIST_ERROR | + JOB_LIST_RECENT); + + doScroll = true; + + contentLines.clear(); + contentDetail.clear(); + contentFont.clear(); + contentData.clear(); + + if (jobs.size()) + { + for (it = jobs.begin(); it != jobs.end(); ++it) + { + QString chanid = it.data().chanid; + QDateTime starttime = it.data().starttime; + ProgramInfo *pginfo; + + pginfo = ProgramInfo::GetProgramFromRecorded(chanid, starttime); + + if (!pginfo) + continue; + + detail = pginfo->title + "\n" + + pginfo->channame + " " + pginfo->chanstr + + " @ " + starttime.toString(timeDateFormat) + "\n" + + tr("Job:") + " " + JobQueue::JobText(it.data().type) + + " " + tr("Status: ") + + JobQueue::StatusText(it.data().status); + + if (it.data().status != JOB_QUEUED) + detail += " (" + it.data().hostname + ")"; + + detail += "\n" + it.data().comment; + + contentLines[count] = pginfo->title + " @ " + + starttime.toString(timeDateFormat); + + contentDetail[count] = detail; + contentData[count] = QString("%1").arg(it.data().id); + + if (it.data().status == JOB_ERRORED) + contentFont[count] = "error"; + else if (it.data().status == JOB_ABORTED) + contentFont[count] = "warning"; + + count++; + + delete pginfo; + } + } + else + { + contentLines[count++] = QObject::tr("Job Queue is currently empty."); + doScroll = false; + } + + contentTotalLines = count; + update(ContentRect); +} + +// Some helper routines for doMachineStatus() that format the output strings + +/** \fn sm_str(long long, int) + * \brief Returns a short string describing an amount of space, choosing + * one of a number of useful units, "TB", "GB", "MB", or "KB". + * \param sizeKB Number of kilobytes. + * \param prec Precision to use if we have less than ten of whatever + * unit is chosen. + */ +static const QString sm_str(long long sizeKB, int prec=1) +{ + if (sizeKB>1024*1024*1024) // Terabytes + { + double sizeGB = sizeKB/(1024*1024*1024.0); + return QString("%1 TB").arg(sizeGB, 0, 'f', (sizeGB>10)?0:prec); + } + else if (sizeKB>1024*1024) // Gigabytes + { + double sizeGB = sizeKB/(1024*1024.0); + return QString("%1 GB").arg(sizeGB, 0, 'f', (sizeGB>10)?0:prec); + } + else if (sizeKB>1024) // Megabytes + { + double sizeMB = sizeKB/1024.0; + return QString("%1 MB").arg(sizeMB, 0, 'f', (sizeMB>10)?0:prec); + } + // Kilobytes + return QString("%1 KB").arg(sizeKB); +} + +static const QString usage_str_kb(long long total, + long long used, + long long free) +{ + QString ret = QObject::tr("Unknown"); + if (total > 0.0 && free > 0.0) + { + double percent = (100.0*free)/total; + ret = QObject::tr("%1 total, %2 used, %3 (or %4%) free.") + .arg(sm_str(total)).arg(sm_str(used)) + .arg(sm_str(free)).arg(percent, 0, 'f', (percent >= 10.0) ? 0 : 2); + } + return ret; +} + +static const QString usage_str_mb(float total, float used, float free) +{ + return usage_str_kb((long long)(total*1024), (long long)(used*1024), + (long long)(free*1024)); +} + +static void disk_usage_with_rec_time_kb(QStringList& out, long long total, + long long used, long long free, + const recprof2bps_t& prof2bps) +{ + const QString tail = QObject::tr(", using your %1 rate of %2 Kb/sec"); + + out<> 1) * 15; + uint minLeft = ((free<<5)/bytesPerMin)<<5; + minLeft = (minLeft/15)*15; + uint hoursLeft = minLeft/60; + if (hoursLeft > 3) + out< 90) + out< 0) + { + char buff[6]; + QString dayLabel; + + if (days == 1) + dayLabel = QObject::tr("day"); + else + dayLabel = QObject::tr("days"); + + sprintf(buff, "%d:%02d", hours, min); + + return str + QString("%1 %2, %3").arg(days).arg(dayLabel).arg(buff); + } + else + { + char buff[9]; + + sprintf(buff, "%d:%02d:%02d", hours, min, secs); + + return str + buff; + } +} + +/** \fn StatusBox::getActualRecordedBPS(QString hostnames) + * \brief Fills in recordingProfilesBPS w/ average bitrate from recorded table + */ +void StatusBox::getActualRecordedBPS(QString hostnames) +{ + recordingProfilesBPS.clear(); + + QString querystr; + MSqlQuery query(MSqlQuery::InitCon()); + + querystr = + "SELECT sum(filesize) * 8 / " + "sum(((unix_timestamp(endtime) - unix_timestamp(starttime)))) " + "AS avg_bitrate " + "FROM recorded WHERE hostname in (%1) " + "AND (unix_timestamp(endtime) - unix_timestamp(starttime)) > 300;"; + + query.prepare(querystr.arg(hostnames)); + + if (query.exec() && query.isActive() && query.size() > 0 && query.next() && + query.value(0).toDouble() > 0) + { + recordingProfilesBPS[QObject::tr("average")] = + (int)(query.value(0).toDouble()); + } + + querystr = + "SELECT max(filesize * 8 / " + "(unix_timestamp(endtime) - unix_timestamp(starttime))) " + "AS max_bitrate " + "FROM recorded WHERE hostname in (%1) " + "AND (unix_timestamp(endtime) - unix_timestamp(starttime)) > 300;"; + + query.prepare(querystr.arg(hostnames)); + + if (query.exec() && query.isActive() && query.size() > 0 && query.next() && + query.value(0).toDouble() > 0) + { + recordingProfilesBPS[QObject::tr("maximum")] = + (int)(query.value(0).toDouble()); + } +} + +/** \fn StatusBox::doMachineStatus() + * \brief Show machine status. + * + * This returns statisics for master backend when using + * a frontend only machine. And returns info on the current + * system if frontend is running on a backend machine. + * \bug We should report on all backends and the current frontend. + */ +void StatusBox::doMachineStatus() +{ + int count(0); + int totalM, usedM, freeM; // Physical memory + int totalS, usedS, freeS; // Virtual memory (swap) + time_t uptime; + int detailBegin; + QString detailString; + int detailLoop; + + contentLines.clear(); + contentDetail.clear(); + contentFont.clear(); + doScroll = true; + + detailBegin = count; + detailString = ""; + + if (isBackend) + contentLines[count] = QObject::tr("System") + ":"; + else + contentLines[count] = QObject::tr("This machine") + ":"; + detailString += contentLines[count] + "\n"; + count++; + + // uptime + if (!getUptime(uptime)) + uptime = 0; + contentLines[count] = uptimeStr(uptime); + + // weighted average loads + contentLines[count].append(". " + QObject::tr("Load") + ": "); + + double loads[3]; + if (getloadavg(loads,3) == -1) + contentLines[count].append(QObject::tr("unknown") + + " - getloadavg() " + QObject::tr("failed")); + else + { + char buff[30]; + + sprintf(buff, "%0.2lf, %0.2lf, %0.2lf", loads[0], loads[1], loads[2]); + contentLines[count].append(QString(buff)); + } + detailString += contentLines[count] + "\n"; + count++; + + + // memory usage + if (getMemStats(totalM, freeM, totalS, freeS)) + { + usedM = totalM - freeM; + if (totalM > 0) + { + contentLines[count] = " " + QObject::tr("RAM") + + ": " + usage_str_mb(totalM, usedM, freeM); + detailString += contentLines[count] + "\n"; + count++; + } + usedS = totalS - freeS; + if (totalS > 0) + { + contentLines[count] = " " + QObject::tr("Swap") + + ": " + usage_str_mb(totalS, usedS, freeS); + detailString += contentLines[count] + "\n"; + count++; + } + } + + for (detailLoop = detailBegin; detailLoop < count; detailLoop++) + contentDetail[detailLoop] = detailString; + + detailBegin = count; + detailString = ""; + + if (!isBackend) + { + contentLines[count] = QObject::tr("MythTV server") + ":"; + detailString += contentLines[count] + "\n"; + count++; + + // uptime + if (!RemoteGetUptime(uptime)) + uptime = 0; + contentLines[count] = uptimeStr(uptime); + + // weighted average loads + contentLines[count].append(". " + QObject::tr("Load") + ": "); + float loads[3]; + if (RemoteGetLoad(loads)) + { + char buff[30]; + + sprintf(buff, "%0.2f, %0.2f, %0.2f", loads[0], loads[1], loads[2]); + contentLines[count].append(QString(buff)); + } + else + contentLines[count].append(QObject::tr("unknown")); + + detailString += contentLines[count] + "\n"; + count++; + + // memory usage + if (RemoteGetMemStats(totalM, freeM, totalS, freeS)) + { + usedM = totalM - freeM; + if (totalM > 0) + { + contentLines[count] = " " + QObject::tr("RAM") + + ": " + usage_str_mb(totalM, usedM, freeM); + detailString += contentLines[count] + "\n"; + count++; + } + + usedS = totalS - freeS; + if (totalS > 0) + { + contentLines[count] = " " + QObject::tr("Swap") + + ": " + usage_str_mb(totalS, usedS, freeS); + detailString += contentLines[count] + "\n"; + count++; + } + } + } + + for (detailLoop = detailBegin; detailLoop < count; detailLoop++) + contentDetail[detailLoop] = detailString; + + detailBegin = count; + detailString = ""; + + // get free disk space + QString hostnames; + + vector fsInfos = RemoteGetFreeSpace(); + for (uint i=0; i::iterator it; + for (it = expList.begin(); it != expList.end(); it++) + delete *it; + expList.clear(); + + RemoteGetAllExpiringRecordings(expList); + + for (it = expList.begin(); it != expList.end(); it++) + { + pginfo = *it; + + totalSize += pginfo->filesize; + if (pginfo->recgroup == "LiveTV") + { + liveTVSize += pginfo->filesize; + liveTVCount++; + } + } + + staticInfo = tr("%1 recordings consuming %2 are allowed to expire") + .arg(expList.size()).arg(sm_str(totalSize / 1024)) + "\n"; + + if (liveTVCount) + staticInfo += tr("%1 of these are LiveTV and consume %2") + .arg(liveTVCount).arg(sm_str(liveTVSize / 1024)) + "\n"; + else + staticInfo += "\n"; + + for (it = expList.begin(); it != expList.end(); it++) + { + pginfo = *it; + contentLine = pginfo->recstartts.toString(dateFormat) + " - "; + + if (pginfo->recgroup == "LiveTV") + contentLine += "(" + tr("LiveTV") + ") "; + + contentLine += pginfo->title + + " (" + sm_str(pginfo->filesize / 1024) + ")"; + + detailInfo = staticInfo; + detailInfo += pginfo->recstartts.toString(timeDateFormat) + " - " + + pginfo->recendts.toString(timeDateFormat); + + detailInfo += " (" + sm_str(pginfo->filesize / 1024) + ")"; + + if (pginfo->recgroup == "LiveTV") + detailInfo += " (" + tr("LiveTV") + ")"; + + detailInfo += "\n" + pginfo->title; + + if (pginfo->subtitle != "") + detailInfo += " - " + pginfo->subtitle + ""; + + contentLines[count] = contentLine; + contentDetail[count] = detailInfo; + count++; + } + + contentTotalLines = count; + update(ContentRect); +} + +/* vim: set expandtab tabstop=4 shiftwidth=4: */ diff --git a/abs/core/mythinstall/statusbox.h b/abs/core/mythinstall/statusbox.h new file mode 100755 index 0000000..dd209ca --- /dev/null +++ b/abs/core/mythinstall/statusbox.h @@ -0,0 +1,76 @@ +#ifndef STATUSBOX_H_ +#define STATUSBOX_H_ + +#include +#include "mythwidgets.h" +#include "mythdialogs.h" +#include "uitypes.h" +#include "xmlparse.h" +#include "programinfo.h" + +typedef QMap recprof2bps_t; + +class LayerSet; + +class StatusBox : public MythDialog +{ + Q_OBJECT + public: + StatusBox(MythMainWindow *parent, const char *name = 0); + ~StatusBox(void); + + bool IsErrored() const { return errored; } + + protected slots: + + protected: + void keyPressEvent(QKeyEvent *e); + void paintEvent(QPaintEvent *e); + + private: + void updateTopBar(); + void updateSelector(); + void updateContent(); + void LoadTheme(); + void doListingsStatus(); + void doTunerStatus(); + void doLogEntries(); + void doJobQueueStatus(); + void doMachineStatus(); + void doAutoExpireList(); + void clicked(); + void setHelpText(); + void getActualRecordedBPS(QString hostnames); + + XMLParse *theme; + QDomElement xmldata; + QRect TopRect, SelectRect, ContentRect; + UITextType *heading, *helptext; + UIListType *icon_list, *list_area; + LayerSet *selector, *topbar, *content; + + int max_icons; + + bool inContent, doScroll; + int contentTotalLines; + int contentSize; + int contentPos; + int contentMid; + int min_level; + QString dateFormat, timeFormat, timeDateFormat; + + QMap contentLines; + QMap contentDetail; + QMap contentFont; + QMap contentData; + recprof2bps_t recordingProfilesBPS; + + vector expList; + + MythMainWindow *my_parent; + + bool isBackend; + bool errored; +}; + +#endif diff --git a/abs/core/mythinstall/xorgsettings.cpp b/abs/core/mythinstall/xorgsettings.cpp new file mode 100755 index 0000000..02fa3ce --- /dev/null +++ b/abs/core/mythinstall/xorgsettings.cpp @@ -0,0 +1,686 @@ + + +//_include +#include +#include +#include +#include +#include "settings.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +#include // For WIFEXITED on Mac OS X +#include +#include "mythcontext.h" +#include "libmyth/mythdialogs.h" +#include "mythdbcon.h" +#include "lcddevice.h" +#include "tv.h" +#include "programinfo.h" +#include "uitypes.h" +#include "remoteutil.h" +#include +#include +#include +#include + +#include "installsettings.h" +#include "installdialog.h" +#include "xorgsettings.h" +#include +#include +#include "installsettings.h" +extern HostParms hostparm; +extern DDCinfo ddcinfo; +// __________________All the Xorg settings______________ +void ReadDDCvalues (void) +{ + QString line; + QString currentitem; + system ("/usr/sbin/ddcprobe > /tmp/ddcinfo"); + QFile file("/tmp/ddcinfo"); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.contains("Timing ranges:") ) + { + currentitem = line.section( "=", 1,1 ); + ddcinfo.XVrefresh = line.section( "=", 2,2 ); + ddcinfo.XHsync = currentitem.section( "," , 0,0 ); + } + else if ( line.contains (" Dimensions") ) + { + ddcinfo.Displaysize= line.section( ":", 1,1 ); + }; + } + file.close(); + } +}; + +static HostCheckBox *HostXUseAdvanced() +{ + HostCheckBox *gc = new HostCheckBox("HostXUseAdvanced"); + gc->setLabel(QObject::tr("Advanced xorg configuration")); + gc->setValue(false); + gc->setHelpText(QObject::tr("Displays more settings for Xorg")); + return gc; +}; + +static HostComboBox *HostXgeneric_connection() +{ + HostComboBox *gc = new HostComboBox("HostXgenericConnection",false); + gc->setLabel(QObject::tr("Connection")); + gc->addSelection("VGA"); + gc->addSelection("DVI"); + gc->addSelection("TV"); + gc->addSelection("AUTO"); + gc->setHelpText(QObject::tr("Video-out")); + return gc; +} + + +static HostCheckBox *HostXIgnoreEDID() +{ + HostCheckBox *gc = new HostCheckBox("HostXIgnoreEDID"); + gc->setLabel(QObject::tr("Ignore data provided by monitor")); + gc->setValue(false); + gc->setHelpText(QObject::tr("")); + return gc; +}; + + +static HostSpinBox *HostXHsyncLow() +{ + HostSpinBox *gc = new HostSpinBox("HostXHsyncLow", 1, 200, 1, true); + gc->setLabel(QObject::tr("Hsync")); + gc->setValue(6); + gc->setHelpText(QObject::tr("" )); + return gc; +} +static HostSpinBox *HostXHsyncHigh() +{ + HostSpinBox *gc = new HostSpinBox("HostXHsyncHigh", 1, 200, 1, true); + gc->setLabel(QObject::tr("")); + gc->setValue(6); + gc->setHelpText(QObject::tr("" )); + return gc; +} + +static HostSpinBox *HostXVrefreshLow() +{ + HostSpinBox *gc = new HostSpinBox("HostXVrefreshLow", 1, 200, 1, true); + gc->setLabel(QObject::tr("Vrefresh")); + gc->setValue(6); + gc->setHelpText(QObject::tr("" )); + return gc; +} +static HostSpinBox *HostXVrefreshHigh() +{ + HostSpinBox *gc = new HostSpinBox("HostXVrefreshHigh", 1, 200, 1, true); + gc->setLabel(QObject::tr("")); + gc->setValue(6); + gc->setHelpText(QObject::tr("" )); + return gc; +} + +static HostComboBox *HostXDisplaysize() +{ + HostComboBox *gc = new HostComboBox("HostXdisplaysize",true); + gc->setLabel(QObject::tr("Display size")); + gc->setHelpText(QObject::tr("Format should be two numbers 320 250" )); + gc->addSelection("487 274 _ 1920x1080 at 100dpi (16:9)"); + gc->addSelection("325 182 _ 1280x720 at 100dpi (16:9)"); + gc->addSelection("325 243 _ 1280x960 at 100dpi (4:3)"); + gc->addSelection("260 195 _ 1024x768 at 100dpi (4:3)"); + gc->addSelection("203 153 _ 800x600 at 100dpi (4:3)"); + gc->addSelection("162 121 _ 640x480 at 100dpi (4:3)"); + gc->addSelection("Custom"); + return gc; +} + +class EDIDprobedinfo : public TransLabelSetting +{ +public: + EDIDprobedinfo() + { + QString currentitem = "Reported info \n"; + currentitem.append("Hsync: "); + currentitem.append (ddcinfo.XHsync); + currentitem.append (" Vrefresh: "); + currentitem.append(ddcinfo.XVrefresh ); + currentitem.append (" Displaysize: "); + currentitem.append(ddcinfo.Displaysize); + setLabel(currentitem); + }; +}; + + +void AdvancedXGeneric_modelines::generic_fillselection(QString modelinefile ) +{ + if ( hostparm.displayshowadvancedX ) + { + QString currentitem; + QString cfiletxt; + cfiletxt=MV_ROOT; + cfiletxt.append("templates/xorg/modeline." ); + QString currentfile = cfiletxt; + currentfile.append(modelinefile); + QString line; + QRegExp sep( "\"" ); + QFile file(currentfile); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.startsWith("ModeLine")) + { + currentitem = line.section( sep , 1,1 ); + if ( modelinefile == "VESA") + HostXadvancedresVESA->addSelection(currentitem); + else if ( modelinefile == "ATSC") + HostXadvancedresATSC->addSelection(currentitem); + else if ( modelinefile == "DVD") + HostXadvancedresDVD->addSelection(currentitem); + else if ( modelinefile == "NTSC") + HostXadvancedresNTSC->addSelection(currentitem); + else if ( modelinefile == "Custom") + HostXadvancedresCustom->addSelection(currentitem); + } + } + file.close(); + } + } +return ; + +} + + +class UseEDID: public TriggeredConfigurationGroup { +public: + UseEDID(): + TriggeredConfigurationGroup(true,false,true,true,false,false,false,true) { + Setting* useedid = HostXIgnoreEDID(); + addChild(useedid); + setTrigger(useedid); + + ConfigurationGroup* XSYNC = new GridConfigurationGroup(2,false); + XSYNC->addChild(HostXHsyncLow()); + XSYNC->addChild(HostXHsyncHigh()); + + ConfigurationGroup* XVREFRESH = new GridConfigurationGroup(2,false); + XVREFRESH->addChild(HostXVrefreshLow()); + XVREFRESH->addChild(HostXVrefreshHigh()); + + + ConfigurationGroup* settings = new GridConfigurationGroup(1,false); + settings->addChild(new EDIDprobedinfo); + settings->addChild( XSYNC); + settings->addChild(XVREFRESH); + settings->addChild(HostXDisplaysize()); + + addTarget("0", new GridConfigurationGroup(1,false)); + addTarget("1", settings); + }; +}; + + +EDIDOptions::EDIDOptions() +{ + VerticalConfigurationGroup* rec = new VerticalConfigurationGroup(false); + rec->setLabel(QObject::tr("Advanced X options")); + rec->setUseLabel(false); + rec->addChild(new UseEDID); + addChild(rec); +} + + +AdvancedXGeneric_modelines::AdvancedXGeneric_modelines(): + TriggeredConfigurationGroup(true,false,true,true,true,true,true,true) +{ + SetVertical(false); + HostXModelineCatagory = new HostComboBox("HostXModelineCatagory"); + HostXModelineCatagory->setLabel(QObject::tr("Type")); + HostXModelineCatagory->addSelection("Auto"); + HostXModelineCatagory->addSelection("VESA"); + HostXModelineCatagory->addSelection("ATSC"); + HostXModelineCatagory->addSelection("DVD"); + HostXModelineCatagory->addSelection("NTSC"); + HostXModelineCatagory->addSelection("Custom"); + //HostXModelineCatagory->addSelection("nVidia Modeline"); + HostXModelineCatagory->setHelpText(QObject::tr("")); + + HostXadvancedresVESA = new HostComboBox("HostXadvancedresVESA"); + HostXadvancedresATSC = new HostComboBox("HostXadvancedresATSC"); + HostXadvancedresDVD = new HostComboBox("HostXadvancedresDVD"); + HostXadvancedresNTSC = new HostComboBox("HostXadvancedresNTSC"); + HostXadvancedresCustom= new HostComboBox("HostXadvancedresCustom"); + + generic_fillselection("VESA"); + generic_fillselection("ATSC"); + generic_fillselection("DVD"); + generic_fillselection("NTSC"); + generic_fillselection("Custom"); + + addChild(HostXModelineCatagory); + setTrigger(HostXModelineCatagory); + + addTarget("VESA", HostXadvancedresVESA); + addTarget("ATSC", HostXadvancedresATSC); + addTarget("DVD", HostXadvancedresDVD); + addTarget("NTSC", HostXadvancedresNTSC); + addTarget("Custom",HostXadvancedresCustom); + addTarget("Auto", new VerticalConfigurationGroup(false, false)); + +}; + +void AdvancedXGeneric_modelines::AdvancedXGeneric_modelines_GatherSettings(void) +{ + QString modelinetype = HostXModelineCatagory->getValue(); + QString tempmodeline = "HostXadvancedres" + modelinetype ; + QString modeline; + if ( modelinetype == "VESA") + modeline= HostXadvancedresVESA->getValue() ; + else if ( modelinetype == "ATSC") + modeline= HostXadvancedresATSC->getValue() ; + else if ( modelinetype == "DVD") + modeline= HostXadvancedresDVD->getValue(); + else if ( modelinetype == "NTSC") + modeline= HostXadvancedresNTSC->getValue(); + else if ( modelinetype == "Custom") + modeline= HostXadvancedresCustom->getValue(); + hostparm.ThisXresadvanced = modelinetype +"_"+modeline; + // Jump to final step + testXconfiguration(); +} + + +// --------------------------------------------start of nvidia specific ------------------------------------ + + +AdvancedXNvidiaConnections::AdvancedXNvidiaConnections(): + TriggeredConfigurationGroup(false,false,true,true,true,true,true,true) { + + HostXNvidiaConnection = new HostComboBox("HostXNvidiaConnection",false); + HostXNvidiaConnection->setLabel(QObject::tr("Connection")); + HostXNvidiaConnection->addSelection("Auto"); + HostXNvidiaConnection->addSelection("DVI"); + HostXNvidiaConnection->addSelection("VGA"); + HostXNvidiaConnection->addSelection("TV"); + HostXNvidiaConnection->setHelpText(QObject::tr("Video-out")); + + addChild(HostXNvidiaConnection); + setTrigger(HostXNvidiaConnection); + AdvancedXNvidia_modelines *ADVANCEDXNVIDIA_MODELINES = new AdvancedXNvidia_modelines; + + HostXnVidiaTVstandard = new HostComboBox("HostXnVidiaTVstandard"); + HostXnVidiaTVstandard->setLabel(QObject::tr("nVidia-out")); + HostXnVidiaTVstandard->addSelection("PAL-B" ); + HostXnVidiaTVstandard->addSelection("PAL-D" ); + HostXnVidiaTVstandard->addSelection("PAL-G" ); + HostXnVidiaTVstandard->addSelection("PAL-H" ); + HostXnVidiaTVstandard->addSelection("PAL-I" ); + HostXnVidiaTVstandard->addSelection("PAL-K1"); + HostXnVidiaTVstandard->addSelection("PAL-M" ); + HostXnVidiaTVstandard->addSelection("PAL-N" ); + HostXnVidiaTVstandard->addSelection("PAL-NC"); + HostXnVidiaTVstandard->addSelection("NTSC-J"); + HostXnVidiaTVstandard->addSelection("NTSC-M"); + HostXnVidiaTVstandard->addSelection("HD480i" ); + HostXnVidiaTVstandard->addSelection("HD480p" ); + HostXnVidiaTVstandard->addSelection("HD720p" ); + HostXnVidiaTVstandard->addSelection("HD1080i" ); + HostXnVidiaTVstandard->addSelection("HD1080p"); + HostXnVidiaTVstandard->addSelection("HD576i" ); + HostXnVidiaTVstandard->addSelection("HD576p" ); + HostXnVidiaTVstandard->setHelpText(QObject::tr("Indrustry standard resolution to send to the TV")); + + HostXnVidiaTVformat = new HostComboBox("HostXnVidiaTVformat"); + HostXnVidiaTVformat->setLabel(QObject::tr("TV-Format(nvidia)")); + HostXnVidiaTVformat->addSelection("AUTOSELECT"); + HostXnVidiaTVformat->addSelection("COMPOSITE"); + HostXnVidiaTVformat->addSelection("SVIDEO"); + HostXnVidiaTVformat->addSelection("COMPONENT"); + HostXnVidiaTVformat->addSelection("SCART"); + HostXnVidiaTVformat->setHelpText(QObject::tr("Physical connection to the nvidia card")); + + ConfigurationGroup* nvtvout = new VerticalConfigurationGroup(false); + nvtvout ->addChild(HostXnVidiaTVformat); + nvtvout->addChild(HostXnVidiaTVstandard); + + addTarget("Auto",ADVANCEDXNVIDIA_MODELINES ); + addTarget("DVI", ADVANCEDXNVIDIA_MODELINES ); + addTarget("VGA",ADVANCEDXNVIDIA_MODELINES); + addTarget("TV", nvtvout); + + connect(this, SIGNAL(nVidia_sig(void)), + ADVANCEDXNVIDIA_MODELINES, SLOT(AdvancedXNvidia_modelines_GatherSettings())); +}; + + + + +void AdvancedXNvidia_modelines::Nvidia_fillselection(QString modelinefile ) +{ + if ( hostparm.displayshowadvancedX ) + { + QString currentitem; + QString cfiletxt; + cfiletxt=MV_ROOT; + cfiletxt.append("templates/xorg/modeline." ); + QString currentfile = cfiletxt; + currentfile.append(modelinefile); + QString line; + QRegExp sep( "\"" ); + QFile file(currentfile); + if ( file.open(IO_ReadOnly | IO_Translate) ) + { + QTextStream t( &file ); // use a text stream + while ( !t.eof() ) + { + line = t.readLine(); + if ( line.startsWith("ModeLine")) + { + currentitem = line.section( sep , 1,1 ); + if ( modelinefile == "VESA") + HostXNvidiaadvancedresVESA->addSelection(currentitem); + else if ( modelinefile == "ATSC") + HostXNvidiaadvancedresATSC->addSelection(currentitem); + else if ( modelinefile == "DVD") + HostXNvidiaadvancedresDVD->addSelection(currentitem); + else if ( modelinefile == "NTSC") + HostXNvidiaadvancedresNTSC->addSelection(currentitem); + else if ( modelinefile == "Custom") + HostXNvidiaadvancedresCustom->addSelection(currentitem); + } + } + file.close(); + } + } +return ; + +} + + + +AdvancedXNvidia_modelines::AdvancedXNvidia_modelines(): + TriggeredConfigurationGroup(true,false,true,true,true,true,true,true) +{ + SetVertical(true); + HostXNvidiaModelineCatagory = new HostComboBox("HostXNvidiaModelineCatagory"); + HostXNvidiaModelineCatagory->setLabel(QObject::tr("Category")); + HostXNvidiaModelineCatagory->addSelection("Auto"); + HostXNvidiaModelineCatagory->addSelection("VESA"); + HostXNvidiaModelineCatagory->addSelection("ATSC"); + HostXNvidiaModelineCatagory->addSelection("DVD"); + HostXNvidiaModelineCatagory->addSelection("NTSC"); + HostXNvidiaModelineCatagory->addSelection("Custom"); + HostXNvidiaModelineCatagory->addSelection("nVidia Modeline"); + HostXNvidiaModelineCatagory->setHelpText(QObject::tr("")); + + HostXNvidiaadvancedresVESA = new HostComboBox("HostXNvidiaadvancedresVESA"); + HostXNvidiaadvancedresATSC = new HostComboBox("HostXNvidiaadvancedresATSC"); + HostXNvidiaadvancedresDVD = new HostComboBox("HostXNvidiaadvancedresDVD"); + HostXNvidiaadvancedresNTSC = new HostComboBox("HostXNvidiaadvancedresNTSC"); + HostXNvidiaadvancedresCustom= new HostComboBox("HostXNvidiaadvancedresCustom"); + + Nvidia_fillselection("VESA"); + Nvidia_fillselection("ATSC"); + Nvidia_fillselection("DVD"); + Nvidia_fillselection("NTSC"); + Nvidia_fillselection("Custom"); + + HostXnVidia1080p = new HostCheckBox("HostXnVidia1080p"); + HostXnVidia1080p->setLabel(QObject::tr("1080p")); + HostXnVidia1080p->setValue(true); + HostXnVidia1080p->setHelpText(QObject::tr(" ")); + + HostXnVidia1080i = new HostCheckBox("HostXnVidia1080i"); + HostXnVidia1080i->setLabel(QObject::tr("1080i")); + HostXnVidia1080i->setValue(true); + HostXnVidia1080i->setHelpText(QObject::tr(" ")); + + HostXnVidia720p = new HostCheckBox("HostXnVidia720p"); + HostXnVidia720p->setLabel(QObject::tr("720p")); + HostXnVidia720p->setValue(true); + HostXnVidia720p->setHelpText(QObject::tr(" ")); + + HostXnVidia480p = new HostCheckBox("HostXnVidia480p"); + HostXnVidia480p->setLabel(QObject::tr("480p")); + HostXnVidia480p->setValue(true); + HostXnVidia480p->setHelpText(QObject::tr(" ")); + + ConfigurationGroup* nVidiastandard = new HorizontalConfigurationGroup(false,false,true,true); + nVidiastandard ->addChild(HostXnVidia480p); + nVidiastandard ->addChild(HostXnVidia720p); + nVidiastandard ->addChild(HostXnVidia1080p); + nVidiastandard ->addChild(HostXnVidia1080i); + nVidiastandard ->setLabel(QObject::tr("Standard Nvidia Modelines")); + + + addChild(HostXNvidiaModelineCatagory); + setTrigger(HostXNvidiaModelineCatagory); + + addTarget("VESA", HostXNvidiaadvancedresVESA); + addTarget("ATSC", HostXNvidiaadvancedresATSC); + addTarget("DVD", HostXNvidiaadvancedresDVD); + addTarget("NTSC", HostXNvidiaadvancedresNTSC); + addTarget("Custom",HostXNvidiaadvancedresCustom); + addTarget("nVidia Modeline",nVidiastandard); + addTarget("Auto", new VerticalConfigurationGroup(false, false)); +}; + + +void AdvancedXNvidiaConnections::AdvancedXNvidiaConnectionsGatherSettings(void) +{ + cout << "inside AdvancedXNvidiaConnectionsGatherSettings" << endl; + hostparm.ThisXconnection = HostXNvidiaConnection->getValue(); + hostparm.ThisXTVstandard = HostXnVidiaTVformat->getValue(); + hostparm.ThisXTVconnection = HostXnVidiaTVstandard->getValue(); + emit nVidia_sig(); // jump to AdvancedXNvidia_modelines_GatherSettings + +}; + + +void AdvancedXNvidia_modelines::AdvancedXNvidia_modelines_GatherSettings(void) +{ + QString modelinecatagory = HostXNvidiaModelineCatagory->getValue(); + QString tempmodeline = "HostXadvancedres" + modelinecatagory ; + QString modeline; + + if ( modelinecatagory == "VESA") + modeline= HostXNvidiaadvancedresVESA->getValue() ; + else if ( modelinecatagory == "ATSC") + modeline= HostXNvidiaadvancedresATSC->getValue() ; + else if ( modelinecatagory == "DVD") + modeline= HostXNvidiaadvancedresDVD->getValue(); + else if ( modelinecatagory == "NTSC") + modeline= HostXNvidiaadvancedresNTSC->getValue(); + else if ( modelinecatagory == "Custom") + modeline= HostXNvidiaadvancedresCustom->getValue(); + else if ( modelinecatagory == "nVidia Modeline" ) + modeline = "Builtin" ; + // need to add stuff to find the built in nvidia modelines + hostparm.ThisXresadvanced = modelinecatagory +"_"+modeline; + + cout << " in nvidia modeline gather settings" << endl; + // Jump to final step + testXconfiguration(); +}; +// ----------------------------------------END nvidia specific + + + +AdvancedXcardtype::AdvancedXcardtype(): + TriggeredConfigurationGroup(false,false,true,true,true,true,false,false) { + HostXcardtype = new HostComboBox("HostXcardtype",false); + HostXcardtype->setLabel(QObject::tr("Video card/driver")); + HostXcardtype->addSelection("nVidia"); + HostXcardtype->addSelection("ATI"); + HostXcardtype->addSelection("VMWARE"); + HostXcardtype->addSelection("Intel"); + HostXcardtype->addSelection("Via"); + HostXcardtype->setHelpText(QObject::tr("nVidia work, ati works,VMWARE works, Intel does not work(yet), Via is a joke")); + addChild(HostXcardtype); + setTrigger(HostXcardtype); + + AdvancedXGeneric_modelines *ADVANCEDXGENERICMODELINES = new AdvancedXGeneric_modelines; + AdvancedXNvidiaConnections *ADVANCEDXNVIDIACONNECTIONS = new AdvancedXNvidiaConnections; + + addTarget("VMWARE", ADVANCEDXGENERICMODELINES); + addTarget("Intel", ADVANCEDXGENERICMODELINES); + addTarget("Via", ADVANCEDXGENERICMODELINES); + + addTarget("nVidia",ADVANCEDXNVIDIACONNECTIONS); + addTarget("ATI",ADVANCEDXGENERICMODELINES); + + connect(this, SIGNAL(go(void)), + ADVANCEDXGENERICMODELINES, SLOT(AdvancedXGeneric_modelines_GatherSettings())); + connect(this, SIGNAL(gonVidia(void)), + ADVANCEDXNVIDIACONNECTIONS, SLOT(AdvancedXNvidiaConnectionsGatherSettings())); + +}; + +void AdvancedXcardtype::AdvancedXcardgatherSettings(void) +{ + //called when test button is pressed + hostparm.ThisXcardtype = HostXcardtype->getValue() ; + if (hostparm.ThisXcardtype == "nVidia") + emit gonVidia(); + else if (hostparm.ThisXcardtype =="ATI") + emit goATI(); + else + emit go(); +}; + + +AdvancedXSettings::AdvancedXSettings(): + TriggeredConfigurationGroup(true,true,true,true,true,true,true,true) { + setLabel(QObject::tr("Advanced X settings")); + Setting* Advancedxsettings = HostXUseAdvanced(); + addChild(Advancedxsettings); + setTrigger(Advancedxsettings); + HostXIgnoreConfig = new HostCheckBox("HostXIgnoreConfig"); + HostXIgnoreConfig->setLabel(QObject::tr("User supplied config. ")); + HostXIgnoreConfig->setValue(false); + #ifdef __MVAPP__ + HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU. Place the file you want to use in /data/home/mythtv/templates/xorg.user.")); + #else + HostXIgnoreConfig->setHelpText(QObject::tr("When this is checked, the system will use the configuration file provided by YOU. Place the file you want to use in /home/mythtv/templates/xorg.user.")); + #endif + HorizontalConfigurationGroup *lp = + new HorizontalConfigurationGroup(false, false, true, true); + + TransButtonSetting *EDIDbutton = new TransButtonSetting(); + EDIDbutton->setLabel(tr("Display Settings")); + + TransButtonSetting *TestXbutton = new TransButtonSetting(); + TestXbutton->setLabel(tr("Test X Configuration")); + lp->addChild(EDIDbutton); + lp->addChild(TestXbutton); + + AdvancedXcardtype *AXCT = new AdvancedXcardtype ; + + ConfigurationGroup* settings = new VerticalConfigurationGroup(false); + settings->addChild(AXCT); + settings->addChild(lp); + + ConfigurationGroup* setting1 = new GridConfigurationGroup(1,false); + setting1->addChild(HostXres()); + setting1->addChild(HostXIgnoreConfig); + + connect(EDIDbutton, SIGNAL(pressed()), this, SLOT(ADJUSTEDID())); + connect(TestXbutton, SIGNAL(pressed()), AXCT, SLOT(AdvancedXcardgatherSettings())); + addTarget("0",setting1); + addTarget("1", settings); +}; + +void AdvancedXSettings::ADJUSTEDID(void) +{ + EDIDOptions edidscreen; + edidscreen.exec(); +} + + +void testXconfiguration(void) +{ + hostparm.ThisXIgnoreEDID =gContext->GetSetting("HostXIgnoreEDID"); + QString tempstring ; + tempstring = gContext->GetSetting("HostXHsyncLow"); + tempstring.append(" - "); + tempstring.append(gContext->GetSetting("HostXHsyncHigh") ); + hostparm.ThisXHsync=tempstring; + + tempstring =""; + tempstring=gContext->GetSetting("HostXVrefreshLow"); + tempstring.append(" - "); + tempstring.append(gContext->GetSetting("HostXVrefreshHigh")); + hostparm.ThisXVrefresh=tempstring; + hostparm.ThisXDisplaysize= gContext -> GetSetting("HostXDisplaysize"); + +// Assemble the advanced modeline string +/* + QString modelinetype = gContext->GetSetting("HostXModelineCatagory");; + QString tempmodeline = "HostXadvancedres" + modelinetype ; + QString modeline = gContext ->GetSetting(tempmodeline); + hostparm.ThisXresadvanced = modelinetype +"_"+modeline; +*/ +/* + cout << "start of parm list" << endl; + cout << "--------------------"<GetMainWindow(), QObject::tr("Test X button"), + message); +}; + + + + diff --git a/abs/core/mythinstall/xorgsettings.h b/abs/core/mythinstall/xorgsettings.h new file mode 100755 index 0000000..46c4952 --- /dev/null +++ b/abs/core/mythinstall/xorgsettings.h @@ -0,0 +1,178 @@ +#include +#include "mythdialogs.h" +#include "libmyth/mythdialogs.h" +#include "libmyth/mythwidgets.h" +#include "installsettings.h" + +class AdvancedXNvidiaConnections: public TriggeredConfigurationGroup { +Q_OBJECT +public: + AdvancedXNvidiaConnections(); + HostComboBox *HostXNvidiaConnection; + HostComboBox *HostXnVidiaTVformat; + HostComboBox *HostXnVidiaTVstandard; + +public slots: + void AdvancedXNvidiaConnectionsGatherSettings(); +signals: + void nVidia_sig(void); +}; + + +class AdvancedXNvidia_modelines: public TriggeredConfigurationGroup { + Q_OBJECT +public: + AdvancedXNvidia_modelines(); + HostComboBox *HostXNvidiaModelineCatagory; + HostComboBox *HostXNvidiaadvancedresVESA; + HostComboBox *HostXNvidiaadvancedresATSC; + HostComboBox *HostXNvidiaadvancedresDVD; + HostComboBox *HostXNvidiaadvancedresNTSC; + HostComboBox *HostXNvidiaadvancedresCustom; + HostCheckBox *HostXnVidia1080p; + HostCheckBox *HostXnVidia1080i; + HostCheckBox *HostXnVidia720p; + HostCheckBox *HostXnVidia480p; + void Nvidia_fillselection(QString); +public slots: + void AdvancedXNvidia_modelines_GatherSettings(void); +}; + + +//------------------------------------------------- + +class AdvancedXcardtype: public TriggeredConfigurationGroup { +Q_OBJECT +public: + AdvancedXcardtype(); + HostComboBox *HostXcardtype; + +public slots: + void AdvancedXcardgatherSettings(); +signals: + void go(void ); + void goATI(void); + void gonVidia(void); +}; + + +class AdvancedXSettings: public TriggeredConfigurationGroup { +Q_OBJECT +public: + AdvancedXSettings(); + HostCheckBox *HostXIgnoreConfig; +protected slots: + void ADJUSTEDID(void); +}; + + +class AdvancedXGeneric_modelines: public TriggeredConfigurationGroup { + Q_OBJECT +public: + AdvancedXGeneric_modelines(); + HostComboBox *HostXModelineCatagory; + HostComboBox *HostXadvancedresVESA; + HostComboBox *HostXadvancedresATSC; + HostComboBox *HostXadvancedresDVD; + HostComboBox *HostXadvancedresNTSC; + HostComboBox *HostXadvancedresCustom; + void generic_fillselection(QString); +public slots: + void AdvancedXGeneric_modelines_GatherSettings(void); +}; + + +class EDIDOptions : public ConfigurationWizard +{ +public: + EDIDOptions(); +}; + + + + + + + + +void testXconfiguration(); +void ReadDDCvalues(); +static HostComboBox *HostXres() +//Used in the simple config +{ + HostComboBox *gc = new HostComboBox("HostXres"); + gc->setLabel(QObject::tr("Initial resolution")); + const int num_defaults = 2; + char *defaults[num_defaults]={"800x600","1280x720"}; + int defaults_added[num_defaults]={0,0}; + int found_modes_in_xorg_log = FALSE; + + gc->addSelection("Auto"); + + { + FILE *modelines; + const char*mode_extract_command = + "sed -n 's/[[:space:]]\\+/ /g;" // compress whitespace + "s/[\\) ]: /#/g;" // Insert # as a field delimiter + "/Modes in ModePool/,/ModePool/p'" // get the Modelool lines + " /var/log/Xorg.0.log |" // from the Xorg log + "cut -d# -f2-3 | " // select the mode and description fields + "sed '/^\\\"/!d;" // Only selest modeline lines. + "/DoubleScan/d;" // Remove doublescan modelines. + "/nvidia-auto-select/d;" // Remove auto modeline. + "s/ x /x/g;" + "s/ @ /@/g;" + "s/From: //g;" + "s/ Format [0-9]*) (/, /g;" + "s/ Format [0-9]*//g;" + "s/ Server//g'"; //reformat. + cout << mode_extract_command << endl; + modelines = popen (mode_extract_command, "r"); + + char previous_mode[200]={0}; + + if (modelines) + { + char line_in[200]; + while (fgets (line_in, sizeof (line_in), modelines)) + { + char *separator; + + if (strchr (line_in, '\n')) + strchr (line_in, '\n')[0]=0; + + separator = strchr (line_in, '#'); + + if (separator) + { + separator[0]=0; + separator++; + + // Skip this mode if the description is identical to the previous. + if (strcmp (previous_mode, separator) == 0) + continue; + + strncpy (previous_mode, separator, sizeof(previous_mode)); + gc->addSelection(separator, line_in); + found_modes_in_xorg_log = TRUE; + + for (int def = 0; def < num_defaults; def++) + if (strncmp (&line_in[1], defaults[def], strlen (defaults[def]))==0) + defaults_added[def]=1; + } + } + pclose (modelines); + } + } + + for (int def = 0; def < num_defaults; def++) + if (!defaults_added[def]) + gc->addSelection(defaults[def], defaults[def]); + + if (found_modes_in_xorg_log) + gc->setHelpText(QObject::tr("Choose a resolution to match your display and a refresh rate to match the content you will be recording - 60 Hz for NTSC (e.g. US) 50 Hz for PAL (e.g. UK, Aust, NZ).")); + else + gc->setHelpText(QObject::tr("Choose the resolution to use when the system reboots.")); + + return gc; +} diff --git a/abs/core/mythtv/stable/glass-wide/PKGBUILD b/abs/core/mythtv/stable/glass-wide/PKGBUILD new file mode 100644 index 0000000..2d0cb11 --- /dev/null +++ b/abs/core/mythtv/stable/glass-wide/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=glass-wide +pkgver=1 +pkgrel=1 +pkgdesc="glass-wide theme for mythtv .21 ." +arch=('i686' 'x86_64') +license=('GPL2') +url="unkown" +source="http://iw.net/~brfransen/myth/glass-wide.tar.gz" + +build() { + cd $startdir/src/ + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -a glass-wide $startdir/pkg/usr/share/mythtv/themes + rm -rf $startdir/pkg/usr/shar/mythtv/themes/.DS_Store +} diff --git a/abs/core/mythtv/stable/linhes-theme/PKGBUILD b/abs/core/mythtv/stable/linhes-theme/PKGBUILD new file mode 100644 index 0000000..310bb96 --- /dev/null +++ b/abs/core/mythtv/stable/linhes-theme/PKGBUILD @@ -0,0 +1,17 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=linhes-theme +pkgver=1 +pkgrel=10 +pkgdesc="Default LinHES theme." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://linhes.org/" +source=(ftp://ftp.knoppmyth.net/R6/sources/linhes-theme.tar.bz2) + +build() { + cd $startdir/src/ + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -a LinHES $startdir/pkg/usr/share/mythtv/themes +} diff --git a/abs/core/mythtv/stable/morethemes/PKGBUILD b/abs/core/mythtv/stable/morethemes/PKGBUILD new file mode 100644 index 0000000..dd05575 --- /dev/null +++ b/abs/core/mythtv/stable/morethemes/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Juergen Hoetzel +# Contributor: kleptophobiac@gmail.com + +pkgname=morethemes +pkgver=0.21 +pkgrel=1 +pkgdesc="Additional themes for MythTV" +arch=('i686' 'x86_64') +url="http://www.mythtv.org/" +license=('GPL') +depends=("mythtv>=${pkgver}") +source=("ftp://ftp.knoppmyth.net/R6/sources/${pkgname}.tar.bz2") +md5sums=('53f87f0498bc516585df78ff932785f4') +groups=('mythtv-extras') + +build() { + cd $startdir/src/themes + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + ./configure --prefix=/usr || return 1 + + qmake $pkgname.pro + make qmake || return 1 + make || return 1 + + # basic install + make INSTALL_ROOT=$startdir/pkg install || return 1 +} + diff --git a/abs/core/mythtv/stable/mytharchive/PKGBUILD b/abs/core/mythtv/stable/mytharchive/PKGBUILD index fb3b755..f5c51f2 100644 --- a/abs/core/mythtv/stable/mytharchive/PKGBUILD +++ b/abs/core/mythtv/stable/mytharchive/PKGBUILD @@ -4,20 +4,20 @@ pkgname=mytharchive pkgver=0.21 -pkgrel=1 +pkgrel=9 pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows." arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') -depends=("mythtv>=${pkgver}" 'libxmu' 'mysql-python' 'pil' 'dvdauthor') +depends=("mythtv>=${pkgver}" 'libxmu' 'mysql-python' 'pil' 'dvdauthor' 'mjpegtools' 'transcode') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh - + svn update # use QT3 qmake export PATH=$QTDIR/bin:$PATH diff --git a/abs/core/mythtv/stable/mythbrowser/PKGBUILD b/abs/core/mythtv/stable/mythbrowser/PKGBUILD index 5a53093..51a27d2 100644 --- a/abs/core/mythtv/stable/mythbrowser/PKGBUILD +++ b/abs/core/mythtv/stable/mythbrowser/PKGBUILD @@ -4,22 +4,22 @@ pkgname=mythbrowser pkgver=0.21 -pkgrel=2 +pkgrel=6 pkgdesc="Mini web browser for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') -depends=("mythtv>=${pkgver}" 'wget' 'libxvmc' 'kdelibs3') +depends=("mythtv>=${pkgver}" 'wget' 'libxvmc' 'kdelibs3' 'qt3') groups=('mythtv-extras') options=('!makeflags') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh . /etc/profile.d/kde3.sh - + svn update sed -i 's#kde3#kde#' configure || return 1 ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythbrowser || return 1 diff --git a/abs/core/mythtv/stable/mythcontrols/PKGBUILD b/abs/core/mythtv/stable/mythcontrols/PKGBUILD index cf7f43c..669278c 100644 --- a/abs/core/mythtv/stable/mythcontrols/PKGBUILD +++ b/abs/core/mythtv/stable/mythcontrols/PKGBUILD @@ -4,7 +4,7 @@ pkgname=mythcontrols pkgver=0.21 -pkgrel=1 +pkgrel=4 pkgdesc="Experimental controls for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -12,13 +12,13 @@ license=('GPL') depends=("mythtv>=${pkgver}") options=('!makeflags') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh - + svn update # use QT3 qmake export PATH=$QTDIR/bin:$PATH ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythcontrols diff --git a/abs/core/mythtv/stable/mythdb-initial/PKGBUILD b/abs/core/mythtv/stable/mythdb-initial/PKGBUILD index 02f2789..aa1feef 100755 --- a/abs/core/mythtv/stable/mythdb-initial/PKGBUILD +++ b/abs/core/mythtv/stable/mythdb-initial/PKGBUILD @@ -1,6 +1,6 @@ pkgname=mythdb-initial pkgver=1 -pkgrel=3 +pkgrel=42 pkgdesc="setup the initial mythtv database for linhes" url="" license="" diff --git a/abs/core/mythtv/stable/mythdb-initial/__changelog b/abs/core/mythtv/stable/mythdb-initial/__changelog new file mode 100644 index 0000000..c53f2f6 --- /dev/null +++ b/abs/core/mythtv/stable/mythdb-initial/__changelog @@ -0,0 +1,25 @@ + + +INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES +('Hostpluginmytharchive','1','larch5'), +('Hostpluginmythbrowser','1','larch5'), +('Hostpluginmythcontrols','1','larch5'), +('Hostpluginmythflix','1','larch5'), +('Hostpluginmythgallery','1','larch5'), +('Hostpluginmythgame','1','larch5'), +('HostpluginmythgameFceu','1','larch5'), +('HostpluginmythgameMame','1','larch5'), +('HostpluginmythgameZsnes','1','larch5'), +('Hostpluginmythmovietime','1','larch5'), +('Hostpluginmythmusic','1','larch5'), +('Hostpluginmythnews','1','larch5'), +('Hostpluginmythphone','1','larch5'), +('Hostpluginmythsmolt','1','larch5'), +('Hostpluginmythvideo','1','larch5'), +('Hostpluginmythvideo_dvdcss','0','larch5'), +('Hostpluginmythweather','1','larch5'), +('HostAudiotype','ALSA','larch5') + +INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES +('WOLbackendReconnectWaitTime','5',NULL); + diff --git a/abs/core/mythtv/stable/mythdb-initial/mc.sql b/abs/core/mythtv/stable/mythdb-initial/mc.sql index 6e9bdaa..cdb22d4 100644 --- a/abs/core/mythtv/stable/mythdb-initial/mc.sql +++ b/abs/core/mythtv/stable/mythdb-initial/mc.sql @@ -2317,7 +2317,45 @@ SET character_set_client = @saved_cs_client; LOCK TABLES `settings` WRITE; /*!40000 ALTER TABLE `settings` DISABLE KEYS */; -INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES ('mythfilldatabaseLastRunStart',NULL,NULL),('mythfilldatabaseLastRunEnd',NULL,NULL),('mythfilldatabaseLastRunStatus',NULL,NULL),('DataDirectMessage',NULL,NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1214',NULL),('DefaultTranscoder','0',NULL),('MythFillSuggestedRunTime','1970-01-01T00:00:00',NULL),('MythFillGrabberSuggestsTime','1',NULL),('MythFillFixProgramIDsHasRunOnce','1','larch5'),('Language','EN','larch5'),('BackendServerIP','127.0.0.1','larch5'),('BackendServerPort','6543','larch5'),('BackendStatusPort','6544','larch5'),('SecurityPin','','larch5'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('TVFormat','NTSC',NULL),('VbiFormat','None',NULL),('FreqTable','us-bcast',NULL),('TimeOffset','None',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','1',NULL),('TruncateDeletesSlowly','0','larch5'),('HDRingbufferSize','9400',NULL),('MiscStatusScript','','larch5'),('DisableFirewireReset','0','larch5'),('EITTransportTimeout','5',NULL),('EITIgnoresSource','0',NULL),('EITCrawIdleStart','60',NULL),('startupCommand','',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('SetWakeuptimeCommand','',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('preSDWUCheckCommand','',NULL),('WOLbackendConnectRetry','5',NULL),('WOLbackendCommand','',NULL),('WOLslaveBackendsCommand','',NULL),('JobQueueMaxSimultaneousJobs','1','larch5'),('JobQueueCheckFrequency','60','larch5'),('JobQueueWindowStart','00:00','larch5'),('JobQueueWindowEnd','23:59','larch5'),('JobQueueCPU','0','larch5'),('JobAllowCommFlag','1','larch5'),('JobAllowTranscode','1','larch5'),('JobAllowUserJob1','0','larch5'),('JobAllowUserJob2','0','larch5'),('JobAllowUserJob3','0','larch5'),('JobAllowUserJob4','0','larch5'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJob1','',NULL),('UserJobDesc2','User Job #2',NULL),('UserJob2','',NULL),('UserJobDesc3','User Job #3',NULL),('UserJob3','',NULL),('UserJobDesc4','User Job #4',NULL),('UserJob4','',NULL),('DefaultVideoPlaybackProfile','CPU+','larch5'),('RealtimePriority','1','larch5'),('DecodeExtraAudio','1','larch5'),('AudioNag','1','larch5'),('UseVideoTimebase','0','larch5'),('ClearSavedPosition','1','larch5'),('AltClearSavedPosition','1','larch5'),('JumpToProgramOSD','1','larch5'),('ContinueEmbeddedTVPlay','0','larch5'),('AutomaticSetWatched','0','larch5'),('AlwaysStreamFiles','1','larch5'),('UseOpenGLVSync','0','larch5'),('UseOutputPictureControls','1','larch5'),('AspectOverride','0','larch5'),('AdjustFill','0','larch5'),('LetterboxColour','0','larch5'),('PIPLocation','0','larch5'),('PlaybackExitPrompt','2','larch5'),('EndOfRecordingExitPrompt','1','larch5'),('PlayBoxOrdering','1','larch5'),('PlayBoxEpisodeSort','Date','larch5'),('GeneratePreviewPixmaps','0','larch5'),('PreviewPixmapOffset','64',NULL),('PreviewFromBookmark','1','larch5'),('PlaybackPreview','1','larch5'),('PlaybackBoxStartInTitle','1','larch5'),('ShowGroupInfo','0','larch5'),('AllRecGroupPassword','',NULL),('DisplayRecGroup','All Programs','larch5'),('QueryInitialFilter','0','larch5'),('RememberRecGroup','1','larch5'),('DispRecGroupAsAllProg','0','larch5'),('LiveTVInAllPrograms','0','larch5'),('DisplayGroupDefaultView','0','larch5'),('DisplayGroupTitleSort','0','larch5'),('PlaybackWatchList','1','larch5'),('PlaybackWLStart','0','larch5'),('PlaybackWLAutoExpire','0','larch5'),('PlaybackWLMaxAge','60','larch5'),('PlaybackWLBlackOut','2','larch5'),('SmartForward','0','larch5'),('StickyKeys','0','larch5'),('FFRewReposTime','100','larch5'),('FFRewReverse','1','larch5'),('ExactSeeking','0','larch5'),('AutoCommercialSkip','0','larch5'),('MaximumCommercialSkip','3600',NULL),('CommSkipAllBlanks','1',NULL),('PVR350OutputEnable','0','larch5'),('PVR350EPGAlphaValue','164','larch5'),('PVR350InternalAudioOnly','0','larch5'),('OSDTheme','blueosd','larch5'),('OSDGeneralTimeout','2','larch5'),('OSDProgramInfoTimeout','3','larch5'),('OSDFont','FreeMono.ttf','larch5'),('OSDThemeFontSizeType','default','larch5'),('EnableMHEG','0','larch5'),('PersistentBrowseMode','1','larch5'),('OSDNotifyTimeout','5','larch5'),('UDPNotifyPort','6948','larch5'),('OSDCCFont','FreeMono.ttf','larch5'),('CCBackground','0','larch5'),('DefaultCCMode','0','larch5'),('Prefer708Captions','1','larch5'),('OSDCC708TextZoom','100','larch5'),('OSDCC708DefaultFontType','MonoSerif','larch5'),('OSDCC708MonoSerifFont','FreeMono.ttf','larch5'),('OSDCC708PropSerifFont','FreeMono.ttf','larch5'),('OSDCC708MonoSansSerifFont','FreeMono.ttf','larch5'),('OSDCC708PropSansSerifFont','FreeMono.ttf','larch5'),('OSDCC708CasualFont','FreeMono.ttf','larch5'),('OSDCC708CursiveFont','FreeMono.ttf','larch5'),('OSDCC708CapitalsFont','FreeMono.ttf','larch5'),('OSDCC708MonoSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708PropSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708MonoSansSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708PropSansSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708CasualItalicFont','FreeMono.ttf','larch5'),('OSDCC708CursiveItalicFont','FreeMono.ttf','larch5'),('OSDCC708CapitalsItalicFont','FreeMono.ttf','larch5'),('ChannelOrdering','channum','larch5'),('ChannelFormat',' ','larch5'),('LongChannelFormat',' ','larch5'),('SmartChannelChange','0','larch5'),('LastFreeCard','0',NULL),('LiveTVPriority','0',NULL),('AutoExpireMethod','2',NULL),('AutoExpireDefault','1',NULL),('RerecordWatched','1',NULL),('AutoExpireWatchedPriority','0',NULL),('AutoExpireLiveTVMaxAge','1',NULL),('AutoExpireDayPriority','3',NULL),('AutoExpireExtraSpace','1',NULL),('AutoExpireInsteadOfDelete','0',NULL),('DeletedFifoOrder','0',NULL),('CommercialSkipMethod','255',NULL),('AggressiveCommDetect','1',NULL),('AutoCommercialFlag','1',NULL),('AutoTranscode','0',NULL),('AutoRunUserJob1','0',NULL),('AutoRunUserJob2','0',NULL),('AutoRunUserJob3','0',NULL),('AutoRunUserJob4','0',NULL),('OverTimeCategory','category name',NULL),('CategoryOverTime','30',NULL),('EPGFillType','12','larch5'),('EPGShowCategoryColors','1','larch5'),('EPGShowCategoryText','1','larch5'),('EPGScrollType','1','larch5'),('EPGShowChannelIcon','1','larch5'),('EPGShowFavorites','0','larch5'),('WatchTVGuide','0','larch5'),('chanPerPage','5','larch5'),('timePerPage','4','larch5'),('UnknownTitle','Unknown','larch5'),('UnknownCategory','Unknown','larch5'),('DefaultTVChannel','3','larch5'),('SelectChangesChannel','0','larch5'),('SelChangeRecThreshold','16','larch5'),('EPGEnableJumpToChannel','0',NULL),('Theme','G.A.N.T','larch5'),('RandomTheme','0','larch5'),('ThemeCacheSize','1','larch5'),('ThemePainter','qt','larch5'),('Style','Desktop Style','larch5'),('ThemeFontSizeType','default','larch5'),('MenuTheme','default','larch5'),('XineramaScreen','0','larch5'),('XineramaMonitorAspectRatio','1.3333','larch5'),('GuiSizeForTV','1','larch5'),('HideMouseCursor','1','larch5'),('RunFrontendInWindow','0','larch5'),('UseVideoModes','0','larch5'),('GuiVidModeResolution','640x480','larch5'),('TVVidModeResolution','320x200','larch5'),('TVVidModeForceAspect','0.0','larch5'),('TVVidModeResolution0','320x200','larch5'),('TVVidModeForceAspect0','0.0','larch5'),('TVVidModeResolution1','320x200','larch5'),('TVVidModeForceAspect1','0.0','larch5'),('TVVidModeResolution2','320x200','larch5'),('TVVidModeForceAspect2','0.0','larch5'),('ISO639Language0','eng','larch5'),('ISO639Language1','eng','larch5'),('DateFormat','ddd MMM d','larch5'),('ShortDateFormat','M/d','larch5'),('TimeFormat','h:mm AP','larch5'),('QtFontSmall','12','larch5'),('QtFontMedium','16','larch5'),('QtFontBig','25','larch5'),('PlayBoxTransparency','1','larch5'),('PlayBoxShading','0','larch5'),('UseVirtualKeyboard','1','larch5'),('LCDEnable','0','larch5'),('LCDShowTime','1','larch5'),('LCDShowMenu','1','larch5'),('LCDShowMusic','1','larch5'),('LCDShowMusicItems','ArtistTitle','larch5'),('LCDShowChannel','1','larch5'),('LCDShowRecStatus','0','larch5'),('LCDShowVolume','1','larch5'),('LCDShowGeneric','1','larch5'),('LCDBacklightOn','1','larch5'),('LCDHeartBeatOn','0','larch5'),('LCDBigClock','0','larch5'),('LCDKeyString','ABCDEF','larch5'),('LCDPopupTime','5','larch5'),('AudioOutputDevice','ALSA:default','larch5'),('PassThruOutputDevice','Default','larch5'),('MaxChannels','2','larch5'),('AudioUpmixType','0','larch5'),('AC3PassThru','0','larch5'),('DTSPassThru','0','larch5'),('AggressiveSoundcardBuffer','0','larch5'),('MythControlsVolume','1','larch5'),('MixerDevice','ALSA:default','larch5'),('MixerControl','PCM','larch5'),('MasterMixerVolume','100','larch5'),('PCMMixerVolume','50','larch5'),('IndividualMuteControl','0','larch5'),('LircKeyPressedApp','','larch5'),('AllowQuitShutdown','4','larch5'),('NoPromptOnExit','1','larch5'),('UseArrowAccels','1','larch5'),('NetworkControlEnabled','0','larch5'),('NetworkControlPort','6546','larch5'),('MonitorDrives','0','larch5'),('MediaChangeEvents','0','larch5'),('IgnoreDevices','','larch5'),('SetupPinCodeRequired','0','larch5'),('OverrideExitMenu','0','larch5'),('HaltCommand','sudo /sbin/halt','larch5'),('RebootCommand','sudo /sbin/reboot','larch5'),('EnableXbox','0','larch5'),('LogEnabled','0',NULL),('LogMaxCount','100','larch5'),('LogPrintLevel','8','larch5'),('LogCleanEnabled','0','larch5'),('LogCleanPeriod','14','larch5'),('LogCleanDays','14','larch5'),('LogCleanMax','30','larch5'),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillDatabaseArgs','',NULL),('MythFillDatabaseLog','',NULL),('MythFillPeriod','1',NULL),('MythFillMinHour','2',NULL),('MythFillMaxHour','5',NULL),('SchedMoveHigher','1',NULL),('SchedOpenEnd','0',NULL),('ComplexPriority','0',NULL),('PrefInputPriority','2',NULL),('SingleRecordRecPriority','1',NULL),('FindOneRecordRecPriority','-1',NULL),('ArchiveDBSchemaVer','1001',NULL),('MythArchiveTempDir','/myth/tmp','larch5'),('MythArchiveShareDir','/usr/share/mythtv/mytharchive/','larch5'),('MythArchiveVideoFormat','NTSC','larch5'),('MythArchiveFileFilter','*.mpg *.mov *.avi *.mpeg *.nuv','larch5'),('MythArchiveDVDLocation','/dev/dvd','larch5'),('MythArchiveDVDPlayerCmd','Internal','larch5'),('MythArchiveEncodeToAc3','0','larch5'),('MythArchiveCopyRemoteFiles','0','larch5'),('MythArchiveAlwaysUseMythTranscode','1','larch5'),('MythArchiveUseProjectX','0','larch5'),('MythArchiveAddSubtitles','0','larch5'),('MythArchiveUseFIFO','1','larch5'),('MythArchiveDefaultEncProfile','SP','larch5'),('MythArchiveMainMenuAR','16:9','larch5'),('MythArchiveChapterMenuAR','Video','larch5'),('MythArchiveDateFormat','%a %b %d','larch5'),('MythArchiveTimeFormat','%I:%M %p','larch5'),('MythArchiveFfmpegCmd','ffmpeg','larch5'),('MythArchiveMplexCmd','mplex','larch5'),('MythArchiveDvdauthorCmd','dvdauthor','larch5'),('MythArchiveSpumuxCmd','spumux','larch5'),('MythArchiveMpeg2encCmd','mpeg2enc','larch5'),('MythArchiveMkisofsCmd','mkisofs','larch5'),('MythArchiveGrowisofsCmd','growisofs','larch5'),('MythArchiveTcrequantCmd','tcrequant','larch5'),('MythArchiveJpeg2yuvCmd','jpeg2yuv','larch5'),('MythArchiveProjectXCmd','projectx','larch5'),('FlixDBSchemaVer','1001',NULL),('GalleryDBSchemaVer','1000',NULL),('GalleryDir','/myth/gallery','larch5'),('GalleryThumbnailLocation','1','larch5'),('GallerySortOrder','20','larch5'),('GalleryImportDirs','/mnt/cdrom:/mnt/camera','larch5'),('GalleryMoviePlayerCmd','mplayer -fs %s','larch5'),('SlideshowUseOpenGL','0','larch5'),('SlideshowDelay','5','larch5'),('SlideshowOpenGLTransition','none','larch5'),('SlideshowOpenGLTransitionLength','2000','larch5'),('SlideshowTransition','random','larch5'),('SlideshowBackground','black','larch5'),('GameDBSchemaVer','1012',NULL),('MusicDBSchemaVer','1013',NULL),('VisualMode','','larch5'),('MusicLocation','/myth/music/','larch5'),('MusicAudioDevice','default','larch5'),('CDDevice','/dev/cdrom','larch5'),('AutoLookupCD','1','larch5'),('AutoPlayCD','0','larch5'),('KeyboardAccelerators','1','larch5'),('TreeLevels','splitartist artist album title','larch5'),('ArtistTreeGroups','0','larch5'),('NonID3FileNameFormat','GENRE/ARTIST/ALBUM/TRACK_TITLE','larch5'),('Ignore_ID3','0','larch5'),('MusicTagEncoding','utf16','larch5'),('CDWriterEnabled','1','larch5'),('CDDiskSize','1','larch5'),('CDCreateDir','1','larch5'),('CDWriteSpeed','0','larch5'),('CDBlankType','fast','larch5'),('PlayMode','none','larch5'),('ResumeMode','off','larch5'),('MaxSearchResults','300','larch5'),('MusicShowRatings','0','larch5'),('ShowWholeTree','0','larch5'),('ListAsShuffled','0','larch5'),('IntelliRatingWeight','35','larch5'),('IntelliPlayCountWeight','25','larch5'),('IntelliLastPlayWeight','25','larch5'),('IntelliRandomWeight','15','larch5'),('VisualCycleOnSongChange','0','larch5'),('VisualAlbumArtOnSongChange','0','larch5'),('VisualRandomize','0','larch5'),('VisualModeDelay','0','larch5'),('VisualScaleWidth','1','larch5'),('VisualScaleHeight','1','larch5'),('ParanoiaLevel','Full','larch5'),('FilenameTemplate','ARTIST/ALBUM/TRACK-TITLE','larch5'),('NoWhitespace','0','larch5'),('PostCDRipScript','','larch5'),('EjectCDAfterRipping','1','larch5'),('EncoderType','ogg','larch5'),('DefaultRipQuality','1','larch5'),('Mp3UseVBR','0','larch5'),('PhoneDBSchemaVer','1001',NULL),('SipRegisterWithProxy','1','larch5'),('SipProxyName','fwd.pulver.com','larch5'),('SipProxyAuthName','','larch5'),('SipProxyAuthPassword','','larch5'),('MySipName','Me','larch5'),('SipAutoanswer','0','larch5'),('SipBindInterface','eth0','larch5'),('SipLocalPort','5060','larch5'),('NatTraversalMethod','None','larch5'),('NatIpAddress','http://checkip.dyndns.org','larch5'),('AudioLocalPort','21232','larch5'),('VideoLocalPort','21234','larch5'),('MicrophoneDevice','None','larch5'),('CodecPriorityList','GSM;G.711u;G.711a','larch5'),('PlayoutAudioCall','40','larch5'),('PlayoutVideoCall','110','larch5'),('TxResolution','176x144','larch5'),('TransmitFPS','5','larch5'),('TransmitBandwidth','256','larch5'),('CaptureResolution','352x288','larch5'),('TimeToAnswer','10','larch5'),('DefaultVxmlUrl','http://127.0.0.1/vxml/index.vxml','larch5'),('DefaultVoicemailPrompt','I am not at home, please leave a message after the tone','larch5'),('mythvideo.DBSchemaVer','1016',NULL),('VideoStartupDir','/myth/video','larch5'),('VideoArtworkDir','/myth/video/.covers','larch5'),('Default MythVideo View','2','larch5'),('VideoListUnknownFiletypes','1','larch5'),('VideoBrowserNoDB','1','larch5'),('VideoGalleryNoDB','1','larch5'),('VideoTreeNoDB','1','larch5'),('VideoTreeLoadMetaData','1','larch5'),('VideoNewBrowsable','1','larch5'),('mythvideo.sort_ignores_case','1','larch5'),('mythvideo.db_folder_view','1','larch5'),('mythvideo.VideoTreeRemember','1','larch5'),('mythvideo.ImageCacheSize','50','larch5'),('DVDDeviceLocation','/dev/dvd','larch5'),('VCDDeviceLocation','/dev/cdrom','larch5'),('DVDOnInsertDVD','1','larch5'),('DVDDriveSpeed','2','larch5'),('EnableDVDBookmark','1','larch5'),('DVDBookmarkPrompt','1','larch5'),('DVDBookmarkDays','10','larch5'),('MovieListCommandLine','/usr/share/mythtv/mythvideo/scripts/imdb.pl -M tv=no;video=no','larch5'),('MoviePosterCommandLine','/usr/share/mythtv/mythvideo/scripts/imdb.pl -P','larch5'),('MovieDataCommandLine','/usr/share/mythtv/mythvideo/scripts/imdb.pl -D','larch5'),('VideoGalleryColsPerPage','4','larch5'),('VideoGalleryRowsPerPage','3','larch5'),('VideoGallerySubtitle','1','larch5'),('VideoDefaultParentalLevel','4','larch5'),('VideoAggressivePC','0','larch5'),('mythvideo.ParentalLevelFromRating','0','larch5'),('mythvideo.AutoR2PL1','G','larch5'),('mythvideo.AutoR2PL2','PG','larch5'),('mythvideo.AutoR2PL3','PG-13','larch5'),('mythvideo.AutoR2PL4','R:NC-17','larch5'),('VideoDefaultPlayer','mplayer -fs -zoom -quiet -vo xv %s','larch5'),('mythdvd.DVDPlayerCommand','Internal','larch5'),('VCDPlayerCommand','mplayer vcd:// -cdrom-device %d -fs -zoom -vo xv','larch5'),('DVDRipLocation','/myth/tmp','larch5'),('TitlePlayCommand','mplayer dvd://%t -dvd-device %d -fs -zoom -vo xv -aid %a -channels %c','larch5'),('SubTitleCommand','-sid %s','larch5'),('TranscodeCommand','transcode','larch5'),('MTDPort','2442','larch5'),('MTDNiceLevel','20','larch5'),('MTDConcurrentTranscodes','1','larch5'),('MTDLogFlag','0','larch5'),('MTDac3Flag','0','larch5'),('MTDxvidFlag','1','larch5'),('mythvideo.TrustTranscodeFRDetect','1','larch5'),('WeatherDBSchemaVer','1000',NULL),('TVVidModeRefreshRate','0','larch5'),('TVVidModeRefreshRate0','0','larch5'),('TVVidModeRefreshRate1','0','larch5'),('TVVidModeRefreshRate2','0','larch5'),('GalleryRecursiveSlideshow','1','larch5'),('WebBrowserZoomLevel','20','larch5'),('WebBrowserCommand','/usr/bin/mythbrowser','larch5'),('WebBrowserScrollMode','1','larch5'),('WebBrowserScrollSpeed','4','larch5'),('WebBrowserHideScrollbars','0','larch5'),('RepeatMode','all','larch5'),('MusicAutoShowPlayer','1','larch5'); +INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES ('mythfilldatabaseLastRunStart',NULL,NULL),('mythfilldatabaseLastRunEnd',NULL,NULL),('mythfilldatabaseLastRunStatus',NULL,NULL),('DataDirectMessage',NULL,NULL),('HaveRepeats','0',NULL),('DBSchemaVer','1214',NULL),('DefaultTranscoder','0',NULL),('MythFillSuggestedRunTime','1970-01-01T00:00:00',NULL),('MythFillGrabberSuggestsTime','1',NULL),('MythFillFixProgramIDsHasRunOnce','1','larch5'),('Language','EN','larch5'),('BackendServerIP','127.0.0.1','larch5'),('BackendServerPort','6543','larch5'),('BackendStatusPort','6544','larch5'),('SecurityPin','','larch5'),('MasterServerIP','127.0.0.1',NULL),('MasterServerPort','6543',NULL),('TVFormat','NTSC',NULL),('VbiFormat','None',NULL),('FreqTable','us-bcast',NULL),('TimeOffset','None',NULL),('MasterBackendOverride','1',NULL),('DeletesFollowLinks','1',NULL),('TruncateDeletesSlowly','0','larch5'),('HDRingbufferSize','9400',NULL),('MiscStatusScript','','larch5'),('DisableFirewireReset','0','larch5'),('EITTransportTimeout','5',NULL),('EITIgnoresSource','0',NULL),('EITCrawIdleStart','60',NULL),('startupCommand','',NULL),('blockSDWUwithoutClient','1',NULL),('idleWaitForRecordingTime','15',NULL),('StartupSecsBeforeRecording','120',NULL),('WakeupTimeFormat','hh:mm yyyy-MM-dd',NULL),('SetWakeuptimeCommand','',NULL),('ServerHaltCommand','sudo /sbin/halt -p',NULL),('preSDWUCheckCommand','',NULL),('WOLbackendConnectRetry','5',NULL),('WOLbackendCommand','',NULL),('WOLslaveBackendsCommand','',NULL),('JobQueueMaxSimultaneousJobs','1','larch5'),('JobQueueCheckFrequency','60','larch5'),('JobQueueWindowStart','00:00','larch5'),('JobQueueWindowEnd','23:59','larch5'),('JobQueueCPU','0','larch5'),('JobAllowCommFlag','1','larch5'),('JobAllowTranscode','1','larch5'),('JobAllowUserJob1','0','larch5'),('JobAllowUserJob2','0','larch5'),('JobAllowUserJob3','0','larch5'),('JobAllowUserJob4','0','larch5'),('JobsRunOnRecordHost','0',NULL),('AutoCommflagWhileRecording','0',NULL),('JobQueueCommFlagCommand','mythcommflag',NULL),('JobQueueTranscodeCommand','mythtranscode',NULL),('AutoTranscodeBeforeAutoCommflag','0',NULL),('SaveTranscoding','0',NULL),('UserJobDesc1','User Job #1',NULL),('UserJob1','',NULL),('UserJobDesc2','User Job #2',NULL),('UserJob2','',NULL),('UserJobDesc3','User Job #3',NULL),('UserJob3','',NULL),('UserJobDesc4','User Job #4',NULL),('UserJob4','',NULL),('DefaultVideoPlaybackProfile','CPU+','larch5'),('RealtimePriority','1','larch5'),('DecodeExtraAudio','1','larch5'),('AudioNag','1','larch5'),('UseVideoTimebase','0','larch5'),('ClearSavedPosition','1','larch5'),('AltClearSavedPosition','1','larch5'),('JumpToProgramOSD','1','larch5'),('ContinueEmbeddedTVPlay','0','larch5'),('AutomaticSetWatched','0','larch5'),('AlwaysStreamFiles','1','larch5'),('UseOpenGLVSync','0','larch5'),('UseOutputPictureControls','1','larch5'),('AspectOverride','0','larch5'),('AdjustFill','0','larch5'),('LetterboxColour','0','larch5'),('PIPLocation','0','larch5'),('PlaybackExitPrompt','2','larch5'),('EndOfRecordingExitPrompt','1','larch5'),('PlayBoxOrdering','1','larch5'),('PlayBoxEpisodeSort','Date','larch5'),('GeneratePreviewPixmaps','0','larch5'),('PreviewPixmapOffset','64',NULL),('PreviewFromBookmark','1','larch5'),('PlaybackPreview','1','larch5'),('PlaybackBoxStartInTitle','1','larch5'),('ShowGroupInfo','0','larch5'),('AllRecGroupPassword','',NULL),('DisplayRecGroup','All Programs','larch5'),('QueryInitialFilter','0','larch5'),('RememberRecGroup','1','larch5'),('DispRecGroupAsAllProg','0','larch5'),('LiveTVInAllPrograms','0','larch5'),('DisplayGroupDefaultView','0','larch5'),('DisplayGroupTitleSort','0','larch5'),('PlaybackWatchList','1','larch5'),('PlaybackWLStart','0','larch5'),('PlaybackWLAutoExpire','0','larch5'),('PlaybackWLMaxAge','60','larch5'),('PlaybackWLBlackOut','2','larch5'),('SmartForward','0','larch5'),('StickyKeys','0','larch5'),('FFRewReposTime','100','larch5'),('FFRewReverse','1','larch5'),('ExactSeeking','0','larch5'),('AutoCommercialSkip','0','larch5'),('MaximumCommercialSkip','3600',NULL),('CommSkipAllBlanks','1',NULL),('PVR350OutputEnable','0','larch5'),('PVR350EPGAlphaValue','164','larch5'),('PVR350InternalAudioOnly','0','larch5'),('OSDTheme','blueosd','larch5'),('OSDGeneralTimeout','2','larch5'),('OSDProgramInfoTimeout','3','larch5'),('OSDFont','FreeMono.ttf','larch5'),('OSDThemeFontSizeType','default','larch5'),('EnableMHEG','0','larch5'),('PersistentBrowseMode','1','larch5'),('OSDNotifyTimeout','5','larch5'),('UDPNotifyPort','6948','larch5'),('OSDCCFont','FreeMono.ttf','larch5'),('CCBackground','0','larch5'),('DefaultCCMode','0','larch5'),('Prefer708Captions','1','larch5'),('OSDCC708TextZoom','100','larch5'),('OSDCC708DefaultFontType','MonoSerif','larch5'),('OSDCC708MonoSerifFont','FreeMono.ttf','larch5'),('OSDCC708PropSerifFont','FreeMono.ttf','larch5'),('OSDCC708MonoSansSerifFont','FreeMono.ttf','larch5'),('OSDCC708PropSansSerifFont','FreeMono.ttf','larch5'),('OSDCC708CasualFont','FreeMono.ttf','larch5'),('OSDCC708CursiveFont','FreeMono.ttf','larch5'),('OSDCC708CapitalsFont','FreeMono.ttf','larch5'),('OSDCC708MonoSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708PropSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708MonoSansSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708PropSansSerifItalicFont','FreeMono.ttf','larch5'),('OSDCC708CasualItalicFont','FreeMono.ttf','larch5'),('OSDCC708CursiveItalicFont','FreeMono.ttf','larch5'),('OSDCC708CapitalsItalicFont','FreeMono.ttf','larch5'),('ChannelOrdering','channum','larch5'),('ChannelFormat',' ','larch5'),('LongChannelFormat',' ','larch5'),('SmartChannelChange','0','larch5'),('LastFreeCard','0',NULL),('LiveTVPriority','0',NULL),('AutoExpireMethod','2',NULL),('AutoExpireDefault','1',NULL),('RerecordWatched','1',NULL),('AutoExpireWatchedPriority','0',NULL),('AutoExpireLiveTVMaxAge','1',NULL),('AutoExpireDayPriority','3',NULL),('AutoExpireExtraSpace','1',NULL),('AutoExpireInsteadOfDelete','0',NULL),('DeletedFifoOrder','0',NULL),('CommercialSkipMethod','255',NULL),('AggressiveCommDetect','1',NULL),('AutoCommercialFlag','1',NULL),('AutoTranscode','0',NULL),('AutoRunUserJob1','0',NULL),('AutoRunUserJob2','0',NULL),('AutoRunUserJob3','0',NULL),('AutoRunUserJob4','0',NULL),('OverTimeCategory','category name',NULL),('CategoryOverTime','30',NULL),('EPGFillType','12','larch5'),('EPGShowCategoryColors','1','larch5'),('EPGShowCategoryText','1','larch5'),('EPGScrollType','1','larch5'),('EPGShowChannelIcon','1','larch5'),('EPGShowFavorites','0','larch5'),('WatchTVGuide','0','larch5'),('chanPerPage','5','larch5'),('timePerPage','4','larch5'),('UnknownTitle','Unknown','larch5'),('UnknownCategory','Unknown','larch5'),('DefaultTVChannel','3','larch5'),('SelectChangesChannel','0','larch5'),('SelChangeRecThreshold','16','larch5'),('EPGEnableJumpToChannel','0',NULL),('Theme','LinHES','larch5'),('RandomTheme','0','larch5'),('ThemeCacheSize','1','larch5'),('ThemePainter','qt','larch5'),('Style','Desktop Style','larch5'),('ThemeFontSizeType','default','larch5'),('MenuTheme','default','larch5'),('XineramaScreen','0','larch5'),('XineramaMonitorAspectRatio','1.3333','larch5'),('GuiSizeForTV','1','larch5'),('HideMouseCursor','1','larch5'),('RunFrontendInWindow','0','larch5'),('UseVideoModes','0','larch5'),('GuiVidModeResolution','640x480','larch5'),('TVVidModeResolution','320x200','larch5'),('TVVidModeForceAspect','0.0','larch5'),('TVVidModeResolution0','320x200','larch5'),('TVVidModeForceAspect0','0.0','larch5'),('TVVidModeResolution1','320x200','larch5'),('TVVidModeForceAspect1','0.0','larch5'),('TVVidModeResolution2','320x200','larch5'),('TVVidModeForceAspect2','0.0','larch5'),('ISO639Language0','eng','larch5'),('ISO639Language1','eng','larch5'),('DateFormat','ddd MMM d','larch5'),('ShortDateFormat','M/d','larch5'),('TimeFormat','h:mm AP','larch5'),('QtFontSmall','12','larch5'),('QtFontMedium','16','larch5'),('QtFontBig','25','larch5'),('PlayBoxTransparency','1','larch5'),('PlayBoxShading','0','larch5'),('UseVirtualKeyboard','1','larch5'),('LCDEnable','0','larch5'),('LCDShowTime','1','larch5'),('LCDShowMenu','1','larch5'),('LCDShowMusic','1','larch5'),('LCDShowMusicItems','ArtistTitle','larch5'),('LCDShowChannel','1','larch5'),('LCDShowRecStatus','0','larch5'),('LCDShowVolume','1','larch5'),('LCDShowGeneric','1','larch5'),('LCDBacklightOn','1','larch5'),('LCDHeartBeatOn','0','larch5'),('LCDBigClock','0','larch5'),('LCDKeyString','ABCDEF','larch5'),('LCDPopupTime','5','larch5'),('AudioOutputDevice','ALSA:default','larch5'),('PassThruOutputDevice','Default','larch5'),('MaxChannels','2','larch5'),('AudioUpmixType','0','larch5'),('AC3PassThru','0','larch5'),('DTSPassThru','0','larch5'),('AggressiveSoundcardBuffer','0','larch5'),('MythControlsVolume','1','larch5'),('MixerDevice','ALSA:default','larch5'),('MixerControl','PCM','larch5'),('MasterMixerVolume','100','larch5'),('PCMMixerVolume','50','larch5'),('IndividualMuteControl','0','larch5'),('LircKeyPressedApp','','larch5'),('AllowQuitShutdown','4','larch5'),('NoPromptOnExit','1','larch5'),('UseArrowAccels','1','larch5'),('NetworkControlEnabled','0','larch5'),('NetworkControlPort','6546','larch5'),('MonitorDrives','0','larch5'),('MediaChangeEvents','0','larch5'),('IgnoreDevices','','larch5'),('SetupPinCodeRequired','0','larch5'),('OverrideExitMenu','0','larch5'),('HaltCommand','sudo /sbin/halt','larch5'),('RebootCommand','sudo /sbin/reboot','larch5'),('EnableXbox','0','larch5'),('LogEnabled','0',NULL),('LogMaxCount','100','larch5'),('LogPrintLevel','8','larch5'),('LogCleanEnabled','0','larch5'),('LogCleanPeriod','14','larch5'),('LogCleanDays','14','larch5'),('LogCleanMax','30','larch5'),('MythFillEnabled','1',NULL),('MythFillDatabasePath','mythfilldatabase',NULL),('MythFillDatabaseArgs','',NULL),('MythFillDatabaseLog','',NULL),('MythFillPeriod','1',NULL),('MythFillMinHour','2',NULL),('MythFillMaxHour','5',NULL),('SchedMoveHigher','1',NULL),('SchedOpenEnd','0',NULL),('ComplexPriority','0',NULL),('PrefInputPriority','2',NULL),('SingleRecordRecPriority','1',NULL),('FindOneRecordRecPriority','-1',NULL),('ArchiveDBSchemaVer','1001',NULL),('MythArchiveTempDir','/myth/tmp','larch5'),('MythArchiveShareDir','/usr/share/mythtv/mytharchive/','larch5'),('MythArchiveVideoFormat','NTSC','larch5'),('MythArchiveFileFilter','*.mpg *.mov *.avi *.mpeg *.nuv','larch5'),('MythArchiveDVDLocation','/dev/dvd','larch5'),('MythArchiveDVDPlayerCmd','Internal','larch5'),('MythArchiveEncodeToAc3','0','larch5'),('MythArchiveCopyRemoteFiles','0','larch5'),('MythArchiveAlwaysUseMythTranscode','1','larch5'),('MythArchiveUseProjectX','0','larch5'),('MythArchiveAddSubtitles','0','larch5'),('MythArchiveUseFIFO','1','larch5'),('MythArchiveDefaultEncProfile','SP','larch5'),('MythArchiveMainMenuAR','16:9','larch5'),('MythArchiveChapterMenuAR','Video','larch5'),('MythArchiveDateFormat','%a %b %d','larch5'),('MythArchiveTimeFormat','%I:%M %p','larch5'),('MythArchiveFfmpegCmd','ffmpeg','larch5'),('MythArchiveMplexCmd','mplex','larch5'),('MythArchiveDvdauthorCmd','dvdauthor','larch5'),('MythArchiveSpumuxCmd','spumux','larch5'),('MythArchiveMpeg2encCmd','mpeg2enc','larch5'),('MythArchiveMkisofsCmd','mkisofs','larch5'),('MythArchiveGrowisofsCmd','growisofs','larch5'),('MythArchiveTcrequantCmd','tcrequant','larch5'),('MythArchiveJpeg2yuvCmd','jpeg2yuv','larch5'),('MythArchiveProjectXCmd','projectx','larch5'),('FlixDBSchemaVer','1001',NULL),('GalleryDBSchemaVer','1000',NULL),('GalleryDir','/myth/gallery','larch5'),('GalleryThumbnailLocation','1','larch5'),('GallerySortOrder','20','larch5'),('GalleryImportDirs','/mnt/cdrom:/mnt/camera','larch5'),('GalleryMoviePlayerCmd','mplayer -fs %s','larch5'),('SlideshowUseOpenGL','0','larch5'),('SlideshowDelay','5','larch5'),('SlideshowOpenGLTransition','none','larch5'),('SlideshowOpenGLTransitionLength','2000','larch5'),('SlideshowTransition','random','larch5'),('SlideshowBackground','black','larch5'),('GameDBSchemaVer','1012',NULL),('MusicDBSchemaVer','1013',NULL),('VisualMode','','larch5'),('MusicLocation','/myth/music/','larch5'),('MusicAudioDevice','default','larch5'),('CDDevice','/dev/cdrom','larch5'),('AutoLookupCD','1','larch5'),('AutoPlayCD','0','larch5'),('KeyboardAccelerators','1','larch5'),('TreeLevels','splitartist artist album title','larch5'),('ArtistTreeGroups','0','larch5'),('NonID3FileNameFormat','GENRE/ARTIST/ALBUM/TRACK_TITLE','larch5'),('Ignore_ID3','0','larch5'),('MusicTagEncoding','utf16','larch5'),('CDWriterEnabled','1','larch5'),('CDDiskSize','1','larch5'),('CDCreateDir','1','larch5'),('CDWriteSpeed','0','larch5'),('CDBlankType','fast','larch5'),('PlayMode','none','larch5'),('ResumeMode','off','larch5'),('MaxSearchResults','300','larch5'),('MusicShowRatings','0','larch5'),('ShowWholeTree','0','larch5'),('ListAsShuffled','0','larch5'),('IntelliRatingWeight','35','larch5'),('IntelliPlayCountWeight','25','larch5'),('IntelliLastPlayWeight','25','larch5'),('IntelliRandomWeight','15','larch5'),('VisualCycleOnSongChange','0','larch5'),('VisualAlbumArtOnSongChange','0','larch5'),('VisualRandomize','0','larch5'),('VisualModeDelay','0','larch5'),('VisualScaleWidth','1','larch5'),('VisualScaleHeight','1','larch5'),('ParanoiaLevel','Full','larch5'),('FilenameTemplate','ARTIST/ALBUM/TRACK-TITLE','larch5'),('NoWhitespace','0','larch5'),('PostCDRipScript','','larch5'),('EjectCDAfterRipping','1','larch5'),('EncoderType','ogg','larch5'),('DefaultRipQuality','1','larch5'),('Mp3UseVBR','0','larch5'),('PhoneDBSchemaVer','1001',NULL),('SipRegisterWithProxy','1','larch5'),('SipProxyName','fwd.pulver.com','larch5'),('SipProxyAuthName','','larch5'),('SipProxyAuthPassword','','larch5'),('MySipName','Me','larch5'),('SipAutoanswer','0','larch5'),('SipBindInterface','eth0','larch5'),('SipLocalPort','5060','larch5'),('NatTraversalMethod','None','larch5'),('NatIpAddress','http://checkip.dyndns.org','larch5'),('AudioLocalPort','21232','larch5'),('VideoLocalPort','21234','larch5'),('MicrophoneDevice','None','larch5'),('CodecPriorityList','GSM;G.711u;G.711a','larch5'),('PlayoutAudioCall','40','larch5'),('PlayoutVideoCall','110','larch5'),('TxResolution','176x144','larch5'),('TransmitFPS','5','larch5'),('TransmitBandwidth','256','larch5'),('CaptureResolution','352x288','larch5'),('TimeToAnswer','10','larch5'),('DefaultVxmlUrl','http://127.0.0.1/vxml/index.vxml','larch5'),('DefaultVoicemailPrompt','I am not at home, please leave a message after the tone','larch5'),('mythvideo.DBSchemaVer','1016',NULL),('VideoStartupDir','/myth/video','larch5'),('VideoArtworkDir','/myth/video/.covers','larch5'),('Default MythVideo View','2','larch5'),('VideoListUnknownFiletypes','1','larch5'),('VideoBrowserNoDB','1','larch5'),('VideoGalleryNoDB','1','larch5'),('VideoTreeNoDB','1','larch5'),('VideoTreeLoadMetaData','1','larch5'),('VideoNewBrowsable','1','larch5'),('mythvideo.sort_ignores_case','1','larch5'),('mythvideo.db_folder_view','1','larch5'),('mythvideo.VideoTreeRemember','1','larch5'),('mythvideo.ImageCacheSize','50','larch5'),('DVDDeviceLocation','/dev/dvd','larch5'),('VCDDeviceLocation','/dev/cdrom','larch5'),('DVDOnInsertDVD','1','larch5'),('DVDDriveSpeed','2','larch5'),('EnableDVDBookmark','1','larch5'),('DVDBookmarkPrompt','1','larch5'),('DVDBookmarkDays','10','larch5'),('MovieListCommandLine','/usr/share/mythtv/mythvideo/scripts/imdb.pl -M tv=no;video=no','larch5'),('MoviePosterCommandLine','/usr/share/mythtv/mythvideo/scripts/imdb.pl -P','larch5'),('MovieDataCommandLine','/usr/share/mythtv/mythvideo/scripts/imdb.pl -D','larch5'),('VideoGalleryColsPerPage','4','larch5'),('VideoGalleryRowsPerPage','3','larch5'),('VideoGallerySubtitle','1','larch5'),('VideoDefaultParentalLevel','4','larch5'),('VideoAggressivePC','0','larch5'),('mythvideo.ParentalLevelFromRating','0','larch5'),('mythvideo.AutoR2PL1','G','larch5'),('mythvideo.AutoR2PL2','PG','larch5'),('mythvideo.AutoR2PL3','PG-13','larch5'),('mythvideo.AutoR2PL4','R:NC-17','larch5'),('VideoDefaultPlayer','mplayer -fs -zoom -quiet -vo xv %s','larch5'),('mythdvd.DVDPlayerCommand','Internal','larch5'),('VCDPlayerCommand','mplayer vcd:// -cdrom-device %d -fs -zoom -vo xv','larch5'),('DVDRipLocation','/myth/tmp','larch5'),('TitlePlayCommand','mplayer dvd://%t -dvd-device %d -fs -zoom -vo xv -aid %a -channels %c','larch5'),('SubTitleCommand','-sid %s','larch5'),('TranscodeCommand','transcode','larch5'),('MTDPort','2442','larch5'),('MTDNiceLevel','20','larch5'),('MTDConcurrentTranscodes','1','larch5'),('MTDLogFlag','0','larch5'),('MTDac3Flag','0','larch5'),('MTDxvidFlag','1','larch5'),('mythvideo.TrustTranscodeFRDetect','1','larch5'),('WeatherDBSchemaVer','1000',NULL),('TVVidModeRefreshRate','0','larch5'),('TVVidModeRefreshRate0','0','larch5'),('TVVidModeRefreshRate1','0','larch5'),('TVVidModeRefreshRate2','0','larch5'),('GalleryRecursiveSlideshow','1','larch5'),('WebBrowserZoomLevel','20','larch5'),('WebBrowserCommand','/usr/bin/mythbrowser','larch5'),('WebBrowserScrollMode','1','larch5'),('WebBrowserScrollSpeed','4','larch5'),('WebBrowserHideScrollbars','0','larch5'),('RepeatMode','all','larch5'),('MusicAutoShowPlayer','1','larch5'),('HOSTOSsize','5','larch5'),('HostMyhostname','type_hostname_here','larch5'),('NetworkControlEnabled','1','larch5'); +INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES +('Hostpluginmytharchive','1','larch5'), +('Hostpluginmythbrowser','1','larch5'), +('Hostpluginmythcontrols','1','larch5'), +('Hostpluginmythflix','1','larch5'), +('Hostpluginmythgallery','1','larch5'), +('Hostpluginmythgame','1','larch5'), +('HostpluginmythgameFceu','1','larch5'), +('HostpluginmythgameMame','1','larch5'), +('HostpluginmythgameZsnes','1','larch5'), +('Hostpluginmythmovietime','1','larch5'), +('Hostpluginmythmusic','1','larch5'), +('Hostpluginmythnews','1','larch5'), +('Hostpluginmythphone','1','larch5'), +('Hostpluginmythsmolt','1','larch5'), +('Hostpluginmythvideo','1','larch5'), +('Hostpluginmythvideo_dvdcss','0','larch5'), +('Hostpluginmythweather','1','larch5'), +('HostAudiotype','ALSA','larch5'), +('HostpluginmythgameZsnes','1','larch5'), +('HostpluginmythgameMame','1','larch5'), +('Hostpluginmythvideo_dvdcss','0','larch5'), +('Hostpluginmythappletrailers','1','larch5'), +('Hostpluginmythstream','1','larch5'), +('Hostpluginmythvodka','1','larch5'), +('HostMiro','1','larch5'), +('HostpluginmythgameXE','1','larch5'), +('HostpluginmythgameROMDB','1','larch5'), +('HostXine','1','larch5'), +('HOSTOSsize','5','larch5'), +('HostMyhostname','type_hostname_here','larch5'), +('NetworkControlEnabled','1','larch5'), +('Hostaccessuser','1','larch5'); + +INSERT INTO `settings` (`value`, `data`, `hostname`) VALUES +('WOLbackendReconnectWaitTime','5',NULL); + + /*!40000 ALTER TABLE `settings` ENABLE KEYS */; UNLOCK TABLES; diff --git a/abs/core/mythtv/stable/mythdb-initial/permissions.sql b/abs/core/mythtv/stable/mythdb-initial/permissions.sql index acb4673..5a36e15 100755 --- a/abs/core/mythtv/stable/mythdb-initial/permissions.sql +++ b/abs/core/mythtv/stable/mythdb-initial/permissions.sql @@ -1,6 +1,6 @@ GRANT ALL ON mythconverg.* TO mythtv@localhost IDENTIFIED BY "mythtv"; -GRANT ALL ON mythconverg.* TO mythtv@"%" IDENTIFIED BY "mythtv"; +GRANT ALL ON mythconverg.* TO mythtv@'%' IDENTIFIED BY "mythtv"; GRANT ALL ON mythconverg.* TO mythtv@myhost IDENTIFIED BY "mythtv"; GRANT FILE ON *.* TO 'mythtv'@'%'; FLUSH PRIVILEGES; diff --git a/abs/core/mythtv/stable/mythflix/PKGBUILD b/abs/core/mythtv/stable/mythflix/PKGBUILD index f613963..5423c06 100644 --- a/abs/core/mythtv/stable/mythflix/PKGBUILD +++ b/abs/core/mythtv/stable/mythflix/PKGBUILD @@ -3,28 +3,38 @@ # Maintainer: kleptophobiac@gmail.com pkgname=mythflix +PLUGIN=$pkgname pkgver=0.21 -pkgrel=1 +pkgrel=5 pkgdesc="Netflix access plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh - - # use QT3 qmake + svn update + cd $startdir/src/mythplugins + 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 + cd - + # use QT3 qmake export PATH=$QTDIR/bin:$PATH ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythflix qmake mythplugins.pro make qmake || return 1 - make -j 2 || return 1 +# make -j 2 || return 1 + make || return 1 make INSTALL_ROOT=$startdir/pkg install } diff --git a/abs/core/mythtv/stable/mythgallery/PKGBUILD b/abs/core/mythtv/stable/mythgallery/PKGBUILD index 76a66c5..bdf7b57 100644 --- a/abs/core/mythtv/stable/mythgallery/PKGBUILD +++ b/abs/core/mythtv/stable/mythgallery/PKGBUILD @@ -4,19 +4,20 @@ pkgname=mythgallery pkgver=0.21 -pkgrel=1 +pkgrel=5 pkgdesc="Image gallery plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'libexif' 'libtiff') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh + svn update # use QT3 qmake export PATH=$QTDIR/bin:$PATH diff --git a/abs/core/mythtv/stable/mythgame/PKGBUILD b/abs/core/mythtv/stable/mythgame/PKGBUILD index 33fb9a5..aac284a 100644 --- a/abs/core/mythtv/stable/mythgame/PKGBUILD +++ b/abs/core/mythtv/stable/mythgame/PKGBUILD @@ -4,20 +4,21 @@ pkgname=mythgame pkgver=0.21 -pkgrel=1 +pkgrel=4 pkgdesc="Emulation plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'zlib') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-$pkgver + cd $startdir/src/mythplugins export QMAKESPEC='linux-g++' source /etc/profile.d/qt3.sh +# svn update ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythgame diff --git a/abs/core/mythtv/stable/mythmovies/PKGBUILD b/abs/core/mythtv/stable/mythmovies/PKGBUILD new file mode 100644 index 0000000..c07b3a2 --- /dev/null +++ b/abs/core/mythtv/stable/mythmovies/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Juergen Hoetzel +# Contributor: kleptophobiac@gmail.com + +pkgname=mythmovies +pkgver=0.21 +pkgrel=5 +pkgdesc="Displays information about movies playing in the area." +arch=('i686' 'x86_64') +url="http://www.mythtv.org" +license=('GPL') +depends=('mythtv>=${pkgver}') +source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') +groups=('mythtv-extras') + +build() { + cd $startdir/src/mythplugins + . /etc/profile.d/qt3.sh + svn update + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + + ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythmovies + + qmake mythplugins.pro + make qmake || return 1 + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core/mythtv/stable/mythmusic/PKGBUILD b/abs/core/mythtv/stable/mythmusic/PKGBUILD index 02adcce..b422f34 100644 --- a/abs/core/mythtv/stable/mythmusic/PKGBUILD +++ b/abs/core/mythtv/stable/mythmusic/PKGBUILD @@ -4,29 +4,31 @@ pkgname=mythmusic pkgver=0.21 -pkgrel=2 +pkgrel=12 pkgdesc="Music playing plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \ - 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib') + 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \ + 'libvisual-plugins' 'libvisual-projectm') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake export PATH=$QTDIR/bin:$PATH ./configure --prefix=/usr --disable-all --enable-mythmusic --enable-fftw \ - --enable-sdl --enable-aac --enable-opengl + --enable-sdl --enable-aac --enable-opengl --enable-libvisual qmake mythplugins.pro make qmake || return 1 - make -j 2 || return 1 +# make -j 2 || return 1 + make make INSTALL_ROOT=$startdir/pkg install } diff --git a/abs/core/mythtv/stable/mythnews/PKGBUILD b/abs/core/mythtv/stable/mythnews/PKGBUILD index 9133755..1f22161 100644 --- a/abs/core/mythtv/stable/mythnews/PKGBUILD +++ b/abs/core/mythtv/stable/mythnews/PKGBUILD @@ -4,19 +4,20 @@ pkgname=mythnews pkgver=0.21 -pkgrel=1 +pkgrel=4 pkgdesc="News checking plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh + svn update # use QT3 qmake export PATH=$QTDIR/bin:$PATH diff --git a/abs/core/mythtv/stable/mythphone/PKGBUILD b/abs/core/mythtv/stable/mythphone/PKGBUILD index 24cd04f..1ce2d5a 100644 --- a/abs/core/mythtv/stable/mythphone/PKGBUILD +++ b/abs/core/mythtv/stable/mythphone/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythphone pkgver=0.21 -pkgrel=1 +pkgrel=3 pkgdesc="Plugin that allows phone calls to be made to MythTv" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core/mythtv/stable/mythsmolt/PKGBUILD b/abs/core/mythtv/stable/mythsmolt/PKGBUILD new file mode 100644 index 0000000..25c91cf --- /dev/null +++ b/abs/core/mythtv/stable/mythsmolt/PKGBUILD @@ -0,0 +1,26 @@ +pkgname=mythsmolt +pkgver=0.21 +pkgrel=8 +pkgdesc="mythsmolt, a hardware profileing tool" +arch=('i686' 'x86_64') +url="http://www.mythvantage.com" +license=('GPL') +depends=("mythtv>=${pkgver}" urlgrabber) +source=("http://www.mythvantage.com/request.php?4") + +groups=('mythtv-extras') + +build() { + cd $startdir/src/mythsmolt_src/mythsmolt + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + echo "INCLUDEPATH += /usr/include/mythtv" >> mythsmolt.pro.usr + + qmake mythsmolt.pro.usr + make qmake || return 1 + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/core/mythtv/stable/mythstream/PKGBUILD b/abs/core/mythtv/stable/mythstream/PKGBUILD new file mode 100644 index 0000000..275afa8 --- /dev/null +++ b/abs/core/mythtv/stable/mythstream/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Juergen Hoetzel +# Contributor: kleptophobiac@gmail.com + +pkgname=mythstream +pkgver=0.18_1 +pkgrel=8 +pkgdesc="Unofficial MythTV plugin for Internet audio and video streams." +arch=('i686' 'x86_64') +url="http://home.kabelfoon.nl/~moongies/streamtuned.html" +license=('GPL') +depends=('mythtv' 'perl-xml-simple') +source=("http://home.kabelfoon.nl/~moongies/sw9vc4htz2/mythstream-v0.18_1.tar.gz" "http://home.kabelfoon.nl/~moongies/sw9vc4htz2/mythstream.cpp.patch_svn20071123" "mythstream.diff") +md5sums=('') +install=mythstream.install +groups=('mythtv-extras') +install=mythstream.install + +build() { + cd $startdir/src/mythstream-0.18_1 + patch -p1 < ../mythstream.diff + patch -p0 < ../mythstream.cpp.patch_svn20071123 + ln -s ../../../mythtv/src/mythtv-0.21/libs/lib* . + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + echo "INCLUDEPATH += /usr/include/mythtv" >> mythstream/mythstream.pro + + qmake mythstream.pro + make qmake || return 1 + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/core/mythtv/stable/mythstream/mythstream.diff b/abs/core/mythtv/stable/mythstream/mythstream.diff new file mode 100644 index 0000000..477881c --- /dev/null +++ b/abs/core/mythtv/stable/mythstream/mythstream.diff @@ -0,0 +1,79 @@ +diff -ruaN mythstream-0.18_1.orig/libs/fft.cpp mythstream-0.18_1/libs/fft.cpp +--- mythstream-0.18_1.orig/libs/fft.cpp 2006-11-06 22:50:22.000000000 +0000 ++++ mythstream-0.18_1/libs/fft.cpp 2009-01-26 02:44:33.000000000 +0000 +@@ -23,7 +23,7 @@ + // development snapshot, many todo's + + #include +- ++#include + + #include + #include +diff -ruaN mythstream-0.18_1.orig/libs/harvester.cpp mythstream-0.18_1/libs/harvester.cpp +--- mythstream-0.18_1.orig/libs/harvester.cpp 2007-09-25 22:58:20.000000000 +0000 ++++ mythstream-0.18_1/libs/harvester.cpp 2009-01-26 02:44:55.000000000 +0000 +@@ -47,6 +47,7 @@ + #include + + #include ++#include + + #include "harvester.h" + +diff -ruaN mythstream-0.18_1.orig/libs/recorder.cpp mythstream-0.18_1/libs/recorder.cpp +--- mythstream-0.18_1.orig/libs/recorder.cpp 2005-05-14 13:22:51.000000000 +0000 ++++ mythstream-0.18_1/libs/recorder.cpp 2009-01-26 02:45:14.000000000 +0000 +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + + #include + +diff -ruaN mythstream-0.18_1.orig/libs/storageconfig.cpp mythstream-0.18_1/libs/storageconfig.cpp +--- mythstream-0.18_1.orig/libs/storageconfig.cpp 2007-09-05 21:03:14.000000000 +0000 ++++ mythstream-0.18_1/libs/storageconfig.cpp 2009-01-26 02:45:35.000000000 +0000 +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #include "storageconfig.h" + +diff -ruaN mythstream-0.18_1.orig/libs/streamconfig.cpp mythstream-0.18_1/libs/streamconfig.cpp +--- mythstream-0.18_1.orig/libs/streamconfig.cpp 2007-09-05 20:36:21.000000000 +0000 ++++ mythstream-0.18_1/libs/streamconfig.cpp 2009-01-26 02:45:48.000000000 +0000 +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include "streamconfig.h" + +diff -ruaN mythstream-0.18_1.orig/libs/streamstatus.cpp mythstream-0.18_1/libs/streamstatus.cpp +--- mythstream-0.18_1.orig/libs/streamstatus.cpp 2007-09-19 00:13:45.000000000 +0000 ++++ mythstream-0.18_1/libs/streamstatus.cpp 2009-01-26 02:46:05.000000000 +0000 +@@ -38,7 +38,7 @@ + #include + #include + #include +- ++#include + + #include "streamstatus.h" + +diff -ruaN mythstream-0.18_1.orig/libs/streamstorage.cpp mythstream-0.18_1/libs/streamstorage.cpp +--- mythstream-0.18_1.orig/libs/streamstorage.cpp 2007-09-23 18:26:15.000000000 +0000 ++++ mythstream-0.18_1/libs/streamstorage.cpp 2009-01-26 02:46:28.000000000 +0000 +@@ -34,6 +34,7 @@ + + #include "streamstorage.h" + #include "configelements.h" ++#include + + #include + diff --git a/abs/core/mythtv/stable/mythstream/mythstream.install b/abs/core/mythtv/stable/mythstream/mythstream.install new file mode 100644 index 0000000..5af96f2 --- /dev/null +++ b/abs/core/mythtv/stable/mythstream/mythstream.install @@ -0,0 +1,23 @@ +# arg 1: the new package version +post_install() { + mv /usr/share/mythtv/is.xml /tmp + grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo " " >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + mv /tmp/is.xml.tmp /usr/share/mythtv/is.xml +} +post_remove() { + mv /usr/share/mythtv/is.xml /tmp/is.xml.tmp + sed -e '/\#MythStream/,/\#MythStream/d' < /tmp/is.xml.tmp > /usr/share/mythtv/is.xml +} + +op=$1 +shift +$op $* diff --git a/abs/core/mythtv/stable/myththemes/PKGBUILD b/abs/core/mythtv/stable/myththemes/PKGBUILD index 5223b92..6c0a0bb 100644 --- a/abs/core/mythtv/stable/myththemes/PKGBUILD +++ b/abs/core/mythtv/stable/myththemes/PKGBUILD @@ -4,19 +4,20 @@ pkgname=myththemes pkgver=0.21 -pkgrel=1 +pkgrel=3 pkgdesc="Themes for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org/" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/${pkgname}-${pkgver}-fixes.tar.bz2") -md5sums=('f13db28f928d70a11eaf416970d06eda') +md5sums=('25d4642344cbfd8ee0ceab75022e13fb') groups=('mythtv-extras') build() { - cd $startdir/src/$pkgname-$pkgver + cd $startdir/src/$pkgname . /etc/profile.d/qt3.sh + svn update # use QT3 qmake export PATH=$QTDIR/bin:$PATH diff --git a/abs/core/mythtv/stable/mythtv/2.6.28_dvb_api_version.diff b/abs/core/mythtv/stable/mythtv/2.6.28_dvb_api_version.diff new file mode 100644 index 0000000..0116023 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/2.6.28_dvb_api_version.diff @@ -0,0 +1,22 @@ +Index: libs/libmythtv/dvbtypes.h +=================================================================== +--- libs/libmythtv/dvbtypes.h (revision 19792) ++++ libs/libmythtv/dvbtypes.h (working copy) +@@ -19,7 +19,7 @@ + #include + #include + +-#if (DVB_API_VERSION != 3) ++#if (DVB_API_VERSION != 3 && DVB_API_VERSION != 5) + # error "DVB driver includes with API version 3 not found!" + #endif + +@@ -27,7 +27,7 @@ + # define DVB_API_VERSION_MINOR 0 + #endif + +-#if (DVB_API_VERSION >= 3 && DVB_API_VERSION_MINOR >= 1) ++#if ((DVB_API_VERSION == 3 && DVB_API_VERSION_MINOR >= 1) || DVB_API_VERSION == 5) + # define USE_ATSC + #else + #warning DVB API version < 3.1 diff --git a/abs/core/mythtv/stable/mythtv/PKGBUILD b/abs/core/mythtv/stable/mythtv/PKGBUILD index 72c6855..af084fc 100644 --- a/abs/core/mythtv/stable/mythtv/PKGBUILD +++ b/abs/core/mythtv/stable/mythtv/PKGBUILD @@ -1,29 +1,39 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Contributor: -# Contributor: dorphell -# Maintainer: Paul Mattal - pkgname=mythtv pkgver=0.21 -pkgrel=4 +pkgrel=90 pkgdesc="A Homebrew PVR project" arch=('i686' 'x86_64') -depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' \ - 'libxvmc') -backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt) -source=(ftp://ftp.knoppmyth.net/R6/sources/${pkgname}-${pkgver}-fixes.tar.bz2 \ - mythbackend\ - QUICKSTART.archlinux) -md5sums=('08506f0c5120c072085b6995f529167a' '7ef6de58240e7aad389a0b13d91b1cf6'\ - 'a0ecb7f476cb71c0c1ac90d349fc7695') +depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' + 'libxvmc' 'libavc1394' 'libdc1394' 'libiec61883' 'perl-net-upnp' + 'perl-time-format') +backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt usr/share/mythtv/is.xmlusr/share/mythtv/media_settings.xml ) +source=(ftp://ftp.knoppmyth.net/R6/sources/${pkgname}-${pkgver}-fixes.tar.bz2 + mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch + smolt_jump.patch pretty gnome_screensaver.patch mpegpspatch + mythbackend.lr mythfrontend.lr) + license=('GPL2') -makedepends=(libgl subversion) +makedepends=(libgl subversion python perl) groups=('pvr') url="http://www.mythtv.org/" install=mythtv.install build() { - cd $startdir/src/${pkgname}-${pkgver} || return 1 + cd $startdir/src/${pkgname}-${pkgver} || return 1 + svn update + +#apply patches + patch -p0 < ../myththemedmenu.cpp.patch + patch -p0 < ../myththemedmenu.h.patch +# patch -p0 < ../pop_be_restart.h.patch +# patch -p0 < ../pop_be_restart.cpp.patch + patch -p0 < ../smolt_jump.patch +# patch -p0 < ../2.6.28_dvb_api_version.diff + patch -p0 < ../gnome_screensaver.patch +# cd libs/libavformat +# patch -p0 < $startdir/src/mpegpspatch +# cd - + . /etc/profile.d/qt3.sh # use QT3 qmake @@ -33,10 +43,10 @@ build() { ./configure --prefix=/usr --cpu=${ARCH} --enable-mmx --enable-audio-oss \ --enable-audio-alsa --enable-dvb --enable-lirc --enable-joystick-menu \ - --disable-firewire --enable-v4l --enable-ivtv --enable-dvb \ - --dvb-path=/usr/include/linux/dvb --enable-xvmc --disable-ffmpeg \ + --enable-firewire --enable-v4l --enable-ivtv --enable-dvb \ + --dvb-path=/usr/include --enable-xvmc --disable-ffmpeg \ --enable-xvmc-pro --enable-xvmc-vld --enable-opengl-vsync \ - --disable-audio-jack --disable-audio-arts || return 1 + --disable-audio-jack --disable-audio-arts --disable-directfb || return 1 # build #needs the subversion program @@ -58,13 +68,31 @@ build() { install -D -m0755 ../mythbackend $startdir/pkg/etc/rc.d/mythbackend \ || return 1 cp -r docs $startdir/pkg/usr/share/mythtv/ || return 1 - cp ../QUICKSTART.archlinux $startdir/pkg/usr/share/mythtv/ \ - || return 1 + # cp ../QUICKSTART.archlinux $startdir/pkg/usr/share/mythtv/ \ +# || return 1 # install contrib mkdir -p $startdir/pkg/usr/share/mythtv/contrib || return 1 - install -m0755 contrib/* $startdir/pkg/usr/share/mythtv/contrib + rsync -a --exclude=.svn --exclude=*~ contrib $startdir/pkg/usr/share/mythtv/ +# cp -rap contrib $startdir/pkg/usr/share/mythtv/contrib + #install -m0755 contrib/* $startdir/pkg/usr/share/mythtv/contrib # set suid on mythfrontend - chmod a+s $startdir/pkg/usr/bin/mythfrontend + #chmod a+s $startdir/pkg/usr/bin/mythfrontend + +#Patch the xml LinHES style + cp -r $startdir/menu-xml/*.xml $startdir/pkg/usr/share/mythtv + cd $startdir/pkg/usr/share/mythtv + patch -Np0 < $startdir/menu-xml/mainmenu.xml.patch || return 1 + patch -Np0 < $startdir/menu-xml/optical_menu.xml.patch || return 1 + patch -Np0 < $startdir/menu-xml/library.xml.patch || return 1 + patch -Np0 < $startdir/menu-xml/util_menu.xml.patch || return 1 + +#Make log dir + mkdir -p $startdir/pkg/var/log/mythtv + chown 1000.1000 $startdir/pkg/var/log/mythtv + mkdir -p $startdir/pkg/etc/cron.hourly + install -m0755 $startdir/src/pretty $startdir/pkg/etc/cron.hourly/ + mkdir -p $startdir/pkg/etc/logrotate.d/ + cp $startdir/src/*.lr $startdir/pkg/etc/logrotate.d } diff --git a/abs/core/mythtv/stable/mythtv/gnome_screensaver.patch b/abs/core/mythtv/stable/mythtv/gnome_screensaver.patch new file mode 100644 index 0000000..6da37be --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/gnome_screensaver.patch @@ -0,0 +1,18 @@ +--- libs/libmyth/screensaver-x11.cpp.orig 2009-03-15 19:10:47.000000000 +0000 ++++ libs/libmyth/screensaver-x11.cpp 2009-03-15 19:10:56.000000000 +0000 +@@ -143,9 +143,13 @@ + (m_last_deactivated.secsTo(current_time) > 30)) + { + if (m_xscreensaverRunning) ++ { + myth_system("xscreensaver-command -deactivate >&- 2>&- &"); +- else if (m_gscreensaverRunning) +- myth_system("gnome-screensaver-command --poke >&- 2>&- &"); ++ } ++ if (m_gscreensaverRunning) ++ { ++ myth_system("gnome-screensaver-command -dp &"); ++ } + m_last_deactivated = current_time; + } + } diff --git a/abs/core/mythtv/stable/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/stable/mythtv/menu-xml/HOST_SETTINGS.xml new file mode 100644 index 0000000..ac52497 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/menu-xml/HOST_SETTINGS.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/mythtv/stable/mythtv/menu-xml/is.xml b/abs/core/mythtv/stable/mythtv/menu-xml/is.xml new file mode 100644 index 0000000..88b7e6b --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/menu-xml/is.xml @@ -0,0 +1,3 @@ + + + diff --git a/abs/core/mythtv/stable/mythtv/menu-xml/library.xml.patch b/abs/core/mythtv/stable/mythtv/menu-xml/library.xml.patch new file mode 100644 index 0000000..749e1e7 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/menu-xml/library.xml.patch @@ -0,0 +1,15 @@ +--- library.xml.orig 2009-03-15 19:20:15.000000000 +0000 ++++ library.xml 2009-03-15 19:20:44.000000000 +0000 +@@ -119,10 +119,8 @@ + + + + + + + + + + + + + + + diff --git a/abs/core/mythtv/stable/mythtv/menu-xml/mainmenu.xml.patch b/abs/core/mythtv/stable/mythtv/menu-xml/mainmenu.xml.patch new file mode 100644 index 0000000..a299325 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/menu-xml/mainmenu.xml.patch @@ -0,0 +1,39 @@ +--- mainmenu.xml.orig 2009-01-09 02:45:07.000000000 +0000 ++++ mainmenu.xml 2009-01-22 08:04:28.000000000 +0000 +@@ -158,34 +158,8 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/mythtv/stable/mythtv/mpegpspatch b/abs/core/mythtv/stable/mythtv/mpegpspatch new file mode 100644 index 0000000..eed08eb --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/mpegpspatch @@ -0,0 +1,66 @@ +--- orig_mpeg.c 2009-03-23 11:26:22.000000000 -0700 ++++ mpeg.c 2009-03-23 11:28:09.000000000 -0700 +@@ -66,35 +66,40 @@ + + static int mpegps_probe(AVProbeData *p) + { ++ uint32_t code= -1; ++ int sys=0, pspack=0, priv1=0, vid=0, audio=0, invalid=0; + int i; +- int size= FFMIN(2048, p->buf_size); +- uint32_t code=0xFF; ++ int score=0; + +- /* we search the first start code. If it is a packet start code, +- then we decide it is mpeg ps. We do not send highest value to +- give a chance to mpegts */ +- /* NOTE: the search range was restricted to avoid too many false +- detections */ +- +- for (i = 0; i < size; i++) { +- code = (code << 8) | p->buf[i]; ++ for(i=0; ibuf_size; i++){ ++ code = (code<<8) + p->buf[i]; + if ((code & 0xffffff00) == 0x100) { +- if (code == PACK_START_CODE || +- code == SYSTEM_HEADER_START_CODE || +- (code >= 0x1e0 && code <= 0x1ef) || +- (code >= 0x1c0 && code <= 0x1df) || +- code == PRIVATE_STREAM_2 || +- code == PROGRAM_STREAM_MAP || +- code == PRIVATE_STREAM_1 || +- code == PADDING_STREAM || +- code >= 0x100 && code <= 0x1b0) +- return AVPROBE_SCORE_MAX - 2; +- else +- return 0; ++ int pes= check_pes(p->buf+i, p->buf+p->buf_size); ++ ++ if(code == SYSTEM_HEADER_START_CODE) sys++; ++ else if(code == PRIVATE_STREAM_1) priv1++; ++ else if(code == PACK_START_CODE) pspack++; ++ else if((code & 0xf0) == VIDEO_ID && pes) vid++; ++ else if((code & 0xe0) == AUDIO_ID && pes) audio++; ++ ++ else if((code & 0xf0) == VIDEO_ID && !pes) invalid++; ++ else if((code & 0xe0) == AUDIO_ID && !pes) invalid++; + } + } + +- return 0; ++ if(vid+audio > invalid) /* invalid VDR files nd short PES streams */ ++ score= AVPROBE_SCORE_MAX/4; ++ ++//av_log(NULL, AV_LOG_ERROR, "%d %d %d %d %d len:%d\n", sys, priv1, pspack,vid, audio, p->buf_size); ++ if(sys>invalid && sys*9 <= pspack*10) ++ return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg ++ if(priv1 + vid + audio > invalid && (priv1+vid+audio)*9 <= pspack*10) ++ return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg ++ if((!!vid ^ !!audio) && (audio > 4 || vid > 1) && !sys && !pspack && p->buf_size>2048) /* PES stream */ ++ return AVPROBE_SCORE_MAX/2+2; ++ ++ //02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1 ++ return score; + } + + typedef struct MpegDemuxContext { diff --git a/abs/core/mythtv/stable/mythtv/mythbackend.lr b/abs/core/mythtv/stable/mythtv/mythbackend.lr new file mode 100644 index 0000000..4f218bc --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/mythbackend.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/mythbackend.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/core/mythtv/stable/mythtv/mythfrontend.lr b/abs/core/mythtv/stable/mythtv/mythfrontend.lr new file mode 100644 index 0000000..1580533 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/mythfrontend.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/mythfrontend.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/core/mythtv/stable/mythtv/myththemedmenu.cpp.patch b/abs/core/mythtv/stable/mythtv/myththemedmenu.cpp.patch new file mode 100644 index 0000000..e5c57ef --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/myththemedmenu.cpp.patch @@ -0,0 +1,125 @@ +--- libs/libmythui/myththemedmenu.cpp.orig 2008-01-31 15:26:38.000000000 +0000 ++++ libs/libmythui/myththemedmenu.cpp 2008-02-07 22:24:27.000000000 +0000 +@@ -2102,6 +2102,10 @@ + } + lastbutton = NULL; + } ++ else if (action == "MENU") ++ { ++ parent->doMenu(); ++ } + else if (action == "EJECT") + { + myth_eject(); +@@ -2482,6 +2486,8 @@ + + if (d->foundtheme) + d->parseMenu(menufile); ++ ++ m_menuPopup = NULL; + } + + MythThemedMenu::~MythThemedMenu(void) +@@ -2592,3 +2598,102 @@ + MythScreenType::aboutToShow(); + d->updateLCD(); + } ++void MythThemedMenu::doMenu() ++{ ++ int allowsd = gContext->GetNumSetting("AllowQuitShutdown"); ++ if (m_menuPopup) ++ return; ++ QString label = "System Menu"; ++ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); ++ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup"); ++ if (m_menuPopup->Create()) ++ mainStack->AddScreen(m_menuPopup); ++ ++ //changed line to always show shutdown/reboot ++ if ( allowsd != 10 && allowsd !=14 ) ++ { ++ m_menuPopup->SetReturnEvent(this,"popmenu_exit"); ++ m_menuPopup->AddButton("Power off"); ++ m_menuPopup->AddButton("Reboot"); ++ m_menuPopup->AddButton("About"); ++ m_menuPopup->AddButton("Cancel"); ++ } ++ 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(IO_ReadOnly | IO_Translate) ) ++ { ++ 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(QCustomEvent *event) ++{ ++ if (event->type() == kMythDialogBoxCompletionEventType) ++ { ++ DialogCompletionEvent *dce = ++ dynamic_cast(event); ++ ++ QString resultid= dce->GetId(); ++ int buttonnum = dce->GetResult(); ++ if (resultid == "popmenu_exit") ++ { ++ if (buttonnum == 0) ++ { ++ QString halt_cmd = gContext->GetSetting("HaltCommand", ++ "sudo /sbin/halt -p"); ++ if (!halt_cmd.isEmpty()) ++ system(halt_cmd.ascii()); ++ } ++ ++ if (buttonnum == 1) ++ { ++ QString reboot_cmd = gContext->GetSetting("RebootCommand", ++ "sudo /sbin/reboot"); ++ if (!reboot_cmd.isEmpty()) ++ system(reboot_cmd.ascii()); ++ } ++ ++ if (buttonnum == 2) ++ { ++ aboutScreen(); ++ } ++ } ++ ++ if (resultid == "popmenu_noexit") ++ { ++ if (buttonnum == 0) ++ aboutScreen(); ++ } ++ ++ m_menuPopup = NULL; ++ } ++} diff --git a/abs/core/mythtv/stable/mythtv/myththemedmenu.h.patch b/abs/core/mythtv/stable/mythtv/myththemedmenu.h.patch new file mode 100644 index 0000000..9744b11 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/myththemedmenu.h.patch @@ -0,0 +1,25 @@ +--- libs/libmythui/myththemedmenu.h.orig 2008-01-31 15:26:45.000000000 +0000 ++++ libs/libmythui/myththemedmenu.h 2008-02-07 21:00:22.000000000 +0000 +@@ -2,6 +2,7 @@ + #define MYTHTHEMEDMENU_H_ + + #include "mythscreentype.h" ++#include "mythdialogbox.h" + + class MythMainWindow; + class MythThemedMenuPrivate; +@@ -26,8 +27,14 @@ + + void ReloadTheme(void); + void ReloadExitKey(void); ++ + virtual void aboutToShow(void); + ++ void doMenu(); ++ void aboutScreen(); ++ MythDialogBox *m_menuPopup; ++ void customEvent(QCustomEvent *event); ++ + protected: + virtual bool keyPressEvent(QKeyEvent *e); + virtual void gestureEvent(MythUIType *origtype, MythGestureEvent *ge); diff --git a/abs/core/mythtv/stable/mythtv/mythtv.install b/abs/core/mythtv/stable/mythtv/mythtv.install index c460f19..db1da94 100644 --- a/abs/core/mythtv/stable/mythtv/mythtv.install +++ b/abs/core/mythtv/stable/mythtv/mythtv.install @@ -1,11 +1,53 @@ # arg 1: the new package version post_install() { - echo "See \"MythTV\" on the Archlinux Wiki for installation information - Extensive!!" + if [ ! -d /var/log/mythtv ] + then + mkdir -p /var/log/mythv + chown -R mythtv /var/log/mythtv + echo "---" > /var/log/mythtv/mythbackend.log + chown mythtv /var/log/mythtv/mythbackend.log + fi + if [ -e /tmp/is.xml ] + then + cp /tmp/is.xml /usr/share/mythtv/is.xml + fi + + if [ -e /tmp/media_settings.xml ] + then + cp /tmp/media_settings.xml /usr/share/mythtv/media_settings.xml + fi +} +pre_upgrade() { + if [ -e /usr/share/mythtv/is.xml ] + then + cp /usr/share/mythtv/is.xml /tmp + fi + + if [ -e /usr/share/mythtv/media_settings.xml ] + then + cp /usr/share/mythtv/media_settings.xml /tmp + fi +} + +post_upgrade() { + cp /tmp/is.xml /usr/share/mythtv/ + cp /tmp/media_settings.xml /usr/share/mythtv/ + if [ ! -d /var/log/mythtv ] + then + mkdir -p /var/log/mythv + chown -R mythtv /var/log/mythtv + fi + chown root.mythtv /etc/systemconfig + chmod 664 /etc/systemconfig +} +pre_remove () { + pre_upgrade } # arg 1: the old package version post_remove() { - echo -e "NOTE: mysql database was not removed. To remove run:\nmysql -u root -e 'drop database mythconverg;'" + /bin/true + } op=$1 diff --git a/abs/core/mythtv/stable/mythtv/pretty b/abs/core/mythtv/stable/mythtv/pretty new file mode 100644 index 0000000..e47aaec --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/pretty @@ -0,0 +1,2 @@ +#!/bin/bash +su mythtv -c "perl /usr/share/mythtv/contrib/mythrename.pl --link /myth/pretty" diff --git a/abs/core/mythtv/stable/mythtv/smolt_jump.patch b/abs/core/mythtv/stable/mythtv/smolt_jump.patch new file mode 100644 index 0000000..696be80 --- /dev/null +++ b/abs/core/mythtv/stable/mythtv/smolt_jump.patch @@ -0,0 +1,9 @@ +--- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-23 23:00:25.000000000 +0000 ++++ programs/mythfrontend/networkcontrol.cpp 2008-03-23 23:01:33.000000000 +0000 +@@ -81,6 +81,7 @@ + jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; + jumpMap["zoneminderevents"] = "ZoneMinder Events"; ++ jumpMap["mythsmolt"] = "MythSmolt"; + + // These jump point names match the (lowercased) locations from gContext + jumpMap["channelrecpriority"] = "Channel Recording Priorities"; diff --git a/abs/core/mythtv/stable/mythvideo/PKGBUILD b/abs/core/mythtv/stable/mythvideo/PKGBUILD index 21f2a22..a233549 100644 --- a/abs/core/mythtv/stable/mythvideo/PKGBUILD +++ b/abs/core/mythtv/stable/mythvideo/PKGBUILD @@ -4,20 +4,24 @@ pkgname=mythvideo pkgver=0.21 -pkgrel=2 +pkgrel=9 pkgdesc="Video playback and browsing plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'mplayer' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2"\ - mtd) -md5sums=('af20a78ac66719feddf9a39f1a799ded' '476c12ba074794ad7f4ae092bdf949d6') + "ftp://ftp.knoppmyth.net/R6/sources/tmdb.tar.bz2" \ + mtd mythvideo-6338-use_tmdb_in_fixes.patch) +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe' '48cff8f7095586c85ec70989746736b4' '476c12ba074794ad7f4ae092bdf949d6' '4bd38d054dfc4b0b1724f398d38676f7') replaces=('mythdvd') groups=('mythtv-extras') +install=mythvideo.install build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins + svn update + patch -p1 < ../mythvideo-6338-use_tmdb_in_fixes.patch . /etc/profile.d/qt3.sh # use QT3 qmake @@ -31,6 +35,7 @@ build() { make INSTALL_ROOT=$startdir/pkg install install -D -m755 ../mtd $startdir/pkg/etc/rc.d/mtd + cp -Rv $startdir/src/tmdb/* $startdir/pkg/usr/share/mythtv/mythvideo/scripts/ } diff --git a/abs/core/mythtv/stable/mythvideo/mythvideo-6338-use_tmdb_in_fixes.patch b/abs/core/mythtv/stable/mythvideo/mythvideo-6338-use_tmdb_in_fixes.patch new file mode 100644 index 0000000..a5a182d --- /dev/null +++ b/abs/core/mythtv/stable/mythvideo/mythvideo-6338-use_tmdb_in_fixes.patch @@ -0,0 +1,151 @@ +Index: mythplugins/mythvideo/mythvideo/videomanager.cpp +=================================================================== +--- mythplugins.orig/mythvideo/mythvideo/videomanager.cpp 2009-03-09 22:39:40.000000000 -0400 ++++ mythplugins/mythvideo/mythvideo/videomanager.cpp 2009-03-09 23:04:55.000000000 -0400 +@@ -1535,6 +1535,56 @@ + } + } + ++ // Since there's no DB update to remove imdb.pl settings in -fixes, ++ // check for the old imdb.pl command and, if it's the old default, ++ // use tmdb.pl, instead (if available in the same location or the ++ // scripts dir)). Checks to see if cmd ends with end (the end of the ++ // old default imdb.pl command line). If so, it checks for tmdb, and ++ // if it exists in either the same location as specified in cmd or in ++ // the MythVideo scripts directory, replace end with "/tmdb.pl " + arg ++ QString UpdateCommandForTMDB(const QString cmd, const QString end, ++ const QString arg) ++ { ++ QString updated_cmd = cmd; ++ if (updated_cmd.endsWith(end)) ++ { ++ QString script_path = updated_cmd; ++ script_path.truncate(updated_cmd.findRev(end, ++ 0 - end.length())); ++ QString tmdb_path(script_path + "/tmdb.pl"); ++ if (QFile::exists(tmdb_path)) ++ { ++ VERBOSE(VB_GENERAL, QString("Overriding old default " ++ "grabber script command line. " ++ "Using tmdb.pl, instead.")); ++ updated_cmd = tmdb_path + " " + arg; ++ } ++ else ++ { ++ // It's possible the user has a non-default imdb.pl ++ // command-line--including path location--in the setting, ++ // so check to see if we've already checked the mythvideo ++ // scripts directory ++ QString def_path = QDir::cleanDirPath(QString("%1/%2") ++ .arg(gContext->GetShareDir()) ++ .arg("mythvideo/scripts")); ++ if (script_path != def_path) ++ { ++ tmdb_path = def_path + "/tmdb.pl"; ++ if (QFile::exists(tmdb_path)) ++ { ++ VERBOSE(VB_GENERAL, QString("Overriding old " ++ "default grabber script command line. " ++ "Using tmdb.pl, instead.")); ++ updated_cmd = tmdb_path + " " + arg; ++ } ++ } ++ } ++ } ++ ++ return updated_cmd; ++ } ++ + virtual void OnExecDone(bool normal_exit, const QStringList &out, + const QStringList &err) = 0; + +@@ -1624,9 +1674,16 @@ + + QString def_cmd = QDir::cleanDirPath(QString("%1/%2") + .arg(gContext->GetShareDir()) +- .arg("mythvideo/scripts/imdb.pl -M tv=no;video=no")); ++ .arg("mythvideo/scripts/tmdb.pl -M")); + +- QString cmd = gContext->GetSetting("MovieListCommandLine", def_cmd); ++ // Since there's no DB update to remove imdb.pl settings in -fixes, ++ // check for the old imdb.pl command and, if it's the old default, ++ // use tmdb.pl, instead (if available in the same location or the ++ // scripts dir)) ++ QString cmd = UpdateCommandForTMDB( ++ gContext->GetSetting("MovieListCommandLine", ++ def_cmd), ++ "/imdb.pl -M tv=no;video=no", "-M"); + + QStringList args; + args += title; +@@ -1682,9 +1739,15 @@ + + const QString def_cmd = QDir::cleanDirPath(QString("%1/%2") + .arg(gContext->GetShareDir()) +- .arg("mythvideo/scripts/imdb.pl -D")); +- const QString cmd = gContext->GetSetting("MovieDataCommandLine", +- def_cmd); ++ .arg("mythvideo/scripts/tmdb.pl -D")); ++ // Since there's no DB update to remove imdb.pl settings in -fixes, ++ // check for the old imdb.pl command and, if it's the old default, ++ // use tmdb.pl, instead (if available in the same location or the ++ // scripts dir)) ++ const QString cmd = UpdateCommandForTMDB( ++ gContext->GetSetting("MovieDataCommandLine", ++ def_cmd), ++ "/imdb.pl -D", "-D"); + + StartRun(cmd, video_uid, "Video Data Query"); + } +@@ -1726,9 +1789,16 @@ + const QString default_cmd = + QDir::cleanDirPath(QString("%1/%2") + .arg(gContext->GetShareDir()) +- .arg("mythvideo/scripts/imdb.pl -P")); +- const QString cmd = gContext->GetSetting("MoviePosterCommandLine", +- default_cmd); ++ .arg("mythvideo/scripts/tmdb.pl -P")); ++ // Since there's no DB update to remove imdb.pl settings in -fixes, ++ // check for the old imdb.pl command and, if it's the old default, ++ // use tmdb.pl, instead (if available in the same location or the ++ // scripts dir)) ++ const QString cmd = UpdateCommandForTMDB( ++ gContext->GetSetting("MoviePosterCommandLine", ++ default_cmd), ++ "/imdb.pl -P", "-P"); ++ + StartRun(cmd, video_uid, "Poster Query"); + } + +Index: mythplugins/mythvideo/mythvideo/globalsettings.cpp +=================================================================== +--- mythplugins.orig/mythvideo/mythvideo/globalsettings.cpp 2009-03-09 22:39:40.000000000 -0400 ++++ mythplugins/mythvideo/mythvideo/globalsettings.cpp 2009-03-09 22:42:47.000000000 -0400 +@@ -210,8 +210,7 @@ + { + HostLineEdit *gc = new HostLineEdit("MovieListCommandLine"); + gc->setLabel(QObject::tr("Command to search for movie listings")); +- gc->setValue(gContext->GetShareDir() + "mythvideo/scripts/imdb.pl " + +- "-M tv=no;video=no"); ++ gc->setValue(gContext->GetShareDir() + "mythvideo/scripts/tmdb.pl -M"); + gc->setHelpText(QObject::tr("This command must be " + "executable by the user running MythVideo.")); + return gc; +@@ -221,7 +220,7 @@ + { + HostLineEdit *gc = new HostLineEdit("MoviePosterCommandLine"); + gc->setLabel(QObject::tr("Command to search for movie posters")); +- gc->setValue(gContext->GetShareDir() + "mythvideo/scripts/imdb.pl -P"); ++ gc->setValue(gContext->GetShareDir() + "mythvideo/scripts/tmdb.pl -P"); + gc->setHelpText(QObject::tr("This command must be " + "executable by the user running MythVideo.")); + return gc; +@@ -231,7 +230,7 @@ + { + HostLineEdit *gc = new HostLineEdit("MovieDataCommandLine"); + gc->setLabel(QObject::tr("Command to extract data for movies")); +- gc->setValue(gContext->GetShareDir() + "mythvideo/scripts/imdb.pl -D"); ++ gc->setValue(gContext->GetShareDir() + "mythvideo/scripts/tmdb.pl -D"); + gc->setHelpText(QObject::tr("This command must be " + "executable by the user running MythVideo.")); + return gc; diff --git a/abs/core/mythtv/stable/mythvideo/mythvideo.install b/abs/core/mythtv/stable/mythvideo/mythvideo.install new file mode 100644 index 0000000..a06777d --- /dev/null +++ b/abs/core/mythtv/stable/mythvideo/mythvideo.install @@ -0,0 +1,20 @@ +# arg 1: the new package version +post_install() { + ln -s /myth/video /data/srv/httpd/htdocs/mythweb/data/video + ln -s /myth/video/.covers /data/srv/httpd/htdocs/mythweb/data/video_covers +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + rm -fr /data/srv/httpd/htdocs/mythweb/data/video + rm -fr /data/srv/httpd/htdocs/mythweb/data/video_covers +} + +op=$1 +shift +$op $* diff --git a/abs/core/mythtv/stable/mythweather/PKGBUILD b/abs/core/mythtv/stable/mythweather/PKGBUILD index ce2894a..201ea5d 100644 --- a/abs/core/mythtv/stable/mythweather/PKGBUILD +++ b/abs/core/mythtv/stable/mythweather/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythweather pkgver=0.21 -pkgrel=1 +pkgrel=3 pkgdesc="Weather checking plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'wget') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core/mythtv/stable/mythweb/PKGBUILD b/abs/core/mythtv/stable/mythweb/PKGBUILD index e01323c..20e9e3d 100644 --- a/abs/core/mythtv/stable/mythweb/PKGBUILD +++ b/abs/core/mythtv/stable/mythweb/PKGBUILD @@ -1,27 +1,39 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: Juergen Hoetzel -# Contributor: Philipp Giebel - pkgname=mythweb pkgver=0.21 -pkgrel=1 +pkgrel=20 pkgdesc="Web interface for MythTV's backend" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') -depends=("mythtv>=${pkgver}" 'apache' 'php') +depends=("mythtv>=${pkgver}" 'lighttpd' 'php' 'local-website') install=mythweb.install -source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2" wiiweb.tar.bz2 transcoders.patch) +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') groups=('mythtv-extras') +DOCROOT=/data/srv/httpd/htdocs/mythweb build() { - mkdir -p $startdir/pkg/srv/www/mythweb/{image_cache,php_sessions} - cp -r $startdir/src/mythplugins-$pkgver/$pkgname/* $startdir/pkg/srv/www/mythweb - cp $startdir/src/mythplugins-$pkgver/$pkgname/data/.htaccess $startdir/pkg/srv/www/mythweb - rm $startdir/pkg/srv/www/mythweb/README - chown -R nobody:nobody $startdir/pkg/srv/www/mythweb - chmod g+rw $startdir/pkg/srv/www/mythweb/{image_cache,php_sessions,data} + cd $startdir/src/mythplugins/mythweb + svn update + mkdir -p $startdir/pkg/$DOCROOT/{image_cache,php_sessions} +#apply gallery patches here +# cd $startdir/src/mythplugins-$pkgver/$pkgname/ +# patch -p0 < $startdir/patch/mythweb_gallery_updated1.diff +# patch -p2 < $startdir/patch/2923-mythweb-gallery-English_GB_lang.diff +# tar -zxvf $startdir/patch/icons.tar.gz +### + + # Workaround for LIGHTTPD bug in mythweb.pl (affects DB queries) + cd $startdir/src/mythplugins/$pkgname/ + patch -p0 < $startdir/patch/mythweb.pl.diff + patch -p1 < $startdir/transcoders.patch + + cp -r $startdir/src/mythplugins/$pkgname/* $startdir/pkg/$DOCROOT +# cp $startdir/src/mythplugins-$pkgver/$pkgname/data/.htaccess $startdir/pkg/$DOCROOT + rm $startdir/pkg/srv/$DOCROOT/README + tar xjvf $srcdir/wiiweb.tar.bz2 -C $pkgdir/$DOCROOT + chown -R http:users $startdir/pkg/$DOCROOT + chmod g+rw $startdir/pkg/$DOCROOT/{image_cache,php_sessions,data} } diff --git a/abs/core/mythtv/stable/mythweb/mythweb.install b/abs/core/mythtv/stable/mythweb/mythweb.install index 470cbd1..a2aa1bd 100644 --- a/abs/core/mythtv/stable/mythweb/mythweb.install +++ b/abs/core/mythtv/stable/mythweb/mythweb.install @@ -1,10 +1,13 @@ post_install() { - echo "You must create a symlink from /home/httpd/html/mythweb/video_dir" - echo "to your MythTV recordings directory. Don't forget to change the" - echo "permissions so that the webserver can read those files and create" - echo "thumbnails." + if [ ! -e /data/srv/httpd/htdocs/mythweb/data/video ] + then + ln -s /myth/video /data/srv/httpd/htdocs/mythweb/data/video + fi } +post_upgrade(){ + post_install $1 +} op=$1 shift $op $* diff --git a/abs/core/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff b/abs/core/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff new file mode 100644 index 0000000..103fb2f --- /dev/null +++ b/abs/core/mythtv/stable/mythweb/patch/2923-mythweb-gallery-English_GB_lang.diff @@ -0,0 +1,102 @@ +Index: mythplugins/mythweb/modules/_shared/lang/English_GB.lang +=================================================================== +--- mythplugins/mythweb/modules/_shared/lang/English_GB.lang (revision 16505) ++++ mythplugins/mythweb/modules/_shared/lang/English_GB.lang (working copy) +@@ -154,6 +154,7 @@ + "Current Conditions" + "Current Recording" + "Current recordings" ++"Current path" + "Currently Browsing: $1" + "Currently Recording: Edit" + "Custom" +@@ -169,6 +170,7 @@ + Deaf Signed + "Default" + "Default MythVideo View" ++"Default view size" + "Delete" + "delete" + "Delete $1" +@@ -247,6 +249,8 @@ + "freqid" + "Friday" + "Frontends" ++"Gallery" ++"Gallery image path" + "generic_date" + %a %b %e, %Y + "generic_time" +@@ -270,12 +274,14 @@ + "Hide" + "High" + "Home" ++"Horizontal screen resolution" + "Host" + "Hosted by" + "Hour" + "Hour Format" + "hue" + "Humidity" ++"Images per page" + "IMDB" + "IMDBTYPE" + "Inactive" +@@ -334,6 +340,8 @@ + "length" + "Length" + "Length (min)" ++"List of allowed image formats" ++"List of available view sizes" + "Listing "Jump to"" + "Listing Time Key" + "Listings" +@@ -383,6 +391,7 @@ + "mythvideo.sort_ignores_case" + "MythWeb" + "MythWeb Defaults" ++"MythWeb Gallery" + "MythWeb Global Defaults" + "MythWeb Session" + "MythWeb Skin" +@@ -413,6 +422,7 @@ + "Number of shows" + "Number of Songs" + "Number of timeslots" ++"of" + "Only display favourite channels" + "Only match commercial-free channels" + "Only match HD programs" +@@ -429,6 +439,7 @@ + "Past Month" + "Past Week" + "Past Year" ++"Path where the thumbnails are" + "Paused" + "Pending" + "People" +@@ -688,6 +699,7 @@ + "Subtitles Available" + "Sunday" + "Surround Sound" ++"Switch view mode" + "Tab" + "The requested recording schedule has been deleted." + "There are no items in this Playlist!" +@@ -705,6 +717,7 @@ + "Title Match" + "Title search" + "Title Search" ++"to" + "Today" + "Tomorrow" + "Too Many" +@@ -791,6 +804,8 @@ + "Wednesday" + "welcome: backend_log" + Show the server logs. ++"welcome: gallery" ++ Browse your picture collection. + "welcome: music" + Browse your music collection. + "welcome: remote" diff --git a/abs/core/mythtv/stable/mythweb/patch/icons.tar.gz b/abs/core/mythtv/stable/mythweb/patch/icons.tar.gz new file mode 100644 index 0000000..691d28e Binary files /dev/null and b/abs/core/mythtv/stable/mythweb/patch/icons.tar.gz differ diff --git a/abs/core/mythtv/stable/mythweb/patch/mythweb.pl.diff b/abs/core/mythtv/stable/mythweb/patch/mythweb.pl.diff new file mode 100644 index 0000000..6dcbf99 --- /dev/null +++ b/abs/core/mythtv/stable/mythweb/patch/mythweb.pl.diff @@ -0,0 +1,23 @@ +*** mythweb-unpatched.pl 2009-06-02 14:55:24.011861459 -0400 +--- mythweb.pl 2009-06-02 14:56:24.386441304 -0400 +*************** +*** 49,57 **** + + # Connect to the database + END { $dbh->disconnect() if ($dbh); } +! our $dbh = DBI->connect("dbi:mysql:database=$ENV{'db_name'}:host=$ENV{'db_server'}", +! $ENV{'db_login'}, +! $ENV{'db_password'}); + unless ($dbh) { + print header(), + "Cannot connect to database: $!\n\n"; +--- 49,57 ---- + + # Connect to the database + END { $dbh->disconnect() if ($dbh); } +! our $dbh = DBI->connect("dbi:mysql:database=$ENV{'DB_NAME'}:host=$ENV{'DB_SERVER'}", +! $ENV{'DB_LOGIN'}, +! $ENV{'DB_PASSWORD'}); + unless ($dbh) { + print header(), + "Cannot connect to database: $!\n\n"; diff --git a/abs/core/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff b/abs/core/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff new file mode 100644 index 0000000..f683b17 --- /dev/null +++ b/abs/core/mythtv/stable/mythweb/patch/mythweb_gallery_updated1.diff @@ -0,0 +1,1657 @@ +diff -Naur ../mythweb-orig/modules/gallery/handler.php ./modules/gallery/handler.php +--- ../mythweb-orig/modules/gallery/handler.php 1969-12-31 19:00:00.000000000 -0500 ++++ ./modules/gallery/handler.php 2007-08-20 22:33:02.000000000 -0400 +@@ -0,0 +1,35 @@ ++config['image_path'] = $_SESSION['gallery']['image_path']; ++ $this->config['cache_path'] = $_SESSION['gallery']['cache_path']; ++ $this->config['default_viewsize'] = $_SESSION['gallery']['default_viewsize']; ++ $this->config['screen_width'] = $_SESSION['gallery']['screen_width']; ++ $this->config['viewsizes'] = $_SESSION['gallery']['viewsizes']; ++ $this->config['valid_image_files'] = $_SESSION['gallery']['valid_image_files']; ++ ++ } ++ ++ // ======================================================= ++ function start() { ++ ++ // the current selected directory where the cached images are stored ++ $current_path = $this->getCurrentImagePath(); ++ // the path to the real images ++ $image_path = $this->config['image_path']; ++ // the filename of a selected image ++ $image_name = $this->getImageName(); ++ // the current viewsize mode ++ $image_viewsize = $this->getImageViewSize(); ++ // get the image index for the viewsize medium ++ $image_index = $this->getImageIndex(); ++ // get the contents of the folders ++ $folderList = $this->getFolderList( $current_path ); ++ // check what kind of images should be displayed ++ if ($image_viewsize == 'fullsize') { ++ // create the images if there are not yet in the directory ++ $this->makeImages( $current_path, $folderList, $image_viewsize, $image_index ); ++ // display the big image ++ $this->showFullsizeImage( $current_path, $folderList, $image_index ); ++ // there is nothing else to do ++ exit; ++ } ++ // show the horizontal navigation bar ++ $this->showGalleryHeader( $current_path, $image_viewsize, $image_index ); ++ // check if the thumbnail directory is there, if not create it ++ $this->makeDirectory( $current_path ); ++ // create the images if there are not yet in the directory ++ $this->makeImages( $current_path, $folderList, $image_viewsize, $image_index ); ++ echo ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ '
    '."\n"; ++ $this->showFolderTree( $current_path, $folderList ); ++ echo ''."\n"; ++ if ($this->onlyDirectoriesAvailable( $current_path, $folderList, $image_viewsize, $image_index ) == false ) { ++ echo ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ '
    '."\n"; ++ $this->showNavigation( $current_path, $folderList, $image_viewsize, $image_index ); ++ echo '
    '."\n"; ++ $this->showImages( $current_path, $folderList, $image_viewsize, $image_index ); ++ echo '
    '."\n"; ++ } else { ++ echo ' '; ++ } ++ echo '
    '."\n"; ++ } ++ ++ // ======================================================= ++ function getViewSizesList() { ++ $viewsizesList = explode(';',preg_replace('/ /','',$this->config['viewsizes'])); ++ return $viewsizesList; ++ } ++ ++ ++ // ======================================================= ++ function getCurrentImagePath() { ++ switch ($_SERVER['REQUEST_METHOD']) { ++ case 'GET': ++ $current_path = stripslashes($_GET['path']); ++ break; ++ case 'POST': ++ $current_path = stripslashes($_POST['path']); ++ break; ++ } ++ if (!is_dir($current_path) ) { ++ $current_path = $this->config['image_path']; ++ } ++ return $current_path; ++ } ++ ++ // ======================================================= ++ function getImageViewSize() { ++ switch ($_SERVER['REQUEST_METHOD']) { ++ case 'GET': ++ $viewsize = stripslashes($_GET[viewsize]); ++ break; ++ case 'POST': ++ $viewsize = stripslashes($_POST[viewsize]); ++ break; ++ } ++ // check if the given viewsize is one of the viewsizes ++ // specified in the config. fullsize is also needed ++ if (isset($viewsize) && ++ (($viewsize == 'fullsize') || ++ in_array($viewsize, $this->getViewSizesList()))) { ++ return $viewsize; ++ } else { ++ return $this->config['default_viewsize']; ++ } ++ } ++ ++ // ======================================================= ++ function getImageName() { ++ switch ($_SERVER['REQUEST_METHOD']) { ++ case 'GET': ++ $image_name = $_GET['file']; ++ break; ++ case 'POST': ++ $image_name = $_POST['file']; ++ break; ++ } ++ return $image_name; ++ } ++ ++ // ======================================================= ++ function getImageIndex() { ++ if (isset($_GET['index'])) ++ return $_GET['index']; ++ return 1; ++ } ++ ++ ++ // ======================================================= ++ // displays the path of the choosen directories horizontally ++ // so one can navigate back ++ function showGalleryHeader( $current_path, $image_viewsize, $image_index ) { ++ echo ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ '
    '. ++ t('Current path').': '; ++ $folders = explode('/', $current_path); ++ for ($i=1; $i < count($folders); $i++) { ++ echo ''. ++ $folders[$i].''."\n"; ++ // don't show the separators when there are no more subfolders ++ if ($i < (count($folders)-1)) { ++ echo ' / '; ++ } ++ } ++ // display the menu where one can shoose between small and medium images ++ echo ''. ++ t('Switch view mode').':  '. ++ '
    '."\n". ++ ''."\n". ++ ''. ++ ''; ++ echo '
    '."\n"; ++ } ++ ++ // ======================================================= ++ function showFolderTree( $current_path, $folderList ) { ++ ++ // dont go into the directory if there are not subdirs ++ if ($this->getFolderCount( $current_path, $folderList[$i]) == 0) { ++ $current_path = substr($current_path, 0, strrpos($current_path, '/')); ++ $folderList = $this->getFolderList( $current_path ); ++ } ++ // displays the directory tree and the pictures ++ echo ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ '
    '."\n"; ++ // display the directories ++ for ($i = 0; $i < count( $folderList ); $i++) { ++ // only display folders that are not hidden or special ++ if ((is_dir( $current_path.'/'.$folderList[$i] )) && ++ ($folderList[$i] != '..')){ ++ echo '
    '; ++ $link = $this->getFolderLink( $current_path, $folderList[$i] ); ++ $folderCount = $this->getFolderCount( $current_path, $folderList[$i] ); ++ // display the folder as a link and the number of subfolder next to it ++ $this->displayFolderLink( $link, $folderList[$i], $folderCount ); ++ echo '
    '; ++ } ++ } ++ echo '
    '."\n"; ++ } ++ ++ // ======================================================= ++ function getFolderList( $current_path ) { ++ if ($current_path != $this->config['cache_path'] ) { ++ $folderList[] = '..'; ++ } ++ // get the image extensions ++ $extenstionList = explode(',',$this->config['valid_image_files']); ++ // get the directories and files ++ if ($dh = opendir($current_path)) { ++ while (($file = readdir($dh)) !== false) { ++ // only add the file/dir if its a directory or a file ++ // with the specified extension ++ ++ if ((substr($file,0,1) != '.') && ++ (is_dir($current_path.'/'.$file)) || ++ (in_array(strtolower(substr($file,-3)), $extenstionList))) ++ { ++ $folderList[] = $file; ++ } ++ } ++ } ++ // delete the first entry when we are at the image_path ++ // to prevent from going a directory up ++ if ($current_path == $this->config['image_path']) ++ array_shift($folderList); ++ // sort the array alphabetically ++ sort($folderList); ++ return $folderList; ++ } ++ ++ // ======================================================= ++ function getFolderLink( $current_path, $folder ) { ++ $link = ''; ++ return $link; ++ } ++ ++ // ======================================================= ++ function displayFolderLink( $link, $folder, $folderCount ) { ++ echo ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''."\n"; ++ } ++ ++ // ======================================================= ++ function getFolderCount($current_path, $folder) { ++ // dont get the folder count if its the .. directory ++ if ($folder != '..') { ++ return count(glob($current_path.'/'.$folder.'/*',GLOB_ONLYDIR)); ++ } ++ } ++ ++ // ======================================================= ++ // shows how many sub directories the specified folder has ++ function displayFolderCount( $folderCount ) { ++ if ($folderCount == 1) { ++ echo ' ('.$folderCount.')';// '.t('subfolder'); ++ } ++ if ($folderCount > 1) { ++ echo ' ('.$folderCount.')';// '.t('subfolders'); ++ } ++ } ++ ++ ++ // ======================================================= ++ // creates the directory for the thumbnails. the directory ++ // structure is identical to the one of original pictures ++ function makeDirectory( $current_path ) { ++ if (!file_exists( $this->config['cache_path'].$current_path )) { ++ // add the document root to the thumbnail directory ++ // because mkdir works with absolute paths ++ $cache_path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path']; ++ // split the directory string into separate directories ++ $folderList = explode( '/', $current_path ); ++ // go through all folder and create each one ++ for($i=1; $i < count($folderList); $i++) { ++ $cache_path .= '/'.$folderList[$i]; ++ // check if the directory is already there ++ if (!file_exists($cache_path)) { ++ mkdir ($cache_path); ++ } ++ } ++ } ++ } ++ ++ // ======================================================= ++ // check if the images are there, if not create them ++ function makeImages( $current_path, $folderList, $image_viewsize, $image_index ) { ++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path; ++ // use the image_viewsize numbers as a prefix if fullsize is not requested ++ if ( $image_viewsize != fullsize ) { ++ // only so many images will be created that will be displayed on the screen ++ $max_cols = substr($image_viewsize, 0, 1); ++ $max_rows = substr($image_viewsize, 2, 1); ++ $max_number = ($max_cols * $max_rows); ++ // the prefix that will be added to a file so that ++ // different sizes have different names ++ $file_prefix = strtr($image_viewsize, ',','_').'_'; ++ } else { ++ $max_number = 1; ++ // the prefix that will be added to a file so that ++ // different sizes have different names ++ $file_prefix = $image_viewsize.'_'; ++ } ++ // get the amount of subfolders. increase the count in the loop by these ++ // subfolders ++ $folder_count = count(glob($current_path.'/'.$folder.'/*',GLOB_ONLYDIR)); ++ for ($i = $image_index; $i < ($max_number + $image_index + $folder_count); $i++) { ++ // show the picture only if its not hidden and not a directory ++ if (!is_dir( $current_path.'/'.$folderList[$i] )) { ++ // check if there is already a thumbnail available, if not create it ++ if (!file_exists( $path.'/'.$file_prefix.$folderList[$i] )) { ++ // get the extension of the file ++ $fileParts = explode('.', $folderList[$i]); ++ $file_extension = strtolower($fileParts[count($fileParts)-1]); ++ // get image pointer ++ $image_p = null; ++ if ($file_extension == 'jpg') ++ $image_p = @imagecreatefromjpeg( $current_path.'/'.$folderList[$i] ); ++ if ($file_extension == 'png') ++ $image_p = @imagecreatefrompng( $current_path.'/'.$folderList[$i] ); ++ if ($file_extension == 'gif') ++ $image_p = @imagecreatefromgif( $current_path.'/'.$folderList[$i] ); ++ // proceed if we have an image pointer ++ if ($image_p) { ++ // get the image size for the cached images ++ $size = getimagesize( $current_path.'/'.$folderList[$i]); ++ $width = $size[0]; ++ $height = $size[1]; ++ // get the width for the choosen viewsize ++ // calculate it from the columns and rows if fullsize is not ++ // requested, otherwise use the original image size ++ if ( $image_viewsize != fullsize ) { ++ $new_width = (( $this->config['screen_width'] / $max_cols ) - 50 ); ++ // calculate new image dimensions ++ $new_height = ($height/$width) * $new_width; ++ if ( $height > $width ) { ++ $new_width = ($width/$height) * $new_height; ++ } ++ } else { ++ $new_width = $width; ++ $new_height = $height; ++ } ++ // get a new image pointer ++ $new_image_p = imagecreatetruecolor($new_width, $new_height); ++ // resample the old image to the new one ++ imagecopyresampled($new_image_p, $image_p, 0, 0, 0, 0, ++ $new_width, $new_height, $width, $height ); ++ // save the image ++ if ($file_extension == 'jpg') ++ imagejpeg($new_image_p, $path.'/'.$file_prefix.$folderList[$i] ); ++ if ($file_extension == 'png') ++ imagepng($new_image_p, $path.'/'.$file_prefix.$folderList[$i] ); ++ if ($file_extension == 'gif') ++ imagegif($new_image_p, $path.'/'.$file_prefix.$folderList[$i] ); ++ // destroy the old pointers ++ imagedestroy( $image_p ); ++ imagedestroy( $new_image_p ); ++ } ++ } ++ } ++ } ++ } ++ ++ // ======================================================= ++ function showImages( $current_path, $folderList, $image_viewsize, $image_index ) { ++ ++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path; ++ // get the column and row values, display that many images in a row ++ $max_cols = substr($image_viewsize, 0, 1); ++ $max_rows = substr($image_viewsize, 2, 1); ++ // counter for the current column and row ++ $current_col = 0; ++ // the prefix that will be added to a file so that different sizes have different names ++ $file_prefix = strtr($image_viewsize, ',','_').'_'; ++ ++ // get the amount of subfolders ++ $folder_count = count(glob($current_path.'/'.$folder.'/*',GLOB_ONLYDIR)); ++ // increase the index by the folder count ++ for ($i = 1; $i <= $folder_count; $i++) { ++ $image_index += 1; ++ } ++ echo ''."\n". ++ ''. ++ ''. ++ ''; ++ // go through all entries in the folderList ++ for ($i = $image_index; $i < (($max_cols * $max_rows)+$image_index); $i++) { ++ if (( file_exists( $path.'/'.$file_prefix.$folderList[$i] )) && ++ ( isset($folderList[$i]) )) { ++ // if the column is zero then start a new row ++ // the specified number of images will be displayed side by side ++ if ( $current_col == 0 ) echo ''."\n"; ++ // stretch the table cells to equal size ++ echo ''."\n"; ++ // if the max number of columns are reached close the row ++ if ( $current_col == $max_cols ) echo ''."\n"; ++ // reset the column count back to zero ++ $current_col++; ++ if ( $current_col == $max_cols ) $current_col = 0; ++ } ++ } ++ echo '
    '. ++ ' '. ++ '
    '."\n". ++ // display the image centered and put border around it ++ '
    '."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ '
    '."\n". ++ '
    '."\n". ++ // show the filename ++ $folderList[$i]."\n". ++ '
    '."\n". ++ '
    '; ++ } ++ ++ ++ // ======================================================= ++ function onlyDirectoriesAvailable( $current_path, $folderList, $image_viewsize, $image_index ) { ++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path; ++ // only so many images will be created that will be displayed on the screen ++ $max_cols = substr($image_viewsize, 0, 1); ++ $max_rows = substr($image_viewsize, 2, 1); ++ $max_number = ($max_cols * $max_rows); ++ // the prefix that will be added to a file so that different sizes have different names ++ $file_prefix = strtr($image_viewsize, ',','_').'_'; ++ ++ // go through the folderList. if there are only directories in it ++ // then dont display the navigation stuff ++ $only_dirs = true; ++ for ($i = 0; $i < count($folderList); $i++) { ++ if ( file_exists( $path.'/'.$file_prefix.$folderList[$i] )) { ++ $only_dirs = false; ++ break; ++ } ++ } ++ return $only_dirs; ++ } ++ ++ // ======================================================= ++ function showNavigation( $current_path, $folderList, $image_viewsize, $image_index ) { ++ $path = $_SERVER[DOCUMENT_ROOT].$this->config['cache_path'].$current_path; ++ // only so many images will be created that will be displayed on the screen ++ $max_cols = substr($image_viewsize, 0, 1); ++ $max_rows = substr($image_viewsize, 2, 1); ++ $max_number = ($max_cols * $max_rows); ++ // the prefix that will be added to a file so that different sizes have different names ++ $file_prefix = strtr($image_viewsize, ',','_').'_'; ++ ++ echo ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ ''."\n". ++ '
     '."\n". ++ ''."\n"; ++ // display the goto first page link ++ if ($image_index != 1) { ++ echo ''."\n". ++ // display the right arrow ++ ''. ++ ''."\n"; ++ } else { ++ echo ''."\n"; ++ } ++ // display the previous page icon if there are more than one entries ++ if ($image_index != 1) { ++ echo ''."\n". ++ // display the left arrow ++ ''. ++ ''."\n"; ++ } else { ++ echo ''."\n"; ++ } ++ echo ''."\n". ++ // display an info in what page we are right now ++ '( '.$image_index.' '.t('to').' '; ++ if (($image_index + $max_number) < count($folderList)) { ++ echo ($image_index+$max_number-1); ++ } else { ++ echo (count($folderList)-1); ++ } ++ echo ' '.t('of').' '.(count($folderList)-1).' )'."\n". ++ ''."\n"; ++ // display the next page link ++ if (($image_index + $max_number) < count($folderList)) { ++ echo ''."\n". ++ // display the right arrow ++ ''. ++ ''."\n"; ++ } else { ++ echo ''."\n"; ++ } ++ // display the goto last page link ++ if (($image_index + $max_number) < count($folderList)) { ++ echo ''."\n". ++ // display the right arrow ++ ''. ++ ''."\n"; ++ } else { ++ echo ''."\n"; ++ } ++ echo ' '."\n". ++ '
    '."\n"; ++ } ++ ++ // ======================================================= ++ function showFullsizeImage( $current_path, $folderList, $image_index ) { ++ echo ''."\n". ++ ''."\n". ++ ''.$folderList[$image_index].''."\n". ++ ''."\n". ++ ''."\n". ++ '
    '."\n". ++ 'config['cache_path'].$current_path.'/'. ++ fullsize.'_'.$folderList[$image_index].'">'."\n". ++ '
    '."\n". ++ ''."\n". ++ ''; ++ } ++ ++ // ======================================================= ++} +diff -Naur ../mythweb-orig/modules/gallery/includes/objects/Settings.php ./modules/gallery/includes/objects/Settings.php +--- ../mythweb-orig/modules/gallery/includes/objects/Settings.php 1969-12-31 19:00:00.000000000 -0500 ++++ ./modules/gallery/includes/objects/Settings.php 2007-08-20 22:28:02.000000000 -0400 +@@ -0,0 +1,243 @@ ++ t('MythWeb Session')); ++ global $db; ++ $sh = $db->query('SELECT DISTINCT hostname FROM settings WHERE value="locale" ORDER BY hostname'); ++ ++ // add all the found hosts into an array ++ while (list($host) = $sh->fetch_row()) ++ { ++ if (empty($host)) ++ continue; ++ $Settings_Hosts[$host] = $host; ++ } ++ $sh->finish(); ++ return $Settings_Hosts; ++} ++ ++ ++// update the values in the database if necessary ++function saveGalleryConfig( $Settings_Hosts ) ++{ ++ // Make sure we have a valid host selected ++ if (!isset( $Settings_Hosts[$_SESSION['settings']['host']]) ) ++ { ++ // we have no valid host, reset the array ++ $_SESSION['settings']['host'] = reset(array_keys($Settings_Hosts)); ++ } else { ++ // we have a valid host, check if the data should be saved ++ if ($_POST['save'] && isset($_POST['host'])) ++ { ++ // Changing settings for this MythWeb session ++ if (empty($_POST['host'])) ++ { ++ // save the image path in the session variable ++ $_SESSION['gallery']['image_path'] = $_POST['image_path']; ++ $_SESSION['gallery']['cache_path'] = $_POST['cache_path']; ++ $_SESSION['gallery']['default_viewsize'] = $_POST['default_viewsize']; ++ $_SESSION['gallery']['screen_width'] = $_POST['screen_width']; ++ $_SESSION['gallery']['viewsizes'] = $_POST['viewsizes']; ++ $_SESSION['gallery']['valid_image_files'] = $_POST['valid_image_files']; ++ } else { ++ // save the settings in the database ++// setGalleryImagePath( $_POST['image_path'], $_POST['host'] ); ++ setGalleryCachePath( $_POST['cache_path'], $_POST['host'] ); ++ setGalleryDefaultViewSize( $_POST['default_viewsize'], $_POST['host'] ); ++ setGalleryScreenWidth( $_POST['screen_width'], $_POST['host'] ); ++ setGalleryViewSizes( $_POST['viewsizes'], $_POST['host'] ); ++ setGalleryValidImageFiles( $_POST['valid_image_files'],$_POST['host'] ); ++ } ++ // Make sure the session host gets updated to the posted one. ++ $_SESSION['settings']['host'] = $_POST['host']; ++ } ++ } ++} ++ ++// the absolute path where the images are ++// get it from the database or the session variable ++function getGalleryImagePath() ++{ ++ global $db; ++ if (!empty($_SESSION['settings']['host'])) { ++ $imagePath = $db->query_col('SELECT data FROM settings ++ WHERE value="GalleryDir" AND hostname=?', $_SESSION['settings']['host']); ++ } ++ ++ if (!$imagePath) ++ { ++ $imagePath = _or($_SESSION['gallery']['image_path'], '/myth/gallery'); ++ } ++ ++ return $imagePath; ++} ++ ++// directory where the cached images are stored ++// this directory is relative to the htdocs directory ++function getGalleryCachePath() ++{ ++ global $db; ++ if (!empty($_SESSION['settings']['host'])) { ++ $cachePath = $db->query_col('SELECT data FROM settings ++ WHERE value="GalleryCachePath" AND hostname=?', $_SESSION['settings']['host']); ++ } ++ ++ if (!$cachePath) ++ { ++ $cachePath = _or($_SESSION['gallery']['cache_path'], '/mythweb/data/cache'); ++ } ++ ++ return $cachePath; ++} ++ ++ ++// defines the default view mode ++// default is 4 columns and 4 rows per page ++function getGalleryDefaultViewSize() ++{ ++ global $db; ++ if (!empty($_SESSION['settings']['host'])) { ++ $defaultViewSize = $db->query_col('SELECT data FROM settings ++ WHERE value="GalleryDefaultViewSize" AND hostname=?', $_SESSION['settings']['host']); ++ } ++ ++ if (!$defaultViewSize) ++ { ++ $defaultViewSize = _or($_SESSION['gallery']['default_viewsize'], '4,3'); ++ } ++ ++ return $defaultViewSize; ++} ++ ++ ++// width if the screen-200 (example 1024-200) ++// this is needed to calculate the width of the images ++function getGalleryScreenWidth() ++{ ++ global $db; ++ if (!empty($_SESSION['settings']['host'])) { ++ $screenWidth = $db->query_col('SELECT data FROM settings ++ WHERE value="GalleryScreenWidth" AND hostname=?', $_SESSION['settings']['host']); ++ } ++ ++ if (!$screenWidth) ++ { ++ $screenWidth = _or($_SESSION['gallery']['screen_width'], '1024'); ++ } ++ ++ return $screenWidth; ++} ++ ++ ++// columns and rows that are shown on one page, ; separates another mode ++function getGalleryViewSizes() ++{ ++ global $db; ++ if (!empty($_SESSION['settings']['host'])) { ++ $viewSizes = $db->query_col('SELECT data FROM settings ++ WHERE value="GalleryViewSizes" AND hostname=?', $_SESSION['settings']['host']); ++ } ++ ++ if (!$viewSizes) ++ { ++ $viewSizes = _or($_SESSION['gallery']['viewsizes'], '5,4 ; 4,4 ; 4,3 ; 3,3 ; 2,2 ; 1,1'); ++ } ++ ++ return $viewSizes; ++} ++ ++ ++// image extensions that will be shown, everything else ++// will not work, currently there four are supported ++function getGalleryValidImageFiles() ++{ ++ global $db; ++ if (!empty($_SESSION['settings']['host'])) { ++ $validImageFiles = $db->query_col('SELECT data FROM settings ++ WHERE value="GalleryValidImageFiles" AND hostname=?', $_SESSION['settings']['host']); ++ } ++ ++ if (!$validImageFiles) ++ { ++ $validImageFiles = _or($_SESSION['gallery']['valid_image_files'], 'jpg,png,gif,bmp'); ++ } ++ ++ return $validImageFiles; ++} ++ ++ ++// save the image path in the database ++//function setGalleryImagePath( $imagePath, $host ) ++//{ ++// global $db; ++// $db->query('UPDATE settings SET data = ? ++// WHERE value="GalleryDir" AND hostname=?', $imagePath, $host); ++//} ++ ++function setGalleryCachePath( $cachePath, $host ) ++{ ++ global $db; ++ $db->query('UPDATE settings SET data = ? ++ WHERE value="GalleryCachePath" AND hostname=?', $cachePath, $host); ++} ++ ++ ++function setGalleryDefaultViewSize( $defaultViewSize, $host ) ++{ ++ global $db; ++ $db->query('UPDATE settings SET data = ? ++ WHERE value="GalleryDefaultViewSize" AND hostname=?', $defaultViewSize, $host); ++} ++ ++ ++function setGalleryScreenWidth( $screenWidth, $host ) ++{ ++ global $db; ++ $db->query('UPDATE settings SET data = ? ++ WHERE value="GalleryScreenWidth" AND hostname=?', $screenWidth, $host); ++} ++ ++ ++function setGalleryViewSizes( $viewSizes, $host ) ++{ ++ global $db; ++ $db->query('UPDATE settings SET data = ? ++ WHERE value="GalleryViewSizes" AND hostname=?', $viewSizes, $host); ++} ++ ++ ++function setGalleryValidImageFiles( $validImageFiles, $host ) ++{ ++ global $db; ++ $db->query('UPDATE settings SET data = ? ++ WHERE value="GalleryValidImageFiles" AND hostname=?', $validImageFiles, $host); ++} ++ ++ +diff -Naur ../mythweb-orig/modules/gallery/init.php ./modules/gallery/init.php +--- ../mythweb-orig/modules/gallery/init.php 1969-12-31 19:00:00.000000000 -0500 ++++ ./modules/gallery/init.php 2007-08-19 23:21:33.000000000 -0400 +@@ -0,0 +1,38 @@ ++ t('Gallery'), ++ 'choices' => array('prefs' => t('Preferences'), ), ++ 'default' => 'prefs', ++ ); ++ ++// First, we should check to see that MythGallery is configured. ++ $has_gallery = $_SESSION['locale'] ++ ? true ++ : $db->query_col('SELECT COUNT(data) ++ FROM settings ++ WHERE value="locale"'); ++ ++ ++ ++// If gallery is enabled, add it to the list. ++ if ($has_gallery) { ++ $Modules['gallery'] = array('path' => 'gallery', ++ 'sort' => 5, ++ 'name' => t('Gallery'), ++ 'description' => t('Local Image Gallery') ++ ); ++ } +diff -Naur ../mythweb-orig/modules/gallery/set_prefs.php ./modules/gallery/set_prefs.php +--- ../mythweb-orig/modules/gallery/set_prefs.php 1969-12-31 19:00:00.000000000 -0500 ++++ ./modules/gallery/set_prefs.php 2007-08-20 22:29:12.000000000 -0400 +@@ -0,0 +1,24 @@ ++getImageViewSize(); ++ ++// If displaying full size image don't display header and footer ++if ($image_viewsize == 'fullsize') { ++ // Print the gallery part ++ $gallery->start(); ++} ++else ++{ ++ // Load this page's custom stylesheet ++ $headers[] = ''; ++ ++ // Print the page header ++ require 'modules/_shared/tmpl/'.tmpl.'/header.php'; ++ ++ // Print the gallery part ++ $gallery->start(); ++ ++ // Print the page footer ++ require 'modules/_shared/tmpl/'.tmpl.'/footer.php'; ++} +\ No newline at end of file +diff -Naur ../mythweb-orig/modules/gallery/tmpl/default/set_prefs.php ./modules/gallery/tmpl/default/set_prefs.php +--- ../mythweb-orig/modules/gallery/tmpl/default/set_prefs.php 1969-12-31 19:00:00.000000000 -0500 ++++ ./modules/gallery/tmpl/default/set_prefs.php 2007-08-19 23:21:33.000000000 -0400 +@@ -0,0 +1,93 @@ ++showConfig(); ++ ++class GalleryConfigTheme ++{ ++ function GalleryConfigTheme() ++ { ++ ++ } ++ ++ function showConfig() ++ { ++ echo '
    '. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ ''. ++ '
    '. ++ t('Gallery image path').': '. ++ ''. ++ ''. ++ '
    '. ++ t('Path where the thumbnails are').': '. ++ ''. ++ ''. ++ '
    '. ++ t('Default view size').': '. ++ ''. ++ ''. ++ '
    '. ++ t('Horizontal screen resolution').': '. ++ ''. ++ ''. ++ '
    '. ++ t('List of available view sizes').': '. ++ ''. ++ ''. ++ '
    '. ++ t('List of allowed image formats').': '. ++ ''. ++ ''. ++ '
    '. ++ ''. ++ ''. ++ ''. ++ '
    '. ++ '
    '; ++ } ++} ++ ++?> +\ No newline at end of file +diff -Naur ../mythweb-orig/modules/gallery/tmpl/default/welcome.php ./modules/gallery/tmpl/default/welcome.php +--- ../mythweb-orig/modules/gallery/tmpl/default/welcome.php 1969-12-31 19:00:00.000000000 -0500 ++++ ./modules/gallery/tmpl/default/welcome.php 2007-08-19 23:21:33.000000000 -0400 +@@ -0,0 +1,26 @@ ++', ++ '', ++ ++// Print a basic overview of what this module does ++ t('welcome: gallery'), ++ ++// Next, print a list of possible subsectons ++ #### ++ ++// Close the div ++ "\n"; +\ No newline at end of file +diff -Naur ../mythweb-orig/modules/_shared/lang/English.lang ./modules/_shared/lang/English.lang +--- ../mythweb-orig/modules/_shared/lang/English.lang 2007-08-19 23:20:01.000000000 -0400 ++++ ./modules/_shared/lang/English.lang 2007-08-19 23:26:41.000000000 -0400 +@@ -153,6 +153,7 @@ + "Create Schedule" + "Current Conditions" + "Current recordings" ++"Current path" + "Currently Browsing: $1" + "Currently Recording: Edit" + "Custom" +@@ -164,6 +165,7 @@ + "Deactivated" + "Default" + "Default MythVideo View" ++"Default view size" + "Delete" + "delete" + "Delete $1" +@@ -242,6 +244,8 @@ + "freqid" + "Friday" + "Frontends" ++"Gallery" ++"Gallery image path" + "generic_date" + %a %b %e, %Y + "generic_time" +@@ -269,6 +273,7 @@ + "Hide" + "High" + "Home" ++"Horizontal screen resolution" + "Host" + "Hosted by" + "Hosts" +@@ -276,6 +281,7 @@ + "Hour Format" + "hue" + "Humidity" ++"Images per page" + "IMDB" + "imdb rating" + "IMDBTYPE" +@@ -318,6 +324,8 @@ + "length" + "Length" + "Length (min)" ++"List of allowed image formats" ++"List of available view sizes" + "Listing "Jump to"" + "Listing Time Key" + "Listings" +@@ -367,6 +375,7 @@ + "mythvideo.sort_ignores_case" + "MythWeb" + "MythWeb Defaults" ++"MythWeb Gallery." + "MythWeb Global Defaults" + "MythWeb Session" + "MythWeb session settings" +@@ -401,6 +410,7 @@ + "Number of shows" + "Number of Songs" + "Number of timeslots" ++"of" + "Only display favourite channels" + "Only match commercial-free channels" + "Only match HD programs" +@@ -415,6 +425,7 @@ + "Past Month" + "Past Week" + "Past Year" ++"Path where the thumbnails are" + "Paused" + "Pending" + "People" +@@ -673,6 +684,7 @@ + "Subtitles Available" + "Sunday" + "Surround Sound" ++"Switch view mode" + "Tab" + "The requested recording schedule has been deleted." + "There are no items in this Playlist!" +@@ -690,6 +702,7 @@ + "Title Match" + "Title search" + "Title Search" ++"to" + "Today" + "Tomorrow" + "Too Many" +@@ -784,6 +797,8 @@ + "Wednesday" + "welcome: backend_log" + Show the server logs. ++"welcome: gallery" ++ Browse your picture collection. + "welcome: music" + Browse your music collection. + "welcome: remote" +diff -Naur ../mythweb-orig/modules/_shared/lang/German.lang ./modules/_shared/lang/German.lang +--- ../mythweb-orig/modules/_shared/lang/German.lang 2007-08-19 23:20:01.000000000 -0400 ++++ ./modules/_shared/lang/German.lang 2007-08-19 23:27:54.000000000 -0400 +@@ -209,6 +209,8 @@ + "Create a Random Mix" + "Create Schedule" + Speichern ++"Current path" ++ Aktueller Pfad + "Current Conditions" + Das aktuelle Wetter + "Current recordings" +@@ -231,6 +233,8 @@ + "Default" + Standard + "Default MythVideo View" ++"Default view size" ++ Standardansicht + "Delete" + Löschen + "delete" +@@ -343,6 +347,10 @@ + "Friday" + Freitag + "Frontends" ++"Gallery" ++ Gallerie ++"Gallery image path" ++ Pfad der Bilder + "generic_date" + %e.%m.%Y + "generic_time" +@@ -379,6 +387,8 @@ + "High" + Max + "Home" ++"Horizontal screen resolution" ++ Horizontale Bildschirmauflösung + "Host" + "Hosted by" + "Hosts" +@@ -390,6 +400,8 @@ + Farbton + "Humidity" + Luftfeuchtigkeit ++"Images per page" ++ Bilder pro Seite + "IMDB" + IMDB + "imdb rating" +@@ -438,6 +450,10 @@ + Dauer + "Length (min)" + Dauer (Min.) ++"List of allowed image formats" ++ Liste der erlaubten Bildformate ++"List of available view sizes" ++ Liste der möglichen Ansichten + "Listing "Jump to"" + TV Programm "Gehe zu" + "Listing Time Key" +@@ -502,6 +518,8 @@ + "mythvideo.sort_ignores_case" + "MythWeb" + "MythWeb Defaults" ++"MythWeb Gallery." ++ Gallerie + "MythWeb Global Defaults" + "MythWeb Session" + "MythWeb session settings" +@@ -548,6 +566,8 @@ + "Number of shows" + "Number of Songs" + "Number of timeslots" ++"of" ++ von + "Only display favourite channels" + Nur Favoriten anzeigen + "Only match commercial-free channels" +@@ -562,6 +582,8 @@ + "Override" + "Page Down" + "Page Up" ++"Path where the thumbnails are" ++ Thumbnails speichern unter + "Part $1 of $2" + Teil $1 von $2 + "Past Month" +@@ -870,6 +892,10 @@ + "Streaming" + "Sub and Desc (Empty matches)" + Untertitel & Beschr. (kein Ergebnis) ++"subfolder" ++ Unterordner ++"subfolders" ++ Unterordner + "Submit Search" + "subtitle" + "Subtitle" +@@ -882,6 +908,8 @@ + "Subtitles Available" + "Sunday" + Sonntag ++"Switch view mode" ++ Ansichtsmodus wechseln + "Surround Sound" + "Tab" + "The requested recording schedule has been deleted." +@@ -907,6 +935,8 @@ + "Title search" + "Title Search" + Titel Suche ++"to" ++ bis + "Today" + Heute + "Tomorrow" +@@ -1024,6 +1054,8 @@ + Mittwoch + "welcome: backend_log" + Backend Log ++"welcome: gallery" ++ Gallerie + "welcome: music" + Musik + "welcome: remote" +diff -Naur ../mythweb-orig/modules/_shared/tmpl/default/header.php ./modules/_shared/tmpl/default/header.php +--- ../mythweb-orig/modules/_shared/tmpl/default/header.php 2007-08-19 23:20:01.000000000 -0400 ++++ ./modules/_shared/tmpl/default/header.php 2007-08-19 23:21:33.000000000 -0400 +@@ -96,6 +96,13 @@ +
    + ++ href="gallery" onmouseover="return help_text('')" onmouseout="return help_text()"> ++ MythGallery ++ ++ + href="settings" onmouseover="return help_text('')" onmouseout="return help_text()"> + <?php echo t('Settings') ?> +diff -Naur ../mythweb-orig/skins/default/gallery.css ./skins/default/gallery.css +--- ../mythweb-orig/skins/default/gallery.css 1969-12-31 19:00:00.000000000 -0500 ++++ ./skins/default/gallery.css 2007-08-19 23:21:33.000000000 -0400 +@@ -0,0 +1,108 @@ ++img { ++ border: 0px; ++ border-color: #000000; ++} ++ ++table.current_path_and_viewsize { ++ margin-top:5px; ++ border:1px solid #626262; ++ padding:5px; ++ width:100%; ++} ++ ++a { ++ color:#000000; ++ text-decoration:none; ++} ++ ++a.header { ++ font-weight:bold; ++ font-style:italic; ++} ++ ++a.folderlist { ++ font-style:italic; ++} ++ ++td.current_path { ++ text-align:left; ++ width:auto; ++} ++ ++td.change_viewsize_text { ++ text-align:right; ++ width:160px; ++} ++ ++td.change_viewsize_selection { ++ text-align:right; ++ width:140px; ++} ++ ++select.change_viewsize { ++ border:1px solid #323232; ++ background-color: #191c26; ++ color: #FFFFFF; ++} ++ ++td.folder_navigation { ++ width:200px; ++ vertical-align:top; ++} ++ ++table.folder_navigation { ++ margin-top:5px; ++ border:1px solid #626262; ++ padding:4px; ++ width:100%; ++} ++ ++div.folder_navigation_active { ++ background-color: #224477; ++ border:1px solid #191c26; ++ text-align:left; ++ padding:4px; ++} ++ ++div.folder_navigation { ++ border:1px solid #191c26; ++ text-align:left; ++ padding:4px; ++} ++ ++td.image_listing { ++ width:auto; ++ vertical-align:top; ++} ++ ++table.imagelist_and_navigation { ++ margin-top:5px; ++ margin-left:5px; ++ border:1px solid #626262; ++ padding:5px; ++ width:100%; ++} ++ ++td.image_navigation { ++ text-align:center; ++ vertical-align:middle; ++ width:20%; ++ border-width: 0px; ++} ++ ++td.single_image { ++ font-size:9pt; ++ padding:5px; ++ text-align:center; ++} ++ ++img.single_image { ++ padding:7px; ++ border:1px solid #323232; ++} ++ ++img.single_image_active { ++ background-color: #224477; ++ padding:7px; ++ border:1px solid #323232; ++} +\ No newline at end of file +diff -Naur ../mythweb-orig/skins/grey/gallery.css ./skins/grey/gallery.css +--- ../mythweb-orig/skins/grey/gallery.css 1969-12-31 19:00:00.000000000 -0500 ++++ ./skins/grey/gallery.css 2007-08-19 23:21:33.000000000 -0400 +@@ -0,0 +1,107 @@ ++img { ++ border: 0px; ++ border-color: #000000; ++} ++ ++table.current_path_and_viewsize { ++ margin-top:5px; ++ border:1px solid #626262; ++ padding:5px; ++ width:100%; ++} ++ ++a { ++ color:#000000; ++ text-decoration:none; ++} ++ ++a.header { ++ font-weight:bold; ++ font-style:italic; ++} ++ ++a.folderlist { ++ font-style:italic; ++} ++ ++td.current_path { ++ text-align:left; ++ width:auto; ++} ++ ++td.change_viewsize_text { ++ text-align:right; ++ width:160px; ++} ++ ++td.change_viewsize_selection { ++ text-align:right; ++ width:140px; ++} ++ ++select.change_viewsize { ++ border:1px solid #323232; ++ background-color: #212121; ++} ++ ++td.folder_navigation { ++ width:200px; ++ vertical-align:top; ++} ++ ++table.folder_navigation { ++ margin-top:5px; ++ border:1px solid #626262; ++ padding:4px; ++ width:100%; ++} ++ ++div.folder_navigation_active { ++ background-color: #626262; ++ border:1px solid #212121; ++ text-align:left; ++ padding:4px; ++} ++ ++div.folder_navigation { ++ border:1px solid #212121; ++ text-align:left; ++ padding:4px; ++} ++ ++td.image_listing { ++ width:auto; ++ vertical-align:top; ++} ++ ++table.imagelist_and_navigation { ++ margin-top:5px; ++ margin-left:5px; ++ border:1px solid #626262; ++ padding:5px; ++ width:100%; ++} ++ ++td.image_navigation { ++ text-align:center; ++ vertical-align:middle; ++ width:20%; ++ border-width: 0px; ++} ++ ++td.single_image { ++ font-size:9pt; ++ padding:5px; ++ text-align:center; ++} ++ ++img.single_image { ++ padding:7px; ++ border:1px solid #323232; ++} ++ ++img.single_image_active { ++ background-color: #626262; ++ padding:7px; ++ border:1px solid #323232; ++} +\ No newline at end of file +diff -Naur ../mythweb-orig/skins/grey/settings.css ./skins/grey/settings.css +--- ../mythweb-orig/skins/grey/settings.css 2007-08-19 23:20:00.000000000 -0400 ++++ ./skins/grey/settings.css 2007-08-19 23:21:33.000000000 -0400 +@@ -94,7 +94,7 @@ + + #settings .-host { + text-align: right; +- border-bottom: 2px solid #eee; ++ border-bottom: 2px solid #aaa; + } + + /* A notification/warning */ +@@ -115,3 +115,33 @@ + border: 2px solid #999; + border-top: none; + } ++ ++ #settings ._content input._text { ++ margin: 2px; ++ padding: 2px; ++ border: 1px solid #333333; ++ } ++ ++ #settings ._content input._button { ++ margin: 2px; ++ padding: 2px; ++ border: 1px solid #333333; ++ color: #DDDDDD; ++ } ++ ++ #settings ._content table { ++ width: 100%; ++ } ++ #settings ._content table th, #settings ._content table td { ++ padding: .5em; ++ } ++ ++ #settings ._content th, #settings ._content td { ++ text-align: right; ++ font-weight: normal; ++ white-space: nowrap; ++ } ++ ++ #settings ._content tr._sep th, #settings ._content tr._sep td { ++ border-bottom: 1px solid #304943; ++ } diff --git a/abs/core/mythtv/stable/mythweb/transcoders.patch b/abs/core/mythtv/stable/mythweb/transcoders.patch new file mode 100644 index 0000000..c1aeb6c --- /dev/null +++ b/abs/core/mythtv/stable/mythweb/transcoders.patch @@ -0,0 +1,23 @@ +diff -ruaN mythweb.orig/modules/_shared/lang/English.lang mythweb/modules/_shared/lang/English.lang +--- mythweb.orig/modules/_shared/lang/English.lang 2009-01-09 02:44:23.000000000 +0000 ++++ mythweb/modules/_shared/lang/English.lang 2009-07-31 06:29:11.000000000 +0000 +@@ -816,3 +816,5 @@ + "Year" + "Yes" + "Yesterday" ++"Myth2iPod" ++"Myt2XviD3" +diff -ruaN mythweb.orig/modules/_shared/tmpl/default/header.php mythweb/modules/_shared/tmpl/default/header.php +--- mythweb.orig/modules/_shared/tmpl/default/header.php 2009-01-09 02:44:23.000000000 +0000 ++++ mythweb/modules/_shared/tmpl/default/header.php 2009-07-31 06:28:54.000000000 +0000 +@@ -171,6 +171,10 @@ + +   |   + ++   |   ++ ++   |   ++ + +   |   + diff --git a/abs/core/mythtv/stable/mythweb/wiiweb.tar.bz2 b/abs/core/mythtv/stable/mythweb/wiiweb.tar.bz2 new file mode 100644 index 0000000..200b8c3 Binary files /dev/null and b/abs/core/mythtv/stable/mythweb/wiiweb.tar.bz2 differ diff --git a/abs/core/mythtv/stable/mythzoneminder/PKGBUILD b/abs/core/mythtv/stable/mythzoneminder/PKGBUILD new file mode 100644 index 0000000..45e0bac --- /dev/null +++ b/abs/core/mythtv/stable/mythzoneminder/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Juergen Hoetzel +# Contributor: kleptophobiac@gmail.com + +pkgname=mythzoneminder +pkgver=0.21 +pkgrel=4 +pkgdesc="Integrates ZoneMinder into MythTV" +arch=('i686' 'x86_64') +url="http://www.mythtv.org" +license=('GPL') +depends=("mythtv>=${pkgver}" 'zoneminder=1.23.3') +source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") +md5sums=('1b3e2a97b7ecf7373e162fe20b6faabe') +groups=('mythtv-extras') + +build() { + cd $startdir/src/mythplugins + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + + ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythzoneminder --zm-version=1.23.3 + + qmake mythplugins.pro + make qmake || return 1 + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core/mythtv/trunk/clean_all.sh b/abs/core/mythtv/trunk/clean_all.sh new file mode 100755 index 0000000..1ebdc43 --- /dev/null +++ b/abs/core/mythtv/trunk/clean_all.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +buildlist=('mythtv' 'mytharchive' 'mythbrowser' 'mythflix' 'mythgallery' 'mythgame' 'mythmovies' 'mythmusic' 'mythnews' 'mythvideo' 'mythweather' 'mythzoneminder' 'mythweb' 'myththemes' 'morethemes') + +# clean up current directory +rm -f *~ + +# clean up mythtv directories +for i in `echo ${buildlist[@]:0}` +do + echo "-- cleaning $i" + cd ./$i + + # clean up everything + rm -rf pkg src + rm -f *~ + + cd .. +done + +echo "DONE!" + diff --git a/abs/core/mythtv/trunk/morethemes/PKGBUILD b/abs/core/mythtv/trunk/morethemes/PKGBUILD new file mode 100644 index 0000000..d3aad58 --- /dev/null +++ b/abs/core/mythtv/trunk/morethemes/PKGBUILD @@ -0,0 +1,49 @@ +pkgname=morethemes-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Additional themes for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn') +conflicts=('morethemes') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/themes +_svnmod=themes + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mp_all.sh b/abs/core/mythtv/trunk/mp_all.sh new file mode 100755 index 0000000..f9593ff --- /dev/null +++ b/abs/core/mythtv/trunk/mp_all.sh @@ -0,0 +1,30 @@ +#!/bin/sh +pkgver=21495 +pkgrel=1 + +# NOTE: Make sure to build and install mythtv first BEFORE building anything else +buildlist=('mythtv' 'mytharchive' 'mythbrowser' 'mythflix' 'mythgallery' 'mythgame' 'mythmovies' 'mythmusic' 'mythnews' 'mythvideo' 'mythweather' 'mythzoneminder' 'mythweb' 'myththemes' 'morethemes') + +# build and install +for i in `echo ${buildlist[@]:0}` +do + echo "---------- building $i ----------" + cd ./$i + + # set svn version in the PKGBUILD + sed -i s/^pkgver=.*/pkgver=$pkgver/ PKGBUILD + sed -i s/^pkgrel=.*/pkgrel=$pkgrel/ PKGBUILD + + # make the package + mp -f -i --holdver || exit 1 + + # clean up afterwards + rm -rf pkg + rm -f *~ + + cd .. +done + +echo "" +echo "DONE!" + diff --git a/abs/core/mythtv/trunk/mytharchive/PKGBUILD b/abs/core/mythtv/trunk/mytharchive/PKGBUILD new file mode 100644 index 0000000..75779a1 --- /dev/null +++ b/abs/core/mythtv/trunk/mytharchive/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mytharchive-svn +pkgver=21495 +pkgrel=1 +pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows." +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'libxmu' 'mysql-python' 'pil' 'dvdauthor' 'mjpegtools' 'transcode') +conflicts=('mytharchive') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mytharchive || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythbrowser/PKGBUILD b/abs/core/mythtv/trunk/mythbrowser/PKGBUILD new file mode 100644 index 0000000..7495407 --- /dev/null +++ b/abs/core/mythtv/trunk/mythbrowser/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythbrowser-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Mini web browser for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'wget') +conflicts=('mythbrowser') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythbrowser || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythflix/PKGBUILD b/abs/core/mythtv/trunk/mythflix/PKGBUILD new file mode 100644 index 0000000..e4ffbbf --- /dev/null +++ b/abs/core/mythtv/trunk/mythflix/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythflix-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Netflix access plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn') +conflicts=('mythflix') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythflix || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythgallery/PKGBUILD b/abs/core/mythtv/trunk/mythgallery/PKGBUILD new file mode 100644 index 0000000..7480178 --- /dev/null +++ b/abs/core/mythtv/trunk/mythgallery/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythgallery-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Image gallery plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'libexif' 'libtiff') +conflicts=('mythgallery') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythgallery || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythgame/PKGBUILD b/abs/core/mythtv/trunk/mythgame/PKGBUILD new file mode 100644 index 0000000..8f2e582 --- /dev/null +++ b/abs/core/mythtv/trunk/mythgame/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythgame-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Emulation plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'zlib') +conflicts=('mythgame') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythgame || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythmovies/PKGBUILD b/abs/core/mythtv/trunk/mythmovies/PKGBUILD new file mode 100644 index 0000000..aca7c73 --- /dev/null +++ b/abs/core/mythtv/trunk/mythmovies/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythmovies-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Displays information about movies playing in the area." +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn') +conflicts=('mythmovies') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythmovies || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythmusic/PKGBUILD b/abs/core/mythtv/trunk/mythmusic/PKGBUILD new file mode 100644 index 0000000..df6d23d --- /dev/null +++ b/abs/core/mythtv/trunk/mythmusic/PKGBUILD @@ -0,0 +1,53 @@ +pkgname=mythmusic-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Music playing plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \ + 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \ + 'libvisual-plugins' 'libvisual-projectm') +conflicts=('mythmusic') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythmusic --enable-libvisual --enable-fftw --enable-sdl \ + --enable-aac || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythnews/PKGBUILD b/abs/core/mythtv/trunk/mythnews/PKGBUILD new file mode 100644 index 0000000..b411e08 --- /dev/null +++ b/abs/core/mythtv/trunk/mythnews/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythnews-svn +pkgver=21495 +pkgrel=1 +pkgdesc="News checking plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn') +conflicts=('mythnews') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythnews || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/myththemes/PKGBUILD b/abs/core/mythtv/trunk/myththemes/PKGBUILD new file mode 100755 index 0000000..5d300e5 --- /dev/null +++ b/abs/core/mythtv/trunk/myththemes/PKGBUILD @@ -0,0 +1,49 @@ +pkgname=myththemes-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Themes for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn') +conflicts=('myththemes') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/myththemes +_svnmod=myththemes + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythtv/PKGBUILD b/abs/core/mythtv/trunk/mythtv/PKGBUILD new file mode 100755 index 0000000..db119bd --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/PKGBUILD @@ -0,0 +1,91 @@ +pkgname=mythtv-svn +pkgver=21495 +pkgrel=1 +pkgdesc="A personal video recorder for Linux" +url="http://www.mythtv.org" +license="GPL" +depends=('bash' 'mysql-clients>=5.0' 'qt' 'lame' 'lirc-utils' 'ffmpeg' \ + 'faad2' 'libxv' 'libxvmc' 'libavc1394' 'libdc1394' 'libiec61883' \ + 'perl-net-upnp') +makedepends=('libgl' 'subversion') +conflicts=('mythtv') +replaces=() +groups=('pvr') +#backup=() +#options=(!strip) +#MAKEFLAGS="-j6" +install='mythtv.install' + +patchs=() +#patchs=('smolt_jump.patch') +source=('mythbackend' 'myth.sh' `echo ${patchs[@]:0}` 'mythbackend.lr' 'mythfrontend.lr' 'pretty') +arch=('i686' 'x86_64') +#md5sums=() + +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv +_svnmod=mythtv + +build() { + + # get clean copy from SVN repo + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/mythtv + + # apply patches + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patchs[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up from last build + make distclean + + # configure + ./configure --prefix=/usr --arch=${ARCH} \ + --enable-vdpau --enable-xvmc --enable-xvmc-pro \ + --enable-opengl-vsync --enable-libfaad --enable-dvb --enable-firewire \ + --compile-type=release --with-bindings=perl,python \ + --enable-audio-alsa --disable-audio-jack --disable-audio-arts || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + + # install db schema, scripts and docs + install -m0644 database/mc.sql $startdir/pkg/usr/share/mythtv/ || return 1 + install -D -m0755 ../mythbackend $startdir/pkg/etc/rc.d/mythbackend || return 1 + cp -r docs $startdir/pkg/usr/share/mythtv/ || return 1 + # cp ../QUICKSTART.archlinux $startdir/pkg/usr/share/mythtv/ || return 1 + + # install contrib + cp -r contrib $startdir/pkg/usr/share/mythtv/ || return 1 + + # patch the xml LinHES style + cp -r $startdir/menu-xml/*.xml $startdir/pkg/usr/share/mythtv/themes/defaultmenu/ + cd $startdir/pkg/usr/share/mythtv/themes/defaultmenu + patch -p0 < $startdir/menu-xml/mainmenu.xml.patch || return 1 + patch -p0 < $startdir/menu-xml/optical_menu.xml.patch || return 1 + patch -p0 < $startdir/menu-xml/library.xml.patch || return 1 + patch -p0 < $startdir/menu-xml/util_menu.xml.patch || return 1 + + # make log dir + mkdir -p $startdir/pkg/var/log/mythtv + chown 1000.1000 $startdir/pkg/var/log/mythtv + mkdir -p $startdir/pkg/etc/logrotate.d + cp $startdir/src/*.lr $startdir/pkg/etc/logrotate.d + mkdir -p $startdir/pkg/etc/cron.hourly/ + install -m0755 $startdir/src/pretty $startdir/pkg/etc/cron.hourly/ +} + diff --git a/abs/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml new file mode 100644 index 0000000..f257920 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/mythtv/trunk/mythtv/menu-xml/is.xml b/abs/core/mythtv/trunk/mythtv/menu-xml/is.xml new file mode 100644 index 0000000..88b7e6b --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/menu-xml/is.xml @@ -0,0 +1,3 @@ + + + diff --git a/abs/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch b/abs/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch new file mode 100644 index 0000000..14cb5f9 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch @@ -0,0 +1,12 @@ +--- library.xml.orig 2009-03-23 18:43:18.000000000 +0000 ++++ library.xml 2009-03-23 19:52:30.000000000 +0000 +@@ -126,8 +126,7 @@ + Play Online Streams + נגן מדיה מכוונת + +- PLUGIN mythstream +- mythstream ++ MENU is.xml + + + + + + + + + + + + diff --git a/abs/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch b/abs/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch new file mode 100644 index 0000000..0ec8143 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch @@ -0,0 +1,41 @@ +--- mainmenu.xml.orig 2009-03-23 18:43:18.000000000 +0000 ++++ mainmenu.xml 2009-03-23 19:47:20.000000000 +0000 +@@ -163,35 +163,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/mythtv/trunk/mythtv/myth.sh b/abs/core/mythtv/trunk/mythtv/myth.sh new file mode 100755 index 0000000..fb7122c --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/myth.sh @@ -0,0 +1,4 @@ +export PATH=$PATH:/usr/local/bin +# set core file size to 0 +ulimit -c 0 +export MALLOC_CHECK_=0 \ No newline at end of file diff --git a/abs/core/mythtv/trunk/mythtv/mythbackend b/abs/core/mythtv/trunk/mythtv/mythbackend new file mode 100755 index 0000000..93773a2 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/mythbackend @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/mythbackend` +case "$1" in + start) + stat_busy "Starting MythTV Backend" + [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit + [ -z "$PID" ] && /usr/bin/mythbackend -d -l /var/log/mythbackend.log -v important + if [ $? -gt 0 ]; then + stat_fail + else + echo $PID > /var/run/mythbackend.pid + add_daemon mythbackend + stat_done + fi + ;; + stop) + stat_busy "Stopping MythTV Backend" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon mythbackend + stat_done + fi + ;; + restart) + $0 stop + sleep 1s + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/mythtv/trunk/mythtv/mythbackend.lr b/abs/core/mythtv/trunk/mythtv/mythbackend.lr new file mode 100644 index 0000000..4f218bc --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/mythbackend.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/mythbackend.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/core/mythtv/trunk/mythtv/mythbackend.sh b/abs/core/mythtv/trunk/mythtv/mythbackend.sh new file mode 100755 index 0000000..e7a7b70 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/mythbackend.sh @@ -0,0 +1,117 @@ +#!/bin/bash +# +# /etc/rc.d/init.d/mythbackend +# +# Starts the mythbackend as a daemon +# +# chkconfig: 345 90 10 +# description: Starts the mythbackend process as a daemon after the XWindows \ +# system is started, in runlevel 5. This allows scheduled \ +# recordings to occur without manual intervention. +# processname: mythbackend + +# Copyright (c) by Michael Thomson +# 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/mythtv/trunk/mythtv/mythfrontend.lr b/abs/core/mythtv/trunk/mythtv/mythfrontend.lr new file mode 100644 index 0000000..1580533 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/mythfrontend.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/mythfrontend.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/core/mythtv/trunk/mythtv/mythtv.install b/abs/core/mythtv/trunk/mythtv/mythtv.install new file mode 100755 index 0000000..87507a5 --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/mythtv.install @@ -0,0 +1,30 @@ +# arg 1: the new package version +post_install() { + if [ ! -d /var/log/mythtv ] + then + mkdir -p /var/log/mythv + chown -R mythtv /var/log/mythtv + echo "---" > /var/log/mythtv/mythbackend.log + chown mythtv /var/log/mythtv/mythbackend.log + + fi +} + +post_upgrade() { + if [ ! -d /var/log/mythtv ] + then + mkdir -p /var/log/mythv + chown -R mythtv /var/log/mythtv + fi +} + + +# arg 1: the old package version +post_remove() { + /bin/true + +} + +op=$1 +shift +$op $* diff --git a/abs/core/mythtv/trunk/mythtv/pretty b/abs/core/mythtv/trunk/mythtv/pretty new file mode 100755 index 0000000..1cfc57b --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/pretty @@ -0,0 +1,2 @@ +#!/bin/bash +su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythrename.pl --link /myth/pretty" diff --git a/abs/core/mythtv/trunk/mythtv/smolt_jump.patch b/abs/core/mythtv/trunk/mythtv/smolt_jump.patch new file mode 100644 index 0000000..0fc452a --- /dev/null +++ b/abs/core/mythtv/trunk/mythtv/smolt_jump.patch @@ -0,0 +1,30 @@ +Index: programs/mythfrontend/networkcontrol.cpp +=================================================================== +--- programs/mythfrontend/networkcontrol.cpp (revision 19291) ++++ programs/mythfrontend/networkcontrol.cpp (working copy) +@@ -83,6 +83,7 @@ + jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; + jumpMap["zoneminderevents"] = "ZoneMinder Events"; + jumpMap["snapshot"] = "ScreenShot"; ++ jumpMap["mythsmolt"] = "MythSmolt"; + + // These jump point names match the (lowercased) locations from gContext + jumpMap["channelrecpriority"] = "Channel Recording Priorities"; +@@ -191,7 +192,7 @@ + pthread_create(&command_thread, NULL, CommandThread, this); + + gContext->addListener(this); +- ++ + connect(this, SIGNAL(newConnection()), this, SLOT(newConnection())); + } + +@@ -307,7 +308,7 @@ + cs = new QTextStream(s); + cs->setCodec("UTF-8"); + } +- ++ + if (client) + { + closedOldConn = true; diff --git a/abs/core/mythtv/trunk/mythvideo/PKGBUILD b/abs/core/mythtv/trunk/mythvideo/PKGBUILD new file mode 100644 index 0000000..797b641 --- /dev/null +++ b/abs/core/mythtv/trunk/mythvideo/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythvideo-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Video playback and browsing plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'mplayer' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg') +conflicts=('mythvideo') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythvideo || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythweather/PKGBUILD b/abs/core/mythtv/trunk/mythweather/PKGBUILD new file mode 100644 index 0000000..0655236 --- /dev/null +++ b/abs/core/mythtv/trunk/mythweather/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythweather-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Weather checking plugin for MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'wget') +conflicts=('mythweather') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythweather || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/mythtv/trunk/mythweb/PKGBUILD b/abs/core/mythtv/trunk/mythweb/PKGBUILD new file mode 100644 index 0000000..8f472b7 --- /dev/null +++ b/abs/core/mythtv/trunk/mythweb/PKGBUILD @@ -0,0 +1,48 @@ +pkgname=mythweb-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Web interface for MythTV's backend" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'lighttpd' 'php' 'local-website') +conflicts=('mythweb') +groups=('mythtv-extras-svn') +install=mythweb.install + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + +DOCROOT=/data/srv/httpd/htdocs/mythweb + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + mkdir -p $startdir/pkg/$DOCROOT/{image_cache,php_sessions} + + cp -r $startdir/src/mythplugins/mythweb/* $startdir/pkg/$DOCROOT +# cp $startdir/src/mythplugins-$pkgver/mythweb/data/.htaccess $startdir/pkg/$DOCROOT + rm $startdir/pkg/srv/$DOCROOT/README + chown -R http:users $startdir/pkg/$DOCROOT + chmod g+rw $startdir/pkg/$DOCROOT/{image_cache,php_sessions,data} + +} diff --git a/abs/core/mythtv/trunk/mythweb/mythweb.install b/abs/core/mythtv/trunk/mythweb/mythweb.install new file mode 100644 index 0000000..470cbd1 --- /dev/null +++ b/abs/core/mythtv/trunk/mythweb/mythweb.install @@ -0,0 +1,10 @@ +post_install() { + echo "You must create a symlink from /home/httpd/html/mythweb/video_dir" + echo "to your MythTV recordings directory. Don't forget to change the" + echo "permissions so that the webserver can read those files and create" + echo "thumbnails." +} + +op=$1 +shift +$op $* diff --git a/abs/core/mythtv/trunk/mythzoneminder/PKGBUILD b/abs/core/mythtv/trunk/mythzoneminder/PKGBUILD new file mode 100644 index 0000000..7ace30f --- /dev/null +++ b/abs/core/mythtv/trunk/mythzoneminder/PKGBUILD @@ -0,0 +1,50 @@ +pkgname=mythzoneminder-svn +pkgver=21495 +pkgrel=1 +pkgdesc="Integrates ZoneMinder into MythTV" +url="http://www.mythtv.org" +license="GPL" +arch=('i686' 'x86_64') + +depends=('mythtv-svn' 'zoneminder=1.23.3') +conflicts=('mythzoneminder') +groups=('mythtv-extras-svn') + +patches=() +source=(`echo ${patches[@]:0}`) +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn revert -R $_svnmod + + cd $startdir/src/$_svnmod + + echo "--------------------------applying patches----------------------------------------------------" + for i in `echo ${patches[@]:0} ` + do + echo applying $i + echo "-----------------------------" + patch -Np0 -i ${startdir}/src/$i || return 1 + done + echo "--------------------------done applying patches-----------------------------------------------" + + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + # clean up + make distclean + + # configure + ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \ + --enable-mythzoneminder || return 1 + + # build and install + . /etc/profile + make || return 1 + make INSTALL_ROOT=$startdir/pkg install || return 1 + +} diff --git a/abs/core/nasm/PKGBUILD b/abs/core/nasm/PKGBUILD new file mode 100644 index 0000000..fbac564 --- /dev/null +++ b/abs/core/nasm/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD,v 1.11 2005/03/01 07:53:53 dorphell Exp $ +# Maintainer: dorphell +# Committer: Judd Vinet +pkgname=nasm +pkgver=0.98.39 +pkgrel=1 +pkgdesc="80x86 assembler designed for portability and modularity" +depends=('glibc') +arch=i686 +source=(http://easynews.dl.sourceforge.net/sourceforge/nasm/nasm-$pkgver.tar.bz2) +md5sums=('2032ad44c7359f7a9a166a40a633e772') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + mkdir -p $startdir/pkg/usr/{bin,man/man1} + make prefix=$startdir/pkg/usr install +} diff --git a/abs/core/ncurses/ChangeLog b/abs/core/ncurses/ChangeLog new file mode 100644 index 0000000..f52c19c --- /dev/null +++ b/abs/core/ncurses/ChangeLog @@ -0,0 +1,9 @@ +2008-11-15 Allan McRae + * ncurses-5.7-2 + * fix installation of non-wide charater libraries (FS#12124) + +2008-11-03 Allan McRae + * ncurses-5.7-1 + * upstream update + * remove coverity patch (included upstream) + * enable makeflags diff --git a/abs/core/ncurses/PKGBUILD b/abs/core/ncurses/PKGBUILD index 052881e..c0fd425 100644 --- a/abs/core/ncurses/PKGBUILD +++ b/abs/core/ncurses/PKGBUILD @@ -1,75 +1,63 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd +# $Id: PKGBUILD 19129 2008-11-15 00:00:47Z allan $ +# Maintainer: Allan McRae +# Contributor: judd + pkgname=ncurses -pkgver=5.6 -pkgrel=15 -pkgdesc="A System V Release 4.0 curses emulation library" -arch=(i686 x86_64) -url="http://www.gnu.org/software/ncurses/ncurses.html" +pkgver=5.7 +pkgrel=2 +pkgdesc="System V Release 4.0 curses emulation library" +arch=('i686' 'x86_64') +url="http://www.gnu.org/software/ncurses/" license=('MIT') groups=('base') depends=('glibc') -source=(ftp://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz) -md5sums=('b6593abe1089d6aab1551c105c9300e3') -options=(!makeflags) +source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('cce05daf61a64501ef6cd8da1f727ec6') build() { - cd $startdir/src/$pkgname-$pkgver + cd ${srcdir}/${pkgname}-${pkgver} - # The chtype/mmask-t settings below are to retain ABI compat - # with ncurses-5.4 so dont change em ! - # we should test in next update if we can drop it. -if [ "$CARCH" == "x86_64" ]; then - ./configure --prefix=/usr \ + ./configure --prefix=/usr --mandir=/usr/share/man \ --with-shared --with-normal --without-debug --without-ada \ - --with-install-prefix=$startdir/pkg \ - --with-chtype='long' --with-mmask-t='long' - else - ./configure --prefix=/usr \ - --with-shared --with-normal --without-debug --without-ada \ - --with-install-prefix=$startdir/pkg -fi + --with-install-prefix=${pkgdir} --enable-widec make || return 1 make install - mkdir -p $startdir/pkg/lib - cd $startdir/pkg/usr/lib - mv libncurses.so.$pkgver ../../lib - ln -sf ../../lib/libncurses.so.$pkgver libncurses.so.$pkgver - cd $startdir/pkg/lib - ln -sf libncurses.so.$pkgver libncurses.so.5 - rm -f $startdir/pkg/lib/libcurses.so - # build unicode support libs - cd $startdir/src/$pkgname-$pkgver - make clean -if [ "$CARCH" == "x86_64" ]; then - ./configure --prefix=/usr \ - --with-shared --with-normal --without-debug --without-ada \ - --with-install-prefix=$startdir/pkg --enable-widec \ - --with-chtype='long' --with-mmask-t='long' - else + # move libraries needed for boot to /lib (we call tput in initscripts) + install -dm755 ${pkgdir}/lib + mv ${pkgdir}/usr/lib/libncursesw.so.5* ${pkgdir}/lib + ln -sf ../../lib/libncursesw.so.5 ${pkgdir}/usr/lib/libncursesw.so + + # Fool packages looking to link to non-wide-character ncurses libraries + for lib in curses ncurses form panel menu ; do \ + rm -f ${pkgdir}/usr/lib/lib${lib}.so ; \ + echo "INPUT(-l${lib}w)" >${pkgdir}/usr/lib/lib${lib}.so ; \ + ln -sf lib${lib}w.a ${pkgdir}/usr/lib/lib${lib}.a ; \ + done + ln -sf libncurses++w.a ${pkgdir}/usr/lib/libncurses++.a + + # install tput to /bin + install -dm755 ${pkgdir}/bin/ + mv ${pkgdir}/usr/bin/tput ${pkgdir}/bin/tput + + # Some packages look for -lcurses during build + rm -f ${pkgdir}/usr/lib/libcursesw.so + echo "INPUT(-lncursesw)" >${pkgdir}/usr/lib/libcursesw.so + ln -sf libncurses.so ${pkgdir}/usr/lib/libcurses.so + ln -sf libncursesw.a ${pkgdir}/usr/lib/libcursesw.a + ln -sf libncurses.a ${pkgdir}/usr/lib/libcurses.a + + # Install libncurses.so.5 for external binary support ./configure --prefix=/usr \ - --with-shared --with-normal --without-debug --without-ada \ - --with-install-prefix=$startdir/pkg --enable-widec -fi + --with-shared --with-normal --without-debug --without-ada \ + --with-install-prefix=${pkgdir} make || return 1 - make install - mkdir $startdir/pkg/usr/include/ncursesw - ln -sf /usr/include/ncurses.h $startdir/pkg/usr/include/ncursesw - # fix library for tput, we call it in initscripts! - cd $startdir/pkg/usr/lib - mv libncursesw.so.$pkgver ../../lib - ln -sf ../../lib/libncursesw.so.$pkgver libncursesw.so.$pkgver - cd $startdir/pkg/lib - ln -sf libncursesw.so.$pkgver libncursesw.so.5 - - # install tput to /bin - mkdir $startdir/pkg/bin/ - mv $startdir/pkg/usr/bin/tput $startdir/pkg/bin/tput + install -Dm755 lib/libncurses.so.${pkgver} ${pkgdir}/usr/lib/libncurses.so.${pkgver} + ln -sf libncurses.so.${pkgver} ${pkgdir}/usr/lib/libncurses.so.5 # install license, rip it from the readme - cd $startdir/src/$pkgname-$pkgver - mkdir -p $startdir/pkg/usr/share/licenses/$pkgname - grep -B 100 '$Id' README > $startdir/pkg/usr/share/licenses/$pkgname/license.txt + cd ${srcdir}/${pkgname}-${pkgver} + install -dm755 ${pkgdir}/usr/share/licenses/$pkgname + grep -B 100 '$Id' README > ${pkgdir}/usr/share/licenses/${pkgname}/license.txt } diff --git a/abs/core/ndiswrapper/PKGBUILD b/abs/core/ndiswrapper/PKGBUILD index 927dc8c..d0c9886 100644 --- a/abs/core/ndiswrapper/PKGBUILD +++ b/abs/core/ndiswrapper/PKGBUILD @@ -1,29 +1,35 @@ -#$Id: PKGBUILD 7906 2008-08-05 07:01:51Z tpowa $ +#$Id: PKGBUILD 22488 2008-12-26 22:47:09Z tpowa $ #Maintainer: Tobias Powalowski pkgname=ndiswrapper -_kernver=2.6.26-ARCH +_kernver=2.6.28-LinHES pkgver=1.53 -pkgrel=1 +pkgrel=6 pkgdesc="Module for NDIS (Windows Network Drivers) drivers supplied by vendors. For stock arch 2.6 kernel." license=('GPL') arch=(i686 x86_64) url="http://ndiswrapper.sourceforge.net" install="ndiswrapper.install" -depends=("ndiswrapper-utils=$pkgver" 'kernel26>=2.6.26-1' 'kernel26<2.6.27') -source=(http://downloads.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-$pkgver.tar.gz) +depends=("ndiswrapper-utils=$pkgver" 'kernel26>=2.6.28' 'kernel26<2.6.29') +source=(http://downloads.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-$pkgver.tar.gz + kernel-2.6.27.patch + ndiswrapper-CVE-2008-4395.patch) +md5sums=('393c6e6ab0803963148e18538601cdec' + 'cd09562c4afdbd20a0237a5e6d976b31' + 'b35e548a0c9eb1395f6f7b434a258ddf') build() { - cd $startdir/src/ndiswrapper-$pkgver/driver - make KVERS=$_kernver - make DESTDIR=$startdir/pkg KVERS=$_kernver install || return 1 - rm $startdir/pkg/lib/modules/$_kernver/modules.* #wtf? + cd $srcdir/ndiswrapper-$pkgver/driver + patch -Np1 -i ../../kernel-2.6.27.patch || return 1 + patch -Np3 -i ../../ndiswrapper-CVE-2008-4395.patch || return 1 + make KVERS=$_kernver || return 1 + make DESTDIR=$pkgdir KVERS=$_kernver install || return 1 + rm $pkgdir/lib/modules/$_kernver/modules.* #wtf? sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install # move it to correct kernel directory - mkdir -p $startdir/pkg/lib/modules/$_kernver/kernel/drivers/net/wireless/ndiswrapper - mv $startdir/pkg/lib/modules/$_kernver/misc/* $startdir/pkg/lib/modules/$_kernver/kernel/drivers/net/wireless/ndiswrapper/ - rm -r $startdir/pkg/lib/modules/$_kernver/misc/ + mkdir -p $pkgdir/lib/modules/$_kernver/kernel/drivers/net/wireless/ndiswrapper + mv $pkgdir/lib/modules/$_kernver/misc/* $pkgdir/lib/modules/$_kernver/kernel/drivers/net/wireless/ndiswrapper/ + rm -r $pkgdir/lib/modules/$_kernver/misc/ } -md5sums=('393c6e6ab0803963148e18538601cdec') diff --git a/abs/core/ndiswrapper/kernel-2.6.27.patch b/abs/core/ndiswrapper/kernel-2.6.27.patch new file mode 100644 index 0000000..522dfe9 --- /dev/null +++ b/abs/core/ndiswrapper/kernel-2.6.27.patch @@ -0,0 +1,116 @@ +diff -aur driver.old/iw_ndis.c driver/iw_ndis.c +--- driver.old/iw_ndis.c 2008-08-04 21:10:16.000000000 +0200 ++++ driver/iw_ndis.c 2008-08-04 21:30:12.000000000 +0200 +@@ -1015,7 +1015,7 @@ + return 0; + } + +-static char *ndis_translate_scan(struct net_device *dev, char *event, ++static char *ndis_translate_scan(struct net_device *dev, struct iw_request_info *info, char *event, + char *end_buf, void *item) + { + struct iw_event iwe; +@@ -1034,7 +1034,7 @@ + iwe.u.ap_addr.sa_family = ARPHRD_ETHER; + iwe.len = IW_EV_ADDR_LEN; + memcpy(iwe.u.ap_addr.sa_data, bssid->mac, ETH_ALEN); +- event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_ADDR_LEN); ++ event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_ADDR_LEN); + + /* add essid */ + memset(&iwe, 0, sizeof(iwe)); +@@ -1044,13 +1044,13 @@ + iwe.u.data.length = IW_ESSID_MAX_SIZE; + iwe.u.data.flags = 1; + iwe.len = IW_EV_POINT_LEN + iwe.u.data.length; +- event = iwe_stream_add_point(event, end_buf, &iwe, bssid->ssid.essid); ++ event = iwe_stream_add_point(info, event, end_buf, &iwe, bssid->ssid.essid); + + /* add protocol name */ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWNAME; + strncpy(iwe.u.name, network_type_to_name(bssid->net_type), IFNAMSIZ); +- event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_CHAR_LEN); ++ event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_CHAR_LEN); + + /* add mode */ + memset(&iwe, 0, sizeof(iwe)); +@@ -1061,7 +1061,7 @@ + iwe.u.mode = IW_MODE_INFRA; + else // if (bssid->mode == Ndis802_11AutoUnknown) + iwe.u.mode = IW_MODE_AUTO; +- event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_UINT_LEN); ++ event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_UINT_LEN); + + /* add freq */ + memset(&iwe, 0, sizeof(iwe)); +@@ -1076,7 +1076,7 @@ + /* convert from kHz to Hz */ + iwe.u.freq.e += 3; + iwe.len = IW_EV_FREQ_LEN; +- event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_FREQ_LEN); ++ event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_FREQ_LEN); + + /* add qual */ + memset(&iwe, 0, sizeof(iwe)); +@@ -1090,7 +1090,7 @@ + iwe.u.qual.noise = WL_NOISE; + iwe.u.qual.qual = i; + iwe.len = IW_EV_QUAL_LEN; +- event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_QUAL_LEN); ++ event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_QUAL_LEN); + + /* add key info */ + memset(&iwe, 0, sizeof(iwe)); +@@ -1101,7 +1101,7 @@ + iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; + iwe.u.data.length = 0; + iwe.len = IW_EV_POINT_LEN; +- event = iwe_stream_add_point(event, end_buf, &iwe, bssid->ssid.essid); ++ event = iwe_stream_add_point(info, event, end_buf, &iwe, bssid->ssid.essid); + + /* add rate */ + memset(&iwe, 0, sizeof(iwe)); +@@ -1115,7 +1115,7 @@ + if (bssid->rates[i] & 0x7f) { + iwe.u.bitrate.value = ((bssid->rates[i] & 0x7f) * + 500000); +- current_val = iwe_stream_add_value(event, current_val, ++ current_val = iwe_stream_add_value(info, event, current_val, + end_buf, &iwe, + IW_EV_PARAM_LEN); + } +@@ -1128,13 +1128,13 @@ + iwe.cmd = IWEVCUSTOM; + sprintf(buf, "bcn_int=%d", bssid->config.beacon_period); + iwe.u.data.length = strlen(buf); +- event = iwe_stream_add_point(event, end_buf, &iwe, buf); ++ event = iwe_stream_add_point(info, event, end_buf, &iwe, buf); + + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + sprintf(buf, "atim=%u", bssid->config.atim_window); + iwe.u.data.length = strlen(buf); +- event = iwe_stream_add_point(event, end_buf, &iwe, buf); ++ event = iwe_stream_add_point(info, event, end_buf, &iwe, buf); + + TRACE2("%d, %u", bssid->length, (unsigned int)sizeof(*bssid)); + if (bssid->length > sizeof(*bssid)) { +@@ -1155,7 +1155,7 @@ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVGENIE; + iwe.u.data.length = ielen; +- event = iwe_stream_add_point(event, end_buf, ++ event = iwe_stream_add_point(info, event, end_buf, + &iwe, iep); + } + iep += ielen; +@@ -1236,7 +1236,7 @@ + TRACE2("%d", bssid_list->num_items); + cur_item = &bssid_list->bssid[0]; + for (i = 0; i < bssid_list->num_items; i++) { +- event = ndis_translate_scan(dev, event, ++ event = ndis_translate_scan(dev, info, event, + extra + IW_SCAN_MAX_DATA, cur_item); + cur_item = (struct ndis_wlan_bssid *)((char *)cur_item + + cur_item->length); diff --git a/abs/core/ndiswrapper/ndiswrapper-CVE-2008-4395.patch b/abs/core/ndiswrapper/ndiswrapper-CVE-2008-4395.patch new file mode 100644 index 0000000..53682e0 --- /dev/null +++ b/abs/core/ndiswrapper/ndiswrapper-CVE-2008-4395.patch @@ -0,0 +1,86 @@ +diff --git a/ubuntu/ndiswrapper/iw_ndis.c b/ubuntu/ndiswrapper/iw_ndis.c +index b114ef6..01d3751 100644 +--- a/ubuntu/ndiswrapper/iw_ndis.c ++++ b/ubuntu/ndiswrapper/iw_ndis.c +@@ -47,12 +47,7 @@ int set_essid(struct ndis_device *wnd, const char *ssid, int ssid_len) + req.length = ssid_len; + if (ssid_len) + memcpy(&req.essid, ssid, ssid_len); +- DBG_BLOCK(2) { +- char buf[NDIS_ESSID_MAX_SIZE+1]; +- memcpy(buf, ssid, ssid_len); +- buf[ssid_len] = 0; +- TRACE2("ssid = '%s'", buf); +- } ++ TRACE2("ssid = '%.*s'", ssid_len, ssid); + + res = mp_set(wnd, OID_802_11_SSID, &req, sizeof(req)); + if (res) { +@@ -125,7 +120,6 @@ static int iw_get_essid(struct net_device *dev, struct iw_request_info *info, + EXIT2(return -EOPNOTSUPP); + } + memcpy(extra, req.essid, req.length); +- extra[req.length] = 0; + if (req.length > 0) + wrqu->essid.flags = 1; + else +@@ -1000,7 +994,7 @@ static int iw_set_nick(struct net_device *dev, struct iw_request_info *info, + + if (wrqu->data.length > IW_ESSID_MAX_SIZE || wrqu->data.length <= 0) + return -EINVAL; +- memset(wnd->nick, 0, sizeof(wnd->nick)); ++ wnd->nick_len = wrqu->data.length; + memcpy(wnd->nick, extra, wrqu->data.length); + return 0; + } +@@ -1010,7 +1004,7 @@ static int iw_get_nick(struct net_device *dev, struct iw_request_info *info, + { + struct ndis_device *wnd = netdev_priv(dev); + +- wrqu->data.length = strlen(wnd->nick); ++ wrqu->data.length = wnd->nick_len; + memcpy(extra, wnd->nick, wrqu->data.length); + return 0; + } +diff --git a/ubuntu/ndiswrapper/ndis.h b/ubuntu/ndiswrapper/ndis.h +index 27ba99e..65d6b0b 100644 +--- a/ubuntu/ndiswrapper/ndis.h ++++ b/ubuntu/ndiswrapper/ndis.h +@@ -878,6 +878,7 @@ struct ndis_device { + unsigned long scan_timestamp; + struct encr_info encr_info; + char nick[IW_ESSID_MAX_SIZE]; ++ size_t nick_len; + struct ndis_essid essid; + struct auth_encr_capa capa; + enum ndis_infrastructure_mode infrastructure_mode; +diff --git a/ubuntu/ndiswrapper/proc.c b/ubuntu/ndiswrapper/proc.c +index fd5f433..6feff23 100644 +--- a/ubuntu/ndiswrapper/proc.c ++++ b/ubuntu/ndiswrapper/proc.c +@@ -97,10 +97,8 @@ static int procfs_read_ndis_encr(char *page, char **start, off_t off, + p += sprintf(p, "\n"); + + res = mp_query(wnd, OID_802_11_SSID, &essid, sizeof(essid)); +- if (!res) { +- essid.essid[essid.length] = '\0'; +- p += sprintf(p, "essid=%s\n", essid.essid); +- } ++ if (!res) ++ p += sprintf(p, "essid=%.*s\n", essid.length, essid.essid); + res = mp_query_int(wnd, OID_802_11_ENCRYPTION_STATUS, &encr_status); + if (!res) { + typeof(&wnd->encr_info.keys[0]) tx_key; +diff --git a/ubuntu/ndiswrapper/wrapndis.c b/ubuntu/ndiswrapper/wrapndis.c +index f6e5d46..35ef1cd 100644 +--- a/ubuntu/ndiswrapper/wrapndis.c ++++ b/ubuntu/ndiswrapper/wrapndis.c +@@ -2028,7 +2028,7 @@ static wstdcall NTSTATUS NdisAddDevice(struct driver_object *drv_obj, + wnd->attributes = 0; + wnd->dma_map_count = 0; + wnd->dma_map_addr = NULL; +- wnd->nick[0] = 0; ++ wnd->nick_len = 0; + init_timer(&wnd->hangcheck_timer); + wnd->scan_timestamp = 0; + init_timer(&wnd->iw_stats_timer); diff --git a/abs/core/ndiswrapper/ndiswrapper.install b/abs/core/ndiswrapper/ndiswrapper.install index 696f2d4..e173d14 100644 --- a/abs/core/ndiswrapper/ndiswrapper.install +++ b/abs/core/ndiswrapper/ndiswrapper.install @@ -2,7 +2,7 @@ post_install() { ndiswrapper -m - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } @@ -11,14 +11,14 @@ post_install() post_upgrade() { ndiswrapper -m - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core/netkit-telnet/PKGBUILD b/abs/core/netkit-telnet/PKGBUILD new file mode 100644 index 0000000..5afd1a1 --- /dev/null +++ b/abs/core/netkit-telnet/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 9079 2008-08-17 03:28:25Z allan $ +# Maintainer: dorphell +pkgname=netkit-telnet +pkgver=0.17 +pkgrel=8 +pkgdesc="A telnet client (and server)" +arch=(i686 x86_64) +depends=('ncurses') +license=('GPL2' 'GPL3') # parts are GPL2, others GPL3 +source=(ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/$pkgname-$pkgver.tar.gz $pkgname-$pkgver.patch telnet.xinetd) +md5sums=('d6beabaaf53fe6e382c42ce3faa05a36' 'd56497f2c6b96e8909ed57f1be19411d' \ + 'c6e6ca4ba8e084be8ce2a170bebc17cc') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -Np1 -i ../$pkgname-$pkgver.patch + ./configure --prefix=/usr --installroot=$startdir/pkg + make || return 1 + mkdir -p $startdir/pkg/usr/{bin,sbin,share/{man/man1,man/man5,man/man8}} $startdir/pkg/etc/xinetd.d + make MANDIR=/usr/share/man install + install -m644 $startdir/src/telnet.xinetd $startdir/pkg/etc/xinetd.d/telnet +} diff --git a/abs/core/netkit-telnet/netkit-telnet-0.17.patch b/abs/core/netkit-telnet/netkit-telnet-0.17.patch new file mode 100644 index 0000000..77919e1 --- /dev/null +++ b/abs/core/netkit-telnet/netkit-telnet-0.17.patch @@ -0,0 +1,36 @@ +diff -Naur netkit-telnet-0.17-orig/telnet/proto.h netkit-telnet-0.17/telnet/proto.h +--- netkit-telnet-0.17-orig/telnet/proto.h 1997-05-19 09:32:36.000000000 +0000 ++++ netkit-telnet-0.17/telnet/proto.h 2002-09-05 01:17:24.000000000 +0000 +@@ -3,6 +3,9 @@ + void auth_encrypt_init(void); + #endif + ++#include ++#include ++ + void Exit(int); + void ExitString(const char *, int); + int TerminalAutoFlush(void); +diff -Naur netkit-telnet-0.17-orig/telnetd/telnetd.h netkit-telnet-0.17/telnetd/telnetd.h +--- netkit-telnet-0.17-orig/telnetd/telnetd.h 1999-03-27 07:46:21.000000000 +0000 ++++ netkit-telnet-0.17/telnetd/telnetd.h 2002-09-05 01:17:34.000000000 +0000 +@@ -38,6 +38,7 @@ + #include "defs.h" + #include "ext.h" + #include ++#include + + #ifdef DIAGNOSTICS + #define DIAG(a,b) if (diagnostic & (a)) b +diff -Naur netkit-telnet-0.17-orig/configure netkit-telnet-0.17/configure +--- netkit-telnet-0.17-orig/configure 2003-11-04 13:10:07.000000000 -0500 ++++ netkit-telnet-0.17/configure 2003-11-04 13:10:49.000000000 -0500 +@@ -252,7 +252,7 @@ + fi + + +-LDFLAGS= ++LDFLAGS=-lstdc++ + LIBS= + + rm -f __conftest* diff --git a/abs/core/netkit-telnet/telnet.xinetd b/abs/core/netkit-telnet/telnet.xinetd new file mode 100644 index 0000000..1a1f4ed --- /dev/null +++ b/abs/core/netkit-telnet/telnet.xinetd @@ -0,0 +1,10 @@ +service telnet +{ + flags = REUSE + socket_type = stream + wait = no + user = root + server = /usr/sbin/in.telnetd + log_on_failure += USERID + disable = yes +} diff --git a/abs/core/nfs-utils/PKGBUILD b/abs/core/nfs-utils/PKGBUILD new file mode 100644 index 0000000..32626c6 --- /dev/null +++ b/abs/core/nfs-utils/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 13100 2008-09-25 22:15:28Z ronald $ +# Maintainer: dorphell +# Contributor: John Proctor +# Contributor: dibblethewrecker + +pkgname=nfs-utils +pkgver=1.1.3 +pkgrel=2 +pkgdesc="Support programs for Network File Systems" +arch=('i686' 'x86_64') +url='http://nfs.sourceforge.net' +license=('GPL') +backup=('etc/exports' 'etc/conf.d/nfs') +depends=('glibc' 'tcp_wrappers' 'e2fsprogs' 'portmap' 'nfsidmap' 'libevent>=1.3e') +source=(http://downloads.sourceforge.net/nfs/${pkgname}-${pkgver}.tar.gz + nfsd + nfslock + exports + nfs.conf.d + start-statd.patch) +install=nfs-utils.install +md5sums=('167d231850b00c7c63300747aeb94c38' + '5a9436e492e68efaf801b9c496684541' + '5d0d31f27f2319747d4499df11485ae7' + '1358d29a549dfc37b522c35e823c6813' + 'b4aae6963ec25d226eb2d97214f5bb18' + '9c8aeff40ca25312328afe3b7fad293f') + +build() { + cd $srcdir/${pkgname}-${pkgver} + + # arch specific patch + patch -Np0 -i ../start-statd.patch || return 1 + + ./configure --prefix=/usr --enable-nfsv3 --disable-gss \ + --with-statedir=/var/lib/nfs --sysconfdir=/etc + + make || return 1 + make DESTDIR=$pkgdir install || return 1 + + install -D -m 755 ../nfsd ${startdir}/pkg/etc/rc.d/nfsd + install -D -m 755 ../nfslock ${startdir}/pkg/etc/rc.d/nfslock + install -D -m 644 ../exports ${startdir}/pkg/etc/exports + install -D -m 644 ../nfs.conf.d ${startdir}/pkg/etc/conf.d/nfs + + install -d $pkgdir/var/lib/nfs/v4recovery +} + diff --git a/abs/core/nfs-utils/exports b/abs/core/nfs-utils/exports new file mode 100644 index 0000000..c9f93c6 --- /dev/null +++ b/abs/core/nfs-utils/exports @@ -0,0 +1,8 @@ +# /etc/exports +# +# See exports(5) for a description. + +# use exportfs -arv to reread +#/export 192.168.1.10(rw,no_root_squash) + + diff --git a/abs/core/nfs-utils/nfs-utils.install b/abs/core/nfs-utils/nfs-utils.install new file mode 100644 index 0000000..380fc99 --- /dev/null +++ b/abs/core/nfs-utils/nfs-utils.install @@ -0,0 +1,38 @@ + + +post_install() { + cat << 'EOM' + + ==> + ==> PLEASE NOTE: + ==> Extended configuration options for NFS are available in + ==> /etc/conf.d/nfs. + ==> + ==> Please refer to http://wiki.archlinux.org/index.php/Nfs + ==> for further information. + ==> + +EOM +} + +post_upgrade() { + cat << 'EOM' + + ==> + ==> PLEASE NOTE: + ==> Extended configuration options for NFS are now available in + ==> /etc/conf.d/nfs. + ==> If /etc/conf.d/nfsd remains on your system from an earlier + ==> installation, transfer its settings to /etc/conf.d/nfs and + ==> delete it. + ==> + ==> Please refer to http://wiki.archlinux.org/index.php/Nfs + ==> for further information. + ==> + +EOM +} + +op=$1 +shift +$op $* diff --git a/abs/core/nfs-utils/nfs.conf.d b/abs/core/nfs-utils/nfs.conf.d new file mode 100644 index 0000000..73e396a --- /dev/null +++ b/abs/core/nfs-utils/nfs.conf.d @@ -0,0 +1,20 @@ +# Number of servers to be started up by default +NFSD_OPTS=8 + +# Options to pass to rpc.mountd +# e.g. MOUNTDOPTS="-p 32767" +MOUNTD_OPTS="--no-nfs-version 1 --no-nfs-version 2" + +# Options to pass to rpc.statd +# N.B. statd normally runs on both client and server, and run-time +# options should be specified accordingly. Specifically, the Arch +# NFS init scripts require the --no-notify flag on the server, +# but not on the client e.g. +# STATD_OPTS="--no-notify -p 32765 -o 32766" -> server +# STATD_OPTS="-p 32765 -o 32766" -> client +STATD_OPTS="" + +# Options to pass to sm-notify +# e.g. SMNOTIFY_OPTS="-p 32764" +SMNOTIFY_OPTS="" + diff --git a/abs/core/nfs-utils/nfsd b/abs/core/nfs-utils/nfsd new file mode 100755 index 0000000..ce891e2 --- /dev/null +++ b/abs/core/nfs-utils/nfsd @@ -0,0 +1,91 @@ +#!/bin/bash + +# source application-specific settings +[ -f /etc/conf.d/nfs ] && . /etc/conf.d/nfs + +. /etc/rc.conf +. /etc/rc.d/functions + +DAEMON_NAME=nfsd +NFSD_PID=`pidof -o %PPID nfsd` +MOUNTD_PID=`pidof -o %PPID /usr/sbin/rpc.mountd` +case "$1" in + start) + stat_busy "Starting $DAEMON_NAME" + # Check for portmap + if [ ! -f /var/run/daemons/portmap ]; then + echo "ERROR: portmap is not running" + stat_fail + exit 1 + fi + # Check for nfslock + if [ ! -f /var/run/daemons/nfslock ]; then + echo "ERROR: nfslock is not running" + stat_fail + exit 1 + fi + # Check for /proc/fs/nfsd + if grep -qs nfsd /proc/filesystems ; then + if ! grep -qs "nfsd /proc/fs/nfsd" /proc/mounts ; then + mount -t nfsd -o nodev,noexec,nosuid nfsd /proc/fs/nfsd + fi + fi + # Run exportfs + /usr/sbin/exportfs -r + # Run mountd + [ -z "$MOUNTD_PID" ] && /usr/sbin/rpc.mountd $MOUNTD_OPTS + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + echo `pidof -o %PPID /usr/sbin/rpc.mountd` > /var/run/rpc.mountd.pid + fi + # Run nfsd + [ -z "$NFSD_PID" ] && /usr/sbin/rpc.nfsd $NFSD_OPTS + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + echo `pidof -o %PPID nfsd` > /var/run/rpc.nfsd.pid + fi + # Run sm-notify + /usr/sbin/sm-notify $SMNOTIFY_OPTS + add_daemon $DAEMON_NAME + stat_done + ;; + + stop) + stat_busy "Stopping $DAEMON_NAME" + [ ! -z "$MOUNTD_PID" ] && kill $MOUNTD_PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + rm /var/run/rpc.mountd.pid &> /dev/null + fi + sleep 1 + [ ! -z "$NFSD_PID" ] && kill $NFSD_PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + kill -9 $NFSD_PID &> /dev/null + rm /var/run/rpc.nfsd.pid &> /dev/null + fi + if [ "$RUNLEVEL" = "0" ]; then + /usr/sbin/exportfs -au + fi + rm_daemon $DAEMON_NAME + stat_done + ;; + + restart) + $0 stop + sleep 2 + $0 start + ;; + + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/nfs-utils/nfslock b/abs/core/nfs-utils/nfslock new file mode 100755 index 0000000..f25ab3c --- /dev/null +++ b/abs/core/nfs-utils/nfslock @@ -0,0 +1,50 @@ +#!/bin/bash + +# source application-specific settings +[ -f /etc/conf.d/nfs ] && . /etc/conf.d/nfs + +. /etc/rc.conf +. /etc/rc.d/functions + +DAEMON_NAME=nfslock +PID=`pidof -o %PPID /usr/sbin/rpc.statd` +case "$1" in + start) + stat_busy "Starting $DAEMON_NAME" + # Check for /proc/fs/nfsd + if grep -qs nfsd /proc/filesystems ; then + if ! grep -qs "nfsd /proc/fs/nfsd" /proc/mounts ; then + mount -t nfsd -o nodev,noexec,nosuid nfsd /proc/fs/nfsd + fi + fi + [ -z "$PID" ] && /usr/sbin/rpc.statd $STATD_OPTS + if [ $? -gt 0 ]; then + stat_fail + else + echo `pidof rpc.statd` > /var/run/rpc.statd.pid + stat_done + add_daemon $DAEMON_NAME + fi + ;; + + stop) + stat_busy "Stopping $DAEMON_NAME" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm /var/run/rpc.statd.pid &> /dev/null + rm_daemon $DAEMON_NAME + stat_done + fi + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/nfs-utils/start-statd.patch b/abs/core/nfs-utils/start-statd.patch new file mode 100644 index 0000000..aaed93e --- /dev/null +++ b/abs/core/nfs-utils/start-statd.patch @@ -0,0 +1,21 @@ +--- utils/statd/start-statd 2007-05-11 04:40:57.000000000 +0100 ++++ utils/statd/start-statd.new 2007-09-21 17:11:34.000000000 +0100 +@@ -1,9 +1,16 @@ + #!/bin/sh ++ ++# Original script provided by the NFS project ++# Modified for Arch Linux by Tom Killian ++ + # nfsmount calls this script when mounting a filesystem with locking + # enabled, but when statd does not seem to be running (based on + # /var/run/rpc.statd.pid). + # It should run run statd with whatever flags are apropriate for this + # site. +-PATH=/sbin:/usr/sbin +-exec rpc.statd --no-notify ++ ++# source application-specific settings ++[ -f /etc/conf.d/nfs ] && . /etc/conf.d/nfs ++ ++exec /usr/sbin/rpc.statd $STATD_OPTS + diff --git a/abs/core/nfsidmap/PKGBUILD b/abs/core/nfsidmap/PKGBUILD new file mode 100644 index 0000000..401c1e7 --- /dev/null +++ b/abs/core/nfsidmap/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 13097 2008-09-25 22:11:54Z ronald $ +# Maintainer: +# Contributor: Judd + +pkgname=nfsidmap +pkgver=0.21 +pkgrel=2 +pkgdesc="Library to help mapping IDs, mainly for NFSv4" +arch=('i686' 'x86_64') +url="http://www.citi.umich.edu/projects/nfsv4/linux/" +depends=('glibc' 'libldap') +license=('custom:nfsidmap') +options=(!libtool) +source=(http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/libnfsidmap-$pkgver.tar.gz) +md5sums=('56b05e30645353befbf73bd905270d4b') + +build() { + cd $srcdir/lib$pkgname-$pkgver + ./configure --prefix=/usr --sysconfdir=/etc + make || return 1 + make DESTDIR=$pkgdir install || return 1 + + # install license + install -Dm644 COPYING \ + $pkgdir/usr/share/licenses/nfsidmap/LICENSE || return 1 +} diff --git a/abs/core/nmbscan/PKGBUILD b/abs/core/nmbscan/PKGBUILD new file mode 100755 index 0000000..7b853d2 --- /dev/null +++ b/abs/core/nmbscan/PKGBUILD @@ -0,0 +1,19 @@ +pkgname=nmbscan +pkgver=1.2.5 +pkgrel=1 +pkgdesc="nmbscan scans the shares of a SMB/NetBIOS network, using the NMB/SMB/NetBIOS protocols." +arch=(i686 x86_64) +url="http://bgarbier.free.fr" +source=("http://knoppmyth.net/repo/source/nmbscan-1.2.5.tar.gz") + + +build() { + cd $startdir/src/$pkgname-$pkgver/ + make || return 1 + mkdir -p $startdir/pkg/usr/bin + + install -D -m755 nmbscan $startdir/pkg/usr/bin/nmbscan + +} + + diff --git a/abs/core/ntfs-3g/20-ntfs-config-write-policy.fdi b/abs/core/ntfs-3g/20-ntfs-config-write-policy.fdi new file mode 100644 index 0000000..b0f5961 --- /dev/null +++ b/abs/core/ntfs-3g/20-ntfs-config-write-policy.fdi @@ -0,0 +1,13 @@ + + + + + ntfs-3g + ntfs-3g + locale= + dmask= + fmask= + + + + diff --git a/abs/core/ntfs-3g/PKGBUILD b/abs/core/ntfs-3g/PKGBUILD new file mode 100644 index 0000000..a8ae6e5 --- /dev/null +++ b/abs/core/ntfs-3g/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 35598 2009-04-14 08:38:34Z ronald $ +# Maintainer: Ronald van Haren +# Contributor: Thomas Bächler + +pkgname=ntfs-3g +pkgver=2009.4.4 +pkgrel=3 +pkgdesc="Stable read and write NTFS driver" +url="http://www.ntfs-3g.org/" +arch=('i686' 'x86_64') +license=('GPL2') +install=ntfs-3g.install +depends=('glibc') +makedepends=('pkgconfig') +options=('!libtool') +source=(http://www.ntfs-3g.org/${pkgname}-${pkgver}.tgz + 20-ntfs-config-write-policy.fdi) +md5sums=('e0b5c170f088a8d82968f0a6b34d31da' + 'ece35a9108837e2008e5a47f3390755e') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + # use internal fuse at least until fuse 2.8.0 is relased, it contains + # some bug & security fixes + ac_cv_path_LDCONFIG=/bin/true ./configure --prefix=/usr \ + --with-fuse=internal || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + install -m755 -d "${pkgdir}/usr/share/hal/fdi/policy/10osvendor" + install -m644 "${srcdir}/20-ntfs-config-write-policy.fdi" "${pkgdir}/usr/share/hal/fdi/policy/10osvendor/" || return 1 +} diff --git a/abs/core/ntfs-3g/ntfs-3g.install b/abs/core/ntfs-3g/ntfs-3g.install new file mode 100644 index 0000000..ad8cc1b --- /dev/null +++ b/abs/core/ntfs-3g/ntfs-3g.install @@ -0,0 +1,15 @@ +# arg 1: the new package version +post_install() { + ln -s /sbin/mount.ntfs-3g /sbin/mount.ntfs +} +# arg 1: the new package version +# arg 2: the old package version + +# arg 1: the old package version +post_remove() { + rm -fr /sbin/mount.ntfs +} + +op=$1 +shift +$op $* diff --git a/abs/core/ntp/PKGBUILD b/abs/core/ntp/PKGBUILD new file mode 100755 index 0000000..fc568b0 --- /dev/null +++ b/abs/core/ntp/PKGBUILD @@ -0,0 +1,26 @@ +pkgname=ntp +pkgver=4.2.4p5 +pkgrel=3 +pkgdesc="NTP (Network Time Protocol) tries to keep servers in sync" +arch=(i686 x86_64) +url="http://www.ntp.org/" +depends=('openssl' 'readline' ) +backup=('etc/ntp.conf' 'conf.d/ntp-client.conf') +source=(http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.4p5.tar.gz \ + ntp.conf ntp-client.conf ntpd ntpdate ) + + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install + mkdir -p $startdir/pkg/usr/share/ntp/ $startdir/pkg/usr/man/man1/ + install -D -m644 conf/* $startdir/pkg/usr/share/ntp/ + install -D -m755 $startdir/ntpd $startdir/pkg/etc/rc.d/ntpd + install -D -m755 $startdir/ntpdate $startdir/pkg/etc/rc.d/ntpdate + install -D -m644 $startdir/src/man/* $startdir/pkg/usr/man/man1/ + install -D -m644 $startdir/ntp-client.conf $startdir/pkg/etc/conf.d/ntp-client.conf + install -D -m644 $startdir/ntp.conf $startdir/pkg/etc/ntp.conf +} + diff --git a/abs/core/ntp/ntp-client.conf b/abs/core/ntp/ntp-client.conf new file mode 100755 index 0000000..ace4daf --- /dev/null +++ b/abs/core/ntp/ntp-client.conf @@ -0,0 +1,7 @@ +# change this to a server closer to your location +NTP_CLIENT_SERVER="pool.ntp.org" +# client options +NTP_CLIENT_OPTION="-b -u" + +# timeout for the ntp-client +NTPCLIENT_TIMEOUT=10 diff --git a/abs/core/ntp/ntp.conf b/abs/core/ntp/ntp.conf new file mode 100755 index 0000000..9411643 --- /dev/null +++ b/abs/core/ntp/ntp.conf @@ -0,0 +1,57 @@ +# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help + +#driftfile /var/lib/ntp/ntp.drift +driftfile /etc/ntp.drift + + +# Enable this if you want statistics to be logged. +#statsdir /var/log/ntpstats/ + +statistics loopstats peerstats clockstats +filegen loopstats file loopstats type day enable +filegen peerstats file peerstats type day enable +filegen clockstats file clockstats type day enable + + +# You do need to talk to an NTP server or two (or three). +#server ntp.your-provider.example + +# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will +# pick a different set every time it starts up. Please consider joining the +# pool: +server pool.ntp.org +server 0.us.pool.ntp.org iburst +server 1.us.pool.ntp.org iburst +server 2.us.pool.ntp.org iburst +server 3.us.pool.ntp.org iburst + + +# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for +# details. The web page +# might also be helpful. +# +# Note that "restrict" applies to both servers and clients, so a configuration +# that might be intended to block requests from certain clients could also end +# up blocking replies from your own upstream servers. + +# By default, exchange time with everybody, but don't allow configuration. +restrict -4 default kod notrap nomodify nopeer noquery +restrict -6 default kod notrap nomodify nopeer noquery + +# Local users may interrogate the ntp server more closely. +restrict 127.0.0.1 +restrict ::1 + +# Clients from this (example!) subnet have unlimited access, but only if +# cryptographically authenticated. +#restrict 192.168.123.0 mask 255.255.255.0 notrust + + +# If you want to provide time to your local subnet, change the next line. +# (Again, the address is an example only.) +#broadcast 192.168.123.255 + +# If you want to listen to time broadcasts on your local subnet, de-comment the +# next lines. Please do this only if you trust everybody on the network! +#disable auth +#broadcastclient \ No newline at end of file diff --git a/abs/core/ntp/ntpd b/abs/core/ntp/ntpd new file mode 100755 index 0000000..bb39123 --- /dev/null +++ b/abs/core/ntp/ntpd @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/ntpd` +case "$1" in + start) + stat_busy "Starting NTP Daemon" + if [ -z "$PID" ]; then + /usr/bin/ntpd -g & + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + PID=`pidof -o %PPID /usr/bin/ntpd` + echo $PID > /var/run/ntpd.pid + add_daemon ntpd + stat_done + fi + ;; + stop) + stat_busy "Stopping NTP Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon ntpd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core/ntp/ntpdate b/abs/core/ntp/ntpdate new file mode 100755 index 0000000..643ae19 --- /dev/null +++ b/abs/core/ntp/ntpdate @@ -0,0 +1,30 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/ntp-client.conf + +case "$1" in + start) + stat_busy "Starting NTP Client" + /usr/bin/ntpdate $NTP_CLIENT_OPTION -t $NTPCLIENT_TIMEOUT $NTP_CLIENT_SERVER > /dev/null 2>&1 + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon ntpdate + stat_done + fi + ;; + stop) + stat_busy "Stopping NTP Client" + rm_daemon ntpdate + stat_done + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core/nuvexport/MP4.pm b/abs/core/nuvexport/MP4.pm new file mode 100755 index 0000000..e13d44b --- /dev/null +++ b/abs/core/nuvexport/MP4.pm @@ -0,0 +1,316 @@ +#!/usr/bin/perl -w +# +# ffmpeg-based MP4 (iPod) video module for nuvexport. +# +# Many thanks to cartman in #ffmpeg, and for the instructions at +# http://rob.opendot.cl/index.php?active=3&subactive=1 +# http://videotranscoding.wikispaces.com/EncodeForIPodorPSP +# +# @url $URL: svn+ssh://xris@svn.mythtv.org/var/lib/svn/trunk/mythextras/nuvexport/export/ffmpeg/MP4.pm $ +# @date $Date: 2008-02-16 20:54:43 -0800 (Sat, 16 Feb 2008) $ +# @version $Revision: 16110 $ +# @author $Author: xris $ +# @copyright Silicon Mechanics +# + +package export::ffmpeg::MP4; + use base 'export::ffmpeg'; + +# Load the myth and nuv utilities, and make sure we're connected to the database + use nuv_export::shared_utils; + use nuv_export::cli; + use nuv_export::ui; + use mythtv::recordings; + +# Load the following extra parameters from the commandline + add_arg('quantisation|q=i', 'Quantisation'); + add_arg('a_bitrate|a=i', 'Audio bitrate'); + add_arg('v_bitrate|v=i', 'Video bitrate'); + add_arg('multipass!', 'Enable two-pass encoding.'); + add_arg('mp4_codec=s', 'Video codec to use for MP4/iPod video (mpeg4 or h264).'); + add_arg('mp4_fps=s', 'Framerate to use: auto, 25, 23.97, 29.97.'); + add_arg('ipod!', 'Produce ipod-compatible output.'); + + sub new { + my $class = shift; + my $self = { + 'cli' => qr/\b(?:mp4|ipod)\b/i, + 'name' => 'Export to MP4 (iPod)', + 'enabled' => 1, + 'errors' => [], + 'defaults' => {}, + }; + bless($self, $class); + + # Initialize the default parameters + $self->load_defaults(); + + # Verify any commandline or config file options + die "Audio bitrate must be > 0\n" unless (!defined $self->val('a_bitrate') || $self->{'a_bitrate'} > 0); + die "Video bitrate must be > 0\n" unless (!defined $self->val('v_bitrate') || $self->{'v_bitrate'} > 0); + die "Width must be > 0\n" unless (!defined $self->val('width') || $self->{'width'} =~ /^\s*\D/ || $self->{'width'} > 0); + die "Height must be > 0\n" unless (!defined $self->val('height') || $self->{'height'} =~ /^\s*\D/ || $self->{'height'} > 0); + + # VBR, multipass, etc. + if ($self->val('multipass')) { + $self->{'vbr'} = 1; + } + elsif ($self->val('quantisation')) { + die "Quantisation must be a number between 1 and 31 (lower means better quality).\n" if ($self->{'quantisation'} < 1 || $self->{'quantisation'} > 31); + $self->{'vbr'} = 1; + } + + # Initialize and check for ffmpeg + $self->init_ffmpeg(); + + # Can we even encode mp4? + if (!$self->can_encode('mp4')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to mp4 file formats."; + } + if (!$self->can_encode('aac') && !$self->can_encode('libfaac')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to aac audio."; + } + if (!$self->can_encode('mpeg4') && !$self->can_encode('h264') && !$self->can_encode('libx264')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to either mpeg4 or h264 video."; + } + # Any errors? disable this function + $self->{'enabled'} = 0 if ($self->{'errors'} && @{$self->{'errors'}} > 0); + # Return + return $self; + } + +# Load default settings + sub load_defaults { + my $self = shift; + # Load the parent module's settings + $self->SUPER::load_defaults(); + # Default settings + $self->{'defaults'}{'v_bitrate'} = 384; + $self->{'defaults'}{'a_bitrate'} = 64; + $self->{'defaults'}{'width'} = 320; + $self->{'defaults'}{'mp4_codec'} = 'mpeg4'; + # Verify commandline options + if ($self->val('mp4_codec') !~ /^(?:mpeg4|h264)$/i) { + die "mp4_codec must be either mpeg4 or h264.\n"; + } + $self->{'mp4_codec'} =~ tr/A-Z/a-z/; + + } + +# Gather settings from the user + sub gather_settings { + my $self = shift; + # Load the parent module's settings + $self->SUPER::gather_settings(); + # Audio Bitrate + $self->{'a_bitrate'} = query_text('Audio bitrate?', + 'int', + $self->val('a_bitrate')); + # Video options + if (!$is_cli) { + # iPod compatibility mode? + $self->{'ipod'} = query_text('Enable iPod compatibility?', + 'yesno', + $self->val('ipod')); + # Video codec + if ($self->{'ffmpeg_vers'} eq 'svn') { + while (1) { + my $codec = query_text('Video codec (mpeg4 or h264)?', + 'string', + $self->{'mp4_codec'}); + if ($codec =~ /^m/) { + $self->{'mp4_codec'} = 'mpeg4'; + last; + } + elsif ($codec =~ /^h/) { + $self->{'mp4_codec'} = 'h264'; + last; + } + print "Please choose either mpeg4 or h264\n"; + } + } + else { + $self->{'mp4_codec'} = 'mpeg4'; + print "Using the mpeg4 codec (h.264 mp4/ipod encoding requires the svn version of ffmpeg.)\n"; + } + # Video bitrate options + $self->{'vbr'} = query_text('Variable bitrate video?', + 'yesno', + $self->val('vbr')); + if ($self->{'vbr'}) { + $self->{'multipass'} = query_text('Multi-pass (slower, but better quality)?', + 'yesno', + $self->val('multipass')); + if (!$self->{'multipass'}) { + while (1) { + my $quantisation = query_text('VBR quality/quantisation (1-31)?', + 'float', + $self->val('quantisation')); + if ($quantisation < 1) { + print "Too low; please choose a number between 1 and 31.\n"; + } + elsif ($quantisation > 31) { + print "Too high; please choose a number between 1 and 31\n"; + } + else { + $self->{'quantisation'} = $quantisation; + last; + } + } + } + } else { + $self->{'multipass'} = 0; + } + # Ask the user what video bitrate he/she wants + $self->{'v_bitrate'} = query_text('Video bitrate?', + 'int', + $self->val('v_bitrate')); + } + # Complain about h264 + if ($self->{'mp4_codec'} eq 'h264' && $self->{'ffmpeg_vers'} ne 'svn') { + die "h.264 mp4/ipod encoding requires the svn version of ffmpeg.\n"; + } + # Loop, in case we need to verify ipod compatibility + while (1) { + # Query the resolution + $self->query_resolution(); + # Warn about ipod resolution + if ($self->val('ipod') && ($self->{'height'} > 480 || $self->{'width'} > 640)) { + my $note = "WARNING: Video larger than 640x480 will not play on an iPod.\n"; + die $note if ($is_cli); + print $note; + next; + } + # Done looping + last; + } + } + + sub export { + my $self = shift; + my $episode = shift; + # Make sure this is set to anamorphic mode + $self->{'aspect_stretched'} = 1; + # Framerate + my $standard = ($episode->{'finfo'}{'fps'} =~ /^2(?:5|4\.9)/) ? 'PAL' : 'NTSC'; + if ($standard eq 'PAL') { + $self->{'out_fps'} = 25; + } + elsif ($self->val('mp4_fps') =~ /^23/) { + $self->{'out_fps'} = 23.97; + } + elsif ($self->val('mp4_fps') =~ /^29/) { + $self->{'out_fps'} = 29.97; + } + else { + $self->{'out_fps'} = ($self->{'width'} > 320 || $self->{'height'} > 288) ? 29.97 : 23.97; + } + # Embed the title + $safe_title = $episode->{'title'}; + if ($episode->{'subtitle'} ne 'Untitled') { + $safe_title .= ' - '.$episode->{'subtitle'}; + } + my $safe_title = shell_escape($safe_title); + # Codec name changes between ffmpeg versions + my $codec = $self->{'mp4_codec'}; + if ($codec eq 'h264' && $self->can_encode('libx264')) { + $codec = 'libx264'; + } + # Build the common ffmpeg string + my $ffmpeg_xtra = ' -vcodec '.$codec + .$self->param('bit_rate', $self->{'v_bitrate'}) + ;### ." -title $safe_title"; + # Options required for the codecs separately + if ($self->{'mp4_codec'} eq 'h264') { + $ffmpeg_xtra .= ' -level 30' + ### .' -loop 1' + .' -g 250 -keyint_min 25' + .' -sc_threshold 40' + ### .' -rc_eq \'blurCplx^(1-qComp)\'' + .$self->param('bit_rate_tolerance', $self->{'v_bitrate'}) + .$self->param('rc_max_rate', 1500 - $self->{'a_bitrate'}) + .$self->param('rc_buffer_size', 2000) + .$self->param('i_quant_factor', 0.71428572) + .$self->param('b_quant_factor', 0.76923078) + .$self->param('max_b_frames', 0) + ### .' -me umh' # this will eventually be me_method, but not all ffmpeg versions support it yet + ; + } + else { + $ffmpeg_xtra .= ' -flags +mv4' ## +trell+loop' + ### .' -aic 1' + .' -mbd 1' + .' -cmp 2 -subcmp 2' + ; + } + # Some shared options + if ($self->{'multipass'} || $self->{'vbr'}) { + $ffmpeg_xtra .= $self->param('qcompress', 0.6) + .$self->param('qmax', 51) + .$self->param('max_qdiff', 4) + ; + } + # Dual pass? + if ($self->{'multipass'}) { + # Apparently, the -passlogfile option doesn't work for h264, so we need + # to be aware of other processes that might be working in this directory + if ($self->{'mp4_codec'} eq 'h264' && (-e 'x264_2pass.log.temp' || -e 'x264_2pass.log')) { + die "ffmpeg does not allow us to specify the name of the multi-pass log\n" + ."file, and x264_2pass.log exists in this directory already. Please\n" + ."wait for the other process to finish, or remove the stale file.\n"; + } + # Add all possible temporary files to the list + push @tmpfiles, 'x264_2pass.log', + 'x264_2pass.log.temp', + 'ffmpeg2pass-0.log'; + # Build the ffmpeg string + print "First pass...\n"; + $self->{'ffmpeg_xtra'} = ' -pass 1' + .$ffmpeg_xtra + .' -f mp4'; + if ($self->{'mp4_codec'} eq 'h264') { + $self->{'ffmpeg_xtra'} .= ' -refs 1 -subq 1' + .' -trellis 0' + ; + } + $self->SUPER::export($episode, '', 1); + # Second Pass + print "Final pass...\n"; + $ffmpeg_xtra = ' -pass 2 ' + .$ffmpeg_xtra; + } + # Single Pass + else { + if ($self->{'vbr'}) { + $ffmpeg_xtra .= ' -qmin '.$self->{'quantisation'}; + } + } + # Single/final pass options + if ($self->{'mp4_codec'} eq 'h264') { + $ffmpeg_xtra .= ' -refs '.($self->val('ipod') ? 2 : 7) + .' -subq 7' + .' -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8' + .' -flags2 +bpyramid+wpred+mixed_refs+8x8dct' ##+brdo' + .' -me_range 21' + .' -trellis 2' + .' -chromaoffset 1' + ### .' -slice 2' + ### .' -cmp 1' + # These should match the defaults: + .' -deblockalpha 0 -deblockbeta 0' + ; + } + # Audio codec name changes between ffmpeg versions + my $acodec = $self->can_encode('libfaac') ? 'libfaac' : 'aac'; + # Don't forget the audio, etc. + $self->{'ffmpeg_xtra'} = $ffmpeg_xtra + ." -acodec $acodec -ar 48000 -async 1" + .$self->param('ab', $self->{'a_bitrate'}); + # Execute the (final pass) encode + $self->SUPER::export($episode, '.mp4'); + } + +1; #return true + +# vim:ts=4:sw=4:ai:et:si:sts=4 + diff --git a/abs/core/nuvexport/PKGBUILD b/abs/core/nuvexport/PKGBUILD index e414b1e..27369de 100644 --- a/abs/core/nuvexport/PKGBUILD +++ b/abs/core/nuvexport/PKGBUILD @@ -4,7 +4,7 @@ pkgname=nuvexport pkgver=20080311 relnum=0.5 -pkgrel=1 +pkgrel=3 pkgdesc="Export for MythTV nuv files to other formats (DVD/SVCD/DivX,etc.)" arch=(i686 x86_64) url="http://forevermore.net/files/nuvexport" @@ -15,7 +15,7 @@ conflicts=() replaces=() backup=() install= -source=(http://forevermore.net/files/nuvexport/$pkgname-$relnum-0.$pkgver.svn.tar.bz2 $pkgname-ipod-disable.patch) +source=(http://forevermore.net/files/nuvexport/archive/$pkgname-$relnum-0.$pkgver.svn.tar.bz2 $pkgname-ipod-disable.patch MP4.pm XviD.pm) md5sums=('2d0a99623f06394daf3bf8769536d3cd' 'acd2dad9987e68359ead8b0be5e5797c') build() { @@ -28,4 +28,6 @@ build() { mkdir $startdir/pkg/usr || return 1 make install || return 1 sed -i "s|/tmp/fifodir|/var/tmp/fifodir|g" $startdir/pkg/usr/share/nuvexport/export/*.pm || return 1 + cp $startdir/src/MP4.pm $startdir/pkg/usr/share/nuvexport/export/ffmpeg/MP4.pm + cp $startdir/src/XviD.pm $startdir/pkg/usr/share/nuvexport/export/ffmpeg/XviD.pm } diff --git a/abs/core/nuvexport/XviD.pm b/abs/core/nuvexport/XviD.pm new file mode 100755 index 0000000..c4700f5 --- /dev/null +++ b/abs/core/nuvexport/XviD.pm @@ -0,0 +1,197 @@ +# +# ffmpeg-based XviD export module for nuvexport. +# +# @url $URL: svn+ssh://xris@svn.mythtv.org/var/lib/svn/trunk/mythextras/nuvexport/export/ffmpeg/XviD.pm $ +# @date $Date: 2008-02-19 20:47:06 -0800 (Tue, 19 Feb 2008) $ +# @version $Revision: 16175 $ +# @author $Author: xris $ +# @copyright Silicon Mechanics +# + +package export::ffmpeg::XviD; + use base 'export::ffmpeg'; + +# Load the myth and nuv utilities, and make sure we're connected to the database + use nuv_export::shared_utils; + use nuv_export::cli; + use nuv_export::ui; + use mythtv::recordings; + +# Load the following extra parameters from the commandline + add_arg('quantisation|q=i', 'Quantisation'); + add_arg('a_bitrate|a=i', 'Audio bitrate'); + add_arg('v_bitrate|v=i', 'Video bitrate'); + add_arg('multipass!', 'Enable two-pass encoding.'); + + sub new { + my $class = shift; + my $self = { + 'cli' => qr/\bxvid\b/i, + 'name' => 'Export to XviD', + 'enabled' => 1, + 'errors' => [], + 'defaults' => {}, + }; + bless($self, $class); + + # Initialize the default parameters + $self->load_defaults(); + + # Verify any commandline or config file options + die "Audio bitrate must be > 0\n" unless (!defined $self->val('a_bitrate') || $self->{'a_bitrate'} > 0); + die "Video bitrate must be > 0\n" unless (!defined $self->val('v_bitrate') || $self->{'v_bitrate'} > 0); + die "Width must be > 0\n" unless (!defined $self->val('width') || $self->{'width'} =~ /^\s*\D/ || $self->{'width'} > 0); + die "Height must be > 0\n" unless (!defined $self->val('height') || $self->{'height'} =~ /^\s*\D/ || $self->{'height'} > 0); + + # VBR, multipass, etc. + if ($self->val('multipass')) { + $self->{'vbr'} = 1; + } + elsif ($self->val('quantisation')) { + die "Quantisation must be a number between 1 and 31 (lower means better quality).\n" if ($self->{'quantisation'} < 1 || $self->{'quantisation'} > 31); + $self->{'vbr'} = 1; + } + + # Initialize and check for ffmpeg + $self->init_ffmpeg(); + + # Can we even encode xvid? + if (!$self->can_encode('xvid') && !$self->can_encode('libxvid')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to xvid.\n" + ." (It must be compiled with the --enable-libxvid option)"; + } + if (!$self->can_encode('mp3') && !$self->can_encode('libmp3lame')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to mp3 audio."; + } + + # Any errors? disable this function + $self->{'enabled'} = 0 if ($self->{'errors'} && @{$self->{'errors'}} > 0); + # Return + return $self; + } + +# Load default settings + sub load_defaults { + my $self = shift; + # Load the parent module's settings + $self->SUPER::load_defaults(); + # Default bitrates and resolution + $self->{'defaults'}{'a_bitrate'} = 128; + $self->{'defaults'}{'v_bitrate'} = 960; + $self->{'defaults'}{'width'} = 624; + } + +# Gather settings from the user + sub gather_settings { + my $self = shift; + # Load the parent module's settings + $self->SUPER::gather_settings(); + # Audio Bitrate + $self->{'a_bitrate'} = query_text('Audio bitrate?', + 'int', + $self->val('a_bitrate')); + # VBR options + if (!$is_cli) { + $self->{'vbr'} = query_text('Variable bitrate video?', + 'yesno', + $self->val('vbr')); + if ($self->{'vbr'}) { + $self->{'multipass'} = query_text('Multi-pass (slower, but better quality)?', + 'yesno', + $self->val('multipass')); + if (!$self->{'multipass'}) { + while (1) { + my $quantisation = query_text('VBR quality/quantisation (1-31)?', + 'float', + $self->val('quantisation')); + if ($quantisation < 1) { + print "Too low; please choose a number between 1 and 31.\n"; + } + elsif ($quantisation > 31) { + print "Too high; please choose a number between 1 and 31\n"; + } + else { + $self->{'quantisation'} = $quantisation; + last; + } + } + } + } else { + $self->{'multipass'} = 0; + } + # Ask the user what video bitrate he/she wants + $self->{'v_bitrate'} = query_text('Video bitrate?', + 'int', + $self->val('v_bitrate')); + } + # Query the resolution + $self->query_resolution(); + } + + sub export { + my $self = shift; + my $episode = shift; + # Make sure we have the framerate + $self->{'out_fps'} = $episode->{'finfo'}{'fps'}; + # Embed the title + $safe_title = $episode->{'title'}; + if ($episode->{'subtitle'} ne 'Untitled') { + $safe_title .= ' - '.$episode->{'subtitle'}; + } + my $safe_title = shell_escape($safe_title); + # Codec name changes between ffmpeg versions + my $codec = $self->can_encode('libxvid') ? 'libxvid' : 'xvid'; + # Build the common ffmpeg string + my $ffmpeg_xtra = ' -vcodec '.$codec + .$self->param('bit_rate', $self->{'v_bitrate'}) + .($self->{'vbr'} + ? $self->param('rc_min_rate', 32) + . $self->param('rc_max_rate', (2 * $self->{'v_bitrate'})) + . $self->param('bit_rate_tolerance', 32) + . ' -bufsize 65535' + : '') + .' -flags +mv4+loop+cgop' + .' -trellis 1' + ### .' -aic 1' + .' -mbd 1' + .' -cmp 2 -subcmp 2' + ### .' -cgop 1' + .$self->param('b_quant_factor', 150) + .$self->param('b_quant_offset', 100) + .$self->param('max_b_frames', 1) + ; + # Dual pass? + if ($self->{'multipass'}) { + # Add the temporary file to the list + push @tmpfiles, "/tmp/xvid.$$.log"; + # First pass + print "First pass...\n"; + $self->{'ffmpeg_xtra'} = $ffmpeg_xtra + ." -pass 1 -passlogfile '/tmp/xvid.$$.log'" + .' -f avi'; + $self->SUPER::export($episode, '', 1); + # Second pass + print "Final pass...\n"; + $self->{'ffmpeg_xtra'} = $ffmpeg_xtra + . " -pass 2 -passlogfile '/tmp/xvid.$$.log'"; + } + # Single Pass + else { + $self->{'ffmpeg_xtra'} = $ffmpeg_xtra + .($self->{'vbr'} + ? ' -qmax 31 -qmin '.$self->{'quantisation'} + : ''); + } + # Don't forget the audio, etc. + $self->{'ffmpeg_xtra'} .= ' -acodec ' + .($self->can_encode('libmp3lame') ? 'libmp3lame' : 'mp3') + .' -async 1 ' + .$self->param('ab', $self->{'a_bitrate'}) + .' -f avi'; + # Execute the (final pass) encode + $self->SUPER::export($episode, '.avi'); + } + +1; #return true + +# vim:ts=4:sw=4:ai:et:si:sts=4 diff --git a/abs/core/nvidia-71xx-utils/PKGBUILD b/abs/core/nvidia-71xx-utils/PKGBUILD new file mode 100644 index 0000000..9522ff8 --- /dev/null +++ b/abs/core/nvidia-71xx-utils/PKGBUILD @@ -0,0 +1,63 @@ +# $Id: PKGBUILD 5949 2008-07-21 20:32:38Z thomas $ +# Maintainer: Tobias Powalowski +# Contributor: James Rayner + +pkgname=nvidia-71xx-utils +pkgver=71.86.09 +pkgrel=1 +pkgdesc="NVIDIA legacy drivers utilities and libraries, 71xx branch." +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-utils' \ + 'nvidia-96xx-utils' 'nvidia-legacy-utils') +replaces=('nvidia-legacy-utils') +provides=('libgl') +license=('custom') +install=nvidia-71xx.install +source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \ + supported-cards.txt) +options=(docs !strip) +md5sums=('51ce70e2ba967a2bad1cf01ce25c7f76' + '6363d7e494d33729609540088e33e73f') +[ "$CARCH" = "x86_64" ] && md5sums=('205599549ddd6fadecfbc1adb090dfe2' + '6363d7e494d33729609540088e33e73f') + +build() +{ + # override nvida install routine and do it the long way. + cd $startdir/src/ + sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only + cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/ + + mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps} + mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers} + mkdir -p $startdir/pkg/usr/share/licenses/nvidia-71xx/ + + install lib/{libGLcore.so.${pkgver},libGL.so.${pkgver},tls/libnvidia-tls.so.${pkgver}} \ + $startdir/pkg/usr/lib/ || 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/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,bug-report.sh} $startdir/pkg/usr/bin/ || return 1 + cd $startdir/pkg/usr/lib/ + ln -s /usr/lib/libGL.so.$pkgver libGL.so || return 1 + ln -s /usr/lib/libGL.so.$pkgver libGL.so.1 || return 1 + ln -s /usr/lib/libGLcore.so.$pkgver libGLcore.so.1 || return 1 + ln -s /usr/lib/libnvidia-tls.so.$pkgver libnvidia-tls.so.1 || return 1 + cd $startdir/pkg/usr/lib/xorg/modules/extensions + ln -s /usr/lib/xorg/modules/extensions/libglx.so.$pkgver libglx.so || return 1 + + install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/LICENSE $startdir/pkg/usr/share/licenses/nvidia-71xx/ || return 1 + install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/share/doc/README $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/nvidia-71xx-utils/nvidia-71xx.install b/abs/core/nvidia-71xx-utils/nvidia-71xx.install new file mode 100644 index 0000000..cea8f32 --- /dev/null +++ b/abs/core/nvidia-71xx-utils/nvidia-71xx.install @@ -0,0 +1,29 @@ +# 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-71xx/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 'gtk2' package. + echo ------------------------------- + + ### removing outdated workaround + if grep 'create-nvidia-nodes.sh' /etc/modprobe.conf >/dev/null 2>&1; then + cat /etc/modprobe.conf | grep -v 'create-nvidia-nodes.sh' \ + >/tmp/.pacnvidia + mv /tmp/.pacnvidia /etc/modprobe.conf + chmod 644 etc/modprobe.conf + fi +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +op=$1 +shift +$op $* diff --git a/abs/core/nvidia-71xx-utils/supported-cards.txt b/abs/core/nvidia-71xx-utils/supported-cards.txt new file mode 100644 index 0000000..d4f26ea --- /dev/null +++ b/abs/core/nvidia-71xx-utils/supported-cards.txt @@ -0,0 +1,236 @@ +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 1.0.9746 README lists the supported devices +for each of those: + +______________________________________________________________________________ + +Appendix A. Supported NVIDIA Graphics Chips +______________________________________________________________________________ + +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 1.0-9746 +driver, and then go to the Supported Products List. + + + NVIDIA chip name Device PCI ID + ---------------------------------- ---------------------------------- + GeForce 6800 Ultra 0x0040 + GeForce 6800 0x0041 + GeForce 6800 XE 0x0043 + GeForce 6800 XT 0x0044 + GeForce 6800 GT 0x0045 + GeForce 6800 GT 0x0046 + GeForce 6800 GS 0x0047 + GeForce 6800 XT 0x0048 + Quadro FX 4000 0x004E + GeForce 7800 GTX 0x0090 + GeForce 7800 GTX 0x0091 + GeForce 7800 GT 0x0092 + GeForce 7800 GS 0x0093 + GeForce Go 7800 0x0098 + GeForce Go 7800 GTX 0x0099 + Quadro FX 4500 0x009D + GeForce 6800 GS 0x00C0 + GeForce 6800 0x00C1 + GeForce 6800 LE 0x00C2 + GeForce 6800 XT 0x00C3 + GeForce Go 6800 0x00C8 + GeForce Go 6800 Ultra 0x00C9 + Quadro FX Go1400 0x00CC + Quadro FX 3450/4000 SDI 0x00CD + Quadro FX 1400 0x00CE + 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 0x00F6 + Quadro FX 3400/4400 0x00F8 + GeForce 6800 Ultra 0x00F9 + GeForce PCX 5750 0x00FA + GeForce PCX 5900 0x00FB + GeForce PCX 5300/Quadro FX 330 0x00FC + Quadro NVS 280 PCI-E/Quadro FX 330 0x00FD + Quadro FX 1300 0x00FE + 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 + Quadro NVS 440 0x014A + Quadro FX 550 0x014C + Quadro FX 540 0x014E + GeForce 6200 0x014F + GeForce 6500 0x0160 + GeForce 6200 TurboCache(TM) 0x0161 + GeForce 6200 LE 0x0163 + GeForce Go 6200 0x0164 + Quadro NVS 285 0x0165 + GeForce Go 6400 0x0166 + GeForce Go 6200 0x0167 + GeForce Go 6400 0x0168 + GeForce 8800 GTX 0x0191 + GeForce 8800 GTS 0x0193 + GeForce 7300 LE 0x01D1 + GeForce 7300 SE 0x01D3 + Quadro NVS 110M/GeForce Go 7300 0x01D7 + GeForce Go 7400 0x01D8 + Quadro NVS 110M 0x01DA + Quadro NVS 120M 0x01DB + Quadro FX 350M 0x01DC + Quadro FX 350 0x01DE + GeForce 7300 GS 0x01DF + GeForce 6800 0x0211 + GeForce 6800 LE 0x0212 + GeForce 6800 GT 0x0215 + GeForce 6800 XT 0x0218 + GeForce 6200 0x0221 + GeForce 6150 0x0240 + GeForce 6150 LE 0x0241 + GeForce 6100 0x0242 + GeForce Go 6100 0x0247 + GeForce 7900 GTX 0x0290 + GeForce 7900 GT/GTO 0x0291 + GeForce 7900 GS 0x0292 + GeForce 7950 GX2 0x0294 + GeForce Go 7900 GS 0x0298 + GeForce Go 7900 GTX 0x0299 + Quadro FX 2500M 0x029A + Quadro FX 1500M 0x029B + Quadro FX 5500 0x029C + Quadro FX 3500M 0x029D + Quadro FX 1500 0x029E + Quadro FX 4500 X2 0x029F + GeForce 7600 GS 0x02E1 + GeForce FX 5800 Ultra 0x0301 + GeForce FX 5800 0x0302 + Quadro FX 2000 0x0308 + Quadro FX 1000 0x0309 + GeForce FX 5600 Ultra 0x0311 + GeForce FX 5600 0x0312 + GeForce FX 5600XT 0x0314 + GeForce FX Go5600 0x031A + GeForce FX Go5650 0x031B + Quadro FX Go700 0x031C + 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 + Quadro NVS 55/280 PCI 0x032A + Quadro FX 500/FX 600 0x032B + 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 + Quadro FX 3000 0x0338 + Quadro FX 700 0x033F + 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 + Quadro FX Go1000 0x034C + Quadro FX 1100 0x034E + GeForce 7600 GT 0x0391 + GeForce 7600 GS 0x0392 + GeForce 7300 GT 0x0393 + GeForce Go 7600 0x0398 + Quadro FX 560 0x039E + + +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 chip name 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 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 chip name Device PCI ID + ---------------------------------- ---------------------------------- + RIVA TNT 0x0020 + RIVA TNT2/TNT2 Pro 0x0028 + RIVA TNT2 Ultra 0x0029 + Vanta/Vanta LT 0x002C + RIVA TNT2 Model 64/Model 64 Pro 0x002D + Aladdin TNT2 0x00A0 + GeForce 256 0x0100 + GeForce DDR 0x0101 + Quadro 0x0103 + GeForce2 GTS/GeForce2 Pro 0x0150 + GeForce2 Ti 0x0151 + GeForce2 Ultra 0x0152 + Quadro2 Pro 0x0153 diff --git a/abs/core/nvidia-71xx/NVIDIA_kernel-96.43.05-2290218.diff.txt b/abs/core/nvidia-71xx/NVIDIA_kernel-96.43.05-2290218.diff.txt new file mode 100644 index 0000000..0dfcfd5 --- /dev/null +++ b/abs/core/nvidia-71xx/NVIDIA_kernel-96.43.05-2290218.diff.txt @@ -0,0 +1,1471 @@ +diff -ru usr/src/nv/Makefile.kbuild usr/src/nv.2305230/Makefile.kbuild +--- usr/src/nv/Makefile.kbuild 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/Makefile.kbuild 2008-03-18 12:55:25.461856977 -0700 +@@ -176,6 +176,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.2305230/conftest.sh +--- usr/src/nv/conftest.sh 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/conftest.sh 2008-03-18 12:55:28.782046180 -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 + ;; +@@ -501,6 +529,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.2305230/nv-linux.h +--- usr/src/nv/nv-linux.h 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/nv-linux.h 2008-03-18 12:57:26.340745475 -0700 +@@ -19,8 +19,8 @@ + #include + + +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) +-# error This driver does not support pre-2.4 kernels! ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 7) ++# error This driver does not support 2.4 kernels older than 2.4.7! + #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) + # define KERNEL_2_4 + #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +@@ -51,6 +51,10 @@ + #include + #endif + ++#if defined(KERNEL_2_4) && !defined(EXPORT_SYMTAB) ++#define EXPORT_SYMTAB ++#endif ++ + #include + #include + +@@ -98,6 +102,7 @@ + + #include + #include ++#include + #include + + #ifdef CONFIG_PROC_FS +@@ -118,8 +123,12 @@ + #endif + + #if defined(CONFIG_KGDB) ++#if defined(NV_OLD_MM_KGDB_BREAKPOINT_PRESENT) ++#include ++#else + #include + #endif ++#endif + + #if defined (CONFIG_AGP) || defined (CONFIG_AGP_MODULE) + #define AGPGART +@@ -516,19 +525,16 @@ + #define NV_KMEM_CACHE_ALLOC(ptr, kmem_cache, type) \ + { \ + (ptr) = kmem_cache_alloc(kmem_cache, GFP_KERNEL); \ +- KM_ALLOC_RECORD(ptr, sizeof(type), "km_cache_alloc"); \ + } + + #define NV_KMEM_CACHE_FREE(ptr, type, kmem_cache) \ + { \ +- KM_FREE_RECORD(ptr, sizeof(type), "km_cache_free"); \ + kmem_cache_free(kmem_cache, ptr); \ + } + +-#if defined(NV_SG_MAP_BUFFERS) /* Linux/x86-64, only */ + #if defined(NV_VMAP_PRESENT) + #if (NV_VMAP_ARGUMENT_COUNT == 2) +-#define NV_VMAP(ptr, pages, count, cached) \ ++#define NV_VMAP_KERNEL(ptr, pages, count, prot) \ + { \ + (ptr) = (unsigned long)vmap(pages, count); \ + VM_ALLOC_RECORD((void *)ptr, (count) * PAGE_SIZE, "vm_vmap"); \ +@@ -537,26 +543,35 @@ + #ifndef VM_MAP + #define VM_MAP 0 + #endif +-#define NV_VMAP(ptr, pages, count, cached) \ ++#define NV_VMAP_KERNEL(ptr, pages, count, prot) \ + { \ +- pgprot_t __prot = (cached) ? PAGE_KERNEL : PAGE_KERNEL_NOCACHE; \ +- (ptr) = (unsigned long)vmap(pages, count, VM_MAP, __prot); \ ++ (ptr) = (unsigned long)vmap(pages, count, VM_MAP, prot); \ + VM_ALLOC_RECORD((void *)ptr, (count) * PAGE_SIZE, "vm_vmap"); \ + } + #else + #error "NV_VMAP_ARGUMENT_COUNT value unrecognized!" + #endif + #else ++#if defined(NV_SG_MAP_BUFFERS) + #error "NV_VMAP() undefined (vmap() unavailable)!" ++#endif + #endif /* NV_VMAP_PRESENT */ + +-#define NV_VUNMAP(ptr, count) \ ++#define NV_VUNMAP_KERNEL(ptr, count) \ + { \ +- VM_FREE_RECORD((void *)ptr, (count) * PAGE_SIZE, "vm_vmap"); \ ++ VM_FREE_RECORD((void *)ptr, (count) * PAGE_SIZE, "vm_vunmap"); \ + vunmap((void *)(ptr)); \ + } + +-#endif /* NV_SG_MAP_BUFFERS */ ++#define NV_VMAP(addr, pages, count, cached) \ ++ { \ ++ pgprot_t __prot = (cached) ? PAGE_KERNEL : PAGE_KERNEL_NOCACHE; \ ++ void *__ptr = nv_vmap(pages, count, __prot); \ ++ (addr) = (unsigned long)__ptr; \ ++ } ++ ++#define NV_VUNMAP(addr, count) nv_vunmap((void *)addr, count) ++ + + #endif /* !defined NVWATCH */ + +@@ -764,9 +779,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; \ +@@ -968,9 +984,7 @@ + #define NV_ALLOC_TYPE_PCI (1<<0) + #define NV_ALLOC_TYPE_AGP (1<<1) + #define NV_ALLOC_TYPE_CONTIG (1<<2) +-#define NV_ALLOC_TYPE_KERNEL (1<<3) +-#define NV_ALLOC_TYPE_VMALLOC (1<<4) +-#define NV_ALLOC_TYPE_VMAP (1<<5) ++#define NV_ALLOC_TYPE_VMAP (1<<3) + + #define NV_ALLOC_MAPPING_SHIFT 16 + #define NV_ALLOC_MAPPING(flags) (((flags)>>NV_ALLOC_MAPPING_SHIFT)&0xff) +@@ -980,7 +994,6 @@ + + #define NV_ALLOC_MAPPING_AGP(flags) ((flags) & NV_ALLOC_TYPE_AGP) + #define NV_ALLOC_MAPPING_CONTIG(flags) ((flags) & NV_ALLOC_TYPE_CONTIG) +-#define NV_ALLOC_MAPPING_VMALLOC(flags) ((flags) & NV_ALLOC_TYPE_VMALLOC) + #define NV_ALLOC_MAPPING_VMAP(flags) ((flags) & NV_ALLOC_TYPE_VMAP) + + static inline U032 nv_alloc_init_flags(int cached, int agp, int contig, int kernel) +@@ -988,12 +1001,7 @@ + U032 flags = NV_ALLOC_ENC_MAPPING(cached); + if (agp) flags |= NV_ALLOC_TYPE_AGP; + else flags |= NV_ALLOC_TYPE_PCI; +- if (kernel) flags |= NV_ALLOC_TYPE_KERNEL; +-#if defined(NV_SG_MAP_BUFFERS) + if (kernel && !contig) flags |= NV_ALLOC_TYPE_VMAP; +-#else +- if (kernel && !contig) flags |= NV_ALLOC_TYPE_VMALLOC; +-#endif + if (contig && !agp) flags |= NV_ALLOC_TYPE_CONTIG; + return flags; + } +@@ -1067,21 +1075,24 @@ + #define NV_ATOMIC_DEC_AND_TEST(data) atomic_dec_and_test(&(data)) + #define NV_ATOMIC_READ(data) atomic_read(&(data)) + ++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) +@@ -1093,7 +1104,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-vm.c usr/src/nv.2305230/nv-vm.c +--- usr/src/nv/nv-vm.c 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/nv-vm.c 2008-03-18 12:55:58.755754293 -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,8 +358,11 @@ + #if defined(NV_CPA_NEEDS_FLUSHING) + nv_execute_on_all_cpus(cache_flush, NULL); + #endif ++#if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && \ ++ defined(NV_CHANGE_PAGE_ATTR_PRESENT) + global_flush_tlb(); + #endif ++#endif + } + + /* +@@ -409,11 +410,11 @@ + nv_pte_t *page_ptr = *at->page_table; + unsigned int i, j, gfp_mask; + unsigned long virt_addr = 0, phys_addr; ++ struct page **pages = 0; + #if defined(NV_SG_MAP_BUFFERS) + int ret = -1; + nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv); + struct pci_dev *dev = nvl->dev; +- struct page **pages = 0; + #endif + + nv_printf(NV_DBG_MEMINFO, "NVRM: VM: nv_vm_malloc_pages: %d pages\n", +@@ -462,22 +463,7 @@ + } + #endif + } +- else if (NV_ALLOC_MAPPING_VMALLOC(at->flags)) +- { +- void *virt_kptr = NULL; +- at->size = at->num_pages * PAGE_SIZE; +- nv_printf(NV_DBG_MEMINFO, "NVRM: VM: vmalloc, size 0x%x\n", at->size); +- NV_VMALLOC(virt_kptr, at->size, NV_ALLOC_MAPPING_CACHED(at->flags)); +- virt_addr = (unsigned long) virt_kptr; +- if (virt_addr == 0) +- { +- nv_printf(NV_DBG_ERRORS, +- "NVRM: nv_vm_malloc failed to allocate vmalloc memory\n"); +- return -1; +- } +- } + +-#if defined(NV_SG_MAP_BUFFERS) + if (NV_ALLOC_MAPPING_VMAP(at->flags)) + { + NV_KMALLOC(pages, sizeof(struct page *) * at->num_pages); +@@ -488,11 +474,10 @@ + return -1; + } + } +-#endif + + for (i = 0; i < at->num_pages; i++) + { +- if (!NV_ALLOC_MAPPING_CONTIG(at->flags) && !NV_ALLOC_MAPPING_VMALLOC(at->flags)) ++ if (!NV_ALLOC_MAPPING_CONTIG(at->flags)) + { + NV_GET_FREE_PAGES(virt_addr, 0, gfp_mask); + if (virt_addr == 0) +@@ -553,10 +538,10 @@ + } + } + nv_sg_load(&page_ptr->sg_list, page_ptr); ++#endif + + if (NV_ALLOC_MAPPING_VMAP(at->flags)) + pages[i] = NV_GET_PAGE_STRUCT(page_ptr->phys_addr); +-#endif + + if (!NV_ALLOC_MAPPING_CACHED(at->flags)) + nv_set_page_attrib_uncached(page_ptr); +@@ -565,41 +550,21 @@ + virt_addr += PAGE_SIZE; + } + +-#if defined(NV_SG_MAP_BUFFERS) + if (NV_ALLOC_MAPPING_VMAP(at->flags)) + { + NV_VMAP(virt_addr, pages, at->num_pages, NV_ALLOC_MAPPING_CACHED(at->flags)); +-#if defined(KERNEL_2_4) +- if (virt_addr != 0) +- { +- unsigned int i; +- /* +- * XXX Linux 2.4's vmap() increments the pages' reference counts +- * in preparation for vfree(); the latter skips the calls to +- * __free_page() if the pages are marked reserved, however, so +- * that the underlying memory is effectively leaked when we free +- * it later. Decrement the count here to avoid this leak. +- */ +- for (i = 0; i < at->num_pages; i++) +- { +- if (PageReserved(pages[i])) +- atomic_dec(&pages[i]->count); +- } +- } +-#endif +- NV_KFREE((void *)pages, sizeof(struct page *) * at->num_pages); + if (virt_addr == 0) + { + nv_printf(NV_DBG_ERRORS, + "NVRM: VM: nv_vm_malloc_pages: failed to vmap pages\n"); + goto failed; + } ++ NV_KFREE((void *)pages, sizeof(struct page *) * at->num_pages); + for (i = 0; i < at->num_pages; i++) + { + at->page_table[i]->virt_addr = virt_addr + i * PAGE_SIZE; + } + } +-#endif /* NV_SG_MAP_BUFFERS */ + + nv_vm_list_page_count(at->page_table, at->num_pages); + +@@ -624,7 +589,7 @@ + nv_sg_unmap_buffer(dev, &page_ptr->sg_list, page_ptr); + #endif + nv_unlock_page(page_ptr); +- if (!NV_ALLOC_MAPPING_CONTIG(at->flags) && !NV_ALLOC_MAPPING_VMALLOC(at->flags)) ++ if (!NV_ALLOC_MAPPING_CONTIG(at->flags)) + NV_FREE_PAGES(page_ptr->virt_addr, 0); + } + } +@@ -638,16 +603,9 @@ + #endif + NV_FREE_PAGES(page_ptr->virt_addr, at->order); + } +- else if (NV_ALLOC_MAPPING_VMALLOC(at->flags)) +- { +- page_ptr = *at->page_table; +- NV_VFREE((void *) page_ptr->virt_addr, at->size); +- } + +-#if defined(NV_SG_MAP_BUFFERS) + if (NV_ALLOC_MAPPING_VMAP(at->flags) && pages != 0) +- NV_VFREE((void *)pages, sizeof(struct page *) * at->num_pages); +-#endif ++ NV_KFREE((void *)pages, sizeof(struct page *) * at->num_pages); + + return -1; + } +@@ -674,19 +632,17 @@ + } + nv_vm_list_page_count(at->page_table, at->num_pages); + +-#if defined(NV_SG_MAP_BUFFERS) + if (NV_ALLOC_MAPPING_VMAP(at->flags)) + NV_VUNMAP((void *)at->page_table[0]->virt_addr, at->num_pages); // undo vmap() +-#endif + + for (i = 0; i < at->num_pages; i++) + { + page_ptr = at->page_table[i]; + if (!NV_ALLOC_MAPPING_CACHED(at->flags)) + nv_set_page_attrib_cached(page_ptr); +-#if defined(NV_SG_MAP_BUFFERS) + if (NV_ALLOC_MAPPING_VMAP(at->flags)) + page_ptr->virt_addr = (unsigned long) __va(page_ptr->phys_addr); ++#if defined(NV_SG_MAP_BUFFERS) + if (!NV_ALLOC_MAPPING_CONTIG(at->flags)) + nv_sg_unmap_buffer(dev, &page_ptr->sg_list, page_ptr); + #endif +@@ -701,7 +657,7 @@ + } + } + nv_unlock_page(page_ptr); +- if (!NV_ALLOC_MAPPING_CONTIG(at->flags) && !NV_ALLOC_MAPPING_VMALLOC(at->flags)) ++ if (!NV_ALLOC_MAPPING_CONTIG(at->flags)) + NV_FREE_PAGES(page_ptr->virt_addr, 0); + } + nv_flush_caches(); +@@ -714,9 +670,136 @@ + #endif + NV_FREE_PAGES(page_ptr->virt_addr, at->order); + } +- else if (NV_ALLOC_MAPPING_VMALLOC(at->flags)) ++} ++ ++#if defined(NV_VMAP_PRESENT) && defined(KERNEL_2_4) && defined(NVCPU_X86) ++static unsigned long ++nv_vmap_vmalloc( ++ int count, ++ struct page **pages, ++ pgprot_t prot ++) ++{ ++ void *virt_addr = NULL; ++ unsigned int i, size = count * PAGE_SIZE; ++ ++ NV_VMALLOC(virt_addr, size, TRUE); ++ if (virt_addr == NULL) ++ { ++ nv_printf(NV_DBG_ERRORS, ++ "NVRM: vmalloc() failed to allocate vmap() scratch pages!\n"); ++ return 0; ++ } ++ ++ for (i = 0; i < (unsigned int)count; i++) + { +- page_ptr = *at->page_table; +- NV_VFREE((void *) page_ptr->virt_addr, at->size); ++ pgd_t *pgd = NULL; ++ pmd_t *pmd = NULL; ++ pte_t *pte = NULL; ++ unsigned long address; ++ struct page *page; ++ ++ address = (unsigned long)virt_addr + i * PAGE_SIZE; ++ ++ pgd = NV_PGD_OFFSET(address, 1, NULL); ++ if (!NV_PGD_PRESENT(pgd)) ++ goto failed; ++ ++ pmd = NV_PMD_OFFSET(address, pgd); ++ if (!NV_PMD_PRESENT(pmd)) ++ goto failed; ++ ++ pte = NV_PTE_OFFSET(address, pmd); ++ if (!NV_PTE_PRESENT(pte)) ++ goto failed; ++ ++ page = NV_GET_PAGE_STRUCT(pte_val(*pte) & PAGE_MASK); ++ get_page(pages[i]); ++ set_pte(pte, mk_pte(pages[i], prot)); ++ put_page(page); ++ NV_PTE_UNMAP(pte); ++ } ++ nv_flush_caches(); ++ ++ return (unsigned long)virt_addr; ++ ++failed: ++ NV_VFREE(virt_addr, size); ++ ++ return 0; ++} ++ ++static void ++nv_vunmap_vmalloc( ++ void *address, ++ int count ++) ++{ ++ NV_VFREE(address, count * PAGE_SIZE); ++} ++#endif /* NV_VMAP_PRESENT && KERNEL_2_4 && NVCPU_X86 */ ++ ++void *nv_vmap( ++ struct page **pages, ++ int count, ++ pgprot_t prot ++) ++{ ++ unsigned long virt_addr = 0; ++#if defined(NV_VMAP_PRESENT) ++#if defined(KERNEL_2_4) && defined(NVCPU_X86) ++ /* ++ * XXX Linux 2.4's vmap() checks the requested mapping's size against ++ * the value of (max_mapnr << PAGESHIFT); since 'map_nr' is a 32-bit ++ * symbol, the checks fails given enough physical memory. We can't solve ++ * this problem by adjusting the value of 'map_nr', but we can avoid ++ * vmap() by going through vmalloc(). ++ */ ++ if (max_mapnr >= 0x100000) ++ virt_addr = nv_vmap_vmalloc(count, pages, prot); ++ else ++#endif ++ NV_VMAP_KERNEL(virt_addr, pages, count, prot); ++#if defined(KERNEL_2_4) ++ if (virt_addr) ++ { ++ int i; ++ /* ++ * XXX Linux 2.4's vmap() increments the pages' reference counts ++ * in preparation for vfree(); the latter skips the calls to ++ * __free_page() if the pages are marked reserved, however, so ++ * that the underlying memory is effectively leaked when we free ++ * it later. Decrement the count here to avoid this leak. ++ */ ++ for (i = 0; i < count; i++) ++ { ++ if (PageReserved(pages[i])) ++ atomic_dec(&pages[i]->count); ++ } + } ++#endif ++#endif /* NV_VMAP_PRESENT */ ++ return (void *)virt_addr; ++} ++ ++void nv_vunmap( ++ void *address, ++ int count ++) ++{ ++#if defined(NV_VMAP_PRESENT) ++#if defined(KERNEL_2_4) && defined(NVCPU_X86) ++ /* ++ * XXX Linux 2.4's vmap() checks the requested mapping's size against ++ * the value of (max_mapnr << PAGESHIFT); since 'map_nr' is a 32-bit ++ * symbol, the checks fails given enough physical memory. We can't solve ++ * this problem by adjusting the value of 'map_nr', but we can avoid ++ * vmap() by going through vmalloc(). ++ */ ++ if (max_mapnr >= 0x100000) ++ nv_vunmap_vmalloc(address, count); ++ else ++#endif ++ NV_VUNMAP_KERNEL(address, count); ++#endif /* NV_VMAP_PRESENT */ + } +diff -ru usr/src/nv/nv-vm.h usr/src/nv.2305230/nv-vm.h +--- usr/src/nv/nv-vm.h 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/nv-vm.h 2008-03-18 12:55:54.643519951 -0700 +@@ -11,6 +11,9 @@ + #ifndef _NV_VM_H_ + #define _NV_VM_H_ + ++void * nv_vmap(struct page **, int, pgprot_t); ++void nv_vunmap(void *, int); ++ + int nv_vm_malloc_pages(nv_state_t *, nv_alloc_t *); + void nv_vm_free_pages(nv_state_t *, nv_alloc_t *); + +diff -ru usr/src/nv/nv.c usr/src/nv.2305230/nv.c +--- usr/src/nv/nv.c 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/nv.c 2008-03-18 12:56:01.123889244 -0700 +@@ -97,9 +97,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 void *nv_pte_t_cache = NULL; + +@@ -850,16 +848,13 @@ + + for (i = 0; i < 4; i++) + { +- if (NV_PAT_ENTRY(pat1, i) == 1) ++ if ((i != 1) && NV_PAT_ENTRY(pat1, i) == 1) + { + nv_printf(NV_DBG_ERRORS, "NVRM: PAT index %d already configured for Write-Combining!\n", i); + nv_printf(NV_DBG_ERRORS, "NVRM: Aborting, due to PAT already being configured\n"); + return 0; + } +- } + +- for (i = 0; i < 4; i++) +- { + if (NV_PAT_ENTRY(pat2, i) == 1) + { + nv_printf(NV_DBG_ERRORS, "NVRM: PAT index %d already configured for Write-Combining!\n", i + 4); +@@ -969,30 +964,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) +@@ -1000,7 +991,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; + +@@ -1110,35 +1101,42 @@ + + 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 + ) + { +- struct mm_struct *mm; ++#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) + pgd_t *pgd = NULL; + pmd_t *pmd = NULL; + pte_t *pte = NULL; +- unsigned long retval = -1; + unsigned int flags, expected; + 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); +@@ -1204,7 +1202,11 @@ + } + + failed: ++#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) +@@ -1250,7 +1252,8 @@ + 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); + + #if defined(VM_CHECKER) + nv_init_lock(vm_lock); +@@ -1266,11 +1269,18 @@ + return -ENODEV; + } + ++ if (!rm_init_rm()) ++ { ++ nv_printf(NV_DBG_ERRORS, "NVRM: rm_init_rm() failed!\n"); ++ return -EIO; ++ } ++ + memset(nv_linux_devices, 0, sizeof(nv_linux_devices)); + + if (pci_register_driver(&nv_pci_driver) < 0) + { + pci_unregister_driver(&nv_pci_driver); // XXX ??? ++ rm_shutdown_rm(); + nv_printf(NV_DBG_ERRORS, "NVRM: No NVIDIA graphics adapter found!\n"); + return -ENODEV; + } +@@ -1293,6 +1303,7 @@ + if (num_probed_nv_devices == 0) + { + pci_unregister_driver(&nv_pci_driver); ++ rm_shutdown_rm(); + nv_printf(NV_DBG_ERRORS, "NVRM: No NVIDIA graphics adapter probed!\n"); + return -ENODEV; + } +@@ -1307,6 +1318,7 @@ + if (num_nv_devices == 0) + { + pci_unregister_driver(&nv_pci_driver); ++ rm_shutdown_rm(); + nv_printf(NV_DBG_ERRORS, + "NVRM: None of the NVIDIA graphics adapters were initialized!\n"); + return -ENODEV; +@@ -1317,8 +1329,9 @@ + rc = register_chrdev(nv_major, "nvidia", &nv_fops); + if (rc < 0) + { +- nv_printf(NV_DBG_ERRORS, "NVRM: register chrdev failed\n"); + pci_unregister_driver(&nv_pci_driver); ++ rm_shutdown_rm(); ++ nv_printf(NV_DBG_ERRORS, "NVRM: register_chrdev() failed!\n"); + return rc; + } + +@@ -1367,14 +1380,6 @@ + } + #endif + +- // Init the resource manager +- if (!rm_init_rm()) +- { +- nv_printf(NV_DBG_ERRORS, "NVRM: rm_init_rm() failed\n"); +- rc = -EIO; +- goto failed; +- } +- + #if defined(NV_SG_MAP_BUFFERS) + rm_read_registry_dword(NV_STATE_PTR(&nv_ctl_device), "NVreg", "RemapLimit", &nv_remap_limit); + +@@ -1407,48 +1412,41 @@ + /* 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(nv, "NVreg", "UpdateMemoryTypes", &data); ++ if ((rc == 0) && ((int)data != ~0)) + { +- int data; +- +- // allow the user to override us with a registry key +- rc = rm_read_registry_dword(NV_STATE_PTR(&nv_ctl_device), "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 +- +- +-#if defined(DEBUG) +- inter_module_register("nv_linux_devices", THIS_MODULE, nv_linux_devices); +-#endif ++#endif /* defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) */ + + #if defined(NVCPU_X86_64) && defined(CONFIG_IA32_EMULATION) && !defined(HAVE_COMPAT_IOCTL) + /* Register ioctl conversions for 32 bit clients */ +@@ -1501,6 +1499,8 @@ + } + + pci_unregister_driver(&nv_pci_driver); ++ rm_shutdown_rm(); ++ + return rc; + } + +@@ -1532,10 +1532,6 @@ + /* remove /proc/driver/nvidia */ + nvos_proc_remove(); + +-#if defined(DEBUG) +- inter_module_unregister("nv_linux_devices"); +-#endif +- + #if defined(NV_PM_SUPPORT_OLD_STYLE_APM) + for (i = 0; i < num_nv_devices; i++) + { +@@ -2112,6 +2108,8 @@ + if (rm_validate_pfn_range(file, NV_VMA_PGOFF(vma), + NV_VMA_SIZE(vma)) == RM_OK) + { ++ if (vma->vm_flags & VM_WRITE) ++ return -EACCES; + vma->vm_flags |= (VM_IO | VM_LOCKED); + #if defined(NV_VM_INSERT_PAGE_PRESENT) + if (NV_VM_INSERT_PAGE(vma, vma->vm_start, pfn_to_page(NV_VMA_PGOFF(vma)))) +@@ -2240,6 +2238,8 @@ + if (rm_validate_pfn_range(file, NV_VMA_PGOFF(vma), + NV_VMA_SIZE(vma)) == RM_OK) + { ++ if (vma->vm_flags & VM_WRITE) ++ return -EACCES; + vma->vm_flags |= (VM_IO | VM_LOCKED); + #if defined(NV_VM_INSERT_PAGE_PRESENT) + if (NV_VM_INSERT_PAGE(vma, vma->vm_start, pfn_to_page(NV_VMA_PGOFF(vma)))) +@@ -3266,8 +3266,21 @@ + pte_t *pte = NULL; + unsigned long 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)) +@@ -3288,11 +3301,13 @@ + 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; + } + +@@ -3300,12 +3315,19 @@ + unsigned long address + ) + { +- // make sure this address is a kernel pointer ++#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) ++ nv_linux_state_t *nvl; ++ nv_alloc_t *at; ++ unsigned long virt_addr; ++ U032 i, j; ++#endif ++ ++ /* 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; + } +@@ -3315,6 +3337,30 @@ + if ((address > PAGE_OFFSET) && (address < VMALLOC_START)) + return __pa(address); + ++#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) ++ for (i = 0; i < num_nv_devices; i++) ++ { ++ nvl = &nv_linux_devices[i]; ++ ++ for (at = nvl->alloc_queue; (at != NULL); at = at->next) ++ { ++ if (!NV_ALLOC_MAPPING_VMAP(at->flags)) ++ continue; ++ ++ for (j = 0; j < at->num_pages; j++) ++ { ++ virt_addr = at->page_table[j]->virt_addr; ++ if ((address >= virt_addr) && ++ (address < (virt_addr + PAGE_SIZE))) ++ { ++ return (at->page_table[j]->phys_addr + ++ (address & ~PAGE_MASK)); ++ } ++ } ++ } ++ } ++#endif ++ + return _get_phys_address(address, 1); + } + +@@ -3322,12 +3368,12 @@ + unsigned long 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; + } +@@ -3396,8 +3442,6 @@ + if (nv_vm_malloc_pages(nv, at)) + goto failed; + +- at->class = class; +- + // set our 'key' to the page_table. rm_alloc_agp_pages will call + // nv_translate_address below, which will look up pages using + // the value of *pAddress as a key, then index into the page_table +@@ -3952,7 +3996,8 @@ + + if (num_nv_devices == NV_MAX_DEVICES) + { +- nv_printf(NV_DBG_ERRORS, "NVRM: maximum device number (%d) reached!\n", num_nv_devices); ++ nv_printf(NV_DBG_ERRORS, "NVRM: maximum device number (%d) exceeded!\n", ++ (NV_MAX_DEVICES - 1)); + return -1; + } + +@@ -4085,13 +4130,10 @@ + return -1; + } + +-int NV_API_CALL nv_no_incoherent_mappings +-( +- void +-) ++int NV_API_CALL nv_no_incoherent_mappings(void) + { +-#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/nv.h usr/src/nv.2305230/nv.h +--- usr/src/nv/nv.h 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/nv.h 2008-03-18 12:55:56.919649651 -0700 +@@ -335,15 +332,39 @@ + + #define NV_DEVICE_NAME_LENGTH 40 + ++#define NV_MAX_ISR_DELAY_US 20000 ++#define NV_MAX_ISR_DELAY_MS (NV_MAX_ISR_DELAY_US / 1000) ++ ++#define NV_TIMERCMP(a, b, CMP) \ ++ (((a)->tv_sec == (b)->tv_sec) ? \ ++ ((a)->tv_usec CMP (b)->tv_usec) : ((a)->tv_sec CMP (b)->tv_sec)) ++ ++#define NV_TIMERADD(a, b, result) \ ++ { \ ++ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ ++ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ ++ if ((result)->tv_usec >= 1000000) \ ++ { \ ++ ++(result)->tv_sec; \ ++ (result)->tv_usec -= 1000000; \ ++ } \ ++ } ++ ++#define NV_TIMERSUB(a, b, result) \ ++ { \ ++ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ ++ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ ++ if ((result)->tv_usec < 0) \ ++ { \ ++ --(result)->tv_sec; \ ++ (result)->tv_usec += 1000000; \ ++ } \ ++ } + + /* + * driver internal interfaces + */ + +-/* need a fake device number for control device; just to flag it for msgs */ +-#define NV_CONTROL_DEVICE_NUMBER 100 +- +- + #ifndef NVWATCH + + /* +diff -ru usr/src/nv/os-interface.c usr/src/nv.2305230/os-interface.c +--- usr/src/nv/os-interface.c 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/os-interface.c 2008-03-18 12:56:04.288069559 -0700 +@@ -25,7 +25,6 @@ + #include "os-interface.h" + #include "nv-linux.h" + +- + static volatile int os_block_on_smp_barrier; + + #ifdef CONFIG_SMP +@@ -63,7 +62,7 @@ + // + typedef struct os_sema_s + { +- struct semaphore wait; ++ struct completion completion; + spinlock_t lock; + S032 count; + } os_sema_t; +@@ -86,7 +85,7 @@ + return rmStatus; + + os_sema = (os_sema_t *)*ppSema; +- sema_init(&os_sema->wait, 0); ++ init_completion(&os_sema->completion); + spin_lock_init(&os_sema->lock); + os_sema->count = 1; + +@@ -131,7 +130,7 @@ + { + os_sema->count--; + spin_unlock_irqrestore(&os_sema->lock, old_irq); +- down(&os_sema->wait); ++ wait_for_completion(&os_sema->completion); + } + else + { +@@ -208,7 +207,7 @@ + spin_unlock_irqrestore(&os_sema->lock, old_irq); + + if (doWakeup) +- up(&os_sema->wait); ++ complete(&os_sema->completion); + + return RM_OK; + } +@@ -448,8 +447,6 @@ + // + //--------------------------------------------------------------------------- + +-#define NV_MAX_ISR_UDELAY 20000 +-#define NV_MAX_ISR_MDELAY (NV_MAX_ISR_UDELAY / 1000) + #define NV_MSECS_PER_JIFFIE (1000 / HZ) + #define NV_MSECS_TO_JIFFIES(msec) ((msec) * HZ / 1000) + #define NV_USECS_PER_JIFFIE (1000000 / HZ) +@@ -474,7 +471,7 @@ + do_gettimeofday(&tm1); + #endif + +- if (in_irq() && MicroSeconds > NV_MAX_ISR_UDELAY) ++ if (in_irq() && (MicroSeconds > NV_MAX_ISR_DELAY_US)) + return RM_ERROR; + + mdelay_safe_msec = MicroSeconds / 1000; +@@ -494,36 +491,6 @@ + return RM_OK; + } + +-#ifndef timercmp +-# define timercmp(a, b, CMP) \ +- (((a)->tv_sec == (b)->tv_sec) ? \ +- ((a)->tv_usec CMP (b)->tv_usec) : \ +- ((a)->tv_sec CMP (b)->tv_sec)) +-#endif +-#ifndef timeradd +-# define timeradd(a, b, result) \ +- do { \ +- (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ +- (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ +- if ((result)->tv_usec >= 1000000) \ +- { \ +- ++(result)->tv_sec; \ +- (result)->tv_usec -= 1000000; \ +- } \ +- } while (0) +-#endif +-#ifndef timersub +-# define timersub(a, b, result) \ +- do { \ +- (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ +- (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ +- if ((result)->tv_usec < 0) { \ +- --(result)->tv_sec; \ +- (result)->tv_usec += 1000000; \ +- } \ +- } while (0) +-#endif +- + /* + * On Linux, a jiffie represents the time passed in between two timer + * interrupts. The number of jiffies per second (HZ) varies across the +@@ -549,7 +516,7 @@ + tm_start = tm_aux; + #endif + +- if (in_irq() && MilliSeconds > NV_MAX_ISR_MDELAY) ++ if (in_irq() && (MilliSeconds > NV_MAX_ISR_DELAY_MS)) + return RM_ERROR; + + if (!NV_MAY_SLEEP()) +@@ -561,7 +528,7 @@ + MicroSeconds = MilliSeconds * 1000; + tm_end.tv_usec = MicroSeconds; + tm_end.tv_sec = 0; +- timeradd(&tm_aux, &tm_end, &tm_end); ++ NV_TIMERADD(&tm_aux, &tm_end, &tm_end); + + /* do we have a full jiffie to wait? */ + jiffies = NV_USECS_TO_JIFFIES(MicroSeconds); +@@ -590,9 +557,9 @@ + schedule_timeout(jiffies); + /* catch the remainder, if any */ + do_gettimeofday(&tm_aux); +- if (timercmp(&tm_aux, &tm_end, <)) ++ if (NV_TIMERCMP(&tm_aux, &tm_end, <)) + { +- timersub(&tm_end, &tm_aux, &tm_aux); // tm_aux = tm_end - tm_aux ++ NV_TIMERSUB(&tm_end, &tm_aux, &tm_aux); // tm_aux = tm_end - tm_aux + MicroSeconds = tm_aux.tv_usec + tm_aux.tv_sec * 1000000; + } else + MicroSeconds = 0; +@@ -1109,6 +1076,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, +@@ -1131,6 +1110,9 @@ + U032 size_bytes + ) + { ++ if (addr == (void *)PAGE_OFFSET) ++ return; ++ + NV_IOUNMAP(addr, size_bytes); + } + +@@ -1176,7 +1158,11 @@ + #if defined(CONFIG_X86_REMOTE_DEBUG) + __asm__ __volatile__ ("int $3"); + #elif defined(CONFIG_KGDB) ++#if defined(NV_OLD_MM_KGDB_BREAKPOINT_PRESENT) ++ BREAKPOINT; ++#else + BREAKPOINT(); ++#endif + #elif defined(CONFIG_KDB) + KDB_ENTER(); + #else +diff -ru usr/src/nv/os-registry.c usr/src/nv.2305230/os-registry.c +--- usr/src/nv/os-registry.c 2008-01-21 11:48:11.000000000 -0800 ++++ usr/src/nv.2305230/os-registry.c 2008-03-18 12:56:07.492252151 -0700 +@@ -48,24 +48,6 @@ + * This could be changed to work on a per-device basis. + */ + +-/* +- * The 2nd argument to MODULE_PARM is used to verify parameters passed +- * to the module at load time. It should be a string in the following +- * format: +- * +- * [min[-max]]{b,h,i,l,s} +- * +- * The MIN and MAX specifiers delimit the length of the array. If MAX +- * is omitted, it defaults to MIN; if both are omitted, the default is +- * 1. The final character is a type specifier. +- * +- * b byte +- * h short +- * i int +- * l long +- * s string +- */ +- + /* + * Option: VideoMemoryTypeOverride + * +@@ -360,9 +342,6 @@ + static int NVreg_DevicesConnected = 0; + NV_MODULE_PARAMETER(NVreg_DevicesConnected); + +-static int NVreg_VideoEnhancement = 0; +-NV_MODULE_PARAMETER(NVreg_VideoEnhancement); +- + static int NVreg_RmLogonRC = 1; + NV_MODULE_PARAMETER(NVreg_RmLogonRC); + +@@ -402,34 +381,36 @@ + NV_MODULE_PARAMETER(NVreg_RemapLimit); + + /* +- * 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. ++ * 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. + * +- * 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. ++ * Possible values: + * +- * 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. ++ * ~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. + * +- * 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. ++ * 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. + */ + +-static int NVreg_UseCPA = -1; +-NV_MODULE_PARAMETER(NVreg_UseCPA); ++static int NVreg_UpdateMemoryTypes = ~0; ++NV_MODULE_PARAMETER(NVreg_UpdateMemoryTypes); + + // 1 - Force sourcing vbios from ROM + // 0 - business as usual +@@ -477,15 +458,14 @@ + { "NVreg", "ResmanDebugLevel", &NVreg_ResmanDebugLevel, 1 }, + { "NVreg", "FlatPanelMode", &NVreg_FlatPanelMode, 1 }, + { "NVreg", "DevicesConnected", &NVreg_DevicesConnected, 1 }, +- { "NVreg", "VideoEnhancement", &NVreg_VideoEnhancement, 1 }, + { "NVreg", "RmLogonRC", &NVreg_RmLogonRC, 1 }, ++ { "NVreg", "VbiosFromROM", &NVreg_VbiosFromROM, 1 }, + { "NVreg", "ModifyDeviceFiles", &NVreg_ModifyDeviceFiles, 1 }, + { "NVreg", "DeviceFileUID", &NVreg_DeviceFileUID, 1 }, + { "NVreg", "DeviceFileGID", &NVreg_DeviceFileGID, 1 }, + { "NVreg", "DeviceFileMode", &NVreg_DeviceFileMode, 1 }, +- { "NVreg", "VbiosFromROM", &NVreg_VbiosFromROM, 1 }, + { "NVreg", "RemapLimit", &NVreg_RemapLimit, 1 }, +- { "NVreg", "UseCPA", &NVreg_UseCPA, 1 }, ++ { "NVreg", "UpdateMemoryTypes", &NVreg_UpdateMemoryTypes, 1 }, + { "NVreg", "RMEdgeIntrCheck", &NVreg_RMEdgeIntrCheck, 1 }, + { NULL, NULL, NULL, 0 } + }; diff --git a/abs/core/nvidia-71xx/PKGBUILD b/abs/core/nvidia-71xx/PKGBUILD new file mode 100644 index 0000000..318b798 --- /dev/null +++ b/abs/core/nvidia-71xx/PKGBUILD @@ -0,0 +1,41 @@ +# Contributor : Alessandro Sagratini + +pkgname=nvidia-71xx +pkgver=71.86.09 +_kernver='2.6.28-LinHES' +pkgrel=3 +pkgdesc="NVIDIA legacy drivers for kernel26-ice, 71xx branch" +arch=(i686 x86_64) +[ "$CARCH" = "i686" ] && ARCH=x86 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 +url="http://www.nvidia.com/" +depends=('nvidia-71xx-utils' 'kernel26' 'vdpinfo-71xx') +conflicts=('nvidia' 'nvidia-96xx') +license=('custom') +source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run + NVIDIA_kernel-96.43.05-2290218.diff.txt) +install="nvidia-71xx.install" +md5sums=('51ce70e2ba967a2bad1cf01ce25c7f76') +[ "$CARCH" = "x86_64" ] && md5sums=('9d102e8a6a1746423f0e0a231df63eeb' + 'f2d9c8605a0f655b3c5c9b2434b9dccd') + +build() { + cd $startdir/src + + # Extract + cd $startdir/src/ + sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only + cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0 + # Any extra patches are applied in here... +# patch -Np0 -i ../NVIDIA_kernel-96.43.05-2290218.diff.txt || return 1 + + cd usr/src/nv/ + ln -s Makefile.kbuild Makefile + make SYSSRC=/lib/modules/$_kernver/build module + + # install kernel module + mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/ + install -m644 nvidia.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/ + + sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install +} diff --git a/abs/core/nvidia-71xx/nvidia-71xx.install b/abs/core/nvidia-71xx/nvidia-71xx.install new file mode 100644 index 0000000..0b44b8d --- /dev/null +++ b/abs/core/nvidia-71xx/nvidia-71xx.install @@ -0,0 +1,23 @@ +# arg 1: the new package version +post_install() { + KERNEL_VERSION='2.6.28-LinHES' + 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 >/dev/null 2>&1 || 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.28-LinHES' + depmod -v $KERNEL_VERSION > /dev/null 2>&1 + rmmod nvidia >/dev/null 2>&1 +} + +op=$1 +shift +$op $* diff --git a/abs/core/nvidia-96xx-utils/PKGBUILD b/abs/core/nvidia-96xx-utils/PKGBUILD new file mode 100644 index 0000000..749dc08 --- /dev/null +++ b/abs/core/nvidia-96xx-utils/PKGBUILD @@ -0,0 +1,65 @@ +# $Id: PKGBUILD 18827 2008-11-09 14:01:28Z jgc $ +# Maintainer: Tobias Powalowski +# Contributor: James Rayner + +pkgname=nvidia-96xx-utils +pkgver=96.43.09 +pkgrel=1 +pkgdesc="NVIDIA legacy drivers utilities and libraries, 96xx branch." +arch=(i686 x86_64) +license=('custom') +[ "$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-utils' \ + 'nvidia-71xx-utils' 'nvidia-legacy-utils') +provides=('libgl') +install=nvidia-96xx.install +source=(http://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \ + supported-cards.txt) +md5sums=('758c739114b81ea2cb7da7c22ab80a7e' + '6363d7e494d33729609540088e33e73f') +[ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1' + '6363d7e494d33729609540088e33e73f') +options=(docs !strip) + +build() +{ + # override nvida install routine and do it the long way. + cd $startdir/src/ + sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only + cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/ + + mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,share/man/man1} + mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers} + mkdir -p $startdir/pkg/usr/share/licenses/nvidia-96xx/ + + install lib/{libGLcore.so.${pkgver},libGL.so.${pkgver},libnvidia-cfg.so.${pkgver},tls/libnvidia-tls.so.${pkgver}} \ + $startdir/pkg/usr/lib/ || return 1 + install -m644 share/man/man1/* $startdir/pkg/usr/share/man/man1/ || return 1 + rm $startdir/pkg/usr/share/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/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 /usr/lib/libGL.so.$pkgver libGL.so || return 1 + ln -s /usr/lib/libGL.so.$pkgver libGL.so.1 || return 1 + ln -s /usr/lib/libGLcore.so.$pkgver libGLcore.so.1 || return 1 + ln -s /usr/lib/libnvidia-cfg.so.$pkgver libnvidia-cfg.so.1 || return 1 + ln -s /usr/lib/libnvidia-tls.so.$pkgver libnvidia-tls.so.1 || return 1 + cd $startdir/pkg/usr/lib/xorg/modules/extensions + ln -s /usr/lib/xorg/modules/extensions/libglx.so.$pkgver libglx.so || return 1 + + install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/LICENSE $startdir/pkg/usr/share/licenses/nvidia-96xx/ || return 1 + install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/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/nvidia-96xx-utils/nvidia-96xx.install b/abs/core/nvidia-96xx-utils/nvidia-96xx.install new file mode 100644 index 0000000..bb1fff2 --- /dev/null +++ b/abs/core/nvidia-96xx-utils/nvidia-96xx.install @@ -0,0 +1,22 @@ +# 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 'gtk2' package. + echo ------------------------------- + +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +op=$1 +shift +$op $* diff --git a/abs/core/nvidia-96xx-utils/supported-cards.txt b/abs/core/nvidia-96xx-utils/supported-cards.txt new file mode 100644 index 0000000..d4f26ea --- /dev/null +++ b/abs/core/nvidia-96xx-utils/supported-cards.txt @@ -0,0 +1,236 @@ +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 1.0.9746 README lists the supported devices +for each of those: + +______________________________________________________________________________ + +Appendix A. Supported NVIDIA Graphics Chips +______________________________________________________________________________ + +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 1.0-9746 +driver, and then go to the Supported Products List. + + + NVIDIA chip name Device PCI ID + ---------------------------------- ---------------------------------- + GeForce 6800 Ultra 0x0040 + GeForce 6800 0x0041 + GeForce 6800 XE 0x0043 + GeForce 6800 XT 0x0044 + GeForce 6800 GT 0x0045 + GeForce 6800 GT 0x0046 + GeForce 6800 GS 0x0047 + GeForce 6800 XT 0x0048 + Quadro FX 4000 0x004E + GeForce 7800 GTX 0x0090 + GeForce 7800 GTX 0x0091 + GeForce 7800 GT 0x0092 + GeForce 7800 GS 0x0093 + GeForce Go 7800 0x0098 + GeForce Go 7800 GTX 0x0099 + Quadro FX 4500 0x009D + GeForce 6800 GS 0x00C0 + GeForce 6800 0x00C1 + GeForce 6800 LE 0x00C2 + GeForce 6800 XT 0x00C3 + GeForce Go 6800 0x00C8 + GeForce Go 6800 Ultra 0x00C9 + Quadro FX Go1400 0x00CC + Quadro FX 3450/4000 SDI 0x00CD + Quadro FX 1400 0x00CE + 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 0x00F6 + Quadro FX 3400/4400 0x00F8 + GeForce 6800 Ultra 0x00F9 + GeForce PCX 5750 0x00FA + GeForce PCX 5900 0x00FB + GeForce PCX 5300/Quadro FX 330 0x00FC + Quadro NVS 280 PCI-E/Quadro FX 330 0x00FD + Quadro FX 1300 0x00FE + 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 + Quadro NVS 440 0x014A + Quadro FX 550 0x014C + Quadro FX 540 0x014E + GeForce 6200 0x014F + GeForce 6500 0x0160 + GeForce 6200 TurboCache(TM) 0x0161 + GeForce 6200 LE 0x0163 + GeForce Go 6200 0x0164 + Quadro NVS 285 0x0165 + GeForce Go 6400 0x0166 + GeForce Go 6200 0x0167 + GeForce Go 6400 0x0168 + GeForce 8800 GTX 0x0191 + GeForce 8800 GTS 0x0193 + GeForce 7300 LE 0x01D1 + GeForce 7300 SE 0x01D3 + Quadro NVS 110M/GeForce Go 7300 0x01D7 + GeForce Go 7400 0x01D8 + Quadro NVS 110M 0x01DA + Quadro NVS 120M 0x01DB + Quadro FX 350M 0x01DC + Quadro FX 350 0x01DE + GeForce 7300 GS 0x01DF + GeForce 6800 0x0211 + GeForce 6800 LE 0x0212 + GeForce 6800 GT 0x0215 + GeForce 6800 XT 0x0218 + GeForce 6200 0x0221 + GeForce 6150 0x0240 + GeForce 6150 LE 0x0241 + GeForce 6100 0x0242 + GeForce Go 6100 0x0247 + GeForce 7900 GTX 0x0290 + GeForce 7900 GT/GTO 0x0291 + GeForce 7900 GS 0x0292 + GeForce 7950 GX2 0x0294 + GeForce Go 7900 GS 0x0298 + GeForce Go 7900 GTX 0x0299 + Quadro FX 2500M 0x029A + Quadro FX 1500M 0x029B + Quadro FX 5500 0x029C + Quadro FX 3500M 0x029D + Quadro FX 1500 0x029E + Quadro FX 4500 X2 0x029F + GeForce 7600 GS 0x02E1 + GeForce FX 5800 Ultra 0x0301 + GeForce FX 5800 0x0302 + Quadro FX 2000 0x0308 + Quadro FX 1000 0x0309 + GeForce FX 5600 Ultra 0x0311 + GeForce FX 5600 0x0312 + GeForce FX 5600XT 0x0314 + GeForce FX Go5600 0x031A + GeForce FX Go5650 0x031B + Quadro FX Go700 0x031C + 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 + Quadro NVS 55/280 PCI 0x032A + Quadro FX 500/FX 600 0x032B + 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 + Quadro FX 3000 0x0338 + Quadro FX 700 0x033F + 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 + Quadro FX Go1000 0x034C + Quadro FX 1100 0x034E + GeForce 7600 GT 0x0391 + GeForce 7600 GS 0x0392 + GeForce 7300 GT 0x0393 + GeForce Go 7600 0x0398 + Quadro FX 560 0x039E + + +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 chip name 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 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 chip name Device PCI ID + ---------------------------------- ---------------------------------- + RIVA TNT 0x0020 + RIVA TNT2/TNT2 Pro 0x0028 + RIVA TNT2 Ultra 0x0029 + Vanta/Vanta LT 0x002C + RIVA TNT2 Model 64/Model 64 Pro 0x002D + Aladdin TNT2 0x00A0 + GeForce 256 0x0100 + GeForce DDR 0x0101 + Quadro 0x0103 + GeForce2 GTS/GeForce2 Pro 0x0150 + GeForce2 Ti 0x0151 + GeForce2 Ultra 0x0152 + Quadro2 Pro 0x0153 diff --git a/abs/core/nvidia-96xx/NVIDIA_173.14.12_2.6.27.patch b/abs/core/nvidia-96xx/NVIDIA_173.14.12_2.6.27.patch new file mode 100644 index 0000000..1ba936b --- /dev/null +++ b/abs/core/nvidia-96xx/NVIDIA_173.14.12_2.6.27.patch @@ -0,0 +1,87 @@ +diff -Nru NVIDIA-Linux-x86-173.14.12-pkg0.orig/usr/src/nv/nv.c NVIDIA-Linux-x86-173.14.12-pkg0/usr/src/nv/nv.c +--- usr/src/nv/nv.c 2008-07-18 03:42:50.000000000 +0200 ++++ NVIDIA-Linux-x86-173.14.12-pkg0/usr/src/nv/nv.c 2008-08-12 00:35:45.000000000 +0200 +@@ -1296,14 +1296,22 @@ + if (get_cpu() == cpu) + __nv_setup_pat_entries(NULL); + else ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) ++ smp_call_function(__nv_setup_pat_entries, hcpu, 1); ++ #else + smp_call_function(__nv_setup_pat_entries, hcpu, 1, 1); ++ #endif + put_cpu(); + break; + case CPU_DOWN_PREPARE: + if (get_cpu() == cpu) + __nv_restore_pat_entries(NULL); + else ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) ++ smp_call_function(__nv_restore_pat_entries, hcpu, 1); ++ #else + smp_call_function(__nv_restore_pat_entries, hcpu, 1, 1); ++ #endif + put_cpu(); + break; + } +diff -Nru NVIDIA-Linux-x86-173.14.12-pkg0.orig/usr/src/nv/nv-linux.h NVIDIA-Linux-x86-173.14.12-pkg0/usr/src/nv/nv-linux.h +--- usr/src/nv/nv-linux.h 2008-07-18 03:42:51.000000000 +0200 ++++ NVIDIA-Linux-x86-173.14.12-pkg0/usr/src/nv/nv-linux.h 2008-08-12 00:44:27.000000000 +0200 +@@ -104,7 +104,10 @@ + #endif + + #include ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) ++#else + #include ++#endif + #include + #include + +@@ -665,13 +668,21 @@ + #if defined(preempt_disable) + preempt_disable(); + #endif ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) ++ ret = smp_call_function(func, info, 1); ++ #else + ret = smp_call_function(func, info, 1, 1); ++ #endif + func(info); + #if defined(preempt_enable) + preempt_enable(); + #endif + #else ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) ++ ret = on_each_cpu(func, info, 1); ++ #else + ret = on_each_cpu(func, info, 1, 1); ++ #endif + #endif + return ret; + } +diff -Nru NVIDIA-Linux-x86-173.14.12-pkg0.orig/usr/src/nv/os-interface.c NVIDIA-Linux-x86-173.14.12-pkg0/usr/src/nv/os-interface.c +--- usr/src/nv/os-interface.c 2008-07-18 03:42:50.000000000 +0200 ++++ NVIDIA-Linux-x86-173.14.12-pkg0/usr/src/nv/os-interface.c 2008-08-12 00:48:07.000000000 +0200 +@@ -48,7 +48,11 @@ + #endif + local_bh_disable(); + atomic_set(&os_smp_barrier, 1); ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) ++ ret = smp_call_function(ipi_handler, NULL, 0); ++ #else + ret = smp_call_function(ipi_handler, NULL, 1, 0); ++ #endif + #endif + return (ret == 0) ? RM_OK : RM_ERROR; + } +@@ -704,7 +708,9 @@ + U032 sig + ) + { ++ #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 26) + return kill_proc(pid, sig, 1) ? RM_ERR_OPERATING_SYSTEM : RM_OK; ++ #endif + } + + /*******************************************************************************/ diff --git a/abs/core/nvidia-96xx/PKGBUILD b/abs/core/nvidia-96xx/PKGBUILD new file mode 100644 index 0000000..ee165d2 --- /dev/null +++ b/abs/core/nvidia-96xx/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 22496 2008-12-26 22:51:15Z tpowa $ +# Maintainer : Tobias Powalowski + +pkgname=nvidia-96xx +pkgver=96.43.09 +_kernver='2.6.28-LinHES' +pkgrel=5 +pkgdesc="NVIDIA legacy drivers for kernel26, 96xx branch" +arch=(i686 x86_64) +license=('custom:NVIDIA') +[ "$CARCH" = "i686" ] && ARCH=x86 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 +url="http://www.nvidia.com/" +depends=('kernel26>=2.6.28' 'kernel26<2.6.29' 'nvidia-96xx-utils' 'vdpinfo-96xx') +conflicts=('nvidia' 'nvidia-71xx' 'nvidia-legacy') +install=nvidia-96xx.install +license=('custom') +source=(http://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run) +md5sums=('758c739114b81ea2cb7da7c22ab80a7e') +[ "$CARCH" = "x86_64" ] && md5sums=('00a4cd93adc956f8cf173ab1036a5bf7') + +build() +{ + # Extract + cd $startdir/src/ + sh NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run --extract-only + cd NVIDIA-Linux-$ARCH-${pkgver}-pkg0 + + 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/ || return 1 + + sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install +} diff --git a/abs/core/nvidia-96xx/nvidia-96xx.install b/abs/core/nvidia-96xx/nvidia-96xx.install new file mode 100644 index 0000000..23e04af --- /dev/null +++ b/abs/core/nvidia-96xx/nvidia-96xx.install @@ -0,0 +1,22 @@ +# arg 1: the new package version +post_install() { + KERNEL_VERSION='2.6.28-LinHES' + 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.28-LinHES' + depmod -v $KERNEL_VERSION > /dev/null 2>&1 +} + +op=$1 +shift +$op $* diff --git a/abs/core/nvidia-utils/PKGBUILD b/abs/core/nvidia-utils/PKGBUILD new file mode 100644 index 0000000..b265eea --- /dev/null +++ b/abs/core/nvidia-utils/PKGBUILD @@ -0,0 +1,73 @@ +pkgname=nvidia-utils +pkgver=185.18.36 +pkgrel=1 +pkgdesc="NVIDIA beta drivers utilities and libraries." +provides=('nvidia-utils' 'libgl') +arch=('i686' 'x86_64') +[ "$CARCH" = "i686" ] && ARCH=x86 && NV=0 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 && NV=0 +url="http://www.nvidia.com/" +depends=('xorg-server>=1.5') +conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-legacy-utils' \ + 'nvidia-71xx-utils' 'nvidia-96xx-utils' ) +license=('custom') +install=nvidia.install +source=(ftp://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run \ + supported-cards.txt) + +options=(docs) + +build() +{ + # override nvida install routine and do it the long way. + cd $startdir/src/ + sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run --extract-only + cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/ + + mkdir -p $startdir/pkg/usr/{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} \ + mkdir -p $startdir/pkg/usr/include/{,GL,cuda,vdpau} + + install -m644 include/cuda/{cudaGL,cuda}.h $startdir/pkg/usr/include/cuda + install -m644 include/vdpau/{vdpau_x11,vdpau}.h $startdir/pkg/usr/include/vdpau + # Conflicts with MESA; if you want to develop opengl app, enable this line + #install -m644 include/GL/{glxext,gl,glx,glext}.h $startdir/pkg/usr/include/GL + + install lib/{libGLcore,libGL,libnvidia-cfg,libcuda,tls/libnvidia-tls,libvdpau_nvidia,libvdpau,libvdpau_trace}.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 + ln -s libvdpau.so.$pkgver libvdpau.so.1 || return 1 + ln -s libvdpau.so.$pkgver libvdpau.so || return 1 + cd $startdir/pkg/usr/lib/xorg/modules/extensions + ln -s libglx.so.$pkgver libglx.so || return 1 + + install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || return 1 + ln -s nvidia $startdir/pkg/usr/share/licenses/nvidia-utils || return 1 + install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || return 1 + install -D -m644 $startdir/src/supported-cards.txt $startdir/pkg/usr/share/doc/nvidia/supported-cards.txt || return 1 + + find $startdir/pkg/usr -type d -exec chmod 755 {} \; +} + diff --git a/abs/core/nvidia-utils/nvidia.install b/abs/core/nvidia-utils/nvidia.install new file mode 100644 index 0000000..7d46ed6 --- /dev/null +++ b/abs/core/nvidia-utils/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/nvidia-utils/supported-cards.txt b/abs/core/nvidia-utils/supported-cards.txt new file mode 100644 index 0000000..ce4c3d4 --- /dev/null +++ b/abs/core/nvidia-utils/supported-cards.txt @@ -0,0 +1,292 @@ +Archlinux currently manages three branches of the NVIDIA binary driver: + +nvidia (latest nvidia release) +nvidia-96xx (96xx legacy branch) +nvidia-71xx (71xx legacy branch) + +This excerpt from the NVIDIA 100.14.09 README lists the supported devices +for each of those: + +______________________________________________________________________________ + +Appendix A. Supported NVIDIA GPU Products +______________________________________________________________________________ + +For the most complete and accurate listing of supported GPUs, please see the +Supported Products List, available from the NVIDIA Linux x86 Graphics Driver +download page. Please go to http://www.nvidia.com/object/unix.html, follow the +Archive link under the Linux x86 heading, follow the link for the 100.14.09 +driver, and then go to the Supported Products List. + + +A1. NVIDIA GEFORCE GPUS + + + NVIDIA GPU product Device PCI ID + ---------------------------------- ---------------------------------- + GeForce 6800 Ultra 0x0040 + GeForce 6800 0x0041 + GeForce 6800 LE 0x0042 + GeForce 6800 XE 0x0043 + GeForce 6800 XT 0x0044 + GeForce 6800 GT 0x0045 + GeForce 6800 GT 0x0046 + GeForce 6800 GS 0x0047 + GeForce 6800 XT 0x0048 + GeForce 7800 GTX 0x0090 + GeForce 7800 GTX 0x0091 + GeForce 7800 GTX 0x0092 + GeForce 7800 GS 0x0093 + GeForce 7800 SLI 0x0095 + GeForce Go 7800 0x0098 + GeForce Go 7800 GTX 0x0099 + GeForce 6800 GS 0x00C0 + GeForce 6800 0x00C1 + GeForce 6800 LE 0x00C2 + GeForce 6800 XT 0x00C3 + GeForce Go 6800 0x00C8 + GeForce Go 6800 Ultra 0x00C9 + GeForce 6800 Ultra/GeForce 6800 0x00F0 + GeForce 6600 GT 0x00F1 + GeForce 6600 0x00F2 + GeForce 6200 0x00F3 + GeForce 6600 LE 0x00F4 + GeForce 7800 GS 0x00F5 + GeForce 6800 GS/XT 0x00F6 + GeForce 6800 Ultra 0x00F9 + GeForce PCX 5750 0x00FA + GeForce PCX 5900 0x00FB + GeForce PCX 5300 0x00FC + GeForce PCX 4300 0x00FF + GeForce 6600 GT 0x0140 + GeForce 6600 0x0141 + GeForce 6600 LE 0x0142 + GeForce 6600 VE 0x0143 + GeForce Go 6600 0x0144 + GeForce 6610 XL 0x0145 + GeForce Go 6600 TE/6200 TE 0x0146 + GeForce 6700 XL 0x0147 + GeForce Go 6600 0x0148 + GeForce Go 6600 GT 0x0149 + GeForce 6200 0x014F + GeForce 6500 0x0160 + GeForce 6200 TurboCache(TM) 0x0161 + GeForce 6200SE TurboCache(TM) 0x0162 + GeForce 6200 LE 0x0163 + GeForce Go 6200 0x0164 + GeForce Go 6400 0x0166 + GeForce Go 6200 0x0167 + GeForce Go 6400 0x0168 + GeForce 6250 0x0169 + GeForce 7100 GS 0x016A + GeForce 8800 GTX 0x0191 + GeForce 8800 GTS 0x0193 + GeForce 8800 Ultra 0x0194 + GeForce 7350 LE 0x01D0 + GeForce 7300 LE 0x01D1 + GeForce 7300 SE/7200 GS 0x01D3 + GeForce Go 7200 0x01D6 + GeForce Go 7300 0x01D7 + GeForce Go 7400 0x01D8 + GeForce 7500 LE 0x01DD + GeForce 7300 GS 0x01DF + GeForce 6800 0x0211 + GeForce 6800 LE 0x0212 + GeForce 6800 GT 0x0215 + GeForce 6800 XT 0x0218 + GeForce 6200 0x0221 + GeForce 6200 A-LE 0x0222 + GeForce 6150 0x0240 + GeForce 6150 LE 0x0241 + GeForce 6100 0x0242 + GeForce Go 6150 0x0244 + GeForce Go 6100 0x0247 + GeForce 7900 GTX 0x0290 + GeForce 7900 GT/GTO 0x0291 + GeForce 7900 GS 0x0292 + GeForce 7950 GX2 0x0293 + GeForce 7950 GX2 0x0294 + GeForce 7950 GT 0x0295 + GeForce Go 7950 GTX 0x0297 + GeForce Go 7900 GS 0x0298 + GeForce Go 7900 GTX 0x0299 + GeForce 7600 GT/Unknown GPU 0x02E0 + GeForce 7600 GS 0x02E1 + GeForce FX 5800 Ultra 0x0301 + GeForce FX 5800 0x0302 + GeForce FX 5600 Ultra 0x0311 + GeForce FX 5600 0x0312 + GeForce FX 5600XT 0x0314 + GeForce FX Go5600 0x031A + GeForce FX Go5650 0x031B + GeForce FX 5200 0x0320 + GeForce FX 5200 Ultra 0x0321 + GeForce FX 5200 0x0322 + GeForce FX 5200LE 0x0323 + GeForce FX Go5200 0x0324 + GeForce FX Go5250 0x0325 + GeForce FX 5500 0x0326 + GeForce FX 5100 0x0327 + GeForce FX Go5200 32M/64M 0x0328 + GeForce FX Go53xx 0x032C + GeForce FX Go5100 0x032D + GeForce FX 5900 Ultra 0x0330 + GeForce FX 5900 0x0331 + GeForce FX 5900XT 0x0332 + GeForce FX 5950 Ultra 0x0333 + GeForce FX 5900ZT 0x0334 + GeForce FX 5700 Ultra 0x0341 + GeForce FX 5700 0x0342 + GeForce FX 5700LE 0x0343 + GeForce FX 5700VE 0x0344 + GeForce FX Go5700 0x0347 + GeForce FX Go5700 0x0348 + GeForce 7650 GS 0x0390 + GeForce 7600 GT 0x0391 + GeForce 7600 GS 0x0392 + GeForce 7300 GT 0x0393 + GeForce 7600 LE 0x0394 + GeForce 7300 GT 0x0395 + GeForce Go 7600 0x0398 + GeForce 6150SE nForce 430 0x03D0 + GeForce 6100 nForce 405 0x03D1 + GeForce 6100 nForce 400 0x03D2 + GeForce 6100 nForce 420 0x03D5 + GeForce 8600 GTS 0x0400 + GeForce 8600 GT 0x0402 + GeForce 8600M GT 0x0407 + GeForce 8500 GT 0x0421 + GeForce 8400 GS 0x0422 + GeForce 8300 GS 0x0423 + GeForce 8600M GS 0x0425 + GeForce 8400M GT 0x0426 + GeForce 8400M GS 0x0427 + GeForce 8400M G 0x0428 + + + +A2. NVIDIA QUADRO GPUS + + + NVIDIA GPU product Device PCI ID + ------------------------------------------------------ --------------- + Quadro FX 4000 0x004E + Quadro FX 4500 0x009D + Quadro FX Go1400 0x00CC + Quadro FX 3450/4000 SDI 0x00CD + Quadro FX 1400 0x00CE + Quadro FX 4400/Quadro FX 3400 0x00F8 + Quadro FX 330 0x00FC + Quadro NVS 280 PCI-E/Quadro FX 330 0x00FD + Quadro FX 1300 0x00FE + Quadro NVS 440 0x014A + Quadro FX 540M/Quadro FX 540M 0x014C + Quadro FX 550 0x014D + Quadro FX 540 0x014E + Quadro NVS 285 0x0165 + Quadro FX 5600 0x019D + Quadro FX 4600 0x019E + Quadro NVS 110M 0x01D7 + Quadro NVS 110M 0x01DA + Quadro NVS 120M 0x01DB + Quadro FX 350M 0x01DC + Quadro FX 350 0x01DE + Quadro NVS 210S / NVIDIA GeForce 6150LE 0x0245 + Quadro FX 2500M 0x029A + Quadro FX 1500M 0x029B + Quadro FX 5500 0x029C + Quadro FX 3500 0x029D + Quadro FX 1500 0x029E + Quadro FX 4500 X2 0x029F + Quadro FX 2000 0x0308 + Quadro FX 1000 0x0309 + Quadro FX Go700 0x031C + Quadro NVS 55/280 PCI 0x032A + Quadro FX 500/FX 600 0x032B + Quadro FX 3000 0x0338 + Quadro FX 700 0x033F + Quadro FX Go1000 0x034C + Quadro FX 1100 0x034E + Quadro FX 560 0x039E + Quadro NVS 320M 0x040B + Quadro FX 570M 0x040C + Quadro FX 1600M 0x040D + Quadro NVS 140M 0x0429 + Quadro NVS 130M 0x042A + Quadro NVS 135M 0x042B + Quadro FX 360M 0x042D + + +Below are the legacy GPUs that are no longer supported in the unified driver. +These GPUs will continue to be maintained through the special legacy NVIDIA +GPU driver releases. + +The 1.0-96xx driver supports the following set of GPUs: + + + NVIDIA GPU product Device PCI ID + ---------------------------------- ---------------------------------- + GeForce2 MX/MX 400 0x0110 + GeForce2 MX 100/200 0x0111 + GeForce2 Go 0x0112 + Quadro2 MXR/EX/Go 0x0113 + GeForce4 MX 460 0x0170 + GeForce4 MX 440 0x0171 + GeForce4 MX 420 0x0172 + GeForce4 MX 440-SE 0x0173 + GeForce4 440 Go 0x0174 + GeForce4 420 Go 0x0175 + GeForce4 420 Go 32M 0x0176 + GeForce4 460 Go 0x0177 + Quadro4 550 XGL 0x0178 + GeForce4 440 Go 64M 0x0179 + Quadro NVS 400 0x017A + Quadro4 500 GoGL 0x017C + GeForce4 410 Go 16M 0x017D + GeForce4 MX 440 with AGP8X 0x0181 + GeForce4 MX 440SE with AGP8X 0x0182 + GeForce4 MX 420 with AGP8X 0x0183 + GeForce4 MX 4000 0x0185 + Quadro4 580 XGL 0x0188 + Quadro NVS 280 SD 0x018A + Quadro4 380 XGL 0x018B + Quadro NVS 50 PCI 0x018C + GeForce2 Integrated GPU 0x01A0 + GeForce4 MX Integrated GPU 0x01F0 + GeForce3 0x0200 + GeForce3 Ti 200 0x0201 + GeForce3 Ti 500 0x0202 + Quadro DCC 0x0203 + GeForce4 Ti 4600 0x0250 + GeForce4 Ti 4400 0x0251 + GeForce4 Ti 4200 0x0253 + Quadro4 900 XGL 0x0258 + Quadro4 750 XGL 0x0259 + Quadro4 700 XGL 0x025B + GeForce4 Ti 4800 0x0280 + GeForce4 Ti 4200 with AGP8X 0x0281 + GeForce4 Ti 4800 SE 0x0282 + GeForce4 4200 Go 0x0286 + Quadro4 980 XGL 0x0288 + Quadro4 780 XGL 0x0289 + Quadro4 700 GoGL 0x028C + + +The 1.0-71xx driver supports the following set of GPUs: + + + NVIDIA GPU product Device PCI ID + ---------------------------------- ---------------------------------- + RIVA TNT 0x0020 + RIVA TNT2/TNT2 Pro 0x0028 + RIVA TNT2 Ultra 0x0029 + Vanta/Vanta LT 0x002C + RIVA TNT2 Model 64/Model 64 Pro 0x002D + Aladdin TNT2 0x00A0 + GeForce 256 0x0100 + GeForce DDR 0x0101 + Quadro 0x0103 + GeForce2 GTS/GeForce2 Pro 0x0150 + GeForce2 Ti 0x0151 + GeForce2 Ultra 0x0152 + Quadro2 Pro 0x0153 diff --git a/abs/core/nvidia/NVIDIA_kernel-169.12-2286310.diff b/abs/core/nvidia/NVIDIA_kernel-169.12-2286310.diff new file mode 100644 index 0000000..e511cfb --- /dev/null +++ b/abs/core/nvidia/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/nvidia/PKGBUILD b/abs/core/nvidia/PKGBUILD new file mode 100644 index 0000000..8da003b --- /dev/null +++ b/abs/core/nvidia/PKGBUILD @@ -0,0 +1,37 @@ +# $Id: PKGBUILD 24051 2009-01-12 12:47:18Z pierre $ +# Maintainer : Thomas Baechler + +pkgname=nvidia +pkgver=185.18.36 +_kernver='2.6.28-LinHES' +pkgrel=1 +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.28' 'kernel26<2.6.29' 'nvidia-utils=185.18.36' 'vdpinfo') +conflicts=('nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy' 'nvidia-beta') +license=('custom') +install=nvidia.install +source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run) +# [ "$CARCH" = "x86_64" ] && md5sums=('318e36822c095fcd410161b1326797b1') + +build() +{ + # Extract + cd $startdir/src/ + sh NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run --extract-only + cd NVIDIA-Linux-$ARCH-${pkgver}-pkg0 + + # 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/nvidia/nvidia.install b/abs/core/nvidia/nvidia.install new file mode 100644 index 0000000..23e04af --- /dev/null +++ b/abs/core/nvidia/nvidia.install @@ -0,0 +1,22 @@ +# arg 1: the new package version +post_install() { + KERNEL_VERSION='2.6.28-LinHES' + 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.28-LinHES' + depmod -v $KERNEL_VERSION > /dev/null 2>&1 +} + +op=$1 +shift +$op $* diff --git a/abs/core/openexr/PKGBUILD b/abs/core/openexr/PKGBUILD index 1c92fbb..c71f10b 100644 --- a/abs/core/openexr/PKGBUILD +++ b/abs/core/openexr/PKGBUILD @@ -1,24 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 17480 2008-10-30 16:52:29Z pierre $ # Maintainer: Tobias Powalowski pkgname=openexr -pkgver=1.4.0a -pkgrel=2 -depends=('mesa' 'libxext' 'libxft' 'fltk') -makedepends=('xproto') +pkgver=1.6.1 +pkgrel=1 +depends=('zlib' 'ilmbase') pkgdesc="openexr library for EXR images" arch=(i686 x86_64) -options=(!libtool) -source=(http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz gcc43.patch) +options=('!libtool') +license=('custom') +source=("http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz" 'gcc43.patch') url="http://www.openexr.org" +md5sums=('11951f164f9c872b183df75e66de145a' '7c83ee3d69ad688142e7de63cb68e70a') build() { - cd $startdir/src/$pkgname-1.4.0 - # gcc4 fix - #patch -Np1 -i ../openexr-gcc4.patch - patch -Np1 -i ../gcc43.patch + cd $startdir/src/$pkgname-$pkgver + patch -p1 -i $srcdir/gcc43.patch || return 1 ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING } -md5sums=('d0a4b9a930c766fa51561b05fb204afe' 'd972a8ea4296762ea30a3dc7de2208ac') diff --git a/abs/core/openexr/gcc43.patch b/abs/core/openexr/gcc43.patch index 08ae699..3624872 100644 --- a/abs/core/openexr/gcc43.patch +++ b/abs/core/openexr/gcc43.patch @@ -1,21 +1,22 @@ ---- a/exrenvmap/main.cpp -+++ b/exrenvmap/main.cpp -@@ -46,6 +46,8 @@ +diff -Nura openexr-1.6.1/exrenvmap/main.cpp openexr-1.6.1.new/exrenvmap/main.cpp +--- openexr-1.6.1/exrenvmap/main.cpp 2007-04-25 03:07:51.000000000 +0200 ++++ openexr-1.6.1.new/exrenvmap/main.cpp 2008-10-30 17:18:13.000000000 +0100 +@@ -45,6 +45,7 @@ + #include #include #include ++#include -+#include -+ using namespace Imf; using namespace std; - ---- a/exrmaketiled/main.cpp -+++ b/exrmaketiled/main.cpp -@@ -47,6 +47,8 @@ +diff -Nura openexr-1.6.1/exrmaketiled/main.cpp openexr-1.6.1.new/exrmaketiled/main.cpp +--- openexr-1.6.1/exrmaketiled/main.cpp 2007-04-25 03:08:45.000000000 +0200 ++++ openexr-1.6.1.new/exrmaketiled/main.cpp 2008-10-30 17:18:40.000000000 +0100 +@@ -46,6 +46,7 @@ + #include #include #include ++#include -+#include -+ using namespace Imf; - using namespace std; + using namespace std; diff --git a/abs/core/openssh/PKGBUILD b/abs/core/openssh/PKGBUILD index 523544f..ade755f 100644 --- a/abs/core/openssh/PKGBUILD +++ b/abs/core/openssh/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 3735 2008-06-30 20:01:30Z andyrtr $ +# $Id: PKGBUILD 20515 2008-12-05 12:08:00Z allan $ # Maintainer: Aaron Griffin # Contributor: judd pkgname=openssh -pkgver=5.0p1 -pkgrel=2 +pkgver=5.1p1 +pkgrel=4 #_gsskexver=20080404 pkgdesc='A Secure SHell server/client' arch=(i686 x86_64) @@ -13,15 +13,15 @@ url="http://www.openssh.org/portable.html" backup=('etc/ssh/ssh_config' 'etc/ssh/sshd_config' 'etc/pam.d/sshd') depends=('openssl>=0.9.8g' 'zlib' 'pam' 'tcp_wrappers' 'heimdal>=1.2-1') source=(ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$pkgname-$pkgver.tar.gz - sshd sshd.confd sshd.pam) + sshd sshd.confd sshd.pam sshd.patch) #http://www.sxw.org.uk/computing/patches/$pkgname-$pkgver-gsskex-$_gsskexver.patch -md5sums=('1f1dfaa775f33dd3328169de9bdc292a' - 'd9ee5e0a0d143689b3d6f11454a2a892' - 'e2cea70ac13af7e63d40eb04415eacd5' - '1c7c2ea8734ec7e3ca58d820634dc73a') +md5sums=('03f2d0c1b5ec60d4ac9997a146d2faec' 'd9ee5e0a0d143689b3d6f11454a2a892' + 'e2cea70ac13af7e63d40eb04415eacd5' '1c7c2ea8734ec7e3ca58d820634dc73a' + 'd5e6ef9fd6126f6a560e402561f5be6e') build() { cd $startdir/src/$pkgname-$pkgver + patch -p1 < ../sshd.patch #patch -up0 < $startdir/src/$pkgname-$pkgver-gsskex-$_gsskexver.patch #NOTE we disable-strip so that makepkg can decide whether to strip or not @@ -49,13 +49,17 @@ build() { install -D -m755 contrib/ssh-copy-id $startdir/pkg/usr/bin/ssh-copy-id install -D -m644 contrib/ssh-copy-id.1 $startdir/pkg/usr/man/man1/ssh-copy-id.1 - #adjust our config files + i# sshd_config sed -i \ -e 's|^#ListenAddress 0.0.0.0|ListenAddress 0.0.0.0|g' \ -e 's|^#UsePAM no|UsePAM yes|g' \ -e 's|^#ChallengeResponseAuthentication yes|ChallengeResponseAuthentication no|g' \ $startdir/pkg/etc/ssh/sshd_config - sed -i -e 's|^# Host \*|Host *|g' $startdir/pkg/etc/ssh/ssh_config echo "HashKnownHosts yes" >> $startdir/pkg/etc/ssh/ssh_config echo "StrictHostKeyChecking ask" >> $startdir/pkg/etc/ssh/ssh_config + + #ssh_config + sed -i \ + -e 's|^# Host \*|Host *|g' \ + $startdir/pkg/etc/ssh/ssh_config } diff --git a/abs/core/openssh/sshd.patch b/abs/core/openssh/sshd.patch new file mode 100644 index 0000000..e883a4c --- /dev/null +++ b/abs/core/openssh/sshd.patch @@ -0,0 +1,35 @@ +diff -ruaN openssh-5.1p1.orig/sshd_config openssh-5.1p1/sshd_config +--- openssh-5.1p1.orig/sshd_config 2008-07-02 12:35:43.000000000 +0000 ++++ openssh-5.1p1/sshd_config 2009-02-28 05:40:09.000000000 +0000 +@@ -38,14 +38,14 @@ + # Authentication: + + #LoginGraceTime 2m +-#PermitRootLogin yes ++PermitRootLogin no + #StrictModes yes + #MaxAuthTries 6 + #MaxSessions 10 + + #RSAAuthentication yes +-#PubkeyAuthentication yes +-#AuthorizedKeysFile .ssh/authorized_keys ++PubkeyAuthentication yes ++AuthorizedKeysFile .ssh/authorized_keys + + # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts + #RhostsRSAAuthentication no +@@ -88,7 +88,7 @@ + #AllowAgentForwarding yes + #AllowTcpForwarding yes + #GatewayPorts no +-#X11Forwarding no ++X11Forwarding yes + #X11DisplayOffset 10 + #X11UseLocalhost yes + #PrintMotd yes +@@ -117,3 +117,4 @@ + # X11Forwarding no + # AllowTcpForwarding no + # ForceCommand cvs server ++DenyUsers mythtv diff --git a/abs/core/openssh/sshd_config.diff b/abs/core/openssh/sshd_config.diff new file mode 100644 index 0000000..e69de29 diff --git a/abs/core/openssl/PKGBUILD b/abs/core/openssl/PKGBUILD index ec3fe68..457c646 100644 --- a/abs/core/openssl/PKGBUILD +++ b/abs/core/openssl/PKGBUILD @@ -1,28 +1,28 @@ -# $Id: PKGBUILD 9446 2008-08-17 18:04:42Z pierre $ +# $Id: PKGBUILD 23270 2009-01-07 15:42:29Z pierre $ # Maintainer: Pierre Schmitz + pkgname=openssl -pkgver=0.9.8h -pkgrel=13 +pkgver=0.9.8j +pkgrel=1 pkgdesc='The Open Source toolkit for Secure Sockets Layer and Transport Layer Security' arch=('i686' 'x86_64') url='http://www.openssl.org' license=('custom:BSD') -groups=('base') -depends=('glibc') +depends=('zlib' 'perl') +optdepends=('ca-certificates') options=('!makeflags') source=("http://www.openssl.org/source/${pkgname}-${pkgver}.tar.gz" \ - 'http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8g-fix_manpages-1.patch') -md5sums=('7d3d41dafc76cf2fcb5559963b5783b3' - '04a6a88c2ee4badd4f8649792b73eaf3') + 'http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8j-fix_manpages-1.patch') build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver - patch -p1 -i ../openssl-0.9.8g-fix_manpages-1.patch || return 1 - ./config --prefix=/usr --openssldir=/etc/ssl shared + patch -p1 -i $srcdir/openssl-0.9.8j-fix_manpages-1.patch || return 1 + ./config --prefix=/usr --openssldir=/etc/ssl shared zlib -Wa,--noexecstack make || return 1 - make INSTALL_PREFIX=$startdir/pkg MANDIR=/usr/share/man install + make test || return 1 + make INSTALL_PREFIX=$pkgdir MANDIR=/usr/share/man install - install -D -m644 LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE + install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE } diff --git a/abs/core/pacman-mirrorlist/PKGBUILD b/abs/core/pacman-mirrorlist/PKGBUILD new file mode 100644 index 0000000..32bd639 --- /dev/null +++ b/abs/core/pacman-mirrorlist/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 23382 2009-01-08 14:18:33Z allan $ +# Maintainer: Dan McGee + +pkgname=pacman-mirrorlist +pkgver=20090108 +pkgrel=1 +pkgdesc="Arch Linux mirror list for use by pacman" +arch=('i686' 'x86_64') +url="http://www.archlinux.org/pacman/" +license=('GPL') +groups=('base') +backup=(etc/pacman.d/mirrorlist) +source=(mirrorlist) + +build() { + mkdir -p $pkgdir/etc/pacman.d + install -m644 $srcdir/mirrorlist $pkgdir/etc/pacman.d/ + # customize mirrorlist to architecture + sed -i -e "s/@carch@/${CARCH}/g" $pkgdir/etc/pacman.d/mirrorlist +} + +md5sums=('854aff1843e1cff2cf45aeef79a89279') diff --git a/abs/core/pacman-mirrorlist/mirrorlist b/abs/core/pacman-mirrorlist/mirrorlist new file mode 100644 index 0000000..ef691e9 --- /dev/null +++ b/abs/core/pacman-mirrorlist/mirrorlist @@ -0,0 +1,116 @@ +# +# Arch Linux repository mirrorlist +# + +# North America +# - United States +Server = ftp://ftp.archlinux.org/$repo/os/@carch@ +Server = ftp://locke.suu.edu/linux/dist/archlinux/$repo/os/@carch@ +Server = http://archlinux.unixheads.org/$repo/os/@carch@ +Server = ftp://ftp.gtlib.gatech.edu/pub/linux/distributions/archlinux/$repo/os/@carch@ +Server = ftp://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/@carch@ +Server = http://mirrors.easynews.com/linux/archlinux/$repo/os/@carch@ +Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/$repo/os/@carch@ +Server = http://archlinux.umflint.edu/mirrors/archlinux/$repo/os/@carch@ +Server = http://mirror.neotuli.net/arch/$repo/os/@carch@ +Server = http://mirror.rit.edu/archlinux/$repo/os/@carch@ +Server = http://mirror.umoss.org/archlinux/$repo/os/@carch@ +Server = http://schlunix.org/archlinux/$repo/os/@carch@ +Server = http://mirror.archlinux.com.ve/$repo/os/@carch@ +Server = http://mirrors.gigenet.com/archlinux/$repo/os/@carch@ +# - Canada +Server = ftp://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/@carch@ +Server = ftp://mirrors.portafixe.com/archlinux/$repo/os/@carch@ + +# South America +# - Brazil +Server = http://archlinux.c3sl.ufpr.br/$repo/os/@carch@ +Server = ftp://archlinux.c3sl.ufpr.br/archlinux/$repo/os/@carch@ +Server = ftp://ftp.las.ic.unicamp.br/pub/archlinux/$repo/os/@carch@ +# - Venezuela +Server = http://mirror2.archlinux.com.ve/$repo/os/@carch@ + +# Europe +# - Austria +Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/$repo/os/@carch@ +# - Belgium +Server = ftp://ftp.belnet.be/mirror/archlinux.org/$repo/os/@carch@ +# - Czech Republic +Server = ftp://ftp.sh.cvut.cz/MIRRORS/arch/$repo/os/@carch@ +# - Denmark +Server = ftp://ftp.klid.dk/archlinux/$repo/os/@carch@ +# - Estonia +Server = ftp://ftp.estpak.ee/pub/archlinux/$repo/os/@carch@ +# - France +Server = ftp://mir1.archlinuxfr.org/archlinux/$repo/os/@carch@ +Server = ftp://mir2.archlinuxfr.org/archlinux/$repo/os/@carch@ +Server = ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/$repo/os/@carch@ +Server = http://mir.archlinux.fr/$repo/os/@carch@ +Server = ftp://ftp.free.fr/mirrors/ftp.archlinux.org/$repo/os/@carch@ +Server = ftp://ftp.rez-gif.supelec.fr/Linux/archlinux/$repo/os/@carch@ +# - Germany +Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/@carch@ +Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/@carch@ +Server = ftp://ftp.uni-bayreuth.de/pub/linux/archlinux/$repo/os/@carch@ +Server = ftp://ftp.archlinuxppc.org/@carch@/$repo/os/@carch@ +Server = ftp://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/@carch@ +Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/@carch@ +Server = ftp://mirrors.igprolin-online.org/archlinux/$repo/os/@carch@ +Server = ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/@carch@ +# - Great Britain +Server = http://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/@carch@ +Server = ftp://mirrors.uk2.net/pub/archlinux/$repo/os/@carch@ +Server = http://archlinux.mirrors.uk2.net/$repo/os/@carch@ +Server = ftp://mirror.lividpenguin.com/pub/archlinux/$repo/os/@carch@ +# - Greece +Server = ftp://ftp.ntua.gr/pub/linux/archlinux/$repo/os/@carch@ +# - Hungary +Server = ftp://ftp.mfa.kfki.hu/pub/mirrors/ftp.archlinux.org/$repo/os/@carch@ +# - Ireland +Server = ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/$repo/os/@carch@ +# - Italy +Server = ftp://mi.mirror.garr.it/mirrors/archlinux/$repo/os/@carch@ +# - Netherlands +Server = ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/$repo/os/@carch@ +Server = ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/$repo/os/@carch@ +# - Norway +Server = http://mirror.archlinux.no/$repo/os/@carch@ +# - Poland +Server = ftp://mirror.icis.pcz.pl/archlinux/$repo/os/@carch@ +Server = http://piotrkosoft.net/pub/mirrors/ftp.archlinux.org/$repo/os/@carch@ +Server = ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.archlinux.org/$repo/os/@carch@ +Server = http://unix.net.pl/archlinux.org/$repo/os/@carch@ +# - Portugal +Server = ftp://cesium.di.uminho.pt/pub/archlinux/$repo/os/@carch@ +# - Romania +Server = ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/$repo/os/@carch@ +# - Russia +Server = ftp://mirror.yandex.ru/archlinux/$repo/os/@carch@ +Server = http://archlinux.freeside.ru/$repo/os/@carch@ +# - Sweden +Server = ftp://ftp.ds.hj.se/pub/os/linux/archlinux/$repo/os/@carch@ +Server = ftp://ftp.gigabit.nu/$repo/os/@carch@ +# - Switzerland +Server = http://archlinux.puzzle.ch/$repo/os/@carch@ +# - Turkey +Server = ftp://ftp.linux.org.tr/pub/mirrors/archlinux/$repo/os/@carch@ +# - Ukraine +Server = ftp://archlinux.hell.org.ua/archlinux/$repo/os/@carch@ +Server = ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/$repo/os/@carch@ + +# Asia +# - Indonesia +Server = http://archlinux.cbn.net.id/$repo/os/@carch@ +Server = ftp://archlinux.cbn.net.id/pub/archlinux/$repo/os/@carch@ +# - Israel +Server = http://mirror.isoc.org.il/pub/archlinux/$repo/os/@carch@ +# - Vietnam +# Domain name is ftp.indochinalinux.com but there are frequent DNS problems +Server = ftp://202.78.230.5/archlinux/$repo/os/@carch@ + +# Australia +Server = ftp://mirror.pacific.net.au/linux/archlinux/$repo/os/@carch@ +Server = ftp://mirror.aarnet.edu.au/pub/archlinux/$repo/os/@carch@ +Server = ftp://ftp.iinet.net.au/pub/archlinux/$repo/os/@carch@ +Server = http://mirror.internode.on.net/pub/archlinux/$repo/os/@carch@ + diff --git a/abs/core/pacman/PKGBUILD b/abs/core/pacman/PKGBUILD index ccd1857..ecb96c7 100644 --- a/abs/core/pacman/PKGBUILD +++ b/abs/core/pacman/PKGBUILD @@ -1,46 +1,42 @@ -# $Id: PKGBUILD 10342 2008-08-27 01:24:22Z dan $ +# $Id: PKGBUILD 23245 2009-01-07 02:10:32Z dan $ # Maintainer: Aaron Griffin # Maintainer: Dan McGee pkgname=pacman -pkgver=3.2.1 -pkgrel=10 +pkgver=3.2.2 +pkgrel=1 pkgdesc="A library-based package manager with dependency support" arch=('i686' 'x86_64') url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base') -depends=('bash' 'libarchive>=2.5.5' 'libdownload>=1.3') +depends=('bash' 'libarchive>=2.6.0' 'libdownload>=1.3' 'pacman-mirrorlist') +optdepends=('fakeroot: for makepkg usage as normal user' + 'python: for rankmirrors script usage') backup=(etc/pacman.conf etc/makepkg.conf etc/pacman.d/mirrorlist) install=pacman.install options=(!libtool) source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz - pacman.conf - mirrorlist) -md5sums=('5b133613cebd74aa8c199de049e25cc4' - '49b799e923933a30cdefcac06f530fb0' - 'a16981c0fef957a95999550f68cdb0f8') + pacman.conf) +md5sums=('8404fc38566bb52f8eee2ea483a41051' + '27271a59b9c9f748547ef4feae90bc5c') build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var make || return 1 - make DESTDIR=$startdir/pkg install || return 1 + make DESTDIR=$pkgdir install || return 1 # install arch specific stuff - mkdir -p ${startdir}/pkg/etc/pacman.d - install -m644 ${startdir}/src/pacman.conf ${startdir}/pkg/etc/ - install -m644 ${startdir}/src/mirrorlist ${startdir}/pkg/etc/pacman.d/ - - # customize mirrorlist to architecture - sed -i -e "s/@carch@/${CARCH}/g" ${startdir}/pkg/etc/pacman.d/mirrorlist + mkdir -p $pkgdir/etc + install -m644 $srcdir/pacman.conf $pkgdir/etc/ # install completion files - mkdir -p $startdir/pkg/etc/bash_completion.d/ - install -m644 contrib/bash_completion $startdir/pkg/etc/bash_completion.d/pacman - mkdir -p $startdir/pkg/usr/share/zsh/site-functions/ - install -m644 contrib/zsh_completion $startdir/pkg/usr/share/zsh/site-functions/_pacman + mkdir -p $pkgdir/etc/bash_completion.d/ + install -m644 contrib/bash_completion $pkgdir/etc/bash_completion.d/pacman + mkdir -p $pkgdir/usr/share/zsh/site-functions/ + install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman } # vim: set ts=2 sw=2 et: diff --git a/abs/core/pacman/pacman.conf b/abs/core/pacman/pacman.conf index 6a7bd54..6fe3d29 100644 --- a/abs/core/pacman/pacman.conf +++ b/abs/core/pacman/pacman.conf @@ -18,6 +18,7 @@ HoldPkg = pacman glibc SyncFirst = pacman #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u #XferCommand = /usr/bin/curl %u > %o +#CleanMethod = KeepInstalled # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup #IgnorePkg = diff --git a/abs/core/pam/PKGBUILD b/abs/core/pam/PKGBUILD index 4bdca6a..63108ea 100644 --- a/abs/core/pam/PKGBUILD +++ b/abs/core/pam/PKGBUILD @@ -1,38 +1,39 @@ -# $Id: PKGBUILD 3761 2008-06-30 20:27:30Z andyrtr $ +# $Id: PKGBUILD 29514 2009-03-09 17:33:55Z tpowa $ # Maintainer: judd pkgname=pam -pkgver=1.0.1 -pkgrel=11 +pkgver=1.0.4 +pkgrel=1 pkgdesc="PAM (Pluggable Authentication Modules) library" arch=(i686 x86_64) license=('GPL2') url="http://www.kernel.org/pub/linux/libs/pam/" groups=('base') depends=('glibc' 'db>=4.7' 'cracklib') +makedepends=('flex') backup=(etc/security/{access.conf,group.conf,limits.conf,namespace.conf,namespace.init,pam_env.conf,time.conf} etc/pam.d/other etc/default/passwd etc/environment) source=(http://www.kernel.org/pub/linux/libs/pam/library/Linux-PAM-$pkgver.tar.bz2 \ - ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2/pam_unix2-2.1.tar.bz2 \ + ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2/pam_unix2-2.6.tar.bz2 \ other) options=('!libtool' '!emptydirs') -md5sums=('1c75f81bd44c5da93014992820917847' - '08d3bc1940897b5dfcbe2f51dd979ad0' +md5sums=('189171821b56aaf791cc890d0707ea82' + 'e2788389a6c59224110a45fcff30e02b' '6e6c8719e5989d976a14610f340bd33a') build() { - cd $startdir/src/Linux-PAM-$pkgver - ./configure --sysconfdir=/etc DESTDIR=$startdir/pkg --libdir=/lib + cd $srcdir/Linux-PAM-$pkgver + ./configure --sysconfdir=/etc DESTDIR=$pkgdir --libdir=/lib make || return 1 - make INSTALL=/bin/install DESTDIR=$startdir/pkg install - install -D -m644 ../other $startdir/pkg/etc/pam.d/other + make INSTALL=/bin/install DESTDIR=$pkgdir install + install -D -m644 ../other $pkgdir/etc/pam.d/other # build pam_unix2 module # source ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2 - cd $startdir/src/pam_unix2-2.1 + cd $srcdir/pam_unix2-2.6 ./configure make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=$pkgdir install # add the realtime permissions for audio users - sed -i 's|# End of file||' $startdir/pkg/etc/security/limits.conf - cat >>$startdir/pkg/etc/security/limits.conf <<_EOT + sed -i 's|# End of file||' $pkgdir/etc/security/limits.conf + cat >>$pkgdir/etc/security/limits.conf <<_EOT * - rtprio 0 * - nice 0 @audio - rtprio 65 @@ -40,11 +41,11 @@ build() { @audio - memlock 40000 _EOT # fix some missing symlinks from old pam for compatibility - cd $startdir/pkg/lib/security + cd $pkgdir/lib/security ln -s pam_unix.so pam_unix_acct.so ln -s pam_unix.so pam_unix_auth.so ln -s pam_unix.so pam_unix_passwd.so ln -s pam_unix.so pam_unix_session.so # set unix_chkpwd uid - chmod +s $startdir/pkg/sbin/unix_chkpwd + chmod +s $pkgdir/sbin/unix_chkpwd } diff --git a/abs/core/pango/PKGBUILD b/abs/core/pango/PKGBUILD index 5284f02..c67dec2 100644 --- a/abs/core/pango/PKGBUILD +++ b/abs/core/pango/PKGBUILD @@ -1,24 +1,24 @@ -# $Id: PKGBUILD 4025 2008-07-02 18:01:45Z jgc $ +# $Id: PKGBUILD 36027 2009-04-19 18:20:15Z jgc $ # Maintainer: Jan de Groot pkgname=pango -pkgver=1.20.5 +pkgver=1.24.1 pkgrel=1 pkgdesc="A library for layout and rendering of text" arch=(i686 x86_64) license=('LGPL') -depends=('glib2>=2.16.4' 'cairo>=1.6.4' 'libxft>=2.1.12' 'libthai>=0.1.9') +depends=('glib2>=2.20.1' 'cairo>=1.8.6' 'libxft>=2.1.13' 'libthai>=0.1.11' 'freetype2>=2.3.9') makedepends=('pkgconfig' 'libxt') options=('!libtool' '!emptydirs') install=pango.install -source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.20/${pkgname}-${pkgver}.tar.bz2) -url="http://www.gtk.org/" -md5sums=('052b60a12f6b2eb4f251ab961f2b2b84') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.24/${pkgname}-${pkgver}.tar.bz2) +url="http://www.pango.org/" +md5sums=('af0beac1dd1825e241c5728081f16acd') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --sysconfdir=/etc \ - --localstatedir=/var --without-qt || return 1 + --localstatedir=/var || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/pango/bgo563356.patch b/abs/core/pango/bgo563356.patch new file mode 100644 index 0000000..226fd0c --- /dev/null +++ b/abs/core/pango/bgo563356.patch @@ -0,0 +1,305 @@ +diff -aur old/ChangeLog new/ChangeLog +--- old/ChangeLog 2008-12-06 14:35:33.037390818 +0800 ++++ new/ChangeLog 2008-12-06 14:35:11.475339336 +0800 +@@ -1,3 +1,39 @@ ++2008-12-05 Behdad Esfahbod ++ ++ Bug 563356 – The input area of firefox and the blank width after text ++ in gnome-menu was stretched too wide, under pango-1.22.3 ++ ++ * docs/tmpl/fonts.sgml: ++ * pango/pango-impl-utils.h: ++ * pango/pangocairo-atsuifont.c ++ (pango_cairo_atsui_font_create_metrics_for_context): ++ * pango/pangocairo-win32font.c ++ (pango_cairo_win32_font_create_metrics_for_context): ++ * pango/pangofc-font.c (pango_fc_font_create_metrics_for_context): ++ For approximate_char_width calculation take each char's width into ++ account. That is, do a weighted average instead of uniform average. ++ g_unichar_iszerowidth() chars count as 0, g_unichar_iswide() chars ++ count 2, and the rest count as 1. Pretty much wcwidth() behavior. ++ See bug report for rationale. ++ ++2008-11-28 Behdad Esfahbod ++ ++ Bug 562574 – Pangocariowin32 is leaking every cairo font it ever ++ creates ++ ++ * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize): ++ * pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize): ++ Finalize shared pangocairo font resources. Oops! ++ ++ * pango/pangocairo-font.c (_pango_cairo_font_private_finalize): ++ Protect against multiple calls to finalize. This is practiced by the ++ pangocairo-fcfont when a font is shutdown and then finalized. ++ ++2008-11-26 Behdad Esfahbod ++ ++ * examples/cairotwisted.c (parametrize_path), (point_on_path): ++ Handle close_path correctly. ++ + 2008-11-23 Behdad Esfahbod + + * === Released 1.22.3 === +diff -aur old/docs/tmpl/fonts.sgml new/docs/tmpl/fonts.sgml +--- old/docs/tmpl/fonts.sgml 2008-12-06 14:35:11.450807479 +0800 ++++ new/docs/tmpl/fonts.sgml 2008-12-06 14:34:53.771786070 +0800 +@@ -441,7 +441,10 @@ + @descent: the distance from the baseline to the lowest point of the glyphs of + the font. This is positive in practically all fonts. + @approximate_char_width: approximate average width of the regular glyphs of +- the font. ++ the font. Note that for this calculation, East Asian characters ++ (those passing g_unichar_iswide()) are counted as double-width. ++ This produces a more uniform value for this measure across languages ++ and results in more uniform and more expected UI sizes. + @approximate_digit_width: approximate average width of the glyphs for digits + of the font. + @underline_position: position of the underline. This is normally negative. +diff -aur old/examples/cairotwisted.c new/examples/cairotwisted.c +--- old/examples/cairotwisted.c 2008-12-06 14:35:32.900725834 +0800 ++++ new/examples/cairotwisted.c 2008-12-06 14:35:11.264059243 +0800 +@@ -216,7 +216,7 @@ + parametrize_path (cairo_path_t *path) + { + int i; +- cairo_path_data_t *data, current_point; ++ cairo_path_data_t *data, last_move_to, current_point; + parametrization_t *parametrization; + + parametrization = malloc (path->num_data * sizeof (parametrization[0])); +@@ -226,8 +226,13 @@ + parametrization[i] = 0.0; + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: ++ last_move_to = data[1]; + current_point = data[1]; + break; ++ case CAIRO_PATH_CLOSE_PATH: ++ /* Make it look like it's a line_to to last_move_to */ ++ data = (&last_move_to) - 1; ++ /* fall through */ + case CAIRO_PATH_LINE_TO: + parametrization[i] = two_points_distance (¤t_point, &data[1]); + current_point = data[1]; +@@ -245,8 +250,6 @@ + + current_point = data[3]; + break; +- case CAIRO_PATH_CLOSE_PATH: +- break; + default: + g_assert_not_reached (); + } +@@ -320,7 +323,7 @@ + { + int i; + double ratio, the_y = *y, the_x = *x, dx, dy; +- cairo_path_data_t *data, current_point; ++ cairo_path_data_t *data, last_move_to, current_point; + cairo_path_t *path = param->path; + parametrization_t *parametrization = param->parametrization; + +@@ -333,6 +336,7 @@ + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: + current_point = data[1]; ++ last_move_to = data[1]; + break; + case CAIRO_PATH_LINE_TO: + current_point = data[1]; +@@ -352,6 +356,10 @@ + + case CAIRO_PATH_MOVE_TO: + break; ++ case CAIRO_PATH_CLOSE_PATH: ++ /* Make it look like it's a line_to to last_move_to */ ++ data = (&last_move_to) - 1; ++ /* fall through */ + case CAIRO_PATH_LINE_TO: + { + ratio = the_x / parametrization[i]; +@@ -424,8 +432,6 @@ + *y += dx * ratio; + } + break; +- case CAIRO_PATH_CLOSE_PATH: +- break; + default: + g_assert_not_reached (); + } +diff -aur old/pango/pango-impl-utils.h new/pango/pango-impl-utils.h +--- old/pango/pango-impl-utils.h 2008-12-06 14:35:22.291559359 +0800 ++++ new/pango/pango-impl-utils.h 2008-12-06 14:35:03.550729660 +0800 +@@ -23,6 +23,7 @@ + #ifndef __PANGO_IMPL_UTILS_H__ + #define __PANGO_IMPL_UTILS_H__ + ++#include + #include + #include + +@@ -92,6 +93,36 @@ + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + ++ ++/* We define these functions static here because we don't want to add public API ++ * for them (if anything, it belongs to glib, but glib found it trivial enough ++ * not to add API for). At some point metrics calculations will be ++ * centralized and this mess can be minimized. Or so I hope. ++ */ ++ ++static inline G_GNUC_UNUSED int ++pango_unichar_width (gunichar c) ++{ ++ return G_UNLIKELY (g_unichar_iszerowidth (c)) ? 0 : ++ G_UNLIKELY (g_unichar_iswide (c)) ? 2 : 1; ++} ++ ++static G_GNUC_UNUSED glong ++pango_utf8_strwidth (const gchar *p) ++{ ++ glong len = 0; ++ g_return_val_if_fail (p != NULL, 0); ++ ++ while (*p) ++ { ++ len += pango_unichar_width (g_utf8_get_char (p)); ++ p = g_utf8_next_char (p); ++ } ++ ++ return len; ++} ++ ++ + G_END_DECLS + + #endif /* __PANGO_IMPL_UTILS_H__ */ +diff -aur old/pango/pangocairo-atsuifont.c new/pango/pangocairo-atsuifont.c +--- old/pango/pangocairo-atsuifont.c 2008-12-06 14:35:23.464057615 +0800 ++++ new/pango/pangocairo-atsuifont.c 2008-12-06 14:35:04.914061436 +0800 +@@ -24,6 +24,7 @@ + + #import + ++#include "pango-impl-utils.h" + #include "pangoatsui-private.h" + #include "pangocairo.h" + #include "pangocairo-private.h" +@@ -148,7 +149,7 @@ + pango_layout_set_text (layout, sample_str, -1); + pango_layout_get_extents (layout, NULL, &extents); + +- metrics->approximate_char_width = extents.width / g_utf8_strlen (sample_str, -1); ++ metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str); + + pango_layout_set_text (layout, "0123456789", -1); + metrics->approximate_digit_width = max_glyph_width (layout); +@@ -174,6 +175,10 @@ + static void + pango_cairo_atsui_font_finalize (GObject *object) + { ++ PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) object; ++ ++ _pango_cairo_font_private_finalize (&cafont->cf_priv); ++ + G_OBJECT_CLASS (pango_cairo_atsui_font_parent_class)->finalize (object); + } + +@@ -191,7 +196,7 @@ + } + + static void +-pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont) ++pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont G_GNUC_UNUSED) + { + } + +diff -aur old/pango/pangocairo-fcfont.c new/pango/pangocairo-fcfont.c +--- old/pango/pangocairo-fcfont.c 2008-12-06 14:35:22.840724772 +0800 ++++ new/pango/pangocairo-fcfont.c 2008-12-06 14:35:04.294060844 +0800 +@@ -88,7 +88,7 @@ + static void + pango_cairo_fc_font_finalize (GObject *object) + { +- PangoCairoFcFont *cffont = (PangoCairoFcFont *) (object); ++ PangoCairoFcFont *cffont = (PangoCairoFcFont *) object; + + _pango_cairo_font_private_finalize (&cffont->cf_priv); + +@@ -162,7 +162,7 @@ + } + + static void +-pango_cairo_fc_font_init (PangoCairoFcFont *cffont) ++pango_cairo_fc_font_init (PangoCairoFcFont *cffont G_GNUC_UNUSED) + { + } + +diff -aur old/pango/pangocairo-font.c new/pango/pangocairo-font.c +--- old/pango/pangocairo-font.c 2008-12-06 14:35:23.387391067 +0800 ++++ new/pango/pangocairo-font.c 2008-12-06 14:35:04.840728398 +0800 +@@ -560,14 +560,18 @@ + + if (cf_priv->scaled_font) + cairo_scaled_font_destroy (cf_priv->scaled_font); ++ cf_priv->scaled_font = NULL; + + _pango_cairo_font_hex_box_info_destroy (cf_priv->hbi); ++ cf_priv->hbi = NULL; + + if (cf_priv->glyph_extents_cache) + g_free (cf_priv->glyph_extents_cache); ++ cf_priv->glyph_extents_cache = NULL; + + g_slist_foreach (cf_priv->metrics_by_lang, (GFunc)free_metrics_info, NULL); + g_slist_free (cf_priv->metrics_by_lang); ++ cf_priv->metrics_by_lang = NULL; + } + + gboolean +diff -aur old/pango/pangocairo-win32font.c new/pango/pangocairo-win32font.c +--- old/pango/pangocairo-win32font.c 2008-12-06 14:35:22.500726273 +0800 ++++ new/pango/pangocairo-win32font.c 2008-12-06 14:35:03.990726207 +0800 +@@ -150,7 +150,7 @@ + pango_layout_set_text (layout, sample_str, -1); + pango_layout_get_extents (layout, NULL, &extents); + +- metrics->approximate_char_width = extents.width / g_utf8_strlen (sample_str, -1); ++ metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str); + + pango_layout_set_text (layout, "0123456789", -1); + metrics->approximate_digit_width = max_glyph_width (layout); +@@ -164,6 +164,10 @@ + static void + pango_cairo_win32_font_finalize (GObject *object) + { ++ PangoCairoWin32Font *cwfont = (PangoCairoWin32Font *) object; ++ ++ _pango_cairo_font_private_finalize (&cwfont->cf_priv); ++ + G_OBJECT_CLASS (pango_cairo_win32_font_parent_class)->finalize (object); + } + +@@ -225,7 +229,7 @@ + } + + static void +-pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont) ++pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont G_GNUC_UNUSED) + { + } + +diff -aur old/pango/pangofc-font.c new/pango/pangofc-font.c +--- old/pango/pangofc-font.c 2008-12-06 14:35:23.117390557 +0800 ++++ new/pango/pangofc-font.c 2008-12-06 14:35:04.564059609 +0800 +@@ -496,7 +496,7 @@ + pango_layout_get_extents (layout, NULL, &extents); + + metrics->approximate_char_width = +- extents.width / g_utf8_strlen (sample_str, -1); ++ extents.width / pango_utf8_strwidth (sample_str); + + pango_layout_set_text (layout, "0123456789", -1); + metrics->approximate_digit_width = max_glyph_width (layout); diff --git a/abs/core/parted/PKGBUILD b/abs/core/parted/PKGBUILD index b65a9ca..be2d735 100644 --- a/abs/core/parted/PKGBUILD +++ b/abs/core/parted/PKGBUILD @@ -4,7 +4,7 @@ pkgname=parted pkgver=1.8.8 -pkgrel=1 +pkgrel=2 pkgdesc="A program for creating, destroying, resizing, checking and copying partitions" arch=(i686 x86_64) license=('GPL3') @@ -12,7 +12,7 @@ url="http://www.gnu.org/software/parted/parted.html" depends=('e2fsprogs') source=(ftp://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz parted-1.7.1-fix-seg.patch) md5sums=('0d494591731082ec57cc18627728124a' '88f3c5b45fdd1d3dce70a1a19bf48481') -options=(!libtool) +options=(!libtool !emptydirs) build() { cd $startdir/src/$pkgname-$pkgver diff --git a/abs/core/parted/__changelog b/abs/core/parted/__changelog new file mode 100644 index 0000000..0717177 --- /dev/null +++ b/abs/core/parted/__changelog @@ -0,0 +1,2 @@ +modify pkgbuild to not include emptydirs ++options=(!libtool !emptydirs) diff --git a/abs/core/patch/PKGBUILD b/abs/core/patch/PKGBUILD new file mode 100644 index 0000000..87810d1 --- /dev/null +++ b/abs/core/patch/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 1438 2008-05-08 17:11:21Z andyrtr $ +# Maintainer: judd +pkgname=patch +pkgver=2.5.9 +pkgrel=1 +pkgdesc="A utility to apply patch files to original sources" +arch=('i686' 'x86_64') +url="http://www.gnu.org/software/patch/patch.html" +license=('GPL') +groups=('base-devel') +depends=('glibc' 'ed') +source=(ftp://alpha.gnu.org/gnu/diffutils/$pkgname-$pkgver.tar.gz) + #ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('dacfb618082f8d3a2194601193cf8716') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --mandir=/usr/share/man + make || return 1 + make prefix=$startdir/pkg/usr mandir=$startdir/pkg/usr/share/man install || return 1 +} diff --git a/abs/core/pciutils/PKGBUILD b/abs/core/pciutils/PKGBUILD index 9820582..d206022 100644 --- a/abs/core/pciutils/PKGBUILD +++ b/abs/core/pciutils/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: Tobias Powalowski pkgname=pciutils pkgver=3.0.0 -pkgrel=11 +pkgrel=12 pkgdesc="PCI bus configuration space access library and tools" arch=(i686 x86_64) license=('GPL2') diff --git a/abs/core/pcre/ChangeLog b/abs/core/pcre/ChangeLog index fa86646..a1850cf 100644 --- a/abs/core/pcre/ChangeLog +++ b/abs/core/pcre/ChangeLog @@ -1,3 +1,9 @@ +2008-09-05 Eric Belanger + + * pcre 7.8-1 + * Upstream update + * Fixed license + 2008-07-07 Eric Belanger * pcre 7.7-2 diff --git a/abs/core/pcre/PKGBUILD b/abs/core/pcre/PKGBUILD index 2cf7252..b019bed 100644 --- a/abs/core/pcre/PKGBUILD +++ b/abs/core/pcre/PKGBUILD @@ -1,26 +1,24 @@ -# $Id: PKGBUILD 4449 2008-07-07 16:12:00Z eric $ +# $Id: PKGBUILD 11888 2008-09-06 03:23:26Z eric $ # Maintainer: Eric Belanger # Contributor: John Proctor pkgname=pcre -pkgver=7.7 -pkgrel=11 +pkgver=7.8 +pkgrel=1 pkgdesc="A library that implements Perl 5-style regular expressions" arch=('i686' 'x86_64') url="http://pcre.sourceforge.net" -license=('custom') +license=('BSD') groups=('base') depends=('gcc-libs') options=('!libtool' '!makeflags') -source=(ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/${pkgname}-${pkgver}.tar.bz2 \ - libpcre-7.7-buffer-overflow.patch) -md5sums=('4b2e9cde1f7227448dddba59843efa0b' 'ea2204b6a0cbc83b3ca925ace06459a1') -sha1sums=('f1f54d3e13e6cb427de962e62eaaee32c74cba38' '5a69fb97f1fa547f9012082221a6b98d77b65277') +source=(ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/${pkgname}-${pkgver}.tar.bz2) +md5sums=('141132d6af14dccc7b08fa797e4fd441') +sha1sums=('552909f9d18e1954eec639f926957a4cb2de1ec3') build() { cd ${srcdir}/${pkgname}-${pkgver} [ "${CARCH}" = "x86_64" ] && export CFLAGS="${CFLAGS} -fPIC" - patch -p1 < ../libpcre-7.7-buffer-overflow.patch || return 1 ./configure --prefix=/usr --enable-utf8 --enable-unicode-properties || return 1 make || return 1 make DESTDIR=${pkgdir} install || return 1 @@ -28,5 +26,5 @@ build() { mkdir -p ${pkgdir}/lib mv ${pkgdir}/usr/lib/libpcre.so.* ${pkgdir}/lib/ || return 1 ln -sf ../../lib/libpcre.so.0 ${pkgdir}/usr/lib/libpcre.so || return 1 - install -D -m644 LICENCE ${pkgdir}/usr/share/licenses/${pkgname}/license.txt || return 1 + install -D -m644 LICENCE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 } diff --git a/abs/core/perl-xml-dom/PKGBUILD b/abs/core/perl-xml-dom/PKGBUILD new file mode 100644 index 0000000..ab6e8a5 --- /dev/null +++ b/abs/core/perl-xml-dom/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-xml-dom +pkgver=1.44 +pkgrel=5 +pkgdesc="Implements Level 1 of W3's DOM" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~TJMATHER/XML-DOM" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0' 'perlxml>=2.30' 'perl-xml-regexp' 'libxml-perl>=0.07' 'perl-libwww') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/T/TJ/TJMATHER/XML-DOM-$pkgver.tar.gz) +md5sums=('1ec2032a06e5762984f7a332c199c205') + +build() { + cd $startdir/src/XML-DOM-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-algorithm-diff/PKGBUILD b/abs/core/perl_modules/perl-algorithm-diff/PKGBUILD new file mode 100644 index 0000000..d185772 --- /dev/null +++ b/abs/core/perl_modules/perl-algorithm-diff/PKGBUILD @@ -0,0 +1,20 @@ +# This PKGBUILD was autocreated. See http://xtermin.us/archperl/ for details +# Maintainer: Charles Mauch +pkgname=perl-algorithm-diff +pkgver=1.1902 +pkgrel=4 +pkgdesc="Perl/CPAN Module Algorithm::Diff : Diff also Longest Common Subsequence" +arch=("i686" "x86_64") +url="http://search.cpan.org/TYEMQ/Algorithm-Diff" +license=("GPL" "Artistic") +source=("http://www.cpan.org/authors/id/T/TY/TYEMQ/Algorithm-Diff-1.1902.tar.gz") +md5sums=("ff3e17ae485f8adfb8857b183991fbce") +groups=('shepherd-dep') +build() { + cd $startdir/src/Algorithm-Diff-1.1902 + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make pure_install doc_install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-astro-suntime/PKGBUILD b/abs/core/perl_modules/perl-astro-suntime/PKGBUILD new file mode 100644 index 0000000..d615aa3 --- /dev/null +++ b/abs/core/perl_modules/perl-astro-suntime/PKGBUILD @@ -0,0 +1,29 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: Ross melin + +# Required by zoneminder + +pkgname=perl-astro-suntime +pkgver=0.01 +pkgrel=2 +pkgdesc="Calculate sun rise/set times" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~ROBF/Astro-SunTime" +license=('GPL' 'PerlArtistic') +depends=('perl-time-modules') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/R/RO/ROBF/Astro-SunTime-$pkgver.tar.gz) +md5sums=('4657927a49604494bfaaa153663b90b9') + +build() { + cd $startdir/src/Astro-SunTime-$pkgver + eval `perl -V:archname` + PERL_MM_USE_DEFAULT=1 /usr/bin/perl Makefile.PL \ + INSTALLDIRS=vendor || return 1 + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -delete + /usr/bin/find $startdir/pkg -name '*.pod' -delete +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/perl_modules/perl-class-data-inheritable/PKGBUILD b/abs/core/perl_modules/perl-class-data-inheritable/PKGBUILD new file mode 100644 index 0000000..4769533 --- /dev/null +++ b/abs/core/perl_modules/perl-class-data-inheritable/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-class-data-inheritable +pkgver=0.08 +pkgrel=1 +pkgdesc="Inheritable, overridable class data " +arch=('i686' 'x86_64') +url="http://search.cpan.org/~TMTM/Class-Data-Inheritable" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/T/TM/TMTM/Class-Data-Inheritable-$pkgver.tar.gz) +md5sums=('fc0fe65926eb8fb932743559feb54eb9') + +build() { + cd $startdir/src/Class-Data-Inheritable-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-class-singleton/PKGBUILD b/abs/core/perl_modules/perl-class-singleton/PKGBUILD new file mode 100644 index 0000000..60f71b9 --- /dev/null +++ b/abs/core/perl_modules/perl-class-singleton/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-class-singleton +pkgver=1.4 +pkgrel=2 +pkgdesc="Implementation of a "Singleton" class" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~ABW/Class-Singleton" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/A/AB/ABW/Class-Singleton-$pkgver.tar.gz) +md5sums=('a18b108ab97e2107cbbe816d2b3e2ee3') + +build() { + cd $startdir/src/Class-Singleton-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-compress-raw-zlib/PKGBUILD b/abs/core/perl_modules/perl-compress-raw-zlib/PKGBUILD new file mode 100644 index 0000000..93782f3 --- /dev/null +++ b/abs/core/perl_modules/perl-compress-raw-zlib/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-compress-raw-zlib +_realname=Compress-Raw-Zlib +pkgver=2.015 +pkgrel=1 +pkgdesc="Compress::Raw::Zlib - Low-Level Interface to zlib compression library" +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/P/PM/PMQS/${_realname}-${pkgver}.tar.gz) +md5sums=('6680d7ee3fbfd5171ccf239328c284fd') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-compress-zlib/PKGBUILD b/abs/core/perl_modules/perl-compress-zlib/PKGBUILD new file mode 100644 index 0000000..5fb55a7 --- /dev/null +++ b/abs/core/perl_modules/perl-compress-zlib/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-compress-zlib +_realname=Compress-Zlib +pkgver=2.015 +pkgrel=1 +pkgdesc="The Compress::Zlib module provides a Perl interface to the zlib compression library." +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/P/PM/PMQS/${_realname}-${pkgver}.tar.gz) +md5sums=('689ba2cc399b019d0bf76a0575c32947') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-config-simple/PKGBUILD b/abs/core/perl_modules/perl-config-simple/PKGBUILD new file mode 100644 index 0000000..a566dbc --- /dev/null +++ b/abs/core/perl_modules/perl-config-simple/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson =5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/S/SH/SHERZODR/${_realname}-${pkgver}.tar.gz) +md5sums=('96513b61c7db591339ce2577878a3b32') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-data-dumper/PKGBUILD b/abs/core/perl_modules/perl-data-dumper/PKGBUILD new file mode 100644 index 0000000..6b48a24 --- /dev/null +++ b/abs/core/perl_modules/perl-data-dumper/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-data-dumper +_realname=Data-Dumper +pkgver=2.121 +pkgrel=1 +pkgdesc="Data::Dumper - stringified perl data structures, suitable for both printing and eval." +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/I/IL/ILYAM/${_realname}-${pkgver}.tar.gz) +md5sums=('10d6ff7a85fa3e5f91fcb2e6593cfd1b') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-datetime-format-mail/PKGBUILD b/abs/core/perl_modules/perl-datetime-format-mail/PKGBUILD new file mode 100644 index 0000000..b4b6c6f --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-format-mail/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-datetime-format-mail +pkgver=0.3001 +pkgrel=3 +pkgdesc="Convert between DateTime and RFC2822/822 formats " +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/DateTime-Format-Mail" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0' 'perl-datetime' 'perl-params-validate>=0.67') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/DateTime-Format-Mail-$pkgver.tar.gz) +md5sums=('15e36249e866463bd0237262a8e43b16') + +build() { + cd $startdir/src/DateTime-Format-Mail-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-datetime-format-strptime/ChangeLog b/abs/core/perl_modules/perl-datetime-format-strptime/ChangeLog new file mode 100644 index 0000000..46b7684 --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-format-strptime/ChangeLog @@ -0,0 +1,7 @@ +2009-02-27 Gerardo Exequiel Pozzi + + * 1.0900-1 : + Adopted the PKGBUILD + Modified the PKGBUILD to match new PKGBUILD-perl.proto + Added missing dep perl-datetime + Added a ChangeLog diff --git a/abs/core/perl_modules/perl-datetime-format-strptime/PKGBUILD b/abs/core/perl_modules/perl-datetime-format-strptime/PKGBUILD new file mode 100644 index 0000000..5f2d8de --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-format-strptime/PKGBUILD @@ -0,0 +1,28 @@ +# Contributor: Gerardo Exequiel Pozzi +# Contributor: Francois Charette + +pkgname=perl-datetime-format-strptime +_pkgname=DateTime-Format-Strptime +pkgver=1.0900 +pkgrel=1 +pkgdesc="DateTime::Format::Strptime - Parse and format strp and strf time patterns" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~RICKM/${_pkgname}" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0' 'perl-datetime') +options=(!emptydirs) + +source=(http://www.cpan.org/authors/id/R/RI/RICKM/${_pkgname}-$pkgver.tgz) +md5sums=('f84e3e11b2948ca0fc2848b9c123e473') + +build() { + cd $srcdir/${_pkgname}-$pkgver + + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + + make || return 1 + make install DESTDIR=$pkgdir || return 1 + + find $pkgdir -name perllocal.pod -delete + find $pkgdir -name .packlist -delete +} diff --git a/abs/core/perl_modules/perl-datetime-format-w3cdtf/PKGBUILD b/abs/core/perl_modules/perl-datetime-format-w3cdtf/PKGBUILD new file mode 100644 index 0000000..80a5f9b --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-format-w3cdtf/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-datetime-format-w3cdtf +pkgver=0.04 +pkgrel=3 +pkgdesc="Parse and format W3CDTF datetime strings" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~KELLAN/DateTime-Format-W3CDTF" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0' 'perl-datetime') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/K/KE/KELLAN/DateTime-Format-W3CDTF-$pkgver.tar.gz) +md5sums=('5ad0a41bb5de08f9c16395ea311bb491') + +build() { + cd $startdir/src/DateTime-Format-W3CDTF-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-datetime-locale/PKGBUILD b/abs/core/perl_modules/perl-datetime-locale/PKGBUILD new file mode 100644 index 0000000..c775d0d --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-locale/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-datetime-locale +pkgver=0.42 +pkgrel=1 +pkgdesc="Localization support for DateTime.pm " +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/DateTime-Locale" +license=('GPL' 'PerlArtistic') +depends=('perl-params-validate' 'perl-list-moreutils') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/DateTime-Locale-$pkgver.tar.gz) + +build() { + cd $startdir/src/DateTime-Locale-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} +md5sums=('2f40350ef1c697f1bc402220824f6a7a') diff --git a/abs/core/perl_modules/perl-datetime-timezone/ChangeLog b/abs/core/perl_modules/perl-datetime-timezone/ChangeLog new file mode 100644 index 0000000..09886fd --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-timezone/ChangeLog @@ -0,0 +1,5 @@ + +2008-01-05 Douglas Soares de Andrade + + * Updated for x86_64 + diff --git a/abs/core/perl_modules/perl-datetime-timezone/PKGBUILD b/abs/core/perl_modules/perl-datetime-timezone/PKGBUILD new file mode 100644 index 0000000..65c7e9d --- /dev/null +++ b/abs/core/perl_modules/perl-datetime-timezone/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-datetime-timezone +pkgver=0.84 +pkgrel=1 +pkgdesc="Time zone object base class and factory " +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/DateTime-TimeZone" +license=('GPL' 'PerlArtistic') +depends=('perl-class-singleton>=1.03' 'perl-params-validate>=0.72') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/DateTime-TimeZone-$pkgver.tar.gz) + +build() { + cd $startdir/src/DateTime-TimeZone-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} +md5sums=('e6f36fa00425d64377aeae74a7da0ac3') diff --git a/abs/core/perl_modules/perl-datetime/PKGBUILD b/abs/core/perl_modules/perl-datetime/PKGBUILD new file mode 100644 index 0000000..0e6fbaa --- /dev/null +++ b/abs/core/perl_modules/perl-datetime/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-datetime +pkgver=0.47 +pkgrel=1 +pkgdesc="A complete, easy to use date and time object" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/DateTime" +license=('GPL' 'PerlArtistic') +depends=('perl-datetime-timezone>=0.59' 'perl-datetime-locale>=0.41' 'perl-params-validate>=0.76') +options=('!emptydirs' 'force') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/DateTime-$pkgver.tar.gz) +md5sums=('9d2ee69f93f18f7e5477578df6e56526') + +build() { + cd $startdir/src/DateTime-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-devel-stacktrace/PKGBUILD b/abs/core/perl_modules/perl-devel-stacktrace/PKGBUILD new file mode 100644 index 0000000..72c89c7 --- /dev/null +++ b/abs/core/perl_modules/perl-devel-stacktrace/PKGBUILD @@ -0,0 +1,28 @@ +pkgname=perl-devel-stacktrace +_realname=Devel-StackTrace +pkgver=1.1902 +pkgrel=2 +pkgdesc="Perl devel stracktrace" +arch=(i686 x86_64) +license=('custom:BSD') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perl>=5.10.0' 'openssl') +options=(!emptydirs) +replaces=('net-ssleay') +provides=('net-ssleay') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/${_realname}-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + PERL_MM_USE_DEFAULT=1 perl Makefile.PL -- INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete + + install -D -m644 README ${startdir}/pkg/usr/share/licenses/${pkgname}/README +} +# vim: ts=2 sw=2 et ft=sh diff --git a/abs/core/perl_modules/perl-device-serialport/PKGBUILD b/abs/core/perl_modules/perl-device-serialport/PKGBUILD new file mode 100644 index 0000000..d1341c8 --- /dev/null +++ b/abs/core/perl_modules/perl-device-serialport/PKGBUILD @@ -0,0 +1,29 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: Ross melin + +# Required by zoneminder + +pkgname=perl-device-serialport +pkgver=1.04 +pkgrel=2 +pkgdesc="POSIX clone of Win32::SerialPort" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~COOK/Device-SerialPort" +license=('GPL' 'PerlArtistic') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/C/CO/COOK/Device-SerialPort-$pkgver.tar.gz) +md5sums=('82c698151f934eb28c65d1838cee7d9e') + +build() { + cd $startdir/src/Device-SerialPort-$pkgver + eval `perl -V:archname` + PERL_MM_USE_DEFAULT=1 /usr/bin/perl Makefile.PL \ + INSTALLDIRS=vendor || return 1 + + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -delete + /usr/bin/find $startdir/pkg -name '*.pod' -delete +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/perl_modules/perl-digest-sha1/PKGBUILD b/abs/core/perl_modules/perl-digest-sha1/PKGBUILD new file mode 100644 index 0000000..7bf6976 --- /dev/null +++ b/abs/core/perl_modules/perl-digest-sha1/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Kevin Piche +# Contributor: Manolis Tzanidakis + +pkgname=perl-digest-sha1 +_realname=Digest-SHA1 +pkgver=2.11 +pkgrel=4 +pkgdesc="Perl Module: Interface to the SHA-1 Algorithm." +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perl>=5.10.0') +options=(!emptydirs) +source=(http://www.cpan.org/authors/id/G/GA/GAAS/${_realname}-${pkgver}.tar.gz) +replaces=('digest-sha1') +provides=('digest-sha1') +md5sums=('2449bfe21d6589c96eebf94dae24df6b') +groups=('shepherd-dep') +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} +# vim: ts=2 sw=2 et ft=sh diff --git a/abs/core/perl_modules/perl-error/PKGBUILD b/abs/core/perl_modules/perl-error/PKGBUILD new file mode 100644 index 0000000..c804210 --- /dev/null +++ b/abs/core/perl_modules/perl-error/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Dale Blount +# Contributor: Dale Blount + +pkgname=perl-error +_realname=Error +pkgver=0.17015 +pkgrel=1 +pkgdesc="Perl/CPAN Error module - Error/exception handling in an OO-ish way" +url="http://search.cpan.org/dist/${_realname}/" +arch=(i686 x86_64) +license=('PerlArtistic' 'GPL') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/${_realname}-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} diff --git a/abs/core/perl_modules/perl-exception-class/PKGBUILD b/abs/core/perl_modules/perl-exception-class/PKGBUILD new file mode 100644 index 0000000..58e1138 --- /dev/null +++ b/abs/core/perl_modules/perl-exception-class/PKGBUILD @@ -0,0 +1,22 @@ +# Maintainer: François Charette + +pkgname=perl-exception-class +pkgver=1.24 +pkgrel=1 +pkgdesc="Declare exception class hierarchies" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/Exception-Class" +license=('GPL' 'PerlArtistic') +depends=('perl') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/Exception-Class-$pkgver.tar.gz) +md5sums=('b672b63f8e7f3652980f188c2d58840d') + +build() { + cd $startdir/src/Exception-Class-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-getopt-long/PKGBUILD b/abs/core/perl_modules/perl-getopt-long/PKGBUILD new file mode 100644 index 0000000..e167586 --- /dev/null +++ b/abs/core/perl_modules/perl-getopt-long/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-getopt-long +_realname=Getopt-Long +pkgver=2.37 +pkgrel=1 +pkgdesc="Getopt::Long - Extended processing of command line options" +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/J/JV/JV/${_realname}-${pkgver}.tar.gz) +md5sums=('7d7fdb7a5c07d720e93ff3b9ff34b06e') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-getopt-lucid/PKGBUILD b/abs/core/perl_modules/perl-getopt-lucid/PKGBUILD new file mode 100644 index 0000000..9905900 --- /dev/null +++ b/abs/core/perl_modules/perl-getopt-lucid/PKGBUILD @@ -0,0 +1,25 @@ +pkgname=perl-getopt-lucid +_realname=Getopt-Lucid +pkgver=0.17 +pkgrel=1 +pkgdesc="Perl/CPAN Getopt::Lucid - Clear, readable syntax for command line processing" +url="http://search.cpan.org/dist/${_realname}/" +arch=(i686 x86_64) +license=('PerlArtistic' 'GPL') +depends=('perl>=5.10.0') +options=('!emptydirs') +#http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Getopt-Lucid-0.17.tar.gz + +source=(http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/${_realname}-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} diff --git a/abs/core/perl_modules/perl-image-size/PKGBUILD b/abs/core/perl_modules/perl-image-size/PKGBUILD new file mode 100644 index 0000000..4b3d0d4 --- /dev/null +++ b/abs/core/perl_modules/perl-image-size/PKGBUILD @@ -0,0 +1,24 @@ +# This PKGBUILD was autocreated. See http://xtermin.us/archperl/ for details +# Maintainer: Charles Mauch +pkgname=perl-image-size +pkgver=3.1 +pkgrel=2 +pkgdesc="Perl/CPAN Module XML::Parser : Flexible fast parser with plugin styles" +arch=("i686" "x86_64") +url="http://search.cpan.org/MSERGEANT/XML-Parser" +license=("GPL" "Artistic") +source=("http://search.cpan.org/CPAN/authors/id/R/RJ/RJRAY/Image-Size-3.1.tar.gz") + +build() { + cd $startdir/src/Image-Size-3.1 + eval `perl -V:archname` + /usr/bin/perl Makefile.PL \ + INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \ + INSTALLSITELIB=/usr/lib/perl5/site_perl/current \ + INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname} || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -exec rm '{}' \; && \ + /usr/bin/find $startdir/pkg -name 'perllocal.pod' -exec rm '{}' \; && \ + /usr/bin/find $startdir/pkg -depth -type d -empty -exec rmdir '{}' \; +} diff --git a/abs/core/perl_modules/perl-io-compress-zlib/PKGBUILD b/abs/core/perl_modules/perl-io-compress-zlib/PKGBUILD new file mode 100644 index 0000000..9adde18 --- /dev/null +++ b/abs/core/perl_modules/perl-io-compress-zlib/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-io-compress-zlib +_realname=IO-Compress-Zlib +pkgver=2.015 +pkgrel=1 +pkgdesc="This module provides a Perl interface to allow reading and writing of RFC 1950, 1951, 1952 (i.e. gzip) and zip files/buffers." +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/P/PM/PMQS/${_realname}-${pkgver}.tar.gz) +md5sums=('22f3b677a6f1782713c8451966598d3f') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-javascript/PKGBUILD b/abs/core/perl_modules/perl-javascript/PKGBUILD new file mode 100644 index 0000000..564e2d9 --- /dev/null +++ b/abs/core/perl_modules/perl-javascript/PKGBUILD @@ -0,0 +1,23 @@ +pkgname=perl-javascript +_realname=JavaScript +pkgver=1.12 +pkgrel=2 +pkgdesc="get name of current working directory" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~KWILLIAMS/Path-Class" + +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0' spidermonkey) +options=('!emptydirs') +source=(http://search.cpan.org/CPAN/authors/id/C/CL/CLAESJAC/JavaScript-$pkgver.tar.gz) +#source=(http://search.cpan.org/CPAN/authors/id/T/TB/TBUSCH/JavaScript-SpiderMonkey-0.19.tar.gz) +groups=('shepherd-dep') +build() { + cd $startdir/src/$_realname-$pkgver + JS_INC=/usr/include/js PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} + diff --git a/abs/core/perl_modules/perl-libxml/PKGBUILD b/abs/core/perl_modules/perl-libxml/PKGBUILD new file mode 100644 index 0000000..864c01b --- /dev/null +++ b/abs/core/perl_modules/perl-libxml/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD,v 1.5 2007/11/12 23:00:43 firmicus Exp $ +# Maintainer: Sergej Pupykin +# Contributor: phrakture +# Contributor: Firmicus + +pkgname=perl-libxml +pkgver=1.65 +pkgrel=1 +pkgdesc="Perl bindings for libxml2" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~pajas/XML-LibXML/" +license=('GPL' 'PerlArtistic') +depends=('perl-libxml-common' 'perl-xml-sax' 'libxml2') +options=('!emptydirs') +install=perl-libxml.install +source=(http://search.cpan.org/CPAN/authors/id/P/PA/PAJAS/XML-LibXML-$pkgver.tar.gz) +md5sums=('7871c21078f706690cda9ca68d4ddac6') + +build() +{ + cd $startdir/src/XML-LibXML-$pkgver/ + eval `perl -V:archname` + SKIP_SAX_INSTALL=y perl Makefile.PL \ + INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \ + INSTALLSITELIB=/usr/lib/perl5/site_perl/current \ + INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname} || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-libxml/perl-libxml.install b/abs/core/perl_modules/perl-libxml/perl-libxml.install new file mode 100644 index 0000000..a7616f2 --- /dev/null +++ b/abs/core/perl_modules/perl-libxml/perl-libxml.install @@ -0,0 +1,29 @@ +pre_install() { + /bin/true +} + +post_install() { + echo ":: Installing SAX XML Parsers" + /usr/bin/perl -MXML::SAX -e "XML::SAX->add_parser(q(XML::LibXML::SAX::Parser))->save_parsers()" + /usr/bin/perl -MXML::SAX -e "XML::SAX->add_parser(q(XML::LibXML::SAX))->save_parsers()" +} + +pre_upgrade() { + /bin/true +} + +post_upgrade() { + /bin/true +} + +pre_remove() { + /bin/true +} + +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/perl_modules/perl-list-compare/PKGBUILD b/abs/core/perl_modules/perl-list-compare/PKGBUILD new file mode 100644 index 0000000..7480b98 --- /dev/null +++ b/abs/core/perl_modules/perl-list-compare/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-list-compare +_realname=List-Compare +pkgver=0.37 +pkgrel=2 +pkgdesc="List::Compare - Compare elements of two or more lists" +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +groups=('shepherd-dep') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/J/JK/JKEENAN/${_realname}-${pkgver}.tar.gz) +md5sums=('7c730dd58cc31a5bbb8eb7006edd1704') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-list-member/PKGBUILD b/abs/core/perl_modules/perl-list-member/PKGBUILD new file mode 100644 index 0000000..d944a68 --- /dev/null +++ b/abs/core/perl_modules/perl-list-member/PKGBUILD @@ -0,0 +1,24 @@ +pkgname=perl-list-member +_realname=List-Member +pkgver=0.043 +pkgrel=1 +pkgdesc="Perl/CPAN List::Member - PROLOG's member/2: return index of $x in @y." +url="http://search.cpan.org/dist/${_realname}/" +arch=(i686 x86_64) +license=('PerlArtistic' 'GPL') +depends=('perl>=5.10.0') +options=('!emptydirs') +#http://search.cpan.org/CPAN/authors/id/L/LG/LGODDARD/List-Member-0.043.tar.gz +source=(http://search.cpan.org/CPAN/authors/id/L/LG/LGODDARD/${_realname}-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} diff --git a/abs/core/perl_modules/perl-list-moreutils/PKGBUILD b/abs/core/perl_modules/perl-list-moreutils/PKGBUILD new file mode 100644 index 0000000..a7d80bb --- /dev/null +++ b/abs/core/perl_modules/perl-list-moreutils/PKGBUILD @@ -0,0 +1,22 @@ +# Maintainer: François Charette + +pkgname=perl-list-moreutils +pkgver=0.22 +pkgrel=1 +pkgdesc="Provide the stuff missing in List::Util" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~VPARSEVAL/List-MoreUtils" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/V/VP/VPARSEVAL/List-MoreUtils-$pkgver.tar.gz) +md5sums=('3a6ec506f40662ab1296c48c5eb72016') + +build() { + cd $startdir/src/List-MoreUtils-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-locale-gettext/PKGBUILD b/abs/core/perl_modules/perl-locale-gettext/PKGBUILD new file mode 100644 index 0000000..22efcb7 --- /dev/null +++ b/abs/core/perl_modules/perl-locale-gettext/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Contributor: Mark Rosenstand +# Maintainer: Paul Mattal + +pkgname=perl-locale-gettext +_realname=gettext +pkgver=1.05 +pkgrel=3 +pkgdesc="Permits access from Perl to the gettext() family of functions." +arch=(i686 x86_64) +license=('GPL' 'PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('gettext' 'perl>=5.10.0') +options=(!emptydirs) +source=(http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/${_realname}-${pkgver}.tar.gz) +md5sums=('f3d3f474a1458f37174c410dfef61a46') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} || return 1 + # install module in vendor directories. + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make MAN1EXT=1p MAN3EXT=3pm || return 1 + make install MAN1EXT=1p MAN3EXT=3pm DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} diff --git a/abs/core/perl_modules/perl-log-dispatch/PKGBUILD b/abs/core/perl_modules/perl-log-dispatch/PKGBUILD new file mode 100644 index 0000000..db4300b --- /dev/null +++ b/abs/core/perl_modules/perl-log-dispatch/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: xduugu + +pkgname=perl-log-dispatch +pkgver=2.21 +pkgrel=1 +pkgdesc="Log messages to multiple outputs" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/Log-Dispatch" +license=('GPL' 'PerlArtistic') +depends=('perl-params-validate>=0.15') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/Log-Dispatch-$pkgver.tar.gz) +md5sums=('a9aeb68cbf45f99ab63985719f112ee7') + +build() { + cd $startdir/src/Log-Dispatch-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-log-log4perl/PKGBUILD b/abs/core/perl_modules/perl-log-log4perl/PKGBUILD new file mode 100644 index 0000000..73d125d --- /dev/null +++ b/abs/core/perl_modules/perl-log-log4perl/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-log-log4perl +pkgver=1.18 +pkgrel=1 +pkgdesc="Log4j implementation in Perl" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~MSCHILLI/Log-Log4perl" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/M/MS/MSCHILLI/Log-Log4perl-$pkgver.tar.gz) +md5sums=('9513b615f516827a26bdbcc0d868634f') + +build() { + cd $startdir/src/Log-Log4perl-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-mime-parser/PKGBUILD b/abs/core/perl_modules/perl-mime-parser/PKGBUILD new file mode 100644 index 0000000..c8adc5d --- /dev/null +++ b/abs/core/perl_modules/perl-mime-parser/PKGBUILD @@ -0,0 +1,25 @@ +pkgname=perl-mime-parser +pkgver=5.420 +pkgrel=2 +pkgdesc="Perl/CPAN Module MIME::Parser : Parses streams to create MIME entities" +arch=("i686" "x86_64") +url="http://search.cpan.org/DSKOLL/MIME-tools" +license=("GPL" "Artistic") +source=("http://www.cpan.org/authors/id/D/DS/DSKOLL/MIME-tools-5.420.tar.gz") +md5sums=("4db6505cc0132c80c5a9cc54f443a21a") +makedepends=("perl-io-stringy" "perl-mailtools" ) +#depends=("perl-io-stringy" "perl-mail-field" "perl-mail-header" "perl-mail-internet") +depends=("perl-io-stringy" "perl-mailtools" ) +build() { + cd $startdir/src/MIME-tools-5.420 + eval `perl -V:archname` + /usr/bin/perl Makefile.PL \ + INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \ + INSTALLSITELIB=/usr/lib/perl5/site_perl/current \ + INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname} || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -exec rm '{}' \; && \ + /usr/bin/find $startdir/pkg -name 'perllocal.pod' -exec rm '{}' \; && \ + /usr/bin/find $startdir/pkg -depth -type d -empty -exec rmdir '{}' \; +} diff --git a/abs/core/perl_modules/perl-net-upnp/PKGBUILD b/abs/core/perl_modules/perl-net-upnp/PKGBUILD new file mode 100755 index 0000000..26db326 --- /dev/null +++ b/abs/core/perl_modules/perl-net-upnp/PKGBUILD @@ -0,0 +1,23 @@ +pkgname=perl-net-upnp +pkgver=1.4.1 +pkgrel=1 +pkgdesc="Net::UPnP::AV::MediaServer - Perl extension for UPnP." +arch=(i686 x86_64) +url="http://search.cpan.org/~sbeck/DateManip-$pkgver/" +depends=('perl') +source=(http://search.cpan.org/CPAN/authors/id/S/SB/SBECK/DateManip-$pkgver.tar.gz) +source=http://search.cpan.org/CPAN/authors/id/S/SK/SKONNO/Net-UPnP-1.4.1.tar.gz +build() { + cd $startdir/src/Net-UPnP-$pkgver + # Force module installation to "current" perl directories. + /usr/bin/perl Makefile.PL \ + INSTALLARCHLIB=/usr/lib/perl5/current/${CARCH}-linux-thread-multi \ + INSTALLSITELIB=/usr/lib/perl5/site_perl/current \ + INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${CARCH}-linux-thread-multi + make || return 1 + make DESTDIR=$startdir/pkg install + + # remove perllocal.pod, .packlist, and empty dirs. + /bin/rm -rf $startdir/pkg/usr/lib/perl5/current + /bin/rm -rf $startdir/pkg/usr/lib/perl5/site_perl/current/${CARCH}-linux-thread-multi +} diff --git a/abs/core/perl_modules/perl-net-upnp/perl-config-simple/PKGBUILD b/abs/core/perl_modules/perl-net-upnp/perl-config-simple/PKGBUILD new file mode 100644 index 0000000..a566dbc --- /dev/null +++ b/abs/core/perl_modules/perl-net-upnp/perl-config-simple/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson =5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/S/SH/SHERZODR/${_realname}-${pkgver}.tar.gz) +md5sums=('96513b61c7db591339ce2577878a3b32') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-params-validate/PKGBUILD b/abs/core/perl_modules/perl-params-validate/PKGBUILD new file mode 100644 index 0000000..f65387f --- /dev/null +++ b/abs/core/perl_modules/perl-params-validate/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-params-validate +pkgver=0.91 +pkgrel=1 +pkgdesc="Validate sub params against a spec" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~DROLSKY/Params-Validate" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/D/DR/DROLSKY/Params-Validate-$pkgver.tar.gz) +md5sums=('22c5467a1d4673374a1b7b2dbcfd473e') + +build() { + cd $startdir/src/Params-Validate-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-pathtools/PKGBUILD b/abs/core/perl_modules/perl-pathtools/PKGBUILD new file mode 100644 index 0000000..db11a6f --- /dev/null +++ b/abs/core/perl_modules/perl-pathtools/PKGBUILD @@ -0,0 +1,22 @@ + +pkgname=perl-pathtools +pkgver=3.29 +pkgrel=2 +pkgdesc="get name of current working directory" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~KWILLIAMS/Path-Class" + +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://search.cpan.org/CPAN/authors/id/S/SM/SMUELLER/PathTools-$pkgver.tar.gz) +groups=('shepherd-dep') +build() { + cd $startdir/src/PathTools-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} + diff --git a/abs/core/perl_modules/perl-pathtools/license.txt b/abs/core/perl_modules/perl-pathtools/license.txt new file mode 100644 index 0000000..508353d --- /dev/null +++ b/abs/core/perl_modules/perl-pathtools/license.txt @@ -0,0 +1,6 @@ +"THE BEER-WARE LICENSE" (Revision 42): + wrote this file. As long as you retain this +notice you can do whatever you want with this stuff. If we meet some +day, and you think this stuff is worth it, you can buy me a beer in +return. Poul-Henning Kamp + diff --git a/abs/core/perl_modules/perl-php-serialization/PKGBUILD b/abs/core/perl_modules/perl-php-serialization/PKGBUILD new file mode 100644 index 0000000..428ee8e --- /dev/null +++ b/abs/core/perl_modules/perl-php-serialization/PKGBUILD @@ -0,0 +1,30 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: Ross melin + +# Required by zoneminder + +pkgname=perl-php-serialization +pkgver=0.27 +pkgrel=2 +pkgdesc="PHP::Serialization" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~php-serialization/PHP-Serialization" +license=('GPL' 'PerlArtistic') +depends=('perl') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/J/JB/JBROWN/php-serialization/PHP-Serialization-$pkgver.tar.gz) +md5sums=('2fb3f63071c5c2119b4eebe39b329684') + +build() { + cd $startdir/src/PHP-Serialization-$pkgver + eval `perl -V:archname` + PERL_MM_USE_DEFAULT=1 /usr/bin/perl Makefile.PL \ + INSTALLDIRS=vendor || return 1 + + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -delete + /usr/bin/find $startdir/pkg -name '*.pod' -delete +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/perl_modules/perl-proc-daemon/PKGBUILD b/abs/core/perl_modules/perl-proc-daemon/PKGBUILD new file mode 100644 index 0000000..f5df566 --- /dev/null +++ b/abs/core/perl_modules/perl-proc-daemon/PKGBUILD @@ -0,0 +1,23 @@ +# Contributor: xduugu + +pkgname=perl-proc-daemon +pkgver=0.03 +pkgrel=1 +pkgdesc="run Perl program as a daemon process" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~EHOOD/Proc-Daemon" +license=('GPL' 'PerlArtistic') +depends=('perl') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/E/EH/EHOOD/Proc-Daemon-$pkgver.tar.gz) +md5sums=('6e1b83ac0f0add22f63597733f38c973') +sha1sums=('25df5ee454527772ff95bc44980101a6766edb8a') + +build() { + cd "$srcdir/Proc-Daemon-$pkgver" + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR="$pkgdir/" || return 1 + find "$pkgdir" -name '.packlist' -delete + find "$pkgdir" -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-proc-pid-file/PKGBUILD b/abs/core/perl_modules/perl-proc-pid-file/PKGBUILD new file mode 100644 index 0000000..ad69d71 --- /dev/null +++ b/abs/core/perl_modules/perl-proc-pid-file/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Cecil H. Watson + +pkgname=perl-proc-pid-file +_realname=Proc-PID-File +pkgver=1.24 +pkgrel=1 +pkgdesc="Proc::PID::File a module to manage process idfiles" +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perlxml' 'perl>=5.10.0') +options=('!emptydirs') +source=(ftp://ftp.cpan.org/pub/CPAN/authors/id/E/EC/ECALDER/${_realname}-${pkgver}.tar.gz) +md5sums=('90b636492ae72def975a9ef9cac90fda') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + find ${startdir}/pkg -name '.packlist' -delete + find ${startdir}/pkg -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-test-pod/PKGBUILD b/abs/core/perl_modules/perl-test-pod/PKGBUILD new file mode 100644 index 0000000..a901b02 --- /dev/null +++ b/abs/core/perl_modules/perl-test-pod/PKGBUILD @@ -0,0 +1,25 @@ +# +# Contributor: Oliver Charles +# + +pkgname="perl-test-pod" +pkgver=1.26 +pkgrel=1 +pkgdesc="Translate Wiki formatted text to other formats" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~petdance/Test-Pod" +license="unknown" +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/P/PE/PETDANCE/Test-Pod-$pkgver.tar.gz) +md5sums=('2f259135656ac4549b65a4f14f07b7c6') + +build() { + cd $startdir/src/Test-Pod-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make DESTDIR="$pkgdir/" install || return 1 + + find "$pkgdir" -name '.packlist' -delete + find "$pkgdir" -name 'perllocal.pod' -delete +} diff --git a/abs/core/perl_modules/perl-text-kakasi/PKGBUILD b/abs/core/perl_modules/perl-text-kakasi/PKGBUILD index 19499af..1954f8a 100644 --- a/abs/core/perl_modules/perl-text-kakasi/PKGBUILD +++ b/abs/core/perl_modules/perl-text-kakasi/PKGBUILD @@ -3,12 +3,12 @@ pkgname=perl-text-kakasi pkgver=2.04 -pkgrel=3 +pkgrel=4 pkgdesc="Perl frontend to kakasi" arch=('i686' 'x86_64') url="http://search.cpan.org/~DANKOGAI/Text-Kakasi" license=('GPL' 'PerlArtistic') -depends=('perl>=5.10.0''kakasi') +depends=('perl>=5.10.0' 'kakasi') options=('!emptydirs') source=(http://www.cpan.org/authors/id/D/DA/DANKOGAI/Text-Kakasi-$pkgver.tar.gz) md5sums=('5a9e381cb93edfd707124a63c60f96b1') diff --git a/abs/core/perl_modules/perl-time-format/PKGBUILD b/abs/core/perl_modules/perl-time-format/PKGBUILD new file mode 100644 index 0000000..40a2ae2 --- /dev/null +++ b/abs/core/perl_modules/perl-time-format/PKGBUILD @@ -0,0 +1,21 @@ +# This PKGBUILD was autocreated. See http://xtermin.us/archperl/ for details +# Maintainer: Charles Mauch + +pkgname=perl-time-format +pkgver=1.09 +pkgrel=1 +pkgdesc="Perl/CPAN Module Time::Format : Easytouse datetime formatting" +arch=("i686" "x86_64") +url="http://search.cpan.org/dist/Time-Format" +license=("GPL" "Artistic") +source=("http://www.cpan.org/authors/id/R/RO/ROODE/Time-Format-$pkgver.tar.gz") + +build() { + cd $startdir/src/Time-Format-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} +md5sums=('c0edfd94d8f4cb814dee7bdf7e9ed61f') diff --git a/abs/core/perl_modules/perl-time-modules/PKGBUILD b/abs/core/perl_modules/perl-time-modules/PKGBUILD new file mode 100644 index 0000000..6911ebc --- /dev/null +++ b/abs/core/perl_modules/perl-time-modules/PKGBUILD @@ -0,0 +1,25 @@ +# Contributor: Your Name +pkgname=perl-time-modules +pkgver=2006.0814 +pkgrel=1 +pkgdesc="Parses Date strings" +url="http://search.cpan.org/~muir/Time-modules-$pkgver/" +depends=(perl) +license="GPL" +options=('!emptydirs') +arch=('i686') +source=(http://search.cpan.org/CPAN/authors/id/M/MU/MUIR/modules/Time-modules-$pkgver.tar.gz) +md5sums=('790c6739f601b85654fac9ee516b18d8') + +build() { + cd $startdir/src/Time-modules-$pkgver + eval `perl -V:archname` + /usr/bin/perl Makefile.PL \ + INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \ + INSTALLSITELIB=/usr/lib/perl5/site_perl/current \ + INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname} + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install + /usr/bin/find $startdir/pkg -name '.packlist' -exec rm '{}' \; + /usr/bin/find $startdir/pkg -name '*.pod' -exec rm '{}' \; +} diff --git a/abs/core/perl_modules/perl-tk/PKGBUILD b/abs/core/perl_modules/perl-tk/PKGBUILD index 7a16357..7aa281d 100644 --- a/abs/core/perl_modules/perl-tk/PKGBUILD +++ b/abs/core/perl_modules/perl-tk/PKGBUILD @@ -6,7 +6,7 @@ pkgname=perl-tk _realname=Tk #stable pkgver=804.027 pkgver=804.028 -pkgrel=1 +pkgrel=2 pkgdesc="This module/script allows perl to interface with tk" license=('PerlArtistic' 'GPL' 'custom') arch=(i686 x86_64) diff --git a/abs/core/perl_modules/perl-unicode-map/PKGBUILD b/abs/core/perl_modules/perl-unicode-map/PKGBUILD new file mode 100644 index 0000000..1d03e86 --- /dev/null +++ b/abs/core/perl_modules/perl-unicode-map/PKGBUILD @@ -0,0 +1,30 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: Ross melin + +# Required by zoneminder + +pkgname=perl-unicode-map +pkgver=0.112 +pkgrel=2 +pkgdesc="Unicode::Map" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~MSCHWARTZ/Unicode-Map" +license=('GPL' 'PerlArtistic') +depends=('perl') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/M/MS/MSCHWARTZ/Unicode-Map-$pkgver.tar.gz) +md5sums=('edaa8fc5ddf0e5d805e274283dd0625d') + +build() { + cd $startdir/src/Unicode-Map-$pkgver + eval `perl -V:archname` + PERL_MM_USE_DEFAULT=1 /usr/bin/perl Makefile.PL \ + INSTALLDIRS=vendor || return 1 + + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -delete + /usr/bin/find $startdir/pkg -name '*.pod' -delete +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/perl_modules/perl-x10/PKGBUILD b/abs/core/perl_modules/perl-x10/PKGBUILD new file mode 100644 index 0000000..51283d5 --- /dev/null +++ b/abs/core/perl_modules/perl-x10/PKGBUILD @@ -0,0 +1,30 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: Ross melin + +# Required by zoneminder + +pkgname=perl-x10 +pkgver=0.03 +pkgrel=2 +pkgdesc="X10" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~ROBF/X10" +license=('GPL' 'PerlArtistic') +depends=('perl-astro-suntime>=0.01' 'perl-device-serialport' 'perl-time-modules') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/R/RO/ROBF/X10-$pkgver.tar.gz) +md5sums=('056b3d98fab545865148b948de6784c7') + +build() { + cd $startdir/src/X10-$pkgver + eval `perl -V:archname` + PERL_MM_USE_DEFAULT=1 /usr/bin/perl Makefile.PL \ + INSTALLDIRS=vendor || return 1 + + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -delete + /usr/bin/find $startdir/pkg -name '*.pod' -delete +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/perl_modules/perl-xml-libxml/PKGBUILD b/abs/core/perl_modules/perl-xml-libxml/PKGBUILD index 0ed0971..36a5c8c 100644 --- a/abs/core/perl_modules/perl-xml-libxml/PKGBUILD +++ b/abs/core/perl_modules/perl-xml-libxml/PKGBUILD @@ -1,26 +1,26 @@ -# Contributor: François Charette +# Maintainer: François Charette pkgname=perl-xml-libxml -pkgver=1.66 -pkgrel=3 +pkgver=1.69 +pkgrel=1 pkgdesc="Interface to the libxml library" arch=('i686' 'x86_64') url="http://search.cpan.org/~PAJAS/XML-LibXML" license=('GPL' 'PerlArtistic') -depends=('perl>=5.10.0' 'perl-xml-libxml-common>=0.13' 'perl-xml-sax>=0.11' 'perl-xml-namespacesupport>=1.07') +depends=('perl-xml-libxml-common>=0.13' 'perl-xml-sax>=0.11' 'perl-xml-namespacesupport>=1.07') provides=('perl-libxml') replaces=('perl-libxml') conflicts=('perl-libxml') install=('perl-xml-libxml.install') options=('!emptydirs') source=(http://www.cpan.org/authors/id/P/PA/PAJAS/XML-LibXML-$pkgver.tar.gz) -md5sums=('18e765429a4b22c8fb68b5273ead1e3c') +md5sums=('8295f4ae7b09729985dd1133e3ad0d0a') build() { - cd $startdir/src/XML-LibXML-$pkgver + cd $srcdir/XML-LibXML-$pkgver PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 make || return 1 - make pure_install doc_install DESTDIR=$startdir/pkg || return 1 - find $startdir/pkg -name '.packlist' -delete - find $startdir/pkg -name '*.pod' -delete + make pure_install doc_install DESTDIR=$pkgdir || return 1 + find $pkgdir -name '.packlist' -delete + find $pkgdir -name '*.pod' -delete } diff --git a/abs/core/perl_modules/perl-xml-libxslt/PKGBUILD b/abs/core/perl_modules/perl-xml-libxslt/PKGBUILD new file mode 100644 index 0000000..503e401 --- /dev/null +++ b/abs/core/perl_modules/perl-xml-libxslt/PKGBUILD @@ -0,0 +1,23 @@ +# Maintainer: François Charette + +pkgname=perl-xml-libxslt +pkgver=1.68 +pkgrel=1 +pkgdesc="Interface to the gnome libxslt library " +arch=('i686' 'x86_64') +url="http://search.cpan.org/~PAJAS/XML-LibXSLT" +license=('GPL' 'PerlArtistic') +depends=('perl-xml-libxml>=1.67' 'libxslt') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/P/PA/PAJAS/XML-LibXSLT-$pkgver.tar.gz) +md5sums=('23265ad14469b3eede5833f205198a6f') + +build() { + cd $srcdir/XML-LibXSLT-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$pkgdir || return 1 + find $pkgdir -name '.packlist' -delete + find $pkgdir -name '*.pod' -delete +} + diff --git a/abs/core/perl_modules/perl-xml-parser/PKGBUILD b/abs/core/perl_modules/perl-xml-parser/PKGBUILD new file mode 100644 index 0000000..c0fe960 --- /dev/null +++ b/abs/core/perl_modules/perl-xml-parser/PKGBUILD @@ -0,0 +1,24 @@ +# This PKGBUILD was autocreated. See http://xtermin.us/archperl/ for details +# Maintainer: Charles Mauch +pkgname=perl-xml-parser +pkgver=2.34 +pkgrel=2 +pkgdesc="Perl/CPAN Module XML::Parser : Flexible fast parser with plugin styles" +arch=("i686" "x86_64") +url="http://search.cpan.org/MSERGEANT/XML-Parser" +license=("GPL" "Artistic") +source=("http://www.cpan.org/authors/id/M/MS/MSERGEANT/XML-Parser-2.34.tar.gz") +md5sums=("84d9e0001fe01c14867256c3fe115899") +build() { + cd $startdir/src/XML-Parser-2.34 + eval `perl -V:archname` + /usr/bin/perl Makefile.PL \ + INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \ + INSTALLSITELIB=/usr/lib/perl5/site_perl/current \ + INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname} || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + /usr/bin/find $startdir/pkg -name '.packlist' -exec rm '{}' \; && \ + /usr/bin/find $startdir/pkg -name 'perllocal.pod' -exec rm '{}' \; && \ + /usr/bin/find $startdir/pkg -depth -type d -empty -exec rmdir '{}' \; +} diff --git a/abs/core/perl_modules/perl-xml-regexp/PKGBUILD b/abs/core/perl_modules/perl-xml-regexp/PKGBUILD new file mode 100644 index 0000000..e785a85 --- /dev/null +++ b/abs/core/perl_modules/perl-xml-regexp/PKGBUILD @@ -0,0 +1,23 @@ +# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman +# Contributor: François Charette + +pkgname=perl-xml-regexp +pkgver=0.03 +pkgrel=3 +pkgdesc="Regular expressions for XML tokens" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~TJMATHER/XML-RegExp" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=('!emptydirs') +source=(http://www.cpan.org/authors/id/T/TJ/TJMATHER/XML-RegExp-$pkgver.tar.gz) +md5sums=('5826b24e0d05714e25c2bb04e1f1c09b') + +build() { + cd $startdir/src/XML-RegExp-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} diff --git a/abs/core/perl_modules/perl-xml-rss/PKGBUILD b/abs/core/perl_modules/perl-xml-rss/PKGBUILD new file mode 100644 index 0000000..1d5a68d --- /dev/null +++ b/abs/core/perl_modules/perl-xml-rss/PKGBUILD @@ -0,0 +1,22 @@ +# Contributor: Francois Charette + +pkgname=perl-xml-rss +pkgver=1.43 +pkgrel=1 +pkgdesc="Parse or create Rich Site Summaries (RSS)" +arch=('i686' 'x86_64') +url="http://search.cpan.org/~ABH/XML-RSS" +license=('GPL' 'PerlArtistic') +depends=('perl-datetime' 'perl-datetime-format-mail' 'perl-datetime-format-w3cdtf' 'perl-html-parser' 'perlxml>=2.23') +options=('!emptydirs') +source=(http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-RSS-$pkgver.tar.gz) + +build() { + cd $startdir/src/XML-RSS-$pkgver + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 + find $startdir/pkg -name '.packlist' -delete + find $startdir/pkg -name '*.pod' -delete +} +md5sums=('dce2dd92ad4cfb34aa8e928a35b73648') diff --git a/abs/core/php/PKGBUILD b/abs/core/php/PKGBUILD index 68ece33..975716a 100644 --- a/abs/core/php/PKGBUILD +++ b/abs/core/php/PKGBUILD @@ -1,9 +1,6 @@ -# $Id: PKGBUILD 4664 2008-07-08 13:58:05Z allan $ -# Maintainer: Pierre Schmitz - pkgname=php pkgver=5.2.6 -pkgrel=4 +pkgrel=23 _suhosinver=0.9.6.2 pkgdesc='A high-level scripting language' arch=('i686' 'x86_64') @@ -12,10 +9,15 @@ url='http://www.php.net' backup=('etc/php/php.ini') install=php.install depends=('glibc' 'readline' 'ncurses' 'libxml2' 'pcre') -makedepends=('apache' 'imap' 'postgresql-libs' 'mysql' 'libldap' \ - 'libpng' 'libjpeg' 'sqlite3' 'unixodbc' 'net-snmp' \ - 'libmcrypt' 'tidyhtml' 'aspell' 'libtool' 'freetype2' 'libjpeg' \ +#makedepends=('apache' 'imap' 'postgresql-libs' 'mysql' 'libldap' \ +# 'libpng' 'libjpeg' 'sqlite3' 'unixodbc' 'net-snmp' \ +# 'libmcrypt' 'tidyhtml' 'aspell' 'libtool' 'freetype2' 'libjpeg' \ +# 'curl' 'libxslt' 'pam' 'openssl' 'bzip2' 'gdbm' 'db>=4.7') + +makedepends=('mysql' 'libpng' 'libjpeg' 'sqlite3' \ + 'libmcrypt' 'libtool' 'freetype2' 'libjpeg' \ 'curl' 'libxslt' 'pam' 'openssl' 'bzip2' 'gdbm' 'db>=4.7') + optdepends=('bzip2: bz2' \ 'curl: curl' \ 'gdbm: dba' \ @@ -37,12 +39,12 @@ optdepends=('bzip2: bz2' \ 'libxslt: xsl' \ ) options=('emptydirs') -source=("http://www.php.net/distributions/${pkgname}-${pkgver}.tar.bz2" \ +source=("http://museum.php.net/php5/${pkgname}-${pkgver}.tar.bz2" \ "http://download.suhosin.org/suhosin-patch-${pkgver}-${_suhosinver}.patch.gz" \ 'php.ini' 'apache.conf' 'db-configure.patch') md5sums=('7380ffecebd95c6edb317ef861229ebd' 'f2ec986341a314c271259dbe4d940858' - '0ee1dad48f7d67af3d2c78ca6eed68ba' + 'fda535c2b333297972aad48ee9285b45' '96ca078be6729b665be8a865535a97bf' '74e5ce5a02488ec91b1c59f539e42936') @@ -78,9 +80,9 @@ build() { --with-jpeg-dir=shared,/usr \ --with-png-dir=shared,/usr \ --with-gettext=shared \ - --with-imap=shared \ - --with-imap-ssl=shared \ - --with-ldap=shared \ + --without-imap \ + --without-imap-ssl \ + --without-ldap \ --enable-mbstring=shared \ --with-mcrypt=shared \ --with-mysql=shared \ @@ -88,22 +90,22 @@ build() { --with-mysql=shared \ --with-mysqli=shared \ --with-ncurses=shared \ - --with-unixODBC=shared,/usr \ + --without-unixODBC \ --enable-pdo=shared \ --with-pdo-mysql=shared \ --with-pdo-sqlite=shared \ - --with-pdo-odbc=shared,unixODBC,/usr \ - --with-pdo-pgsql=shared \ + --without-pdo-odbc \ + --without-pdo-pgsql \ --with-sqlite=shared \ - --with-pgsql=shared \ + --without-pgsql \ --enable-shmop=shared \ - --with-snmp=shared \ + --without-snmp \ --enable-soap=shared \ --enable-sqlite-utf8=shared \ --enable-sysvmsg=shared \ --enable-sysvsem=shared \ --enable-sysvshm=shared \ - --with-tidy=shared \ + --without-tidy \ --with-xsl=shared \ --enable-zip=shared \ --enable-posix=shared \ @@ -118,7 +120,7 @@ build() { --enable-json=shared \ --with-iconv=shared \ --with-xmlrpc=shared \ - --with-pspell=shared \ + --without-pspell \ --with-freetype-dir=shared,/usr \ --with-mime-magic=shared \ " @@ -164,11 +166,11 @@ build() { install -D -m755 sapi/cgi/php-cgi ${pkgdir}/usr/bin/php-cgi || return 1 # mod_php - ./configure ${phpconfig} \ - --with-apxs2 \ - --disable-cli \ - ${phpextensions} || return 1 - make || return 1 - install -D -m644 libs/libphp5.so ${pkgdir}/usr/lib/httpd/modules/libphp5.so || return 1 - install -D -m644 ${srcdir}/apache.conf ${pkgdir}/etc/httpd/conf/extra/php5_module.conf || return 1 +# ./configure ${phpconfig} \ +# --with-apxs2 \ +# --disable-cli \ +# ${phpextensions} || return 1 +# make || return 1 +# install -D -m644 libs/libphp5.so ${pkgdir}/usr/lib/httpd/modules/libphp5.so || return 1 +# install -D -m644 ${srcdir}/apache.conf ${pkgdir}/etc/httpd/conf/extra/php5_module.conf || return 1 } diff --git a/abs/core/php/__changelog b/abs/core/php/__changelog new file mode 100644 index 0000000..aac14ba --- /dev/null +++ b/abs/core/php/__changelog @@ -0,0 +1,6 @@ +modified php.ini +set base dir to /data/srv/httpd/htdocs +added /data/srv/tmp to basedir +added /usr/share/mythtv/mythweather/scripts/ +send errors to stderr +change .install file, timezone is modified on install diff --git a/abs/core/php/php.ini b/abs/core/php/php.ini index 7f78d4a..8cbcd56 100644 --- a/abs/core/php/php.ini +++ b/abs/core/php/php.ini @@ -127,7 +127,7 @@ zend.ze1_compatibility_mode = Off ; servers which are not under your control, because short tags may not ; be supported on the target server. For portable, redistributable code, ; be sure not to use short tags. -short_open_tag = Off +short_open_tag = On ; Allow ASP-style <% %> tags. asp_tags = Off @@ -249,7 +249,7 @@ safe_mode_protected_env_vars = LD_LIBRARY_PATH ; and below. This directive makes most sense if used in a per-directory ; or per-virtualhost web server configuration file. This directive is ; *NOT* affected by whether Safe Mode is turned On or Off. -open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/ +open_basedir = /data/srv/httpd/htdocs/:/home/:/tmp/:/usr/share/pear/:/data/srv/tmp:/usr/share/mythtv/mythweather/scripts/:/data/srv/httpd/htdocs/mythweb/data/video:/myth/ipodfeed:/data/srv/httpd/htdocs/archive:/etc ; This directive allows you to disable certain functions for security reasons. ; It receives a comma-delimited list of function names. This directive is @@ -302,7 +302,7 @@ expose_php = Off max_execution_time = 30 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data ;max_input_nesting_level = 64 ; Maximum input variable nesting level -memory_limit = 32M ; Maximum amount of memory a script may consume (32MB) +memory_limit = 64M ; Maximum amount of memory a script may consume (32MB) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -337,7 +337,7 @@ memory_limit = 32M ; Maximum amount of memory a script may consume (32MB) ; ; - Show all errors, except for notices and coding standards warnings ; -;error_reporting = E_ALL & ~E_NOTICE +error_reporting = E_ALL & ~E_NOTICE ; ; - Show all errors, except for notices ; @@ -364,11 +364,11 @@ error_reporting = E_ALL ; On or stdout - Display errors to STDOUT (default) ; ; To output errors to STDERR with CGI/CLI: -;display_errors = "stderr" +display_errors = "stderr" ; ; Default ; -display_errors = Off +;display_errors = on ; Even when display_errors is on, errors that occur during PHP's startup ; sequence are not displayed. It's strongly recommended to keep @@ -598,10 +598,10 @@ upload_max_filesize = 2M ;;;;;;;;;;;;;;;;;; ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. -allow_url_fopen = Off +allow_url_fopen = on ; Whether to allow include/require to open URLs (like http:// or ftp://) as files. -allow_url_include = Off +allow_url_include = on ; Define the anonymous ftp password (your email address) ;from="john@doe.com" @@ -1270,7 +1270,7 @@ extension=gettext.so ;extension=ldap.so ;extension=mcrypt.so ;extension=mime_magic.so -;extension=mysql.so +extension=mysql.so ;extension=mysqli.so ;extension=ncurses.so ;extension=odbc.so @@ -1281,7 +1281,7 @@ extension=gettext.so ;extension=pdo_pgsql.so ;extension=pdo_sqlite.so ;extension=pgsql.so -;extension=posix.so +extension=posix.so ;extension=pspell.so extension=session.so ;extension=shmop.so diff --git a/abs/core/php/php.install b/abs/core/php/php.install index 0c7e289..469db4a 100644 --- a/abs/core/php/php.install +++ b/abs/core/php/php.install @@ -1,44 +1,12 @@ post_install() { - echo ' - ==> PHP modules - - PHP has been built with optional modules. To enable these modules, - uncomment the modules from php.ini - - Some of them require extra packages to be installed: - - * bz2 : bzip2 - * curl : curl - * dba : gdbm - * gd : libpng, libjpeg, freetype2 - * imap : pam - * ldap : libldap - * mcrypt : mcrypt, libtool - * mysql/mysqli : libmysqlclient - * odbc/pdo_odbc : unixodbc - * openssl : openssl - * pgsql/pdo_pgsql : postgresql-libs - * pspell : aspell - * snmp : net-snmp - * sqlite : sqlite3 - * tidy : tidyhtml - * xsl : libxslt - - ==> PHP-CGI and FCGI - - There are several cgi relevant settings in your php.ini. Make sure to - adjust them according to your needs. At least you should activate the - cgi.fix_pathinfo directive in php.ini by uncommenting it. - - ==> PHP and Apache HTTPD - - To use mod_php with the Apache webserver, add this to your httpd.conf: - - LoadModule php5_module modules/libphp5.so - [..] - Include conf/extra/php5_module.conf - - ' + if [ -f /etc/systemconfig ] + then + . /etc/systemconfig + if [ -f /etc/php/php.ini ] + then + sed -i 's/^.*date.timezone.*$/date.timezone='${timezone}'/' /etc/php/php.ini + fi + fi } pre_upgrade() { @@ -67,8 +35,16 @@ post_upgrade() { echo 'Restoring old php.ini...' mv /etc/php/php.ini /etc/php/php.ini.pacnew mv /etc/php.ini.pacsave.tmp /etc/php/php.ini + if [ -f /etc/systemconfig ] + then + . /etc/systemconfig + if [ -f /etc/php/php.ini ] + then + sed -i 's/^.*date.timezone.*$/date.timezone='${timezone}'/' /etc/php/php.ini + fi + fi echo 'Updating extension dir...' - sed -i -e 's#extension_dir = "/usr/lib/php/extensions/php/"#extension_dir = "/usr/lib/php/20060613/"#g' /etc/php/php.ini + sed -i -e 's/#extension_dir = "/usr/lib/php/extensions/php/"/#extension_dir = "/usr/lib/php/20060613/"#g' /etc/php/php.ini echo ' ==> Location of php.ini has changed @@ -88,10 +64,10 @@ post_upgrade() { # can be removed later if [ $(vercmp '5.2.4-3' $2) -eq 0 ]; then echo 'Updating extension dir...' - sed -i -e 's#extension_dir = "/usr/lib/php/extensions/"#extension_dir = "/usr/lib/php/20060613/"#g' /etc/php/php.ini + sed -i -e 's/#extension_dir = "/usr/lib/php/extensions/"/#extension_dir = "/usr/lib/php/20060613/"#g' /etc/php/php.ini fi } op=$1 shift -[ "$(type -t "$op")" = "function" ] && $op "$@" \ No newline at end of file +[ "$(type -t "$op")" = "function" ] && $op "$@" diff --git a/abs/core/pil/PKGBUILD b/abs/core/pil/PKGBUILD index 59e9b83..6f01309 100644 --- a/abs/core/pil/PKGBUILD +++ b/abs/core/pil/PKGBUILD @@ -1,10 +1,12 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: simo +# $Id: PKGBUILD 16703 2008-10-22 02:31:25Z allan $ +# Maintainer: Allan McRae +# Contributor: simo + pkgname=pil pkgver=1.1.6 -pkgrel=4 +pkgrel=6 pkgdesc="Python imaging library" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.pythonware.com/products/pil/index.htm" license=('custom:"pil"') depends=('python' 'libjpeg' 'freetype2') @@ -13,14 +15,14 @@ source=(http://effbot.org/downloads/Imaging-$pkgver.tar.gz) md5sums=('3a9b5c20ca52f0a9900512d2c7347622') build() { - cd $startdir/src/Imaging-$pkgver + cd $srcdir/Imaging-$pkgver python setup.py build_ext - python setup.py install --root=$startdir/pkg - mkdir -p $startdir/pkg/usr/include/python2.5/ - cp libImaging/*.h $startdir/pkg/usr/include/python2.5/ + python setup.py install --root=$pkgdir + mkdir -p $pkgdir/usr/include/python2.6/ + cp libImaging/*.h $pkgdir/usr/include/python2.6/ # Install license - install -m644 -D $startdir/src/Imaging-$pkgver/README \ - $startdir/pkg/usr/share/licenses/pil/README + install -m644 -D $srcdir/Imaging-$pkgver/README \ + $pkgdir/usr/share/licenses/pil/README } diff --git a/abs/core/pixman/PKGBUILD b/abs/core/pixman/PKGBUILD index a3fcb97..306acd9 100644 --- a/abs/core/pixman/PKGBUILD +++ b/abs/core/pixman/PKGBUILD @@ -1,7 +1,8 @@ -# $Id: PKGBUILD 490 2008-04-20 11:35:45Z jgc $ -# Maintainer: Alexander Baldeck +# $Id: PKGBUILD 12786 2008-09-20 08:34:14Z jgc $ +# Maintainer: Jan de Groot +# Contributor: Alexander Baldeck pkgname=pixman -pkgver=0.10.0 +pkgver=0.12.0 pkgrel=1 pkgdesc="Pixman library" arch=(i686 x86_64) @@ -10,11 +11,11 @@ license=() depends=('glibc') options=('!libtool') source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) -md5sums=('fb23e17a8a0308e8fad6dc153753ba9a') +md5sums=('494af78c1c7d825c9ad6815d7b91f17d') build() { - cd "${startdir}/src/${pkgname}-${pkgver}" - ./configure --prefix=/usr || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 make || return 1 - make DESTDIR="${startdir}/pkg" install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/plextor-convertX-driver/PKGBUILD b/abs/core/plextor-convertX-driver/PKGBUILD index 102d539..14ecfdc 100755 --- a/abs/core/plextor-convertX-driver/PKGBUILD +++ b/abs/core/plextor-convertX-driver/PKGBUILD @@ -2,27 +2,30 @@ pkgname=plextor-convertX-driver pkgver=0.9.8 -pkgrel=2 -_kernver=2.6.26-ARCH +pkgrel=6 +_kernver=2.6.28-LinHES pkgdesc="Drivers for Plextor tuners" arch=(i686 x86_64) url="http://nikosapi.org/software/WIS_Go7007" install="convertX.install" -source=("http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2" 'wis-go7007-2.6.26-nopage.diff') +source=("http://go7007.imploder.org/wp-content/uploads/2009/02/wis-go7007-linux-098-4tar.bz2" 'wis-go7007-2.6.26-nopage.diff' 'wis-go7007-linux-0.9.8-2-2.6.27.patch') depends=('udev>=070' 'fxload') makedepends=('gcc') +options=(!strip) build() { # SET UP - cd $startdir/src/wis-go7007-linux-0.9.8-2 || return 1 - patch -Np1 -i ../wis-go7007-2.6.26-nopage.diff || return 1 + cd $startdir/src/wis-go7007-linux-0.9.8-4 || return 1 +# patch -Np1 -i ../wis-go7007-2.6.26-nopage.diff || return 1 +# patch -Np1 -i ../wis-go7007-linux-0.9.8-2-2.6.27.patch || return 1 # build make clean || return 1 make || return 1 mkdir -p $startdir/pkg/usr/src/linux-$_kernver/include/linux mkdir -p $startdir/pkg/etc/udev/rules.d mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/usr/sbin # install make DESTDIR=$startdir/pkg install || return 1 install -m755 apps/gorecord $startdir/pkg/usr/bin/gorecord diff --git a/abs/core/plextor-convertX-driver/convertX.install b/abs/core/plextor-convertX-driver/convertX.install index 8dfd0b7..8081c6a 100755 --- a/abs/core/plextor-convertX-driver/convertX.install +++ b/abs/core/plextor-convertX-driver/convertX.install @@ -5,7 +5,7 @@ pre_install() { post_install() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.17-STB + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } @@ -13,7 +13,7 @@ post_install() { post_upgrade() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.17-STB + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } @@ -21,7 +21,7 @@ post_upgrade() { post_remove() { # updating module dependencies echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.17-STB + KERNEL_VERSION=2.6.28-LinHES depmod -v $KERNEL_VERSION > /dev/null 2>&1 /bin/true } diff --git a/abs/core/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch b/abs/core/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch new file mode 100644 index 0000000..6275d8c --- /dev/null +++ b/abs/core/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch @@ -0,0 +1,83 @@ +diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-driver.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-driver.c +--- wis-go7007-linux-0.9.8-2/kernel/go7007-driver.c 2007-03-21 12:51:54.000000000 -0500 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-driver.c 2008-12-30 21:04:32.545534308 -0600 +@@ -32,7 +32,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-i2c.c +--- wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.c 2008-04-06 09:28:35.000000000 -0500 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-i2c.c 2008-12-30 21:04:32.569550193 -0600 +@@ -29,7 +29,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include "go7007-priv.h" +diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-v4l2.c +--- wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.c 2008-12-30 21:16:17.221534155 -0600 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-v4l2.c 2008-12-30 21:10:24.252534209 -0600 +@@ -35,10 +35,12 @@ + #include + #else + #include ++#include ++#include + #endif + #include + #include +-#include ++#include + #include + + #include "../include/go7007.h" +@@ -1478,7 +1480,7 @@ + + static struct video_device go7007_template = { + .name = "go7007", +- .type = VID_TYPE_CAPTURE, ++ .vfl_type = VID_TYPE_CAPTURE, + .fops = &go7007_fops, + .minor = -1, + .release = go7007_vfl_release, +@@ -1492,7 +1494,7 @@ + if (go->video_dev == NULL) + return -ENOMEM; + memcpy(go->video_dev, &go7007_template, sizeof(go7007_template)); +- go->video_dev->dev = go->dev; ++ go->video_dev->parent = go->dev; + rv = video_register_device(go->video_dev, VFL_TYPE_GRABBER, -1); + if (rv < 0) + { +diff -Naur wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/snd-go7007.c +--- wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c 2007-09-06 22:45:25.000000000 -0500 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/snd-go7007.c 2008-12-30 21:04:33.077579435 -0600 +@@ -34,7 +34,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +diff -Naur wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/wis-sony-tuner.c +--- wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.c 2006-04-01 16:37:18.000000000 -0600 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/wis-sony-tuner.c 2008-12-30 21:10:36.100534544 -0600 +@@ -23,6 +23,8 @@ + #include + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + #include ++#include ++#include + #endif + + #include "wis-i2c.h" diff --git a/abs/core/portmap/PKGBUILD b/abs/core/portmap/PKGBUILD new file mode 100644 index 0000000..dc51a0c --- /dev/null +++ b/abs/core/portmap/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dorphell +# Committer: Judd Vinet +pkgname=portmap +pkgver=6.0 +pkgrel=2 +pkgdesc="RPC connection manager" +arch=(i686 x86_64) +depends=('glibc') +url="http://neil.brown.name/portmap/" +license=('GPL') +source=(http://neil.brown.name/portmap/portmap-6.0.tgz portmap) +md5sums=('ac108ab68bf0f34477f8317791aaf1ff' + 'ec37d014a47adc39e52e4bf31bf2a19a') + +build() { + cd $startdir/src/portmap_$pkgver + make || return 1 + mkdir -p $startdir/pkg/sbin + mkdir -p $startdir/pkg/usr/share/man/man8 + make BASEDIR=$startdir/pkg install + mkdir -p $startdir/pkg/etc/rc.d + cp ../portmap $startdir/pkg/etc/rc.d +} diff --git a/abs/core/portmap/gcc3-errno_h.patch b/abs/core/portmap/gcc3-errno_h.patch new file mode 100644 index 0000000..a440e61 --- /dev/null +++ b/abs/core/portmap/gcc3-errno_h.patch @@ -0,0 +1,18 @@ +--- portmap_5beta/portmap.c.orig 2002-12-31 22:13:17.000000000 +0200 ++++ portmap_5beta/portmap.c 2002-12-31 22:13:50.000000000 +0200 +@@ -97,6 +97,7 @@ + + extern char *strerror(); + #include ++#include + + #ifndef LOG_PERROR + #define LOG_PERROR 0 +@@ -124,7 +125,6 @@ + static void callit(); + struct pmaplist *pmaplist; + int debugging = 0; +-extern int errno; + + #include "pmap_check.h" + diff --git a/abs/core/portmap/portmap b/abs/core/portmap/portmap new file mode 100755 index 0000000..fb83a0a --- /dev/null +++ b/abs/core/portmap/portmap @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /sbin/portmap` +case "$1" in + start) + stat_busy "Starting Portmap" + [ -z "$PID" ] && /sbin/portmap + if [ $? -gt 0 ]; then + stat_fail + else + echo $PID > /var/run/portmap.pid + add_daemon portmap + stat_done + fi + ;; + stop) + stat_busy "Stopping Portmap" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm /var/run/portmap.pid + rm_daemon portmap + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/portmap/portmap_5beta.patch.bz2 b/abs/core/portmap/portmap_5beta.patch.bz2 new file mode 100644 index 0000000..ecaf95e Binary files /dev/null and b/abs/core/portmap/portmap_5beta.patch.bz2 differ diff --git a/abs/core/ppp/PKGBUILD b/abs/core/ppp/PKGBUILD index 24f40a7..ecd086e 100644 --- a/abs/core/ppp/PKGBUILD +++ b/abs/core/ppp/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 20217 2008-12-01 18:12:37Z thomas $ # Maintainer: judd pkgname=ppp pkgver=2.4.4 -pkgrel=15 +pkgrel=30 pkgdesc="A daemon which implements the PPP protocol for dial-up networking" arch=(i686 x86_64) url="http://www.samba.org/ppp/" license=('custom:GPL/BSD') groups=('base') -depends=('glibc' 'libpcap>=0.9.8') +depends=('glibc' 'libpcap>=1.0.0') backup=(etc/ppp/{chap-secrets,pap-secrets,options,ip-up,ip-down}) source=(ftp://ftp.samba.org/pub/ppp/ppp-$pkgver.tar.gz \ options pon poff ppp plog pon.1 ip-up ip-down) @@ -42,6 +42,6 @@ build() { install -D -m600 etc.ppp/pap-secrets $startdir/pkg/etc/ppp/pap-secrets install -D -m600 etc.ppp/chap-secrets $startdir/pkg/etc/ppp/chap-secrets install -D -m755 $startdir/src/ppp $startdir/pkg/etc/rc.d/ppp - install -D -m644 $startdir/src/pon.1 $startdir/pkg/usr/man/man1/pon.1 + install -D -m644 $startdir/src/pon.1 $startdir/pkg/usr/share/man/man1/pon.1 mkdir -p $startdir/pkg/etc/ppp/peers } diff --git a/abs/core/projectm/PKGBUILD b/abs/core/projectm/PKGBUILD new file mode 100644 index 0000000..4baced2 --- /dev/null +++ b/abs/core/projectm/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 8766 2008-08-16 05:30:47Z eric $ +# Maintainer: Alexander Baldeck +pkgname=projectm +pkgver=0.99 +pkgrel=2 +pkgdesc="A music visualizer which uses 3D accelerated iterative image based rendering" +arch=(i686 x86_64) +url="http://xmms-projectm.sourceforge.net" +license="GPL" +depends=('ftgl' 'glut') +makedepends=('pkgconfig' 'xproto') +install=projectm.install +source=(http://downloads.sourceforge.net/sourceforge/projectm/libprojectM-$pkgver.tar.bz2) +md5sums=('20dc0aa2af96340c3209c9795cc3217d') + +build() { + cd $startdir/src/libprojectM + ./configure --prefix=/usr + make || return + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/projectm/projectm.install b/abs/core/projectm/projectm.install new file mode 100644 index 0000000..a1e44dc --- /dev/null +++ b/abs/core/projectm/projectm.install @@ -0,0 +1,13 @@ +post_install() { + echo ">> projectm has been split so that you additionally need to install:" + echo ">> xmms-projectm for xmms" + echo ">> libvisual-project for libvisual (like for amarok)" +} + +post_upgrade() { + post_install +} + +op=$1 +shift +$op $* diff --git a/abs/core/pvr150-firmware/PKGBUILD b/abs/core/pvr150-firmware/PKGBUILD new file mode 100644 index 0000000..013a2c8 --- /dev/null +++ b/abs/core/pvr150-firmware/PKGBUILD @@ -0,0 +1,17 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=pvr150-firmware +pkgver=1 +pkgrel=2 +pkgdesc="Firmware for PVR-150 IR-Blaster" +arch=('i586' 'i686' 'x86_64') +url="http://www.blushingpenguin.com/mark/blog/?p=24" +source=(http://www.blushingpenguin.com/mark/lmilk/haup-ir-blaster.bin) +md5sums=('1c117d591bbcb733690e1b7b36202490') + +build() { + cd $startdir/src/ + mkdir -p $startdir/pkg/lib/firmware + install -m0755 $startdir/src/haup-ir-blaster.bin $startdir/pkg/lib/firmware +} diff --git a/abs/core/pycairo/PKGBUILD b/abs/core/pycairo/PKGBUILD index 283ed43..51fa905 100644 --- a/abs/core/pycairo/PKGBUILD +++ b/abs/core/pycairo/PKGBUILD @@ -1,21 +1,24 @@ -# $Id: PKGBUILD 1020 2008-04-27 18:50:59Z jgc $ +# $Id: PKGBUILD 23420 2009-01-10 05:29:10Z allan $ # Maintainer: Jan de Groot pkgname=pycairo -pkgver=1.4.12 -pkgrel=1 +pkgver=1.8.0 +pkgrel=2 pkgdesc="Python bindings for the cairo graphics library" arch=(i686 x86_64) license=('LGPL' 'MPL') -depends=('python>=2.5' 'cairo>=1.6.4') +depends=('python' 'cairo>=1.8.6') options=('!libtool') -source=(http://cairographics.org/releases/${pkgname}-${pkgver}.tar.gz) +source=(http://cairographics.org/releases/${pkgname}-${pkgver}.tar.gz + pycairo-1.8.0-threading.diff) url="http://www.cairographics.org/" -md5sums=('c63199d35b1e1d3c5133509f315f70d7') +md5sums=('847f5377c32228a656819f5bd18eb6b4' + '5259928a3d58750d5c54af60d71f2493') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}"/pycairo-1.8.0-threading.diff || return 1 ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/pycairo/pycairo-1.8.0-threading.diff b/abs/core/pycairo/pycairo-1.8.0-threading.diff new file mode 100644 index 0000000..ce1a80f --- /dev/null +++ b/abs/core/pycairo/pycairo-1.8.0-threading.diff @@ -0,0 +1,67 @@ +diff -Naur pycairo-1.8.0-old/cairo/pycairo-surface.c pycairo-1.8.0/cairo/pycairo-surface.c +--- pycairo-1.8.0-old/cairo/pycairo-surface.c 2008-12-10 17:41:16.000000000 +1000 ++++ pycairo-1.8.0/cairo/pycairo-surface.c 2009-01-10 15:08:36.000000000 +1000 +@@ -310,10 +310,10 @@ + return NULL; + } + Py_DECREF(writer); +- Py_BEGIN_ALLOW_THREADS ++ /*Py_BEGIN_ALLOW_THREADS*/ /*seg faults reported*/ + status = cairo_surface_write_to_png_stream (o->surface, _write_func, + file); +- Py_END_ALLOW_THREADS ++ /*Py_END_ALLOW_THREADS*/ + } + RETURN_NULL_IF_CAIRO_ERROR(status); + Py_RETURN_NONE; +@@ -505,9 +505,9 @@ + } + Py_DECREF(reader); + +- Py_BEGIN_ALLOW_THREADS ++ /*Py_BEGIN_ALLOW_THREADS*/ /*seg faults reported*/ + is = cairo_image_surface_create_from_png_stream (_read_func, file); +- Py_END_ALLOW_THREADS ++ /*Py_END_ALLOW_THREADS*/ + return PycairoSurface_FromSurface (is, NULL); + } + #endif /* CAIRO_HAS_PNG_FUNCTIONS */ +@@ -712,10 +712,10 @@ + } + Py_DECREF(writer); + +- Py_BEGIN_ALLOW_THREADS ++ /*Py_BEGIN_ALLOW_THREADS*/ /*seg faults reported*/ + sfc = cairo_pdf_surface_create_for_stream (_write_func, file, + width_in_points, height_in_points); +- Py_END_ALLOW_THREADS ++ /*Py_END_ALLOW_THREADS*/ + return PycairoSurface_FromSurface (sfc, file); + } + +@@ -818,10 +818,10 @@ + } + Py_DECREF(writer); + +- Py_BEGIN_ALLOW_THREADS ++ /*Py_BEGIN_ALLOW_THREADS*/ /*seg faults reported*/ + sfc = cairo_ps_surface_create_for_stream (_write_func, file, + width_in_points, height_in_points); +- Py_END_ALLOW_THREADS ++ /*Py_END_ALLOW_THREADS*/ + return PycairoSurface_FromSurface (sfc, file); + } + +@@ -1010,10 +1010,10 @@ + } + Py_DECREF(writer); + +- Py_BEGIN_ALLOW_THREADS ++ /*Py_BEGIN_ALLOW_THREADS*/ /*seg faults reported*/ + sfc = cairo_svg_surface_create_for_stream (_write_func, file, + width_in_points, height_in_points); +- Py_END_ALLOW_THREADS ++ /*Py_END_ALLOW_THREADS*/ + return PycairoSurface_FromSurface (sfc, file); + } + diff --git a/abs/core/pygobject/PKGBUILD b/abs/core/pygobject/PKGBUILD index 159de7a..3a32ebe 100644 --- a/abs/core/pygobject/PKGBUILD +++ b/abs/core/pygobject/PKGBUILD @@ -1,21 +1,21 @@ -# $Id: PKGBUILD 2539 2008-06-06 13:24:21Z jgc $ +# $Id: PKGBUILD 24736 2009-01-20 13:32:32Z douglas $ # Maintainer: Jan de Groot pkgname=pygobject -pkgver=2.14.2 +pkgver=2.16.0 pkgrel=1 pkgdesc="Python bindings for GObject" arch=(i686 x86_64) license=('LGPL') -depends=('python>=2.5.1-5' 'glib2>=2.16.3') -source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.14/${pkgname}-${pkgver}.tar.bz2) +depends=('python>=2.5.2-5' 'glib2>=2.18.4') +source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.16/${pkgname}-${pkgver}.tar.bz2) options=('!libtool') url="http://www.pygtk.org/" -md5sums=('0e9e9300e81847f4f7266f49d3bebbaf') +md5sums=('431e7d4632163b93d1ee43cd071a389c') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/pygtk/PKGBUILD b/abs/core/pygtk/PKGBUILD index 71bec7d..242529b 100644 --- a/abs/core/pygtk/PKGBUILD +++ b/abs/core/pygtk/PKGBUILD @@ -1,24 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 29446 2009-03-08 18:03:40Z jgc $ # Maintainer: Jan de Groot # Contributor: Sarah Hay pkgname=pygtk -pkgver=2.12.1 +pkgver=2.14.1 pkgrel=1 pkgdesc="Python bindings for the GTK widget set" arch=(i686 x86_64) license=('LGPL') -depends=('libglade>=2.6.2' 'pycairo>=1.4.0' 'pygobject>=2.14.1' 'python-numeric>=24.2-2' 'gtk2>=2.12.0') +depends=('libglade>=2.6.3' 'pycairo>=1.6.4' 'pygobject>=2.16.0' 'python-numeric>=24.2-2') options=('!libtool') url="http://www.pygtk.org/" -source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.12/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a816346d750d61e3fa67a200e4292694') +source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.14/${pkgname}-${pkgver}.tar.bz2) +md5sums=('c27a7d21b87910e80605d9135d220592') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - sed -i -e 's/SUBDIRS = codegen . $(GTK_SUBDIR) examples tests docs/SUBDIRS = codegen . $(GTK_SUBDIR) examples tests/' Makefile.in - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install - install -m644 gtk/gtk-extrafuncs.defs ${startdir}/pkg/usr/share/pygtk/2.0/defs/ + make DESTDIR="${pkgdir}" install || return 1 + install -m644 gtk/gtk-extrafuncs.defs "${pkgdir}/usr/share/pygtk/2.0/defs/" || return 1 } diff --git a/abs/core/python-iplib/PKGBUILD b/abs/core/python-iplib/PKGBUILD new file mode 100755 index 0000000..9171293 --- /dev/null +++ b/abs/core/python-iplib/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=python-iplib +pkgver=1.0 +pkgrel=1 +pkgdesc="IPlib is a Python module useful to convert amongst many different notations and to manage couples of address/netmask in the CIDR notation." +url="http://www.pymedia.org" +license="" +depends=('python') +makedepends=('python>=2.3') +source=(http://erlug.linux.it/~da/soft/iplib/iplib-1.0.tar.gz) + + arch=('i686') +build() { + cd $startdir/src/iplib* + yes "" | python setup.py install --root=$startdir/pkg --prefix=/usr + } diff --git a/abs/core/python-netifaces/PKGBUILD b/abs/core/python-netifaces/PKGBUILD new file mode 100644 index 0000000..13a424e --- /dev/null +++ b/abs/core/python-netifaces/PKGBUILD @@ -0,0 +1,17 @@ +pkgname=python-netifaces +__pkgname="netifaces" +pkgver=0.5 +pkgrel=2 +pkgdesc="Python modules for network interfaces" +arch=(i686 x86_64) +license=('LGPL' 'MPL') +depends=('python') +makedepends=('setuptools' ) +source=(http://alastairs-place.net/2007/03/netifaces/netifaces-0.5.tar.gz) +url="http://alastairs-place.net/netifaces/" + +build() { + cd "${srcdir}/${__pkgname}-${pkgver}" + chmod -x -R netifaces.egg-info + yes "" | python setup.py install --root=$startdir/pkg --prefix=/usr +} diff --git a/abs/core/python-numeric/PKGBUILD b/abs/core/python-numeric/PKGBUILD index 9ec5dec..67a8ab5 100644 --- a/abs/core/python-numeric/PKGBUILD +++ b/abs/core/python-numeric/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 16713 2008-10-22 02:37:43Z allan $ # Maintainer: arjan # Contributor orelien pkgname=python-numeric pkgver=24.2 -pkgrel=2 +pkgrel=3 pkgdesc="Numerical Python adds a fast array facility to the Python language." arch=(i686 x86_64) depends=('python>=2.5') -source=(http://heanet.dl.sourceforge.net/sourceforge/numpy/Numeric-${pkgver}.tar.gz) +source=(http://downloads.sourceforge.net/sourceforge/numpy/Numeric-${pkgver}.tar.gz) replaces=('numeric') url="http://numeric.scipy.org/" md5sums=(2ae672656e06716a149acb048cca3093) diff --git a/abs/core/python-parted/PKGBUILD b/abs/core/python-parted/PKGBUILD new file mode 100644 index 0000000..8d2ef38 --- /dev/null +++ b/abs/core/python-parted/PKGBUILD @@ -0,0 +1,18 @@ +pkgname=python-parted +__pkgname=pyparted +pkgver=2.0.12 +pkgrel=1 +pkgdesc="Python bindings for libparted" +arch=(i686 x86_64) +license=('LGPL' 'MPL') +depends=('python' 'parted') +options=('!libtool') +source=(https://fedorahosted.org/releases/p/y/pyparted/pyparted-${pkgver}.tar.gz) +url="https://fedorahosted.org/pyparted/" + +build() { + cd "${srcdir}/${__pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/core/python/ChangeLog b/abs/core/python/ChangeLog new file mode 100644 index 0000000..2d5c46a --- /dev/null +++ b/abs/core/python/ChangeLog @@ -0,0 +1,9 @@ +2008-12-07 Allan McRae + * python 2.6.1-1 + * upstream update + * fix gdbm related build error + * fix modulator/pynche launchers + +2008-10-27 Allan McRae + * python 2.6-2 + * patched to use internal expat \ No newline at end of file diff --git a/abs/core/python/PKGBUILD b/abs/core/python/PKGBUILD index bc812de..16ebac5 100644 --- a/abs/core/python/PKGBUILD +++ b/abs/core/python/PKGBUILD @@ -1,57 +1,58 @@ -# $Id: PKGBUILD 4689 2008-07-08 21:50:56Z andyrtr $ +# $Id: PKGBUILD 20912 2008-12-07 08:52:24Z allan $ # Maintainer: Allan McRae # Contributer: Jason Chu pkgname=python -pkgver=2.5.2 -pkgrel=5 -_pybasever=2.5 +pkgver=2.6.1 +pkgrel=1 +_pybasever=2.6 pkgdesc="A high-level scripting language" arch=('i686' 'x86_64') license=('custom') url="http://www.python.org" -depends=('db4.5' 'bzip2' 'gdbm' 'openssl>=0.9.8d' 'zlib') +depends=('db' 'bzip2' 'gdbm' 'openssl>=0.9.8d' 'zlib') makedepends=('tk>=8.5.0' 'sqlite3') -provides=('python-elementree' 'python-ctypes') -replaces=('python-elementree' 'python-ctypes') -install=python.install +optdepends=('tk: for IDLE, pynche and modulator') +provides=('python-elementtree' 'python-ctypes') +replaces=('python-elementtree' 'python-ctypes') source=(http://www.python.org/ftp/python/${pkgver}/Python-${pkgver}.tar.bz2 + python-2.6-internal-expat.patch + python-2.6-gdbm.patch modulator-launcher - pynche-launcher - Python-2.4.4-gdbm-1.patch - python-2.5.CVE-2007-4965-int-overflow.patch - python2.6-set_wakeup_fd4.patch - Python-2.5.2-idlelib.patch) -md5sums=('afb5451049eda91fbde10bd5a4b7fadc' - 'faa0d4b947bfe67fc8684b5c464f46f2' - '60a44af1d8af276274e20c564c0f3d8b' - '2b61e06365e9fb5f3af22d946efa8be6' - '491416c1b337fc61b6cdf5981d895a7d' - 'ec56710959deb01b5fa35829cafec6a3' - 'e6441e0b013ac64795221154e0495e10') + pynche-launcher) +md5sums=('e81c2f0953aa60f8062c05a4673f2be0' + '993800dbcc0c4f199c1ceee998a06e71' + '13fab4bb2cacbc433e62d7191a17f71e' + 'b4a531570415280dc406c8d5c1fa8d83' + '9f731b9033db285132a3524fb36409e7') + build() { - cd ${startdir}/src/Python-${pkgver} - patch -Np1 -i ${srcdir}/Python-2.4.4-gdbm-1.patch || return 1 - # fix http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-4965 - patch -Np1 -i ${srcdir}/python-2.5.CVE-2007-4965-int-overflow.patch || return 1 - - patch -Np2 -i ${srcdir}/python2.6-set_wakeup_fd4.patch || return 1 - patch -Np0 -i ${srcdir}/Python-2.5.2-idlelib.patch + cd ${srcdir}/Python-${pkgver} + + patch -Np0 -i ${srcdir}/python-2.6-internal-expat.patch + patch -Np1 -i ${srcdir}/python-2.6-gdbm.patch ./configure --prefix=/usr --enable-shared --with-threads --enable-unicode + + # temporary backwards compatibility stuff... + sed -i 's#SITEPATH=#SITEPATH=:/usr/lib/python2.5/site-packages#' Makefile + make || return 1 make DESTDIR=${pkgdir} install rm ${pkgdir}/usr/bin/python ln -sf python${_pybasever} ${pkgdir}/usr/bin/python + ln -sf python${_pybasever} ${pkgdir}/usr/bin/python2 # Install the tools #modulator + sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/modulator-launcher install -m755 ${srcdir}/modulator-launcher ${pkgdir}/usr/bin/modulator cp -r Tools/modulator ${pkgdir}/usr/lib/python${_pybasever}/site-packages/ #pynche + sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/pynche-launcher install -m755 ${srcdir}/pynche-launcher ${pkgdir}/usr/bin/pynche rm -f Tools/pynche/*.pyw cp -r Tools/pynche ${pkgdir}/usr/lib/python${_pybasever}/site-packages/ @@ -65,5 +66,5 @@ build() { install Tools/scripts/*py ${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/ # license - install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE + install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE } diff --git a/abs/core/python/modulator-launcher b/abs/core/python/modulator-launcher index 732f05c..ba46e93 100644 --- a/abs/core/python/modulator-launcher +++ b/abs/core/python/modulator-launcher @@ -1,2 +1,2 @@ #!/bin/bash -exec /usr/lib/python2.5/site-packages/modulator/modulator.py +exec /usr/lib/python%%PYBASEVER%%/site-packages/modulator/modulator.py diff --git a/abs/core/python/pynche-launcher b/abs/core/python/pynche-launcher index ab3a6d8..a4338a7 100644 --- a/abs/core/python/pynche-launcher +++ b/abs/core/python/pynche-launcher @@ -1,3 +1,3 @@ #!/bin/bash -/usr/lib/python2.5/site-packages/pynche/pynche +/usr/lib/python%%PYBASEVER%%/site-packages/pynche/pynche diff --git a/abs/core/python/python-2.6-gdbm.patch b/abs/core/python/python-2.6-gdbm.patch new file mode 100644 index 0000000..0f223f6 --- /dev/null +++ b/abs/core/python/python-2.6-gdbm.patch @@ -0,0 +1,12 @@ +diff -Naur Python-2.6-old/setup.py Python-2.6/setup.py +--- Python-2.6-old/setup.py 2008-09-30 10:15:45.000000000 +1000 ++++ Python-2.6/setup.py 2008-12-07 16:04:01.000000000 +1000 +@@ -1013,7 +1013,7 @@ + if self.compiler.find_library_file(lib_dirs, 'ndbm'): + ndbm_libs = ['ndbm'] + else: +- ndbm_libs = [] ++ ndbm_libs = ['gdbm', 'gdbm_compat'] + exts.append( Extension('dbm', ['dbmmodule.c'], + define_macros=[('HAVE_NDBM_H',None)], + libraries = ndbm_libs ) ) diff --git a/abs/core/python/python-2.6-internal-expat.patch b/abs/core/python/python-2.6-internal-expat.patch new file mode 100644 index 0000000..86252ab --- /dev/null +++ b/abs/core/python/python-2.6-internal-expat.patch @@ -0,0 +1,33 @@ +--- setup.py 2008-04-22 12:12:24.613554757 +0300 ++++ setup.py 2008-04-22 12:13:09.276544063 +0300 +@@ -1035,18 +1035,15 @@ + # + # More information on Expat can be found at www.libexpat.org. + # +- expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat') +- define_macros = [ +- ('HAVE_EXPAT_CONFIG_H', '1'), +- ] ++ # Use system expat ++ expatinc = '/usr/include' ++ define_macros = [] + + exts.append(Extension('pyexpat', + define_macros = define_macros, + include_dirs = [expatinc], ++ libraries = ['expat'], + sources = ['pyexpat.c', +- 'expat/xmlparse.c', +- 'expat/xmlrole.c', +- 'expat/xmltok.c', + ], + )) + +@@ -1058,6 +1055,7 @@ + exts.append(Extension('_elementtree', + define_macros = define_macros, + include_dirs = [expatinc], ++ libraries = ['expat'], + sources = ['_elementtree.c'], + )) + diff --git a/abs/core/qt/PKGBUILD b/abs/core/qt/PKGBUILD new file mode 100644 index 0000000..87ec9f7 --- /dev/null +++ b/abs/core/qt/PKGBUILD @@ -0,0 +1,118 @@ +# $Id$ +# Maintainer: Pierre Schmitz + +pkgname=qt +pkgver=4.5.2 +pkgrel=4 +_kdeqtver=2d1727e396d5dca24ae0fb6a45d35ffc1abd0c12 +pkgdesc='A cross-platform application and UI framework' +arch=('i686' 'x86_64') +url='http://www.qtsoftware.com/' +license=('GPL3' 'LGPL') +depends=('libpng' 'mesa' 'fontconfig' 'libtiff>=3.8.2-5' 'libmng>=1.0.10-2' 'sqlite3' + 'libxrandr' 'glib2' 'libxi' 'dbus' 'libxcursor' 'libxinerama' 'libxrender') +optdepends=('postgresql-libs' 'libmysqlclient' 'unixodbc') +makedepends=('inputproto' 'postgresql-libs' 'mysql' 'unixodbc' 'libxfixes' 'gtk2') +provides=("qt4=${pkgver}") +replaces=('qt4') +conflicts=('qt4') +options=('!libtool') +_pkgfqn="qt-x11-opensource-src-${pkgver}" +source=("ftp://ftp.qtsoftware.com/qt/source/${_pkgfqn}.tar.bz2" + "ftp://ftp.archlinux.org/other/kde-qt/kde-qt-patches-${_kdeqtver}.tar.bz2" + 'assistant.desktop' 'designer.desktop' 'linguist.desktop' 'qtconfig.desktop' + 'qdoc3.patch') +md5sums=('28a7e8ac9805a6f614d2a27ee1a6ac9d' + '4b333add3031f59538629b35858178d9' + 'b352b4b70faba2571af3fce5d119580a' + '491a96682faa03407f768a53cca71db5' + 'cda7ed7e132689991dc2968a0043b4b0' + '717669b728a0a795217d2f52969e454c' + '9c0a0db3569e889a54a6cddcd55c538c') + +_create-kdeqt-patches() { + local codir=$(mktemp -d) + mkdir -p "${codir}/kde-qt" + git clone git://gitorious.org/+kde-developers/qt/kde-qt.git "${codir}/kde-qt" + pushd "${codir}/kde-qt" + local kdeqtver=$(git --no-pager show --format='%H' "${pkgver}-patched") + mkdir "../kde-qt-patches-${kdeqtver}" + git format-patch -k "v${pkgver}..${pkgver}-patched" -o "../kde-qt-patches-${kdeqtver}" + popd + pushd "${codir}" + bsdtar -cjf "kde-qt-patches-${kdeqtver}.tar.bz2" kde-qt-patches-${kdeqtver} + popd + mv "${codir}/kde-qt-patches-${kdeqtver}.tar.bz2" . + rm -rf "${codir}" +} + +build() { + unset QMAKESPEC + export QT4DIR=$srcdir/$_pkgfqn + export PATH=${QT4DIR}/bin:${PATH} + export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH} + + cd $srcdir/$_pkgfqn + for i in $srcdir/kde-qt-patches-${_kdeqtver}/*; do + echo "applying $i" + patch -p1 -i $i || return 1 + done + + patch -p0 -i $srcdir/qdoc3.patch + + sed -i "s|-O2|$CXXFLAGS|" mkspecs/common/g++.conf + sed -i "/^QMAKE_RPATH/s| -Wl,-rpath,||g" mkspecs/common/g++.conf + + ./configure -confirm-license -opensource \ + -prefix /usr \ + -sysconfdir /etc \ + -plugindir /usr/lib/qt/plugins \ + -translationdir /usr/share/qt/translations \ + -datadir /usr/share/qt \ + -docdir /usr/share/doc/qt \ + -examplesdir /usr/share/doc/qt/examples \ + -demosdir /usr/share/doc/qt/demos \ + -largefile \ + -plugin-sql-{psql,mysql,sqlite,odbc} \ + -system-sqlite \ + -xmlpatterns \ + -no-phonon \ + -svg \ + -webkit \ + -scripttools \ + -system-zlib \ + -system-libtiff \ + -system-libpng \ + -system-libmng \ + -system-libjpeg \ + -openssl-linked \ + -nomake demos \ + -nomake examples \ + -nomake docs \ + -no-rpath \ + -silent \ + -optimized-qmake \ + -dbus \ + -reduce-relocations \ + -no-separate-debug-info \ + -gtkstyle \ + -opengl \ + -glib + + make + make INSTALL_ROOT=$pkgdir install + + install -D -m644 tools/assistant/tools/assistant/images/assistant.png ${pkgdir}/usr/share/pixmaps/assistant.png + install -D -m644 tools/linguist/linguist/images/appicon.png ${pkgdir}/usr/share/pixmaps/linguist.png + install -D -m644 tools/designer/src/designer/images/designer.png ${pkgdir}/usr/share/pixmaps/designer.png + install -D -m644 src/gui/dialogs/images/qtlogo-64.png ${pkgdir}/usr/share/pixmaps/qtlogo.png + install -d ${pkgdir}/usr/share/applications + install -m644 ${srcdir}/{linguist,designer,assistant,qtconfig}.desktop ${pkgdir}/usr/share/applications/ + install -D -m644 LGPL_EXCEPTION.txt ${pkgdir}/usr/share/licenses/qt/LGPL_EXCEPTION.txt + + # cleanup and path fixes + find $pkgdir/usr/lib -type f -name '*prl' -print -exec sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" {} \; + sed -i -e "s|-L$srcdir/${_pkgfqn}/lib||g" $pkgdir/usr/lib/pkgconfig/*.pc + sed -i -e "s|$srcdir/${_pkgfqn}/bin/moc|/usr/bin/moc|g" $pkgdir/usr/lib/pkgconfig/*.pc + sed -i -e "s|$srcdir/${_pkgfqn}/bin/uic|/usr/bin/uic|g" $pkgdir/usr/lib/pkgconfig/*.pc +} diff --git a/abs/core/qt/__changelog b/abs/core/qt/__changelog new file mode 100644 index 0000000..2abf977 --- /dev/null +++ b/abs/core/qt/__changelog @@ -0,0 +1 @@ +remove cups support diff --git a/abs/core/qt/assistant.desktop b/abs/core/qt/assistant.desktop new file mode 100644 index 0000000..48105b9 --- /dev/null +++ b/abs/core/qt/assistant.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Exec=/usr/bin/assistant +Name=Qt Assistant +GenericName=Qt Document Browser +Icon=/usr/share/pixmaps/assistant.png +Terminal=false +Type=Application +Categories=Qt;Development;Documentation diff --git a/abs/core/qt/designer.desktop b/abs/core/qt/designer.desktop new file mode 100644 index 0000000..fefe095 --- /dev/null +++ b/abs/core/qt/designer.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Exec=/usr/bin/designer +Name=Qt Designer +GenericName=Interface Designer +MimeType=application/x-designer +Icon=/usr/share/pixmaps/designer.png +Terminal=false +Type=Application +Categories=Qt;Development;GUIDesigner diff --git a/abs/core/qt/linguist.desktop b/abs/core/qt/linguist.desktop new file mode 100644 index 0000000..04519bf --- /dev/null +++ b/abs/core/qt/linguist.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Exec=/usr/bin/linguist +Name=Qt Linguist +GenericName=Translation Tool +MimeType=application/x-linguist +Terminal=false +Type=Application +Icon=/usr/share/pixmaps/linguist.png +Categories=Qt;Development;Translation diff --git a/abs/core/qt/qdoc3.patch b/abs/core/qt/qdoc3.patch new file mode 100644 index 0000000..c967b6e --- /dev/null +++ b/abs/core/qt/qdoc3.patch @@ -0,0 +1,25 @@ +--- tools/qdoc3/qdoc3.pro 2009-06-25 17:34:42.000000000 +0200 ++++ tools/qdoc3/qdoc3.pro.new 2009-06-25 17:35:42.000000000 +0200 +@@ -8,6 +8,11 @@ + CONFIG -= build_all + CONFIG += release + } ++ ++TARGET= qdoc3 ++target.path = $$[QT_INSTALL_BINS] ++INSTALLS += target ++ + mac:CONFIG -= app_bundle + HEADERS += apigenerator.h \ + archiveextractor.h \ +diff -up qt-x11-opensource-src-4.5.0/tools/tools.pro.qdoc3 qt-x11-opensource-src-4.5.0/tools/tools.pro +--- tools/tools.pro.qdoc3 2009-02-25 15:09:27.000000000 -0600 ++++ tools/tools.pro 2009-03-04 09:44:18.000000000 -0600 +@@ -13,6 +13,7 @@ no-png { + SUBDIRS += designer + } + SUBDIRS += linguist ++ SUBDIRS += qdoc3 + wince*: SUBDIRS = qtestlib designer + unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig + win32:!wince*:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt diff --git a/abs/core/qt/qtconfig.desktop b/abs/core/qt/qtconfig.desktop new file mode 100644 index 0000000..633d921 --- /dev/null +++ b/abs/core/qt/qtconfig.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Qt Config +Comment=Configure Qt behavior, styles, fonts +Exec=/usr/bin/qtconfig +Icon=/usr/share/pixmaps/qtlogo +Terminal=false +Type=Application +Categories=Qt;Settings; diff --git a/abs/core/qt3/PKGBUILD b/abs/core/qt3/PKGBUILD index 870305a..131cbb1 100644 --- a/abs/core/qt3/PKGBUILD +++ b/abs/core/qt3/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: John Proctor pkgname=qt3 pkgver=3.3.8 -pkgrel=8 +pkgrel=9 pkgdesc="The QT gui toolkit." arch=(i686 x86_64) license=('GPL') diff --git a/abs/core/randrproto/PKGBUILD b/abs/core/randrproto/PKGBUILD index d81ad0e..03c1124 100644 --- a/abs/core/randrproto/PKGBUILD +++ b/abs/core/randrproto/PKGBUILD @@ -1,21 +1,21 @@ -# $Id: PKGBUILD 4331 2008-07-06 17:35:48Z jgc $ +# $Id: PKGBUILD 29287 2009-03-07 18:43:12Z jgc $ #Maintainer: Jan de Groot pkgname=randrproto -pkgver=1.2.2 +pkgver=1.3.0 pkgrel=1 pkgdesc="X11 RandR extension wire protocol" arch=('i686' 'x86_64') license=('custom') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) -md5sums=('0458f24d6a77ff4bc5182816f482afa1') +md5sums=('a49416013fff33c853efb32f1926551e') build() { - cd ${srcdir}/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${pkgdir} install || return 1 - install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/readline/PKGBUILD b/abs/core/readline/PKGBUILD index 0eb9b8f..e4c7716 100644 --- a/abs/core/readline/PKGBUILD +++ b/abs/core/readline/PKGBUILD @@ -1,59 +1,36 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd +# $Id: PKGBUILD 25790 2009-01-29 09:50:30Z allan $ +# Maintainer: Andreas Radke +# Contributor: judd + pkgname=readline -pkgver=5.2 -pkgrel=16 +pkgver=5.2.013 +pkgrel=2 pkgdesc="GNU readline library" arch=(i686 x86_64) -url="ftp://ftp.cwru.edu/pub/bash/" +url="http://tiswww.case.edu/php/chet/readline/rltop.html" license=('GPL') groups=('base') -depends=(glibc ncurses) +depends=('glibc' 'ncurses') backup=("etc/inputrc") source=(ftp://ftp.cwru.edu/pub/bash/readline-${pkgver}.tar.gz - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-001 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-002 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-003 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-004 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-005 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-006 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-007 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-008 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-009 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-010 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-011 - ftp://ftp.cwru.edu/pub/bash/readline-5.2-patches/readline52-012 - inputrc) -md5sums=('e39331f32ad14009b9ff49cc10c5e751' - '9d4d41622aa9b230c57f68548ce87d8f' - 'f03e512d14206e37f7d6a748b56b9476' - '252b42d8750f1a94b6bdf086612dceb2' - 'a32333c2e603a3ed250514e91050e552' - '8106796c09b789523a3a78ab69c04b6d' - '512188e2bf0837f7eca19dbf71f182ae' - 'ac17aca62eb6fb398c9f2fe9de540aff' - '2484c392db021905f112cf97a94dfd4c' - 'fc6eb35d07914fae5c57d49c12483ff7' - '7a2bf3dc7ac7680b1461a5701100e91b' - 'ef6cef6822663470f6ac8c517c5a7ec6' - 'e3e9f441c8111589855bc363e5640f6c' + inputrc) +md5sums=('07666d8dabefdfc7fb328b14cd6ce843' 'e5fc955f56d9fa5beb871f3279b8fa8b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - for i in 001 002 003 004 005 006 007 008 009 010 011 012; do - patch -Np2 -i ${startdir}/src/readline52-${i} || return 1 - done - ./configure --prefix=/usr + ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info make SHLIB_LIBS=-lncurses || return 1 make DESTDIR=${startdir}/pkg install || return 1 mkdir -p ${startdir}/pkg/etc - install -m644 ../inputrc ${startdir}/pkg/etc/inputrc + install -m644 ../inputrc ${startdir}/pkg/etc/inputrc || return 1 cd ${startdir}/pkg mkdir -pv lib - mv -v usr/lib/lib{readline,history}.so.5* lib/ - ln -svf ../../lib/libreadline.so.5 usr/lib/libreadline.so - ln -svf ../../lib/libhistory.so.5 usr/lib/libhistory.so + mv -v usr/lib/lib{readline,history}.so.5* lib/ || return 1 + ln -svf ../../lib/libreadline.so.5 usr/lib/libreadline.so || return 1 + ln -svf ../../lib/libhistory.so.5 usr/lib/libhistory.so || return 1 + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/readline/readline.install b/abs/core/readline/readline.install index 6b5a1dc..8e3de84 100644 --- a/abs/core/readline/readline.install +++ b/abs/core/readline/readline.install @@ -1,9 +1,22 @@ -# arg 1: the new package version -# arg 2: the old package version +infodir=/usr/share/info +filelist=(history.info readline.info rluserman.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + post_upgrade() { + post_install $1 echo ">> You can safely ignore any \"cannot open shared object\" errors you see above" } -op=$1 -shift -$op $* +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + diff --git a/abs/core/resourceproto/PKGBUILD b/abs/core/resourceproto/PKGBUILD new file mode 100644 index 0000000..7443115 --- /dev/null +++ b/abs/core/resourceproto/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +#Maintainer: Jan de Groot + +pkgname=resourceproto +pkgver=1.0.2 +pkgrel=1 +pkgdesc="X11 Resource extension wire protocol" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) +md5sums=('b823b314e37eb19dae1f297951d2e933') +sha1sums=('ac22c2e439067185ea169d20677f74321da7b34b') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/core/rsync/ChangeLog b/abs/core/rsync/ChangeLog new file mode 100644 index 0000000..1e26b1c --- /dev/null +++ b/abs/core/rsync/ChangeLog @@ -0,0 +1,20 @@ +2008-09-06 Eric Belanger + + * rsync 3.0.4-1 + * Upstream update + +2008-07-05 Eric Belanger + + * rsync 3.0.3-1 + * Upstream update + +2008-04-13 Eric Belanger + + * rsync 3.0.2-1 + * Upstream update + +2008-03-01 Eric Belanger + + * rsync 3.0.0-1 + * Upstream update + * Updated license diff --git a/abs/core/rsync/PKGBUILD b/abs/core/rsync/PKGBUILD new file mode 100644 index 0000000..d9f2968 --- /dev/null +++ b/abs/core/rsync/PKGBUILD @@ -0,0 +1,29 @@ +pkgname=rsync +pkgver=3.0.4 +pkgrel=2 +pkgdesc="A file transfer program to keep remote files in sync" +arch=('i686' 'x86_64') +url="http://samba.anu.edu.au/rsync/" +license=('GPL3') +depends=('acl') +backup=('etc/rsyncd.conf' 'etc/xinetd.d/rsync') +source=(http://rsync.samba.org/ftp/rsync/${pkgname}-${pkgver}.tar.gz \ + rsyncd.conf rsyncd rsync.xinetd) +md5sums=('2b2d159c9bd1b5f8adfd8b13da3a1f3f' '4395c0591638349b1a7aeaaa4da1f03a'\ + '9de4d03d49f4b5c73ffd67d452716a49' 'ea3e9277dc908bc51f9eddc0f6b935c1') +sha1sums=('e89ed8d84fe0b6740208ba8183ee1dbc220ba5e5' + '48be09294134dfed888818872fe552a59c29147a' + 'ebec275bbd0c11692c91dc59368349601bd9eaf4' + 'fdb99785bc87ee13d77aa90dc1804f3f75dd7fc1') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./prepare-source || return 1 + ./configure --prefix=/usr --with-included-popt \ + --enable-acl-support --enable-xattr-support || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + install -D -m 755 ../rsyncd ${pkgdir}/etc/rc.d/rsyncd || return 1 + install -D -m 644 ../rsyncd.conf ${pkgdir}/etc/rsyncd.conf || return 1 + install -D -m 644 ../rsync.xinetd ${pkgdir}/etc/xinetd.d/rsync || return 1 +} diff --git a/abs/core/rsync/rsync.xinetd b/abs/core/rsync/rsync.xinetd new file mode 100644 index 0000000..f5b6b1e --- /dev/null +++ b/abs/core/rsync/rsync.xinetd @@ -0,0 +1,11 @@ +service rsync +{ + socket_type = stream + wait = no + user = root + server = /usr/bin/rsync + server_args = --daemon + log_on_success += HOST DURATION + log_on_failure += HOST + disable = yes +} diff --git a/abs/core/rsync/rsyncd b/abs/core/rsync/rsyncd new file mode 100644 index 0000000..e1313dc --- /dev/null +++ b/abs/core/rsync/rsyncd @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting rsyncd" + [ ! -f /var/run/daemons/rsyncd ] && /usr/bin/rsync --daemon + if [ $? -gt 0 ]; then + stat_fail + else + pgrep -of "/usr/bin/rsync --daemon" > /var/run/rsyncd.pid + add_daemon rsyncd + stat_done + fi + ;; + + stop) + stat_busy "Stopping rsyncd" + [ -f /var/run/rsyncd.pid ] && kill `cat /var/run/rsyncd.pid` + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon rsyncd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/rsync/rsyncd.conf b/abs/core/rsync/rsyncd.conf new file mode 100644 index 0000000..f7161f3 --- /dev/null +++ b/abs/core/rsync/rsyncd.conf @@ -0,0 +1,16 @@ +uid = nobody +gid = nobody +use chroot = no +max connections = 4 +syslog facility = local5 +pid file = /var/run/rsyncd.pid + +[ftp] + path = /home/ftp + comment = ftp area + +#[cvs] +# path = /data/cvs +# comment = CVS repository (requires authentication) +# auth users = tridge, susan +# secrets file = /etc/rsyncd.secrets diff --git a/abs/core/rt2500/PKGBUILD b/abs/core/rt2500/PKGBUILD index 67798b6..605b031 100644 --- a/abs/core/rt2500/PKGBUILD +++ b/abs/core/rt2500/PKGBUILD @@ -1,27 +1,31 @@ -# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# $Id: PKGBUILD 22503 2008-12-26 22:53:05Z tpowa $ # Maintainer: James Rayner pkgname=rt2500 -_kernver=2.6.26-ARCH +_kernver=2.6.28-LinHES pkgver=1.1.0_B4 _pkgver=1.1.0-b4 -pkgrel=24 +pkgrel=28 pkgdesc="Drivers for rt2500 chipset wireless cards" url="http://rt2x00.serialmonkey.com/wiki/index.php/Main_Page" license=('GPL2') -depends=('kernel26>=2.6.26-1' 'kernel26<2.6.27') +depends=('kernel26>=2.6.28' 'kernel26<2.6.29') arch=('i686' 'x86_64') install=rt2500.install source=(http://downloads.sourceforge.net/sourceforge/rt2400/rt2500-${_pkgver}.tar.gz \ - kernel-2.6.22.patch kernel-2.6.24.patch) + kernel-2.6.22.patch + kernel-2.6.24.patch + kernel-2.6.27.patch) md5sums=('83b8b9a091705c08d99268479f3b3b6a' 'a74f8e9cbba7b29620f11fba8fd7c50d' - 'ccf0da667cc6642dacf39dea1aac254f') + 'ccf0da667cc6642dacf39dea1aac254f' + 'ccb923f4ebf408e781544d7cf4074bf2') build() { cd $startdir/src/rt2500-$_pkgver/ patch -Np1 -i ../kernel-2.6.22.patch || return 1 patch -Np1 -i ../kernel-2.6.24.patch || return 1 + patch -Np1 -i ../kernel-2.6.27.patch || return 1 cd $startdir/src/rt2500-$_pkgver/Module make KERNDIR=/lib/modules/$_kernver/build || return 1 install -D -m 644 rt2500.ko $startdir/pkg/lib/modules/$_kernver/kernel/drivers/net/wireless/rt2500.ko diff --git a/abs/core/rt2500/kernel-2.6.27.patch b/abs/core/rt2500/kernel-2.6.27.patch new file mode 100644 index 0000000..22abd35 --- /dev/null +++ b/abs/core/rt2500/kernel-2.6.27.patch @@ -0,0 +1,64 @@ +diff -Nur rt2500-1.1.0-b4.orig/Module/rtmp_info.c rt2500-1.1.0-b4/Module/rtmp_info.c +--- rt2500-1.1.0-b4.orig/Module/rtmp_info.c 2008-10-10 16:55:27.000000000 +0200 ++++ rt2500-1.1.0-b4/Module/rtmp_info.c 2008-10-10 16:57:27.000000000 +0200 +@@ -481,7 +481,7 @@ + iwe.cmd = SIOCGIWAP; + iwe.u.ap_addr.sa_family = ARPHRD_ETHER; + memcpy(iwe.u.ap_addr.sa_data, &pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, ETH_ALEN); +- current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_ADDR_LEN); ++ current_ev = iwe_stream_add_event(info, current_ev,end_buf, &iwe, IW_EV_ADDR_LEN); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWMODE; +@@ -499,13 +499,13 @@ + } + + iwe.len = IW_EV_UINT_LEN; +- current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_UINT_LEN); ++ current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_UINT_LEN); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWESSID; + iwe.u.data.length = pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen; + iwe.u.data.flags = 1; +- current_ev = iwe_stream_add_point(current_ev,end_buf, &iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); ++ current_ev = iwe_stream_add_point(info, current_ev,end_buf, &iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWENCODE; +@@ -513,7 +513,7 @@ + iwe.u.data.flags =IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; + else + iwe.u.data.flags = IW_ENCODE_DISABLED; +- current_ev = iwe_stream_add_point(current_ev, end_buf,&iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); ++ current_ev = iwe_stream_add_point(info, current_ev, end_buf,&iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); + + //================================ + memset(&iwe, 0, sizeof(iwe)); +@@ -524,7 +524,7 @@ + { + iwe.u.bitrate.value = RateIdToMbps[pAdapter->PortCfg.BssTab.BssEntry[i].Rates[i]/2] * 1000000; + iwe.u.bitrate.disabled = 0; +- current_val = iwe_stream_add_value(current_ev, ++ current_val = iwe_stream_add_value(info, current_ev, + current_val, end_buf, &iwe, + IW_EV_PARAM_LEN); + } +@@ -537,7 +537,7 @@ + iwe.u.freq.m = pAdapter->PortCfg.BssTab.BssEntry[i].Channel; + iwe.u.freq.e = 0; + iwe.u.freq.i = 0; +- current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_FREQ_LEN); ++ current_ev = iwe_stream_add_event(info, current_ev,end_buf, &iwe, IW_EV_FREQ_LEN); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVQUAL; +@@ -549,7 +549,7 @@ + iwe.u.qual.noise = pAdapter->PortCfg.BssTab.BssEntry[i].Noise; + //iwe.u.qual.noise = (pAdapter->PortCfg.LastR17Value > BBP_R17_DYNAMIC_UP_BOUND) ? BBP_R17_DYNAMIC_UP_BOUND : ((ULONG) pAdapter->PortCfg.LastR17Value); // // noise level (dBm) + +- current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_QUAL_LEN); ++ current_ev = iwe_stream_add_event(info, current_ev,end_buf, &iwe, IW_EV_QUAL_LEN); + + + //================================ diff --git a/abs/core/rt2500/rt2500.install b/abs/core/rt2500/rt2500.install index c242f1b..e58aa37 100644 --- a/abs/core/rt2500/rt2500.install +++ b/abs/core/rt2500/rt2500.install @@ -1,7 +1,7 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } @@ -9,14 +9,14 @@ post_install() # arg 2: the old package version post_upgrade() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core/rt2x00-rt61-fw/PKGBUILD b/abs/core/rt2x00-rt61-fw/PKGBUILD index ef65031..0224fcc 100644 --- a/abs/core/rt2x00-rt61-fw/PKGBUILD +++ b/abs/core/rt2x00-rt61-fw/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 15101 2008-10-12 16:24:41Z tpowa $ # Maintainer: Tom Killian pkgname=rt2x00-rt61-fw pkgver=1.2 -pkgrel=2 +pkgrel=3 pkgdesc="Firmware for the rt2x00 wireless drivers" arch=(i686 x86_64) url="http://www.ralinktech.com/ralink/Home/Support/Linux.html" diff --git a/abs/core/rt2x00-rt71w-fw/PKGBUILD b/abs/core/rt2x00-rt71w-fw/PKGBUILD index 5736755..890d3a6 100644 --- a/abs/core/rt2x00-rt71w-fw/PKGBUILD +++ b/abs/core/rt2x00-rt71w-fw/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 15104 2008-10-12 16:35:52Z tpowa $ # Maintainer: Tom Killian pkgname=rt2x00-rt71w-fw pkgver=1.8 -pkgrel=2 +pkgrel=3 pkgdesc="Firmware for the rt2x00 wireless drivers" arch=(i686 x86_64) url="http://www.ralinktech.com/ralink/Home/Support/Linux.html" diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD new file mode 100755 index 0000000..1615994 --- /dev/null +++ b/abs/core/runit-scripts/PKGBUILD @@ -0,0 +1,31 @@ +pkgname=runit-scripts +pkgver=1.8.0 +pkgrel=95 +pkgdesc="collection of startup scripts for runit" +url="http://smarden.org/runit/" +license="BSD" +depends=('glibc' 'util-linux' 'initscripts' 'runit' ) +makedepends=('rsync') +conflicts=() +replaces=() +backup=(etc/runit/1.local) +install=runit.install +source=(fbsplash-runit.sh) +arch=('i686') + +build() { + rsync -a --exclude=.svn --exclude=*~ $startdir/runitscripts $startdir/src + cd $startdir/src/runitscripts + install -d $startdir/pkg/etc/ + install -d $startdir/pkg/etc/runit/ + install -d $startdir/pkg/var/service + install -d $startdir/pkg/etc/sv + install -d $startdir/pkg/sbin + install -d $startdir/pkg/etc/rc.d/functions.d + + install -m0700 1 2 3 1.local ctrlaltdel $startdir/pkg/etc/runit + install -m755 $startdir/src/fbsplash-runit.sh $startdir/pkg/etc/rc.d/functions.d/fbsplash-runit.sh + install -m0755 reboot-runit halt-runit logger $startdir/pkg/sbin + rsync -a --exclude=.svn services/* $startdir/pkg/etc/sv +} +md5sums=('c6cbd6af3657783bd1ce8f75f574d72f') diff --git a/abs/core/runit-scripts/fbsplash-runit.sh b/abs/core/runit-scripts/fbsplash-runit.sh new file mode 100755 index 0000000..aa391b0 --- /dev/null +++ b/abs/core/runit-scripts/fbsplash-runit.sh @@ -0,0 +1,27 @@ +# fbsplash function.d script # +# Author: Greg Helton # + +# Who is calling? # +CALLER=$0 + +# splash stuff # +. /etc/conf.d/fbsplash.conf +. /sbin/splash-functions.sh + +# Redefine the stat functions # + +stat_runit() { + printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} " + printf "${SAVE_POSITION}" + deltext + printf " ${C_OTHER}[${C_BUSY}BKGD${C_OTHER}]${C_CLEAR} " + # Load variables # + var_load STEP_NR MAX_STEPS RC_MULTI RC_SYSINIT RC_SHUTDOWN + # Only update the splash progress if we're in sysinit, multi, or shutdown. # + ((SPLASH_STEP_NR++)) + SPLASH_PROGRESS=$((100*${SPLASH_STEP_NR}/${SPLASH_MAX_STEPS})) + SPLASH_CURRENT_PROGRESS=${SPLASH_PROGRESS} + splash_update_progress ${SPLASH_PROGRESS} + var_save STEP_NR CURRENT_PROGRESS + +} diff --git a/abs/core/runit-scripts/runit.install b/abs/core/runit-scripts/runit.install new file mode 100755 index 0000000..1e3f619 --- /dev/null +++ b/abs/core/runit-scripts/runit.install @@ -0,0 +1,56 @@ +# arg 1: the new package version + +pre_install () { +if [ ! -f /sbin/halt-init ] +then + mv /sbin/halt /sbin/halt-init + rm -f /sbin/reboot + rm -f /sbin/poweroff +fi + +} + +pre_upgrade () { +if [ ! -f /sbin/halt-init ] +then + mv /sbin/halt /sbin/halt-init + rm -f /sbin/reboot + rm -f /sbin/poweroff +fi + +} + +post_install () { + + mkdir /var/service + servicelist="acpid cron frontend lircd ntpd alsa-utils avahi dbus portmap sshd syslog-ng tty2 tty3" + for i in $servicelist + do + ln -s /etc/sv/$i /var/service/$i + done + + [ -e /sbin/halt ] || ln -s /sbin/halt.script /sbin/halt + [ -e /sbin/reboot ] || ln -s /sbin/reboot.script /sbin/reboot + [ -e /sbin/poweroff ] || ln -s /sbin/poweroff.script /sbin/poweroff + [ -e /sbin/reboot.init ] || ln -s /sbin/halt-init /sbin/reboot.init + [ -e /sbin/poweroff.init ] || ln -s /sbin/halt-init /sbin/poweroff.init + + +} + +# arg 1: the new package version +# arg 2: the old package version + +post_upgrade(){ + + [ -e /sbin/halt ] || ln -s /sbin/halt.script /sbin/halt + [ -e /sbin/reboot ] || ln -s /sbin/reboot.script /sbin/reboot + [ -e /sbin/poweroff ] || ln -s /sbin/poweroff.script /sbin/poweroff + [ -e /sbin/reboot.init ] || ln -s /sbin/halt-init /sbin/reboot.init + [ -e /sbin/poweroff.init ] || ln -s /sbin/halt-init /sbin/poweroff.init +} + +op=$1 +shift + +$op $* diff --git a/abs/core/runit-scripts/runitscripts/1 b/abs/core/runit-scripts/runitscripts/1 new file mode 100755 index 0000000..6e4425d --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/1 @@ -0,0 +1,26 @@ +#!/bin/bash +/etc/rc.sysinit +. /etc/rc.conf +. /etc/rc.d/functions +hostname `cat /etc/hostname` +/sbin/sysctl -p 2>/dev/null >/dev/null +#yes it's needed the 2nd time +/usr/LH/bin/load-modules-mythvantage.sh >/dev/null +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 +stat_busy "Starting network" +/etc/net/scripts/network.init start 2>/var/log/network.init.error >/var/log/network.init +stat_done +/usr/sbin/ethtool -s eth0 wol g 2>/dev/null +/usr/sbin/ethtool -s eth1 wol g 2>/dev/null +/usr/sbin/ethtool -s eth2 wol g 2>/dev/null +#user added stuff for level 1 of runit +if [ -e /etc/runit/1.local ] +then + #exec the file + stat_busy /etc/runit/1.local + /etc/runit/1.local + stat_done +fi + diff --git a/abs/core/runit-scripts/runitscripts/1.local b/abs/core/runit-scripts/runitscripts/1.local new file mode 100755 index 0000000..f79a0c6 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/1.local @@ -0,0 +1,3 @@ +#!/bin/bash +#local user startup script, run at the end of runit 1 + diff --git a/abs/core/runit-scripts/runitscripts/2 b/abs/core/runit-scripts/runitscripts/2 new file mode 100755 index 0000000..079b644 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/2 @@ -0,0 +1,8 @@ +#!/bin/sh + +PATH=/bin:/sbin:/usr/bin:/usr/sbin + +#runsvchdir default >/dev/null + +exec env - PATH=$PATH \ +runsvdir -P /var/service 'log: ...........................................................................................................................................................................................................................................................................................................................................................................................................' diff --git a/abs/core/runit-scripts/runitscripts/3 b/abs/core/runit-scripts/runitscripts/3 new file mode 100755 index 0000000..50b3e92 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/3 @@ -0,0 +1,12 @@ +#!/bin/sh +for i in `seq 30` +do + echo " " > /dev/tty1 +done +if [ -f /lib/splash/cache/daemon.pid ] +then + pid=`cat /lib/splash/cache/daemon.pid` + kill -9 $pid 2>/dev/null +fi +export PREVLEVEL=3 +/etc/rc.shutdown diff --git a/abs/core/runit-scripts/runitscripts/ctrlaltdel b/abs/core/runit-scripts/runitscripts/ctrlaltdel new file mode 100755 index 0000000..30c317b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/ctrlaltdel @@ -0,0 +1,4 @@ +#!/bin/sh + +PATH=/bin:/usr/bin +/sbin/reboot diff --git a/abs/core/runit-scripts/runitscripts/ctrlaltdel.off b/abs/core/runit-scripts/runitscripts/ctrlaltdel.off new file mode 100755 index 0000000..2550d3c --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/ctrlaltdel.off @@ -0,0 +1,9 @@ +#!/bin/sh + +PATH=/bin:/usr/bin +MSG="System is going down in 10 seconds..." + +# echo 'disabled.' ; exit +touch /etc/runit/stopit +chmod 100 /etc/runit/stopit && echo "$MSG" | wall +/bin/sleep 10 diff --git a/abs/core/runit-scripts/runitscripts/halt-runit b/abs/core/runit-scripts/runitscripts/halt-runit new file mode 100755 index 0000000..b7d9a95 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/halt-runit @@ -0,0 +1,3 @@ +#!/bin/sh +wall "System will shutdown NOW" +runit-init 0 diff --git a/abs/core/runit-scripts/runitscripts/logger b/abs/core/runit-scripts/runitscripts/logger new file mode 100755 index 0000000..6888f6f --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/logger @@ -0,0 +1,11 @@ +#!/bin/sh + +svname=$( cd .. && basename $( pwd ) ) +if [ ! -d /var/log/$svname ] +then + mkdir /var/log/$svname + chown root.root /var/log/$svname + chmod 700 /var/log/$svname +fi + +exec /sbin/svlogd -tt /var/log/$svname diff --git a/abs/core/runit-scripts/runitscripts/reboot-runit b/abs/core/runit-scripts/runitscripts/reboot-runit new file mode 100755 index 0000000..0d3d9d4 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/reboot-runit @@ -0,0 +1,3 @@ +#!/bin/sh +wall "System will reboot NOW" +runit-init 6 diff --git a/abs/core/runit-scripts/runitscripts/services/Xvfb/finish b/abs/core/runit-scripts/runitscripts/services/Xvfb/finish new file mode 100755 index 0000000..14cd831 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/Xvfb/finish @@ -0,0 +1,12 @@ +#!/bin/bash +. /etc/profile +VIRTUAL_DISPLAY=":50" +Xvfb_parm="$VIRTUAL_DISPLAY -screen 0 800x600x16" +pid=`ps -eaf | grep Xvfb | grep $VIRTUAL_DISPLAY | awk '{print $2}'` + if [ $pid ] + then + kill -9 $pid +# echo $pid +fi +rm -f /tmp/.X${VIRTUAL_DISPLAY}-lock + diff --git a/abs/core/runit-scripts/runitscripts/services/Xvfb/run b/abs/core/runit-scripts/runitscripts/services/Xvfb/run new file mode 100755 index 0000000..71ffedd --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/Xvfb/run @@ -0,0 +1,11 @@ +#!/bin/bash +. /etc/profile +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting XVFB" + + +VIRTUAL_DISPLAY=":50" +Xvfb_parm="$VIRTUAL_DISPLAY -screen 0 800x600x16" +Xvfb $Xvfb_parm diff --git a/abs/core/runit-scripts/runitscripts/services/acpid/log/run b/abs/core/runit-scripts/runitscripts/services/acpid/log/run new file mode 100755 index 0000000..20c892e --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/acpid/log/run @@ -0,0 +1,8 @@ +#!/bin/sh +exec 2>&1 +#export TERM=linux +#. /etc/rc.conf +#. /etc/rc.d/functions +#stat_runit "Starting MythBackend logger" +/usr/bin/logger -p info -t acpid + diff --git a/abs/core/runit-scripts/runitscripts/services/acpid/run b/abs/core/runit-scripts/runitscripts/services/acpid/run new file mode 100755 index 0000000..bffb564 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/acpid/run @@ -0,0 +1,7 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting acpid" +exec /usr/sbin/acpid -f -c /etc/acpi/events diff --git a/abs/core/runit-scripts/runitscripts/services/alsa-utils/finish b/abs/core/runit-scripts/runitscripts/services/alsa-utils/finish new file mode 100755 index 0000000..d6f3897 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/alsa-utils/finish @@ -0,0 +1,3 @@ +#!/bin/sh +exec 2>&1 +sv down alsa-utils diff --git a/abs/core/runit-scripts/runitscripts/services/alsa-utils/run b/abs/core/runit-scripts/runitscripts/services/alsa-utils/run new file mode 100755 index 0000000..17f5f99 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/alsa-utils/run @@ -0,0 +1,3 @@ +#!/bin/sh +exec 2>&1 +exec /etc/rc.d/alsa start diff --git a/abs/core/runit-scripts/runitscripts/services/apache/run b/abs/core/runit-scripts/runitscripts/services/apache/run new file mode 100755 index 0000000..95d5cc4 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/apache/run @@ -0,0 +1,8 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Apache" + + +exec /usr/local/apache/bin/httpd -DNO_DETACH diff --git a/abs/core/runit-scripts/runitscripts/services/avahi/run b/abs/core/runit-scripts/runitscripts/services/avahi/run new file mode 100755 index 0000000..b9b4905 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/avahi/run @@ -0,0 +1,10 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Avahi" + + +exec /usr/sbin/avahi-daemon >/dev/null 2>/dev/null + diff --git a/abs/core/runit-scripts/runitscripts/services/cron/run b/abs/core/runit-scripts/runitscripts/services/cron/run new file mode 100755 index 0000000..0894236 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/cron/run @@ -0,0 +1,9 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Cron" + + +exec 2>&1 +exec /usr/sbin/crond -f >/dev/null 2>/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/dbus/run b/abs/core/runit-scripts/runitscripts/services/dbus/run new file mode 100755 index 0000000..a9af150 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/dbus/run @@ -0,0 +1,9 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting dbus" + + +exec /usr/bin/dbus-daemon --system --nofork 2>/dev/null >/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/dhcpd/run b/abs/core/runit-scripts/runitscripts/services/dhcpd/run new file mode 100755 index 0000000..38ae40a --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/dhcpd/run @@ -0,0 +1,8 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting dhcpd" + + +exec /usr/sbin/dhcpd -f &> /var/log/dhcpd.log diff --git a/abs/core/runit-scripts/runitscripts/services/dnsmasq/run b/abs/core/runit-scripts/runitscripts/services/dnsmasq/run new file mode 100755 index 0000000..f14c51a --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/dnsmasq/run @@ -0,0 +1,10 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting dns services" + + +exec /usr/sbin/dnsmasq -k >/dev/null 2>/dev/null + diff --git a/abs/core/runit-scripts/runitscripts/services/evrouter/finish b/abs/core/runit-scripts/runitscripts/services/evrouter/finish new file mode 100755 index 0000000..5ebda4c --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/evrouter/finish @@ -0,0 +1,10 @@ +#!/bin/bash +. /etc/profile +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/runit-scripts/runitscripts/services/evrouter/run b/abs/core/runit-scripts/runitscripts/services/evrouter/run new file mode 100755 index 0000000..56f7ae6 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/evrouter/run @@ -0,0 +1,20 @@ +#!/bin/bash +. /etc/profile +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +which evrouter >/dev/null 2>/dev/null +if [ $? = 0 ] +then + + stat_runit "Starting evrouter" + 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/runit-scripts/runitscripts/services/frontend/finish b/abs/core/runit-scripts/runitscripts/services/frontend/finish new file mode 100755 index 0000000..5b0bd5b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/frontend/finish @@ -0,0 +1,28 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +grep -q nox /proc/cmdline +STATUS=$? + if [ $STATUS = 0 ] + then + chvt 2 +else + if [ ! -d /etc/sv/frontend/.runtime ] + then + mkdir -p /etc/sv/frontend/.runtime + fi + touch /etc/sv/frontend/.runtime/`date +%s` + sleep 0.2 + ps -U mythtv -ef |grep "/bin/sh /usr/bin/startx"|grep -v grep|awk ' { print $2 } '|xargs kill -9 2> /dev/null + cdate=`date` + numfiles=`/usr/bin/file_time_offset.py -s10 -d/etc/sv/frontend/.runtime` + if [ $numfiles -gt 2 ] + then + sv stop frontend + rm -f /etc/sv/frontend/.runtime/* + printhl " Frontend is not able to start, disabling it." + fi +fi diff --git a/abs/core/runit-scripts/runitscripts/services/frontend/log/run b/abs/core/runit-scripts/runitscripts/services/frontend/log/run new file mode 100755 index 0000000..463045f --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/frontend/log/run @@ -0,0 +1,5 @@ +#!/bin/sh +exec 2>&1 +. /etc/systemconfig + /usr/bin/logger -p local6.info -t mythfrontend + diff --git a/abs/core/runit-scripts/runitscripts/services/frontend/run b/abs/core/runit-scripts/runitscripts/services/frontend/run new file mode 100755 index 0000000..c1e2f2d --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/frontend/run @@ -0,0 +1,21 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +exec 2>&1 + grep -qi nox /proc/cmdline + STATUS=$? + if [ $STATUS = 0 ] + then + sv down frontend + exit 0 + fi +touch /var/log/fluxbox.log +chown mythtv:mythtv /var/log/fluxbox.log + +stat_runit "Starting LinHES frontend" + +#echo "Starting LinHES frontend" >/dev/tty1 +exec /bin/su - mythtv -l -c /usr/LH/bin/LinHES-start + diff --git a/abs/core/runit-scripts/runitscripts/services/gpm/run b/abs/core/runit-scripts/runitscripts/services/gpm/run new file mode 100755 index 0000000..c347c77 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/gpm/run @@ -0,0 +1,10 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting GPM" + + +. /etc/sysconfig/mouse +exec gpm -D -m $MDEVICE -t $PROTOCOL diff --git a/abs/core/runit-scripts/runitscripts/services/hal/run b/abs/core/runit-scripts/runitscripts/services/hal/run new file mode 100755 index 0000000..a6d5c0e --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/hal/run @@ -0,0 +1,8 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +svwaitup dbus 2>/dev/null 1>/dev/null +stat_runit "Starting Hal" +exec /usr/sbin/hald --daemon=no --use-syslog 2>/dev/null >/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/hobbit-client/run b/abs/core/runit-scripts/runitscripts/services/hobbit-client/run new file mode 100755 index 0000000..a28c6f8 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/hobbit-client/run @@ -0,0 +1,74 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting hobbit client" + +#----------------------------------------------------------------------------# +# Hobbit client bootup script. # +# # +# This invokes hobbitlaunch, which in turn runs the Hobbit client and any # +# extensions configured. # +# # +# Copyright (C) 2005-2006 Henrik Storner # +# "status" section (C) Scott Smith 2006 # +# # +# This program is released under the GNU General Public License (GPL), # +# version 2. See the file "COPYING" for details. # +# # +#----------------------------------------------------------------------------# +# +# $Id: runclient.sh,v 1.13 2006/07/14 21:25:19 henrik Rel $ + +# Default settings for this client +MACHINEDOTS="`uname -n`" # This systems hostname +BBOSTYPE="`uname -s | tr '[A-Z]' '[a-z]'`" # This systems operating system in lowercase +BBOSSCRIPT="hobbitclient-$BBOSTYPE.sh" + +# Commandline mods for the defaults +while test "$1" != "" +do + case "$1" in + --hostname=*) + MACHINEDOTS="`echo $1 | sed -e 's/--hostname=//'`" + ;; + --os=*) + BBOSTYPE="`echo $1 | sed -e 's/--os=//' | tr '[A-Z]' '[a-z]'`" + ;; + --class=*) + CONFIGCLASS="`echo $1 | sed -e 's/--class=//' | tr '[A-Z]' '[a-z]'`" + ;; + --help) + echo "Usage: $0 [--hostname=CLIENTNAME] [--os=rhel3|linux22] [--class=CLASSNAME] start|stop" + exit 0 + ;; + start) + CMD=$1 + ;; + stop) + CMD=$1 + ;; + restart) + CMD=$1 + ;; + status) + CMD=$1 + ;; + esac + + shift +done + +OLDDIR="`pwd`" +cd "`dirname $0`" +HOBBITCLIENTHOME="/data/srv/hobbit/client" +cd "$OLDDIR" + +MACHINE="`echo $MACHINEDOTS | sed -e 's/\./,/g'`" + +export MACHINE MACHINEDOTS BBOSTYPE BBOSSCRIPT HOBBITCLIENTHOME CONFIGCLASS + + + +su nobody -c "$HOBBITCLIENTHOME/bin/hobbitlaunch --config=$HOBBITCLIENTHOME/etc/clientlaunch.cfg --log=$HOBBITCLIENTHOME/logs/clientlaunch.log --pidfile=$HOBBITCLIENTHOME/logs/clientlaunch.$MACHINEDOTS.pid --no-daemon" + diff --git a/abs/core/runit-scripts/runitscripts/services/hobbit/run b/abs/core/runit-scripts/runitscripts/services/hobbit/run new file mode 100755 index 0000000..d36243b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/hobbit/run @@ -0,0 +1,9 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting hobbit server" + + +exec su nobody -c "/data/srv/hobbit/server/bin/hobbitlaunch --config=/data/srv/hobbit/server/etc/hobbitlaunch.cfg --env=/data/srv/hobbit/server/etc/hobbitserver.cfg --log=/var/log/hobbit/hobbitlaunch.log --pidfile=/var/log/hobbit/hobbitlaunch.pid --no-daemon" diff --git a/abs/core/runit-scripts/runitscripts/services/igdaemon/run b/abs/core/runit-scripts/runitscripts/services/igdaemon/run new file mode 100755 index 0000000..ea4f33b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/igdaemon/run @@ -0,0 +1,9 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting IguanaWorks IR daemon" + + +exec /usr/bin/igdaemon --no-ids -n -l /var/log/igdaemon.log diff --git a/abs/core/runit-scripts/runitscripts/services/lcdd/run b/abs/core/runit-scripts/runitscripts/services/lcdd/run new file mode 100755 index 0000000..da2258b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/lcdd/run @@ -0,0 +1,15 @@ +#!/bin/sh +. /etc/systemconfig +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting lcdproc" + + +exec 2>&1 +if [ x$LCDtype = xxosd ] +then + DISPLAY=127.0.0.1:0 /usr/sbin/LCDd -f -c /etc/LCDd.conf 2>/dev/null >/dev/null +else + exec /usr/sbin/LCDd -f -c /etc/LCDd.conf 2>/dev/null >/dev/null +fi diff --git a/abs/core/runit-scripts/runitscripts/services/lighttpd/run b/abs/core/runit-scripts/runitscripts/services/lighttpd/run new file mode 100755 index 0000000..798690c --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/lighttpd/run @@ -0,0 +1,8 @@ +#!/bin/bash +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting lighttpd" + + +exec /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf diff --git a/abs/core/runit-scripts/runitscripts/services/lircd/finish b/abs/core/runit-scripts/runitscripts/services/lircd/finish new file mode 100755 index 0000000..1afc41c --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/lircd/finish @@ -0,0 +1,16 @@ +#!/bin/bash +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +killall -9 lircd 2>/dev/null +rm -f /var/run/lirc*.pid +[ -e /etc/sv/lircd/.runtime ] || mkdir -p /etc/sv/lircd/.runtime +touch /etc/sv/lircd/.runtime/`date +%s` +numfiles=`/usr/bin/file_time_offset.py -s4 -d/etc/sv/lircd/.runtime ` +if [ $numfiles -gt 3 ] +then + rm -f /etc/sv/lircd/.runtime/* 2>/dev/null + sv stop lircd + printhl " lircd is not able to start, disabling it" +fi diff --git a/abs/core/runit-scripts/runitscripts/services/lircd/run b/abs/core/runit-scripts/runitscripts/services/lircd/run new file mode 100755 index 0000000..0a398ac --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/lircd/run @@ -0,0 +1,138 @@ +#!/bin/bash + +exec 2>&1 +export TERM=linux + +. /etc/rc.conf +. /etc/rc.d/functions + +#since what we do may not be enough +#if your one of those people, this is where you place your stuff + +LOG=/tmp/lirc.log + +if [ -f $LOG ] +then + rm -f $LOG +fi + +if [ -f /etc/runit/lirc.sh ] +then + #program must not terminate. + + stat_runit "Starting lirc" + + /etc/runit/lirc.sh +else + . /etc/systemconfig + stat_runit "Starting lirc" + + [ -e /etc/sv/lircd/.runtime ] || mkdir -p /etc/sv/lircd/.runtime + + function dvico_detect { + if [ x$Remotetype = "xdvico" ] || [ x$Remotetype = "xDvico-Dual-Digital4-rev2" ] + then + RunDvico=true + else + RunDvico=false + fi + } + + num_lirc=`ls -la /dev/lirc[0-9] 2>/dev/null |wc -l ` + num_lirc=$((num_lirc-1)) + + serial_port="" + + if [ x$ReceiverType = xSerial ] + then + serial_port=$ReceiverSerialport + elif [ x$HostBlasterType = xSerial ] + then + serial_port=$HostSerialPort_blasterlirc + fi + + if [ -n "$serial_port" ] + then + #/dev/ttyS0 (COM1), port 0x3f8, irq 4 + #/dev/ttyS1 (COM2), port 0x2f8, irq 3 + #/dev/ttyS2 (COM3), port 0x3e8, irq 4 + #/dev/ttyS3 (COM4), port 0x2e8, irq 3 + + case $serial_port in + ttyS0) + FLAGS="io=0x3f8 irq=4" + ;; + ttyS1) + FLAGS="io=0x2f8 irq=3" + ;; + ttyS2) + FLAGS="io=0x3e8 irq=4" + ;; + ttyS3) + FLAGS="io=0x2e8 irq=3" + ;; + esac + /usr/bin/setserial /dev/serial_port uart none + sleep 0.5 + /sbin/modprobe lirc_serial $FLAGS + sleep 0.5 + fi + + dvico_detect + + if [ x$HostBlasterType = xCommandIR -o x$ReceiverType = xCommandIR ] + then + CMD="/usr/sbin/lircd -n --driver=commandir" + printhl " Using commandir" + $CMD >>$LOG 2>>$LOG +#echo $CMD + elif [ x$HostBlasterType = xiguanaIR-usb -o x$ReceiverType = xiguanaIR-usb ] + then + sv start igdaemon + CMD="/usr/sbin/lircd -n --driver=iguanaIR" + printhl " Using iguanaIR usb" +#echo $CMD + $CMD >>$LOG 2>>$LOG + else + LASTCMD="" + + for i in `seq 1 $num_lirc` + do + CMD="/usr/sbin/lircd -d /dev/lirc$i --output=/dev/lircd$i --pidfile=/var/run/lircd$i.pid --listen=876$i" + printhl " Device $i" +#echo $CMD + $CMD >>$LOG 2>>$LOG + LASTCMD="--connect=localhost:876$i $LASTCMD " + done + + if [ $RunDvico = "true" ] + then + if [ x$Remotetype = "xdvico" ] + then + LCMD="/usr/sbin/lircd -n -d /dev/usb/dvicoIR --driver=dvico --output /dev/lircd" + else + LCMD="/usr/sbin/lircd -n -d /dev/input/irremote --driver=devinput --output /dev/lircd" + fi + + if [ $num_lirc -lt 0 ] + then + # Only run Dvico + printhl " Device $Remotetype" +#echo $LCMD + exec $LCMD >>$LOG 2>>$LOG + elif [ $num_lirc -gt -1 ] + then + i=$((i+1)) + CMD="$LCMD --output=/dev/lircd$i --pidfile=/var/run/lircd$i.pid --listen=876$i" + $CMD >> $LOG + LASTCMD="--connect=localhost:876$i $LASTCMD " + printhl " Device Dvico" + /usr/sbin/lircd -n -d /dev/lirc0 --output /dev/lircd $LASTCMD >>$LOG 2>>$LOG + fi + else + LCMD="/usr/sbin/lircd -n -d /dev/lirc0 --output /dev/lircd $LASTCMD" +#echo $LCMD + exec $LCMD >>$LOG 2>>$LOG + fi + fi +fi diff --git a/abs/core/runit-scripts/runitscripts/services/mdadm/finish b/abs/core/runit-scripts/runitscripts/services/mdadm/finish new file mode 100755 index 0000000..92782ba --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/mdadm/finish @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Stop Monitoring software raid arrays +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /sbin/mdadm` + stat_runit "Stopping mdadm RAID Monitor" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon mdadm + stat_done + fi diff --git a/abs/core/runit-scripts/runitscripts/services/mdadm/run b/abs/core/runit-scripts/runitscripts/services/mdadm/run new file mode 100755 index 0000000..0ab432e --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/mdadm/run @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Start Monitoring software raid arrays +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /sbin/mdadm` + stat_runit "Starting mdadm RAID Monitor" + if [ -z "$PID" ]; then + /sbin/mdadm -F -s + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon mdadm + stat_done + fi diff --git a/abs/core/runit-scripts/runitscripts/services/mysql/run b/abs/core/runit-scripts/runitscripts/services/mysql/run new file mode 100755 index 0000000..6b2f95a --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/mysql/run @@ -0,0 +1,34 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Mysql" + +MYSQLD_ROOT="/data/srv/mysql" +# source application-specific settings +[ -f /etc/conf.d/mysqld ] && . /etc/conf.d/mysqld +if [ ! `egrep '^mysql:' /etc/group` ]; then + stat_runit "Adding mysql group" + groupadd -g 89 mysql + +fi +if [ ! `egrep '^mysql:' /etc/passwd` ]; then + stat_runit "Adding mysql user" + useradd -u 89 -g mysql -d $MYSQLD_ROOT -s /bin/false mysql + [ -d $MYSQLD_ROOT ] && chown -R mysql.mysql $MYSQLD_ROOT + +fi + +if [ ! -d $MYSQLD_ROOT ]; then + mkdir -p $MYSQLD_ROOT + /usr/bin/mysql_install_db --datadir=$MYSQLD_ROOT --user=mysql 2>/dev/null 1>/dev/null + chown -R mysql.mysql $MYSQLD_ROOT +fi + +if [ ! -e /var/log/mysqld.log ]; then + touch /var/log/mysqld.log + chown mysql /var/log/mysqld.log +fi + +exec /usr/sbin/mysqld --skip-name-resolve -u mysql 2>/dev/null >/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/mythbackend/log/run b/abs/core/runit-scripts/runitscripts/services/mythbackend/log/run new file mode 100755 index 0000000..17692a7 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/mythbackend/log/run @@ -0,0 +1,8 @@ +#!/bin/sh +exec 2>&1 +#export TERM=linux +#. /etc/rc.conf +#. /etc/rc.d/functions +#stat_runit "Starting MythBackend logger" +/usr/bin/logger -p local7.info -t mythbackend + diff --git a/abs/core/runit-scripts/runitscripts/services/mythbackend/run b/abs/core/runit-scripts/runitscripts/services/mythbackend/run new file mode 100755 index 0000000..48c68d3 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/mythbackend/run @@ -0,0 +1,31 @@ +#!/bin/sh +exec 2>&1 +. /etc/profile +. /etc/systemconfig +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +stat_runit "Starting MythBackend" +export HOME=/root +if [ ! x$SystemType = xSlave_backend ] +then + sv start mysql > /dev/null 2>/dev/null + #run mythfilldatabase + printhl " Running mythfilldatabase" + /usr/MythVantage/bin/initial_db_run & +fi +mkfifo /tmp/mbefifo >/dev/null 2>/dev/null +#echo "Starting mythbackend" +# if [ -f /tmp/debug ] +# then +# echo "using gbd/debug" +# gdb /usr/bin/mythbackend -x $MV_ROOT/mbegdbcommands.txt +# bash -c "osdClient.pl localhost 5000 'Restart gdb mbe :::SYS' "& +# mv gdb.txt /data/home/mythtv/gdb.txt.mythbackend +# chown mythtv:mythtv /data/home/mythtv/gdb.txt.mythbackend +# sleep 10 +# +# else + exec su mythtv -c "/usr/bin/mythbackend --logfile /var/log/mythtv/mythbackend.log" +# fi diff --git a/abs/core/runit-scripts/runitscripts/services/ncid/finish b/abs/core/runit-scripts/runitscripts/services/ncid/finish new file mode 100644 index 0000000..953a4a1 --- /dev/null +++ b/abs/core/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/runit-scripts/runitscripts/services/ncid/run b/abs/core/runit-scripts/runitscripts/services/ncid/run new file mode 100755 index 0000000..44154c7 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/ncid/run @@ -0,0 +1,21 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + + +which ncid 2>/dev/null >/dev/null + +if [ $? = 0 ] +then + if [ -f /var/service/ncidd/run ] + then + sv start ncidd + fi + + stat_runit "Starting callerid client" + + 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/runit-scripts/runitscripts/services/ncidd/finish b/abs/core/runit-scripts/runitscripts/services/ncidd/finish new file mode 100644 index 0000000..ab39d39 --- /dev/null +++ b/abs/core/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/runit-scripts/runitscripts/services/ncidd/run b/abs/core/runit-scripts/runitscripts/services/ncidd/run new file mode 100755 index 0000000..6fff089 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/ncidd/run @@ -0,0 +1,13 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +which ncidd > /dev/null 2>/dev/null +if [ $? = 0 ] +then + stat_runit "Starting CallerID" + + exec /usr/sbin/ncidd -D 2>&1 +fi diff --git a/abs/core/runit-scripts/runitscripts/services/netfs/finish b/abs/core/runit-scripts/runitscripts/services/netfs/finish new file mode 100755 index 0000000..43be94c --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/netfs/finish @@ -0,0 +1,3 @@ +#!/bin/sh +exec 2>&1 +sv down netfs diff --git a/abs/core/runit-scripts/runitscripts/services/netfs/run b/abs/core/runit-scripts/runitscripts/services/netfs/run new file mode 100755 index 0000000..28388b9 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/netfs/run @@ -0,0 +1,6 @@ +#!/bin/sh +exec 2>&1 +sv start portmap +sv start nfslock +/etc/rc.d/netfs start + diff --git a/abs/core/runit-scripts/runitscripts/services/nfsd/run b/abs/core/runit-scripts/runitscripts/services/nfsd/run new file mode 100755 index 0000000..207d7cd --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/nfsd/run @@ -0,0 +1,29 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting NFSD" + +# Make sure the statd daemon is up +# (the statd service must ensure portmap is running first) +svwaitup /var/service/nfslock >/dev/null 2>/dev/null + +source /etc/conf.d/nfs + +# Re-export all directories in /etc/exports +/usr/sbin/exportfs -ra > /dev/null 2>/dev/null + +# start some nfsd threads +printhl " Using ${NFSD_OPTS} " +/usr/sbin/rpc.nfsd ${NFSD_OPTS} >/dev/null 2>/dev/null + +# since we are running kernel 2.6 we should also +# mount the nfsd virtual filesystem +printhl " mount nfsd" +/bin/mount -t nfsd none /proc/fs/nfsd >/dev/null 2>/dev/null + +# Start the rpc.mountd daemon + +exec /usr/sbin/rpc.mountd --foreground >/dev/null 2>/dev/null + diff --git a/abs/core/runit-scripts/runitscripts/services/nfslock/run b/abs/core/runit-scripts/runitscripts/services/nfslock/run new file mode 100755 index 0000000..8d627ad --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/nfslock/run @@ -0,0 +1,8 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting NFSlock" +svwaitup portmap >/dev/null 2>/dev/null +/usr/sbin/rpc.statd -F >/dev/null 2>/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/nmbd/run b/abs/core/runit-scripts/runitscripts/services/nmbd/run new file mode 100755 index 0000000..9ed032b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/nmbd/run @@ -0,0 +1,9 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting NMBD" + + +exec nmbd -F -S -d1 2>/dev/null >/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/ntpd/run b/abs/core/runit-scripts/runitscripts/services/ntpd/run new file mode 100755 index 0000000..146c4e0 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/ntpd/run @@ -0,0 +1,10 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting NTPD" +printhl " Fetching time" +msg=`/usr/bin/ntpdate pool.ntp.org ` +printhl " $msg" + +exec /usr/bin/ntpd -n -p /var/run/ntpd.pid 2>/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/oss/finish b/abs/core/runit-scripts/runitscripts/services/oss/finish new file mode 100755 index 0000000..f929f39 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/oss/finish @@ -0,0 +1,4 @@ +#!/bin/sh +exec 2>&1 +sv down oss + diff --git a/abs/core/runit-scripts/runitscripts/services/oss/run b/abs/core/runit-scripts/runitscripts/services/oss/run new file mode 100755 index 0000000..815a34e --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/oss/run @@ -0,0 +1,12 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting OSS" + + +rm -f /usr/lib/oss/starting +#exec /etc/rc.d/alsa-utils start all +exec /usr/sbin/soundon + diff --git a/abs/core/runit-scripts/runitscripts/services/portmap/run b/abs/core/runit-scripts/runitscripts/services/portmap/run new file mode 100755 index 0000000..9e708e6 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/portmap/run @@ -0,0 +1,7 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting portmap" +exec /sbin/portmap -d >/dev/null 2>/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/smartd/finish b/abs/core/runit-scripts/runitscripts/services/smartd/finish new file mode 100755 index 0000000..7b77994 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/smartd/finish @@ -0,0 +1,9 @@ +#!/bin/bash + + . /etc/rc.conf + . /etc/rc.d/functions + + stat_runit "Stopping smartd" + kill -9 `pidof /usr/sbin/smartd` &>/dev/null + rm_daemon smartd + stat_done diff --git a/abs/core/runit-scripts/runitscripts/services/smartd/run b/abs/core/runit-scripts/runitscripts/services/smartd/run new file mode 100755 index 0000000..15ed769 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/smartd/run @@ -0,0 +1,13 @@ +#!/bin/bash + + . /etc/rc.conf + . /etc/rc.d/functions + + stat_runit "Starting smartd" + /usr/sbin/smartd -n -c /etc/smartd.conf -q never &>/dev/null + if [ $? -ne 0 ]; then + stat_fail + else + add_daemon smartd + stat_done + fi diff --git a/abs/core/runit-scripts/runitscripts/services/smbd/run b/abs/core/runit-scripts/runitscripts/services/smbd/run new file mode 100755 index 0000000..b4a545b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/smbd/run @@ -0,0 +1,9 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Samba" + + +exec smbd -F -S -d3 2>/dev/null >/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/sshd/run b/abs/core/runit-scripts/runitscripts/services/sshd/run new file mode 100755 index 0000000..fc22e3b --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/sshd/run @@ -0,0 +1,13 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting SSH" + +[ -f /etc/ssh/ssh_host_key ] || { /usr/bin/ssh-keygen -t rsa1 -N "" -f /etc/ssh/ssh_host_key >/dev/null; } + [ -f /etc/ssh/ssh_host_rsa_key ] || { /usr/bin/ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key >/dev/null; } + [ -f /etc/ssh/ssh_host_dsa_key ] || { /usr/bin/ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key >/dev/null; } + + +exec /usr/sbin/sshd -D >/dev/null 2>/dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/syslog-ng/run b/abs/core/runit-scripts/runitscripts/services/syslog-ng/run new file mode 100755 index 0000000..8633a77 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/syslog-ng/run @@ -0,0 +1,10 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting syslog" + + +exec /usr/sbin/syslog-ng -F + diff --git a/abs/core/runit-scripts/runitscripts/services/tatir/run b/abs/core/runit-scripts/runitscripts/services/tatir/run new file mode 100755 index 0000000..d6fc863 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/tatir/run @@ -0,0 +1,9 @@ +#!/bin/sh +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting tatir" + + +exec /usr/bin/PyroUsb.py > /dev/null diff --git a/abs/core/runit-scripts/runitscripts/services/tftpd/run b/abs/core/runit-scripts/runitscripts/services/tftpd/run new file mode 100755 index 0000000..8f742ca --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/tftpd/run @@ -0,0 +1,8 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting tftpd" + + +exec /usr/sbin/in.tftpd --foreground -s /tftpboot diff --git a/abs/core/runit-scripts/runitscripts/services/tty2/run b/abs/core/runit-scripts/runitscripts/services/tty2/run new file mode 100755 index 0000000..8db2924 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/tty2/run @@ -0,0 +1,7 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Agetty 2" + +exec /sbin/agetty 38400 vc/2 linux diff --git a/abs/core/runit-scripts/runitscripts/services/tty3/run b/abs/core/runit-scripts/runitscripts/services/tty3/run new file mode 100755 index 0000000..bdbec66 --- /dev/null +++ b/abs/core/runit-scripts/runitscripts/services/tty3/run @@ -0,0 +1,6 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting Agetty 3" +exec /sbin/agetty 38400 vc/3 linux diff --git a/abs/core/runit/PKGBUILD b/abs/core/runit/PKGBUILD index 4065ae6..90bb57e2 100755 --- a/abs/core/runit/PKGBUILD +++ b/abs/core/runit/PKGBUILD @@ -1,6 +1,6 @@ pkgname=runit pkgver=1.8.0 -pkgrel=51 +pkgrel=62 pkgdesc="A replacement for sysvinit, and other init schemes, with service supervision" url="http://smarden.org/runit/" license="BSD" @@ -10,7 +10,7 @@ conflicts=() replaces=() backup=() install=runit.install -source=(http://smarden.org/runit/$pkgname-$pkgver.tar.gz add_service.sh remove_service.sh halt.script reboot.script poweroff.script) +source=(http://smarden.org/runit/$pkgname-$pkgver.tar.gz add_service.sh remove_service.sh halt.script reboot.script poweroff.script shutdown.script) arch=('i686') build() { @@ -34,36 +34,33 @@ build() { install -m0755 $startdir/src/remove_service.sh $startdir/pkg/sbin install -m0755 $startdir/src/reboot.script $startdir/pkg/sbin install -m0755 $startdir/src/halt.script $startdir/pkg/sbin -install -m0755 $startdir/src/poweroff.script $startdir/pkg/sbin + install -m0755 $startdir/src/poweroff.script $startdir/pkg/sbin + install -m0755 $startdir/src/shutdown.script $startdir/pkg/sbin for i in `cat ../package/commands`; do install -m0755 $i $startdir/pkg/sbin/ done + install -m0755 svwaitup $startdir/pkg/sbin/ install -m0755 svwaitdown $startdir/pkg/sbin/ install -m0644 ../man/*.8 $startdir/pkg/usr/man/man8 - rsync -a --exclude=.svn $startdir/runitscripts $startdir/src - #cp -rp $startdir/runitscripts $startdir/src/ - cd $startdir/src/runitscripts +# rsync -a --exclude=.svn $startdir/runitscripts $startdir/src +# cd $startdir/src/runitscripts install -d $startdir/pkg/etc/ install -d $startdir/pkg/etc/runit/ install -d $startdir/pkg/var/service - #install -d $startdir/pkg/etc/runit/runsvdir - #install -d $startdir/pkg/etc/runit/runsvdir/default - #ln -s default $startdir/pkg/etc/runit/runsvdir/current - install -m0700 1 2 3 ctrlaltdel $startdir/pkg/etc/runit +# install -m0700 1 2 3 ctrlaltdel $startdir/pkg/etc/runit +# install -m0755 reboot-runit halt-runit logger $startdir/pkg/sbin - install -m0755 reboot-runit halt-runit logger $startdir/pkg/sbin + # install -d $startdir/pkg/etc/sv + # rsync -a --exclude=.svn services/* $startdir/pkg/etc/sv - install -d $startdir/pkg/etc/sv - rsync -a --exclude=.svn services/* $startdir/pkg/etc/sv - #cp -R services/* $startdir/pkg/etc/sv cd $startdir install -d $startdir/pkg/usr/bin - install -m0755 fbd $startdir/pkg/usr/bin/fbd + } diff --git a/abs/core/runit/runit.install b/abs/core/runit/runit.install index 4652368..1728bc6 100755 --- a/abs/core/runit/runit.install +++ b/abs/core/runit/runit.install @@ -4,9 +4,10 @@ pre_install () { if [ ! -f /sbin/halt-init ] then mv /sbin/halt /sbin/halt-init + mv /sbin/shutdown /sbin/shutdown-init +fi rm -f /sbin/reboot rm -f /sbin/poweroff -fi } @@ -14,41 +15,32 @@ pre_upgrade () { if [ ! -f /sbin/halt-init ] then mv /sbin/halt /sbin/halt-init +fi + +if [ ! -f /sbin/shutdown-init ] +then + mv /sbin/shutdown /sbin/shutdown-init +fi rm -f /sbin/reboot rm -f /sbin/poweroff -fi } post_install () { - - mkdir /var/service - ln -s /etc/sv/tty* /var/service - servicelist="acpid cron frontend lircd ntpd alsa-utils avahi dbus portmap sshd" - for i in $servicelist - do - ln -s /etc/sv/$i /var/service/$i - done - - ln -s /sbin/halt.script /sbin/halt - ln -s /sbin/reboot.script /sbin/reboot - ln -s /sbin/poweroff.script /sbin/poweroff - ln -s /sbin/halt-init /sbin/reboot.init - ln -s /sbin/halt-init /sbin/poweroff.init - - + mkdir /var/service + [ -e /sbin/halt ] || ln -s /sbin/halt.script /sbin/halt + [ -e /sbin/reboot ] || ln -s /sbin/reboot.script /sbin/reboot + [ -e /sbin/poweroff ] || ln -s /sbin/poweroff.script /sbin/poweroff + [ -e /sbin/reboot.init ] || ln -s /sbin/halt-init /sbin/reboot.init + [ -e /sbin/poweroff.init ] || ln -s /sbin/halt-init /sbin/poweroff.init + [ -e /sbin/shutdown ] || ln -s /sbin/shutdown.script /sbin/shutdown } # arg 1: the new package version # arg 2: the old package version post_upgrade(){ - ln -s /sbin/halt.script /sbin/halt - ln -s /sbin/reboot.script /sbin/reboot - ln -s /sbin/poweroff.script /sbin/poweroff - ln -s /sbin/halt-init /sbin/reboot.init - ln -s /sbin/halt-init /sbin/poweroff.init - + /bin/true } op=$1 diff --git a/abs/core/runit/runitscripts/1 b/abs/core/runit/runitscripts/1 deleted file mode 100755 index 748930f..0000000 --- a/abs/core/runit/runitscripts/1 +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -/etc/rc.sysinit -hostname `cat /etc/hostname` -/sbin/sysctl -p 2>/dev/null >/dev/null -#/usr/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 -/etc/net/scripts/network.init start 2>/var/log/network.init.error >/var/log/network.init -/usr/sbin/ethtool -s eth0 wol g 2>/dev/null -/usr/sbin/ethtool -s eth1 wol g 2>/dev/null -/usr/sbin/ethtool -s eth2 wol g 2>/dev/null - -#/bin/su mythtv -c /usr/bin/grabkey.py 2>/dev/null 1>/devn/null & diff --git a/abs/core/runit/runitscripts/2 b/abs/core/runit/runitscripts/2 deleted file mode 100755 index 079b644..0000000 --- a/abs/core/runit/runitscripts/2 +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -PATH=/bin:/sbin:/usr/bin:/usr/sbin - -#runsvchdir default >/dev/null - -exec env - PATH=$PATH \ -runsvdir -P /var/service 'log: ...........................................................................................................................................................................................................................................................................................................................................................................................................' diff --git a/abs/core/runit/runitscripts/3 b/abs/core/runit/runitscripts/3 deleted file mode 100755 index 0fa3abc..0000000 --- a/abs/core/runit/runitscripts/3 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# -export PREVLEVEL=3 -/etc/rc.shutdown diff --git a/abs/core/runit/runitscripts/ctrlaltdel b/abs/core/runit/runitscripts/ctrlaltdel deleted file mode 100755 index 2550d3c..0000000 --- a/abs/core/runit/runitscripts/ctrlaltdel +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -PATH=/bin:/usr/bin -MSG="System is going down in 10 seconds..." - -# echo 'disabled.' ; exit -touch /etc/runit/stopit -chmod 100 /etc/runit/stopit && echo "$MSG" | wall -/bin/sleep 10 diff --git a/abs/core/runit/runitscripts/halt-runit b/abs/core/runit/runitscripts/halt-runit deleted file mode 100755 index 7c07b05..0000000 --- a/abs/core/runit/runitscripts/halt-runit +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -runit-init 0 diff --git a/abs/core/runit/runitscripts/logger b/abs/core/runit/runitscripts/logger deleted file mode 100755 index 6888f6f..0000000 --- a/abs/core/runit/runitscripts/logger +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -svname=$( cd .. && basename $( pwd ) ) -if [ ! -d /var/log/$svname ] -then - mkdir /var/log/$svname - chown root.root /var/log/$svname - chmod 700 /var/log/$svname -fi - -exec /sbin/svlogd -tt /var/log/$svname diff --git a/abs/core/runit/runitscripts/reboot-runit b/abs/core/runit/runitscripts/reboot-runit deleted file mode 100755 index be831ec..0000000 --- a/abs/core/runit/runitscripts/reboot-runit +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -runit-init 6 diff --git a/abs/core/runit/runitscripts/services/Xvfb/finish b/abs/core/runit/runitscripts/services/Xvfb/finish deleted file mode 100755 index 14cd831..0000000 --- a/abs/core/runit/runitscripts/services/Xvfb/finish +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -. /etc/profile -VIRTUAL_DISPLAY=":50" -Xvfb_parm="$VIRTUAL_DISPLAY -screen 0 800x600x16" -pid=`ps -eaf | grep Xvfb | grep $VIRTUAL_DISPLAY | awk '{print $2}'` - if [ $pid ] - then - kill -9 $pid -# echo $pid -fi -rm -f /tmp/.X${VIRTUAL_DISPLAY}-lock - diff --git a/abs/core/runit/runitscripts/services/Xvfb/run b/abs/core/runit/runitscripts/services/Xvfb/run deleted file mode 100755 index 823916d..0000000 --- a/abs/core/runit/runitscripts/services/Xvfb/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -. /etc/profile -VIRTUAL_DISPLAY=":50" -Xvfb_parm="$VIRTUAL_DISPLAY -screen 0 800x600x16" -Xvfb $Xvfb_parm diff --git a/abs/core/runit/runitscripts/services/acpid/run b/abs/core/runit/runitscripts/services/acpid/run deleted file mode 100755 index daf9859..0000000 --- a/abs/core/runit/runitscripts/services/acpid/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/sbin/acpid -f -c /etc/acpi/events 2>/dev/null >/dev/null diff --git a/abs/core/runit/runitscripts/services/alsa-utils/finish b/abs/core/runit/runitscripts/services/alsa-utils/finish deleted file mode 100755 index d6f3897..0000000 --- a/abs/core/runit/runitscripts/services/alsa-utils/finish +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -sv down alsa-utils diff --git a/abs/core/runit/runitscripts/services/alsa-utils/run b/abs/core/runit/runitscripts/services/alsa-utils/run deleted file mode 100755 index 17f5f99..0000000 --- a/abs/core/runit/runitscripts/services/alsa-utils/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /etc/rc.d/alsa start diff --git a/abs/core/runit/runitscripts/services/apache/run b/abs/core/runit/runitscripts/services/apache/run deleted file mode 100755 index 130d870..0000000 --- a/abs/core/runit/runitscripts/services/apache/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec /usr/local/apache/bin/httpd -DNO_DETACH diff --git a/abs/core/runit/runitscripts/services/avahi/run b/abs/core/runit/runitscripts/services/avahi/run deleted file mode 100755 index 323d242..0000000 --- a/abs/core/runit/runitscripts/services/avahi/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/sbin/avahi-daemon >/dev/null 2>/dev/null - diff --git a/abs/core/runit/runitscripts/services/cron/run b/abs/core/runit/runitscripts/services/cron/run deleted file mode 100755 index 99dc014..0000000 --- a/abs/core/runit/runitscripts/services/cron/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/sbin/crond -f >/dev/null 2>/dev/null diff --git a/abs/core/runit/runitscripts/services/dbus/run b/abs/core/runit/runitscripts/services/dbus/run deleted file mode 100755 index 872ca77..0000000 --- a/abs/core/runit/runitscripts/services/dbus/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/bin/dbus-daemon --system --nofork 2>/dev/null >/dev/null diff --git a/abs/core/runit/runitscripts/services/dnsmasq/run b/abs/core/runit/runitscripts/services/dnsmasq/run deleted file mode 100755 index 451dda4..0000000 --- a/abs/core/runit/runitscripts/services/dnsmasq/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/sbin/dnsmasq -k >/dev/null 2>/dev/null - diff --git a/abs/core/runit/runitscripts/services/evrouter/finish b/abs/core/runit/runitscripts/services/evrouter/finish deleted file mode 100755 index 0dd33de..0000000 --- a/abs/core/runit/runitscripts/services/evrouter/finish +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -. /etc/profile -DISPLAY=localhost:50 evrouter -q -rm -rf /tmp/.evrouter* diff --git a/abs/core/runit/runitscripts/services/evrouter/run b/abs/core/runit/runitscripts/services/evrouter/run deleted file mode 100755 index 1d7389a..0000000 --- a/abs/core/runit/runitscripts/services/evrouter/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -. /etc/profile -sv start Xvfb -su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*" - diff --git a/abs/core/runit/runitscripts/services/frontend/finish b/abs/core/runit/runitscripts/services/frontend/finish deleted file mode 100755 index e1e3e00..0000000 --- a/abs/core/runit/runitscripts/services/frontend/finish +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -exec 2>&1 -grep -q nox /proc/cmdline -STATUS=$? - if [ $STATUS = 0 ] - then - chvt 2 -else - -chvt 1 -if [ ! -d /etc/sv/frontend/.runtime ] -then - mkdir -p /etc/sv/frontend/.runtime -fi - -touch /etc/sv/frontend/.runtime/`date +%s` -sleep 0.2 -ps -U mythtv -ef |grep "/bin/sh /usr/bin/startx"|grep -v grep|awk ' { print $2 } '|xargs kill -9 2> /dev/null - - -cdate=`date` -numfiles=`/usr/bin/file_time_offset.py -s10 -d/etc/sv/frontend/.runtime` - -if [ $numfiles -gt 2 ] -then - sv stop frontend - rm -f /etc/sv/frontend/.runtime/* - echo "Frontend is not able to start, disabling it" -fi -fi diff --git a/abs/core/runit/runitscripts/services/frontend/log/run b/abs/core/runit/runitscripts/services/frontend/log/run deleted file mode 100755 index 463045f..0000000 --- a/abs/core/runit/runitscripts/services/frontend/log/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -exec 2>&1 -. /etc/systemconfig - /usr/bin/logger -p local6.info -t mythfrontend - diff --git a/abs/core/runit/runitscripts/services/frontend/run b/abs/core/runit/runitscripts/services/frontend/run deleted file mode 100755 index b59fc63..0000000 --- a/abs/core/runit/runitscripts/services/frontend/run +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -exec 2>&1 - grep -q nox /proc/cmdline - STATUS=$? - if [ $STATUS = 0 ] - then - sv down frontend - exit 0 - fi -/usr/bin/openvt -fwc 6 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null diff --git a/abs/core/runit/runitscripts/services/gpm/run b/abs/core/runit/runitscripts/services/gpm/run deleted file mode 100755 index 361fc43..0000000 --- a/abs/core/runit/runitscripts/services/gpm/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec 2>&1 -. /etc/sysconfig/mouse -exec gpm -D -m $MDEVICE -t $PROTOCOL diff --git a/abs/core/runit/runitscripts/services/hal/run b/abs/core/runit/runitscripts/services/hal/run deleted file mode 100755 index f1362b2..0000000 --- a/abs/core/runit/runitscripts/services/hal/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec 2>&1 -sv waitup dbus 2>/dev/null 1>/dev/null -exec /usr/sbin/hald --daemon=no --use-syslog 2>/dev/null >/dev/null diff --git a/abs/core/runit/runitscripts/services/hobbit-client/run b/abs/core/runit/runitscripts/services/hobbit-client/run deleted file mode 100755 index e45173d..0000000 --- a/abs/core/runit/runitscripts/services/hobbit-client/run +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh -#----------------------------------------------------------------------------# -# Hobbit client bootup script. # -# # -# This invokes hobbitlaunch, which in turn runs the Hobbit client and any # -# extensions configured. # -# # -# Copyright (C) 2005-2006 Henrik Storner # -# "status" section (C) Scott Smith 2006 # -# # -# This program is released under the GNU General Public License (GPL), # -# version 2. See the file "COPYING" for details. # -# # -#----------------------------------------------------------------------------# -# -# $Id: runclient.sh,v 1.13 2006/07/14 21:25:19 henrik Rel $ - -# Default settings for this client -MACHINEDOTS="`uname -n`" # This systems hostname -BBOSTYPE="`uname -s | tr '[A-Z]' '[a-z]'`" # This systems operating system in lowercase -BBOSSCRIPT="hobbitclient-$BBOSTYPE.sh" - -# Commandline mods for the defaults -while test "$1" != "" -do - case "$1" in - --hostname=*) - MACHINEDOTS="`echo $1 | sed -e 's/--hostname=//'`" - ;; - --os=*) - BBOSTYPE="`echo $1 | sed -e 's/--os=//' | tr '[A-Z]' '[a-z]'`" - ;; - --class=*) - CONFIGCLASS="`echo $1 | sed -e 's/--class=//' | tr '[A-Z]' '[a-z]'`" - ;; - --help) - echo "Usage: $0 [--hostname=CLIENTNAME] [--os=rhel3|linux22] [--class=CLASSNAME] start|stop" - exit 0 - ;; - start) - CMD=$1 - ;; - stop) - CMD=$1 - ;; - restart) - CMD=$1 - ;; - status) - CMD=$1 - ;; - esac - - shift -done - -OLDDIR="`pwd`" -cd "`dirname $0`" -HOBBITCLIENTHOME="/data/srv/hobbit/client" -cd "$OLDDIR" - -MACHINE="`echo $MACHINEDOTS | sed -e 's/\./,/g'`" - -export MACHINE MACHINEDOTS BBOSTYPE BBOSSCRIPT HOBBITCLIENTHOME CONFIGCLASS - - -su nobody -c "$HOBBITCLIENTHOME/bin/hobbitlaunch --config=$HOBBITCLIENTHOME/etc/clientlaunch.cfg --log=$HOBBITCLIENTHOME/logs/clientlaunch.log --pidfile=$HOBBITCLIENTHOME/logs/clientlaunch.$MACHINEDOTS.pid --no-daemon" - diff --git a/abs/core/runit/runitscripts/services/hobbit/run b/abs/core/runit/runitscripts/services/hobbit/run deleted file mode 100755 index 24ad9fe..0000000 --- a/abs/core/runit/runitscripts/services/hobbit/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec su nobody -c "/data/srv/hobbit/server/bin/hobbitlaunch --config=/data/srv/hobbit/server/etc/hobbitlaunch.cfg --env=/data/srv/hobbit/server/etc/hobbitserver.cfg --log=/var/log/hobbit/hobbitlaunch.log --pidfile=/var/log/hobbit/hobbitlaunch.pid --no-daemon" diff --git a/abs/core/runit/runitscripts/services/lcdd/run b/abs/core/runit/runitscripts/services/lcdd/run deleted file mode 100755 index df71bf8..0000000 --- a/abs/core/runit/runitscripts/services/lcdd/run +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -. /etc/systemconfig -exec 2>&1 -if [ x$LCDtype = xxosd ] -then - DISPLAY=127.0.0.1:0 /usr/sbin/LCDd -f -c /etc/LCDd.conf 2>/dev/null >/dev/null -else - exec /usr/sbin/LCDd -f -c /etc/LCDd.conf 2>/dev/null >/dev/null -fi diff --git a/abs/core/runit/runitscripts/services/lighttpd/run b/abs/core/runit/runitscripts/services/lighttpd/run deleted file mode 100755 index 70cb0a5..0000000 --- a/abs/core/runit/runitscripts/services/lighttpd/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf diff --git a/abs/core/runit/runitscripts/services/lircd/finish b/abs/core/runit/runitscripts/services/lircd/finish deleted file mode 100755 index 3545b07..0000000 --- a/abs/core/runit/runitscripts/services/lircd/finish +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -killall -9 lircd -rm -f /var/run/lirc*.pid -touch /etc/sv/lircd/.runtime/`date +%s` -numfiles=`/usr/bin/file_time_offset.py -s4 -d/etc/sv/lircd/.runtime ` -if [ $numfiles -gt 3 ] -then - rm -f /etc/sv/lircd/.runtime/* - ls -la /etc/sv/lircd/.runtime/* - sv stop lircd - echo "lircd is not able to start, disabling it" -fi diff --git a/abs/core/runit/runitscripts/services/lircd/run b/abs/core/runit/runitscripts/services/lircd/run deleted file mode 100755 index 4457b37..0000000 --- a/abs/core/runit/runitscripts/services/lircd/run +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -exec 2>&1 -run_lircd2=false -. /etc/systemconfig -function imon_detect { -if [ -e /dev/lirc_imon ] -then -lircd2_cmd="/usr/sbin/lircd -d /dev/lirc_imon --output=/dev/lircd --pidfile=/var/run/lircd2.pid --connect=localhost:8765" -run_lircd2=true -fi -} - - - -case $ReceiverType in - Serial) - /usr/bin/setserial /dev/$ReceiverSerialport uart none - /sbin/modprobe lirc_serial - DEVICE=`ls /dev/lirc[0-9] 2>/dev/null |sort |sed '/./,$!d'|head -n 1 ` - imon_detect - ;; - Usb-imon) - DEVICE=/dev/lirc_imon - ;; - - *) - - DEVICE=`ls /dev/lirc[0-9] 2>/dev/null |sort |sed '/./,$!d'|head -n 1 ` - imon_detect - ;; -esac - -if [ "$run_lircd2" = "true" ] -then - $lircd2_cmd 2>/dev/null 1>/dev/null - exec /usr/sbin/lircd -n -d $DEVICE --output /dev/lircd1 --listen 2>/dev/null 1>/dev/null -else - exec /usr/sbin/lircd -n -d $DEVICE 2>/dev/null 1>/dev/null -fi diff --git a/abs/core/runit/runitscripts/services/mysql/run b/abs/core/runit/runitscripts/services/mysql/run deleted file mode 100755 index 569230e..0000000 --- a/abs/core/runit/runitscripts/services/mysql/run +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -exec 2>&1 - -MYSQLD_ROOT="/data/srv/mysql" -# source application-specific settings -[ -f /etc/conf.d/mysqld ] && . /etc/conf.d/mysqld -if [ ! `egrep '^mysql:' /etc/group` ]; then - stat_busy "Adding mysql group" - groupadd -g 89 mysql - stat_done -fi -if [ ! `egrep '^mysql:' /etc/passwd` ]; then - stat_busy "Adding mysql user" - useradd -u 89 -g mysql -d $MYSQLD_ROOT -s /bin/false mysql - [ -d $MYSQLD_ROOT ] && chown -R mysql.mysql $MYSQLD_ROOT - stat_done -fi - -if [ ! -d $MYSQLD_ROOT ]; then - mkdir $MYSQLD_ROOT - /usr/bin/mysql_install_db --datadir=$MYSQLD_ROOT --user=mysql - chown -R mysql.mysql $MYSQLD_ROOT -fi - -if [ ! -e /var/log/mysqld.log ]; then - touch /var/log/mysqld.log - chown mysql /var/log/mysqld.log -fi -exec /usr/sbin/mysqld -u mysql 2>/dev/null >/dev/null diff --git a/abs/core/runit/runitscripts/services/mythbackend/log/run b/abs/core/runit/runitscripts/services/mythbackend/log/run deleted file mode 100755 index 6ed5184..0000000 --- a/abs/core/runit/runitscripts/services/mythbackend/log/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec 2>&1 - /usr/bin/logger -p local7.info -t mythbackend - diff --git a/abs/core/runit/runitscripts/services/mythbackend/run b/abs/core/runit/runitscripts/services/mythbackend/run deleted file mode 100755 index b33e2e4..0000000 --- a/abs/core/runit/runitscripts/services/mythbackend/run +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -exec 2>&1 -. /etc/profile -. /etc/systemconfig -export HOME=/root -if [ ! x$SystemType = xSlave_backend ] -then - sv start mysql > /dev/null 2>/dev/null - #run mythfilldatabase - /usr/MythVantage/bin/initial_db_run & -fi -mkfifo /tmp/mbefifo >/dev/null 2>/dev/null -echo "Starting mythbackend" -# if [ -f /tmp/debug ] -# then -# echo "using gbd/debug" -# gdb /usr/bin/mythbackend -x $MV_ROOT/mbegdbcommands.txt -# bash -c "osdClient.pl localhost 5000 'Restart gdb mbe :::SYS' "& -# mv gdb.txt /data/home/mythtv/gdb.txt.mythbackend -# chown mythtv:mythtv /data/home/mythtv/gdb.txt.mythbackend -# sleep 10 -# -# else - exec /usr/bin/mythbackend -# fi diff --git a/abs/core/runit/runitscripts/services/ncid/run b/abs/core/runit/runitscripts/services/ncid/run deleted file mode 100755 index 8a90707..0000000 --- a/abs/core/runit/runitscripts/services/ncid/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/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 - diff --git a/abs/core/runit/runitscripts/services/ncidd/run b/abs/core/runit/runitscripts/services/ncidd/run deleted file mode 100755 index 6b032db..0000000 --- a/abs/core/runit/runitscripts/services/ncidd/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/sbin/ncidd -D 2>&1 diff --git a/abs/core/runit/runitscripts/services/netfs/finish b/abs/core/runit/runitscripts/services/netfs/finish deleted file mode 100755 index 43be94c..0000000 --- a/abs/core/runit/runitscripts/services/netfs/finish +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -sv down netfs diff --git a/abs/core/runit/runitscripts/services/netfs/run b/abs/core/runit/runitscripts/services/netfs/run deleted file mode 100755 index f2c0813..0000000 --- a/abs/core/runit/runitscripts/services/netfs/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -exec 2>&1 -sv start portmap -/etc/rc.d/netfs start - diff --git a/abs/core/runit/runitscripts/services/nfsd/run b/abs/core/runit/runitscripts/services/nfsd/run deleted file mode 100755 index 6610fe9..0000000 --- a/abs/core/runit/runitscripts/services/nfsd/run +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -exec 2>&1 - -# Make sure the statd daemon is up -# (the statd service must ensure portmap is running first) -svwaitup /var/service/nfslock >/dev/null 2>/dev/null - -source /etc/conf.d/nfsd - -# Re-export all directories in /etc/exports -/usr/sbin/exportfs -ra > /dev/null 2>/dev/null - -# start some nfsd threads -/usr/sbin/rpc.nfsd -p ${NFSD_OPTS} >/dev/null 2>/dev/null - -# since we are running kernel 2.6 we should also -# mount the nfsd virtual filesystem -/bin/mount -t nfsd none /proc/fs/nfsd >/dev/null 2>/dev/null - -# Start the rpc.mountd daemon -exec /usr/sbin/rpc.mountd --foreground >/dev/null 2>/dev/null - diff --git a/abs/core/runit/runitscripts/services/nfslock/run b/abs/core/runit/runitscripts/services/nfslock/run deleted file mode 100755 index 0ec6f75..0000000 --- a/abs/core/runit/runitscripts/services/nfslock/run +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -exec 2>&1 -sv start portmap >/dev/null 2>/dev/null -/usr/sbin/rpc.statd -F >/dev/null 2>/dev/null diff --git a/abs/core/runit/runitscripts/services/nmbd/run b/abs/core/runit/runitscripts/services/nmbd/run deleted file mode 100755 index 9aa27ec..0000000 --- a/abs/core/runit/runitscripts/services/nmbd/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec nmbd -F -S -d1 2>/dev/null >/dev/null diff --git a/abs/core/runit/runitscripts/services/ntpd/run b/abs/core/runit/runitscripts/services/ntpd/run deleted file mode 100755 index 97302f1..0000000 --- a/abs/core/runit/runitscripts/services/ntpd/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -ntpdate pool.ntp.org -exec ntpd -n -p /var/run/ntpd.pid diff --git a/abs/core/runit/runitscripts/services/oss/finish b/abs/core/runit/runitscripts/services/oss/finish deleted file mode 100755 index f929f39..0000000 --- a/abs/core/runit/runitscripts/services/oss/finish +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -exec 2>&1 -sv down oss - diff --git a/abs/core/runit/runitscripts/services/oss/run b/abs/core/runit/runitscripts/services/oss/run deleted file mode 100755 index 687de8f..0000000 --- a/abs/core/runit/runitscripts/services/oss/run +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -exec 2>&1 -rm -f /usr/lib/oss/starting -#exec /etc/rc.d/alsa-utils start all -exec /usr/sbin/soundon - diff --git a/abs/core/runit/runitscripts/services/portmap/run b/abs/core/runit/runitscripts/services/portmap/run deleted file mode 100755 index 561d65b..0000000 --- a/abs/core/runit/runitscripts/services/portmap/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /sbin/portmap -d >/dev/null 2>/dev/null diff --git a/abs/core/runit/runitscripts/services/smbd/run b/abs/core/runit/runitscripts/services/smbd/run deleted file mode 100755 index af77dcb..0000000 --- a/abs/core/runit/runitscripts/services/smbd/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec smbd -F -S -d3 2>/dev/null >/dev/null diff --git a/abs/core/runit/runitscripts/services/sshd/run b/abs/core/runit/runitscripts/services/sshd/run deleted file mode 100755 index 0dd16ef..0000000 --- a/abs/core/runit/runitscripts/services/sshd/run +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -exec 2>&1 - -[ -f /etc/ssh/ssh_host_key ] || { /usr/bin/ssh-keygen -t rsa1 -N "" -f /etc/ssh/ssh_host_key >/dev/null; } - [ -f /etc/ssh/ssh_host_rsa_key ] || { /usr/bin/ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key >/dev/null; } - [ -f /etc/ssh/ssh_host_dsa_key ] || { /usr/bin/ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key >/dev/null; } - -exec /usr/sbin/sshd -D >/dev/null 2>/dev/null diff --git a/abs/core/runit/runitscripts/services/syslog-ng/run b/abs/core/runit/runitscripts/services/syslog-ng/run deleted file mode 100755 index eb56ace..0000000 --- a/abs/core/runit/runitscripts/services/syslog-ng/run +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -exec 2>&1 -exec /usr/sbin/syslog-ng -F diff --git a/abs/core/runit/runitscripts/services/tty2/run b/abs/core/runit/runitscripts/services/tty2/run deleted file mode 100755 index 3782aed..0000000 --- a/abs/core/runit/runitscripts/services/tty2/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec /sbin/agetty 38400 vc/2 linux diff --git a/abs/core/runit/runitscripts/services/tty3/run b/abs/core/runit/runitscripts/services/tty3/run deleted file mode 100755 index ce66b0d..0000000 --- a/abs/core/runit/runitscripts/services/tty3/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -exec /sbin/agetty 38400 vc/3 linux diff --git a/abs/core/runit/shutdown.script b/abs/core/runit/shutdown.script new file mode 100755 index 0000000..3bcc5d3 --- /dev/null +++ b/abs/core/runit/shutdown.script @@ -0,0 +1,46 @@ +#!/bin/bash +. /etc/profile +INIT=`ps -p 1 -o comm=` +if [ x$INIT = xrunit ] +then + reboot="" + halt="" + delay="" + while getopts rht: name + do + case $name in + r) reboot=1 ;; + h) halt=1 ;; + t) delay="$OPTARG" + if [ x$delay = "xnow" ] + then + delay=0 + fi + ;; + *) + exit 2;; + esac + done + if [ x$delay = x ] + then + echo "-t is mandatory" + exit 4 + fi + + if [ x$reboot = x1 ] + then + wall "System will reboot in $delay seconds" + sleep $delay + /sbin/runit-init 6 + fi + + if [ x$halt = x1 ] + then + wall "System will poweroff in $delay seconds" + sleep $delay + /sbin/runit-init 0 + fi + +else + /sbin/shutdown-init $@ +fi diff --git a/abs/core/samba/PKGBUILD b/abs/core/samba/PKGBUILD new file mode 100644 index 0000000..24b2dba --- /dev/null +++ b/abs/core/samba/PKGBUILD @@ -0,0 +1,88 @@ +# $Id: PKGBUILD 37517 2009-05-02 16:35:12Z tpowa $ +# Maintainer: judd +pkgname=samba +pkgver=3.3.4 +# We use the 'A' to fake out pacman's version comparators. Samba chooses +# to append 'a','b',etc to their subsequent releases, which pamcan +# misconstrues as alpha, beta, etc. Bad samba! +_realver=3.3.4 +pkgrel=1 +pkgdesc="Tools to access a server's filespace and printers via SMB" +arch=(i686 x86_64) +url="http://www.samba.org" +license=('GPL3') +backup=(etc/logrotate.d/samba etc/pam.d/samba etc/samba/smb.conf etc/xinetd.d/swat etc/conf.d/samba) +depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'smbclient=3.3.4' 'libcap>=2.16' 'heimdal>=1.2-1' 'pam' 'gnutls>=2.4.1' 'tdb=3.3.4') +options=(!makeflags) +source=(http://us1.samba.org/samba/ftp/stable/${pkgname}-${_realver}.tar.gz \ + no-clients.patch samba samba.logrotate swat.xinetd samba.pam samba.conf.d) + +build() { + cd ${srcdir}/${pkgname}-${_realver}/source + patch -Np2 -i ${srcdir}/no-clients.patch || return 1 + + ./configure --prefix=/usr --with-configdir=/etc/samba \ + --with-lockdir=/var/cache/samba \ + --with-piddir=/var/run/samba \ + --with-fhs --with-pam --with-ads --with-acl-support \ + --without-cifsmount --without-libsmbclient \ + --with-syslog --with-pam_smbpass \ + --localstatedir=/var --disable-dnssd \ + --disable-avahi --libdir=/usr/lib/samba --without-fam + make || return 1 + mkdir -p ${pkgdir}/var/log/samba + mkdir -p ${pkgdir}/etc/samba/private + chmod 700 ${pkgdir}/etc/samba/private + make DESTDIR=$startdir/pkg install + chmod 644 ${pkgdir}/usr/include/*.h + rm -rf ${pkgdir}/usr/var + (cd script; cp installbin.sh i; cat i | sed 's/\/sbin\///' > installbin.sh) + install -D -m755 ../../samba ${pkgdir}/etc/rc.d/samba + install -D -m644 ../../samba.conf.d ${pkgdir}/etc/conf.d/samba + mkdir -p ${pkgdir}/etc/samba + cat ../examples/smb.conf.default | \ + sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default + install -D -m644 ../../samba.logrotate ${pkgdir}/etc/logrotate.d/samba + install -D -m644 ../../swat.xinetd ${pkgdir}/etc/xinetd.d/swat + install -D -m644 ../../samba.pam ${pkgdir}/etc/pam.d/samba + # symlink libs + for i in ${pkgdir}/usr/lib/samba/libsmbshare*; do + ln -sf samba/$(basename $i) ${pkgdir}/usr/lib/$(basename $i) + done + # spool directory + install -d -m1777 ${pkgdir}/var/spool/samba + sed -i 's|/usr/spool/samba|/var/spool/samba|g' ${pkgdir}/etc/samba/smb.conf.default + # fix logrotate + sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default + # nsswitch libraries + install -D -m755 nsswitch/libnss_wins.so ${pkgdir}/lib/libnss_wins.so + ln -s libnss_wins.so ${pkgdir}/lib/libnss_wins.so.2 + install -D -m755 nsswitch/libnss_winbind.so ${pkgdir}/lib/libnss_winbind.so + install -D -m755 bin/pam_winbind.so ${pkgdir}/lib/security/pam_winbind.so + # remove conflict files of smbclient and tdb + for man in libsmbclient smbspool \ + umount.cifs mount.cifs net; do + rm -f ${pkgdir}/usr/share/man/man8/${man}.8 + done + for i in libnetapi* libtdb* libtalloc* libwbclient*; do + rm -f ${pkgdir}/usr/lib/samba/$i + done + rm -f ${pkgdir}/usr/bin/tdbbackup + rm -f ${pkgdir}/usr/include/{tdb.h,talloc.h,netapi.h} + for man in rpcclient smbcacls smbclient smbcquotas \ + smbtree smbtar nmblookup smbget; do + rm -f ${pkgdir}/usr/share/man/man1/${man}.1 + done + rm -f ${pkgdir}/usr/share/man/man7/libsmbclient.7 + + rm -f ${pkgdir}/usr/include/libsmbclient.h + # copy ldap example + install -D -m644 ${srcdir}/${pkgname}-${_realver}/examples/LDAP/samba.schema ${pkgdir}/usr/share/doc/samba/examples/LDAP/samba.schema +} +md5sums=('1443165edb7cb3f56f1e77aec1ee3266' + 'ce3d88336ade7522e9a8f59bb306accd' + 'e93533fa2296c07c1f645dfdd373657f' + '5697da77590ec092cc8a883bae06093c' + 'a4bbfa39fee95bba2e7ad6b535fae7e6' + '96f82c38f3f540b53f3e5144900acf17' + 'f2f2e348acd1ccb566e95fa8a561b828') diff --git a/abs/core/samba/__changelog b/abs/core/samba/__changelog new file mode 100644 index 0000000..8af7e88 --- /dev/null +++ b/abs/core/samba/__changelog @@ -0,0 +1 @@ +remove fam support \ No newline at end of file diff --git a/abs/core/samba/heimdal.patch b/abs/core/samba/heimdal.patch new file mode 100644 index 0000000..5338c37 --- /dev/null +++ b/abs/core/samba/heimdal.patch @@ -0,0 +1,33 @@ +Submitted By: Randy McMurchy +Date: 2005-09-21 +Initial Package Version: 3.0.20 +Upstream Status: Not submitted (it is not an upstream Samba issue) +Origin: Randy McMurchy +Description: Fixes an issue if you have Heimdal installed as + Heimdal uses reserved C++ words and the Samba headers + now look for these conflicts. This patch comments out + the check for C++ reserved words. Heimdal is aware of + the issue + +$LastChangedBy: randy $ +$Date: 2005/09/29 18:25:12 $ + + +--- samba-3.0.20-orig/source/include/includes.h 2005-07-28 13:19:49.000000000 +0000 ++++ samba-3.0.20/source/include/includes.h 2005-09-04 13:45:01.000000000 +0000 +@@ -25,6 +25,7 @@ + #include "config.h" + #endif + ++/* + #ifndef __cplusplus + #define class #error DONT_USE_CPLUSPLUS_RESERVED_NAMES + #define private #error DONT_USE_CPLUSPLUS_RESERVED_NAMES +@@ -36,6 +37,7 @@ + #define delete #error DONT_USE_CPLUSPLUS_RESERVED_NAMES + #define friend #error DONT_USE_CPLUSPLUS_RESERVED_NAMES + #endif ++*/ + + #include "local.h" + diff --git a/abs/core/samba/no-clients.patch b/abs/core/samba/no-clients.patch new file mode 100644 index 0000000..e06da8d --- /dev/null +++ b/abs/core/samba/no-clients.patch @@ -0,0 +1,31 @@ +diff -Naur samba-3.0.23-orig/source/Makefile.in samba-3.0.23/source/Makefile.in +--- samba-3.0.23-orig/source/Makefile.in 2006-07-10 09:27:55.000000000 -0700 ++++ samba-3.0.23/source/Makefile.in 2006-07-11 14:34:39.000000000 -0700 +@@ -138,14 +138,10 @@ + + ROOT_SBIN_PROGS = @CIFSMOUNT_PROGS@ + +-BIN_PROGS1 = bin/smbclient@EXEEXT@ bin/net@EXEEXT@ bin/smbspool@EXEEXT@ \ +- bin/testparm@EXEEXT@ bin/smbstatus@EXEEXT@ bin/smbget@EXEEXT@ +-BIN_PROGS2 = bin/smbcontrol@EXEEXT@ bin/smbtree@EXEEXT@ bin/tdbbackup@EXEEXT@ \ +- bin/nmblookup@EXEEXT@ bin/pdbedit@EXEEXT@ bin/tdbdump@EXEEXT@ \ +- bin/tdbtool@EXEEXT@ +-BIN_PROGS3 = bin/smbpasswd@EXEEXT@ bin/rpcclient@EXEEXT@ bin/smbcacls@EXEEXT@ \ +- bin/profiles@EXEEXT@ bin/ntlm_auth@EXEEXT@ bin/sharesec@EXEEXT@ \ +- bin/smbcquotas@EXEEXT@ bin/eventlogadm@EXEEXT@ ++BIN_PROGS1 = bin/testparm@EXEEXT@ bin/smbstatus@EXEEXT@ ++BIN_PROGS2 = bin/smbcontrol@EXEEXT@ bin/tdbbackup@EXEEXT@ bin/pdbedit@EXEEXT@ ++BIN_PROGS3 = bin/smbpasswd@EXEEXT@ bin/profiles@EXEEXT@ bin/ntlm_auth@EXEEXT@ \ ++ bin/eventlogadm@EXEEXT@ + BIN_PROGS4 = bin/ldbedit@EXEEXT@ bin/ldbsearch@EXEEXT@ bin/ldbadd@EXEEXT@ \ + bin/ldbdel@EXEEXT@ bin/ldbmodify@EXEEXT@ bin/ldbrename@EXEEXT@ + +@@ -160,7 +156,7 @@ + + PAM_MODULES = @PAM_MODULES@ + +-SCRIPTS = $(srcdir)/script/smbtar $(builddir)/script/findsmb ++SCRIPTS = $(builddir)/script/findsmb + + VFS_MODULES = @VFS_MODULES@ + PDB_MODULES = @PDB_MODULES@ diff --git a/abs/core/samba/samba b/abs/core/samba/samba new file mode 100755 index 0000000..bc7d527 --- /dev/null +++ b/abs/core/samba/samba @@ -0,0 +1,51 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +[ -f /etc/conf.d/samba ] && . /etc/conf.d/samba + +[ -z "$SAMBA_DAEMONS" ] && SAMBA_DAEMONS=(smbd nmbd) + +case "$1" in + start) + rc=0 + stat_busy "Starting Samba Server" + for d in ${SAMBA_DAEMONS[@]}; do + PID=`pidof -o %PPID /usr/sbin/$d` + [ -z "$PID" ] && /usr/sbin/$d -D + rc=$(($rc+$?)) + done + if [ $rc -gt 0 ]; then + stat_fail + else + add_daemon samba + stat_done + fi + ;; + stop) + rc=0 + stat_busy "Stopping Samba Server" + for d in ${SAMBA_DAEMONS[@]}; do + PID=`pidof -o %PPID /usr/sbin/$d` + [ -z "$PID" ] || kill $PID &> /dev/null + rc=$(($rc+$?)) + done + if [ $rc -gt 0 ]; then + stat_fail + else + rm /var/run/samba/smbd.pid &>/dev/null + rm /var/run/samba/nmbd.pid &>/dev/null + rm /var/run/samba/winbindd.pid &>/dev/null + rm_daemon samba + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/samba/samba-3.0.21a-ntlmssp.patch b/abs/core/samba/samba-3.0.21a-ntlmssp.patch new file mode 100644 index 0000000..6b65449 --- /dev/null +++ b/abs/core/samba/samba-3.0.21a-ntlmssp.patch @@ -0,0 +1,13 @@ +--- ntlmssp.c.old Fri Jan 13 15:33:50 2006 ++++ ntlmssp.c Fri Jan 13 15:33:16 2006 +@@ -399,8 +399,9 @@ + ntlmssp_state->session_key.data[6] = 0x38; + ntlmssp_state->session_key.data[7] = 0xb0; + } +- ntlmssp_state->session_key.length = 8; ++ /* ntlmssp_state->session_key.length = 8; */ + } ++ + } + + /** diff --git a/abs/core/samba/samba.conf.d b/abs/core/samba/samba.conf.d new file mode 100644 index 0000000..8721f95 --- /dev/null +++ b/abs/core/samba/samba.conf.d @@ -0,0 +1,7 @@ +# +# Configuration for the samba init script +# + +# space separated list of daemons to launch +SAMBA_DAEMONS=(smbd nmbd) +#SAMBA_DAEMONS=(smbd nmbd winbindd) diff --git a/abs/core/samba/samba.logrotate b/abs/core/samba/samba.logrotate new file mode 100644 index 0000000..581f4c3 --- /dev/null +++ b/abs/core/samba/samba.logrotate @@ -0,0 +1,9 @@ +/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log { + notifempty + missingok + sharedscripts + copytruncate + postrotate + /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true + endscript +} diff --git a/abs/core/samba/samba.pam b/abs/core/samba/samba.pam new file mode 100644 index 0000000..53724d1 --- /dev/null +++ b/abs/core/samba/samba.pam @@ -0,0 +1,3 @@ +auth required pam_unix.so +account required pam_unix.so +session required pam_unix.so diff --git a/abs/core/samba/swat.xinetd b/abs/core/samba/swat.xinetd new file mode 100644 index 0000000..2e62a82 --- /dev/null +++ b/abs/core/samba/swat.xinetd @@ -0,0 +1,10 @@ +service swat +{ + socket_type = stream + wait = no + user = root + server = /usr/sbin/swat + log_on_success += HOST DURATION + log_on_failure += HOST + disable = yes +} diff --git a/abs/core/sdl/PKGBUILD b/abs/core/sdl/PKGBUILD index be6508a..dabe808 100644 --- a/abs/core/sdl/PKGBUILD +++ b/abs/core/sdl/PKGBUILD @@ -1,21 +1,26 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: dorphell +# $Id: PKGBUILD 16059 2008-10-20 12:58:43Z allan $ +# Maintainer: Allan McRae +# Contributor: dorphell + pkgname=sdl pkgver=1.2.13 -pkgrel=1 +pkgrel=3 pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard" -arch=(i686 x86_64) +arch=('i686' 'x86_64') +url="http://www.libsdl.org" license=('LGPL') depends=('glibc' 'libxext' 'libxrender' 'libx11') +makedepends=('alsa-lib' 'mesa') options=('!libtool') -makedepends=('alsa-lib' 'esd' 'mesa') -source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz) -url="http://www.libsdl.org" -md5sums=('c6660feea2a6834de10bc71b2f8e4d88') +source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz + sdl-1.2.13-dynaminc-esd.patch) +md5sums=('c6660feea2a6834de10bc71b2f8e4d88' + '7c2f51f526f3b905b6170f39a7015eb9') build() { - cd ${startdir}/src/SDL-${pkgver} - ./configure --prefix=/usr --disable-nasm --enable-alsa --enable-esd --with-x + cd ${srcdir}/SDL-${pkgver} + patch -Np1 -i $srcdir/sdl-1.2.13-dynaminc-esd.patch + ./configure --prefix=/usr --disable-nasm --enable-alsa --disable-esd --with-x --disable-rpath make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${pkgdir} install } diff --git a/abs/core/sdl/__changelog b/abs/core/sdl/__changelog new file mode 100644 index 0000000..7556af0 --- /dev/null +++ b/abs/core/sdl/__changelog @@ -0,0 +1 @@ +disable esd diff --git a/abs/core/sdl/sdl-1.2.13-dynaminc-esd.patch b/abs/core/sdl/sdl-1.2.13-dynaminc-esd.patch new file mode 100644 index 0000000..3dab5fc --- /dev/null +++ b/abs/core/sdl/sdl-1.2.13-dynaminc-esd.patch @@ -0,0 +1,12 @@ +diff -Naur SDL-1.2.13-old/configure SDL-1.2.13/configure +--- SDL-1.2.13-old/configure 2007-12-31 15:09:39.000000000 +1000 ++++ SDL-1.2.13/configure 2008-10-20 22:22:36.000000000 +1000 +@@ -25382,7 +25382,7 @@ + enable_esd_shared=yes + fi + +- esd_lib_spec=`echo $ESD_LIBS | sed 's/.*-L\([^ ]*\).*/\1\/libesd.so.*/'` ++ esd_lib_spec="/usr/lib/libesd.so.*" + esd_lib=`ls -- $esd_lib_spec | sed 's/.*\/\(.*\)/\1/; q'` + echo "-- $esd_lib_spec -> $esd_lib" + diff --git a/abs/core/setserial/PKGBUILD b/abs/core/setserial/PKGBUILD new file mode 100644 index 0000000..acab19d --- /dev/null +++ b/abs/core/setserial/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: aurelien +# Contributor: Aurelien Foret +pkgname=setserial +pkgver=2.17 +pkgrel=2 +pkgdesc="Allows to change various attributes of a serial device." +url="http://setserial.sourceforge.net/" +depends=('glibc') + +arch=(i686) +source=(http://dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz $pkgname.patch) +md5sums=('c4867d72c41564318e0107745eb7a0f2' '99919d3be7c1550721494070a7ace66a') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -Np1 -i ../$pkgname.patch + ./configure --prefix=/usr + make || return 1 + mkdir -p $startdir/pkg/usr/{bin,man/man8} + make DESTDIR=$startdir/pkg install +} diff --git a/abs/core/setserial/setserial.patch b/abs/core/setserial/setserial.patch new file mode 100644 index 0000000..3cce1f0 --- /dev/null +++ b/abs/core/setserial/setserial.patch @@ -0,0 +1,28 @@ +diff -ur setserial-2.17/Makefile.in setserial-2.17-new/Makefile.in +--- setserial-2.17/Makefile.in 2000-01-27 16:39:07.000000000 +0100 ++++ setserial-2.17-new/Makefile.in 2005-03-09 20:53:31.000000000 +0100 +@@ -17,6 +17,11 @@ + INCS = -I. + TAR = tar + ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++bindir=@bindir@ ++mandir=@mandir@ ++ + all: setserial setserial.cat + + setserial: setserial.c +@@ -26,9 +31,9 @@ + nroff -man setserial.8 > setserial.cat + + install: setserial setserial.8 +- $(INSTALL_PROGRAM) setserial $(DESTDIR)/bin +- $(STRIP) $(DESTDIR)/bin/setserial +- $(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/man/man8 ++ $(INSTALL_PROGRAM) setserial $(DESTDIR)$(bindir) ++ $(STRIP) $(DESTDIR)$(bindir)/setserial ++ $(INSTALL_DATA) setserial.8 $(DESTDIR)$(mandir)/man8 + + clean: + $(RM) setserial setserial.o setserial.cat *~ diff --git a/abs/core/setuptools/PKGBUILD b/abs/core/setuptools/PKGBUILD new file mode 100644 index 0000000..53c26a9 --- /dev/null +++ b/abs/core/setuptools/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 16826 2008-10-22 12:40:52Z douglas $ +# Maintainer: simo +# Contributor: William Rea +# Contributor: Todd Maynard + +pkgname=setuptools +pkgver=0.6c9 +pkgrel=2 +pkgdesc="setuptools is a collection of enhancements to the Python distutils" +license=('PSF') +arch=(i686 x86_64) +url="http://peak.telecommunity.com/DevCenter/setuptools" +depends=('python') +source=(http://cheeseshop.python.org/packages/source/s/$pkgname/$pkgname-$pkgver.tar.gz) + +md5sums=('3864c01d9c719c8924c455714492295e') + +build() { + cd $startdir/src/$pkgname-$pkgver + mkdir -p $startdir/pkg/usr/lib/python2.6/site-packages + python setup.py install --root=$startdir/pkg + echo "/usr/lib/python2.6/site-packages/$pkgname-$pkgver-py2.6.egg" > $startdir/pkg/usr/lib/python2.6/site-packages/setuptools.pth +} diff --git a/abs/core/shadow/PKGBUILD b/abs/core/shadow/PKGBUILD index 20f7e65..89fba13 100644 --- a/abs/core/shadow/PKGBUILD +++ b/abs/core/shadow/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd +# $Id: PKGBUILD 10738 2008-08-31 05:33:35Z aaron $ +# Maintainer: Aaron Griffin pkgname=shadow -pkgver=4.0.18.2 -pkgrel=11 +pkgver=4.1.2.1 +pkgrel=2 pkgdesc="Shadow password file utilities" arch=(i686 x86_64) url='http://pkg-shadow.alioth.debian.org/' @@ -12,77 +12,75 @@ groups=('base') backup=(etc/login.defs etc/pam.d/{chage,login,passwd,shadow,useradd,usermod,userdel} etc/pam.d/{chpasswd,newusers,groupadd,groupdel,groupmod} - etc/pam.d/{chfn,chgpasswd,groupmems,chsh} + etc/pam.d/{chfn,chgpasswd,groupmems,chsh} etc/default/useradd) depends=('pam') source=(ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/shadow-$pkgver.tar.bz2 - login passwd useradd login.defs adduser shadow.cron.daily - useradd-default.patch xstrdup.patch shadow-4.0.18.2-useradd-fix-1.patch) + useradd.defaults login passwd defaults.pam login.defs adduser shadow.cron.daily + xstrdup.patch) options=(!libtool) install='shadow.install' +md5sums=('c178e49c45495e296dabbe4ae01a0fbe' + 'beb64d09256ea46a4d96a783f096447f' + '0aa429de6773ebcdf89db80165379cc6' + 'b84204ab731bd02dca49d0637d44ebec' + 'a31374fef2cba0ca34dfc7078e2969e4' + '3699bed31154051c0508a890d6d95027' + '6ce67e423ee19c87ae64f661310b2408' + '1d64b4113e1d402746d9dd65f28a2c6f' + '0eebe9d13065bec4b5d7ccf3bf46c509') build() { cd $startdir/src/$pkgname-$pkgver - patch -Np1 -i ../xstrdup.patch || return 1 - patch -Np1 -i ../shadow-4.0.18.2-useradd-fix-1.patch || return 1 - # patch etc/default/useradd for Arch defaults - Tom K - patch -Np1 -i ../useradd-default.patch || return 1 - + + #Ugh, force this to build shared libraries, for god's sake + sed -i "s/noinst_LTLIBRARIES/lib_LTLIBRARIES/g" lib/Makefile.am + libtoolize + autoreconf + export LDFLAGS="$LDFLAGS -lcrypt" + + patch -Np1 -i $startdir/src/xstrdup.patch || return 1 + # supress etc/pam.d/*, we provide our own sed -i '/^SUBDIRS/s/pam.d//' etc/Makefile.in ./configure \ - --prefix=/usr --libdir=/usr/lib \ - --mandir=/usr/man --sysconfdir=/etc \ - --enable-shared --with-libpam --without-selinux + --prefix=/usr --libdir=/lib \ + --mandir=/usr/share/man --sysconfdir=/etc \ + --enable-shared --disable-static \ + --with-libpam --without-selinux make || return 1 make DESTDIR=$startdir/pkg install # license - install -v -D -m644 COPYING $startdir/pkg/usr/share/licenses/shadow/COPYING + install -D -m644 COPYING $startdir/pkg/usr/share/licenses/shadow/COPYING # interactive useradd - install -v -D -m755 ../adduser $startdir/pkg/usr/sbin/adduser + install -D -m755 $startdir/src/adduser $startdir/pkg/usr/sbin/adduser + + # useradd defaults + install -D -m644 $startdir/src/useradd.defaults $startdir/pkg/etc/default/useradd # cron job - install -v -D -m744 ../shadow.cron.daily $startdir/pkg/etc/cron.daily/shadow + install -D -m744 $startdir/src/shadow.cron.daily $startdir/pkg/etc/cron.daily/shadow # login.defs - install -v -D -m644 ../login.defs $startdir/pkg/etc/login.defs + install -D -m644 $startdir/src/login.defs $startdir/pkg/etc/login.defs + + # PAM config - cutsom + install -D -m644 $startdir/src/login $startdir/pkg/etc/pam.d/login + install -D -m644 $startdir/src/passwd $startdir/pkg/etc/pam.d/passwd + # PAM config - from tarball + install -D -m644 etc/pam.d/chgpasswd $startdir/pkg/etc/pam.d/chgpasswd + install -D -m644 etc/pam.d/groupmems $startdir/pkg/etc/pam.d/groupmems - # PAM config - local file - for file in login passwd; do - install -v -D -m644 ../$file $startdir/pkg/etc/pam.d/$file - done # we use the 'useradd' PAM file for other similar utilities for file in chage chpasswd chfn chsh groupadd groupdel groupmod \ newusers shadow useradd usermod userdel; do - install -v -D -m644 ../useradd $startdir/pkg/etc/pam.d/$file - done - # add leftover pam files - for i in chgpasswd groupmems; do - install -v -D -m644 etc/pam.d/$i $startdir/pkg/etc/pam.d/$i + install -D -m644 $startdir/src/defaults.pam $startdir/pkg/etc/pam.d/$file done - cd $startdir/pkg - # Remove su - using su from coreutils instead - rm -v bin/su - find usr/man -name 'su.1' -exec rm -v {} \; - - # Move shared libs to /lib - mkdir -pv lib - mv -v usr/lib/libshadow.so.* lib/ - ln -svf ../../lib/libshadow.so.0 usr/lib/libshadow.so + rm -v $startdir/pkg/bin/su + find $startdir/pkg/usr/share/man -name 'su.1' -exec rm -v {} \; } -md5sums=('b900467e5c60c78b6d84b0353d1769d5' - '0aa429de6773ebcdf89db80165379cc6' - 'b84204ab731bd02dca49d0637d44ebec' - 'a31374fef2cba0ca34dfc7078e2969e4' - '3699bed31154051c0508a890d6d95027' - '6ce67e423ee19c87ae64f661310b2408' - '1d64b4113e1d402746d9dd65f28a2c6f' - '1e49ee3b5b96b47782b22237b95c4bc2' - '576c00b284b9c180667a56c6cd326f0c' - '5c0b58c8bee13a57244ec783a8194970') diff --git a/abs/core/shadow/defaults.pam b/abs/core/shadow/defaults.pam new file mode 100644 index 0000000..a7bf8a4 --- /dev/null +++ b/abs/core/shadow/defaults.pam @@ -0,0 +1,6 @@ +#%PAM-1.0 +auth sufficient pam_rootok.so +auth required pam_unix.so +account required pam_unix.so +session required pam_unix.so +password required pam_permit.so diff --git a/abs/core/shadow/useradd.defaults b/abs/core/shadow/useradd.defaults new file mode 100644 index 0000000..b800b17 --- /dev/null +++ b/abs/core/shadow/useradd.defaults @@ -0,0 +1,9 @@ +# useradd defaults file for ArchLinux +# original changes by TomK +GROUP=100 +HOME=/home +INACTIVE=-1 +EXPIRE= +SHELL=/bin/bash +SKEL=/etc/skel +CREATE_MAIL_SPOOL=no diff --git a/abs/core/shadow/xstrdup.patch b/abs/core/shadow/xstrdup.patch index 90d0dd1..bce4342 100644 --- a/abs/core/shadow/xstrdup.patch +++ b/abs/core/shadow/xstrdup.patch @@ -1,6 +1,6 @@ ---- shadow-4.0.18.2/libmisc/xmalloc.c 2007-10-07 12:47:22.000000000 +0100 -+++ shadow-4.0.18.2/libmisc/xmalloc.c.new 2007-11-27 22:43:05.000000000 +0000 -@@ -27,5 +27,6 @@ +--- shadow-4.1.2.1/libmisc/xmalloc.c 2008-08-30 21:55:44.000000000 -0500 ++++ shadow-4.1.2.1/libmisc/xmalloc.c.new 2008-08-30 21:55:36.000000000 -0500 +@@ -61,5 +61,6 @@ char *xstrdup (const char *str) { diff --git a/abs/core/shared-mime-info/PKGBUILD b/abs/core/shared-mime-info/PKGBUILD new file mode 100644 index 0000000..4850139 --- /dev/null +++ b/abs/core/shared-mime-info/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 15025 2008-10-12 10:43:09Z jgc $ +# Maintainer: Jan de Groot + +pkgname=shared-mime-info +pkgver=0.51 +pkgrel=1 +pkgdesc="Freedesktop.org Shared MIME Info" +arch=(i686 x86_64) +license=('GPL') +depends=('libxml2>=2.6.32' 'glib2>=2.18.1') +makedepends=('perlxml' 'pkgconfig') +install=shared-mime-info.install +url="http://freedesktop.org/Software/shared-mime-info" +source=(http://freedesktop.org/~hadess/${pkgname}-${pkgver}.tar.bz2) +md5sums=('01d72161f7d88123fbccd378871f02f0') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-update-mimedb || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/core/shared-mime-info/shared-mime-info.install b/abs/core/shared-mime-info/shared-mime-info.install new file mode 100644 index 0000000..6b06094 --- /dev/null +++ b/abs/core/shared-mime-info/shared-mime-info.install @@ -0,0 +1,12 @@ +post_install() { + update-mime-database /usr/share/mime > /dev/null 2>&1 +} + +post_upgrade() { + post_install $1 +} + +op=$1 +shift + +$op $* diff --git a/abs/core/sharutils/PKGBUILD b/abs/core/sharutils/PKGBUILD new file mode 100644 index 0000000..6971668 --- /dev/null +++ b/abs/core/sharutils/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Kevin Piche +# Contributor: Tom Newsom + +pkgname=sharutils +pkgver=4.6.3 +pkgrel=1 +pkgdesc="GNU shar makes so-called shell archives out of many files" +arch=(i686 x86_64) +depends=('gettext') +source=(ftp://ftp.gnu.org/pub/gnu/$pkgname/REL-$pkgver/$pkgname-$pkgver.tar.gz) +url="http://www.gnu.org/software/sharutils/" +md5sums=('74127a560e59be6dfa8b59993eb0ca91') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --disable-nls + make || return 1 + make prefix=$startdir/pkg/usr install +} diff --git a/abs/core/smbclient/PKGBUILD b/abs/core/smbclient/PKGBUILD index b7eb349..e2aaedd 100644 --- a/abs/core/smbclient/PKGBUILD +++ b/abs/core/smbclient/PKGBUILD @@ -1,58 +1,57 @@ -# $Id: PKGBUILD 3859 2008-07-01 17:10:34Z andyrtr $ +# $Id: PKGBUILD 37507 2009-05-02 15:44:09Z tpowa $ # Maintainer: Jan de Groot pkgname=smbclient -pkgver=3.0.31 +pkgver=3.3.4 # We use the 'A' to fake out pacman's version comparators. Samba chooses -# to append 'a','b',etc to their subsequent releases, which pamcan +# to append 'a','b',etc to their subsequent releases, which pacman # misconstrues as alpha, beta, etc. Bad samba! -_realver=3.0.31 -pkgrel=2 +_realver=3.3.4 +pkgrel=1 pkgdesc="Tools to access a server's filespace and printers via SMB" arch=(i686 x86_64) url="http://www.samba.org" -license=('GPL') -options=(!makeflags) -depends=('popt' 'libldap' 'libcap' 'heimdal>=1.2-1' 'db>=4.7') +license=('GPL3') +depends=('popt' 'libldap' 'libcap>=2.16' 'heimdal>=1.2-1' 'db>=4.7' 'tdb=3.3.4') source=(http://us1.samba.org/samba/ftp/samba-${_realver}.tar.gz) -md5sums=('165abaf4522c70031d9a76fbb638ca06') +options=(!makeflags) build() { - cd ${startdir}/src/samba-${_realver}/source + cd ${srcdir}/samba-${_realver}/source - ./configure --prefix=/usr --with-smbmount --with-fhs --with-pam \ - --with-datadir=/usr/share --with-configdir=/etc/samba \ + ./configure --prefix=/usr --with-cifsmount --with-fhs --with-pam \ + --with-configdir=/etc/samba \ --with-lockdir=/var/run/samba --with-ads --with-acl-support \ - --localstatedir=/var + --localstatedir=/var --with-syslog --with-pam_smbpass --disable-dnssd \ + --libdir=/usr/lib/samba + make proto bin/smbclient libsmbclient \ bin/rpcclient bin/smbspool bin/smbtree \ - bin/smbcacls bin/smbcquotas bin/smbmount bin/smbmnt bin/smbget \ - bin/smbumount bin/net bin/nmblookup || return 1 - mkdir -p ${startdir}/pkg/usr/bin ${startdir}/pkg/sbin - install -m755 bin/* ${startdir}/pkg/usr/bin/ - install -m755 script/smbtar ${startdir}/pkg/usr/bin/ - ln -sf /usr/bin/smbmount ${startdir}/pkg/sbin/mount.smbfs - ln -sf /usr/bin/smbumount ${startdir}/pkg/sbin/umount.smbfs - mkdir -p ${startdir}/pkg/usr/lib/cups/backend - ln -sf /usr/bin/smbspool ${startdir}/pkg/usr/lib/cups/backend/smb - - mkdir -p ${startdir}/pkg/usr/lib/samba - mv ${startdir}/pkg/usr/bin/libsmbclient.* ${startdir}/pkg/usr/lib/samba/ - ln -sf samba/libsmbclient.so ${startdir}/pkg/usr/lib/libsmbclient.so - ln -sf samba/libsmbclient.so ${startdir}/pkg/usr/lib/libsmbclient.so.0 - mkdir -p ${startdir}/pkg/usr/include - install -m644 include/libsmbclient.h ${startdir}/pkg/usr/include/ - - gcc -Wall -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -o ${startdir}/pkg/sbin/mount.cifs client/mount.cifs.c - gcc -Wall -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -o ${startdir}/pkg/sbin/umount.cifs client/umount.cifs.c - - mkdir -p ${startdir}/pkg/usr/share/man/man{1,7,8} - for man in smbmnt smbmount smbspool \ - smbumount umount.cifs mount.cifs net; do - install -m644 ../docs/manpages/${man}.8 ${startdir}/pkg/usr/share/man/man8/ + bin/smbcacls bin/smbcquotas bin/smbget \ + bin/net bin/nmblookup bin/mount.cifs bin/umount.cifs || return 1 + mkdir -p ${pkgdir}/usr/bin ${pkgdir}/sbin ${pkgdir}/usr/lib/samba + install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${pkgdir}/usr/bin/ + install -m755 bin/{mount.cifs,umount.cifs} ${pkgdir}/sbin/ + mv bin/*.so* ${pkgdir}/usr/lib/samba + install -m755 script/smbtar ${pkgdir}/usr/bin/ + mkdir -p ${pkgdir}/usr/lib/cups/backend + ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb + for i in ${pkgdir}/usr/lib/samba/*; do + ln -sf samba/$(basename $i) ${pkgdir}/usr/lib/$(basename $i) + done + rm -rf ${pkgdir}/usr/lib/libtdb* + mkdir -p ${pkgdir}/usr/include + install -m644 include/libsmbclient.h ${pkgdir}/usr/include/ + install -m644 lib/talloc/talloc.h ${pkgdir}/usr/include/ + install -m644 lib/netapi/netapi.h ${pkgdir}/usr/include/ + mkdir -p ${pkgdir}/usr/share/man/man{1,7,8} + for man in smbspool \ + umount.cifs mount.cifs net; do + install -m644 ../docs/manpages/${man}.8 ${pkgdir}/usr/share/man/man8/ done for man in rpcclient smbcacls smbclient smbcquotas smbget \ smbtree smbtar nmblookup; do - install -m644 ../docs/manpages/${man}.1 ${startdir}/pkg/usr/share/man/man1/ + install -m644 ../docs/manpages/${man}.1 ${pkgdir}/usr/share/man/man1/ done - install -m644 ../docs/manpages/libsmbclient.7 ${startdir}/pkg/usr/share/man/man7/ + install -m644 ../docs/manpages/libsmbclient.7 ${pkgdir}/usr/share/man/man7/ } +md5sums=('1443165edb7cb3f56f1e77aec1ee3266') diff --git a/abs/core/smbclient/heimdal.patch b/abs/core/smbclient/heimdal.patch deleted file mode 100644 index d116d3e..0000000 --- a/abs/core/smbclient/heimdal.patch +++ /dev/null @@ -1,33 +0,0 @@ -Submitted By: Randy McMurchy -Date: 2005-09-21 -Initial Package Version: 3.0.20 -Upstream Status: Not submitted (it is not an upstream Samba issue) -Origin: Randy McMurchy -Description: Fixes an issue if you have Heimdal installed as - Heimdal uses reserved C++ words and the Samba headers - now look for these conflicts. This patch comments out - the check for C++ reserved words. Heimdal is aware of - the issue - -$LastChangedBy: randy $ -$Date: 2005/11/17 12:32:28 $ - - ---- samba-3.0.20-orig/source/include/includes.h 2005-07-28 13:19:49.000000000 +0000 -+++ samba-3.0.20/source/include/includes.h 2005-09-04 13:45:01.000000000 +0000 -@@ -25,6 +25,7 @@ - #include "config.h" - #endif - -+/* - #ifndef __cplusplus - #define class #error DONT_USE_CPLUSPLUS_RESERVED_NAMES - #define private #error DONT_USE_CPLUSPLUS_RESERVED_NAMES -@@ -36,6 +37,7 @@ - #define delete #error DONT_USE_CPLUSPLUS_RESERVED_NAMES - #define friend #error DONT_USE_CPLUSPLUS_RESERVED_NAMES - #endif -+*/ - - #include "local.h" - diff --git a/abs/core/sqlite3/PKGBUILD b/abs/core/sqlite3/PKGBUILD new file mode 100644 index 0000000..acf7a94 --- /dev/null +++ b/abs/core/sqlite3/PKGBUILD @@ -0,0 +1,36 @@ +# $Id: PKGBUILD 22976 2008-12-30 11:35:01Z andyrtr $ +# Maintainer: Andreas Radke +# Contributor: Tom Newsom + +pkgname=sqlite3 +pkgver=3.6.10 +pkgrel=5 +pkgdesc="A C library that implements an SQL database engine" +arch=('i686' 'x86_64') +license=('custom') +url="http://www.sqlite.org/" +depends=('readline') +makedepends=('tcl') +conflicts=('sqlite') +replaces=('sqlite') +source=(http://www.sqlite.org/sqlite-$pkgver.tar.gz + license.txt) +md5sums=('a03bdc86df4025b6881d58557e4b5bd3' + 'c1cdbc5544034d9012e421e75a5e4890') +options=(!libtool) + +build() { + cd ${srcdir}/sqlite-${pkgver} + export LTLINK_EXTRAS="-ldl" + export CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1" + ./configure --prefix=/usr \ + --enable-threadsafe \ + --disable-static \ + --enable-load-extension || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + install -Dm0644 sqlite3.1 ${pkgdir}/usr/share/man/man1/sqlite3.1 + + # license + install -Dm644 ${srcdir}/license.txt ${pkgdir}/usr/share/licenses/${pkgname}/license.txt +} diff --git a/abs/core/sqlite3/build_fts_as_part_of_libsqlite.patch b/abs/core/sqlite3/build_fts_as_part_of_libsqlite.patch new file mode 100644 index 0000000..54b04f0 --- /dev/null +++ b/abs/core/sqlite3/build_fts_as_part_of_libsqlite.patch @@ -0,0 +1,139 @@ +Index: Makefile.in +=================================================================== +RCS file: /sqlite/sqlite/Makefile.in,v +retrieving revision 1.186 +diff -u -3 -p -r1.186 Makefile.in +--- Makefile.in 23 Nov 2007 15:12:44 -0000 1.186 ++++ Makefile.in 23 Nov 2007 19:27:56 -0000 +@@ -114,6 +114,23 @@ LTINSTALL = $(LIBTOOL) --mode=install $( + # nawk compatible awk. + NAWK = @AWK@ + ++# Need these defined unconditionally, as non-fts builds with ++# fts object files without using -DSQLITE_ENABLE_FTS[123] ++# will not work without it. ++# ++TCC += -DSQLITE_CORE ++TCC += -DSQLITE_ENABLE_BROKEN_FTS1 ++TCC += -DSQLITE_ENABLE_BROKEN_FTS2 ++ ++# uncomment to build fts1 as part of library ++# TCC += -DSQLITE_ENABLE_FTS1=1 ++ ++# uncomment to build fts2 as part of library ++# TCC += -DSQLITE_ENABLE_FTS2=1 ++ ++# uncomment to build fts3 as part of library ++# TCC += -DSQLITE_ENABLE_FTS3=1 ++ + # You should not have to change anything below this line + ############################################################################### + TCC += -DSQLITE_OMIT_LOAD_EXTENSION=1 +@@ -132,6 +149,17 @@ LIBOBJ = alter.lo analyze.lo attach.lo a + vdbe.lo vdbeapi.lo vdbeaux.lo vdbeblob.lo vdbefifo.lo vdbemem.lo \ + where.lo utf.lo legacy.lo vtab.lo + ++# Object files for FTS ++# ++LIBOBJ += \ ++ fts1.lo fts1_hash.lo fts1_porter.lo fts1_tokenizer1.lo ++ ++LIBOBJ += \ ++ fts2.lo fts2_hash.lo fts2_porter.lo fts2_tokenizer.lo fts2_tokenizer1.lo ++ ++LIBOBJ += \ ++ fts3.lo fts3_hash.lo fts3_porter.lo fts3_tokenizer.lo fts3_tokenizer1.lo ++ + # All of the source code files. + # + SRC = \ +@@ -209,6 +237,23 @@ SRC += \ + $(TOP)/ext/fts1/fts1_tokenizer.h \ + $(TOP)/ext/fts1/fts1_tokenizer1.c + ++SRC += \ ++ $(TOP)/ext/fts2/fts2.c \ ++ $(TOP)/ext/fts2/fts2.h \ ++ $(TOP)/ext/fts2/fts2_hash.c \ ++ $(TOP)/ext/fts2/fts2_hash.h \ ++ $(TOP)/ext/fts2/fts2_porter.c \ ++ $(TOP)/ext/fts2/fts2_tokenizer.h \ ++ $(TOP)/ext/fts2/fts2_tokenizer1.c ++ ++SRC += \ ++ $(TOP)/ext/fts3/fts3.c \ ++ $(TOP)/ext/fts3/fts3.h \ ++ $(TOP)/ext/fts3/fts3_hash.c \ ++ $(TOP)/ext/fts3/fts3_hash.h \ ++ $(TOP)/ext/fts3/fts3_porter.c \ ++ $(TOP)/ext/fts3/fts3_tokenizer.h \ ++ $(TOP)/ext/fts3/fts3_tokenizer1.c + + # Source code to the test files. + # +@@ -285,6 +330,16 @@ HDR += \ + $(TOP)/ext/fts1/fts1_hash.h \ + $(TOP)/ext/fts1/fts1_tokenizer.h + ++HDR += \ ++ $(TOP)/ext/fts2/fts2.h \ ++ $(TOP)/ext/fts2/fts2_hash.h \ ++ $(TOP)/ext/fts2/fts2_tokenizer.h ++ ++HDR += \ ++ $(TOP)/ext/fts3/fts3.h \ ++ $(TOP)/ext/fts3/fts3_hash.h \ ++ $(TOP)/ext/fts3/fts3_tokenizer.h ++ + # Header files used by the VDBE submodule + # + VDBEHDR = \ +@@ -616,3 +671,48 @@ sqlite3.def: $(REAL_LIBOBJ) + sqlite3.dll: $(REAL_LIBOBJ) sqlite3.def + $(TCC) -shared -o sqlite3.dll sqlite3.def \ + -Wl,"--strip-all" $(REAL_LIBOBJ) ++ ++# ++# FTS ++# ++fts1.lo: $(TOP)/ext/fts1/fts1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1.c ++ ++fts1_hash.lo: $(TOP)/ext/fts1/fts1_hash.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1_hash.c ++ ++fts1_porter.lo: $(TOP)/ext/fts1/fts1_porter.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1_porter.c ++ ++fts1_tokenizer1.lo: $(TOP)/ext/fts1/fts1_tokenizer1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts1/fts1_tokenizer1.c ++ ++fts2.lo: $(TOP)/ext/fts2/fts2.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2.c ++ ++fts2_hash.lo: $(TOP)/ext/fts2/fts2_hash.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_hash.c ++ ++fts2_porter.lo: $(TOP)/ext/fts2/fts2_porter.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_porter.c ++ ++fts2_tokenizer.lo: $(TOP)/ext/fts2/fts2_tokenizer.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_tokenizer.c ++ ++fts2_tokenizer1.lo: $(TOP)/ext/fts2/fts2_tokenizer1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts2/fts2_tokenizer1.c ++ ++fts3.lo: $(TOP)/ext/fts3/fts3.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3.c ++ ++fts3_hash.lo: $(TOP)/ext/fts3/fts3_hash.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_hash.c ++ ++fts3_porter.lo: $(TOP)/ext/fts3/fts3_porter.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_porter.c ++ ++fts3_tokenizer.lo: $(TOP)/ext/fts3/fts3_tokenizer.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_tokenizer.c ++ ++fts3_tokenizer1.lo: $(TOP)/ext/fts3/fts3_tokenizer1.c $(HDR) ++ $(LTCOMPILE) -c $(TOP)/ext/fts3/fts3_tokenizer1.c diff --git a/abs/core/sqlite3/license.txt b/abs/core/sqlite3/license.txt new file mode 100644 index 0000000..118c5d5 --- /dev/null +++ b/abs/core/sqlite3/license.txt @@ -0,0 +1,33 @@ +SQLite Copyright +SQLite is in the +Public Domain + + +All of the deliverable code in SQLite has been dedicated to the public domain by the authors. All code authors, and representatives of the companies they work for, have signed affidavits dedicating their contributions to the public domain and originals of those signed affidavits are stored in a firesafe at the main offices of Hwaci. Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original SQLite code, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. + +The previous paragraph applies to the deliverable code in SQLite - those parts of the SQLite library that you actually bundle and ship with a larger application. Portions of the documentation and some code used as part of the build process might fall under other licenses. The details here are unclear. We do not worry about the licensing of the documentation and build code so much because none of these things are part of the core deliverable SQLite library. + +All of the deliverable code in SQLite has been written from scratch. No code has been taken from other projects or from the open internet. Every line of code can be traced back to its original author, and all of those authors have public domain dedications on file. So the SQLite code base is clean and is uncontaminated with licensed code from other projects. +Obtaining An Explicit License To Use SQLite + +Even though SQLite is in the public domain and does not require a license, some users want to obtain a license anyway. Some reasons for obtaining a license include: +You are using SQLite in a jurisdiction that does not recognize the public domain. +You are using SQLite in a jurisdiction that does not recognize the right of an author to dedicate their work to the public domain. +You want to hold a tangible legal document as evidence that you have the legal right to use and distribute SQLite. +Your legal department tells you that you have to purchase a license. + +If you feel like you really have to purchase a license for SQLite, Hwaci, the company that employs the architect and principal developers of SQLite, will sell you one. +Contributed Code + +In order to keep SQLite completely free and unencumbered by copyright, all new contributors to the SQLite code base are asked to dedicate their contributions to the public domain. If you want to send a patch or enhancement for possible inclusion in the SQLite source tree, please accompany the patch with the following statement: +The author or authors of this code dedicate any and all copyright interest in this code to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this code under copyright law. + +We are not able to accept patches or changes to SQLite that are not accompanied by a statement such as the above. In addition, if you make changes or enhancements as an employee, then a simple statement such as the above is insufficient. You must also send by surface mail a copyright release signed by a company officer. A signed original of the copyright release should be mailed to: +Hwaci +6200 Maple Cove Lane +Charlotte, NC 28269 +USA + +A template copyright release is available in PDF or HTML. You can use this release to make future changes. + +see http://www.sqlite.org/copyright.html \ No newline at end of file diff --git a/abs/core/sqlite3/sqlite-3.5.8-pkgconfig-version.patch b/abs/core/sqlite3/sqlite-3.5.8-pkgconfig-version.patch new file mode 100644 index 0000000..cb5b5ef --- /dev/null +++ b/abs/core/sqlite3/sqlite-3.5.8-pkgconfig-version.patch @@ -0,0 +1,12 @@ +diff -up sqlite-3.5.8/sqlite3.pc.in.release sqlite-3.5.8/sqlite3.pc.in +--- sqlite-3.5.8/sqlite3.pc.in.release 2008-04-23 09:11:38.000000000 +0300 ++++ sqlite-3.5.8/sqlite3.pc.in 2008-04-23 09:11:48.000000000 +0300 +@@ -7,7 +7,7 @@ includedir=@includedir@ + + Name: SQLite + Description: SQL database engine +-Version: @VERSION@ ++Version: @RELEASE@ + Libs: -L${libdir} -lsqlite3 + Libs.private: @LIBS@ + Cflags: -I${includedir} diff --git a/abs/core/sudo/PKGBUILD b/abs/core/sudo/PKGBUILD index 9c1f93d..64d8acd 100644 --- a/abs/core/sudo/PKGBUILD +++ b/abs/core/sudo/PKGBUILD @@ -1,9 +1,6 @@ -# $Id: PKGBUILD 4889 2008-07-13 03:16:13Z eric $ -# Maintainer: Paul Mattal -# Contributor: Tom Newsom pkgname=sudo -pkgver=1.6.9p17 -pkgrel=1 +pkgver=1.7.0 +pkgrel=3 pkgdesc="Give certain users the ability to run some commands as root" arch=(i686 x86_64) url="http://www.sudo.ws/sudo/" @@ -11,11 +8,8 @@ url="http://www.sudo.ws/sudo/" license=('custom' 'ISC') depends=('glibc' 'pam') backup=('etc/sudoers' 'etc/pam.d/sudo') -source=(ftp://ftp.sudo.ws/pub/sudo/$pkgname-$pkgver.tar.gz sudo.pam) -md5sums=('b0d01b0c3d55076a47f06f70811be083' '4e7ad4ec8f2fe6a40e12bcb2c0b256e3') +source=(ftp://ftp.sudo.ws/pub/sudo/$pkgname-$pkgver.tar.gz sudo.pam ) options=('!libtool' '!makeflags') -md5sums=('60daf18f28e2c1eb7641c4408e244110' - '4e7ad4ec8f2fe6a40e12bcb2c0b256e3') build() { cd $startdir/src/$pkgname-$pkgver || return 1 diff --git a/abs/core/system-templates/PKGBUILD b/abs/core/system-templates/PKGBUILD new file mode 100755 index 0000000..8a4d35e --- /dev/null +++ b/abs/core/system-templates/PKGBUILD @@ -0,0 +1,16 @@ +pkgname=system-templates +pkgver=1.0 +pkgrel=36 +conflicts=( ) +pkgdesc="Templates used for system configuration" +depends=() +arch=('i686') + +source=() +build() { + MVDIR=$startdir/pkg/usr/MythVantage + mkdir -p $MVDIR/templates +#copy in all the installer specific stuff + rsync -r --exclude=.svn ../templates $MVDIR/ +} + diff --git a/abs/core/system-templates/templates/LCD/Shuttle-SG33/LCDd.conf b/abs/core/system-templates/templates/LCD/Shuttle-SG33/LCDd.conf new file mode 100644 index 0000000..d49fbf6 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/Shuttle-SG33/LCDd.conf @@ -0,0 +1,869 @@ +# LCDd.conf -- configuration file for the LCDproc server daemon LCDd +# +# This file contains the configuration for the LCDd server. +# +# The format is ini-file-like. It is divided into sections that start at +# markers that look like [section]. Comments are all line-based comments, +# and are lines that start with '#' or ';'. +# +# The server has a 'central' section named [server]. For the menu there is +# a section called [menu]. Further each driver has a section which +# defines how the driver acts. +# +# The drivers are activated by specifiying them in a driver= line in the +# server section, like: +# +# Driver=curses +# +# This tells LCDd to use the curses driver. +# The first driver that is loaded and is capable of output defines the +# size of the display. The default driver to use is curses. +# If the driver is specified using the -d command line option, +# the Driver= options in the config file are ignored. +# +# The drivers read their own options from the respective sections. + + + +## Server section with all kinds of settings for the LCDd server ## +[server] + +# Tells the server to load the given drivers. Multiple lines can be given. +# The name of the driver is case sensitive and determines the section +# where to look for further configuration options of the specific driver +# as well as the name of the dynamic driver module to load at runtime. +# The latter one can be changed by giving af File= directive in the +# driver specific section. +# +# The following drivers are supported: +# bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, EyeboxOne, +# g15, glcdlib, glk, hd44780, icp_a106, imon, IOWarrior, irman, +# joy, lb216,lcdm001, lcterm, lirc,MD8800, ms6931, mtc_s16209x, +# MtxOrb, NoritakeVFD, pyramid, sed1330, sed1520, serialVFD, +# sli, stv5730, svga, t6963, text, tyan, ula200, xosd +Driver=shuttleVFD +#Driver=curses + +# Tells the driver to bind to the given interface +Bind=127.0.0.1 + +# Listen on this specified port; defaults to 13666. +Port=13666 + +# Sets the reporting level; defaults to 2 (warnings and errors only). +#ReportLevel=3 + +# Should we report to syslog instead of stderr ? Default: no +#ReportToSyslog=yes + +# Sets the default time in seconds to displays a screen. +WaitTime=5 + +# User to run as. LCDd will drop its root priviledges, +# if any, and run as this user instead. +User=nobody + +# If yes, the the serverscreen will be rotated as a usual info screen. If no, +# it will be a background screen, only visible when no other screens are +# active. +#ServerScreen=no + +# The server will stay in the foreground if set to true. +#Foreground=no + +# Where can we find the driver modules ? +# IMPORTANT: Make sure to change this setting to reflect your +# specific setup! Otherwise LCDd won't be able to find +# the driver modules and will thus not be able to +# function properly. +# NOTE: Always place a slash as last character ! +DriverPath=/usr/lib/lcdproc/ + +# The "...Key=" lines define what the server does with keypresses that +# don't go to any client. +# These are the defaults: +ToggleRotateKey=Enter +PrevScreenKey=Left +NextScreenKey=Right +#ScrollUpKey=Up +#ScrollDownKey=Down + +# If you have only 4 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up +#NextScreenKey=Down + +# If you have only 3 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up + + + +## The menu section. The menu is an internal LCDproc client. ## +[menu] +# You can configure what keys the menu should use. Note that the MenuKey +# will be reserved exclusively, the others work in shared mode. + +# The following works excellent with 4 keys or more. +MenuKey=Escape +EnterKey=Enter +UpKey=Up +DownKey=Down +# If you have 6 keys you may define these as well +#LeftKey=Left +#RightKey=Right + +# If you have only 3 keys, you could use something like this: +#MenuKey=Escape +#EnterKey=Enter +#DownKey=Down + + + +### Driver sections are below this line, in alphabetical order ### + + +## EMAC BayRAD driver ## +[bayrad] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200] +Speed=9600 + + + +## CrystalFontz driver (for CF632 & CF634) ## +[CFontz] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD size [default: 20x4] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 +# Set the initial off-brightness [default: 0; legal: 0 - 255] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200 or 115200] +Speed=9600 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + + + +## CrystalFontz633 driver (for CF633 only) ## +[CFontz633] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD type (size) [default: 16x2] +Size=16x2 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=19200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## CrystalFontz packet driver (for CF631, CF633 & CF635) ## +[CFontzPacket] + +# Select the LCD model [default: 633; legal: 631, 633, 635] +Model=635 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 +# Select the LCD size [default: depending on model: 635: 20x4, 631: 20x2, 633: 16x2] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=115200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## Curses driver ## +[curses] + +# color settings +# foreground color [default: blue] +Foreground=blue +# background color when "backlight" is off [default: cyan] +Background=cyan +# background color when "backlight" is on [default: red] +Backlight=red + +# display size [default: 20x4] +Size=20x4 + +# What position (X,Y) to start the left top corner at... +# Default: (7,7) +TopLeftX=7 +TopLeftY=7 + +# use ASC symbols for icons & bars [default: no; legal, yes, no] +UseACS=no + + + +## Cwlinux driver ## +[CwLnx] + +# Select the LCD model [default: 12232; legal: 12232, 1602] +Model=12232 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 + +# Select the LCD size [default: depending on model: 12232: 20x4, 1602: 16x2] +Size=20x4 + +# Set the communication speed [default: 19200; legal: 9600, 19200] +Speed=19200 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + +# If you have a keypad connected. Keypad layout is currently not +# configureable from the config file. +Keypad=yes + +# If you have a non-standard keypad you can associate any keystrings to keys. +# There are 6 input keys in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following is the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + +# keypad_test_mode permits to test keypad assignement +# Default value is no +#keypad_test_mode=yes + + + +## EyeboxOne driver ## +[EyeboxOne] + +# Select the output device to use [default: /dev/ttyS1] +#Device=/dev/cua01 +Device=/dev/ttyS1 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +Backlight=yes + +# Switch on the cursor? [default: no] +Cursor=no + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Enter Key is a \r character, so it's hardcoded in the driver +LeftKey=D +RightKey=C +UpKey=A +DownKey=B +EscapeKey=P + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + +## g15 driver for Logitech G15 Keyboard LCDs ## +[g15] + +# Display size (currently unused) +size=20x5 + +## glcdlib meta driver for graphical LCDs ## +[glcdlib] + +## mandatory: + +# which graphical display supported by graphlcd-base to use [default: image] +# (see /etc/graphlcd.conf for possible drivers) +Driver=noritake800 + +# no=use graphlcd bitmap fonts (they have only one size / font file) +# yes=use fonts supported by FreeType2 (needs Freetype2 support in libglcdprocdriver and its dependants) +UseFT2=yes + +# text resolution in fixed width characters [default: 16x4] +# (if it won't fit according to available physical pixel resolutioni +# and the minimum available font face size in pixels, then +# 'DebugBorder' will automatically be turned on) +TextResolution=20x4 + +# path to font file to use +FontFile=/usr/share/fonts/corefonts/courbd.ttf + + +## these only apply if UseFT2=yes: + +# character encoding to use +CharEncoding=iso8859-2 + +# minumum size in pixels in which fonts should be rendered +MinFontFaceSize=7x12 + + +## optional: +Brightness=50 # Brightness (in %) if applicable +Contrast=50 # Contrast (in %) if applicable +Backlight=no # Backlight if applicable +UpsideDown=no # flip image upside down +Invert=no # invert light/dark pixels +ShowDebugFrame=no # turns on/off 1 pixel thick debugging + # border whithin the usable text area, + # for setting up TextResolution and + # MinFontFaceSize (if using FT2); +ShowBigBorder=no # border around the unused area +ShowThinBorder=yes # border around the unused area +PixelShiftX=0 +PixelShiftY=2 + + + +## Matrix Orbital GLK driver ## +[glk] + +# select the serial device to use [default: /dev/lcd] +Device=/dev/lcd + +# set the initial contrast value [default: 560; legal: 0 - 1000] +Contrast=560 + +# set the serial port speed [default: 19200; legal: 9600, 19200, 38400] +Speed=19200 + + + +## Hitachi HD44780 driver ## +[hd44780] + +# Select what type of connection. See documentation for types. +ConnectionType=4bit + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device of the serial interface (default is /dev/lcd) +Device=/dev/ttyS0 + +# Bitrate of the serial port (0 for interface default) +Speed=0 + +# If you have a keypad connected. +# You may also need to configure the keypad layout further on in this file. +Keypad=no + +# set the initial contrast (for bwctusb only) [default: 0; legal: 0 - 1000] +Contrast=0 + +# If you have a switchable backlight. +Backlight=no + +# If you have the additional output port ("bargraph") and you want to +# be able to control it with the lcdproc OUTPUT command +OutputPort=no + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + +# Specifies the size of the LCD. +# In case of multiple combined displays, this should be the total size. +Size=20x4 + +# For multiple combined displays: how many lines does each display have. +# Vspan=2,2 means both displays have 2 lines. +#vspan=2,2 + +# If you have an HD66712, a KS0073 or an other 'almost HD44780-compatible', +# set this flag to get into extended mode (4-line linear). +# This flag is NOT the old obsolete Extended option. +#ExtendedMode=yes + +# Character map to to map ISO-8859-1 to the LCD's character set +# [default: hd44780_default; legal: hd44780_default, ea_ks0073 ] +Charmap=hd44780_default + +# If your display is slow and cannot keep up with the flow of data from +# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4 +# to increase the delays. Default: 1. +#DelayMult=2 + +# You can reduce the inserted delays by setting this to false. +# On fast PCs it is possible your LCD does not respond correctly. +# Default: true. +DelayBus=true + +# If you have a keypad you can assign keystrings to the keys. +# See documentation for used terms and how to wire it. +# For example to give directly connected key 4 the string "Enter", use: +# KeyDirect_4=Enter +# For matrix keys use the X and Y coordinates of the key: +# KeyMatrix_1_3=Enter +KeyMatrix_4_1=Enter +KeyMatrix_4_2=Up +KeyMatrix_4_3=Down +KeyMatrix_4_4=Escape + + + +## ICP A106 driver ## +[icp_a106] +Device=/dev/ttyS1 + + + +## Code Mercenaries IO-Warrior driver ## +[IOWarrior] + +# display dimensions +Size=20x4 + +# serial number [exactly as listed by usbview] +# (if not given, the 1st IOWarrior found gets used) +#SerialNumber=00000674 + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + + + +## Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON driver ## +[imon] + +# select the device to use +Device=/dev/lcd0 + +# display dimensions +Size=16x2 + + + +## IrMan driver ## +[IrMan] +#if in trouble with IrMan, try Lirc emulator for IrMan + +# Select the input device to use +#Device=/dev/irman + +# Select the configuration file to use +#Config=/etc/irman.cfg + + + +## Joystick driver ## +[joy] + +# Select the input device to use [default: /dev/js0] +Device=/dev/js0 + +# set the axis map +Map_Axis1neg=Left +Map_Axis1pos=Right +Map_Axis2neg=Up +Map_Axis2pos=Down + +# set the button map +Map_Button1=Enter +Map_Button2=Escape + + + +## LB216 driver ## +[lb216] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Set the communication speed [default: 9600; legal: 2400, 9600] +Speed=9600 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## LCDM001 driver ## +[lcdm001] + +Device=/dev/ttyS1 + +# keypad settings +# Keyname Function +# Normal context Menu context +# ------- -------------- ------------ +# PauseKey Pause/Continue Enter/select +# BackKey Back(Go to previous screen) Up/Left +# ForwardKey Forward(Go to next screen) Down/Right +# MainMenuKey Open main menu Exit/Cancel +PauseKey=LeftKey +BackKey=UpKey +ForwardKey=DownKey +MainMenuKey=RightKey + +# You can rearrange the settings here. +# If your device is broken, have a look at /usr/lib/lcdproc/lcdm001.h + + + +## HNE LCTerm driver ## +[lcterm] +Device=/dev/ttyS1 +Size=16x2 + + + +## LIRC input driver ## +[lirc] + +# Specify an alternative location of the lircrc file [default: ~/.lircrc] +#lircrc=/etc/lircrc.lcdproc + +# Must be the same as in your lircrc +#prog=lcdd + + + +##The driver for the VFD of the Medion MD8800 PC ## +[MD8800] +# device to use [default: /dev/ttyS1] +#Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 + + + +## MSI MS-6931 driver for displays in 1HU servers ## +[ms6931] + +# device to use [default: /dev/ttyS1] +Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + + + +## MTC-S16209x driver ## +[mtc_s16209x] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## Matrix Orbital driver ## +[MtxOrb] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +# NOTE: The driver will ignore this if the display is a vfd or vkd +# as they crash if the backlight is turned off +Backlight=yes + +# Set the initial contrast [default: 480] +# NOTE: The driver will ignore this if the display +# is a vfd or vkd as they don't have this feature +Contrast=800 + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd] +Type=lkd + +# The following table translates from MtxOrb key letters to logical key namess. +# By default no keys are mapped, meaning the keypad is not used at all. +#KeyMap_A=Left +#KeyMap_B=Right +#KeyMap_C=Up +#KeyMap_D=Down +#KeyMap_E=Enter +#KeyMap_F=Escape +# See the [menu] section for an explanation of the key mappings + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + + +## Noritake VFD driver ## +[NoritakeVFD] +# device where the VFD is. Usual values are /dev/ttyS0 and /dev/ttyS1 [default: /dev/lcd] +Device=/dev/ttyS0 + +# Specifies the size of the LCD. +Size=20x4 + +# set the brightness +Brightness=255 + +# set the serial port speed [default: 9600, legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# re-initialize VFD ? +#Reboot=yes + + + +## Pyramid LCD driver ## +[pyramid] + +# device to connect to [default: /dev/lcd] +Device=/dev/ttyUSB0 + + + +## Seiko Epson 1330 driver ## +[sed1330] + +# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446) +# Note: G321D is the only one that is tested currently. +Type=G321D + + + +## Seiko Epson 1520 driver ## +[sed1520] + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + + + +## Serial VFD driver ## +## Drives various (see below) serial 5x7dot VFD's. ## +[serialVFD] + +# Specifies the displaytype.[default: 0] +# 0 NEC (FIPC8367 based) VFDs. +# 1 KD Rev 2.1. +# 2 Noritake VFDs (*). +# 3 Futaba VFDs +# (* most should work, not testet yet.) +Type=0 + +# "no" if display connected serial, "yes" if connected parallel. [default: no(=serial)] +use_parallel=no + +# Number of Custom-Characters [default: displaytype dependent] +#Custom-Characters=0 + +# Portaddress where the LPT is. Used in parallelmode only. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device to use in serial mode. Usual values are /dev/ttyS0 and /dev/ttyS1 +Device=/dev/ttyS1 + +# Specifies the size of the VFD. +Size=20x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +# (4 steps 0-250, 251-500, 501-750, 751-1000) +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +# (4 steps 0-250, 251-500, 501-750, 751-1000) +OffBrightness=0 + +# set the serial port speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# enable ISO 8859 1 compatibility [default: yes; legal: yes, no] +#ISO_8859_1=yes + + + +## stv5730 driver ## +[stv5730] + +# Port the device is connected to [default: 0x378] +Port=0x378 + + + +## SVGAlib driver ## +[svga] + +# svgalib mode to use [default: G320x240x256; legal: supported svgalib modes] +#Mode=G640x480x256 + +# set display size [default: 20x4] +Size=20x4 + +# Set the initial contrast [default: 500; legal: 0 - 1000] +# Can be set but does not change anything internally +Contrast=500 + +# Set the initial brightness [default: 1000; legal: 1 - 1000] +Brightness=1000 + +# Set the initial off-brightness [default: 500; legal: 1 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=500 + + + +## Text driver ## +[text] +# Set the display size [default: 20x4] +Size=20x4 + + + +## Toshiba T6963 driver ## +[t6963] + +# set display size [default: 20x6] +Size=20x6 + +# port to use [default: 0x378; legal: 0x200 - 0x400] +Port=0x378 + +# Is ECP mode on? [default: yes; legal: yes, no] +#ECPlpt=yes + +# Use graphics? [default: no; legal: yes, no] +#graphic=no + + + +## Tyan Barebones LCD driver (GS10 & GS12 series) ## +[tyan] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 4800, 9600] +Speed=9600 + +# set display size [default: 16x2] +Size=16x2 + + + +## ELV ula200 driver ## +[ula200] + +# Select the LCD size [default: 20x4] +Size=20x4 + +# If you have a non standard keypad you can associate any keystrings to keys. +# There are 6 input key in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following it the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + + + +## Wirz SLI LCD driver ## +[sli] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200, 38400, 57600, 115200] +Speed=19200 + + + +## OnScreen Display using libxosd ## +[xosd] + +# set display size [default: 20x4] +Size=20x4 + +# font to use +Font=-*-terminus-*-r-*-*-*-320-*-*-*-*-* + +# EOF diff --git a/abs/core/system-templates/templates/LCD/Silverstone/LCDd.conf b/abs/core/system-templates/templates/LCD/Silverstone/LCDd.conf new file mode 100644 index 0000000..2596c25 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/Silverstone/LCDd.conf @@ -0,0 +1,869 @@ +# LCDd.conf -- configuration file for the LCDproc server daemon LCDd +# +# This file contains the configuration for the LCDd server. +# +# The format is ini-file-like. It is divided into sections that start at +# markers that look like [section]. Comments are all line-based comments, +# and are lines that start with '#' or ';'. +# +# The server has a 'central' section named [server]. For the menu there is +# a section called [menu]. Further each driver has a section which +# defines how the driver acts. +# +# The drivers are activated by specifiying them in a driver= line in the +# server section, like: +# +# Driver=curses +# +# This tells LCDd to use the curses driver. +# The first driver that is loaded and is capable of output defines the +# size of the display. The default driver to use is curses. +# If the driver is specified using the -d command line option, +# the Driver= options in the config file are ignored. +# +# The drivers read their own options from the respective sections. + + + +## Server section with all kinds of settings for the LCDd server ## +[server] + +# Tells the server to load the given drivers. Multiple lines can be given. +# The name of the driver is case sensitive and determines the section +# where to look for further configuration options of the specific driver +# as well as the name of the dynamic driver module to load at runtime. +# The latter one can be changed by giving af File= directive in the +# driver specific section. +# +# The following drivers are supported: +# bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, EyeboxOne, +# g15, glcdlib, glk, hd44780, icp_a106, imon, IOWarrior, irman, +# joy, lb216,lcdm001, lcterm, lirc,MD8800, ms6931, mtc_s16209x, +# MtxOrb, NoritakeVFD, pyramid, sed1330, sed1520, serialVFD, +# sli, stv5730, svga, t6963, text, tyan, ula200, xosd +Driver=imon +#Driver=curses + +# Tells the driver to bind to the given interface +Bind=127.0.0.1 + +# Listen on this specified port; defaults to 13666. +Port=13666 + +# Sets the reporting level; defaults to 2 (warnings and errors only). +#ReportLevel=3 + +# Should we report to syslog instead of stderr ? Default: no +#ReportToSyslog=yes + +# Sets the default time in seconds to displays a screen. +WaitTime=5 + +# User to run as. LCDd will drop its root priviledges, +# if any, and run as this user instead. +User=nobody + +# If yes, the the serverscreen will be rotated as a usual info screen. If no, +# it will be a background screen, only visible when no other screens are +# active. +#ServerScreen=no + +# The server will stay in the foreground if set to true. +#Foreground=no + +# Where can we find the driver modules ? +# IMPORTANT: Make sure to change this setting to reflect your +# specific setup! Otherwise LCDd won't be able to find +# the driver modules and will thus not be able to +# function properly. +# NOTE: Always place a slash as last character ! +DriverPath=/usr/lib/lcdproc/ + +# The "...Key=" lines define what the server does with keypresses that +# don't go to any client. +# These are the defaults: +ToggleRotateKey=Enter +PrevScreenKey=Left +NextScreenKey=Right +#ScrollUpKey=Up +#ScrollDownKey=Down + +# If you have only 4 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up +#NextScreenKey=Down + +# If you have only 3 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up + + + +## The menu section. The menu is an internal LCDproc client. ## +[menu] +# You can configure what keys the menu should use. Note that the MenuKey +# will be reserved exclusively, the others work in shared mode. + +# The following works excellent with 4 keys or more. +MenuKey=Escape +EnterKey=Enter +UpKey=Up +DownKey=Down +# If you have 6 keys you may define these as well +#LeftKey=Left +#RightKey=Right + +# If you have only 3 keys, you could use something like this: +#MenuKey=Escape +#EnterKey=Enter +#DownKey=Down + + + +### Driver sections are below this line, in alphabetical order ### + + +## EMAC BayRAD driver ## +[bayrad] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200] +Speed=9600 + + + +## CrystalFontz driver (for CF632 & CF634) ## +[CFontz] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD size [default: 20x4] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 +# Set the initial off-brightness [default: 0; legal: 0 - 255] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200 or 115200] +Speed=9600 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + + + +## CrystalFontz633 driver (for CF633 only) ## +[CFontz633] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD type (size) [default: 16x2] +Size=16x2 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=19200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## CrystalFontz packet driver (for CF631, CF633 & CF635) ## +[CFontzPacket] + +# Select the LCD model [default: 633; legal: 631, 633, 635] +Model=635 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 +# Select the LCD size [default: depending on model: 635: 20x4, 631: 20x2, 633: 16x2] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=115200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## Curses driver ## +[curses] + +# color settings +# foreground color [default: blue] +Foreground=blue +# background color when "backlight" is off [default: cyan] +Background=cyan +# background color when "backlight" is on [default: red] +Backlight=red + +# display size [default: 20x4] +Size=20x4 + +# What position (X,Y) to start the left top corner at... +# Default: (7,7) +TopLeftX=7 +TopLeftY=7 + +# use ASC symbols for icons & bars [default: no; legal, yes, no] +UseACS=no + + + +## Cwlinux driver ## +[CwLnx] + +# Select the LCD model [default: 12232; legal: 12232, 1602] +Model=12232 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 + +# Select the LCD size [default: depending on model: 12232: 20x4, 1602: 16x2] +Size=20x4 + +# Set the communication speed [default: 19200; legal: 9600, 19200] +Speed=19200 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + +# If you have a keypad connected. Keypad layout is currently not +# configureable from the config file. +Keypad=yes + +# If you have a non-standard keypad you can associate any keystrings to keys. +# There are 6 input keys in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following is the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + +# keypad_test_mode permits to test keypad assignement +# Default value is no +#keypad_test_mode=yes + + + +## EyeboxOne driver ## +[EyeboxOne] + +# Select the output device to use [default: /dev/ttyS1] +#Device=/dev/cua01 +Device=/dev/ttyS1 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +Backlight=yes + +# Switch on the cursor? [default: no] +Cursor=no + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Enter Key is a \r character, so it's hardcoded in the driver +LeftKey=D +RightKey=C +UpKey=A +DownKey=B +EscapeKey=P + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + +## g15 driver for Logitech G15 Keyboard LCDs ## +[g15] + +# Display size (currently unused) +size=20x5 + +## glcdlib meta driver for graphical LCDs ## +[glcdlib] + +## mandatory: + +# which graphical display supported by graphlcd-base to use [default: image] +# (see /etc/graphlcd.conf for possible drivers) +Driver=noritake800 + +# no=use graphlcd bitmap fonts (they have only one size / font file) +# yes=use fonts supported by FreeType2 (needs Freetype2 support in libglcdprocdriver and its dependants) +UseFT2=yes + +# text resolution in fixed width characters [default: 16x4] +# (if it won't fit according to available physical pixel resolutioni +# and the minimum available font face size in pixels, then +# 'DebugBorder' will automatically be turned on) +TextResolution=20x4 + +# path to font file to use +FontFile=/usr/share/fonts/corefonts/courbd.ttf + + +## these only apply if UseFT2=yes: + +# character encoding to use +CharEncoding=iso8859-2 + +# minumum size in pixels in which fonts should be rendered +MinFontFaceSize=7x12 + + +## optional: +Brightness=50 # Brightness (in %) if applicable +Contrast=50 # Contrast (in %) if applicable +Backlight=no # Backlight if applicable +UpsideDown=no # flip image upside down +Invert=no # invert light/dark pixels +ShowDebugFrame=no # turns on/off 1 pixel thick debugging + # border whithin the usable text area, + # for setting up TextResolution and + # MinFontFaceSize (if using FT2); +ShowBigBorder=no # border around the unused area +ShowThinBorder=yes # border around the unused area +PixelShiftX=0 +PixelShiftY=2 + + + +## Matrix Orbital GLK driver ## +[glk] + +# select the serial device to use [default: /dev/lcd] +Device=/dev/lcd + +# set the initial contrast value [default: 560; legal: 0 - 1000] +Contrast=560 + +# set the serial port speed [default: 19200; legal: 9600, 19200, 38400] +Speed=19200 + + + +## Hitachi HD44780 driver ## +[hd44780] + +# Select what type of connection. See documentation for types. +ConnectionType=4bit + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device of the serial interface (default is /dev/lcd) +Device=/dev/ttyS0 + +# Bitrate of the serial port (0 for interface default) +Speed=0 + +# If you have a keypad connected. +# You may also need to configure the keypad layout further on in this file. +Keypad=no + +# set the initial contrast (for bwctusb only) [default: 0; legal: 0 - 1000] +Contrast=0 + +# If you have a switchable backlight. +Backlight=no + +# If you have the additional output port ("bargraph") and you want to +# be able to control it with the lcdproc OUTPUT command +OutputPort=no + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + +# Specifies the size of the LCD. +# In case of multiple combined displays, this should be the total size. +Size=20x4 + +# For multiple combined displays: how many lines does each display have. +# Vspan=2,2 means both displays have 2 lines. +#vspan=2,2 + +# If you have an HD66712, a KS0073 or an other 'almost HD44780-compatible', +# set this flag to get into extended mode (4-line linear). +# This flag is NOT the old obsolete Extended option. +#ExtendedMode=yes + +# Character map to to map ISO-8859-1 to the LCD's character set +# [default: hd44780_default; legal: hd44780_default, ea_ks0073 ] +Charmap=hd44780_default + +# If your display is slow and cannot keep up with the flow of data from +# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4 +# to increase the delays. Default: 1. +#DelayMult=2 + +# You can reduce the inserted delays by setting this to false. +# On fast PCs it is possible your LCD does not respond correctly. +# Default: true. +DelayBus=true + +# If you have a keypad you can assign keystrings to the keys. +# See documentation for used terms and how to wire it. +# For example to give directly connected key 4 the string "Enter", use: +# KeyDirect_4=Enter +# For matrix keys use the X and Y coordinates of the key: +# KeyMatrix_1_3=Enter +KeyMatrix_4_1=Enter +KeyMatrix_4_2=Up +KeyMatrix_4_3=Down +KeyMatrix_4_4=Escape + + + +## ICP A106 driver ## +[icp_a106] +Device=/dev/ttyS1 + + + +## Code Mercenaries IO-Warrior driver ## +[IOWarrior] + +# display dimensions +Size=20x4 + +# serial number [exactly as listed by usbview] +# (if not given, the 1st IOWarrior found gets used) +#SerialNumber=00000674 + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + + + +## Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON driver ## +[imon] + +# select the device to use +Device=/dev/lcd0 + +# display dimensions +Size=16x2 + + + +## IrMan driver ## +[IrMan] +#if in trouble with IrMan, try Lirc emulator for IrMan + +# Select the input device to use +#Device=/dev/irman + +# Select the configuration file to use +#Config=/etc/irman.cfg + + + +## Joystick driver ## +[joy] + +# Select the input device to use [default: /dev/js0] +Device=/dev/js0 + +# set the axis map +Map_Axis1neg=Left +Map_Axis1pos=Right +Map_Axis2neg=Up +Map_Axis2pos=Down + +# set the button map +Map_Button1=Enter +Map_Button2=Escape + + + +## LB216 driver ## +[lb216] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Set the communication speed [default: 9600; legal: 2400, 9600] +Speed=9600 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## LCDM001 driver ## +[lcdm001] + +Device=/dev/ttyS1 + +# keypad settings +# Keyname Function +# Normal context Menu context +# ------- -------------- ------------ +# PauseKey Pause/Continue Enter/select +# BackKey Back(Go to previous screen) Up/Left +# ForwardKey Forward(Go to next screen) Down/Right +# MainMenuKey Open main menu Exit/Cancel +PauseKey=LeftKey +BackKey=UpKey +ForwardKey=DownKey +MainMenuKey=RightKey + +# You can rearrange the settings here. +# If your device is broken, have a look at /usr/lib/lcdproc/lcdm001.h + + + +## HNE LCTerm driver ## +[lcterm] +Device=/dev/ttyS1 +Size=16x2 + + + +## LIRC input driver ## +[lirc] + +# Specify an alternative location of the lircrc file [default: ~/.lircrc] +#lircrc=/etc/lircrc.lcdproc + +# Must be the same as in your lircrc +#prog=lcdd + + + +##The driver for the VFD of the Medion MD8800 PC ## +[MD8800] +# device to use [default: /dev/ttyS1] +#Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 + + + +## MSI MS-6931 driver for displays in 1HU servers ## +[ms6931] + +# device to use [default: /dev/ttyS1] +Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + + + +## MTC-S16209x driver ## +[mtc_s16209x] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## Matrix Orbital driver ## +[MtxOrb] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +# NOTE: The driver will ignore this if the display is a vfd or vkd +# as they crash if the backlight is turned off +Backlight=yes + +# Set the initial contrast [default: 480] +# NOTE: The driver will ignore this if the display +# is a vfd or vkd as they don't have this feature +Contrast=800 + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd] +Type=lkd + +# The following table translates from MtxOrb key letters to logical key namess. +# By default no keys are mapped, meaning the keypad is not used at all. +#KeyMap_A=Left +#KeyMap_B=Right +#KeyMap_C=Up +#KeyMap_D=Down +#KeyMap_E=Enter +#KeyMap_F=Escape +# See the [menu] section for an explanation of the key mappings + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + + +## Noritake VFD driver ## +[NoritakeVFD] +# device where the VFD is. Usual values are /dev/ttyS0 and /dev/ttyS1 [default: /dev/lcd] +Device=/dev/ttyS0 + +# Specifies the size of the LCD. +Size=20x4 + +# set the brightness +Brightness=255 + +# set the serial port speed [default: 9600, legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# re-initialize VFD ? +#Reboot=yes + + + +## Pyramid LCD driver ## +[pyramid] + +# device to connect to [default: /dev/lcd] +Device=/dev/ttyUSB0 + + + +## Seiko Epson 1330 driver ## +[sed1330] + +# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446) +# Note: G321D is the only one that is tested currently. +Type=G321D + + + +## Seiko Epson 1520 driver ## +[sed1520] + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + + + +## Serial VFD driver ## +## Drives various (see below) serial 5x7dot VFD's. ## +[serialVFD] + +# Specifies the displaytype.[default: 0] +# 0 NEC (FIPC8367 based) VFDs. +# 1 KD Rev 2.1. +# 2 Noritake VFDs (*). +# 3 Futaba VFDs +# (* most should work, not testet yet.) +Type=0 + +# "no" if display connected serial, "yes" if connected parallel. [default: no(=serial)] +use_parallel=no + +# Number of Custom-Characters [default: displaytype dependent] +#Custom-Characters=0 + +# Portaddress where the LPT is. Used in parallelmode only. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device to use in serial mode. Usual values are /dev/ttyS0 and /dev/ttyS1 +Device=/dev/ttyS1 + +# Specifies the size of the VFD. +Size=20x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +# (4 steps 0-250, 251-500, 501-750, 751-1000) +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +# (4 steps 0-250, 251-500, 501-750, 751-1000) +OffBrightness=0 + +# set the serial port speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# enable ISO 8859 1 compatibility [default: yes; legal: yes, no] +#ISO_8859_1=yes + + + +## stv5730 driver ## +[stv5730] + +# Port the device is connected to [default: 0x378] +Port=0x378 + + + +## SVGAlib driver ## +[svga] + +# svgalib mode to use [default: G320x240x256; legal: supported svgalib modes] +#Mode=G640x480x256 + +# set display size [default: 20x4] +Size=20x4 + +# Set the initial contrast [default: 500; legal: 0 - 1000] +# Can be set but does not change anything internally +Contrast=500 + +# Set the initial brightness [default: 1000; legal: 1 - 1000] +Brightness=1000 + +# Set the initial off-brightness [default: 500; legal: 1 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=500 + + + +## Text driver ## +[text] +# Set the display size [default: 20x4] +Size=20x4 + + + +## Toshiba T6963 driver ## +[t6963] + +# set display size [default: 20x6] +Size=20x6 + +# port to use [default: 0x378; legal: 0x200 - 0x400] +Port=0x378 + +# Is ECP mode on? [default: yes; legal: yes, no] +#ECPlpt=yes + +# Use graphics? [default: no; legal: yes, no] +#graphic=no + + + +## Tyan Barebones LCD driver (GS10 & GS12 series) ## +[tyan] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 4800, 9600] +Speed=9600 + +# set display size [default: 16x2] +Size=16x2 + + + +## ELV ula200 driver ## +[ula200] + +# Select the LCD size [default: 20x4] +Size=20x4 + +# If you have a non standard keypad you can associate any keystrings to keys. +# There are 6 input key in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following it the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + + + +## Wirz SLI LCD driver ## +[sli] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200, 38400, 57600, 115200] +Speed=19200 + + + +## OnScreen Display using libxosd ## +[xosd] + +# set display size [default: 20x4] +Size=20x4 + +# font to use +Font=-*-terminus-*-r-*-*-*-320-*-*-*-*-* + +# EOF diff --git a/abs/core/system-templates/templates/LCD/Silverstone/modules b/abs/core/system-templates/templates/LCD/Silverstone/modules new file mode 100644 index 0000000..cd576c3 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/Silverstone/modules @@ -0,0 +1 @@ +lirc_imon #LCD diff --git a/abs/core/system-templates/templates/LCD/antec_fusion/LCDd.conf b/abs/core/system-templates/templates/LCD/antec_fusion/LCDd.conf new file mode 100644 index 0000000..2596c25 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/antec_fusion/LCDd.conf @@ -0,0 +1,869 @@ +# LCDd.conf -- configuration file for the LCDproc server daemon LCDd +# +# This file contains the configuration for the LCDd server. +# +# The format is ini-file-like. It is divided into sections that start at +# markers that look like [section]. Comments are all line-based comments, +# and are lines that start with '#' or ';'. +# +# The server has a 'central' section named [server]. For the menu there is +# a section called [menu]. Further each driver has a section which +# defines how the driver acts. +# +# The drivers are activated by specifiying them in a driver= line in the +# server section, like: +# +# Driver=curses +# +# This tells LCDd to use the curses driver. +# The first driver that is loaded and is capable of output defines the +# size of the display. The default driver to use is curses. +# If the driver is specified using the -d command line option, +# the Driver= options in the config file are ignored. +# +# The drivers read their own options from the respective sections. + + + +## Server section with all kinds of settings for the LCDd server ## +[server] + +# Tells the server to load the given drivers. Multiple lines can be given. +# The name of the driver is case sensitive and determines the section +# where to look for further configuration options of the specific driver +# as well as the name of the dynamic driver module to load at runtime. +# The latter one can be changed by giving af File= directive in the +# driver specific section. +# +# The following drivers are supported: +# bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, EyeboxOne, +# g15, glcdlib, glk, hd44780, icp_a106, imon, IOWarrior, irman, +# joy, lb216,lcdm001, lcterm, lirc,MD8800, ms6931, mtc_s16209x, +# MtxOrb, NoritakeVFD, pyramid, sed1330, sed1520, serialVFD, +# sli, stv5730, svga, t6963, text, tyan, ula200, xosd +Driver=imon +#Driver=curses + +# Tells the driver to bind to the given interface +Bind=127.0.0.1 + +# Listen on this specified port; defaults to 13666. +Port=13666 + +# Sets the reporting level; defaults to 2 (warnings and errors only). +#ReportLevel=3 + +# Should we report to syslog instead of stderr ? Default: no +#ReportToSyslog=yes + +# Sets the default time in seconds to displays a screen. +WaitTime=5 + +# User to run as. LCDd will drop its root priviledges, +# if any, and run as this user instead. +User=nobody + +# If yes, the the serverscreen will be rotated as a usual info screen. If no, +# it will be a background screen, only visible when no other screens are +# active. +#ServerScreen=no + +# The server will stay in the foreground if set to true. +#Foreground=no + +# Where can we find the driver modules ? +# IMPORTANT: Make sure to change this setting to reflect your +# specific setup! Otherwise LCDd won't be able to find +# the driver modules and will thus not be able to +# function properly. +# NOTE: Always place a slash as last character ! +DriverPath=/usr/lib/lcdproc/ + +# The "...Key=" lines define what the server does with keypresses that +# don't go to any client. +# These are the defaults: +ToggleRotateKey=Enter +PrevScreenKey=Left +NextScreenKey=Right +#ScrollUpKey=Up +#ScrollDownKey=Down + +# If you have only 4 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up +#NextScreenKey=Down + +# If you have only 3 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up + + + +## The menu section. The menu is an internal LCDproc client. ## +[menu] +# You can configure what keys the menu should use. Note that the MenuKey +# will be reserved exclusively, the others work in shared mode. + +# The following works excellent with 4 keys or more. +MenuKey=Escape +EnterKey=Enter +UpKey=Up +DownKey=Down +# If you have 6 keys you may define these as well +#LeftKey=Left +#RightKey=Right + +# If you have only 3 keys, you could use something like this: +#MenuKey=Escape +#EnterKey=Enter +#DownKey=Down + + + +### Driver sections are below this line, in alphabetical order ### + + +## EMAC BayRAD driver ## +[bayrad] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200] +Speed=9600 + + + +## CrystalFontz driver (for CF632 & CF634) ## +[CFontz] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD size [default: 20x4] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 +# Set the initial off-brightness [default: 0; legal: 0 - 255] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200 or 115200] +Speed=9600 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + + + +## CrystalFontz633 driver (for CF633 only) ## +[CFontz633] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD type (size) [default: 16x2] +Size=16x2 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=19200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## CrystalFontz packet driver (for CF631, CF633 & CF635) ## +[CFontzPacket] + +# Select the LCD model [default: 633; legal: 631, 633, 635] +Model=635 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 +# Select the LCD size [default: depending on model: 635: 20x4, 631: 20x2, 633: 16x2] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=115200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## Curses driver ## +[curses] + +# color settings +# foreground color [default: blue] +Foreground=blue +# background color when "backlight" is off [default: cyan] +Background=cyan +# background color when "backlight" is on [default: red] +Backlight=red + +# display size [default: 20x4] +Size=20x4 + +# What position (X,Y) to start the left top corner at... +# Default: (7,7) +TopLeftX=7 +TopLeftY=7 + +# use ASC symbols for icons & bars [default: no; legal, yes, no] +UseACS=no + + + +## Cwlinux driver ## +[CwLnx] + +# Select the LCD model [default: 12232; legal: 12232, 1602] +Model=12232 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 + +# Select the LCD size [default: depending on model: 12232: 20x4, 1602: 16x2] +Size=20x4 + +# Set the communication speed [default: 19200; legal: 9600, 19200] +Speed=19200 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + +# If you have a keypad connected. Keypad layout is currently not +# configureable from the config file. +Keypad=yes + +# If you have a non-standard keypad you can associate any keystrings to keys. +# There are 6 input keys in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following is the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + +# keypad_test_mode permits to test keypad assignement +# Default value is no +#keypad_test_mode=yes + + + +## EyeboxOne driver ## +[EyeboxOne] + +# Select the output device to use [default: /dev/ttyS1] +#Device=/dev/cua01 +Device=/dev/ttyS1 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +Backlight=yes + +# Switch on the cursor? [default: no] +Cursor=no + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Enter Key is a \r character, so it's hardcoded in the driver +LeftKey=D +RightKey=C +UpKey=A +DownKey=B +EscapeKey=P + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + +## g15 driver for Logitech G15 Keyboard LCDs ## +[g15] + +# Display size (currently unused) +size=20x5 + +## glcdlib meta driver for graphical LCDs ## +[glcdlib] + +## mandatory: + +# which graphical display supported by graphlcd-base to use [default: image] +# (see /etc/graphlcd.conf for possible drivers) +Driver=noritake800 + +# no=use graphlcd bitmap fonts (they have only one size / font file) +# yes=use fonts supported by FreeType2 (needs Freetype2 support in libglcdprocdriver and its dependants) +UseFT2=yes + +# text resolution in fixed width characters [default: 16x4] +# (if it won't fit according to available physical pixel resolutioni +# and the minimum available font face size in pixels, then +# 'DebugBorder' will automatically be turned on) +TextResolution=20x4 + +# path to font file to use +FontFile=/usr/share/fonts/corefonts/courbd.ttf + + +## these only apply if UseFT2=yes: + +# character encoding to use +CharEncoding=iso8859-2 + +# minumum size in pixels in which fonts should be rendered +MinFontFaceSize=7x12 + + +## optional: +Brightness=50 # Brightness (in %) if applicable +Contrast=50 # Contrast (in %) if applicable +Backlight=no # Backlight if applicable +UpsideDown=no # flip image upside down +Invert=no # invert light/dark pixels +ShowDebugFrame=no # turns on/off 1 pixel thick debugging + # border whithin the usable text area, + # for setting up TextResolution and + # MinFontFaceSize (if using FT2); +ShowBigBorder=no # border around the unused area +ShowThinBorder=yes # border around the unused area +PixelShiftX=0 +PixelShiftY=2 + + + +## Matrix Orbital GLK driver ## +[glk] + +# select the serial device to use [default: /dev/lcd] +Device=/dev/lcd + +# set the initial contrast value [default: 560; legal: 0 - 1000] +Contrast=560 + +# set the serial port speed [default: 19200; legal: 9600, 19200, 38400] +Speed=19200 + + + +## Hitachi HD44780 driver ## +[hd44780] + +# Select what type of connection. See documentation for types. +ConnectionType=4bit + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device of the serial interface (default is /dev/lcd) +Device=/dev/ttyS0 + +# Bitrate of the serial port (0 for interface default) +Speed=0 + +# If you have a keypad connected. +# You may also need to configure the keypad layout further on in this file. +Keypad=no + +# set the initial contrast (for bwctusb only) [default: 0; legal: 0 - 1000] +Contrast=0 + +# If you have a switchable backlight. +Backlight=no + +# If you have the additional output port ("bargraph") and you want to +# be able to control it with the lcdproc OUTPUT command +OutputPort=no + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + +# Specifies the size of the LCD. +# In case of multiple combined displays, this should be the total size. +Size=20x4 + +# For multiple combined displays: how many lines does each display have. +# Vspan=2,2 means both displays have 2 lines. +#vspan=2,2 + +# If you have an HD66712, a KS0073 or an other 'almost HD44780-compatible', +# set this flag to get into extended mode (4-line linear). +# This flag is NOT the old obsolete Extended option. +#ExtendedMode=yes + +# Character map to to map ISO-8859-1 to the LCD's character set +# [default: hd44780_default; legal: hd44780_default, ea_ks0073 ] +Charmap=hd44780_default + +# If your display is slow and cannot keep up with the flow of data from +# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4 +# to increase the delays. Default: 1. +#DelayMult=2 + +# You can reduce the inserted delays by setting this to false. +# On fast PCs it is possible your LCD does not respond correctly. +# Default: true. +DelayBus=true + +# If you have a keypad you can assign keystrings to the keys. +# See documentation for used terms and how to wire it. +# For example to give directly connected key 4 the string "Enter", use: +# KeyDirect_4=Enter +# For matrix keys use the X and Y coordinates of the key: +# KeyMatrix_1_3=Enter +KeyMatrix_4_1=Enter +KeyMatrix_4_2=Up +KeyMatrix_4_3=Down +KeyMatrix_4_4=Escape + + + +## ICP A106 driver ## +[icp_a106] +Device=/dev/ttyS1 + + + +## Code Mercenaries IO-Warrior driver ## +[IOWarrior] + +# display dimensions +Size=20x4 + +# serial number [exactly as listed by usbview] +# (if not given, the 1st IOWarrior found gets used) +#SerialNumber=00000674 + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + + + +## Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON driver ## +[imon] + +# select the device to use +Device=/dev/lcd0 + +# display dimensions +Size=16x2 + + + +## IrMan driver ## +[IrMan] +#if in trouble with IrMan, try Lirc emulator for IrMan + +# Select the input device to use +#Device=/dev/irman + +# Select the configuration file to use +#Config=/etc/irman.cfg + + + +## Joystick driver ## +[joy] + +# Select the input device to use [default: /dev/js0] +Device=/dev/js0 + +# set the axis map +Map_Axis1neg=Left +Map_Axis1pos=Right +Map_Axis2neg=Up +Map_Axis2pos=Down + +# set the button map +Map_Button1=Enter +Map_Button2=Escape + + + +## LB216 driver ## +[lb216] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Set the communication speed [default: 9600; legal: 2400, 9600] +Speed=9600 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## LCDM001 driver ## +[lcdm001] + +Device=/dev/ttyS1 + +# keypad settings +# Keyname Function +# Normal context Menu context +# ------- -------------- ------------ +# PauseKey Pause/Continue Enter/select +# BackKey Back(Go to previous screen) Up/Left +# ForwardKey Forward(Go to next screen) Down/Right +# MainMenuKey Open main menu Exit/Cancel +PauseKey=LeftKey +BackKey=UpKey +ForwardKey=DownKey +MainMenuKey=RightKey + +# You can rearrange the settings here. +# If your device is broken, have a look at /usr/lib/lcdproc/lcdm001.h + + + +## HNE LCTerm driver ## +[lcterm] +Device=/dev/ttyS1 +Size=16x2 + + + +## LIRC input driver ## +[lirc] + +# Specify an alternative location of the lircrc file [default: ~/.lircrc] +#lircrc=/etc/lircrc.lcdproc + +# Must be the same as in your lircrc +#prog=lcdd + + + +##The driver for the VFD of the Medion MD8800 PC ## +[MD8800] +# device to use [default: /dev/ttyS1] +#Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 + + + +## MSI MS-6931 driver for displays in 1HU servers ## +[ms6931] + +# device to use [default: /dev/ttyS1] +Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + + + +## MTC-S16209x driver ## +[mtc_s16209x] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## Matrix Orbital driver ## +[MtxOrb] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +# NOTE: The driver will ignore this if the display is a vfd or vkd +# as they crash if the backlight is turned off +Backlight=yes + +# Set the initial contrast [default: 480] +# NOTE: The driver will ignore this if the display +# is a vfd or vkd as they don't have this feature +Contrast=800 + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd] +Type=lkd + +# The following table translates from MtxOrb key letters to logical key namess. +# By default no keys are mapped, meaning the keypad is not used at all. +#KeyMap_A=Left +#KeyMap_B=Right +#KeyMap_C=Up +#KeyMap_D=Down +#KeyMap_E=Enter +#KeyMap_F=Escape +# See the [menu] section for an explanation of the key mappings + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + + +## Noritake VFD driver ## +[NoritakeVFD] +# device where the VFD is. Usual values are /dev/ttyS0 and /dev/ttyS1 [default: /dev/lcd] +Device=/dev/ttyS0 + +# Specifies the size of the LCD. +Size=20x4 + +# set the brightness +Brightness=255 + +# set the serial port speed [default: 9600, legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# re-initialize VFD ? +#Reboot=yes + + + +## Pyramid LCD driver ## +[pyramid] + +# device to connect to [default: /dev/lcd] +Device=/dev/ttyUSB0 + + + +## Seiko Epson 1330 driver ## +[sed1330] + +# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446) +# Note: G321D is the only one that is tested currently. +Type=G321D + + + +## Seiko Epson 1520 driver ## +[sed1520] + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + + + +## Serial VFD driver ## +## Drives various (see below) serial 5x7dot VFD's. ## +[serialVFD] + +# Specifies the displaytype.[default: 0] +# 0 NEC (FIPC8367 based) VFDs. +# 1 KD Rev 2.1. +# 2 Noritake VFDs (*). +# 3 Futaba VFDs +# (* most should work, not testet yet.) +Type=0 + +# "no" if display connected serial, "yes" if connected parallel. [default: no(=serial)] +use_parallel=no + +# Number of Custom-Characters [default: displaytype dependent] +#Custom-Characters=0 + +# Portaddress where the LPT is. Used in parallelmode only. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device to use in serial mode. Usual values are /dev/ttyS0 and /dev/ttyS1 +Device=/dev/ttyS1 + +# Specifies the size of the VFD. +Size=20x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +# (4 steps 0-250, 251-500, 501-750, 751-1000) +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +# (4 steps 0-250, 251-500, 501-750, 751-1000) +OffBrightness=0 + +# set the serial port speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# enable ISO 8859 1 compatibility [default: yes; legal: yes, no] +#ISO_8859_1=yes + + + +## stv5730 driver ## +[stv5730] + +# Port the device is connected to [default: 0x378] +Port=0x378 + + + +## SVGAlib driver ## +[svga] + +# svgalib mode to use [default: G320x240x256; legal: supported svgalib modes] +#Mode=G640x480x256 + +# set display size [default: 20x4] +Size=20x4 + +# Set the initial contrast [default: 500; legal: 0 - 1000] +# Can be set but does not change anything internally +Contrast=500 + +# Set the initial brightness [default: 1000; legal: 1 - 1000] +Brightness=1000 + +# Set the initial off-brightness [default: 500; legal: 1 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=500 + + + +## Text driver ## +[text] +# Set the display size [default: 20x4] +Size=20x4 + + + +## Toshiba T6963 driver ## +[t6963] + +# set display size [default: 20x6] +Size=20x6 + +# port to use [default: 0x378; legal: 0x200 - 0x400] +Port=0x378 + +# Is ECP mode on? [default: yes; legal: yes, no] +#ECPlpt=yes + +# Use graphics? [default: no; legal: yes, no] +#graphic=no + + + +## Tyan Barebones LCD driver (GS10 & GS12 series) ## +[tyan] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 4800, 9600] +Speed=9600 + +# set display size [default: 16x2] +Size=16x2 + + + +## ELV ula200 driver ## +[ula200] + +# Select the LCD size [default: 20x4] +Size=20x4 + +# If you have a non standard keypad you can associate any keystrings to keys. +# There are 6 input key in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following it the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + + + +## Wirz SLI LCD driver ## +[sli] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200, 38400, 57600, 115200] +Speed=19200 + + + +## OnScreen Display using libxosd ## +[xosd] + +# set display size [default: 20x4] +Size=20x4 + +# font to use +Font=-*-terminus-*-r-*-*-*-320-*-*-*-*-* + +# EOF diff --git a/abs/core/system-templates/templates/LCD/antec_fusion/lircd.conf b/abs/core/system-templates/templates/LCD/antec_fusion/lircd.conf new file mode 100644 index 0000000..ce64936 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/antec_fusion/lircd.conf @@ -0,0 +1,38 @@ + +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.1(default) on Thu Sep 6 09:06:50 2007 +# +# contributed by +# +# brand: /tmp/out +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + + name Antec_fusion_silver_v1 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + post_data_bits 16 + post_data 0xFF + gap 131985 + min_repeat 6 + toggle_bit 0 + + + begin codes + CW 0x0001 + CCW 0x0100 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/LCD/antec_fusion/lircrc b/abs/core/system-templates/templates/LCD/antec_fusion/lircrc new file mode 100644 index 0000000..7a39704 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/antec_fusion/lircrc @@ -0,0 +1,15 @@ +begin + remote = Antec_fusion_silver_v1 + prog = mythtv + button = CW + repeat = 1 + config = ] +end + +begin + remote = Antec_fusion_silver_v1 + prog = mythtv + button = CCW + repeat = 1 + config = [ +end diff --git a/abs/core/system-templates/templates/LCD/antec_fusion/modules b/abs/core/system-templates/templates/LCD/antec_fusion/modules new file mode 100644 index 0000000..cd576c3 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/antec_fusion/modules @@ -0,0 +1 @@ +lirc_imon #LCD diff --git a/abs/core/system-templates/templates/LCD/xosd/LCDd.conf b/abs/core/system-templates/templates/LCD/xosd/LCDd.conf new file mode 100644 index 0000000..5b37bd7 --- /dev/null +++ b/abs/core/system-templates/templates/LCD/xosd/LCDd.conf @@ -0,0 +1,957 @@ +# LCDd.conf -- configuration file for the LCDproc server daemon LCDd +# +# This file contains the configuration for the LCDd server. +# +# The format is ini-file-like. It is divided into sections that start at +# markers that look like [section]. Comments are all line-based comments, +# and are lines that start with '#' or ';'. +# +# The server has a 'central' section named [server]. For the menu there is +# a section called [menu]. Further each driver has a section which +# defines how the driver acts. +# +# The drivers are activated by specifiying them in a driver= line in the +# server section, like: +# +# Driver=curses +# +# This tells LCDd to use the curses driver. +# The first driver that is loaded and is capable of output defines the +# size of the display. The default driver to use is curses. +# If the driver is specified using the -d command line option, +# the Driver= options in the config file are ignored. +# +# The drivers read their own options from the respective sections. + + + +## Server section with all kinds of settings for the LCDd server ## +[server] + +# Tells the server to load the given drivers. Multiple lines can be given. +# The name of the driver is case sensitive and determines the section +# where to look for further configuration options of the specific driver +# as well as the name of the dynamic driver module to load at runtime. +# The latter one can be changed by giving af File= directive in the +# driver specific section. +# +# The following drivers are supported: +# bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, ea65, +# EyeboxOne, g15, glcdlib, glk, hd44780, icp_a106, imon, IOWarrior, +# irman, joy, lb216, lcdm001, lcterm, lirc, MD8800, ms6931, mtc_s16209x, +# MtxOrb, NoritakeVFD, picolcd, pyramid, sed1330, sed1520, serialPOS, +# serialVFD, sli, stv5730, svga, t6963, text, tyan, ula200, xosd +Driver=xosd + +# Tells the driver to bind to the given interface +Bind=127.0.0.1 + +# Listen on this specified port; defaults to 13666. +Port=13666 + +# Sets the reporting level; defaults to 2 (warnings and errors only). +ReportLevel=3 + +# Should we report to syslog instead of stderr ? Default: no +#ReportToSyslog=yes + +# Sets the default time in seconds to displays a screen. +WaitTime=5 + +# User to run as. LCDd will drop its root priviledges, +# if any, and run as this user instead. +User=nobody + +# If yes, the the serverscreen will be rotated as a usual info screen. If no, +# it will be a background screen, only visible when no other screens are +# active. +#ServerScreen=no + +# The server will stay in the foreground if set to true. +#Foreground=no + +# Where can we find the driver modules ? +# IMPORTANT: Make sure to change this setting to reflect your +# specific setup! Otherwise LCDd won't be able to find +# the driver modules and will thus not be able to +# function properly. +# NOTE: Always place a slash as last character ! +DriverPath=/usr/lib/lcdproc/ + +# GoodBye message: each entry represents a display line; default: builtin +#GoodBye="Thanks for using" +#GoodBye=" LCDproc!" + +# The "...Key=" lines define what the server does with keypresses that +# don't go to any client. +# These are the defaults: +ToggleRotateKey=Enter +PrevScreenKey=Left +NextScreenKey=Right +#ScrollUpKey=Up +#ScrollDownKey=Down + +# If you have only 4 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up +#NextScreenKey=Down + +# If you have only 3 keys, you can choose to use this: +#ToggleRotateKey=Enter +#PrevScreenKey=Up + + + +## The menu section. The menu is an internal LCDproc client. ## +[menu] +# You can configure what keys the menu should use. Note that the MenuKey +# will be reserved exclusively, the others work in shared mode. + +# The following works excellent with 4 keys or more. +MenuKey=Escape +EnterKey=Enter +UpKey=Up +DownKey=Down +# If you have 6 keys you may define these as well +#LeftKey=Left +#RightKey=Right + +# If you have only 3 keys, you could use something like this: +#MenuKey=Escape +#EnterKey=Enter +#DownKey=Down + + + +### Driver sections are below this line, in alphabetical order ### + + +## EMAC BayRAD driver ## +[bayrad] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200] +Speed=9600 + + + +## CrystalFontz driver (for CF632 & CF634) ## +[CFontz] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD size [default: 20x4] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200 or 115200] +Speed=9600 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + + + +## CrystalFontz633 driver (for CF633 only) ## +[CFontz633] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 +# Select the LCD type (size) [default: 16x2] +Size=16x2 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=19200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## CrystalFontz packet driver (for CF631, CF633 & CF635) ## +[CFontzPacket] + +# Select the LCD model [default: 633; legal: 631, 633, 635] +Model=635 +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 +# Select the LCD size [default: depending on model: 635: 20x4, 631: 20x2, 633: 16x2] +Size=20x4 +# Set the initial contrast [default: 560; legal: 0 - 1000] +Contrast=350 +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 +# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=115200 +# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no] +# Currently this flag is not in use, there is no such thing as NewFirmware. ;=) +#NewFirmware=no +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# I want to reboot the LCD to make sure we start from a known state +Reboot=yes + + + +## Curses driver ## +[curses] + +# color settings +# foreground color [default: blue] +Foreground=blue +# background color when "backlight" is off [default: cyan] +Background=cyan +# background color when "backlight" is on [default: red] +Backlight=red + +# display size [default: 20x4] +Size=20x4 + +# What position (X,Y) to start the left top corner at... +# Default: (7,7) +TopLeftX=7 +TopLeftY=7 + +# use ASC symbols for icons & bars [default: no; legal, yes, no] +UseACS=no + + + +## Cwlinux driver ## +[CwLnx] + +# Select the LCD model [default: 12232; legal: 12232, 1602] +Model=12232 + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyUSB0 + +# Select the LCD size [default: depending on model: 12232: 20x4, 1602: 16x2] +Size=20x4 + +# Set the communication speed [default: 19200; legal: 9600, 19200] +Speed=19200 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +# normally you shouldn't need this +Reboot=no + +# If you have a keypad connected. Keypad layout is currently not +# configureable from the config file. +Keypad=yes + +# If you have a non-standard keypad you can associate any keystrings to keys. +# There are 6 input keys in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following is the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + +# keypad_test_mode permits to test keypad assignement +# Default value is no +#keypad_test_mode=yes + + + +## ea65 driver for the display in AOpen XC Cube AV EA65 media barebones ## +[ea65] + +# Device is fixed /dev/ttyS1 +# Width and Height are fixed 9x1 + +# As the VFD is self luminescent we don't have a backlight +# But we can use the backlight functions to control the front LEDs +# Brightness 0 to 299 -> LEDs off +# Brightness 300 to 699 -> LEDs half bright +# Brightness 700 to 1000 -> LEDs full bright +Brightness=500 +# OffBrightness is the the value used for the 'backlight off' state +OffBrightness=0 + + + +## EyeboxOne driver ## +[EyeboxOne] + +# Select the output device to use [default: /dev/ttyS1] +#Device=/dev/cua01 +Device=/dev/ttyS1 + +# Set the display size [default: 20x4] +Size=20x4 + +# Switch on the backlight? [default: yes] +Backlight=yes + +# Switch on the cursor? [default: no] +Cursor=no + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# Enter Key is a \r character, so it's hardcoded in the driver +LeftKey=D +RightKey=C +UpKey=A +DownKey=B +EscapeKey=P + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + + +## g15 driver for Logitech G15 Keyboard LCDs ## +[g15] + +# Display size (currently unused) +size=20x5 + +## glcdlib meta driver for graphical LCDs ## +[glcdlib] + +## mandatory: + +# which graphical display supported by graphlcd-base to use [default: image] +# (see /etc/graphlcd.conf for possible drivers) +Driver=noritake800 + +# no=use graphlcd bitmap fonts (they have only one size / font file) +# yes=use fonts supported by FreeType2 (needs Freetype2 support in libglcdprocdriver and its dependants) +UseFT2=yes + +# text resolution in fixed width characters [default: 16x4] +# (if it won't fit according to available physical pixel resolutioni +# and the minimum available font face size in pixels, then +# 'DebugBorder' will automatically be turned on) +TextResolution=20x4 + +# path to font file to use +FontFile=/usr/share/fonts/corefonts/courbd.ttf + +## these only apply if UseFT2=yes: + +# character encoding to use +CharEncoding=iso8859-2 + +# minumum size in pixels in which fonts should be rendered +MinFontFaceSize=7x12 + +## optional: +Brightness=50 # Brightness (in %) if applicable +Contrast=50 # Contrast (in %) if applicable +Backlight=no # Backlight if applicable +UpsideDown=no # flip image upside down +Invert=no # invert light/dark pixels +ShowDebugFrame=no # turns on/off 1 pixel thick debugging + # border whithin the usable text area, + # for setting up TextResolution and + # MinFontFaceSize (if using FT2); +ShowBigBorder=no # border around the unused area +ShowThinBorder=yes # border around the unused area +PixelShiftX=0 +PixelShiftY=2 + + + +## Matrix Orbital GLK driver ## +[glk] + +# select the serial device to use [default: /dev/lcd] +Device=/dev/lcd + +# set the initial contrast value [default: 560; legal: 0 - 1000] +Contrast=560 + +# set the serial port speed [default: 19200; legal: 9600, 19200, 38400] +Speed=19200 + + + +## Hitachi HD44780 driver ## +[hd44780] + +# Select what type of connection. See documentation for types. +ConnectionType=4bit + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device of the serial interface (default is /dev/lcd) +Device=/dev/ttyS0 + +# Bitrate of the serial port (0 for interface default) +Speed=0 + +# If you have a keypad connected. +# You may also need to configure the keypad layout further on in this file. +Keypad=no + +# set the initial contrast (for bwctusb only) [default: 0; legal: 0 - 1000] +Contrast=0 + +# If you have a switchable backlight. +Backlight=no + +# If you have the additional output port ("bargraph") and you want to +# be able to control it with the lcdproc OUTPUT command +OutputPort=no + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + +# Specifies the size of the LCD. +# In case of multiple combined displays, this should be the total size. +Size=20x4 + +# For multiple combined displays: how many lines does each display have. +# Vspan=2,2 means both displays have 2 lines. +#vspan=2,2 + +# If you have an HD66712, a KS0073 or an other 'almost HD44780-compatible', +# set this flag to get into extended mode (4-line linear). +# This flag is NOT the old obsolete Extended option. +#ExtendedMode=yes + +# Character map to to map ISO-8859-1 to the LCD's character set +# [default: hd44780_default; legal: hd44780_default, ea_ks0073, sed1278f_0b ] +Charmap=hd44780_default + +# If your display is slow and cannot keep up with the flow of data from +# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4 +# to increase the delays. Default: 1. +#DelayMult=2 + +# Some displays (e.g. vdr-wakeup) need a message from the driver to that it +# is still alive. When set to a value bigger then null the character in the +# upper left corner is updated every seconds. Default: 0. +#KeepAliveDisplay=0 + +# If you experience occasional garbage on your display you can use this +# option as workaround. If set to a value bigger than null it forces a +# full screen refresh seconds. Default: 0. +#RefreshDisplay=5 + +# You can reduce the inserted delays by setting this to false. +# On fast PCs it is possible your LCD does not respond correctly. +# Default: true. +DelayBus=true + +# If you have a keypad you can assign keystrings to the keys. +# See documentation for used terms and how to wire it. +# For example to give directly connected key 4 the string "Enter", use: +# KeyDirect_4=Enter +# For matrix keys use the X and Y coordinates of the key: +# KeyMatrix_1_3=Enter +KeyMatrix_4_1=Enter +KeyMatrix_4_2=Up +KeyMatrix_4_3=Down +KeyMatrix_4_4=Escape + + + +## ICP A106 driver ## +[icp_a106] +Device=/dev/ttyS1 + + + +## Code Mercenaries IO-Warrior driver ## +[IOWarrior] + +# display dimensions +Size=20x4 + +# serial number [exactly as listed by usbview] +# (if not given, the 1st IOWarrior found gets used) +#SerialNumber=00000674 + +# Specifies if the last line is pixel addressable or it controls an +# underline effect. [default: true (= pixel addressable); legal: yes, no] +#Lastline=true + + + +## Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON driver ## +[imon] + +# select the device to use +Device=/dev/lcd0 + +# display dimensions +Size=16x2 + + + +## IrMan driver ## +[IrMan] +#if in trouble with IrMan, try Lirc emulator for IrMan + +# Select the input device to use +#Device=/dev/irman + +# Select the configuration file to use +#Config=/etc/irman.cfg + + + +## Joystick driver ## +[joy] + +# Select the input device to use [default: /dev/js0] +Device=/dev/js0 + +# set the axis map +Map_Axis1neg=Left +Map_Axis1pos=Right +Map_Axis2neg=Up +Map_Axis2pos=Down + +# set the button map +Map_Button1=Enter +Map_Button2=Escape + + + +## LB216 driver ## +[lb216] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Set the communication speed [default: 9600; legal: 2400, 9600] +Speed=9600 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## LCDM001 driver ## +[lcdm001] + +Device=/dev/ttyS1 + +# keypad settings +# Keyname Function +# Normal context Menu context +# ------- -------------- ------------ +# PauseKey Pause/Continue Enter/select +# BackKey Back(Go to previous screen) Up/Left +# ForwardKey Forward(Go to next screen) Down/Right +# MainMenuKey Open main menu Exit/Cancel +PauseKey=LeftKey +BackKey=UpKey +ForwardKey=DownKey +MainMenuKey=RightKey + +# You can rearrange the settings here. +# If your device is broken, have a look at /usr/lib/lcdproc/lcdm001.h + + + +## HNE LCTerm driver ## +[lcterm] +Device=/dev/ttyS1 +Size=16x2 + + + +## LIRC input driver ## +[lirc] + +# Specify an alternative location of the lircrc file [default: ~/.lircrc] +#lircrc=/etc/lircrc.lcdproc + +# Must be the same as in your lircrc +#prog=lcdd + + + +##The driver for the VFD of the Medion MD8800 PC ## +[MD8800] +# device to use [default: /dev/ttyS1] +#Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=50 + + + +## MSI MS-6931 driver for displays in 1HU servers ## +[ms6931] + +# device to use [default: /dev/ttyS1] +Device=/dev/ttyS1 + +# display size [default: 16x2] +#Size=16x2 + + + +## MTC-S16209x driver ## +[mtc_s16209x] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the initial brightness [default: 255; legal: 0 - 255] +Brightness=255 + +# Reinitialize the LCD's BIOS [default: no; legal: yes, no] +Reboot=no + + + +## Matrix Orbital driver ## +[MtxOrb] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/ttyS0 + +# Set the display size [default: 20x4] +Size=20x4 + +# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd] +Type=lkd + +# Set the initial contrast [default: 480] +# NOTE: The driver will ignore this if the display +# is a vfd or vkd as they don't have this feature +Contrast=480 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=0 + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200] +Speed=19200 + +# The following table translates from MtxOrb key letters to logical key names. +# By default no keys are mapped, meaning the keypad is not used at all. +#KeyMap_A=Left +#KeyMap_B=Right +#KeyMap_C=Up +#KeyMap_D=Down +#KeyMap_E=Enter +#KeyMap_F=Escape +# See the [menu] section for an explanation of the key mappings + +# You can find out which key of your display sends which +# character by setting keypad_test_mode to yes and running +# LCDd. LCDd will output all characters it receives. +# Afterwards you can modify the settings above and set +# keypad_set_mode to no again. +keypad_test_mode=no + + + +## Noritake VFD driver ## +[NoritakeVFD] +# device where the VFD is. Usual values are /dev/ttyS0 and /dev/ttyS1 [default: /dev/lcd] +Device=/dev/ttyS0 + +# Specifies the size of the LCD. +Size=20x4 + +# set the brightness +Brightness=255 + +# set the serial port speed [default: 9600, legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# re-initialize VFD ? +#Reboot=yes + + + +## Mini-box.com picoLCD (usblcd) driver ## +[picolcd] +# This is for the Mini-Box.com usblcd device that ships with the M300. It can +# also be purchased separately but this driver has only been tested on the M300 +# setup. + +# KeyTimeout is the time that LCDd spends waiting for a key press before cycling +# through other duties. Higher values make LCDd use less CPU time and make +# key presses more detectable. Lower values make LCDd more responsive but a +# little prone to missing key presses. 500 (.5 second) is the default and a +# balanced value. +KeyTimeout=500 + +# Contrast: [default: 1000; legal: 0 - 1000] +Contrast=1000 + +# Light the keys? i[default: on; legal: on, off] +Keylights=on + +# If Keylights is on, the you can unlight specific keys below: +# Key0 is the directional pad. Key1 - Key5 correspond to the F1 - F5 keys. +# There is no LED for the +/- keys. This is a handy way to indicate to users +# which keys are disabled. [default: on; legal: on, off] +Key0Light=on +Key1Light=on +Key2Light=on +Key3Light=on +Key4Light=on +Key5Light=on + + + +## Pyramid LCD driver ## +[pyramid] + +# device to connect to [default: /dev/lcd] +Device=/dev/ttyUSB0 + + + +## Seiko Epson 1330 driver ## +[sed1330] + +# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446, SP14Q002) +# Note: Currently only tested with G321D & SP14Q002. +Type=G321D + +# Width x Height of a character cell in pixels [legal: 6x7 - 8x16; default: 6x10] +CellSize=6x10 + +# Select what type of connection [legal: classic, bitshaker; default: classic] +ConnectionType=classic + + +## Seiko Epson 1520 driver ## +[sed1520] + +# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + + + +## serial POS display driver ## +[serialPOS] + +# Device to use in serial modea [default: /dev/lcd] +Device=/dev/lcd + +# Specifies the size of the display in characters. [default: 16x2] +Size=16x2 + +# Set the communication protocol to use with the POS display. +# [default: AEDEX; legal: IEE, Epson, Emax, IBM, LogicControls, Ultimate] +Type=AEDEX + +# communication baud rate with the display [default: 9600; legal: 1200, 2400, 19200, 115200] +Speed=9600 + + + +## Serial VFD driver ## +## Drives various (see below) serial 5x7dot VFD's. ## +[serialVFD] + +# Specifies the displaytype.[default: 0] +# 0 NEC (FIPC8367 based) VFDs. +# 1 KD Rev 2.1. +# 2 Noritake VFDs (*). +# 3 Futaba VFDs +# (* most should work, not testet yet.) +Type=0 + +# "no" if display connected serial, "yes" if connected parallel. [default: no(=serial)] +use_parallel=no + +# Number of Custom-Characters [default: displaytype dependent] +#Custom-Characters=0 + +# Portaddress where the LPT is. Used in parallelmode only. Usual values are 0x278, 0x378 and 0x3BC +Port=0x378 + +# Device to use in serial mode. Usual values are /dev/ttyS0 and /dev/ttyS1 +Device=/dev/ttyS1 + +# Specifies the size of the VFD. +Size=20x2 + +# Set the initial brightness [default: 1000; legal: 0 - 1000] +# (4 steps 0-250, 251-500, 501-750, 751-1000) +Brightness=1000 +# Set the initial off-brightness [default: 0; legal: 0 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +# (4 steps 0-250, 251-500, 501-750, 751-1000) +OffBrightness=0 + +# set the serial port speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200] +Speed=9600 + +# enable ISO 8859 1 compatibility [default: yes; legal: yes, no] +#ISO_8859_1=yes + + + +## stv5730 driver ## +[stv5730] + +# Port the device is connected to [default: 0x378] +Port=0x378 + + + +## SVGAlib driver ## +[svga] + +# svgalib mode to use [default: G320x240x256; legal: supported svgalib modes] +#Mode=G640x480x256 + +# set display size [default: 20x4] +Size=20x4 + +# Set the initial contrast [default: 500; legal: 0 - 1000] +# Can be set but does not change anything internally +Contrast=500 + +# Set the initial brightness [default: 1000; legal: 1 - 1000] +Brightness=1000 + +# Set the initial off-brightness [default: 500; legal: 1 - 1000] +# This value is used when the display is normally +# switched off in case LCDd is inactive +OffBrightness=500 + + + +## Text driver ## +[text] +# Set the display size [default: 20x4] +Size=20x4 + + + +## Toshiba T6963 driver ## +[t6963] + +# set display size [default: 20x6] +Size=20x6 + +# port to use [default: 0x378; legal: 0x200 - 0x400] +Port=0x378 + +# Is ECP mode on? [default: yes; legal: yes, no] +#ECPlpt=yes + +# Use graphics? [default: no; legal: yes, no] +#graphic=no + + + +## Tyan Barebones LCD driver (GS10 & GS12 series) ## +[tyan] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 9600; legal: 4800, 9600] +Speed=9600 + +# set display size [default: 16x2] +Size=16x2 + + + +## ELV ula200 driver ## +[ula200] + +# Select the LCD size [default: 20x4] +Size=20x4 + +# If you have a non standard keypad you can associate any keystrings to keys. +# There are 6 input key in the CwLnx hardware that generate characters +# from 'A' to 'F'. +# +# The following it the built-in default mapping hardcoded in the driver. +# You can leave those unchanged if you have a standard keypad. +# You can change it if you want to report other keystrings or have a non +# standard keypad. +# KeyMap_A=Up +# KeyMap_B=Down +# KeyMap_C=Left +# KeyMap_D=Right +# KeyMap_E=Enter +# KeyMap_F=Escape + + + +## Wirz SLI LCD driver ## +[sli] + +# Select the output device to use [default: /dev/lcd] +Device=/dev/lcd + +# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200, 38400, 57600, 115200] +Speed=19200 + + + +## OnScreen Display using libxosd ## +[xosd] + +# set display size [default: 20x4] +Size=20x4 + +# font to use, in XLFD format, as given by "xfontsel" +Font=-*-clean-*-*-*-*-*-160-*-*-*-*-*-* + + +# EOF diff --git a/abs/core/system-templates/templates/cc.orig.sh b/abs/core/system-templates/templates/cc.orig.sh new file mode 100755 index 0000000..d8fd2dc --- /dev/null +++ b/abs/core/system-templates/templates/cc.orig.sh @@ -0,0 +1,35 @@ +#!/usr/bin/perl +# rwraithr added segment for 4 digit channels +# make sure to set this string to +# the corresponding remote in /etc/remoted.conf +#$remote_name = "RC-u43c-1h"; +$remote_name = "$REMOTE_NAME"; + +sub change_channel { + my($channel_digit) = @_; + system ("/usr/bin/irsend SEND_ONCE $remote_name $channel_digit"); + sleep .5; +} + +$channel=$ARGV[0]; +sleep 1; +if (length($channel) > 3) { + change_channel(substr($channel,0,1)); + change_channel(substr($channel,1,1)); + change_channel(substr($channel,2,1)); + change_channel(substr($channel,3,1)); +} elsif (length($channel) > 2) { + change_channel(substr($channel,0,1)); + change_channel(substr($channel,1,1)); + change_channel(substr($channel,2,1)); +} elsif (length($channel) > 1) { + change_channel(substr($channel,0,1)); + change_channel(substr($channel,1,1)); +} else { + change_channel(substr($channel,0,1)); +} +system ("/usr/bin/irsend SEND_ONCE $remote_name SELECT"); + +#system ("sleep 2"); +#system ("/usr/bin/ivtvctl -p 2 -d /dev/video2"); +#system ("/usr/bin/ivtvctl -p 1 -d /dev/video2"); diff --git a/abs/core/system-templates/templates/cc.sh b/abs/core/system-templates/templates/cc.sh new file mode 100755 index 0000000..0cce308 --- /dev/null +++ b/abs/core/system-templates/templates/cc.sh @@ -0,0 +1,5 @@ +#!/bin/bash +/usr/local/bin/cc.orig.sh $@ & +/usr/local/bin/cc_vol.sh & + + diff --git a/abs/core/system-templates/templates/cc_vol.sh b/abs/core/system-templates/templates/cc_vol.sh new file mode 100755 index 0000000..819008d --- /dev/null +++ b/abs/core/system-templates/templates/cc_vol.sh @@ -0,0 +1,5 @@ +#!/bin/bash +sleep 2 +/usr/local/bin/ivtvctl -p 2 -d /dev/video2 +/usr/local/bin/ivtvctl -p 1 -d /dev/video2 + diff --git a/abs/core/system-templates/templates/change_chan.sh b/abs/core/system-templates/templates/change_chan.sh new file mode 100755 index 0000000..5ad8765 --- /dev/null +++ b/abs/core/system-templates/templates/change_chan.sh @@ -0,0 +1,19 @@ +#!/bin/sh +REMOTE_NAME=SA3250 +cmd="$1" + +case $cmd in + [0-9]*) + for digit in $(echo $1 | sed -e 's/./& /g'); do + irsend SEND_ONCE $REMOTE_NAME $digit + sleep 0.3 + # If things work OK with sleep 1, try this for faster channel changes: + # sleep 0.3 + done + ;; + + *) + irsend SEND_ONCE $REMOTE_NAME $cmd + ;; + esac +# /usr/bin/fix_audio.sh & diff --git a/abs/core/system-templates/templates/cron.template b/abs/core/system-templates/templates/cron.template new file mode 100644 index 0000000..3fcea10 --- /dev/null +++ b/abs/core/system-templates/templates/cron.template @@ -0,0 +1,4 @@ +# + + +00 HOUR * * * /usr/bin/sudo /sbin/halt-runit >/dev/null 2>&1 \ No newline at end of file diff --git a/abs/core/system-templates/templates/etcnet/eth/ipv4address b/abs/core/system-templates/templates/etcnet/eth/ipv4address new file mode 100644 index 0000000..1df28d2 --- /dev/null +++ b/abs/core/system-templates/templates/etcnet/eth/ipv4address @@ -0,0 +1,2 @@ +192.168.1.158/24 + diff --git a/abs/core/system-templates/templates/etcnet/eth/ipv4route b/abs/core/system-templates/templates/etcnet/eth/ipv4route new file mode 100644 index 0000000..373a4d1 --- /dev/null +++ b/abs/core/system-templates/templates/etcnet/eth/ipv4route @@ -0,0 +1,2 @@ +default via 192.168.1.1 + diff --git a/abs/core/system-templates/templates/etcnet/eth/iwconfig b/abs/core/system-templates/templates/etcnet/eth/iwconfig new file mode 100644 index 0000000..b1f14e0 --- /dev/null +++ b/abs/core/system-templates/templates/etcnet/eth/iwconfig @@ -0,0 +1,2 @@ +essid home_lan +#key ababababab diff --git a/abs/core/system-templates/templates/etcnet/eth/options b/abs/core/system-templates/templates/etcnet/eth/options new file mode 100644 index 0000000..929da58 --- /dev/null +++ b/abs/core/system-templates/templates/etcnet/eth/options @@ -0,0 +1,7 @@ +# If you want to change current interface name, edit /etc/net/iftab, +# rename current directory and uncomment this line: +TYPE=eth +DISABLED=no +BOOTPROTO=dhcp +ONBOOT=yes +CONFIG_WIRELESS=no diff --git a/abs/core/system-templates/templates/evrouter/MythVantage-4 b/abs/core/system-templates/templates/evrouter/MythVantage-4 new file mode 100644 index 0000000..e69de29 diff --git a/abs/core/system-templates/templates/evrouter/MythVantage-8 b/abs/core/system-templates/templates/evrouter/MythVantage-8 new file mode 100644 index 0000000..e69de29 diff --git a/abs/core/system-templates/templates/evrouter/MythVantage-Full b/abs/core/system-templates/templates/evrouter/MythVantage-Full new file mode 100644 index 0000000..e69de29 diff --git a/abs/core/system-templates/templates/evrouter/MythVantage8-minipac b/abs/core/system-templates/templates/evrouter/MythVantage8-minipac new file mode 100644 index 0000000..0e3a708 --- /dev/null +++ b/abs/core/system-templates/templates/evrouter/MythVantage8-minipac @@ -0,0 +1,3 @@ +"Ultimarc Button/Joystick/Trackball Interface " "" none key/127 "Shell//usr/bin/restartfrontend.sh" +"Ultimarc Button/Joystick/Trackball Interface " "" none key/18 "Shell/eject" + diff --git a/abs/core/system-templates/templates/evrouter/MythVantage8-uhid b/abs/core/system-templates/templates/evrouter/MythVantage8-uhid new file mode 100644 index 0000000..7cb2e34 --- /dev/null +++ b/abs/core/system-templates/templates/evrouter/MythVantage8-uhid @@ -0,0 +1,3 @@ +"Universal Human Interface Device Universal Human Interface Device" "" none key/125 "Shell//usr/bin/restartfrontend.sh" +"Universal Human Interface Device Universal Human Interface Device" "" none key/18 "Shell/eject" + diff --git a/abs/core/system-templates/templates/exports.template b/abs/core/system-templates/templates/exports.template new file mode 100644 index 0000000..b883932 --- /dev/null +++ b/abs/core/system-templates/templates/exports.template @@ -0,0 +1,8 @@ +# /etc/exports +# +# See exports(5) for a description. + +# use exportfs -arv to reread +/myth REPLACEME(rw,all_squash,anonuid=1000,anongid=1000) +/data/var/cache REPLACEME(rw,all_squash,anonuid=1000,anongid=1000) + diff --git a/abs/core/system-templates/templates/fstab.conf.template b/abs/core/system-templates/templates/fstab.conf.template new file mode 100755 index 0000000..f8544cf --- /dev/null +++ b/abs/core/system-templates/templates/fstab.conf.template @@ -0,0 +1,16 @@ +# +# /etc/fstab: static file system information +# +# +none /dev/pts devpts defaults 0 0 +none /dev/shm tmpfs defaults 0 0 + +/dev/cdrom /mnt/cd iso9660 ro,user,noauto,unhide 0 0 +/dev/dvd /mnt/dvd udf ro,user,noauto,unhide 0 0 +/dev/fd0 /mnt/fl vfat user,noauto 0 0 + +/dev/sda1 / reiserfs defaults 0 1 +/dev/sda2 swap swap defaults 0 0 +/dev/sda3 /data reiserfs defaults 0 0 +192.168.1.6:/myth /myth nfs + diff --git a/abs/core/system-templates/templates/gscreensavers b/abs/core/system-templates/templates/gscreensavers new file mode 100644 index 0000000..7f56072 --- /dev/null +++ b/abs/core/system-templates/templates/gscreensavers @@ -0,0 +1,200 @@ +abstractile +anemone +anemotaxis +antinspect +antmaze +antspotlight +apollonian +apple2 +atlantis +attraction +atunnel +barcode +blaster +blinkbox +blitspin +blocktube +boing +bouboule +bouncingcow +boxed +boxfit +braid +bsod +bubble3d +bumps +cage +carousel +ccurve +celtic +circuit +cloudlife +compass +coral +cosmos-slideshow +crackberg +crystal +cube21 +cubenetic +cubestorm +cubicgrid +cwaves +cynosure +dangerball +decayscreen +deco +deluxe +demon +discrete +distort +drift +endgame +engine +epicycle +eruption +euler2d +extrusion +fadeplot +fiberlamp +fireworkx +flame +flipflop +flipscreen3d +fliptext +flow +fluidballs +flurry +flyingtoasters +fontglide +footlogo-floaters +fuzzyflakes +galaxy +gears +gflux +glblur +glcells +gleidescope +glhanoi +glknots +glmatrix +glplanet +glschool +glslideshow +glsnake +gltext +goop +grav +greynetic +halftone +halo +helix +hopalong +hyperball +hypercube +hypertorus +hypnowheel +ifs +imsmap +interaggregate +interference +intermomentary +jigglypuff +jigsaw +juggle +juggler3d +julia +kaleidescope +klein +kumppa +lament +lavalite +lcdscrub +lockward +loop +m6502 +maze +memscroller +menger +metaballs +mirrorblob +moebius +moebiusgears +moire +moire2 +molecule +morph3d +mountain +munch +nerverot +noof +noseguy +pacman +pedal +penetrate +penrose +personal-slideshow +petri +phosphor +photopile +piecewise +pinion +pipes +polyhedra +polyominoes +polytopes +pong +popsquares +providence +pulsar +pyro +qix +queens +rd-bomb +ripples +rocks +rorschach +rotzoomer +rubik +sballs +shadebobs +sierpinski +sierpinski3d +skytentacles +slidescreen +slip +sonar +speedmine +spheremonics +spotlight +sproingies +squiral +stairs +starfish +starwars +stonerview +strange +substrate +superquadrics +swirl +tangram +thornbird +timetunnel +topblock +triangle +truchet +twang +vermiculate +vidwhacker +voronoi +wander +webcollage +whirlwindwarp +wormhole +xanalogtv +xflame +xjack +xlyap +xmatrix +xrayswarm +xspirograph +zoom diff --git a/abs/core/system-templates/templates/modules/lirc_i2c.conf b/abs/core/system-templates/templates/modules/lirc_i2c.conf new file mode 100644 index 0000000..20f33a2 --- /dev/null +++ b/abs/core/system-templates/templates/modules/lirc_i2c.conf @@ -0,0 +1,2 @@ +alias char-major-61 lirc_i2c +options lirc_i2c debug=0 diff --git a/abs/core/system-templates/templates/mysql.service b/abs/core/system-templates/templates/mysql.service new file mode 100644 index 0000000..160450e --- /dev/null +++ b/abs/core/system-templates/templates/mysql.service @@ -0,0 +1,13 @@ + + + + + + mysql_myth on %h + + + _mysql._tcp + 3306 + + + diff --git a/abs/core/system-templates/templates/mysql.txt b/abs/core/system-templates/templates/mysql.txt new file mode 100755 index 0000000..04531b5 --- /dev/null +++ b/abs/core/system-templates/templates/mysql.txt @@ -0,0 +1,29 @@ +DBHostName=127.0.0.1 +DBUserName=mythtv +DBPassword=mythtv +DBName=mythconverg +DBType=QMYSQL3 + +# Set the following if you want to use something other than the +# machine's real hostname for identifying settings in the database. +# This is useful if your hostname changes often, as otherwise +# you'll need to reconfigure mythtv (or futz with the DB) every time. +# TWO HOSTS MUST NOT USE THE SAME VALUE +# +#LocalHostName=my-unique-identifier-goes-here + +# If you want your frontend to be able to wake your MySQL server +# using WakeOnLan, have a look at the following settings: +# +# Set the time the frontend waits (in seconds) between reconnect tries. +# This should be the rough time your MySQL server needs for startup +#WOLsqlReconnectWaitTime=0 +# +# +# This is the amount of retries to wake the MySQL server until the frontend +# gives up +#WOLsqlConnectRetry=5 +# +# +# This is the command executed to wake your MySQL server. +#WOLsqlCommand=echo 'WOLsqlServerCommand not set' diff --git a/abs/core/system-templates/templates/ncid.conf.template b/abs/core/system-templates/templates/ncid.conf.template new file mode 100755 index 0000000..43ef490 --- /dev/null +++ b/abs/core/system-templates/templates/ncid.conf.template @@ -0,0 +1,51 @@ +# tcl/tk configuration file + +# Directory NCID uses to find the helper scripts +set ProgDir /usr/share/ncid + +# default helper script +set EXTPROG ncid-osd + +# Set Host to the NCID server address +# Host defaults to 127.0.0.1 +#set Host 127.0.0.1 +set Host 192.168.1.5 + +# The NCID port default is 3333 +set Port 3333 + +# If the connection to the server is lost, +# try every Delay seconds to reconnect +# The Default: 60 +set Delay 20 + +# If set to 1, display raw data received from the NCID server +# If set to 0, do not display raw data received from the NCID server +# Default: 0 +set Raw 0 + +# If set to 1, output: date time number name +# If set to 0, output: name number +# Default: 0 +set All 1 + +# If set to 1, display formatted CID, and CID log file on connect +# If set to 0, ddo not isplay formatted CID, and CID log file on connect +# Default: 0 +set Verbose 0 + +# If set to 1, display information in terminal progran or external program +# If set to 0, display information using a GUI +# Default: 0 +set NoGUI 1 + +# output name and number to external program +# Default: 0 +set Callprog 1 + +# ring number to call external program +# Default: 0 +set CallOnRing 0 + +# external called program +set Program [list $ProgDir/$EXTPROG] diff --git a/abs/core/system-templates/templates/ncidd.conf.template b/abs/core/system-templates/templates/ncidd.conf.template new file mode 100644 index 0000000..daa2e79 --- /dev/null +++ b/abs/core/system-templates/templates/ncidd.conf.template @@ -0,0 +1,143 @@ +# ncid - Network CallerID Server Config File + +################################ +# Definitions and Line formats # +################################ + +# lines can be blank, or start with the words: send, set # +# +# A line is divided into words, separated by spaces +# +# A word is either a string of non-blank characters, everything +# between double quotes, or an equal sign. +# +# SEND LINE FORMAT: +# send DATATYPE [DATATYPE] ... +# where DATATYPE = cidlog, cidinfo +# +# SET LINE FORMAT: +# set ITEM = VALUE [ITEM = VALUE] ... +# where ITEM = cidalias, cidlog, datalog, initcid, initstr, +# lockfile, port, ttyclocal, ttyport, ttyspeed, +# nomodem + +############################ +# Log and Info for Clients # +############################ + +# Send the call log to a client when connected +# The default is not to send the call log file +send cidlog + +# Send call info (LINE and RING) to a client at each ring +# The default is not to send the call info line +send cidinfo + +############################ +# NCID Communications Port # +############################ + +# The default TCP/IP port is 3333 + set port = 3333 + +####################### +# Alias and Log Files # +####################### + +# The default CID alias file: /etc/ncid/ncidd.alias +# set cidalias = /etc/ncid/ncidd.alias + +# The default CID call log file: /var/log/cidcall.log +# the log file must exist, ncidd will not create it +# (also make the change in /etc/logrotate.d/ncidd +# and also /etc/ncid/ncidrotate.conf) +# set cidlog = /var/log/cidcall.log + +# The default tty data log file: /var/log/ciddata.log +# the log file must exist, ncidd will not create it +# (also make the change in /etc/logrotate.d/ncidd +# and also /etc/ncid/ncidrotate.conf) +# set datalog = /var/log/ciddata.log + +##################### +# TTY Configuration # +##################### + +# The default tty port: /dev/modem +# set ttyport = /dev/cu.modem # Macintosh OS X + set ttyport = /dev/ttyS1 + +# The default tty port speed: 19200 +# The tty speed can be one of: 38400, 19200, 9600, 4800 +# set ttyspeed = 4800 # NetCallerID port speed + +# Ignore tty control signals for internal modems and 3 wire serial cables +# Disable tty control signals: ttyclocal = 1 +# Enable tty control signals: ttyclocal = 0 (default) +# set ttyclocal = 1 + +# The lockfile name is generated automatically +# If tty port is /dev/modem, lockfile is: /var/lock/LCK..modem +# set lockfile = /var/lock/LCK..ttyS0 + +##################### +# Modem or No Modem # +##################### + +# Obtain CallerID from a CID device or a modem +# device: nomodem = 1 (do not send AT commands) +# modem: nomodem = 0 (default - send AT commands) +# set nomodem = 1 + +######################## +# Modem Initialization # +######################## + +# The default modem initialization is: "AT Z S0=0 E1 V1 Q0" +# set initstr = "ATE1V1Q0" +# +# Alternate modem initialization string +# set initstr = "AT&FE1V1Q0+VIP" + +# Addon strings to set modem for Distinctive Ring: +# http://www.modemsite.com/56k/dring.asp +# +# 3Com/USR/TI chipset: ATS41=1 +# Reported Ring Codes: RING A, RING B, RING C +# Rockwell/Conexant chipset: AT-SDR=7 +# Reported Ring Codes: RING 1, RING 2, RING 3 +# Lucent/Agere chipset: AT+VDR=1,0 +# Reported DROF/DRON messages: DRON=5 DROF=11, DRON=5 DROF=34 +# +# Example adds 3Com DR to the default modem initialization +# set initstr = "ATE1V1Q0S41=1" + +# The default for ncidd is to try two CID strings to setup +# CallerID: "AT+VCID=1" and if that fails: "AT#CID=1". +# set initcid = "AT#CID=1" +# +# Alternate CID strings to try if default does not work: +# set initcid = "AT+FCLASS=8;+VCID=1" +# set initcid = "AT-STE=1;+VCID=1" +# set initcid = "AT-STE=1;#CID=1" + +################# +# TiVo Settings # +################# +# set ttyclocal = 1 # TiVo requires CLOCAL +# set ttyport = /dev/ttyS1 # TiVo Modem Port +# set lockfile = /var/tmp/modemlock # needed for TiVo Modem Port +# +# To use a modem on the TiVo serial port +# Tivo (stereo mini jack) -> +# -> (stereo mini plug) TiVo serial cable (9-pin male) -> +# -> (9-pin Female) PC modem cable (25-pin Male -> +# -> (25-pin Female) Modem +# if the modem has switches, disable DTR +# Use this string to set the modem before attaching it to the TiVo: +# AT&F0&D0&B1&W +# +# set ttyport = /dev/ttyS3 # TiVo Serial Port +# +# End TiVo Settings + diff --git a/abs/core/system-templates/templates/real_change_chan.sh b/abs/core/system-templates/templates/real_change_chan.sh new file mode 100755 index 0000000..efeba88 --- /dev/null +++ b/abs/core/system-templates/templates/real_change_chan.sh @@ -0,0 +1,19 @@ +#!/bin/sh +REMOTE_NAME=SA3250 +cmd="$1" + +case $cmd in + [0-9]*) + for digit in $(echo $1 | sed -e 's/./& /g'); do + irsend SEND_ONCE $REMOTE_NAME $digit + sleep 0.3 + # If things work OK with sleep 1, try this for faster channel changes: + # sleep 0.3 + done + ;; + + *) + irsend SEND_ONCE $REMOTE_NAME $cmd + ;; + esac + /usr/bin/fix_audio.sh & diff --git a/abs/core/system-templates/templates/remotes/AOpen-EA65/lircd.conf.ea65 b/abs/core/system-templates/templates/remotes/AOpen-EA65/lircd.conf.ea65 new file mode 100644 index 0000000..a10181d --- /dev/null +++ b/abs/core/system-templates/templates/remotes/AOpen-EA65/lircd.conf.ea65 @@ -0,0 +1,73 @@ +# +# Config file for AOpen XC Cube EA65, EA65-II +# Max Krasnyanskiy +# + +begin remote + name EA65 + bits 24 + eps 10 + aeps 100 + + gap 960000 + toggle_bit 0 + + begin codes + tv/pvr 0x0014814c + photo 0x0017810e + htpc 0x0011811b + dvd/vcd 0x00128100 + cd/mp3 0x00138152 + fm 0x00158111 + video 0x0016810f + + 1 0x0041810b + 2 0x00428115 + 3 0x00438112 + 4 0x00448141 + 5 0x00458119 + 6 0x00468116 + 7 0x00478150 + 8 0x0048811a + 9 0x00498155 + * 0x00328156 + 0 0x00408158 + # 0x0030814d + + menu 0x00188104 + exit 0x001d8154 + enter 0x001e8101 + up 0x00198159 + down 0x001a811c + left 0x001c8102 + right 0x001b815d + + vol+ 0x00298103 + vol- 0x002a814e + ch+ 0x002c8113 + ch- 0x002d8117 + mute 0x00288105 + tune+ 0x002e8144 + tune- 0x002f8148 + mem 0x00318145 + scan 0x00278151 + + display 0x0034811f + eject 0x0035815c + rwnd 0x00228118 + ffwd 0x00218110 + rec 0x002b810a + repeate 0x0038815a + prev 0x00238107 + next 0x00248114 + time/shift 0x00338108 + stop 0x0020811d + play/pause 0x001f8109 + + play-pause 0x0080811d + stop-eject 0x00238107 + mode- 0x00ff1080 + mode+ 0x00ff1180 + end codes +end remote + diff --git a/abs/core/system-templates/templates/remotes/AOpen-EA65/lircrc.ea65 b/abs/core/system-templates/templates/remotes/AOpen-EA65/lircrc.ea65 new file mode 100644 index 0000000..fd96d42 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/AOpen-EA65/lircrc.ea65 @@ -0,0 +1,381 @@ +# +# Max Krasnyanskiy +# + +# +# Xine key bindings. +# + +# start playback +begin + button = dvd/vcd + prog = xine + repeat = 1 + config = Play +end + +# playback pause toggle +begin + button = play/pause + prog = xine + repeat = 1 + config = Pause +end + +# stop playback +begin + button = stop + prog = xine + repeat = 1 + config = Stop +end + +# eject the current medium +begin + button = eject + prog = xine + repeat = 1 + config = Eject +end + +# scan playlist to grab stream infos +begin + button = mem + prog = xine + repeat = 1 + config = ScanPlaylistInfo +end + +# set position to -60 seconds in current stream +begin + button = rwnd + prog = xine + repeat = 1 + config = SeekRelative-60 +end + +# set position to +60 seconds in current stream +begin + button = ffwd + prog = xine + repeat = 1 + config = SeekRelative+60 +end + +# increment playback speed +begin + button = tune+ + prog = xine + repeat = 1 + config = SpeedFaster +end + +# decrement playback speed +begin + button = tune- + prog = xine + repeat = 1 + config = SpeedSlower +end + +# increment audio volume +begin + button = vol+ + prog = xine + repeat = 1 + config = Volume+ +end + +# decrement audio volume +begin + button = vol- + prog = xine + repeat = 1 + config = Volume- +end + +# audio muting toggle +begin + button = mute + prog = xine + repeat = 1 + config = Mute +end + +# select next audio channel +begin + button = ch+ + prog = xine + repeat = 1 + config = AudioChannelNext +end + +# select previous audio channel +begin + button = ch- + prog = xine + repeat = 1 + config = AudioChannelPrior +end + +# interlaced mode toggle +begin + button = scan + prog = xine + repeat = 1 + config = ToggleInterleave +end + +# cycle aspect ratio values +begin + button = display + prog = xine + repeat = 1 + config = ToggleAspectRatio +end + +# jump to Title Menu +begin + button = menu + prog = xine + repeat = 1 + config = TitleMenu +end + +# menu navigate up +begin + button = up + prog = xine + repeat = 1 + config = EventUp +end + +# menu navigate down +begin + button = down + prog = xine + repeat = 1 + config = EventDown +end + +# menu navigate left +begin + button = left + prog = xine + repeat = 1 + config = EventLeft +end + +# menu navigate right +begin + button = right + prog = xine + repeat = 1 + config = EventRight +end + +# menu select +begin + button = enter + prog = xine + repeat = 1 + config = EventSelect +end + +# jump to next chapter +begin + button = next + prog = xine + repeat = 1 + config = EventNext +end + +# jump to previous chapter +begin + button = prev + prog = xine + repeat = 1 + config = EventPrior +end + +# select a subtitle file +begin + button = repeat + prog = xine + repeat = 1 + config = SubSelector +end + +# enter the number 0 +begin + button = 0 + prog = xine + repeat = 1 + config = Number0 +end + +# enter the number 1 +begin + button = 1 + prog = xine + repeat = 1 + config = Number1 +end + +# enter the number 2 +begin + button = 2 + prog = xine + repeat = 1 + config = Number2 +end + +# enter the number 3 +begin + button = 3 + prog = xine + repeat = 1 + config = Number3 +end + +# enter the number 4 +begin + button = 4 + prog = xine + repeat = 1 + config = Number4 +end + +# enter the number 5 +begin + button = 5 + prog = xine + repeat = 1 + config = Number5 +end + +# enter the number 6 +begin + button = 6 + prog = xine + repeat = 1 + config = Number6 +end + +# enter the number 7 +begin + button = 7 + prog = xine + repeat = 1 + config = Number7 +end + +# enter the number 8 +begin + button = 8 + prog = xine + repeat = 1 + config = Number8 +end + +# enter the number 9 +begin + button = 9 + prog = xine + repeat = 1 + config = Number9 +end + +# quit the program +begin + button = exit + prog = xine + repeat = 1 + config = Quit +end + +## +# End of xine key bindings. +## + +## MPlayer lirc setup + +# Show OSD +begin + prog = mplayer + button = menu + repeat = 1 + config = osd +end + +# Pause playback +begin + prog = mplayer + button = play/pause + repeat = 1 + config = pause +end + +# Stop playback and exit +begin + prog = mplayer + button = stop + repeat = 1 + config = stop #quit +end + +# Mute +begin + prog = mplayer + button = mute + repeat = 1 + config = mute +end + +# Seek back 10 seconds +begin + prog = mplayer + button = rwnd + repeat = 1 + config = seek -10 +end + +# Seek forward 30 seconds +begin + prog = mplayer + button = ffwd + repeat = 1 + config = seek +10 +end + +# Quit +begin + prog = mplayer + button = exit + repeat = 1 + config = quit +end + +# Seek forward 10 minutes +begin + prog = mplayer + button = next + repeat = 1 + config = seek +600 +end + +# Seek backward 10 minutes +begin + prog = mplayer + button = prev + repeat = 1 + config = seek -600 +end + +# Toggle full-screen +begin + prog = mplayer + button = display + repeat = 1 + config = vo_fullscreen +end diff --git a/abs/core/system-templates/templates/remotes/AOpen-EA65/preview.jpg b/abs/core/system-templates/templates/remotes/AOpen-EA65/preview.jpg new file mode 100644 index 0000000..2fc223c Binary files /dev/null and b/abs/core/system-templates/templates/remotes/AOpen-EA65/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.asus b/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.asus new file mode 100644 index 0000000..ceadbf0 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.asus @@ -0,0 +1,56 @@ +# +# contributed by Tibor Sipos and +# Stefan Jahn +# +# brand: Asus +# model: Asus TV-Box Remote Control +# + +begin remote + + name Asus TV-Box IR + + bits 8 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 1399999 + toggle_bit 0 + + begin codes + 0 0x0000000000000000 + 1 0x0000000000000008 + 2 0x0000000000000010 + 3 0x0000000000000018 + 4 0x0000000000000020 + 5 0x0000000000000028 + 6 0x0000000000000030 + 7 0x0000000000000038 + 8 0x0000000000000040 + 9 0x0000000000000048 + PREV 0x0000000000000050 + ENTER 0x0000000000000058 + CH+ 0x0000000000000060 + CH- 0x0000000000000068 + VOL+ 0x0000000000000070 + VOL- 0x0000000000000078 + MAXIMIZE 0x0000000000000080 + MUTE 0x0000000000000088 + POWER 0x0000000000000090 + MENU 0x0000000000000098 + UP 0x00000000000000A0 + DOWN 0x00000000000000A8 + LEFT 0x00000000000000B0 + RIGHT 0x00000000000000B8 + CAPTION 0x00000000000000C0 + MTS/SAP 0x00000000000000C8 + DISPLAY 0x00000000000000D0 + SCAN 0x00000000000000D8 + RED 0x00000000000000E0 + GREEN 0x00000000000000E8 + YELLOW 0x00000000000000F0 + BLUE 0x00000000000000F8 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.digimatrix b/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.digimatrix new file mode 100644 index 0000000..a6e9abd --- /dev/null +++ b/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/lircd.conf.digimatrix @@ -0,0 +1,152 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre7(it87) on Sun Aug 29 17:33:17 2004 +# +# contributed by +# +# brand: ASUS +# model no. of remote control: DigiMatrix +# devices being controlled by this remote: +# + +begin remote + + name ASUS_DigiMatrix + bits 16 + flags SPACE_ENC + eps 30 + aeps 100 + + header 8057 4071 + one 479 1534 + zero 479 531 + ptrail 491 + pre_data_bits 8 + pre_data 0x35 + gap 25647 + toggle_bit 0 + + + begin codes + up 0x000000000000E817 + down 0x00000000000018E7 + enter 0x000000000000D02F + left 0x0000000000009867 + right 0x00000000000058A7 + 1 0x00000000000000FF + 2 0x000000000000807F + 3 0x00000000000040BF + 4 0x000000000000C03F + 5 0x00000000000020DF + 6 0x000000000000A05F + 7 0x000000000000609F + 8 0x000000000000E01F + 9 0x00000000000010EF + 0 0x000000000000906F + on_off 0x000000000000B04F + dvd_vcd 0x000000000000F00F + tv 0x00000000000008F7 + os_start 0x00000000000030CF + photo 0x00000000000048B7 + home 0x00000000000044BB + back 0x000000000000A857 + ch+ 0x000000000000B847 + stop 0x000000000000946B + play 0x000000000000C43B + vol+ 0x000000000000F807 + ch- 0x0000000000007887 + step- 0x000000000000E41B + step+ 0x000000000000649B + vol- 0x00000000000004FB + pause 0x00000000000024DB + pre 0x00000000000014EB + next 0x000000000000A45B + mute 0x000000000000847B + rec 0x000000000000D42B + subtitle 0x000000000000C837 + menu 0x00000000000038C7 + dvd_audio 0x00000000000050AF + ui_size 0x0000000000008877 + ui_on_off 0x00000000000028D7 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.2(it87) on Sun Aug 28 18:13:15 2005 +# +# contributed by +# +# brand: ASUS +# model no. of remote control: DigiMatrix Mark 2 +# devices being controlled by this remote: +# + +begin remote + + name ASUS_DigiMatrixMk2 + bits 8 + flags SPACE_ENC + eps 30 + aeps 100 + + header 2666 1378 + one 260 741 + zero 260 279 + ptrail 251 + pre_data_bits 1 + pre_data 0x0 + post_data_bits 8 + post_data 0x3 + gap 10826 + min_repeat 1 + toggle_bit 0 + + + begin codes + power 0x0000000000000084 + tv_dvr 0x0000000000000044 + fm 0x00000000000000C4 + os_start 0x0000000000000024 + music 0x00000000000000A4 + pictures 0x0000000000000064 + video 0x00000000000000E4 + dvd_menu 0x0000000000000014 + up 0x000000000000004C + down 0x00000000000000E0 + left 0x0000000000000010 + right 0x0000000000000040 + back 0x00000000000000B4 + ok 0x0000000000000088 + back_fwd 0x0000000000000074 + rew 0x0000000000000094 + play_pause 0x0000000000000054 + fwd 0x00000000000000D4 + step- 0x0000000000000098 + stop 0x0000000000000048 + step+ 0x0000000000000090 + vol+ 0x0000000000000058 + vol- 0x00000000000000D8 + home 0x00000000000000C8 + ch+ 0x0000000000000050 + ch- 0x00000000000000D0 + mute 0x0000000000000038 + rec 0x0000000000000028 + pc 0x0000000000000030 + 1 0x00000000000000B8 + 2 0x00000000000000A8 + 3 0x00000000000000B0 + 4 0x0000000000000078 + 5 0x0000000000000068 + 6 0x0000000000000070 + 7 0x00000000000000F8 + 8 0x00000000000000E8 + 9 0x00000000000000F0 + 0 0x0000000000000018 + ui_size 0x0000000000000004 + repeat 0x0000000000000008 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/preview.jpg b/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/preview.jpg new file mode 100644 index 0000000..250d6a1 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/ASUS-DiGiMatrix/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircd.conf b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircd.conf new file mode 100644 index 0000000..087b9ad --- /dev/null +++ b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircd.conf @@ -0,0 +1,76 @@ +# brand: ATI Remote Wonder +# model no. of remote control: 5000023600 +# devices being controlled by this remote: ATI USB Receiver +# +# Found on a linpvr.org forum, thanks. + +begin remote + + name ati_remote + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 235966 + toggle_bit 0 + + + begin codes + a 0x00000014D5000000 + b 0x00000014D6010000 + power 0x00000014D7020000 + tv 0x00000014D8030000 + dvd 0x00000014D9040000 + web 0x00000014DA050000 + media_library 0x00000014DB060000 + drag 0x00000014DC070000 + mouse-button_left 0x000000144D780000 + mouse-button_right 0x00000014517C0000 + mouse-up 0x0000001447720000 + mouse-down 0x0000001448730000 + mouse-left 0x0000001445700000 + mouse-right 0x0000001446710000 + mouse-left_up 0x0000001449740000 + mouse-right_up 0x000000144A750000 + mouse-left_down 0x000000144C770000 + mouse-right_down 0x000000144B760000 + vol-up 0x00000014DD080000 + vol-down 0x00000014DE090000 + mute 0x00000014DF0A0000 + chan-up 0x00000014E00B0000 + chan-down 0x00000014E10C0000 + 1 0x00000014E20D0000 + 2 0x00000014E30E0000 + 3 0x00000014E40F0000 + 4 0x00000014E5100000 + 5 0x00000014E6110000 + 6 0x00000014E7120000 + 7 0x00000014E8130000 + 8 0x00000014E9140000 + 9 0x00000014EA150000 + 0 0x00000014EC170000 + dvd-root_menu 0x00000014EB160000 + launch_setup 0x00000014ED180000 + c 0x00000014EE190000 + d 0x00000014F01B0000 + tv_on_demand 0x00000014F11C0000 + max_window 0x00000014F5200000 + cursor-up 0x00000014EF1A0000 + cursor-down 0x00000014F7220000 + cursor-left 0x00000014F21D0000 + cursor-right 0x00000014F41F0000 + ok 0x00000014F31E0000 + e 0x00000014F6210000 + f 0x00000014F8230000 + rewind 0x00000014F9240000 + play 0x00000014FA250000 + fastforward 0x00000014FB260000 + record 0x00000014FC270000 + stop 0x00000014FD280000 + pause 0x00000014FE290000 + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircrc b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircrc new file mode 100644 index 0000000..01519a8 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/lircrc @@ -0,0 +1,636 @@ +# ~/.mythtv/lircrc +# +# MythTV native LIRC config file for +# the ATI-Wonder Remote +# using lirc_atiusb driver +# + +begin +#Jumppoint for Program Guide created in Mythweb + prog = mythtv + button = tv + config = ! + repeat = 5 +end + +begin +#Jumppoint for DVD playback created in Mythweb + prog = mythtv + button = dvd + config = @ + repeat = 5 +end + +begin + prog = mythtv +#Jumppoint for MythWeater created in Mythweb + button = web + config = # + repeat = 5 +end + +begin + prog = mythtv +#Jumppoint for MythVideo created in Mythweb + button = media_library + config = $ + repeat = 5 +end + +begin + prog = mythtv +#Jumppoint for MythWeater created in Mythweb + button = HAND + config = % + repeat = 5 +end + +begin +prog = mythtv +button = 1 +config = 1 +repeat = 5 +end + +begin +prog = mythtv +button = 2 +config = 2 +repeat = 5 +end + +begin +prog = mythtv +button = 3 +config = 3 +repeat = 5 +end + +begin +prog = mythtv +button = 4 +config = 4 +repeat = 5 +end + +begin +prog = mythtv +button = 5 +config = 5 +repeat = 5 +end + +begin +prog = mythtv +button = 6 +config = 6 +repeat = 5 +end + +begin +prog = mythtv +button = 7 +config = 7 +repeat = 5 +end + +begin +prog = mythtv +button = 8 +config = 8 +repeat = 5 +end + +begin +prog = mythtv +button = 9 +config = 9 +repeat = 5 +end + +begin +prog = mythtv +button = 0 +config = 0 +repeat = 5 +end + +begin + prog = mythtv + button = mouse-up + config = Up + repeat = 5 +end + +begin + prog = mythtv + button = mouse-down + config = Down + repeat = 5 +end + +begin + prog = mythtv + button = mouse-left + config = Left + repeat = 5 +end + +begin + prog = mythtv + button = mouse-right + config = Right + repeat = 5 +end + +begin + prog = mythtv + button = mouse-button-right + config = Esc + repeat = 5 +end + +begin + prog = mythtv +# Enter button + button = mouse-button-left + config = Return + repeat = 5 +end + +begin + prog = mythtv + button = power + config = Esc + repeat = 5 +end + +begin + prog = mythtv +# Enter button + button = ok + config = Return + repeat = 5 +end + +begin + prog = mythtv + button = cursor-up + config = Up + repeat = 5 +end + +begin + prog = mythtv + button = cursor-down + config = Down + repeat = 5 +end + +begin + prog = mythtv + button = cursor-left + config = Left + repeat = 5 +end + +begin + prog = mythtv + button = cursor-right + config = Right + repeat = 5 +end + +begin + prog = mythtv + button = D + config = Esc + repeat = 5 +end + +begin +prog = mythtv +button = chan-up +config = Up + repeat = 5 +end + +begin +prog = mythtv +button = chan-down +config = Down + repeat = 5 +end + +begin + prog = mythtv + button = vol-down + repeat = 3 + config = F10 +end + +begin + prog = mythtv + button = vol-up + repeat = 3 + config = F11 +end +begin + prog = mythtv + button = mute + config = F9 + repeat = 5 +end + +begin +# Mute for MythMusic + prog = mythtv + button = mute + config = | + repeat = 5 +end + +begin + prog = mythtv + button = dvd-root_menu + config = M + repeat = 5 +end + +begin + prog = mythtv +# Enter button + button = launch_setup + config = Return + repeat = 5 +end + + +begin + prog = mythtv + button = a + config = S + repeat = 5 +end + +begin + prog = mythtv + button = b + config = I + repeat = 5 +end + +begin + prog = mythtv + button = c + config = T + repeat = 5 +end + +begin +prog = mythtv +# Change focus for PiP (to change channel in the other window) +button = max_window +config = B + repeat = 5 +end + +begin +prog = mythtv +# Toggle PiP on/off +button = tv_on_demand +config = V + repeat = 5 +end + +begin + prog = mythtv + button = rewind + config = Left + repeat = 5 +end + + +begin + prog = mythtv + button = fastforward + config = Right + repeat = 5 +end + +begin +prog = mythtv +button = record +config = R + repeat = 5 +end + +begin +prog = mythtv +button = stop +config = Esc + repeat = 5 +end + +begin +prog = mythtv +button = play +config = P + repeat = 5 +end + +begin +prog = mythtv +button = pause +config = P + repeat = 5 +end + +begin +prog = mythtv +button = e +# Use for backwards commercial skip +config = Q + repeat = 5 +end + +begin +prog = mythtv +button = f +# Use for forward commercial skip +config = Z + repeat = 5 +end + +#Mplayer + +begin +prog = mplayer +button = play +config = pause + repeat = 5 +end + +begin +prog = mplayer +button = pause +config = pause + repeat = 5 +end + +begin +prog = mplayer +button = stop +config = quit + repeat = 5 +end + +begin +prog = mplayer +button = power +config = quit + repeat = 5 +end + +begin +prog = mplayer +button = d +config = quit + repeat = 5 +end + +begin +prog = mplayer +button = mouse-button-right +config = quit + repeat = 5 +end + +begin +prog = mplayer +button = mute +config = mute + repeat = 5 +end + +begin +prog = mplayer +button = e +repeat = 6 +config = seek -10 +end + +begin +prog = mplayer +button = r +repeat = 6 +config = seek 10 +end + +begin +prog = mplayer +button = rewind +repeat = 6 +config = seek -70 +end + +begin +prog = mplayer +button = fastforward +repeat = 6 +config = seek 70 +end + +begin +prog = mplayer +button = vol-down +repeat = 6 +config = volume -1 +end + +begin +prog = mplayer +button = vol-up +repeat = 6 +config = volume 1 +end + +#Xine + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = pause +config = PAUSE +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = power +config = Quit +end + +begin +prog = xine +button = d +config = quit +end + +begin +prog = xine +button = mouse-button-right +config = quit +end + +begin +prog = xine +button = cursor-up +repeat = 4 +config = EventUp +end + +begin +prog = xine +button = cursor-down +repeat = 4 +config = EventDown +end + +begin +prog = xine +button = cursor-left +repeat = 4 +config = EventLeft +end + +begin +prog = xine +button = corsor-right +repeat = 4 +config = EventRight +end + +begin +prog = xine +button = ok +repeat = 0 +config = EventSelect +end + +begin +prog = xine +button = mouse-up +repeat = 4 +config = EventUp +end + +begin +prog = xine +button = mouse-down +repeat = 4 +config = EventDown +end + +begin +prog = xine +button = mouse-left +repeat = 4 +config = EventLeft +end + +begin +prog = xine +button = mouse-right +repeat = 4 +config = EventRight +end + +begin +prog = xine +button = mouse-button-left +repeat = 0 +config = EventSelect +end + +begin +prog = xine +button = dvd-root_menu +repeat = 0 +config = Menu +end + +#vol down +begin +prog = xine +button = vol-down +repeat = 1 +config = Volume- +end + +#vol up +begin +prog = xine +button = vol-up +repeat = 1 +config = Volume+ +end + +begin +prog = xine +button = tv_on_demand +repeat = 1 +config = ZoomIn +end + +begin +prog = xine +button = max_window +repeat = 1 +config = ZoomOut +end + +#skip chapter forward +begin +prog = xine +button = fastforward +repeat = 1 +config = EventNext +end + +#skip chapter backward +begin +prog = xine +button = rewind +repeat = 1 +config = EventPrior +end + +begin +prog = xine +button = f +repeat = 2 +config = SeekRelative+45 +end + +begin +prog = xine +button = e +repeat = 2 +config = SeekRelative-45 +end + + + + + diff --git a/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/preview.jpg b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/preview.jpg new file mode 100644 index 0000000..351a111 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircd.conf b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircd.conf new file mode 100644 index 0000000..6b1172a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircd.conf @@ -0,0 +1,198 @@ + +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.0pre3(atiusb) on Tue Feb 7 19:33:37 2006 +# +# contributed by +# edited 2/19/2006 for dual code generation problem +# +# brand: ATI Remote Wonder Plus / RW3 +# model no. of remote control: 5000026900 +# devices being controlled by this remote: 500002700 +# + +begin remote + + name ATI_RWP + bits 24 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + post_data_bits 16 + post_data 0x0 + gap 243966 + min_repeat 2 + toggle_bit 0 + + + begin codes + + A 0x155580 + A 0x15D500 + + B 0x155681 + B 0x15D601 + + ? 0x155A85 + ? 0x15da05 + + POWER 0x15d702 + POWER 0x155782 + + FM 0x15F11C + FM 0x15719C + + TV 0x155883 + TV 0x15d803 + + GUIDE 0x15DB06 + GUIDE 0x155B86 + + TV2 0x15FF2A + TV2 0x157FAA + + DVD 0x15D904 + DVD 0x155984 + + Vol+ 0x155D88 + Vol+ 0x15dd08 + + Vol- 0x15DE09 + Vol- 0x155e89 + + Ch+ 0x15608B + Ch+ 0x15e00b + + Ch- 0x15E10C + Ch- 0x15618c + + Mute 0x155F8A + Mute 0x15df0a + + ATI 0x15022D + ATI 0x1582ad + + Maximize 0x1575A0 + Maximize 0x15f520 + + Hand 0x15dc07 + Hand 0x155c87 + + Mouse_LeftButton 0x154d78 + Mouse_LeftButton 0x15cdf8 + + Mouse_RightButton 0x15517c + Mouse_RightButton 0x15d1fc + + Mouse_Up 0x15C7F2 + Mouse_Up 0x154772 + + Mouse_Down 0x154873 + Mouse_Down 0x15c8f3 + + Mouse_Left 0x154570 + Mouse_Left 0x15c5f0 + + Mouse_Right 0x154671 + Mouse_Right 0x15c6f1 + + Mouse_UpRight 0x154A75 + Mouse_UpRight 0x15caf5 + + Mouse_UpLeft 0x15C9F4 + Mouse_UpLeft 0x154974 + + Mouse_DownRight 0x15CBF6 + Mouse_DownRight 0x154b76 + + Mouse_DownLeft 0x154c77 + Mouse_DownLeft 0x15ccf7 + + Play 0x157AA5 + Play 0x15fa25 + + Pause 0x15FE29 + Pause 0x157ea9 + + Stop 0x157DA8 + Stop 0x15fd28 + + Previous 0x15F924 + Previous 0x1579a4 + + Next 0x157BA6 + Next 0x15fb26 + + Record 0x15fc27 + Record 0x157ca7 + + C 0x156E99 + C 0x15ee19 + + D 0x15F01B + D 0x15709b + + E 0x1576A1 + E 0x15f621 + + F 0x15F823 + F 0x1578a3 + + OK 0x15739E + OK 0x15f31e + + Information 0x15012C + Information 0x1581ac + + Clock 0x1580AB + Clock 0x15002b + + 1 0x15E20D + 1 0x15628d + 2 0x15638E + 2 0x15e30e + 3 0x15E40F + 3 0x15648f + 4 0x156590 + 4 0x15e510 + 5 0x15E611 + 5 0x156691 + 6 0x156792 + 6 0x15e712 + 7 0x15E813 + 7 0x156893 + 8 0x156994 + 8 0x15e914 + 9 0x15EA15 + 9 0x156a95 + 0 0x156C97 + 0 0x15ec17 + + Checkmark 0x15ED18 + Checkmark 0x156d98 + + Dropdown 0x156B96 + Dropdown 0x15eb16 + + Arrow_Up 0x156F9A + Arrow_Up 0x15EF1A + + Arrow_Down 0x15F722 + Arrow_Down 0x1577a2 + + Arrow_Right 0x15749F + Arrow_Right 0x15f41f + + Arrow_Left 0x15F21D + Arrow_Left 0x15729d + + end codes + +end remote + + + diff --git a/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircrc b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircrc new file mode 100644 index 0000000..85365c4 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/lircrc @@ -0,0 +1,258 @@ +begin +prog = mythtv +button = A +config = E +repeat = 5 +end + +begin +prog = mythtv +button = B +config = O +repeat = 5 +end + +begin +prog = mythtv +button = Stop +config = Esc +repeat = 5 +end + +begin +prog = mythtv +button = Next +config = U +repeat = 5 +end + +begin +prog = mythtv +button = Maximize +config = V +repeat = 5 +end + +begin +prog = mythtv +button = Pause +config = P +repeat = 5 +end + +begin +prog = mythtv +button = Play +config = P +repeat = 5 +end + +begin +prog = mythtv +button = Mute +config = | +repeat = 5 +end + +begin +prog = mythtv +button = Vol- +config = [ +repeat = 5 +end + +begin +prog = mythtv +button = Vol+ +config = ] +repeat = 5 +end + +begin +prog = mythtv +button = f +config = PgDown +repeat = 5 +end + +begin +prog = mythtv +button = d +config = PgUp +repeat = 5 +end + +begin +prog = mythtv +button = c +config = F4 +repeat = 5 +end + +begin +prog = mythtv +button = e +config = Esc +repeat = 5 +end + +begin +prog = mythtv +button = Arrow_Right +config = Right +repeat = 5 +end + +begin +prog = mythtv +button = Arrow_Left +config = Left +repeat = 5 +end + +begin +prog = mythtv +button = Arrow_Up +config = Up +repeat = 5 +end + +begin +prog = mythtv +button = Arrow_Down +config = Down +repeat = 5 +end + +begin +prog = mythtv +button = Ch+ +config = Up +repeat = 5 +end + +begin +prog = mythtv +button = Ch- +config = Down +repeat = 5 +end + +begin +prog = mythtv +button = OK +config = Return +repeat = 5 +end + +begin +prog = mythtv +button = 1 +config = 1 +repeat = 5 +end + +begin +prog = mythtv +button = 2 +config = 2 +repeat = 5 +end + +begin +prog = mythtv +button = 3 +config = 3 +repeat = 5 +end + +begin +prog = mythtv +button = 4 +config = 4 +repeat = 5 +end + +begin +prog = mythtv +button = 5 +config = 5 +repeat = 5 +end + +begin +prog = mythtv +button = 6 +config = 6 +repeat = 5 +end + +begin +prog = mythtv +button = 7 +config = 7 +repeat = 5 +end + +begin +prog = mythtv +button = 8 +config = 8 +repeat = 5 +end + +begin +prog = mythtv +button = 9 +config = 9 +repeat = 5 +end + +begin +prog = mythtv +button = 0 +config = 0 +repeat = 5 +end + +begin +prog = mythtv +button = Information +config = i +repeat = 5 +end + +begin +prog = mythtv +button = Checkmark +config = Enter +repeat = 5 +end + +begin +prog = mythtv +button = Dropdown +config = M +repeat = 5 +end + +begin +prog = mythtv +button = TV +config = F9 +repeat = 5 +end + +begin +prog = mythtv +button = GUIDE +config = M +repeat = 5 +end + +begin +prog = mythtv +button = Clock +config = I +repeat = 5 +end diff --git a/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/preview.jpg b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/preview.jpg new file mode 100644 index 0000000..36612e5 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/ATI_Remote_Wonder_Plus/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Avermedia_77x/lircd-avermedia77x.conf b/abs/core/system-templates/templates/remotes/Avermedia_77x/lircd-avermedia77x.conf new file mode 100755 index 0000000..d30e172 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Avermedia_77x/lircd-avermedia77x.conf @@ -0,0 +1,66 @@ +# +# this config file was automatically generated +# using lirc-0.8.0(userspace) on Mon Feb 20 23:15:48 2006 +# +# contributed by Joris Patroons +# +# brand: AVerMedia +# model no. of remote control: Unknown +# devices being controlled by this remote: +# AVerTV DVB-T 771 + +begin remote + + name a771 + bits 32 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9078 4437 + one 615 1631 + zero 615 515 + ptrail 620 + repeat 9080 2189 + gap 108056 + toggle_bit 0 + + + begin codes + SOURCE 0x40BF807F + TELETEXT 0x40BF40BF + POWER 0x40BF00FF + 1 0x40BFA05F + 2 0x40BF609F + 3 0x40BFE01F + 4 0x40BF906F + 5 0x40BF50AF + 6 0x40BFD02F + 7 0x40BFB04F + 8 0x40BF708F + 9 0x40BFF00F + 0 0x40BF8877 + AUDIO 0x40BF10EF + FULLSCREEN 0x40BF30CF + DISPLAY 0x40BF48B7 + LOOP 0x40BFC837 + PREVIEW 0x40BF08F7 + BACKWARD 0x40BFA857 + FORWARD 0x40BF6897 + CAPTURE 0x40BFE817 + MUTE 0x40BF28D7 + RECORD 0x40BF9867 + PAUSE 0x40BF58A7 + STOP 0x40BFD827 + PLAY 0x40BF18E7 + RED 0x40BFB847 + GREEN 0xC03F807F + YELLOW 0x40BF38C7 + BLUE 0xC03F00FF + VOL_DOWN 0x40BF7887 + VOL_UP 0x40BFF807 + CH_DOWN 0xC03F40BF + CH_UP 0xC03FC03F + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Avermedia_77x/lircrc-avermedia771.txt b/abs/core/system-templates/templates/remotes/Avermedia_77x/lircrc-avermedia771.txt new file mode 100755 index 0000000..2aa9e09 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Avermedia_77x/lircrc-avermedia771.txt @@ -0,0 +1,475 @@ +# Channel Up +begin +prog = mythtv +button = CH_UP +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH_DOWN +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = CH_UP +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = CH_DOWN +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL_UP +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL_DOWN +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = POWER +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = PAUSE +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FORWARD +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = BACKWARD +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = CAPTURE +config = R +end + +# Delete +begin +prog = mythtv +button = RED +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = PREVIEW +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = TELETEXT +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = DISPLAY +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = PREVIEW +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = TELETEXT +config = osd +end + +# Pause playback +begin +prog = mplayer +button = PAUSE +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = BACKWARD +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FORWARD +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FULLSCREEN +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = PAUSE +config = Pause +end + +begin +prog = xine +button = +config = EventUp +end + +begin +prog = xine +button = +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = PREVIEW +config = Menu +end + +begin +prog = xine +button = FORWARD +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = BACKWARD +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL_UP +config = Volume+ +end + +begin +prog = xine +button = VOL_DOWN +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = TELETEXT +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Avermedia_77x/preview.jpg b/abs/core/system-templates/templates/remotes/Avermedia_77x/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Avermedia_77x/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Avermedia_98/lircd-avermedia98.conf b/abs/core/system-templates/templates/remotes/Avermedia_98/lircd-avermedia98.conf new file mode 100755 index 0000000..bfc07b9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Avermedia_98/lircd-avermedia98.conf @@ -0,0 +1,97 @@ +# +# this config file was automatically generated +# using lirc-0.6.1 on Tue Apr 25 14:31:21 2000 +# +# contributed by Christoph Bartelmus +# +# brand: AVerMedia +# model: ? (36 buttons) +# supported devices: TVPhone98 card (ID 0x00031461) +# TVCapture98 card (ID 0x00041461) +# +# This config file does work with both homebrew receivers and +# original AVerMedia TV cards !!! +# + +begin remote + + name TVPhone98 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9078 4437 + one 615 1631 + zero 615 515 + ptrail 620 + repeat 9080 2189 + pre_data_bits 16 + pre_data 0x40BF + gap 108056 + repeat_bit 0 + + begin codes + POWER 0x00000000000000FF + TV/FM 0x000000000000807F + CD 0x00000000000040BF + TELETEXT 0x000000000000C03F + VIDEO 0x00000000000020DF + 1 0x000000000000A05F + 2 0x000000000000609F + 3 0x000000000000E01F + AUDIO 0x00000000000010EF + 4 0x000000000000906F + 5 0x00000000000050AF + 6 0x000000000000D02F + FULLSCREEN 0x00000000000030CF + 7 0x000000000000B04F + 8 0x000000000000708F + 9 0x000000000000F00F + + PREVIEW 0x00000000000008F7 + 0 0x0000000000008877 + DISPLAY 0x00000000000048B7 + LOOP 0x000000000000C837 + MUTE 0x00000000000028D7 + AUTOSCAN 0x000000000000A857 + FREEZE 0x0000000000006897 + CAPTURE 0x000000000000E817 + PLAY 0x00000000000018E7 + RECORD 0x0000000000009867 + PAUSE 0x00000000000058A7 + STOP 0x000000000000D827 + YELLOW 0x00000000000038C7 + RED 0x000000000000B847 + VOL_DOWN 0x0000000000007887 + VOL_UP 0x000000000000F807 + end codes + +end remote + +begin remote + + name TVPhone98_ext + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9078 4437 + one 615 1631 + zero 615 515 + ptrail 620 + repeat 9080 2189 + pre_data_bits 16 + pre_data 0xC03F + gap 108056 + repeat_bit 0 + + begin codes + BLUE 0x00000000000000FF + GREEN 0x000000000000807F + CH_DOWN 0x00000000000040BF + CH_UP 0x000000000000C03F + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Avermedia_98/lircrc-avermedia98.txt b/abs/core/system-templates/templates/remotes/Avermedia_98/lircrc-avermedia98.txt new file mode 100755 index 0000000..f8fb43a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Avermedia_98/lircrc-avermedia98.txt @@ -0,0 +1,477 @@ +# Channel Up +begin +prog = mythtv +button = CH_UP +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH_DOWN +config = Down +end + +# General Left +begin +prog = mythtv +button = LEFT +config = Left +end + +# General Right +begin +prog = mythtv +button = RIGHT +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = CH_UP +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = CH_DOWN +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL_UP +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL_DOWN +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = UNLABELED +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = POWER +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = PAUSE +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = +config = Right +end + +# Rewind (10 sec default) +begin +remote = TVPhone98_ext +prog = mythtv +button = BLUE +config = Left +end + +# Skip forward (10 min default) +begin +remote = TVPhone98_ext +prog = mythtv +button = GREEN +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = CAPTURE +config = R +end + +# Delete +begin +prog = mythtv +button = RED +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = YELLOW +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = TELETEXT +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = DISPLAY +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = VIDEO +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = TELETEXT +config = osd +end + +# Pause playback +begin +prog = mplayer +button = PAUSE +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FULLSCREEN +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = PAUSE +config = Pause +end + +begin +prog = xine +button = +config = EventUp +end + +begin +prog = xine +button = +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = PREVIEW +config = Menu +end + +begin +prog = xine +button = +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL_UP +config = Volume+ +end + +begin +prog = xine +button = VOL_DOWN +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = TELETEXT +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Avermedia_98/preview.jpg b/abs/core/system-templates/templates/remotes/Avermedia_98/preview.jpg new file mode 100644 index 0000000..a2382d2 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Avermedia_98/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Avertv_USB/lircd-avertvusb.conf b/abs/core/system-templates/templates/remotes/Avertv_USB/lircd-avertvusb.conf new file mode 100755 index 0000000..391c8d4 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Avertv_USB/lircd-avertvusb.conf @@ -0,0 +1,65 @@ +# +# this config file was created by using lirc-0.8 on Thu Sept 14 2006 +# +# contributed by elturisto +# +# brand: AVerMedia +# model no. of remote control: RM-FP +# devices being controlled by this remote: AVerMedia DVB-T USB2.0 (A800) +# + +begin remote + + name rmfp + bits 32 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8967 4524 + one 565 1682 + zero 565 559 + ptrail 561 + repeat 8968 2276 + gap 107905 + toggle_bit 0 + + + begin codes + power 0x00010074 + source 0x00010094 + 1 0x00010002 + 2 0x00010003 + 3 0x00010004 + 4 0x00010005 + 5 0x00010006 + 6 0x00010007 + 7 0x00010008 + 8 0x00010009 + 9 0x0001000a + 0 0x0001000b + display 0x00010095 + snapshot 0x00010069 + chrtn 0x0001006a + chprev 0x000100ca + chup 0x00010192 + chdown 0x00010193 + voldown 0x00010072 + volup 0x00010073 + fullscreen 0x00010174 + mute 0x00010071 + audio 0x00010188 + record 0x000100a7 + play 0x000100cf + stop 0x00010080 + pause 0x000100a4 + rewind 0x0001009e + forward 0x0001009f + teletext 0x00010184 + last 0x00010194 + next 0x00010195 + epg 0x0001016d + menu 0x0001008b + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Avertv_USB/lircrc-avertvusb.txt b/abs/core/system-templates/templates/remotes/Avertv_USB/lircrc-avertvusb.txt new file mode 100755 index 0000000..dc28857 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Avertv_USB/lircrc-avertvusb.txt @@ -0,0 +1,482 @@ +# Channel Up +begin +prog = mythtv +button = chup +config = Up +end + +# Channel Down +begin +prog = mythtv +button = chdown +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = chup +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = chdown +config = Down +end + +# Volume Up +begin +prog = mythtv +button = volup +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = voldown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = forward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = next +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = last +config = PgUp +end + +# Record +begin +prog = mythtv +button = record +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = epg +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = menu +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = display +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = chprev +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = teletext +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = snapshot +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = forward +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = rewind +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = next +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = last +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = display +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = chup +config = EventUp +end + +begin +prog = xine +button = chdown +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = menu +config = Menu +end + +begin +prog = xine +button = forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = volup +config = Volume+ +end + +begin +prog = xine +button = voldown +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = next +config = EventNext +end + +begin +prog = xine +button = last +config = EventPrior +end + +begin +prog = xine +button = display +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Avertv_USB/preview.jpg b/abs/core/system-templates/templates/remotes/Avertv_USB/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Avertv_USB/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Cinergy/lircd-cinergy400600.conf b/abs/core/system-templates/templates/remotes/Cinergy/lircd-cinergy400600.conf new file mode 100755 index 0000000..8b0bd3c --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Cinergy/lircd-cinergy400600.conf @@ -0,0 +1,67 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.7.0 (devinput) on Sun Feb 27 18:29:35 2005 +# +# +# brand: Terratec_Cinergy_Remote +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + +name Terratec_Cinergy_Remote +bits 16 +eps 30 +aeps 100 +one 0 0 +zero 0 0 +pre_data_bits 16 +pre_data 0x8001 +gap 237493 +toggle_bit 0 + + + begin codes + power 0x0000000000000074 + app 0x0000000000000094 + zoom 0x0000000000000174 + 1 0x000000000000004F + 2 0x0000000000000050 + 3 0x0000000000000051 + 4 0x000000000000004B + 5 0x000000000000004C + 6 0x000000000000004D + 7 0x0000000000000047 + 8 0x0000000000000048 + 9 0x0000000000000049 + 0 0x0000000000000052 + chup 0x0000000000000192 + chdown 0x0000000000000193 + volup 0x0000000000000073 + voldown 0x0000000000000072 + av 0x0000000000000182 + -/-- 0x0000000000000045 + audio 0x0000000000000188 + mute 0x0000000000000071 + left 0x0000000000000069 + right 0x000000000000006A + up 0 x0000000000000067 + down 0x000000000000006C + mouseleft 0x0000000000000110 + mouseright 0x0000000000000111 + text 0x0000000000000096 + rew 0x00000000000000A8 + fwd 0x000000000000009F + rec 0x00000000000000A7 + play 0x00000000000000CF + prev 0x00000000000000A5 + next 0x00000000000000A3 + pause 0x0000000000000077 + stop 0x0000000000000080 + +end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Cinergy/lircrc-cinergy400600.txt b/abs/core/system-templates/templates/remotes/Cinergy/lircrc-cinergy400600.txt new file mode 100755 index 0000000..5ac2227 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Cinergy/lircrc-cinergy400600.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = chup +config = Up +end + +# Channel Down +begin +prog = mythtv +button = chdown +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = volup +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = voldown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = fwd +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rew +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = next +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = prev +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = app +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = app +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rew +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = fwd +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = next +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = prev +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = app +config = Menu +end + +begin +prog = xine +button = next +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = prev +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = volup +config = Volume+ +end + +begin +prog = xine +button = voldown +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = next +config = EventNext +end + +begin +prog = xine +button = prev +config = EventPrior +end + +begin +prog = xine +button = av +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Cinergy/preview.jpg b/abs/core/system-templates/templates/remotes/Cinergy/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Cinergy/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Cinergy_1400/lircd-cinergy1400.conf b/abs/core/system-templates/templates/remotes/Cinergy_1400/lircd-cinergy1400.conf new file mode 100755 index 0000000..8458cfe --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Cinergy_1400/lircd-cinergy1400.conf @@ -0,0 +1,71 @@ +# +# this config file was automatically generated +# using lirc-0.7.2(serial) on Fri Oct 14 16:29:58 2005 +# +# contributed by Sebastian Kraft +# +# brand: Terratec +# model no. of remote control: Cinergy 1400-T +# devices being controlled by this remote: +# + +begin remote + + name Terratec_Cinergy_1400-T + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9007 4495 + one 557 1683 + zero 557 555 + ptrail 546 + pre_data_bits 16 + pre_data 0x20D7 + gap 110968 + toggle_bit 0 + + + begin codes + 0 0x30CF + 1 0x40BF + 2 0xC03F + 3 0x20DF + 4 0xA05F + 5 0x609F + 6 0xE01F + 7 0x10EF + 8 0x906F + 9 0x50AF + fullscreen 0x18E7 + osd 0x708F + volumeup 0x38C7 + volumedown 0x7887 + channelup 0xD827 + channeldown 0xF807 + epg 0xF00F + av 0xD02F + power 0x807F + teletext 0xA857 + clock 0xE817 + mute 0xB847 + pause 0x02FD + play 0x32CD + record 0x1AE5 + rewind 0x2AD5 + stop 0x12ED + forward 0x3AC5 + up 0x08F7 + down 0x28D7 + left 0x8877 + right 0xC837 + info 0x6897 + ok 0x48B7 + tab 0x58A7 + audio 0x9867 + clock 0xE817 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Cinergy_1400/lircrc-cinergy1400.txt b/abs/core/system-templates/templates/remotes/Cinergy_1400/lircrc-cinergy1400.txt new file mode 100755 index 0000000..8dd42c5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Cinergy_1400/lircrc-cinergy1400.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = channelup +config = Up +end + +# Channel Down +begin +prog = mythtv +button = channeldown +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = volumeup +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = volumedown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ok +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = forward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = record +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = osd +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = epg +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = info +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = tab +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = teletext +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = osd +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = forward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = fullscreen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = ok +config = EventSelect +end + +begin +prog = xine +button = epg +config = Menu +end + +begin +prog = xine +button = forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = volumeup +config = Volume+ +end + +begin +prog = xine +button = volumedown +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = channelup +config = EventNext +end + +begin +prog = xine +button = channeldown +config = EventPrior +end + +begin +prog = xine +button = info +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Cinergy_1400/preview.jpg b/abs/core/system-templates/templates/remotes/Cinergy_1400/preview.jpg new file mode 100644 index 0000000..b777ac9 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Cinergy_1400/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Cinergy_T2/lircd-cinergyT2.conf b/abs/core/system-templates/templates/remotes/Cinergy_T2/lircd-cinergyT2.conf new file mode 100755 index 0000000..168743b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Cinergy_T2/lircd-cinergyT2.conf @@ -0,0 +1,72 @@ +# +# this config file was generated +# using lirc-0.7.1pre2(serial) kantonix VDR +# +# contributed by Stefan Bernshausen +# +# brand: Terratec +# model no. of remote control: Cinergy T2 +# devices being controlled by this remote: +# + +begin remote + + name Terratec_Cinergy_T2 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9007 4495 + one 557 1683 + zero 557 555 + ptrail 546 + pre_data_bits 16 + pre_data 0x20D7 + gap 110968 + toggle_bit 0 + + + begin codes + 0 0x30CF + 1 0x40BF + 2 0xC03F + 3 0x20DF + 4 0xA05F + 5 0x609F + 6 0xE01F + 7 0x10EF + 8 0x906F + 9 0x50AF + Green 0x18E7 + Osd 0x708F + Volume+ 0x38C7 + Volume- 0x7887 + Ch+ 0xD827 + Ch- 0xF807 + Epg 0xF00F + Av 0xD02F + Power 0x807F + Txt 0xA857 + Red 0xE817 + Mute 0xB847 + Pause 0x02FD + Play 0x32CD + Record 0x1AE5 + Fback 0x2AD5 + Stop 0x12ED + Ffor 0x3AC5 + Up 0x08F7 + Down 0x28D7 + Left 0x8877 + Right 0xC837 + Info 0x6897 + Ok 0x48B7 + Blue 0x58A7 + Yellow 0x9867 + Red 0xE817 + Back 0xB04F + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Cinergy_T2/lircrc-cinergyT2.txt b/abs/core/system-templates/templates/remotes/Cinergy_T2/lircrc-cinergyT2.txt new file mode 100755 index 0000000..c4042fe --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Cinergy_T2/lircrc-cinergyT2.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = Ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = Left +config = Left +end + +# General Right +begin +prog = mythtv +button = Right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = Up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = Down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = Volume+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = Volume- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = Ok +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = Ffor +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = Fback +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +config = R +end + +# Delete +begin +prog = mythtv +button = Red +config = D +end + +# OSD browse +begin +prog = mythtv +button = Osd +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Epg +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = Info +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = Green +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = Blue +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Osd +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Fback +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = Ffor +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = Ch+ +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = Ch- +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = Blue +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = Stop +config = Quit +end + +begin +prog = xine +button = Pause +config = Pause +end + +begin +prog = xine +button = Up +config = EventUp +end + +begin +prog = xine +button = Down +config = EventDown +end + +begin +prog = xine +button = Left +config = EventLeft +end + +begin +prog = xine +button = Right +config = EventRight +end + +begin +prog = xine +button = Ok +config = EventSelect +end + +begin +prog = xine +button = Epg +config = Menu +end + +begin +prog = xine +button = Ffor +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = Fback +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = Volume+ +config = Volume+ +end + +begin +prog = xine +button = Volume- +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = Stop +config = RootMenu +end + +begin +prog = xine +button = Ch+ +config = EventNext +end + +begin +prog = xine +button = Ch- +config = EventPrior +end + +begin +prog = xine +button = Info +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Cinergy_T2/preview.jpg b/abs/core/system-templates/templates/remotes/Cinergy_T2/preview.jpg new file mode 100644 index 0000000..b777ac9 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Cinergy_T2/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Compro/lircd-compro.conf b/abs/core/system-templates/templates/remotes/Compro/lircd-compro.conf new file mode 100755 index 0000000..41f2c7b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Compro/lircd-compro.conf @@ -0,0 +1,364 @@ +begin remote + name linux-input-layer + bits 32 + begin codes + ESC 0x10001 + 1 0x10002 + 2 0x10003 + 3 0x10004 + 4 0x10005 + 5 0x10006 + 6 0x10007 + 7 0x10008 + 8 0x10009 + 9 0x1000a + 0 0x1000b + MINUS 0x1000c + EQUAL 0x1000d + BACKSPACE 0x1000e + TAB 0x1000f + Q 0x10010 + W 0x10011 + E 0x10012 + R 0x10013 + T 0x10014 + Y 0x10015 + U 0x10016 + I 0x10017 + O 0x10018 + P 0x10019 + LEFTBRACE 0x1001a + RIGHTBRACE 0x1001b + ENTER 0x1001c + LEFTCTRL 0x1001d + A 0x1001e + S 0x1001f + D 0x10020 + F 0x10021 + G 0x10022 + H 0x10023 + J 0x10024 + K 0x10025 + L 0x10026 + SEMICOLON 0x10027 + APOSTROPHE 0x10028 + GRAVE 0x10029 + LEFTSHIFT 0x1002a + BACKSLASH 0x1002b + Z 0x1002c + X 0x1002d + C 0x1002e + V 0x1002f + B 0x10030 + N 0x10031 + M 0x10032 + COMMA 0x10033 + DOT 0x10034 + SLASH 0x10035 + RIGHTSHIFT 0x10036 + KPASTERISK 0x10037 + LEFTALT 0x10038 + SPACE 0x10039 + CAPSLOCK 0x1003a + F1 0x1003b + F2 0x1003c + F3 0x1003d + F4 0x1003e + F5 0x1003f + F6 0x10040 + F7 0x10041 + F8 0x10042 + F9 0x10043 + F10 0x10044 + NUMLOCK 0x10045 + SCROLLLOCK 0x10046 + KP7 0x10047 + KP8 0x10048 + KP9 0x10049 + KPMINUS 0x1004a + KP4 0x1004b + KP5 0x1004c + KP6 0x1004d + KPPLUS 0x1004e + KP1 0x1004f + KP2 0x10050 + KP3 0x10051 + KP0 0x10052 + KPDOT 0x10053 + 103RD 0x10054 + F13 0x10055 + 102ND 0x10056 + F11 0x10057 + F12 0x10058 + F14 0x10059 + F15 0x1005a + F16 0x1005b + F17 0x1005c + F18 0x1005d + F19 0x1005e + F20 0x1005f + KPENTER 0x10060 + RIGHTCTRL 0x10061 + KPSLASH 0x10062 + SYSRQ 0x10063 + RIGHTALT 0x10064 + LINEFEED 0x10065 + HOME 0x10066 + UP 0x10067 + PAGEUP 0x10068 + LEFT 0x10069 + RIGHT 0x1006a + END 0x1006b + DOWN 0x1006c + PAGEDOWN 0x1006d + INSERT 0x1006e + DELETE 0x1006f + MACRO 0x10070 + MUTE 0x10071 + VOLUMEDOWN 0x10072 + VOLUMEUP 0x10073 + POWER 0x10074 + KPEQUAL 0x10075 + KPPLUSMINUS 0x10076 + PAUSE 0x10077 + F21 0x10078 + F22 0x10079 + F23 0x1007a + F24 0x1007b + KPCOMMA 0x1007c + LEFTMETA 0x1007d + RIGHTMETA 0x1007e + COMPOSE 0x1007f + STOP 0x10080 + AGAIN 0x10081 + PROPS 0x10082 + UNDO 0x10083 + FRONT 0x10084 + COPY 0x10085 + OPEN 0x10086 + PASTE 0x10087 + FIND 0x10088 + CUT 0x10089 + HELP 0x1008a + MENU 0x1008b + CALC 0x1008c + SETUP 0x1008d + SLEEP 0x1008e + WAKEUP 0x1008f + FILE 0x10090 + SENDFILE 0x10091 + DELETEFILE 0x10092 + XFER 0x10093 + PROG1 0x10094 + PROG2 0x10095 + WWW 0x10096 + MSDOS 0x10097 + COFFEE 0x10098 + DIRECTION 0x10099 + CYCLEWINDOWS 0x1009a + MAIL 0x1009b + BOOKMARKS 0x1009c + COMPUTER 0x1009d + BACK 0x1009e + FORWARD 0x1009f + CLOSECD 0x100a0 + EJECTCD 0x100a1 + EJECTCLOSECD 0x100a2 + NEXTSONG 0x100a3 + PLAYPAUSE 0x100a4 + PREVIOUSSONG 0x100a5 + STOPCD 0x100a6 + RECORD 0x100a7 + REWIND 0x100a8 + PHONE 0x100a9 + ISO 0x100aa + CONFIG 0x100ab + HOMEPAGE 0x100ac + REFRESH 0x100ad + EXIT 0x100ae + MOVE 0x100af + EDIT 0x100b0 + SCROLLUP 0x100b1 + SCROLLDOWN 0x100b2 + KPLEFTPAREN 0x100b3 + KPRIGHTPAREN 0x100b4 + INTL1 0x100b5 + INTL2 0x100b6 + INTL3 0x100b7 + INTL4 0x100b8 + INTL5 0x100b9 + INTL6 0x100ba + INTL7 0x100bb + INTL8 0x100bc + INTL9 0x100bd + LANG1 0x100be + LANG2 0x100bf + LANG3 0x100c0 + LANG4 0x100c1 + LANG5 0x100c2 + LANG6 0x100c3 + LANG7 0x100c4 + LANG8 0x100c5 + LANG9 0x100c6 + PLAYCD 0x100c8 + PAUSECD 0x100c9 + PROG3 0x100ca + PROG4 0x100cb + SUSPEND 0x100cd + CLOSE 0x100ce + PLAY 0x100cf + FASTFORWARD 0x100d0 + BASSBOOST 0x100d1 + PRINT 0x100d2 + HP 0x100d3 + CAMERA 0x100d4 + SOUND 0x100d5 + QUESTION 0x100d6 + EMAIL 0x100d7 + CHAT 0x100d8 + SEARCH 0x100d9 + CONNECT 0x100da + FINANCE 0x100db + SPORT 0x100dc + SHOP 0x100dd + ALTERASE 0x100de + CANCEL 0x100df + BRIGHTNESSDOWN 0x100e0 + BRIGHTNESSUP 0x100e1 + MEDIA 0x100e2 + UNKNOWN 0x100f0 + BTN_MISC 0x10100 + BTN_0 0x10100 + BTN_1 0x10101 + BTN_2 0x10102 + BTN_3 0x10103 + BTN_4 0x10104 + BTN_5 0x10105 + BTN_6 0x10106 + BTN_7 0x10107 + BTN_8 0x10108 + BTN_9 0x10109 + BTN_MOUSE 0x10110 + BTN_LEFT 0x10110 + BTN_RIGHT 0x10111 + BTN_MIDDLE 0x10112 + BTN_SIDE 0x10113 + BTN_EXTRA 0x10114 + BTN_FORWARD 0x10115 + BTN_BACK 0x10116 + BTN_TASK 0x10117 + BTN_JOYSTICK 0x10120 + BTN_TRIGGER 0x10120 + BTN_THUMB 0x10121 + BTN_THUMB2 0x10122 + BTN_TOP 0x10123 + BTN_TOP2 0x10124 + BTN_PINKIE 0x10125 + BTN_BASE 0x10126 + BTN_BASE2 0x10127 + BTN_BASE3 0x10128 + BTN_BASE4 0x10129 + BTN_BASE5 0x1012a + BTN_BASE6 0x1012b + BTN_DEAD 0x1012f + BTN_GAMEPAD 0x10130 + BTN_A 0x10130 + BTN_B 0x10131 + BTN_C 0x10132 + BTN_X 0x10133 + BTN_Y 0x10134 + BTN_Z 0x10135 + BTN_TL 0x10136 + BTN_TR 0x10137 + BTN_TL2 0x10138 + BTN_TR2 0x10139 + BTN_SELECT 0x1013a + BTN_START 0x1013b + BTN_MODE 0x1013c + BTN_THUMBL 0x1013d + BTN_THUMBR 0x1013e + BTN_DIGI 0x10140 + BTN_TOOL_PEN 0x10140 + BTN_TOOL_RUBBER 0x10141 + BTN_TOOL_BRUSH 0x10142 + BTN_TOOL_PENCIL 0x10143 + BTN_TOOL_AIRBRUSH 0x10144 + BTN_TOOL_FINGER 0x10145 + BTN_TOOL_MOUSE 0x10146 + BTN_TOOL_LENS 0x10147 + BTN_TOUCH 0x1014a + BTN_STYLUS 0x1014b + BTN_STYLUS2 0x1014c + BTN_WHEEL 0x10150 + BTN_GEAR_DOWN 0x10150 + BTN_GEAR_UP 0x10151 + OK 0x10160 + SELECT 0x10161 + GOTO 0x10162 + CLEAR 0x10163 + POWER2 0x10164 + OPTION 0x10165 + INFO 0x10166 + TIME 0x10167 + VENDOR 0x10168 + ARCHIVE 0x10169 + PROGRAM 0x1016a + CHANNEL 0x1016b + FAVORITES 0x1016c + EPG 0x1016d + PVR 0x1016e + MHP 0x1016f + LANGUAGE 0x10170 + TITLE 0x10171 + SUBTITLE 0x10172 + ANGLE 0x10173 + ZOOM 0x10174 + MODE 0x10175 + KEYBOARD 0x10176 + SCREEN 0x10177 + PC 0x10178 + TV 0x10179 + TV2 0x1017a + VCR 0x1017b + VCR2 0x1017c + SAT 0x1017d + SAT2 0x1017e + CD 0x1017f + TAPE 0x10180 + RADIO 0x10181 + TUNER 0x10182 + PLAYER 0x10183 + TEXT 0x10184 + DVD 0x10185 + AUX 0x10186 + MP3 0x10187 + AUDIO 0x10188 + VIDEO 0x10189 + DIRECTORY 0x1018a + LIST 0x1018b + MEMO 0x1018c + CALENDAR 0x1018d + RED 0x1018e + GREEN 0x1018f + YELLOW 0x10190 + BLUE 0x10191 + CHANNELUP 0x10192 + CHANNELDOWN 0x10193 + FIRST 0x10194 + LAST 0x10195 + AB 0x10196 + NEXT 0x10197 + RESTART 0x10198 + SLOW 0x10199 + SHUFFLE 0x1019a + BREAK 0x1019b + PREVIOUS 0x1019c + DIGITS 0x1019d + TEEN 0x1019e + TWEN 0x1019f + DEL_EOL 0x101c0 + DEL_EOS 0x101c1 + INS_LINE 0x101c2 + DEL_LINE 0x101c3 + end codes +end remote diff --git a/abs/core/system-templates/templates/remotes/Compro/lircrc-compro.txt b/abs/core/system-templates/templates/remotes/Compro/lircrc-compro.txt new file mode 100755 index 0000000..3a7fae8 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Compro/lircrc-compro.txt @@ -0,0 +1,487 @@ +begin + prog = mythtv + button = UP + config = Up +end + +begin + prog = mythtv + button = DOWN + config = Down +end + +begin + prog = mythtv + button = LEFT + config = Left +end + +begin + prog = mythtv + button = RIGHT + config = Right +end + +begin + prog = mythtv + button = DVD + 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 = 0 + config = 0 +end + +begin + prog = mythtv + button = TV + config = Esc +end + +begin + prog = mythtv + button = VIDEO + 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 = VOLUMEDOWN + repeat = 3 + config = F10 +end + +begin + prog = mythtv +# This is the Blue key +# Use it as a volume key + button = VOLUMEUP + repeat = 3 + config = F11 +end + +begin + prog = mythtv + button = CHANNELUP +# This is the "up" on the central diamond + repeat = 3 + config = Up +end + +begin + prog = mythtv + button = CHANNELDOWN +# This is the "down" on the central diamond + repeat = 3 + config = Down +end + +begin + prog = mythtv + button = VOLUMEUP +# This is the "left" on the central diamond + repeat = 3 + config = Right +end + +begin + prog = mythtv + button = VOLUMEDOWN +# This is the "right" on the central diamond + repeat = 3 + config = Left +end + +begin + prog = mythtv +# Middle button on the diamond + button = OK + config = Return +end + +begin + prog = mythtv + button = MUTE + config = | +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 = < +end + +begin + prog = mythtv + button = PLAY + config = P +end + +begin + prog = mythtv + button = FORWARD + config = > +end + +begin + prog = mythtv + button = RECORD + config = R +end + +begin + prog = mythtv +# Teletext + button = STOP + config = T +end + +begin + prog = mythtv + button = PLAYPAUSE + 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 = VIDEO + config = quit +end + +begin + prog = mplayer + button = SETUP + config = osd +end + +begin + prog = mplayer + button = REWIND + config = seek -10 + repeat = 1 +end + +begin + prog = mplayer + button = FOWARD + config = seek +10 + repeat = 1 +end + +begin + prog = mplayer + button = PREVIOUS + config = seek -60 + repeat = 1 +end + +begin + prog = mplayer + button = NEXT + config = seek +60 + repeat = 1 +end + +begin + prog = mplayer + button = PLAYPAUSE + config = pause +end + +begin + prog = mplayer + button = PLAYPAUSE + config = pause +end + +begin + prog = mplayer + button = VIDEO + config = quit +end + +begin + prog = mplayer + button = VOLUMEUP + config = volume +1 + repeat = 1 +end + +begin + prog = mplayer + button = VOLUMEDOWN + 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 = Volume- + end + + begin + prog = xine + button = VOL+ + repeat = 4 + config = Volume+ + 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 = EventLeft + end + + #vol up + begin + prog = xine + button = Red + repeat = 1 + config = EventRight + end + + begin + prog = xine + button = FFW + repeat = 2 + config = SeekRelative+30 + end + + begin + prog = xine + button = REW + 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 diff --git a/abs/core/system-templates/templates/remotes/Compro/preview.jpg b/abs/core/system-templates/templates/remotes/Compro/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Compro/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircd.conf.dvico-dual-digital4 b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircd.conf.dvico-dual-digital4 new file mode 100644 index 0000000..2d2b9ac --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircd.conf.dvico-dual-digital4 @@ -0,0 +1,81 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.0(userspace) on Mon Mar 5 16:00:35 2007 +# +# contributed by: Soth +# +# brand: DViCO FusionHDTV DVB-T Dual Digital +# model no. of remote control: Fusion MCE +# devices being controlled by this remote: +# + +begin remote + + name DViCO_Dual_Digital + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0x1 + gap 251756 + toggle_bit 0 + + begin codes +#starting at the top + dtv 0x0179 + mp3 0x0187 + dvd 0x0185 + cpf 0x016C +#outer circle clockwise from top + tvpower 0x0164 + guide 0x016D + info 0x0166 + alttab 0x000F + skip 0x00A3 + start 0x001C + replay 0x00A5 + dvdmenu 0x008B + back 0x009E + setup 0x008D +#inner circle + up 0x0067 + down 0x006C + left 0x0069 + right 0x006A + ok 0x0160 +#volume and channel + voldn 0x0072 + volup 0x0073 + chup 0x0192 + chdn 0x0193 +#keypad + camera 0x00D4 + live 0x0182 + folder 0x0086 + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + aspect 0x0173 + 0 0x000B + zoom 0x0174 +#play buttons + rew 0x00A8 + playpause 0x00A4 + ff 0x00D0 + mute 0x0071 + stop 0x0080 + rec 0x00A7 + power 0x0074 + end codes +end remote diff --git a/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircrc.dvico-dual-digital4 b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircrc.dvico-dual-digital4 new file mode 100644 index 0000000..7c75f01 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/lircrc.dvico-dual-digital4 @@ -0,0 +1,430 @@ +# lircrc.example.DVICO-nativelirc +# 2004-07-04, Chris Pascoe +# mailto:linuxdvb@itee.uq.edu.au +# Save this file in ~/.mythtv/lircrc +# +# 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. + +### Top 4 buttons ### + +# DTV - Change focus for PiP (to change channel in the other window) +begin + prog = mythtv + button = dtv + config = B +end + +begin + prog = mythtv + button = mp3 + config = Ctrl+M +end + +begin + prog = mythtv + button = dvd + config = Ctrl+D +end + +begin + prog = mythtv + button = cpf + config = +end + +### Outer Circle (clockwise from the top) ### + +begin + prog = mythtv + button = tvpower + config = Esc +end + +begin + prog = mythtv + button = guide + config = S +end + +begin + prog = mythtv + button = info + config = I +end + +#swap the pip windows +begin + prog = mythtv + button = alttab + config = N +end + +#commercial skip forwards +begin + prog = mythtv + button = skip + config = Z +end + +begin + prog = mythtv + button = start + config = Return +end + +#commercial skip backwards +begin + prog = mythtv + button = replay + config = Q +end + +begin + prog = mythtv + button = dvdmenu +# config = undefined +end + +begin + prog = mythtv + button = back + config = Esc +end + +begin + prog = mythtv + button = setup + config = undefined +end + +### Inner Circle ### + +begin + prog = mythtv + button = up + config = Up +end + +begin + prog = mythtv + button = down + config = Down +end + +begin + prog = mythtv + button = left + config = Left +end + +begin + prog = mythtv + button = right + config = Right +end + +begin + prog = mythtv + button = ok + config = Return +end + +### Volume and Channel ### + +begin + prog = mythtv + button = voldn + repeat = 1 + config = F10 +end + +begin + prog = mythtv + button = volup + repeat = 1 + config = F11 +end + +begin + prog = mythtv + button = chup + config = Up +end + +begin + prog = mythtv + button = chdn + config = Down +end + +### Keypad ### + +begin + prog = mythtv + button = camera + config = P +end + +begin + prog = mythtv + button = live +# config = undefined +end + +begin + prog = mythtv + button = folder + config = C +end + +begin + prog = mythtv + button = 1 + config = 1 + config = return +end + +begin + prog = mythtv + button = 2 + config = 2 + config = return +end + +begin + prog = mythtv + button = 3 + config = 3 + config = return +end + +begin + prog = mythtv + button = 4 + config = 4 + config = return +end + +begin + prog = mythtv + button = 5 + config = 5 + config = return +end + +begin + prog = mythtv + button = 6 + config = 6 + config = return +end + +begin + prog = mythtv + button = 7 + config = 7 + config = return +end + +begin + prog = mythtv + button = 8 + config = 8 + config = return +end + +begin + prog = mythtv + button = 9 + config = 9 + config = return +end + +begin + prog = mythtv + button = aspect + config = W +end + +begin + prog = mythtv + button = 0 + config = 0 + config = return +end + +# Toggle PiP on/off +begin + prog = mythtv + button = zoom + config = V +end + +### Play buttons ### + +begin + prog = mythtv + button = rew + config = Left +# config = seek -180 +end + +begin + prog = mythtv + button = playpause + config = ctrl+p +end + +begin + prog = mythtv + button = ff + config = Right +# config = seek +180 +end + +begin + prog = mythtv + button = mute + config = | +end + +begin + prog = mythtv + button = stop + config = P +end + +begin + prog = mythtv + button = rec + config = R +end + +begin + prog = mythtv + button = power + config = Esc +end + +# Xine + +begin + prog = xine + button = playpause + repeat = 3 + config = Play +end + +begin + prog = xine + button = stop + repeat = 3 + config = Pause +end + +begin + prog = xine + button = back + config = Quit +end + +begin + prog = xine + button = tv_onoff + config = Quit +end + +begin + prog = xine + button = right + repeat = 3 + config = SeekRelative+10 +end + +begin + prog = xine + button = left + repeat = 3 + config = SeekRelative-10 +end + +begin + prog = xine + button = ff + repeat = 3 + config = SeekRelative+30 +end + +begin + prog = xine + button = rew + repeat = 3 + config = SeekRelative-30 +end + +begin + prog = xine + button = skip + repeat = 3 + config = SeekRelative+300 +end + +begin + prog = xine + button = replay + repeat = 3 + config = SeekRelative-300 +end + +begin + prog = xine + button = up + repeat = 1 + config = EventUp +end + +begin + prog = xine + button = down + repeat = 1 + config = EventDown +end + +begin + prog = xine + button = ok + repeat = 0 + config = EventSelect +end + +begin + prog = xine + button = guide + repeat = 0 + config = Menu +end + +begin + prog = xine + button = setup + repeat = 0 + config = Menu +end + +begin + prog = xine + button = volup + repeat = 1 + config = Volume+ +end + +begin + prog = xine + button = voldn + repeat = 1 + config = Volume- +end diff --git a/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/preview.jpg b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/preview.jpg new file mode 100644 index 0000000..f3956fa Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Flyvideo_2000/lircd-flyvideo2000.conf b/abs/core/system-templates/templates/remotes/Flyvideo_2000/lircd-flyvideo2000.conf new file mode 100755 index 0000000..03a5f14 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Flyvideo_2000/lircd-flyvideo2000.conf @@ -0,0 +1,57 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.1(dev/input) on Wed Jun 13 19:09:39 2007 +# +# contributed by +# +# brand: /tmp/lirc.conf +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + +name FlyVideo_2000 +bits 16 +eps 30 +aeps 100 + +one 0 0 +zero 0 0 +pre_data_bits 16 +pre_data 0x8001 +gap 208092 +toggle_bit 0 + + +begin codes + Air/catTV 0x0175 + Video 0x0189 + Audio 0x0188 + Power 0x0074 + AVSource 0x0182 + FullScreen 0x0174 + Stereo 0x0170 + Mute 0x0071 + Vol+ 0x0073 + Vol- 0x0072 + Ch+ 0x0192 + Ch- 0x0193 + Recall 0x0081 + Enter 0x001C + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + 0 0x000B + +end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Flyvideo_2000/lircrc-flyvideo2000.txt b/abs/core/system-templates/templates/remotes/Flyvideo_2000/lircrc-flyvideo2000.txt new file mode 100755 index 0000000..08fb7fb --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Flyvideo_2000/lircrc-flyvideo2000.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = Ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = Ch+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = Ch- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = Vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = Vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = Enter +config = Space +end + +# Play +begin +prog = mythtv +button = +config = Return +end + +# Stop +begin +prog = mythtv +button = +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = Recall +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = +config = osd +end + +# Pause playback +begin +prog = mplayer +button = +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FullScreen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = +config = Play +end + +begin +prog = xine +button = +config = Stop +end + +begin +prog = xine +button = +config = Quit +end + +begin +prog = xine +button = +config = Pause +end + +begin +prog = xine +button = Ch+ +config = EventUp +end + +begin +prog = xine +button = Ch- +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = Enter +config = EventSelect +end + +begin +prog = xine +button = +config = Menu +end + +begin +prog = xine +button = +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = Vol+ +config = Volume+ +end + +begin +prog = xine +button = Vol- +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Flyvideo_2000/preview.jpg b/abs/core/system-templates/templates/remotes/Flyvideo_2000/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Flyvideo_2000/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Flyvideo_3000/lircd-flyvideo3000.conf b/abs/core/system-templates/templates/remotes/Flyvideo_3000/lircd-flyvideo3000.conf new file mode 100755 index 0000000..8b4f23e --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Flyvideo_3000/lircd-flyvideo3000.conf @@ -0,0 +1,47 @@ +# lircd.conf.Flyvideo_3000_devinput +# +# Lirc configuration file for the LifeView FlyVideo 3000 remote. +# +# Adapted from the standard linux input layer config file found at +# http://linux.bytesex.org/v4l2/linux-input-layer-lircd.conf +# The remote name and button names are consistent with lircd.conf.Flyvideo_3000. +# +# Created January 22, 2005 +# +# contributed by Jason Anderson (jasonofhoulton@hotmail.com) +# +# brand: Lifeview +# model no. of remote control: Flyvideo 3000 +# devices being controlled by this remote: +# + +begin remote + name Flyvideo_3000 + bits 32 + begin codes + air/catv 0x10182 + video 0x10189 + audio 0x10188 + power 0x10074 + av_source 0x100b0 + full_screen 0x10174 + stereo 0x100c0 + Mute 0x10071 + 1 0x1004f + 2 0x10050 + 3 0x10051 + vol+ 0x10073 + 4 0x1004b + 5 0x1004c + 6 0x1004d + vol- 0x10072 + 7 0x10047 + 8 0x10048 + 9 0x10049 + ch+ 0x10192 + recall 0x10081 + 0 0x10052 + enter 0x10060 + ch- 0x10193 + end codes +end remote diff --git a/abs/core/system-templates/templates/remotes/Flyvideo_3000/lircrc-flyvideo3000.txt b/abs/core/system-templates/templates/remotes/Flyvideo_3000/lircrc-flyvideo3000.txt new file mode 100755 index 0000000..565c2d9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Flyvideo_3000/lircrc-flyvideo3000.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = ch+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = ch- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = enter +config = Space +end + +# Play +begin +prog = mythtv +button = +config = Return +end + +# Stop +begin +prog = mythtv +button = +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = recall +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = +config = osd +end + +# Pause playback +begin +prog = mplayer +button = +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = full_Screen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = +config = Play +end + +begin +prog = xine +button = +config = Stop +end + +begin +prog = xine +button = +config = Quit +end + +begin +prog = xine +button = +config = Pause +end + +begin +prog = xine +button = ch+ +config = EventUp +end + +begin +prog = xine +button = ch- +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = enter +config = EventSelect +end + +begin +prog = xine +button = +config = Menu +end + +begin +prog = xine +button = +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Flyvideo_3000/preview.jpg b/abs/core/system-templates/templates/remotes/Flyvideo_3000/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Flyvideo_3000/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Hercules/lircd-hercules.conf b/abs/core/system-templates/templates/remotes/Hercules/lircd-hercules.conf new file mode 100755 index 0000000..a745dbb --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Hercules/lircd-hercules.conf @@ -0,0 +1,61 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(any) on Mon Oct 6 01:10:14 2003 +# +# contributed by Dimitris Michail +# +# brand: Hercules +# model no. of remote control: unknown +# devices being controlled by this remote: Hercules SmartTV Stereo +# +# Works with module lirc_i2c, reports PV951 IR + +begin remote + + name HERCULES_SMARTTV_STEREO + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0x61D6 + gap 199964 + toggle_bit 0 + + + begin codes + POWER 0x00000000000048B7 + MUTE 0x000000000000C837 + PREVIEW 0x000000000000F00F + FULLSCREEN 0x00000000000038C7 + AV/TV 0x0000000000008877 + TELETEXT 0x00000000000008F7 + 1 0x000000000000807F + 2 0x00000000000040BF + 3 0x000000000000C03F + 4 0x00000000000020DF + 5 0x000000000000A05F + 6 0x000000000000609F + 7 0x000000000000E01F + 8 0x00000000000010EF + 9 0x000000000000906F + 0 0x00000000000000FF + SNAPSHOT 0x00000000000050AF + 100+ 0x000000000000E817 + CH+ 0x00000000000058A7 + CH- 0x0000000000007887 + VOL+ 0x000000000000D827 + VOL- 0x000000000000F807 + PAUSE 0x000000000000B04F + RECORD 0x000000000000708F + STOP 0x000000000000B847 + PLAY 0x0000000000009867 + TV_REPLAY 0x0000000000006897 + TIME_SHIFT 0x00000000000028D7 + SEEK_BACK 0x00000000000018E7 + SEEK_FWD 0x00000000000030CF + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Hercules/lircrc-hercules.txt b/abs/core/system-templates/templates/remotes/Hercules/lircrc-hercules.txt new file mode 100755 index 0000000..c54873b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Hercules/lircrc-hercules.txt @@ -0,0 +1,475 @@ +# Channel Up +begin +prog = mythtv +button = CH+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = CH+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = CH- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = POWER +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = PAUSE +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = SEEK_FWD +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = SEEK_BACK +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = RECORD +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = PREVIEW +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = FULLSCREEN +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Closed Captioning +begin +prog = mythtv +button = TELETEXT +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = PREVIEW +config = osd +end + +# Pause playback +begin +prog = mplayer +button = PAUSE +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = SEEK_BACK +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = SEEK_FWD +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FULLSCREEN +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = PAUSE +config = Pause +end + +begin +prog = xine +button = +config = EventUp +end + +begin +prog = xine +button = +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = PREVIEW +config = Menu +end + +begin +prog = xine +button = SEEK_FWD +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = SEEK_BACK +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL+ +config = Volume+ +end + +begin +prog = xine +button = VOL- +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = TELETEXT +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Hercules/preview.jpg b/abs/core/system-templates/templates/remotes/Hercules/preview.jpg new file mode 100644 index 0000000..8ffa652 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Hercules/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Kworld_110/lircd-kworld110.conf b/abs/core/system-templates/templates/remotes/Kworld_110/lircd-kworld110.conf new file mode 100755 index 0000000..eab7fa2 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_110/lircd-kworld110.conf @@ -0,0 +1,84 @@ +# +# this config file was automatically generated +# using lirc-0.8.1-CVS(default) on Sun Jan 14 20:53:40 2007 +# +# contributed by Craig Courtney +# +# brand: Kworld +# model no. of remote control: ATSC 110 Remote +# devices being controlled by this remote: ATSC 110 HDTV Tuner Card +# +# Generated with homebrew serial circuit connect to reciever that came +# with the card. +# + +begin remote + + name Kworld_ATSC_110 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9084 4466 + one 604 1650 + zero 604 526 + ptrail 603 + repeat 9082 2218 + pre_data_bits 16 + pre_data 0xDF + gap 108354 + toggle_bit 0 + + + begin codes + power 0x30CF + ch+ 0x7887 + ch- 0xF807 + vol+ 0x38C7 + vol- 0xB847 + 1 0x00FF + 2 0x807F + 3 0x40BF + 4 0xC03F + 5 0x20DF + 6 0xA05F + 7 0x609F + 8 0xE01F + 9 0x10EF + 0 0x50AF + numpad_up 0x906F + numpad_enter 0xD02F + standby 0xB04F + mute 0x28D7 + stereo 0xA857 + source 0x6897 + zoom 0xE817 + shut_down 0x18E7 + up 0x08F7 + left 0x48B7 + right 0xC837 + down 0x8877 + select 0x708F + timeshift 0x9867 + stop 0x58A7 + rec 0xD827 + scan_rev 0x02FD + scan_fwd 0x827D + play_pause 0x22DD + play_stop 0xA25D + chapter_rev 0x42BD + chapter_fwd 0xC23D + a 0x12ED + b 0x926D + c 0x52AD + d 0xD22D + e 0x32CD + f 0xB24D + g 0x728D + h 0xF20D + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/Kworld_110/lircrc-kworld110.txt b/abs/core/system-templates/templates/remotes/Kworld_110/lircrc-kworld110.txt new file mode 100755 index 0000000..7447a46 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_110/lircrc-kworld110.txt @@ -0,0 +1,482 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = select +config = Space +end + +# Play +begin +prog = mythtv +button = play_pause +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = play_pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = scan_fwd +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = scan_rev +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = chapter_fwd +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = chapter_rev +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = d +config = D +end + +# OSD browse +begin +prog = mythtv +button = b +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = e +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = c +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = zoom +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = h +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = f +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = g +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = source +config = osd +end + +# Pause playback +begin +prog = mplayer +button = play_pause +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = scan_rev +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = seek_fwd +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = chapter_fwd +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = chapter_rev +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play_pause +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = play_pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = select +config = EventSelect +end + +begin +prog = xine +button = a +config = Menu +end + +begin +prog = xine +button = seek_fwd +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = seek_rev +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = chapter_fwd +config = EventNext +end + +begin +prog = xine +button = chapter_rev +config = EventPrior +end + +begin +prog = xine +button = source +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_110/preview.jpg b/abs/core/system-templates/templates/remotes/Kworld_110/preview.jpg new file mode 100644 index 0000000..f83f474 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Kworld_110/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Kworld_220/lircd-kworld220.conf b/abs/core/system-templates/templates/remotes/Kworld_220/lircd-kworld220.conf new file mode 100755 index 0000000..a483e7f --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_220/lircd-kworld220.conf @@ -0,0 +1,80 @@ +# +# this config file only works with a home-brew receiver!!! +# + +# +# this config file was automatically generated +# using lirc-0.8.1(default) on Sun Jul 1 22:59:56 2007 +# +# contributed by Bruce Schultz +# +# brand: KWorld +# model no. of remote control: +# devices being controlled by this remote: DVB-T 220 tuner card +# + +begin remote + + name KWorld-DVBT-220 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9144 4394 + one 673 1578 + zero 673 453 + ptrail 666 + repeat 9146 2141 + pre_data_bits 16 + pre_data 0xDF + gap 108141 + toggle_bit 0 + + + begin codes + power 0x30CF + standby 0xB04F + sub_tv 0x7887 + preview 0xF807 + snap 0x38C7 + shut_down 0xB847 + 1 0x00FF + 2 0x807F + 3 0x40BF + 4 0xC03F + 5 0x20DF + 6 0xA05F + 7 0x609F + 8 0xE01F + 9 0x10EF + 0 0x50AF + numpad_up 0x906F + numpad_enter 0xD02F + mute 0x28D7 + stereo 0xA857 + source 0x6897 + zoom 0xE817 + min 0x18E7 + left 0x48B7 + right 0xC837 + up 0x08F7 + down 0x8877 + select 0x708F + timeshift 0x9867 + stop 0x58A7 + rec 0xD827 + scan_rev 0x02FD + scan_fwd 0x827D + play_pause 0x22DD + play_stop 0xA25D + chapter_rev 0x42BD + chapter_fwd 0xC23D + fun1 0x12ED + fun2 0x926D + fun3 0x52AD + fun4 0xD22D + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/Kworld_220/lircrc-kworld220.txt b/abs/core/system-templates/templates/remotes/Kworld_220/lircrc-kworld220.txt new file mode 100755 index 0000000..702d238 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_220/lircrc-kworld220.txt @@ -0,0 +1,482 @@ +# Channel Up +begin +prog = mythtv +button = up +config = Up +end + +# Channel Down +begin +prog = mythtv +button = down +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = right +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = left +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = select +config = Space +end + +# Play +begin +prog = mythtv +button = play_pause +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = play_pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = scan_fwd +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = scan_rev +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = chapter_fwd +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = chapter_rev +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = fun1 +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = fun2 +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = zoom +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = fun3 +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = source +config = osd +end + +# Pause playback +begin +prog = mplayer +button = play_pause +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = scan_rev +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = seek_fwd +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = chapter_fwd +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = chapter_rev +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play_pause +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = play_pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = select +config = EventSelect +end + +begin +prog = xine +button = preview +config = Menu +end + +begin +prog = xine +button = seek_fwd +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = seek_rev +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = right +config = Volume+ +end + +begin +prog = xine +button = left +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = chapter_fwd +config = EventNext +end + +begin +prog = xine +button = chapter_rev +config = EventPrior +end + +begin +prog = xine +button = source +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_220/preview.jpg b/abs/core/system-templates/templates/remotes/Kworld_220/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Kworld_220/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Kworld_310/lircd-kworld310.conf b/abs/core/system-templates/templates/remotes/Kworld_310/lircd-kworld310.conf new file mode 100755 index 0000000..7ee4bdd --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_310/lircd-kworld310.conf @@ -0,0 +1,80 @@ +# +# this config file only works with a home-brew receiver!!! +# + +# +# this config file was automatically generated +# using lirc-0.8.1(default) on Sun Jul 1 23:10:43 2007 +# +# contributed by Bruce Schultz +# +# brand:KWorld +# model no. of remote control: +# devices being controlled by this remote: DVB-T PE310 tuner card +# + +begin remote + + name KWorld-DVBT-PE310 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9175 4402 + one 677 1580 + zero 677 452 + ptrail 667 + repeat 9177 2145 + pre_data_bits 16 + pre_data 0xDF + gap 108444 + toggle_bit 0 + + + begin codes + power 0x30CF + standby 0xB04F + sub_tv 0x7887 + preview 0xF807 + snap 0x38C7 + shut_down 0xB847 + 1 0x00FF + 2 0x807F + 3 0x40BF + 4 0xC03F + 5 0x20DF + 6 0xA05F + 7 0x609F + 8 0xE01F + 9 0x10EF + 0 0x50AF + numpad_up 0x906F + numpad_enter 0xD02F + mute 0x28D7 + stereo 0xA857 + source 0x6897 + zoom 0xE817 + min 0x18E7 + left 0x48B7 + right 0xC837 + up 0x08F7 + down 0x8877 + select 0x708F + timeshift 0x9867 + stop 0x58A7 + rec 0xD827 + scan_rev 0x02FD + scan_fwd 0x827D + play_pause 0x22DD + play_stop 0xA25D + chapter_rev 0x42BD + chapter_fwd 0xC23D + fun1 0x12ED + fun2 0x926D + fun3 0x52AD + fun4 0xD22D + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/Kworld_310/lircrc-kworld310.txt b/abs/core/system-templates/templates/remotes/Kworld_310/lircrc-kworld310.txt new file mode 100755 index 0000000..702d238 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_310/lircrc-kworld310.txt @@ -0,0 +1,482 @@ +# Channel Up +begin +prog = mythtv +button = up +config = Up +end + +# Channel Down +begin +prog = mythtv +button = down +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = right +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = left +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = select +config = Space +end + +# Play +begin +prog = mythtv +button = play_pause +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = play_pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = scan_fwd +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = scan_rev +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = chapter_fwd +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = chapter_rev +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = fun1 +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = fun2 +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = zoom +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = fun3 +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = source +config = osd +end + +# Pause playback +begin +prog = mplayer +button = play_pause +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = scan_rev +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = seek_fwd +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = chapter_fwd +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = chapter_rev +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play_pause +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = play_pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = select +config = EventSelect +end + +begin +prog = xine +button = preview +config = Menu +end + +begin +prog = xine +button = seek_fwd +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = seek_rev +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = right +config = Volume+ +end + +begin +prog = xine +button = left +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = chapter_fwd +config = EventNext +end + +begin +prog = xine +button = chapter_rev +config = EventPrior +end + +begin +prog = xine +button = source +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_310/preview.jpg b/abs/core/system-templates/templates/remotes/Kworld_310/preview.jpg new file mode 100644 index 0000000..f024370 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Kworld_310/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Kworld_DVBT/lircd-kworlddvbt.conf b/abs/core/system-templates/templates/remotes/Kworld_DVBT/lircd-kworlddvbt.conf new file mode 100755 index 0000000..425e107 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_DVBT/lircd-kworlddvbt.conf @@ -0,0 +1,71 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(sa1100) on Sun Feb 23 17:02:27 2003 +# +# contributed by Denes Balatoni +# Modified by Daniel Foote to +# work with remote that came with DVB-T card. +# +# brand: kworld +# model no. of remote control: ? +# devices being controlled by this remote: tv878r tuner card +# + +begin remote + + name KWorld_DVB-T + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8853 4526 + one 533 1713 + zero 533 589 + ptrail 531 + repeat 8853 2281 + pre_data_bits 16 + pre_data 0x61D6 + gap 107839 + toggle_bit 0 + + + begin codes + ch- 0x0000000000007887 + 7 0x000000000000E01F + preview 0x00000000000038C7 + zoom 0x00000000000018E7 + 3 0x000000000000C03F + 1 0x000000000000807F + epg 0x000000000000D02F + vol+ 0x000000000000D827 + vol- 0x000000000000F807 + 5 0x000000000000A05F + 9 0x000000000000906F + reset 0x000000000000A857 + turnleft 0x000000000000E817 + 6 0x000000000000609F + 0 0x00000000000050AF + power 0x00000000000048B7 + scan 0x00000000000030CF + 2 0x00000000000040BF + mute 0x00000000000008F7 + snap 0x000000000000C837 + 4 0x00000000000020DF + turnup 0x00000000000000FF + 8 0x00000000000010EF + backward 0x0000000000008877 + source 0x000000000000F00F + forward 0x0000000000009867 + pip 0x00000000000028D7 + ch- 0x000000000000E817 + play 0x0000000000006897 + ch+ 0x00000000000058A7 + stop 0x000000000000B04F + function- 0x00000000000020DF + pause 0x000000000000708F + function+ 0x00000000000030CF + rec 0x000000000000B847 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_DVBT/lircrc-kworlddvbt.txt b/abs/core/system-templates/templates/remotes/Kworld_DVBT/lircrc-kworlddvbt.txt new file mode 100755 index 0000000..70272b7 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_DVBT/lircrc-kworlddvbt.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = ch+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = ch- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = forward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = backward +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = function+ +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = function- +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = preview +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = epg +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = source +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = zoom +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = reset +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = pip +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = snap +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = epg +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = backward +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = forward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = function+ +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = function- +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = turnup +config = EventUp +end + +begin +prog = xine +button = +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = epg +config = Menu +end + +begin +prog = xine +button = forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = backward +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = function+ +config = EventNext +end + +begin +prog = xine +button = function- +config = EventPrior +end + +begin +prog = xine +button = source +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_DVBT/preview.jpg b/abs/core/system-templates/templates/remotes/Kworld_DVBT/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Kworld_DVBT/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Kworld_tv878/lircd-kworldtv878.conf b/abs/core/system-templates/templates/remotes/Kworld_tv878/lircd-kworldtv878.conf new file mode 100755 index 0000000..5817bfd --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_tv878/lircd-kworldtv878.conf @@ -0,0 +1,70 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(sa1100) on Sun Feb 23 17:02:27 2003 +# +# contributed by Denes Balatoni +# +# brand: kworld +# model no. of remote control: ? +# devices being controlled by this remote: tv878r tuner card +# + +begin remote + + name kworld-878 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8853 4526 + one 533 1713 + zero 533 589 + ptrail 531 + repeat 8853 2281 + pre_data_bits 16 + pre_data 0x61D6 + gap 107839 + toggle_bit 0 + + + begin codes + power 0x0000000000007887 + source 0x000000000000E01F + scan 0x00000000000038C7 + mute 0x00000000000018E7 + tv/fm 0x000000000000C03F + 1 0x000000000000807F + 2 0x000000000000D02F + 3 0x000000000000D827 + fm_scan+ 0x000000000000F807 + 4 0x000000000000A05F + 5 0x000000000000906F + 6 0x000000000000A857 + fm_scan- 0x000000000000E817 + 7 0x000000000000609F + 8 0x00000000000050AF + 9 0x00000000000048B7 + fm_freq+ 0x00000000000030CF + 0 0x00000000000040BF + + 0x00000000000008F7 + recall 0x000000000000C837 + fm-freq- 0x00000000000020DF + record 0x00000000000000FF + stop 0x00000000000010EF + play 0x0000000000008877 + minimze 0x000000000000F00F + ch+ 0x000000000000F807 + zoom 0x0000000000009867 + vol- 0x00000000000028D7 + ch- 0x000000000000E817 + vol+ 0x0000000000006897 + snapshot 0x00000000000058A7 + mts 0x000000000000B04F + function- 0x00000000000020DF + function 0x000000000000708F + function+ 0x00000000000030CF + reset 0x000000000000B847 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_tv878/lircrc-kworldv878.txt b/abs/core/system-templates/templates/remotes/Kworld_tv878/lircrc-kworldv878.txt new file mode 100755 index 0000000..e1ca297 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Kworld_tv878/lircrc-kworldv878.txt @@ -0,0 +1,482 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = ch+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = ch- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = snapshot +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = function+ +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = function- +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = record +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = function +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = scan +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = minimze +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = recall +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = scan +config = osd +end + +# Pause playback +begin +prog = mplayer +button = snapshot +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = +config = seek +1 +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = function- +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = function+ +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = snapshot +config = Pause +end + +begin +prog = xine +button = +config = EventUp +end + +begin +prog = xine +button = +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = source +config = Menu +end + +begin +prog = xine +button = function+ +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = function- +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = + +config = EventNext +end + +begin +prog = xine +button = recall +config = EventPrior +end + +begin +prog = xine +button = reset +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Kworld_tv878/preview.jpg b/abs/core/system-templates/templates/remotes/Kworld_tv878/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Kworld_tv878/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircd-leadtek2000xp.conf b/abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircd-leadtek2000xp.conf new file mode 100755 index 0000000..4238a02 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircd-leadtek2000xp.conf @@ -0,0 +1,77 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.3-CVS(dev/input) on Tue Nov 6 17:04:54 2007 +# +# contributed by: Jeff Kosowsky +# +# brand: LeadTek +# model no. of remote control: Y0400046 (bundled with Winfast 2000XP Deluxe) +# devices being controlled by this remote: LeadTek Winfast 2000XP Deluxe + +# brand: Leadtek +# model: Y0400052 (bundeled with Winfast PVR2000 TV-card) +# +# Note: Only CH_UP, CH_DOWN, VOL_UP and VOL_DOWN will repeat. This +# seems to be a limitation of the remote control. + +begin remote + + name Leadtek_2000XP + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0x8001 + gap 423871 + toggle_bit_mask 0x80010073 + + begin codes + POWER 0x0074 + MTS 0x0188 + TV/FM 0x0182 + VIDEO 0x0189 + DISPLAY 0x0166 + CH+ 0x0192 + CH- 0x0193 + VOL- 0x0072 + VOL+ 0x0073 + FULLSCREEN 0x0174 + TELETEXT 0x0184 + SLEEP 0x008E + BOSSKEY 0x0163 + MUTE 0x0071 + RED 0x018E + GREEN 0x018F + YELLOW 0x0190 + BLUE 0x0191 + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + 0 0x000B + . 0x0034 + FINETUNE+ 0x004E + FINETUNE- 0x004A + PIP 0x00E2 + ENTER 0x001C + RECALL 0x0195 + BACK 0x019C + PLAY 0x00A4 + NEXT 0x0197 + TIMESHIFTING 0x0169 + STOP 0x0080 + REC 0x00A7 + SNAPSHOT 0x00EA + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircrc-leadtek2000xp.txt b/abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircrc-leadtek2000xp.txt new file mode 100755 index 0000000..f16beb3 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Leadtek_2000XP/lircrc-leadtek2000xp.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CH+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = FINETUNE+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = FINETUNE- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ENTER +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = POWER +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = SNAPSHOT +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = NEXT +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = BACK +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = REC +config = R +end + +# Delete +begin +prog = mythtv +button = RED +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = GREEN +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = YELLOW +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = DISPLAY +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = RECALL +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = PIP +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = BLUE +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = DISPLAY +config = osd +end + +# Pause playback +begin +prog = mplayer +button = SNAPSHOT +config = pause +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = BACK +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = NEXT +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = FINETUNE+ +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = FINETUNE- +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FULLSCREEN +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = SNAPSHOT +config = Pause +end + +begin +prog = xine +button = CH+ +config = EventUp +end + +begin +prog = xine +button = CH- +config = EventDown +end + +begin +prog = xine +button = FINETUNE- +config = EventLeft +end + +begin +prog = xine +button = FINETUNE+ +config = EventRight +end + +begin +prog = xine +button = ENTER +config = EventSelect +end + +begin +prog = xine +button = DISPLAY +config = Menu +end + +begin +prog = xine +button = NEXT +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = BACK +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL+ +config = Volume+ +end + +begin +prog = xine +button = VOL- +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = TELETEXT +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Leadtek_2000XP/preview.jpg b/abs/core/system-templates/templates/remotes/Leadtek_2000XP/preview.jpg new file mode 100644 index 0000000..aeecf95 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Leadtek_2000XP/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Leadtek_PVR/lircd-leadtekPVR.conf b/abs/core/system-templates/templates/remotes/Leadtek_PVR/lircd-leadtekPVR.conf new file mode 100755 index 0000000..460ddcf --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Leadtek_PVR/lircd-leadtekPVR.conf @@ -0,0 +1,82 @@ +# +# this config file was automatically generated +# using lirc-0.8.2-CVS(default) on Thu Oct 25 23:27:29 2007 +# +# contributed by +# +# brand: Leadtek +# model no. of remote control: +# devices being controlled by this remote: PVR2000 +# + +begin remote + + name PVR2000 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8946 4535 + one 530 1716 + zero 530 593 + ptrail 532 + repeat 8945 2286 + pre_data_bits 16 + pre_data 0xC03F + gap 107856 + toggle_bit_mask 0x0 + + begin codes + POWER 0x00FF + TV 0x6A95 + FM 0xEA15 + DVD 0x1AE5 + RED 0xD22D + GREEN 0x32CD + YELLOW 0xB24D + BLUE 0x728D + TELETEXT 0xF807 + SLEEP 0x02FD + MUTE 0x28D7 + BOSS_KEY 0x926D + CH_UP 0x30CF + CH_DOWN 0x08F7 + VOL_DOWN 0x10EF + VOL_UP 0x20DF + ENTER 0xC837 + CC 0x0AF5 + FULLSCREEN 0xC03F + MENU 0xF20D + SCAN 0x8A75 + REPLAY 0x42BD + PLAY 0xC23D + SKIP 0x22DD + OSD 0x4AB5 + BACK 0x2AD5 + STOP 0x629D + FORWARD 0xAA55 + LANGUAGE 0xCA35 + 1 0xA05F + 2 0x609F + 3 0xE01F + 4 0x906F + 5 0x50AF + 6 0xD02F + 7 0xB04F + 8 0x708F + 9 0xF00F + 0 0x48B7 + . 0x827D + RECALL 0x8877 + VIDEO 0x7887 + AUDIO 0xD827 + DISPLAY 0x6897 + SNAPSHOT 0x12ED + PIP 0x52AD + RECSTOP 0x629D + REC 0xE21D + TIMESHIFT 0xA25D + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Leadtek_PVR/lircrc-leadtekPVR.txt b/abs/core/system-templates/templates/remotes/Leadtek_PVR/lircrc-leadtekPVR.txt new file mode 100755 index 0000000..a15ee21 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Leadtek_PVR/lircrc-leadtekPVR.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CH_UP +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH_DOWN +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = CH_UP +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = CH_DOWN +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL_UP +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL_DOWN +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ENTER +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = POWER +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = SNAPSHOT +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FORWARD +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = BACK +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = REC +config = R +end + +# Delete +begin +prog = mythtv +button = RED +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = GREEN +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = YELLOW +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = DISPLAY +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = RECALL +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = PIP +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = BLUE +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = DISPLAY +config = osd +end + +# Pause playback +begin +prog = mplayer +button = SNAPSHOT +config = pause +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = BACK +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FORWARD +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FULLSCREEN +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = SNAPSHOT +config = Pause +end + +begin +prog = xine +button = CH_UP +config = EventUp +end + +begin +prog = xine +button = CH_DOWN +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = ENTER +config = EventSelect +end + +begin +prog = xine +button = DISPLAY +config = Menu +end + +begin +prog = xine +button = FORWARD +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = BACK +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL_UP +config = Volume+ +end + +begin +prog = xine +button = VOL_DOWN +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = TELETEXT +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Leadtek_PVR/preview.jpg b/abs/core/system-templates/templates/remotes/Leadtek_PVR/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Leadtek_PVR/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Lifeview/lircd-lifeview.conf b/abs/core/system-templates/templates/remotes/Lifeview/lircd-lifeview.conf new file mode 100755 index 0000000..2df0bc6 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Lifeview/lircd-lifeview.conf @@ -0,0 +1,48 @@ +begin remote + name Lifeview_trio + bits 16 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 199996 + pre_data_bits 16 + pre_data 0x8001 + + begin codes + fullscreen 0x0174 + power 0x0074 + one 0x0002 + two 0x0003 + three 0x0004 + four 0x0005 + five 0x0006 + six 0x0007 + seven 0x0008 + eight 0x0009 + nine 0x000A + zero 0x000B + recall 0x0081 + mute 0x0071 + tv/radio 0x0181 + sap 0x0170 + ch+ 0x0192 + vol- 0x0072 + enter 0x001C + vol+ 0x0073 + ch- 0x0193 + pip 0x0175 + source 0x0182 + record/pause 0x00A7 + timeshift/pause 0x0077 + rewind 0x009E + play/pause 0x00A4 + forward 0x009F + back 0x019C + stop 0x0080 + next 0x0197 + blank 0x0173 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Lifeview/lircrc-lifeview.txt b/abs/core/system-templates/templates/remotes/Lifeview/lircrc-lifeview.txt new file mode 100755 index 0000000..845742a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Lifeview/lircrc-lifeview.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = ch+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = ch- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = enter +config = Space +end + +# Play +begin +prog = mythtv +button = play/pause +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = play/pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = forward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = next +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = back +config = PgUp +end + +# Record +begin +prog = mythtv +button = record/pause +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = source +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = blank +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = zero +config = 0 +end + +begin +prog = mythtv +button = one +config = 1 +end + +begin +prog = mythtv +button = two +config = 2 +end + +begin +prog = mythtv +button = three +config = 3 +end + +begin +prog = mythtv +button = four +config = 4 +end + +begin +prog = mythtv +button = five +config = 5 +end + +begin +prog = mythtv +button = six +config = 6 +end + +begin +prog = mythtv +button = seven +config = 7 +end + +begin +prog = mythtv +button = eight +config = 8 +end + +begin +prog = mythtv +button = nine +config = 9 +end + +# Previous channel +begin +prog = mythtv +button = recall +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = pip +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = source +config = osd +end + +# Pause playback +begin +prog = mplayer +button = play/pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = forward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = next +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = back +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = fullscreen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play/pause +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = play/pause +config = Pause +end + +begin +prog = xine +button = ch+ +config = EventUp +end + +begin +prog = xine +button = ch- +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = enter +config = EventSelect +end + +begin +prog = xine +button = source +config = Menu +end + +begin +prog = xine +button = forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = next +config = EventNext +end + +begin +prog = xine +button = back +config = EventPrior +end + +begin +prog = xine +button = blank +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Lifeview/preview.jpg b/abs/core/system-templates/templates/remotes/Lifeview/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Lifeview/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/MX-500-jams/lircd.conf.MX-500-JAMS b/abs/core/system-templates/templates/remotes/MX-500-jams/lircd.conf.MX-500-JAMS new file mode 100644 index 0000000..b76d32c --- /dev/null +++ b/abs/core/system-templates/templates/remotes/MX-500-jams/lircd.conf.MX-500-JAMS @@ -0,0 +1,115 @@ +# +# this config file was automatically generated +# using lirc-0.7.1-CVS(serial) on Fri Feb 4 23:20:56 2005 +# +# contributed by Christoph Bartelmus +# +# brand: Streamzap +# model no. of remote control: PC Remote +# devices being controlled by this remote: USB receiver +# + +begin remote + + name Streamzap_PC_Remote + bits 6 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 889 889 + zero 889 889 + plead 889 + pre_data_bits 8 + pre_data 0xA3 + gap 108344 + toggle_bit 2 + + + begin codes + 0 0x00 + 1 0x01 + 2 0x02 + 3 0x03 + 4 0x04 + 5 0x05 + 6 0x06 + 7 0x07 + 8 0x08 + 9 0x09 + POWER 0x0A + MUTE 0x0B + CH_UP 0x0C + VOL_UP 0x0D + CH_DOWN 0x0E + VOL_DOWN 0x0F + UP 0x10 + LEFT 0x11 + OK 0x12 + RIGHT 0x13 + DOWN 0x14 + MENU 0x15 + EXIT 0x16 + PLAY 0x17 + PAUSE 0x18 + STOP 0x19 + |<< 0x1A + >>| 0x1B + RECORD 0x1C + << 0x1D + >> 0x1E + RED 0x20 + GREEN 0x21 + YELLOW 0x22 + BLUE 0x23 + end codes + +end remote + + + +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.7.2(streamzap) on Mon Dec 5 08:45:02 2005 +# +# contributed by +# +# brand: RS_LD_120-MX500 +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + + name RS_LD + bits 15 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + one 384 1920 + zero 384 896 + ptrail 384 + gap 70400 + min_repeat 2 + toggle_bit 0 + + + begin codes + RESET 0x19FD + TIME 0X1902 + BLANK 0X1B02 + PICTURE 0X1882 + ASPECT 0X1A82 + BROWSE 0X1982 + DELETE 0X1B82 + CARD 0X1842 + CARD_SOURCE 0X1A42 + SPARE1 0X1942 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/MX-500-jams/lircrc b/abs/core/system-templates/templates/remotes/MX-500-jams/lircrc new file mode 100644 index 0000000..5e668b5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/MX-500-jams/lircrc @@ -0,0 +1,832 @@ +# StreamZap Remote +# 'config' must either be a literal key, e.g. 'config = l' or must +# refer to a defined key in MythTV, e.g. 'config = PLAY'a + + +#restart frontend +begin + remote = RS_LD + button = RESET + prog = irexec + repeat = 0 + config = /usr/bin/restartfrontend.sh +end + +#time +begin + remote = RS_LD + button = TIME + prog = irexec + repeat = 10 + config = /usr/bin/saytime.sh +end + +#screen blank +begin + remote = RS_LD + button = BLANK + prog = irexec + repeat = 0 +# config = ls + config = xset s activate ; xset s blank +end + + +#picture +begin +REMOTE = RS_LD +prog = mythtv +button = PICTURE +repeat = 4 +config = f +end + +#change aspect +begin +remote = RS_LD +prog = mythtv +button = ASPECT +# change aspect ratio +config = w +end + +#Browse +begin +remote = RS_LD +prog = mythtv +button = BROWSE +repeat = 8 +config = o +end + +# delete key +begin +remote = RS_LD +prog = mythtv +button = DELETE +repeat = 8 +config = d +end + + +#change card +begin +remote = RS_LD +prog = mythtv +button = CARD +repeat = 8 +config = y +end + +# Change TV card input +begin +remote = RS_LD +prog = mythtv +button = CARD_SOURCE +repeat = 4 +config = C +end + + + +# Cycle through channel history +begin +remote = Streamzap_PC_Remote +prog = mythtv +button = BLUE +repeat = 4 +config = H +end + +# Bring up OSD info +begin +remote = Streamzap_PC_Remote +prog = mythtv +button = YELLOW +repeat = 4 +config = i +end + + + + +begin +prog = mythtv +button = 0 +config = 0 +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 = POWER +config = Esc +end + +# ??? +begin +prog = mythtv +button = MUTE +config = F9 +end + +begin +prog = mythtv +button = CH_UP +repeat = 3 +config = PgUp +end + +begin +prog = mythtv +button = VOL_UP +repeat = 3 +config = ] +end + +begin +prog = mythtv +button = CH_DOWN +repeat = 3 +config = PgDown +end + +begin +prog = mythtv +button = VOL_DOWN +repeat = 3 +config = [ +end + +begin +prog = mythtv +button = UP +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = LEFT +# navigates, or skips back during playback or live tv. +config = Left +end + +begin +prog = mythtv +button = OK +config = Return +end + +begin +prog = mythtv +button = RIGHT +# navigates, or skips forwards during playback or live tv. +config = Right +end + +begin +prog = mythtv +button = DOWN +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = MENU +config = m +end + +begin +prog = mythtv +button = EXIT +config = Esc +end + +begin +prog = mythtv +button = PLAY +config = Space +end + +begin +prog = mythtv +button = PAUSE +config = p +end + +begin +prog = mythtv +button = STOP +config = Esc +end + +begin +prog = mythtv +# skip backward +button = |<< +config = PgUp +end + +begin +prog = mythtv +# skip forward +button = >>| +config = PgDown +end + +begin +prog = mythtv +button = RECORD +config = r +end + +begin +prog = mythtv +# rewind +button = << +config = Home +end + +begin +prog = mythtv +# fast forward +button = >> +config = End +end + +begin +prog = mythtv +button = RED +# Delete +config = d +end + +begin +prog = mythtv +button = GREEN +# Info +config = i +end + +#begin +#prog = mythtv +#button = YELLOW +# change aspect ratio +#config = w +#end + +begin +prog = mythtv +button = BLUE +config = Tab +end + +# MPLAYER +begin +prog = mplayer +button = POWER +config = quit +end + +begin +prog = mplayer +button = MUTE +config = mute +end + +begin +prog = mplayer +button = VOL_UP +repeat = 3 +config = volume +1 +end + +begin +prog = mplayer +button = VOL_DOWN +repeat = 3 +config = volume -1 +end + +begin +prog = mplayer +button = UP +repeat = 3 +config = seek +10 +end + +begin +prog = mplayer +button = LEFT +# navigates, or skips back during playback or live tv. +config = seek -60 +end + +begin +prog = mplayer +button = RIGHT +# navigates, or skips forwards during playback or live tv. +config = seek +60 +end + +begin +prog = mplayer +button = DOWN +repeat = 3 +config = seek -10 +end + +begin +prog = mplayer +button = EXIT +config = quit +end + +begin +prog = mplayer +button = play +config = speed_set 1.0 +end + +begin + prog = mplayer + button = pause + config = pause +end + +begin +prog = mplayer +button = STOP +config = quit +end + +begin +prog = mplayer +# skip backward +button = |<< +config = seek -600 +end + +begin +prog = mplayer +# skip forward +button = >>| +config = seek +600 +end + +begin +prog = mplayer +# slow forward +button = << +config = speed_mult 0.5 +end + +begin +prog = mplayer +# fast forward +button = >> +config = speed_mult 2.0 +end + +### xine commands + +begin +prog = xine +button = YELLOW +repeat = 4 +#config = ToggleVisiblity +config = OSDStreamInfos +end + +begin +prog = xine +button = MENU +repeat = 4 +config = SeekRelative+60 +end + +# increase brightness by 10 +begin + button = DELETE + prog = xine + repeat = 4 + config = BrightnessControl+ +end + +# decrease brightness by 10 +begin + button = PICTURE + prog = xine + repeat = 4 + config = BrightnessControl- +end + + +begin +prog = xine +button = PAUSE +repeat = 4 +config = Pause +end + +begin +prog = xine +button = PLAY +repeat = 4 +config = Play +end + +begin +prog = xine +button = STOP +repeat = 4 +config = quit +end + +begin +prog = xine +button = MUTE +repeat = 4 +config = mute +end + +begin +prog = xine +button = << +repeat = 4 +config = SeekRelative-30 +end + +begin +prog = xine +button = >> +repeat = 4 +#config = SeekRelative+30 +config = SpeedFaster +end + +begin +prog = xine +button = POWER +repeat = 4 +config = quit +end + +begin +prog = xine +button = EXIT +repeat = 4 +config = quit +end + + +begin +prog = xine +button = FREEZE +repeat = 4 +config = SeekRelative+1200 +end + +begin +prog = xine +button = MOVE +repeat = 4 +config = SeekRelative-1200 +end + +begin +prog = xine +button = 3 +config = SpuNext +repeat = 0 +end + +# Select previous sub picture (subtitle) channel. +begin +button = 1 +prog = xine +repeat = 0 +config = SpuPrior +end + +# Select next audio channel. +begin +button = 9 +prog = xine +repeat = 0 +config = AudioChannelNext +end + +# Select previous audio channel. +begin +button = 7 +prog = xine +repeat = 0 +config = AudioChannelPrior +end + + + +# Up event. +begin + +button = UP +prog = xine +repeat = 8 +config = EventUp +end + +# Down event. +begin + +button = DOWN +prog = xine +repeat = 8 +config = EventDown +end + +# Left event. +begin + +button = LEFT +prog = xine +repeat = 8 +config = EventLeft +end + +# Right event. +begin + +button = RIGHT +prog = xine +repeat = 8 +config = EventRight +end + +# Select event. +begin +prog = xine +button = ok +repeat = 8 +config = EventSelect +end + +# Down Chapter +begin + +button = CH_DOWN +prog = xine +repeat = 8 +config = EventPrior +end + +# Next Chapter. +begin + +button = CH_UP +prog = xine +repeat = 8 +config = EventNext +end + +# menu. +begin + +button = record +prog = xine +repeat = 8 +config = RootMenu +end + +# Toggle aspect ratio +begin +prog = xine +button = ASPECT +repeat = 0 +config = ToggleAspectRatio +end + + + +#######xmms +begin xmms + begin + prog = xmms + button = PLAY + config = PLAY + end + begin + prog = xmms + button = clear + config = PLAYLIST_CLEAR + end + begin + prog = xmms + button = load + config = PLAYLIST_ADD .xmms/xmms.m3u + end + begin + prog = xmms + button = PAUSE + config = PAUSE + end + begin + prog = xmms + button = STOP + config = STOP + end + begin + prog = xmms + button = EXIT + config = QUIT + flags = mode + end + + begin + prog = xmms + button = POWER + config = QUIT + flags = mode + end + + begin + prog = xmms + button = CH_UP + config = NEXT + end + begin + prog = xmms + button = CH_DOWN + config = PREV + end + + + +begin + prog = xmms + button = >>| + config = NEXT + end +begin + prog = xmms + button = |<< + config = PREV +end + + +begin + prog = xmms + button = << + config = FWD 10 + repeat = 2 + end + begin + prog = xmms + button = << + config = BWD 10 + repeat = 2 + end + begin + prog = xmms + button = volup + config = VOL_UP 10 + repeat = 2 + end + begin + prog = xmms + button = voldown + config = VOL_DOWN 10 + repeat = 2 + end + begin + prog = xmms + button = 1 + config = ONE + end + begin + prog = xmms + button = 2 + config = TWO + end + begin + prog = xmms + button = 3 + config = THREE + end + begin + prog = xmms + button = 4 + config = FOUR + end + begin + prog = xmms + button = 5 + config = FIVE + end + begin + prog = xmms + button = 6 + config = SIX + end + begin + prog = xmms + button = 7 + config = SEVEN + end + begin + prog = xmms + button = 8 + config = EIGHT + end + begin + prog = xmms + button = 9 + config = NINE + end + begin + prog = xmms + button = 0 + config = ZERO + end + begin + prog = xmms + button = enter + config = SETPOS + end +end xmms + +# + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/system-templates/templates/remotes/MX-500-jams/preview.jpg b/abs/core/system-templates/templates/remotes/MX-500-jams/preview.jpg new file mode 100644 index 0000000..38857f9 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/MX-500-jams/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Medion_RF/lircd-medion-rf.conf b/abs/core/system-templates/templates/remotes/Medion_RF/lircd-medion-rf.conf new file mode 100755 index 0000000..8793475 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Medion_RF/lircd-medion-rf.conf @@ -0,0 +1,82 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.7.0(atiusb) on Sun Jan 23 11:18:36 2005 +# +# contributed by Dirk Aust +# +# brand: Medion, Made by X10, China +# Remote P/N: 20016398 +# Receiver P/N: 20016397 + +begin remote + + name Medion + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 139873 + toggle_bit 0 + + + begin codes + TV 0x00000014012C0000 + VCR 0x00000014022D0000 + DVD 0x00000014D9040000 + MUSIC 0x00000014DB060000 + RADIO 0x00000014032E0000 + PHOTO 0x00000014DA050000 + TV_PREVIEW 0x00000014042F0000 + CHANNEL_LIST 0x0000001405300000 + SETUP 0x00000014F01B0000 + VIDEO_DESKTOP 0x0000001406310000 + CHAN+ 0x00000014E00B0000 + VOL- 0x00000014DD080000 + MUTE 0x00000014D5000000 + VOL+ 0x00000014DE090000 + CHAN- 0x00000014E10C0000 + RED 0x0000001407320000 + GREEN 0x0000001408330000 + YELLOW 0x0000001409340000 + BLUE 0x000000140A350000 + TXT 0x00000014FE290000 + 1 0x00000014E20D0000 + 2 0x00000014E30E0000 + 3 0x00000014E40F0000 + 4 0x00000014E5100000 + 5 0x00000014E6110000 + 6 0x00000014E7120000 + 7 0x00000014E8130000 + 8 0x00000014E9140000 + 9 0x00000014EA150000 + TV/RADIO 0x00000014F11C0000 + 0 0x00000014EC170000 + DELETE 0x00000014F5200000 + RENAME 0x000000140B360000 + SNAPSHOT 0x00000014ED180000 + UP 0x00000014EF1A0000 + LEFT 0x00000014F21D0000 + OK 0x00000014F31E0000 + RIGHT 0x00000014F41F0000 + DOWN 0x00000014F7220000 + ACQ_IMAGE 0x000000140C370000 + EDIT_IMAGE 0x000000140D380000 + REW 0x00000014F9240000 + PLAY 0x00000014FA250000 + FFW 0x00000014FB260000 + RECORD 0x00000014FC270000 + STOP 0x00000014FD280000 + PAUSE 0x00000014FE290000 + PREV 0x00000014F6210000 + FULL 0x000000140E390000 + NEXT 0x00000014F8230000 + DVD_MENU 0x00000014EE190000 + DVD_AUDIO 0x000000140F3A0000 + POWER 0x00000014D7020000 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Medion_RF/lircrc-medion-rf.txt b/abs/core/system-templates/templates/remotes/Medion_RF/lircrc-medion-rf.txt new file mode 100755 index 0000000..cc69f96 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Medion_RF/lircrc-medion-rf.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CH+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH- +config = Down +end + +# General Left +begin +prog = mythtv +button = LEFT +config = Left +end + +# General Right +begin +prog = mythtv +button = RIGHT +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = UP +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = DOWN +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = OK +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY_PAUSE +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = PC +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = PLAY_PAUSE +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FFWD +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = FRWND +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = NEXT +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = PREV +config = PgUp +end + +# Record +begin +prog = mythtv +button = RECORD +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = RC +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = +config = osd +end + +# Pause playback +begin +prog = mplayer +button = PLAY_PAUSE +config = pause +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = FRWND +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FFWD +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = NEXT +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = PREV +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY_PAUSE +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = PLAY_PAUSE +config = Pause +end + +begin +prog = xine +button = UP +config = EventUp +end + +begin +prog = xine +button = DOWN +config = EventDown +end + +begin +prog = xine +button = LEFT +config = EventLeft +end + +begin +prog = xine +button = RIGHT +config = EventRight +end + +begin +prog = xine +button = OK +config = EventSelect +end + +begin +prog = xine +button = +config = Menu +end + +begin +prog = xine +button = FFWD +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = FRWND +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL+ +config = Volume+ +end + +begin +prog = xine +button = VOL- +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = NEXT +config = EventNext +end + +begin +prog = xine +button = PREV +config = EventPrior +end + +begin +prog = xine +button = +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Medion_RF/preview.jpg b/abs/core/system-templates/templates/remotes/Medion_RF/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Medion_RF/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Medion_X10_8080/lircd-medionx10-8080.conf b/abs/core/system-templates/templates/remotes/Medion_X10_8080/lircd-medionx10-8080.conf new file mode 100755 index 0000000..68c9179 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Medion_X10_8080/lircd-medionx10-8080.conf @@ -0,0 +1,68 @@ +begin remote + name Medion_8080 + bits 16 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 139996 + pre_data_bits 8 + pre_data 0x14 + + begin codes + dvdaudio 0x0F3A + power 0xD702 + dvdmenu 0xEE19 + ff 0xF823 + fullscreen 0x0E39 + bb 0xF621 + pause 0xFE29 + stop 0xFD28 + rec 0xFC27 + f 0xFB26 + play 0xFA25 + b 0xF924 + editimage 0x0D38 + acquireimage 0x0C37 + ok 0xF31E + right 0xF41F + left 0xF21D + down 0xF722 + up 0xEF1A + snapshot 0xED18 + rename 0x0B36 + delete 0xF520 + tvradio 0xF11C + 0 0xEC17 + 9 0xEA15 + 8 0xE914 + 7 0xE813 + 6 0xE712 + 5 0xE611 + 4 0xE510 + 3 0xE40F + 2 0xE30E + 1 0xE20D + txt 0xEB16 + blue 0x0A35 + yellow 0x0934 + green 0x0833 + red 0x0732 + vol+ 0xDE09 + vol- 0xDD08 + chan- 0xE10C + chan+ 0xE00B + videodesktop 0x0631 + setup 0xF01B + channellist 0x0530 + tvpreview 0x042F + photo 0xDA05 + radio 0x032E + music 0xDB06 + dvd 0xD904 + vcr 0x022D + tv 0x012C + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Medion_X10_8080/lircrc-medionx10-8080.txt b/abs/core/system-templates/templates/remotes/Medion_X10_8080/lircrc-medionx10-8080.txt new file mode 100755 index 0000000..2476f76 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Medion_X10_8080/lircrc-medionx10-8080.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = chan+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = chan- +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ok +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = ff +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = bb +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = delete +config = D +end + +# OSD browse +begin +prog = mythtv +button = tvpreview +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = channellist +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = setup +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = fullscreen +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = snapshot +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = txt +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = pip +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = tvpreview +config = osd +end + +# Pause playback +begin +prog = mplayer +button = play +config = pause +end + +# Mute +begin +prog = mplayer +button = +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = bb +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = ff +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = fullscreen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = chan+ +config = EventUp +end + +begin +prog = xine +button = chan- +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = ok +config = EventSelect +end + +begin +prog = xine +button = tvpreview +config = Menu +end + +begin +prog = xine +button = forward +#config = ff +config = SeekRelative+60 +end + +begin +prog = xine +button = rewind +#config = bb +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = channellist +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Medion_X10_8080/preview.jpg b/abs/core/system-templates/templates/remotes/Medion_X10_8080/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Medion_X10_8080/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Medion_X10_8802/lircd-medionx10-8802.conf b/abs/core/system-templates/templates/remotes/Medion_X10_8802/lircd-medionx10-8802.conf new file mode 100755 index 0000000..f897a64 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Medion_X10_8802/lircd-medionx10-8802.conf @@ -0,0 +1,126 @@ +# +# this config file was hand crafted for +# lirc-0.8.0(atiusb) on Sun June 11 22:49:23 2006 +# +# contributed by Ted Schipper +# +# brand: Medion 8802 +# Remote P/N: 20029724 +# Receiver P/N: 20024123 +# model no. of remote control: Medion RF remote +# devices being controlled by this remote: Medion 8802 Multimedia Home Entertainment Design Center +# + +begin remote + + name Medion_8802 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 227999 + min_repeat 5 + toggle_bit 0 + + + begin codes + Line_TV 0x719C + Line_TV 0xF11C + Rec_TV 0x6D98 + Rec_TV 0xED18 + On/Standby 0xD702 + Photo 0x5A85 + Photo 0xDA05 + Music 0x5B86 + Music 0xDB06 + Guide 0x0631 + Guide 0x86B1 + DVD_Menu 0x5984 + DVD_Menu 0xD904 + Video 0x022D + Video 0x82AD + Text 0x6B96 + Text 0xEB16 + RED/Audio 0x0732 + RED/Audio 0x87B2 + YELLOW/Angle 0x0934 + YELLOW/Angle 0x89B4 + BLUE/Title 0x0A35 + BLUE/Title 0x8AB5 + GREEN/Subtitle 0x0833 + GREEN/Subtitle 0x88B3 + Vol+ 0x5E89 + Vol+ 0xDE09 + Vol- 0x5D88 + Vol- 0xDD08 + Up 0x6F9A + Up 0xEF1A + Down 0x77A2 + Down 0xF722 + Left 0x729D + Left 0xF21D + Right 0x749F + Right 0xF41F + Ok 0x739E + Ok 0xF31E + Mute 0x5580 + Mute 0xD500 + Ch+ 0x608B + Ch+ 0xE00B + Ch- 0x618C + Ch- 0xE10C + 1 0x628D + 1 0xE20D + 2 0x638E + 2 0xE30E + 3 0x648F + 3 0xE40F + 4 0x6590 + 4 0xE510 + 5 0x6691 + 5 0xE611 + 6 0x6792 + 6 0xE712 + 7 0x6893 + 7 0xE813 + 8 0x6994 + 8 0xE994 + 9 0x6A95 + 9 0xEA15 + * 0x0C37 + * 0x8CB7 + 0 0x6C97 + 0 0xEC17 + # 0x0D38 + # 0x8DB8 + Back 0x75A0 + Back 0xF520 + Info 0x042F + Info 0x84AF + Select 0x709B + Select 0xF01B + Rewind 0x79A4 + Rewind 0xF924 + Play 0x7AA5 + Play 0xFA25 + Fast_Forward 0x7BA6 + Fast_Forward 0xFB26 + Pause 0x7EA9 + Pause 0xFE29 + Start 0x76A1 + Start 0xF621 + End 0x78A3 + End 0xF823 + Stop 0x7DA8 + Stop 0xFD28 + Record 0x7CA7 + Record 0xFC27 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Medion_X10_8802/lircrc-medionx10-8802.txt b/abs/core/system-templates/templates/remotes/Medion_X10_8802/lircrc-medionx10-8802.txt new file mode 100755 index 0000000..fb91d72 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Medion_X10_8802/lircrc-medionx10-8802.txt @@ -0,0 +1,487 @@ +# Channel Up +begin +prog = mythtv +button = Ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = Left +config = Left +end + +# General Right +begin +prog = mythtv +button = Right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = Up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = Down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = Vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = Vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = Ok +config = Space +end + +# OK/Select +begin +prog = mythtv +button = Select +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = On/Standby +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = Fast_Forward +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = Rewind +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +config = R +end + +# Delete +begin +prog = mythtv +button = RED/Audio +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Guide +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = Info +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = back +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Guide +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Fast_Forward +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = Rewind +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = Right +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = Left +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = Stop +config = Quit +end + +begin +prog = xine +button = Pause +config = Pause +end + +begin +prog = xine +button = Up +config = EventUp +end + +begin +prog = xine +button = Down +config = EventDown +end + +begin +prog = xine +button = Left +config = EventLeft +end + +begin +prog = xine +button = Right +config = EventRight +end + +begin +prog = xine +button = Select +config = EventSelect +end + +begin +prog = xine +button = Ok +config = EventSelect +end + +begin +prog = xine +button = Guide +config = Menu +end + +begin +prog = xine +button = Fast_Forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = Rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = Vol+ +config = Volume+ +end + +begin +prog = xine +button = Vol- +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = Stop +config = RootMenu +end + +begin +prog = xine +button = Ch+ +config = EventNext +end + +begin +prog = xine +button = Ch- +config = EventPrior +end + +begin +prog = xine +button = Info +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Medion_X10_8802/preview.jpg b/abs/core/system-templates/templates/remotes/Medion_X10_8802/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Medion_X10_8802/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/MythVantage-one/lircd.conf b/abs/core/system-templates/templates/remotes/MythVantage-one/lircd.conf new file mode 100644 index 0000000..b76d32c --- /dev/null +++ b/abs/core/system-templates/templates/remotes/MythVantage-one/lircd.conf @@ -0,0 +1,115 @@ +# +# this config file was automatically generated +# using lirc-0.7.1-CVS(serial) on Fri Feb 4 23:20:56 2005 +# +# contributed by Christoph Bartelmus +# +# brand: Streamzap +# model no. of remote control: PC Remote +# devices being controlled by this remote: USB receiver +# + +begin remote + + name Streamzap_PC_Remote + bits 6 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 889 889 + zero 889 889 + plead 889 + pre_data_bits 8 + pre_data 0xA3 + gap 108344 + toggle_bit 2 + + + begin codes + 0 0x00 + 1 0x01 + 2 0x02 + 3 0x03 + 4 0x04 + 5 0x05 + 6 0x06 + 7 0x07 + 8 0x08 + 9 0x09 + POWER 0x0A + MUTE 0x0B + CH_UP 0x0C + VOL_UP 0x0D + CH_DOWN 0x0E + VOL_DOWN 0x0F + UP 0x10 + LEFT 0x11 + OK 0x12 + RIGHT 0x13 + DOWN 0x14 + MENU 0x15 + EXIT 0x16 + PLAY 0x17 + PAUSE 0x18 + STOP 0x19 + |<< 0x1A + >>| 0x1B + RECORD 0x1C + << 0x1D + >> 0x1E + RED 0x20 + GREEN 0x21 + YELLOW 0x22 + BLUE 0x23 + end codes + +end remote + + + +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.7.2(streamzap) on Mon Dec 5 08:45:02 2005 +# +# contributed by +# +# brand: RS_LD_120-MX500 +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + + name RS_LD + bits 15 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + one 384 1920 + zero 384 896 + ptrail 384 + gap 70400 + min_repeat 2 + toggle_bit 0 + + + begin codes + RESET 0x19FD + TIME 0X1902 + BLANK 0X1B02 + PICTURE 0X1882 + ASPECT 0X1A82 + BROWSE 0X1982 + DELETE 0X1B82 + CARD 0X1842 + CARD_SOURCE 0X1A42 + SPARE1 0X1942 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/MythVantage-one/lircrc b/abs/core/system-templates/templates/remotes/MythVantage-one/lircrc new file mode 100755 index 0000000..2663c63 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/MythVantage-one/lircrc @@ -0,0 +1,857 @@ +# StreamZap Remote +# 'config' must either be a literal key, e.g. 'config = l' or must +# refer to a defined key in MythTV, e.g. 'config = PLAY'a + + +#restart frontend +begin + remote = RS_LD + button = RESET + prog = irexec + repeat = 0 + config = /usr/bin/restartfrontend.sh +end + +#time +begin + remote = RS_LD + button = TIME + prog = irexec + repeat = 10 + config = /usr/bin/saytime.sh +end + +#screen blank +begin + remote = RS_LD + button = BLANK + prog = irexec + repeat = 0 +# config = ls + config = xset s activate ; xset s blank +end + + +#picture +begin +REMOTE = RS_LD +prog = mythtv +button = PICTURE +repeat = 5 +config = f +end + +#change aspect +begin +remote = RS_LD +prog = mythtv +button = ASPECT +# change aspect ratio +config = w +repeat = 5 +end + +#Browse +begin +remote = RS_LD +prog = mythtv +button = BROWSE +repeat = 8 +config = o +end + +# delete key +begin +remote = RS_LD +prog = mythtv +button = DELETE +repeat = 8 +config = d +end + + +#change card +begin +remote = RS_LD +prog = mythtv +button = CARD +repeat = 8 +config = y +end + +# Change TV card input +begin +remote = RS_LD +prog = mythtv +button = CARD_SOURCE +repeat = 4 +config = C +end + + + +# Cycle through channel history +begin +remote = Streamzap_PC_Remote +prog = mythtv +button = BLUE +repeat = 4 +config = H +end + +# Bring up OSD info +begin +remote = Streamzap_PC_Remote +prog = mythtv +button = YELLOW +repeat = 4 +config = i +end + + + + +begin +prog = mythtv +button = 0 +config = 0 +repeat = 5 +end + +begin +prog = mythtv +button = 1 +config = 1 +repeat = 5 +end + +begin +prog = mythtv +button = 2 +config = 2 +repeat = 5 +end + +begin +prog = mythtv +button = 3 +config = 3 +repeat = 5 +end + +begin +prog = mythtv +button = 4 +config = 4 +repeat = 5 +end + +begin +prog = mythtv +button = 5 +config = 5 +repeat = 5 +end + +begin +prog = mythtv +button = 6 +config = 6 +repeat = 5 +end + +begin +prog = mythtv +button = 7 +config = 7 +repeat = 5 +end + +begin +prog = mythtv +button = 8 +config = 8 +repeat = 5 +end + +begin +prog = mythtv +button = 9 +config = 9 +repeat = 5 +end + + +begin +prog = mythtv +button = POWER +config = Esc +end + +# ??? +begin +prog = mythtv +button = MUTE +config = F9 +end + +begin +prog = mythtv +button = CH_UP +repeat = 3 +config = PgUp +end + +begin +prog = mythtv +button = VOL_UP +repeat = 3 +config = ] +end + +begin +prog = mythtv +button = CH_DOWN +repeat = 3 +config = PgDown +end + +begin +prog = mythtv +button = VOL_DOWN +repeat = 3 +config = [ +end + +begin +prog = mythtv +button = UP +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = LEFT +# navigates, or skips back during playback or live tv. +config = Left +repeat = 5 +end + +begin +prog = mythtv +button = OK +config = Return +repeat = 5 +end + +begin +prog = mythtv +button = RIGHT +# navigates, or skips forwards during playback or live tv. +config = Right +end + +begin +prog = mythtv +button = DOWN +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = MENU +config = m +repeat = 5 +end + +begin +prog = mythtv +button = EXIT +config = Esc +repeat = 5 +end + +begin +prog = mythtv +button = PLAY +config = Space +repeat = 5 +end + +begin +prog = mythtv +button = PAUSE +config = p +repeat = 5 +end + +begin +prog = mythtv +button = STOP +config = Esc +repeat = 5 +end + +begin +prog = mythtv +# skip backward +button = |<< +config = PgUp +repeat = 5 +end + +begin +prog = mythtv +# skip forward +button = >>| +config = PgDown +repeat = 5 +end + +begin +prog = mythtv +button = RECORD +config = r +repeat = 5 +end + +begin +prog = mythtv +# rewind +button = << +config = Home +repeat = 5 +end + +begin +prog = mythtv +# fast forward +button = >> +config = End +repeat = 5 +end + +begin +prog = mythtv +button = RED +# Delete +config = d +end + +begin +prog = mythtv +button = GREEN +# Info +config = S +repeat = 5 +end + +#begin +#prog = mythtv +#button = YELLOW +# change aspect ratio +#config = w +#end + +begin +prog = mythtv +button = BLUE +config = Tab +end + +# MPLAYER +begin +prog = mplayer +button = POWER +config = quit +end + +begin +prog = mplayer +button = MUTE +config = mute +end + +begin +prog = mplayer +button = VOL_UP +repeat = 3 +config = volume +1 +end + +begin +prog = mplayer +button = VOL_DOWN +repeat = 3 +config = volume -1 +end + +begin +prog = mplayer +button = UP +repeat = 3 +config = seek +10 +end + +begin +prog = mplayer +button = LEFT +# navigates, or skips back during playback or live tv. +config = seek -60 +end + +begin +prog = mplayer +button = RIGHT +# navigates, or skips forwards during playback or live tv. +config = seek +60 +end + +begin +prog = mplayer +button = DOWN +repeat = 3 +config = seek -10 +end + +begin +prog = mplayer +button = EXIT +config = quit +end + +begin +prog = mplayer +button = play +config = speed_set 1.0 +end + +begin + prog = mplayer + button = pause + config = pause +end + +begin +prog = mplayer +button = STOP +config = quit +end + +begin +prog = mplayer +# skip backward +button = |<< +config = seek -600 +end + +begin +prog = mplayer +# skip forward +button = >>| +config = seek +600 +end + +begin +prog = mplayer +# slow forward +button = << +config = speed_mult 0.5 +end + +begin +prog = mplayer +# fast forward +button = >> +config = speed_mult 2.0 +end + +### xine commands + +begin +prog = xine +button = YELLOW +repeat = 4 +#config = ToggleVisiblity +config = OSDStreamInfos +end + +begin +prog = xine +button = MENU +repeat = 4 +config = SeekRelative+60 +end + +# increase brightness by 10 +begin + button = DELETE + prog = xine + repeat = 4 + config = BrightnessControl+ +end + +# decrease brightness by 10 +begin + button = PICTURE + prog = xine + repeat = 4 + config = BrightnessControl- +end + + +begin +prog = xine +button = PAUSE +repeat = 4 +config = Pause +end + +begin +prog = xine +button = PLAY +repeat = 4 +config = Play +end + +begin +prog = xine +button = STOP +repeat = 4 +config = quit +end + +begin +prog = xine +button = MUTE +repeat = 4 +config = mute +end + +begin +prog = xine +button = << +repeat = 4 +config = SeekRelative-30 +end + +begin +prog = xine +button = >> +repeat = 4 +#config = SeekRelative+30 +config = SpeedFaster +end + +begin +prog = xine +button = POWER +repeat = 4 +config = quit +end + +begin +prog = xine +button = EXIT +repeat = 4 +config = quit +end + + +begin +prog = xine +button = FREEZE +repeat = 4 +config = SeekRelative+1200 +end + +begin +prog = xine +button = MOVE +repeat = 4 +config = SeekRelative-1200 +end + +begin +prog = xine +button = 3 +config = SpuNext +repeat = 0 +end + +# Select previous sub picture (subtitle) channel. +begin +button = 1 +prog = xine +repeat = 0 +config = SpuPrior +end + +# Select next audio channel. +begin +button = 9 +prog = xine +repeat = 0 +config = AudioChannelNext +end + +# Select previous audio channel. +begin +button = 7 +prog = xine +repeat = 0 +config = AudioChannelPrior +end + + + +# Up event. +begin + +button = UP +prog = xine +repeat = 8 +config = EventUp +end + +# Down event. +begin + +button = DOWN +prog = xine +repeat = 8 +config = EventDown +end + +# Left event. +begin + +button = LEFT +prog = xine +repeat = 8 +config = EventLeft +end + +# Right event. +begin + +button = RIGHT +prog = xine +repeat = 8 +config = EventRight +end + +# Select event. +begin +prog = xine +button = ok +repeat = 8 +config = EventSelect +end + +# Down Chapter +begin + +button = CH_DOWN +prog = xine +repeat = 8 +config = EventPrior +end + +# Next Chapter. +begin + +button = CH_UP +prog = xine +repeat = 8 +config = EventNext +end + +# menu. +begin + +button = record +prog = xine +repeat = 8 +config = RootMenu +end + +# Toggle aspect ratio +begin +prog = xine +button = ASPECT +repeat = 0 +config = ToggleAspectRatio +end + + + +#######xmms +begin xmms + begin + prog = xmms + button = PLAY + config = PLAY + end + begin + prog = xmms + button = clear + config = PLAYLIST_CLEAR + end + begin + prog = xmms + button = load + config = PLAYLIST_ADD .xmms/xmms.m3u + end + begin + prog = xmms + button = PAUSE + config = PAUSE + end + begin + prog = xmms + button = STOP + config = STOP + end + begin + prog = xmms + button = EXIT + config = QUIT + flags = mode + end + + begin + prog = xmms + button = POWER + config = QUIT + flags = mode + end + + begin + prog = xmms + button = CH_UP + config = NEXT + end + begin + prog = xmms + button = CH_DOWN + config = PREV + end + + + +begin + prog = xmms + button = >>| + config = NEXT + end +begin + prog = xmms + button = |<< + config = PREV +end + + +begin + prog = xmms + button = << + config = FWD 10 + repeat = 2 + end + begin + prog = xmms + button = << + config = BWD 10 + repeat = 2 + end + begin + prog = xmms + button = volup + config = VOL_UP 10 + repeat = 2 + end + begin + prog = xmms + button = voldown + config = VOL_DOWN 10 + repeat = 2 + end + begin + prog = xmms + button = 1 + config = ONE + end + begin + prog = xmms + button = 2 + config = TWO + end + begin + prog = xmms + button = 3 + config = THREE + end + begin + prog = xmms + button = 4 + config = FOUR + end + begin + prog = xmms + button = 5 + config = FIVE + end + begin + prog = xmms + button = 6 + config = SIX + end + begin + prog = xmms + button = 7 + config = SEVEN + end + begin + prog = xmms + button = 8 + config = EIGHT + end + begin + prog = xmms + button = 9 + config = NINE + end + begin + prog = xmms + button = 0 + config = ZERO + end + begin + prog = xmms + button = enter + config = SETPOS + end +end xmms + +# + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/system-templates/templates/remotes/MythVantage-one/preview.jpg b/abs/core/system-templates/templates/remotes/MythVantage-one/preview.jpg new file mode 100644 index 0000000..e2af610 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/MythVantage-one/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nebula/lircd-nebula.conf b/abs/core/system-templates/templates/remotes/Nebula/lircd-nebula.conf new file mode 100755 index 0000000..611c804 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nebula/lircd-nebula.conf @@ -0,0 +1,88 @@ + +# this config file was automatically generated +# using lirc-0.8.0(userspace) on Wed Dec 20 19:35:11 2006 +# +# contributed by Peter Wood +# +# brand: Nebula Electronics +# model no. of remote control: DigiTV-PCI Remote +# devices being controlled by this remote: DVB-Card +# +# Note unlike the existing lircd.conf, this one was captured with +# the DigiTV IR receiver via the DVB card it's self. This was the +# remote which came with a Revision B PCI card (Brought Dec 2006). + +begin remote + + name Nebula_DVB + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0x8001 + gap 135906 + toggle_bit 0 + + + begin codes + TV 0x0179 + AUX 0x0186 + DVD/CD 0x0185 + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + 0 0x000B + 16:9 0x00B7 + 14:9 0x00B8 + EXIT 0x00AE + POWER 0x0074 + PICTURE 0x016F + AUDIO 0x0188 + I 0x0166 + EPG 0x016D + MENU 0x008B + UP 0x0067 + DOWN 0x006C + LEFT 0x0069 + RIGHT 0x006A + OK 0x001C + CH+ 0x0192 + CH- 0x0193 + VOLUME+ 0x0073 + VOLUME- 0x0072 + RED 0x018E + GREEN 0x018F + YELLOW 0x0190 + BLUE 0x0191 + SUBT 0x0172 + AD 0x00B9 + TEXT 0x0184 + MUTE 0x0071 + REWIND 0x00A8 + STOP 0x0080 + PLAY 0x00CF + FFORWARD 0x00D0 + CHAPTER 0x00BA + PAUSE 0x0077 + PLAYSPEED 0x80010CF + RECORD 0x00A7 + PIP 0x00BB + ZOOM- 0x004E + ZOOM+ 0x004A + CAPTURE 0x00BC + WEB 0x00BD + EMAIL 0x00D7 + PHONE 0x00A9 + PC 0x0178 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nebula/lircrc-nebula.txt b/abs/core/system-templates/templates/remotes/Nebula/lircrc-nebula.txt new file mode 100755 index 0000000..c3d70b0 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nebula/lircrc-nebula.txt @@ -0,0 +1,402 @@ +# lircrc.example.[[Nebula Digi T V]]-nativelirc +# 2005-04-02, Samuel Jacobs +# Save this file in ~/.mythtv/lircrc + +# There are so many buttons on this remote, 55 to be exact. I don't really +# know what to do with all of them, yet I'm discovering that Myth has +# functions for all of them and much, much more! All in all, 407 lines of +# yummy remote-controlled icing on the delicious cake that is MythTV. + +# Intended for use with: +# http://lirc.sourceforge.net/remotes/nebula_electronics/DigiTV +# NOTE: On my system I renamed the remote to "nebdtv". To use this file +# with the download from lirc.sf.net (which is otherwise identical to my +# copy) simply replace all instances of "nebdtv" with "Nebula_DVB". + +# NOTE 2: Not all buttons are used yet, and some key binding customisations +# will probably be made to get the most out of the extra buttons. In +# particular "Picture" and "Audio" are currently unused so I could +# possibly set jumppoints to [[Myth Photo]] and [[Myth Music]] in future. + +# NOTE 3: The buttons on the remote are listed from the top left down, row +# by row, left to right, with any unused buttons given comments where it +# would appear if it was used here. The number buttons are listed in their +# entirety before starting back at the "Picture" button. + +# NOTE 4: I just thought of another thing that could cause confusion, the +# volume buttons are commented out because I use KDELIRC for that. They +# are defined however, so just uncomment them if you want to use them. + +# Based on, and thanks to: +# lircrc.example.[[Hauppauge Grey]]-nativelirc +# 2003-09-17, Robert Kulagowski +# mailto:rkulagow@rocketmail.com + +# TODO: TV (will probably use for launching mythfrontend) +# TODO: Aux (probably a jumppoint to Live TV) +# TODO: DVD/CD (there's currently no jumppoint for generic optical media, +# so will probably use for DVD) + +begin + prog = mythtv + remote = Nebula_DVB + button = Power + config = Esc +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 1 + config = 1 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 2 + config = 2 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 3 + config = 3 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 4 + config = 4 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 5 + config = 5 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 6 + config = 6 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 7 + config = 7 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 8 + config = 8 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 9 + config = 9 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 0 + config = 0 +end + +# TODO: Picture +# TODO: Audio + +begin + prog = mythtv + remote = Nebula_DVB + button = I + config = I +end + +begin + prog = mythtv + remote = Nebula_DVB + button = 16:9 + config = W +end + +# Unused: 14:9 + +begin + prog = mythtv + remote = Nebula_DVB +# this will only work in live tv mode + button = EPG + config = S +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Exit + config = Esc +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Menu + config = M +end + +# Note the "repeat =" strings in the arrows, 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 + remote = Nebula_DVB + button = Up +# This is the "up" on the central diamond + repeat = 3 + config = Up +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Down +# This is the "down" on the central diamond + repeat = 3 + config = Down +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Left +# This is the "left" on the central diamond + repeat = 3 + config = Left +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Right +# This is the "right" on the central diamond + repeat = 3 + config = Right +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Ok +# Middle button on the diamond + config = Return +end + +# The channel buttons are mapped to Page Up and Page Down. + +begin + prog = mythtv + remote = Nebula_DVB + button = Ch+ + repeat = 3 + config = [[Pg Up]] +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Ch- + repeat = 3 + config = [[Pg Down]] +end + +# These are the volume buttons. Uncomment them if you want myth to handle +# the volume. + +begin + prog = mythtv + remote = Nebula_DVB + button = Volume+ + repeat = 3 + config = F11 +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Volume- + repeat = 3 + config = F10 +end + +# colours +begin + prog = mythtv + remote = Nebula_DVB + button = Red +# This is the Red button +# We'll use it for "Delete" + config = D +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Green +# This is the Green button +# We'll use it for "Extended Info" + config = U +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Yellow +# This is the Yellow button +# We'll use it for "Edit" + config = E +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Blue +# This is the Blue button +# We'll use it for "Toggle browse mode" + config = O +end + +begin + prog = mythtv + remote = Nebula_DVB + button = SubT + config = T +end + +begin + prog = mythtv + remote = Nebula_DVB + button = AD + config = A +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Text +# I REALLY can't think of anything to put here, so it does the same as EPG. + config = S +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Mute + config = | +end + +# Here begineth a stickered area, so I assume the labels for these buttons +# could be easily changed post-manufacture. + +begin + prog = mythtv + remote = Nebula_DVB + button = Rewind + config = < +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Stop +# Again, I couldn't think of an appropriate function, so it's ESC. + config = Esc +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Play + config = P +end + +begin + prog = mythtv + remote = Nebula_DVB + button = FForward + config = > +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Chapter +# Change focus for PiP (to change channel in the other window) + config = B +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Pause + config = P +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Playspeed + config = J +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Record + config = R +end + +begin + prog = mythtv + remote = Nebula_DVB + button = PiP +# Toggle PiP on/off + config = V +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Zoom- +# Use for backwards commercial skip + config = Q +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Zoom+ +# Use for forward commercial skip + config = Z +end + +begin + prog = mythtv + remote = Nebula_DVB + button = Capture +# Swap the PiP windows + config = N +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nebula/preview.jpg b/abs/core/system-templates/templates/remotes/Nebula/preview.jpg new file mode 100644 index 0000000..e4e979f Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nebula/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nexus/lircd-nexus.conf b/abs/core/system-templates/templates/remotes/Nexus/lircd-nexus.conf new file mode 100755 index 0000000..229db28 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nexus/lircd-nexus.conf @@ -0,0 +1,73 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre4(serial) on Sun Oct 2 00:24:32 2005 +# +# contributed by anton|ganthaler.at and juergen.wilhelm|aon.at +# members of linux user group Vorarlberg www.lugv.at +# +# for ir remote controler from Hauppauge WinTV Nexus-S +# most of the keys are supported +# +# brand: Hauppauge +# model no. of remote control: WinTV Nexus-S +# devices being controlled by this remote: +# + +begin remote + + name Hauppauge_WinTV_Nexus-S + bits 13 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 944 828 + zero 944 828 + plead 980 + gap 113932 + min_repeat 1 + toggle_bit 2 + + + begin codes + Up 0x0000000000001794 + Down 0x0000000000001795 + Left 0x0000000000001796 + Right 0x0000000000001797 + Power 0x00000000000017BD + Ok 0x00000000000017A5 + Menu 0x000000000000178D + Back 0x000000000000179F + Red 0x000000000000178B + Green 0x00000000000017AE + Yellow 0x00000000000017B8 + Blue 0x00000000000017A9 + 0 0x0000000000001780 + 1 0x0000000000001781 + 2 0x0000000000001782 + 3 0x0000000000001783 + 4 0x0000000000001784 + 5 0x0000000000001785 + 6 0x0000000000001786 + 7 0x0000000000001787 + 8 0x0000000000001788 + 9 0x0000000000001789 + Play 0x00000000000017B5 + Pause 0x00000000000017B0 + Stop 0x00000000000017B6 + Record 0x00000000000017B7 + FastFwd 0x00000000000017B4 + FastRwd 0x00000000000017B2 + Channel+ 0x00000000000017A0 + Channel- 0x00000000000017A1 + Volume+ 0x0000000000001790 + Volume- 0x0000000000001791 + Mute 0x000000000000178F + Timers 0x000000000000178A + Recordings 0x000000000000178E + Back 0x000000000000179F + Record 0x00000000000017B7 + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/Nexus/lircrc-nexus.txt b/abs/core/system-templates/templates/remotes/Nexus/lircrc-nexus.txt new file mode 100755 index 0000000..169da14 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nexus/lircrc-nexus.txt @@ -0,0 +1,459 @@ +# ~/.mythtv/lircrc +# +# MythTV native LIRC config file for +# the new grey Hauppauge remote +# + + + +begin +prog = mythtv +button = Go +repeat = 3 +config = I +end + +begin +prog = mythtv +button = Up +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = Down +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = Left +repeat = 3 +config = Left +end + +begin +prog = mythtv +button = Right +repeat = 3 +config = Right +end + +# Channel Up +begin +prog = mythtv +button = Channel+ +repeat = 3 +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Channel- +repeat = 3 +config = Down +end + +# OKSelect +begin +prog = mythtv +button = Ok +repeat = 3 +config = Space +end + +# Play +begin +prog = mythtv +button = Play +repeat = 3 +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +repeat = 3 +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = Back +repeat = 3 +config = Esc +end + +# Power Off/Exit +begin +prog = irxevent +button = Power +repeat = 3 +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +repeat = 3 +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +repeat = 3 +config = | +end + +# Fast forward +begin +prog = mythtv +button = FastFwd +repeat = 3 +config = < +end + +# Rewind +begin +prog = mythtv +button = FastRwd +repeat = 3 +config = > +end + +# Record +begin +prog = mythtv +button = Record +repeat = 3 +config = R +end + +# Delete +begin +prog = mythtv +button = Red +repeat = 3 +config = D +end + +# Decrease play speed +begin +prog = mythtv +button = Green +repeat = 3 +config = U +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Menu +repeat = 3 +config = M +end + +# Scroll up +begin +prog = mythtv +button = Volume+ +repeat = 3 +config = F11 +end + +# Scroll down +begin +prog = mythtv +button = Volume- +repeat = 3 +config = F10 +end + +# double speed watch +begin +prog = mythtv +button = Yellow +repeat = 3 +config = J +end + +# Bring up Time stretch +begin +prog = mythtv +button = Blue +repeat = 3 +config = A +end + +# Numbers 0-9 +begin +prog = mythtv +button = 0 +repeat = 3 +config = 0 +end + +begin +prog = mythtv +button = 1 +repeat = 3 +config = 1 +end + +begin +prog = mythtv +button = 2 +repeat = 3 +config = 2 +end + +begin +prog = mythtv +button = 3 +repeat = 3 +config = 3 +end + +begin +prog = mythtv +button = 4 +repeat = 3 +config = 4 +end + +begin +prog = mythtv +button = 5 +repeat = 3 +config = 5 +end + +begin +prog = mythtv +button = 6 +repeat = 3 +config = 6 +end + +begin +prog = mythtv +button = 7 +repeat = 3 +config = 7 +end + +begin +prog = mythtv +button = 8 +repeat = 3 +config = 8 +end + +begin +prog = mythtv +button = 9 +repeat = 3 +config = 9 +end + + + +###### MPlayer lirc setup +# Show OSD +begin +prog = mplayer +button = Menu +repeat = 3 +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +repeat = 3 +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = Play +repeat = 3 +config = seek +1 +end + +# Stop playback and exit +begin +prog = mplayer +button = Stop +repeat = 3 +config = quit +end + +# Mute +begin +prog = mplayer +button = Mute +repeat = 3 +config = mute +end + +begin +prog = mplayer +button = Left +repeat = 3 +config = seek -10 +end + +# Seek back 10 seconds +begin +prog = mplayer +button = FastRwd +repeat = 3 +config = seek -10 +end + +begin +prog = mplayer +button = Right +repeat = 3 +config = seek +30 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FastFwd +repeat = 3 +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Back +repeat = 3 +config = quit +end + + + + +###### Xine lirc setup +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 +repeat = 3 +config = Quit +end + +begin +prog = xine +button = Pause +repeat = 3 +config = Pause +end + +begin +prog = xine +button = Up +repeat = 3 +config = EventUp +end + +begin +prog = xine +button = Down +repeat = 3 +config = EventDown +end + +begin +prog = xine +button = Left +repeat = 3 +config = EventLeft +end + +begin +prog = xine +button = Right +repeat = 3 +config = EventRight +end + +begin +prog = xine +button = Ok +repeat = 3 +config = EventSelect +end + +begin +prog = xine +button = FastFwd +repeat = 3 +config = SpeedFaster +end + +begin +prog = xine +button = FastRwd +repeat = 3 +config = SpeedSlower +end + +begin +prog = xine +button = Volume+ +repeat = 3 +config = Volume+ +end + +begin +prog = xine +button = Volume- +repeat = 3 +config = Volume- +end + +begin +prog = xine +button = Mute +repeat = 3 +config = Mute +end + +begin +prog = xine +button = Menu +repeat = 3 +config = RootMenu +end + + diff --git a/abs/core/system-templates/templates/remotes/Nexus/preview.jpg b/abs/core/system-templates/templates/remotes/Nexus/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nexus/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nova_500/lircd-nova500.conf b/abs/core/system-templates/templates/remotes/Nova_500/lircd-nova500.conf new file mode 100755 index 0000000..c66c9e5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nova_500/lircd-nova500.conf @@ -0,0 +1,69 @@ +# +# brand: Hauppauge NOVA-T-500 +# model no. of remote control: Hauppage Nova-T-500 Snowboard Shape Silver over Black +# + +begin remote + + name NOVA-T500 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0x1 + gap 199999 + toggle_bit 0 + + + begin codes + Go 0x0162 + Power 0x0074 + TV 0x0179 + Videos 0x0189 + Music 0x0188 + Pictures 0x00E2 + Guide 0x016D + Radio 0x0181 + ArrowUp 0x0067 + ArrowLeft 0x0069 + OK 0x0160 + ArrowRight 0x006A + ArrowDown 0x006C + BackExit 0x009E + Menu 0x008B + VolumeUp 0x0073 + VolumeDown 0x0072 + PrevCh 0x016B + Mute 0x0071 + ChannelUp 0x0192 + ChannelDown 0x0193 + Record 0x00A7 + Rewind 0x00A8 + SkipBack 0x0195 + Play 0x00CF + Pause 0x0077 + Stop 0x0080 + Fwdwind 0x00D0 + SkipFwd 0x0197 + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + Star 0x0037 + 0 0x000B + # 0x0029 + Red 0x018E + Green 0x018F + Yellow 0x0190 + Blue 0x0191 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nova_500/lircrc-nova500.txt b/abs/core/system-templates/templates/remotes/Nova_500/lircrc-nova500.txt new file mode 100755 index 0000000..2d74c3d --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nova_500/lircrc-nova500.txt @@ -0,0 +1,559 @@ +# /etc/lircrc +# ln ~mythtv/.mythtv/lircrc +# +# MythTV native LIRC config file for +# Hauppage Nova-T-500 PCI Dual Tuners DVB-T +# Snowboard shape remote +# Silver on top Black underneath +# 45 buttons +# +# Originally +# By Jarod Wilson, 2003/12/21 +# Amalgamated from Jeff Campbell's .lircrc + + + +################## MythTV Control ###################### +### http://www.mythtv.org/wiki/index.php/Keybindings ### + +# Remote Button +## MythTV function + + +# Go +## Go to home page +begin +prog = mythtv +button = Go +config = ALT+H +end + +# Power +## Turns monitor in Standby +#begin +#prog = irexec +#button = Power +#config = sudo vbetool dpms on ; sudo vbetool dpms off +#end + +# TV +## Go to Watch TV +begin +prog = mythtv +button = TV +config = ALT+T +end + +# Videos +## Go to MythVideo +begin +prog = mythtv +button = Videos +config = ALT+V +end + +# Music +## Go to MythMusic +begin +prog = mythtv +button = Music +config = ALT+M +end + +# Pictures +## Go to MythGallery +begin +prog = mythtv +button = Pictures +config = ALT+P +end + +# Guide +## display EPG +begin +prog = mythtv +button = Guide +config = s +end + +# Radio + + + +# ArrowUp +## Up +begin +prog = mythtv +button = ArrowUp +config = Up +end + +# ArrowLeft +## Left +begin +prog = mythtv +button = ArrowLeft +config = Left +end + +# OK +## Select/enter/resolve +begin +prog = mythtv +button = OK +config = Space +end + +# ArrowRight +## Right +begin +prog = mythtv +button = ArrowRight +config = Right +end + +# ArrowDown +## Down +begin +prog = mythtv +button = ArrowDown +config = Down +end + +# BackExit +## Exit/go back/cancel +begin +prog = mythtv +button = BackExit +config = Esc +end + +# Menu +## Menu +begin +prog = mythtv +button = Menu +config = m +end + +# VolumeUp +## Volume Up +begin +prog = mythtv +button = VolumeUp +config = F11 +end + +# VolumeDown +## Volume down +begin +prog = mythtv +button = VolumeDown +config = F10 +end + +# PrevCh +## Change tuner card input +begin +prog = mythtv +button = PrevCh +config = c +end + +# Mute +## Mute +begin +prog = mythtv +button = Mute +config = | +end + +# ChannelUp +begin +prog = mythtv +button = ChannelUp +config = Up +end + +# ChannelDown +begin +prog = mythtv +button = ChannelDown +config = Down +end + +# Record +begin +prog = mythtv +button = Record +config = R +end + +# Rewind +begin +prog = mythtv +button = Rewind +config = Left +end + +# SkipBack +begin +prog = mythtv +button = SkipBack +config = PgUp +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Pause +begin +prog = mythtv +button = Pause +config = P +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Fwdwind +begin +prog = mythtv +button = Fwdwind +config = Right +end + +# SkipFwd +begin +prog = mythtv +button = SkipFwd +config = PgDown +end + +# 1 +begin +prog = mythtv +button = 1 +config = 1 +end + +# 2 +begin +prog = mythtv +button = 2 +config = 2 +end + +# 3 +begin +prog = mythtv +button = 3 +config = 3 +end + +# 4 +begin +prog = mythtv +button = 4 +config = 4 +end + +# 5 +begin +prog = mythtv +button = 5 +config = 5 +end + +# 6 +begin +prog = mythtv +button = 6 +config = 6 +end + +# 7 +begin +prog = mythtv +button = 7 +config = 7 +end + +# 8 +begin +prog = mythtv +button = 8 +config = 8 +end + +# 9 +begin +prog = mythtv +button = 9 +config = 9 +end + +# Star +## Info +begin +prog = mythtv +button = Star +config = i +end + +# 0 +begin +prog = mythtv +button = 0 +config = 0 +end + +# # +## Toggle recording of current program (cycles through types) +begin +prog = mythtv +button = # +config = r +end + +# Red +## Picture zoom +begin +prog = mythtv +button = Red +config = W +end + +# Green +# OSD navigation through channels/programs +begin +prog = mythtv +button = Green +config = O +end + +# Yellow +begin +prog = mythtv +button = Yellow +config = Q +end + +# Blue +begin +prog = mythtv +button = Blue +config = Z +end + + + +##### MPlayer lirc setup +# Show OSD +begin +prog = mplayer +button = Menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = Play +config = seek +1 +end + +# Stop playback and exit +begin +prog = mplayer +button = Stop +config = quit +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +begin +prog = mplayer +button = ArrowLeft +config = seek -10 +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Rewind +config = seek -10 +end + +begin +prog = mplayer +button = ArrowRight +config = seek +30 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = Fwdwind +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = BackExit +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = SkipFwd +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = SkipBack +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = Star +config = vo_fullscreen +end + + + +###### Xine lirc setup +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = BackExit +config = Quit +end + +begin +prog = xine +button = Pause +config = Pause +end + +begin +prog = xine +button = ArrowUp +config = EventUp +end + +begin +prog = xine +button = ArrowDown +config = EventDown +end + +begin +prog = xine +button = ArrowLeft +config = EventLeft +end + +begin +prog = xine +button = ArrowRight +config = EventRight +end + +begin +prog = xine +button = OK +config = EventSelect +end + +begin +prog = xine +button = Fwdwind +config = SpeedFaster +end + +begin +prog = xine +button = Rewind +config = SpeedSlower +end + +begin +prog = xine +button = VolumeUp +config = Volume+ +end + +begin +prog = xine +button = VolumeDown +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = Menu +config = RootMenu +end + +begin +prog = xine +button = SkipFwd +config = EventNext +end + +begin +prog = xine +button = SkipBack +config = EventPrior +end + +begin +prog = xine +button = Go +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nova_500/preview.jpg b/abs/core/system-templates/templates/remotes/Nova_500/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nova_500/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nova_T/lircd-novat.conf b/abs/core/system-templates/templates/remotes/Nova_T/lircd-novat.conf new file mode 100755 index 0000000..27a575d --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nova_T/lircd-novat.conf @@ -0,0 +1,60 @@ +begin remote + name nova-t + bits 16 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 135988 + pre_data_bits 16 + pre_data 0x8001 + + begin codes + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + 0 0x000B + * 0x0184 + # 0x0172 + red 0x018E + green 0x018F + yellow 0x0190 + blue 0x0191 + power 0x0074 + go 0x0161 + tv 0x0179 + videos 0x0189 + music 0x0188 + pictures 0x016F + guide 0x016D + radio 0x0181 + up 0x0067 + left 0x0069 + right 0x006A + down 0x006C + ok 0x001C + back 0x00A8 + menu 0x008B + prev-ch 0x019C + mute 0x0071 + volup 0x0073 + voldown 0x0072 + chanup 0x0192 + chandown 0x0193 + rec 0x00A7 + stop 0x0080 + forward 0x00D0 + skipback 0x00A5 + skipforward 0x00A3 + play 0x00CF + pause 0x0077 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nova_T/lircrc-novat.txt b/abs/core/system-templates/templates/remotes/Nova_T/lircrc-novat.txt new file mode 100755 index 0000000..f075729 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nova_T/lircrc-novat.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = chanup +config = Up +end + +# Channel Down +begin +prog = mythtv +button = chandown +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = volup +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = voldown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ok +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = forward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = back +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = skipforward +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = skipback +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = red +config = D +end + +# OSD browse +begin +prog = mythtv +button = menu +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = guide +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = yellow +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = blue +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = prev-ch +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = guide +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = back +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = forward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = skipforward +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = skipback +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = ok +config = EventSelect +end + +begin +prog = xine +button = menu +config = Menu +end + +begin +prog = xine +button = forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = back +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = volup +config = Volume+ +end + +begin +prog = xine +button = voldown +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = skipforward +config = EventNext +end + +begin +prog = xine +button = skipback +config = EventPrior +end + +begin +prog = xine +button = guide +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nova_T/preview.jpg b/abs/core/system-templates/templates/remotes/Nova_T/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nova_T/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nova_T_USB2/lircd-novatusb2.conf b/abs/core/system-templates/templates/remotes/Nova_T_USB2/lircd-novatusb2.conf new file mode 100755 index 0000000..d2bbee6 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nova_T_USB2/lircd-novatusb2.conf @@ -0,0 +1,77 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.1-CVS(dev/input) on Sun Oct 8 22:51:46 2006 +# +# contributed by JonS +# +# brand: irrecord.nova-T-usb +# model no. of remote control: Hauppage Nova-T USB Snowboard Shape Silver over Black +# devices being controlled by this remote: MythTV +# + +begin remote + + name nova-T-usb + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0x1 + gap 199999 + toggle_bit 0 + + + begin codes + Go 0x0162 + Power 0x0074 + TV 0x0179 + Videos 0x0189 + Music 0x0188 + Pictures 0x00E2 + Guide 0x016D + Radio 0x0181 + ArrowUp 0x0067 + ArrowLeft 0x0069 + OK 0x0160 + ArrowRight 0x006A + ArrowDown 0x006C + BackExit 0x009E + Menu 0x008B + VolumeUp 0x0073 + VolumeDown 0x0072 + PrevCh 0x016B + Mute 0x0071 + ChannelUp 0x0192 + ChannelDown 0x0193 + Record 0x00A7 + Rewind 0x00A8 + SkipBack 0x0195 + Play 0x00CF + Pause 0x0077 + Stop 0x0080 + Fwdwind 0x00D0 + SkipFwd 0x0197 + 1 0x0002 + 2 0x0003 + 3 0x0004 + 4 0x0005 + 5 0x0006 + 6 0x0007 + 7 0x0008 + 8 0x0009 + 9 0x000A + * 0x0037 + 0 0x000B + # 0x0029 + Red 0x018E + Green 0x018F + Yellow 0x0190 + Blue 0x0191 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nova_T_USB2/lircrc-novatusb2.txt b/abs/core/system-templates/templates/remotes/Nova_T_USB2/lircrc-novatusb2.txt new file mode 100755 index 0000000..fad1483 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nova_T_USB2/lircrc-novatusb2.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ChannelUp +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ChannelDown +config = Down +end + +# General Left +begin +prog = mythtv +button = ArrowLeft +config = Left +end + +# General Right +begin +prog = mythtv +button = ArrowRight +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = ArrowUp +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = ArrowDown +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VolumeUp +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VolumeDown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = OK +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = BackExit +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FwdWind +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = Rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = SkipFwd +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = SkipBack +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +config = R +end + +# Delete +begin +prog = mythtv +button = Red +config = D +end + +# OSD browse +begin +prog = mythtv +button = Green +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Guide +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = Yellow +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = Blue +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = PrevCh +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Guide +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Rewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FwdWind +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = SkipFwd +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = SkipBack +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = BackExit +config = Quit +end + +begin +prog = xine +button = Pause +config = Pause +end + +begin +prog = xine +button = ArrowUp +config = EventUp +end + +begin +prog = xine +button = ArrowDown +config = EventDown +end + +begin +prog = xine +button = ArrowLeft +config = EventLeft +end + +begin +prog = xine +button = ArrowRight +config = EventRight +end + +begin +prog = xine +button = OK +config = EventSelect +end + +begin +prog = xine +button = Guide +config = Menu +end + +begin +prog = xine +button = FwdWind +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = Rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VolumeUp +config = Volume+ +end + +begin +prog = xine +button = VolumeDown +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = Stop +config = RootMenu +end + +begin +prog = xine +button = SkipFwd +config = EventNext +end + +begin +prog = xine +button = SkipBack +config = EventPrior +end + +begin +prog = xine +button = Menu +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nova_T_USB2/preview.jpg b/abs/core/system-templates/templates/remotes/Nova_T_USB2/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nova_T_USB2/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nvidia/lircd-nvidia.conf b/abs/core/system-templates/templates/remotes/Nvidia/lircd-nvidia.conf new file mode 100755 index 0000000..133ac00 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nvidia/lircd-nvidia.conf @@ -0,0 +1,62 @@ +begin remote + name nvidia + bits 16 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 227970 + pre_data_bits 8 + pre_data 0x14 + + begin codes + CANCIL 0xDF0A + RIGHTMOUSE 0x517C + LEFTMOUSE 0x4D78 + PAUSE 0x4D78 + STOP 0xFD28 + REC 0xFC27 + ADVANCE 0xFB26 + PLAY 0xFA25 + REPLAY 0xF924 + FFORWARD 0xF823 + REWIND 0xF621 + OK 0xF31E + SLOW 0xF520 + LIVETV 0xF11C + LEFT 0xF21D + RIGHT 0xF41F + DOWN 0xF722 + UP 0xEF1A + SETUP 0xF01B + DVDMENU 0xEE19 + SNAPSHOT 0xED18 + CC 0xEB16 + 0 0xEC17 + 9 0xEA15 + 8 0xE914 + 7 0xE813 + 6 0xE712 + 5 0xE611 + 4 0xE510 + 3 0xE40F + 2 0xE30E + 1 0xE20D + ZOOM 0xFF2A + INPUT 0x002B + CHAN- 0xE10C + CHAN+ 0xE00B + VOL- 0xDD08 + VOL+ 0xDE09 + WEB 0xDC07 + MUSIC 0xDB06 + PHOTO 0xDA05 + DVDVCD 0xD904 + DVR 0xD803 + CHSURF 0xD702 + CHGUIDE 0xD601 + MUTE 0xD500 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nvidia/lircrc-nvidia.txt b/abs/core/system-templates/templates/remotes/Nvidia/lircrc-nvidia.txt new file mode 100755 index 0000000..53c133b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nvidia/lircrc-nvidia.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CHAN+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CHAN- +config = Down +end + +# General Left +begin +prog = mythtv +button = LEFT +config = Left +end + +# General Right +begin +prog = mythtv +button = RIGHT +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = UP +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = DOWN +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = OK +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = CANCIL +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = PAUSE +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FFORWARD +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = REWIND +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = ADVANCE +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = REPLAY +config = PgUp +end + +# Record +begin +prog = mythtv +button = REC +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = CHGUIDE +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = CHSURF +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = INPUT +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = SETUP +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = CHGUIDE +config = osd +end + +# Pause playback +begin +prog = mplayer +button = PAUSE +config = pause +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = REWIND +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FFORWARD +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = ADVANCE +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = REPLAY +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = ZOOM +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = PAUSE +config = Pause +end + +begin +prog = xine +button = UP +config = EventUp +end + +begin +prog = xine +button = DOWN +config = EventDown +end + +begin +prog = xine +button = LEFT +config = EventLeft +end + +begin +prog = xine +button = RIGHT +config = EventRight +end + +begin +prog = xine +button = OK +config = EventSelect +end + +begin +prog = xine +button = CHGUIDE +config = Menu +end + +begin +prog = xine +button = FFORWARD +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = REWIND +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL+ +config = Volume+ +end + +begin +prog = xine +button = VOL- +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = ADVANCE +config = EventNext +end + +begin +prog = xine +button = REPLAY +config = EventPrior +end + +begin +prog = xine +button = CHSURF +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nvidia/preview.jpg b/abs/core/system-templates/templates/remotes/Nvidia/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nvidia/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Nvidia_X10/lircd-nvidiax10.conf b/abs/core/system-templates/templates/remotes/Nvidia_X10/lircd-nvidiax10.conf new file mode 100755 index 0000000..1c06639 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nvidia_X10/lircd-nvidiax10.conf @@ -0,0 +1,71 @@ +begin remote + name nvidiax10 + bits 40 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 235987 + + begin codes + mute 0x14D5000000 + playlist 0x14D6010000 + chSurf 0x14D7020000 + dvr 0x14D8030000 + dvd 0x14D9040000 + photo 0x14DA050000 + music 0x14DB060000 + web 0x14DC070000 + L 0x144D780000 + R 0x14517C0000 + ESC 0x14DF0A0000 + VOL+ 0x14DE090000 + VOL- 0x14DD080000 + CHAN- 0x14E10C0000 + CHAN+ 0x14E00B0000 + angle 0x14002B0000 + zoom 0x14FF2A0000 + 0 0x14EC170000 + 1 0x14E20D0000 + 2 0x14E30E0000 + 3 0x14E40F0000 + 4 0x14E5100000 + 5 0x14E6110000 + 6 0x14E7120000 + 7 0x14E8130000 + 8 0x14E9140000 + 9 0x14EA150000 + TXT 0x14EB160000 + SnapShot 0x14ED180000 + DVDMenu 0x14EE190000 + setup 0x14F01B0000 + audio 0x14F11C0000 + slow 0x14F5200000 + up 0x14EF1A0000 + down 0x14F7220000 + left 0x14F21D0000 + right 0x14F41F0000 + ok 0x14F31E0000 + back 0x14F6210000 + forward 0x14F8230000 + fRewind 0x14F9240000 + play 0x14FA250000 + ffw 0x14FB260000 + rec 0x14FC270000 + stop 0x14FD280000 + pause 0x14FE290000 + + mouse_n 0x0000001447720000 + mouse_ne 0x000000144A750000 + mouse_e 0x0000001446710000 + mouse_se 0x000000144B760000 + mouse_s 0x0000001448730000 + mouse_sw 0x000000144C770000 + mouse_w 0x0000001445700000 + mouse_nw 0x0000001449740000 + mouse_left 0x000000144E790000 + mouse_right 0x00000014527D0000 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nvidia_X10/lircrc-nvidiax10.txt b/abs/core/system-templates/templates/remotes/Nvidia_X10/lircrc-nvidiax10.txt new file mode 100755 index 0000000..0774c10 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Nvidia_X10/lircrc-nvidiax10.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CHAN+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CHAN- +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ok +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = ESC +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = ffw +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = fRewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = forward +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = back +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = chSurf +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = TXT +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = chSurf +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = fRewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = ffw +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = forward +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = back +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = zoom +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = ESC +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = ok +config = EventSelect +end + +begin +prog = xine +button = chSurf +config = Menu +end + +begin +prog = xine +button = ffw +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = fRewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL+ +config = Volume+ +end + +begin +prog = xine +button = VOL- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = forward +config = EventNext +end + +begin +prog = xine +button = back +config = EventPrior +end + +begin +prog = xine +button = +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Nvidia_X10/preview.jpg b/abs/core/system-templates/templates/remotes/Nvidia_X10/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Nvidia_X10/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/One4All/lircd-one4all.conf b/abs/core/system-templates/templates/remotes/One4All/lircd-one4all.conf new file mode 100755 index 0000000..00060fd --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All/lircd-one4all.conf @@ -0,0 +1,111 @@ +#------------------------------------------------------------------------------ +# contributed by Claas Langbehn (claas@bigfoot.com) 01-May-2000 +#------------------------------------------------------------------------------ +# +# filename: RC-5 +# encoding: shift encoded, RC-5 +# brand: Philips (and others) +# model: all +# supported devices: all +# +#------------------------------------------------------------------------------ + +begin remote + + name one4all + bits 11 + flags RC5|CONST_LENGTH + eps 20 + aeps 0 + + header 0 0 + one 889 889 + zero 889 889 + plead 889 + ptrail 0 + foot 0 0 + repeat 0 0 + pre_data_bits 2 + pre_data 0x02 + post_data_bits 0 + post_data 0x0 + pre 0 0 + post 0 0 + gap 113792 + toggle_bit 2 + frequency 36000 + duty_cycle 50 + + begin codes + 0 0x0000000000000140 + 1 0x0000000000000141 + 2 0x0000000000000142 + 3 0x0000000000000143 + 4 0x0000000000000144 + 5 0x0000000000000145 + 6 0x0000000000000146 + 7 0x0000000000000147 + 8 0x0000000000000148 + 9 0x0000000000000149 + GUIDE 0x000000000000014a + SELECT 0x000000000000014b + POWER 0x000000000000014c + Mute 0x000000000000014d + Move 0x000000000000014e + VOL+ 0x0000000000000150 + VOL- 0x0000000000000151 + PREVCH 0x0000000000000152 + NEXTCH 0x0000000000000153 + SLOMO 0x0000000000000154 + ANGLE 0x0000000000000155 + MENU 0x000000000000015d + SUBT 0x000000000000015e + CH+ 0x0000000000000160 + CH- 0x0000000000000161 + PIP 0x0000000000000162 + Swap 0x0000000000000163 + PAUSE 0x0000000000000169 + PVRMENU 0x000000000000016e + EXIT 0x0000000000000171 + REW 0x0000000000000172 + REPLAY 0x0000000000000173 + FFW 0x0000000000000174 + PLAY 0x0000000000000175 + STOP 0x0000000000000176 + REC 0x0000000000000177 + SKIP 0x0000000000000178 + Prev 0x000000000000017b + INFO 0x000000000000017c + TV/VID 0x000000000000017e + Audio 0x000000000000017f + THDN 0x0000000000000268 + THUP 0x0000000000000269 + end codes + +end remote + +begin remote + + name PHILIPS_RC-5_ALT + bits 13 + flags RC5|CONST_LENGTH + eps 20 + aeps 0 + + one 889 889 + zero 889 889 + plead 889 + gap 113792 + min_repeat 1 + toggle_bit 2 + + frequency 36000 + duty_cycle 50 + + begin codes + LEFT 0x0000000000000155 + RIGHT 0x0000000000000156 + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/One4All/lircrc-one4all.txt b/abs/core/system-templates/templates/remotes/One4All/lircrc-one4all.txt new file mode 100755 index 0000000..0b67174 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All/lircrc-one4all.txt @@ -0,0 +1,730 @@ +# lircrc.URC-6131/RC-5 (Hauppauge PVR-250) +# 2004-01-25, Joe Votour +# mailto:vulturej@vulturesnest.net +# Save this file in ~/.mythtv/lircrc, and make a symlink with ~/.lircrc +# TODO: Test/configure the mplayer buttons +# Finish the rest of the remote buttons for MythTV + +# Power button/quit +#begin +# prog = mythtv +# button = POWER +# config = Esc +#end + +# Change TV card input +begin + prog = mythtv + button = TV/VID + config = C +end + +# Toggle Picture-In-Picture +begin + prog = mythtv + button = PIP + config = V +end + +# Swap the PiP windows +begin + prog = mythtv + button = Swap + config = N +end + +# Number keys +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 = 0 + config = 0 +end + +# Exit button (returning to menu) +begin + prog = mythtv + button = EXIT + config = Esc +end + +# Menu button (TV menu) +begin + prog = mythtv + button = MENU + config = M +end + +# Guide button (EPG) +begin + prog = mythtv + button = GUIDE + config = S +end + +# Delete (i.e. View recordings screen) +begin + prog = mythtv + button = POWER + config = D +end + +# View program info (OSD) +begin + prog = mythtv + button = INFO + 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. + +# Volume Down +begin + prog = mythtv + button = VOL- + repeat = 3 + config = F10 +end + +# Volume Up +begin + prog = mythtv + button = VOL+ + repeat = 3 + config = F11 +end + +# Channel Up +begin + prog = mythtv + button = THUP + repeat = 3 + config = Up +end + +# Channel Down +begin + prog = mythtv + button = THDN + repeat = 3 + config = Down +end + +# Navigational arrows +begin + prog = mythtv + button = LEFT + repeat = 3 + config = Left +end + +begin + prog = mythtv + button = RIGHT + repeat = 3 + config = Right +end + +begin + prog = mythtv + button = SELECT + config = Return +end + +# Mute +begin + prog = mythtv + button = Mute + config = F9 +end + +# Browse mode +#begin +# prog = mythtv +# button = DISPLAY +# config = O +#end + +# Channel history +begin + prog = mythtv + button = Prev + config = H +end + +# Rewind +begin + prog = mythtv + button = REW + config = Left +end + +# Play +begin + prog = mythtv + button = PLAY + config = P +end + +# Fast-forward +begin + prog = mythtv + button = FFW + config = Right +end + +# Next chapter (page down for EPG) +begin + prog = mythtv + button = NEXTCH + config = PgDown +end + +# Previous chapter (page up for EPG) +begin + prog = mythtv + button = PREVCH + config = PgUp +end + +# Record +begin + prog = mythtv + button = REC + config = R +end + +# Teletext/Closed Captioning +# Audio button doubles as CC +begin + prog = mythtv + button = Audio + config = T +end + +# Pause +begin + prog = mythtv + button = PAUSE + config = P +end + +# Backwards commercial skip +begin + prog = mythtv + button = REPLAY + config = Q +end + +# Forward commercial skip +begin + prog = mythtv + button = SKIP + config = Z +end + +# +# mplayer keys (Untested) +# +begin + prog = mplayer + button = EXIT + config = quit +end + +begin + prog = mplayer + button = MUTE + config = mute +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 = PLAY + config = pause +end + +begin + prog = mplayer + button = PAUSE + config = pause +end + +begin + prog = mplayer + button = STOP + config = quit +end + +begin + prog = mplayer + button = DISPLAY + config = osd +end + +begin + prog = mplayer + button = FFW + config = skip 1 +end + +begin + prog = mplayer + button = REW + config = skip -1 +end + +begin + prog = mplayer + button = REPLAY + config = skip -60 +end + +begin + prog = mplayer + button = SKIP + config = skip 60 +end + +## +# xine key bindings. +# Automatically generated by xine-ui version 0.9.23. +# To run xine: +# MythVideo: xine -D -pfh %s +# MythDVD: xine -D -pfhq --auto-scan dvd (for DVD) +# xine -D -pfhq --auto-scan vcdo (for VCD) +## + +# start playback +begin + button = PLAY + prog = xine + repeat = 3 + config = Play +end + +# playback pause toggle +begin + button = PAUSE + prog = xine + repeat = 3 + config = Pause +end + +# stop playback +begin + button = STOP + prog = xine + repeat = 3 + config = Stop +end + +# set position to -10 minutes in current stream +begin + button = REPLAY + prog = xine + repeat = 3 + config = SeekRelative-600 +end + +# set position to +10 minutes in current stream +begin + button = SKIP + prog = xine + repeat = 3 + config = SeekRelative+600 +end + +# set position to -30 seconds in current stream +begin + button = REW + prog = xine + repeat = 3 + config = SeekRelative-30 +end + +# set position to +30 seconds in current stream +begin + button = FFW + prog = xine + repeat = 3 + config = SeekRelative+30 +end + +# decrement playback speed +begin + button = SLOMO + prog = xine + repeat = 3 + config = SpeedSlower +end + +# reset playback speed +begin + button = PLAY + prog = xine + repeat = 3 + config = SpeedReset +end + +# increment audio volume +begin + button = VOL+ + prog = xine + repeat = 2 + config = Volume+ +end + +# decrement audio volume +begin + button = VOL- + prog = xine + repeat = 2 + config = Volume- +end + +# increment amplification level +#begin +# remote = xxxxx +# button = xxxxx +# prog = xine +# repeat = 3 +# config = Amp+ +#end + +# decrement amplification level +#begin +# remote = xxxxx +# button = xxxxx +# prog = xine +# repeat = 3 +# config = Amp- +#end + +# reset amplification to default value +#begin +# remote = xxxxx +# button = xxxxx +# prog = xine +# repeat = 3 +# config = ResetAmp +#end + +# audio muting toggle +begin + button = Mute + prog = xine + repeat = 3 + config = Mute +end + +# select next audio channel +begin + button = Audio + prog = xine + repeat = 3 + config = AudioChannelNext +end + +# select next sub picture (subtitle) channel +begin + button = SUBT + prog = xine + repeat = 3 + config = SpuNext +end + +# jump to media Menu +#begin +# button = MENU +# prog = xine +# repeat = 3 +# config = Menu +#end + +# jump to Title Menu +#begin +# remote = xxxxx +# button = xxxxx +# prog = xine +# repeat = 3 +# config = TitleMenu +#end + +# jump to Root Menu +begin + button = MENU + prog = xine + repeat = 3 + config = RootMenu +end + +# jump to Subpicture Menu +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = SubpictureMenu +end + +# jump to Audio Menu +begin + button = Audio + prog = xine + repeat = 3 + config = AudioMenu +end + +# jump to Angle Menu +begin + button = Angle + prog = xine + repeat = 3 + config = AngleMenu +end + +# jump to Part Menu +#begin +# remote = xxxxx +# button = xxxxx +# prog = xine +# repeat = 3 +# config = PartMenu +#end + +# menu navigate up +begin + button = CH+ + prog = xine + repeat = 3 + config = EventUp +end + +# menu navigate down +begin + button = CH- + prog = xine + repeat = 3 + config = EventDown +end + +# menu navigate left +begin + button = LEFT + prog = xine + repeat = 3 + config = EventLeft +end + +# menu navigate right +begin + button = RIGHT + prog = xine + repeat = 3 + config = EventRight +end + +# menu select +begin + button = SELECT + prog = xine + repeat = 3 + config = EventSelect +end + +# jump to next chapter +begin + button = NEXTCH + prog = xine + repeat = 3 + config = EventNext +end + +# jump to previous chapter +begin + button = PREVCH + prog = xine + repeat = 3 + config = EventPrior +end + +# select next angle +begin + button = ANGLE + prog = xine + repeat = 3 + config = EventAngleNext +end + +# display stream information using OSD +begin + button = INFO + prog = xine + repeat = 3 + config = OSDStreamInfos +end + +# enter the number 0 +begin + button = 0 + prog = xine + repeat = 3 + config = Number0 +end + +# enter the number 1 +begin + button = 1 + prog = xine + repeat = 3 + config = Number1 +end + +# enter the number 2 +begin + button = 2 + prog = xine + repeat = 3 + config = Number2 +end + +# enter the number 3 +begin + button = 3 + prog = xine + repeat = 3 + config = Number3 +end + +# enter the number 4 +begin + button = 4 + prog = xine + repeat = 3 + config = Number4 +end + +# enter the number 5 +begin + button = 5 + prog = xine + repeat = 3 + config = Number5 +end + +# enter the number 6 +begin + button = 6 + prog = xine + repeat = 3 + config = Number6 +end + +# enter the number 7 +begin + button = 7 + prog = xine + repeat = 3 + config = Number7 +end + +# enter the number 8 +begin + button = 8 + prog = xine + repeat = 3 + config = Number8 +end + +# enter the number 9 +begin + button = 9 + prog = xine + repeat = 3 + config = Number9 +end + +# quit the program +begin + button = POWER + prog = xine + repeat = 3 + config = Quit +end + +## +# End of xine key bindings. +## + diff --git a/abs/core/system-templates/templates/remotes/One4All/preview.jpg b/abs/core/system-templates/templates/remotes/One4All/preview.jpg new file mode 100644 index 0000000..770d54b Binary files /dev/null and b/abs/core/system-templates/templates/remotes/One4All/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/One4All_6131/lircd-one4all6131.conf b/abs/core/system-templates/templates/remotes/One4All_6131/lircd-one4all6131.conf new file mode 100755 index 0000000..9562f79 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All_6131/lircd-one4all6131.conf @@ -0,0 +1,31 @@ +begin remote + name OneForAll_6131 + bits 20 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + header 2449 542 + one 1259 527 + zero 675 527 + gap 45430 + + begin codes + Left 0xDEB92 + Right 0x3EB92 + Up 0x9EB92 + Down 0x5EB92 + Select 0xD0B92 + Exit 0x70B92 + Info 0x2AB92 + Guide 0x58B92 + Menu 0xD8B92 + Play 0x4CB92 + Pause 0x9CB92 + Stop 0x1CB92 + JumpBack 0x6CB92 + JumpAhead 0xECB92 + JumpToStart 0x0CB92 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/One4All_6131/lircrc-one4all6131.txt b/abs/core/system-templates/templates/remotes/One4All_6131/lircrc-one4all6131.txt new file mode 100755 index 0000000..728c046 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All_6131/lircrc-one4all6131.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = Up +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Down +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = Up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = Down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = Right +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = Left +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = Select +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = Exit +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +config = P +end + +# Mute +begin +prog = mythtv +button = +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = JumpAhead +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = JumpBack +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = Menu +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Guide +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = Info +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +config = pause +end + +# Mute +begin +prog = mplayer +button = +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = JumpBack +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = JumpAhead +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = Exit +config = Quit +end + +begin +prog = xine +button = Pause +config = Pause +end + +begin +prog = xine +button = Up +config = EventUp +end + +begin +prog = xine +button = Down +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = Select +config = EventSelect +end + +begin +prog = xine +button = Menu +config = Menu +end + +begin +prog = xine +button = JumpAhead +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = JumpBack +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = Right +config = Volume+ +end + +begin +prog = xine +button = Left +config = Volume- +end + +begin +prog = xine +button = +config = Mute +end + +begin +prog = xine +button = Stop +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = Info +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/One4All_6131/preview.jpg b/abs/core/system-templates/templates/remotes/One4All_6131/preview.jpg new file mode 100644 index 0000000..cc0751e Binary files /dev/null and b/abs/core/system-templates/templates/remotes/One4All_6131/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/One4All_7544/lircd-one4all7544.conf b/abs/core/system-templates/templates/remotes/One4All_7544/lircd-one4all7544.conf new file mode 100755 index 0000000..c1787ef --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All_7544/lircd-one4all7544.conf @@ -0,0 +1,49 @@ +begin remote + name one4all_7544 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + header 2399 615 + one 1175 620 + zero 572 620 + gap 45451 + + begin codes + 1 0x01A + 2 0x81A + 3 0x41A + 4 0xC1A + 5 0x21A + 6 0xA1A + 7 0x61A + 8 0xE1A + 9 0x11A + 10 0x51A + 0 0x91A + av 0x55A + c+ 0x09A + c- 0x89A + exit 0x55A + ok 0x8BA + up 0x43A + down 0xC3A + left 0x47A + right 0x87A + v+ 0x49A + v- 0xC9A + mute 0xADA + rr 0xD9A + play 0x59A + pause 0x99A + ff 0x39A + red 0x1BA + green 0x19A + yellow 0xB9A + blue 0xE5A + menu 0xB3A + power 0xA9A + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/One4All_7544/lircrc-one4all7544.txt b/abs/core/system-templates/templates/remotes/One4All_7544/lircrc-one4all7544.txt new file mode 100755 index 0000000..57e702a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All_7544/lircrc-one4all7544.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = c+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = c- +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = v+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = v- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ok +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = exit +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = ff +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rr +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = red +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = yellow +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = menu +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = green +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = blue +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rr +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = ff +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = exit +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = exit +config = Stop +end + +begin +prog = xine +button = exit +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = ok +config = EventSelect +end + +begin +prog = xine +button = menu +config = Menu +end + +begin +prog = xine +button = ff +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = rr +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = v+ +config = Volume+ +end + +begin +prog = xine +button = v- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = exit +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = green +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/One4All_7544/preview.jpg b/abs/core/system-templates/templates/remotes/One4All_7544/preview.jpg new file mode 100644 index 0000000..cb75f0b Binary files /dev/null and b/abs/core/system-templates/templates/remotes/One4All_7544/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/One4All_9910/lircd-one4all9910.conf b/abs/core/system-templates/templates/remotes/One4All_9910/lircd-one4all9910.conf new file mode 100755 index 0000000..504718b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All_9910/lircd-one4all9910.conf @@ -0,0 +1,53 @@ +begin remote + name one4all_9910 + bits 24 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + header 4074 3901 + one 584 1909 + zero 584 909 + ptrail 589 + gap 64326 + + begin codes + 1 0x7318CE + 2 0x7328CD + 3 0x7338CC + 4 0x7348CB + 5 0x7358CA + 6 0x7368C9 + 7 0x7378C8 + 8 0x7388C7 + 9 0x7398C6 + 0 0x7308CF + enter 0x7F480B + tvvid 0x7A385C + rew 0x71D8E2 + play 0x7158EA + fwd 0x72D8D2 + rec 0x7178E8 + pause 0x7198E6 + frew 0x72C8D3 + stop 0x71F8E0 + ffwd 0x72D8D2 + pip 0x71B8E4 + swap 0x7C383C + fav 0x72D8D2 + ch- 0x72C8D3 + ch+ 0x72D8D2 + prev 0x7278D8 + left 0x7568A9 + up 0x7598A6 + down 0x7588A7 + right 0x7578A8 + select 0x7F480B + menu 0x7088F7 + guide 0x71A8E5 + exit 0x7068F9 + info 0x73C8C3 + power 0x72A8D5 + + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/One4All_9910/lircrc-one4all9910.txt b/abs/core/system-templates/templates/remotes/One4All_9910/lircrc-one4all9910.txt new file mode 100755 index 0000000..ea40c6a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/One4All_9910/lircrc-one4all9910.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = select +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = exit +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = fwd +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rew +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = ffwd +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = frew +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = menu +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = info +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = prev +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = pip +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rew +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = fwd +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = ffwd +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = frew +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = enter +config = EventSelect +end + +begin +prog = xine +button = menu +config = Menu +end + +begin +prog = xine +button = ffwd +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = frew +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = ch+ +config = Volume+ +end + +begin +prog = xine +button = ch- +config = Volume- +end + +begin +prog = xine +button = +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = prev +config = EventPrior +end + +begin +prog = xine +button = info +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/One4All_9910/preview.jpg b/abs/core/system-templates/templates/remotes/One4All_9910/preview.jpg new file mode 100644 index 0000000..827cb9a Binary files /dev/null and b/abs/core/system-templates/templates/remotes/One4All_9910/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Packard_bell/lircd-packard.conf b/abs/core/system-templates/templates/remotes/Packard_bell/lircd-packard.conf new file mode 100755 index 0000000..9e0e783 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Packard_bell/lircd-packard.conf @@ -0,0 +1,92 @@ +# Config file for Packard Bell Remotes (with repeat codes!) +# created by Samuel Wood (sjw@umr.edu) +# +# brand: Packard Bell Remote +# model: El Cheapo Packard Bell Remote +# +# This is a config file for the cheap excess Packard Bell remotes +# you sometimes can buy from online auctions like www.onsale.com. +# +# The receiver that comes with it hooks into the serial port and works +# fine with lirc 0.5.4. +# +# The receiver that comes with the remote is near garbage. If +# you don't point almost directly at it, it will not detect. But +# it's simpler than building your own. :-) +# +# Repeat works fine for me. You just have to modify or add the +# "repeat=" lines in your .lircrc. +# +# irrecord was used to generate the file, then I modified and +# added repeat codes. +# +# The button names used are identical to what was printed on the +# remote, except for the number pads (using actual numbers like +# "1" and so forth did not seem to work. Similarly, '*' is Star +# and '#' is Hash. LMB and RMB refer to the two mousepad buttons +# on the left and right respectively. +# +# I still need to modify the gap setting. Right now, if you don't +# hold the button down long enough, it may not register, but if +# you hold it too long, it will detect a repeat or two. Feel free +# to modify this to work better. If you get it to work better, send +# me a copy. :-) + +begin remote + + name PackBell + bits 15 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 400 + + header 9065 4500 + one 597 532 + zero 597 1643 + ptrail 597 + pre_data_bits 16 + pre_data 0xF708 + post_data_bits 1 + post_data 0x0 + gap 107000 + repeat_bit 0 + repeat 9050 2250 + + begin codes + Help 0x0000000000006F90 + Phone 0x0000000000004FB0 + Message 0x0000000000006E91 + SRS 0x0000000000004EB1 + CD 0x0000000000002FD0 + Aux1 0x0000000000000FF0 + Aux2 0x0000000000002ED1 + Aux3 0x0000000000000EF1 + LMB 0x00000000000023DC + RMB 0x000000000000639C + Up 0x00000000000037C8 + Down 0x00000000000057A8 + Left 0x0000000000007788 + Right 0x00000000000017E8 + Menu 0x0000000000007B84 + Mute 0x0000000000003BC4 + Enter 0x00000000000047B8 + CHUp 0x00000000000027D8 + CHDown 0x0000000000006798 + VolUp 0x0000000000005BA4 + VolDown 0x0000000000001BE4 + Display 0x00000000000007F8 + One 0x0000000000005EA1 + Two 0x0000000000001EE1 + Three 0x0000000000000BF4 + Four 0x0000000000007E81 + Five 0x0000000000003EC1 + Six 0x0000000000004BB4 + Seven 0x0000000000005FA0 + Eight 0x0000000000001FE0 + Nine 0x0000000000002BD4 + Zero 0x0000000000003FC0 + Star 0x0000000000007F80 + Hash 0x0000000000006B94 + end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Packard_bell/lircrc-packard.txt b/abs/core/system-templates/templates/remotes/Packard_bell/lircrc-packard.txt new file mode 100755 index 0000000..5e54f7a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Packard_bell/lircrc-packard.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CHUp +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CHDown +config = Down +end + +# General Left +begin +prog = mythtv +button = Left +config = Left +end + +# General Right +begin +prog = mythtv +button = Right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = Up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = Down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VolUp +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VolDown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = Enter +config = Space +end + +# Play +begin +prog = mythtv +button = +config = Return +end + +# Stop +begin +prog = mythtv +button = +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Menu +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = Zero +config = 0 +end + +begin +prog = mythtv +button = One +config = 1 +end + +begin +prog = mythtv +button = Two +config = 2 +end + +begin +prog = mythtv +button = Three +config = 3 +end + +begin +prog = mythtv +button = Four +config = 4 +end + +begin +prog = mythtv +button = Five +config = 5 +end + +begin +prog = mythtv +button = Six +config = 6 +end + +begin +prog = mythtv +button = Seven +config = 7 +end + +begin +prog = mythtv +button = Eight +config = 8 +end + +begin +prog = mythtv +button = Nine +config = 9 +end + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Left +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = Right +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = +config = Play +end + +begin +prog = xine +button = +config = Stop +end + +begin +prog = xine +button = +config = Quit +end + +begin +prog = xine +button = +config = Pause +end + +begin +prog = xine +button = Up +config = EventUp +end + +begin +prog = xine +button = Down +config = EventDown +end + +begin +prog = xine +button = Left +config = EventLeft +end + +begin +prog = xine +button = Right +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = Menu +config = Menu +end + +begin +prog = xine +button = +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VolUp +config = Volume+ +end + +begin +prog = xine +button = VolDown +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = Help +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Packard_bell/preview.jpg b/abs/core/system-templates/templates/remotes/Packard_bell/preview.jpg new file mode 100644 index 0000000..76453bb Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Packard_bell/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Pinnacle/lircd-pinnacle.conf b/abs/core/system-templates/templates/remotes/Pinnacle/lircd-pinnacle.conf new file mode 100755 index 0000000..ebc04d9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Pinnacle/lircd-pinnacle.conf @@ -0,0 +1,97 @@ +# +# contributed by Bart Alewijnse +# +# brand: Pinnacle Systems +# model: PCTV Remote (Perhaps other ones as well) +# supported devices: there's only one I know of. (serial) +# +# Mail me if your remote is only partly supported, or if it has different +# buttons than listed below. +# + +begin remote + + name PinnacleSysPCTVRemote + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0xFE + gap 180000 + toggle_bit 0 + + begin codes + Mute 0xB53C #Mute 0x000000000000003C + Power 0x2D2F #Power 0x000000000000002F + Chan+Play 0x173F #Chan+Play 0x000000000000003F + Chan-Stop 0xC63E #Chan-Stop 0x000000000000003E + Vol+FF 0xF13B #Vol+FF 0x000000000000003B + Vol-Rew 0x643D #Vol-Rew 0x000000000000003D + 1 0x9F31 #1 0x0000000000000031 + 2 0x3D32 #2 0x0000000000000032 + 3 0xEC33 #3 0x0000000000000033 + 4 0xA834 #4 0x0000000000000034 + 5 0x7935 #5 0x0000000000000035 + 6 0xDB36 #6 0x0000000000000036 + 7 0x0A37 #7 0x0000000000000037 + 8 0x5338 #8 0x0000000000000038 + 9 0x8239 #9 0x0000000000000039 + Fullscreen 0x5E2D #Fullscreen 0x000000000000002D + 0/AV 0x203A #0/AV 0x000000000000003A + Info 0xCB2B #Info 0x000000000000002B + Preview 0xFC2E #Preview 0x000000000000002E + Record 0x3027 #Record 0x0000000000000027 + Chan_Last 0x4325 #Chan_Last 0x0000000000000025 + F_TV 0xE126 #F_TV 0x0000000000000026 + F_TELETEXT 0xB829 #F_TELETEXT 0x0000000000000029 + F_RADIO 0x1A2A #F_RADIO 0x000000000000002A + +# +# here are some extra buttons a new version of the remote seems to have +# +# contributed by Robbert Monna +# +# brand: Pinnacle Systems +# model: PCTV Remote (newest version?) +# supported devices: dongle on serial port (from TV-Card) +# + L 0x631F #L 0x000000000000001F + Zoom 0xB21E #Zoom 0x000000000000001E + vol+ 0x851B #vol+ 0x000000000000001B + vol- 0x590F #vol- 0x000000000000000F + channel+ 0x7E17 #channel+ 0x0000000000000017 + channel- 0xC11C #channel- 0x000000000000001C + middle 0x541A #middle 0x000000000000001A + Menu 0x101D #Menu 0x000000000000001D + next 0xF619 #next 0x0000000000000019 + undo 0xAF16 #undo 0x0000000000000016 + pause 0x0D15 #pause 0x0000000000000015 + redo 0x9813 #redo 0x0000000000000013 + Rewind 0x880E #Rewind 0x000000000000000E + Play 0x2A0D #Play 0x000000000000000D + Stop 0xBF0B #Stop 0x000000000000000B + FForward 0x4407 #FForward 0x0000000000000007 + EPG 0x2718 #EPG 0x0000000000000018 + +# here are some more buttons that seem to be mapped differently from +# the ones above + +# contributed by InterCeptor ceptor_7@freemail.hu +# +# brand: Pinnacle Systems PCTV Pro Remote +# model no. of remote control: (I can't find any numbers on it) +# supported devices: serial +# + + 9 0x0000000000000082 + Zoom 0x00000000000000B2 + middle 0x0000000000000014 + + + end codes +end remote + + diff --git a/abs/core/system-templates/templates/remotes/Pinnacle/lircrc-pinnacle.txt b/abs/core/system-templates/templates/remotes/Pinnacle/lircrc-pinnacle.txt new file mode 100755 index 0000000..d3b9261 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Pinnacle/lircrc-pinnacle.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = channel+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = channel- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = channel+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = channel- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = undo +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FForward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = Rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = Vol+FF +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = Vol-Rew +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = Menu +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = EPG +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = Info +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = Chan_Last +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = F_TELETEXT +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = Fullscreen +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Menu +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Rewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FForward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = Vol+FF +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = Vol-Rew +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = Fullscreen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = Stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = channel+ +config = EventUp +end + +begin +prog = xine +button = channel- +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = Menu +config = Menu +end + +begin +prog = xine +button = FForward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = Rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = Stop +config = RootMenu +end + +begin +prog = xine +button = next +config = EventNext +end + +begin +prog = xine +button = undo +config = EventPrior +end + +begin +prog = xine +button = Info +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Pinnacle/preview.jpg b/abs/core/system-templates/templates/remotes/Pinnacle/preview.jpg new file mode 100644 index 0000000..bd8e19e Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Pinnacle/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Provideo/lircd-provideo.conf b/abs/core/system-templates/templates/remotes/Provideo/lircd-provideo.conf new file mode 100755 index 0000000..d20ad85 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Provideo/lircd-provideo.conf @@ -0,0 +1,52 @@ +begin remote + + name PV951 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9067 4482 + one 597 1650 + zero 597 529 + ptrail 584 + repeat 9068 2232 + pre_data_bits 16 + pre_data 0x61D6 + gap 107983 + repeat_bit 0 + + begin codes + power 0x00000000000048B7 + air/cbl 0x000000000000D02F + pc/tv 0x0000000000008877 + source 0x000000000000F00F + mts 0x000000000000C837 + mute 0x00000000000008F7 + 1 0x000000000000807F + 2 0x00000000000040BF + 3 0x000000000000C03F + 4 0x00000000000020DF + 5 0x000000000000A05F + 6 0x000000000000609F + 7 0x000000000000E01F + 8 0x00000000000010EF + 9 0x000000000000906F + 0 0x00000000000000FF + +100 0x00000000000050AF + ch_rtn 0x000000000000E817 + ch+ 0x00000000000058A7 + ch- 0x0000000000007887 + vol+ 0x000000000000D827 + vol- 0x000000000000F807 + func 0x0000000000009867 + ttx 0x000000000000B04F + pg+ 0x000000000000708F + pg- 0x000000000000B847 + cc 0x0000000000006897 + sync 0x00000000000028D7 + ch+- 0x00000000000018E7 + autoscan 0x00000000000030CF + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/Provideo/lircrc-provideo.txt b/abs/core/system-templates/templates/remotes/Provideo/lircrc-provideo.txt new file mode 100755 index 0000000..90972b6 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Provideo/lircrc-provideo.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = pg+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = pg- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = +config = Return +end + +# Stop +begin +prog = mythtv +button = +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = func +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = ch_rtn +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = cc +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = func +config = osd +end + +# Pause playback +begin +prog = mplayer +button = +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = +config = Play +end + +begin +prog = xine +button = +config = Stop +end + +begin +prog = xine +button = +config = Quit +end + +begin +prog = xine +button = +config = Pause +end + +begin +prog = xine +button = ch+ +config = EventUp +end + +begin +prog = xine +button = ch- +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = +config = Menu +end + +begin +prog = xine +button = pg+ +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = pg- +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = ch_rtn +config = EventPrior +end + +begin +prog = xine +button = ttx +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Provideo/preview.jpg b/abs/core/system-templates/templates/remotes/Provideo/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Provideo/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircd-rs.conf b/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircd-rs.conf new file mode 100644 index 0000000..f8175f3 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircd-rs.conf @@ -0,0 +1,87 @@ +# this config file was generated +# using lirc-0.7.0pre2(hauppauge) on Thu Jan 1 00:35:50 2004 +# +# contributed by Jarod Wilson +#------------------------------------------------------------------------------ +# +# filename: RadioShack_15-2116-vcr0081.lirc +# encoding: RC-5 +# brand: RadioShack Universal (and others) +# model: 15-2116, set as VCR type 0081 +# supported devices: all +# +# note: requires quite a bit of key reassignment w/keymover and EFCs... +# see http://wilsonet.com/mythtv/rs15-2116.html for HOWTO +# +#------------------------------------------------------------------------------ + +begin remote + + name rs15-2116-vcr0081 + bits 11 + flags RC5|CONST_LENGTH + eps 20 + aeps 0 + header 0 0 + one 889 889 + zero 889 889 + plead 889 + ptrail 0 + foot 0 0 + repeat 0 0 + pre_data_bits 2 + pre_data 0x02 + post_data_bits 0 + post_data 0x0 + pre 0 0 + post 0 0 + gap 113792 + toggle_bit 2 + frequency 36000 + duty_cycle 50 + + begin codes + 0 0x0000000000000140 + 1 0x0000000000000141 + 2 0x0000000000000142 + 3 0x0000000000000143 + 4 0x0000000000000144 + 5 0x0000000000000145 + 6 0x0000000000000146 + 7 0x0000000000000147 + 8 0x0000000000000148 + 9 0x0000000000000149 + INFO 0x000000000000014a + SELECT 0x000000000000014b + POWER 0x000000000000014c + MUTE 0x000000000000014d + MOVE 0x000000000000014e + VOL+ 0x0000000000000150 + VOL- 0x0000000000000151 + RIGHT 0x000000000000015a + LEFT 0x000000000000015b + ENTER 0x000000000000015c + MENU 0x000000000000015d + CH+ 0x0000000000000160 + CH- 0x0000000000000161 + PIP 0x0000000000000162 + SWAP 0x0000000000000163 + SLEEP 0x0000000000000166 + FREEZE 0x0000000000000168 + PAUSE 0x0000000000000169 + SKIP 0x000000000000016a + EXIT 0x0000000000000171 + REW 0x0000000000000172 + REPLAY 0x0000000000000173 + FFWD 0x0000000000000174 + PLAY 0x0000000000000175 + STOP 0x0000000000000176 + REC 0x0000000000000177 + SKIP 0x0000000000000178 + +100 0x0000000000000179 + LAST 0x000000000000017b + GUIDE 0x000000000000017c + TV/VIDEO 0x000000000000017e + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircrc-rs b/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircrc-rs new file mode 100644 index 0000000..91c0de5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/lircrc-rs @@ -0,0 +1,539 @@ +# ~/.mythtv/lircrc +# +# MythTV native LIRC config file for +# the RadioShack 15-2116, VCR type 0081 +# using Hauppauge IR receiver +# +# By Jarod Wilson, 2003/12/31 +# Amalgamated from Harry O's +# .lircrc, the mythtv.org docs, and +# a few touches of my own. :) +# + +# Channel Up +begin +prog = mythtv +button = CH+ +repeat = 4 +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH- +repeat = 4 +config = Down +end + +# OK/Select +begin +prog = mythtv +button = SELECT +repeat = 4 +config = Return +end + +# Play +begin +prog = mythtv +button = PLAY +repeat = 4 +config = Space +end + +# Stop +begin +prog = mythtv +button = STOP +repeat = 4 +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = EXIT +repeat = 4 +config = Esc +end + +# Power Off/Exit +begin +prog = mythtv +button = POWER +repeat = 4 +config = Esc +end + +# Pause +begin +prog = mythtv +button = PAUSE +repeat = 4 +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +repeat = 4 +config = | +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = REW +repeat = 4 +config = Left +end + +begin +prog = mythtv +button = LEFT +repeat = 4 +config = Left +end + +# Fast forward (30 sec default) +begin +prog = mythtv +button = FFWD +repeat = 4 +config = Right +end + +begin +prog = mythtv +button = RIGHT +repeat = 4 +config = Right +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = FREEZE +repeat = 4 +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = MOVE +repeat = 4 +config = PgUp +end + +# Record +begin +prog = mythtv +button = REC +repeat = 4 +config = R +end + +# OSD browse +begin +prog = mythtv +button = GUIDE +repeat = 4 +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = MENU +repeat = 4 +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = INFO +repeat = 4 +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +100 +repeat = 4 +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = SLEEP +repeat = 4 +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = ENTER +repeat = 4 +config = Z +end + +# Change TV card input +begin +prog = mythtv +button = TV/VIDEO +repeat = 4 +config = C +end + +# Toggle Picture-In-Picture +begin +prog = mythtv +button = PIP +repeat = 4 +config = V +end + +# Swap PIP +begin +prog = mythtv +button = SWAP +repeat = 4 +config = N +end + +# Cycle through channel history +begin +prog = mythtv +button = LAST +repeat = 4 +config = H +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +repeat = 4 +config = 0 +end + +begin +prog = mythtv +button = 1 +repeat = 4 +config = 1 +end + +begin +prog = mythtv +button = 2 +repeat = 4 +config = 2 +end + +begin +prog = mythtv +button = 3 +repeat = 4 +config = 3 +end + +begin +prog = mythtv +button = 4 +repeat = 4 +config = 4 +end + +begin +prog = mythtv +button = 5 +repeat = 4 +config = 5 +end + +begin +prog = mythtv +button = 6 +repeat = 4 +config = 6 +end + +begin +prog = mythtv +button = 7 +repeat = 4 +config = 7 +end + +begin +prog = mythtv +button = 8 +repeat = 4 +config = 8 +end + +begin +prog = mythtv +button = 9 +repeat = 4 +config = 9 +end + +### MPlayer commands + +begin +prog = mplayer +button = MENU +repeat = 4 +config = osd +end + +begin +prog = mplayer +button = PAUSE +repeat = 4 +config = pause +end + +begin +prog = mplayer +button = PLAY +repeat = 4 +config = seek +1 +end + +begin +prog = mplayer +button = STOP +repeat = 4 +config = quit +end + +begin +prog = mplayer +button = MUTE +repeat = 4 +config = mute +end + +begin +prog = mplayer +button = REW +repeat = 4 +config = seek -10 +end + +begin +prog = mplayer +button = LEFT +repeat = 4 +config = seek -10 +end + +begin +prog = mplayer +button = FFWD +repeat = 4 +config = seek +30 +end + +begin +prog = mplayer +button = RIGHT +repeat = 4 +config = seek +30 +end + +begin +prog = mplayer +button = EXIT +repeat = 4 +config = quit +end + +begin +prog = mplayer +button = FREEZE +repeat = 4 +config = seek +1200 +end + +begin +prog = mplayer +button = MOVE +repeat = 4 +config = seek -1200 +end + +begin +prog = mplayer +button = +100 +repeat = 4 +config = vo_fullscreen +end + +### Xine commands + +begin +prog = xine +button = PLAY +repeat = 3 +config = Play +end + +begin +prog = xine +button = STOP +repeat = 3 +config = Stop +end + +begin +prog = xine +button = POWER +repeat = 3 +config = Quit +end + +begin +prog = xine +button = EXIT +repeat = 3 +config = Quit +end + +begin +prog = xine +button = PAUSE +repeat = 3 +config = Pause +end + +begin +prog = xine +button = CH+ +repeat = 3 +config = EventUp +end + +begin +prog = xine +button = CH- +repeat = 3 +config = EventDown +end + +begin +prog = xine +button = LEFT +repeat = 3 +config = EventLeft +end + +begin +prog = xine +button = RIGHT +repeat = 3 +config = EventRight +end + +begin +prog = xine +button = SELECT +repeat = 3 +config = EventSelect +end + +begin +prog = xine +button = GUIDE +repeat = 3 +config = Menu +end + +begin +prog = xine +button = FFWD +repeat = 3 +config = SeekRelative+30 +end + +begin +prog = xine +button = REW +repeat = 3 +config = SeekRelative-30 +end + +begin +prog = xine +button = VOL+ +repeat = 3 +config = Volume+ +end + +begin +prog = xine +button = VOL- +repeat = 3 +config = Volume- +end + +begin +prog = xine +button = MUTE +repeat = 3 +config = Mute +end + +begin +prog = xine +button = MENU +repeat = 3 +config = RootMenu +end + +begin +prog = xine +button = FREEZE +repeat = 3 +config = EventNext +end + +begin +prog = xine +button = LAST +repeat = 3 +config = EventPrior +end + +begin +prog = xine +button = INFO +repeat = 3 +config = OSDStreamInfos +end + +begin +prog = xine +button = ENTER +repeat = 3 +config = SpeedFaster +end + +begin +prog = xine +button = SLEEP +repeat = 3 +config = SpeedSlower +end diff --git a/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/preview.jpg b/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/preview.jpg new file mode 100644 index 0000000..d465839 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/RadioShack_15-2116-Jarod_Wilson/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Sasem/lircd-sasem.conf b/abs/core/system-templates/templates/remotes/Sasem/lircd-sasem.conf new file mode 100755 index 0000000..25d6521 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Sasem/lircd-sasem.conf @@ -0,0 +1,81 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre4(sasem) on Mon May 24 03:11:34 2004 +# +# contributed by Oliver Stabel (oliver.stabel@gmx.de) +# +# brand: Sasem OnAir +# model no. of remote control: n/a +# devices being controlled by this remote: +# This IR came with the Dign HV5 HTPC case, manufactured +# by Uneed in Korea (www.iuneed.com). +# AFAIK the case is called Ahanix HV5 in the US. +# The IR/VFD device is originally manufactured by Sasem, +# and sold as OnAir Remocon-V (?looks different from +# mine but should be the same?) +# + +begin remote + + name sasem + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 24 + pre_data 0x0C807F + post_data_bits 24 + post_data 0x000000 + gap 196000 + toggle_bit 0 + + + begin codes + 1 0x08F7 + 2 0x09F6 + 3 0x0AF5 + 4 0x10EF + 5 0x11EE + 6 0x12ED + 7 0x18E7 + 8 0x19E6 + 9 0x1AE5 + start 0x40BF + 0 0x41BE + full_down 0x06F9 + vol- 0x0FF0 + vol+ 0x0EF1 + esc 0x05FA + up 0x0BF4 + close 0x07F8 + left 0x03FC + enter 0x13EC + right 0x1BE4 + prev 0x0CF3 + down 0x43BC + next 0x01FE + mute 0x0DF2 + step 0x04FB + play_pause 0x49B6 + stop 0x48B7 + winamp 0x1EE1 + media_player 0x15EA + hdtv 0x17E8 + cd_player 0x16E9 + win_dvd 0x44BB + power_dvd 0x14EB + internet 0x46B9 + email 0x47B8 + a 0x45BA + b 0x1DE2 + c 0x1CE3 + d 0x1FE0 + eject 0x02FD + power 0x00FF + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/Sasem/lircrc-sasem.txt b/abs/core/system-templates/templates/remotes/Sasem/lircrc-sasem.txt new file mode 100755 index 0000000..9d73415 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Sasem/lircrc-sasem.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = up +config = Up +end + +# Channel Down +begin +prog = mythtv +button = down +config = Down +end + +# General Left +begin +prog = mythtv +button = left +config = Left +end + +# General Right +begin +prog = mythtv +button = right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = enter +config = Space +end + +# Play +begin +prog = mythtv +button = play_pause +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = esc +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = play_pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = next +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = prev +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = +config = osd +end + +# Pause playback +begin +prog = mplayer +button = play_pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = prev +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = next +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = full_down +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play_pause +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = esc +config = Quit +end + +begin +prog = xine +button = play_pause +config = Pause +end + +begin +prog = xine +button = up +config = EventUp +end + +begin +prog = xine +button = down +config = EventDown +end + +begin +prog = xine +button = left +config = EventLeft +end + +begin +prog = xine +button = right +config = EventRight +end + +begin +prog = xine +button = enter +config = EventSelect +end + +begin +prog = xine +button = +config = Menu +end + +begin +prog = xine +button = next +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = prev +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Sasem/preview.jpg b/abs/core/system-templates/templates/remotes/Sasem/preview.jpg new file mode 100644 index 0000000..ec2b595 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Sasem/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Technisat/lircd-technisat.conf b/abs/core/system-templates/templates/remotes/Technisat/lircd-technisat.conf new file mode 100755 index 0000000..3f0f3d4 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Technisat/lircd-technisat.conf @@ -0,0 +1,68 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.6.6(any) on Sun Mar 27 11:39:40 2005 +# +# contributed by +# +# brand: +# model no. of remote control: TS35 - Airstar2 +# devices being controlled by this remote: DVB-T +# + +begin remote + + name technisat + bits 13 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 907 885 + zero 907 885 + plead 954 + gap 113935 + toggle_bit 2 + + + begin codes + 1 0x0000000000001A81 + 2 0x0000000000001A82 + 3 0x0000000000001283 + 4 0x0000000000001284 + 5 0x0000000000001A85 + 6 0x0000000000001286 + 7 0x0000000000001A87 + 8 0x0000000000001288 + 9 0x0000000000001A89 + 0 0x0000000000001A80 + Mute 0x000000000000128D + Ext 0x0000000000001AB8 + a/b 0x00000000000012A3 + Power 0x0000000000001A8C + tv/radio 0x0000000000000293 + -/-- 0x0000000000001A8A + Menu 0x0000000000000292 + Back 0x0000000000000A8F + Up 0x0000000000001AA0 + Down 0x00000000000012A1 + Left 0x0000000000001A91 + Right 0x0000000000001A90 + Sfi 0x0000000000001AAF + Repeat 0x0000000000001AA2 + Red 0x00000000000002AB + Green 0x0000000000000AAC + Yellow 0x0000000000000AAD + Blue 0x0000000000000AAE + Ok 0x0000000000000297 + Check 0x00000000000002B6 + txt 0x0000000000001ABC + stop 0x00000000000012A9 + help 0x0000000000001A8F + tv/radio 0x0000000000000A93 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/Technisat/lircrc-technisat.txt b/abs/core/system-templates/templates/remotes/Technisat/lircrc-technisat.txt new file mode 100755 index 0000000..8baa6b9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Technisat/lircrc-technisat.txt @@ -0,0 +1,347 @@ +begin + prog = mythtv + button = Up + config = Up +end + +begin + prog = mythtv + button = Down + config = Down +end + +begin + prog = mythtv + button = Left + config = Left +end + +begin + prog = mythtv + button = Right + config = Right +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 = 0 + config = 0 +end + +begin + prog = mythtv + button = Menu + config = M +end + +begin + prog = mythtv + button = Repeat + config = H +end + +begin + prog = mythtv + button = Check + config = / +end + +begin + prog = mythtv + button = help + config = T +end + + +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 + +begin + prog = mythtv +# This is the Green key +# We'll use it for "View details" + button = Yellow + config = U +end + +begin + prog = mythtv +# This is the Green key +# We'll use it for "Upcoming episodes" + button = Blue + config = O +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 + button = Left + repeat = 3 + config = F10 +end + +begin + prog = mythtv + button = Right + repeat = 3 + config = F11 +end + +begin + prog = mythtv +# Middle button on the diamond + button = Ok + config = P +end + +begin + prog = mythtv + button = Mute + config = | +end + +begin + prog = mythtv + button = back + config = Esc +end + + +begin + prog = mythtv + button = stop + config = Esc +end + + +#MPlayer +begin + prog = mplayer + button = stop + config = quit +end + +begin + prog = mplayer + button = help + config = osd +end + +begin + prog = mplayer + button = Ok + config = play +end + + + +begin + prog = mplayer + button = Ok + config = pause +end + +begin + prog = mplayer + button = Right + config = volume +1 + repeat = 1 +end + +begin + prog = mplayer + button = Left + config = volume -1 + repeat = 1 +end + +begin + prog = mplayer + button = Mute + config = mute +end +##XINE + + begin + prog = xine + button = Ok + repeat = 3 + config = Play + end + + begin + prog = xine + button = stop + repeat = 3 + config = Stop + end + + begin + prog = xine + button = Back + config = Quit + end + + begin + prog = xine + button = Ok + repeat = 3 + config = Pause + end + + begin + prog = xine + button = Up + repeat = 4 + config = EventUp + end + + begin + prog = xine + button = Down + repeat = 4 + config = EventDown + end + + begin + prog = xine + button = Left + repeat = 4 + config = Volume- + end + + begin + prog = xine + button = Right + repeat = 4 + config = Volume+ + 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 = EventLeft + end + + #vol up + begin + prog = xine + button = Red + repeat = 1 + config = EventRight + 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 + + + #skip chapter backward + begin + prog = xine + button = Repeat + repeat = 1 + config = EventPrior + end diff --git a/abs/core/system-templates/templates/remotes/Technisat/preview.jpg b/abs/core/system-templates/templates/remotes/Technisat/preview.jpg new file mode 100644 index 0000000..25ecd0d Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Technisat/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Tekram/lircd-tekram.conf b/abs/core/system-templates/templates/remotes/Tekram/lircd-tekram.conf new file mode 100755 index 0000000..90ae8f8 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Tekram/lircd-tekram.conf @@ -0,0 +1,48 @@ +# +# This is for the remote that Tekram bundles with its M230 card (Mach64) +# Commands from the remote are hardware-decoded +# +# contributed by Froenchenko Leonid +# +# brand: Tekram M230 (ATI Mach64) +# supported devices: This remote control comes with TV Tuner cards from +# Tekram based on ATI 264VT (btt829) +# + +begin remote + name tekram_m230 + bits 8 + begin codes + 0 0x00 + 1 0x01 + 2 0x02 + 3 0x03 + 4 0x04 + 5 0x05 + 6 0x06 + 7 0x07 + 8 0x08 + 9 0x09 + RECALL 0x0A + ENTER 0x17 + POWER 0x1C + SOURCE 0x15 + PC_VID 0x12 + STILL 0x11 + TTX 0x0F + FAV 0x13 + MUTE 0x10 + VOL_UP 0x1A + VOL_DN 0x1E + CH_UP 0x1B + CH_DN 0x1F + PLAY 0x0D + STOP 0x0E + REW 0x1D + FFW 0x19 + ADD_ER 0x16 + FUNC 0x14 + F_PLUS 0x18 + F_MINUS 0x0C + end codes +end remote diff --git a/abs/core/system-templates/templates/remotes/Tekram/lircrc-tekram.txt b/abs/core/system-templates/templates/remotes/Tekram/lircrc-tekram.txt new file mode 100755 index 0000000..6226f3d --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Tekram/lircrc-tekram.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = CH_UP +config = Up +end + +# Channel Down +begin +prog = mythtv +button = CH_DN +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = CH_UP +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = CH_DN +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VOL_UP +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VOL_DN +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = ENTER +config = Space +end + +# Play +begin +prog = mythtv +button = PLAY +config = Return +end + +# Stop +begin +prog = mythtv +button = STOP +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = POWER +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = STILL +config = P +end + +# Mute +begin +prog = mythtv +button = MUTE +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FFW +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = REW +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = F_PLUS +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = F_MINUS +config = PgUp +end + +# Record +begin +prog = mythtv +button = FUNC +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = SOURCE +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = FAV +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = PC_VID +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = RECALL +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = TTX +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = FAV +config = osd +end + +# Pause playback +begin +prog = mplayer +button = STILL +config = pause +end + +# Mute +begin +prog = mplayer +button = MUTE +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = REW +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FFW +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = STOP +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = F_PLUS +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = F_MINUS +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = SOURCE +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = PLAY +config = Play +end + +begin +prog = xine +button = STOP +config = Stop +end + +begin +prog = xine +button = STOP +config = Quit +end + +begin +prog = xine +button = STILL +config = Pause +end + +begin +prog = xine +button = CH_UP +config = EventUp +end + +begin +prog = xine +button = CH_DN +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = ENTER +config = EventSelect +end + +begin +prog = xine +button = SOURCE +config = Menu +end + +begin +prog = xine +button = FFW +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = REW +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL_UP +config = Volume+ +end + +begin +prog = xine +button = VOL_DN +config = Volume- +end + +begin +prog = xine +button = MUTE +config = Mute +end + +begin +prog = xine +button = STOP +config = RootMenu +end + +begin +prog = xine +button = F_PLUS +config = EventNext +end + +begin +prog = xine +button = F_MINUS +config = EventPrior +end + +begin +prog = xine +button = TTX +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Tekram/preview.jpg b/abs/core/system-templates/templates/remotes/Tekram/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Tekram/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/Twinham/lircd-twinhan.conf b/abs/core/system-templates/templates/remotes/Twinham/lircd-twinhan.conf new file mode 100755 index 0000000..3fb3652 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Twinham/lircd-twinhan.conf @@ -0,0 +1,44 @@ +begin remote + name TwinHanRemote + bits 32 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + gap 115899 + toggle_bit 0 + begin codes + fullscreen 0x8001002C + Power 0x8001001D + 1 0x80010002 + 2 0x80010003 + 3 0x80010004 + 4 0x80010005 + 5 0x80010006 + 6 0x80010007 + 7 0x80010008 + 8 0x80010009 + 9 0x8001000A + 0 0x8001000B + rec 0x80010066 + favorite 0x8001002F + rewind 0x80010017 + forward 0x80010031 + ch+ 0x80010068 + ch- 0x8001006D + vol- 0x8001006C + vol+ 0x80010067 + recall 0x8001002E + play 0x8001001C + stop 0x8001006B + pause 0x80010014 + mute 0x80010032 + cancel 0x80010001 + capture 0x80010019 + preview 0x80010025 + epg 0x80010012 + recordlist 0x80010026 + tab 0x8001000F + teletext 0x8001001E + end codes +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Twinham/lircrc-twinhan.txt b/abs/core/system-templates/templates/remotes/Twinham/lircrc-twinhan.txt new file mode 100755 index 0000000..296876c --- /dev/null +++ b/abs/core/system-templates/templates/remotes/Twinham/lircrc-twinhan.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ch+ +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ch- +config = Down +end + +# General Left +begin +prog = mythtv +button = +config = Left +end + +# General Right +begin +prog = mythtv +button = +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = ch+ +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = ch- +config = Down +end + +# Volume Up +begin +prog = mythtv +button = vol+ +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = vol- +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = +config = Space +end + +# Play +begin +prog = mythtv +button = play +config = Return +end + +# Stop +begin +prog = mythtv +button = stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = pause +config = P +end + +# Mute +begin +prog = mythtv +button = mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = forward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = +config = PgUp +end + +# Record +begin +prog = mythtv +button = rec +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = epg +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = preview +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = recall +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = teletext +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = epg +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +config = pause +end + +# Mute +begin +prog = mplayer +button = mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = forward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = fullscreen +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = play +config = Play +end + +begin +prog = xine +button = stop +config = Stop +end + +begin +prog = xine +button = stop +config = Quit +end + +begin +prog = xine +button = pause +config = Pause +end + +begin +prog = xine +button = ch+ +config = EventUp +end + +begin +prog = xine +button = ch- +config = EventDown +end + +begin +prog = xine +button = +config = EventLeft +end + +begin +prog = xine +button = +config = EventRight +end + +begin +prog = xine +button = +config = EventSelect +end + +begin +prog = xine +button = epg +config = Menu +end + +begin +prog = xine +button = forward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = vol+ +config = Volume+ +end + +begin +prog = xine +button = vol- +config = Volume- +end + +begin +prog = xine +button = mute +config = Mute +end + +begin +prog = xine +button = stop +config = RootMenu +end + +begin +prog = xine +button = +config = EventNext +end + +begin +prog = xine +button = +config = EventPrior +end + +begin +prog = xine +button = teletext +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/Twinham/preview.jpg b/abs/core/system-templates/templates/remotes/Twinham/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/Twinham/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/X10_Lola/lircd-x10lola.conf b/abs/core/system-templates/templates/remotes/X10_Lola/lircd-x10lola.conf new file mode 100755 index 0000000..7bfad44 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/X10_Lola/lircd-x10lola.conf @@ -0,0 +1,78 @@ +# lircd.conf for X-10 Lola remote +# +# this config file was automatically generated +# using lirc-0.6.6(any) on Sat May 15 14:41:38 2004 +# matching MythTV configuration file at http://wendy.seltzer.org/mythtv/lircrc +# +# +# brand: X-10 Lola +# model no. of remote control: UR89A +# devices being controlled by this remote: mythtv +# + +begin remote + + name x10_lola + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 219972 + toggle_bit 0 + + + begin codes + up 0x000000000000600B + down 0x000000000000610C + left 0x0000000000005D08 + right 0x0000000000005E09 + M 0x0000000000005F0A + 1 0x000000000000620D + 2 0x000000000000630E + 3 0x000000000000640F + 4 0x0000000000006510 + 5 0x0000000000006611 + 6 0x0000000000006712 + 7 0x0000000000006813 + 8 0x0000000000006914 + 9 0x0000000000006A15 + 0 0x0000000000006C17 + a-d 0x0000000000006B16 + a-b 0x0000000000006D18 + pageup 0x000000000000711C + pagedown 0x0000000000007520 + T 0x000000000000832E + E 0x000000000000842F + F 0x0000000000005C07 + S 0x0000000000008530 + scan- 0x000000000000802B + rew 0x0000000000007924 + play 0x0000000000007A25 + ff 0x0000000000007B26 + scan+ 0x0000000000007F2A + rec 0x0000000000007C27 + stop 0x0000000000007D28 + pause 0x0000000000007E29 + playlist 0x0000000000005601 + playing 0x000000000000822D + enter 0x000000000000731E + eu 0x0000000000006F1A + ed 0x0000000000007722 + el 0x000000000000721D + er 0x000000000000741F + alb 0x0000000000006E19 + art 0x000000000000701B + gen 0x0000000000007621 + trk 0x0000000000007823 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/X10_Lola/lircrc-x10lola.txt b/abs/core/system-templates/templates/remotes/X10_Lola/lircrc-x10lola.txt new file mode 100755 index 0000000..5fc949e --- /dev/null +++ b/abs/core/system-templates/templates/remotes/X10_Lola/lircrc-x10lola.txt @@ -0,0 +1,334 @@ +# lircrc +# lircrc configuration file for X-10 Lola remote for use with MythTV +# for use with keymapping at http://wendy.seltzer.org/mythtv/lircd.conf +# common keymappings from the keys.txt suggestions +# +# This file is public domain. No rights reserved. + +###number keys +begin + prog = mythtv + button = 0 + config = 0 +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 = 0 + config = 0 +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 + +##arrows +begin + prog = mythtv + button = play + config = Space +end + +### arrows with the multibutton +begin + prog = mythtv + button = eu + config = Up +end +begin + prog = mythtv + button = ed + config = Down +end +begin + prog = mythtv + button = el + config = Left +end +begin + prog = mythtv + button = er + config = Right +end +begin + prog = mythtv + button = enter + config = Space +end +begin + prog = mythtv + button = stop + config = Escape +end +begin + prog = mythtv + button = alb + config = m +end +begin + prog = mythtv + button = art + config = e +end +begin + prog = mythtv + button = gen + config = i +end +begin + prog = mythtv + button = trk + config = y +end +begin + prog = mythtv + button = rec + config = r +end + +begin + prog = mythtv + button = pause + config = p +end + +begin + prog = mythtv + button = T + config = t +end + +begin + prog = mythtv + button = E + config = u +end + +begin + prog = mythtv + button = S + config = a +end + +begin + prog = mythtv + button = F + config = + +end + +begin + prog = mythtv + button = playing + config = s +end + +begin + prog=mythtv + button = playlist + config = w +end + +begin + prog = mythtv + button = a-d + config = d +end + +begin + prog = mythtv + button = a-b + config = b +end +##Volume (with pageup) +begin + prog=mythtv + button = pageup + config = Page Up +end +begin + prog=mythtv + button = pagedown + config = Page Down +end + +begin + prog=mythtv + button = ch+ + config = ] +end + +begin + prog=mythtv + button = ch- + config = [ +end + +begin + prog=mythtv + button = vol- + config = q +end + +begin + prog=mythtv + button = vol+ + config = z +end + +begin + prog=mythtv + button = ff + config = > +end + +begin + prog=mythtv + button = rew + config = < +end + +begin + prog=mythtv + button = scan+ + config = } +end + +begin + prog=mythtv + button = scan- + config = { +end + + +##mplayer +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = alb +repeat = 3 +config = osd +end + +# Pause playback +begin +prog = mplayer +button = pause +repeat = 3 +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = play +repeat = 3 +config = seek +1 +end + +# Stop playback and exit +begin +prog = mplayer +button = stop +repeat = 3 +config = quit +end + +# Mute +begin +prog = mplayer +button = +repeat = 3 +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = rew +repeat = 3 +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = ff +repeat = 3 +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = E +repeat = 3 +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = vol+ +repeat = 3 +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = vol- +repeat = 3 +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = playlist +repeat = 3 +config = vo_fullscreen +end + diff --git a/abs/core/system-templates/templates/remotes/X10_Lola/preview.jpg b/abs/core/system-templates/templates/remotes/X10_Lola/preview.jpg new file mode 100644 index 0000000..915a3b2 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/X10_Lola/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/atiusb/lircd.conf.atiusb b/abs/core/system-templates/templates/remotes/atiusb/lircd.conf.atiusb new file mode 100644 index 0000000..4953bf2 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/atiusb/lircd.conf.atiusb @@ -0,0 +1,1259 @@ +# +# this config file was automatically generated +# using lirc-0.7.0-CVS(atiusb) on Tue Apr 27 23:51:09 2004 +# +# contributed by Paul Miller +# +# brand: ATI Remote Wonder +# model no. of remote control: 5000015900A +# devices being controlled by this remote: ATI USB Receiver +# +# CHANNEL CODES +# To change your channel, hold the hand button down until the +# LED begins to blink. Then enter the channel number +# (1 through 16) and press the hand again. +# +# NOTE!! The lirc_atiusb driver now removes the channel code +# from key-codes (by default). This effectively outputs codes +# for remote channel 1. You can change this behavior by +# loading the module with unique=1. Type `modinfo lirc_atiusb` +# for details. + +begin remote + + name ATIUSB_5000015900A + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 139944 + toggle_bit 0 + + + begin codes + A 0x000000000000F500 + B 0x000000000000F601 + C 0x0000000000000E19 + D 0x000000000000101B + E 0x0000000000001621 + F 0x0000000000001823 + TV 0x000000000000F803 + DVD 0x000000000000F904 + WEB 0x000000000000FA05 + BOOK 0x000000000000FB06 + HAND 0x000000000000FC07 + POWER 0x000000000000F702 + MOUSE_LEFT_BTN 0x0000000000006D78 + MOUSE_RIGHT_BTN 0x000000000000717C + MOUSE_UP 0x0000000000006772 + MOUSE_DOWN 0x0000000000006B76 + MOUSE_LEFT 0x0000000000006C77 + MOUSE_RIGHT 0x0000000000006B76 + VOL_UP 0x000000000000FD08 + VOL_DOWN 0x000000000000FE09 + MUTE 0x000000000000FF0A + CH_UP 0x000000000000000B + CH_DOWN 0x000000000000010C + 1 0x000000000000020D + 2 0x000000000000030E + 3 0x000000000000040F + 4 0x0000000000000510 + 5 0x0000000000000611 + 6 0x0000000000000712 + 7 0x0000000000000813 + 8 0x0000000000000914 + 9 0x0000000000000A15 + 0 0x0000000000000C17 + LIST 0x0000000000000B16 + CHECK 0x0000000000000D18 + UP 0x0000000000000F1A + DOWN 0x0000000000001722 + LEFT 0x000000000000121D + RIGHT 0x000000000000141F + OK 0x000000000000131E + TIMER 0x000000000000111C + MAX 0x0000000000001520 + REWIND 0x0000000000001924 + PLAY 0x0000000000001A25 + FFWD 0x0000000000001B26 + REC 0x0000000000001C27 + STOP 0x0000000000001D28 + PAUSE 0x0000000000001E29 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0pre1(atiusb) on Fri Nov 28 16:56:46 2003 +# +# contributed by Jason Piterak +# +# brand: ATI +# model no. of remote control: 5000022000 +# +# devices being controlled by this remote: +# MythTV PVR using knopmyth by Cecil and Dale at +# http://mysettopbox.tv +# Key map names are as per ATI's website: +# http://www.ati.com/support/connectors/remotecontrol/atiremotecontrolbutton=s.html +# Feel free to change them as you see fit :-) +# +# NOTE: There are 16 channels for this remote; this file only +# supports one channel. See the GATOS project for information +# on how to change the channel. Not tested. Unknown channel. +# +# also reported by Jeffrey Barnhill to work with model 5000023600 while +# the dedicated section below did not work + +begin remote + + name ATIUSB_5000022000 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0000 + gap 139891 + toggle_bit 0 + + + begin codes + a 0x000000000000C500 + b 0x000000000000C601 + power 0x000000000000C702 + tv 0x000000000000C803 + dvd 0x000000000000C904 + web 0x000000000000CA05 + media_library 0x000000000000CB06 + drag 0x000000000000CC07 + mouse-button_left 0x0000000000003D78 + mouse-button_right 0x000000000000417C + mouse-up 0x0000000000003772 + mouse-down 0x0000000000003873 + mouse-left 0x0000000000003570 + mouse-right 0x0000000000003671 + mouse-left_up 0x0000000000003974 + mouse-right_up 0x0000000000003A75 + mouse-left_down 0x0000000000003C77 + mouse-right_down 0x0000000000003B76 + vol-up 0x000000000000CD08 + vol-down 0x000000000000CE09 + mute 0x000000000000CF0A + chan-up 0x000000000000D00B + chan-down 0x000000000000D10C + 1 0x000000000000D20D + 2 0x000000000000D30E + 3 0x000000000000D40F + 4 0x000000000000D510 + 5 0x000000000000D611 + 6 0x000000000000D712 + 7 0x000000000000D813 + 8 0x000000000000D914 + 9 0x000000000000DA15 + 0 0x000000000000DC17 + dvd-root_menu 0x000000000000DB16 + launch_setup 0x000000000000DD18 + c 0x000000000000DE19 + d 0x000000000000E01B + tv_on_demand 0x000000000000E11C + max_window 0x000000000000E520 + cursor-up 0x000000000000DF1A + cursor-down 0x000000000000E722 + cursor-left 0x000000000000E21D + cursor-right 0x000000000000E41F + ok 0x000000000000E31E + e 0x000000000000E621 + f 0x000000000000E823 + rewind 0x000000000000E924 + play 0x000000000000EA25 + fast_forward 0x000000000000EB26 + record 0x000000000000EC27 + stop 0x000000000000ED28 + pause 0x000000000000EE29 + end codes + +end remote + +# +# this config file was automatically generated +# using lirc-0.7.0-CVS(atiusb) on Sat May 15 10:44:51 2004 +# +# contributed by Jurgen Kramer +# +# brand: ATI +# model no. of remote control: 5000023600 +# devices being controlled by this remote: MythTV 0.14 +# +# USB ID: 0bc7:0004 +# + +begin remote + + name ATIUSB_5000023600 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 227972 + min_repeat 4 + toggle_bit 0 + + + begin codes + 1 0x000000000000920D + 2 0x000000000000930E + 3 0x000000000000940F + 4 0x0000000000009510 + 5 0x0000000000009611 + 6 0x0000000000009712 + 7 0x0000000000009813 + 8 0x0000000000009914 + 9 0x0000000000009A15 + a 0x0000000000008500 + b 0x0000000000008601 + power 0x0000000000008702 + tv 0x0000000000008803 + dvd 0x0000000000008904 + web 0x0000000000008A05 + media_library 0x0000000000008B06 + drag 0x0000000000008C07 + 0 0x0000000000009C17 + c 0x0000000000009E19 + d 0x000000000000A01B + mute 0x0000000000008F0A + tv_on_demand 0x000000000000A11C + max_window 0x000000000000A520 + e 0x000000000000A621 + f 0x000000000000A823 + ok 0x000000000000A31E + left 0x000000000000A21D + right 0x000000000000A41F + up 0x0000000000009F1A + down 0x000000000000A722 + rewind 0x000000000000A924 + play 0x000000000000AA25 + forward 0x000000000000AB26 + record 0x000000000000AC27 + stop 0x000000000000AD28 + pause 0x000000000000AE29 + mouse_button_left 0x000000000000FD78 + mouse_button_right 0x000000000000017C + vol-down 0x0000000000008E09 + vol-up 0x0000000000008D08 + chan-down 0x000000000000910C + chan-up 0x000000000000900B + mouse-up 0x000000000000F772 + mouse-down 0x000000000000F873 + mouse-left 0x000000000000F570 + mouse-right 0x000000000000F671 + mouse-left_up 0x000000000000F974 + mouse-left_down 0x000000000000FC77 + mouse-right_up 0x000000000000FA75 + mouse-right_down 0x000000000000FB76 + dvd-root_menu 0x0000000000009B16 + launch_setup 0x0000000000009D18 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0(any) on Tue Mar 29 17:33:06 2005 +# +# contributed by Raphaël Doursenaud (rdoursenaud@free.fr) +# +# brand: Sapphire (ATI) +# model no. of remote control: 5000023600 +# devices being controlled by this remote: xmms, tvtime +# + +begin remote + + name SAPPHIRE_ATIUSB_5000023600 + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 227990 + toggle_bit 0 + + + begin codes + 1 0x00000014E20D0000 + 2 0x00000014E30E0000 + 3 0x00000014E40F0000 + 4 0x00000014E5100000 + 5 0x00000014E6110000 + 6 0x00000014E7120000 + 7 0x00000014E8130000 + 8 0x00000014E9140000 + 9 0x00000014EA150000 + a 0x00000014D5000000 + b 0x00000014D6010000 + power 0x00000014D7020000 + tv 0x00000014D8030000 + dvd 0x00000014D9040000 + web 0x00000014DA050000 + media_library 0x00000014DB060000 + drag 0x00000014DC070000 + 0 0x00000014EC170000 + c 0x00000014EE190000 + d 0x00000014F01B0000 + mute 0x00000014DF0A0000 + tv_on_demand 0x00000014F11C0000 + max_window 0x00000014F5200000 + e 0x00000014F6210000 + f 0x00000014F8230000 + ok 0x00000014F31E0000 + left 0x00000014F21D0000 + right 0x00000014F41F0000 + up 0x00000014EF1A0000 + down 0x00000014F7220000 + rewind 0x00000014F9240000 + play 0x00000014FA250000 + forward 0x00000014FB260000 + record 0x00000014FC270000 + stop 0x00000014FD280000 + pause 0x00000014FE290000 + mouse_button_left 0x000000144D780000 + mouse_button_right 0x00000014517C0000 + vol-down 0x00000014DE090000 + vol-up 0x00000014DD080000 + chan-down 0x00000014E10C0000 + chan-up 0x00000014E00B0000 + mouse-up 0x0000001447720000 + mouse-down 0x0000001448730000 + mouse-left 0x0000001445700000 + mouse-right 0x0000001446710000 + mouse-left_up 0x0000001449740000 + mouse-left_down 0x000000144C770000 + mouse-right_up 0x000000144A750000 + mouse-right_down 0x000000144B760000 + dvd-root_menu 0x00000014EB160000 + launch_setup 0x00000014ED180000 + end codes + +end remote + + +# lircd.conf for X-10 Lola remote +# +# this config file was automatically generated +# using lirc-0.6.6(any) on Sat May 15 14:41:38 2004 +# matching MythTV configuration file at http://wendy.seltzer.org/mythtv/lircrc +# +# +# brand: X-10 Lola +# model no. of remote control: UR89A +# devices being controlled by this remote: mythtv +# + +begin remote + + name X-10_Lola + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 219972 + toggle_bit 0 + + + begin codes + up 0x000000000000600B + down 0x000000000000610C + left 0x0000000000005D08 + right 0x0000000000005E09 + M 0x0000000000005F0A + 1 0x000000000000620D + 2 0x000000000000630E + 3 0x000000000000640F + 4 0x0000000000006510 + 5 0x0000000000006611 + 6 0x0000000000006712 + 7 0x0000000000006813 + 8 0x0000000000006914 + 9 0x0000000000006A15 + 0 0x0000000000006C17 + a-d 0x0000000000006B16 + a-b 0x0000000000006D18 + pageup 0x000000000000711C + pagedown 0x0000000000007520 + T 0x000000000000832E + E 0x000000000000842F + F 0x0000000000005C07 + S 0x0000000000008530 + scan- 0x000000000000802B + rew 0x0000000000007924 + play 0x0000000000007A25 + ff 0x0000000000007B26 + scan+ 0x0000000000007F2A + rec 0x0000000000007C27 + stop 0x0000000000007D28 + pause 0x0000000000007E29 + playlist 0x0000000000005601 + playing 0x000000000000822D + enter 0x000000000000731E + eu 0x0000000000006F1A + ed 0x0000000000007722 + el 0x000000000000721D + er 0x000000000000741F + alb 0x0000000000006E19 + art 0x000000000000701B + gen 0x0000000000007621 + trk 0x0000000000007823 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0pre6(atiusb) on Fri Jul 9 10:08:10 2004 +# +# contributed by Julien Damon +# +# brand: microapp6in1 +# see http://www.microapp.com/fiche_produit.cfm?ref_produit=4184 +# distributed in France +# model no. of remote control: 4184(UR86E) +# devices being controlled by this remote: + +# +# sold by Pearl as Q-Sonic Master Remote 6in1 PC +# + +begin remote + + name microapp6in1 + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 203993 + toggle_bit 0 + + + begin codes + num_1 0x00000020EE11820D + num_2 0x00000020EE11420D + num_3 0x00000020EE11C20D + num_4 0x00000020EE11220D + num_5 0x00000020EE11A20D + num_6 0x00000020EE11620D + num_7 0x00000020EE11E20D + num_8 0x00000020EE11120D + num_9 0x00000020EE11920D + num_0 0x00000020EE11020D + AV 0x00000020EE11BA05 + ok 0x00000020EE11520D + up 0x00000020EE11D50A + left 0x00000020EE11D20D + right 0x00000020EE11D10E + down 0x00000020EE11D30C + exit 0x00000020EE11C906 + menu 0x00000020EE11B609 + mute 0x00000020EE11A00F + vol+ 0x00000020EE11600F + vol- 0x00000020EE11E00F + ch+ 0x00000020EE11400F + ch- 0x00000020EE11C00F + hand 0x00000014307B0000 + skip_left 0x00000020EE113A05 + skip_right 0x00000020EE11D807 + play 0x00000020EE11B00F + backward 0x00000020EE113807 + forward 0x00000020EE11B807 + pause 0x00000020EE11720D + stop 0x00000020EE11FF00 + record 0x00000020EE11700F + clic_left 0x000000142D780000 + clic_right 0x00000014317C0000 + mouse_up 0x0000001427720000 + mouse_down 0x0000001428730000 + mouse_right 0x0000001426710000 + mouse_left 0x0000001425700000 + mouse_up_right 0x000000142A750000 + mouse_down_right 0x000000142B760000 + mouse_up_left 0x0000001429740000 + mouse_down_left 0x000000142C770000 + power 0x00000020EE11F00F +# additional codes reported by Daniel Beyer for Q-Sonic Master Remote 6in1 PC + leftbtn_up 0x000000142e790000 + rightbtn_up 0x00000014327d0000 + pc 0x00000020ee11d40b + + end codes + +end remote + + +# this config file was automatically generated +# using lirc-0.7.0pre7(atiusb) on Tue Aug 31 21:16:31 2004 +# +# contributed by Martin Tomasek +# +# brand: ATI Remote Wonder +# model no. of remote control: +# devices being controlled by this remote: ATI USB Receiver (X10). +# +# * remote is set to channel 1, driver reports channel 16. don't know +# which is true. + +# +# P: Vendor=0bc7 ProdID=0004 Rev= 1.00 +# S: Manufacturer=X10 Wireless Technology Inc +# S: Product=USB Receiver +# + +begin remote + + name atiusb_ch1 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 227933 + toggle_bit 0 + + + begin codes + A 0x000000000000D500 + B 0x000000000000D601 + C 0x000000000000EE19 + D 0x000000000000F01B + E 0x000000000000F621 + F 0x000000000000F823 + POWER 0x000000000000D702 + TV 0x000000000000D803 + DVD 0x000000000000D904 + WEB 0x000000000000DA05 + BOOK 0x000000000000DB06 + HAND 0x000000000000DC07 + MOUSE_LEFT_BTN 0x0000000000004D78 + MOUSE_RIGHT_BTN 0x000000000000517C + MOUSE_LEFT 0x0000000000004570 + MOUSE_RIGHT 0x0000000000004671 + MOUSE_UP 0x0000000000004772 + MOUSE_DOWN 0x0000000000004873 + VOL_UP 0x000000000000DD08 + VOL_DOWN 0x000000000000DE09 + MUTE 0x000000000000DF0A + CH_UP 0x000000000000E00B + CH_DOWN 0x000000000000E10C + 1 0x000000000000E20D + 2 0x000000000000E30E + 3 0x000000000000E40F + 4 0x000000000000E510 + 5 0x000000000000E611 + 6 0x000000000000E712 + 7 0x000000000000E813 + 8 0x000000000000E914 + 9 0x000000000000EA15 + 0 0x000000000000EC17 + LIST 0x000000000000EB16 + CHECK 0x000000000000ED18 + UP 0x000000000000EF1A + DOWN 0x000000000000F722 + LEFT 0x000000000000F21D + RIGHT 0x000000000000F41F + OK 0x000000000000F31E + TIMER 0x000000000000F11C + MAXIMIZE 0x000000000000F520 + REW 0x000000000000F924 + FFWD 0x000000000000FB26 + PLAY 0x000000000000FA25 + STOP 0x000000000000FD28 + RECORD 0x000000000000FC27 + PAUSE 0x000000000000FE29 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0pre4(atiusb) on Tue Nov 9 12:37:00 2004 +# +# contributed by Phil Speights +# +# brand: nvidia +# model no. of remote control: UR88A +# devices being controlled by this remote: nvidia personal cinema +# + +begin remote + + name ATIUSB_UR88A + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 243948 + toggle_bit 0 + + + begin codes + mouse-up 0x4A75 + mouse-right_up 0x4A75 + mouse-right 0x4671 + mouse-right_down 0x4B76 + mouse-down 0x4B76 + mouse-left_down 0x4873 + mouse-left 0x4C77 + mouse-left_up 0x4772 + esc 0xDF0A + mouse-button_left 0x4D78 + mouse-button_right 0x517C + 1 0xE20D + 2 0xE30E + 3 0xE40F + 4 0xE510 + 5 0xE611 + 6 0xE712 + 7 0xE813 + 8 0xE914 + 9 0xEA15 + 0 0xEC17 + stop 0xFD28 + play 0xFA25 + fastfoward 0xFB26 + rewind 0xF924 + pause 0xFE29 + record 0xFC27 + previous 0xF621 + next 0xF823 + up 0xEF1A + down 0xF722 + right 0xF41F + left 0xF21D + web 0xDC07 + music 0xDB06 + photo 0xDA05 + dvd/vcd 0xD904 + dvr 0xD803 + mute 0xD500 + playlist 0xD601 + chsurf 0xD702 + dvdmenu 0xEE19 + txt 0xEB16 + snapshots 0xED18 + setup 0xF01B + audio 0xF11C + slow 0xF520 + ok 0xF31E + vol+ 0xDE09 + vol- 0xDD08 + chan- 0xE10C + chan+ 0xE00B + zoom 0xFF2A + angle 0x002B + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0(atiusb) on Sun Jan 23 11:18:36 2005 +# +# contributed by Dirk Aust +# +# brand: Medion, Made by X10, China +# Remote P/N: 20016398 +# Receiver P/N: 20016397 +# +# bundled with bundled with Titanium TD8008 and TD8080 Aldi PC + +begin remote + + name Medion + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 139873 + toggle_bit 0 + + + begin codes + TV 0x012C + VCR 0x022D + DVD 0xD904 + MUSIC 0xDB06 + RADIO 0x032E + PHOTO 0xDA05 + TV_PREVIEW 0x042F + CHANNEL_LIST 0x0530 + SETUP 0xF01B + VIDEO_DESKTOP 0x0631 + CHAN+ 0xE00B + VOL- 0xDD08 + MUTE 0xD500 + VOL+ 0xDE09 + CHAN- 0xE10C + RED 0x0732 + GREEN 0x0833 + YELLOW 0x0934 + BLUE 0x0A35 + TXT 0xEB16 + 1 0xE20D + 2 0xE30E + 3 0xE40F + 4 0xE510 + 5 0xE611 + 6 0xE712 + 7 0xE813 + 8 0xE914 + 9 0xEA15 + TV/RADIO 0xF11C + 0 0xEC17 + DELETE 0xF520 + RENAME 0x0B36 + SNAPSHOT 0xED18 + UP 0xEF1A + LEFT 0xF21D + OK 0xF31E + RIGHT 0xF41F + DOWN 0xF722 + ACQ_IMAGE 0x0C37 + EDIT_IMAGE 0x0D38 + REW 0xF924 + PLAY 0xFA25 + FFW 0xFB26 + RECORD 0xFC27 + STOP 0xFD28 + PAUSE 0xFE29 + PREV 0xF621 + FULL 0x0E39 + NEXT 0xF823 + DVD_MENU 0xEE19 + DVD_AUDIO 0x0F3A + POWER 0xD702 + end codes + +end remote + + +# this config file was automatically generated +# using lirc-0.7.0(atiusb) on Sat Feb 12 13:22:29 2005 +# +# contributed by Steffen +# +# brand: ATI Sapphire Remote Bob II USB +# model no. of remote control: 5000024400 +# devices being controlled by this remote: ASUS Digimatrix MythTV PVR +# + +begin remote + + name 5000024400 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x0 + post_data_bits 16 + post_data 0x0 + gap 299851 + toggle_bit 0 + + + begin codes + aux1 0x023F + aux2 0x023F + aux3 0x023F + aux4 0x023F + leftmouse 0x02A9 + rightmouse 0x02AA + a 0x0278 + b 0x0279 + power 0x020C + dvd 0x0238 + tv 0x0239 + help 0x02BE + pc 0x023F + resize 0x02D5 + hand 0x02D0 + ati 0x028E + vol-up 0x0210 + vol-down 0x0211 + mute 0x020D + chan-up 0x0220 + chan-down 0x0221 + mouse-up 0x013F + mouse-down 0x013F + mouse-left 0x013F + mouse-right 0x013F + 1 0x0201 + 2 0x0202 + 3 0x0203 + 4 0x0204 + 5 0x0205 + 6 0x0206 + 7 0x0207 + 8 0x0208 + 9 0x0209 + 0 0x0200 + list 0x0254 + check 0x0282 + info 0x02F9 + timer 0x0296 + up 0x0258 + left 0x025A + right 0x025B + down 0x0259 + ok 0x025C + c 0x017A + d 0x027B + play 0x022C + e 0x027C + f 0x027D + rewind 0x0229 + rec 0x0237 + stop 0x0231 + pause 0x0230 + ffwd 0x0228 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0(any) on Sun Jan 16 14:58:13 2005 +# +# contributed by +# +# brand: Niveus +# model no. of remote control: +# devices being controlled by this remote: Niveus X10 +# + +begin remote + + name Niveus_X10 + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 203974 + toggle_bit 0 + + + begin codes + power 0x00000020EE11F00F + mouse-up 0x0000001447720000 + mouse-down 0x0000001448730000 + mouse-left 0x0000001445700000 + mouse-right 0x0000001446710000 + mouse-up-left 0x0000001449740000 + mouse-up-right 0x000000144A750000 + mouse-down-left 0x000000144C770000 + mouse-down-right 0x000000144B760000 + mouse-left-click 0x000000144D780000 + mouse-right-click 0x00000014517C0000 + mouse-drag 0x00000014507B0000 + vol- 0x00000020EE01E00F + vol+ 0x00000020EE81600F + ch- 0x00000020EEE1C00F + ch+ 0x00000020EE61400F + mute 0x00000020EEC1A00F + 1 0x00000020EEA1820D + 2 0x00000020EE61420D + 3 0x00000020EEE1C20D + 4 0x00000020EE41220D + 5 0x00000020EEC1A20D + 6 0x00000020EE81620D + 7 0x00000020EE01E20D + 8 0x00000020EE31120D + 9 0x00000020EEB1920D + ent 0x00000020EE71520D + 0 0x00000020EE21020D + a-b 0x00000020EED1BA05 + a 0x00000020EE513A05 + b 0x00000020EEF1D807 + c 0x00000020EEF1D609 + d 0x00000020EEF1D906 + menu 0x00000020EED1B609 + exit 0x00000020EEE1C906 + up 0x00000020EEF1D50A + down 0x00000020EEF1D30C + left 0x00000020EEF1D20D + right 0x00000020EEF1D10E + ok 0x00000020EE71520D + rew 0x00000020EE513807 + play 0x00000020EED1B00F + ff 0x00000020EED1B807 + rec 0x00000020EE11FF00 + stop 0x00000020EE91700F + pause 0x00000020EE91720D + end codes + +end remote +# +# this config file was automatically generated +# using lirc-0.7.0(atiusb) on Mon Aug 22 22:40:10 2005 +# +# contributed by +# +# brand: Medion +# model no. of remote control: MD1 NBC remote +# devices being controlled by this remote: Medion MD95700 usb dvb/analog tuner with atiusb +# + +begin remote + + name Medion_MD1 + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 219994 + min_repeat 27 + toggle_bit 0 + + + begin codes + Power 0x000000000000D702 + TV 0x000000000000012C + Video 0x00000000000082AD + CD/DVD 0x000000000000D904 + Teletext 0x0000000000006B96 + Audio 0x000000000000DB06 + Radio 0x00000000000083AE + Page 0x0000000000000631 + Photo 0x0000000000005A85 + Info 0x000000000000042F + Menu 0x0000000000006E99 + Back 0x000000000000F520 + Wheel_Up 0x000000000000CDF8 + Wheel_Down 0x000000000000C7F2 + Wheel_Left 0x000000000000F21D + Wheel_Right 0x000000000000749F + Wheel_Click 0x000000000000F31E + Vol+ 0x000000000000DE09 + Vol- 0x0000000000005D88 + Mute 0x000000000000D500 + Program+ 0x000000000000608B + Program- 0x000000000000E10C + Prog_Switch 0x000000000000719C + Select 0x000000000000F01B + Red 0x00000000000087B2 + Green 0x0000000000000833 + Yellow 0x00000000000089B4 + Blue 0x0000000000000A35 + Stop 0x0000000000007DA8 + Pause 0x000000000000FE29 + Play 0x0000000000007AA5 + Skip_Left 0x000000000000F621 + Camera 0x0000000000006D98 + Skip_Right 0x000000000000F823 + Fast_Reverse 0x00000000000079A4 + Fast_Forward 0x000000000000FB26 + 1 0x000000000000628D + 2 0x000000000000E30E + 3 0x000000000000648F + 4 0x000000000000E510 + 5 0x0000000000006691 + 6 0x000000000000E712 + 7 0x0000000000006893 + 8 0x000000000000E914 + 9 0x0000000000006A95 + 0 0x000000000000EC17 + Record 0x000000000000FC27 + end codes + +end remote + + + +# +# this config file was automatically generated +# using lirc-0.7.0(atiusb) on Tue Nov 22 15:41:40 2005 +# +# contributed by a_matteur +# +# brand: MEDION X10 RF +# model no. of remote control: remote P/N:20014752, receiver P/N:20014751 +# devices being controlled by this remote: +# + +begin remote + + name MEDION_X10_RF + bits 16 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x14 + post_data_bits 16 + post_data 0x0 + gap 235923 + toggle_bit 0 + + + begin codes + tv 0x012C + vcr 0x022D + dvd 0x0904 + music 0x0B06 + radio 0x032E + photo 0x0A05 + tvpreview 0x042F + channellist 0x0530 + setup 0x001B + videodesktop 0x0631 + ch+ 0x000B + ch- 0x010C + vol+ 0x0E09 + vol- 0x0D08 + mute 0x0500 + red 0x0732 + green 0x0833 + yellow 0x0934 + blue 0x0A35 + txt 0x0B16 + 0 0x0C17 + 1 0x020D + 2 0x030E + 3 0x040F + 4 0x0510 + 5 0x0611 + 6 0x0712 + 7 0x0813 + 8 0x0914 + 9 0x0A15 + tvradio 0x011C + delete 0x0520 + rename 0x0B36 + snapshot 0x0D18 + up 0x0F1A + down 0x0722 + left 0x021D + right 0x041F + ok 0x031E + acquireimage 0x0C37 + editimage 0x0D38 + play 0x0A25 + pause 0x0E29 + stop 0x0D28 + forward 0x0B26 + rewind 0x0924 + next 0x0823 + prev 0x0621 + record 0x0C27 + fullscreen 0x0E39 + dvdmenu 0x0E19 + dvdaudio 0x0F3A + power 0x0702 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.2(atiusb) on Wed Dec 21 18:36:45 2005 +# +# contributed by: Peter J. Weyers +# +# brand: MEDION / ATI +# model no. of remote control: 40005927 +# devices being controlled by this remote: +# +# This is an USB attached reciever wich works by radio, not by IR. It is +# most probably a relabeled ATI X10 device and sold together with the +# Medion Notebook MD41300. It works with the lirc_atiusb driver while the +# ati_remote module is NOT(!) loaded + +begin remote + + name MEDION_40005927 + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 227972 + toggle_bit 0 + + + begin codes + TV_DVD 0x1481AC0000 + VIDEO 0x1482AD0000 + PHOTO 0x1459840000 + MUSIC 0x145B860000 + PC 0x1483AE0000 + MUTE 0x1455800000 + OK 0x14739E0000 + UP 0x146F9A0000 + DOWN 0x1477A20000 + LEFT 0x14729D0000 + RIGHT 0x14749F0000 + CH+ 0x145E890000 + CH- 0x145D880000 + VOL+ 0x14608B0000 + VOL- 0x14618C0000 + PLAY_PAUSE 0x147AA50000 + RECORD 0x147CA70000 + STOP 0x147DA80000 + FRWND 0x1479A40000 + FFWD 0x147BA60000 + PREV 0x1476A10000 + NEXT 0x1478A30000 + 1 0x14628D0000 + 2 0x14638E0000 + 3 0x14648F0000 + 4 0x1465900000 + 5 0x1466910000 + 6 0x1467920000 + 7 0x1468930000 + 8 0x1469940000 + 9 0x146A950000 + 0 0x146C970000 + RC 0x1484AF0000 + Screen_Symbol 0x146B960000 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.2(any) on Mon Jan 16 13:13:31 2006 +# +# contributed by +# +# brand: Medion USB Remote Control X10 +# model no. of remote control: 40009936 +# devices being controlled by this remote: +# + +begin remote + + name Medion_X10 + bits 40 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 219969 + toggle_bit 0 + + + begin codes + off 0x14D7020000 + tv 0x14012C0000 + video 0x1482AD0000 + dvd 0x14D9040000 + vt 0x146B960000 + audio 0x14DB060000 + radio 0x1483AE0000 + book 0x1406310000 + photo 0x145A850000 + info 0x14042F0000 + 0 0x146C970000 + 1 0x14E20D0000 + 2 0x14638E0000 + 3 0x14E40F0000 + 4 0x1465900000 + 5 0x14E6110000 + 6 0x1467920000 + 7 0x1468930000 + 8 0x14E9140000 + 9 0x146A950000 + ok 0x14F31E0000 + up 0x14CDF80000 + down 0x1446710000 + left 0x14F21D0000 + right 0x14749F0000 + menu 0x14EE190000 + back 0x1475A00000 + red 0x1407320000 + green 0x1488B30000 + yellow 0x1409340000 + blue 0x148AB50000 + mute 0x14D5000000 + ch+ 0x14608B0000 + ch- 0x14E10C0000 + vol+ 0x145E890000 + vol- 0x14DD080000 + switch 0x14719C0000 + stop 0x14FD280000 + pause 0x147EA90000 + play 0x14FA250000 + reward 0x1476A10000 + forward 0x14F8230000 + skipr 0x1479A40000 + skipf 0x14FB260000 + rec 0x147CA70000 + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia b/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia new file mode 100644 index 0000000..7091aa4 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia @@ -0,0 +1,72 @@ +# +# This is for the remote that Avermedia bundles with its TVCapture and +# TVPhone, the classic ones (pre 98). +# Commands from the remote are hardware-decoded by a PIC16c54-xt, which makes +# lirc's job easy. You need at least lirc-0.6.3 to use this config file +# +# this config file was automatically generated +# using lirc-0.6.3 on Wed Jan 10 19:31:20 2001 +# +# contributed by Santiago Garcia Mantinan +# +# brand: Avermedia +# model: TVCapture & TVPhone, the classic ones (pre 98) +# supported devices: This remote control comes with some TV Tuner cards from +# Avermedia. + +begin remote + + name Avermedia + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8984 4527 + one 568 1681 + zero 568 558 + ptrail 547 + repeat 8985 2276 + pre_data_bits 16 + pre_data 0x2FD + gap 108069 + toggle_bit 0 + + + begin codes + TV 0x0000000000006897 + FM 0x000000000000A857 + EXIT 0x00000000000048B7 + DISPLAY 0x00000000000030CF + FREEZE 0x00000000000028D7 + CAPTURE 0x0000000000008877 + VIDEO 0x00000000000038C7 + 1 0x000000000000807F + 2 0x00000000000040BF + 3 0x000000000000C03F + AUDIO 0x00000000000018E7 + 4 0x00000000000020DF + 5 0x000000000000A05F + 6 0x000000000000609F + FULLSCREEN 0x000000000000F00F + 7 0x000000000000E01F + 8 0x00000000000010EF + 9 0x000000000000906F + LOOP 0x000000000000C837 + 0 0x00000000000050AF + LEFTARROW 0x00000000000000FF + RIGHTARROW 0x000000000000E817 + MUTE 0x00000000000008F7 + COLOR 0x000000000000B04F + PREVIEW 0x000000000000708F + CHANNELUP 0x000000000000D827 + VOL_UP 0x00000000000058A7 + AUTOSCAN 0x000000000000B847 + ENTER 0x0000000000009867 + CHANNELDOWN 0x000000000000F807 + VOL_DOWN 0x0000000000007887 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia98 b/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia98 new file mode 100644 index 0000000..f60ee50 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.avermedia98 @@ -0,0 +1,175 @@ +# +# this config file was automatically generated +# using lirc-0.5.5 on Thu May 25 18:00:24 2000 +# +# contributed by Michal Kochanowicz & Jesus Bravo Alvarez +# +# brand: AVerMedia +# model: ? +# supported devices: some TVCapture98 (ID 0x00021461) and +# some TVPhone98 (ID 0x00011461) cards + +begin remote + + name TVCapture98 + bits 6 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9078 4437 + one 615 1631 + zero 615 515 + ptrail 620 +# pre_data_bits 16 +# pre_data 0x40BF + repeat 9080 2189 + gap 108056 + repeat_bit 0 + + begin codes + TV/FM 0x0000000000000023 + CD 0x0000000000000022 +# TELETEXT 0x000000000000C03F + POWER 0x0000000000000027 + + 1 0x0000000000000018 + 2 0x0000000000000010 + 3 0x0000000000000008 + VIDEO 0x0000000000000000 + + 4 0x0000000000000019 + 5 0x0000000000000011 + 6 0x0000000000000009 + AUDIO 0x0000000000000001 + + 7 0x000000000000001A + 8 0x0000000000000012 + 9 0x000000000000000A + FULLSCREEN 0x0000000000000002 + + 0 0x000000000000001B + DISPLAY 0x0000000000000013 + COLOR 0x000000000000000B + LOOP 0x0000000000000003 + + UNLABELED 0x000000000000001C + LEFT 0x0000000000000014 + RIGHT 0x000000000000000C + PREVIEW 0x0000000000000004 + + AUTOSCAN 0x000000000000001D + FREEZE 0x0000000000000015 + CAPTURE 0x000000000000000D + MUTE 0x0000000000000005 + + RED 0x000000000000001E + VOL_DOWN 0x0000000000000016 + VOL_UP 0x000000000000000E + YELLOW 0x0000000000000006 + + GREEN 0x000000000000001F + CH_DOWN 0x0000000000000017 + CH_UP 0x000000000000000F + BLUE 0x0000000000000007 + end codes + +end remote + +# +# this config file was automatically generated +# using lirc-0.6.1 on Tue Apr 25 14:31:21 2000 +# +# contributed by Christoph Bartelmus +# +# brand: AVerMedia +# model: ? (36 buttons) +# supported devices: TVPhone98 card (ID 0x00031461) +# TVCapture98 card (ID 0x00041461) +# +# This config file does work with both homebrew receivers and +# original AVerMedia TV cards !!! +# + +begin remote + + name TVPhone98 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9078 4437 + one 615 1631 + zero 615 515 + ptrail 620 + repeat 9080 2189 + pre_data_bits 16 + pre_data 0x40BF + gap 108056 + repeat_bit 0 + + begin codes + POWER 0x00000000000000FF + TV/FM 0x000000000000807F + CD 0x00000000000040BF + TELETEXT 0x000000000000C03F + VIDEO 0x00000000000020DF + 1 0x000000000000A05F + 2 0x000000000000609F + 3 0x000000000000E01F + AUDIO 0x00000000000010EF + 4 0x000000000000906F + 5 0x00000000000050AF + 6 0x000000000000D02F + FULLSCREEN 0x00000000000030CF + 7 0x000000000000B04F + 8 0x000000000000708F + 9 0x000000000000F00F + + PREVIEW 0x00000000000008F7 + 0 0x0000000000008877 + DISPLAY 0x00000000000048B7 + LOOP 0x000000000000C837 + MUTE 0x00000000000028D7 + AUTOSCAN 0x000000000000A857 + FREEZE 0x0000000000006897 + CAPTURE 0x000000000000E817 + PLAY 0x00000000000018E7 + RECORD 0x0000000000009867 + PAUSE 0x00000000000058A7 + STOP 0x000000000000D827 + YELLOW 0x00000000000038C7 + RED 0x000000000000B847 + VOL_DOWN 0x0000000000007887 + VOL_UP 0x000000000000F807 + end codes + +end remote + +begin remote + + name TVPhone98_ext + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9078 4437 + one 615 1631 + zero 615 515 + ptrail 620 + repeat 9080 2189 + pre_data_bits 16 + pre_data 0xC03F + gap 108056 + repeat_bit 0 + + begin codes + BLUE 0x00000000000000FF + GREEN 0x000000000000807F + CH_DOWN 0x00000000000040BF + CH_UP 0x000000000000C03F + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.vdomate b/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.vdomate new file mode 100644 index 0000000..36b1c6b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/avermedia/lircd.conf.vdomate @@ -0,0 +1,61 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.4 (LIRC 0.6.1pre3) on Sun Oct 06 07:28:36 2002 +# +# contributed by +# +# brand: AVerMedia +# model: +# supported devices: VDOMATE (ID 0x3001461) +# + +begin remote + + name hanircd + bits 32 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9086 4425 + one 625 1624 + zero 625 500 + ptrail 624 + repeat 9087 2185 + gap 107977 + toggle_bit 0 + + + begin codes + power 0x0000000040BF00FF + one 0x0000000040BFA05F + two 0x0000000040BF609F + three 0x0000000040BFE01F + four 0x0000000040BF906F + five 0x0000000040BF50AF + six 0x0000000040BFD02F + seven 0x0000000040BFB04F + eight 0x0000000040BF708F + nine 0x0000000040BFF00F + zero 0x0000000040BF8877 + video 0x0000000040BF20DF + fullscreen 0x0000000040BF30CF + display 0x0000000040BF48B7 + color 0x0000000040BFC837 + loop 0x0000000040BF08F7 + coloup 0x0000000040BF6897 + colordn 0x0000000040BFE817 + preview 0x0000000040BF28D7 + autoscan 0x0000000040BF9867 + freeze 0x0000000040BF58A7 + capture 0x0000000040BFD827 + mute 0x0000000040BF18E7 + volumeup 0x0000000040BF7887 + volumedown 0x0000000040BFF807 + chnldown 0x00000000C03F40BF + chnlup 0x00000000C03FC03F + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia b/abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia new file mode 100644 index 0000000..e950862 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia @@ -0,0 +1,33 @@ +# +# lircmd config file +# + +#PROTOCOL IntelliMouse +PROTOCOL MouseSystems + +# ACCELERATOR start max multiplier + +ACCELERATOR 2 30 5 + +ACTIVATE * FM + +MOVE_N * 2 +MOVE_NE * 3 +MOVE_E * 6 +MOVE_SE * 9 +MOVE_S * 8 +MOVE_SW * 7 +MOVE_W * 4 +MOVE_NW * 1 + +# These are lircmd-0.5.5 extensions +MOVE_IN * VOLUP +MOVE_OUT * VOLDOWN + +BUTTON1_CLICK * DISPLAY +BUTTON2_CLICK * FREEZE +BUTTON3_CLICK * CAPTURE + +BUTTON1_TOGGLE * AUDIO +BUTTON2_TOGGLE * FULLSCREEN +BUTTON3_TOGGLE * LOOP diff --git a/abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia98 b/abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia98 new file mode 100644 index 0000000..2885372 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/avermedia/lircmd.conf.avermedia98 @@ -0,0 +1,37 @@ +# +# lircmd config file +# + +PROTOCOL IntelliMouse + +# ACCELERATOR start max multiplier + +ACCELERATOR 2 30 5 + +# ACTIVATE * MENUE + +MOVE_N * 2 +MOVE_NE * 3 +MOVE_E * 6 +MOVE_SE * 9 +MOVE_S * 8 +MOVE_SW * 7 +MOVE_W * 4 +MOVE_NW * 1 + +# These are lircmd-0.5.5 extensions +MOVE_IN * VOL_UP +MOVE_OUT * VOL_DOWN + +BUTTON1_DOWN * 5 +BUTTON1_UP * 0 + +BUTTON1_DOWN * TV/FM +BUTTON2_DOWN * CD +BUTTON3_DOWN * TELETEXT +BUTTON1_CLICK * DISPLAY +BUTTON3_CLICK * LOOP + +BUTTON1_TOGGLE * VIDEO +BUTTON2_TOGGLE * AUDIO +BUTTON3_TOGGLE * FULLSCREEN diff --git a/abs/core/system-templates/templates/remotes/avermedia/preview.jpg b/abs/core/system-templates/templates/remotes/avermedia/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/avermedia/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy b/abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy new file mode 100644 index 0000000..1fd689f --- /dev/null +++ b/abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy @@ -0,0 +1,63 @@ +# +# this config file was automatically generated +# using lirc-0.6.2 on Sat Jan 6 20:54:24 2001 +# +# contributed by Miguel Angel Alvarez +# +# brand: BESTBUY +# model: Easy TV (BT848) +# supported devices: +# + +begin remote + + name BESTBUY + bits 5 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 3 + pre_data 0x0 +# gap 149990 + gap 199989 + toggle_bit 2 + + + begin codes + 0 0x0000000000000000 + 1 0x0000000000000001 + 2 0x0000000000000002 + 3 0x0000000000000003 + 4 0x0000000000000004 + 5 0x0000000000000005 + 6 0x0000000000000006 + 7 0x0000000000000007 + 8 0x0000000000000008 + 9 0x0000000000000009 + TV 0x000000000000001C + POWER 0x0000000000000012 + VIDEO 0x0000000000000011 + PREVIEW 0x000000000000000F + MUTE 0x0000000000000013 + SCAN 0x0000000000000010 + CHANNEL_UP 0x000000000000001A + CHANNEL_DOWN 0x000000000000001E + VOL_UP 0x000000000000001B + VOL_DOWN 0x000000000000001F + LOOP 0x000000000000000A + 100 0x0000000000000017 + ZOOM 0x000000000000000D + RECORD 0x000000000000000E + STOP 0x000000000000001D + PLAY 0x0000000000000019 + FREEZE 0x0000000000000016 + COLOR 0x0000000000000014 + LEFT 0x0000000000000018 + RIGHT 0x000000000000000C + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy2 b/abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy2 new file mode 100644 index 0000000..77e87e3 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/bestbuy/lircd.conf.bestbuy2 @@ -0,0 +1,59 @@ +# +# this config file was automatically generated +# using lirc-0.6.3(bestbuy2) on Mon Apr 16 19:31:28 2001 +# +# contributed by Miguel Angel Alvarez +# +# brand: BESTBUY +# model: EASY TV (BT878) +# supported devices: +# + +begin remote + + name BESTBUY + bits 7 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 1 + pre_data 0x0 + gap 199981 + toggle_bit 0 + + + begin codes + TV/FM 0x0000000000000043 + SCAN 0x0000000000000047 + ZOOM 0x000000000000005C + POWER 0x000000000000005E + 1 0x0000000000000041 + 2 0x000000000000004B + 3 0x000000000000005B + VOL+ 0x000000000000005F + 4 0x0000000000000045 + 5 0x0000000000000049 + 6 0x0000000000000055 + VOL- 0x0000000000000057 + 7 0x0000000000000046 + 8 0x000000000000004A + 9 0x0000000000000052 + CH+ 0x0000000000000056 + 0 0x0000000000000042 + LOOP 0x0000000000000053 + +100 0x0000000000000050 + CH- 0x0000000000000054 + SOURCE 0x0000000000000040 + MUTE 0x0000000000000058 + - 0x0000000000000044 + FUNCTION 0x000000000000004E + + 0x000000000000004C + RESET 0x000000000000004D + FREEZE 0x000000000000004F + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy b/abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy new file mode 100644 index 0000000..e57d11f --- /dev/null +++ b/abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy @@ -0,0 +1,33 @@ +# +# lircmd config file +# + +PROTOCOL IntelliMouse + +# ACCELERATOR start max multiplier + +ACCELERATOR 2 30 5 + +ACTIVATE * RESERVED + +MOVE_N * 2 +MOVE_NE * 3 +MOVE_E * 6 +MOVE_SE * 9 +MOVE_S * 8 +MOVE_SW * 7 +MOVE_W * 4 +MOVE_NW * 1 +MOVE_IN * CHANNEL_UP +MOVE_OUT * CHANNEL_DOWN + +BUTTON1_TOGGLE * 5 +BUTTON1_TOGGLE * ZOOM +BUTTON2_TOGGLE * RECORD +BUTTON3_TOGGLE * STOP + +BUTTON1_CLICK * POWER +BUTTON2_CLICK * TV +BUTTON3_CLICK * SCAN + +# BUTTONx_CLICK, BUTTONx_UP, BUTTONx_DOWN are also possible diff --git a/abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy2 b/abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy2 new file mode 100644 index 0000000..c515058 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/bestbuy/lircmd.conf.bestbuy2 @@ -0,0 +1,34 @@ +# +# lircmd config file +# + +#PROTOCOL IntelliMouse +PROTOCOL MouseSystems + +# ACCELERATOR start max multiplier + +ACCELERATOR 2 30 5 + +ACTIVATE * PLAY + +MOVE_N * 2 +MOVE_NE * 3 +MOVE_E * 6 +MOVE_SE * 9 +MOVE_S * 8 +MOVE_SW * 7 +MOVE_W * 4 +MOVE_NW * 1 +MOVE_IN * CH+ +MOVE_OUT * CH- + +BUTTON1_TOGGLE * 5 +BUTTON1_TOGGLE * FUNCTION +BUTTON2_TOGGLE * - +BUTTON3_TOGGLE * + + +BUTTON1_CLICK * TV/FM +BUTTON2_CLICK * SCAN +BUTTON3_CLICK * ZOOM + +# BUTTONx_CLICK, BUTTONx_UP, BUTTONx_DOWN are also possible diff --git a/abs/core/system-templates/templates/remotes/bestbuy/preview.jpg b/abs/core/system-templates/templates/remotes/bestbuy/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/bestbuy/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/caraca/lircd.conf.caraca b/abs/core/system-templates/templates/remotes/caraca/lircd.conf.caraca new file mode 100644 index 0000000..c1a0fa1 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/caraca/lircd.conf.caraca @@ -0,0 +1,46 @@ +# +# +# contributed by Konrad Riedel +# +# brand: CARACA +# model: RC5 Remote Control +# +# supported devices: +# CARACA nodes - see http://caraca.sourceforge.net +# first byte: node address +# 2nd byte: ir code +# + +begin remote + + name Caraca + bits 16 + + begin codes + POWER 0x3ff3 + 1 0x3ffe + 2 0x3ffd + 3 0x3ffc + 4 0x3ffb + 5 0x3ffa + 6 0x3ff9 + 7 0x3ff8 + 8 0x3ff7 + 9 0x3ff6 + 0 0x3ff5 + PAUSE 0x3fcf + EJECT 0x3fe2 + SEEK- 0x3fcd + PLAY 0x3fca + SEEK+ 0x3fcb + RECORD 0x3fd2 + STOP 0x3fc9 + CH- 0x3fde + CH+ 0x3fdf + VOL- 0x3fee + VOL+ 0x3fef + MUTE 0x3ff2 + TV/FM 0x3fe3 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/caraca/lircrc.caraca b/abs/core/system-templates/templates/remotes/caraca/lircrc.caraca new file mode 100644 index 0000000..6baf5e4 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/caraca/lircrc.caraca @@ -0,0 +1,134 @@ +# +# This is an example of ~/.lircrc file +# It is a copy of actual setup from my home machine. +# Contributed by Konrad Riedel +# +begin + prog = irexec + button = tv/fm + config = xawtv -geometry +64+64 & + mode = tv + flags = once +end + +begin tv + begin + prog = xawtv + button = power + config = quit + flags = mode + end + begin + prog = xawtv + button = source + repeat = 1 + config = setinput next + end + begin + prog = xawtv + button = zoom + repeat = 1 + config = fullscreen + end + begin + prog = xawtv + button = ch- + repeat = 1 + config = setstation prev + end + begin + prog = xawtv + button = ch+ + repeat = 1 + config = setstation next + end + begin + prog = xawtv + button = record + repeat = 1 + #config = snap jpeg + config = quit + end + begin + prog = xawtv + button = scan + repeat = 1 + config = Key ctrl-z xawtv + end + begin + prog = xawtv + button = MUTE + config = volume mute + end +end tv +begin + prog = irexec + button = power + config = xmms& + mode = xmms + flags = once +end + +begin xmms + begin + prog = xmms + button = play + config = PLAY + end + begin + prog = xmms + button = pause + config = PAUSE + end + begin + prog = xmms + button = stop + config = STOP + end + begin + prog = xmms + button = vol- + repeat = 1 + config = VOL_DOWN + end + begin + prog = xmms + button = vol+ + repeat = 1 + config = VOL_UP + end + + begin + prog = xmms + button = power + config = QUIT + flags = mode + end + begin + prog = xmms + button = mute + config = MUTE + end + begin + prog = xmms + button = seek+ + repeat = 1 + config = FWD + end + begin + prog = xmms + button = seek- + repeat = 1 + config = BWD + end + begin + prog = xmms + button = ch+ + config = NEXT + end + begin + prog = xmms + button = ch- + config = PREV + end +end xmms diff --git a/abs/core/system-templates/templates/remotes/caraca/preview.jpg b/abs/core/system-templates/templates/remotes/caraca/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/caraca/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/dvico/lircd.conf.fusionHDTV b/abs/core/system-templates/templates/remotes/dvico/lircd.conf.fusionHDTV new file mode 100644 index 0000000..7f03ba1 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/dvico/lircd.conf.fusionHDTV @@ -0,0 +1,226 @@ +# +# contributed by Chris Pascoe +# +# brand: DVICO +# model no. of remote control: DVB-T +# devices being controlled by this remote: +# + +begin remote + + name DVICO + bits 32 + eps 0 + aeps 0 + + one 0 0 + zero 0 0 + pre_data_bits 32 + pre_data 0x10046 + gap 195755 + post_data_bits 0 + toggle_bit 0 + + begin codes + 1 0x00000000000011F9 + 2 0x00000000000012F9 + 3 0x00000000000013F9 + 4 0x00000000000014F9 + 5 0x00000000000015F9 + 6 0x00000000000016F9 + 7 0x00000000000017F9 + 8 0x00000000000018F9 + 9 0x00000000000019F9 + 0 0x00000000000010F9 + power 0x0000000000000AF9 + pcoff 0x0000000000000CF9 + camera 0x0000000000001AF9 + record 0x0000000000001BF9 + chup 0x00000000000000F9 + chdown 0x00000000000001F9 + volup 0x00000000000002F9 + voldown 0x00000000000003F9 + playpause 0x0000000000001FF9 + rew 0x0000000000001CF9 + stop 0x0000000000001EF9 + ff 0x0000000000001DF9 + folder 0x00000000000040F9 + atvdtv 0x00000000000006F9 + dvhs 0x00000000000041F9 + menu 0x00000000000008F9 + aspect 0x00000000000007F9 + zoom 0x00000000000004F9 + epg 0x0000000000000BF9 + mute 0x0000000000000DF9 + back 0x0000000000000EF9 + hd 0x0000000000000FF9 + red 0x00000000000005F9 + green 0x00000000000009F9 + yellow 0x00000000000042F9 + blue 0x00000000000043F9 + end codes + +end remote + +# +# this config file was automatically generated +# using lirc-0.7.0(dvico) on Sat Jun 18 00:56:01 2005 +# +# contributed by anonymous +# +# brand: DVICO +# model no. of remote control: MCE Remote +# + +begin remote + + name DVICO_MCE + bits 32 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x0 + post_data_bits 8 + post_data 0x0 + gap 195956 + toggle_bit 0 + + + begin codes + ok 0x0000000000FE5E00 + dtv 0x0000000000FE0200 + mp3 0x0000000000FE0E00 + dvd 0x0000000000FE1A00 + cpf 0x0000000000FE1E00 + setup 0x0000000000FE1600 + tv_onoff 0x0000000000FE4600 + guide 0x0000000000FE0A00 + back 0x0000000000FE4900 + more 0x0000000000FE5900 + dvd_menu 0x0000000000FE4D00 + alt_tab 0x0000000000FE5500 + replay 0x0000000000FE0F00 + skip 0x0000000000FE1200 + up 0x0000000000FE5100 + down 0x0000000000FE5300 + left 0x0000000000FE5B00 + right 0x0000000000FE5F00 + start 0x0000000000FE4200 + vol_up 0x0000000000FE1500 + vol_down 0x0000000000FE0500 + ch_up 0x0000000000FE1100 + ch_down 0x0000000000FE0900 + snapshot 0x0000000000FE5200 + live 0x0000000000FE5A00 + folder_open 0x0000000000FE1900 + 1 0x0000000000FE0B00 + 2 0x0000000000FE1700 + 3 0x0000000000FE1B00 + 4 0x0000000000FE0700 + 5 0x0000000000FE5000 + 6 0x0000000000FE5400 + 7 0x0000000000FE4800 + 8 0x0000000000FE4C00 + 9 0x0000000000FE5800 + 0 0x0000000000FE0300 + aspect 0x0000000000FE1300 + fullscreen 0x0000000000FE1F00 + rewind 0x0000000000FE4300 + playpause 0x0000000000FE4700 + fastforward 0x0000000000FE4F00 + stop 0x0000000000FE0D00 + mute 0x0000000000FE5700 + record 0x0000000000FE0100 + white_onoff 0x0000000000FE4E00 + end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.3-CVS(dvico) on Thu Sep 1 21:36:06 2005 +# +# contributed by: David Bussenschutt +# +# brand: "DViCO" +# model no. of remote control: "Fusion Remote MCE" +# devices being controlled by this remote: My MythTV install +# + +begin remote + + name DVICO_MCE + bits 8 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 48 + pre_data 0x100460000 + post_data_bits 8 + post_data 0xFE + gap 195843 + toggle_bit 0 + + + begin codes + ok 0x5e + up 0x51 + down 0x53 + left 0x5B + right 0x5F + setup 0x16 + tv_onoff 0x46 + guide 0x0A + dtv 0x02 + mp3 0x0E + dvd 0x1A + cpf 0x1E + back 0x49 + more 0x59 + dvd_menu 0x4D + alt_tab 0x55 + replay 0x0F + skip 0x12 + start 0x42 + vol_up 0x15 + vol_down 0x05 + ch_up 0x11 + ch_down 0x09 + photo 0x52 + live 0x5A + folder 0x19 + 1 0x0B + 2 0x17 + 3 0x1B + 4 0x07 + 5 0x50 + 6 0x54 + 7 0x48 + 8 0x4C + 9 0x58 + 0 0x03 + ratio 0x13 + zoom 0x1F + rew 0x43 + playpause 0x47 + ff 0x4F + mute 0x57 + stop 0x0D + rec 0x01 + power_onoff 0x4e + phantom1 0x7b + phantom2 0x6b + phantom3 0x77 + phantom4 0x4b + phantom5 0x3b + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/dvico/lircrc.txt b/abs/core/system-templates/templates/remotes/dvico/lircrc.txt new file mode 100644 index 0000000..283ac05 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/dvico/lircrc.txt @@ -0,0 +1,883 @@ +# ~/.mythtv/lircrc +# +# MythTV native LIRC config file for +# the Fustion +# + +begin + #Jumppoint for DVD playback created in Mythweb + prog = mythtv + button = dvd + config = @ +end + +begin + #Jumppoint for MythWeater created in Mythweb + prog = mythtv + button = start + config = # +end + +begin + #Jumppoint for MythVideo created in Mythweb + prog = mythtv + button = cpf + config = $ +end + +begin + prog = mythtv + #Jumppoint for LiveTV created in Mythweb + button = dtv + config = ^ +end + +begin + prog = mythtv + #Jumppoint for Music created in Mythweb + button = mp3 + config = F8 +end + +begin + prog = mythtv + button = 1 + config = 1 + repeat = 5 +end + +begin + prog = mythtv + button = 2 + config = 2 + repeat = 5 +end + +begin + prog = mythtv + button = 3 + config = 3 + repeat = 5 +end + +begin + prog = mythtv + button = 4 + config = 4 + repeat = 5 +end + +begin + prog = mythtv + button = 5 + config = 5 + repeat = 5 +end + +begin + prog = mythtv + button = 6 + config = 6 + repeat = 5 +end + +begin + prog = mythtv + button = 7 + config = 7 + repeat = 5 +end + +begin + prog = mythtv + button = 8 + config = 8 + repeat = 5 +end + +begin + prog = mythtv + button = 9 + config = 9 + repeat = 5 +end + +begin + prog = mythtv + button = 0 + config = 0 + repeat = 5 +end + +begin + prog = mythtv + button = camera + config = A +end + +begin + prog = mythtv + button = up + config = Up +end + +begin + prog = mythtv + button = chup + config = Up + repeat = 2 +end + +begin + prog = mythtv + button = down + config = Down +end + +begin + prog = mythtv + button = chdown + config = Down + repeat = 2 +end + +begin + prog = mythtv + button = left + config = Left +end + +begin + prog = mythtv + button = voldown + config = Left + repeat = 2 +end + +begin + prog = mythtv + button = right + config = Right +end + +begin + prog = mythtv + button = volup + config = Right + repeat = 2 +end + +begin + prog = mythtv + button = replay + config = Left +end + +begin + prog = mythtv + button = skip + config = Right +end + +begin + prog = mythtv + button = back + config = Esc +end + +# Enter button +begin + prog = mythtv + button = ok + config = Return +end + +begin + prog = mythtv + button = playpause + config = Return +end + +begin + prog = mythtv + button = tv_onoff + config = Esc +end + +begin + prog = mythtv + button = power + config = Esc +end + +begin + prog = mythtv + button = ch_up + config = Up +end + +begin + prog = mythtv + button = ch_down + config = Down +end + +begin + prog = mythtv + button = vol_down + repeat = 3 + config = F10 +end + +begin + prog = mythtv + button = yellow + repeat = 3 + config = F10 +end + +begin + prog = mythtv + button = vol_up + repeat = 3 + config = F11 +end + +begin + prog = mythtv + button = blue + repeat = 3 + config = F11 +end + +begin + prog = mythtv + button = more + config = I +end + +begin + prog = mythtv + button = green + config = I +end + +begin + prog = mythtv + button = red + config = D +end + +begin + prog = mythtv + button = ff + config = > + repeat = 2 +end + +begin + prog = mythtv + button = rew + config = < + repeat = 2 +end + +begin + prog = mythtv + button = power_onoff + config = Y +end + +begin + prog = mythtv + button = live + config = C +end + +########### Start Of TV ############# + +#Jumppoint for Program Guide created in Mythweb +begin + prog = mythtv + button = guide + config = S +end + +begin + prog = mythtv + button = epg + config = S +end + +begin + prog = mythtv + button = dvd_menu + config = M +end + +begin + prog = mythtv + button = menu + config = M +end + +begin + prog = mythtv + button = ratio + config = W +end + +begin + prog = mythtv + button = rec + config = R +end + +begin + prog = mythtv + button = record + config = R +end + +begin + prog = mythtv + button = alt_tab + # Use for forward commercial skip + config = Z +end + +begin + prog = mythtv + button = folder + # Use for Teletext + config = T +end + +########### Start Of Music ############# + +begin + # Mute for MythMusic + prog = mythtv + button = mute + config = | +end + +begin + prog = mythtv + button = DVD_ROOTMENU + config = M +end + +begin + prog = mythtv + # Enter button + button = SETUP + config = Return +end + +begin + prog = mythtv + button = A + config = S +end + +begin + prog = mythtv + button = B + config = I +end + +begin + prog = mythtv + button = C + config = T +end + +begin + prog = mythtv + # Change focus for PiP (to change channel in the other window) + button = MAXAMIZE + config = B +end + +begin + prog = mythtv + # Toggle PiP on/off + button = TV_ON_DEMAND + config = V +end + +begin + prog = mythtv + button = BACK + config = < +end + +begin + prog = mythtv + button = NEXT + config = > +end + +begin + prog = mythtv + button = BACK + config = Left +end + + +begin + prog = mythtv + button = NEXT + config = Right +end + +begin + prog = mythtv + button = RECCORD + config = R +end + +begin + prog = mythtv + button = STOP + config = P +end + +begin + prog = mythtv + button = PLAY + config = P +end + +begin + prog = mythtv + button = PAUSE + config = P +end + +#Page Up/Down +begin + prog = mythtv + button = E + config = PgUp +end + +begin + prog = mythtv + button = F + config = PgDown +end + +begin + prog = mythtv + button = E + # Use for backwards commercial skip + config = Q +end + +begin + prog = mythtv + button = F + # Use for forward commercial skip + config = Z +end + +#Mplayer + +begin + prog = mplayer + button = PLAY + config = pause +end + +begin + prog = mplayer + button = PAUSE + config = pause +end + +begin + prog = mplayer + button = STOP + config = pause +end + +begin + prog = mplayer + button = POWER + config = quit +end + +begin + prog = mplayer + button = D + config = quit +end + +begin + prog = mplayer + button = MOUSE_RIGHT_BTN + config = quit +end + +begin + prog = mplayer + button = MUTE + config = mute +end + +begin + prog = mplayer + button = E + repeat = 6 + config = seek -10 +end + +begin + prog = mplayer + button = F + repeat = 6 + config = seek 10 +end + +begin + prog = mplayer + button = Left + repeat = 6 + config = seek -70 +end + +begin + prog = mplayer + button = chup + repeat = 6 + config = seek -70 +end + +begin + prog = mplayer + button = Right + repeat = 6 + config = seek 70 +end + +begin + prog = mplayer + button = chdown + repeat = 6 + config = seek 70 +end + +begin + prog = mplayer + button = ch_up + config = seek 10 +end + +begin + prog = mplayer + button = volup + config = seek 10 +end + +begin + prog = mplayer + button = ch_down + config = seek -10 +end + +begin + prog = mplayer + button = voldown + config = seek -10 +end + +begin + prog = mplayer + button = vol_down + repeat = 6 + config = volume -1 +end + +begin + prog = mplayer + button = yellow + repeat = 6 + config = volume -1 +end + +begin + prog = mplayer + button = vol_up + repeat = 6 + config = volume 1 +end + +begin + prog = mplayer + button = blue + repeat = 6 + config = volume 1 +end + +begin + prog = mplayer + button = 1 + config = 1 + repeat = 5 +end + +begin + prog = mplayer + button = 2 + config = 2 + repeat = 5 +end + +begin + prog = mplayer + button = 3 + config = 3 + repeat = 5 +end + +begin + prog = mplayer + button = 4 + config = 4 + repeat = 5 +end + + +begin + prog = mplayer + button = 5 + config = 5 + repeat = 5 +end + +begin + prog = mplayer + button = 6 + config = 6 + repeat = 5 +end + +begin + prog = mplayer + button = 7 + config = 7 + repeat = 5 +end + +begin + prog = mplayer + button = 8 + config = 8 + repeat = 5 +end + +begin + prog = mplayer + button = 9 + config = 9 + repeat = 5 +end + +begin + prog = mplayer + button = 0 + config = 0 + repeat = 5 +end + + +#Xine + +begin + prog = xine + button = PLAY + config = Play +end + +begin + prog = xine + button = PAUSE + config = PAUSE +end + +begin + prog = xine + button = STOP + config = Stop +end + +begin + prog = xine + button = POWER + config = Quit +end + +begin + prog = xine + button = D + config = quit +end + +begin + prog = xine + button = MOUSE_RIGHT_BTN + config = quit +end + +begin + prog = xine + button = ARROW_UP + repeat = 4 + config = EventUp +end + +begin + prog = xine + button = ARROW_DOWN + repeat = 4 + config = EventDown +end + +begin + prog = xine + button = ARROW_LEFT + repeat = 4 + config = EventLeft +end + +begin + prog = xine + button = ARROW_RIGHT + repeat = 4 + config = EventRight +end + +begin + prog = xine + button = OK + repeat = 0 + config = EventSelect +end + +begin + prog = xine + button = MOUSE_UP + repeat = 4 + config = EventUp +end + +begin + prog = xine + button = MOUSE_DOWN + repeat = 4 + config = EventDown +end + +begin + prog = xine + button = MOUSE_LEFT + repeat = 4 + config = EventLeft +end + +begin + prog = xine + button = MOUSE_RIGHT + repeat = 4 + config = EventRight +end + +begin + prog = xine + button = MOUSE_LEFT_BTN + repeat = 0 + config = EventSelect +end + +begin + prog = xine + button = DVD_ROOTMENU + repeat = 0 + config = Menu +end + +#vol down +begin + prog = xine + button = VOL_DOWN + repeat = 1 + config = Volume- +end + +begin + prog = xine + button = yellow + repeat = 1 + config = Volume- +end + +#vol up +begin + prog = xine + button = VOL_UP + repeat = 1 + config = Volume+ +end + +begin + prog = xine + button = blue + repeat = 1 + config = Volume+ +end + +begin + prog = xine + button = TV_ON_DEMAND + repeat = 1 + config = ZoomIn +end + +begin + prog = xine + button = MAXAMIZE + repeat = 1 + config = ZoomOut +end + +#skip chapter forward +begin + prog = xine + button = NEXT + repeat = 1 + config = EventNext +end + +#skip chapter backward +begin + prog = xine + button = BACK + repeat = 1 + config = EventPrior +end + +begin + prog = xine + button = F + repeat = 2 + config = SeekRelative+45 +end + +begin + prog = xine + button = E + repeat = 2 + config = SeekRelative-45 +end diff --git a/abs/core/system-templates/templates/remotes/dvico/preview.jpg b/abs/core/system-templates/templates/remotes/dvico/preview.jpg new file mode 100644 index 0000000..1ec179d Binary files /dev/null and b/abs/core/system-templates/templates/remotes/dvico/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/generic/DENON.conf b/abs/core/system-templates/templates/remotes/generic/DENON.conf new file mode 100644 index 0000000..e645cba --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/DENON.conf @@ -0,0 +1,31 @@ +# +# generic Denon config file +# +# source: various +# +# used by: Denon, Sharp + +begin remote + + name DENON + bits 15 + flags SPACE_ENC + eps 30 + aeps 100 + + one 275 1900 + zero 275 775 + ptrail 275 + gap 43000 + repeat_bit 0 + +# frequency 32000 +# frequency is 455/12 according to stewart@neuron.com +# remote is based on Sharp lc3715 IC + frequency 38000 +# duty_cycle unknown + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/MOTOROLA.conf b/abs/core/system-templates/templates/remotes/generic/MOTOROLA.conf new file mode 100644 index 0000000..e786f2b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/MOTOROLA.conf @@ -0,0 +1,53 @@ +# +# generic Motorola config file +# +# source: Motorola Application Note AN463 +# ICs 68HC05K0/MC144105/MC144107 +# +# used by Grundig +# +# currently you have to create config files for such remotes manually +# as irrecord always will record the start code + +begin remote + + name MOTOROLA_START/STOP + flags SHIFT_ENC|CONST_LENGTH + bits 10 + eps 10 + aeps 250 + + header 512 2560 + one 512 512 + zero 512 512 + gap 32800 + repeat_bit 0 + frequency 32000 + duty_cycle 25 + + begin codes + START/STOP 0x0000000000000000 + end codes + +end remote + +begin remote + + name MOTOROLA + flags SHIFT_ENC|CONST_LENGTH + bits 10 + eps 10 + aeps 250 + + header 512 2560 + one 512 512 + zero 512 512 + gap 131000 + repeat_bit 0 + frequency 32000 + duty_cycle 25 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/NEC-pulse.conf b/abs/core/system-templates/templates/remotes/generic/NEC-pulse.conf new file mode 100644 index 0000000..51c31d9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/NEC-pulse.conf @@ -0,0 +1,32 @@ +# +# generic NEC config file +# +# source: CIrCC datasheet, exiting config files +# +# used by: Toshiba + +begin remote + + name NEC + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9000 4500 + one 563 1687 + zero 563 562 + ptrail 563 + pre_data_bits 16 +# just a guess + gap 108000 + + repeat 9000 4500 + + frequency 38000 + duty_cycle 33 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/NEC-short-pulse.conf b/abs/core/system-templates/templates/remotes/generic/NEC-short-pulse.conf new file mode 100644 index 0000000..068c253 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/NEC-short-pulse.conf @@ -0,0 +1,34 @@ +# +# generic NEC config file +# +# source: CIrCC datasheet, exiting config files +# +# used by: Akai, Amstrad, Eltasat, Hitachi, ITT, Kenwood, Onkyo, +# Sanyo, Schneider, SEG, Yamaha + + +begin remote + + name NEC + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9000 4500 + one 563 1687 + zero 563 562 + ptrail 563 + pre_data_bits 16 +# just a guess + gap 108000 + + repeat 9000 2250 + + frequency 38000 + duty_cycle 33 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/NEC.conf b/abs/core/system-templates/templates/remotes/generic/NEC.conf new file mode 100644 index 0000000..18ee327 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/NEC.conf @@ -0,0 +1,30 @@ +# +# generic NEC config file +# +# source: CIrCC datasheet, exiting config files +# +# used by: Canon, Creative, Domland, Orion + +begin remote + + name NEC + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9000 4500 + one 563 1687 + zero 563 562 + ptrail 563 + pre_data_bits 16 +# just a guess + gap 108000 + + frequency 38000 + duty_cycle 33 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/RC-5.conf b/abs/core/system-templates/templates/remotes/generic/RC-5.conf new file mode 100644 index 0000000..f62e3f9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/RC-5.conf @@ -0,0 +1,30 @@ +# +# generic RC-5 config file +# +# source: SAA3010 datasheet +# +# used by: Philips, Marantz, Anitech, Elitron, Grundig, Schneider + +begin remote + + name RC-5 + bits 6 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 889 889 + zero 889 889 + plead 889 + pre_data_bits 7 + gap 113792 + toggle_bit 2 + +# frequency 35750 + frequency 36000 + duty_cycle 50 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/RC-6.conf b/abs/core/system-templates/templates/remotes/generic/RC-6.conf new file mode 100644 index 0000000..9565707 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/RC-6.conf @@ -0,0 +1,28 @@ +# +# generic RC-6 config file +# +# source: http://home.hccnet.nl/m.majoor/projects__remote_control.htm +# http://home.hccnet.nl/m.majoor/pronto.pdf +# +# used by: Philips + +begin remote + + name RC-6 + bits 8 + flags RC6|CONST_LENGTH + eps 30 + aeps 100 + + header 2667 889 + one 444 444 + zero 444 444 + pre_data_bits 13 + pre_data 0xEFB + gap 108000 + toggle_bit 5 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/RCMM-32.conf b/abs/core/system-templates/templates/remotes/generic/RCMM-32.conf new file mode 100644 index 0000000..89f847a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/RCMM-32.conf @@ -0,0 +1,23 @@ +begin remote + + name RCMM-32 + bits 32 + flags RCMM|CONST_LENGTH + eps 2 + aeps 100 + + header 417 278 + three 167 778 + two 167 611 + one 167 444 + zero 167 278 + ptrail 167 + pre_data_bits 0 + gap 99817 + repeat_bit 0 + + begin codes + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/generic/RECS80.conf b/abs/core/system-templates/templates/remotes/generic/RECS80.conf new file mode 100644 index 0000000..b9702ea --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/RECS80.conf @@ -0,0 +1,31 @@ +# +# generic RECS 80 config file +# +# source: SAA3008 datasheet +# +# used by: Saba, Technisat + +begin remote + + name RECS80 + bits 5 + flags SPACE_ENC|CONST_LENGTH + eps 20 + aeps 150 + + one 141 7590 + zero 141 5090 + ptrail 141 + pre_data_bits 6 + pre_data 0x22 + gap 121440 + toggle_bit 2 + +# frequency 37916 + frequency 38000 + duty_cycle 33 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/SANYO.conf b/abs/core/system-templates/templates/remotes/generic/SANYO.conf new file mode 100644 index 0000000..fbcf8dc --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/SANYO.conf @@ -0,0 +1,34 @@ +# +# generic Sanyo config file +# +# source: CIrCC datasheet, exiting config files +# Sanyo LC7461M datasheet +# +# used by: Aiwa, Chinon, Sanyo + +begin remote + + name Sanyo + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9000 4500 + one 563 1687 + zero 563 562 + ptrail 563 + pre_data_bits 26 +# just a guess + gap 108000 + + repeat 9000 4500 + +# 455kHz/12 + frequency 37916 + duty_cycle 33 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/SONY12.conf b/abs/core/system-templates/templates/remotes/generic/SONY12.conf new file mode 100644 index 0000000..d62d12c --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/SONY12.conf @@ -0,0 +1,28 @@ +# +# generic Sony 12-bit config file +# +# source: various +# + +begin remote + + name SONY + bits 7 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 2400 600 + one 1200 600 + zero 600 600 + post_data_bits 5 + gap 45000 + min_repeat 2 + + frequency 40000 + duty_cycle 33 + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/generic/SONY20.conf b/abs/core/system-templates/templates/remotes/generic/SONY20.conf new file mode 100644 index 0000000..4a64ca7 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/generic/SONY20.conf @@ -0,0 +1,29 @@ +# +# generic Sony 20-bit config file +# +# source: various +# + +begin remote + + name SONY + bits 7 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 2400 600 + one 1200 600 + zero 600 600 + post_data_bits 13 +# gap is just a guess + gap 45000 + min_repeat 2 + + frequency 40000 +# duty_cycle unknown + + begin codes + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/gr8zap/lircd.conf.streamzap b/abs/core/system-templates/templates/remotes/gr8zap/lircd.conf.streamzap new file mode 100644 index 0000000..8e453b9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/gr8zap/lircd.conf.streamzap @@ -0,0 +1,69 @@ +# +# this config file was automatically generated +# using lirc-0.7.1-CVS(serial) on Fri Feb 4 23:20:56 2005 +# +# contributed by Christoph Bartelmus +# +# brand: Streamzap +# model no. of remote control: PC Remote +# devices being controlled by this remote: USB receiver +# + +begin remote + + name Streamzap_PC_Remote + bits 6 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 889 889 + zero 889 889 + plead 889 + pre_data_bits 8 + pre_data 0xA3 + gap 108344 + toggle_bit 2 + + + begin codes + 0 0x00 + 1 0x01 + 2 0x02 + 3 0x03 + 4 0x04 + 5 0x05 + 6 0x06 + 7 0x07 + 8 0x08 + 9 0x09 + POWER 0x0A + MUTE 0x0B + CH_UP 0x0C + VOL_UP 0x0D + CH_DOWN 0x0E + VOL_DOWN 0x0F + UP 0x10 + LEFT 0x11 + OK 0x12 + RIGHT 0x13 + DOWN 0x14 + MENU 0x15 + EXIT 0x16 + PLAY 0x17 + PAUSE 0x18 + STOP 0x19 + |<< 0x1A + >>| 0x1B + RECORD 0x1C + << 0x1D + >> 0x1E + RED 0x20 + GREEN 0x21 + YELLOW 0x22 + BLUE 0x23 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/gr8zap/lircrc b/abs/core/system-templates/templates/remotes/gr8zap/lircrc new file mode 100644 index 0000000..6f86bfe --- /dev/null +++ b/abs/core/system-templates/templates/remotes/gr8zap/lircrc @@ -0,0 +1,472 @@ +# StreamZap Remote +# 'config' must either be a literal key, e.g. 'config = l' or must +# refer to a defined key in MythTV, e.g. 'config = PLAY' +begin + prog = mythtv + button = 0 + config = 0 +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 = POWER + config = Esc +end + +# ??? +begin + prog = mythtv + button = MUTE + config = F9 +end + +begin + prog = mythtv + button = CH_UP + repeat = 3 + config = Up +end + +begin + prog = mythtv + button = VOL_UP + repeat = 3 + config = ] +end + +begin + prog = mythtv + button = CH_DOWN + repeat = 3 + config = Down +end + +begin + prog = mythtv + button = VOL_DOWN + repeat = 3 + config = [ +end + +begin + prog = mythtv + button = UP + repeat = 3 + config = Up +end + +begin + prog = mythtv + button = LEFT +# navigates, or skips back during playback or live tv. + config = Left +end + +begin + prog = mythtv + button = OK + config = Return +end + +begin + prog = mythtv + button = RIGHT +# navigates, or skips forwards during playback or live tv. + config = Right +end + +begin + prog = mythtv + button = DOWN + repeat = 3 + config = Down +end + +begin + prog = mythtv + button = MENU + config = m +end + +begin + prog = mythtv + button = EXIT + config = Esc +end + +begin + prog = mythtv + button = PLAY + config = l +end + +begin + prog = mythtv + button = PAUSE + config = p +end + +begin + prog = mythtv + button = STOP + config = Esc +end + +begin + prog = mythtv + # skip backward + button = |<< + config = PgUp +end + +begin + prog = mythtv + # skip forward + button = >>| + config = PgDown +end + +begin + prog = mythtv + button = RECORD + config = r +end + +begin + prog = mythtv + # rewind + button = << + config = < +end + +begin + prog = mythtv + # fast forward + button = >> + config = > +end + +begin + prog = mythtv + button = RED + # Delete + config = z +end + +begin + prog = mythtv + button = GREEN + # Info + config = i +end + +begin + prog = mythtv + button = YELLOW + # change aspect ratio + config = w +end + +begin + prog = mythtv + button = BLUE + config = Tab +end + +# MPLAYER +begin + prog = mplayer + button = POWER + config = quit +end + +begin + prog = mplayer + button = MUTE + config = mute +end + +begin + prog = mplayer + button = VOL_UP + repeat = 3 + config = volume +1 +end + +begin + prog = mplayer + button = VOL_DOWN + repeat = 3 + config = volume -1 +end + +begin + prog = mplayer + button = UP + repeat = 3 + config = seek +10 +end + +begin + prog = mplayer + button = LEFT +# navigates, or skips back during playback or live tv. + config = seek -30 +end + +begin + prog = mplayer + button = RIGHT +# navigates, or skips forwards during playback or live tv. + config = seek +60 +end + +begin + prog = mplayer + button = DOWN + repeat = 3 + config = seek -10 +end + +begin + prog = mplayer + button = EXIT + config = quit +end + +begin + prog = mplayer + button = play + config = speed_set 1.0 +end + +begin + prog = mplayer + button = pause + config = pause +end + +begin + prog = mplayer + button = STOP + config = quit +end + +begin + prog = mplayer + # skip backward + button = |<< + config = seek -600 +end + +begin + prog = mplayer + # skip forward + button = >>| + config = seek +600 +end + +begin + prog = mplayer + # slow forward + button = << + config = speed_mult 0.5 +end + +begin + prog = mplayer + # fast forward + button = >> + config = speed_mult 2.0 +end + +### Xine lirc setup By AnDy! + +begin +prog = xine +button = PLAY +repeat = 3 +config = Play +end + +begin +prog = xine +button = STOP +repeat = 3 +config = Stop +end + +begin +prog = xine +button = PAUSE +repeat = 3 +config = Pause +end + +begin +prog = xine +button = UP +repeat = 3 +config = EventUp +end + +begin +prog = xine +button = DOWN +repeat = 3 +config = EventDown +end + +begin +prog = xine +button = LEFT +repeat = 3 +config = EventLeft +end + +begin +prog = xine +button = RIGHT +repeat = 3 +config = EventRight +end + +begin +prog = xine +button = OK +repeat = 3 +config = EventSelect +end + +begin +prog = xine +button = EXIT +repeat = 3 +config = Menu +end + +begin +prog = xine +button = >> +repeat = 3 +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = << +repeat = 3 +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VOL_UP +repeat = 3 +config = Volume+ +end + +begin +prog = xine +button = VOL_DOWN +repeat = 3 +config = Volume- +end + +begin +prog = xine +button = MUTE +repeat = 3 +config = Mute +end + +begin +prog = xine +button = MENU +repeat = 3 +config = RootMenu +end + +begin +prog = xine +button = >>| +repeat = 3 +config = EventNext +end + +begin +prog = xine +button = |<< +repeat = 3 +config = EventPrior +end + +begin +prog = xine +button = GREEN +repeat = 3 +config = OSDStreamInfos +end + +begin +prog = xine +button = POWER +repeat = 3 +config = Quit +end diff --git a/abs/core/system-templates/templates/remotes/gr8zap/preview.jpg b/abs/core/system-templates/templates/remotes/gr8zap/preview.jpg new file mode 100644 index 0000000..4d1a5fe Binary files /dev/null and b/abs/core/system-templates/templates/remotes/gr8zap/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/hauppauge-black/lircd-haupblack.conf b/abs/core/system-templates/templates/remotes/hauppauge-black/lircd-haupblack.conf new file mode 100755 index 0000000..1733bc1 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-black/lircd-haupblack.conf @@ -0,0 +1,55 @@ +# +# 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 + + diff --git a/abs/core/system-templates/templates/remotes/hauppauge-black/lircrc-haupblack.conf b/abs/core/system-templates/templates/remotes/hauppauge-black/lircrc-haupblack.conf new file mode 100755 index 0000000..312208b --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-black/lircrc-haupblack.conf @@ -0,0 +1,135 @@ +#Hauppauge Black Keys + +#UP + +begin +prog = mythtv +button = CH+ +repeat = 3 +config = Up +end + +#Down + +begin +prog = mythtv +button = CH- +repeat = 3 +config = Down +end + +#Close + +begin +prog = mythtv +button = SOURCE +config = Escape +end + +#Enter + +begin +prog = mythtv +button = FULL_SCREEN +config = W +end + +#Menu + +begin +prog = mythtv +button = MenuUp +repeat = 3 +config = M +end + +begin +prog = mythtv +button = VOL+ +repeat = 3 +config = F11 +end + +begin +prog = mythtv +button = VOL- +repeat = 3 +config = F10 +end + +begin +prog = mythtv +button = TV +repeat = 3 +config = O +end + +begin +prog = mythtv +button = MUTE +config = | +end + +#NUMBERS ALL REMOTES HAVE THEM + +begin +prog = mythtv +button = 0 +config = 0 +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 + + diff --git a/abs/core/system-templates/templates/remotes/hauppauge-black/preview.jpg b/abs/core/system-templates/templates/remotes/hauppauge-black/preview.jpg new file mode 100644 index 0000000..94ffddf Binary files /dev/null and b/abs/core/system-templates/templates/remotes/hauppauge-black/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/hauppauge-blaster/lircd.conf b/abs/core/system-templates/templates/remotes/hauppauge-blaster/lircd.conf new file mode 100644 index 0000000..76e74a1 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-blaster/lircd.conf @@ -0,0 +1,31133 @@ + +# +# 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 blaster + bits 32 + flags RAW_CODES + eps 0 + aeps 0 + plead 0 + gap 333333 + repeat_bit 0 + begin raw_codes + name 0_1_KEY_0 + 65536 + name 0_1_KEY_1 + 65537 + name 0_1_KEY_2 + 65538 + name 0_1_KEY_3 + 65539 + name 0_1_KEY_4 + 65540 + name 0_1_KEY_5 + 65541 + name 0_1_KEY_6 + 65542 + name 0_1_KEY_7 + 65543 + name 0_1_KEY_8 + 65544 + name 0_1_KEY_9 + 65545 + name 0_1_KEY_POWER + 65546 + name 0_1_KEY_MUTE + 65553 + name 0_1_KEY_VOL_DOWN + 65554 + name 0_1_CH_PREVIOUS + 65555 + name 0_1_KEY_VOL_UP + 65556 + name 0_1_KEY_FTUNEPLUS + 65569 + name 0_1_KEY_FTUNEMINUS + 65570 + name 1_1_KEY_0 + 2147549184 + name 1_1_KEY_1 + 2147549185 + name 1_1_KEY_2 + 2147549186 + name 1_1_KEY_3 + 2147549187 + name 1_1_KEY_4 + 2147549188 + name 1_1_KEY_5 + 2147549189 + name 1_1_KEY_6 + 2147549190 + name 1_1_KEY_7 + 2147549191 + name 1_1_KEY_8 + 2147549192 + name 1_1_KEY_9 + 2147549193 + name 1_1_KEY_POWER + 2147549194 + name 1_1_KEY_CH_UP + 2147549199 + name 1_1_KEY_CH_DOWN + 2147549200 + name 1_1_KEY_MUTE + 2147549201 + name 1_1_KEY_VOL_DOWN + 2147549202 + name 1_1_CH_PREVIOUS + 2147549203 + name 1_1_KEY_VOL_UP + 2147549204 + name 1_1_KEY_DISPLAY + 2147549205 + name 1_1_KEY_MNSELECT + 2147549207 + name 1_1_KEY_MENU + 2147549231 + name 1_1_KEY_MUP + 2147549232 + name 1_1_KEY_MDOWN + 2147549233 + name 1_1_KEY_MLEFT + 2147549234 + name 1_1_KEY_MRIGHT + 2147549235 + name 1_1_KEY_Setup + 2147549249 + name 1_1_KEY_DGuide + 2147549251 + name 1_1_KEY_Language + 2147549254 + name 1_1_KEY_TVDSS + 2147549258 + name 1_1_KEY_VT + 2147549259 + name 1_1_KEY_Esc + 2147549260 + name 0_2_KEY_0 + 131072 + name 0_2_KEY_1 + 131073 + name 0_2_KEY_2 + 131074 + name 0_2_KEY_3 + 131075 + name 0_2_KEY_4 + 131076 + name 0_2_KEY_5 + 131077 + name 0_2_KEY_6 + 131078 + name 0_2_KEY_7 + 131079 + name 0_2_KEY_8 + 131080 + name 0_2_KEY_9 + 131081 + name 0_2_KEY_POWER + 131082 + name 0_2_KEY_CH_UP + 131087 + name 0_2_KEY_CH_DOWN + 131088 + name 0_2_CH_PREVIOUS + 131091 + name 0_2_KEY_FTUNEPLUS + 131105 + name 0_2_KEY_FTUNEMINUS + 131106 + name 0_2_KEY_Norm + 131133 + name 1_2_KEY_0 + 2147614720 + name 1_2_KEY_1 + 2147614721 + name 1_2_KEY_2 + 2147614722 + name 1_2_KEY_3 + 2147614723 + name 1_2_KEY_4 + 2147614724 + name 1_2_KEY_5 + 2147614725 + name 1_2_KEY_6 + 2147614726 + name 1_2_KEY_7 + 2147614727 + name 1_2_KEY_8 + 2147614728 + name 1_2_KEY_9 + 2147614729 + name 1_2_KEY_POWER + 2147614730 + name 1_2_KEY_CH_UP + 2147614735 + name 1_2_KEY_CH_DOWN + 2147614736 + name 1_2_KEY_MUTE + 2147614737 + name 1_2_KEY_VOL_DOWN + 2147614738 + name 1_2_KEY_VOL_UP + 2147614740 + name 1_2_KEY_MNSELECT + 2147614743 + name 1_2_KEY_MNRETRUN + 2147614752 + name 1_2_KEY_BLUE + 2147614755 + name 1_2_KEY_GREEN + 2147614756 + name 1_2_KEY_RED + 2147614757 + name 1_2_KEY_YELLOW + 2147614758 + name 1_2_KEY_MENU + 2147614767 + name 1_2_KEY_MUP + 2147614768 + name 1_2_KEY_MDOWN + 2147614769 + name 1_2_KEY_MLEFT + 2147614770 + name 1_2_KEY_MRIGHT + 2147614771 + name 1_2_KEY_FF + 2147614772 + name 1_2_KEY_PLAY + 2147614773 + name 1_2_KEY_REW + 2147614774 + name 1_2_KEY_REC + 2147614775 + name 1_2_KEY_PAUSE + 2147614776 + name 1_2_KEY_STOP + 2147614777 + name 1_2_KEY_VT + 2147614795 + name 1_2_KEY_FullScreen + 2147614799 + name 1_2_KEY_Replay + 2147614800 + name 1_2_KEY_Skip + 2147614801 + name 0_3_KEY_0 + 196608 + name 0_3_KEY_1 + 196609 + name 0_3_KEY_2 + 196610 + name 0_3_KEY_3 + 196611 + name 0_3_KEY_4 + 196612 + name 0_3_KEY_5 + 196613 + name 0_3_KEY_6 + 196614 + name 0_3_KEY_7 + 196615 + name 0_3_KEY_8 + 196616 + name 0_3_KEY_9 + 196617 + name 0_3_KEY_POWER + 196618 + name 0_3_KEY_CH_UP + 196623 + name 0_3_KEY_CH_DOWN + 196624 + name 0_3_KEY_VOL_DOWN + 196626 + name 0_3_KEY_VOL_UP + 196628 + name 0_3_KEY_DISPLAY + 196629 + name 0_3_KEY_FAVCH + 196636 + name 0_3_KEY_FTUNEPLUS + 196641 + name 0_3_KEY_FTUNEMINUS + 196642 + name 1_3_KEY_0 + 2147680256 + name 1_3_KEY_1 + 2147680257 + name 1_3_KEY_2 + 2147680258 + name 1_3_KEY_3 + 2147680259 + name 1_3_KEY_4 + 2147680260 + name 1_3_KEY_5 + 2147680261 + name 1_3_KEY_6 + 2147680262 + name 1_3_KEY_7 + 2147680263 + name 1_3_KEY_8 + 2147680264 + name 1_3_KEY_9 + 2147680265 + name 1_3_KEY_CH_UP + 2147680271 + name 1_3_KEY_CH_DOWN + 2147680272 + name 1_3_KEY_MUTE + 2147680273 + name 1_3_KEY_VOL_DOWN + 2147680274 + name 1_3_KEY_VOL_UP + 2147680276 + name 1_3_KEY_Radio + 2147680327 + name 1_3_KEY_TV + 2147680328 + name 1_3_KEY_FullScreen + 2147680335 + name 1_3_KEY_Skip + 2147680337 + name 1_3_KEY_Source + 2147680338 + name 1_3_KEY_Reserved + 2147680339 + name 0_4_KEY_0 + 262144 + name 0_4_KEY_1 + 262145 + name 0_4_KEY_2 + 262146 + name 0_4_KEY_3 + 262147 + name 0_4_KEY_4 + 262148 + name 0_4_KEY_5 + 262149 + name 0_4_KEY_6 + 262150 + name 0_4_KEY_7 + 262151 + name 0_4_KEY_8 + 262152 + name 0_4_KEY_9 + 262153 + name 0_4_KEY_POWER + 262154 + name 0_4_KEY_MUTE + 262161 + name 0_4_KEY_VOL_DOWN + 262162 + name 0_4_KEY_VOL_UP + 262164 + name 0_4_KEY_DISPLAY + 262165 + name 0_4_KEY_FAVCH + 262172 + name 0_4_KEY_AB + 262206 + name 1_4_KEY_0 + 2147745792 + name 1_4_KEY_1 + 2147745793 + name 1_4_KEY_2 + 2147745794 + name 1_4_KEY_3 + 2147745795 + name 1_4_KEY_4 + 2147745796 + name 1_4_KEY_5 + 2147745797 + name 1_4_KEY_6 + 2147745798 + name 1_4_KEY_7 + 2147745799 + name 1_4_KEY_8 + 2147745800 + name 1_4_KEY_9 + 2147745801 + name 1_4_KEY_POWER + 2147745802 + name 1_4_CH_PREVIOUS + 2147745811 + name 1_4_KEY_DISPLAY + 2147745813 + name 1_4_KEY_EXIT + 2147745816 + name 1_4_KEY_INPUT + 2147745818 + name 1_4_KEY_FAV + 2147745821 + name 1_4_KEY_MNRETRUN + 2147745824 + name 1_4_KEY_ENTER + 2147745835 + name 1_4_KEY_MENU + 2147745839 + name 1_4_KEY_MUP + 2147745840 + name 1_4_KEY_MDOWN + 2147745841 + name 1_4_KEY_MLEFT + 2147745842 + name 1_4_KEY_MRIGHT + 2147745843 + name 0_5_KEY_0 + 327680 + name 0_5_KEY_1 + 327681 + name 0_5_KEY_2 + 327682 + name 0_5_KEY_3 + 327683 + name 0_5_KEY_4 + 327684 + name 0_5_KEY_5 + 327685 + name 0_5_KEY_6 + 327686 + name 0_5_KEY_7 + 327687 + name 0_5_KEY_8 + 327688 + name 0_5_KEY_9 + 327689 + name 0_5_KEY_POWER + 327690 + name 0_5_KEY_CH_UP + 327695 + name 0_5_KEY_CH_DOWN + 327696 + name 0_5_CH_PREVIOUS + 327699 + name 0_5_KEY_FTUNEPLUS + 327713 + name 0_5_KEY_FTUNEMINUS + 327714 + name 1_5_KEY_0 + 2147811328 + name 1_5_KEY_1 + 2147811329 + name 1_5_KEY_2 + 2147811330 + name 1_5_KEY_3 + 2147811331 + name 1_5_KEY_4 + 2147811332 + name 1_5_KEY_5 + 2147811333 + name 1_5_KEY_6 + 2147811334 + name 1_5_KEY_7 + 2147811335 + name 1_5_KEY_8 + 2147811336 + name 1_5_KEY_9 + 2147811337 + name 1_5_KEY_POWER + 2147811338 + name 1_5_TWO_DIGITS + 2147811341 + name 1_5_KEY_CH_UP + 2147811343 + name 1_5_KEY_CH_DOWN + 2147811344 + name 1_5_CH_PREVIOUS + 2147811347 + name 1_5_KEY_DISPLAY + 2147811349 + name 1_5_KEY_EXIT + 2147811352 + name 1_5_KEY_FAV + 2147811357 + name 1_5_KEY_MENU + 2147811375 + name 1_5_KEY_MUP + 2147811376 + name 1_5_KEY_MDOWN + 2147811377 + name 1_5_KEY_MLEFT + 2147811378 + name 1_5_KEY_MRIGHT + 2147811379 + name 1_5_KEY_DGuide + 2147811395 + name 0_6_KEY_0 + 393216 + name 0_6_KEY_1 + 393217 + name 0_6_KEY_2 + 393218 + name 0_6_KEY_3 + 393219 + name 0_6_KEY_4 + 393220 + name 0_6_KEY_5 + 393221 + name 0_6_KEY_6 + 393222 + name 0_6_KEY_7 + 393223 + name 0_6_KEY_8 + 393224 + name 0_6_KEY_9 + 393225 + name 0_6_KEY_POWER + 393226 + name 0_6_KEY_CH_UP + 393231 + name 0_6_KEY_CH_DOWN + 393232 + name 0_6_KEY_MUTE + 393233 + name 0_6_KEY_VOL_DOWN + 393234 + name 0_6_CH_PREVIOUS + 393235 + name 0_6_KEY_VOL_UP + 393236 + name 0_6_KEY_FTUNEPLUS + 393249 + name 0_6_KEY_FTUNEMINUS + 393250 + name 1_6_KEY_0 + 2147876864 + name 1_6_KEY_1 + 2147876865 + name 1_6_KEY_2 + 2147876866 + name 1_6_KEY_3 + 2147876867 + name 1_6_KEY_4 + 2147876868 + name 1_6_KEY_5 + 2147876869 + name 1_6_KEY_6 + 2147876870 + name 1_6_KEY_7 + 2147876871 + name 1_6_KEY_8 + 2147876872 + name 1_6_KEY_9 + 2147876873 + name 1_6_KEY_POWER + 2147876874 + name 1_6_TWO_DIGITS + 2147876877 + name 1_6_KEY_CH_UP + 2147876879 + name 1_6_KEY_CH_DOWN + 2147876880 + name 1_6_KEY_VOL_DOWN + 2147876882 + name 1_6_CH_PREVIOUS + 2147876883 + name 1_6_KEY_VOL_UP + 2147876884 + name 1_6_KEY_DISPLAY + 2147876885 + name 1_6_KEY_EXIT + 2147876888 + name 1_6_KEY_AV + 2147876905 + name 1_6_KEY_MENU + 2147876911 + name 1_6_KEY_MUP + 2147876912 + name 1_6_KEY_MDOWN + 2147876913 + name 1_6_KEY_MLEFT + 2147876914 + name 1_6_KEY_MRIGHT + 2147876915 + name 0_7_KEY_0 + 458752 + name 0_7_KEY_1 + 458753 + name 0_7_KEY_2 + 458754 + name 0_7_KEY_3 + 458755 + name 0_7_KEY_4 + 458756 + name 0_7_KEY_5 + 458757 + name 0_7_KEY_6 + 458758 + name 0_7_KEY_7 + 458759 + name 0_7_KEY_8 + 458760 + name 0_7_KEY_9 + 458761 + name 0_7_KEY_POWER + 458762 + name 0_7_KEY_CH_UP + 458767 + name 0_7_KEY_CH_DOWN + 458768 + name 0_7_KEY_MUTE + 458769 + name 0_7_KEY_VOL_DOWN + 458770 + name 0_7_KEY_VOL_UP + 458772 + name 0_7_KEY_DISPLAY + 458773 + name 1_7_KEY_0 + 2147942400 + name 1_7_KEY_1 + 2147942401 + name 1_7_KEY_2 + 2147942402 + name 1_7_KEY_3 + 2147942403 + name 1_7_KEY_4 + 2147942404 + name 1_7_KEY_5 + 2147942405 + name 1_7_KEY_6 + 2147942406 + name 1_7_KEY_7 + 2147942407 + name 1_7_KEY_8 + 2147942408 + name 1_7_KEY_9 + 2147942409 + name 1_7_KEY_POWER + 2147942410 + name 1_7_KEY_CH_UP + 2147942415 + name 1_7_KEY_CH_DOWN + 2147942416 + name 1_7_CH_PREVIOUS + 2147942419 + name 1_7_KEY_MNSELECT + 2147942423 + name 1_7_KEY_EXIT + 2147942424 + name 1_7_KEY_GUIDE + 2147942427 + name 1_7_KEY_FAV + 2147942429 + name 1_7_KEY_MENU + 2147942447 + name 1_7_KEY_MUP + 2147942448 + name 1_7_KEY_MDOWN + 2147942449 + name 1_7_KEY_MLEFT + 2147942450 + name 1_7_KEY_MRIGHT + 2147942451 + name 0_8_KEY_0 + 524288 + name 0_8_KEY_1 + 524289 + name 0_8_KEY_2 + 524290 + name 0_8_KEY_3 + 524291 + name 0_8_KEY_4 + 524292 + name 0_8_KEY_5 + 524293 + name 0_8_KEY_6 + 524294 + name 0_8_KEY_7 + 524295 + name 0_8_KEY_8 + 524296 + name 0_8_KEY_9 + 524297 + name 0_8_KEY_POWER + 524298 + name 0_8_KEY_CH_UP + 524303 + name 0_8_KEY_CH_DOWN + 524304 + name 0_8_KEY_DISPLAY + 524309 + name 0_8_KEY_PMCLEAR + 524313 + name 1_8_KEY_0 + 2148007936 + name 1_8_KEY_1 + 2148007937 + name 1_8_KEY_2 + 2148007938 + name 1_8_KEY_3 + 2148007939 + name 1_8_KEY_4 + 2148007940 + name 1_8_KEY_5 + 2148007941 + name 1_8_KEY_6 + 2148007942 + name 1_8_KEY_7 + 2148007943 + name 1_8_KEY_8 + 2148007944 + name 1_8_KEY_9 + 2148007945 + name 1_8_KEY_POWER + 2148007946 + name 1_8_KEY_CH_UP + 2148007951 + name 1_8_KEY_CH_DOWN + 2148007952 + name 1_8_KEY_DISPLAY + 2148007957 + name 1_8_KEY_GUIDE + 2148007963 + name 1_8_KEY_ENTER + 2148007979 + name 1_8_KEY_MENU + 2148007983 + name 1_8_KEY_MUP + 2148007984 + name 1_8_KEY_MDOWN + 2148007985 + name 1_8_KEY_MLEFT + 2148007986 + name 1_8_KEY_MRIGHT + 2148007987 + name 1_8_KEY_FF + 2148007988 + name 1_8_KEY_PLAY + 2148007989 + name 1_8_KEY_REW + 2148007990 + name 1_8_KEY_REC + 2148007991 + name 1_8_KEY_PAUSE + 2148007992 + name 0_9_KEY_0 + 589824 + name 0_9_KEY_1 + 589825 + name 0_9_KEY_2 + 589826 + name 0_9_KEY_3 + 589827 + name 0_9_KEY_4 + 589828 + name 0_9_KEY_5 + 589829 + name 0_9_KEY_6 + 589830 + name 0_9_KEY_7 + 589831 + name 0_9_KEY_8 + 589832 + name 0_9_KEY_9 + 589833 + name 0_9_KEY_POWER + 589834 + name 0_9_KEY_CH_UP + 589839 + name 0_9_KEY_CH_DOWN + 589840 + name 0_9_KEY_MUTE + 589841 + name 0_9_KEY_VOL_DOWN + 589842 + name 0_9_KEY_VOL_UP + 589844 + name 0_9_KEY_DISPLAY + 589845 + name 0_9_KEY_FTUNEPLUS + 589857 + name 0_9_KEY_FTUNEMINUS + 589858 + name 0_9_KEY_ENTER + 589867 + name 0_9_KEY_Norm + 589885 + name 0_9_KEY_AB + 589886 + name 1_9_KEY_0 + 2148073472 + name 1_9_KEY_1 + 2148073473 + name 1_9_KEY_2 + 2148073474 + name 1_9_KEY_3 + 2148073475 + name 1_9_KEY_4 + 2148073476 + name 1_9_KEY_5 + 2148073477 + name 1_9_KEY_6 + 2148073478 + name 1_9_KEY_7 + 2148073479 + name 1_9_KEY_8 + 2148073480 + name 1_9_KEY_9 + 2148073481 + name 1_9_KEY_POWER + 2148073482 + name 1_9_KEY_CH_UP + 2148073487 + name 1_9_KEY_CH_DOWN + 2148073488 + name 1_9_CH_PREVIOUS + 2148073491 + name 1_9_KEY_DISPLAY + 2148073493 + name 1_9_KEY_EXIT + 2148073496 + name 1_9_KEY_INPUT + 2148073498 + name 1_9_KEY_GUIDE + 2148073499 + name 1_9_KEY_MENU + 2148073519 + name 1_9_KEY_MUP + 2148073520 + name 1_9_KEY_MDOWN + 2148073521 + name 1_9_KEY_MLEFT + 2148073522 + name 1_9_KEY_MRIGHT + 2148073523 + name 0_10_KEY_0 + 655360 + name 0_10_KEY_1 + 655361 + name 0_10_KEY_2 + 655362 + name 0_10_KEY_3 + 655363 + name 0_10_KEY_4 + 655364 + name 0_10_KEY_5 + 655365 + name 0_10_KEY_6 + 655366 + name 0_10_KEY_7 + 655367 + name 0_10_KEY_8 + 655368 + name 0_10_KEY_9 + 655369 + name 0_10_KEY_POWER + 655370 + name 0_10_KEY_CH_UP + 655375 + name 0_10_KEY_CH_DOWN + 655376 + name 0_10_KEY_AB + 655422 + name 1_10_KEY_0 + 2148139008 + name 1_10_KEY_1 + 2148139009 + name 1_10_KEY_2 + 2148139010 + name 1_10_KEY_3 + 2148139011 + name 1_10_KEY_4 + 2148139012 + name 1_10_KEY_5 + 2148139013 + name 1_10_KEY_6 + 2148139014 + name 1_10_KEY_7 + 2148139015 + name 1_10_KEY_8 + 2148139016 + name 1_10_KEY_9 + 2148139017 + name 1_10_KEY_POWER + 2148139018 + name 1_10_TWO_DIGITS + 2148139021 + name 1_10_KEY_CH_UP + 2148139023 + name 1_10_KEY_CH_DOWN + 2148139024 + name 1_10_KEY_MUTE + 2148139025 + name 1_10_KEY_VOL_DOWN + 2148139026 + name 1_10_CH_PREVIOUS + 2148139027 + name 1_10_KEY_VOL_UP + 2148139028 + name 1_10_KEY_DISPLAY + 2148139029 + name 1_10_KEY_EXIT + 2148139032 + name 1_10_KEY_ENTER + 2148139051 + name 1_10_KEY_MENU + 2148139055 + name 1_10_KEY_MUP + 2148139056 + name 1_10_KEY_MDOWN + 2148139057 + name 1_10_KEY_MLEFT + 2148139058 + name 1_10_KEY_MRIGHT + 2148139059 + name 0_11_KEY_0 + 720896 + name 0_11_KEY_1 + 720897 + name 0_11_KEY_2 + 720898 + name 0_11_KEY_3 + 720899 + name 0_11_KEY_4 + 720900 + name 0_11_KEY_5 + 720901 + name 0_11_KEY_6 + 720902 + name 0_11_KEY_7 + 720903 + name 0_11_KEY_8 + 720904 + name 0_11_KEY_9 + 720905 + name 0_11_KEY_POWER + 720906 + name 0_11_KEY_CH_UP + 720911 + name 0_11_KEY_CH_DOWN + 720912 + name 0_11_KEY_FTUNEPLUS + 720929 + name 0_11_KEY_FTUNEMINUS + 720930 + name 1_11_KEY_0 + 2148204544 + name 1_11_KEY_1 + 2148204545 + name 1_11_KEY_2 + 2148204546 + name 1_11_KEY_3 + 2148204547 + name 1_11_KEY_4 + 2148204548 + name 1_11_KEY_5 + 2148204549 + name 1_11_KEY_6 + 2148204550 + name 1_11_KEY_7 + 2148204551 + name 1_11_KEY_8 + 2148204552 + name 1_11_KEY_9 + 2148204553 + name 1_11_KEY_POWER + 2148204554 + name 1_11_TWO_DIGITS + 2148204557 + name 1_11_KEY_CH_UP + 2148204559 + name 1_11_KEY_CH_DOWN + 2148204560 + name 1_11_CH_PREVIOUS + 2148204563 + name 1_11_KEY_DISPLAY + 2148204565 + name 1_11_KEY_EXIT + 2148204568 + name 1_11_KEY_INPUT + 2148204570 + name 1_11_KEY_GUIDE + 2148204571 + name 1_11_KEY_FAV + 2148204573 + name 1_11_KEY_MENU + 2148204591 + name 1_11_KEY_MUP + 2148204592 + name 1_11_KEY_MDOWN + 2148204593 + name 1_11_KEY_MLEFT + 2148204594 + name 1_11_KEY_MRIGHT + 2148204595 + name 0_12_KEY_0 + 786432 + name 0_12_KEY_1 + 786433 + name 0_12_KEY_2 + 786434 + name 0_12_KEY_3 + 786435 + name 0_12_KEY_4 + 786436 + name 0_12_KEY_5 + 786437 + name 0_12_KEY_6 + 786438 + name 0_12_KEY_7 + 786439 + name 0_12_KEY_8 + 786440 + name 0_12_KEY_9 + 786441 + name 0_12_KEY_POWER + 786442 + name 0_12_KEY_CH_UP + 786447 + name 0_12_KEY_CH_DOWN + 786448 + name 0_12_KEY_MUTE + 786449 + name 0_12_KEY_VOL_DOWN + 786450 + name 0_12_KEY_VOL_UP + 786452 + name 1_12_KEY_0 + 2148270080 + name 1_12_KEY_1 + 2148270081 + name 1_12_KEY_2 + 2148270082 + name 1_12_KEY_3 + 2148270083 + name 1_12_KEY_4 + 2148270084 + name 1_12_KEY_5 + 2148270085 + name 1_12_KEY_6 + 2148270086 + name 1_12_KEY_7 + 2148270087 + name 1_12_KEY_8 + 2148270088 + name 1_12_KEY_9 + 2148270089 + name 1_12_KEY_POWER + 2148270090 + name 1_12_TWO_DIGITS + 2148270093 + name 1_12_KEY_CH_UP + 2148270095 + name 1_12_KEY_CH_DOWN + 2148270096 + name 1_12_CH_PREVIOUS + 2148270099 + name 1_12_KEY_DISPLAY + 2148270101 + name 1_12_KEY_EXIT + 2148270104 + name 1_12_KEY_GUIDE + 2148270107 + name 1_12_KEY_MENU + 2148270127 + name 1_12_KEY_MUP + 2148270128 + name 1_12_KEY_MDOWN + 2148270129 + name 1_12_KEY_MLEFT + 2148270130 + name 1_12_KEY_MRIGHT + 2148270131 + name 0_13_KEY_0 + 851968 + name 0_13_KEY_1 + 851969 + name 0_13_KEY_2 + 851970 + name 0_13_KEY_3 + 851971 + name 0_13_KEY_4 + 851972 + name 0_13_KEY_5 + 851973 + name 0_13_KEY_6 + 851974 + name 0_13_KEY_7 + 851975 + name 0_13_KEY_8 + 851976 + name 0_13_KEY_9 + 851977 + name 0_13_KEY_POWER + 851978 + name 0_13_KEY_CH_UP + 851983 + name 0_13_KEY_CH_DOWN + 851984 + name 0_13_KEY_MUTE + 851985 + name 0_13_KEY_VOL_DOWN + 851986 + name 0_13_KEY_VOL_UP + 851988 + name 0_13_KEY_DISPLAY + 851989 + name 0_13_KEY_Norm + 852029 + name 1_13_KEY_0 + 2148335616 + name 1_13_KEY_1 + 2148335617 + name 1_13_KEY_2 + 2148335618 + name 1_13_KEY_3 + 2148335619 + name 1_13_KEY_4 + 2148335620 + name 1_13_KEY_5 + 2148335621 + name 1_13_KEY_6 + 2148335622 + name 1_13_KEY_7 + 2148335623 + name 1_13_KEY_8 + 2148335624 + name 1_13_KEY_9 + 2148335625 + name 1_13_KEY_POWER + 2148335626 + name 1_13_KEY_CH_UP + 2148335631 + name 1_13_KEY_CH_DOWN + 2148335632 + name 1_13_CH_PREVIOUS + 2148335635 + name 1_13_KEY_DISPLAY + 2148335637 + name 1_13_KEY_MNSELECT + 2148335639 + name 1_13_KEY_EXIT + 2148335640 + name 1_13_KEY_GUIDE + 2148335643 + name 1_13_KEY_MENU + 2148335663 + name 1_13_KEY_MUP + 2148335664 + name 1_13_KEY_MDOWN + 2148335665 + name 1_13_KEY_MLEFT + 2148335666 + name 1_13_KEY_MRIGHT + 2148335667 + name 1_13_KEY_Help + 2148335680 + name 0_14_KEY_0 + 917504 + name 0_14_KEY_1 + 917505 + name 0_14_KEY_2 + 917506 + name 0_14_KEY_3 + 917507 + name 0_14_KEY_4 + 917508 + name 0_14_KEY_5 + 917509 + name 0_14_KEY_6 + 917510 + name 0_14_KEY_7 + 917511 + name 0_14_KEY_8 + 917512 + name 0_14_KEY_9 + 917513 + name 0_14_KEY_POWER + 917514 + name 0_14_KEY_CH_UP + 917519 + name 0_14_KEY_CH_DOWN + 917520 + name 0_14_KEY_MUTE + 917521 + name 0_14_KEY_VOL_DOWN + 917522 + name 0_14_CH_PREVIOUS + 917523 + name 0_14_KEY_VOL_UP + 917524 + name 0_14_KEY_DISPLAY + 917525 + name 0_14_KEY_SELECT + 917534 + name 1_14_KEY_0 + 2148401152 + name 1_14_KEY_1 + 2148401153 + name 1_14_KEY_2 + 2148401154 + name 1_14_KEY_3 + 2148401155 + name 1_14_KEY_4 + 2148401156 + name 1_14_KEY_5 + 2148401157 + name 1_14_KEY_6 + 2148401158 + name 1_14_KEY_7 + 2148401159 + name 1_14_KEY_8 + 2148401160 + name 1_14_KEY_9 + 2148401161 + name 1_14_KEY_POWER + 2148401162 + name 1_14_KEY_CH_UP + 2148401167 + name 1_14_KEY_CH_DOWN + 2148401168 + name 1_14_CH_PREVIOUS + 2148401171 + name 1_14_KEY_DISPLAY + 2148401173 + name 1_14_KEY_EXIT + 2148401176 + name 1_14_KEY_GUIDE + 2148401179 + name 1_14_KEY_FAV + 2148401181 + name 1_14_KEY_ENTER + 2148401195 + name 1_14_KEY_MENU + 2148401199 + name 1_14_KEY_MUP + 2148401200 + name 1_14_KEY_MDOWN + 2148401201 + name 1_14_KEY_MLEFT + 2148401202 + name 1_14_KEY_MRIGHT + 2148401203 + name 0_15_KEY_0 + 983040 + name 0_15_KEY_1 + 983041 + name 0_15_KEY_2 + 983042 + name 0_15_KEY_3 + 983043 + name 0_15_KEY_4 + 983044 + name 0_15_KEY_5 + 983045 + name 0_15_KEY_6 + 983046 + name 0_15_KEY_7 + 983047 + name 0_15_KEY_8 + 983048 + name 0_15_KEY_9 + 983049 + name 0_15_KEY_POWER + 983050 + name 0_15_KEY_CH_UP + 983055 + name 0_15_KEY_CH_DOWN + 983056 + name 0_15_KEY_MUTE + 983057 + name 0_15_KEY_VOL_DOWN + 983058 + name 0_15_CH_PREVIOUS + 983059 + name 0_15_KEY_VOL_UP + 983060 + name 0_15_KEY_FTUNEPLUS + 983073 + name 0_15_KEY_FTUNEMINUS + 983074 + name 1_15_KEY_0 + 2148466688 + name 1_15_KEY_1 + 2148466689 + name 1_15_KEY_2 + 2148466690 + name 1_15_KEY_3 + 2148466691 + name 1_15_KEY_4 + 2148466692 + name 1_15_KEY_5 + 2148466693 + name 1_15_KEY_6 + 2148466694 + name 1_15_KEY_7 + 2148466695 + name 1_15_KEY_8 + 2148466696 + name 1_15_KEY_9 + 2148466697 + name 1_15_KEY_POWER + 2148466698 + name 1_15_KEY_CH_UP + 2148466703 + name 1_15_KEY_CH_DOWN + 2148466704 + name 1_15_CH_PREVIOUS + 2148466707 + name 1_15_KEY_DISPLAY + 2148466709 + name 1_15_KEY_MNSELECT + 2148466711 + name 1_15_KEY_EXIT + 2148466712 + name 1_15_KEY_GUIDE + 2148466715 + name 1_15_KEY_MENU + 2148466735 + name 1_15_KEY_MUP + 2148466736 + name 1_15_KEY_MDOWN + 2148466737 + name 1_15_KEY_MLEFT + 2148466738 + name 1_15_KEY_MRIGHT + 2148466739 + name 0_16_KEY_0 + 1048576 + name 0_16_KEY_1 + 1048577 + name 0_16_KEY_2 + 1048578 + name 0_16_KEY_3 + 1048579 + name 0_16_KEY_4 + 1048580 + name 0_16_KEY_5 + 1048581 + name 0_16_KEY_6 + 1048582 + name 0_16_KEY_7 + 1048583 + name 0_16_KEY_8 + 1048584 + name 0_16_KEY_9 + 1048585 + name 0_16_KEY_POWER + 1048586 + name 0_16_KEY_CH_UP + 1048591 + name 0_16_KEY_CH_DOWN + 1048592 + name 0_16_KEY_FTUNEPLUS + 1048609 + name 0_16_KEY_FTUNEMINUS + 1048610 + name 1_16_KEY_0 + 2148532224 + name 1_16_KEY_1 + 2148532225 + name 1_16_KEY_2 + 2148532226 + name 1_16_KEY_3 + 2148532227 + name 1_16_KEY_4 + 2148532228 + name 1_16_KEY_5 + 2148532229 + name 1_16_KEY_6 + 2148532230 + name 1_16_KEY_7 + 2148532231 + name 1_16_KEY_8 + 2148532232 + name 1_16_KEY_9 + 2148532233 + name 1_16_KEY_POWER + 2148532234 + name 1_16_KEY_CH_UP + 2148532239 + name 1_16_KEY_CH_DOWN + 2148532240 + name 1_16_KEY_EXIT + 2148532248 + name 1_16_KEY_GUIDE + 2148532251 + name 1_16_KEY_MENU + 2148532271 + name 1_16_KEY_MUP + 2148532272 + name 1_16_KEY_MDOWN + 2148532273 + name 1_16_KEY_MLEFT + 2148532274 + name 1_16_KEY_MRIGHT + 2148532275 + name 0_17_KEY_0 + 1114112 + name 0_17_KEY_1 + 1114113 + name 0_17_KEY_2 + 1114114 + name 0_17_KEY_3 + 1114115 + name 0_17_KEY_4 + 1114116 + name 0_17_KEY_5 + 1114117 + name 0_17_KEY_6 + 1114118 + name 0_17_KEY_7 + 1114119 + name 0_17_KEY_8 + 1114120 + name 0_17_KEY_9 + 1114121 + name 0_17_KEY_POWER + 1114122 + name 0_17_KEY_CH_UP + 1114127 + name 0_17_KEY_CH_DOWN + 1114128 + name 1_17_KEY_0 + 2148597760 + name 1_17_KEY_1 + 2148597761 + name 1_17_KEY_2 + 2148597762 + name 1_17_KEY_3 + 2148597763 + name 1_17_KEY_4 + 2148597764 + name 1_17_KEY_5 + 2148597765 + name 1_17_KEY_6 + 2148597766 + name 1_17_KEY_7 + 2148597767 + name 1_17_KEY_8 + 2148597768 + name 1_17_KEY_9 + 2148597769 + name 1_17_KEY_POWER + 2148597770 + name 1_17_KEY_CH_UP + 2148597775 + name 1_17_KEY_CH_DOWN + 2148597776 + name 1_17_KEY_MUTE + 2148597777 + name 1_17_KEY_VOL_DOWN + 2148597778 + name 1_17_CH_PREVIOUS + 2148597779 + name 1_17_KEY_VOL_UP + 2148597780 + name 1_17_KEY_DISPLAY + 2148597781 + name 1_17_KEY_EXIT + 2148597784 + name 1_17_KEY_GUIDE + 2148597787 + name 1_17_KEY_FAV + 2148597789 + name 1_17_KEY_MENU + 2148597807 + name 1_17_KEY_MUP + 2148597808 + name 1_17_KEY_MDOWN + 2148597809 + name 1_17_KEY_MLEFT + 2148597810 + name 1_17_KEY_MRIGHT + 2148597811 + name 0_18_KEY_0 + 1179648 + name 0_18_KEY_1 + 1179649 + name 0_18_KEY_2 + 1179650 + name 0_18_KEY_3 + 1179651 + name 0_18_KEY_4 + 1179652 + name 0_18_KEY_5 + 1179653 + name 0_18_KEY_6 + 1179654 + name 0_18_KEY_7 + 1179655 + name 0_18_KEY_8 + 1179656 + name 0_18_KEY_9 + 1179657 + name 0_18_KEY_POWER + 1179658 + name 0_18_KEY_CH_UP + 1179663 + name 0_18_KEY_CH_DOWN + 1179664 + name 0_18_CH_PREVIOUS + 1179667 + name 0_18_KEY_AB + 1179710 + name 1_18_KEY_0 + 2148663296 + name 1_18_KEY_1 + 2148663297 + name 1_18_KEY_2 + 2148663298 + name 1_18_KEY_3 + 2148663299 + name 1_18_KEY_4 + 2148663300 + name 1_18_KEY_5 + 2148663301 + name 1_18_KEY_6 + 2148663302 + name 1_18_KEY_7 + 2148663303 + name 1_18_KEY_8 + 2148663304 + name 1_18_KEY_9 + 2148663305 + name 1_18_KEY_POWER + 2148663306 + name 1_18_KEY_CH_UP + 2148663311 + name 1_18_KEY_CH_DOWN + 2148663312 + name 1_18_CH_PREVIOUS + 2148663315 + name 1_18_KEY_DISPLAY + 2148663317 + name 1_18_KEY_EXIT + 2148663320 + name 1_18_KEY_INPUT + 2148663322 + name 1_18_KEY_GUIDE + 2148663323 + name 1_18_KEY_FAV + 2148663325 + name 1_18_KEY_MENU + 2148663343 + name 1_18_KEY_MUP + 2148663344 + name 1_18_KEY_MDOWN + 2148663345 + name 1_18_KEY_MLEFT + 2148663346 + name 1_18_KEY_MRIGHT + 2148663347 + name 0_19_KEY_0 + 1245184 + name 0_19_KEY_1 + 1245185 + name 0_19_KEY_2 + 1245186 + name 0_19_KEY_3 + 1245187 + name 0_19_KEY_4 + 1245188 + name 0_19_KEY_5 + 1245189 + name 0_19_KEY_6 + 1245190 + name 0_19_KEY_7 + 1245191 + name 0_19_KEY_8 + 1245192 + name 0_19_KEY_9 + 1245193 + name 0_19_KEY_POWER + 1245194 + name 0_19_KEY_CH_UP + 1245199 + name 0_19_KEY_CH_DOWN + 1245200 + name 0_19_KEY_DISPLAY + 1245205 + name 0_19_KEY_ENTER + 1245227 + name 0_19_KEY_Norm + 1245245 + name 1_19_KEY_0 + 2148728832 + name 1_19_KEY_1 + 2148728833 + name 1_19_KEY_2 + 2148728834 + name 1_19_KEY_3 + 2148728835 + name 1_19_KEY_4 + 2148728836 + name 1_19_KEY_5 + 2148728837 + name 1_19_KEY_6 + 2148728838 + name 1_19_KEY_7 + 2148728839 + name 1_19_KEY_8 + 2148728840 + name 1_19_KEY_9 + 2148728841 + name 1_19_KEY_POWER + 2148728842 + name 1_19_KEY_CH_UP + 2148728847 + name 1_19_KEY_CH_DOWN + 2148728848 + name 1_19_KEY_MUTE + 2148728849 + name 1_19_KEY_VOL_DOWN + 2148728850 + name 1_19_CH_PREVIOUS + 2148728851 + name 1_19_KEY_VOL_UP + 2148728852 + name 1_19_KEY_DISPLAY + 2148728853 + name 1_19_KEY_EXIT + 2148728856 + name 1_19_KEY_GUIDE + 2148728859 + name 1_19_KEY_FAV + 2148728861 + name 1_19_KEY_SAT + 2148728874 + name 1_19_KEY_MENU + 2148728879 + name 1_19_KEY_MUP + 2148728880 + name 1_19_KEY_MDOWN + 2148728881 + name 1_19_KEY_MLEFT + 2148728882 + name 1_19_KEY_MRIGHT + 2148728883 + name 0_20_KEY_0 + 1310720 + name 0_20_KEY_1 + 1310721 + name 0_20_KEY_2 + 1310722 + name 0_20_KEY_3 + 1310723 + name 0_20_KEY_4 + 1310724 + name 0_20_KEY_5 + 1310725 + name 0_20_KEY_6 + 1310726 + name 0_20_KEY_7 + 1310727 + name 0_20_KEY_8 + 1310728 + name 0_20_KEY_9 + 1310729 + name 0_20_KEY_POWER + 1310730 + name 0_20_KEY_CH_UP + 1310735 + name 0_20_KEY_CH_DOWN + 1310736 + name 0_20_KEY_MUTE + 1310737 + name 0_20_KEY_VOL_DOWN + 1310738 + name 0_20_KEY_VOL_UP + 1310740 + name 0_20_KEY_DISPLAY + 1310741 + name 0_20_KEY_FAVCH + 1310748 + name 0_20_KEY_FTUNEPLUS + 1310753 + name 0_20_KEY_FTUNEMINUS + 1310754 + name 1_20_KEY_0 + 2148794368 + name 1_20_KEY_1 + 2148794369 + name 1_20_KEY_2 + 2148794370 + name 1_20_KEY_3 + 2148794371 + name 1_20_KEY_4 + 2148794372 + name 1_20_KEY_5 + 2148794373 + name 1_20_KEY_6 + 2148794374 + name 1_20_KEY_7 + 2148794375 + name 1_20_KEY_8 + 2148794376 + name 1_20_KEY_9 + 2148794377 + name 1_20_KEY_POWER + 2148794378 + name 1_20_KEY_CH_UP + 2148794383 + name 1_20_KEY_CH_DOWN + 2148794384 + name 1_20_KEY_MUTE + 2148794385 + name 1_20_KEY_VOL_DOWN + 2148794386 + name 1_20_CH_PREVIOUS + 2148794387 + name 1_20_KEY_VOL_UP + 2148794388 + name 1_20_KEY_DISPLAY + 2148794389 + name 1_20_KEY_EXIT + 2148794392 + name 1_20_KEY_INPUT + 2148794394 + name 1_20_KEY_GUIDE + 2148794395 + name 1_20_KEY_SELECT + 2148794398 + name 1_20_KEY_AV + 2148794409 + name 1_20_KEY_SAT + 2148794410 + name 1_20_KEY_ENTER + 2148794411 + name 1_20_KEY_MENU + 2148794415 + name 1_20_KEY_MUP + 2148794416 + name 1_20_KEY_MDOWN + 2148794417 + name 1_20_KEY_MLEFT + 2148794418 + name 1_20_KEY_MRIGHT + 2148794419 + name 1_20_KEY_FF + 2148794420 + name 1_20_KEY_PLAY + 2148794421 + name 1_20_KEY_REW + 2148794422 + name 1_20_KEY_REC + 2148794423 + name 1_20_KEY_PAUSE + 2148794424 + name 1_20_KEY_STOP + 2148794425 + name 0_21_KEY_0 + 1376256 + name 0_21_KEY_1 + 1376257 + name 0_21_KEY_2 + 1376258 + name 0_21_KEY_3 + 1376259 + name 0_21_KEY_4 + 1376260 + name 0_21_KEY_5 + 1376261 + name 0_21_KEY_6 + 1376262 + name 0_21_KEY_7 + 1376263 + name 0_21_KEY_8 + 1376264 + name 0_21_KEY_9 + 1376265 + name 0_21_KEY_POWER + 1376266 + name 0_21_KEY_CH_UP + 1376271 + name 0_21_KEY_CH_DOWN + 1376272 + name 0_21_KEY_MUTE + 1376273 + name 0_21_KEY_VOL_DOWN + 1376274 + name 0_21_CH_PREVIOUS + 1376275 + name 0_21_KEY_VOL_UP + 1376276 + name 0_21_KEY_DISPLAY + 1376277 + name 0_21_KEY_FTUNEPLUS + 1376289 + name 0_21_KEY_FTUNEMINUS + 1376290 + name 1_21_KEY_0 + 2148859904 + name 1_21_KEY_1 + 2148859905 + name 1_21_KEY_2 + 2148859906 + name 1_21_KEY_3 + 2148859907 + name 1_21_KEY_4 + 2148859908 + name 1_21_KEY_5 + 2148859909 + name 1_21_KEY_6 + 2148859910 + name 1_21_KEY_7 + 2148859911 + name 1_21_KEY_8 + 2148859912 + name 1_21_KEY_9 + 2148859913 + name 1_21_KEY_POWER + 2148859914 + name 1_21_KEY_CH_UP + 2148859919 + name 1_21_KEY_CH_DOWN + 2148859920 + name 1_21_KEY_MUTE + 2148859921 + name 1_21_KEY_VOL_DOWN + 2148859922 + name 1_21_CH_PREVIOUS + 2148859923 + name 1_21_KEY_VOL_UP + 2148859924 + name 1_21_KEY_DISPLAY + 2148859925 + name 1_21_KEY_EXIT + 2148859928 + name 1_21_KEY_INPUT + 2148859930 + name 1_21_KEY_GUIDE + 2148859931 + name 1_21_KEY_AV + 2148859945 + name 1_21_KEY_SAT + 2148859946 + name 1_21_KEY_ENTER + 2148859947 + name 1_21_KEY_MENU + 2148859951 + name 1_21_KEY_MUP + 2148859952 + name 1_21_KEY_MDOWN + 2148859953 + name 1_21_KEY_MLEFT + 2148859954 + name 1_21_KEY_MRIGHT + 2148859955 + name 1_21_KEY_FF + 2148859956 + name 1_21_KEY_PLAY + 2148859957 + name 1_21_KEY_REW + 2148859958 + name 1_21_KEY_REC + 2148859959 + name 1_21_KEY_PAUSE + 2148859960 + name 1_21_KEY_STOP + 2148859961 + name 0_22_KEY_0 + 1441792 + name 0_22_KEY_1 + 1441793 + name 0_22_KEY_2 + 1441794 + name 0_22_KEY_3 + 1441795 + name 0_22_KEY_4 + 1441796 + name 0_22_KEY_5 + 1441797 + name 0_22_KEY_6 + 1441798 + name 0_22_KEY_7 + 1441799 + name 0_22_KEY_8 + 1441800 + name 0_22_KEY_9 + 1441801 + name 0_22_KEY_POWER + 1441802 + name 0_22_KEY_CH_UP + 1441807 + name 0_22_KEY_CH_DOWN + 1441808 + name 0_22_KEY_MUTE + 1441809 + name 0_22_KEY_VOL_DOWN + 1441810 + name 0_22_KEY_VOL_UP + 1441812 + name 0_22_KEY_DISPLAY + 1441813 + name 0_22_KEY_FAVCH + 1441820 + name 0_22_KEY_FTUNEPLUS + 1441825 + name 0_22_KEY_FTUNEMINUS + 1441826 + name 1_22_KEY_0 + 2148925440 + name 1_22_KEY_1 + 2148925441 + name 1_22_KEY_2 + 2148925442 + name 1_22_KEY_3 + 2148925443 + name 1_22_KEY_4 + 2148925444 + name 1_22_KEY_5 + 2148925445 + name 1_22_KEY_6 + 2148925446 + name 1_22_KEY_7 + 2148925447 + name 1_22_KEY_8 + 2148925448 + name 1_22_KEY_9 + 2148925449 + name 1_22_KEY_POWER + 2148925450 + name 1_22_KEY_CH_UP + 2148925455 + name 1_22_KEY_CH_DOWN + 2148925456 + name 1_22_KEY_MUTE + 2148925457 + name 1_22_KEY_VOL_DOWN + 2148925458 + name 1_22_CH_PREVIOUS + 2148925459 + name 1_22_KEY_VOL_UP + 2148925460 + name 1_22_KEY_DISPLAY + 2148925461 + name 1_22_KEY_EXIT + 2148925464 + name 1_22_KEY_INPUT + 2148925466 + name 1_22_KEY_GUIDE + 2148925467 + name 1_22_KEY_AV + 2148925481 + name 1_22_KEY_SAT + 2148925482 + name 1_22_KEY_ENTER + 2148925483 + name 1_22_KEY_MENU + 2148925487 + name 1_22_KEY_MUP + 2148925488 + name 1_22_KEY_MDOWN + 2148925489 + name 1_22_KEY_MLEFT + 2148925490 + name 1_22_KEY_MRIGHT + 2148925491 + name 1_22_KEY_FF + 2148925492 + name 1_22_KEY_PLAY + 2148925493 + name 1_22_KEY_REW + 2148925494 + name 1_22_KEY_REC + 2148925495 + name 1_22_KEY_PAUSE + 2148925496 + name 1_22_KEY_STOP + 2148925497 + name 0_23_KEY_0 + 1507328 + name 0_23_KEY_1 + 1507329 + name 0_23_KEY_2 + 1507330 + name 0_23_KEY_3 + 1507331 + name 0_23_KEY_4 + 1507332 + name 0_23_KEY_5 + 1507333 + name 0_23_KEY_6 + 1507334 + name 0_23_KEY_7 + 1507335 + name 0_23_KEY_8 + 1507336 + name 0_23_KEY_9 + 1507337 + name 0_23_KEY_POWER + 1507338 + name 0_23_KEY_CH_UP + 1507343 + name 0_23_KEY_CH_DOWN + 1507344 + name 0_23_KEY_DISPLAY + 1507349 + name 1_23_KEY_0 + 2148990976 + name 1_23_KEY_1 + 2148990977 + name 1_23_KEY_2 + 2148990978 + name 1_23_KEY_3 + 2148990979 + name 1_23_KEY_4 + 2148990980 + name 1_23_KEY_5 + 2148990981 + name 1_23_KEY_6 + 2148990982 + name 1_23_KEY_7 + 2148990983 + name 1_23_KEY_8 + 2148990984 + name 1_23_KEY_9 + 2148990985 + name 1_23_KEY_POWER + 2148990986 + name 1_23_KEY_CH_UP + 2148990991 + name 1_23_KEY_CH_DOWN + 2148990992 + name 1_23_CH_PREVIOUS + 2148990995 + name 1_23_KEY_DISPLAY + 2148990997 + name 1_23_KEY_EXIT + 2148991000 + name 1_23_KEY_INPUT + 2148991002 + name 1_23_KEY_GUIDE + 2148991003 + name 1_23_KEY_SELECT + 2148991006 + name 1_23_KEY_AV + 2148991017 + name 1_23_KEY_ENTER + 2148991019 + name 1_23_KEY_MENU + 2148991023 + name 1_23_KEY_MUP + 2148991024 + name 1_23_KEY_MDOWN + 2148991025 + name 1_23_KEY_MLEFT + 2148991026 + name 1_23_KEY_MRIGHT + 2148991027 + name 1_23_KEY_FF + 2148991028 + name 1_23_KEY_PLAY + 2148991029 + name 1_23_KEY_REW + 2148991030 + name 1_23_KEY_REC + 2148991031 + name 1_23_KEY_PAUSE + 2148991032 + name 1_23_KEY_STOP + 2148991033 + name 0_24_KEY_0 + 1572864 + name 0_24_KEY_1 + 1572865 + name 0_24_KEY_2 + 1572866 + name 0_24_KEY_3 + 1572867 + name 0_24_KEY_4 + 1572868 + name 0_24_KEY_5 + 1572869 + name 0_24_KEY_6 + 1572870 + name 0_24_KEY_7 + 1572871 + name 0_24_KEY_8 + 1572872 + name 0_24_KEY_9 + 1572873 + name 0_24_KEY_POWER + 1572874 + name 0_24_KEY_CH_UP + 1572879 + name 0_24_KEY_CH_DOWN + 1572880 + name 0_24_KEY_DISPLAY + 1572885 + name 0_24_KEY_PMCLEAR + 1572889 + name 0_24_KEY_FTUNEPLUS + 1572897 + name 0_24_KEY_FTUNEMINUS + 1572898 + name 1_24_KEY_0 + 2149056512 + name 1_24_KEY_1 + 2149056513 + name 1_24_KEY_2 + 2149056514 + name 1_24_KEY_3 + 2149056515 + name 1_24_KEY_4 + 2149056516 + name 1_24_KEY_5 + 2149056517 + name 1_24_KEY_6 + 2149056518 + name 1_24_KEY_7 + 2149056519 + name 1_24_KEY_8 + 2149056520 + name 1_24_KEY_9 + 2149056521 + name 1_24_KEY_POWER + 2149056522 + name 1_24_KEY_CH_UP + 2149056527 + name 1_24_KEY_CH_DOWN + 2149056528 + name 1_24_CH_PREVIOUS + 2149056531 + name 1_24_KEY_DISPLAY + 2149056533 + name 1_24_KEY_EXIT + 2149056536 + name 1_24_KEY_INPUT + 2149056538 + name 1_24_KEY_GUIDE + 2149056539 + name 1_24_KEY_FAV + 2149056541 + name 1_24_KEY_SELECT + 2149056542 + name 1_24_KEY_AV + 2149056553 + name 1_24_KEY_SAT + 2149056554 + name 1_24_KEY_ENTER + 2149056555 + name 1_24_KEY_MENU + 2149056559 + name 1_24_KEY_MUP + 2149056560 + name 1_24_KEY_MDOWN + 2149056561 + name 1_24_KEY_MLEFT + 2149056562 + name 1_24_KEY_MRIGHT + 2149056563 + name 1_24_KEY_FF + 2149056564 + name 1_24_KEY_PLAY + 2149056565 + name 1_24_KEY_REW + 2149056566 + name 1_24_KEY_REC + 2149056567 + name 1_24_KEY_PAUSE + 2149056568 + name 1_24_KEY_STOP + 2149056569 + name 0_25_KEY_0 + 1638400 + name 0_25_KEY_1 + 1638401 + name 0_25_KEY_2 + 1638402 + name 0_25_KEY_3 + 1638403 + name 0_25_KEY_4 + 1638404 + name 0_25_KEY_5 + 1638405 + name 0_25_KEY_6 + 1638406 + name 0_25_KEY_7 + 1638407 + name 0_25_KEY_8 + 1638408 + name 0_25_KEY_9 + 1638409 + name 0_25_KEY_POWER + 1638410 + name 0_25_KEY_CH_UP + 1638415 + name 0_25_KEY_CH_DOWN + 1638416 + name 0_25_KEY_VOL_DOWN + 1638418 + name 0_25_CH_PREVIOUS + 1638419 + name 0_25_KEY_VOL_UP + 1638420 + name 0_25_KEY_FAVCH + 1638428 + name 0_25_KEY_SELECT + 1638430 + name 0_25_KEY_AB + 1638462 + name 1_25_KEY_0 + 2149122048 + name 1_25_KEY_1 + 2149122049 + name 1_25_KEY_2 + 2149122050 + name 1_25_KEY_3 + 2149122051 + name 1_25_KEY_4 + 2149122052 + name 1_25_KEY_5 + 2149122053 + name 1_25_KEY_6 + 2149122054 + name 1_25_KEY_7 + 2149122055 + name 1_25_KEY_8 + 2149122056 + name 1_25_KEY_9 + 2149122057 + name 1_25_KEY_POWER + 2149122058 + name 1_25_KEY_CH_UP + 2149122063 + name 1_25_KEY_CH_DOWN + 2149122064 + name 1_25_KEY_MUTE + 2149122065 + name 1_25_KEY_VOL_DOWN + 2149122066 + name 1_25_CH_PREVIOUS + 2149122067 + name 1_25_KEY_VOL_UP + 2149122068 + name 1_25_KEY_DISPLAY + 2149122069 + name 1_25_KEY_EXIT + 2149122072 + name 1_25_KEY_INPUT + 2149122074 + name 1_25_KEY_GUIDE + 2149122075 + name 1_25_KEY_SELECT + 2149122078 + name 1_25_KEY_AV + 2149122089 + name 1_25_KEY_SAT + 2149122090 + name 1_25_KEY_ENTER + 2149122091 + name 1_25_KEY_MENU + 2149122095 + name 1_25_KEY_MUP + 2149122096 + name 1_25_KEY_MDOWN + 2149122097 + name 1_25_KEY_MLEFT + 2149122098 + name 1_25_KEY_MRIGHT + 2149122099 + name 1_25_KEY_FF + 2149122100 + name 1_25_KEY_PLAY + 2149122101 + name 1_25_KEY_REW + 2149122102 + name 1_25_KEY_REC + 2149122103 + name 1_25_KEY_PAUSE + 2149122104 + name 1_25_KEY_STOP + 2149122105 + name 1_25_KEY_Repeat + 2149122106 + name 0_26_KEY_0 + 1703936 + name 0_26_KEY_1 + 1703937 + name 0_26_KEY_2 + 1703938 + name 0_26_KEY_3 + 1703939 + name 0_26_KEY_4 + 1703940 + name 0_26_KEY_5 + 1703941 + name 0_26_KEY_6 + 1703942 + name 0_26_KEY_7 + 1703943 + name 0_26_KEY_8 + 1703944 + name 0_26_KEY_9 + 1703945 + name 0_26_KEY_POWER + 1703946 + name 0_26_KEY_CH_UP + 1703951 + name 0_26_KEY_CH_DOWN + 1703952 + name 0_26_KEY_VOL_DOWN + 1703954 + name 0_26_CH_PREVIOUS + 1703955 + name 0_26_KEY_VOL_UP + 1703956 + name 0_26_KEY_DISPLAY + 1703957 + name 0_26_KEY_ENTER + 1703979 + name 1_26_KEY_0 + 2149187584 + name 1_26_KEY_1 + 2149187585 + name 1_26_KEY_2 + 2149187586 + name 1_26_KEY_3 + 2149187587 + name 1_26_KEY_4 + 2149187588 + name 1_26_KEY_5 + 2149187589 + name 1_26_KEY_6 + 2149187590 + name 1_26_KEY_7 + 2149187591 + name 1_26_KEY_8 + 2149187592 + name 1_26_KEY_9 + 2149187593 + name 1_26_KEY_POWER + 2149187594 + name 1_26_KEY_CH_UP + 2149187599 + name 1_26_KEY_CH_DOWN + 2149187600 + name 1_26_KEY_MUTE + 2149187601 + name 1_26_KEY_VOL_DOWN + 2149187602 + name 1_26_CH_PREVIOUS + 2149187603 + name 1_26_KEY_VOL_UP + 2149187604 + name 1_26_KEY_DISPLAY + 2149187605 + name 1_26_KEY_EXIT + 2149187608 + name 1_26_KEY_INPUT + 2149187610 + name 1_26_KEY_GUIDE + 2149187611 + name 1_26_KEY_SELECT + 2149187614 + name 1_26_KEY_AV + 2149187625 + name 1_26_KEY_SAT + 2149187626 + name 1_26_KEY_ENTER + 2149187627 + name 1_26_KEY_MENU + 2149187631 + name 1_26_KEY_MUP + 2149187632 + name 1_26_KEY_MDOWN + 2149187633 + name 1_26_KEY_MLEFT + 2149187634 + name 1_26_KEY_MRIGHT + 2149187635 + name 1_26_KEY_FF + 2149187636 + name 1_26_KEY_PLAY + 2149187637 + name 1_26_KEY_REW + 2149187638 + name 1_26_KEY_REC + 2149187639 + name 1_26_KEY_PAUSE + 2149187640 + name 1_26_KEY_STOP + 2149187641 + name 1_26_KEY_Repeat + 2149187642 + name 0_27_KEY_0 + 1769472 + name 0_27_KEY_1 + 1769473 + name 0_27_KEY_2 + 1769474 + name 0_27_KEY_3 + 1769475 + name 0_27_KEY_4 + 1769476 + name 0_27_KEY_5 + 1769477 + name 0_27_KEY_6 + 1769478 + name 0_27_KEY_7 + 1769479 + name 0_27_KEY_8 + 1769480 + name 0_27_KEY_9 + 1769481 + name 0_27_KEY_POWER + 1769482 + name 0_27_KEY_CH_UP + 1769487 + name 0_27_KEY_CH_DOWN + 1769488 + name 0_27_KEY_FAVCH + 1769500 + name 0_27_KEY_FTUNEPLUS + 1769505 + name 0_27_KEY_FTUNEMINUS + 1769506 + name 0_27_KEY_Norm + 1769533 + name 0_27_KEY_AB + 1769534 + name 1_27_KEY_0 + 2149253120 + name 1_27_KEY_1 + 2149253121 + name 1_27_KEY_2 + 2149253122 + name 1_27_KEY_3 + 2149253123 + name 1_27_KEY_4 + 2149253124 + name 1_27_KEY_5 + 2149253125 + name 1_27_KEY_6 + 2149253126 + name 1_27_KEY_7 + 2149253127 + name 1_27_KEY_8 + 2149253128 + name 1_27_KEY_9 + 2149253129 + name 1_27_KEY_POWER + 2149253130 + name 1_27_KEY_CH_UP + 2149253135 + name 1_27_KEY_CH_DOWN + 2149253136 + name 1_27_CH_PREVIOUS + 2149253139 + name 1_27_KEY_GUIDE + 2149253147 + name 1_27_KEY_AV + 2149253161 + name 1_27_KEY_ENTER + 2149253163 + name 0_28_KEY_0 + 1835008 + name 0_28_KEY_1 + 1835009 + name 0_28_KEY_2 + 1835010 + name 0_28_KEY_3 + 1835011 + name 0_28_KEY_4 + 1835012 + name 0_28_KEY_5 + 1835013 + name 0_28_KEY_6 + 1835014 + name 0_28_KEY_7 + 1835015 + name 0_28_KEY_8 + 1835016 + name 0_28_KEY_9 + 1835017 + name 0_28_KEY_POWER + 1835018 + name 0_28_KEY_CH_UP + 1835023 + name 0_28_KEY_CH_DOWN + 1835024 + name 0_28_KEY_MUTE + 1835025 + name 0_28_KEY_VOL_DOWN + 1835026 + name 0_28_KEY_VOL_UP + 1835028 + name 0_28_KEY_DISPLAY + 1835029 + name 1_28_KEY_0 + 2149318656 + name 1_28_KEY_1 + 2149318657 + name 1_28_KEY_2 + 2149318658 + name 1_28_KEY_3 + 2149318659 + name 1_28_KEY_4 + 2149318660 + name 1_28_KEY_5 + 2149318661 + name 1_28_KEY_6 + 2149318662 + name 1_28_KEY_7 + 2149318663 + name 1_28_KEY_8 + 2149318664 + name 1_28_KEY_9 + 2149318665 + name 1_28_KEY_POWER + 2149318666 + name 1_28_KEY_CH_UP + 2149318671 + name 1_28_KEY_CH_DOWN + 2149318672 + name 1_28_KEY_MUTE + 2149318673 + name 1_28_KEY_VOL_DOWN + 2149318674 + name 1_28_CH_PREVIOUS + 2149318675 + name 1_28_KEY_VOL_UP + 2149318676 + name 1_28_KEY_DISPLAY + 2149318677 + name 1_28_KEY_EXIT + 2149318680 + name 1_28_KEY_GUIDE + 2149318683 + name 1_28_KEY_SELECT + 2149318686 + name 1_28_KEY_AV + 2149318697 + name 1_28_KEY_ENTER + 2149318699 + name 1_28_KEY_MENU + 2149318703 + name 1_28_KEY_MUP + 2149318704 + name 1_28_KEY_MDOWN + 2149318705 + name 1_28_KEY_MLEFT + 2149318706 + name 1_28_KEY_MRIGHT + 2149318707 + name 0_29_KEY_0 + 1900544 + name 0_29_KEY_1 + 1900545 + name 0_29_KEY_2 + 1900546 + name 0_29_KEY_3 + 1900547 + name 0_29_KEY_4 + 1900548 + name 0_29_KEY_5 + 1900549 + name 0_29_KEY_6 + 1900550 + name 0_29_KEY_7 + 1900551 + name 0_29_KEY_8 + 1900552 + name 0_29_KEY_9 + 1900553 + name 0_29_KEY_POWER + 1900554 + name 0_29_KEY_CH_UP + 1900559 + name 0_29_KEY_CH_DOWN + 1900560 + name 0_29_KEY_MUTE + 1900561 + name 0_29_KEY_VOL_DOWN + 1900562 + name 0_29_CH_PREVIOUS + 1900563 + name 0_29_KEY_VOL_UP + 1900564 + name 0_29_KEY_DISPLAY + 1900565 + name 0_29_KEY_FAVCH + 1900572 + name 0_29_KEY_SELECT + 1900574 + name 0_29_KEY_ENTER + 1900587 + name 0_29_KEY_AB + 1900606 + name 1_29_KEY_0 + 2149384192 + name 1_29_KEY_1 + 2149384193 + name 1_29_KEY_2 + 2149384194 + name 1_29_KEY_3 + 2149384195 + name 1_29_KEY_4 + 2149384196 + name 1_29_KEY_5 + 2149384197 + name 1_29_KEY_6 + 2149384198 + name 1_29_KEY_7 + 2149384199 + name 1_29_KEY_8 + 2149384200 + name 1_29_KEY_9 + 2149384201 + name 1_29_KEY_POWER + 2149384202 + name 1_29_KEY_CH_UP + 2149384207 + name 1_29_KEY_CH_DOWN + 2149384208 + name 1_29_KEY_ENTER + 2149384235 + name 0_30_KEY_0 + 1966080 + name 0_30_KEY_1 + 1966081 + name 0_30_KEY_2 + 1966082 + name 0_30_KEY_3 + 1966083 + name 0_30_KEY_4 + 1966084 + name 0_30_KEY_5 + 1966085 + name 0_30_KEY_6 + 1966086 + name 0_30_KEY_7 + 1966087 + name 0_30_KEY_8 + 1966088 + name 0_30_KEY_9 + 1966089 + name 0_30_KEY_POWER + 1966090 + name 0_30_KEY_MUTE + 1966097 + name 0_30_KEY_VOL_DOWN + 1966098 + name 0_30_CH_PREVIOUS + 1966099 + name 0_30_KEY_VOL_UP + 1966100 + name 0_30_KEY_RETURN + 1966111 + name 1_30_KEY_0 + 2149449728 + name 1_30_KEY_1 + 2149449729 + name 1_30_KEY_2 + 2149449730 + name 1_30_KEY_3 + 2149449731 + name 1_30_KEY_4 + 2149449732 + name 1_30_KEY_5 + 2149449733 + name 1_30_KEY_6 + 2149449734 + name 1_30_KEY_7 + 2149449735 + name 1_30_KEY_8 + 2149449736 + name 1_30_KEY_9 + 2149449737 + name 1_30_KEY_POWER + 2149449738 + name 1_30_TWO_DIGITS + 2149449741 + name 1_30_KEY_CH_UP + 2149449743 + name 1_30_KEY_CH_DOWN + 2149449744 + name 1_30_KEY_DISPLAY + 2149449749 + name 1_30_KEY_EXIT + 2149449752 + name 1_30_KEY_GUIDE + 2149449755 + name 1_30_KEY_SELECT + 2149449758 + name 1_30_KEY_MENU + 2149449775 + name 1_30_KEY_MUP + 2149449776 + name 1_30_KEY_MDOWN + 2149449777 + name 1_30_KEY_MLEFT + 2149449778 + name 1_30_KEY_MRIGHT + 2149449779 + name 0_31_KEY_0 + 2031616 + name 0_31_KEY_1 + 2031617 + name 0_31_KEY_2 + 2031618 + name 0_31_KEY_3 + 2031619 + name 0_31_KEY_4 + 2031620 + name 0_31_KEY_5 + 2031621 + name 0_31_KEY_6 + 2031622 + name 0_31_KEY_7 + 2031623 + name 0_31_KEY_8 + 2031624 + name 0_31_KEY_9 + 2031625 + name 0_31_KEY_POWER + 2031626 + name 0_31_KEY_CH_UP + 2031631 + name 0_31_KEY_CH_DOWN + 2031632 + name 0_31_CH_PREVIOUS + 2031635 + name 0_31_KEY_DISPLAY + 2031637 + name 1_31_KEY_0 + 2149515264 + name 1_31_KEY_1 + 2149515265 + name 1_31_KEY_2 + 2149515266 + name 1_31_KEY_3 + 2149515267 + name 1_31_KEY_4 + 2149515268 + name 1_31_KEY_5 + 2149515269 + name 1_31_KEY_6 + 2149515270 + name 1_31_KEY_7 + 2149515271 + name 1_31_KEY_8 + 2149515272 + name 1_31_KEY_9 + 2149515273 + name 1_31_KEY_POWER + 2149515274 + name 1_31_TWO_DIGITS + 2149515277 + name 1_31_KEY_CH_UP + 2149515279 + name 1_31_KEY_CH_DOWN + 2149515280 + name 1_31_KEY_DISPLAY + 2149515285 + name 1_31_KEY_EXIT + 2149515288 + name 1_31_KEY_GUIDE + 2149515291 + name 1_31_KEY_SELECT + 2149515294 + name 1_31_KEY_MENU + 2149515311 + name 1_31_KEY_MUP + 2149515312 + name 1_31_KEY_MDOWN + 2149515313 + name 1_31_KEY_MLEFT + 2149515314 + name 1_31_KEY_MRIGHT + 2149515315 + name 0_32_KEY_0 + 2097152 + name 0_32_KEY_1 + 2097153 + name 0_32_KEY_2 + 2097154 + name 0_32_KEY_3 + 2097155 + name 0_32_KEY_4 + 2097156 + name 0_32_KEY_5 + 2097157 + name 0_32_KEY_6 + 2097158 + name 0_32_KEY_7 + 2097159 + name 0_32_KEY_8 + 2097160 + name 0_32_KEY_9 + 2097161 + name 0_32_KEY_POWER + 2097162 + name 0_32_KEY_CH_UP + 2097167 + name 0_32_KEY_CH_DOWN + 2097168 + name 0_32_KEY_MUTE + 2097169 + name 0_32_KEY_VOL_DOWN + 2097170 + name 0_32_CH_PREVIOUS + 2097171 + name 0_32_KEY_VOL_UP + 2097172 + name 1_32_KEY_0 + 2149580800 + name 1_32_KEY_1 + 2149580801 + name 1_32_KEY_2 + 2149580802 + name 1_32_KEY_3 + 2149580803 + name 1_32_KEY_4 + 2149580804 + name 1_32_KEY_5 + 2149580805 + name 1_32_KEY_6 + 2149580806 + name 1_32_KEY_7 + 2149580807 + name 1_32_KEY_8 + 2149580808 + name 1_32_KEY_9 + 2149580809 + name 1_32_KEY_POWER + 2149580810 + name 1_32_TWO_DIGITS + 2149580813 + name 1_32_KEY_CH_UP + 2149580815 + name 1_32_KEY_CH_DOWN + 2149580816 + name 1_32_KEY_DISPLAY + 2149580821 + name 1_32_KEY_EXIT + 2149580824 + name 1_32_KEY_GUIDE + 2149580827 + name 1_32_KEY_SELECT + 2149580830 + name 1_32_KEY_MENU + 2149580847 + name 1_32_KEY_MUP + 2149580848 + name 1_32_KEY_MDOWN + 2149580849 + name 1_32_KEY_MLEFT + 2149580850 + name 1_32_KEY_MRIGHT + 2149580851 + name 0_33_KEY_0 + 2162688 + name 0_33_KEY_1 + 2162689 + name 0_33_KEY_2 + 2162690 + name 0_33_KEY_3 + 2162691 + name 0_33_KEY_4 + 2162692 + name 0_33_KEY_5 + 2162693 + name 0_33_KEY_6 + 2162694 + name 0_33_KEY_7 + 2162695 + name 0_33_KEY_8 + 2162696 + name 0_33_KEY_9 + 2162697 + name 0_33_KEY_POWER + 2162698 + name 0_33_KEY_CH_UP + 2162703 + name 0_33_KEY_CH_DOWN + 2162704 + name 0_33_KEY_MUTE + 2162705 + name 0_33_KEY_VOL_DOWN + 2162706 + name 0_33_CH_PREVIOUS + 2162707 + name 0_33_KEY_VOL_UP + 2162708 + name 0_33_KEY_DISPLAY + 2162709 + name 0_33_KEY_INPUT + 2162714 + name 0_33_KEY_FTUNEPLUS + 2162721 + name 0_33_KEY_FTUNEMINUS + 2162722 + name 0_33_KEY_AB + 2162750 + name 1_33_KEY_0 + 2149646336 + name 1_33_KEY_1 + 2149646337 + name 1_33_KEY_2 + 2149646338 + name 1_33_KEY_3 + 2149646339 + name 1_33_KEY_4 + 2149646340 + name 1_33_KEY_5 + 2149646341 + name 1_33_KEY_6 + 2149646342 + name 1_33_KEY_7 + 2149646343 + name 1_33_KEY_8 + 2149646344 + name 1_33_KEY_9 + 2149646345 + name 1_33_KEY_POWER + 2149646346 + name 1_33_TWO_DIGITS + 2149646349 + name 1_33_KEY_CH_UP + 2149646351 + name 1_33_KEY_CH_DOWN + 2149646352 + name 1_33_KEY_DISPLAY + 2149646357 + name 1_33_KEY_EXIT + 2149646360 + name 1_33_KEY_GUIDE + 2149646363 + name 1_33_KEY_SELECT + 2149646366 + name 1_33_KEY_MENU + 2149646383 + name 1_33_KEY_MUP + 2149646384 + name 1_33_KEY_MDOWN + 2149646385 + name 1_33_KEY_MLEFT + 2149646386 + name 1_33_KEY_MRIGHT + 2149646387 + name 0_34_KEY_0 + 2228224 + name 0_34_KEY_1 + 2228225 + name 0_34_KEY_2 + 2228226 + name 0_34_KEY_3 + 2228227 + name 0_34_KEY_4 + 2228228 + name 0_34_KEY_5 + 2228229 + name 0_34_KEY_6 + 2228230 + name 0_34_KEY_7 + 2228231 + name 0_34_KEY_8 + 2228232 + name 0_34_KEY_9 + 2228233 + name 0_34_KEY_POWER + 2228234 + name 0_34_KEY_CH_UP + 2228239 + name 0_34_KEY_CH_DOWN + 2228240 + name 0_34_CH_PREVIOUS + 2228243 + name 0_34_KEY_ENTER + 2228267 + name 1_34_KEY_0 + 2149711872 + name 1_34_KEY_1 + 2149711873 + name 1_34_KEY_2 + 2149711874 + name 1_34_KEY_3 + 2149711875 + name 1_34_KEY_4 + 2149711876 + name 1_34_KEY_5 + 2149711877 + name 1_34_KEY_6 + 2149711878 + name 1_34_KEY_7 + 2149711879 + name 1_34_KEY_8 + 2149711880 + name 1_34_KEY_9 + 2149711881 + name 1_34_KEY_POWER + 2149711882 + name 1_34_TWO_DIGITS + 2149711885 + name 1_34_KEY_CH_UP + 2149711887 + name 1_34_KEY_CH_DOWN + 2149711888 + name 1_34_KEY_DISPLAY + 2149711893 + name 1_34_KEY_EXIT + 2149711896 + name 1_34_KEY_GUIDE + 2149711899 + name 1_34_KEY_SELECT + 2149711902 + name 1_34_KEY_MENU + 2149711919 + name 1_34_KEY_MUP + 2149711920 + name 1_34_KEY_MDOWN + 2149711921 + name 1_34_KEY_MLEFT + 2149711922 + name 1_34_KEY_MRIGHT + 2149711923 + name 0_35_KEY_0 + 2293760 + name 0_35_KEY_1 + 2293761 + name 0_35_KEY_2 + 2293762 + name 0_35_KEY_3 + 2293763 + name 0_35_KEY_4 + 2293764 + name 0_35_KEY_5 + 2293765 + name 0_35_KEY_6 + 2293766 + name 0_35_KEY_7 + 2293767 + name 0_35_KEY_8 + 2293768 + name 0_35_KEY_9 + 2293769 + name 0_35_KEY_POWER + 2293770 + name 0_35_KEY_CH_UP + 2293775 + name 0_35_KEY_CH_DOWN + 2293776 + name 0_35_CH_PREVIOUS + 2293779 + name 0_35_KEY_ENTER + 2293803 + name 1_35_KEY_0 + 2149777408 + name 1_35_KEY_1 + 2149777409 + name 1_35_KEY_2 + 2149777410 + name 1_35_KEY_3 + 2149777411 + name 1_35_KEY_4 + 2149777412 + name 1_35_KEY_5 + 2149777413 + name 1_35_KEY_6 + 2149777414 + name 1_35_KEY_7 + 2149777415 + name 1_35_KEY_8 + 2149777416 + name 1_35_KEY_9 + 2149777417 + name 1_35_KEY_POWER + 2149777418 + name 1_35_TWO_DIGITS + 2149777421 + name 1_35_KEY_CH_UP + 2149777423 + name 1_35_KEY_CH_DOWN + 2149777424 + name 1_35_KEY_DISPLAY + 2149777429 + name 1_35_KEY_EXIT + 2149777432 + name 1_35_KEY_GUIDE + 2149777435 + name 1_35_KEY_SELECT + 2149777438 + name 1_35_KEY_MENU + 2149777455 + name 1_35_KEY_MUP + 2149777456 + name 1_35_KEY_MDOWN + 2149777457 + name 1_35_KEY_MLEFT + 2149777458 + name 1_35_KEY_MRIGHT + 2149777459 + name 0_36_KEY_0 + 2359296 + name 0_36_KEY_1 + 2359297 + name 0_36_KEY_2 + 2359298 + name 0_36_KEY_3 + 2359299 + name 0_36_KEY_4 + 2359300 + name 0_36_KEY_5 + 2359301 + name 0_36_KEY_6 + 2359302 + name 0_36_KEY_7 + 2359303 + name 0_36_KEY_8 + 2359304 + name 0_36_KEY_9 + 2359305 + name 0_36_KEY_POWER + 2359306 + name 0_36_KEY_CH_UP + 2359311 + name 0_36_KEY_CH_DOWN + 2359312 + name 1_36_KEY_0 + 2149842944 + name 1_36_KEY_1 + 2149842945 + name 1_36_KEY_2 + 2149842946 + name 1_36_KEY_3 + 2149842947 + name 1_36_KEY_4 + 2149842948 + name 1_36_KEY_5 + 2149842949 + name 1_36_KEY_6 + 2149842950 + name 1_36_KEY_7 + 2149842951 + name 1_36_KEY_8 + 2149842952 + name 1_36_KEY_9 + 2149842953 + name 1_36_KEY_POWER + 2149842954 + name 1_36_TWO_DIGITS + 2149842957 + name 1_36_KEY_CH_UP + 2149842959 + name 1_36_KEY_CH_DOWN + 2149842960 + name 1_36_KEY_DISPLAY + 2149842965 + name 1_36_KEY_EXIT + 2149842968 + name 1_36_KEY_GUIDE + 2149842971 + name 1_36_KEY_SELECT + 2149842974 + name 1_36_KEY_MENU + 2149842991 + name 1_36_KEY_MUP + 2149842992 + name 1_36_KEY_MDOWN + 2149842993 + name 1_36_KEY_MLEFT + 2149842994 + name 1_36_KEY_MRIGHT + 2149842995 + name 0_37_KEY_0 + 2424832 + name 0_37_KEY_1 + 2424833 + name 0_37_KEY_2 + 2424834 + name 0_37_KEY_3 + 2424835 + name 0_37_KEY_4 + 2424836 + name 0_37_KEY_5 + 2424837 + name 0_37_KEY_6 + 2424838 + name 0_37_KEY_7 + 2424839 + name 0_37_KEY_8 + 2424840 + name 0_37_KEY_9 + 2424841 + name 0_37_KEY_POWER + 2424842 + name 0_37_KEY_CH_UP + 2424847 + name 0_37_KEY_CH_DOWN + 2424848 + name 1_37_KEY_0 + 2149908480 + name 1_37_KEY_1 + 2149908481 + name 1_37_KEY_2 + 2149908482 + name 1_37_KEY_3 + 2149908483 + name 1_37_KEY_4 + 2149908484 + name 1_37_KEY_5 + 2149908485 + name 1_37_KEY_6 + 2149908486 + name 1_37_KEY_7 + 2149908487 + name 1_37_KEY_8 + 2149908488 + name 1_37_KEY_9 + 2149908489 + name 1_37_KEY_POWER + 2149908490 + name 1_37_TWO_DIGITS + 2149908493 + name 1_37_KEY_CH_UP + 2149908495 + name 1_37_KEY_CH_DOWN + 2149908496 + name 1_37_KEY_DISPLAY + 2149908501 + name 1_37_KEY_EXIT + 2149908504 + name 1_37_KEY_GUIDE + 2149908507 + name 1_37_KEY_SELECT + 2149908510 + name 1_37_KEY_MENU + 2149908527 + name 1_37_KEY_MUP + 2149908528 + name 1_37_KEY_MDOWN + 2149908529 + name 1_37_KEY_MLEFT + 2149908530 + name 1_37_KEY_MRIGHT + 2149908531 + name 0_38_KEY_0 + 2490368 + name 0_38_KEY_1 + 2490369 + name 0_38_KEY_2 + 2490370 + name 0_38_KEY_3 + 2490371 + name 0_38_KEY_4 + 2490372 + name 0_38_KEY_5 + 2490373 + name 0_38_KEY_6 + 2490374 + name 0_38_KEY_7 + 2490375 + name 0_38_KEY_8 + 2490376 + name 0_38_KEY_9 + 2490377 + name 0_38_KEY_POWER + 2490378 + name 0_38_KEY_CH_UP + 2490383 + name 0_38_KEY_CH_DOWN + 2490384 + name 0_38_KEY_INPUT + 2490394 + name 0_38_KEY_ENTER + 2490411 + name 0_38_KEY_MENU + 2490415 + name 0_38_KEY_MUP + 2490416 + name 0_38_KEY_MDOWN + 2490417 + name 0_38_KEY_MLEFT + 2490418 + name 0_38_KEY_MRIGHT + 2490419 + name 1_38_KEY_0 + 2149974016 + name 1_38_KEY_1 + 2149974017 + name 1_38_KEY_2 + 2149974018 + name 1_38_KEY_3 + 2149974019 + name 1_38_KEY_4 + 2149974020 + name 1_38_KEY_5 + 2149974021 + name 1_38_KEY_6 + 2149974022 + name 1_38_KEY_7 + 2149974023 + name 1_38_KEY_8 + 2149974024 + name 1_38_KEY_9 + 2149974025 + name 1_38_KEY_POWER + 2149974026 + name 1_38_KEY_CH_UP + 2149974031 + name 1_38_KEY_CH_DOWN + 2149974032 + name 1_38_KEY_MUTE + 2149974033 + name 1_38_KEY_VOL_DOWN + 2149974034 + name 1_38_CH_PREVIOUS + 2149974035 + name 1_38_KEY_VOL_UP + 2149974036 + name 1_38_KEY_DISPLAY + 2149974037 + name 1_38_KEY_EXIT + 2149974040 + name 1_38_KEY_INPUT + 2149974042 + name 1_38_KEY_GUIDE + 2149974043 + name 1_38_KEY_SELECT + 2149974046 + name 1_38_KEY_AV + 2149974057 + name 1_38_KEY_SAT + 2149974058 + name 1_38_KEY_ENTER + 2149974059 + name 1_38_KEY_MENU + 2149974063 + name 1_38_KEY_MUP + 2149974064 + name 1_38_KEY_MDOWN + 2149974065 + name 1_38_KEY_MLEFT + 2149974066 + name 1_38_KEY_MRIGHT + 2149974067 + name 1_38_KEY_FF + 2149974068 + name 1_38_KEY_PLAY + 2149974069 + name 1_38_KEY_REW + 2149974070 + name 1_38_KEY_REC + 2149974071 + name 1_38_KEY_PAUSE + 2149974072 + name 1_38_KEY_STOP + 2149974073 + name 0_39_KEY_0 + 2555904 + name 0_39_KEY_1 + 2555905 + name 0_39_KEY_2 + 2555906 + name 0_39_KEY_3 + 2555907 + name 0_39_KEY_4 + 2555908 + name 0_39_KEY_5 + 2555909 + name 0_39_KEY_6 + 2555910 + name 0_39_KEY_7 + 2555911 + name 0_39_KEY_8 + 2555912 + name 0_39_KEY_9 + 2555913 + name 0_39_KEY_POWER + 2555914 + name 0_39_KEY_CH_UP + 2555919 + name 0_39_KEY_CH_DOWN + 2555920 + name 0_39_CH_PREVIOUS + 2555923 + name 0_39_KEY_ENTER + 2555947 + name 1_39_KEY_0 + 2150039552 + name 1_39_KEY_1 + 2150039553 + name 1_39_KEY_2 + 2150039554 + name 1_39_KEY_3 + 2150039555 + name 1_39_KEY_4 + 2150039556 + name 1_39_KEY_5 + 2150039557 + name 1_39_KEY_6 + 2150039558 + name 1_39_KEY_7 + 2150039559 + name 1_39_KEY_8 + 2150039560 + name 1_39_KEY_9 + 2150039561 + name 1_39_KEY_POWER + 2150039562 + name 1_39_KEY_CH_UP + 2150039567 + name 1_39_KEY_CH_DOWN + 2150039568 + name 1_39_KEY_MUTE + 2150039569 + name 1_39_KEY_VOL_DOWN + 2150039570 + name 1_39_CH_PREVIOUS + 2150039571 + name 1_39_KEY_VOL_UP + 2150039572 + name 1_39_KEY_DISPLAY + 2150039573 + name 1_39_KEY_EXIT + 2150039576 + name 1_39_KEY_INPUT + 2150039578 + name 1_39_KEY_GUIDE + 2150039579 + name 1_39_KEY_SELECT + 2150039582 + name 1_39_KEY_AV + 2150039593 + name 1_39_KEY_SAT + 2150039594 + name 1_39_KEY_ENTER + 2150039595 + name 1_39_KEY_MENU + 2150039599 + name 1_39_KEY_MUP + 2150039600 + name 1_39_KEY_MDOWN + 2150039601 + name 1_39_KEY_MLEFT + 2150039602 + name 1_39_KEY_MRIGHT + 2150039603 + name 1_39_KEY_FF + 2150039604 + name 1_39_KEY_PLAY + 2150039605 + name 1_39_KEY_REW + 2150039606 + name 1_39_KEY_REC + 2150039607 + name 1_39_KEY_PAUSE + 2150039608 + name 1_39_KEY_STOP + 2150039609 + name 0_40_KEY_0 + 2621440 + name 0_40_KEY_1 + 2621441 + name 0_40_KEY_2 + 2621442 + name 0_40_KEY_3 + 2621443 + name 0_40_KEY_4 + 2621444 + name 0_40_KEY_5 + 2621445 + name 0_40_KEY_6 + 2621446 + name 0_40_KEY_7 + 2621447 + name 0_40_KEY_8 + 2621448 + name 0_40_KEY_9 + 2621449 + name 0_40_KEY_POWER + 2621450 + name 0_40_KEY_CH_UP + 2621455 + name 0_40_KEY_CH_DOWN + 2621456 + name 0_40_CH_PREVIOUS + 2621459 + name 0_40_KEY_ENTER + 2621483 + name 1_40_KEY_0 + 2150105088 + name 1_40_KEY_1 + 2150105089 + name 1_40_KEY_2 + 2150105090 + name 1_40_KEY_3 + 2150105091 + name 1_40_KEY_4 + 2150105092 + name 1_40_KEY_5 + 2150105093 + name 1_40_KEY_6 + 2150105094 + name 1_40_KEY_7 + 2150105095 + name 1_40_KEY_8 + 2150105096 + name 1_40_KEY_9 + 2150105097 + name 1_40_KEY_POWER + 2150105098 + name 1_40_CH_PREVIOUS + 2150105107 + name 1_40_KEY_EXIT + 2150105112 + name 1_40_KEY_GUIDE + 2150105115 + name 1_40_KEY_FAV + 2150105117 + name 1_40_KEY_SELECT + 2150105118 + name 1_40_KEY_MENU + 2150105135 + name 1_40_KEY_MUP + 2150105136 + name 1_40_KEY_MDOWN + 2150105137 + name 1_40_KEY_MLEFT + 2150105138 + name 1_40_KEY_MRIGHT + 2150105139 + name 0_41_KEY_0 + 2686976 + name 0_41_KEY_1 + 2686977 + name 0_41_KEY_2 + 2686978 + name 0_41_KEY_3 + 2686979 + name 0_41_KEY_4 + 2686980 + name 0_41_KEY_5 + 2686981 + name 0_41_KEY_6 + 2686982 + name 0_41_KEY_7 + 2686983 + name 0_41_KEY_8 + 2686984 + name 0_41_KEY_9 + 2686985 + name 0_41_KEY_POWER + 2686986 + name 0_41_KEY_CH_UP + 2686991 + name 0_41_KEY_CH_DOWN + 2686992 + name 0_41_CH_PREVIOUS + 2686995 + name 0_41_KEY_ENTER + 2687019 + name 1_41_KEY_0 + 2150170624 + name 1_41_KEY_1 + 2150170625 + name 1_41_KEY_2 + 2150170626 + name 1_41_KEY_3 + 2150170627 + name 1_41_KEY_4 + 2150170628 + name 1_41_KEY_5 + 2150170629 + name 1_41_KEY_6 + 2150170630 + name 1_41_KEY_7 + 2150170631 + name 1_41_KEY_8 + 2150170632 + name 1_41_KEY_9 + 2150170633 + name 1_41_KEY_POWER + 2150170634 + name 1_41_KEY_CH_UP + 2150170639 + name 1_41_KEY_CH_DOWN + 2150170640 + name 1_41_KEY_MUTE + 2150170641 + name 1_41_KEY_VOL_DOWN + 2150170642 + name 1_41_CH_PREVIOUS + 2150170643 + name 1_41_KEY_VOL_UP + 2150170644 + name 1_41_KEY_GUIDE + 2150170651 + name 1_41_KEY_FAV + 2150170653 + name 1_41_KEY_SELECT + 2150170654 + name 0_42_KEY_0 + 2752512 + name 0_42_KEY_1 + 2752513 + name 0_42_KEY_2 + 2752514 + name 0_42_KEY_3 + 2752515 + name 0_42_KEY_4 + 2752516 + name 0_42_KEY_5 + 2752517 + name 0_42_KEY_6 + 2752518 + name 0_42_KEY_7 + 2752519 + name 0_42_KEY_8 + 2752520 + name 0_42_KEY_9 + 2752521 + name 0_42_KEY_POWER + 2752522 + name 0_42_KEY_CH_UP + 2752527 + name 0_42_KEY_CH_DOWN + 2752528 + name 0_42_CH_PREVIOUS + 2752531 + name 0_42_KEY_ENTER + 2752555 + name 1_42_KEY_0 + 2150236160 + name 1_42_KEY_1 + 2150236161 + name 1_42_KEY_2 + 2150236162 + name 1_42_KEY_3 + 2150236163 + name 1_42_KEY_4 + 2150236164 + name 1_42_KEY_5 + 2150236165 + name 1_42_KEY_6 + 2150236166 + name 1_42_KEY_7 + 2150236167 + name 1_42_KEY_8 + 2150236168 + name 1_42_KEY_9 + 2150236169 + name 1_42_KEY_POWER + 2150236170 + name 1_42_CH_PREVIOUS + 2150236179 + name 1_42_KEY_EXIT + 2150236184 + name 1_42_KEY_GUIDE + 2150236187 + name 1_42_KEY_FAV + 2150236189 + name 1_42_KEY_SELECT + 2150236190 + name 1_42_KEY_MENU + 2150236207 + name 1_42_KEY_MUP + 2150236208 + name 1_42_KEY_MDOWN + 2150236209 + name 1_42_KEY_MLEFT + 2150236210 + name 1_42_KEY_MRIGHT + 2150236211 + name 0_43_KEY_0 + 2818048 + name 0_43_KEY_1 + 2818049 + name 0_43_KEY_2 + 2818050 + name 0_43_KEY_3 + 2818051 + name 0_43_KEY_4 + 2818052 + name 0_43_KEY_5 + 2818053 + name 0_43_KEY_6 + 2818054 + name 0_43_KEY_7 + 2818055 + name 0_43_KEY_8 + 2818056 + name 0_43_KEY_9 + 2818057 + name 0_43_KEY_POWER + 2818058 + name 0_43_KEY_CH_UP + 2818063 + name 0_43_KEY_CH_DOWN + 2818064 + name 0_43_CH_PREVIOUS + 2818067 + name 0_43_KEY_ENTER + 2818091 + name 1_43_KEY_0 + 2150301696 + name 1_43_KEY_1 + 2150301697 + name 1_43_KEY_2 + 2150301698 + name 1_43_KEY_3 + 2150301699 + name 1_43_KEY_4 + 2150301700 + name 1_43_KEY_5 + 2150301701 + name 1_43_KEY_6 + 2150301702 + name 1_43_KEY_7 + 2150301703 + name 1_43_KEY_8 + 2150301704 + name 1_43_KEY_9 + 2150301705 + name 1_43_KEY_POWER + 2150301706 + name 1_43_CH_PREVIOUS + 2150301715 + name 1_43_KEY_EXIT + 2150301720 + name 1_43_KEY_SELECT + 2150301726 + name 1_43_KEY_MENU + 2150301743 + name 1_43_KEY_MUP + 2150301744 + name 1_43_KEY_MDOWN + 2150301745 + name 1_43_KEY_MLEFT + 2150301746 + name 1_43_KEY_MRIGHT + 2150301747 + name 0_44_KEY_0 + 2883584 + name 0_44_KEY_1 + 2883585 + name 0_44_KEY_2 + 2883586 + name 0_44_KEY_3 + 2883587 + name 0_44_KEY_4 + 2883588 + name 0_44_KEY_5 + 2883589 + name 0_44_KEY_6 + 2883590 + name 0_44_KEY_7 + 2883591 + name 0_44_KEY_8 + 2883592 + name 0_44_KEY_9 + 2883593 + name 0_44_KEY_POWER + 2883594 + name 0_44_KEY_CH_UP + 2883599 + name 0_44_KEY_CH_DOWN + 2883600 + name 0_44_CH_PREVIOUS + 2883603 + name 0_44_KEY_ENTER + 2883627 + name 1_44_KEY_0 + 2150367232 + name 1_44_KEY_1 + 2150367233 + name 1_44_KEY_2 + 2150367234 + name 1_44_KEY_3 + 2150367235 + name 1_44_KEY_4 + 2150367236 + name 1_44_KEY_5 + 2150367237 + name 1_44_KEY_6 + 2150367238 + name 1_44_KEY_7 + 2150367239 + name 1_44_KEY_8 + 2150367240 + name 1_44_KEY_9 + 2150367241 + name 1_44_KEY_POWER + 2150367242 + name 1_44_KEY_CH_UP + 2150367247 + name 1_44_KEY_CH_DOWN + 2150367248 + name 1_44_KEY_MUTE + 2150367249 + name 1_44_KEY_VOL_DOWN + 2150367250 + name 1_44_CH_PREVIOUS + 2150367251 + name 1_44_KEY_VOL_UP + 2150367252 + name 1_44_KEY_GUIDE + 2150367259 + name 1_44_KEY_FAV + 2150367261 + name 1_44_KEY_ENTER + 2150367275 + name 0_45_KEY_0 + 2949120 + name 0_45_KEY_1 + 2949121 + name 0_45_KEY_2 + 2949122 + name 0_45_KEY_3 + 2949123 + name 0_45_KEY_4 + 2949124 + name 0_45_KEY_5 + 2949125 + name 0_45_KEY_6 + 2949126 + name 0_45_KEY_7 + 2949127 + name 0_45_KEY_8 + 2949128 + name 0_45_KEY_9 + 2949129 + name 0_45_KEY_POWER + 2949130 + name 0_45_KEY_CH_UP + 2949135 + name 0_45_KEY_CH_DOWN + 2949136 + name 0_45_KEY_ENTER + 2949163 + name 1_45_KEY_0 + 2150432768 + name 1_45_KEY_1 + 2150432769 + name 1_45_KEY_2 + 2150432770 + name 1_45_KEY_3 + 2150432771 + name 1_45_KEY_4 + 2150432772 + name 1_45_KEY_5 + 2150432773 + name 1_45_KEY_6 + 2150432774 + name 1_45_KEY_7 + 2150432775 + name 1_45_KEY_8 + 2150432776 + name 1_45_KEY_9 + 2150432777 + name 1_45_KEY_POWER + 2150432778 + name 1_45_KEY_CH_UP + 2150432783 + name 1_45_KEY_CH_DOWN + 2150432784 + name 1_45_CH_PREVIOUS + 2150432787 + name 1_45_KEY_DISPLAY + 2150432789 + name 1_45_KEY_EXIT + 2150432792 + name 1_45_KEY_GUIDE + 2150432795 + name 1_45_KEY_FAV + 2150432797 + name 1_45_KEY_SELECT + 2150432798 + name 1_45_KEY_ENTER + 2150432811 + name 1_45_KEY_MENU + 2150432815 + name 1_45_KEY_MUP + 2150432816 + name 1_45_KEY_MDOWN + 2150432817 + name 1_45_KEY_MLEFT + 2150432818 + name 1_45_KEY_MRIGHT + 2150432819 + name 0_46_KEY_0 + 3014656 + name 0_46_KEY_1 + 3014657 + name 0_46_KEY_2 + 3014658 + name 0_46_KEY_3 + 3014659 + name 0_46_KEY_4 + 3014660 + name 0_46_KEY_5 + 3014661 + name 0_46_KEY_6 + 3014662 + name 0_46_KEY_7 + 3014663 + name 0_46_KEY_8 + 3014664 + name 0_46_KEY_9 + 3014665 + name 0_46_KEY_POWER + 3014666 + name 0_46_KEY_CH_UP + 3014671 + name 0_46_KEY_CH_DOWN + 3014672 + name 0_46_CH_PREVIOUS + 3014675 + name 0_46_KEY_ENTER + 3014699 + name 1_46_KEY_0 + 2150498304 + name 1_46_KEY_1 + 2150498305 + name 1_46_KEY_2 + 2150498306 + name 1_46_KEY_3 + 2150498307 + name 1_46_KEY_4 + 2150498308 + name 1_46_KEY_5 + 2150498309 + name 1_46_KEY_6 + 2150498310 + name 1_46_KEY_7 + 2150498311 + name 1_46_KEY_8 + 2150498312 + name 1_46_KEY_9 + 2150498313 + name 1_46_KEY_POWER + 2150498314 + name 1_46_KEY_CH_UP + 2150498319 + name 1_46_KEY_CH_DOWN + 2150498320 + name 1_46_KEY_MUTE + 2150498321 + name 1_46_KEY_VOL_DOWN + 2150498322 + name 1_46_CH_PREVIOUS + 2150498323 + name 1_46_KEY_VOL_UP + 2150498324 + name 1_46_KEY_FAV + 2150498333 + name 1_46_KEY_ENTER + 2150498347 + name 0_47_KEY_0 + 3080192 + name 0_47_KEY_1 + 3080193 + name 0_47_KEY_2 + 3080194 + name 0_47_KEY_3 + 3080195 + name 0_47_KEY_4 + 3080196 + name 0_47_KEY_5 + 3080197 + name 0_47_KEY_6 + 3080198 + name 0_47_KEY_7 + 3080199 + name 0_47_KEY_8 + 3080200 + name 0_47_KEY_9 + 3080201 + name 0_47_KEY_POWER + 3080202 + name 0_47_KEY_CH_UP + 3080207 + name 0_47_KEY_CH_DOWN + 3080208 + name 0_47_CH_PREVIOUS + 3080211 + name 1_47_KEY_POWER + 2150563850 + name 1_47_KEY_CH_UP + 2150563855 + name 1_47_KEY_CH_DOWN + 2150563856 + name 1_47_KEY_MUTE + 2150563857 + name 1_47_KEY_VOL_DOWN + 2150563858 + name 1_47_KEY_VOL_UP + 2150563860 + name 1_47_KEY_SAT + 2150563882 + name 1_47_KEY_ENTER + 2150563883 + name 0_48_KEY_0 + 3145728 + name 0_48_KEY_1 + 3145729 + name 0_48_KEY_2 + 3145730 + name 0_48_KEY_3 + 3145731 + name 0_48_KEY_4 + 3145732 + name 0_48_KEY_5 + 3145733 + name 0_48_KEY_6 + 3145734 + name 0_48_KEY_7 + 3145735 + name 0_48_KEY_8 + 3145736 + name 0_48_KEY_9 + 3145737 + name 0_48_KEY_POWER + 3145738 + name 0_48_KEY_CH_UP + 3145743 + name 0_48_KEY_CH_DOWN + 3145744 + name 0_48_CH_PREVIOUS + 3145747 + name 0_48_KEY_ENTER + 3145771 + name 1_48_KEY_0 + 2150629376 + name 1_48_KEY_1 + 2150629377 + name 1_48_KEY_2 + 2150629378 + name 1_48_KEY_3 + 2150629379 + name 1_48_KEY_4 + 2150629380 + name 1_48_KEY_5 + 2150629381 + name 1_48_KEY_6 + 2150629382 + name 1_48_KEY_7 + 2150629383 + name 1_48_KEY_8 + 2150629384 + name 1_48_KEY_9 + 2150629385 + name 1_48_KEY_POWER + 2150629386 + name 1_48_KEY_CH_UP + 2150629391 + name 1_48_KEY_CH_DOWN + 2150629392 + name 1_48_KEY_MUTE + 2150629393 + name 1_48_KEY_VOL_DOWN + 2150629394 + name 1_48_KEY_VOL_UP + 2150629396 + name 1_48_KEY_CKU + 2150629416 + name 1_48_KEY_SAT + 2150629418 + name 0_49_KEY_0 + 3211264 + name 0_49_KEY_1 + 3211265 + name 0_49_KEY_2 + 3211266 + name 0_49_KEY_3 + 3211267 + name 0_49_KEY_4 + 3211268 + name 0_49_KEY_5 + 3211269 + name 0_49_KEY_6 + 3211270 + name 0_49_KEY_7 + 3211271 + name 0_49_KEY_8 + 3211272 + name 0_49_KEY_9 + 3211273 + name 0_49_KEY_POWER + 3211274 + name 0_49_KEY_CH_UP + 3211279 + name 0_49_KEY_CH_DOWN + 3211280 + name 0_49_CH_PREVIOUS + 3211283 + name 0_49_KEY_ENTER + 3211307 + name 1_49_KEY_0 + 2150694912 + name 1_49_KEY_1 + 2150694913 + name 1_49_KEY_2 + 2150694914 + name 1_49_KEY_3 + 2150694915 + name 1_49_KEY_4 + 2150694916 + name 1_49_KEY_5 + 2150694917 + name 1_49_KEY_6 + 2150694918 + name 1_49_KEY_7 + 2150694919 + name 1_49_KEY_8 + 2150694920 + name 1_49_KEY_9 + 2150694921 + name 1_49_KEY_POWER + 2150694922 + name 1_49_KEY_CH_UP + 2150694927 + name 1_49_KEY_CH_DOWN + 2150694928 + name 1_49_KEY_MUTE + 2150694929 + name 1_49_KEY_VOL_DOWN + 2150694930 + name 1_49_KEY_VOL_UP + 2150694932 + name 0_50_KEY_0 + 3276800 + name 0_50_KEY_1 + 3276801 + name 0_50_KEY_2 + 3276802 + name 0_50_KEY_3 + 3276803 + name 0_50_KEY_4 + 3276804 + name 0_50_KEY_5 + 3276805 + name 0_50_KEY_6 + 3276806 + name 0_50_KEY_7 + 3276807 + name 0_50_KEY_8 + 3276808 + name 0_50_KEY_9 + 3276809 + name 0_50_KEY_POWER + 3276810 + name 0_50_KEY_CH_UP + 3276815 + name 0_50_KEY_CH_DOWN + 3276816 + name 0_50_KEY_ENTER + 3276843 + name 1_50_KEY_0 + 2150760448 + name 1_50_KEY_1 + 2150760449 + name 1_50_KEY_2 + 2150760450 + name 1_50_KEY_3 + 2150760451 + name 1_50_KEY_4 + 2150760452 + name 1_50_KEY_5 + 2150760453 + name 1_50_KEY_6 + 2150760454 + name 1_50_KEY_7 + 2150760455 + name 1_50_KEY_8 + 2150760456 + name 1_50_KEY_9 + 2150760457 + name 1_50_KEY_POWER + 2150760458 + name 1_50_KEY_CH_UP + 2150760463 + name 1_50_KEY_CH_DOWN + 2150760464 + name 1_50_CH_PREVIOUS + 2150760467 + name 1_50_KEY_FAV + 2150760477 + name 1_50_KEY_ENTER + 2150760491 + name 0_51_KEY_0 + 3342336 + name 0_51_KEY_1 + 3342337 + name 0_51_KEY_2 + 3342338 + name 0_51_KEY_3 + 3342339 + name 0_51_KEY_4 + 3342340 + name 0_51_KEY_5 + 3342341 + name 0_51_KEY_6 + 3342342 + name 0_51_KEY_7 + 3342343 + name 0_51_KEY_8 + 3342344 + name 0_51_KEY_9 + 3342345 + name 0_51_KEY_POWER + 3342346 + name 0_51_KEY_CH_UP + 3342351 + name 0_51_KEY_CH_DOWN + 3342352 + name 0_51_CH_PREVIOUS + 3342355 + name 0_51_KEY_ENTER + 3342379 + name 1_51_KEY_0 + 2150825984 + name 1_51_KEY_1 + 2150825985 + name 1_51_KEY_2 + 2150825986 + name 1_51_KEY_3 + 2150825987 + name 1_51_KEY_4 + 2150825988 + name 1_51_KEY_5 + 2150825989 + name 1_51_KEY_6 + 2150825990 + name 1_51_KEY_7 + 2150825991 + name 1_51_KEY_8 + 2150825992 + name 1_51_KEY_9 + 2150825993 + name 1_51_KEY_POWER + 2150825994 + name 1_51_KEY_CH_UP + 2150825999 + name 1_51_KEY_CH_DOWN + 2150826000 + name 1_51_KEY_MUTE + 2150826001 + name 1_51_KEY_VOL_DOWN + 2150826002 + name 1_51_KEY_VOL_UP + 2150826004 + name 1_51_KEY_EXIT + 2150826008 + name 1_51_KEY_CKU + 2150826024 + name 1_51_KEY_AV + 2150826025 + name 1_51_KEY_SAT + 2150826026 + name 1_51_KEY_ENTER + 2150826027 + name 1_51_KEY_MENU + 2150826031 + name 1_51_KEY_MUP + 2150826032 + name 1_51_KEY_MDOWN + 2150826033 + name 1_51_KEY_MLEFT + 2150826034 + name 1_51_KEY_MRIGHT + 2150826035 + name 1_51_KEY_Help + 2150826048 + name 1_51_KEY_Setup + 2150826049 + name 0_52_KEY_0 + 3407872 + name 0_52_KEY_1 + 3407873 + name 0_52_KEY_2 + 3407874 + name 0_52_KEY_3 + 3407875 + name 0_52_KEY_4 + 3407876 + name 0_52_KEY_5 + 3407877 + name 0_52_KEY_6 + 3407878 + name 0_52_KEY_7 + 3407879 + name 0_52_KEY_8 + 3407880 + name 0_52_KEY_9 + 3407881 + name 0_52_KEY_POWER + 3407882 + name 0_52_KEY_CH_UP + 3407887 + name 0_52_KEY_CH_DOWN + 3407888 + name 0_52_CH_PREVIOUS + 3407891 + name 0_52_KEY_ENTER + 3407915 + name 1_52_KEY_0 + 2150891520 + name 1_52_KEY_1 + 2150891521 + name 1_52_KEY_2 + 2150891522 + name 1_52_KEY_3 + 2150891523 + name 1_52_KEY_4 + 2150891524 + name 1_52_KEY_5 + 2150891525 + name 1_52_KEY_6 + 2150891526 + name 1_52_KEY_7 + 2150891527 + name 1_52_KEY_8 + 2150891528 + name 1_52_KEY_9 + 2150891529 + name 1_52_KEY_POWER + 2150891530 + name 1_52_KEY_CH_UP + 2150891535 + name 1_52_KEY_CH_DOWN + 2150891536 + name 1_52_KEY_MUTE + 2150891537 + name 1_52_KEY_VOL_DOWN + 2150891538 + name 1_52_CH_PREVIOUS + 2150891539 + name 1_52_KEY_VOL_UP + 2150891540 + name 1_52_KEY_EXIT + 2150891544 + name 1_52_KEY_FAV + 2150891549 + name 1_52_KEY_SAT + 2150891562 + name 1_52_KEY_ENTER + 2150891563 + name 1_52_KEY_MENU + 2150891567 + name 1_52_KEY_MUP + 2150891568 + name 1_52_KEY_MDOWN + 2150891569 + name 1_52_KEY_MLEFT + 2150891570 + name 1_52_KEY_MRIGHT + 2150891571 + name 1_52_KEY_Help + 2150891584 + name 1_52_KEY_Setup + 2150891585 + name 0_53_KEY_0 + 3473408 + name 0_53_KEY_1 + 3473409 + name 0_53_KEY_2 + 3473410 + name 0_53_KEY_3 + 3473411 + name 0_53_KEY_4 + 3473412 + name 0_53_KEY_5 + 3473413 + name 0_53_KEY_6 + 3473414 + name 0_53_KEY_7 + 3473415 + name 0_53_KEY_8 + 3473416 + name 0_53_KEY_9 + 3473417 + name 0_53_KEY_POWER + 3473418 + name 0_53_KEY_CH_UP + 3473423 + name 0_53_KEY_CH_DOWN + 3473424 + name 0_53_CH_PREVIOUS + 3473427 + name 0_53_KEY_ENTER + 3473451 + name 1_53_KEY_0 + 2150957056 + name 1_53_KEY_1 + 2150957057 + name 1_53_KEY_2 + 2150957058 + name 1_53_KEY_3 + 2150957059 + name 1_53_KEY_4 + 2150957060 + name 1_53_KEY_5 + 2150957061 + name 1_53_KEY_6 + 2150957062 + name 1_53_KEY_7 + 2150957063 + name 1_53_KEY_8 + 2150957064 + name 1_53_KEY_9 + 2150957065 + name 1_53_KEY_POWER + 2150957066 + name 1_53_KEY_CH_UP + 2150957071 + name 1_53_KEY_CH_DOWN + 2150957072 + name 1_53_KEY_MUTE + 2150957073 + name 1_53_KEY_VOL_DOWN + 2150957074 + name 1_53_KEY_VOL_UP + 2150957076 + name 1_53_KEY_EXIT + 2150957080 + name 1_53_KEY_FAV + 2150957085 + name 1_53_KEY_SAT + 2150957098 + name 1_53_KEY_ENTER + 2150957099 + name 1_53_KEY_MENU + 2150957103 + name 1_53_KEY_MUP + 2150957104 + name 1_53_KEY_MDOWN + 2150957105 + name 1_53_KEY_MLEFT + 2150957106 + name 1_53_KEY_MRIGHT + 2150957107 + name 1_53_KEY_Help + 2150957120 + name 1_53_KEY_Setup + 2150957121 + name 0_54_KEY_0 + 3538944 + name 0_54_KEY_1 + 3538945 + name 0_54_KEY_2 + 3538946 + name 0_54_KEY_3 + 3538947 + name 0_54_KEY_4 + 3538948 + name 0_54_KEY_5 + 3538949 + name 0_54_KEY_6 + 3538950 + name 0_54_KEY_7 + 3538951 + name 0_54_KEY_8 + 3538952 + name 0_54_KEY_9 + 3538953 + name 0_54_KEY_POWER + 3538954 + name 0_54_KEY_CH_UP + 3538959 + name 0_54_KEY_CH_DOWN + 3538960 + name 0_54_KEY_ENTER + 3538987 + name 1_54_KEY_0 + 2151022592 + name 1_54_KEY_1 + 2151022593 + name 1_54_KEY_2 + 2151022594 + name 1_54_KEY_3 + 2151022595 + name 1_54_KEY_4 + 2151022596 + name 1_54_KEY_5 + 2151022597 + name 1_54_KEY_6 + 2151022598 + name 1_54_KEY_7 + 2151022599 + name 1_54_KEY_8 + 2151022600 + name 1_54_KEY_9 + 2151022601 + name 1_54_KEY_POWER + 2151022602 + name 1_54_KEY_CH_UP + 2151022607 + name 1_54_KEY_CH_DOWN + 2151022608 + name 1_54_KEY_VOL_DOWN + 2151022610 + name 1_54_KEY_VOL_UP + 2151022612 + name 1_54_KEY_CKU + 2151022632 + name 1_54_KEY_ENTER + 2151022635 + name 0_55_KEY_0 + 3604480 + name 0_55_KEY_1 + 3604481 + name 0_55_KEY_2 + 3604482 + name 0_55_KEY_3 + 3604483 + name 0_55_KEY_4 + 3604484 + name 0_55_KEY_5 + 3604485 + name 0_55_KEY_6 + 3604486 + name 0_55_KEY_7 + 3604487 + name 0_55_KEY_8 + 3604488 + name 0_55_KEY_9 + 3604489 + name 0_55_KEY_POWER + 3604490 + name 0_55_KEY_CH_UP + 3604495 + name 0_55_KEY_CH_DOWN + 3604496 + name 0_55_CH_PREVIOUS + 3604499 + name 0_55_KEY_ENTER + 3604523 + name 1_55_KEY_0 + 2151088128 + name 1_55_KEY_1 + 2151088129 + name 1_55_KEY_2 + 2151088130 + name 1_55_KEY_3 + 2151088131 + name 1_55_KEY_4 + 2151088132 + name 1_55_KEY_5 + 2151088133 + name 1_55_KEY_6 + 2151088134 + name 1_55_KEY_7 + 2151088135 + name 1_55_KEY_8 + 2151088136 + name 1_55_KEY_9 + 2151088137 + name 1_55_KEY_POWER + 2151088138 + name 1_55_KEY_CH_UP + 2151088143 + name 1_55_KEY_CH_DOWN + 2151088144 + name 1_55_KEY_MUTE + 2151088145 + name 1_55_KEY_VOL_DOWN + 2151088146 + name 1_55_KEY_VOL_UP + 2151088148 + name 1_55_KEY_DISPLAY + 2151088149 + name 1_55_KEY_CKU + 2151088168 + name 1_55_KEY_SAT + 2151088170 + name 1_55_KEY_ENTER + 2151088171 + name 0_56_KEY_0 + 3670016 + name 0_56_KEY_1 + 3670017 + name 0_56_KEY_2 + 3670018 + name 0_56_KEY_3 + 3670019 + name 0_56_KEY_4 + 3670020 + name 0_56_KEY_5 + 3670021 + name 0_56_KEY_6 + 3670022 + name 0_56_KEY_7 + 3670023 + name 0_56_KEY_8 + 3670024 + name 0_56_KEY_9 + 3670025 + name 0_56_KEY_POWER + 3670026 + name 0_56_KEY_CH_UP + 3670031 + name 0_56_KEY_CH_DOWN + 3670032 + name 0_56_CH_PREVIOUS + 3670035 + name 0_56_KEY_ENTER + 3670059 + name 1_56_KEY_0 + 2151153664 + name 1_56_KEY_1 + 2151153665 + name 1_56_KEY_2 + 2151153666 + name 1_56_KEY_3 + 2151153667 + name 1_56_KEY_4 + 2151153668 + name 1_56_KEY_5 + 2151153669 + name 1_56_KEY_6 + 2151153670 + name 1_56_KEY_7 + 2151153671 + name 1_56_KEY_8 + 2151153672 + name 1_56_KEY_9 + 2151153673 + name 1_56_KEY_POWER + 2151153674 + name 1_56_KEY_CH_UP + 2151153679 + name 1_56_KEY_CH_DOWN + 2151153680 + name 1_56_KEY_VOL_DOWN + 2151153682 + name 1_56_KEY_VOL_UP + 2151153684 + name 0_57_KEY_0 + 3735552 + name 0_57_KEY_1 + 3735553 + name 0_57_KEY_2 + 3735554 + name 0_57_KEY_3 + 3735555 + name 0_57_KEY_4 + 3735556 + name 0_57_KEY_5 + 3735557 + name 0_57_KEY_6 + 3735558 + name 0_57_KEY_7 + 3735559 + name 0_57_KEY_8 + 3735560 + name 0_57_KEY_9 + 3735561 + name 0_57_KEY_POWER + 3735562 + name 0_57_KEY_CH_UP + 3735567 + name 0_57_KEY_CH_DOWN + 3735568 + name 0_57_CH_PREVIOUS + 3735571 + name 0_57_KEY_ENTER + 3735595 + name 1_57_KEY_0 + 2151219200 + name 1_57_KEY_1 + 2151219201 + name 1_57_KEY_2 + 2151219202 + name 1_57_KEY_3 + 2151219203 + name 1_57_KEY_4 + 2151219204 + name 1_57_KEY_5 + 2151219205 + name 1_57_KEY_6 + 2151219206 + name 1_57_KEY_7 + 2151219207 + name 1_57_KEY_8 + 2151219208 + name 1_57_KEY_9 + 2151219209 + name 1_57_KEY_POWER + 2151219210 + name 1_57_KEY_CH_UP + 2151219215 + name 1_57_KEY_CH_DOWN + 2151219216 + name 1_57_KEY_VOL_DOWN + 2151219218 + name 1_57_KEY_VOL_UP + 2151219220 + name 1_57_KEY_DISPLAY + 2151219221 + name 1_57_KEY_FAV + 2151219229 + name 1_57_KEY_CKU + 2151219240 + name 1_57_KEY_ENTER + 2151219243 + name 0_58_KEY_0 + 3801088 + name 0_58_KEY_1 + 3801089 + name 0_58_KEY_2 + 3801090 + name 0_58_KEY_3 + 3801091 + name 0_58_KEY_4 + 3801092 + name 0_58_KEY_5 + 3801093 + name 0_58_KEY_6 + 3801094 + name 0_58_KEY_7 + 3801095 + name 0_58_KEY_8 + 3801096 + name 0_58_KEY_9 + 3801097 + name 0_58_KEY_POWER + 3801098 + name 0_58_KEY_CH_UP + 3801103 + name 0_58_KEY_CH_DOWN + 3801104 + name 0_58_CH_PREVIOUS + 3801107 + name 0_58_KEY_ENTER + 3801131 + name 1_58_KEY_0 + 2151284736 + name 1_58_KEY_1 + 2151284737 + name 1_58_KEY_2 + 2151284738 + name 1_58_KEY_3 + 2151284739 + name 1_58_KEY_4 + 2151284740 + name 1_58_KEY_5 + 2151284741 + name 1_58_KEY_6 + 2151284742 + name 1_58_KEY_7 + 2151284743 + name 1_58_KEY_8 + 2151284744 + name 1_58_KEY_9 + 2151284745 + name 1_58_KEY_POWER + 2151284746 + name 1_58_KEY_CH_UP + 2151284751 + name 1_58_KEY_CH_DOWN + 2151284752 + name 1_58_KEY_MUTE + 2151284753 + name 1_58_KEY_VOL_DOWN + 2151284754 + name 1_58_CH_PREVIOUS + 2151284755 + name 1_58_KEY_VOL_UP + 2151284756 + name 1_58_KEY_ENTER + 2151284779 + name 1_58_KEY_MENU + 2151284783 + name 1_58_KEY_MUP + 2151284784 + name 1_58_KEY_MDOWN + 2151284785 + name 1_58_KEY_MLEFT + 2151284786 + name 1_58_KEY_MRIGHT + 2151284787 + name 0_59_KEY_0 + 3866624 + name 0_59_KEY_1 + 3866625 + name 0_59_KEY_2 + 3866626 + name 0_59_KEY_3 + 3866627 + name 0_59_KEY_4 + 3866628 + name 0_59_KEY_5 + 3866629 + name 0_59_KEY_6 + 3866630 + name 0_59_KEY_7 + 3866631 + name 0_59_KEY_8 + 3866632 + name 0_59_KEY_9 + 3866633 + name 0_59_KEY_POWER + 3866634 + name 0_59_KEY_CH_UP + 3866639 + name 0_59_KEY_CH_DOWN + 3866640 + name 0_59_CH_PREVIOUS + 3866643 + name 0_59_KEY_ENTER + 3866667 + name 1_59_KEY_0 + 2151350272 + name 1_59_KEY_1 + 2151350273 + name 1_59_KEY_2 + 2151350274 + name 1_59_KEY_3 + 2151350275 + name 1_59_KEY_4 + 2151350276 + name 1_59_KEY_5 + 2151350277 + name 1_59_KEY_6 + 2151350278 + name 1_59_KEY_7 + 2151350279 + name 1_59_KEY_8 + 2151350280 + name 1_59_KEY_9 + 2151350281 + name 1_59_KEY_POWER + 2151350282 + name 1_59_KEY_CH_UP + 2151350287 + name 1_59_KEY_CH_DOWN + 2151350288 + name 1_59_KEY_VOL_DOWN + 2151350290 + name 1_59_CH_PREVIOUS + 2151350291 + name 1_59_KEY_VOL_UP + 2151350292 + name 1_59_KEY_SELECT + 2151350302 + name 1_59_KEY_ENTER + 2151350315 + name 0_60_KEY_0 + 3932160 + name 0_60_KEY_1 + 3932161 + name 0_60_KEY_2 + 3932162 + name 0_60_KEY_3 + 3932163 + name 0_60_KEY_4 + 3932164 + name 0_60_KEY_5 + 3932165 + name 0_60_KEY_6 + 3932166 + name 0_60_KEY_7 + 3932167 + name 0_60_KEY_8 + 3932168 + name 0_60_KEY_9 + 3932169 + name 0_60_KEY_POWER + 3932170 + name 0_60_KEY_CH_UP + 3932175 + name 0_60_KEY_CH_DOWN + 3932176 + name 1_60_KEY_0 + 2151415808 + name 1_60_KEY_1 + 2151415809 + name 1_60_KEY_2 + 2151415810 + name 1_60_KEY_3 + 2151415811 + name 1_60_KEY_4 + 2151415812 + name 1_60_KEY_5 + 2151415813 + name 1_60_KEY_6 + 2151415814 + name 1_60_KEY_7 + 2151415815 + name 1_60_KEY_8 + 2151415816 + name 1_60_KEY_9 + 2151415817 + name 1_60_KEY_POWER + 2151415818 + name 1_60_KEY_CH_UP + 2151415823 + name 1_60_KEY_CH_DOWN + 2151415824 + name 1_60_KEY_MUTE + 2151415825 + name 1_60_KEY_VOL_DOWN + 2151415826 + name 1_60_KEY_VOL_UP + 2151415828 + name 1_60_KEY_EXIT + 2151415832 + name 1_60_KEY_CKU + 2151415848 + name 1_60_KEY_ENTER + 2151415851 + name 1_60_KEY_MENU + 2151415855 + name 1_60_KEY_MUP + 2151415856 + name 1_60_KEY_MDOWN + 2151415857 + name 1_60_KEY_MLEFT + 2151415858 + name 1_60_KEY_MRIGHT + 2151415859 + name 1_60_KEY_Help + 2151415872 + name 1_60_KEY_Setup + 2151415873 + name 0_61_KEY_0 + 3997696 + name 0_61_KEY_1 + 3997697 + name 0_61_KEY_2 + 3997698 + name 0_61_KEY_3 + 3997699 + name 0_61_KEY_4 + 3997700 + name 0_61_KEY_5 + 3997701 + name 0_61_KEY_6 + 3997702 + name 0_61_KEY_7 + 3997703 + name 0_61_KEY_8 + 3997704 + name 0_61_KEY_9 + 3997705 + name 0_61_KEY_POWER + 3997706 + name 0_61_KEY_CH_UP + 3997711 + name 0_61_KEY_CH_DOWN + 3997712 + name 0_61_CH_PREVIOUS + 3997715 + name 0_61_KEY_ENTER + 3997739 + name 1_61_KEY_0 + 2151481344 + name 1_61_KEY_1 + 2151481345 + name 1_61_KEY_2 + 2151481346 + name 1_61_KEY_3 + 2151481347 + name 1_61_KEY_4 + 2151481348 + name 1_61_KEY_5 + 2151481349 + name 1_61_KEY_6 + 2151481350 + name 1_61_KEY_7 + 2151481351 + name 1_61_KEY_8 + 2151481352 + name 1_61_KEY_9 + 2151481353 + name 1_61_KEY_POWER + 2151481354 + name 1_61_KEY_CH_UP + 2151481359 + name 1_61_KEY_CH_DOWN + 2151481360 + name 1_61_KEY_MUTE + 2151481361 + name 1_61_KEY_VOL_DOWN + 2151481362 + name 1_61_KEY_VOL_UP + 2151481364 + name 1_61_KEY_DISPLAY + 2151481365 + name 1_61_KEY_FAV + 2151481373 + name 1_61_KEY_CKU + 2151481384 + name 1_61_KEY_ENTER + 2151481387 + name 0_62_KEY_0 + 4063232 + name 0_62_KEY_1 + 4063233 + name 0_62_KEY_2 + 4063234 + name 0_62_KEY_3 + 4063235 + name 0_62_KEY_4 + 4063236 + name 0_62_KEY_5 + 4063237 + name 0_62_KEY_6 + 4063238 + name 0_62_KEY_7 + 4063239 + name 0_62_KEY_8 + 4063240 + name 0_62_KEY_9 + 4063241 + name 0_62_KEY_POWER + 4063242 + name 0_62_KEY_CH_UP + 4063247 + name 0_62_KEY_CH_DOWN + 4063248 + name 0_62_CH_PREVIOUS + 4063251 + name 0_62_KEY_ENTER + 4063275 + name 1_62_KEY_0 + 2151546880 + name 1_62_KEY_1 + 2151546881 + name 1_62_KEY_2 + 2151546882 + name 1_62_KEY_3 + 2151546883 + name 1_62_KEY_4 + 2151546884 + name 1_62_KEY_5 + 2151546885 + name 1_62_KEY_6 + 2151546886 + name 1_62_KEY_7 + 2151546887 + name 1_62_KEY_8 + 2151546888 + name 1_62_KEY_9 + 2151546889 + name 1_62_KEY_POWER + 2151546890 + name 1_62_KEY_MUTE + 2151546897 + name 1_62_KEY_VOL_DOWN + 2151546898 + name 1_62_KEY_VOL_UP + 2151546900 + name 1_62_KEY_FAV + 2151546909 + name 1_62_KEY_SELECT + 2151546910 + name 1_62_KEY_SAT + 2151546922 + name 0_63_KEY_0 + 4128768 + name 0_63_KEY_1 + 4128769 + name 0_63_KEY_2 + 4128770 + name 0_63_KEY_3 + 4128771 + name 0_63_KEY_4 + 4128772 + name 0_63_KEY_5 + 4128773 + name 0_63_KEY_6 + 4128774 + name 0_63_KEY_7 + 4128775 + name 0_63_KEY_8 + 4128776 + name 0_63_KEY_9 + 4128777 + name 0_63_KEY_POWER + 4128778 + name 0_63_KEY_CH_UP + 4128783 + name 0_63_KEY_CH_DOWN + 4128784 + name 0_63_CH_PREVIOUS + 4128787 + name 0_63_KEY_ENTER + 4128811 + name 1_63_KEY_POWER + 2151612426 + name 1_63_KEY_CH_UP + 2151612431 + name 1_63_KEY_CH_DOWN + 2151612432 + name 1_63_KEY_VOL_DOWN + 2151612434 + name 1_63_CH_PREVIOUS + 2151612435 + name 1_63_KEY_VOL_UP + 2151612436 + name 0_64_KEY_0 + 4194304 + name 0_64_KEY_1 + 4194305 + name 0_64_KEY_2 + 4194306 + name 0_64_KEY_3 + 4194307 + name 0_64_KEY_4 + 4194308 + name 0_64_KEY_5 + 4194309 + name 0_64_KEY_6 + 4194310 + name 0_64_KEY_7 + 4194311 + name 0_64_KEY_8 + 4194312 + name 0_64_KEY_9 + 4194313 + name 0_64_KEY_POWER + 4194314 + name 0_64_KEY_CH_UP + 4194319 + name 0_64_KEY_CH_DOWN + 4194320 + name 0_64_CH_PREVIOUS + 4194323 + name 0_64_KEY_ENTER + 4194347 + name 1_64_KEY_POWER + 2151677962 + name 1_64_KEY_CH_UP + 2151677967 + name 1_64_KEY_CH_DOWN + 2151677968 + name 1_64_KEY_MUTE + 2151677969 + name 1_64_KEY_VOL_DOWN + 2151677970 + name 1_64_KEY_VOL_UP + 2151677972 + name 1_64_KEY_ENTER + 2151677995 + name 0_65_KEY_0 + 4259840 + name 0_65_KEY_1 + 4259841 + name 0_65_KEY_2 + 4259842 + name 0_65_KEY_3 + 4259843 + name 0_65_KEY_4 + 4259844 + name 0_65_KEY_5 + 4259845 + name 0_65_KEY_6 + 4259846 + name 0_65_KEY_7 + 4259847 + name 0_65_KEY_8 + 4259848 + name 0_65_KEY_9 + 4259849 + name 0_65_KEY_POWER + 4259850 + name 0_65_KEY_CH_UP + 4259855 + name 0_65_KEY_CH_DOWN + 4259856 + name 0_65_CH_PREVIOUS + 4259859 + name 0_65_KEY_ENTER + 4259883 + name 1_65_KEY_0 + 2151743488 + name 1_65_KEY_1 + 2151743489 + name 1_65_KEY_2 + 2151743490 + name 1_65_KEY_3 + 2151743491 + name 1_65_KEY_4 + 2151743492 + name 1_65_KEY_5 + 2151743493 + name 1_65_KEY_6 + 2151743494 + name 1_65_KEY_7 + 2151743495 + name 1_65_KEY_8 + 2151743496 + name 1_65_KEY_9 + 2151743497 + name 1_65_KEY_POWER + 2151743498 + name 1_65_KEY_CH_UP + 2151743503 + name 1_65_KEY_CH_DOWN + 2151743504 + name 1_65_KEY_MUTE + 2151743505 + name 1_65_KEY_VOL_DOWN + 2151743506 + name 1_65_KEY_VOL_UP + 2151743508 + name 1_65_KEY_CKU + 2151743528 + name 1_65_KEY_SAT + 2151743530 + name 0_66_KEY_0 + 4325376 + name 0_66_KEY_1 + 4325377 + name 0_66_KEY_2 + 4325378 + name 0_66_KEY_3 + 4325379 + name 0_66_KEY_4 + 4325380 + name 0_66_KEY_5 + 4325381 + name 0_66_KEY_6 + 4325382 + name 0_66_KEY_7 + 4325383 + name 0_66_KEY_8 + 4325384 + name 0_66_KEY_9 + 4325385 + name 0_66_KEY_POWER + 4325386 + name 0_66_KEY_CH_UP + 4325391 + name 0_66_KEY_CH_DOWN + 4325392 + name 0_66_KEY_ENTER + 4325419 + name 1_66_KEY_0 + 2151809024 + name 1_66_KEY_1 + 2151809025 + name 1_66_KEY_2 + 2151809026 + name 1_66_KEY_3 + 2151809027 + name 1_66_KEY_4 + 2151809028 + name 1_66_KEY_5 + 2151809029 + name 1_66_KEY_6 + 2151809030 + name 1_66_KEY_7 + 2151809031 + name 1_66_KEY_8 + 2151809032 + name 1_66_KEY_9 + 2151809033 + name 1_66_KEY_POWER + 2151809034 + name 1_66_KEY_CH_UP + 2151809039 + name 1_66_KEY_CH_DOWN + 2151809040 + name 1_66_KEY_MUTE + 2151809041 + name 1_66_KEY_VOL_DOWN + 2151809042 + name 1_66_KEY_VOL_UP + 2151809044 + name 1_66_KEY_EXIT + 2151809048 + name 1_66_KEY_FAV + 2151809053 + name 1_66_KEY_C + 2151809063 + name 1_66_KEY_SAT + 2151809066 + name 1_66_KEY_ENTER + 2151809067 + name 1_66_KEY_MENU + 2151809071 + name 1_66_KEY_MUP + 2151809072 + name 1_66_KEY_MDOWN + 2151809073 + name 1_66_KEY_MLEFT + 2151809074 + name 1_66_KEY_MRIGHT + 2151809075 + name 1_66_KEY_Help + 2151809088 + name 1_66_KEY_Setup + 2151809089 + name 0_67_KEY_0 + 4390912 + name 0_67_KEY_1 + 4390913 + name 0_67_KEY_2 + 4390914 + name 0_67_KEY_3 + 4390915 + name 0_67_KEY_4 + 4390916 + name 0_67_KEY_5 + 4390917 + name 0_67_KEY_6 + 4390918 + name 0_67_KEY_7 + 4390919 + name 0_67_KEY_8 + 4390920 + name 0_67_KEY_9 + 4390921 + name 0_67_KEY_POWER + 4390922 + name 0_67_KEY_CH_UP + 4390927 + name 0_67_KEY_CH_DOWN + 4390928 + name 0_67_CH_PREVIOUS + 4390931 + name 0_67_KEY_ENTER + 4390955 + name 1_67_KEY_0 + 2151874560 + name 1_67_KEY_1 + 2151874561 + name 1_67_KEY_2 + 2151874562 + name 1_67_KEY_3 + 2151874563 + name 1_67_KEY_4 + 2151874564 + name 1_67_KEY_5 + 2151874565 + name 1_67_KEY_6 + 2151874566 + name 1_67_KEY_7 + 2151874567 + name 1_67_KEY_8 + 2151874568 + name 1_67_KEY_9 + 2151874569 + name 1_67_KEY_POWER + 2151874570 + name 1_67_KEY_CH_UP + 2151874575 + name 1_67_KEY_CH_DOWN + 2151874576 + name 1_67_CH_PREVIOUS + 2151874579 + name 1_67_KEY_EXIT + 2151874584 + name 1_67_KEY_GUIDE + 2151874587 + name 1_67_KEY_FAV + 2151874589 + name 1_67_KEY_SELECT + 2151874590 + name 1_67_KEY_MENU + 2151874607 + name 1_67_KEY_MUP + 2151874608 + name 1_67_KEY_MDOWN + 2151874609 + name 1_67_KEY_MLEFT + 2151874610 + name 1_67_KEY_MRIGHT + 2151874611 + name 0_68_KEY_0 + 4456448 + name 0_68_KEY_1 + 4456449 + name 0_68_KEY_2 + 4456450 + name 0_68_KEY_3 + 4456451 + name 0_68_KEY_4 + 4456452 + name 0_68_KEY_5 + 4456453 + name 0_68_KEY_6 + 4456454 + name 0_68_KEY_7 + 4456455 + name 0_68_KEY_8 + 4456456 + name 0_68_KEY_9 + 4456457 + name 0_68_KEY_POWER + 4456458 + name 0_68_KEY_CH_UP + 4456463 + name 0_68_KEY_CH_DOWN + 4456464 + name 0_68_KEY_ENTER + 4456491 + name 1_68_KEY_0 + 2151940096 + name 1_68_KEY_1 + 2151940097 + name 1_68_KEY_2 + 2151940098 + name 1_68_KEY_3 + 2151940099 + name 1_68_KEY_4 + 2151940100 + name 1_68_KEY_5 + 2151940101 + name 1_68_KEY_6 + 2151940102 + name 1_68_KEY_7 + 2151940103 + name 1_68_KEY_8 + 2151940104 + name 1_68_KEY_9 + 2151940105 + name 1_68_KEY_POWER + 2151940106 + name 1_68_KEY_CH_UP + 2151940111 + name 1_68_KEY_CH_DOWN + 2151940112 + name 1_68_KEY_VOL_DOWN + 2151940114 + name 1_68_KEY_VOL_UP + 2151940116 + name 1_68_KEY_DISPLAY + 2151940117 + name 1_68_KEY_FAV + 2151940125 + name 1_68_KEY_CKU + 2151940136 + name 1_68_KEY_ENTER + 2151940139 + name 0_69_KEY_0 + 4521984 + name 0_69_KEY_1 + 4521985 + name 0_69_KEY_2 + 4521986 + name 0_69_KEY_3 + 4521987 + name 0_69_KEY_4 + 4521988 + name 0_69_KEY_5 + 4521989 + name 0_69_KEY_6 + 4521990 + name 0_69_KEY_7 + 4521991 + name 0_69_KEY_8 + 4521992 + name 0_69_KEY_9 + 4521993 + name 0_69_KEY_POWER + 4521994 + name 0_69_KEY_CH_UP + 4521999 + name 0_69_KEY_CH_DOWN + 4522000 + name 0_69_CH_PREVIOUS + 4522003 + name 0_69_KEY_ENTER + 4522027 + name 1_69_KEY_0 + 2152005632 + name 1_69_KEY_1 + 2152005633 + name 1_69_KEY_2 + 2152005634 + name 1_69_KEY_3 + 2152005635 + name 1_69_KEY_4 + 2152005636 + name 1_69_KEY_5 + 2152005637 + name 1_69_KEY_6 + 2152005638 + name 1_69_KEY_7 + 2152005639 + name 1_69_KEY_8 + 2152005640 + name 1_69_KEY_9 + 2152005641 + name 1_69_KEY_POWER + 2152005642 + name 1_69_KEY_CH_UP + 2152005647 + name 1_69_KEY_CH_DOWN + 2152005648 + name 1_69_KEY_MUTE + 2152005649 + name 1_69_KEY_VOL_DOWN + 2152005650 + name 1_69_KEY_VOL_UP + 2152005652 + name 1_69_KEY_EXIT + 2152005656 + name 1_69_KEY_FAV + 2152005661 + name 1_69_KEY_C + 2152005671 + name 1_69_KEY_ENTER + 2152005675 + name 1_69_KEY_MUP + 2152005680 + name 1_69_KEY_MDOWN + 2152005681 + name 1_69_KEY_MLEFT + 2152005682 + name 1_69_KEY_MRIGHT + 2152005683 + name 1_69_KEY_Help + 2152005696 + name 1_69_KEY_Setup + 2152005697 + name 0_70_KEY_0 + 4587520 + name 0_70_KEY_1 + 4587521 + name 0_70_KEY_2 + 4587522 + name 0_70_KEY_3 + 4587523 + name 0_70_KEY_4 + 4587524 + name 0_70_KEY_5 + 4587525 + name 0_70_KEY_6 + 4587526 + name 0_70_KEY_7 + 4587527 + name 0_70_KEY_8 + 4587528 + name 0_70_KEY_9 + 4587529 + name 0_70_KEY_POWER + 4587530 + name 0_70_KEY_CH_UP + 4587535 + name 0_70_KEY_CH_DOWN + 4587536 + name 0_70_KEY_ENTER + 4587563 + name 1_70_KEY_0 + 2152071168 + name 1_70_KEY_1 + 2152071169 + name 1_70_KEY_2 + 2152071170 + name 1_70_KEY_3 + 2152071171 + name 1_70_KEY_4 + 2152071172 + name 1_70_KEY_5 + 2152071173 + name 1_70_KEY_6 + 2152071174 + name 1_70_KEY_7 + 2152071175 + name 1_70_KEY_8 + 2152071176 + name 1_70_KEY_9 + 2152071177 + name 1_70_KEY_POWER + 2152071178 + name 1_70_KEY_CH_UP + 2152071183 + name 1_70_KEY_CH_DOWN + 2152071184 + name 1_70_KEY_VOL_DOWN + 2152071186 + name 1_70_KEY_VOL_UP + 2152071188 + name 1_70_KEY_DISPLAY + 2152071189 + name 1_70_KEY_CKU + 2152071208 + name 1_70_KEY_SAT + 2152071210 + name 0_71_KEY_0 + 4653056 + name 0_71_KEY_1 + 4653057 + name 0_71_KEY_2 + 4653058 + name 0_71_KEY_3 + 4653059 + name 0_71_KEY_4 + 4653060 + name 0_71_KEY_5 + 4653061 + name 0_71_KEY_6 + 4653062 + name 0_71_KEY_7 + 4653063 + name 0_71_KEY_8 + 4653064 + name 0_71_KEY_9 + 4653065 + name 0_71_KEY_POWER + 4653066 + name 0_71_KEY_CH_UP + 4653071 + name 0_71_KEY_CH_DOWN + 4653072 + name 0_71_KEY_MUTE + 4653073 + name 0_71_KEY_VOL_DOWN + 4653074 + name 0_71_KEY_VOL_UP + 4653076 + name 1_71_KEY_0 + 2152136704 + name 1_71_KEY_1 + 2152136705 + name 1_71_KEY_2 + 2152136706 + name 1_71_KEY_3 + 2152136707 + name 1_71_KEY_4 + 2152136708 + name 1_71_KEY_5 + 2152136709 + name 1_71_KEY_6 + 2152136710 + name 1_71_KEY_7 + 2152136711 + name 1_71_KEY_8 + 2152136712 + name 1_71_KEY_9 + 2152136713 + name 1_71_KEY_POWER + 2152136714 + name 1_71_KEY_MUTE + 2152136721 + name 1_71_KEY_VOL_DOWN + 2152136722 + name 1_71_KEY_VOL_UP + 2152136724 + name 1_71_KEY_CKU + 2152136744 + name 0_72_KEY_0 + 4718592 + name 0_72_KEY_1 + 4718593 + name 0_72_KEY_2 + 4718594 + name 0_72_KEY_3 + 4718595 + name 0_72_KEY_4 + 4718596 + name 0_72_KEY_5 + 4718597 + name 0_72_KEY_6 + 4718598 + name 0_72_KEY_7 + 4718599 + name 0_72_KEY_8 + 4718600 + name 0_72_KEY_9 + 4718601 + name 0_72_KEY_POWER + 4718602 + name 0_72_KEY_CH_UP + 4718607 + name 0_72_KEY_CH_DOWN + 4718608 + name 0_72_KEY_MUTE + 4718609 + name 0_72_KEY_VOL_DOWN + 4718610 + name 0_72_CH_PREVIOUS + 4718611 + name 0_72_KEY_VOL_UP + 4718612 + name 0_72_KEY_DISPLAY + 4718613 + name 0_72_KEY_EXIT + 4718616 + name 0_72_KEY_INPUT + 4718618 + name 0_72_KEY_GUIDE + 4718619 + name 0_72_KEY_FAV + 4718621 + name 0_72_KEY_ENTER + 4718635 + name 0_72_KEY_MENU + 4718639 + name 0_72_KEY_MUP + 4718640 + name 0_72_KEY_MDOWN + 4718641 + name 0_72_KEY_MLEFT + 4718642 + name 0_72_KEY_MRIGHT + 4718643 + name 0_72_KEY_FF + 4718644 + name 0_72_KEY_PLAY + 4718645 + name 0_72_KEY_REW + 4718646 + name 0_72_KEY_REC + 4718647 + name 0_72_KEY_PAUSE + 4718648 + name 0_72_KEY_STOP + 4718649 + name 1_72_KEY_0 + 2152202240 + name 1_72_KEY_1 + 2152202241 + name 1_72_KEY_2 + 2152202242 + name 1_72_KEY_3 + 2152202243 + name 1_72_KEY_4 + 2152202244 + name 1_72_KEY_5 + 2152202245 + name 1_72_KEY_6 + 2152202246 + name 1_72_KEY_7 + 2152202247 + name 1_72_KEY_8 + 2152202248 + name 1_72_KEY_9 + 2152202249 + name 1_72_KEY_POWER + 2152202250 + name 1_72_KEY_CH_UP + 2152202255 + name 1_72_KEY_CH_DOWN + 2152202256 + name 1_72_KEY_MUTE + 2152202257 + name 1_72_KEY_VOL_DOWN + 2152202258 + name 1_72_KEY_VOL_UP + 2152202260 + name 1_72_KEY_DISPLAY + 2152202261 + name 1_72_KEY_FAV + 2152202269 + name 1_72_KEY_CKU + 2152202280 + name 1_72_KEY_ENTER + 2152202283 + name 0_73_KEY_0 + 4784128 + name 0_73_KEY_1 + 4784129 + name 0_73_KEY_2 + 4784130 + name 0_73_KEY_3 + 4784131 + name 0_73_KEY_4 + 4784132 + name 0_73_KEY_5 + 4784133 + name 0_73_KEY_6 + 4784134 + name 0_73_KEY_7 + 4784135 + name 0_73_KEY_8 + 4784136 + name 0_73_KEY_9 + 4784137 + name 0_73_KEY_POWER + 4784138 + name 0_73_KEY_CH_UP + 4784143 + name 0_73_KEY_CH_DOWN + 4784144 + name 0_73_KEY_MUTE + 4784145 + name 0_73_KEY_VOL_DOWN + 4784146 + name 0_73_KEY_VOL_UP + 4784148 + name 0_73_KEY_DISPLAY + 4784149 + name 0_73_KEY_MNSELECT + 4784151 + name 0_73_KEY_GUIDE + 4784155 + name 0_73_KEY_FAV + 4784157 + name 0_73_KEY_ENTER + 4784171 + name 0_73_KEY_MENU + 4784175 + name 0_73_KEY_MUP + 4784176 + name 0_73_KEY_MDOWN + 4784177 + name 0_73_KEY_MLEFT + 4784178 + name 0_73_KEY_MRIGHT + 4784179 + name 1_73_KEY_0 + 2152267776 + name 1_73_KEY_1 + 2152267777 + name 1_73_KEY_2 + 2152267778 + name 1_73_KEY_3 + 2152267779 + name 1_73_KEY_4 + 2152267780 + name 1_73_KEY_5 + 2152267781 + name 1_73_KEY_6 + 2152267782 + name 1_73_KEY_7 + 2152267783 + name 1_73_KEY_8 + 2152267784 + name 1_73_KEY_9 + 2152267785 + name 1_73_KEY_POWER + 2152267786 + name 1_73_KEY_CH_UP + 2152267791 + name 1_73_KEY_CH_DOWN + 2152267792 + name 1_73_KEY_FAV + 2152267805 + name 0_74_KEY_0 + 4849664 + name 0_74_KEY_1 + 4849665 + name 0_74_KEY_2 + 4849666 + name 0_74_KEY_3 + 4849667 + name 0_74_KEY_4 + 4849668 + name 0_74_KEY_5 + 4849669 + name 0_74_KEY_6 + 4849670 + name 0_74_KEY_7 + 4849671 + name 0_74_KEY_8 + 4849672 + name 0_74_KEY_9 + 4849673 + name 0_74_KEY_POWER + 4849674 + name 0_74_KEY_CH_UP + 4849679 + name 0_74_KEY_CH_DOWN + 4849680 + name 0_74_KEY_MUTE + 4849681 + name 0_74_KEY_VOL_DOWN + 4849682 + name 0_74_KEY_VOL_UP + 4849684 + name 0_74_KEY_MENU + 4849711 + name 0_74_KEY_MUP + 4849712 + name 0_74_KEY_MDOWN + 4849713 + name 0_74_KEY_MLEFT + 4849714 + name 0_74_KEY_MRIGHT + 4849715 + name 1_74_KEY_0 + 2152333312 + name 1_74_KEY_1 + 2152333313 + name 1_74_KEY_2 + 2152333314 + name 1_74_KEY_3 + 2152333315 + name 1_74_KEY_4 + 2152333316 + name 1_74_KEY_5 + 2152333317 + name 1_74_KEY_6 + 2152333318 + name 1_74_KEY_7 + 2152333319 + name 1_74_KEY_8 + 2152333320 + name 1_74_KEY_9 + 2152333321 + name 1_74_KEY_POWER + 2152333322 + name 1_74_KEY_CH_UP + 2152333327 + name 1_74_KEY_CH_DOWN + 2152333328 + name 1_74_KEY_MUTE + 2152333329 + name 1_74_KEY_VOL_DOWN + 2152333330 + name 1_74_KEY_VOL_UP + 2152333332 + name 1_74_KEY_FAV + 2152333341 + name 1_74_KEY_SAT + 2152333354 + name 1_74_KEY_ENTER + 2152333355 + name 0_75_KEY_0 + 4915200 + name 0_75_KEY_1 + 4915201 + name 0_75_KEY_2 + 4915202 + name 0_75_KEY_3 + 4915203 + name 0_75_KEY_4 + 4915204 + name 0_75_KEY_5 + 4915205 + name 0_75_KEY_6 + 4915206 + name 0_75_KEY_7 + 4915207 + name 0_75_KEY_8 + 4915208 + name 0_75_KEY_9 + 4915209 + name 0_75_KEY_POWER + 4915210 + name 0_75_KEY_CH_UP + 4915215 + name 0_75_KEY_CH_DOWN + 4915216 + name 0_75_KEY_MUTE + 4915217 + name 0_75_KEY_VOL_DOWN + 4915218 + name 0_75_KEY_VOL_UP + 4915220 + name 0_75_KEY_MUP + 4915248 + name 0_75_KEY_MDOWN + 4915249 + name 0_75_KEY_MLEFT + 4915250 + name 0_75_KEY_MRIGHT + 4915251 + name 1_75_KEY_0 + 2152398848 + name 1_75_KEY_1 + 2152398849 + name 1_75_KEY_2 + 2152398850 + name 1_75_KEY_3 + 2152398851 + name 1_75_KEY_4 + 2152398852 + name 1_75_KEY_5 + 2152398853 + name 1_75_KEY_6 + 2152398854 + name 1_75_KEY_7 + 2152398855 + name 1_75_KEY_8 + 2152398856 + name 1_75_KEY_9 + 2152398857 + name 1_75_KEY_FAV + 2152398877 + name 1_75_KEY_ENTER + 2152398891 + name 0_76_KEY_0 + 4980736 + name 0_76_KEY_1 + 4980737 + name 0_76_KEY_2 + 4980738 + name 0_76_KEY_3 + 4980739 + name 0_76_KEY_4 + 4980740 + name 0_76_KEY_5 + 4980741 + name 0_76_KEY_6 + 4980742 + name 0_76_KEY_7 + 4980743 + name 0_76_KEY_8 + 4980744 + name 0_76_KEY_9 + 4980745 + name 0_76_KEY_POWER + 4980746 + name 0_76_KEY_CH_UP + 4980751 + name 0_76_KEY_CH_DOWN + 4980752 + name 0_76_KEY_MUTE + 4980753 + name 0_76_KEY_VOL_DOWN + 4980754 + name 0_76_KEY_VOL_UP + 4980756 + name 0_76_KEY_MENU + 4980783 + name 0_76_KEY_MUP + 4980784 + name 0_76_KEY_MDOWN + 4980785 + name 0_76_KEY_MLEFT + 4980786 + name 0_76_KEY_MRIGHT + 4980787 + name 1_76_KEY_0 + 2152464384 + name 1_76_KEY_1 + 2152464385 + name 1_76_KEY_2 + 2152464386 + name 1_76_KEY_3 + 2152464387 + name 1_76_KEY_4 + 2152464388 + name 1_76_KEY_5 + 2152464389 + name 1_76_KEY_6 + 2152464390 + name 1_76_KEY_7 + 2152464391 + name 1_76_KEY_8 + 2152464392 + name 1_76_KEY_9 + 2152464393 + name 1_76_KEY_POWER + 2152464394 + name 1_76_KEY_CH_UP + 2152464399 + name 1_76_KEY_CH_DOWN + 2152464400 + name 1_76_KEY_MUTE + 2152464401 + name 1_76_KEY_VOL_DOWN + 2152464402 + name 1_76_KEY_VOL_UP + 2152464404 + name 1_76_KEY_DISPLAY + 2152464405 + name 1_76_KEY_CKU + 2152464424 + name 1_76_KEY_SAT + 2152464426 + name 1_76_KEY_ENTER + 2152464427 + name 0_77_KEY_0 + 5046272 + name 0_77_KEY_1 + 5046273 + name 0_77_KEY_2 + 5046274 + name 0_77_KEY_3 + 5046275 + name 0_77_KEY_4 + 5046276 + name 0_77_KEY_5 + 5046277 + name 0_77_KEY_6 + 5046278 + name 0_77_KEY_7 + 5046279 + name 0_77_KEY_8 + 5046280 + name 0_77_KEY_9 + 5046281 + name 0_77_KEY_POWER + 5046282 + name 0_77_KEY_MUTE + 5046289 + name 0_77_KEY_MNSELECT + 5046295 + name 0_77_KEY_MENU + 5046319 + name 0_77_KEY_MUP + 5046320 + name 0_77_KEY_MDOWN + 5046321 + name 0_77_KEY_MLEFT + 5046322 + name 0_77_KEY_MRIGHT + 5046323 + name 1_77_KEY_0 + 2152529920 + name 1_77_KEY_1 + 2152529921 + name 1_77_KEY_2 + 2152529922 + name 1_77_KEY_3 + 2152529923 + name 1_77_KEY_4 + 2152529924 + name 1_77_KEY_5 + 2152529925 + name 1_77_KEY_6 + 2152529926 + name 1_77_KEY_7 + 2152529927 + name 1_77_KEY_8 + 2152529928 + name 1_77_KEY_9 + 2152529929 + name 1_77_KEY_POWER + 2152529930 + name 1_77_KEY_CH_UP + 2152529935 + name 1_77_KEY_CH_DOWN + 2152529936 + name 1_77_KEY_MUTE + 2152529937 + name 1_77_KEY_VOL_DOWN + 2152529938 + name 1_77_CH_PREVIOUS + 2152529939 + name 1_77_KEY_VOL_UP + 2152529940 + name 1_77_KEY_EXIT + 2152529944 + name 1_77_KEY_FAV + 2152529949 + name 1_77_KEY_SAT + 2152529962 + name 1_77_KEY_ENTER + 2152529963 + name 1_77_KEY_MENU + 2152529967 + name 1_77_KEY_MUP + 2152529968 + name 1_77_KEY_MDOWN + 2152529969 + name 1_77_KEY_MLEFT + 2152529970 + name 1_77_KEY_MRIGHT + 2152529971 + name 1_77_KEY_Help + 2152529984 + name 1_77_KEY_Setup + 2152529985 + name 0_78_KEY_0 + 5111808 + name 0_78_KEY_1 + 5111809 + name 0_78_KEY_2 + 5111810 + name 0_78_KEY_3 + 5111811 + name 0_78_KEY_4 + 5111812 + name 0_78_KEY_5 + 5111813 + name 0_78_KEY_6 + 5111814 + name 0_78_KEY_7 + 5111815 + name 0_78_KEY_8 + 5111816 + name 0_78_KEY_9 + 5111817 + name 0_78_KEY_POWER + 5111818 + name 0_78_KEY_CH_UP + 5111823 + name 0_78_KEY_CH_DOWN + 5111824 + name 0_78_KEY_MUTE + 5111825 + name 0_78_KEY_VOL_DOWN + 5111826 + name 0_78_KEY_VOL_UP + 5111828 + name 0_78_KEY_MUP + 5111856 + name 0_78_KEY_MDOWN + 5111857 + name 0_78_KEY_MLEFT + 5111858 + name 0_78_KEY_MRIGHT + 5111859 + name 1_78_KEY_0 + 2152595456 + name 1_78_KEY_1 + 2152595457 + name 1_78_KEY_2 + 2152595458 + name 1_78_KEY_3 + 2152595459 + name 1_78_KEY_4 + 2152595460 + name 1_78_KEY_5 + 2152595461 + name 1_78_KEY_6 + 2152595462 + name 1_78_KEY_7 + 2152595463 + name 1_78_KEY_8 + 2152595464 + name 1_78_KEY_9 + 2152595465 + name 1_78_KEY_POWER + 2152595466 + name 1_78_KEY_CH_UP + 2152595471 + name 1_78_KEY_CH_DOWN + 2152595472 + name 1_78_KEY_MUTE + 2152595473 + name 1_78_KEY_VOL_DOWN + 2152595474 + name 1_78_CH_PREVIOUS + 2152595475 + name 1_78_KEY_VOL_UP + 2152595476 + name 1_78_KEY_DISPLAY + 2152595477 + name 1_78_KEY_FAV + 2152595485 + name 1_78_KEY_ENTER + 2152595499 + name 0_79_KEY_0 + 5177344 + name 0_79_KEY_1 + 5177345 + name 0_79_KEY_2 + 5177346 + name 0_79_KEY_3 + 5177347 + name 0_79_KEY_4 + 5177348 + name 0_79_KEY_5 + 5177349 + name 0_79_KEY_6 + 5177350 + name 0_79_KEY_7 + 5177351 + name 0_79_KEY_8 + 5177352 + name 0_79_KEY_9 + 5177353 + name 0_79_KEY_POWER + 5177354 + name 0_79_KEY_CH_UP + 5177359 + name 0_79_KEY_CH_DOWN + 5177360 + name 0_79_KEY_MNSELECT + 5177367 + name 0_79_KEY_MENU + 5177391 + name 0_79_KEY_MUP + 5177392 + name 0_79_KEY_MDOWN + 5177393 + name 0_79_KEY_MLEFT + 5177394 + name 0_79_KEY_MRIGHT + 5177395 + name 1_79_KEY_0 + 2152660992 + name 1_79_KEY_1 + 2152660993 + name 1_79_KEY_2 + 2152660994 + name 1_79_KEY_3 + 2152660995 + name 1_79_KEY_4 + 2152660996 + name 1_79_KEY_5 + 2152660997 + name 1_79_KEY_6 + 2152660998 + name 1_79_KEY_7 + 2152660999 + name 1_79_KEY_8 + 2152661000 + name 1_79_KEY_9 + 2152661001 + name 1_79_KEY_POWER + 2152661002 + name 1_79_KEY_CH_UP + 2152661007 + name 1_79_KEY_CH_DOWN + 2152661008 + name 1_79_KEY_MUTE + 2152661009 + name 1_79_KEY_VOL_DOWN + 2152661010 + name 1_79_KEY_VOL_UP + 2152661012 + name 1_79_KEY_FAV + 2152661021 + name 1_79_KEY_ENTER + 2152661035 + name 0_80_KEY_0 + 5242880 + name 0_80_KEY_1 + 5242881 + name 0_80_KEY_2 + 5242882 + name 0_80_KEY_3 + 5242883 + name 0_80_KEY_4 + 5242884 + name 0_80_KEY_5 + 5242885 + name 0_80_KEY_6 + 5242886 + name 0_80_KEY_7 + 5242887 + name 0_80_KEY_8 + 5242888 + name 0_80_KEY_9 + 5242889 + name 0_80_KEY_POWER + 5242890 + name 0_80_KEY_CH_UP + 5242895 + name 0_80_KEY_CH_DOWN + 5242896 + name 0_80_KEY_MUTE + 5242897 + name 0_80_KEY_VOL_DOWN + 5242898 + name 0_80_KEY_VOL_UP + 5242900 + name 0_80_KEY_MNSELECT + 5242903 + name 0_80_KEY_MENU + 5242927 + name 0_80_KEY_MUP + 5242928 + name 0_80_KEY_MDOWN + 5242929 + name 0_80_KEY_MLEFT + 5242930 + name 0_80_KEY_MRIGHT + 5242931 + name 1_80_KEY_0 + 2152726528 + name 1_80_KEY_1 + 2152726529 + name 1_80_KEY_2 + 2152726530 + name 1_80_KEY_3 + 2152726531 + name 1_80_KEY_4 + 2152726532 + name 1_80_KEY_5 + 2152726533 + name 1_80_KEY_6 + 2152726534 + name 1_80_KEY_7 + 2152726535 + name 1_80_KEY_8 + 2152726536 + name 1_80_KEY_9 + 2152726537 + name 1_80_KEY_POWER + 2152726538 + name 1_80_KEY_CH_UP + 2152726543 + name 1_80_KEY_CH_DOWN + 2152726544 + name 1_80_KEY_VOL_DOWN + 2152726546 + name 1_80_KEY_VOL_UP + 2152726548 + name 1_80_KEY_SELECT + 2152726558 + name 0_81_KEY_0 + 5308416 + name 0_81_KEY_1 + 5308417 + name 0_81_KEY_2 + 5308418 + name 0_81_KEY_3 + 5308419 + name 0_81_KEY_4 + 5308420 + name 0_81_KEY_5 + 5308421 + name 0_81_KEY_6 + 5308422 + name 0_81_KEY_7 + 5308423 + name 0_81_KEY_8 + 5308424 + name 0_81_KEY_9 + 5308425 + name 0_81_KEY_POWER + 5308426 + name 0_81_KEY_CH_UP + 5308431 + name 0_81_KEY_CH_DOWN + 5308432 + name 0_81_KEY_MENU + 5308463 + name 0_81_KEY_MUP + 5308464 + name 0_81_KEY_MDOWN + 5308465 + name 0_81_KEY_MLEFT + 5308466 + name 0_81_KEY_MRIGHT + 5308467 + name 1_81_KEY_0 + 2152792064 + name 1_81_KEY_1 + 2152792065 + name 1_81_KEY_2 + 2152792066 + name 1_81_KEY_3 + 2152792067 + name 1_81_KEY_4 + 2152792068 + name 1_81_KEY_5 + 2152792069 + name 1_81_KEY_6 + 2152792070 + name 1_81_KEY_7 + 2152792071 + name 1_81_KEY_8 + 2152792072 + name 1_81_KEY_9 + 2152792073 + name 1_81_KEY_POWER + 2152792074 + name 1_81_KEY_CH_UP + 2152792079 + name 1_81_KEY_CH_DOWN + 2152792080 + name 0_82_KEY_0 + 5373952 + name 0_82_KEY_1 + 5373953 + name 0_82_KEY_2 + 5373954 + name 0_82_KEY_3 + 5373955 + name 0_82_KEY_4 + 5373956 + name 0_82_KEY_5 + 5373957 + name 0_82_KEY_6 + 5373958 + name 0_82_KEY_7 + 5373959 + name 0_82_KEY_8 + 5373960 + name 0_82_KEY_9 + 5373961 + name 0_82_KEY_POWER + 5373962 + name 0_82_KEY_CH_UP + 5373967 + name 0_82_KEY_CH_DOWN + 5373968 + name 0_82_KEY_MUTE + 5373969 + name 0_82_KEY_VOL_DOWN + 5373970 + name 0_82_KEY_VOL_UP + 5373972 + name 0_82_KEY_MNSELECT + 5373975 + name 0_82_KEY_ENTER + 5373995 + name 0_82_KEY_MENU + 5373999 + name 0_82_KEY_MUP + 5374000 + name 0_82_KEY_MDOWN + 5374001 + name 0_82_KEY_MLEFT + 5374002 + name 0_82_KEY_MRIGHT + 5374003 + name 1_82_KEY_0 + 2152857600 + name 1_82_KEY_1 + 2152857601 + name 1_82_KEY_2 + 2152857602 + name 1_82_KEY_3 + 2152857603 + name 1_82_KEY_4 + 2152857604 + name 1_82_KEY_5 + 2152857605 + name 1_82_KEY_6 + 2152857606 + name 1_82_KEY_7 + 2152857607 + name 1_82_KEY_8 + 2152857608 + name 1_82_KEY_9 + 2152857609 + name 1_82_KEY_POWER + 2152857610 + name 1_82_KEY_CH_UP + 2152857615 + name 1_82_KEY_CH_DOWN + 2152857616 + name 1_82_CH_PREVIOUS + 2152857619 + name 1_82_KEY_DISPLAY + 2152857621 + name 1_82_KEY_EXIT + 2152857624 + name 1_82_KEY_AV + 2152857641 + name 1_82_KEY_ENTER + 2152857643 + name 1_82_KEY_MENU + 2152857647 + name 1_82_KEY_MUP + 2152857648 + name 1_82_KEY_MDOWN + 2152857649 + name 1_82_KEY_MLEFT + 2152857650 + name 1_82_KEY_MRIGHT + 2152857651 + name 0_83_KEY_0 + 5439488 + name 0_83_KEY_1 + 5439489 + name 0_83_KEY_2 + 5439490 + name 0_83_KEY_3 + 5439491 + name 0_83_KEY_4 + 5439492 + name 0_83_KEY_5 + 5439493 + name 0_83_KEY_6 + 5439494 + name 0_83_KEY_7 + 5439495 + name 0_83_KEY_8 + 5439496 + name 0_83_KEY_9 + 5439497 + name 0_83_KEY_POWER + 5439498 + name 0_83_KEY_CH_UP + 5439503 + name 0_83_KEY_CH_DOWN + 5439504 + name 0_83_KEY_MENU + 5439535 + name 0_83_KEY_MUP + 5439536 + name 0_83_KEY_MDOWN + 5439537 + name 0_83_KEY_MLEFT + 5439538 + name 0_83_KEY_MRIGHT + 5439539 + name 1_83_KEY_0 + 2152923136 + name 1_83_KEY_1 + 2152923137 + name 1_83_KEY_2 + 2152923138 + name 1_83_KEY_3 + 2152923139 + name 1_83_KEY_4 + 2152923140 + name 1_83_KEY_5 + 2152923141 + name 1_83_KEY_6 + 2152923142 + name 1_83_KEY_7 + 2152923143 + name 1_83_KEY_8 + 2152923144 + name 1_83_KEY_9 + 2152923145 + name 1_83_KEY_POWER + 2152923146 + name 1_83_KEY_CH_UP + 2152923151 + name 1_83_KEY_CH_DOWN + 2152923152 + name 1_83_KEY_MUTE + 2152923153 + name 1_83_KEY_VOL_DOWN + 2152923154 + name 1_83_CH_PREVIOUS + 2152923155 + name 1_83_KEY_VOL_UP + 2152923156 + name 1_83_KEY_DISPLAY + 2152923157 + name 1_83_KEY_EXIT + 2152923160 + name 1_83_KEY_GUIDE + 2152923163 + name 1_83_KEY_SELECT + 2152923166 + name 1_83_KEY_AV + 2152923177 + name 1_83_KEY_SAT + 2152923178 + name 1_83_KEY_ENTER + 2152923179 + name 1_83_KEY_MENU + 2152923183 + name 1_83_KEY_MUP + 2152923184 + name 1_83_KEY_MDOWN + 2152923185 + name 1_83_KEY_MLEFT + 2152923186 + name 1_83_KEY_MRIGHT + 2152923187 + name 0_84_KEY_0 + 5505024 + name 0_84_KEY_1 + 5505025 + name 0_84_KEY_2 + 5505026 + name 0_84_KEY_3 + 5505027 + name 0_84_KEY_4 + 5505028 + name 0_84_KEY_5 + 5505029 + name 0_84_KEY_6 + 5505030 + name 0_84_KEY_7 + 5505031 + name 0_84_KEY_8 + 5505032 + name 0_84_KEY_9 + 5505033 + name 0_84_KEY_POWER + 5505034 + name 0_84_KEY_CH_UP + 5505039 + name 0_84_KEY_CH_DOWN + 5505040 + name 0_84_KEY_MUTE + 5505041 + name 0_84_KEY_VOL_DOWN + 5505042 + name 0_84_KEY_VOL_UP + 5505044 + name 0_84_KEY_MNSELECT + 5505047 + name 0_84_KEY_MENU + 5505071 + name 0_84_KEY_MUP + 5505072 + name 0_84_KEY_MDOWN + 5505073 + name 0_84_KEY_MLEFT + 5505074 + name 0_84_KEY_MRIGHT + 5505075 + name 1_84_KEY_0 + 2152988672 + name 1_84_KEY_1 + 2152988673 + name 1_84_KEY_2 + 2152988674 + name 1_84_KEY_3 + 2152988675 + name 1_84_KEY_4 + 2152988676 + name 1_84_KEY_5 + 2152988677 + name 1_84_KEY_6 + 2152988678 + name 1_84_KEY_7 + 2152988679 + name 1_84_KEY_8 + 2152988680 + name 1_84_KEY_9 + 2152988681 + name 1_84_KEY_POWER + 2152988682 + name 1_84_KEY_CH_UP + 2152988687 + name 1_84_KEY_CH_DOWN + 2152988688 + name 1_84_CH_PREVIOUS + 2152988691 + name 1_84_KEY_DISPLAY + 2152988693 + name 1_84_KEY_EXIT + 2152988696 + name 1_84_KEY_AV + 2152988713 + name 1_84_KEY_ENTER + 2152988715 + name 1_84_KEY_MENU + 2152988719 + name 1_84_KEY_MUP + 2152988720 + name 1_84_KEY_MDOWN + 2152988721 + name 1_84_KEY_MLEFT + 2152988722 + name 1_84_KEY_MRIGHT + 2152988723 + name 0_85_KEY_0 + 5570560 + name 0_85_KEY_1 + 5570561 + name 0_85_KEY_2 + 5570562 + name 0_85_KEY_3 + 5570563 + name 0_85_KEY_4 + 5570564 + name 0_85_KEY_5 + 5570565 + name 0_85_KEY_6 + 5570566 + name 0_85_KEY_7 + 5570567 + name 0_85_KEY_8 + 5570568 + name 0_85_KEY_9 + 5570569 + name 0_85_KEY_POWER + 5570570 + name 0_85_KEY_CH_UP + 5570575 + name 0_85_KEY_CH_DOWN + 5570576 + name 0_85_KEY_MUTE + 5570577 + name 0_85_KEY_VOL_DOWN + 5570578 + name 0_85_CH_PREVIOUS + 5570579 + name 0_85_KEY_VOL_UP + 5570580 + name 0_85_KEY_DISPLAY + 5570581 + name 0_85_KEY_MNSELECT + 5570583 + name 0_85_KEY_EXIT + 5570584 + name 0_85_KEY_INPUT + 5570586 + name 0_85_KEY_GUIDE + 5570587 + name 0_85_KEY_FAV + 5570589 + name 0_85_KEY_MENU + 5570607 + name 0_85_KEY_MUP + 5570608 + name 0_85_KEY_MDOWN + 5570609 + name 0_85_KEY_MLEFT + 5570610 + name 0_85_KEY_MRIGHT + 5570611 + name 0_85_KEY_FF + 5570612 + name 0_85_KEY_PLAY + 5570613 + name 0_85_KEY_REW + 5570614 + name 0_85_KEY_REC + 5570615 + name 0_85_KEY_PAUSE + 5570616 + name 0_85_KEY_STOP + 5570617 + name 1_85_KEY_0 + 2153054208 + name 1_85_KEY_1 + 2153054209 + name 1_85_KEY_2 + 2153054210 + name 1_85_KEY_3 + 2153054211 + name 1_85_KEY_4 + 2153054212 + name 1_85_KEY_5 + 2153054213 + name 1_85_KEY_6 + 2153054214 + name 1_85_KEY_7 + 2153054215 + name 1_85_KEY_8 + 2153054216 + name 1_85_KEY_9 + 2153054217 + name 1_85_KEY_POWER + 2153054218 + name 1_85_KEY_CH_UP + 2153054223 + name 1_85_KEY_CH_DOWN + 2153054224 + name 1_85_CH_PREVIOUS + 2153054227 + name 1_85_KEY_DISPLAY + 2153054229 + name 1_85_KEY_EXIT + 2153054232 + name 1_85_KEY_SELECT + 2153054238 + name 1_85_KEY_ENTER + 2153054251 + name 1_85_KEY_MENU + 2153054255 + name 1_85_KEY_MUP + 2153054256 + name 1_85_KEY_MDOWN + 2153054257 + name 1_85_KEY_MLEFT + 2153054258 + name 1_85_KEY_MRIGHT + 2153054259 + name 0_86_KEY_0 + 5636096 + name 0_86_KEY_1 + 5636097 + name 0_86_KEY_2 + 5636098 + name 0_86_KEY_3 + 5636099 + name 0_86_KEY_4 + 5636100 + name 0_86_KEY_5 + 5636101 + name 0_86_KEY_6 + 5636102 + name 0_86_KEY_7 + 5636103 + name 0_86_KEY_8 + 5636104 + name 0_86_KEY_9 + 5636105 + name 0_86_KEY_POWER + 5636106 + name 0_86_KEY_CH_UP + 5636111 + name 0_86_KEY_CH_DOWN + 5636112 + name 0_86_KEY_MUTE + 5636113 + name 0_86_KEY_VOL_DOWN + 5636114 + name 0_86_CH_PREVIOUS + 5636115 + name 0_86_KEY_VOL_UP + 5636116 + name 0_86_KEY_DISPLAY + 5636117 + name 0_86_KEY_MNSELECT + 5636119 + name 0_86_KEY_EXIT + 5636120 + name 0_86_KEY_INPUT + 5636122 + name 0_86_KEY_GUIDE + 5636123 + name 0_86_KEY_FAV + 5636125 + name 0_86_KEY_ENTER + 5636139 + name 0_86_KEY_MENU + 5636143 + name 0_86_KEY_MUP + 5636144 + name 0_86_KEY_MDOWN + 5636145 + name 0_86_KEY_MLEFT + 5636146 + name 0_86_KEY_MRIGHT + 5636147 + name 0_86_KEY_FF + 5636148 + name 0_86_KEY_PLAY + 5636149 + name 0_86_KEY_REW + 5636150 + name 0_86_KEY_REC + 5636151 + name 0_86_KEY_PAUSE + 5636152 + name 0_86_KEY_STOP + 5636153 + name 1_86_KEY_0 + 2153119744 + name 1_86_KEY_1 + 2153119745 + name 1_86_KEY_2 + 2153119746 + name 1_86_KEY_3 + 2153119747 + name 1_86_KEY_4 + 2153119748 + name 1_86_KEY_5 + 2153119749 + name 1_86_KEY_6 + 2153119750 + name 1_86_KEY_7 + 2153119751 + name 1_86_KEY_8 + 2153119752 + name 1_86_KEY_9 + 2153119753 + name 1_86_KEY_POWER + 2153119754 + name 1_86_KEY_CH_UP + 2153119759 + name 1_86_KEY_CH_DOWN + 2153119760 + name 1_86_CH_PREVIOUS + 2153119763 + name 1_86_KEY_DISPLAY + 2153119765 + name 1_86_KEY_EXIT + 2153119768 + name 1_86_KEY_AV + 2153119785 + name 1_86_KEY_ENTER + 2153119787 + name 1_86_KEY_MENU + 2153119791 + name 1_86_KEY_MUP + 2153119792 + name 1_86_KEY_MDOWN + 2153119793 + name 1_86_KEY_MLEFT + 2153119794 + name 1_86_KEY_MRIGHT + 2153119795 + name 0_87_KEY_0 + 5701632 + name 0_87_KEY_1 + 5701633 + name 0_87_KEY_2 + 5701634 + name 0_87_KEY_3 + 5701635 + name 0_87_KEY_4 + 5701636 + name 0_87_KEY_5 + 5701637 + name 0_87_KEY_6 + 5701638 + name 0_87_KEY_7 + 5701639 + name 0_87_KEY_8 + 5701640 + name 0_87_KEY_9 + 5701641 + name 0_87_KEY_POWER + 5701642 + name 0_87_KEY_CH_UP + 5701647 + name 0_87_KEY_CH_DOWN + 5701648 + name 0_87_KEY_MUTE + 5701649 + name 0_87_KEY_VOL_DOWN + 5701650 + name 0_87_CH_PREVIOUS + 5701651 + name 0_87_KEY_VOL_UP + 5701652 + name 0_87_KEY_DISPLAY + 5701653 + name 0_87_KEY_MNSELECT + 5701655 + name 0_87_KEY_EXIT + 5701656 + name 0_87_KEY_INPUT + 5701658 + name 0_87_KEY_GUIDE + 5701659 + name 0_87_KEY_FAV + 5701661 + name 0_87_KEY_MENU + 5701679 + name 0_87_KEY_MUP + 5701680 + name 0_87_KEY_MDOWN + 5701681 + name 0_87_KEY_MLEFT + 5701682 + name 0_87_KEY_MRIGHT + 5701683 + name 0_87_KEY_FF + 5701684 + name 0_87_KEY_PLAY + 5701685 + name 0_87_KEY_REW + 5701686 + name 0_87_KEY_REC + 5701687 + name 0_87_KEY_PAUSE + 5701688 + name 0_87_KEY_STOP + 5701689 + name 1_87_KEY_0 + 2153185280 + name 1_87_KEY_1 + 2153185281 + name 1_87_KEY_2 + 2153185282 + name 1_87_KEY_3 + 2153185283 + name 1_87_KEY_4 + 2153185284 + name 1_87_KEY_5 + 2153185285 + name 1_87_KEY_6 + 2153185286 + name 1_87_KEY_7 + 2153185287 + name 1_87_KEY_8 + 2153185288 + name 1_87_KEY_9 + 2153185289 + name 1_87_KEY_POWER + 2153185290 + name 1_87_KEY_CH_UP + 2153185295 + name 1_87_KEY_CH_DOWN + 2153185296 + name 1_87_CH_PREVIOUS + 2153185299 + name 1_87_KEY_DISPLAY + 2153185301 + name 1_87_KEY_EXIT + 2153185304 + name 1_87_KEY_AV + 2153185321 + name 1_87_KEY_MENU + 2153185327 + name 1_87_KEY_MUP + 2153185328 + name 1_87_KEY_MDOWN + 2153185329 + name 1_87_KEY_MLEFT + 2153185330 + name 1_87_KEY_MRIGHT + 2153185331 + name 0_88_KEY_0 + 5767168 + name 0_88_KEY_1 + 5767169 + name 0_88_KEY_2 + 5767170 + name 0_88_KEY_3 + 5767171 + name 0_88_KEY_4 + 5767172 + name 0_88_KEY_5 + 5767173 + name 0_88_KEY_6 + 5767174 + name 0_88_KEY_7 + 5767175 + name 0_88_KEY_8 + 5767176 + name 0_88_KEY_9 + 5767177 + name 0_88_KEY_POWER + 5767178 + name 0_88_KEY_CH_UP + 5767183 + name 0_88_KEY_CH_DOWN + 5767184 + name 0_88_KEY_MUTE + 5767185 + name 0_88_KEY_VOL_DOWN + 5767186 + name 0_88_CH_PREVIOUS + 5767187 + name 0_88_KEY_VOL_UP + 5767188 + name 0_88_KEY_DISPLAY + 5767189 + name 0_88_KEY_MNSELECT + 5767191 + name 0_88_KEY_EXIT + 5767192 + name 0_88_KEY_INPUT + 5767194 + name 0_88_KEY_GUIDE + 5767195 + name 0_88_KEY_FAV + 5767197 + name 0_88_KEY_MENU + 5767215 + name 0_88_KEY_MUP + 5767216 + name 0_88_KEY_MDOWN + 5767217 + name 0_88_KEY_MLEFT + 5767218 + name 0_88_KEY_MRIGHT + 5767219 + name 0_88_KEY_FF + 5767220 + name 0_88_KEY_PLAY + 5767221 + name 0_88_KEY_REW + 5767222 + name 0_88_KEY_REC + 5767223 + name 0_88_KEY_PAUSE + 5767224 + name 0_88_KEY_STOP + 5767225 + name 1_88_KEY_0 + 2153250816 + name 1_88_KEY_1 + 2153250817 + name 1_88_KEY_2 + 2153250818 + name 1_88_KEY_3 + 2153250819 + name 1_88_KEY_4 + 2153250820 + name 1_88_KEY_5 + 2153250821 + name 1_88_KEY_6 + 2153250822 + name 1_88_KEY_7 + 2153250823 + name 1_88_KEY_8 + 2153250824 + name 1_88_KEY_9 + 2153250825 + name 1_88_KEY_POWER + 2153250826 + name 1_88_KEY_CH_UP + 2153250831 + name 1_88_KEY_CH_DOWN + 2153250832 + name 1_88_CH_PREVIOUS + 2153250835 + name 1_88_KEY_EXIT + 2153250840 + name 1_88_KEY_SELECT + 2153250846 + name 1_88_KEY_AV + 2153250857 + name 1_88_KEY_ENTER + 2153250859 + name 1_88_KEY_MENU + 2153250863 + name 1_88_KEY_MUP + 2153250864 + name 1_88_KEY_MDOWN + 2153250865 + name 1_88_KEY_MLEFT + 2153250866 + name 1_88_KEY_MRIGHT + 2153250867 + name 0_89_KEY_0 + 5832704 + name 0_89_KEY_1 + 5832705 + name 0_89_KEY_2 + 5832706 + name 0_89_KEY_3 + 5832707 + name 0_89_KEY_4 + 5832708 + name 0_89_KEY_5 + 5832709 + name 0_89_KEY_6 + 5832710 + name 0_89_KEY_7 + 5832711 + name 0_89_KEY_8 + 5832712 + name 0_89_KEY_9 + 5832713 + name 0_89_KEY_POWER + 5832714 + name 0_89_KEY_CH_UP + 5832719 + name 0_89_KEY_CH_DOWN + 5832720 + name 0_89_KEY_MUTE + 5832721 + name 0_89_KEY_VOL_DOWN + 5832722 + name 0_89_CH_PREVIOUS + 5832723 + name 0_89_KEY_VOL_UP + 5832724 + name 0_89_KEY_DISPLAY + 5832725 + name 0_89_KEY_MNSELECT + 5832727 + name 0_89_KEY_EXIT + 5832728 + name 0_89_KEY_INPUT + 5832730 + name 0_89_KEY_GUIDE + 5832731 + name 0_89_KEY_FAV + 5832733 + name 0_89_KEY_MENU + 5832751 + name 0_89_KEY_MUP + 5832752 + name 0_89_KEY_MDOWN + 5832753 + name 0_89_KEY_MLEFT + 5832754 + name 0_89_KEY_MRIGHT + 5832755 + name 1_89_KEY_POWER + 2153316362 + name 1_89_KEY_CH_UP + 2153316367 + name 1_89_KEY_CH_DOWN + 2153316368 + name 1_89_KEY_DISPLAY + 2153316373 + name 1_89_KEY_EXIT + 2153316376 + name 1_89_KEY_GUIDE + 2153316379 + name 1_89_KEY_SELECT + 2153316382 + name 1_89_KEY_ENTER + 2153316395 + name 1_89_KEY_MENU + 2153316399 + name 1_89_KEY_MUP + 2153316400 + name 1_89_KEY_MDOWN + 2153316401 + name 1_89_KEY_MLEFT + 2153316402 + name 1_89_KEY_MRIGHT + 2153316403 + name 0_90_KEY_0 + 5898240 + name 0_90_KEY_1 + 5898241 + name 0_90_KEY_2 + 5898242 + name 0_90_KEY_3 + 5898243 + name 0_90_KEY_4 + 5898244 + name 0_90_KEY_5 + 5898245 + name 0_90_KEY_6 + 5898246 + name 0_90_KEY_7 + 5898247 + name 0_90_KEY_8 + 5898248 + name 0_90_KEY_9 + 5898249 + name 0_90_KEY_POWER + 5898250 + name 0_90_KEY_CH_UP + 5898255 + name 0_90_KEY_CH_DOWN + 5898256 + name 0_90_KEY_MUTE + 5898257 + name 0_90_KEY_VOL_DOWN + 5898258 + name 0_90_CH_PREVIOUS + 5898259 + name 0_90_KEY_VOL_UP + 5898260 + name 0_90_KEY_DISPLAY + 5898261 + name 0_90_KEY_MNSELECT + 5898263 + name 0_90_KEY_EXIT + 5898264 + name 0_90_KEY_INPUT + 5898266 + name 0_90_KEY_GUIDE + 5898267 + name 0_90_KEY_FAV + 5898269 + name 0_90_KEY_MENU + 5898287 + name 0_90_KEY_MUP + 5898288 + name 0_90_KEY_MDOWN + 5898289 + name 0_90_KEY_MLEFT + 5898290 + name 0_90_KEY_MRIGHT + 5898291 + name 0_90_KEY_FF + 5898292 + name 0_90_KEY_PLAY + 5898293 + name 0_90_KEY_REW + 5898294 + name 0_90_KEY_REC + 5898295 + name 0_90_KEY_PAUSE + 5898296 + name 0_90_KEY_STOP + 5898297 + name 1_90_KEY_0 + 2153381888 + name 1_90_KEY_1 + 2153381889 + name 1_90_KEY_2 + 2153381890 + name 1_90_KEY_3 + 2153381891 + name 1_90_KEY_4 + 2153381892 + name 1_90_KEY_5 + 2153381893 + name 1_90_KEY_6 + 2153381894 + name 1_90_KEY_7 + 2153381895 + name 1_90_KEY_8 + 2153381896 + name 1_90_KEY_9 + 2153381897 + name 1_90_KEY_POWER + 2153381898 + name 1_90_KEY_CH_UP + 2153381903 + name 1_90_KEY_CH_DOWN + 2153381904 + name 1_90_CH_PREVIOUS + 2153381907 + name 1_90_KEY_DISPLAY + 2153381909 + name 1_90_KEY_AV + 2153381929 + name 1_90_KEY_ENTER + 2153381931 + name 1_90_KEY_MENU + 2153381935 + name 1_90_KEY_MUP + 2153381936 + name 1_90_KEY_MDOWN + 2153381937 + name 1_90_KEY_MLEFT + 2153381938 + name 1_90_KEY_MRIGHT + 2153381939 + name 0_91_KEY_0 + 5963776 + name 0_91_KEY_1 + 5963777 + name 0_91_KEY_2 + 5963778 + name 0_91_KEY_3 + 5963779 + name 0_91_KEY_4 + 5963780 + name 0_91_KEY_5 + 5963781 + name 0_91_KEY_6 + 5963782 + name 0_91_KEY_7 + 5963783 + name 0_91_KEY_8 + 5963784 + name 0_91_KEY_9 + 5963785 + name 0_91_KEY_POWER + 5963786 + name 0_91_KEY_CH_UP + 5963791 + name 0_91_KEY_CH_DOWN + 5963792 + name 0_91_KEY_MUTE + 5963793 + name 0_91_KEY_VOL_DOWN + 5963794 + name 0_91_CH_PREVIOUS + 5963795 + name 0_91_KEY_VOL_UP + 5963796 + name 0_91_KEY_DISPLAY + 5963797 + name 0_91_KEY_MNSELECT + 5963799 + name 0_91_KEY_EXIT + 5963800 + name 0_91_KEY_INPUT + 5963802 + name 0_91_KEY_GUIDE + 5963803 + name 0_91_KEY_FAV + 5963805 + name 0_91_KEY_MENU + 5963823 + name 0_91_KEY_MUP + 5963824 + name 0_91_KEY_MDOWN + 5963825 + name 0_91_KEY_MLEFT + 5963826 + name 0_91_KEY_MRIGHT + 5963827 + name 0_91_KEY_FF + 5963828 + name 0_91_KEY_PLAY + 5963829 + name 0_91_KEY_REW + 5963830 + name 0_91_KEY_REC + 5963831 + name 0_91_KEY_PAUSE + 5963832 + name 0_91_KEY_STOP + 5963833 + name 1_91_KEY_0 + 2153447424 + name 1_91_KEY_1 + 2153447425 + name 1_91_KEY_2 + 2153447426 + name 1_91_KEY_3 + 2153447427 + name 1_91_KEY_4 + 2153447428 + name 1_91_KEY_5 + 2153447429 + name 1_91_KEY_6 + 2153447430 + name 1_91_KEY_7 + 2153447431 + name 1_91_KEY_8 + 2153447432 + name 1_91_KEY_9 + 2153447433 + name 1_91_KEY_POWER + 2153447434 + name 1_91_KEY_CH_UP + 2153447439 + name 1_91_KEY_CH_DOWN + 2153447440 + name 1_91_CH_PREVIOUS + 2153447443 + name 1_91_KEY_DISPLAY + 2153447445 + name 1_91_KEY_EXIT + 2153447448 + name 1_91_KEY_AV + 2153447465 + name 1_91_KEY_ENTER + 2153447467 + name 1_91_KEY_MENU + 2153447471 + name 1_91_KEY_MUP + 2153447472 + name 1_91_KEY_MDOWN + 2153447473 + name 1_91_KEY_MLEFT + 2153447474 + name 1_91_KEY_MRIGHT + 2153447475 + name 0_92_KEY_0 + 6029312 + name 0_92_KEY_1 + 6029313 + name 0_92_KEY_2 + 6029314 + name 0_92_KEY_3 + 6029315 + name 0_92_KEY_4 + 6029316 + name 0_92_KEY_5 + 6029317 + name 0_92_KEY_6 + 6029318 + name 0_92_KEY_7 + 6029319 + name 0_92_KEY_8 + 6029320 + name 0_92_KEY_9 + 6029321 + name 0_92_KEY_POWER + 6029322 + name 0_92_KEY_CH_UP + 6029327 + name 0_92_KEY_CH_DOWN + 6029328 + name 0_92_KEY_MUTE + 6029329 + name 0_92_KEY_VOL_DOWN + 6029330 + name 0_92_CH_PREVIOUS + 6029331 + name 0_92_KEY_VOL_UP + 6029332 + name 0_92_KEY_DISPLAY + 6029333 + name 0_92_KEY_MNSELECT + 6029335 + name 0_92_KEY_EXIT + 6029336 + name 0_92_KEY_INPUT + 6029338 + name 0_92_KEY_GUIDE + 6029339 + name 0_92_KEY_FAV + 6029341 + name 0_92_KEY_MENU + 6029359 + name 0_92_KEY_MUP + 6029360 + name 0_92_KEY_MDOWN + 6029361 + name 0_92_KEY_MLEFT + 6029362 + name 0_92_KEY_MRIGHT + 6029363 + name 0_92_KEY_FF + 6029364 + name 0_92_KEY_PLAY + 6029365 + name 0_92_KEY_REW + 6029366 + name 0_92_KEY_REC + 6029367 + name 0_92_KEY_PAUSE + 6029368 + name 0_92_KEY_STOP + 6029369 + name 1_92_KEY_0 + 2153512960 + name 1_92_KEY_1 + 2153512961 + name 1_92_KEY_2 + 2153512962 + name 1_92_KEY_3 + 2153512963 + name 1_92_KEY_4 + 2153512964 + name 1_92_KEY_5 + 2153512965 + name 1_92_KEY_6 + 2153512966 + name 1_92_KEY_7 + 2153512967 + name 1_92_KEY_8 + 2153512968 + name 1_92_KEY_9 + 2153512969 + name 1_92_KEY_POWER + 2153512970 + name 1_92_KEY_CH_UP + 2153512975 + name 1_92_KEY_CH_DOWN + 2153512976 + name 1_92_CH_PREVIOUS + 2153512979 + name 1_92_KEY_DISPLAY + 2153512981 + name 1_92_KEY_EXIT + 2153512984 + name 1_92_KEY_INPUT + 2153512986 + name 1_92_KEY_GUIDE + 2153512987 + name 1_92_KEY_SELECT + 2153512990 + name 1_92_KEY_AV + 2153513001 + name 1_92_KEY_SAT + 2153513002 + name 1_92_KEY_ENTER + 2153513003 + name 1_92_KEY_MENU + 2153513007 + name 1_92_KEY_MUP + 2153513008 + name 1_92_KEY_MDOWN + 2153513009 + name 1_92_KEY_MLEFT + 2153513010 + name 1_92_KEY_MRIGHT + 2153513011 + name 0_93_KEY_0 + 6094848 + name 0_93_KEY_1 + 6094849 + name 0_93_KEY_2 + 6094850 + name 0_93_KEY_3 + 6094851 + name 0_93_KEY_4 + 6094852 + name 0_93_KEY_5 + 6094853 + name 0_93_KEY_6 + 6094854 + name 0_93_KEY_7 + 6094855 + name 0_93_KEY_8 + 6094856 + name 0_93_KEY_9 + 6094857 + name 0_93_KEY_POWER + 6094858 + name 0_93_KEY_CH_UP + 6094863 + name 0_93_KEY_CH_DOWN + 6094864 + name 0_93_KEY_MUTE + 6094865 + name 0_93_KEY_VOL_DOWN + 6094866 + name 0_93_CH_PREVIOUS + 6094867 + name 0_93_KEY_VOL_UP + 6094868 + name 0_93_KEY_DISPLAY + 6094869 + name 0_93_KEY_MNSELECT + 6094871 + name 0_93_KEY_EXIT + 6094872 + name 0_93_KEY_INPUT + 6094874 + name 0_93_KEY_GUIDE + 6094875 + name 0_93_KEY_FAV + 6094877 + name 0_93_KEY_MENU + 6094895 + name 0_93_KEY_MUP + 6094896 + name 0_93_KEY_MDOWN + 6094897 + name 0_93_KEY_MLEFT + 6094898 + name 0_93_KEY_MRIGHT + 6094899 + name 0_93_KEY_FF + 6094900 + name 0_93_KEY_PLAY + 6094901 + name 0_93_KEY_REW + 6094902 + name 0_93_KEY_REC + 6094903 + name 0_93_KEY_PAUSE + 6094904 + name 0_93_KEY_STOP + 6094905 + name 1_93_KEY_0 + 2153578496 + name 1_93_KEY_1 + 2153578497 + name 1_93_KEY_2 + 2153578498 + name 1_93_KEY_3 + 2153578499 + name 1_93_KEY_4 + 2153578500 + name 1_93_KEY_5 + 2153578501 + name 1_93_KEY_6 + 2153578502 + name 1_93_KEY_7 + 2153578503 + name 1_93_KEY_8 + 2153578504 + name 1_93_KEY_9 + 2153578505 + name 1_93_KEY_POWER + 2153578506 + name 1_93_KEY_CH_UP + 2153578511 + name 1_93_KEY_CH_DOWN + 2153578512 + name 1_93_CH_PREVIOUS + 2153578515 + name 1_93_KEY_ENTER + 2153578539 + name 0_94_KEY_0 + 6160384 + name 0_94_KEY_1 + 6160385 + name 0_94_KEY_2 + 6160386 + name 0_94_KEY_3 + 6160387 + name 0_94_KEY_4 + 6160388 + name 0_94_KEY_5 + 6160389 + name 0_94_KEY_6 + 6160390 + name 0_94_KEY_7 + 6160391 + name 0_94_KEY_8 + 6160392 + name 0_94_KEY_9 + 6160393 + name 0_94_KEY_POWER + 6160394 + name 0_94_KEY_CH_UP + 6160399 + name 0_94_KEY_CH_DOWN + 6160400 + name 0_94_KEY_MUTE + 6160401 + name 0_94_KEY_VOL_DOWN + 6160402 + name 0_94_CH_PREVIOUS + 6160403 + name 0_94_KEY_VOL_UP + 6160404 + name 0_94_KEY_DISPLAY + 6160405 + name 0_94_KEY_MNSELECT + 6160407 + name 0_94_KEY_EXIT + 6160408 + name 0_94_KEY_INPUT + 6160410 + name 0_94_KEY_GUIDE + 6160411 + name 0_94_KEY_FAV + 6160413 + name 0_94_KEY_MENU + 6160431 + name 0_94_KEY_MUP + 6160432 + name 0_94_KEY_MDOWN + 6160433 + name 0_94_KEY_MLEFT + 6160434 + name 0_94_KEY_MRIGHT + 6160435 + name 0_94_KEY_FF + 6160436 + name 0_94_KEY_PLAY + 6160437 + name 0_94_KEY_REW + 6160438 + name 0_94_KEY_REC + 6160439 + name 0_94_KEY_PAUSE + 6160440 + name 0_94_KEY_STOP + 6160441 + name 1_94_KEY_0 + 2153644032 + name 1_94_KEY_1 + 2153644033 + name 1_94_KEY_2 + 2153644034 + name 1_94_KEY_3 + 2153644035 + name 1_94_KEY_4 + 2153644036 + name 1_94_KEY_5 + 2153644037 + name 1_94_KEY_6 + 2153644038 + name 1_94_KEY_7 + 2153644039 + name 1_94_KEY_8 + 2153644040 + name 1_94_KEY_9 + 2153644041 + name 1_94_KEY_POWER + 2153644042 + name 1_94_KEY_CH_UP + 2153644047 + name 1_94_KEY_CH_DOWN + 2153644048 + name 1_94_CH_PREVIOUS + 2153644051 + name 1_94_KEY_ENTER + 2153644075 + name 0_95_KEY_0 + 6225920 + name 0_95_KEY_1 + 6225921 + name 0_95_KEY_2 + 6225922 + name 0_95_KEY_3 + 6225923 + name 0_95_KEY_4 + 6225924 + name 0_95_KEY_5 + 6225925 + name 0_95_KEY_6 + 6225926 + name 0_95_KEY_7 + 6225927 + name 0_95_KEY_8 + 6225928 + name 0_95_KEY_9 + 6225929 + name 0_95_KEY_POWER + 6225930 + name 0_95_KEY_CH_UP + 6225935 + name 0_95_KEY_CH_DOWN + 6225936 + name 0_95_KEY_MUTE + 6225937 + name 0_95_KEY_VOL_DOWN + 6225938 + name 0_95_CH_PREVIOUS + 6225939 + name 0_95_KEY_VOL_UP + 6225940 + name 0_95_KEY_DISPLAY + 6225941 + name 0_95_KEY_MNSELECT + 6225943 + name 0_95_KEY_EXIT + 6225944 + name 0_95_KEY_INPUT + 6225946 + name 0_95_KEY_GUIDE + 6225947 + name 0_95_KEY_ENTER + 6225963 + name 0_95_KEY_MENU + 6225967 + name 0_95_KEY_MUP + 6225968 + name 0_95_KEY_MDOWN + 6225969 + name 0_95_KEY_MLEFT + 6225970 + name 0_95_KEY_MRIGHT + 6225971 + name 0_95_KEY_FF + 6225972 + name 0_95_KEY_PLAY + 6225973 + name 0_95_KEY_REW + 6225974 + name 0_95_KEY_REC + 6225975 + name 0_95_KEY_PAUSE + 6225976 + name 0_95_KEY_STOP + 6225977 + name 1_95_KEY_0 + 2153709568 + name 1_95_KEY_1 + 2153709569 + name 1_95_KEY_2 + 2153709570 + name 1_95_KEY_3 + 2153709571 + name 1_95_KEY_4 + 2153709572 + name 1_95_KEY_5 + 2153709573 + name 1_95_KEY_6 + 2153709574 + name 1_95_KEY_7 + 2153709575 + name 1_95_KEY_8 + 2153709576 + name 1_95_KEY_9 + 2153709577 + name 1_95_KEY_POWER + 2153709578 + name 1_95_KEY_CH_UP + 2153709583 + name 1_95_KEY_CH_DOWN + 2153709584 + name 0_96_KEY_0 + 6291456 + name 0_96_KEY_1 + 6291457 + name 0_96_KEY_2 + 6291458 + name 0_96_KEY_3 + 6291459 + name 0_96_KEY_4 + 6291460 + name 0_96_KEY_5 + 6291461 + name 0_96_KEY_6 + 6291462 + name 0_96_KEY_7 + 6291463 + name 0_96_KEY_8 + 6291464 + name 0_96_KEY_9 + 6291465 + name 0_96_KEY_POWER + 6291466 + name 0_96_KEY_CH_UP + 6291471 + name 0_96_KEY_CH_DOWN + 6291472 + name 0_96_KEY_MUTE + 6291473 + name 0_96_KEY_VOL_DOWN + 6291474 + name 0_96_CH_PREVIOUS + 6291475 + name 0_96_KEY_VOL_UP + 6291476 + name 0_96_KEY_DISPLAY + 6291477 + name 0_96_KEY_MNSELECT + 6291479 + name 0_96_KEY_INPUT + 6291482 + name 0_96_KEY_GUIDE + 6291483 + name 0_96_KEY_MENU + 6291503 + name 0_96_KEY_MUP + 6291504 + name 0_96_KEY_MDOWN + 6291505 + name 0_96_KEY_MLEFT + 6291506 + name 0_96_KEY_MRIGHT + 6291507 + name 0_96_KEY_FF + 6291508 + name 0_96_KEY_REW + 6291510 + name 0_96_KEY_PAUSE + 6291512 + name 1_96_KEY_0 + 2153775104 + name 1_96_KEY_1 + 2153775105 + name 1_96_KEY_2 + 2153775106 + name 1_96_KEY_3 + 2153775107 + name 1_96_KEY_4 + 2153775108 + name 1_96_KEY_5 + 2153775109 + name 1_96_KEY_6 + 2153775110 + name 1_96_KEY_7 + 2153775111 + name 1_96_KEY_8 + 2153775112 + name 1_96_KEY_9 + 2153775113 + name 1_96_KEY_POWER + 2153775114 + name 1_96_KEY_CH_UP + 2153775119 + name 1_96_KEY_CH_DOWN + 2153775120 + name 0_97_KEY_0 + 6356992 + name 0_97_KEY_1 + 6356993 + name 0_97_KEY_2 + 6356994 + name 0_97_KEY_3 + 6356995 + name 0_97_KEY_4 + 6356996 + name 0_97_KEY_5 + 6356997 + name 0_97_KEY_6 + 6356998 + name 0_97_KEY_7 + 6356999 + name 0_97_KEY_8 + 6357000 + name 0_97_KEY_9 + 6357001 + name 0_97_KEY_POWER + 6357002 + name 0_97_KEY_CH_UP + 6357007 + name 0_97_KEY_CH_DOWN + 6357008 + name 0_97_KEY_MUTE + 6357009 + name 0_97_KEY_VOL_DOWN + 6357010 + name 0_97_CH_PREVIOUS + 6357011 + name 0_97_KEY_VOL_UP + 6357012 + name 0_97_KEY_DISPLAY + 6357013 + name 0_97_KEY_MNSELECT + 6357015 + name 0_97_KEY_EXIT + 6357016 + name 0_97_KEY_INPUT + 6357018 + name 0_97_KEY_GUIDE + 6357019 + name 0_97_KEY_ENTER + 6357035 + name 0_97_KEY_MENU + 6357039 + name 0_97_KEY_MUP + 6357040 + name 0_97_KEY_MDOWN + 6357041 + name 0_97_KEY_MLEFT + 6357042 + name 0_97_KEY_MRIGHT + 6357043 + name 0_97_KEY_FF + 6357044 + name 0_97_KEY_PLAY + 6357045 + name 0_97_KEY_REW + 6357046 + name 0_97_KEY_REC + 6357047 + name 0_97_KEY_PAUSE + 6357048 + name 0_97_KEY_STOP + 6357049 + name 1_97_KEY_0 + 2153840640 + name 1_97_KEY_1 + 2153840641 + name 1_97_KEY_2 + 2153840642 + name 1_97_KEY_3 + 2153840643 + name 1_97_KEY_4 + 2153840644 + name 1_97_KEY_5 + 2153840645 + name 1_97_KEY_6 + 2153840646 + name 1_97_KEY_7 + 2153840647 + name 1_97_KEY_8 + 2153840648 + name 1_97_KEY_9 + 2153840649 + name 1_97_KEY_POWER + 2153840650 + name 1_97_KEY_CH_UP + 2153840655 + name 1_97_KEY_CH_DOWN + 2153840656 + name 1_97_CH_PREVIOUS + 2153840659 + name 1_97_KEY_ENTER + 2153840683 + name 0_98_KEY_0 + 6422528 + name 0_98_KEY_1 + 6422529 + name 0_98_KEY_2 + 6422530 + name 0_98_KEY_3 + 6422531 + name 0_98_KEY_4 + 6422532 + name 0_98_KEY_5 + 6422533 + name 0_98_KEY_6 + 6422534 + name 0_98_KEY_7 + 6422535 + name 0_98_KEY_8 + 6422536 + name 0_98_KEY_9 + 6422537 + name 0_98_KEY_POWER + 6422538 + name 0_98_KEY_CH_UP + 6422543 + name 0_98_KEY_CH_DOWN + 6422544 + name 0_98_KEY_MUTE + 6422545 + name 0_98_KEY_VOL_DOWN + 6422546 + name 0_98_CH_PREVIOUS + 6422547 + name 0_98_KEY_VOL_UP + 6422548 + name 0_98_KEY_DISPLAY + 6422549 + name 0_98_KEY_MNSELECT + 6422551 + name 0_98_KEY_EXIT + 6422552 + name 0_98_KEY_INPUT + 6422554 + name 0_98_KEY_GUIDE + 6422555 + name 0_98_KEY_MENU + 6422575 + name 0_98_KEY_MUP + 6422576 + name 0_98_KEY_MDOWN + 6422577 + name 0_98_KEY_MLEFT + 6422578 + name 0_98_KEY_MRIGHT + 6422579 + name 0_98_KEY_FF + 6422580 + name 0_98_KEY_PLAY + 6422581 + name 0_98_KEY_REW + 6422582 + name 0_98_KEY_REC + 6422583 + name 0_98_KEY_PAUSE + 6422584 + name 0_98_KEY_STOP + 6422585 + name 1_98_KEY_0 + 2153906176 + name 1_98_KEY_1 + 2153906177 + name 1_98_KEY_2 + 2153906178 + name 1_98_KEY_3 + 2153906179 + name 1_98_KEY_4 + 2153906180 + name 1_98_KEY_5 + 2153906181 + name 1_98_KEY_6 + 2153906182 + name 1_98_KEY_7 + 2153906183 + name 1_98_KEY_8 + 2153906184 + name 1_98_KEY_9 + 2153906185 + name 1_98_KEY_POWER + 2153906186 + name 1_98_KEY_CH_UP + 2153906191 + name 1_98_KEY_CH_DOWN + 2153906192 + name 0_99_KEY_0 + 6488064 + name 0_99_KEY_1 + 6488065 + name 0_99_KEY_2 + 6488066 + name 0_99_KEY_3 + 6488067 + name 0_99_KEY_4 + 6488068 + name 0_99_KEY_5 + 6488069 + name 0_99_KEY_6 + 6488070 + name 0_99_KEY_7 + 6488071 + name 0_99_KEY_8 + 6488072 + name 0_99_KEY_9 + 6488073 + name 0_99_KEY_POWER + 6488074 + name 0_99_KEY_CH_UP + 6488079 + name 0_99_KEY_CH_DOWN + 6488080 + name 0_99_CH_PREVIOUS + 6488083 + name 0_99_KEY_DISPLAY + 6488085 + name 0_99_KEY_MNSELECT + 6488087 + name 0_99_KEY_GUIDE + 6488091 + name 0_99_KEY_FAV + 6488093 + name 0_99_KEY_ENTER + 6488107 + name 0_99_KEY_MUP + 6488112 + name 0_99_KEY_MDOWN + 6488113 + name 0_99_KEY_MLEFT + 6488114 + name 0_99_KEY_MRIGHT + 6488115 + name 0_99_KEY_FF + 6488116 + name 0_99_KEY_PLAY + 6488117 + name 0_99_KEY_REW + 6488118 + name 0_99_KEY_REC + 6488119 + name 0_99_KEY_PAUSE + 6488120 + name 0_99_KEY_STOP + 6488121 + name 1_99_KEY_0 + 2153971712 + name 1_99_KEY_1 + 2153971713 + name 1_99_KEY_2 + 2153971714 + name 1_99_KEY_3 + 2153971715 + name 1_99_KEY_4 + 2153971716 + name 1_99_KEY_5 + 2153971717 + name 1_99_KEY_6 + 2153971718 + name 1_99_KEY_7 + 2153971719 + name 1_99_KEY_8 + 2153971720 + name 1_99_KEY_9 + 2153971721 + name 1_99_KEY_POWER + 2153971722 + name 1_99_KEY_CH_UP + 2153971727 + name 1_99_KEY_CH_DOWN + 2153971728 + name 0_100_KEY_0 + 6553600 + name 0_100_KEY_1 + 6553601 + name 0_100_KEY_2 + 6553602 + name 0_100_KEY_3 + 6553603 + name 0_100_KEY_4 + 6553604 + name 0_100_KEY_5 + 6553605 + name 0_100_KEY_6 + 6553606 + name 0_100_KEY_7 + 6553607 + name 0_100_KEY_8 + 6553608 + name 0_100_KEY_9 + 6553609 + name 0_100_KEY_POWER + 6553610 + name 0_100_KEY_CH_UP + 6553615 + name 0_100_KEY_CH_DOWN + 6553616 + name 0_100_KEY_MUTE + 6553617 + name 0_100_KEY_VOL_DOWN + 6553618 + name 0_100_CH_PREVIOUS + 6553619 + name 0_100_KEY_VOL_UP + 6553620 + name 0_100_KEY_DISPLAY + 6553621 + name 0_100_KEY_MNSELECT + 6553623 + name 0_100_KEY_EXIT + 6553624 + name 0_100_KEY_INPUT + 6553626 + name 0_100_KEY_GUIDE + 6553627 + name 0_100_KEY_ENTER + 6553643 + name 0_100_KEY_MENU + 6553647 + name 0_100_KEY_MUP + 6553648 + name 0_100_KEY_MDOWN + 6553649 + name 0_100_KEY_MLEFT + 6553650 + name 0_100_KEY_MRIGHT + 6553651 + name 0_100_KEY_FF + 6553652 + name 0_100_KEY_PLAY + 6553653 + name 0_100_KEY_REW + 6553654 + name 0_100_KEY_REC + 6553655 + name 0_100_KEY_PAUSE + 6553656 + name 0_100_KEY_STOP + 6553657 + name 1_100_KEY_0 + 2154037248 + name 1_100_KEY_1 + 2154037249 + name 1_100_KEY_2 + 2154037250 + name 1_100_KEY_3 + 2154037251 + name 1_100_KEY_4 + 2154037252 + name 1_100_KEY_5 + 2154037253 + name 1_100_KEY_6 + 2154037254 + name 1_100_KEY_7 + 2154037255 + name 1_100_KEY_8 + 2154037256 + name 1_100_KEY_9 + 2154037257 + name 1_100_KEY_POWER + 2154037258 + name 1_100_KEY_CH_UP + 2154037263 + name 1_100_KEY_CH_DOWN + 2154037264 + name 1_100_CH_PREVIOUS + 2154037267 + name 1_100_KEY_ENTER + 2154037291 + name 0_101_KEY_0 + 6619136 + name 0_101_KEY_1 + 6619137 + name 0_101_KEY_2 + 6619138 + name 0_101_KEY_3 + 6619139 + name 0_101_KEY_4 + 6619140 + name 0_101_KEY_5 + 6619141 + name 0_101_KEY_6 + 6619142 + name 0_101_KEY_7 + 6619143 + name 0_101_KEY_8 + 6619144 + name 0_101_KEY_9 + 6619145 + name 0_101_KEY_POWER + 6619146 + name 0_101_KEY_CH_UP + 6619151 + name 0_101_KEY_CH_DOWN + 6619152 + name 0_101_KEY_MUTE + 6619153 + name 0_101_KEY_VOL_DOWN + 6619154 + name 0_101_CH_PREVIOUS + 6619155 + name 0_101_KEY_VOL_UP + 6619156 + name 0_101_KEY_DISPLAY + 6619157 + name 0_101_KEY_MNSELECT + 6619159 + name 0_101_KEY_EXIT + 6619160 + name 0_101_KEY_INPUT + 6619162 + name 0_101_KEY_GUIDE + 6619163 + name 0_101_KEY_MENU + 6619183 + name 0_101_KEY_MUP + 6619184 + name 0_101_KEY_MDOWN + 6619185 + name 0_101_KEY_MLEFT + 6619186 + name 0_101_KEY_MRIGHT + 6619187 + name 0_101_KEY_FF + 6619188 + name 0_101_KEY_PLAY + 6619189 + name 0_101_KEY_REW + 6619190 + name 0_101_KEY_REC + 6619191 + name 0_101_KEY_PAUSE + 6619192 + name 0_101_KEY_STOP + 6619193 + name 1_101_KEY_0 + 2154102784 + name 1_101_KEY_1 + 2154102785 + name 1_101_KEY_2 + 2154102786 + name 1_101_KEY_3 + 2154102787 + name 1_101_KEY_4 + 2154102788 + name 1_101_KEY_5 + 2154102789 + name 1_101_KEY_6 + 2154102790 + name 1_101_KEY_7 + 2154102791 + name 1_101_KEY_8 + 2154102792 + name 1_101_KEY_9 + 2154102793 + name 1_101_KEY_POWER + 2154102794 + name 1_101_KEY_CH_UP + 2154102799 + name 1_101_KEY_CH_DOWN + 2154102800 + name 1_101_KEY_ENTER + 2154102827 + name 0_102_KEY_0 + 6684672 + name 0_102_KEY_1 + 6684673 + name 0_102_KEY_2 + 6684674 + name 0_102_KEY_3 + 6684675 + name 0_102_KEY_4 + 6684676 + name 0_102_KEY_5 + 6684677 + name 0_102_KEY_6 + 6684678 + name 0_102_KEY_7 + 6684679 + name 0_102_KEY_8 + 6684680 + name 0_102_KEY_9 + 6684681 + name 0_102_KEY_POWER + 6684682 + name 0_102_KEY_CH_UP + 6684687 + name 0_102_KEY_CH_DOWN + 6684688 + name 0_102_KEY_MUTE + 6684689 + name 0_102_KEY_VOL_DOWN + 6684690 + name 0_102_CH_PREVIOUS + 6684691 + name 0_102_KEY_VOL_UP + 6684692 + name 0_102_KEY_DISPLAY + 6684693 + name 0_102_KEY_MNSELECT + 6684695 + name 0_102_KEY_INPUT + 6684698 + name 0_102_KEY_GUIDE + 6684699 + name 0_102_KEY_MENU + 6684719 + name 1_102_KEY_0 + 2154168320 + name 1_102_KEY_1 + 2154168321 + name 1_102_KEY_2 + 2154168322 + name 1_102_KEY_3 + 2154168323 + name 1_102_KEY_4 + 2154168324 + name 1_102_KEY_5 + 2154168325 + name 1_102_KEY_6 + 2154168326 + name 1_102_KEY_7 + 2154168327 + name 1_102_KEY_8 + 2154168328 + name 1_102_KEY_9 + 2154168329 + name 1_102_KEY_POWER + 2154168330 + name 1_102_KEY_CH_UP + 2154168335 + name 1_102_KEY_CH_DOWN + 2154168336 + name 1_102_CH_PREVIOUS + 2154168339 + name 1_102_KEY_ENTER + 2154168363 + name 0_103_KEY_0 + 6750208 + name 0_103_KEY_1 + 6750209 + name 0_103_KEY_2 + 6750210 + name 0_103_KEY_3 + 6750211 + name 0_103_KEY_4 + 6750212 + name 0_103_KEY_5 + 6750213 + name 0_103_KEY_6 + 6750214 + name 0_103_KEY_7 + 6750215 + name 0_103_KEY_8 + 6750216 + name 0_103_KEY_9 + 6750217 + name 0_103_KEY_POWER + 6750218 + name 0_103_KEY_CH_UP + 6750223 + name 0_103_KEY_CH_DOWN + 6750224 + name 0_103_KEY_MUTE + 6750225 + name 0_103_KEY_VOL_DOWN + 6750226 + name 0_103_CH_PREVIOUS + 6750227 + name 0_103_KEY_VOL_UP + 6750228 + name 0_103_KEY_DISPLAY + 6750229 + name 0_103_KEY_MNSELECT + 6750231 + name 0_103_KEY_EXIT + 6750232 + name 0_103_KEY_MENU + 6750255 + name 1_103_KEY_0 + 2154233856 + name 1_103_KEY_1 + 2154233857 + name 1_103_KEY_2 + 2154233858 + name 1_103_KEY_3 + 2154233859 + name 1_103_KEY_4 + 2154233860 + name 1_103_KEY_5 + 2154233861 + name 1_103_KEY_6 + 2154233862 + name 1_103_KEY_7 + 2154233863 + name 1_103_KEY_8 + 2154233864 + name 1_103_KEY_9 + 2154233865 + name 1_103_KEY_POWER + 2154233866 + name 1_103_KEY_CH_UP + 2154233871 + name 1_103_KEY_CH_DOWN + 2154233872 + name 1_103_CH_PREVIOUS + 2154233875 + name 1_103_KEY_ENTER + 2154233899 + name 0_104_KEY_0 + 6815744 + name 0_104_KEY_1 + 6815745 + name 0_104_KEY_2 + 6815746 + name 0_104_KEY_3 + 6815747 + name 0_104_KEY_4 + 6815748 + name 0_104_KEY_5 + 6815749 + name 0_104_KEY_6 + 6815750 + name 0_104_KEY_7 + 6815751 + name 0_104_KEY_8 + 6815752 + name 0_104_KEY_9 + 6815753 + name 0_104_KEY_POWER + 6815754 + name 0_104_KEY_CH_UP + 6815759 + name 0_104_KEY_CH_DOWN + 6815760 + name 0_104_KEY_MUTE + 6815761 + name 0_104_KEY_VOL_DOWN + 6815762 + name 0_104_CH_PREVIOUS + 6815763 + name 0_104_KEY_VOL_UP + 6815764 + name 0_104_KEY_DISPLAY + 6815765 + name 0_104_KEY_MNSELECT + 6815767 + name 0_104_KEY_EXIT + 6815768 + name 0_104_KEY_INPUT + 6815770 + name 0_104_KEY_GUIDE + 6815771 + name 0_104_KEY_ENTER + 6815787 + name 0_104_KEY_MENU + 6815791 + name 0_104_KEY_MUP + 6815792 + name 0_104_KEY_MDOWN + 6815793 + name 0_104_KEY_MLEFT + 6815794 + name 0_104_KEY_MRIGHT + 6815795 + name 1_104_KEY_0 + 2154299392 + name 1_104_KEY_1 + 2154299393 + name 1_104_KEY_2 + 2154299394 + name 1_104_KEY_3 + 2154299395 + name 1_104_KEY_4 + 2154299396 + name 1_104_KEY_5 + 2154299397 + name 1_104_KEY_6 + 2154299398 + name 1_104_KEY_7 + 2154299399 + name 1_104_KEY_8 + 2154299400 + name 1_104_KEY_9 + 2154299401 + name 1_104_KEY_POWER + 2154299402 + name 1_104_KEY_CH_UP + 2154299407 + name 1_104_KEY_CH_DOWN + 2154299408 + name 1_104_CH_PREVIOUS + 2154299411 + name 1_104_KEY_ENTER + 2154299435 + name 0_105_KEY_0 + 6881280 + name 0_105_KEY_1 + 6881281 + name 0_105_KEY_2 + 6881282 + name 0_105_KEY_3 + 6881283 + name 0_105_KEY_4 + 6881284 + name 0_105_KEY_5 + 6881285 + name 0_105_KEY_6 + 6881286 + name 0_105_KEY_7 + 6881287 + name 0_105_KEY_8 + 6881288 + name 0_105_KEY_9 + 6881289 + name 0_105_KEY_POWER + 6881290 + name 0_105_KEY_CH_UP + 6881295 + name 0_105_KEY_CH_DOWN + 6881296 + name 0_105_KEY_MUTE + 6881297 + name 0_105_KEY_VOL_DOWN + 6881298 + name 0_105_CH_PREVIOUS + 6881299 + name 0_105_KEY_VOL_UP + 6881300 + name 0_105_KEY_INPUT + 6881306 + name 1_105_KEY_0 + 2154364928 + name 1_105_KEY_1 + 2154364929 + name 1_105_KEY_2 + 2154364930 + name 1_105_KEY_3 + 2154364931 + name 1_105_KEY_4 + 2154364932 + name 1_105_KEY_5 + 2154364933 + name 1_105_KEY_6 + 2154364934 + name 1_105_KEY_7 + 2154364935 + name 1_105_KEY_8 + 2154364936 + name 1_105_KEY_9 + 2154364937 + name 1_105_KEY_POWER + 2154364938 + name 1_105_KEY_CH_UP + 2154364943 + name 1_105_KEY_CH_DOWN + 2154364944 + name 1_105_KEY_MUTE + 2154364945 + name 1_105_KEY_VOL_DOWN + 2154364946 + name 1_105_CH_PREVIOUS + 2154364947 + name 1_105_KEY_VOL_UP + 2154364948 + name 1_105_KEY_DISPLAY + 2154364949 + name 1_105_KEY_EXIT + 2154364952 + name 1_105_KEY_INPUT + 2154364954 + name 1_105_KEY_GUIDE + 2154364955 + name 1_105_KEY_SELECT + 2154364958 + name 1_105_KEY_AV + 2154364969 + name 1_105_KEY_SAT + 2154364970 + name 1_105_KEY_ENTER + 2154364971 + name 1_105_KEY_MENU + 2154364975 + name 1_105_KEY_MUP + 2154364976 + name 1_105_KEY_MDOWN + 2154364977 + name 1_105_KEY_MLEFT + 2154364978 + name 1_105_KEY_MRIGHT + 2154364979 + name 1_105_KEY_FF + 2154364980 + name 1_105_KEY_PLAY + 2154364981 + name 1_105_KEY_REW + 2154364982 + name 1_105_KEY_REC + 2154364983 + name 1_105_KEY_PAUSE + 2154364984 + name 1_105_KEY_STOP + 2154364985 + name 0_106_KEY_0 + 6946816 + name 0_106_KEY_1 + 6946817 + name 0_106_KEY_2 + 6946818 + name 0_106_KEY_3 + 6946819 + name 0_106_KEY_4 + 6946820 + name 0_106_KEY_5 + 6946821 + name 0_106_KEY_6 + 6946822 + name 0_106_KEY_7 + 6946823 + name 0_106_KEY_8 + 6946824 + name 0_106_KEY_9 + 6946825 + name 0_106_KEY_POWER + 6946826 + name 0_106_KEY_CH_UP + 6946831 + name 0_106_KEY_CH_DOWN + 6946832 + name 0_106_KEY_MUTE + 6946833 + name 0_106_KEY_VOL_DOWN + 6946834 + name 0_106_CH_PREVIOUS + 6946835 + name 0_106_KEY_VOL_UP + 6946836 + name 0_106_KEY_DISPLAY + 6946837 + name 0_106_KEY_MNSELECT + 6946839 + name 0_106_KEY_EXIT + 6946840 + name 0_106_KEY_INPUT + 6946842 + name 0_106_KEY_GUIDE + 6946843 + name 0_106_KEY_ENTER + 6946859 + name 0_106_KEY_MUP + 6946864 + name 0_106_KEY_MDOWN + 6946865 + name 0_106_KEY_MLEFT + 6946866 + name 0_106_KEY_MRIGHT + 6946867 + name 1_106_KEY_0 + 2154430464 + name 1_106_KEY_1 + 2154430465 + name 1_106_KEY_2 + 2154430466 + name 1_106_KEY_3 + 2154430467 + name 1_106_KEY_4 + 2154430468 + name 1_106_KEY_5 + 2154430469 + name 1_106_KEY_6 + 2154430470 + name 1_106_KEY_7 + 2154430471 + name 1_106_KEY_8 + 2154430472 + name 1_106_KEY_9 + 2154430473 + name 1_106_KEY_POWER + 2154430474 + name 1_106_KEY_CH_UP + 2154430479 + name 1_106_KEY_CH_DOWN + 2154430480 + name 1_106_KEY_MUTE + 2154430481 + name 1_106_KEY_VOL_DOWN + 2154430482 + name 1_106_CH_PREVIOUS + 2154430483 + name 1_106_KEY_VOL_UP + 2154430484 + name 1_106_KEY_DISPLAY + 2154430485 + name 1_106_KEY_EXIT + 2154430488 + name 1_106_KEY_INPUT + 2154430490 + name 1_106_KEY_GUIDE + 2154430491 + name 1_106_KEY_SELECT + 2154430494 + name 1_106_KEY_AV + 2154430505 + name 1_106_KEY_SAT + 2154430506 + name 1_106_KEY_ENTER + 2154430507 + name 1_106_KEY_MENU + 2154430511 + name 1_106_KEY_MUP + 2154430512 + name 1_106_KEY_MDOWN + 2154430513 + name 1_106_KEY_MLEFT + 2154430514 + name 1_106_KEY_MRIGHT + 2154430515 + name 1_106_KEY_FF + 2154430516 + name 1_106_KEY_PLAY + 2154430517 + name 1_106_KEY_REW + 2154430518 + name 1_106_KEY_REC + 2154430519 + name 1_106_KEY_PAUSE + 2154430520 + name 1_106_KEY_STOP + 2154430521 + name 0_107_KEY_0 + 7012352 + name 0_107_KEY_1 + 7012353 + name 0_107_KEY_2 + 7012354 + name 0_107_KEY_3 + 7012355 + name 0_107_KEY_4 + 7012356 + name 0_107_KEY_5 + 7012357 + name 0_107_KEY_6 + 7012358 + name 0_107_KEY_7 + 7012359 + name 0_107_KEY_8 + 7012360 + name 0_107_KEY_9 + 7012361 + name 0_107_KEY_POWER + 7012362 + name 0_107_KEY_CH_UP + 7012367 + name 0_107_KEY_CH_DOWN + 7012368 + name 0_107_KEY_MUTE + 7012369 + name 0_107_KEY_VOL_DOWN + 7012370 + name 0_107_CH_PREVIOUS + 7012371 + name 0_107_KEY_VOL_UP + 7012372 + name 0_107_KEY_DISPLAY + 7012373 + name 0_107_KEY_MNSELECT + 7012375 + name 0_107_KEY_EXIT + 7012376 + name 0_107_KEY_INPUT + 7012378 + name 0_107_KEY_GUIDE + 7012379 + name 0_107_KEY_ENTER + 7012395 + name 0_107_KEY_MENU + 7012399 + name 0_107_KEY_MUP + 7012400 + name 0_107_KEY_MDOWN + 7012401 + name 0_107_KEY_MLEFT + 7012402 + name 0_107_KEY_MRIGHT + 7012403 + name 0_107_KEY_FF + 7012404 + name 0_107_KEY_REW + 7012406 + name 0_107_KEY_REC + 7012407 + name 0_107_KEY_PAUSE + 7012408 + name 0_108_KEY_0 + 7077888 + name 0_108_KEY_1 + 7077889 + name 0_108_KEY_2 + 7077890 + name 0_108_KEY_3 + 7077891 + name 0_108_KEY_4 + 7077892 + name 0_108_KEY_5 + 7077893 + name 0_108_KEY_6 + 7077894 + name 0_108_KEY_7 + 7077895 + name 0_108_KEY_8 + 7077896 + name 0_108_KEY_9 + 7077897 + name 0_108_KEY_POWER + 7077898 + name 0_108_KEY_CH_UP + 7077903 + name 0_108_KEY_CH_DOWN + 7077904 + name 0_108_KEY_MUTE + 7077905 + name 0_108_KEY_VOL_DOWN + 7077906 + name 0_108_CH_PREVIOUS + 7077907 + name 0_108_KEY_VOL_UP + 7077908 + name 0_108_KEY_FAVCH + 7077916 + name 0_108_KEY_SELECT + 7077918 + name 0_108_KEY_ENTER + 7077931 + name 0_108_KEY_AB + 7077950 + name 0_109_KEY_0 + 7143424 + name 0_109_KEY_1 + 7143425 + name 0_109_KEY_2 + 7143426 + name 0_109_KEY_3 + 7143427 + name 0_109_KEY_4 + 7143428 + name 0_109_KEY_5 + 7143429 + name 0_109_KEY_6 + 7143430 + name 0_109_KEY_7 + 7143431 + name 0_109_KEY_8 + 7143432 + name 0_109_KEY_9 + 7143433 + name 0_109_KEY_POWER + 7143434 + name 0_109_KEY_CH_UP + 7143439 + name 0_109_KEY_CH_DOWN + 7143440 + name 0_109_KEY_MUTE + 7143441 + name 0_109_KEY_VOL_DOWN + 7143442 + name 0_109_CH_PREVIOUS + 7143443 + name 0_109_KEY_VOL_UP + 7143444 + name 0_109_KEY_DISPLAY + 7143445 + name 0_109_KEY_MNSELECT + 7143447 + name 0_109_KEY_EXIT + 7143448 + name 0_109_KEY_GUIDE + 7143451 + name 0_109_KEY_FAV + 7143453 + name 0_109_KEY_MENU + 7143471 + name 0_109_KEY_MUP + 7143472 + name 0_109_KEY_MDOWN + 7143473 + name 0_109_KEY_MLEFT + 7143474 + name 0_109_KEY_MRIGHT + 7143475 + name 1_109_KEY_0 + 2154627072 + name 1_109_KEY_1 + 2154627073 + name 1_109_KEY_2 + 2154627074 + name 1_109_KEY_3 + 2154627075 + name 1_109_KEY_4 + 2154627076 + name 1_109_KEY_5 + 2154627077 + name 1_109_KEY_6 + 2154627078 + name 1_109_KEY_7 + 2154627079 + name 1_109_KEY_8 + 2154627080 + name 1_109_KEY_9 + 2154627081 + name 1_109_KEY_POWER + 2154627082 + name 1_109_KEY_CH_UP + 2154627087 + name 1_109_KEY_CH_DOWN + 2154627088 + name 1_109_KEY_EXIT + 2154627096 + name 1_109_KEY_GUIDE + 2154627099 + name 1_109_KEY_MENU + 2154627119 + name 1_109_KEY_MUP + 2154627120 + name 1_109_KEY_MDOWN + 2154627121 + name 1_109_KEY_MLEFT + 2154627122 + name 1_109_KEY_MRIGHT + 2154627123 + name 0_110_KEY_0 + 7208960 + name 0_110_KEY_1 + 7208961 + name 0_110_KEY_2 + 7208962 + name 0_110_KEY_3 + 7208963 + name 0_110_KEY_4 + 7208964 + name 0_110_KEY_5 + 7208965 + name 0_110_KEY_6 + 7208966 + name 0_110_KEY_7 + 7208967 + name 0_110_KEY_8 + 7208968 + name 0_110_KEY_9 + 7208969 + name 0_110_KEY_POWER + 7208970 + name 0_110_KEY_CH_UP + 7208975 + name 0_110_KEY_CH_DOWN + 7208976 + name 0_110_CH_PREVIOUS + 7208979 + name 0_110_KEY_FAV + 7208989 + name 0_110_KEY_MENU + 7209007 + name 1_110_KEY_0 + 2154692608 + name 1_110_KEY_1 + 2154692609 + name 1_110_KEY_2 + 2154692610 + name 1_110_KEY_3 + 2154692611 + name 1_110_KEY_4 + 2154692612 + name 1_110_KEY_5 + 2154692613 + name 1_110_KEY_6 + 2154692614 + name 1_110_KEY_7 + 2154692615 + name 1_110_KEY_8 + 2154692616 + name 1_110_KEY_9 + 2154692617 + name 1_110_KEY_POWER + 2154692618 + name 1_110_KEY_CH_UP + 2154692623 + name 1_110_KEY_CH_DOWN + 2154692624 + name 1_110_KEY_EXIT + 2154692632 + name 1_110_KEY_INPUT + 2154692634 + name 1_110_KEY_GUIDE + 2154692635 + name 1_110_KEY_FAV + 2154692637 + name 1_110_KEY_MENU + 2154692655 + name 1_110_KEY_MUP + 2154692656 + name 1_110_KEY_MDOWN + 2154692657 + name 1_110_KEY_MLEFT + 2154692658 + name 1_110_KEY_MRIGHT + 2154692659 + name 0_111_KEY_0 + 7274496 + name 0_111_KEY_1 + 7274497 + name 0_111_KEY_2 + 7274498 + name 0_111_KEY_3 + 7274499 + name 0_111_KEY_4 + 7274500 + name 0_111_KEY_5 + 7274501 + name 0_111_KEY_6 + 7274502 + name 0_111_KEY_7 + 7274503 + name 0_111_KEY_8 + 7274504 + name 0_111_KEY_9 + 7274505 + name 0_111_KEY_POWER + 7274506 + name 0_111_KEY_CH_UP + 7274511 + name 0_111_KEY_CH_DOWN + 7274512 + name 0_111_KEY_MUTE + 7274513 + name 0_111_KEY_VOL_DOWN + 7274514 + name 0_111_CH_PREVIOUS + 7274515 + name 0_111_KEY_VOL_UP + 7274516 + name 0_111_KEY_DISPLAY + 7274517 + name 0_111_KEY_MNSELECT + 7274519 + name 0_111_KEY_EXIT + 7274520 + name 0_111_KEY_GUIDE + 7274523 + name 0_111_KEY_ENTER + 7274539 + name 0_111_KEY_MENU + 7274543 + name 0_111_KEY_MUP + 7274544 + name 0_111_KEY_MDOWN + 7274545 + name 1_111_KEY_0 + 2154758144 + name 1_111_KEY_1 + 2154758145 + name 1_111_KEY_2 + 2154758146 + name 1_111_KEY_3 + 2154758147 + name 1_111_KEY_4 + 2154758148 + name 1_111_KEY_5 + 2154758149 + name 1_111_KEY_6 + 2154758150 + name 1_111_KEY_7 + 2154758151 + name 1_111_KEY_8 + 2154758152 + name 1_111_KEY_9 + 2154758153 + name 1_111_POWER_ON + 2154758155 + name 1_111_KEY_CH_UP + 2154758159 + name 1_111_KEY_CH_DOWN + 2154758160 + name 1_111_KEY_EXIT + 2154758168 + name 1_111_KEY_GUIDE + 2154758171 + name 1_111_KEY_MUP + 2154758192 + name 1_111_KEY_MDOWN + 2154758193 + name 1_111_KEY_MLEFT + 2154758194 + name 1_111_KEY_MRIGHT + 2154758195 + name 0_112_KEY_0 + 7340032 + name 0_112_KEY_1 + 7340033 + name 0_112_KEY_2 + 7340034 + name 0_112_KEY_3 + 7340035 + name 0_112_KEY_4 + 7340036 + name 0_112_KEY_5 + 7340037 + name 0_112_KEY_6 + 7340038 + name 0_112_KEY_7 + 7340039 + name 0_112_KEY_8 + 7340040 + name 0_112_KEY_9 + 7340041 + name 0_112_KEY_POWER + 7340042 + name 0_112_KEY_CH_UP + 7340047 + name 0_112_KEY_CH_DOWN + 7340048 + name 0_112_CH_PREVIOUS + 7340051 + name 0_112_KEY_MUP + 7340080 + name 0_112_KEY_MDOWN + 7340081 + name 1_112_KEY_0 + 2154823680 + name 1_112_KEY_1 + 2154823681 + name 1_112_KEY_2 + 2154823682 + name 1_112_KEY_3 + 2154823683 + name 1_112_KEY_4 + 2154823684 + name 1_112_KEY_5 + 2154823685 + name 1_112_KEY_6 + 2154823686 + name 1_112_KEY_7 + 2154823687 + name 1_112_KEY_8 + 2154823688 + name 1_112_KEY_9 + 2154823689 + name 1_112_KEY_POWER + 2154823690 + name 1_112_KEY_CH_UP + 2154823695 + name 1_112_KEY_CH_DOWN + 2154823696 + name 1_112_KEY_EXIT + 2154823704 + name 1_112_KEY_INPUT + 2154823706 + name 1_112_KEY_FAV + 2154823709 + name 1_112_KEY_MNRETRUN + 2154823712 + name 1_112_KEY_MENU + 2154823727 + name 1_112_KEY_MUP + 2154823728 + name 1_112_KEY_MDOWN + 2154823729 + name 1_112_KEY_MLEFT + 2154823730 + name 1_112_KEY_MRIGHT + 2154823731 + name 0_113_KEY_0 + 7405568 + name 0_113_KEY_1 + 7405569 + name 0_113_KEY_2 + 7405570 + name 0_113_KEY_3 + 7405571 + name 0_113_KEY_4 + 7405572 + name 0_113_KEY_5 + 7405573 + name 0_113_KEY_6 + 7405574 + name 0_113_KEY_7 + 7405575 + name 0_113_KEY_8 + 7405576 + name 0_113_KEY_9 + 7405577 + name 0_113_KEY_POWER + 7405578 + name 0_113_KEY_CH_UP + 7405583 + name 0_113_KEY_CH_DOWN + 7405584 + name 0_113_KEY_MUTE + 7405585 + name 0_113_KEY_VOL_DOWN + 7405586 + name 0_113_CH_PREVIOUS + 7405587 + name 0_113_KEY_VOL_UP + 7405588 + name 0_113_KEY_DISPLAY + 7405589 + name 1_113_KEY_0 + 2154889216 + name 1_113_KEY_1 + 2154889217 + name 1_113_KEY_2 + 2154889218 + name 1_113_KEY_3 + 2154889219 + name 1_113_KEY_4 + 2154889220 + name 1_113_KEY_5 + 2154889221 + name 1_113_KEY_6 + 2154889222 + name 1_113_KEY_7 + 2154889223 + name 1_113_KEY_8 + 2154889224 + name 1_113_KEY_9 + 2154889225 + name 1_113_KEY_POWER + 2154889226 + name 1_113_KEY_CH_UP + 2154889231 + name 1_113_KEY_CH_DOWN + 2154889232 + name 1_113_KEY_EXIT + 2154889240 + name 1_113_KEY_INPUT + 2154889242 + name 1_113_KEY_GUIDE + 2154889243 + name 1_113_KEY_MNRETRUN + 2154889248 + name 1_113_KEY_ENTER + 2154889259 + name 1_113_KEY_MENU + 2154889263 + name 1_113_KEY_MUP + 2154889264 + name 1_113_KEY_MDOWN + 2154889265 + name 1_113_KEY_MLEFT + 2154889266 + name 1_113_KEY_MRIGHT + 2154889267 + name 0_114_KEY_0 + 7471104 + name 0_114_KEY_1 + 7471105 + name 0_114_KEY_2 + 7471106 + name 0_114_KEY_3 + 7471107 + name 0_114_KEY_4 + 7471108 + name 0_114_KEY_5 + 7471109 + name 0_114_KEY_6 + 7471110 + name 0_114_KEY_7 + 7471111 + name 0_114_KEY_8 + 7471112 + name 0_114_KEY_9 + 7471113 + name 0_114_KEY_POWER + 7471114 + name 0_114_KEY_CH_UP + 7471119 + name 0_114_KEY_CH_DOWN + 7471120 + name 0_114_KEY_MUTE + 7471121 + name 0_114_KEY_VOL_DOWN + 7471122 + name 0_114_CH_PREVIOUS + 7471123 + name 0_114_KEY_VOL_UP + 7471124 + name 1_114_KEY_0 + 2154954752 + name 1_114_KEY_1 + 2154954753 + name 1_114_KEY_2 + 2154954754 + name 1_114_KEY_3 + 2154954755 + name 1_114_KEY_4 + 2154954756 + name 1_114_KEY_5 + 2154954757 + name 1_114_KEY_6 + 2154954758 + name 1_114_KEY_7 + 2154954759 + name 1_114_KEY_8 + 2154954760 + name 1_114_KEY_9 + 2154954761 + name 1_114_KEY_POWER + 2154954762 + name 1_114_KEY_CH_UP + 2154954767 + name 1_114_KEY_CH_DOWN + 2154954768 + name 1_114_KEY_EXIT + 2154954776 + name 1_114_KEY_INPUT + 2154954778 + name 1_114_KEY_GUIDE + 2154954779 + name 1_114_KEY_MNRETRUN + 2154954784 + name 1_114_KEY_ENTER + 2154954795 + name 1_114_KEY_MUP + 2154954800 + name 1_114_KEY_MDOWN + 2154954801 + name 1_114_KEY_MLEFT + 2154954802 + name 1_114_KEY_MRIGHT + 2154954803 + name 0_115_KEY_0 + 7536640 + name 0_115_KEY_1 + 7536641 + name 0_115_KEY_2 + 7536642 + name 0_115_KEY_3 + 7536643 + name 0_115_KEY_4 + 7536644 + name 0_115_KEY_5 + 7536645 + name 0_115_KEY_6 + 7536646 + name 0_115_KEY_7 + 7536647 + name 0_115_KEY_8 + 7536648 + name 0_115_KEY_9 + 7536649 + name 0_115_KEY_POWER + 7536650 + name 0_115_KEY_CH_UP + 7536655 + name 0_115_KEY_CH_DOWN + 7536656 + name 0_115_KEY_MUTE + 7536657 + name 0_115_KEY_VOL_DOWN + 7536658 + name 0_115_CH_PREVIOUS + 7536659 + name 0_115_KEY_VOL_UP + 7536660 + name 0_115_KEY_DISPLAY + 7536661 + name 0_115_KEY_MNSELECT + 7536663 + name 0_115_KEY_EXIT + 7536664 + name 0_115_KEY_GUIDE + 7536667 + name 0_115_KEY_MENU + 7536687 + name 0_115_KEY_MUP + 7536688 + name 0_115_KEY_MDOWN + 7536689 + name 0_115_KEY_MLEFT + 7536690 + name 0_115_KEY_MRIGHT + 7536691 + name 1_115_KEY_0 + 2155020288 + name 1_115_KEY_1 + 2155020289 + name 1_115_KEY_2 + 2155020290 + name 1_115_KEY_3 + 2155020291 + name 1_115_KEY_4 + 2155020292 + name 1_115_KEY_5 + 2155020293 + name 1_115_KEY_6 + 2155020294 + name 1_115_KEY_7 + 2155020295 + name 1_115_KEY_8 + 2155020296 + name 1_115_KEY_9 + 2155020297 + name 1_115_KEY_POWER + 2155020298 + name 1_115_KEY_CH_UP + 2155020303 + name 1_115_KEY_CH_DOWN + 2155020304 + name 1_115_KEY_EXIT + 2155020312 + name 1_115_KEY_INPUT + 2155020314 + name 1_115_KEY_GUIDE + 2155020315 + name 1_115_KEY_MNRETRUN + 2155020320 + name 1_115_KEY_ENTER + 2155020331 + name 1_115_KEY_MUP + 2155020336 + name 1_115_KEY_MDOWN + 2155020337 + name 1_115_KEY_MLEFT + 2155020338 + name 1_115_KEY_MRIGHT + 2155020339 + name 0_116_KEY_0 + 7602176 + name 0_116_KEY_1 + 7602177 + name 0_116_KEY_2 + 7602178 + name 0_116_KEY_3 + 7602179 + name 0_116_KEY_4 + 7602180 + name 0_116_KEY_5 + 7602181 + name 0_116_KEY_6 + 7602182 + name 0_116_KEY_7 + 7602183 + name 0_116_KEY_8 + 7602184 + name 0_116_KEY_9 + 7602185 + name 0_116_KEY_POWER + 7602186 + name 0_116_KEY_CH_UP + 7602191 + name 0_116_KEY_CH_DOWN + 7602192 + name 0_116_CH_PREVIOUS + 7602195 + name 1_116_KEY_0 + 2155085824 + name 1_116_KEY_1 + 2155085825 + name 1_116_KEY_2 + 2155085826 + name 1_116_KEY_3 + 2155085827 + name 1_116_KEY_4 + 2155085828 + name 1_116_KEY_5 + 2155085829 + name 1_116_KEY_6 + 2155085830 + name 1_116_KEY_7 + 2155085831 + name 1_116_KEY_8 + 2155085832 + name 1_116_KEY_9 + 2155085833 + name 1_116_KEY_POWER + 2155085834 + name 1_116_KEY_CH_UP + 2155085839 + name 1_116_KEY_CH_DOWN + 2155085840 + name 1_116_KEY_EXIT + 2155085848 + name 1_116_KEY_INPUT + 2155085850 + name 1_116_KEY_GUIDE + 2155085851 + name 1_116_KEY_MNRETRUN + 2155085856 + name 1_116_KEY_ENTER + 2155085867 + name 1_116_KEY_MUP + 2155085872 + name 1_116_KEY_MDOWN + 2155085873 + name 1_116_KEY_MLEFT + 2155085874 + name 1_116_KEY_MRIGHT + 2155085875 + name 0_117_KEY_0 + 7667712 + name 0_117_KEY_1 + 7667713 + name 0_117_KEY_2 + 7667714 + name 0_117_KEY_3 + 7667715 + name 0_117_KEY_4 + 7667716 + name 0_117_KEY_5 + 7667717 + name 0_117_KEY_6 + 7667718 + name 0_117_KEY_7 + 7667719 + name 0_117_KEY_8 + 7667720 + name 0_117_KEY_9 + 7667721 + name 0_117_KEY_POWER + 7667722 + name 0_117_KEY_CH_UP + 7667727 + name 0_117_KEY_CH_DOWN + 7667728 + name 0_117_KEY_MUTE + 7667729 + name 0_117_KEY_VOL_DOWN + 7667730 + name 0_117_CH_PREVIOUS + 7667731 + name 0_117_KEY_VOL_UP + 7667732 + name 0_117_KEY_DISPLAY + 7667733 + name 0_117_KEY_MNSELECT + 7667735 + name 0_117_KEY_EXIT + 7667736 + name 0_117_KEY_GUIDE + 7667739 + name 0_117_KEY_ENTER + 7667755 + name 0_117_KEY_MENU + 7667759 + name 0_117_KEY_MUP + 7667760 + name 0_117_KEY_MDOWN + 7667761 + name 0_117_KEY_MLEFT + 7667762 + name 0_117_KEY_MRIGHT + 7667763 + name 1_117_KEY_0 + 2155151360 + name 1_117_KEY_1 + 2155151361 + name 1_117_KEY_2 + 2155151362 + name 1_117_KEY_3 + 2155151363 + name 1_117_KEY_4 + 2155151364 + name 1_117_KEY_5 + 2155151365 + name 1_117_KEY_6 + 2155151366 + name 1_117_KEY_7 + 2155151367 + name 1_117_KEY_8 + 2155151368 + name 1_117_KEY_9 + 2155151369 + name 1_117_KEY_POWER + 2155151370 + name 1_117_KEY_CH_UP + 2155151375 + name 1_117_KEY_CH_DOWN + 2155151376 + name 1_117_KEY_EXIT + 2155151384 + name 1_117_KEY_INPUT + 2155151386 + name 1_117_KEY_GUIDE + 2155151387 + name 1_117_KEY_MNRETRUN + 2155151392 + name 1_117_KEY_ENTER + 2155151403 + name 1_117_KEY_MUP + 2155151408 + name 1_117_KEY_MDOWN + 2155151409 + name 1_117_KEY_MLEFT + 2155151410 + name 1_117_KEY_MRIGHT + 2155151411 + name 0_118_KEY_0 + 7733248 + name 0_118_KEY_1 + 7733249 + name 0_118_KEY_2 + 7733250 + name 0_118_KEY_3 + 7733251 + name 0_118_KEY_4 + 7733252 + name 0_118_KEY_5 + 7733253 + name 0_118_KEY_6 + 7733254 + name 0_118_KEY_7 + 7733255 + name 0_118_KEY_8 + 7733256 + name 0_118_KEY_9 + 7733257 + name 0_118_KEY_POWER + 7733258 + name 0_118_KEY_CH_UP + 7733263 + name 0_118_KEY_CH_DOWN + 7733264 + name 0_118_KEY_MUTE + 7733265 + name 0_118_KEY_VOL_DOWN + 7733266 + name 0_118_KEY_VOL_UP + 7733268 + name 0_118_KEY_DISPLAY + 7733269 + name 1_118_KEY_0 + 2155216896 + name 1_118_KEY_1 + 2155216897 + name 1_118_KEY_2 + 2155216898 + name 1_118_KEY_3 + 2155216899 + name 1_118_KEY_4 + 2155216900 + name 1_118_KEY_5 + 2155216901 + name 1_118_KEY_6 + 2155216902 + name 1_118_KEY_7 + 2155216903 + name 1_118_KEY_8 + 2155216904 + name 1_118_KEY_9 + 2155216905 + name 1_118_KEY_POWER + 2155216906 + name 1_118_KEY_CH_UP + 2155216911 + name 1_118_KEY_CH_DOWN + 2155216912 + name 1_118_KEY_EXIT + 2155216920 + name 1_118_KEY_INPUT + 2155216922 + name 1_118_KEY_GUIDE + 2155216923 + name 1_118_KEY_MNRETRUN + 2155216928 + name 1_118_KEY_ENTER + 2155216939 + name 1_118_KEY_MUP + 2155216944 + name 1_118_KEY_MDOWN + 2155216945 + name 1_118_KEY_MLEFT + 2155216946 + name 1_118_KEY_MRIGHT + 2155216947 + name 0_119_KEY_0 + 7798784 + name 0_119_KEY_1 + 7798785 + name 0_119_KEY_2 + 7798786 + name 0_119_KEY_3 + 7798787 + name 0_119_KEY_4 + 7798788 + name 0_119_KEY_5 + 7798789 + name 0_119_KEY_6 + 7798790 + name 0_119_KEY_7 + 7798791 + name 0_119_KEY_8 + 7798792 + name 0_119_KEY_9 + 7798793 + name 0_119_KEY_POWER + 7798794 + name 0_119_KEY_CH_UP + 7798799 + name 0_119_KEY_CH_DOWN + 7798800 + name 0_119_KEY_MUTE + 7798801 + name 0_119_KEY_VOL_DOWN + 7798802 + name 0_119_CH_PREVIOUS + 7798803 + name 0_119_KEY_VOL_UP + 7798804 + name 0_119_KEY_DISPLAY + 7798805 + name 0_119_KEY_MNSELECT + 7798807 + name 0_119_KEY_EXIT + 7798808 + name 0_119_KEY_GUIDE + 7798811 + name 0_119_KEY_MENU + 7798831 + name 0_119_KEY_MUP + 7798832 + name 0_119_KEY_MDOWN + 7798833 + name 0_119_KEY_MLEFT + 7798834 + name 0_119_KEY_MRIGHT + 7798835 + name 1_119_KEY_0 + 2155282432 + name 1_119_KEY_1 + 2155282433 + name 1_119_KEY_2 + 2155282434 + name 1_119_KEY_3 + 2155282435 + name 1_119_KEY_4 + 2155282436 + name 1_119_KEY_5 + 2155282437 + name 1_119_KEY_6 + 2155282438 + name 1_119_KEY_7 + 2155282439 + name 1_119_KEY_8 + 2155282440 + name 1_119_KEY_9 + 2155282441 + name 1_119_KEY_POWER + 2155282442 + name 1_119_KEY_CH_UP + 2155282447 + name 1_119_KEY_CH_DOWN + 2155282448 + name 1_119_KEY_EXIT + 2155282456 + name 1_119_KEY_INPUT + 2155282458 + name 1_119_KEY_GUIDE + 2155282459 + name 1_119_KEY_MNRETRUN + 2155282464 + name 1_119_KEY_ENTER + 2155282475 + name 1_119_KEY_MUP + 2155282480 + name 1_119_KEY_MDOWN + 2155282481 + name 1_119_KEY_MLEFT + 2155282482 + name 1_119_KEY_MRIGHT + 2155282483 + name 0_120_KEY_0 + 7864320 + name 0_120_KEY_1 + 7864321 + name 0_120_KEY_2 + 7864322 + name 0_120_KEY_3 + 7864323 + name 0_120_KEY_4 + 7864324 + name 0_120_KEY_5 + 7864325 + name 0_120_KEY_6 + 7864326 + name 0_120_KEY_7 + 7864327 + name 0_120_KEY_8 + 7864328 + name 0_120_KEY_9 + 7864329 + name 0_120_KEY_POWER + 7864330 + name 0_120_KEY_CH_UP + 7864335 + name 0_120_KEY_CH_DOWN + 7864336 + name 0_120_KEY_MUTE + 7864337 + name 0_120_KEY_VOL_DOWN + 7864338 + name 0_120_CH_PREVIOUS + 7864339 + name 0_120_KEY_VOL_UP + 7864340 + name 0_120_KEY_DISPLAY + 7864341 + name 0_120_KEY_MNSELECT + 7864343 + name 0_120_KEY_EXIT + 7864344 + name 0_120_KEY_GUIDE + 7864347 + name 0_120_KEY_MENU + 7864367 + name 0_120_KEY_MUP + 7864368 + name 0_120_KEY_MDOWN + 7864369 + name 0_120_KEY_MLEFT + 7864370 + name 0_120_KEY_MRIGHT + 7864371 + name 1_120_KEY_0 + 2155347968 + name 1_120_KEY_1 + 2155347969 + name 1_120_KEY_2 + 2155347970 + name 1_120_KEY_3 + 2155347971 + name 1_120_KEY_4 + 2155347972 + name 1_120_KEY_5 + 2155347973 + name 1_120_KEY_6 + 2155347974 + name 1_120_KEY_7 + 2155347975 + name 1_120_KEY_8 + 2155347976 + name 1_120_KEY_9 + 2155347977 + name 1_120_KEY_POWER + 2155347978 + name 1_120_KEY_CH_UP + 2155347983 + name 1_120_KEY_CH_DOWN + 2155347984 + name 1_120_KEY_EXIT + 2155347992 + name 1_120_KEY_INPUT + 2155347994 + name 1_120_KEY_GUIDE + 2155347995 + name 1_120_KEY_MNRETRUN + 2155348000 + name 1_120_KEY_ENTER + 2155348011 + name 1_120_KEY_MUP + 2155348016 + name 1_120_KEY_MDOWN + 2155348017 + name 1_120_KEY_MLEFT + 2155348018 + name 1_120_KEY_MRIGHT + 2155348019 + name 0_121_KEY_0 + 7929856 + name 0_121_KEY_1 + 7929857 + name 0_121_KEY_2 + 7929858 + name 0_121_KEY_3 + 7929859 + name 0_121_KEY_4 + 7929860 + name 0_121_KEY_5 + 7929861 + name 0_121_KEY_6 + 7929862 + name 0_121_KEY_7 + 7929863 + name 0_121_KEY_8 + 7929864 + name 0_121_KEY_9 + 7929865 + name 0_121_KEY_POWER + 7929866 + name 0_121_KEY_CH_UP + 7929871 + name 0_121_KEY_CH_DOWN + 7929872 + name 0_121_KEY_MUTE + 7929873 + name 0_121_KEY_VOL_DOWN + 7929874 + name 0_121_CH_PREVIOUS + 7929875 + name 0_121_KEY_VOL_UP + 7929876 + name 0_121_KEY_MENU + 7929903 + name 1_121_KEY_0 + 2155413504 + name 1_121_KEY_1 + 2155413505 + name 1_121_KEY_2 + 2155413506 + name 1_121_KEY_3 + 2155413507 + name 1_121_KEY_4 + 2155413508 + name 1_121_KEY_5 + 2155413509 + name 1_121_KEY_6 + 2155413510 + name 1_121_KEY_7 + 2155413511 + name 1_121_KEY_8 + 2155413512 + name 1_121_KEY_9 + 2155413513 + name 1_121_KEY_POWER + 2155413514 + name 1_121_KEY_CH_UP + 2155413519 + name 1_121_KEY_CH_DOWN + 2155413520 + name 1_121_KEY_EXIT + 2155413528 + name 1_121_KEY_INPUT + 2155413530 + name 1_121_KEY_GUIDE + 2155413531 + name 1_121_KEY_MNRETRUN + 2155413536 + name 1_121_KEY_ENTER + 2155413547 + name 1_121_KEY_MUP + 2155413552 + name 1_121_KEY_MDOWN + 2155413553 + name 1_121_KEY_MLEFT + 2155413554 + name 1_121_KEY_MRIGHT + 2155413555 + name 0_122_KEY_0 + 7995392 + name 0_122_KEY_1 + 7995393 + name 0_122_KEY_2 + 7995394 + name 0_122_KEY_3 + 7995395 + name 0_122_KEY_4 + 7995396 + name 0_122_KEY_5 + 7995397 + name 0_122_KEY_6 + 7995398 + name 0_122_KEY_7 + 7995399 + name 0_122_KEY_8 + 7995400 + name 0_122_KEY_9 + 7995401 + name 0_122_KEY_POWER + 7995402 + name 0_122_KEY_CH_UP + 7995407 + name 0_122_KEY_CH_DOWN + 7995408 + name 0_122_KEY_MUTE + 7995409 + name 0_122_KEY_VOL_DOWN + 7995410 + name 0_122_CH_PREVIOUS + 7995411 + name 0_122_KEY_VOL_UP + 7995412 + name 0_122_KEY_DISPLAY + 7995413 + name 0_122_KEY_MNSELECT + 7995415 + name 0_122_KEY_EXIT + 7995416 + name 0_122_KEY_GUIDE + 7995419 + name 0_122_KEY_ENTER + 7995435 + name 0_122_KEY_MENU + 7995439 + name 0_122_KEY_MUP + 7995440 + name 0_122_KEY_MDOWN + 7995441 + name 0_122_KEY_MLEFT + 7995442 + name 0_122_KEY_MRIGHT + 7995443 + name 1_122_KEY_0 + 2155479040 + name 1_122_KEY_1 + 2155479041 + name 1_122_KEY_2 + 2155479042 + name 1_122_KEY_3 + 2155479043 + name 1_122_KEY_4 + 2155479044 + name 1_122_KEY_5 + 2155479045 + name 1_122_KEY_6 + 2155479046 + name 1_122_KEY_7 + 2155479047 + name 1_122_KEY_8 + 2155479048 + name 1_122_KEY_9 + 2155479049 + name 1_122_KEY_POWER + 2155479050 + name 1_122_KEY_CH_UP + 2155479055 + name 1_122_KEY_CH_DOWN + 2155479056 + name 1_122_KEY_EXIT + 2155479064 + name 1_122_KEY_INPUT + 2155479066 + name 1_122_KEY_GUIDE + 2155479067 + name 1_122_KEY_MNRETRUN + 2155479072 + name 1_122_KEY_ENTER + 2155479083 + name 1_122_KEY_MUP + 2155479088 + name 1_122_KEY_MDOWN + 2155479089 + name 1_122_KEY_MLEFT + 2155479090 + name 1_122_KEY_MRIGHT + 2155479091 + name 0_123_KEY_0 + 8060928 + name 0_123_KEY_1 + 8060929 + name 0_123_KEY_2 + 8060930 + name 0_123_KEY_3 + 8060931 + name 0_123_KEY_4 + 8060932 + name 0_123_KEY_5 + 8060933 + name 0_123_KEY_6 + 8060934 + name 0_123_KEY_7 + 8060935 + name 0_123_KEY_8 + 8060936 + name 0_123_KEY_9 + 8060937 + name 0_123_KEY_POWER + 8060938 + name 0_123_KEY_CH_UP + 8060943 + name 0_123_KEY_CH_DOWN + 8060944 + name 0_123_KEY_MUTE + 8060945 + name 0_123_KEY_VOL_DOWN + 8060946 + name 0_123_CH_PREVIOUS + 8060947 + name 0_123_KEY_VOL_UP + 8060948 + name 0_123_KEY_DISPLAY + 8060949 + name 0_123_KEY_MNSELECT + 8060951 + name 0_123_KEY_GUIDE + 8060955 + name 0_123_KEY_MENU + 8060975 + name 0_123_KEY_MUP + 8060976 + name 0_123_KEY_MDOWN + 8060977 + name 0_123_KEY_MLEFT + 8060978 + name 0_123_KEY_MRIGHT + 8060979 + name 0_123_KEY_FF + 8060980 + name 0_123_KEY_REW + 8060982 + name 0_123_KEY_PAUSE + 8060984 + name 1_123_KEY_0 + 2155544576 + name 1_123_KEY_1 + 2155544577 + name 1_123_KEY_2 + 2155544578 + name 1_123_KEY_3 + 2155544579 + name 1_123_KEY_4 + 2155544580 + name 1_123_KEY_5 + 2155544581 + name 1_123_KEY_6 + 2155544582 + name 1_123_KEY_7 + 2155544583 + name 1_123_KEY_8 + 2155544584 + name 1_123_KEY_9 + 2155544585 + name 1_123_KEY_POWER + 2155544586 + name 1_123_KEY_CH_UP + 2155544591 + name 1_123_KEY_CH_DOWN + 2155544592 + name 1_123_KEY_EXIT + 2155544600 + name 1_123_KEY_INPUT + 2155544602 + name 1_123_KEY_GUIDE + 2155544603 + name 1_123_KEY_MNRETRUN + 2155544608 + name 1_123_KEY_ENTER + 2155544619 + name 1_123_KEY_MUP + 2155544624 + name 1_123_KEY_MDOWN + 2155544625 + name 1_123_KEY_MLEFT + 2155544626 + name 1_123_KEY_MRIGHT + 2155544627 + name 0_124_KEY_0 + 8126464 + name 0_124_KEY_1 + 8126465 + name 0_124_KEY_2 + 8126466 + name 0_124_KEY_3 + 8126467 + name 0_124_KEY_4 + 8126468 + name 0_124_KEY_5 + 8126469 + name 0_124_KEY_6 + 8126470 + name 0_124_KEY_7 + 8126471 + name 0_124_KEY_8 + 8126472 + name 0_124_KEY_9 + 8126473 + name 0_124_KEY_POWER + 8126474 + name 0_124_KEY_CH_UP + 8126479 + name 0_124_KEY_CH_DOWN + 8126480 + name 0_124_KEY_MUTE + 8126481 + name 0_124_KEY_VOL_DOWN + 8126482 + name 0_124_CH_PREVIOUS + 8126483 + name 0_124_KEY_VOL_UP + 8126484 + name 0_124_KEY_DISPLAY + 8126485 + name 0_124_KEY_EXIT + 8126488 + name 0_124_KEY_GUIDE + 8126491 + name 0_124_KEY_ENTER + 8126507 + name 0_124_KEY_MENU + 8126511 + name 0_124_KEY_MUP + 8126512 + name 0_124_KEY_MDOWN + 8126513 + name 0_124_KEY_MLEFT + 8126514 + name 0_124_KEY_MRIGHT + 8126515 + name 1_124_KEY_0 + 2155610112 + name 1_124_KEY_1 + 2155610113 + name 1_124_KEY_2 + 2155610114 + name 1_124_KEY_3 + 2155610115 + name 1_124_KEY_4 + 2155610116 + name 1_124_KEY_5 + 2155610117 + name 1_124_KEY_6 + 2155610118 + name 1_124_KEY_7 + 2155610119 + name 1_124_KEY_8 + 2155610120 + name 1_124_KEY_9 + 2155610121 + name 1_124_KEY_POWER + 2155610122 + name 1_124_KEY_CH_UP + 2155610127 + name 1_124_KEY_CH_DOWN + 2155610128 + name 1_124_KEY_EXIT + 2155610136 + name 1_124_KEY_INPUT + 2155610138 + name 1_124_KEY_GUIDE + 2155610139 + name 1_124_KEY_MNRETRUN + 2155610144 + name 1_124_KEY_ENTER + 2155610155 + name 1_124_KEY_MUP + 2155610160 + name 1_124_KEY_MDOWN + 2155610161 + name 1_124_KEY_MLEFT + 2155610162 + name 1_124_KEY_MRIGHT + 2155610163 + name 0_125_KEY_0 + 8192000 + name 0_125_KEY_1 + 8192001 + name 0_125_KEY_2 + 8192002 + name 0_125_KEY_3 + 8192003 + name 0_125_KEY_4 + 8192004 + name 0_125_KEY_5 + 8192005 + name 0_125_KEY_6 + 8192006 + name 0_125_KEY_7 + 8192007 + name 0_125_KEY_8 + 8192008 + name 0_125_KEY_9 + 8192009 + name 0_125_KEY_POWER + 8192010 + name 0_125_KEY_CH_UP + 8192015 + name 0_125_KEY_CH_DOWN + 8192016 + name 0_125_KEY_MUTE + 8192017 + name 0_125_KEY_VOL_DOWN + 8192018 + name 0_125_CH_PREVIOUS + 8192019 + name 0_125_KEY_VOL_UP + 8192020 + name 0_125_KEY_DISPLAY + 8192021 + name 0_125_KEY_MNSELECT + 8192023 + name 0_125_KEY_EXIT + 8192024 + name 0_125_KEY_GUIDE + 8192027 + name 0_125_KEY_ENTER + 8192043 + name 0_125_KEY_MENU + 8192047 + name 0_125_KEY_MUP + 8192048 + name 0_125_KEY_MDOWN + 8192049 + name 0_125_KEY_MLEFT + 8192050 + name 0_125_KEY_MRIGHT + 8192051 + name 0_125_KEY_FF + 8192052 + name 0_125_KEY_PLAY + 8192053 + name 0_125_KEY_REW + 8192054 + name 0_125_KEY_PAUSE + 8192056 + name 0_125_KEY_STOP + 8192057 + name 1_125_KEY_0 + 2155675648 + name 1_125_KEY_1 + 2155675649 + name 1_125_KEY_2 + 2155675650 + name 1_125_KEY_3 + 2155675651 + name 1_125_KEY_4 + 2155675652 + name 1_125_KEY_5 + 2155675653 + name 1_125_KEY_6 + 2155675654 + name 1_125_KEY_7 + 2155675655 + name 1_125_KEY_8 + 2155675656 + name 1_125_KEY_9 + 2155675657 + name 1_125_KEY_POWER + 2155675658 + name 1_125_KEY_CH_UP + 2155675663 + name 1_125_KEY_CH_DOWN + 2155675664 + name 1_125_CH_PREVIOUS + 2155675667 + name 1_125_KEY_DISPLAY + 2155675669 + name 1_125_KEY_EXIT + 2155675672 + name 1_125_KEY_GUIDE + 2155675675 + name 1_125_KEY_MNRETRUN + 2155675680 + name 1_125_KEY_ENTER + 2155675691 + name 1_125_KEY_MENU + 2155675695 + name 1_125_KEY_MUP + 2155675696 + name 1_125_KEY_MDOWN + 2155675697 + name 1_125_KEY_MLEFT + 2155675698 + name 1_125_KEY_MRIGHT + 2155675699 + name 0_126_KEY_0 + 8257536 + name 0_126_KEY_1 + 8257537 + name 0_126_KEY_2 + 8257538 + name 0_126_KEY_3 + 8257539 + name 0_126_KEY_4 + 8257540 + name 0_126_KEY_5 + 8257541 + name 0_126_KEY_6 + 8257542 + name 0_126_KEY_7 + 8257543 + name 0_126_KEY_8 + 8257544 + name 0_126_KEY_9 + 8257545 + name 0_126_KEY_POWER + 8257546 + name 0_126_KEY_CH_UP + 8257551 + name 0_126_KEY_CH_DOWN + 8257552 + name 0_126_KEY_MUTE + 8257553 + name 0_126_KEY_VOL_DOWN + 8257554 + name 0_126_CH_PREVIOUS + 8257555 + name 0_126_KEY_VOL_UP + 8257556 + name 0_126_KEY_DISPLAY + 8257557 + name 0_126_KEY_MNSELECT + 8257559 + name 0_126_KEY_EXIT + 8257560 + name 0_126_KEY_GUIDE + 8257563 + name 0_126_KEY_MENU + 8257583 + name 0_126_KEY_MUP + 8257584 + name 0_126_KEY_MDOWN + 8257585 + name 0_126_KEY_MLEFT + 8257586 + name 0_126_KEY_MRIGHT + 8257587 + name 0_126_KEY_FF + 8257588 + name 0_126_KEY_PLAY + 8257589 + name 0_126_KEY_REW + 8257590 + name 0_126_KEY_PAUSE + 8257592 + name 0_126_KEY_STOP + 8257593 + name 1_126_KEY_0 + 2155741184 + name 1_126_KEY_1 + 2155741185 + name 1_126_KEY_2 + 2155741186 + name 1_126_KEY_3 + 2155741187 + name 1_126_KEY_4 + 2155741188 + name 1_126_KEY_5 + 2155741189 + name 1_126_KEY_6 + 2155741190 + name 1_126_KEY_7 + 2155741191 + name 1_126_KEY_8 + 2155741192 + name 1_126_KEY_9 + 2155741193 + name 1_126_KEY_POWER + 2155741194 + name 1_126_KEY_CH_UP + 2155741199 + name 1_126_KEY_CH_DOWN + 2155741200 + name 1_126_CH_PREVIOUS + 2155741203 + name 1_126_KEY_DISPLAY + 2155741205 + name 1_126_KEY_EXIT + 2155741208 + name 1_126_KEY_INPUT + 2155741210 + name 1_126_KEY_GUIDE + 2155741211 + name 1_126_KEY_ENTER + 2155741227 + name 1_126_KEY_MENU + 2155741231 + name 1_126_KEY_MUP + 2155741232 + name 1_126_KEY_MDOWN + 2155741233 + name 1_126_KEY_MLEFT + 2155741234 + name 1_126_KEY_MRIGHT + 2155741235 + name 0_127_KEY_0 + 8323072 + name 0_127_KEY_1 + 8323073 + name 0_127_KEY_2 + 8323074 + name 0_127_KEY_3 + 8323075 + name 0_127_KEY_4 + 8323076 + name 0_127_KEY_5 + 8323077 + name 0_127_KEY_6 + 8323078 + name 0_127_KEY_7 + 8323079 + name 0_127_KEY_8 + 8323080 + name 0_127_KEY_9 + 8323081 + name 0_127_KEY_POWER + 8323082 + name 0_127_KEY_CH_UP + 8323087 + name 0_127_KEY_CH_DOWN + 8323088 + name 0_127_KEY_MUTE + 8323089 + name 0_127_KEY_VOL_DOWN + 8323090 + name 0_127_CH_PREVIOUS + 8323091 + name 0_127_KEY_VOL_UP + 8323092 + name 0_127_KEY_DISPLAY + 8323093 + name 0_127_KEY_MNSELECT + 8323095 + name 0_127_KEY_EXIT + 8323096 + name 0_127_KEY_GUIDE + 8323099 + name 0_127_KEY_MENU + 8323119 + name 0_127_KEY_MUP + 8323120 + name 0_127_KEY_MDOWN + 8323121 + name 0_127_KEY_MLEFT + 8323122 + name 0_127_KEY_MRIGHT + 8323123 + name 1_127_KEY_0 + 2155806720 + name 1_127_KEY_1 + 2155806721 + name 1_127_KEY_2 + 2155806722 + name 1_127_KEY_3 + 2155806723 + name 1_127_KEY_4 + 2155806724 + name 1_127_KEY_5 + 2155806725 + name 1_127_KEY_6 + 2155806726 + name 1_127_KEY_7 + 2155806727 + name 1_127_KEY_8 + 2155806728 + name 1_127_KEY_9 + 2155806729 + name 1_127_KEY_POWER + 2155806730 + name 1_127_KEY_CH_UP + 2155806735 + name 1_127_KEY_CH_DOWN + 2155806736 + name 1_127_CH_PREVIOUS + 2155806739 + name 1_127_KEY_DISPLAY + 2155806741 + name 1_127_KEY_EXIT + 2155806744 + name 1_127_KEY_GUIDE + 2155806747 + name 1_127_KEY_ENTER + 2155806763 + name 1_127_KEY_MENU + 2155806767 + name 1_127_KEY_MUP + 2155806768 + name 1_127_KEY_MDOWN + 2155806769 + name 1_127_KEY_MLEFT + 2155806770 + name 1_127_KEY_MRIGHT + 2155806771 + name 0_128_KEY_0 + 8388608 + name 0_128_KEY_1 + 8388609 + name 0_128_KEY_2 + 8388610 + name 0_128_KEY_3 + 8388611 + name 0_128_KEY_4 + 8388612 + name 0_128_KEY_5 + 8388613 + name 0_128_KEY_6 + 8388614 + name 0_128_KEY_7 + 8388615 + name 0_128_KEY_8 + 8388616 + name 0_128_KEY_9 + 8388617 + name 0_128_KEY_POWER + 8388618 + name 0_128_KEY_CH_UP + 8388623 + name 0_128_KEY_CH_DOWN + 8388624 + name 0_128_KEY_MUTE + 8388625 + name 0_128_KEY_VOL_DOWN + 8388626 + name 0_128_CH_PREVIOUS + 8388627 + name 0_128_KEY_VOL_UP + 8388628 + name 0_128_KEY_DISPLAY + 8388629 + name 0_128_KEY_MNSELECT + 8388631 + name 0_128_KEY_EXIT + 8388632 + name 0_128_KEY_GUIDE + 8388635 + name 0_128_KEY_ENTER + 8388651 + name 0_128_KEY_MENU + 8388655 + name 0_128_KEY_MUP + 8388656 + name 0_128_KEY_MDOWN + 8388657 + name 0_128_KEY_MLEFT + 8388658 + name 0_128_KEY_MRIGHT + 8388659 + name 1_128_KEY_0 + 2155872256 + name 1_128_KEY_1 + 2155872257 + name 1_128_KEY_2 + 2155872258 + name 1_128_KEY_3 + 2155872259 + name 1_128_KEY_4 + 2155872260 + name 1_128_KEY_5 + 2155872261 + name 1_128_KEY_6 + 2155872262 + name 1_128_KEY_7 + 2155872263 + name 1_128_KEY_8 + 2155872264 + name 1_128_KEY_9 + 2155872265 + name 1_128_KEY_POWER + 2155872266 + name 1_128_KEY_CH_UP + 2155872271 + name 1_128_KEY_CH_DOWN + 2155872272 + name 1_128_CH_PREVIOUS + 2155872275 + name 1_128_KEY_DISPLAY + 2155872277 + name 1_128_KEY_EXIT + 2155872280 + name 1_128_KEY_GUIDE + 2155872283 + name 1_128_KEY_ENTER + 2155872299 + name 1_128_KEY_MENU + 2155872303 + name 1_128_KEY_MUP + 2155872304 + name 1_128_KEY_MDOWN + 2155872305 + name 1_128_KEY_MLEFT + 2155872306 + name 1_128_KEY_MRIGHT + 2155872307 + name 0_129_KEY_0 + 8454144 + name 0_129_KEY_1 + 8454145 + name 0_129_KEY_2 + 8454146 + name 0_129_KEY_3 + 8454147 + name 0_129_KEY_4 + 8454148 + name 0_129_KEY_5 + 8454149 + name 0_129_KEY_6 + 8454150 + name 0_129_KEY_7 + 8454151 + name 0_129_KEY_8 + 8454152 + name 0_129_KEY_9 + 8454153 + name 0_129_KEY_POWER + 8454154 + name 0_129_KEY_CH_UP + 8454159 + name 0_129_KEY_CH_DOWN + 8454160 + name 0_129_KEY_MUTE + 8454161 + name 0_129_KEY_VOL_DOWN + 8454162 + name 0_129_CH_PREVIOUS + 8454163 + name 0_129_KEY_VOL_UP + 8454164 + name 0_129_KEY_DISPLAY + 8454165 + name 0_129_KEY_MNSELECT + 8454167 + name 0_129_KEY_EXIT + 8454168 + name 0_129_KEY_GUIDE + 8454171 + name 0_129_KEY_ENTER + 8454187 + name 0_129_KEY_MENU + 8454191 + name 0_129_KEY_MUP + 8454192 + name 0_129_KEY_MDOWN + 8454193 + name 0_129_KEY_MLEFT + 8454194 + name 0_129_KEY_MRIGHT + 8454195 + name 0_129_KEY_FF + 8454196 + name 0_129_KEY_PLAY + 8454197 + name 0_129_KEY_REW + 8454198 + name 0_129_KEY_PAUSE + 8454200 + name 0_129_KEY_STOP + 8454201 + name 1_129_KEY_0 + 2155937792 + name 1_129_KEY_1 + 2155937793 + name 1_129_KEY_2 + 2155937794 + name 1_129_KEY_3 + 2155937795 + name 1_129_KEY_4 + 2155937796 + name 1_129_KEY_5 + 2155937797 + name 1_129_KEY_6 + 2155937798 + name 1_129_KEY_7 + 2155937799 + name 1_129_KEY_8 + 2155937800 + name 1_129_KEY_9 + 2155937801 + name 1_129_KEY_POWER + 2155937802 + name 1_129_KEY_CH_UP + 2155937807 + name 1_129_KEY_CH_DOWN + 2155937808 + name 1_129_CH_PREVIOUS + 2155937811 + name 1_129_KEY_DISPLAY + 2155937813 + name 1_129_KEY_EXIT + 2155937816 + name 1_129_KEY_GUIDE + 2155937819 + name 1_129_KEY_SAT + 2155937834 + name 1_129_KEY_MENU + 2155937839 + name 1_129_KEY_MUP + 2155937840 + name 1_129_KEY_MDOWN + 2155937841 + name 1_129_KEY_MLEFT + 2155937842 + name 1_129_KEY_MRIGHT + 2155937843 + name 1_129_KEY_FF + 2155937844 + name 1_129_KEY_PLAY + 2155937845 + name 1_129_KEY_REW + 2155937846 + name 1_129_KEY_REC + 2155937847 + name 1_129_KEY_PAUSE + 2155937848 + name 1_129_KEY_STOP + 2155937849 + name 0_130_KEY_0 + 8519680 + name 0_130_KEY_1 + 8519681 + name 0_130_KEY_2 + 8519682 + name 0_130_KEY_3 + 8519683 + name 0_130_KEY_4 + 8519684 + name 0_130_KEY_5 + 8519685 + name 0_130_KEY_6 + 8519686 + name 0_130_KEY_7 + 8519687 + name 0_130_KEY_8 + 8519688 + name 0_130_KEY_9 + 8519689 + name 0_130_KEY_POWER + 8519690 + name 0_130_KEY_CH_UP + 8519695 + name 0_130_KEY_CH_DOWN + 8519696 + name 0_130_KEY_MUTE + 8519697 + name 0_130_KEY_VOL_DOWN + 8519698 + name 0_130_CH_PREVIOUS + 8519699 + name 0_130_KEY_VOL_UP + 8519700 + name 0_130_KEY_DISPLAY + 8519701 + name 0_130_KEY_MNSELECT + 8519703 + name 0_130_KEY_EXIT + 8519704 + name 0_130_KEY_GUIDE + 8519707 + name 0_130_KEY_ENTER + 8519723 + name 0_130_KEY_MENU + 8519727 + name 0_130_KEY_MUP + 8519728 + name 0_130_KEY_MDOWN + 8519729 + name 0_130_KEY_MLEFT + 8519730 + name 0_130_KEY_MRIGHT + 8519731 + name 0_130_KEY_FF + 8519732 + name 0_130_KEY_PLAY + 8519733 + name 0_130_KEY_REW + 8519734 + name 0_130_KEY_REC + 8519735 + name 0_130_KEY_PAUSE + 8519736 + name 0_130_KEY_STOP + 8519737 + name 1_130_KEY_0 + 2156003328 + name 1_130_KEY_1 + 2156003329 + name 1_130_KEY_2 + 2156003330 + name 1_130_KEY_3 + 2156003331 + name 1_130_KEY_4 + 2156003332 + name 1_130_KEY_5 + 2156003333 + name 1_130_KEY_6 + 2156003334 + name 1_130_KEY_7 + 2156003335 + name 1_130_KEY_8 + 2156003336 + name 1_130_KEY_9 + 2156003337 + name 1_130_KEY_POWER + 2156003338 + name 1_130_KEY_CH_UP + 2156003343 + name 1_130_KEY_CH_DOWN + 2156003344 + name 1_130_CH_PREVIOUS + 2156003347 + name 1_130_KEY_DISPLAY + 2156003349 + name 1_130_KEY_EXIT + 2156003352 + name 1_130_KEY_GUIDE + 2156003355 + name 1_130_KEY_SAT + 2156003370 + name 1_130_KEY_MENU + 2156003375 + name 1_130_KEY_MUP + 2156003376 + name 1_130_KEY_MDOWN + 2156003377 + name 1_130_KEY_MLEFT + 2156003378 + name 1_130_KEY_MRIGHT + 2156003379 + name 1_130_KEY_FF + 2156003380 + name 1_130_KEY_PLAY + 2156003381 + name 1_130_KEY_REW + 2156003382 + name 1_130_KEY_REC + 2156003383 + name 1_130_KEY_PAUSE + 2156003384 + name 1_130_KEY_STOP + 2156003385 + name 1_131_KEY_0 + 2156068864 + name 1_131_KEY_1 + 2156068865 + name 1_131_KEY_2 + 2156068866 + name 1_131_KEY_3 + 2156068867 + name 1_131_KEY_4 + 2156068868 + name 1_131_KEY_5 + 2156068869 + name 1_131_KEY_6 + 2156068870 + name 1_131_KEY_7 + 2156068871 + name 1_131_KEY_8 + 2156068872 + name 1_131_KEY_9 + 2156068873 + name 1_131_KEY_POWER + 2156068874 + name 1_131_KEY_CH_UP + 2156068879 + name 1_131_KEY_CH_DOWN + 2156068880 + name 1_131_CH_PREVIOUS + 2156068883 + name 1_131_KEY_DISPLAY + 2156068885 + name 1_131_KEY_EXIT + 2156068888 + name 1_131_KEY_GUIDE + 2156068891 + name 1_131_KEY_SAT + 2156068906 + name 1_131_KEY_MENU + 2156068911 + name 1_131_KEY_MUP + 2156068912 + name 1_131_KEY_MDOWN + 2156068913 + name 1_131_KEY_MLEFT + 2156068914 + name 1_131_KEY_MRIGHT + 2156068915 + name 1_131_KEY_FF + 2156068916 + name 1_131_KEY_PLAY + 2156068917 + name 1_131_KEY_REW + 2156068918 + name 1_131_KEY_REC + 2156068919 + name 1_131_KEY_PAUSE + 2156068920 + name 1_131_KEY_STOP + 2156068921 + name 1_132_KEY_0 + 2156134400 + name 1_132_KEY_1 + 2156134401 + name 1_132_KEY_2 + 2156134402 + name 1_132_KEY_3 + 2156134403 + name 1_132_KEY_4 + 2156134404 + name 1_132_KEY_5 + 2156134405 + name 1_132_KEY_6 + 2156134406 + name 1_132_KEY_7 + 2156134407 + name 1_132_KEY_8 + 2156134408 + name 1_132_KEY_9 + 2156134409 + name 1_132_KEY_POWER + 2156134410 + name 1_132_KEY_CH_UP + 2156134415 + name 1_132_KEY_CH_DOWN + 2156134416 + name 1_132_CH_PREVIOUS + 2156134419 + name 1_132_KEY_DISPLAY + 2156134421 + name 1_132_KEY_EXIT + 2156134424 + name 1_132_KEY_GUIDE + 2156134427 + name 1_132_KEY_SAT + 2156134442 + name 1_132_KEY_MENU + 2156134447 + name 1_132_KEY_MUP + 2156134448 + name 1_132_KEY_MDOWN + 2156134449 + name 1_132_KEY_MLEFT + 2156134450 + name 1_132_KEY_MRIGHT + 2156134451 + name 1_132_KEY_FF + 2156134452 + name 1_132_KEY_PLAY + 2156134453 + name 1_132_KEY_REW + 2156134454 + name 1_132_KEY_REC + 2156134455 + name 1_132_KEY_PAUSE + 2156134456 + name 1_132_KEY_STOP + 2156134457 + name 1_133_KEY_0 + 2156199936 + name 1_133_KEY_1 + 2156199937 + name 1_133_KEY_2 + 2156199938 + name 1_133_KEY_3 + 2156199939 + name 1_133_KEY_4 + 2156199940 + name 1_133_KEY_5 + 2156199941 + name 1_133_KEY_6 + 2156199942 + name 1_133_KEY_7 + 2156199943 + name 1_133_KEY_8 + 2156199944 + name 1_133_KEY_9 + 2156199945 + name 1_133_KEY_POWER + 2156199946 + name 1_133_KEY_CH_UP + 2156199951 + name 1_133_KEY_CH_DOWN + 2156199952 + name 1_133_CH_PREVIOUS + 2156199955 + name 1_133_KEY_DISPLAY + 2156199957 + name 1_133_KEY_EXIT + 2156199960 + name 1_133_KEY_GUIDE + 2156199963 + name 1_133_KEY_SAT + 2156199978 + name 1_133_KEY_MENU + 2156199983 + name 1_133_KEY_MUP + 2156199984 + name 1_133_KEY_MDOWN + 2156199985 + name 1_133_KEY_MLEFT + 2156199986 + name 1_133_KEY_MRIGHT + 2156199987 + name 1_133_KEY_FF + 2156199988 + name 1_133_KEY_PLAY + 2156199989 + name 1_133_KEY_REW + 2156199990 + name 1_133_KEY_REC + 2156199991 + name 1_133_KEY_PAUSE + 2156199992 + name 1_133_KEY_STOP + 2156199993 + name 1_134_KEY_0 + 2156265472 + name 1_134_KEY_1 + 2156265473 + name 1_134_KEY_2 + 2156265474 + name 1_134_KEY_3 + 2156265475 + name 1_134_KEY_4 + 2156265476 + name 1_134_KEY_5 + 2156265477 + name 1_134_KEY_6 + 2156265478 + name 1_134_KEY_7 + 2156265479 + name 1_134_KEY_8 + 2156265480 + name 1_134_KEY_9 + 2156265481 + name 1_134_KEY_POWER + 2156265482 + name 1_134_KEY_CH_UP + 2156265487 + name 1_134_KEY_CH_DOWN + 2156265488 + name 1_134_KEY_MUTE + 2156265489 + name 1_134_KEY_VOL_DOWN + 2156265490 + name 1_134_CH_PREVIOUS + 2156265491 + name 1_134_KEY_VOL_UP + 2156265492 + name 1_134_KEY_DISPLAY + 2156265493 + name 1_134_KEY_EXIT + 2156265496 + name 1_134_KEY_GUIDE + 2156265499 + name 1_134_KEY_ENTER + 2156265515 + name 1_134_KEY_MENU + 2156265519 + name 1_134_KEY_MUP + 2156265520 + name 1_134_KEY_MDOWN + 2156265521 + name 1_134_KEY_MLEFT + 2156265522 + name 1_134_KEY_MRIGHT + 2156265523 + name 1_135_KEY_0 + 2156331008 + name 1_135_KEY_1 + 2156331009 + name 1_135_KEY_2 + 2156331010 + name 1_135_KEY_3 + 2156331011 + name 1_135_KEY_4 + 2156331012 + name 1_135_KEY_5 + 2156331013 + name 1_135_KEY_6 + 2156331014 + name 1_135_KEY_7 + 2156331015 + name 1_135_KEY_8 + 2156331016 + name 1_135_KEY_9 + 2156331017 + name 1_135_KEY_POWER + 2156331018 + name 1_135_KEY_CH_UP + 2156331023 + name 1_135_KEY_CH_DOWN + 2156331024 + name 1_135_KEY_MUTE + 2156331025 + name 1_135_KEY_VOL_DOWN + 2156331026 + name 1_135_CH_PREVIOUS + 2156331027 + name 1_135_KEY_VOL_UP + 2156331028 + name 1_135_KEY_DISPLAY + 2156331029 + name 1_135_KEY_MNSELECT + 2156331031 + name 1_135_KEY_GUIDE + 2156331035 + name 1_135_KEY_MNRETRUN + 2156331040 + name 1_135_KEY_SAT + 2156331050 + name 1_135_KEY_MUP + 2156331056 + name 1_135_KEY_MDOWN + 2156331057 + name 1_135_KEY_MLEFT + 2156331058 + name 1_135_KEY_MRIGHT + 2156331059 + name 1_136_KEY_0 + 2156396544 + name 1_136_KEY_1 + 2156396545 + name 1_136_KEY_2 + 2156396546 + name 1_136_KEY_3 + 2156396547 + name 1_136_KEY_4 + 2156396548 + name 1_136_KEY_5 + 2156396549 + name 1_136_KEY_6 + 2156396550 + name 1_136_KEY_7 + 2156396551 + name 1_136_KEY_8 + 2156396552 + name 1_136_KEY_9 + 2156396553 + name 1_136_KEY_POWER + 2156396554 + name 1_136_KEY_CH_UP + 2156396559 + name 1_136_KEY_CH_DOWN + 2156396560 + name 1_136_KEY_MUTE + 2156396561 + name 1_136_KEY_VOL_DOWN + 2156396562 + name 1_136_CH_PREVIOUS + 2156396563 + name 1_136_KEY_VOL_UP + 2156396564 + name 1_136_KEY_DISPLAY + 2156396565 + name 1_136_KEY_EXIT + 2156396568 + name 1_136_KEY_GUIDE + 2156396571 + name 1_136_KEY_SAT + 2156396586 + name 1_136_KEY_MENU + 2156396591 + name 1_136_KEY_MUP + 2156396592 + name 1_136_KEY_MDOWN + 2156396593 + name 1_136_KEY_MLEFT + 2156396594 + name 1_136_KEY_MRIGHT + 2156396595 + name 1_137_KEY_0 + 2156462080 + name 1_137_KEY_1 + 2156462081 + name 1_137_KEY_2 + 2156462082 + name 1_137_KEY_3 + 2156462083 + name 1_137_KEY_4 + 2156462084 + name 1_137_KEY_5 + 2156462085 + name 1_137_KEY_6 + 2156462086 + name 1_137_KEY_7 + 2156462087 + name 1_137_KEY_8 + 2156462088 + name 1_137_KEY_9 + 2156462089 + name 1_137_KEY_POWER + 2156462090 + name 1_137_KEY_CH_UP + 2156462095 + name 1_137_KEY_CH_DOWN + 2156462096 + name 1_137_KEY_MUTE + 2156462097 + name 1_137_KEY_VOL_DOWN + 2156462098 + name 1_137_CH_PREVIOUS + 2156462099 + name 1_137_KEY_VOL_UP + 2156462100 + name 1_137_KEY_DISPLAY + 2156462101 + name 1_137_KEY_MNSELECT + 2156462103 + name 1_137_KEY_GUIDE + 2156462107 + name 1_137_KEY_MNRETRUN + 2156462112 + name 1_137_KEY_SAT + 2156462122 + name 1_137_KEY_MUP + 2156462128 + name 1_137_KEY_MDOWN + 2156462129 + name 1_137_KEY_MLEFT + 2156462130 + name 1_137_KEY_MRIGHT + 2156462131 + name 1_138_KEY_0 + 2156527616 + name 1_138_KEY_1 + 2156527617 + name 1_138_KEY_2 + 2156527618 + name 1_138_KEY_3 + 2156527619 + name 1_138_KEY_4 + 2156527620 + name 1_138_KEY_5 + 2156527621 + name 1_138_KEY_6 + 2156527622 + name 1_138_KEY_7 + 2156527623 + name 1_138_KEY_8 + 2156527624 + name 1_138_KEY_9 + 2156527625 + name 1_138_KEY_POWER + 2156527626 + name 1_138_KEY_CH_UP + 2156527631 + name 1_138_KEY_CH_DOWN + 2156527632 + name 1_138_KEY_MUTE + 2156527633 + name 1_138_KEY_VOL_DOWN + 2156527634 + name 1_138_CH_PREVIOUS + 2156527635 + name 1_138_KEY_VOL_UP + 2156527636 + name 1_138_KEY_DISPLAY + 2156527637 + name 1_138_KEY_MNSELECT + 2156527639 + name 1_138_KEY_EXIT + 2156527640 + name 1_138_KEY_INPUT + 2156527642 + name 1_138_KEY_GUIDE + 2156527643 + name 1_138_KEY_MNRETRUN + 2156527648 + name 1_138_KEY_MENU + 2156527663 + name 1_138_KEY_MUP + 2156527664 + name 1_138_KEY_MDOWN + 2156527665 + name 1_138_KEY_MLEFT + 2156527666 + name 1_138_KEY_MRIGHT + 2156527667 + name 1_138_KEY_FF + 2156527668 + name 1_138_KEY_PLAY + 2156527669 + name 1_138_KEY_REW + 2156527670 + name 1_138_KEY_REC + 2156527671 + name 1_138_KEY_PAUSE + 2156527672 + name 1_138_KEY_STOP + 2156527673 + name 1_139_KEY_0 + 2156593152 + name 1_139_KEY_1 + 2156593153 + name 1_139_KEY_2 + 2156593154 + name 1_139_KEY_3 + 2156593155 + name 1_139_KEY_4 + 2156593156 + name 1_139_KEY_5 + 2156593157 + name 1_139_KEY_6 + 2156593158 + name 1_139_KEY_7 + 2156593159 + name 1_139_KEY_8 + 2156593160 + name 1_139_KEY_9 + 2156593161 + name 1_139_KEY_POWER + 2156593162 + name 1_139_KEY_CH_UP + 2156593167 + name 1_139_KEY_CH_DOWN + 2156593168 + name 1_139_CH_PREVIOUS + 2156593171 + name 1_139_KEY_DISPLAY + 2156593173 + name 1_139_KEY_MNSELECT + 2156593175 + name 1_139_KEY_EXIT + 2156593176 + name 1_139_KEY_INPUT + 2156593178 + name 1_139_KEY_GUIDE + 2156593179 + name 1_139_KEY_MNRETRUN + 2156593184 + name 1_139_KEY_MENU + 2156593199 + name 1_139_KEY_MUP + 2156593200 + name 1_139_KEY_MDOWN + 2156593201 + name 1_139_KEY_MLEFT + 2156593202 + name 1_139_KEY_MRIGHT + 2156593203 + name 1_139_KEY_FF + 2156593204 + name 1_139_KEY_PLAY + 2156593205 + name 1_139_KEY_REW + 2156593206 + name 1_139_KEY_REC + 2156593207 + name 1_139_KEY_PAUSE + 2156593208 + name 1_139_KEY_STOP + 2156593209 + name 1_140_KEY_0 + 2156658688 + name 1_140_KEY_1 + 2156658689 + name 1_140_KEY_2 + 2156658690 + name 1_140_KEY_3 + 2156658691 + name 1_140_KEY_4 + 2156658692 + name 1_140_KEY_5 + 2156658693 + name 1_140_KEY_6 + 2156658694 + name 1_140_KEY_7 + 2156658695 + name 1_140_KEY_8 + 2156658696 + name 1_140_KEY_9 + 2156658697 + name 1_140_KEY_POWER + 2156658698 + name 1_140_KEY_CH_UP + 2156658703 + name 1_140_KEY_CH_DOWN + 2156658704 + name 1_140_CH_PREVIOUS + 2156658707 + name 1_140_KEY_DISPLAY + 2156658709 + name 1_140_KEY_MNSELECT + 2156658711 + name 1_140_KEY_EXIT + 2156658712 + name 1_140_KEY_INPUT + 2156658714 + name 1_140_KEY_GUIDE + 2156658715 + name 1_140_KEY_MNRETRUN + 2156658720 + name 1_140_KEY_ENTER + 2156658731 + name 1_140_KEY_MENU + 2156658735 + name 1_140_KEY_MUP + 2156658736 + name 1_140_KEY_MDOWN + 2156658737 + name 1_140_KEY_MLEFT + 2156658738 + name 1_140_KEY_MRIGHT + 2156658739 + name 1_140_KEY_FF + 2156658740 + name 1_140_KEY_PLAY + 2156658741 + name 1_140_KEY_REW + 2156658742 + name 1_140_KEY_REC + 2156658743 + name 1_140_KEY_PAUSE + 2156658744 + name 1_140_KEY_STOP + 2156658745 + name 1_141_KEY_0 + 2156724224 + name 1_141_KEY_1 + 2156724225 + name 1_141_KEY_2 + 2156724226 + name 1_141_KEY_3 + 2156724227 + name 1_141_KEY_4 + 2156724228 + name 1_141_KEY_5 + 2156724229 + name 1_141_KEY_6 + 2156724230 + name 1_141_KEY_7 + 2156724231 + name 1_141_KEY_8 + 2156724232 + name 1_141_KEY_9 + 2156724233 + name 1_141_KEY_POWER + 2156724234 + name 1_141_KEY_CH_UP + 2156724239 + name 1_141_KEY_CH_DOWN + 2156724240 + name 1_141_CH_PREVIOUS + 2156724243 + name 1_141_KEY_DISPLAY + 2156724245 + name 1_141_KEY_MNSELECT + 2156724247 + name 1_141_KEY_EXIT + 2156724248 + name 1_141_KEY_INPUT + 2156724250 + name 1_141_KEY_GUIDE + 2156724251 + name 1_141_KEY_MNRETRUN + 2156724256 + name 1_141_KEY_ENTER + 2156724267 + name 1_141_KEY_MUP + 2156724272 + name 1_141_KEY_MDOWN + 2156724273 + name 1_141_KEY_MLEFT + 2156724274 + name 1_141_KEY_MRIGHT + 2156724275 + name 1_142_KEY_0 + 2156789760 + name 1_142_KEY_1 + 2156789761 + name 1_142_KEY_2 + 2156789762 + name 1_142_KEY_3 + 2156789763 + name 1_142_KEY_4 + 2156789764 + name 1_142_KEY_5 + 2156789765 + name 1_142_KEY_6 + 2156789766 + name 1_142_KEY_7 + 2156789767 + name 1_142_KEY_8 + 2156789768 + name 1_142_KEY_9 + 2156789769 + name 1_142_KEY_POWER + 2156789770 + name 1_142_KEY_CH_UP + 2156789775 + name 1_142_KEY_CH_DOWN + 2156789776 + name 1_142_KEY_MUTE + 2156789777 + name 1_142_KEY_VOL_DOWN + 2156789778 + name 1_142_CH_PREVIOUS + 2156789779 + name 1_142_KEY_VOL_UP + 2156789780 + name 1_142_KEY_DISPLAY + 2156789781 + name 1_142_KEY_MNSELECT + 2156789783 + name 1_142_KEY_EXIT + 2156789784 + name 1_142_KEY_INPUT + 2156789786 + name 1_142_KEY_GUIDE + 2156789787 + name 1_142_KEY_MNRETRUN + 2156789792 + name 1_142_KEY_MENU + 2156789807 + name 1_142_KEY_MUP + 2156789808 + name 1_142_KEY_MDOWN + 2156789809 + name 1_142_KEY_MLEFT + 2156789810 + name 1_142_KEY_MRIGHT + 2156789811 + name 1_143_KEY_0 + 2156855296 + name 1_143_KEY_1 + 2156855297 + name 1_143_KEY_2 + 2156855298 + name 1_143_KEY_3 + 2156855299 + name 1_143_KEY_4 + 2156855300 + name 1_143_KEY_5 + 2156855301 + name 1_143_KEY_6 + 2156855302 + name 1_143_KEY_7 + 2156855303 + name 1_143_KEY_8 + 2156855304 + name 1_143_KEY_9 + 2156855305 + name 1_143_KEY_POWER + 2156855306 + name 1_143_KEY_CH_UP + 2156855311 + name 1_143_KEY_CH_DOWN + 2156855312 + name 1_143_CH_PREVIOUS + 2156855315 + name 1_143_KEY_DISPLAY + 2156855317 + name 1_143_KEY_MNSELECT + 2156855319 + name 1_143_KEY_EXIT + 2156855320 + name 1_143_KEY_INPUT + 2156855322 + name 1_143_KEY_GUIDE + 2156855323 + name 1_143_KEY_MNRETRUN + 2156855328 + name 1_143_KEY_MENU + 2156855343 + name 1_143_KEY_MUP + 2156855344 + name 1_143_KEY_MDOWN + 2156855345 + name 1_143_KEY_MLEFT + 2156855346 + name 1_143_KEY_MRIGHT + 2156855347 + name 1_144_KEY_0 + 2156920832 + name 1_144_KEY_1 + 2156920833 + name 1_144_KEY_2 + 2156920834 + name 1_144_KEY_3 + 2156920835 + name 1_144_KEY_4 + 2156920836 + name 1_144_KEY_5 + 2156920837 + name 1_144_KEY_6 + 2156920838 + name 1_144_KEY_7 + 2156920839 + name 1_144_KEY_8 + 2156920840 + name 1_144_KEY_9 + 2156920841 + name 1_144_KEY_POWER + 2156920842 + name 1_144_KEY_CH_UP + 2156920847 + name 1_144_KEY_CH_DOWN + 2156920848 + name 1_144_CH_PREVIOUS + 2156920851 + name 1_144_KEY_DISPLAY + 2156920853 + name 1_144_KEY_EXIT + 2156920856 + name 1_144_KEY_INPUT + 2156920858 + name 1_144_KEY_GUIDE + 2156920859 + name 1_144_KEY_MNRETRUN + 2156920864 + name 1_144_KEY_SAT + 2156920874 + name 1_144_KEY_MENU + 2156920879 + name 1_144_KEY_MUP + 2156920880 + name 1_144_KEY_MDOWN + 2156920881 + name 1_144_KEY_MLEFT + 2156920882 + name 1_144_KEY_MRIGHT + 2156920883 + name 1_145_KEY_0 + 2156986368 + name 1_145_KEY_1 + 2156986369 + name 1_145_KEY_2 + 2156986370 + name 1_145_KEY_3 + 2156986371 + name 1_145_KEY_4 + 2156986372 + name 1_145_KEY_5 + 2156986373 + name 1_145_KEY_6 + 2156986374 + name 1_145_KEY_7 + 2156986375 + name 1_145_KEY_8 + 2156986376 + name 1_145_KEY_9 + 2156986377 + name 1_145_KEY_POWER + 2156986378 + name 1_145_KEY_CH_UP + 2156986383 + name 1_145_KEY_CH_DOWN + 2156986384 + name 1_145_CH_PREVIOUS + 2156986387 + name 1_145_KEY_DISPLAY + 2156986389 + name 1_145_KEY_EXIT + 2156986392 + name 1_145_KEY_INPUT + 2156986394 + name 1_145_KEY_GUIDE + 2156986395 + name 1_145_KEY_MNRETRUN + 2156986400 + name 1_145_KEY_SAT + 2156986410 + name 1_145_KEY_MENU + 2156986415 + name 1_145_KEY_MUP + 2156986416 + name 1_145_KEY_MDOWN + 2156986417 + name 1_145_KEY_MLEFT + 2156986418 + name 1_145_KEY_MRIGHT + 2156986419 + name 1_146_KEY_0 + 2157051904 + name 1_146_KEY_1 + 2157051905 + name 1_146_KEY_2 + 2157051906 + name 1_146_KEY_3 + 2157051907 + name 1_146_KEY_4 + 2157051908 + name 1_146_KEY_5 + 2157051909 + name 1_146_KEY_6 + 2157051910 + name 1_146_KEY_7 + 2157051911 + name 1_146_KEY_8 + 2157051912 + name 1_146_KEY_9 + 2157051913 + name 1_146_KEY_POWER + 2157051914 + name 1_146_KEY_CH_UP + 2157051919 + name 1_146_KEY_CH_DOWN + 2157051920 + name 1_146_KEY_MUTE + 2157051921 + name 1_146_KEY_VOL_DOWN + 2157051922 + name 1_146_CH_PREVIOUS + 2157051923 + name 1_146_KEY_VOL_UP + 2157051924 + name 1_146_KEY_MNSELECT + 2157051927 + name 1_146_KEY_EXIT + 2157051928 + name 1_146_KEY_INPUT + 2157051930 + name 1_146_KEY_GUIDE + 2157051931 + name 1_146_KEY_SAT + 2157051946 + name 1_146_KEY_MENU + 2157051951 + name 1_146_KEY_MUP + 2157051952 + name 1_146_KEY_MDOWN + 2157051953 + name 1_146_KEY_MLEFT + 2157051954 + name 1_146_KEY_MRIGHT + 2157051955 + name 1_147_KEY_0 + 2157117440 + name 1_147_KEY_1 + 2157117441 + name 1_147_KEY_2 + 2157117442 + name 1_147_KEY_3 + 2157117443 + name 1_147_KEY_4 + 2157117444 + name 1_147_KEY_5 + 2157117445 + name 1_147_KEY_6 + 2157117446 + name 1_147_KEY_7 + 2157117447 + name 1_147_KEY_8 + 2157117448 + name 1_147_KEY_9 + 2157117449 + name 1_147_KEY_POWER + 2157117450 + name 1_147_KEY_CH_UP + 2157117455 + name 1_147_KEY_CH_DOWN + 2157117456 + name 1_147_CH_PREVIOUS + 2157117459 + name 1_147_KEY_DISPLAY + 2157117461 + name 1_147_KEY_EXIT + 2157117464 + name 1_147_KEY_GUIDE + 2157117467 + name 1_147_KEY_MENU + 2157117487 + name 1_147_KEY_MUP + 2157117488 + name 1_147_KEY_MDOWN + 2157117489 + name 1_147_KEY_MLEFT + 2157117490 + name 1_147_KEY_MRIGHT + 2157117491 + name 1_148_KEY_0 + 2157182976 + name 1_148_KEY_1 + 2157182977 + name 1_148_KEY_2 + 2157182978 + name 1_148_KEY_3 + 2157182979 + name 1_148_KEY_4 + 2157182980 + name 1_148_KEY_5 + 2157182981 + name 1_148_KEY_6 + 2157182982 + name 1_148_KEY_7 + 2157182983 + name 1_148_KEY_8 + 2157182984 + name 1_148_KEY_9 + 2157182985 + name 1_148_KEY_POWER + 2157182986 + name 1_148_KEY_CH_UP + 2157182991 + name 1_148_KEY_CH_DOWN + 2157182992 + name 1_148_KEY_MUTE + 2157182993 + name 1_148_KEY_VOL_DOWN + 2157182994 + name 1_148_CH_PREVIOUS + 2157182995 + name 1_148_KEY_VOL_UP + 2157182996 + name 1_148_KEY_DISPLAY + 2157182997 + name 1_148_KEY_MNSELECT + 2157182999 + name 1_148_KEY_EXIT + 2157183000 + name 1_148_KEY_GUIDE + 2157183003 + name 1_148_KEY_MNRETRUN + 2157183008 + name 1_148_KEY_MENU + 2157183023 + name 1_148_KEY_MUP + 2157183024 + name 1_148_KEY_MDOWN + 2157183025 + name 1_148_KEY_MLEFT + 2157183026 + name 1_148_KEY_MRIGHT + 2157183027 + name 1_149_KEY_0 + 2157248512 + name 1_149_KEY_1 + 2157248513 + name 1_149_KEY_2 + 2157248514 + name 1_149_KEY_3 + 2157248515 + name 1_149_KEY_4 + 2157248516 + name 1_149_KEY_5 + 2157248517 + name 1_149_KEY_6 + 2157248518 + name 1_149_KEY_7 + 2157248519 + name 1_149_KEY_8 + 2157248520 + name 1_149_KEY_9 + 2157248521 + name 1_149_KEY_POWER + 2157248522 + name 1_149_KEY_CH_UP + 2157248527 + name 1_149_KEY_CH_DOWN + 2157248528 + name 1_149_KEY_MUTE + 2157248529 + name 1_149_KEY_VOL_DOWN + 2157248530 + name 1_149_CH_PREVIOUS + 2157248531 + name 1_149_KEY_VOL_UP + 2157248532 + name 1_149_KEY_DISPLAY + 2157248533 + name 1_149_KEY_MNSELECT + 2157248535 + name 1_149_KEY_EXIT + 2157248536 + name 1_149_KEY_GUIDE + 2157248539 + name 1_149_KEY_MNRETRUN + 2157248544 + name 1_149_KEY_ENTER + 2157248555 + name 1_149_KEY_MENU + 2157248559 + name 1_149_KEY_MUP + 2157248560 + name 1_149_KEY_MDOWN + 2157248561 + name 1_149_KEY_MLEFT + 2157248562 + name 1_149_KEY_MRIGHT + 2157248563 + name 1_149_KEY_FF + 2157248564 + name 1_149_KEY_PLAY + 2157248565 + name 1_149_KEY_REW + 2157248566 + name 1_149_KEY_REC + 2157248567 + name 1_149_KEY_PAUSE + 2157248568 + name 1_149_KEY_STOP + 2157248569 + name 1_150_KEY_0 + 2157314048 + name 1_150_KEY_1 + 2157314049 + name 1_150_KEY_2 + 2157314050 + name 1_150_KEY_3 + 2157314051 + name 1_150_KEY_4 + 2157314052 + name 1_150_KEY_5 + 2157314053 + name 1_150_KEY_6 + 2157314054 + name 1_150_KEY_7 + 2157314055 + name 1_150_KEY_8 + 2157314056 + name 1_150_KEY_9 + 2157314057 + name 1_150_KEY_POWER + 2157314058 + name 1_150_KEY_CH_UP + 2157314063 + name 1_150_KEY_CH_DOWN + 2157314064 + name 1_150_KEY_MUTE + 2157314065 + name 1_150_KEY_VOL_DOWN + 2157314066 + name 1_150_CH_PREVIOUS + 2157314067 + name 1_150_KEY_VOL_UP + 2157314068 + name 1_150_KEY_DISPLAY + 2157314069 + name 1_150_KEY_MNSELECT + 2157314071 + name 1_150_KEY_EXIT + 2157314072 + name 1_150_KEY_GUIDE + 2157314075 + name 1_150_KEY_MNRETRUN + 2157314080 + name 1_150_KEY_MENU + 2157314095 + name 1_150_KEY_MUP + 2157314096 + name 1_150_KEY_MDOWN + 2157314097 + name 1_150_KEY_MLEFT + 2157314098 + name 1_150_KEY_MRIGHT + 2157314099 + name 1_150_KEY_FF + 2157314100 + name 1_150_KEY_PLAY + 2157314101 + name 1_150_KEY_REW + 2157314102 + name 1_150_KEY_REC + 2157314103 + name 1_150_KEY_PAUSE + 2157314104 + name 1_150_KEY_STOP + 2157314105 + name 1_151_KEY_0 + 2157379584 + name 1_151_KEY_1 + 2157379585 + name 1_151_KEY_2 + 2157379586 + name 1_151_KEY_3 + 2157379587 + name 1_151_KEY_4 + 2157379588 + name 1_151_KEY_5 + 2157379589 + name 1_151_KEY_6 + 2157379590 + name 1_151_KEY_7 + 2157379591 + name 1_151_KEY_8 + 2157379592 + name 1_151_KEY_9 + 2157379593 + name 1_151_KEY_CH_UP + 2157379599 + name 1_151_KEY_CH_DOWN + 2157379600 + name 1_151_CH_PREVIOUS + 2157379603 + name 1_151_KEY_DISPLAY + 2157379605 + name 1_151_KEY_MNSELECT + 2157379607 + name 1_151_KEY_EXIT + 2157379608 + name 1_151_KEY_GUIDE + 2157379611 + name 1_151_KEY_MNRETRUN + 2157379616 + name 1_151_KEY_ENTER + 2157379627 + name 1_151_KEY_MENU + 2157379631 + name 1_151_KEY_MUP + 2157379632 + name 1_151_KEY_MDOWN + 2157379633 + name 1_151_KEY_MLEFT + 2157379634 + name 1_151_KEY_MRIGHT + 2157379635 + name 1_151_KEY_FF + 2157379636 + name 1_151_KEY_PLAY + 2157379637 + name 1_151_KEY_REW + 2157379638 + name 1_151_KEY_REC + 2157379639 + name 1_151_KEY_PAUSE + 2157379640 + name 1_152_KEY_0 + 2157445120 + name 1_152_KEY_1 + 2157445121 + name 1_152_KEY_2 + 2157445122 + name 1_152_KEY_3 + 2157445123 + name 1_152_KEY_4 + 2157445124 + name 1_152_KEY_5 + 2157445125 + name 1_152_KEY_6 + 2157445126 + name 1_152_KEY_7 + 2157445127 + name 1_152_KEY_8 + 2157445128 + name 1_152_KEY_9 + 2157445129 + name 1_152_KEY_POWER + 2157445130 + name 1_152_KEY_CH_UP + 2157445135 + name 1_152_KEY_CH_DOWN + 2157445136 + name 1_152_CH_PREVIOUS + 2157445139 + name 1_152_KEY_DISPLAY + 2157445141 + name 1_152_KEY_MNSELECT + 2157445143 + name 1_152_KEY_EXIT + 2157445144 + name 1_152_KEY_GUIDE + 2157445147 + name 1_152_KEY_MNRETRUN + 2157445152 + name 1_152_KEY_MENU + 2157445167 + name 1_152_KEY_MUP + 2157445168 + name 1_152_KEY_MDOWN + 2157445169 + name 1_152_KEY_MLEFT + 2157445170 + name 1_152_KEY_MRIGHT + 2157445171 + name 1_152_KEY_FF + 2157445172 + name 1_152_KEY_PLAY + 2157445173 + name 1_152_KEY_REW + 2157445174 + name 1_152_KEY_REC + 2157445175 + name 1_152_KEY_PAUSE + 2157445176 + name 1_152_KEY_STOP + 2157445177 + name 1_153_KEY_0 + 2157510656 + name 1_153_KEY_1 + 2157510657 + name 1_153_KEY_2 + 2157510658 + name 1_153_KEY_3 + 2157510659 + name 1_153_KEY_4 + 2157510660 + name 1_153_KEY_5 + 2157510661 + name 1_153_KEY_6 + 2157510662 + name 1_153_KEY_7 + 2157510663 + name 1_153_KEY_8 + 2157510664 + name 1_153_KEY_9 + 2157510665 + name 1_153_KEY_POWER + 2157510666 + name 1_153_KEY_CH_UP + 2157510671 + name 1_153_KEY_CH_DOWN + 2157510672 + name 1_153_CH_PREVIOUS + 2157510675 + name 1_153_KEY_DISPLAY + 2157510677 + name 1_153_KEY_MNSELECT + 2157510679 + name 1_153_KEY_EXIT + 2157510680 + name 1_153_KEY_GUIDE + 2157510683 + name 1_153_KEY_MNRETRUN + 2157510688 + name 1_153_KEY_MENU + 2157510703 + name 1_153_KEY_MUP + 2157510704 + name 1_153_KEY_MDOWN + 2157510705 + name 1_153_KEY_MLEFT + 2157510706 + name 1_153_KEY_MRIGHT + 2157510707 + name 1_153_KEY_FF + 2157510708 + name 1_153_KEY_PLAY + 2157510709 + name 1_153_KEY_REW + 2157510710 + name 1_153_KEY_REC + 2157510711 + name 1_153_KEY_PAUSE + 2157510712 + name 1_153_KEY_STOP + 2157510713 + name 1_154_KEY_0 + 2157576192 + name 1_154_KEY_1 + 2157576193 + name 1_154_KEY_2 + 2157576194 + name 1_154_KEY_3 + 2157576195 + name 1_154_KEY_4 + 2157576196 + name 1_154_KEY_5 + 2157576197 + name 1_154_KEY_6 + 2157576198 + name 1_154_KEY_7 + 2157576199 + name 1_154_KEY_8 + 2157576200 + name 1_154_KEY_9 + 2157576201 + name 1_154_KEY_POWER + 2157576202 + name 1_154_KEY_CH_UP + 2157576207 + name 1_154_KEY_CH_DOWN + 2157576208 + name 1_154_CH_PREVIOUS + 2157576211 + name 1_154_KEY_DISPLAY + 2157576213 + name 1_154_KEY_MNSELECT + 2157576215 + name 1_154_KEY_EXIT + 2157576216 + name 1_154_KEY_GUIDE + 2157576219 + name 1_154_KEY_MNRETRUN + 2157576224 + name 1_154_KEY_ENTER + 2157576235 + name 1_154_KEY_MENU + 2157576239 + name 1_154_KEY_MUP + 2157576240 + name 1_154_KEY_MDOWN + 2157576241 + name 1_154_KEY_MLEFT + 2157576242 + name 1_154_KEY_MRIGHT + 2157576243 + name 1_154_KEY_FF + 2157576244 + name 1_154_KEY_PLAY + 2157576245 + name 1_154_KEY_REW + 2157576246 + name 1_154_KEY_REC + 2157576247 + name 1_154_KEY_PAUSE + 2157576248 + name 1_154_KEY_STOP + 2157576249 + name 1_155_KEY_0 + 2157641728 + name 1_155_KEY_1 + 2157641729 + name 1_155_KEY_2 + 2157641730 + name 1_155_KEY_3 + 2157641731 + name 1_155_KEY_4 + 2157641732 + name 1_155_KEY_5 + 2157641733 + name 1_155_KEY_6 + 2157641734 + name 1_155_KEY_7 + 2157641735 + name 1_155_KEY_8 + 2157641736 + name 1_155_KEY_9 + 2157641737 + name 1_155_KEY_POWER + 2157641738 + name 1_155_KEY_CH_UP + 2157641743 + name 1_155_KEY_CH_DOWN + 2157641744 + name 1_155_CH_PREVIOUS + 2157641747 + name 1_155_KEY_DISPLAY + 2157641749 + name 1_155_KEY_MNSELECT + 2157641751 + name 1_155_KEY_EXIT + 2157641752 + name 1_155_KEY_GUIDE + 2157641755 + name 1_155_KEY_MNRETRUN + 2157641760 + name 1_155_KEY_ENTER + 2157641771 + name 1_155_KEY_MENU + 2157641775 + name 1_155_KEY_MUP + 2157641776 + name 1_155_KEY_MDOWN + 2157641777 + name 1_155_KEY_MLEFT + 2157641778 + name 1_155_KEY_MRIGHT + 2157641779 + name 1_155_KEY_FF + 2157641780 + name 1_155_KEY_PLAY + 2157641781 + name 1_155_KEY_REW + 2157641782 + name 1_155_KEY_REC + 2157641783 + name 1_155_KEY_PAUSE + 2157641784 + name 1_156_KEY_0 + 2157707264 + name 1_156_KEY_1 + 2157707265 + name 1_156_KEY_2 + 2157707266 + name 1_156_KEY_3 + 2157707267 + name 1_156_KEY_4 + 2157707268 + name 1_156_KEY_5 + 2157707269 + name 1_156_KEY_6 + 2157707270 + name 1_156_KEY_7 + 2157707271 + name 1_156_KEY_8 + 2157707272 + name 1_156_KEY_9 + 2157707273 + name 1_156_KEY_CH_UP + 2157707279 + name 1_156_KEY_CH_DOWN + 2157707280 + name 1_156_CH_PREVIOUS + 2157707283 + name 1_156_KEY_DISPLAY + 2157707285 + name 1_156_KEY_MNSELECT + 2157707287 + name 1_156_KEY_EXIT + 2157707288 + name 1_156_KEY_GUIDE + 2157707291 + name 1_156_KEY_MNRETRUN + 2157707296 + name 1_156_KEY_ENTER + 2157707307 + name 1_156_KEY_MENU + 2157707311 + name 1_156_KEY_MUP + 2157707312 + name 1_156_KEY_MDOWN + 2157707313 + name 1_156_KEY_MLEFT + 2157707314 + name 1_156_KEY_MRIGHT + 2157707315 + name 1_156_KEY_FF + 2157707316 + name 1_156_KEY_PLAY + 2157707317 + name 1_156_KEY_REW + 2157707318 + name 1_156_KEY_REC + 2157707319 + name 1_156_KEY_PAUSE + 2157707320 + name 1_157_KEY_0 + 2157772800 + name 1_157_KEY_1 + 2157772801 + name 1_157_KEY_2 + 2157772802 + name 1_157_KEY_3 + 2157772803 + name 1_157_KEY_4 + 2157772804 + name 1_157_KEY_5 + 2157772805 + name 1_157_KEY_6 + 2157772806 + name 1_157_KEY_7 + 2157772807 + name 1_157_KEY_8 + 2157772808 + name 1_157_KEY_9 + 2157772809 + name 1_157_KEY_POWER + 2157772810 + name 1_157_KEY_CH_UP + 2157772815 + name 1_157_KEY_CH_DOWN + 2157772816 + name 1_157_KEY_DISPLAY + 2157772821 + name 1_157_KEY_MNSELECT + 2157772823 + name 1_157_KEY_EXIT + 2157772824 + name 1_157_KEY_GUIDE + 2157772827 + name 1_157_KEY_ENTER + 2157772843 + name 1_157_KEY_MENU + 2157772847 + name 1_157_KEY_MUP + 2157772848 + name 1_157_KEY_MDOWN + 2157772849 + name 1_157_KEY_MLEFT + 2157772850 + name 1_157_KEY_MRIGHT + 2157772851 + name 1_157_KEY_FF + 2157772852 + name 1_157_KEY_PLAY + 2157772853 + name 1_157_KEY_REW + 2157772854 + name 1_157_KEY_REC + 2157772855 + name 1_157_KEY_PAUSE + 2157772856 + name 1_158_KEY_0 + 2157838336 + name 1_158_KEY_1 + 2157838337 + name 1_158_KEY_2 + 2157838338 + name 1_158_KEY_3 + 2157838339 + name 1_158_KEY_4 + 2157838340 + name 1_158_KEY_5 + 2157838341 + name 1_158_KEY_6 + 2157838342 + name 1_158_KEY_7 + 2157838343 + name 1_158_KEY_8 + 2157838344 + name 1_158_KEY_9 + 2157838345 + name 1_158_KEY_POWER + 2157838346 + name 1_158_KEY_CH_UP + 2157838351 + name 1_158_KEY_CH_DOWN + 2157838352 + name 1_158_KEY_DISPLAY + 2157838357 + name 1_158_KEY_MNSELECT + 2157838359 + name 1_158_KEY_EXIT + 2157838360 + name 1_158_KEY_GUIDE + 2157838363 + name 1_158_KEY_ENTER + 2157838379 + name 1_158_KEY_MENU + 2157838383 + name 1_158_KEY_MUP + 2157838384 + name 1_158_KEY_MDOWN + 2157838385 + name 1_158_KEY_MLEFT + 2157838386 + name 1_158_KEY_MRIGHT + 2157838387 + name 1_158_KEY_FF + 2157838388 + name 1_158_KEY_PLAY + 2157838389 + name 1_158_KEY_REW + 2157838390 + name 1_158_KEY_REC + 2157838391 + name 1_158_KEY_PAUSE + 2157838392 + name 1_159_KEY_0 + 2157903872 + name 1_159_KEY_1 + 2157903873 + name 1_159_KEY_2 + 2157903874 + name 1_159_KEY_3 + 2157903875 + name 1_159_KEY_4 + 2157903876 + name 1_159_KEY_5 + 2157903877 + name 1_159_KEY_6 + 2157903878 + name 1_159_KEY_7 + 2157903879 + name 1_159_KEY_8 + 2157903880 + name 1_159_KEY_9 + 2157903881 + name 1_159_KEY_POWER + 2157903882 + name 1_159_KEY_CH_UP + 2157903887 + name 1_159_KEY_CH_DOWN + 2157903888 + name 1_159_KEY_MUTE + 2157903889 + name 1_159_KEY_VOL_DOWN + 2157903890 + name 1_159_CH_PREVIOUS + 2157903891 + name 1_159_KEY_VOL_UP + 2157903892 + name 1_159_KEY_DISPLAY + 2157903893 + name 1_159_KEY_MNSELECT + 2157903895 + name 1_159_KEY_EXIT + 2157903896 + name 1_159_KEY_GUIDE + 2157903899 + name 1_159_KEY_MNRETRUN + 2157903904 + name 1_159_KEY_ENTER + 2157903915 + name 1_159_KEY_MENU + 2157903919 + name 1_159_KEY_MUP + 2157903920 + name 1_159_KEY_MDOWN + 2157903921 + name 1_159_KEY_MLEFT + 2157903922 + name 1_159_KEY_MRIGHT + 2157903923 + name 1_160_KEY_0 + 2157969408 + name 1_160_KEY_1 + 2157969409 + name 1_160_KEY_2 + 2157969410 + name 1_160_KEY_3 + 2157969411 + name 1_160_KEY_4 + 2157969412 + name 1_160_KEY_5 + 2157969413 + name 1_160_KEY_6 + 2157969414 + name 1_160_KEY_7 + 2157969415 + name 1_160_KEY_8 + 2157969416 + name 1_160_KEY_9 + 2157969417 + name 1_160_KEY_CH_UP + 2157969423 + name 1_160_KEY_CH_DOWN + 2157969424 + name 1_160_CH_PREVIOUS + 2157969427 + name 1_160_KEY_DISPLAY + 2157969429 + name 1_160_KEY_MNSELECT + 2157969431 + name 1_160_KEY_EXIT + 2157969432 + name 1_160_KEY_GUIDE + 2157969435 + name 1_160_KEY_MNRETRUN + 2157969440 + name 1_160_KEY_ENTER + 2157969451 + name 1_160_KEY_MENU + 2157969455 + name 1_160_KEY_MUP + 2157969456 + name 1_160_KEY_MDOWN + 2157969457 + name 1_160_KEY_MLEFT + 2157969458 + name 1_160_KEY_MRIGHT + 2157969459 + name 1_161_KEY_0 + 2158034944 + name 1_161_KEY_1 + 2158034945 + name 1_161_KEY_2 + 2158034946 + name 1_161_KEY_3 + 2158034947 + name 1_161_KEY_4 + 2158034948 + name 1_161_KEY_5 + 2158034949 + name 1_161_KEY_6 + 2158034950 + name 1_161_KEY_7 + 2158034951 + name 1_161_KEY_8 + 2158034952 + name 1_161_KEY_9 + 2158034953 + name 1_161_KEY_POWER + 2158034954 + name 1_161_KEY_CH_UP + 2158034959 + name 1_161_KEY_CH_DOWN + 2158034960 + name 1_161_CH_PREVIOUS + 2158034963 + name 1_161_KEY_DISPLAY + 2158034965 + name 1_161_KEY_MNSELECT + 2158034967 + name 1_161_KEY_EXIT + 2158034968 + name 1_161_KEY_GUIDE + 2158034971 + name 1_161_KEY_MNRETRUN + 2158034976 + name 1_161_KEY_MENU + 2158034991 + name 1_161_KEY_MUP + 2158034992 + name 1_161_KEY_MDOWN + 2158034993 + name 1_161_KEY_MLEFT + 2158034994 + name 1_161_KEY_MRIGHT + 2158034995 + name 1_162_KEY_0 + 2158100480 + name 1_162_KEY_1 + 2158100481 + name 1_162_KEY_2 + 2158100482 + name 1_162_KEY_3 + 2158100483 + name 1_162_KEY_4 + 2158100484 + name 1_162_KEY_5 + 2158100485 + name 1_162_KEY_6 + 2158100486 + name 1_162_KEY_7 + 2158100487 + name 1_162_KEY_8 + 2158100488 + name 1_162_KEY_9 + 2158100489 + name 1_162_KEY_POWER + 2158100490 + name 1_162_KEY_CH_UP + 2158100495 + name 1_162_KEY_CH_DOWN + 2158100496 + name 1_162_KEY_MUTE + 2158100497 + name 1_162_KEY_VOL_DOWN + 2158100498 + name 1_162_CH_PREVIOUS + 2158100499 + name 1_162_KEY_VOL_UP + 2158100500 + name 1_162_KEY_DISPLAY + 2158100501 + name 1_162_KEY_MNSELECT + 2158100503 + name 1_162_KEY_EXIT + 2158100504 + name 1_162_KEY_GUIDE + 2158100507 + name 1_162_KEY_MNRETRUN + 2158100512 + name 1_162_KEY_ENTER + 2158100523 + name 1_162_KEY_MENU + 2158100527 + name 1_162_KEY_MUP + 2158100528 + name 1_162_KEY_MDOWN + 2158100529 + name 1_162_KEY_MLEFT + 2158100530 + name 1_162_KEY_MRIGHT + 2158100531 + name 1_163_KEY_0 + 2158166016 + name 1_163_KEY_1 + 2158166017 + name 1_163_KEY_2 + 2158166018 + name 1_163_KEY_3 + 2158166019 + name 1_163_KEY_4 + 2158166020 + name 1_163_KEY_5 + 2158166021 + name 1_163_KEY_6 + 2158166022 + name 1_163_KEY_7 + 2158166023 + name 1_163_KEY_8 + 2158166024 + name 1_163_KEY_9 + 2158166025 + name 1_163_KEY_POWER + 2158166026 + name 1_163_KEY_CH_UP + 2158166031 + name 1_163_KEY_CH_DOWN + 2158166032 + name 1_163_KEY_MUTE + 2158166033 + name 1_163_KEY_VOL_DOWN + 2158166034 + name 1_163_CH_PREVIOUS + 2158166035 + name 1_163_KEY_VOL_UP + 2158166036 + name 1_163_KEY_DISPLAY + 2158166037 + name 1_163_KEY_MNSELECT + 2158166039 + name 1_163_KEY_EXIT + 2158166040 + name 1_163_KEY_GUIDE + 2158166043 + name 1_163_KEY_MNRETRUN + 2158166048 + name 1_163_KEY_MENU + 2158166063 + name 1_163_KEY_MUP + 2158166064 + name 1_163_KEY_MDOWN + 2158166065 + name 1_163_KEY_MLEFT + 2158166066 + name 1_163_KEY_MRIGHT + 2158166067 + name 1_164_KEY_0 + 2158231552 + name 1_164_KEY_1 + 2158231553 + name 1_164_KEY_2 + 2158231554 + name 1_164_KEY_3 + 2158231555 + name 1_164_KEY_4 + 2158231556 + name 1_164_KEY_5 + 2158231557 + name 1_164_KEY_6 + 2158231558 + name 1_164_KEY_7 + 2158231559 + name 1_164_KEY_8 + 2158231560 + name 1_164_KEY_9 + 2158231561 + name 1_164_KEY_POWER + 2158231562 + name 1_164_KEY_CH_UP + 2158231567 + name 1_164_KEY_CH_DOWN + 2158231568 + name 1_164_CH_PREVIOUS + 2158231571 + name 1_164_KEY_DISPLAY + 2158231573 + name 1_164_KEY_MNSELECT + 2158231575 + name 1_164_KEY_EXIT + 2158231576 + name 1_164_KEY_GUIDE + 2158231579 + name 1_164_KEY_ENTER + 2158231595 + name 1_164_KEY_MENU + 2158231599 + name 1_164_KEY_MUP + 2158231600 + name 1_164_KEY_MDOWN + 2158231601 + name 1_164_KEY_MLEFT + 2158231602 + name 1_164_KEY_MRIGHT + 2158231603 + name 1_165_KEY_0 + 2158297088 + name 1_165_KEY_1 + 2158297089 + name 1_165_KEY_2 + 2158297090 + name 1_165_KEY_3 + 2158297091 + name 1_165_KEY_4 + 2158297092 + name 1_165_KEY_5 + 2158297093 + name 1_165_KEY_6 + 2158297094 + name 1_165_KEY_7 + 2158297095 + name 1_165_KEY_8 + 2158297096 + name 1_165_KEY_9 + 2158297097 + name 1_165_KEY_POWER + 2158297098 + name 1_165_KEY_CH_UP + 2158297103 + name 1_165_KEY_CH_DOWN + 2158297104 + name 1_165_CH_PREVIOUS + 2158297107 + name 1_165_KEY_DISPLAY + 2158297109 + name 1_165_KEY_MNSELECT + 2158297111 + name 1_165_KEY_EXIT + 2158297112 + name 1_165_KEY_GUIDE + 2158297115 + name 1_165_KEY_MNRETRUN + 2158297120 + name 1_165_KEY_ENTER + 2158297131 + name 1_165_KEY_MENU + 2158297135 + name 1_165_KEY_MUP + 2158297136 + name 1_165_KEY_MDOWN + 2158297137 + name 1_165_KEY_MLEFT + 2158297138 + name 1_165_KEY_MRIGHT + 2158297139 + name 1_165_KEY_FF + 2158297140 + name 1_165_KEY_PLAY + 2158297141 + name 1_165_KEY_REW + 2158297142 + name 1_165_KEY_REC + 2158297143 + name 1_165_KEY_PAUSE + 2158297144 + name 1_165_KEY_STOP + 2158297145 + name 1_166_KEY_0 + 2158362624 + name 1_166_KEY_1 + 2158362625 + name 1_166_KEY_2 + 2158362626 + name 1_166_KEY_3 + 2158362627 + name 1_166_KEY_4 + 2158362628 + name 1_166_KEY_5 + 2158362629 + name 1_166_KEY_6 + 2158362630 + name 1_166_KEY_7 + 2158362631 + name 1_166_KEY_8 + 2158362632 + name 1_166_KEY_9 + 2158362633 + name 1_166_KEY_CH_UP + 2158362639 + name 1_166_KEY_CH_DOWN + 2158362640 + name 1_166_CH_PREVIOUS + 2158362643 + name 1_166_KEY_DISPLAY + 2158362645 + name 1_166_KEY_MNSELECT + 2158362647 + name 1_166_KEY_EXIT + 2158362648 + name 1_166_KEY_GUIDE + 2158362651 + name 1_166_KEY_MNRETRUN + 2158362656 + name 1_166_KEY_ENTER + 2158362667 + name 1_166_KEY_MENU + 2158362671 + name 1_166_KEY_MUP + 2158362672 + name 1_166_KEY_MDOWN + 2158362673 + name 1_166_KEY_MLEFT + 2158362674 + name 1_166_KEY_MRIGHT + 2158362675 + name 1_166_KEY_FF + 2158362676 + name 1_166_KEY_PLAY + 2158362677 + name 1_166_KEY_REW + 2158362678 + name 1_166_KEY_REC + 2158362679 + name 1_166_KEY_PAUSE + 2158362680 + name 1_167_KEY_0 + 2158428160 + name 1_167_KEY_1 + 2158428161 + name 1_167_KEY_2 + 2158428162 + name 1_167_KEY_3 + 2158428163 + name 1_167_KEY_4 + 2158428164 + name 1_167_KEY_5 + 2158428165 + name 1_167_KEY_6 + 2158428166 + name 1_167_KEY_7 + 2158428167 + name 1_167_KEY_8 + 2158428168 + name 1_167_KEY_9 + 2158428169 + name 1_167_KEY_POWER + 2158428170 + name 1_167_KEY_CH_UP + 2158428175 + name 1_167_KEY_CH_DOWN + 2158428176 + name 1_167_KEY_MUTE + 2158428177 + name 1_167_KEY_VOL_DOWN + 2158428178 + name 1_167_CH_PREVIOUS + 2158428179 + name 1_167_KEY_VOL_UP + 2158428180 + name 1_167_KEY_DISPLAY + 2158428181 + name 1_167_KEY_MNSELECT + 2158428183 + name 1_167_KEY_EXIT + 2158428184 + name 1_167_KEY_GUIDE + 2158428187 + name 1_167_KEY_SAT + 2158428202 + name 1_167_KEY_MENU + 2158428207 + name 1_167_KEY_MUP + 2158428208 + name 1_167_KEY_MDOWN + 2158428209 + name 1_167_KEY_MLEFT + 2158428210 + name 1_167_KEY_MRIGHT + 2158428211 + name 1_168_KEY_0 + 2158493696 + name 1_168_KEY_1 + 2158493697 + name 1_168_KEY_2 + 2158493698 + name 1_168_KEY_3 + 2158493699 + name 1_168_KEY_4 + 2158493700 + name 1_168_KEY_5 + 2158493701 + name 1_168_KEY_6 + 2158493702 + name 1_168_KEY_7 + 2158493703 + name 1_168_KEY_8 + 2158493704 + name 1_168_KEY_9 + 2158493705 + name 1_168_KEY_POWER + 2158493706 + name 1_168_KEY_CH_UP + 2158493711 + name 1_168_KEY_CH_DOWN + 2158493712 + name 1_168_CH_PREVIOUS + 2158493715 + name 1_168_KEY_DISPLAY + 2158493717 + name 1_168_KEY_EXIT + 2158493720 + name 1_168_KEY_INPUT + 2158493722 + name 1_168_KEY_GUIDE + 2158493723 + name 1_168_KEY_SELECT + 2158493726 + name 1_168_KEY_MENU + 2158493743 + name 1_168_KEY_MUP + 2158493744 + name 1_168_KEY_MDOWN + 2158493745 + name 1_168_KEY_MLEFT + 2158493746 + name 1_168_KEY_MRIGHT + 2158493747 + name 1_169_KEY_0 + 2158559232 + name 1_169_KEY_1 + 2158559233 + name 1_169_KEY_2 + 2158559234 + name 1_169_KEY_3 + 2158559235 + name 1_169_KEY_4 + 2158559236 + name 1_169_KEY_5 + 2158559237 + name 1_169_KEY_6 + 2158559238 + name 1_169_KEY_7 + 2158559239 + name 1_169_KEY_8 + 2158559240 + name 1_169_KEY_9 + 2158559241 + name 1_169_KEY_POWER + 2158559242 + name 1_169_KEY_CH_UP + 2158559247 + name 1_169_KEY_CH_DOWN + 2158559248 + name 1_169_CH_PREVIOUS + 2158559251 + name 1_169_KEY_DISPLAY + 2158559253 + name 1_169_KEY_EXIT + 2158559256 + name 1_169_KEY_INPUT + 2158559258 + name 1_169_KEY_GUIDE + 2158559259 + name 1_169_KEY_MNRETRUN + 2158559264 + name 1_169_KEY_SAT + 2158559274 + name 1_169_KEY_MUP + 2158559280 + name 1_169_KEY_MDOWN + 2158559281 + name 1_169_KEY_MLEFT + 2158559282 + name 1_169_KEY_MRIGHT + 2158559283 + name 1_170_KEY_0 + 2158624768 + name 1_170_KEY_1 + 2158624769 + name 1_170_KEY_2 + 2158624770 + name 1_170_KEY_3 + 2158624771 + name 1_170_KEY_4 + 2158624772 + name 1_170_KEY_5 + 2158624773 + name 1_170_KEY_6 + 2158624774 + name 1_170_KEY_7 + 2158624775 + name 1_170_KEY_8 + 2158624776 + name 1_170_KEY_9 + 2158624777 + name 1_170_KEY_POWER + 2158624778 + name 1_170_KEY_CH_UP + 2158624783 + name 1_170_KEY_CH_DOWN + 2158624784 + name 1_170_KEY_MUTE + 2158624785 + name 1_170_KEY_VOL_DOWN + 2158624786 + name 1_170_CH_PREVIOUS + 2158624787 + name 1_170_KEY_VOL_UP + 2158624788 + name 1_170_KEY_DISPLAY + 2158624789 + name 1_170_KEY_EXIT + 2158624792 + name 1_170_KEY_GUIDE + 2158624795 + name 1_170_KEY_MNRETRUN + 2158624800 + name 1_170_KEY_SAT + 2158624810 + name 1_170_KEY_MENU + 2158624815 + name 1_170_KEY_MUP + 2158624816 + name 1_170_KEY_MDOWN + 2158624817 + name 1_170_KEY_MLEFT + 2158624818 + name 1_170_KEY_MRIGHT + 2158624819 + name 1_171_KEY_0 + 2158690304 + name 1_171_KEY_1 + 2158690305 + name 1_171_KEY_2 + 2158690306 + name 1_171_KEY_3 + 2158690307 + name 1_171_KEY_4 + 2158690308 + name 1_171_KEY_5 + 2158690309 + name 1_171_KEY_6 + 2158690310 + name 1_171_KEY_7 + 2158690311 + name 1_171_KEY_8 + 2158690312 + name 1_171_KEY_9 + 2158690313 + name 1_171_KEY_POWER + 2158690314 + name 1_171_KEY_CH_UP + 2158690319 + name 1_171_KEY_CH_DOWN + 2158690320 + name 1_171_KEY_MUTE + 2158690321 + name 1_171_KEY_VOL_DOWN + 2158690322 + name 1_171_CH_PREVIOUS + 2158690323 + name 1_171_KEY_VOL_UP + 2158690324 + name 1_171_KEY_DISPLAY + 2158690325 + name 1_171_KEY_EXIT + 2158690328 + name 1_171_KEY_INPUT + 2158690330 + name 1_171_KEY_GUIDE + 2158690331 + name 1_171_KEY_MNRETRUN + 2158690336 + name 1_171_KEY_SAT + 2158690346 + name 1_171_KEY_MUP + 2158690352 + name 1_171_KEY_MDOWN + 2158690353 + name 1_171_KEY_MLEFT + 2158690354 + name 1_171_KEY_MRIGHT + 2158690355 + name 1_172_KEY_0 + 2158755840 + name 1_172_KEY_1 + 2158755841 + name 1_172_KEY_2 + 2158755842 + name 1_172_KEY_3 + 2158755843 + name 1_172_KEY_4 + 2158755844 + name 1_172_KEY_5 + 2158755845 + name 1_172_KEY_6 + 2158755846 + name 1_172_KEY_7 + 2158755847 + name 1_172_KEY_8 + 2158755848 + name 1_172_KEY_9 + 2158755849 + name 1_172_KEY_POWER + 2158755850 + name 1_172_KEY_CH_UP + 2158755855 + name 1_172_KEY_CH_DOWN + 2158755856 + name 1_172_KEY_MUTE + 2158755857 + name 1_172_KEY_VOL_DOWN + 2158755858 + name 1_172_CH_PREVIOUS + 2158755859 + name 1_172_KEY_VOL_UP + 2158755860 + name 1_172_KEY_DISPLAY + 2158755861 + name 1_172_KEY_EXIT + 2158755864 + name 1_172_KEY_INPUT + 2158755866 + name 1_172_KEY_GUIDE + 2158755867 + name 1_172_KEY_MNRETRUN + 2158755872 + name 1_172_KEY_SAT + 2158755882 + name 1_172_KEY_MUP + 2158755888 + name 1_172_KEY_MDOWN + 2158755889 + name 1_172_KEY_MLEFT + 2158755890 + name 1_172_KEY_MRIGHT + 2158755891 + name 1_173_KEY_0 + 2158821376 + name 1_173_KEY_1 + 2158821377 + name 1_173_KEY_2 + 2158821378 + name 1_173_KEY_3 + 2158821379 + name 1_173_KEY_4 + 2158821380 + name 1_173_KEY_5 + 2158821381 + name 1_173_KEY_6 + 2158821382 + name 1_173_KEY_7 + 2158821383 + name 1_173_KEY_8 + 2158821384 + name 1_173_KEY_9 + 2158821385 + name 1_173_KEY_POWER + 2158821386 + name 1_173_KEY_CH_UP + 2158821391 + name 1_173_KEY_CH_DOWN + 2158821392 + name 1_173_CH_PREVIOUS + 2158821395 + name 1_173_KEY_DISPLAY + 2158821397 + name 1_173_KEY_EXIT + 2158821400 + name 1_173_KEY_GUIDE + 2158821403 + name 1_173_KEY_MNRETRUN + 2158821408 + name 1_173_KEY_SAT + 2158821418 + name 1_173_KEY_MENU + 2158821423 + name 1_173_KEY_MUP + 2158821424 + name 1_173_KEY_MDOWN + 2158821425 + name 1_173_KEY_MLEFT + 2158821426 + name 1_173_KEY_MRIGHT + 2158821427 + name 1_173_KEY_Help + 2158821440 + name 0_300_KEY_0 + 19660800 + name 0_300_KEY_1 + 19660801 + name 0_300_KEY_2 + 19660802 + name 0_300_KEY_3 + 19660803 + name 0_300_KEY_4 + 19660804 + name 0_300_KEY_5 + 19660805 + name 0_300_KEY_6 + 19660806 + name 0_300_KEY_7 + 19660807 + name 0_300_KEY_8 + 19660808 + name 0_300_KEY_9 + 19660809 + name 0_300_KEY_POWER + 19660810 + name 0_300_KEY_CH_UP + 19660815 + name 0_300_KEY_CH_DOWN + 19660816 + name 0_300_KEY_MUTE + 19660817 + name 0_300_KEY_VOL_DOWN + 19660818 + name 0_300_KEY_VOL_UP + 19660820 + name 0_300_KEY_MENU + 19660847 + name 0_300_KEY_MUP + 19660848 + name 0_300_KEY_MDOWN + 19660849 + name 0_300_KEY_MLEFT + 19660850 + name 0_300_KEY_MRIGHT + 19660851 + name 1_300_KEY_0 + 2167144448 + name 1_300_KEY_1 + 2167144449 + name 1_300_KEY_2 + 2167144450 + name 1_300_KEY_3 + 2167144451 + name 1_300_KEY_4 + 2167144452 + name 1_300_KEY_5 + 2167144453 + name 1_300_KEY_6 + 2167144454 + name 1_300_KEY_7 + 2167144455 + name 1_300_KEY_8 + 2167144456 + name 1_300_KEY_9 + 2167144457 + name 1_300_KEY_POWER + 2167144458 + name 1_300_KEY_CH_UP + 2167144463 + name 1_300_KEY_CH_DOWN + 2167144464 + name 1_300_KEY_MNSELECT + 2167144471 + name 1_300_KEY_MENU + 2167144495 + name 1_300_KEY_MUP + 2167144496 + name 1_300_KEY_MDOWN + 2167144497 + name 1_300_KEY_MLEFT + 2167144498 + name 1_300_KEY_MRIGHT + 2167144499 + name 0_301_KEY_0 + 19726336 + name 0_301_KEY_1 + 19726337 + name 0_301_KEY_2 + 19726338 + name 0_301_KEY_3 + 19726339 + name 0_301_KEY_4 + 19726340 + name 0_301_KEY_5 + 19726341 + name 0_301_KEY_6 + 19726342 + name 0_301_KEY_7 + 19726343 + name 0_301_KEY_8 + 19726344 + name 0_301_KEY_9 + 19726345 + name 0_301_KEY_POWER + 19726346 + name 0_301_KEY_CH_UP + 19726351 + name 0_301_KEY_CH_DOWN + 19726352 + name 0_301_KEY_MUTE + 19726353 + name 0_301_KEY_VOL_DOWN + 19726354 + name 0_301_KEY_VOL_UP + 19726356 + name 0_301_KEY_MENU + 19726383 + name 0_301_KEY_MUP + 19726384 + name 0_301_KEY_MDOWN + 19726385 + name 0_301_KEY_MLEFT + 19726386 + name 0_301_KEY_MRIGHT + 19726387 + name 1_301_KEY_0 + 2167209984 + name 1_301_KEY_1 + 2167209985 + name 1_301_KEY_2 + 2167209986 + name 1_301_KEY_3 + 2167209987 + name 1_301_KEY_4 + 2167209988 + name 1_301_KEY_5 + 2167209989 + name 1_301_KEY_6 + 2167209990 + name 1_301_KEY_7 + 2167209991 + name 1_301_KEY_8 + 2167209992 + name 1_301_KEY_9 + 2167209993 + name 1_301_KEY_POWER + 2167209994 + name 1_301_KEY_CH_UP + 2167209999 + name 1_301_KEY_CH_DOWN + 2167210000 + name 1_301_CH_PREVIOUS + 2167210003 + name 1_301_KEY_MENU + 2167210031 + name 1_301_KEY_MUP + 2167210032 + name 1_301_KEY_MDOWN + 2167210033 + name 1_301_KEY_MLEFT + 2167210034 + name 1_301_KEY_MRIGHT + 2167210035 + name 0_302_KEY_0 + 19791872 + name 0_302_KEY_1 + 19791873 + name 0_302_KEY_2 + 19791874 + name 0_302_KEY_3 + 19791875 + name 0_302_KEY_4 + 19791876 + name 0_302_KEY_5 + 19791877 + name 0_302_KEY_6 + 19791878 + name 0_302_KEY_7 + 19791879 + name 0_302_KEY_8 + 19791880 + name 0_302_KEY_9 + 19791881 + name 0_302_KEY_POWER + 19791882 + name 0_302_KEY_CH_UP + 19791887 + name 0_302_KEY_CH_DOWN + 19791888 + name 0_302_KEY_MUTE + 19791889 + name 0_302_KEY_VOL_DOWN + 19791890 + name 0_302_KEY_VOL_UP + 19791892 + name 0_302_KEY_AV + 19791913 + name 0_302_KEY_MENU + 19791919 + name 0_302_KEY_MUP + 19791920 + name 0_302_KEY_MDOWN + 19791921 + name 0_302_KEY_MLEFT + 19791922 + name 0_302_KEY_MRIGHT + 19791923 + name 1_302_KEY_0 + 2167275520 + name 1_302_KEY_1 + 2167275521 + name 1_302_KEY_2 + 2167275522 + name 1_302_KEY_3 + 2167275523 + name 1_302_KEY_4 + 2167275524 + name 1_302_KEY_5 + 2167275525 + name 1_302_KEY_6 + 2167275526 + name 1_302_KEY_7 + 2167275527 + name 1_302_KEY_8 + 2167275528 + name 1_302_KEY_9 + 2167275529 + name 1_302_KEY_POWER + 2167275530 + name 1_302_KEY_CH_UP + 2167275535 + name 1_302_KEY_CH_DOWN + 2167275536 + name 1_302_CH_PREVIOUS + 2167275539 + name 1_302_KEY_MNSELECT + 2167275543 + name 1_302_KEY_MENU + 2167275567 + name 1_302_KEY_MUP + 2167275568 + name 1_302_KEY_MDOWN + 2167275569 + name 1_302_KEY_MLEFT + 2167275570 + name 1_302_KEY_MRIGHT + 2167275571 + name 0_303_KEY_0 + 19857408 + name 0_303_KEY_1 + 19857409 + name 0_303_KEY_2 + 19857410 + name 0_303_KEY_3 + 19857411 + name 0_303_KEY_4 + 19857412 + name 0_303_KEY_5 + 19857413 + name 0_303_KEY_6 + 19857414 + name 0_303_KEY_7 + 19857415 + name 0_303_KEY_8 + 19857416 + name 0_303_KEY_9 + 19857417 + name 0_303_KEY_POWER + 19857418 + name 0_303_TWO_DIGITS + 19857421 + name 0_303_KEY_CH_UP + 19857423 + name 0_303_KEY_CH_DOWN + 19857424 + name 1_303_KEY_0 + 2167341056 + name 1_303_KEY_1 + 2167341057 + name 1_303_KEY_2 + 2167341058 + name 1_303_KEY_3 + 2167341059 + name 1_303_KEY_4 + 2167341060 + name 1_303_KEY_5 + 2167341061 + name 1_303_KEY_6 + 2167341062 + name 1_303_KEY_7 + 2167341063 + name 1_303_KEY_8 + 2167341064 + name 1_303_KEY_9 + 2167341065 + name 1_303_KEY_POWER + 2167341066 + name 1_303_TWO_DIGITS + 2167341069 + name 1_303_KEY_CH_UP + 2167341071 + name 1_303_KEY_CH_DOWN + 2167341072 + name 1_303_CH_PREVIOUS + 2167341075 + name 1_303_KEY_MNSELECT + 2167341079 + name 1_303_KEY_FAV + 2167341085 + name 1_303_KEY_MENU + 2167341103 + name 1_303_KEY_MUP + 2167341104 + name 1_303_KEY_MDOWN + 2167341105 + name 1_303_KEY_MLEFT + 2167341106 + name 1_303_KEY_MRIGHT + 2167341107 + name 0_304_KEY_0 + 19922944 + name 0_304_KEY_1 + 19922945 + name 0_304_KEY_2 + 19922946 + name 0_304_KEY_3 + 19922947 + name 0_304_KEY_4 + 19922948 + name 0_304_KEY_5 + 19922949 + name 0_304_KEY_6 + 19922950 + name 0_304_KEY_7 + 19922951 + name 0_304_KEY_8 + 19922952 + name 0_304_KEY_9 + 19922953 + name 0_304_KEY_POWER + 19922954 + name 0_304_KEY_CH_UP + 19922959 + name 0_304_KEY_CH_DOWN + 19922960 + name 0_304_CH_PREVIOUS + 19922963 + name 1_304_KEY_0 + 2167406592 + name 1_304_KEY_1 + 2167406593 + name 1_304_KEY_2 + 2167406594 + name 1_304_KEY_3 + 2167406595 + name 1_304_KEY_4 + 2167406596 + name 1_304_KEY_5 + 2167406597 + name 1_304_KEY_6 + 2167406598 + name 1_304_KEY_7 + 2167406599 + name 1_304_KEY_8 + 2167406600 + name 1_304_KEY_9 + 2167406601 + name 1_304_KEY_POWER + 2167406602 + name 1_304_KEY_CH_UP + 2167406607 + name 1_304_KEY_CH_DOWN + 2167406608 + name 1_304_KEY_MNSELECT + 2167406615 + name 1_304_KEY_MENU + 2167406639 + name 1_304_KEY_MUP + 2167406640 + name 1_304_KEY_MDOWN + 2167406641 + name 1_304_KEY_MLEFT + 2167406642 + name 1_304_KEY_MRIGHT + 2167406643 + name 0_305_KEY_0 + 19988480 + name 0_305_KEY_1 + 19988481 + name 0_305_KEY_2 + 19988482 + name 0_305_KEY_3 + 19988483 + name 0_305_KEY_4 + 19988484 + name 0_305_KEY_5 + 19988485 + name 0_305_KEY_6 + 19988486 + name 0_305_KEY_7 + 19988487 + name 0_305_KEY_8 + 19988488 + name 0_305_KEY_9 + 19988489 + name 0_305_KEY_POWER + 19988490 + name 0_305_TWO_DIGITS + 19988493 + name 0_305_KEY_CH_UP + 19988495 + name 0_305_KEY_CH_DOWN + 19988496 + name 0_305_CH_PREVIOUS + 19988499 + name 1_305_KEY_0 + 2167472128 + name 1_305_KEY_1 + 2167472129 + name 1_305_KEY_2 + 2167472130 + name 1_305_KEY_3 + 2167472131 + name 1_305_KEY_4 + 2167472132 + name 1_305_KEY_5 + 2167472133 + name 1_305_KEY_6 + 2167472134 + name 1_305_KEY_7 + 2167472135 + name 1_305_KEY_8 + 2167472136 + name 1_305_KEY_9 + 2167472137 + name 1_305_KEY_POWER + 2167472138 + name 1_305_TWO_DIGITS + 2167472141 + name 1_305_KEY_CH_UP + 2167472143 + name 1_305_KEY_CH_DOWN + 2167472144 + name 1_305_KEY_FAV + 2167472157 + name 0_306_KEY_0 + 20054016 + name 0_306_KEY_1 + 20054017 + name 0_306_KEY_2 + 20054018 + name 0_306_KEY_3 + 20054019 + name 0_306_KEY_4 + 20054020 + name 0_306_KEY_5 + 20054021 + name 0_306_KEY_6 + 20054022 + name 0_306_KEY_7 + 20054023 + name 0_306_KEY_8 + 20054024 + name 0_306_KEY_9 + 20054025 + name 0_306_KEY_POWER + 20054026 + name 0_306_KEY_CH_UP + 20054031 + name 0_306_KEY_CH_DOWN + 20054032 + name 0_306_KEY_AV + 20054057 + name 1_306_KEY_0 + 2167537664 + name 1_306_KEY_1 + 2167537665 + name 1_306_KEY_2 + 2167537666 + name 1_306_KEY_3 + 2167537667 + name 1_306_KEY_4 + 2167537668 + name 1_306_KEY_5 + 2167537669 + name 1_306_KEY_6 + 2167537670 + name 1_306_KEY_7 + 2167537671 + name 1_306_KEY_8 + 2167537672 + name 1_306_KEY_9 + 2167537673 + name 1_306_KEY_POWER + 2167537674 + name 1_306_KEY_CH_UP + 2167537679 + name 1_306_KEY_CH_DOWN + 2167537680 + name 1_306_CH_PREVIOUS + 2167537683 + name 1_306_KEY_MNSELECT + 2167537687 + name 1_306_KEY_MENU + 2167537711 + name 1_306_KEY_MUP + 2167537712 + name 1_306_KEY_MDOWN + 2167537713 + name 1_306_KEY_MLEFT + 2167537714 + name 1_306_KEY_MRIGHT + 2167537715 + name 0_307_KEY_0 + 20119552 + name 0_307_KEY_1 + 20119553 + name 0_307_KEY_2 + 20119554 + name 0_307_KEY_3 + 20119555 + name 0_307_KEY_4 + 20119556 + name 0_307_KEY_5 + 20119557 + name 0_307_KEY_6 + 20119558 + name 0_307_KEY_7 + 20119559 + name 0_307_KEY_8 + 20119560 + name 0_307_KEY_9 + 20119561 + name 0_307_KEY_POWER + 20119562 + name 0_307_KEY_CH_UP + 20119567 + name 0_307_KEY_CH_DOWN + 20119568 + name 0_307_CH_PREVIOUS + 20119571 + name 1_307_KEY_0 + 2167603200 + name 1_307_KEY_1 + 2167603201 + name 1_307_KEY_2 + 2167603202 + name 1_307_KEY_3 + 2167603203 + name 1_307_KEY_4 + 2167603204 + name 1_307_KEY_5 + 2167603205 + name 1_307_KEY_6 + 2167603206 + name 1_307_KEY_7 + 2167603207 + name 1_307_KEY_8 + 2167603208 + name 1_307_KEY_9 + 2167603209 + name 1_307_KEY_POWER + 2167603210 + name 1_307_KEY_CH_UP + 2167603215 + name 1_307_KEY_CH_DOWN + 2167603216 + name 1_307_CH_PREVIOUS + 2167603219 + name 1_307_KEY_MNSELECT + 2167603223 + name 1_307_KEY_MENU + 2167603247 + name 1_307_KEY_MUP + 2167603248 + name 1_307_KEY_MDOWN + 2167603249 + name 1_307_KEY_MLEFT + 2167603250 + name 1_307_KEY_MRIGHT + 2167603251 + name 0_308_KEY_0 + 20185088 + name 0_308_KEY_1 + 20185089 + name 0_308_KEY_2 + 20185090 + name 0_308_KEY_3 + 20185091 + name 0_308_KEY_4 + 20185092 + name 0_308_KEY_5 + 20185093 + name 0_308_KEY_6 + 20185094 + name 0_308_KEY_7 + 20185095 + name 0_308_KEY_8 + 20185096 + name 0_308_KEY_9 + 20185097 + name 0_308_KEY_POWER + 20185098 + name 0_308_TWO_DIGITS + 20185101 + name 0_308_KEY_CH_UP + 20185103 + name 0_308_KEY_CH_DOWN + 20185104 + name 0_308_CH_PREVIOUS + 20185107 + name 1_308_KEY_0 + 2167668736 + name 1_308_KEY_1 + 2167668737 + name 1_308_KEY_2 + 2167668738 + name 1_308_KEY_3 + 2167668739 + name 1_308_KEY_4 + 2167668740 + name 1_308_KEY_5 + 2167668741 + name 1_308_KEY_6 + 2167668742 + name 1_308_KEY_7 + 2167668743 + name 1_308_KEY_8 + 2167668744 + name 1_308_KEY_9 + 2167668745 + name 1_308_KEY_POWER + 2167668746 + name 1_308_KEY_CH_UP + 2167668751 + name 1_308_KEY_CH_DOWN + 2167668752 + name 1_308_KEY_MNSELECT + 2167668759 + name 1_308_KEY_MENU + 2167668783 + name 1_308_KEY_MUP + 2167668784 + name 1_308_KEY_MDOWN + 2167668785 + name 1_308_KEY_MLEFT + 2167668786 + name 1_308_KEY_MRIGHT + 2167668787 + name 1_308_KEY_On + 2167668813 + name 0_309_KEY_0 + 20250624 + name 0_309_KEY_1 + 20250625 + name 0_309_KEY_2 + 20250626 + name 0_309_KEY_3 + 20250627 + name 0_309_KEY_4 + 20250628 + name 0_309_KEY_5 + 20250629 + name 0_309_KEY_6 + 20250630 + name 0_309_KEY_7 + 20250631 + name 0_309_KEY_8 + 20250632 + name 0_309_KEY_9 + 20250633 + name 0_309_KEY_POWER + 20250634 + name 0_309_KEY_CH_UP + 20250639 + name 0_309_KEY_CH_DOWN + 20250640 + name 1_309_KEY_0 + 2167734272 + name 1_309_KEY_1 + 2167734273 + name 1_309_KEY_2 + 2167734274 + name 1_309_KEY_3 + 2167734275 + name 1_309_KEY_4 + 2167734276 + name 1_309_KEY_5 + 2167734277 + name 1_309_KEY_6 + 2167734278 + name 1_309_KEY_7 + 2167734279 + name 1_309_KEY_8 + 2167734280 + name 1_309_KEY_9 + 2167734281 + name 1_309_KEY_POWER + 2167734282 + name 1_309_KEY_CH_UP + 2167734287 + name 1_309_KEY_CH_DOWN + 2167734288 + name 1_309_KEY_MNSELECT + 2167734295 + name 1_309_KEY_MENU + 2167734319 + name 1_309_KEY_MUP + 2167734320 + name 1_309_KEY_MDOWN + 2167734321 + name 1_309_KEY_MLEFT + 2167734322 + name 1_309_KEY_MRIGHT + 2167734323 + name 1_309_KEY_On + 2167734349 + name 0_310_KEY_0 + 20316160 + name 0_310_KEY_1 + 20316161 + name 0_310_KEY_2 + 20316162 + name 0_310_KEY_3 + 20316163 + name 0_310_KEY_4 + 20316164 + name 0_310_KEY_5 + 20316165 + name 0_310_KEY_6 + 20316166 + name 0_310_KEY_7 + 20316167 + name 0_310_KEY_8 + 20316168 + name 0_310_KEY_9 + 20316169 + name 0_310_KEY_POWER + 20316170 + name 0_310_TWO_DIGITS + 20316173 + name 0_310_KEY_CH_UP + 20316175 + name 0_310_KEY_CH_DOWN + 20316176 + name 1_310_KEY_0 + 2167799808 + name 1_310_KEY_1 + 2167799809 + name 1_310_KEY_2 + 2167799810 + name 1_310_KEY_3 + 2167799811 + name 1_310_KEY_4 + 2167799812 + name 1_310_KEY_5 + 2167799813 + name 1_310_KEY_6 + 2167799814 + name 1_310_KEY_7 + 2167799815 + name 1_310_KEY_8 + 2167799816 + name 1_310_KEY_9 + 2167799817 + name 1_310_KEY_POWER + 2167799818 + name 1_310_KEY_CH_UP + 2167799823 + name 1_310_KEY_CH_DOWN + 2167799824 + name 1_310_KEY_MNSELECT + 2167799831 + name 1_310_KEY_MENU + 2167799855 + name 1_310_KEY_MUP + 2167799856 + name 1_310_KEY_MDOWN + 2167799857 + name 1_310_KEY_MLEFT + 2167799858 + name 1_310_KEY_MRIGHT + 2167799859 + name 1_310_KEY_On + 2167799885 + name 0_311_KEY_0 + 20381696 + name 0_311_KEY_1 + 20381697 + name 0_311_KEY_2 + 20381698 + name 0_311_KEY_3 + 20381699 + name 0_311_KEY_4 + 20381700 + name 0_311_KEY_5 + 20381701 + name 0_311_KEY_6 + 20381702 + name 0_311_KEY_7 + 20381703 + name 0_311_KEY_8 + 20381704 + name 0_311_KEY_9 + 20381705 + name 0_311_KEY_POWER + 20381706 + name 0_311_KEY_CH_UP + 20381711 + name 0_311_KEY_CH_DOWN + 20381712 + name 1_311_KEY_0 + 2167865344 + name 1_311_KEY_1 + 2167865345 + name 1_311_KEY_2 + 2167865346 + name 1_311_KEY_3 + 2167865347 + name 1_311_KEY_4 + 2167865348 + name 1_311_KEY_5 + 2167865349 + name 1_311_KEY_6 + 2167865350 + name 1_311_KEY_7 + 2167865351 + name 1_311_KEY_8 + 2167865352 + name 1_311_KEY_9 + 2167865353 + name 1_311_KEY_POWER + 2167865354 + name 1_311_KEY_CH_UP + 2167865359 + name 1_311_KEY_CH_DOWN + 2167865360 + name 1_311_CH_PREVIOUS + 2167865363 + name 1_311_KEY_MENU + 2167865391 + name 1_311_KEY_MUP + 2167865392 + name 1_311_KEY_MDOWN + 2167865393 + name 1_311_KEY_MLEFT + 2167865394 + name 1_311_KEY_MRIGHT + 2167865395 + name 0_312_KEY_0 + 20447232 + name 0_312_KEY_1 + 20447233 + name 0_312_KEY_2 + 20447234 + name 0_312_KEY_3 + 20447235 + name 0_312_KEY_4 + 20447236 + name 0_312_KEY_5 + 20447237 + name 0_312_KEY_6 + 20447238 + name 0_312_KEY_7 + 20447239 + name 0_312_KEY_8 + 20447240 + name 0_312_KEY_9 + 20447241 + name 0_312_KEY_POWER + 20447242 + name 0_312_TWO_DIGITS + 20447245 + name 0_312_KEY_CH_UP + 20447247 + name 0_312_KEY_CH_DOWN + 20447248 + name 1_312_KEY_0 + 2167930880 + name 1_312_KEY_1 + 2167930881 + name 1_312_KEY_2 + 2167930882 + name 1_312_KEY_3 + 2167930883 + name 1_312_KEY_4 + 2167930884 + name 1_312_KEY_5 + 2167930885 + name 1_312_KEY_6 + 2167930886 + name 1_312_KEY_7 + 2167930887 + name 1_312_KEY_8 + 2167930888 + name 1_312_KEY_9 + 2167930889 + name 1_312_KEY_POWER + 2167930890 + name 1_312_KEY_CH_UP + 2167930895 + name 1_312_KEY_CH_DOWN + 2167930896 + name 1_312_KEY_MNSELECT + 2167930903 + name 1_312_KEY_MENU + 2167930927 + name 1_312_KEY_MUP + 2167930928 + name 1_312_KEY_MDOWN + 2167930929 + name 1_312_KEY_MLEFT + 2167930930 + name 1_312_KEY_MRIGHT + 2167930931 + name 0_313_KEY_0 + 20512768 + name 0_313_KEY_1 + 20512769 + name 0_313_KEY_2 + 20512770 + name 0_313_KEY_3 + 20512771 + name 0_313_KEY_4 + 20512772 + name 0_313_KEY_5 + 20512773 + name 0_313_KEY_6 + 20512774 + name 0_313_KEY_7 + 20512775 + name 0_313_KEY_8 + 20512776 + name 0_313_KEY_9 + 20512777 + name 0_313_KEY_POWER + 20512778 + name 0_313_KEY_CH_UP + 20512783 + name 0_313_KEY_CH_DOWN + 20512784 + name 0_313_KEY_MUTE + 20512785 + name 0_313_KEY_VOL_DOWN + 20512786 + name 0_313_CH_PREVIOUS + 20512787 + name 0_313_KEY_VOL_UP + 20512788 + name 0_313_KEY_Sleep + 20512831 + name 1_313_KEY_0 + 2167996416 + name 1_313_KEY_1 + 2167996417 + name 1_313_KEY_2 + 2167996418 + name 1_313_KEY_3 + 2167996419 + name 1_313_KEY_4 + 2167996420 + name 1_313_KEY_5 + 2167996421 + name 1_313_KEY_6 + 2167996422 + name 1_313_KEY_7 + 2167996423 + name 1_313_KEY_8 + 2167996424 + name 1_313_KEY_9 + 2167996425 + name 1_313_KEY_POWER + 2167996426 + name 1_313_KEY_CH_UP + 2167996431 + name 1_313_KEY_CH_DOWN + 2167996432 + name 1_313_CH_PREVIOUS + 2167996435 + name 1_313_KEY_MNSELECT + 2167996439 + name 1_313_KEY_EXIT + 2167996440 + name 1_313_KEY_GUIDE + 2167996443 + name 1_313_KEY_AV + 2167996457 + name 1_313_KEY_MENU + 2167996463 + name 1_313_KEY_MUP + 2167996464 + name 1_313_KEY_MDOWN + 2167996465 + name 1_313_KEY_MLEFT + 2167996466 + name 1_313_KEY_MRIGHT + 2167996467 + name 0_314_KEY_0 + 20578304 + name 0_314_KEY_1 + 20578305 + name 0_314_KEY_2 + 20578306 + name 0_314_KEY_3 + 20578307 + name 0_314_KEY_4 + 20578308 + name 0_314_KEY_5 + 20578309 + name 0_314_KEY_6 + 20578310 + name 0_314_KEY_7 + 20578311 + name 0_314_KEY_8 + 20578312 + name 0_314_KEY_9 + 20578313 + name 0_314_KEY_POWER + 20578314 + name 0_314_KEY_CH_UP + 20578319 + name 0_314_KEY_CH_DOWN + 20578320 + name 0_314_CH_PREVIOUS + 20578323 + name 1_314_KEY_0 + 2168061952 + name 1_314_KEY_1 + 2168061953 + name 1_314_KEY_2 + 2168061954 + name 1_314_KEY_3 + 2168061955 + name 1_314_KEY_4 + 2168061956 + name 1_314_KEY_5 + 2168061957 + name 1_314_KEY_6 + 2168061958 + name 1_314_KEY_7 + 2168061959 + name 1_314_KEY_8 + 2168061960 + name 1_314_KEY_9 + 2168061961 + name 1_314_KEY_POWER + 2168061962 + name 1_314_KEY_CH_UP + 2168061967 + name 1_314_KEY_CH_DOWN + 2168061968 + name 1_314_CH_PREVIOUS + 2168061971 + name 1_314_KEY_MNSELECT + 2168061975 + name 1_314_KEY_EXIT + 2168061976 + name 1_314_KEY_GUIDE + 2168061979 + name 1_314_KEY_AV + 2168061993 + name 1_314_KEY_MENU + 2168061999 + name 1_314_KEY_MUP + 2168062000 + name 1_314_KEY_MDOWN + 2168062001 + name 1_314_KEY_MLEFT + 2168062002 + name 1_314_KEY_MRIGHT + 2168062003 + name 0_315_KEY_0 + 20643840 + name 0_315_KEY_1 + 20643841 + name 0_315_KEY_2 + 20643842 + name 0_315_KEY_3 + 20643843 + name 0_315_KEY_4 + 20643844 + name 0_315_KEY_5 + 20643845 + name 0_315_KEY_6 + 20643846 + name 0_315_KEY_7 + 20643847 + name 0_315_KEY_8 + 20643848 + name 0_315_KEY_9 + 20643849 + name 0_315_KEY_POWER + 20643850 + name 0_315_KEY_CH_UP + 20643855 + name 0_315_KEY_CH_DOWN + 20643856 + name 1_315_KEY_0 + 2168127488 + name 1_315_KEY_1 + 2168127489 + name 1_315_KEY_2 + 2168127490 + name 1_315_KEY_3 + 2168127491 + name 1_315_KEY_4 + 2168127492 + name 1_315_KEY_5 + 2168127493 + name 1_315_KEY_6 + 2168127494 + name 1_315_KEY_7 + 2168127495 + name 1_315_KEY_8 + 2168127496 + name 1_315_KEY_9 + 2168127497 + name 1_315_KEY_POWER + 2168127498 + name 1_315_KEY_CH_UP + 2168127503 + name 1_315_KEY_CH_DOWN + 2168127504 + name 1_315_CH_PREVIOUS + 2168127507 + name 1_315_KEY_MNSELECT + 2168127511 + name 1_315_KEY_EXIT + 2168127512 + name 1_315_KEY_GUIDE + 2168127515 + name 1_315_KEY_AV + 2168127529 + name 1_315_KEY_MENU + 2168127535 + name 1_315_KEY_MUP + 2168127536 + name 1_315_KEY_MDOWN + 2168127537 + name 1_315_KEY_MLEFT + 2168127538 + name 1_315_KEY_MRIGHT + 2168127539 + name 0_316_KEY_0 + 20709376 + name 0_316_KEY_1 + 20709377 + name 0_316_KEY_2 + 20709378 + name 0_316_KEY_3 + 20709379 + name 0_316_KEY_4 + 20709380 + name 0_316_KEY_5 + 20709381 + name 0_316_KEY_6 + 20709382 + name 0_316_KEY_7 + 20709383 + name 0_316_KEY_8 + 20709384 + name 0_316_KEY_9 + 20709385 + name 0_316_KEY_POWER + 20709386 + name 0_316_KEY_CH_UP + 20709391 + name 0_316_KEY_CH_DOWN + 20709392 + name 1_316_KEY_0 + 2168193024 + name 1_316_KEY_1 + 2168193025 + name 1_316_KEY_2 + 2168193026 + name 1_316_KEY_3 + 2168193027 + name 1_316_KEY_4 + 2168193028 + name 1_316_KEY_5 + 2168193029 + name 1_316_KEY_6 + 2168193030 + name 1_316_KEY_7 + 2168193031 + name 1_316_KEY_8 + 2168193032 + name 1_316_KEY_9 + 2168193033 + name 1_316_KEY_POWER + 2168193034 + name 1_316_KEY_CH_UP + 2168193039 + name 1_316_KEY_CH_DOWN + 2168193040 + name 1_316_CH_PREVIOUS + 2168193043 + name 1_316_KEY_MNSELECT + 2168193047 + name 1_316_KEY_EXIT + 2168193048 + name 1_316_KEY_GUIDE + 2168193051 + name 1_316_KEY_AV + 2168193065 + name 1_316_KEY_MENU + 2168193071 + name 1_316_KEY_MUP + 2168193072 + name 1_316_KEY_MDOWN + 2168193073 + name 1_316_KEY_MLEFT + 2168193074 + name 1_316_KEY_MRIGHT + 2168193075 + name 0_317_KEY_0 + 20774912 + name 0_317_KEY_1 + 20774913 + name 0_317_KEY_2 + 20774914 + name 0_317_KEY_3 + 20774915 + name 0_317_KEY_4 + 20774916 + name 0_317_KEY_5 + 20774917 + name 0_317_KEY_6 + 20774918 + name 0_317_KEY_7 + 20774919 + name 0_317_KEY_8 + 20774920 + name 0_317_KEY_9 + 20774921 + name 0_317_KEY_POWER + 20774922 + name 0_317_KEY_CH_UP + 20774927 + name 0_317_KEY_CH_DOWN + 20774928 + name 0_317_CH_PREVIOUS + 20774931 + name 1_317_KEY_0 + 2168258560 + name 1_317_KEY_1 + 2168258561 + name 1_317_KEY_2 + 2168258562 + name 1_317_KEY_3 + 2168258563 + name 1_317_KEY_4 + 2168258564 + name 1_317_KEY_5 + 2168258565 + name 1_317_KEY_6 + 2168258566 + name 1_317_KEY_7 + 2168258567 + name 1_317_KEY_8 + 2168258568 + name 1_317_KEY_9 + 2168258569 + name 1_317_KEY_POWER + 2168258570 + name 1_317_TWO_DIGITS + 2168258573 + name 1_317_KEY_CH_UP + 2168258575 + name 1_317_KEY_CH_DOWN + 2168258576 + name 1_317_KEY_MUTE + 2168258577 + name 1_317_KEY_VOL_DOWN + 2168258578 + name 1_317_KEY_VOL_UP + 2168258580 + name 1_317_KEY_DISPLAY + 2168258581 + name 1_317_KEY_MNSELECT + 2168258583 + name 1_317_KEY_EXIT + 2168258584 + name 1_317_KEY_MENU + 2168258607 + name 1_317_KEY_MUP + 2168258608 + name 1_317_KEY_MDOWN + 2168258609 + name 1_317_KEY_MLEFT + 2168258610 + name 1_317_KEY_MRIGHT + 2168258611 + name 0_318_KEY_0 + 20840448 + name 0_318_KEY_1 + 20840449 + name 0_318_KEY_2 + 20840450 + name 0_318_KEY_3 + 20840451 + name 0_318_KEY_4 + 20840452 + name 0_318_KEY_5 + 20840453 + name 0_318_KEY_6 + 20840454 + name 0_318_KEY_7 + 20840455 + name 0_318_KEY_8 + 20840456 + name 0_318_KEY_9 + 20840457 + name 0_318_KEY_POWER + 20840458 + name 0_318_KEY_CH_UP + 20840463 + name 0_318_KEY_CH_DOWN + 20840464 + name 0_318_KEY_MUTE + 20840465 + name 0_318_KEY_VOL_DOWN + 20840466 + name 0_318_CH_PREVIOUS + 20840467 + name 0_318_KEY_VOL_UP + 20840468 + name 0_318_KEY_AV + 20840489 + name 1_318_KEY_0 + 2168324096 + name 1_318_KEY_1 + 2168324097 + name 1_318_KEY_2 + 2168324098 + name 1_318_KEY_3 + 2168324099 + name 1_318_KEY_4 + 2168324100 + name 1_318_KEY_5 + 2168324101 + name 1_318_KEY_6 + 2168324102 + name 1_318_KEY_7 + 2168324103 + name 1_318_KEY_8 + 2168324104 + name 1_318_KEY_9 + 2168324105 + name 1_318_KEY_POWER + 2168324106 + name 1_318_POWER_OFF + 2168324108 + name 1_318_TWO_DIGITS + 2168324109 + name 1_318_KEY_CH_UP + 2168324111 + name 1_318_KEY_CH_DOWN + 2168324112 + name 1_318_KEY_DISPLAY + 2168324117 + name 1_318_KEY_TIMER + 2168324140 + name 0_319_KEY_0 + 20905984 + name 0_319_KEY_1 + 20905985 + name 0_319_KEY_2 + 20905986 + name 0_319_KEY_3 + 20905987 + name 0_319_KEY_4 + 20905988 + name 0_319_KEY_5 + 20905989 + name 0_319_KEY_6 + 20905990 + name 0_319_KEY_7 + 20905991 + name 0_319_KEY_8 + 20905992 + name 0_319_KEY_9 + 20905993 + name 0_319_KEY_POWER + 20905994 + name 0_319_KEY_CH_UP + 20905999 + name 0_319_KEY_CH_DOWN + 20906000 + name 0_319_CH_PREVIOUS + 20906003 + name 1_319_KEY_0 + 2168389632 + name 1_319_KEY_1 + 2168389633 + name 1_319_KEY_2 + 2168389634 + name 1_319_KEY_3 + 2168389635 + name 1_319_KEY_4 + 2168389636 + name 1_319_KEY_5 + 2168389637 + name 1_319_KEY_6 + 2168389638 + name 1_319_KEY_7 + 2168389639 + name 1_319_KEY_8 + 2168389640 + name 1_319_KEY_9 + 2168389641 + name 1_319_KEY_POWER + 2168389642 + name 1_319_TWO_DIGITS + 2168389645 + name 1_319_KEY_CH_UP + 2168389647 + name 1_319_KEY_CH_DOWN + 2168389648 + name 1_319_KEY_MUTE + 2168389649 + name 1_319_KEY_VOL_DOWN + 2168389650 + name 1_319_CH_PREVIOUS + 2168389651 + name 1_319_KEY_VOL_UP + 2168389652 + name 1_319_KEY_FAV + 2168389661 + name 1_319_KEY_FTUNEPLUS + 2168389665 + name 1_319_KEY_FTUNEMINUS + 2168389666 + name 0_320_KEY_0 + 20971520 + name 0_320_KEY_1 + 20971521 + name 0_320_KEY_2 + 20971522 + name 0_320_KEY_3 + 20971523 + name 0_320_KEY_4 + 20971524 + name 0_320_KEY_5 + 20971525 + name 0_320_KEY_6 + 20971526 + name 0_320_KEY_7 + 20971527 + name 0_320_KEY_8 + 20971528 + name 0_320_KEY_9 + 20971529 + name 0_320_KEY_POWER + 20971530 + name 0_320_TWO_DIGITS + 20971533 + name 0_320_KEY_CH_UP + 20971535 + name 0_320_KEY_CH_DOWN + 20971536 + name 0_320_KEY_MNSELECT + 20971543 + name 0_320_KEY_MENU + 20971567 + name 0_320_KEY_MUP + 20971568 + name 0_320_KEY_MDOWN + 20971569 + name 0_320_KEY_MLEFT + 20971570 + name 0_320_KEY_MRIGHT + 20971571 + name 1_320_KEY_0 + 2168455168 + name 1_320_KEY_1 + 2168455169 + name 1_320_KEY_2 + 2168455170 + name 1_320_KEY_3 + 2168455171 + name 1_320_KEY_4 + 2168455172 + name 1_320_KEY_5 + 2168455173 + name 1_320_KEY_6 + 2168455174 + name 1_320_KEY_7 + 2168455175 + name 1_320_KEY_8 + 2168455176 + name 1_320_KEY_9 + 2168455177 + name 1_320_KEY_POWER + 2168455178 + name 1_320_TWO_DIGITS + 2168455181 + name 1_320_KEY_CH_UP + 2168455183 + name 1_320_KEY_CH_DOWN + 2168455184 + name 1_320_KEY_MUTE + 2168455185 + name 1_320_KEY_VOL_DOWN + 2168455186 + name 1_320_CH_PREVIOUS + 2168455187 + name 1_320_KEY_VOL_UP + 2168455188 + name 1_320_KEY_FAV + 2168455197 + name 1_320_KEY_FTUNEPLUS + 2168455201 + name 1_320_KEY_FTUNEMINUS + 2168455202 + name 0_321_KEY_0 + 21037056 + name 0_321_KEY_1 + 21037057 + name 0_321_KEY_2 + 21037058 + name 0_321_KEY_3 + 21037059 + name 0_321_KEY_4 + 21037060 + name 0_321_KEY_5 + 21037061 + name 0_321_KEY_6 + 21037062 + name 0_321_KEY_7 + 21037063 + name 0_321_KEY_8 + 21037064 + name 0_321_KEY_9 + 21037065 + name 0_321_KEY_POWER + 21037066 + name 0_321_KEY_CH_UP + 21037071 + name 0_321_KEY_CH_DOWN + 21037072 + name 0_321_KEY_MUTE + 21037073 + name 0_321_KEY_VOL_DOWN + 21037074 + name 0_321_KEY_VOL_UP + 21037076 + name 0_321_KEY_AV + 21037097 + name 0_321_KEY_MENU + 21037103 + name 0_321_KEY_MUP + 21037104 + name 0_321_KEY_MDOWN + 21037105 + name 0_321_KEY_MLEFT + 21037106 + name 0_321_KEY_MRIGHT + 21037107 + name 1_321_KEY_0 + 2168520704 + name 1_321_KEY_1 + 2168520705 + name 1_321_KEY_2 + 2168520706 + name 1_321_KEY_3 + 2168520707 + name 1_321_KEY_4 + 2168520708 + name 1_321_KEY_5 + 2168520709 + name 1_321_KEY_6 + 2168520710 + name 1_321_KEY_7 + 2168520711 + name 1_321_KEY_8 + 2168520712 + name 1_321_KEY_9 + 2168520713 + name 1_321_KEY_POWER + 2168520714 + name 1_321_TWO_DIGITS + 2168520717 + name 1_321_KEY_CH_UP + 2168520719 + name 1_321_KEY_CH_DOWN + 2168520720 + name 1_321_CH_PREVIOUS + 2168520723 + name 0_322_KEY_0 + 21102592 + name 0_322_KEY_1 + 21102593 + name 0_322_KEY_2 + 21102594 + name 0_322_KEY_3 + 21102595 + name 0_322_KEY_4 + 21102596 + name 0_322_KEY_5 + 21102597 + name 0_322_KEY_6 + 21102598 + name 0_322_KEY_7 + 21102599 + name 0_322_KEY_8 + 21102600 + name 0_322_KEY_9 + 21102601 + name 0_322_KEY_POWER + 21102602 + name 0_322_KEY_CH_UP + 21102607 + name 0_322_KEY_CH_DOWN + 21102608 + name 0_322_KEY_MUTE + 21102609 + name 0_322_KEY_VOL_DOWN + 21102610 + name 0_322_CH_PREVIOUS + 21102611 + name 0_322_KEY_VOL_UP + 21102612 + name 0_322_KEY_MNSELECT + 21102615 + name 0_322_KEY_MUP + 21102640 + name 0_322_KEY_MDOWN + 21102641 + name 1_322_KEY_0 + 2168586240 + name 1_322_KEY_1 + 2168586241 + name 1_322_KEY_2 + 2168586242 + name 1_322_KEY_3 + 2168586243 + name 1_322_KEY_4 + 2168586244 + name 1_322_KEY_5 + 2168586245 + name 1_322_KEY_6 + 2168586246 + name 1_322_KEY_7 + 2168586247 + name 1_322_KEY_8 + 2168586248 + name 1_322_KEY_9 + 2168586249 + name 1_322_KEY_POWER + 2168586250 + name 1_322_TWO_DIGITS + 2168586253 + name 1_322_KEY_CH_UP + 2168586255 + name 1_322_KEY_CH_DOWN + 2168586256 + name 1_322_KEY_MUTE + 2168586257 + name 1_322_KEY_VOL_DOWN + 2168586258 + name 1_322_KEY_VOL_UP + 2168586260 + name 1_322_KEY_FTUNEPLUS + 2168586273 + name 1_322_KEY_FTUNEMINUS + 2168586274 + name 0_323_KEY_0 + 21168128 + name 0_323_KEY_1 + 21168129 + name 0_323_KEY_2 + 21168130 + name 0_323_KEY_3 + 21168131 + name 0_323_KEY_4 + 21168132 + name 0_323_KEY_5 + 21168133 + name 0_323_KEY_6 + 21168134 + name 0_323_KEY_7 + 21168135 + name 0_323_KEY_8 + 21168136 + name 0_323_KEY_9 + 21168137 + name 0_323_KEY_POWER + 21168138 + name 0_323_KEY_CH_UP + 21168143 + name 0_323_KEY_CH_DOWN + 21168144 + name 0_323_KEY_MUTE + 21168145 + name 0_323_KEY_VOL_DOWN + 21168146 + name 0_323_KEY_VOL_UP + 21168148 + name 0_323_KEY_AV + 21168169 + name 0_323_KEY_MUP + 21168176 + name 0_323_KEY_MDOWN + 21168177 + name 1_323_KEY_0 + 2168651776 + name 1_323_KEY_1 + 2168651777 + name 1_323_KEY_2 + 2168651778 + name 1_323_KEY_3 + 2168651779 + name 1_323_KEY_4 + 2168651780 + name 1_323_KEY_5 + 2168651781 + name 1_323_KEY_6 + 2168651782 + name 1_323_KEY_7 + 2168651783 + name 1_323_KEY_8 + 2168651784 + name 1_323_KEY_9 + 2168651785 + name 1_323_KEY_POWER + 2168651786 + name 1_323_TWO_DIGITS + 2168651789 + name 1_323_KEY_CH_UP + 2168651791 + name 1_323_KEY_CH_DOWN + 2168651792 + name 1_323_KEY_MUTE + 2168651793 + name 1_323_KEY_VOL_DOWN + 2168651794 + name 1_323_KEY_VOL_UP + 2168651796 + name 1_323_KEY_DISPLAY + 2168651797 + name 1_323_KEY_FTUNEPLUS + 2168651809 + name 1_323_KEY_FTUNEMINUS + 2168651810 + name 0_324_KEY_0 + 21233664 + name 0_324_KEY_1 + 21233665 + name 0_324_KEY_2 + 21233666 + name 0_324_KEY_3 + 21233667 + name 0_324_KEY_4 + 21233668 + name 0_324_KEY_5 + 21233669 + name 0_324_KEY_6 + 21233670 + name 0_324_KEY_7 + 21233671 + name 0_324_KEY_8 + 21233672 + name 0_324_KEY_9 + 21233673 + name 0_324_KEY_POWER + 21233674 + name 0_324_KEY_CH_UP + 21233679 + name 0_324_KEY_CH_DOWN + 21233680 + name 0_324_KEY_MUTE + 21233681 + name 0_324_KEY_VOL_DOWN + 21233682 + name 0_324_CH_PREVIOUS + 21233683 + name 0_324_KEY_VOL_UP + 21233684 + name 0_324_KEY_MNSELECT + 21233687 + name 0_324_KEY_MENU + 21233711 + name 0_324_KEY_MUP + 21233712 + name 0_324_KEY_MDOWN + 21233713 + name 0_324_KEY_MLEFT + 21233714 + name 0_324_KEY_MRIGHT + 21233715 + name 1_324_KEY_0 + 2168717312 + name 1_324_KEY_1 + 2168717313 + name 1_324_KEY_2 + 2168717314 + name 1_324_KEY_3 + 2168717315 + name 1_324_KEY_4 + 2168717316 + name 1_324_KEY_5 + 2168717317 + name 1_324_KEY_6 + 2168717318 + name 1_324_KEY_7 + 2168717319 + name 1_324_KEY_8 + 2168717320 + name 1_324_KEY_9 + 2168717321 + name 1_324_KEY_POWER + 2168717322 + name 1_324_TWO_DIGITS + 2168717325 + name 1_324_KEY_CH_UP + 2168717327 + name 1_324_KEY_CH_DOWN + 2168717328 + name 1_324_KEY_VOL_DOWN + 2168717330 + name 1_324_KEY_VOL_UP + 2168717332 + name 1_324_KEY_BLUE + 2168717347 + name 1_324_KEY_GREEN + 2168717348 + name 1_324_KEY_RED + 2168717349 + name 1_324_KEY_YELLOW + 2168717350 + name 1_324_KEY_TTOnOff + 2168717385 + name 0_325_KEY_0 + 21299200 + name 0_325_KEY_1 + 21299201 + name 0_325_KEY_2 + 21299202 + name 0_325_KEY_3 + 21299203 + name 0_325_KEY_4 + 21299204 + name 0_325_KEY_5 + 21299205 + name 0_325_KEY_6 + 21299206 + name 0_325_KEY_7 + 21299207 + name 0_325_KEY_8 + 21299208 + name 0_325_KEY_9 + 21299209 + name 0_325_KEY_POWER + 21299210 + name 0_325_KEY_CH_UP + 21299215 + name 0_325_KEY_CH_DOWN + 21299216 + name 0_325_KEY_MUTE + 21299217 + name 0_325_KEY_VOL_DOWN + 21299218 + name 0_325_KEY_VOL_UP + 21299220 + name 0_325_KEY_MNSELECT + 21299223 + name 0_325_KEY_AV + 21299241 + name 0_325_KEY_MUP + 21299248 + name 0_325_KEY_MDOWN + 21299249 + name 0_325_KEY_MLEFT + 21299250 + name 0_325_KEY_MRIGHT + 21299251 + name 1_325_KEY_0 + 2168782848 + name 1_325_KEY_1 + 2168782849 + name 1_325_KEY_2 + 2168782850 + name 1_325_KEY_3 + 2168782851 + name 1_325_KEY_4 + 2168782852 + name 1_325_KEY_5 + 2168782853 + name 1_325_KEY_6 + 2168782854 + name 1_325_KEY_7 + 2168782855 + name 1_325_KEY_8 + 2168782856 + name 1_325_KEY_9 + 2168782857 + name 1_325_KEY_POWER + 2168782858 + name 1_325_TWO_DIGITS + 2168782861 + name 1_325_KEY_CH_UP + 2168782863 + name 1_325_KEY_CH_DOWN + 2168782864 + name 1_325_KEY_MUTE + 2168782865 + name 1_325_KEY_FTUNEPLUS + 2168782881 + name 1_325_KEY_FTUNEMINUS + 2168782882 + name 1_326_KEY_0 + 2168848384 + name 1_326_KEY_1 + 2168848385 + name 1_326_KEY_2 + 2168848386 + name 1_326_KEY_3 + 2168848387 + name 1_326_KEY_4 + 2168848388 + name 1_326_KEY_5 + 2168848389 + name 1_326_KEY_6 + 2168848390 + name 1_326_KEY_7 + 2168848391 + name 1_326_KEY_8 + 2168848392 + name 1_326_KEY_9 + 2168848393 + name 1_326_KEY_POWER + 2168848394 + name 1_326_KEY_MUTE + 2168848401 + name 1_326_KEY_VOL_DOWN + 2168848402 + name 1_326_CH_PREVIOUS + 2168848403 + name 1_326_KEY_VOL_UP + 2168848404 + name 1_328_KEY_0 + 2168979456 + name 1_328_KEY_1 + 2168979457 + name 1_328_KEY_2 + 2168979458 + name 1_328_KEY_3 + 2168979459 + name 1_328_KEY_4 + 2168979460 + name 1_328_KEY_5 + 2168979461 + name 1_328_KEY_6 + 2168979462 + name 1_328_KEY_7 + 2168979463 + name 1_328_KEY_8 + 2168979464 + name 1_328_KEY_9 + 2168979465 + name 1_328_KEY_POWER + 2168979466 + name 1_328_TWO_DIGITS + 2168979469 + name 1_328_KEY_CH_UP + 2168979471 + name 1_328_KEY_CH_DOWN + 2168979472 + name 1_329_KEY_0 + 2169044992 + name 1_329_KEY_1 + 2169044993 + name 1_329_KEY_2 + 2169044994 + name 1_329_KEY_3 + 2169044995 + name 1_329_KEY_4 + 2169044996 + name 1_329_KEY_5 + 2169044997 + name 1_329_KEY_6 + 2169044998 + name 1_329_KEY_7 + 2169044999 + name 1_329_KEY_8 + 2169045000 + name 1_329_KEY_9 + 2169045001 + name 1_329_KEY_POWER + 2169045002 + name 1_329_TWO_DIGITS + 2169045005 + name 1_329_KEY_CH_UP + 2169045007 + name 1_329_KEY_CH_DOWN + 2169045008 + name 1_329_KEY_FAV + 2169045021 + name 1_329_KEY_FTUNEPLUS + 2169045025 + name 1_329_KEY_FTUNEMINUS + 2169045026 + name 1_330_KEY_0 + 2169110528 + name 1_330_KEY_1 + 2169110529 + name 1_330_KEY_2 + 2169110530 + name 1_330_KEY_3 + 2169110531 + name 1_330_KEY_4 + 2169110532 + name 1_330_KEY_5 + 2169110533 + name 1_330_KEY_6 + 2169110534 + name 1_330_KEY_7 + 2169110535 + name 1_330_KEY_8 + 2169110536 + name 1_330_KEY_9 + 2169110537 + name 1_330_KEY_POWER + 2169110538 + name 1_330_TWO_DIGITS + 2169110541 + name 1_330_KEY_CH_UP + 2169110543 + name 1_330_KEY_CH_DOWN + 2169110544 + name 1_330_KEY_MUTE + 2169110545 + name 1_330_KEY_VOL_DOWN + 2169110546 + name 1_330_KEY_VOL_UP + 2169110548 + name 1_330_KEY_DISPLAY + 2169110549 + name 1_330_KEY_FAV + 2169110557 + name 1_330_KEY_TIMER + 2169110572 + name 1_331_KEY_0 + 2169176064 + name 1_331_KEY_1 + 2169176065 + name 1_331_KEY_2 + 2169176066 + name 1_331_KEY_3 + 2169176067 + name 1_331_KEY_4 + 2169176068 + name 1_331_KEY_5 + 2169176069 + name 1_331_KEY_6 + 2169176070 + name 1_331_KEY_7 + 2169176071 + name 1_331_KEY_8 + 2169176072 + name 1_331_KEY_9 + 2169176073 + name 1_331_KEY_POWER + 2169176074 + name 1_331_TWO_DIGITS + 2169176077 + name 1_331_KEY_CH_UP + 2169176079 + name 1_331_KEY_CH_DOWN + 2169176080 + name 1_331_CH_PREVIOUS + 2169176083 + name 1_331_KEY_DISPLAY + 2169176085 + name 1_332_KEY_0 + 2169241600 + name 1_332_KEY_1 + 2169241601 + name 1_332_KEY_2 + 2169241602 + name 1_332_KEY_3 + 2169241603 + name 1_332_KEY_4 + 2169241604 + name 1_332_KEY_5 + 2169241605 + name 1_332_KEY_6 + 2169241606 + name 1_332_KEY_7 + 2169241607 + name 1_332_KEY_8 + 2169241608 + name 1_332_KEY_9 + 2169241609 + name 1_332_KEY_POWER + 2169241610 + name 1_332_TWO_DIGITS + 2169241613 + name 1_332_KEY_CH_UP + 2169241615 + name 1_332_KEY_CH_DOWN + 2169241616 + name 1_333_KEY_0 + 2169307136 + name 1_333_KEY_1 + 2169307137 + name 1_333_KEY_2 + 2169307138 + name 1_333_KEY_3 + 2169307139 + name 1_333_KEY_4 + 2169307140 + name 1_333_KEY_5 + 2169307141 + name 1_333_KEY_6 + 2169307142 + name 1_333_KEY_7 + 2169307143 + name 1_333_KEY_8 + 2169307144 + name 1_333_KEY_9 + 2169307145 + name 1_333_KEY_POWER + 2169307146 + name 1_333_TWO_DIGITS + 2169307149 + name 1_333_KEY_CH_UP + 2169307151 + name 1_333_KEY_CH_DOWN + 2169307152 + name 1_333_KEY_MUTE + 2169307153 + name 1_334_KEY_0 + 2169372672 + name 1_334_KEY_1 + 2169372673 + name 1_334_KEY_2 + 2169372674 + name 1_334_KEY_3 + 2169372675 + name 1_334_KEY_4 + 2169372676 + name 1_334_KEY_5 + 2169372677 + name 1_334_KEY_6 + 2169372678 + name 1_334_KEY_7 + 2169372679 + name 1_334_KEY_8 + 2169372680 + name 1_334_KEY_9 + 2169372681 + name 1_334_KEY_POWER + 2169372682 + name 1_334_TWO_DIGITS + 2169372685 + name 1_334_KEY_CH_UP + 2169372687 + name 1_334_KEY_CH_DOWN + 2169372688 + name 1_334_KEY_FAV + 2169372701 + name 1_335_KEY_0 + 2169438208 + name 1_335_KEY_1 + 2169438209 + name 1_335_KEY_2 + 2169438210 + name 1_335_KEY_3 + 2169438211 + name 1_335_KEY_4 + 2169438212 + name 1_335_KEY_5 + 2169438213 + name 1_335_KEY_6 + 2169438214 + name 1_335_KEY_7 + 2169438215 + name 1_335_KEY_8 + 2169438216 + name 1_335_KEY_9 + 2169438217 + name 1_335_KEY_POWER + 2169438218 + name 1_335_TWO_DIGITS + 2169438221 + name 1_335_KEY_CH_UP + 2169438223 + name 1_335_KEY_CH_DOWN + 2169438224 + name 1_335_KEY_FAV + 2169438237 + name 1_336_KEY_0 + 2169503744 + name 1_336_KEY_1 + 2169503745 + name 1_336_KEY_2 + 2169503746 + name 1_336_KEY_3 + 2169503747 + name 1_336_KEY_4 + 2169503748 + name 1_336_KEY_5 + 2169503749 + name 1_336_KEY_6 + 2169503750 + name 1_336_KEY_7 + 2169503751 + name 1_336_KEY_8 + 2169503752 + name 1_336_KEY_9 + 2169503753 + name 1_336_KEY_POWER + 2169503754 + name 1_336_TWO_DIGITS + 2169503757 + name 1_336_KEY_CH_UP + 2169503759 + name 1_336_KEY_CH_DOWN + 2169503760 + name 1_336_KEY_FTUNEPLUS + 2169503777 + name 1_336_KEY_FTUNEMINUS + 2169503778 + name 1_336_KEY_AV + 2169503785 + name 1_337_KEY_0 + 2169569280 + name 1_337_KEY_1 + 2169569281 + name 1_337_KEY_2 + 2169569282 + name 1_337_KEY_3 + 2169569283 + name 1_337_KEY_4 + 2169569284 + name 1_337_KEY_5 + 2169569285 + name 1_337_KEY_6 + 2169569286 + name 1_337_KEY_7 + 2169569287 + name 1_337_KEY_8 + 2169569288 + name 1_337_KEY_9 + 2169569289 + name 1_337_KEY_POWER + 2169569290 + name 1_337_TWO_DIGITS + 2169569293 + name 1_337_KEY_CH_UP + 2169569295 + name 1_337_KEY_CH_DOWN + 2169569296 + name 1_337_KEY_MUTE + 2169569297 + name 1_337_KEY_VOL_DOWN + 2169569298 + name 1_337_CH_PREVIOUS + 2169569299 + name 1_337_KEY_VOL_UP + 2169569300 + name 1_337_KEY_TIMER + 2169569324 + name 1_338_KEY_0 + 2169634816 + name 1_338_KEY_1 + 2169634817 + name 1_338_KEY_2 + 2169634818 + name 1_338_KEY_3 + 2169634819 + name 1_338_KEY_4 + 2169634820 + name 1_338_KEY_5 + 2169634821 + name 1_338_KEY_6 + 2169634822 + name 1_338_KEY_7 + 2169634823 + name 1_338_KEY_8 + 2169634824 + name 1_338_KEY_9 + 2169634825 + name 1_338_KEY_POWER + 2169634826 + name 1_338_TWO_DIGITS + 2169634829 + name 1_338_KEY_CH_UP + 2169634831 + name 1_338_KEY_CH_DOWN + 2169634832 + name 1_338_KEY_MUTE + 2169634833 + name 1_338_KEY_SELECT + 2169634846 + name 1_338_KEY_FTUNEPLUS + 2169634849 + name 1_338_KEY_FTUNEMINUS + 2169634850 + name 1_339_KEY_0 + 2169700352 + name 1_339_KEY_1 + 2169700353 + name 1_339_KEY_2 + 2169700354 + name 1_339_KEY_3 + 2169700355 + name 1_339_KEY_4 + 2169700356 + name 1_339_KEY_5 + 2169700357 + name 1_339_KEY_6 + 2169700358 + name 1_339_KEY_7 + 2169700359 + name 1_339_KEY_8 + 2169700360 + name 1_339_KEY_9 + 2169700361 + name 1_339_KEY_POWER + 2169700362 + name 1_339_TWO_DIGITS + 2169700365 + name 1_339_KEY_CH_UP + 2169700367 + name 1_339_KEY_CH_DOWN + 2169700368 + name 1_339_KEY_MUTE + 2169700369 + name 1_339_KEY_VOL_DOWN + 2169700370 + name 1_339_CH_PREVIOUS + 2169700371 + name 1_339_KEY_VOL_UP + 2169700372 + name 1_339_KEY_FAV + 2169700381 + name 1_339_KEY_TIMER + 2169700396 + name 1_342_KEY_0 + 2169896960 + name 1_342_KEY_1 + 2169896961 + name 1_342_KEY_2 + 2169896962 + name 1_342_KEY_3 + 2169896963 + name 1_342_KEY_4 + 2169896964 + name 1_342_KEY_5 + 2169896965 + name 1_342_KEY_6 + 2169896966 + name 1_342_KEY_7 + 2169896967 + name 1_342_KEY_8 + 2169896968 + name 1_342_KEY_9 + 2169896969 + name 1_342_KEY_POWER + 2169896970 + name 1_342_TWO_DIGITS + 2169896973 + name 1_342_KEY_CH_UP + 2169896975 + name 1_342_KEY_CH_DOWN + 2169896976 + name 1_342_KEY_MUTE + 2169896977 + name 1_342_KEY_VOL_DOWN + 2169896978 + name 1_342_KEY_VOL_UP + 2169896980 + name 1_343_KEY_0 + 2169962496 + name 1_343_KEY_1 + 2169962497 + name 1_343_KEY_2 + 2169962498 + name 1_343_KEY_3 + 2169962499 + name 1_343_KEY_4 + 2169962500 + name 1_343_KEY_5 + 2169962501 + name 1_343_KEY_6 + 2169962502 + name 1_343_KEY_7 + 2169962503 + name 1_343_KEY_8 + 2169962504 + name 1_343_KEY_9 + 2169962505 + name 1_343_KEY_POWER + 2169962506 + name 1_343_TWO_DIGITS + 2169962509 + name 1_343_KEY_CH_UP + 2169962511 + name 1_343_KEY_CH_DOWN + 2169962512 + name 1_344_KEY_0 + 2170028032 + name 1_344_KEY_1 + 2170028033 + name 1_344_KEY_2 + 2170028034 + name 1_344_KEY_3 + 2170028035 + name 1_344_KEY_4 + 2170028036 + name 1_344_KEY_5 + 2170028037 + name 1_344_KEY_6 + 2170028038 + name 1_344_KEY_7 + 2170028039 + name 1_344_KEY_8 + 2170028040 + name 1_344_KEY_9 + 2170028041 + name 1_344_KEY_POWER + 2170028042 + name 1_344_TWO_DIGITS + 2170028045 + name 1_344_KEY_CH_UP + 2170028047 + name 1_344_KEY_CH_DOWN + 2170028048 + name 1_344_KEY_MUTE + 2170028049 + name 1_344_KEY_VOL_DOWN + 2170028050 + name 1_344_KEY_VOL_UP + 2170028052 + name 1_344_KEY_SELECT + 2170028062 + name 1_344_KEY_FTUNEPLUS + 2170028065 + name 1_344_KEY_FTUNEMINUS + 2170028066 + name 1_345_KEY_0 + 2170093568 + name 1_345_KEY_1 + 2170093569 + name 1_345_KEY_2 + 2170093570 + name 1_345_KEY_3 + 2170093571 + name 1_345_KEY_4 + 2170093572 + name 1_345_KEY_5 + 2170093573 + name 1_345_KEY_6 + 2170093574 + name 1_345_KEY_7 + 2170093575 + name 1_345_KEY_8 + 2170093576 + name 1_345_KEY_9 + 2170093577 + name 1_345_KEY_POWER + 2170093578 + name 1_345_TWO_DIGITS + 2170093581 + name 1_345_KEY_CH_UP + 2170093583 + name 1_345_KEY_CH_DOWN + 2170093584 + name 1_346_KEY_0 + 2170159104 + name 1_346_KEY_1 + 2170159105 + name 1_346_KEY_2 + 2170159106 + name 1_346_KEY_3 + 2170159107 + name 1_346_KEY_4 + 2170159108 + name 1_346_KEY_5 + 2170159109 + name 1_346_KEY_6 + 2170159110 + name 1_346_KEY_7 + 2170159111 + name 1_346_KEY_8 + 2170159112 + name 1_346_KEY_9 + 2170159113 + name 1_346_KEY_POWER + 2170159114 + name 1_346_TWO_DIGITS + 2170159117 + name 1_346_KEY_CH_UP + 2170159119 + name 1_346_KEY_CH_DOWN + 2170159120 + name 1_346_KEY_FTUNEPLUS + 2170159137 + name 1_346_KEY_FTUNEMINUS + 2170159138 + name 1_348_KEY_0 + 2170290176 + name 1_348_KEY_1 + 2170290177 + name 1_348_KEY_2 + 2170290178 + name 1_348_KEY_3 + 2170290179 + name 1_348_KEY_4 + 2170290180 + name 1_348_KEY_5 + 2170290181 + name 1_348_KEY_6 + 2170290182 + name 1_348_KEY_7 + 2170290183 + name 1_348_KEY_8 + 2170290184 + name 1_348_KEY_9 + 2170290185 + name 1_348_KEY_POWER + 2170290186 + name 1_348_TWO_DIGITS + 2170290189 + name 1_348_KEY_CH_UP + 2170290191 + name 1_348_KEY_CH_DOWN + 2170290192 + name 1_348_CH_PREVIOUS + 2170290195 + name 1_348_KEY_TIMER + 2170290220 + name 1_349_KEY_0 + 2170355712 + name 1_349_KEY_1 + 2170355713 + name 1_349_KEY_2 + 2170355714 + name 1_349_KEY_3 + 2170355715 + name 1_349_KEY_4 + 2170355716 + name 1_349_KEY_5 + 2170355717 + name 1_349_KEY_6 + 2170355718 + name 1_349_KEY_7 + 2170355719 + name 1_349_KEY_8 + 2170355720 + name 1_349_KEY_9 + 2170355721 + name 1_349_KEY_POWER + 2170355722 + name 1_349_TWO_DIGITS + 2170355725 + name 1_349_KEY_CH_UP + 2170355727 + name 1_349_KEY_CH_DOWN + 2170355728 + name 1_350_KEY_0 + 2170421248 + name 1_350_KEY_1 + 2170421249 + name 1_350_KEY_2 + 2170421250 + name 1_350_KEY_3 + 2170421251 + name 1_350_KEY_4 + 2170421252 + name 1_350_KEY_5 + 2170421253 + name 1_350_KEY_6 + 2170421254 + name 1_350_KEY_7 + 2170421255 + name 1_350_KEY_8 + 2170421256 + name 1_350_KEY_9 + 2170421257 + name 1_350_KEY_POWER + 2170421258 + name 1_350_TWO_DIGITS + 2170421261 + name 1_350_KEY_CH_UP + 2170421263 + name 1_350_KEY_CH_DOWN + 2170421264 + name 1_350_KEY_VOL_DOWN + 2170421266 + name 1_350_KEY_VOL_UP + 2170421268 + name 1_350_KEY_FTUNEPLUS + 2170421281 + name 1_350_KEY_FTUNEMINUS + 2170421282 + name 1_351_KEY_0 + 2170486784 + name 1_351_KEY_1 + 2170486785 + name 1_351_KEY_2 + 2170486786 + name 1_351_KEY_3 + 2170486787 + name 1_351_KEY_4 + 2170486788 + name 1_351_KEY_5 + 2170486789 + name 1_351_KEY_6 + 2170486790 + name 1_351_KEY_7 + 2170486791 + name 1_351_KEY_8 + 2170486792 + name 1_351_KEY_9 + 2170486793 + name 1_351_KEY_POWER + 2170486794 + name 1_351_TWO_DIGITS + 2170486797 + name 1_351_KEY_CH_UP + 2170486799 + name 1_351_KEY_CH_DOWN + 2170486800 + name 1_351_KEY_MUTE + 2170486801 + name 1_351_KEY_VOL_DOWN + 2170486802 + name 1_351_KEY_VOL_UP + 2170486804 + name 1_352_KEY_0 + 2170552320 + name 1_352_KEY_1 + 2170552321 + name 1_352_KEY_2 + 2170552322 + name 1_352_KEY_3 + 2170552323 + name 1_352_KEY_4 + 2170552324 + name 1_352_KEY_5 + 2170552325 + name 1_352_KEY_6 + 2170552326 + name 1_352_KEY_7 + 2170552327 + name 1_352_KEY_8 + 2170552328 + name 1_352_KEY_9 + 2170552329 + name 1_352_KEY_POWER + 2170552330 + name 1_352_TWO_DIGITS + 2170552333 + name 1_352_KEY_CH_UP + 2170552335 + name 1_352_KEY_CH_DOWN + 2170552336 + name 1_352_CH_PREVIOUS + 2170552339 + name 1_352_KEY_FTUNEPLUS + 2170552353 + name 1_352_KEY_FTUNEMINUS + 2170552354 + name 1_353_KEY_0 + 2170617856 + name 1_353_KEY_1 + 2170617857 + name 1_353_KEY_2 + 2170617858 + name 1_353_KEY_3 + 2170617859 + name 1_353_KEY_4 + 2170617860 + name 1_353_KEY_5 + 2170617861 + name 1_353_KEY_6 + 2170617862 + name 1_353_KEY_7 + 2170617863 + name 1_353_KEY_8 + 2170617864 + name 1_353_KEY_9 + 2170617865 + name 1_353_KEY_POWER + 2170617866 + name 1_353_TWO_DIGITS + 2170617869 + name 1_353_KEY_CH_UP + 2170617871 + name 1_353_KEY_CH_DOWN + 2170617872 + name 1_353_CH_PREVIOUS + 2170617875 + name 1_354_KEY_0 + 2170683392 + name 1_354_KEY_1 + 2170683393 + name 1_354_KEY_2 + 2170683394 + name 1_354_KEY_3 + 2170683395 + name 1_354_KEY_4 + 2170683396 + name 1_354_KEY_5 + 2170683397 + name 1_354_KEY_6 + 2170683398 + name 1_354_KEY_7 + 2170683399 + name 1_354_KEY_8 + 2170683400 + name 1_354_KEY_9 + 2170683401 + name 1_354_KEY_POWER + 2170683402 + name 1_354_TWO_DIGITS + 2170683405 + name 1_354_KEY_CH_UP + 2170683407 + name 1_354_KEY_CH_DOWN + 2170683408 + name 1_354_KEY_AV + 2170683433 + name 1_355_KEY_0 + 2170748928 + name 1_355_KEY_1 + 2170748929 + name 1_355_KEY_2 + 2170748930 + name 1_355_KEY_3 + 2170748931 + name 1_355_KEY_4 + 2170748932 + name 1_355_KEY_5 + 2170748933 + name 1_355_KEY_6 + 2170748934 + name 1_355_KEY_7 + 2170748935 + name 1_355_KEY_8 + 2170748936 + name 1_355_KEY_9 + 2170748937 + name 1_355_KEY_POWER + 2170748938 + name 1_355_TWO_DIGITS + 2170748941 + name 1_355_KEY_CH_UP + 2170748943 + name 1_355_KEY_CH_DOWN + 2170748944 + name 1_357_KEY_0 + 2170880000 + name 1_357_KEY_1 + 2170880001 + name 1_357_KEY_2 + 2170880002 + name 1_357_KEY_3 + 2170880003 + name 1_357_KEY_4 + 2170880004 + name 1_357_KEY_5 + 2170880005 + name 1_357_KEY_6 + 2170880006 + name 1_357_KEY_7 + 2170880007 + name 1_357_KEY_8 + 2170880008 + name 1_357_KEY_9 + 2170880009 + name 1_357_KEY_POWER + 2170880010 + name 1_357_TWO_DIGITS + 2170880013 + name 1_357_KEY_CH_UP + 2170880015 + name 1_357_KEY_CH_DOWN + 2170880016 + name 1_357_KEY_SELECT + 2170880030 + name 1_358_KEY_0 + 2170945536 + name 1_358_KEY_1 + 2170945537 + name 1_358_KEY_2 + 2170945538 + name 1_358_KEY_3 + 2170945539 + name 1_358_KEY_4 + 2170945540 + name 1_358_KEY_5 + 2170945541 + name 1_358_KEY_6 + 2170945542 + name 1_358_KEY_7 + 2170945543 + name 1_358_KEY_8 + 2170945544 + name 1_358_KEY_9 + 2170945545 + name 1_358_KEY_POWER + 2170945546 + name 1_358_TWO_DIGITS + 2170945549 + name 1_358_KEY_CH_UP + 2170945551 + name 1_358_KEY_CH_DOWN + 2170945552 + name 1_358_KEY_MUTE + 2170945553 + name 1_358_KEY_VOL_DOWN + 2170945554 + name 1_358_KEY_VOL_UP + 2170945556 + name 1_358_KEY_FAV + 2170945565 + name 1_358_KEY_TIMER + 2170945580 + name 1_359_KEY_0 + 2171011072 + name 1_359_KEY_1 + 2171011073 + name 1_359_KEY_2 + 2171011074 + name 1_359_KEY_3 + 2171011075 + name 1_359_KEY_4 + 2171011076 + name 1_359_KEY_5 + 2171011077 + name 1_359_KEY_6 + 2171011078 + name 1_359_KEY_7 + 2171011079 + name 1_359_KEY_8 + 2171011080 + name 1_359_KEY_9 + 2171011081 + name 1_359_KEY_POWER + 2171011082 + name 1_359_POWER_ON + 2171011083 + name 1_359_TWO_DIGITS + 2171011085 + name 1_359_KEY_CH_UP + 2171011087 + name 1_359_KEY_CH_DOWN + 2171011088 + name 1_359_KEY_MUTE + 2171011089 + name 1_359_KEY_VOL_DOWN + 2171011090 + name 1_359_KEY_VOL_UP + 2171011092 + name 1_360_KEY_0 + 2171076608 + name 1_360_KEY_1 + 2171076609 + name 1_360_KEY_2 + 2171076610 + name 1_360_KEY_3 + 2171076611 + name 1_360_KEY_4 + 2171076612 + name 1_360_KEY_5 + 2171076613 + name 1_360_KEY_6 + 2171076614 + name 1_360_KEY_7 + 2171076615 + name 1_360_KEY_8 + 2171076616 + name 1_360_KEY_9 + 2171076617 + name 1_360_KEY_POWER + 2171076618 + name 1_360_TWO_DIGITS + 2171076621 + name 1_360_KEY_CH_UP + 2171076623 + name 1_360_KEY_CH_DOWN + 2171076624 + name 1_360_KEY_MUTE + 2171076625 + name 1_360_KEY_VOL_DOWN + 2171076626 + name 1_360_CH_PREVIOUS + 2171076627 + name 1_360_KEY_VOL_UP + 2171076628 + name 1_360_KEY_DISPLAY + 2171076629 + name 1_361_KEY_0 + 2171142144 + name 1_361_KEY_1 + 2171142145 + name 1_361_KEY_2 + 2171142146 + name 1_361_KEY_3 + 2171142147 + name 1_361_KEY_4 + 2171142148 + name 1_361_KEY_5 + 2171142149 + name 1_361_KEY_6 + 2171142150 + name 1_361_KEY_7 + 2171142151 + name 1_361_KEY_8 + 2171142152 + name 1_361_KEY_9 + 2171142153 + name 1_361_KEY_POWER + 2171142154 + name 1_361_TWO_DIGITS + 2171142157 + name 1_361_KEY_CH_UP + 2171142159 + name 1_361_KEY_CH_DOWN + 2171142160 + name 1_361_KEY_MUTE + 2171142161 + name 1_361_KEY_VOL_DOWN + 2171142162 + name 1_361_KEY_VOL_UP + 2171142164 + name 1_363_KEY_0 + 2171273216 + name 1_363_KEY_1 + 2171273217 + name 1_363_KEY_2 + 2171273218 + name 1_363_KEY_3 + 2171273219 + name 1_363_KEY_4 + 2171273220 + name 1_363_KEY_5 + 2171273221 + name 1_363_KEY_6 + 2171273222 + name 1_363_KEY_7 + 2171273223 + name 1_363_KEY_8 + 2171273224 + name 1_363_KEY_9 + 2171273225 + name 1_363_KEY_POWER + 2171273226 + name 1_363_TWO_DIGITS + 2171273229 + name 1_363_KEY_CH_UP + 2171273231 + name 1_363_KEY_CH_DOWN + 2171273232 + name 1_363_KEY_MUTE + 2171273233 + name 1_363_KEY_VOL_DOWN + 2171273234 + name 1_363_KEY_VOL_UP + 2171273236 + name 1_363_KEY_FTUNEPLUS + 2171273249 + name 1_363_KEY_FTUNEMINUS + 2171273250 + name 1_364_KEY_0 + 2171338752 + name 1_364_KEY_1 + 2171338753 + name 1_364_KEY_2 + 2171338754 + name 1_364_KEY_3 + 2171338755 + name 1_364_KEY_4 + 2171338756 + name 1_364_KEY_5 + 2171338757 + name 1_364_KEY_6 + 2171338758 + name 1_364_KEY_7 + 2171338759 + name 1_364_KEY_8 + 2171338760 + name 1_364_KEY_9 + 2171338761 + name 1_364_KEY_POWER + 2171338762 + name 1_364_TWO_DIGITS + 2171338765 + name 1_364_KEY_CH_UP + 2171338767 + name 1_364_KEY_CH_DOWN + 2171338768 + name 1_364_KEY_MUTE + 2171338769 + name 1_364_KEY_VOL_DOWN + 2171338770 + name 1_364_KEY_VOL_UP + 2171338772 + name 1_364_KEY_BLUE + 2171338787 + name 1_364_KEY_GREEN + 2171338788 + name 1_364_KEY_RED + 2171338789 + name 1_364_KEY_YELLOW + 2171338790 + name 1_364_KEY_On + 2171338829 + name 1_364_KEY_Off + 2171338830 + name 1_365_KEY_0 + 2171404288 + name 1_365_KEY_1 + 2171404289 + name 1_365_KEY_2 + 2171404290 + name 1_365_KEY_3 + 2171404291 + name 1_365_KEY_4 + 2171404292 + name 1_365_KEY_5 + 2171404293 + name 1_365_KEY_6 + 2171404294 + name 1_365_KEY_7 + 2171404295 + name 1_365_KEY_8 + 2171404296 + name 1_365_KEY_9 + 2171404297 + name 1_365_KEY_POWER + 2171404298 + name 1_365_TWO_DIGITS + 2171404301 + name 1_365_KEY_CH_UP + 2171404303 + name 1_365_KEY_CH_DOWN + 2171404304 + name 1_365_CH_PREVIOUS + 2171404307 + name 1_366_KEY_0 + 2171469824 + name 1_366_KEY_1 + 2171469825 + name 1_366_KEY_2 + 2171469826 + name 1_366_KEY_3 + 2171469827 + name 1_366_KEY_4 + 2171469828 + name 1_366_KEY_5 + 2171469829 + name 1_366_KEY_6 + 2171469830 + name 1_366_KEY_7 + 2171469831 + name 1_366_KEY_8 + 2171469832 + name 1_366_KEY_9 + 2171469833 + name 1_366_KEY_POWER + 2171469834 + name 1_366_TWO_DIGITS + 2171469837 + name 1_366_KEY_CH_UP + 2171469839 + name 1_366_KEY_CH_DOWN + 2171469840 + name 1_366_CH_PREVIOUS + 2171469843 + name 1_368_KEY_0 + 2171600896 + name 1_368_KEY_1 + 2171600897 + name 1_368_KEY_2 + 2171600898 + name 1_368_KEY_3 + 2171600899 + name 1_368_KEY_4 + 2171600900 + name 1_368_KEY_5 + 2171600901 + name 1_368_KEY_6 + 2171600902 + name 1_368_KEY_7 + 2171600903 + name 1_368_KEY_8 + 2171600904 + name 1_368_KEY_9 + 2171600905 + name 1_368_KEY_POWER + 2171600906 + name 1_368_TWO_DIGITS + 2171600909 + name 1_368_KEY_CH_UP + 2171600911 + name 1_368_KEY_CH_DOWN + 2171600912 + name 1_369_KEY_0 + 2171666432 + name 1_369_KEY_1 + 2171666433 + name 1_369_KEY_2 + 2171666434 + name 1_369_KEY_3 + 2171666435 + name 1_369_KEY_4 + 2171666436 + name 1_369_KEY_5 + 2171666437 + name 1_369_KEY_6 + 2171666438 + name 1_369_KEY_7 + 2171666439 + name 1_369_KEY_8 + 2171666440 + name 1_369_KEY_9 + 2171666441 + name 1_369_KEY_POWER + 2171666442 + name 1_369_TWO_DIGITS + 2171666445 + name 1_369_KEY_CH_UP + 2171666447 + name 1_369_KEY_CH_DOWN + 2171666448 + name 1_369_KEY_MUTE + 2171666449 + name 1_369_KEY_VOL_DOWN + 2171666450 + name 1_369_KEY_VOL_UP + 2171666452 + name 1_369_KEY_MNSELECT + 2171666455 + name 1_369_KEY_AV + 2171666473 + name 1_369_KEY_AUTOTRACK + 2171666478 + name 1_369_KEY_MENU + 2171666479 + name 1_369_KEY_MUP + 2171666480 + name 1_369_KEY_MDOWN + 2171666481 + name 1_369_KEY_MLEFT + 2171666482 + name 1_369_KEY_MRIGHT + 2171666483 + name 1_370_KEY_0 + 2171731968 + name 1_370_KEY_1 + 2171731969 + name 1_370_KEY_2 + 2171731970 + name 1_370_KEY_3 + 2171731971 + name 1_370_KEY_4 + 2171731972 + name 1_370_KEY_5 + 2171731973 + name 1_370_KEY_6 + 2171731974 + name 1_370_KEY_7 + 2171731975 + name 1_370_KEY_8 + 2171731976 + name 1_370_KEY_9 + 2171731977 + name 1_370_KEY_POWER + 2171731978 + name 1_370_TWO_DIGITS + 2171731981 + name 1_370_KEY_CH_UP + 2171731983 + name 1_370_KEY_CH_DOWN + 2171731984 + name 1_370_KEY_MUTE + 2171731985 + name 1_370_KEY_VOL_DOWN + 2171731986 + name 1_370_KEY_VOL_UP + 2171731988 + name 1_370_KEY_MNSELECT + 2171731991 + name 1_370_KEY_AV + 2171732009 + name 1_370_KEY_AUTOTRACK + 2171732014 + name 1_370_KEY_MENU + 2171732015 + name 1_370_KEY_MUP + 2171732016 + name 1_370_KEY_MDOWN + 2171732017 + name 1_370_KEY_MLEFT + 2171732018 + name 1_370_KEY_MRIGHT + 2171732019 + name 1_371_KEY_0 + 2171797504 + name 1_371_KEY_1 + 2171797505 + name 1_371_KEY_2 + 2171797506 + name 1_371_KEY_3 + 2171797507 + name 1_371_KEY_4 + 2171797508 + name 1_371_KEY_5 + 2171797509 + name 1_371_KEY_6 + 2171797510 + name 1_371_KEY_7 + 2171797511 + name 1_371_KEY_8 + 2171797512 + name 1_371_KEY_9 + 2171797513 + name 1_371_KEY_POWER + 2171797514 + name 1_371_KEY_CH_UP + 2171797519 + name 1_371_KEY_CH_DOWN + 2171797520 + name 1_371_KEY_MUTE + 2171797521 + name 1_371_KEY_VOL_DOWN + 2171797522 + name 1_371_KEY_VOL_UP + 2171797524 + name 1_371_KEY_MNSELECT + 2171797527 + name 1_371_KEY_AV + 2171797545 + name 1_371_KEY_MENU + 2171797551 + name 1_371_KEY_MUP + 2171797552 + name 1_371_KEY_MDOWN + 2171797553 + name 1_371_KEY_MLEFT + 2171797554 + name 1_371_KEY_MRIGHT + 2171797555 + name 1_372_KEY_0 + 2171863040 + name 1_372_KEY_1 + 2171863041 + name 1_372_KEY_2 + 2171863042 + name 1_372_KEY_3 + 2171863043 + name 1_372_KEY_4 + 2171863044 + name 1_372_KEY_5 + 2171863045 + name 1_372_KEY_6 + 2171863046 + name 1_372_KEY_7 + 2171863047 + name 1_372_KEY_8 + 2171863048 + name 1_372_KEY_9 + 2171863049 + name 1_372_KEY_POWER + 2171863050 + name 1_372_KEY_CH_UP + 2171863055 + name 1_372_KEY_CH_DOWN + 2171863056 + name 1_372_KEY_MUTE + 2171863057 + name 1_372_KEY_VOL_DOWN + 2171863058 + name 1_372_KEY_VOL_UP + 2171863060 + name 1_372_KEY_MNSELECT + 2171863063 + name 1_372_KEY_AV + 2171863081 + name 1_372_KEY_MENU + 2171863087 + name 1_372_KEY_MUP + 2171863088 + name 1_372_KEY_MDOWN + 2171863089 + name 1_372_KEY_MLEFT + 2171863090 + name 1_372_KEY_MRIGHT + 2171863091 + name 1_373_KEY_0 + 2171928576 + name 1_373_KEY_1 + 2171928577 + name 1_373_KEY_2 + 2171928578 + name 1_373_KEY_3 + 2171928579 + name 1_373_KEY_4 + 2171928580 + name 1_373_KEY_5 + 2171928581 + name 1_373_KEY_6 + 2171928582 + name 1_373_KEY_7 + 2171928583 + name 1_373_KEY_8 + 2171928584 + name 1_373_KEY_9 + 2171928585 + name 1_373_KEY_POWER + 2171928586 + name 1_373_KEY_CH_UP + 2171928591 + name 1_373_KEY_CH_DOWN + 2171928592 + name 1_373_KEY_MUTE + 2171928593 + name 1_373_KEY_VOL_DOWN + 2171928594 + name 1_373_KEY_VOL_UP + 2171928596 + name 1_373_KEY_MNSELECT + 2171928599 + name 1_373_KEY_AV + 2171928617 + name 1_373_KEY_MENU + 2171928623 + name 1_373_KEY_MUP + 2171928624 + name 1_373_KEY_MDOWN + 2171928625 + name 1_373_KEY_MLEFT + 2171928626 + name 1_373_KEY_MRIGHT + 2171928627 + name 1_374_KEY_0 + 2171994112 + name 1_374_KEY_1 + 2171994113 + name 1_374_KEY_2 + 2171994114 + name 1_374_KEY_3 + 2171994115 + name 1_374_KEY_4 + 2171994116 + name 1_374_KEY_5 + 2171994117 + name 1_374_KEY_6 + 2171994118 + name 1_374_KEY_7 + 2171994119 + name 1_374_KEY_8 + 2171994120 + name 1_374_KEY_9 + 2171994121 + name 1_374_KEY_POWER + 2171994122 + name 1_374_TWO_DIGITS + 2171994125 + name 1_374_KEY_CH_UP + 2171994127 + name 1_374_KEY_CH_DOWN + 2171994128 + name 1_374_KEY_MUTE + 2171994129 + name 1_374_KEY_VOL_DOWN + 2171994130 + name 1_374_KEY_VOL_UP + 2171994132 + name 1_374_KEY_AV + 2171994153 + name 1_374_KEY_MENU + 2171994159 + name 1_374_KEY_MUP + 2171994160 + name 1_374_KEY_MDOWN + 2171994161 + name 1_374_KEY_MLEFT + 2171994162 + name 1_374_KEY_MRIGHT + 2171994163 + name 1_375_KEY_0 + 2172059648 + name 1_375_KEY_1 + 2172059649 + name 1_375_KEY_2 + 2172059650 + name 1_375_KEY_3 + 2172059651 + name 1_375_KEY_4 + 2172059652 + name 1_375_KEY_5 + 2172059653 + name 1_375_KEY_6 + 2172059654 + name 1_375_KEY_7 + 2172059655 + name 1_375_KEY_8 + 2172059656 + name 1_375_KEY_9 + 2172059657 + name 1_375_KEY_POWER + 2172059658 + name 1_375_TWO_DIGITS + 2172059661 + name 1_375_KEY_CH_UP + 2172059663 + name 1_375_KEY_CH_DOWN + 2172059664 + name 1_375_KEY_MUTE + 2172059665 + name 1_375_KEY_VOL_DOWN + 2172059666 + name 1_375_KEY_VOL_UP + 2172059668 + name 1_375_KEY_MNSELECT + 2172059671 + name 1_375_KEY_AV + 2172059689 + name 1_375_KEY_AUTOTRACK + 2172059694 + name 1_375_KEY_MENU + 2172059695 + name 1_375_KEY_MUP + 2172059696 + name 1_375_KEY_MDOWN + 2172059697 + name 1_375_KEY_MLEFT + 2172059698 + name 1_375_KEY_MRIGHT + 2172059699 + name 1_376_KEY_0 + 2172125184 + name 1_376_KEY_1 + 2172125185 + name 1_376_KEY_2 + 2172125186 + name 1_376_KEY_3 + 2172125187 + name 1_376_KEY_4 + 2172125188 + name 1_376_KEY_5 + 2172125189 + name 1_376_KEY_6 + 2172125190 + name 1_376_KEY_7 + 2172125191 + name 1_376_KEY_8 + 2172125192 + name 1_376_KEY_9 + 2172125193 + name 1_376_KEY_POWER + 2172125194 + name 1_376_TWO_DIGITS + 2172125197 + name 1_376_KEY_CH_UP + 2172125199 + name 1_376_KEY_CH_DOWN + 2172125200 + name 1_376_KEY_MUTE + 2172125201 + name 1_376_KEY_VOL_DOWN + 2172125202 + name 1_376_KEY_VOL_UP + 2172125204 + name 1_376_KEY_MNSELECT + 2172125207 + name 1_376_KEY_MENU + 2172125231 + name 1_376_KEY_MUP + 2172125232 + name 1_376_KEY_MDOWN + 2172125233 + name 1_376_KEY_MLEFT + 2172125234 + name 1_376_KEY_MRIGHT + 2172125235 + name 1_377_KEY_0 + 2172190720 + name 1_377_KEY_1 + 2172190721 + name 1_377_KEY_2 + 2172190722 + name 1_377_KEY_3 + 2172190723 + name 1_377_KEY_4 + 2172190724 + name 1_377_KEY_5 + 2172190725 + name 1_377_KEY_6 + 2172190726 + name 1_377_KEY_7 + 2172190727 + name 1_377_KEY_8 + 2172190728 + name 1_377_KEY_9 + 2172190729 + name 1_377_KEY_POWER + 2172190730 + name 1_377_KEY_CH_UP + 2172190735 + name 1_377_KEY_CH_DOWN + 2172190736 + name 1_377_KEY_AV + 2172190761 + name 1_378_KEY_0 + 2172256256 + name 1_378_KEY_1 + 2172256257 + name 1_378_KEY_2 + 2172256258 + name 1_378_KEY_3 + 2172256259 + name 1_378_KEY_4 + 2172256260 + name 1_378_KEY_5 + 2172256261 + name 1_378_KEY_6 + 2172256262 + name 1_378_KEY_7 + 2172256263 + name 1_378_KEY_8 + 2172256264 + name 1_378_KEY_9 + 2172256265 + name 1_378_KEY_POWER + 2172256266 + name 1_378_KEY_CH_UP + 2172256271 + name 1_378_KEY_CH_DOWN + 2172256272 + name 1_378_KEY_MUTE + 2172256273 + name 1_378_KEY_VOL_DOWN + 2172256274 + name 1_378_KEY_VOL_UP + 2172256276 + name 1_378_KEY_AV + 2172256297 + name 1_379_KEY_0 + 2172321792 + name 1_379_KEY_1 + 2172321793 + name 1_379_KEY_2 + 2172321794 + name 1_379_KEY_3 + 2172321795 + name 1_379_KEY_4 + 2172321796 + name 1_379_KEY_5 + 2172321797 + name 1_379_KEY_6 + 2172321798 + name 1_379_KEY_7 + 2172321799 + name 1_379_KEY_8 + 2172321800 + name 1_379_KEY_9 + 2172321801 + name 1_379_KEY_POWER + 2172321802 + name 1_379_KEY_CH_UP + 2172321807 + name 1_379_KEY_CH_DOWN + 2172321808 + name 1_379_KEY_AV + 2172321833 + name 1_380_KEY_0 + 2172387328 + name 1_380_KEY_1 + 2172387329 + name 1_380_KEY_2 + 2172387330 + name 1_380_KEY_3 + 2172387331 + name 1_380_KEY_4 + 2172387332 + name 1_380_KEY_5 + 2172387333 + name 1_380_KEY_6 + 2172387334 + name 1_380_KEY_7 + 2172387335 + name 1_380_KEY_8 + 2172387336 + name 1_380_KEY_9 + 2172387337 + name 1_380_KEY_POWER + 2172387338 + name 1_380_KEY_CH_UP + 2172387343 + name 1_380_KEY_CH_DOWN + 2172387344 + name 1_380_KEY_AV + 2172387369 + name 1_381_KEY_0 + 2172452864 + name 1_381_KEY_1 + 2172452865 + name 1_381_KEY_2 + 2172452866 + name 1_381_KEY_3 + 2172452867 + name 1_381_KEY_4 + 2172452868 + name 1_381_KEY_5 + 2172452869 + name 1_381_KEY_6 + 2172452870 + name 1_381_KEY_7 + 2172452871 + name 1_381_KEY_8 + 2172452872 + name 1_381_KEY_9 + 2172452873 + name 1_381_KEY_POWER + 2172452874 + name 1_381_KEY_CH_UP + 2172452879 + name 1_381_KEY_CH_DOWN + 2172452880 + name 1_381_KEY_AV + 2172452905 + name 1_382_KEY_0 + 2172518400 + name 1_382_KEY_1 + 2172518401 + name 1_382_KEY_2 + 2172518402 + name 1_382_KEY_3 + 2172518403 + name 1_382_KEY_4 + 2172518404 + name 1_382_KEY_5 + 2172518405 + name 1_382_KEY_6 + 2172518406 + name 1_382_KEY_7 + 2172518407 + name 1_382_KEY_8 + 2172518408 + name 1_382_KEY_9 + 2172518409 + name 1_382_KEY_POWER + 2172518410 + name 1_382_KEY_CH_UP + 2172518415 + name 1_382_KEY_CH_DOWN + 2172518416 + name 1_382_KEY_MUTE + 2172518417 + name 1_382_KEY_VOL_DOWN + 2172518418 + name 1_382_KEY_VOL_UP + 2172518420 + name 1_382_KEY_AV + 2172518441 + name 1_383_KEY_0 + 2172583936 + name 1_383_KEY_1 + 2172583937 + name 1_383_KEY_2 + 2172583938 + name 1_383_KEY_3 + 2172583939 + name 1_383_KEY_4 + 2172583940 + name 1_383_KEY_5 + 2172583941 + name 1_383_KEY_6 + 2172583942 + name 1_383_KEY_7 + 2172583943 + name 1_383_KEY_8 + 2172583944 + name 1_383_KEY_9 + 2172583945 + name 1_383_KEY_POWER + 2172583946 + name 1_383_TWO_DIGITS + 2172583949 + name 1_383_KEY_CH_UP + 2172583951 + name 1_383_KEY_CH_DOWN + 2172583952 + name 1_383_KEY_MUTE + 2172583953 + name 1_383_KEY_VOL_DOWN + 2172583954 + name 1_383_KEY_VOL_UP + 2172583956 + name 1_384_KEY_0 + 2172649472 + name 1_384_KEY_1 + 2172649473 + name 1_384_KEY_2 + 2172649474 + name 1_384_KEY_3 + 2172649475 + name 1_384_KEY_4 + 2172649476 + name 1_384_KEY_5 + 2172649477 + name 1_384_KEY_6 + 2172649478 + name 1_384_KEY_7 + 2172649479 + name 1_384_KEY_8 + 2172649480 + name 1_384_KEY_9 + 2172649481 + name 1_384_KEY_POWER + 2172649482 + name 1_384_TWO_DIGITS + 2172649485 + name 1_384_KEY_CH_UP + 2172649487 + name 1_384_KEY_CH_DOWN + 2172649488 + name 1_384_KEY_MUTE + 2172649489 + name 1_384_KEY_VOL_DOWN + 2172649490 + name 1_384_KEY_VOL_UP + 2172649492 + name 1_384_KEY_AV + 2172649513 + name 1_384_KEY_AUTOTRACK + 2172649518 + name 1_384_KEY_MENU + 2172649519 + name 1_384_KEY_MUP + 2172649520 + name 1_384_KEY_MDOWN + 2172649521 + name 1_384_KEY_MLEFT + 2172649522 + name 1_384_KEY_MRIGHT + 2172649523 + name 1_385_KEY_0 + 2172715008 + name 1_385_KEY_1 + 2172715009 + name 1_385_KEY_2 + 2172715010 + name 1_385_KEY_3 + 2172715011 + name 1_385_KEY_4 + 2172715012 + name 1_385_KEY_5 + 2172715013 + name 1_385_KEY_6 + 2172715014 + name 1_385_KEY_7 + 2172715015 + name 1_385_KEY_8 + 2172715016 + name 1_385_KEY_9 + 2172715017 + name 1_385_KEY_POWER + 2172715018 + name 1_385_TWO_DIGITS + 2172715021 + name 1_385_KEY_CH_UP + 2172715023 + name 1_385_KEY_CH_DOWN + 2172715024 + name 1_385_KEY_MUTE + 2172715025 + name 1_385_KEY_VOL_DOWN + 2172715026 + name 1_385_KEY_VOL_UP + 2172715028 + name 1_385_KEY_MNSELECT + 2172715031 + name 1_385_KEY_AV + 2172715049 + name 1_385_KEY_AUTOTRACK + 2172715054 + name 1_385_KEY_MENU + 2172715055 + name 1_385_KEY_MUP + 2172715056 + name 1_385_KEY_MDOWN + 2172715057 + name 1_385_KEY_MLEFT + 2172715058 + name 1_385_KEY_MRIGHT + 2172715059 + name 1_386_KEY_0 + 2172780544 + name 1_386_KEY_1 + 2172780545 + name 1_386_KEY_2 + 2172780546 + name 1_386_KEY_3 + 2172780547 + name 1_386_KEY_4 + 2172780548 + name 1_386_KEY_5 + 2172780549 + name 1_386_KEY_6 + 2172780550 + name 1_386_KEY_7 + 2172780551 + name 1_386_KEY_8 + 2172780552 + name 1_386_KEY_9 + 2172780553 + name 1_386_KEY_POWER + 2172780554 + name 1_386_KEY_CH_UP + 2172780559 + name 1_386_KEY_CH_DOWN + 2172780560 + name 1_386_KEY_MUTE + 2172780561 + name 1_386_KEY_VOL_DOWN + 2172780562 + name 1_386_KEY_VOL_UP + 2172780564 + name 1_387_KEY_0 + 2172846080 + name 1_387_KEY_1 + 2172846081 + name 1_387_KEY_2 + 2172846082 + name 1_387_KEY_3 + 2172846083 + name 1_387_KEY_4 + 2172846084 + name 1_387_KEY_5 + 2172846085 + name 1_387_KEY_6 + 2172846086 + name 1_387_KEY_7 + 2172846087 + name 1_387_KEY_8 + 2172846088 + name 1_387_KEY_9 + 2172846089 + name 1_387_KEY_POWER + 2172846090 + name 1_387_KEY_CH_UP + 2172846095 + name 1_387_KEY_CH_DOWN + 2172846096 + name 1_387_KEY_AV + 2172846121 + name 1_389_KEY_0 + 2172977152 + name 1_389_KEY_1 + 2172977153 + name 1_389_KEY_2 + 2172977154 + name 1_389_KEY_3 + 2172977155 + name 1_389_KEY_4 + 2172977156 + name 1_389_KEY_5 + 2172977157 + name 1_389_KEY_6 + 2172977158 + name 1_389_KEY_7 + 2172977159 + name 1_389_KEY_8 + 2172977160 + name 1_389_KEY_9 + 2172977161 + name 1_389_KEY_POWER + 2172977162 + name 1_389_KEY_CH_UP + 2172977167 + name 1_389_KEY_CH_DOWN + 2172977168 + name 1_389_CH_PREVIOUS + 2172977171 + name 1_390_KEY_0 + 2173042688 + name 1_390_KEY_1 + 2173042689 + name 1_390_KEY_2 + 2173042690 + name 1_390_KEY_3 + 2173042691 + name 1_390_KEY_4 + 2173042692 + name 1_390_KEY_5 + 2173042693 + name 1_390_KEY_6 + 2173042694 + name 1_390_KEY_7 + 2173042695 + name 1_390_KEY_8 + 2173042696 + name 1_390_KEY_9 + 2173042697 + name 1_390_KEY_POWER + 2173042698 + name 1_390_TWO_DIGITS + 2173042701 + name 1_390_KEY_CH_UP + 2173042703 + name 1_390_KEY_CH_DOWN + 2173042704 + name 1_391_KEY_0 + 2173108224 + name 1_391_KEY_1 + 2173108225 + name 1_391_KEY_2 + 2173108226 + name 1_391_KEY_3 + 2173108227 + name 1_391_KEY_4 + 2173108228 + name 1_391_KEY_5 + 2173108229 + name 1_391_KEY_6 + 2173108230 + name 1_391_KEY_7 + 2173108231 + name 1_391_KEY_8 + 2173108232 + name 1_391_KEY_9 + 2173108233 + name 1_391_KEY_POWER + 2173108234 + name 1_391_TWO_DIGITS + 2173108237 + name 1_391_KEY_CH_UP + 2173108239 + name 1_391_KEY_CH_DOWN + 2173108240 + name 1_391_KEY_AV + 2173108265 + name 1_392_KEY_0 + 2173173760 + name 1_392_KEY_1 + 2173173761 + name 1_392_KEY_2 + 2173173762 + name 1_392_KEY_3 + 2173173763 + name 1_392_KEY_4 + 2173173764 + name 1_392_KEY_5 + 2173173765 + name 1_392_KEY_6 + 2173173766 + name 1_392_KEY_7 + 2173173767 + name 1_392_KEY_8 + 2173173768 + name 1_392_KEY_9 + 2173173769 + name 1_392_KEY_POWER + 2173173770 + name 1_392_KEY_CH_UP + 2173173775 + name 1_392_KEY_CH_DOWN + 2173173776 + name 1_392_CH_PREVIOUS + 2173173779 + name 1_393_KEY_0 + 2173239296 + name 1_393_KEY_1 + 2173239297 + name 1_393_KEY_2 + 2173239298 + name 1_393_KEY_3 + 2173239299 + name 1_393_KEY_4 + 2173239300 + name 1_393_KEY_5 + 2173239301 + name 1_393_KEY_6 + 2173239302 + name 1_393_KEY_7 + 2173239303 + name 1_393_KEY_8 + 2173239304 + name 1_393_KEY_9 + 2173239305 + name 1_393_KEY_POWER + 2173239306 + name 1_393_KEY_CH_UP + 2173239311 + name 1_393_KEY_CH_DOWN + 2173239312 + name 1_394_KEY_0 + 2173304832 + name 1_394_KEY_1 + 2173304833 + name 1_394_KEY_2 + 2173304834 + name 1_394_KEY_3 + 2173304835 + name 1_394_KEY_4 + 2173304836 + name 1_394_KEY_5 + 2173304837 + name 1_394_KEY_6 + 2173304838 + name 1_394_KEY_7 + 2173304839 + name 1_394_KEY_8 + 2173304840 + name 1_394_KEY_9 + 2173304841 + name 1_394_KEY_POWER + 2173304842 + name 1_394_KEY_CH_UP + 2173304847 + name 1_394_KEY_CH_DOWN + 2173304848 + name 1_394_CH_PREVIOUS + 2173304851 + name 1_395_KEY_0 + 2173370368 + name 1_395_KEY_1 + 2173370369 + name 1_395_KEY_2 + 2173370370 + name 1_395_KEY_3 + 2173370371 + name 1_395_KEY_4 + 2173370372 + name 1_395_KEY_5 + 2173370373 + name 1_395_KEY_6 + 2173370374 + name 1_395_KEY_7 + 2173370375 + name 1_395_KEY_8 + 2173370376 + name 1_395_KEY_9 + 2173370377 + name 1_395_KEY_POWER + 2173370378 + name 1_395_KEY_CH_UP + 2173370383 + name 1_395_KEY_CH_DOWN + 2173370384 + name 1_396_KEY_0 + 2173435904 + name 1_396_KEY_1 + 2173435905 + name 1_396_KEY_2 + 2173435906 + name 1_396_KEY_3 + 2173435907 + name 1_396_KEY_4 + 2173435908 + name 1_396_KEY_5 + 2173435909 + name 1_396_KEY_6 + 2173435910 + name 1_396_KEY_7 + 2173435911 + name 1_396_KEY_8 + 2173435912 + name 1_396_KEY_9 + 2173435913 + name 1_396_KEY_POWER + 2173435914 + name 1_396_TWO_DIGITS + 2173435917 + name 1_396_KEY_CH_UP + 2173435919 + name 1_396_KEY_CH_DOWN + 2173435920 + name 1_396_KEY_AV + 2173435945 + name 1_397_KEY_0 + 2173501440 + name 1_397_KEY_1 + 2173501441 + name 1_397_KEY_2 + 2173501442 + name 1_397_KEY_3 + 2173501443 + name 1_397_KEY_4 + 2173501444 + name 1_397_KEY_5 + 2173501445 + name 1_397_KEY_6 + 2173501446 + name 1_397_KEY_7 + 2173501447 + name 1_397_KEY_8 + 2173501448 + name 1_397_KEY_9 + 2173501449 + name 1_397_KEY_POWER + 2173501450 + name 1_397_KEY_CH_UP + 2173501455 + name 1_397_KEY_CH_DOWN + 2173501456 + name 1_398_KEY_0 + 2173566976 + name 1_398_KEY_1 + 2173566977 + name 1_398_KEY_2 + 2173566978 + name 1_398_KEY_3 + 2173566979 + name 1_398_KEY_4 + 2173566980 + name 1_398_KEY_5 + 2173566981 + name 1_398_KEY_6 + 2173566982 + name 1_398_KEY_7 + 2173566983 + name 1_398_KEY_8 + 2173566984 + name 1_398_KEY_9 + 2173566985 + name 1_398_KEY_POWER + 2173566986 + name 1_398_KEY_CH_UP + 2173566991 + name 1_398_KEY_CH_DOWN + 2173566992 + name 1_399_KEY_0 + 2173632512 + name 1_399_KEY_1 + 2173632513 + name 1_399_KEY_2 + 2173632514 + name 1_399_KEY_3 + 2173632515 + name 1_399_KEY_4 + 2173632516 + name 1_399_KEY_5 + 2173632517 + name 1_399_KEY_6 + 2173632518 + name 1_399_KEY_7 + 2173632519 + name 1_399_KEY_8 + 2173632520 + name 1_399_KEY_9 + 2173632521 + name 1_399_KEY_POWER + 2173632522 + name 1_399_KEY_CH_UP + 2173632527 + name 1_399_KEY_CH_DOWN + 2173632528 + name 1_400_KEY_0 + 2173698048 + name 1_400_KEY_1 + 2173698049 + name 1_400_KEY_2 + 2173698050 + name 1_400_KEY_3 + 2173698051 + name 1_400_KEY_4 + 2173698052 + name 1_400_KEY_5 + 2173698053 + name 1_400_KEY_6 + 2173698054 + name 1_400_KEY_7 + 2173698055 + name 1_400_KEY_8 + 2173698056 + name 1_400_KEY_9 + 2173698057 + name 1_400_KEY_POWER + 2173698058 + name 1_400_KEY_CH_UP + 2173698063 + name 1_400_KEY_CH_DOWN + 2173698064 + name 1_401_KEY_0 + 2173763584 + name 1_401_KEY_1 + 2173763585 + name 1_401_KEY_2 + 2173763586 + name 1_401_KEY_3 + 2173763587 + name 1_401_KEY_4 + 2173763588 + name 1_401_KEY_5 + 2173763589 + name 1_401_KEY_6 + 2173763590 + name 1_401_KEY_7 + 2173763591 + name 1_401_KEY_8 + 2173763592 + name 1_401_KEY_9 + 2173763593 + name 1_401_KEY_POWER + 2173763594 + name 1_401_KEY_CH_UP + 2173763599 + name 1_401_KEY_CH_DOWN + 2173763600 + name 1_401_CH_PREVIOUS + 2173763603 + name 1_402_KEY_0 + 2173829120 + name 1_402_KEY_1 + 2173829121 + name 1_402_KEY_2 + 2173829122 + name 1_402_KEY_3 + 2173829123 + name 1_402_KEY_4 + 2173829124 + name 1_402_KEY_5 + 2173829125 + name 1_402_KEY_6 + 2173829126 + name 1_402_KEY_7 + 2173829127 + name 1_402_KEY_8 + 2173829128 + name 1_402_KEY_9 + 2173829129 + name 1_402_KEY_POWER + 2173829130 + name 1_402_KEY_CH_UP + 2173829135 + name 1_402_KEY_CH_DOWN + 2173829136 + name 1_402_KEY_AV + 2173829161 + name 1_403_KEY_0 + 2173894656 + name 1_403_KEY_1 + 2173894657 + name 1_403_KEY_2 + 2173894658 + name 1_403_KEY_3 + 2173894659 + name 1_403_KEY_4 + 2173894660 + name 1_403_KEY_5 + 2173894661 + name 1_403_KEY_6 + 2173894662 + name 1_403_KEY_7 + 2173894663 + name 1_403_KEY_8 + 2173894664 + name 1_403_KEY_9 + 2173894665 + name 1_403_KEY_POWER + 2173894666 + name 1_403_KEY_CH_UP + 2173894671 + name 1_403_KEY_CH_DOWN + 2173894672 + name 1_404_KEY_0 + 2173960192 + name 1_404_KEY_1 + 2173960193 + name 1_404_KEY_2 + 2173960194 + name 1_404_KEY_3 + 2173960195 + name 1_404_KEY_4 + 2173960196 + name 1_404_KEY_5 + 2173960197 + name 1_404_KEY_6 + 2173960198 + name 1_404_KEY_7 + 2173960199 + name 1_404_KEY_8 + 2173960200 + name 1_404_KEY_9 + 2173960201 + name 1_404_KEY_POWER + 2173960202 + name 1_404_KEY_CH_UP + 2173960207 + name 1_404_KEY_CH_DOWN + 2173960208 + name 1_404_CH_PREVIOUS + 2173960211 + name 1_405_KEY_0 + 2174025728 + name 1_405_KEY_1 + 2174025729 + name 1_405_KEY_2 + 2174025730 + name 1_405_KEY_3 + 2174025731 + name 1_405_KEY_4 + 2174025732 + name 1_405_KEY_5 + 2174025733 + name 1_405_KEY_6 + 2174025734 + name 1_405_KEY_7 + 2174025735 + name 1_405_KEY_8 + 2174025736 + name 1_405_KEY_9 + 2174025737 + name 1_405_KEY_POWER + 2174025738 + name 1_405_KEY_CH_UP + 2174025743 + name 1_405_KEY_CH_DOWN + 2174025744 + name 1_405_CH_PREVIOUS + 2174025747 + name 1_405_KEY_AV + 2174025769 + name 1_406_KEY_0 + 2174091264 + name 1_406_KEY_1 + 2174091265 + name 1_406_KEY_2 + 2174091266 + name 1_406_KEY_3 + 2174091267 + name 1_406_KEY_4 + 2174091268 + name 1_406_KEY_5 + 2174091269 + name 1_406_KEY_6 + 2174091270 + name 1_406_KEY_7 + 2174091271 + name 1_406_KEY_8 + 2174091272 + name 1_406_KEY_9 + 2174091273 + name 1_406_KEY_POWER + 2174091274 + name 1_406_KEY_CH_UP + 2174091279 + name 1_406_KEY_CH_DOWN + 2174091280 + name 1_406_CH_PREVIOUS + 2174091283 + name 1_406_KEY_AV + 2174091305 + name 1_407_KEY_0 + 2174156800 + name 1_407_KEY_1 + 2174156801 + name 1_407_KEY_2 + 2174156802 + name 1_407_KEY_3 + 2174156803 + name 1_407_KEY_4 + 2174156804 + name 1_407_KEY_5 + 2174156805 + name 1_407_KEY_6 + 2174156806 + name 1_407_KEY_7 + 2174156807 + name 1_407_KEY_8 + 2174156808 + name 1_407_KEY_9 + 2174156809 + name 1_407_KEY_POWER + 2174156810 + name 1_407_KEY_CH_UP + 2174156815 + name 1_407_KEY_CH_DOWN + 2174156816 + name 1_407_KEY_Sleep + 2174156863 + name 1_408_KEY_0 + 2174222336 + name 1_408_KEY_1 + 2174222337 + name 1_408_KEY_2 + 2174222338 + name 1_408_KEY_3 + 2174222339 + name 1_408_KEY_4 + 2174222340 + name 1_408_KEY_5 + 2174222341 + name 1_408_KEY_6 + 2174222342 + name 1_408_KEY_7 + 2174222343 + name 1_408_KEY_8 + 2174222344 + name 1_408_KEY_9 + 2174222345 + name 1_408_KEY_POWER + 2174222346 + name 1_408_KEY_CH_UP + 2174222351 + name 1_408_KEY_CH_DOWN + 2174222352 + name 1_408_KEY_AV + 2174222377 + name 1_409_KEY_0 + 2174287872 + name 1_409_KEY_1 + 2174287873 + name 1_409_KEY_2 + 2174287874 + name 1_409_KEY_3 + 2174287875 + name 1_409_KEY_4 + 2174287876 + name 1_409_KEY_5 + 2174287877 + name 1_409_KEY_6 + 2174287878 + name 1_409_KEY_7 + 2174287879 + name 1_409_KEY_8 + 2174287880 + name 1_409_KEY_9 + 2174287881 + name 1_409_KEY_POWER + 2174287882 + name 1_409_KEY_CH_UP + 2174287887 + name 1_409_KEY_CH_DOWN + 2174287888 + name 1_409_KEY_MUTE + 2174287889 + name 1_409_KEY_VOL_DOWN + 2174287890 + name 1_409_KEY_VOL_UP + 2174287892 + name 1_410_KEY_0 + 2174353408 + name 1_410_KEY_1 + 2174353409 + name 1_410_KEY_2 + 2174353410 + name 1_410_KEY_3 + 2174353411 + name 1_410_KEY_4 + 2174353412 + name 1_410_KEY_5 + 2174353413 + name 1_410_KEY_6 + 2174353414 + name 1_410_KEY_7 + 2174353415 + name 1_410_KEY_8 + 2174353416 + name 1_410_KEY_9 + 2174353417 + name 1_410_KEY_POWER + 2174353418 + name 1_410_KEY_CH_UP + 2174353423 + name 1_410_KEY_CH_DOWN + 2174353424 + name 1_411_KEY_0 + 2174418944 + name 1_411_KEY_1 + 2174418945 + name 1_411_KEY_2 + 2174418946 + name 1_411_KEY_3 + 2174418947 + name 1_411_KEY_4 + 2174418948 + name 1_411_KEY_5 + 2174418949 + name 1_411_KEY_6 + 2174418950 + name 1_411_KEY_7 + 2174418951 + name 1_411_KEY_8 + 2174418952 + name 1_411_KEY_9 + 2174418953 + name 1_411_KEY_POWER + 2174418954 + name 1_411_TWO_DIGITS + 2174418957 + name 1_411_KEY_CH_UP + 2174418959 + name 1_411_KEY_CH_DOWN + 2174418960 + name 1_412_KEY_0 + 2174484480 + name 1_412_KEY_1 + 2174484481 + name 1_412_KEY_2 + 2174484482 + name 1_412_KEY_3 + 2174484483 + name 1_412_KEY_4 + 2174484484 + name 1_412_KEY_5 + 2174484485 + name 1_412_KEY_6 + 2174484486 + name 1_412_KEY_7 + 2174484487 + name 1_412_KEY_8 + 2174484488 + name 1_412_KEY_9 + 2174484489 + name 1_412_KEY_POWER + 2174484490 + name 1_412_TWO_DIGITS + 2174484493 + name 1_412_KEY_CH_UP + 2174484495 + name 1_412_KEY_CH_DOWN + 2174484496 + name 1_412_KEY_AV + 2174484521 + name 1_413_KEY_0 + 2174550016 + name 1_413_KEY_1 + 2174550017 + name 1_413_KEY_2 + 2174550018 + name 1_413_KEY_3 + 2174550019 + name 1_413_KEY_4 + 2174550020 + name 1_413_KEY_5 + 2174550021 + name 1_413_KEY_6 + 2174550022 + name 1_413_KEY_7 + 2174550023 + name 1_413_KEY_8 + 2174550024 + name 1_413_KEY_9 + 2174550025 + name 1_413_KEY_POWER + 2174550026 + name 1_413_KEY_CH_UP + 2174550031 + name 1_413_KEY_CH_DOWN + 2174550032 + name 1_413_CH_PREVIOUS + 2174550035 + name 1_413_KEY_AV + 2174550057 + name 1_413_KEY_Sleep + 2174550079 + name 1_414_KEY_0 + 2174615552 + name 1_414_KEY_1 + 2174615553 + name 1_414_KEY_2 + 2174615554 + name 1_414_KEY_3 + 2174615555 + name 1_414_KEY_4 + 2174615556 + name 1_414_KEY_5 + 2174615557 + name 1_414_KEY_6 + 2174615558 + name 1_414_KEY_7 + 2174615559 + name 1_414_KEY_8 + 2174615560 + name 1_414_KEY_9 + 2174615561 + name 1_414_KEY_POWER + 2174615562 + name 1_414_KEY_CH_UP + 2174615567 + name 1_414_KEY_CH_DOWN + 2174615568 + name 1_415_KEY_0 + 2174681088 + name 1_415_KEY_1 + 2174681089 + name 1_415_KEY_2 + 2174681090 + name 1_415_KEY_3 + 2174681091 + name 1_415_KEY_4 + 2174681092 + name 1_415_KEY_5 + 2174681093 + name 1_415_KEY_6 + 2174681094 + name 1_415_KEY_7 + 2174681095 + name 1_415_KEY_8 + 2174681096 + name 1_415_KEY_9 + 2174681097 + name 1_415_KEY_POWER + 2174681098 + name 1_415_TWO_DIGITS + 2174681101 + name 1_415_KEY_CH_UP + 2174681103 + name 1_415_KEY_CH_DOWN + 2174681104 + name 1_416_KEY_0 + 2174746624 + name 1_416_KEY_1 + 2174746625 + name 1_416_KEY_2 + 2174746626 + name 1_416_KEY_3 + 2174746627 + name 1_416_KEY_4 + 2174746628 + name 1_416_KEY_5 + 2174746629 + name 1_416_KEY_6 + 2174746630 + name 1_416_KEY_7 + 2174746631 + name 1_416_KEY_8 + 2174746632 + name 1_416_KEY_9 + 2174746633 + name 1_416_KEY_POWER + 2174746634 + name 1_416_KEY_CH_UP + 2174746639 + name 1_416_KEY_CH_DOWN + 2174746640 + name 1_417_KEY_0 + 2174812160 + name 1_417_KEY_1 + 2174812161 + name 1_417_KEY_2 + 2174812162 + name 1_417_KEY_3 + 2174812163 + name 1_417_KEY_4 + 2174812164 + name 1_417_KEY_5 + 2174812165 + name 1_417_KEY_6 + 2174812166 + name 1_417_KEY_7 + 2174812167 + name 1_417_KEY_8 + 2174812168 + name 1_417_KEY_9 + 2174812169 + name 1_417_KEY_POWER + 2174812170 + name 1_417_TWO_DIGITS + 2174812173 + name 1_417_KEY_CH_UP + 2174812175 + name 1_417_KEY_CH_DOWN + 2174812176 + name 1_417_KEY_AV + 2174812201 + name 1_418_KEY_0 + 2174877696 + name 1_418_KEY_1 + 2174877697 + name 1_418_KEY_2 + 2174877698 + name 1_418_KEY_3 + 2174877699 + name 1_418_KEY_4 + 2174877700 + name 1_418_KEY_5 + 2174877701 + name 1_418_KEY_6 + 2174877702 + name 1_418_KEY_7 + 2174877703 + name 1_418_KEY_8 + 2174877704 + name 1_418_KEY_9 + 2174877705 + name 1_418_KEY_POWER + 2174877706 + name 1_418_KEY_CH_UP + 2174877711 + name 1_418_KEY_CH_DOWN + 2174877712 + name 1_419_KEY_0 + 2174943232 + name 1_419_KEY_1 + 2174943233 + name 1_419_KEY_2 + 2174943234 + name 1_419_KEY_3 + 2174943235 + name 1_419_KEY_4 + 2174943236 + name 1_419_KEY_5 + 2174943237 + name 1_419_KEY_6 + 2174943238 + name 1_419_KEY_7 + 2174943239 + name 1_419_KEY_8 + 2174943240 + name 1_419_KEY_9 + 2174943241 + name 1_419_KEY_POWER + 2174943242 + name 1_419_TWO_DIGITS + 2174943245 + name 1_419_KEY_CH_UP + 2174943247 + name 1_419_KEY_CH_DOWN + 2174943248 + name 1_420_KEY_0 + 2175008768 + name 1_420_KEY_1 + 2175008769 + name 1_420_KEY_2 + 2175008770 + name 1_420_KEY_3 + 2175008771 + name 1_420_KEY_4 + 2175008772 + name 1_420_KEY_5 + 2175008773 + name 1_420_KEY_6 + 2175008774 + name 1_420_KEY_7 + 2175008775 + name 1_420_KEY_8 + 2175008776 + name 1_420_KEY_9 + 2175008777 + name 1_420_KEY_POWER + 2175008778 + name 1_420_TWO_DIGITS + 2175008781 + name 1_420_KEY_CH_UP + 2175008783 + name 1_420_KEY_CH_DOWN + 2175008784 + name 1_420_KEY_Sleep + 2175008831 + name 1_421_KEY_0 + 2175074304 + name 1_421_KEY_1 + 2175074305 + name 1_421_KEY_2 + 2175074306 + name 1_421_KEY_3 + 2175074307 + name 1_421_KEY_4 + 2175074308 + name 1_421_KEY_5 + 2175074309 + name 1_421_KEY_6 + 2175074310 + name 1_421_KEY_7 + 2175074311 + name 1_421_KEY_8 + 2175074312 + name 1_421_KEY_9 + 2175074313 + name 1_421_KEY_POWER + 2175074314 + name 1_421_KEY_CH_UP + 2175074319 + name 1_421_KEY_CH_DOWN + 2175074320 + name 1_421_CH_PREVIOUS + 2175074323 + name 1_422_KEY_0 + 2175139840 + name 1_422_KEY_1 + 2175139841 + name 1_422_KEY_2 + 2175139842 + name 1_422_KEY_3 + 2175139843 + name 1_422_KEY_4 + 2175139844 + name 1_422_KEY_5 + 2175139845 + name 1_422_KEY_6 + 2175139846 + name 1_422_KEY_7 + 2175139847 + name 1_422_KEY_8 + 2175139848 + name 1_422_KEY_9 + 2175139849 + name 1_422_KEY_POWER + 2175139850 + name 1_422_KEY_CH_UP + 2175139855 + name 1_422_KEY_CH_DOWN + 2175139856 + name 1_422_CH_PREVIOUS + 2175139859 + name 1_423_KEY_0 + 2175205376 + name 1_423_KEY_1 + 2175205377 + name 1_423_KEY_2 + 2175205378 + name 1_423_KEY_3 + 2175205379 + name 1_423_KEY_4 + 2175205380 + name 1_423_KEY_5 + 2175205381 + name 1_423_KEY_6 + 2175205382 + name 1_423_KEY_7 + 2175205383 + name 1_423_KEY_8 + 2175205384 + name 1_423_KEY_9 + 2175205385 + name 1_423_KEY_POWER + 2175205386 + name 1_423_KEY_CH_UP + 2175205391 + name 1_423_KEY_CH_DOWN + 2175205392 + name 1_423_KEY_AV + 2175205417 + name 1_424_KEY_0 + 2175270912 + name 1_424_KEY_1 + 2175270913 + name 1_424_KEY_2 + 2175270914 + name 1_424_KEY_3 + 2175270915 + name 1_424_KEY_4 + 2175270916 + name 1_424_KEY_5 + 2175270917 + name 1_424_KEY_6 + 2175270918 + name 1_424_KEY_7 + 2175270919 + name 1_424_KEY_8 + 2175270920 + name 1_424_KEY_9 + 2175270921 + name 1_424_KEY_POWER + 2175270922 + name 1_424_KEY_CH_UP + 2175270927 + name 1_424_KEY_CH_DOWN + 2175270928 + name 1_424_KEY_MUTE + 2175270929 + name 1_424_KEY_VOL_DOWN + 2175270930 + name 1_424_KEY_VOL_UP + 2175270932 + name 1_425_KEY_0 + 2175336448 + name 1_425_KEY_1 + 2175336449 + name 1_425_KEY_2 + 2175336450 + name 1_425_KEY_3 + 2175336451 + name 1_425_KEY_4 + 2175336452 + name 1_425_KEY_5 + 2175336453 + name 1_425_KEY_6 + 2175336454 + name 1_425_KEY_7 + 2175336455 + name 1_425_KEY_8 + 2175336456 + name 1_425_KEY_9 + 2175336457 + name 1_425_KEY_POWER + 2175336458 + name 1_425_KEY_CH_UP + 2175336463 + name 1_425_KEY_CH_DOWN + 2175336464 + name 1_425_KEY_AV + 2175336489 + name 1_426_KEY_0 + 2175401984 + name 1_426_KEY_1 + 2175401985 + name 1_426_KEY_2 + 2175401986 + name 1_426_KEY_3 + 2175401987 + name 1_426_KEY_4 + 2175401988 + name 1_426_KEY_5 + 2175401989 + name 1_426_KEY_6 + 2175401990 + name 1_426_KEY_7 + 2175401991 + name 1_426_KEY_8 + 2175401992 + name 1_426_KEY_9 + 2175401993 + name 1_426_KEY_POWER + 2175401994 + name 1_426_KEY_CH_UP + 2175401999 + name 1_426_KEY_CH_DOWN + 2175402000 + name 1_427_KEY_0 + 2175467520 + name 1_427_KEY_1 + 2175467521 + name 1_427_KEY_2 + 2175467522 + name 1_427_KEY_3 + 2175467523 + name 1_427_KEY_4 + 2175467524 + name 1_427_KEY_5 + 2175467525 + name 1_427_KEY_6 + 2175467526 + name 1_427_KEY_7 + 2175467527 + name 1_427_KEY_8 + 2175467528 + name 1_427_KEY_9 + 2175467529 + name 1_427_KEY_POWER + 2175467530 + name 1_427_KEY_CH_UP + 2175467535 + name 1_427_KEY_CH_DOWN + 2175467536 + name 1_427_KEY_AV + 2175467561 + name 1_428_KEY_0 + 2175533056 + name 1_428_KEY_1 + 2175533057 + name 1_428_KEY_2 + 2175533058 + name 1_428_KEY_3 + 2175533059 + name 1_428_KEY_4 + 2175533060 + name 1_428_KEY_5 + 2175533061 + name 1_428_KEY_6 + 2175533062 + name 1_428_KEY_7 + 2175533063 + name 1_428_KEY_8 + 2175533064 + name 1_428_KEY_9 + 2175533065 + name 1_428_KEY_POWER + 2175533066 + name 1_428_TWO_DIGITS + 2175533069 + name 1_428_KEY_CH_UP + 2175533071 + name 1_428_KEY_CH_DOWN + 2175533072 + name 1_429_KEY_0 + 2175598592 + name 1_429_KEY_1 + 2175598593 + name 1_429_KEY_2 + 2175598594 + name 1_429_KEY_3 + 2175598595 + name 1_429_KEY_4 + 2175598596 + name 1_429_KEY_5 + 2175598597 + name 1_429_KEY_6 + 2175598598 + name 1_429_KEY_7 + 2175598599 + name 1_429_KEY_8 + 2175598600 + name 1_429_KEY_9 + 2175598601 + name 1_429_KEY_POWER + 2175598602 + name 1_429_TWO_DIGITS + 2175598605 + name 1_429_KEY_CH_UP + 2175598607 + name 1_429_KEY_CH_DOWN + 2175598608 + name 1_429_KEY_AV + 2175598633 + name 1_430_KEY_0 + 2175664128 + name 1_430_KEY_1 + 2175664129 + name 1_430_KEY_2 + 2175664130 + name 1_430_KEY_3 + 2175664131 + name 1_430_KEY_4 + 2175664132 + name 1_430_KEY_5 + 2175664133 + name 1_430_KEY_6 + 2175664134 + name 1_430_KEY_7 + 2175664135 + name 1_430_KEY_8 + 2175664136 + name 1_430_KEY_9 + 2175664137 + name 1_430_KEY_POWER + 2175664138 + name 1_430_KEY_CH_UP + 2175664143 + name 1_430_KEY_CH_DOWN + 2175664144 + name 1_431_KEY_0 + 2175729664 + name 1_431_KEY_1 + 2175729665 + name 1_431_KEY_2 + 2175729666 + name 1_431_KEY_3 + 2175729667 + name 1_431_KEY_4 + 2175729668 + name 1_431_KEY_5 + 2175729669 + name 1_431_KEY_6 + 2175729670 + name 1_431_KEY_7 + 2175729671 + name 1_431_KEY_8 + 2175729672 + name 1_431_KEY_9 + 2175729673 + name 1_431_KEY_POWER + 2175729674 + name 1_431_KEY_CH_UP + 2175729679 + name 1_431_KEY_CH_DOWN + 2175729680 + name 1_431_CH_PREVIOUS + 2175729683 + name 1_432_KEY_0 + 2175795200 + name 1_432_KEY_1 + 2175795201 + name 1_432_KEY_2 + 2175795202 + name 1_432_KEY_3 + 2175795203 + name 1_432_KEY_4 + 2175795204 + name 1_432_KEY_5 + 2175795205 + name 1_432_KEY_6 + 2175795206 + name 1_432_KEY_7 + 2175795207 + name 1_432_KEY_8 + 2175795208 + name 1_432_KEY_9 + 2175795209 + name 1_432_KEY_POWER + 2175795210 + name 1_432_KEY_CH_UP + 2175795215 + name 1_432_KEY_CH_DOWN + 2175795216 + name 1_433_KEY_0 + 2175860736 + name 1_433_KEY_1 + 2175860737 + name 1_433_KEY_2 + 2175860738 + name 1_433_KEY_3 + 2175860739 + name 1_433_KEY_4 + 2175860740 + name 1_433_KEY_5 + 2175860741 + name 1_433_KEY_6 + 2175860742 + name 1_433_KEY_7 + 2175860743 + name 1_433_KEY_8 + 2175860744 + name 1_433_KEY_9 + 2175860745 + name 1_433_KEY_POWER + 2175860746 + name 1_433_KEY_CH_UP + 2175860751 + name 1_433_KEY_CH_DOWN + 2175860752 + name 1_434_KEY_0 + 2175926272 + name 1_434_KEY_1 + 2175926273 + name 1_434_KEY_2 + 2175926274 + name 1_434_KEY_3 + 2175926275 + name 1_434_KEY_4 + 2175926276 + name 1_434_KEY_5 + 2175926277 + name 1_434_KEY_6 + 2175926278 + name 1_434_KEY_7 + 2175926279 + name 1_434_KEY_8 + 2175926280 + name 1_434_KEY_9 + 2175926281 + name 1_434_KEY_POWER + 2175926282 + name 1_434_TWO_DIGITS + 2175926285 + name 1_434_KEY_CH_UP + 2175926287 + name 1_434_KEY_CH_DOWN + 2175926288 + name 1_435_KEY_0 + 2175991808 + name 1_435_KEY_1 + 2175991809 + name 1_435_KEY_2 + 2175991810 + name 1_435_KEY_3 + 2175991811 + name 1_435_KEY_4 + 2175991812 + name 1_435_KEY_5 + 2175991813 + name 1_435_KEY_6 + 2175991814 + name 1_435_KEY_7 + 2175991815 + name 1_435_KEY_8 + 2175991816 + name 1_435_KEY_9 + 2175991817 + name 1_435_KEY_POWER + 2175991818 + name 1_435_KEY_CH_UP + 2175991823 + name 1_435_KEY_CH_DOWN + 2175991824 + name 1_435_KEY_AV + 2175991849 + name 1_436_KEY_0 + 2176057344 + name 1_436_KEY_1 + 2176057345 + name 1_436_KEY_2 + 2176057346 + name 1_436_KEY_3 + 2176057347 + name 1_436_KEY_4 + 2176057348 + name 1_436_KEY_5 + 2176057349 + name 1_436_KEY_6 + 2176057350 + name 1_436_KEY_7 + 2176057351 + name 1_436_KEY_8 + 2176057352 + name 1_436_KEY_9 + 2176057353 + name 1_436_KEY_POWER + 2176057354 + name 1_436_TWO_DIGITS + 2176057357 + name 1_436_KEY_CH_UP + 2176057359 + name 1_436_KEY_CH_DOWN + 2176057360 + name 1_436_KEY_AV + 2176057385 + name 1_437_KEY_0 + 2176122880 + name 1_437_KEY_1 + 2176122881 + name 1_437_KEY_2 + 2176122882 + name 1_437_KEY_3 + 2176122883 + name 1_437_KEY_4 + 2176122884 + name 1_437_KEY_5 + 2176122885 + name 1_437_KEY_6 + 2176122886 + name 1_437_KEY_7 + 2176122887 + name 1_437_KEY_8 + 2176122888 + name 1_437_KEY_9 + 2176122889 + name 1_437_KEY_POWER + 2176122890 + name 1_437_KEY_CH_UP + 2176122895 + name 1_437_KEY_CH_DOWN + 2176122896 + name 1_437_KEY_AV + 2176122921 + name 1_438_KEY_0 + 2176188416 + name 1_438_KEY_1 + 2176188417 + name 1_438_KEY_2 + 2176188418 + name 1_438_KEY_3 + 2176188419 + name 1_438_KEY_4 + 2176188420 + name 1_438_KEY_5 + 2176188421 + name 1_438_KEY_6 + 2176188422 + name 1_438_KEY_7 + 2176188423 + name 1_438_KEY_8 + 2176188424 + name 1_438_KEY_9 + 2176188425 + name 1_438_KEY_POWER + 2176188426 + name 1_438_KEY_CH_UP + 2176188431 + name 1_438_KEY_CH_DOWN + 2176188432 + name 1_438_KEY_AV + 2176188457 + name 1_439_KEY_0 + 2176253952 + name 1_439_KEY_1 + 2176253953 + name 1_439_KEY_2 + 2176253954 + name 1_439_KEY_3 + 2176253955 + name 1_439_KEY_4 + 2176253956 + name 1_439_KEY_5 + 2176253957 + name 1_439_KEY_6 + 2176253958 + name 1_439_KEY_7 + 2176253959 + name 1_439_KEY_8 + 2176253960 + name 1_439_KEY_9 + 2176253961 + name 1_439_KEY_POWER + 2176253962 + name 1_439_KEY_CH_UP + 2176253967 + name 1_439_KEY_CH_DOWN + 2176253968 + name 1_440_KEY_0 + 2176319488 + name 1_440_KEY_1 + 2176319489 + name 1_440_KEY_2 + 2176319490 + name 1_440_KEY_3 + 2176319491 + name 1_440_KEY_4 + 2176319492 + name 1_440_KEY_5 + 2176319493 + name 1_440_KEY_6 + 2176319494 + name 1_440_KEY_7 + 2176319495 + name 1_440_KEY_8 + 2176319496 + name 1_440_KEY_9 + 2176319497 + name 1_440_KEY_POWER + 2176319498 + name 1_440_TWO_DIGITS + 2176319501 + name 1_440_KEY_CH_UP + 2176319503 + name 1_440_KEY_CH_DOWN + 2176319504 + name 1_440_KEY_AV + 2176319529 + name 1_441_KEY_0 + 2176385024 + name 1_441_KEY_1 + 2176385025 + name 1_441_KEY_2 + 2176385026 + name 1_441_KEY_3 + 2176385027 + name 1_441_KEY_4 + 2176385028 + name 1_441_KEY_5 + 2176385029 + name 1_441_KEY_6 + 2176385030 + name 1_441_KEY_7 + 2176385031 + name 1_441_KEY_8 + 2176385032 + name 1_441_KEY_9 + 2176385033 + name 1_441_KEY_POWER + 2176385034 + name 1_441_KEY_CH_UP + 2176385039 + name 1_441_KEY_CH_DOWN + 2176385040 + name 1_442_KEY_0 + 2176450560 + name 1_442_KEY_1 + 2176450561 + name 1_442_KEY_2 + 2176450562 + name 1_442_KEY_3 + 2176450563 + name 1_442_KEY_4 + 2176450564 + name 1_442_KEY_5 + 2176450565 + name 1_442_KEY_6 + 2176450566 + name 1_442_KEY_7 + 2176450567 + name 1_442_KEY_8 + 2176450568 + name 1_442_KEY_9 + 2176450569 + name 1_442_KEY_POWER + 2176450570 + name 1_442_KEY_CH_UP + 2176450575 + name 1_442_KEY_CH_DOWN + 2176450576 + name 1_443_KEY_0 + 2176516096 + name 1_443_KEY_1 + 2176516097 + name 1_443_KEY_2 + 2176516098 + name 1_443_KEY_3 + 2176516099 + name 1_443_KEY_4 + 2176516100 + name 1_443_KEY_5 + 2176516101 + name 1_443_KEY_6 + 2176516102 + name 1_443_KEY_7 + 2176516103 + name 1_443_KEY_8 + 2176516104 + name 1_443_KEY_9 + 2176516105 + name 1_443_KEY_POWER + 2176516106 + name 1_443_KEY_CH_UP + 2176516111 + name 1_443_KEY_CH_DOWN + 2176516112 + name 1_444_KEY_0 + 2176581632 + name 1_444_KEY_1 + 2176581633 + name 1_444_KEY_2 + 2176581634 + name 1_444_KEY_3 + 2176581635 + name 1_444_KEY_4 + 2176581636 + name 1_444_KEY_5 + 2176581637 + name 1_444_KEY_6 + 2176581638 + name 1_444_KEY_7 + 2176581639 + name 1_444_KEY_8 + 2176581640 + name 1_444_KEY_9 + 2176581641 + name 1_444_KEY_POWER + 2176581642 + name 1_444_KEY_CH_UP + 2176581647 + name 1_444_KEY_CH_DOWN + 2176581648 + name 1_444_CH_PREVIOUS + 2176581651 + name 1_444_KEY_AV + 2176581673 + name 1_444_KEY_Sleep + 2176581695 + name 1_445_KEY_0 + 2176647168 + name 1_445_KEY_1 + 2176647169 + name 1_445_KEY_2 + 2176647170 + name 1_445_KEY_3 + 2176647171 + name 1_445_KEY_4 + 2176647172 + name 1_445_KEY_5 + 2176647173 + name 1_445_KEY_6 + 2176647174 + name 1_445_KEY_7 + 2176647175 + name 1_445_KEY_8 + 2176647176 + name 1_445_KEY_9 + 2176647177 + name 1_445_KEY_POWER + 2176647178 + name 1_445_TWO_DIGITS + 2176647181 + name 1_445_KEY_CH_UP + 2176647183 + name 1_445_KEY_CH_DOWN + 2176647184 + name 1_446_KEY_0 + 2176712704 + name 1_446_KEY_1 + 2176712705 + name 1_446_KEY_2 + 2176712706 + name 1_446_KEY_3 + 2176712707 + name 1_446_KEY_4 + 2176712708 + name 1_446_KEY_5 + 2176712709 + name 1_446_KEY_6 + 2176712710 + name 1_446_KEY_7 + 2176712711 + name 1_446_KEY_8 + 2176712712 + name 1_446_KEY_9 + 2176712713 + name 1_446_KEY_POWER + 2176712714 + name 1_446_TWO_DIGITS + 2176712717 + name 1_446_KEY_CH_UP + 2176712719 + name 1_446_KEY_CH_DOWN + 2176712720 + name 1_446_KEY_Sleep + 2176712767 + name 1_447_KEY_0 + 2176778240 + name 1_447_KEY_1 + 2176778241 + name 1_447_KEY_2 + 2176778242 + name 1_447_KEY_3 + 2176778243 + name 1_447_KEY_4 + 2176778244 + name 1_447_KEY_5 + 2176778245 + name 1_447_KEY_6 + 2176778246 + name 1_447_KEY_7 + 2176778247 + name 1_447_KEY_8 + 2176778248 + name 1_447_KEY_9 + 2176778249 + name 1_447_KEY_POWER + 2176778250 + name 1_447_TWO_DIGITS + 2176778253 + name 1_447_KEY_CH_UP + 2176778255 + name 1_447_KEY_CH_DOWN + 2176778256 + name 1_448_KEY_0 + 2176843776 + name 1_448_KEY_1 + 2176843777 + name 1_448_KEY_2 + 2176843778 + name 1_448_KEY_3 + 2176843779 + name 1_448_KEY_4 + 2176843780 + name 1_448_KEY_5 + 2176843781 + name 1_448_KEY_6 + 2176843782 + name 1_448_KEY_7 + 2176843783 + name 1_448_KEY_8 + 2176843784 + name 1_448_KEY_9 + 2176843785 + name 1_448_KEY_POWER + 2176843786 + name 1_448_KEY_CH_UP + 2176843791 + name 1_448_KEY_CH_DOWN + 2176843792 + name 1_448_KEY_Sleep + 2176843839 + name 1_449_KEY_0 + 2176909312 + name 1_449_KEY_1 + 2176909313 + name 1_449_KEY_2 + 2176909314 + name 1_449_KEY_3 + 2176909315 + name 1_449_KEY_4 + 2176909316 + name 1_449_KEY_5 + 2176909317 + name 1_449_KEY_6 + 2176909318 + name 1_449_KEY_7 + 2176909319 + name 1_449_KEY_8 + 2176909320 + name 1_449_KEY_9 + 2176909321 + name 1_449_KEY_POWER + 2176909322 + name 1_449_TWO_DIGITS + 2176909325 + name 1_449_KEY_CH_UP + 2176909327 + name 1_449_KEY_CH_DOWN + 2176909328 + name 1_449_CH_PREVIOUS + 2176909331 + name 1_449_KEY_AV + 2176909353 + name 1_450_KEY_0 + 2176974848 + name 1_450_KEY_1 + 2176974849 + name 1_450_KEY_2 + 2176974850 + name 1_450_KEY_3 + 2176974851 + name 1_450_KEY_4 + 2176974852 + name 1_450_KEY_5 + 2176974853 + name 1_450_KEY_6 + 2176974854 + name 1_450_KEY_7 + 2176974855 + name 1_450_KEY_8 + 2176974856 + name 1_450_KEY_9 + 2176974857 + name 1_450_KEY_POWER + 2176974858 + name 1_450_KEY_CH_UP + 2176974863 + name 1_450_KEY_CH_DOWN + 2176974864 + name 1_451_KEY_0 + 2177040384 + name 1_451_KEY_1 + 2177040385 + name 1_451_KEY_2 + 2177040386 + name 1_451_KEY_3 + 2177040387 + name 1_451_KEY_4 + 2177040388 + name 1_451_KEY_5 + 2177040389 + name 1_451_KEY_6 + 2177040390 + name 1_451_KEY_7 + 2177040391 + name 1_451_KEY_8 + 2177040392 + name 1_451_KEY_9 + 2177040393 + name 1_451_KEY_POWER + 2177040394 + name 1_451_KEY_CH_UP + 2177040399 + name 1_451_KEY_CH_DOWN + 2177040400 + name 1_452_KEY_0 + 2177105920 + name 1_452_KEY_1 + 2177105921 + name 1_452_KEY_2 + 2177105922 + name 1_452_KEY_3 + 2177105923 + name 1_452_KEY_4 + 2177105924 + name 1_452_KEY_5 + 2177105925 + name 1_452_KEY_6 + 2177105926 + name 1_452_KEY_7 + 2177105927 + name 1_452_KEY_8 + 2177105928 + name 1_452_KEY_9 + 2177105929 + name 1_452_KEY_POWER + 2177105930 + name 1_452_KEY_CH_UP + 2177105935 + name 1_452_KEY_CH_DOWN + 2177105936 + name 1_452_KEY_AV + 2177105961 + name 1_453_KEY_0 + 2177171456 + name 1_453_KEY_1 + 2177171457 + name 1_453_KEY_2 + 2177171458 + name 1_453_KEY_3 + 2177171459 + name 1_453_KEY_4 + 2177171460 + name 1_453_KEY_5 + 2177171461 + name 1_453_KEY_6 + 2177171462 + name 1_453_KEY_7 + 2177171463 + name 1_453_KEY_8 + 2177171464 + name 1_453_KEY_9 + 2177171465 + name 1_453_KEY_POWER + 2177171466 + name 1_453_KEY_CH_UP + 2177171471 + name 1_453_KEY_CH_DOWN + 2177171472 + name 1_453_KEY_Sleep + 2177171519 + name 1_454_KEY_0 + 2177236992 + name 1_454_KEY_1 + 2177236993 + name 1_454_KEY_2 + 2177236994 + name 1_454_KEY_3 + 2177236995 + name 1_454_KEY_4 + 2177236996 + name 1_454_KEY_5 + 2177236997 + name 1_454_KEY_6 + 2177236998 + name 1_454_KEY_7 + 2177236999 + name 1_454_KEY_8 + 2177237000 + name 1_454_KEY_9 + 2177237001 + name 1_454_KEY_POWER + 2177237002 + name 1_454_KEY_CH_UP + 2177237007 + name 1_454_KEY_CH_DOWN + 2177237008 + name 1_455_KEY_0 + 2177302528 + name 1_455_KEY_1 + 2177302529 + name 1_455_KEY_2 + 2177302530 + name 1_455_KEY_3 + 2177302531 + name 1_455_KEY_4 + 2177302532 + name 1_455_KEY_5 + 2177302533 + name 1_455_KEY_6 + 2177302534 + name 1_455_KEY_7 + 2177302535 + name 1_455_KEY_8 + 2177302536 + name 1_455_KEY_9 + 2177302537 + name 1_455_KEY_POWER + 2177302538 + name 1_455_KEY_CH_UP + 2177302543 + name 1_455_KEY_CH_DOWN + 2177302544 + name 1_455_KEY_MUTE + 2177302545 + name 1_455_KEY_VOL_DOWN + 2177302546 + name 1_455_KEY_VOL_UP + 2177302548 + name 1_456_KEY_0 + 2177368064 + name 1_456_KEY_1 + 2177368065 + name 1_456_KEY_2 + 2177368066 + name 1_456_KEY_3 + 2177368067 + name 1_456_KEY_4 + 2177368068 + name 1_456_KEY_5 + 2177368069 + name 1_456_KEY_6 + 2177368070 + name 1_456_KEY_7 + 2177368071 + name 1_456_KEY_8 + 2177368072 + name 1_456_KEY_9 + 2177368073 + name 1_456_KEY_POWER + 2177368074 + name 1_456_KEY_CH_UP + 2177368079 + name 1_456_KEY_CH_DOWN + 2177368080 + name 1_456_CH_PREVIOUS + 2177368083 + name 1_457_KEY_0 + 2177433600 + name 1_457_KEY_1 + 2177433601 + name 1_457_KEY_2 + 2177433602 + name 1_457_KEY_3 + 2177433603 + name 1_457_KEY_4 + 2177433604 + name 1_457_KEY_5 + 2177433605 + name 1_457_KEY_6 + 2177433606 + name 1_457_KEY_7 + 2177433607 + name 1_457_KEY_8 + 2177433608 + name 1_457_KEY_9 + 2177433609 + name 1_457_KEY_POWER + 2177433610 + name 1_457_TWO_DIGITS + 2177433613 + name 1_457_KEY_CH_UP + 2177433615 + name 1_457_KEY_CH_DOWN + 2177433616 + name 1_457_CH_PREVIOUS + 2177433619 + name 1_457_KEY_AV + 2177433641 + name 1_458_KEY_0 + 2177499136 + name 1_458_KEY_1 + 2177499137 + name 1_458_KEY_2 + 2177499138 + name 1_458_KEY_3 + 2177499139 + name 1_458_KEY_4 + 2177499140 + name 1_458_KEY_5 + 2177499141 + name 1_458_KEY_6 + 2177499142 + name 1_458_KEY_7 + 2177499143 + name 1_458_KEY_8 + 2177499144 + name 1_458_KEY_9 + 2177499145 + name 1_458_KEY_POWER + 2177499146 + name 1_458_KEY_CH_UP + 2177499151 + name 1_458_KEY_CH_DOWN + 2177499152 + name 1_459_KEY_0 + 2177564672 + name 1_459_KEY_1 + 2177564673 + name 1_459_KEY_2 + 2177564674 + name 1_459_KEY_3 + 2177564675 + name 1_459_KEY_4 + 2177564676 + name 1_459_KEY_5 + 2177564677 + name 1_459_KEY_6 + 2177564678 + name 1_459_KEY_7 + 2177564679 + name 1_459_KEY_8 + 2177564680 + name 1_459_KEY_9 + 2177564681 + name 1_459_KEY_POWER + 2177564682 + name 1_459_KEY_CH_UP + 2177564687 + name 1_459_KEY_CH_DOWN + 2177564688 + name 1_459_CH_PREVIOUS + 2177564691 + name 1_459_KEY_Sleep + 2177564735 + name 1_460_KEY_0 + 2177630208 + name 1_460_KEY_1 + 2177630209 + name 1_460_KEY_2 + 2177630210 + name 1_460_KEY_3 + 2177630211 + name 1_460_KEY_4 + 2177630212 + name 1_460_KEY_5 + 2177630213 + name 1_460_KEY_6 + 2177630214 + name 1_460_KEY_7 + 2177630215 + name 1_460_KEY_8 + 2177630216 + name 1_460_KEY_9 + 2177630217 + name 1_460_KEY_POWER + 2177630218 + name 1_460_KEY_CH_UP + 2177630223 + name 1_460_KEY_CH_DOWN + 2177630224 + name 1_460_KEY_AV + 2177630249 + name 1_461_KEY_0 + 2177695744 + name 1_461_KEY_1 + 2177695745 + name 1_461_KEY_2 + 2177695746 + name 1_461_KEY_3 + 2177695747 + name 1_461_KEY_4 + 2177695748 + name 1_461_KEY_5 + 2177695749 + name 1_461_KEY_6 + 2177695750 + name 1_461_KEY_7 + 2177695751 + name 1_461_KEY_8 + 2177695752 + name 1_461_KEY_9 + 2177695753 + name 1_461_KEY_POWER + 2177695754 + name 1_461_KEY_CH_UP + 2177695759 + name 1_461_KEY_CH_DOWN + 2177695760 + name 1_461_KEY_AV + 2177695785 + name 1_461_KEY_Sleep + 2177695807 + name 1_462_KEY_0 + 2177761280 + name 1_462_KEY_1 + 2177761281 + name 1_462_KEY_2 + 2177761282 + name 1_462_KEY_3 + 2177761283 + name 1_462_KEY_4 + 2177761284 + name 1_462_KEY_5 + 2177761285 + name 1_462_KEY_6 + 2177761286 + name 1_462_KEY_7 + 2177761287 + name 1_462_KEY_8 + 2177761288 + name 1_462_KEY_9 + 2177761289 + name 1_462_KEY_POWER + 2177761290 + name 1_462_KEY_CH_UP + 2177761295 + name 1_462_KEY_CH_DOWN + 2177761296 + name 1_462_CH_PREVIOUS + 2177761299 + name 1_462_KEY_AV + 2177761321 + name 1_463_KEY_0 + 2177826816 + name 1_463_KEY_1 + 2177826817 + name 1_463_KEY_2 + 2177826818 + name 1_463_KEY_3 + 2177826819 + name 1_463_KEY_4 + 2177826820 + name 1_463_KEY_5 + 2177826821 + name 1_463_KEY_6 + 2177826822 + name 1_463_KEY_7 + 2177826823 + name 1_463_KEY_8 + 2177826824 + name 1_463_KEY_9 + 2177826825 + name 1_463_KEY_POWER + 2177826826 + name 1_463_KEY_CH_UP + 2177826831 + name 1_463_KEY_CH_DOWN + 2177826832 + name 1_463_KEY_AV + 2177826857 + name 1_464_KEY_0 + 2177892352 + name 1_464_KEY_1 + 2177892353 + name 1_464_KEY_2 + 2177892354 + name 1_464_KEY_3 + 2177892355 + name 1_464_KEY_4 + 2177892356 + name 1_464_KEY_5 + 2177892357 + name 1_464_KEY_6 + 2177892358 + name 1_464_KEY_7 + 2177892359 + name 1_464_KEY_8 + 2177892360 + name 1_464_KEY_9 + 2177892361 + name 1_464_KEY_POWER + 2177892362 + name 1_464_KEY_CH_UP + 2177892367 + name 1_464_KEY_CH_DOWN + 2177892368 + name 1_465_KEY_0 + 2177957888 + name 1_465_KEY_1 + 2177957889 + name 1_465_KEY_2 + 2177957890 + name 1_465_KEY_3 + 2177957891 + name 1_465_KEY_4 + 2177957892 + name 1_465_KEY_5 + 2177957893 + name 1_465_KEY_6 + 2177957894 + name 1_465_KEY_7 + 2177957895 + name 1_465_KEY_8 + 2177957896 + name 1_465_KEY_9 + 2177957897 + name 1_465_KEY_POWER + 2177957898 + name 1_465_KEY_CH_UP + 2177957903 + name 1_465_KEY_CH_DOWN + 2177957904 + name 1_466_KEY_0 + 2178023424 + name 1_466_KEY_1 + 2178023425 + name 1_466_KEY_2 + 2178023426 + name 1_466_KEY_3 + 2178023427 + name 1_466_KEY_4 + 2178023428 + name 1_466_KEY_5 + 2178023429 + name 1_466_KEY_6 + 2178023430 + name 1_466_KEY_7 + 2178023431 + name 1_466_KEY_8 + 2178023432 + name 1_466_KEY_9 + 2178023433 + name 1_466_KEY_POWER + 2178023434 + name 1_466_KEY_CH_UP + 2178023439 + name 1_466_KEY_CH_DOWN + 2178023440 + name 1_466_KEY_AV + 2178023465 + name 1_466_KEY_Sleep + 2178023487 + name 1_467_KEY_0 + 2178088960 + name 1_467_KEY_1 + 2178088961 + name 1_467_KEY_2 + 2178088962 + name 1_467_KEY_3 + 2178088963 + name 1_467_KEY_4 + 2178088964 + name 1_467_KEY_5 + 2178088965 + name 1_467_KEY_6 + 2178088966 + name 1_467_KEY_7 + 2178088967 + name 1_467_KEY_8 + 2178088968 + name 1_467_KEY_9 + 2178088969 + name 1_467_KEY_POWER + 2178088970 + name 1_467_KEY_CH_UP + 2178088975 + name 1_467_KEY_CH_DOWN + 2178088976 + name 1_468_KEY_0 + 2178154496 + name 1_468_KEY_1 + 2178154497 + name 1_468_KEY_2 + 2178154498 + name 1_468_KEY_3 + 2178154499 + name 1_468_KEY_4 + 2178154500 + name 1_468_KEY_5 + 2178154501 + name 1_468_KEY_6 + 2178154502 + name 1_468_KEY_7 + 2178154503 + name 1_468_KEY_8 + 2178154504 + name 1_468_KEY_9 + 2178154505 + name 1_468_KEY_POWER + 2178154506 + name 1_468_KEY_CH_UP + 2178154511 + name 1_468_KEY_CH_DOWN + 2178154512 + name 1_469_KEY_0 + 2178220032 + name 1_469_KEY_1 + 2178220033 + name 1_469_KEY_2 + 2178220034 + name 1_469_KEY_3 + 2178220035 + name 1_469_KEY_4 + 2178220036 + name 1_469_KEY_5 + 2178220037 + name 1_469_KEY_6 + 2178220038 + name 1_469_KEY_7 + 2178220039 + name 1_469_KEY_8 + 2178220040 + name 1_469_KEY_9 + 2178220041 + name 1_469_KEY_POWER + 2178220042 + name 1_469_TWO_DIGITS + 2178220045 + name 1_469_KEY_CH_UP + 2178220047 + name 1_469_KEY_CH_DOWN + 2178220048 + name 1_470_KEY_0 + 2178285568 + name 1_470_KEY_1 + 2178285569 + name 1_470_KEY_2 + 2178285570 + name 1_470_KEY_3 + 2178285571 + name 1_470_KEY_4 + 2178285572 + name 1_470_KEY_5 + 2178285573 + name 1_470_KEY_6 + 2178285574 + name 1_470_KEY_7 + 2178285575 + name 1_470_KEY_8 + 2178285576 + name 1_470_KEY_9 + 2178285577 + name 1_470_KEY_POWER + 2178285578 + name 1_470_KEY_CH_UP + 2178285583 + name 1_470_KEY_CH_DOWN + 2178285584 + name 1_471_KEY_0 + 2178351104 + name 1_471_KEY_1 + 2178351105 + name 1_471_KEY_2 + 2178351106 + name 1_471_KEY_3 + 2178351107 + name 1_471_KEY_4 + 2178351108 + name 1_471_KEY_5 + 2178351109 + name 1_471_KEY_6 + 2178351110 + name 1_471_KEY_7 + 2178351111 + name 1_471_KEY_8 + 2178351112 + name 1_471_KEY_9 + 2178351113 + name 1_471_KEY_POWER + 2178351114 + name 1_471_KEY_CH_UP + 2178351119 + name 1_471_KEY_CH_DOWN + 2178351120 + name 1_471_CH_PREVIOUS + 2178351123 + name 1_471_KEY_AV + 2178351145 + name 1_472_KEY_0 + 2178416640 + name 1_472_KEY_1 + 2178416641 + name 1_472_KEY_2 + 2178416642 + name 1_472_KEY_3 + 2178416643 + name 1_472_KEY_4 + 2178416644 + name 1_472_KEY_5 + 2178416645 + name 1_472_KEY_6 + 2178416646 + name 1_472_KEY_7 + 2178416647 + name 1_472_KEY_8 + 2178416648 + name 1_472_KEY_9 + 2178416649 + name 1_472_KEY_POWER + 2178416650 + name 1_472_KEY_CH_UP + 2178416655 + name 1_472_KEY_CH_DOWN + 2178416656 + name 1_472_KEY_AV + 2178416681 + name 1_473_KEY_0 + 2178482176 + name 1_473_KEY_1 + 2178482177 + name 1_473_KEY_2 + 2178482178 + name 1_473_KEY_3 + 2178482179 + name 1_473_KEY_4 + 2178482180 + name 1_473_KEY_5 + 2178482181 + name 1_473_KEY_6 + 2178482182 + name 1_473_KEY_7 + 2178482183 + name 1_473_KEY_8 + 2178482184 + name 1_473_KEY_9 + 2178482185 + name 1_473_KEY_POWER + 2178482186 + name 1_473_KEY_CH_UP + 2178482191 + name 1_473_KEY_CH_DOWN + 2178482192 + name 1_473_KEY_AV + 2178482217 + name 1_474_KEY_0 + 2178547712 + name 1_474_KEY_1 + 2178547713 + name 1_474_KEY_2 + 2178547714 + name 1_474_KEY_3 + 2178547715 + name 1_474_KEY_4 + 2178547716 + name 1_474_KEY_5 + 2178547717 + name 1_474_KEY_6 + 2178547718 + name 1_474_KEY_7 + 2178547719 + name 1_474_KEY_8 + 2178547720 + name 1_474_KEY_9 + 2178547721 + name 1_474_KEY_POWER + 2178547722 + name 1_474_KEY_CH_UP + 2178547727 + name 1_474_KEY_CH_DOWN + 2178547728 + name 1_474_CH_PREVIOUS + 2178547731 + name 1_474_KEY_AV + 2178547753 + name 1_475_KEY_0 + 2178613248 + name 1_475_KEY_1 + 2178613249 + name 1_475_KEY_2 + 2178613250 + name 1_475_KEY_3 + 2178613251 + name 1_475_KEY_4 + 2178613252 + name 1_475_KEY_5 + 2178613253 + name 1_475_KEY_6 + 2178613254 + name 1_475_KEY_7 + 2178613255 + name 1_475_KEY_8 + 2178613256 + name 1_475_KEY_9 + 2178613257 + name 1_475_KEY_POWER + 2178613258 + name 1_475_KEY_CH_UP + 2178613263 + name 1_475_KEY_CH_DOWN + 2178613264 + name 1_475_KEY_AV + 2178613289 + name 1_476_KEY_0 + 2178678784 + name 1_476_KEY_1 + 2178678785 + name 1_476_KEY_2 + 2178678786 + name 1_476_KEY_3 + 2178678787 + name 1_476_KEY_4 + 2178678788 + name 1_476_KEY_5 + 2178678789 + name 1_476_KEY_6 + 2178678790 + name 1_476_KEY_7 + 2178678791 + name 1_476_KEY_8 + 2178678792 + name 1_476_KEY_9 + 2178678793 + name 1_476_KEY_POWER + 2178678794 + name 1_476_TWO_DIGITS + 2178678797 + name 1_476_KEY_CH_UP + 2178678799 + name 1_476_KEY_CH_DOWN + 2178678800 + name 1_476_KEY_AV + 2178678825 + name 1_478_KEY_0 + 2178809856 + name 1_478_KEY_1 + 2178809857 + name 1_478_KEY_2 + 2178809858 + name 1_478_KEY_3 + 2178809859 + name 1_478_KEY_4 + 2178809860 + name 1_478_KEY_5 + 2178809861 + name 1_478_KEY_6 + 2178809862 + name 1_478_KEY_7 + 2178809863 + name 1_478_KEY_8 + 2178809864 + name 1_478_KEY_9 + 2178809865 + name 1_478_KEY_POWER + 2178809866 + name 1_478_KEY_CH_UP + 2178809871 + name 1_478_KEY_CH_DOWN + 2178809872 + name 1_478_KEY_MUTE + 2178809873 + name 1_478_KEY_VOL_DOWN + 2178809874 + name 1_478_CH_PREVIOUS + 2178809875 + name 1_478_KEY_VOL_UP + 2178809876 + name 1_478_KEY_AV + 2178809897 + name 1_478_KEY_MENU + 2178809903 + name 1_478_KEY_MUP + 2178809904 + name 1_478_KEY_MDOWN + 2178809905 + name 1_478_KEY_MLEFT + 2178809906 + name 1_478_KEY_MRIGHT + 2178809907 + name 1_478_KEY_Sleep + 2178809919 + name 1_479_KEY_0 + 2178875392 + name 1_479_KEY_1 + 2178875393 + name 1_479_KEY_2 + 2178875394 + name 1_479_KEY_3 + 2178875395 + name 1_479_KEY_4 + 2178875396 + name 1_479_KEY_5 + 2178875397 + name 1_479_KEY_6 + 2178875398 + name 1_479_KEY_7 + 2178875399 + name 1_479_KEY_8 + 2178875400 + name 1_479_KEY_9 + 2178875401 + name 1_479_KEY_POWER + 2178875402 + name 1_479_KEY_CH_UP + 2178875407 + name 1_479_KEY_CH_DOWN + 2178875408 + name 1_479_KEY_MUTE + 2178875409 + name 1_479_KEY_VOL_DOWN + 2178875410 + name 1_479_KEY_VOL_UP + 2178875412 + name 1_480_KEY_0 + 2178940928 + name 1_480_KEY_1 + 2178940929 + name 1_480_KEY_2 + 2178940930 + name 1_480_KEY_3 + 2178940931 + name 1_480_KEY_4 + 2178940932 + name 1_480_KEY_5 + 2178940933 + name 1_480_KEY_6 + 2178940934 + name 1_480_KEY_7 + 2178940935 + name 1_480_KEY_8 + 2178940936 + name 1_480_KEY_9 + 2178940937 + name 1_480_KEY_POWER + 2178940938 + name 1_480_KEY_CH_UP + 2178940943 + name 1_480_KEY_CH_DOWN + 2178940944 + name 1_481_KEY_0 + 2179006464 + name 1_481_KEY_1 + 2179006465 + name 1_481_KEY_2 + 2179006466 + name 1_481_KEY_3 + 2179006467 + name 1_481_KEY_4 + 2179006468 + name 1_481_KEY_5 + 2179006469 + name 1_481_KEY_6 + 2179006470 + name 1_481_KEY_7 + 2179006471 + name 1_481_KEY_8 + 2179006472 + name 1_481_KEY_9 + 2179006473 + name 1_481_KEY_POWER + 2179006474 + name 1_481_TWO_DIGITS + 2179006477 + name 1_481_KEY_CH_UP + 2179006479 + name 1_481_KEY_CH_DOWN + 2179006480 + name 1_481_KEY_AV + 2179006505 + name 1_482_KEY_0 + 2179072000 + name 1_482_KEY_1 + 2179072001 + name 1_482_KEY_2 + 2179072002 + name 1_482_KEY_3 + 2179072003 + name 1_482_KEY_4 + 2179072004 + name 1_482_KEY_5 + 2179072005 + name 1_482_KEY_6 + 2179072006 + name 1_482_KEY_7 + 2179072007 + name 1_482_KEY_8 + 2179072008 + name 1_482_KEY_9 + 2179072009 + name 1_482_KEY_POWER + 2179072010 + name 1_482_KEY_CH_UP + 2179072015 + name 1_482_KEY_CH_DOWN + 2179072016 + name 1_482_CH_PREVIOUS + 2179072019 + name 1_483_KEY_0 + 2179137536 + name 1_483_KEY_1 + 2179137537 + name 1_483_KEY_2 + 2179137538 + name 1_483_KEY_3 + 2179137539 + name 1_483_KEY_4 + 2179137540 + name 1_483_KEY_5 + 2179137541 + name 1_483_KEY_6 + 2179137542 + name 1_483_KEY_7 + 2179137543 + name 1_483_KEY_8 + 2179137544 + name 1_483_KEY_9 + 2179137545 + name 1_483_KEY_POWER + 2179137546 + name 1_483_KEY_CH_UP + 2179137551 + name 1_483_KEY_CH_DOWN + 2179137552 + name 1_483_CH_PREVIOUS + 2179137555 + name 1_484_KEY_0 + 2179203072 + name 1_484_KEY_1 + 2179203073 + name 1_484_KEY_2 + 2179203074 + name 1_484_KEY_3 + 2179203075 + name 1_484_KEY_4 + 2179203076 + name 1_484_KEY_5 + 2179203077 + name 1_484_KEY_6 + 2179203078 + name 1_484_KEY_7 + 2179203079 + name 1_484_KEY_8 + 2179203080 + name 1_484_KEY_9 + 2179203081 + name 1_484_KEY_POWER + 2179203082 + name 1_484_KEY_CH_UP + 2179203087 + name 1_484_KEY_CH_DOWN + 2179203088 + name 1_485_KEY_0 + 2179268608 + name 1_485_KEY_1 + 2179268609 + name 1_485_KEY_2 + 2179268610 + name 1_485_KEY_3 + 2179268611 + name 1_485_KEY_4 + 2179268612 + name 1_485_KEY_5 + 2179268613 + name 1_485_KEY_6 + 2179268614 + name 1_485_KEY_7 + 2179268615 + name 1_485_KEY_8 + 2179268616 + name 1_485_KEY_9 + 2179268617 + name 1_485_KEY_POWER + 2179268618 + name 1_485_KEY_CH_UP + 2179268623 + name 1_485_KEY_CH_DOWN + 2179268624 + name 1_485_CH_PREVIOUS + 2179268627 + name 1_485_KEY_AV + 2179268649 + name 1_486_KEY_0 + 2179334144 + name 1_486_KEY_1 + 2179334145 + name 1_486_KEY_2 + 2179334146 + name 1_486_KEY_3 + 2179334147 + name 1_486_KEY_4 + 2179334148 + name 1_486_KEY_5 + 2179334149 + name 1_486_KEY_6 + 2179334150 + name 1_486_KEY_7 + 2179334151 + name 1_486_KEY_8 + 2179334152 + name 1_486_KEY_9 + 2179334153 + name 1_486_KEY_POWER + 2179334154 + name 1_486_KEY_CH_UP + 2179334159 + name 1_486_KEY_CH_DOWN + 2179334160 + name 1_487_KEY_0 + 2179399680 + name 1_487_KEY_1 + 2179399681 + name 1_487_KEY_2 + 2179399682 + name 1_487_KEY_3 + 2179399683 + name 1_487_KEY_4 + 2179399684 + name 1_487_KEY_5 + 2179399685 + name 1_487_KEY_6 + 2179399686 + name 1_487_KEY_7 + 2179399687 + name 1_487_KEY_8 + 2179399688 + name 1_487_KEY_9 + 2179399689 + name 1_487_KEY_POWER + 2179399690 + name 1_487_KEY_CH_UP + 2179399695 + name 1_487_KEY_CH_DOWN + 2179399696 + name 1_487_CH_PREVIOUS + 2179399699 + name 1_488_KEY_0 + 2179465216 + name 1_488_KEY_1 + 2179465217 + name 1_488_KEY_2 + 2179465218 + name 1_488_KEY_3 + 2179465219 + name 1_488_KEY_4 + 2179465220 + name 1_488_KEY_5 + 2179465221 + name 1_488_KEY_6 + 2179465222 + name 1_488_KEY_7 + 2179465223 + name 1_488_KEY_8 + 2179465224 + name 1_488_KEY_9 + 2179465225 + name 1_488_KEY_POWER + 2179465226 + name 1_488_TWO_DIGITS + 2179465229 + name 1_488_KEY_CH_UP + 2179465231 + name 1_488_KEY_CH_DOWN + 2179465232 + name 1_489_KEY_0 + 2179530752 + name 1_489_KEY_1 + 2179530753 + name 1_489_KEY_2 + 2179530754 + name 1_489_KEY_3 + 2179530755 + name 1_489_KEY_4 + 2179530756 + name 1_489_KEY_5 + 2179530757 + name 1_489_KEY_6 + 2179530758 + name 1_489_KEY_7 + 2179530759 + name 1_489_KEY_8 + 2179530760 + name 1_489_KEY_9 + 2179530761 + name 1_489_KEY_POWER + 2179530762 + name 1_489_KEY_CH_UP + 2179530767 + name 1_489_KEY_CH_DOWN + 2179530768 + name 1_489_CH_PREVIOUS + 2179530771 + name 1_490_KEY_0 + 2179596288 + name 1_490_KEY_1 + 2179596289 + name 1_490_KEY_2 + 2179596290 + name 1_490_KEY_3 + 2179596291 + name 1_490_KEY_4 + 2179596292 + name 1_490_KEY_5 + 2179596293 + name 1_490_KEY_6 + 2179596294 + name 1_490_KEY_7 + 2179596295 + name 1_490_KEY_8 + 2179596296 + name 1_490_KEY_9 + 2179596297 + name 1_490_KEY_POWER + 2179596298 + name 1_490_KEY_CH_UP + 2179596303 + name 1_490_KEY_CH_DOWN + 2179596304 + name 1_490_KEY_MUTE + 2179596305 + name 1_490_KEY_VOL_DOWN + 2179596306 + name 1_490_CH_PREVIOUS + 2179596307 + name 1_490_KEY_VOL_UP + 2179596308 + name 1_490_KEY_AV + 2179596329 + name 1_498_KEY_0 + 2180120576 + name 1_498_KEY_1 + 2180120577 + name 1_498_KEY_2 + 2180120578 + name 1_498_KEY_3 + 2180120579 + name 1_498_KEY_4 + 2180120580 + name 1_498_KEY_5 + 2180120581 + name 1_498_KEY_6 + 2180120582 + name 1_498_KEY_7 + 2180120583 + name 1_498_KEY_8 + 2180120584 + name 1_498_KEY_9 + 2180120585 + name 1_498_KEY_POWER + 2180120586 + name 1_498_KEY_CH_UP + 2180120591 + name 1_498_KEY_CH_DOWN + 2180120592 + name 1_498_KEY_MUTE + 2180120593 + name 1_498_KEY_VOL_DOWN + 2180120594 + name 1_498_CH_PREVIOUS + 2180120595 + name 1_498_KEY_VOL_UP + 2180120596 + name 1_498_KEY_MNSELECT + 2180120599 + name 1_498_KEY_EXIT + 2180120600 + name 1_498_KEY_FAV + 2180120605 + name 1_498_KEY_MUP + 2180120624 + name 1_498_KEY_MDOWN + 2180120625 + name 1_498_KEY_MLEFT + 2180120626 + name 1_498_KEY_MRIGHT + 2180120627 + name 1_499_KEY_0 + 2180186112 + name 1_499_KEY_1 + 2180186113 + name 1_499_KEY_2 + 2180186114 + name 1_499_KEY_3 + 2180186115 + name 1_499_KEY_4 + 2180186116 + name 1_499_KEY_5 + 2180186117 + name 1_499_KEY_6 + 2180186118 + name 1_499_KEY_7 + 2180186119 + name 1_499_KEY_8 + 2180186120 + name 1_499_KEY_9 + 2180186121 + name 1_499_KEY_POWER + 2180186122 + name 1_499_KEY_CH_UP + 2180186127 + name 1_499_KEY_CH_DOWN + 2180186128 + name 1_499_KEY_MUTE + 2180186129 + name 1_499_KEY_VOL_DOWN + 2180186130 + name 1_499_CH_PREVIOUS + 2180186131 + name 1_499_KEY_VOL_UP + 2180186132 + name 1_499_KEY_MNSELECT + 2180186135 + name 1_499_KEY_EXIT + 2180186136 + name 1_499_KEY_GUIDE + 2180186139 + name 1_499_KEY_MENU + 2180186159 + name 1_499_KEY_MUP + 2180186160 + name 1_499_KEY_MDOWN + 2180186161 + name 1_499_KEY_MLEFT + 2180186162 + name 1_499_KEY_MRIGHT + 2180186163 + name 1_499_KEY_DSubtitle + 2180186180 + name 1_500_KEY_0 + 2180251648 + name 1_500_KEY_1 + 2180251649 + name 1_500_KEY_2 + 2180251650 + name 1_500_KEY_3 + 2180251651 + name 1_500_KEY_4 + 2180251652 + name 1_500_KEY_5 + 2180251653 + name 1_500_KEY_6 + 2180251654 + name 1_500_KEY_7 + 2180251655 + name 1_500_KEY_8 + 2180251656 + name 1_500_KEY_9 + 2180251657 + name 1_500_KEY_POWER + 2180251658 + name 1_500_KEY_CH_UP + 2180251663 + name 1_500_KEY_CH_DOWN + 2180251664 + name 1_500_KEY_MUTE + 2180251665 + name 1_500_KEY_VOL_DOWN + 2180251666 + name 1_500_KEY_VOL_UP + 2180251668 + name 1_500_KEY_MNSELECT + 2180251671 + name 1_500_KEY_EXIT + 2180251672 + name 1_500_KEY_MENU + 2180251695 + name 1_500_KEY_MUP + 2180251696 + name 1_500_KEY_MDOWN + 2180251697 + name 1_500_KEY_MLEFT + 2180251698 + name 1_500_KEY_MRIGHT + 2180251699 + name 1_500_KEY_Sleep + 2180251711 + name 1_501_KEY_0 + 2180317184 + name 1_501_KEY_1 + 2180317185 + name 1_501_KEY_2 + 2180317186 + name 1_501_KEY_3 + 2180317187 + name 1_501_KEY_4 + 2180317188 + name 1_501_KEY_5 + 2180317189 + name 1_501_KEY_6 + 2180317190 + name 1_501_KEY_7 + 2180317191 + name 1_501_KEY_8 + 2180317192 + name 1_501_KEY_9 + 2180317193 + name 1_501_KEY_POWER + 2180317194 + name 1_501_KEY_CH_UP + 2180317199 + name 1_501_KEY_CH_DOWN + 2180317200 + name 1_501_KEY_MUTE + 2180317201 + name 1_501_KEY_VOL_DOWN + 2180317202 + name 1_501_CH_PREVIOUS + 2180317203 + name 1_501_KEY_VOL_UP + 2180317204 + name 1_501_KEY_MNSELECT + 2180317207 + name 1_501_KEY_EXIT + 2180317208 + name 1_501_KEY_GUIDE + 2180317211 + name 1_501_KEY_AV + 2180317225 + name 1_501_KEY_MENU + 2180317231 + name 1_501_KEY_MUP + 2180317232 + name 1_501_KEY_MDOWN + 2180317233 + name 1_501_KEY_MLEFT + 2180317234 + name 1_501_KEY_MRIGHT + 2180317235 + name 1_502_KEY_0 + 2180382720 + name 1_502_KEY_1 + 2180382721 + name 1_502_KEY_2 + 2180382722 + name 1_502_KEY_3 + 2180382723 + name 1_502_KEY_4 + 2180382724 + name 1_502_KEY_5 + 2180382725 + name 1_502_KEY_6 + 2180382726 + name 1_502_KEY_7 + 2180382727 + name 1_502_KEY_8 + 2180382728 + name 1_502_KEY_9 + 2180382729 + name 1_502_KEY_POWER + 2180382730 + name 1_502_KEY_MUTE + 2180382737 + name 1_502_CH_PREVIOUS + 2180382739 + name 1_502_KEY_MNSELECT + 2180382743 + name 1_502_KEY_EXIT + 2180382744 + name 1_502_KEY_MENU + 2180382767 + name 1_503_KEY_0 + 2180448256 + name 1_503_KEY_1 + 2180448257 + name 1_503_KEY_2 + 2180448258 + name 1_503_KEY_3 + 2180448259 + name 1_503_KEY_4 + 2180448260 + name 1_503_KEY_5 + 2180448261 + name 1_503_KEY_6 + 2180448262 + name 1_503_KEY_7 + 2180448263 + name 1_503_KEY_8 + 2180448264 + name 1_503_KEY_9 + 2180448265 + name 1_503_KEY_POWER + 2180448266 + name 1_503_KEY_MUTE + 2180448273 + name 1_503_CH_PREVIOUS + 2180448275 + name 1_503_KEY_MNSELECT + 2180448279 + name 1_503_KEY_GUIDE + 2180448283 + name 1_503_KEY_MENU + 2180448303 + name 1_504_KEY_0 + 2180513792 + name 1_504_KEY_1 + 2180513793 + name 1_504_KEY_2 + 2180513794 + name 1_504_KEY_3 + 2180513795 + name 1_504_KEY_4 + 2180513796 + name 1_504_KEY_5 + 2180513797 + name 1_504_KEY_6 + 2180513798 + name 1_504_KEY_7 + 2180513799 + name 1_504_KEY_8 + 2180513800 + name 1_504_KEY_9 + 2180513801 + name 1_504_KEY_POWER + 2180513802 + name 1_504_KEY_MUTE + 2180513809 + name 1_504_CH_PREVIOUS + 2180513811 + name 1_504_KEY_MNSELECT + 2180513815 + name 1_504_KEY_MENU + 2180513839 + name 1_505_KEY_0 + 2180579328 + name 1_505_KEY_1 + 2180579329 + name 1_505_KEY_2 + 2180579330 + name 1_505_KEY_3 + 2180579331 + name 1_505_KEY_4 + 2180579332 + name 1_505_KEY_5 + 2180579333 + name 1_505_KEY_6 + 2180579334 + name 1_505_KEY_7 + 2180579335 + name 1_505_KEY_8 + 2180579336 + name 1_505_KEY_9 + 2180579337 + name 1_505_KEY_POWER + 2180579338 + name 1_505_KEY_CH_UP + 2180579343 + name 1_505_KEY_CH_DOWN + 2180579344 + name 1_505_KEY_MUTE + 2180579345 + name 1_505_KEY_VOL_DOWN + 2180579346 + name 1_505_KEY_VOL_UP + 2180579348 + name 1_505_KEY_MNSELECT + 2180579351 + name 1_505_KEY_EXIT + 2180579352 + name 1_505_KEY_GUIDE + 2180579355 + name 1_505_KEY_AV + 2180579369 + name 1_505_KEY_MENU + 2180579375 + name 1_505_KEY_MUP + 2180579376 + name 1_505_KEY_MDOWN + 2180579377 + name 1_505_KEY_MLEFT + 2180579378 + name 1_505_KEY_MRIGHT + 2180579379 + name 1_505_KEY_TTOnOff + 2180579401 + name 1_506_KEY_0 + 2180644864 + name 1_506_KEY_1 + 2180644865 + name 1_506_KEY_2 + 2180644866 + name 1_506_KEY_3 + 2180644867 + name 1_506_KEY_4 + 2180644868 + name 1_506_KEY_5 + 2180644869 + name 1_506_KEY_6 + 2180644870 + name 1_506_KEY_7 + 2180644871 + name 1_506_KEY_8 + 2180644872 + name 1_506_KEY_9 + 2180644873 + name 1_506_KEY_POWER + 2180644874 + name 1_506_TWO_DIGITS + 2180644877 + name 1_506_KEY_CH_UP + 2180644879 + name 1_506_KEY_CH_DOWN + 2180644880 + name 1_507_KEY_0 + 2180710400 + name 1_507_KEY_1 + 2180710401 + name 1_507_KEY_2 + 2180710402 + name 1_507_KEY_3 + 2180710403 + name 1_507_KEY_4 + 2180710404 + name 1_507_KEY_5 + 2180710405 + name 1_507_KEY_6 + 2180710406 + name 1_507_KEY_7 + 2180710407 + name 1_507_KEY_8 + 2180710408 + name 1_507_KEY_9 + 2180710409 + name 1_507_KEY_POWER + 2180710410 + name 1_507_TWO_DIGITS + 2180710413 + name 1_507_KEY_CH_UP + 2180710415 + name 1_507_KEY_CH_DOWN + 2180710416 + name 1_507_KEY_MUP + 2180710448 + name 1_507_KEY_MDOWN + 2180710449 + name 1_508_KEY_0 + 2180775936 + name 1_508_KEY_1 + 2180775937 + name 1_508_KEY_2 + 2180775938 + name 1_508_KEY_3 + 2180775939 + name 1_508_KEY_4 + 2180775940 + name 1_508_KEY_5 + 2180775941 + name 1_508_KEY_6 + 2180775942 + name 1_508_KEY_7 + 2180775943 + name 1_508_KEY_8 + 2180775944 + name 1_508_KEY_9 + 2180775945 + name 1_508_KEY_POWER + 2180775946 + name 1_508_KEY_CH_UP + 2180775951 + name 1_508_KEY_CH_DOWN + 2180775952 + name 1_508_CH_PREVIOUS + 2180775955 + name 1_509_KEY_0 + 2180841472 + name 1_509_KEY_1 + 2180841473 + name 1_509_KEY_2 + 2180841474 + name 1_509_KEY_3 + 2180841475 + name 1_509_KEY_4 + 2180841476 + name 1_509_KEY_5 + 2180841477 + name 1_509_KEY_6 + 2180841478 + name 1_509_KEY_7 + 2180841479 + name 1_509_KEY_8 + 2180841480 + name 1_509_KEY_9 + 2180841481 + name 1_509_KEY_POWER + 2180841482 + name 1_509_KEY_CH_UP + 2180841487 + name 1_509_KEY_CH_DOWN + 2180841488 + name 1_509_KEY_MUP + 2180841520 + name 1_509_KEY_MDOWN + 2180841521 + name 1_510_KEY_0 + 2180907008 + name 1_510_KEY_1 + 2180907009 + name 1_510_KEY_2 + 2180907010 + name 1_510_KEY_3 + 2180907011 + name 1_510_KEY_4 + 2180907012 + name 1_510_KEY_5 + 2180907013 + name 1_510_KEY_6 + 2180907014 + name 1_510_KEY_7 + 2180907015 + name 1_510_KEY_8 + 2180907016 + name 1_510_KEY_9 + 2180907017 + name 1_510_KEY_POWER + 2180907018 + name 1_510_KEY_CH_UP + 2180907023 + name 1_510_KEY_CH_DOWN + 2180907024 + name 1_510_KEY_MNSELECT + 2180907031 + name 1_510_KEY_MENU + 2180907055 + name 1_510_KEY_MUP + 2180907056 + name 1_510_KEY_MDOWN + 2180907057 + name 1_510_KEY_MLEFT + 2180907058 + name 1_510_KEY_MRIGHT + 2180907059 + name 1_511_KEY_0 + 2180972544 + name 1_511_KEY_1 + 2180972545 + name 1_511_KEY_2 + 2180972546 + name 1_511_KEY_3 + 2180972547 + name 1_511_KEY_4 + 2180972548 + name 1_511_KEY_5 + 2180972549 + name 1_511_KEY_6 + 2180972550 + name 1_511_KEY_7 + 2180972551 + name 1_511_KEY_8 + 2180972552 + name 1_511_KEY_9 + 2180972553 + name 1_511_KEY_POWER + 2180972554 + name 1_511_KEY_CH_UP + 2180972559 + name 1_511_KEY_CH_DOWN + 2180972560 + name 1_511_KEY_MNSELECT + 2180972567 + name 1_511_KEY_MENU + 2180972591 + name 1_511_KEY_MUP + 2180972592 + name 1_511_KEY_MDOWN + 2180972593 + name 1_511_KEY_MLEFT + 2180972594 + name 1_511_KEY_MRIGHT + 2180972595 + name 1_512_KEY_0 + 2181038080 + name 1_512_KEY_1 + 2181038081 + name 1_512_KEY_2 + 2181038082 + name 1_512_KEY_3 + 2181038083 + name 1_512_KEY_4 + 2181038084 + name 1_512_KEY_5 + 2181038085 + name 1_512_KEY_6 + 2181038086 + name 1_512_KEY_7 + 2181038087 + name 1_512_KEY_8 + 2181038088 + name 1_512_KEY_9 + 2181038089 + name 1_512_KEY_POWER + 2181038090 + name 1_512_TWO_DIGITS + 2181038093 + name 1_512_KEY_CH_UP + 2181038095 + name 1_512_KEY_CH_DOWN + 2181038096 + name 1_512_KEY_MNSELECT + 2181038103 + name 1_512_KEY_BLUE + 2181038115 + name 1_512_KEY_GREEN + 2181038116 + name 1_512_KEY_RED + 2181038117 + name 1_512_KEY_YELLOW + 2181038118 + name 1_512_KEY_MENU + 2181038127 + name 1_512_KEY_MUP + 2181038128 + name 1_512_KEY_MDOWN + 2181038129 + name 1_512_KEY_MLEFT + 2181038130 + name 1_512_KEY_MRIGHT + 2181038131 + name 1_512_KEY_On + 2181038157 + name 1_513_KEY_0 + 2181103616 + name 1_513_KEY_1 + 2181103617 + name 1_513_KEY_2 + 2181103618 + name 1_513_KEY_3 + 2181103619 + name 1_513_KEY_4 + 2181103620 + name 1_513_KEY_5 + 2181103621 + name 1_513_KEY_6 + 2181103622 + name 1_513_KEY_7 + 2181103623 + name 1_513_KEY_8 + 2181103624 + name 1_513_KEY_9 + 2181103625 + name 1_513_KEY_POWER + 2181103626 + name 1_513_KEY_CH_UP + 2181103631 + name 1_513_KEY_CH_DOWN + 2181103632 + name 1_513_KEY_MNSELECT + 2181103639 + name 1_513_KEY_MENU + 2181103663 + name 1_514_KEY_0 + 2181169152 + name 1_514_KEY_1 + 2181169153 + name 1_514_KEY_2 + 2181169154 + name 1_514_KEY_3 + 2181169155 + name 1_514_KEY_4 + 2181169156 + name 1_514_KEY_5 + 2181169157 + name 1_514_KEY_6 + 2181169158 + name 1_514_KEY_7 + 2181169159 + name 1_514_KEY_8 + 2181169160 + name 1_514_KEY_9 + 2181169161 + name 1_514_KEY_POWER + 2181169162 + name 1_514_TWO_DIGITS + 2181169165 + name 1_514_KEY_CH_UP + 2181169167 + name 1_514_KEY_CH_DOWN + 2181169168 + name 1_514_CH_PREVIOUS + 2181169171 + name 1_514_KEY_MNSELECT + 2181169175 + name 1_514_KEY_MENU + 2181169199 + name 1_514_KEY_MUP + 2181169200 + name 1_514_KEY_MDOWN + 2181169201 + name 1_514_KEY_MLEFT + 2181169202 + name 1_514_KEY_MRIGHT + 2181169203 + name 1_515_KEY_0 + 2181234688 + name 1_515_KEY_1 + 2181234689 + name 1_515_KEY_2 + 2181234690 + name 1_515_KEY_3 + 2181234691 + name 1_515_KEY_4 + 2181234692 + name 1_515_KEY_5 + 2181234693 + name 1_515_KEY_6 + 2181234694 + name 1_515_KEY_7 + 2181234695 + name 1_515_KEY_8 + 2181234696 + name 1_515_KEY_9 + 2181234697 + name 1_515_KEY_POWER + 2181234698 + name 1_515_TWO_DIGITS + 2181234701 + name 1_515_KEY_CH_UP + 2181234703 + name 1_515_KEY_CH_DOWN + 2181234704 + name 1_515_CH_PREVIOUS + 2181234707 + name 1_515_KEY_MNSELECT + 2181234711 + name 1_515_KEY_MENU + 2181234735 + name 1_515_KEY_MUP + 2181234736 + name 1_515_KEY_MDOWN + 2181234737 + name 1_515_KEY_MLEFT + 2181234738 + name 1_515_KEY_MRIGHT + 2181234739 + name 1_516_KEY_0 + 2181300224 + name 1_516_KEY_1 + 2181300225 + name 1_516_KEY_2 + 2181300226 + name 1_516_KEY_3 + 2181300227 + name 1_516_KEY_4 + 2181300228 + name 1_516_KEY_5 + 2181300229 + name 1_516_KEY_6 + 2181300230 + name 1_516_KEY_7 + 2181300231 + name 1_516_KEY_8 + 2181300232 + name 1_516_KEY_9 + 2181300233 + name 1_516_KEY_POWER + 2181300234 + name 1_516_KEY_CH_UP + 2181300239 + name 1_516_KEY_CH_DOWN + 2181300240 + name 1_516_KEY_MNSELECT + 2181300247 + name 1_516_KEY_GUIDE + 2181300251 + name 1_516_KEY_BLUE + 2181300259 + name 1_516_KEY_GREEN + 2181300260 + name 1_516_KEY_RED + 2181300261 + name 1_516_KEY_YELLOW + 2181300262 + name 1_516_KEY_MENU + 2181300271 + name 1_516_KEY_MUP + 2181300272 + name 1_516_KEY_MDOWN + 2181300273 + name 1_516_KEY_MLEFT + 2181300274 + name 1_516_KEY_MRIGHT + 2181300275 + name 1_517_KEY_0 + 2181365760 + name 1_517_KEY_1 + 2181365761 + name 1_517_KEY_2 + 2181365762 + name 1_517_KEY_3 + 2181365763 + name 1_517_KEY_4 + 2181365764 + name 1_517_KEY_5 + 2181365765 + name 1_517_KEY_6 + 2181365766 + name 1_517_KEY_7 + 2181365767 + name 1_517_KEY_8 + 2181365768 + name 1_517_KEY_9 + 2181365769 + name 1_517_KEY_POWER + 2181365770 + name 1_517_KEY_CH_UP + 2181365775 + name 1_517_KEY_CH_DOWN + 2181365776 + name 1_517_KEY_MNSELECT + 2181365783 + name 1_517_KEY_GUIDE + 2181365787 + name 1_517_KEY_BLUE + 2181365795 + name 1_517_KEY_GREEN + 2181365796 + name 1_517_KEY_RED + 2181365797 + name 1_517_KEY_YELLOW + 2181365798 + name 1_517_KEY_MENU + 2181365807 + name 1_517_KEY_MUP + 2181365808 + name 1_517_KEY_MDOWN + 2181365809 + name 1_517_KEY_MLEFT + 2181365810 + name 1_517_KEY_MRIGHT + 2181365811 + name 1_518_KEY_0 + 2181431296 + name 1_518_KEY_1 + 2181431297 + name 1_518_KEY_2 + 2181431298 + name 1_518_KEY_3 + 2181431299 + name 1_518_KEY_4 + 2181431300 + name 1_518_KEY_5 + 2181431301 + name 1_518_KEY_6 + 2181431302 + name 1_518_KEY_7 + 2181431303 + name 1_518_KEY_8 + 2181431304 + name 1_518_KEY_9 + 2181431305 + name 1_518_KEY_POWER + 2181431306 + name 1_518_KEY_CH_UP + 2181431311 + name 1_518_KEY_CH_DOWN + 2181431312 + name 1_518_CH_PREVIOUS + 2181431315 + name 1_519_KEY_0 + 2181496832 + name 1_519_KEY_1 + 2181496833 + name 1_519_KEY_2 + 2181496834 + name 1_519_KEY_3 + 2181496835 + name 1_519_KEY_4 + 2181496836 + name 1_519_KEY_5 + 2181496837 + name 1_519_KEY_6 + 2181496838 + name 1_519_KEY_7 + 2181496839 + name 1_519_KEY_8 + 2181496840 + name 1_519_KEY_9 + 2181496841 + name 1_519_KEY_POWER + 2181496842 + name 1_519_KEY_CH_UP + 2181496847 + name 1_519_KEY_CH_DOWN + 2181496848 + name 1_519_CH_PREVIOUS + 2181496851 + name 1_519_KEY_MNSELECT + 2181496855 + name 1_519_KEY_GUIDE + 2181496859 + name 1_519_KEY_MENU + 2181496879 + name 1_519_KEY_MUP + 2181496880 + name 1_519_KEY_MDOWN + 2181496881 + name 1_519_KEY_MLEFT + 2181496882 + name 1_519_KEY_MRIGHT + 2181496883 + name 1_520_KEY_0 + 2181562368 + name 1_520_KEY_1 + 2181562369 + name 1_520_KEY_2 + 2181562370 + name 1_520_KEY_3 + 2181562371 + name 1_520_KEY_4 + 2181562372 + name 1_520_KEY_5 + 2181562373 + name 1_520_KEY_6 + 2181562374 + name 1_520_KEY_7 + 2181562375 + name 1_520_KEY_8 + 2181562376 + name 1_520_KEY_9 + 2181562377 + name 1_520_KEY_POWER + 2181562378 + name 1_520_KEY_CH_UP + 2181562383 + name 1_520_KEY_CH_DOWN + 2181562384 + name 1_520_CH_PREVIOUS + 2181562387 + name 1_520_KEY_MNSELECT + 2181562391 + name 1_520_KEY_GUIDE + 2181562395 + name 1_520_KEY_BLUE + 2181562403 + name 1_520_KEY_GREEN + 2181562404 + name 1_520_KEY_RED + 2181562405 + name 1_520_KEY_YELLOW + 2181562406 + name 1_520_KEY_MENU + 2181562415 + name 1_520_KEY_MUP + 2181562416 + name 1_520_KEY_MDOWN + 2181562417 + name 1_520_KEY_MLEFT + 2181562418 + name 1_520_KEY_MRIGHT + 2181562419 + name 1_520_KEY_On + 2181562445 + name 1_521_KEY_0 + 2181627904 + name 1_521_KEY_1 + 2181627905 + name 1_521_KEY_2 + 2181627906 + name 1_521_KEY_3 + 2181627907 + name 1_521_KEY_4 + 2181627908 + name 1_521_KEY_5 + 2181627909 + name 1_521_KEY_6 + 2181627910 + name 1_521_KEY_7 + 2181627911 + name 1_521_KEY_8 + 2181627912 + name 1_521_KEY_9 + 2181627913 + name 1_521_KEY_POWER + 2181627914 + name 1_521_KEY_CH_UP + 2181627919 + name 1_521_KEY_CH_DOWN + 2181627920 + name 1_521_CH_PREVIOUS + 2181627923 + name 1_521_KEY_MNSELECT + 2181627927 + name 1_521_KEY_GUIDE + 2181627931 + name 1_521_KEY_MENU + 2181627951 + name 1_521_KEY_MUP + 2181627952 + name 1_521_KEY_MDOWN + 2181627953 + name 1_521_KEY_MLEFT + 2181627954 + name 1_521_KEY_MRIGHT + 2181627955 + name 1_522_KEY_0 + 2181693440 + name 1_522_KEY_1 + 2181693441 + name 1_522_KEY_2 + 2181693442 + name 1_522_KEY_3 + 2181693443 + name 1_522_KEY_4 + 2181693444 + name 1_522_KEY_5 + 2181693445 + name 1_522_KEY_6 + 2181693446 + name 1_522_KEY_7 + 2181693447 + name 1_522_KEY_8 + 2181693448 + name 1_522_KEY_9 + 2181693449 + name 1_522_KEY_POWER + 2181693450 + name 1_522_KEY_CH_UP + 2181693455 + name 1_522_KEY_CH_DOWN + 2181693456 + name 1_522_CH_PREVIOUS + 2181693459 + name 1_522_KEY_MNSELECT + 2181693463 + name 1_522_KEY_GUIDE + 2181693467 + name 1_522_KEY_BLUE + 2181693475 + name 1_522_KEY_GREEN + 2181693476 + name 1_522_KEY_RED + 2181693477 + name 1_522_KEY_YELLOW + 2181693478 + name 1_522_KEY_MENU + 2181693487 + name 1_522_KEY_MUP + 2181693488 + name 1_522_KEY_MDOWN + 2181693489 + name 1_522_KEY_MLEFT + 2181693490 + name 1_522_KEY_MRIGHT + 2181693491 + name 1_523_KEY_0 + 2181758976 + name 1_523_KEY_1 + 2181758977 + name 1_523_KEY_2 + 2181758978 + name 1_523_KEY_3 + 2181758979 + name 1_523_KEY_4 + 2181758980 + name 1_523_KEY_5 + 2181758981 + name 1_523_KEY_6 + 2181758982 + name 1_523_KEY_7 + 2181758983 + name 1_523_KEY_8 + 2181758984 + name 1_523_KEY_9 + 2181758985 + name 1_523_KEY_POWER + 2181758986 + name 1_523_KEY_CH_UP + 2181758991 + name 1_523_KEY_CH_DOWN + 2181758992 + name 1_523_KEY_MUTE + 2181758993 + name 1_523_KEY_VOL_DOWN + 2181758994 + name 1_523_KEY_VOL_UP + 2181758996 + name 1_523_KEY_MNSELECT + 2181758999 + name 1_523_KEY_EXIT + 2181759000 + name 1_523_KEY_AV + 2181759017 + name 1_523_KEY_MENU + 2181759023 + name 1_523_KEY_MUP + 2181759024 + name 1_523_KEY_MDOWN + 2181759025 + name 1_523_KEY_MLEFT + 2181759026 + name 1_523_KEY_MRIGHT + 2181759027 + name 1_524_KEY_0 + 2181824512 + name 1_524_KEY_1 + 2181824513 + name 1_524_KEY_2 + 2181824514 + name 1_524_KEY_3 + 2181824515 + name 1_524_KEY_4 + 2181824516 + name 1_524_KEY_5 + 2181824517 + name 1_524_KEY_6 + 2181824518 + name 1_524_KEY_7 + 2181824519 + name 1_524_KEY_8 + 2181824520 + name 1_524_KEY_9 + 2181824521 + name 1_524_KEY_POWER + 2181824522 + name 1_524_KEY_CH_UP + 2181824527 + name 1_524_KEY_CH_DOWN + 2181824528 + name 1_524_KEY_MUTE + 2181824529 + name 1_524_KEY_VOL_DOWN + 2181824530 + name 1_524_KEY_VOL_UP + 2181824532 + name 1_524_KEY_MNSELECT + 2181824535 + name 1_524_KEY_EXIT + 2181824536 + name 1_524_KEY_AV + 2181824553 + name 1_524_KEY_MENU + 2181824559 + name 1_524_KEY_MUP + 2181824560 + name 1_524_KEY_MDOWN + 2181824561 + name 1_524_KEY_MLEFT + 2181824562 + name 1_524_KEY_MRIGHT + 2181824563 + name 1_525_KEY_0 + 2181890048 + name 1_525_KEY_1 + 2181890049 + name 1_525_KEY_2 + 2181890050 + name 1_525_KEY_3 + 2181890051 + name 1_525_KEY_4 + 2181890052 + name 1_525_KEY_5 + 2181890053 + name 1_525_KEY_6 + 2181890054 + name 1_525_KEY_7 + 2181890055 + name 1_525_KEY_8 + 2181890056 + name 1_525_KEY_9 + 2181890057 + name 1_525_KEY_POWER + 2181890058 + name 1_525_KEY_CH_UP + 2181890063 + name 1_525_KEY_CH_DOWN + 2181890064 + name 1_525_KEY_MUTE + 2181890065 + name 1_525_KEY_MNSELECT + 2181890071 + name 1_525_KEY_EXIT + 2181890072 + name 1_525_KEY_MENU + 2181890095 + name 1_525_KEY_MUP + 2181890096 + name 1_525_KEY_MDOWN + 2181890097 + name 1_526_KEY_0 + 2181955584 + name 1_526_KEY_1 + 2181955585 + name 1_526_KEY_2 + 2181955586 + name 1_526_KEY_3 + 2181955587 + name 1_526_KEY_4 + 2181955588 + name 1_526_KEY_5 + 2181955589 + name 1_526_KEY_6 + 2181955590 + name 1_526_KEY_7 + 2181955591 + name 1_526_KEY_8 + 2181955592 + name 1_526_KEY_9 + 2181955593 + name 1_526_KEY_POWER + 2181955594 + name 1_526_KEY_CH_UP + 2181955599 + name 1_526_KEY_CH_DOWN + 2181955600 + name 1_526_KEY_MUTE + 2181955601 + name 1_526_KEY_VOL_DOWN + 2181955602 + name 1_526_KEY_VOL_UP + 2181955604 + name 1_526_KEY_MNSELECT + 2181955607 + name 1_526_KEY_EXIT + 2181955608 + name 1_526_KEY_AV + 2181955625 + name 1_526_KEY_MENU + 2181955631 + name 1_526_KEY_MUP + 2181955632 + name 1_526_KEY_MDOWN + 2181955633 + name 1_526_KEY_MLEFT + 2181955634 + name 1_526_KEY_MRIGHT + 2181955635 + name 1_527_KEY_0 + 2182021120 + name 1_527_KEY_1 + 2182021121 + name 1_527_KEY_2 + 2182021122 + name 1_527_KEY_3 + 2182021123 + name 1_527_KEY_4 + 2182021124 + name 1_527_KEY_5 + 2182021125 + name 1_527_KEY_6 + 2182021126 + name 1_527_KEY_7 + 2182021127 + name 1_527_KEY_8 + 2182021128 + name 1_527_KEY_9 + 2182021129 + name 1_527_KEY_POWER + 2182021130 + name 1_527_KEY_CH_UP + 2182021135 + name 1_527_KEY_CH_DOWN + 2182021136 + name 1_527_KEY_MUTE + 2182021137 + name 1_527_KEY_VOL_DOWN + 2182021138 + name 1_527_KEY_VOL_UP + 2182021140 + name 1_527_KEY_MNSELECT + 2182021143 + name 1_527_KEY_EXIT + 2182021144 + name 1_527_KEY_AV + 2182021161 + name 1_527_KEY_MENU + 2182021167 + name 1_527_KEY_MUP + 2182021168 + name 1_527_KEY_MDOWN + 2182021169 + name 1_527_KEY_MLEFT + 2182021170 + name 1_527_KEY_MRIGHT + 2182021171 + name 1_528_KEY_0 + 2182086656 + name 1_528_KEY_1 + 2182086657 + name 1_528_KEY_2 + 2182086658 + name 1_528_KEY_3 + 2182086659 + name 1_528_KEY_4 + 2182086660 + name 1_528_KEY_5 + 2182086661 + name 1_528_KEY_6 + 2182086662 + name 1_528_KEY_7 + 2182086663 + name 1_528_KEY_8 + 2182086664 + name 1_528_KEY_9 + 2182086665 + name 1_528_KEY_POWER + 2182086666 + name 1_528_KEY_CH_UP + 2182086671 + name 1_528_KEY_CH_DOWN + 2182086672 + name 1_528_KEY_MUTE + 2182086673 + name 1_528_KEY_MNSELECT + 2182086679 + name 1_528_KEY_EXIT + 2182086680 + name 1_528_KEY_AV + 2182086697 + name 1_528_KEY_MENU + 2182086703 + name 1_528_KEY_MUP + 2182086704 + name 1_528_KEY_MDOWN + 2182086705 + name 1_528_KEY_MLEFT + 2182086706 + name 1_528_KEY_MRIGHT + 2182086707 + name 1_529_KEY_0 + 2182152192 + name 1_529_KEY_1 + 2182152193 + name 1_529_KEY_2 + 2182152194 + name 1_529_KEY_3 + 2182152195 + name 1_529_KEY_4 + 2182152196 + name 1_529_KEY_5 + 2182152197 + name 1_529_KEY_6 + 2182152198 + name 1_529_KEY_7 + 2182152199 + name 1_529_KEY_8 + 2182152200 + name 1_529_KEY_9 + 2182152201 + name 1_529_KEY_POWER + 2182152202 + name 1_529_KEY_CH_UP + 2182152207 + name 1_529_KEY_CH_DOWN + 2182152208 + name 1_529_KEY_MUTE + 2182152209 + name 1_529_KEY_VOL_DOWN + 2182152210 + name 1_529_KEY_VOL_UP + 2182152212 + name 1_529_KEY_MNSELECT + 2182152215 + name 1_529_KEY_EXIT + 2182152216 + name 1_529_KEY_AV + 2182152233 + name 1_529_KEY_MENU + 2182152239 + name 1_529_KEY_MUP + 2182152240 + name 1_529_KEY_MDOWN + 2182152241 + name 1_529_KEY_MLEFT + 2182152242 + name 1_529_KEY_MRIGHT + 2182152243 + name 1_530_KEY_0 + 2182217728 + name 1_530_KEY_1 + 2182217729 + name 1_530_KEY_2 + 2182217730 + name 1_530_KEY_3 + 2182217731 + name 1_530_KEY_4 + 2182217732 + name 1_530_KEY_5 + 2182217733 + name 1_530_KEY_6 + 2182217734 + name 1_530_KEY_7 + 2182217735 + name 1_530_KEY_8 + 2182217736 + name 1_530_KEY_9 + 2182217737 + name 1_530_KEY_POWER + 2182217738 + name 1_530_KEY_CH_UP + 2182217743 + name 1_530_KEY_CH_DOWN + 2182217744 + name 1_530_KEY_MUTE + 2182217745 + name 1_530_KEY_MNSELECT + 2182217751 + name 1_530_KEY_AV + 2182217769 + name 1_530_KEY_MUP + 2182217776 + name 1_530_KEY_MDOWN + 2182217777 + name 1_530_KEY_MLEFT + 2182217778 + name 1_530_KEY_MRIGHT + 2182217779 + name 1_531_KEY_0 + 2182283264 + name 1_531_KEY_1 + 2182283265 + name 1_531_KEY_2 + 2182283266 + name 1_531_KEY_3 + 2182283267 + name 1_531_KEY_4 + 2182283268 + name 1_531_KEY_5 + 2182283269 + name 1_531_KEY_6 + 2182283270 + name 1_531_KEY_7 + 2182283271 + name 1_531_KEY_8 + 2182283272 + name 1_531_KEY_9 + 2182283273 + name 1_531_KEY_POWER + 2182283274 + name 1_531_KEY_CH_UP + 2182283279 + name 1_531_KEY_CH_DOWN + 2182283280 + name 1_531_KEY_MUTE + 2182283281 + name 1_531_KEY_VOL_DOWN + 2182283282 + name 1_531_KEY_VOL_UP + 2182283284 + name 1_531_KEY_MNSELECT + 2182283287 + name 1_531_KEY_EXIT + 2182283288 + name 1_531_KEY_AV + 2182283305 + name 1_531_KEY_MENU + 2182283311 + name 1_531_KEY_MUP + 2182283312 + name 1_531_KEY_MDOWN + 2182283313 + name 1_531_KEY_MLEFT + 2182283314 + name 1_531_KEY_MRIGHT + 2182283315 + name 1_532_KEY_0 + 2182348800 + name 1_532_KEY_1 + 2182348801 + name 1_532_KEY_2 + 2182348802 + name 1_532_KEY_3 + 2182348803 + name 1_532_KEY_4 + 2182348804 + name 1_532_KEY_5 + 2182348805 + name 1_532_KEY_6 + 2182348806 + name 1_532_KEY_7 + 2182348807 + name 1_532_KEY_8 + 2182348808 + name 1_532_KEY_9 + 2182348809 + name 1_532_KEY_POWER + 2182348810 + name 1_532_KEY_CH_UP + 2182348815 + name 1_532_KEY_CH_DOWN + 2182348816 + name 1_532_KEY_MUTE + 2182348817 + name 1_532_KEY_MNSELECT + 2182348823 + name 1_532_KEY_EXIT + 2182348824 + name 1_532_KEY_AV + 2182348841 + name 1_532_KEY_MENU + 2182348847 + name 1_532_KEY_MUP + 2182348848 + name 1_532_KEY_MDOWN + 2182348849 + name 1_533_KEY_0 + 2182414336 + name 1_533_KEY_1 + 2182414337 + name 1_533_KEY_2 + 2182414338 + name 1_533_KEY_3 + 2182414339 + name 1_533_KEY_4 + 2182414340 + name 1_533_KEY_5 + 2182414341 + name 1_533_KEY_6 + 2182414342 + name 1_533_KEY_7 + 2182414343 + name 1_533_KEY_8 + 2182414344 + name 1_533_KEY_9 + 2182414345 + name 1_533_KEY_POWER + 2182414346 + name 1_533_KEY_CH_UP + 2182414351 + name 1_533_KEY_CH_DOWN + 2182414352 + name 1_533_KEY_EXIT + 2182414360 + name 1_533_KEY_AV + 2182414377 + name 1_533_KEY_MENU + 2182414383 + name 1_533_KEY_MUP + 2182414384 + name 1_533_KEY_MDOWN + 2182414385 + name 1_533_KEY_MLEFT + 2182414386 + name 1_533_KEY_MRIGHT + 2182414387 + name 1_534_KEY_0 + 2182479872 + name 1_534_KEY_1 + 2182479873 + name 1_534_KEY_2 + 2182479874 + name 1_534_KEY_3 + 2182479875 + name 1_534_KEY_4 + 2182479876 + name 1_534_KEY_5 + 2182479877 + name 1_534_KEY_6 + 2182479878 + name 1_534_KEY_7 + 2182479879 + name 1_534_KEY_8 + 2182479880 + name 1_534_KEY_9 + 2182479881 + name 1_534_KEY_POWER + 2182479882 + name 1_534_KEY_CH_UP + 2182479887 + name 1_534_KEY_CH_DOWN + 2182479888 + name 1_534_KEY_EXIT + 2182479896 + name 1_534_KEY_AV + 2182479913 + name 1_534_KEY_MENU + 2182479919 + name 1_535_KEY_0 + 2182545408 + name 1_535_KEY_1 + 2182545409 + name 1_535_KEY_2 + 2182545410 + name 1_535_KEY_3 + 2182545411 + name 1_535_KEY_4 + 2182545412 + name 1_535_KEY_5 + 2182545413 + name 1_535_KEY_6 + 2182545414 + name 1_535_KEY_7 + 2182545415 + name 1_535_KEY_8 + 2182545416 + name 1_535_KEY_9 + 2182545417 + name 1_535_KEY_POWER + 2182545418 + name 1_535_KEY_CH_UP + 2182545423 + name 1_535_KEY_CH_DOWN + 2182545424 + name 1_535_KEY_MUTE + 2182545425 + name 1_535_KEY_MNSELECT + 2182545431 + name 1_535_KEY_AV + 2182545449 + name 1_535_KEY_MUP + 2182545456 + name 1_535_KEY_MDOWN + 2182545457 + name 1_536_KEY_0 + 2182610944 + name 1_536_KEY_1 + 2182610945 + name 1_536_KEY_2 + 2182610946 + name 1_536_KEY_3 + 2182610947 + name 1_536_KEY_4 + 2182610948 + name 1_536_KEY_5 + 2182610949 + name 1_536_KEY_6 + 2182610950 + name 1_536_KEY_7 + 2182610951 + name 1_536_KEY_8 + 2182610952 + name 1_536_KEY_9 + 2182610953 + name 1_536_KEY_POWER + 2182610954 + name 1_536_KEY_CH_UP + 2182610959 + name 1_536_KEY_CH_DOWN + 2182610960 + name 1_536_KEY_MUTE + 2182610961 + name 1_536_KEY_MNSELECT + 2182610967 + name 1_536_KEY_AV + 2182610985 + name 1_536_KEY_MUP + 2182610992 + name 1_536_KEY_MDOWN + 2182610993 + name 1_537_KEY_0 + 2182676480 + name 1_537_KEY_1 + 2182676481 + name 1_537_KEY_2 + 2182676482 + name 1_537_KEY_3 + 2182676483 + name 1_537_KEY_4 + 2182676484 + name 1_537_KEY_5 + 2182676485 + name 1_537_KEY_6 + 2182676486 + name 1_537_KEY_7 + 2182676487 + name 1_537_KEY_8 + 2182676488 + name 1_537_KEY_9 + 2182676489 + name 1_537_KEY_POWER + 2182676490 + name 1_537_KEY_CH_UP + 2182676495 + name 1_537_KEY_CH_DOWN + 2182676496 + name 1_537_KEY_MNSELECT + 2182676503 + name 1_537_KEY_MENU + 2182676527 + name 1_537_KEY_MLEFT + 2182676530 + name 1_537_KEY_MRIGHT + 2182676531 + name 1_538_KEY_0 + 2182742016 + name 1_538_KEY_1 + 2182742017 + name 1_538_KEY_2 + 2182742018 + name 1_538_KEY_3 + 2182742019 + name 1_538_KEY_4 + 2182742020 + name 1_538_KEY_5 + 2182742021 + name 1_538_KEY_6 + 2182742022 + name 1_538_KEY_7 + 2182742023 + name 1_538_KEY_8 + 2182742024 + name 1_538_KEY_9 + 2182742025 + name 1_538_KEY_POWER + 2182742026 + name 1_538_KEY_CH_UP + 2182742031 + name 1_538_KEY_CH_DOWN + 2182742032 + name 1_538_KEY_MUTE + 2182742033 + name 1_538_KEY_MNSELECT + 2182742039 + name 1_538_KEY_AV + 2182742057 + name 1_538_KEY_MLEFT + 2182742066 + name 1_538_KEY_MRIGHT + 2182742067 + name 1_539_KEY_0 + 2182807552 + name 1_539_KEY_1 + 2182807553 + name 1_539_KEY_2 + 2182807554 + name 1_539_KEY_3 + 2182807555 + name 1_539_KEY_4 + 2182807556 + name 1_539_KEY_5 + 2182807557 + name 1_539_KEY_6 + 2182807558 + name 1_539_KEY_7 + 2182807559 + name 1_539_KEY_8 + 2182807560 + name 1_539_KEY_9 + 2182807561 + name 1_539_KEY_POWER + 2182807562 + name 1_539_KEY_CH_UP + 2182807567 + name 1_539_KEY_CH_DOWN + 2182807568 + name 1_539_KEY_MNSELECT + 2182807575 + name 1_539_KEY_MENU + 2182807599 + name 1_539_KEY_MUP + 2182807600 + name 1_539_KEY_MDOWN + 2182807601 + name 1_539_KEY_MLEFT + 2182807602 + name 1_539_KEY_MRIGHT + 2182807603 + name 1_539_KEY_On + 2182807629 + name 1_540_KEY_0 + 2182873088 + name 1_540_KEY_1 + 2182873089 + name 1_540_KEY_2 + 2182873090 + name 1_540_KEY_3 + 2182873091 + name 1_540_KEY_4 + 2182873092 + name 1_540_KEY_5 + 2182873093 + name 1_540_KEY_6 + 2182873094 + name 1_540_KEY_7 + 2182873095 + name 1_540_KEY_8 + 2182873096 + name 1_540_KEY_9 + 2182873097 + name 1_540_KEY_POWER + 2182873098 + name 1_540_KEY_CH_UP + 2182873103 + name 1_540_KEY_CH_DOWN + 2182873104 + name 1_540_KEY_MNSELECT + 2182873111 + name 1_541_KEY_0 + 2182938624 + name 1_541_KEY_1 + 2182938625 + name 1_541_KEY_2 + 2182938626 + name 1_541_KEY_3 + 2182938627 + name 1_541_KEY_4 + 2182938628 + name 1_541_KEY_5 + 2182938629 + name 1_541_KEY_6 + 2182938630 + name 1_541_KEY_7 + 2182938631 + name 1_541_KEY_8 + 2182938632 + name 1_541_KEY_9 + 2182938633 + name 1_541_KEY_POWER + 2182938634 + name 1_541_KEY_CH_UP + 2182938639 + name 1_541_KEY_CH_DOWN + 2182938640 + name 1_542_KEY_0 + 2183004160 + name 1_542_KEY_1 + 2183004161 + name 1_542_KEY_2 + 2183004162 + name 1_542_KEY_3 + 2183004163 + name 1_542_KEY_4 + 2183004164 + name 1_542_KEY_5 + 2183004165 + name 1_542_KEY_6 + 2183004166 + name 1_542_KEY_7 + 2183004167 + name 1_542_KEY_8 + 2183004168 + name 1_542_KEY_9 + 2183004169 + name 1_542_KEY_POWER + 2183004170 + name 1_542_KEY_CH_UP + 2183004175 + name 1_542_KEY_CH_DOWN + 2183004176 + name 1_542_KEY_MNSELECT + 2183004183 + name 1_542_KEY_MLEFT + 2183004210 + name 1_542_KEY_MRIGHT + 2183004211 + name 1_543_KEY_0 + 2183069696 + name 1_543_KEY_1 + 2183069697 + name 1_543_KEY_2 + 2183069698 + name 1_543_KEY_3 + 2183069699 + name 1_543_KEY_4 + 2183069700 + name 1_543_KEY_5 + 2183069701 + name 1_543_KEY_6 + 2183069702 + name 1_543_KEY_7 + 2183069703 + name 1_543_KEY_8 + 2183069704 + name 1_543_KEY_9 + 2183069705 + name 1_543_KEY_POWER + 2183069706 + name 1_543_KEY_CH_UP + 2183069711 + name 1_543_KEY_CH_DOWN + 2183069712 + name 1_543_KEY_MUTE + 2183069713 + name 1_543_KEY_VOL_DOWN + 2183069714 + name 1_543_KEY_VOL_UP + 2183069716 + name 1_543_KEY_MNSELECT + 2183069719 + name 1_543_KEY_EXIT + 2183069720 + name 1_543_KEY_AV + 2183069737 + name 1_543_KEY_MENU + 2183069743 + name 1_543_KEY_MUP + 2183069744 + name 1_543_KEY_MDOWN + 2183069745 + name 1_543_KEY_MLEFT + 2183069746 + name 1_543_KEY_MRIGHT + 2183069747 + name 1_544_KEY_0 + 2183135232 + name 1_544_KEY_1 + 2183135233 + name 1_544_KEY_2 + 2183135234 + name 1_544_KEY_3 + 2183135235 + name 1_544_KEY_4 + 2183135236 + name 1_544_KEY_5 + 2183135237 + name 1_544_KEY_6 + 2183135238 + name 1_544_KEY_7 + 2183135239 + name 1_544_KEY_8 + 2183135240 + name 1_544_KEY_9 + 2183135241 + name 1_544_KEY_POWER + 2183135242 + name 1_544_KEY_CH_UP + 2183135247 + name 1_544_KEY_CH_DOWN + 2183135248 + name 1_544_KEY_MUTE + 2183135249 + name 1_544_KEY_VOL_DOWN + 2183135250 + name 1_544_KEY_VOL_UP + 2183135252 + name 1_544_KEY_MNSELECT + 2183135255 + name 1_544_KEY_EXIT + 2183135256 + name 1_544_KEY_AV + 2183135273 + name 1_544_KEY_MENU + 2183135279 + name 1_544_KEY_MUP + 2183135280 + name 1_544_KEY_MDOWN + 2183135281 + name 1_544_KEY_MLEFT + 2183135282 + name 1_544_KEY_MRIGHT + 2183135283 + name 1_545_KEY_0 + 2183200768 + name 1_545_KEY_1 + 2183200769 + name 1_545_KEY_2 + 2183200770 + name 1_545_KEY_3 + 2183200771 + name 1_545_KEY_4 + 2183200772 + name 1_545_KEY_5 + 2183200773 + name 1_545_KEY_6 + 2183200774 + name 1_545_KEY_7 + 2183200775 + name 1_545_KEY_8 + 2183200776 + name 1_545_KEY_9 + 2183200777 + name 1_545_KEY_POWER + 2183200778 + name 1_545_TWO_DIGITS + 2183200781 + name 1_545_KEY_CH_UP + 2183200783 + name 1_545_KEY_CH_DOWN + 2183200784 + name 1_546_KEY_0 + 2183266304 + name 1_546_KEY_1 + 2183266305 + name 1_546_KEY_2 + 2183266306 + name 1_546_KEY_3 + 2183266307 + name 1_546_KEY_4 + 2183266308 + name 1_546_KEY_5 + 2183266309 + name 1_546_KEY_6 + 2183266310 + name 1_546_KEY_7 + 2183266311 + name 1_546_KEY_8 + 2183266312 + name 1_546_KEY_9 + 2183266313 + name 1_546_KEY_POWER + 2183266314 + name 1_546_KEY_CH_UP + 2183266319 + name 1_546_KEY_CH_DOWN + 2183266320 + name 1_547_KEY_0 + 2183331840 + name 1_547_KEY_1 + 2183331841 + name 1_547_KEY_2 + 2183331842 + name 1_547_KEY_3 + 2183331843 + name 1_547_KEY_4 + 2183331844 + name 1_547_KEY_5 + 2183331845 + name 1_547_KEY_6 + 2183331846 + name 1_547_KEY_7 + 2183331847 + name 1_547_KEY_8 + 2183331848 + name 1_547_KEY_9 + 2183331849 + name 1_547_KEY_POWER + 2183331850 + name 1_547_KEY_CH_UP + 2183331855 + name 1_547_KEY_CH_DOWN + 2183331856 + name 1_547_KEY_MUTE + 2183331857 + name 1_547_KEY_MNSELECT + 2183331863 + name 1_547_KEY_EXIT + 2183331864 + name 1_547_KEY_AV + 2183331881 + name 1_547_KEY_MENU + 2183331887 + name 1_547_KEY_MUP + 2183331888 + name 1_547_KEY_MDOWN + 2183331889 + name 1_547_KEY_MLEFT + 2183331890 + name 1_547_KEY_MRIGHT + 2183331891 + name 1_548_KEY_0 + 2183397376 + name 1_548_KEY_1 + 2183397377 + name 1_548_KEY_2 + 2183397378 + name 1_548_KEY_3 + 2183397379 + name 1_548_KEY_4 + 2183397380 + name 1_548_KEY_5 + 2183397381 + name 1_548_KEY_6 + 2183397382 + name 1_548_KEY_7 + 2183397383 + name 1_548_KEY_8 + 2183397384 + name 1_548_KEY_9 + 2183397385 + name 1_548_KEY_POWER + 2183397386 + name 1_548_TWO_DIGITS + 2183397389 + name 1_548_KEY_CH_UP + 2183397391 + name 1_548_KEY_CH_DOWN + 2183397392 + name 1_548_CH_PREVIOUS + 2183397395 + name 1_548_KEY_MNSELECT + 2183397399 + name 1_548_KEY_MENU + 2183397423 + name 1_548_KEY_MUP + 2183397424 + name 1_548_KEY_MDOWN + 2183397425 + name 1_548_KEY_MLEFT + 2183397426 + name 1_548_KEY_MRIGHT + 2183397427 + name 1_548_KEY_On + 2183397453 + name 1_549_KEY_0 + 2183462912 + name 1_549_KEY_1 + 2183462913 + name 1_549_KEY_2 + 2183462914 + name 1_549_KEY_3 + 2183462915 + name 1_549_KEY_4 + 2183462916 + name 1_549_KEY_5 + 2183462917 + name 1_549_KEY_6 + 2183462918 + name 1_549_KEY_7 + 2183462919 + name 1_549_KEY_8 + 2183462920 + name 1_549_KEY_9 + 2183462921 + name 1_549_KEY_POWER + 2183462922 + name 1_549_KEY_CH_UP + 2183462927 + name 1_549_KEY_CH_DOWN + 2183462928 + name 1_549_KEY_MUTE + 2183462929 + name 1_549_KEY_MNSELECT + 2183462935 + name 1_549_KEY_EXIT + 2183462936 + name 1_549_KEY_AV + 2183462953 + name 1_549_KEY_MENU + 2183462959 + name 1_549_KEY_MLEFT + 2183462962 + name 1_549_KEY_MRIGHT + 2183462963 + name 1_550_KEY_0 + 2183528448 + name 1_550_KEY_1 + 2183528449 + name 1_550_KEY_2 + 2183528450 + name 1_550_KEY_3 + 2183528451 + name 1_550_KEY_4 + 2183528452 + name 1_550_KEY_5 + 2183528453 + name 1_550_KEY_6 + 2183528454 + name 1_550_KEY_7 + 2183528455 + name 1_550_KEY_8 + 2183528456 + name 1_550_KEY_9 + 2183528457 + name 1_550_KEY_POWER + 2183528458 + name 1_550_KEY_CH_UP + 2183528463 + name 1_550_KEY_CH_DOWN + 2183528464 + name 1_550_KEY_MNSELECT + 2183528471 + name 1_551_KEY_0 + 2183593984 + name 1_551_KEY_1 + 2183593985 + name 1_551_KEY_2 + 2183593986 + name 1_551_KEY_3 + 2183593987 + name 1_551_KEY_4 + 2183593988 + name 1_551_KEY_5 + 2183593989 + name 1_551_KEY_6 + 2183593990 + name 1_551_KEY_7 + 2183593991 + name 1_551_KEY_8 + 2183593992 + name 1_551_KEY_9 + 2183593993 + name 1_551_KEY_POWER + 2183593994 + name 1_551_KEY_CH_UP + 2183593999 + name 1_551_KEY_CH_DOWN + 2183594000 + name 1_551_KEY_MUTE + 2183594001 + name 1_551_KEY_VOL_DOWN + 2183594002 + name 1_551_KEY_VOL_UP + 2183594004 + name 1_551_KEY_MNSELECT + 2183594007 + name 1_551_KEY_EXIT + 2183594008 + name 1_551_KEY_AV + 2183594025 + name 1_551_KEY_MENU + 2183594031 + name 1_551_KEY_MLEFT + 2183594034 + name 1_551_KEY_MRIGHT + 2183594035 + name 1_552_KEY_0 + 2183659520 + name 1_552_KEY_1 + 2183659521 + name 1_552_KEY_2 + 2183659522 + name 1_552_KEY_3 + 2183659523 + name 1_552_KEY_4 + 2183659524 + name 1_552_KEY_5 + 2183659525 + name 1_552_KEY_6 + 2183659526 + name 1_552_KEY_7 + 2183659527 + name 1_552_KEY_8 + 2183659528 + name 1_552_KEY_9 + 2183659529 + name 1_552_KEY_POWER + 2183659530 + name 1_552_KEY_CH_UP + 2183659535 + name 1_552_KEY_CH_DOWN + 2183659536 + name 1_552_CH_PREVIOUS + 2183659539 + name 1_553_KEY_0 + 2183725056 + name 1_553_KEY_1 + 2183725057 + name 1_553_KEY_2 + 2183725058 + name 1_553_KEY_3 + 2183725059 + name 1_553_KEY_4 + 2183725060 + name 1_553_KEY_5 + 2183725061 + name 1_553_KEY_6 + 2183725062 + name 1_553_KEY_7 + 2183725063 + name 1_553_KEY_8 + 2183725064 + name 1_553_KEY_9 + 2183725065 + name 1_553_KEY_POWER + 2183725066 + name 1_553_KEY_CH_UP + 2183725071 + name 1_553_KEY_CH_DOWN + 2183725072 + name 1_553_KEY_MUTE + 2183725073 + name 1_553_KEY_VOL_DOWN + 2183725074 + name 1_553_KEY_VOL_UP + 2183725076 + name 1_553_KEY_MNSELECT + 2183725079 + name 1_553_KEY_EXIT + 2183725080 + name 1_553_KEY_AV + 2183725097 + name 1_553_KEY_MENU + 2183725103 + name 1_553_KEY_MUP + 2183725104 + name 1_553_KEY_MDOWN + 2183725105 + name 1_553_KEY_MLEFT + 2183725106 + name 1_553_KEY_MRIGHT + 2183725107 + name 1_554_KEY_0 + 2183790592 + name 1_554_KEY_1 + 2183790593 + name 1_554_KEY_2 + 2183790594 + name 1_554_KEY_3 + 2183790595 + name 1_554_KEY_4 + 2183790596 + name 1_554_KEY_5 + 2183790597 + name 1_554_KEY_6 + 2183790598 + name 1_554_KEY_7 + 2183790599 + name 1_554_KEY_8 + 2183790600 + name 1_554_KEY_9 + 2183790601 + name 1_554_KEY_POWER + 2183790602 + name 1_554_KEY_CH_UP + 2183790607 + name 1_554_KEY_CH_DOWN + 2183790608 + name 1_555_KEY_0 + 2183856128 + name 1_555_KEY_1 + 2183856129 + name 1_555_KEY_2 + 2183856130 + name 1_555_KEY_3 + 2183856131 + name 1_555_KEY_4 + 2183856132 + name 1_555_KEY_5 + 2183856133 + name 1_555_KEY_6 + 2183856134 + name 1_555_KEY_7 + 2183856135 + name 1_555_KEY_8 + 2183856136 + name 1_555_KEY_9 + 2183856137 + name 1_555_KEY_POWER + 2183856138 + name 1_555_KEY_CH_UP + 2183856143 + name 1_555_KEY_CH_DOWN + 2183856144 + name 1_555_KEY_MUTE + 2183856145 + name 1_555_KEY_VOL_DOWN + 2183856146 + name 1_555_KEY_VOL_UP + 2183856148 + name 1_555_KEY_MNSELECT + 2183856151 + name 1_555_KEY_EXIT + 2183856152 + name 1_555_KEY_AV + 2183856169 + name 1_555_KEY_MENU + 2183856175 + name 1_555_KEY_MUP + 2183856176 + name 1_555_KEY_MDOWN + 2183856177 + name 1_555_KEY_MLEFT + 2183856178 + name 1_555_KEY_MRIGHT + 2183856179 + name 1_556_KEY_0 + 2183921664 + name 1_556_KEY_1 + 2183921665 + name 1_556_KEY_2 + 2183921666 + name 1_556_KEY_3 + 2183921667 + name 1_556_KEY_4 + 2183921668 + name 1_556_KEY_5 + 2183921669 + name 1_556_KEY_6 + 2183921670 + name 1_556_KEY_7 + 2183921671 + name 1_556_KEY_8 + 2183921672 + name 1_556_KEY_9 + 2183921673 + name 1_556_KEY_POWER + 2183921674 + name 1_556_KEY_CH_UP + 2183921679 + name 1_556_KEY_CH_DOWN + 2183921680 + name 1_557_KEY_0 + 2183987200 + name 1_557_KEY_1 + 2183987201 + name 1_557_KEY_2 + 2183987202 + name 1_557_KEY_3 + 2183987203 + name 1_557_KEY_4 + 2183987204 + name 1_557_KEY_5 + 2183987205 + name 1_557_KEY_6 + 2183987206 + name 1_557_KEY_7 + 2183987207 + name 1_557_KEY_8 + 2183987208 + name 1_557_KEY_9 + 2183987209 + name 1_557_KEY_POWER + 2183987210 + name 1_557_KEY_CH_UP + 2183987215 + name 1_557_KEY_CH_DOWN + 2183987216 + name 1_557_KEY_MENU + 2183987247 + name 1_557_KEY_MUP + 2183987248 + name 1_557_KEY_MDOWN + 2183987249 + name 1_557_KEY_MLEFT + 2183987250 + name 1_557_KEY_MRIGHT + 2183987251 + name 1_558_KEY_0 + 2184052736 + name 1_558_KEY_1 + 2184052737 + name 1_558_KEY_2 + 2184052738 + name 1_558_KEY_3 + 2184052739 + name 1_558_KEY_4 + 2184052740 + name 1_558_KEY_5 + 2184052741 + name 1_558_KEY_6 + 2184052742 + name 1_558_KEY_7 + 2184052743 + name 1_558_KEY_8 + 2184052744 + name 1_558_KEY_9 + 2184052745 + name 1_558_KEY_POWER + 2184052746 + name 1_558_KEY_CH_UP + 2184052751 + name 1_558_KEY_CH_DOWN + 2184052752 + name 1_558_KEY_MUTE + 2184052753 + name 1_558_KEY_VOL_DOWN + 2184052754 + name 1_558_KEY_VOL_UP + 2184052756 + name 1_558_KEY_MNSELECT + 2184052759 + name 1_558_KEY_EXIT + 2184052760 + name 1_558_KEY_AV + 2184052777 + name 1_558_KEY_MENU + 2184052783 + name 1_558_KEY_MUP + 2184052784 + name 1_558_KEY_MDOWN + 2184052785 + name 1_558_KEY_MLEFT + 2184052786 + name 1_558_KEY_MRIGHT + 2184052787 + name 1_559_KEY_0 + 2184118272 + name 1_559_KEY_1 + 2184118273 + name 1_559_KEY_2 + 2184118274 + name 1_559_KEY_3 + 2184118275 + name 1_559_KEY_4 + 2184118276 + name 1_559_KEY_5 + 2184118277 + name 1_559_KEY_6 + 2184118278 + name 1_559_KEY_7 + 2184118279 + name 1_559_KEY_8 + 2184118280 + name 1_559_KEY_9 + 2184118281 + name 1_559_KEY_POWER + 2184118282 + name 1_559_TWO_DIGITS + 2184118285 + name 1_559_KEY_CH_UP + 2184118287 + name 1_559_KEY_CH_DOWN + 2184118288 + name 1_559_KEY_MNSELECT + 2184118295 + name 1_559_KEY_MENU + 2184118319 + name 1_559_KEY_MUP + 2184118320 + name 1_559_KEY_MDOWN + 2184118321 + name 1_559_KEY_MLEFT + 2184118322 + name 1_559_KEY_MRIGHT + 2184118323 + name 1_560_KEY_0 + 2184183808 + name 1_560_KEY_1 + 2184183809 + name 1_560_KEY_2 + 2184183810 + name 1_560_KEY_3 + 2184183811 + name 1_560_KEY_4 + 2184183812 + name 1_560_KEY_5 + 2184183813 + name 1_560_KEY_6 + 2184183814 + name 1_560_KEY_7 + 2184183815 + name 1_560_KEY_8 + 2184183816 + name 1_560_KEY_9 + 2184183817 + name 1_560_KEY_POWER + 2184183818 + name 1_560_KEY_CH_UP + 2184183823 + name 1_560_KEY_CH_DOWN + 2184183824 + name 1_560_KEY_MNSELECT + 2184183831 + name 1_560_KEY_GUIDE + 2184183835 + name 1_560_KEY_BLUE + 2184183843 + name 1_560_KEY_GREEN + 2184183844 + name 1_560_KEY_RED + 2184183845 + name 1_560_KEY_YELLOW + 2184183846 + name 1_560_KEY_MENU + 2184183855 + name 1_560_KEY_MUP + 2184183856 + name 1_560_KEY_MDOWN + 2184183857 + name 1_560_KEY_MLEFT + 2184183858 + name 1_560_KEY_MRIGHT + 2184183859 + name 1_560_KEY_On + 2184183885 + name 1_561_KEY_0 + 2184249344 + name 1_561_KEY_1 + 2184249345 + name 1_561_KEY_2 + 2184249346 + name 1_561_KEY_3 + 2184249347 + name 1_561_KEY_4 + 2184249348 + name 1_561_KEY_5 + 2184249349 + name 1_561_KEY_6 + 2184249350 + name 1_561_KEY_7 + 2184249351 + name 1_561_KEY_8 + 2184249352 + name 1_561_KEY_9 + 2184249353 + name 1_561_KEY_POWER + 2184249354 + name 1_561_KEY_CH_UP + 2184249359 + name 1_561_KEY_CH_DOWN + 2184249360 + name 1_561_CH_PREVIOUS + 2184249363 + name 1_561_KEY_MNSELECT + 2184249367 + name 1_561_KEY_BLUE + 2184249379 + name 1_561_KEY_GREEN + 2184249380 + name 1_561_KEY_RED + 2184249381 + name 1_561_KEY_YELLOW + 2184249382 + name 1_561_KEY_MENU + 2184249391 + name 1_561_KEY_MUP + 2184249392 + name 1_561_KEY_MDOWN + 2184249393 + name 1_561_KEY_MLEFT + 2184249394 + name 1_561_KEY_MRIGHT + 2184249395 + name 1_561_KEY_On + 2184249421 + name 1_562_KEY_0 + 2184314880 + name 1_562_KEY_1 + 2184314881 + name 1_562_KEY_2 + 2184314882 + name 1_562_KEY_3 + 2184314883 + name 1_562_KEY_4 + 2184314884 + name 1_562_KEY_5 + 2184314885 + name 1_562_KEY_6 + 2184314886 + name 1_562_KEY_7 + 2184314887 + name 1_562_KEY_8 + 2184314888 + name 1_562_KEY_9 + 2184314889 + name 1_562_KEY_POWER + 2184314890 + name 1_562_KEY_CH_UP + 2184314895 + name 1_562_KEY_CH_DOWN + 2184314896 + name 1_562_KEY_MUP + 2184314928 + name 1_562_KEY_MDOWN + 2184314929 + name 1_563_KEY_0 + 2184380416 + name 1_563_KEY_1 + 2184380417 + name 1_563_KEY_2 + 2184380418 + name 1_563_KEY_3 + 2184380419 + name 1_563_KEY_4 + 2184380420 + name 1_563_KEY_5 + 2184380421 + name 1_563_KEY_6 + 2184380422 + name 1_563_KEY_7 + 2184380423 + name 1_563_KEY_8 + 2184380424 + name 1_563_KEY_9 + 2184380425 + name 1_563_KEY_POWER + 2184380426 + name 1_563_KEY_CH_UP + 2184380431 + name 1_563_KEY_CH_DOWN + 2184380432 + name 1_563_CH_PREVIOUS + 2184380435 + name 1_563_KEY_MNSELECT + 2184380439 + name 1_563_KEY_GUIDE + 2184380443 + name 1_563_KEY_MENU + 2184380463 + name 1_563_KEY_MUP + 2184380464 + name 1_563_KEY_MDOWN + 2184380465 + name 1_563_KEY_MLEFT + 2184380466 + name 1_563_KEY_MRIGHT + 2184380467 + name 1_563_KEY_On + 2184380493 + name 1_564_KEY_0 + 2184445952 + name 1_564_KEY_1 + 2184445953 + name 1_564_KEY_2 + 2184445954 + name 1_564_KEY_3 + 2184445955 + name 1_564_KEY_4 + 2184445956 + name 1_564_KEY_5 + 2184445957 + name 1_564_KEY_6 + 2184445958 + name 1_564_KEY_7 + 2184445959 + name 1_564_KEY_8 + 2184445960 + name 1_564_KEY_9 + 2184445961 + name 1_564_KEY_POWER + 2184445962 + name 1_564_KEY_CH_UP + 2184445967 + name 1_564_KEY_CH_DOWN + 2184445968 + name 1_564_CH_PREVIOUS + 2184445971 + name 1_564_KEY_MNSELECT + 2184445975 + name 1_564_KEY_GUIDE + 2184445979 + name 1_564_KEY_MENU + 2184445999 + name 1_564_KEY_MUP + 2184446000 + name 1_564_KEY_MDOWN + 2184446001 + name 1_564_KEY_MLEFT + 2184446002 + name 1_564_KEY_MRIGHT + 2184446003 + name 1_565_KEY_0 + 2184511488 + name 1_565_KEY_1 + 2184511489 + name 1_565_KEY_2 + 2184511490 + name 1_565_KEY_3 + 2184511491 + name 1_565_KEY_4 + 2184511492 + name 1_565_KEY_5 + 2184511493 + name 1_565_KEY_6 + 2184511494 + name 1_565_KEY_7 + 2184511495 + name 1_565_KEY_8 + 2184511496 + name 1_565_KEY_9 + 2184511497 + name 1_565_KEY_POWER + 2184511498 + name 1_565_KEY_CH_UP + 2184511503 + name 1_565_KEY_CH_DOWN + 2184511504 + name 1_565_KEY_MNSELECT + 2184511511 + name 1_565_KEY_GUIDE + 2184511515 + name 1_565_KEY_BLUE + 2184511523 + name 1_565_KEY_GREEN + 2184511524 + name 1_565_KEY_RED + 2184511525 + name 1_565_KEY_YELLOW + 2184511526 + name 1_565_KEY_MENU + 2184511535 + name 1_565_KEY_MUP + 2184511536 + name 1_565_KEY_MDOWN + 2184511537 + name 1_565_KEY_MLEFT + 2184511538 + name 1_565_KEY_MRIGHT + 2184511539 + name 1_566_KEY_0 + 2184577024 + name 1_566_KEY_1 + 2184577025 + name 1_566_KEY_2 + 2184577026 + name 1_566_KEY_3 + 2184577027 + name 1_566_KEY_4 + 2184577028 + name 1_566_KEY_5 + 2184577029 + name 1_566_KEY_6 + 2184577030 + name 1_566_KEY_7 + 2184577031 + name 1_566_KEY_8 + 2184577032 + name 1_566_KEY_9 + 2184577033 + name 1_566_KEY_POWER + 2184577034 + name 1_566_KEY_CH_UP + 2184577039 + name 1_566_KEY_CH_DOWN + 2184577040 + name 1_566_KEY_MUTE + 2184577041 + name 1_566_KEY_VOL_DOWN + 2184577042 + name 1_566_KEY_VOL_UP + 2184577044 + name 1_566_KEY_MNSELECT + 2184577047 + name 1_566_KEY_EXIT + 2184577048 + name 1_566_KEY_AV + 2184577065 + name 1_566_KEY_MENU + 2184577071 + name 1_566_KEY_MUP + 2184577072 + name 1_566_KEY_MDOWN + 2184577073 + name 1_566_KEY_MLEFT + 2184577074 + name 1_566_KEY_MRIGHT + 2184577075 + name 1_567_KEY_0 + 2184642560 + name 1_567_KEY_1 + 2184642561 + name 1_567_KEY_2 + 2184642562 + name 1_567_KEY_3 + 2184642563 + name 1_567_KEY_4 + 2184642564 + name 1_567_KEY_5 + 2184642565 + name 1_567_KEY_6 + 2184642566 + name 1_567_KEY_7 + 2184642567 + name 1_567_KEY_8 + 2184642568 + name 1_567_KEY_9 + 2184642569 + name 1_567_KEY_POWER + 2184642570 + name 1_567_KEY_CH_UP + 2184642575 + name 1_567_KEY_CH_DOWN + 2184642576 + name 1_567_KEY_MUTE + 2184642577 + name 1_567_KEY_MNSELECT + 2184642583 + name 1_567_KEY_EXIT + 2184642584 + name 1_567_KEY_MENU + 2184642607 + name 1_567_KEY_MLEFT + 2184642610 + name 1_567_KEY_MRIGHT + 2184642611 + name 1_568_KEY_0 + 2184708096 + name 1_568_KEY_1 + 2184708097 + name 1_568_KEY_2 + 2184708098 + name 1_568_KEY_3 + 2184708099 + name 1_568_KEY_4 + 2184708100 + name 1_568_KEY_5 + 2184708101 + name 1_568_KEY_6 + 2184708102 + name 1_568_KEY_7 + 2184708103 + name 1_568_KEY_8 + 2184708104 + name 1_568_KEY_9 + 2184708105 + name 1_568_KEY_POWER + 2184708106 + name 1_568_KEY_CH_UP + 2184708111 + name 1_568_KEY_CH_DOWN + 2184708112 + name 1_568_KEY_MUTE + 2184708113 + name 1_568_KEY_MNSELECT + 2184708119 + name 1_568_KEY_EXIT + 2184708120 + name 1_568_KEY_MENU + 2184708143 + name 1_568_KEY_MUP + 2184708144 + name 1_568_KEY_MDOWN + 2184708145 + name 1_568_KEY_MLEFT + 2184708146 + name 1_568_KEY_MRIGHT + 2184708147 + name 1_569_KEY_0 + 2184773632 + name 1_569_KEY_1 + 2184773633 + name 1_569_KEY_2 + 2184773634 + name 1_569_KEY_3 + 2184773635 + name 1_569_KEY_4 + 2184773636 + name 1_569_KEY_5 + 2184773637 + name 1_569_KEY_6 + 2184773638 + name 1_569_KEY_7 + 2184773639 + name 1_569_KEY_8 + 2184773640 + name 1_569_KEY_9 + 2184773641 + name 1_569_KEY_POWER + 2184773642 + name 1_569_KEY_CH_UP + 2184773647 + name 1_569_KEY_CH_DOWN + 2184773648 + name 1_569_KEY_MUTE + 2184773649 + name 1_569_KEY_MNSELECT + 2184773655 + name 1_569_KEY_AV + 2184773673 + name 1_570_KEY_0 + 2184839168 + name 1_570_KEY_1 + 2184839169 + name 1_570_KEY_2 + 2184839170 + name 1_570_KEY_3 + 2184839171 + name 1_570_KEY_4 + 2184839172 + name 1_570_KEY_5 + 2184839173 + name 1_570_KEY_6 + 2184839174 + name 1_570_KEY_7 + 2184839175 + name 1_570_KEY_8 + 2184839176 + name 1_570_KEY_9 + 2184839177 + name 1_570_KEY_POWER + 2184839178 + name 1_570_KEY_CH_UP + 2184839183 + name 1_570_KEY_CH_DOWN + 2184839184 + name 1_570_KEY_MUTE + 2184839185 + name 1_570_KEY_VOL_DOWN + 2184839186 + name 1_570_KEY_VOL_UP + 2184839188 + name 1_570_KEY_MNSELECT + 2184839191 + name 1_570_KEY_AV + 2184839209 + name 1_571_KEY_0 + 2184904704 + name 1_571_KEY_1 + 2184904705 + name 1_571_KEY_2 + 2184904706 + name 1_571_KEY_3 + 2184904707 + name 1_571_KEY_4 + 2184904708 + name 1_571_KEY_5 + 2184904709 + name 1_571_KEY_6 + 2184904710 + name 1_571_KEY_7 + 2184904711 + name 1_571_KEY_8 + 2184904712 + name 1_571_KEY_9 + 2184904713 + name 1_571_KEY_POWER + 2184904714 + name 1_571_KEY_CH_UP + 2184904719 + name 1_571_KEY_CH_DOWN + 2184904720 + name 1_571_KEY_MUTE + 2184904721 + name 1_571_KEY_MNSELECT + 2184904727 + name 1_571_KEY_EXIT + 2184904728 + name 1_571_KEY_AV + 2184904745 + name 1_571_KEY_MENU + 2184904751 + name 1_571_KEY_MUP + 2184904752 + name 1_571_KEY_MDOWN + 2184904753 + name 1_571_KEY_MLEFT + 2184904754 + name 1_571_KEY_MRIGHT + 2184904755 + name 1_572_KEY_0 + 2184970240 + name 1_572_KEY_1 + 2184970241 + name 1_572_KEY_2 + 2184970242 + name 1_572_KEY_3 + 2184970243 + name 1_572_KEY_4 + 2184970244 + name 1_572_KEY_5 + 2184970245 + name 1_572_KEY_6 + 2184970246 + name 1_572_KEY_7 + 2184970247 + name 1_572_KEY_8 + 2184970248 + name 1_572_KEY_9 + 2184970249 + name 1_572_KEY_POWER + 2184970250 + name 1_572_KEY_CH_UP + 2184970255 + name 1_572_KEY_CH_DOWN + 2184970256 + name 1_572_KEY_MUTE + 2184970257 + name 1_572_KEY_MNSELECT + 2184970263 + name 1_572_KEY_EXIT + 2184970264 + name 1_572_KEY_AV + 2184970281 + name 1_572_KEY_MENU + 2184970287 + name 1_572_KEY_MUP + 2184970288 + name 1_572_KEY_MDOWN + 2184970289 + name 1_572_KEY_MLEFT + 2184970290 + name 1_572_KEY_MRIGHT + 2184970291 + name 1_573_KEY_0 + 2185035776 + name 1_573_KEY_1 + 2185035777 + name 1_573_KEY_2 + 2185035778 + name 1_573_KEY_3 + 2185035779 + name 1_573_KEY_4 + 2185035780 + name 1_573_KEY_5 + 2185035781 + name 1_573_KEY_6 + 2185035782 + name 1_573_KEY_7 + 2185035783 + name 1_573_KEY_8 + 2185035784 + name 1_573_KEY_9 + 2185035785 + name 1_573_KEY_POWER + 2185035786 + name 1_573_KEY_CH_UP + 2185035791 + name 1_573_KEY_CH_DOWN + 2185035792 + name 1_573_KEY_MUTE + 2185035793 + name 1_573_KEY_MNSELECT + 2185035799 + name 1_573_KEY_EXIT + 2185035800 + name 1_573_KEY_AV + 2185035817 + name 1_573_KEY_MENU + 2185035823 + name 1_573_KEY_MUP + 2185035824 + name 1_573_KEY_MDOWN + 2185035825 + name 1_573_KEY_MLEFT + 2185035826 + name 1_573_KEY_MRIGHT + 2185035827 + name 1_574_KEY_0 + 2185101312 + name 1_574_KEY_1 + 2185101313 + name 1_574_KEY_2 + 2185101314 + name 1_574_KEY_3 + 2185101315 + name 1_574_KEY_4 + 2185101316 + name 1_574_KEY_5 + 2185101317 + name 1_574_KEY_6 + 2185101318 + name 1_574_KEY_7 + 2185101319 + name 1_574_KEY_8 + 2185101320 + name 1_574_KEY_9 + 2185101321 + name 1_574_KEY_POWER + 2185101322 + name 1_574_KEY_CH_UP + 2185101327 + name 1_574_KEY_CH_DOWN + 2185101328 + name 1_574_KEY_MUTE + 2185101329 + name 1_574_KEY_VOL_DOWN + 2185101330 + name 1_574_KEY_VOL_UP + 2185101332 + name 1_574_KEY_MNSELECT + 2185101335 + name 1_574_KEY_EXIT + 2185101336 + name 1_574_KEY_AV + 2185101353 + name 1_574_KEY_MENU + 2185101359 + name 1_574_KEY_MUP + 2185101360 + name 1_574_KEY_MDOWN + 2185101361 + name 1_574_KEY_MLEFT + 2185101362 + name 1_574_KEY_MRIGHT + 2185101363 + name 1_575_KEY_0 + 2185166848 + name 1_575_KEY_1 + 2185166849 + name 1_575_KEY_2 + 2185166850 + name 1_575_KEY_3 + 2185166851 + name 1_575_KEY_4 + 2185166852 + name 1_575_KEY_5 + 2185166853 + name 1_575_KEY_6 + 2185166854 + name 1_575_KEY_7 + 2185166855 + name 1_575_KEY_8 + 2185166856 + name 1_575_KEY_9 + 2185166857 + name 1_575_KEY_POWER + 2185166858 + name 1_575_KEY_CH_UP + 2185166863 + name 1_575_KEY_CH_DOWN + 2185166864 + name 1_575_KEY_AV + 2185166889 + name 1_576_KEY_0 + 2185232384 + name 1_576_KEY_1 + 2185232385 + name 1_576_KEY_2 + 2185232386 + name 1_576_KEY_3 + 2185232387 + name 1_576_KEY_4 + 2185232388 + name 1_576_KEY_5 + 2185232389 + name 1_576_KEY_6 + 2185232390 + name 1_576_KEY_7 + 2185232391 + name 1_576_KEY_8 + 2185232392 + name 1_576_KEY_9 + 2185232393 + name 1_576_KEY_POWER + 2185232394 + name 1_576_KEY_CH_UP + 2185232399 + name 1_576_KEY_CH_DOWN + 2185232400 + name 1_576_KEY_AV + 2185232425 + name 1_577_KEY_0 + 2185297920 + name 1_577_KEY_1 + 2185297921 + name 1_577_KEY_2 + 2185297922 + name 1_577_KEY_3 + 2185297923 + name 1_577_KEY_4 + 2185297924 + name 1_577_KEY_5 + 2185297925 + name 1_577_KEY_6 + 2185297926 + name 1_577_KEY_7 + 2185297927 + name 1_577_KEY_8 + 2185297928 + name 1_577_KEY_9 + 2185297929 + name 1_577_KEY_POWER + 2185297930 + name 1_577_KEY_CH_UP + 2185297935 + name 1_577_KEY_CH_DOWN + 2185297936 + name 1_577_KEY_MUTE + 2185297937 + name 1_577_KEY_VOL_DOWN + 2185297938 + name 1_577_KEY_VOL_UP + 2185297940 + name 1_577_KEY_MNSELECT + 2185297943 + name 1_577_KEY_EXIT + 2185297944 + name 1_577_KEY_MLEFT + 2185297970 + name 1_577_KEY_MRIGHT + 2185297971 + name 1_578_KEY_0 + 2185363456 + name 1_578_KEY_1 + 2185363457 + name 1_578_KEY_2 + 2185363458 + name 1_578_KEY_3 + 2185363459 + name 1_578_KEY_4 + 2185363460 + name 1_578_KEY_5 + 2185363461 + name 1_578_KEY_6 + 2185363462 + name 1_578_KEY_7 + 2185363463 + name 1_578_KEY_8 + 2185363464 + name 1_578_KEY_9 + 2185363465 + name 1_578_KEY_POWER + 2185363466 + name 1_578_KEY_CH_UP + 2185363471 + name 1_578_KEY_CH_DOWN + 2185363472 + name 1_578_KEY_MUTE + 2185363473 + name 1_578_KEY_MNSELECT + 2185363479 + name 1_578_KEY_MLEFT + 2185363506 + name 1_578_KEY_MRIGHT + 2185363507 + name 1_579_KEY_0 + 2185428992 + name 1_579_KEY_1 + 2185428993 + name 1_579_KEY_2 + 2185428994 + name 1_579_KEY_3 + 2185428995 + name 1_579_KEY_4 + 2185428996 + name 1_579_KEY_5 + 2185428997 + name 1_579_KEY_6 + 2185428998 + name 1_579_KEY_7 + 2185428999 + name 1_579_KEY_8 + 2185429000 + name 1_579_KEY_9 + 2185429001 + name 1_579_KEY_POWER + 2185429002 + name 1_579_KEY_CH_UP + 2185429007 + name 1_579_KEY_CH_DOWN + 2185429008 + name 1_579_KEY_MUTE + 2185429009 + name 1_579_KEY_MNSELECT + 2185429015 + name 1_579_KEY_AV + 2185429033 + name 1_579_KEY_MLEFT + 2185429042 + name 1_579_KEY_MRIGHT + 2185429043 + name 1_580_KEY_0 + 2185494528 + name 1_580_KEY_1 + 2185494529 + name 1_580_KEY_2 + 2185494530 + name 1_580_KEY_3 + 2185494531 + name 1_580_KEY_4 + 2185494532 + name 1_580_KEY_5 + 2185494533 + name 1_580_KEY_6 + 2185494534 + name 1_580_KEY_7 + 2185494535 + name 1_580_KEY_8 + 2185494536 + name 1_580_KEY_9 + 2185494537 + name 1_580_KEY_POWER + 2185494538 + name 1_580_KEY_CH_UP + 2185494543 + name 1_580_KEY_CH_DOWN + 2185494544 + name 1_580_KEY_MUTE + 2185494545 + name 1_580_KEY_MNSELECT + 2185494551 + name 1_580_KEY_MLEFT + 2185494578 + name 1_580_KEY_MRIGHT + 2185494579 + name 1_581_KEY_0 + 2185560064 + name 1_581_KEY_1 + 2185560065 + name 1_581_KEY_2 + 2185560066 + name 1_581_KEY_3 + 2185560067 + name 1_581_KEY_4 + 2185560068 + name 1_581_KEY_5 + 2185560069 + name 1_581_KEY_6 + 2185560070 + name 1_581_KEY_7 + 2185560071 + name 1_581_KEY_8 + 2185560072 + name 1_581_KEY_9 + 2185560073 + name 1_581_KEY_POWER + 2185560074 + name 1_581_KEY_CH_UP + 2185560079 + name 1_581_KEY_CH_DOWN + 2185560080 + name 1_581_KEY_AV + 2185560105 + name 1_581_KEY_MLEFT + 2185560114 + name 1_581_KEY_MRIGHT + 2185560115 + name 1_582_KEY_0 + 2185625600 + name 1_582_KEY_1 + 2185625601 + name 1_582_KEY_2 + 2185625602 + name 1_582_KEY_3 + 2185625603 + name 1_582_KEY_4 + 2185625604 + name 1_582_KEY_5 + 2185625605 + name 1_582_KEY_6 + 2185625606 + name 1_582_KEY_7 + 2185625607 + name 1_582_KEY_8 + 2185625608 + name 1_582_KEY_9 + 2185625609 + name 1_582_KEY_POWER + 2185625610 + name 1_582_KEY_CH_UP + 2185625615 + name 1_582_KEY_CH_DOWN + 2185625616 + name 1_582_KEY_AV + 2185625641 + name 1_583_KEY_0 + 2185691136 + name 1_583_KEY_1 + 2185691137 + name 1_583_KEY_2 + 2185691138 + name 1_583_KEY_3 + 2185691139 + name 1_583_KEY_4 + 2185691140 + name 1_583_KEY_5 + 2185691141 + name 1_583_KEY_6 + 2185691142 + name 1_583_KEY_7 + 2185691143 + name 1_583_KEY_8 + 2185691144 + name 1_583_KEY_9 + 2185691145 + name 1_583_KEY_POWER + 2185691146 + name 1_583_KEY_CH_UP + 2185691151 + name 1_583_KEY_CH_DOWN + 2185691152 + name 1_583_KEY_MUTE + 2185691153 + name 1_583_KEY_VOL_DOWN + 2185691154 + name 1_583_KEY_VOL_UP + 2185691156 + name 1_583_KEY_MNSELECT + 2185691159 + name 1_583_KEY_AV + 2185691177 + name 1_583_KEY_MUP + 2185691184 + name 1_583_KEY_MDOWN + 2185691185 + name 1_583_KEY_MLEFT + 2185691186 + name 1_583_KEY_MRIGHT + 2185691187 + name 1_584_KEY_0 + 2185756672 + name 1_584_KEY_1 + 2185756673 + name 1_584_KEY_2 + 2185756674 + name 1_584_KEY_3 + 2185756675 + name 1_584_KEY_4 + 2185756676 + name 1_584_KEY_5 + 2185756677 + name 1_584_KEY_6 + 2185756678 + name 1_584_KEY_7 + 2185756679 + name 1_584_KEY_8 + 2185756680 + name 1_584_KEY_9 + 2185756681 + name 1_584_KEY_POWER + 2185756682 + name 1_584_KEY_CH_UP + 2185756687 + name 1_584_KEY_CH_DOWN + 2185756688 + name 1_584_KEY_MUTE + 2185756689 + name 1_584_KEY_VOL_DOWN + 2185756690 + name 1_584_KEY_VOL_UP + 2185756692 + name 1_584_KEY_MNSELECT + 2185756695 + name 1_584_KEY_MENU + 2185756719 + name 1_584_KEY_MUP + 2185756720 + name 1_584_KEY_MDOWN + 2185756721 + name 1_584_KEY_MLEFT + 2185756722 + name 1_584_KEY_MRIGHT + 2185756723 + name 1_585_KEY_0 + 2185822208 + name 1_585_KEY_1 + 2185822209 + name 1_585_KEY_2 + 2185822210 + name 1_585_KEY_3 + 2185822211 + name 1_585_KEY_4 + 2185822212 + name 1_585_KEY_5 + 2185822213 + name 1_585_KEY_6 + 2185822214 + name 1_585_KEY_7 + 2185822215 + name 1_585_KEY_8 + 2185822216 + name 1_585_KEY_9 + 2185822217 + name 1_585_KEY_POWER + 2185822218 + name 1_585_KEY_CH_UP + 2185822223 + name 1_585_KEY_CH_DOWN + 2185822224 + name 1_585_KEY_MUTE + 2185822225 + name 1_585_KEY_AV + 2185822249 + name 1_586_KEY_0 + 2185887744 + name 1_586_KEY_1 + 2185887745 + name 1_586_KEY_2 + 2185887746 + name 1_586_KEY_3 + 2185887747 + name 1_586_KEY_4 + 2185887748 + name 1_586_KEY_5 + 2185887749 + name 1_586_KEY_6 + 2185887750 + name 1_586_KEY_7 + 2185887751 + name 1_586_KEY_8 + 2185887752 + name 1_586_KEY_9 + 2185887753 + name 1_586_KEY_POWER + 2185887754 + name 1_586_KEY_CH_UP + 2185887759 + name 1_586_KEY_CH_DOWN + 2185887760 + name 1_586_KEY_MUTE + 2185887761 + name 1_586_KEY_MNSELECT + 2185887767 + name 1_586_KEY_MUP + 2185887792 + name 1_586_KEY_MDOWN + 2185887793 + name 1_587_KEY_0 + 2185953280 + name 1_587_KEY_1 + 2185953281 + name 1_587_KEY_2 + 2185953282 + name 1_587_KEY_3 + 2185953283 + name 1_587_KEY_4 + 2185953284 + name 1_587_KEY_5 + 2185953285 + name 1_587_KEY_6 + 2185953286 + name 1_587_KEY_7 + 2185953287 + name 1_587_KEY_8 + 2185953288 + name 1_587_KEY_9 + 2185953289 + name 1_587_KEY_POWER + 2185953290 + name 1_587_KEY_CH_UP + 2185953295 + name 1_587_KEY_CH_DOWN + 2185953296 + name 1_587_KEY_MUTE + 2185953297 + name 1_587_KEY_VOL_DOWN + 2185953298 + name 1_587_KEY_VOL_UP + 2185953300 + name 1_587_KEY_MNSELECT + 2185953303 + name 1_587_KEY_EXIT + 2185953304 + name 1_587_KEY_MENU + 2185953327 + name 1_587_KEY_MUP + 2185953328 + name 1_587_KEY_MDOWN + 2185953329 + name 1_587_KEY_MLEFT + 2185953330 + name 1_587_KEY_MRIGHT + 2185953331 + name 1_588_KEY_0 + 2186018816 + name 1_588_KEY_1 + 2186018817 + name 1_588_KEY_2 + 2186018818 + name 1_588_KEY_3 + 2186018819 + name 1_588_KEY_4 + 2186018820 + name 1_588_KEY_5 + 2186018821 + name 1_588_KEY_6 + 2186018822 + name 1_588_KEY_7 + 2186018823 + name 1_588_KEY_8 + 2186018824 + name 1_588_KEY_9 + 2186018825 + name 1_588_KEY_POWER + 2186018826 + name 1_588_KEY_CH_UP + 2186018831 + name 1_588_KEY_CH_DOWN + 2186018832 + name 1_588_KEY_MUTE + 2186018833 + name 1_588_KEY_VOL_DOWN + 2186018834 + name 1_588_KEY_VOL_UP + 2186018836 + name 1_588_KEY_MNSELECT + 2186018839 + name 1_588_KEY_EXIT + 2186018840 + name 1_588_KEY_AV + 2186018857 + name 1_588_KEY_MENU + 2186018863 + name 1_588_KEY_MUP + 2186018864 + name 1_588_KEY_MDOWN + 2186018865 + name 1_588_KEY_MLEFT + 2186018866 + name 1_588_KEY_MRIGHT + 2186018867 + name 1_589_KEY_0 + 2186084352 + name 1_589_KEY_1 + 2186084353 + name 1_589_KEY_2 + 2186084354 + name 1_589_KEY_3 + 2186084355 + name 1_589_KEY_4 + 2186084356 + name 1_589_KEY_5 + 2186084357 + name 1_589_KEY_6 + 2186084358 + name 1_589_KEY_7 + 2186084359 + name 1_589_KEY_8 + 2186084360 + name 1_589_KEY_9 + 2186084361 + name 1_589_KEY_POWER + 2186084362 + name 1_589_KEY_CH_UP + 2186084367 + name 1_589_KEY_CH_DOWN + 2186084368 + name 1_589_KEY_MUTE + 2186084369 + name 1_589_KEY_VOL_DOWN + 2186084370 + name 1_589_KEY_VOL_UP + 2186084372 + name 1_589_KEY_MNSELECT + 2186084375 + name 1_589_KEY_EXIT + 2186084376 + name 1_589_KEY_AV + 2186084393 + name 1_589_KEY_MENU + 2186084399 + name 1_589_KEY_MUP + 2186084400 + name 1_589_KEY_MDOWN + 2186084401 + name 1_589_KEY_MLEFT + 2186084402 + name 1_589_KEY_MRIGHT + 2186084403 + name 1_590_KEY_0 + 2186149888 + name 1_590_KEY_1 + 2186149889 + name 1_590_KEY_2 + 2186149890 + name 1_590_KEY_3 + 2186149891 + name 1_590_KEY_4 + 2186149892 + name 1_590_KEY_5 + 2186149893 + name 1_590_KEY_6 + 2186149894 + name 1_590_KEY_7 + 2186149895 + name 1_590_KEY_8 + 2186149896 + name 1_590_KEY_9 + 2186149897 + name 1_590_KEY_POWER + 2186149898 + name 1_590_KEY_CH_UP + 2186149903 + name 1_590_KEY_CH_DOWN + 2186149904 + name 1_590_KEY_MUTE + 2186149905 + name 1_590_KEY_VOL_DOWN + 2186149906 + name 1_590_KEY_VOL_UP + 2186149908 + name 1_590_KEY_MNSELECT + 2186149911 + name 1_590_KEY_EXIT + 2186149912 + name 1_590_KEY_AV + 2186149929 + name 1_590_KEY_MENU + 2186149935 + name 1_590_KEY_MUP + 2186149936 + name 1_590_KEY_MDOWN + 2186149937 + name 1_590_KEY_MLEFT + 2186149938 + name 1_590_KEY_MRIGHT + 2186149939 + name 1_591_KEY_0 + 2186215424 + name 1_591_KEY_1 + 2186215425 + name 1_591_KEY_2 + 2186215426 + name 1_591_KEY_3 + 2186215427 + name 1_591_KEY_4 + 2186215428 + name 1_591_KEY_5 + 2186215429 + name 1_591_KEY_6 + 2186215430 + name 1_591_KEY_7 + 2186215431 + name 1_591_KEY_8 + 2186215432 + name 1_591_KEY_9 + 2186215433 + name 1_591_KEY_POWER + 2186215434 + name 1_591_KEY_CH_UP + 2186215439 + name 1_591_KEY_CH_DOWN + 2186215440 + name 1_591_KEY_MUTE + 2186215441 + name 1_591_KEY_VOL_DOWN + 2186215442 + name 1_591_KEY_VOL_UP + 2186215444 + name 1_591_KEY_MNSELECT + 2186215447 + name 1_591_KEY_EXIT + 2186215448 + name 1_591_KEY_AV + 2186215465 + name 1_591_KEY_MENU + 2186215471 + name 1_591_KEY_MUP + 2186215472 + name 1_591_KEY_MDOWN + 2186215473 + name 1_591_KEY_MLEFT + 2186215474 + name 1_591_KEY_MRIGHT + 2186215475 + name 1_592_KEY_0 + 2186280960 + name 1_592_KEY_1 + 2186280961 + name 1_592_KEY_2 + 2186280962 + name 1_592_KEY_3 + 2186280963 + name 1_592_KEY_4 + 2186280964 + name 1_592_KEY_5 + 2186280965 + name 1_592_KEY_6 + 2186280966 + name 1_592_KEY_7 + 2186280967 + name 1_592_KEY_8 + 2186280968 + name 1_592_KEY_9 + 2186280969 + name 1_592_KEY_POWER + 2186280970 + name 1_592_KEY_CH_UP + 2186280975 + name 1_592_KEY_CH_DOWN + 2186280976 + name 1_592_KEY_MUTE + 2186280977 + name 1_592_KEY_VOL_DOWN + 2186280978 + name 1_592_KEY_VOL_UP + 2186280980 + name 1_592_KEY_MNSELECT + 2186280983 + name 1_592_KEY_EXIT + 2186280984 + name 1_592_KEY_AV + 2186281001 + name 1_592_KEY_MENU + 2186281007 + name 1_592_KEY_MUP + 2186281008 + name 1_592_KEY_MDOWN + 2186281009 + name 1_592_KEY_MLEFT + 2186281010 + name 1_592_KEY_MRIGHT + 2186281011 + name 1_593_KEY_0 + 2186346496 + name 1_593_KEY_1 + 2186346497 + name 1_593_KEY_2 + 2186346498 + name 1_593_KEY_3 + 2186346499 + name 1_593_KEY_4 + 2186346500 + name 1_593_KEY_5 + 2186346501 + name 1_593_KEY_6 + 2186346502 + name 1_593_KEY_7 + 2186346503 + name 1_593_KEY_8 + 2186346504 + name 1_593_KEY_9 + 2186346505 + name 1_593_KEY_POWER + 2186346506 + name 1_593_KEY_CH_UP + 2186346511 + name 1_593_KEY_CH_DOWN + 2186346512 + name 1_593_KEY_MUTE + 2186346513 + name 1_593_KEY_VOL_DOWN + 2186346514 + name 1_593_KEY_VOL_UP + 2186346516 + name 1_593_KEY_MNSELECT + 2186346519 + name 1_593_KEY_EXIT + 2186346520 + name 1_593_KEY_AV + 2186346537 + name 1_593_KEY_MENU + 2186346543 + name 1_593_KEY_MUP + 2186346544 + name 1_593_KEY_MDOWN + 2186346545 + name 1_593_KEY_MLEFT + 2186346546 + name 1_593_KEY_MRIGHT + 2186346547 + name 1_594_KEY_0 + 2186412032 + name 1_594_KEY_1 + 2186412033 + name 1_594_KEY_2 + 2186412034 + name 1_594_KEY_3 + 2186412035 + name 1_594_KEY_4 + 2186412036 + name 1_594_KEY_5 + 2186412037 + name 1_594_KEY_6 + 2186412038 + name 1_594_KEY_7 + 2186412039 + name 1_594_KEY_8 + 2186412040 + name 1_594_KEY_9 + 2186412041 + name 1_594_KEY_POWER + 2186412042 + name 1_594_KEY_CH_UP + 2186412047 + name 1_594_KEY_CH_DOWN + 2186412048 + name 1_594_KEY_MUTE + 2186412049 + name 1_594_KEY_MNSELECT + 2186412055 + name 1_594_KEY_AV + 2186412073 + name 1_595_KEY_0 + 2186477568 + name 1_595_KEY_1 + 2186477569 + name 1_595_KEY_2 + 2186477570 + name 1_595_KEY_3 + 2186477571 + name 1_595_KEY_4 + 2186477572 + name 1_595_KEY_5 + 2186477573 + name 1_595_KEY_6 + 2186477574 + name 1_595_KEY_7 + 2186477575 + name 1_595_KEY_8 + 2186477576 + name 1_595_KEY_9 + 2186477577 + name 1_595_KEY_POWER + 2186477578 + name 1_595_KEY_CH_UP + 2186477583 + name 1_595_KEY_CH_DOWN + 2186477584 + name 1_595_KEY_MUTE + 2186477585 + name 1_595_KEY_VOL_DOWN + 2186477586 + name 1_595_KEY_VOL_UP + 2186477588 + name 1_595_KEY_MNSELECT + 2186477591 + name 1_595_KEY_EXIT + 2186477592 + name 1_595_KEY_AV + 2186477609 + name 1_595_KEY_MENU + 2186477615 + name 1_595_KEY_MUP + 2186477616 + name 1_595_KEY_MDOWN + 2186477617 + name 1_595_KEY_MLEFT + 2186477618 + name 1_595_KEY_MRIGHT + 2186477619 + name 1_596_KEY_0 + 2186543104 + name 1_596_KEY_1 + 2186543105 + name 1_596_KEY_2 + 2186543106 + name 1_596_KEY_3 + 2186543107 + name 1_596_KEY_4 + 2186543108 + name 1_596_KEY_5 + 2186543109 + name 1_596_KEY_6 + 2186543110 + name 1_596_KEY_7 + 2186543111 + name 1_596_KEY_8 + 2186543112 + name 1_596_KEY_9 + 2186543113 + name 1_596_KEY_POWER + 2186543114 + name 1_596_TWO_DIGITS + 2186543117 + name 1_596_KEY_CH_UP + 2186543119 + name 1_596_KEY_CH_DOWN + 2186543120 + name 1_596_KEY_MUTE + 2186543121 + name 1_596_KEY_VOL_DOWN + 2186543122 + name 1_596_KEY_VOL_UP + 2186543124 + name 1_596_KEY_BLUE + 2186543139 + name 1_596_KEY_GREEN + 2186543140 + name 1_596_KEY_RED + 2186543141 + name 1_596_KEY_YELLOW + 2186543142 + name 1_596_KEY_MENU + 2186543151 + name 1_596_KEY_On + 2186543181 + name 1_597_KEY_0 + 2186608640 + name 1_597_KEY_1 + 2186608641 + name 1_597_KEY_2 + 2186608642 + name 1_597_KEY_3 + 2186608643 + name 1_597_KEY_4 + 2186608644 + name 1_597_KEY_5 + 2186608645 + name 1_597_KEY_6 + 2186608646 + name 1_597_KEY_7 + 2186608647 + name 1_597_KEY_8 + 2186608648 + name 1_597_KEY_9 + 2186608649 + name 1_597_KEY_POWER + 2186608650 + name 1_597_KEY_CH_UP + 2186608655 + name 1_597_KEY_CH_DOWN + 2186608656 + name 1_597_KEY_MUTE + 2186608657 + name 1_597_KEY_VOL_DOWN + 2186608658 + name 1_597_KEY_VOL_UP + 2186608660 + name 1_597_KEY_MNSELECT + 2186608663 + name 1_597_KEY_MENU + 2186608687 + name 1_597_KEY_MUP + 2186608688 + name 1_597_KEY_MDOWN + 2186608689 + name 1_597_KEY_MLEFT + 2186608690 + name 1_597_KEY_MRIGHT + 2186608691 + name 1_597_KEY_Sleep + 2186608703 + name 1_597_KEY_Off + 2186608718 + name 1_598_KEY_0 + 2186674176 + name 1_598_KEY_1 + 2186674177 + name 1_598_KEY_2 + 2186674178 + name 1_598_KEY_3 + 2186674179 + name 1_598_KEY_4 + 2186674180 + name 1_598_KEY_5 + 2186674181 + name 1_598_KEY_6 + 2186674182 + name 1_598_KEY_7 + 2186674183 + name 1_598_KEY_8 + 2186674184 + name 1_598_KEY_9 + 2186674185 + name 1_598_KEY_POWER + 2186674186 + name 1_598_KEY_CH_UP + 2186674191 + name 1_598_KEY_CH_DOWN + 2186674192 + name 1_598_KEY_MUTE + 2186674193 + name 1_598_KEY_MENU + 2186674223 + name 1_598_KEY_MUP + 2186674224 + name 1_598_KEY_MDOWN + 2186674225 + name 1_599_KEY_0 + 2186739712 + name 1_599_KEY_1 + 2186739713 + name 1_599_KEY_2 + 2186739714 + name 1_599_KEY_3 + 2186739715 + name 1_599_KEY_4 + 2186739716 + name 1_599_KEY_5 + 2186739717 + name 1_599_KEY_6 + 2186739718 + name 1_599_KEY_7 + 2186739719 + name 1_599_KEY_8 + 2186739720 + name 1_599_KEY_9 + 2186739721 + name 1_599_KEY_POWER + 2186739722 + name 1_599_TWO_DIGITS + 2186739725 + name 1_599_KEY_CH_UP + 2186739727 + name 1_599_KEY_CH_DOWN + 2186739728 + name 1_599_KEY_MUTE + 2186739729 + name 1_599_KEY_VOL_DOWN + 2186739730 + name 1_599_KEY_VOL_UP + 2186739732 + name 1_599_KEY_MNSELECT + 2186739735 + name 1_599_KEY_EXIT + 2186739736 + name 1_599_KEY_BLUE + 2186739747 + name 1_599_KEY_GREEN + 2186739748 + name 1_599_KEY_RED + 2186739749 + name 1_599_KEY_YELLOW + 2186739750 + name 1_599_KEY_MENU + 2186739759 + name 1_599_KEY_MUP + 2186739760 + name 1_599_KEY_MDOWN + 2186739761 + name 1_599_KEY_On + 2186739789 + name 1_599_KEY_Off + 2186739790 + name 1_600_KEY_0 + 2186805248 + name 1_600_KEY_1 + 2186805249 + name 1_600_KEY_2 + 2186805250 + name 1_600_KEY_3 + 2186805251 + name 1_600_KEY_4 + 2186805252 + name 1_600_KEY_5 + 2186805253 + name 1_600_KEY_6 + 2186805254 + name 1_600_KEY_7 + 2186805255 + name 1_600_KEY_8 + 2186805256 + name 1_600_KEY_9 + 2186805257 + name 1_600_KEY_POWER + 2186805258 + name 1_600_TWO_DIGITS + 2186805261 + name 1_600_KEY_CH_UP + 2186805263 + name 1_600_KEY_CH_DOWN + 2186805264 + name 1_600_KEY_MUTE + 2186805265 + name 1_600_KEY_VOL_DOWN + 2186805266 + name 1_600_CH_PREVIOUS + 2186805267 + name 1_600_KEY_VOL_UP + 2186805268 + name 1_600_KEY_MNSELECT + 2186805271 + name 1_600_KEY_EXIT + 2186805272 + name 1_600_KEY_MNRETRUN + 2186805280 + name 1_600_KEY_BLUE + 2186805283 + name 1_600_KEY_GREEN + 2186805284 + name 1_600_KEY_RED + 2186805285 + name 1_600_KEY_YELLOW + 2186805286 + name 1_600_KEY_MENU + 2186805295 + name 1_600_KEY_MUP + 2186805296 + name 1_600_KEY_MDOWN + 2186805297 + name 1_600_KEY_MLEFT + 2186805298 + name 1_600_KEY_MRIGHT + 2186805299 + name 1_600_KEY_Sleep + 2186805311 + name 1_600_KEY_DSubtitle + 2186805316 + name 1_600_KEY_On + 2186805325 + name 1_600_KEY_Off + 2186805326 + name 1_601_KEY_0 + 2186870784 + name 1_601_KEY_1 + 2186870785 + name 1_601_KEY_2 + 2186870786 + name 1_601_KEY_3 + 2186870787 + name 1_601_KEY_4 + 2186870788 + name 1_601_KEY_5 + 2186870789 + name 1_601_KEY_6 + 2186870790 + name 1_601_KEY_7 + 2186870791 + name 1_601_KEY_8 + 2186870792 + name 1_601_KEY_9 + 2186870793 + name 1_601_KEY_POWER + 2186870794 + name 1_601_TWO_DIGITS + 2186870797 + name 1_601_KEY_CH_UP + 2186870799 + name 1_601_KEY_CH_DOWN + 2186870800 + name 1_601_KEY_MUTE + 2186870801 + name 1_601_KEY_VOL_DOWN + 2186870802 + name 1_601_KEY_VOL_UP + 2186870804 + name 1_601_KEY_EXIT + 2186870808 + name 1_601_KEY_GUIDE + 2186870811 + name 1_601_KEY_BLUE + 2186870819 + name 1_601_KEY_GREEN + 2186870820 + name 1_601_KEY_RED + 2186870821 + name 1_601_KEY_YELLOW + 2186870822 + name 1_601_KEY_MENU + 2186870831 + name 1_601_KEY_MUP + 2186870832 + name 1_601_KEY_MDOWN + 2186870833 + name 1_601_KEY_Sleep + 2186870847 + name 1_601_KEY_DSubtitle + 2186870852 + name 1_601_KEY_On + 2186870861 + name 1_602_KEY_0 + 2186936320 + name 1_602_KEY_1 + 2186936321 + name 1_602_KEY_2 + 2186936322 + name 1_602_KEY_3 + 2186936323 + name 1_602_KEY_4 + 2186936324 + name 1_602_KEY_5 + 2186936325 + name 1_602_KEY_6 + 2186936326 + name 1_602_KEY_7 + 2186936327 + name 1_602_KEY_8 + 2186936328 + name 1_602_KEY_9 + 2186936329 + name 1_602_KEY_POWER + 2186936330 + name 1_602_KEY_CH_UP + 2186936335 + name 1_602_KEY_CH_DOWN + 2186936336 + name 1_602_KEY_MUTE + 2186936337 + name 1_602_KEY_VOL_DOWN + 2186936338 + name 1_602_CH_PREVIOUS + 2186936339 + name 1_602_KEY_VOL_UP + 2186936340 + name 1_602_KEY_MNSELECT + 2186936343 + name 1_602_KEY_EXIT + 2186936344 + name 1_602_KEY_GUIDE + 2186936347 + name 1_602_KEY_MENU + 2186936367 + name 1_602_KEY_MUP + 2186936368 + name 1_602_KEY_MDOWN + 2186936369 + name 1_602_KEY_MLEFT + 2186936370 + name 1_602_KEY_MRIGHT + 2186936371 + name 1_602_KEY_On + 2186936397 + name 1_602_KEY_Off + 2186936398 + name 1_603_KEY_0 + 2187001856 + name 1_603_KEY_1 + 2187001857 + name 1_603_KEY_2 + 2187001858 + name 1_603_KEY_3 + 2187001859 + name 1_603_KEY_4 + 2187001860 + name 1_603_KEY_5 + 2187001861 + name 1_603_KEY_6 + 2187001862 + name 1_603_KEY_7 + 2187001863 + name 1_603_KEY_8 + 2187001864 + name 1_603_KEY_9 + 2187001865 + name 1_603_KEY_POWER + 2187001866 + name 1_603_KEY_CH_UP + 2187001871 + name 1_603_KEY_CH_DOWN + 2187001872 + name 1_603_KEY_MUTE + 2187001873 + name 1_603_CH_PREVIOUS + 2187001875 + name 1_604_KEY_0 + 2187067392 + name 1_604_KEY_1 + 2187067393 + name 1_604_KEY_2 + 2187067394 + name 1_604_KEY_3 + 2187067395 + name 1_604_KEY_4 + 2187067396 + name 1_604_KEY_5 + 2187067397 + name 1_604_KEY_6 + 2187067398 + name 1_604_KEY_7 + 2187067399 + name 1_604_KEY_8 + 2187067400 + name 1_604_KEY_9 + 2187067401 + name 1_604_KEY_POWER + 2187067402 + name 1_604_KEY_CH_UP + 2187067407 + name 1_604_KEY_CH_DOWN + 2187067408 + name 1_604_KEY_MUTE + 2187067409 + name 1_604_CH_PREVIOUS + 2187067411 + name 1_605_KEY_0 + 2187132928 + name 1_605_KEY_1 + 2187132929 + name 1_605_KEY_2 + 2187132930 + name 1_605_KEY_3 + 2187132931 + name 1_605_KEY_4 + 2187132932 + name 1_605_KEY_5 + 2187132933 + name 1_605_KEY_6 + 2187132934 + name 1_605_KEY_7 + 2187132935 + name 1_605_KEY_8 + 2187132936 + name 1_605_KEY_9 + 2187132937 + name 1_605_KEY_POWER + 2187132938 + name 1_605_KEY_CH_UP + 2187132943 + name 1_605_KEY_CH_DOWN + 2187132944 + name 1_605_KEY_MUTE + 2187132945 + name 1_605_KEY_VOL_DOWN + 2187132946 + name 1_605_KEY_VOL_UP + 2187132948 + name 1_605_KEY_MNSELECT + 2187132951 + name 1_605_KEY_EXIT + 2187132952 + name 1_605_KEY_MENU + 2187132975 + name 1_605_KEY_MUP + 2187132976 + name 1_605_KEY_MDOWN + 2187132977 + name 1_605_KEY_MLEFT + 2187132978 + name 1_605_KEY_MRIGHT + 2187132979 + name 1_606_KEY_0 + 2187198464 + name 1_606_KEY_1 + 2187198465 + name 1_606_KEY_2 + 2187198466 + name 1_606_KEY_3 + 2187198467 + name 1_606_KEY_4 + 2187198468 + name 1_606_KEY_5 + 2187198469 + name 1_606_KEY_6 + 2187198470 + name 1_606_KEY_7 + 2187198471 + name 1_606_KEY_8 + 2187198472 + name 1_606_KEY_9 + 2187198473 + name 1_606_KEY_POWER + 2187198474 + name 1_606_KEY_CH_UP + 2187198479 + name 1_606_KEY_CH_DOWN + 2187198480 + name 1_606_KEY_MUTE + 2187198481 + name 1_606_KEY_VOL_DOWN + 2187198482 + name 1_606_KEY_VOL_UP + 2187198484 + name 1_606_KEY_MNSELECT + 2187198487 + name 1_606_KEY_EXIT + 2187198488 + name 1_606_KEY_MENU + 2187198511 + name 1_606_KEY_MUP + 2187198512 + name 1_606_KEY_MDOWN + 2187198513 + name 1_606_KEY_MLEFT + 2187198514 + name 1_606_KEY_MRIGHT + 2187198515 + name 1_607_KEY_0 + 2187264000 + name 1_607_KEY_1 + 2187264001 + name 1_607_KEY_2 + 2187264002 + name 1_607_KEY_3 + 2187264003 + name 1_607_KEY_4 + 2187264004 + name 1_607_KEY_5 + 2187264005 + name 1_607_KEY_6 + 2187264006 + name 1_607_KEY_7 + 2187264007 + name 1_607_KEY_8 + 2187264008 + name 1_607_KEY_9 + 2187264009 + name 1_607_KEY_POWER + 2187264010 + name 1_607_TWO_DIGITS + 2187264013 + name 1_607_KEY_CH_UP + 2187264015 + name 1_607_KEY_CH_DOWN + 2187264016 + name 1_607_KEY_MUTE + 2187264017 + name 1_607_KEY_VOL_DOWN + 2187264018 + name 1_607_CH_PREVIOUS + 2187264019 + name 1_607_KEY_VOL_UP + 2187264020 + name 1_607_KEY_MNSELECT + 2187264023 + name 1_607_KEY_MENU + 2187264047 + name 1_607_KEY_MUP + 2187264048 + name 1_607_KEY_MDOWN + 2187264049 + name 1_607_KEY_MLEFT + 2187264050 + name 1_607_KEY_MRIGHT + 2187264051 + name 1_607_KEY_Sleep + 2187264063 + name 1_608_KEY_0 + 2187329536 + name 1_608_KEY_1 + 2187329537 + name 1_608_KEY_2 + 2187329538 + name 1_608_KEY_3 + 2187329539 + name 1_608_KEY_4 + 2187329540 + name 1_608_KEY_5 + 2187329541 + name 1_608_KEY_6 + 2187329542 + name 1_608_KEY_7 + 2187329543 + name 1_608_KEY_8 + 2187329544 + name 1_608_KEY_9 + 2187329545 + name 1_608_KEY_POWER + 2187329546 + name 1_608_TWO_DIGITS + 2187329549 + name 1_608_KEY_CH_UP + 2187329551 + name 1_608_KEY_CH_DOWN + 2187329552 + name 1_608_KEY_MUTE + 2187329553 + name 1_608_KEY_VOL_DOWN + 2187329554 + name 1_608_CH_PREVIOUS + 2187329555 + name 1_608_KEY_VOL_UP + 2187329556 + name 1_608_KEY_MNSELECT + 2187329559 + name 1_608_KEY_MENU + 2187329583 + name 1_608_KEY_MUP + 2187329584 + name 1_608_KEY_MDOWN + 2187329585 + name 1_608_KEY_MLEFT + 2187329586 + name 1_608_KEY_MRIGHT + 2187329587 + name 1_608_KEY_Sleep + 2187329599 + name 1_609_KEY_0 + 2187395072 + name 1_609_KEY_1 + 2187395073 + name 1_609_KEY_2 + 2187395074 + name 1_609_KEY_3 + 2187395075 + name 1_609_KEY_4 + 2187395076 + name 1_609_KEY_5 + 2187395077 + name 1_609_KEY_6 + 2187395078 + name 1_609_KEY_7 + 2187395079 + name 1_609_KEY_8 + 2187395080 + name 1_609_KEY_9 + 2187395081 + name 1_609_KEY_POWER + 2187395082 + name 1_609_KEY_CH_UP + 2187395087 + name 1_609_KEY_CH_DOWN + 2187395088 + name 1_609_KEY_MUTE + 2187395089 + name 1_609_KEY_VOL_DOWN + 2187395090 + name 1_609_KEY_VOL_UP + 2187395092 + name 1_609_KEY_MNSELECT + 2187395095 + name 1_609_KEY_MENU + 2187395119 + name 1_609_KEY_MUP + 2187395120 + name 1_609_KEY_MDOWN + 2187395121 + name 1_609_KEY_MLEFT + 2187395122 + name 1_609_KEY_MRIGHT + 2187395123 + name 1_609_KEY_On + 2187395149 + name 1_609_KEY_Off + 2187395150 + name 1_610_KEY_0 + 2187460608 + name 1_610_KEY_1 + 2187460609 + name 1_610_KEY_2 + 2187460610 + name 1_610_KEY_3 + 2187460611 + name 1_610_KEY_4 + 2187460612 + name 1_610_KEY_5 + 2187460613 + name 1_610_KEY_6 + 2187460614 + name 1_610_KEY_7 + 2187460615 + name 1_610_KEY_8 + 2187460616 + name 1_610_KEY_9 + 2187460617 + name 1_610_KEY_POWER + 2187460618 + name 1_610_KEY_CH_UP + 2187460623 + name 1_610_KEY_CH_DOWN + 2187460624 + name 1_610_KEY_MUTE + 2187460625 + name 1_610_KEY_VOL_DOWN + 2187460626 + name 1_610_KEY_VOL_UP + 2187460628 + name 1_610_KEY_MNSELECT + 2187460631 + name 1_610_KEY_MENU + 2187460655 + name 1_610_KEY_MUP + 2187460656 + name 1_610_KEY_MDOWN + 2187460657 + name 1_610_KEY_MLEFT + 2187460658 + name 1_610_KEY_MRIGHT + 2187460659 + name 1_610_KEY_On + 2187460685 + name 1_610_KEY_Off + 2187460686 + name 1_611_KEY_0 + 2187526144 + name 1_611_KEY_1 + 2187526145 + name 1_611_KEY_2 + 2187526146 + name 1_611_KEY_3 + 2187526147 + name 1_611_KEY_4 + 2187526148 + name 1_611_KEY_5 + 2187526149 + name 1_611_KEY_6 + 2187526150 + name 1_611_KEY_7 + 2187526151 + name 1_611_KEY_8 + 2187526152 + name 1_611_KEY_9 + 2187526153 + name 1_611_KEY_POWER + 2187526154 + name 1_611_TWO_DIGITS + 2187526157 + name 1_611_KEY_CH_UP + 2187526159 + name 1_611_KEY_CH_DOWN + 2187526160 + name 1_611_KEY_MUTE + 2187526161 + name 1_611_CH_PREVIOUS + 2187526163 + name 1_611_KEY_MNSELECT + 2187526167 + name 1_611_KEY_MENU + 2187526191 + name 1_611_KEY_MUP + 2187526192 + name 1_611_KEY_MDOWN + 2187526193 + name 1_611_KEY_MLEFT + 2187526194 + name 1_611_KEY_MRIGHT + 2187526195 + name 1_611_KEY_On + 2187526221 + name 1_612_KEY_0 + 2187591680 + name 1_612_KEY_1 + 2187591681 + name 1_612_KEY_2 + 2187591682 + name 1_612_KEY_3 + 2187591683 + name 1_612_KEY_4 + 2187591684 + name 1_612_KEY_5 + 2187591685 + name 1_612_KEY_6 + 2187591686 + name 1_612_KEY_7 + 2187591687 + name 1_612_KEY_8 + 2187591688 + name 1_612_KEY_9 + 2187591689 + name 1_612_KEY_POWER + 2187591690 + name 1_612_KEY_CH_UP + 2187591695 + name 1_612_KEY_CH_DOWN + 2187591696 + name 1_612_KEY_MNSELECT + 2187591703 + name 1_613_KEY_0 + 2187657216 + name 1_613_KEY_1 + 2187657217 + name 1_613_KEY_2 + 2187657218 + name 1_613_KEY_3 + 2187657219 + name 1_613_KEY_4 + 2187657220 + name 1_613_KEY_5 + 2187657221 + name 1_613_KEY_6 + 2187657222 + name 1_613_KEY_7 + 2187657223 + name 1_613_KEY_8 + 2187657224 + name 1_613_KEY_9 + 2187657225 + name 1_613_KEY_POWER + 2187657226 + name 1_613_KEY_CH_UP + 2187657231 + name 1_613_KEY_CH_DOWN + 2187657232 + name 1_613_KEY_MNSELECT + 2187657239 + name 1_614_KEY_0 + 2187722752 + name 1_614_KEY_1 + 2187722753 + name 1_614_KEY_2 + 2187722754 + name 1_614_KEY_3 + 2187722755 + name 1_614_KEY_4 + 2187722756 + name 1_614_KEY_5 + 2187722757 + name 1_614_KEY_6 + 2187722758 + name 1_614_KEY_7 + 2187722759 + name 1_614_KEY_8 + 2187722760 + name 1_614_KEY_9 + 2187722761 + name 1_614_KEY_POWER + 2187722762 + name 1_614_KEY_CH_UP + 2187722767 + name 1_614_KEY_CH_DOWN + 2187722768 + name 1_614_KEY_MUTE + 2187722769 + name 1_614_KEY_VOL_DOWN + 2187722770 + name 1_614_KEY_VOL_UP + 2187722772 + name 1_614_KEY_EXIT + 2187722776 + name 1_615_KEY_0 + 2187788288 + name 1_615_KEY_1 + 2187788289 + name 1_615_KEY_2 + 2187788290 + name 1_615_KEY_3 + 2187788291 + name 1_615_KEY_4 + 2187788292 + name 1_615_KEY_5 + 2187788293 + name 1_615_KEY_6 + 2187788294 + name 1_615_KEY_7 + 2187788295 + name 1_615_KEY_8 + 2187788296 + name 1_615_KEY_9 + 2187788297 + name 1_615_KEY_POWER + 2187788298 + name 1_615_KEY_CH_UP + 2187788303 + name 1_615_KEY_CH_DOWN + 2187788304 + name 1_615_KEY_MUTE + 2187788305 + name 1_615_KEY_VOL_DOWN + 2187788306 + name 1_615_KEY_VOL_UP + 2187788308 + name 1_615_KEY_MENU + 2187788335 + name 1_615_KEY_MUP + 2187788336 + name 1_615_KEY_MDOWN + 2187788337 + name 1_615_KEY_MLEFT + 2187788338 + name 1_615_KEY_MRIGHT + 2187788339 + name 1_615_KEY_Sleep + 2187788351 + name 1_615_KEY_Off + 2187788366 + name 1_616_KEY_0 + 2187853824 + name 1_616_KEY_1 + 2187853825 + name 1_616_KEY_2 + 2187853826 + name 1_616_KEY_3 + 2187853827 + name 1_616_KEY_4 + 2187853828 + name 1_616_KEY_5 + 2187853829 + name 1_616_KEY_6 + 2187853830 + name 1_616_KEY_7 + 2187853831 + name 1_616_KEY_8 + 2187853832 + name 1_616_KEY_9 + 2187853833 + name 1_616_KEY_POWER + 2187853834 + name 1_616_KEY_CH_UP + 2187853839 + name 1_616_KEY_CH_DOWN + 2187853840 + name 1_616_KEY_MUTE + 2187853841 + name 1_616_KEY_VOL_DOWN + 2187853842 + name 1_616_KEY_VOL_UP + 2187853844 + name 1_616_KEY_MENU + 2187853871 + name 1_616_KEY_MUP + 2187853872 + name 1_616_KEY_MDOWN + 2187853873 + name 1_616_KEY_MLEFT + 2187853874 + name 1_616_KEY_MRIGHT + 2187853875 + name 1_616_KEY_Sleep + 2187853887 + name 1_616_KEY_Off + 2187853902 + name 1_617_KEY_0 + 2187919360 + name 1_617_KEY_1 + 2187919361 + name 1_617_KEY_2 + 2187919362 + name 1_617_KEY_3 + 2187919363 + name 1_617_KEY_4 + 2187919364 + name 1_617_KEY_5 + 2187919365 + name 1_617_KEY_6 + 2187919366 + name 1_617_KEY_7 + 2187919367 + name 1_617_KEY_8 + 2187919368 + name 1_617_KEY_9 + 2187919369 + name 1_617_KEY_POWER + 2187919370 + name 1_617_KEY_CH_UP + 2187919375 + name 1_617_KEY_CH_DOWN + 2187919376 + name 1_617_KEY_MUTE + 2187919377 + name 1_617_KEY_VOL_DOWN + 2187919378 + name 1_617_KEY_VOL_UP + 2187919380 + name 1_617_KEY_MNSELECT + 2187919383 + name 1_617_KEY_MENU + 2187919407 + name 1_617_KEY_MUP + 2187919408 + name 1_617_KEY_MDOWN + 2187919409 + name 1_617_KEY_MLEFT + 2187919410 + name 1_617_KEY_MRIGHT + 2187919411 + name 1_617_KEY_Off + 2187919438 + name 1_618_KEY_0 + 2187984896 + name 1_618_KEY_1 + 2187984897 + name 1_618_KEY_2 + 2187984898 + name 1_618_KEY_3 + 2187984899 + name 1_618_KEY_4 + 2187984900 + name 1_618_KEY_5 + 2187984901 + name 1_618_KEY_6 + 2187984902 + name 1_618_KEY_7 + 2187984903 + name 1_618_KEY_8 + 2187984904 + name 1_618_KEY_9 + 2187984905 + name 1_618_KEY_POWER + 2187984906 + name 1_618_TWO_DIGITS + 2187984909 + name 1_618_KEY_CH_UP + 2187984911 + name 1_618_KEY_CH_DOWN + 2187984912 + name 1_618_KEY_MUTE + 2187984913 + name 1_618_KEY_VOL_DOWN + 2187984914 + name 1_618_KEY_VOL_UP + 2187984916 + name 1_618_KEY_MNSELECT + 2187984919 + name 1_618_KEY_MENU + 2187984943 + name 1_618_KEY_MUP + 2187984944 + name 1_618_KEY_MDOWN + 2187984945 + name 1_618_KEY_MLEFT + 2187984946 + name 1_618_KEY_MRIGHT + 2187984947 + name 1_619_KEY_0 + 2188050432 + name 1_619_KEY_1 + 2188050433 + name 1_619_KEY_2 + 2188050434 + name 1_619_KEY_3 + 2188050435 + name 1_619_KEY_4 + 2188050436 + name 1_619_KEY_5 + 2188050437 + name 1_619_KEY_6 + 2188050438 + name 1_619_KEY_7 + 2188050439 + name 1_619_KEY_8 + 2188050440 + name 1_619_KEY_9 + 2188050441 + name 1_619_KEY_POWER + 2188050442 + name 1_619_KEY_CH_UP + 2188050447 + name 1_619_KEY_CH_DOWN + 2188050448 + name 1_619_KEY_MUTE + 2188050449 + name 1_619_KEY_VOL_DOWN + 2188050450 + name 1_619_KEY_VOL_UP + 2188050452 + name 1_619_KEY_MNSELECT + 2188050455 + name 1_619_KEY_EXIT + 2188050456 + name 1_619_KEY_BLUE + 2188050467 + name 1_619_KEY_GREEN + 2188050468 + name 1_619_KEY_RED + 2188050469 + name 1_619_KEY_YELLOW + 2188050470 + name 1_619_KEY_MENU + 2188050479 + name 1_619_KEY_MUP + 2188050480 + name 1_619_KEY_MDOWN + 2188050481 + name 1_619_KEY_MLEFT + 2188050482 + name 1_619_KEY_MRIGHT + 2188050483 + name 1_619_KEY_On + 2188050509 + name 1_619_KEY_Off + 2188050510 + name 1_620_KEY_0 + 2188115968 + name 1_620_KEY_1 + 2188115969 + name 1_620_KEY_2 + 2188115970 + name 1_620_KEY_3 + 2188115971 + name 1_620_KEY_4 + 2188115972 + name 1_620_KEY_5 + 2188115973 + name 1_620_KEY_6 + 2188115974 + name 1_620_KEY_7 + 2188115975 + name 1_620_KEY_8 + 2188115976 + name 1_620_KEY_9 + 2188115977 + name 1_620_KEY_POWER + 2188115978 + name 1_620_KEY_CH_UP + 2188115983 + name 1_620_KEY_CH_DOWN + 2188115984 + name 1_620_KEY_MUTE + 2188115985 + name 1_621_KEY_0 + 2188181504 + name 1_621_KEY_1 + 2188181505 + name 1_621_KEY_2 + 2188181506 + name 1_621_KEY_3 + 2188181507 + name 1_621_KEY_4 + 2188181508 + name 1_621_KEY_5 + 2188181509 + name 1_621_KEY_6 + 2188181510 + name 1_621_KEY_7 + 2188181511 + name 1_621_KEY_8 + 2188181512 + name 1_621_KEY_9 + 2188181513 + name 1_621_KEY_POWER + 2188181514 + name 1_621_KEY_CH_UP + 2188181519 + name 1_621_KEY_CH_DOWN + 2188181520 + name 1_621_KEY_MUTE + 2188181521 + name 1_621_KEY_VOL_DOWN + 2188181522 + name 1_621_KEY_VOL_UP + 2188181524 + name 1_621_KEY_EXIT + 2188181528 + name 1_621_KEY_MENU + 2188181551 + name 1_621_KEY_MUP + 2188181552 + name 1_621_KEY_MDOWN + 2188181553 + name 1_621_KEY_MLEFT + 2188181554 + name 1_621_KEY_MRIGHT + 2188181555 + name 1_621_KEY_Sleep + 2188181567 + name 1_622_KEY_0 + 2188247040 + name 1_622_KEY_1 + 2188247041 + name 1_622_KEY_2 + 2188247042 + name 1_622_KEY_3 + 2188247043 + name 1_622_KEY_4 + 2188247044 + name 1_622_KEY_5 + 2188247045 + name 1_622_KEY_6 + 2188247046 + name 1_622_KEY_7 + 2188247047 + name 1_622_KEY_8 + 2188247048 + name 1_622_KEY_9 + 2188247049 + name 1_622_KEY_POWER + 2188247050 + name 1_622_TWO_DIGITS + 2188247053 + name 1_622_KEY_CH_UP + 2188247055 + name 1_622_KEY_CH_DOWN + 2188247056 + name 1_622_KEY_MUTE + 2188247057 + name 1_622_KEY_VOL_DOWN + 2188247058 + name 1_622_KEY_VOL_UP + 2188247060 + name 1_622_KEY_MNSELECT + 2188247063 + name 1_622_KEY_EXIT + 2188247064 + name 1_622_KEY_GUIDE + 2188247067 + name 1_622_KEY_BLUE + 2188247075 + name 1_622_KEY_GREEN + 2188247076 + name 1_622_KEY_RED + 2188247077 + name 1_622_KEY_YELLOW + 2188247078 + name 1_622_KEY_MENU + 2188247087 + name 1_622_KEY_MUP + 2188247088 + name 1_622_KEY_MDOWN + 2188247089 + name 1_622_KEY_MLEFT + 2188247090 + name 1_622_KEY_MRIGHT + 2188247091 + name 1_622_KEY_DSubtitle + 2188247108 + name 1_622_KEY_On + 2188247117 + name 1_622_KEY_Off + 2188247118 + name 1_623_KEY_0 + 2188312576 + name 1_623_KEY_1 + 2188312577 + name 1_623_KEY_2 + 2188312578 + name 1_623_KEY_3 + 2188312579 + name 1_623_KEY_4 + 2188312580 + name 1_623_KEY_5 + 2188312581 + name 1_623_KEY_6 + 2188312582 + name 1_623_KEY_7 + 2188312583 + name 1_623_KEY_8 + 2188312584 + name 1_623_KEY_9 + 2188312585 + name 1_623_KEY_POWER + 2188312586 + name 1_623_TWO_DIGITS + 2188312589 + name 1_623_KEY_CH_UP + 2188312591 + name 1_623_KEY_CH_DOWN + 2188312592 + name 1_623_KEY_MUTE + 2188312593 + name 1_623_KEY_VOL_DOWN + 2188312594 + name 1_623_KEY_VOL_UP + 2188312596 + name 1_623_KEY_MNSELECT + 2188312599 + name 1_623_KEY_EXIT + 2188312600 + name 1_623_KEY_GUIDE + 2188312603 + name 1_623_KEY_BLUE + 2188312611 + name 1_623_KEY_GREEN + 2188312612 + name 1_623_KEY_RED + 2188312613 + name 1_623_KEY_YELLOW + 2188312614 + name 1_623_KEY_MENU + 2188312623 + name 1_623_KEY_MUP + 2188312624 + name 1_623_KEY_MDOWN + 2188312625 + name 1_623_KEY_MLEFT + 2188312626 + name 1_623_KEY_MRIGHT + 2188312627 + name 1_623_KEY_DSubtitle + 2188312644 + name 1_623_KEY_On + 2188312653 + name 1_623_KEY_Off + 2188312654 + name 1_624_KEY_0 + 2188378112 + name 1_624_KEY_1 + 2188378113 + name 1_624_KEY_2 + 2188378114 + name 1_624_KEY_3 + 2188378115 + name 1_624_KEY_4 + 2188378116 + name 1_624_KEY_5 + 2188378117 + name 1_624_KEY_6 + 2188378118 + name 1_624_KEY_7 + 2188378119 + name 1_624_KEY_8 + 2188378120 + name 1_624_KEY_9 + 2188378121 + name 1_624_KEY_POWER + 2188378122 + name 1_624_TWO_DIGITS + 2188378125 + name 1_624_KEY_CH_UP + 2188378127 + name 1_624_KEY_CH_DOWN + 2188378128 + name 1_624_KEY_MUTE + 2188378129 + name 1_624_KEY_VOL_DOWN + 2188378130 + name 1_624_KEY_VOL_UP + 2188378132 + name 1_624_KEY_MNSELECT + 2188378135 + name 1_624_KEY_EXIT + 2188378136 + name 1_624_KEY_GUIDE + 2188378139 + name 1_624_KEY_BLUE + 2188378147 + name 1_624_KEY_GREEN + 2188378148 + name 1_624_KEY_RED + 2188378149 + name 1_624_KEY_YELLOW + 2188378150 + name 1_624_KEY_MENU + 2188378159 + name 1_624_KEY_MUP + 2188378160 + name 1_624_KEY_MDOWN + 2188378161 + name 1_624_KEY_MLEFT + 2188378162 + name 1_624_KEY_MRIGHT + 2188378163 + name 1_624_KEY_DSubtitle + 2188378180 + name 1_624_KEY_On + 2188378189 + name 1_624_KEY_Off + 2188378190 + name 1_625_KEY_0 + 2188443648 + name 1_625_KEY_1 + 2188443649 + name 1_625_KEY_2 + 2188443650 + name 1_625_KEY_3 + 2188443651 + name 1_625_KEY_4 + 2188443652 + name 1_625_KEY_5 + 2188443653 + name 1_625_KEY_6 + 2188443654 + name 1_625_KEY_7 + 2188443655 + name 1_625_KEY_8 + 2188443656 + name 1_625_KEY_9 + 2188443657 + name 1_625_KEY_POWER + 2188443658 + name 1_625_KEY_CH_UP + 2188443663 + name 1_625_KEY_CH_DOWN + 2188443664 + name 1_625_KEY_MUTE + 2188443665 + name 1_625_KEY_VOL_DOWN + 2188443666 + name 1_625_CH_PREVIOUS + 2188443667 + name 1_625_KEY_VOL_UP + 2188443668 + name 1_625_KEY_MNSELECT + 2188443671 + name 1_625_KEY_EXIT + 2188443672 + name 1_625_KEY_GUIDE + 2188443675 + name 1_625_KEY_MENU + 2188443695 + name 1_625_KEY_MUP + 2188443696 + name 1_625_KEY_MDOWN + 2188443697 + name 1_625_KEY_MLEFT + 2188443698 + name 1_625_KEY_MRIGHT + 2188443699 + name 1_625_KEY_On + 2188443725 + name 1_625_KEY_Off + 2188443726 + name 1_626_KEY_0 + 2188509184 + name 1_626_KEY_1 + 2188509185 + name 1_626_KEY_2 + 2188509186 + name 1_626_KEY_3 + 2188509187 + name 1_626_KEY_4 + 2188509188 + name 1_626_KEY_5 + 2188509189 + name 1_626_KEY_6 + 2188509190 + name 1_626_KEY_7 + 2188509191 + name 1_626_KEY_8 + 2188509192 + name 1_626_KEY_9 + 2188509193 + name 1_626_KEY_POWER + 2188509194 + name 1_626_KEY_CH_UP + 2188509199 + name 1_626_KEY_CH_DOWN + 2188509200 + name 1_626_KEY_MUTE + 2188509201 + name 1_626_KEY_VOL_DOWN + 2188509202 + name 1_626_KEY_VOL_UP + 2188509204 + name 1_626_KEY_MNSELECT + 2188509207 + name 1_626_KEY_EXIT + 2188509208 + name 1_626_KEY_GUIDE + 2188509211 + name 1_626_KEY_BLUE + 2188509219 + name 1_626_KEY_GREEN + 2188509220 + name 1_626_KEY_RED + 2188509221 + name 1_626_KEY_YELLOW + 2188509222 + name 1_626_KEY_MENU + 2188509231 + name 1_626_KEY_MUP + 2188509232 + name 1_626_KEY_MDOWN + 2188509233 + name 1_626_KEY_MLEFT + 2188509234 + name 1_626_KEY_MRIGHT + 2188509235 + name 1_626_KEY_DSubtitle + 2188509252 + name 1_626_KEY_Off + 2188509262 + name 1_627_KEY_0 + 2188574720 + name 1_627_KEY_1 + 2188574721 + name 1_627_KEY_2 + 2188574722 + name 1_627_KEY_3 + 2188574723 + name 1_627_KEY_4 + 2188574724 + name 1_627_KEY_5 + 2188574725 + name 1_627_KEY_6 + 2188574726 + name 1_627_KEY_7 + 2188574727 + name 1_627_KEY_8 + 2188574728 + name 1_627_KEY_9 + 2188574729 + name 1_627_KEY_POWER + 2188574730 + name 1_627_KEY_CH_UP + 2188574735 + name 1_627_KEY_CH_DOWN + 2188574736 + name 1_627_KEY_MUTE + 2188574737 + name 1_627_KEY_VOL_DOWN + 2188574738 + name 1_627_CH_PREVIOUS + 2188574739 + name 1_627_KEY_VOL_UP + 2188574740 + name 1_627_KEY_MNSELECT + 2188574743 + name 1_627_KEY_EXIT + 2188574744 + name 1_627_KEY_GUIDE + 2188574747 + name 1_627_KEY_MENU + 2188574767 + name 1_627_KEY_MUP + 2188574768 + name 1_627_KEY_MDOWN + 2188574769 + name 1_627_KEY_MLEFT + 2188574770 + name 1_627_KEY_MRIGHT + 2188574771 + name 1_627_KEY_DSubtitle + 2188574788 + name 1_627_KEY_On + 2188574797 + name 1_628_KEY_0 + 2188640256 + name 1_628_KEY_1 + 2188640257 + name 1_628_KEY_2 + 2188640258 + name 1_628_KEY_3 + 2188640259 + name 1_628_KEY_4 + 2188640260 + name 1_628_KEY_5 + 2188640261 + name 1_628_KEY_6 + 2188640262 + name 1_628_KEY_7 + 2188640263 + name 1_628_KEY_8 + 2188640264 + name 1_628_KEY_9 + 2188640265 + name 1_628_KEY_POWER + 2188640266 + name 1_628_TWO_DIGITS + 2188640269 + name 1_628_KEY_CH_UP + 2188640271 + name 1_628_KEY_CH_DOWN + 2188640272 + name 1_628_KEY_MUTE + 2188640273 + name 1_628_KEY_VOL_DOWN + 2188640274 + name 1_628_CH_PREVIOUS + 2188640275 + name 1_628_KEY_VOL_UP + 2188640276 + name 1_628_KEY_MNSELECT + 2188640279 + name 1_628_KEY_GUIDE + 2188640283 + name 1_628_KEY_BLUE + 2188640291 + name 1_628_KEY_GREEN + 2188640292 + name 1_628_KEY_RED + 2188640293 + name 1_628_KEY_YELLOW + 2188640294 + name 1_628_KEY_MENU + 2188640303 + name 1_628_KEY_MUP + 2188640304 + name 1_628_KEY_MDOWN + 2188640305 + name 1_628_KEY_MLEFT + 2188640306 + name 1_628_KEY_MRIGHT + 2188640307 + name 1_628_KEY_On + 2188640333 + name 1_629_KEY_0 + 2188705792 + name 1_629_KEY_1 + 2188705793 + name 1_629_KEY_2 + 2188705794 + name 1_629_KEY_3 + 2188705795 + name 1_629_KEY_4 + 2188705796 + name 1_629_KEY_5 + 2188705797 + name 1_629_KEY_6 + 2188705798 + name 1_629_KEY_7 + 2188705799 + name 1_629_KEY_8 + 2188705800 + name 1_629_KEY_9 + 2188705801 + name 1_629_KEY_POWER + 2188705802 + name 1_629_KEY_CH_UP + 2188705807 + name 1_629_KEY_CH_DOWN + 2188705808 + name 1_629_KEY_MUTE + 2188705809 + name 1_629_KEY_VOL_DOWN + 2188705810 + name 1_629_CH_PREVIOUS + 2188705811 + name 1_629_KEY_VOL_UP + 2188705812 + name 1_629_KEY_MNSELECT + 2188705815 + name 1_629_KEY_EXIT + 2188705816 + name 1_629_KEY_GUIDE + 2188705819 + name 1_629_KEY_BLUE + 2188705827 + name 1_629_KEY_GREEN + 2188705828 + name 1_629_KEY_RED + 2188705829 + name 1_629_KEY_YELLOW + 2188705830 + name 1_629_KEY_MENU + 2188705839 + name 1_629_KEY_MUP + 2188705840 + name 1_629_KEY_MDOWN + 2188705841 + name 1_629_KEY_MLEFT + 2188705842 + name 1_629_KEY_MRIGHT + 2188705843 + name 1_630_KEY_0 + 2188771328 + name 1_630_KEY_1 + 2188771329 + name 1_630_KEY_2 + 2188771330 + name 1_630_KEY_3 + 2188771331 + name 1_630_KEY_4 + 2188771332 + name 1_630_KEY_5 + 2188771333 + name 1_630_KEY_6 + 2188771334 + name 1_630_KEY_7 + 2188771335 + name 1_630_KEY_8 + 2188771336 + name 1_630_KEY_9 + 2188771337 + name 1_630_KEY_POWER + 2188771338 + name 1_630_KEY_CH_UP + 2188771343 + name 1_630_KEY_CH_DOWN + 2188771344 + name 1_630_KEY_MUTE + 2188771345 + name 1_630_KEY_VOL_DOWN + 2188771346 + name 1_630_CH_PREVIOUS + 2188771347 + name 1_630_KEY_VOL_UP + 2188771348 + name 1_630_KEY_MNSELECT + 2188771351 + name 1_630_KEY_EXIT + 2188771352 + name 1_630_KEY_GUIDE + 2188771355 + name 1_630_KEY_MNRETRUN + 2188771360 + name 1_630_KEY_BLUE + 2188771363 + name 1_630_KEY_GREEN + 2188771364 + name 1_630_KEY_RED + 2188771365 + name 1_630_KEY_YELLOW + 2188771366 + name 1_630_KEY_MENU + 2188771375 + name 1_630_KEY_MUP + 2188771376 + name 1_630_KEY_MDOWN + 2188771377 + name 1_630_KEY_MLEFT + 2188771378 + name 1_630_KEY_MRIGHT + 2188771379 + name 1_630_KEY_DSubtitle + 2188771396 + name 1_631_KEY_0 + 2188836864 + name 1_631_KEY_1 + 2188836865 + name 1_631_KEY_2 + 2188836866 + name 1_631_KEY_3 + 2188836867 + name 1_631_KEY_4 + 2188836868 + name 1_631_KEY_5 + 2188836869 + name 1_631_KEY_6 + 2188836870 + name 1_631_KEY_7 + 2188836871 + name 1_631_KEY_8 + 2188836872 + name 1_631_KEY_9 + 2188836873 + name 1_631_KEY_POWER + 2188836874 + name 1_631_KEY_CH_UP + 2188836879 + name 1_631_KEY_CH_DOWN + 2188836880 + name 1_631_KEY_MUTE + 2188836881 + name 1_631_KEY_VOL_DOWN + 2188836882 + name 1_631_CH_PREVIOUS + 2188836883 + name 1_631_KEY_VOL_UP + 2188836884 + name 1_631_KEY_MNSELECT + 2188836887 + name 1_631_KEY_EXIT + 2188836888 + name 1_631_KEY_GUIDE + 2188836891 + name 1_631_KEY_BLUE + 2188836899 + name 1_631_KEY_GREEN + 2188836900 + name 1_631_KEY_RED + 2188836901 + name 1_631_KEY_YELLOW + 2188836902 + name 1_631_KEY_MENU + 2188836911 + name 1_631_KEY_MUP + 2188836912 + name 1_631_KEY_MDOWN + 2188836913 + name 1_631_KEY_MLEFT + 2188836914 + name 1_631_KEY_MRIGHT + 2188836915 + name 1_631_KEY_DSubtitle + 2188836932 + name 1_632_KEY_0 + 2188902400 + name 1_632_KEY_1 + 2188902401 + name 1_632_KEY_2 + 2188902402 + name 1_632_KEY_3 + 2188902403 + name 1_632_KEY_4 + 2188902404 + name 1_632_KEY_5 + 2188902405 + name 1_632_KEY_6 + 2188902406 + name 1_632_KEY_7 + 2188902407 + name 1_632_KEY_8 + 2188902408 + name 1_632_KEY_9 + 2188902409 + name 1_632_KEY_POWER + 2188902410 + name 1_632_KEY_CH_UP + 2188902415 + name 1_632_KEY_CH_DOWN + 2188902416 + name 1_632_KEY_MUTE + 2188902417 + name 1_632_KEY_VOL_DOWN + 2188902418 + name 1_632_CH_PREVIOUS + 2188902419 + name 1_632_KEY_VOL_UP + 2188902420 + name 1_632_KEY_MNSELECT + 2188902423 + name 1_632_KEY_EXIT + 2188902424 + name 1_632_KEY_GUIDE + 2188902427 + name 1_632_KEY_BLUE + 2188902435 + name 1_632_KEY_GREEN + 2188902436 + name 1_632_KEY_RED + 2188902437 + name 1_632_KEY_YELLOW + 2188902438 + name 1_632_KEY_MENU + 2188902447 + name 1_632_KEY_MUP + 2188902448 + name 1_632_KEY_MDOWN + 2188902449 + name 1_632_KEY_MLEFT + 2188902450 + name 1_632_KEY_MRIGHT + 2188902451 + name 1_632_KEY_DSubtitle + 2188902468 + name 1_633_KEY_0 + 2188967936 + name 1_633_KEY_1 + 2188967937 + name 1_633_KEY_2 + 2188967938 + name 1_633_KEY_3 + 2188967939 + name 1_633_KEY_4 + 2188967940 + name 1_633_KEY_5 + 2188967941 + name 1_633_KEY_6 + 2188967942 + name 1_633_KEY_7 + 2188967943 + name 1_633_KEY_8 + 2188967944 + name 1_633_KEY_9 + 2188967945 + name 1_633_KEY_POWER + 2188967946 + name 1_633_KEY_CH_UP + 2188967951 + name 1_633_KEY_CH_DOWN + 2188967952 + name 1_633_KEY_MUTE + 2188967953 + name 1_633_KEY_VOL_DOWN + 2188967954 + name 1_633_CH_PREVIOUS + 2188967955 + name 1_633_KEY_VOL_UP + 2188967956 + name 1_633_KEY_MNSELECT + 2188967959 + name 1_633_KEY_EXIT + 2188967960 + name 1_633_KEY_GUIDE + 2188967963 + name 1_633_KEY_MENU + 2188967983 + name 1_633_KEY_MUP + 2188967984 + name 1_633_KEY_MDOWN + 2188967985 + name 1_633_KEY_MLEFT + 2188967986 + name 1_633_KEY_MRIGHT + 2188967987 + name 1_634_KEY_0 + 2189033472 + name 1_634_KEY_1 + 2189033473 + name 1_634_KEY_2 + 2189033474 + name 1_634_KEY_3 + 2189033475 + name 1_634_KEY_4 + 2189033476 + name 1_634_KEY_5 + 2189033477 + name 1_634_KEY_6 + 2189033478 + name 1_634_KEY_7 + 2189033479 + name 1_634_KEY_8 + 2189033480 + name 1_634_KEY_9 + 2189033481 + name 1_634_KEY_POWER + 2189033482 + name 1_634_KEY_CH_UP + 2189033487 + name 1_634_KEY_CH_DOWN + 2189033488 + name 1_634_KEY_MUTE + 2189033489 + name 1_634_KEY_VOL_DOWN + 2189033490 + name 1_634_KEY_VOL_UP + 2189033492 + name 1_634_KEY_MNSELECT + 2189033495 + name 1_634_KEY_EXIT + 2189033496 + name 1_634_KEY_GUIDE + 2189033499 + name 1_634_KEY_MENU + 2189033519 + name 1_634_KEY_MUP + 2189033520 + name 1_634_KEY_MDOWN + 2189033521 + name 1_634_KEY_MLEFT + 2189033522 + name 1_634_KEY_MRIGHT + 2189033523 + name 1_634_KEY_DSubtitle + 2189033540 + name 1_635_KEY_0 + 2189099008 + name 1_635_KEY_1 + 2189099009 + name 1_635_KEY_2 + 2189099010 + name 1_635_KEY_3 + 2189099011 + name 1_635_KEY_4 + 2189099012 + name 1_635_KEY_5 + 2189099013 + name 1_635_KEY_6 + 2189099014 + name 1_635_KEY_7 + 2189099015 + name 1_635_KEY_8 + 2189099016 + name 1_635_KEY_9 + 2189099017 + name 1_635_KEY_POWER + 2189099018 + name 1_635_KEY_CH_UP + 2189099023 + name 1_635_KEY_CH_DOWN + 2189099024 + name 1_635_KEY_MUTE + 2189099025 + name 1_635_KEY_VOL_DOWN + 2189099026 + name 1_635_CH_PREVIOUS + 2189099027 + name 1_635_KEY_VOL_UP + 2189099028 + name 1_635_KEY_MNSELECT + 2189099031 + name 1_635_KEY_EXIT + 2189099032 + name 1_635_KEY_GUIDE + 2189099035 + name 1_635_KEY_MENU + 2189099055 + name 1_635_KEY_MUP + 2189099056 + name 1_635_KEY_MDOWN + 2189099057 + name 1_635_KEY_MLEFT + 2189099058 + name 1_635_KEY_MRIGHT + 2189099059 + name 1_635_KEY_DSubtitle + 2189099076 + name 1_636_KEY_0 + 2189164544 + name 1_636_KEY_1 + 2189164545 + name 1_636_KEY_2 + 2189164546 + name 1_636_KEY_3 + 2189164547 + name 1_636_KEY_4 + 2189164548 + name 1_636_KEY_5 + 2189164549 + name 1_636_KEY_6 + 2189164550 + name 1_636_KEY_7 + 2189164551 + name 1_636_KEY_8 + 2189164552 + name 1_636_KEY_9 + 2189164553 + name 1_636_KEY_POWER + 2189164554 + name 1_636_KEY_CH_UP + 2189164559 + name 1_636_KEY_CH_DOWN + 2189164560 + name 1_636_KEY_MUTE + 2189164561 + name 1_636_KEY_VOL_DOWN + 2189164562 + name 1_636_KEY_VOL_UP + 2189164564 + name 1_636_KEY_MNSELECT + 2189164567 + name 1_636_KEY_MENU + 2189164591 + name 1_636_KEY_MUP + 2189164592 + name 1_636_KEY_MDOWN + 2189164593 + name 1_636_KEY_MLEFT + 2189164594 + name 1_636_KEY_MRIGHT + 2189164595 + name 1_637_KEY_0 + 2189230080 + name 1_637_KEY_1 + 2189230081 + name 1_637_KEY_2 + 2189230082 + name 1_637_KEY_3 + 2189230083 + name 1_637_KEY_4 + 2189230084 + name 1_637_KEY_5 + 2189230085 + name 1_637_KEY_6 + 2189230086 + name 1_637_KEY_7 + 2189230087 + name 1_637_KEY_8 + 2189230088 + name 1_637_KEY_9 + 2189230089 + name 1_637_KEY_POWER + 2189230090 + name 1_637_TWO_DIGITS + 2189230093 + name 1_637_KEY_CH_UP + 2189230095 + name 1_637_KEY_CH_DOWN + 2189230096 + name 1_637_KEY_MUTE + 2189230097 + name 1_637_KEY_VOL_DOWN + 2189230098 + name 1_637_CH_PREVIOUS + 2189230099 + name 1_637_KEY_VOL_UP + 2189230100 + name 1_637_KEY_MNSELECT + 2189230103 + name 1_637_KEY_EXIT + 2189230104 + name 1_637_KEY_GUIDE + 2189230107 + name 1_637_KEY_AV + 2189230121 + name 1_637_KEY_MENU + 2189230127 + name 1_637_KEY_MUP + 2189230128 + name 1_637_KEY_MDOWN + 2189230129 + name 1_637_KEY_MLEFT + 2189230130 + name 1_637_KEY_MRIGHT + 2189230131 + name 1_637_KEY_TTOnOff + 2189230153 + name 1_638_KEY_0 + 2189295616 + name 1_638_KEY_1 + 2189295617 + name 1_638_KEY_2 + 2189295618 + name 1_638_KEY_3 + 2189295619 + name 1_638_KEY_4 + 2189295620 + name 1_638_KEY_5 + 2189295621 + name 1_638_KEY_6 + 2189295622 + name 1_638_KEY_7 + 2189295623 + name 1_638_KEY_8 + 2189295624 + name 1_638_KEY_9 + 2189295625 + name 1_638_KEY_POWER + 2189295626 + name 1_638_KEY_CH_UP + 2189295631 + name 1_638_KEY_CH_DOWN + 2189295632 + name 1_638_KEY_MUTE + 2189295633 + name 1_638_KEY_VOL_DOWN + 2189295634 + name 1_638_KEY_VOL_UP + 2189295636 + name 1_638_KEY_MNSELECT + 2189295639 + name 1_638_KEY_EXIT + 2189295640 + name 1_638_KEY_GUIDE + 2189295643 + name 1_638_KEY_MNRETRUN + 2189295648 + name 1_638_KEY_MENU + 2189295663 + name 1_638_KEY_MUP + 2189295664 + name 1_638_KEY_MDOWN + 2189295665 + name 1_638_KEY_MLEFT + 2189295666 + name 1_638_KEY_MRIGHT + 2189295667 + name 1_638_KEY_DSubtitle + 2189295684 + name 1_639_KEY_0 + 2189361152 + name 1_639_KEY_1 + 2189361153 + name 1_639_KEY_2 + 2189361154 + name 1_639_KEY_3 + 2189361155 + name 1_639_KEY_4 + 2189361156 + name 1_639_KEY_5 + 2189361157 + name 1_639_KEY_6 + 2189361158 + name 1_639_KEY_7 + 2189361159 + name 1_639_KEY_8 + 2189361160 + name 1_639_KEY_9 + 2189361161 + name 1_639_KEY_POWER + 2189361162 + name 1_639_KEY_CH_UP + 2189361167 + name 1_639_KEY_CH_DOWN + 2189361168 + name 1_639_KEY_MNSELECT + 2189361175 + name 1_639_KEY_MENU + 2189361199 + name 1_639_KEY_MUP + 2189361200 + name 1_639_KEY_MDOWN + 2189361201 + name 1_639_KEY_MLEFT + 2189361202 + name 1_639_KEY_MRIGHT + 2189361203 + name 1_640_KEY_0 + 2189426688 + name 1_640_KEY_1 + 2189426689 + name 1_640_KEY_2 + 2189426690 + name 1_640_KEY_3 + 2189426691 + name 1_640_KEY_4 + 2189426692 + name 1_640_KEY_5 + 2189426693 + name 1_640_KEY_6 + 2189426694 + name 1_640_KEY_7 + 2189426695 + name 1_640_KEY_8 + 2189426696 + name 1_640_KEY_9 + 2189426697 + name 1_640_KEY_POWER + 2189426698 + name 1_640_KEY_CH_UP + 2189426703 + name 1_640_KEY_CH_DOWN + 2189426704 + name 1_640_CH_PREVIOUS + 2189426707 + name 1_640_KEY_MNSELECT + 2189426711 + name 1_640_KEY_AV + 2189426729 + name 1_640_KEY_MENU + 2189426735 + name 1_640_KEY_MUP + 2189426736 + name 1_640_KEY_MDOWN + 2189426737 + name 1_640_KEY_MLEFT + 2189426738 + name 1_640_KEY_MRIGHT + 2189426739 + name 1_641_KEY_0 + 2189492224 + name 1_641_KEY_1 + 2189492225 + name 1_641_KEY_2 + 2189492226 + name 1_641_KEY_3 + 2189492227 + name 1_641_KEY_4 + 2189492228 + name 1_641_KEY_5 + 2189492229 + name 1_641_KEY_6 + 2189492230 + name 1_641_KEY_7 + 2189492231 + name 1_641_KEY_8 + 2189492232 + name 1_641_KEY_9 + 2189492233 + name 1_641_KEY_POWER + 2189492234 + name 1_641_TWO_DIGITS + 2189492237 + name 1_641_KEY_CH_UP + 2189492239 + name 1_641_KEY_CH_DOWN + 2189492240 + name 1_641_CH_PREVIOUS + 2189492243 + name 1_641_KEY_MNSELECT + 2189492247 + name 1_641_KEY_EXIT + 2189492248 + name 1_641_KEY_GUIDE + 2189492251 + name 1_641_KEY_BLUE + 2189492259 + name 1_641_KEY_GREEN + 2189492260 + name 1_641_KEY_RED + 2189492261 + name 1_641_KEY_YELLOW + 2189492262 + name 1_641_KEY_MENU + 2189492271 + name 1_641_KEY_MUP + 2189492272 + name 1_641_KEY_MDOWN + 2189492273 + name 1_641_KEY_MLEFT + 2189492274 + name 1_641_KEY_MRIGHT + 2189492275 + name 1_641_KEY_DGuide + 2189492291 + name 1_642_KEY_0 + 2189557760 + name 1_642_KEY_1 + 2189557761 + name 1_642_KEY_2 + 2189557762 + name 1_642_KEY_3 + 2189557763 + name 1_642_KEY_4 + 2189557764 + name 1_642_KEY_5 + 2189557765 + name 1_642_KEY_6 + 2189557766 + name 1_642_KEY_7 + 2189557767 + name 1_642_KEY_8 + 2189557768 + name 1_642_KEY_9 + 2189557769 + name 1_642_KEY_POWER + 2189557770 + name 1_642_KEY_CH_UP + 2189557775 + name 1_642_KEY_CH_DOWN + 2189557776 + name 1_642_KEY_MNSELECT + 2189557783 + name 1_642_KEY_EXIT + 2189557784 + name 1_642_KEY_GUIDE + 2189557787 + name 1_642_KEY_BLUE + 2189557795 + name 1_642_KEY_GREEN + 2189557796 + name 1_642_KEY_RED + 2189557797 + name 1_642_KEY_YELLOW + 2189557798 + name 1_642_KEY_AV + 2189557801 + name 1_642_KEY_MENU + 2189557807 + name 1_642_KEY_MUP + 2189557808 + name 1_642_KEY_MDOWN + 2189557809 + name 1_642_KEY_MLEFT + 2189557810 + name 1_642_KEY_MRIGHT + 2189557811 + name 1_642_KEY_DGuide + 2189557827 + name 1_643_KEY_0 + 2189623296 + name 1_643_KEY_1 + 2189623297 + name 1_643_KEY_2 + 2189623298 + name 1_643_KEY_3 + 2189623299 + name 1_643_KEY_4 + 2189623300 + name 1_643_KEY_5 + 2189623301 + name 1_643_KEY_6 + 2189623302 + name 1_643_KEY_7 + 2189623303 + name 1_643_KEY_8 + 2189623304 + name 1_643_KEY_9 + 2189623305 + name 1_643_KEY_POWER + 2189623306 + name 1_643_KEY_CH_UP + 2189623311 + name 1_643_KEY_CH_DOWN + 2189623312 + name 1_643_CH_PREVIOUS + 2189623315 + name 1_643_KEY_MENU + 2189623343 + name 1_643_KEY_MUP + 2189623344 + name 1_643_KEY_MDOWN + 2189623345 + name 1_643_KEY_MLEFT + 2189623346 + name 1_643_KEY_MRIGHT + 2189623347 + name 1_644_KEY_0 + 2189688832 + name 1_644_KEY_1 + 2189688833 + name 1_644_KEY_2 + 2189688834 + name 1_644_KEY_3 + 2189688835 + name 1_644_KEY_4 + 2189688836 + name 1_644_KEY_5 + 2189688837 + name 1_644_KEY_6 + 2189688838 + name 1_644_KEY_7 + 2189688839 + name 1_644_KEY_8 + 2189688840 + name 1_644_KEY_9 + 2189688841 + name 1_644_KEY_POWER + 2189688842 + name 1_644_KEY_CH_UP + 2189688847 + name 1_644_KEY_CH_DOWN + 2189688848 + name 1_644_KEY_EXIT + 2189688856 + name 1_644_KEY_GUIDE + 2189688859 + name 1_644_KEY_MENU + 2189688879 + name 1_644_KEY_MUP + 2189688880 + name 1_644_KEY_MDOWN + 2189688881 + name 1_644_KEY_MLEFT + 2189688882 + name 1_644_KEY_MRIGHT + 2189688883 + name 1_644_KEY_DGuide + 2189688899 + name 1_645_KEY_0 + 2189754368 + name 1_645_KEY_1 + 2189754369 + name 1_645_KEY_2 + 2189754370 + name 1_645_KEY_3 + 2189754371 + name 1_645_KEY_4 + 2189754372 + name 1_645_KEY_5 + 2189754373 + name 1_645_KEY_6 + 2189754374 + name 1_645_KEY_7 + 2189754375 + name 1_645_KEY_8 + 2189754376 + name 1_645_KEY_9 + 2189754377 + name 1_645_KEY_POWER + 2189754378 + name 1_645_KEY_CH_UP + 2189754383 + name 1_645_KEY_CH_DOWN + 2189754384 + name 1_645_CH_PREVIOUS + 2189754387 + name 1_645_KEY_MNSELECT + 2189754391 + name 1_645_KEY_GUIDE + 2189754395 + name 1_645_KEY_BLUE + 2189754403 + name 1_645_KEY_GREEN + 2189754404 + name 1_645_KEY_RED + 2189754405 + name 1_645_KEY_YELLOW + 2189754406 + name 1_645_KEY_MENU + 2189754415 + name 1_645_KEY_MUP + 2189754416 + name 1_645_KEY_MDOWN + 2189754417 + name 1_645_KEY_MLEFT + 2189754418 + name 1_645_KEY_MRIGHT + 2189754419 + name 1_645_KEY_On + 2189754445 + name 1_646_KEY_0 + 2189819904 + name 1_646_KEY_1 + 2189819905 + name 1_646_KEY_2 + 2189819906 + name 1_646_KEY_3 + 2189819907 + name 1_646_KEY_4 + 2189819908 + name 1_646_KEY_5 + 2189819909 + name 1_646_KEY_6 + 2189819910 + name 1_646_KEY_7 + 2189819911 + name 1_646_KEY_8 + 2189819912 + name 1_646_KEY_9 + 2189819913 + name 1_646_KEY_POWER + 2189819914 + name 1_646_TWO_DIGITS + 2189819917 + name 1_646_KEY_CH_UP + 2189819919 + name 1_646_KEY_CH_DOWN + 2189819920 + name 1_646_KEY_BLUE + 2189819939 + name 1_646_KEY_GREEN + 2189819940 + name 1_646_KEY_RED + 2189819941 + name 1_646_KEY_YELLOW + 2189819942 + name 1_646_KEY_MENU + 2189819951 + name 1_646_KEY_On + 2189819981 + name 1_647_KEY_0 + 2189885440 + name 1_647_KEY_1 + 2189885441 + name 1_647_KEY_2 + 2189885442 + name 1_647_KEY_3 + 2189885443 + name 1_647_KEY_4 + 2189885444 + name 1_647_KEY_5 + 2189885445 + name 1_647_KEY_6 + 2189885446 + name 1_647_KEY_7 + 2189885447 + name 1_647_KEY_8 + 2189885448 + name 1_647_KEY_9 + 2189885449 + name 1_647_KEY_POWER + 2189885450 + name 1_647_KEY_CH_UP + 2189885455 + name 1_647_KEY_CH_DOWN + 2189885456 + name 1_648_KEY_0 + 2189950976 + name 1_648_KEY_1 + 2189950977 + name 1_648_KEY_2 + 2189950978 + name 1_648_KEY_3 + 2189950979 + name 1_648_KEY_4 + 2189950980 + name 1_648_KEY_5 + 2189950981 + name 1_648_KEY_6 + 2189950982 + name 1_648_KEY_7 + 2189950983 + name 1_648_KEY_8 + 2189950984 + name 1_648_KEY_9 + 2189950985 + name 1_648_KEY_POWER + 2189950986 + name 1_648_KEY_CH_UP + 2189950991 + name 1_648_KEY_CH_DOWN + 2189950992 + name 1_648_KEY_MENU + 2189951023 + name 1_648_KEY_MUP + 2189951024 + name 1_648_KEY_MDOWN + 2189951025 + name 1_649_KEY_0 + 2190016512 + name 1_649_KEY_1 + 2190016513 + name 1_649_KEY_2 + 2190016514 + name 1_649_KEY_3 + 2190016515 + name 1_649_KEY_4 + 2190016516 + name 1_649_KEY_5 + 2190016517 + name 1_649_KEY_6 + 2190016518 + name 1_649_KEY_7 + 2190016519 + name 1_649_KEY_8 + 2190016520 + name 1_649_KEY_9 + 2190016521 + name 1_649_KEY_POWER + 2190016522 + name 1_649_TWO_DIGITS + 2190016525 + name 1_649_KEY_CH_UP + 2190016527 + name 1_649_KEY_CH_DOWN + 2190016528 + name 1_650_KEY_0 + 2190082048 + name 1_650_KEY_1 + 2190082049 + name 1_650_KEY_2 + 2190082050 + name 1_650_KEY_3 + 2190082051 + name 1_650_KEY_4 + 2190082052 + name 1_650_KEY_5 + 2190082053 + name 1_650_KEY_6 + 2190082054 + name 1_650_KEY_7 + 2190082055 + name 1_650_KEY_8 + 2190082056 + name 1_650_KEY_9 + 2190082057 + name 1_650_KEY_POWER + 2190082058 + name 1_650_TWO_DIGITS + 2190082061 + name 1_650_KEY_CH_UP + 2190082063 + name 1_650_KEY_CH_DOWN + 2190082064 + name 1_650_KEY_MNSELECT + 2190082071 + name 1_650_KEY_BLUE + 2190082083 + name 1_650_KEY_GREEN + 2190082084 + name 1_650_KEY_RED + 2190082085 + name 1_650_KEY_YELLOW + 2190082086 + name 1_650_KEY_MENU + 2190082095 + name 1_650_KEY_MUP + 2190082096 + name 1_650_KEY_MDOWN + 2190082097 + name 1_650_KEY_On + 2190082125 + name 1_651_KEY_0 + 2190147584 + name 1_651_KEY_1 + 2190147585 + name 1_651_KEY_2 + 2190147586 + name 1_651_KEY_3 + 2190147587 + name 1_651_KEY_4 + 2190147588 + name 1_651_KEY_5 + 2190147589 + name 1_651_KEY_6 + 2190147590 + name 1_651_KEY_7 + 2190147591 + name 1_651_KEY_8 + 2190147592 + name 1_651_KEY_9 + 2190147593 + name 1_651_KEY_POWER + 2190147594 + name 1_651_KEY_CH_UP + 2190147599 + name 1_651_KEY_CH_DOWN + 2190147600 + name 1_652_KEY_0 + 2190213120 + name 1_652_KEY_1 + 2190213121 + name 1_652_KEY_2 + 2190213122 + name 1_652_KEY_3 + 2190213123 + name 1_652_KEY_4 + 2190213124 + name 1_652_KEY_5 + 2190213125 + name 1_652_KEY_6 + 2190213126 + name 1_652_KEY_7 + 2190213127 + name 1_652_KEY_8 + 2190213128 + name 1_652_KEY_9 + 2190213129 + name 1_652_KEY_POWER + 2190213130 + name 1_652_KEY_CH_UP + 2190213135 + name 1_652_KEY_CH_DOWN + 2190213136 + name 1_653_KEY_0 + 2190278656 + name 1_653_KEY_1 + 2190278657 + name 1_653_KEY_2 + 2190278658 + name 1_653_KEY_3 + 2190278659 + name 1_653_KEY_4 + 2190278660 + name 1_653_KEY_5 + 2190278661 + name 1_653_KEY_6 + 2190278662 + name 1_653_KEY_7 + 2190278663 + name 1_653_KEY_8 + 2190278664 + name 1_653_KEY_9 + 2190278665 + name 1_653_KEY_POWER + 2190278666 + name 1_653_KEY_CH_UP + 2190278671 + name 1_653_KEY_CH_DOWN + 2190278672 + name 1_654_KEY_0 + 2190344192 + name 1_654_KEY_1 + 2190344193 + name 1_654_KEY_2 + 2190344194 + name 1_654_KEY_3 + 2190344195 + name 1_654_KEY_4 + 2190344196 + name 1_654_KEY_5 + 2190344197 + name 1_654_KEY_6 + 2190344198 + name 1_654_KEY_7 + 2190344199 + name 1_654_KEY_8 + 2190344200 + name 1_654_KEY_9 + 2190344201 + name 1_654_KEY_POWER + 2190344202 + name 1_654_TWO_DIGITS + 2190344205 + name 1_654_KEY_CH_UP + 2190344207 + name 1_654_KEY_CH_DOWN + 2190344208 + name 1_654_CH_PREVIOUS + 2190344211 + name 1_654_KEY_MNSELECT + 2190344215 + name 1_654_KEY_MUP + 2190344240 + name 1_654_KEY_MDOWN + 2190344241 + name 1_655_KEY_0 + 2190409728 + name 1_655_KEY_1 + 2190409729 + name 1_655_KEY_2 + 2190409730 + name 1_655_KEY_3 + 2190409731 + name 1_655_KEY_4 + 2190409732 + name 1_655_KEY_5 + 2190409733 + name 1_655_KEY_6 + 2190409734 + name 1_655_KEY_7 + 2190409735 + name 1_655_KEY_8 + 2190409736 + name 1_655_KEY_9 + 2190409737 + name 1_655_KEY_POWER + 2190409738 + name 1_655_KEY_CH_UP + 2190409743 + name 1_655_KEY_CH_DOWN + 2190409744 + name 1_655_KEY_MNSELECT + 2190409751 + name 1_655_KEY_EXIT + 2190409752 + name 1_655_KEY_GUIDE + 2190409755 + name 1_655_KEY_MNRETRUN + 2190409760 + name 1_655_KEY_BLUE + 2190409763 + name 1_655_KEY_GREEN + 2190409764 + name 1_655_KEY_RED + 2190409765 + name 1_655_KEY_YELLOW + 2190409766 + name 1_655_KEY_MENU + 2190409775 + name 1_655_KEY_MUP + 2190409776 + name 1_655_KEY_MDOWN + 2190409777 + name 1_655_KEY_MLEFT + 2190409778 + name 1_655_KEY_MRIGHT + 2190409779 + name 1_655_KEY_DSubtitle + 2190409796 + name 1_655_KEY_TTOnOff + 2190409801 + name 1_656_KEY_0 + 2190475264 + name 1_656_KEY_1 + 2190475265 + name 1_656_KEY_2 + 2190475266 + name 1_656_KEY_3 + 2190475267 + name 1_656_KEY_4 + 2190475268 + name 1_656_KEY_5 + 2190475269 + name 1_656_KEY_6 + 2190475270 + name 1_656_KEY_7 + 2190475271 + name 1_656_KEY_8 + 2190475272 + name 1_656_KEY_9 + 2190475273 + name 1_656_KEY_POWER + 2190475274 + name 1_656_KEY_CH_UP + 2190475279 + name 1_656_KEY_CH_DOWN + 2190475280 + name 1_656_KEY_MUTE + 2190475281 + name 1_656_KEY_VOL_DOWN + 2190475282 + name 1_656_KEY_VOL_UP + 2190475284 + name 1_656_KEY_MNSELECT + 2190475287 + name 1_656_KEY_EXIT + 2190475288 + name 1_656_KEY_GUIDE + 2190475291 + name 1_656_KEY_MNRETRUN + 2190475296 + name 1_656_KEY_MENU + 2190475311 + name 1_656_KEY_MUP + 2190475312 + name 1_656_KEY_MDOWN + 2190475313 + name 1_656_KEY_MLEFT + 2190475314 + name 1_656_KEY_MRIGHT + 2190475315 + name 1_656_KEY_DSubtitle + 2190475332 + name 1_657_KEY_0 + 2190540800 + name 1_657_KEY_1 + 2190540801 + name 1_657_KEY_2 + 2190540802 + name 1_657_KEY_3 + 2190540803 + name 1_657_KEY_4 + 2190540804 + name 1_657_KEY_5 + 2190540805 + name 1_657_KEY_6 + 2190540806 + name 1_657_KEY_7 + 2190540807 + name 1_657_KEY_8 + 2190540808 + name 1_657_KEY_9 + 2190540809 + name 1_657_KEY_POWER + 2190540810 + name 1_657_KEY_CH_UP + 2190540815 + name 1_657_KEY_CH_DOWN + 2190540816 + name 1_657_KEY_MNSELECT + 2190540823 + name 1_657_KEY_EXIT + 2190540824 + name 1_657_KEY_GUIDE + 2190540827 + name 1_657_KEY_MNRETRUN + 2190540832 + name 1_657_KEY_BLUE + 2190540835 + name 1_657_KEY_GREEN + 2190540836 + name 1_657_KEY_RED + 2190540837 + name 1_657_KEY_YELLOW + 2190540838 + name 1_657_KEY_MENU + 2190540847 + name 1_657_KEY_MUP + 2190540848 + name 1_657_KEY_MDOWN + 2190540849 + name 1_657_KEY_MLEFT + 2190540850 + name 1_657_KEY_MRIGHT + 2190540851 + name 1_657_KEY_DSubtitle + 2190540868 + name 1_657_KEY_TTOnOff + 2190540873 + name 1_658_KEY_0 + 2190606336 + name 1_658_KEY_1 + 2190606337 + name 1_658_KEY_2 + 2190606338 + name 1_658_KEY_3 + 2190606339 + name 1_658_KEY_4 + 2190606340 + name 1_658_KEY_5 + 2190606341 + name 1_658_KEY_6 + 2190606342 + name 1_658_KEY_7 + 2190606343 + name 1_658_KEY_8 + 2190606344 + name 1_658_KEY_9 + 2190606345 + name 1_658_KEY_POWER + 2190606346 + name 1_658_KEY_CH_UP + 2190606351 + name 1_658_KEY_CH_DOWN + 2190606352 + name 1_658_KEY_MUTE + 2190606353 + name 1_658_KEY_VOL_DOWN + 2190606354 + name 1_658_KEY_VOL_UP + 2190606356 + name 1_658_KEY_EXIT + 2190606360 + name 1_658_KEY_GUIDE + 2190606363 + name 1_658_KEY_BLUE + 2190606371 + name 1_658_KEY_GREEN + 2190606372 + name 1_658_KEY_RED + 2190606373 + name 1_658_KEY_YELLOW + 2190606374 + name 1_658_KEY_MENU + 2190606383 + name 1_658_KEY_MUP + 2190606384 + name 1_658_KEY_MDOWN + 2190606385 + name 1_658_KEY_MLEFT + 2190606386 + name 1_658_KEY_MRIGHT + 2190606387 + name 1_658_KEY_DSubtitle + 2190606404 + name 1_658_KEY_TTOnOff + 2190606409 + name 1_659_KEY_0 + 2190671872 + name 1_659_KEY_1 + 2190671873 + name 1_659_KEY_2 + 2190671874 + name 1_659_KEY_3 + 2190671875 + name 1_659_KEY_4 + 2190671876 + name 1_659_KEY_5 + 2190671877 + name 1_659_KEY_6 + 2190671878 + name 1_659_KEY_7 + 2190671879 + name 1_659_KEY_8 + 2190671880 + name 1_659_KEY_9 + 2190671881 + name 1_659_KEY_POWER + 2190671882 + name 1_659_KEY_CH_UP + 2190671887 + name 1_659_KEY_CH_DOWN + 2190671888 + name 1_659_KEY_MUTE + 2190671889 + name 1_659_KEY_VOL_DOWN + 2190671890 + name 1_659_KEY_VOL_UP + 2190671892 + name 1_659_KEY_MNSELECT + 2190671895 + name 1_659_KEY_EXIT + 2190671896 + name 1_659_KEY_GUIDE + 2190671899 + name 1_659_KEY_MNRETRUN + 2190671904 + name 1_659_KEY_MENU + 2190671919 + name 1_659_KEY_MUP + 2190671920 + name 1_659_KEY_MDOWN + 2190671921 + name 1_659_KEY_MLEFT + 2190671922 + name 1_659_KEY_MRIGHT + 2190671923 + name 1_659_KEY_DSubtitle + 2190671940 + name 1_660_KEY_0 + 2190737408 + name 1_660_KEY_1 + 2190737409 + name 1_660_KEY_2 + 2190737410 + name 1_660_KEY_3 + 2190737411 + name 1_660_KEY_4 + 2190737412 + name 1_660_KEY_5 + 2190737413 + name 1_660_KEY_6 + 2190737414 + name 1_660_KEY_7 + 2190737415 + name 1_660_KEY_8 + 2190737416 + name 1_660_KEY_9 + 2190737417 + name 1_660_KEY_POWER + 2190737418 + name 1_660_KEY_CH_UP + 2190737423 + name 1_660_KEY_CH_DOWN + 2190737424 + name 1_660_KEY_MUTE + 2190737425 + name 1_660_KEY_VOL_DOWN + 2190737426 + name 1_660_KEY_VOL_UP + 2190737428 + name 1_660_KEY_EXIT + 2190737432 + name 1_660_KEY_GUIDE + 2190737435 + name 1_660_KEY_BLUE + 2190737443 + name 1_660_KEY_GREEN + 2190737444 + name 1_660_KEY_RED + 2190737445 + name 1_660_KEY_YELLOW + 2190737446 + name 1_660_KEY_MENU + 2190737455 + name 1_660_KEY_MUP + 2190737456 + name 1_660_KEY_MDOWN + 2190737457 + name 1_660_KEY_MLEFT + 2190737458 + name 1_660_KEY_MRIGHT + 2190737459 + name 1_660_KEY_TTOnOff + 2190737481 + name 1_661_KEY_0 + 2190802944 + name 1_661_KEY_1 + 2190802945 + name 1_661_KEY_2 + 2190802946 + name 1_661_KEY_3 + 2190802947 + name 1_661_KEY_4 + 2190802948 + name 1_661_KEY_5 + 2190802949 + name 1_661_KEY_6 + 2190802950 + name 1_661_KEY_7 + 2190802951 + name 1_661_KEY_8 + 2190802952 + name 1_661_KEY_9 + 2190802953 + name 1_661_KEY_POWER + 2190802954 + name 1_661_TWO_DIGITS + 2190802957 + name 1_661_KEY_CH_UP + 2190802959 + name 1_661_KEY_CH_DOWN + 2190802960 + name 1_661_KEY_DISPLAY + 2190802965 + name 1_661_KEY_MNSELECT + 2190802967 + name 1_661_KEY_EXIT + 2190802968 + name 1_661_KEY_BLUE + 2190802979 + name 1_661_KEY_GREEN + 2190802980 + name 1_661_KEY_RED + 2190802981 + name 1_661_KEY_YELLOW + 2190802982 + name 1_661_KEY_MENU + 2190802991 + name 1_661_KEY_MUP + 2190802992 + name 1_661_KEY_MDOWN + 2190802993 + name 1_661_KEY_MLEFT + 2190802994 + name 1_661_KEY_MRIGHT + 2190802995 + name 1_661_KEY_On + 2190803021 + name 1_662_KEY_0 + 2190868480 + name 1_662_KEY_1 + 2190868481 + name 1_662_KEY_2 + 2190868482 + name 1_662_KEY_3 + 2190868483 + name 1_662_KEY_4 + 2190868484 + name 1_662_KEY_5 + 2190868485 + name 1_662_KEY_6 + 2190868486 + name 1_662_KEY_7 + 2190868487 + name 1_662_KEY_8 + 2190868488 + name 1_662_KEY_9 + 2190868489 + name 1_662_KEY_POWER + 2190868490 + name 1_662_KEY_CH_UP + 2190868495 + name 1_662_KEY_CH_DOWN + 2190868496 + name 1_662_KEY_MUTE + 2190868497 + name 1_662_KEY_VOL_DOWN + 2190868498 + name 1_662_KEY_VOL_UP + 2190868500 + name 1_662_KEY_MENU + 2190868527 + name 1_662_KEY_MUP + 2190868528 + name 1_662_KEY_MDOWN + 2190868529 + name 1_662_KEY_MLEFT + 2190868530 + name 1_662_KEY_MRIGHT + 2190868531 + name 1_662_KEY_Sleep + 2190868543 + name 1_663_KEY_0 + 2190934016 + name 1_663_KEY_1 + 2190934017 + name 1_663_KEY_2 + 2190934018 + name 1_663_KEY_3 + 2190934019 + name 1_663_KEY_4 + 2190934020 + name 1_663_KEY_5 + 2190934021 + name 1_663_KEY_6 + 2190934022 + name 1_663_KEY_7 + 2190934023 + name 1_663_KEY_8 + 2190934024 + name 1_663_KEY_9 + 2190934025 + name 1_663_KEY_POWER + 2190934026 + name 1_663_KEY_CH_UP + 2190934031 + name 1_663_KEY_CH_DOWN + 2190934032 + name 1_663_KEY_GUIDE + 2190934043 + name 1_663_KEY_MNRETRUN + 2190934048 + name 1_663_KEY_BLUE + 2190934051 + name 1_663_KEY_GREEN + 2190934052 + name 1_663_KEY_RED + 2190934053 + name 1_663_KEY_YELLOW + 2190934054 + name 1_663_KEY_MENU + 2190934063 + name 1_663_KEY_MUP + 2190934064 + name 1_663_KEY_MDOWN + 2190934065 + name 1_663_KEY_MLEFT + 2190934066 + name 1_663_KEY_MRIGHT + 2190934067 + name 1_663_KEY_On + 2190934093 + name 1_663_KEY_Off + 2190934094 + name 1_664_KEY_0 + 2190999552 + name 1_664_KEY_1 + 2190999553 + name 1_664_KEY_2 + 2190999554 + name 1_664_KEY_3 + 2190999555 + name 1_664_KEY_4 + 2190999556 + name 1_664_KEY_5 + 2190999557 + name 1_664_KEY_6 + 2190999558 + name 1_664_KEY_7 + 2190999559 + name 1_664_KEY_8 + 2190999560 + name 1_664_KEY_9 + 2190999561 + name 1_664_KEY_POWER + 2190999562 + name 1_664_KEY_CH_UP + 2190999567 + name 1_664_KEY_CH_DOWN + 2190999568 + name 1_664_KEY_MUTE + 2190999569 + name 1_664_KEY_VOL_DOWN + 2190999570 + name 1_664_CH_PREVIOUS + 2190999571 + name 1_664_KEY_VOL_UP + 2190999572 + name 1_664_KEY_MNSELECT + 2190999575 + name 1_664_KEY_EXIT + 2190999576 + name 1_664_KEY_GUIDE + 2190999579 + name 1_664_KEY_MENU + 2190999599 + name 1_664_KEY_MUP + 2190999600 + name 1_664_KEY_MDOWN + 2190999601 + name 1_664_KEY_MLEFT + 2190999602 + name 1_664_KEY_MRIGHT + 2190999603 + name 1_665_KEY_0 + 2191065088 + name 1_665_KEY_1 + 2191065089 + name 1_665_KEY_2 + 2191065090 + name 1_665_KEY_3 + 2191065091 + name 1_665_KEY_4 + 2191065092 + name 1_665_KEY_5 + 2191065093 + name 1_665_KEY_6 + 2191065094 + name 1_665_KEY_7 + 2191065095 + name 1_665_KEY_8 + 2191065096 + name 1_665_KEY_9 + 2191065097 + name 1_665_KEY_POWER + 2191065098 + name 1_665_KEY_CH_UP + 2191065103 + name 1_665_KEY_CH_DOWN + 2191065104 + name 1_665_KEY_MUTE + 2191065105 + name 1_665_KEY_VOL_DOWN + 2191065106 + name 1_665_CH_PREVIOUS + 2191065107 + name 1_665_KEY_VOL_UP + 2191065108 + name 1_665_KEY_MNSELECT + 2191065111 + name 1_665_KEY_EXIT + 2191065112 + name 1_665_KEY_GUIDE + 2191065115 + name 1_665_KEY_MENU + 2191065135 + name 1_665_KEY_MUP + 2191065136 + name 1_665_KEY_MDOWN + 2191065137 + name 1_665_KEY_MLEFT + 2191065138 + name 1_665_KEY_MRIGHT + 2191065139 + name 1_665_KEY_DSubtitle + 2191065156 + name 1_665_KEY_On + 2191065165 + name 1_665_KEY_Off + 2191065166 + name 1_666_KEY_0 + 2191130624 + name 1_666_KEY_1 + 2191130625 + name 1_666_KEY_2 + 2191130626 + name 1_666_KEY_3 + 2191130627 + name 1_666_KEY_4 + 2191130628 + name 1_666_KEY_5 + 2191130629 + name 1_666_KEY_6 + 2191130630 + name 1_666_KEY_7 + 2191130631 + name 1_666_KEY_8 + 2191130632 + name 1_666_KEY_9 + 2191130633 + name 1_666_KEY_POWER + 2191130634 + name 1_666_KEY_CH_UP + 2191130639 + name 1_666_KEY_CH_DOWN + 2191130640 + name 1_666_KEY_MUTE + 2191130641 + name 1_666_KEY_VOL_DOWN + 2191130642 + name 1_666_CH_PREVIOUS + 2191130643 + name 1_666_KEY_VOL_UP + 2191130644 + name 1_666_KEY_MNSELECT + 2191130647 + name 1_666_KEY_GUIDE + 2191130651 + name 1_666_KEY_MNRETRUN + 2191130656 + name 1_666_KEY_BLUE + 2191130659 + name 1_666_KEY_GREEN + 2191130660 + name 1_666_KEY_RED + 2191130661 + name 1_666_KEY_YELLOW + 2191130662 + name 1_666_KEY_MUP + 2191130672 + name 1_666_KEY_MDOWN + 2191130673 + name 1_666_KEY_MLEFT + 2191130674 + name 1_666_KEY_MRIGHT + 2191130675 + name 1_666_KEY_Sleep + 2191130687 + name 1_666_KEY_Off + 2191130702 + name 1_667_KEY_0 + 2191196160 + name 1_667_KEY_1 + 2191196161 + name 1_667_KEY_2 + 2191196162 + name 1_667_KEY_3 + 2191196163 + name 1_667_KEY_4 + 2191196164 + name 1_667_KEY_5 + 2191196165 + name 1_667_KEY_6 + 2191196166 + name 1_667_KEY_7 + 2191196167 + name 1_667_KEY_8 + 2191196168 + name 1_667_KEY_9 + 2191196169 + name 1_667_KEY_POWER + 2191196170 + name 1_667_KEY_CH_UP + 2191196175 + name 1_667_KEY_CH_DOWN + 2191196176 + name 1_667_KEY_MUTE + 2191196177 + name 1_667_KEY_VOL_DOWN + 2191196178 + name 1_667_CH_PREVIOUS + 2191196179 + name 1_667_KEY_VOL_UP + 2191196180 + name 1_667_KEY_MNSELECT + 2191196183 + name 1_667_KEY_GUIDE + 2191196187 + name 1_667_KEY_MNRETRUN + 2191196192 + name 1_667_KEY_BLUE + 2191196195 + name 1_667_KEY_GREEN + 2191196196 + name 1_667_KEY_RED + 2191196197 + name 1_667_KEY_YELLOW + 2191196198 + name 1_667_KEY_MUP + 2191196208 + name 1_667_KEY_MDOWN + 2191196209 + name 1_667_KEY_MLEFT + 2191196210 + name 1_667_KEY_MRIGHT + 2191196211 + name 1_667_KEY_On + 2191196237 + name 1_667_KEY_Off + 2191196238 + name 1_668_KEY_0 + 2191261696 + name 1_668_KEY_1 + 2191261697 + name 1_668_KEY_2 + 2191261698 + name 1_668_KEY_3 + 2191261699 + name 1_668_KEY_4 + 2191261700 + name 1_668_KEY_5 + 2191261701 + name 1_668_KEY_6 + 2191261702 + name 1_668_KEY_7 + 2191261703 + name 1_668_KEY_8 + 2191261704 + name 1_668_KEY_9 + 2191261705 + name 1_668_KEY_POWER + 2191261706 + name 1_668_KEY_CH_UP + 2191261711 + name 1_668_KEY_CH_DOWN + 2191261712 + name 1_668_KEY_MUTE + 2191261713 + name 1_668_KEY_VOL_DOWN + 2191261714 + name 1_668_CH_PREVIOUS + 2191261715 + name 1_668_KEY_VOL_UP + 2191261716 + name 1_668_KEY_MNSELECT + 2191261719 + name 1_668_KEY_GUIDE + 2191261723 + name 1_668_KEY_MNRETRUN + 2191261728 + name 1_668_KEY_BLUE + 2191261731 + name 1_668_KEY_GREEN + 2191261732 + name 1_668_KEY_RED + 2191261733 + name 1_668_KEY_YELLOW + 2191261734 + name 1_668_KEY_AV + 2191261737 + name 1_668_KEY_MUP + 2191261744 + name 1_668_KEY_MDOWN + 2191261745 + name 1_668_KEY_MLEFT + 2191261746 + name 1_668_KEY_MRIGHT + 2191261747 + name 1_668_KEY_Sleep + 2191261759 + name 1_668_KEY_Off + 2191261774 + name 1_669_KEY_0 + 2191327232 + name 1_669_KEY_1 + 2191327233 + name 1_669_KEY_2 + 2191327234 + name 1_669_KEY_3 + 2191327235 + name 1_669_KEY_4 + 2191327236 + name 1_669_KEY_5 + 2191327237 + name 1_669_KEY_6 + 2191327238 + name 1_669_KEY_7 + 2191327239 + name 1_669_KEY_8 + 2191327240 + name 1_669_KEY_9 + 2191327241 + name 1_669_KEY_POWER + 2191327242 + name 1_669_KEY_CH_UP + 2191327247 + name 1_669_KEY_CH_DOWN + 2191327248 + name 1_669_KEY_MUTE + 2191327249 + name 1_669_KEY_VOL_DOWN + 2191327250 + name 1_669_CH_PREVIOUS + 2191327251 + name 1_669_KEY_VOL_UP + 2191327252 + name 1_669_KEY_MNSELECT + 2191327255 + name 1_669_KEY_GUIDE + 2191327259 + name 1_669_KEY_MNRETRUN + 2191327264 + name 1_669_KEY_BLUE + 2191327267 + name 1_669_KEY_GREEN + 2191327268 + name 1_669_KEY_RED + 2191327269 + name 1_669_KEY_YELLOW + 2191327270 + name 1_669_KEY_AV + 2191327273 + name 1_669_KEY_MUP + 2191327280 + name 1_669_KEY_MDOWN + 2191327281 + name 1_669_KEY_MLEFT + 2191327282 + name 1_669_KEY_MRIGHT + 2191327283 + name 1_669_KEY_Sleep + 2191327295 + name 1_669_KEY_Off + 2191327310 + name 1_670_KEY_0 + 2191392768 + name 1_670_KEY_1 + 2191392769 + name 1_670_KEY_2 + 2191392770 + name 1_670_KEY_3 + 2191392771 + name 1_670_KEY_4 + 2191392772 + name 1_670_KEY_5 + 2191392773 + name 1_670_KEY_6 + 2191392774 + name 1_670_KEY_7 + 2191392775 + name 1_670_KEY_8 + 2191392776 + name 1_670_KEY_9 + 2191392777 + name 1_670_KEY_POWER + 2191392778 + name 1_670_KEY_CH_UP + 2191392783 + name 1_670_KEY_CH_DOWN + 2191392784 + name 1_670_KEY_MUTE + 2191392785 + name 1_670_KEY_VOL_DOWN + 2191392786 + name 1_670_CH_PREVIOUS + 2191392787 + name 1_670_KEY_VOL_UP + 2191392788 + name 1_670_KEY_INPUT + 2191392794 + name 1_670_KEY_MUP + 2191392816 + name 1_670_KEY_MDOWN + 2191392817 + name 1_670_KEY_MLEFT + 2191392818 + name 1_670_KEY_MRIGHT + 2191392819 + name 1_670_KEY_On + 2191392845 + name 1_670_KEY_Off + 2191392846 + name 1_671_KEY_0 + 2191458304 + name 1_671_KEY_1 + 2191458305 + name 1_671_KEY_2 + 2191458306 + name 1_671_KEY_3 + 2191458307 + name 1_671_KEY_4 + 2191458308 + name 1_671_KEY_5 + 2191458309 + name 1_671_KEY_6 + 2191458310 + name 1_671_KEY_7 + 2191458311 + name 1_671_KEY_8 + 2191458312 + name 1_671_KEY_9 + 2191458313 + name 1_671_KEY_POWER + 2191458314 + name 1_671_KEY_CH_UP + 2191458319 + name 1_671_KEY_CH_DOWN + 2191458320 + name 1_671_KEY_MUTE + 2191458321 + name 1_671_KEY_VOL_DOWN + 2191458322 + name 1_671_CH_PREVIOUS + 2191458323 + name 1_671_KEY_VOL_UP + 2191458324 + name 1_671_KEY_MNSELECT + 2191458327 + name 1_671_KEY_EXIT + 2191458328 + name 1_671_KEY_INPUT + 2191458330 + name 1_671_KEY_GUIDE + 2191458331 + name 1_671_KEY_MNRETRUN + 2191458336 + name 1_671_KEY_MENU + 2191458351 + name 1_671_KEY_MUP + 2191458352 + name 1_671_KEY_MDOWN + 2191458353 + name 1_671_KEY_MLEFT + 2191458354 + name 1_671_KEY_MRIGHT + 2191458355 + name 1_671_KEY_TTOnOff + 2191458377 + name 1_672_KEY_0 + 2191523840 + name 1_672_KEY_1 + 2191523841 + name 1_672_KEY_2 + 2191523842 + name 1_672_KEY_3 + 2191523843 + name 1_672_KEY_4 + 2191523844 + name 1_672_KEY_5 + 2191523845 + name 1_672_KEY_6 + 2191523846 + name 1_672_KEY_7 + 2191523847 + name 1_672_KEY_8 + 2191523848 + name 1_672_KEY_9 + 2191523849 + name 1_672_KEY_POWER + 2191523850 + name 1_672_KEY_CH_UP + 2191523855 + name 1_672_KEY_CH_DOWN + 2191523856 + name 1_672_KEY_MUTE + 2191523857 + name 1_672_KEY_VOL_DOWN + 2191523858 + name 1_672_CH_PREVIOUS + 2191523859 + name 1_672_KEY_VOL_UP + 2191523860 + name 1_672_KEY_MNSELECT + 2191523863 + name 1_672_KEY_GUIDE + 2191523867 + name 1_672_KEY_MNRETRUN + 2191523872 + name 1_672_KEY_BLUE + 2191523875 + name 1_672_KEY_GREEN + 2191523876 + name 1_672_KEY_RED + 2191523877 + name 1_672_KEY_YELLOW + 2191523878 + name 1_672_KEY_MUP + 2191523888 + name 1_672_KEY_MDOWN + 2191523889 + name 1_672_KEY_MLEFT + 2191523890 + name 1_672_KEY_MRIGHT + 2191523891 + name 1_672_KEY_Sleep + 2191523903 + name 1_672_KEY_Off + 2191523918 + name 1_673_KEY_0 + 2191589376 + name 1_673_KEY_1 + 2191589377 + name 1_673_KEY_2 + 2191589378 + name 1_673_KEY_3 + 2191589379 + name 1_673_KEY_4 + 2191589380 + name 1_673_KEY_5 + 2191589381 + name 1_673_KEY_6 + 2191589382 + name 1_673_KEY_7 + 2191589383 + name 1_673_KEY_8 + 2191589384 + name 1_673_KEY_9 + 2191589385 + name 1_673_KEY_POWER + 2191589386 + name 1_673_KEY_CH_UP + 2191589391 + name 1_673_KEY_CH_DOWN + 2191589392 + name 1_673_KEY_MUTE + 2191589393 + name 1_673_KEY_VOL_DOWN + 2191589394 + name 1_673_CH_PREVIOUS + 2191589395 + name 1_673_KEY_VOL_UP + 2191589396 + name 1_673_KEY_MNSELECT + 2191589399 + name 1_673_KEY_GUIDE + 2191589403 + name 1_673_KEY_MNRETRUN + 2191589408 + name 1_673_KEY_BLUE + 2191589411 + name 1_673_KEY_GREEN + 2191589412 + name 1_673_KEY_RED + 2191589413 + name 1_673_KEY_YELLOW + 2191589414 + name 1_673_KEY_MUP + 2191589424 + name 1_673_KEY_MDOWN + 2191589425 + name 1_673_KEY_MLEFT + 2191589426 + name 1_673_KEY_MRIGHT + 2191589427 + name 1_673_KEY_Sleep + 2191589439 + name 1_673_KEY_Off + 2191589454 + name 1_674_KEY_0 + 2191654912 + name 1_674_KEY_1 + 2191654913 + name 1_674_KEY_2 + 2191654914 + name 1_674_KEY_3 + 2191654915 + name 1_674_KEY_4 + 2191654916 + name 1_674_KEY_5 + 2191654917 + name 1_674_KEY_6 + 2191654918 + name 1_674_KEY_7 + 2191654919 + name 1_674_KEY_8 + 2191654920 + name 1_674_KEY_9 + 2191654921 + name 1_674_KEY_POWER + 2191654922 + name 1_674_KEY_CH_UP + 2191654927 + name 1_674_KEY_CH_DOWN + 2191654928 + name 1_674_KEY_VOL_DOWN + 2191654930 + name 1_674_KEY_VOL_UP + 2191654932 + name 1_674_KEY_MNSELECT + 2191654935 + name 1_674_KEY_EXIT + 2191654936 + name 1_674_KEY_GUIDE + 2191654939 + name 1_674_KEY_TIMER + 2191654956 + name 1_674_KEY_MENU + 2191654959 + name 1_674_KEY_MUP + 2191654960 + name 1_674_KEY_MDOWN + 2191654961 + name 1_674_KEY_MLEFT + 2191654962 + name 1_674_KEY_MRIGHT + 2191654963 + name 1_674_KEY_Sleep + 2191654975 + name 1_674_KEY_On + 2191654989 + name 1_674_KEY_Off + 2191654990 + name 1_675_KEY_0 + 2191720448 + name 1_675_KEY_1 + 2191720449 + name 1_675_KEY_2 + 2191720450 + name 1_675_KEY_3 + 2191720451 + name 1_675_KEY_4 + 2191720452 + name 1_675_KEY_5 + 2191720453 + name 1_675_KEY_6 + 2191720454 + name 1_675_KEY_7 + 2191720455 + name 1_675_KEY_8 + 2191720456 + name 1_675_KEY_9 + 2191720457 + name 1_675_KEY_POWER + 2191720458 + name 1_675_KEY_CH_UP + 2191720463 + name 1_675_KEY_CH_DOWN + 2191720464 + name 1_675_KEY_VOL_DOWN + 2191720466 + name 1_675_KEY_VOL_UP + 2191720468 + name 1_675_KEY_MNSELECT + 2191720471 + name 1_675_KEY_GUIDE + 2191720475 + name 1_675_KEY_MNRETRUN + 2191720480 + name 1_675_KEY_TIMER + 2191720492 + name 1_675_KEY_MUP + 2191720496 + name 1_675_KEY_MDOWN + 2191720497 + name 1_675_KEY_MLEFT + 2191720498 + name 1_675_KEY_MRIGHT + 2191720499 + name 1_676_KEY_0 + 2191785984 + name 1_676_KEY_1 + 2191785985 + name 1_676_KEY_2 + 2191785986 + name 1_676_KEY_3 + 2191785987 + name 1_676_KEY_4 + 2191785988 + name 1_676_KEY_5 + 2191785989 + name 1_676_KEY_6 + 2191785990 + name 1_676_KEY_7 + 2191785991 + name 1_676_KEY_8 + 2191785992 + name 1_676_KEY_9 + 2191785993 + name 1_676_KEY_POWER + 2191785994 + name 1_676_KEY_CH_UP + 2191785999 + name 1_676_KEY_CH_DOWN + 2191786000 + name 1_676_KEY_MUTE + 2191786001 + name 1_676_KEY_VOL_DOWN + 2191786002 + name 1_676_CH_PREVIOUS + 2191786003 + name 1_676_KEY_VOL_UP + 2191786004 + name 1_676_KEY_MNSELECT + 2191786007 + name 1_676_KEY_EXIT + 2191786008 + name 1_676_KEY_GUIDE + 2191786011 + name 1_676_KEY_BLUE + 2191786019 + name 1_676_KEY_GREEN + 2191786020 + name 1_676_KEY_RED + 2191786021 + name 1_676_KEY_YELLOW + 2191786022 + name 1_676_KEY_MENU + 2191786031 + name 1_676_KEY_MUP + 2191786032 + name 1_676_KEY_MDOWN + 2191786033 + name 1_676_KEY_MLEFT + 2191786034 + name 1_676_KEY_MRIGHT + 2191786035 + name 1_676_KEY_DSubtitle + 2191786052 + name 1_677_KEY_0 + 2191851520 + name 1_677_KEY_1 + 2191851521 + name 1_677_KEY_2 + 2191851522 + name 1_677_KEY_3 + 2191851523 + name 1_677_KEY_4 + 2191851524 + name 1_677_KEY_5 + 2191851525 + name 1_677_KEY_6 + 2191851526 + name 1_677_KEY_7 + 2191851527 + name 1_677_KEY_8 + 2191851528 + name 1_677_KEY_9 + 2191851529 + name 1_677_KEY_POWER + 2191851530 + name 1_677_KEY_CH_UP + 2191851535 + name 1_677_KEY_CH_DOWN + 2191851536 + name 1_677_KEY_MUTE + 2191851537 + name 1_677_KEY_VOL_DOWN + 2191851538 + name 1_677_CH_PREVIOUS + 2191851539 + name 1_677_KEY_VOL_UP + 2191851540 + name 1_677_KEY_MNSELECT + 2191851543 + name 1_677_KEY_EXIT + 2191851544 + name 1_677_KEY_GUIDE + 2191851547 + name 1_677_KEY_BLUE + 2191851555 + name 1_677_KEY_GREEN + 2191851556 + name 1_677_KEY_RED + 2191851557 + name 1_677_KEY_YELLOW + 2191851558 + name 1_677_KEY_MENU + 2191851567 + name 1_677_KEY_MUP + 2191851568 + name 1_677_KEY_MDOWN + 2191851569 + name 1_677_KEY_MLEFT + 2191851570 + name 1_677_KEY_MRIGHT + 2191851571 + name 1_677_KEY_Sleep + 2191851583 + name 1_677_KEY_DSubtitle + 2191851588 + name 1_677_KEY_TTOnOff + 2191851593 + name 1_678_KEY_0 + 2191917056 + name 1_678_KEY_1 + 2191917057 + name 1_678_KEY_2 + 2191917058 + name 1_678_KEY_3 + 2191917059 + name 1_678_KEY_4 + 2191917060 + name 1_678_KEY_5 + 2191917061 + name 1_678_KEY_6 + 2191917062 + name 1_678_KEY_7 + 2191917063 + name 1_678_KEY_8 + 2191917064 + name 1_678_KEY_9 + 2191917065 + name 1_678_KEY_POWER + 2191917066 + name 1_678_KEY_CH_UP + 2191917071 + name 1_678_KEY_CH_DOWN + 2191917072 + name 1_678_KEY_MUTE + 2191917073 + name 1_678_KEY_VOL_DOWN + 2191917074 + name 1_678_CH_PREVIOUS + 2191917075 + name 1_678_KEY_VOL_UP + 2191917076 + name 1_678_KEY_MNSELECT + 2191917079 + name 1_678_KEY_EXIT + 2191917080 + name 1_678_KEY_GUIDE + 2191917083 + name 1_678_KEY_BLUE + 2191917091 + name 1_678_KEY_GREEN + 2191917092 + name 1_678_KEY_RED + 2191917093 + name 1_678_KEY_YELLOW + 2191917094 + name 1_678_KEY_MENU + 2191917103 + name 1_678_KEY_MUP + 2191917104 + name 1_678_KEY_MDOWN + 2191917105 + name 1_678_KEY_MLEFT + 2191917106 + name 1_678_KEY_MRIGHT + 2191917107 + name 1_678_KEY_DSubtitle + 2191917124 + name 1_678_KEY_TTOnOff + 2191917129 + name 1_679_KEY_0 + 2191982592 + name 1_679_KEY_1 + 2191982593 + name 1_679_KEY_2 + 2191982594 + name 1_679_KEY_3 + 2191982595 + name 1_679_KEY_4 + 2191982596 + name 1_679_KEY_5 + 2191982597 + name 1_679_KEY_6 + 2191982598 + name 1_679_KEY_7 + 2191982599 + name 1_679_KEY_8 + 2191982600 + name 1_679_KEY_9 + 2191982601 + name 1_679_KEY_POWER + 2191982602 + name 1_679_KEY_CH_UP + 2191982607 + name 1_679_KEY_CH_DOWN + 2191982608 + name 1_679_KEY_MUTE + 2191982609 + name 1_679_KEY_VOL_DOWN + 2191982610 + name 1_679_KEY_VOL_UP + 2191982612 + name 1_679_KEY_MENU + 2191982639 + name 1_679_KEY_MUP + 2191982640 + name 1_679_KEY_MDOWN + 2191982641 + name 1_680_KEY_0 + 2192048128 + name 1_680_KEY_1 + 2192048129 + name 1_680_KEY_2 + 2192048130 + name 1_680_KEY_3 + 2192048131 + name 1_680_KEY_4 + 2192048132 + name 1_680_KEY_5 + 2192048133 + name 1_680_KEY_6 + 2192048134 + name 1_680_KEY_7 + 2192048135 + name 1_680_KEY_8 + 2192048136 + name 1_680_KEY_9 + 2192048137 + name 1_680_KEY_POWER + 2192048138 + name 1_680_KEY_CH_UP + 2192048143 + name 1_680_KEY_CH_DOWN + 2192048144 + name 1_681_KEY_0 + 2192113664 + name 1_681_KEY_1 + 2192113665 + name 1_681_KEY_2 + 2192113666 + name 1_681_KEY_3 + 2192113667 + name 1_681_KEY_4 + 2192113668 + name 1_681_KEY_5 + 2192113669 + name 1_681_KEY_6 + 2192113670 + name 1_681_KEY_7 + 2192113671 + name 1_681_KEY_8 + 2192113672 + name 1_681_KEY_9 + 2192113673 + name 1_681_KEY_POWER + 2192113674 + name 1_681_KEY_CH_UP + 2192113679 + name 1_681_KEY_CH_DOWN + 2192113680 + name 1_681_KEY_MUTE + 2192113681 + name 1_681_KEY_VOL_DOWN + 2192113682 + name 1_681_CH_PREVIOUS + 2192113683 + name 1_681_KEY_VOL_UP + 2192113684 + name 1_681_KEY_MNSELECT + 2192113687 + name 1_681_KEY_GUIDE + 2192113691 + name 1_681_KEY_BLUE + 2192113699 + name 1_681_KEY_GREEN + 2192113700 + name 1_681_KEY_RED + 2192113701 + name 1_681_KEY_YELLOW + 2192113702 + name 1_681_KEY_MENU + 2192113711 + name 1_681_KEY_MUP + 2192113712 + name 1_681_KEY_MDOWN + 2192113713 + name 1_681_KEY_MLEFT + 2192113714 + name 1_681_KEY_MRIGHT + 2192113715 + name 1_681_KEY_Sleep + 2192113727 + name 1_681_KEY_DSubtitle + 2192113732 + name 1_681_KEY_TTOnOff + 2192113737 + name 1_682_KEY_0 + 2192179200 + name 1_682_KEY_1 + 2192179201 + name 1_682_KEY_2 + 2192179202 + name 1_682_KEY_3 + 2192179203 + name 1_682_KEY_4 + 2192179204 + name 1_682_KEY_5 + 2192179205 + name 1_682_KEY_6 + 2192179206 + name 1_682_KEY_7 + 2192179207 + name 1_682_KEY_8 + 2192179208 + name 1_682_KEY_9 + 2192179209 + name 1_682_KEY_POWER + 2192179210 + name 1_682_KEY_CH_UP + 2192179215 + name 1_682_KEY_CH_DOWN + 2192179216 + name 1_682_KEY_MUTE + 2192179217 + name 1_682_KEY_VOL_DOWN + 2192179218 + name 1_682_KEY_VOL_UP + 2192179220 + name 1_682_KEY_MNSELECT + 2192179223 + name 1_682_KEY_EXIT + 2192179224 + name 1_682_KEY_GUIDE + 2192179227 + name 1_682_KEY_BLUE + 2192179235 + name 1_682_KEY_GREEN + 2192179236 + name 1_682_KEY_RED + 2192179237 + name 1_682_KEY_YELLOW + 2192179238 + name 1_682_KEY_MENU + 2192179247 + name 1_682_KEY_MUP + 2192179248 + name 1_682_KEY_MDOWN + 2192179249 + name 1_682_KEY_MLEFT + 2192179250 + name 1_682_KEY_MRIGHT + 2192179251 + name 1_682_KEY_DSubtitle + 2192179268 + name 1_682_KEY_Off + 2192179278 + name 1_683_KEY_0 + 2192244736 + name 1_683_KEY_1 + 2192244737 + name 1_683_KEY_2 + 2192244738 + name 1_683_KEY_3 + 2192244739 + name 1_683_KEY_4 + 2192244740 + name 1_683_KEY_5 + 2192244741 + name 1_683_KEY_6 + 2192244742 + name 1_683_KEY_7 + 2192244743 + name 1_683_KEY_8 + 2192244744 + name 1_683_KEY_9 + 2192244745 + name 1_683_KEY_POWER + 2192244746 + name 1_683_KEY_CH_UP + 2192244751 + name 1_683_KEY_CH_DOWN + 2192244752 + name 1_683_KEY_MUTE + 2192244753 + name 1_683_KEY_VOL_DOWN + 2192244754 + name 1_683_CH_PREVIOUS + 2192244755 + name 1_683_KEY_VOL_UP + 2192244756 + name 1_683_KEY_MNSELECT + 2192244759 + name 1_683_KEY_EXIT + 2192244760 + name 1_683_KEY_GUIDE + 2192244763 + name 1_683_KEY_BLUE + 2192244771 + name 1_683_KEY_GREEN + 2192244772 + name 1_683_KEY_RED + 2192244773 + name 1_683_KEY_YELLOW + 2192244774 + name 1_683_KEY_AV + 2192244777 + name 1_683_KEY_MENU + 2192244783 + name 1_683_KEY_MUP + 2192244784 + name 1_683_KEY_MDOWN + 2192244785 + name 1_683_KEY_MLEFT + 2192244786 + name 1_683_KEY_MRIGHT + 2192244787 + name 1_683_KEY_DSubtitle + 2192244804 + name 1_683_KEY_On + 2192244813 + name 1_683_KEY_Off + 2192244814 + name 1_684_KEY_0 + 2192310272 + name 1_684_KEY_1 + 2192310273 + name 1_684_KEY_2 + 2192310274 + name 1_684_KEY_3 + 2192310275 + name 1_684_KEY_4 + 2192310276 + name 1_684_KEY_5 + 2192310277 + name 1_684_KEY_6 + 2192310278 + name 1_684_KEY_7 + 2192310279 + name 1_684_KEY_8 + 2192310280 + name 1_684_KEY_9 + 2192310281 + name 1_684_KEY_POWER + 2192310282 + name 1_684_KEY_CH_UP + 2192310287 + name 1_684_KEY_CH_DOWN + 2192310288 + name 1_684_KEY_MUTE + 2192310289 + name 1_684_KEY_VOL_DOWN + 2192310290 + name 1_684_CH_PREVIOUS + 2192310291 + name 1_684_KEY_VOL_UP + 2192310292 + name 1_684_KEY_MNSELECT + 2192310295 + name 1_684_KEY_AV + 2192310313 + name 1_684_KEY_MENU + 2192310319 + name 1_684_KEY_MUP + 2192310320 + name 1_684_KEY_MDOWN + 2192310321 + name 1_684_KEY_MLEFT + 2192310322 + name 1_684_KEY_MRIGHT + 2192310323 + name 1_684_KEY_Off + 2192310350 + name 1_685_KEY_0 + 2192375808 + name 1_685_KEY_1 + 2192375809 + name 1_685_KEY_2 + 2192375810 + name 1_685_KEY_3 + 2192375811 + name 1_685_KEY_4 + 2192375812 + name 1_685_KEY_5 + 2192375813 + name 1_685_KEY_6 + 2192375814 + name 1_685_KEY_7 + 2192375815 + name 1_685_KEY_8 + 2192375816 + name 1_685_KEY_9 + 2192375817 + name 1_685_KEY_POWER + 2192375818 + name 1_685_KEY_CH_UP + 2192375823 + name 1_685_KEY_CH_DOWN + 2192375824 + name 1_685_KEY_MUTE + 2192375825 + name 1_685_KEY_VOL_DOWN + 2192375826 + name 1_685_KEY_VOL_UP + 2192375828 + name 1_685_KEY_MNSELECT + 2192375831 + name 1_685_KEY_MENU + 2192375855 + name 1_685_KEY_MUP + 2192375856 + name 1_685_KEY_MDOWN + 2192375857 + name 1_685_KEY_MLEFT + 2192375858 + name 1_685_KEY_MRIGHT + 2192375859 + name 1_686_KEY_0 + 2192441344 + name 1_686_KEY_1 + 2192441345 + name 1_686_KEY_2 + 2192441346 + name 1_686_KEY_3 + 2192441347 + name 1_686_KEY_4 + 2192441348 + name 1_686_KEY_5 + 2192441349 + name 1_686_KEY_6 + 2192441350 + name 1_686_KEY_7 + 2192441351 + name 1_686_KEY_8 + 2192441352 + name 1_686_KEY_9 + 2192441353 + name 1_686_KEY_POWER + 2192441354 + name 1_686_KEY_CH_UP + 2192441359 + name 1_686_KEY_CH_DOWN + 2192441360 + name 1_686_KEY_MUTE + 2192441361 + name 1_686_KEY_VOL_DOWN + 2192441362 + name 1_686_KEY_VOL_UP + 2192441364 + name 1_686_KEY_MNSELECT + 2192441367 + name 1_686_KEY_MUP + 2192441392 + name 1_686_KEY_MDOWN + 2192441393 + name 1_686_KEY_MLEFT + 2192441394 + name 1_686_KEY_MRIGHT + 2192441395 + name 1_686_KEY_Sleep + 2192441407 + name 1_687_KEY_0 + 2192506880 + name 1_687_KEY_1 + 2192506881 + name 1_687_KEY_2 + 2192506882 + name 1_687_KEY_3 + 2192506883 + name 1_687_KEY_4 + 2192506884 + name 1_687_KEY_5 + 2192506885 + name 1_687_KEY_6 + 2192506886 + name 1_687_KEY_7 + 2192506887 + name 1_687_KEY_8 + 2192506888 + name 1_687_KEY_9 + 2192506889 + name 1_687_KEY_POWER + 2192506890 + name 1_687_TWO_DIGITS + 2192506893 + name 1_687_KEY_CH_UP + 2192506895 + name 1_687_KEY_CH_DOWN + 2192506896 + name 1_687_KEY_MUTE + 2192506897 + name 1_687_KEY_VOL_DOWN + 2192506898 + name 1_687_KEY_VOL_UP + 2192506900 + name 1_687_KEY_MNSELECT + 2192506903 + name 1_687_KEY_EXIT + 2192506904 + name 1_687_KEY_BLUE + 2192506915 + name 1_687_KEY_GREEN + 2192506916 + name 1_687_KEY_RED + 2192506917 + name 1_687_KEY_YELLOW + 2192506918 + name 1_687_KEY_AV + 2192506921 + name 1_687_KEY_MENU + 2192506927 + name 1_687_KEY_MUP + 2192506928 + name 1_687_KEY_MDOWN + 2192506929 + name 1_687_KEY_On + 2192506957 + name 1_687_KEY_Off + 2192506958 + name 1_688_KEY_0 + 2192572416 + name 1_688_KEY_1 + 2192572417 + name 1_688_KEY_2 + 2192572418 + name 1_688_KEY_3 + 2192572419 + name 1_688_KEY_4 + 2192572420 + name 1_688_KEY_5 + 2192572421 + name 1_688_KEY_6 + 2192572422 + name 1_688_KEY_7 + 2192572423 + name 1_688_KEY_8 + 2192572424 + name 1_688_KEY_9 + 2192572425 + name 1_688_KEY_POWER + 2192572426 + name 1_688_TWO_DIGITS + 2192572429 + name 1_688_KEY_CH_UP + 2192572431 + name 1_688_KEY_CH_DOWN + 2192572432 + name 1_688_KEY_MUTE + 2192572433 + name 1_688_KEY_VOL_DOWN + 2192572434 + name 1_688_KEY_VOL_UP + 2192572436 + name 1_688_KEY_EXIT + 2192572440 + name 1_688_KEY_GUIDE + 2192572443 + name 1_688_KEY_BLUE + 2192572451 + name 1_688_KEY_GREEN + 2192572452 + name 1_688_KEY_RED + 2192572453 + name 1_688_KEY_YELLOW + 2192572454 + name 1_688_KEY_MENU + 2192572463 + name 1_688_KEY_MUP + 2192572464 + name 1_688_KEY_MDOWN + 2192572465 + name 1_688_KEY_Sleep + 2192572479 + name 1_688_KEY_DSubtitle + 2192572484 + name 1_688_KEY_On + 2192572493 + name 1_689_KEY_0 + 2192637952 + name 1_689_KEY_1 + 2192637953 + name 1_689_KEY_2 + 2192637954 + name 1_689_KEY_3 + 2192637955 + name 1_689_KEY_4 + 2192637956 + name 1_689_KEY_5 + 2192637957 + name 1_689_KEY_6 + 2192637958 + name 1_689_KEY_7 + 2192637959 + name 1_689_KEY_8 + 2192637960 + name 1_689_KEY_9 + 2192637961 + name 1_689_KEY_POWER + 2192637962 + name 1_689_KEY_CH_UP + 2192637967 + name 1_689_KEY_CH_DOWN + 2192637968 + name 1_689_KEY_MUTE + 2192637969 + name 1_689_KEY_VOL_DOWN + 2192637970 + name 1_689_CH_PREVIOUS + 2192637971 + name 1_689_KEY_VOL_UP + 2192637972 + name 1_689_KEY_AV + 2192637993 + name 1_690_KEY_0 + 2192703488 + name 1_690_KEY_1 + 2192703489 + name 1_690_KEY_2 + 2192703490 + name 1_690_KEY_3 + 2192703491 + name 1_690_KEY_4 + 2192703492 + name 1_690_KEY_5 + 2192703493 + name 1_690_KEY_6 + 2192703494 + name 1_690_KEY_7 + 2192703495 + name 1_690_KEY_8 + 2192703496 + name 1_690_KEY_9 + 2192703497 + name 1_690_KEY_POWER + 2192703498 + name 1_690_KEY_CH_UP + 2192703503 + name 1_690_KEY_CH_DOWN + 2192703504 + name 1_690_KEY_MUTE + 2192703505 + name 1_690_KEY_VOL_DOWN + 2192703506 + name 1_690_KEY_VOL_UP + 2192703508 + name 1_690_KEY_MNSELECT + 2192703511 + name 1_690_KEY_MNRETRUN + 2192703520 + name 1_690_KEY_AV + 2192703529 + name 1_690_KEY_MENU + 2192703535 + name 1_690_KEY_MUP + 2192703536 + name 1_690_KEY_MDOWN + 2192703537 + name 1_690_KEY_MLEFT + 2192703538 + name 1_690_KEY_MRIGHT + 2192703539 + name 1_690_KEY_On + 2192703565 + name 1_690_KEY_Off + 2192703566 + name 1_691_KEY_0 + 2192769024 + name 1_691_KEY_1 + 2192769025 + name 1_691_KEY_2 + 2192769026 + name 1_691_KEY_3 + 2192769027 + name 1_691_KEY_4 + 2192769028 + name 1_691_KEY_5 + 2192769029 + name 1_691_KEY_6 + 2192769030 + name 1_691_KEY_7 + 2192769031 + name 1_691_KEY_8 + 2192769032 + name 1_691_KEY_9 + 2192769033 + name 1_691_KEY_POWER + 2192769034 + name 1_691_KEY_CH_UP + 2192769039 + name 1_691_KEY_CH_DOWN + 2192769040 + name 1_691_KEY_MUTE + 2192769041 + name 1_691_KEY_VOL_DOWN + 2192769042 + name 1_691_KEY_VOL_UP + 2192769044 + name 1_691_KEY_MNSELECT + 2192769047 + name 1_691_KEY_AV + 2192769065 + name 1_691_KEY_MENU + 2192769071 + name 1_691_KEY_MUP + 2192769072 + name 1_691_KEY_MDOWN + 2192769073 + name 1_691_KEY_MLEFT + 2192769074 + name 1_691_KEY_MRIGHT + 2192769075 + name 1_692_KEY_0 + 2192834560 + name 1_692_KEY_1 + 2192834561 + name 1_692_KEY_2 + 2192834562 + name 1_692_KEY_3 + 2192834563 + name 1_692_KEY_4 + 2192834564 + name 1_692_KEY_5 + 2192834565 + name 1_692_KEY_6 + 2192834566 + name 1_692_KEY_7 + 2192834567 + name 1_692_KEY_8 + 2192834568 + name 1_692_KEY_9 + 2192834569 + name 1_692_KEY_POWER + 2192834570 + name 1_692_KEY_CH_UP + 2192834575 + name 1_692_KEY_CH_DOWN + 2192834576 + name 1_692_CH_PREVIOUS + 2192834579 + name 1_692_KEY_MNSELECT + 2192834583 + name 1_692_KEY_MUP + 2192834608 + name 1_692_KEY_MDOWN + 2192834609 + name 1_692_KEY_MLEFT + 2192834610 + name 1_692_KEY_MRIGHT + 2192834611 + name 1_693_KEY_0 + 2192900096 + name 1_693_KEY_1 + 2192900097 + name 1_693_KEY_2 + 2192900098 + name 1_693_KEY_3 + 2192900099 + name 1_693_KEY_4 + 2192900100 + name 1_693_KEY_5 + 2192900101 + name 1_693_KEY_6 + 2192900102 + name 1_693_KEY_7 + 2192900103 + name 1_693_KEY_8 + 2192900104 + name 1_693_KEY_9 + 2192900105 + name 1_693_KEY_POWER + 2192900106 + name 1_693_KEY_CH_UP + 2192900111 + name 1_693_KEY_CH_DOWN + 2192900112 + name 1_693_KEY_MUTE + 2192900113 + name 1_693_KEY_VOL_DOWN + 2192900114 + name 1_693_KEY_VOL_UP + 2192900116 + name 1_693_KEY_EXIT + 2192900120 + name 1_693_KEY_MENU + 2192900143 + name 1_694_KEY_0 + 2192965632 + name 1_694_KEY_1 + 2192965633 + name 1_694_KEY_2 + 2192965634 + name 1_694_KEY_3 + 2192965635 + name 1_694_KEY_4 + 2192965636 + name 1_694_KEY_5 + 2192965637 + name 1_694_KEY_6 + 2192965638 + name 1_694_KEY_7 + 2192965639 + name 1_694_KEY_8 + 2192965640 + name 1_694_KEY_9 + 2192965641 + name 1_694_KEY_POWER + 2192965642 + name 1_694_KEY_CH_UP + 2192965647 + name 1_694_KEY_CH_DOWN + 2192965648 + name 1_694_KEY_MUTE + 2192965649 + name 1_694_KEY_VOL_DOWN + 2192965650 + name 1_694_KEY_VOL_UP + 2192965652 + name 1_695_KEY_0 + 2193031168 + name 1_695_KEY_1 + 2193031169 + name 1_695_KEY_2 + 2193031170 + name 1_695_KEY_3 + 2193031171 + name 1_695_KEY_4 + 2193031172 + name 1_695_KEY_5 + 2193031173 + name 1_695_KEY_6 + 2193031174 + name 1_695_KEY_7 + 2193031175 + name 1_695_KEY_8 + 2193031176 + name 1_695_KEY_9 + 2193031177 + name 1_695_KEY_POWER + 2193031178 + name 1_695_KEY_CH_UP + 2193031183 + name 1_695_KEY_CH_DOWN + 2193031184 + name 1_695_KEY_MUTE + 2193031185 + name 1_695_KEY_VOL_DOWN + 2193031186 + name 1_695_CH_PREVIOUS + 2193031187 + name 1_695_KEY_VOL_UP + 2193031188 + name 1_695_KEY_MNSELECT + 2193031191 + name 1_695_KEY_EXIT + 2193031192 + name 1_695_KEY_GUIDE + 2193031195 + name 1_695_KEY_MUP + 2193031216 + name 1_695_KEY_MDOWN + 2193031217 + name 1_695_KEY_MLEFT + 2193031218 + name 1_695_KEY_MRIGHT + 2193031219 + name 1_696_KEY_0 + 2193096704 + name 1_696_KEY_1 + 2193096705 + name 1_696_KEY_2 + 2193096706 + name 1_696_KEY_3 + 2193096707 + name 1_696_KEY_4 + 2193096708 + name 1_696_KEY_5 + 2193096709 + name 1_696_KEY_6 + 2193096710 + name 1_696_KEY_7 + 2193096711 + name 1_696_KEY_8 + 2193096712 + name 1_696_KEY_9 + 2193096713 + name 1_696_KEY_POWER + 2193096714 + name 1_696_KEY_CH_UP + 2193096719 + name 1_696_KEY_CH_DOWN + 2193096720 + name 1_696_KEY_MUTE + 2193096721 + name 1_696_KEY_VOL_DOWN + 2193096722 + name 1_696_KEY_VOL_UP + 2193096724 + name 1_696_KEY_MNSELECT + 2193096727 + name 1_696_KEY_AV + 2193096745 + name 1_696_KEY_MENU + 2193096751 + name 1_696_KEY_MUP + 2193096752 + name 1_696_KEY_MDOWN + 2193096753 + name 1_696_KEY_MLEFT + 2193096754 + name 1_696_KEY_MRIGHT + 2193096755 + name 1_696_KEY_Sleep + 2193096767 + name 1_697_KEY_0 + 2193162240 + name 1_697_KEY_1 + 2193162241 + name 1_697_KEY_2 + 2193162242 + name 1_697_KEY_3 + 2193162243 + name 1_697_KEY_4 + 2193162244 + name 1_697_KEY_5 + 2193162245 + name 1_697_KEY_6 + 2193162246 + name 1_697_KEY_7 + 2193162247 + name 1_697_KEY_8 + 2193162248 + name 1_697_KEY_9 + 2193162249 + name 1_697_KEY_POWER + 2193162250 + name 1_697_KEY_CH_UP + 2193162255 + name 1_697_KEY_CH_DOWN + 2193162256 + name 1_697_KEY_MUTE + 2193162257 + name 1_697_KEY_VOL_DOWN + 2193162258 + name 1_697_KEY_VOL_UP + 2193162260 + name 1_697_KEY_AV + 2193162281 + name 1_697_KEY_MENU + 2193162287 + name 1_697_KEY_MUP + 2193162288 + name 1_697_KEY_MDOWN + 2193162289 + name 1_697_KEY_MLEFT + 2193162290 + name 1_697_KEY_MRIGHT + 2193162291 + name 1_697_KEY_Sleep + 2193162303 + name 1_697_KEY_Off + 2193162318 + name 1_698_KEY_0 + 2193227776 + name 1_698_KEY_1 + 2193227777 + name 1_698_KEY_2 + 2193227778 + name 1_698_KEY_3 + 2193227779 + name 1_698_KEY_4 + 2193227780 + name 1_698_KEY_5 + 2193227781 + name 1_698_KEY_6 + 2193227782 + name 1_698_KEY_7 + 2193227783 + name 1_698_KEY_8 + 2193227784 + name 1_698_KEY_9 + 2193227785 + name 1_698_KEY_POWER + 2193227786 + name 1_698_KEY_CH_UP + 2193227791 + name 1_698_KEY_CH_DOWN + 2193227792 + name 1_698_KEY_MUTE + 2193227793 + name 1_698_KEY_VOL_DOWN + 2193227794 + name 1_698_KEY_VOL_UP + 2193227796 + name 1_698_KEY_MNSELECT + 2193227799 + name 1_698_KEY_MENU + 2193227823 + name 1_698_KEY_MUP + 2193227824 + name 1_698_KEY_MDOWN + 2193227825 + name 1_698_KEY_MLEFT + 2193227826 + name 1_698_KEY_MRIGHT + 2193227827 + name 1_698_KEY_Off + 2193227854 + name 1_699_KEY_0 + 2193293312 + name 1_699_KEY_1 + 2193293313 + name 1_699_KEY_2 + 2193293314 + name 1_699_KEY_3 + 2193293315 + name 1_699_KEY_4 + 2193293316 + name 1_699_KEY_5 + 2193293317 + name 1_699_KEY_6 + 2193293318 + name 1_699_KEY_7 + 2193293319 + name 1_699_KEY_8 + 2193293320 + name 1_699_KEY_9 + 2193293321 + name 1_699_KEY_POWER + 2193293322 + name 1_699_KEY_CH_UP + 2193293327 + name 1_699_KEY_CH_DOWN + 2193293328 + name 1_699_KEY_MUTE + 2193293329 + name 1_699_KEY_VOL_DOWN + 2193293330 + name 1_699_KEY_VOL_UP + 2193293332 + name 1_699_KEY_GUIDE + 2193293339 + name 1_699_KEY_AV + 2193293353 + name 1_699_KEY_MUP + 2193293360 + name 1_699_KEY_MDOWN + 2193293361 + name 1_699_KEY_MLEFT + 2193293362 + name 1_699_KEY_MRIGHT + 2193293363 + name 1_700_KEY_0 + 2193358848 + name 1_700_KEY_1 + 2193358849 + name 1_700_KEY_2 + 2193358850 + name 1_700_KEY_3 + 2193358851 + name 1_700_KEY_4 + 2193358852 + name 1_700_KEY_5 + 2193358853 + name 1_700_KEY_6 + 2193358854 + name 1_700_KEY_7 + 2193358855 + name 1_700_KEY_8 + 2193358856 + name 1_700_KEY_9 + 2193358857 + name 1_700_KEY_POWER + 2193358858 + name 1_700_KEY_CH_UP + 2193358863 + name 1_700_KEY_CH_DOWN + 2193358864 + name 1_700_KEY_MUTE + 2193358865 + name 1_700_KEY_VOL_DOWN + 2193358866 + name 1_700_CH_PREVIOUS + 2193358867 + name 1_700_KEY_VOL_UP + 2193358868 + name 1_700_KEY_MNSELECT + 2193358871 + name 1_700_KEY_EXIT + 2193358872 + name 1_700_KEY_GUIDE + 2193358875 + name 1_700_KEY_BLUE + 2193358883 + name 1_700_KEY_GREEN + 2193358884 + name 1_700_KEY_RED + 2193358885 + name 1_700_KEY_YELLOW + 2193358886 + name 1_700_KEY_MENU + 2193358895 + name 1_700_KEY_MUP + 2193358896 + name 1_700_KEY_MDOWN + 2193358897 + name 1_700_KEY_MLEFT + 2193358898 + name 1_700_KEY_MRIGHT + 2193358899 + name 1_700_KEY_DSubtitle + 2193358916 + name 1_700_KEY_Off + 2193358926 + name 1_701_KEY_0 + 2193424384 + name 1_701_KEY_1 + 2193424385 + name 1_701_KEY_2 + 2193424386 + name 1_701_KEY_3 + 2193424387 + name 1_701_KEY_4 + 2193424388 + name 1_701_KEY_5 + 2193424389 + name 1_701_KEY_6 + 2193424390 + name 1_701_KEY_7 + 2193424391 + name 1_701_KEY_8 + 2193424392 + name 1_701_KEY_9 + 2193424393 + name 1_701_KEY_POWER + 2193424394 + name 1_701_KEY_CH_UP + 2193424399 + name 1_701_KEY_CH_DOWN + 2193424400 + name 1_701_KEY_MUTE + 2193424401 + name 1_701_KEY_VOL_DOWN + 2193424402 + name 1_701_CH_PREVIOUS + 2193424403 + name 1_701_KEY_VOL_UP + 2193424404 + name 1_701_KEY_MNSELECT + 2193424407 + name 1_701_KEY_EXIT + 2193424408 + name 1_701_KEY_GUIDE + 2193424411 + name 1_701_KEY_MENU + 2193424431 + name 1_701_KEY_MUP + 2193424432 + name 1_701_KEY_MDOWN + 2193424433 + name 1_701_KEY_MLEFT + 2193424434 + name 1_701_KEY_MRIGHT + 2193424435 + name 1_702_KEY_0 + 2193489920 + name 1_702_KEY_1 + 2193489921 + name 1_702_KEY_2 + 2193489922 + name 1_702_KEY_3 + 2193489923 + name 1_702_KEY_4 + 2193489924 + name 1_702_KEY_5 + 2193489925 + name 1_702_KEY_6 + 2193489926 + name 1_702_KEY_7 + 2193489927 + name 1_702_KEY_8 + 2193489928 + name 1_702_KEY_9 + 2193489929 + name 1_702_KEY_POWER + 2193489930 + name 1_702_KEY_CH_UP + 2193489935 + name 1_702_KEY_CH_DOWN + 2193489936 + name 1_702_KEY_MUTE + 2193489937 + name 1_702_KEY_VOL_DOWN + 2193489938 + name 1_702_CH_PREVIOUS + 2193489939 + name 1_702_KEY_VOL_UP + 2193489940 + name 1_702_KEY_AV + 2193489961 + name 1_703_KEY_0 + 2193555456 + name 1_703_KEY_1 + 2193555457 + name 1_703_KEY_2 + 2193555458 + name 1_703_KEY_3 + 2193555459 + name 1_703_KEY_4 + 2193555460 + name 1_703_KEY_5 + 2193555461 + name 1_703_KEY_6 + 2193555462 + name 1_703_KEY_7 + 2193555463 + name 1_703_KEY_8 + 2193555464 + name 1_703_KEY_9 + 2193555465 + name 1_703_KEY_POWER + 2193555466 + name 1_703_KEY_CH_UP + 2193555471 + name 1_703_KEY_CH_DOWN + 2193555472 + name 1_703_KEY_MUTE + 2193555473 + name 1_703_KEY_VOL_DOWN + 2193555474 + name 1_703_CH_PREVIOUS + 2193555475 + name 1_703_KEY_VOL_UP + 2193555476 + name 1_703_KEY_MNSELECT + 2193555479 + name 1_703_KEY_EXIT + 2193555480 + name 1_703_KEY_GUIDE + 2193555483 + name 1_703_KEY_BLUE + 2193555491 + name 1_703_KEY_GREEN + 2193555492 + name 1_703_KEY_RED + 2193555493 + name 1_703_KEY_YELLOW + 2193555494 + name 1_703_KEY_AV + 2193555497 + name 1_703_KEY_MENU + 2193555503 + name 1_703_KEY_MUP + 2193555504 + name 1_703_KEY_MDOWN + 2193555505 + name 1_703_KEY_MLEFT + 2193555506 + name 1_703_KEY_MRIGHT + 2193555507 + name 1_704_KEY_0 + 2193620992 + name 1_704_KEY_1 + 2193620993 + name 1_704_KEY_2 + 2193620994 + name 1_704_KEY_3 + 2193620995 + name 1_704_KEY_4 + 2193620996 + name 1_704_KEY_5 + 2193620997 + name 1_704_KEY_6 + 2193620998 + name 1_704_KEY_7 + 2193620999 + name 1_704_KEY_8 + 2193621000 + name 1_704_KEY_9 + 2193621001 + name 1_704_KEY_POWER + 2193621002 + name 1_704_KEY_CH_UP + 2193621007 + name 1_704_KEY_CH_DOWN + 2193621008 + name 1_704_KEY_MUTE + 2193621009 + name 1_704_KEY_VOL_DOWN + 2193621010 + name 1_704_CH_PREVIOUS + 2193621011 + name 1_704_KEY_VOL_UP + 2193621012 + name 1_704_KEY_MNSELECT + 2193621015 + name 1_704_KEY_EXIT + 2193621016 + name 1_704_KEY_GUIDE + 2193621019 + name 1_704_KEY_AV + 2193621033 + name 1_704_KEY_MENU + 2193621039 + name 1_704_KEY_MUP + 2193621040 + name 1_704_KEY_MDOWN + 2193621041 + name 1_704_KEY_MLEFT + 2193621042 + name 1_704_KEY_MRIGHT + 2193621043 + name 1_704_KEY_On + 2193621069 + name 1_704_KEY_Off + 2193621070 + name 1_705_KEY_0 + 2193686528 + name 1_705_KEY_1 + 2193686529 + name 1_705_KEY_2 + 2193686530 + name 1_705_KEY_3 + 2193686531 + name 1_705_KEY_4 + 2193686532 + name 1_705_KEY_5 + 2193686533 + name 1_705_KEY_6 + 2193686534 + name 1_705_KEY_7 + 2193686535 + name 1_705_KEY_8 + 2193686536 + name 1_705_KEY_9 + 2193686537 + name 1_705_KEY_POWER + 2193686538 + name 1_705_KEY_CH_UP + 2193686543 + name 1_705_KEY_CH_DOWN + 2193686544 + name 1_705_KEY_MUTE + 2193686545 + name 1_705_KEY_VOL_DOWN + 2193686546 + name 1_705_CH_PREVIOUS + 2193686547 + name 1_705_KEY_VOL_UP + 2193686548 + name 1_705_KEY_MNSELECT + 2193686551 + name 1_705_KEY_EXIT + 2193686552 + name 1_705_KEY_GUIDE + 2193686555 + name 1_705_KEY_MNRETRUN + 2193686560 + name 1_705_KEY_BLUE + 2193686563 + name 1_705_KEY_GREEN + 2193686564 + name 1_705_KEY_RED + 2193686565 + name 1_705_KEY_YELLOW + 2193686566 + name 1_705_KEY_AV + 2193686569 + name 1_705_KEY_MENU + 2193686575 + name 1_705_KEY_MUP + 2193686576 + name 1_705_KEY_MDOWN + 2193686577 + name 1_705_KEY_MLEFT + 2193686578 + name 1_705_KEY_MRIGHT + 2193686579 + name 1_705_KEY_DSubtitle + 2193686596 + name 1_706_KEY_0 + 2193752064 + name 1_706_KEY_1 + 2193752065 + name 1_706_KEY_2 + 2193752066 + name 1_706_KEY_3 + 2193752067 + name 1_706_KEY_4 + 2193752068 + name 1_706_KEY_5 + 2193752069 + name 1_706_KEY_6 + 2193752070 + name 1_706_KEY_7 + 2193752071 + name 1_706_KEY_8 + 2193752072 + name 1_706_KEY_9 + 2193752073 + name 1_706_KEY_POWER + 2193752074 + name 1_706_KEY_CH_UP + 2193752079 + name 1_706_KEY_CH_DOWN + 2193752080 + name 1_706_KEY_MUTE + 2193752081 + name 1_706_KEY_VOL_DOWN + 2193752082 + name 1_706_CH_PREVIOUS + 2193752083 + name 1_706_KEY_VOL_UP + 2193752084 + name 1_706_KEY_MNSELECT + 2193752087 + name 1_706_KEY_EXIT + 2193752088 + name 1_706_KEY_GUIDE + 2193752091 + name 1_706_KEY_MNRETRUN + 2193752096 + name 1_706_KEY_BLUE + 2193752099 + name 1_706_KEY_GREEN + 2193752100 + name 1_706_KEY_RED + 2193752101 + name 1_706_KEY_YELLOW + 2193752102 + name 1_706_KEY_MENU + 2193752111 + name 1_706_KEY_MUP + 2193752112 + name 1_706_KEY_MDOWN + 2193752113 + name 1_706_KEY_MLEFT + 2193752114 + name 1_706_KEY_MRIGHT + 2193752115 + name 1_706_KEY_DSubtitle + 2193752132 + name 1_706_KEY_On + 2193752141 + name 1_707_KEY_0 + 2193817600 + name 1_707_KEY_1 + 2193817601 + name 1_707_KEY_2 + 2193817602 + name 1_707_KEY_3 + 2193817603 + name 1_707_KEY_4 + 2193817604 + name 1_707_KEY_5 + 2193817605 + name 1_707_KEY_6 + 2193817606 + name 1_707_KEY_7 + 2193817607 + name 1_707_KEY_8 + 2193817608 + name 1_707_KEY_9 + 2193817609 + name 1_707_KEY_POWER + 2193817610 + name 1_707_TWO_DIGITS + 2193817613 + name 1_707_KEY_CH_UP + 2193817615 + name 1_707_KEY_CH_DOWN + 2193817616 + name 1_707_KEY_MUTE + 2193817617 + name 1_707_KEY_VOL_DOWN + 2193817618 + name 1_707_KEY_VOL_UP + 2193817620 + name 1_707_KEY_EXIT + 2193817624 + name 1_707_KEY_BLUE + 2193817635 + name 1_707_KEY_GREEN + 2193817636 + name 1_707_KEY_RED + 2193817637 + name 1_707_KEY_YELLOW + 2193817638 + name 1_707_KEY_AV + 2193817641 + name 1_707_KEY_MENU + 2193817647 + name 1_707_KEY_MUP + 2193817648 + name 1_707_KEY_MDOWN + 2193817649 + name 1_707_KEY_MLEFT + 2193817650 + name 1_707_KEY_MRIGHT + 2193817651 + name 1_707_KEY_On + 2193817677 + name 1_707_KEY_Off + 2193817678 + name 1_708_KEY_0 + 2193883136 + name 1_708_KEY_1 + 2193883137 + name 1_708_KEY_2 + 2193883138 + name 1_708_KEY_3 + 2193883139 + name 1_708_KEY_4 + 2193883140 + name 1_708_KEY_5 + 2193883141 + name 1_708_KEY_6 + 2193883142 + name 1_708_KEY_7 + 2193883143 + name 1_708_KEY_8 + 2193883144 + name 1_708_KEY_9 + 2193883145 + name 1_708_KEY_POWER + 2193883146 + name 1_708_KEY_CH_UP + 2193883151 + name 1_708_KEY_CH_DOWN + 2193883152 + name 1_708_KEY_MUTE + 2193883153 + name 1_708_KEY_VOL_DOWN + 2193883154 + name 1_708_KEY_VOL_UP + 2193883156 + name 1_708_KEY_EXIT + 2193883160 + name 1_708_KEY_GUIDE + 2193883163 + name 1_708_KEY_BLUE + 2193883171 + name 1_708_KEY_GREEN + 2193883172 + name 1_708_KEY_RED + 2193883173 + name 1_708_KEY_YELLOW + 2193883174 + name 1_708_KEY_MENU + 2193883183 + name 1_708_KEY_MUP + 2193883184 + name 1_708_KEY_MDOWN + 2193883185 + name 1_708_KEY_MLEFT + 2193883186 + name 1_708_KEY_MRIGHT + 2193883187 + name 1_708_KEY_DSubtitle + 2193883204 + name 1_708_KEY_TTOnOff + 2193883209 + name 1_709_KEY_0 + 2193948672 + name 1_709_KEY_1 + 2193948673 + name 1_709_KEY_2 + 2193948674 + name 1_709_KEY_3 + 2193948675 + name 1_709_KEY_4 + 2193948676 + name 1_709_KEY_5 + 2193948677 + name 1_709_KEY_6 + 2193948678 + name 1_709_KEY_7 + 2193948679 + name 1_709_KEY_8 + 2193948680 + name 1_709_KEY_9 + 2193948681 + name 1_709_KEY_CH_UP + 2193948687 + name 1_709_KEY_CH_DOWN + 2193948688 + name 1_709_KEY_MNSELECT + 2193948695 + name 1_709_KEY_MNRETRUN + 2193948704 + name 1_709_KEY_MENU + 2193948719 + name 1_710_KEY_0 + 2194014208 + name 1_710_KEY_1 + 2194014209 + name 1_710_KEY_2 + 2194014210 + name 1_710_KEY_3 + 2194014211 + name 1_710_KEY_4 + 2194014212 + name 1_710_KEY_5 + 2194014213 + name 1_710_KEY_6 + 2194014214 + name 1_710_KEY_7 + 2194014215 + name 1_710_KEY_8 + 2194014216 + name 1_710_KEY_9 + 2194014217 + name 1_710_KEY_POWER + 2194014218 + name 1_710_KEY_CH_UP + 2194014223 + name 1_710_KEY_CH_DOWN + 2194014224 + name 1_710_KEY_MUTE + 2194014225 + name 1_710_KEY_MNSELECT + 2194014231 + name 1_710_KEY_EXIT + 2194014232 + name 1_710_KEY_GUIDE + 2194014235 + name 1_710_KEY_MNRETRUN + 2194014240 + name 1_710_KEY_MENU + 2194014255 + name 1_710_KEY_MUP + 2194014256 + name 1_710_KEY_MDOWN + 2194014257 + name 1_710_KEY_MLEFT + 2194014258 + name 1_710_KEY_MRIGHT + 2194014259 + name 1_710_KEY_DSubtitle + 2194014276 + name 1_711_KEY_0 + 2194079744 + name 1_711_KEY_1 + 2194079745 + name 1_711_KEY_2 + 2194079746 + name 1_711_KEY_3 + 2194079747 + name 1_711_KEY_4 + 2194079748 + name 1_711_KEY_5 + 2194079749 + name 1_711_KEY_6 + 2194079750 + name 1_711_KEY_7 + 2194079751 + name 1_711_KEY_8 + 2194079752 + name 1_711_KEY_9 + 2194079753 + name 1_711_KEY_POWER + 2194079754 + name 1_711_KEY_CH_UP + 2194079759 + name 1_711_KEY_CH_DOWN + 2194079760 + name 1_711_KEY_MUTE + 2194079761 + name 1_711_KEY_VOL_DOWN + 2194079762 + name 1_711_KEY_VOL_UP + 2194079764 + name 1_711_KEY_MNSELECT + 2194079767 + name 1_711_KEY_EXIT + 2194079768 + name 1_711_KEY_GUIDE + 2194079771 + name 1_711_KEY_MNRETRUN + 2194079776 + name 1_711_KEY_MENU + 2194079791 + name 1_711_KEY_MUP + 2194079792 + name 1_711_KEY_MDOWN + 2194079793 + name 1_711_KEY_MLEFT + 2194079794 + name 1_711_KEY_MRIGHT + 2194079795 + name 1_711_KEY_DSubtitle + 2194079812 + name 1_712_KEY_0 + 2194145280 + name 1_712_KEY_1 + 2194145281 + name 1_712_KEY_2 + 2194145282 + name 1_712_KEY_3 + 2194145283 + name 1_712_KEY_4 + 2194145284 + name 1_712_KEY_5 + 2194145285 + name 1_712_KEY_6 + 2194145286 + name 1_712_KEY_7 + 2194145287 + name 1_712_KEY_8 + 2194145288 + name 1_712_KEY_9 + 2194145289 + name 1_712_KEY_POWER + 2194145290 + name 1_712_KEY_CH_UP + 2194145295 + name 1_712_KEY_CH_DOWN + 2194145296 + name 1_712_KEY_MUTE + 2194145297 + name 1_712_KEY_VOL_DOWN + 2194145298 + name 1_712_CH_PREVIOUS + 2194145299 + name 1_712_KEY_VOL_UP + 2194145300 + name 1_712_KEY_MNSELECT + 2194145303 + name 1_712_KEY_GUIDE + 2194145307 + name 1_712_KEY_MNRETRUN + 2194145312 + name 1_712_KEY_BLUE + 2194145315 + name 1_712_KEY_GREEN + 2194145316 + name 1_712_KEY_RED + 2194145317 + name 1_712_KEY_YELLOW + 2194145318 + name 1_712_KEY_TIMER + 2194145324 + name 1_712_KEY_MUP + 2194145328 + name 1_712_KEY_MDOWN + 2194145329 + name 1_712_KEY_MLEFT + 2194145330 + name 1_712_KEY_MRIGHT + 2194145331 + name 1_712_KEY_DSubtitle + 2194145348 + name 1_712_KEY_On + 2194145357 + name 1_713_KEY_0 + 2194210816 + name 1_713_KEY_1 + 2194210817 + name 1_713_KEY_2 + 2194210818 + name 1_713_KEY_3 + 2194210819 + name 1_713_KEY_4 + 2194210820 + name 1_713_KEY_5 + 2194210821 + name 1_713_KEY_6 + 2194210822 + name 1_713_KEY_7 + 2194210823 + name 1_713_KEY_8 + 2194210824 + name 1_713_KEY_9 + 2194210825 + name 1_713_KEY_POWER + 2194210826 + name 1_713_KEY_CH_UP + 2194210831 + name 1_713_KEY_CH_DOWN + 2194210832 + name 1_713_KEY_MUTE + 2194210833 + name 1_713_KEY_VOL_DOWN + 2194210834 + name 1_713_CH_PREVIOUS + 2194210835 + name 1_713_KEY_VOL_UP + 2194210836 + name 1_713_KEY_MNSELECT + 2194210839 + name 1_713_KEY_EXIT + 2194210840 + name 1_713_KEY_GUIDE + 2194210843 + name 1_713_KEY_MNRETRUN + 2194210848 + name 1_713_KEY_MENU + 2194210863 + name 1_713_KEY_MUP + 2194210864 + name 1_713_KEY_MDOWN + 2194210865 + name 1_713_KEY_MLEFT + 2194210866 + name 1_713_KEY_MRIGHT + 2194210867 + name 1_713_KEY_DSubtitle + 2194210884 + name 1_714_KEY_0 + 2194276352 + name 1_714_KEY_1 + 2194276353 + name 1_714_KEY_2 + 2194276354 + name 1_714_KEY_3 + 2194276355 + name 1_714_KEY_4 + 2194276356 + name 1_714_KEY_5 + 2194276357 + name 1_714_KEY_6 + 2194276358 + name 1_714_KEY_7 + 2194276359 + name 1_714_KEY_8 + 2194276360 + name 1_714_KEY_9 + 2194276361 + name 1_714_KEY_POWER + 2194276362 + name 1_714_KEY_CH_UP + 2194276367 + name 1_714_KEY_CH_DOWN + 2194276368 + name 1_714_KEY_MUTE + 2194276369 + name 1_714_KEY_VOL_DOWN + 2194276370 + name 1_714_CH_PREVIOUS + 2194276371 + name 1_714_KEY_VOL_UP + 2194276372 + name 1_714_KEY_MNSELECT + 2194276375 + name 1_714_KEY_EXIT + 2194276376 + name 1_714_KEY_GUIDE + 2194276379 + name 1_714_KEY_TIMER + 2194276396 + name 1_714_KEY_MUP + 2194276400 + name 1_714_KEY_MDOWN + 2194276401 + name 1_714_KEY_MLEFT + 2194276402 + name 1_714_KEY_MRIGHT + 2194276403 + name 1_714_KEY_DSubtitle + 2194276420 + name 1_715_KEY_0 + 2194341888 + name 1_715_KEY_1 + 2194341889 + name 1_715_KEY_2 + 2194341890 + name 1_715_KEY_3 + 2194341891 + name 1_715_KEY_4 + 2194341892 + name 1_715_KEY_5 + 2194341893 + name 1_715_KEY_6 + 2194341894 + name 1_715_KEY_7 + 2194341895 + name 1_715_KEY_8 + 2194341896 + name 1_715_KEY_9 + 2194341897 + name 1_715_KEY_POWER + 2194341898 + name 1_715_KEY_CH_UP + 2194341903 + name 1_715_KEY_CH_DOWN + 2194341904 + name 1_715_KEY_MUTE + 2194341905 + name 1_715_KEY_VOL_DOWN + 2194341906 + name 1_715_CH_PREVIOUS + 2194341907 + name 1_715_KEY_VOL_UP + 2194341908 + name 1_715_KEY_MNSELECT + 2194341911 + name 1_715_KEY_EXIT + 2194341912 + name 1_715_KEY_GUIDE + 2194341915 + name 1_715_KEY_BLUE + 2194341923 + name 1_715_KEY_GREEN + 2194341924 + name 1_715_KEY_RED + 2194341925 + name 1_715_KEY_YELLOW + 2194341926 + name 1_715_KEY_TIMER + 2194341932 + name 1_715_KEY_MENU + 2194341935 + name 1_715_KEY_MUP + 2194341936 + name 1_715_KEY_MDOWN + 2194341937 + name 1_715_KEY_MLEFT + 2194341938 + name 1_715_KEY_MRIGHT + 2194341939 + name 1_715_KEY_DSubtitle + 2194341956 + name 1_715_KEY_On + 2194341965 + name 1_716_KEY_0 + 2194407424 + name 1_716_KEY_1 + 2194407425 + name 1_716_KEY_2 + 2194407426 + name 1_716_KEY_3 + 2194407427 + name 1_716_KEY_4 + 2194407428 + name 1_716_KEY_5 + 2194407429 + name 1_716_KEY_6 + 2194407430 + name 1_716_KEY_7 + 2194407431 + name 1_716_KEY_8 + 2194407432 + name 1_716_KEY_9 + 2194407433 + name 1_716_KEY_POWER + 2194407434 + name 1_716_KEY_CH_UP + 2194407439 + name 1_716_KEY_CH_DOWN + 2194407440 + name 1_716_KEY_MUTE + 2194407441 + name 1_716_KEY_VOL_DOWN + 2194407442 + name 1_716_KEY_VOL_UP + 2194407444 + name 1_716_KEY_MNSELECT + 2194407447 + name 1_716_KEY_EXIT + 2194407448 + name 1_716_KEY_GUIDE + 2194407451 + name 1_716_KEY_FAV + 2194407453 + name 1_716_KEY_MENU + 2194407471 + name 1_716_KEY_MUP + 2194407472 + name 1_716_KEY_MDOWN + 2194407473 + name 1_716_KEY_MLEFT + 2194407474 + name 1_716_KEY_MRIGHT + 2194407475 + name 1_716_KEY_DSubtitle + 2194407492 + name 1_717_KEY_0 + 2194472960 + name 1_717_KEY_1 + 2194472961 + name 1_717_KEY_2 + 2194472962 + name 1_717_KEY_3 + 2194472963 + name 1_717_KEY_4 + 2194472964 + name 1_717_KEY_5 + 2194472965 + name 1_717_KEY_6 + 2194472966 + name 1_717_KEY_7 + 2194472967 + name 1_717_KEY_8 + 2194472968 + name 1_717_KEY_9 + 2194472969 + name 1_717_KEY_POWER + 2194472970 + name 1_717_TWO_DIGITS + 2194472973 + name 1_717_KEY_CH_UP + 2194472975 + name 1_717_KEY_CH_DOWN + 2194472976 + name 1_717_KEY_MUTE + 2194472977 + name 1_717_KEY_VOL_DOWN + 2194472978 + name 1_717_KEY_VOL_UP + 2194472980 + name 1_717_KEY_EXIT + 2194472984 + name 1_717_KEY_BLUE + 2194472995 + name 1_717_KEY_GREEN + 2194472996 + name 1_717_KEY_RED + 2194472997 + name 1_717_KEY_YELLOW + 2194472998 + name 1_717_KEY_AV + 2194473001 + name 1_717_KEY_MENU + 2194473007 + name 1_717_KEY_MUP + 2194473008 + name 1_717_KEY_MDOWN + 2194473009 + name 1_717_KEY_MLEFT + 2194473010 + name 1_717_KEY_MRIGHT + 2194473011 + name 1_717_KEY_On + 2194473037 + name 1_718_KEY_0 + 2194538496 + name 1_718_KEY_1 + 2194538497 + name 1_718_KEY_2 + 2194538498 + name 1_718_KEY_3 + 2194538499 + name 1_718_KEY_4 + 2194538500 + name 1_718_KEY_5 + 2194538501 + name 1_718_KEY_6 + 2194538502 + name 1_718_KEY_7 + 2194538503 + name 1_718_KEY_8 + 2194538504 + name 1_718_KEY_9 + 2194538505 + name 1_718_KEY_POWER + 2194538506 + name 1_718_TWO_DIGITS + 2194538509 + name 1_718_KEY_CH_UP + 2194538511 + name 1_718_KEY_CH_DOWN + 2194538512 + name 1_718_KEY_MUTE + 2194538513 + name 1_718_KEY_VOL_DOWN + 2194538514 + name 1_718_KEY_VOL_UP + 2194538516 + name 1_718_KEY_EXIT + 2194538520 + name 1_718_KEY_BLUE + 2194538531 + name 1_718_KEY_GREEN + 2194538532 + name 1_718_KEY_RED + 2194538533 + name 1_718_KEY_YELLOW + 2194538534 + name 1_718_KEY_AV + 2194538537 + name 1_718_KEY_MENU + 2194538543 + name 1_718_KEY_MUP + 2194538544 + name 1_718_KEY_MDOWN + 2194538545 + name 1_718_KEY_MLEFT + 2194538546 + name 1_718_KEY_MRIGHT + 2194538547 + name 1_718_KEY_On + 2194538573 + name 1_718_KEY_Off + 2194538574 + name 1_719_KEY_0 + 2194604032 + name 1_719_KEY_1 + 2194604033 + name 1_719_KEY_2 + 2194604034 + name 1_719_KEY_3 + 2194604035 + name 1_719_KEY_4 + 2194604036 + name 1_719_KEY_5 + 2194604037 + name 1_719_KEY_6 + 2194604038 + name 1_719_KEY_7 + 2194604039 + name 1_719_KEY_8 + 2194604040 + name 1_719_KEY_9 + 2194604041 + name 1_719_KEY_POWER + 2194604042 + name 1_719_TWO_DIGITS + 2194604045 + name 1_719_KEY_CH_UP + 2194604047 + name 1_719_KEY_CH_DOWN + 2194604048 + name 1_719_KEY_MUTE + 2194604049 + name 1_719_KEY_VOL_DOWN + 2194604050 + name 1_719_KEY_VOL_UP + 2194604052 + name 1_719_KEY_EXIT + 2194604056 + name 1_719_KEY_BLUE + 2194604067 + name 1_719_KEY_GREEN + 2194604068 + name 1_719_KEY_RED + 2194604069 + name 1_719_KEY_YELLOW + 2194604070 + name 1_719_KEY_AV + 2194604073 + name 1_719_KEY_MENU + 2194604079 + name 1_719_KEY_MUP + 2194604080 + name 1_719_KEY_MDOWN + 2194604081 + name 1_719_KEY_MLEFT + 2194604082 + name 1_719_KEY_MRIGHT + 2194604083 + name 1_719_KEY_On + 2194604109 + name 1_719_KEY_Off + 2194604110 + name 1_720_KEY_0 + 2194669568 + name 1_720_KEY_1 + 2194669569 + name 1_720_KEY_2 + 2194669570 + name 1_720_KEY_3 + 2194669571 + name 1_720_KEY_4 + 2194669572 + name 1_720_KEY_5 + 2194669573 + name 1_720_KEY_6 + 2194669574 + name 1_720_KEY_7 + 2194669575 + name 1_720_KEY_8 + 2194669576 + name 1_720_KEY_9 + 2194669577 + name 1_720_KEY_POWER + 2194669578 + name 1_720_TWO_DIGITS + 2194669581 + name 1_720_KEY_CH_UP + 2194669583 + name 1_720_KEY_CH_DOWN + 2194669584 + name 1_720_KEY_MUTE + 2194669585 + name 1_720_KEY_VOL_DOWN + 2194669586 + name 1_720_KEY_VOL_UP + 2194669588 + name 1_720_KEY_EXIT + 2194669592 + name 1_720_KEY_BLUE + 2194669603 + name 1_720_KEY_GREEN + 2194669604 + name 1_720_KEY_RED + 2194669605 + name 1_720_KEY_YELLOW + 2194669606 + name 1_720_KEY_AV + 2194669609 + name 1_720_KEY_MENU + 2194669615 + name 1_720_KEY_MUP + 2194669616 + name 1_720_KEY_MDOWN + 2194669617 + name 1_720_KEY_MLEFT + 2194669618 + name 1_720_KEY_MRIGHT + 2194669619 + name 1_720_KEY_On + 2194669645 + name 1_720_KEY_Off + 2194669646 + name 1_721_KEY_0 + 2194735104 + name 1_721_KEY_1 + 2194735105 + name 1_721_KEY_2 + 2194735106 + name 1_721_KEY_3 + 2194735107 + name 1_721_KEY_4 + 2194735108 + name 1_721_KEY_5 + 2194735109 + name 1_721_KEY_6 + 2194735110 + name 1_721_KEY_7 + 2194735111 + name 1_721_KEY_8 + 2194735112 + name 1_721_KEY_9 + 2194735113 + name 1_721_KEY_POWER + 2194735114 + name 1_721_TWO_DIGITS + 2194735117 + name 1_721_KEY_CH_UP + 2194735119 + name 1_721_KEY_CH_DOWN + 2194735120 + name 1_721_KEY_MUTE + 2194735121 + name 1_721_KEY_VOL_DOWN + 2194735122 + name 1_721_KEY_VOL_UP + 2194735124 + name 1_721_KEY_EXIT + 2194735128 + name 1_721_KEY_BLUE + 2194735139 + name 1_721_KEY_GREEN + 2194735140 + name 1_721_KEY_RED + 2194735141 + name 1_721_KEY_YELLOW + 2194735142 + name 1_721_KEY_AV + 2194735145 + name 1_721_KEY_MENU + 2194735151 + name 1_721_KEY_MUP + 2194735152 + name 1_721_KEY_MDOWN + 2194735153 + name 1_721_KEY_MLEFT + 2194735154 + name 1_721_KEY_MRIGHT + 2194735155 + name 1_721_KEY_On + 2194735181 + name 1_721_KEY_Off + 2194735182 + name 1_722_KEY_0 + 2194800640 + name 1_722_KEY_1 + 2194800641 + name 1_722_KEY_2 + 2194800642 + name 1_722_KEY_3 + 2194800643 + name 1_722_KEY_4 + 2194800644 + name 1_722_KEY_5 + 2194800645 + name 1_722_KEY_6 + 2194800646 + name 1_722_KEY_7 + 2194800647 + name 1_722_KEY_8 + 2194800648 + name 1_722_KEY_9 + 2194800649 + name 1_722_KEY_POWER + 2194800650 + name 1_722_TWO_DIGITS + 2194800653 + name 1_722_KEY_CH_UP + 2194800655 + name 1_722_KEY_CH_DOWN + 2194800656 + name 1_722_KEY_MUTE + 2194800657 + name 1_722_KEY_VOL_DOWN + 2194800658 + name 1_722_KEY_VOL_UP + 2194800660 + name 1_722_KEY_EXIT + 2194800664 + name 1_722_KEY_BLUE + 2194800675 + name 1_722_KEY_GREEN + 2194800676 + name 1_722_KEY_RED + 2194800677 + name 1_722_KEY_YELLOW + 2194800678 + name 1_722_KEY_AV + 2194800681 + name 1_722_KEY_MENU + 2194800687 + name 1_722_KEY_MUP + 2194800688 + name 1_722_KEY_MDOWN + 2194800689 + name 1_722_KEY_MLEFT + 2194800690 + name 1_722_KEY_MRIGHT + 2194800691 + name 1_722_KEY_On + 2194800717 + name 1_722_KEY_Off + 2194800718 + name 1_723_KEY_0 + 2194866176 + name 1_723_KEY_1 + 2194866177 + name 1_723_KEY_2 + 2194866178 + name 1_723_KEY_3 + 2194866179 + name 1_723_KEY_4 + 2194866180 + name 1_723_KEY_5 + 2194866181 + name 1_723_KEY_6 + 2194866182 + name 1_723_KEY_7 + 2194866183 + name 1_723_KEY_8 + 2194866184 + name 1_723_KEY_9 + 2194866185 + name 1_723_KEY_POWER + 2194866186 + name 1_723_TWO_DIGITS + 2194866189 + name 1_723_KEY_CH_UP + 2194866191 + name 1_723_KEY_CH_DOWN + 2194866192 + name 1_723_KEY_EXIT + 2194866200 + name 1_723_KEY_BLUE + 2194866211 + name 1_723_KEY_GREEN + 2194866212 + name 1_723_KEY_RED + 2194866213 + name 1_723_KEY_YELLOW + 2194866214 + name 1_723_KEY_AV + 2194866217 + name 1_723_KEY_MENU + 2194866223 + name 1_723_KEY_MUP + 2194866224 + name 1_723_KEY_MDOWN + 2194866225 + name 1_723_KEY_MLEFT + 2194866226 + name 1_723_KEY_MRIGHT + 2194866227 + name 1_723_KEY_On + 2194866253 + name 1_723_KEY_Off + 2194866254 + name 1_724_KEY_0 + 2194931712 + name 1_724_KEY_1 + 2194931713 + name 1_724_KEY_2 + 2194931714 + name 1_724_KEY_3 + 2194931715 + name 1_724_KEY_4 + 2194931716 + name 1_724_KEY_5 + 2194931717 + name 1_724_KEY_6 + 2194931718 + name 1_724_KEY_7 + 2194931719 + name 1_724_KEY_8 + 2194931720 + name 1_724_KEY_9 + 2194931721 + name 1_724_KEY_POWER + 2194931722 + name 1_724_TWO_DIGITS + 2194931725 + name 1_724_KEY_CH_UP + 2194931727 + name 1_724_KEY_CH_DOWN + 2194931728 + name 1_724_KEY_MUTE + 2194931729 + name 1_724_KEY_VOL_DOWN + 2194931730 + name 1_724_KEY_VOL_UP + 2194931732 + name 1_724_KEY_EXIT + 2194931736 + name 1_724_KEY_BLUE + 2194931747 + name 1_724_KEY_GREEN + 2194931748 + name 1_724_KEY_RED + 2194931749 + name 1_724_KEY_YELLOW + 2194931750 + name 1_724_KEY_AV + 2194931753 + name 1_724_KEY_MENU + 2194931759 + name 1_724_KEY_MUP + 2194931760 + name 1_724_KEY_MDOWN + 2194931761 + name 1_724_KEY_MLEFT + 2194931762 + name 1_724_KEY_MRIGHT + 2194931763 + name 1_724_KEY_On + 2194931789 + name 1_724_KEY_Off + 2194931790 + name 1_725_KEY_0 + 2194997248 + name 1_725_KEY_1 + 2194997249 + name 1_725_KEY_2 + 2194997250 + name 1_725_KEY_3 + 2194997251 + name 1_725_KEY_4 + 2194997252 + name 1_725_KEY_5 + 2194997253 + name 1_725_KEY_6 + 2194997254 + name 1_725_KEY_7 + 2194997255 + name 1_725_KEY_8 + 2194997256 + name 1_725_KEY_9 + 2194997257 + name 1_725_KEY_POWER + 2194997258 + name 1_725_TWO_DIGITS + 2194997261 + name 1_725_KEY_CH_UP + 2194997263 + name 1_725_KEY_CH_DOWN + 2194997264 + name 1_725_KEY_MUTE + 2194997265 + name 1_725_KEY_VOL_DOWN + 2194997266 + name 1_725_KEY_VOL_UP + 2194997268 + name 1_725_KEY_EXIT + 2194997272 + name 1_725_KEY_BLUE + 2194997283 + name 1_725_KEY_GREEN + 2194997284 + name 1_725_KEY_RED + 2194997285 + name 1_725_KEY_YELLOW + 2194997286 + name 1_725_KEY_AV + 2194997289 + name 1_725_KEY_MENU + 2194997295 + name 1_725_KEY_MUP + 2194997296 + name 1_725_KEY_MDOWN + 2194997297 + name 1_725_KEY_MLEFT + 2194997298 + name 1_725_KEY_MRIGHT + 2194997299 + name 1_725_KEY_On + 2194997325 + name 1_725_KEY_Off + 2194997326 + name 1_726_KEY_0 + 2195062784 + name 1_726_KEY_1 + 2195062785 + name 1_726_KEY_2 + 2195062786 + name 1_726_KEY_3 + 2195062787 + name 1_726_KEY_4 + 2195062788 + name 1_726_KEY_5 + 2195062789 + name 1_726_KEY_6 + 2195062790 + name 1_726_KEY_7 + 2195062791 + name 1_726_KEY_8 + 2195062792 + name 1_726_KEY_9 + 2195062793 + name 1_726_KEY_POWER + 2195062794 + name 1_726_TWO_DIGITS + 2195062797 + name 1_726_KEY_CH_UP + 2195062799 + name 1_726_KEY_CH_DOWN + 2195062800 + name 1_726_KEY_MUTE + 2195062801 + name 1_726_KEY_VOL_DOWN + 2195062802 + name 1_726_KEY_VOL_UP + 2195062804 + name 1_726_KEY_EXIT + 2195062808 + name 1_726_KEY_BLUE + 2195062819 + name 1_726_KEY_GREEN + 2195062820 + name 1_726_KEY_RED + 2195062821 + name 1_726_KEY_YELLOW + 2195062822 + name 1_726_KEY_AV + 2195062825 + name 1_726_KEY_MENU + 2195062831 + name 1_726_KEY_MUP + 2195062832 + name 1_726_KEY_MDOWN + 2195062833 + name 1_726_KEY_MLEFT + 2195062834 + name 1_726_KEY_MRIGHT + 2195062835 + name 1_726_KEY_On + 2195062861 + name 1_726_KEY_Off + 2195062862 + name 1_727_KEY_0 + 2195128320 + name 1_727_KEY_1 + 2195128321 + name 1_727_KEY_2 + 2195128322 + name 1_727_KEY_3 + 2195128323 + name 1_727_KEY_4 + 2195128324 + name 1_727_KEY_5 + 2195128325 + name 1_727_KEY_6 + 2195128326 + name 1_727_KEY_7 + 2195128327 + name 1_727_KEY_8 + 2195128328 + name 1_727_KEY_9 + 2195128329 + name 1_727_KEY_POWER + 2195128330 + name 1_727_TWO_DIGITS + 2195128333 + name 1_727_KEY_CH_UP + 2195128335 + name 1_727_KEY_CH_DOWN + 2195128336 + name 1_727_KEY_MUTE + 2195128337 + name 1_727_KEY_VOL_DOWN + 2195128338 + name 1_727_KEY_VOL_UP + 2195128340 + name 1_727_KEY_EXIT + 2195128344 + name 1_727_KEY_BLUE + 2195128355 + name 1_727_KEY_GREEN + 2195128356 + name 1_727_KEY_RED + 2195128357 + name 1_727_KEY_YELLOW + 2195128358 + name 1_727_KEY_AV + 2195128361 + name 1_727_KEY_MENU + 2195128367 + name 1_727_KEY_MUP + 2195128368 + name 1_727_KEY_MDOWN + 2195128369 + name 1_727_KEY_MLEFT + 2195128370 + name 1_727_KEY_MRIGHT + 2195128371 + name 1_727_KEY_On + 2195128397 + name 1_727_KEY_Off + 2195128398 + name 1_728_KEY_0 + 2195193856 + name 1_728_KEY_1 + 2195193857 + name 1_728_KEY_2 + 2195193858 + name 1_728_KEY_3 + 2195193859 + name 1_728_KEY_4 + 2195193860 + name 1_728_KEY_5 + 2195193861 + name 1_728_KEY_6 + 2195193862 + name 1_728_KEY_7 + 2195193863 + name 1_728_KEY_8 + 2195193864 + name 1_728_KEY_9 + 2195193865 + name 1_728_KEY_POWER + 2195193866 + name 1_728_TWO_DIGITS + 2195193869 + name 1_728_KEY_CH_UP + 2195193871 + name 1_728_KEY_CH_DOWN + 2195193872 + name 1_728_KEY_MUTE + 2195193873 + name 1_728_KEY_VOL_DOWN + 2195193874 + name 1_728_KEY_VOL_UP + 2195193876 + name 1_728_KEY_EXIT + 2195193880 + name 1_728_KEY_BLUE + 2195193891 + name 1_728_KEY_GREEN + 2195193892 + name 1_728_KEY_RED + 2195193893 + name 1_728_KEY_YELLOW + 2195193894 + name 1_728_KEY_AV + 2195193897 + name 1_728_KEY_MENU + 2195193903 + name 1_728_KEY_MUP + 2195193904 + name 1_728_KEY_MDOWN + 2195193905 + name 1_728_KEY_MLEFT + 2195193906 + name 1_728_KEY_MRIGHT + 2195193907 + name 1_728_KEY_On + 2195193933 + name 1_728_KEY_Off + 2195193934 + name 1_729_KEY_0 + 2195259392 + name 1_729_KEY_1 + 2195259393 + name 1_729_KEY_2 + 2195259394 + name 1_729_KEY_3 + 2195259395 + name 1_729_KEY_4 + 2195259396 + name 1_729_KEY_5 + 2195259397 + name 1_729_KEY_6 + 2195259398 + name 1_729_KEY_7 + 2195259399 + name 1_729_KEY_8 + 2195259400 + name 1_729_KEY_9 + 2195259401 + name 1_729_KEY_POWER + 2195259402 + name 1_729_TWO_DIGITS + 2195259405 + name 1_729_KEY_CH_UP + 2195259407 + name 1_729_KEY_CH_DOWN + 2195259408 + name 1_729_KEY_MUTE + 2195259409 + name 1_729_KEY_VOL_DOWN + 2195259410 + name 1_729_KEY_VOL_UP + 2195259412 + name 1_729_KEY_EXIT + 2195259416 + name 1_729_KEY_BLUE + 2195259427 + name 1_729_KEY_GREEN + 2195259428 + name 1_729_KEY_RED + 2195259429 + name 1_729_KEY_YELLOW + 2195259430 + name 1_729_KEY_AV + 2195259433 + name 1_729_KEY_MENU + 2195259439 + name 1_729_KEY_MUP + 2195259440 + name 1_729_KEY_MDOWN + 2195259441 + name 1_729_KEY_MLEFT + 2195259442 + name 1_729_KEY_MRIGHT + 2195259443 + name 1_729_KEY_On + 2195259469 + name 1_729_KEY_Off + 2195259470 + name 1_730_KEY_0 + 2195324928 + name 1_730_KEY_1 + 2195324929 + name 1_730_KEY_2 + 2195324930 + name 1_730_KEY_3 + 2195324931 + name 1_730_KEY_4 + 2195324932 + name 1_730_KEY_5 + 2195324933 + name 1_730_KEY_6 + 2195324934 + name 1_730_KEY_7 + 2195324935 + name 1_730_KEY_8 + 2195324936 + name 1_730_KEY_9 + 2195324937 + name 1_730_KEY_POWER + 2195324938 + name 1_730_TWO_DIGITS + 2195324941 + name 1_730_KEY_CH_UP + 2195324943 + name 1_730_KEY_CH_DOWN + 2195324944 + name 1_730_KEY_MUTE + 2195324945 + name 1_730_KEY_VOL_DOWN + 2195324946 + name 1_730_KEY_VOL_UP + 2195324948 + name 1_730_KEY_EXIT + 2195324952 + name 1_730_KEY_BLUE + 2195324963 + name 1_730_KEY_GREEN + 2195324964 + name 1_730_KEY_RED + 2195324965 + name 1_730_KEY_YELLOW + 2195324966 + name 1_730_KEY_AV + 2195324969 + name 1_730_KEY_MENU + 2195324975 + name 1_730_KEY_MUP + 2195324976 + name 1_730_KEY_MDOWN + 2195324977 + name 1_730_KEY_MLEFT + 2195324978 + name 1_730_KEY_MRIGHT + 2195324979 + name 1_730_KEY_On + 2195325005 + name 1_730_KEY_Off + 2195325006 + name 1_731_KEY_0 + 2195390464 + name 1_731_KEY_1 + 2195390465 + name 1_731_KEY_2 + 2195390466 + name 1_731_KEY_3 + 2195390467 + name 1_731_KEY_4 + 2195390468 + name 1_731_KEY_5 + 2195390469 + name 1_731_KEY_6 + 2195390470 + name 1_731_KEY_7 + 2195390471 + name 1_731_KEY_8 + 2195390472 + name 1_731_KEY_9 + 2195390473 + name 1_731_KEY_POWER + 2195390474 + name 1_731_TWO_DIGITS + 2195390477 + name 1_731_KEY_CH_UP + 2195390479 + name 1_731_KEY_CH_DOWN + 2195390480 + name 1_731_KEY_MUTE + 2195390481 + name 1_731_KEY_VOL_DOWN + 2195390482 + name 1_731_KEY_VOL_UP + 2195390484 + name 1_731_KEY_EXIT + 2195390488 + name 1_731_KEY_BLUE + 2195390499 + name 1_731_KEY_GREEN + 2195390500 + name 1_731_KEY_RED + 2195390501 + name 1_731_KEY_YELLOW + 2195390502 + name 1_731_KEY_AV + 2195390505 + name 1_731_KEY_MENU + 2195390511 + name 1_731_KEY_MUP + 2195390512 + name 1_731_KEY_MDOWN + 2195390513 + name 1_731_KEY_MLEFT + 2195390514 + name 1_731_KEY_MRIGHT + 2195390515 + name 1_731_KEY_On + 2195390541 + name 1_731_KEY_Off + 2195390542 + end raw_codes +end remote + +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 +# gap 200000 + 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 \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/hauppauge-blaster/lircrc-haupgrey-g3.txt b/abs/core/system-templates/templates/remotes/hauppauge-blaster/lircrc-haupgrey-g3.txt new file mode 100755 index 0000000..f12e4eb --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-blaster/lircrc-haupgrey-g3.txt @@ -0,0 +1,586 @@ +# ~/.mythtv/lircrc +# +# MythTV native LIRC config file for +# the new grey Hauppauge remote +# +# Here we have the jump point commands. They only work if you have +# defined function keys for these jump points. For me the most +# common command is the menu of recordings, so I put that on "videos" +# even though that's counter-intuitive + +begin +prog = mythtv +button = TV +repeat = 3 +config = F5 +end + +begin +prog = mythtv +button = Videos +repeat = 3 +config = F2 +end + +# Not yet defined +begin +prog = mythtv +button = Music +repeat = 3 +config = Up +end + +# Given another function for now, I don't use mythgallery +begin +prog = mythtv +button = Pictures +repeat = 3 +config = F +end + +begin +prog = mythtv +button = Guide +repeat = 3 +config = O +end + +# Radio brings up menu + +begin +prog = mythtv +button = Go +repeat = 3 +config = I +end + +begin +prog = mythtv +button = Radio +repeat = 3 +config = F4 +end + +begin +prog = mythtv +button = Up +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = Down +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = Left +repeat = 3 +config = Left +end + +begin +prog = mythtv +button = Right +repeat = 3 +config = Right +end + +# Channel Up +begin +prog = mythtv +button = Ch+ +repeat = 3 +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Ch- +repeat = 3 +config = Down +end + +# OKSelect +begin +prog = mythtv +button = OK +repeat = 3 +config = Space +end + +# Play +begin +prog = mythtv +button = Play +repeat = 3 +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +repeat = 3 +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = Back/Exit +repeat = 3 +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Power +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +repeat = 3 +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +repeat = 3 +config = | +end + +# Fast forward +begin +prog = mythtv +button = Rewind +repeat = 3 +config = < +end + +# Rewind +begin +prog = mythtv +button = Forward +repeat = 3 +config = > +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = SkipForward +repeat = 3 +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = Replay/SkipBackward +repeat = 3 +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +repeat = 3 +config = R +end + +# Delete +begin +prog = mythtv +button = Red +repeat = 3 +config = D +end + +# Decrease play speed +begin +prog = mythtv +button = Green +repeat = 3 +config = U +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Menu/i +repeat = 3 +config = M +end + +# Scroll up +begin +prog = mythtv +button = Vol+ +repeat = 3 +config = F11 +end + +# Scroll down +begin +prog = mythtv +button = Vol- +repeat = 3 +config = F10 +end + +# Bring up OSD info +begin +prog = mythtv +button = Go +repeat = 3 +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = Prev.Ch +repeat = 3 +config = H +end + +# double speed watch +begin +prog = mythtv +button = Yellow +repeat = 3 +config = J +end + +# change tuners +begin +prog = mythtv +button = Asterix +repeat = 3 +config = Y +end + +# Bring up Time stretch +begin +prog = mythtv +button = Blue +repeat = 3 +config = A +end + +# Numbers 0-9 +begin +prog = mythtv +button = 0 +repeat = 3 +config = 0 +end + +begin +prog = mythtv +button = 1 +repeat = 3 +config = 1 +end + +begin +prog = mythtv +button = 2 +repeat = 3 +config = 2 +end + +begin +prog = mythtv +button = 3 +repeat = 3 +config = 3 +end + +begin +prog = mythtv +button = 4 +repeat = 3 +config = 4 +end + +begin +prog = mythtv +button = 5 +repeat = 3 +config = 5 +end + +begin +prog = mythtv +button = 6 +repeat = 3 +config = 6 +end + +begin +prog = mythtv +button = 7 +repeat = 3 +config = 7 +end + +begin +prog = mythtv +button = 8 +repeat = 3 +config = 8 +end + +begin +prog = mythtv +button = 9 +repeat = 3 +config = 9 +end + +# MPlayer lirc setup +# Show OSD +begin +prog = mplayer +button = Menu/i +repeat = 3 +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +repeat = 3 +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = Play +repeat = 3 +config = seek +1 +end + +# Stop playback and exit +begin +prog = mplayer +button = Stop +repeat = 3 +config = quit +end + +# Mute +begin +prog = mplayer +button = Mute +repeat = 3 +config = mute +end + +begin +prog = mplayer +button = Left +repeat = 3 +config = seek -10 +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Rewind +repeat = 3 +config = seek -10 +end + +begin +prog = mplayer +button = Right +repeat = 3 +config = seek +30 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = Forward +repeat = 3 +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Back/Exit +repeat = 3 +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = SkipForward +repeat = 3 +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = Replay/SkipBackward +repeat = 3 +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +repeat = 3 +config = vo_fullscreen +end + +# Xine lirc setup +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 +repeat = 3 +config = Quit +end + +begin +prog = xine +button = Pause +repeat = 3 +config = Pause +end + +begin +prog = xine +button = Up +repeat = 3 +config = EventUp +end + +begin +prog = xine +button = Down +repeat = 3 +config = EventDown +end + +begin +prog = xine +button = Left +repeat = 3 +config = EventLeft +end + +begin +prog = xine +button = Right +repeat = 3 +config = EventRight +end + +begin +prog = xine +button = OK +repeat = 3 +config = EventSelect +end + +begin +prog = xine +button = Forward +repeat = 3 +config = SpeedFaster +end + +begin +prog = xine +button = Rewind +repeat = 3 +config = SpeedSlower +end + +begin +prog = xine +button = Vol+ +repeat = 3 +config = Volume+ +end + +begin +prog = xine +button = Vol- +repeat = 3 +config = Volume- +end + +begin +prog = xine +button = Mute +repeat = 3 +config = Mute +end + +begin +prog = xine +button = Menu/i +repeat = 3 +config = RootMenu +end + +begin +prog = xine +button = SkipForward +repeat = 3 +config = EventNext +end + +begin +prog = xine +button = Replay/SkipBackward +repeat = 3 +config = EventPrior +end + +begin +prog = xine +button = Go +repeat = 3 +config = OSDStreamInfos +end + + diff --git a/abs/core/system-templates/templates/remotes/hauppauge-blaster/preview.jpg b/abs/core/system-templates/templates/remotes/hauppauge-blaster/preview.jpg new file mode 100644 index 0000000..a40a1e8 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/hauppauge-blaster/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/hauppauge-grey/lircd-haupgrey.conf b/abs/core/system-templates/templates/remotes/hauppauge-grey/lircd-haupgrey.conf new file mode 100644 index 0000000..c0849ef --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-grey/lircd-haupgrey.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/system-templates/templates/remotes/hauppauge-grey/lircrc-haupgrey.txt b/abs/core/system-templates/templates/remotes/hauppauge-grey/lircrc-haupgrey.txt new file mode 100644 index 0000000..2f1e514 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-grey/lircrc-haupgrey.txt @@ -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/system-templates/templates/remotes/hauppauge-grey/preview.jpg b/abs/core/system-templates/templates/remotes/hauppauge-grey/preview.jpg new file mode 100644 index 0000000..19acba3 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/hauppauge-grey/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/hauppauge-silver/lircd-haupgrey-g3.conf b/abs/core/system-templates/templates/remotes/hauppauge-silver/lircd-haupgrey-g3.conf new file mode 100644 index 0000000..7269fc2 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-silver/lircd-haupgrey-g3.conf @@ -0,0 +1,64 @@ +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 0x000000000000178D + Volume-UP 0x0000000000001790 + Volume-DOWN 0x0000000000001791 + Prev-Channel 0x0000000000001792 + Mute 0x000000000000178F + Channel-UP 0x00000000000017A0 + Channel-Down 0x00000000000017A1 + Record 0x00000000000017B7 + Stop 0x00000000000017B6 + Rewind 0x00000000000017B2 + Play 0x00000000000017B5 + Forward 0x00000000000017B4 + Previous 0x00000000000017A4 + Pause 0x00000000000017B0 + Next 0x000000000000179E + 1 0x0000000000001781 + 2 0x0000000000001782 + 3 0x0000000000001783 + 4 0x0000000000001784 + 5 0x0000000000001785 + 6 0x0000000000001786 + 7 0x0000000000001787 + 8 0x0000000000001788 + 9 0x0000000000001789 + star 0x000000000000178A + 0 0x0000000000001780 + hash 0x000000000000178E + red 0x000000000000178B + green 0x00000000000017AE + yellow 0x00000000000017B8 + blue 0x00000000000017A9 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/hauppauge-silver/lircrc-haupgrey-g3.txt b/abs/core/system-templates/templates/remotes/hauppauge-silver/lircrc-haupgrey-g3.txt new file mode 100644 index 0000000..3868261 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/hauppauge-silver/lircrc-haupgrey-g3.txt @@ -0,0 +1,762 @@ +# MythTV LIRC config file for the gray Hauppauge remote +# Sticker on the inside of battery compartment +# A415-HPG +# 1004 032400 +# +# /home/mythtv/.mythtv/lircrc +# +# +### RESET THE MYTH BOX or REBOOT IT +# 1 click is reset front end, 2 clicks is reboot +# +begin + prog = irexec + button = Power + config = /home/mythtv/scripts/mypower.sh & +end +# +### MYTHTV SETTINGS FOR IT'S CONTROL +# +# Program Guide +begin + remote = grayHauppauge + prog = mythtv + button = green + config = F2 +end +# +# TV Recording Playback +begin + remote = grayHauppauge + prog = mythtv + button = Videos + config = F3 +end +# +# Live TV +begin + remote = grayHauppauge + prog = mythtv + button = TV + config = F4 +end +# +# MythWeather +begin + remote = grayHauppauge + prog = mythtv + button = Go + config = F7 +end +# +# MythGame +begin + remote = grayHauppauge + prog = mythtv + button = Green + config = F5 +end +# +# MythMusic +begin + remote = grayHauppauge + prog = mythtv + button = Music + config = F6 +end +# +# Previous Channel +begin + remote = grayHauppauge + prog = mythtv + button = Prev-Channel + config = H +end +# +# Channel Up +begin + remote = grayHauppauge + prog = mythtv + button = Channel-UP + repeat = 3 + config = Up +end + +# Channel Down +begin + prog = mythtv + button = Channel-DOWN + repeat = 3 + config = Down +end + +# OK/Select +begin + prog = mythtv + button = OK + config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = Back-Exit +config = Esc +end + +# Power Off/Exit +# begin +# prog = mythtv +# button = Power +# config = Esc +# end + +# Red means stop! +#begin +#prog = mythtv +#button = red +#config = Esc +#end + +# Pause +begin +prog = mythtv +button = Pause +repeat = 3 +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +repeat = 3 +config = F9 +end + +begin +prog = mythtv +button = UP +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = RIGHT +repeat = 3 +config = Right +end + +begin +prog = mythtv +button = DOWN +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = LEFT +repeat = 3 +config = Left +end + + + + +# Fast forward (while viewing) +begin +prog = mythtv +button = Forward +repeat = 3 +config = > +end + +# Rewind (while viewing) +begin +prog = mythtv +button = Rewind +repeat = 3 +config = < +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = Next +repeat = 3 +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = Previous +repeat = 3 +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +repeat = 3 +config = R +end + +# Delete +begin +prog = mythtv +button = red +repeat = 3 +config = D +end + +# OSD browse + +begin +prog = mythtv +button = Menu +repeat = 3 +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Guide +repeat = 3 +config = M +end + +# Volume-Up +begin +prog = mythtv +button = Volume-UP +repeat = 3 +config = ] +end + +# Volume-Down +begin +prog = mythtv +button = Volume-DOWN +repeat = 3 +config = [ +end + +# Bring up OSD info +begin +prog = mythtv +button = Go +repeat = 3 +config = I +end + +# Change display aspect ratio +#begin +#prog = mythtv +#button = FULL +#repeat = 3 +#config = W +#end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = yellow +repeat = 3 +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = blue +repeat = 3 +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +repeat = 3 +config = 0 +end + +begin +prog = mythtv +button = 1 +repeat = 3 +config = 1 +end + +begin +prog = mythtv +button = 2 +repeat = 3 +config = 2 +end + +begin +prog = mythtv +button = 3 +repeat = 3 +config = 3 +end + +begin +prog = mythtv +button = 4 +repeat = 3 +config = 4 +end + +begin +prog = mythtv +button = 5 +repeat = 3 +config = 5 +end + +begin +prog = mythtv +button = 6 +repeat = 3 +config = 6 +end + +begin +prog = mythtv +button = 7 +repeat = 3 +config = 7 +end + +begin +prog = mythtv +button = 8 +repeat = 3 +config = 8 +end + +begin +prog = mythtv +button = 9 +repeat = 3 +config = 9 +end + +# +### MPlayer lirc setup +# +# Show OSD +begin +prog = mplayer +button = Menu +repeat = 3 +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +repeat = 3 +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = Play +repeat = 3 +config = seek +1 +end + +# Stop playback and exit +begin +prog = mplayer +button = Stop +repeat = 3 +config = quit +end + +# Mute +begin +prog = mplayer +button = Mute +repeat = 3 +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Rewind +repeat = 3 +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = Forward +repeat = 3 +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Back-Exit +repeat = 3 +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = Next +repeat = 3 +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = Previous +repeat = 3 +config = seek -600 +end + +# Toggle full-screen +#begin +#prog = mplayer +#button = FULL +#repeat = 3 +#config = vo_fullscreen +#end +# +# +### XINE CONFIGURATION +# +## +# xine key bindings. +# Automatically generated by xine-ui version 0.99.2. +## + +# start playback +begin + button = Play + prog = xine + repeat = 3 + config = Play +end + +# playback pause toggle +begin + button = Pause + prog = xine + repeat = 3 + config = Pause +end + +# stop playback +begin + button = Stop + prog = xine + repeat = 3 + config = Stop +end + +# take a snapshot +begin + button = Record + prog = xine + repeat = 3 + config = Snapshot +end + +# eject the current medium +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = Eject +end + +# set position to -60 seconds in current stream +begin + button = Previous + prog = xine + repeat = 3 + config = SeekRelative-60 +end + +# set position to +60 seconds in current stream +begin + button = Next + prog = xine + repeat = 3 + config = SeekRelative+60 +end + +# set position to -30 seconds in current stream +begin + button = Rewind + prog = xine + repeat = 3 + config = SeekRelative-30 +end + +# set position to +30 seconds in current stream +begin + button = Forward + prog = xine + repeat = 3 + config = SeekRelative+30 +end + +# set position to +7 and -7 seconds in current stream +begin + button = 1 + prog = xine + repeat = 3 + config = SeekRelative-7 +end + +begin + button = 2 + prog = xine + repeat = 3 + config = SeekRelative+7 +end + +begin + button = 4 + prog = xine + repeat = 3 + config = SetPosition40% +end + +begin + button = 5 + prog = xine + repeat = 3 + config = SetPosition70% +end + +begin + button = UP + prog = xine + repeat = 3 + config = SpeedFaster +end + +begin + button = DOWN + prog = xine + repeat = 3 + config = SpeedSlower +end + +begin + button = OK + prog = xine + repeat = 3 + config = SpeedReset +end + +# increment audio volume +begin + button = Volume-UP + prog = xine + repeat = 3 + config = Volume+ +end + +# decrement audio volume +begin + button = Volume-DOWN + prog = xine + repeat = 3 + config = Volume- +end + +# audio muting toggle +begin + button = Mute + prog = xine + repeat = 3 + config = Mute +end + +# set video output window to 100% +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = Window100 +end + +# set video output window to 200% +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = Window200 +end + +# zoom in +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = ZoomIn +end + +# zoom out +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = ZoomOut +end + +# fullscreen toggle +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = ToggleFullscreen +end + +# Xinerama fullscreen toggle +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = ToggleXineramaFullscr +end + +# jump to Title Menu +begin + button = Go + prog = xine + repeat = 3 + config = TitleMenu +end + +# jump to Root Menu +begin + remote = xxxxx + button = xxxxx + prog = xine + repeat = 3 + config = RootMenu +end + +# menu navigate up +begin + button = xxxx + prog = xine + repeat = 3 + config = EventUp +end + +# menu navigate down +begin + button = xxxx + prog = xine + repeat = 3 + config = EventDown +end + +# menu navigate left +begin + button = LEFT + prog = xine + repeat = 3 + config = EventLeft +end + +# menu navigate right +begin + button = RIGHT + prog = xine + repeat = 3 + config = EventRight +end + +# visibility toggle of stream info window +begin + button = Guide + prog = xine + repeat = 3 + config = StreamInfosShow +end + +# display stream information using OSD +begin + button = Menu + prog = xine + repeat = 3 + config = OSDStreamInfos +end + + + +# increase brightness by 10 +begin + button = Channel-UP + prog = xine + repeat = 3 + config = BrightnessControl+ +end + +# decrease brightness by 10 +begin + button = Channel-DOWN + prog = xine + repeat = 3 + config = BrightnessControl- +end + +# quit the program +begin + button = Back-Exit + prog = xine + repeat = 3 + config = Quit +end + +## +# End of xine key bindings. +## diff --git a/abs/core/system-templates/templates/remotes/hauppauge-silver/preview.jpg b/abs/core/system-templates/templates/remotes/hauppauge-silver/preview.jpg new file mode 100644 index 0000000..a40a1e8 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/hauppauge-silver/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/i2c.id b/abs/core/system-templates/templates/remotes/i2c.id new file mode 100644 index 0000000..175bba2 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/i2c.id @@ -0,0 +1,14 @@ +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 + + +0070:0009|Hauppauge|WinTV PVR 150|hauppauge-grey +0070:0801|Hauppauge|WinTV PVR 150|hauppauge-grey +0070:0807|Hauppauge|WinTV PVR 150|hauppauge-grey +0070:8003|Hauppauge|WinTV PVR 150|hauppauge-grey +0070:8801|Hauppauge|WinTV PVR 150|hauppauge-grey +0070:c801|Hauppauge|WinTV PVR 150|hauppauge-grey +0270:0801|Hauppauge|WinTV PVR 120|hauppauge-grey \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/imon-pad/lircd.conf b/abs/core/system-templates/templates/remotes/imon-pad/lircd.conf new file mode 100644 index 0000000..97bbf4c --- /dev/null +++ b/abs/core/system-templates/templates/remotes/imon-pad/lircd.conf @@ -0,0 +1,88 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.0(imon_pad) on Mon Jan 23 20:22:11 2006 +# +# contributed by M.Brakemeier +# +# brand: SoundGraph +# model no. of remote control: iMON-PAD +# devices being controlled by this remote: +# + +begin remote + + name iMON-PAD + bits 32 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 235965 + min_repeat 1 + toggle_bit 0 + + begin codes + AppExit 0x288195B7 + Power 0x289115B7 + Record 0x298115B7 + Play 0x2A8115B7 + Open 0x29B1d5B7 + Rewind 0x2A8195B7 + Pause 0x2A9115B7 + FastForward 0x2B8115B7 + PrevChapter 0x2B9115B7 + Stop 0x2B9715B7 + NextChapter 0x298195B7 + Esc 0x2BB715B7 + Eject 0x299395B7 + AppLauncher 0x29B715B7 + MultiMon 0x2AB195B7 + TaskSwitcher 0x2A9395B7 + Mute 0x2B9595B7 + Vol+ 0x28A395B7 + Vol- 0x28A595B7 + Ch+ 0x289395B7 + Ch- 0x288795B7 + Timer 0x2B8395B7 + 1 0x28B595B7 + 2 0x2BB195B7 + 3 0x28B195B7 + 4 0x2A8595B7 + 5 0x299595B7 + 6 0x2AA595B7 + 7 0x2B9395B7 + 8 0x2A8515B7 + 9 0x2AA115B7 + 0 0x2BA595B7 + ShiftTab 0x28B515B7 + Tab 0x29A115B7 + Red 0x2B8515B7 # MyMovie + Green 0x299195B7 # MyMusic + Blue 0x2BA115B7 # MyPhoto + Yellow 0x28A515B7 # MyTV + Bookmark 0x288515B7 + Thumbnail 0x2AB715B7 + AspectRatio 0x29A595B7 + FullScreen 0x2AA395B7 + Purple 0x29A295B7 # MyDVD + Menu 0x2BA385B7 + Caption 0x298595B7 + Language 0x2B8595B7 + MouseKeyboard 0x299115B7 + SelectSpace 0x2A9315B7 + MouseMenu 0x28B715B7 + MouseRightClick 0x688481B7 + Enter 0x28A195B7 + MouseLeftClick 0x688301B7 + WindowsKey 0x2B8195B7 + Backspace 0x28A115B7 + Mouse_N 0x690281B7 + Mouse_S 0x688291B7 + Mouse_W 0x6A8281B7 + Mouse_E 0x688A81B7 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/imon-pad/lircrc b/abs/core/system-templates/templates/remotes/imon-pad/lircrc new file mode 100644 index 0000000..3ad34d8 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/imon-pad/lircrc @@ -0,0 +1,240 @@ +################################### +# lircrc config as used by Stev391 June 2007 +# Not all of the buttons are configured yet, only the commonly used buttons +################################### + +# Escape +begin + prog = mythtv + button = AppExit + config = Esc + repeat = 3 +end + +# Escape Key 2 +begin + prog = mythtv + button = Esc + config = Esc +end + +# Channel Up +begin + prog = mythtv + button = Ch+ + config = Up + repeat = 3 +end + +# Channel Down +begin + prog = mythtv + button = Ch- + config = Down + repeat = 3 +end + +# Volume Up +begin + prog = mythtv + button = Vol+ + repeat = 3 + config = Right +end + +# Volume Down +begin + prog = mythtv + button = Vol- + repeat = 3 + config = Left +end + +# Enter/Return +begin + prog = mythtv + button = Enter + config = Return +end + +# Menu Button +begin + prog = mythtv + button = Menu + config = M +end + +# Mute +begin + prog = mythtv + button = Mute + config = F9 +end + +# Rewind +begin + prog = mythtv + button = Rewind + config = PgUp +end + +# Fast Forward +begin + prog = mythtv + button = FastForward + config = PgDown +end + +# Play +begin + prog = mythtv + button = Play + config = P +end + +# Pause +begin + prog = mythtv + button = Pause + config = P +end + +# Record +begin + prog = mythtv + button = Record + config = R +end + +# Stop +begin + prog = mythtv + button = Stop + config = O +end + +# Previous Track/Chapter +begin + prog = mythtv + button = PrevChapter + config = Home +end + +# Next Track/Chapter +begin + prog = mythtv + button = NextChapter + config = End +end + +# Jump Point to MythVideo +begin + prog = mythtv + button = MyMovie + config = F12 +end + +# Jump Point to MythMusic +begin + prog = mythtv + button = MyMusic + config = F11 +end + +# Jump Point to LiveTV +begin + prog = mythtv + button = MyTV + config = F10 +end + +# Jump Point to Main Menu +begin + prog = mythtv + button = Multimon + config = F2 +end + +# Jump Point to Myth Gallery +begin + prog = mythtv + button = MyPhoto + config = F3 +end + +# Jump Point to Play DVD +begin + prog = mythtv + button = MyDVD + config = F4 +end + +# Display Information +begin + prog = mythtv + button = Caption + config = I +end + +############################## +# Numbers +############################## +begin + prog = mythtv + button = 0 + config = 0 +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 diff --git a/abs/core/system-templates/templates/remotes/imon-pad/preview.jpg b/abs/core/system-templates/templates/remotes/imon-pad/preview.jpg new file mode 100644 index 0000000..a2e46a3 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/imon-pad/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon b/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon new file mode 100644 index 0000000..6875f3f --- /dev/null +++ b/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon @@ -0,0 +1,79 @@ +# +# contributed by Venky Raju (dev@venky.ws) +# +# brand: Soundgraph +# model no. of remote control: iMON MultiMedian +# +# devices being controlled by this remote: HTPC +# + +begin remote + + name IMON_MultiMedian + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 130 + + header 9000 4500 + one 625 1625 + zero 625 375 + ptrail 625 + repeat 8875 2125 + pre_data_bits 16 + pre_data 0x609F + gap 100000 + toggle_bit 0 + + frequency 38000 + duty_cycle 33 + + begin codes + App.Exit 0x00000000000000FF + Power 0x000000000000807F + 1 0x00000000000040BF + 2 0x000000000000C03F + 3 0x00000000000020DF + 4 0x000000000000A05F + 5 0x000000000000609F + 6 0x000000000000E01F + 7 0x00000000000010EF + 8 0x000000000000906F + 9 0x00000000000050AF + 0 0x000000000000D02F + Windows 0x00000000000030CF + Menu 0x000000000000B04F + App.Launcher 0x000000000000708F + Function 0x000000000000F00F + Task.Switcher 0x00000000000008F7 + Back 0x0000000000008877 + Select 0x00000000000048B7 + Eject 0x0000000000009867 + Delete 0x00000000000018E7 + Up 0x000000000000C837 + Right 0x0000000000006897 + Down 0x000000000000E817 + Left 0x00000000000028D7 + Enter 0x000000000000A857 + Vol- 0x00000000000058A7 + Vol+ 0x000000000000D827 + Mute 0x00000000000038C7 + Play 0x000000000000B847 + Pause 0x0000000000007887 + Prev 0x000000000000F807 + Next 0x00000000000002FD + Rew 0x000000000000827D + Fwd 0x00000000000042BD + Stop 0x000000000000C23D + Open 0x00000000000022DD + Rec 0x000000000000A25D + Bookmark 0x000000000000629D + Thumbnail 0x000000000000E21D + Aspect 0x00000000000012ED + DVD.Menu 0x000000000000926D + DVD.Caption 0x00000000000052AD + DVD.Language 0x000000000000D22D + Full.Screen 0x00000000000032CD + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-pad b/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-pad new file mode 100644 index 0000000..e8b8818 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-pad @@ -0,0 +1,84 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.7.1pre2(imon) on Tue Mar 1 23:15:44 2005 +# +# contributed by Venky Raju +# +# brand: iMON-New +# model no. of remote control: iMON-PAD +# devices being controlled by this remote: +# + +begin remote + + name iMON-PAD + bits 32 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + gap 235965 + min_repeat 1 + toggle_bit 0 + + + begin codes + AppExit 0x288195B7 + Record 0x298115B7 + Play 0x2A8115B7 + SlowMotion 0x29B195B7 + Rewind 0x2A8195B7 + Pause 0x2A9115B7 + FastForward 0x2B8115B7 + PrevChapter 0x2B9115B7 + Stop 0x2B9715B7 + NextChapter 0x298195B7 + Esc 0x2BB715B7 + Eject 0x299395B7 + AppLauncher 0x29B715B7 + MultiMon 0x2AB195B7 + TaskSwitcher 0x2A9395B7 + Mute 0x2B9595B7 + Vol+ 0x28A395B7 + Vol- 0x28A595B7 + Ch+ 0x289395B7 + Ch- 0x288795B7 + Timer 0x2B8395B7 + 1 0x28B595B7 + 2 0x2BB195B7 + 3 0x28B195B7 + 4 0x2A8595B7 + 5 0x299595B7 + 6 0x2AA595B7 + 7 0x2B9395B7 + 8 0x2A8515B7 + 9 0x2AA115B7 + 0 0x2BA595B7 + ShiftTab 0x28B515B7 + Tab 0x29A115B7 + MyMovie 0x2B8515B7 + MyMusic 0x299195B7 + MyPhoto 0x2BA115B7 + MyTV 0x28A515B7 + Bookmark 0x288515B7 + Thumbnail 0x2AB715B7 + AspectRatio 0x29A595B7 + FullScreen 0x2AA395B7 + MyDVD 0x29A295B7 + Menu 0x2BA385B7 + Caption 0x298595B7 + Language 0x2B8595B7 + MouseKeyboard 0x299115B7 + SelectSpace 0x2A9315B7 + MouseMenu 0x28B715B7 + MouseRightClick 0x688481B7 + Enter 0x28A195B7 + MouseLeftClick 0x688301B7 + WindowsKey 0x2B8195B7 + Backspace 0x28A115B7 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-rsc b/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-rsc new file mode 100644 index 0000000..cf6d2fc --- /dev/null +++ b/abs/core/system-templates/templates/remotes/imon/lircd.conf.imon-rsc @@ -0,0 +1,109 @@ +# +# contributed by Venky Raju (dev@venky.ws) +# +# brand: Soundgraph +# model no. of remote control: iMON RSC +# +# devices being controlled by this remote: HTPC +# +# Credit: Changwoo Ryu +# +begin remote + + name IMON_RSC + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 40 + aeps 130 + + header 9000 4500 + one 625 1625 + zero 625 375 + ptrail 625 + repeat 8875 2125 + pre_data_bits 16 + pre_data 0x0108 + + gap 100000 + + begin codes + App.Exit 0x00000000000008F7 + Power 0x000000000000F40B + ScreenSaver 0x00000000000052AD + Timer 0x000000000000926D + 1 0x0000000000002AD5 + 2 0x000000000000AA55 + 3 0x0000000000006A95 + 4 0x000000000000EA15 + 5 0x0000000000001AE5 + 6 0x0000000000009A65 + 7 0x0000000000005AA5 + 8 0x000000000000DA25 + 9 0x0000000000003AC5 + 0 0x000000000000BA45 + Desktop 0x000000000000817E + Max/Res 0x00000000000041BE + Esc 0x00000000000012ED + Windows 0x000000000000D22D + Menu 0x000000000000C13E + App.Launcher 0x000000000000A25D + Function 0x00000000000021DE + Task.Switcher 0x000000000000629D + Backspace 0x000000000000A15E + Mouse/Keyboard 0x000000000000619E + Space 0x000000000000E11E + Shift.Tab 0x0000000000007887 + Enter 0x00000000000019E6 + Tab 0x000000000000F807 + L.Click 0x000000000000d827 + DragNDrop 0x0000000000006897 + R.Click 0x000000000000b847 + Mute 0x00000000000011ee + Vol- 0x0000000000007a85 + Vol+ 0x000000000000fa05 + Play 0x00000000000032cd + Pause 0x000000000000b24d + Open 0x000000000000f20d + Prev 0x0000000000000af5 + Next 0x0000000000008a75 + Stop 0x000000000000728d + Rew 0x0000000000004ab5 + F.Fwd 0x000000000000ca35 + Full.Screen 0x000000000000916e + end codes + +end remote + +begin remote + + name IMON_RSC_STICK + bits 4 + flags SPACE_ENC + eps 40 + aeps 130 + + header 2125 1875 + one 625 1625 + zero 625 375 + ptrail 625 + + begin codes + STICK_N 0x0 + STICK_S 0x1 + STICK_E 0x2 + STICK_W 0x3 + STICK_NE 0x4 + STICK_SW 0x5 + STICK_SE 0x6 + STICK_NW 0x7 + STICK_NNE 0x8 + STICK_SSW 0x9 + STICK_SEE 0xa + STICK_NWW 0xb + STICK_NEE 0xc + STICK_SWW 0xd + STICK_SSE 0xe + STICK_NNW 0xf + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/imon/preview.jpg b/abs/core/system-templates/templates/remotes/imon/preview.jpg new file mode 100644 index 0000000..0829118 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/imon/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/mceusb/lircd.conf.mceusb b/abs/core/system-templates/templates/remotes/mceusb/lircd.conf.mceusb new file mode 100644 index 0000000..b1c26b6 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/mceusb/lircd.conf.mceusb @@ -0,0 +1,163 @@ +# +# RC-6 config file +# +# source: http://home.hccnet.nl/m.majoor/projects__remote_control.htm +# http://home.hccnet.nl/m.majoor/pronto.pdf +# +# used by: Philips +# +######### +# +# Philips Media Center Edition remote control +# For use with the USB MCE ir receiver +# +# Dan Conti dconti|acm.wwu.edu +# +# Updated with codes for MCE 2005 Remote additional buttons +# *, #, Teletext, Red, Green, Yellow & Blue Buttons +# Note: TV power button transmits no code until programmed. +# Updated 12th September 2005 +# Graham Auld - mce|graham.auld.me.uk +# +# Radio, Print, RecTV are only available on the HP Media Center remote control +# + +begin remote + + name mceusb + bits 16 + flags RC6|CONST_LENGTH + eps 30 + aeps 100 + + header 2667 889 + one 444 444 + zero 444 444 + pre_data_bits 21 + pre_data 0x37FF0 + gap 105000 + toggle_bit 22 + rc6_mask 0x100000000 + + begin codes +#-------------------------------------------------------------b9 + Testb90 0x00007b90 + Testb91 0x00007b91 + Testb92 0x00007b92 + Testb93 0x00007b93 + Testb94 0x00007b94 + Testb95 0x00007b95 + Testb96 0x00007b96 + Testb97 0x00007b97 + Testb98 0x00007b98 + Testb99 0x00007b99 + TV????? 0x00007b9a + Messenger 0x00007b9b + Testb9c 0x00007b9c + Testb9d 0x00007b9d + Testb9e 0x00007b9e + Testb9f 0x00007b9f +#-------------------------------------------------------------ba + Testba0 0x00007ba0 + Blue 0x00007ba1 + Yellow 0x00007ba2 + Green 0x00007ba3 + Red 0x00007ba4 + Teletext 0x00007ba5 + Testba6 0x00007ba6 + Testba7 0x00007ba7 + Testba8 0x00007ba8 + Testba9 0x00007ba9 + Testbaa 0x00007baa + Testbab 0x00007bab + Testbac 0x00007bac + Testbad 0x00007bad + Testbae 0x00007bae + Radio 0x00007baf +#-------------------------------------------------------------bb + Testbb0 0x00007bb0 + Print 0x00007bb1 + Testbb2 0x00007bb2 + Testbb3 0x00007bb3 + Testbb4 0x00007bb4 + Videos 0x00007bb5 + Pictures 0x00007bb6 + RecordedTV 0x00007bb7 + Music 0x00007bb8 + TV 0x00007bb9 + Testbba 0x00007bba + Testbbb 0x00007bbb + Testbbc 0x00007bbc + Testbbd 0x00007bbd + Testbbe 0x00007bbe + Testbbf 0x00007bbf +#-------------------------------------------------------------- bc + Testbc0 0x00007bc0 + Testbc1 0x00007bc1 + Testbc2 0x00007bc2 + Testbc3 0x00007bc3 + Testbc4 0x00007bc4 + Testbc5 0x00007bc5 + Testbc6 0x00007bc6 + Testbc7 0x00007bc7 + Testbc8 0x00007bc8 + Testbc9 0x00007bc9 + Testbca 0x00007bca + Testbcb 0x00007bcb + Testbcc 0x00007bcc + Testbcd 0x00007bcd + Testbce 0x00007bce + Testbcf 0x00007bcf +#---------------------------------------------------------------bd + Testbd0 0x00007bd0 + Testbd1 0x00007bd1 + Testbd2 0x00007bd2 + Testbd3 0x00007bd3 + Testbd4 0x00007bd4 + Testbd5 0x00007bd5 + Testbd6 0x00007bd6 + Testbd7 0x00007bd7 + Testbd8 0x00007bd8 + Guide 0x00007bd9 + LiveTV 0x00007bda + DVDMenu 0x00007bdb + Back 0x00007bdc + OK 0x00007bdd + Right 0x00007bde + Left 0x00007bdf +#--------------------------------------------------------------be + Down 0x00007be0 + Up 0x00007be1 + Star 0x00007be2 + Hash 0x00007be3 + Replay 0x00007be4 + Skip 0x00007be5 + Stop 0x00007be6 + Pause 0x00007be7 + Record 0x00007be8 + Play 0x00007be9 + Rewind 0x00007bea + Forward 0x00007beb + ChannelDown 0x00007bec + ChannelUp 0x00007bed + VolumeDown 0x00007bee + VolumeUp 0x00007bef +#---------------------------------------------------------------bf + More 0x00007bf0 + Mute 0x00007bf1 + Start 0x00007bf2 + Power 0x00007bf3 + Enter 0x00007bf4 + Clear 0x00007bf5 + Nine 0x00007bf6 + Eight 0x00007bf7 + Seven 0x00007bf8 + Six 0x00007bf9 + Five 0x00007bfa + Four 0x00007bfb + Three 0x00007bfc + Two 0x00007bfd + One 0x00007bfe + Zero 0x00007bff + end codes +end remote diff --git a/abs/core/system-templates/templates/remotes/mceusb/lircrc-mceusb b/abs/core/system-templates/templates/remotes/mceusb/lircrc-mceusb new file mode 100644 index 0000000..a6a8c48 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/mceusb/lircrc-mceusb @@ -0,0 +1,877 @@ +# /home/mythtv/.mythtv/lircrc +# +# From Knoppmyth R5.5 - Copied by UniCav +# +# Media Center Edition Remote Control and +# Remote Control Keys on Media Center Keyboard +# +############################################################################## +# For use with the USB MCE ir receiver +# MythTV LIRC config file for the mceusb2 or lirc_mod_mce module + +# Info about lircrc statment +#begin +# prog = ... Program controlled, irxevent, irexec, mythtv, mplayer, +# xine, or others +# remote = ... mceusb, or what ever you happen to have or want to call it +# button = ... remote keys names from your lircd.conf file +# repeat = ... repeat = 2 is fast, repeat = 4 is slower +# delay = ... delay before repeat, 1 is short, 4 is longer +# config = ... output key presses to key bindings editor +# mode = ... +# flags = ... +#end + +# Test your new Lirc settings +# /etc/init.d/lirc restart To restart Lirc +# ctrl-alt-backspace To restart the frontend + +# Updated January 30th 2008 BAK +# for the Knoppmyth project + +################################### irexec ################################### +# the lirc irexec program must be running for this section + +# Will perform a complete shutdown +#begin +# prog = irexec +# button = Power +# config = /usr/bin/sudo halt +#end + +############################### Mythtv Section ############################### +# MythTV Key Binding Editor location +# Mythtv Menu >>Utilities / Setup >>Edit Keys +# Key Bindings can also be found in Myth Web + +# Record +begin + prog = mythtv + button = Record + config = R +end + +# Stop +begin + prog = mythtv + button = Stop + config = Esc +end + +# Pause +begin + prog = mythtv + button = Pause + config = P +end + +# Rewind (while viewing) +begin + prog = mythtv + button = Rewind + repeat = 0 + delay = 1 + config = < +end + +# Fast forward (while viewing) +begin + prog = mythtv + button = Forward + repeat = 0 + delay = 1 + config = > +end + +# Play +begin + prog = mythtv + button = Play + config = L +end + +# Skip backward (1 min default) +begin + prog = mythtv + button = Replay + repeat = 4 + delay = 4 + config = PgUp +end + +# Skip forward (1 min default) +begin + prog = mythtv + button = Skip + repeat = 4 + delay = 4 + config = PgDown +end + +#<><><><><><><><><><><> Mythtv Control <><><><> + +# Escape/Exit/Back +begin + prog = mythtv + button = Back + config = Esc +end + +# Bring up OSD info +begin + prog = mythtv + button = More + config = I +end + +begin + prog = mythtv + button = Left + repeat = 2 + delay = 4 + config = Left +end + +begin + prog = mythtv + button = Right + repeat = 2 + delay = 4 + config = Right +end + +begin + prog = mythtv + button = Up + repeat = 2 + delay = 4 + config = Up +end + +begin + prog = mythtv + button = Down + repeat = 2 + delay = 4 + config = Down +end + +# OK/Select +begin + prog = mythtv + button = OK + config = Return +end + +# The Start Button is really just a Menu key +begin + prog = mythtv + button = Start + config = M +end + +#<><><><><><><><><><><><><><><> + +# Volume-Up +begin + prog = mythtv + button = VolumeUp + repeat = 1 + config = ] +end + +# Volume-Down +begin + prog = mythtv + button = VolumeDown + repeat = 1 + config = [ +end + +# Mute +begin + prog = mythtv + button = Mute + config = | +end + +# Channel Up +begin + prog = mythtv + button = ChannelUp + repeat = 3 +# delay = 1 + config = Up +end + +# Channel Down +begin + prog = mythtv + button = ChannelDown + config = Down + repeat = 3 +# delay = 1 +end + +# Numbers 0-9 <><><><><><><><><><><> + +begin + prog = mythtv + button = One +# repeat = 2 + config = 1 +end + +begin + prog = mythtv + button = Two +# repeat = 2 + config = 2 +end + +begin + prog = mythtv + button = Three +# repeat = 2 + config = 3 +end + +begin + prog = mythtv + button = Four +# repeat = 2 + config = 4 +end + +begin + prog = mythtv + button = Five +# repeat = 2 + config = 5 +end + +begin + prog = mythtv + button = Six +# repeat = 2 + config = 6 +end + +begin + prog = mythtv + button = Seven +# repeat = 2 + config = 7 +end + +begin + prog = mythtv + button = Eight +# repeat = 2 + config = 8 +End + +begin + prog = mythtv + button = Nine +# repeat = 2 + config = 9 +end + +begin + prog = mythtv + button = Zero +# repeat = 2 + config = 0 +end + +#<><><><><><><><><><><><><><><><><><><><> +# Seek to previous commercial cut point +# or remove all cut points from the Editing Cutlist +begin + prog = mythtv + button = Star + config = Q +end + +# Seek to next commercial cut point +# or add commericial cut points to the Editing Cutlist +begin + prog = mythtv + button = Hash + config = Z +end + +# Brings up the delete box +begin + prog = mythtv + button = Clear + repeat = 0 + config = D +end + +# Toggle Editing Cutlist on or off +begin + prog = mythtv + button = Enter + repeat = 0 + config = E +end + +#<><><><><><><><> Additional Remote Commands <><><><><><><><> +# All buttons in this section must be configured using +# MythTV's KeyBindings JumpPoints editor. +# >>> Utilities/ Setup >>> Edit Keys >>> JumpPoints >>> + +# Listen to Myth Music +begin + prog = mythtv + button = Music + config = Ctrl+Alt+M +end + +# at this time connects to MythStreem +begin + prog = mythtv + button = Radio + config = Ctrl+Alt+S +end + +# View Pictures +begin + prog = mythtv + button = Pictures + config = Ctrl+Alt+P +end + +# Watch Videos +begin + prog = mythtv + button = Videos + config = Ctrl+Alt+V +end + +# Watch Live TV with Live TV Guide open +begin + prog = mythtv + button = TV + config = Ctrl+Alt+K +end + +# Watch Live TV +begin + prog = mythtv + button = LiveTV + config = Ctrl+Alt+L +end + +# Recorded TV Programs +begin + prog = mythtv + button = RecordedTV + config = Ctrl+Alt+R +end + +# Program Guide +begin + prog = mythtv + button = Guide + config = Ctrl+Alt+G +end + +# Play DVD +# There must be a disk in the DVD drive or it dos nothing +begin + prog = mythtv + button = DVDMenu + config = Ctrl+Alt+D +end + +# unused key +#begin +# prog = mythtv +# button = Messenger +# config = Ctrl+Alt+A +#end + +# <><><><><><><><><><><><><> Teletext Buttons <><><><><><><><><><><> + +# Teletext = Show interactive MHEG screens +begin + prog = mythtv + button = Teletext + config = F7 +end + +# Red = Red button for interactive screens. +begin + prog = mythtv + button = Red + config = F2 +end + +# Green = Green button for interactive screens. +begin + prog = mythtv + button = Green + config = F3 +end + +# Yellow = Yellow button for interactive screens. +begin + prog = mythtv + button = Yellow + config = F4 +end + +# Blue = Blue button for interactive screens. +begin + prog = mythtv + button = Blue + config = F5 +end + + +######################## MPlayer Section ##################################### +# "mplayer -input keylist" Prints all keys that can be bound to commands. +# "mplayer -input cmdlist" Prints all commands that can be bound to keys +# "man mplayer" Prints documentation for MPlayer + +# Show OSD +begin + prog = mplayer + button = OK + config = osd +end + +# Pause playback +begin + prog = mplayer + button = Pause + config = pause +end + +# If paused, resume playing +begin + prog = mplayer + button = Play + config = pause +end + +# Stop playback and exit +begin + prog = mplayer + button = Stop + config = quit +end + +# Volume-Up +begin + prog = mplayer + button = VolumeUp + repeat = 2 + config = volume +1 +end + +# Volume-Down +begin + prog = mplayer + button = VolumeDown + repeat = 2 + config = volume -1 +end + +# Mute +begin + prog = mplayer + button = Mute + config = mute +end + +# Seek back 60 seconds +begin + prog = mplayer + button = Left + repeat = 2 + config = seek -60 +end + +# Seek forward 60 seconds +begin + prog = mplayer + button = Right + repeat = 2 + config = seek +60 +end + +# Seek back 10 seconds +begin + prog = mplayer + button = Rewind + repeat = 2 + config = seek -10 +end + +# Seek forward 30 seconds +begin + prog = mplayer + button = Forward + repeat = 2 + config = seek +30 +end + +# Quit +begin + prog = mplayer + button = Back + config = quit +end + +# Seek forward 10 minutes +begin + prog = mplayer + button = Skip + repeat = 2 + config = seek +600 +end + +# Seek backward 10 minutes +begin + prog = mplayer + button = Replay + repeat = 2 + config = seek -600 +end + +# increase brightness +begin + prog = mplayer + button = ChannelUp + repeat = 2 + config = brightness +1 +end + +# decrease brightness +begin + prog = mplayer + button = ChannelDown + repeat = 2 + config = brightness -1 +end + +# Toggle full-screen +#begin +# prog = mplayer +# button = #??????????????????????????? +# repeat = 2 +# config = vo_fullscreen +#end + + +########################## XINE Section ###################################### +# +# For a compleate list of Xine's Lirc Keybindings use comand +# xine --keymap=lirc>.lircrc.xine.keybindings +# This creates a file in current directory called ".lircrc.xine.keybindings" +# Note: Xine has diferent sets of keybindings for lirc and keyboard + +## 01/14/2008 +# xine key bindings. +# Automatically generated by xine-ui version 0.99.6cvs. + +#<><><><><><><><><><> Xine Video Movement <><><><> + +# start playback +begin + prog = xine + button = Play + config = Play +end + +# playback pause toggle +begin + prog = xine + button = Pause + config = Pause +end + +# stop playback +begin + prog = xine + button = Stop + config = Stop +end + +# take a snapshot +#begin +# prog = xine +# button = Record +# repeat = 2 +# config = Snapshot +#end + +begin + prog = xine + button = Forward + repeat = 2 +# delay = 1 + config = SeekRelative+7 +end + +begin + prog = xine + button = Rewind + repeat = 2 +# delay = 1 + config = SeekRelative-7 +end + +# set position to -60 seconds in current stream +begin + prog = xine + button = Replay + repeat = 2 + delay = 1 + config = SeekRelative-60 +end + +# set position to +60 seconds in current stream +begin + prog = xine + button = Skip + repeat = 2 + delay = 1 + config = SeekRelative+60 +end +#<><><><><><><><><><><><>Xine Control<><><><><><><><><> + +# quit the program +begin + prog = xine + button = Back + config = Quit +end + +#display stream information using OSD +begin + prog = xine + button = More + config = OSDStreamInfos +end + +# menu navigate up +begin + prog = xine + button = Up + repeat = 2 + delay = 2 + config = EventUp +end + +# menu navigate down +begin + prog = xine + button = Down + repeat = 2 + delay = 2 + config = EventDown +end + +# menu navigate left +begin + prog = xine + button = Left + repeat = 2 + delay = 2 + config = EventLeft +end + +# menu navigate right +begin + prog = xine + button = Right + repeat = 2 + delay = 2 + config = EventRight +end + +# menu select +begin + prog = xine + button = OK + config = EventSelect +end + +# jump to Root Menu +begin + prog = xine + button = Start + config = Menu +end + +#<><><><><><><><><><><><><><><><><><><> Xine Volume / Channel <><><><><><><><> + +# increment audio volume +begin + prog = xine + button = VolumeUp + repeat = 1 + config = Volume+ +end + +# decrement audio volume +begin + prog = xine + button = VolumeDown + repeat = 1 + config = Volume- +end + +# audio muting toggle +begin + prog = xine + button = Mute + config = Mute +end + +# increase brightness by 10 +begin + prog = xine + button = ChannelUp + config = BrightnessControl+ +end + +# decrease brightness by 10 +begin + prog = xine + button = ChannelDown + config = BrightnessControl- +end + +#<><><><><><><><><><><><><><><><><> Xine Menu <><><><> + +# unused key +#begin +# prog = xine +# button = RecordedTV +# config = ???????? +#end + +# visibility toggle of stream info window +begin + prog = xine + button = Guide + config = SetupShow +end + +# unused key +#begin +# prog = xine +# button = LiveTV +# config = ???????? +#end + +# jump to Title Menu +begin + prog = xine + button = DVDMenu + config = RootMenu +end + +#<><><><><><><><><><><><><><><><><> Xine Stream Position <><><><> + +# set position in current stream + +begin + prog = xine + button = Zero + config = SetPosition0% +end + +begin + prog = xine + button = One + config = SetPosition10% +end + +begin + prog = xine + button = Two + config = SetPosition20% +end + +begin + prog = xine + button = Three + config = SetPosition30% +end + +begin + prog = xine + button = Four + config = SetPosition40% +end + +begin + prog = xine + button = Five + config = SetPosition50% +end + +begin + prog = xine + button = Six + config = SetPosition60% +end + +begin + prog = xine + button = Seven + config = SetPosition70% +end + +begin + prog = xine + button = Eight + config = SetPosition80% +end + +begin + prog = xine + button = Nine + config = SetPosition90% +end + +#<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> + +# decrement playback speed (slow motion slowdown) +begin + prog = xine + button = Star + config = SpeedSlower +end + +# increment playback speed (slow motion speedup) +begin + prog = xine + button = Hash + config = SpeedFaster +end + +# reset playback speed +begin + prog = xine + button = Clear + config = SpeedReset +end + +# set position to -30 seconds in current stream config = SeekRelative-30 +# set position to +30 seconds in current stream config = SeekRelative+30 +# eject the current medium config = Eject +# zoom in config = ZoomIn +# zoom out config = ZoomOut +# fullscreen toggle config = ToggleFullscreen + +## +# End of xine . +## diff --git a/abs/core/system-templates/templates/remotes/mceusb/preview.jpg b/abs/core/system-templates/templates/remotes/mceusb/preview.jpg new file mode 100644 index 0000000..0aa6a4a Binary files /dev/null and b/abs/core/system-templates/templates/remotes/mceusb/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/no_remote/preview.jpg b/abs/core/system-templates/templates/remotes/no_remote/preview.jpg new file mode 100644 index 0000000..1d887dd Binary files /dev/null and b/abs/core/system-templates/templates/remotes/no_remote/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/receiver_usb.id b/abs/core/system-templates/templates/remotes/receiver_usb.id new file mode 100644 index 0000000..f76442a --- /dev/null +++ b/abs/core/system-templates/templates/remotes/receiver_usb.id @@ -0,0 +1,35 @@ +0bc7:0005|snapstream_firefly| "X10 Wireless Technology, Inc." +0bc7:0008|SnapStream_Firefly| "SnapStream Firefly" +10c4:0003|CommandIR_Tranceiver| " CommandIR Transceiver" +0bc7:0004|ATI_Remote_Wonder| " ATI Remote Wonder" +0e9c:0000|streamzap| "Streamzap Remote" +0fe9:9010|dvico| "DVICO Remote:" +0fe9:db98|Dvico-Dual-Digital4-rev2| "Dvico Dual Digital4 rev2 0fe9/db98" +6253:0100|Twinhan_USB| "the VisionPlus is a Twinhan clone " +1509:9242|mceusb| "FIC eHome Infrared Transceiver 1509/9242" +1934:0602|mceusb| "Fintek eHome Infrared Transceiver 1934/0602" +147a:e015|mceusb| "Formosa eHome Infrared Transceiver 147a/e015" +147a:e017|mceusb| "Formosa aim / Trust MCE Infrared Receiver147a/e017" +147a:e018|mceusb| "Formosa Industrial Computing 147a/e018" +107b:3009|mceusb| "Gateway eHome Infrared Transceiver 107b/3009" +195d:7002|mceusb| "Itron ione Libra Q-11 195d/7002" +043e:9803|mceusb| "LG eHome Infrared Transceiver 043e/9803" +045e:00a0|mceusb| "Microsoft MCE Infrared Transceiver 045e/00a0" +03ee:2501|mceusb| "Mitsumi 03ee/2501" +0471:060c|mceusb| "Philips Infrared Transciever - HP branded 0471/060C" +0471:060d|mceusb| "Philips SRM5100 0471/060d" +0471:0815|mceusb| "Philips eHome Infrared Transciever 0471/0815" +2304:0225|mceusb| "Pinnacle Systems, Inc. 2304/0225" +179d:0010|mceusb| "Ricavision internal Infrared Transceiver 179d/0010" +1308:c001|mceusb| "Shuttle eHome Infrared Transceiver 1308/c001" +051c:c001|mceusb| "Shuttle2 eHome Infrared Transceiver 051c/c001" +0609:031d|mceusb| "SMK/Toshiba G83C0004D410 0609/031d" +0609:0322|mceusb| "SMK eHome Infrared Transceiver (Sony VAIO)0609/0322" +0609:0334|mceusb| "SKM bundled with Hauppauge PVR-150 0609/0334" +1460:9150|mceusb| "Tatung eHome Infrared Transceiver 1460/9150" +1784:0001|mceusb| "Topseed eHome Infrared Transceiver 1784/0001" +1784:0006|mceusb| "Topseed HP eHome Infrared Transceiver 1784/0006" +1784:0007|mceusb| "Topseed HP eHome Infrared Transceiver 1784/0007" +1784:0008|mceusb| "Topseed eHome Infrared Transceiver 1784/0008" +045e:006d|mceusb-old| "USB Microsoft IR Transceiver Driver 045e/006d" + diff --git a/abs/core/system-templates/templates/remotes/sigma_designs/lircd.conf.realmagic b/abs/core/system-templates/templates/remotes/sigma_designs/lircd.conf.realmagic new file mode 100644 index 0000000..8aa4ef5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/sigma_designs/lircd.conf.realmagic @@ -0,0 +1,83 @@ +# +# this config file was automatically generated +# using lirc-0.6.3 on Fri Nov 10 21:47:32 2000 +# +# contributed by Stefan Neuwirth & Andreas Lange +# +# brand: Sigma Designs +# model: REALmagic remote control +# www.realmagic.com/support.htm#remote +# supported devices: +# "For Hollywood Plus Version 1.4 or above Driver only" +# remote control for the Sigma Designs REALmagic Hollywood Plus DVD card +# receiver is connected to the serial port - it does not require the card +# +# The first byte always is 131. The second and third byte are equal. (CB) +# + +begin remote + + name REALmagic + bits 20 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 10 + pre_data 0x183 + gap 189974 + toggle_bit 0 + + + begin codes + 1 0x0000000000062D8B + 2 0x0000000000012C4B + 3 0x000000000001AC6B + 4 0x0000000000072DCB + 5 0x000000000000AC2B + 6 0x0000000000052D4B + +# Nicolas Vignal reported that this code is sent for his remote +# version (1.5). It should be no problem to just have two entries for +# "6" unless you want to send codes what won't work for this receiver +# anyway. + + 6 0x0000000000041505 + + 7 0x0000000000058561 + 8 0x0000000000044511 + 9 0x000000000004AD2B + 0 0x000000000004C531 + VOL+ 0x0000000000022C8B + VOL- 0x0000000000032CCB + MUTE 0x000000000006ADAB + L-R 0x0000000000052549 + VGA 0x0000000000054551 + ENTER 0x0000000000042509 + QUIT 0x0000000000058D63 + PRG 0x0000000000038CE3 + UP 0x0000000000078DE3 + DOWN 0x0000000000064D93 + LEFT 0x0000000000044D13 + RIGHT 0x000000000003ECFB + SELECT 0x0000000000024C93 + MENU 0x0000000000014C53 + TITLE 0x0000000000054D53 + OSD 0x0000000000034CD3 + LANG 0x0000000000074DD3 + ANGLE 0x000000000000CC33 + SUB 0x000000000004CD33 + PAUSE 0x000000000002CCB3 + STOP 0x000000000006CDB3 + PLAY 0x000000000001CC73 + EJECT 0x000000000005CD73 + REV 0x000000000003CCF3 + FF 0x000000000007CDF3 + PREV 0x0000000000002C0B + NEXT 0x0000000000042D0B + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/snapstream_firefly/lircd.snapstrm.conf b/abs/core/system-templates/templates/remotes/snapstream_firefly/lircd.snapstrm.conf new file mode 100644 index 0000000..288bb51 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/snapstream_firefly/lircd.snapstrm.conf @@ -0,0 +1,127 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.7.0(any) on Fri Mar 11 08:51:45 2005 +# +# contributed by +# +# brand: Snapstream Firefly Remote +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + +name Snapstream_Firefly +bits 40 +eps 30 +aeps 100 + +one 0 0 +zero 0 0 +gap 219964 +toggle_bit 0 + + +begin codes +MAXI 0x0000001481AC0000 +MAXI 0x00000014012C0000 +CLOSE 0x00000014D7020000 +CLOSE 0x0000001457820000 +1 0x00000014628D0000 +1 0x00000014E20D0000 +2 0x00000014E30E0000 +2 0x00000014638E0000 +3 0x00000014648F0000 +3 0x00000014E40F0000 +4 0x00000014E5100000 +4 0x0000001465900000 +5 0x0000001466910000 +5 0x00000014E6110000 +6 0x00000014E7120000 +6 0x0000001467920000 +7 0x0000001468930000 +7 0x00000014E8130000 +8 0x00000014E9140000 +8 0x0000001469940000 +9 0x000000146A950000 +9 0x00000014EA150000 +0 0x00000014EC170000 +0 0x000000146C970000 +BACK 0x000000146B960000 +BACK 0x00000014EB160000 +ENT 0x00000014ED180000 +ENT 0x000000146D980000 +VOL+ 0x000000145E890000 +VOL+ 0x00000014DE090000 +VOL- 0x000000145D880000 +VOL- 0x00000014DD080000 +MUTE 0x000000145F8A0000 +MUTE 0x00000014DF0A0000 +FIREFLY 0x0000001455800000 +FIREFLY 0x00000014D5000000 +CH+ 0x00000014608B0000 +CH+ 0x00000014E00B0000 +CH- 0x00000014618C0000 +CH- 0x00000014E10C0000 +INFO 0x0000001483AE0000 +INFO 0x00000014032E0000 +OPTION 0x0000001484AF0000 +OPTION 0x00000014042F0000 +UP 0x000000146F9A0000 +UP 0x00000014EF1A0000 +LEFT 0x00000014729D0000 +LEFT 0x00000014F21D0000 +DOWN 0x0000001477A20000 +DOWN 0x00000014F7220000 +RIGHT 0x00000014749F0000 +RIGHT 0x00000014F41F0000 +OK 0x00000014739E0000 +OK 0x00000014F31E0000 +MENU 0x00000014719C0000 +MENU 0x00000014F11C0000 +EXIT 0x0000001475A00000 +EXIT 0x00000014F5200000 +REC 0x00000014FC270000 +REC 0x000000147CA70000 +PLAY 0x00000014FA250000 +PLAY 0x000000147AA50000 +STOP 0x00000014FD280000 +STOP 0x000000147DA80000 +REW 0x00000014F9240000 +REW 0x0000001479A40000 +FWD 0x00000014FB260000 +FWD 0x000000147BA60000 +PREV 0x00000014002B0000 +PREV 0x0000001480AB0000 +PAUSE 0x00000014FE290000 +PAUSE 0x000000147EA90000 +NEXT 0x00000014FF2A0000 +NEXT 0x000000147FAA0000 +MUSIC 0x00000014DB060000 +MUSIC 0x000000145B860000 +PHOTOS 0x00000014DA050000 +PHOTOS 0x000000145A850000 +DVD 0x00000014D9040000 +DVD 0x0000001459840000 +TV 0x00000014D8030000 +TV 0x0000001458830000 +VIDEO 0x00000014DC070000 +VIDEO 0x000000145C870000 +HELP 0x00000014D6010000 +HELP 0x0000001456810000 +MOUSE 0x00000014022D0000 +MOUSE 0x0000001482AD0000 +A 0x00000014EE190000 +A 0x000000146E990000 +B 0x00000014F01B0000 +B 0x00000014709B0000 +C 0x00000014F6210000 +C 0x0000001476A10000 +D 0x00000014F8230000 +D 0x0000001478A30000 + +end codes + +end remote \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/snapstream_firefly/lircrc-snapstrm.txt b/abs/core/system-templates/templates/remotes/snapstream_firefly/lircrc-snapstrm.txt new file mode 100644 index 0000000..e918011 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/snapstream_firefly/lircrc-snapstrm.txt @@ -0,0 +1,590 @@ +# ~/.mythtv/lircrc +# +# MythTV native LIRC config file for +# the new grey Hauppauge remote +# +# Modified from Jarod Wilson's which came from Jeff Campbell's +# By Brad Templeton + + +# Here we have the jump point commands. They only work if you have +# defined function keys for these jump points. For me the most +# common command is the menu of recordings, so I put that on "videos" +# even though that's counter-intuitive + +begin +prog = mythtv +button = TV +repeat = 3 +config = F5 +end + +begin +prog = mythtv +button = Videos +repeat = 3 +config = F2 +end + +# Not yet defined +begin +prog = mythtv +button = Music +repeat = 3 +config = Up +end + +# Given another function for now, I don't use mythgallery +begin +prog = mythtv +button = Pictures +repeat = 3 +config = F +end + +begin +prog = mythtv +button = Guide +repeat = 3 +config = F3 +end + +# I stuck the "todo" list on here as Myth has no radio function +begin +prog = mythtv +button = Radio +repeat = 3 +config = F4 +end + +begin +prog = mythtv +button = UP +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = DOWN +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = LEFT +repeat = 3 +config = Left +end + +begin +prog = mythtv +button = RIGHT +repeat = 3 +config = Right +end + +# Channel Up +begin +prog = mythtv +button = Channel-UP +repeat = 3 +config = Up +end + +# Channel Down +begin +prog = mythtv +button = Channel-DOWN +repeat = 3 +config = Down +end + +# OK/Select +begin +prog = mythtv +button = Ok +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = I +end + +# Escape/Exit/Back +begin +prog = mythtv +button = BACK +config = Esc +end + +# Power Off/Exit +begin +prog = mythtv +button = POWER +config = Esc +end + + +# Pause +begin +prog = mythtv +button = Pause +repeat = 3 +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +repeat = 3 +config = | +end + +# Fast forward (30 sec default) +begin +prog = mythtv +button = Rewind +repeat = 3 +config = PgUp +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = Forward +repeat = 3 +config = PgDown +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = Next +repeat = 3 +config = End +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = Previous +repeat = 3 +config = Home +end + +# Record +begin +prog = mythtv +button = Record +repeat = 3 +config = R +end + +# Delete +begin +prog = mythtv +button = Red +repeat = 3 +config = D +end + +# Decrease play speed +begin +prog = mythtv +button = Green +repeat = 3 +config = J +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Menu +repeat = 3 +config = M +end + +# Scroll up +begin +prog = mythtv +button = Volume-UP +repeat = 3 +config = F11 +end + +# Scroll down +begin +prog = mythtv +button = Volume-DOWN +repeat = 3 +config = F10 +end + +# Bring up OSD info +begin +prog = mythtv +button = Go +repeat = 3 +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = Prev-Channel +repeat = 3 +config = W +end + +# double speed watch +begin +prog = mythtv +button = Yellow +repeat = 3 +config = J +end + +# change tuners +#begin +#prog = mythtv +#button = hash +#repeat = 3 +#config = Y +#end + +# Bring up Time stretch +begin +prog = mythtv +button = Blue +repeat = 3 +config = Y +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +repeat = 3 +config = 0 +end + +begin +prog = mythtv +button = 1 +repeat = 3 +config = 1 +end + +begin +prog = mythtv +button = 2 +repeat = 3 +config = 2 +end + +begin +prog = mythtv +button = 3 +repeat = 3 +config = 3 +end + +begin +prog = mythtv +button = 4 +repeat = 3 +config = 4 +end + +begin +prog = mythtv +button = 5 +repeat = 3 +config = 5 +end + +begin +prog = mythtv +button = 6 +repeat = 3 +config = 6 +end + +begin +prog = mythtv +button = 7 +repeat = 3 +config = 7 +end + +begin +prog = mythtv +button = 8 +repeat = 3 +config = 8 +end + +begin +prog = mythtv +button = 9 +repeat = 3 +config = 9 +end + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = MENU +repeat = 3 +config = osd +end + +# Pause playback +begin +prog = mplayer +button = PAUSE +repeat = 3 +config = pause +end + +# Skip ahead a minute if playing +# If paused, resume playing +begin +prog = mplayer +button = PLAY +repeat = 3 +config = seek +1 +end + +# Stop playback and exit +begin +prog = mplayer +button = Back +repeat = 3 +config = quit +end + +# Mute +begin +prog = mplayer +button = MUTE +repeat = 3 +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = LEFT +repeat = 3 +config = seek -7 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = RIGHT +repeat = 3 +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = EXIT +repeat = 3 +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = SKIP +repeat = 3 +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = REPLAY +repeat = 3 +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = FULL +repeat = 3 +config = vo_fullscreen +end + +### Xine lirc setup + +begin +prog = xine +button = PLAY +repeat = 3 +config = Play +end + +begin +prog = xine +button = STOP +repeat = 3 +config = Stop +end + +begin +prog = xine +button = OFF +repeat = 3 +config = Quit +end + +begin +prog = xine +button = PAUSE +repeat = 3 +config = Pause +end + +begin +prog = xine +button = CH+ +repeat = 3 +config = EventUp +end + +begin +prog = xine +button = CH- +repeat = 3 +config = EventDown +end + +begin +prog = xine +button = VOL- +repeat = 3 +config = EventLeft +end + +begin +prog = xine +button = VOL+ +repeat = 3 +config = EventRight +end + +begin +prog = xine +button = OK +repeat = 3 +config = EventSelect +end + +begin +prog = xine +button = BACK +repeat = 3 +config = Menu +end + +begin +prog = xine +button = FFW +repeat = 3 +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = REW +repeat = 3 +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = FULL +repeat = 3 +config = Volume+ +end + +begin +prog = xine +button = BLANK +repeat = 3 +config = Volume- +end + +begin +prog = xine +button = MUTE +repeat = 3 +config = Mute +end + +begin +prog = xine +button = MENU +repeat = 3 +config = RootMenu +end + +begin +prog = xine +button = SKIP +repeat = 3 +config = EventNext +end + +begin +prog = xine +button = REPLAY +repeat = 3 +config = EventPrior +end + +begin +prog = xine +button = GO +repeat = 3 +config = OSDStreamInfos +end + +begin +prog = xine +button = RED +repeat = 3 +config = Quit +end + +begin +prog = xine +button = RED +repeat = 3 +config = Quit +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/snapstream_firefly/preview.jpg b/abs/core/system-templates/templates/remotes/snapstream_firefly/preview.jpg new file mode 100644 index 0000000..a1fbc6e Binary files /dev/null and b/abs/core/system-templates/templates/remotes/snapstream_firefly/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/snapstream_mini/lircd-snapstreammini.conf b/abs/core/system-templates/templates/remotes/snapstream_mini/lircd-snapstreammini.conf new file mode 100755 index 0000000..edc97f5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/snapstream_mini/lircd-snapstreammini.conf @@ -0,0 +1,70 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Sat Sep 09 22:22:16 2006 +# +# contributed by David Salisbury +# +# brand: SnapStream +# model: Firefly-Mini +# supported devices: +# + +begin remote + + name SnapStream_Firefly-Mini + bits 16 + flags SPACE_ENC + eps 25 + aeps 100 + + header 9052 4475 + one 627 1623 + zero 627 496 + ptrail 627 + repeat 9081 2206 + pre_data_bits 16 + pre_data 0xFF + gap 39962 + toggle_bit 0 + + + begin codes + Close 0xC23D + Mute 0xE21D + 1 0xD22D + 2 0xF20D + 3 0xCA35 + 4 0xEA15 + 5 0xDA25 + 6 0xFA05 + 7 0x827D + 8 0xA25D + 9 0x926D + 0 0x8A75 + VolumeUp 0xB24D + VolumeDown 0x9A65 + ChannelUp 0xAA55 + ChannelDown 0x02FD + Up 0xBA45 + Down 0x0AF5 + Left 0x22DD + Right 0x32CD + OK 0x12ED + Last 0x2AD5 + Exit 0x1AE5 + Option 0x3AC5 + Firefly 0xC03F + Menu 0xE01F + Record 0xD02F + Guide 0xF00F + Stop 0xC837 + Previous 0xE817 + Play 0xD827 + Next 0xF807 + Rewind 0x40BF + Pause 0x609F + FastForward 0x50AF + end codes + +end remote + diff --git a/abs/core/system-templates/templates/remotes/snapstream_mini/lircrc-snapstreammini.txt b/abs/core/system-templates/templates/remotes/snapstream_mini/lircrc-snapstreammini.txt new file mode 100755 index 0000000..4c557a2 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/snapstream_mini/lircrc-snapstreammini.txt @@ -0,0 +1,474 @@ +# Channel Up +begin +prog = mythtv +button = ChannelUp +config = Up +end + +# Channel Down +begin +prog = mythtv +button = ChannelDown +config = Down +end + +# General Left +begin +prog = mythtv +button = Left +config = Left +end + +# General Right +begin +prog = mythtv +button = Right +config = Right +end + + # LiveTV browse up channel +begin +prog = mythtv +button = Up +config = Up +end + +# LiveTV browse down channel +begin +prog = mythtv +button = Down +config = Down +end + +# Volume Up +begin +prog = mythtv +button = VolumeUp +config = F11 +end + +# Volume Down +begin +prog = mythtv +button = VolumeDown +config = F10 +end + + # OK/Select +begin +prog = mythtv +button = OK +config = Space +end + +# Play +begin +prog = mythtv +button = Play +config = Return +end + +# Stop +begin +prog = mythtv +button = Stop +config = Esc +end + +# Escape/Exit/Back +begin +prog = mythtv +button = Exit +config = Esc +end + +# Power Off/Exit +begin +prog = irexec +button = Firefly +config = /usr/bin/mythpowerbutton.sh +end + +# Pause +begin +prog = mythtv +button = Pause +config = P +end + +# Mute +begin +prog = mythtv +button = Mute +config = | +end + +# Fast forward (10 sec default) +begin +prog = mythtv +button = FastForward +config = Right +end + +# Rewind (10 sec default) +begin +prog = mythtv +button = Rewind +config = Left +end + +# Skip forward (10 min default) +begin +prog = mythtv +button = Next +config = PgDown +end + +# Skip backward (10 min default) +begin +prog = mythtv +button = Previous +config = PgUp +end + +# Record +begin +prog = mythtv +button = Record +config = R +end + +# Delete +begin +prog = mythtv +button = +config = D +end + +# OSD browse +begin +prog = mythtv +button = +config = O +end + +# Display EPG while in live TV, +# View selected show while in EPG +begin +prog = mythtv +button = Guide +config = M +end + +# Bring up OSD info +begin +prog = mythtv +button = +config = I +end + +# Change display aspect ratio +begin +prog = mythtv +button = Option +config = W +end + +# Seek to previous commercial cut point +begin +prog = mythtv +button = +config = Q +end + +# Seek to next commercial cut point +begin +prog = mythtv +button = +config = Z +end + +# Numbers 0-9 + +begin +prog = mythtv +button = 0 +config = 0 +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 + +# Previous channel +begin +prog = mythtv +button = Last +config = H +end + +# Closed Captioning +begin +prog = mythtv +button = Close +config = T +end + +# Picture in Picture +begin +prog = mythtv +button = +config = V +end + +# Change channels on both cards +begin +prog = mythtv +button = +config = N +end + +# Clear cutpoints in cutlist +begin +prog = mythtv +button = +config = Q +end + + + + +### MPlayer lirc setup + +# Show OSD +begin +prog = mplayer +button = Guide +config = osd +end + +# Pause playback +begin +prog = mplayer +button = Pause +config = pause +end + +# Mute +begin +prog = mplayer +button = Mute +config = mute +end + +# Seek back 10 seconds +begin +prog = mplayer +button = Rewind +config = seek -10 +end + +# Seek forward 30 seconds +begin +prog = mplayer +button = FastForward +config = seek +30 +end + +# Quit +begin +prog = mplayer +button = Stop +config = quit +end + +# Seek forward 10 minutes +begin +prog = mplayer +button = Next +config = seek +600 +end + +# Seek backward 10 minutes +begin +prog = mplayer +button = Previous +config = seek -600 +end + +# Toggle full-screen +begin +prog = mplayer +button = +config = vo_fullscreen +end + + + +### Xine lirc setup + +begin +prog = xine +button = Play +config = Play +end + +begin +prog = xine +button = Stop +config = Stop +end + +begin +prog = xine +button = Exit +config = Quit +end + +begin +prog = xine +button = Pause +config = Pause +end + +begin +prog = xine +button = Up +config = EventUp +end + +begin +prog = xine +button = Down +config = EventDown +end + +begin +prog = xine +button = Left +config = EventLeft +end + +begin +prog = xine +button = Right +config = EventRight +end + +begin +prog = xine +button = OK +config = EventSelect +end + +begin +prog = xine +button = Guide +config = Menu +end + +begin +prog = xine +button = FastForward +#config = SpeedFaster +config = SeekRelative+60 +end + +begin +prog = xine +button = Rewind +#config = SpeedSlower +config = SeekRelative-60 +end + +begin +prog = xine +button = VolumeUp +config = Volume+ +end + +begin +prog = xine +button = VolumeDown +config = Volume- +end + +begin +prog = xine +button = Mute +config = Mute +end + +begin +prog = xine +button = Stop +config = RootMenu +end + +begin +prog = xine +button = Next +config = EventNext +end + +begin +prog = xine +button = Previous +config = EventPrior +end + +begin +prog = xine +button = Firefly +config = OSDStreamInfos +end \ No newline at end of file diff --git a/abs/core/system-templates/templates/remotes/snapstream_mini/preview.jpg b/abs/core/system-templates/templates/remotes/snapstream_mini/preview.jpg new file mode 100644 index 0000000..aa6d9d2 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/snapstream_mini/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/streamzap/lircd.conf.streamzap b/abs/core/system-templates/templates/remotes/streamzap/lircd.conf.streamzap new file mode 100644 index 0000000..8e453b9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/streamzap/lircd.conf.streamzap @@ -0,0 +1,69 @@ +# +# this config file was automatically generated +# using lirc-0.7.1-CVS(serial) on Fri Feb 4 23:20:56 2005 +# +# contributed by Christoph Bartelmus +# +# brand: Streamzap +# model no. of remote control: PC Remote +# devices being controlled by this remote: USB receiver +# + +begin remote + + name Streamzap_PC_Remote + bits 6 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 889 889 + zero 889 889 + plead 889 + pre_data_bits 8 + pre_data 0xA3 + gap 108344 + toggle_bit 2 + + + begin codes + 0 0x00 + 1 0x01 + 2 0x02 + 3 0x03 + 4 0x04 + 5 0x05 + 6 0x06 + 7 0x07 + 8 0x08 + 9 0x09 + POWER 0x0A + MUTE 0x0B + CH_UP 0x0C + VOL_UP 0x0D + CH_DOWN 0x0E + VOL_DOWN 0x0F + UP 0x10 + LEFT 0x11 + OK 0x12 + RIGHT 0x13 + DOWN 0x14 + MENU 0x15 + EXIT 0x16 + PLAY 0x17 + PAUSE 0x18 + STOP 0x19 + |<< 0x1A + >>| 0x1B + RECORD 0x1C + << 0x1D + >> 0x1E + RED 0x20 + GREEN 0x21 + YELLOW 0x22 + BLUE 0x23 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/streamzap/lircrc b/abs/core/system-templates/templates/remotes/streamzap/lircrc new file mode 100755 index 0000000..5e668b5 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/streamzap/lircrc @@ -0,0 +1,832 @@ +# StreamZap Remote +# 'config' must either be a literal key, e.g. 'config = l' or must +# refer to a defined key in MythTV, e.g. 'config = PLAY'a + + +#restart frontend +begin + remote = RS_LD + button = RESET + prog = irexec + repeat = 0 + config = /usr/bin/restartfrontend.sh +end + +#time +begin + remote = RS_LD + button = TIME + prog = irexec + repeat = 10 + config = /usr/bin/saytime.sh +end + +#screen blank +begin + remote = RS_LD + button = BLANK + prog = irexec + repeat = 0 +# config = ls + config = xset s activate ; xset s blank +end + + +#picture +begin +REMOTE = RS_LD +prog = mythtv +button = PICTURE +repeat = 4 +config = f +end + +#change aspect +begin +remote = RS_LD +prog = mythtv +button = ASPECT +# change aspect ratio +config = w +end + +#Browse +begin +remote = RS_LD +prog = mythtv +button = BROWSE +repeat = 8 +config = o +end + +# delete key +begin +remote = RS_LD +prog = mythtv +button = DELETE +repeat = 8 +config = d +end + + +#change card +begin +remote = RS_LD +prog = mythtv +button = CARD +repeat = 8 +config = y +end + +# Change TV card input +begin +remote = RS_LD +prog = mythtv +button = CARD_SOURCE +repeat = 4 +config = C +end + + + +# Cycle through channel history +begin +remote = Streamzap_PC_Remote +prog = mythtv +button = BLUE +repeat = 4 +config = H +end + +# Bring up OSD info +begin +remote = Streamzap_PC_Remote +prog = mythtv +button = YELLOW +repeat = 4 +config = i +end + + + + +begin +prog = mythtv +button = 0 +config = 0 +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 = POWER +config = Esc +end + +# ??? +begin +prog = mythtv +button = MUTE +config = F9 +end + +begin +prog = mythtv +button = CH_UP +repeat = 3 +config = PgUp +end + +begin +prog = mythtv +button = VOL_UP +repeat = 3 +config = ] +end + +begin +prog = mythtv +button = CH_DOWN +repeat = 3 +config = PgDown +end + +begin +prog = mythtv +button = VOL_DOWN +repeat = 3 +config = [ +end + +begin +prog = mythtv +button = UP +repeat = 3 +config = Up +end + +begin +prog = mythtv +button = LEFT +# navigates, or skips back during playback or live tv. +config = Left +end + +begin +prog = mythtv +button = OK +config = Return +end + +begin +prog = mythtv +button = RIGHT +# navigates, or skips forwards during playback or live tv. +config = Right +end + +begin +prog = mythtv +button = DOWN +repeat = 3 +config = Down +end + +begin +prog = mythtv +button = MENU +config = m +end + +begin +prog = mythtv +button = EXIT +config = Esc +end + +begin +prog = mythtv +button = PLAY +config = Space +end + +begin +prog = mythtv +button = PAUSE +config = p +end + +begin +prog = mythtv +button = STOP +config = Esc +end + +begin +prog = mythtv +# skip backward +button = |<< +config = PgUp +end + +begin +prog = mythtv +# skip forward +button = >>| +config = PgDown +end + +begin +prog = mythtv +button = RECORD +config = r +end + +begin +prog = mythtv +# rewind +button = << +config = Home +end + +begin +prog = mythtv +# fast forward +button = >> +config = End +end + +begin +prog = mythtv +button = RED +# Delete +config = d +end + +begin +prog = mythtv +button = GREEN +# Info +config = i +end + +#begin +#prog = mythtv +#button = YELLOW +# change aspect ratio +#config = w +#end + +begin +prog = mythtv +button = BLUE +config = Tab +end + +# MPLAYER +begin +prog = mplayer +button = POWER +config = quit +end + +begin +prog = mplayer +button = MUTE +config = mute +end + +begin +prog = mplayer +button = VOL_UP +repeat = 3 +config = volume +1 +end + +begin +prog = mplayer +button = VOL_DOWN +repeat = 3 +config = volume -1 +end + +begin +prog = mplayer +button = UP +repeat = 3 +config = seek +10 +end + +begin +prog = mplayer +button = LEFT +# navigates, or skips back during playback or live tv. +config = seek -60 +end + +begin +prog = mplayer +button = RIGHT +# navigates, or skips forwards during playback or live tv. +config = seek +60 +end + +begin +prog = mplayer +button = DOWN +repeat = 3 +config = seek -10 +end + +begin +prog = mplayer +button = EXIT +config = quit +end + +begin +prog = mplayer +button = play +config = speed_set 1.0 +end + +begin + prog = mplayer + button = pause + config = pause +end + +begin +prog = mplayer +button = STOP +config = quit +end + +begin +prog = mplayer +# skip backward +button = |<< +config = seek -600 +end + +begin +prog = mplayer +# skip forward +button = >>| +config = seek +600 +end + +begin +prog = mplayer +# slow forward +button = << +config = speed_mult 0.5 +end + +begin +prog = mplayer +# fast forward +button = >> +config = speed_mult 2.0 +end + +### xine commands + +begin +prog = xine +button = YELLOW +repeat = 4 +#config = ToggleVisiblity +config = OSDStreamInfos +end + +begin +prog = xine +button = MENU +repeat = 4 +config = SeekRelative+60 +end + +# increase brightness by 10 +begin + button = DELETE + prog = xine + repeat = 4 + config = BrightnessControl+ +end + +# decrease brightness by 10 +begin + button = PICTURE + prog = xine + repeat = 4 + config = BrightnessControl- +end + + +begin +prog = xine +button = PAUSE +repeat = 4 +config = Pause +end + +begin +prog = xine +button = PLAY +repeat = 4 +config = Play +end + +begin +prog = xine +button = STOP +repeat = 4 +config = quit +end + +begin +prog = xine +button = MUTE +repeat = 4 +config = mute +end + +begin +prog = xine +button = << +repeat = 4 +config = SeekRelative-30 +end + +begin +prog = xine +button = >> +repeat = 4 +#config = SeekRelative+30 +config = SpeedFaster +end + +begin +prog = xine +button = POWER +repeat = 4 +config = quit +end + +begin +prog = xine +button = EXIT +repeat = 4 +config = quit +end + + +begin +prog = xine +button = FREEZE +repeat = 4 +config = SeekRelative+1200 +end + +begin +prog = xine +button = MOVE +repeat = 4 +config = SeekRelative-1200 +end + +begin +prog = xine +button = 3 +config = SpuNext +repeat = 0 +end + +# Select previous sub picture (subtitle) channel. +begin +button = 1 +prog = xine +repeat = 0 +config = SpuPrior +end + +# Select next audio channel. +begin +button = 9 +prog = xine +repeat = 0 +config = AudioChannelNext +end + +# Select previous audio channel. +begin +button = 7 +prog = xine +repeat = 0 +config = AudioChannelPrior +end + + + +# Up event. +begin + +button = UP +prog = xine +repeat = 8 +config = EventUp +end + +# Down event. +begin + +button = DOWN +prog = xine +repeat = 8 +config = EventDown +end + +# Left event. +begin + +button = LEFT +prog = xine +repeat = 8 +config = EventLeft +end + +# Right event. +begin + +button = RIGHT +prog = xine +repeat = 8 +config = EventRight +end + +# Select event. +begin +prog = xine +button = ok +repeat = 8 +config = EventSelect +end + +# Down Chapter +begin + +button = CH_DOWN +prog = xine +repeat = 8 +config = EventPrior +end + +# Next Chapter. +begin + +button = CH_UP +prog = xine +repeat = 8 +config = EventNext +end + +# menu. +begin + +button = record +prog = xine +repeat = 8 +config = RootMenu +end + +# Toggle aspect ratio +begin +prog = xine +button = ASPECT +repeat = 0 +config = ToggleAspectRatio +end + + + +#######xmms +begin xmms + begin + prog = xmms + button = PLAY + config = PLAY + end + begin + prog = xmms + button = clear + config = PLAYLIST_CLEAR + end + begin + prog = xmms + button = load + config = PLAYLIST_ADD .xmms/xmms.m3u + end + begin + prog = xmms + button = PAUSE + config = PAUSE + end + begin + prog = xmms + button = STOP + config = STOP + end + begin + prog = xmms + button = EXIT + config = QUIT + flags = mode + end + + begin + prog = xmms + button = POWER + config = QUIT + flags = mode + end + + begin + prog = xmms + button = CH_UP + config = NEXT + end + begin + prog = xmms + button = CH_DOWN + config = PREV + end + + + +begin + prog = xmms + button = >>| + config = NEXT + end +begin + prog = xmms + button = |<< + config = PREV +end + + +begin + prog = xmms + button = << + config = FWD 10 + repeat = 2 + end + begin + prog = xmms + button = << + config = BWD 10 + repeat = 2 + end + begin + prog = xmms + button = volup + config = VOL_UP 10 + repeat = 2 + end + begin + prog = xmms + button = voldown + config = VOL_DOWN 10 + repeat = 2 + end + begin + prog = xmms + button = 1 + config = ONE + end + begin + prog = xmms + button = 2 + config = TWO + end + begin + prog = xmms + button = 3 + config = THREE + end + begin + prog = xmms + button = 4 + config = FOUR + end + begin + prog = xmms + button = 5 + config = FIVE + end + begin + prog = xmms + button = 6 + config = SIX + end + begin + prog = xmms + button = 7 + config = SEVEN + end + begin + prog = xmms + button = 8 + config = EIGHT + end + begin + prog = xmms + button = 9 + config = NINE + end + begin + prog = xmms + button = 0 + config = ZERO + end + begin + prog = xmms + button = enter + config = SETPOS + end +end xmms + +# + + + + + + + + + + + + + + + + + + + diff --git a/abs/core/system-templates/templates/remotes/streamzap/preview.jpg b/abs/core/system-templates/templates/remotes/streamzap/preview.jpg new file mode 100644 index 0000000..4d1a5fe Binary files /dev/null and b/abs/core/system-templates/templates/remotes/streamzap/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/technisat/lircd.conf.mediafocusI b/abs/core/system-templates/templates/remotes/technisat/lircd.conf.mediafocusI new file mode 100644 index 0000000..6dd84f9 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/technisat/lircd.conf.mediafocusI @@ -0,0 +1,42 @@ +# +# this config file was automatically generated +# using lirc-0.6.2 on Mon Sep 4 22:17:47 2000 +# +# contributed by Peter Schlaf +# +# brand: Technisat +# model: +# supported devices: MediaFocus PC card +# + +begin remote + + name TECHNISAT + bits 10 + flags SPACE_ENC|CONST_LENGTH + eps 20 + aeps 150 + + one 141 7590 + zero 141 5090 + ptrail 141 + pre_data_bits 1 + pre_data 0x1 + gap 121440 + repeat_bit 0 + toggle_bit 2 + + frequency 38000 + duty_cycle 33 + + begin codes + MUTE 0x0000000000000046 + VOL+ 0x000000000000006E + VOL- 0x000000000000006F + CH+ 0x0000000000000047 + CH- 0x0000000000000048 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/remotes/unknown/preview.jpg b/abs/core/system-templates/templates/remotes/unknown/preview.jpg new file mode 100644 index 0000000..a034186 Binary files /dev/null and b/abs/core/system-templates/templates/remotes/unknown/preview.jpg differ diff --git a/abs/core/system-templates/templates/remotes/x10/lircd.conf.mouseremote b/abs/core/system-templates/templates/remotes/x10/lircd.conf.mouseremote new file mode 100644 index 0000000..73df340 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/x10/lircd.conf.mouseremote @@ -0,0 +1,116 @@ +# +# +# contributed by Isaac Lauer +# modified by Shawn Nycz +# modified by Brian Craft +# +# brand: X10 +# model: MP3 MouseRemote, Model mk19a +# + +begin remote + + name mouseremote + bits 16 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + pre_data_bits 8 + pre_data 0x08 + post_data_bits 8 + post_data 0x7f + min_repeat 2 + gap 140000 + + begin codes + POWER 0x000000000000000F + PC 0x000000000000002B + LAST 0x000000000000004F + CHANUP 0x0000000000000002 + CHANDOWN 0x0000000000000003 + VOLUP 0x0000000000000006 + VOLDOWN 0x0000000000000007 + MUTE 0x0000000000000005 + 1 0x0000000000000041 + 2 0x0000000000000042 + 3 0x0000000000000043 + 4 0x0000000000000044 + 5 0x0000000000000045 + 6 0x0000000000000046 + 7 0x0000000000000047 + 8 0x0000000000000048 + 9 0x0000000000000049 + 0 0x0000000000000040 + ENTER 0x000000000000004a + ADOTB 0x000000000000005D + REWIND 0x000000000000001C + PLAY 0x000000000000000D + FFWD 0x000000000000001D + STOP 0x000000000000000E + PAUSE 0x000000000000004E + RECORD 0x00000000000000FF + ENTER 0x000000000000004A + LAST 0x000000000000004F + DISP 0x000000000000005C + SHIFT 0x000000000000006B + GUIDE 0x000000000000006D + SELECT 0x0000000000000093 + PHONE 0x000000000000004B + WEB 0x000000000000008B + CD 0x00000000000000AB + DVD 0x00000000000000CB + MOUSE_SLOW_N 0x0000000000000110 + MOUSE_SLOW_NNE 0x0000000000000131 + MOUSE_SLOW_NE 0x0000000000000111 + MOUSE_SLOW_ENE 0x0000000000000113 + MOUSE_SLOW_E 0x0000000000000101 + MOUSE_SLOW_ESE 0x0000000000000193 + MOUSE_SLOW_SE 0x0000000000000191 + MOUSE_SLOW_SSE 0x00000000000001B1 + MOUSE_SLOW_S 0x0000000000000190 + MOUSE_SLOW_SSW 0x00000000000001B9 + MOUSE_SLOW_SW 0x0000000000000199 + MOUSE_SLOW_WSW 0x000000000000019B + MOUSE_SLOW_W 0x0000000000000109 + MOUSE_SLOW_WNW 0x000000000000011B + MOUSE_SLOW_NW 0x0000000000000119 + MOUSE_SLOW_NNW 0x0000000000000139 + MOUSE_MEDIUM_N 0x0000000000000310 + MOUSE_MEDIUM_NNE 0x0000000000000331 + MOUSE_MEDIUM_NE 0x0000000000000311 + MOUSE_MEDIUM_ENE 0x0000000000000313 + MOUSE_MEDIUM_E 0x0000000000000301 + MOUSE_MEDIUM_ESE 0x0000000000000393 + MOUSE_MEDIUM_SE 0x0000000000000391 + MOUSE_MEDIUM_SSE 0x00000000000003B1 + MOUSE_MEDIUM_S 0x0000000000000390 + MOUSE_MEDIUM_SSW 0x00000000000003B9 + MOUSE_MEDIUM_SW 0x0000000000000399 + MOUSE_MEDIUM_WSW 0x000000000000039B + MOUSE_MEDIUM_W 0x0000000000000309 + MOUSE_MEDIUM_WNW 0x000000000000031B + MOUSE_MEDIUM_NW 0x0000000000000319 + MOUSE_MEDIUM_NNW 0x0000000000000339 + MOUSE_FAST_N 0x0000000000000510 + MOUSE_FAST_NNE 0x0000000000000531 + MOUSE_FAST_NE 0x0000000000000511 + MOUSE_FAST_ENE 0x0000000000000513 + MOUSE_FAST_E 0x0000000000000501 + MOUSE_FAST_ESE 0x0000000000000593 + MOUSE_FAST_SE 0x0000000000000591 + MOUSE_FAST_SSE 0x00000000000005B1 + MOUSE_FAST_S 0x0000000000000590 + MOUSE_FAST_SSW 0x00000000000005B9 + MOUSE_FAST_SW 0x0000000000000599 + MOUSE_FAST_WSW 0x000000000000059B + MOUSE_FAST_W 0x0000000000000509 + MOUSE_FAST_WNW 0x000000000000051B + MOUSE_FAST_NW 0x0000000000000519 + MOUSE_FAST_NNW 0x0000000000000539 + BUTTONR_DOWN 0x0000000000000801 + BUTTONL_DOWN 0x0000000000000804 + BUTTON_UP 0x0000000000000800 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/x10/lircd.conf.mp3anywhere b/abs/core/system-templates/templates/remotes/x10/lircd.conf.mp3anywhere new file mode 100644 index 0000000..c9bb727 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/x10/lircd.conf.mp3anywhere @@ -0,0 +1,64 @@ +# +# +# contributed by Isaac Lauer +# modified by Shawn Nycz +# +# brand: X10 +# model: MP3 Anywhere Remote, Model UR81A +# supported devices: at least FireCracker Receiver Model MR26A, maybe more +# + +begin remote + + name mp3anywhere + bits 8 + eps 30 + aeps 100 + one 0 0 + zero 0 0 + pre_data_bits 24 + pre_data 0xD5AAEE + min_repeat 2 + gap 140000 + + begin codes + POWER 0x00000000000000F0 + PC 0x00000000000000D4 + LAST 0x00000000000000F2 + CHANUP 0x0000000000000040 + CHANDOWN 0x00000000000000C0 + VOLUP 0x0000000000000060 + VOLDOWN 0x00000000000000E0 + MUTE 0x00000000000000A0 + ONE 0x0000000000000082 + TWO 0x0000000000000042 + THREE 0x00000000000000C2 + FOUR 0x0000000000000022 + FIVE 0x00000000000000A2 + SIX 0x0000000000000062 + SEVEN 0x00000000000000E2 + EIGHT 0x0000000000000012 + NINE 0x0000000000000092 + ZERO 0x0000000000000002 + ENTER 0x0000000000000052 + ADOTB 0x00000000000000BA + A 0x000000000000003A + B 0x00000000000000D8 + C 0x00000000000000D6 + D 0x00000000000000D4 + MENU 0x00000000000000B6 + EXIT 0x00000000000000C9 + UP 0x00000000000000D5 + DOWN 0x00000000000000D3 + LEFT 0x00000000000000D2 + RIGHT 0x00000000000000D1 + OK 0x0000000000000052 + REWIND 0x0000000000000038 + PLAY 0x00000000000000B0 + FFWD 0x00000000000000B8 + RECORD 0x00000000000000FF + STOP 0x0000000000000070 + PAUSE 0x0000000000000072 + end codes + +end remote diff --git a/abs/core/system-templates/templates/remotes/x10/lircmd.conf.mouseremote b/abs/core/system-templates/templates/remotes/x10/lircmd.conf.mouseremote new file mode 100644 index 0000000..c3c23b1 --- /dev/null +++ b/abs/core/system-templates/templates/remotes/x10/lircmd.conf.mouseremote @@ -0,0 +1,288 @@ +# +# lircmd config file for the mouseremote control +# + +# ACCELERATOR start max multiplier + +ACCELERATOR 1 3 2 + +#ACTIVATE * MENU + + +MOVE_N mouseremote MOUSE_SLOW_N +MOVE_N mouseremote MOUSE_SLOW_N + +MOVE_N mouseremote MOUSE_MEDIUM_N +MOVE_N mouseremote MOUSE_MEDIUM_N +MOVE_N mouseremote MOUSE_MEDIUM_N +MOVE_N mouseremote MOUSE_MEDIUM_N + +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N +MOVE_N mouseremote MOUSE_FAST_N + +MOVE_N mouseremote MOUSE_SLOW_NNE +MOVE_NE mouseremote MOUSE_SLOW_NNE + +MOVE_N mouseremote MOUSE_MEDIUM_NNE +MOVE_NE mouseremote MOUSE_MEDIUM_NNE +MOVE_N mouseremote MOUSE_MEDIUM_NNE +MOVE_NE mouseremote MOUSE_MEDIUM_NNE + +MOVE_N mouseremote MOUSE_FAST_NNE +MOVE_NE mouseremote MOUSE_FAST_NNE +MOVE_N mouseremote MOUSE_FAST_NNE +MOVE_NE mouseremote MOUSE_FAST_NNE +MOVE_N mouseremote MOUSE_FAST_NNE +MOVE_NE mouseremote MOUSE_FAST_NNE +MOVE_N mouseremote MOUSE_FAST_NNE +MOVE_NE mouseremote MOUSE_FAST_NNE + +MOVE_NE mouseremote MOUSE_SLOW_NE +MOVE_NE mouseremote MOUSE_SLOW_NE + +MOVE_NE mouseremote MOUSE_MEDIUM_NE +MOVE_NE mouseremote MOUSE_MEDIUM_NE +MOVE_NE mouseremote MOUSE_MEDIUM_NE +MOVE_NE mouseremote MOUSE_MEDIUM_NE + +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE +MOVE_NE mouseremote MOUSE_FAST_NE + +MOVE_E mouseremote MOUSE_SLOW_ENE +MOVE_NE mouseremote MOUSE_SLOW_ENE + +MOVE_E mouseremote MOUSE_MEDIUM_ENE +MOVE_NE mouseremote MOUSE_MEDIUM_ENE +MOVE_E mouseremote MOUSE_MEDIUM_ENE +MOVE_NE mouseremote MOUSE_MEDIUM_ENE + +MOVE_E mouseremote MOUSE_FAST_ENE +MOVE_NE mouseremote MOUSE_FAST_ENE +MOVE_E mouseremote MOUSE_FAST_ENE +MOVE_NE mouseremote MOUSE_FAST_ENE +MOVE_E mouseremote MOUSE_FAST_ENE +MOVE_NE mouseremote MOUSE_FAST_ENE +MOVE_E mouseremote MOUSE_FAST_ENE +MOVE_NE mouseremote MOUSE_FAST_ENE + +MOVE_E mouseremote MOUSE_SLOW_E +MOVE_E mouseremote MOUSE_SLOW_E + +MOVE_E mouseremote MOUSE_MEDIUM_E +MOVE_E mouseremote MOUSE_MEDIUM_E +MOVE_E mouseremote MOUSE_MEDIUM_E +MOVE_E mouseremote MOUSE_MEDIUM_E + +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E +MOVE_E mouseremote MOUSE_FAST_E + +MOVE_E mouseremote MOUSE_SLOW_ESE +MOVE_SE mouseremote MOUSE_SLOW_ESE + +MOVE_E mouseremote MOUSE_MEDIUM_ESE +MOVE_SE mouseremote MOUSE_MEDIUM_ESE +MOVE_E mouseremote MOUSE_MEDIUM_ESE +MOVE_SE mouseremote MOUSE_MEDIUM_ESE + +MOVE_E mouseremote MOUSE_FAST_ESE +MOVE_SE mouseremote MOUSE_FAST_ESE +MOVE_E mouseremote MOUSE_FAST_ESE +MOVE_SE mouseremote MOUSE_FAST_ESE +MOVE_E mouseremote MOUSE_FAST_ESE +MOVE_SE mouseremote MOUSE_FAST_ESE +MOVE_E mouseremote MOUSE_FAST_ESE +MOVE_SE mouseremote MOUSE_FAST_ESE + +MOVE_SE mouseremote MOUSE_SLOW_SE +MOVE_SE mouseremote MOUSE_SLOW_SE + +MOVE_SE mouseremote MOUSE_MEDIUM_SE +MOVE_SE mouseremote MOUSE_MEDIUM_SE +MOVE_SE mouseremote MOUSE_MEDIUM_SE +MOVE_SE mouseremote MOUSE_MEDIUM_SE + +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE +MOVE_SE mouseremote MOUSE_FAST_SE + +MOVE_S mouseremote MOUSE_SLOW_SSE +MOVE_SE mouseremote MOUSE_SLOW_SSE + +MOVE_S mouseremote MOUSE_MEDIUM_SSE +MOVE_SE mouseremote MOUSE_MEDIUM_SSE +MOVE_S mouseremote MOUSE_MEDIUM_SSE +MOVE_SE mouseremote MOUSE_MEDIUM_SSE + +MOVE_S mouseremote MOUSE_FAST_SSE +MOVE_SE mouseremote MOUSE_FAST_SSE +MOVE_S mouseremote MOUSE_FAST_SSE +MOVE_SE mouseremote MOUSE_FAST_SSE +MOVE_S mouseremote MOUSE_FAST_SSE +MOVE_SE mouseremote MOUSE_FAST_SSE +MOVE_S mouseremote MOUSE_FAST_SSE +MOVE_SE mouseremote MOUSE_FAST_SSE + +MOVE_S mouseremote MOUSE_SLOW_S +MOVE_S mouseremote MOUSE_SLOW_S + +MOVE_S mouseremote MOUSE_MEDIUM_S +MOVE_S mouseremote MOUSE_MEDIUM_S +MOVE_S mouseremote MOUSE_MEDIUM_S +MOVE_S mouseremote MOUSE_MEDIUM_S + +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S +MOVE_S mouseremote MOUSE_FAST_S + +MOVE_S mouseremote MOUSE_SLOW_SSW +MOVE_SW mouseremote MOUSE_SLOW_SSW + +MOVE_S mouseremote MOUSE_MEDIUM_SSW +MOVE_SW mouseremote MOUSE_MEDIUM_SSW +MOVE_S mouseremote MOUSE_MEDIUM_SSW +MOVE_SW mouseremote MOUSE_MEDIUM_SSW + +MOVE_S mouseremote MOUSE_FAST_SSW +MOVE_SW mouseremote MOUSE_FAST_SSW +MOVE_S mouseremote MOUSE_FAST_SSW +MOVE_SW mouseremote MOUSE_FAST_SSW +MOVE_S mouseremote MOUSE_FAST_SSW +MOVE_SW mouseremote MOUSE_FAST_SSW +MOVE_S mouseremote MOUSE_FAST_SSW +MOVE_SW mouseremote MOUSE_FAST_SSW + +MOVE_SW mouseremote MOUSE_SLOW_SW +MOVE_SW mouseremote MOUSE_SLOW_SW + +MOVE_SW mouseremote MOUSE_MEDIUM_SW +MOVE_SW mouseremote MOUSE_MEDIUM_SW +MOVE_SW mouseremote MOUSE_MEDIUM_SW +MOVE_SW mouseremote MOUSE_MEDIUM_SW + +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW +MOVE_SW mouseremote MOUSE_FAST_SW + +MOVE_W mouseremote MOUSE_SLOW_WSW +MOVE_SW mouseremote MOUSE_SLOW_WSW + +MOVE_W mouseremote MOUSE_MEDIUM_WSW +MOVE_SW mouseremote MOUSE_MEDIUM_WSW +MOVE_W mouseremote MOUSE_MEDIUM_WSW +MOVE_SW mouseremote MOUSE_MEDIUM_WSW + +MOVE_W mouseremote MOUSE_FAST_WSW +MOVE_SW mouseremote MOUSE_FAST_WSW +MOVE_W mouseremote MOUSE_FAST_WSW +MOVE_SW mouseremote MOUSE_FAST_WSW +MOVE_W mouseremote MOUSE_FAST_WSW +MOVE_SW mouseremote MOUSE_FAST_WSW +MOVE_W mouseremote MOUSE_FAST_WSW +MOVE_SW mouseremote MOUSE_FAST_WSW + +MOVE_W mouseremote MOUSE_SLOW_W +MOVE_W mouseremote MOUSE_SLOW_W + +MOVE_W mouseremote MOUSE_MEDIUM_W +MOVE_W mouseremote MOUSE_MEDIUM_W +MOVE_W mouseremote MOUSE_MEDIUM_W +MOVE_W mouseremote MOUSE_MEDIUM_W + +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W +MOVE_W mouseremote MOUSE_FAST_W + +MOVE_W mouseremote MOUSE_SLOW_WNW +MOVE_NW mouseremote MOUSE_SLOW_WNW + +MOVE_W mouseremote MOUSE_MEDIUM_WNW +MOVE_NW mouseremote MOUSE_MEDIUM_WNW +MOVE_W mouseremote MOUSE_MEDIUM_WNW +MOVE_NW mouseremote MOUSE_MEDIUM_WNW + +MOVE_W mouseremote MOUSE_FAST_WNW +MOVE_NW mouseremote MOUSE_FAST_WNW +MOVE_W mouseremote MOUSE_FAST_WNW +MOVE_NW mouseremote MOUSE_FAST_WNW +MOVE_W mouseremote MOUSE_FAST_WNW +MOVE_NW mouseremote MOUSE_FAST_WNW +MOVE_W mouseremote MOUSE_FAST_WNW +MOVE_NW mouseremote MOUSE_FAST_WNW + +MOVE_NW mouseremote MOUSE_SLOW_NW +MOVE_NW mouseremote MOUSE_SLOW_NW + +MOVE_NW mouseremote MOUSE_MEDIUM_NW +MOVE_NW mouseremote MOUSE_MEDIUM_NW +MOVE_NW mouseremote MOUSE_MEDIUM_NW +MOVE_NW mouseremote MOUSE_MEDIUM_NW + +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW +MOVE_NW mouseremote MOUSE_FAST_NW + +MOVE_N mouseremote MOUSE_SLOW_NNW +MOVE_NW mouseremote MOUSE_SLOW_NNW + +MOVE_N mouseremote MOUSE_MEDIUM_NNW +MOVE_NW mouseremote MOUSE_MEDIUM_NNW +MOVE_N mouseremote MOUSE_MEDIUM_NNW +MOVE_NW mouseremote MOUSE_MEDIUM_NNW + +MOVE_N mouseremote MOUSE_FAST_NNW +MOVE_NW mouseremote MOUSE_FAST_NNW +MOVE_N mouseremote MOUSE_FAST_NNW +MOVE_NW mouseremote MOUSE_FAST_NNW +MOVE_N mouseremote MOUSE_FAST_NNW +MOVE_NW mouseremote MOUSE_FAST_NNW +MOVE_N mouseremote MOUSE_FAST_NNW +MOVE_NW mouseremote MOUSE_FAST_NNW + +BUTTON1_DOWN mouseremote BUTTONL_DOWN +BUTTON2_DOWN mouseremote BUTTONR_DOWN + +BUTTON1_UP mouseremote BUTTON_UP +BUTTON2_UP mouseremote BUTTON_UP diff --git a/abs/core/system-templates/templates/samba/smb.conf.template b/abs/core/system-templates/templates/samba/smb.conf.template new file mode 100644 index 0000000..da1e89e --- /dev/null +++ b/abs/core/system-templates/templates/samba/smb.conf.template @@ -0,0 +1,124 @@ +# +#======================= Global Settings ===================================== +[global] + + workgroup = home_lan + server string = MythVantage + +# Security mode. Defines in which mode Samba will operate. Possible +# values are share, user, server, domain and ads. Most people will want +# user level security. See the Samba-HOWTO-Collection for details. + security = share + +# This option is important for security. It allows you to restrict +# connections to machines which are on your local network. The +# following example restricts access to two C class networks and +# the "loopback" interface. For more examples of the syntax see +# the smb.conf man page +; hosts allow = 192.168.1. 192.168.2. 127. + + load printers = no + +# you may wish to override the location of the printcap file +; printcap name = /etc/printcap + +; guest account = pcguest + +# this tells Samba to use a separate log file for each machine +# that connects + log file = /var/log/samba/log.%m + +# Put a capping on the size of the log files (in Kb). + max log size = 50 + +# Use password server option only with security = server +# The argument list may include: +# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name] +# or to auto-locate the domain controller/s +# password server = * +; password server = + +# Use the realm option only with security = ads +# Specifies the Active Directory realm the host is part of +; realm = MY_REALM + +# Backend to store user information in. New installations should +# use either tdbsam or ldapsam. smbpasswd is available for backwards +# compatibility. tdbsam requires no further configuration. +; passdb backend = tdbsam + +# Using the following line enables you to customise your configuration +# on a per machine basis. The %m gets replaced with the netbios name +# of the machine that is connecting. +# Note: Consider carefully the location in the configuration file of +# this line. The included file is read at that point. +; include = /usr/local/samba/lib/smb.conf.%m + +# Configure Samba to use multiple interfaces +# If you have multiple network interfaces then you must list them +# here. See the man page for details. +; interfaces = 192.168.12.2/24 192.168.13.2/24 + +# Browser Control Options: +# set local master to no if you don't want Samba to become a master +# browser on your network. Otherwise the normal election rules apply +; local master = no + +# OS Level determines the precedence of this server in master browser +# elections. The default value should be reasonable +; os level = 33 + +# Domain Master specifies Samba to be the Domain Master Browser. This +# allows Samba to collate browse lists between subnets. Don't use this +# if you already have a Windows NT domain controller doing this job +; domain master = yes + +# Preferred Master causes Samba to force a local browser election on startup +# and gives it a slightly higher chance of winning the election +; preferred master = yes + +# Enable this if you want Samba to be a domain logon server for +# Windows95 workstations. +; domain logons = yes + +# if you enable domain logons then you may want a per-machine or +# per user logon script +# run a specific logon batch file per workstation (machine) +; logon script = %m.bat +# run a specific logon batch file per username +; logon script = %U.bat + +# Where to store roving profiles (only for Win95 and WinNT) +# %L substitutes for this servers netbios name, %U is username +# You must uncomment the [Profiles] share below +; logon path = \\%L\Profiles\%U + +# Windows Internet Name Serving Support Section: +# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server +; wins support = yes + +# WINS Server - Tells the NMBD components of Samba to be a WINS Client +# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both +; wins server = w.x.y.z + +# WINS Proxy - Tells Samba to answer name resolution queries on +# behalf of a non WINS capable client, for this to work there must be +# at least one WINS Server on the network. The default is NO. +; wins proxy = yes + +# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names +# via DNS nslookups. The default is NO. + dns proxy = no + +# These scripts are used on a domain controller or stand-alone +# machine to add or delete corresponding unix accounts +; add user script = /usr/sbin/useradd %u +; add group script = /usr/sbin/groupadd %g +; add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u +; delete user script = /usr/sbin/userdel %u +; delete user from group script = /usr/sbin/deluser %u %g +; delete group script = /usr/sbin/groupdel %g + + +#============================ Share Definitions ============================== + diff --git a/abs/core/system-templates/templates/settings/default_1/keybindings.txt b/abs/core/system-templates/templates/settings/default_1/keybindings.txt new file mode 100644 index 0000000..f82f2d2 --- /dev/null +++ b/abs/core/system-templates/templates/settings/default_1/keybindings.txt @@ -0,0 +1,209 @@ +context action description keylist hostname +Music FFWD Fast forward PgDown REPLACEME +Music STOP Stop playback O REPLACEME +Music MUTE Mute |,\\\\,F9 REPLACEME +Gallery SCROLLUP Scroll image up 2 REPLACEME +Music VOLUMEDOWN Volume down [,{,F10 REPLACEME +Music VOLUMEUP Volume up ],},F11 REPLACEME +qt DELETE Delete D REPLACEME +Music RWND Rewind PgUp REPLACEME +qt EDIT Edit E REPLACEME +Music PAUSE Pause/Start playback P REPLACEME +Gallery RECENTER Recenter image 5 REPLACEME +Gallery FULLSIZE Full-size (un-zoom) image 0 REPLACEME +Gallery LOWRIGHT Go to the lower-right corner of the image PgDown REPLACEME +Gallery SCROLLRIGHT Scroll image right 6 REPLACEME +Gallery MENU Toggle activating menu in thumbnail view M REPLACEME +Gallery SCROLLDOWN Scroll image down 8 REPLACEME +Gallery ZOOMIN Zoom image in 9 REPLACEME +Gallery UPLEFT Go to the upper-left corner of the image PgUp REPLACEME +Gallery RANDOMSHOW Start Random Slideshow in thumbnail view R REPLACEME +Gallery ROTLEFT Rotate image left 90 degrees [,1 REPLACEME +Gallery SLIDESHOW Start Slideshow in thumbnail view S REPLACEME +Gallery ROTRIGHT Rotate image right 90 degrees ],3 REPLACEME +Gallery END Go to the last image in thumbnail view End REPLACEME +Gallery HOME Go to the first image in thumbnail view Home REPLACEME +Gallery SCROLLLEFT Scroll image left 4 REPLACEME +Gallery PLAY Start/Stop Slideshow P REPLACEME +NetFlix REMOVE Removes movie from queue D REPLACEME +Archive TOGGLECUT Toggle use cut list state for selected program C REPLACEME +Gallery ZOOMOUT Zoom image out 7 REPLACEME +NetFlix MOVETOTOP Moves movie to top of queue 1 REPLACEME +Global DOWN Down Arrow Down REPLACEME +ITV Menu MENUTEXT Menu Text F7 REPLACEME +ITV Menu TEXTEXIT Menu Exit F6 REPLACEME +Global LEFT Left Arrow Left REPLACEME +Global RIGHT Right Arrow Right REPLACEME +Global UP Up Arrow Up REPLACEME +Global MENU Pop-up menu M REPLACEME +Global PREVVIEW Previous View Home REPLACEME +Global ESCAPE Escape Esc REPLACEME +Global PAGEUP Page Up PgUp REPLACEME +Global SELECT Select Return,Enter,Space REPLACEME +Global HELP Help F1 REPLACEME +Global INFO More information I REPLACEME +Global NEXTVIEW Next View End REPLACEME +ITV Menu MENUBLUE Menu Blue F5 REPLACEME +Global PAGEDOWN Page Down PgDown REPLACEME +Global EJECT Eject Removable Media REPLACEME +Global 3 3 3 REPLACEME +Global 1 1 1 REPLACEME +Global 6 6 6 REPLACEME +Global 0 0 0 REPLACEME +Global 2 2 2 REPLACEME +Global 4 4 4 REPLACEME +TV Frontend DELETE Delete Program D REPLACEME +Global 8 8 8 REPLACEME +Global 7 7 7 REPLACEME +TV Frontend PAGEDOWN Page Down 9 REPLACEME +TV Frontend PAGEUP Page Up 3 REPLACEME +Global 5 5 5 REPLACEME +TV Frontend CHANGERECGROUP Change Recording Group REPLACEME +Global 9 9 9 REPLACEME +Video END Go to the last video End REPLACEME +Video INCPARENT Increase Parental Level ],},F11 REPLACEME +Weather PAUSE Pause current page P REPLACEME +TV Frontend TOGGLERECORD Toggle recording status of current program R REPLACEME +Video BROWSE Change browsable in video manager B REPLACEME +Welcome SHOWSETTINGS Show Mythshutdown settings F11 REPLACEME +Video HOME Go to the first video Home REPLACEME +Video FILTER Open video filter dialog F REPLACEME +Welcome STARTXTERM Open an Xterm window F12 REPLACEME +Music INCSEARCH Show incremental search dialog Ctrl+S REPLACEME +Music BLANKSCR Blank screen 5 REPLACEME +Video DELETE Delete video D REPLACEME +Music THMBUP Increase rating 9 REPLACEME +Music CYCLEVIS Cycle visualizer mode 6 REPLACEME +Teletext Menu REVEAL Reveal hidden Text F8 REPLACEME +Music INCSEARCHNEXT Incremental search find next match Ctrl+N REPLACEME +TV Frontend PLAYBACK Play Program P REPLACEME +News FORCERETRIEVE Force update news items M REPLACEME +Video DECPARENT Decrease Parental Level [,{,F10 REPLACEME +News RETRIEVENEWS Update news items I REPLACEME +News CANCEL Cancel news item updating C REPLACEME +Teletext Menu TOGGLEBACKGROUND Toggle Background F7 REPLACEME +Teletext Menu MENUWHITE Menu White F6 REPLACEME +ITV Menu MENURED Menu Red F2 REPLACEME +ITV Menu MENUYELLOW Menu Yellow F4 REPLACEME +ITV Menu MENUGREEN Menu Green F3 REPLACEME +Teletext Menu PREVSUBPAGE Previous Subpage Left REPLACEME +Teletext Menu MENUYELLOW Menu Yellow F4 REPLACEME +Teletext Menu MENUGREEN Menu Green F3 REPLACEME +Teletext Menu NEXTSUBPAGE Next Subpage Right REPLACEME +Teletext Menu MENUBLUE Menu Blue F5 REPLACEME +Teletext Menu TOGGLETT Toggle Teletext T REPLACEME +Teletext Menu NEXTPAGE Next Page Down REPLACEME +TV Editing LOADCOMMSKIP Load cut list from commercial skips Z,End REPLACEME +TV Editing BIGJUMPREW Jump back 10x the normal amount ,,< REPLACEME +TV Editing BIGJUMPFWD Jump forward 10x the normal amount >,. REPLACEME +TV Playback JUMPTODVDROOTMENU Jump to the DVD Root Menu REPLACEME +Teletext Menu MENURED Menu Red F2 REPLACEME +TV Playback SIGNALMON Monitor Signal Quality F7 REPLACEME +Teletext Menu PREVPAGE Previous Page Up REPLACEME +TV Editing INVERTMAP Invert Begin/End cut points I REPLACEME +TV Playback PLAY Play Ctrl+P REPLACEME +TV Editing PREVCUT Jump to the previous cut point PgUp REPLACEME +TV Editing NEXTCUT Jump to the next cut point PgDown REPLACEME +TV Playback CYCLECOMMSKIPMODE Cycle Commercial Skip mode REPLACEME +TV Playback TOGGLESLEEP Toggle the Sleep Timer F8 REPLACEME +TV Playback JUMPREC Display menu of recorded programs to jump to REPLACEME +TV Playback FINDER Show the Program Finder # REPLACEME +TV Playback ADJUSTSTRETCH Turn on time stretch control A REPLACEME +TV Editing CLEARMAP Clear editing cut points C,Q,Home REPLACEME +TV Editing TOGGLEEDIT Exit out of Edit Mode E REPLACEME +TV Playback TOGGLESTRETCH Toggle time stretch speed REPLACEME +TV Playback TOGGLERECCONTROLS Recording picture adjustments for this recorder G REPLACEME +TV Playback TOGGLEAUDIOSYNC Turn on audio sync adjustment controls REPLACEME +TV Playback TOGGLEEDIT Start Edit Mode E REPLACEME +TV Playback SPEEDINC Increase the playback speed U REPLACEME +TV Playback STRETCHDEC Decrease time stretch speed REPLACEME +TV Playback SPEEDDEC Decrease the playback speed J REPLACEME +TV Playback TOGGLECHANCONTROLS Recording picture adjustments for this channel Ctrl+G REPLACEME +TV Playback GUIDE Show the Program Guide S REPLACEME +TV Playback JUMPPREV Jump to previously played recording REPLACEME +TV Playback QUEUETRANSCODE Queue the current recording for transcoding X REPLACEME +TV Playback STRETCHINC Increase time stretch speed REPLACEME +TV Playback TOGGLEPICCONTROLS Playback picture adjustments F REPLACEME +TV Playback PREVCC708 Previous ATSC CC track REPLACEME +TV Playback NEXTCC708 Next ATSC CC track REPLACEME +TV Playback NEXTCC Next of any captions REPLACEME +TV Playback NEXTSCAN Next video scan overidemode REPLACEME +TV Playback NEXTCC608 Next VBI CC track REPLACEME +TV Playback PREVCC608 Previous VBI CC track REPLACEME +TV Playback PREVAUDIO Previous audio track - REPLACEME +TV Playback PREVSUBTITLE Previous subtitle track REPLACEME +TV Playback NEXTSUBTITLE Next subtitle track REPLACEME +TV Playback NEXTAUDIO Next audio track + REPLACEME +TV Playback SELECTCC708_3 Display ATSC CC4 REPLACEME +TV Playback SELECTCC708_0 Display ATSC CC1 REPLACEME +TV Playback SELECTCC608_1 Display VBI CC2 REPLACEME +TV Playback SELECTAUDIO_0 Play audio track 1 REPLACEME +TV Playback SELECTCC608_2 Display VBI CC3 REPLACEME +TV Playback TOGGLETTM Toggle Teletext Menu REPLACEME +TV Playback SELECTSUBTITLE_1 Display subtitle 2 REPLACEME +TV Playback SELECTCC608_3 Display VBI CC4 REPLACEME +TV Playback SELECTCC708_1 Display ATSC CC2 REPLACEME +TV Playback SELECTCC708_2 Display ATSC CC3 REPLACEME +TV Playback SELECTAUDIO_1 Play audio track 2 REPLACEME +TV Playback SELECTSUBTITLE_0 Display subtitle 1 REPLACEME +TV Playback TOGGLETTC Toggle Teletext Captions REPLACEME +TV Playback SELECTCC608_0 Display VBI CC1 REPLACEME +TV Playback SWAPPIP Swap PiP/Main N REPLACEME +TV Playback TOGGLEASPECT Toggle the display aspect ratio W REPLACEME +TV Playback TOGGLECC708 Toggle ATSC CC REPLACEME +TV Playback TOGGLECC608 Toggle VBI CC REPLACEME +TV Playback TOGGLEPIPMODE Toggle Picture-in-Picture mode V REPLACEME +TV Playback TOGGLEFAV Toggle the current channel as a favorite ? REPLACEME +TV Playback TOGGLEPIPWINDOW Toggle active PiP window B REPLACEME +TV Playback MUTE Mute |,\\\\,F9 REPLACEME +TV Playback TOGGLEBROWSE Toggle channel browse mode O REPLACEME +TV Playback TOGGLESUBTITLE Toggle Subtitles REPLACEME +TV Playback VOLUMEUP Volume up ],},F11 REPLACEME +TV Playback TOGGLECC Toggle any captions T REPLACEME +TV Playback JUMPSTART Jump to the start of the recording. Ctrl+B REPLACEME +TV Playback TOGGLERECORD Toggle recording status of current program R REPLACEME +TV Playback SKIPCOMMERCIAL Skip Commercial Z,End REPLACEME +TV Playback VOLUMEDOWN Volume down [,{,F10 REPLACEME +TV Playback SWITCHCARDS Switch Capture Cards Y REPLACEME +TV Playback SKIPCOMMBACK Skip Commercial (Reverse) Q,Home REPLACEME +TV Playback TOGGLEINPUTS Toggle Inputs C REPLACEME +TV Playback FFWDSTICKY Fast Forward (Sticky) or Forward one frame while paused >,. REPLACEME +TV Playback JUMPFFWD Jump ahead PgDown REPLACEME +TV Playback PREVCHAN Switch to the previous channel H REPLACEME +TV Playback JUMPBKMRK Jump to bookmark K REPLACEME +TV Playback RWNDSTICKY Rewind (Sticky) or Rewind one frame while paused ,,< REPLACEME +TV Playback NEXTFAV Switch to the next favorite channel / REPLACEME +TV Playback JUMPRWND Jump back PgUp REPLACEME +TV Playback SEEKRWND Rewind Left REPLACEME +TV Playback SEEKFFWD Fast Forward Right REPLACEME +TV Playback CHANNELDOWN Channel down Down REPLACEME +TV Playback CHANNELUP Channel up Up REPLACEME +TV Playback ARBSEEK Arbitrary Seek * REPLACEME +TV Playback DELETE Delete Program D REPLACEME +TV Playback CLEAROSD Clear OSD Backspace REPLACEME +TV Frontend DETAILS Show program details U REPLACEME +TV Frontend CUSTOMEDIT Edit Custom Record Rule E REPLACEME +TV Frontend UPCOMING List upcoming episodes O REPLACEME +TV Frontend CHANUPDATE Switch channels without exiting guide in Live TV mode. X REPLACEME +TV Frontend RANKDEC Decrease program or channel rank Left REPLACEME +TV Frontend VIEWCARD Switch Capture Card view Y REPLACEME +TV Playback PAUSE Pause P REPLACEME +TV Frontend RANKINC Increase program or channel rank Right REPLACEME +TV Frontend PAGERIGHT Page the program guide right >,. REPLACEME +TV Frontend PAGELEFT Page the program guide left ,,< REPLACEME +TV Frontend NEXTFAV Toggle showing all channels or just favorites in the program guide. / REPLACEME +Gallery DELETE Delete marked images or current image if none are marked D REPLACEME +TV Frontend DAYRIGHT Page the program guide forward one day End,1 REPLACEME +Gallery MARK Mark image T REPLACEME +Game TOGGLEFAV Toggle the current game as a favorite ?,/ REPLACEME +TV Frontend TOGGLEFAV Toggle the current channel as a favorite ? REPLACEME +TV Frontend DAYLEFT Page the program guide back one day Home,7 REPLACEME +Music PREVTRACK Move to the previous track ,,<,Q,Home REPLACEME +Game INCSEARCHNEXT Incremental search find next match Ctrl+N REPLACEME +Music DELETE Delete track from playlist D REPLACEME +Gallery INFO Toggle Showing Information about Image I REPLACEME +Game INCSEARCH Show incremental search dialog Ctrl+S REPLACEME +Music REFRESH Refresh music tree 8 REPLACEME +Music NEXTTRACK Move to the next track >,.,Z,End REPLACEME +Music FILTER Filter All My Music F REPLACEME +Music THMBDOWN Decrease rating 7 REPLACEME diff --git a/abs/core/system-templates/templates/settings/default_1/settings.txt b/abs/core/system-templates/templates/settings/default_1/settings.txt new file mode 100644 index 0000000..8c3a391 --- /dev/null +++ b/abs/core/system-templates/templates/settings/default_1/settings.txt @@ -0,0 +1,320 @@ +value data hostname +AC3PassThru 0 REPLACEME +AggressiveSoundcardBuffer 0 REPLACEME +AllowQuitShutdown 3 REPLACEME +AltClearSavedPosition 1 REPLACEME +AspectOverride 0 REPLACEME +AudioNag 1 REPLACEME +AudioOutputDevice /dev/dsp REPLACEME +AutoCommercialSkip 2 REPLACEME +AutoLookupCD 1 REPLACEME +AutomaticSetWatched 0 REPLACEME +AutoPlayCD 0 REPLACEME +BackendServerPort 6543 REPLACEME +BackendStatusPort 6544 REPLACEME +CCBackground 0 REPLACEME +CDBlankType fast REPLACEME +CDCreateDir 1 REPLACEME +CDDevice /dev/cdrom REPLACEME +CDDiskSize 1 REPLACEME +CDWriterEnabled 0 REPLACEME +CDWriteSpeed 0 REPLACEME +ChannelFormat REPLACEME +ChannelOrdering channum REPLACEME +chanPerPage 5 REPLACEME +ClearSavedPosition 1 REPLACEME +CommNotifyAmount 0 REPLACEME +CommRewindAmount 0 REPLACEME +CustomFilters REPLACEME +DateFormat ddd MMM d REPLACEME +DecodeExtraAudio 1 REPLACEME +Default MythVideo View 1 REPLACEME +DefaultCCMode 0 REPLACEME +DefaultRipQuality 0 REPLACEME +DefaultTVChannel 3 REPLACEME +Deinterlace 1 REPLACEME +DeinterlaceFilter kerneldeint REPLACEME +DisplayGroupDefaultView 0 REPLACEME +DisplayGroupTitleSort 0 REPLACEME +DisplayRecGroup Default REPLACEME +DispRecGroupAsAllProg 0 REPLACEME +DTSPassThru 0 REPLACEME +DVDDeviceLocation /dev/dvd REPLACEME +DVDOnInsertDVD 1 REPLACEME +DVDRipLocation /data/media/tmp REPLACEME +EjectCDAfterRipping 1 REPLACEME +EnableMHEG 0 REPLACEME +EnableXbox 0 REPLACEME +EnableXbox 0 REPLACEME +EncoderType ogg REPLACEME +EndOfRecordingExitPrompt 1 REPLACEME +EPGFillType 10 REPLACEME +EPGScrollType 1 REPLACEME +EPGShowCategoryColors 1 REPLACEME +EPGShowCategoryText 1 REPLACEME +EPGShowChannelIcon 1 REPLACEME +EPGShowFavorites 0 REPLACEME +ExactSeeking 0 REPLACEME +FFRewReposTime 100 REPLACEME +FFRewReverse 1 REPLACEME +FilenameTemplate ARTIST/ALBUM/TRACK-TITLE REPLACEME +GalleryDir /data/media/images REPLACEME +GalleryImportDirs /mnt/cdrom:/mnt/camera REPLACEME +GalleryMoviePlayerCmd mplayer -fs %s REPLACEME +GalleryOverlayCaption 0 REPLACEME +GalleryRecursiveSlideshow 1 REPLACEME +GallerySortOrder 20 REPLACEME +GalleryThumbnailLocation 1 REPLACEME +GameAllTreeLevels system gamename REPLACEME +GameFavTreeLevels gamename REPLACEME +GeneratePreviewPixmaps 0 REPLACEME +GuiHeight 0 REPLACEME +GuiOffsetX 0 REPLACEME +GuiOffsetY 0 REPLACEME +GuiSizeForTV 0 REPLACEME +GuiVidModeResolution 640x480 REPLACEME +GuiWidth 0 REPLACEME +HideMouseCursor 1 REPLACEME +HorizScanPercentage 0 REPLACEME +Ignore_ID3 0 REPLACEME +IndividualMuteControl 0 REPLACEME +IntelliLastPlayWeight 25 REPLACEME +IntelliPlayCountWeight 25 REPLACEME +IntelliRandomWeight 15 REPLACEME +IntelliRatingWeight 35 REPLACEME +ISO639Language0 eng REPLACEME +ISO639Language1 eng REPLACEME +JobAllowCommFlag 1 REPLACEME +JobAllowTranscode 1 REPLACEME +JobQueueCheckFrequency 60 REPLACEME +JobQueueCPU 0 REPLACEME +JobQueueMaxSimultaneousJobs 1 REPLACEME +JobQueueWindowEnd 23:59 REPLACEME +JobQueueWindowStart 00:00 REPLACEME +KeyboardAccelerators 1 REPLACEME +Language EN REPLACEME +LastMusicPlaylistPush 0 REPLACEME +LCDBacklightOn 1 REPLACEME +LCDBigClock 0 REPLACEME +LCDEnable 0 REPLACEME +LCDHeartBeatOn 0 REPLACEME +LCDKeyString ABCDEF REPLACEME +LCDPopupTime 5 REPLACEME +LCDShowChannel 1 REPLACEME +LCDShowGeneric 1 REPLACEME +LCDShowMenu 1 REPLACEME +LCDShowMusic 1 REPLACEME +LCDShowMusicItems ArtistTitle REPLACEME +LCDShowRecStatus 0 REPLACEME +LCDShowTime 1 REPLACEME +LCDShowVolume 1 REPLACEME +LircKeyPressedApp REPLACEME +ListAsShuffled 0 REPLACEME +LiveTVInAllPrograms 0 REPLACEME +LogCleanDays 14 REPLACEME +LogCleanDays 14 REPLACEME +LogCleanEnabled 0 REPLACEME +LogCleanEnabled 0 REPLACEME +LogCleanMax 30 REPLACEME +LogCleanMax 30 REPLACEME +LogCleanPeriod 14 REPLACEME +LogCleanPeriod 14 REPLACEME +LogMaxCount 100 REPLACEME +LogMaxCount 100 REPLACEME +LogPrintLevel 8 REPLACEME +LogPrintLevel 8 REPLACEME +LongChannelFormat REPLACEME +MasterMixerVolume 70 REPLACEME +MenuTheme MythVantage-menu REPLACEME +MixerControl PCM REPLACEME +MixerDevice /dev/mixer REPLACEME +MonitorDrives 0 REPLACEME +MovieDataCommandLine /usr/local/share/mythtv/mythvideo/scripts/imdb.pl -D REPLACEME +MovieListCommandLine /usr/local/share/mythtv/mythvideo/scripts/imdb.pl -M tv=no;video=no REPLACEME +MoviePosterCommandLine /usr/local/share/mythtv/mythvideo/scripts/imdb.pl -P REPLACEME +Mp3UseVBR 0 REPLACEME +MTDac3Flag 0 REPLACEME +MTDConcurrentTranscodes 1 REPLACEME +MTDLogFlag 0 REPLACEME +MTDNiceLevel 20 REPLACEME +MTDPort 2442 REPLACEME +MTDRipSize 0 REPLACEME +MTDxvidFlag 1 REPLACEME +MusicAudioDevice default REPLACEME +MusicLocation /data/media/audio REPLACEME +MusicShowRatings 0 REPLACEME +MythArchiveAlwaysUseMythTranscode 1 REPLACEME +MythArchiveChapterMenuAR Video REPLACEME +MythArchiveCopyRemoteFiles 1 REPLACEME +MythArchiveDateFormat %a %b %d REPLACEME +MythArchiveDvdauthorCmd dvdauthor REPLACEME +MythArchiveDVDLocation /dev/dvd REPLACEME +MythArchiveEncodeToAc3 1 REPLACEME +MythArchiveFfmpegCmd ffmpeg REPLACEME +MythArchiveFileFilter *.mpg *.mov *.avi *.mpeg *.nuv REPLACEME +MythArchiveGrowisofsCmd growisofs REPLACEME +MythArchiveMainMenuAR 16:9 REPLACEME +MythArchiveMkisofsCmd mkisofs REPLACEME +MythArchiveMpeg2encCmd mpeg2enc REPLACEME +MythArchiveMplexCmd mplex REPLACEME +MythArchivePng2yuvCmd png2yuv REPLACEME +MythArchiveShareDir /usr/local/share/mythtv/mytharchive/ REPLACEME +MythArchiveSpumuxCmd spumux REPLACEME +MythArchiveTcrequantCmd tcrequant REPLACEME +MythArchiveTempDir /data/media/tmp REPLACEME +MythArchiveTimeFormat %I:%M %p REPLACEME +MythArchiveUseFIFO 1 REPLACEME +MythArchiveVideoFormat NTSC REPLACEME +MythControlsVolume 1 REPLACEME +mythdvd.DVDPlayerCommand Internal REPLACEME +mythvideo.db_folder_view 1 REPLACEME +mythvideo.ImageCacheSize 50 REPLACEME +mythvideo.sort_ignores_case 1 REPLACEME +NetworkControlEnabled 1 REPLACEME +NetworkControlPort 6546 REPLACEME +NonID3FileNameFormat GENRE/ARTIST/ALBUM/TRACK_TITLE REPLACEME +NoPromptOnExit 0 REPLACEME +NoWhitespace 0 REPLACEME +OnlyImportNewMusic 0 REPLACEME +OSDCC708CapitalsFont FreeMono.ttf REPLACEME +OSDCC708CapitalsItalicFont FreeMono.ttf REPLACEME +OSDCC708CasualFont FreeMono.ttf REPLACEME +OSDCC708CasualItalicFont FreeMono.ttf REPLACEME +OSDCC708CursiveFont FreeMono.ttf REPLACEME +OSDCC708CursiveItalicFont FreeMono.ttf REPLACEME +OSDCC708DefaultFontType MonoSerif REPLACEME +OSDCC708MonoSansSerifFont FreeMono.ttf REPLACEME +OSDCC708MonoSansSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708MonoSerifFont FreeMono.ttf REPLACEME +OSDCC708MonoSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708PropSansSerifFont FreeMono.ttf REPLACEME +OSDCC708PropSansSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708PropSerifFont FreeMono.ttf REPLACEME +OSDCC708PropSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708TextZoom 100 REPLACEME +OSDCCFont FreeMono.ttf REPLACEME +OSDFont FreeMono.ttf REPLACEME +OSDGeneralTimeout 2 REPLACEME +OSDNotifyTimeout 6 REPLACEME +OSDProgramInfoTimeout 3 REPLACEME +OSDTheme Gray-OSD REPLACEME +OSDThemeFontSizeType default REPLACEME +ParanoiaLevel Full REPLACEME +PassThruOutputDevice Default REPLACEME +PCMMixerVolume 70 REPLACEME +PersistentBrowseMode 1 REPLACEME +PIPLocation 0 REPLACEME +PlaybackBoxStartInTitle 1 REPLACEME +PlaybackExitPrompt 2 REPLACEME +PlaybackPreview 1 REPLACEME +PlaybackPreviewLowCPU 1 REPLACEME +PlayBoxEpisodeSort Date REPLACEME +PlayBoxOrdering 1 REPLACEME +PlayBoxShading 0 REPLACEME +PlayBoxTransparency 1 REPLACEME +PlayMode none REPLACEME +PostCDRipScript REPLACEME +PreferredMPEG2Decoder ffmpeg REPLACEME +PreviewFromBookmark 1 REPLACEME +PVR350EPGAlphaValue 164 REPLACEME +PVR350InternalAudioOnly 0 REPLACEME +PVR350OutputEnable 0 REPLACEME +PVR350VideoDev /dev/video16 REPLACEME +QtFontBig 25 REPLACEME +QtFontMedium 16 REPLACEME +QtFontSmall 12 REPLACEME +QueryInitialFilter 0 REPLACEME +RandomTheme 0 REPLACEME +RealtimePriority 1 REPLACEME +RecordFilePrefix /data/media/video/recordings REPLACEME +RememberRecGroup 1 REPLACEME +RepeatMode all REPLACEME +RunFrontendInWindow 0 REPLACEME +SelChangeRecThreshold 16 REPLACEME +SelectChangesChannel 1 REPLACEME +ServiceMythWEB 0 REPLACEME +ServiceNFS 0 REPLACEME +ServiceSamba 0 REPLACEME +SetupPinCodeRequired 0 REPLACEME +ShortDateFormat M/d REPLACEME +ShowGroupInfo 0 REPLACEME +ShowWholeTree 1 REPLACEME +SlideshowBackground REPLACEME +SlideshowDelay 5 REPLACEME +SlideshowOpenGLTransition none REPLACEME +SlideshowOpenGLTransitionLength 2000 REPLACEME +SlideshowTransition none REPLACEME +SmartChannelChange 0 REPLACEME +SmartForward 0 REPLACEME +StickyKeys 1 REPLACEME +Style Windows REPLACEME +SubTitleCommand -sid %s REPLACEME +TagSeparator - REPLACEME +Theme basic-blue REPLACEME +ThemeFontSizeType default REPLACEME +ThemePainter qt REPLACEME +TimeFormat h:mm AP REPLACEME +timePerPage 4 REPLACEME +TitlePlayCommand mplayer dvd://%t -dvd-device %d -fs -zoom -vo xv -aid %a -channels %c REPLACEME +TranscodeCommand transcode REPLACEME +TreeLevels splitartist artist album title REPLACEME +TVVidModeForceAspect 0.0 REPLACEME +TVVidModeForceAspect0 0.0 REPLACEME +TVVidModeForceAspect1 0.0 REPLACEME +TVVidModeForceAspect2 0.0 REPLACEME +TVVidModeRefreshRate 0 REPLACEME +TVVidModeRefreshRate0 0 REPLACEME +TVVidModeRefreshRate1 0 REPLACEME +TVVidModeRefreshRate2 0 REPLACEME +TVVidModeResolution 640x480 REPLACEME +TVVidModeResolution0 640x480 REPLACEME +TVVidModeResolution1 640x480 REPLACEME +TVVidModeResolution2 640x480 REPLACEME +UDPNotifyPort 6948 REPLACEME +UnknownCategory Unknown REPLACEME +UnknownTitle Unknown REPLACEME +upnp:UDN:urn:schemas-upnp-org:device:MediaServer:1 dee5b0fe-7087-4960-8794-428d3e01a61f REPLACEME +UseArrowAccels 1 REPLACEME +UseOutputPictureControls 1 REPLACEME +UseVideoModes 0 REPLACEME +UseVideoTimebase 0 REPLACEME +UseVirtualKeyboard 1 REPLACEME +VCDDeviceLocation /dev/cdrom REPLACEME +VCDPlayerCommand mplayer vcd:// -cdrom-device %d -fs -zoom -vo xv REPLACEME +VertScanPercentage 0 REPLACEME +VideoAggressivePC 0 REPLACEME +VideoArtworkDir /data/media/images/posters REPLACEME +VideoBrowserNoDB 0 REPLACEME +VideoDefaultParentalLevel 4 REPLACEME +VideoGalleryAspectRatio 1 REPLACEME +VideoGalleryColsPerPage 4 REPLACEME +VideoGalleryNoDB 0 REPLACEME +VideoGalleryRowsPerPage 3 REPLACEME +VideoGallerySubtitle 1 REPLACEME +VideoListUnknownFiletypes 1 REPLACEME +VideoNewBrowsable 1 REPLACEME +VideoDefaultPlayer Internal REPLACEME +VideoStartupDir /data/media/video/movies REPLACEME +VideoTreeLoadMetaData 1 REPLACEME +VideoTreeNoDB 0 REPLACEME +VidModeHeight0 0 REPLACEME +VidModeHeight1 0 REPLACEME +VidModeHeight2 0 REPLACEME +VidModeWidth0 0 REPLACEME +VidModeWidth1 0 REPLACEME +VidModeWidth2 0 REPLACEME +VisualCycleOnSongChange 0 REPLACEME +VisualMode Random REPLACEME +VisualModeDelay 0 REPLACEME +VisualScaleHeight 1 REPLACEME +VisualScaleWidth 1 REPLACEME +WatchTVGuide 0 REPLACEME +WebBrowserCommand /usr/local/bin/mythbrowser REPLACEME +WebBrowserHideScrollbars 0 REPLACEME +WebBrowserScrollMode 1 REPLACEME +WebBrowserScrollSpeed 4 REPLACEME +WebBrowserZoomLevel 20 REPLACEME +XScanDisplacement 0 REPLACEME +YScanDisplacement 0 REPLACEME +HaltCommand sudo /sbin/poweroff REPLACEME +RebootCommand sudo /sbin/reboot REPLACEME diff --git a/abs/core/system-templates/templates/settings/default_2/keybindings.txt b/abs/core/system-templates/templates/settings/default_2/keybindings.txt new file mode 100644 index 0000000..f82f2d2 --- /dev/null +++ b/abs/core/system-templates/templates/settings/default_2/keybindings.txt @@ -0,0 +1,209 @@ +context action description keylist hostname +Music FFWD Fast forward PgDown REPLACEME +Music STOP Stop playback O REPLACEME +Music MUTE Mute |,\\\\,F9 REPLACEME +Gallery SCROLLUP Scroll image up 2 REPLACEME +Music VOLUMEDOWN Volume down [,{,F10 REPLACEME +Music VOLUMEUP Volume up ],},F11 REPLACEME +qt DELETE Delete D REPLACEME +Music RWND Rewind PgUp REPLACEME +qt EDIT Edit E REPLACEME +Music PAUSE Pause/Start playback P REPLACEME +Gallery RECENTER Recenter image 5 REPLACEME +Gallery FULLSIZE Full-size (un-zoom) image 0 REPLACEME +Gallery LOWRIGHT Go to the lower-right corner of the image PgDown REPLACEME +Gallery SCROLLRIGHT Scroll image right 6 REPLACEME +Gallery MENU Toggle activating menu in thumbnail view M REPLACEME +Gallery SCROLLDOWN Scroll image down 8 REPLACEME +Gallery ZOOMIN Zoom image in 9 REPLACEME +Gallery UPLEFT Go to the upper-left corner of the image PgUp REPLACEME +Gallery RANDOMSHOW Start Random Slideshow in thumbnail view R REPLACEME +Gallery ROTLEFT Rotate image left 90 degrees [,1 REPLACEME +Gallery SLIDESHOW Start Slideshow in thumbnail view S REPLACEME +Gallery ROTRIGHT Rotate image right 90 degrees ],3 REPLACEME +Gallery END Go to the last image in thumbnail view End REPLACEME +Gallery HOME Go to the first image in thumbnail view Home REPLACEME +Gallery SCROLLLEFT Scroll image left 4 REPLACEME +Gallery PLAY Start/Stop Slideshow P REPLACEME +NetFlix REMOVE Removes movie from queue D REPLACEME +Archive TOGGLECUT Toggle use cut list state for selected program C REPLACEME +Gallery ZOOMOUT Zoom image out 7 REPLACEME +NetFlix MOVETOTOP Moves movie to top of queue 1 REPLACEME +Global DOWN Down Arrow Down REPLACEME +ITV Menu MENUTEXT Menu Text F7 REPLACEME +ITV Menu TEXTEXIT Menu Exit F6 REPLACEME +Global LEFT Left Arrow Left REPLACEME +Global RIGHT Right Arrow Right REPLACEME +Global UP Up Arrow Up REPLACEME +Global MENU Pop-up menu M REPLACEME +Global PREVVIEW Previous View Home REPLACEME +Global ESCAPE Escape Esc REPLACEME +Global PAGEUP Page Up PgUp REPLACEME +Global SELECT Select Return,Enter,Space REPLACEME +Global HELP Help F1 REPLACEME +Global INFO More information I REPLACEME +Global NEXTVIEW Next View End REPLACEME +ITV Menu MENUBLUE Menu Blue F5 REPLACEME +Global PAGEDOWN Page Down PgDown REPLACEME +Global EJECT Eject Removable Media REPLACEME +Global 3 3 3 REPLACEME +Global 1 1 1 REPLACEME +Global 6 6 6 REPLACEME +Global 0 0 0 REPLACEME +Global 2 2 2 REPLACEME +Global 4 4 4 REPLACEME +TV Frontend DELETE Delete Program D REPLACEME +Global 8 8 8 REPLACEME +Global 7 7 7 REPLACEME +TV Frontend PAGEDOWN Page Down 9 REPLACEME +TV Frontend PAGEUP Page Up 3 REPLACEME +Global 5 5 5 REPLACEME +TV Frontend CHANGERECGROUP Change Recording Group REPLACEME +Global 9 9 9 REPLACEME +Video END Go to the last video End REPLACEME +Video INCPARENT Increase Parental Level ],},F11 REPLACEME +Weather PAUSE Pause current page P REPLACEME +TV Frontend TOGGLERECORD Toggle recording status of current program R REPLACEME +Video BROWSE Change browsable in video manager B REPLACEME +Welcome SHOWSETTINGS Show Mythshutdown settings F11 REPLACEME +Video HOME Go to the first video Home REPLACEME +Video FILTER Open video filter dialog F REPLACEME +Welcome STARTXTERM Open an Xterm window F12 REPLACEME +Music INCSEARCH Show incremental search dialog Ctrl+S REPLACEME +Music BLANKSCR Blank screen 5 REPLACEME +Video DELETE Delete video D REPLACEME +Music THMBUP Increase rating 9 REPLACEME +Music CYCLEVIS Cycle visualizer mode 6 REPLACEME +Teletext Menu REVEAL Reveal hidden Text F8 REPLACEME +Music INCSEARCHNEXT Incremental search find next match Ctrl+N REPLACEME +TV Frontend PLAYBACK Play Program P REPLACEME +News FORCERETRIEVE Force update news items M REPLACEME +Video DECPARENT Decrease Parental Level [,{,F10 REPLACEME +News RETRIEVENEWS Update news items I REPLACEME +News CANCEL Cancel news item updating C REPLACEME +Teletext Menu TOGGLEBACKGROUND Toggle Background F7 REPLACEME +Teletext Menu MENUWHITE Menu White F6 REPLACEME +ITV Menu MENURED Menu Red F2 REPLACEME +ITV Menu MENUYELLOW Menu Yellow F4 REPLACEME +ITV Menu MENUGREEN Menu Green F3 REPLACEME +Teletext Menu PREVSUBPAGE Previous Subpage Left REPLACEME +Teletext Menu MENUYELLOW Menu Yellow F4 REPLACEME +Teletext Menu MENUGREEN Menu Green F3 REPLACEME +Teletext Menu NEXTSUBPAGE Next Subpage Right REPLACEME +Teletext Menu MENUBLUE Menu Blue F5 REPLACEME +Teletext Menu TOGGLETT Toggle Teletext T REPLACEME +Teletext Menu NEXTPAGE Next Page Down REPLACEME +TV Editing LOADCOMMSKIP Load cut list from commercial skips Z,End REPLACEME +TV Editing BIGJUMPREW Jump back 10x the normal amount ,,< REPLACEME +TV Editing BIGJUMPFWD Jump forward 10x the normal amount >,. REPLACEME +TV Playback JUMPTODVDROOTMENU Jump to the DVD Root Menu REPLACEME +Teletext Menu MENURED Menu Red F2 REPLACEME +TV Playback SIGNALMON Monitor Signal Quality F7 REPLACEME +Teletext Menu PREVPAGE Previous Page Up REPLACEME +TV Editing INVERTMAP Invert Begin/End cut points I REPLACEME +TV Playback PLAY Play Ctrl+P REPLACEME +TV Editing PREVCUT Jump to the previous cut point PgUp REPLACEME +TV Editing NEXTCUT Jump to the next cut point PgDown REPLACEME +TV Playback CYCLECOMMSKIPMODE Cycle Commercial Skip mode REPLACEME +TV Playback TOGGLESLEEP Toggle the Sleep Timer F8 REPLACEME +TV Playback JUMPREC Display menu of recorded programs to jump to REPLACEME +TV Playback FINDER Show the Program Finder # REPLACEME +TV Playback ADJUSTSTRETCH Turn on time stretch control A REPLACEME +TV Editing CLEARMAP Clear editing cut points C,Q,Home REPLACEME +TV Editing TOGGLEEDIT Exit out of Edit Mode E REPLACEME +TV Playback TOGGLESTRETCH Toggle time stretch speed REPLACEME +TV Playback TOGGLERECCONTROLS Recording picture adjustments for this recorder G REPLACEME +TV Playback TOGGLEAUDIOSYNC Turn on audio sync adjustment controls REPLACEME +TV Playback TOGGLEEDIT Start Edit Mode E REPLACEME +TV Playback SPEEDINC Increase the playback speed U REPLACEME +TV Playback STRETCHDEC Decrease time stretch speed REPLACEME +TV Playback SPEEDDEC Decrease the playback speed J REPLACEME +TV Playback TOGGLECHANCONTROLS Recording picture adjustments for this channel Ctrl+G REPLACEME +TV Playback GUIDE Show the Program Guide S REPLACEME +TV Playback JUMPPREV Jump to previously played recording REPLACEME +TV Playback QUEUETRANSCODE Queue the current recording for transcoding X REPLACEME +TV Playback STRETCHINC Increase time stretch speed REPLACEME +TV Playback TOGGLEPICCONTROLS Playback picture adjustments F REPLACEME +TV Playback PREVCC708 Previous ATSC CC track REPLACEME +TV Playback NEXTCC708 Next ATSC CC track REPLACEME +TV Playback NEXTCC Next of any captions REPLACEME +TV Playback NEXTSCAN Next video scan overidemode REPLACEME +TV Playback NEXTCC608 Next VBI CC track REPLACEME +TV Playback PREVCC608 Previous VBI CC track REPLACEME +TV Playback PREVAUDIO Previous audio track - REPLACEME +TV Playback PREVSUBTITLE Previous subtitle track REPLACEME +TV Playback NEXTSUBTITLE Next subtitle track REPLACEME +TV Playback NEXTAUDIO Next audio track + REPLACEME +TV Playback SELECTCC708_3 Display ATSC CC4 REPLACEME +TV Playback SELECTCC708_0 Display ATSC CC1 REPLACEME +TV Playback SELECTCC608_1 Display VBI CC2 REPLACEME +TV Playback SELECTAUDIO_0 Play audio track 1 REPLACEME +TV Playback SELECTCC608_2 Display VBI CC3 REPLACEME +TV Playback TOGGLETTM Toggle Teletext Menu REPLACEME +TV Playback SELECTSUBTITLE_1 Display subtitle 2 REPLACEME +TV Playback SELECTCC608_3 Display VBI CC4 REPLACEME +TV Playback SELECTCC708_1 Display ATSC CC2 REPLACEME +TV Playback SELECTCC708_2 Display ATSC CC3 REPLACEME +TV Playback SELECTAUDIO_1 Play audio track 2 REPLACEME +TV Playback SELECTSUBTITLE_0 Display subtitle 1 REPLACEME +TV Playback TOGGLETTC Toggle Teletext Captions REPLACEME +TV Playback SELECTCC608_0 Display VBI CC1 REPLACEME +TV Playback SWAPPIP Swap PiP/Main N REPLACEME +TV Playback TOGGLEASPECT Toggle the display aspect ratio W REPLACEME +TV Playback TOGGLECC708 Toggle ATSC CC REPLACEME +TV Playback TOGGLECC608 Toggle VBI CC REPLACEME +TV Playback TOGGLEPIPMODE Toggle Picture-in-Picture mode V REPLACEME +TV Playback TOGGLEFAV Toggle the current channel as a favorite ? REPLACEME +TV Playback TOGGLEPIPWINDOW Toggle active PiP window B REPLACEME +TV Playback MUTE Mute |,\\\\,F9 REPLACEME +TV Playback TOGGLEBROWSE Toggle channel browse mode O REPLACEME +TV Playback TOGGLESUBTITLE Toggle Subtitles REPLACEME +TV Playback VOLUMEUP Volume up ],},F11 REPLACEME +TV Playback TOGGLECC Toggle any captions T REPLACEME +TV Playback JUMPSTART Jump to the start of the recording. Ctrl+B REPLACEME +TV Playback TOGGLERECORD Toggle recording status of current program R REPLACEME +TV Playback SKIPCOMMERCIAL Skip Commercial Z,End REPLACEME +TV Playback VOLUMEDOWN Volume down [,{,F10 REPLACEME +TV Playback SWITCHCARDS Switch Capture Cards Y REPLACEME +TV Playback SKIPCOMMBACK Skip Commercial (Reverse) Q,Home REPLACEME +TV Playback TOGGLEINPUTS Toggle Inputs C REPLACEME +TV Playback FFWDSTICKY Fast Forward (Sticky) or Forward one frame while paused >,. REPLACEME +TV Playback JUMPFFWD Jump ahead PgDown REPLACEME +TV Playback PREVCHAN Switch to the previous channel H REPLACEME +TV Playback JUMPBKMRK Jump to bookmark K REPLACEME +TV Playback RWNDSTICKY Rewind (Sticky) or Rewind one frame while paused ,,< REPLACEME +TV Playback NEXTFAV Switch to the next favorite channel / REPLACEME +TV Playback JUMPRWND Jump back PgUp REPLACEME +TV Playback SEEKRWND Rewind Left REPLACEME +TV Playback SEEKFFWD Fast Forward Right REPLACEME +TV Playback CHANNELDOWN Channel down Down REPLACEME +TV Playback CHANNELUP Channel up Up REPLACEME +TV Playback ARBSEEK Arbitrary Seek * REPLACEME +TV Playback DELETE Delete Program D REPLACEME +TV Playback CLEAROSD Clear OSD Backspace REPLACEME +TV Frontend DETAILS Show program details U REPLACEME +TV Frontend CUSTOMEDIT Edit Custom Record Rule E REPLACEME +TV Frontend UPCOMING List upcoming episodes O REPLACEME +TV Frontend CHANUPDATE Switch channels without exiting guide in Live TV mode. X REPLACEME +TV Frontend RANKDEC Decrease program or channel rank Left REPLACEME +TV Frontend VIEWCARD Switch Capture Card view Y REPLACEME +TV Playback PAUSE Pause P REPLACEME +TV Frontend RANKINC Increase program or channel rank Right REPLACEME +TV Frontend PAGERIGHT Page the program guide right >,. REPLACEME +TV Frontend PAGELEFT Page the program guide left ,,< REPLACEME +TV Frontend NEXTFAV Toggle showing all channels or just favorites in the program guide. / REPLACEME +Gallery DELETE Delete marked images or current image if none are marked D REPLACEME +TV Frontend DAYRIGHT Page the program guide forward one day End,1 REPLACEME +Gallery MARK Mark image T REPLACEME +Game TOGGLEFAV Toggle the current game as a favorite ?,/ REPLACEME +TV Frontend TOGGLEFAV Toggle the current channel as a favorite ? REPLACEME +TV Frontend DAYLEFT Page the program guide back one day Home,7 REPLACEME +Music PREVTRACK Move to the previous track ,,<,Q,Home REPLACEME +Game INCSEARCHNEXT Incremental search find next match Ctrl+N REPLACEME +Music DELETE Delete track from playlist D REPLACEME +Gallery INFO Toggle Showing Information about Image I REPLACEME +Game INCSEARCH Show incremental search dialog Ctrl+S REPLACEME +Music REFRESH Refresh music tree 8 REPLACEME +Music NEXTTRACK Move to the next track >,.,Z,End REPLACEME +Music FILTER Filter All My Music F REPLACEME +Music THMBDOWN Decrease rating 7 REPLACEME diff --git a/abs/core/system-templates/templates/settings/default_2/settings.txt b/abs/core/system-templates/templates/settings/default_2/settings.txt new file mode 100644 index 0000000..106be04 --- /dev/null +++ b/abs/core/system-templates/templates/settings/default_2/settings.txt @@ -0,0 +1,320 @@ +value data hostname +AC3PassThru 0 REPLACEME +AggressiveSoundcardBuffer 0 REPLACEME +AllowQuitShutdown 3 REPLACEME +AltClearSavedPosition 1 REPLACEME +AspectOverride 0 REPLACEME +AudioNag 1 REPLACEME +AudioOutputDevice /dev/dsp REPLACEME +AutoCommercialSkip 2 REPLACEME +AutoLookupCD 1 REPLACEME +AutomaticSetWatched 0 REPLACEME +AutoPlayCD 0 REPLACEME +BackendServerPort 6543 REPLACEME +BackendStatusPort 6544 REPLACEME +CCBackground 0 REPLACEME +CDBlankType fast REPLACEME +CDCreateDir 1 REPLACEME +CDDevice /dev/cdrom REPLACEME +CDDiskSize 1 REPLACEME +CDWriterEnabled 0 REPLACEME +CDWriteSpeed 0 REPLACEME +ChannelFormat REPLACEME +ChannelOrdering channum REPLACEME +chanPerPage 5 REPLACEME +ClearSavedPosition 1 REPLACEME +CommNotifyAmount 0 REPLACEME +CommRewindAmount 0 REPLACEME +CustomFilters REPLACEME +DateFormat ddd MMM d REPLACEME +DecodeExtraAudio 1 REPLACEME +Default MythVideo View 1 REPLACEME +DefaultCCMode 0 REPLACEME +DefaultRipQuality 0 REPLACEME +DefaultTVChannel 3 REPLACEME +Deinterlace 1 REPLACEME +DeinterlaceFilter kerneldeint REPLACEME +DisplayGroupDefaultView 0 REPLACEME +DisplayGroupTitleSort 0 REPLACEME +DisplayRecGroup Default REPLACEME +DispRecGroupAsAllProg 0 REPLACEME +DTSPassThru 0 REPLACEME +DVDDeviceLocation /dev/dvd REPLACEME +DVDOnInsertDVD 1 REPLACEME +DVDRipLocation /data/media/tmp REPLACEME +EjectCDAfterRipping 1 REPLACEME +EnableMHEG 0 REPLACEME +EnableXbox 0 REPLACEME +EnableXbox 0 REPLACEME +EncoderType ogg REPLACEME +EndOfRecordingExitPrompt 1 REPLACEME +EPGFillType 10 REPLACEME +EPGScrollType 1 REPLACEME +EPGShowCategoryColors 1 REPLACEME +EPGShowCategoryText 1 REPLACEME +EPGShowChannelIcon 1 REPLACEME +EPGShowFavorites 0 REPLACEME +ExactSeeking 0 REPLACEME +FFRewReposTime 100 REPLACEME +FFRewReverse 1 REPLACEME +FilenameTemplate ARTIST/ALBUM/TRACK-TITLE REPLACEME +GalleryDir /data/media/images REPLACEME +GalleryImportDirs /mnt/cdrom:/mnt/camera REPLACEME +GalleryMoviePlayerCmd mplayer -fs %s REPLACEME +GalleryOverlayCaption 0 REPLACEME +GalleryRecursiveSlideshow 1 REPLACEME +GallerySortOrder 20 REPLACEME +GalleryThumbnailLocation 1 REPLACEME +GameAllTreeLevels system gamename REPLACEME +GameFavTreeLevels gamename REPLACEME +GeneratePreviewPixmaps 0 REPLACEME +GuiHeight 0 REPLACEME +GuiOffsetX 0 REPLACEME +GuiOffsetY 0 REPLACEME +GuiSizeForTV 0 REPLACEME +GuiVidModeResolution 640x480 REPLACEME +GuiWidth 0 REPLACEME +HaltCommand halt REPLACEME +HideMouseCursor 1 REPLACEME +HorizScanPercentage 0 REPLACEME +Ignore_ID3 0 REPLACEME +IndividualMuteControl 0 REPLACEME +IntelliLastPlayWeight 25 REPLACEME +IntelliPlayCountWeight 25 REPLACEME +IntelliRandomWeight 15 REPLACEME +IntelliRatingWeight 35 REPLACEME +ISO639Language0 eng REPLACEME +ISO639Language1 eng REPLACEME +JobAllowCommFlag 1 REPLACEME +JobAllowTranscode 1 REPLACEME +JobQueueCheckFrequency 60 REPLACEME +JobQueueCPU 0 REPLACEME +JobQueueMaxSimultaneousJobs 1 REPLACEME +JobQueueWindowEnd 23:59 REPLACEME +JobQueueWindowStart 00:00 REPLACEME +KeyboardAccelerators 1 REPLACEME +Language EN REPLACEME +LastMusicPlaylistPush 0 REPLACEME +LCDBacklightOn 1 REPLACEME +LCDBigClock 0 REPLACEME +LCDEnable 0 REPLACEME +LCDHeartBeatOn 0 REPLACEME +LCDKeyString ABCDEF REPLACEME +LCDPopupTime 5 REPLACEME +LCDShowChannel 1 REPLACEME +LCDShowGeneric 1 REPLACEME +LCDShowMenu 1 REPLACEME +LCDShowMusic 1 REPLACEME +LCDShowMusicItems ArtistTitle REPLACEME +LCDShowRecStatus 0 REPLACEME +LCDShowTime 1 REPLACEME +LCDShowVolume 1 REPLACEME +LircKeyPressedApp REPLACEME +ListAsShuffled 0 REPLACEME +LiveTVInAllPrograms 0 REPLACEME +LogCleanDays 14 REPLACEME +LogCleanDays 14 REPLACEME +LogCleanEnabled 0 REPLACEME +LogCleanEnabled 0 REPLACEME +LogCleanMax 30 REPLACEME +LogCleanMax 30 REPLACEME +LogCleanPeriod 14 REPLACEME +LogCleanPeriod 14 REPLACEME +LogMaxCount 100 REPLACEME +LogMaxCount 100 REPLACEME +LogPrintLevel 8 REPLACEME +LogPrintLevel 8 REPLACEME +LongChannelFormat REPLACEME +MasterMixerVolume 70 REPLACEME +MenuTheme STB-menu REPLACEME +MixerControl PCM REPLACEME +MixerDevice /dev/mixer REPLACEME +MonitorDrives 0 REPLACEME +MovieDataCommandLine /usr/local/share/mythtv/mythvideo/scripts/imdb.pl -D REPLACEME +MovieListCommandLine /usr/local/share/mythtv/mythvideo/scripts/imdb.pl -M tv=no;video=no REPLACEME +MoviePosterCommandLine /usr/local/share/mythtv/mythvideo/scripts/imdb.pl -P REPLACEME +Mp3UseVBR 0 REPLACEME +MTDac3Flag 0 REPLACEME +MTDConcurrentTranscodes 1 REPLACEME +MTDLogFlag 0 REPLACEME +MTDNiceLevel 20 REPLACEME +MTDPort 2442 REPLACEME +MTDRipSize 0 REPLACEME +MTDxvidFlag 1 REPLACEME +MusicAudioDevice default REPLACEME +MusicLocation /data/media/audio REPLACEME +MusicShowRatings 0 REPLACEME +MythArchiveAlwaysUseMythTranscode 1 REPLACEME +MythArchiveChapterMenuAR Video REPLACEME +MythArchiveCopyRemoteFiles 1 REPLACEME +MythArchiveDateFormat %a %b %d REPLACEME +MythArchiveDvdauthorCmd dvdauthor REPLACEME +MythArchiveDVDLocation /dev/dvd REPLACEME +MythArchiveEncodeToAc3 1 REPLACEME +MythArchiveFfmpegCmd ffmpeg REPLACEME +MythArchiveFileFilter *.mpg *.mov *.avi *.mpeg *.nuv REPLACEME +MythArchiveGrowisofsCmd growisofs REPLACEME +MythArchiveMainMenuAR 16:9 REPLACEME +MythArchiveMkisofsCmd mkisofs REPLACEME +MythArchiveMpeg2encCmd mpeg2enc REPLACEME +MythArchiveMplexCmd mplex REPLACEME +MythArchivePng2yuvCmd png2yuv REPLACEME +MythArchiveShareDir /usr/local/share/mythtv/mytharchive/ REPLACEME +MythArchiveSpumuxCmd spumux REPLACEME +MythArchiveTcrequantCmd tcrequant REPLACEME +MythArchiveTempDir /data/media/tmp REPLACEME +MythArchiveTimeFormat %I:%M %p REPLACEME +MythArchiveUseFIFO 1 REPLACEME +MythArchiveVideoFormat NTSC REPLACEME +MythControlsVolume 1 REPLACEME +mythdvd.DVDPlayerCommand Internal REPLACEME +mythvideo.db_folder_view 1 REPLACEME +mythvideo.ImageCacheSize 50 REPLACEME +mythvideo.sort_ignores_case 1 REPLACEME +NetworkControlEnabled 1 REPLACEME +NetworkControlPort 6546 REPLACEME +NonID3FileNameFormat GENRE/ARTIST/ALBUM/TRACK_TITLE REPLACEME +NoPromptOnExit 0 REPLACEME +NoWhitespace 0 REPLACEME +OnlyImportNewMusic 0 REPLACEME +OSDCC708CapitalsFont FreeMono.ttf REPLACEME +OSDCC708CapitalsItalicFont FreeMono.ttf REPLACEME +OSDCC708CasualFont FreeMono.ttf REPLACEME +OSDCC708CasualItalicFont FreeMono.ttf REPLACEME +OSDCC708CursiveFont FreeMono.ttf REPLACEME +OSDCC708CursiveItalicFont FreeMono.ttf REPLACEME +OSDCC708DefaultFontType MonoSerif REPLACEME +OSDCC708MonoSansSerifFont FreeMono.ttf REPLACEME +OSDCC708MonoSansSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708MonoSerifFont FreeMono.ttf REPLACEME +OSDCC708MonoSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708PropSansSerifFont FreeMono.ttf REPLACEME +OSDCC708PropSansSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708PropSerifFont FreeMono.ttf REPLACEME +OSDCC708PropSerifItalicFont FreeMono.ttf REPLACEME +OSDCC708TextZoom 100 REPLACEME +OSDCCFont FreeMono.ttf REPLACEME +OSDFont FreeMono.ttf REPLACEME +OSDGeneralTimeout 2 REPLACEME +OSDNotifyTimeout 6 REPLACEME +OSDProgramInfoTimeout 3 REPLACEME +OSDTheme Gray-OSD REPLACEME +OSDThemeFontSizeType default REPLACEME +ParanoiaLevel Full REPLACEME +PassThruOutputDevice Default REPLACEME +PCMMixerVolume 70 REPLACEME +PersistentBrowseMode 1 REPLACEME +PIPLocation 0 REPLACEME +PlaybackBoxStartInTitle 1 REPLACEME +PlaybackExitPrompt 2 REPLACEME +PlaybackPreview 1 REPLACEME +PlaybackPreviewLowCPU 1 REPLACEME +PlayBoxEpisodeSort Date REPLACEME +PlayBoxOrdering 1 REPLACEME +PlayBoxShading 0 REPLACEME +PlayBoxTransparency 1 REPLACEME +PlayMode none REPLACEME +PostCDRipScript REPLACEME +PreferredMPEG2Decoder ffmpeg REPLACEME +PreviewFromBookmark 1 REPLACEME +PVR350EPGAlphaValue 164 REPLACEME +PVR350InternalAudioOnly 0 REPLACEME +PVR350OutputEnable 0 REPLACEME +PVR350VideoDev /dev/video16 REPLACEME +QtFontBig 25 REPLACEME +QtFontMedium 16 REPLACEME +QtFontSmall 12 REPLACEME +QueryInitialFilter 0 REPLACEME +RandomTheme 0 REPLACEME +RealtimePriority 1 REPLACEME +RecordFilePrefix /data/media/video/recordings REPLACEME +RememberRecGroup 1 REPLACEME +RepeatMode all REPLACEME +RunFrontendInWindow 0 REPLACEME +SelChangeRecThreshold 16 REPLACEME +SelectChangesChannel 1 REPLACEME +ServiceMythWEB 0 REPLACEME +ServiceNFS 0 REPLACEME +ServiceSamba 0 REPLACEME +SetupPinCodeRequired 0 REPLACEME +ShortDateFormat M/d REPLACEME +ShowGroupInfo 0 REPLACEME +ShowWholeTree 1 REPLACEME +SlideshowBackground REPLACEME +SlideshowDelay 5 REPLACEME +SlideshowOpenGLTransition none REPLACEME +SlideshowOpenGLTransitionLength 2000 REPLACEME +SlideshowTransition none REPLACEME +SmartChannelChange 0 REPLACEME +SmartForward 0 REPLACEME +StickyKeys 1 REPLACEME +Style REPLACEME +SubTitleCommand -sid %s REPLACEME +TagSeparator - REPLACEME +Theme basic-blue REPLACEME +ThemeFontSizeType default REPLACEME +ThemePainter qt REPLACEME +TimeFormat h:mm AP REPLACEME +timePerPage 4 REPLACEME +TitlePlayCommand mplayer dvd://%t -dvd-device %d -fs -zoom -vo xv -aid %a -channels %c REPLACEME +TranscodeCommand transcode REPLACEME +TreeLevels splitartist artist album title REPLACEME +TVVidModeForceAspect 0.0 REPLACEME +TVVidModeForceAspect0 0.0 REPLACEME +TVVidModeForceAspect1 0.0 REPLACEME +TVVidModeForceAspect2 0.0 REPLACEME +TVVidModeRefreshRate 0 REPLACEME +TVVidModeRefreshRate0 0 REPLACEME +TVVidModeRefreshRate1 0 REPLACEME +TVVidModeRefreshRate2 0 REPLACEME +TVVidModeResolution 640x480 REPLACEME +TVVidModeResolution0 640x480 REPLACEME +TVVidModeResolution1 640x480 REPLACEME +TVVidModeResolution2 640x480 REPLACEME +UDPNotifyPort 6948 REPLACEME +UnknownCategory Unknown REPLACEME +UnknownTitle Unknown REPLACEME +upnp:UDN:urn:schemas-upnp-org:device:MediaServer:1 dee5b0fe-7087-4960-8794-428d3e01a61f REPLACEME +UseArrowAccels 1 REPLACEME +UseDHCP 1 REPLACEME +UseOutputPictureControls 1 REPLACEME +UseVideoModes 0 REPLACEME +UseVideoTimebase 0 REPLACEME +UseVirtualKeyboard 1 REPLACEME +VCDDeviceLocation /dev/cdrom REPLACEME +VCDPlayerCommand mplayer vcd:// -cdrom-device %d -fs -zoom -vo xv REPLACEME +VertScanPercentage 0 REPLACEME +VideoAggressivePC 0 REPLACEME +VideoArtworkDir /data/media/images/posters REPLACEME +VideoBrowserNoDB 0 REPLACEME +VideoDefaultParentalLevel 4 REPLACEME +VideoGalleryAspectRatio 1 REPLACEME +VideoGalleryColsPerPage 4 REPLACEME +VideoGalleryNoDB 0 REPLACEME +VideoGalleryRowsPerPage 3 REPLACEME +VideoGallerySubtitle 1 REPLACEME +VideoDefaultPlayer /usr/bin/playmedia.sh VIDEO %s REPLACEME +VideoListUnknownFiletypes 1 REPLACEME +VideoNewBrowsable 1 REPLACEME +VideoStartupDir /data/media/video/movies REPLACEME +VideoTreeLoadMetaData 1 REPLACEME +VideoTreeNoDB 0 REPLACEME +VidModeHeight0 0 REPLACEME +VidModeHeight1 0 REPLACEME +VidModeHeight2 0 REPLACEME +VidModeWidth0 0 REPLACEME +VidModeWidth1 0 REPLACEME +VidModeWidth2 0 REPLACEME +VisualCycleOnSongChange 0 REPLACEME +VisualMode Random REPLACEME +VisualModeDelay 0 REPLACEME +VisualScaleHeight 1 REPLACEME +VisualScaleWidth 1 REPLACEME +WatchTVGuide 0 REPLACEME +WebBrowserCommand /usr/local/bin/mythbrowser REPLACEME +WebBrowserHideScrollbars 0 REPLACEME +WebBrowserScrollMode 1 REPLACEME +WebBrowserScrollSpeed 4 REPLACEME +WebBrowserZoomLevel 20 REPLACEME +XScanDisplacement 0 REPLACEME +YScanDisplacement 0 REPLACEME diff --git a/abs/core/system-templates/templates/sources/mv-core b/abs/core/system-templates/templates/sources/mv-core new file mode 100644 index 0000000..f9f6c97 --- /dev/null +++ b/abs/core/system-templates/templates/sources/mv-core @@ -0,0 +1,2 @@ +#Begin official list of mirrors +Server = http://www.mythvantage.com/repo/mv-core diff --git a/abs/core/system-templates/templates/sources/mv-core-testing b/abs/core/system-templates/templates/sources/mv-core-testing new file mode 100644 index 0000000..1fce6ea --- /dev/null +++ b/abs/core/system-templates/templates/sources/mv-core-testing @@ -0,0 +1,2 @@ +#Begin official list of mirrors +Server = http://www.mythvantage.com/repo/mv-core-testing diff --git a/abs/core/system-templates/templates/sources/mv-extra b/abs/core/system-templates/templates/sources/mv-extra new file mode 100644 index 0000000..e13640f --- /dev/null +++ b/abs/core/system-templates/templates/sources/mv-extra @@ -0,0 +1,2 @@ +#Begin official list of mirrors +Server = http://www.mythvantage.com/repo/mv-extra diff --git a/abs/core/system-templates/templates/sources/mv-extra-testing b/abs/core/system-templates/templates/sources/mv-extra-testing new file mode 100644 index 0000000..c176add --- /dev/null +++ b/abs/core/system-templates/templates/sources/mv-extra-testing @@ -0,0 +1,2 @@ +##Begin official list of mirrors +Server = http://www.mythvantage.com/repo/mv-extra-testing diff --git a/abs/core/system-templates/templates/sources/svc_pkg b/abs/core/system-templates/templates/sources/svc_pkg new file mode 100644 index 0000000..c1efdcc --- /dev/null +++ b/abs/core/system-templates/templates/sources/svc_pkg @@ -0,0 +1,3 @@ +[svc_pkg] +Server = http://REPLACEME/repo/mirror/svc_pkg/os/i686 + diff --git a/abs/core/system-templates/templates/transmit/Time_Warner_SA3250/lircd.conf b/abs/core/system-templates/templates/transmit/Time_Warner_SA3250/lircd.conf new file mode 100755 index 0000000..51db997 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/Time_Warner_SA3250/lircd.conf @@ -0,0 +1,413 @@ +# + +begin remote + + name Time_Warner_SA3250 + flags CONST_LENGTH|RAW_CODES + eps 30 + aeps 100 + + ptrail 0 + repeat 0 0 + gap 100240 + frequency 57600 + + begin raw_codes + + name MUTE + 972 802 971 802 1887 778 + 971 798 971 798 972 798 + 971 798 972 798 971 1677 + 972 802 1887 1656 992 + + name POWER + 3450 3229 894 2468 891 2468 + 893 778 892 2468 891 2469 + 917 2444 891 2468 892 2469 + 891 779 892 778 918 752 + 917 754 917 752 892 2471 + 889 779 892 779 892 777 + 892 779 892 777 868 2492 + 892 2469 891 2470 890 + + name GUIDE + 3397 3285 890 2470 840 2519 + 916 755 891 2470 839 2520 + 891 780 891 2474 860 2495 + 892 778 917 754 890 780 + 891 781 864 804 917 2443 + 865 805 891 779 866 2495 + 864 805 892 779 891 2469 + 865 2495 891 2469 866 + + + name INFO + 3449 3231 918 2441 920 2440 + 920 750 947 2414 920 2440 + 920 750 894 777 919 750 + 947 2413 921 750 919 750 + 920 751 919 752 918 2441 + 921 749 895 776 919 2441 + 920 2440 920 2441 920 749 + 921 2439 921 2440 921 + + name UP + 3396 3285 915 2444 919 2442 + 918 752 916 2444 919 2441 + 919 751 916 2445 919 751 + 890 780 916 753 917 754 + 942 729 889 780 916 2445 + 919 751 915 756 914 2448 + 916 752 916 2444 918 2442 + 919 2441 918 2443 918 + + name DOWN + 3421 3261 890 2470 918 2442 + 919 751 916 2446 917 2441 + 919 2442 918 2442 918 752 + 916 2444 919 751 890 780 + 916 755 915 755 915 2445 + 919 753 914 755 889 781 + 889 781 916 2444 919 752 + 889 2471 919 2441 918 + + name LEFT + 3427 3255 918 2441 924 2437 + 920 750 918 2442 920 2441 + 919 2440 921 2439 921 750 + 919 751 944 726 919 752 + 917 753 918 751 944 2417 + 920 750 893 777 919 751 + 919 752 918 2441 921 2440 + 920 2440 920 2440 921 + + name RIGHT + 3424 3258 892 2466 921 2439 + 896 774 920 2441 920 2440 + 920 750 920 751 945 2414 + 921 750 919 751 920 750 + 919 752 919 751 919 2440 + 921 750 918 752 918 2442 + 920 2440 921 749 918 2443 + 920 2440 920 2441 919 + + name SELECT + 3424 3257 944 2416 919 2442 + 919 750 918 2442 920 2441 + 919 751 943 727 918 2442 + 920 2440 920 752 916 752 + 969 702 917 753 892 2468 + 919 751 892 778 918 2442 + 924 2436 921 750 917 753 + 918 2443 919 2441 919 + + name SETTINGS + 3402 3278 871 2491 921 2438 + 921 749 922 2440 919 2441 + 919 2440 921 749 921 750 + 895 2465 920 2440 921 2440 + 920 749 896 775 921 2439 + 920 749 923 748 895 775 + 922 2439 920 2440 920 749 + 897 774 896 774 921 + + name EXIT + 3400 3279 896 2464 921 2439 + 921 750 895 2465 921 2439 + 921 749 898 772 896 2465 + 920 2440 920 750 920 2441 + 920 749 896 774 870 2491 + 921 749 921 749 895 2465 + 921 2440 920 749 922 748 + 897 2464 920 750 896 + + name PGUP + 3425 3255 920 2440 920 2440 + 921 749 895 2466 920 2440 + 920 749 920 2441 896 2464 + 921 749 919 2445 917 2440 + 920 750 920 750 920 2441 + 921 748 921 749 920 2440 + 921 750 919 752 919 2440 + 921 749 921 750 919 + + name PGDN + 3400 3281 921 2438 921 2441 + 920 749 895 2465 896 2465 + 920 2440 920 2440 920 2440 + 921 749 896 2465 895 2465 + 920 750 895 775 920 2440 + 921 749 921 750 895 775 + 896 774 896 774 921 2439 + 921 749 921 751 894 + + name VOLUP + 995 778 1886 779 994 775 + 995 777 993 774 996 774 + 995 775 995 1654 1885 778 + 995 775 995 774 995 + + name VOLDN + 996 778 971 802 1862 803 + 970 799 996 774 995 774 + 996 774 995 1654 1886 778 + 996 773 971 1678 991 + + name CHUP + 3421 3259 916 2444 918 2443 + 918 751 917 2444 919 2441 + 919 2441 919 751 916 2444 + 919 2441 919 2443 918 751 + 941 729 916 755 917 2442 + 919 752 916 754 891 778 + 918 2444 918 751 916 754 + 917 753 916 2445 919 + + name CHDN + 3421 3260 915 2445 918 2442 + 919 751 891 2469 919 2441 + 927 745 915 2444 919 2441 + 919 2441 919 2442 918 752 + 915 755 890 780 917 2443 + 919 752 916 754 915 2445 + 919 751 915 755 890 781 + 914 756 916 2445 917 + + name A + 3425 3258 916 2442 920 2441 + 919 751 918 2442 919 2441 + 920 2440 920 2441 919 2441 + 919 2441 920 750 917 2443 + 920 751 917 752 919 2442 + 920 750 918 753 917 753 + 917 753 942 728 917 753 + 918 2442 920 750 942 + + name B + 3398 3283 916 2443 892 2470 + 892 778 892 2468 891 2475 + 886 779 916 754 892 777 + 892 778 919 2442 891 2468 + 918 753 892 778 891 2469 + 892 778 892 778 918 2443 + 891 2469 892 2467 893 2469 + 891 778 918 753 892 + + name C + 3396 3283 891 2469 892 2468 + 892 778 917 2444 892 2468 + 892 2469 891 778 892 779 + 893 777 892 2468 892 2468 + 918 752 893 777 892 2469 + 892 778 892 778 867 802 + 918 2444 917 2442 868 2492 + 893 778 892 779 916 + + name 1 + 3424 3257 890 2470 865 2495 + 891 780 892 2468 865 2495 + 892 777 891 780 892 779 + 890 780 916 2444 865 805 + 891 779 917 753 916 2445 + 865 805 916 754 892 2469 + 865 2494 916 2445 865 2495 + 891 779 917 2443 866 + + name 2 + 3422 3258 916 2444 865 2496 + 889 782 915 2444 865 2495 + 917 2444 839 830 891 780 + 915 755 890 2470 864 806 + 917 753 891 780 866 2495 + 864 805 891 779 892 779 + 865 2494 865 2496 891 2469 + 865 805 891 2469 865 + + name 3 + 3397 3284 916 2443 892 2468 + 892 779 893 2467 892 2468 + 917 753 892 2469 891 778 + 893 778 891 2469 892 778 + 918 753 890 779 893 2468 + 891 779 893 778 891 2469 + 892 777 893 2468 891 2468 + 917 754 943 2417 892 + + name 4 + 3421 3261 890 2470 839 2520 + 917 753 891 2470 865 2495 + 917 2443 865 2495 890 781 + 891 778 891 2470 865 804 + 895 776 892 779 891 2468 + 866 805 917 753 943 727 + 866 805 889 2471 865 2494 + 892 780 916 2444 865 + + name 5 + 3396 3282 920 2441 892 2467 + 894 778 891 2468 892 2469 + 891 780 866 802 893 2470 + 890 779 918 2443 891 777 + 892 779 918 752 892 2468 + 892 779 918 752 918 2443 + 891 2469 891 779 891 2469 + 892 778 891 2468 893 + + name 6 + 3396 3284 918 2442 866 2494 + 892 778 917 2444 866 2494 + 917 2444 865 804 893 2468 + 890 780 916 2445 890 779 + 892 779 891 778 918 2443 + 891 778 892 779 892 779 + 891 2468 892 778 919 2444 + 889 778 893 2468 891 + + name 7 + 3398 3282 893 2467 892 2468 + 893 779 891 2469 891 2468 + 919 752 892 2467 892 2469 + 891 779 892 2468 892 777 + 893 778 918 752 892 2468 + 893 779 916 753 918 2442 + 892 779 891 778 893 2468 + 892 778 893 2467 892 + + name 8 + 3448 3232 892 2468 866 2494 + 892 779 892 2467 867 2494 + 891 2469 866 2495 891 2469 + 865 805 968 2394 864 804 + 918 753 891 779 892 2468 + 866 804 917 754 891 780 + 916 752 917 754 892 2469 + 865 804 893 2468 890 + + name 9 + 3422 3258 891 2469 839 2521 + 891 780 892 2468 824 2536 + 916 754 916 755 891 779 + 866 2494 839 2522 891 778 + 892 778 890 781 915 2448 + 837 831 891 779 890 2470 + 837 2523 942 2418 838 832 + 892 778 890 2471 839 + + name 0 + 3398 3284 891 2469 890 2469 + 893 779 891 2468 892 2468 + 892 2468 892 778 892 779 + 891 2469 892 2468 893 778 + 892 777 893 777 893 2469 + 891 778 892 779 868 802 + 917 2443 892 2469 890 779 + 891 779 892 2468 893 + + name LAST + 3422 3258 891 2471 916 2443 + 891 780 891 2469 272 3088 + 865 805 916 2445 308 3052 + 890 2469 892 779 915 756 + 889 781 889 780 890 2471 + 890 779 889 781 891 2471 + 272 1397 890 779 891 781 + 890 2469 448 2912 917 + + name FAV + 3423 3257 918 2442 944 2417 + 917 753 892 2469 890 2471 + 324 3036 890 2469 379 289 + 167 2525 891 2470 379 2981 + 890 780 378 270 242 781 + 866 806 889 2469 786 884 + 891 779 891 779 892 779 + 916 754 890 779 892 778 + 891 2470 839 + + name REW + 3420 3258 916 2445 326 3033 + 891 780 916 2443 891 2469 + 916 2445 838 831 918 754 + 890 2471 837 832 916 2444 + 838 832 891 779 916 2445 + 838 831 892 779 890 780 + 892 2469 839 2520 891 780 + 915 2444 836 836 890 + + name PLAY + 3448 3233 916 2444 891 2469 + 917 753 892 2468 918 2443 + 941 2420 891 2468 917 754 + 915 755 914 2446 918 2443 + 916 754 916 753 945 2416 + 943 727 941 729 918 752 + 917 753 919 2442 916 2444 + 915 755 943 728 916 + + name FF + 3420 3259 917 2442 946 2415 + 918 752 916 2445 918 2441 + 943 728 917 753 942 728 + 892 2470 864 806 889 2471 + 865 805 918 752 916 2443 + 944 726 892 779 891 2470 + 891 2469 915 2445 917 753 + 890 2471 222 1447 891 + + name PAUSE + 3421 3259 891 2470 787 2573 + 890 780 916 2444 840 2520 + 892 2468 864 806 917 2444 + 839 831 890 780 891 779 + 891 780 891 779 889 2471 + 839 831 916 755 915 754 + 892 2469 839 830 917 2444 + 840 2521 891 2469 840 + + name STOP + 3398 3284 889 2471 325 3036 + 891 779 890 2470 395 290 + 140 2535 889 781 890 781 + 889 2470 274 1397 891 2470 + 272 3087 917 754 890 780 + 889 2472 293 1377 890 779 + 916 2444 448 2913 916 754 + 866 2495 325 1344 891 779 + 915 + + name REC + 3421 3258 917 2444 916 2444 + 942 729 942 2420 889 2469 + 992 2367 942 730 891 2468 + 917 754 916 2443 892 2470 + 892 777 916 754 892 2467 + 943 730 916 754 891 779 + 917 2442 917 754 943 2417 + 918 753 915 754 892 + + name BYPASS + 3450 3231 891 2470 890 2470 + 917 753 916 2447 913 2445 + 273 3088 889 780 890 2470 + 891 2469 916 755 890 780 + 942 727 918 752 916 2444 + 890 782 916 754 865 805 + 891 2469 891 780 889 781 + 891 2468 259 3102 866 + + name TV/VCR + 19945 3915 612 1873 560 1926 + 560 1925 561 931 560 931 + 587 905 559 931 563 931 + 557 932 561 1925 585 908 + 583 1901 559 931 586 905 + 585 907 610 1875 561 1924 + 561 1926 559 1926 535 1951 + 559 1925 586 907 585 1899 + 560 931 1048 7898 3707 3862 + 587 1899 586 1899 586 1900 + 559 932 586 908 323 + + end raw_codes + + end remote diff --git a/abs/core/system-templates/templates/transmit/amino_STB/lircd.conf b/abs/core/system-templates/templates/transmit/amino_STB/lircd.conf new file mode 100755 index 0000000..904c927 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/amino_STB/lircd.conf @@ -0,0 +1,162 @@ +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.0(serial) on Mon Nov 20 19:45:54 2006 +# +# brand: +# Amino +# devices being controlled by this remote: +# Net110 (SureWest Broadband) +# + +begin remote + +name amino_110 +flags RAW_CODES|CONST_LENGTH +eps 30 +aeps 100 + +ptrail 0 +repeat 0 0 +gap 99196 + +begin raw_codes + +name ok +2011 1476 877 243 274 250 +295 251 291 230 572 264 +304 498 569 514 312 252 +293 253 288 230 317 252 +293 253 288 233 314 252 +289 231 314 253 293 252 +554 518 564 259 311 253 +289 232 314 253 292 253 +289 253 293 493 569 519 +307 229 316 + +name 1 +1979 1506 873 247 274 252 +289 252 293 253 550 258 +311 494 569 518 309 253 +288 253 320 248 299 243 +273 250 293 253 290 231 +316 250 295 250 292 250 +295 251 291 230 316 252 +551 519 567 257 312 251 +295 252 291 230 315 251 +295 251 290 492 311 + +name 2 +1955 1533 848 254 288 232 +314 252 294 252 553 254 +311 495 568 520 305 232 +314 256 289 252 292 230 +315 251 291 230 315 231 +316 250 291 230 316 255 +291 250 291 230 315 253 +551 262 304 257 289 252 +291 230 316 250 292 229 +316 230 316 251 291 230 +315 + +name 3 +1975 1509 848 252 289 235 +313 252 294 252 553 254 +312 494 568 519 305 232 +313 233 314 252 289 231 +314 253 291 230 315 230 +316 251 290 231 316 255 +291 250 291 230 572 519 +311 255 550 261 307 250 +291 230 316 496 307 253 +292 253 289 233 314 + +name 4 +1957 1530 848 253 293 252 +289 230 315 253 551 261 +307 492 569 518 311 253 +289 232 313 253 288 233 +312 233 314 252 289 232 +313 257 289 253 288 232 +314 252 295 229 574 518 +568 262 305 232 313 232 +314 252 290 498 307 230 +316 250 553 + +name 5 +1956 1531 848 230 316 252 +289 230 315 231 573 261 +307 497 566 520 307 253 +293 252 290 232 314 252 +289 232 314 232 313 253 +288 233 313 253 293 253 +288 232 314 252 552 260 +307 498 564 259 310 232 +313 233 314 493 311 250 +553 518 307 + +name 6 +1975 1508 848 253 289 233 +313 252 293 253 551 257 +311 494 568 521 308 253 +288 233 313 253 288 233 +314 252 293 253 289 232 +314 252 293 253 289 232 +314 252 293 253 547 260 +311 253 289 233 313 253 +292 253 289 232 314 493 +312 250 554 258 307 + +name 7 +1977 1504 849 232 313 253 +294 252 289 232 570 262 +307 497 569 518 307 252 +294 253 288 233 313 252 +293 253 289 233 313 253 +288 233 313 257 289 252 +289 233 572 519 309 253 +288 233 573 259 312 252 +289 232 313 495 569 518 +315 247 291 + +name 8 +1952 1534 843 230 316 252 +294 252 291 231 571 262 +307 496 571 518 304 253 +293 254 289 231 314 253 +292 253 289 232 313 253 +291 230 316 230 314 253 +290 231 572 519 311 250 +553 261 305 253 294 252 +289 232 314 493 569 518 +569 + +name 9 +1982 1504 848 253 288 233 +313 233 313 253 550 262 +307 493 570 519 304 232 +314 232 314 252 291 230 +314 252 293 254 290 231 +316 249 292 229 317 229 +316 251 552 519 564 523 +564 261 307 230 316 255 +291 491 570 261 307 496 +307 + +name 0 +1980 1504 848 253 288 233 +313 258 288 253 552 260 +306 494 569 518 307 230 +316 230 316 250 291 230 +315 231 315 252 291 230 +316 255 291 250 291 230 +316 250 553 261 304 500 +307 252 550 262 304 232 +314 252 292 230 313 495 +311 253 288 230 316 + +end raw_codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/coolsat_4000/lircd.conf b/abs/core/system-templates/templates/transmit/coolsat_4000/lircd.conf new file mode 100755 index 0000000..f4e6d47 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/coolsat_4000/lircd.conf @@ -0,0 +1,51 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre7(serial) on Fri Sep 23 00:57:56 2005 +# +# contributed by Tim Sailer +# +# brand: Coolsat +# model no. of remote control: +# devices being controlled by this remote: Coolsat Pro 4000 +# + +begin remote + + name Coolsat_Pro_4000 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9088 4370 + one 656 1587 + zero 656 463 + ptrail 653 + repeat 9083 2147 + pre_data_bits 16 + pre_data 0x807F + gap 108251 + toggle_bit 0 + + + begin codes + 1 0x000000000000807F + 2 0x00000000000040BF + 3 0x000000000000609F + 4 0x00000000000020DF + 5 0x000000000000A05F + 6 0x000000000000E01F + 7 0x00000000000010EF + 8 0x00000000000050AF + 9 0x000000000000D02F + 0 0x000000000000708F + O 0x00000000000048B7 + P 0x00000000000000FF + end codes + +end remote + +# O is the OK button, P is the Pwr button + + + diff --git a/abs/core/system-templates/templates/transmit/coolsat_5000/lircd.conf b/abs/core/system-templates/templates/transmit/coolsat_5000/lircd.conf new file mode 100755 index 0000000..d9ce7f6 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/coolsat_5000/lircd.conf @@ -0,0 +1,60 @@ +begin remote + + name Coolsat_Pro_5000 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9088 4370 +# these numbers were tweaked from the Coolsat 4000 remote, they +# might still need more tweaking + one 500 1700 + zero 500 600 + ptrail 653 + repeat 9083 2147 + pre_data_bits 16 + pre_data 0x807F + gap 108251 + toggle_bit 0 + + + begin codes + 1 0x000000000000807F + 2 0x00000000000040BF + 3 0x000000000000609F + 4 0x00000000000020DF + 5 0x000000000000A05F + 6 0x000000000000E01F + 7 0x00000000000010EF + 8 0x00000000000050AF + 9 0x000000000000D02F + 0 0x000000000000708F + OK 0x00000000000048B7 + Up 0x000000000000A857 + Down 0x0000000000006897 + Power 0x00000000000000FF + Left 0x00000000000028D7 + Right 0x000000000000E817 + Mute 0x000000000000C03F + Red 0x000000000000E21D + Yellow 0x00000000000042BD + Green 0x000000000000827D + Blue 0x000000000000B847 + Menu 0x00000000000008F7 + Info 0x0000000000009867 + Guide 0x00000000000018E7 + Satellite 0x000000000000C837 + TVRADIO 0x00000000000030CF + TVSAT 0x000000000000F00F + Pause 0x00000000000058A7 + DoubleUP 0x0000000000007887 + DoubleDown 0x000000000000B04F + Exit 0x0000000000008877 + + end codes +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/digitalstream_9900/lircd.conf b/abs/core/system-templates/templates/transmit/digitalstream_9900/lircd.conf new file mode 100755 index 0000000..13e66f6 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/digitalstream_9900/lircd.conf @@ -0,0 +1,69 @@ +# +# this config file was automatically generated +# using lirc-0.8.3pre1(default) on Wed May 7 20:27:44 2008 +# +# contributed by Craig Betts +# +# brand: Digital Stream +# model no. of remote control: Not Listed +# devices being controlled by this remote: DTX9900 +# + +begin remote + + name Digital_Stream_DTX9900 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9017 4456 + one 573 1656 + zero 573 535 + ptrail 573 + repeat 8970 2254 + pre_data_bits 16 + pre_data 0x482C + gap 108000 + toggle_bit_mask 0x0 + + begin codes + Power 0x00FF + EPG 0x7887 + FAV 0xF807 + Up 0x40BF + Down 0xC03F + Left 0x20DF + Right 0xA05F + Ok 0x807F + Back 0xB847 + Prev 0x04FB + Menu 0xD827 + Info 0x14EB + Vol+ 0x609F + Vol- 0xE01F + Channel+ 0x10EF + Channel- 0x906F + Mute 0x44BB + Audio 0xC43B + Zoom 0x24DB + CC 0xA45B + 1 0x8877 + 2 0x48B7 + 3 0xC837 + 4 0x28D7 + 5 0xA857 + 6 0x6897 + 7 0xE817 + 8 0x18E7 + 9 0x9867 + 0 0x08F7 + Meter 0x34CB + - 0x58A7 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/dish301_311/lircd.conf b/abs/core/system-templates/templates/transmit/dish301_311/lircd.conf new file mode 100755 index 0000000..0ffc2fe --- /dev/null +++ b/abs/core/system-templates/templates/transmit/dish301_311/lircd.conf @@ -0,0 +1,78 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Tue Apr 04 06:16:24 2006 +# +# contributed by +# +# brand: 301/501/3100/5100/58xx/59xx +# model: +# supported devices: +# + +begin remote + + name 301/501/3100/5100/58xx/59xx + bits 16 + flags SPACE_ENC + eps 30 + aeps 100 + + header 400 6100 + one 400 1700 + zero 400 2800 + ptrail 400 + gap 6200 + min_repeat 4 + toggle_bit 0 + + frequency 56000 + + begin codes + info 0x0000000000000000 + power 0x0000000000000800 + play 0x0000000000000C10 + 1 0x0000000000001000 + 2 0x0000000000001400 + 3 0x0000000000001800 + frwd 0x0000000000001C10 + 4 0x0000000000002000 + 5 0x0000000000002400 + 6 0x0000000000002800 + menu 0x0000000000002C00 + 7 0x0000000000003000 + 8 0x0000000000003400 + 9 0x0000000000003800 + ffwd 0x0000000000003C10 + select 0x0000000000004000 + 0 0x0000000000004400 + cancel 0x0000000000004800 + guide 0x0000000000005000 + mute 0x0000000000005401 + view 0x0000000000005800 + tv_video 0x0000000000005C00 + right 0x0000000000006000 + vol+ 0x0000000000006401 + up 0x0000000000006800 + recall 0x0000000000006C00 + left 0x0000000000007000 + vol- 0x0000000000007401 + down 0x0000000000007800 + rec 0x0000000000007C00 + pause 0x0000000000008000 + stop 0x0000000000008400 + sys_info 0x0000000000009000 + */ptv_list 0x0000000000009400 + #/search 0x0000000000009800 + sat 0x000000000000A400 + tv 0x000000000000A801 + rew 0x000000000000C410 + fwd 0x000000000000C810 + skip_back 0x000000000000D810 + skip_fwd 0x000000000000DC10 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/dish501_508/lircd.conf b/abs/core/system-templates/templates/transmit/dish501_508/lircd.conf new file mode 100755 index 0000000..0ffc2fe --- /dev/null +++ b/abs/core/system-templates/templates/transmit/dish501_508/lircd.conf @@ -0,0 +1,78 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Tue Apr 04 06:16:24 2006 +# +# contributed by +# +# brand: 301/501/3100/5100/58xx/59xx +# model: +# supported devices: +# + +begin remote + + name 301/501/3100/5100/58xx/59xx + bits 16 + flags SPACE_ENC + eps 30 + aeps 100 + + header 400 6100 + one 400 1700 + zero 400 2800 + ptrail 400 + gap 6200 + min_repeat 4 + toggle_bit 0 + + frequency 56000 + + begin codes + info 0x0000000000000000 + power 0x0000000000000800 + play 0x0000000000000C10 + 1 0x0000000000001000 + 2 0x0000000000001400 + 3 0x0000000000001800 + frwd 0x0000000000001C10 + 4 0x0000000000002000 + 5 0x0000000000002400 + 6 0x0000000000002800 + menu 0x0000000000002C00 + 7 0x0000000000003000 + 8 0x0000000000003400 + 9 0x0000000000003800 + ffwd 0x0000000000003C10 + select 0x0000000000004000 + 0 0x0000000000004400 + cancel 0x0000000000004800 + guide 0x0000000000005000 + mute 0x0000000000005401 + view 0x0000000000005800 + tv_video 0x0000000000005C00 + right 0x0000000000006000 + vol+ 0x0000000000006401 + up 0x0000000000006800 + recall 0x0000000000006C00 + left 0x0000000000007000 + vol- 0x0000000000007401 + down 0x0000000000007800 + rec 0x0000000000007C00 + pause 0x0000000000008000 + stop 0x0000000000008400 + sys_info 0x0000000000009000 + */ptv_list 0x0000000000009400 + #/search 0x0000000000009800 + sat 0x000000000000A400 + tv 0x000000000000A801 + rew 0x000000000000C410 + fwd 0x000000000000C810 + skip_back 0x000000000000D810 + skip_fwd 0x000000000000DC10 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/dish_dvr625/lircd.conf b/abs/core/system-templates/templates/transmit/dish_dvr625/lircd.conf new file mode 100755 index 0000000..5c844a9 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/dish_dvr625/lircd.conf @@ -0,0 +1,68 @@ +# contributed by Justin Stallard - darkfloyd7 at speakeasy dot net> +# +# brand: EchoStar Technologies Corporation +# model: 132578 +# supported devices: DishDVR 625 +# + +begin remote + name Dish_625 + bits 16 + flags SPACE_ENC|NO_HEAD_REP + eps 5 + aeps 100 + header 400 6000 + one 400 1600 + zero 400 2700 + ptrail 400 + gap 6000 + min_repeat 2 + toggle_bit 0 + frequency 56800 + + begin codes + power 0x0000000000000940 + menu 0x0000000000002D40 + input 0x0000000000005D40 + pageup 0x0000000000003D50 + pagedown 0x0000000000001D50 + up 0x0000000000006940 + down 0x0000000000007940 + left 0x0000000000007140 + right 0x0000000000006140 + select 0x0000000000004140 + guide 0x0000000000005140 + info 0x0000000000000140 + cancel 0x0000000000004940 + recall 0x0000000000006D40 + livetv 0x0000000000005940 + dvr 0x000000000000E550 + play 0x0000000000000D50 + stop 0x0000000000008540 + pause 0x0000000000008140 + record 0x0000000000007D40 + back 0x000000000000C550 + fwd 0x000000000000C950 + skipback 0x000000000000D950 + skipfwd 0x000000000000DD50 + greenR 0x000000000000BD40 + dish 0x000000000000D150 + swap 0x000000000000F550 + pip 0x000000000000E950 + position 0x000000000000ED50 + 1 0x0000000000001140 + 2 0x0000000000001540 + 3 0x0000000000001940 + 4 0x0000000000002140 + 5 0x0000000000002540 + 6 0x0000000000002940 + 7 0x0000000000003140 + 8 0x0000000000003540 + 9 0x0000000000003940 + 0 0x0000000000004540 + star 0x0000000000009540 + hash 0x0000000000009940 + end codes +end remote + + diff --git a/abs/core/system-templates/templates/transmit/dish_network/lircd.conf b/abs/core/system-templates/templates/transmit/dish_network/lircd.conf new file mode 100755 index 0000000..86aeae1 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/dish_network/lircd.conf @@ -0,0 +1,1272 @@ +# This config file is based on the information posted by Endaf Jones at +# http://www.gossamer-threads.com/lists/mythtv/users/196566#196566 +# +# brand: JVC/RCA +# model no. of remote control: +# supported devices: Dish Network (Echostar) +# - JVC 2700 receiver +# - JVC 4700 receiver +# - JVC 49xx receiver +# - JVC 50xx receiver +# - RCA 31x receiver +# and several other Dish receivers using the +# "blue button" remotes +# +# Unit code selection (1-16) is performed by specifying the appropriate +# value for post_data +# 1=0x000 2=0x200 3=0x100 4=0x300 +# 5=0x080 6=0x280 7=0x180 8=0x380 +# 9=0x040 10=0x240 11=0x140 12=0x340 +# 13=0x0C0 14=0x2C0 15=0x1C0 16=0x3C0 +# +# Each has been implemented in this config file with the remote names "dish#" +# where the hash/pound/number sign ("#") is a code number from 1 through 16. +# There is also a remote called "dish" (without a number), for users with only +# one receiver, that uses remote code 1 (DISH's default). +# +# The duty_cycle (the percentage of time during a pulse that infrared light is +# being sent) is commented because some hardware transmitters don't support its +# use. +# +# The discrete power functions (power_on and power_off) can be used to ensure +# the power state of the receiver. However, they probably shouldn't be used in +# a channel change script as the receiver will require a significant delay +# after a power_on before it is capable of receiving/responding to additional +# commands (such as channel numbers). Instead, assuming most of your recording +# is during prime-time, you may want to set a cron job to run a "power_on" +# command for each of your receivers about 5 or 10 minutes before primtetime. + + +### Remote definition for remotes using remote code 1 (0x000) +begin remote + name dish + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + end codes +end remote + +### Remote definition for remotes using remote code 1 (0x000) +### (Duplicated to allow a "dish" and a "dish1" remote name) +begin remote + name dish1 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 2 (0x200) +begin remote + name dish2 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x200 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 3 (0x100) +begin remote + name dish3 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x100 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 4 (0x300) +begin remote + name dish4 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x300 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 5 (0x080) +begin remote + name dish5 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x080 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 6 (0x280) +begin remote + name dish6 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x280 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 7 (0x180) +begin remote + name dish7 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x180 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 8 (0x380) +begin remote + name dish8 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x380 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 9 (0x040) +begin remote + name dish9 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x040 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 10 (0x240) +begin remote + name dish10 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x240 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 11 (0x140) +begin remote + name dish11 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x140 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 12 (0x340) +begin remote + name dish12 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x340 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 13 (0x0C0) +begin remote + name dish13 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x0C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 14 (0x2C0) +begin remote + name dish14 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x2C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 15 (0x1C0) +begin remote + name dish15 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x1C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 16 (0x3C0) +begin remote + name dish16 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x3C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + diff --git a/abs/core/system-templates/templates/transmit/echostar_2700/lircd.conf b/abs/core/system-templates/templates/transmit/echostar_2700/lircd.conf new file mode 100755 index 0000000..9ec567f --- /dev/null +++ b/abs/core/system-templates/templates/transmit/echostar_2700/lircd.conf @@ -0,0 +1,1274 @@ +# This config file is based on the information posted by Endaf Jones at +# http://www.gossamer-threads.com/lists/mythtv/users/196566#196566 +# +# brand: JVC/RCA +# model no. of remote control: +# supported devices: Dish Network (Echostar) +# - JVC 2700 receiver +# - JVC 4700 receiver +# - JVC 49xx receiver +# - JVC 50xx receiver +# - RCA 31x receiver +# and several other Dish receivers using the +# "blue button" remotes +# +# Unit code selection (1-16) is performed by specifying the appropriate +# value for post_data +# 1=0x000 2=0x200 3=0x100 4=0x300 +# 5=0x080 6=0x280 7=0x180 8=0x380 +# 9=0x040 10=0x240 11=0x140 12=0x340 +# 13=0x0C0 14=0x2C0 15=0x1C0 16=0x3C0 +# +# Each has been implemented in this config file with the remote names "dish#" +# where the hash/pound/number sign ("#") is a code number from 1 through 16. +# There is also a remote called "dish" (without a number), for users with only +# one receiver, that uses remote code 1 (DISH's default). +# +# The duty_cycle (the percentage of time during a pulse that infrared light is +# being sent) is commented because some hardware transmitters don't support its +# use. +# +# The discrete power functions (power_on and power_off) can be used to ensure +# the power state of the receiver. However, they probably shouldn't be used in +# a channel change script as the receiver will require a significant delay +# after a power_on before it is capable of receiving/responding to additional +# commands (such as channel numbers). Instead, assuming most of your recording +# is during prime-time, you may want to set a cron job to run a "power_on" +# command for each of your receivers about 5 or 10 minutes before primtetime. + + +### Remote definition for remotes using remote code 1 (0x000) +begin remote + name dish + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + end codes +end remote + +### Remote definition for remotes using remote code 1 (0x000) +### (Duplicated to allow a "dish" and a "dish1" remote name) +begin remote + name dish1 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 2 (0x200) +begin remote + name dish2 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x200 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 3 (0x100) +begin remote + name dish3 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x100 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 4 (0x300) +begin remote + name dish4 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x300 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 5 (0x080) +begin remote + name dish5 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x080 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 6 (0x280) +begin remote + name dish6 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x280 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 7 (0x180) +begin remote + name dish7 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x180 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 8 (0x380) +begin remote + name dish8 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x380 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 9 (0x040) +begin remote + name dish9 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x040 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 10 (0x240) +begin remote + name dish10 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x240 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 11 (0x140) +begin remote + name dish11 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x140 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 12 (0x340) +begin remote + name dish12 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x340 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 13 (0x0C0) +begin remote + name dish13 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x0C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 14 (0x2C0) +begin remote + name dish14 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x2C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 15 (0x1C0) +begin remote + name dish15 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x1C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 16 (0x3C0) +begin remote + name dish16 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x3C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/echostar_4700/lircd.conf b/abs/core/system-templates/templates/transmit/echostar_4700/lircd.conf new file mode 100755 index 0000000..9ec567f --- /dev/null +++ b/abs/core/system-templates/templates/transmit/echostar_4700/lircd.conf @@ -0,0 +1,1274 @@ +# This config file is based on the information posted by Endaf Jones at +# http://www.gossamer-threads.com/lists/mythtv/users/196566#196566 +# +# brand: JVC/RCA +# model no. of remote control: +# supported devices: Dish Network (Echostar) +# - JVC 2700 receiver +# - JVC 4700 receiver +# - JVC 49xx receiver +# - JVC 50xx receiver +# - RCA 31x receiver +# and several other Dish receivers using the +# "blue button" remotes +# +# Unit code selection (1-16) is performed by specifying the appropriate +# value for post_data +# 1=0x000 2=0x200 3=0x100 4=0x300 +# 5=0x080 6=0x280 7=0x180 8=0x380 +# 9=0x040 10=0x240 11=0x140 12=0x340 +# 13=0x0C0 14=0x2C0 15=0x1C0 16=0x3C0 +# +# Each has been implemented in this config file with the remote names "dish#" +# where the hash/pound/number sign ("#") is a code number from 1 through 16. +# There is also a remote called "dish" (without a number), for users with only +# one receiver, that uses remote code 1 (DISH's default). +# +# The duty_cycle (the percentage of time during a pulse that infrared light is +# being sent) is commented because some hardware transmitters don't support its +# use. +# +# The discrete power functions (power_on and power_off) can be used to ensure +# the power state of the receiver. However, they probably shouldn't be used in +# a channel change script as the receiver will require a significant delay +# after a power_on before it is capable of receiving/responding to additional +# commands (such as channel numbers). Instead, assuming most of your recording +# is during prime-time, you may want to set a cron job to run a "power_on" +# command for each of your receivers about 5 or 10 minutes before primtetime. + + +### Remote definition for remotes using remote code 1 (0x000) +begin remote + name dish + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + end codes +end remote + +### Remote definition for remotes using remote code 1 (0x000) +### (Duplicated to allow a "dish" and a "dish1" remote name) +begin remote + name dish1 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 2 (0x200) +begin remote + name dish2 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x200 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 3 (0x100) +begin remote + name dish3 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x100 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 4 (0x300) +begin remote + name dish4 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x300 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 5 (0x080) +begin remote + name dish5 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x080 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 6 (0x280) +begin remote + name dish6 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x280 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 7 (0x180) +begin remote + name dish7 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x180 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 8 (0x380) +begin remote + name dish8 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x380 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 9 (0x040) +begin remote + name dish9 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x040 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 10 (0x240) +begin remote + name dish10 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x240 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 11 (0x140) +begin remote + name dish11 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x140 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 12 (0x340) +begin remote + name dish12 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x340 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 13 (0x0C0) +begin remote + name dish13 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x0C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 14 (0x2C0) +begin remote + name dish14 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x2C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 15 (0x1C0) +begin remote + name dish15 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x1C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 16 (0x3C0) +begin remote + name dish16 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x3C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/echostar_4900/lircd.conf b/abs/core/system-templates/templates/transmit/echostar_4900/lircd.conf new file mode 100755 index 0000000..9ec567f --- /dev/null +++ b/abs/core/system-templates/templates/transmit/echostar_4900/lircd.conf @@ -0,0 +1,1274 @@ +# This config file is based on the information posted by Endaf Jones at +# http://www.gossamer-threads.com/lists/mythtv/users/196566#196566 +# +# brand: JVC/RCA +# model no. of remote control: +# supported devices: Dish Network (Echostar) +# - JVC 2700 receiver +# - JVC 4700 receiver +# - JVC 49xx receiver +# - JVC 50xx receiver +# - RCA 31x receiver +# and several other Dish receivers using the +# "blue button" remotes +# +# Unit code selection (1-16) is performed by specifying the appropriate +# value for post_data +# 1=0x000 2=0x200 3=0x100 4=0x300 +# 5=0x080 6=0x280 7=0x180 8=0x380 +# 9=0x040 10=0x240 11=0x140 12=0x340 +# 13=0x0C0 14=0x2C0 15=0x1C0 16=0x3C0 +# +# Each has been implemented in this config file with the remote names "dish#" +# where the hash/pound/number sign ("#") is a code number from 1 through 16. +# There is also a remote called "dish" (without a number), for users with only +# one receiver, that uses remote code 1 (DISH's default). +# +# The duty_cycle (the percentage of time during a pulse that infrared light is +# being sent) is commented because some hardware transmitters don't support its +# use. +# +# The discrete power functions (power_on and power_off) can be used to ensure +# the power state of the receiver. However, they probably shouldn't be used in +# a channel change script as the receiver will require a significant delay +# after a power_on before it is capable of receiving/responding to additional +# commands (such as channel numbers). Instead, assuming most of your recording +# is during prime-time, you may want to set a cron job to run a "power_on" +# command for each of your receivers about 5 or 10 minutes before primtetime. + + +### Remote definition for remotes using remote code 1 (0x000) +begin remote + name dish + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + end codes +end remote + +### Remote definition for remotes using remote code 1 (0x000) +### (Duplicated to allow a "dish" and a "dish1" remote name) +begin remote + name dish1 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 2 (0x200) +begin remote + name dish2 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x200 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 3 (0x100) +begin remote + name dish3 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x100 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 4 (0x300) +begin remote + name dish4 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x300 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 5 (0x080) +begin remote + name dish5 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x080 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 6 (0x280) +begin remote + name dish6 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x280 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 7 (0x180) +begin remote + name dish7 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x180 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 8 (0x380) +begin remote + name dish8 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x380 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 9 (0x040) +begin remote + name dish9 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x040 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 10 (0x240) +begin remote + name dish10 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x240 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 11 (0x140) +begin remote + name dish11 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x140 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 12 (0x340) +begin remote + name dish12 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x340 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 13 (0x0C0) +begin remote + name dish13 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x0C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 14 (0x2C0) +begin remote + name dish14 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x2C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 15 (0x1C0) +begin remote + name dish15 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x1C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 16 (0x3C0) +begin remote + name dish16 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x3C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/echostar_5000/lircd.conf b/abs/core/system-templates/templates/transmit/echostar_5000/lircd.conf new file mode 100755 index 0000000..95cc2c2 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/echostar_5000/lircd.conf @@ -0,0 +1,1274 @@ +# This config file is based on the information posted by Endaf Jones at +# http://www.gossamer-threads.com/lists/mythtv/users/196566#196566 +# +# brand: JVC/RCA +# model no. of remote control: +# supported devices: Dish Network (Echostar) +# - JVC 2700 receiver +# - JVC 4700 receiver +# - JVC 49xx receiver +# - JVC 50xx receiver +# - RCA 31x receiver +# and several other Dish receivers using the +# "blue button" remotes +# +# Unit code selection (1-16) is performed by specifying the appropriate +# value for post_data +# 1=0x000 2=0x200 3=0x100 4=0x300 +# 5=0x080 6=0x280 7=0x180 8=0x380 +# 9=0x040 10=0x240 11=0x140 12=0x340 +# 13=0x0C0 14=0x2C0 15=0x1C0 16=0x3C0 +# +# Each has been implemented in this config file with the remote called "dish#" +# where the hash/pound/number sign ("#") is a code number from 1 through 16. +# There is also a remote called "dish" (without a number), for users with only +# one receiver, that uses remote code 1 (DISH's default). +# +# The duty_cycle (the percentage of time during a pulse that infrared light is +# being sent) is commented because some hardware transmitters don't support its +# use. +# +# The discrete power functions (power_on and power_off) can be used to ensure +# the power state of the receiver. However, they probably shouldn't be used in +# a channel change script as the receiver will require a significant delay +# after a power_on before it is capable of receiving/responding to additional +# commands (such as channel numbers). Instead, assuming most of your recording +# is during prime-time, you may want to set a cron job to run a "power_on" +# command for each of your receivers about 5 or 10 minutes before primtetime. + + +### Remote definition for remotes using remote code 1 (0x000) +begin remote + name dish + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + end codes +end remote + +### Remote definition for remotes using remote code 1 (0x000) +### (Duplicated to allow a "dish" and a "dish1" remote name) +begin remote + name dish1 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x000 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 2 (0x200) +begin remote + name dish2 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x200 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 3 (0x100) +begin remote + name dish3 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x100 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 4 (0x300) +begin remote + name dish4 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x300 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 5 (0x080) +begin remote + name dish5 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x080 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 6 (0x280) +begin remote + name dish6 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x280 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 7 (0x180) +begin remote + name dish7 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x180 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 8 (0x380) +begin remote + name dish8 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x380 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 9 (0x040) +begin remote + name dish9 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x040 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 10 (0x240) +begin remote + name dish10 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x240 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 11 (0x140) +begin remote + name dish11 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x140 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 12 (0x340) +begin remote + name dish12 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x340 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 13 (0x0C0) +begin remote + name dish13 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x0C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 14 (0x2C0) +begin remote + name dish14 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x2C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 15 (0x1C0) +begin remote + name dish15 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x1C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + +### Remote definition for remotes using remote code 16 (0x3C0) +begin remote + name dish16 + + flags SPACE_ENC|NO_HEAD_REP + eps 30 + aeps 100 + + frequency 56000 +# duty_cycle 32 + + one 440 1645 + zero 440 2780 + + header 525 6045 + ptrail 450 + gap 6115 + + min_repeat 6 + + bits 6 + post_data_bits 10 + + post_data 0x3C0 + + begin codes + info 0 + power_on 1 + power 2 + 1 4 + 2 5 + 3 6 + 4 8 + 5 9 + 6 10 + 7 12 + 8 13 + 9 14 + 0 17 + menu 11 + select 16 + cancel 18 + guide 20 + view 22 + tv_vcr 23 + right 24 + up 26 + recall 27 + left 28 + down 30 + record 31 + pause 32 + stop 33 + sys_info 36 + asterisk 37 + pound 38 + power_off 39 + sat 41 + dish_home 52 + sys_info2 54 + dish_home2 56 + dvr 57 + skip_fwd 55 + skip_back 54 + fwd 50 + play 3 + back 49 + dish 52 + page_up 15 + page_down 7 + end codes +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/expressvu3100/lircd.conf b/abs/core/system-templates/templates/transmit/expressvu3100/lircd.conf new file mode 100755 index 0000000..0ffc2fe --- /dev/null +++ b/abs/core/system-templates/templates/transmit/expressvu3100/lircd.conf @@ -0,0 +1,78 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Tue Apr 04 06:16:24 2006 +# +# contributed by +# +# brand: 301/501/3100/5100/58xx/59xx +# model: +# supported devices: +# + +begin remote + + name 301/501/3100/5100/58xx/59xx + bits 16 + flags SPACE_ENC + eps 30 + aeps 100 + + header 400 6100 + one 400 1700 + zero 400 2800 + ptrail 400 + gap 6200 + min_repeat 4 + toggle_bit 0 + + frequency 56000 + + begin codes + info 0x0000000000000000 + power 0x0000000000000800 + play 0x0000000000000C10 + 1 0x0000000000001000 + 2 0x0000000000001400 + 3 0x0000000000001800 + frwd 0x0000000000001C10 + 4 0x0000000000002000 + 5 0x0000000000002400 + 6 0x0000000000002800 + menu 0x0000000000002C00 + 7 0x0000000000003000 + 8 0x0000000000003400 + 9 0x0000000000003800 + ffwd 0x0000000000003C10 + select 0x0000000000004000 + 0 0x0000000000004400 + cancel 0x0000000000004800 + guide 0x0000000000005000 + mute 0x0000000000005401 + view 0x0000000000005800 + tv_video 0x0000000000005C00 + right 0x0000000000006000 + vol+ 0x0000000000006401 + up 0x0000000000006800 + recall 0x0000000000006C00 + left 0x0000000000007000 + vol- 0x0000000000007401 + down 0x0000000000007800 + rec 0x0000000000007C00 + pause 0x0000000000008000 + stop 0x0000000000008400 + sys_info 0x0000000000009000 + */ptv_list 0x0000000000009400 + #/search 0x0000000000009800 + sat 0x000000000000A400 + tv 0x000000000000A801 + rew 0x000000000000C410 + fwd 0x000000000000C810 + skip_back 0x000000000000D810 + skip_fwd 0x000000000000DC10 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/expressvu5xxx/lircd.conf b/abs/core/system-templates/templates/transmit/expressvu5xxx/lircd.conf new file mode 100755 index 0000000..0ffc2fe --- /dev/null +++ b/abs/core/system-templates/templates/transmit/expressvu5xxx/lircd.conf @@ -0,0 +1,78 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Tue Apr 04 06:16:24 2006 +# +# contributed by +# +# brand: 301/501/3100/5100/58xx/59xx +# model: +# supported devices: +# + +begin remote + + name 301/501/3100/5100/58xx/59xx + bits 16 + flags SPACE_ENC + eps 30 + aeps 100 + + header 400 6100 + one 400 1700 + zero 400 2800 + ptrail 400 + gap 6200 + min_repeat 4 + toggle_bit 0 + + frequency 56000 + + begin codes + info 0x0000000000000000 + power 0x0000000000000800 + play 0x0000000000000C10 + 1 0x0000000000001000 + 2 0x0000000000001400 + 3 0x0000000000001800 + frwd 0x0000000000001C10 + 4 0x0000000000002000 + 5 0x0000000000002400 + 6 0x0000000000002800 + menu 0x0000000000002C00 + 7 0x0000000000003000 + 8 0x0000000000003400 + 9 0x0000000000003800 + ffwd 0x0000000000003C10 + select 0x0000000000004000 + 0 0x0000000000004400 + cancel 0x0000000000004800 + guide 0x0000000000005000 + mute 0x0000000000005401 + view 0x0000000000005800 + tv_video 0x0000000000005C00 + right 0x0000000000006000 + vol+ 0x0000000000006401 + up 0x0000000000006800 + recall 0x0000000000006C00 + left 0x0000000000007000 + vol- 0x0000000000007401 + down 0x0000000000007800 + rec 0x0000000000007C00 + pause 0x0000000000008000 + stop 0x0000000000008400 + sys_info 0x0000000000009000 + */ptv_list 0x0000000000009400 + #/search 0x0000000000009800 + sat 0x000000000000A400 + tv 0x000000000000A801 + rew 0x000000000000C410 + fwd 0x000000000000C810 + skip_back 0x000000000000D810 + skip_fwd 0x000000000000DC10 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/fortec_lifetime/lircd.conf b/abs/core/system-templates/templates/transmit/fortec_lifetime/lircd.conf new file mode 100755 index 0000000..5ac3471 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/fortec_lifetime/lircd.conf @@ -0,0 +1,68 @@ +# +# this config file was automatically generated +# using lirc-0.7.0(serial) on Thu Dec 16 02:28:28 2004 +# +# contributed by Frank Banks +# +# brand: Fortec +# model no. of remote control: +# devices being controlled by this remote: Fortec Lifetime (Pre March) Sat Reciver +# + +begin remote + + name Fortec_Lifetime + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9103 4429 + one 621 1634 + zero 621 500 + ptrail 617 + repeat 9104 2183 + pre_data_bits 16 + pre_data 0x4FB + gap 108100 + min_repeat 1 + toggle_bit 0 + + + begin codes + 1 0x00000000000000FF + 2 0x000000000000807F + 3 0x00000000000040BF + 4 0x000000000000C03F + 5 0x00000000000020DF + 6 0x000000000000A05F + 7 0x000000000000609F + 8 0x000000000000E01F + 9 0x00000000000010EF + 0 0x000000000000906F + Power 0x000000000000F00F + Mute 0x000000000000708F + Fav 0x000000000000B847 + PageUP 0x0000000000006897 + PageDOWN 0x00000000000058A7 + Exit 0x0000000000008877 + Last 0x00000000000048B7 + Menu 0x000000000000C837 + ChanUp 0x00000000000050AF + ChanDown 0x000000000000D02F + OK 0x0000000000009867 + Sat 0x00000000000008F7 + Info 0x00000000000028D7 + TV/Radio 0x000000000000D827 + Pause 0x000000000000A857 + Audio 0x000000000000F807 + Guide 0x000000000000E817 + Signal 0x0000000000007887 + F1 0x000000000000EA15 + F2 0x0000000000001AE5 + F3 0x0000000000009A65 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/general_550/lircd.conf b/abs/core/system-templates/templates/transmit/general_550/lircd.conf new file mode 100755 index 0000000..7a697b0 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/general_550/lircd.conf @@ -0,0 +1,63 @@ +# +# this config file was automatically generated +# using lirc-0.8.2-CVS(default) on Sat Apr 21 22:34:15 2007 +# +# contributed by Oded S. Resnik +# +# brand: Jerrold Communications/General Instruments +# model no. of remote control: MRC 550 +# devices being controlled by this remote: +# Jerrold IMPULE analog cable TV top box + +begin remote + + name Jerrold_MRC_500 + bits 5 + flags SPACE_ENC + eps 30 + aeps 100 + + one 114 11635 + zero 114 7788 + ptrail 112 + gap 23527 + min_repeat 1 + toggle_bit_mask 0x0 + + begin codes + 1 0x17 + 2 0x16 + 3 0x15 + 4 0x1B + 5 0x1A + 6 0x19 + 7 0x1F + 8 0x1E + 9 0x1D + 0 0x12 + Select 0x03 +# ENTER + OK 0x01 + A/B 0x18 + Vol+ 0x0B + Ch+ 0x14 + Ch- 0x10 + Vol- 0x07 +# LC + Prev.Ch 0x0C + FC 0x11 + Power 0x1C + Mute 0x09 + PCPM 0x13 + TCP 0x00 + F 0x04 + Learn 0x02 + PRGM 0x06 + Delete 0x05 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/hughes_hbh/lircd.conf b/abs/core/system-templates/templates/transmit/hughes_hbh/lircd.conf new file mode 100755 index 0000000..f76ec66 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/hughes_hbh/lircd.conf @@ -0,0 +1,74 @@ +# +# this config file was automatically generated +# using lirc-0.8.1-CVS(default) on Thu Oct 19 20:24:42 2006 +# +# contributed by Ben Bronk +# based on HIRD-B2_GAEB0 +# +# brand: Hughes +# model no. of remote control: HRMC-8 +# devices being controlled by this remote: +# DirecTV Hughes Directors Pack - GAEB0A +# + +begin remote + + name Hughes_HRMC-8 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9000 4500 + one 560 1700 + zero 560 560 + ptrail 560 + repeat 9000 2250 + pre_data_bits 16 + pre_data 0x30DF + gap 108000 + toggle_bit 0 + + begin codes + + last 0x0000000000006897 + guide 0x00000000000048B7 + up 0x0000000000009867 + down 0x00000000000008F7 + left 0x00000000000028D7 + right 0x000000000000E817 + select 0x00000000000018E7 + favorite 0x0000000000008877 + info 0x000000000000C837 + clear 0x000000000000F00F + power 0x000000000000A857 + menu 0x0EF1 + interactive 0x06F9 + turbo 0xFA05 + prog 0x46B9 + search 0x8679 + audio 0x26D9 + video 0xA659 + input 0x807F + dash 0x6C93 + + + 1 0x000000000000A05F + 2 0x000000000000609F + 3 0x000000000000E01F + 4 0x00000000000010EF + 5 0x000000000000906F + 6 0x00000000000050AF + 7 0x000000000000D02F + 8 0x00000000000030CF + 9 0x000000000000B04F + 0 0x00000000000020DF + ch- 0x000000000000C03F + ch+ 0x00000000000040BF + + end codes + +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/humax_5400/lircd.conf b/abs/core/system-templates/templates/transmit/humax_5400/lircd.conf new file mode 100755 index 0000000..ad91fdf --- /dev/null +++ b/abs/core/system-templates/templates/transmit/humax_5400/lircd.conf @@ -0,0 +1,68 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(any) on Sun Nov 23 00:42:57 2003 +# +# contributed by +# +# brand: Humax +# model no. of remote control: ??? +# devices being controlled by this remote: Humax 5400IRCI +# + +begin remote + + name Humax-5400IRCI + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9116 4389 + one 645 1611 + zero 645 474 + ptrail 642 + repeat 9118 2146 + pre_data_bits 16 + pre_data 0x8 + gap 108001 + toggle_bit 0 + + + begin codes + power 0x00000000000000FF + 1 0x000000000000C03F + 2 0x00000000000020DF + 3 0x000000000000A05F + 4 0x000000000000609F + 5 0x000000000000E01F + 6 0x00000000000010EF + 7 0x000000000000906F + 8 0x00000000000050AF + 9 0x000000000000D02F + 0 0x00000000000030CF + tvsat 0x00000000000040BF + tone 0x000000000000B04F + mute 0x00000000000018E7 + red 0x00000000000038C7 + green 0x000000000000B847 + yellow 0x00000000000058A7 + blue 0x0000000000007887 + time 0x0000000000009867 + exit 0x0000000000006897 + menu 0x000000000000708F + up 0x0000000000008877 + down 0x000000000000A857 + left 0x00000000000048B7 + right 0x00000000000028D7 + ok 0x000000000000C837 + vol+ 0x000000000000F807 + vol- 0x00000000000002FD + p+ 0x00000000000008F7 + p- 0x000000000000F00F + ? 0x000000000000E817 + rcl 0x000000000000827D + epg 0x000000000000D827 + end codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/illusion_m3/lircd.conf b/abs/core/system-templates/templates/transmit/illusion_m3/lircd.conf new file mode 100755 index 0000000..0133e5e --- /dev/null +++ b/abs/core/system-templates/templates/transmit/illusion_m3/lircd.conf @@ -0,0 +1,72 @@ +# +# this config file was automatically generated +# using lirc-0.8.2(default) on Sat Mar 22 19:16:33 2008 +# +# contributed by Aleix Mercader +# +# brand: Illusion +# model no. of remote control: - +# devices being controlled by this remote: Illusion M3 digital satellite/terrestrial receiver +# + +begin remote + + name Illusion_M3 + bits 13 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 940 825 + zero 940 825 + plead 980 + gap 113036 + toggle_bit_mask 0x800 + + begin codes + power 0x158C + mute 0x15A6 + a 0x1596 + b 0x1597 + c 0x1598 + d 0x1599 + game 0x159A + aux 0x15AA + info 0x159B + txt 0x15BC + tv/r 0x1594 + menu 0x15A4 + guide 0x1592 + pause 0x15A9 + red 0x15B7 + green 0x15B6 + yellow 0x15B2 + blue 0x15B4 + up 0x15A0 + left 0x15B9 + ok 0x15BB + right 0x15BA + down 0x15A1 + esc 0x15A7 + f_left 0x158F + f_right 0x15A3 + tick/audio 0x1593 + 1 0x1581 + 2 0x1582 + 3 0x1583 + 4 0x1584 + 5 0x1585 + 6 0x1586 + 7 0x1587 + 8 0x1588 + 9 0x1589 + previous 0x158A + 0 0x1580 + sleep 0x15B8 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dct2000/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dct2000/lircd.conf new file mode 100755 index 0000000..635f8e6 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dct2000/lircd.conf @@ -0,0 +1,75 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(serial) on Fri Mar 28 22:46:44 2003 +# +# contributed by shane bradley +# +# +# +# brand: Motorola +# model no. of remote control: DCT2000 +# devices being controlled by this remote: +# + +begin remote + name DCT2000 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9036 4424 + one 556 2185 + zero 556 4424 + ptrail 556 + gap 100025 + toggle_bit 0 + + + begin codes + HELP 0x000000000000B3F2 + POWER 0x000000000000AFF9 + MUTE 0x0000000000000FF7 + PAGE+ 0x000000000000A3F3 + PAGE- 0x00000000000023FB + LOCK 0x00000000000097F6 + EXIT 0x000000000000B7F4 + AUP 0x000000000000D3F6 + ADOWN 0x00000000000053FE + ALEFT 0x00000000000093F1 + ARIGHT 0x00000000000013F9 + OK 0x00000000000077F8 + GUIDE 0x000000000000F3F4 + MENU 0x00000000000067F9 + VOL+ 0x0000000000004FF3 + VOL- 0x0000000000008FFB + LAST 0x00000000000037FC + FAV 0x00000000000057FA + CH+ 0x0000000000002FF5 + CH- 0x000000000000CFFD + A 0x00000000000017FE + B 0x0000000000001BF1 + C 0x000000000000EBF9 + 1 0x0000000000007FF0 + 2 0x000000000000BFF8 + 3 0x0000000000003FF4 + 4 0x000000000000DFFC + 5 0x0000000000005FF2 + 6 0x0000000000009FFA + 7 0x0000000000001FF6 + 8 0x000000000000EFFE + 9 0x0000000000006FF1 + 0 0x000000000000FFFF + BYPASS 0x000000000000D7F2 + MUSIC 0x000000000000F7F0 + STOP 0x00000000000063FD + PAUSE 0x00000000000007FF + PLAY 0x000000000000E3F5 + REW 0x00000000000087F7 + REC 0x00000000000073FC + FFWD 0x00000000000047FB + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dct22xx/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dct22xx/lircd.conf new file mode 100755 index 0000000..8c56040 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dct22xx/lircd.conf @@ -0,0 +1,103 @@ +# +# this config file was automatically generated +# using lirc-0.8.1(default) on Mon Feb 12 21:46:09 2007 +# +# contributed by mike mcchesney +# +# brand: Cox +# model no. of remote control: URC#7810B00-MOT-60261 +# devices being controlled by this remote: Motorola DCT 2224 +# + +begin remote + + name Motorola_DCT2224 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9033 4412 + one 563 4420 + zero 563 2180 + ptrail 562 + repeat 9031 2192 + gap 99937 + toggle_bit 0 + + + begin codes + power 0x5006 + rew 0x7808 + play 0x1C0A + ffwd 0xB804 + record 0x8C03 + stop 0x9C02 + pause 0xF800 + page+ 0x5C0C + page- 0xDC04 + info 0xCC05 + back 0xB926 + guide 0x0C0B + exit 0x480B + left 0x6C0E + right 0xEC06 + up 0x2C09 + down 0xAC01 + select 0x8807 + a 0xE801 + b 0xE40E + c 0x1406 + settings 0x4C0D + ppv 0x6809 + menu 0x9806 + last 0xC803 + fav 0xA805 + 1 0x800F + 2 0x4007 + 3 0xC00B + 4 0x2003 + 5 0xA00D + 6 0x6005 + 7 0xE009 + 8 0x1001 + 9 0x900E + 0 0x0000 + input 0x280D + enter 0x8807 + ch+ 0xD00A + ch- 0x3002 + end codes + +end remote + +begin remote + + name Motorola_DCT2224-2 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9034 4412 + one 603 1639 + zero 603 513 + ptrail 608 + repeat 9030 2193 + pre_data_bits 16 + pre_data 0x2FD + gap 108104 + toggle_bit 0 + + + begin codes + vol+ 0x58A7 + vol- 0x7887 + mute 0x08F7 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dct2524/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dct2524/lircd.conf new file mode 100755 index 0000000..31df8aa --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dct2524/lircd.conf @@ -0,0 +1,83 @@ +# +# this config file was originally generated +# using lirc-0.6.6(serial) on Fri Mar 28 22:46:44 2003 +# modified by hand on Sunday Jul 17 00:12:00 2005 +# +# contributed by rob scullion +# based on the DCT2000 file contrib'd by shane bradley +# +# brand: Motorola +# model no. of remote control: ? - Comcast badged +# devices being controlled by this remote: DCT2524/1612 +# +# Note: The "ON DEMAND" button on the Comcast +# badged remote just sends a "1" followed by +# an "ok/select" and is thus not included in +# this config file. + +begin remote + name DCT2524 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9036 4424 + one 556 2185 + zero 556 4424 + ptrail 556 + gap 100025 + toggle_bit 0 + + + begin codes + power 0x000000000000AFF9 + rew 0x00000000000087F7 + play 0x00000000000027FD + ffwd 0x00000000000047FB + stop 0x000000000000C7F3 + pause 0x00000000000007FF + rec 0x00000000000073FC + skipback 0x000000000000C3F7 + mydvr 0x00000000000043FF + live 0x00000000000083F0 + pageup 0x000000000000A3F3 + pagedown 0x00000000000023FB + a_lock 0x00000000000097F6 + b_day- 0x00000000000063FD + c_day+ 0x000000000000E3F5 + up 0x000000000000D3F6 + down 0x00000000000053FE + left 0x00000000000093F1 + right 0x00000000000013F9 + ok/select 0x00000000000077F8 + guide 0x000000000000F3F4 + info 0x00000000000033FA + menu 0x00000000000067F9 + exit 0x000000000000B7F4 + help 0x000000000000B3F2 + last 0x00000000000037FC + vol+ 0x0000000000004FF3 + vol- 0x0000000000008FFB + mute 0x0000000000000FF7 + fav 0x00000000000057FA + ch+ 0x0000000000002FF5 + ch- 0x000000000000CFFD + 1 0x0000000000007FF0 + 2 0x000000000000BFF8 + 3 0x0000000000003FF4 + 4 0x000000000000DFFC + 5 0x0000000000005FF2 + 6 0x0000000000009FFA + 7 0x0000000000001FF6 + 8 0x000000000000EFFE + 9 0x0000000000006FF1 + 0 0x000000000000FFFF + tv/vcr_input 0x000000000000D7F2 + hdzoom_enter 0x000000000000FDFC + pnp-swap 0x0000000000003BF2 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dct6200/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dct6200/lircd.conf new file mode 100755 index 0000000..5583a63 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dct6200/lircd.conf @@ -0,0 +1,70 @@ +# +# this config file was automatically generated +# using lirc-0.7.1(any) on Sat May 7 18:21:53 2005 +# +# contributed by +# +# brand: Motorola +# model no. of remote control: +# devices being controlled by this remote: DCT6200 +# + +begin remote + + name Motorola_DCT6200 + bits 48 + eps 30 + aeps 100 + + one 0 0 + zero 0 0 + pre_data_bits 16 + pre_data 0xFFFF + gap 209929 + min_repeat 1 + toggle_bit 0 + + + begin codes + rew 0x8914DDDF5FFF + play 0x8914DD7F5FFF + ff 0x8914DDF75FFF + stop 0x8914DD5F5FFF + rec 0x145415EC0100 + pgdn 0x145515FC0100 + up 0x29147DF75FFF + down 0x29147DD75FFF + left 0x29147D575FFF + right 0x29147D775FFF + select 0x29147D7D5FFF + guide 0x29147D7F5FFF + menu 0xA914FDFF5FFF + info 0x105515F80100 + exit 0x09145DDF5FFF + help 0x105415E80100 + last 0x09145D5F5FFF + vup 0x238C7DDD5D55 + vdn 0x23847DD55D55 + chup 0x29147DD55FFF + chdn 0x29147D555FFF + mute 0x23AE7DFF5D55 + fav 0x105555D80300 + 1 0x8914DDFD5FFF + 2 0x8914DD7D5FFF + 3 0x8914DDDD5FFF + 4 0x8914DD5D5FFF + 5 0x8914DDF55FFF + 6 0x8914DD755FFF + 7 0x8914DDD55FFF + 8 0x8914DD555FFF + 9 0x09145DFF5FFF + input 0x29147D7F5FFF + 0 0x09145D7F5FFF + enter 0x09145D5F5FFF + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dct700/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dct700/lircd.conf new file mode 100755 index 0000000..31df8aa --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dct700/lircd.conf @@ -0,0 +1,83 @@ +# +# this config file was originally generated +# using lirc-0.6.6(serial) on Fri Mar 28 22:46:44 2003 +# modified by hand on Sunday Jul 17 00:12:00 2005 +# +# contributed by rob scullion +# based on the DCT2000 file contrib'd by shane bradley +# +# brand: Motorola +# model no. of remote control: ? - Comcast badged +# devices being controlled by this remote: DCT2524/1612 +# +# Note: The "ON DEMAND" button on the Comcast +# badged remote just sends a "1" followed by +# an "ok/select" and is thus not included in +# this config file. + +begin remote + name DCT2524 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9036 4424 + one 556 2185 + zero 556 4424 + ptrail 556 + gap 100025 + toggle_bit 0 + + + begin codes + power 0x000000000000AFF9 + rew 0x00000000000087F7 + play 0x00000000000027FD + ffwd 0x00000000000047FB + stop 0x000000000000C7F3 + pause 0x00000000000007FF + rec 0x00000000000073FC + skipback 0x000000000000C3F7 + mydvr 0x00000000000043FF + live 0x00000000000083F0 + pageup 0x000000000000A3F3 + pagedown 0x00000000000023FB + a_lock 0x00000000000097F6 + b_day- 0x00000000000063FD + c_day+ 0x000000000000E3F5 + up 0x000000000000D3F6 + down 0x00000000000053FE + left 0x00000000000093F1 + right 0x00000000000013F9 + ok/select 0x00000000000077F8 + guide 0x000000000000F3F4 + info 0x00000000000033FA + menu 0x00000000000067F9 + exit 0x000000000000B7F4 + help 0x000000000000B3F2 + last 0x00000000000037FC + vol+ 0x0000000000004FF3 + vol- 0x0000000000008FFB + mute 0x0000000000000FF7 + fav 0x00000000000057FA + ch+ 0x0000000000002FF5 + ch- 0x000000000000CFFD + 1 0x0000000000007FF0 + 2 0x000000000000BFF8 + 3 0x0000000000003FF4 + 4 0x000000000000DFFC + 5 0x0000000000005FF2 + 6 0x0000000000009FFA + 7 0x0000000000001FF6 + 8 0x000000000000EFFE + 9 0x0000000000006FF1 + 0 0x000000000000FFFF + tv/vcr_input 0x000000000000D7F2 + hdzoom_enter 0x000000000000FDFC + pnp-swap 0x0000000000003BF2 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dsr205/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dsr205/lircd.conf new file mode 100755 index 0000000..f44b7da --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dsr205/lircd.conf @@ -0,0 +1,239 @@ +# +# this config file was automatically generated +# using lirc-0.8.0(serial) on Wed Apr 12 13:07:22 2006 +# +# contributed by +# +# brand: Motorola +# model no. of remote control: IRC451 (PN:515301-002) Modes 0000,0001,0002,0003 +# devices being controlled by this remote: Motorola (DSR205 & DSR315) StarChoice receiver +# + +begin remote + + name Motorola_dsr_series + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5082 1878 + one 1102 2874 + zero 1102 884 + ptrail 1107 + gap 99386 + min_repeat 1 + toggle_bit 0 + + + begin codes + POWER 0x605 + UP 0xC4F + DOWN 0x045 + LEFT 0xB88 + RIGHT 0x80C + ENTER 0x384 + GOBACK 0x68F + EXIT 0xA0F + INFO 0xE4C + GUIDE 0x782 + REWIND 0x944 + PLAY 0x74D + FORWARD 0x148 + RECORD 0x54E + PAUSE 0x34B + STOP 0xB47 + CH_UP 0xD07 + CH_DOWN 0x08A + LAST 0x187 + INTERESTS 0x581 + BROWSE 0x849 + PPV 0xB02 + FUTURE 0x443 + OPTIONS 0x289 + 1 0xF04 + 2 0x886 + 3 0x48C + 4 0xE83 + 5 0x98B + 6 0xD8D + 7 0x50B + 8 0x901 + 9 0x708 + 0 0x246 + HELP 0xF8E + end codes + +end remote + +begin remote + + name Motorola_IRC451_0001 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5074 1909 + one 1086 2902 + zero 1086 906 + ptrail 1090 + gap 99708 + min_repeat 1 + toggle_bit 0 + + + begin codes + POWER_1 0x62B + UP_1 0xC61 + DOWN_1 0x06B + LEFT_1 0xBA6 + RIGHT_1 0x822 + ENTER_1 0x3AA + GOBACK_1 0x6A1 + EXIT_1 0xA21 + INFO_1 0xE62 + GUIDE_1 0x7AC + REWIND_1 0x96A + PLAY_1 0x763 + FORWARD_1 0x166 + RECORD_1 0x560 + PAUSE_1 0x365 + STOP_1 0xB69 + CH_UP_1 0xD29 + CH_DOWN_1 0x0A4 + LAST_1 0x1A9 + INTERESTS_1 0x5AF + BROWSE_1 0x867 + PPV_1 0xB2C + FUTURE_1 0x46D + OPTIONS_1 0x2A7 + 1_1 0xF2A + 2_1 0x8A8 + 3_1 0x4A2 + 4_1 0xEAD + 5_1 0x9A5 + 6_1 0xDA3 + 7_1 0x525 + 8_1 0x92F + 9_1 0x726 + 0_1 0x268 + HELP_1 0xFA0 + end codes + +end remote + +begin remote + + name Motorola_IRC451_0002 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5048 1936 + one 1055 2934 + zero 1055 941 + ptrail 1054 + gap 99772 + toggle_bit 0 + + + begin codes + POWER_2 0x612 + UP_2 0xC58 + DOWN_2 0x052 + LEFT_2 0xB9F + RIGHT_2 0x81B + ENTER_2 0x393 + GOBACK_2 0x698 + EXIT_2 0xA18 + INFO_2 0xE5B + GUIDE_2 0x795 + REWIND_2 0x953 + PLAY_2 0x75A + FORWARD_2 0x15F + RECORD_2 0x559 + PAUSE_2 0x35C + STOP_2 0xB50 + CH_UP_2 0xD10 + CH_DOWN_2 0x09D + LAST_2 0x190 + INTERESTS_2 0x596 + BROWSE_2 0x85E + PPV_2 0xB15 + FUTURE_2 0x454 + OPTIONS_2 0x29E + 1_2 0xF13 + 2_2 0x891 + 3_2 0x49B + 3_2 0x49B + 4_2 0xE94 + 5_2 0x99C + 6_2 0xD9A + 7_2 0x51C + 8_2 0x916 + 9_2 0x71F + 0_2 0x251 + HELP_2 0xF99 + end codes + +end remote + +begin remote + + name Motorola_IRC451_0003 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5052 1934 + one 1047 2943 + zero 1047 949 + ptrail 1041 + gap 99759 + toggle_bit 0 + + + begin codes + POWER_3 0x63C + UP_3 0xC76 + DOWN_3 0x07C + LEFT_3 0xBB1 + RIGHT_3 0x835 + ENTER_3 0x3BD + GOBACK_3 0x6B6 + EXIT_3 0xA36 + INFO_3 0xE75 + GUIDE_3 0x7BB + REWIND_3 0x97D + PLAY_3 0x774 + FORWARD_3 0x171 + RECORD_3 0x577 + PAUSE_3 0x372 + STOP_3 0xB7E + CH_UP_3 0xD3E + CH_DOWN_3 0x0B3 + LAST_3 0x1BE + INTERESTS_3 0x5B8 + BROWSE_3 0x870 + PPV_3 0xB3B + FUTURE_3 0x47A + OPTIONS_3 0x2B0 + 1_3 0xF3D + 2_3 0x8BF + 3_3 0x4B5 + 4_3 0xEBA + 5_3 0x9B2 + 6_3 0xDB4 + 7_3 0x532 + 8_3 0x938 + 9_3 0x731 + 0_3 0x27F + HELP_3 0xFB7 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dsr305/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dsr305/lircd.conf new file mode 100755 index 0000000..d13f9fb --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dsr305/lircd.conf @@ -0,0 +1,93 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre5(any) on Wed Jul 28 01:58:55 2004 +# +# contributed by S. Mark Dzialo +# +# brand: Motorola +# model no. of remote control: IRC442 (PN: 487008-001) +# devices being controlled by this remote: Motorola (DSR305SC) StarChoice receiver, IBM T40 (237372U) laptop +# + +begin remote + + name Motorola_dsr305 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 4954 1985 + one 951 3044 + zero 951 1035 + ptrail 951 + gap 99611 + toggle_bit 0 + + + begin codes + POWER 0x0000000000000605 + SOURCE 0x0000000000000A4A + PPV 0x0000000000000B02 + UP 0x0000000000000C4F + DOWN 0x0000000000000045 + LEFT 0x0000000000000B88 + RIGHT 0x000000000000080C + CENTER_ENTER 0x0000000000000384 + GOBACK 0x000000000000068F + GUIDE 0x0000000000000782 + INFO 0x0000000000000E4C + INTERESTS 0x0000000000000581 + BROWSE 0x0000000000000849 + EXIT 0x0000000000000A0F + OPTIONS 0x0000000000000289 + FUTURE 0x0000000000000443 + LAST_CH 0x0000000000000187 + CH_UP 0x0000000000000D07 + CH_DOWN 0x000000000000008A + 1 0x0000000000000F04 + 2 0x0000000000000886 + 3 0x000000000000048C + 4 0x0000000000000E83 + 5 0x000000000000098B + 6 0x0000000000000D8D + 7 0x000000000000050B + 8 0x0000000000000901 + 9 0x0000000000000708 + 0 0x0000000000000246 + HELP 0x0000000000000F8E + ENTER 0x0000000000000384 + end codes + +end remote + + +begin remote + + name Motorola_IRC442-2 + bits 11 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 2385 603 + one 1178 603 + zero 590 603 + ptrail 590 + gap 44826 + toggle_bit 0 + + + begin codes + VOL_UP 0x0000000000000248 + VOL_DOWN 0x0000000000000648 + MUTE 0x0000000000000148 + REV 0x00000000000006CD + FWD 0x00000000000001CD + PLAY 0x00000000000002CD + STOP 0x00000000000000CD + PAUSE 0x00000000000004CD + end codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/motorola_dsr315/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dsr315/lircd.conf new file mode 100755 index 0000000..f44b7da --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dsr315/lircd.conf @@ -0,0 +1,239 @@ +# +# this config file was automatically generated +# using lirc-0.8.0(serial) on Wed Apr 12 13:07:22 2006 +# +# contributed by +# +# brand: Motorola +# model no. of remote control: IRC451 (PN:515301-002) Modes 0000,0001,0002,0003 +# devices being controlled by this remote: Motorola (DSR205 & DSR315) StarChoice receiver +# + +begin remote + + name Motorola_dsr_series + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5082 1878 + one 1102 2874 + zero 1102 884 + ptrail 1107 + gap 99386 + min_repeat 1 + toggle_bit 0 + + + begin codes + POWER 0x605 + UP 0xC4F + DOWN 0x045 + LEFT 0xB88 + RIGHT 0x80C + ENTER 0x384 + GOBACK 0x68F + EXIT 0xA0F + INFO 0xE4C + GUIDE 0x782 + REWIND 0x944 + PLAY 0x74D + FORWARD 0x148 + RECORD 0x54E + PAUSE 0x34B + STOP 0xB47 + CH_UP 0xD07 + CH_DOWN 0x08A + LAST 0x187 + INTERESTS 0x581 + BROWSE 0x849 + PPV 0xB02 + FUTURE 0x443 + OPTIONS 0x289 + 1 0xF04 + 2 0x886 + 3 0x48C + 4 0xE83 + 5 0x98B + 6 0xD8D + 7 0x50B + 8 0x901 + 9 0x708 + 0 0x246 + HELP 0xF8E + end codes + +end remote + +begin remote + + name Motorola_IRC451_0001 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5074 1909 + one 1086 2902 + zero 1086 906 + ptrail 1090 + gap 99708 + min_repeat 1 + toggle_bit 0 + + + begin codes + POWER_1 0x62B + UP_1 0xC61 + DOWN_1 0x06B + LEFT_1 0xBA6 + RIGHT_1 0x822 + ENTER_1 0x3AA + GOBACK_1 0x6A1 + EXIT_1 0xA21 + INFO_1 0xE62 + GUIDE_1 0x7AC + REWIND_1 0x96A + PLAY_1 0x763 + FORWARD_1 0x166 + RECORD_1 0x560 + PAUSE_1 0x365 + STOP_1 0xB69 + CH_UP_1 0xD29 + CH_DOWN_1 0x0A4 + LAST_1 0x1A9 + INTERESTS_1 0x5AF + BROWSE_1 0x867 + PPV_1 0xB2C + FUTURE_1 0x46D + OPTIONS_1 0x2A7 + 1_1 0xF2A + 2_1 0x8A8 + 3_1 0x4A2 + 4_1 0xEAD + 5_1 0x9A5 + 6_1 0xDA3 + 7_1 0x525 + 8_1 0x92F + 9_1 0x726 + 0_1 0x268 + HELP_1 0xFA0 + end codes + +end remote + +begin remote + + name Motorola_IRC451_0002 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5048 1936 + one 1055 2934 + zero 1055 941 + ptrail 1054 + gap 99772 + toggle_bit 0 + + + begin codes + POWER_2 0x612 + UP_2 0xC58 + DOWN_2 0x052 + LEFT_2 0xB9F + RIGHT_2 0x81B + ENTER_2 0x393 + GOBACK_2 0x698 + EXIT_2 0xA18 + INFO_2 0xE5B + GUIDE_2 0x795 + REWIND_2 0x953 + PLAY_2 0x75A + FORWARD_2 0x15F + RECORD_2 0x559 + PAUSE_2 0x35C + STOP_2 0xB50 + CH_UP_2 0xD10 + CH_DOWN_2 0x09D + LAST_2 0x190 + INTERESTS_2 0x596 + BROWSE_2 0x85E + PPV_2 0xB15 + FUTURE_2 0x454 + OPTIONS_2 0x29E + 1_2 0xF13 + 2_2 0x891 + 3_2 0x49B + 3_2 0x49B + 4_2 0xE94 + 5_2 0x99C + 6_2 0xD9A + 7_2 0x51C + 8_2 0x916 + 9_2 0x71F + 0_2 0x251 + HELP_2 0xF99 + end codes + +end remote + +begin remote + + name Motorola_IRC451_0003 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5052 1934 + one 1047 2943 + zero 1047 949 + ptrail 1041 + gap 99759 + toggle_bit 0 + + + begin codes + POWER_3 0x63C + UP_3 0xC76 + DOWN_3 0x07C + LEFT_3 0xBB1 + RIGHT_3 0x835 + ENTER_3 0x3BD + GOBACK_3 0x6B6 + EXIT_3 0xA36 + INFO_3 0xE75 + GUIDE_3 0x7BB + REWIND_3 0x97D + PLAY_3 0x774 + FORWARD_3 0x171 + RECORD_3 0x577 + PAUSE_3 0x372 + STOP_3 0xB7E + CH_UP_3 0xD3E + CH_DOWN_3 0x0B3 + LAST_3 0x1BE + INTERESTS_3 0x5B8 + BROWSE_3 0x870 + PPV_3 0xB3B + FUTURE_3 0x47A + OPTIONS_3 0x2B0 + 1_3 0xF3D + 2_3 0x8BF + 3_3 0x4B5 + 4_3 0xEBA + 5_3 0x9B2 + 6_3 0xDB4 + 7_3 0x532 + 8_3 0x938 + 9_3 0x731 + 0_3 0x27F + HELP_3 0xFB7 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dsr922/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dsr922/lircd.conf new file mode 100755 index 0000000..39d8ff1 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dsr922/lircd.conf @@ -0,0 +1,66 @@ +# +# this config file was automatically generated +# using lirc-0.7.0(usb-uirt2_raw) on Sat Feb 19 15:27:54 2005 +# +# contributed by amcneil|cyberport.net +# +# brand: Motorola 4dtv IR/UHF remote +# model no. of remote control: 920 +# devices being controlled by this remote: Motorola DSR-922 4DTV +# satelite receiver +# notes: black numberpad "enter" sends same code as round blue "enter" +# and vol+/- mute are for programmable tv control +# I haven't found an output to monitor to check if the 4dtv is on. +# It sits in standby with video output on black +# +begin remote + name motorola_dsr922 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 5011 1953 + one 1042 2936 + zero 1042 948 + ptrail 1043 + gap 99500 + toggle_bit 0 + min_repeat 1 + + begin codes + 0 0x0000000000000246 + 1 0x0000000000000F04 + 2 0x0000000000000886 + 3 0x000000000000048C + 4 0x0000000000000E83 + 5 0x000000000000098B + 6 0x0000000000000D8D + 7 0x000000000000050B + 8 0x0000000000000901 + 9 0x0000000000000708 + Power 0x0000000000000605 + Source 0x0000000000000A4A + Sat 0x0000000000000A85 + Up 0x0000000000000C4F + Down 0x0000000000000045 + Right 0x000000000000080C + Left 0x0000000000000B88 + Enter 0x0000000000000384 + GoBack 0x000000000000068F + Exit 0x0000000000000A0F + Guide 0x0000000000000782 + Interests 0x0000000000000581 + Options 0x0000000000000289 + Info 0x0000000000000E4C + Browse 0x0000000000000849 + Future 0x0000000000000443 + Ch-UP 0x0000000000000D07 + Ch-DOWN 0x000000000000008A + LastCh 0x0000000000000187 + Help 0x0000000000000F8E + end codes +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/motorola_dth335/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_dth335/lircd.conf new file mode 100755 index 0000000..5ba5a62 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_dth335/lircd.conf @@ -0,0 +1,55 @@ +begin remote + + name DTH335 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9157 4344 + one 730 1525 + zero 730 378 + ptrail 711 + repeat 9156 2105 + pre_data_bits 16 + pre_data 0x61F4 + gap 107722 + toggle_bit 0 + + + begin codes + power 0x00000000000058A7 + 1 0x00000000000040BF + 2 0x000000000000C837 + 3 0x00000000000030CF + 4 0x0000000000006897 + 5 0x00000000000028D7 + 6 0x000000000000E817 + 7 0x00000000000018E7 + 8 0x000000000000B04F + 9 0x0000000000009867 + 0 0x000000000000708F + mute 0x00000000000050AF + g 0x00000000000039C6 + tv 0x00000000000041BE + mosaic 0x000000000000C936 + left 0x00000000000011EE + up 0x000000000000D12E + right 0x000000000000B946 + down 0x0000000000008976 + select 0x00000000000008F7 + plus 0x000000000000A857 + question 0x000000000000F10E + recall 0x000000000000619E + volume_up 0x00000000000048B7 + volume_down 0x000000000000D827 + channel_up 0x000000000000E01F + channel_down 0x000000000000807F + red 0x000000000000F807 + green 0x0000000000007887 + yellow 0x00000000000020DF + blue 0x000000000000906F + end codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/motorola_rg2xxx/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_rg2xxx/lircd.conf new file mode 100755 index 0000000..74ff1ea --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_rg2xxx/lircd.conf @@ -0,0 +1,144 @@ +# +# this config file was automatically generated +# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Mon May 09 10:49:02 2005 +# +# contributed by toonces +# +# brand: MTS TV or Quest Choice TV +# model: NextLevel or Motorolla RG2200 +# supported devices: RG2000 RG2200 RG2400 +# +# Remote is SRC-200A (should work with other similar models) +# +# Programmed using factory defaults (will work without setting gateway id): +# Infared, stream 1 +# + +begin remote + + name motorola_rg_series + bits 8 + flags SPACE_ENC + eps 25 + aeps 100 + + header 5041 2901 + one 1049 911 + zero 1049 2901 + ptrail 1049 + post_data_bits 8 + post_data 0xFF + gap 52610 + toggle_bit 0 + + + begin codes + select 0x00000000000000CD + 1 0x000000000000000D + 2 0x0000000000000075 + 3 0x00000000000000B5 + 4 0x0000000000000015 + 5 0x0000000000000065 + 6 0x0000000000000025 + 7 0x00000000000000AD + 8 0x000000000000006D + 9 0x000000000000008D + 0 0x00000000000000D9 + chan_up 0x000000000000002D + chan_down 0x00000000000000F5 + b 0x00000000000000A9 + exit 0x00000000000000A5 + last_chan 0x00000000000000E5 + call_id 0x00000000000000D5 + end codes + +end remote + +# +# Infared, stream 2 +# + +begin remote + + name SRC-200A_2 + bits 8 + flags SPACE_ENC + eps 25 + aeps 100 + + header 5030 2908 + one 1039 919 + zero 1039 2908 + ptrail 1039 + post_data_bits 8 + post_data 0xFF + gap 48701 + toggle_bit 0 + + + begin codes + select 0x00000000000000CE + 1 0x000000000000000E + 2 0x0000000000000076 + 3 0x00000000000000B6 + 4 0x0000000000000016 + 5 0x0000000000000066 + 6 0x0000000000000026 + 7 0x00000000000000AE + 8 0x000000000000006E + 9 0x000000000000008E + 0 0x00000000000000DA + chan_up 0x000000000000002E + chan_down 0x00000000000000F6 + b 0x00000000000000AA + exit 0x00000000000000A6 + last_chan 0x00000000000000E6 + call_id 0x00000000000000D6 + end codes + +end remote + +# +# Infared, stream 3 +# + +begin remote + + name SRC-200A_3 + bits 8 + flags SPACE_ENC + eps 25 + aeps 100 + + header 5057 2889 + one 1065 902 + zero 1065 2889 + ptrail 1065 + post_data_bits 8 + post_data 0xFF + gap 46655 + toggle_bit 0 + + + begin codes + select 0x00000000000000CC + 1 0x000000000000000C + 2 0x0000000000000074 + 3 0x00000000000000B4 + 4 0x0000000000000014 + 5 0x0000000000000064 + 6 0x0000000000000024 + 7 0x00000000000000AC + 8 0x000000000000006C + 9 0x000000000000008C + 0 0x00000000000000D8 + chan_up 0x000000000000002C + chan_down 0x00000000000000F4 + b 0x00000000000000A8 + exit 0x00000000000000A4 + last_chan 0x00000000000000E4 + call_id 0x00000000000000D4 + end codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/motorola_vip12xx/lircd.conf b/abs/core/system-templates/templates/transmit/motorola_vip12xx/lircd.conf new file mode 100755 index 0000000..2b32c2b --- /dev/null +++ b/abs/core/system-templates/templates/transmit/motorola_vip12xx/lircd.conf @@ -0,0 +1,73 @@ +begin remote + + name vip1200 + bits 32 + flags RCMM|CONST_LENGTH + eps 18 + aeps 100 + + header 417 278 + three 167 778 + two 167 611 + one 167 444 + zero 167 278 + ptrail 167 + gap 99817 + toggle_bit_mask 0x8000 + + begin codes + ZERO 0x23402600 + 0 0x23402600 + ONE 0x2340A601 + 1 0x2340A601 + TWO 0x23402602 + 2 0x23402602 + THREE 0x2340A603 + 3 0x2340A603 + FOUR 0x23402604 + 4 0x23402604 + FIVE 0x2340A605 + 5 0x2340A605 + SIX 0x2340A606 + 6 0x2340A606 + SEVEN 0x2340A607 + 7 0x2340A607 + EIGHT 0x23402608 + 8 0x23402608 + NINE 0x2340A609 + 9 0x2340A609 + LAST 0x2340260A + POWER 0x2340A60C + INFO 0x2340260F + CHPG+ 0x2340A620 + CHPG- 0x2340A621 + FF 0x23402628 + REW 0x2340A629 + PLAY 0x2340262C + PAUSE 0x23402630 + STOP 0x2340A631 + RECORD 0x23402637 + A 0x2340A638 + B 0x2340A639 + RECORDEDTV 0x23402644 + FWD 0x2340A64C + REPLAY 0x2340264D + MENU 0x2340A654 + EXIT 0x2340A655 + UP 0x2340A658 + DOWN 0x23402659 + LEFT 0x2340A65A + RIGHT 0x2340A65B + OK 0x2340A65C + BACK 0x2340A683 + C 0x2340A686 + DELETE 0x2340A69E + TVVIDEO 0x234026A8 + GUIDE 0x234026CC + ENTER 0x234026E1 + VIDEOONDEMAND 0x2340A6F0 + gointeractive 0x2340A6FD + end codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/nokia_8003/lircd.conf b/abs/core/system-templates/templates/transmit/nokia_8003/lircd.conf new file mode 100755 index 0000000..1bb9c55 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/nokia_8003/lircd.conf @@ -0,0 +1,87 @@ +# +# This config file was *not* automatically generated +# using lirc-0.6.3 on Sat Jul 6 23:20:00 2001 +# +# contributed by Jean-Claude Repetto +# +# brand : Nokia +# model : SCN600 +# supported devices : 8003S (analogue & D2MAC satellite receiver) +# + +begin remote + + name Nokia_SCN600 + bits 8 + flags RC5|CONST_LENGTH + eps 15 + aeps 200 + + header 792 2165 + one 652 339 + zero 652 339 + pre_data_bits 1 + pre_data 0x00 + post_data_bits 8 + post_data 0xCD + gap 128834 + toggle_bit 0 + + begin codes + 1 0x0000000000007F + 2 0x000000000000BF + 3 0x0000000000003F + 4 0x000000000000DF + 5 0x0000000000005F + 6 0x0000000000009F + 7 0x0000000000001F + 8 0x000000000000EF + 9 0x0000000000006F + 0 0x000000000000FF + UP 0x0000000000008F + DOWN 0x0000000000000F + i 0x0000000000004B + MUTE 0x000000000000EB + RADIO 0x000000000000FB + LAST 0x000000000000AB + LEFT 0x0000000000000B + RIGHT 0x0000000000008B + TV/SAT 0x0000000000001B + OK 0x000000000000F3 + MENU 0x00000000000023 + REV 0x000000000000D3 + SIZE 0x000000000000E3 + STOP 0x00000000000053 + TEXT 0x00000000000033 + UPD 0x00000000000093 + OFF 0x000000000000CF + + end codes + +end remote + +begin remote + name SCN600pre + bits 8 + flags RC5 + eps 15 + aeps 200 + + header 792 2165 + one 652 339 + zero 652 339 + pre_data_bits 1 + pre_data 0x00 + post_data_bits 8 + post_data 0x00 + gap 128834 + toggle_bit 0 + + begin codes + pre 0x00000000000080 + end codes + +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/nokia_9600/lircd.conf b/abs/core/system-templates/templates/transmit/nokia_9600/lircd.conf new file mode 100755 index 0000000..fbd0811 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/nokia_9600/lircd.conf @@ -0,0 +1,90 @@ +# +# This config file was *not* automatically generated +# using lirc-0.6.3 on Sat Jul 6 23:25:00 2001 +# +# contributed by Jean-Claude Repetto +# +# brand: Nokia +# model: ??? +# supported devices: Media Master 96XX +# + +begin remote + + name Nokia_9600 + bits 8 + flags RC5|CONST_LENGTH + eps 15 + aeps 200 + + header 767 2236 + one 641 355 + zero 641 355 + + pre_data_bits 1 + pre_data 0x0 + post_data_bits 8 + post_data 0xC5 + gap 99596 + repeat_bit 0 + + begin codes + OFF 0x00000000000000CF + RADIO 0x00000000000000FB + TV 0x000000000000001B + 1 0x000000000000007F + 2 0x00000000000000BF + 3 0x000000000000003F + 4 0x00000000000000DF + 5 0x000000000000005F + 6 0x000000000000009F + 7 0x000000000000001F + 8 0x00000000000000EF + 9 0x000000000000006F + 0 0x00000000000000FF + GUIDE 0x0000000000000023 + MENU 0x00000000000000B5 + EXIT 0x0000000000000055 + i 0x000000000000004B + OK 0x00000000000000F3 + VOL+ 0x0000000000000097 + VOL- 0x0000000000000017 + MUTE 0x00000000000000EB + RIGHT 0x000000000000008B + UP 0x000000000000008F + DOWN 0x000000000000000F + NEXT 0x00000000000000D5 + PREV 0x0000000000000035 + LEFT 0x000000000000000B + TEXT 0x00000000000000BE + end codes + +end remote + +begin remote + + name 9600pre + bits 8 + flags RC5|CONST_LENGTH + eps 15 + aeps 200 + + header 767 2236 + one 641 355 + zero 641 355 + pre_data_bits 1 + pre_data 0x0 + post_data_bits 8 + post_data 0 + gap 99596 + repeat_bit 0 + + + begin codes + pre 0x0000000000000080 + end codes + +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/nokia_9780/lircd.conf b/abs/core/system-templates/templates/transmit/nokia_9780/lircd.conf new file mode 100755 index 0000000..8c3c1d3 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/nokia_9780/lircd.conf @@ -0,0 +1,261 @@ + +# this config file was automatically generated +# using lirc-0.6.6(serial) on Tue Aug 19 19:59:57 2003, +# with a minor tweak by Bud. +# +# contributed by Bud Millwood +# +# brand: Nokia +# model no. of remote control: MM9780S (Media Master 9780S) +# supported devices: satellite receiver +# + +begin remote + + name MM9780S + flags CONST_LENGTH|RAW_CODES + eps 20 + aeps 100 + + ptrail 0 + repeat 0 0 + gap 98969 + + begin raw_codes + + name PWR + 447 244 174 268 174 239 + 228 738 174 598 200 234 + 175 239 220 240 174 267 + 174 259 175 266 174 765 + 174 267 174 + + name EXIT + 450 269 174 239 203 266 + 174 765 175 597 198 236 + 174 267 173 232 227 242 + 199 234 174 598 174 232 + 228 747 173 + + name MUTE + 449 268 175 267 174 267 + 174 765 175 597 175 259 + 173 268 197 236 174 267 + 199 234 175 266 174 765 + 175 441 199 + + name ONE + 474 243 201 241 174 240 + 200 766 176 596 174 259 + 176 265 199 207 202 267 + 175 231 201 267 175 258 + 176 440 173 + + name TWO + 474 244 174 268 174 266 + 174 765 175 597 175 259 + 175 265 175 259 175 266 + 174 231 211 258 174 260 + 200 571 174 + + name THREE + 448 269 176 239 202 239 + 201 765 175 597 198 235 + 199 242 200 234 175 265 + 174 232 202 240 200 260 + 175 772 173 + + name FOUR + 449 269 175 266 176 265 + 173 767 173 598 187 247 + 200 241 200 233 201 240 + 174 232 201 268 173 434 + 174 267 174 + + name FIVE + 449 269 174 267 175 266 + 174 766 174 598 174 259 + 174 267 174 259 175 267 + 199 234 175 239 199 435 + 175 441 174 + + name SIX + 450 268 174 268 199 241 + 173 767 173 598 174 260 + 174 239 202 259 174 267 + 198 235 175 266 174 434 + 175 598 173 + + name SEVEN + 449 269 175 239 227 241 + 199 741 175 597 174 259 + 175 240 201 231 205 264 + 174 259 199 242 174 434 + 175 772 173 + + name EIGHT + 450 241 202 267 175 267 + 173 766 173 599 200 206 + 202 266 174 260 201 240 + 173 232 202 240 226 565 + 175 239 201 + + name NINE + 446 268 172 269 174 266 + 176 765 199 574 188 218 + 226 242 173 232 202 240 + 224 235 175 268 172 592 + 174 442 197 + + name ZERO + 446 243 175 239 228 241 + 199 740 174 598 175 259 + 174 267 198 234 174 267 + 174 259 175 266 173 261 + 174 267 199 + + name VOL- + 475 243 200 242 175 266 + 174 765 176 597 173 260 + 174 267 173 260 174 267 + 199 207 202 441 202 231 + 174 442 174 + + name VOL+ + 448 270 201 241 175 266 + 173 766 175 597 173 261 + 190 254 171 259 200 241 + 173 260 175 441 174 259 + 175 266 199 + + name INFO + 449 242 174 267 174 267 + 175 764 175 598 199 206 + 202 267 199 234 175 266 + 175 231 202 267 173 766 + 174 774 173 + + name BACK + 442 269 174 268 175 266 + 174 765 189 584 173 260 + 201 240 173 232 202 267 + 174 434 174 598 174 434 + 175 772 200 + + name TEXT + 448 269 174 268 175 265 + 175 765 173 599 196 210 + 202 266 174 260 174 267 + 173 434 176 441 174 590 + 174 598 175 + + name MENU + 423 268 201 240 173 268 + 173 767 175 598 173 260 + 201 240 174 232 203 265 + 174 434 175 441 174 232 + 202 597 174 + + name GUIDE + 422 268 174 268 174 267 + 174 765 174 598 174 259 + 175 267 174 259 173 268 + 173 434 175 441 175 433 + 175 772 175 + + name PROG+ + 420 270 174 268 174 266 + 174 766 175 597 173 261 + 174 239 202 259 174 267 + 173 260 175 772 174 204 + 229 598 174 + + name PROG- + 449 269 174 268 198 243 + 173 766 174 598 174 259 + 175 266 174 232 202 266 + 174 232 202 773 174 434 + 174 267 173 + + name PGUP + 448 269 175 267 175 266 + 174 766 173 599 174 259 + 201 240 199 235 174 267 + 172 436 175 266 200 740 + 200 415 174 + + name PGDN + 449 269 175 267 174 267 + 173 766 174 599 173 260 + 175 266 173 260 198 243 + 173 435 174 267 174 765 + 201 572 174 + + name UP + 449 269 175 267 200 241 + 174 765 199 573 173 261 + 173 268 173 260 174 267 + 174 434 173 443 174 259 + 174 267 174 + + name DN + 448 269 174 268 174 267 + 200 739 174 598 174 259 + 176 265 173 233 202 239 + 201 435 174 442 174 231 + 202 442 174 + + name LEFT + 450 269 174 267 175 266 + 173 768 173 598 201 204 + 228 214 201 259 175 266 + 174 434 175 441 199 409 + 175 441 174 + + name RIGHT + 421 269 174 267 175 266 + 173 766 175 598 173 260 + 200 241 173 260 201 240 + 173 435 174 442 172 436 + 174 598 198 + + name OK + 449 268 175 267 175 266 + 199 740 175 598 174 259 + 174 240 200 232 202 267 + 174 434 175 598 174 259 + 174 598 199 + + name RED + 474 217 202 266 175 267 + 197 742 175 597 175 258 + 175 267 199 206 202 267 + 199 234 174 773 175 764 + 200 241 201 + + name GREEN + 421 270 174 267 202 212 + 225 741 186 587 198 235 + 175 266 174 259 175 266 + 175 231 202 773 174 765 + 175 772 175 + + name BLUE + 448 270 174 268 180 261 + 173 766 201 572 173 260 + 175 266 174 232 201 240 + 201 434 200 572 174 435 + 174 266 175 + + name YELLOW + 455 263 201 213 202 240 + 201 765 174 598 200 233 + 175 266 174 232 202 267 + 173 434 175 441 200 233 + 200 747 200 + + end raw_codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/nokia_9802/lircd.conf b/abs/core/system-templates/templates/transmit/nokia_9802/lircd.conf new file mode 100755 index 0000000..819f912 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/nokia_9802/lircd.conf @@ -0,0 +1,227 @@ + +# contributed by Anders Bjork SM2NON +# +# this config file was hand-hacked using oscilloscope +# to compare the result with orginal remote. +# +# +# brand: Nokia +# model no. of remote control: MM9802S (Media Master 9802S) +# supported devices: satelite receiver +# + +begin remote + + name Nokia_9802 + flags CONST_LENGTH|RAW_CODES + eps 30 + aeps 100 + + ptrail 0 + repeat 0 0 + gap 99755 + + begin raw_codes + + name 0 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 230 + 200 250 200 + + name 1 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 230 + 200 450 200 + + name 2 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 230 + 200 600 200 + + name 3 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 230 + 200 750 200 + + name 4 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 450 + 200 250 200 + + name 5 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 450 + 200 450 200 + + name 6 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 450 + 200 600 200 + + name 7 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 450 + 200 750 200 + + name 8 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 600 + 200 250 200 + + name 9 + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 600 + 200 450 200 + + name MUTE + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 750 + 200 450 200 + + name INFO + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 750 + 200 750 200 + + name POWER + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 250 180 750 + 200 250 200 + + name VOL- + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 450 180 250 + 200 450 200 + + name BACK + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 600 180 450 + 200 750 200 + + name TEXT + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 600 + 200 600 200 + + name MENU + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 250 + 200 550 200 + + name GUIDE + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 450 + 200 750 200 + + name P+ + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 750 180 250 + 200 600 200 + + name P- + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 750 180 450 + 200 250 200 + + name FUP + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 250 180 750 + 200 450 200 + + name FDOWN + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 250 180 750 + 200 600 200 + + name UP + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 250 + 200 250 200 + + name DOWN + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 250 + 200 450 200 + + name LEFT + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 450 + 200 450 200 + + name RIGHT + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 450 180 450 + 200 600 200 + + name OK + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 450 180 600 180 250 + 200 600 200 + + name VOL+ + 350 300 200 250 200 250 + 200 800 150 600 180 250 + 180 250 180 250 180 250 + 180 250 180 450 180 250 + 200 250 200 + + end raw_codes + +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/nokia_dbox2/lircd.conf b/abs/core/system-templates/templates/transmit/nokia_dbox2/lircd.conf new file mode 100755 index 0000000..9b45271 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/nokia_dbox2/lircd.conf @@ -0,0 +1,59 @@ +# +# this config file was derived from the DBOX config file +# +# brand: Nokia +# model: ? +# supported devices: D-Box2 +# + +begin remote + + name D-BOX2 + bits 8 + flags SHIFT_ENC|CONST_LENGTH + eps 10 + aeps 300 + + header 510 2520 + one 450 550 + zero 450 550 + pre_data_bits 1 + pre_data 0x0 + post_data_bits 8 + post_data 0xC5 + gap 59500 + repeat_bit 0 + + begin codes + power 0x00000000000000CF + home 0x00000000000000FB + d-box 0x000000000000001B + 1 0x000000000000007F + 2 0x00000000000000BF + 3 0x000000000000003F + 4 0x00000000000000DF + 5 0x000000000000005F + 6 0x000000000000009F + 7 0x000000000000001F + 8 0x00000000000000EF + 9 0x000000000000006F + 0 0x00000000000000FF + blue 0x0000000000000023 + yellow 0x00000000000000B5 + green 0x0000000000000055 + red 0x000000000000004B + ok 0x00000000000000F3 + vol_+ 0x0000000000000097 + vol_- 0x0000000000000017 + mute 0x00000000000000EB + right 0x000000000000008B + up 0x000000000000008F + down 0x000000000000000F + next 0x00000000000000D5 + prev 0x0000000000000035 + left 0x000000000000000B + help 0x00000000000000BE + end codes + +end remote + diff --git a/abs/core/system-templates/templates/transmit/pace_4001/lircd.conf b/abs/core/system-templates/templates/transmit/pace_4001/lircd.conf new file mode 100755 index 0000000..49c098b --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_4001/lircd.conf @@ -0,0 +1,70 @@ +# +# this config file was automatically generated +# using lirc-0.6.3pre4(sir) on Wed Feb 14 04:40:48 2001 +# +# contributed by John G Ineson +# +# brand: Pace +# model: DI4001N +# supported devices: DI4001N (NTL UK Digital Cable box) +# + +begin remote + + name DI4001N + bits 13 + flags RC5|CONST_LENGTH + eps 30 + aeps 100 + + one 887 898 + zero 887 898 + plead 875 + gap 114458 + toggle_bit 2 + + + begin codes + 1 0x0000000000001281 + 2 0x0000000000001282 + 3 0x0000000000001283 + 4 0x0000000000001284 + 5 0x0000000000001285 + 6 0x0000000000001286 + 7 0x0000000000001287 + 8 0x0000000000001288 + 9 0x0000000000001289 + 0 0x0000000000001280 + Mute 0x0000000000000286 + Help 0x000000000000128F + Red 0x00000000000002AB + Green 0x00000000000002AC + Yellow 0x00000000000002AD + Blue 0x00000000000002AE + Left 0x0000000000000295 + Right 0x0000000000000296 + Up 0x0000000000000290 + Down 0x0000000000000291 + Select 0x0000000000000297 + Guide 0x000000000000028F + Menu 0x00000000000002AA + Back 0x00000000000012A8 + Browse 0x00000000000012AF + Volume+ 0x0000000000001290 + Volume- 0x0000000000001291 + Channel- 0x00000000000012A1 + Channel+ 0x00000000000012A0 + Page_Up 0x000000000000128A + Page_Down 0x000000000000128B + Email 0x00000000000002B0 + Internet 0x00000000000002AF + Audio 0x0000000000000292 + On_Demand 0x00000000000002B1 + TV 0x0000000000000293 + Interactive 0x00000000000002A1 + Standby 0x000000000000128C + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/pace_420/lircd.conf b/abs/core/system-templates/templates/transmit/pace_420/lircd.conf new file mode 100755 index 0000000..f016f59 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_420/lircd.conf @@ -0,0 +1,207 @@ +# +# this config file was automatically generated +# using lirc-0.6.4-CVS(serial) on Mon Jul 9 08:14:04 2001 +# +# contributed by Steve Davies +# modified by Steve Hill 2003/06/29 +# modified by Psyke 2006/09/17 +# +# brand: Pace (Foxtel Digital) +# model no. of remote control: URC 1633B00-00 3RC16C-1005 +# supported devices: Pace DC420NF/DC420N0 (aka Foxtel Digital Cable STB, Australia) +# +# + +begin remote + + name Pace_420 + flags CONST_LENGTH|RAW_CODES + eps 30 + aeps 100 + ptrail 0 + repeat 0 0 + gap 149692 + frequency 36000 + duty_cycle 50 + + begin raw_codes + + name 0 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 + + name 1 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 888 + + name 2 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 888 888 + 444 + + name 3 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 888 444 + 444 + + name 4 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 888 888 444 444 + 444 + + name 5 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 888 888 888 + + name 6 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 888 444 444 888 + 444 + + name 7 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 888 444 444 444 + 444 + + name 8 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 888 888 444 444 444 444 + 444 + + name 9 + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 888 888 444 444 888 + + name red + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 444 444 888 888 444 444 888 888 + + name green + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 444 444 888 888 444 444 444 444 888 444 + + name yellow + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 444 444 888 888 444 444 444 444 444 444 + + name blue + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 444 444 444 444 888 444 444 444 444 444 444 + 444 + + name setup + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 888 444 444 444 444 444 444 888 444 444 + 444 + + name back + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 888 444 444 444 444 444 444 444 444 888 444 444 + + name help + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 888 444 444 444 444 444 444 444 444 444 444 888 + + name left + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 888 888 444 444 888 888 888 444 + + name down + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 888 888 444 444 888 444 444 888 + + name right + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 888 888 444 444 888 888 444 444 + + name up + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 888 888 444 444 888 444 444 444 444 444 + + name select + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 888 888 444 444 444 444 888 444 444 444 + + name ch-down + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 888 888 444 444 444 444 444 444 888 + + name ch-up + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 888 888 444 444 444 444 444 444 444 444 + 444 + + name i + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 444 444 888 444 444 888 888 888 444 444 + + name power + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 888 444 444 888 444 444 + 444 + + name av + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 888 444 444 444 444 444 444 888 888 444 444 444 + + name foxtel + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 888 444 444 444 444 444 444 444 444 444 444 444 444 + 444 + + name tvguide + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 444 444 888 444 444 888 444 444 888 444 444 444 + + name boxoffice + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 444 444 444 444 444 444 444 444 888 888 + + name active + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 444 444 888 444 444 444 444 444 444 444 444 444 444 888 + 444 + + name planner + 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 + 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 + 444 444 888 444 444 444 444 444 444 888 888 888 888 + + end raw_codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/pace_dsr2000/lircd.conf b/abs/core/system-templates/templates/transmit/pace_dsr2000/lircd.conf new file mode 100755 index 0000000..3bc7e55 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_dsr2000/lircd.conf @@ -0,0 +1,71 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre2 on Sat Feb 7 18:25:52 2004 +# +# contributed by: Jon Waite +# +# brand: Pace +# model no. of remote control: RC-30 +# devices being controlled by this remote: Pace DSR620-GM Sky Digital +# Decoder (New Zealand) +# + +begin remote + + name Pace_RC-30 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9020 4544 + one 541 1696 + zero 541 579 + ptrail 506 + repeat 9014 2311 + pre_data_bits 16 + pre_data 0x213C + gap 107807 + toggle_bit 0 + + + begin codes + red 0x0000000000007C83 + green 0x000000000000B44B + yellow 0x000000000000BC43 + blue 0x000000000000FC03 + 1 0x0000000000000CF3 + 2 0x000000000000946B + 3 0x0000000000009C63 + 4 0x00000000000014EB + 5 0x00000000000004FB + 6 0x0000000000001CE3 + 7 0x0000000000004CB3 + 8 0x00000000000054AB + 9 0x00000000000044BB + 0 0x000000000000CC33 + tv 0x0000000000008C73 + reserved 0x000000000000F40B + volup 0x000000000000649B + voldown 0x000000000000E41B + mute 0x000000000000A45B + chanup 0x000000000000AC53 + chandown 0x000000000000EC13 + guide 0x000000000000748B + back 0x0000000000005CA3 + interactive 0x0000000000006C93 + up 0x000000000000D42B + down 0x00000000000024DB + left 0x0000000000002CD3 + right 0x000000000000DC23 + ok 0x000000000000C43B + plus 0x0000000000003CC3 + question 0x00000000000034CB + power 0x000000000000847B + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pace_dsr600/lircd.conf b/abs/core/system-templates/templates/transmit/pace_dsr600/lircd.conf new file mode 100755 index 0000000..3bc7e55 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_dsr600/lircd.conf @@ -0,0 +1,71 @@ +# +# this config file was automatically generated +# using lirc-0.7.0pre2 on Sat Feb 7 18:25:52 2004 +# +# contributed by: Jon Waite +# +# brand: Pace +# model no. of remote control: RC-30 +# devices being controlled by this remote: Pace DSR620-GM Sky Digital +# Decoder (New Zealand) +# + +begin remote + + name Pace_RC-30 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9020 4544 + one 541 1696 + zero 541 579 + ptrail 506 + repeat 9014 2311 + pre_data_bits 16 + pre_data 0x213C + gap 107807 + toggle_bit 0 + + + begin codes + red 0x0000000000007C83 + green 0x000000000000B44B + yellow 0x000000000000BC43 + blue 0x000000000000FC03 + 1 0x0000000000000CF3 + 2 0x000000000000946B + 3 0x0000000000009C63 + 4 0x00000000000014EB + 5 0x00000000000004FB + 6 0x0000000000001CE3 + 7 0x0000000000004CB3 + 8 0x00000000000054AB + 9 0x00000000000044BB + 0 0x000000000000CC33 + tv 0x0000000000008C73 + reserved 0x000000000000F40B + volup 0x000000000000649B + voldown 0x000000000000E41B + mute 0x000000000000A45B + chanup 0x000000000000AC53 + chandown 0x000000000000EC13 + guide 0x000000000000748B + back 0x0000000000005CA3 + interactive 0x0000000000006C93 + up 0x000000000000D42B + down 0x00000000000024DB + left 0x0000000000002CD3 + right 0x000000000000DC23 + ok 0x000000000000C43B + plus 0x0000000000003CC3 + question 0x00000000000034CB + power 0x000000000000847B + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pace_mss200/lircd.conf b/abs/core/system-templates/templates/transmit/pace_mss200/lircd.conf new file mode 100755 index 0000000..9b4580f --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_mss200/lircd.conf @@ -0,0 +1,69 @@ +# +# contributed by Armin +# +# brand: Pace +# model no. of remote control: PRC100 +# supported devices: SAT-RECEIVER PACE MSS 200 Series +# +# +# on/off Button and TV/SAT Button is missing! + + +begin remote + + name pace + bits 10 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + one 658 6930 + zero 658 4402 + ptrail 661 + pre_data_bits 2 + pre_data 0x0 + gap 121416 + toggle_bit 3 + + + begin codes + 1 0x0000000000000301 + 2 0x0000000000000102 + 3 0x0000000000000303 + + 4 0x0000000000000104 + 5 0x0000000000000305 + 6 0x0000000000000106 + + 7 0x0000000000000307 + 8 0x0000000000000108 + 9 0x0000000000000309 + + 0 0x0000000000000100 + RCL 0x000000000000031A + F 0x0000000000000119 + + Left 0x0000000000000116 + Menu 0x0000000000000317 + Right 0x0000000000000311 + + i 0x000000000000011F + FAV 0x000000000000010B + RADIO 0x000000000000030F + + STORE 0x0000000000000113 + NORM 0x0000000000000115 + MUTE 0x000000000000011E + + SHAPE 0x000000000000010E + LEVEL 0x0000000000000112 + UP 0x0000000000000118 + + DOLBY 0x000000000000030C + EFFECT 0x000000000000030D + VOL- 0x000000000000011B + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/pace_mss300/lircd.conf b/abs/core/system-templates/templates/transmit/pace_mss300/lircd.conf new file mode 100755 index 0000000..c839e9c --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_mss300/lircd.conf @@ -0,0 +1,68 @@ +# +# this config file was automatically generated +# using lirc-0.6.5(serial) on Tue Feb 19 12:36:53 2002 +# +# contributed by +# +# brand: PACE +# model no. of remote control: RC-17 ( +# devices being controlled by this remote: SAT-Receiver MSS-30 +# (this IR-sender comes with many satellite-receivers so I expect it not +# only to work with this specific pace receiver but also with various other. +# you might want to give it a try.. +# +# the codes mentioned here 'LEFT_OF_0' and 'RIGHT_OF_0' are called this way +# because that's their position and I can't read the key-labels anymore. + +begin remote + + name PACE_RC-17 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9261 4166 + one 862 258 + zero 862 1377 + ptrail 862 + pre_data_bits 16 + pre_data 0xDEC3 + gap 107399 + toggle_bit 0 + + + begin codes + POWER 0x000000000000DF20 + TV_VCR 0x0000000000009F60 + MUTE 0x000000000000D728 + LT 0x0000000000006798 + 1 0x000000000000BF40 + 2 0x0000000000005FA0 + 3 0x0000000000001FE0 + 4 0x0000000000007F80 + 5 0x000000000000FF00 + 6 0x0000000000003FC0 + 7 0x000000000000AF50 + 8 0x0000000000006F90 + 9 0x000000000000EF10 + 0 0x0000000000008F70 + RECALL 0x0000000000004FB0 + FAV 0x000000000000F708 + VOL_UP 0x000000000000E718 + VOL_DOWN 0x000000000000C738 + CHANNEL_UP 0x0000000000000FF0 + CHANNEL_DOWN 0x000000000000B748 + NORM 0x00000000000057A8 + MENU 0x000000000000CF30 + STORE 0x0000000000009768 + INFO 0x0000000000002FD0 + LEFT_OF_0 0x0000000000007788 + RIGHT_OF_0 0x00000000000037C8 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pace_psr800/lircd.conf b/abs/core/system-templates/templates/transmit/pace_psr800/lircd.conf new file mode 100755 index 0000000..ddf63f6 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_psr800/lircd.conf @@ -0,0 +1,58 @@ +# +# this config file was automatically generated +# using lirc-0.6.5(serial) on Sun Jun 9 16:01:36 2002 +# +# contributed by +# +# brand: PACE-PSR800 +# model no. of remote control: +# devices being controlled by this remote: +# + +begin remote + + name PACE-PSR800 + bits 12 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + one 704 6914 + zero 704 4386 + ptrail 699 + gap 122866 + min_repeat 1 + toggle_bit 0 + + + begin codes + P-/-- 0x000000000000010A + standby 0x0000000000000310 + 1 0x0000000000000301 + 2 0x0000000000000302 + 3 0x0000000000000103 + 4 0x0000000000000304 + 5 0x0000000000000105 + 6 0x0000000000000306 + 7 0x0000000000000107 + 8 0x0000000000000308 + 9 0x0000000000000109 + aux/0 0x0000000000000100 + recall 0x000000000000031A + F 0x0000000000000319 + < 0x0000000000000316 + menu 0x0000000000000317 + > 0x0000000000000311 + osd 0x000000000000011F + tv/sat 0x0000000000000114 + radio 0x000000000000010F + store 0x0000000000000313 + norm 0x0000000000000315 + mute 0x000000000000031E + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pace_psr900/lircd.conf b/abs/core/system-templates/templates/transmit/pace_psr900/lircd.conf new file mode 100755 index 0000000..8f5d785 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_psr900/lircd.conf @@ -0,0 +1,61 @@ +# +# this config file was automatically generated +# using lirc-0.6.1 on Wed May 24 23:34:03 2000 +# +# contributed by BartOwl +# +# brand: PACE (satellite receiver) +# model: PSR 900 +# supported devices: Satellite receiver remote +# + +# See the MSS300 config file for comments on the Pace protocol. + +begin remote + + name pace900 + bits 5 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 762 3077 + one 666 6948 + zero 666 4414 + ptrail 673 + pre_data_bits 6 + pre_data 0x8 + gap 122772 + repeat_bit 2 + + begin codes + power 0x0000000000000010 + 1-- 0x000000000000000A + 1 0x0000000000000001 + 2 0x0000000000000002 + 3 0x0000000000000003 + 4 0x0000000000000004 + 5 0x0000000000000005 + 6 0x0000000000000006 + 7 0x0000000000000007 + 8 0x0000000000000008 + 9 0x0000000000000009 + 0 0x0000000000000000 + recall 0x000000000000001A + F 0x0000000000000019 + left 0x0000000000000016 + menu 0x0000000000000017 + right 0x0000000000000011 + display 0x000000000000001F + tv/sat 0x0000000000000014 + radio 0x000000000000000F + store 0x0000000000000013 + norm 0x0000000000000015 + mute 0x000000000000001E + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pace_xsat_cdtv410/lircd.conf b/abs/core/system-templates/templates/transmit/pace_xsat_cdtv410/lircd.conf new file mode 100755 index 0000000..eefaae4 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pace_xsat_cdtv410/lircd.conf @@ -0,0 +1,70 @@ +# +# contributed by magnus sandin +# +# brand: XSAT (PACE) +# model: unknown +# supported devices: CDTV-410 +# + +begin remote + + name xsat + bits 8 + flags SPACE_ENC + eps 30 + aeps 100 + + header 8004 4044 + one 532 1550 + zero 550 500 + ptrail 533 + pre_data_bits 8 + pre_data 0x44 + pre 530 4035 + gap 23000 + repeat_bit 0 + + begin codes + MUTE 0x00000000000000D0 + FREEZE 0x0000000000000088 + FORMAT 0x0000000000000028 + POWER 0x0000000000000000 + 1 0x0000000000000080 + 2 0x0000000000000040 + 3 0x00000000000000C0 + 4 0x0000000000000020 + 5 0x00000000000000A0 + 6 0x0000000000000060 + 7 0x00000000000000E0 + 8 0x0000000000000010 + 9 0x0000000000000090 + 0 0x0000000000000050 + VOL_UP 0x0000000000000070 + VOL_DOWN 0x00000000000000F0 + SKIP_UP 0x00000000000000F9 + SKIP_DOWN 0x00000000000000C8 + AUX 0x0000000000000039 + INPUT 0x00000000000000B9 + AUDIO 0x0000000000000008 + TV/RADIO 0x0000000000000098 + INFO 0x0000000000000030 + GUIDE 0x00000000000000A8 + RED 0x0000000000000018 + GREEN 0x00000000000000B0 + YELLOW 0x0000000000000058 + BLUE 0x00000000000000D8 + UP 0x0000000000000038 + DOWN 0x00000000000000B8 + LEFT 0x0000000000000078 + RIGHT 0x00000000000000F8 + OK 0x000000000000001A + QUIT 0x0000000000000079 + RETURN 0x0000000000000048 + MENU 0x0000000000000068 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pansat_2700a/lircd.conf b/abs/core/system-templates/templates/transmit/pansat_2700a/lircd.conf new file mode 100755 index 0000000..d7d4cd5 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pansat_2700a/lircd.conf @@ -0,0 +1,86 @@ + +# Please make this file available to others +# by sending it to +# +# this config file was automatically generated +# using lirc-0.8.1-CVS(default) on Sat Nov 4 14:30:45 2006 +# +# contributed by: ML +# +# brand: Pansat +# model no. of remote control: +# devices being controlled by this remote: 2700a and possibly 3500 +# + +begin remote + + name Pansat2700a + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8893 4582 + one 587 1658 + zero 587 535 + ptrail 587 + repeat 8893 2311 + pre_data_bits 16 + pre_data 0x10EF + gap 107354 + toggle_bit 0 + + + begin codes + POWER 0x00FF + MUTE 0x20DF + 1 0x38C7 + 2 0xB847 + 3 0x7887 + 4 0x02FD + 5 0x827D + 6 0x42BD + 7 0x22DD + 8 0xA25D + 9 0x629D + 0 0x18E7 + PAUSE 0x3AC5 + AUDIOQ 0x50AF + EPG 0x9867 + LAST 0xE01F + FAV 0xBA45 + SAT 0xD827 + MENU 0xD02F + DOUBLEUP 0x609F + DOUBLEDOWN 0xE21D + EXIT 0xC03F + UP 0x48B7 + LEFT 0x28D7 + DOWN 0xC837 + RIGHT 0x6897 + OK 0xA857 + HDD 0xA05F + INFO 0x58A7 + REW 0x12ED + FFW 0x926D + PLAY 0x52AD + STOP 0xD22D + SEEKBACK 0x32CD + SEEKFWD 0xB24D + PAUSE 0x728D + REC 0xF20D + SKIPBACK 0xF807 + SKIPFWD 0x906F + PIP 0x807F + LOOP 0xC23D + RED 0x30CF + GREEN 0xB04F + YELLOW 0x08F7 + BLUE 0x8877 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/pioneer_bdv300/lircd.conf b/abs/core/system-templates/templates/transmit/pioneer_bdv300/lircd.conf new file mode 100755 index 0000000..78ec355 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pioneer_bdv300/lircd.conf @@ -0,0 +1,92 @@ +# +# this config file was automatically generated +# using lirc-0.8.1-CVS(default) on Mon Oct 16 07:50:58 2006 +# +# contributed by Frank Bennett +# +# brand: Pioneer +# model no. of remote control: BR-V3 +# devices being controlled by this remote: BD-V300 CATV STB +# +# +# This configuration file works only to send signals to the +# STB using irsend. It will not work to interpret signals +# sent by the remote. +# +# The BD-V300 remote sends some commands as two 32-bit elements. +# Because the STB expects to see commands repeated once, this means +# you need to send four codes (A, B, A, B) for these commands. +# The remaining codes (those without a suffix) should be sent +# twice to trigger action by the STB. +# +# +# Here are a few examples using irsend: +# +# Change to terrestrial television mode: +# +# irsend -d /dev/lircd1 SEND_ONCE pioneer_br_v3 chijo-A chijo-B chijo-A chijo-B +# +# Change to cable television mode: +# +# irsend -d /dev/lircd1 SEND_ONCE pioneer_br_v3 catv-A catv-B catv-A catv-B +# +# Change to channel 231 +# +# irsend -d /dev/lircd1 SEND_ONCE pioneer_br_v3 ch-A ch-B ch-A ch-B +# sleep 1 +# irsend -d /dev/lircd1 SEND_ONCE pioneer_br_v3 2 2 +# sleep 1 +# irsend -d /dev/lircd1 SEND_ONCE pioneer_br_v3 3 3 +# sleep 1 +# irsend -d /dev/lircd1 SEND_ONCE pioneer_br_v3 1 1 +# + +begin remote + + name Pioneer_BR_V3 + bits 32 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 8509 4280 + one 566 1560 + zero 566 504 + ptrail 566 + gap 89937 + min_repeat 0 + toggle_bit 0 + + + begin codes + dengen 0x35CA38C7 + chijo-A 0x35CACC33 + chijo-B 0xF50ADC23 + bscs-A 0x35CACC33 + bscs-B 0xF50ABC43 + catv-A 0x35CACC33 + catv-B 0xF50A7C83 + ch-A 0x35CACC33 + ch-B 0xF50A3CC3 + 1 0x35CA807F + 2 0x35CA40BF + 3 0x35CAC03F + 4 0x35CA20DF + 5 0x35CAA05F + 6 0x35CA609F + 7 0x35CAE01F + 8 0x35CA10EF + 9 0x35CA906F + 10-0 0x35CA00FF + 11-A 0x35CACC33 + 11-B 0xF50A9C63 + 12-A 0x35CACC33 + 12-B 0xF50A1CE3 + onsei 0x35CA7887 + jimaku-A 0x35CACC33 + jimaku-B 0xF50A8C73 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/pvr150/lircd.conf b/abs/core/system-templates/templates/transmit/pvr150/lircd.conf new file mode 100755 index 0000000..1e7786b --- /dev/null +++ b/abs/core/system-templates/templates/transmit/pvr150/lircd.conf @@ -0,0 +1,30947 @@ +# +# 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 blaster + bits 32 + flags RAW_CODES + eps 0 + aeps 0 + plead 0 + gap 333333 + repeat_bit 0 + begin raw_codes + name 0_1_KEY_0 + 65536 + name 0_1_KEY_1 + 65537 + name 0_1_KEY_2 + 65538 + name 0_1_KEY_3 + 65539 + name 0_1_KEY_4 + 65540 + name 0_1_KEY_5 + 65541 + name 0_1_KEY_6 + 65542 + name 0_1_KEY_7 + 65543 + name 0_1_KEY_8 + 65544 + name 0_1_KEY_9 + 65545 + name 0_1_KEY_POWER + 65546 + name 0_1_KEY_MUTE + 65553 + name 0_1_KEY_VOL_DOWN + 65554 + name 0_1_CH_PREVIOUS + 65555 + name 0_1_KEY_VOL_UP + 65556 + name 0_1_KEY_FTUNEPLUS + 65569 + name 0_1_KEY_FTUNEMINUS + 65570 + name 1_1_KEY_0 + 2147549184 + name 1_1_KEY_1 + 2147549185 + name 1_1_KEY_2 + 2147549186 + name 1_1_KEY_3 + 2147549187 + name 1_1_KEY_4 + 2147549188 + name 1_1_KEY_5 + 2147549189 + name 1_1_KEY_6 + 2147549190 + name 1_1_KEY_7 + 2147549191 + name 1_1_KEY_8 + 2147549192 + name 1_1_KEY_9 + 2147549193 + name 1_1_KEY_POWER + 2147549194 + name 1_1_KEY_CH_UP + 2147549199 + name 1_1_KEY_CH_DOWN + 2147549200 + name 1_1_KEY_MUTE + 2147549201 + name 1_1_KEY_VOL_DOWN + 2147549202 + name 1_1_CH_PREVIOUS + 2147549203 + name 1_1_KEY_VOL_UP + 2147549204 + name 1_1_KEY_DISPLAY + 2147549205 + name 1_1_KEY_MNSELECT + 2147549207 + name 1_1_KEY_MENU + 2147549231 + name 1_1_KEY_MUP + 2147549232 + name 1_1_KEY_MDOWN + 2147549233 + name 1_1_KEY_MLEFT + 2147549234 + name 1_1_KEY_MRIGHT + 2147549235 + name 1_1_KEY_Setup + 2147549249 + name 1_1_KEY_DGuide + 2147549251 + name 1_1_KEY_Language + 2147549254 + name 1_1_KEY_TVDSS + 2147549258 + name 1_1_KEY_VT + 2147549259 + name 1_1_KEY_Esc + 2147549260 + name 0_2_KEY_0 + 131072 + name 0_2_KEY_1 + 131073 + name 0_2_KEY_2 + 131074 + name 0_2_KEY_3 + 131075 + name 0_2_KEY_4 + 131076 + name 0_2_KEY_5 + 131077 + name 0_2_KEY_6 + 131078 + name 0_2_KEY_7 + 131079 + name 0_2_KEY_8 + 131080 + name 0_2_KEY_9 + 131081 + name 0_2_KEY_POWER + 131082 + name 0_2_KEY_CH_UP + 131087 + name 0_2_KEY_CH_DOWN + 131088 + name 0_2_CH_PREVIOUS + 131091 + name 0_2_KEY_FTUNEPLUS + 131105 + name 0_2_KEY_FTUNEMINUS + 131106 + name 0_2_KEY_Norm + 131133 + name 1_2_KEY_0 + 2147614720 + name 1_2_KEY_1 + 2147614721 + name 1_2_KEY_2 + 2147614722 + name 1_2_KEY_3 + 2147614723 + name 1_2_KEY_4 + 2147614724 + name 1_2_KEY_5 + 2147614725 + name 1_2_KEY_6 + 2147614726 + name 1_2_KEY_7 + 2147614727 + name 1_2_KEY_8 + 2147614728 + name 1_2_KEY_9 + 2147614729 + name 1_2_KEY_POWER + 2147614730 + name 1_2_KEY_CH_UP + 2147614735 + name 1_2_KEY_CH_DOWN + 2147614736 + name 1_2_KEY_MUTE + 2147614737 + name 1_2_KEY_VOL_DOWN + 2147614738 + name 1_2_KEY_VOL_UP + 2147614740 + name 1_2_KEY_MNSELECT + 2147614743 + name 1_2_KEY_MNRETRUN + 2147614752 + name 1_2_KEY_BLUE + 2147614755 + name 1_2_KEY_GREEN + 2147614756 + name 1_2_KEY_RED + 2147614757 + name 1_2_KEY_YELLOW + 2147614758 + name 1_2_KEY_MENU + 2147614767 + name 1_2_KEY_MUP + 2147614768 + name 1_2_KEY_MDOWN + 2147614769 + name 1_2_KEY_MLEFT + 2147614770 + name 1_2_KEY_MRIGHT + 2147614771 + name 1_2_KEY_FF + 2147614772 + name 1_2_KEY_PLAY + 2147614773 + name 1_2_KEY_REW + 2147614774 + name 1_2_KEY_REC + 2147614775 + name 1_2_KEY_PAUSE + 2147614776 + name 1_2_KEY_STOP + 2147614777 + name 1_2_KEY_VT + 2147614795 + name 1_2_KEY_FullScreen + 2147614799 + name 1_2_KEY_Replay + 2147614800 + name 1_2_KEY_Skip + 2147614801 + name 0_3_KEY_0 + 196608 + name 0_3_KEY_1 + 196609 + name 0_3_KEY_2 + 196610 + name 0_3_KEY_3 + 196611 + name 0_3_KEY_4 + 196612 + name 0_3_KEY_5 + 196613 + name 0_3_KEY_6 + 196614 + name 0_3_KEY_7 + 196615 + name 0_3_KEY_8 + 196616 + name 0_3_KEY_9 + 196617 + name 0_3_KEY_POWER + 196618 + name 0_3_KEY_CH_UP + 196623 + name 0_3_KEY_CH_DOWN + 196624 + name 0_3_KEY_VOL_DOWN + 196626 + name 0_3_KEY_VOL_UP + 196628 + name 0_3_KEY_DISPLAY + 196629 + name 0_3_KEY_FAVCH + 196636 + name 0_3_KEY_FTUNEPLUS + 196641 + name 0_3_KEY_FTUNEMINUS + 196642 + name 1_3_KEY_0 + 2147680256 + name 1_3_KEY_1 + 2147680257 + name 1_3_KEY_2 + 2147680258 + name 1_3_KEY_3 + 2147680259 + name 1_3_KEY_4 + 2147680260 + name 1_3_KEY_5 + 2147680261 + name 1_3_KEY_6 + 2147680262 + name 1_3_KEY_7 + 2147680263 + name 1_3_KEY_8 + 2147680264 + name 1_3_KEY_9 + 2147680265 + name 1_3_KEY_CH_UP + 2147680271 + name 1_3_KEY_CH_DOWN + 2147680272 + name 1_3_KEY_MUTE + 2147680273 + name 1_3_KEY_VOL_DOWN + 2147680274 + name 1_3_KEY_VOL_UP + 2147680276 + name 1_3_KEY_Radio + 2147680327 + name 1_3_KEY_TV + 2147680328 + name 1_3_KEY_FullScreen + 2147680335 + name 1_3_KEY_Skip + 2147680337 + name 1_3_KEY_Source + 2147680338 + name 1_3_KEY_Reserved + 2147680339 + name 0_4_KEY_0 + 262144 + name 0_4_KEY_1 + 262145 + name 0_4_KEY_2 + 262146 + name 0_4_KEY_3 + 262147 + name 0_4_KEY_4 + 262148 + name 0_4_KEY_5 + 262149 + name 0_4_KEY_6 + 262150 + name 0_4_KEY_7 + 262151 + name 0_4_KEY_8 + 262152 + name 0_4_KEY_9 + 262153 + name 0_4_KEY_POWER + 262154 + name 0_4_KEY_MUTE + 262161 + name 0_4_KEY_VOL_DOWN + 262162 + name 0_4_KEY_VOL_UP + 262164 + name 0_4_KEY_DISPLAY + 262165 + name 0_4_KEY_FAVCH + 262172 + name 0_4_KEY_AB + 262206 + name 1_4_KEY_0 + 2147745792 + name 1_4_KEY_1 + 2147745793 + name 1_4_KEY_2 + 2147745794 + name 1_4_KEY_3 + 2147745795 + name 1_4_KEY_4 + 2147745796 + name 1_4_KEY_5 + 2147745797 + name 1_4_KEY_6 + 2147745798 + name 1_4_KEY_7 + 2147745799 + name 1_4_KEY_8 + 2147745800 + name 1_4_KEY_9 + 2147745801 + name 1_4_KEY_POWER + 2147745802 + name 1_4_CH_PREVIOUS + 2147745811 + name 1_4_KEY_DISPLAY + 2147745813 + name 1_4_KEY_EXIT + 2147745816 + name 1_4_KEY_INPUT + 2147745818 + name 1_4_KEY_FAV + 2147745821 + name 1_4_KEY_MNRETRUN + 2147745824 + name 1_4_KEY_ENTER + 2147745835 + name 1_4_KEY_MENU + 2147745839 + name 1_4_KEY_MUP + 2147745840 + name 1_4_KEY_MDOWN + 2147745841 + name 1_4_KEY_MLEFT + 2147745842 + name 1_4_KEY_MRIGHT + 2147745843 + name 0_5_KEY_0 + 327680 + name 0_5_KEY_1 + 327681 + name 0_5_KEY_2 + 327682 + name 0_5_KEY_3 + 327683 + name 0_5_KEY_4 + 327684 + name 0_5_KEY_5 + 327685 + name 0_5_KEY_6 + 327686 + name 0_5_KEY_7 + 327687 + name 0_5_KEY_8 + 327688 + name 0_5_KEY_9 + 327689 + name 0_5_KEY_POWER + 327690 + name 0_5_KEY_CH_UP + 327695 + name 0_5_KEY_CH_DOWN + 327696 + name 0_5_CH_PREVIOUS + 327699 + name 0_5_KEY_FTUNEPLUS + 327713 + name 0_5_KEY_FTUNEMINUS + 327714 + name 1_5_KEY_0 + 2147811328 + name 1_5_KEY_1 + 2147811329 + name 1_5_KEY_2 + 2147811330 + name 1_5_KEY_3 + 2147811331 + name 1_5_KEY_4 + 2147811332 + name 1_5_KEY_5 + 2147811333 + name 1_5_KEY_6 + 2147811334 + name 1_5_KEY_7 + 2147811335 + name 1_5_KEY_8 + 2147811336 + name 1_5_KEY_9 + 2147811337 + name 1_5_KEY_POWER + 2147811338 + name 1_5_TWO_DIGITS + 2147811341 + name 1_5_KEY_CH_UP + 2147811343 + name 1_5_KEY_CH_DOWN + 2147811344 + name 1_5_CH_PREVIOUS + 2147811347 + name 1_5_KEY_DISPLAY + 2147811349 + name 1_5_KEY_EXIT + 2147811352 + name 1_5_KEY_FAV + 2147811357 + name 1_5_KEY_MENU + 2147811375 + name 1_5_KEY_MUP + 2147811376 + name 1_5_KEY_MDOWN + 2147811377 + name 1_5_KEY_MLEFT + 2147811378 + name 1_5_KEY_MRIGHT + 2147811379 + name 1_5_KEY_DGuide + 2147811395 + name 0_6_KEY_0 + 393216 + name 0_6_KEY_1 + 393217 + name 0_6_KEY_2 + 393218 + name 0_6_KEY_3 + 393219 + name 0_6_KEY_4 + 393220 + name 0_6_KEY_5 + 393221 + name 0_6_KEY_6 + 393222 + name 0_6_KEY_7 + 393223 + name 0_6_KEY_8 + 393224 + name 0_6_KEY_9 + 393225 + name 0_6_KEY_POWER + 393226 + name 0_6_KEY_CH_UP + 393231 + name 0_6_KEY_CH_DOWN + 393232 + name 0_6_KEY_MUTE + 393233 + name 0_6_KEY_VOL_DOWN + 393234 + name 0_6_CH_PREVIOUS + 393235 + name 0_6_KEY_VOL_UP + 393236 + name 0_6_KEY_FTUNEPLUS + 393249 + name 0_6_KEY_FTUNEMINUS + 393250 + name 1_6_KEY_0 + 2147876864 + name 1_6_KEY_1 + 2147876865 + name 1_6_KEY_2 + 2147876866 + name 1_6_KEY_3 + 2147876867 + name 1_6_KEY_4 + 2147876868 + name 1_6_KEY_5 + 2147876869 + name 1_6_KEY_6 + 2147876870 + name 1_6_KEY_7 + 2147876871 + name 1_6_KEY_8 + 2147876872 + name 1_6_KEY_9 + 2147876873 + name 1_6_KEY_POWER + 2147876874 + name 1_6_TWO_DIGITS + 2147876877 + name 1_6_KEY_CH_UP + 2147876879 + name 1_6_KEY_CH_DOWN + 2147876880 + name 1_6_KEY_VOL_DOWN + 2147876882 + name 1_6_CH_PREVIOUS + 2147876883 + name 1_6_KEY_VOL_UP + 2147876884 + name 1_6_KEY_DISPLAY + 2147876885 + name 1_6_KEY_EXIT + 2147876888 + name 1_6_KEY_AV + 2147876905 + name 1_6_KEY_MENU + 2147876911 + name 1_6_KEY_MUP + 2147876912 + name 1_6_KEY_MDOWN + 2147876913 + name 1_6_KEY_MLEFT + 2147876914 + name 1_6_KEY_MRIGHT + 2147876915 + name 0_7_KEY_0 + 458752 + name 0_7_KEY_1 + 458753 + name 0_7_KEY_2 + 458754 + name 0_7_KEY_3 + 458755 + name 0_7_KEY_4 + 458756 + name 0_7_KEY_5 + 458757 + name 0_7_KEY_6 + 458758 + name 0_7_KEY_7 + 458759 + name 0_7_KEY_8 + 458760 + name 0_7_KEY_9 + 458761 + name 0_7_KEY_POWER + 458762 + name 0_7_KEY_CH_UP + 458767 + name 0_7_KEY_CH_DOWN + 458768 + name 0_7_KEY_MUTE + 458769 + name 0_7_KEY_VOL_DOWN + 458770 + name 0_7_KEY_VOL_UP + 458772 + name 0_7_KEY_DISPLAY + 458773 + name 1_7_KEY_0 + 2147942400 + name 1_7_KEY_1 + 2147942401 + name 1_7_KEY_2 + 2147942402 + name 1_7_KEY_3 + 2147942403 + name 1_7_KEY_4 + 2147942404 + name 1_7_KEY_5 + 2147942405 + name 1_7_KEY_6 + 2147942406 + name 1_7_KEY_7 + 2147942407 + name 1_7_KEY_8 + 2147942408 + name 1_7_KEY_9 + 2147942409 + name 1_7_KEY_POWER + 2147942410 + name 1_7_KEY_CH_UP + 2147942415 + name 1_7_KEY_CH_DOWN + 2147942416 + name 1_7_CH_PREVIOUS + 2147942419 + name 1_7_KEY_MNSELECT + 2147942423 + name 1_7_KEY_EXIT + 2147942424 + name 1_7_KEY_GUIDE + 2147942427 + name 1_7_KEY_FAV + 2147942429 + name 1_7_KEY_MENU + 2147942447 + name 1_7_KEY_MUP + 2147942448 + name 1_7_KEY_MDOWN + 2147942449 + name 1_7_KEY_MLEFT + 2147942450 + name 1_7_KEY_MRIGHT + 2147942451 + name 0_8_KEY_0 + 524288 + name 0_8_KEY_1 + 524289 + name 0_8_KEY_2 + 524290 + name 0_8_KEY_3 + 524291 + name 0_8_KEY_4 + 524292 + name 0_8_KEY_5 + 524293 + name 0_8_KEY_6 + 524294 + name 0_8_KEY_7 + 524295 + name 0_8_KEY_8 + 524296 + name 0_8_KEY_9 + 524297 + name 0_8_KEY_POWER + 524298 + name 0_8_KEY_CH_UP + 524303 + name 0_8_KEY_CH_DOWN + 524304 + name 0_8_KEY_DISPLAY + 524309 + name 0_8_KEY_PMCLEAR + 524313 + name 1_8_KEY_0 + 2148007936 + name 1_8_KEY_1 + 2148007937 + name 1_8_KEY_2 + 2148007938 + name 1_8_KEY_3 + 2148007939 + name 1_8_KEY_4 + 2148007940 + name 1_8_KEY_5 + 2148007941 + name 1_8_KEY_6 + 2148007942 + name 1_8_KEY_7 + 2148007943 + name 1_8_KEY_8 + 2148007944 + name 1_8_KEY_9 + 2148007945 + name 1_8_KEY_POWER + 2148007946 + name 1_8_KEY_CH_UP + 2148007951 + name 1_8_KEY_CH_DOWN + 2148007952 + name 1_8_KEY_DISPLAY + 2148007957 + name 1_8_KEY_GUIDE + 2148007963 + name 1_8_KEY_ENTER + 2148007979 + name 1_8_KEY_MENU + 2148007983 + name 1_8_KEY_MUP + 2148007984 + name 1_8_KEY_MDOWN + 2148007985 + name 1_8_KEY_MLEFT + 2148007986 + name 1_8_KEY_MRIGHT + 2148007987 + name 1_8_KEY_FF + 2148007988 + name 1_8_KEY_PLAY + 2148007989 + name 1_8_KEY_REW + 2148007990 + name 1_8_KEY_REC + 2148007991 + name 1_8_KEY_PAUSE + 2148007992 + name 0_9_KEY_0 + 589824 + name 0_9_KEY_1 + 589825 + name 0_9_KEY_2 + 589826 + name 0_9_KEY_3 + 589827 + name 0_9_KEY_4 + 589828 + name 0_9_KEY_5 + 589829 + name 0_9_KEY_6 + 589830 + name 0_9_KEY_7 + 589831 + name 0_9_KEY_8 + 589832 + name 0_9_KEY_9 + 589833 + name 0_9_KEY_POWER + 589834 + name 0_9_KEY_CH_UP + 589839 + name 0_9_KEY_CH_DOWN + 589840 + name 0_9_KEY_MUTE + 589841 + name 0_9_KEY_VOL_DOWN + 589842 + name 0_9_KEY_VOL_UP + 589844 + name 0_9_KEY_DISPLAY + 589845 + name 0_9_KEY_FTUNEPLUS + 589857 + name 0_9_KEY_FTUNEMINUS + 589858 + name 0_9_KEY_ENTER + 589867 + name 0_9_KEY_Norm + 589885 + name 0_9_KEY_AB + 589886 + name 1_9_KEY_0 + 2148073472 + name 1_9_KEY_1 + 2148073473 + name 1_9_KEY_2 + 2148073474 + name 1_9_KEY_3 + 2148073475 + name 1_9_KEY_4 + 2148073476 + name 1_9_KEY_5 + 2148073477 + name 1_9_KEY_6 + 2148073478 + name 1_9_KEY_7 + 2148073479 + name 1_9_KEY_8 + 2148073480 + name 1_9_KEY_9 + 2148073481 + name 1_9_KEY_POWER + 2148073482 + name 1_9_KEY_CH_UP + 2148073487 + name 1_9_KEY_CH_DOWN + 2148073488 + name 1_9_CH_PREVIOUS + 2148073491 + name 1_9_KEY_DISPLAY + 2148073493 + name 1_9_KEY_EXIT + 2148073496 + name 1_9_KEY_INPUT + 2148073498 + name 1_9_KEY_GUIDE + 2148073499 + name 1_9_KEY_MENU + 2148073519 + name 1_9_KEY_MUP + 2148073520 + name 1_9_KEY_MDOWN + 2148073521 + name 1_9_KEY_MLEFT + 2148073522 + name 1_9_KEY_MRIGHT + 2148073523 + name 0_10_KEY_0 + 655360 + name 0_10_KEY_1 + 655361 + name 0_10_KEY_2 + 655362 + name 0_10_KEY_3 + 655363 + name 0_10_KEY_4 + 655364 + name 0_10_KEY_5 + 655365 + name 0_10_KEY_6 + 655366 + name 0_10_KEY_7 + 655367 + name 0_10_KEY_8 + 655368 + name 0_10_KEY_9 + 655369 + name 0_10_KEY_POWER + 655370 + name 0_10_KEY_CH_UP + 655375 + name 0_10_KEY_CH_DOWN + 655376 + name 0_10_KEY_AB + 655422 + name 1_10_KEY_0 + 2148139008 + name 1_10_KEY_1 + 2148139009 + name 1_10_KEY_2 + 2148139010 + name 1_10_KEY_3 + 2148139011 + name 1_10_KEY_4 + 2148139012 + name 1_10_KEY_5 + 2148139013 + name 1_10_KEY_6 + 2148139014 + name 1_10_KEY_7 + 2148139015 + name 1_10_KEY_8 + 2148139016 + name 1_10_KEY_9 + 2148139017 + name 1_10_KEY_POWER + 2148139018 + name 1_10_TWO_DIGITS + 2148139021 + name 1_10_KEY_CH_UP + 2148139023 + name 1_10_KEY_CH_DOWN + 2148139024 + name 1_10_KEY_MUTE + 2148139025 + name 1_10_KEY_VOL_DOWN + 2148139026 + name 1_10_CH_PREVIOUS + 2148139027 + name 1_10_KEY_VOL_UP + 2148139028 + name 1_10_KEY_DISPLAY + 2148139029 + name 1_10_KEY_EXIT + 2148139032 + name 1_10_KEY_ENTER + 2148139051 + name 1_10_KEY_MENU + 2148139055 + name 1_10_KEY_MUP + 2148139056 + name 1_10_KEY_MDOWN + 2148139057 + name 1_10_KEY_MLEFT + 2148139058 + name 1_10_KEY_MRIGHT + 2148139059 + name 0_11_KEY_0 + 720896 + name 0_11_KEY_1 + 720897 + name 0_11_KEY_2 + 720898 + name 0_11_KEY_3 + 720899 + name 0_11_KEY_4 + 720900 + name 0_11_KEY_5 + 720901 + name 0_11_KEY_6 + 720902 + name 0_11_KEY_7 + 720903 + name 0_11_KEY_8 + 720904 + name 0_11_KEY_9 + 720905 + name 0_11_KEY_POWER + 720906 + name 0_11_KEY_CH_UP + 720911 + name 0_11_KEY_CH_DOWN + 720912 + name 0_11_KEY_FTUNEPLUS + 720929 + name 0_11_KEY_FTUNEMINUS + 720930 + name 1_11_KEY_0 + 2148204544 + name 1_11_KEY_1 + 2148204545 + name 1_11_KEY_2 + 2148204546 + name 1_11_KEY_3 + 2148204547 + name 1_11_KEY_4 + 2148204548 + name 1_11_KEY_5 + 2148204549 + name 1_11_KEY_6 + 2148204550 + name 1_11_KEY_7 + 2148204551 + name 1_11_KEY_8 + 2148204552 + name 1_11_KEY_9 + 2148204553 + name 1_11_KEY_POWER + 2148204554 + name 1_11_TWO_DIGITS + 2148204557 + name 1_11_KEY_CH_UP + 2148204559 + name 1_11_KEY_CH_DOWN + 2148204560 + name 1_11_CH_PREVIOUS + 2148204563 + name 1_11_KEY_DISPLAY + 2148204565 + name 1_11_KEY_EXIT + 2148204568 + name 1_11_KEY_INPUT + 2148204570 + name 1_11_KEY_GUIDE + 2148204571 + name 1_11_KEY_FAV + 2148204573 + name 1_11_KEY_MENU + 2148204591 + name 1_11_KEY_MUP + 2148204592 + name 1_11_KEY_MDOWN + 2148204593 + name 1_11_KEY_MLEFT + 2148204594 + name 1_11_KEY_MRIGHT + 2148204595 + name 0_12_KEY_0 + 786432 + name 0_12_KEY_1 + 786433 + name 0_12_KEY_2 + 786434 + name 0_12_KEY_3 + 786435 + name 0_12_KEY_4 + 786436 + name 0_12_KEY_5 + 786437 + name 0_12_KEY_6 + 786438 + name 0_12_KEY_7 + 786439 + name 0_12_KEY_8 + 786440 + name 0_12_KEY_9 + 786441 + name 0_12_KEY_POWER + 786442 + name 0_12_KEY_CH_UP + 786447 + name 0_12_KEY_CH_DOWN + 786448 + name 0_12_KEY_MUTE + 786449 + name 0_12_KEY_VOL_DOWN + 786450 + name 0_12_KEY_VOL_UP + 786452 + name 1_12_KEY_0 + 2148270080 + name 1_12_KEY_1 + 2148270081 + name 1_12_KEY_2 + 2148270082 + name 1_12_KEY_3 + 2148270083 + name 1_12_KEY_4 + 2148270084 + name 1_12_KEY_5 + 2148270085 + name 1_12_KEY_6 + 2148270086 + name 1_12_KEY_7 + 2148270087 + name 1_12_KEY_8 + 2148270088 + name 1_12_KEY_9 + 2148270089 + name 1_12_KEY_POWER + 2148270090 + name 1_12_TWO_DIGITS + 2148270093 + name 1_12_KEY_CH_UP + 2148270095 + name 1_12_KEY_CH_DOWN + 2148270096 + name 1_12_CH_PREVIOUS + 2148270099 + name 1_12_KEY_DISPLAY + 2148270101 + name 1_12_KEY_EXIT + 2148270104 + name 1_12_KEY_GUIDE + 2148270107 + name 1_12_KEY_MENU + 2148270127 + name 1_12_KEY_MUP + 2148270128 + name 1_12_KEY_MDOWN + 2148270129 + name 1_12_KEY_MLEFT + 2148270130 + name 1_12_KEY_MRIGHT + 2148270131 + name 0_13_KEY_0 + 851968 + name 0_13_KEY_1 + 851969 + name 0_13_KEY_2 + 851970 + name 0_13_KEY_3 + 851971 + name 0_13_KEY_4 + 851972 + name 0_13_KEY_5 + 851973 + name 0_13_KEY_6 + 851974 + name 0_13_KEY_7 + 851975 + name 0_13_KEY_8 + 851976 + name 0_13_KEY_9 + 851977 + name 0_13_KEY_POWER + 851978 + name 0_13_KEY_CH_UP + 851983 + name 0_13_KEY_CH_DOWN + 851984 + name 0_13_KEY_MUTE + 851985 + name 0_13_KEY_VOL_DOWN + 851986 + name 0_13_KEY_VOL_UP + 851988 + name 0_13_KEY_DISPLAY + 851989 + name 0_13_KEY_Norm + 852029 + name 1_13_KEY_0 + 2148335616 + name 1_13_KEY_1 + 2148335617 + name 1_13_KEY_2 + 2148335618 + name 1_13_KEY_3 + 2148335619 + name 1_13_KEY_4 + 2148335620 + name 1_13_KEY_5 + 2148335621 + name 1_13_KEY_6 + 2148335622 + name 1_13_KEY_7 + 2148335623 + name 1_13_KEY_8 + 2148335624 + name 1_13_KEY_9 + 2148335625 + name 1_13_KEY_POWER + 2148335626 + name 1_13_KEY_CH_UP + 2148335631 + name 1_13_KEY_CH_DOWN + 2148335632 + name 1_13_CH_PREVIOUS + 2148335635 + name 1_13_KEY_DISPLAY + 2148335637 + name 1_13_KEY_MNSELECT + 2148335639 + name 1_13_KEY_EXIT + 2148335640 + name 1_13_KEY_GUIDE + 2148335643 + name 1_13_KEY_MENU + 2148335663 + name 1_13_KEY_MUP + 2148335664 + name 1_13_KEY_MDOWN + 2148335665 + name 1_13_KEY_MLEFT + 2148335666 + name 1_13_KEY_MRIGHT + 2148335667 + name 1_13_KEY_Help + 2148335680 + name 0_14_KEY_0 + 917504 + name 0_14_KEY_1 + 917505 + name 0_14_KEY_2 + 917506 + name 0_14_KEY_3 + 917507 + name 0_14_KEY_4 + 917508 + name 0_14_KEY_5 + 917509 + name 0_14_KEY_6 + 917510 + name 0_14_KEY_7 + 917511 + name 0_14_KEY_8 + 917512 + name 0_14_KEY_9 + 917513 + name 0_14_KEY_POWER + 917514 + name 0_14_KEY_CH_UP + 917519 + name 0_14_KEY_CH_DOWN + 917520 + name 0_14_KEY_MUTE + 917521 + name 0_14_KEY_VOL_DOWN + 917522 + name 0_14_CH_PREVIOUS + 917523 + name 0_14_KEY_VOL_UP + 917524 + name 0_14_KEY_DISPLAY + 917525 + name 0_14_KEY_SELECT + 917534 + name 1_14_KEY_0 + 2148401152 + name 1_14_KEY_1 + 2148401153 + name 1_14_KEY_2 + 2148401154 + name 1_14_KEY_3 + 2148401155 + name 1_14_KEY_4 + 2148401156 + name 1_14_KEY_5 + 2148401157 + name 1_14_KEY_6 + 2148401158 + name 1_14_KEY_7 + 2148401159 + name 1_14_KEY_8 + 2148401160 + name 1_14_KEY_9 + 2148401161 + name 1_14_KEY_POWER + 2148401162 + name 1_14_KEY_CH_UP + 2148401167 + name 1_14_KEY_CH_DOWN + 2148401168 + name 1_14_CH_PREVIOUS + 2148401171 + name 1_14_KEY_DISPLAY + 2148401173 + name 1_14_KEY_EXIT + 2148401176 + name 1_14_KEY_GUIDE + 2148401179 + name 1_14_KEY_FAV + 2148401181 + name 1_14_KEY_ENTER + 2148401195 + name 1_14_KEY_MENU + 2148401199 + name 1_14_KEY_MUP + 2148401200 + name 1_14_KEY_MDOWN + 2148401201 + name 1_14_KEY_MLEFT + 2148401202 + name 1_14_KEY_MRIGHT + 2148401203 + name 0_15_KEY_0 + 983040 + name 0_15_KEY_1 + 983041 + name 0_15_KEY_2 + 983042 + name 0_15_KEY_3 + 983043 + name 0_15_KEY_4 + 983044 + name 0_15_KEY_5 + 983045 + name 0_15_KEY_6 + 983046 + name 0_15_KEY_7 + 983047 + name 0_15_KEY_8 + 983048 + name 0_15_KEY_9 + 983049 + name 0_15_KEY_POWER + 983050 + name 0_15_KEY_CH_UP + 983055 + name 0_15_KEY_CH_DOWN + 983056 + name 0_15_KEY_MUTE + 983057 + name 0_15_KEY_VOL_DOWN + 983058 + name 0_15_CH_PREVIOUS + 983059 + name 0_15_KEY_VOL_UP + 983060 + name 0_15_KEY_FTUNEPLUS + 983073 + name 0_15_KEY_FTUNEMINUS + 983074 + name 1_15_KEY_0 + 2148466688 + name 1_15_KEY_1 + 2148466689 + name 1_15_KEY_2 + 2148466690 + name 1_15_KEY_3 + 2148466691 + name 1_15_KEY_4 + 2148466692 + name 1_15_KEY_5 + 2148466693 + name 1_15_KEY_6 + 2148466694 + name 1_15_KEY_7 + 2148466695 + name 1_15_KEY_8 + 2148466696 + name 1_15_KEY_9 + 2148466697 + name 1_15_KEY_POWER + 2148466698 + name 1_15_KEY_CH_UP + 2148466703 + name 1_15_KEY_CH_DOWN + 2148466704 + name 1_15_CH_PREVIOUS + 2148466707 + name 1_15_KEY_DISPLAY + 2148466709 + name 1_15_KEY_MNSELECT + 2148466711 + name 1_15_KEY_EXIT + 2148466712 + name 1_15_KEY_GUIDE + 2148466715 + name 1_15_KEY_MENU + 2148466735 + name 1_15_KEY_MUP + 2148466736 + name 1_15_KEY_MDOWN + 2148466737 + name 1_15_KEY_MLEFT + 2148466738 + name 1_15_KEY_MRIGHT + 2148466739 + name 0_16_KEY_0 + 1048576 + name 0_16_KEY_1 + 1048577 + name 0_16_KEY_2 + 1048578 + name 0_16_KEY_3 + 1048579 + name 0_16_KEY_4 + 1048580 + name 0_16_KEY_5 + 1048581 + name 0_16_KEY_6 + 1048582 + name 0_16_KEY_7 + 1048583 + name 0_16_KEY_8 + 1048584 + name 0_16_KEY_9 + 1048585 + name 0_16_KEY_POWER + 1048586 + name 0_16_KEY_CH_UP + 1048591 + name 0_16_KEY_CH_DOWN + 1048592 + name 0_16_KEY_FTUNEPLUS + 1048609 + name 0_16_KEY_FTUNEMINUS + 1048610 + name 1_16_KEY_0 + 2148532224 + name 1_16_KEY_1 + 2148532225 + name 1_16_KEY_2 + 2148532226 + name 1_16_KEY_3 + 2148532227 + name 1_16_KEY_4 + 2148532228 + name 1_16_KEY_5 + 2148532229 + name 1_16_KEY_6 + 2148532230 + name 1_16_KEY_7 + 2148532231 + name 1_16_KEY_8 + 2148532232 + name 1_16_KEY_9 + 2148532233 + name 1_16_KEY_POWER + 2148532234 + name 1_16_KEY_CH_UP + 2148532239 + name 1_16_KEY_CH_DOWN + 2148532240 + name 1_16_KEY_EXIT + 2148532248 + name 1_16_KEY_GUIDE + 2148532251 + name 1_16_KEY_MENU + 2148532271 + name 1_16_KEY_MUP + 2148532272 + name 1_16_KEY_MDOWN + 2148532273 + name 1_16_KEY_MLEFT + 2148532274 + name 1_16_KEY_MRIGHT + 2148532275 + name 0_17_KEY_0 + 1114112 + name 0_17_KEY_1 + 1114113 + name 0_17_KEY_2 + 1114114 + name 0_17_KEY_3 + 1114115 + name 0_17_KEY_4 + 1114116 + name 0_17_KEY_5 + 1114117 + name 0_17_KEY_6 + 1114118 + name 0_17_KEY_7 + 1114119 + name 0_17_KEY_8 + 1114120 + name 0_17_KEY_9 + 1114121 + name 0_17_KEY_POWER + 1114122 + name 0_17_KEY_CH_UP + 1114127 + name 0_17_KEY_CH_DOWN + 1114128 + name 1_17_KEY_0 + 2148597760 + name 1_17_KEY_1 + 2148597761 + name 1_17_KEY_2 + 2148597762 + name 1_17_KEY_3 + 2148597763 + name 1_17_KEY_4 + 2148597764 + name 1_17_KEY_5 + 2148597765 + name 1_17_KEY_6 + 2148597766 + name 1_17_KEY_7 + 2148597767 + name 1_17_KEY_8 + 2148597768 + name 1_17_KEY_9 + 2148597769 + name 1_17_KEY_POWER + 2148597770 + name 1_17_KEY_CH_UP + 2148597775 + name 1_17_KEY_CH_DOWN + 2148597776 + name 1_17_KEY_MUTE + 2148597777 + name 1_17_KEY_VOL_DOWN + 2148597778 + name 1_17_CH_PREVIOUS + 2148597779 + name 1_17_KEY_VOL_UP + 2148597780 + name 1_17_KEY_DISPLAY + 2148597781 + name 1_17_KEY_EXIT + 2148597784 + name 1_17_KEY_GUIDE + 2148597787 + name 1_17_KEY_FAV + 2148597789 + name 1_17_KEY_MENU + 2148597807 + name 1_17_KEY_MUP + 2148597808 + name 1_17_KEY_MDOWN + 2148597809 + name 1_17_KEY_MLEFT + 2148597810 + name 1_17_KEY_MRIGHT + 2148597811 + name 0_18_KEY_0 + 1179648 + name 0_18_KEY_1 + 1179649 + name 0_18_KEY_2 + 1179650 + name 0_18_KEY_3 + 1179651 + name 0_18_KEY_4 + 1179652 + name 0_18_KEY_5 + 1179653 + name 0_18_KEY_6 + 1179654 + name 0_18_KEY_7 + 1179655 + name 0_18_KEY_8 + 1179656 + name 0_18_KEY_9 + 1179657 + name 0_18_KEY_POWER + 1179658 + name 0_18_KEY_CH_UP + 1179663 + name 0_18_KEY_CH_DOWN + 1179664 + name 0_18_CH_PREVIOUS + 1179667 + name 0_18_KEY_AB + 1179710 + name 1_18_KEY_0 + 2148663296 + name 1_18_KEY_1 + 2148663297 + name 1_18_KEY_2 + 2148663298 + name 1_18_KEY_3 + 2148663299 + name 1_18_KEY_4 + 2148663300 + name 1_18_KEY_5 + 2148663301 + name 1_18_KEY_6 + 2148663302 + name 1_18_KEY_7 + 2148663303 + name 1_18_KEY_8 + 2148663304 + name 1_18_KEY_9 + 2148663305 + name 1_18_KEY_POWER + 2148663306 + name 1_18_KEY_CH_UP + 2148663311 + name 1_18_KEY_CH_DOWN + 2148663312 + name 1_18_CH_PREVIOUS + 2148663315 + name 1_18_KEY_DISPLAY + 2148663317 + name 1_18_KEY_EXIT + 2148663320 + name 1_18_KEY_INPUT + 2148663322 + name 1_18_KEY_GUIDE + 2148663323 + name 1_18_KEY_FAV + 2148663325 + name 1_18_KEY_MENU + 2148663343 + name 1_18_KEY_MUP + 2148663344 + name 1_18_KEY_MDOWN + 2148663345 + name 1_18_KEY_MLEFT + 2148663346 + name 1_18_KEY_MRIGHT + 2148663347 + name 0_19_KEY_0 + 1245184 + name 0_19_KEY_1 + 1245185 + name 0_19_KEY_2 + 1245186 + name 0_19_KEY_3 + 1245187 + name 0_19_KEY_4 + 1245188 + name 0_19_KEY_5 + 1245189 + name 0_19_KEY_6 + 1245190 + name 0_19_KEY_7 + 1245191 + name 0_19_KEY_8 + 1245192 + name 0_19_KEY_9 + 1245193 + name 0_19_KEY_POWER + 1245194 + name 0_19_KEY_CH_UP + 1245199 + name 0_19_KEY_CH_DOWN + 1245200 + name 0_19_KEY_DISPLAY + 1245205 + name 0_19_KEY_ENTER + 1245227 + name 0_19_KEY_Norm + 1245245 + name 1_19_KEY_0 + 2148728832 + name 1_19_KEY_1 + 2148728833 + name 1_19_KEY_2 + 2148728834 + name 1_19_KEY_3 + 2148728835 + name 1_19_KEY_4 + 2148728836 + name 1_19_KEY_5 + 2148728837 + name 1_19_KEY_6 + 2148728838 + name 1_19_KEY_7 + 2148728839 + name 1_19_KEY_8 + 2148728840 + name 1_19_KEY_9 + 2148728841 + name 1_19_KEY_POWER + 2148728842 + name 1_19_KEY_CH_UP + 2148728847 + name 1_19_KEY_CH_DOWN + 2148728848 + name 1_19_KEY_MUTE + 2148728849 + name 1_19_KEY_VOL_DOWN + 2148728850 + name 1_19_CH_PREVIOUS + 2148728851 + name 1_19_KEY_VOL_UP + 2148728852 + name 1_19_KEY_DISPLAY + 2148728853 + name 1_19_KEY_EXIT + 2148728856 + name 1_19_KEY_GUIDE + 2148728859 + name 1_19_KEY_FAV + 2148728861 + name 1_19_KEY_SAT + 2148728874 + name 1_19_KEY_MENU + 2148728879 + name 1_19_KEY_MUP + 2148728880 + name 1_19_KEY_MDOWN + 2148728881 + name 1_19_KEY_MLEFT + 2148728882 + name 1_19_KEY_MRIGHT + 2148728883 + name 0_20_KEY_0 + 1310720 + name 0_20_KEY_1 + 1310721 + name 0_20_KEY_2 + 1310722 + name 0_20_KEY_3 + 1310723 + name 0_20_KEY_4 + 1310724 + name 0_20_KEY_5 + 1310725 + name 0_20_KEY_6 + 1310726 + name 0_20_KEY_7 + 1310727 + name 0_20_KEY_8 + 1310728 + name 0_20_KEY_9 + 1310729 + name 0_20_KEY_POWER + 1310730 + name 0_20_KEY_CH_UP + 1310735 + name 0_20_KEY_CH_DOWN + 1310736 + name 0_20_KEY_MUTE + 1310737 + name 0_20_KEY_VOL_DOWN + 1310738 + name 0_20_KEY_VOL_UP + 1310740 + name 0_20_KEY_DISPLAY + 1310741 + name 0_20_KEY_FAVCH + 1310748 + name 0_20_KEY_FTUNEPLUS + 1310753 + name 0_20_KEY_FTUNEMINUS + 1310754 + name 1_20_KEY_0 + 2148794368 + name 1_20_KEY_1 + 2148794369 + name 1_20_KEY_2 + 2148794370 + name 1_20_KEY_3 + 2148794371 + name 1_20_KEY_4 + 2148794372 + name 1_20_KEY_5 + 2148794373 + name 1_20_KEY_6 + 2148794374 + name 1_20_KEY_7 + 2148794375 + name 1_20_KEY_8 + 2148794376 + name 1_20_KEY_9 + 2148794377 + name 1_20_KEY_POWER + 2148794378 + name 1_20_KEY_CH_UP + 2148794383 + name 1_20_KEY_CH_DOWN + 2148794384 + name 1_20_KEY_MUTE + 2148794385 + name 1_20_KEY_VOL_DOWN + 2148794386 + name 1_20_CH_PREVIOUS + 2148794387 + name 1_20_KEY_VOL_UP + 2148794388 + name 1_20_KEY_DISPLAY + 2148794389 + name 1_20_KEY_EXIT + 2148794392 + name 1_20_KEY_INPUT + 2148794394 + name 1_20_KEY_GUIDE + 2148794395 + name 1_20_KEY_SELECT + 2148794398 + name 1_20_KEY_AV + 2148794409 + name 1_20_KEY_SAT + 2148794410 + name 1_20_KEY_ENTER + 2148794411 + name 1_20_KEY_MENU + 2148794415 + name 1_20_KEY_MUP + 2148794416 + name 1_20_KEY_MDOWN + 2148794417 + name 1_20_KEY_MLEFT + 2148794418 + name 1_20_KEY_MRIGHT + 2148794419 + name 1_20_KEY_FF + 2148794420 + name 1_20_KEY_PLAY + 2148794421 + name 1_20_KEY_REW + 2148794422 + name 1_20_KEY_REC + 2148794423 + name 1_20_KEY_PAUSE + 2148794424 + name 1_20_KEY_STOP + 2148794425 + name 0_21_KEY_0 + 1376256 + name 0_21_KEY_1 + 1376257 + name 0_21_KEY_2 + 1376258 + name 0_21_KEY_3 + 1376259 + name 0_21_KEY_4 + 1376260 + name 0_21_KEY_5 + 1376261 + name 0_21_KEY_6 + 1376262 + name 0_21_KEY_7 + 1376263 + name 0_21_KEY_8 + 1376264 + name 0_21_KEY_9 + 1376265 + name 0_21_KEY_POWER + 1376266 + name 0_21_KEY_CH_UP + 1376271 + name 0_21_KEY_CH_DOWN + 1376272 + name 0_21_KEY_MUTE + 1376273 + name 0_21_KEY_VOL_DOWN + 1376274 + name 0_21_CH_PREVIOUS + 1376275 + name 0_21_KEY_VOL_UP + 1376276 + name 0_21_KEY_DISPLAY + 1376277 + name 0_21_KEY_FTUNEPLUS + 1376289 + name 0_21_KEY_FTUNEMINUS + 1376290 + name 1_21_KEY_0 + 2148859904 + name 1_21_KEY_1 + 2148859905 + name 1_21_KEY_2 + 2148859906 + name 1_21_KEY_3 + 2148859907 + name 1_21_KEY_4 + 2148859908 + name 1_21_KEY_5 + 2148859909 + name 1_21_KEY_6 + 2148859910 + name 1_21_KEY_7 + 2148859911 + name 1_21_KEY_8 + 2148859912 + name 1_21_KEY_9 + 2148859913 + name 1_21_KEY_POWER + 2148859914 + name 1_21_KEY_CH_UP + 2148859919 + name 1_21_KEY_CH_DOWN + 2148859920 + name 1_21_KEY_MUTE + 2148859921 + name 1_21_KEY_VOL_DOWN + 2148859922 + name 1_21_CH_PREVIOUS + 2148859923 + name 1_21_KEY_VOL_UP + 2148859924 + name 1_21_KEY_DISPLAY + 2148859925 + name 1_21_KEY_EXIT + 2148859928 + name 1_21_KEY_INPUT + 2148859930 + name 1_21_KEY_GUIDE + 2148859931 + name 1_21_KEY_AV + 2148859945 + name 1_21_KEY_SAT + 2148859946 + name 1_21_KEY_ENTER + 2148859947 + name 1_21_KEY_MENU + 2148859951 + name 1_21_KEY_MUP + 2148859952 + name 1_21_KEY_MDOWN + 2148859953 + name 1_21_KEY_MLEFT + 2148859954 + name 1_21_KEY_MRIGHT + 2148859955 + name 1_21_KEY_FF + 2148859956 + name 1_21_KEY_PLAY + 2148859957 + name 1_21_KEY_REW + 2148859958 + name 1_21_KEY_REC + 2148859959 + name 1_21_KEY_PAUSE + 2148859960 + name 1_21_KEY_STOP + 2148859961 + name 0_22_KEY_0 + 1441792 + name 0_22_KEY_1 + 1441793 + name 0_22_KEY_2 + 1441794 + name 0_22_KEY_3 + 1441795 + name 0_22_KEY_4 + 1441796 + name 0_22_KEY_5 + 1441797 + name 0_22_KEY_6 + 1441798 + name 0_22_KEY_7 + 1441799 + name 0_22_KEY_8 + 1441800 + name 0_22_KEY_9 + 1441801 + name 0_22_KEY_POWER + 1441802 + name 0_22_KEY_CH_UP + 1441807 + name 0_22_KEY_CH_DOWN + 1441808 + name 0_22_KEY_MUTE + 1441809 + name 0_22_KEY_VOL_DOWN + 1441810 + name 0_22_KEY_VOL_UP + 1441812 + name 0_22_KEY_DISPLAY + 1441813 + name 0_22_KEY_FAVCH + 1441820 + name 0_22_KEY_FTUNEPLUS + 1441825 + name 0_22_KEY_FTUNEMINUS + 1441826 + name 1_22_KEY_0 + 2148925440 + name 1_22_KEY_1 + 2148925441 + name 1_22_KEY_2 + 2148925442 + name 1_22_KEY_3 + 2148925443 + name 1_22_KEY_4 + 2148925444 + name 1_22_KEY_5 + 2148925445 + name 1_22_KEY_6 + 2148925446 + name 1_22_KEY_7 + 2148925447 + name 1_22_KEY_8 + 2148925448 + name 1_22_KEY_9 + 2148925449 + name 1_22_KEY_POWER + 2148925450 + name 1_22_KEY_CH_UP + 2148925455 + name 1_22_KEY_CH_DOWN + 2148925456 + name 1_22_KEY_MUTE + 2148925457 + name 1_22_KEY_VOL_DOWN + 2148925458 + name 1_22_CH_PREVIOUS + 2148925459 + name 1_22_KEY_VOL_UP + 2148925460 + name 1_22_KEY_DISPLAY + 2148925461 + name 1_22_KEY_EXIT + 2148925464 + name 1_22_KEY_INPUT + 2148925466 + name 1_22_KEY_GUIDE + 2148925467 + name 1_22_KEY_AV + 2148925481 + name 1_22_KEY_SAT + 2148925482 + name 1_22_KEY_ENTER + 2148925483 + name 1_22_KEY_MENU + 2148925487 + name 1_22_KEY_MUP + 2148925488 + name 1_22_KEY_MDOWN + 2148925489 + name 1_22_KEY_MLEFT + 2148925490 + name 1_22_KEY_MRIGHT + 2148925491 + name 1_22_KEY_FF + 2148925492 + name 1_22_KEY_PLAY + 2148925493 + name 1_22_KEY_REW + 2148925494 + name 1_22_KEY_REC + 2148925495 + name 1_22_KEY_PAUSE + 2148925496 + name 1_22_KEY_STOP + 2148925497 + name 0_23_KEY_0 + 1507328 + name 0_23_KEY_1 + 1507329 + name 0_23_KEY_2 + 1507330 + name 0_23_KEY_3 + 1507331 + name 0_23_KEY_4 + 1507332 + name 0_23_KEY_5 + 1507333 + name 0_23_KEY_6 + 1507334 + name 0_23_KEY_7 + 1507335 + name 0_23_KEY_8 + 1507336 + name 0_23_KEY_9 + 1507337 + name 0_23_KEY_POWER + 1507338 + name 0_23_KEY_CH_UP + 1507343 + name 0_23_KEY_CH_DOWN + 1507344 + name 0_23_KEY_DISPLAY + 1507349 + name 1_23_KEY_0 + 2148990976 + name 1_23_KEY_1 + 2148990977 + name 1_23_KEY_2 + 2148990978 + name 1_23_KEY_3 + 2148990979 + name 1_23_KEY_4 + 2148990980 + name 1_23_KEY_5 + 2148990981 + name 1_23_KEY_6 + 2148990982 + name 1_23_KEY_7 + 2148990983 + name 1_23_KEY_8 + 2148990984 + name 1_23_KEY_9 + 2148990985 + name 1_23_KEY_POWER + 2148990986 + name 1_23_KEY_CH_UP + 2148990991 + name 1_23_KEY_CH_DOWN + 2148990992 + name 1_23_CH_PREVIOUS + 2148990995 + name 1_23_KEY_DISPLAY + 2148990997 + name 1_23_KEY_EXIT + 2148991000 + name 1_23_KEY_INPUT + 2148991002 + name 1_23_KEY_GUIDE + 2148991003 + name 1_23_KEY_SELECT + 2148991006 + name 1_23_KEY_AV + 2148991017 + name 1_23_KEY_ENTER + 2148991019 + name 1_23_KEY_MENU + 2148991023 + name 1_23_KEY_MUP + 2148991024 + name 1_23_KEY_MDOWN + 2148991025 + name 1_23_KEY_MLEFT + 2148991026 + name 1_23_KEY_MRIGHT + 2148991027 + name 1_23_KEY_FF + 2148991028 + name 1_23_KEY_PLAY + 2148991029 + name 1_23_KEY_REW + 2148991030 + name 1_23_KEY_REC + 2148991031 + name 1_23_KEY_PAUSE + 2148991032 + name 1_23_KEY_STOP + 2148991033 + name 0_24_KEY_0 + 1572864 + name 0_24_KEY_1 + 1572865 + name 0_24_KEY_2 + 1572866 + name 0_24_KEY_3 + 1572867 + name 0_24_KEY_4 + 1572868 + name 0_24_KEY_5 + 1572869 + name 0_24_KEY_6 + 1572870 + name 0_24_KEY_7 + 1572871 + name 0_24_KEY_8 + 1572872 + name 0_24_KEY_9 + 1572873 + name 0_24_KEY_POWER + 1572874 + name 0_24_KEY_CH_UP + 1572879 + name 0_24_KEY_CH_DOWN + 1572880 + name 0_24_KEY_DISPLAY + 1572885 + name 0_24_KEY_PMCLEAR + 1572889 + name 0_24_KEY_FTUNEPLUS + 1572897 + name 0_24_KEY_FTUNEMINUS + 1572898 + name 1_24_KEY_0 + 2149056512 + name 1_24_KEY_1 + 2149056513 + name 1_24_KEY_2 + 2149056514 + name 1_24_KEY_3 + 2149056515 + name 1_24_KEY_4 + 2149056516 + name 1_24_KEY_5 + 2149056517 + name 1_24_KEY_6 + 2149056518 + name 1_24_KEY_7 + 2149056519 + name 1_24_KEY_8 + 2149056520 + name 1_24_KEY_9 + 2149056521 + name 1_24_KEY_POWER + 2149056522 + name 1_24_KEY_CH_UP + 2149056527 + name 1_24_KEY_CH_DOWN + 2149056528 + name 1_24_CH_PREVIOUS + 2149056531 + name 1_24_KEY_DISPLAY + 2149056533 + name 1_24_KEY_EXIT + 2149056536 + name 1_24_KEY_INPUT + 2149056538 + name 1_24_KEY_GUIDE + 2149056539 + name 1_24_KEY_FAV + 2149056541 + name 1_24_KEY_SELECT + 2149056542 + name 1_24_KEY_AV + 2149056553 + name 1_24_KEY_SAT + 2149056554 + name 1_24_KEY_ENTER + 2149056555 + name 1_24_KEY_MENU + 2149056559 + name 1_24_KEY_MUP + 2149056560 + name 1_24_KEY_MDOWN + 2149056561 + name 1_24_KEY_MLEFT + 2149056562 + name 1_24_KEY_MRIGHT + 2149056563 + name 1_24_KEY_FF + 2149056564 + name 1_24_KEY_PLAY + 2149056565 + name 1_24_KEY_REW + 2149056566 + name 1_24_KEY_REC + 2149056567 + name 1_24_KEY_PAUSE + 2149056568 + name 1_24_KEY_STOP + 2149056569 + name 0_25_KEY_0 + 1638400 + name 0_25_KEY_1 + 1638401 + name 0_25_KEY_2 + 1638402 + name 0_25_KEY_3 + 1638403 + name 0_25_KEY_4 + 1638404 + name 0_25_KEY_5 + 1638405 + name 0_25_KEY_6 + 1638406 + name 0_25_KEY_7 + 1638407 + name 0_25_KEY_8 + 1638408 + name 0_25_KEY_9 + 1638409 + name 0_25_KEY_POWER + 1638410 + name 0_25_KEY_CH_UP + 1638415 + name 0_25_KEY_CH_DOWN + 1638416 + name 0_25_KEY_VOL_DOWN + 1638418 + name 0_25_CH_PREVIOUS + 1638419 + name 0_25_KEY_VOL_UP + 1638420 + name 0_25_KEY_FAVCH + 1638428 + name 0_25_KEY_SELECT + 1638430 + name 0_25_KEY_AB + 1638462 + name 1_25_KEY_0 + 2149122048 + name 1_25_KEY_1 + 2149122049 + name 1_25_KEY_2 + 2149122050 + name 1_25_KEY_3 + 2149122051 + name 1_25_KEY_4 + 2149122052 + name 1_25_KEY_5 + 2149122053 + name 1_25_KEY_6 + 2149122054 + name 1_25_KEY_7 + 2149122055 + name 1_25_KEY_8 + 2149122056 + name 1_25_KEY_9 + 2149122057 + name 1_25_KEY_POWER + 2149122058 + name 1_25_KEY_CH_UP + 2149122063 + name 1_25_KEY_CH_DOWN + 2149122064 + name 1_25_KEY_MUTE + 2149122065 + name 1_25_KEY_VOL_DOWN + 2149122066 + name 1_25_CH_PREVIOUS + 2149122067 + name 1_25_KEY_VOL_UP + 2149122068 + name 1_25_KEY_DISPLAY + 2149122069 + name 1_25_KEY_EXIT + 2149122072 + name 1_25_KEY_INPUT + 2149122074 + name 1_25_KEY_GUIDE + 2149122075 + name 1_25_KEY_SELECT + 2149122078 + name 1_25_KEY_AV + 2149122089 + name 1_25_KEY_SAT + 2149122090 + name 1_25_KEY_ENTER + 2149122091 + name 1_25_KEY_MENU + 2149122095 + name 1_25_KEY_MUP + 2149122096 + name 1_25_KEY_MDOWN + 2149122097 + name 1_25_KEY_MLEFT + 2149122098 + name 1_25_KEY_MRIGHT + 2149122099 + name 1_25_KEY_FF + 2149122100 + name 1_25_KEY_PLAY + 2149122101 + name 1_25_KEY_REW + 2149122102 + name 1_25_KEY_REC + 2149122103 + name 1_25_KEY_PAUSE + 2149122104 + name 1_25_KEY_STOP + 2149122105 + name 1_25_KEY_Repeat + 2149122106 + name 0_26_KEY_0 + 1703936 + name 0_26_KEY_1 + 1703937 + name 0_26_KEY_2 + 1703938 + name 0_26_KEY_3 + 1703939 + name 0_26_KEY_4 + 1703940 + name 0_26_KEY_5 + 1703941 + name 0_26_KEY_6 + 1703942 + name 0_26_KEY_7 + 1703943 + name 0_26_KEY_8 + 1703944 + name 0_26_KEY_9 + 1703945 + name 0_26_KEY_POWER + 1703946 + name 0_26_KEY_CH_UP + 1703951 + name 0_26_KEY_CH_DOWN + 1703952 + name 0_26_KEY_VOL_DOWN + 1703954 + name 0_26_CH_PREVIOUS + 1703955 + name 0_26_KEY_VOL_UP + 1703956 + name 0_26_KEY_DISPLAY + 1703957 + name 0_26_KEY_ENTER + 1703979 + name 1_26_KEY_0 + 2149187584 + name 1_26_KEY_1 + 2149187585 + name 1_26_KEY_2 + 2149187586 + name 1_26_KEY_3 + 2149187587 + name 1_26_KEY_4 + 2149187588 + name 1_26_KEY_5 + 2149187589 + name 1_26_KEY_6 + 2149187590 + name 1_26_KEY_7 + 2149187591 + name 1_26_KEY_8 + 2149187592 + name 1_26_KEY_9 + 2149187593 + name 1_26_KEY_POWER + 2149187594 + name 1_26_KEY_CH_UP + 2149187599 + name 1_26_KEY_CH_DOWN + 2149187600 + name 1_26_KEY_MUTE + 2149187601 + name 1_26_KEY_VOL_DOWN + 2149187602 + name 1_26_CH_PREVIOUS + 2149187603 + name 1_26_KEY_VOL_UP + 2149187604 + name 1_26_KEY_DISPLAY + 2149187605 + name 1_26_KEY_EXIT + 2149187608 + name 1_26_KEY_INPUT + 2149187610 + name 1_26_KEY_GUIDE + 2149187611 + name 1_26_KEY_SELECT + 2149187614 + name 1_26_KEY_AV + 2149187625 + name 1_26_KEY_SAT + 2149187626 + name 1_26_KEY_ENTER + 2149187627 + name 1_26_KEY_MENU + 2149187631 + name 1_26_KEY_MUP + 2149187632 + name 1_26_KEY_MDOWN + 2149187633 + name 1_26_KEY_MLEFT + 2149187634 + name 1_26_KEY_MRIGHT + 2149187635 + name 1_26_KEY_FF + 2149187636 + name 1_26_KEY_PLAY + 2149187637 + name 1_26_KEY_REW + 2149187638 + name 1_26_KEY_REC + 2149187639 + name 1_26_KEY_PAUSE + 2149187640 + name 1_26_KEY_STOP + 2149187641 + name 1_26_KEY_Repeat + 2149187642 + name 0_27_KEY_0 + 1769472 + name 0_27_KEY_1 + 1769473 + name 0_27_KEY_2 + 1769474 + name 0_27_KEY_3 + 1769475 + name 0_27_KEY_4 + 1769476 + name 0_27_KEY_5 + 1769477 + name 0_27_KEY_6 + 1769478 + name 0_27_KEY_7 + 1769479 + name 0_27_KEY_8 + 1769480 + name 0_27_KEY_9 + 1769481 + name 0_27_KEY_POWER + 1769482 + name 0_27_KEY_CH_UP + 1769487 + name 0_27_KEY_CH_DOWN + 1769488 + name 0_27_KEY_FAVCH + 1769500 + name 0_27_KEY_FTUNEPLUS + 1769505 + name 0_27_KEY_FTUNEMINUS + 1769506 + name 0_27_KEY_Norm + 1769533 + name 0_27_KEY_AB + 1769534 + name 1_27_KEY_0 + 2149253120 + name 1_27_KEY_1 + 2149253121 + name 1_27_KEY_2 + 2149253122 + name 1_27_KEY_3 + 2149253123 + name 1_27_KEY_4 + 2149253124 + name 1_27_KEY_5 + 2149253125 + name 1_27_KEY_6 + 2149253126 + name 1_27_KEY_7 + 2149253127 + name 1_27_KEY_8 + 2149253128 + name 1_27_KEY_9 + 2149253129 + name 1_27_KEY_POWER + 2149253130 + name 1_27_KEY_CH_UP + 2149253135 + name 1_27_KEY_CH_DOWN + 2149253136 + name 1_27_CH_PREVIOUS + 2149253139 + name 1_27_KEY_GUIDE + 2149253147 + name 1_27_KEY_AV + 2149253161 + name 1_27_KEY_ENTER + 2149253163 + name 0_28_KEY_0 + 1835008 + name 0_28_KEY_1 + 1835009 + name 0_28_KEY_2 + 1835010 + name 0_28_KEY_3 + 1835011 + name 0_28_KEY_4 + 1835012 + name 0_28_KEY_5 + 1835013 + name 0_28_KEY_6 + 1835014 + name 0_28_KEY_7 + 1835015 + name 0_28_KEY_8 + 1835016 + name 0_28_KEY_9 + 1835017 + name 0_28_KEY_POWER + 1835018 + name 0_28_KEY_CH_UP + 1835023 + name 0_28_KEY_CH_DOWN + 1835024 + name 0_28_KEY_MUTE + 1835025 + name 0_28_KEY_VOL_DOWN + 1835026 + name 0_28_KEY_VOL_UP + 1835028 + name 0_28_KEY_DISPLAY + 1835029 + name 1_28_KEY_0 + 2149318656 + name 1_28_KEY_1 + 2149318657 + name 1_28_KEY_2 + 2149318658 + name 1_28_KEY_3 + 2149318659 + name 1_28_KEY_4 + 2149318660 + name 1_28_KEY_5 + 2149318661 + name 1_28_KEY_6 + 2149318662 + name 1_28_KEY_7 + 2149318663 + name 1_28_KEY_8 + 2149318664 + name 1_28_KEY_9 + 2149318665 + name 1_28_KEY_POWER + 2149318666 + name 1_28_KEY_CH_UP + 2149318671 + name 1_28_KEY_CH_DOWN + 2149318672 + name 1_28_KEY_MUTE + 2149318673 + name 1_28_KEY_VOL_DOWN + 2149318674 + name 1_28_CH_PREVIOUS + 2149318675 + name 1_28_KEY_VOL_UP + 2149318676 + name 1_28_KEY_DISPLAY + 2149318677 + name 1_28_KEY_EXIT + 2149318680 + name 1_28_KEY_GUIDE + 2149318683 + name 1_28_KEY_SELECT + 2149318686 + name 1_28_KEY_AV + 2149318697 + name 1_28_KEY_ENTER + 2149318699 + name 1_28_KEY_MENU + 2149318703 + name 1_28_KEY_MUP + 2149318704 + name 1_28_KEY_MDOWN + 2149318705 + name 1_28_KEY_MLEFT + 2149318706 + name 1_28_KEY_MRIGHT + 2149318707 + name 0_29_KEY_0 + 1900544 + name 0_29_KEY_1 + 1900545 + name 0_29_KEY_2 + 1900546 + name 0_29_KEY_3 + 1900547 + name 0_29_KEY_4 + 1900548 + name 0_29_KEY_5 + 1900549 + name 0_29_KEY_6 + 1900550 + name 0_29_KEY_7 + 1900551 + name 0_29_KEY_8 + 1900552 + name 0_29_KEY_9 + 1900553 + name 0_29_KEY_POWER + 1900554 + name 0_29_KEY_CH_UP + 1900559 + name 0_29_KEY_CH_DOWN + 1900560 + name 0_29_KEY_MUTE + 1900561 + name 0_29_KEY_VOL_DOWN + 1900562 + name 0_29_CH_PREVIOUS + 1900563 + name 0_29_KEY_VOL_UP + 1900564 + name 0_29_KEY_DISPLAY + 1900565 + name 0_29_KEY_FAVCH + 1900572 + name 0_29_KEY_SELECT + 1900574 + name 0_29_KEY_ENTER + 1900587 + name 0_29_KEY_AB + 1900606 + name 1_29_KEY_0 + 2149384192 + name 1_29_KEY_1 + 2149384193 + name 1_29_KEY_2 + 2149384194 + name 1_29_KEY_3 + 2149384195 + name 1_29_KEY_4 + 2149384196 + name 1_29_KEY_5 + 2149384197 + name 1_29_KEY_6 + 2149384198 + name 1_29_KEY_7 + 2149384199 + name 1_29_KEY_8 + 2149384200 + name 1_29_KEY_9 + 2149384201 + name 1_29_KEY_POWER + 2149384202 + name 1_29_KEY_CH_UP + 2149384207 + name 1_29_KEY_CH_DOWN + 2149384208 + name 1_29_KEY_ENTER + 2149384235 + name 0_30_KEY_0 + 1966080 + name 0_30_KEY_1 + 1966081 + name 0_30_KEY_2 + 1966082 + name 0_30_KEY_3 + 1966083 + name 0_30_KEY_4 + 1966084 + name 0_30_KEY_5 + 1966085 + name 0_30_KEY_6 + 1966086 + name 0_30_KEY_7 + 1966087 + name 0_30_KEY_8 + 1966088 + name 0_30_KEY_9 + 1966089 + name 0_30_KEY_POWER + 1966090 + name 0_30_KEY_MUTE + 1966097 + name 0_30_KEY_VOL_DOWN + 1966098 + name 0_30_CH_PREVIOUS + 1966099 + name 0_30_KEY_VOL_UP + 1966100 + name 0_30_KEY_RETURN + 1966111 + name 1_30_KEY_0 + 2149449728 + name 1_30_KEY_1 + 2149449729 + name 1_30_KEY_2 + 2149449730 + name 1_30_KEY_3 + 2149449731 + name 1_30_KEY_4 + 2149449732 + name 1_30_KEY_5 + 2149449733 + name 1_30_KEY_6 + 2149449734 + name 1_30_KEY_7 + 2149449735 + name 1_30_KEY_8 + 2149449736 + name 1_30_KEY_9 + 2149449737 + name 1_30_KEY_POWER + 2149449738 + name 1_30_TWO_DIGITS + 2149449741 + name 1_30_KEY_CH_UP + 2149449743 + name 1_30_KEY_CH_DOWN + 2149449744 + name 1_30_KEY_DISPLAY + 2149449749 + name 1_30_KEY_EXIT + 2149449752 + name 1_30_KEY_GUIDE + 2149449755 + name 1_30_KEY_SELECT + 2149449758 + name 1_30_KEY_MENU + 2149449775 + name 1_30_KEY_MUP + 2149449776 + name 1_30_KEY_MDOWN + 2149449777 + name 1_30_KEY_MLEFT + 2149449778 + name 1_30_KEY_MRIGHT + 2149449779 + name 0_31_KEY_0 + 2031616 + name 0_31_KEY_1 + 2031617 + name 0_31_KEY_2 + 2031618 + name 0_31_KEY_3 + 2031619 + name 0_31_KEY_4 + 2031620 + name 0_31_KEY_5 + 2031621 + name 0_31_KEY_6 + 2031622 + name 0_31_KEY_7 + 2031623 + name 0_31_KEY_8 + 2031624 + name 0_31_KEY_9 + 2031625 + name 0_31_KEY_POWER + 2031626 + name 0_31_KEY_CH_UP + 2031631 + name 0_31_KEY_CH_DOWN + 2031632 + name 0_31_CH_PREVIOUS + 2031635 + name 0_31_KEY_DISPLAY + 2031637 + name 1_31_KEY_0 + 2149515264 + name 1_31_KEY_1 + 2149515265 + name 1_31_KEY_2 + 2149515266 + name 1_31_KEY_3 + 2149515267 + name 1_31_KEY_4 + 2149515268 + name 1_31_KEY_5 + 2149515269 + name 1_31_KEY_6 + 2149515270 + name 1_31_KEY_7 + 2149515271 + name 1_31_KEY_8 + 2149515272 + name 1_31_KEY_9 + 2149515273 + name 1_31_KEY_POWER + 2149515274 + name 1_31_TWO_DIGITS + 2149515277 + name 1_31_KEY_CH_UP + 2149515279 + name 1_31_KEY_CH_DOWN + 2149515280 + name 1_31_KEY_DISPLAY + 2149515285 + name 1_31_KEY_EXIT + 2149515288 + name 1_31_KEY_GUIDE + 2149515291 + name 1_31_KEY_SELECT + 2149515294 + name 1_31_KEY_MENU + 2149515311 + name 1_31_KEY_MUP + 2149515312 + name 1_31_KEY_MDOWN + 2149515313 + name 1_31_KEY_MLEFT + 2149515314 + name 1_31_KEY_MRIGHT + 2149515315 + name 0_32_KEY_0 + 2097152 + name 0_32_KEY_1 + 2097153 + name 0_32_KEY_2 + 2097154 + name 0_32_KEY_3 + 2097155 + name 0_32_KEY_4 + 2097156 + name 0_32_KEY_5 + 2097157 + name 0_32_KEY_6 + 2097158 + name 0_32_KEY_7 + 2097159 + name 0_32_KEY_8 + 2097160 + name 0_32_KEY_9 + 2097161 + name 0_32_KEY_POWER + 2097162 + name 0_32_KEY_CH_UP + 2097167 + name 0_32_KEY_CH_DOWN + 2097168 + name 0_32_KEY_MUTE + 2097169 + name 0_32_KEY_VOL_DOWN + 2097170 + name 0_32_CH_PREVIOUS + 2097171 + name 0_32_KEY_VOL_UP + 2097172 + name 1_32_KEY_0 + 2149580800 + name 1_32_KEY_1 + 2149580801 + name 1_32_KEY_2 + 2149580802 + name 1_32_KEY_3 + 2149580803 + name 1_32_KEY_4 + 2149580804 + name 1_32_KEY_5 + 2149580805 + name 1_32_KEY_6 + 2149580806 + name 1_32_KEY_7 + 2149580807 + name 1_32_KEY_8 + 2149580808 + name 1_32_KEY_9 + 2149580809 + name 1_32_KEY_POWER + 2149580810 + name 1_32_TWO_DIGITS + 2149580813 + name 1_32_KEY_CH_UP + 2149580815 + name 1_32_KEY_CH_DOWN + 2149580816 + name 1_32_KEY_DISPLAY + 2149580821 + name 1_32_KEY_EXIT + 2149580824 + name 1_32_KEY_GUIDE + 2149580827 + name 1_32_KEY_SELECT + 2149580830 + name 1_32_KEY_MENU + 2149580847 + name 1_32_KEY_MUP + 2149580848 + name 1_32_KEY_MDOWN + 2149580849 + name 1_32_KEY_MLEFT + 2149580850 + name 1_32_KEY_MRIGHT + 2149580851 + name 0_33_KEY_0 + 2162688 + name 0_33_KEY_1 + 2162689 + name 0_33_KEY_2 + 2162690 + name 0_33_KEY_3 + 2162691 + name 0_33_KEY_4 + 2162692 + name 0_33_KEY_5 + 2162693 + name 0_33_KEY_6 + 2162694 + name 0_33_KEY_7 + 2162695 + name 0_33_KEY_8 + 2162696 + name 0_33_KEY_9 + 2162697 + name 0_33_KEY_POWER + 2162698 + name 0_33_KEY_CH_UP + 2162703 + name 0_33_KEY_CH_DOWN + 2162704 + name 0_33_KEY_MUTE + 2162705 + name 0_33_KEY_VOL_DOWN + 2162706 + name 0_33_CH_PREVIOUS + 2162707 + name 0_33_KEY_VOL_UP + 2162708 + name 0_33_KEY_DISPLAY + 2162709 + name 0_33_KEY_INPUT + 2162714 + name 0_33_KEY_FTUNEPLUS + 2162721 + name 0_33_KEY_FTUNEMINUS + 2162722 + name 0_33_KEY_AB + 2162750 + name 1_33_KEY_0 + 2149646336 + name 1_33_KEY_1 + 2149646337 + name 1_33_KEY_2 + 2149646338 + name 1_33_KEY_3 + 2149646339 + name 1_33_KEY_4 + 2149646340 + name 1_33_KEY_5 + 2149646341 + name 1_33_KEY_6 + 2149646342 + name 1_33_KEY_7 + 2149646343 + name 1_33_KEY_8 + 2149646344 + name 1_33_KEY_9 + 2149646345 + name 1_33_KEY_POWER + 2149646346 + name 1_33_TWO_DIGITS + 2149646349 + name 1_33_KEY_CH_UP + 2149646351 + name 1_33_KEY_CH_DOWN + 2149646352 + name 1_33_KEY_DISPLAY + 2149646357 + name 1_33_KEY_EXIT + 2149646360 + name 1_33_KEY_GUIDE + 2149646363 + name 1_33_KEY_SELECT + 2149646366 + name 1_33_KEY_MENU + 2149646383 + name 1_33_KEY_MUP + 2149646384 + name 1_33_KEY_MDOWN + 2149646385 + name 1_33_KEY_MLEFT + 2149646386 + name 1_33_KEY_MRIGHT + 2149646387 + name 0_34_KEY_0 + 2228224 + name 0_34_KEY_1 + 2228225 + name 0_34_KEY_2 + 2228226 + name 0_34_KEY_3 + 2228227 + name 0_34_KEY_4 + 2228228 + name 0_34_KEY_5 + 2228229 + name 0_34_KEY_6 + 2228230 + name 0_34_KEY_7 + 2228231 + name 0_34_KEY_8 + 2228232 + name 0_34_KEY_9 + 2228233 + name 0_34_KEY_POWER + 2228234 + name 0_34_KEY_CH_UP + 2228239 + name 0_34_KEY_CH_DOWN + 2228240 + name 0_34_CH_PREVIOUS + 2228243 + name 0_34_KEY_ENTER + 2228267 + name 1_34_KEY_0 + 2149711872 + name 1_34_KEY_1 + 2149711873 + name 1_34_KEY_2 + 2149711874 + name 1_34_KEY_3 + 2149711875 + name 1_34_KEY_4 + 2149711876 + name 1_34_KEY_5 + 2149711877 + name 1_34_KEY_6 + 2149711878 + name 1_34_KEY_7 + 2149711879 + name 1_34_KEY_8 + 2149711880 + name 1_34_KEY_9 + 2149711881 + name 1_34_KEY_POWER + 2149711882 + name 1_34_TWO_DIGITS + 2149711885 + name 1_34_KEY_CH_UP + 2149711887 + name 1_34_KEY_CH_DOWN + 2149711888 + name 1_34_KEY_DISPLAY + 2149711893 + name 1_34_KEY_EXIT + 2149711896 + name 1_34_KEY_GUIDE + 2149711899 + name 1_34_KEY_SELECT + 2149711902 + name 1_34_KEY_MENU + 2149711919 + name 1_34_KEY_MUP + 2149711920 + name 1_34_KEY_MDOWN + 2149711921 + name 1_34_KEY_MLEFT + 2149711922 + name 1_34_KEY_MRIGHT + 2149711923 + name 0_35_KEY_0 + 2293760 + name 0_35_KEY_1 + 2293761 + name 0_35_KEY_2 + 2293762 + name 0_35_KEY_3 + 2293763 + name 0_35_KEY_4 + 2293764 + name 0_35_KEY_5 + 2293765 + name 0_35_KEY_6 + 2293766 + name 0_35_KEY_7 + 2293767 + name 0_35_KEY_8 + 2293768 + name 0_35_KEY_9 + 2293769 + name 0_35_KEY_POWER + 2293770 + name 0_35_KEY_CH_UP + 2293775 + name 0_35_KEY_CH_DOWN + 2293776 + name 0_35_CH_PREVIOUS + 2293779 + name 0_35_KEY_ENTER + 2293803 + name 1_35_KEY_0 + 2149777408 + name 1_35_KEY_1 + 2149777409 + name 1_35_KEY_2 + 2149777410 + name 1_35_KEY_3 + 2149777411 + name 1_35_KEY_4 + 2149777412 + name 1_35_KEY_5 + 2149777413 + name 1_35_KEY_6 + 2149777414 + name 1_35_KEY_7 + 2149777415 + name 1_35_KEY_8 + 2149777416 + name 1_35_KEY_9 + 2149777417 + name 1_35_KEY_POWER + 2149777418 + name 1_35_TWO_DIGITS + 2149777421 + name 1_35_KEY_CH_UP + 2149777423 + name 1_35_KEY_CH_DOWN + 2149777424 + name 1_35_KEY_DISPLAY + 2149777429 + name 1_35_KEY_EXIT + 2149777432 + name 1_35_KEY_GUIDE + 2149777435 + name 1_35_KEY_SELECT + 2149777438 + name 1_35_KEY_MENU + 2149777455 + name 1_35_KEY_MUP + 2149777456 + name 1_35_KEY_MDOWN + 2149777457 + name 1_35_KEY_MLEFT + 2149777458 + name 1_35_KEY_MRIGHT + 2149777459 + name 0_36_KEY_0 + 2359296 + name 0_36_KEY_1 + 2359297 + name 0_36_KEY_2 + 2359298 + name 0_36_KEY_3 + 2359299 + name 0_36_KEY_4 + 2359300 + name 0_36_KEY_5 + 2359301 + name 0_36_KEY_6 + 2359302 + name 0_36_KEY_7 + 2359303 + name 0_36_KEY_8 + 2359304 + name 0_36_KEY_9 + 2359305 + name 0_36_KEY_POWER + 2359306 + name 0_36_KEY_CH_UP + 2359311 + name 0_36_KEY_CH_DOWN + 2359312 + name 1_36_KEY_0 + 2149842944 + name 1_36_KEY_1 + 2149842945 + name 1_36_KEY_2 + 2149842946 + name 1_36_KEY_3 + 2149842947 + name 1_36_KEY_4 + 2149842948 + name 1_36_KEY_5 + 2149842949 + name 1_36_KEY_6 + 2149842950 + name 1_36_KEY_7 + 2149842951 + name 1_36_KEY_8 + 2149842952 + name 1_36_KEY_9 + 2149842953 + name 1_36_KEY_POWER + 2149842954 + name 1_36_TWO_DIGITS + 2149842957 + name 1_36_KEY_CH_UP + 2149842959 + name 1_36_KEY_CH_DOWN + 2149842960 + name 1_36_KEY_DISPLAY + 2149842965 + name 1_36_KEY_EXIT + 2149842968 + name 1_36_KEY_GUIDE + 2149842971 + name 1_36_KEY_SELECT + 2149842974 + name 1_36_KEY_MENU + 2149842991 + name 1_36_KEY_MUP + 2149842992 + name 1_36_KEY_MDOWN + 2149842993 + name 1_36_KEY_MLEFT + 2149842994 + name 1_36_KEY_MRIGHT + 2149842995 + name 0_37_KEY_0 + 2424832 + name 0_37_KEY_1 + 2424833 + name 0_37_KEY_2 + 2424834 + name 0_37_KEY_3 + 2424835 + name 0_37_KEY_4 + 2424836 + name 0_37_KEY_5 + 2424837 + name 0_37_KEY_6 + 2424838 + name 0_37_KEY_7 + 2424839 + name 0_37_KEY_8 + 2424840 + name 0_37_KEY_9 + 2424841 + name 0_37_KEY_POWER + 2424842 + name 0_37_KEY_CH_UP + 2424847 + name 0_37_KEY_CH_DOWN + 2424848 + name 1_37_KEY_0 + 2149908480 + name 1_37_KEY_1 + 2149908481 + name 1_37_KEY_2 + 2149908482 + name 1_37_KEY_3 + 2149908483 + name 1_37_KEY_4 + 2149908484 + name 1_37_KEY_5 + 2149908485 + name 1_37_KEY_6 + 2149908486 + name 1_37_KEY_7 + 2149908487 + name 1_37_KEY_8 + 2149908488 + name 1_37_KEY_9 + 2149908489 + name 1_37_KEY_POWER + 2149908490 + name 1_37_TWO_DIGITS + 2149908493 + name 1_37_KEY_CH_UP + 2149908495 + name 1_37_KEY_CH_DOWN + 2149908496 + name 1_37_KEY_DISPLAY + 2149908501 + name 1_37_KEY_EXIT + 2149908504 + name 1_37_KEY_GUIDE + 2149908507 + name 1_37_KEY_SELECT + 2149908510 + name 1_37_KEY_MENU + 2149908527 + name 1_37_KEY_MUP + 2149908528 + name 1_37_KEY_MDOWN + 2149908529 + name 1_37_KEY_MLEFT + 2149908530 + name 1_37_KEY_MRIGHT + 2149908531 + name 0_38_KEY_0 + 2490368 + name 0_38_KEY_1 + 2490369 + name 0_38_KEY_2 + 2490370 + name 0_38_KEY_3 + 2490371 + name 0_38_KEY_4 + 2490372 + name 0_38_KEY_5 + 2490373 + name 0_38_KEY_6 + 2490374 + name 0_38_KEY_7 + 2490375 + name 0_38_KEY_8 + 2490376 + name 0_38_KEY_9 + 2490377 + name 0_38_KEY_POWER + 2490378 + name 0_38_KEY_CH_UP + 2490383 + name 0_38_KEY_CH_DOWN + 2490384 + name 0_38_KEY_INPUT + 2490394 + name 0_38_KEY_ENTER + 2490411 + name 0_38_KEY_MENU + 2490415 + name 0_38_KEY_MUP + 2490416 + name 0_38_KEY_MDOWN + 2490417 + name 0_38_KEY_MLEFT + 2490418 + name 0_38_KEY_MRIGHT + 2490419 + name 1_38_KEY_0 + 2149974016 + name 1_38_KEY_1 + 2149974017 + name 1_38_KEY_2 + 2149974018 + name 1_38_KEY_3 + 2149974019 + name 1_38_KEY_4 + 2149974020 + name 1_38_KEY_5 + 2149974021 + name 1_38_KEY_6 + 2149974022 + name 1_38_KEY_7 + 2149974023 + name 1_38_KEY_8 + 2149974024 + name 1_38_KEY_9 + 2149974025 + name 1_38_KEY_POWER + 2149974026 + name 1_38_KEY_CH_UP + 2149974031 + name 1_38_KEY_CH_DOWN + 2149974032 + name 1_38_KEY_MUTE + 2149974033 + name 1_38_KEY_VOL_DOWN + 2149974034 + name 1_38_CH_PREVIOUS + 2149974035 + name 1_38_KEY_VOL_UP + 2149974036 + name 1_38_KEY_DISPLAY + 2149974037 + name 1_38_KEY_EXIT + 2149974040 + name 1_38_KEY_INPUT + 2149974042 + name 1_38_KEY_GUIDE + 2149974043 + name 1_38_KEY_SELECT + 2149974046 + name 1_38_KEY_AV + 2149974057 + name 1_38_KEY_SAT + 2149974058 + name 1_38_KEY_ENTER + 2149974059 + name 1_38_KEY_MENU + 2149974063 + name 1_38_KEY_MUP + 2149974064 + name 1_38_KEY_MDOWN + 2149974065 + name 1_38_KEY_MLEFT + 2149974066 + name 1_38_KEY_MRIGHT + 2149974067 + name 1_38_KEY_FF + 2149974068 + name 1_38_KEY_PLAY + 2149974069 + name 1_38_KEY_REW + 2149974070 + name 1_38_KEY_REC + 2149974071 + name 1_38_KEY_PAUSE + 2149974072 + name 1_38_KEY_STOP + 2149974073 + name 0_39_KEY_0 + 2555904 + name 0_39_KEY_1 + 2555905 + name 0_39_KEY_2 + 2555906 + name 0_39_KEY_3 + 2555907 + name 0_39_KEY_4 + 2555908 + name 0_39_KEY_5 + 2555909 + name 0_39_KEY_6 + 2555910 + name 0_39_KEY_7 + 2555911 + name 0_39_KEY_8 + 2555912 + name 0_39_KEY_9 + 2555913 + name 0_39_KEY_POWER + 2555914 + name 0_39_KEY_CH_UP + 2555919 + name 0_39_KEY_CH_DOWN + 2555920 + name 0_39_CH_PREVIOUS + 2555923 + name 0_39_KEY_ENTER + 2555947 + name 1_39_KEY_0 + 2150039552 + name 1_39_KEY_1 + 2150039553 + name 1_39_KEY_2 + 2150039554 + name 1_39_KEY_3 + 2150039555 + name 1_39_KEY_4 + 2150039556 + name 1_39_KEY_5 + 2150039557 + name 1_39_KEY_6 + 2150039558 + name 1_39_KEY_7 + 2150039559 + name 1_39_KEY_8 + 2150039560 + name 1_39_KEY_9 + 2150039561 + name 1_39_KEY_POWER + 2150039562 + name 1_39_KEY_CH_UP + 2150039567 + name 1_39_KEY_CH_DOWN + 2150039568 + name 1_39_KEY_MUTE + 2150039569 + name 1_39_KEY_VOL_DOWN + 2150039570 + name 1_39_CH_PREVIOUS + 2150039571 + name 1_39_KEY_VOL_UP + 2150039572 + name 1_39_KEY_DISPLAY + 2150039573 + name 1_39_KEY_EXIT + 2150039576 + name 1_39_KEY_INPUT + 2150039578 + name 1_39_KEY_GUIDE + 2150039579 + name 1_39_KEY_SELECT + 2150039582 + name 1_39_KEY_AV + 2150039593 + name 1_39_KEY_SAT + 2150039594 + name 1_39_KEY_ENTER + 2150039595 + name 1_39_KEY_MENU + 2150039599 + name 1_39_KEY_MUP + 2150039600 + name 1_39_KEY_MDOWN + 2150039601 + name 1_39_KEY_MLEFT + 2150039602 + name 1_39_KEY_MRIGHT + 2150039603 + name 1_39_KEY_FF + 2150039604 + name 1_39_KEY_PLAY + 2150039605 + name 1_39_KEY_REW + 2150039606 + name 1_39_KEY_REC + 2150039607 + name 1_39_KEY_PAUSE + 2150039608 + name 1_39_KEY_STOP + 2150039609 + name 0_40_KEY_0 + 2621440 + name 0_40_KEY_1 + 2621441 + name 0_40_KEY_2 + 2621442 + name 0_40_KEY_3 + 2621443 + name 0_40_KEY_4 + 2621444 + name 0_40_KEY_5 + 2621445 + name 0_40_KEY_6 + 2621446 + name 0_40_KEY_7 + 2621447 + name 0_40_KEY_8 + 2621448 + name 0_40_KEY_9 + 2621449 + name 0_40_KEY_POWER + 2621450 + name 0_40_KEY_CH_UP + 2621455 + name 0_40_KEY_CH_DOWN + 2621456 + name 0_40_CH_PREVIOUS + 2621459 + name 0_40_KEY_ENTER + 2621483 + name 1_40_KEY_0 + 2150105088 + name 1_40_KEY_1 + 2150105089 + name 1_40_KEY_2 + 2150105090 + name 1_40_KEY_3 + 2150105091 + name 1_40_KEY_4 + 2150105092 + name 1_40_KEY_5 + 2150105093 + name 1_40_KEY_6 + 2150105094 + name 1_40_KEY_7 + 2150105095 + name 1_40_KEY_8 + 2150105096 + name 1_40_KEY_9 + 2150105097 + name 1_40_KEY_POWER + 2150105098 + name 1_40_CH_PREVIOUS + 2150105107 + name 1_40_KEY_EXIT + 2150105112 + name 1_40_KEY_GUIDE + 2150105115 + name 1_40_KEY_FAV + 2150105117 + name 1_40_KEY_SELECT + 2150105118 + name 1_40_KEY_MENU + 2150105135 + name 1_40_KEY_MUP + 2150105136 + name 1_40_KEY_MDOWN + 2150105137 + name 1_40_KEY_MLEFT + 2150105138 + name 1_40_KEY_MRIGHT + 2150105139 + name 0_41_KEY_0 + 2686976 + name 0_41_KEY_1 + 2686977 + name 0_41_KEY_2 + 2686978 + name 0_41_KEY_3 + 2686979 + name 0_41_KEY_4 + 2686980 + name 0_41_KEY_5 + 2686981 + name 0_41_KEY_6 + 2686982 + name 0_41_KEY_7 + 2686983 + name 0_41_KEY_8 + 2686984 + name 0_41_KEY_9 + 2686985 + name 0_41_KEY_POWER + 2686986 + name 0_41_KEY_CH_UP + 2686991 + name 0_41_KEY_CH_DOWN + 2686992 + name 0_41_CH_PREVIOUS + 2686995 + name 0_41_KEY_ENTER + 2687019 + name 1_41_KEY_0 + 2150170624 + name 1_41_KEY_1 + 2150170625 + name 1_41_KEY_2 + 2150170626 + name 1_41_KEY_3 + 2150170627 + name 1_41_KEY_4 + 2150170628 + name 1_41_KEY_5 + 2150170629 + name 1_41_KEY_6 + 2150170630 + name 1_41_KEY_7 + 2150170631 + name 1_41_KEY_8 + 2150170632 + name 1_41_KEY_9 + 2150170633 + name 1_41_KEY_POWER + 2150170634 + name 1_41_KEY_CH_UP + 2150170639 + name 1_41_KEY_CH_DOWN + 2150170640 + name 1_41_KEY_MUTE + 2150170641 + name 1_41_KEY_VOL_DOWN + 2150170642 + name 1_41_CH_PREVIOUS + 2150170643 + name 1_41_KEY_VOL_UP + 2150170644 + name 1_41_KEY_GUIDE + 2150170651 + name 1_41_KEY_FAV + 2150170653 + name 1_41_KEY_SELECT + 2150170654 + name 0_42_KEY_0 + 2752512 + name 0_42_KEY_1 + 2752513 + name 0_42_KEY_2 + 2752514 + name 0_42_KEY_3 + 2752515 + name 0_42_KEY_4 + 2752516 + name 0_42_KEY_5 + 2752517 + name 0_42_KEY_6 + 2752518 + name 0_42_KEY_7 + 2752519 + name 0_42_KEY_8 + 2752520 + name 0_42_KEY_9 + 2752521 + name 0_42_KEY_POWER + 2752522 + name 0_42_KEY_CH_UP + 2752527 + name 0_42_KEY_CH_DOWN + 2752528 + name 0_42_CH_PREVIOUS + 2752531 + name 0_42_KEY_ENTER + 2752555 + name 1_42_KEY_0 + 2150236160 + name 1_42_KEY_1 + 2150236161 + name 1_42_KEY_2 + 2150236162 + name 1_42_KEY_3 + 2150236163 + name 1_42_KEY_4 + 2150236164 + name 1_42_KEY_5 + 2150236165 + name 1_42_KEY_6 + 2150236166 + name 1_42_KEY_7 + 2150236167 + name 1_42_KEY_8 + 2150236168 + name 1_42_KEY_9 + 2150236169 + name 1_42_KEY_POWER + 2150236170 + name 1_42_CH_PREVIOUS + 2150236179 + name 1_42_KEY_EXIT + 2150236184 + name 1_42_KEY_GUIDE + 2150236187 + name 1_42_KEY_FAV + 2150236189 + name 1_42_KEY_SELECT + 2150236190 + name 1_42_KEY_MENU + 2150236207 + name 1_42_KEY_MUP + 2150236208 + name 1_42_KEY_MDOWN + 2150236209 + name 1_42_KEY_MLEFT + 2150236210 + name 1_42_KEY_MRIGHT + 2150236211 + name 0_43_KEY_0 + 2818048 + name 0_43_KEY_1 + 2818049 + name 0_43_KEY_2 + 2818050 + name 0_43_KEY_3 + 2818051 + name 0_43_KEY_4 + 2818052 + name 0_43_KEY_5 + 2818053 + name 0_43_KEY_6 + 2818054 + name 0_43_KEY_7 + 2818055 + name 0_43_KEY_8 + 2818056 + name 0_43_KEY_9 + 2818057 + name 0_43_KEY_POWER + 2818058 + name 0_43_KEY_CH_UP + 2818063 + name 0_43_KEY_CH_DOWN + 2818064 + name 0_43_CH_PREVIOUS + 2818067 + name 0_43_KEY_ENTER + 2818091 + name 1_43_KEY_0 + 2150301696 + name 1_43_KEY_1 + 2150301697 + name 1_43_KEY_2 + 2150301698 + name 1_43_KEY_3 + 2150301699 + name 1_43_KEY_4 + 2150301700 + name 1_43_KEY_5 + 2150301701 + name 1_43_KEY_6 + 2150301702 + name 1_43_KEY_7 + 2150301703 + name 1_43_KEY_8 + 2150301704 + name 1_43_KEY_9 + 2150301705 + name 1_43_KEY_POWER + 2150301706 + name 1_43_CH_PREVIOUS + 2150301715 + name 1_43_KEY_EXIT + 2150301720 + name 1_43_KEY_SELECT + 2150301726 + name 1_43_KEY_MENU + 2150301743 + name 1_43_KEY_MUP + 2150301744 + name 1_43_KEY_MDOWN + 2150301745 + name 1_43_KEY_MLEFT + 2150301746 + name 1_43_KEY_MRIGHT + 2150301747 + name 0_44_KEY_0 + 2883584 + name 0_44_KEY_1 + 2883585 + name 0_44_KEY_2 + 2883586 + name 0_44_KEY_3 + 2883587 + name 0_44_KEY_4 + 2883588 + name 0_44_KEY_5 + 2883589 + name 0_44_KEY_6 + 2883590 + name 0_44_KEY_7 + 2883591 + name 0_44_KEY_8 + 2883592 + name 0_44_KEY_9 + 2883593 + name 0_44_KEY_POWER + 2883594 + name 0_44_KEY_CH_UP + 2883599 + name 0_44_KEY_CH_DOWN + 2883600 + name 0_44_CH_PREVIOUS + 2883603 + name 0_44_KEY_ENTER + 2883627 + name 1_44_KEY_0 + 2150367232 + name 1_44_KEY_1 + 2150367233 + name 1_44_KEY_2 + 2150367234 + name 1_44_KEY_3 + 2150367235 + name 1_44_KEY_4 + 2150367236 + name 1_44_KEY_5 + 2150367237 + name 1_44_KEY_6 + 2150367238 + name 1_44_KEY_7 + 2150367239 + name 1_44_KEY_8 + 2150367240 + name 1_44_KEY_9 + 2150367241 + name 1_44_KEY_POWER + 2150367242 + name 1_44_KEY_CH_UP + 2150367247 + name 1_44_KEY_CH_DOWN + 2150367248 + name 1_44_KEY_MUTE + 2150367249 + name 1_44_KEY_VOL_DOWN + 2150367250 + name 1_44_CH_PREVIOUS + 2150367251 + name 1_44_KEY_VOL_UP + 2150367252 + name 1_44_KEY_GUIDE + 2150367259 + name 1_44_KEY_FAV + 2150367261 + name 1_44_KEY_ENTER + 2150367275 + name 0_45_KEY_0 + 2949120 + name 0_45_KEY_1 + 2949121 + name 0_45_KEY_2 + 2949122 + name 0_45_KEY_3 + 2949123 + name 0_45_KEY_4 + 2949124 + name 0_45_KEY_5 + 2949125 + name 0_45_KEY_6 + 2949126 + name 0_45_KEY_7 + 2949127 + name 0_45_KEY_8 + 2949128 + name 0_45_KEY_9 + 2949129 + name 0_45_KEY_POWER + 2949130 + name 0_45_KEY_CH_UP + 2949135 + name 0_45_KEY_CH_DOWN + 2949136 + name 0_45_KEY_ENTER + 2949163 + name 1_45_KEY_0 + 2150432768 + name 1_45_KEY_1 + 2150432769 + name 1_45_KEY_2 + 2150432770 + name 1_45_KEY_3 + 2150432771 + name 1_45_KEY_4 + 2150432772 + name 1_45_KEY_5 + 2150432773 + name 1_45_KEY_6 + 2150432774 + name 1_45_KEY_7 + 2150432775 + name 1_45_KEY_8 + 2150432776 + name 1_45_KEY_9 + 2150432777 + name 1_45_KEY_POWER + 2150432778 + name 1_45_KEY_CH_UP + 2150432783 + name 1_45_KEY_CH_DOWN + 2150432784 + name 1_45_CH_PREVIOUS + 2150432787 + name 1_45_KEY_DISPLAY + 2150432789 + name 1_45_KEY_EXIT + 2150432792 + name 1_45_KEY_GUIDE + 2150432795 + name 1_45_KEY_FAV + 2150432797 + name 1_45_KEY_SELECT + 2150432798 + name 1_45_KEY_ENTER + 2150432811 + name 1_45_KEY_MENU + 2150432815 + name 1_45_KEY_MUP + 2150432816 + name 1_45_KEY_MDOWN + 2150432817 + name 1_45_KEY_MLEFT + 2150432818 + name 1_45_KEY_MRIGHT + 2150432819 + name 0_46_KEY_0 + 3014656 + name 0_46_KEY_1 + 3014657 + name 0_46_KEY_2 + 3014658 + name 0_46_KEY_3 + 3014659 + name 0_46_KEY_4 + 3014660 + name 0_46_KEY_5 + 3014661 + name 0_46_KEY_6 + 3014662 + name 0_46_KEY_7 + 3014663 + name 0_46_KEY_8 + 3014664 + name 0_46_KEY_9 + 3014665 + name 0_46_KEY_POWER + 3014666 + name 0_46_KEY_CH_UP + 3014671 + name 0_46_KEY_CH_DOWN + 3014672 + name 0_46_CH_PREVIOUS + 3014675 + name 0_46_KEY_ENTER + 3014699 + name 1_46_KEY_0 + 2150498304 + name 1_46_KEY_1 + 2150498305 + name 1_46_KEY_2 + 2150498306 + name 1_46_KEY_3 + 2150498307 + name 1_46_KEY_4 + 2150498308 + name 1_46_KEY_5 + 2150498309 + name 1_46_KEY_6 + 2150498310 + name 1_46_KEY_7 + 2150498311 + name 1_46_KEY_8 + 2150498312 + name 1_46_KEY_9 + 2150498313 + name 1_46_KEY_POWER + 2150498314 + name 1_46_KEY_CH_UP + 2150498319 + name 1_46_KEY_CH_DOWN + 2150498320 + name 1_46_KEY_MUTE + 2150498321 + name 1_46_KEY_VOL_DOWN + 2150498322 + name 1_46_CH_PREVIOUS + 2150498323 + name 1_46_KEY_VOL_UP + 2150498324 + name 1_46_KEY_FAV + 2150498333 + name 1_46_KEY_ENTER + 2150498347 + name 0_47_KEY_0 + 3080192 + name 0_47_KEY_1 + 3080193 + name 0_47_KEY_2 + 3080194 + name 0_47_KEY_3 + 3080195 + name 0_47_KEY_4 + 3080196 + name 0_47_KEY_5 + 3080197 + name 0_47_KEY_6 + 3080198 + name 0_47_KEY_7 + 3080199 + name 0_47_KEY_8 + 3080200 + name 0_47_KEY_9 + 3080201 + name 0_47_KEY_POWER + 3080202 + name 0_47_KEY_CH_UP + 3080207 + name 0_47_KEY_CH_DOWN + 3080208 + name 0_47_CH_PREVIOUS + 3080211 + name 1_47_KEY_POWER + 2150563850 + name 1_47_KEY_CH_UP + 2150563855 + name 1_47_KEY_CH_DOWN + 2150563856 + name 1_47_KEY_MUTE + 2150563857 + name 1_47_KEY_VOL_DOWN + 2150563858 + name 1_47_KEY_VOL_UP + 2150563860 + name 1_47_KEY_SAT + 2150563882 + name 1_47_KEY_ENTER + 2150563883 + name 0_48_KEY_0 + 3145728 + name 0_48_KEY_1 + 3145729 + name 0_48_KEY_2 + 3145730 + name 0_48_KEY_3 + 3145731 + name 0_48_KEY_4 + 3145732 + name 0_48_KEY_5 + 3145733 + name 0_48_KEY_6 + 3145734 + name 0_48_KEY_7 + 3145735 + name 0_48_KEY_8 + 3145736 + name 0_48_KEY_9 + 3145737 + name 0_48_KEY_POWER + 3145738 + name 0_48_KEY_CH_UP + 3145743 + name 0_48_KEY_CH_DOWN + 3145744 + name 0_48_CH_PREVIOUS + 3145747 + name 0_48_KEY_ENTER + 3145771 + name 1_48_KEY_0 + 2150629376 + name 1_48_KEY_1 + 2150629377 + name 1_48_KEY_2 + 2150629378 + name 1_48_KEY_3 + 2150629379 + name 1_48_KEY_4 + 2150629380 + name 1_48_KEY_5 + 2150629381 + name 1_48_KEY_6 + 2150629382 + name 1_48_KEY_7 + 2150629383 + name 1_48_KEY_8 + 2150629384 + name 1_48_KEY_9 + 2150629385 + name 1_48_KEY_POWER + 2150629386 + name 1_48_KEY_CH_UP + 2150629391 + name 1_48_KEY_CH_DOWN + 2150629392 + name 1_48_KEY_MUTE + 2150629393 + name 1_48_KEY_VOL_DOWN + 2150629394 + name 1_48_KEY_VOL_UP + 2150629396 + name 1_48_KEY_CKU + 2150629416 + name 1_48_KEY_SAT + 2150629418 + name 0_49_KEY_0 + 3211264 + name 0_49_KEY_1 + 3211265 + name 0_49_KEY_2 + 3211266 + name 0_49_KEY_3 + 3211267 + name 0_49_KEY_4 + 3211268 + name 0_49_KEY_5 + 3211269 + name 0_49_KEY_6 + 3211270 + name 0_49_KEY_7 + 3211271 + name 0_49_KEY_8 + 3211272 + name 0_49_KEY_9 + 3211273 + name 0_49_KEY_POWER + 3211274 + name 0_49_KEY_CH_UP + 3211279 + name 0_49_KEY_CH_DOWN + 3211280 + name 0_49_CH_PREVIOUS + 3211283 + name 0_49_KEY_ENTER + 3211307 + name 1_49_KEY_0 + 2150694912 + name 1_49_KEY_1 + 2150694913 + name 1_49_KEY_2 + 2150694914 + name 1_49_KEY_3 + 2150694915 + name 1_49_KEY_4 + 2150694916 + name 1_49_KEY_5 + 2150694917 + name 1_49_KEY_6 + 2150694918 + name 1_49_KEY_7 + 2150694919 + name 1_49_KEY_8 + 2150694920 + name 1_49_KEY_9 + 2150694921 + name 1_49_KEY_POWER + 2150694922 + name 1_49_KEY_CH_UP + 2150694927 + name 1_49_KEY_CH_DOWN + 2150694928 + name 1_49_KEY_MUTE + 2150694929 + name 1_49_KEY_VOL_DOWN + 2150694930 + name 1_49_KEY_VOL_UP + 2150694932 + name 0_50_KEY_0 + 3276800 + name 0_50_KEY_1 + 3276801 + name 0_50_KEY_2 + 3276802 + name 0_50_KEY_3 + 3276803 + name 0_50_KEY_4 + 3276804 + name 0_50_KEY_5 + 3276805 + name 0_50_KEY_6 + 3276806 + name 0_50_KEY_7 + 3276807 + name 0_50_KEY_8 + 3276808 + name 0_50_KEY_9 + 3276809 + name 0_50_KEY_POWER + 3276810 + name 0_50_KEY_CH_UP + 3276815 + name 0_50_KEY_CH_DOWN + 3276816 + name 0_50_KEY_ENTER + 3276843 + name 1_50_KEY_0 + 2150760448 + name 1_50_KEY_1 + 2150760449 + name 1_50_KEY_2 + 2150760450 + name 1_50_KEY_3 + 2150760451 + name 1_50_KEY_4 + 2150760452 + name 1_50_KEY_5 + 2150760453 + name 1_50_KEY_6 + 2150760454 + name 1_50_KEY_7 + 2150760455 + name 1_50_KEY_8 + 2150760456 + name 1_50_KEY_9 + 2150760457 + name 1_50_KEY_POWER + 2150760458 + name 1_50_KEY_CH_UP + 2150760463 + name 1_50_KEY_CH_DOWN + 2150760464 + name 1_50_CH_PREVIOUS + 2150760467 + name 1_50_KEY_FAV + 2150760477 + name 1_50_KEY_ENTER + 2150760491 + name 0_51_KEY_0 + 3342336 + name 0_51_KEY_1 + 3342337 + name 0_51_KEY_2 + 3342338 + name 0_51_KEY_3 + 3342339 + name 0_51_KEY_4 + 3342340 + name 0_51_KEY_5 + 3342341 + name 0_51_KEY_6 + 3342342 + name 0_51_KEY_7 + 3342343 + name 0_51_KEY_8 + 3342344 + name 0_51_KEY_9 + 3342345 + name 0_51_KEY_POWER + 3342346 + name 0_51_KEY_CH_UP + 3342351 + name 0_51_KEY_CH_DOWN + 3342352 + name 0_51_CH_PREVIOUS + 3342355 + name 0_51_KEY_ENTER + 3342379 + name 1_51_KEY_0 + 2150825984 + name 1_51_KEY_1 + 2150825985 + name 1_51_KEY_2 + 2150825986 + name 1_51_KEY_3 + 2150825987 + name 1_51_KEY_4 + 2150825988 + name 1_51_KEY_5 + 2150825989 + name 1_51_KEY_6 + 2150825990 + name 1_51_KEY_7 + 2150825991 + name 1_51_KEY_8 + 2150825992 + name 1_51_KEY_9 + 2150825993 + name 1_51_KEY_POWER + 2150825994 + name 1_51_KEY_CH_UP + 2150825999 + name 1_51_KEY_CH_DOWN + 2150826000 + name 1_51_KEY_MUTE + 2150826001 + name 1_51_KEY_VOL_DOWN + 2150826002 + name 1_51_KEY_VOL_UP + 2150826004 + name 1_51_KEY_EXIT + 2150826008 + name 1_51_KEY_CKU + 2150826024 + name 1_51_KEY_AV + 2150826025 + name 1_51_KEY_SAT + 2150826026 + name 1_51_KEY_ENTER + 2150826027 + name 1_51_KEY_MENU + 2150826031 + name 1_51_KEY_MUP + 2150826032 + name 1_51_KEY_MDOWN + 2150826033 + name 1_51_KEY_MLEFT + 2150826034 + name 1_51_KEY_MRIGHT + 2150826035 + name 1_51_KEY_Help + 2150826048 + name 1_51_KEY_Setup + 2150826049 + name 0_52_KEY_0 + 3407872 + name 0_52_KEY_1 + 3407873 + name 0_52_KEY_2 + 3407874 + name 0_52_KEY_3 + 3407875 + name 0_52_KEY_4 + 3407876 + name 0_52_KEY_5 + 3407877 + name 0_52_KEY_6 + 3407878 + name 0_52_KEY_7 + 3407879 + name 0_52_KEY_8 + 3407880 + name 0_52_KEY_9 + 3407881 + name 0_52_KEY_POWER + 3407882 + name 0_52_KEY_CH_UP + 3407887 + name 0_52_KEY_CH_DOWN + 3407888 + name 0_52_CH_PREVIOUS + 3407891 + name 0_52_KEY_ENTER + 3407915 + name 1_52_KEY_0 + 2150891520 + name 1_52_KEY_1 + 2150891521 + name 1_52_KEY_2 + 2150891522 + name 1_52_KEY_3 + 2150891523 + name 1_52_KEY_4 + 2150891524 + name 1_52_KEY_5 + 2150891525 + name 1_52_KEY_6 + 2150891526 + name 1_52_KEY_7 + 2150891527 + name 1_52_KEY_8 + 2150891528 + name 1_52_KEY_9 + 2150891529 + name 1_52_KEY_POWER + 2150891530 + name 1_52_KEY_CH_UP + 2150891535 + name 1_52_KEY_CH_DOWN + 2150891536 + name 1_52_KEY_MUTE + 2150891537 + name 1_52_KEY_VOL_DOWN + 2150891538 + name 1_52_CH_PREVIOUS + 2150891539 + name 1_52_KEY_VOL_UP + 2150891540 + name 1_52_KEY_EXIT + 2150891544 + name 1_52_KEY_FAV + 2150891549 + name 1_52_KEY_SAT + 2150891562 + name 1_52_KEY_ENTER + 2150891563 + name 1_52_KEY_MENU + 2150891567 + name 1_52_KEY_MUP + 2150891568 + name 1_52_KEY_MDOWN + 2150891569 + name 1_52_KEY_MLEFT + 2150891570 + name 1_52_KEY_MRIGHT + 2150891571 + name 1_52_KEY_Help + 2150891584 + name 1_52_KEY_Setup + 2150891585 + name 0_53_KEY_0 + 3473408 + name 0_53_KEY_1 + 3473409 + name 0_53_KEY_2 + 3473410 + name 0_53_KEY_3 + 3473411 + name 0_53_KEY_4 + 3473412 + name 0_53_KEY_5 + 3473413 + name 0_53_KEY_6 + 3473414 + name 0_53_KEY_7 + 3473415 + name 0_53_KEY_8 + 3473416 + name 0_53_KEY_9 + 3473417 + name 0_53_KEY_POWER + 3473418 + name 0_53_KEY_CH_UP + 3473423 + name 0_53_KEY_CH_DOWN + 3473424 + name 0_53_CH_PREVIOUS + 3473427 + name 0_53_KEY_ENTER + 3473451 + name 1_53_KEY_0 + 2150957056 + name 1_53_KEY_1 + 2150957057 + name 1_53_KEY_2 + 2150957058 + name 1_53_KEY_3 + 2150957059 + name 1_53_KEY_4 + 2150957060 + name 1_53_KEY_5 + 2150957061 + name 1_53_KEY_6 + 2150957062 + name 1_53_KEY_7 + 2150957063 + name 1_53_KEY_8 + 2150957064 + name 1_53_KEY_9 + 2150957065 + name 1_53_KEY_POWER + 2150957066 + name 1_53_KEY_CH_UP + 2150957071 + name 1_53_KEY_CH_DOWN + 2150957072 + name 1_53_KEY_MUTE + 2150957073 + name 1_53_KEY_VOL_DOWN + 2150957074 + name 1_53_KEY_VOL_UP + 2150957076 + name 1_53_KEY_EXIT + 2150957080 + name 1_53_KEY_FAV + 2150957085 + name 1_53_KEY_SAT + 2150957098 + name 1_53_KEY_ENTER + 2150957099 + name 1_53_KEY_MENU + 2150957103 + name 1_53_KEY_MUP + 2150957104 + name 1_53_KEY_MDOWN + 2150957105 + name 1_53_KEY_MLEFT + 2150957106 + name 1_53_KEY_MRIGHT + 2150957107 + name 1_53_KEY_Help + 2150957120 + name 1_53_KEY_Setup + 2150957121 + name 0_54_KEY_0 + 3538944 + name 0_54_KEY_1 + 3538945 + name 0_54_KEY_2 + 3538946 + name 0_54_KEY_3 + 3538947 + name 0_54_KEY_4 + 3538948 + name 0_54_KEY_5 + 3538949 + name 0_54_KEY_6 + 3538950 + name 0_54_KEY_7 + 3538951 + name 0_54_KEY_8 + 3538952 + name 0_54_KEY_9 + 3538953 + name 0_54_KEY_POWER + 3538954 + name 0_54_KEY_CH_UP + 3538959 + name 0_54_KEY_CH_DOWN + 3538960 + name 0_54_KEY_ENTER + 3538987 + name 1_54_KEY_0 + 2151022592 + name 1_54_KEY_1 + 2151022593 + name 1_54_KEY_2 + 2151022594 + name 1_54_KEY_3 + 2151022595 + name 1_54_KEY_4 + 2151022596 + name 1_54_KEY_5 + 2151022597 + name 1_54_KEY_6 + 2151022598 + name 1_54_KEY_7 + 2151022599 + name 1_54_KEY_8 + 2151022600 + name 1_54_KEY_9 + 2151022601 + name 1_54_KEY_POWER + 2151022602 + name 1_54_KEY_CH_UP + 2151022607 + name 1_54_KEY_CH_DOWN + 2151022608 + name 1_54_KEY_VOL_DOWN + 2151022610 + name 1_54_KEY_VOL_UP + 2151022612 + name 1_54_KEY_CKU + 2151022632 + name 1_54_KEY_ENTER + 2151022635 + name 0_55_KEY_0 + 3604480 + name 0_55_KEY_1 + 3604481 + name 0_55_KEY_2 + 3604482 + name 0_55_KEY_3 + 3604483 + name 0_55_KEY_4 + 3604484 + name 0_55_KEY_5 + 3604485 + name 0_55_KEY_6 + 3604486 + name 0_55_KEY_7 + 3604487 + name 0_55_KEY_8 + 3604488 + name 0_55_KEY_9 + 3604489 + name 0_55_KEY_POWER + 3604490 + name 0_55_KEY_CH_UP + 3604495 + name 0_55_KEY_CH_DOWN + 3604496 + name 0_55_CH_PREVIOUS + 3604499 + name 0_55_KEY_ENTER + 3604523 + name 1_55_KEY_0 + 2151088128 + name 1_55_KEY_1 + 2151088129 + name 1_55_KEY_2 + 2151088130 + name 1_55_KEY_3 + 2151088131 + name 1_55_KEY_4 + 2151088132 + name 1_55_KEY_5 + 2151088133 + name 1_55_KEY_6 + 2151088134 + name 1_55_KEY_7 + 2151088135 + name 1_55_KEY_8 + 2151088136 + name 1_55_KEY_9 + 2151088137 + name 1_55_KEY_POWER + 2151088138 + name 1_55_KEY_CH_UP + 2151088143 + name 1_55_KEY_CH_DOWN + 2151088144 + name 1_55_KEY_MUTE + 2151088145 + name 1_55_KEY_VOL_DOWN + 2151088146 + name 1_55_KEY_VOL_UP + 2151088148 + name 1_55_KEY_DISPLAY + 2151088149 + name 1_55_KEY_CKU + 2151088168 + name 1_55_KEY_SAT + 2151088170 + name 1_55_KEY_ENTER + 2151088171 + name 0_56_KEY_0 + 3670016 + name 0_56_KEY_1 + 3670017 + name 0_56_KEY_2 + 3670018 + name 0_56_KEY_3 + 3670019 + name 0_56_KEY_4 + 3670020 + name 0_56_KEY_5 + 3670021 + name 0_56_KEY_6 + 3670022 + name 0_56_KEY_7 + 3670023 + name 0_56_KEY_8 + 3670024 + name 0_56_KEY_9 + 3670025 + name 0_56_KEY_POWER + 3670026 + name 0_56_KEY_CH_UP + 3670031 + name 0_56_KEY_CH_DOWN + 3670032 + name 0_56_CH_PREVIOUS + 3670035 + name 0_56_KEY_ENTER + 3670059 + name 1_56_KEY_0 + 2151153664 + name 1_56_KEY_1 + 2151153665 + name 1_56_KEY_2 + 2151153666 + name 1_56_KEY_3 + 2151153667 + name 1_56_KEY_4 + 2151153668 + name 1_56_KEY_5 + 2151153669 + name 1_56_KEY_6 + 2151153670 + name 1_56_KEY_7 + 2151153671 + name 1_56_KEY_8 + 2151153672 + name 1_56_KEY_9 + 2151153673 + name 1_56_KEY_POWER + 2151153674 + name 1_56_KEY_CH_UP + 2151153679 + name 1_56_KEY_CH_DOWN + 2151153680 + name 1_56_KEY_VOL_DOWN + 2151153682 + name 1_56_KEY_VOL_UP + 2151153684 + name 0_57_KEY_0 + 3735552 + name 0_57_KEY_1 + 3735553 + name 0_57_KEY_2 + 3735554 + name 0_57_KEY_3 + 3735555 + name 0_57_KEY_4 + 3735556 + name 0_57_KEY_5 + 3735557 + name 0_57_KEY_6 + 3735558 + name 0_57_KEY_7 + 3735559 + name 0_57_KEY_8 + 3735560 + name 0_57_KEY_9 + 3735561 + name 0_57_KEY_POWER + 3735562 + name 0_57_KEY_CH_UP + 3735567 + name 0_57_KEY_CH_DOWN + 3735568 + name 0_57_CH_PREVIOUS + 3735571 + name 0_57_KEY_ENTER + 3735595 + name 1_57_KEY_0 + 2151219200 + name 1_57_KEY_1 + 2151219201 + name 1_57_KEY_2 + 2151219202 + name 1_57_KEY_3 + 2151219203 + name 1_57_KEY_4 + 2151219204 + name 1_57_KEY_5 + 2151219205 + name 1_57_KEY_6 + 2151219206 + name 1_57_KEY_7 + 2151219207 + name 1_57_KEY_8 + 2151219208 + name 1_57_KEY_9 + 2151219209 + name 1_57_KEY_POWER + 2151219210 + name 1_57_KEY_CH_UP + 2151219215 + name 1_57_KEY_CH_DOWN + 2151219216 + name 1_57_KEY_VOL_DOWN + 2151219218 + name 1_57_KEY_VOL_UP + 2151219220 + name 1_57_KEY_DISPLAY + 2151219221 + name 1_57_KEY_FAV + 2151219229 + name 1_57_KEY_CKU + 2151219240 + name 1_57_KEY_ENTER + 2151219243 + name 0_58_KEY_0 + 3801088 + name 0_58_KEY_1 + 3801089 + name 0_58_KEY_2 + 3801090 + name 0_58_KEY_3 + 3801091 + name 0_58_KEY_4 + 3801092 + name 0_58_KEY_5 + 3801093 + name 0_58_KEY_6 + 3801094 + name 0_58_KEY_7 + 3801095 + name 0_58_KEY_8 + 3801096 + name 0_58_KEY_9 + 3801097 + name 0_58_KEY_POWER + 3801098 + name 0_58_KEY_CH_UP + 3801103 + name 0_58_KEY_CH_DOWN + 3801104 + name 0_58_CH_PREVIOUS + 3801107 + name 0_58_KEY_ENTER + 3801131 + name 1_58_KEY_0 + 2151284736 + name 1_58_KEY_1 + 2151284737 + name 1_58_KEY_2 + 2151284738 + name 1_58_KEY_3 + 2151284739 + name 1_58_KEY_4 + 2151284740 + name 1_58_KEY_5 + 2151284741 + name 1_58_KEY_6 + 2151284742 + name 1_58_KEY_7 + 2151284743 + name 1_58_KEY_8 + 2151284744 + name 1_58_KEY_9 + 2151284745 + name 1_58_KEY_POWER + 2151284746 + name 1_58_KEY_CH_UP + 2151284751 + name 1_58_KEY_CH_DOWN + 2151284752 + name 1_58_KEY_MUTE + 2151284753 + name 1_58_KEY_VOL_DOWN + 2151284754 + name 1_58_CH_PREVIOUS + 2151284755 + name 1_58_KEY_VOL_UP + 2151284756 + name 1_58_KEY_ENTER + 2151284779 + name 1_58_KEY_MENU + 2151284783 + name 1_58_KEY_MUP + 2151284784 + name 1_58_KEY_MDOWN + 2151284785 + name 1_58_KEY_MLEFT + 2151284786 + name 1_58_KEY_MRIGHT + 2151284787 + name 0_59_KEY_0 + 3866624 + name 0_59_KEY_1 + 3866625 + name 0_59_KEY_2 + 3866626 + name 0_59_KEY_3 + 3866627 + name 0_59_KEY_4 + 3866628 + name 0_59_KEY_5 + 3866629 + name 0_59_KEY_6 + 3866630 + name 0_59_KEY_7 + 3866631 + name 0_59_KEY_8 + 3866632 + name 0_59_KEY_9 + 3866633 + name 0_59_KEY_POWER + 3866634 + name 0_59_KEY_CH_UP + 3866639 + name 0_59_KEY_CH_DOWN + 3866640 + name 0_59_CH_PREVIOUS + 3866643 + name 0_59_KEY_ENTER + 3866667 + name 1_59_KEY_0 + 2151350272 + name 1_59_KEY_1 + 2151350273 + name 1_59_KEY_2 + 2151350274 + name 1_59_KEY_3 + 2151350275 + name 1_59_KEY_4 + 2151350276 + name 1_59_KEY_5 + 2151350277 + name 1_59_KEY_6 + 2151350278 + name 1_59_KEY_7 + 2151350279 + name 1_59_KEY_8 + 2151350280 + name 1_59_KEY_9 + 2151350281 + name 1_59_KEY_POWER + 2151350282 + name 1_59_KEY_CH_UP + 2151350287 + name 1_59_KEY_CH_DOWN + 2151350288 + name 1_59_KEY_VOL_DOWN + 2151350290 + name 1_59_CH_PREVIOUS + 2151350291 + name 1_59_KEY_VOL_UP + 2151350292 + name 1_59_KEY_SELECT + 2151350302 + name 1_59_KEY_ENTER + 2151350315 + name 0_60_KEY_0 + 3932160 + name 0_60_KEY_1 + 3932161 + name 0_60_KEY_2 + 3932162 + name 0_60_KEY_3 + 3932163 + name 0_60_KEY_4 + 3932164 + name 0_60_KEY_5 + 3932165 + name 0_60_KEY_6 + 3932166 + name 0_60_KEY_7 + 3932167 + name 0_60_KEY_8 + 3932168 + name 0_60_KEY_9 + 3932169 + name 0_60_KEY_POWER + 3932170 + name 0_60_KEY_CH_UP + 3932175 + name 0_60_KEY_CH_DOWN + 3932176 + name 1_60_KEY_0 + 2151415808 + name 1_60_KEY_1 + 2151415809 + name 1_60_KEY_2 + 2151415810 + name 1_60_KEY_3 + 2151415811 + name 1_60_KEY_4 + 2151415812 + name 1_60_KEY_5 + 2151415813 + name 1_60_KEY_6 + 2151415814 + name 1_60_KEY_7 + 2151415815 + name 1_60_KEY_8 + 2151415816 + name 1_60_KEY_9 + 2151415817 + name 1_60_KEY_POWER + 2151415818 + name 1_60_KEY_CH_UP + 2151415823 + name 1_60_KEY_CH_DOWN + 2151415824 + name 1_60_KEY_MUTE + 2151415825 + name 1_60_KEY_VOL_DOWN + 2151415826 + name 1_60_KEY_VOL_UP + 2151415828 + name 1_60_KEY_EXIT + 2151415832 + name 1_60_KEY_CKU + 2151415848 + name 1_60_KEY_ENTER + 2151415851 + name 1_60_KEY_MENU + 2151415855 + name 1_60_KEY_MUP + 2151415856 + name 1_60_KEY_MDOWN + 2151415857 + name 1_60_KEY_MLEFT + 2151415858 + name 1_60_KEY_MRIGHT + 2151415859 + name 1_60_KEY_Help + 2151415872 + name 1_60_KEY_Setup + 2151415873 + name 0_61_KEY_0 + 3997696 + name 0_61_KEY_1 + 3997697 + name 0_61_KEY_2 + 3997698 + name 0_61_KEY_3 + 3997699 + name 0_61_KEY_4 + 3997700 + name 0_61_KEY_5 + 3997701 + name 0_61_KEY_6 + 3997702 + name 0_61_KEY_7 + 3997703 + name 0_61_KEY_8 + 3997704 + name 0_61_KEY_9 + 3997705 + name 0_61_KEY_POWER + 3997706 + name 0_61_KEY_CH_UP + 3997711 + name 0_61_KEY_CH_DOWN + 3997712 + name 0_61_CH_PREVIOUS + 3997715 + name 0_61_KEY_ENTER + 3997739 + name 1_61_KEY_0 + 2151481344 + name 1_61_KEY_1 + 2151481345 + name 1_61_KEY_2 + 2151481346 + name 1_61_KEY_3 + 2151481347 + name 1_61_KEY_4 + 2151481348 + name 1_61_KEY_5 + 2151481349 + name 1_61_KEY_6 + 2151481350 + name 1_61_KEY_7 + 2151481351 + name 1_61_KEY_8 + 2151481352 + name 1_61_KEY_9 + 2151481353 + name 1_61_KEY_POWER + 2151481354 + name 1_61_KEY_CH_UP + 2151481359 + name 1_61_KEY_CH_DOWN + 2151481360 + name 1_61_KEY_MUTE + 2151481361 + name 1_61_KEY_VOL_DOWN + 2151481362 + name 1_61_KEY_VOL_UP + 2151481364 + name 1_61_KEY_DISPLAY + 2151481365 + name 1_61_KEY_FAV + 2151481373 + name 1_61_KEY_CKU + 2151481384 + name 1_61_KEY_ENTER + 2151481387 + name 0_62_KEY_0 + 4063232 + name 0_62_KEY_1 + 4063233 + name 0_62_KEY_2 + 4063234 + name 0_62_KEY_3 + 4063235 + name 0_62_KEY_4 + 4063236 + name 0_62_KEY_5 + 4063237 + name 0_62_KEY_6 + 4063238 + name 0_62_KEY_7 + 4063239 + name 0_62_KEY_8 + 4063240 + name 0_62_KEY_9 + 4063241 + name 0_62_KEY_POWER + 4063242 + name 0_62_KEY_CH_UP + 4063247 + name 0_62_KEY_CH_DOWN + 4063248 + name 0_62_CH_PREVIOUS + 4063251 + name 0_62_KEY_ENTER + 4063275 + name 1_62_KEY_0 + 2151546880 + name 1_62_KEY_1 + 2151546881 + name 1_62_KEY_2 + 2151546882 + name 1_62_KEY_3 + 2151546883 + name 1_62_KEY_4 + 2151546884 + name 1_62_KEY_5 + 2151546885 + name 1_62_KEY_6 + 2151546886 + name 1_62_KEY_7 + 2151546887 + name 1_62_KEY_8 + 2151546888 + name 1_62_KEY_9 + 2151546889 + name 1_62_KEY_POWER + 2151546890 + name 1_62_KEY_MUTE + 2151546897 + name 1_62_KEY_VOL_DOWN + 2151546898 + name 1_62_KEY_VOL_UP + 2151546900 + name 1_62_KEY_FAV + 2151546909 + name 1_62_KEY_SELECT + 2151546910 + name 1_62_KEY_SAT + 2151546922 + name 0_63_KEY_0 + 4128768 + name 0_63_KEY_1 + 4128769 + name 0_63_KEY_2 + 4128770 + name 0_63_KEY_3 + 4128771 + name 0_63_KEY_4 + 4128772 + name 0_63_KEY_5 + 4128773 + name 0_63_KEY_6 + 4128774 + name 0_63_KEY_7 + 4128775 + name 0_63_KEY_8 + 4128776 + name 0_63_KEY_9 + 4128777 + name 0_63_KEY_POWER + 4128778 + name 0_63_KEY_CH_UP + 4128783 + name 0_63_KEY_CH_DOWN + 4128784 + name 0_63_CH_PREVIOUS + 4128787 + name 0_63_KEY_ENTER + 4128811 + name 1_63_KEY_POWER + 2151612426 + name 1_63_KEY_CH_UP + 2151612431 + name 1_63_KEY_CH_DOWN + 2151612432 + name 1_63_KEY_VOL_DOWN + 2151612434 + name 1_63_CH_PREVIOUS + 2151612435 + name 1_63_KEY_VOL_UP + 2151612436 + name 0_64_KEY_0 + 4194304 + name 0_64_KEY_1 + 4194305 + name 0_64_KEY_2 + 4194306 + name 0_64_KEY_3 + 4194307 + name 0_64_KEY_4 + 4194308 + name 0_64_KEY_5 + 4194309 + name 0_64_KEY_6 + 4194310 + name 0_64_KEY_7 + 4194311 + name 0_64_KEY_8 + 4194312 + name 0_64_KEY_9 + 4194313 + name 0_64_KEY_POWER + 4194314 + name 0_64_KEY_CH_UP + 4194319 + name 0_64_KEY_CH_DOWN + 4194320 + name 0_64_CH_PREVIOUS + 4194323 + name 0_64_KEY_ENTER + 4194347 + name 1_64_KEY_POWER + 2151677962 + name 1_64_KEY_CH_UP + 2151677967 + name 1_64_KEY_CH_DOWN + 2151677968 + name 1_64_KEY_MUTE + 2151677969 + name 1_64_KEY_VOL_DOWN + 2151677970 + name 1_64_KEY_VOL_UP + 2151677972 + name 1_64_KEY_ENTER + 2151677995 + name 0_65_KEY_0 + 4259840 + name 0_65_KEY_1 + 4259841 + name 0_65_KEY_2 + 4259842 + name 0_65_KEY_3 + 4259843 + name 0_65_KEY_4 + 4259844 + name 0_65_KEY_5 + 4259845 + name 0_65_KEY_6 + 4259846 + name 0_65_KEY_7 + 4259847 + name 0_65_KEY_8 + 4259848 + name 0_65_KEY_9 + 4259849 + name 0_65_KEY_POWER + 4259850 + name 0_65_KEY_CH_UP + 4259855 + name 0_65_KEY_CH_DOWN + 4259856 + name 0_65_CH_PREVIOUS + 4259859 + name 0_65_KEY_ENTER + 4259883 + name 1_65_KEY_0 + 2151743488 + name 1_65_KEY_1 + 2151743489 + name 1_65_KEY_2 + 2151743490 + name 1_65_KEY_3 + 2151743491 + name 1_65_KEY_4 + 2151743492 + name 1_65_KEY_5 + 2151743493 + name 1_65_KEY_6 + 2151743494 + name 1_65_KEY_7 + 2151743495 + name 1_65_KEY_8 + 2151743496 + name 1_65_KEY_9 + 2151743497 + name 1_65_KEY_POWER + 2151743498 + name 1_65_KEY_CH_UP + 2151743503 + name 1_65_KEY_CH_DOWN + 2151743504 + name 1_65_KEY_MUTE + 2151743505 + name 1_65_KEY_VOL_DOWN + 2151743506 + name 1_65_KEY_VOL_UP + 2151743508 + name 1_65_KEY_CKU + 2151743528 + name 1_65_KEY_SAT + 2151743530 + name 0_66_KEY_0 + 4325376 + name 0_66_KEY_1 + 4325377 + name 0_66_KEY_2 + 4325378 + name 0_66_KEY_3 + 4325379 + name 0_66_KEY_4 + 4325380 + name 0_66_KEY_5 + 4325381 + name 0_66_KEY_6 + 4325382 + name 0_66_KEY_7 + 4325383 + name 0_66_KEY_8 + 4325384 + name 0_66_KEY_9 + 4325385 + name 0_66_KEY_POWER + 4325386 + name 0_66_KEY_CH_UP + 4325391 + name 0_66_KEY_CH_DOWN + 4325392 + name 0_66_KEY_ENTER + 4325419 + name 1_66_KEY_0 + 2151809024 + name 1_66_KEY_1 + 2151809025 + name 1_66_KEY_2 + 2151809026 + name 1_66_KEY_3 + 2151809027 + name 1_66_KEY_4 + 2151809028 + name 1_66_KEY_5 + 2151809029 + name 1_66_KEY_6 + 2151809030 + name 1_66_KEY_7 + 2151809031 + name 1_66_KEY_8 + 2151809032 + name 1_66_KEY_9 + 2151809033 + name 1_66_KEY_POWER + 2151809034 + name 1_66_KEY_CH_UP + 2151809039 + name 1_66_KEY_CH_DOWN + 2151809040 + name 1_66_KEY_MUTE + 2151809041 + name 1_66_KEY_VOL_DOWN + 2151809042 + name 1_66_KEY_VOL_UP + 2151809044 + name 1_66_KEY_EXIT + 2151809048 + name 1_66_KEY_FAV + 2151809053 + name 1_66_KEY_C + 2151809063 + name 1_66_KEY_SAT + 2151809066 + name 1_66_KEY_ENTER + 2151809067 + name 1_66_KEY_MENU + 2151809071 + name 1_66_KEY_MUP + 2151809072 + name 1_66_KEY_MDOWN + 2151809073 + name 1_66_KEY_MLEFT + 2151809074 + name 1_66_KEY_MRIGHT + 2151809075 + name 1_66_KEY_Help + 2151809088 + name 1_66_KEY_Setup + 2151809089 + name 0_67_KEY_0 + 4390912 + name 0_67_KEY_1 + 4390913 + name 0_67_KEY_2 + 4390914 + name 0_67_KEY_3 + 4390915 + name 0_67_KEY_4 + 4390916 + name 0_67_KEY_5 + 4390917 + name 0_67_KEY_6 + 4390918 + name 0_67_KEY_7 + 4390919 + name 0_67_KEY_8 + 4390920 + name 0_67_KEY_9 + 4390921 + name 0_67_KEY_POWER + 4390922 + name 0_67_KEY_CH_UP + 4390927 + name 0_67_KEY_CH_DOWN + 4390928 + name 0_67_CH_PREVIOUS + 4390931 + name 0_67_KEY_ENTER + 4390955 + name 1_67_KEY_0 + 2151874560 + name 1_67_KEY_1 + 2151874561 + name 1_67_KEY_2 + 2151874562 + name 1_67_KEY_3 + 2151874563 + name 1_67_KEY_4 + 2151874564 + name 1_67_KEY_5 + 2151874565 + name 1_67_KEY_6 + 2151874566 + name 1_67_KEY_7 + 2151874567 + name 1_67_KEY_8 + 2151874568 + name 1_67_KEY_9 + 2151874569 + name 1_67_KEY_POWER + 2151874570 + name 1_67_KEY_CH_UP + 2151874575 + name 1_67_KEY_CH_DOWN + 2151874576 + name 1_67_CH_PREVIOUS + 2151874579 + name 1_67_KEY_EXIT + 2151874584 + name 1_67_KEY_GUIDE + 2151874587 + name 1_67_KEY_FAV + 2151874589 + name 1_67_KEY_SELECT + 2151874590 + name 1_67_KEY_MENU + 2151874607 + name 1_67_KEY_MUP + 2151874608 + name 1_67_KEY_MDOWN + 2151874609 + name 1_67_KEY_MLEFT + 2151874610 + name 1_67_KEY_MRIGHT + 2151874611 + name 0_68_KEY_0 + 4456448 + name 0_68_KEY_1 + 4456449 + name 0_68_KEY_2 + 4456450 + name 0_68_KEY_3 + 4456451 + name 0_68_KEY_4 + 4456452 + name 0_68_KEY_5 + 4456453 + name 0_68_KEY_6 + 4456454 + name 0_68_KEY_7 + 4456455 + name 0_68_KEY_8 + 4456456 + name 0_68_KEY_9 + 4456457 + name 0_68_KEY_POWER + 4456458 + name 0_68_KEY_CH_UP + 4456463 + name 0_68_KEY_CH_DOWN + 4456464 + name 0_68_KEY_ENTER + 4456491 + name 1_68_KEY_0 + 2151940096 + name 1_68_KEY_1 + 2151940097 + name 1_68_KEY_2 + 2151940098 + name 1_68_KEY_3 + 2151940099 + name 1_68_KEY_4 + 2151940100 + name 1_68_KEY_5 + 2151940101 + name 1_68_KEY_6 + 2151940102 + name 1_68_KEY_7 + 2151940103 + name 1_68_KEY_8 + 2151940104 + name 1_68_KEY_9 + 2151940105 + name 1_68_KEY_POWER + 2151940106 + name 1_68_KEY_CH_UP + 2151940111 + name 1_68_KEY_CH_DOWN + 2151940112 + name 1_68_KEY_VOL_DOWN + 2151940114 + name 1_68_KEY_VOL_UP + 2151940116 + name 1_68_KEY_DISPLAY + 2151940117 + name 1_68_KEY_FAV + 2151940125 + name 1_68_KEY_CKU + 2151940136 + name 1_68_KEY_ENTER + 2151940139 + name 0_69_KEY_0 + 4521984 + name 0_69_KEY_1 + 4521985 + name 0_69_KEY_2 + 4521986 + name 0_69_KEY_3 + 4521987 + name 0_69_KEY_4 + 4521988 + name 0_69_KEY_5 + 4521989 + name 0_69_KEY_6 + 4521990 + name 0_69_KEY_7 + 4521991 + name 0_69_KEY_8 + 4521992 + name 0_69_KEY_9 + 4521993 + name 0_69_KEY_POWER + 4521994 + name 0_69_KEY_CH_UP + 4521999 + name 0_69_KEY_CH_DOWN + 4522000 + name 0_69_CH_PREVIOUS + 4522003 + name 0_69_KEY_ENTER + 4522027 + name 1_69_KEY_0 + 2152005632 + name 1_69_KEY_1 + 2152005633 + name 1_69_KEY_2 + 2152005634 + name 1_69_KEY_3 + 2152005635 + name 1_69_KEY_4 + 2152005636 + name 1_69_KEY_5 + 2152005637 + name 1_69_KEY_6 + 2152005638 + name 1_69_KEY_7 + 2152005639 + name 1_69_KEY_8 + 2152005640 + name 1_69_KEY_9 + 2152005641 + name 1_69_KEY_POWER + 2152005642 + name 1_69_KEY_CH_UP + 2152005647 + name 1_69_KEY_CH_DOWN + 2152005648 + name 1_69_KEY_MUTE + 2152005649 + name 1_69_KEY_VOL_DOWN + 2152005650 + name 1_69_KEY_VOL_UP + 2152005652 + name 1_69_KEY_EXIT + 2152005656 + name 1_69_KEY_FAV + 2152005661 + name 1_69_KEY_C + 2152005671 + name 1_69_KEY_ENTER + 2152005675 + name 1_69_KEY_MUP + 2152005680 + name 1_69_KEY_MDOWN + 2152005681 + name 1_69_KEY_MLEFT + 2152005682 + name 1_69_KEY_MRIGHT + 2152005683 + name 1_69_KEY_Help + 2152005696 + name 1_69_KEY_Setup + 2152005697 + name 0_70_KEY_0 + 4587520 + name 0_70_KEY_1 + 4587521 + name 0_70_KEY_2 + 4587522 + name 0_70_KEY_3 + 4587523 + name 0_70_KEY_4 + 4587524 + name 0_70_KEY_5 + 4587525 + name 0_70_KEY_6 + 4587526 + name 0_70_KEY_7 + 4587527 + name 0_70_KEY_8 + 4587528 + name 0_70_KEY_9 + 4587529 + name 0_70_KEY_POWER + 4587530 + name 0_70_KEY_CH_UP + 4587535 + name 0_70_KEY_CH_DOWN + 4587536 + name 0_70_KEY_ENTER + 4587563 + name 1_70_KEY_0 + 2152071168 + name 1_70_KEY_1 + 2152071169 + name 1_70_KEY_2 + 2152071170 + name 1_70_KEY_3 + 2152071171 + name 1_70_KEY_4 + 2152071172 + name 1_70_KEY_5 + 2152071173 + name 1_70_KEY_6 + 2152071174 + name 1_70_KEY_7 + 2152071175 + name 1_70_KEY_8 + 2152071176 + name 1_70_KEY_9 + 2152071177 + name 1_70_KEY_POWER + 2152071178 + name 1_70_KEY_CH_UP + 2152071183 + name 1_70_KEY_CH_DOWN + 2152071184 + name 1_70_KEY_VOL_DOWN + 2152071186 + name 1_70_KEY_VOL_UP + 2152071188 + name 1_70_KEY_DISPLAY + 2152071189 + name 1_70_KEY_CKU + 2152071208 + name 1_70_KEY_SAT + 2152071210 + name 0_71_KEY_0 + 4653056 + name 0_71_KEY_1 + 4653057 + name 0_71_KEY_2 + 4653058 + name 0_71_KEY_3 + 4653059 + name 0_71_KEY_4 + 4653060 + name 0_71_KEY_5 + 4653061 + name 0_71_KEY_6 + 4653062 + name 0_71_KEY_7 + 4653063 + name 0_71_KEY_8 + 4653064 + name 0_71_KEY_9 + 4653065 + name 0_71_KEY_POWER + 4653066 + name 0_71_KEY_CH_UP + 4653071 + name 0_71_KEY_CH_DOWN + 4653072 + name 0_71_KEY_MUTE + 4653073 + name 0_71_KEY_VOL_DOWN + 4653074 + name 0_71_KEY_VOL_UP + 4653076 + name 1_71_KEY_0 + 2152136704 + name 1_71_KEY_1 + 2152136705 + name 1_71_KEY_2 + 2152136706 + name 1_71_KEY_3 + 2152136707 + name 1_71_KEY_4 + 2152136708 + name 1_71_KEY_5 + 2152136709 + name 1_71_KEY_6 + 2152136710 + name 1_71_KEY_7 + 2152136711 + name 1_71_KEY_8 + 2152136712 + name 1_71_KEY_9 + 2152136713 + name 1_71_KEY_POWER + 2152136714 + name 1_71_KEY_MUTE + 2152136721 + name 1_71_KEY_VOL_DOWN + 2152136722 + name 1_71_KEY_VOL_UP + 2152136724 + name 1_71_KEY_CKU + 2152136744 + name 0_72_KEY_0 + 4718592 + name 0_72_KEY_1 + 4718593 + name 0_72_KEY_2 + 4718594 + name 0_72_KEY_3 + 4718595 + name 0_72_KEY_4 + 4718596 + name 0_72_KEY_5 + 4718597 + name 0_72_KEY_6 + 4718598 + name 0_72_KEY_7 + 4718599 + name 0_72_KEY_8 + 4718600 + name 0_72_KEY_9 + 4718601 + name 0_72_KEY_POWER + 4718602 + name 0_72_KEY_CH_UP + 4718607 + name 0_72_KEY_CH_DOWN + 4718608 + name 0_72_KEY_MUTE + 4718609 + name 0_72_KEY_VOL_DOWN + 4718610 + name 0_72_CH_PREVIOUS + 4718611 + name 0_72_KEY_VOL_UP + 4718612 + name 0_72_KEY_DISPLAY + 4718613 + name 0_72_KEY_EXIT + 4718616 + name 0_72_KEY_INPUT + 4718618 + name 0_72_KEY_GUIDE + 4718619 + name 0_72_KEY_FAV + 4718621 + name 0_72_KEY_ENTER + 4718635 + name 0_72_KEY_MENU + 4718639 + name 0_72_KEY_MUP + 4718640 + name 0_72_KEY_MDOWN + 4718641 + name 0_72_KEY_MLEFT + 4718642 + name 0_72_KEY_MRIGHT + 4718643 + name 0_72_KEY_FF + 4718644 + name 0_72_KEY_PLAY + 4718645 + name 0_72_KEY_REW + 4718646 + name 0_72_KEY_REC + 4718647 + name 0_72_KEY_PAUSE + 4718648 + name 0_72_KEY_STOP + 4718649 + name 1_72_KEY_0 + 2152202240 + name 1_72_KEY_1 + 2152202241 + name 1_72_KEY_2 + 2152202242 + name 1_72_KEY_3 + 2152202243 + name 1_72_KEY_4 + 2152202244 + name 1_72_KEY_5 + 2152202245 + name 1_72_KEY_6 + 2152202246 + name 1_72_KEY_7 + 2152202247 + name 1_72_KEY_8 + 2152202248 + name 1_72_KEY_9 + 2152202249 + name 1_72_KEY_POWER + 2152202250 + name 1_72_KEY_CH_UP + 2152202255 + name 1_72_KEY_CH_DOWN + 2152202256 + name 1_72_KEY_MUTE + 2152202257 + name 1_72_KEY_VOL_DOWN + 2152202258 + name 1_72_KEY_VOL_UP + 2152202260 + name 1_72_KEY_DISPLAY + 2152202261 + name 1_72_KEY_FAV + 2152202269 + name 1_72_KEY_CKU + 2152202280 + name 1_72_KEY_ENTER + 2152202283 + name 0_73_KEY_0 + 4784128 + name 0_73_KEY_1 + 4784129 + name 0_73_KEY_2 + 4784130 + name 0_73_KEY_3 + 4784131 + name 0_73_KEY_4 + 4784132 + name 0_73_KEY_5 + 4784133 + name 0_73_KEY_6 + 4784134 + name 0_73_KEY_7 + 4784135 + name 0_73_KEY_8 + 4784136 + name 0_73_KEY_9 + 4784137 + name 0_73_KEY_POWER + 4784138 + name 0_73_KEY_CH_UP + 4784143 + name 0_73_KEY_CH_DOWN + 4784144 + name 0_73_KEY_MUTE + 4784145 + name 0_73_KEY_VOL_DOWN + 4784146 + name 0_73_KEY_VOL_UP + 4784148 + name 0_73_KEY_DISPLAY + 4784149 + name 0_73_KEY_MNSELECT + 4784151 + name 0_73_KEY_GUIDE + 4784155 + name 0_73_KEY_FAV + 4784157 + name 0_73_KEY_ENTER + 4784171 + name 0_73_KEY_MENU + 4784175 + name 0_73_KEY_MUP + 4784176 + name 0_73_KEY_MDOWN + 4784177 + name 0_73_KEY_MLEFT + 4784178 + name 0_73_KEY_MRIGHT + 4784179 + name 1_73_KEY_0 + 2152267776 + name 1_73_KEY_1 + 2152267777 + name 1_73_KEY_2 + 2152267778 + name 1_73_KEY_3 + 2152267779 + name 1_73_KEY_4 + 2152267780 + name 1_73_KEY_5 + 2152267781 + name 1_73_KEY_6 + 2152267782 + name 1_73_KEY_7 + 2152267783 + name 1_73_KEY_8 + 2152267784 + name 1_73_KEY_9 + 2152267785 + name 1_73_KEY_POWER + 2152267786 + name 1_73_KEY_CH_UP + 2152267791 + name 1_73_KEY_CH_DOWN + 2152267792 + name 1_73_KEY_FAV + 2152267805 + name 0_74_KEY_0 + 4849664 + name 0_74_KEY_1 + 4849665 + name 0_74_KEY_2 + 4849666 + name 0_74_KEY_3 + 4849667 + name 0_74_KEY_4 + 4849668 + name 0_74_KEY_5 + 4849669 + name 0_74_KEY_6 + 4849670 + name 0_74_KEY_7 + 4849671 + name 0_74_KEY_8 + 4849672 + name 0_74_KEY_9 + 4849673 + name 0_74_KEY_POWER + 4849674 + name 0_74_KEY_CH_UP + 4849679 + name 0_74_KEY_CH_DOWN + 4849680 + name 0_74_KEY_MUTE + 4849681 + name 0_74_KEY_VOL_DOWN + 4849682 + name 0_74_KEY_VOL_UP + 4849684 + name 0_74_KEY_MENU + 4849711 + name 0_74_KEY_MUP + 4849712 + name 0_74_KEY_MDOWN + 4849713 + name 0_74_KEY_MLEFT + 4849714 + name 0_74_KEY_MRIGHT + 4849715 + name 1_74_KEY_0 + 2152333312 + name 1_74_KEY_1 + 2152333313 + name 1_74_KEY_2 + 2152333314 + name 1_74_KEY_3 + 2152333315 + name 1_74_KEY_4 + 2152333316 + name 1_74_KEY_5 + 2152333317 + name 1_74_KEY_6 + 2152333318 + name 1_74_KEY_7 + 2152333319 + name 1_74_KEY_8 + 2152333320 + name 1_74_KEY_9 + 2152333321 + name 1_74_KEY_POWER + 2152333322 + name 1_74_KEY_CH_UP + 2152333327 + name 1_74_KEY_CH_DOWN + 2152333328 + name 1_74_KEY_MUTE + 2152333329 + name 1_74_KEY_VOL_DOWN + 2152333330 + name 1_74_KEY_VOL_UP + 2152333332 + name 1_74_KEY_FAV + 2152333341 + name 1_74_KEY_SAT + 2152333354 + name 1_74_KEY_ENTER + 2152333355 + name 0_75_KEY_0 + 4915200 + name 0_75_KEY_1 + 4915201 + name 0_75_KEY_2 + 4915202 + name 0_75_KEY_3 + 4915203 + name 0_75_KEY_4 + 4915204 + name 0_75_KEY_5 + 4915205 + name 0_75_KEY_6 + 4915206 + name 0_75_KEY_7 + 4915207 + name 0_75_KEY_8 + 4915208 + name 0_75_KEY_9 + 4915209 + name 0_75_KEY_POWER + 4915210 + name 0_75_KEY_CH_UP + 4915215 + name 0_75_KEY_CH_DOWN + 4915216 + name 0_75_KEY_MUTE + 4915217 + name 0_75_KEY_VOL_DOWN + 4915218 + name 0_75_KEY_VOL_UP + 4915220 + name 0_75_KEY_MUP + 4915248 + name 0_75_KEY_MDOWN + 4915249 + name 0_75_KEY_MLEFT + 4915250 + name 0_75_KEY_MRIGHT + 4915251 + name 1_75_KEY_0 + 2152398848 + name 1_75_KEY_1 + 2152398849 + name 1_75_KEY_2 + 2152398850 + name 1_75_KEY_3 + 2152398851 + name 1_75_KEY_4 + 2152398852 + name 1_75_KEY_5 + 2152398853 + name 1_75_KEY_6 + 2152398854 + name 1_75_KEY_7 + 2152398855 + name 1_75_KEY_8 + 2152398856 + name 1_75_KEY_9 + 2152398857 + name 1_75_KEY_FAV + 2152398877 + name 1_75_KEY_ENTER + 2152398891 + name 0_76_KEY_0 + 4980736 + name 0_76_KEY_1 + 4980737 + name 0_76_KEY_2 + 4980738 + name 0_76_KEY_3 + 4980739 + name 0_76_KEY_4 + 4980740 + name 0_76_KEY_5 + 4980741 + name 0_76_KEY_6 + 4980742 + name 0_76_KEY_7 + 4980743 + name 0_76_KEY_8 + 4980744 + name 0_76_KEY_9 + 4980745 + name 0_76_KEY_POWER + 4980746 + name 0_76_KEY_CH_UP + 4980751 + name 0_76_KEY_CH_DOWN + 4980752 + name 0_76_KEY_MUTE + 4980753 + name 0_76_KEY_VOL_DOWN + 4980754 + name 0_76_KEY_VOL_UP + 4980756 + name 0_76_KEY_MENU + 4980783 + name 0_76_KEY_MUP + 4980784 + name 0_76_KEY_MDOWN + 4980785 + name 0_76_KEY_MLEFT + 4980786 + name 0_76_KEY_MRIGHT + 4980787 + name 1_76_KEY_0 + 2152464384 + name 1_76_KEY_1 + 2152464385 + name 1_76_KEY_2 + 2152464386 + name 1_76_KEY_3 + 2152464387 + name 1_76_KEY_4 + 2152464388 + name 1_76_KEY_5 + 2152464389 + name 1_76_KEY_6 + 2152464390 + name 1_76_KEY_7 + 2152464391 + name 1_76_KEY_8 + 2152464392 + name 1_76_KEY_9 + 2152464393 + name 1_76_KEY_POWER + 2152464394 + name 1_76_KEY_CH_UP + 2152464399 + name 1_76_KEY_CH_DOWN + 2152464400 + name 1_76_KEY_MUTE + 2152464401 + name 1_76_KEY_VOL_DOWN + 2152464402 + name 1_76_KEY_VOL_UP + 2152464404 + name 1_76_KEY_DISPLAY + 2152464405 + name 1_76_KEY_CKU + 2152464424 + name 1_76_KEY_SAT + 2152464426 + name 1_76_KEY_ENTER + 2152464427 + name 0_77_KEY_0 + 5046272 + name 0_77_KEY_1 + 5046273 + name 0_77_KEY_2 + 5046274 + name 0_77_KEY_3 + 5046275 + name 0_77_KEY_4 + 5046276 + name 0_77_KEY_5 + 5046277 + name 0_77_KEY_6 + 5046278 + name 0_77_KEY_7 + 5046279 + name 0_77_KEY_8 + 5046280 + name 0_77_KEY_9 + 5046281 + name 0_77_KEY_POWER + 5046282 + name 0_77_KEY_MUTE + 5046289 + name 0_77_KEY_MNSELECT + 5046295 + name 0_77_KEY_MENU + 5046319 + name 0_77_KEY_MUP + 5046320 + name 0_77_KEY_MDOWN + 5046321 + name 0_77_KEY_MLEFT + 5046322 + name 0_77_KEY_MRIGHT + 5046323 + name 1_77_KEY_0 + 2152529920 + name 1_77_KEY_1 + 2152529921 + name 1_77_KEY_2 + 2152529922 + name 1_77_KEY_3 + 2152529923 + name 1_77_KEY_4 + 2152529924 + name 1_77_KEY_5 + 2152529925 + name 1_77_KEY_6 + 2152529926 + name 1_77_KEY_7 + 2152529927 + name 1_77_KEY_8 + 2152529928 + name 1_77_KEY_9 + 2152529929 + name 1_77_KEY_POWER + 2152529930 + name 1_77_KEY_CH_UP + 2152529935 + name 1_77_KEY_CH_DOWN + 2152529936 + name 1_77_KEY_MUTE + 2152529937 + name 1_77_KEY_VOL_DOWN + 2152529938 + name 1_77_CH_PREVIOUS + 2152529939 + name 1_77_KEY_VOL_UP + 2152529940 + name 1_77_KEY_EXIT + 2152529944 + name 1_77_KEY_FAV + 2152529949 + name 1_77_KEY_SAT + 2152529962 + name 1_77_KEY_ENTER + 2152529963 + name 1_77_KEY_MENU + 2152529967 + name 1_77_KEY_MUP + 2152529968 + name 1_77_KEY_MDOWN + 2152529969 + name 1_77_KEY_MLEFT + 2152529970 + name 1_77_KEY_MRIGHT + 2152529971 + name 1_77_KEY_Help + 2152529984 + name 1_77_KEY_Setup + 2152529985 + name 0_78_KEY_0 + 5111808 + name 0_78_KEY_1 + 5111809 + name 0_78_KEY_2 + 5111810 + name 0_78_KEY_3 + 5111811 + name 0_78_KEY_4 + 5111812 + name 0_78_KEY_5 + 5111813 + name 0_78_KEY_6 + 5111814 + name 0_78_KEY_7 + 5111815 + name 0_78_KEY_8 + 5111816 + name 0_78_KEY_9 + 5111817 + name 0_78_KEY_POWER + 5111818 + name 0_78_KEY_CH_UP + 5111823 + name 0_78_KEY_CH_DOWN + 5111824 + name 0_78_KEY_MUTE + 5111825 + name 0_78_KEY_VOL_DOWN + 5111826 + name 0_78_KEY_VOL_UP + 5111828 + name 0_78_KEY_MUP + 5111856 + name 0_78_KEY_MDOWN + 5111857 + name 0_78_KEY_MLEFT + 5111858 + name 0_78_KEY_MRIGHT + 5111859 + name 1_78_KEY_0 + 2152595456 + name 1_78_KEY_1 + 2152595457 + name 1_78_KEY_2 + 2152595458 + name 1_78_KEY_3 + 2152595459 + name 1_78_KEY_4 + 2152595460 + name 1_78_KEY_5 + 2152595461 + name 1_78_KEY_6 + 2152595462 + name 1_78_KEY_7 + 2152595463 + name 1_78_KEY_8 + 2152595464 + name 1_78_KEY_9 + 2152595465 + name 1_78_KEY_POWER + 2152595466 + name 1_78_KEY_CH_UP + 2152595471 + name 1_78_KEY_CH_DOWN + 2152595472 + name 1_78_KEY_MUTE + 2152595473 + name 1_78_KEY_VOL_DOWN + 2152595474 + name 1_78_CH_PREVIOUS + 2152595475 + name 1_78_KEY_VOL_UP + 2152595476 + name 1_78_KEY_DISPLAY + 2152595477 + name 1_78_KEY_FAV + 2152595485 + name 1_78_KEY_ENTER + 2152595499 + name 0_79_KEY_0 + 5177344 + name 0_79_KEY_1 + 5177345 + name 0_79_KEY_2 + 5177346 + name 0_79_KEY_3 + 5177347 + name 0_79_KEY_4 + 5177348 + name 0_79_KEY_5 + 5177349 + name 0_79_KEY_6 + 5177350 + name 0_79_KEY_7 + 5177351 + name 0_79_KEY_8 + 5177352 + name 0_79_KEY_9 + 5177353 + name 0_79_KEY_POWER + 5177354 + name 0_79_KEY_CH_UP + 5177359 + name 0_79_KEY_CH_DOWN + 5177360 + name 0_79_KEY_MNSELECT + 5177367 + name 0_79_KEY_MENU + 5177391 + name 0_79_KEY_MUP + 5177392 + name 0_79_KEY_MDOWN + 5177393 + name 0_79_KEY_MLEFT + 5177394 + name 0_79_KEY_MRIGHT + 5177395 + name 1_79_KEY_0 + 2152660992 + name 1_79_KEY_1 + 2152660993 + name 1_79_KEY_2 + 2152660994 + name 1_79_KEY_3 + 2152660995 + name 1_79_KEY_4 + 2152660996 + name 1_79_KEY_5 + 2152660997 + name 1_79_KEY_6 + 2152660998 + name 1_79_KEY_7 + 2152660999 + name 1_79_KEY_8 + 2152661000 + name 1_79_KEY_9 + 2152661001 + name 1_79_KEY_POWER + 2152661002 + name 1_79_KEY_CH_UP + 2152661007 + name 1_79_KEY_CH_DOWN + 2152661008 + name 1_79_KEY_MUTE + 2152661009 + name 1_79_KEY_VOL_DOWN + 2152661010 + name 1_79_KEY_VOL_UP + 2152661012 + name 1_79_KEY_FAV + 2152661021 + name 1_79_KEY_ENTER + 2152661035 + name 0_80_KEY_0 + 5242880 + name 0_80_KEY_1 + 5242881 + name 0_80_KEY_2 + 5242882 + name 0_80_KEY_3 + 5242883 + name 0_80_KEY_4 + 5242884 + name 0_80_KEY_5 + 5242885 + name 0_80_KEY_6 + 5242886 + name 0_80_KEY_7 + 5242887 + name 0_80_KEY_8 + 5242888 + name 0_80_KEY_9 + 5242889 + name 0_80_KEY_POWER + 5242890 + name 0_80_KEY_CH_UP + 5242895 + name 0_80_KEY_CH_DOWN + 5242896 + name 0_80_KEY_MUTE + 5242897 + name 0_80_KEY_VOL_DOWN + 5242898 + name 0_80_KEY_VOL_UP + 5242900 + name 0_80_KEY_MNSELECT + 5242903 + name 0_80_KEY_MENU + 5242927 + name 0_80_KEY_MUP + 5242928 + name 0_80_KEY_MDOWN + 5242929 + name 0_80_KEY_MLEFT + 5242930 + name 0_80_KEY_MRIGHT + 5242931 + name 1_80_KEY_0 + 2152726528 + name 1_80_KEY_1 + 2152726529 + name 1_80_KEY_2 + 2152726530 + name 1_80_KEY_3 + 2152726531 + name 1_80_KEY_4 + 2152726532 + name 1_80_KEY_5 + 2152726533 + name 1_80_KEY_6 + 2152726534 + name 1_80_KEY_7 + 2152726535 + name 1_80_KEY_8 + 2152726536 + name 1_80_KEY_9 + 2152726537 + name 1_80_KEY_POWER + 2152726538 + name 1_80_KEY_CH_UP + 2152726543 + name 1_80_KEY_CH_DOWN + 2152726544 + name 1_80_KEY_VOL_DOWN + 2152726546 + name 1_80_KEY_VOL_UP + 2152726548 + name 1_80_KEY_SELECT + 2152726558 + name 0_81_KEY_0 + 5308416 + name 0_81_KEY_1 + 5308417 + name 0_81_KEY_2 + 5308418 + name 0_81_KEY_3 + 5308419 + name 0_81_KEY_4 + 5308420 + name 0_81_KEY_5 + 5308421 + name 0_81_KEY_6 + 5308422 + name 0_81_KEY_7 + 5308423 + name 0_81_KEY_8 + 5308424 + name 0_81_KEY_9 + 5308425 + name 0_81_KEY_POWER + 5308426 + name 0_81_KEY_CH_UP + 5308431 + name 0_81_KEY_CH_DOWN + 5308432 + name 0_81_KEY_MENU + 5308463 + name 0_81_KEY_MUP + 5308464 + name 0_81_KEY_MDOWN + 5308465 + name 0_81_KEY_MLEFT + 5308466 + name 0_81_KEY_MRIGHT + 5308467 + name 1_81_KEY_0 + 2152792064 + name 1_81_KEY_1 + 2152792065 + name 1_81_KEY_2 + 2152792066 + name 1_81_KEY_3 + 2152792067 + name 1_81_KEY_4 + 2152792068 + name 1_81_KEY_5 + 2152792069 + name 1_81_KEY_6 + 2152792070 + name 1_81_KEY_7 + 2152792071 + name 1_81_KEY_8 + 2152792072 + name 1_81_KEY_9 + 2152792073 + name 1_81_KEY_POWER + 2152792074 + name 1_81_KEY_CH_UP + 2152792079 + name 1_81_KEY_CH_DOWN + 2152792080 + name 0_82_KEY_0 + 5373952 + name 0_82_KEY_1 + 5373953 + name 0_82_KEY_2 + 5373954 + name 0_82_KEY_3 + 5373955 + name 0_82_KEY_4 + 5373956 + name 0_82_KEY_5 + 5373957 + name 0_82_KEY_6 + 5373958 + name 0_82_KEY_7 + 5373959 + name 0_82_KEY_8 + 5373960 + name 0_82_KEY_9 + 5373961 + name 0_82_KEY_POWER + 5373962 + name 0_82_KEY_CH_UP + 5373967 + name 0_82_KEY_CH_DOWN + 5373968 + name 0_82_KEY_MUTE + 5373969 + name 0_82_KEY_VOL_DOWN + 5373970 + name 0_82_KEY_VOL_UP + 5373972 + name 0_82_KEY_MNSELECT + 5373975 + name 0_82_KEY_ENTER + 5373995 + name 0_82_KEY_MENU + 5373999 + name 0_82_KEY_MUP + 5374000 + name 0_82_KEY_MDOWN + 5374001 + name 0_82_KEY_MLEFT + 5374002 + name 0_82_KEY_MRIGHT + 5374003 + name 1_82_KEY_0 + 2152857600 + name 1_82_KEY_1 + 2152857601 + name 1_82_KEY_2 + 2152857602 + name 1_82_KEY_3 + 2152857603 + name 1_82_KEY_4 + 2152857604 + name 1_82_KEY_5 + 2152857605 + name 1_82_KEY_6 + 2152857606 + name 1_82_KEY_7 + 2152857607 + name 1_82_KEY_8 + 2152857608 + name 1_82_KEY_9 + 2152857609 + name 1_82_KEY_POWER + 2152857610 + name 1_82_KEY_CH_UP + 2152857615 + name 1_82_KEY_CH_DOWN + 2152857616 + name 1_82_CH_PREVIOUS + 2152857619 + name 1_82_KEY_DISPLAY + 2152857621 + name 1_82_KEY_EXIT + 2152857624 + name 1_82_KEY_AV + 2152857641 + name 1_82_KEY_ENTER + 2152857643 + name 1_82_KEY_MENU + 2152857647 + name 1_82_KEY_MUP + 2152857648 + name 1_82_KEY_MDOWN + 2152857649 + name 1_82_KEY_MLEFT + 2152857650 + name 1_82_KEY_MRIGHT + 2152857651 + name 0_83_KEY_0 + 5439488 + name 0_83_KEY_1 + 5439489 + name 0_83_KEY_2 + 5439490 + name 0_83_KEY_3 + 5439491 + name 0_83_KEY_4 + 5439492 + name 0_83_KEY_5 + 5439493 + name 0_83_KEY_6 + 5439494 + name 0_83_KEY_7 + 5439495 + name 0_83_KEY_8 + 5439496 + name 0_83_KEY_9 + 5439497 + name 0_83_KEY_POWER + 5439498 + name 0_83_KEY_CH_UP + 5439503 + name 0_83_KEY_CH_DOWN + 5439504 + name 0_83_KEY_MENU + 5439535 + name 0_83_KEY_MUP + 5439536 + name 0_83_KEY_MDOWN + 5439537 + name 0_83_KEY_MLEFT + 5439538 + name 0_83_KEY_MRIGHT + 5439539 + name 1_83_KEY_0 + 2152923136 + name 1_83_KEY_1 + 2152923137 + name 1_83_KEY_2 + 2152923138 + name 1_83_KEY_3 + 2152923139 + name 1_83_KEY_4 + 2152923140 + name 1_83_KEY_5 + 2152923141 + name 1_83_KEY_6 + 2152923142 + name 1_83_KEY_7 + 2152923143 + name 1_83_KEY_8 + 2152923144 + name 1_83_KEY_9 + 2152923145 + name 1_83_KEY_POWER + 2152923146 + name 1_83_KEY_CH_UP + 2152923151 + name 1_83_KEY_CH_DOWN + 2152923152 + name 1_83_KEY_MUTE + 2152923153 + name 1_83_KEY_VOL_DOWN + 2152923154 + name 1_83_CH_PREVIOUS + 2152923155 + name 1_83_KEY_VOL_UP + 2152923156 + name 1_83_KEY_DISPLAY + 2152923157 + name 1_83_KEY_EXIT + 2152923160 + name 1_83_KEY_GUIDE + 2152923163 + name 1_83_KEY_SELECT + 2152923166 + name 1_83_KEY_AV + 2152923177 + name 1_83_KEY_SAT + 2152923178 + name 1_83_KEY_ENTER + 2152923179 + name 1_83_KEY_MENU + 2152923183 + name 1_83_KEY_MUP + 2152923184 + name 1_83_KEY_MDOWN + 2152923185 + name 1_83_KEY_MLEFT + 2152923186 + name 1_83_KEY_MRIGHT + 2152923187 + name 0_84_KEY_0 + 5505024 + name 0_84_KEY_1 + 5505025 + name 0_84_KEY_2 + 5505026 + name 0_84_KEY_3 + 5505027 + name 0_84_KEY_4 + 5505028 + name 0_84_KEY_5 + 5505029 + name 0_84_KEY_6 + 5505030 + name 0_84_KEY_7 + 5505031 + name 0_84_KEY_8 + 5505032 + name 0_84_KEY_9 + 5505033 + name 0_84_KEY_POWER + 5505034 + name 0_84_KEY_CH_UP + 5505039 + name 0_84_KEY_CH_DOWN + 5505040 + name 0_84_KEY_MUTE + 5505041 + name 0_84_KEY_VOL_DOWN + 5505042 + name 0_84_KEY_VOL_UP + 5505044 + name 0_84_KEY_MNSELECT + 5505047 + name 0_84_KEY_MENU + 5505071 + name 0_84_KEY_MUP + 5505072 + name 0_84_KEY_MDOWN + 5505073 + name 0_84_KEY_MLEFT + 5505074 + name 0_84_KEY_MRIGHT + 5505075 + name 1_84_KEY_0 + 2152988672 + name 1_84_KEY_1 + 2152988673 + name 1_84_KEY_2 + 2152988674 + name 1_84_KEY_3 + 2152988675 + name 1_84_KEY_4 + 2152988676 + name 1_84_KEY_5 + 2152988677 + name 1_84_KEY_6 + 2152988678 + name 1_84_KEY_7 + 2152988679 + name 1_84_KEY_8 + 2152988680 + name 1_84_KEY_9 + 2152988681 + name 1_84_KEY_POWER + 2152988682 + name 1_84_KEY_CH_UP + 2152988687 + name 1_84_KEY_CH_DOWN + 2152988688 + name 1_84_CH_PREVIOUS + 2152988691 + name 1_84_KEY_DISPLAY + 2152988693 + name 1_84_KEY_EXIT + 2152988696 + name 1_84_KEY_AV + 2152988713 + name 1_84_KEY_ENTER + 2152988715 + name 1_84_KEY_MENU + 2152988719 + name 1_84_KEY_MUP + 2152988720 + name 1_84_KEY_MDOWN + 2152988721 + name 1_84_KEY_MLEFT + 2152988722 + name 1_84_KEY_MRIGHT + 2152988723 + name 0_85_KEY_0 + 5570560 + name 0_85_KEY_1 + 5570561 + name 0_85_KEY_2 + 5570562 + name 0_85_KEY_3 + 5570563 + name 0_85_KEY_4 + 5570564 + name 0_85_KEY_5 + 5570565 + name 0_85_KEY_6 + 5570566 + name 0_85_KEY_7 + 5570567 + name 0_85_KEY_8 + 5570568 + name 0_85_KEY_9 + 5570569 + name 0_85_KEY_POWER + 5570570 + name 0_85_KEY_CH_UP + 5570575 + name 0_85_KEY_CH_DOWN + 5570576 + name 0_85_KEY_MUTE + 5570577 + name 0_85_KEY_VOL_DOWN + 5570578 + name 0_85_CH_PREVIOUS + 5570579 + name 0_85_KEY_VOL_UP + 5570580 + name 0_85_KEY_DISPLAY + 5570581 + name 0_85_KEY_MNSELECT + 5570583 + name 0_85_KEY_EXIT + 5570584 + name 0_85_KEY_INPUT + 5570586 + name 0_85_KEY_GUIDE + 5570587 + name 0_85_KEY_FAV + 5570589 + name 0_85_KEY_MENU + 5570607 + name 0_85_KEY_MUP + 5570608 + name 0_85_KEY_MDOWN + 5570609 + name 0_85_KEY_MLEFT + 5570610 + name 0_85_KEY_MRIGHT + 5570611 + name 0_85_KEY_FF + 5570612 + name 0_85_KEY_PLAY + 5570613 + name 0_85_KEY_REW + 5570614 + name 0_85_KEY_REC + 5570615 + name 0_85_KEY_PAUSE + 5570616 + name 0_85_KEY_STOP + 5570617 + name 1_85_KEY_0 + 2153054208 + name 1_85_KEY_1 + 2153054209 + name 1_85_KEY_2 + 2153054210 + name 1_85_KEY_3 + 2153054211 + name 1_85_KEY_4 + 2153054212 + name 1_85_KEY_5 + 2153054213 + name 1_85_KEY_6 + 2153054214 + name 1_85_KEY_7 + 2153054215 + name 1_85_KEY_8 + 2153054216 + name 1_85_KEY_9 + 2153054217 + name 1_85_KEY_POWER + 2153054218 + name 1_85_KEY_CH_UP + 2153054223 + name 1_85_KEY_CH_DOWN + 2153054224 + name 1_85_CH_PREVIOUS + 2153054227 + name 1_85_KEY_DISPLAY + 2153054229 + name 1_85_KEY_EXIT + 2153054232 + name 1_85_KEY_SELECT + 2153054238 + name 1_85_KEY_ENTER + 2153054251 + name 1_85_KEY_MENU + 2153054255 + name 1_85_KEY_MUP + 2153054256 + name 1_85_KEY_MDOWN + 2153054257 + name 1_85_KEY_MLEFT + 2153054258 + name 1_85_KEY_MRIGHT + 2153054259 + name 0_86_KEY_0 + 5636096 + name 0_86_KEY_1 + 5636097 + name 0_86_KEY_2 + 5636098 + name 0_86_KEY_3 + 5636099 + name 0_86_KEY_4 + 5636100 + name 0_86_KEY_5 + 5636101 + name 0_86_KEY_6 + 5636102 + name 0_86_KEY_7 + 5636103 + name 0_86_KEY_8 + 5636104 + name 0_86_KEY_9 + 5636105 + name 0_86_KEY_POWER + 5636106 + name 0_86_KEY_CH_UP + 5636111 + name 0_86_KEY_CH_DOWN + 5636112 + name 0_86_KEY_MUTE + 5636113 + name 0_86_KEY_VOL_DOWN + 5636114 + name 0_86_CH_PREVIOUS + 5636115 + name 0_86_KEY_VOL_UP + 5636116 + name 0_86_KEY_DISPLAY + 5636117 + name 0_86_KEY_MNSELECT + 5636119 + name 0_86_KEY_EXIT + 5636120 + name 0_86_KEY_INPUT + 5636122 + name 0_86_KEY_GUIDE + 5636123 + name 0_86_KEY_FAV + 5636125 + name 0_86_KEY_ENTER + 5636139 + name 0_86_KEY_MENU + 5636143 + name 0_86_KEY_MUP + 5636144 + name 0_86_KEY_MDOWN + 5636145 + name 0_86_KEY_MLEFT + 5636146 + name 0_86_KEY_MRIGHT + 5636147 + name 0_86_KEY_FF + 5636148 + name 0_86_KEY_PLAY + 5636149 + name 0_86_KEY_REW + 5636150 + name 0_86_KEY_REC + 5636151 + name 0_86_KEY_PAUSE + 5636152 + name 0_86_KEY_STOP + 5636153 + name 1_86_KEY_0 + 2153119744 + name 1_86_KEY_1 + 2153119745 + name 1_86_KEY_2 + 2153119746 + name 1_86_KEY_3 + 2153119747 + name 1_86_KEY_4 + 2153119748 + name 1_86_KEY_5 + 2153119749 + name 1_86_KEY_6 + 2153119750 + name 1_86_KEY_7 + 2153119751 + name 1_86_KEY_8 + 2153119752 + name 1_86_KEY_9 + 2153119753 + name 1_86_KEY_POWER + 2153119754 + name 1_86_KEY_CH_UP + 2153119759 + name 1_86_KEY_CH_DOWN + 2153119760 + name 1_86_CH_PREVIOUS + 2153119763 + name 1_86_KEY_DISPLAY + 2153119765 + name 1_86_KEY_EXIT + 2153119768 + name 1_86_KEY_AV + 2153119785 + name 1_86_KEY_ENTER + 2153119787 + name 1_86_KEY_MENU + 2153119791 + name 1_86_KEY_MUP + 2153119792 + name 1_86_KEY_MDOWN + 2153119793 + name 1_86_KEY_MLEFT + 2153119794 + name 1_86_KEY_MRIGHT + 2153119795 + name 0_87_KEY_0 + 5701632 + name 0_87_KEY_1 + 5701633 + name 0_87_KEY_2 + 5701634 + name 0_87_KEY_3 + 5701635 + name 0_87_KEY_4 + 5701636 + name 0_87_KEY_5 + 5701637 + name 0_87_KEY_6 + 5701638 + name 0_87_KEY_7 + 5701639 + name 0_87_KEY_8 + 5701640 + name 0_87_KEY_9 + 5701641 + name 0_87_KEY_POWER + 5701642 + name 0_87_KEY_CH_UP + 5701647 + name 0_87_KEY_CH_DOWN + 5701648 + name 0_87_KEY_MUTE + 5701649 + name 0_87_KEY_VOL_DOWN + 5701650 + name 0_87_CH_PREVIOUS + 5701651 + name 0_87_KEY_VOL_UP + 5701652 + name 0_87_KEY_DISPLAY + 5701653 + name 0_87_KEY_MNSELECT + 5701655 + name 0_87_KEY_EXIT + 5701656 + name 0_87_KEY_INPUT + 5701658 + name 0_87_KEY_GUIDE + 5701659 + name 0_87_KEY_FAV + 5701661 + name 0_87_KEY_MENU + 5701679 + name 0_87_KEY_MUP + 5701680 + name 0_87_KEY_MDOWN + 5701681 + name 0_87_KEY_MLEFT + 5701682 + name 0_87_KEY_MRIGHT + 5701683 + name 0_87_KEY_FF + 5701684 + name 0_87_KEY_PLAY + 5701685 + name 0_87_KEY_REW + 5701686 + name 0_87_KEY_REC + 5701687 + name 0_87_KEY_PAUSE + 5701688 + name 0_87_KEY_STOP + 5701689 + name 1_87_KEY_0 + 2153185280 + name 1_87_KEY_1 + 2153185281 + name 1_87_KEY_2 + 2153185282 + name 1_87_KEY_3 + 2153185283 + name 1_87_KEY_4 + 2153185284 + name 1_87_KEY_5 + 2153185285 + name 1_87_KEY_6 + 2153185286 + name 1_87_KEY_7 + 2153185287 + name 1_87_KEY_8 + 2153185288 + name 1_87_KEY_9 + 2153185289 + name 1_87_KEY_POWER + 2153185290 + name 1_87_KEY_CH_UP + 2153185295 + name 1_87_KEY_CH_DOWN + 2153185296 + name 1_87_CH_PREVIOUS + 2153185299 + name 1_87_KEY_DISPLAY + 2153185301 + name 1_87_KEY_EXIT + 2153185304 + name 1_87_KEY_AV + 2153185321 + name 1_87_KEY_MENU + 2153185327 + name 1_87_KEY_MUP + 2153185328 + name 1_87_KEY_MDOWN + 2153185329 + name 1_87_KEY_MLEFT + 2153185330 + name 1_87_KEY_MRIGHT + 2153185331 + name 0_88_KEY_0 + 5767168 + name 0_88_KEY_1 + 5767169 + name 0_88_KEY_2 + 5767170 + name 0_88_KEY_3 + 5767171 + name 0_88_KEY_4 + 5767172 + name 0_88_KEY_5 + 5767173 + name 0_88_KEY_6 + 5767174 + name 0_88_KEY_7 + 5767175 + name 0_88_KEY_8 + 5767176 + name 0_88_KEY_9 + 5767177 + name 0_88_KEY_POWER + 5767178 + name 0_88_KEY_CH_UP + 5767183 + name 0_88_KEY_CH_DOWN + 5767184 + name 0_88_KEY_MUTE + 5767185 + name 0_88_KEY_VOL_DOWN + 5767186 + name 0_88_CH_PREVIOUS + 5767187 + name 0_88_KEY_VOL_UP + 5767188 + name 0_88_KEY_DISPLAY + 5767189 + name 0_88_KEY_MNSELECT + 5767191 + name 0_88_KEY_EXIT + 5767192 + name 0_88_KEY_INPUT + 5767194 + name 0_88_KEY_GUIDE + 5767195 + name 0_88_KEY_FAV + 5767197 + name 0_88_KEY_MENU + 5767215 + name 0_88_KEY_MUP + 5767216 + name 0_88_KEY_MDOWN + 5767217 + name 0_88_KEY_MLEFT + 5767218 + name 0_88_KEY_MRIGHT + 5767219 + name 0_88_KEY_FF + 5767220 + name 0_88_KEY_PLAY + 5767221 + name 0_88_KEY_REW + 5767222 + name 0_88_KEY_REC + 5767223 + name 0_88_KEY_PAUSE + 5767224 + name 0_88_KEY_STOP + 5767225 + name 1_88_KEY_0 + 2153250816 + name 1_88_KEY_1 + 2153250817 + name 1_88_KEY_2 + 2153250818 + name 1_88_KEY_3 + 2153250819 + name 1_88_KEY_4 + 2153250820 + name 1_88_KEY_5 + 2153250821 + name 1_88_KEY_6 + 2153250822 + name 1_88_KEY_7 + 2153250823 + name 1_88_KEY_8 + 2153250824 + name 1_88_KEY_9 + 2153250825 + name 1_88_KEY_POWER + 2153250826 + name 1_88_KEY_CH_UP + 2153250831 + name 1_88_KEY_CH_DOWN + 2153250832 + name 1_88_CH_PREVIOUS + 2153250835 + name 1_88_KEY_EXIT + 2153250840 + name 1_88_KEY_SELECT + 2153250846 + name 1_88_KEY_AV + 2153250857 + name 1_88_KEY_ENTER + 2153250859 + name 1_88_KEY_MENU + 2153250863 + name 1_88_KEY_MUP + 2153250864 + name 1_88_KEY_MDOWN + 2153250865 + name 1_88_KEY_MLEFT + 2153250866 + name 1_88_KEY_MRIGHT + 2153250867 + name 0_89_KEY_0 + 5832704 + name 0_89_KEY_1 + 5832705 + name 0_89_KEY_2 + 5832706 + name 0_89_KEY_3 + 5832707 + name 0_89_KEY_4 + 5832708 + name 0_89_KEY_5 + 5832709 + name 0_89_KEY_6 + 5832710 + name 0_89_KEY_7 + 5832711 + name 0_89_KEY_8 + 5832712 + name 0_89_KEY_9 + 5832713 + name 0_89_KEY_POWER + 5832714 + name 0_89_KEY_CH_UP + 5832719 + name 0_89_KEY_CH_DOWN + 5832720 + name 0_89_KEY_MUTE + 5832721 + name 0_89_KEY_VOL_DOWN + 5832722 + name 0_89_CH_PREVIOUS + 5832723 + name 0_89_KEY_VOL_UP + 5832724 + name 0_89_KEY_DISPLAY + 5832725 + name 0_89_KEY_MNSELECT + 5832727 + name 0_89_KEY_EXIT + 5832728 + name 0_89_KEY_INPUT + 5832730 + name 0_89_KEY_GUIDE + 5832731 + name 0_89_KEY_FAV + 5832733 + name 0_89_KEY_MENU + 5832751 + name 0_89_KEY_MUP + 5832752 + name 0_89_KEY_MDOWN + 5832753 + name 0_89_KEY_MLEFT + 5832754 + name 0_89_KEY_MRIGHT + 5832755 + name 1_89_KEY_POWER + 2153316362 + name 1_89_KEY_CH_UP + 2153316367 + name 1_89_KEY_CH_DOWN + 2153316368 + name 1_89_KEY_DISPLAY + 2153316373 + name 1_89_KEY_EXIT + 2153316376 + name 1_89_KEY_GUIDE + 2153316379 + name 1_89_KEY_SELECT + 2153316382 + name 1_89_KEY_ENTER + 2153316395 + name 1_89_KEY_MENU + 2153316399 + name 1_89_KEY_MUP + 2153316400 + name 1_89_KEY_MDOWN + 2153316401 + name 1_89_KEY_MLEFT + 2153316402 + name 1_89_KEY_MRIGHT + 2153316403 + name 0_90_KEY_0 + 5898240 + name 0_90_KEY_1 + 5898241 + name 0_90_KEY_2 + 5898242 + name 0_90_KEY_3 + 5898243 + name 0_90_KEY_4 + 5898244 + name 0_90_KEY_5 + 5898245 + name 0_90_KEY_6 + 5898246 + name 0_90_KEY_7 + 5898247 + name 0_90_KEY_8 + 5898248 + name 0_90_KEY_9 + 5898249 + name 0_90_KEY_POWER + 5898250 + name 0_90_KEY_CH_UP + 5898255 + name 0_90_KEY_CH_DOWN + 5898256 + name 0_90_KEY_MUTE + 5898257 + name 0_90_KEY_VOL_DOWN + 5898258 + name 0_90_CH_PREVIOUS + 5898259 + name 0_90_KEY_VOL_UP + 5898260 + name 0_90_KEY_DISPLAY + 5898261 + name 0_90_KEY_MNSELECT + 5898263 + name 0_90_KEY_EXIT + 5898264 + name 0_90_KEY_INPUT + 5898266 + name 0_90_KEY_GUIDE + 5898267 + name 0_90_KEY_FAV + 5898269 + name 0_90_KEY_MENU + 5898287 + name 0_90_KEY_MUP + 5898288 + name 0_90_KEY_MDOWN + 5898289 + name 0_90_KEY_MLEFT + 5898290 + name 0_90_KEY_MRIGHT + 5898291 + name 0_90_KEY_FF + 5898292 + name 0_90_KEY_PLAY + 5898293 + name 0_90_KEY_REW + 5898294 + name 0_90_KEY_REC + 5898295 + name 0_90_KEY_PAUSE + 5898296 + name 0_90_KEY_STOP + 5898297 + name 1_90_KEY_0 + 2153381888 + name 1_90_KEY_1 + 2153381889 + name 1_90_KEY_2 + 2153381890 + name 1_90_KEY_3 + 2153381891 + name 1_90_KEY_4 + 2153381892 + name 1_90_KEY_5 + 2153381893 + name 1_90_KEY_6 + 2153381894 + name 1_90_KEY_7 + 2153381895 + name 1_90_KEY_8 + 2153381896 + name 1_90_KEY_9 + 2153381897 + name 1_90_KEY_POWER + 2153381898 + name 1_90_KEY_CH_UP + 2153381903 + name 1_90_KEY_CH_DOWN + 2153381904 + name 1_90_CH_PREVIOUS + 2153381907 + name 1_90_KEY_DISPLAY + 2153381909 + name 1_90_KEY_AV + 2153381929 + name 1_90_KEY_ENTER + 2153381931 + name 1_90_KEY_MENU + 2153381935 + name 1_90_KEY_MUP + 2153381936 + name 1_90_KEY_MDOWN + 2153381937 + name 1_90_KEY_MLEFT + 2153381938 + name 1_90_KEY_MRIGHT + 2153381939 + name 0_91_KEY_0 + 5963776 + name 0_91_KEY_1 + 5963777 + name 0_91_KEY_2 + 5963778 + name 0_91_KEY_3 + 5963779 + name 0_91_KEY_4 + 5963780 + name 0_91_KEY_5 + 5963781 + name 0_91_KEY_6 + 5963782 + name 0_91_KEY_7 + 5963783 + name 0_91_KEY_8 + 5963784 + name 0_91_KEY_9 + 5963785 + name 0_91_KEY_POWER + 5963786 + name 0_91_KEY_CH_UP + 5963791 + name 0_91_KEY_CH_DOWN + 5963792 + name 0_91_KEY_MUTE + 5963793 + name 0_91_KEY_VOL_DOWN + 5963794 + name 0_91_CH_PREVIOUS + 5963795 + name 0_91_KEY_VOL_UP + 5963796 + name 0_91_KEY_DISPLAY + 5963797 + name 0_91_KEY_MNSELECT + 5963799 + name 0_91_KEY_EXIT + 5963800 + name 0_91_KEY_INPUT + 5963802 + name 0_91_KEY_GUIDE + 5963803 + name 0_91_KEY_FAV + 5963805 + name 0_91_KEY_MENU + 5963823 + name 0_91_KEY_MUP + 5963824 + name 0_91_KEY_MDOWN + 5963825 + name 0_91_KEY_MLEFT + 5963826 + name 0_91_KEY_MRIGHT + 5963827 + name 0_91_KEY_FF + 5963828 + name 0_91_KEY_PLAY + 5963829 + name 0_91_KEY_REW + 5963830 + name 0_91_KEY_REC + 5963831 + name 0_91_KEY_PAUSE + 5963832 + name 0_91_KEY_STOP + 5963833 + name 1_91_KEY_0 + 2153447424 + name 1_91_KEY_1 + 2153447425 + name 1_91_KEY_2 + 2153447426 + name 1_91_KEY_3 + 2153447427 + name 1_91_KEY_4 + 2153447428 + name 1_91_KEY_5 + 2153447429 + name 1_91_KEY_6 + 2153447430 + name 1_91_KEY_7 + 2153447431 + name 1_91_KEY_8 + 2153447432 + name 1_91_KEY_9 + 2153447433 + name 1_91_KEY_POWER + 2153447434 + name 1_91_KEY_CH_UP + 2153447439 + name 1_91_KEY_CH_DOWN + 2153447440 + name 1_91_CH_PREVIOUS + 2153447443 + name 1_91_KEY_DISPLAY + 2153447445 + name 1_91_KEY_EXIT + 2153447448 + name 1_91_KEY_AV + 2153447465 + name 1_91_KEY_ENTER + 2153447467 + name 1_91_KEY_MENU + 2153447471 + name 1_91_KEY_MUP + 2153447472 + name 1_91_KEY_MDOWN + 2153447473 + name 1_91_KEY_MLEFT + 2153447474 + name 1_91_KEY_MRIGHT + 2153447475 + name 0_92_KEY_0 + 6029312 + name 0_92_KEY_1 + 6029313 + name 0_92_KEY_2 + 6029314 + name 0_92_KEY_3 + 6029315 + name 0_92_KEY_4 + 6029316 + name 0_92_KEY_5 + 6029317 + name 0_92_KEY_6 + 6029318 + name 0_92_KEY_7 + 6029319 + name 0_92_KEY_8 + 6029320 + name 0_92_KEY_9 + 6029321 + name 0_92_KEY_POWER + 6029322 + name 0_92_KEY_CH_UP + 6029327 + name 0_92_KEY_CH_DOWN + 6029328 + name 0_92_KEY_MUTE + 6029329 + name 0_92_KEY_VOL_DOWN + 6029330 + name 0_92_CH_PREVIOUS + 6029331 + name 0_92_KEY_VOL_UP + 6029332 + name 0_92_KEY_DISPLAY + 6029333 + name 0_92_KEY_MNSELECT + 6029335 + name 0_92_KEY_EXIT + 6029336 + name 0_92_KEY_INPUT + 6029338 + name 0_92_KEY_GUIDE + 6029339 + name 0_92_KEY_FAV + 6029341 + name 0_92_KEY_MENU + 6029359 + name 0_92_KEY_MUP + 6029360 + name 0_92_KEY_MDOWN + 6029361 + name 0_92_KEY_MLEFT + 6029362 + name 0_92_KEY_MRIGHT + 6029363 + name 0_92_KEY_FF + 6029364 + name 0_92_KEY_PLAY + 6029365 + name 0_92_KEY_REW + 6029366 + name 0_92_KEY_REC + 6029367 + name 0_92_KEY_PAUSE + 6029368 + name 0_92_KEY_STOP + 6029369 + name 1_92_KEY_0 + 2153512960 + name 1_92_KEY_1 + 2153512961 + name 1_92_KEY_2 + 2153512962 + name 1_92_KEY_3 + 2153512963 + name 1_92_KEY_4 + 2153512964 + name 1_92_KEY_5 + 2153512965 + name 1_92_KEY_6 + 2153512966 + name 1_92_KEY_7 + 2153512967 + name 1_92_KEY_8 + 2153512968 + name 1_92_KEY_9 + 2153512969 + name 1_92_KEY_POWER + 2153512970 + name 1_92_KEY_CH_UP + 2153512975 + name 1_92_KEY_CH_DOWN + 2153512976 + name 1_92_CH_PREVIOUS + 2153512979 + name 1_92_KEY_DISPLAY + 2153512981 + name 1_92_KEY_EXIT + 2153512984 + name 1_92_KEY_INPUT + 2153512986 + name 1_92_KEY_GUIDE + 2153512987 + name 1_92_KEY_SELECT + 2153512990 + name 1_92_KEY_AV + 2153513001 + name 1_92_KEY_SAT + 2153513002 + name 1_92_KEY_ENTER + 2153513003 + name 1_92_KEY_MENU + 2153513007 + name 1_92_KEY_MUP + 2153513008 + name 1_92_KEY_MDOWN + 2153513009 + name 1_92_KEY_MLEFT + 2153513010 + name 1_92_KEY_MRIGHT + 2153513011 + name 0_93_KEY_0 + 6094848 + name 0_93_KEY_1 + 6094849 + name 0_93_KEY_2 + 6094850 + name 0_93_KEY_3 + 6094851 + name 0_93_KEY_4 + 6094852 + name 0_93_KEY_5 + 6094853 + name 0_93_KEY_6 + 6094854 + name 0_93_KEY_7 + 6094855 + name 0_93_KEY_8 + 6094856 + name 0_93_KEY_9 + 6094857 + name 0_93_KEY_POWER + 6094858 + name 0_93_KEY_CH_UP + 6094863 + name 0_93_KEY_CH_DOWN + 6094864 + name 0_93_KEY_MUTE + 6094865 + name 0_93_KEY_VOL_DOWN + 6094866 + name 0_93_CH_PREVIOUS + 6094867 + name 0_93_KEY_VOL_UP + 6094868 + name 0_93_KEY_DISPLAY + 6094869 + name 0_93_KEY_MNSELECT + 6094871 + name 0_93_KEY_EXIT + 6094872 + name 0_93_KEY_INPUT + 6094874 + name 0_93_KEY_GUIDE + 6094875 + name 0_93_KEY_FAV + 6094877 + name 0_93_KEY_MENU + 6094895 + name 0_93_KEY_MUP + 6094896 + name 0_93_KEY_MDOWN + 6094897 + name 0_93_KEY_MLEFT + 6094898 + name 0_93_KEY_MRIGHT + 6094899 + name 0_93_KEY_FF + 6094900 + name 0_93_KEY_PLAY + 6094901 + name 0_93_KEY_REW + 6094902 + name 0_93_KEY_REC + 6094903 + name 0_93_KEY_PAUSE + 6094904 + name 0_93_KEY_STOP + 6094905 + name 1_93_KEY_0 + 2153578496 + name 1_93_KEY_1 + 2153578497 + name 1_93_KEY_2 + 2153578498 + name 1_93_KEY_3 + 2153578499 + name 1_93_KEY_4 + 2153578500 + name 1_93_KEY_5 + 2153578501 + name 1_93_KEY_6 + 2153578502 + name 1_93_KEY_7 + 2153578503 + name 1_93_KEY_8 + 2153578504 + name 1_93_KEY_9 + 2153578505 + name 1_93_KEY_POWER + 2153578506 + name 1_93_KEY_CH_UP + 2153578511 + name 1_93_KEY_CH_DOWN + 2153578512 + name 1_93_CH_PREVIOUS + 2153578515 + name 1_93_KEY_ENTER + 2153578539 + name 0_94_KEY_0 + 6160384 + name 0_94_KEY_1 + 6160385 + name 0_94_KEY_2 + 6160386 + name 0_94_KEY_3 + 6160387 + name 0_94_KEY_4 + 6160388 + name 0_94_KEY_5 + 6160389 + name 0_94_KEY_6 + 6160390 + name 0_94_KEY_7 + 6160391 + name 0_94_KEY_8 + 6160392 + name 0_94_KEY_9 + 6160393 + name 0_94_KEY_POWER + 6160394 + name 0_94_KEY_CH_UP + 6160399 + name 0_94_KEY_CH_DOWN + 6160400 + name 0_94_KEY_MUTE + 6160401 + name 0_94_KEY_VOL_DOWN + 6160402 + name 0_94_CH_PREVIOUS + 6160403 + name 0_94_KEY_VOL_UP + 6160404 + name 0_94_KEY_DISPLAY + 6160405 + name 0_94_KEY_MNSELECT + 6160407 + name 0_94_KEY_EXIT + 6160408 + name 0_94_KEY_INPUT + 6160410 + name 0_94_KEY_GUIDE + 6160411 + name 0_94_KEY_FAV + 6160413 + name 0_94_KEY_MENU + 6160431 + name 0_94_KEY_MUP + 6160432 + name 0_94_KEY_MDOWN + 6160433 + name 0_94_KEY_MLEFT + 6160434 + name 0_94_KEY_MRIGHT + 6160435 + name 0_94_KEY_FF + 6160436 + name 0_94_KEY_PLAY + 6160437 + name 0_94_KEY_REW + 6160438 + name 0_94_KEY_REC + 6160439 + name 0_94_KEY_PAUSE + 6160440 + name 0_94_KEY_STOP + 6160441 + name 1_94_KEY_0 + 2153644032 + name 1_94_KEY_1 + 2153644033 + name 1_94_KEY_2 + 2153644034 + name 1_94_KEY_3 + 2153644035 + name 1_94_KEY_4 + 2153644036 + name 1_94_KEY_5 + 2153644037 + name 1_94_KEY_6 + 2153644038 + name 1_94_KEY_7 + 2153644039 + name 1_94_KEY_8 + 2153644040 + name 1_94_KEY_9 + 2153644041 + name 1_94_KEY_POWER + 2153644042 + name 1_94_KEY_CH_UP + 2153644047 + name 1_94_KEY_CH_DOWN + 2153644048 + name 1_94_CH_PREVIOUS + 2153644051 + name 1_94_KEY_ENTER + 2153644075 + name 0_95_KEY_0 + 6225920 + name 0_95_KEY_1 + 6225921 + name 0_95_KEY_2 + 6225922 + name 0_95_KEY_3 + 6225923 + name 0_95_KEY_4 + 6225924 + name 0_95_KEY_5 + 6225925 + name 0_95_KEY_6 + 6225926 + name 0_95_KEY_7 + 6225927 + name 0_95_KEY_8 + 6225928 + name 0_95_KEY_9 + 6225929 + name 0_95_KEY_POWER + 6225930 + name 0_95_KEY_CH_UP + 6225935 + name 0_95_KEY_CH_DOWN + 6225936 + name 0_95_KEY_MUTE + 6225937 + name 0_95_KEY_VOL_DOWN + 6225938 + name 0_95_CH_PREVIOUS + 6225939 + name 0_95_KEY_VOL_UP + 6225940 + name 0_95_KEY_DISPLAY + 6225941 + name 0_95_KEY_MNSELECT + 6225943 + name 0_95_KEY_EXIT + 6225944 + name 0_95_KEY_INPUT + 6225946 + name 0_95_KEY_GUIDE + 6225947 + name 0_95_KEY_ENTER + 6225963 + name 0_95_KEY_MENU + 6225967 + name 0_95_KEY_MUP + 6225968 + name 0_95_KEY_MDOWN + 6225969 + name 0_95_KEY_MLEFT + 6225970 + name 0_95_KEY_MRIGHT + 6225971 + name 0_95_KEY_FF + 6225972 + name 0_95_KEY_PLAY + 6225973 + name 0_95_KEY_REW + 6225974 + name 0_95_KEY_REC + 6225975 + name 0_95_KEY_PAUSE + 6225976 + name 0_95_KEY_STOP + 6225977 + name 1_95_KEY_0 + 2153709568 + name 1_95_KEY_1 + 2153709569 + name 1_95_KEY_2 + 2153709570 + name 1_95_KEY_3 + 2153709571 + name 1_95_KEY_4 + 2153709572 + name 1_95_KEY_5 + 2153709573 + name 1_95_KEY_6 + 2153709574 + name 1_95_KEY_7 + 2153709575 + name 1_95_KEY_8 + 2153709576 + name 1_95_KEY_9 + 2153709577 + name 1_95_KEY_POWER + 2153709578 + name 1_95_KEY_CH_UP + 2153709583 + name 1_95_KEY_CH_DOWN + 2153709584 + name 0_96_KEY_0 + 6291456 + name 0_96_KEY_1 + 6291457 + name 0_96_KEY_2 + 6291458 + name 0_96_KEY_3 + 6291459 + name 0_96_KEY_4 + 6291460 + name 0_96_KEY_5 + 6291461 + name 0_96_KEY_6 + 6291462 + name 0_96_KEY_7 + 6291463 + name 0_96_KEY_8 + 6291464 + name 0_96_KEY_9 + 6291465 + name 0_96_KEY_POWER + 6291466 + name 0_96_KEY_CH_UP + 6291471 + name 0_96_KEY_CH_DOWN + 6291472 + name 0_96_KEY_MUTE + 6291473 + name 0_96_KEY_VOL_DOWN + 6291474 + name 0_96_CH_PREVIOUS + 6291475 + name 0_96_KEY_VOL_UP + 6291476 + name 0_96_KEY_DISPLAY + 6291477 + name 0_96_KEY_MNSELECT + 6291479 + name 0_96_KEY_INPUT + 6291482 + name 0_96_KEY_GUIDE + 6291483 + name 0_96_KEY_MENU + 6291503 + name 0_96_KEY_MUP + 6291504 + name 0_96_KEY_MDOWN + 6291505 + name 0_96_KEY_MLEFT + 6291506 + name 0_96_KEY_MRIGHT + 6291507 + name 0_96_KEY_FF + 6291508 + name 0_96_KEY_REW + 6291510 + name 0_96_KEY_PAUSE + 6291512 + name 1_96_KEY_0 + 2153775104 + name 1_96_KEY_1 + 2153775105 + name 1_96_KEY_2 + 2153775106 + name 1_96_KEY_3 + 2153775107 + name 1_96_KEY_4 + 2153775108 + name 1_96_KEY_5 + 2153775109 + name 1_96_KEY_6 + 2153775110 + name 1_96_KEY_7 + 2153775111 + name 1_96_KEY_8 + 2153775112 + name 1_96_KEY_9 + 2153775113 + name 1_96_KEY_POWER + 2153775114 + name 1_96_KEY_CH_UP + 2153775119 + name 1_96_KEY_CH_DOWN + 2153775120 + name 0_97_KEY_0 + 6356992 + name 0_97_KEY_1 + 6356993 + name 0_97_KEY_2 + 6356994 + name 0_97_KEY_3 + 6356995 + name 0_97_KEY_4 + 6356996 + name 0_97_KEY_5 + 6356997 + name 0_97_KEY_6 + 6356998 + name 0_97_KEY_7 + 6356999 + name 0_97_KEY_8 + 6357000 + name 0_97_KEY_9 + 6357001 + name 0_97_KEY_POWER + 6357002 + name 0_97_KEY_CH_UP + 6357007 + name 0_97_KEY_CH_DOWN + 6357008 + name 0_97_KEY_MUTE + 6357009 + name 0_97_KEY_VOL_DOWN + 6357010 + name 0_97_CH_PREVIOUS + 6357011 + name 0_97_KEY_VOL_UP + 6357012 + name 0_97_KEY_DISPLAY + 6357013 + name 0_97_KEY_MNSELECT + 6357015 + name 0_97_KEY_EXIT + 6357016 + name 0_97_KEY_INPUT + 6357018 + name 0_97_KEY_GUIDE + 6357019 + name 0_97_KEY_ENTER + 6357035 + name 0_97_KEY_MENU + 6357039 + name 0_97_KEY_MUP + 6357040 + name 0_97_KEY_MDOWN + 6357041 + name 0_97_KEY_MLEFT + 6357042 + name 0_97_KEY_MRIGHT + 6357043 + name 0_97_KEY_FF + 6357044 + name 0_97_KEY_PLAY + 6357045 + name 0_97_KEY_REW + 6357046 + name 0_97_KEY_REC + 6357047 + name 0_97_KEY_PAUSE + 6357048 + name 0_97_KEY_STOP + 6357049 + name 1_97_KEY_0 + 2153840640 + name 1_97_KEY_1 + 2153840641 + name 1_97_KEY_2 + 2153840642 + name 1_97_KEY_3 + 2153840643 + name 1_97_KEY_4 + 2153840644 + name 1_97_KEY_5 + 2153840645 + name 1_97_KEY_6 + 2153840646 + name 1_97_KEY_7 + 2153840647 + name 1_97_KEY_8 + 2153840648 + name 1_97_KEY_9 + 2153840649 + name 1_97_KEY_POWER + 2153840650 + name 1_97_KEY_CH_UP + 2153840655 + name 1_97_KEY_CH_DOWN + 2153840656 + name 1_97_CH_PREVIOUS + 2153840659 + name 1_97_KEY_ENTER + 2153840683 + name 0_98_KEY_0 + 6422528 + name 0_98_KEY_1 + 6422529 + name 0_98_KEY_2 + 6422530 + name 0_98_KEY_3 + 6422531 + name 0_98_KEY_4 + 6422532 + name 0_98_KEY_5 + 6422533 + name 0_98_KEY_6 + 6422534 + name 0_98_KEY_7 + 6422535 + name 0_98_KEY_8 + 6422536 + name 0_98_KEY_9 + 6422537 + name 0_98_KEY_POWER + 6422538 + name 0_98_KEY_CH_UP + 6422543 + name 0_98_KEY_CH_DOWN + 6422544 + name 0_98_KEY_MUTE + 6422545 + name 0_98_KEY_VOL_DOWN + 6422546 + name 0_98_CH_PREVIOUS + 6422547 + name 0_98_KEY_VOL_UP + 6422548 + name 0_98_KEY_DISPLAY + 6422549 + name 0_98_KEY_MNSELECT + 6422551 + name 0_98_KEY_EXIT + 6422552 + name 0_98_KEY_INPUT + 6422554 + name 0_98_KEY_GUIDE + 6422555 + name 0_98_KEY_MENU + 6422575 + name 0_98_KEY_MUP + 6422576 + name 0_98_KEY_MDOWN + 6422577 + name 0_98_KEY_MLEFT + 6422578 + name 0_98_KEY_MRIGHT + 6422579 + name 0_98_KEY_FF + 6422580 + name 0_98_KEY_PLAY + 6422581 + name 0_98_KEY_REW + 6422582 + name 0_98_KEY_REC + 6422583 + name 0_98_KEY_PAUSE + 6422584 + name 0_98_KEY_STOP + 6422585 + name 1_98_KEY_0 + 2153906176 + name 1_98_KEY_1 + 2153906177 + name 1_98_KEY_2 + 2153906178 + name 1_98_KEY_3 + 2153906179 + name 1_98_KEY_4 + 2153906180 + name 1_98_KEY_5 + 2153906181 + name 1_98_KEY_6 + 2153906182 + name 1_98_KEY_7 + 2153906183 + name 1_98_KEY_8 + 2153906184 + name 1_98_KEY_9 + 2153906185 + name 1_98_KEY_POWER + 2153906186 + name 1_98_KEY_CH_UP + 2153906191 + name 1_98_KEY_CH_DOWN + 2153906192 + name 0_99_KEY_0 + 6488064 + name 0_99_KEY_1 + 6488065 + name 0_99_KEY_2 + 6488066 + name 0_99_KEY_3 + 6488067 + name 0_99_KEY_4 + 6488068 + name 0_99_KEY_5 + 6488069 + name 0_99_KEY_6 + 6488070 + name 0_99_KEY_7 + 6488071 + name 0_99_KEY_8 + 6488072 + name 0_99_KEY_9 + 6488073 + name 0_99_KEY_POWER + 6488074 + name 0_99_KEY_CH_UP + 6488079 + name 0_99_KEY_CH_DOWN + 6488080 + name 0_99_CH_PREVIOUS + 6488083 + name 0_99_KEY_DISPLAY + 6488085 + name 0_99_KEY_MNSELECT + 6488087 + name 0_99_KEY_GUIDE + 6488091 + name 0_99_KEY_FAV + 6488093 + name 0_99_KEY_ENTER + 6488107 + name 0_99_KEY_MUP + 6488112 + name 0_99_KEY_MDOWN + 6488113 + name 0_99_KEY_MLEFT + 6488114 + name 0_99_KEY_MRIGHT + 6488115 + name 0_99_KEY_FF + 6488116 + name 0_99_KEY_PLAY + 6488117 + name 0_99_KEY_REW + 6488118 + name 0_99_KEY_REC + 6488119 + name 0_99_KEY_PAUSE + 6488120 + name 0_99_KEY_STOP + 6488121 + name 1_99_KEY_0 + 2153971712 + name 1_99_KEY_1 + 2153971713 + name 1_99_KEY_2 + 2153971714 + name 1_99_KEY_3 + 2153971715 + name 1_99_KEY_4 + 2153971716 + name 1_99_KEY_5 + 2153971717 + name 1_99_KEY_6 + 2153971718 + name 1_99_KEY_7 + 2153971719 + name 1_99_KEY_8 + 2153971720 + name 1_99_KEY_9 + 2153971721 + name 1_99_KEY_POWER + 2153971722 + name 1_99_KEY_CH_UP + 2153971727 + name 1_99_KEY_CH_DOWN + 2153971728 + name 0_100_KEY_0 + 6553600 + name 0_100_KEY_1 + 6553601 + name 0_100_KEY_2 + 6553602 + name 0_100_KEY_3 + 6553603 + name 0_100_KEY_4 + 6553604 + name 0_100_KEY_5 + 6553605 + name 0_100_KEY_6 + 6553606 + name 0_100_KEY_7 + 6553607 + name 0_100_KEY_8 + 6553608 + name 0_100_KEY_9 + 6553609 + name 0_100_KEY_POWER + 6553610 + name 0_100_KEY_CH_UP + 6553615 + name 0_100_KEY_CH_DOWN + 6553616 + name 0_100_KEY_MUTE + 6553617 + name 0_100_KEY_VOL_DOWN + 6553618 + name 0_100_CH_PREVIOUS + 6553619 + name 0_100_KEY_VOL_UP + 6553620 + name 0_100_KEY_DISPLAY + 6553621 + name 0_100_KEY_MNSELECT + 6553623 + name 0_100_KEY_EXIT + 6553624 + name 0_100_KEY_INPUT + 6553626 + name 0_100_KEY_GUIDE + 6553627 + name 0_100_KEY_ENTER + 6553643 + name 0_100_KEY_MENU + 6553647 + name 0_100_KEY_MUP + 6553648 + name 0_100_KEY_MDOWN + 6553649 + name 0_100_KEY_MLEFT + 6553650 + name 0_100_KEY_MRIGHT + 6553651 + name 0_100_KEY_FF + 6553652 + name 0_100_KEY_PLAY + 6553653 + name 0_100_KEY_REW + 6553654 + name 0_100_KEY_REC + 6553655 + name 0_100_KEY_PAUSE + 6553656 + name 0_100_KEY_STOP + 6553657 + name 1_100_KEY_0 + 2154037248 + name 1_100_KEY_1 + 2154037249 + name 1_100_KEY_2 + 2154037250 + name 1_100_KEY_3 + 2154037251 + name 1_100_KEY_4 + 2154037252 + name 1_100_KEY_5 + 2154037253 + name 1_100_KEY_6 + 2154037254 + name 1_100_KEY_7 + 2154037255 + name 1_100_KEY_8 + 2154037256 + name 1_100_KEY_9 + 2154037257 + name 1_100_KEY_POWER + 2154037258 + name 1_100_KEY_CH_UP + 2154037263 + name 1_100_KEY_CH_DOWN + 2154037264 + name 1_100_CH_PREVIOUS + 2154037267 + name 1_100_KEY_ENTER + 2154037291 + name 0_101_KEY_0 + 6619136 + name 0_101_KEY_1 + 6619137 + name 0_101_KEY_2 + 6619138 + name 0_101_KEY_3 + 6619139 + name 0_101_KEY_4 + 6619140 + name 0_101_KEY_5 + 6619141 + name 0_101_KEY_6 + 6619142 + name 0_101_KEY_7 + 6619143 + name 0_101_KEY_8 + 6619144 + name 0_101_KEY_9 + 6619145 + name 0_101_KEY_POWER + 6619146 + name 0_101_KEY_CH_UP + 6619151 + name 0_101_KEY_CH_DOWN + 6619152 + name 0_101_KEY_MUTE + 6619153 + name 0_101_KEY_VOL_DOWN + 6619154 + name 0_101_CH_PREVIOUS + 6619155 + name 0_101_KEY_VOL_UP + 6619156 + name 0_101_KEY_DISPLAY + 6619157 + name 0_101_KEY_MNSELECT + 6619159 + name 0_101_KEY_EXIT + 6619160 + name 0_101_KEY_INPUT + 6619162 + name 0_101_KEY_GUIDE + 6619163 + name 0_101_KEY_MENU + 6619183 + name 0_101_KEY_MUP + 6619184 + name 0_101_KEY_MDOWN + 6619185 + name 0_101_KEY_MLEFT + 6619186 + name 0_101_KEY_MRIGHT + 6619187 + name 0_101_KEY_FF + 6619188 + name 0_101_KEY_PLAY + 6619189 + name 0_101_KEY_REW + 6619190 + name 0_101_KEY_REC + 6619191 + name 0_101_KEY_PAUSE + 6619192 + name 0_101_KEY_STOP + 6619193 + name 1_101_KEY_0 + 2154102784 + name 1_101_KEY_1 + 2154102785 + name 1_101_KEY_2 + 2154102786 + name 1_101_KEY_3 + 2154102787 + name 1_101_KEY_4 + 2154102788 + name 1_101_KEY_5 + 2154102789 + name 1_101_KEY_6 + 2154102790 + name 1_101_KEY_7 + 2154102791 + name 1_101_KEY_8 + 2154102792 + name 1_101_KEY_9 + 2154102793 + name 1_101_KEY_POWER + 2154102794 + name 1_101_KEY_CH_UP + 2154102799 + name 1_101_KEY_CH_DOWN + 2154102800 + name 1_101_KEY_ENTER + 2154102827 + name 0_102_KEY_0 + 6684672 + name 0_102_KEY_1 + 6684673 + name 0_102_KEY_2 + 6684674 + name 0_102_KEY_3 + 6684675 + name 0_102_KEY_4 + 6684676 + name 0_102_KEY_5 + 6684677 + name 0_102_KEY_6 + 6684678 + name 0_102_KEY_7 + 6684679 + name 0_102_KEY_8 + 6684680 + name 0_102_KEY_9 + 6684681 + name 0_102_KEY_POWER + 6684682 + name 0_102_KEY_CH_UP + 6684687 + name 0_102_KEY_CH_DOWN + 6684688 + name 0_102_KEY_MUTE + 6684689 + name 0_102_KEY_VOL_DOWN + 6684690 + name 0_102_CH_PREVIOUS + 6684691 + name 0_102_KEY_VOL_UP + 6684692 + name 0_102_KEY_DISPLAY + 6684693 + name 0_102_KEY_MNSELECT + 6684695 + name 0_102_KEY_INPUT + 6684698 + name 0_102_KEY_GUIDE + 6684699 + name 0_102_KEY_MENU + 6684719 + name 1_102_KEY_0 + 2154168320 + name 1_102_KEY_1 + 2154168321 + name 1_102_KEY_2 + 2154168322 + name 1_102_KEY_3 + 2154168323 + name 1_102_KEY_4 + 2154168324 + name 1_102_KEY_5 + 2154168325 + name 1_102_KEY_6 + 2154168326 + name 1_102_KEY_7 + 2154168327 + name 1_102_KEY_8 + 2154168328 + name 1_102_KEY_9 + 2154168329 + name 1_102_KEY_POWER + 2154168330 + name 1_102_KEY_CH_UP + 2154168335 + name 1_102_KEY_CH_DOWN + 2154168336 + name 1_102_CH_PREVIOUS + 2154168339 + name 1_102_KEY_ENTER + 2154168363 + name 0_103_KEY_0 + 6750208 + name 0_103_KEY_1 + 6750209 + name 0_103_KEY_2 + 6750210 + name 0_103_KEY_3 + 6750211 + name 0_103_KEY_4 + 6750212 + name 0_103_KEY_5 + 6750213 + name 0_103_KEY_6 + 6750214 + name 0_103_KEY_7 + 6750215 + name 0_103_KEY_8 + 6750216 + name 0_103_KEY_9 + 6750217 + name 0_103_KEY_POWER + 6750218 + name 0_103_KEY_CH_UP + 6750223 + name 0_103_KEY_CH_DOWN + 6750224 + name 0_103_KEY_MUTE + 6750225 + name 0_103_KEY_VOL_DOWN + 6750226 + name 0_103_CH_PREVIOUS + 6750227 + name 0_103_KEY_VOL_UP + 6750228 + name 0_103_KEY_DISPLAY + 6750229 + name 0_103_KEY_MNSELECT + 6750231 + name 0_103_KEY_EXIT + 6750232 + name 0_103_KEY_MENU + 6750255 + name 1_103_KEY_0 + 2154233856 + name 1_103_KEY_1 + 2154233857 + name 1_103_KEY_2 + 2154233858 + name 1_103_KEY_3 + 2154233859 + name 1_103_KEY_4 + 2154233860 + name 1_103_KEY_5 + 2154233861 + name 1_103_KEY_6 + 2154233862 + name 1_103_KEY_7 + 2154233863 + name 1_103_KEY_8 + 2154233864 + name 1_103_KEY_9 + 2154233865 + name 1_103_KEY_POWER + 2154233866 + name 1_103_KEY_CH_UP + 2154233871 + name 1_103_KEY_CH_DOWN + 2154233872 + name 1_103_CH_PREVIOUS + 2154233875 + name 1_103_KEY_ENTER + 2154233899 + name 0_104_KEY_0 + 6815744 + name 0_104_KEY_1 + 6815745 + name 0_104_KEY_2 + 6815746 + name 0_104_KEY_3 + 6815747 + name 0_104_KEY_4 + 6815748 + name 0_104_KEY_5 + 6815749 + name 0_104_KEY_6 + 6815750 + name 0_104_KEY_7 + 6815751 + name 0_104_KEY_8 + 6815752 + name 0_104_KEY_9 + 6815753 + name 0_104_KEY_POWER + 6815754 + name 0_104_KEY_CH_UP + 6815759 + name 0_104_KEY_CH_DOWN + 6815760 + name 0_104_KEY_MUTE + 6815761 + name 0_104_KEY_VOL_DOWN + 6815762 + name 0_104_CH_PREVIOUS + 6815763 + name 0_104_KEY_VOL_UP + 6815764 + name 0_104_KEY_DISPLAY + 6815765 + name 0_104_KEY_MNSELECT + 6815767 + name 0_104_KEY_EXIT + 6815768 + name 0_104_KEY_INPUT + 6815770 + name 0_104_KEY_GUIDE + 6815771 + name 0_104_KEY_ENTER + 6815787 + name 0_104_KEY_MENU + 6815791 + name 0_104_KEY_MUP + 6815792 + name 0_104_KEY_MDOWN + 6815793 + name 0_104_KEY_MLEFT + 6815794 + name 0_104_KEY_MRIGHT + 6815795 + name 1_104_KEY_0 + 2154299392 + name 1_104_KEY_1 + 2154299393 + name 1_104_KEY_2 + 2154299394 + name 1_104_KEY_3 + 2154299395 + name 1_104_KEY_4 + 2154299396 + name 1_104_KEY_5 + 2154299397 + name 1_104_KEY_6 + 2154299398 + name 1_104_KEY_7 + 2154299399 + name 1_104_KEY_8 + 2154299400 + name 1_104_KEY_9 + 2154299401 + name 1_104_KEY_POWER + 2154299402 + name 1_104_KEY_CH_UP + 2154299407 + name 1_104_KEY_CH_DOWN + 2154299408 + name 1_104_CH_PREVIOUS + 2154299411 + name 1_104_KEY_ENTER + 2154299435 + name 0_105_KEY_0 + 6881280 + name 0_105_KEY_1 + 6881281 + name 0_105_KEY_2 + 6881282 + name 0_105_KEY_3 + 6881283 + name 0_105_KEY_4 + 6881284 + name 0_105_KEY_5 + 6881285 + name 0_105_KEY_6 + 6881286 + name 0_105_KEY_7 + 6881287 + name 0_105_KEY_8 + 6881288 + name 0_105_KEY_9 + 6881289 + name 0_105_KEY_POWER + 6881290 + name 0_105_KEY_CH_UP + 6881295 + name 0_105_KEY_CH_DOWN + 6881296 + name 0_105_KEY_MUTE + 6881297 + name 0_105_KEY_VOL_DOWN + 6881298 + name 0_105_CH_PREVIOUS + 6881299 + name 0_105_KEY_VOL_UP + 6881300 + name 0_105_KEY_INPUT + 6881306 + name 1_105_KEY_0 + 2154364928 + name 1_105_KEY_1 + 2154364929 + name 1_105_KEY_2 + 2154364930 + name 1_105_KEY_3 + 2154364931 + name 1_105_KEY_4 + 2154364932 + name 1_105_KEY_5 + 2154364933 + name 1_105_KEY_6 + 2154364934 + name 1_105_KEY_7 + 2154364935 + name 1_105_KEY_8 + 2154364936 + name 1_105_KEY_9 + 2154364937 + name 1_105_KEY_POWER + 2154364938 + name 1_105_KEY_CH_UP + 2154364943 + name 1_105_KEY_CH_DOWN + 2154364944 + name 1_105_KEY_MUTE + 2154364945 + name 1_105_KEY_VOL_DOWN + 2154364946 + name 1_105_CH_PREVIOUS + 2154364947 + name 1_105_KEY_VOL_UP + 2154364948 + name 1_105_KEY_DISPLAY + 2154364949 + name 1_105_KEY_EXIT + 2154364952 + name 1_105_KEY_INPUT + 2154364954 + name 1_105_KEY_GUIDE + 2154364955 + name 1_105_KEY_SELECT + 2154364958 + name 1_105_KEY_AV + 2154364969 + name 1_105_KEY_SAT + 2154364970 + name 1_105_KEY_ENTER + 2154364971 + name 1_105_KEY_MENU + 2154364975 + name 1_105_KEY_MUP + 2154364976 + name 1_105_KEY_MDOWN + 2154364977 + name 1_105_KEY_MLEFT + 2154364978 + name 1_105_KEY_MRIGHT + 2154364979 + name 1_105_KEY_FF + 2154364980 + name 1_105_KEY_PLAY + 2154364981 + name 1_105_KEY_REW + 2154364982 + name 1_105_KEY_REC + 2154364983 + name 1_105_KEY_PAUSE + 2154364984 + name 1_105_KEY_STOP + 2154364985 + name 0_106_KEY_0 + 6946816 + name 0_106_KEY_1 + 6946817 + name 0_106_KEY_2 + 6946818 + name 0_106_KEY_3 + 6946819 + name 0_106_KEY_4 + 6946820 + name 0_106_KEY_5 + 6946821 + name 0_106_KEY_6 + 6946822 + name 0_106_KEY_7 + 6946823 + name 0_106_KEY_8 + 6946824 + name 0_106_KEY_9 + 6946825 + name 0_106_KEY_POWER + 6946826 + name 0_106_KEY_CH_UP + 6946831 + name 0_106_KEY_CH_DOWN + 6946832 + name 0_106_KEY_MUTE + 6946833 + name 0_106_KEY_VOL_DOWN + 6946834 + name 0_106_CH_PREVIOUS + 6946835 + name 0_106_KEY_VOL_UP + 6946836 + name 0_106_KEY_DISPLAY + 6946837 + name 0_106_KEY_MNSELECT + 6946839 + name 0_106_KEY_EXIT + 6946840 + name 0_106_KEY_INPUT + 6946842 + name 0_106_KEY_GUIDE + 6946843 + name 0_106_KEY_ENTER + 6946859 + name 0_106_KEY_MUP + 6946864 + name 0_106_KEY_MDOWN + 6946865 + name 0_106_KEY_MLEFT + 6946866 + name 0_106_KEY_MRIGHT + 6946867 + name 1_106_KEY_0 + 2154430464 + name 1_106_KEY_1 + 2154430465 + name 1_106_KEY_2 + 2154430466 + name 1_106_KEY_3 + 2154430467 + name 1_106_KEY_4 + 2154430468 + name 1_106_KEY_5 + 2154430469 + name 1_106_KEY_6 + 2154430470 + name 1_106_KEY_7 + 2154430471 + name 1_106_KEY_8 + 2154430472 + name 1_106_KEY_9 + 2154430473 + name 1_106_KEY_POWER + 2154430474 + name 1_106_KEY_CH_UP + 2154430479 + name 1_106_KEY_CH_DOWN + 2154430480 + name 1_106_KEY_MUTE + 2154430481 + name 1_106_KEY_VOL_DOWN + 2154430482 + name 1_106_CH_PREVIOUS + 2154430483 + name 1_106_KEY_VOL_UP + 2154430484 + name 1_106_KEY_DISPLAY + 2154430485 + name 1_106_KEY_EXIT + 2154430488 + name 1_106_KEY_INPUT + 2154430490 + name 1_106_KEY_GUIDE + 2154430491 + name 1_106_KEY_SELECT + 2154430494 + name 1_106_KEY_AV + 2154430505 + name 1_106_KEY_SAT + 2154430506 + name 1_106_KEY_ENTER + 2154430507 + name 1_106_KEY_MENU + 2154430511 + name 1_106_KEY_MUP + 2154430512 + name 1_106_KEY_MDOWN + 2154430513 + name 1_106_KEY_MLEFT + 2154430514 + name 1_106_KEY_MRIGHT + 2154430515 + name 1_106_KEY_FF + 2154430516 + name 1_106_KEY_PLAY + 2154430517 + name 1_106_KEY_REW + 2154430518 + name 1_106_KEY_REC + 2154430519 + name 1_106_KEY_PAUSE + 2154430520 + name 1_106_KEY_STOP + 2154430521 + name 0_107_KEY_0 + 7012352 + name 0_107_KEY_1 + 7012353 + name 0_107_KEY_2 + 7012354 + name 0_107_KEY_3 + 7012355 + name 0_107_KEY_4 + 7012356 + name 0_107_KEY_5 + 7012357 + name 0_107_KEY_6 + 7012358 + name 0_107_KEY_7 + 7012359 + name 0_107_KEY_8 + 7012360 + name 0_107_KEY_9 + 7012361 + name 0_107_KEY_POWER + 7012362 + name 0_107_KEY_CH_UP + 7012367 + name 0_107_KEY_CH_DOWN + 7012368 + name 0_107_KEY_MUTE + 7012369 + name 0_107_KEY_VOL_DOWN + 7012370 + name 0_107_CH_PREVIOUS + 7012371 + name 0_107_KEY_VOL_UP + 7012372 + name 0_107_KEY_DISPLAY + 7012373 + name 0_107_KEY_MNSELECT + 7012375 + name 0_107_KEY_EXIT + 7012376 + name 0_107_KEY_INPUT + 7012378 + name 0_107_KEY_GUIDE + 7012379 + name 0_107_KEY_ENTER + 7012395 + name 0_107_KEY_MENU + 7012399 + name 0_107_KEY_MUP + 7012400 + name 0_107_KEY_MDOWN + 7012401 + name 0_107_KEY_MLEFT + 7012402 + name 0_107_KEY_MRIGHT + 7012403 + name 0_107_KEY_FF + 7012404 + name 0_107_KEY_REW + 7012406 + name 0_107_KEY_REC + 7012407 + name 0_107_KEY_PAUSE + 7012408 + name 0_108_KEY_0 + 7077888 + name 0_108_KEY_1 + 7077889 + name 0_108_KEY_2 + 7077890 + name 0_108_KEY_3 + 7077891 + name 0_108_KEY_4 + 7077892 + name 0_108_KEY_5 + 7077893 + name 0_108_KEY_6 + 7077894 + name 0_108_KEY_7 + 7077895 + name 0_108_KEY_8 + 7077896 + name 0_108_KEY_9 + 7077897 + name 0_108_KEY_POWER + 7077898 + name 0_108_KEY_CH_UP + 7077903 + name 0_108_KEY_CH_DOWN + 7077904 + name 0_108_KEY_MUTE + 7077905 + name 0_108_KEY_VOL_DOWN + 7077906 + name 0_108_CH_PREVIOUS + 7077907 + name 0_108_KEY_VOL_UP + 7077908 + name 0_108_KEY_FAVCH + 7077916 + name 0_108_KEY_SELECT + 7077918 + name 0_108_KEY_ENTER + 7077931 + name 0_108_KEY_AB + 7077950 + name 0_109_KEY_0 + 7143424 + name 0_109_KEY_1 + 7143425 + name 0_109_KEY_2 + 7143426 + name 0_109_KEY_3 + 7143427 + name 0_109_KEY_4 + 7143428 + name 0_109_KEY_5 + 7143429 + name 0_109_KEY_6 + 7143430 + name 0_109_KEY_7 + 7143431 + name 0_109_KEY_8 + 7143432 + name 0_109_KEY_9 + 7143433 + name 0_109_KEY_POWER + 7143434 + name 0_109_KEY_CH_UP + 7143439 + name 0_109_KEY_CH_DOWN + 7143440 + name 0_109_KEY_MUTE + 7143441 + name 0_109_KEY_VOL_DOWN + 7143442 + name 0_109_CH_PREVIOUS + 7143443 + name 0_109_KEY_VOL_UP + 7143444 + name 0_109_KEY_DISPLAY + 7143445 + name 0_109_KEY_MNSELECT + 7143447 + name 0_109_KEY_EXIT + 7143448 + name 0_109_KEY_GUIDE + 7143451 + name 0_109_KEY_FAV + 7143453 + name 0_109_KEY_MENU + 7143471 + name 0_109_KEY_MUP + 7143472 + name 0_109_KEY_MDOWN + 7143473 + name 0_109_KEY_MLEFT + 7143474 + name 0_109_KEY_MRIGHT + 7143475 + name 1_109_KEY_0 + 2154627072 + name 1_109_KEY_1 + 2154627073 + name 1_109_KEY_2 + 2154627074 + name 1_109_KEY_3 + 2154627075 + name 1_109_KEY_4 + 2154627076 + name 1_109_KEY_5 + 2154627077 + name 1_109_KEY_6 + 2154627078 + name 1_109_KEY_7 + 2154627079 + name 1_109_KEY_8 + 2154627080 + name 1_109_KEY_9 + 2154627081 + name 1_109_KEY_POWER + 2154627082 + name 1_109_KEY_CH_UP + 2154627087 + name 1_109_KEY_CH_DOWN + 2154627088 + name 1_109_KEY_EXIT + 2154627096 + name 1_109_KEY_GUIDE + 2154627099 + name 1_109_KEY_MENU + 2154627119 + name 1_109_KEY_MUP + 2154627120 + name 1_109_KEY_MDOWN + 2154627121 + name 1_109_KEY_MLEFT + 2154627122 + name 1_109_KEY_MRIGHT + 2154627123 + name 0_110_KEY_0 + 7208960 + name 0_110_KEY_1 + 7208961 + name 0_110_KEY_2 + 7208962 + name 0_110_KEY_3 + 7208963 + name 0_110_KEY_4 + 7208964 + name 0_110_KEY_5 + 7208965 + name 0_110_KEY_6 + 7208966 + name 0_110_KEY_7 + 7208967 + name 0_110_KEY_8 + 7208968 + name 0_110_KEY_9 + 7208969 + name 0_110_KEY_POWER + 7208970 + name 0_110_KEY_CH_UP + 7208975 + name 0_110_KEY_CH_DOWN + 7208976 + name 0_110_CH_PREVIOUS + 7208979 + name 0_110_KEY_FAV + 7208989 + name 0_110_KEY_MENU + 7209007 + name 1_110_KEY_0 + 2154692608 + name 1_110_KEY_1 + 2154692609 + name 1_110_KEY_2 + 2154692610 + name 1_110_KEY_3 + 2154692611 + name 1_110_KEY_4 + 2154692612 + name 1_110_KEY_5 + 2154692613 + name 1_110_KEY_6 + 2154692614 + name 1_110_KEY_7 + 2154692615 + name 1_110_KEY_8 + 2154692616 + name 1_110_KEY_9 + 2154692617 + name 1_110_KEY_POWER + 2154692618 + name 1_110_KEY_CH_UP + 2154692623 + name 1_110_KEY_CH_DOWN + 2154692624 + name 1_110_KEY_EXIT + 2154692632 + name 1_110_KEY_INPUT + 2154692634 + name 1_110_KEY_GUIDE + 2154692635 + name 1_110_KEY_FAV + 2154692637 + name 1_110_KEY_MENU + 2154692655 + name 1_110_KEY_MUP + 2154692656 + name 1_110_KEY_MDOWN + 2154692657 + name 1_110_KEY_MLEFT + 2154692658 + name 1_110_KEY_MRIGHT + 2154692659 + name 0_111_KEY_0 + 7274496 + name 0_111_KEY_1 + 7274497 + name 0_111_KEY_2 + 7274498 + name 0_111_KEY_3 + 7274499 + name 0_111_KEY_4 + 7274500 + name 0_111_KEY_5 + 7274501 + name 0_111_KEY_6 + 7274502 + name 0_111_KEY_7 + 7274503 + name 0_111_KEY_8 + 7274504 + name 0_111_KEY_9 + 7274505 + name 0_111_KEY_POWER + 7274506 + name 0_111_KEY_CH_UP + 7274511 + name 0_111_KEY_CH_DOWN + 7274512 + name 0_111_KEY_MUTE + 7274513 + name 0_111_KEY_VOL_DOWN + 7274514 + name 0_111_CH_PREVIOUS + 7274515 + name 0_111_KEY_VOL_UP + 7274516 + name 0_111_KEY_DISPLAY + 7274517 + name 0_111_KEY_MNSELECT + 7274519 + name 0_111_KEY_EXIT + 7274520 + name 0_111_KEY_GUIDE + 7274523 + name 0_111_KEY_ENTER + 7274539 + name 0_111_KEY_MENU + 7274543 + name 0_111_KEY_MUP + 7274544 + name 0_111_KEY_MDOWN + 7274545 + name 1_111_KEY_0 + 2154758144 + name 1_111_KEY_1 + 2154758145 + name 1_111_KEY_2 + 2154758146 + name 1_111_KEY_3 + 2154758147 + name 1_111_KEY_4 + 2154758148 + name 1_111_KEY_5 + 2154758149 + name 1_111_KEY_6 + 2154758150 + name 1_111_KEY_7 + 2154758151 + name 1_111_KEY_8 + 2154758152 + name 1_111_KEY_9 + 2154758153 + name 1_111_POWER_ON + 2154758155 + name 1_111_KEY_CH_UP + 2154758159 + name 1_111_KEY_CH_DOWN + 2154758160 + name 1_111_KEY_EXIT + 2154758168 + name 1_111_KEY_GUIDE + 2154758171 + name 1_111_KEY_MUP + 2154758192 + name 1_111_KEY_MDOWN + 2154758193 + name 1_111_KEY_MLEFT + 2154758194 + name 1_111_KEY_MRIGHT + 2154758195 + name 0_112_KEY_0 + 7340032 + name 0_112_KEY_1 + 7340033 + name 0_112_KEY_2 + 7340034 + name 0_112_KEY_3 + 7340035 + name 0_112_KEY_4 + 7340036 + name 0_112_KEY_5 + 7340037 + name 0_112_KEY_6 + 7340038 + name 0_112_KEY_7 + 7340039 + name 0_112_KEY_8 + 7340040 + name 0_112_KEY_9 + 7340041 + name 0_112_KEY_POWER + 7340042 + name 0_112_KEY_CH_UP + 7340047 + name 0_112_KEY_CH_DOWN + 7340048 + name 0_112_CH_PREVIOUS + 7340051 + name 0_112_KEY_MUP + 7340080 + name 0_112_KEY_MDOWN + 7340081 + name 1_112_KEY_0 + 2154823680 + name 1_112_KEY_1 + 2154823681 + name 1_112_KEY_2 + 2154823682 + name 1_112_KEY_3 + 2154823683 + name 1_112_KEY_4 + 2154823684 + name 1_112_KEY_5 + 2154823685 + name 1_112_KEY_6 + 2154823686 + name 1_112_KEY_7 + 2154823687 + name 1_112_KEY_8 + 2154823688 + name 1_112_KEY_9 + 2154823689 + name 1_112_KEY_POWER + 2154823690 + name 1_112_KEY_CH_UP + 2154823695 + name 1_112_KEY_CH_DOWN + 2154823696 + name 1_112_KEY_EXIT + 2154823704 + name 1_112_KEY_INPUT + 2154823706 + name 1_112_KEY_FAV + 2154823709 + name 1_112_KEY_MNRETRUN + 2154823712 + name 1_112_KEY_MENU + 2154823727 + name 1_112_KEY_MUP + 2154823728 + name 1_112_KEY_MDOWN + 2154823729 + name 1_112_KEY_MLEFT + 2154823730 + name 1_112_KEY_MRIGHT + 2154823731 + name 0_113_KEY_0 + 7405568 + name 0_113_KEY_1 + 7405569 + name 0_113_KEY_2 + 7405570 + name 0_113_KEY_3 + 7405571 + name 0_113_KEY_4 + 7405572 + name 0_113_KEY_5 + 7405573 + name 0_113_KEY_6 + 7405574 + name 0_113_KEY_7 + 7405575 + name 0_113_KEY_8 + 7405576 + name 0_113_KEY_9 + 7405577 + name 0_113_KEY_POWER + 7405578 + name 0_113_KEY_CH_UP + 7405583 + name 0_113_KEY_CH_DOWN + 7405584 + name 0_113_KEY_MUTE + 7405585 + name 0_113_KEY_VOL_DOWN + 7405586 + name 0_113_CH_PREVIOUS + 7405587 + name 0_113_KEY_VOL_UP + 7405588 + name 0_113_KEY_DISPLAY + 7405589 + name 1_113_KEY_0 + 2154889216 + name 1_113_KEY_1 + 2154889217 + name 1_113_KEY_2 + 2154889218 + name 1_113_KEY_3 + 2154889219 + name 1_113_KEY_4 + 2154889220 + name 1_113_KEY_5 + 2154889221 + name 1_113_KEY_6 + 2154889222 + name 1_113_KEY_7 + 2154889223 + name 1_113_KEY_8 + 2154889224 + name 1_113_KEY_9 + 2154889225 + name 1_113_KEY_POWER + 2154889226 + name 1_113_KEY_CH_UP + 2154889231 + name 1_113_KEY_CH_DOWN + 2154889232 + name 1_113_KEY_EXIT + 2154889240 + name 1_113_KEY_INPUT + 2154889242 + name 1_113_KEY_GUIDE + 2154889243 + name 1_113_KEY_MNRETRUN + 2154889248 + name 1_113_KEY_ENTER + 2154889259 + name 1_113_KEY_MENU + 2154889263 + name 1_113_KEY_MUP + 2154889264 + name 1_113_KEY_MDOWN + 2154889265 + name 1_113_KEY_MLEFT + 2154889266 + name 1_113_KEY_MRIGHT + 2154889267 + name 0_114_KEY_0 + 7471104 + name 0_114_KEY_1 + 7471105 + name 0_114_KEY_2 + 7471106 + name 0_114_KEY_3 + 7471107 + name 0_114_KEY_4 + 7471108 + name 0_114_KEY_5 + 7471109 + name 0_114_KEY_6 + 7471110 + name 0_114_KEY_7 + 7471111 + name 0_114_KEY_8 + 7471112 + name 0_114_KEY_9 + 7471113 + name 0_114_KEY_POWER + 7471114 + name 0_114_KEY_CH_UP + 7471119 + name 0_114_KEY_CH_DOWN + 7471120 + name 0_114_KEY_MUTE + 7471121 + name 0_114_KEY_VOL_DOWN + 7471122 + name 0_114_CH_PREVIOUS + 7471123 + name 0_114_KEY_VOL_UP + 7471124 + name 1_114_KEY_0 + 2154954752 + name 1_114_KEY_1 + 2154954753 + name 1_114_KEY_2 + 2154954754 + name 1_114_KEY_3 + 2154954755 + name 1_114_KEY_4 + 2154954756 + name 1_114_KEY_5 + 2154954757 + name 1_114_KEY_6 + 2154954758 + name 1_114_KEY_7 + 2154954759 + name 1_114_KEY_8 + 2154954760 + name 1_114_KEY_9 + 2154954761 + name 1_114_KEY_POWER + 2154954762 + name 1_114_KEY_CH_UP + 2154954767 + name 1_114_KEY_CH_DOWN + 2154954768 + name 1_114_KEY_EXIT + 2154954776 + name 1_114_KEY_INPUT + 2154954778 + name 1_114_KEY_GUIDE + 2154954779 + name 1_114_KEY_MNRETRUN + 2154954784 + name 1_114_KEY_ENTER + 2154954795 + name 1_114_KEY_MUP + 2154954800 + name 1_114_KEY_MDOWN + 2154954801 + name 1_114_KEY_MLEFT + 2154954802 + name 1_114_KEY_MRIGHT + 2154954803 + name 0_115_KEY_0 + 7536640 + name 0_115_KEY_1 + 7536641 + name 0_115_KEY_2 + 7536642 + name 0_115_KEY_3 + 7536643 + name 0_115_KEY_4 + 7536644 + name 0_115_KEY_5 + 7536645 + name 0_115_KEY_6 + 7536646 + name 0_115_KEY_7 + 7536647 + name 0_115_KEY_8 + 7536648 + name 0_115_KEY_9 + 7536649 + name 0_115_KEY_POWER + 7536650 + name 0_115_KEY_CH_UP + 7536655 + name 0_115_KEY_CH_DOWN + 7536656 + name 0_115_KEY_MUTE + 7536657 + name 0_115_KEY_VOL_DOWN + 7536658 + name 0_115_CH_PREVIOUS + 7536659 + name 0_115_KEY_VOL_UP + 7536660 + name 0_115_KEY_DISPLAY + 7536661 + name 0_115_KEY_MNSELECT + 7536663 + name 0_115_KEY_EXIT + 7536664 + name 0_115_KEY_GUIDE + 7536667 + name 0_115_KEY_MENU + 7536687 + name 0_115_KEY_MUP + 7536688 + name 0_115_KEY_MDOWN + 7536689 + name 0_115_KEY_MLEFT + 7536690 + name 0_115_KEY_MRIGHT + 7536691 + name 1_115_KEY_0 + 2155020288 + name 1_115_KEY_1 + 2155020289 + name 1_115_KEY_2 + 2155020290 + name 1_115_KEY_3 + 2155020291 + name 1_115_KEY_4 + 2155020292 + name 1_115_KEY_5 + 2155020293 + name 1_115_KEY_6 + 2155020294 + name 1_115_KEY_7 + 2155020295 + name 1_115_KEY_8 + 2155020296 + name 1_115_KEY_9 + 2155020297 + name 1_115_KEY_POWER + 2155020298 + name 1_115_KEY_CH_UP + 2155020303 + name 1_115_KEY_CH_DOWN + 2155020304 + name 1_115_KEY_EXIT + 2155020312 + name 1_115_KEY_INPUT + 2155020314 + name 1_115_KEY_GUIDE + 2155020315 + name 1_115_KEY_MNRETRUN + 2155020320 + name 1_115_KEY_ENTER + 2155020331 + name 1_115_KEY_MUP + 2155020336 + name 1_115_KEY_MDOWN + 2155020337 + name 1_115_KEY_MLEFT + 2155020338 + name 1_115_KEY_MRIGHT + 2155020339 + name 0_116_KEY_0 + 7602176 + name 0_116_KEY_1 + 7602177 + name 0_116_KEY_2 + 7602178 + name 0_116_KEY_3 + 7602179 + name 0_116_KEY_4 + 7602180 + name 0_116_KEY_5 + 7602181 + name 0_116_KEY_6 + 7602182 + name 0_116_KEY_7 + 7602183 + name 0_116_KEY_8 + 7602184 + name 0_116_KEY_9 + 7602185 + name 0_116_KEY_POWER + 7602186 + name 0_116_KEY_CH_UP + 7602191 + name 0_116_KEY_CH_DOWN + 7602192 + name 0_116_CH_PREVIOUS + 7602195 + name 1_116_KEY_0 + 2155085824 + name 1_116_KEY_1 + 2155085825 + name 1_116_KEY_2 + 2155085826 + name 1_116_KEY_3 + 2155085827 + name 1_116_KEY_4 + 2155085828 + name 1_116_KEY_5 + 2155085829 + name 1_116_KEY_6 + 2155085830 + name 1_116_KEY_7 + 2155085831 + name 1_116_KEY_8 + 2155085832 + name 1_116_KEY_9 + 2155085833 + name 1_116_KEY_POWER + 2155085834 + name 1_116_KEY_CH_UP + 2155085839 + name 1_116_KEY_CH_DOWN + 2155085840 + name 1_116_KEY_EXIT + 2155085848 + name 1_116_KEY_INPUT + 2155085850 + name 1_116_KEY_GUIDE + 2155085851 + name 1_116_KEY_MNRETRUN + 2155085856 + name 1_116_KEY_ENTER + 2155085867 + name 1_116_KEY_MUP + 2155085872 + name 1_116_KEY_MDOWN + 2155085873 + name 1_116_KEY_MLEFT + 2155085874 + name 1_116_KEY_MRIGHT + 2155085875 + name 0_117_KEY_0 + 7667712 + name 0_117_KEY_1 + 7667713 + name 0_117_KEY_2 + 7667714 + name 0_117_KEY_3 + 7667715 + name 0_117_KEY_4 + 7667716 + name 0_117_KEY_5 + 7667717 + name 0_117_KEY_6 + 7667718 + name 0_117_KEY_7 + 7667719 + name 0_117_KEY_8 + 7667720 + name 0_117_KEY_9 + 7667721 + name 0_117_KEY_POWER + 7667722 + name 0_117_KEY_CH_UP + 7667727 + name 0_117_KEY_CH_DOWN + 7667728 + name 0_117_KEY_MUTE + 7667729 + name 0_117_KEY_VOL_DOWN + 7667730 + name 0_117_CH_PREVIOUS + 7667731 + name 0_117_KEY_VOL_UP + 7667732 + name 0_117_KEY_DISPLAY + 7667733 + name 0_117_KEY_MNSELECT + 7667735 + name 0_117_KEY_EXIT + 7667736 + name 0_117_KEY_GUIDE + 7667739 + name 0_117_KEY_ENTER + 7667755 + name 0_117_KEY_MENU + 7667759 + name 0_117_KEY_MUP + 7667760 + name 0_117_KEY_MDOWN + 7667761 + name 0_117_KEY_MLEFT + 7667762 + name 0_117_KEY_MRIGHT + 7667763 + name 1_117_KEY_0 + 2155151360 + name 1_117_KEY_1 + 2155151361 + name 1_117_KEY_2 + 2155151362 + name 1_117_KEY_3 + 2155151363 + name 1_117_KEY_4 + 2155151364 + name 1_117_KEY_5 + 2155151365 + name 1_117_KEY_6 + 2155151366 + name 1_117_KEY_7 + 2155151367 + name 1_117_KEY_8 + 2155151368 + name 1_117_KEY_9 + 2155151369 + name 1_117_KEY_POWER + 2155151370 + name 1_117_KEY_CH_UP + 2155151375 + name 1_117_KEY_CH_DOWN + 2155151376 + name 1_117_KEY_EXIT + 2155151384 + name 1_117_KEY_INPUT + 2155151386 + name 1_117_KEY_GUIDE + 2155151387 + name 1_117_KEY_MNRETRUN + 2155151392 + name 1_117_KEY_ENTER + 2155151403 + name 1_117_KEY_MUP + 2155151408 + name 1_117_KEY_MDOWN + 2155151409 + name 1_117_KEY_MLEFT + 2155151410 + name 1_117_KEY_MRIGHT + 2155151411 + name 0_118_KEY_0 + 7733248 + name 0_118_KEY_1 + 7733249 + name 0_118_KEY_2 + 7733250 + name 0_118_KEY_3 + 7733251 + name 0_118_KEY_4 + 7733252 + name 0_118_KEY_5 + 7733253 + name 0_118_KEY_6 + 7733254 + name 0_118_KEY_7 + 7733255 + name 0_118_KEY_8 + 7733256 + name 0_118_KEY_9 + 7733257 + name 0_118_KEY_POWER + 7733258 + name 0_118_KEY_CH_UP + 7733263 + name 0_118_KEY_CH_DOWN + 7733264 + name 0_118_KEY_MUTE + 7733265 + name 0_118_KEY_VOL_DOWN + 7733266 + name 0_118_KEY_VOL_UP + 7733268 + name 0_118_KEY_DISPLAY + 7733269 + name 1_118_KEY_0 + 2155216896 + name 1_118_KEY_1 + 2155216897 + name 1_118_KEY_2 + 2155216898 + name 1_118_KEY_3 + 2155216899 + name 1_118_KEY_4 + 2155216900 + name 1_118_KEY_5 + 2155216901 + name 1_118_KEY_6 + 2155216902 + name 1_118_KEY_7 + 2155216903 + name 1_118_KEY_8 + 2155216904 + name 1_118_KEY_9 + 2155216905 + name 1_118_KEY_POWER + 2155216906 + name 1_118_KEY_CH_UP + 2155216911 + name 1_118_KEY_CH_DOWN + 2155216912 + name 1_118_KEY_EXIT + 2155216920 + name 1_118_KEY_INPUT + 2155216922 + name 1_118_KEY_GUIDE + 2155216923 + name 1_118_KEY_MNRETRUN + 2155216928 + name 1_118_KEY_ENTER + 2155216939 + name 1_118_KEY_MUP + 2155216944 + name 1_118_KEY_MDOWN + 2155216945 + name 1_118_KEY_MLEFT + 2155216946 + name 1_118_KEY_MRIGHT + 2155216947 + name 0_119_KEY_0 + 7798784 + name 0_119_KEY_1 + 7798785 + name 0_119_KEY_2 + 7798786 + name 0_119_KEY_3 + 7798787 + name 0_119_KEY_4 + 7798788 + name 0_119_KEY_5 + 7798789 + name 0_119_KEY_6 + 7798790 + name 0_119_KEY_7 + 7798791 + name 0_119_KEY_8 + 7798792 + name 0_119_KEY_9 + 7798793 + name 0_119_KEY_POWER + 7798794 + name 0_119_KEY_CH_UP + 7798799 + name 0_119_KEY_CH_DOWN + 7798800 + name 0_119_KEY_MUTE + 7798801 + name 0_119_KEY_VOL_DOWN + 7798802 + name 0_119_CH_PREVIOUS + 7798803 + name 0_119_KEY_VOL_UP + 7798804 + name 0_119_KEY_DISPLAY + 7798805 + name 0_119_KEY_MNSELECT + 7798807 + name 0_119_KEY_EXIT + 7798808 + name 0_119_KEY_GUIDE + 7798811 + name 0_119_KEY_MENU + 7798831 + name 0_119_KEY_MUP + 7798832 + name 0_119_KEY_MDOWN + 7798833 + name 0_119_KEY_MLEFT + 7798834 + name 0_119_KEY_MRIGHT + 7798835 + name 1_119_KEY_0 + 2155282432 + name 1_119_KEY_1 + 2155282433 + name 1_119_KEY_2 + 2155282434 + name 1_119_KEY_3 + 2155282435 + name 1_119_KEY_4 + 2155282436 + name 1_119_KEY_5 + 2155282437 + name 1_119_KEY_6 + 2155282438 + name 1_119_KEY_7 + 2155282439 + name 1_119_KEY_8 + 2155282440 + name 1_119_KEY_9 + 2155282441 + name 1_119_KEY_POWER + 2155282442 + name 1_119_KEY_CH_UP + 2155282447 + name 1_119_KEY_CH_DOWN + 2155282448 + name 1_119_KEY_EXIT + 2155282456 + name 1_119_KEY_INPUT + 2155282458 + name 1_119_KEY_GUIDE + 2155282459 + name 1_119_KEY_MNRETRUN + 2155282464 + name 1_119_KEY_ENTER + 2155282475 + name 1_119_KEY_MUP + 2155282480 + name 1_119_KEY_MDOWN + 2155282481 + name 1_119_KEY_MLEFT + 2155282482 + name 1_119_KEY_MRIGHT + 2155282483 + name 0_120_KEY_0 + 7864320 + name 0_120_KEY_1 + 7864321 + name 0_120_KEY_2 + 7864322 + name 0_120_KEY_3 + 7864323 + name 0_120_KEY_4 + 7864324 + name 0_120_KEY_5 + 7864325 + name 0_120_KEY_6 + 7864326 + name 0_120_KEY_7 + 7864327 + name 0_120_KEY_8 + 7864328 + name 0_120_KEY_9 + 7864329 + name 0_120_KEY_POWER + 7864330 + name 0_120_KEY_CH_UP + 7864335 + name 0_120_KEY_CH_DOWN + 7864336 + name 0_120_KEY_MUTE + 7864337 + name 0_120_KEY_VOL_DOWN + 7864338 + name 0_120_CH_PREVIOUS + 7864339 + name 0_120_KEY_VOL_UP + 7864340 + name 0_120_KEY_DISPLAY + 7864341 + name 0_120_KEY_MNSELECT + 7864343 + name 0_120_KEY_EXIT + 7864344 + name 0_120_KEY_GUIDE + 7864347 + name 0_120_KEY_MENU + 7864367 + name 0_120_KEY_MUP + 7864368 + name 0_120_KEY_MDOWN + 7864369 + name 0_120_KEY_MLEFT + 7864370 + name 0_120_KEY_MRIGHT + 7864371 + name 1_120_KEY_0 + 2155347968 + name 1_120_KEY_1 + 2155347969 + name 1_120_KEY_2 + 2155347970 + name 1_120_KEY_3 + 2155347971 + name 1_120_KEY_4 + 2155347972 + name 1_120_KEY_5 + 2155347973 + name 1_120_KEY_6 + 2155347974 + name 1_120_KEY_7 + 2155347975 + name 1_120_KEY_8 + 2155347976 + name 1_120_KEY_9 + 2155347977 + name 1_120_KEY_POWER + 2155347978 + name 1_120_KEY_CH_UP + 2155347983 + name 1_120_KEY_CH_DOWN + 2155347984 + name 1_120_KEY_EXIT + 2155347992 + name 1_120_KEY_INPUT + 2155347994 + name 1_120_KEY_GUIDE + 2155347995 + name 1_120_KEY_MNRETRUN + 2155348000 + name 1_120_KEY_ENTER + 2155348011 + name 1_120_KEY_MUP + 2155348016 + name 1_120_KEY_MDOWN + 2155348017 + name 1_120_KEY_MLEFT + 2155348018 + name 1_120_KEY_MRIGHT + 2155348019 + name 0_121_KEY_0 + 7929856 + name 0_121_KEY_1 + 7929857 + name 0_121_KEY_2 + 7929858 + name 0_121_KEY_3 + 7929859 + name 0_121_KEY_4 + 7929860 + name 0_121_KEY_5 + 7929861 + name 0_121_KEY_6 + 7929862 + name 0_121_KEY_7 + 7929863 + name 0_121_KEY_8 + 7929864 + name 0_121_KEY_9 + 7929865 + name 0_121_KEY_POWER + 7929866 + name 0_121_KEY_CH_UP + 7929871 + name 0_121_KEY_CH_DOWN + 7929872 + name 0_121_KEY_MUTE + 7929873 + name 0_121_KEY_VOL_DOWN + 7929874 + name 0_121_CH_PREVIOUS + 7929875 + name 0_121_KEY_VOL_UP + 7929876 + name 0_121_KEY_MENU + 7929903 + name 1_121_KEY_0 + 2155413504 + name 1_121_KEY_1 + 2155413505 + name 1_121_KEY_2 + 2155413506 + name 1_121_KEY_3 + 2155413507 + name 1_121_KEY_4 + 2155413508 + name 1_121_KEY_5 + 2155413509 + name 1_121_KEY_6 + 2155413510 + name 1_121_KEY_7 + 2155413511 + name 1_121_KEY_8 + 2155413512 + name 1_121_KEY_9 + 2155413513 + name 1_121_KEY_POWER + 2155413514 + name 1_121_KEY_CH_UP + 2155413519 + name 1_121_KEY_CH_DOWN + 2155413520 + name 1_121_KEY_EXIT + 2155413528 + name 1_121_KEY_INPUT + 2155413530 + name 1_121_KEY_GUIDE + 2155413531 + name 1_121_KEY_MNRETRUN + 2155413536 + name 1_121_KEY_ENTER + 2155413547 + name 1_121_KEY_MUP + 2155413552 + name 1_121_KEY_MDOWN + 2155413553 + name 1_121_KEY_MLEFT + 2155413554 + name 1_121_KEY_MRIGHT + 2155413555 + name 0_122_KEY_0 + 7995392 + name 0_122_KEY_1 + 7995393 + name 0_122_KEY_2 + 7995394 + name 0_122_KEY_3 + 7995395 + name 0_122_KEY_4 + 7995396 + name 0_122_KEY_5 + 7995397 + name 0_122_KEY_6 + 7995398 + name 0_122_KEY_7 + 7995399 + name 0_122_KEY_8 + 7995400 + name 0_122_KEY_9 + 7995401 + name 0_122_KEY_POWER + 7995402 + name 0_122_KEY_CH_UP + 7995407 + name 0_122_KEY_CH_DOWN + 7995408 + name 0_122_KEY_MUTE + 7995409 + name 0_122_KEY_VOL_DOWN + 7995410 + name 0_122_CH_PREVIOUS + 7995411 + name 0_122_KEY_VOL_UP + 7995412 + name 0_122_KEY_DISPLAY + 7995413 + name 0_122_KEY_MNSELECT + 7995415 + name 0_122_KEY_EXIT + 7995416 + name 0_122_KEY_GUIDE + 7995419 + name 0_122_KEY_ENTER + 7995435 + name 0_122_KEY_MENU + 7995439 + name 0_122_KEY_MUP + 7995440 + name 0_122_KEY_MDOWN + 7995441 + name 0_122_KEY_MLEFT + 7995442 + name 0_122_KEY_MRIGHT + 7995443 + name 1_122_KEY_0 + 2155479040 + name 1_122_KEY_1 + 2155479041 + name 1_122_KEY_2 + 2155479042 + name 1_122_KEY_3 + 2155479043 + name 1_122_KEY_4 + 2155479044 + name 1_122_KEY_5 + 2155479045 + name 1_122_KEY_6 + 2155479046 + name 1_122_KEY_7 + 2155479047 + name 1_122_KEY_8 + 2155479048 + name 1_122_KEY_9 + 2155479049 + name 1_122_KEY_POWER + 2155479050 + name 1_122_KEY_CH_UP + 2155479055 + name 1_122_KEY_CH_DOWN + 2155479056 + name 1_122_KEY_EXIT + 2155479064 + name 1_122_KEY_INPUT + 2155479066 + name 1_122_KEY_GUIDE + 2155479067 + name 1_122_KEY_MNRETRUN + 2155479072 + name 1_122_KEY_ENTER + 2155479083 + name 1_122_KEY_MUP + 2155479088 + name 1_122_KEY_MDOWN + 2155479089 + name 1_122_KEY_MLEFT + 2155479090 + name 1_122_KEY_MRIGHT + 2155479091 + name 0_123_KEY_0 + 8060928 + name 0_123_KEY_1 + 8060929 + name 0_123_KEY_2 + 8060930 + name 0_123_KEY_3 + 8060931 + name 0_123_KEY_4 + 8060932 + name 0_123_KEY_5 + 8060933 + name 0_123_KEY_6 + 8060934 + name 0_123_KEY_7 + 8060935 + name 0_123_KEY_8 + 8060936 + name 0_123_KEY_9 + 8060937 + name 0_123_KEY_POWER + 8060938 + name 0_123_KEY_CH_UP + 8060943 + name 0_123_KEY_CH_DOWN + 8060944 + name 0_123_KEY_MUTE + 8060945 + name 0_123_KEY_VOL_DOWN + 8060946 + name 0_123_CH_PREVIOUS + 8060947 + name 0_123_KEY_VOL_UP + 8060948 + name 0_123_KEY_DISPLAY + 8060949 + name 0_123_KEY_MNSELECT + 8060951 + name 0_123_KEY_GUIDE + 8060955 + name 0_123_KEY_MENU + 8060975 + name 0_123_KEY_MUP + 8060976 + name 0_123_KEY_MDOWN + 8060977 + name 0_123_KEY_MLEFT + 8060978 + name 0_123_KEY_MRIGHT + 8060979 + name 0_123_KEY_FF + 8060980 + name 0_123_KEY_REW + 8060982 + name 0_123_KEY_PAUSE + 8060984 + name 1_123_KEY_0 + 2155544576 + name 1_123_KEY_1 + 2155544577 + name 1_123_KEY_2 + 2155544578 + name 1_123_KEY_3 + 2155544579 + name 1_123_KEY_4 + 2155544580 + name 1_123_KEY_5 + 2155544581 + name 1_123_KEY_6 + 2155544582 + name 1_123_KEY_7 + 2155544583 + name 1_123_KEY_8 + 2155544584 + name 1_123_KEY_9 + 2155544585 + name 1_123_KEY_POWER + 2155544586 + name 1_123_KEY_CH_UP + 2155544591 + name 1_123_KEY_CH_DOWN + 2155544592 + name 1_123_KEY_EXIT + 2155544600 + name 1_123_KEY_INPUT + 2155544602 + name 1_123_KEY_GUIDE + 2155544603 + name 1_123_KEY_MNRETRUN + 2155544608 + name 1_123_KEY_ENTER + 2155544619 + name 1_123_KEY_MUP + 2155544624 + name 1_123_KEY_MDOWN + 2155544625 + name 1_123_KEY_MLEFT + 2155544626 + name 1_123_KEY_MRIGHT + 2155544627 + name 0_124_KEY_0 + 8126464 + name 0_124_KEY_1 + 8126465 + name 0_124_KEY_2 + 8126466 + name 0_124_KEY_3 + 8126467 + name 0_124_KEY_4 + 8126468 + name 0_124_KEY_5 + 8126469 + name 0_124_KEY_6 + 8126470 + name 0_124_KEY_7 + 8126471 + name 0_124_KEY_8 + 8126472 + name 0_124_KEY_9 + 8126473 + name 0_124_KEY_POWER + 8126474 + name 0_124_KEY_CH_UP + 8126479 + name 0_124_KEY_CH_DOWN + 8126480 + name 0_124_KEY_MUTE + 8126481 + name 0_124_KEY_VOL_DOWN + 8126482 + name 0_124_CH_PREVIOUS + 8126483 + name 0_124_KEY_VOL_UP + 8126484 + name 0_124_KEY_DISPLAY + 8126485 + name 0_124_KEY_EXIT + 8126488 + name 0_124_KEY_GUIDE + 8126491 + name 0_124_KEY_ENTER + 8126507 + name 0_124_KEY_MENU + 8126511 + name 0_124_KEY_MUP + 8126512 + name 0_124_KEY_MDOWN + 8126513 + name 0_124_KEY_MLEFT + 8126514 + name 0_124_KEY_MRIGHT + 8126515 + name 1_124_KEY_0 + 2155610112 + name 1_124_KEY_1 + 2155610113 + name 1_124_KEY_2 + 2155610114 + name 1_124_KEY_3 + 2155610115 + name 1_124_KEY_4 + 2155610116 + name 1_124_KEY_5 + 2155610117 + name 1_124_KEY_6 + 2155610118 + name 1_124_KEY_7 + 2155610119 + name 1_124_KEY_8 + 2155610120 + name 1_124_KEY_9 + 2155610121 + name 1_124_KEY_POWER + 2155610122 + name 1_124_KEY_CH_UP + 2155610127 + name 1_124_KEY_CH_DOWN + 2155610128 + name 1_124_KEY_EXIT + 2155610136 + name 1_124_KEY_INPUT + 2155610138 + name 1_124_KEY_GUIDE + 2155610139 + name 1_124_KEY_MNRETRUN + 2155610144 + name 1_124_KEY_ENTER + 2155610155 + name 1_124_KEY_MUP + 2155610160 + name 1_124_KEY_MDOWN + 2155610161 + name 1_124_KEY_MLEFT + 2155610162 + name 1_124_KEY_MRIGHT + 2155610163 + name 0_125_KEY_0 + 8192000 + name 0_125_KEY_1 + 8192001 + name 0_125_KEY_2 + 8192002 + name 0_125_KEY_3 + 8192003 + name 0_125_KEY_4 + 8192004 + name 0_125_KEY_5 + 8192005 + name 0_125_KEY_6 + 8192006 + name 0_125_KEY_7 + 8192007 + name 0_125_KEY_8 + 8192008 + name 0_125_KEY_9 + 8192009 + name 0_125_KEY_POWER + 8192010 + name 0_125_KEY_CH_UP + 8192015 + name 0_125_KEY_CH_DOWN + 8192016 + name 0_125_KEY_MUTE + 8192017 + name 0_125_KEY_VOL_DOWN + 8192018 + name 0_125_CH_PREVIOUS + 8192019 + name 0_125_KEY_VOL_UP + 8192020 + name 0_125_KEY_DISPLAY + 8192021 + name 0_125_KEY_MNSELECT + 8192023 + name 0_125_KEY_EXIT + 8192024 + name 0_125_KEY_GUIDE + 8192027 + name 0_125_KEY_ENTER + 8192043 + name 0_125_KEY_MENU + 8192047 + name 0_125_KEY_MUP + 8192048 + name 0_125_KEY_MDOWN + 8192049 + name 0_125_KEY_MLEFT + 8192050 + name 0_125_KEY_MRIGHT + 8192051 + name 0_125_KEY_FF + 8192052 + name 0_125_KEY_PLAY + 8192053 + name 0_125_KEY_REW + 8192054 + name 0_125_KEY_PAUSE + 8192056 + name 0_125_KEY_STOP + 8192057 + name 1_125_KEY_0 + 2155675648 + name 1_125_KEY_1 + 2155675649 + name 1_125_KEY_2 + 2155675650 + name 1_125_KEY_3 + 2155675651 + name 1_125_KEY_4 + 2155675652 + name 1_125_KEY_5 + 2155675653 + name 1_125_KEY_6 + 2155675654 + name 1_125_KEY_7 + 2155675655 + name 1_125_KEY_8 + 2155675656 + name 1_125_KEY_9 + 2155675657 + name 1_125_KEY_POWER + 2155675658 + name 1_125_KEY_CH_UP + 2155675663 + name 1_125_KEY_CH_DOWN + 2155675664 + name 1_125_CH_PREVIOUS + 2155675667 + name 1_125_KEY_DISPLAY + 2155675669 + name 1_125_KEY_EXIT + 2155675672 + name 1_125_KEY_GUIDE + 2155675675 + name 1_125_KEY_MNRETRUN + 2155675680 + name 1_125_KEY_ENTER + 2155675691 + name 1_125_KEY_MENU + 2155675695 + name 1_125_KEY_MUP + 2155675696 + name 1_125_KEY_MDOWN + 2155675697 + name 1_125_KEY_MLEFT + 2155675698 + name 1_125_KEY_MRIGHT + 2155675699 + name 0_126_KEY_0 + 8257536 + name 0_126_KEY_1 + 8257537 + name 0_126_KEY_2 + 8257538 + name 0_126_KEY_3 + 8257539 + name 0_126_KEY_4 + 8257540 + name 0_126_KEY_5 + 8257541 + name 0_126_KEY_6 + 8257542 + name 0_126_KEY_7 + 8257543 + name 0_126_KEY_8 + 8257544 + name 0_126_KEY_9 + 8257545 + name 0_126_KEY_POWER + 8257546 + name 0_126_KEY_CH_UP + 8257551 + name 0_126_KEY_CH_DOWN + 8257552 + name 0_126_KEY_MUTE + 8257553 + name 0_126_KEY_VOL_DOWN + 8257554 + name 0_126_CH_PREVIOUS + 8257555 + name 0_126_KEY_VOL_UP + 8257556 + name 0_126_KEY_DISPLAY + 8257557 + name 0_126_KEY_MNSELECT + 8257559 + name 0_126_KEY_EXIT + 8257560 + name 0_126_KEY_GUIDE + 8257563 + name 0_126_KEY_MENU + 8257583 + name 0_126_KEY_MUP + 8257584 + name 0_126_KEY_MDOWN + 8257585 + name 0_126_KEY_MLEFT + 8257586 + name 0_126_KEY_MRIGHT + 8257587 + name 0_126_KEY_FF + 8257588 + name 0_126_KEY_PLAY + 8257589 + name 0_126_KEY_REW + 8257590 + name 0_126_KEY_PAUSE + 8257592 + name 0_126_KEY_STOP + 8257593 + name 1_126_KEY_0 + 2155741184 + name 1_126_KEY_1 + 2155741185 + name 1_126_KEY_2 + 2155741186 + name 1_126_KEY_3 + 2155741187 + name 1_126_KEY_4 + 2155741188 + name 1_126_KEY_5 + 2155741189 + name 1_126_KEY_6 + 2155741190 + name 1_126_KEY_7 + 2155741191 + name 1_126_KEY_8 + 2155741192 + name 1_126_KEY_9 + 2155741193 + name 1_126_KEY_POWER + 2155741194 + name 1_126_KEY_CH_UP + 2155741199 + name 1_126_KEY_CH_DOWN + 2155741200 + name 1_126_CH_PREVIOUS + 2155741203 + name 1_126_KEY_DISPLAY + 2155741205 + name 1_126_KEY_EXIT + 2155741208 + name 1_126_KEY_INPUT + 2155741210 + name 1_126_KEY_GUIDE + 2155741211 + name 1_126_KEY_ENTER + 2155741227 + name 1_126_KEY_MENU + 2155741231 + name 1_126_KEY_MUP + 2155741232 + name 1_126_KEY_MDOWN + 2155741233 + name 1_126_KEY_MLEFT + 2155741234 + name 1_126_KEY_MRIGHT + 2155741235 + name 0_127_KEY_0 + 8323072 + name 0_127_KEY_1 + 8323073 + name 0_127_KEY_2 + 8323074 + name 0_127_KEY_3 + 8323075 + name 0_127_KEY_4 + 8323076 + name 0_127_KEY_5 + 8323077 + name 0_127_KEY_6 + 8323078 + name 0_127_KEY_7 + 8323079 + name 0_127_KEY_8 + 8323080 + name 0_127_KEY_9 + 8323081 + name 0_127_KEY_POWER + 8323082 + name 0_127_KEY_CH_UP + 8323087 + name 0_127_KEY_CH_DOWN + 8323088 + name 0_127_KEY_MUTE + 8323089 + name 0_127_KEY_VOL_DOWN + 8323090 + name 0_127_CH_PREVIOUS + 8323091 + name 0_127_KEY_VOL_UP + 8323092 + name 0_127_KEY_DISPLAY + 8323093 + name 0_127_KEY_MNSELECT + 8323095 + name 0_127_KEY_EXIT + 8323096 + name 0_127_KEY_GUIDE + 8323099 + name 0_127_KEY_MENU + 8323119 + name 0_127_KEY_MUP + 8323120 + name 0_127_KEY_MDOWN + 8323121 + name 0_127_KEY_MLEFT + 8323122 + name 0_127_KEY_MRIGHT + 8323123 + name 1_127_KEY_0 + 2155806720 + name 1_127_KEY_1 + 2155806721 + name 1_127_KEY_2 + 2155806722 + name 1_127_KEY_3 + 2155806723 + name 1_127_KEY_4 + 2155806724 + name 1_127_KEY_5 + 2155806725 + name 1_127_KEY_6 + 2155806726 + name 1_127_KEY_7 + 2155806727 + name 1_127_KEY_8 + 2155806728 + name 1_127_KEY_9 + 2155806729 + name 1_127_KEY_POWER + 2155806730 + name 1_127_KEY_CH_UP + 2155806735 + name 1_127_KEY_CH_DOWN + 2155806736 + name 1_127_CH_PREVIOUS + 2155806739 + name 1_127_KEY_DISPLAY + 2155806741 + name 1_127_KEY_EXIT + 2155806744 + name 1_127_KEY_GUIDE + 2155806747 + name 1_127_KEY_ENTER + 2155806763 + name 1_127_KEY_MENU + 2155806767 + name 1_127_KEY_MUP + 2155806768 + name 1_127_KEY_MDOWN + 2155806769 + name 1_127_KEY_MLEFT + 2155806770 + name 1_127_KEY_MRIGHT + 2155806771 + name 0_128_KEY_0 + 8388608 + name 0_128_KEY_1 + 8388609 + name 0_128_KEY_2 + 8388610 + name 0_128_KEY_3 + 8388611 + name 0_128_KEY_4 + 8388612 + name 0_128_KEY_5 + 8388613 + name 0_128_KEY_6 + 8388614 + name 0_128_KEY_7 + 8388615 + name 0_128_KEY_8 + 8388616 + name 0_128_KEY_9 + 8388617 + name 0_128_KEY_POWER + 8388618 + name 0_128_KEY_CH_UP + 8388623 + name 0_128_KEY_CH_DOWN + 8388624 + name 0_128_KEY_MUTE + 8388625 + name 0_128_KEY_VOL_DOWN + 8388626 + name 0_128_CH_PREVIOUS + 8388627 + name 0_128_KEY_VOL_UP + 8388628 + name 0_128_KEY_DISPLAY + 8388629 + name 0_128_KEY_MNSELECT + 8388631 + name 0_128_KEY_EXIT + 8388632 + name 0_128_KEY_GUIDE + 8388635 + name 0_128_KEY_ENTER + 8388651 + name 0_128_KEY_MENU + 8388655 + name 0_128_KEY_MUP + 8388656 + name 0_128_KEY_MDOWN + 8388657 + name 0_128_KEY_MLEFT + 8388658 + name 0_128_KEY_MRIGHT + 8388659 + name 1_128_KEY_0 + 2155872256 + name 1_128_KEY_1 + 2155872257 + name 1_128_KEY_2 + 2155872258 + name 1_128_KEY_3 + 2155872259 + name 1_128_KEY_4 + 2155872260 + name 1_128_KEY_5 + 2155872261 + name 1_128_KEY_6 + 2155872262 + name 1_128_KEY_7 + 2155872263 + name 1_128_KEY_8 + 2155872264 + name 1_128_KEY_9 + 2155872265 + name 1_128_KEY_POWER + 2155872266 + name 1_128_KEY_CH_UP + 2155872271 + name 1_128_KEY_CH_DOWN + 2155872272 + name 1_128_CH_PREVIOUS + 2155872275 + name 1_128_KEY_DISPLAY + 2155872277 + name 1_128_KEY_EXIT + 2155872280 + name 1_128_KEY_GUIDE + 2155872283 + name 1_128_KEY_ENTER + 2155872299 + name 1_128_KEY_MENU + 2155872303 + name 1_128_KEY_MUP + 2155872304 + name 1_128_KEY_MDOWN + 2155872305 + name 1_128_KEY_MLEFT + 2155872306 + name 1_128_KEY_MRIGHT + 2155872307 + name 0_129_KEY_0 + 8454144 + name 0_129_KEY_1 + 8454145 + name 0_129_KEY_2 + 8454146 + name 0_129_KEY_3 + 8454147 + name 0_129_KEY_4 + 8454148 + name 0_129_KEY_5 + 8454149 + name 0_129_KEY_6 + 8454150 + name 0_129_KEY_7 + 8454151 + name 0_129_KEY_8 + 8454152 + name 0_129_KEY_9 + 8454153 + name 0_129_KEY_POWER + 8454154 + name 0_129_KEY_CH_UP + 8454159 + name 0_129_KEY_CH_DOWN + 8454160 + name 0_129_KEY_MUTE + 8454161 + name 0_129_KEY_VOL_DOWN + 8454162 + name 0_129_CH_PREVIOUS + 8454163 + name 0_129_KEY_VOL_UP + 8454164 + name 0_129_KEY_DISPLAY + 8454165 + name 0_129_KEY_MNSELECT + 8454167 + name 0_129_KEY_EXIT + 8454168 + name 0_129_KEY_GUIDE + 8454171 + name 0_129_KEY_ENTER + 8454187 + name 0_129_KEY_MENU + 8454191 + name 0_129_KEY_MUP + 8454192 + name 0_129_KEY_MDOWN + 8454193 + name 0_129_KEY_MLEFT + 8454194 + name 0_129_KEY_MRIGHT + 8454195 + name 0_129_KEY_FF + 8454196 + name 0_129_KEY_PLAY + 8454197 + name 0_129_KEY_REW + 8454198 + name 0_129_KEY_PAUSE + 8454200 + name 0_129_KEY_STOP + 8454201 + name 1_129_KEY_0 + 2155937792 + name 1_129_KEY_1 + 2155937793 + name 1_129_KEY_2 + 2155937794 + name 1_129_KEY_3 + 2155937795 + name 1_129_KEY_4 + 2155937796 + name 1_129_KEY_5 + 2155937797 + name 1_129_KEY_6 + 2155937798 + name 1_129_KEY_7 + 2155937799 + name 1_129_KEY_8 + 2155937800 + name 1_129_KEY_9 + 2155937801 + name 1_129_KEY_POWER + 2155937802 + name 1_129_KEY_CH_UP + 2155937807 + name 1_129_KEY_CH_DOWN + 2155937808 + name 1_129_CH_PREVIOUS + 2155937811 + name 1_129_KEY_DISPLAY + 2155937813 + name 1_129_KEY_EXIT + 2155937816 + name 1_129_KEY_GUIDE + 2155937819 + name 1_129_KEY_SAT + 2155937834 + name 1_129_KEY_MENU + 2155937839 + name 1_129_KEY_MUP + 2155937840 + name 1_129_KEY_MDOWN + 2155937841 + name 1_129_KEY_MLEFT + 2155937842 + name 1_129_KEY_MRIGHT + 2155937843 + name 1_129_KEY_FF + 2155937844 + name 1_129_KEY_PLAY + 2155937845 + name 1_129_KEY_REW + 2155937846 + name 1_129_KEY_REC + 2155937847 + name 1_129_KEY_PAUSE + 2155937848 + name 1_129_KEY_STOP + 2155937849 + name 0_130_KEY_0 + 8519680 + name 0_130_KEY_1 + 8519681 + name 0_130_KEY_2 + 8519682 + name 0_130_KEY_3 + 8519683 + name 0_130_KEY_4 + 8519684 + name 0_130_KEY_5 + 8519685 + name 0_130_KEY_6 + 8519686 + name 0_130_KEY_7 + 8519687 + name 0_130_KEY_8 + 8519688 + name 0_130_KEY_9 + 8519689 + name 0_130_KEY_POWER + 8519690 + name 0_130_KEY_CH_UP + 8519695 + name 0_130_KEY_CH_DOWN + 8519696 + name 0_130_KEY_MUTE + 8519697 + name 0_130_KEY_VOL_DOWN + 8519698 + name 0_130_CH_PREVIOUS + 8519699 + name 0_130_KEY_VOL_UP + 8519700 + name 0_130_KEY_DISPLAY + 8519701 + name 0_130_KEY_MNSELECT + 8519703 + name 0_130_KEY_EXIT + 8519704 + name 0_130_KEY_GUIDE + 8519707 + name 0_130_KEY_ENTER + 8519723 + name 0_130_KEY_MENU + 8519727 + name 0_130_KEY_MUP + 8519728 + name 0_130_KEY_MDOWN + 8519729 + name 0_130_KEY_MLEFT + 8519730 + name 0_130_KEY_MRIGHT + 8519731 + name 0_130_KEY_FF + 8519732 + name 0_130_KEY_PLAY + 8519733 + name 0_130_KEY_REW + 8519734 + name 0_130_KEY_REC + 8519735 + name 0_130_KEY_PAUSE + 8519736 + name 0_130_KEY_STOP + 8519737 + name 1_130_KEY_0 + 2156003328 + name 1_130_KEY_1 + 2156003329 + name 1_130_KEY_2 + 2156003330 + name 1_130_KEY_3 + 2156003331 + name 1_130_KEY_4 + 2156003332 + name 1_130_KEY_5 + 2156003333 + name 1_130_KEY_6 + 2156003334 + name 1_130_KEY_7 + 2156003335 + name 1_130_KEY_8 + 2156003336 + name 1_130_KEY_9 + 2156003337 + name 1_130_KEY_POWER + 2156003338 + name 1_130_KEY_CH_UP + 2156003343 + name 1_130_KEY_CH_DOWN + 2156003344 + name 1_130_CH_PREVIOUS + 2156003347 + name 1_130_KEY_DISPLAY + 2156003349 + name 1_130_KEY_EXIT + 2156003352 + name 1_130_KEY_GUIDE + 2156003355 + name 1_130_KEY_SAT + 2156003370 + name 1_130_KEY_MENU + 2156003375 + name 1_130_KEY_MUP + 2156003376 + name 1_130_KEY_MDOWN + 2156003377 + name 1_130_KEY_MLEFT + 2156003378 + name 1_130_KEY_MRIGHT + 2156003379 + name 1_130_KEY_FF + 2156003380 + name 1_130_KEY_PLAY + 2156003381 + name 1_130_KEY_REW + 2156003382 + name 1_130_KEY_REC + 2156003383 + name 1_130_KEY_PAUSE + 2156003384 + name 1_130_KEY_STOP + 2156003385 + name 1_131_KEY_0 + 2156068864 + name 1_131_KEY_1 + 2156068865 + name 1_131_KEY_2 + 2156068866 + name 1_131_KEY_3 + 2156068867 + name 1_131_KEY_4 + 2156068868 + name 1_131_KEY_5 + 2156068869 + name 1_131_KEY_6 + 2156068870 + name 1_131_KEY_7 + 2156068871 + name 1_131_KEY_8 + 2156068872 + name 1_131_KEY_9 + 2156068873 + name 1_131_KEY_POWER + 2156068874 + name 1_131_KEY_CH_UP + 2156068879 + name 1_131_KEY_CH_DOWN + 2156068880 + name 1_131_CH_PREVIOUS + 2156068883 + name 1_131_KEY_DISPLAY + 2156068885 + name 1_131_KEY_EXIT + 2156068888 + name 1_131_KEY_GUIDE + 2156068891 + name 1_131_KEY_SAT + 2156068906 + name 1_131_KEY_MENU + 2156068911 + name 1_131_KEY_MUP + 2156068912 + name 1_131_KEY_MDOWN + 2156068913 + name 1_131_KEY_MLEFT + 2156068914 + name 1_131_KEY_MRIGHT + 2156068915 + name 1_131_KEY_FF + 2156068916 + name 1_131_KEY_PLAY + 2156068917 + name 1_131_KEY_REW + 2156068918 + name 1_131_KEY_REC + 2156068919 + name 1_131_KEY_PAUSE + 2156068920 + name 1_131_KEY_STOP + 2156068921 + name 1_132_KEY_0 + 2156134400 + name 1_132_KEY_1 + 2156134401 + name 1_132_KEY_2 + 2156134402 + name 1_132_KEY_3 + 2156134403 + name 1_132_KEY_4 + 2156134404 + name 1_132_KEY_5 + 2156134405 + name 1_132_KEY_6 + 2156134406 + name 1_132_KEY_7 + 2156134407 + name 1_132_KEY_8 + 2156134408 + name 1_132_KEY_9 + 2156134409 + name 1_132_KEY_POWER + 2156134410 + name 1_132_KEY_CH_UP + 2156134415 + name 1_132_KEY_CH_DOWN + 2156134416 + name 1_132_CH_PREVIOUS + 2156134419 + name 1_132_KEY_DISPLAY + 2156134421 + name 1_132_KEY_EXIT + 2156134424 + name 1_132_KEY_GUIDE + 2156134427 + name 1_132_KEY_SAT + 2156134442 + name 1_132_KEY_MENU + 2156134447 + name 1_132_KEY_MUP + 2156134448 + name 1_132_KEY_MDOWN + 2156134449 + name 1_132_KEY_MLEFT + 2156134450 + name 1_132_KEY_MRIGHT + 2156134451 + name 1_132_KEY_FF + 2156134452 + name 1_132_KEY_PLAY + 2156134453 + name 1_132_KEY_REW + 2156134454 + name 1_132_KEY_REC + 2156134455 + name 1_132_KEY_PAUSE + 2156134456 + name 1_132_KEY_STOP + 2156134457 + name 1_133_KEY_0 + 2156199936 + name 1_133_KEY_1 + 2156199937 + name 1_133_KEY_2 + 2156199938 + name 1_133_KEY_3 + 2156199939 + name 1_133_KEY_4 + 2156199940 + name 1_133_KEY_5 + 2156199941 + name 1_133_KEY_6 + 2156199942 + name 1_133_KEY_7 + 2156199943 + name 1_133_KEY_8 + 2156199944 + name 1_133_KEY_9 + 2156199945 + name 1_133_KEY_POWER + 2156199946 + name 1_133_KEY_CH_UP + 2156199951 + name 1_133_KEY_CH_DOWN + 2156199952 + name 1_133_CH_PREVIOUS + 2156199955 + name 1_133_KEY_DISPLAY + 2156199957 + name 1_133_KEY_EXIT + 2156199960 + name 1_133_KEY_GUIDE + 2156199963 + name 1_133_KEY_SAT + 2156199978 + name 1_133_KEY_MENU + 2156199983 + name 1_133_KEY_MUP + 2156199984 + name 1_133_KEY_MDOWN + 2156199985 + name 1_133_KEY_MLEFT + 2156199986 + name 1_133_KEY_MRIGHT + 2156199987 + name 1_133_KEY_FF + 2156199988 + name 1_133_KEY_PLAY + 2156199989 + name 1_133_KEY_REW + 2156199990 + name 1_133_KEY_REC + 2156199991 + name 1_133_KEY_PAUSE + 2156199992 + name 1_133_KEY_STOP + 2156199993 + name 1_134_KEY_0 + 2156265472 + name 1_134_KEY_1 + 2156265473 + name 1_134_KEY_2 + 2156265474 + name 1_134_KEY_3 + 2156265475 + name 1_134_KEY_4 + 2156265476 + name 1_134_KEY_5 + 2156265477 + name 1_134_KEY_6 + 2156265478 + name 1_134_KEY_7 + 2156265479 + name 1_134_KEY_8 + 2156265480 + name 1_134_KEY_9 + 2156265481 + name 1_134_KEY_POWER + 2156265482 + name 1_134_KEY_CH_UP + 2156265487 + name 1_134_KEY_CH_DOWN + 2156265488 + name 1_134_KEY_MUTE + 2156265489 + name 1_134_KEY_VOL_DOWN + 2156265490 + name 1_134_CH_PREVIOUS + 2156265491 + name 1_134_KEY_VOL_UP + 2156265492 + name 1_134_KEY_DISPLAY + 2156265493 + name 1_134_KEY_EXIT + 2156265496 + name 1_134_KEY_GUIDE + 2156265499 + name 1_134_KEY_ENTER + 2156265515 + name 1_134_KEY_MENU + 2156265519 + name 1_134_KEY_MUP + 2156265520 + name 1_134_KEY_MDOWN + 2156265521 + name 1_134_KEY_MLEFT + 2156265522 + name 1_134_KEY_MRIGHT + 2156265523 + name 1_135_KEY_0 + 2156331008 + name 1_135_KEY_1 + 2156331009 + name 1_135_KEY_2 + 2156331010 + name 1_135_KEY_3 + 2156331011 + name 1_135_KEY_4 + 2156331012 + name 1_135_KEY_5 + 2156331013 + name 1_135_KEY_6 + 2156331014 + name 1_135_KEY_7 + 2156331015 + name 1_135_KEY_8 + 2156331016 + name 1_135_KEY_9 + 2156331017 + name 1_135_KEY_POWER + 2156331018 + name 1_135_KEY_CH_UP + 2156331023 + name 1_135_KEY_CH_DOWN + 2156331024 + name 1_135_KEY_MUTE + 2156331025 + name 1_135_KEY_VOL_DOWN + 2156331026 + name 1_135_CH_PREVIOUS + 2156331027 + name 1_135_KEY_VOL_UP + 2156331028 + name 1_135_KEY_DISPLAY + 2156331029 + name 1_135_KEY_MNSELECT + 2156331031 + name 1_135_KEY_GUIDE + 2156331035 + name 1_135_KEY_MNRETRUN + 2156331040 + name 1_135_KEY_SAT + 2156331050 + name 1_135_KEY_MUP + 2156331056 + name 1_135_KEY_MDOWN + 2156331057 + name 1_135_KEY_MLEFT + 2156331058 + name 1_135_KEY_MRIGHT + 2156331059 + name 1_136_KEY_0 + 2156396544 + name 1_136_KEY_1 + 2156396545 + name 1_136_KEY_2 + 2156396546 + name 1_136_KEY_3 + 2156396547 + name 1_136_KEY_4 + 2156396548 + name 1_136_KEY_5 + 2156396549 + name 1_136_KEY_6 + 2156396550 + name 1_136_KEY_7 + 2156396551 + name 1_136_KEY_8 + 2156396552 + name 1_136_KEY_9 + 2156396553 + name 1_136_KEY_POWER + 2156396554 + name 1_136_KEY_CH_UP + 2156396559 + name 1_136_KEY_CH_DOWN + 2156396560 + name 1_136_KEY_MUTE + 2156396561 + name 1_136_KEY_VOL_DOWN + 2156396562 + name 1_136_CH_PREVIOUS + 2156396563 + name 1_136_KEY_VOL_UP + 2156396564 + name 1_136_KEY_DISPLAY + 2156396565 + name 1_136_KEY_EXIT + 2156396568 + name 1_136_KEY_GUIDE + 2156396571 + name 1_136_KEY_SAT + 2156396586 + name 1_136_KEY_MENU + 2156396591 + name 1_136_KEY_MUP + 2156396592 + name 1_136_KEY_MDOWN + 2156396593 + name 1_136_KEY_MLEFT + 2156396594 + name 1_136_KEY_MRIGHT + 2156396595 + name 1_137_KEY_0 + 2156462080 + name 1_137_KEY_1 + 2156462081 + name 1_137_KEY_2 + 2156462082 + name 1_137_KEY_3 + 2156462083 + name 1_137_KEY_4 + 2156462084 + name 1_137_KEY_5 + 2156462085 + name 1_137_KEY_6 + 2156462086 + name 1_137_KEY_7 + 2156462087 + name 1_137_KEY_8 + 2156462088 + name 1_137_KEY_9 + 2156462089 + name 1_137_KEY_POWER + 2156462090 + name 1_137_KEY_CH_UP + 2156462095 + name 1_137_KEY_CH_DOWN + 2156462096 + name 1_137_KEY_MUTE + 2156462097 + name 1_137_KEY_VOL_DOWN + 2156462098 + name 1_137_CH_PREVIOUS + 2156462099 + name 1_137_KEY_VOL_UP + 2156462100 + name 1_137_KEY_DISPLAY + 2156462101 + name 1_137_KEY_MNSELECT + 2156462103 + name 1_137_KEY_GUIDE + 2156462107 + name 1_137_KEY_MNRETRUN + 2156462112 + name 1_137_KEY_SAT + 2156462122 + name 1_137_KEY_MUP + 2156462128 + name 1_137_KEY_MDOWN + 2156462129 + name 1_137_KEY_MLEFT + 2156462130 + name 1_137_KEY_MRIGHT + 2156462131 + name 1_138_KEY_0 + 2156527616 + name 1_138_KEY_1 + 2156527617 + name 1_138_KEY_2 + 2156527618 + name 1_138_KEY_3 + 2156527619 + name 1_138_KEY_4 + 2156527620 + name 1_138_KEY_5 + 2156527621 + name 1_138_KEY_6 + 2156527622 + name 1_138_KEY_7 + 2156527623 + name 1_138_KEY_8 + 2156527624 + name 1_138_KEY_9 + 2156527625 + name 1_138_KEY_POWER + 2156527626 + name 1_138_KEY_CH_UP + 2156527631 + name 1_138_KEY_CH_DOWN + 2156527632 + name 1_138_KEY_MUTE + 2156527633 + name 1_138_KEY_VOL_DOWN + 2156527634 + name 1_138_CH_PREVIOUS + 2156527635 + name 1_138_KEY_VOL_UP + 2156527636 + name 1_138_KEY_DISPLAY + 2156527637 + name 1_138_KEY_MNSELECT + 2156527639 + name 1_138_KEY_EXIT + 2156527640 + name 1_138_KEY_INPUT + 2156527642 + name 1_138_KEY_GUIDE + 2156527643 + name 1_138_KEY_MNRETRUN + 2156527648 + name 1_138_KEY_MENU + 2156527663 + name 1_138_KEY_MUP + 2156527664 + name 1_138_KEY_MDOWN + 2156527665 + name 1_138_KEY_MLEFT + 2156527666 + name 1_138_KEY_MRIGHT + 2156527667 + name 1_138_KEY_FF + 2156527668 + name 1_138_KEY_PLAY + 2156527669 + name 1_138_KEY_REW + 2156527670 + name 1_138_KEY_REC + 2156527671 + name 1_138_KEY_PAUSE + 2156527672 + name 1_138_KEY_STOP + 2156527673 + name 1_139_KEY_0 + 2156593152 + name 1_139_KEY_1 + 2156593153 + name 1_139_KEY_2 + 2156593154 + name 1_139_KEY_3 + 2156593155 + name 1_139_KEY_4 + 2156593156 + name 1_139_KEY_5 + 2156593157 + name 1_139_KEY_6 + 2156593158 + name 1_139_KEY_7 + 2156593159 + name 1_139_KEY_8 + 2156593160 + name 1_139_KEY_9 + 2156593161 + name 1_139_KEY_POWER + 2156593162 + name 1_139_KEY_CH_UP + 2156593167 + name 1_139_KEY_CH_DOWN + 2156593168 + name 1_139_CH_PREVIOUS + 2156593171 + name 1_139_KEY_DISPLAY + 2156593173 + name 1_139_KEY_MNSELECT + 2156593175 + name 1_139_KEY_EXIT + 2156593176 + name 1_139_KEY_INPUT + 2156593178 + name 1_139_KEY_GUIDE + 2156593179 + name 1_139_KEY_MNRETRUN + 2156593184 + name 1_139_KEY_MENU + 2156593199 + name 1_139_KEY_MUP + 2156593200 + name 1_139_KEY_MDOWN + 2156593201 + name 1_139_KEY_MLEFT + 2156593202 + name 1_139_KEY_MRIGHT + 2156593203 + name 1_139_KEY_FF + 2156593204 + name 1_139_KEY_PLAY + 2156593205 + name 1_139_KEY_REW + 2156593206 + name 1_139_KEY_REC + 2156593207 + name 1_139_KEY_PAUSE + 2156593208 + name 1_139_KEY_STOP + 2156593209 + name 1_140_KEY_0 + 2156658688 + name 1_140_KEY_1 + 2156658689 + name 1_140_KEY_2 + 2156658690 + name 1_140_KEY_3 + 2156658691 + name 1_140_KEY_4 + 2156658692 + name 1_140_KEY_5 + 2156658693 + name 1_140_KEY_6 + 2156658694 + name 1_140_KEY_7 + 2156658695 + name 1_140_KEY_8 + 2156658696 + name 1_140_KEY_9 + 2156658697 + name 1_140_KEY_POWER + 2156658698 + name 1_140_KEY_CH_UP + 2156658703 + name 1_140_KEY_CH_DOWN + 2156658704 + name 1_140_CH_PREVIOUS + 2156658707 + name 1_140_KEY_DISPLAY + 2156658709 + name 1_140_KEY_MNSELECT + 2156658711 + name 1_140_KEY_EXIT + 2156658712 + name 1_140_KEY_INPUT + 2156658714 + name 1_140_KEY_GUIDE + 2156658715 + name 1_140_KEY_MNRETRUN + 2156658720 + name 1_140_KEY_ENTER + 2156658731 + name 1_140_KEY_MENU + 2156658735 + name 1_140_KEY_MUP + 2156658736 + name 1_140_KEY_MDOWN + 2156658737 + name 1_140_KEY_MLEFT + 2156658738 + name 1_140_KEY_MRIGHT + 2156658739 + name 1_140_KEY_FF + 2156658740 + name 1_140_KEY_PLAY + 2156658741 + name 1_140_KEY_REW + 2156658742 + name 1_140_KEY_REC + 2156658743 + name 1_140_KEY_PAUSE + 2156658744 + name 1_140_KEY_STOP + 2156658745 + name 1_141_KEY_0 + 2156724224 + name 1_141_KEY_1 + 2156724225 + name 1_141_KEY_2 + 2156724226 + name 1_141_KEY_3 + 2156724227 + name 1_141_KEY_4 + 2156724228 + name 1_141_KEY_5 + 2156724229 + name 1_141_KEY_6 + 2156724230 + name 1_141_KEY_7 + 2156724231 + name 1_141_KEY_8 + 2156724232 + name 1_141_KEY_9 + 2156724233 + name 1_141_KEY_POWER + 2156724234 + name 1_141_KEY_CH_UP + 2156724239 + name 1_141_KEY_CH_DOWN + 2156724240 + name 1_141_CH_PREVIOUS + 2156724243 + name 1_141_KEY_DISPLAY + 2156724245 + name 1_141_KEY_MNSELECT + 2156724247 + name 1_141_KEY_EXIT + 2156724248 + name 1_141_KEY_INPUT + 2156724250 + name 1_141_KEY_GUIDE + 2156724251 + name 1_141_KEY_MNRETRUN + 2156724256 + name 1_141_KEY_ENTER + 2156724267 + name 1_141_KEY_MUP + 2156724272 + name 1_141_KEY_MDOWN + 2156724273 + name 1_141_KEY_MLEFT + 2156724274 + name 1_141_KEY_MRIGHT + 2156724275 + name 1_142_KEY_0 + 2156789760 + name 1_142_KEY_1 + 2156789761 + name 1_142_KEY_2 + 2156789762 + name 1_142_KEY_3 + 2156789763 + name 1_142_KEY_4 + 2156789764 + name 1_142_KEY_5 + 2156789765 + name 1_142_KEY_6 + 2156789766 + name 1_142_KEY_7 + 2156789767 + name 1_142_KEY_8 + 2156789768 + name 1_142_KEY_9 + 2156789769 + name 1_142_KEY_POWER + 2156789770 + name 1_142_KEY_CH_UP + 2156789775 + name 1_142_KEY_CH_DOWN + 2156789776 + name 1_142_KEY_MUTE + 2156789777 + name 1_142_KEY_VOL_DOWN + 2156789778 + name 1_142_CH_PREVIOUS + 2156789779 + name 1_142_KEY_VOL_UP + 2156789780 + name 1_142_KEY_DISPLAY + 2156789781 + name 1_142_KEY_MNSELECT + 2156789783 + name 1_142_KEY_EXIT + 2156789784 + name 1_142_KEY_INPUT + 2156789786 + name 1_142_KEY_GUIDE + 2156789787 + name 1_142_KEY_MNRETRUN + 2156789792 + name 1_142_KEY_MENU + 2156789807 + name 1_142_KEY_MUP + 2156789808 + name 1_142_KEY_MDOWN + 2156789809 + name 1_142_KEY_MLEFT + 2156789810 + name 1_142_KEY_MRIGHT + 2156789811 + name 1_143_KEY_0 + 2156855296 + name 1_143_KEY_1 + 2156855297 + name 1_143_KEY_2 + 2156855298 + name 1_143_KEY_3 + 2156855299 + name 1_143_KEY_4 + 2156855300 + name 1_143_KEY_5 + 2156855301 + name 1_143_KEY_6 + 2156855302 + name 1_143_KEY_7 + 2156855303 + name 1_143_KEY_8 + 2156855304 + name 1_143_KEY_9 + 2156855305 + name 1_143_KEY_POWER + 2156855306 + name 1_143_KEY_CH_UP + 2156855311 + name 1_143_KEY_CH_DOWN + 2156855312 + name 1_143_CH_PREVIOUS + 2156855315 + name 1_143_KEY_DISPLAY + 2156855317 + name 1_143_KEY_MNSELECT + 2156855319 + name 1_143_KEY_EXIT + 2156855320 + name 1_143_KEY_INPUT + 2156855322 + name 1_143_KEY_GUIDE + 2156855323 + name 1_143_KEY_MNRETRUN + 2156855328 + name 1_143_KEY_MENU + 2156855343 + name 1_143_KEY_MUP + 2156855344 + name 1_143_KEY_MDOWN + 2156855345 + name 1_143_KEY_MLEFT + 2156855346 + name 1_143_KEY_MRIGHT + 2156855347 + name 1_144_KEY_0 + 2156920832 + name 1_144_KEY_1 + 2156920833 + name 1_144_KEY_2 + 2156920834 + name 1_144_KEY_3 + 2156920835 + name 1_144_KEY_4 + 2156920836 + name 1_144_KEY_5 + 2156920837 + name 1_144_KEY_6 + 2156920838 + name 1_144_KEY_7 + 2156920839 + name 1_144_KEY_8 + 2156920840 + name 1_144_KEY_9 + 2156920841 + name 1_144_KEY_POWER + 2156920842 + name 1_144_KEY_CH_UP + 2156920847 + name 1_144_KEY_CH_DOWN + 2156920848 + name 1_144_CH_PREVIOUS + 2156920851 + name 1_144_KEY_DISPLAY + 2156920853 + name 1_144_KEY_EXIT + 2156920856 + name 1_144_KEY_INPUT + 2156920858 + name 1_144_KEY_GUIDE + 2156920859 + name 1_144_KEY_MNRETRUN + 2156920864 + name 1_144_KEY_SAT + 2156920874 + name 1_144_KEY_MENU + 2156920879 + name 1_144_KEY_MUP + 2156920880 + name 1_144_KEY_MDOWN + 2156920881 + name 1_144_KEY_MLEFT + 2156920882 + name 1_144_KEY_MRIGHT + 2156920883 + name 1_145_KEY_0 + 2156986368 + name 1_145_KEY_1 + 2156986369 + name 1_145_KEY_2 + 2156986370 + name 1_145_KEY_3 + 2156986371 + name 1_145_KEY_4 + 2156986372 + name 1_145_KEY_5 + 2156986373 + name 1_145_KEY_6 + 2156986374 + name 1_145_KEY_7 + 2156986375 + name 1_145_KEY_8 + 2156986376 + name 1_145_KEY_9 + 2156986377 + name 1_145_KEY_POWER + 2156986378 + name 1_145_KEY_CH_UP + 2156986383 + name 1_145_KEY_CH_DOWN + 2156986384 + name 1_145_CH_PREVIOUS + 2156986387 + name 1_145_KEY_DISPLAY + 2156986389 + name 1_145_KEY_EXIT + 2156986392 + name 1_145_KEY_INPUT + 2156986394 + name 1_145_KEY_GUIDE + 2156986395 + name 1_145_KEY_MNRETRUN + 2156986400 + name 1_145_KEY_SAT + 2156986410 + name 1_145_KEY_MENU + 2156986415 + name 1_145_KEY_MUP + 2156986416 + name 1_145_KEY_MDOWN + 2156986417 + name 1_145_KEY_MLEFT + 2156986418 + name 1_145_KEY_MRIGHT + 2156986419 + name 1_146_KEY_0 + 2157051904 + name 1_146_KEY_1 + 2157051905 + name 1_146_KEY_2 + 2157051906 + name 1_146_KEY_3 + 2157051907 + name 1_146_KEY_4 + 2157051908 + name 1_146_KEY_5 + 2157051909 + name 1_146_KEY_6 + 2157051910 + name 1_146_KEY_7 + 2157051911 + name 1_146_KEY_8 + 2157051912 + name 1_146_KEY_9 + 2157051913 + name 1_146_KEY_POWER + 2157051914 + name 1_146_KEY_CH_UP + 2157051919 + name 1_146_KEY_CH_DOWN + 2157051920 + name 1_146_KEY_MUTE + 2157051921 + name 1_146_KEY_VOL_DOWN + 2157051922 + name 1_146_CH_PREVIOUS + 2157051923 + name 1_146_KEY_VOL_UP + 2157051924 + name 1_146_KEY_MNSELECT + 2157051927 + name 1_146_KEY_EXIT + 2157051928 + name 1_146_KEY_INPUT + 2157051930 + name 1_146_KEY_GUIDE + 2157051931 + name 1_146_KEY_SAT + 2157051946 + name 1_146_KEY_MENU + 2157051951 + name 1_146_KEY_MUP + 2157051952 + name 1_146_KEY_MDOWN + 2157051953 + name 1_146_KEY_MLEFT + 2157051954 + name 1_146_KEY_MRIGHT + 2157051955 + name 1_147_KEY_0 + 2157117440 + name 1_147_KEY_1 + 2157117441 + name 1_147_KEY_2 + 2157117442 + name 1_147_KEY_3 + 2157117443 + name 1_147_KEY_4 + 2157117444 + name 1_147_KEY_5 + 2157117445 + name 1_147_KEY_6 + 2157117446 + name 1_147_KEY_7 + 2157117447 + name 1_147_KEY_8 + 2157117448 + name 1_147_KEY_9 + 2157117449 + name 1_147_KEY_POWER + 2157117450 + name 1_147_KEY_CH_UP + 2157117455 + name 1_147_KEY_CH_DOWN + 2157117456 + name 1_147_CH_PREVIOUS + 2157117459 + name 1_147_KEY_DISPLAY + 2157117461 + name 1_147_KEY_EXIT + 2157117464 + name 1_147_KEY_GUIDE + 2157117467 + name 1_147_KEY_MENU + 2157117487 + name 1_147_KEY_MUP + 2157117488 + name 1_147_KEY_MDOWN + 2157117489 + name 1_147_KEY_MLEFT + 2157117490 + name 1_147_KEY_MRIGHT + 2157117491 + name 1_148_KEY_0 + 2157182976 + name 1_148_KEY_1 + 2157182977 + name 1_148_KEY_2 + 2157182978 + name 1_148_KEY_3 + 2157182979 + name 1_148_KEY_4 + 2157182980 + name 1_148_KEY_5 + 2157182981 + name 1_148_KEY_6 + 2157182982 + name 1_148_KEY_7 + 2157182983 + name 1_148_KEY_8 + 2157182984 + name 1_148_KEY_9 + 2157182985 + name 1_148_KEY_POWER + 2157182986 + name 1_148_KEY_CH_UP + 2157182991 + name 1_148_KEY_CH_DOWN + 2157182992 + name 1_148_KEY_MUTE + 2157182993 + name 1_148_KEY_VOL_DOWN + 2157182994 + name 1_148_CH_PREVIOUS + 2157182995 + name 1_148_KEY_VOL_UP + 2157182996 + name 1_148_KEY_DISPLAY + 2157182997 + name 1_148_KEY_MNSELECT + 2157182999 + name 1_148_KEY_EXIT + 2157183000 + name 1_148_KEY_GUIDE + 2157183003 + name 1_148_KEY_MNRETRUN + 2157183008 + name 1_148_KEY_MENU + 2157183023 + name 1_148_KEY_MUP + 2157183024 + name 1_148_KEY_MDOWN + 2157183025 + name 1_148_KEY_MLEFT + 2157183026 + name 1_148_KEY_MRIGHT + 2157183027 + name 1_149_KEY_0 + 2157248512 + name 1_149_KEY_1 + 2157248513 + name 1_149_KEY_2 + 2157248514 + name 1_149_KEY_3 + 2157248515 + name 1_149_KEY_4 + 2157248516 + name 1_149_KEY_5 + 2157248517 + name 1_149_KEY_6 + 2157248518 + name 1_149_KEY_7 + 2157248519 + name 1_149_KEY_8 + 2157248520 + name 1_149_KEY_9 + 2157248521 + name 1_149_KEY_POWER + 2157248522 + name 1_149_KEY_CH_UP + 2157248527 + name 1_149_KEY_CH_DOWN + 2157248528 + name 1_149_KEY_MUTE + 2157248529 + name 1_149_KEY_VOL_DOWN + 2157248530 + name 1_149_CH_PREVIOUS + 2157248531 + name 1_149_KEY_VOL_UP + 2157248532 + name 1_149_KEY_DISPLAY + 2157248533 + name 1_149_KEY_MNSELECT + 2157248535 + name 1_149_KEY_EXIT + 2157248536 + name 1_149_KEY_GUIDE + 2157248539 + name 1_149_KEY_MNRETRUN + 2157248544 + name 1_149_KEY_ENTER + 2157248555 + name 1_149_KEY_MENU + 2157248559 + name 1_149_KEY_MUP + 2157248560 + name 1_149_KEY_MDOWN + 2157248561 + name 1_149_KEY_MLEFT + 2157248562 + name 1_149_KEY_MRIGHT + 2157248563 + name 1_149_KEY_FF + 2157248564 + name 1_149_KEY_PLAY + 2157248565 + name 1_149_KEY_REW + 2157248566 + name 1_149_KEY_REC + 2157248567 + name 1_149_KEY_PAUSE + 2157248568 + name 1_149_KEY_STOP + 2157248569 + name 1_150_KEY_0 + 2157314048 + name 1_150_KEY_1 + 2157314049 + name 1_150_KEY_2 + 2157314050 + name 1_150_KEY_3 + 2157314051 + name 1_150_KEY_4 + 2157314052 + name 1_150_KEY_5 + 2157314053 + name 1_150_KEY_6 + 2157314054 + name 1_150_KEY_7 + 2157314055 + name 1_150_KEY_8 + 2157314056 + name 1_150_KEY_9 + 2157314057 + name 1_150_KEY_POWER + 2157314058 + name 1_150_KEY_CH_UP + 2157314063 + name 1_150_KEY_CH_DOWN + 2157314064 + name 1_150_KEY_MUTE + 2157314065 + name 1_150_KEY_VOL_DOWN + 2157314066 + name 1_150_CH_PREVIOUS + 2157314067 + name 1_150_KEY_VOL_UP + 2157314068 + name 1_150_KEY_DISPLAY + 2157314069 + name 1_150_KEY_MNSELECT + 2157314071 + name 1_150_KEY_EXIT + 2157314072 + name 1_150_KEY_GUIDE + 2157314075 + name 1_150_KEY_MNRETRUN + 2157314080 + name 1_150_KEY_MENU + 2157314095 + name 1_150_KEY_MUP + 2157314096 + name 1_150_KEY_MDOWN + 2157314097 + name 1_150_KEY_MLEFT + 2157314098 + name 1_150_KEY_MRIGHT + 2157314099 + name 1_150_KEY_FF + 2157314100 + name 1_150_KEY_PLAY + 2157314101 + name 1_150_KEY_REW + 2157314102 + name 1_150_KEY_REC + 2157314103 + name 1_150_KEY_PAUSE + 2157314104 + name 1_150_KEY_STOP + 2157314105 + name 1_151_KEY_0 + 2157379584 + name 1_151_KEY_1 + 2157379585 + name 1_151_KEY_2 + 2157379586 + name 1_151_KEY_3 + 2157379587 + name 1_151_KEY_4 + 2157379588 + name 1_151_KEY_5 + 2157379589 + name 1_151_KEY_6 + 2157379590 + name 1_151_KEY_7 + 2157379591 + name 1_151_KEY_8 + 2157379592 + name 1_151_KEY_9 + 2157379593 + name 1_151_KEY_CH_UP + 2157379599 + name 1_151_KEY_CH_DOWN + 2157379600 + name 1_151_CH_PREVIOUS + 2157379603 + name 1_151_KEY_DISPLAY + 2157379605 + name 1_151_KEY_MNSELECT + 2157379607 + name 1_151_KEY_EXIT + 2157379608 + name 1_151_KEY_GUIDE + 2157379611 + name 1_151_KEY_MNRETRUN + 2157379616 + name 1_151_KEY_ENTER + 2157379627 + name 1_151_KEY_MENU + 2157379631 + name 1_151_KEY_MUP + 2157379632 + name 1_151_KEY_MDOWN + 2157379633 + name 1_151_KEY_MLEFT + 2157379634 + name 1_151_KEY_MRIGHT + 2157379635 + name 1_151_KEY_FF + 2157379636 + name 1_151_KEY_PLAY + 2157379637 + name 1_151_KEY_REW + 2157379638 + name 1_151_KEY_REC + 2157379639 + name 1_151_KEY_PAUSE + 2157379640 + name 1_152_KEY_0 + 2157445120 + name 1_152_KEY_1 + 2157445121 + name 1_152_KEY_2 + 2157445122 + name 1_152_KEY_3 + 2157445123 + name 1_152_KEY_4 + 2157445124 + name 1_152_KEY_5 + 2157445125 + name 1_152_KEY_6 + 2157445126 + name 1_152_KEY_7 + 2157445127 + name 1_152_KEY_8 + 2157445128 + name 1_152_KEY_9 + 2157445129 + name 1_152_KEY_POWER + 2157445130 + name 1_152_KEY_CH_UP + 2157445135 + name 1_152_KEY_CH_DOWN + 2157445136 + name 1_152_CH_PREVIOUS + 2157445139 + name 1_152_KEY_DISPLAY + 2157445141 + name 1_152_KEY_MNSELECT + 2157445143 + name 1_152_KEY_EXIT + 2157445144 + name 1_152_KEY_GUIDE + 2157445147 + name 1_152_KEY_MNRETRUN + 2157445152 + name 1_152_KEY_MENU + 2157445167 + name 1_152_KEY_MUP + 2157445168 + name 1_152_KEY_MDOWN + 2157445169 + name 1_152_KEY_MLEFT + 2157445170 + name 1_152_KEY_MRIGHT + 2157445171 + name 1_152_KEY_FF + 2157445172 + name 1_152_KEY_PLAY + 2157445173 + name 1_152_KEY_REW + 2157445174 + name 1_152_KEY_REC + 2157445175 + name 1_152_KEY_PAUSE + 2157445176 + name 1_152_KEY_STOP + 2157445177 + name 1_153_KEY_0 + 2157510656 + name 1_153_KEY_1 + 2157510657 + name 1_153_KEY_2 + 2157510658 + name 1_153_KEY_3 + 2157510659 + name 1_153_KEY_4 + 2157510660 + name 1_153_KEY_5 + 2157510661 + name 1_153_KEY_6 + 2157510662 + name 1_153_KEY_7 + 2157510663 + name 1_153_KEY_8 + 2157510664 + name 1_153_KEY_9 + 2157510665 + name 1_153_KEY_POWER + 2157510666 + name 1_153_KEY_CH_UP + 2157510671 + name 1_153_KEY_CH_DOWN + 2157510672 + name 1_153_CH_PREVIOUS + 2157510675 + name 1_153_KEY_DISPLAY + 2157510677 + name 1_153_KEY_MNSELECT + 2157510679 + name 1_153_KEY_EXIT + 2157510680 + name 1_153_KEY_GUIDE + 2157510683 + name 1_153_KEY_MNRETRUN + 2157510688 + name 1_153_KEY_MENU + 2157510703 + name 1_153_KEY_MUP + 2157510704 + name 1_153_KEY_MDOWN + 2157510705 + name 1_153_KEY_MLEFT + 2157510706 + name 1_153_KEY_MRIGHT + 2157510707 + name 1_153_KEY_FF + 2157510708 + name 1_153_KEY_PLAY + 2157510709 + name 1_153_KEY_REW + 2157510710 + name 1_153_KEY_REC + 2157510711 + name 1_153_KEY_PAUSE + 2157510712 + name 1_153_KEY_STOP + 2157510713 + name 1_154_KEY_0 + 2157576192 + name 1_154_KEY_1 + 2157576193 + name 1_154_KEY_2 + 2157576194 + name 1_154_KEY_3 + 2157576195 + name 1_154_KEY_4 + 2157576196 + name 1_154_KEY_5 + 2157576197 + name 1_154_KEY_6 + 2157576198 + name 1_154_KEY_7 + 2157576199 + name 1_154_KEY_8 + 2157576200 + name 1_154_KEY_9 + 2157576201 + name 1_154_KEY_POWER + 2157576202 + name 1_154_KEY_CH_UP + 2157576207 + name 1_154_KEY_CH_DOWN + 2157576208 + name 1_154_CH_PREVIOUS + 2157576211 + name 1_154_KEY_DISPLAY + 2157576213 + name 1_154_KEY_MNSELECT + 2157576215 + name 1_154_KEY_EXIT + 2157576216 + name 1_154_KEY_GUIDE + 2157576219 + name 1_154_KEY_MNRETRUN + 2157576224 + name 1_154_KEY_ENTER + 2157576235 + name 1_154_KEY_MENU + 2157576239 + name 1_154_KEY_MUP + 2157576240 + name 1_154_KEY_MDOWN + 2157576241 + name 1_154_KEY_MLEFT + 2157576242 + name 1_154_KEY_MRIGHT + 2157576243 + name 1_154_KEY_FF + 2157576244 + name 1_154_KEY_PLAY + 2157576245 + name 1_154_KEY_REW + 2157576246 + name 1_154_KEY_REC + 2157576247 + name 1_154_KEY_PAUSE + 2157576248 + name 1_154_KEY_STOP + 2157576249 + name 1_155_KEY_0 + 2157641728 + name 1_155_KEY_1 + 2157641729 + name 1_155_KEY_2 + 2157641730 + name 1_155_KEY_3 + 2157641731 + name 1_155_KEY_4 + 2157641732 + name 1_155_KEY_5 + 2157641733 + name 1_155_KEY_6 + 2157641734 + name 1_155_KEY_7 + 2157641735 + name 1_155_KEY_8 + 2157641736 + name 1_155_KEY_9 + 2157641737 + name 1_155_KEY_POWER + 2157641738 + name 1_155_KEY_CH_UP + 2157641743 + name 1_155_KEY_CH_DOWN + 2157641744 + name 1_155_CH_PREVIOUS + 2157641747 + name 1_155_KEY_DISPLAY + 2157641749 + name 1_155_KEY_MNSELECT + 2157641751 + name 1_155_KEY_EXIT + 2157641752 + name 1_155_KEY_GUIDE + 2157641755 + name 1_155_KEY_MNRETRUN + 2157641760 + name 1_155_KEY_ENTER + 2157641771 + name 1_155_KEY_MENU + 2157641775 + name 1_155_KEY_MUP + 2157641776 + name 1_155_KEY_MDOWN + 2157641777 + name 1_155_KEY_MLEFT + 2157641778 + name 1_155_KEY_MRIGHT + 2157641779 + name 1_155_KEY_FF + 2157641780 + name 1_155_KEY_PLAY + 2157641781 + name 1_155_KEY_REW + 2157641782 + name 1_155_KEY_REC + 2157641783 + name 1_155_KEY_PAUSE + 2157641784 + name 1_156_KEY_0 + 2157707264 + name 1_156_KEY_1 + 2157707265 + name 1_156_KEY_2 + 2157707266 + name 1_156_KEY_3 + 2157707267 + name 1_156_KEY_4 + 2157707268 + name 1_156_KEY_5 + 2157707269 + name 1_156_KEY_6 + 2157707270 + name 1_156_KEY_7 + 2157707271 + name 1_156_KEY_8 + 2157707272 + name 1_156_KEY_9 + 2157707273 + name 1_156_KEY_CH_UP + 2157707279 + name 1_156_KEY_CH_DOWN + 2157707280 + name 1_156_CH_PREVIOUS + 2157707283 + name 1_156_KEY_DISPLAY + 2157707285 + name 1_156_KEY_MNSELECT + 2157707287 + name 1_156_KEY_EXIT + 2157707288 + name 1_156_KEY_GUIDE + 2157707291 + name 1_156_KEY_MNRETRUN + 2157707296 + name 1_156_KEY_ENTER + 2157707307 + name 1_156_KEY_MENU + 2157707311 + name 1_156_KEY_MUP + 2157707312 + name 1_156_KEY_MDOWN + 2157707313 + name 1_156_KEY_MLEFT + 2157707314 + name 1_156_KEY_MRIGHT + 2157707315 + name 1_156_KEY_FF + 2157707316 + name 1_156_KEY_PLAY + 2157707317 + name 1_156_KEY_REW + 2157707318 + name 1_156_KEY_REC + 2157707319 + name 1_156_KEY_PAUSE + 2157707320 + name 1_157_KEY_0 + 2157772800 + name 1_157_KEY_1 + 2157772801 + name 1_157_KEY_2 + 2157772802 + name 1_157_KEY_3 + 2157772803 + name 1_157_KEY_4 + 2157772804 + name 1_157_KEY_5 + 2157772805 + name 1_157_KEY_6 + 2157772806 + name 1_157_KEY_7 + 2157772807 + name 1_157_KEY_8 + 2157772808 + name 1_157_KEY_9 + 2157772809 + name 1_157_KEY_POWER + 2157772810 + name 1_157_KEY_CH_UP + 2157772815 + name 1_157_KEY_CH_DOWN + 2157772816 + name 1_157_KEY_DISPLAY + 2157772821 + name 1_157_KEY_MNSELECT + 2157772823 + name 1_157_KEY_EXIT + 2157772824 + name 1_157_KEY_GUIDE + 2157772827 + name 1_157_KEY_ENTER + 2157772843 + name 1_157_KEY_MENU + 2157772847 + name 1_157_KEY_MUP + 2157772848 + name 1_157_KEY_MDOWN + 2157772849 + name 1_157_KEY_MLEFT + 2157772850 + name 1_157_KEY_MRIGHT + 2157772851 + name 1_157_KEY_FF + 2157772852 + name 1_157_KEY_PLAY + 2157772853 + name 1_157_KEY_REW + 2157772854 + name 1_157_KEY_REC + 2157772855 + name 1_157_KEY_PAUSE + 2157772856 + name 1_158_KEY_0 + 2157838336 + name 1_158_KEY_1 + 2157838337 + name 1_158_KEY_2 + 2157838338 + name 1_158_KEY_3 + 2157838339 + name 1_158_KEY_4 + 2157838340 + name 1_158_KEY_5 + 2157838341 + name 1_158_KEY_6 + 2157838342 + name 1_158_KEY_7 + 2157838343 + name 1_158_KEY_8 + 2157838344 + name 1_158_KEY_9 + 2157838345 + name 1_158_KEY_POWER + 2157838346 + name 1_158_KEY_CH_UP + 2157838351 + name 1_158_KEY_CH_DOWN + 2157838352 + name 1_158_KEY_DISPLAY + 2157838357 + name 1_158_KEY_MNSELECT + 2157838359 + name 1_158_KEY_EXIT + 2157838360 + name 1_158_KEY_GUIDE + 2157838363 + name 1_158_KEY_ENTER + 2157838379 + name 1_158_KEY_MENU + 2157838383 + name 1_158_KEY_MUP + 2157838384 + name 1_158_KEY_MDOWN + 2157838385 + name 1_158_KEY_MLEFT + 2157838386 + name 1_158_KEY_MRIGHT + 2157838387 + name 1_158_KEY_FF + 2157838388 + name 1_158_KEY_PLAY + 2157838389 + name 1_158_KEY_REW + 2157838390 + name 1_158_KEY_REC + 2157838391 + name 1_158_KEY_PAUSE + 2157838392 + name 1_159_KEY_0 + 2157903872 + name 1_159_KEY_1 + 2157903873 + name 1_159_KEY_2 + 2157903874 + name 1_159_KEY_3 + 2157903875 + name 1_159_KEY_4 + 2157903876 + name 1_159_KEY_5 + 2157903877 + name 1_159_KEY_6 + 2157903878 + name 1_159_KEY_7 + 2157903879 + name 1_159_KEY_8 + 2157903880 + name 1_159_KEY_9 + 2157903881 + name 1_159_KEY_POWER + 2157903882 + name 1_159_KEY_CH_UP + 2157903887 + name 1_159_KEY_CH_DOWN + 2157903888 + name 1_159_KEY_MUTE + 2157903889 + name 1_159_KEY_VOL_DOWN + 2157903890 + name 1_159_CH_PREVIOUS + 2157903891 + name 1_159_KEY_VOL_UP + 2157903892 + name 1_159_KEY_DISPLAY + 2157903893 + name 1_159_KEY_MNSELECT + 2157903895 + name 1_159_KEY_EXIT + 2157903896 + name 1_159_KEY_GUIDE + 2157903899 + name 1_159_KEY_MNRETRUN + 2157903904 + name 1_159_KEY_ENTER + 2157903915 + name 1_159_KEY_MENU + 2157903919 + name 1_159_KEY_MUP + 2157903920 + name 1_159_KEY_MDOWN + 2157903921 + name 1_159_KEY_MLEFT + 2157903922 + name 1_159_KEY_MRIGHT + 2157903923 + name 1_160_KEY_0 + 2157969408 + name 1_160_KEY_1 + 2157969409 + name 1_160_KEY_2 + 2157969410 + name 1_160_KEY_3 + 2157969411 + name 1_160_KEY_4 + 2157969412 + name 1_160_KEY_5 + 2157969413 + name 1_160_KEY_6 + 2157969414 + name 1_160_KEY_7 + 2157969415 + name 1_160_KEY_8 + 2157969416 + name 1_160_KEY_9 + 2157969417 + name 1_160_KEY_CH_UP + 2157969423 + name 1_160_KEY_CH_DOWN + 2157969424 + name 1_160_CH_PREVIOUS + 2157969427 + name 1_160_KEY_DISPLAY + 2157969429 + name 1_160_KEY_MNSELECT + 2157969431 + name 1_160_KEY_EXIT + 2157969432 + name 1_160_KEY_GUIDE + 2157969435 + name 1_160_KEY_MNRETRUN + 2157969440 + name 1_160_KEY_ENTER + 2157969451 + name 1_160_KEY_MENU + 2157969455 + name 1_160_KEY_MUP + 2157969456 + name 1_160_KEY_MDOWN + 2157969457 + name 1_160_KEY_MLEFT + 2157969458 + name 1_160_KEY_MRIGHT + 2157969459 + name 1_161_KEY_0 + 2158034944 + name 1_161_KEY_1 + 2158034945 + name 1_161_KEY_2 + 2158034946 + name 1_161_KEY_3 + 2158034947 + name 1_161_KEY_4 + 2158034948 + name 1_161_KEY_5 + 2158034949 + name 1_161_KEY_6 + 2158034950 + name 1_161_KEY_7 + 2158034951 + name 1_161_KEY_8 + 2158034952 + name 1_161_KEY_9 + 2158034953 + name 1_161_KEY_POWER + 2158034954 + name 1_161_KEY_CH_UP + 2158034959 + name 1_161_KEY_CH_DOWN + 2158034960 + name 1_161_CH_PREVIOUS + 2158034963 + name 1_161_KEY_DISPLAY + 2158034965 + name 1_161_KEY_MNSELECT + 2158034967 + name 1_161_KEY_EXIT + 2158034968 + name 1_161_KEY_GUIDE + 2158034971 + name 1_161_KEY_MNRETRUN + 2158034976 + name 1_161_KEY_MENU + 2158034991 + name 1_161_KEY_MUP + 2158034992 + name 1_161_KEY_MDOWN + 2158034993 + name 1_161_KEY_MLEFT + 2158034994 + name 1_161_KEY_MRIGHT + 2158034995 + name 1_162_KEY_0 + 2158100480 + name 1_162_KEY_1 + 2158100481 + name 1_162_KEY_2 + 2158100482 + name 1_162_KEY_3 + 2158100483 + name 1_162_KEY_4 + 2158100484 + name 1_162_KEY_5 + 2158100485 + name 1_162_KEY_6 + 2158100486 + name 1_162_KEY_7 + 2158100487 + name 1_162_KEY_8 + 2158100488 + name 1_162_KEY_9 + 2158100489 + name 1_162_KEY_POWER + 2158100490 + name 1_162_KEY_CH_UP + 2158100495 + name 1_162_KEY_CH_DOWN + 2158100496 + name 1_162_KEY_MUTE + 2158100497 + name 1_162_KEY_VOL_DOWN + 2158100498 + name 1_162_CH_PREVIOUS + 2158100499 + name 1_162_KEY_VOL_UP + 2158100500 + name 1_162_KEY_DISPLAY + 2158100501 + name 1_162_KEY_MNSELECT + 2158100503 + name 1_162_KEY_EXIT + 2158100504 + name 1_162_KEY_GUIDE + 2158100507 + name 1_162_KEY_MNRETRUN + 2158100512 + name 1_162_KEY_ENTER + 2158100523 + name 1_162_KEY_MENU + 2158100527 + name 1_162_KEY_MUP + 2158100528 + name 1_162_KEY_MDOWN + 2158100529 + name 1_162_KEY_MLEFT + 2158100530 + name 1_162_KEY_MRIGHT + 2158100531 + name 1_163_KEY_0 + 2158166016 + name 1_163_KEY_1 + 2158166017 + name 1_163_KEY_2 + 2158166018 + name 1_163_KEY_3 + 2158166019 + name 1_163_KEY_4 + 2158166020 + name 1_163_KEY_5 + 2158166021 + name 1_163_KEY_6 + 2158166022 + name 1_163_KEY_7 + 2158166023 + name 1_163_KEY_8 + 2158166024 + name 1_163_KEY_9 + 2158166025 + name 1_163_KEY_POWER + 2158166026 + name 1_163_KEY_CH_UP + 2158166031 + name 1_163_KEY_CH_DOWN + 2158166032 + name 1_163_KEY_MUTE + 2158166033 + name 1_163_KEY_VOL_DOWN + 2158166034 + name 1_163_CH_PREVIOUS + 2158166035 + name 1_163_KEY_VOL_UP + 2158166036 + name 1_163_KEY_DISPLAY + 2158166037 + name 1_163_KEY_MNSELECT + 2158166039 + name 1_163_KEY_EXIT + 2158166040 + name 1_163_KEY_GUIDE + 2158166043 + name 1_163_KEY_MNRETRUN + 2158166048 + name 1_163_KEY_MENU + 2158166063 + name 1_163_KEY_MUP + 2158166064 + name 1_163_KEY_MDOWN + 2158166065 + name 1_163_KEY_MLEFT + 2158166066 + name 1_163_KEY_MRIGHT + 2158166067 + name 1_164_KEY_0 + 2158231552 + name 1_164_KEY_1 + 2158231553 + name 1_164_KEY_2 + 2158231554 + name 1_164_KEY_3 + 2158231555 + name 1_164_KEY_4 + 2158231556 + name 1_164_KEY_5 + 2158231557 + name 1_164_KEY_6 + 2158231558 + name 1_164_KEY_7 + 2158231559 + name 1_164_KEY_8 + 2158231560 + name 1_164_KEY_9 + 2158231561 + name 1_164_KEY_POWER + 2158231562 + name 1_164_KEY_CH_UP + 2158231567 + name 1_164_KEY_CH_DOWN + 2158231568 + name 1_164_CH_PREVIOUS + 2158231571 + name 1_164_KEY_DISPLAY + 2158231573 + name 1_164_KEY_MNSELECT + 2158231575 + name 1_164_KEY_EXIT + 2158231576 + name 1_164_KEY_GUIDE + 2158231579 + name 1_164_KEY_ENTER + 2158231595 + name 1_164_KEY_MENU + 2158231599 + name 1_164_KEY_MUP + 2158231600 + name 1_164_KEY_MDOWN + 2158231601 + name 1_164_KEY_MLEFT + 2158231602 + name 1_164_KEY_MRIGHT + 2158231603 + name 1_165_KEY_0 + 2158297088 + name 1_165_KEY_1 + 2158297089 + name 1_165_KEY_2 + 2158297090 + name 1_165_KEY_3 + 2158297091 + name 1_165_KEY_4 + 2158297092 + name 1_165_KEY_5 + 2158297093 + name 1_165_KEY_6 + 2158297094 + name 1_165_KEY_7 + 2158297095 + name 1_165_KEY_8 + 2158297096 + name 1_165_KEY_9 + 2158297097 + name 1_165_KEY_POWER + 2158297098 + name 1_165_KEY_CH_UP + 2158297103 + name 1_165_KEY_CH_DOWN + 2158297104 + name 1_165_CH_PREVIOUS + 2158297107 + name 1_165_KEY_DISPLAY + 2158297109 + name 1_165_KEY_MNSELECT + 2158297111 + name 1_165_KEY_EXIT + 2158297112 + name 1_165_KEY_GUIDE + 2158297115 + name 1_165_KEY_MNRETRUN + 2158297120 + name 1_165_KEY_ENTER + 2158297131 + name 1_165_KEY_MENU + 2158297135 + name 1_165_KEY_MUP + 2158297136 + name 1_165_KEY_MDOWN + 2158297137 + name 1_165_KEY_MLEFT + 2158297138 + name 1_165_KEY_MRIGHT + 2158297139 + name 1_165_KEY_FF + 2158297140 + name 1_165_KEY_PLAY + 2158297141 + name 1_165_KEY_REW + 2158297142 + name 1_165_KEY_REC + 2158297143 + name 1_165_KEY_PAUSE + 2158297144 + name 1_165_KEY_STOP + 2158297145 + name 1_166_KEY_0 + 2158362624 + name 1_166_KEY_1 + 2158362625 + name 1_166_KEY_2 + 2158362626 + name 1_166_KEY_3 + 2158362627 + name 1_166_KEY_4 + 2158362628 + name 1_166_KEY_5 + 2158362629 + name 1_166_KEY_6 + 2158362630 + name 1_166_KEY_7 + 2158362631 + name 1_166_KEY_8 + 2158362632 + name 1_166_KEY_9 + 2158362633 + name 1_166_KEY_CH_UP + 2158362639 + name 1_166_KEY_CH_DOWN + 2158362640 + name 1_166_CH_PREVIOUS + 2158362643 + name 1_166_KEY_DISPLAY + 2158362645 + name 1_166_KEY_MNSELECT + 2158362647 + name 1_166_KEY_EXIT + 2158362648 + name 1_166_KEY_GUIDE + 2158362651 + name 1_166_KEY_MNRETRUN + 2158362656 + name 1_166_KEY_ENTER + 2158362667 + name 1_166_KEY_MENU + 2158362671 + name 1_166_KEY_MUP + 2158362672 + name 1_166_KEY_MDOWN + 2158362673 + name 1_166_KEY_MLEFT + 2158362674 + name 1_166_KEY_MRIGHT + 2158362675 + name 1_166_KEY_FF + 2158362676 + name 1_166_KEY_PLAY + 2158362677 + name 1_166_KEY_REW + 2158362678 + name 1_166_KEY_REC + 2158362679 + name 1_166_KEY_PAUSE + 2158362680 + name 1_167_KEY_0 + 2158428160 + name 1_167_KEY_1 + 2158428161 + name 1_167_KEY_2 + 2158428162 + name 1_167_KEY_3 + 2158428163 + name 1_167_KEY_4 + 2158428164 + name 1_167_KEY_5 + 2158428165 + name 1_167_KEY_6 + 2158428166 + name 1_167_KEY_7 + 2158428167 + name 1_167_KEY_8 + 2158428168 + name 1_167_KEY_9 + 2158428169 + name 1_167_KEY_POWER + 2158428170 + name 1_167_KEY_CH_UP + 2158428175 + name 1_167_KEY_CH_DOWN + 2158428176 + name 1_167_KEY_MUTE + 2158428177 + name 1_167_KEY_VOL_DOWN + 2158428178 + name 1_167_CH_PREVIOUS + 2158428179 + name 1_167_KEY_VOL_UP + 2158428180 + name 1_167_KEY_DISPLAY + 2158428181 + name 1_167_KEY_MNSELECT + 2158428183 + name 1_167_KEY_EXIT + 2158428184 + name 1_167_KEY_GUIDE + 2158428187 + name 1_167_KEY_SAT + 2158428202 + name 1_167_KEY_MENU + 2158428207 + name 1_167_KEY_MUP + 2158428208 + name 1_167_KEY_MDOWN + 2158428209 + name 1_167_KEY_MLEFT + 2158428210 + name 1_167_KEY_MRIGHT + 2158428211 + name 1_168_KEY_0 + 2158493696 + name 1_168_KEY_1 + 2158493697 + name 1_168_KEY_2 + 2158493698 + name 1_168_KEY_3 + 2158493699 + name 1_168_KEY_4 + 2158493700 + name 1_168_KEY_5 + 2158493701 + name 1_168_KEY_6 + 2158493702 + name 1_168_KEY_7 + 2158493703 + name 1_168_KEY_8 + 2158493704 + name 1_168_KEY_9 + 2158493705 + name 1_168_KEY_POWER + 2158493706 + name 1_168_KEY_CH_UP + 2158493711 + name 1_168_KEY_CH_DOWN + 2158493712 + name 1_168_CH_PREVIOUS + 2158493715 + name 1_168_KEY_DISPLAY + 2158493717 + name 1_168_KEY_EXIT + 2158493720 + name 1_168_KEY_INPUT + 2158493722 + name 1_168_KEY_GUIDE + 2158493723 + name 1_168_KEY_SELECT + 2158493726 + name 1_168_KEY_MENU + 2158493743 + name 1_168_KEY_MUP + 2158493744 + name 1_168_KEY_MDOWN + 2158493745 + name 1_168_KEY_MLEFT + 2158493746 + name 1_168_KEY_MRIGHT + 2158493747 + name 1_169_KEY_0 + 2158559232 + name 1_169_KEY_1 + 2158559233 + name 1_169_KEY_2 + 2158559234 + name 1_169_KEY_3 + 2158559235 + name 1_169_KEY_4 + 2158559236 + name 1_169_KEY_5 + 2158559237 + name 1_169_KEY_6 + 2158559238 + name 1_169_KEY_7 + 2158559239 + name 1_169_KEY_8 + 2158559240 + name 1_169_KEY_9 + 2158559241 + name 1_169_KEY_POWER + 2158559242 + name 1_169_KEY_CH_UP + 2158559247 + name 1_169_KEY_CH_DOWN + 2158559248 + name 1_169_CH_PREVIOUS + 2158559251 + name 1_169_KEY_DISPLAY + 2158559253 + name 1_169_KEY_EXIT + 2158559256 + name 1_169_KEY_INPUT + 2158559258 + name 1_169_KEY_GUIDE + 2158559259 + name 1_169_KEY_MNRETRUN + 2158559264 + name 1_169_KEY_SAT + 2158559274 + name 1_169_KEY_MUP + 2158559280 + name 1_169_KEY_MDOWN + 2158559281 + name 1_169_KEY_MLEFT + 2158559282 + name 1_169_KEY_MRIGHT + 2158559283 + name 1_170_KEY_0 + 2158624768 + name 1_170_KEY_1 + 2158624769 + name 1_170_KEY_2 + 2158624770 + name 1_170_KEY_3 + 2158624771 + name 1_170_KEY_4 + 2158624772 + name 1_170_KEY_5 + 2158624773 + name 1_170_KEY_6 + 2158624774 + name 1_170_KEY_7 + 2158624775 + name 1_170_KEY_8 + 2158624776 + name 1_170_KEY_9 + 2158624777 + name 1_170_KEY_POWER + 2158624778 + name 1_170_KEY_CH_UP + 2158624783 + name 1_170_KEY_CH_DOWN + 2158624784 + name 1_170_KEY_MUTE + 2158624785 + name 1_170_KEY_VOL_DOWN + 2158624786 + name 1_170_CH_PREVIOUS + 2158624787 + name 1_170_KEY_VOL_UP + 2158624788 + name 1_170_KEY_DISPLAY + 2158624789 + name 1_170_KEY_EXIT + 2158624792 + name 1_170_KEY_GUIDE + 2158624795 + name 1_170_KEY_MNRETRUN + 2158624800 + name 1_170_KEY_SAT + 2158624810 + name 1_170_KEY_MENU + 2158624815 + name 1_170_KEY_MUP + 2158624816 + name 1_170_KEY_MDOWN + 2158624817 + name 1_170_KEY_MLEFT + 2158624818 + name 1_170_KEY_MRIGHT + 2158624819 + name 1_171_KEY_0 + 2158690304 + name 1_171_KEY_1 + 2158690305 + name 1_171_KEY_2 + 2158690306 + name 1_171_KEY_3 + 2158690307 + name 1_171_KEY_4 + 2158690308 + name 1_171_KEY_5 + 2158690309 + name 1_171_KEY_6 + 2158690310 + name 1_171_KEY_7 + 2158690311 + name 1_171_KEY_8 + 2158690312 + name 1_171_KEY_9 + 2158690313 + name 1_171_KEY_POWER + 2158690314 + name 1_171_KEY_CH_UP + 2158690319 + name 1_171_KEY_CH_DOWN + 2158690320 + name 1_171_KEY_MUTE + 2158690321 + name 1_171_KEY_VOL_DOWN + 2158690322 + name 1_171_CH_PREVIOUS + 2158690323 + name 1_171_KEY_VOL_UP + 2158690324 + name 1_171_KEY_DISPLAY + 2158690325 + name 1_171_KEY_EXIT + 2158690328 + name 1_171_KEY_INPUT + 2158690330 + name 1_171_KEY_GUIDE + 2158690331 + name 1_171_KEY_MNRETRUN + 2158690336 + name 1_171_KEY_SAT + 2158690346 + name 1_171_KEY_MUP + 2158690352 + name 1_171_KEY_MDOWN + 2158690353 + name 1_171_KEY_MLEFT + 2158690354 + name 1_171_KEY_MRIGHT + 2158690355 + name 1_172_KEY_0 + 2158755840 + name 1_172_KEY_1 + 2158755841 + name 1_172_KEY_2 + 2158755842 + name 1_172_KEY_3 + 2158755843 + name 1_172_KEY_4 + 2158755844 + name 1_172_KEY_5 + 2158755845 + name 1_172_KEY_6 + 2158755846 + name 1_172_KEY_7 + 2158755847 + name 1_172_KEY_8 + 2158755848 + name 1_172_KEY_9 + 2158755849 + name 1_172_KEY_POWER + 2158755850 + name 1_172_KEY_CH_UP + 2158755855 + name 1_172_KEY_CH_DOWN + 2158755856 + name 1_172_KEY_MUTE + 2158755857 + name 1_172_KEY_VOL_DOWN + 2158755858 + name 1_172_CH_PREVIOUS + 2158755859 + name 1_172_KEY_VOL_UP + 2158755860 + name 1_172_KEY_DISPLAY + 2158755861 + name 1_172_KEY_EXIT + 2158755864 + name 1_172_KEY_INPUT + 2158755866 + name 1_172_KEY_GUIDE + 2158755867 + name 1_172_KEY_MNRETRUN + 2158755872 + name 1_172_KEY_SAT + 2158755882 + name 1_172_KEY_MUP + 2158755888 + name 1_172_KEY_MDOWN + 2158755889 + name 1_172_KEY_MLEFT + 2158755890 + name 1_172_KEY_MRIGHT + 2158755891 + name 1_173_KEY_0 + 2158821376 + name 1_173_KEY_1 + 2158821377 + name 1_173_KEY_2 + 2158821378 + name 1_173_KEY_3 + 2158821379 + name 1_173_KEY_4 + 2158821380 + name 1_173_KEY_5 + 2158821381 + name 1_173_KEY_6 + 2158821382 + name 1_173_KEY_7 + 2158821383 + name 1_173_KEY_8 + 2158821384 + name 1_173_KEY_9 + 2158821385 + name 1_173_KEY_POWER + 2158821386 + name 1_173_KEY_CH_UP + 2158821391 + name 1_173_KEY_CH_DOWN + 2158821392 + name 1_173_CH_PREVIOUS + 2158821395 + name 1_173_KEY_DISPLAY + 2158821397 + name 1_173_KEY_EXIT + 2158821400 + name 1_173_KEY_GUIDE + 2158821403 + name 1_173_KEY_MNRETRUN + 2158821408 + name 1_173_KEY_SAT + 2158821418 + name 1_173_KEY_MENU + 2158821423 + name 1_173_KEY_MUP + 2158821424 + name 1_173_KEY_MDOWN + 2158821425 + name 1_173_KEY_MLEFT + 2158821426 + name 1_173_KEY_MRIGHT + 2158821427 + name 1_173_KEY_Help + 2158821440 + name 0_300_KEY_0 + 19660800 + name 0_300_KEY_1 + 19660801 + name 0_300_KEY_2 + 19660802 + name 0_300_KEY_3 + 19660803 + name 0_300_KEY_4 + 19660804 + name 0_300_KEY_5 + 19660805 + name 0_300_KEY_6 + 19660806 + name 0_300_KEY_7 + 19660807 + name 0_300_KEY_8 + 19660808 + name 0_300_KEY_9 + 19660809 + name 0_300_KEY_POWER + 19660810 + name 0_300_KEY_CH_UP + 19660815 + name 0_300_KEY_CH_DOWN + 19660816 + name 0_300_KEY_MUTE + 19660817 + name 0_300_KEY_VOL_DOWN + 19660818 + name 0_300_KEY_VOL_UP + 19660820 + name 0_300_KEY_MENU + 19660847 + name 0_300_KEY_MUP + 19660848 + name 0_300_KEY_MDOWN + 19660849 + name 0_300_KEY_MLEFT + 19660850 + name 0_300_KEY_MRIGHT + 19660851 + name 1_300_KEY_0 + 2167144448 + name 1_300_KEY_1 + 2167144449 + name 1_300_KEY_2 + 2167144450 + name 1_300_KEY_3 + 2167144451 + name 1_300_KEY_4 + 2167144452 + name 1_300_KEY_5 + 2167144453 + name 1_300_KEY_6 + 2167144454 + name 1_300_KEY_7 + 2167144455 + name 1_300_KEY_8 + 2167144456 + name 1_300_KEY_9 + 2167144457 + name 1_300_KEY_POWER + 2167144458 + name 1_300_KEY_CH_UP + 2167144463 + name 1_300_KEY_CH_DOWN + 2167144464 + name 1_300_KEY_MNSELECT + 2167144471 + name 1_300_KEY_MENU + 2167144495 + name 1_300_KEY_MUP + 2167144496 + name 1_300_KEY_MDOWN + 2167144497 + name 1_300_KEY_MLEFT + 2167144498 + name 1_300_KEY_MRIGHT + 2167144499 + name 0_301_KEY_0 + 19726336 + name 0_301_KEY_1 + 19726337 + name 0_301_KEY_2 + 19726338 + name 0_301_KEY_3 + 19726339 + name 0_301_KEY_4 + 19726340 + name 0_301_KEY_5 + 19726341 + name 0_301_KEY_6 + 19726342 + name 0_301_KEY_7 + 19726343 + name 0_301_KEY_8 + 19726344 + name 0_301_KEY_9 + 19726345 + name 0_301_KEY_POWER + 19726346 + name 0_301_KEY_CH_UP + 19726351 + name 0_301_KEY_CH_DOWN + 19726352 + name 0_301_KEY_MUTE + 19726353 + name 0_301_KEY_VOL_DOWN + 19726354 + name 0_301_KEY_VOL_UP + 19726356 + name 0_301_KEY_MENU + 19726383 + name 0_301_KEY_MUP + 19726384 + name 0_301_KEY_MDOWN + 19726385 + name 0_301_KEY_MLEFT + 19726386 + name 0_301_KEY_MRIGHT + 19726387 + name 1_301_KEY_0 + 2167209984 + name 1_301_KEY_1 + 2167209985 + name 1_301_KEY_2 + 2167209986 + name 1_301_KEY_3 + 2167209987 + name 1_301_KEY_4 + 2167209988 + name 1_301_KEY_5 + 2167209989 + name 1_301_KEY_6 + 2167209990 + name 1_301_KEY_7 + 2167209991 + name 1_301_KEY_8 + 2167209992 + name 1_301_KEY_9 + 2167209993 + name 1_301_KEY_POWER + 2167209994 + name 1_301_KEY_CH_UP + 2167209999 + name 1_301_KEY_CH_DOWN + 2167210000 + name 1_301_CH_PREVIOUS + 2167210003 + name 1_301_KEY_MENU + 2167210031 + name 1_301_KEY_MUP + 2167210032 + name 1_301_KEY_MDOWN + 2167210033 + name 1_301_KEY_MLEFT + 2167210034 + name 1_301_KEY_MRIGHT + 2167210035 + name 0_302_KEY_0 + 19791872 + name 0_302_KEY_1 + 19791873 + name 0_302_KEY_2 + 19791874 + name 0_302_KEY_3 + 19791875 + name 0_302_KEY_4 + 19791876 + name 0_302_KEY_5 + 19791877 + name 0_302_KEY_6 + 19791878 + name 0_302_KEY_7 + 19791879 + name 0_302_KEY_8 + 19791880 + name 0_302_KEY_9 + 19791881 + name 0_302_KEY_POWER + 19791882 + name 0_302_KEY_CH_UP + 19791887 + name 0_302_KEY_CH_DOWN + 19791888 + name 0_302_KEY_MUTE + 19791889 + name 0_302_KEY_VOL_DOWN + 19791890 + name 0_302_KEY_VOL_UP + 19791892 + name 0_302_KEY_AV + 19791913 + name 0_302_KEY_MENU + 19791919 + name 0_302_KEY_MUP + 19791920 + name 0_302_KEY_MDOWN + 19791921 + name 0_302_KEY_MLEFT + 19791922 + name 0_302_KEY_MRIGHT + 19791923 + name 1_302_KEY_0 + 2167275520 + name 1_302_KEY_1 + 2167275521 + name 1_302_KEY_2 + 2167275522 + name 1_302_KEY_3 + 2167275523 + name 1_302_KEY_4 + 2167275524 + name 1_302_KEY_5 + 2167275525 + name 1_302_KEY_6 + 2167275526 + name 1_302_KEY_7 + 2167275527 + name 1_302_KEY_8 + 2167275528 + name 1_302_KEY_9 + 2167275529 + name 1_302_KEY_POWER + 2167275530 + name 1_302_KEY_CH_UP + 2167275535 + name 1_302_KEY_CH_DOWN + 2167275536 + name 1_302_CH_PREVIOUS + 2167275539 + name 1_302_KEY_MNSELECT + 2167275543 + name 1_302_KEY_MENU + 2167275567 + name 1_302_KEY_MUP + 2167275568 + name 1_302_KEY_MDOWN + 2167275569 + name 1_302_KEY_MLEFT + 2167275570 + name 1_302_KEY_MRIGHT + 2167275571 + name 0_303_KEY_0 + 19857408 + name 0_303_KEY_1 + 19857409 + name 0_303_KEY_2 + 19857410 + name 0_303_KEY_3 + 19857411 + name 0_303_KEY_4 + 19857412 + name 0_303_KEY_5 + 19857413 + name 0_303_KEY_6 + 19857414 + name 0_303_KEY_7 + 19857415 + name 0_303_KEY_8 + 19857416 + name 0_303_KEY_9 + 19857417 + name 0_303_KEY_POWER + 19857418 + name 0_303_TWO_DIGITS + 19857421 + name 0_303_KEY_CH_UP + 19857423 + name 0_303_KEY_CH_DOWN + 19857424 + name 1_303_KEY_0 + 2167341056 + name 1_303_KEY_1 + 2167341057 + name 1_303_KEY_2 + 2167341058 + name 1_303_KEY_3 + 2167341059 + name 1_303_KEY_4 + 2167341060 + name 1_303_KEY_5 + 2167341061 + name 1_303_KEY_6 + 2167341062 + name 1_303_KEY_7 + 2167341063 + name 1_303_KEY_8 + 2167341064 + name 1_303_KEY_9 + 2167341065 + name 1_303_KEY_POWER + 2167341066 + name 1_303_TWO_DIGITS + 2167341069 + name 1_303_KEY_CH_UP + 2167341071 + name 1_303_KEY_CH_DOWN + 2167341072 + name 1_303_CH_PREVIOUS + 2167341075 + name 1_303_KEY_MNSELECT + 2167341079 + name 1_303_KEY_FAV + 2167341085 + name 1_303_KEY_MENU + 2167341103 + name 1_303_KEY_MUP + 2167341104 + name 1_303_KEY_MDOWN + 2167341105 + name 1_303_KEY_MLEFT + 2167341106 + name 1_303_KEY_MRIGHT + 2167341107 + name 0_304_KEY_0 + 19922944 + name 0_304_KEY_1 + 19922945 + name 0_304_KEY_2 + 19922946 + name 0_304_KEY_3 + 19922947 + name 0_304_KEY_4 + 19922948 + name 0_304_KEY_5 + 19922949 + name 0_304_KEY_6 + 19922950 + name 0_304_KEY_7 + 19922951 + name 0_304_KEY_8 + 19922952 + name 0_304_KEY_9 + 19922953 + name 0_304_KEY_POWER + 19922954 + name 0_304_KEY_CH_UP + 19922959 + name 0_304_KEY_CH_DOWN + 19922960 + name 0_304_CH_PREVIOUS + 19922963 + name 1_304_KEY_0 + 2167406592 + name 1_304_KEY_1 + 2167406593 + name 1_304_KEY_2 + 2167406594 + name 1_304_KEY_3 + 2167406595 + name 1_304_KEY_4 + 2167406596 + name 1_304_KEY_5 + 2167406597 + name 1_304_KEY_6 + 2167406598 + name 1_304_KEY_7 + 2167406599 + name 1_304_KEY_8 + 2167406600 + name 1_304_KEY_9 + 2167406601 + name 1_304_KEY_POWER + 2167406602 + name 1_304_KEY_CH_UP + 2167406607 + name 1_304_KEY_CH_DOWN + 2167406608 + name 1_304_KEY_MNSELECT + 2167406615 + name 1_304_KEY_MENU + 2167406639 + name 1_304_KEY_MUP + 2167406640 + name 1_304_KEY_MDOWN + 2167406641 + name 1_304_KEY_MLEFT + 2167406642 + name 1_304_KEY_MRIGHT + 2167406643 + name 0_305_KEY_0 + 19988480 + name 0_305_KEY_1 + 19988481 + name 0_305_KEY_2 + 19988482 + name 0_305_KEY_3 + 19988483 + name 0_305_KEY_4 + 19988484 + name 0_305_KEY_5 + 19988485 + name 0_305_KEY_6 + 19988486 + name 0_305_KEY_7 + 19988487 + name 0_305_KEY_8 + 19988488 + name 0_305_KEY_9 + 19988489 + name 0_305_KEY_POWER + 19988490 + name 0_305_TWO_DIGITS + 19988493 + name 0_305_KEY_CH_UP + 19988495 + name 0_305_KEY_CH_DOWN + 19988496 + name 0_305_CH_PREVIOUS + 19988499 + name 1_305_KEY_0 + 2167472128 + name 1_305_KEY_1 + 2167472129 + name 1_305_KEY_2 + 2167472130 + name 1_305_KEY_3 + 2167472131 + name 1_305_KEY_4 + 2167472132 + name 1_305_KEY_5 + 2167472133 + name 1_305_KEY_6 + 2167472134 + name 1_305_KEY_7 + 2167472135 + name 1_305_KEY_8 + 2167472136 + name 1_305_KEY_9 + 2167472137 + name 1_305_KEY_POWER + 2167472138 + name 1_305_TWO_DIGITS + 2167472141 + name 1_305_KEY_CH_UP + 2167472143 + name 1_305_KEY_CH_DOWN + 2167472144 + name 1_305_KEY_FAV + 2167472157 + name 0_306_KEY_0 + 20054016 + name 0_306_KEY_1 + 20054017 + name 0_306_KEY_2 + 20054018 + name 0_306_KEY_3 + 20054019 + name 0_306_KEY_4 + 20054020 + name 0_306_KEY_5 + 20054021 + name 0_306_KEY_6 + 20054022 + name 0_306_KEY_7 + 20054023 + name 0_306_KEY_8 + 20054024 + name 0_306_KEY_9 + 20054025 + name 0_306_KEY_POWER + 20054026 + name 0_306_KEY_CH_UP + 20054031 + name 0_306_KEY_CH_DOWN + 20054032 + name 0_306_KEY_AV + 20054057 + name 1_306_KEY_0 + 2167537664 + name 1_306_KEY_1 + 2167537665 + name 1_306_KEY_2 + 2167537666 + name 1_306_KEY_3 + 2167537667 + name 1_306_KEY_4 + 2167537668 + name 1_306_KEY_5 + 2167537669 + name 1_306_KEY_6 + 2167537670 + name 1_306_KEY_7 + 2167537671 + name 1_306_KEY_8 + 2167537672 + name 1_306_KEY_9 + 2167537673 + name 1_306_KEY_POWER + 2167537674 + name 1_306_KEY_CH_UP + 2167537679 + name 1_306_KEY_CH_DOWN + 2167537680 + name 1_306_CH_PREVIOUS + 2167537683 + name 1_306_KEY_MNSELECT + 2167537687 + name 1_306_KEY_MENU + 2167537711 + name 1_306_KEY_MUP + 2167537712 + name 1_306_KEY_MDOWN + 2167537713 + name 1_306_KEY_MLEFT + 2167537714 + name 1_306_KEY_MRIGHT + 2167537715 + name 0_307_KEY_0 + 20119552 + name 0_307_KEY_1 + 20119553 + name 0_307_KEY_2 + 20119554 + name 0_307_KEY_3 + 20119555 + name 0_307_KEY_4 + 20119556 + name 0_307_KEY_5 + 20119557 + name 0_307_KEY_6 + 20119558 + name 0_307_KEY_7 + 20119559 + name 0_307_KEY_8 + 20119560 + name 0_307_KEY_9 + 20119561 + name 0_307_KEY_POWER + 20119562 + name 0_307_KEY_CH_UP + 20119567 + name 0_307_KEY_CH_DOWN + 20119568 + name 0_307_CH_PREVIOUS + 20119571 + name 1_307_KEY_0 + 2167603200 + name 1_307_KEY_1 + 2167603201 + name 1_307_KEY_2 + 2167603202 + name 1_307_KEY_3 + 2167603203 + name 1_307_KEY_4 + 2167603204 + name 1_307_KEY_5 + 2167603205 + name 1_307_KEY_6 + 2167603206 + name 1_307_KEY_7 + 2167603207 + name 1_307_KEY_8 + 2167603208 + name 1_307_KEY_9 + 2167603209 + name 1_307_KEY_POWER + 2167603210 + name 1_307_KEY_CH_UP + 2167603215 + name 1_307_KEY_CH_DOWN + 2167603216 + name 1_307_CH_PREVIOUS + 2167603219 + name 1_307_KEY_MNSELECT + 2167603223 + name 1_307_KEY_MENU + 2167603247 + name 1_307_KEY_MUP + 2167603248 + name 1_307_KEY_MDOWN + 2167603249 + name 1_307_KEY_MLEFT + 2167603250 + name 1_307_KEY_MRIGHT + 2167603251 + name 0_308_KEY_0 + 20185088 + name 0_308_KEY_1 + 20185089 + name 0_308_KEY_2 + 20185090 + name 0_308_KEY_3 + 20185091 + name 0_308_KEY_4 + 20185092 + name 0_308_KEY_5 + 20185093 + name 0_308_KEY_6 + 20185094 + name 0_308_KEY_7 + 20185095 + name 0_308_KEY_8 + 20185096 + name 0_308_KEY_9 + 20185097 + name 0_308_KEY_POWER + 20185098 + name 0_308_TWO_DIGITS + 20185101 + name 0_308_KEY_CH_UP + 20185103 + name 0_308_KEY_CH_DOWN + 20185104 + name 0_308_CH_PREVIOUS + 20185107 + name 1_308_KEY_0 + 2167668736 + name 1_308_KEY_1 + 2167668737 + name 1_308_KEY_2 + 2167668738 + name 1_308_KEY_3 + 2167668739 + name 1_308_KEY_4 + 2167668740 + name 1_308_KEY_5 + 2167668741 + name 1_308_KEY_6 + 2167668742 + name 1_308_KEY_7 + 2167668743 + name 1_308_KEY_8 + 2167668744 + name 1_308_KEY_9 + 2167668745 + name 1_308_KEY_POWER + 2167668746 + name 1_308_KEY_CH_UP + 2167668751 + name 1_308_KEY_CH_DOWN + 2167668752 + name 1_308_KEY_MNSELECT + 2167668759 + name 1_308_KEY_MENU + 2167668783 + name 1_308_KEY_MUP + 2167668784 + name 1_308_KEY_MDOWN + 2167668785 + name 1_308_KEY_MLEFT + 2167668786 + name 1_308_KEY_MRIGHT + 2167668787 + name 1_308_KEY_On + 2167668813 + name 0_309_KEY_0 + 20250624 + name 0_309_KEY_1 + 20250625 + name 0_309_KEY_2 + 20250626 + name 0_309_KEY_3 + 20250627 + name 0_309_KEY_4 + 20250628 + name 0_309_KEY_5 + 20250629 + name 0_309_KEY_6 + 20250630 + name 0_309_KEY_7 + 20250631 + name 0_309_KEY_8 + 20250632 + name 0_309_KEY_9 + 20250633 + name 0_309_KEY_POWER + 20250634 + name 0_309_KEY_CH_UP + 20250639 + name 0_309_KEY_CH_DOWN + 20250640 + name 1_309_KEY_0 + 2167734272 + name 1_309_KEY_1 + 2167734273 + name 1_309_KEY_2 + 2167734274 + name 1_309_KEY_3 + 2167734275 + name 1_309_KEY_4 + 2167734276 + name 1_309_KEY_5 + 2167734277 + name 1_309_KEY_6 + 2167734278 + name 1_309_KEY_7 + 2167734279 + name 1_309_KEY_8 + 2167734280 + name 1_309_KEY_9 + 2167734281 + name 1_309_KEY_POWER + 2167734282 + name 1_309_KEY_CH_UP + 2167734287 + name 1_309_KEY_CH_DOWN + 2167734288 + name 1_309_KEY_MNSELECT + 2167734295 + name 1_309_KEY_MENU + 2167734319 + name 1_309_KEY_MUP + 2167734320 + name 1_309_KEY_MDOWN + 2167734321 + name 1_309_KEY_MLEFT + 2167734322 + name 1_309_KEY_MRIGHT + 2167734323 + name 1_309_KEY_On + 2167734349 + name 0_310_KEY_0 + 20316160 + name 0_310_KEY_1 + 20316161 + name 0_310_KEY_2 + 20316162 + name 0_310_KEY_3 + 20316163 + name 0_310_KEY_4 + 20316164 + name 0_310_KEY_5 + 20316165 + name 0_310_KEY_6 + 20316166 + name 0_310_KEY_7 + 20316167 + name 0_310_KEY_8 + 20316168 + name 0_310_KEY_9 + 20316169 + name 0_310_KEY_POWER + 20316170 + name 0_310_TWO_DIGITS + 20316173 + name 0_310_KEY_CH_UP + 20316175 + name 0_310_KEY_CH_DOWN + 20316176 + name 1_310_KEY_0 + 2167799808 + name 1_310_KEY_1 + 2167799809 + name 1_310_KEY_2 + 2167799810 + name 1_310_KEY_3 + 2167799811 + name 1_310_KEY_4 + 2167799812 + name 1_310_KEY_5 + 2167799813 + name 1_310_KEY_6 + 2167799814 + name 1_310_KEY_7 + 2167799815 + name 1_310_KEY_8 + 2167799816 + name 1_310_KEY_9 + 2167799817 + name 1_310_KEY_POWER + 2167799818 + name 1_310_KEY_CH_UP + 2167799823 + name 1_310_KEY_CH_DOWN + 2167799824 + name 1_310_KEY_MNSELECT + 2167799831 + name 1_310_KEY_MENU + 2167799855 + name 1_310_KEY_MUP + 2167799856 + name 1_310_KEY_MDOWN + 2167799857 + name 1_310_KEY_MLEFT + 2167799858 + name 1_310_KEY_MRIGHT + 2167799859 + name 1_310_KEY_On + 2167799885 + name 0_311_KEY_0 + 20381696 + name 0_311_KEY_1 + 20381697 + name 0_311_KEY_2 + 20381698 + name 0_311_KEY_3 + 20381699 + name 0_311_KEY_4 + 20381700 + name 0_311_KEY_5 + 20381701 + name 0_311_KEY_6 + 20381702 + name 0_311_KEY_7 + 20381703 + name 0_311_KEY_8 + 20381704 + name 0_311_KEY_9 + 20381705 + name 0_311_KEY_POWER + 20381706 + name 0_311_KEY_CH_UP + 20381711 + name 0_311_KEY_CH_DOWN + 20381712 + name 1_311_KEY_0 + 2167865344 + name 1_311_KEY_1 + 2167865345 + name 1_311_KEY_2 + 2167865346 + name 1_311_KEY_3 + 2167865347 + name 1_311_KEY_4 + 2167865348 + name 1_311_KEY_5 + 2167865349 + name 1_311_KEY_6 + 2167865350 + name 1_311_KEY_7 + 2167865351 + name 1_311_KEY_8 + 2167865352 + name 1_311_KEY_9 + 2167865353 + name 1_311_KEY_POWER + 2167865354 + name 1_311_KEY_CH_UP + 2167865359 + name 1_311_KEY_CH_DOWN + 2167865360 + name 1_311_CH_PREVIOUS + 2167865363 + name 1_311_KEY_MENU + 2167865391 + name 1_311_KEY_MUP + 2167865392 + name 1_311_KEY_MDOWN + 2167865393 + name 1_311_KEY_MLEFT + 2167865394 + name 1_311_KEY_MRIGHT + 2167865395 + name 0_312_KEY_0 + 20447232 + name 0_312_KEY_1 + 20447233 + name 0_312_KEY_2 + 20447234 + name 0_312_KEY_3 + 20447235 + name 0_312_KEY_4 + 20447236 + name 0_312_KEY_5 + 20447237 + name 0_312_KEY_6 + 20447238 + name 0_312_KEY_7 + 20447239 + name 0_312_KEY_8 + 20447240 + name 0_312_KEY_9 + 20447241 + name 0_312_KEY_POWER + 20447242 + name 0_312_TWO_DIGITS + 20447245 + name 0_312_KEY_CH_UP + 20447247 + name 0_312_KEY_CH_DOWN + 20447248 + name 1_312_KEY_0 + 2167930880 + name 1_312_KEY_1 + 2167930881 + name 1_312_KEY_2 + 2167930882 + name 1_312_KEY_3 + 2167930883 + name 1_312_KEY_4 + 2167930884 + name 1_312_KEY_5 + 2167930885 + name 1_312_KEY_6 + 2167930886 + name 1_312_KEY_7 + 2167930887 + name 1_312_KEY_8 + 2167930888 + name 1_312_KEY_9 + 2167930889 + name 1_312_KEY_POWER + 2167930890 + name 1_312_KEY_CH_UP + 2167930895 + name 1_312_KEY_CH_DOWN + 2167930896 + name 1_312_KEY_MNSELECT + 2167930903 + name 1_312_KEY_MENU + 2167930927 + name 1_312_KEY_MUP + 2167930928 + name 1_312_KEY_MDOWN + 2167930929 + name 1_312_KEY_MLEFT + 2167930930 + name 1_312_KEY_MRIGHT + 2167930931 + name 0_313_KEY_0 + 20512768 + name 0_313_KEY_1 + 20512769 + name 0_313_KEY_2 + 20512770 + name 0_313_KEY_3 + 20512771 + name 0_313_KEY_4 + 20512772 + name 0_313_KEY_5 + 20512773 + name 0_313_KEY_6 + 20512774 + name 0_313_KEY_7 + 20512775 + name 0_313_KEY_8 + 20512776 + name 0_313_KEY_9 + 20512777 + name 0_313_KEY_POWER + 20512778 + name 0_313_KEY_CH_UP + 20512783 + name 0_313_KEY_CH_DOWN + 20512784 + name 0_313_KEY_MUTE + 20512785 + name 0_313_KEY_VOL_DOWN + 20512786 + name 0_313_CH_PREVIOUS + 20512787 + name 0_313_KEY_VOL_UP + 20512788 + name 0_313_KEY_Sleep + 20512831 + name 1_313_KEY_0 + 2167996416 + name 1_313_KEY_1 + 2167996417 + name 1_313_KEY_2 + 2167996418 + name 1_313_KEY_3 + 2167996419 + name 1_313_KEY_4 + 2167996420 + name 1_313_KEY_5 + 2167996421 + name 1_313_KEY_6 + 2167996422 + name 1_313_KEY_7 + 2167996423 + name 1_313_KEY_8 + 2167996424 + name 1_313_KEY_9 + 2167996425 + name 1_313_KEY_POWER + 2167996426 + name 1_313_KEY_CH_UP + 2167996431 + name 1_313_KEY_CH_DOWN + 2167996432 + name 1_313_CH_PREVIOUS + 2167996435 + name 1_313_KEY_MNSELECT + 2167996439 + name 1_313_KEY_EXIT + 2167996440 + name 1_313_KEY_GUIDE + 2167996443 + name 1_313_KEY_AV + 2167996457 + name 1_313_KEY_MENU + 2167996463 + name 1_313_KEY_MUP + 2167996464 + name 1_313_KEY_MDOWN + 2167996465 + name 1_313_KEY_MLEFT + 2167996466 + name 1_313_KEY_MRIGHT + 2167996467 + name 0_314_KEY_0 + 20578304 + name 0_314_KEY_1 + 20578305 + name 0_314_KEY_2 + 20578306 + name 0_314_KEY_3 + 20578307 + name 0_314_KEY_4 + 20578308 + name 0_314_KEY_5 + 20578309 + name 0_314_KEY_6 + 20578310 + name 0_314_KEY_7 + 20578311 + name 0_314_KEY_8 + 20578312 + name 0_314_KEY_9 + 20578313 + name 0_314_KEY_POWER + 20578314 + name 0_314_KEY_CH_UP + 20578319 + name 0_314_KEY_CH_DOWN + 20578320 + name 0_314_CH_PREVIOUS + 20578323 + name 1_314_KEY_0 + 2168061952 + name 1_314_KEY_1 + 2168061953 + name 1_314_KEY_2 + 2168061954 + name 1_314_KEY_3 + 2168061955 + name 1_314_KEY_4 + 2168061956 + name 1_314_KEY_5 + 2168061957 + name 1_314_KEY_6 + 2168061958 + name 1_314_KEY_7 + 2168061959 + name 1_314_KEY_8 + 2168061960 + name 1_314_KEY_9 + 2168061961 + name 1_314_KEY_POWER + 2168061962 + name 1_314_KEY_CH_UP + 2168061967 + name 1_314_KEY_CH_DOWN + 2168061968 + name 1_314_CH_PREVIOUS + 2168061971 + name 1_314_KEY_MNSELECT + 2168061975 + name 1_314_KEY_EXIT + 2168061976 + name 1_314_KEY_GUIDE + 2168061979 + name 1_314_KEY_AV + 2168061993 + name 1_314_KEY_MENU + 2168061999 + name 1_314_KEY_MUP + 2168062000 + name 1_314_KEY_MDOWN + 2168062001 + name 1_314_KEY_MLEFT + 2168062002 + name 1_314_KEY_MRIGHT + 2168062003 + name 0_315_KEY_0 + 20643840 + name 0_315_KEY_1 + 20643841 + name 0_315_KEY_2 + 20643842 + name 0_315_KEY_3 + 20643843 + name 0_315_KEY_4 + 20643844 + name 0_315_KEY_5 + 20643845 + name 0_315_KEY_6 + 20643846 + name 0_315_KEY_7 + 20643847 + name 0_315_KEY_8 + 20643848 + name 0_315_KEY_9 + 20643849 + name 0_315_KEY_POWER + 20643850 + name 0_315_KEY_CH_UP + 20643855 + name 0_315_KEY_CH_DOWN + 20643856 + name 1_315_KEY_0 + 2168127488 + name 1_315_KEY_1 + 2168127489 + name 1_315_KEY_2 + 2168127490 + name 1_315_KEY_3 + 2168127491 + name 1_315_KEY_4 + 2168127492 + name 1_315_KEY_5 + 2168127493 + name 1_315_KEY_6 + 2168127494 + name 1_315_KEY_7 + 2168127495 + name 1_315_KEY_8 + 2168127496 + name 1_315_KEY_9 + 2168127497 + name 1_315_KEY_POWER + 2168127498 + name 1_315_KEY_CH_UP + 2168127503 + name 1_315_KEY_CH_DOWN + 2168127504 + name 1_315_CH_PREVIOUS + 2168127507 + name 1_315_KEY_MNSELECT + 2168127511 + name 1_315_KEY_EXIT + 2168127512 + name 1_315_KEY_GUIDE + 2168127515 + name 1_315_KEY_AV + 2168127529 + name 1_315_KEY_MENU + 2168127535 + name 1_315_KEY_MUP + 2168127536 + name 1_315_KEY_MDOWN + 2168127537 + name 1_315_KEY_MLEFT + 2168127538 + name 1_315_KEY_MRIGHT + 2168127539 + name 0_316_KEY_0 + 20709376 + name 0_316_KEY_1 + 20709377 + name 0_316_KEY_2 + 20709378 + name 0_316_KEY_3 + 20709379 + name 0_316_KEY_4 + 20709380 + name 0_316_KEY_5 + 20709381 + name 0_316_KEY_6 + 20709382 + name 0_316_KEY_7 + 20709383 + name 0_316_KEY_8 + 20709384 + name 0_316_KEY_9 + 20709385 + name 0_316_KEY_POWER + 20709386 + name 0_316_KEY_CH_UP + 20709391 + name 0_316_KEY_CH_DOWN + 20709392 + name 1_316_KEY_0 + 2168193024 + name 1_316_KEY_1 + 2168193025 + name 1_316_KEY_2 + 2168193026 + name 1_316_KEY_3 + 2168193027 + name 1_316_KEY_4 + 2168193028 + name 1_316_KEY_5 + 2168193029 + name 1_316_KEY_6 + 2168193030 + name 1_316_KEY_7 + 2168193031 + name 1_316_KEY_8 + 2168193032 + name 1_316_KEY_9 + 2168193033 + name 1_316_KEY_POWER + 2168193034 + name 1_316_KEY_CH_UP + 2168193039 + name 1_316_KEY_CH_DOWN + 2168193040 + name 1_316_CH_PREVIOUS + 2168193043 + name 1_316_KEY_MNSELECT + 2168193047 + name 1_316_KEY_EXIT + 2168193048 + name 1_316_KEY_GUIDE + 2168193051 + name 1_316_KEY_AV + 2168193065 + name 1_316_KEY_MENU + 2168193071 + name 1_316_KEY_MUP + 2168193072 + name 1_316_KEY_MDOWN + 2168193073 + name 1_316_KEY_MLEFT + 2168193074 + name 1_316_KEY_MRIGHT + 2168193075 + name 0_317_KEY_0 + 20774912 + name 0_317_KEY_1 + 20774913 + name 0_317_KEY_2 + 20774914 + name 0_317_KEY_3 + 20774915 + name 0_317_KEY_4 + 20774916 + name 0_317_KEY_5 + 20774917 + name 0_317_KEY_6 + 20774918 + name 0_317_KEY_7 + 20774919 + name 0_317_KEY_8 + 20774920 + name 0_317_KEY_9 + 20774921 + name 0_317_KEY_POWER + 20774922 + name 0_317_KEY_CH_UP + 20774927 + name 0_317_KEY_CH_DOWN + 20774928 + name 0_317_CH_PREVIOUS + 20774931 + name 1_317_KEY_0 + 2168258560 + name 1_317_KEY_1 + 2168258561 + name 1_317_KEY_2 + 2168258562 + name 1_317_KEY_3 + 2168258563 + name 1_317_KEY_4 + 2168258564 + name 1_317_KEY_5 + 2168258565 + name 1_317_KEY_6 + 2168258566 + name 1_317_KEY_7 + 2168258567 + name 1_317_KEY_8 + 2168258568 + name 1_317_KEY_9 + 2168258569 + name 1_317_KEY_POWER + 2168258570 + name 1_317_TWO_DIGITS + 2168258573 + name 1_317_KEY_CH_UP + 2168258575 + name 1_317_KEY_CH_DOWN + 2168258576 + name 1_317_KEY_MUTE + 2168258577 + name 1_317_KEY_VOL_DOWN + 2168258578 + name 1_317_KEY_VOL_UP + 2168258580 + name 1_317_KEY_DISPLAY + 2168258581 + name 1_317_KEY_MNSELECT + 2168258583 + name 1_317_KEY_EXIT + 2168258584 + name 1_317_KEY_MENU + 2168258607 + name 1_317_KEY_MUP + 2168258608 + name 1_317_KEY_MDOWN + 2168258609 + name 1_317_KEY_MLEFT + 2168258610 + name 1_317_KEY_MRIGHT + 2168258611 + name 0_318_KEY_0 + 20840448 + name 0_318_KEY_1 + 20840449 + name 0_318_KEY_2 + 20840450 + name 0_318_KEY_3 + 20840451 + name 0_318_KEY_4 + 20840452 + name 0_318_KEY_5 + 20840453 + name 0_318_KEY_6 + 20840454 + name 0_318_KEY_7 + 20840455 + name 0_318_KEY_8 + 20840456 + name 0_318_KEY_9 + 20840457 + name 0_318_KEY_POWER + 20840458 + name 0_318_KEY_CH_UP + 20840463 + name 0_318_KEY_CH_DOWN + 20840464 + name 0_318_KEY_MUTE + 20840465 + name 0_318_KEY_VOL_DOWN + 20840466 + name 0_318_CH_PREVIOUS + 20840467 + name 0_318_KEY_VOL_UP + 20840468 + name 0_318_KEY_AV + 20840489 + name 1_318_KEY_0 + 2168324096 + name 1_318_KEY_1 + 2168324097 + name 1_318_KEY_2 + 2168324098 + name 1_318_KEY_3 + 2168324099 + name 1_318_KEY_4 + 2168324100 + name 1_318_KEY_5 + 2168324101 + name 1_318_KEY_6 + 2168324102 + name 1_318_KEY_7 + 2168324103 + name 1_318_KEY_8 + 2168324104 + name 1_318_KEY_9 + 2168324105 + name 1_318_KEY_POWER + 2168324106 + name 1_318_POWER_OFF + 2168324108 + name 1_318_TWO_DIGITS + 2168324109 + name 1_318_KEY_CH_UP + 2168324111 + name 1_318_KEY_CH_DOWN + 2168324112 + name 1_318_KEY_DISPLAY + 2168324117 + name 1_318_KEY_TIMER + 2168324140 + name 0_319_KEY_0 + 20905984 + name 0_319_KEY_1 + 20905985 + name 0_319_KEY_2 + 20905986 + name 0_319_KEY_3 + 20905987 + name 0_319_KEY_4 + 20905988 + name 0_319_KEY_5 + 20905989 + name 0_319_KEY_6 + 20905990 + name 0_319_KEY_7 + 20905991 + name 0_319_KEY_8 + 20905992 + name 0_319_KEY_9 + 20905993 + name 0_319_KEY_POWER + 20905994 + name 0_319_KEY_CH_UP + 20905999 + name 0_319_KEY_CH_DOWN + 20906000 + name 0_319_CH_PREVIOUS + 20906003 + name 1_319_KEY_0 + 2168389632 + name 1_319_KEY_1 + 2168389633 + name 1_319_KEY_2 + 2168389634 + name 1_319_KEY_3 + 2168389635 + name 1_319_KEY_4 + 2168389636 + name 1_319_KEY_5 + 2168389637 + name 1_319_KEY_6 + 2168389638 + name 1_319_KEY_7 + 2168389639 + name 1_319_KEY_8 + 2168389640 + name 1_319_KEY_9 + 2168389641 + name 1_319_KEY_POWER + 2168389642 + name 1_319_TWO_DIGITS + 2168389645 + name 1_319_KEY_CH_UP + 2168389647 + name 1_319_KEY_CH_DOWN + 2168389648 + name 1_319_KEY_MUTE + 2168389649 + name 1_319_KEY_VOL_DOWN + 2168389650 + name 1_319_CH_PREVIOUS + 2168389651 + name 1_319_KEY_VOL_UP + 2168389652 + name 1_319_KEY_FAV + 2168389661 + name 1_319_KEY_FTUNEPLUS + 2168389665 + name 1_319_KEY_FTUNEMINUS + 2168389666 + name 0_320_KEY_0 + 20971520 + name 0_320_KEY_1 + 20971521 + name 0_320_KEY_2 + 20971522 + name 0_320_KEY_3 + 20971523 + name 0_320_KEY_4 + 20971524 + name 0_320_KEY_5 + 20971525 + name 0_320_KEY_6 + 20971526 + name 0_320_KEY_7 + 20971527 + name 0_320_KEY_8 + 20971528 + name 0_320_KEY_9 + 20971529 + name 0_320_KEY_POWER + 20971530 + name 0_320_TWO_DIGITS + 20971533 + name 0_320_KEY_CH_UP + 20971535 + name 0_320_KEY_CH_DOWN + 20971536 + name 0_320_KEY_MNSELECT + 20971543 + name 0_320_KEY_MENU + 20971567 + name 0_320_KEY_MUP + 20971568 + name 0_320_KEY_MDOWN + 20971569 + name 0_320_KEY_MLEFT + 20971570 + name 0_320_KEY_MRIGHT + 20971571 + name 1_320_KEY_0 + 2168455168 + name 1_320_KEY_1 + 2168455169 + name 1_320_KEY_2 + 2168455170 + name 1_320_KEY_3 + 2168455171 + name 1_320_KEY_4 + 2168455172 + name 1_320_KEY_5 + 2168455173 + name 1_320_KEY_6 + 2168455174 + name 1_320_KEY_7 + 2168455175 + name 1_320_KEY_8 + 2168455176 + name 1_320_KEY_9 + 2168455177 + name 1_320_KEY_POWER + 2168455178 + name 1_320_TWO_DIGITS + 2168455181 + name 1_320_KEY_CH_UP + 2168455183 + name 1_320_KEY_CH_DOWN + 2168455184 + name 1_320_KEY_MUTE + 2168455185 + name 1_320_KEY_VOL_DOWN + 2168455186 + name 1_320_CH_PREVIOUS + 2168455187 + name 1_320_KEY_VOL_UP + 2168455188 + name 1_320_KEY_FAV + 2168455197 + name 1_320_KEY_FTUNEPLUS + 2168455201 + name 1_320_KEY_FTUNEMINUS + 2168455202 + name 0_321_KEY_0 + 21037056 + name 0_321_KEY_1 + 21037057 + name 0_321_KEY_2 + 21037058 + name 0_321_KEY_3 + 21037059 + name 0_321_KEY_4 + 21037060 + name 0_321_KEY_5 + 21037061 + name 0_321_KEY_6 + 21037062 + name 0_321_KEY_7 + 21037063 + name 0_321_KEY_8 + 21037064 + name 0_321_KEY_9 + 21037065 + name 0_321_KEY_POWER + 21037066 + name 0_321_KEY_CH_UP + 21037071 + name 0_321_KEY_CH_DOWN + 21037072 + name 0_321_KEY_MUTE + 21037073 + name 0_321_KEY_VOL_DOWN + 21037074 + name 0_321_KEY_VOL_UP + 21037076 + name 0_321_KEY_AV + 21037097 + name 0_321_KEY_MENU + 21037103 + name 0_321_KEY_MUP + 21037104 + name 0_321_KEY_MDOWN + 21037105 + name 0_321_KEY_MLEFT + 21037106 + name 0_321_KEY_MRIGHT + 21037107 + name 1_321_KEY_0 + 2168520704 + name 1_321_KEY_1 + 2168520705 + name 1_321_KEY_2 + 2168520706 + name 1_321_KEY_3 + 2168520707 + name 1_321_KEY_4 + 2168520708 + name 1_321_KEY_5 + 2168520709 + name 1_321_KEY_6 + 2168520710 + name 1_321_KEY_7 + 2168520711 + name 1_321_KEY_8 + 2168520712 + name 1_321_KEY_9 + 2168520713 + name 1_321_KEY_POWER + 2168520714 + name 1_321_TWO_DIGITS + 2168520717 + name 1_321_KEY_CH_UP + 2168520719 + name 1_321_KEY_CH_DOWN + 2168520720 + name 1_321_CH_PREVIOUS + 2168520723 + name 0_322_KEY_0 + 21102592 + name 0_322_KEY_1 + 21102593 + name 0_322_KEY_2 + 21102594 + name 0_322_KEY_3 + 21102595 + name 0_322_KEY_4 + 21102596 + name 0_322_KEY_5 + 21102597 + name 0_322_KEY_6 + 21102598 + name 0_322_KEY_7 + 21102599 + name 0_322_KEY_8 + 21102600 + name 0_322_KEY_9 + 21102601 + name 0_322_KEY_POWER + 21102602 + name 0_322_KEY_CH_UP + 21102607 + name 0_322_KEY_CH_DOWN + 21102608 + name 0_322_KEY_MUTE + 21102609 + name 0_322_KEY_VOL_DOWN + 21102610 + name 0_322_CH_PREVIOUS + 21102611 + name 0_322_KEY_VOL_UP + 21102612 + name 0_322_KEY_MNSELECT + 21102615 + name 0_322_KEY_MUP + 21102640 + name 0_322_KEY_MDOWN + 21102641 + name 1_322_KEY_0 + 2168586240 + name 1_322_KEY_1 + 2168586241 + name 1_322_KEY_2 + 2168586242 + name 1_322_KEY_3 + 2168586243 + name 1_322_KEY_4 + 2168586244 + name 1_322_KEY_5 + 2168586245 + name 1_322_KEY_6 + 2168586246 + name 1_322_KEY_7 + 2168586247 + name 1_322_KEY_8 + 2168586248 + name 1_322_KEY_9 + 2168586249 + name 1_322_KEY_POWER + 2168586250 + name 1_322_TWO_DIGITS + 2168586253 + name 1_322_KEY_CH_UP + 2168586255 + name 1_322_KEY_CH_DOWN + 2168586256 + name 1_322_KEY_MUTE + 2168586257 + name 1_322_KEY_VOL_DOWN + 2168586258 + name 1_322_KEY_VOL_UP + 2168586260 + name 1_322_KEY_FTUNEPLUS + 2168586273 + name 1_322_KEY_FTUNEMINUS + 2168586274 + name 0_323_KEY_0 + 21168128 + name 0_323_KEY_1 + 21168129 + name 0_323_KEY_2 + 21168130 + name 0_323_KEY_3 + 21168131 + name 0_323_KEY_4 + 21168132 + name 0_323_KEY_5 + 21168133 + name 0_323_KEY_6 + 21168134 + name 0_323_KEY_7 + 21168135 + name 0_323_KEY_8 + 21168136 + name 0_323_KEY_9 + 21168137 + name 0_323_KEY_POWER + 21168138 + name 0_323_KEY_CH_UP + 21168143 + name 0_323_KEY_CH_DOWN + 21168144 + name 0_323_KEY_MUTE + 21168145 + name 0_323_KEY_VOL_DOWN + 21168146 + name 0_323_KEY_VOL_UP + 21168148 + name 0_323_KEY_AV + 21168169 + name 0_323_KEY_MUP + 21168176 + name 0_323_KEY_MDOWN + 21168177 + name 1_323_KEY_0 + 2168651776 + name 1_323_KEY_1 + 2168651777 + name 1_323_KEY_2 + 2168651778 + name 1_323_KEY_3 + 2168651779 + name 1_323_KEY_4 + 2168651780 + name 1_323_KEY_5 + 2168651781 + name 1_323_KEY_6 + 2168651782 + name 1_323_KEY_7 + 2168651783 + name 1_323_KEY_8 + 2168651784 + name 1_323_KEY_9 + 2168651785 + name 1_323_KEY_POWER + 2168651786 + name 1_323_TWO_DIGITS + 2168651789 + name 1_323_KEY_CH_UP + 2168651791 + name 1_323_KEY_CH_DOWN + 2168651792 + name 1_323_KEY_MUTE + 2168651793 + name 1_323_KEY_VOL_DOWN + 2168651794 + name 1_323_KEY_VOL_UP + 2168651796 + name 1_323_KEY_DISPLAY + 2168651797 + name 1_323_KEY_FTUNEPLUS + 2168651809 + name 1_323_KEY_FTUNEMINUS + 2168651810 + name 0_324_KEY_0 + 21233664 + name 0_324_KEY_1 + 21233665 + name 0_324_KEY_2 + 21233666 + name 0_324_KEY_3 + 21233667 + name 0_324_KEY_4 + 21233668 + name 0_324_KEY_5 + 21233669 + name 0_324_KEY_6 + 21233670 + name 0_324_KEY_7 + 21233671 + name 0_324_KEY_8 + 21233672 + name 0_324_KEY_9 + 21233673 + name 0_324_KEY_POWER + 21233674 + name 0_324_KEY_CH_UP + 21233679 + name 0_324_KEY_CH_DOWN + 21233680 + name 0_324_KEY_MUTE + 21233681 + name 0_324_KEY_VOL_DOWN + 21233682 + name 0_324_CH_PREVIOUS + 21233683 + name 0_324_KEY_VOL_UP + 21233684 + name 0_324_KEY_MNSELECT + 21233687 + name 0_324_KEY_MENU + 21233711 + name 0_324_KEY_MUP + 21233712 + name 0_324_KEY_MDOWN + 21233713 + name 0_324_KEY_MLEFT + 21233714 + name 0_324_KEY_MRIGHT + 21233715 + name 1_324_KEY_0 + 2168717312 + name 1_324_KEY_1 + 2168717313 + name 1_324_KEY_2 + 2168717314 + name 1_324_KEY_3 + 2168717315 + name 1_324_KEY_4 + 2168717316 + name 1_324_KEY_5 + 2168717317 + name 1_324_KEY_6 + 2168717318 + name 1_324_KEY_7 + 2168717319 + name 1_324_KEY_8 + 2168717320 + name 1_324_KEY_9 + 2168717321 + name 1_324_KEY_POWER + 2168717322 + name 1_324_TWO_DIGITS + 2168717325 + name 1_324_KEY_CH_UP + 2168717327 + name 1_324_KEY_CH_DOWN + 2168717328 + name 1_324_KEY_VOL_DOWN + 2168717330 + name 1_324_KEY_VOL_UP + 2168717332 + name 1_324_KEY_BLUE + 2168717347 + name 1_324_KEY_GREEN + 2168717348 + name 1_324_KEY_RED + 2168717349 + name 1_324_KEY_YELLOW + 2168717350 + name 1_324_KEY_TTOnOff + 2168717385 + name 0_325_KEY_0 + 21299200 + name 0_325_KEY_1 + 21299201 + name 0_325_KEY_2 + 21299202 + name 0_325_KEY_3 + 21299203 + name 0_325_KEY_4 + 21299204 + name 0_325_KEY_5 + 21299205 + name 0_325_KEY_6 + 21299206 + name 0_325_KEY_7 + 21299207 + name 0_325_KEY_8 + 21299208 + name 0_325_KEY_9 + 21299209 + name 0_325_KEY_POWER + 21299210 + name 0_325_KEY_CH_UP + 21299215 + name 0_325_KEY_CH_DOWN + 21299216 + name 0_325_KEY_MUTE + 21299217 + name 0_325_KEY_VOL_DOWN + 21299218 + name 0_325_KEY_VOL_UP + 21299220 + name 0_325_KEY_MNSELECT + 21299223 + name 0_325_KEY_AV + 21299241 + name 0_325_KEY_MUP + 21299248 + name 0_325_KEY_MDOWN + 21299249 + name 0_325_KEY_MLEFT + 21299250 + name 0_325_KEY_MRIGHT + 21299251 + name 1_325_KEY_0 + 2168782848 + name 1_325_KEY_1 + 2168782849 + name 1_325_KEY_2 + 2168782850 + name 1_325_KEY_3 + 2168782851 + name 1_325_KEY_4 + 2168782852 + name 1_325_KEY_5 + 2168782853 + name 1_325_KEY_6 + 2168782854 + name 1_325_KEY_7 + 2168782855 + name 1_325_KEY_8 + 2168782856 + name 1_325_KEY_9 + 2168782857 + name 1_325_KEY_POWER + 2168782858 + name 1_325_TWO_DIGITS + 2168782861 + name 1_325_KEY_CH_UP + 2168782863 + name 1_325_KEY_CH_DOWN + 2168782864 + name 1_325_KEY_MUTE + 2168782865 + name 1_325_KEY_FTUNEPLUS + 2168782881 + name 1_325_KEY_FTUNEMINUS + 2168782882 + name 1_326_KEY_0 + 2168848384 + name 1_326_KEY_1 + 2168848385 + name 1_326_KEY_2 + 2168848386 + name 1_326_KEY_3 + 2168848387 + name 1_326_KEY_4 + 2168848388 + name 1_326_KEY_5 + 2168848389 + name 1_326_KEY_6 + 2168848390 + name 1_326_KEY_7 + 2168848391 + name 1_326_KEY_8 + 2168848392 + name 1_326_KEY_9 + 2168848393 + name 1_326_KEY_POWER + 2168848394 + name 1_326_KEY_MUTE + 2168848401 + name 1_326_KEY_VOL_DOWN + 2168848402 + name 1_326_CH_PREVIOUS + 2168848403 + name 1_326_KEY_VOL_UP + 2168848404 + name 1_328_KEY_0 + 2168979456 + name 1_328_KEY_1 + 2168979457 + name 1_328_KEY_2 + 2168979458 + name 1_328_KEY_3 + 2168979459 + name 1_328_KEY_4 + 2168979460 + name 1_328_KEY_5 + 2168979461 + name 1_328_KEY_6 + 2168979462 + name 1_328_KEY_7 + 2168979463 + name 1_328_KEY_8 + 2168979464 + name 1_328_KEY_9 + 2168979465 + name 1_328_KEY_POWER + 2168979466 + name 1_328_TWO_DIGITS + 2168979469 + name 1_328_KEY_CH_UP + 2168979471 + name 1_328_KEY_CH_DOWN + 2168979472 + name 1_329_KEY_0 + 2169044992 + name 1_329_KEY_1 + 2169044993 + name 1_329_KEY_2 + 2169044994 + name 1_329_KEY_3 + 2169044995 + name 1_329_KEY_4 + 2169044996 + name 1_329_KEY_5 + 2169044997 + name 1_329_KEY_6 + 2169044998 + name 1_329_KEY_7 + 2169044999 + name 1_329_KEY_8 + 2169045000 + name 1_329_KEY_9 + 2169045001 + name 1_329_KEY_POWER + 2169045002 + name 1_329_TWO_DIGITS + 2169045005 + name 1_329_KEY_CH_UP + 2169045007 + name 1_329_KEY_CH_DOWN + 2169045008 + name 1_329_KEY_FAV + 2169045021 + name 1_329_KEY_FTUNEPLUS + 2169045025 + name 1_329_KEY_FTUNEMINUS + 2169045026 + name 1_330_KEY_0 + 2169110528 + name 1_330_KEY_1 + 2169110529 + name 1_330_KEY_2 + 2169110530 + name 1_330_KEY_3 + 2169110531 + name 1_330_KEY_4 + 2169110532 + name 1_330_KEY_5 + 2169110533 + name 1_330_KEY_6 + 2169110534 + name 1_330_KEY_7 + 2169110535 + name 1_330_KEY_8 + 2169110536 + name 1_330_KEY_9 + 2169110537 + name 1_330_KEY_POWER + 2169110538 + name 1_330_TWO_DIGITS + 2169110541 + name 1_330_KEY_CH_UP + 2169110543 + name 1_330_KEY_CH_DOWN + 2169110544 + name 1_330_KEY_MUTE + 2169110545 + name 1_330_KEY_VOL_DOWN + 2169110546 + name 1_330_KEY_VOL_UP + 2169110548 + name 1_330_KEY_DISPLAY + 2169110549 + name 1_330_KEY_FAV + 2169110557 + name 1_330_KEY_TIMER + 2169110572 + name 1_331_KEY_0 + 2169176064 + name 1_331_KEY_1 + 2169176065 + name 1_331_KEY_2 + 2169176066 + name 1_331_KEY_3 + 2169176067 + name 1_331_KEY_4 + 2169176068 + name 1_331_KEY_5 + 2169176069 + name 1_331_KEY_6 + 2169176070 + name 1_331_KEY_7 + 2169176071 + name 1_331_KEY_8 + 2169176072 + name 1_331_KEY_9 + 2169176073 + name 1_331_KEY_POWER + 2169176074 + name 1_331_TWO_DIGITS + 2169176077 + name 1_331_KEY_CH_UP + 2169176079 + name 1_331_KEY_CH_DOWN + 2169176080 + name 1_331_CH_PREVIOUS + 2169176083 + name 1_331_KEY_DISPLAY + 2169176085 + name 1_332_KEY_0 + 2169241600 + name 1_332_KEY_1 + 2169241601 + name 1_332_KEY_2 + 2169241602 + name 1_332_KEY_3 + 2169241603 + name 1_332_KEY_4 + 2169241604 + name 1_332_KEY_5 + 2169241605 + name 1_332_KEY_6 + 2169241606 + name 1_332_KEY_7 + 2169241607 + name 1_332_KEY_8 + 2169241608 + name 1_332_KEY_9 + 2169241609 + name 1_332_KEY_POWER + 2169241610 + name 1_332_TWO_DIGITS + 2169241613 + name 1_332_KEY_CH_UP + 2169241615 + name 1_332_KEY_CH_DOWN + 2169241616 + name 1_333_KEY_0 + 2169307136 + name 1_333_KEY_1 + 2169307137 + name 1_333_KEY_2 + 2169307138 + name 1_333_KEY_3 + 2169307139 + name 1_333_KEY_4 + 2169307140 + name 1_333_KEY_5 + 2169307141 + name 1_333_KEY_6 + 2169307142 + name 1_333_KEY_7 + 2169307143 + name 1_333_KEY_8 + 2169307144 + name 1_333_KEY_9 + 2169307145 + name 1_333_KEY_POWER + 2169307146 + name 1_333_TWO_DIGITS + 2169307149 + name 1_333_KEY_CH_UP + 2169307151 + name 1_333_KEY_CH_DOWN + 2169307152 + name 1_333_KEY_MUTE + 2169307153 + name 1_334_KEY_0 + 2169372672 + name 1_334_KEY_1 + 2169372673 + name 1_334_KEY_2 + 2169372674 + name 1_334_KEY_3 + 2169372675 + name 1_334_KEY_4 + 2169372676 + name 1_334_KEY_5 + 2169372677 + name 1_334_KEY_6 + 2169372678 + name 1_334_KEY_7 + 2169372679 + name 1_334_KEY_8 + 2169372680 + name 1_334_KEY_9 + 2169372681 + name 1_334_KEY_POWER + 2169372682 + name 1_334_TWO_DIGITS + 2169372685 + name 1_334_KEY_CH_UP + 2169372687 + name 1_334_KEY_CH_DOWN + 2169372688 + name 1_334_KEY_FAV + 2169372701 + name 1_335_KEY_0 + 2169438208 + name 1_335_KEY_1 + 2169438209 + name 1_335_KEY_2 + 2169438210 + name 1_335_KEY_3 + 2169438211 + name 1_335_KEY_4 + 2169438212 + name 1_335_KEY_5 + 2169438213 + name 1_335_KEY_6 + 2169438214 + name 1_335_KEY_7 + 2169438215 + name 1_335_KEY_8 + 2169438216 + name 1_335_KEY_9 + 2169438217 + name 1_335_KEY_POWER + 2169438218 + name 1_335_TWO_DIGITS + 2169438221 + name 1_335_KEY_CH_UP + 2169438223 + name 1_335_KEY_CH_DOWN + 2169438224 + name 1_335_KEY_FAV + 2169438237 + name 1_336_KEY_0 + 2169503744 + name 1_336_KEY_1 + 2169503745 + name 1_336_KEY_2 + 2169503746 + name 1_336_KEY_3 + 2169503747 + name 1_336_KEY_4 + 2169503748 + name 1_336_KEY_5 + 2169503749 + name 1_336_KEY_6 + 2169503750 + name 1_336_KEY_7 + 2169503751 + name 1_336_KEY_8 + 2169503752 + name 1_336_KEY_9 + 2169503753 + name 1_336_KEY_POWER + 2169503754 + name 1_336_TWO_DIGITS + 2169503757 + name 1_336_KEY_CH_UP + 2169503759 + name 1_336_KEY_CH_DOWN + 2169503760 + name 1_336_KEY_FTUNEPLUS + 2169503777 + name 1_336_KEY_FTUNEMINUS + 2169503778 + name 1_336_KEY_AV + 2169503785 + name 1_337_KEY_0 + 2169569280 + name 1_337_KEY_1 + 2169569281 + name 1_337_KEY_2 + 2169569282 + name 1_337_KEY_3 + 2169569283 + name 1_337_KEY_4 + 2169569284 + name 1_337_KEY_5 + 2169569285 + name 1_337_KEY_6 + 2169569286 + name 1_337_KEY_7 + 2169569287 + name 1_337_KEY_8 + 2169569288 + name 1_337_KEY_9 + 2169569289 + name 1_337_KEY_POWER + 2169569290 + name 1_337_TWO_DIGITS + 2169569293 + name 1_337_KEY_CH_UP + 2169569295 + name 1_337_KEY_CH_DOWN + 2169569296 + name 1_337_KEY_MUTE + 2169569297 + name 1_337_KEY_VOL_DOWN + 2169569298 + name 1_337_CH_PREVIOUS + 2169569299 + name 1_337_KEY_VOL_UP + 2169569300 + name 1_337_KEY_TIMER + 2169569324 + name 1_338_KEY_0 + 2169634816 + name 1_338_KEY_1 + 2169634817 + name 1_338_KEY_2 + 2169634818 + name 1_338_KEY_3 + 2169634819 + name 1_338_KEY_4 + 2169634820 + name 1_338_KEY_5 + 2169634821 + name 1_338_KEY_6 + 2169634822 + name 1_338_KEY_7 + 2169634823 + name 1_338_KEY_8 + 2169634824 + name 1_338_KEY_9 + 2169634825 + name 1_338_KEY_POWER + 2169634826 + name 1_338_TWO_DIGITS + 2169634829 + name 1_338_KEY_CH_UP + 2169634831 + name 1_338_KEY_CH_DOWN + 2169634832 + name 1_338_KEY_MUTE + 2169634833 + name 1_338_KEY_SELECT + 2169634846 + name 1_338_KEY_FTUNEPLUS + 2169634849 + name 1_338_KEY_FTUNEMINUS + 2169634850 + name 1_339_KEY_0 + 2169700352 + name 1_339_KEY_1 + 2169700353 + name 1_339_KEY_2 + 2169700354 + name 1_339_KEY_3 + 2169700355 + name 1_339_KEY_4 + 2169700356 + name 1_339_KEY_5 + 2169700357 + name 1_339_KEY_6 + 2169700358 + name 1_339_KEY_7 + 2169700359 + name 1_339_KEY_8 + 2169700360 + name 1_339_KEY_9 + 2169700361 + name 1_339_KEY_POWER + 2169700362 + name 1_339_TWO_DIGITS + 2169700365 + name 1_339_KEY_CH_UP + 2169700367 + name 1_339_KEY_CH_DOWN + 2169700368 + name 1_339_KEY_MUTE + 2169700369 + name 1_339_KEY_VOL_DOWN + 2169700370 + name 1_339_CH_PREVIOUS + 2169700371 + name 1_339_KEY_VOL_UP + 2169700372 + name 1_339_KEY_FAV + 2169700381 + name 1_339_KEY_TIMER + 2169700396 + name 1_342_KEY_0 + 2169896960 + name 1_342_KEY_1 + 2169896961 + name 1_342_KEY_2 + 2169896962 + name 1_342_KEY_3 + 2169896963 + name 1_342_KEY_4 + 2169896964 + name 1_342_KEY_5 + 2169896965 + name 1_342_KEY_6 + 2169896966 + name 1_342_KEY_7 + 2169896967 + name 1_342_KEY_8 + 2169896968 + name 1_342_KEY_9 + 2169896969 + name 1_342_KEY_POWER + 2169896970 + name 1_342_TWO_DIGITS + 2169896973 + name 1_342_KEY_CH_UP + 2169896975 + name 1_342_KEY_CH_DOWN + 2169896976 + name 1_342_KEY_MUTE + 2169896977 + name 1_342_KEY_VOL_DOWN + 2169896978 + name 1_342_KEY_VOL_UP + 2169896980 + name 1_343_KEY_0 + 2169962496 + name 1_343_KEY_1 + 2169962497 + name 1_343_KEY_2 + 2169962498 + name 1_343_KEY_3 + 2169962499 + name 1_343_KEY_4 + 2169962500 + name 1_343_KEY_5 + 2169962501 + name 1_343_KEY_6 + 2169962502 + name 1_343_KEY_7 + 2169962503 + name 1_343_KEY_8 + 2169962504 + name 1_343_KEY_9 + 2169962505 + name 1_343_KEY_POWER + 2169962506 + name 1_343_TWO_DIGITS + 2169962509 + name 1_343_KEY_CH_UP + 2169962511 + name 1_343_KEY_CH_DOWN + 2169962512 + name 1_344_KEY_0 + 2170028032 + name 1_344_KEY_1 + 2170028033 + name 1_344_KEY_2 + 2170028034 + name 1_344_KEY_3 + 2170028035 + name 1_344_KEY_4 + 2170028036 + name 1_344_KEY_5 + 2170028037 + name 1_344_KEY_6 + 2170028038 + name 1_344_KEY_7 + 2170028039 + name 1_344_KEY_8 + 2170028040 + name 1_344_KEY_9 + 2170028041 + name 1_344_KEY_POWER + 2170028042 + name 1_344_TWO_DIGITS + 2170028045 + name 1_344_KEY_CH_UP + 2170028047 + name 1_344_KEY_CH_DOWN + 2170028048 + name 1_344_KEY_MUTE + 2170028049 + name 1_344_KEY_VOL_DOWN + 2170028050 + name 1_344_KEY_VOL_UP + 2170028052 + name 1_344_KEY_SELECT + 2170028062 + name 1_344_KEY_FTUNEPLUS + 2170028065 + name 1_344_KEY_FTUNEMINUS + 2170028066 + name 1_345_KEY_0 + 2170093568 + name 1_345_KEY_1 + 2170093569 + name 1_345_KEY_2 + 2170093570 + name 1_345_KEY_3 + 2170093571 + name 1_345_KEY_4 + 2170093572 + name 1_345_KEY_5 + 2170093573 + name 1_345_KEY_6 + 2170093574 + name 1_345_KEY_7 + 2170093575 + name 1_345_KEY_8 + 2170093576 + name 1_345_KEY_9 + 2170093577 + name 1_345_KEY_POWER + 2170093578 + name 1_345_TWO_DIGITS + 2170093581 + name 1_345_KEY_CH_UP + 2170093583 + name 1_345_KEY_CH_DOWN + 2170093584 + name 1_346_KEY_0 + 2170159104 + name 1_346_KEY_1 + 2170159105 + name 1_346_KEY_2 + 2170159106 + name 1_346_KEY_3 + 2170159107 + name 1_346_KEY_4 + 2170159108 + name 1_346_KEY_5 + 2170159109 + name 1_346_KEY_6 + 2170159110 + name 1_346_KEY_7 + 2170159111 + name 1_346_KEY_8 + 2170159112 + name 1_346_KEY_9 + 2170159113 + name 1_346_KEY_POWER + 2170159114 + name 1_346_TWO_DIGITS + 2170159117 + name 1_346_KEY_CH_UP + 2170159119 + name 1_346_KEY_CH_DOWN + 2170159120 + name 1_346_KEY_FTUNEPLUS + 2170159137 + name 1_346_KEY_FTUNEMINUS + 2170159138 + name 1_348_KEY_0 + 2170290176 + name 1_348_KEY_1 + 2170290177 + name 1_348_KEY_2 + 2170290178 + name 1_348_KEY_3 + 2170290179 + name 1_348_KEY_4 + 2170290180 + name 1_348_KEY_5 + 2170290181 + name 1_348_KEY_6 + 2170290182 + name 1_348_KEY_7 + 2170290183 + name 1_348_KEY_8 + 2170290184 + name 1_348_KEY_9 + 2170290185 + name 1_348_KEY_POWER + 2170290186 + name 1_348_TWO_DIGITS + 2170290189 + name 1_348_KEY_CH_UP + 2170290191 + name 1_348_KEY_CH_DOWN + 2170290192 + name 1_348_CH_PREVIOUS + 2170290195 + name 1_348_KEY_TIMER + 2170290220 + name 1_349_KEY_0 + 2170355712 + name 1_349_KEY_1 + 2170355713 + name 1_349_KEY_2 + 2170355714 + name 1_349_KEY_3 + 2170355715 + name 1_349_KEY_4 + 2170355716 + name 1_349_KEY_5 + 2170355717 + name 1_349_KEY_6 + 2170355718 + name 1_349_KEY_7 + 2170355719 + name 1_349_KEY_8 + 2170355720 + name 1_349_KEY_9 + 2170355721 + name 1_349_KEY_POWER + 2170355722 + name 1_349_TWO_DIGITS + 2170355725 + name 1_349_KEY_CH_UP + 2170355727 + name 1_349_KEY_CH_DOWN + 2170355728 + name 1_350_KEY_0 + 2170421248 + name 1_350_KEY_1 + 2170421249 + name 1_350_KEY_2 + 2170421250 + name 1_350_KEY_3 + 2170421251 + name 1_350_KEY_4 + 2170421252 + name 1_350_KEY_5 + 2170421253 + name 1_350_KEY_6 + 2170421254 + name 1_350_KEY_7 + 2170421255 + name 1_350_KEY_8 + 2170421256 + name 1_350_KEY_9 + 2170421257 + name 1_350_KEY_POWER + 2170421258 + name 1_350_TWO_DIGITS + 2170421261 + name 1_350_KEY_CH_UP + 2170421263 + name 1_350_KEY_CH_DOWN + 2170421264 + name 1_350_KEY_VOL_DOWN + 2170421266 + name 1_350_KEY_VOL_UP + 2170421268 + name 1_350_KEY_FTUNEPLUS + 2170421281 + name 1_350_KEY_FTUNEMINUS + 2170421282 + name 1_351_KEY_0 + 2170486784 + name 1_351_KEY_1 + 2170486785 + name 1_351_KEY_2 + 2170486786 + name 1_351_KEY_3 + 2170486787 + name 1_351_KEY_4 + 2170486788 + name 1_351_KEY_5 + 2170486789 + name 1_351_KEY_6 + 2170486790 + name 1_351_KEY_7 + 2170486791 + name 1_351_KEY_8 + 2170486792 + name 1_351_KEY_9 + 2170486793 + name 1_351_KEY_POWER + 2170486794 + name 1_351_TWO_DIGITS + 2170486797 + name 1_351_KEY_CH_UP + 2170486799 + name 1_351_KEY_CH_DOWN + 2170486800 + name 1_351_KEY_MUTE + 2170486801 + name 1_351_KEY_VOL_DOWN + 2170486802 + name 1_351_KEY_VOL_UP + 2170486804 + name 1_352_KEY_0 + 2170552320 + name 1_352_KEY_1 + 2170552321 + name 1_352_KEY_2 + 2170552322 + name 1_352_KEY_3 + 2170552323 + name 1_352_KEY_4 + 2170552324 + name 1_352_KEY_5 + 2170552325 + name 1_352_KEY_6 + 2170552326 + name 1_352_KEY_7 + 2170552327 + name 1_352_KEY_8 + 2170552328 + name 1_352_KEY_9 + 2170552329 + name 1_352_KEY_POWER + 2170552330 + name 1_352_TWO_DIGITS + 2170552333 + name 1_352_KEY_CH_UP + 2170552335 + name 1_352_KEY_CH_DOWN + 2170552336 + name 1_352_CH_PREVIOUS + 2170552339 + name 1_352_KEY_FTUNEPLUS + 2170552353 + name 1_352_KEY_FTUNEMINUS + 2170552354 + name 1_353_KEY_0 + 2170617856 + name 1_353_KEY_1 + 2170617857 + name 1_353_KEY_2 + 2170617858 + name 1_353_KEY_3 + 2170617859 + name 1_353_KEY_4 + 2170617860 + name 1_353_KEY_5 + 2170617861 + name 1_353_KEY_6 + 2170617862 + name 1_353_KEY_7 + 2170617863 + name 1_353_KEY_8 + 2170617864 + name 1_353_KEY_9 + 2170617865 + name 1_353_KEY_POWER + 2170617866 + name 1_353_TWO_DIGITS + 2170617869 + name 1_353_KEY_CH_UP + 2170617871 + name 1_353_KEY_CH_DOWN + 2170617872 + name 1_353_CH_PREVIOUS + 2170617875 + name 1_354_KEY_0 + 2170683392 + name 1_354_KEY_1 + 2170683393 + name 1_354_KEY_2 + 2170683394 + name 1_354_KEY_3 + 2170683395 + name 1_354_KEY_4 + 2170683396 + name 1_354_KEY_5 + 2170683397 + name 1_354_KEY_6 + 2170683398 + name 1_354_KEY_7 + 2170683399 + name 1_354_KEY_8 + 2170683400 + name 1_354_KEY_9 + 2170683401 + name 1_354_KEY_POWER + 2170683402 + name 1_354_TWO_DIGITS + 2170683405 + name 1_354_KEY_CH_UP + 2170683407 + name 1_354_KEY_CH_DOWN + 2170683408 + name 1_354_KEY_AV + 2170683433 + name 1_355_KEY_0 + 2170748928 + name 1_355_KEY_1 + 2170748929 + name 1_355_KEY_2 + 2170748930 + name 1_355_KEY_3 + 2170748931 + name 1_355_KEY_4 + 2170748932 + name 1_355_KEY_5 + 2170748933 + name 1_355_KEY_6 + 2170748934 + name 1_355_KEY_7 + 2170748935 + name 1_355_KEY_8 + 2170748936 + name 1_355_KEY_9 + 2170748937 + name 1_355_KEY_POWER + 2170748938 + name 1_355_TWO_DIGITS + 2170748941 + name 1_355_KEY_CH_UP + 2170748943 + name 1_355_KEY_CH_DOWN + 2170748944 + name 1_357_KEY_0 + 2170880000 + name 1_357_KEY_1 + 2170880001 + name 1_357_KEY_2 + 2170880002 + name 1_357_KEY_3 + 2170880003 + name 1_357_KEY_4 + 2170880004 + name 1_357_KEY_5 + 2170880005 + name 1_357_KEY_6 + 2170880006 + name 1_357_KEY_7 + 2170880007 + name 1_357_KEY_8 + 2170880008 + name 1_357_KEY_9 + 2170880009 + name 1_357_KEY_POWER + 2170880010 + name 1_357_TWO_DIGITS + 2170880013 + name 1_357_KEY_CH_UP + 2170880015 + name 1_357_KEY_CH_DOWN + 2170880016 + name 1_357_KEY_SELECT + 2170880030 + name 1_358_KEY_0 + 2170945536 + name 1_358_KEY_1 + 2170945537 + name 1_358_KEY_2 + 2170945538 + name 1_358_KEY_3 + 2170945539 + name 1_358_KEY_4 + 2170945540 + name 1_358_KEY_5 + 2170945541 + name 1_358_KEY_6 + 2170945542 + name 1_358_KEY_7 + 2170945543 + name 1_358_KEY_8 + 2170945544 + name 1_358_KEY_9 + 2170945545 + name 1_358_KEY_POWER + 2170945546 + name 1_358_TWO_DIGITS + 2170945549 + name 1_358_KEY_CH_UP + 2170945551 + name 1_358_KEY_CH_DOWN + 2170945552 + name 1_358_KEY_MUTE + 2170945553 + name 1_358_KEY_VOL_DOWN + 2170945554 + name 1_358_KEY_VOL_UP + 2170945556 + name 1_358_KEY_FAV + 2170945565 + name 1_358_KEY_TIMER + 2170945580 + name 1_359_KEY_0 + 2171011072 + name 1_359_KEY_1 + 2171011073 + name 1_359_KEY_2 + 2171011074 + name 1_359_KEY_3 + 2171011075 + name 1_359_KEY_4 + 2171011076 + name 1_359_KEY_5 + 2171011077 + name 1_359_KEY_6 + 2171011078 + name 1_359_KEY_7 + 2171011079 + name 1_359_KEY_8 + 2171011080 + name 1_359_KEY_9 + 2171011081 + name 1_359_KEY_POWER + 2171011082 + name 1_359_POWER_ON + 2171011083 + name 1_359_TWO_DIGITS + 2171011085 + name 1_359_KEY_CH_UP + 2171011087 + name 1_359_KEY_CH_DOWN + 2171011088 + name 1_359_KEY_MUTE + 2171011089 + name 1_359_KEY_VOL_DOWN + 2171011090 + name 1_359_KEY_VOL_UP + 2171011092 + name 1_360_KEY_0 + 2171076608 + name 1_360_KEY_1 + 2171076609 + name 1_360_KEY_2 + 2171076610 + name 1_360_KEY_3 + 2171076611 + name 1_360_KEY_4 + 2171076612 + name 1_360_KEY_5 + 2171076613 + name 1_360_KEY_6 + 2171076614 + name 1_360_KEY_7 + 2171076615 + name 1_360_KEY_8 + 2171076616 + name 1_360_KEY_9 + 2171076617 + name 1_360_KEY_POWER + 2171076618 + name 1_360_TWO_DIGITS + 2171076621 + name 1_360_KEY_CH_UP + 2171076623 + name 1_360_KEY_CH_DOWN + 2171076624 + name 1_360_KEY_MUTE + 2171076625 + name 1_360_KEY_VOL_DOWN + 2171076626 + name 1_360_CH_PREVIOUS + 2171076627 + name 1_360_KEY_VOL_UP + 2171076628 + name 1_360_KEY_DISPLAY + 2171076629 + name 1_361_KEY_0 + 2171142144 + name 1_361_KEY_1 + 2171142145 + name 1_361_KEY_2 + 2171142146 + name 1_361_KEY_3 + 2171142147 + name 1_361_KEY_4 + 2171142148 + name 1_361_KEY_5 + 2171142149 + name 1_361_KEY_6 + 2171142150 + name 1_361_KEY_7 + 2171142151 + name 1_361_KEY_8 + 2171142152 + name 1_361_KEY_9 + 2171142153 + name 1_361_KEY_POWER + 2171142154 + name 1_361_TWO_DIGITS + 2171142157 + name 1_361_KEY_CH_UP + 2171142159 + name 1_361_KEY_CH_DOWN + 2171142160 + name 1_361_KEY_MUTE + 2171142161 + name 1_361_KEY_VOL_DOWN + 2171142162 + name 1_361_KEY_VOL_UP + 2171142164 + name 1_363_KEY_0 + 2171273216 + name 1_363_KEY_1 + 2171273217 + name 1_363_KEY_2 + 2171273218 + name 1_363_KEY_3 + 2171273219 + name 1_363_KEY_4 + 2171273220 + name 1_363_KEY_5 + 2171273221 + name 1_363_KEY_6 + 2171273222 + name 1_363_KEY_7 + 2171273223 + name 1_363_KEY_8 + 2171273224 + name 1_363_KEY_9 + 2171273225 + name 1_363_KEY_POWER + 2171273226 + name 1_363_TWO_DIGITS + 2171273229 + name 1_363_KEY_CH_UP + 2171273231 + name 1_363_KEY_CH_DOWN + 2171273232 + name 1_363_KEY_MUTE + 2171273233 + name 1_363_KEY_VOL_DOWN + 2171273234 + name 1_363_KEY_VOL_UP + 2171273236 + name 1_363_KEY_FTUNEPLUS + 2171273249 + name 1_363_KEY_FTUNEMINUS + 2171273250 + name 1_364_KEY_0 + 2171338752 + name 1_364_KEY_1 + 2171338753 + name 1_364_KEY_2 + 2171338754 + name 1_364_KEY_3 + 2171338755 + name 1_364_KEY_4 + 2171338756 + name 1_364_KEY_5 + 2171338757 + name 1_364_KEY_6 + 2171338758 + name 1_364_KEY_7 + 2171338759 + name 1_364_KEY_8 + 2171338760 + name 1_364_KEY_9 + 2171338761 + name 1_364_KEY_POWER + 2171338762 + name 1_364_TWO_DIGITS + 2171338765 + name 1_364_KEY_CH_UP + 2171338767 + name 1_364_KEY_CH_DOWN + 2171338768 + name 1_364_KEY_MUTE + 2171338769 + name 1_364_KEY_VOL_DOWN + 2171338770 + name 1_364_KEY_VOL_UP + 2171338772 + name 1_364_KEY_BLUE + 2171338787 + name 1_364_KEY_GREEN + 2171338788 + name 1_364_KEY_RED + 2171338789 + name 1_364_KEY_YELLOW + 2171338790 + name 1_364_KEY_On + 2171338829 + name 1_364_KEY_Off + 2171338830 + name 1_365_KEY_0 + 2171404288 + name 1_365_KEY_1 + 2171404289 + name 1_365_KEY_2 + 2171404290 + name 1_365_KEY_3 + 2171404291 + name 1_365_KEY_4 + 2171404292 + name 1_365_KEY_5 + 2171404293 + name 1_365_KEY_6 + 2171404294 + name 1_365_KEY_7 + 2171404295 + name 1_365_KEY_8 + 2171404296 + name 1_365_KEY_9 + 2171404297 + name 1_365_KEY_POWER + 2171404298 + name 1_365_TWO_DIGITS + 2171404301 + name 1_365_KEY_CH_UP + 2171404303 + name 1_365_KEY_CH_DOWN + 2171404304 + name 1_365_CH_PREVIOUS + 2171404307 + name 1_366_KEY_0 + 2171469824 + name 1_366_KEY_1 + 2171469825 + name 1_366_KEY_2 + 2171469826 + name 1_366_KEY_3 + 2171469827 + name 1_366_KEY_4 + 2171469828 + name 1_366_KEY_5 + 2171469829 + name 1_366_KEY_6 + 2171469830 + name 1_366_KEY_7 + 2171469831 + name 1_366_KEY_8 + 2171469832 + name 1_366_KEY_9 + 2171469833 + name 1_366_KEY_POWER + 2171469834 + name 1_366_TWO_DIGITS + 2171469837 + name 1_366_KEY_CH_UP + 2171469839 + name 1_366_KEY_CH_DOWN + 2171469840 + name 1_366_CH_PREVIOUS + 2171469843 + name 1_368_KEY_0 + 2171600896 + name 1_368_KEY_1 + 2171600897 + name 1_368_KEY_2 + 2171600898 + name 1_368_KEY_3 + 2171600899 + name 1_368_KEY_4 + 2171600900 + name 1_368_KEY_5 + 2171600901 + name 1_368_KEY_6 + 2171600902 + name 1_368_KEY_7 + 2171600903 + name 1_368_KEY_8 + 2171600904 + name 1_368_KEY_9 + 2171600905 + name 1_368_KEY_POWER + 2171600906 + name 1_368_TWO_DIGITS + 2171600909 + name 1_368_KEY_CH_UP + 2171600911 + name 1_368_KEY_CH_DOWN + 2171600912 + name 1_369_KEY_0 + 2171666432 + name 1_369_KEY_1 + 2171666433 + name 1_369_KEY_2 + 2171666434 + name 1_369_KEY_3 + 2171666435 + name 1_369_KEY_4 + 2171666436 + name 1_369_KEY_5 + 2171666437 + name 1_369_KEY_6 + 2171666438 + name 1_369_KEY_7 + 2171666439 + name 1_369_KEY_8 + 2171666440 + name 1_369_KEY_9 + 2171666441 + name 1_369_KEY_POWER + 2171666442 + name 1_369_TWO_DIGITS + 2171666445 + name 1_369_KEY_CH_UP + 2171666447 + name 1_369_KEY_CH_DOWN + 2171666448 + name 1_369_KEY_MUTE + 2171666449 + name 1_369_KEY_VOL_DOWN + 2171666450 + name 1_369_KEY_VOL_UP + 2171666452 + name 1_369_KEY_MNSELECT + 2171666455 + name 1_369_KEY_AV + 2171666473 + name 1_369_KEY_AUTOTRACK + 2171666478 + name 1_369_KEY_MENU + 2171666479 + name 1_369_KEY_MUP + 2171666480 + name 1_369_KEY_MDOWN + 2171666481 + name 1_369_KEY_MLEFT + 2171666482 + name 1_369_KEY_MRIGHT + 2171666483 + name 1_370_KEY_0 + 2171731968 + name 1_370_KEY_1 + 2171731969 + name 1_370_KEY_2 + 2171731970 + name 1_370_KEY_3 + 2171731971 + name 1_370_KEY_4 + 2171731972 + name 1_370_KEY_5 + 2171731973 + name 1_370_KEY_6 + 2171731974 + name 1_370_KEY_7 + 2171731975 + name 1_370_KEY_8 + 2171731976 + name 1_370_KEY_9 + 2171731977 + name 1_370_KEY_POWER + 2171731978 + name 1_370_TWO_DIGITS + 2171731981 + name 1_370_KEY_CH_UP + 2171731983 + name 1_370_KEY_CH_DOWN + 2171731984 + name 1_370_KEY_MUTE + 2171731985 + name 1_370_KEY_VOL_DOWN + 2171731986 + name 1_370_KEY_VOL_UP + 2171731988 + name 1_370_KEY_MNSELECT + 2171731991 + name 1_370_KEY_AV + 2171732009 + name 1_370_KEY_AUTOTRACK + 2171732014 + name 1_370_KEY_MENU + 2171732015 + name 1_370_KEY_MUP + 2171732016 + name 1_370_KEY_MDOWN + 2171732017 + name 1_370_KEY_MLEFT + 2171732018 + name 1_370_KEY_MRIGHT + 2171732019 + name 1_371_KEY_0 + 2171797504 + name 1_371_KEY_1 + 2171797505 + name 1_371_KEY_2 + 2171797506 + name 1_371_KEY_3 + 2171797507 + name 1_371_KEY_4 + 2171797508 + name 1_371_KEY_5 + 2171797509 + name 1_371_KEY_6 + 2171797510 + name 1_371_KEY_7 + 2171797511 + name 1_371_KEY_8 + 2171797512 + name 1_371_KEY_9 + 2171797513 + name 1_371_KEY_POWER + 2171797514 + name 1_371_KEY_CH_UP + 2171797519 + name 1_371_KEY_CH_DOWN + 2171797520 + name 1_371_KEY_MUTE + 2171797521 + name 1_371_KEY_VOL_DOWN + 2171797522 + name 1_371_KEY_VOL_UP + 2171797524 + name 1_371_KEY_MNSELECT + 2171797527 + name 1_371_KEY_AV + 2171797545 + name 1_371_KEY_MENU + 2171797551 + name 1_371_KEY_MUP + 2171797552 + name 1_371_KEY_MDOWN + 2171797553 + name 1_371_KEY_MLEFT + 2171797554 + name 1_371_KEY_MRIGHT + 2171797555 + name 1_372_KEY_0 + 2171863040 + name 1_372_KEY_1 + 2171863041 + name 1_372_KEY_2 + 2171863042 + name 1_372_KEY_3 + 2171863043 + name 1_372_KEY_4 + 2171863044 + name 1_372_KEY_5 + 2171863045 + name 1_372_KEY_6 + 2171863046 + name 1_372_KEY_7 + 2171863047 + name 1_372_KEY_8 + 2171863048 + name 1_372_KEY_9 + 2171863049 + name 1_372_KEY_POWER + 2171863050 + name 1_372_KEY_CH_UP + 2171863055 + name 1_372_KEY_CH_DOWN + 2171863056 + name 1_372_KEY_MUTE + 2171863057 + name 1_372_KEY_VOL_DOWN + 2171863058 + name 1_372_KEY_VOL_UP + 2171863060 + name 1_372_KEY_MNSELECT + 2171863063 + name 1_372_KEY_AV + 2171863081 + name 1_372_KEY_MENU + 2171863087 + name 1_372_KEY_MUP + 2171863088 + name 1_372_KEY_MDOWN + 2171863089 + name 1_372_KEY_MLEFT + 2171863090 + name 1_372_KEY_MRIGHT + 2171863091 + name 1_373_KEY_0 + 2171928576 + name 1_373_KEY_1 + 2171928577 + name 1_373_KEY_2 + 2171928578 + name 1_373_KEY_3 + 2171928579 + name 1_373_KEY_4 + 2171928580 + name 1_373_KEY_5 + 2171928581 + name 1_373_KEY_6 + 2171928582 + name 1_373_KEY_7 + 2171928583 + name 1_373_KEY_8 + 2171928584 + name 1_373_KEY_9 + 2171928585 + name 1_373_KEY_POWER + 2171928586 + name 1_373_KEY_CH_UP + 2171928591 + name 1_373_KEY_CH_DOWN + 2171928592 + name 1_373_KEY_MUTE + 2171928593 + name 1_373_KEY_VOL_DOWN + 2171928594 + name 1_373_KEY_VOL_UP + 2171928596 + name 1_373_KEY_MNSELECT + 2171928599 + name 1_373_KEY_AV + 2171928617 + name 1_373_KEY_MENU + 2171928623 + name 1_373_KEY_MUP + 2171928624 + name 1_373_KEY_MDOWN + 2171928625 + name 1_373_KEY_MLEFT + 2171928626 + name 1_373_KEY_MRIGHT + 2171928627 + name 1_374_KEY_0 + 2171994112 + name 1_374_KEY_1 + 2171994113 + name 1_374_KEY_2 + 2171994114 + name 1_374_KEY_3 + 2171994115 + name 1_374_KEY_4 + 2171994116 + name 1_374_KEY_5 + 2171994117 + name 1_374_KEY_6 + 2171994118 + name 1_374_KEY_7 + 2171994119 + name 1_374_KEY_8 + 2171994120 + name 1_374_KEY_9 + 2171994121 + name 1_374_KEY_POWER + 2171994122 + name 1_374_TWO_DIGITS + 2171994125 + name 1_374_KEY_CH_UP + 2171994127 + name 1_374_KEY_CH_DOWN + 2171994128 + name 1_374_KEY_MUTE + 2171994129 + name 1_374_KEY_VOL_DOWN + 2171994130 + name 1_374_KEY_VOL_UP + 2171994132 + name 1_374_KEY_AV + 2171994153 + name 1_374_KEY_MENU + 2171994159 + name 1_374_KEY_MUP + 2171994160 + name 1_374_KEY_MDOWN + 2171994161 + name 1_374_KEY_MLEFT + 2171994162 + name 1_374_KEY_MRIGHT + 2171994163 + name 1_375_KEY_0 + 2172059648 + name 1_375_KEY_1 + 2172059649 + name 1_375_KEY_2 + 2172059650 + name 1_375_KEY_3 + 2172059651 + name 1_375_KEY_4 + 2172059652 + name 1_375_KEY_5 + 2172059653 + name 1_375_KEY_6 + 2172059654 + name 1_375_KEY_7 + 2172059655 + name 1_375_KEY_8 + 2172059656 + name 1_375_KEY_9 + 2172059657 + name 1_375_KEY_POWER + 2172059658 + name 1_375_TWO_DIGITS + 2172059661 + name 1_375_KEY_CH_UP + 2172059663 + name 1_375_KEY_CH_DOWN + 2172059664 + name 1_375_KEY_MUTE + 2172059665 + name 1_375_KEY_VOL_DOWN + 2172059666 + name 1_375_KEY_VOL_UP + 2172059668 + name 1_375_KEY_MNSELECT + 2172059671 + name 1_375_KEY_AV + 2172059689 + name 1_375_KEY_AUTOTRACK + 2172059694 + name 1_375_KEY_MENU + 2172059695 + name 1_375_KEY_MUP + 2172059696 + name 1_375_KEY_MDOWN + 2172059697 + name 1_375_KEY_MLEFT + 2172059698 + name 1_375_KEY_MRIGHT + 2172059699 + name 1_376_KEY_0 + 2172125184 + name 1_376_KEY_1 + 2172125185 + name 1_376_KEY_2 + 2172125186 + name 1_376_KEY_3 + 2172125187 + name 1_376_KEY_4 + 2172125188 + name 1_376_KEY_5 + 2172125189 + name 1_376_KEY_6 + 2172125190 + name 1_376_KEY_7 + 2172125191 + name 1_376_KEY_8 + 2172125192 + name 1_376_KEY_9 + 2172125193 + name 1_376_KEY_POWER + 2172125194 + name 1_376_TWO_DIGITS + 2172125197 + name 1_376_KEY_CH_UP + 2172125199 + name 1_376_KEY_CH_DOWN + 2172125200 + name 1_376_KEY_MUTE + 2172125201 + name 1_376_KEY_VOL_DOWN + 2172125202 + name 1_376_KEY_VOL_UP + 2172125204 + name 1_376_KEY_MNSELECT + 2172125207 + name 1_376_KEY_MENU + 2172125231 + name 1_376_KEY_MUP + 2172125232 + name 1_376_KEY_MDOWN + 2172125233 + name 1_376_KEY_MLEFT + 2172125234 + name 1_376_KEY_MRIGHT + 2172125235 + name 1_377_KEY_0 + 2172190720 + name 1_377_KEY_1 + 2172190721 + name 1_377_KEY_2 + 2172190722 + name 1_377_KEY_3 + 2172190723 + name 1_377_KEY_4 + 2172190724 + name 1_377_KEY_5 + 2172190725 + name 1_377_KEY_6 + 2172190726 + name 1_377_KEY_7 + 2172190727 + name 1_377_KEY_8 + 2172190728 + name 1_377_KEY_9 + 2172190729 + name 1_377_KEY_POWER + 2172190730 + name 1_377_KEY_CH_UP + 2172190735 + name 1_377_KEY_CH_DOWN + 2172190736 + name 1_377_KEY_AV + 2172190761 + name 1_378_KEY_0 + 2172256256 + name 1_378_KEY_1 + 2172256257 + name 1_378_KEY_2 + 2172256258 + name 1_378_KEY_3 + 2172256259 + name 1_378_KEY_4 + 2172256260 + name 1_378_KEY_5 + 2172256261 + name 1_378_KEY_6 + 2172256262 + name 1_378_KEY_7 + 2172256263 + name 1_378_KEY_8 + 2172256264 + name 1_378_KEY_9 + 2172256265 + name 1_378_KEY_POWER + 2172256266 + name 1_378_KEY_CH_UP + 2172256271 + name 1_378_KEY_CH_DOWN + 2172256272 + name 1_378_KEY_MUTE + 2172256273 + name 1_378_KEY_VOL_DOWN + 2172256274 + name 1_378_KEY_VOL_UP + 2172256276 + name 1_378_KEY_AV + 2172256297 + name 1_379_KEY_0 + 2172321792 + name 1_379_KEY_1 + 2172321793 + name 1_379_KEY_2 + 2172321794 + name 1_379_KEY_3 + 2172321795 + name 1_379_KEY_4 + 2172321796 + name 1_379_KEY_5 + 2172321797 + name 1_379_KEY_6 + 2172321798 + name 1_379_KEY_7 + 2172321799 + name 1_379_KEY_8 + 2172321800 + name 1_379_KEY_9 + 2172321801 + name 1_379_KEY_POWER + 2172321802 + name 1_379_KEY_CH_UP + 2172321807 + name 1_379_KEY_CH_DOWN + 2172321808 + name 1_379_KEY_AV + 2172321833 + name 1_380_KEY_0 + 2172387328 + name 1_380_KEY_1 + 2172387329 + name 1_380_KEY_2 + 2172387330 + name 1_380_KEY_3 + 2172387331 + name 1_380_KEY_4 + 2172387332 + name 1_380_KEY_5 + 2172387333 + name 1_380_KEY_6 + 2172387334 + name 1_380_KEY_7 + 2172387335 + name 1_380_KEY_8 + 2172387336 + name 1_380_KEY_9 + 2172387337 + name 1_380_KEY_POWER + 2172387338 + name 1_380_KEY_CH_UP + 2172387343 + name 1_380_KEY_CH_DOWN + 2172387344 + name 1_380_KEY_AV + 2172387369 + name 1_381_KEY_0 + 2172452864 + name 1_381_KEY_1 + 2172452865 + name 1_381_KEY_2 + 2172452866 + name 1_381_KEY_3 + 2172452867 + name 1_381_KEY_4 + 2172452868 + name 1_381_KEY_5 + 2172452869 + name 1_381_KEY_6 + 2172452870 + name 1_381_KEY_7 + 2172452871 + name 1_381_KEY_8 + 2172452872 + name 1_381_KEY_9 + 2172452873 + name 1_381_KEY_POWER + 2172452874 + name 1_381_KEY_CH_UP + 2172452879 + name 1_381_KEY_CH_DOWN + 2172452880 + name 1_381_KEY_AV + 2172452905 + name 1_382_KEY_0 + 2172518400 + name 1_382_KEY_1 + 2172518401 + name 1_382_KEY_2 + 2172518402 + name 1_382_KEY_3 + 2172518403 + name 1_382_KEY_4 + 2172518404 + name 1_382_KEY_5 + 2172518405 + name 1_382_KEY_6 + 2172518406 + name 1_382_KEY_7 + 2172518407 + name 1_382_KEY_8 + 2172518408 + name 1_382_KEY_9 + 2172518409 + name 1_382_KEY_POWER + 2172518410 + name 1_382_KEY_CH_UP + 2172518415 + name 1_382_KEY_CH_DOWN + 2172518416 + name 1_382_KEY_MUTE + 2172518417 + name 1_382_KEY_VOL_DOWN + 2172518418 + name 1_382_KEY_VOL_UP + 2172518420 + name 1_382_KEY_AV + 2172518441 + name 1_383_KEY_0 + 2172583936 + name 1_383_KEY_1 + 2172583937 + name 1_383_KEY_2 + 2172583938 + name 1_383_KEY_3 + 2172583939 + name 1_383_KEY_4 + 2172583940 + name 1_383_KEY_5 + 2172583941 + name 1_383_KEY_6 + 2172583942 + name 1_383_KEY_7 + 2172583943 + name 1_383_KEY_8 + 2172583944 + name 1_383_KEY_9 + 2172583945 + name 1_383_KEY_POWER + 2172583946 + name 1_383_TWO_DIGITS + 2172583949 + name 1_383_KEY_CH_UP + 2172583951 + name 1_383_KEY_CH_DOWN + 2172583952 + name 1_383_KEY_MUTE + 2172583953 + name 1_383_KEY_VOL_DOWN + 2172583954 + name 1_383_KEY_VOL_UP + 2172583956 + name 1_384_KEY_0 + 2172649472 + name 1_384_KEY_1 + 2172649473 + name 1_384_KEY_2 + 2172649474 + name 1_384_KEY_3 + 2172649475 + name 1_384_KEY_4 + 2172649476 + name 1_384_KEY_5 + 2172649477 + name 1_384_KEY_6 + 2172649478 + name 1_384_KEY_7 + 2172649479 + name 1_384_KEY_8 + 2172649480 + name 1_384_KEY_9 + 2172649481 + name 1_384_KEY_POWER + 2172649482 + name 1_384_TWO_DIGITS + 2172649485 + name 1_384_KEY_CH_UP + 2172649487 + name 1_384_KEY_CH_DOWN + 2172649488 + name 1_384_KEY_MUTE + 2172649489 + name 1_384_KEY_VOL_DOWN + 2172649490 + name 1_384_KEY_VOL_UP + 2172649492 + name 1_384_KEY_AV + 2172649513 + name 1_384_KEY_AUTOTRACK + 2172649518 + name 1_384_KEY_MENU + 2172649519 + name 1_384_KEY_MUP + 2172649520 + name 1_384_KEY_MDOWN + 2172649521 + name 1_384_KEY_MLEFT + 2172649522 + name 1_384_KEY_MRIGHT + 2172649523 + name 1_385_KEY_0 + 2172715008 + name 1_385_KEY_1 + 2172715009 + name 1_385_KEY_2 + 2172715010 + name 1_385_KEY_3 + 2172715011 + name 1_385_KEY_4 + 2172715012 + name 1_385_KEY_5 + 2172715013 + name 1_385_KEY_6 + 2172715014 + name 1_385_KEY_7 + 2172715015 + name 1_385_KEY_8 + 2172715016 + name 1_385_KEY_9 + 2172715017 + name 1_385_KEY_POWER + 2172715018 + name 1_385_TWO_DIGITS + 2172715021 + name 1_385_KEY_CH_UP + 2172715023 + name 1_385_KEY_CH_DOWN + 2172715024 + name 1_385_KEY_MUTE + 2172715025 + name 1_385_KEY_VOL_DOWN + 2172715026 + name 1_385_KEY_VOL_UP + 2172715028 + name 1_385_KEY_MNSELECT + 2172715031 + name 1_385_KEY_AV + 2172715049 + name 1_385_KEY_AUTOTRACK + 2172715054 + name 1_385_KEY_MENU + 2172715055 + name 1_385_KEY_MUP + 2172715056 + name 1_385_KEY_MDOWN + 2172715057 + name 1_385_KEY_MLEFT + 2172715058 + name 1_385_KEY_MRIGHT + 2172715059 + name 1_386_KEY_0 + 2172780544 + name 1_386_KEY_1 + 2172780545 + name 1_386_KEY_2 + 2172780546 + name 1_386_KEY_3 + 2172780547 + name 1_386_KEY_4 + 2172780548 + name 1_386_KEY_5 + 2172780549 + name 1_386_KEY_6 + 2172780550 + name 1_386_KEY_7 + 2172780551 + name 1_386_KEY_8 + 2172780552 + name 1_386_KEY_9 + 2172780553 + name 1_386_KEY_POWER + 2172780554 + name 1_386_KEY_CH_UP + 2172780559 + name 1_386_KEY_CH_DOWN + 2172780560 + name 1_386_KEY_MUTE + 2172780561 + name 1_386_KEY_VOL_DOWN + 2172780562 + name 1_386_KEY_VOL_UP + 2172780564 + name 1_387_KEY_0 + 2172846080 + name 1_387_KEY_1 + 2172846081 + name 1_387_KEY_2 + 2172846082 + name 1_387_KEY_3 + 2172846083 + name 1_387_KEY_4 + 2172846084 + name 1_387_KEY_5 + 2172846085 + name 1_387_KEY_6 + 2172846086 + name 1_387_KEY_7 + 2172846087 + name 1_387_KEY_8 + 2172846088 + name 1_387_KEY_9 + 2172846089 + name 1_387_KEY_POWER + 2172846090 + name 1_387_KEY_CH_UP + 2172846095 + name 1_387_KEY_CH_DOWN + 2172846096 + name 1_387_KEY_AV + 2172846121 + name 1_389_KEY_0 + 2172977152 + name 1_389_KEY_1 + 2172977153 + name 1_389_KEY_2 + 2172977154 + name 1_389_KEY_3 + 2172977155 + name 1_389_KEY_4 + 2172977156 + name 1_389_KEY_5 + 2172977157 + name 1_389_KEY_6 + 2172977158 + name 1_389_KEY_7 + 2172977159 + name 1_389_KEY_8 + 2172977160 + name 1_389_KEY_9 + 2172977161 + name 1_389_KEY_POWER + 2172977162 + name 1_389_KEY_CH_UP + 2172977167 + name 1_389_KEY_CH_DOWN + 2172977168 + name 1_389_CH_PREVIOUS + 2172977171 + name 1_390_KEY_0 + 2173042688 + name 1_390_KEY_1 + 2173042689 + name 1_390_KEY_2 + 2173042690 + name 1_390_KEY_3 + 2173042691 + name 1_390_KEY_4 + 2173042692 + name 1_390_KEY_5 + 2173042693 + name 1_390_KEY_6 + 2173042694 + name 1_390_KEY_7 + 2173042695 + name 1_390_KEY_8 + 2173042696 + name 1_390_KEY_9 + 2173042697 + name 1_390_KEY_POWER + 2173042698 + name 1_390_TWO_DIGITS + 2173042701 + name 1_390_KEY_CH_UP + 2173042703 + name 1_390_KEY_CH_DOWN + 2173042704 + name 1_391_KEY_0 + 2173108224 + name 1_391_KEY_1 + 2173108225 + name 1_391_KEY_2 + 2173108226 + name 1_391_KEY_3 + 2173108227 + name 1_391_KEY_4 + 2173108228 + name 1_391_KEY_5 + 2173108229 + name 1_391_KEY_6 + 2173108230 + name 1_391_KEY_7 + 2173108231 + name 1_391_KEY_8 + 2173108232 + name 1_391_KEY_9 + 2173108233 + name 1_391_KEY_POWER + 2173108234 + name 1_391_TWO_DIGITS + 2173108237 + name 1_391_KEY_CH_UP + 2173108239 + name 1_391_KEY_CH_DOWN + 2173108240 + name 1_391_KEY_AV + 2173108265 + name 1_392_KEY_0 + 2173173760 + name 1_392_KEY_1 + 2173173761 + name 1_392_KEY_2 + 2173173762 + name 1_392_KEY_3 + 2173173763 + name 1_392_KEY_4 + 2173173764 + name 1_392_KEY_5 + 2173173765 + name 1_392_KEY_6 + 2173173766 + name 1_392_KEY_7 + 2173173767 + name 1_392_KEY_8 + 2173173768 + name 1_392_KEY_9 + 2173173769 + name 1_392_KEY_POWER + 2173173770 + name 1_392_KEY_CH_UP + 2173173775 + name 1_392_KEY_CH_DOWN + 2173173776 + name 1_392_CH_PREVIOUS + 2173173779 + name 1_393_KEY_0 + 2173239296 + name 1_393_KEY_1 + 2173239297 + name 1_393_KEY_2 + 2173239298 + name 1_393_KEY_3 + 2173239299 + name 1_393_KEY_4 + 2173239300 + name 1_393_KEY_5 + 2173239301 + name 1_393_KEY_6 + 2173239302 + name 1_393_KEY_7 + 2173239303 + name 1_393_KEY_8 + 2173239304 + name 1_393_KEY_9 + 2173239305 + name 1_393_KEY_POWER + 2173239306 + name 1_393_KEY_CH_UP + 2173239311 + name 1_393_KEY_CH_DOWN + 2173239312 + name 1_394_KEY_0 + 2173304832 + name 1_394_KEY_1 + 2173304833 + name 1_394_KEY_2 + 2173304834 + name 1_394_KEY_3 + 2173304835 + name 1_394_KEY_4 + 2173304836 + name 1_394_KEY_5 + 2173304837 + name 1_394_KEY_6 + 2173304838 + name 1_394_KEY_7 + 2173304839 + name 1_394_KEY_8 + 2173304840 + name 1_394_KEY_9 + 2173304841 + name 1_394_KEY_POWER + 2173304842 + name 1_394_KEY_CH_UP + 2173304847 + name 1_394_KEY_CH_DOWN + 2173304848 + name 1_394_CH_PREVIOUS + 2173304851 + name 1_395_KEY_0 + 2173370368 + name 1_395_KEY_1 + 2173370369 + name 1_395_KEY_2 + 2173370370 + name 1_395_KEY_3 + 2173370371 + name 1_395_KEY_4 + 2173370372 + name 1_395_KEY_5 + 2173370373 + name 1_395_KEY_6 + 2173370374 + name 1_395_KEY_7 + 2173370375 + name 1_395_KEY_8 + 2173370376 + name 1_395_KEY_9 + 2173370377 + name 1_395_KEY_POWER + 2173370378 + name 1_395_KEY_CH_UP + 2173370383 + name 1_395_KEY_CH_DOWN + 2173370384 + name 1_396_KEY_0 + 2173435904 + name 1_396_KEY_1 + 2173435905 + name 1_396_KEY_2 + 2173435906 + name 1_396_KEY_3 + 2173435907 + name 1_396_KEY_4 + 2173435908 + name 1_396_KEY_5 + 2173435909 + name 1_396_KEY_6 + 2173435910 + name 1_396_KEY_7 + 2173435911 + name 1_396_KEY_8 + 2173435912 + name 1_396_KEY_9 + 2173435913 + name 1_396_KEY_POWER + 2173435914 + name 1_396_TWO_DIGITS + 2173435917 + name 1_396_KEY_CH_UP + 2173435919 + name 1_396_KEY_CH_DOWN + 2173435920 + name 1_396_KEY_AV + 2173435945 + name 1_397_KEY_0 + 2173501440 + name 1_397_KEY_1 + 2173501441 + name 1_397_KEY_2 + 2173501442 + name 1_397_KEY_3 + 2173501443 + name 1_397_KEY_4 + 2173501444 + name 1_397_KEY_5 + 2173501445 + name 1_397_KEY_6 + 2173501446 + name 1_397_KEY_7 + 2173501447 + name 1_397_KEY_8 + 2173501448 + name 1_397_KEY_9 + 2173501449 + name 1_397_KEY_POWER + 2173501450 + name 1_397_KEY_CH_UP + 2173501455 + name 1_397_KEY_CH_DOWN + 2173501456 + name 1_398_KEY_0 + 2173566976 + name 1_398_KEY_1 + 2173566977 + name 1_398_KEY_2 + 2173566978 + name 1_398_KEY_3 + 2173566979 + name 1_398_KEY_4 + 2173566980 + name 1_398_KEY_5 + 2173566981 + name 1_398_KEY_6 + 2173566982 + name 1_398_KEY_7 + 2173566983 + name 1_398_KEY_8 + 2173566984 + name 1_398_KEY_9 + 2173566985 + name 1_398_KEY_POWER + 2173566986 + name 1_398_KEY_CH_UP + 2173566991 + name 1_398_KEY_CH_DOWN + 2173566992 + name 1_399_KEY_0 + 2173632512 + name 1_399_KEY_1 + 2173632513 + name 1_399_KEY_2 + 2173632514 + name 1_399_KEY_3 + 2173632515 + name 1_399_KEY_4 + 2173632516 + name 1_399_KEY_5 + 2173632517 + name 1_399_KEY_6 + 2173632518 + name 1_399_KEY_7 + 2173632519 + name 1_399_KEY_8 + 2173632520 + name 1_399_KEY_9 + 2173632521 + name 1_399_KEY_POWER + 2173632522 + name 1_399_KEY_CH_UP + 2173632527 + name 1_399_KEY_CH_DOWN + 2173632528 + name 1_400_KEY_0 + 2173698048 + name 1_400_KEY_1 + 2173698049 + name 1_400_KEY_2 + 2173698050 + name 1_400_KEY_3 + 2173698051 + name 1_400_KEY_4 + 2173698052 + name 1_400_KEY_5 + 2173698053 + name 1_400_KEY_6 + 2173698054 + name 1_400_KEY_7 + 2173698055 + name 1_400_KEY_8 + 2173698056 + name 1_400_KEY_9 + 2173698057 + name 1_400_KEY_POWER + 2173698058 + name 1_400_KEY_CH_UP + 2173698063 + name 1_400_KEY_CH_DOWN + 2173698064 + name 1_401_KEY_0 + 2173763584 + name 1_401_KEY_1 + 2173763585 + name 1_401_KEY_2 + 2173763586 + name 1_401_KEY_3 + 2173763587 + name 1_401_KEY_4 + 2173763588 + name 1_401_KEY_5 + 2173763589 + name 1_401_KEY_6 + 2173763590 + name 1_401_KEY_7 + 2173763591 + name 1_401_KEY_8 + 2173763592 + name 1_401_KEY_9 + 2173763593 + name 1_401_KEY_POWER + 2173763594 + name 1_401_KEY_CH_UP + 2173763599 + name 1_401_KEY_CH_DOWN + 2173763600 + name 1_401_CH_PREVIOUS + 2173763603 + name 1_402_KEY_0 + 2173829120 + name 1_402_KEY_1 + 2173829121 + name 1_402_KEY_2 + 2173829122 + name 1_402_KEY_3 + 2173829123 + name 1_402_KEY_4 + 2173829124 + name 1_402_KEY_5 + 2173829125 + name 1_402_KEY_6 + 2173829126 + name 1_402_KEY_7 + 2173829127 + name 1_402_KEY_8 + 2173829128 + name 1_402_KEY_9 + 2173829129 + name 1_402_KEY_POWER + 2173829130 + name 1_402_KEY_CH_UP + 2173829135 + name 1_402_KEY_CH_DOWN + 2173829136 + name 1_402_KEY_AV + 2173829161 + name 1_403_KEY_0 + 2173894656 + name 1_403_KEY_1 + 2173894657 + name 1_403_KEY_2 + 2173894658 + name 1_403_KEY_3 + 2173894659 + name 1_403_KEY_4 + 2173894660 + name 1_403_KEY_5 + 2173894661 + name 1_403_KEY_6 + 2173894662 + name 1_403_KEY_7 + 2173894663 + name 1_403_KEY_8 + 2173894664 + name 1_403_KEY_9 + 2173894665 + name 1_403_KEY_POWER + 2173894666 + name 1_403_KEY_CH_UP + 2173894671 + name 1_403_KEY_CH_DOWN + 2173894672 + name 1_404_KEY_0 + 2173960192 + name 1_404_KEY_1 + 2173960193 + name 1_404_KEY_2 + 2173960194 + name 1_404_KEY_3 + 2173960195 + name 1_404_KEY_4 + 2173960196 + name 1_404_KEY_5 + 2173960197 + name 1_404_KEY_6 + 2173960198 + name 1_404_KEY_7 + 2173960199 + name 1_404_KEY_8 + 2173960200 + name 1_404_KEY_9 + 2173960201 + name 1_404_KEY_POWER + 2173960202 + name 1_404_KEY_CH_UP + 2173960207 + name 1_404_KEY_CH_DOWN + 2173960208 + name 1_404_CH_PREVIOUS + 2173960211 + name 1_405_KEY_0 + 2174025728 + name 1_405_KEY_1 + 2174025729 + name 1_405_KEY_2 + 2174025730 + name 1_405_KEY_3 + 2174025731 + name 1_405_KEY_4 + 2174025732 + name 1_405_KEY_5 + 2174025733 + name 1_405_KEY_6 + 2174025734 + name 1_405_KEY_7 + 2174025735 + name 1_405_KEY_8 + 2174025736 + name 1_405_KEY_9 + 2174025737 + name 1_405_KEY_POWER + 2174025738 + name 1_405_KEY_CH_UP + 2174025743 + name 1_405_KEY_CH_DOWN + 2174025744 + name 1_405_CH_PREVIOUS + 2174025747 + name 1_405_KEY_AV + 2174025769 + name 1_406_KEY_0 + 2174091264 + name 1_406_KEY_1 + 2174091265 + name 1_406_KEY_2 + 2174091266 + name 1_406_KEY_3 + 2174091267 + name 1_406_KEY_4 + 2174091268 + name 1_406_KEY_5 + 2174091269 + name 1_406_KEY_6 + 2174091270 + name 1_406_KEY_7 + 2174091271 + name 1_406_KEY_8 + 2174091272 + name 1_406_KEY_9 + 2174091273 + name 1_406_KEY_POWER + 2174091274 + name 1_406_KEY_CH_UP + 2174091279 + name 1_406_KEY_CH_DOWN + 2174091280 + name 1_406_CH_PREVIOUS + 2174091283 + name 1_406_KEY_AV + 2174091305 + name 1_407_KEY_0 + 2174156800 + name 1_407_KEY_1 + 2174156801 + name 1_407_KEY_2 + 2174156802 + name 1_407_KEY_3 + 2174156803 + name 1_407_KEY_4 + 2174156804 + name 1_407_KEY_5 + 2174156805 + name 1_407_KEY_6 + 2174156806 + name 1_407_KEY_7 + 2174156807 + name 1_407_KEY_8 + 2174156808 + name 1_407_KEY_9 + 2174156809 + name 1_407_KEY_POWER + 2174156810 + name 1_407_KEY_CH_UP + 2174156815 + name 1_407_KEY_CH_DOWN + 2174156816 + name 1_407_KEY_Sleep + 2174156863 + name 1_408_KEY_0 + 2174222336 + name 1_408_KEY_1 + 2174222337 + name 1_408_KEY_2 + 2174222338 + name 1_408_KEY_3 + 2174222339 + name 1_408_KEY_4 + 2174222340 + name 1_408_KEY_5 + 2174222341 + name 1_408_KEY_6 + 2174222342 + name 1_408_KEY_7 + 2174222343 + name 1_408_KEY_8 + 2174222344 + name 1_408_KEY_9 + 2174222345 + name 1_408_KEY_POWER + 2174222346 + name 1_408_KEY_CH_UP + 2174222351 + name 1_408_KEY_CH_DOWN + 2174222352 + name 1_408_KEY_AV + 2174222377 + name 1_409_KEY_0 + 2174287872 + name 1_409_KEY_1 + 2174287873 + name 1_409_KEY_2 + 2174287874 + name 1_409_KEY_3 + 2174287875 + name 1_409_KEY_4 + 2174287876 + name 1_409_KEY_5 + 2174287877 + name 1_409_KEY_6 + 2174287878 + name 1_409_KEY_7 + 2174287879 + name 1_409_KEY_8 + 2174287880 + name 1_409_KEY_9 + 2174287881 + name 1_409_KEY_POWER + 2174287882 + name 1_409_KEY_CH_UP + 2174287887 + name 1_409_KEY_CH_DOWN + 2174287888 + name 1_409_KEY_MUTE + 2174287889 + name 1_409_KEY_VOL_DOWN + 2174287890 + name 1_409_KEY_VOL_UP + 2174287892 + name 1_410_KEY_0 + 2174353408 + name 1_410_KEY_1 + 2174353409 + name 1_410_KEY_2 + 2174353410 + name 1_410_KEY_3 + 2174353411 + name 1_410_KEY_4 + 2174353412 + name 1_410_KEY_5 + 2174353413 + name 1_410_KEY_6 + 2174353414 + name 1_410_KEY_7 + 2174353415 + name 1_410_KEY_8 + 2174353416 + name 1_410_KEY_9 + 2174353417 + name 1_410_KEY_POWER + 2174353418 + name 1_410_KEY_CH_UP + 2174353423 + name 1_410_KEY_CH_DOWN + 2174353424 + name 1_411_KEY_0 + 2174418944 + name 1_411_KEY_1 + 2174418945 + name 1_411_KEY_2 + 2174418946 + name 1_411_KEY_3 + 2174418947 + name 1_411_KEY_4 + 2174418948 + name 1_411_KEY_5 + 2174418949 + name 1_411_KEY_6 + 2174418950 + name 1_411_KEY_7 + 2174418951 + name 1_411_KEY_8 + 2174418952 + name 1_411_KEY_9 + 2174418953 + name 1_411_KEY_POWER + 2174418954 + name 1_411_TWO_DIGITS + 2174418957 + name 1_411_KEY_CH_UP + 2174418959 + name 1_411_KEY_CH_DOWN + 2174418960 + name 1_412_KEY_0 + 2174484480 + name 1_412_KEY_1 + 2174484481 + name 1_412_KEY_2 + 2174484482 + name 1_412_KEY_3 + 2174484483 + name 1_412_KEY_4 + 2174484484 + name 1_412_KEY_5 + 2174484485 + name 1_412_KEY_6 + 2174484486 + name 1_412_KEY_7 + 2174484487 + name 1_412_KEY_8 + 2174484488 + name 1_412_KEY_9 + 2174484489 + name 1_412_KEY_POWER + 2174484490 + name 1_412_TWO_DIGITS + 2174484493 + name 1_412_KEY_CH_UP + 2174484495 + name 1_412_KEY_CH_DOWN + 2174484496 + name 1_412_KEY_AV + 2174484521 + name 1_413_KEY_0 + 2174550016 + name 1_413_KEY_1 + 2174550017 + name 1_413_KEY_2 + 2174550018 + name 1_413_KEY_3 + 2174550019 + name 1_413_KEY_4 + 2174550020 + name 1_413_KEY_5 + 2174550021 + name 1_413_KEY_6 + 2174550022 + name 1_413_KEY_7 + 2174550023 + name 1_413_KEY_8 + 2174550024 + name 1_413_KEY_9 + 2174550025 + name 1_413_KEY_POWER + 2174550026 + name 1_413_KEY_CH_UP + 2174550031 + name 1_413_KEY_CH_DOWN + 2174550032 + name 1_413_CH_PREVIOUS + 2174550035 + name 1_413_KEY_AV + 2174550057 + name 1_413_KEY_Sleep + 2174550079 + name 1_414_KEY_0 + 2174615552 + name 1_414_KEY_1 + 2174615553 + name 1_414_KEY_2 + 2174615554 + name 1_414_KEY_3 + 2174615555 + name 1_414_KEY_4 + 2174615556 + name 1_414_KEY_5 + 2174615557 + name 1_414_KEY_6 + 2174615558 + name 1_414_KEY_7 + 2174615559 + name 1_414_KEY_8 + 2174615560 + name 1_414_KEY_9 + 2174615561 + name 1_414_KEY_POWER + 2174615562 + name 1_414_KEY_CH_UP + 2174615567 + name 1_414_KEY_CH_DOWN + 2174615568 + name 1_415_KEY_0 + 2174681088 + name 1_415_KEY_1 + 2174681089 + name 1_415_KEY_2 + 2174681090 + name 1_415_KEY_3 + 2174681091 + name 1_415_KEY_4 + 2174681092 + name 1_415_KEY_5 + 2174681093 + name 1_415_KEY_6 + 2174681094 + name 1_415_KEY_7 + 2174681095 + name 1_415_KEY_8 + 2174681096 + name 1_415_KEY_9 + 2174681097 + name 1_415_KEY_POWER + 2174681098 + name 1_415_TWO_DIGITS + 2174681101 + name 1_415_KEY_CH_UP + 2174681103 + name 1_415_KEY_CH_DOWN + 2174681104 + name 1_416_KEY_0 + 2174746624 + name 1_416_KEY_1 + 2174746625 + name 1_416_KEY_2 + 2174746626 + name 1_416_KEY_3 + 2174746627 + name 1_416_KEY_4 + 2174746628 + name 1_416_KEY_5 + 2174746629 + name 1_416_KEY_6 + 2174746630 + name 1_416_KEY_7 + 2174746631 + name 1_416_KEY_8 + 2174746632 + name 1_416_KEY_9 + 2174746633 + name 1_416_KEY_POWER + 2174746634 + name 1_416_KEY_CH_UP + 2174746639 + name 1_416_KEY_CH_DOWN + 2174746640 + name 1_417_KEY_0 + 2174812160 + name 1_417_KEY_1 + 2174812161 + name 1_417_KEY_2 + 2174812162 + name 1_417_KEY_3 + 2174812163 + name 1_417_KEY_4 + 2174812164 + name 1_417_KEY_5 + 2174812165 + name 1_417_KEY_6 + 2174812166 + name 1_417_KEY_7 + 2174812167 + name 1_417_KEY_8 + 2174812168 + name 1_417_KEY_9 + 2174812169 + name 1_417_KEY_POWER + 2174812170 + name 1_417_TWO_DIGITS + 2174812173 + name 1_417_KEY_CH_UP + 2174812175 + name 1_417_KEY_CH_DOWN + 2174812176 + name 1_417_KEY_AV + 2174812201 + name 1_418_KEY_0 + 2174877696 + name 1_418_KEY_1 + 2174877697 + name 1_418_KEY_2 + 2174877698 + name 1_418_KEY_3 + 2174877699 + name 1_418_KEY_4 + 2174877700 + name 1_418_KEY_5 + 2174877701 + name 1_418_KEY_6 + 2174877702 + name 1_418_KEY_7 + 2174877703 + name 1_418_KEY_8 + 2174877704 + name 1_418_KEY_9 + 2174877705 + name 1_418_KEY_POWER + 2174877706 + name 1_418_KEY_CH_UP + 2174877711 + name 1_418_KEY_CH_DOWN + 2174877712 + name 1_419_KEY_0 + 2174943232 + name 1_419_KEY_1 + 2174943233 + name 1_419_KEY_2 + 2174943234 + name 1_419_KEY_3 + 2174943235 + name 1_419_KEY_4 + 2174943236 + name 1_419_KEY_5 + 2174943237 + name 1_419_KEY_6 + 2174943238 + name 1_419_KEY_7 + 2174943239 + name 1_419_KEY_8 + 2174943240 + name 1_419_KEY_9 + 2174943241 + name 1_419_KEY_POWER + 2174943242 + name 1_419_TWO_DIGITS + 2174943245 + name 1_419_KEY_CH_UP + 2174943247 + name 1_419_KEY_CH_DOWN + 2174943248 + name 1_420_KEY_0 + 2175008768 + name 1_420_KEY_1 + 2175008769 + name 1_420_KEY_2 + 2175008770 + name 1_420_KEY_3 + 2175008771 + name 1_420_KEY_4 + 2175008772 + name 1_420_KEY_5 + 2175008773 + name 1_420_KEY_6 + 2175008774 + name 1_420_KEY_7 + 2175008775 + name 1_420_KEY_8 + 2175008776 + name 1_420_KEY_9 + 2175008777 + name 1_420_KEY_POWER + 2175008778 + name 1_420_TWO_DIGITS + 2175008781 + name 1_420_KEY_CH_UP + 2175008783 + name 1_420_KEY_CH_DOWN + 2175008784 + name 1_420_KEY_Sleep + 2175008831 + name 1_421_KEY_0 + 2175074304 + name 1_421_KEY_1 + 2175074305 + name 1_421_KEY_2 + 2175074306 + name 1_421_KEY_3 + 2175074307 + name 1_421_KEY_4 + 2175074308 + name 1_421_KEY_5 + 2175074309 + name 1_421_KEY_6 + 2175074310 + name 1_421_KEY_7 + 2175074311 + name 1_421_KEY_8 + 2175074312 + name 1_421_KEY_9 + 2175074313 + name 1_421_KEY_POWER + 2175074314 + name 1_421_KEY_CH_UP + 2175074319 + name 1_421_KEY_CH_DOWN + 2175074320 + name 1_421_CH_PREVIOUS + 2175074323 + name 1_422_KEY_0 + 2175139840 + name 1_422_KEY_1 + 2175139841 + name 1_422_KEY_2 + 2175139842 + name 1_422_KEY_3 + 2175139843 + name 1_422_KEY_4 + 2175139844 + name 1_422_KEY_5 + 2175139845 + name 1_422_KEY_6 + 2175139846 + name 1_422_KEY_7 + 2175139847 + name 1_422_KEY_8 + 2175139848 + name 1_422_KEY_9 + 2175139849 + name 1_422_KEY_POWER + 2175139850 + name 1_422_KEY_CH_UP + 2175139855 + name 1_422_KEY_CH_DOWN + 2175139856 + name 1_422_CH_PREVIOUS + 2175139859 + name 1_423_KEY_0 + 2175205376 + name 1_423_KEY_1 + 2175205377 + name 1_423_KEY_2 + 2175205378 + name 1_423_KEY_3 + 2175205379 + name 1_423_KEY_4 + 2175205380 + name 1_423_KEY_5 + 2175205381 + name 1_423_KEY_6 + 2175205382 + name 1_423_KEY_7 + 2175205383 + name 1_423_KEY_8 + 2175205384 + name 1_423_KEY_9 + 2175205385 + name 1_423_KEY_POWER + 2175205386 + name 1_423_KEY_CH_UP + 2175205391 + name 1_423_KEY_CH_DOWN + 2175205392 + name 1_423_KEY_AV + 2175205417 + name 1_424_KEY_0 + 2175270912 + name 1_424_KEY_1 + 2175270913 + name 1_424_KEY_2 + 2175270914 + name 1_424_KEY_3 + 2175270915 + name 1_424_KEY_4 + 2175270916 + name 1_424_KEY_5 + 2175270917 + name 1_424_KEY_6 + 2175270918 + name 1_424_KEY_7 + 2175270919 + name 1_424_KEY_8 + 2175270920 + name 1_424_KEY_9 + 2175270921 + name 1_424_KEY_POWER + 2175270922 + name 1_424_KEY_CH_UP + 2175270927 + name 1_424_KEY_CH_DOWN + 2175270928 + name 1_424_KEY_MUTE + 2175270929 + name 1_424_KEY_VOL_DOWN + 2175270930 + name 1_424_KEY_VOL_UP + 2175270932 + name 1_425_KEY_0 + 2175336448 + name 1_425_KEY_1 + 2175336449 + name 1_425_KEY_2 + 2175336450 + name 1_425_KEY_3 + 2175336451 + name 1_425_KEY_4 + 2175336452 + name 1_425_KEY_5 + 2175336453 + name 1_425_KEY_6 + 2175336454 + name 1_425_KEY_7 + 2175336455 + name 1_425_KEY_8 + 2175336456 + name 1_425_KEY_9 + 2175336457 + name 1_425_KEY_POWER + 2175336458 + name 1_425_KEY_CH_UP + 2175336463 + name 1_425_KEY_CH_DOWN + 2175336464 + name 1_425_KEY_AV + 2175336489 + name 1_426_KEY_0 + 2175401984 + name 1_426_KEY_1 + 2175401985 + name 1_426_KEY_2 + 2175401986 + name 1_426_KEY_3 + 2175401987 + name 1_426_KEY_4 + 2175401988 + name 1_426_KEY_5 + 2175401989 + name 1_426_KEY_6 + 2175401990 + name 1_426_KEY_7 + 2175401991 + name 1_426_KEY_8 + 2175401992 + name 1_426_KEY_9 + 2175401993 + name 1_426_KEY_POWER + 2175401994 + name 1_426_KEY_CH_UP + 2175401999 + name 1_426_KEY_CH_DOWN + 2175402000 + name 1_427_KEY_0 + 2175467520 + name 1_427_KEY_1 + 2175467521 + name 1_427_KEY_2 + 2175467522 + name 1_427_KEY_3 + 2175467523 + name 1_427_KEY_4 + 2175467524 + name 1_427_KEY_5 + 2175467525 + name 1_427_KEY_6 + 2175467526 + name 1_427_KEY_7 + 2175467527 + name 1_427_KEY_8 + 2175467528 + name 1_427_KEY_9 + 2175467529 + name 1_427_KEY_POWER + 2175467530 + name 1_427_KEY_CH_UP + 2175467535 + name 1_427_KEY_CH_DOWN + 2175467536 + name 1_427_KEY_AV + 2175467561 + name 1_428_KEY_0 + 2175533056 + name 1_428_KEY_1 + 2175533057 + name 1_428_KEY_2 + 2175533058 + name 1_428_KEY_3 + 2175533059 + name 1_428_KEY_4 + 2175533060 + name 1_428_KEY_5 + 2175533061 + name 1_428_KEY_6 + 2175533062 + name 1_428_KEY_7 + 2175533063 + name 1_428_KEY_8 + 2175533064 + name 1_428_KEY_9 + 2175533065 + name 1_428_KEY_POWER + 2175533066 + name 1_428_TWO_DIGITS + 2175533069 + name 1_428_KEY_CH_UP + 2175533071 + name 1_428_KEY_CH_DOWN + 2175533072 + name 1_429_KEY_0 + 2175598592 + name 1_429_KEY_1 + 2175598593 + name 1_429_KEY_2 + 2175598594 + name 1_429_KEY_3 + 2175598595 + name 1_429_KEY_4 + 2175598596 + name 1_429_KEY_5 + 2175598597 + name 1_429_KEY_6 + 2175598598 + name 1_429_KEY_7 + 2175598599 + name 1_429_KEY_8 + 2175598600 + name 1_429_KEY_9 + 2175598601 + name 1_429_KEY_POWER + 2175598602 + name 1_429_TWO_DIGITS + 2175598605 + name 1_429_KEY_CH_UP + 2175598607 + name 1_429_KEY_CH_DOWN + 2175598608 + name 1_429_KEY_AV + 2175598633 + name 1_430_KEY_0 + 2175664128 + name 1_430_KEY_1 + 2175664129 + name 1_430_KEY_2 + 2175664130 + name 1_430_KEY_3 + 2175664131 + name 1_430_KEY_4 + 2175664132 + name 1_430_KEY_5 + 2175664133 + name 1_430_KEY_6 + 2175664134 + name 1_430_KEY_7 + 2175664135 + name 1_430_KEY_8 + 2175664136 + name 1_430_KEY_9 + 2175664137 + name 1_430_KEY_POWER + 2175664138 + name 1_430_KEY_CH_UP + 2175664143 + name 1_430_KEY_CH_DOWN + 2175664144 + name 1_431_KEY_0 + 2175729664 + name 1_431_KEY_1 + 2175729665 + name 1_431_KEY_2 + 2175729666 + name 1_431_KEY_3 + 2175729667 + name 1_431_KEY_4 + 2175729668 + name 1_431_KEY_5 + 2175729669 + name 1_431_KEY_6 + 2175729670 + name 1_431_KEY_7 + 2175729671 + name 1_431_KEY_8 + 2175729672 + name 1_431_KEY_9 + 2175729673 + name 1_431_KEY_POWER + 2175729674 + name 1_431_KEY_CH_UP + 2175729679 + name 1_431_KEY_CH_DOWN + 2175729680 + name 1_431_CH_PREVIOUS + 2175729683 + name 1_432_KEY_0 + 2175795200 + name 1_432_KEY_1 + 2175795201 + name 1_432_KEY_2 + 2175795202 + name 1_432_KEY_3 + 2175795203 + name 1_432_KEY_4 + 2175795204 + name 1_432_KEY_5 + 2175795205 + name 1_432_KEY_6 + 2175795206 + name 1_432_KEY_7 + 2175795207 + name 1_432_KEY_8 + 2175795208 + name 1_432_KEY_9 + 2175795209 + name 1_432_KEY_POWER + 2175795210 + name 1_432_KEY_CH_UP + 2175795215 + name 1_432_KEY_CH_DOWN + 2175795216 + name 1_433_KEY_0 + 2175860736 + name 1_433_KEY_1 + 2175860737 + name 1_433_KEY_2 + 2175860738 + name 1_433_KEY_3 + 2175860739 + name 1_433_KEY_4 + 2175860740 + name 1_433_KEY_5 + 2175860741 + name 1_433_KEY_6 + 2175860742 + name 1_433_KEY_7 + 2175860743 + name 1_433_KEY_8 + 2175860744 + name 1_433_KEY_9 + 2175860745 + name 1_433_KEY_POWER + 2175860746 + name 1_433_KEY_CH_UP + 2175860751 + name 1_433_KEY_CH_DOWN + 2175860752 + name 1_434_KEY_0 + 2175926272 + name 1_434_KEY_1 + 2175926273 + name 1_434_KEY_2 + 2175926274 + name 1_434_KEY_3 + 2175926275 + name 1_434_KEY_4 + 2175926276 + name 1_434_KEY_5 + 2175926277 + name 1_434_KEY_6 + 2175926278 + name 1_434_KEY_7 + 2175926279 + name 1_434_KEY_8 + 2175926280 + name 1_434_KEY_9 + 2175926281 + name 1_434_KEY_POWER + 2175926282 + name 1_434_TWO_DIGITS + 2175926285 + name 1_434_KEY_CH_UP + 2175926287 + name 1_434_KEY_CH_DOWN + 2175926288 + name 1_435_KEY_0 + 2175991808 + name 1_435_KEY_1 + 2175991809 + name 1_435_KEY_2 + 2175991810 + name 1_435_KEY_3 + 2175991811 + name 1_435_KEY_4 + 2175991812 + name 1_435_KEY_5 + 2175991813 + name 1_435_KEY_6 + 2175991814 + name 1_435_KEY_7 + 2175991815 + name 1_435_KEY_8 + 2175991816 + name 1_435_KEY_9 + 2175991817 + name 1_435_KEY_POWER + 2175991818 + name 1_435_KEY_CH_UP + 2175991823 + name 1_435_KEY_CH_DOWN + 2175991824 + name 1_435_KEY_AV + 2175991849 + name 1_436_KEY_0 + 2176057344 + name 1_436_KEY_1 + 2176057345 + name 1_436_KEY_2 + 2176057346 + name 1_436_KEY_3 + 2176057347 + name 1_436_KEY_4 + 2176057348 + name 1_436_KEY_5 + 2176057349 + name 1_436_KEY_6 + 2176057350 + name 1_436_KEY_7 + 2176057351 + name 1_436_KEY_8 + 2176057352 + name 1_436_KEY_9 + 2176057353 + name 1_436_KEY_POWER + 2176057354 + name 1_436_TWO_DIGITS + 2176057357 + name 1_436_KEY_CH_UP + 2176057359 + name 1_436_KEY_CH_DOWN + 2176057360 + name 1_436_KEY_AV + 2176057385 + name 1_437_KEY_0 + 2176122880 + name 1_437_KEY_1 + 2176122881 + name 1_437_KEY_2 + 2176122882 + name 1_437_KEY_3 + 2176122883 + name 1_437_KEY_4 + 2176122884 + name 1_437_KEY_5 + 2176122885 + name 1_437_KEY_6 + 2176122886 + name 1_437_KEY_7 + 2176122887 + name 1_437_KEY_8 + 2176122888 + name 1_437_KEY_9 + 2176122889 + name 1_437_KEY_POWER + 2176122890 + name 1_437_KEY_CH_UP + 2176122895 + name 1_437_KEY_CH_DOWN + 2176122896 + name 1_437_KEY_AV + 2176122921 + name 1_438_KEY_0 + 2176188416 + name 1_438_KEY_1 + 2176188417 + name 1_438_KEY_2 + 2176188418 + name 1_438_KEY_3 + 2176188419 + name 1_438_KEY_4 + 2176188420 + name 1_438_KEY_5 + 2176188421 + name 1_438_KEY_6 + 2176188422 + name 1_438_KEY_7 + 2176188423 + name 1_438_KEY_8 + 2176188424 + name 1_438_KEY_9 + 2176188425 + name 1_438_KEY_POWER + 2176188426 + name 1_438_KEY_CH_UP + 2176188431 + name 1_438_KEY_CH_DOWN + 2176188432 + name 1_438_KEY_AV + 2176188457 + name 1_439_KEY_0 + 2176253952 + name 1_439_KEY_1 + 2176253953 + name 1_439_KEY_2 + 2176253954 + name 1_439_KEY_3 + 2176253955 + name 1_439_KEY_4 + 2176253956 + name 1_439_KEY_5 + 2176253957 + name 1_439_KEY_6 + 2176253958 + name 1_439_KEY_7 + 2176253959 + name 1_439_KEY_8 + 2176253960 + name 1_439_KEY_9 + 2176253961 + name 1_439_KEY_POWER + 2176253962 + name 1_439_KEY_CH_UP + 2176253967 + name 1_439_KEY_CH_DOWN + 2176253968 + name 1_440_KEY_0 + 2176319488 + name 1_440_KEY_1 + 2176319489 + name 1_440_KEY_2 + 2176319490 + name 1_440_KEY_3 + 2176319491 + name 1_440_KEY_4 + 2176319492 + name 1_440_KEY_5 + 2176319493 + name 1_440_KEY_6 + 2176319494 + name 1_440_KEY_7 + 2176319495 + name 1_440_KEY_8 + 2176319496 + name 1_440_KEY_9 + 2176319497 + name 1_440_KEY_POWER + 2176319498 + name 1_440_TWO_DIGITS + 2176319501 + name 1_440_KEY_CH_UP + 2176319503 + name 1_440_KEY_CH_DOWN + 2176319504 + name 1_440_KEY_AV + 2176319529 + name 1_441_KEY_0 + 2176385024 + name 1_441_KEY_1 + 2176385025 + name 1_441_KEY_2 + 2176385026 + name 1_441_KEY_3 + 2176385027 + name 1_441_KEY_4 + 2176385028 + name 1_441_KEY_5 + 2176385029 + name 1_441_KEY_6 + 2176385030 + name 1_441_KEY_7 + 2176385031 + name 1_441_KEY_8 + 2176385032 + name 1_441_KEY_9 + 2176385033 + name 1_441_KEY_POWER + 2176385034 + name 1_441_KEY_CH_UP + 2176385039 + name 1_441_KEY_CH_DOWN + 2176385040 + name 1_442_KEY_0 + 2176450560 + name 1_442_KEY_1 + 2176450561 + name 1_442_KEY_2 + 2176450562 + name 1_442_KEY_3 + 2176450563 + name 1_442_KEY_4 + 2176450564 + name 1_442_KEY_5 + 2176450565 + name 1_442_KEY_6 + 2176450566 + name 1_442_KEY_7 + 2176450567 + name 1_442_KEY_8 + 2176450568 + name 1_442_KEY_9 + 2176450569 + name 1_442_KEY_POWER + 2176450570 + name 1_442_KEY_CH_UP + 2176450575 + name 1_442_KEY_CH_DOWN + 2176450576 + name 1_443_KEY_0 + 2176516096 + name 1_443_KEY_1 + 2176516097 + name 1_443_KEY_2 + 2176516098 + name 1_443_KEY_3 + 2176516099 + name 1_443_KEY_4 + 2176516100 + name 1_443_KEY_5 + 2176516101 + name 1_443_KEY_6 + 2176516102 + name 1_443_KEY_7 + 2176516103 + name 1_443_KEY_8 + 2176516104 + name 1_443_KEY_9 + 2176516105 + name 1_443_KEY_POWER + 2176516106 + name 1_443_KEY_CH_UP + 2176516111 + name 1_443_KEY_CH_DOWN + 2176516112 + name 1_444_KEY_0 + 2176581632 + name 1_444_KEY_1 + 2176581633 + name 1_444_KEY_2 + 2176581634 + name 1_444_KEY_3 + 2176581635 + name 1_444_KEY_4 + 2176581636 + name 1_444_KEY_5 + 2176581637 + name 1_444_KEY_6 + 2176581638 + name 1_444_KEY_7 + 2176581639 + name 1_444_KEY_8 + 2176581640 + name 1_444_KEY_9 + 2176581641 + name 1_444_KEY_POWER + 2176581642 + name 1_444_KEY_CH_UP + 2176581647 + name 1_444_KEY_CH_DOWN + 2176581648 + name 1_444_CH_PREVIOUS + 2176581651 + name 1_444_KEY_AV + 2176581673 + name 1_444_KEY_Sleep + 2176581695 + name 1_445_KEY_0 + 2176647168 + name 1_445_KEY_1 + 2176647169 + name 1_445_KEY_2 + 2176647170 + name 1_445_KEY_3 + 2176647171 + name 1_445_KEY_4 + 2176647172 + name 1_445_KEY_5 + 2176647173 + name 1_445_KEY_6 + 2176647174 + name 1_445_KEY_7 + 2176647175 + name 1_445_KEY_8 + 2176647176 + name 1_445_KEY_9 + 2176647177 + name 1_445_KEY_POWER + 2176647178 + name 1_445_TWO_DIGITS + 2176647181 + name 1_445_KEY_CH_UP + 2176647183 + name 1_445_KEY_CH_DOWN + 2176647184 + name 1_446_KEY_0 + 2176712704 + name 1_446_KEY_1 + 2176712705 + name 1_446_KEY_2 + 2176712706 + name 1_446_KEY_3 + 2176712707 + name 1_446_KEY_4 + 2176712708 + name 1_446_KEY_5 + 2176712709 + name 1_446_KEY_6 + 2176712710 + name 1_446_KEY_7 + 2176712711 + name 1_446_KEY_8 + 2176712712 + name 1_446_KEY_9 + 2176712713 + name 1_446_KEY_POWER + 2176712714 + name 1_446_TWO_DIGITS + 2176712717 + name 1_446_KEY_CH_UP + 2176712719 + name 1_446_KEY_CH_DOWN + 2176712720 + name 1_446_KEY_Sleep + 2176712767 + name 1_447_KEY_0 + 2176778240 + name 1_447_KEY_1 + 2176778241 + name 1_447_KEY_2 + 2176778242 + name 1_447_KEY_3 + 2176778243 + name 1_447_KEY_4 + 2176778244 + name 1_447_KEY_5 + 2176778245 + name 1_447_KEY_6 + 2176778246 + name 1_447_KEY_7 + 2176778247 + name 1_447_KEY_8 + 2176778248 + name 1_447_KEY_9 + 2176778249 + name 1_447_KEY_POWER + 2176778250 + name 1_447_TWO_DIGITS + 2176778253 + name 1_447_KEY_CH_UP + 2176778255 + name 1_447_KEY_CH_DOWN + 2176778256 + name 1_448_KEY_0 + 2176843776 + name 1_448_KEY_1 + 2176843777 + name 1_448_KEY_2 + 2176843778 + name 1_448_KEY_3 + 2176843779 + name 1_448_KEY_4 + 2176843780 + name 1_448_KEY_5 + 2176843781 + name 1_448_KEY_6 + 2176843782 + name 1_448_KEY_7 + 2176843783 + name 1_448_KEY_8 + 2176843784 + name 1_448_KEY_9 + 2176843785 + name 1_448_KEY_POWER + 2176843786 + name 1_448_KEY_CH_UP + 2176843791 + name 1_448_KEY_CH_DOWN + 2176843792 + name 1_448_KEY_Sleep + 2176843839 + name 1_449_KEY_0 + 2176909312 + name 1_449_KEY_1 + 2176909313 + name 1_449_KEY_2 + 2176909314 + name 1_449_KEY_3 + 2176909315 + name 1_449_KEY_4 + 2176909316 + name 1_449_KEY_5 + 2176909317 + name 1_449_KEY_6 + 2176909318 + name 1_449_KEY_7 + 2176909319 + name 1_449_KEY_8 + 2176909320 + name 1_449_KEY_9 + 2176909321 + name 1_449_KEY_POWER + 2176909322 + name 1_449_TWO_DIGITS + 2176909325 + name 1_449_KEY_CH_UP + 2176909327 + name 1_449_KEY_CH_DOWN + 2176909328 + name 1_449_CH_PREVIOUS + 2176909331 + name 1_449_KEY_AV + 2176909353 + name 1_450_KEY_0 + 2176974848 + name 1_450_KEY_1 + 2176974849 + name 1_450_KEY_2 + 2176974850 + name 1_450_KEY_3 + 2176974851 + name 1_450_KEY_4 + 2176974852 + name 1_450_KEY_5 + 2176974853 + name 1_450_KEY_6 + 2176974854 + name 1_450_KEY_7 + 2176974855 + name 1_450_KEY_8 + 2176974856 + name 1_450_KEY_9 + 2176974857 + name 1_450_KEY_POWER + 2176974858 + name 1_450_KEY_CH_UP + 2176974863 + name 1_450_KEY_CH_DOWN + 2176974864 + name 1_451_KEY_0 + 2177040384 + name 1_451_KEY_1 + 2177040385 + name 1_451_KEY_2 + 2177040386 + name 1_451_KEY_3 + 2177040387 + name 1_451_KEY_4 + 2177040388 + name 1_451_KEY_5 + 2177040389 + name 1_451_KEY_6 + 2177040390 + name 1_451_KEY_7 + 2177040391 + name 1_451_KEY_8 + 2177040392 + name 1_451_KEY_9 + 2177040393 + name 1_451_KEY_POWER + 2177040394 + name 1_451_KEY_CH_UP + 2177040399 + name 1_451_KEY_CH_DOWN + 2177040400 + name 1_452_KEY_0 + 2177105920 + name 1_452_KEY_1 + 2177105921 + name 1_452_KEY_2 + 2177105922 + name 1_452_KEY_3 + 2177105923 + name 1_452_KEY_4 + 2177105924 + name 1_452_KEY_5 + 2177105925 + name 1_452_KEY_6 + 2177105926 + name 1_452_KEY_7 + 2177105927 + name 1_452_KEY_8 + 2177105928 + name 1_452_KEY_9 + 2177105929 + name 1_452_KEY_POWER + 2177105930 + name 1_452_KEY_CH_UP + 2177105935 + name 1_452_KEY_CH_DOWN + 2177105936 + name 1_452_KEY_AV + 2177105961 + name 1_453_KEY_0 + 2177171456 + name 1_453_KEY_1 + 2177171457 + name 1_453_KEY_2 + 2177171458 + name 1_453_KEY_3 + 2177171459 + name 1_453_KEY_4 + 2177171460 + name 1_453_KEY_5 + 2177171461 + name 1_453_KEY_6 + 2177171462 + name 1_453_KEY_7 + 2177171463 + name 1_453_KEY_8 + 2177171464 + name 1_453_KEY_9 + 2177171465 + name 1_453_KEY_POWER + 2177171466 + name 1_453_KEY_CH_UP + 2177171471 + name 1_453_KEY_CH_DOWN + 2177171472 + name 1_453_KEY_Sleep + 2177171519 + name 1_454_KEY_0 + 2177236992 + name 1_454_KEY_1 + 2177236993 + name 1_454_KEY_2 + 2177236994 + name 1_454_KEY_3 + 2177236995 + name 1_454_KEY_4 + 2177236996 + name 1_454_KEY_5 + 2177236997 + name 1_454_KEY_6 + 2177236998 + name 1_454_KEY_7 + 2177236999 + name 1_454_KEY_8 + 2177237000 + name 1_454_KEY_9 + 2177237001 + name 1_454_KEY_POWER + 2177237002 + name 1_454_KEY_CH_UP + 2177237007 + name 1_454_KEY_CH_DOWN + 2177237008 + name 1_455_KEY_0 + 2177302528 + name 1_455_KEY_1 + 2177302529 + name 1_455_KEY_2 + 2177302530 + name 1_455_KEY_3 + 2177302531 + name 1_455_KEY_4 + 2177302532 + name 1_455_KEY_5 + 2177302533 + name 1_455_KEY_6 + 2177302534 + name 1_455_KEY_7 + 2177302535 + name 1_455_KEY_8 + 2177302536 + name 1_455_KEY_9 + 2177302537 + name 1_455_KEY_POWER + 2177302538 + name 1_455_KEY_CH_UP + 2177302543 + name 1_455_KEY_CH_DOWN + 2177302544 + name 1_455_KEY_MUTE + 2177302545 + name 1_455_KEY_VOL_DOWN + 2177302546 + name 1_455_KEY_VOL_UP + 2177302548 + name 1_456_KEY_0 + 2177368064 + name 1_456_KEY_1 + 2177368065 + name 1_456_KEY_2 + 2177368066 + name 1_456_KEY_3 + 2177368067 + name 1_456_KEY_4 + 2177368068 + name 1_456_KEY_5 + 2177368069 + name 1_456_KEY_6 + 2177368070 + name 1_456_KEY_7 + 2177368071 + name 1_456_KEY_8 + 2177368072 + name 1_456_KEY_9 + 2177368073 + name 1_456_KEY_POWER + 2177368074 + name 1_456_KEY_CH_UP + 2177368079 + name 1_456_KEY_CH_DOWN + 2177368080 + name 1_456_CH_PREVIOUS + 2177368083 + name 1_457_KEY_0 + 2177433600 + name 1_457_KEY_1 + 2177433601 + name 1_457_KEY_2 + 2177433602 + name 1_457_KEY_3 + 2177433603 + name 1_457_KEY_4 + 2177433604 + name 1_457_KEY_5 + 2177433605 + name 1_457_KEY_6 + 2177433606 + name 1_457_KEY_7 + 2177433607 + name 1_457_KEY_8 + 2177433608 + name 1_457_KEY_9 + 2177433609 + name 1_457_KEY_POWER + 2177433610 + name 1_457_TWO_DIGITS + 2177433613 + name 1_457_KEY_CH_UP + 2177433615 + name 1_457_KEY_CH_DOWN + 2177433616 + name 1_457_CH_PREVIOUS + 2177433619 + name 1_457_KEY_AV + 2177433641 + name 1_458_KEY_0 + 2177499136 + name 1_458_KEY_1 + 2177499137 + name 1_458_KEY_2 + 2177499138 + name 1_458_KEY_3 + 2177499139 + name 1_458_KEY_4 + 2177499140 + name 1_458_KEY_5 + 2177499141 + name 1_458_KEY_6 + 2177499142 + name 1_458_KEY_7 + 2177499143 + name 1_458_KEY_8 + 2177499144 + name 1_458_KEY_9 + 2177499145 + name 1_458_KEY_POWER + 2177499146 + name 1_458_KEY_CH_UP + 2177499151 + name 1_458_KEY_CH_DOWN + 2177499152 + name 1_459_KEY_0 + 2177564672 + name 1_459_KEY_1 + 2177564673 + name 1_459_KEY_2 + 2177564674 + name 1_459_KEY_3 + 2177564675 + name 1_459_KEY_4 + 2177564676 + name 1_459_KEY_5 + 2177564677 + name 1_459_KEY_6 + 2177564678 + name 1_459_KEY_7 + 2177564679 + name 1_459_KEY_8 + 2177564680 + name 1_459_KEY_9 + 2177564681 + name 1_459_KEY_POWER + 2177564682 + name 1_459_KEY_CH_UP + 2177564687 + name 1_459_KEY_CH_DOWN + 2177564688 + name 1_459_CH_PREVIOUS + 2177564691 + name 1_459_KEY_Sleep + 2177564735 + name 1_460_KEY_0 + 2177630208 + name 1_460_KEY_1 + 2177630209 + name 1_460_KEY_2 + 2177630210 + name 1_460_KEY_3 + 2177630211 + name 1_460_KEY_4 + 2177630212 + name 1_460_KEY_5 + 2177630213 + name 1_460_KEY_6 + 2177630214 + name 1_460_KEY_7 + 2177630215 + name 1_460_KEY_8 + 2177630216 + name 1_460_KEY_9 + 2177630217 + name 1_460_KEY_POWER + 2177630218 + name 1_460_KEY_CH_UP + 2177630223 + name 1_460_KEY_CH_DOWN + 2177630224 + name 1_460_KEY_AV + 2177630249 + name 1_461_KEY_0 + 2177695744 + name 1_461_KEY_1 + 2177695745 + name 1_461_KEY_2 + 2177695746 + name 1_461_KEY_3 + 2177695747 + name 1_461_KEY_4 + 2177695748 + name 1_461_KEY_5 + 2177695749 + name 1_461_KEY_6 + 2177695750 + name 1_461_KEY_7 + 2177695751 + name 1_461_KEY_8 + 2177695752 + name 1_461_KEY_9 + 2177695753 + name 1_461_KEY_POWER + 2177695754 + name 1_461_KEY_CH_UP + 2177695759 + name 1_461_KEY_CH_DOWN + 2177695760 + name 1_461_KEY_AV + 2177695785 + name 1_461_KEY_Sleep + 2177695807 + name 1_462_KEY_0 + 2177761280 + name 1_462_KEY_1 + 2177761281 + name 1_462_KEY_2 + 2177761282 + name 1_462_KEY_3 + 2177761283 + name 1_462_KEY_4 + 2177761284 + name 1_462_KEY_5 + 2177761285 + name 1_462_KEY_6 + 2177761286 + name 1_462_KEY_7 + 2177761287 + name 1_462_KEY_8 + 2177761288 + name 1_462_KEY_9 + 2177761289 + name 1_462_KEY_POWER + 2177761290 + name 1_462_KEY_CH_UP + 2177761295 + name 1_462_KEY_CH_DOWN + 2177761296 + name 1_462_CH_PREVIOUS + 2177761299 + name 1_462_KEY_AV + 2177761321 + name 1_463_KEY_0 + 2177826816 + name 1_463_KEY_1 + 2177826817 + name 1_463_KEY_2 + 2177826818 + name 1_463_KEY_3 + 2177826819 + name 1_463_KEY_4 + 2177826820 + name 1_463_KEY_5 + 2177826821 + name 1_463_KEY_6 + 2177826822 + name 1_463_KEY_7 + 2177826823 + name 1_463_KEY_8 + 2177826824 + name 1_463_KEY_9 + 2177826825 + name 1_463_KEY_POWER + 2177826826 + name 1_463_KEY_CH_UP + 2177826831 + name 1_463_KEY_CH_DOWN + 2177826832 + name 1_463_KEY_AV + 2177826857 + name 1_464_KEY_0 + 2177892352 + name 1_464_KEY_1 + 2177892353 + name 1_464_KEY_2 + 2177892354 + name 1_464_KEY_3 + 2177892355 + name 1_464_KEY_4 + 2177892356 + name 1_464_KEY_5 + 2177892357 + name 1_464_KEY_6 + 2177892358 + name 1_464_KEY_7 + 2177892359 + name 1_464_KEY_8 + 2177892360 + name 1_464_KEY_9 + 2177892361 + name 1_464_KEY_POWER + 2177892362 + name 1_464_KEY_CH_UP + 2177892367 + name 1_464_KEY_CH_DOWN + 2177892368 + name 1_465_KEY_0 + 2177957888 + name 1_465_KEY_1 + 2177957889 + name 1_465_KEY_2 + 2177957890 + name 1_465_KEY_3 + 2177957891 + name 1_465_KEY_4 + 2177957892 + name 1_465_KEY_5 + 2177957893 + name 1_465_KEY_6 + 2177957894 + name 1_465_KEY_7 + 2177957895 + name 1_465_KEY_8 + 2177957896 + name 1_465_KEY_9 + 2177957897 + name 1_465_KEY_POWER + 2177957898 + name 1_465_KEY_CH_UP + 2177957903 + name 1_465_KEY_CH_DOWN + 2177957904 + name 1_466_KEY_0 + 2178023424 + name 1_466_KEY_1 + 2178023425 + name 1_466_KEY_2 + 2178023426 + name 1_466_KEY_3 + 2178023427 + name 1_466_KEY_4 + 2178023428 + name 1_466_KEY_5 + 2178023429 + name 1_466_KEY_6 + 2178023430 + name 1_466_KEY_7 + 2178023431 + name 1_466_KEY_8 + 2178023432 + name 1_466_KEY_9 + 2178023433 + name 1_466_KEY_POWER + 2178023434 + name 1_466_KEY_CH_UP + 2178023439 + name 1_466_KEY_CH_DOWN + 2178023440 + name 1_466_KEY_AV + 2178023465 + name 1_466_KEY_Sleep + 2178023487 + name 1_467_KEY_0 + 2178088960 + name 1_467_KEY_1 + 2178088961 + name 1_467_KEY_2 + 2178088962 + name 1_467_KEY_3 + 2178088963 + name 1_467_KEY_4 + 2178088964 + name 1_467_KEY_5 + 2178088965 + name 1_467_KEY_6 + 2178088966 + name 1_467_KEY_7 + 2178088967 + name 1_467_KEY_8 + 2178088968 + name 1_467_KEY_9 + 2178088969 + name 1_467_KEY_POWER + 2178088970 + name 1_467_KEY_CH_UP + 2178088975 + name 1_467_KEY_CH_DOWN + 2178088976 + name 1_468_KEY_0 + 2178154496 + name 1_468_KEY_1 + 2178154497 + name 1_468_KEY_2 + 2178154498 + name 1_468_KEY_3 + 2178154499 + name 1_468_KEY_4 + 2178154500 + name 1_468_KEY_5 + 2178154501 + name 1_468_KEY_6 + 2178154502 + name 1_468_KEY_7 + 2178154503 + name 1_468_KEY_8 + 2178154504 + name 1_468_KEY_9 + 2178154505 + name 1_468_KEY_POWER + 2178154506 + name 1_468_KEY_CH_UP + 2178154511 + name 1_468_KEY_CH_DOWN + 2178154512 + name 1_469_KEY_0 + 2178220032 + name 1_469_KEY_1 + 2178220033 + name 1_469_KEY_2 + 2178220034 + name 1_469_KEY_3 + 2178220035 + name 1_469_KEY_4 + 2178220036 + name 1_469_KEY_5 + 2178220037 + name 1_469_KEY_6 + 2178220038 + name 1_469_KEY_7 + 2178220039 + name 1_469_KEY_8 + 2178220040 + name 1_469_KEY_9 + 2178220041 + name 1_469_KEY_POWER + 2178220042 + name 1_469_TWO_DIGITS + 2178220045 + name 1_469_KEY_CH_UP + 2178220047 + name 1_469_KEY_CH_DOWN + 2178220048 + name 1_470_KEY_0 + 2178285568 + name 1_470_KEY_1 + 2178285569 + name 1_470_KEY_2 + 2178285570 + name 1_470_KEY_3 + 2178285571 + name 1_470_KEY_4 + 2178285572 + name 1_470_KEY_5 + 2178285573 + name 1_470_KEY_6 + 2178285574 + name 1_470_KEY_7 + 2178285575 + name 1_470_KEY_8 + 2178285576 + name 1_470_KEY_9 + 2178285577 + name 1_470_KEY_POWER + 2178285578 + name 1_470_KEY_CH_UP + 2178285583 + name 1_470_KEY_CH_DOWN + 2178285584 + name 1_471_KEY_0 + 2178351104 + name 1_471_KEY_1 + 2178351105 + name 1_471_KEY_2 + 2178351106 + name 1_471_KEY_3 + 2178351107 + name 1_471_KEY_4 + 2178351108 + name 1_471_KEY_5 + 2178351109 + name 1_471_KEY_6 + 2178351110 + name 1_471_KEY_7 + 2178351111 + name 1_471_KEY_8 + 2178351112 + name 1_471_KEY_9 + 2178351113 + name 1_471_KEY_POWER + 2178351114 + name 1_471_KEY_CH_UP + 2178351119 + name 1_471_KEY_CH_DOWN + 2178351120 + name 1_471_CH_PREVIOUS + 2178351123 + name 1_471_KEY_AV + 2178351145 + name 1_472_KEY_0 + 2178416640 + name 1_472_KEY_1 + 2178416641 + name 1_472_KEY_2 + 2178416642 + name 1_472_KEY_3 + 2178416643 + name 1_472_KEY_4 + 2178416644 + name 1_472_KEY_5 + 2178416645 + name 1_472_KEY_6 + 2178416646 + name 1_472_KEY_7 + 2178416647 + name 1_472_KEY_8 + 2178416648 + name 1_472_KEY_9 + 2178416649 + name 1_472_KEY_POWER + 2178416650 + name 1_472_KEY_CH_UP + 2178416655 + name 1_472_KEY_CH_DOWN + 2178416656 + name 1_472_KEY_AV + 2178416681 + name 1_473_KEY_0 + 2178482176 + name 1_473_KEY_1 + 2178482177 + name 1_473_KEY_2 + 2178482178 + name 1_473_KEY_3 + 2178482179 + name 1_473_KEY_4 + 2178482180 + name 1_473_KEY_5 + 2178482181 + name 1_473_KEY_6 + 2178482182 + name 1_473_KEY_7 + 2178482183 + name 1_473_KEY_8 + 2178482184 + name 1_473_KEY_9 + 2178482185 + name 1_473_KEY_POWER + 2178482186 + name 1_473_KEY_CH_UP + 2178482191 + name 1_473_KEY_CH_DOWN + 2178482192 + name 1_473_KEY_AV + 2178482217 + name 1_474_KEY_0 + 2178547712 + name 1_474_KEY_1 + 2178547713 + name 1_474_KEY_2 + 2178547714 + name 1_474_KEY_3 + 2178547715 + name 1_474_KEY_4 + 2178547716 + name 1_474_KEY_5 + 2178547717 + name 1_474_KEY_6 + 2178547718 + name 1_474_KEY_7 + 2178547719 + name 1_474_KEY_8 + 2178547720 + name 1_474_KEY_9 + 2178547721 + name 1_474_KEY_POWER + 2178547722 + name 1_474_KEY_CH_UP + 2178547727 + name 1_474_KEY_CH_DOWN + 2178547728 + name 1_474_CH_PREVIOUS + 2178547731 + name 1_474_KEY_AV + 2178547753 + name 1_475_KEY_0 + 2178613248 + name 1_475_KEY_1 + 2178613249 + name 1_475_KEY_2 + 2178613250 + name 1_475_KEY_3 + 2178613251 + name 1_475_KEY_4 + 2178613252 + name 1_475_KEY_5 + 2178613253 + name 1_475_KEY_6 + 2178613254 + name 1_475_KEY_7 + 2178613255 + name 1_475_KEY_8 + 2178613256 + name 1_475_KEY_9 + 2178613257 + name 1_475_KEY_POWER + 2178613258 + name 1_475_KEY_CH_UP + 2178613263 + name 1_475_KEY_CH_DOWN + 2178613264 + name 1_475_KEY_AV + 2178613289 + name 1_476_KEY_0 + 2178678784 + name 1_476_KEY_1 + 2178678785 + name 1_476_KEY_2 + 2178678786 + name 1_476_KEY_3 + 2178678787 + name 1_476_KEY_4 + 2178678788 + name 1_476_KEY_5 + 2178678789 + name 1_476_KEY_6 + 2178678790 + name 1_476_KEY_7 + 2178678791 + name 1_476_KEY_8 + 2178678792 + name 1_476_KEY_9 + 2178678793 + name 1_476_KEY_POWER + 2178678794 + name 1_476_TWO_DIGITS + 2178678797 + name 1_476_KEY_CH_UP + 2178678799 + name 1_476_KEY_CH_DOWN + 2178678800 + name 1_476_KEY_AV + 2178678825 + name 1_478_KEY_0 + 2178809856 + name 1_478_KEY_1 + 2178809857 + name 1_478_KEY_2 + 2178809858 + name 1_478_KEY_3 + 2178809859 + name 1_478_KEY_4 + 2178809860 + name 1_478_KEY_5 + 2178809861 + name 1_478_KEY_6 + 2178809862 + name 1_478_KEY_7 + 2178809863 + name 1_478_KEY_8 + 2178809864 + name 1_478_KEY_9 + 2178809865 + name 1_478_KEY_POWER + 2178809866 + name 1_478_KEY_CH_UP + 2178809871 + name 1_478_KEY_CH_DOWN + 2178809872 + name 1_478_KEY_MUTE + 2178809873 + name 1_478_KEY_VOL_DOWN + 2178809874 + name 1_478_CH_PREVIOUS + 2178809875 + name 1_478_KEY_VOL_UP + 2178809876 + name 1_478_KEY_AV + 2178809897 + name 1_478_KEY_MENU + 2178809903 + name 1_478_KEY_MUP + 2178809904 + name 1_478_KEY_MDOWN + 2178809905 + name 1_478_KEY_MLEFT + 2178809906 + name 1_478_KEY_MRIGHT + 2178809907 + name 1_478_KEY_Sleep + 2178809919 + name 1_479_KEY_0 + 2178875392 + name 1_479_KEY_1 + 2178875393 + name 1_479_KEY_2 + 2178875394 + name 1_479_KEY_3 + 2178875395 + name 1_479_KEY_4 + 2178875396 + name 1_479_KEY_5 + 2178875397 + name 1_479_KEY_6 + 2178875398 + name 1_479_KEY_7 + 2178875399 + name 1_479_KEY_8 + 2178875400 + name 1_479_KEY_9 + 2178875401 + name 1_479_KEY_POWER + 2178875402 + name 1_479_KEY_CH_UP + 2178875407 + name 1_479_KEY_CH_DOWN + 2178875408 + name 1_479_KEY_MUTE + 2178875409 + name 1_479_KEY_VOL_DOWN + 2178875410 + name 1_479_KEY_VOL_UP + 2178875412 + name 1_480_KEY_0 + 2178940928 + name 1_480_KEY_1 + 2178940929 + name 1_480_KEY_2 + 2178940930 + name 1_480_KEY_3 + 2178940931 + name 1_480_KEY_4 + 2178940932 + name 1_480_KEY_5 + 2178940933 + name 1_480_KEY_6 + 2178940934 + name 1_480_KEY_7 + 2178940935 + name 1_480_KEY_8 + 2178940936 + name 1_480_KEY_9 + 2178940937 + name 1_480_KEY_POWER + 2178940938 + name 1_480_KEY_CH_UP + 2178940943 + name 1_480_KEY_CH_DOWN + 2178940944 + name 1_481_KEY_0 + 2179006464 + name 1_481_KEY_1 + 2179006465 + name 1_481_KEY_2 + 2179006466 + name 1_481_KEY_3 + 2179006467 + name 1_481_KEY_4 + 2179006468 + name 1_481_KEY_5 + 2179006469 + name 1_481_KEY_6 + 2179006470 + name 1_481_KEY_7 + 2179006471 + name 1_481_KEY_8 + 2179006472 + name 1_481_KEY_9 + 2179006473 + name 1_481_KEY_POWER + 2179006474 + name 1_481_TWO_DIGITS + 2179006477 + name 1_481_KEY_CH_UP + 2179006479 + name 1_481_KEY_CH_DOWN + 2179006480 + name 1_481_KEY_AV + 2179006505 + name 1_482_KEY_0 + 2179072000 + name 1_482_KEY_1 + 2179072001 + name 1_482_KEY_2 + 2179072002 + name 1_482_KEY_3 + 2179072003 + name 1_482_KEY_4 + 2179072004 + name 1_482_KEY_5 + 2179072005 + name 1_482_KEY_6 + 2179072006 + name 1_482_KEY_7 + 2179072007 + name 1_482_KEY_8 + 2179072008 + name 1_482_KEY_9 + 2179072009 + name 1_482_KEY_POWER + 2179072010 + name 1_482_KEY_CH_UP + 2179072015 + name 1_482_KEY_CH_DOWN + 2179072016 + name 1_482_CH_PREVIOUS + 2179072019 + name 1_483_KEY_0 + 2179137536 + name 1_483_KEY_1 + 2179137537 + name 1_483_KEY_2 + 2179137538 + name 1_483_KEY_3 + 2179137539 + name 1_483_KEY_4 + 2179137540 + name 1_483_KEY_5 + 2179137541 + name 1_483_KEY_6 + 2179137542 + name 1_483_KEY_7 + 2179137543 + name 1_483_KEY_8 + 2179137544 + name 1_483_KEY_9 + 2179137545 + name 1_483_KEY_POWER + 2179137546 + name 1_483_KEY_CH_UP + 2179137551 + name 1_483_KEY_CH_DOWN + 2179137552 + name 1_483_CH_PREVIOUS + 2179137555 + name 1_484_KEY_0 + 2179203072 + name 1_484_KEY_1 + 2179203073 + name 1_484_KEY_2 + 2179203074 + name 1_484_KEY_3 + 2179203075 + name 1_484_KEY_4 + 2179203076 + name 1_484_KEY_5 + 2179203077 + name 1_484_KEY_6 + 2179203078 + name 1_484_KEY_7 + 2179203079 + name 1_484_KEY_8 + 2179203080 + name 1_484_KEY_9 + 2179203081 + name 1_484_KEY_POWER + 2179203082 + name 1_484_KEY_CH_UP + 2179203087 + name 1_484_KEY_CH_DOWN + 2179203088 + name 1_485_KEY_0 + 2179268608 + name 1_485_KEY_1 + 2179268609 + name 1_485_KEY_2 + 2179268610 + name 1_485_KEY_3 + 2179268611 + name 1_485_KEY_4 + 2179268612 + name 1_485_KEY_5 + 2179268613 + name 1_485_KEY_6 + 2179268614 + name 1_485_KEY_7 + 2179268615 + name 1_485_KEY_8 + 2179268616 + name 1_485_KEY_9 + 2179268617 + name 1_485_KEY_POWER + 2179268618 + name 1_485_KEY_CH_UP + 2179268623 + name 1_485_KEY_CH_DOWN + 2179268624 + name 1_485_CH_PREVIOUS + 2179268627 + name 1_485_KEY_AV + 2179268649 + name 1_486_KEY_0 + 2179334144 + name 1_486_KEY_1 + 2179334145 + name 1_486_KEY_2 + 2179334146 + name 1_486_KEY_3 + 2179334147 + name 1_486_KEY_4 + 2179334148 + name 1_486_KEY_5 + 2179334149 + name 1_486_KEY_6 + 2179334150 + name 1_486_KEY_7 + 2179334151 + name 1_486_KEY_8 + 2179334152 + name 1_486_KEY_9 + 2179334153 + name 1_486_KEY_POWER + 2179334154 + name 1_486_KEY_CH_UP + 2179334159 + name 1_486_KEY_CH_DOWN + 2179334160 + name 1_487_KEY_0 + 2179399680 + name 1_487_KEY_1 + 2179399681 + name 1_487_KEY_2 + 2179399682 + name 1_487_KEY_3 + 2179399683 + name 1_487_KEY_4 + 2179399684 + name 1_487_KEY_5 + 2179399685 + name 1_487_KEY_6 + 2179399686 + name 1_487_KEY_7 + 2179399687 + name 1_487_KEY_8 + 2179399688 + name 1_487_KEY_9 + 2179399689 + name 1_487_KEY_POWER + 2179399690 + name 1_487_KEY_CH_UP + 2179399695 + name 1_487_KEY_CH_DOWN + 2179399696 + name 1_487_CH_PREVIOUS + 2179399699 + name 1_488_KEY_0 + 2179465216 + name 1_488_KEY_1 + 2179465217 + name 1_488_KEY_2 + 2179465218 + name 1_488_KEY_3 + 2179465219 + name 1_488_KEY_4 + 2179465220 + name 1_488_KEY_5 + 2179465221 + name 1_488_KEY_6 + 2179465222 + name 1_488_KEY_7 + 2179465223 + name 1_488_KEY_8 + 2179465224 + name 1_488_KEY_9 + 2179465225 + name 1_488_KEY_POWER + 2179465226 + name 1_488_TWO_DIGITS + 2179465229 + name 1_488_KEY_CH_UP + 2179465231 + name 1_488_KEY_CH_DOWN + 2179465232 + name 1_489_KEY_0 + 2179530752 + name 1_489_KEY_1 + 2179530753 + name 1_489_KEY_2 + 2179530754 + name 1_489_KEY_3 + 2179530755 + name 1_489_KEY_4 + 2179530756 + name 1_489_KEY_5 + 2179530757 + name 1_489_KEY_6 + 2179530758 + name 1_489_KEY_7 + 2179530759 + name 1_489_KEY_8 + 2179530760 + name 1_489_KEY_9 + 2179530761 + name 1_489_KEY_POWER + 2179530762 + name 1_489_KEY_CH_UP + 2179530767 + name 1_489_KEY_CH_DOWN + 2179530768 + name 1_489_CH_PREVIOUS + 2179530771 + name 1_490_KEY_0 + 2179596288 + name 1_490_KEY_1 + 2179596289 + name 1_490_KEY_2 + 2179596290 + name 1_490_KEY_3 + 2179596291 + name 1_490_KEY_4 + 2179596292 + name 1_490_KEY_5 + 2179596293 + name 1_490_KEY_6 + 2179596294 + name 1_490_KEY_7 + 2179596295 + name 1_490_KEY_8 + 2179596296 + name 1_490_KEY_9 + 2179596297 + name 1_490_KEY_POWER + 2179596298 + name 1_490_KEY_CH_UP + 2179596303 + name 1_490_KEY_CH_DOWN + 2179596304 + name 1_490_KEY_MUTE + 2179596305 + name 1_490_KEY_VOL_DOWN + 2179596306 + name 1_490_CH_PREVIOUS + 2179596307 + name 1_490_KEY_VOL_UP + 2179596308 + name 1_490_KEY_AV + 2179596329 + name 1_498_KEY_0 + 2180120576 + name 1_498_KEY_1 + 2180120577 + name 1_498_KEY_2 + 2180120578 + name 1_498_KEY_3 + 2180120579 + name 1_498_KEY_4 + 2180120580 + name 1_498_KEY_5 + 2180120581 + name 1_498_KEY_6 + 2180120582 + name 1_498_KEY_7 + 2180120583 + name 1_498_KEY_8 + 2180120584 + name 1_498_KEY_9 + 2180120585 + name 1_498_KEY_POWER + 2180120586 + name 1_498_KEY_CH_UP + 2180120591 + name 1_498_KEY_CH_DOWN + 2180120592 + name 1_498_KEY_MUTE + 2180120593 + name 1_498_KEY_VOL_DOWN + 2180120594 + name 1_498_CH_PREVIOUS + 2180120595 + name 1_498_KEY_VOL_UP + 2180120596 + name 1_498_KEY_MNSELECT + 2180120599 + name 1_498_KEY_EXIT + 2180120600 + name 1_498_KEY_FAV + 2180120605 + name 1_498_KEY_MUP + 2180120624 + name 1_498_KEY_MDOWN + 2180120625 + name 1_498_KEY_MLEFT + 2180120626 + name 1_498_KEY_MRIGHT + 2180120627 + name 1_499_KEY_0 + 2180186112 + name 1_499_KEY_1 + 2180186113 + name 1_499_KEY_2 + 2180186114 + name 1_499_KEY_3 + 2180186115 + name 1_499_KEY_4 + 2180186116 + name 1_499_KEY_5 + 2180186117 + name 1_499_KEY_6 + 2180186118 + name 1_499_KEY_7 + 2180186119 + name 1_499_KEY_8 + 2180186120 + name 1_499_KEY_9 + 2180186121 + name 1_499_KEY_POWER + 2180186122 + name 1_499_KEY_CH_UP + 2180186127 + name 1_499_KEY_CH_DOWN + 2180186128 + name 1_499_KEY_MUTE + 2180186129 + name 1_499_KEY_VOL_DOWN + 2180186130 + name 1_499_CH_PREVIOUS + 2180186131 + name 1_499_KEY_VOL_UP + 2180186132 + name 1_499_KEY_MNSELECT + 2180186135 + name 1_499_KEY_EXIT + 2180186136 + name 1_499_KEY_GUIDE + 2180186139 + name 1_499_KEY_MENU + 2180186159 + name 1_499_KEY_MUP + 2180186160 + name 1_499_KEY_MDOWN + 2180186161 + name 1_499_KEY_MLEFT + 2180186162 + name 1_499_KEY_MRIGHT + 2180186163 + name 1_499_KEY_DSubtitle + 2180186180 + name 1_500_KEY_0 + 2180251648 + name 1_500_KEY_1 + 2180251649 + name 1_500_KEY_2 + 2180251650 + name 1_500_KEY_3 + 2180251651 + name 1_500_KEY_4 + 2180251652 + name 1_500_KEY_5 + 2180251653 + name 1_500_KEY_6 + 2180251654 + name 1_500_KEY_7 + 2180251655 + name 1_500_KEY_8 + 2180251656 + name 1_500_KEY_9 + 2180251657 + name 1_500_KEY_POWER + 2180251658 + name 1_500_KEY_CH_UP + 2180251663 + name 1_500_KEY_CH_DOWN + 2180251664 + name 1_500_KEY_MUTE + 2180251665 + name 1_500_KEY_VOL_DOWN + 2180251666 + name 1_500_KEY_VOL_UP + 2180251668 + name 1_500_KEY_MNSELECT + 2180251671 + name 1_500_KEY_EXIT + 2180251672 + name 1_500_KEY_MENU + 2180251695 + name 1_500_KEY_MUP + 2180251696 + name 1_500_KEY_MDOWN + 2180251697 + name 1_500_KEY_MLEFT + 2180251698 + name 1_500_KEY_MRIGHT + 2180251699 + name 1_500_KEY_Sleep + 2180251711 + name 1_501_KEY_0 + 2180317184 + name 1_501_KEY_1 + 2180317185 + name 1_501_KEY_2 + 2180317186 + name 1_501_KEY_3 + 2180317187 + name 1_501_KEY_4 + 2180317188 + name 1_501_KEY_5 + 2180317189 + name 1_501_KEY_6 + 2180317190 + name 1_501_KEY_7 + 2180317191 + name 1_501_KEY_8 + 2180317192 + name 1_501_KEY_9 + 2180317193 + name 1_501_KEY_POWER + 2180317194 + name 1_501_KEY_CH_UP + 2180317199 + name 1_501_KEY_CH_DOWN + 2180317200 + name 1_501_KEY_MUTE + 2180317201 + name 1_501_KEY_VOL_DOWN + 2180317202 + name 1_501_CH_PREVIOUS + 2180317203 + name 1_501_KEY_VOL_UP + 2180317204 + name 1_501_KEY_MNSELECT + 2180317207 + name 1_501_KEY_EXIT + 2180317208 + name 1_501_KEY_GUIDE + 2180317211 + name 1_501_KEY_AV + 2180317225 + name 1_501_KEY_MENU + 2180317231 + name 1_501_KEY_MUP + 2180317232 + name 1_501_KEY_MDOWN + 2180317233 + name 1_501_KEY_MLEFT + 2180317234 + name 1_501_KEY_MRIGHT + 2180317235 + name 1_502_KEY_0 + 2180382720 + name 1_502_KEY_1 + 2180382721 + name 1_502_KEY_2 + 2180382722 + name 1_502_KEY_3 + 2180382723 + name 1_502_KEY_4 + 2180382724 + name 1_502_KEY_5 + 2180382725 + name 1_502_KEY_6 + 2180382726 + name 1_502_KEY_7 + 2180382727 + name 1_502_KEY_8 + 2180382728 + name 1_502_KEY_9 + 2180382729 + name 1_502_KEY_POWER + 2180382730 + name 1_502_KEY_MUTE + 2180382737 + name 1_502_CH_PREVIOUS + 2180382739 + name 1_502_KEY_MNSELECT + 2180382743 + name 1_502_KEY_EXIT + 2180382744 + name 1_502_KEY_MENU + 2180382767 + name 1_503_KEY_0 + 2180448256 + name 1_503_KEY_1 + 2180448257 + name 1_503_KEY_2 + 2180448258 + name 1_503_KEY_3 + 2180448259 + name 1_503_KEY_4 + 2180448260 + name 1_503_KEY_5 + 2180448261 + name 1_503_KEY_6 + 2180448262 + name 1_503_KEY_7 + 2180448263 + name 1_503_KEY_8 + 2180448264 + name 1_503_KEY_9 + 2180448265 + name 1_503_KEY_POWER + 2180448266 + name 1_503_KEY_MUTE + 2180448273 + name 1_503_CH_PREVIOUS + 2180448275 + name 1_503_KEY_MNSELECT + 2180448279 + name 1_503_KEY_GUIDE + 2180448283 + name 1_503_KEY_MENU + 2180448303 + name 1_504_KEY_0 + 2180513792 + name 1_504_KEY_1 + 2180513793 + name 1_504_KEY_2 + 2180513794 + name 1_504_KEY_3 + 2180513795 + name 1_504_KEY_4 + 2180513796 + name 1_504_KEY_5 + 2180513797 + name 1_504_KEY_6 + 2180513798 + name 1_504_KEY_7 + 2180513799 + name 1_504_KEY_8 + 2180513800 + name 1_504_KEY_9 + 2180513801 + name 1_504_KEY_POWER + 2180513802 + name 1_504_KEY_MUTE + 2180513809 + name 1_504_CH_PREVIOUS + 2180513811 + name 1_504_KEY_MNSELECT + 2180513815 + name 1_504_KEY_MENU + 2180513839 + name 1_505_KEY_0 + 2180579328 + name 1_505_KEY_1 + 2180579329 + name 1_505_KEY_2 + 2180579330 + name 1_505_KEY_3 + 2180579331 + name 1_505_KEY_4 + 2180579332 + name 1_505_KEY_5 + 2180579333 + name 1_505_KEY_6 + 2180579334 + name 1_505_KEY_7 + 2180579335 + name 1_505_KEY_8 + 2180579336 + name 1_505_KEY_9 + 2180579337 + name 1_505_KEY_POWER + 2180579338 + name 1_505_KEY_CH_UP + 2180579343 + name 1_505_KEY_CH_DOWN + 2180579344 + name 1_505_KEY_MUTE + 2180579345 + name 1_505_KEY_VOL_DOWN + 2180579346 + name 1_505_KEY_VOL_UP + 2180579348 + name 1_505_KEY_MNSELECT + 2180579351 + name 1_505_KEY_EXIT + 2180579352 + name 1_505_KEY_GUIDE + 2180579355 + name 1_505_KEY_AV + 2180579369 + name 1_505_KEY_MENU + 2180579375 + name 1_505_KEY_MUP + 2180579376 + name 1_505_KEY_MDOWN + 2180579377 + name 1_505_KEY_MLEFT + 2180579378 + name 1_505_KEY_MRIGHT + 2180579379 + name 1_505_KEY_TTOnOff + 2180579401 + name 1_506_KEY_0 + 2180644864 + name 1_506_KEY_1 + 2180644865 + name 1_506_KEY_2 + 2180644866 + name 1_506_KEY_3 + 2180644867 + name 1_506_KEY_4 + 2180644868 + name 1_506_KEY_5 + 2180644869 + name 1_506_KEY_6 + 2180644870 + name 1_506_KEY_7 + 2180644871 + name 1_506_KEY_8 + 2180644872 + name 1_506_KEY_9 + 2180644873 + name 1_506_KEY_POWER + 2180644874 + name 1_506_TWO_DIGITS + 2180644877 + name 1_506_KEY_CH_UP + 2180644879 + name 1_506_KEY_CH_DOWN + 2180644880 + name 1_507_KEY_0 + 2180710400 + name 1_507_KEY_1 + 2180710401 + name 1_507_KEY_2 + 2180710402 + name 1_507_KEY_3 + 2180710403 + name 1_507_KEY_4 + 2180710404 + name 1_507_KEY_5 + 2180710405 + name 1_507_KEY_6 + 2180710406 + name 1_507_KEY_7 + 2180710407 + name 1_507_KEY_8 + 2180710408 + name 1_507_KEY_9 + 2180710409 + name 1_507_KEY_POWER + 2180710410 + name 1_507_TWO_DIGITS + 2180710413 + name 1_507_KEY_CH_UP + 2180710415 + name 1_507_KEY_CH_DOWN + 2180710416 + name 1_507_KEY_MUP + 2180710448 + name 1_507_KEY_MDOWN + 2180710449 + name 1_508_KEY_0 + 2180775936 + name 1_508_KEY_1 + 2180775937 + name 1_508_KEY_2 + 2180775938 + name 1_508_KEY_3 + 2180775939 + name 1_508_KEY_4 + 2180775940 + name 1_508_KEY_5 + 2180775941 + name 1_508_KEY_6 + 2180775942 + name 1_508_KEY_7 + 2180775943 + name 1_508_KEY_8 + 2180775944 + name 1_508_KEY_9 + 2180775945 + name 1_508_KEY_POWER + 2180775946 + name 1_508_KEY_CH_UP + 2180775951 + name 1_508_KEY_CH_DOWN + 2180775952 + name 1_508_CH_PREVIOUS + 2180775955 + name 1_509_KEY_0 + 2180841472 + name 1_509_KEY_1 + 2180841473 + name 1_509_KEY_2 + 2180841474 + name 1_509_KEY_3 + 2180841475 + name 1_509_KEY_4 + 2180841476 + name 1_509_KEY_5 + 2180841477 + name 1_509_KEY_6 + 2180841478 + name 1_509_KEY_7 + 2180841479 + name 1_509_KEY_8 + 2180841480 + name 1_509_KEY_9 + 2180841481 + name 1_509_KEY_POWER + 2180841482 + name 1_509_KEY_CH_UP + 2180841487 + name 1_509_KEY_CH_DOWN + 2180841488 + name 1_509_KEY_MUP + 2180841520 + name 1_509_KEY_MDOWN + 2180841521 + name 1_510_KEY_0 + 2180907008 + name 1_510_KEY_1 + 2180907009 + name 1_510_KEY_2 + 2180907010 + name 1_510_KEY_3 + 2180907011 + name 1_510_KEY_4 + 2180907012 + name 1_510_KEY_5 + 2180907013 + name 1_510_KEY_6 + 2180907014 + name 1_510_KEY_7 + 2180907015 + name 1_510_KEY_8 + 2180907016 + name 1_510_KEY_9 + 2180907017 + name 1_510_KEY_POWER + 2180907018 + name 1_510_KEY_CH_UP + 2180907023 + name 1_510_KEY_CH_DOWN + 2180907024 + name 1_510_KEY_MNSELECT + 2180907031 + name 1_510_KEY_MENU + 2180907055 + name 1_510_KEY_MUP + 2180907056 + name 1_510_KEY_MDOWN + 2180907057 + name 1_510_KEY_MLEFT + 2180907058 + name 1_510_KEY_MRIGHT + 2180907059 + name 1_511_KEY_0 + 2180972544 + name 1_511_KEY_1 + 2180972545 + name 1_511_KEY_2 + 2180972546 + name 1_511_KEY_3 + 2180972547 + name 1_511_KEY_4 + 2180972548 + name 1_511_KEY_5 + 2180972549 + name 1_511_KEY_6 + 2180972550 + name 1_511_KEY_7 + 2180972551 + name 1_511_KEY_8 + 2180972552 + name 1_511_KEY_9 + 2180972553 + name 1_511_KEY_POWER + 2180972554 + name 1_511_KEY_CH_UP + 2180972559 + name 1_511_KEY_CH_DOWN + 2180972560 + name 1_511_KEY_MNSELECT + 2180972567 + name 1_511_KEY_MENU + 2180972591 + name 1_511_KEY_MUP + 2180972592 + name 1_511_KEY_MDOWN + 2180972593 + name 1_511_KEY_MLEFT + 2180972594 + name 1_511_KEY_MRIGHT + 2180972595 + name 1_512_KEY_0 + 2181038080 + name 1_512_KEY_1 + 2181038081 + name 1_512_KEY_2 + 2181038082 + name 1_512_KEY_3 + 2181038083 + name 1_512_KEY_4 + 2181038084 + name 1_512_KEY_5 + 2181038085 + name 1_512_KEY_6 + 2181038086 + name 1_512_KEY_7 + 2181038087 + name 1_512_KEY_8 + 2181038088 + name 1_512_KEY_9 + 2181038089 + name 1_512_KEY_POWER + 2181038090 + name 1_512_TWO_DIGITS + 2181038093 + name 1_512_KEY_CH_UP + 2181038095 + name 1_512_KEY_CH_DOWN + 2181038096 + name 1_512_KEY_MNSELECT + 2181038103 + name 1_512_KEY_BLUE + 2181038115 + name 1_512_KEY_GREEN + 2181038116 + name 1_512_KEY_RED + 2181038117 + name 1_512_KEY_YELLOW + 2181038118 + name 1_512_KEY_MENU + 2181038127 + name 1_512_KEY_MUP + 2181038128 + name 1_512_KEY_MDOWN + 2181038129 + name 1_512_KEY_MLEFT + 2181038130 + name 1_512_KEY_MRIGHT + 2181038131 + name 1_512_KEY_On + 2181038157 + name 1_513_KEY_0 + 2181103616 + name 1_513_KEY_1 + 2181103617 + name 1_513_KEY_2 + 2181103618 + name 1_513_KEY_3 + 2181103619 + name 1_513_KEY_4 + 2181103620 + name 1_513_KEY_5 + 2181103621 + name 1_513_KEY_6 + 2181103622 + name 1_513_KEY_7 + 2181103623 + name 1_513_KEY_8 + 2181103624 + name 1_513_KEY_9 + 2181103625 + name 1_513_KEY_POWER + 2181103626 + name 1_513_KEY_CH_UP + 2181103631 + name 1_513_KEY_CH_DOWN + 2181103632 + name 1_513_KEY_MNSELECT + 2181103639 + name 1_513_KEY_MENU + 2181103663 + name 1_514_KEY_0 + 2181169152 + name 1_514_KEY_1 + 2181169153 + name 1_514_KEY_2 + 2181169154 + name 1_514_KEY_3 + 2181169155 + name 1_514_KEY_4 + 2181169156 + name 1_514_KEY_5 + 2181169157 + name 1_514_KEY_6 + 2181169158 + name 1_514_KEY_7 + 2181169159 + name 1_514_KEY_8 + 2181169160 + name 1_514_KEY_9 + 2181169161 + name 1_514_KEY_POWER + 2181169162 + name 1_514_TWO_DIGITS + 2181169165 + name 1_514_KEY_CH_UP + 2181169167 + name 1_514_KEY_CH_DOWN + 2181169168 + name 1_514_CH_PREVIOUS + 2181169171 + name 1_514_KEY_MNSELECT + 2181169175 + name 1_514_KEY_MENU + 2181169199 + name 1_514_KEY_MUP + 2181169200 + name 1_514_KEY_MDOWN + 2181169201 + name 1_514_KEY_MLEFT + 2181169202 + name 1_514_KEY_MRIGHT + 2181169203 + name 1_515_KEY_0 + 2181234688 + name 1_515_KEY_1 + 2181234689 + name 1_515_KEY_2 + 2181234690 + name 1_515_KEY_3 + 2181234691 + name 1_515_KEY_4 + 2181234692 + name 1_515_KEY_5 + 2181234693 + name 1_515_KEY_6 + 2181234694 + name 1_515_KEY_7 + 2181234695 + name 1_515_KEY_8 + 2181234696 + name 1_515_KEY_9 + 2181234697 + name 1_515_KEY_POWER + 2181234698 + name 1_515_TWO_DIGITS + 2181234701 + name 1_515_KEY_CH_UP + 2181234703 + name 1_515_KEY_CH_DOWN + 2181234704 + name 1_515_CH_PREVIOUS + 2181234707 + name 1_515_KEY_MNSELECT + 2181234711 + name 1_515_KEY_MENU + 2181234735 + name 1_515_KEY_MUP + 2181234736 + name 1_515_KEY_MDOWN + 2181234737 + name 1_515_KEY_MLEFT + 2181234738 + name 1_515_KEY_MRIGHT + 2181234739 + name 1_516_KEY_0 + 2181300224 + name 1_516_KEY_1 + 2181300225 + name 1_516_KEY_2 + 2181300226 + name 1_516_KEY_3 + 2181300227 + name 1_516_KEY_4 + 2181300228 + name 1_516_KEY_5 + 2181300229 + name 1_516_KEY_6 + 2181300230 + name 1_516_KEY_7 + 2181300231 + name 1_516_KEY_8 + 2181300232 + name 1_516_KEY_9 + 2181300233 + name 1_516_KEY_POWER + 2181300234 + name 1_516_KEY_CH_UP + 2181300239 + name 1_516_KEY_CH_DOWN + 2181300240 + name 1_516_KEY_MNSELECT + 2181300247 + name 1_516_KEY_GUIDE + 2181300251 + name 1_516_KEY_BLUE + 2181300259 + name 1_516_KEY_GREEN + 2181300260 + name 1_516_KEY_RED + 2181300261 + name 1_516_KEY_YELLOW + 2181300262 + name 1_516_KEY_MENU + 2181300271 + name 1_516_KEY_MUP + 2181300272 + name 1_516_KEY_MDOWN + 2181300273 + name 1_516_KEY_MLEFT + 2181300274 + name 1_516_KEY_MRIGHT + 2181300275 + name 1_517_KEY_0 + 2181365760 + name 1_517_KEY_1 + 2181365761 + name 1_517_KEY_2 + 2181365762 + name 1_517_KEY_3 + 2181365763 + name 1_517_KEY_4 + 2181365764 + name 1_517_KEY_5 + 2181365765 + name 1_517_KEY_6 + 2181365766 + name 1_517_KEY_7 + 2181365767 + name 1_517_KEY_8 + 2181365768 + name 1_517_KEY_9 + 2181365769 + name 1_517_KEY_POWER + 2181365770 + name 1_517_KEY_CH_UP + 2181365775 + name 1_517_KEY_CH_DOWN + 2181365776 + name 1_517_KEY_MNSELECT + 2181365783 + name 1_517_KEY_GUIDE + 2181365787 + name 1_517_KEY_BLUE + 2181365795 + name 1_517_KEY_GREEN + 2181365796 + name 1_517_KEY_RED + 2181365797 + name 1_517_KEY_YELLOW + 2181365798 + name 1_517_KEY_MENU + 2181365807 + name 1_517_KEY_MUP + 2181365808 + name 1_517_KEY_MDOWN + 2181365809 + name 1_517_KEY_MLEFT + 2181365810 + name 1_517_KEY_MRIGHT + 2181365811 + name 1_518_KEY_0 + 2181431296 + name 1_518_KEY_1 + 2181431297 + name 1_518_KEY_2 + 2181431298 + name 1_518_KEY_3 + 2181431299 + name 1_518_KEY_4 + 2181431300 + name 1_518_KEY_5 + 2181431301 + name 1_518_KEY_6 + 2181431302 + name 1_518_KEY_7 + 2181431303 + name 1_518_KEY_8 + 2181431304 + name 1_518_KEY_9 + 2181431305 + name 1_518_KEY_POWER + 2181431306 + name 1_518_KEY_CH_UP + 2181431311 + name 1_518_KEY_CH_DOWN + 2181431312 + name 1_518_CH_PREVIOUS + 2181431315 + name 1_519_KEY_0 + 2181496832 + name 1_519_KEY_1 + 2181496833 + name 1_519_KEY_2 + 2181496834 + name 1_519_KEY_3 + 2181496835 + name 1_519_KEY_4 + 2181496836 + name 1_519_KEY_5 + 2181496837 + name 1_519_KEY_6 + 2181496838 + name 1_519_KEY_7 + 2181496839 + name 1_519_KEY_8 + 2181496840 + name 1_519_KEY_9 + 2181496841 + name 1_519_KEY_POWER + 2181496842 + name 1_519_KEY_CH_UP + 2181496847 + name 1_519_KEY_CH_DOWN + 2181496848 + name 1_519_CH_PREVIOUS + 2181496851 + name 1_519_KEY_MNSELECT + 2181496855 + name 1_519_KEY_GUIDE + 2181496859 + name 1_519_KEY_MENU + 2181496879 + name 1_519_KEY_MUP + 2181496880 + name 1_519_KEY_MDOWN + 2181496881 + name 1_519_KEY_MLEFT + 2181496882 + name 1_519_KEY_MRIGHT + 2181496883 + name 1_520_KEY_0 + 2181562368 + name 1_520_KEY_1 + 2181562369 + name 1_520_KEY_2 + 2181562370 + name 1_520_KEY_3 + 2181562371 + name 1_520_KEY_4 + 2181562372 + name 1_520_KEY_5 + 2181562373 + name 1_520_KEY_6 + 2181562374 + name 1_520_KEY_7 + 2181562375 + name 1_520_KEY_8 + 2181562376 + name 1_520_KEY_9 + 2181562377 + name 1_520_KEY_POWER + 2181562378 + name 1_520_KEY_CH_UP + 2181562383 + name 1_520_KEY_CH_DOWN + 2181562384 + name 1_520_CH_PREVIOUS + 2181562387 + name 1_520_KEY_MNSELECT + 2181562391 + name 1_520_KEY_GUIDE + 2181562395 + name 1_520_KEY_BLUE + 2181562403 + name 1_520_KEY_GREEN + 2181562404 + name 1_520_KEY_RED + 2181562405 + name 1_520_KEY_YELLOW + 2181562406 + name 1_520_KEY_MENU + 2181562415 + name 1_520_KEY_MUP + 2181562416 + name 1_520_KEY_MDOWN + 2181562417 + name 1_520_KEY_MLEFT + 2181562418 + name 1_520_KEY_MRIGHT + 2181562419 + name 1_520_KEY_On + 2181562445 + name 1_521_KEY_0 + 2181627904 + name 1_521_KEY_1 + 2181627905 + name 1_521_KEY_2 + 2181627906 + name 1_521_KEY_3 + 2181627907 + name 1_521_KEY_4 + 2181627908 + name 1_521_KEY_5 + 2181627909 + name 1_521_KEY_6 + 2181627910 + name 1_521_KEY_7 + 2181627911 + name 1_521_KEY_8 + 2181627912 + name 1_521_KEY_9 + 2181627913 + name 1_521_KEY_POWER + 2181627914 + name 1_521_KEY_CH_UP + 2181627919 + name 1_521_KEY_CH_DOWN + 2181627920 + name 1_521_CH_PREVIOUS + 2181627923 + name 1_521_KEY_MNSELECT + 2181627927 + name 1_521_KEY_GUIDE + 2181627931 + name 1_521_KEY_MENU + 2181627951 + name 1_521_KEY_MUP + 2181627952 + name 1_521_KEY_MDOWN + 2181627953 + name 1_521_KEY_MLEFT + 2181627954 + name 1_521_KEY_MRIGHT + 2181627955 + name 1_522_KEY_0 + 2181693440 + name 1_522_KEY_1 + 2181693441 + name 1_522_KEY_2 + 2181693442 + name 1_522_KEY_3 + 2181693443 + name 1_522_KEY_4 + 2181693444 + name 1_522_KEY_5 + 2181693445 + name 1_522_KEY_6 + 2181693446 + name 1_522_KEY_7 + 2181693447 + name 1_522_KEY_8 + 2181693448 + name 1_522_KEY_9 + 2181693449 + name 1_522_KEY_POWER + 2181693450 + name 1_522_KEY_CH_UP + 2181693455 + name 1_522_KEY_CH_DOWN + 2181693456 + name 1_522_CH_PREVIOUS + 2181693459 + name 1_522_KEY_MNSELECT + 2181693463 + name 1_522_KEY_GUIDE + 2181693467 + name 1_522_KEY_BLUE + 2181693475 + name 1_522_KEY_GREEN + 2181693476 + name 1_522_KEY_RED + 2181693477 + name 1_522_KEY_YELLOW + 2181693478 + name 1_522_KEY_MENU + 2181693487 + name 1_522_KEY_MUP + 2181693488 + name 1_522_KEY_MDOWN + 2181693489 + name 1_522_KEY_MLEFT + 2181693490 + name 1_522_KEY_MRIGHT + 2181693491 + name 1_523_KEY_0 + 2181758976 + name 1_523_KEY_1 + 2181758977 + name 1_523_KEY_2 + 2181758978 + name 1_523_KEY_3 + 2181758979 + name 1_523_KEY_4 + 2181758980 + name 1_523_KEY_5 + 2181758981 + name 1_523_KEY_6 + 2181758982 + name 1_523_KEY_7 + 2181758983 + name 1_523_KEY_8 + 2181758984 + name 1_523_KEY_9 + 2181758985 + name 1_523_KEY_POWER + 2181758986 + name 1_523_KEY_CH_UP + 2181758991 + name 1_523_KEY_CH_DOWN + 2181758992 + name 1_523_KEY_MUTE + 2181758993 + name 1_523_KEY_VOL_DOWN + 2181758994 + name 1_523_KEY_VOL_UP + 2181758996 + name 1_523_KEY_MNSELECT + 2181758999 + name 1_523_KEY_EXIT + 2181759000 + name 1_523_KEY_AV + 2181759017 + name 1_523_KEY_MENU + 2181759023 + name 1_523_KEY_MUP + 2181759024 + name 1_523_KEY_MDOWN + 2181759025 + name 1_523_KEY_MLEFT + 2181759026 + name 1_523_KEY_MRIGHT + 2181759027 + name 1_524_KEY_0 + 2181824512 + name 1_524_KEY_1 + 2181824513 + name 1_524_KEY_2 + 2181824514 + name 1_524_KEY_3 + 2181824515 + name 1_524_KEY_4 + 2181824516 + name 1_524_KEY_5 + 2181824517 + name 1_524_KEY_6 + 2181824518 + name 1_524_KEY_7 + 2181824519 + name 1_524_KEY_8 + 2181824520 + name 1_524_KEY_9 + 2181824521 + name 1_524_KEY_POWER + 2181824522 + name 1_524_KEY_CH_UP + 2181824527 + name 1_524_KEY_CH_DOWN + 2181824528 + name 1_524_KEY_MUTE + 2181824529 + name 1_524_KEY_VOL_DOWN + 2181824530 + name 1_524_KEY_VOL_UP + 2181824532 + name 1_524_KEY_MNSELECT + 2181824535 + name 1_524_KEY_EXIT + 2181824536 + name 1_524_KEY_AV + 2181824553 + name 1_524_KEY_MENU + 2181824559 + name 1_524_KEY_MUP + 2181824560 + name 1_524_KEY_MDOWN + 2181824561 + name 1_524_KEY_MLEFT + 2181824562 + name 1_524_KEY_MRIGHT + 2181824563 + name 1_525_KEY_0 + 2181890048 + name 1_525_KEY_1 + 2181890049 + name 1_525_KEY_2 + 2181890050 + name 1_525_KEY_3 + 2181890051 + name 1_525_KEY_4 + 2181890052 + name 1_525_KEY_5 + 2181890053 + name 1_525_KEY_6 + 2181890054 + name 1_525_KEY_7 + 2181890055 + name 1_525_KEY_8 + 2181890056 + name 1_525_KEY_9 + 2181890057 + name 1_525_KEY_POWER + 2181890058 + name 1_525_KEY_CH_UP + 2181890063 + name 1_525_KEY_CH_DOWN + 2181890064 + name 1_525_KEY_MUTE + 2181890065 + name 1_525_KEY_MNSELECT + 2181890071 + name 1_525_KEY_EXIT + 2181890072 + name 1_525_KEY_MENU + 2181890095 + name 1_525_KEY_MUP + 2181890096 + name 1_525_KEY_MDOWN + 2181890097 + name 1_526_KEY_0 + 2181955584 + name 1_526_KEY_1 + 2181955585 + name 1_526_KEY_2 + 2181955586 + name 1_526_KEY_3 + 2181955587 + name 1_526_KEY_4 + 2181955588 + name 1_526_KEY_5 + 2181955589 + name 1_526_KEY_6 + 2181955590 + name 1_526_KEY_7 + 2181955591 + name 1_526_KEY_8 + 2181955592 + name 1_526_KEY_9 + 2181955593 + name 1_526_KEY_POWER + 2181955594 + name 1_526_KEY_CH_UP + 2181955599 + name 1_526_KEY_CH_DOWN + 2181955600 + name 1_526_KEY_MUTE + 2181955601 + name 1_526_KEY_VOL_DOWN + 2181955602 + name 1_526_KEY_VOL_UP + 2181955604 + name 1_526_KEY_MNSELECT + 2181955607 + name 1_526_KEY_EXIT + 2181955608 + name 1_526_KEY_AV + 2181955625 + name 1_526_KEY_MENU + 2181955631 + name 1_526_KEY_MUP + 2181955632 + name 1_526_KEY_MDOWN + 2181955633 + name 1_526_KEY_MLEFT + 2181955634 + name 1_526_KEY_MRIGHT + 2181955635 + name 1_527_KEY_0 + 2182021120 + name 1_527_KEY_1 + 2182021121 + name 1_527_KEY_2 + 2182021122 + name 1_527_KEY_3 + 2182021123 + name 1_527_KEY_4 + 2182021124 + name 1_527_KEY_5 + 2182021125 + name 1_527_KEY_6 + 2182021126 + name 1_527_KEY_7 + 2182021127 + name 1_527_KEY_8 + 2182021128 + name 1_527_KEY_9 + 2182021129 + name 1_527_KEY_POWER + 2182021130 + name 1_527_KEY_CH_UP + 2182021135 + name 1_527_KEY_CH_DOWN + 2182021136 + name 1_527_KEY_MUTE + 2182021137 + name 1_527_KEY_VOL_DOWN + 2182021138 + name 1_527_KEY_VOL_UP + 2182021140 + name 1_527_KEY_MNSELECT + 2182021143 + name 1_527_KEY_EXIT + 2182021144 + name 1_527_KEY_AV + 2182021161 + name 1_527_KEY_MENU + 2182021167 + name 1_527_KEY_MUP + 2182021168 + name 1_527_KEY_MDOWN + 2182021169 + name 1_527_KEY_MLEFT + 2182021170 + name 1_527_KEY_MRIGHT + 2182021171 + name 1_528_KEY_0 + 2182086656 + name 1_528_KEY_1 + 2182086657 + name 1_528_KEY_2 + 2182086658 + name 1_528_KEY_3 + 2182086659 + name 1_528_KEY_4 + 2182086660 + name 1_528_KEY_5 + 2182086661 + name 1_528_KEY_6 + 2182086662 + name 1_528_KEY_7 + 2182086663 + name 1_528_KEY_8 + 2182086664 + name 1_528_KEY_9 + 2182086665 + name 1_528_KEY_POWER + 2182086666 + name 1_528_KEY_CH_UP + 2182086671 + name 1_528_KEY_CH_DOWN + 2182086672 + name 1_528_KEY_MUTE + 2182086673 + name 1_528_KEY_MNSELECT + 2182086679 + name 1_528_KEY_EXIT + 2182086680 + name 1_528_KEY_AV + 2182086697 + name 1_528_KEY_MENU + 2182086703 + name 1_528_KEY_MUP + 2182086704 + name 1_528_KEY_MDOWN + 2182086705 + name 1_528_KEY_MLEFT + 2182086706 + name 1_528_KEY_MRIGHT + 2182086707 + name 1_529_KEY_0 + 2182152192 + name 1_529_KEY_1 + 2182152193 + name 1_529_KEY_2 + 2182152194 + name 1_529_KEY_3 + 2182152195 + name 1_529_KEY_4 + 2182152196 + name 1_529_KEY_5 + 2182152197 + name 1_529_KEY_6 + 2182152198 + name 1_529_KEY_7 + 2182152199 + name 1_529_KEY_8 + 2182152200 + name 1_529_KEY_9 + 2182152201 + name 1_529_KEY_POWER + 2182152202 + name 1_529_KEY_CH_UP + 2182152207 + name 1_529_KEY_CH_DOWN + 2182152208 + name 1_529_KEY_MUTE + 2182152209 + name 1_529_KEY_VOL_DOWN + 2182152210 + name 1_529_KEY_VOL_UP + 2182152212 + name 1_529_KEY_MNSELECT + 2182152215 + name 1_529_KEY_EXIT + 2182152216 + name 1_529_KEY_AV + 2182152233 + name 1_529_KEY_MENU + 2182152239 + name 1_529_KEY_MUP + 2182152240 + name 1_529_KEY_MDOWN + 2182152241 + name 1_529_KEY_MLEFT + 2182152242 + name 1_529_KEY_MRIGHT + 2182152243 + name 1_530_KEY_0 + 2182217728 + name 1_530_KEY_1 + 2182217729 + name 1_530_KEY_2 + 2182217730 + name 1_530_KEY_3 + 2182217731 + name 1_530_KEY_4 + 2182217732 + name 1_530_KEY_5 + 2182217733 + name 1_530_KEY_6 + 2182217734 + name 1_530_KEY_7 + 2182217735 + name 1_530_KEY_8 + 2182217736 + name 1_530_KEY_9 + 2182217737 + name 1_530_KEY_POWER + 2182217738 + name 1_530_KEY_CH_UP + 2182217743 + name 1_530_KEY_CH_DOWN + 2182217744 + name 1_530_KEY_MUTE + 2182217745 + name 1_530_KEY_MNSELECT + 2182217751 + name 1_530_KEY_AV + 2182217769 + name 1_530_KEY_MUP + 2182217776 + name 1_530_KEY_MDOWN + 2182217777 + name 1_530_KEY_MLEFT + 2182217778 + name 1_530_KEY_MRIGHT + 2182217779 + name 1_531_KEY_0 + 2182283264 + name 1_531_KEY_1 + 2182283265 + name 1_531_KEY_2 + 2182283266 + name 1_531_KEY_3 + 2182283267 + name 1_531_KEY_4 + 2182283268 + name 1_531_KEY_5 + 2182283269 + name 1_531_KEY_6 + 2182283270 + name 1_531_KEY_7 + 2182283271 + name 1_531_KEY_8 + 2182283272 + name 1_531_KEY_9 + 2182283273 + name 1_531_KEY_POWER + 2182283274 + name 1_531_KEY_CH_UP + 2182283279 + name 1_531_KEY_CH_DOWN + 2182283280 + name 1_531_KEY_MUTE + 2182283281 + name 1_531_KEY_VOL_DOWN + 2182283282 + name 1_531_KEY_VOL_UP + 2182283284 + name 1_531_KEY_MNSELECT + 2182283287 + name 1_531_KEY_EXIT + 2182283288 + name 1_531_KEY_AV + 2182283305 + name 1_531_KEY_MENU + 2182283311 + name 1_531_KEY_MUP + 2182283312 + name 1_531_KEY_MDOWN + 2182283313 + name 1_531_KEY_MLEFT + 2182283314 + name 1_531_KEY_MRIGHT + 2182283315 + name 1_532_KEY_0 + 2182348800 + name 1_532_KEY_1 + 2182348801 + name 1_532_KEY_2 + 2182348802 + name 1_532_KEY_3 + 2182348803 + name 1_532_KEY_4 + 2182348804 + name 1_532_KEY_5 + 2182348805 + name 1_532_KEY_6 + 2182348806 + name 1_532_KEY_7 + 2182348807 + name 1_532_KEY_8 + 2182348808 + name 1_532_KEY_9 + 2182348809 + name 1_532_KEY_POWER + 2182348810 + name 1_532_KEY_CH_UP + 2182348815 + name 1_532_KEY_CH_DOWN + 2182348816 + name 1_532_KEY_MUTE + 2182348817 + name 1_532_KEY_MNSELECT + 2182348823 + name 1_532_KEY_EXIT + 2182348824 + name 1_532_KEY_AV + 2182348841 + name 1_532_KEY_MENU + 2182348847 + name 1_532_KEY_MUP + 2182348848 + name 1_532_KEY_MDOWN + 2182348849 + name 1_533_KEY_0 + 2182414336 + name 1_533_KEY_1 + 2182414337 + name 1_533_KEY_2 + 2182414338 + name 1_533_KEY_3 + 2182414339 + name 1_533_KEY_4 + 2182414340 + name 1_533_KEY_5 + 2182414341 + name 1_533_KEY_6 + 2182414342 + name 1_533_KEY_7 + 2182414343 + name 1_533_KEY_8 + 2182414344 + name 1_533_KEY_9 + 2182414345 + name 1_533_KEY_POWER + 2182414346 + name 1_533_KEY_CH_UP + 2182414351 + name 1_533_KEY_CH_DOWN + 2182414352 + name 1_533_KEY_EXIT + 2182414360 + name 1_533_KEY_AV + 2182414377 + name 1_533_KEY_MENU + 2182414383 + name 1_533_KEY_MUP + 2182414384 + name 1_533_KEY_MDOWN + 2182414385 + name 1_533_KEY_MLEFT + 2182414386 + name 1_533_KEY_MRIGHT + 2182414387 + name 1_534_KEY_0 + 2182479872 + name 1_534_KEY_1 + 2182479873 + name 1_534_KEY_2 + 2182479874 + name 1_534_KEY_3 + 2182479875 + name 1_534_KEY_4 + 2182479876 + name 1_534_KEY_5 + 2182479877 + name 1_534_KEY_6 + 2182479878 + name 1_534_KEY_7 + 2182479879 + name 1_534_KEY_8 + 2182479880 + name 1_534_KEY_9 + 2182479881 + name 1_534_KEY_POWER + 2182479882 + name 1_534_KEY_CH_UP + 2182479887 + name 1_534_KEY_CH_DOWN + 2182479888 + name 1_534_KEY_EXIT + 2182479896 + name 1_534_KEY_AV + 2182479913 + name 1_534_KEY_MENU + 2182479919 + name 1_535_KEY_0 + 2182545408 + name 1_535_KEY_1 + 2182545409 + name 1_535_KEY_2 + 2182545410 + name 1_535_KEY_3 + 2182545411 + name 1_535_KEY_4 + 2182545412 + name 1_535_KEY_5 + 2182545413 + name 1_535_KEY_6 + 2182545414 + name 1_535_KEY_7 + 2182545415 + name 1_535_KEY_8 + 2182545416 + name 1_535_KEY_9 + 2182545417 + name 1_535_KEY_POWER + 2182545418 + name 1_535_KEY_CH_UP + 2182545423 + name 1_535_KEY_CH_DOWN + 2182545424 + name 1_535_KEY_MUTE + 2182545425 + name 1_535_KEY_MNSELECT + 2182545431 + name 1_535_KEY_AV + 2182545449 + name 1_535_KEY_MUP + 2182545456 + name 1_535_KEY_MDOWN + 2182545457 + name 1_536_KEY_0 + 2182610944 + name 1_536_KEY_1 + 2182610945 + name 1_536_KEY_2 + 2182610946 + name 1_536_KEY_3 + 2182610947 + name 1_536_KEY_4 + 2182610948 + name 1_536_KEY_5 + 2182610949 + name 1_536_KEY_6 + 2182610950 + name 1_536_KEY_7 + 2182610951 + name 1_536_KEY_8 + 2182610952 + name 1_536_KEY_9 + 2182610953 + name 1_536_KEY_POWER + 2182610954 + name 1_536_KEY_CH_UP + 2182610959 + name 1_536_KEY_CH_DOWN + 2182610960 + name 1_536_KEY_MUTE + 2182610961 + name 1_536_KEY_MNSELECT + 2182610967 + name 1_536_KEY_AV + 2182610985 + name 1_536_KEY_MUP + 2182610992 + name 1_536_KEY_MDOWN + 2182610993 + name 1_537_KEY_0 + 2182676480 + name 1_537_KEY_1 + 2182676481 + name 1_537_KEY_2 + 2182676482 + name 1_537_KEY_3 + 2182676483 + name 1_537_KEY_4 + 2182676484 + name 1_537_KEY_5 + 2182676485 + name 1_537_KEY_6 + 2182676486 + name 1_537_KEY_7 + 2182676487 + name 1_537_KEY_8 + 2182676488 + name 1_537_KEY_9 + 2182676489 + name 1_537_KEY_POWER + 2182676490 + name 1_537_KEY_CH_UP + 2182676495 + name 1_537_KEY_CH_DOWN + 2182676496 + name 1_537_KEY_MNSELECT + 2182676503 + name 1_537_KEY_MENU + 2182676527 + name 1_537_KEY_MLEFT + 2182676530 + name 1_537_KEY_MRIGHT + 2182676531 + name 1_538_KEY_0 + 2182742016 + name 1_538_KEY_1 + 2182742017 + name 1_538_KEY_2 + 2182742018 + name 1_538_KEY_3 + 2182742019 + name 1_538_KEY_4 + 2182742020 + name 1_538_KEY_5 + 2182742021 + name 1_538_KEY_6 + 2182742022 + name 1_538_KEY_7 + 2182742023 + name 1_538_KEY_8 + 2182742024 + name 1_538_KEY_9 + 2182742025 + name 1_538_KEY_POWER + 2182742026 + name 1_538_KEY_CH_UP + 2182742031 + name 1_538_KEY_CH_DOWN + 2182742032 + name 1_538_KEY_MUTE + 2182742033 + name 1_538_KEY_MNSELECT + 2182742039 + name 1_538_KEY_AV + 2182742057 + name 1_538_KEY_MLEFT + 2182742066 + name 1_538_KEY_MRIGHT + 2182742067 + name 1_539_KEY_0 + 2182807552 + name 1_539_KEY_1 + 2182807553 + name 1_539_KEY_2 + 2182807554 + name 1_539_KEY_3 + 2182807555 + name 1_539_KEY_4 + 2182807556 + name 1_539_KEY_5 + 2182807557 + name 1_539_KEY_6 + 2182807558 + name 1_539_KEY_7 + 2182807559 + name 1_539_KEY_8 + 2182807560 + name 1_539_KEY_9 + 2182807561 + name 1_539_KEY_POWER + 2182807562 + name 1_539_KEY_CH_UP + 2182807567 + name 1_539_KEY_CH_DOWN + 2182807568 + name 1_539_KEY_MNSELECT + 2182807575 + name 1_539_KEY_MENU + 2182807599 + name 1_539_KEY_MUP + 2182807600 + name 1_539_KEY_MDOWN + 2182807601 + name 1_539_KEY_MLEFT + 2182807602 + name 1_539_KEY_MRIGHT + 2182807603 + name 1_539_KEY_On + 2182807629 + name 1_540_KEY_0 + 2182873088 + name 1_540_KEY_1 + 2182873089 + name 1_540_KEY_2 + 2182873090 + name 1_540_KEY_3 + 2182873091 + name 1_540_KEY_4 + 2182873092 + name 1_540_KEY_5 + 2182873093 + name 1_540_KEY_6 + 2182873094 + name 1_540_KEY_7 + 2182873095 + name 1_540_KEY_8 + 2182873096 + name 1_540_KEY_9 + 2182873097 + name 1_540_KEY_POWER + 2182873098 + name 1_540_KEY_CH_UP + 2182873103 + name 1_540_KEY_CH_DOWN + 2182873104 + name 1_540_KEY_MNSELECT + 2182873111 + name 1_541_KEY_0 + 2182938624 + name 1_541_KEY_1 + 2182938625 + name 1_541_KEY_2 + 2182938626 + name 1_541_KEY_3 + 2182938627 + name 1_541_KEY_4 + 2182938628 + name 1_541_KEY_5 + 2182938629 + name 1_541_KEY_6 + 2182938630 + name 1_541_KEY_7 + 2182938631 + name 1_541_KEY_8 + 2182938632 + name 1_541_KEY_9 + 2182938633 + name 1_541_KEY_POWER + 2182938634 + name 1_541_KEY_CH_UP + 2182938639 + name 1_541_KEY_CH_DOWN + 2182938640 + name 1_542_KEY_0 + 2183004160 + name 1_542_KEY_1 + 2183004161 + name 1_542_KEY_2 + 2183004162 + name 1_542_KEY_3 + 2183004163 + name 1_542_KEY_4 + 2183004164 + name 1_542_KEY_5 + 2183004165 + name 1_542_KEY_6 + 2183004166 + name 1_542_KEY_7 + 2183004167 + name 1_542_KEY_8 + 2183004168 + name 1_542_KEY_9 + 2183004169 + name 1_542_KEY_POWER + 2183004170 + name 1_542_KEY_CH_UP + 2183004175 + name 1_542_KEY_CH_DOWN + 2183004176 + name 1_542_KEY_MNSELECT + 2183004183 + name 1_542_KEY_MLEFT + 2183004210 + name 1_542_KEY_MRIGHT + 2183004211 + name 1_543_KEY_0 + 2183069696 + name 1_543_KEY_1 + 2183069697 + name 1_543_KEY_2 + 2183069698 + name 1_543_KEY_3 + 2183069699 + name 1_543_KEY_4 + 2183069700 + name 1_543_KEY_5 + 2183069701 + name 1_543_KEY_6 + 2183069702 + name 1_543_KEY_7 + 2183069703 + name 1_543_KEY_8 + 2183069704 + name 1_543_KEY_9 + 2183069705 + name 1_543_KEY_POWER + 2183069706 + name 1_543_KEY_CH_UP + 2183069711 + name 1_543_KEY_CH_DOWN + 2183069712 + name 1_543_KEY_MUTE + 2183069713 + name 1_543_KEY_VOL_DOWN + 2183069714 + name 1_543_KEY_VOL_UP + 2183069716 + name 1_543_KEY_MNSELECT + 2183069719 + name 1_543_KEY_EXIT + 2183069720 + name 1_543_KEY_AV + 2183069737 + name 1_543_KEY_MENU + 2183069743 + name 1_543_KEY_MUP + 2183069744 + name 1_543_KEY_MDOWN + 2183069745 + name 1_543_KEY_MLEFT + 2183069746 + name 1_543_KEY_MRIGHT + 2183069747 + name 1_544_KEY_0 + 2183135232 + name 1_544_KEY_1 + 2183135233 + name 1_544_KEY_2 + 2183135234 + name 1_544_KEY_3 + 2183135235 + name 1_544_KEY_4 + 2183135236 + name 1_544_KEY_5 + 2183135237 + name 1_544_KEY_6 + 2183135238 + name 1_544_KEY_7 + 2183135239 + name 1_544_KEY_8 + 2183135240 + name 1_544_KEY_9 + 2183135241 + name 1_544_KEY_POWER + 2183135242 + name 1_544_KEY_CH_UP + 2183135247 + name 1_544_KEY_CH_DOWN + 2183135248 + name 1_544_KEY_MUTE + 2183135249 + name 1_544_KEY_VOL_DOWN + 2183135250 + name 1_544_KEY_VOL_UP + 2183135252 + name 1_544_KEY_MNSELECT + 2183135255 + name 1_544_KEY_EXIT + 2183135256 + name 1_544_KEY_AV + 2183135273 + name 1_544_KEY_MENU + 2183135279 + name 1_544_KEY_MUP + 2183135280 + name 1_544_KEY_MDOWN + 2183135281 + name 1_544_KEY_MLEFT + 2183135282 + name 1_544_KEY_MRIGHT + 2183135283 + name 1_545_KEY_0 + 2183200768 + name 1_545_KEY_1 + 2183200769 + name 1_545_KEY_2 + 2183200770 + name 1_545_KEY_3 + 2183200771 + name 1_545_KEY_4 + 2183200772 + name 1_545_KEY_5 + 2183200773 + name 1_545_KEY_6 + 2183200774 + name 1_545_KEY_7 + 2183200775 + name 1_545_KEY_8 + 2183200776 + name 1_545_KEY_9 + 2183200777 + name 1_545_KEY_POWER + 2183200778 + name 1_545_TWO_DIGITS + 2183200781 + name 1_545_KEY_CH_UP + 2183200783 + name 1_545_KEY_CH_DOWN + 2183200784 + name 1_546_KEY_0 + 2183266304 + name 1_546_KEY_1 + 2183266305 + name 1_546_KEY_2 + 2183266306 + name 1_546_KEY_3 + 2183266307 + name 1_546_KEY_4 + 2183266308 + name 1_546_KEY_5 + 2183266309 + name 1_546_KEY_6 + 2183266310 + name 1_546_KEY_7 + 2183266311 + name 1_546_KEY_8 + 2183266312 + name 1_546_KEY_9 + 2183266313 + name 1_546_KEY_POWER + 2183266314 + name 1_546_KEY_CH_UP + 2183266319 + name 1_546_KEY_CH_DOWN + 2183266320 + name 1_547_KEY_0 + 2183331840 + name 1_547_KEY_1 + 2183331841 + name 1_547_KEY_2 + 2183331842 + name 1_547_KEY_3 + 2183331843 + name 1_547_KEY_4 + 2183331844 + name 1_547_KEY_5 + 2183331845 + name 1_547_KEY_6 + 2183331846 + name 1_547_KEY_7 + 2183331847 + name 1_547_KEY_8 + 2183331848 + name 1_547_KEY_9 + 2183331849 + name 1_547_KEY_POWER + 2183331850 + name 1_547_KEY_CH_UP + 2183331855 + name 1_547_KEY_CH_DOWN + 2183331856 + name 1_547_KEY_MUTE + 2183331857 + name 1_547_KEY_MNSELECT + 2183331863 + name 1_547_KEY_EXIT + 2183331864 + name 1_547_KEY_AV + 2183331881 + name 1_547_KEY_MENU + 2183331887 + name 1_547_KEY_MUP + 2183331888 + name 1_547_KEY_MDOWN + 2183331889 + name 1_547_KEY_MLEFT + 2183331890 + name 1_547_KEY_MRIGHT + 2183331891 + name 1_548_KEY_0 + 2183397376 + name 1_548_KEY_1 + 2183397377 + name 1_548_KEY_2 + 2183397378 + name 1_548_KEY_3 + 2183397379 + name 1_548_KEY_4 + 2183397380 + name 1_548_KEY_5 + 2183397381 + name 1_548_KEY_6 + 2183397382 + name 1_548_KEY_7 + 2183397383 + name 1_548_KEY_8 + 2183397384 + name 1_548_KEY_9 + 2183397385 + name 1_548_KEY_POWER + 2183397386 + name 1_548_TWO_DIGITS + 2183397389 + name 1_548_KEY_CH_UP + 2183397391 + name 1_548_KEY_CH_DOWN + 2183397392 + name 1_548_CH_PREVIOUS + 2183397395 + name 1_548_KEY_MNSELECT + 2183397399 + name 1_548_KEY_MENU + 2183397423 + name 1_548_KEY_MUP + 2183397424 + name 1_548_KEY_MDOWN + 2183397425 + name 1_548_KEY_MLEFT + 2183397426 + name 1_548_KEY_MRIGHT + 2183397427 + name 1_548_KEY_On + 2183397453 + name 1_549_KEY_0 + 2183462912 + name 1_549_KEY_1 + 2183462913 + name 1_549_KEY_2 + 2183462914 + name 1_549_KEY_3 + 2183462915 + name 1_549_KEY_4 + 2183462916 + name 1_549_KEY_5 + 2183462917 + name 1_549_KEY_6 + 2183462918 + name 1_549_KEY_7 + 2183462919 + name 1_549_KEY_8 + 2183462920 + name 1_549_KEY_9 + 2183462921 + name 1_549_KEY_POWER + 2183462922 + name 1_549_KEY_CH_UP + 2183462927 + name 1_549_KEY_CH_DOWN + 2183462928 + name 1_549_KEY_MUTE + 2183462929 + name 1_549_KEY_MNSELECT + 2183462935 + name 1_549_KEY_EXIT + 2183462936 + name 1_549_KEY_AV + 2183462953 + name 1_549_KEY_MENU + 2183462959 + name 1_549_KEY_MLEFT + 2183462962 + name 1_549_KEY_MRIGHT + 2183462963 + name 1_550_KEY_0 + 2183528448 + name 1_550_KEY_1 + 2183528449 + name 1_550_KEY_2 + 2183528450 + name 1_550_KEY_3 + 2183528451 + name 1_550_KEY_4 + 2183528452 + name 1_550_KEY_5 + 2183528453 + name 1_550_KEY_6 + 2183528454 + name 1_550_KEY_7 + 2183528455 + name 1_550_KEY_8 + 2183528456 + name 1_550_KEY_9 + 2183528457 + name 1_550_KEY_POWER + 2183528458 + name 1_550_KEY_CH_UP + 2183528463 + name 1_550_KEY_CH_DOWN + 2183528464 + name 1_550_KEY_MNSELECT + 2183528471 + name 1_551_KEY_0 + 2183593984 + name 1_551_KEY_1 + 2183593985 + name 1_551_KEY_2 + 2183593986 + name 1_551_KEY_3 + 2183593987 + name 1_551_KEY_4 + 2183593988 + name 1_551_KEY_5 + 2183593989 + name 1_551_KEY_6 + 2183593990 + name 1_551_KEY_7 + 2183593991 + name 1_551_KEY_8 + 2183593992 + name 1_551_KEY_9 + 2183593993 + name 1_551_KEY_POWER + 2183593994 + name 1_551_KEY_CH_UP + 2183593999 + name 1_551_KEY_CH_DOWN + 2183594000 + name 1_551_KEY_MUTE + 2183594001 + name 1_551_KEY_VOL_DOWN + 2183594002 + name 1_551_KEY_VOL_UP + 2183594004 + name 1_551_KEY_MNSELECT + 2183594007 + name 1_551_KEY_EXIT + 2183594008 + name 1_551_KEY_AV + 2183594025 + name 1_551_KEY_MENU + 2183594031 + name 1_551_KEY_MLEFT + 2183594034 + name 1_551_KEY_MRIGHT + 2183594035 + name 1_552_KEY_0 + 2183659520 + name 1_552_KEY_1 + 2183659521 + name 1_552_KEY_2 + 2183659522 + name 1_552_KEY_3 + 2183659523 + name 1_552_KEY_4 + 2183659524 + name 1_552_KEY_5 + 2183659525 + name 1_552_KEY_6 + 2183659526 + name 1_552_KEY_7 + 2183659527 + name 1_552_KEY_8 + 2183659528 + name 1_552_KEY_9 + 2183659529 + name 1_552_KEY_POWER + 2183659530 + name 1_552_KEY_CH_UP + 2183659535 + name 1_552_KEY_CH_DOWN + 2183659536 + name 1_552_CH_PREVIOUS + 2183659539 + name 1_553_KEY_0 + 2183725056 + name 1_553_KEY_1 + 2183725057 + name 1_553_KEY_2 + 2183725058 + name 1_553_KEY_3 + 2183725059 + name 1_553_KEY_4 + 2183725060 + name 1_553_KEY_5 + 2183725061 + name 1_553_KEY_6 + 2183725062 + name 1_553_KEY_7 + 2183725063 + name 1_553_KEY_8 + 2183725064 + name 1_553_KEY_9 + 2183725065 + name 1_553_KEY_POWER + 2183725066 + name 1_553_KEY_CH_UP + 2183725071 + name 1_553_KEY_CH_DOWN + 2183725072 + name 1_553_KEY_MUTE + 2183725073 + name 1_553_KEY_VOL_DOWN + 2183725074 + name 1_553_KEY_VOL_UP + 2183725076 + name 1_553_KEY_MNSELECT + 2183725079 + name 1_553_KEY_EXIT + 2183725080 + name 1_553_KEY_AV + 2183725097 + name 1_553_KEY_MENU + 2183725103 + name 1_553_KEY_MUP + 2183725104 + name 1_553_KEY_MDOWN + 2183725105 + name 1_553_KEY_MLEFT + 2183725106 + name 1_553_KEY_MRIGHT + 2183725107 + name 1_554_KEY_0 + 2183790592 + name 1_554_KEY_1 + 2183790593 + name 1_554_KEY_2 + 2183790594 + name 1_554_KEY_3 + 2183790595 + name 1_554_KEY_4 + 2183790596 + name 1_554_KEY_5 + 2183790597 + name 1_554_KEY_6 + 2183790598 + name 1_554_KEY_7 + 2183790599 + name 1_554_KEY_8 + 2183790600 + name 1_554_KEY_9 + 2183790601 + name 1_554_KEY_POWER + 2183790602 + name 1_554_KEY_CH_UP + 2183790607 + name 1_554_KEY_CH_DOWN + 2183790608 + name 1_555_KEY_0 + 2183856128 + name 1_555_KEY_1 + 2183856129 + name 1_555_KEY_2 + 2183856130 + name 1_555_KEY_3 + 2183856131 + name 1_555_KEY_4 + 2183856132 + name 1_555_KEY_5 + 2183856133 + name 1_555_KEY_6 + 2183856134 + name 1_555_KEY_7 + 2183856135 + name 1_555_KEY_8 + 2183856136 + name 1_555_KEY_9 + 2183856137 + name 1_555_KEY_POWER + 2183856138 + name 1_555_KEY_CH_UP + 2183856143 + name 1_555_KEY_CH_DOWN + 2183856144 + name 1_555_KEY_MUTE + 2183856145 + name 1_555_KEY_VOL_DOWN + 2183856146 + name 1_555_KEY_VOL_UP + 2183856148 + name 1_555_KEY_MNSELECT + 2183856151 + name 1_555_KEY_EXIT + 2183856152 + name 1_555_KEY_AV + 2183856169 + name 1_555_KEY_MENU + 2183856175 + name 1_555_KEY_MUP + 2183856176 + name 1_555_KEY_MDOWN + 2183856177 + name 1_555_KEY_MLEFT + 2183856178 + name 1_555_KEY_MRIGHT + 2183856179 + name 1_556_KEY_0 + 2183921664 + name 1_556_KEY_1 + 2183921665 + name 1_556_KEY_2 + 2183921666 + name 1_556_KEY_3 + 2183921667 + name 1_556_KEY_4 + 2183921668 + name 1_556_KEY_5 + 2183921669 + name 1_556_KEY_6 + 2183921670 + name 1_556_KEY_7 + 2183921671 + name 1_556_KEY_8 + 2183921672 + name 1_556_KEY_9 + 2183921673 + name 1_556_KEY_POWER + 2183921674 + name 1_556_KEY_CH_UP + 2183921679 + name 1_556_KEY_CH_DOWN + 2183921680 + name 1_557_KEY_0 + 2183987200 + name 1_557_KEY_1 + 2183987201 + name 1_557_KEY_2 + 2183987202 + name 1_557_KEY_3 + 2183987203 + name 1_557_KEY_4 + 2183987204 + name 1_557_KEY_5 + 2183987205 + name 1_557_KEY_6 + 2183987206 + name 1_557_KEY_7 + 2183987207 + name 1_557_KEY_8 + 2183987208 + name 1_557_KEY_9 + 2183987209 + name 1_557_KEY_POWER + 2183987210 + name 1_557_KEY_CH_UP + 2183987215 + name 1_557_KEY_CH_DOWN + 2183987216 + name 1_557_KEY_MENU + 2183987247 + name 1_557_KEY_MUP + 2183987248 + name 1_557_KEY_MDOWN + 2183987249 + name 1_557_KEY_MLEFT + 2183987250 + name 1_557_KEY_MRIGHT + 2183987251 + name 1_558_KEY_0 + 2184052736 + name 1_558_KEY_1 + 2184052737 + name 1_558_KEY_2 + 2184052738 + name 1_558_KEY_3 + 2184052739 + name 1_558_KEY_4 + 2184052740 + name 1_558_KEY_5 + 2184052741 + name 1_558_KEY_6 + 2184052742 + name 1_558_KEY_7 + 2184052743 + name 1_558_KEY_8 + 2184052744 + name 1_558_KEY_9 + 2184052745 + name 1_558_KEY_POWER + 2184052746 + name 1_558_KEY_CH_UP + 2184052751 + name 1_558_KEY_CH_DOWN + 2184052752 + name 1_558_KEY_MUTE + 2184052753 + name 1_558_KEY_VOL_DOWN + 2184052754 + name 1_558_KEY_VOL_UP + 2184052756 + name 1_558_KEY_MNSELECT + 2184052759 + name 1_558_KEY_EXIT + 2184052760 + name 1_558_KEY_AV + 2184052777 + name 1_558_KEY_MENU + 2184052783 + name 1_558_KEY_MUP + 2184052784 + name 1_558_KEY_MDOWN + 2184052785 + name 1_558_KEY_MLEFT + 2184052786 + name 1_558_KEY_MRIGHT + 2184052787 + name 1_559_KEY_0 + 2184118272 + name 1_559_KEY_1 + 2184118273 + name 1_559_KEY_2 + 2184118274 + name 1_559_KEY_3 + 2184118275 + name 1_559_KEY_4 + 2184118276 + name 1_559_KEY_5 + 2184118277 + name 1_559_KEY_6 + 2184118278 + name 1_559_KEY_7 + 2184118279 + name 1_559_KEY_8 + 2184118280 + name 1_559_KEY_9 + 2184118281 + name 1_559_KEY_POWER + 2184118282 + name 1_559_TWO_DIGITS + 2184118285 + name 1_559_KEY_CH_UP + 2184118287 + name 1_559_KEY_CH_DOWN + 2184118288 + name 1_559_KEY_MNSELECT + 2184118295 + name 1_559_KEY_MENU + 2184118319 + name 1_559_KEY_MUP + 2184118320 + name 1_559_KEY_MDOWN + 2184118321 + name 1_559_KEY_MLEFT + 2184118322 + name 1_559_KEY_MRIGHT + 2184118323 + name 1_560_KEY_0 + 2184183808 + name 1_560_KEY_1 + 2184183809 + name 1_560_KEY_2 + 2184183810 + name 1_560_KEY_3 + 2184183811 + name 1_560_KEY_4 + 2184183812 + name 1_560_KEY_5 + 2184183813 + name 1_560_KEY_6 + 2184183814 + name 1_560_KEY_7 + 2184183815 + name 1_560_KEY_8 + 2184183816 + name 1_560_KEY_9 + 2184183817 + name 1_560_KEY_POWER + 2184183818 + name 1_560_KEY_CH_UP + 2184183823 + name 1_560_KEY_CH_DOWN + 2184183824 + name 1_560_KEY_MNSELECT + 2184183831 + name 1_560_KEY_GUIDE + 2184183835 + name 1_560_KEY_BLUE + 2184183843 + name 1_560_KEY_GREEN + 2184183844 + name 1_560_KEY_RED + 2184183845 + name 1_560_KEY_YELLOW + 2184183846 + name 1_560_KEY_MENU + 2184183855 + name 1_560_KEY_MUP + 2184183856 + name 1_560_KEY_MDOWN + 2184183857 + name 1_560_KEY_MLEFT + 2184183858 + name 1_560_KEY_MRIGHT + 2184183859 + name 1_560_KEY_On + 2184183885 + name 1_561_KEY_0 + 2184249344 + name 1_561_KEY_1 + 2184249345 + name 1_561_KEY_2 + 2184249346 + name 1_561_KEY_3 + 2184249347 + name 1_561_KEY_4 + 2184249348 + name 1_561_KEY_5 + 2184249349 + name 1_561_KEY_6 + 2184249350 + name 1_561_KEY_7 + 2184249351 + name 1_561_KEY_8 + 2184249352 + name 1_561_KEY_9 + 2184249353 + name 1_561_KEY_POWER + 2184249354 + name 1_561_KEY_CH_UP + 2184249359 + name 1_561_KEY_CH_DOWN + 2184249360 + name 1_561_CH_PREVIOUS + 2184249363 + name 1_561_KEY_MNSELECT + 2184249367 + name 1_561_KEY_BLUE + 2184249379 + name 1_561_KEY_GREEN + 2184249380 + name 1_561_KEY_RED + 2184249381 + name 1_561_KEY_YELLOW + 2184249382 + name 1_561_KEY_MENU + 2184249391 + name 1_561_KEY_MUP + 2184249392 + name 1_561_KEY_MDOWN + 2184249393 + name 1_561_KEY_MLEFT + 2184249394 + name 1_561_KEY_MRIGHT + 2184249395 + name 1_561_KEY_On + 2184249421 + name 1_562_KEY_0 + 2184314880 + name 1_562_KEY_1 + 2184314881 + name 1_562_KEY_2 + 2184314882 + name 1_562_KEY_3 + 2184314883 + name 1_562_KEY_4 + 2184314884 + name 1_562_KEY_5 + 2184314885 + name 1_562_KEY_6 + 2184314886 + name 1_562_KEY_7 + 2184314887 + name 1_562_KEY_8 + 2184314888 + name 1_562_KEY_9 + 2184314889 + name 1_562_KEY_POWER + 2184314890 + name 1_562_KEY_CH_UP + 2184314895 + name 1_562_KEY_CH_DOWN + 2184314896 + name 1_562_KEY_MUP + 2184314928 + name 1_562_KEY_MDOWN + 2184314929 + name 1_563_KEY_0 + 2184380416 + name 1_563_KEY_1 + 2184380417 + name 1_563_KEY_2 + 2184380418 + name 1_563_KEY_3 + 2184380419 + name 1_563_KEY_4 + 2184380420 + name 1_563_KEY_5 + 2184380421 + name 1_563_KEY_6 + 2184380422 + name 1_563_KEY_7 + 2184380423 + name 1_563_KEY_8 + 2184380424 + name 1_563_KEY_9 + 2184380425 + name 1_563_KEY_POWER + 2184380426 + name 1_563_KEY_CH_UP + 2184380431 + name 1_563_KEY_CH_DOWN + 2184380432 + name 1_563_CH_PREVIOUS + 2184380435 + name 1_563_KEY_MNSELECT + 2184380439 + name 1_563_KEY_GUIDE + 2184380443 + name 1_563_KEY_MENU + 2184380463 + name 1_563_KEY_MUP + 2184380464 + name 1_563_KEY_MDOWN + 2184380465 + name 1_563_KEY_MLEFT + 2184380466 + name 1_563_KEY_MRIGHT + 2184380467 + name 1_563_KEY_On + 2184380493 + name 1_564_KEY_0 + 2184445952 + name 1_564_KEY_1 + 2184445953 + name 1_564_KEY_2 + 2184445954 + name 1_564_KEY_3 + 2184445955 + name 1_564_KEY_4 + 2184445956 + name 1_564_KEY_5 + 2184445957 + name 1_564_KEY_6 + 2184445958 + name 1_564_KEY_7 + 2184445959 + name 1_564_KEY_8 + 2184445960 + name 1_564_KEY_9 + 2184445961 + name 1_564_KEY_POWER + 2184445962 + name 1_564_KEY_CH_UP + 2184445967 + name 1_564_KEY_CH_DOWN + 2184445968 + name 1_564_CH_PREVIOUS + 2184445971 + name 1_564_KEY_MNSELECT + 2184445975 + name 1_564_KEY_GUIDE + 2184445979 + name 1_564_KEY_MENU + 2184445999 + name 1_564_KEY_MUP + 2184446000 + name 1_564_KEY_MDOWN + 2184446001 + name 1_564_KEY_MLEFT + 2184446002 + name 1_564_KEY_MRIGHT + 2184446003 + name 1_565_KEY_0 + 2184511488 + name 1_565_KEY_1 + 2184511489 + name 1_565_KEY_2 + 2184511490 + name 1_565_KEY_3 + 2184511491 + name 1_565_KEY_4 + 2184511492 + name 1_565_KEY_5 + 2184511493 + name 1_565_KEY_6 + 2184511494 + name 1_565_KEY_7 + 2184511495 + name 1_565_KEY_8 + 2184511496 + name 1_565_KEY_9 + 2184511497 + name 1_565_KEY_POWER + 2184511498 + name 1_565_KEY_CH_UP + 2184511503 + name 1_565_KEY_CH_DOWN + 2184511504 + name 1_565_KEY_MNSELECT + 2184511511 + name 1_565_KEY_GUIDE + 2184511515 + name 1_565_KEY_BLUE + 2184511523 + name 1_565_KEY_GREEN + 2184511524 + name 1_565_KEY_RED + 2184511525 + name 1_565_KEY_YELLOW + 2184511526 + name 1_565_KEY_MENU + 2184511535 + name 1_565_KEY_MUP + 2184511536 + name 1_565_KEY_MDOWN + 2184511537 + name 1_565_KEY_MLEFT + 2184511538 + name 1_565_KEY_MRIGHT + 2184511539 + name 1_566_KEY_0 + 2184577024 + name 1_566_KEY_1 + 2184577025 + name 1_566_KEY_2 + 2184577026 + name 1_566_KEY_3 + 2184577027 + name 1_566_KEY_4 + 2184577028 + name 1_566_KEY_5 + 2184577029 + name 1_566_KEY_6 + 2184577030 + name 1_566_KEY_7 + 2184577031 + name 1_566_KEY_8 + 2184577032 + name 1_566_KEY_9 + 2184577033 + name 1_566_KEY_POWER + 2184577034 + name 1_566_KEY_CH_UP + 2184577039 + name 1_566_KEY_CH_DOWN + 2184577040 + name 1_566_KEY_MUTE + 2184577041 + name 1_566_KEY_VOL_DOWN + 2184577042 + name 1_566_KEY_VOL_UP + 2184577044 + name 1_566_KEY_MNSELECT + 2184577047 + name 1_566_KEY_EXIT + 2184577048 + name 1_566_KEY_AV + 2184577065 + name 1_566_KEY_MENU + 2184577071 + name 1_566_KEY_MUP + 2184577072 + name 1_566_KEY_MDOWN + 2184577073 + name 1_566_KEY_MLEFT + 2184577074 + name 1_566_KEY_MRIGHT + 2184577075 + name 1_567_KEY_0 + 2184642560 + name 1_567_KEY_1 + 2184642561 + name 1_567_KEY_2 + 2184642562 + name 1_567_KEY_3 + 2184642563 + name 1_567_KEY_4 + 2184642564 + name 1_567_KEY_5 + 2184642565 + name 1_567_KEY_6 + 2184642566 + name 1_567_KEY_7 + 2184642567 + name 1_567_KEY_8 + 2184642568 + name 1_567_KEY_9 + 2184642569 + name 1_567_KEY_POWER + 2184642570 + name 1_567_KEY_CH_UP + 2184642575 + name 1_567_KEY_CH_DOWN + 2184642576 + name 1_567_KEY_MUTE + 2184642577 + name 1_567_KEY_MNSELECT + 2184642583 + name 1_567_KEY_EXIT + 2184642584 + name 1_567_KEY_MENU + 2184642607 + name 1_567_KEY_MLEFT + 2184642610 + name 1_567_KEY_MRIGHT + 2184642611 + name 1_568_KEY_0 + 2184708096 + name 1_568_KEY_1 + 2184708097 + name 1_568_KEY_2 + 2184708098 + name 1_568_KEY_3 + 2184708099 + name 1_568_KEY_4 + 2184708100 + name 1_568_KEY_5 + 2184708101 + name 1_568_KEY_6 + 2184708102 + name 1_568_KEY_7 + 2184708103 + name 1_568_KEY_8 + 2184708104 + name 1_568_KEY_9 + 2184708105 + name 1_568_KEY_POWER + 2184708106 + name 1_568_KEY_CH_UP + 2184708111 + name 1_568_KEY_CH_DOWN + 2184708112 + name 1_568_KEY_MUTE + 2184708113 + name 1_568_KEY_MNSELECT + 2184708119 + name 1_568_KEY_EXIT + 2184708120 + name 1_568_KEY_MENU + 2184708143 + name 1_568_KEY_MUP + 2184708144 + name 1_568_KEY_MDOWN + 2184708145 + name 1_568_KEY_MLEFT + 2184708146 + name 1_568_KEY_MRIGHT + 2184708147 + name 1_569_KEY_0 + 2184773632 + name 1_569_KEY_1 + 2184773633 + name 1_569_KEY_2 + 2184773634 + name 1_569_KEY_3 + 2184773635 + name 1_569_KEY_4 + 2184773636 + name 1_569_KEY_5 + 2184773637 + name 1_569_KEY_6 + 2184773638 + name 1_569_KEY_7 + 2184773639 + name 1_569_KEY_8 + 2184773640 + name 1_569_KEY_9 + 2184773641 + name 1_569_KEY_POWER + 2184773642 + name 1_569_KEY_CH_UP + 2184773647 + name 1_569_KEY_CH_DOWN + 2184773648 + name 1_569_KEY_MUTE + 2184773649 + name 1_569_KEY_MNSELECT + 2184773655 + name 1_569_KEY_AV + 2184773673 + name 1_570_KEY_0 + 2184839168 + name 1_570_KEY_1 + 2184839169 + name 1_570_KEY_2 + 2184839170 + name 1_570_KEY_3 + 2184839171 + name 1_570_KEY_4 + 2184839172 + name 1_570_KEY_5 + 2184839173 + name 1_570_KEY_6 + 2184839174 + name 1_570_KEY_7 + 2184839175 + name 1_570_KEY_8 + 2184839176 + name 1_570_KEY_9 + 2184839177 + name 1_570_KEY_POWER + 2184839178 + name 1_570_KEY_CH_UP + 2184839183 + name 1_570_KEY_CH_DOWN + 2184839184 + name 1_570_KEY_MUTE + 2184839185 + name 1_570_KEY_VOL_DOWN + 2184839186 + name 1_570_KEY_VOL_UP + 2184839188 + name 1_570_KEY_MNSELECT + 2184839191 + name 1_570_KEY_AV + 2184839209 + name 1_571_KEY_0 + 2184904704 + name 1_571_KEY_1 + 2184904705 + name 1_571_KEY_2 + 2184904706 + name 1_571_KEY_3 + 2184904707 + name 1_571_KEY_4 + 2184904708 + name 1_571_KEY_5 + 2184904709 + name 1_571_KEY_6 + 2184904710 + name 1_571_KEY_7 + 2184904711 + name 1_571_KEY_8 + 2184904712 + name 1_571_KEY_9 + 2184904713 + name 1_571_KEY_POWER + 2184904714 + name 1_571_KEY_CH_UP + 2184904719 + name 1_571_KEY_CH_DOWN + 2184904720 + name 1_571_KEY_MUTE + 2184904721 + name 1_571_KEY_MNSELECT + 2184904727 + name 1_571_KEY_EXIT + 2184904728 + name 1_571_KEY_AV + 2184904745 + name 1_571_KEY_MENU + 2184904751 + name 1_571_KEY_MUP + 2184904752 + name 1_571_KEY_MDOWN + 2184904753 + name 1_571_KEY_MLEFT + 2184904754 + name 1_571_KEY_MRIGHT + 2184904755 + name 1_572_KEY_0 + 2184970240 + name 1_572_KEY_1 + 2184970241 + name 1_572_KEY_2 + 2184970242 + name 1_572_KEY_3 + 2184970243 + name 1_572_KEY_4 + 2184970244 + name 1_572_KEY_5 + 2184970245 + name 1_572_KEY_6 + 2184970246 + name 1_572_KEY_7 + 2184970247 + name 1_572_KEY_8 + 2184970248 + name 1_572_KEY_9 + 2184970249 + name 1_572_KEY_POWER + 2184970250 + name 1_572_KEY_CH_UP + 2184970255 + name 1_572_KEY_CH_DOWN + 2184970256 + name 1_572_KEY_MUTE + 2184970257 + name 1_572_KEY_MNSELECT + 2184970263 + name 1_572_KEY_EXIT + 2184970264 + name 1_572_KEY_AV + 2184970281 + name 1_572_KEY_MENU + 2184970287 + name 1_572_KEY_MUP + 2184970288 + name 1_572_KEY_MDOWN + 2184970289 + name 1_572_KEY_MLEFT + 2184970290 + name 1_572_KEY_MRIGHT + 2184970291 + name 1_573_KEY_0 + 2185035776 + name 1_573_KEY_1 + 2185035777 + name 1_573_KEY_2 + 2185035778 + name 1_573_KEY_3 + 2185035779 + name 1_573_KEY_4 + 2185035780 + name 1_573_KEY_5 + 2185035781 + name 1_573_KEY_6 + 2185035782 + name 1_573_KEY_7 + 2185035783 + name 1_573_KEY_8 + 2185035784 + name 1_573_KEY_9 + 2185035785 + name 1_573_KEY_POWER + 2185035786 + name 1_573_KEY_CH_UP + 2185035791 + name 1_573_KEY_CH_DOWN + 2185035792 + name 1_573_KEY_MUTE + 2185035793 + name 1_573_KEY_MNSELECT + 2185035799 + name 1_573_KEY_EXIT + 2185035800 + name 1_573_KEY_AV + 2185035817 + name 1_573_KEY_MENU + 2185035823 + name 1_573_KEY_MUP + 2185035824 + name 1_573_KEY_MDOWN + 2185035825 + name 1_573_KEY_MLEFT + 2185035826 + name 1_573_KEY_MRIGHT + 2185035827 + name 1_574_KEY_0 + 2185101312 + name 1_574_KEY_1 + 2185101313 + name 1_574_KEY_2 + 2185101314 + name 1_574_KEY_3 + 2185101315 + name 1_574_KEY_4 + 2185101316 + name 1_574_KEY_5 + 2185101317 + name 1_574_KEY_6 + 2185101318 + name 1_574_KEY_7 + 2185101319 + name 1_574_KEY_8 + 2185101320 + name 1_574_KEY_9 + 2185101321 + name 1_574_KEY_POWER + 2185101322 + name 1_574_KEY_CH_UP + 2185101327 + name 1_574_KEY_CH_DOWN + 2185101328 + name 1_574_KEY_MUTE + 2185101329 + name 1_574_KEY_VOL_DOWN + 2185101330 + name 1_574_KEY_VOL_UP + 2185101332 + name 1_574_KEY_MNSELECT + 2185101335 + name 1_574_KEY_EXIT + 2185101336 + name 1_574_KEY_AV + 2185101353 + name 1_574_KEY_MENU + 2185101359 + name 1_574_KEY_MUP + 2185101360 + name 1_574_KEY_MDOWN + 2185101361 + name 1_574_KEY_MLEFT + 2185101362 + name 1_574_KEY_MRIGHT + 2185101363 + name 1_575_KEY_0 + 2185166848 + name 1_575_KEY_1 + 2185166849 + name 1_575_KEY_2 + 2185166850 + name 1_575_KEY_3 + 2185166851 + name 1_575_KEY_4 + 2185166852 + name 1_575_KEY_5 + 2185166853 + name 1_575_KEY_6 + 2185166854 + name 1_575_KEY_7 + 2185166855 + name 1_575_KEY_8 + 2185166856 + name 1_575_KEY_9 + 2185166857 + name 1_575_KEY_POWER + 2185166858 + name 1_575_KEY_CH_UP + 2185166863 + name 1_575_KEY_CH_DOWN + 2185166864 + name 1_575_KEY_AV + 2185166889 + name 1_576_KEY_0 + 2185232384 + name 1_576_KEY_1 + 2185232385 + name 1_576_KEY_2 + 2185232386 + name 1_576_KEY_3 + 2185232387 + name 1_576_KEY_4 + 2185232388 + name 1_576_KEY_5 + 2185232389 + name 1_576_KEY_6 + 2185232390 + name 1_576_KEY_7 + 2185232391 + name 1_576_KEY_8 + 2185232392 + name 1_576_KEY_9 + 2185232393 + name 1_576_KEY_POWER + 2185232394 + name 1_576_KEY_CH_UP + 2185232399 + name 1_576_KEY_CH_DOWN + 2185232400 + name 1_576_KEY_AV + 2185232425 + name 1_577_KEY_0 + 2185297920 + name 1_577_KEY_1 + 2185297921 + name 1_577_KEY_2 + 2185297922 + name 1_577_KEY_3 + 2185297923 + name 1_577_KEY_4 + 2185297924 + name 1_577_KEY_5 + 2185297925 + name 1_577_KEY_6 + 2185297926 + name 1_577_KEY_7 + 2185297927 + name 1_577_KEY_8 + 2185297928 + name 1_577_KEY_9 + 2185297929 + name 1_577_KEY_POWER + 2185297930 + name 1_577_KEY_CH_UP + 2185297935 + name 1_577_KEY_CH_DOWN + 2185297936 + name 1_577_KEY_MUTE + 2185297937 + name 1_577_KEY_VOL_DOWN + 2185297938 + name 1_577_KEY_VOL_UP + 2185297940 + name 1_577_KEY_MNSELECT + 2185297943 + name 1_577_KEY_EXIT + 2185297944 + name 1_577_KEY_MLEFT + 2185297970 + name 1_577_KEY_MRIGHT + 2185297971 + name 1_578_KEY_0 + 2185363456 + name 1_578_KEY_1 + 2185363457 + name 1_578_KEY_2 + 2185363458 + name 1_578_KEY_3 + 2185363459 + name 1_578_KEY_4 + 2185363460 + name 1_578_KEY_5 + 2185363461 + name 1_578_KEY_6 + 2185363462 + name 1_578_KEY_7 + 2185363463 + name 1_578_KEY_8 + 2185363464 + name 1_578_KEY_9 + 2185363465 + name 1_578_KEY_POWER + 2185363466 + name 1_578_KEY_CH_UP + 2185363471 + name 1_578_KEY_CH_DOWN + 2185363472 + name 1_578_KEY_MUTE + 2185363473 + name 1_578_KEY_MNSELECT + 2185363479 + name 1_578_KEY_MLEFT + 2185363506 + name 1_578_KEY_MRIGHT + 2185363507 + name 1_579_KEY_0 + 2185428992 + name 1_579_KEY_1 + 2185428993 + name 1_579_KEY_2 + 2185428994 + name 1_579_KEY_3 + 2185428995 + name 1_579_KEY_4 + 2185428996 + name 1_579_KEY_5 + 2185428997 + name 1_579_KEY_6 + 2185428998 + name 1_579_KEY_7 + 2185428999 + name 1_579_KEY_8 + 2185429000 + name 1_579_KEY_9 + 2185429001 + name 1_579_KEY_POWER + 2185429002 + name 1_579_KEY_CH_UP + 2185429007 + name 1_579_KEY_CH_DOWN + 2185429008 + name 1_579_KEY_MUTE + 2185429009 + name 1_579_KEY_MNSELECT + 2185429015 + name 1_579_KEY_AV + 2185429033 + name 1_579_KEY_MLEFT + 2185429042 + name 1_579_KEY_MRIGHT + 2185429043 + name 1_580_KEY_0 + 2185494528 + name 1_580_KEY_1 + 2185494529 + name 1_580_KEY_2 + 2185494530 + name 1_580_KEY_3 + 2185494531 + name 1_580_KEY_4 + 2185494532 + name 1_580_KEY_5 + 2185494533 + name 1_580_KEY_6 + 2185494534 + name 1_580_KEY_7 + 2185494535 + name 1_580_KEY_8 + 2185494536 + name 1_580_KEY_9 + 2185494537 + name 1_580_KEY_POWER + 2185494538 + name 1_580_KEY_CH_UP + 2185494543 + name 1_580_KEY_CH_DOWN + 2185494544 + name 1_580_KEY_MUTE + 2185494545 + name 1_580_KEY_MNSELECT + 2185494551 + name 1_580_KEY_MLEFT + 2185494578 + name 1_580_KEY_MRIGHT + 2185494579 + name 1_581_KEY_0 + 2185560064 + name 1_581_KEY_1 + 2185560065 + name 1_581_KEY_2 + 2185560066 + name 1_581_KEY_3 + 2185560067 + name 1_581_KEY_4 + 2185560068 + name 1_581_KEY_5 + 2185560069 + name 1_581_KEY_6 + 2185560070 + name 1_581_KEY_7 + 2185560071 + name 1_581_KEY_8 + 2185560072 + name 1_581_KEY_9 + 2185560073 + name 1_581_KEY_POWER + 2185560074 + name 1_581_KEY_CH_UP + 2185560079 + name 1_581_KEY_CH_DOWN + 2185560080 + name 1_581_KEY_AV + 2185560105 + name 1_581_KEY_MLEFT + 2185560114 + name 1_581_KEY_MRIGHT + 2185560115 + name 1_582_KEY_0 + 2185625600 + name 1_582_KEY_1 + 2185625601 + name 1_582_KEY_2 + 2185625602 + name 1_582_KEY_3 + 2185625603 + name 1_582_KEY_4 + 2185625604 + name 1_582_KEY_5 + 2185625605 + name 1_582_KEY_6 + 2185625606 + name 1_582_KEY_7 + 2185625607 + name 1_582_KEY_8 + 2185625608 + name 1_582_KEY_9 + 2185625609 + name 1_582_KEY_POWER + 2185625610 + name 1_582_KEY_CH_UP + 2185625615 + name 1_582_KEY_CH_DOWN + 2185625616 + name 1_582_KEY_AV + 2185625641 + name 1_583_KEY_0 + 2185691136 + name 1_583_KEY_1 + 2185691137 + name 1_583_KEY_2 + 2185691138 + name 1_583_KEY_3 + 2185691139 + name 1_583_KEY_4 + 2185691140 + name 1_583_KEY_5 + 2185691141 + name 1_583_KEY_6 + 2185691142 + name 1_583_KEY_7 + 2185691143 + name 1_583_KEY_8 + 2185691144 + name 1_583_KEY_9 + 2185691145 + name 1_583_KEY_POWER + 2185691146 + name 1_583_KEY_CH_UP + 2185691151 + name 1_583_KEY_CH_DOWN + 2185691152 + name 1_583_KEY_MUTE + 2185691153 + name 1_583_KEY_VOL_DOWN + 2185691154 + name 1_583_KEY_VOL_UP + 2185691156 + name 1_583_KEY_MNSELECT + 2185691159 + name 1_583_KEY_AV + 2185691177 + name 1_583_KEY_MUP + 2185691184 + name 1_583_KEY_MDOWN + 2185691185 + name 1_583_KEY_MLEFT + 2185691186 + name 1_583_KEY_MRIGHT + 2185691187 + name 1_584_KEY_0 + 2185756672 + name 1_584_KEY_1 + 2185756673 + name 1_584_KEY_2 + 2185756674 + name 1_584_KEY_3 + 2185756675 + name 1_584_KEY_4 + 2185756676 + name 1_584_KEY_5 + 2185756677 + name 1_584_KEY_6 + 2185756678 + name 1_584_KEY_7 + 2185756679 + name 1_584_KEY_8 + 2185756680 + name 1_584_KEY_9 + 2185756681 + name 1_584_KEY_POWER + 2185756682 + name 1_584_KEY_CH_UP + 2185756687 + name 1_584_KEY_CH_DOWN + 2185756688 + name 1_584_KEY_MUTE + 2185756689 + name 1_584_KEY_VOL_DOWN + 2185756690 + name 1_584_KEY_VOL_UP + 2185756692 + name 1_584_KEY_MNSELECT + 2185756695 + name 1_584_KEY_MENU + 2185756719 + name 1_584_KEY_MUP + 2185756720 + name 1_584_KEY_MDOWN + 2185756721 + name 1_584_KEY_MLEFT + 2185756722 + name 1_584_KEY_MRIGHT + 2185756723 + name 1_585_KEY_0 + 2185822208 + name 1_585_KEY_1 + 2185822209 + name 1_585_KEY_2 + 2185822210 + name 1_585_KEY_3 + 2185822211 + name 1_585_KEY_4 + 2185822212 + name 1_585_KEY_5 + 2185822213 + name 1_585_KEY_6 + 2185822214 + name 1_585_KEY_7 + 2185822215 + name 1_585_KEY_8 + 2185822216 + name 1_585_KEY_9 + 2185822217 + name 1_585_KEY_POWER + 2185822218 + name 1_585_KEY_CH_UP + 2185822223 + name 1_585_KEY_CH_DOWN + 2185822224 + name 1_585_KEY_MUTE + 2185822225 + name 1_585_KEY_AV + 2185822249 + name 1_586_KEY_0 + 2185887744 + name 1_586_KEY_1 + 2185887745 + name 1_586_KEY_2 + 2185887746 + name 1_586_KEY_3 + 2185887747 + name 1_586_KEY_4 + 2185887748 + name 1_586_KEY_5 + 2185887749 + name 1_586_KEY_6 + 2185887750 + name 1_586_KEY_7 + 2185887751 + name 1_586_KEY_8 + 2185887752 + name 1_586_KEY_9 + 2185887753 + name 1_586_KEY_POWER + 2185887754 + name 1_586_KEY_CH_UP + 2185887759 + name 1_586_KEY_CH_DOWN + 2185887760 + name 1_586_KEY_MUTE + 2185887761 + name 1_586_KEY_MNSELECT + 2185887767 + name 1_586_KEY_MUP + 2185887792 + name 1_586_KEY_MDOWN + 2185887793 + name 1_587_KEY_0 + 2185953280 + name 1_587_KEY_1 + 2185953281 + name 1_587_KEY_2 + 2185953282 + name 1_587_KEY_3 + 2185953283 + name 1_587_KEY_4 + 2185953284 + name 1_587_KEY_5 + 2185953285 + name 1_587_KEY_6 + 2185953286 + name 1_587_KEY_7 + 2185953287 + name 1_587_KEY_8 + 2185953288 + name 1_587_KEY_9 + 2185953289 + name 1_587_KEY_POWER + 2185953290 + name 1_587_KEY_CH_UP + 2185953295 + name 1_587_KEY_CH_DOWN + 2185953296 + name 1_587_KEY_MUTE + 2185953297 + name 1_587_KEY_VOL_DOWN + 2185953298 + name 1_587_KEY_VOL_UP + 2185953300 + name 1_587_KEY_MNSELECT + 2185953303 + name 1_587_KEY_EXIT + 2185953304 + name 1_587_KEY_MENU + 2185953327 + name 1_587_KEY_MUP + 2185953328 + name 1_587_KEY_MDOWN + 2185953329 + name 1_587_KEY_MLEFT + 2185953330 + name 1_587_KEY_MRIGHT + 2185953331 + name 1_588_KEY_0 + 2186018816 + name 1_588_KEY_1 + 2186018817 + name 1_588_KEY_2 + 2186018818 + name 1_588_KEY_3 + 2186018819 + name 1_588_KEY_4 + 2186018820 + name 1_588_KEY_5 + 2186018821 + name 1_588_KEY_6 + 2186018822 + name 1_588_KEY_7 + 2186018823 + name 1_588_KEY_8 + 2186018824 + name 1_588_KEY_9 + 2186018825 + name 1_588_KEY_POWER + 2186018826 + name 1_588_KEY_CH_UP + 2186018831 + name 1_588_KEY_CH_DOWN + 2186018832 + name 1_588_KEY_MUTE + 2186018833 + name 1_588_KEY_VOL_DOWN + 2186018834 + name 1_588_KEY_VOL_UP + 2186018836 + name 1_588_KEY_MNSELECT + 2186018839 + name 1_588_KEY_EXIT + 2186018840 + name 1_588_KEY_AV + 2186018857 + name 1_588_KEY_MENU + 2186018863 + name 1_588_KEY_MUP + 2186018864 + name 1_588_KEY_MDOWN + 2186018865 + name 1_588_KEY_MLEFT + 2186018866 + name 1_588_KEY_MRIGHT + 2186018867 + name 1_589_KEY_0 + 2186084352 + name 1_589_KEY_1 + 2186084353 + name 1_589_KEY_2 + 2186084354 + name 1_589_KEY_3 + 2186084355 + name 1_589_KEY_4 + 2186084356 + name 1_589_KEY_5 + 2186084357 + name 1_589_KEY_6 + 2186084358 + name 1_589_KEY_7 + 2186084359 + name 1_589_KEY_8 + 2186084360 + name 1_589_KEY_9 + 2186084361 + name 1_589_KEY_POWER + 2186084362 + name 1_589_KEY_CH_UP + 2186084367 + name 1_589_KEY_CH_DOWN + 2186084368 + name 1_589_KEY_MUTE + 2186084369 + name 1_589_KEY_VOL_DOWN + 2186084370 + name 1_589_KEY_VOL_UP + 2186084372 + name 1_589_KEY_MNSELECT + 2186084375 + name 1_589_KEY_EXIT + 2186084376 + name 1_589_KEY_AV + 2186084393 + name 1_589_KEY_MENU + 2186084399 + name 1_589_KEY_MUP + 2186084400 + name 1_589_KEY_MDOWN + 2186084401 + name 1_589_KEY_MLEFT + 2186084402 + name 1_589_KEY_MRIGHT + 2186084403 + name 1_590_KEY_0 + 2186149888 + name 1_590_KEY_1 + 2186149889 + name 1_590_KEY_2 + 2186149890 + name 1_590_KEY_3 + 2186149891 + name 1_590_KEY_4 + 2186149892 + name 1_590_KEY_5 + 2186149893 + name 1_590_KEY_6 + 2186149894 + name 1_590_KEY_7 + 2186149895 + name 1_590_KEY_8 + 2186149896 + name 1_590_KEY_9 + 2186149897 + name 1_590_KEY_POWER + 2186149898 + name 1_590_KEY_CH_UP + 2186149903 + name 1_590_KEY_CH_DOWN + 2186149904 + name 1_590_KEY_MUTE + 2186149905 + name 1_590_KEY_VOL_DOWN + 2186149906 + name 1_590_KEY_VOL_UP + 2186149908 + name 1_590_KEY_MNSELECT + 2186149911 + name 1_590_KEY_EXIT + 2186149912 + name 1_590_KEY_AV + 2186149929 + name 1_590_KEY_MENU + 2186149935 + name 1_590_KEY_MUP + 2186149936 + name 1_590_KEY_MDOWN + 2186149937 + name 1_590_KEY_MLEFT + 2186149938 + name 1_590_KEY_MRIGHT + 2186149939 + name 1_591_KEY_0 + 2186215424 + name 1_591_KEY_1 + 2186215425 + name 1_591_KEY_2 + 2186215426 + name 1_591_KEY_3 + 2186215427 + name 1_591_KEY_4 + 2186215428 + name 1_591_KEY_5 + 2186215429 + name 1_591_KEY_6 + 2186215430 + name 1_591_KEY_7 + 2186215431 + name 1_591_KEY_8 + 2186215432 + name 1_591_KEY_9 + 2186215433 + name 1_591_KEY_POWER + 2186215434 + name 1_591_KEY_CH_UP + 2186215439 + name 1_591_KEY_CH_DOWN + 2186215440 + name 1_591_KEY_MUTE + 2186215441 + name 1_591_KEY_VOL_DOWN + 2186215442 + name 1_591_KEY_VOL_UP + 2186215444 + name 1_591_KEY_MNSELECT + 2186215447 + name 1_591_KEY_EXIT + 2186215448 + name 1_591_KEY_AV + 2186215465 + name 1_591_KEY_MENU + 2186215471 + name 1_591_KEY_MUP + 2186215472 + name 1_591_KEY_MDOWN + 2186215473 + name 1_591_KEY_MLEFT + 2186215474 + name 1_591_KEY_MRIGHT + 2186215475 + name 1_592_KEY_0 + 2186280960 + name 1_592_KEY_1 + 2186280961 + name 1_592_KEY_2 + 2186280962 + name 1_592_KEY_3 + 2186280963 + name 1_592_KEY_4 + 2186280964 + name 1_592_KEY_5 + 2186280965 + name 1_592_KEY_6 + 2186280966 + name 1_592_KEY_7 + 2186280967 + name 1_592_KEY_8 + 2186280968 + name 1_592_KEY_9 + 2186280969 + name 1_592_KEY_POWER + 2186280970 + name 1_592_KEY_CH_UP + 2186280975 + name 1_592_KEY_CH_DOWN + 2186280976 + name 1_592_KEY_MUTE + 2186280977 + name 1_592_KEY_VOL_DOWN + 2186280978 + name 1_592_KEY_VOL_UP + 2186280980 + name 1_592_KEY_MNSELECT + 2186280983 + name 1_592_KEY_EXIT + 2186280984 + name 1_592_KEY_AV + 2186281001 + name 1_592_KEY_MENU + 2186281007 + name 1_592_KEY_MUP + 2186281008 + name 1_592_KEY_MDOWN + 2186281009 + name 1_592_KEY_MLEFT + 2186281010 + name 1_592_KEY_MRIGHT + 2186281011 + name 1_593_KEY_0 + 2186346496 + name 1_593_KEY_1 + 2186346497 + name 1_593_KEY_2 + 2186346498 + name 1_593_KEY_3 + 2186346499 + name 1_593_KEY_4 + 2186346500 + name 1_593_KEY_5 + 2186346501 + name 1_593_KEY_6 + 2186346502 + name 1_593_KEY_7 + 2186346503 + name 1_593_KEY_8 + 2186346504 + name 1_593_KEY_9 + 2186346505 + name 1_593_KEY_POWER + 2186346506 + name 1_593_KEY_CH_UP + 2186346511 + name 1_593_KEY_CH_DOWN + 2186346512 + name 1_593_KEY_MUTE + 2186346513 + name 1_593_KEY_VOL_DOWN + 2186346514 + name 1_593_KEY_VOL_UP + 2186346516 + name 1_593_KEY_MNSELECT + 2186346519 + name 1_593_KEY_EXIT + 2186346520 + name 1_593_KEY_AV + 2186346537 + name 1_593_KEY_MENU + 2186346543 + name 1_593_KEY_MUP + 2186346544 + name 1_593_KEY_MDOWN + 2186346545 + name 1_593_KEY_MLEFT + 2186346546 + name 1_593_KEY_MRIGHT + 2186346547 + name 1_594_KEY_0 + 2186412032 + name 1_594_KEY_1 + 2186412033 + name 1_594_KEY_2 + 2186412034 + name 1_594_KEY_3 + 2186412035 + name 1_594_KEY_4 + 2186412036 + name 1_594_KEY_5 + 2186412037 + name 1_594_KEY_6 + 2186412038 + name 1_594_KEY_7 + 2186412039 + name 1_594_KEY_8 + 2186412040 + name 1_594_KEY_9 + 2186412041 + name 1_594_KEY_POWER + 2186412042 + name 1_594_KEY_CH_UP + 2186412047 + name 1_594_KEY_CH_DOWN + 2186412048 + name 1_594_KEY_MUTE + 2186412049 + name 1_594_KEY_MNSELECT + 2186412055 + name 1_594_KEY_AV + 2186412073 + name 1_595_KEY_0 + 2186477568 + name 1_595_KEY_1 + 2186477569 + name 1_595_KEY_2 + 2186477570 + name 1_595_KEY_3 + 2186477571 + name 1_595_KEY_4 + 2186477572 + name 1_595_KEY_5 + 2186477573 + name 1_595_KEY_6 + 2186477574 + name 1_595_KEY_7 + 2186477575 + name 1_595_KEY_8 + 2186477576 + name 1_595_KEY_9 + 2186477577 + name 1_595_KEY_POWER + 2186477578 + name 1_595_KEY_CH_UP + 2186477583 + name 1_595_KEY_CH_DOWN + 2186477584 + name 1_595_KEY_MUTE + 2186477585 + name 1_595_KEY_VOL_DOWN + 2186477586 + name 1_595_KEY_VOL_UP + 2186477588 + name 1_595_KEY_MNSELECT + 2186477591 + name 1_595_KEY_EXIT + 2186477592 + name 1_595_KEY_AV + 2186477609 + name 1_595_KEY_MENU + 2186477615 + name 1_595_KEY_MUP + 2186477616 + name 1_595_KEY_MDOWN + 2186477617 + name 1_595_KEY_MLEFT + 2186477618 + name 1_595_KEY_MRIGHT + 2186477619 + name 1_596_KEY_0 + 2186543104 + name 1_596_KEY_1 + 2186543105 + name 1_596_KEY_2 + 2186543106 + name 1_596_KEY_3 + 2186543107 + name 1_596_KEY_4 + 2186543108 + name 1_596_KEY_5 + 2186543109 + name 1_596_KEY_6 + 2186543110 + name 1_596_KEY_7 + 2186543111 + name 1_596_KEY_8 + 2186543112 + name 1_596_KEY_9 + 2186543113 + name 1_596_KEY_POWER + 2186543114 + name 1_596_TWO_DIGITS + 2186543117 + name 1_596_KEY_CH_UP + 2186543119 + name 1_596_KEY_CH_DOWN + 2186543120 + name 1_596_KEY_MUTE + 2186543121 + name 1_596_KEY_VOL_DOWN + 2186543122 + name 1_596_KEY_VOL_UP + 2186543124 + name 1_596_KEY_BLUE + 2186543139 + name 1_596_KEY_GREEN + 2186543140 + name 1_596_KEY_RED + 2186543141 + name 1_596_KEY_YELLOW + 2186543142 + name 1_596_KEY_MENU + 2186543151 + name 1_596_KEY_On + 2186543181 + name 1_597_KEY_0 + 2186608640 + name 1_597_KEY_1 + 2186608641 + name 1_597_KEY_2 + 2186608642 + name 1_597_KEY_3 + 2186608643 + name 1_597_KEY_4 + 2186608644 + name 1_597_KEY_5 + 2186608645 + name 1_597_KEY_6 + 2186608646 + name 1_597_KEY_7 + 2186608647 + name 1_597_KEY_8 + 2186608648 + name 1_597_KEY_9 + 2186608649 + name 1_597_KEY_POWER + 2186608650 + name 1_597_KEY_CH_UP + 2186608655 + name 1_597_KEY_CH_DOWN + 2186608656 + name 1_597_KEY_MUTE + 2186608657 + name 1_597_KEY_VOL_DOWN + 2186608658 + name 1_597_KEY_VOL_UP + 2186608660 + name 1_597_KEY_MNSELECT + 2186608663 + name 1_597_KEY_MENU + 2186608687 + name 1_597_KEY_MUP + 2186608688 + name 1_597_KEY_MDOWN + 2186608689 + name 1_597_KEY_MLEFT + 2186608690 + name 1_597_KEY_MRIGHT + 2186608691 + name 1_597_KEY_Sleep + 2186608703 + name 1_597_KEY_Off + 2186608718 + name 1_598_KEY_0 + 2186674176 + name 1_598_KEY_1 + 2186674177 + name 1_598_KEY_2 + 2186674178 + name 1_598_KEY_3 + 2186674179 + name 1_598_KEY_4 + 2186674180 + name 1_598_KEY_5 + 2186674181 + name 1_598_KEY_6 + 2186674182 + name 1_598_KEY_7 + 2186674183 + name 1_598_KEY_8 + 2186674184 + name 1_598_KEY_9 + 2186674185 + name 1_598_KEY_POWER + 2186674186 + name 1_598_KEY_CH_UP + 2186674191 + name 1_598_KEY_CH_DOWN + 2186674192 + name 1_598_KEY_MUTE + 2186674193 + name 1_598_KEY_MENU + 2186674223 + name 1_598_KEY_MUP + 2186674224 + name 1_598_KEY_MDOWN + 2186674225 + name 1_599_KEY_0 + 2186739712 + name 1_599_KEY_1 + 2186739713 + name 1_599_KEY_2 + 2186739714 + name 1_599_KEY_3 + 2186739715 + name 1_599_KEY_4 + 2186739716 + name 1_599_KEY_5 + 2186739717 + name 1_599_KEY_6 + 2186739718 + name 1_599_KEY_7 + 2186739719 + name 1_599_KEY_8 + 2186739720 + name 1_599_KEY_9 + 2186739721 + name 1_599_KEY_POWER + 2186739722 + name 1_599_TWO_DIGITS + 2186739725 + name 1_599_KEY_CH_UP + 2186739727 + name 1_599_KEY_CH_DOWN + 2186739728 + name 1_599_KEY_MUTE + 2186739729 + name 1_599_KEY_VOL_DOWN + 2186739730 + name 1_599_KEY_VOL_UP + 2186739732 + name 1_599_KEY_MNSELECT + 2186739735 + name 1_599_KEY_EXIT + 2186739736 + name 1_599_KEY_BLUE + 2186739747 + name 1_599_KEY_GREEN + 2186739748 + name 1_599_KEY_RED + 2186739749 + name 1_599_KEY_YELLOW + 2186739750 + name 1_599_KEY_MENU + 2186739759 + name 1_599_KEY_MUP + 2186739760 + name 1_599_KEY_MDOWN + 2186739761 + name 1_599_KEY_On + 2186739789 + name 1_599_KEY_Off + 2186739790 + name 1_600_KEY_0 + 2186805248 + name 1_600_KEY_1 + 2186805249 + name 1_600_KEY_2 + 2186805250 + name 1_600_KEY_3 + 2186805251 + name 1_600_KEY_4 + 2186805252 + name 1_600_KEY_5 + 2186805253 + name 1_600_KEY_6 + 2186805254 + name 1_600_KEY_7 + 2186805255 + name 1_600_KEY_8 + 2186805256 + name 1_600_KEY_9 + 2186805257 + name 1_600_KEY_POWER + 2186805258 + name 1_600_TWO_DIGITS + 2186805261 + name 1_600_KEY_CH_UP + 2186805263 + name 1_600_KEY_CH_DOWN + 2186805264 + name 1_600_KEY_MUTE + 2186805265 + name 1_600_KEY_VOL_DOWN + 2186805266 + name 1_600_CH_PREVIOUS + 2186805267 + name 1_600_KEY_VOL_UP + 2186805268 + name 1_600_KEY_MNSELECT + 2186805271 + name 1_600_KEY_EXIT + 2186805272 + name 1_600_KEY_MNRETRUN + 2186805280 + name 1_600_KEY_BLUE + 2186805283 + name 1_600_KEY_GREEN + 2186805284 + name 1_600_KEY_RED + 2186805285 + name 1_600_KEY_YELLOW + 2186805286 + name 1_600_KEY_MENU + 2186805295 + name 1_600_KEY_MUP + 2186805296 + name 1_600_KEY_MDOWN + 2186805297 + name 1_600_KEY_MLEFT + 2186805298 + name 1_600_KEY_MRIGHT + 2186805299 + name 1_600_KEY_Sleep + 2186805311 + name 1_600_KEY_DSubtitle + 2186805316 + name 1_600_KEY_On + 2186805325 + name 1_600_KEY_Off + 2186805326 + name 1_601_KEY_0 + 2186870784 + name 1_601_KEY_1 + 2186870785 + name 1_601_KEY_2 + 2186870786 + name 1_601_KEY_3 + 2186870787 + name 1_601_KEY_4 + 2186870788 + name 1_601_KEY_5 + 2186870789 + name 1_601_KEY_6 + 2186870790 + name 1_601_KEY_7 + 2186870791 + name 1_601_KEY_8 + 2186870792 + name 1_601_KEY_9 + 2186870793 + name 1_601_KEY_POWER + 2186870794 + name 1_601_TWO_DIGITS + 2186870797 + name 1_601_KEY_CH_UP + 2186870799 + name 1_601_KEY_CH_DOWN + 2186870800 + name 1_601_KEY_MUTE + 2186870801 + name 1_601_KEY_VOL_DOWN + 2186870802 + name 1_601_KEY_VOL_UP + 2186870804 + name 1_601_KEY_EXIT + 2186870808 + name 1_601_KEY_GUIDE + 2186870811 + name 1_601_KEY_BLUE + 2186870819 + name 1_601_KEY_GREEN + 2186870820 + name 1_601_KEY_RED + 2186870821 + name 1_601_KEY_YELLOW + 2186870822 + name 1_601_KEY_MENU + 2186870831 + name 1_601_KEY_MUP + 2186870832 + name 1_601_KEY_MDOWN + 2186870833 + name 1_601_KEY_Sleep + 2186870847 + name 1_601_KEY_DSubtitle + 2186870852 + name 1_601_KEY_On + 2186870861 + name 1_602_KEY_0 + 2186936320 + name 1_602_KEY_1 + 2186936321 + name 1_602_KEY_2 + 2186936322 + name 1_602_KEY_3 + 2186936323 + name 1_602_KEY_4 + 2186936324 + name 1_602_KEY_5 + 2186936325 + name 1_602_KEY_6 + 2186936326 + name 1_602_KEY_7 + 2186936327 + name 1_602_KEY_8 + 2186936328 + name 1_602_KEY_9 + 2186936329 + name 1_602_KEY_POWER + 2186936330 + name 1_602_KEY_CH_UP + 2186936335 + name 1_602_KEY_CH_DOWN + 2186936336 + name 1_602_KEY_MUTE + 2186936337 + name 1_602_KEY_VOL_DOWN + 2186936338 + name 1_602_CH_PREVIOUS + 2186936339 + name 1_602_KEY_VOL_UP + 2186936340 + name 1_602_KEY_MNSELECT + 2186936343 + name 1_602_KEY_EXIT + 2186936344 + name 1_602_KEY_GUIDE + 2186936347 + name 1_602_KEY_MENU + 2186936367 + name 1_602_KEY_MUP + 2186936368 + name 1_602_KEY_MDOWN + 2186936369 + name 1_602_KEY_MLEFT + 2186936370 + name 1_602_KEY_MRIGHT + 2186936371 + name 1_602_KEY_On + 2186936397 + name 1_602_KEY_Off + 2186936398 + name 1_603_KEY_0 + 2187001856 + name 1_603_KEY_1 + 2187001857 + name 1_603_KEY_2 + 2187001858 + name 1_603_KEY_3 + 2187001859 + name 1_603_KEY_4 + 2187001860 + name 1_603_KEY_5 + 2187001861 + name 1_603_KEY_6 + 2187001862 + name 1_603_KEY_7 + 2187001863 + name 1_603_KEY_8 + 2187001864 + name 1_603_KEY_9 + 2187001865 + name 1_603_KEY_POWER + 2187001866 + name 1_603_KEY_CH_UP + 2187001871 + name 1_603_KEY_CH_DOWN + 2187001872 + name 1_603_KEY_MUTE + 2187001873 + name 1_603_CH_PREVIOUS + 2187001875 + name 1_604_KEY_0 + 2187067392 + name 1_604_KEY_1 + 2187067393 + name 1_604_KEY_2 + 2187067394 + name 1_604_KEY_3 + 2187067395 + name 1_604_KEY_4 + 2187067396 + name 1_604_KEY_5 + 2187067397 + name 1_604_KEY_6 + 2187067398 + name 1_604_KEY_7 + 2187067399 + name 1_604_KEY_8 + 2187067400 + name 1_604_KEY_9 + 2187067401 + name 1_604_KEY_POWER + 2187067402 + name 1_604_KEY_CH_UP + 2187067407 + name 1_604_KEY_CH_DOWN + 2187067408 + name 1_604_KEY_MUTE + 2187067409 + name 1_604_CH_PREVIOUS + 2187067411 + name 1_605_KEY_0 + 2187132928 + name 1_605_KEY_1 + 2187132929 + name 1_605_KEY_2 + 2187132930 + name 1_605_KEY_3 + 2187132931 + name 1_605_KEY_4 + 2187132932 + name 1_605_KEY_5 + 2187132933 + name 1_605_KEY_6 + 2187132934 + name 1_605_KEY_7 + 2187132935 + name 1_605_KEY_8 + 2187132936 + name 1_605_KEY_9 + 2187132937 + name 1_605_KEY_POWER + 2187132938 + name 1_605_KEY_CH_UP + 2187132943 + name 1_605_KEY_CH_DOWN + 2187132944 + name 1_605_KEY_MUTE + 2187132945 + name 1_605_KEY_VOL_DOWN + 2187132946 + name 1_605_KEY_VOL_UP + 2187132948 + name 1_605_KEY_MNSELECT + 2187132951 + name 1_605_KEY_EXIT + 2187132952 + name 1_605_KEY_MENU + 2187132975 + name 1_605_KEY_MUP + 2187132976 + name 1_605_KEY_MDOWN + 2187132977 + name 1_605_KEY_MLEFT + 2187132978 + name 1_605_KEY_MRIGHT + 2187132979 + name 1_606_KEY_0 + 2187198464 + name 1_606_KEY_1 + 2187198465 + name 1_606_KEY_2 + 2187198466 + name 1_606_KEY_3 + 2187198467 + name 1_606_KEY_4 + 2187198468 + name 1_606_KEY_5 + 2187198469 + name 1_606_KEY_6 + 2187198470 + name 1_606_KEY_7 + 2187198471 + name 1_606_KEY_8 + 2187198472 + name 1_606_KEY_9 + 2187198473 + name 1_606_KEY_POWER + 2187198474 + name 1_606_KEY_CH_UP + 2187198479 + name 1_606_KEY_CH_DOWN + 2187198480 + name 1_606_KEY_MUTE + 2187198481 + name 1_606_KEY_VOL_DOWN + 2187198482 + name 1_606_KEY_VOL_UP + 2187198484 + name 1_606_KEY_MNSELECT + 2187198487 + name 1_606_KEY_EXIT + 2187198488 + name 1_606_KEY_MENU + 2187198511 + name 1_606_KEY_MUP + 2187198512 + name 1_606_KEY_MDOWN + 2187198513 + name 1_606_KEY_MLEFT + 2187198514 + name 1_606_KEY_MRIGHT + 2187198515 + name 1_607_KEY_0 + 2187264000 + name 1_607_KEY_1 + 2187264001 + name 1_607_KEY_2 + 2187264002 + name 1_607_KEY_3 + 2187264003 + name 1_607_KEY_4 + 2187264004 + name 1_607_KEY_5 + 2187264005 + name 1_607_KEY_6 + 2187264006 + name 1_607_KEY_7 + 2187264007 + name 1_607_KEY_8 + 2187264008 + name 1_607_KEY_9 + 2187264009 + name 1_607_KEY_POWER + 2187264010 + name 1_607_TWO_DIGITS + 2187264013 + name 1_607_KEY_CH_UP + 2187264015 + name 1_607_KEY_CH_DOWN + 2187264016 + name 1_607_KEY_MUTE + 2187264017 + name 1_607_KEY_VOL_DOWN + 2187264018 + name 1_607_CH_PREVIOUS + 2187264019 + name 1_607_KEY_VOL_UP + 2187264020 + name 1_607_KEY_MNSELECT + 2187264023 + name 1_607_KEY_MENU + 2187264047 + name 1_607_KEY_MUP + 2187264048 + name 1_607_KEY_MDOWN + 2187264049 + name 1_607_KEY_MLEFT + 2187264050 + name 1_607_KEY_MRIGHT + 2187264051 + name 1_607_KEY_Sleep + 2187264063 + name 1_608_KEY_0 + 2187329536 + name 1_608_KEY_1 + 2187329537 + name 1_608_KEY_2 + 2187329538 + name 1_608_KEY_3 + 2187329539 + name 1_608_KEY_4 + 2187329540 + name 1_608_KEY_5 + 2187329541 + name 1_608_KEY_6 + 2187329542 + name 1_608_KEY_7 + 2187329543 + name 1_608_KEY_8 + 2187329544 + name 1_608_KEY_9 + 2187329545 + name 1_608_KEY_POWER + 2187329546 + name 1_608_TWO_DIGITS + 2187329549 + name 1_608_KEY_CH_UP + 2187329551 + name 1_608_KEY_CH_DOWN + 2187329552 + name 1_608_KEY_MUTE + 2187329553 + name 1_608_KEY_VOL_DOWN + 2187329554 + name 1_608_CH_PREVIOUS + 2187329555 + name 1_608_KEY_VOL_UP + 2187329556 + name 1_608_KEY_MNSELECT + 2187329559 + name 1_608_KEY_MENU + 2187329583 + name 1_608_KEY_MUP + 2187329584 + name 1_608_KEY_MDOWN + 2187329585 + name 1_608_KEY_MLEFT + 2187329586 + name 1_608_KEY_MRIGHT + 2187329587 + name 1_608_KEY_Sleep + 2187329599 + name 1_609_KEY_0 + 2187395072 + name 1_609_KEY_1 + 2187395073 + name 1_609_KEY_2 + 2187395074 + name 1_609_KEY_3 + 2187395075 + name 1_609_KEY_4 + 2187395076 + name 1_609_KEY_5 + 2187395077 + name 1_609_KEY_6 + 2187395078 + name 1_609_KEY_7 + 2187395079 + name 1_609_KEY_8 + 2187395080 + name 1_609_KEY_9 + 2187395081 + name 1_609_KEY_POWER + 2187395082 + name 1_609_KEY_CH_UP + 2187395087 + name 1_609_KEY_CH_DOWN + 2187395088 + name 1_609_KEY_MUTE + 2187395089 + name 1_609_KEY_VOL_DOWN + 2187395090 + name 1_609_KEY_VOL_UP + 2187395092 + name 1_609_KEY_MNSELECT + 2187395095 + name 1_609_KEY_MENU + 2187395119 + name 1_609_KEY_MUP + 2187395120 + name 1_609_KEY_MDOWN + 2187395121 + name 1_609_KEY_MLEFT + 2187395122 + name 1_609_KEY_MRIGHT + 2187395123 + name 1_609_KEY_On + 2187395149 + name 1_609_KEY_Off + 2187395150 + name 1_610_KEY_0 + 2187460608 + name 1_610_KEY_1 + 2187460609 + name 1_610_KEY_2 + 2187460610 + name 1_610_KEY_3 + 2187460611 + name 1_610_KEY_4 + 2187460612 + name 1_610_KEY_5 + 2187460613 + name 1_610_KEY_6 + 2187460614 + name 1_610_KEY_7 + 2187460615 + name 1_610_KEY_8 + 2187460616 + name 1_610_KEY_9 + 2187460617 + name 1_610_KEY_POWER + 2187460618 + name 1_610_KEY_CH_UP + 2187460623 + name 1_610_KEY_CH_DOWN + 2187460624 + name 1_610_KEY_MUTE + 2187460625 + name 1_610_KEY_VOL_DOWN + 2187460626 + name 1_610_KEY_VOL_UP + 2187460628 + name 1_610_KEY_MNSELECT + 2187460631 + name 1_610_KEY_MENU + 2187460655 + name 1_610_KEY_MUP + 2187460656 + name 1_610_KEY_MDOWN + 2187460657 + name 1_610_KEY_MLEFT + 2187460658 + name 1_610_KEY_MRIGHT + 2187460659 + name 1_610_KEY_On + 2187460685 + name 1_610_KEY_Off + 2187460686 + name 1_611_KEY_0 + 2187526144 + name 1_611_KEY_1 + 2187526145 + name 1_611_KEY_2 + 2187526146 + name 1_611_KEY_3 + 2187526147 + name 1_611_KEY_4 + 2187526148 + name 1_611_KEY_5 + 2187526149 + name 1_611_KEY_6 + 2187526150 + name 1_611_KEY_7 + 2187526151 + name 1_611_KEY_8 + 2187526152 + name 1_611_KEY_9 + 2187526153 + name 1_611_KEY_POWER + 2187526154 + name 1_611_TWO_DIGITS + 2187526157 + name 1_611_KEY_CH_UP + 2187526159 + name 1_611_KEY_CH_DOWN + 2187526160 + name 1_611_KEY_MUTE + 2187526161 + name 1_611_CH_PREVIOUS + 2187526163 + name 1_611_KEY_MNSELECT + 2187526167 + name 1_611_KEY_MENU + 2187526191 + name 1_611_KEY_MUP + 2187526192 + name 1_611_KEY_MDOWN + 2187526193 + name 1_611_KEY_MLEFT + 2187526194 + name 1_611_KEY_MRIGHT + 2187526195 + name 1_611_KEY_On + 2187526221 + name 1_612_KEY_0 + 2187591680 + name 1_612_KEY_1 + 2187591681 + name 1_612_KEY_2 + 2187591682 + name 1_612_KEY_3 + 2187591683 + name 1_612_KEY_4 + 2187591684 + name 1_612_KEY_5 + 2187591685 + name 1_612_KEY_6 + 2187591686 + name 1_612_KEY_7 + 2187591687 + name 1_612_KEY_8 + 2187591688 + name 1_612_KEY_9 + 2187591689 + name 1_612_KEY_POWER + 2187591690 + name 1_612_KEY_CH_UP + 2187591695 + name 1_612_KEY_CH_DOWN + 2187591696 + name 1_612_KEY_MNSELECT + 2187591703 + name 1_613_KEY_0 + 2187657216 + name 1_613_KEY_1 + 2187657217 + name 1_613_KEY_2 + 2187657218 + name 1_613_KEY_3 + 2187657219 + name 1_613_KEY_4 + 2187657220 + name 1_613_KEY_5 + 2187657221 + name 1_613_KEY_6 + 2187657222 + name 1_613_KEY_7 + 2187657223 + name 1_613_KEY_8 + 2187657224 + name 1_613_KEY_9 + 2187657225 + name 1_613_KEY_POWER + 2187657226 + name 1_613_KEY_CH_UP + 2187657231 + name 1_613_KEY_CH_DOWN + 2187657232 + name 1_613_KEY_MNSELECT + 2187657239 + name 1_614_KEY_0 + 2187722752 + name 1_614_KEY_1 + 2187722753 + name 1_614_KEY_2 + 2187722754 + name 1_614_KEY_3 + 2187722755 + name 1_614_KEY_4 + 2187722756 + name 1_614_KEY_5 + 2187722757 + name 1_614_KEY_6 + 2187722758 + name 1_614_KEY_7 + 2187722759 + name 1_614_KEY_8 + 2187722760 + name 1_614_KEY_9 + 2187722761 + name 1_614_KEY_POWER + 2187722762 + name 1_614_KEY_CH_UP + 2187722767 + name 1_614_KEY_CH_DOWN + 2187722768 + name 1_614_KEY_MUTE + 2187722769 + name 1_614_KEY_VOL_DOWN + 2187722770 + name 1_614_KEY_VOL_UP + 2187722772 + name 1_614_KEY_EXIT + 2187722776 + name 1_615_KEY_0 + 2187788288 + name 1_615_KEY_1 + 2187788289 + name 1_615_KEY_2 + 2187788290 + name 1_615_KEY_3 + 2187788291 + name 1_615_KEY_4 + 2187788292 + name 1_615_KEY_5 + 2187788293 + name 1_615_KEY_6 + 2187788294 + name 1_615_KEY_7 + 2187788295 + name 1_615_KEY_8 + 2187788296 + name 1_615_KEY_9 + 2187788297 + name 1_615_KEY_POWER + 2187788298 + name 1_615_KEY_CH_UP + 2187788303 + name 1_615_KEY_CH_DOWN + 2187788304 + name 1_615_KEY_MUTE + 2187788305 + name 1_615_KEY_VOL_DOWN + 2187788306 + name 1_615_KEY_VOL_UP + 2187788308 + name 1_615_KEY_MENU + 2187788335 + name 1_615_KEY_MUP + 2187788336 + name 1_615_KEY_MDOWN + 2187788337 + name 1_615_KEY_MLEFT + 2187788338 + name 1_615_KEY_MRIGHT + 2187788339 + name 1_615_KEY_Sleep + 2187788351 + name 1_615_KEY_Off + 2187788366 + name 1_616_KEY_0 + 2187853824 + name 1_616_KEY_1 + 2187853825 + name 1_616_KEY_2 + 2187853826 + name 1_616_KEY_3 + 2187853827 + name 1_616_KEY_4 + 2187853828 + name 1_616_KEY_5 + 2187853829 + name 1_616_KEY_6 + 2187853830 + name 1_616_KEY_7 + 2187853831 + name 1_616_KEY_8 + 2187853832 + name 1_616_KEY_9 + 2187853833 + name 1_616_KEY_POWER + 2187853834 + name 1_616_KEY_CH_UP + 2187853839 + name 1_616_KEY_CH_DOWN + 2187853840 + name 1_616_KEY_MUTE + 2187853841 + name 1_616_KEY_VOL_DOWN + 2187853842 + name 1_616_KEY_VOL_UP + 2187853844 + name 1_616_KEY_MENU + 2187853871 + name 1_616_KEY_MUP + 2187853872 + name 1_616_KEY_MDOWN + 2187853873 + name 1_616_KEY_MLEFT + 2187853874 + name 1_616_KEY_MRIGHT + 2187853875 + name 1_616_KEY_Sleep + 2187853887 + name 1_616_KEY_Off + 2187853902 + name 1_617_KEY_0 + 2187919360 + name 1_617_KEY_1 + 2187919361 + name 1_617_KEY_2 + 2187919362 + name 1_617_KEY_3 + 2187919363 + name 1_617_KEY_4 + 2187919364 + name 1_617_KEY_5 + 2187919365 + name 1_617_KEY_6 + 2187919366 + name 1_617_KEY_7 + 2187919367 + name 1_617_KEY_8 + 2187919368 + name 1_617_KEY_9 + 2187919369 + name 1_617_KEY_POWER + 2187919370 + name 1_617_KEY_CH_UP + 2187919375 + name 1_617_KEY_CH_DOWN + 2187919376 + name 1_617_KEY_MUTE + 2187919377 + name 1_617_KEY_VOL_DOWN + 2187919378 + name 1_617_KEY_VOL_UP + 2187919380 + name 1_617_KEY_MNSELECT + 2187919383 + name 1_617_KEY_MENU + 2187919407 + name 1_617_KEY_MUP + 2187919408 + name 1_617_KEY_MDOWN + 2187919409 + name 1_617_KEY_MLEFT + 2187919410 + name 1_617_KEY_MRIGHT + 2187919411 + name 1_617_KEY_Off + 2187919438 + name 1_618_KEY_0 + 2187984896 + name 1_618_KEY_1 + 2187984897 + name 1_618_KEY_2 + 2187984898 + name 1_618_KEY_3 + 2187984899 + name 1_618_KEY_4 + 2187984900 + name 1_618_KEY_5 + 2187984901 + name 1_618_KEY_6 + 2187984902 + name 1_618_KEY_7 + 2187984903 + name 1_618_KEY_8 + 2187984904 + name 1_618_KEY_9 + 2187984905 + name 1_618_KEY_POWER + 2187984906 + name 1_618_TWO_DIGITS + 2187984909 + name 1_618_KEY_CH_UP + 2187984911 + name 1_618_KEY_CH_DOWN + 2187984912 + name 1_618_KEY_MUTE + 2187984913 + name 1_618_KEY_VOL_DOWN + 2187984914 + name 1_618_KEY_VOL_UP + 2187984916 + name 1_618_KEY_MNSELECT + 2187984919 + name 1_618_KEY_MENU + 2187984943 + name 1_618_KEY_MUP + 2187984944 + name 1_618_KEY_MDOWN + 2187984945 + name 1_618_KEY_MLEFT + 2187984946 + name 1_618_KEY_MRIGHT + 2187984947 + name 1_619_KEY_0 + 2188050432 + name 1_619_KEY_1 + 2188050433 + name 1_619_KEY_2 + 2188050434 + name 1_619_KEY_3 + 2188050435 + name 1_619_KEY_4 + 2188050436 + name 1_619_KEY_5 + 2188050437 + name 1_619_KEY_6 + 2188050438 + name 1_619_KEY_7 + 2188050439 + name 1_619_KEY_8 + 2188050440 + name 1_619_KEY_9 + 2188050441 + name 1_619_KEY_POWER + 2188050442 + name 1_619_KEY_CH_UP + 2188050447 + name 1_619_KEY_CH_DOWN + 2188050448 + name 1_619_KEY_MUTE + 2188050449 + name 1_619_KEY_VOL_DOWN + 2188050450 + name 1_619_KEY_VOL_UP + 2188050452 + name 1_619_KEY_MNSELECT + 2188050455 + name 1_619_KEY_EXIT + 2188050456 + name 1_619_KEY_BLUE + 2188050467 + name 1_619_KEY_GREEN + 2188050468 + name 1_619_KEY_RED + 2188050469 + name 1_619_KEY_YELLOW + 2188050470 + name 1_619_KEY_MENU + 2188050479 + name 1_619_KEY_MUP + 2188050480 + name 1_619_KEY_MDOWN + 2188050481 + name 1_619_KEY_MLEFT + 2188050482 + name 1_619_KEY_MRIGHT + 2188050483 + name 1_619_KEY_On + 2188050509 + name 1_619_KEY_Off + 2188050510 + name 1_620_KEY_0 + 2188115968 + name 1_620_KEY_1 + 2188115969 + name 1_620_KEY_2 + 2188115970 + name 1_620_KEY_3 + 2188115971 + name 1_620_KEY_4 + 2188115972 + name 1_620_KEY_5 + 2188115973 + name 1_620_KEY_6 + 2188115974 + name 1_620_KEY_7 + 2188115975 + name 1_620_KEY_8 + 2188115976 + name 1_620_KEY_9 + 2188115977 + name 1_620_KEY_POWER + 2188115978 + name 1_620_KEY_CH_UP + 2188115983 + name 1_620_KEY_CH_DOWN + 2188115984 + name 1_620_KEY_MUTE + 2188115985 + name 1_621_KEY_0 + 2188181504 + name 1_621_KEY_1 + 2188181505 + name 1_621_KEY_2 + 2188181506 + name 1_621_KEY_3 + 2188181507 + name 1_621_KEY_4 + 2188181508 + name 1_621_KEY_5 + 2188181509 + name 1_621_KEY_6 + 2188181510 + name 1_621_KEY_7 + 2188181511 + name 1_621_KEY_8 + 2188181512 + name 1_621_KEY_9 + 2188181513 + name 1_621_KEY_POWER + 2188181514 + name 1_621_KEY_CH_UP + 2188181519 + name 1_621_KEY_CH_DOWN + 2188181520 + name 1_621_KEY_MUTE + 2188181521 + name 1_621_KEY_VOL_DOWN + 2188181522 + name 1_621_KEY_VOL_UP + 2188181524 + name 1_621_KEY_EXIT + 2188181528 + name 1_621_KEY_MENU + 2188181551 + name 1_621_KEY_MUP + 2188181552 + name 1_621_KEY_MDOWN + 2188181553 + name 1_621_KEY_MLEFT + 2188181554 + name 1_621_KEY_MRIGHT + 2188181555 + name 1_621_KEY_Sleep + 2188181567 + name 1_622_KEY_0 + 2188247040 + name 1_622_KEY_1 + 2188247041 + name 1_622_KEY_2 + 2188247042 + name 1_622_KEY_3 + 2188247043 + name 1_622_KEY_4 + 2188247044 + name 1_622_KEY_5 + 2188247045 + name 1_622_KEY_6 + 2188247046 + name 1_622_KEY_7 + 2188247047 + name 1_622_KEY_8 + 2188247048 + name 1_622_KEY_9 + 2188247049 + name 1_622_KEY_POWER + 2188247050 + name 1_622_TWO_DIGITS + 2188247053 + name 1_622_KEY_CH_UP + 2188247055 + name 1_622_KEY_CH_DOWN + 2188247056 + name 1_622_KEY_MUTE + 2188247057 + name 1_622_KEY_VOL_DOWN + 2188247058 + name 1_622_KEY_VOL_UP + 2188247060 + name 1_622_KEY_MNSELECT + 2188247063 + name 1_622_KEY_EXIT + 2188247064 + name 1_622_KEY_GUIDE + 2188247067 + name 1_622_KEY_BLUE + 2188247075 + name 1_622_KEY_GREEN + 2188247076 + name 1_622_KEY_RED + 2188247077 + name 1_622_KEY_YELLOW + 2188247078 + name 1_622_KEY_MENU + 2188247087 + name 1_622_KEY_MUP + 2188247088 + name 1_622_KEY_MDOWN + 2188247089 + name 1_622_KEY_MLEFT + 2188247090 + name 1_622_KEY_MRIGHT + 2188247091 + name 1_622_KEY_DSubtitle + 2188247108 + name 1_622_KEY_On + 2188247117 + name 1_622_KEY_Off + 2188247118 + name 1_623_KEY_0 + 2188312576 + name 1_623_KEY_1 + 2188312577 + name 1_623_KEY_2 + 2188312578 + name 1_623_KEY_3 + 2188312579 + name 1_623_KEY_4 + 2188312580 + name 1_623_KEY_5 + 2188312581 + name 1_623_KEY_6 + 2188312582 + name 1_623_KEY_7 + 2188312583 + name 1_623_KEY_8 + 2188312584 + name 1_623_KEY_9 + 2188312585 + name 1_623_KEY_POWER + 2188312586 + name 1_623_TWO_DIGITS + 2188312589 + name 1_623_KEY_CH_UP + 2188312591 + name 1_623_KEY_CH_DOWN + 2188312592 + name 1_623_KEY_MUTE + 2188312593 + name 1_623_KEY_VOL_DOWN + 2188312594 + name 1_623_KEY_VOL_UP + 2188312596 + name 1_623_KEY_MNSELECT + 2188312599 + name 1_623_KEY_EXIT + 2188312600 + name 1_623_KEY_GUIDE + 2188312603 + name 1_623_KEY_BLUE + 2188312611 + name 1_623_KEY_GREEN + 2188312612 + name 1_623_KEY_RED + 2188312613 + name 1_623_KEY_YELLOW + 2188312614 + name 1_623_KEY_MENU + 2188312623 + name 1_623_KEY_MUP + 2188312624 + name 1_623_KEY_MDOWN + 2188312625 + name 1_623_KEY_MLEFT + 2188312626 + name 1_623_KEY_MRIGHT + 2188312627 + name 1_623_KEY_DSubtitle + 2188312644 + name 1_623_KEY_On + 2188312653 + name 1_623_KEY_Off + 2188312654 + name 1_624_KEY_0 + 2188378112 + name 1_624_KEY_1 + 2188378113 + name 1_624_KEY_2 + 2188378114 + name 1_624_KEY_3 + 2188378115 + name 1_624_KEY_4 + 2188378116 + name 1_624_KEY_5 + 2188378117 + name 1_624_KEY_6 + 2188378118 + name 1_624_KEY_7 + 2188378119 + name 1_624_KEY_8 + 2188378120 + name 1_624_KEY_9 + 2188378121 + name 1_624_KEY_POWER + 2188378122 + name 1_624_TWO_DIGITS + 2188378125 + name 1_624_KEY_CH_UP + 2188378127 + name 1_624_KEY_CH_DOWN + 2188378128 + name 1_624_KEY_MUTE + 2188378129 + name 1_624_KEY_VOL_DOWN + 2188378130 + name 1_624_KEY_VOL_UP + 2188378132 + name 1_624_KEY_MNSELECT + 2188378135 + name 1_624_KEY_EXIT + 2188378136 + name 1_624_KEY_GUIDE + 2188378139 + name 1_624_KEY_BLUE + 2188378147 + name 1_624_KEY_GREEN + 2188378148 + name 1_624_KEY_RED + 2188378149 + name 1_624_KEY_YELLOW + 2188378150 + name 1_624_KEY_MENU + 2188378159 + name 1_624_KEY_MUP + 2188378160 + name 1_624_KEY_MDOWN + 2188378161 + name 1_624_KEY_MLEFT + 2188378162 + name 1_624_KEY_MRIGHT + 2188378163 + name 1_624_KEY_DSubtitle + 2188378180 + name 1_624_KEY_On + 2188378189 + name 1_624_KEY_Off + 2188378190 + name 1_625_KEY_0 + 2188443648 + name 1_625_KEY_1 + 2188443649 + name 1_625_KEY_2 + 2188443650 + name 1_625_KEY_3 + 2188443651 + name 1_625_KEY_4 + 2188443652 + name 1_625_KEY_5 + 2188443653 + name 1_625_KEY_6 + 2188443654 + name 1_625_KEY_7 + 2188443655 + name 1_625_KEY_8 + 2188443656 + name 1_625_KEY_9 + 2188443657 + name 1_625_KEY_POWER + 2188443658 + name 1_625_KEY_CH_UP + 2188443663 + name 1_625_KEY_CH_DOWN + 2188443664 + name 1_625_KEY_MUTE + 2188443665 + name 1_625_KEY_VOL_DOWN + 2188443666 + name 1_625_CH_PREVIOUS + 2188443667 + name 1_625_KEY_VOL_UP + 2188443668 + name 1_625_KEY_MNSELECT + 2188443671 + name 1_625_KEY_EXIT + 2188443672 + name 1_625_KEY_GUIDE + 2188443675 + name 1_625_KEY_MENU + 2188443695 + name 1_625_KEY_MUP + 2188443696 + name 1_625_KEY_MDOWN + 2188443697 + name 1_625_KEY_MLEFT + 2188443698 + name 1_625_KEY_MRIGHT + 2188443699 + name 1_625_KEY_On + 2188443725 + name 1_625_KEY_Off + 2188443726 + name 1_626_KEY_0 + 2188509184 + name 1_626_KEY_1 + 2188509185 + name 1_626_KEY_2 + 2188509186 + name 1_626_KEY_3 + 2188509187 + name 1_626_KEY_4 + 2188509188 + name 1_626_KEY_5 + 2188509189 + name 1_626_KEY_6 + 2188509190 + name 1_626_KEY_7 + 2188509191 + name 1_626_KEY_8 + 2188509192 + name 1_626_KEY_9 + 2188509193 + name 1_626_KEY_POWER + 2188509194 + name 1_626_KEY_CH_UP + 2188509199 + name 1_626_KEY_CH_DOWN + 2188509200 + name 1_626_KEY_MUTE + 2188509201 + name 1_626_KEY_VOL_DOWN + 2188509202 + name 1_626_KEY_VOL_UP + 2188509204 + name 1_626_KEY_MNSELECT + 2188509207 + name 1_626_KEY_EXIT + 2188509208 + name 1_626_KEY_GUIDE + 2188509211 + name 1_626_KEY_BLUE + 2188509219 + name 1_626_KEY_GREEN + 2188509220 + name 1_626_KEY_RED + 2188509221 + name 1_626_KEY_YELLOW + 2188509222 + name 1_626_KEY_MENU + 2188509231 + name 1_626_KEY_MUP + 2188509232 + name 1_626_KEY_MDOWN + 2188509233 + name 1_626_KEY_MLEFT + 2188509234 + name 1_626_KEY_MRIGHT + 2188509235 + name 1_626_KEY_DSubtitle + 2188509252 + name 1_626_KEY_Off + 2188509262 + name 1_627_KEY_0 + 2188574720 + name 1_627_KEY_1 + 2188574721 + name 1_627_KEY_2 + 2188574722 + name 1_627_KEY_3 + 2188574723 + name 1_627_KEY_4 + 2188574724 + name 1_627_KEY_5 + 2188574725 + name 1_627_KEY_6 + 2188574726 + name 1_627_KEY_7 + 2188574727 + name 1_627_KEY_8 + 2188574728 + name 1_627_KEY_9 + 2188574729 + name 1_627_KEY_POWER + 2188574730 + name 1_627_KEY_CH_UP + 2188574735 + name 1_627_KEY_CH_DOWN + 2188574736 + name 1_627_KEY_MUTE + 2188574737 + name 1_627_KEY_VOL_DOWN + 2188574738 + name 1_627_CH_PREVIOUS + 2188574739 + name 1_627_KEY_VOL_UP + 2188574740 + name 1_627_KEY_MNSELECT + 2188574743 + name 1_627_KEY_EXIT + 2188574744 + name 1_627_KEY_GUIDE + 2188574747 + name 1_627_KEY_MENU + 2188574767 + name 1_627_KEY_MUP + 2188574768 + name 1_627_KEY_MDOWN + 2188574769 + name 1_627_KEY_MLEFT + 2188574770 + name 1_627_KEY_MRIGHT + 2188574771 + name 1_627_KEY_DSubtitle + 2188574788 + name 1_627_KEY_On + 2188574797 + name 1_628_KEY_0 + 2188640256 + name 1_628_KEY_1 + 2188640257 + name 1_628_KEY_2 + 2188640258 + name 1_628_KEY_3 + 2188640259 + name 1_628_KEY_4 + 2188640260 + name 1_628_KEY_5 + 2188640261 + name 1_628_KEY_6 + 2188640262 + name 1_628_KEY_7 + 2188640263 + name 1_628_KEY_8 + 2188640264 + name 1_628_KEY_9 + 2188640265 + name 1_628_KEY_POWER + 2188640266 + name 1_628_TWO_DIGITS + 2188640269 + name 1_628_KEY_CH_UP + 2188640271 + name 1_628_KEY_CH_DOWN + 2188640272 + name 1_628_KEY_MUTE + 2188640273 + name 1_628_KEY_VOL_DOWN + 2188640274 + name 1_628_CH_PREVIOUS + 2188640275 + name 1_628_KEY_VOL_UP + 2188640276 + name 1_628_KEY_MNSELECT + 2188640279 + name 1_628_KEY_GUIDE + 2188640283 + name 1_628_KEY_BLUE + 2188640291 + name 1_628_KEY_GREEN + 2188640292 + name 1_628_KEY_RED + 2188640293 + name 1_628_KEY_YELLOW + 2188640294 + name 1_628_KEY_MENU + 2188640303 + name 1_628_KEY_MUP + 2188640304 + name 1_628_KEY_MDOWN + 2188640305 + name 1_628_KEY_MLEFT + 2188640306 + name 1_628_KEY_MRIGHT + 2188640307 + name 1_628_KEY_On + 2188640333 + name 1_629_KEY_0 + 2188705792 + name 1_629_KEY_1 + 2188705793 + name 1_629_KEY_2 + 2188705794 + name 1_629_KEY_3 + 2188705795 + name 1_629_KEY_4 + 2188705796 + name 1_629_KEY_5 + 2188705797 + name 1_629_KEY_6 + 2188705798 + name 1_629_KEY_7 + 2188705799 + name 1_629_KEY_8 + 2188705800 + name 1_629_KEY_9 + 2188705801 + name 1_629_KEY_POWER + 2188705802 + name 1_629_KEY_CH_UP + 2188705807 + name 1_629_KEY_CH_DOWN + 2188705808 + name 1_629_KEY_MUTE + 2188705809 + name 1_629_KEY_VOL_DOWN + 2188705810 + name 1_629_CH_PREVIOUS + 2188705811 + name 1_629_KEY_VOL_UP + 2188705812 + name 1_629_KEY_MNSELECT + 2188705815 + name 1_629_KEY_EXIT + 2188705816 + name 1_629_KEY_GUIDE + 2188705819 + name 1_629_KEY_BLUE + 2188705827 + name 1_629_KEY_GREEN + 2188705828 + name 1_629_KEY_RED + 2188705829 + name 1_629_KEY_YELLOW + 2188705830 + name 1_629_KEY_MENU + 2188705839 + name 1_629_KEY_MUP + 2188705840 + name 1_629_KEY_MDOWN + 2188705841 + name 1_629_KEY_MLEFT + 2188705842 + name 1_629_KEY_MRIGHT + 2188705843 + name 1_630_KEY_0 + 2188771328 + name 1_630_KEY_1 + 2188771329 + name 1_630_KEY_2 + 2188771330 + name 1_630_KEY_3 + 2188771331 + name 1_630_KEY_4 + 2188771332 + name 1_630_KEY_5 + 2188771333 + name 1_630_KEY_6 + 2188771334 + name 1_630_KEY_7 + 2188771335 + name 1_630_KEY_8 + 2188771336 + name 1_630_KEY_9 + 2188771337 + name 1_630_KEY_POWER + 2188771338 + name 1_630_KEY_CH_UP + 2188771343 + name 1_630_KEY_CH_DOWN + 2188771344 + name 1_630_KEY_MUTE + 2188771345 + name 1_630_KEY_VOL_DOWN + 2188771346 + name 1_630_CH_PREVIOUS + 2188771347 + name 1_630_KEY_VOL_UP + 2188771348 + name 1_630_KEY_MNSELECT + 2188771351 + name 1_630_KEY_EXIT + 2188771352 + name 1_630_KEY_GUIDE + 2188771355 + name 1_630_KEY_MNRETRUN + 2188771360 + name 1_630_KEY_BLUE + 2188771363 + name 1_630_KEY_GREEN + 2188771364 + name 1_630_KEY_RED + 2188771365 + name 1_630_KEY_YELLOW + 2188771366 + name 1_630_KEY_MENU + 2188771375 + name 1_630_KEY_MUP + 2188771376 + name 1_630_KEY_MDOWN + 2188771377 + name 1_630_KEY_MLEFT + 2188771378 + name 1_630_KEY_MRIGHT + 2188771379 + name 1_630_KEY_DSubtitle + 2188771396 + name 1_631_KEY_0 + 2188836864 + name 1_631_KEY_1 + 2188836865 + name 1_631_KEY_2 + 2188836866 + name 1_631_KEY_3 + 2188836867 + name 1_631_KEY_4 + 2188836868 + name 1_631_KEY_5 + 2188836869 + name 1_631_KEY_6 + 2188836870 + name 1_631_KEY_7 + 2188836871 + name 1_631_KEY_8 + 2188836872 + name 1_631_KEY_9 + 2188836873 + name 1_631_KEY_POWER + 2188836874 + name 1_631_KEY_CH_UP + 2188836879 + name 1_631_KEY_CH_DOWN + 2188836880 + name 1_631_KEY_MUTE + 2188836881 + name 1_631_KEY_VOL_DOWN + 2188836882 + name 1_631_CH_PREVIOUS + 2188836883 + name 1_631_KEY_VOL_UP + 2188836884 + name 1_631_KEY_MNSELECT + 2188836887 + name 1_631_KEY_EXIT + 2188836888 + name 1_631_KEY_GUIDE + 2188836891 + name 1_631_KEY_BLUE + 2188836899 + name 1_631_KEY_GREEN + 2188836900 + name 1_631_KEY_RED + 2188836901 + name 1_631_KEY_YELLOW + 2188836902 + name 1_631_KEY_MENU + 2188836911 + name 1_631_KEY_MUP + 2188836912 + name 1_631_KEY_MDOWN + 2188836913 + name 1_631_KEY_MLEFT + 2188836914 + name 1_631_KEY_MRIGHT + 2188836915 + name 1_631_KEY_DSubtitle + 2188836932 + name 1_632_KEY_0 + 2188902400 + name 1_632_KEY_1 + 2188902401 + name 1_632_KEY_2 + 2188902402 + name 1_632_KEY_3 + 2188902403 + name 1_632_KEY_4 + 2188902404 + name 1_632_KEY_5 + 2188902405 + name 1_632_KEY_6 + 2188902406 + name 1_632_KEY_7 + 2188902407 + name 1_632_KEY_8 + 2188902408 + name 1_632_KEY_9 + 2188902409 + name 1_632_KEY_POWER + 2188902410 + name 1_632_KEY_CH_UP + 2188902415 + name 1_632_KEY_CH_DOWN + 2188902416 + name 1_632_KEY_MUTE + 2188902417 + name 1_632_KEY_VOL_DOWN + 2188902418 + name 1_632_CH_PREVIOUS + 2188902419 + name 1_632_KEY_VOL_UP + 2188902420 + name 1_632_KEY_MNSELECT + 2188902423 + name 1_632_KEY_EXIT + 2188902424 + name 1_632_KEY_GUIDE + 2188902427 + name 1_632_KEY_BLUE + 2188902435 + name 1_632_KEY_GREEN + 2188902436 + name 1_632_KEY_RED + 2188902437 + name 1_632_KEY_YELLOW + 2188902438 + name 1_632_KEY_MENU + 2188902447 + name 1_632_KEY_MUP + 2188902448 + name 1_632_KEY_MDOWN + 2188902449 + name 1_632_KEY_MLEFT + 2188902450 + name 1_632_KEY_MRIGHT + 2188902451 + name 1_632_KEY_DSubtitle + 2188902468 + name 1_633_KEY_0 + 2188967936 + name 1_633_KEY_1 + 2188967937 + name 1_633_KEY_2 + 2188967938 + name 1_633_KEY_3 + 2188967939 + name 1_633_KEY_4 + 2188967940 + name 1_633_KEY_5 + 2188967941 + name 1_633_KEY_6 + 2188967942 + name 1_633_KEY_7 + 2188967943 + name 1_633_KEY_8 + 2188967944 + name 1_633_KEY_9 + 2188967945 + name 1_633_KEY_POWER + 2188967946 + name 1_633_KEY_CH_UP + 2188967951 + name 1_633_KEY_CH_DOWN + 2188967952 + name 1_633_KEY_MUTE + 2188967953 + name 1_633_KEY_VOL_DOWN + 2188967954 + name 1_633_CH_PREVIOUS + 2188967955 + name 1_633_KEY_VOL_UP + 2188967956 + name 1_633_KEY_MNSELECT + 2188967959 + name 1_633_KEY_EXIT + 2188967960 + name 1_633_KEY_GUIDE + 2188967963 + name 1_633_KEY_MENU + 2188967983 + name 1_633_KEY_MUP + 2188967984 + name 1_633_KEY_MDOWN + 2188967985 + name 1_633_KEY_MLEFT + 2188967986 + name 1_633_KEY_MRIGHT + 2188967987 + name 1_634_KEY_0 + 2189033472 + name 1_634_KEY_1 + 2189033473 + name 1_634_KEY_2 + 2189033474 + name 1_634_KEY_3 + 2189033475 + name 1_634_KEY_4 + 2189033476 + name 1_634_KEY_5 + 2189033477 + name 1_634_KEY_6 + 2189033478 + name 1_634_KEY_7 + 2189033479 + name 1_634_KEY_8 + 2189033480 + name 1_634_KEY_9 + 2189033481 + name 1_634_KEY_POWER + 2189033482 + name 1_634_KEY_CH_UP + 2189033487 + name 1_634_KEY_CH_DOWN + 2189033488 + name 1_634_KEY_MUTE + 2189033489 + name 1_634_KEY_VOL_DOWN + 2189033490 + name 1_634_KEY_VOL_UP + 2189033492 + name 1_634_KEY_MNSELECT + 2189033495 + name 1_634_KEY_EXIT + 2189033496 + name 1_634_KEY_GUIDE + 2189033499 + name 1_634_KEY_MENU + 2189033519 + name 1_634_KEY_MUP + 2189033520 + name 1_634_KEY_MDOWN + 2189033521 + name 1_634_KEY_MLEFT + 2189033522 + name 1_634_KEY_MRIGHT + 2189033523 + name 1_634_KEY_DSubtitle + 2189033540 + name 1_635_KEY_0 + 2189099008 + name 1_635_KEY_1 + 2189099009 + name 1_635_KEY_2 + 2189099010 + name 1_635_KEY_3 + 2189099011 + name 1_635_KEY_4 + 2189099012 + name 1_635_KEY_5 + 2189099013 + name 1_635_KEY_6 + 2189099014 + name 1_635_KEY_7 + 2189099015 + name 1_635_KEY_8 + 2189099016 + name 1_635_KEY_9 + 2189099017 + name 1_635_KEY_POWER + 2189099018 + name 1_635_KEY_CH_UP + 2189099023 + name 1_635_KEY_CH_DOWN + 2189099024 + name 1_635_KEY_MUTE + 2189099025 + name 1_635_KEY_VOL_DOWN + 2189099026 + name 1_635_CH_PREVIOUS + 2189099027 + name 1_635_KEY_VOL_UP + 2189099028 + name 1_635_KEY_MNSELECT + 2189099031 + name 1_635_KEY_EXIT + 2189099032 + name 1_635_KEY_GUIDE + 2189099035 + name 1_635_KEY_MENU + 2189099055 + name 1_635_KEY_MUP + 2189099056 + name 1_635_KEY_MDOWN + 2189099057 + name 1_635_KEY_MLEFT + 2189099058 + name 1_635_KEY_MRIGHT + 2189099059 + name 1_635_KEY_DSubtitle + 2189099076 + name 1_636_KEY_0 + 2189164544 + name 1_636_KEY_1 + 2189164545 + name 1_636_KEY_2 + 2189164546 + name 1_636_KEY_3 + 2189164547 + name 1_636_KEY_4 + 2189164548 + name 1_636_KEY_5 + 2189164549 + name 1_636_KEY_6 + 2189164550 + name 1_636_KEY_7 + 2189164551 + name 1_636_KEY_8 + 2189164552 + name 1_636_KEY_9 + 2189164553 + name 1_636_KEY_POWER + 2189164554 + name 1_636_KEY_CH_UP + 2189164559 + name 1_636_KEY_CH_DOWN + 2189164560 + name 1_636_KEY_MUTE + 2189164561 + name 1_636_KEY_VOL_DOWN + 2189164562 + name 1_636_KEY_VOL_UP + 2189164564 + name 1_636_KEY_MNSELECT + 2189164567 + name 1_636_KEY_MENU + 2189164591 + name 1_636_KEY_MUP + 2189164592 + name 1_636_KEY_MDOWN + 2189164593 + name 1_636_KEY_MLEFT + 2189164594 + name 1_636_KEY_MRIGHT + 2189164595 + name 1_637_KEY_0 + 2189230080 + name 1_637_KEY_1 + 2189230081 + name 1_637_KEY_2 + 2189230082 + name 1_637_KEY_3 + 2189230083 + name 1_637_KEY_4 + 2189230084 + name 1_637_KEY_5 + 2189230085 + name 1_637_KEY_6 + 2189230086 + name 1_637_KEY_7 + 2189230087 + name 1_637_KEY_8 + 2189230088 + name 1_637_KEY_9 + 2189230089 + name 1_637_KEY_POWER + 2189230090 + name 1_637_TWO_DIGITS + 2189230093 + name 1_637_KEY_CH_UP + 2189230095 + name 1_637_KEY_CH_DOWN + 2189230096 + name 1_637_KEY_MUTE + 2189230097 + name 1_637_KEY_VOL_DOWN + 2189230098 + name 1_637_CH_PREVIOUS + 2189230099 + name 1_637_KEY_VOL_UP + 2189230100 + name 1_637_KEY_MNSELECT + 2189230103 + name 1_637_KEY_EXIT + 2189230104 + name 1_637_KEY_GUIDE + 2189230107 + name 1_637_KEY_AV + 2189230121 + name 1_637_KEY_MENU + 2189230127 + name 1_637_KEY_MUP + 2189230128 + name 1_637_KEY_MDOWN + 2189230129 + name 1_637_KEY_MLEFT + 2189230130 + name 1_637_KEY_MRIGHT + 2189230131 + name 1_637_KEY_TTOnOff + 2189230153 + name 1_638_KEY_0 + 2189295616 + name 1_638_KEY_1 + 2189295617 + name 1_638_KEY_2 + 2189295618 + name 1_638_KEY_3 + 2189295619 + name 1_638_KEY_4 + 2189295620 + name 1_638_KEY_5 + 2189295621 + name 1_638_KEY_6 + 2189295622 + name 1_638_KEY_7 + 2189295623 + name 1_638_KEY_8 + 2189295624 + name 1_638_KEY_9 + 2189295625 + name 1_638_KEY_POWER + 2189295626 + name 1_638_KEY_CH_UP + 2189295631 + name 1_638_KEY_CH_DOWN + 2189295632 + name 1_638_KEY_MUTE + 2189295633 + name 1_638_KEY_VOL_DOWN + 2189295634 + name 1_638_KEY_VOL_UP + 2189295636 + name 1_638_KEY_MNSELECT + 2189295639 + name 1_638_KEY_EXIT + 2189295640 + name 1_638_KEY_GUIDE + 2189295643 + name 1_638_KEY_MNRETRUN + 2189295648 + name 1_638_KEY_MENU + 2189295663 + name 1_638_KEY_MUP + 2189295664 + name 1_638_KEY_MDOWN + 2189295665 + name 1_638_KEY_MLEFT + 2189295666 + name 1_638_KEY_MRIGHT + 2189295667 + name 1_638_KEY_DSubtitle + 2189295684 + name 1_639_KEY_0 + 2189361152 + name 1_639_KEY_1 + 2189361153 + name 1_639_KEY_2 + 2189361154 + name 1_639_KEY_3 + 2189361155 + name 1_639_KEY_4 + 2189361156 + name 1_639_KEY_5 + 2189361157 + name 1_639_KEY_6 + 2189361158 + name 1_639_KEY_7 + 2189361159 + name 1_639_KEY_8 + 2189361160 + name 1_639_KEY_9 + 2189361161 + name 1_639_KEY_POWER + 2189361162 + name 1_639_KEY_CH_UP + 2189361167 + name 1_639_KEY_CH_DOWN + 2189361168 + name 1_639_KEY_MNSELECT + 2189361175 + name 1_639_KEY_MENU + 2189361199 + name 1_639_KEY_MUP + 2189361200 + name 1_639_KEY_MDOWN + 2189361201 + name 1_639_KEY_MLEFT + 2189361202 + name 1_639_KEY_MRIGHT + 2189361203 + name 1_640_KEY_0 + 2189426688 + name 1_640_KEY_1 + 2189426689 + name 1_640_KEY_2 + 2189426690 + name 1_640_KEY_3 + 2189426691 + name 1_640_KEY_4 + 2189426692 + name 1_640_KEY_5 + 2189426693 + name 1_640_KEY_6 + 2189426694 + name 1_640_KEY_7 + 2189426695 + name 1_640_KEY_8 + 2189426696 + name 1_640_KEY_9 + 2189426697 + name 1_640_KEY_POWER + 2189426698 + name 1_640_KEY_CH_UP + 2189426703 + name 1_640_KEY_CH_DOWN + 2189426704 + name 1_640_CH_PREVIOUS + 2189426707 + name 1_640_KEY_MNSELECT + 2189426711 + name 1_640_KEY_AV + 2189426729 + name 1_640_KEY_MENU + 2189426735 + name 1_640_KEY_MUP + 2189426736 + name 1_640_KEY_MDOWN + 2189426737 + name 1_640_KEY_MLEFT + 2189426738 + name 1_640_KEY_MRIGHT + 2189426739 + name 1_641_KEY_0 + 2189492224 + name 1_641_KEY_1 + 2189492225 + name 1_641_KEY_2 + 2189492226 + name 1_641_KEY_3 + 2189492227 + name 1_641_KEY_4 + 2189492228 + name 1_641_KEY_5 + 2189492229 + name 1_641_KEY_6 + 2189492230 + name 1_641_KEY_7 + 2189492231 + name 1_641_KEY_8 + 2189492232 + name 1_641_KEY_9 + 2189492233 + name 1_641_KEY_POWER + 2189492234 + name 1_641_TWO_DIGITS + 2189492237 + name 1_641_KEY_CH_UP + 2189492239 + name 1_641_KEY_CH_DOWN + 2189492240 + name 1_641_CH_PREVIOUS + 2189492243 + name 1_641_KEY_MNSELECT + 2189492247 + name 1_641_KEY_EXIT + 2189492248 + name 1_641_KEY_GUIDE + 2189492251 + name 1_641_KEY_BLUE + 2189492259 + name 1_641_KEY_GREEN + 2189492260 + name 1_641_KEY_RED + 2189492261 + name 1_641_KEY_YELLOW + 2189492262 + name 1_641_KEY_MENU + 2189492271 + name 1_641_KEY_MUP + 2189492272 + name 1_641_KEY_MDOWN + 2189492273 + name 1_641_KEY_MLEFT + 2189492274 + name 1_641_KEY_MRIGHT + 2189492275 + name 1_641_KEY_DGuide + 2189492291 + name 1_642_KEY_0 + 2189557760 + name 1_642_KEY_1 + 2189557761 + name 1_642_KEY_2 + 2189557762 + name 1_642_KEY_3 + 2189557763 + name 1_642_KEY_4 + 2189557764 + name 1_642_KEY_5 + 2189557765 + name 1_642_KEY_6 + 2189557766 + name 1_642_KEY_7 + 2189557767 + name 1_642_KEY_8 + 2189557768 + name 1_642_KEY_9 + 2189557769 + name 1_642_KEY_POWER + 2189557770 + name 1_642_KEY_CH_UP + 2189557775 + name 1_642_KEY_CH_DOWN + 2189557776 + name 1_642_KEY_MNSELECT + 2189557783 + name 1_642_KEY_EXIT + 2189557784 + name 1_642_KEY_GUIDE + 2189557787 + name 1_642_KEY_BLUE + 2189557795 + name 1_642_KEY_GREEN + 2189557796 + name 1_642_KEY_RED + 2189557797 + name 1_642_KEY_YELLOW + 2189557798 + name 1_642_KEY_AV + 2189557801 + name 1_642_KEY_MENU + 2189557807 + name 1_642_KEY_MUP + 2189557808 + name 1_642_KEY_MDOWN + 2189557809 + name 1_642_KEY_MLEFT + 2189557810 + name 1_642_KEY_MRIGHT + 2189557811 + name 1_642_KEY_DGuide + 2189557827 + name 1_643_KEY_0 + 2189623296 + name 1_643_KEY_1 + 2189623297 + name 1_643_KEY_2 + 2189623298 + name 1_643_KEY_3 + 2189623299 + name 1_643_KEY_4 + 2189623300 + name 1_643_KEY_5 + 2189623301 + name 1_643_KEY_6 + 2189623302 + name 1_643_KEY_7 + 2189623303 + name 1_643_KEY_8 + 2189623304 + name 1_643_KEY_9 + 2189623305 + name 1_643_KEY_POWER + 2189623306 + name 1_643_KEY_CH_UP + 2189623311 + name 1_643_KEY_CH_DOWN + 2189623312 + name 1_643_CH_PREVIOUS + 2189623315 + name 1_643_KEY_MENU + 2189623343 + name 1_643_KEY_MUP + 2189623344 + name 1_643_KEY_MDOWN + 2189623345 + name 1_643_KEY_MLEFT + 2189623346 + name 1_643_KEY_MRIGHT + 2189623347 + name 1_644_KEY_0 + 2189688832 + name 1_644_KEY_1 + 2189688833 + name 1_644_KEY_2 + 2189688834 + name 1_644_KEY_3 + 2189688835 + name 1_644_KEY_4 + 2189688836 + name 1_644_KEY_5 + 2189688837 + name 1_644_KEY_6 + 2189688838 + name 1_644_KEY_7 + 2189688839 + name 1_644_KEY_8 + 2189688840 + name 1_644_KEY_9 + 2189688841 + name 1_644_KEY_POWER + 2189688842 + name 1_644_KEY_CH_UP + 2189688847 + name 1_644_KEY_CH_DOWN + 2189688848 + name 1_644_KEY_EXIT + 2189688856 + name 1_644_KEY_GUIDE + 2189688859 + name 1_644_KEY_MENU + 2189688879 + name 1_644_KEY_MUP + 2189688880 + name 1_644_KEY_MDOWN + 2189688881 + name 1_644_KEY_MLEFT + 2189688882 + name 1_644_KEY_MRIGHT + 2189688883 + name 1_644_KEY_DGuide + 2189688899 + name 1_645_KEY_0 + 2189754368 + name 1_645_KEY_1 + 2189754369 + name 1_645_KEY_2 + 2189754370 + name 1_645_KEY_3 + 2189754371 + name 1_645_KEY_4 + 2189754372 + name 1_645_KEY_5 + 2189754373 + name 1_645_KEY_6 + 2189754374 + name 1_645_KEY_7 + 2189754375 + name 1_645_KEY_8 + 2189754376 + name 1_645_KEY_9 + 2189754377 + name 1_645_KEY_POWER + 2189754378 + name 1_645_KEY_CH_UP + 2189754383 + name 1_645_KEY_CH_DOWN + 2189754384 + name 1_645_CH_PREVIOUS + 2189754387 + name 1_645_KEY_MNSELECT + 2189754391 + name 1_645_KEY_GUIDE + 2189754395 + name 1_645_KEY_BLUE + 2189754403 + name 1_645_KEY_GREEN + 2189754404 + name 1_645_KEY_RED + 2189754405 + name 1_645_KEY_YELLOW + 2189754406 + name 1_645_KEY_MENU + 2189754415 + name 1_645_KEY_MUP + 2189754416 + name 1_645_KEY_MDOWN + 2189754417 + name 1_645_KEY_MLEFT + 2189754418 + name 1_645_KEY_MRIGHT + 2189754419 + name 1_645_KEY_On + 2189754445 + name 1_646_KEY_0 + 2189819904 + name 1_646_KEY_1 + 2189819905 + name 1_646_KEY_2 + 2189819906 + name 1_646_KEY_3 + 2189819907 + name 1_646_KEY_4 + 2189819908 + name 1_646_KEY_5 + 2189819909 + name 1_646_KEY_6 + 2189819910 + name 1_646_KEY_7 + 2189819911 + name 1_646_KEY_8 + 2189819912 + name 1_646_KEY_9 + 2189819913 + name 1_646_KEY_POWER + 2189819914 + name 1_646_TWO_DIGITS + 2189819917 + name 1_646_KEY_CH_UP + 2189819919 + name 1_646_KEY_CH_DOWN + 2189819920 + name 1_646_KEY_BLUE + 2189819939 + name 1_646_KEY_GREEN + 2189819940 + name 1_646_KEY_RED + 2189819941 + name 1_646_KEY_YELLOW + 2189819942 + name 1_646_KEY_MENU + 2189819951 + name 1_646_KEY_On + 2189819981 + name 1_647_KEY_0 + 2189885440 + name 1_647_KEY_1 + 2189885441 + name 1_647_KEY_2 + 2189885442 + name 1_647_KEY_3 + 2189885443 + name 1_647_KEY_4 + 2189885444 + name 1_647_KEY_5 + 2189885445 + name 1_647_KEY_6 + 2189885446 + name 1_647_KEY_7 + 2189885447 + name 1_647_KEY_8 + 2189885448 + name 1_647_KEY_9 + 2189885449 + name 1_647_KEY_POWER + 2189885450 + name 1_647_KEY_CH_UP + 2189885455 + name 1_647_KEY_CH_DOWN + 2189885456 + name 1_648_KEY_0 + 2189950976 + name 1_648_KEY_1 + 2189950977 + name 1_648_KEY_2 + 2189950978 + name 1_648_KEY_3 + 2189950979 + name 1_648_KEY_4 + 2189950980 + name 1_648_KEY_5 + 2189950981 + name 1_648_KEY_6 + 2189950982 + name 1_648_KEY_7 + 2189950983 + name 1_648_KEY_8 + 2189950984 + name 1_648_KEY_9 + 2189950985 + name 1_648_KEY_POWER + 2189950986 + name 1_648_KEY_CH_UP + 2189950991 + name 1_648_KEY_CH_DOWN + 2189950992 + name 1_648_KEY_MENU + 2189951023 + name 1_648_KEY_MUP + 2189951024 + name 1_648_KEY_MDOWN + 2189951025 + name 1_649_KEY_0 + 2190016512 + name 1_649_KEY_1 + 2190016513 + name 1_649_KEY_2 + 2190016514 + name 1_649_KEY_3 + 2190016515 + name 1_649_KEY_4 + 2190016516 + name 1_649_KEY_5 + 2190016517 + name 1_649_KEY_6 + 2190016518 + name 1_649_KEY_7 + 2190016519 + name 1_649_KEY_8 + 2190016520 + name 1_649_KEY_9 + 2190016521 + name 1_649_KEY_POWER + 2190016522 + name 1_649_TWO_DIGITS + 2190016525 + name 1_649_KEY_CH_UP + 2190016527 + name 1_649_KEY_CH_DOWN + 2190016528 + name 1_650_KEY_0 + 2190082048 + name 1_650_KEY_1 + 2190082049 + name 1_650_KEY_2 + 2190082050 + name 1_650_KEY_3 + 2190082051 + name 1_650_KEY_4 + 2190082052 + name 1_650_KEY_5 + 2190082053 + name 1_650_KEY_6 + 2190082054 + name 1_650_KEY_7 + 2190082055 + name 1_650_KEY_8 + 2190082056 + name 1_650_KEY_9 + 2190082057 + name 1_650_KEY_POWER + 2190082058 + name 1_650_TWO_DIGITS + 2190082061 + name 1_650_KEY_CH_UP + 2190082063 + name 1_650_KEY_CH_DOWN + 2190082064 + name 1_650_KEY_MNSELECT + 2190082071 + name 1_650_KEY_BLUE + 2190082083 + name 1_650_KEY_GREEN + 2190082084 + name 1_650_KEY_RED + 2190082085 + name 1_650_KEY_YELLOW + 2190082086 + name 1_650_KEY_MENU + 2190082095 + name 1_650_KEY_MUP + 2190082096 + name 1_650_KEY_MDOWN + 2190082097 + name 1_650_KEY_On + 2190082125 + name 1_651_KEY_0 + 2190147584 + name 1_651_KEY_1 + 2190147585 + name 1_651_KEY_2 + 2190147586 + name 1_651_KEY_3 + 2190147587 + name 1_651_KEY_4 + 2190147588 + name 1_651_KEY_5 + 2190147589 + name 1_651_KEY_6 + 2190147590 + name 1_651_KEY_7 + 2190147591 + name 1_651_KEY_8 + 2190147592 + name 1_651_KEY_9 + 2190147593 + name 1_651_KEY_POWER + 2190147594 + name 1_651_KEY_CH_UP + 2190147599 + name 1_651_KEY_CH_DOWN + 2190147600 + name 1_652_KEY_0 + 2190213120 + name 1_652_KEY_1 + 2190213121 + name 1_652_KEY_2 + 2190213122 + name 1_652_KEY_3 + 2190213123 + name 1_652_KEY_4 + 2190213124 + name 1_652_KEY_5 + 2190213125 + name 1_652_KEY_6 + 2190213126 + name 1_652_KEY_7 + 2190213127 + name 1_652_KEY_8 + 2190213128 + name 1_652_KEY_9 + 2190213129 + name 1_652_KEY_POWER + 2190213130 + name 1_652_KEY_CH_UP + 2190213135 + name 1_652_KEY_CH_DOWN + 2190213136 + name 1_653_KEY_0 + 2190278656 + name 1_653_KEY_1 + 2190278657 + name 1_653_KEY_2 + 2190278658 + name 1_653_KEY_3 + 2190278659 + name 1_653_KEY_4 + 2190278660 + name 1_653_KEY_5 + 2190278661 + name 1_653_KEY_6 + 2190278662 + name 1_653_KEY_7 + 2190278663 + name 1_653_KEY_8 + 2190278664 + name 1_653_KEY_9 + 2190278665 + name 1_653_KEY_POWER + 2190278666 + name 1_653_KEY_CH_UP + 2190278671 + name 1_653_KEY_CH_DOWN + 2190278672 + name 1_654_KEY_0 + 2190344192 + name 1_654_KEY_1 + 2190344193 + name 1_654_KEY_2 + 2190344194 + name 1_654_KEY_3 + 2190344195 + name 1_654_KEY_4 + 2190344196 + name 1_654_KEY_5 + 2190344197 + name 1_654_KEY_6 + 2190344198 + name 1_654_KEY_7 + 2190344199 + name 1_654_KEY_8 + 2190344200 + name 1_654_KEY_9 + 2190344201 + name 1_654_KEY_POWER + 2190344202 + name 1_654_TWO_DIGITS + 2190344205 + name 1_654_KEY_CH_UP + 2190344207 + name 1_654_KEY_CH_DOWN + 2190344208 + name 1_654_CH_PREVIOUS + 2190344211 + name 1_654_KEY_MNSELECT + 2190344215 + name 1_654_KEY_MUP + 2190344240 + name 1_654_KEY_MDOWN + 2190344241 + name 1_655_KEY_0 + 2190409728 + name 1_655_KEY_1 + 2190409729 + name 1_655_KEY_2 + 2190409730 + name 1_655_KEY_3 + 2190409731 + name 1_655_KEY_4 + 2190409732 + name 1_655_KEY_5 + 2190409733 + name 1_655_KEY_6 + 2190409734 + name 1_655_KEY_7 + 2190409735 + name 1_655_KEY_8 + 2190409736 + name 1_655_KEY_9 + 2190409737 + name 1_655_KEY_POWER + 2190409738 + name 1_655_KEY_CH_UP + 2190409743 + name 1_655_KEY_CH_DOWN + 2190409744 + name 1_655_KEY_MNSELECT + 2190409751 + name 1_655_KEY_EXIT + 2190409752 + name 1_655_KEY_GUIDE + 2190409755 + name 1_655_KEY_MNRETRUN + 2190409760 + name 1_655_KEY_BLUE + 2190409763 + name 1_655_KEY_GREEN + 2190409764 + name 1_655_KEY_RED + 2190409765 + name 1_655_KEY_YELLOW + 2190409766 + name 1_655_KEY_MENU + 2190409775 + name 1_655_KEY_MUP + 2190409776 + name 1_655_KEY_MDOWN + 2190409777 + name 1_655_KEY_MLEFT + 2190409778 + name 1_655_KEY_MRIGHT + 2190409779 + name 1_655_KEY_DSubtitle + 2190409796 + name 1_655_KEY_TTOnOff + 2190409801 + name 1_656_KEY_0 + 2190475264 + name 1_656_KEY_1 + 2190475265 + name 1_656_KEY_2 + 2190475266 + name 1_656_KEY_3 + 2190475267 + name 1_656_KEY_4 + 2190475268 + name 1_656_KEY_5 + 2190475269 + name 1_656_KEY_6 + 2190475270 + name 1_656_KEY_7 + 2190475271 + name 1_656_KEY_8 + 2190475272 + name 1_656_KEY_9 + 2190475273 + name 1_656_KEY_POWER + 2190475274 + name 1_656_KEY_CH_UP + 2190475279 + name 1_656_KEY_CH_DOWN + 2190475280 + name 1_656_KEY_MUTE + 2190475281 + name 1_656_KEY_VOL_DOWN + 2190475282 + name 1_656_KEY_VOL_UP + 2190475284 + name 1_656_KEY_MNSELECT + 2190475287 + name 1_656_KEY_EXIT + 2190475288 + name 1_656_KEY_GUIDE + 2190475291 + name 1_656_KEY_MNRETRUN + 2190475296 + name 1_656_KEY_MENU + 2190475311 + name 1_656_KEY_MUP + 2190475312 + name 1_656_KEY_MDOWN + 2190475313 + name 1_656_KEY_MLEFT + 2190475314 + name 1_656_KEY_MRIGHT + 2190475315 + name 1_656_KEY_DSubtitle + 2190475332 + name 1_657_KEY_0 + 2190540800 + name 1_657_KEY_1 + 2190540801 + name 1_657_KEY_2 + 2190540802 + name 1_657_KEY_3 + 2190540803 + name 1_657_KEY_4 + 2190540804 + name 1_657_KEY_5 + 2190540805 + name 1_657_KEY_6 + 2190540806 + name 1_657_KEY_7 + 2190540807 + name 1_657_KEY_8 + 2190540808 + name 1_657_KEY_9 + 2190540809 + name 1_657_KEY_POWER + 2190540810 + name 1_657_KEY_CH_UP + 2190540815 + name 1_657_KEY_CH_DOWN + 2190540816 + name 1_657_KEY_MNSELECT + 2190540823 + name 1_657_KEY_EXIT + 2190540824 + name 1_657_KEY_GUIDE + 2190540827 + name 1_657_KEY_MNRETRUN + 2190540832 + name 1_657_KEY_BLUE + 2190540835 + name 1_657_KEY_GREEN + 2190540836 + name 1_657_KEY_RED + 2190540837 + name 1_657_KEY_YELLOW + 2190540838 + name 1_657_KEY_MENU + 2190540847 + name 1_657_KEY_MUP + 2190540848 + name 1_657_KEY_MDOWN + 2190540849 + name 1_657_KEY_MLEFT + 2190540850 + name 1_657_KEY_MRIGHT + 2190540851 + name 1_657_KEY_DSubtitle + 2190540868 + name 1_657_KEY_TTOnOff + 2190540873 + name 1_658_KEY_0 + 2190606336 + name 1_658_KEY_1 + 2190606337 + name 1_658_KEY_2 + 2190606338 + name 1_658_KEY_3 + 2190606339 + name 1_658_KEY_4 + 2190606340 + name 1_658_KEY_5 + 2190606341 + name 1_658_KEY_6 + 2190606342 + name 1_658_KEY_7 + 2190606343 + name 1_658_KEY_8 + 2190606344 + name 1_658_KEY_9 + 2190606345 + name 1_658_KEY_POWER + 2190606346 + name 1_658_KEY_CH_UP + 2190606351 + name 1_658_KEY_CH_DOWN + 2190606352 + name 1_658_KEY_MUTE + 2190606353 + name 1_658_KEY_VOL_DOWN + 2190606354 + name 1_658_KEY_VOL_UP + 2190606356 + name 1_658_KEY_EXIT + 2190606360 + name 1_658_KEY_GUIDE + 2190606363 + name 1_658_KEY_BLUE + 2190606371 + name 1_658_KEY_GREEN + 2190606372 + name 1_658_KEY_RED + 2190606373 + name 1_658_KEY_YELLOW + 2190606374 + name 1_658_KEY_MENU + 2190606383 + name 1_658_KEY_MUP + 2190606384 + name 1_658_KEY_MDOWN + 2190606385 + name 1_658_KEY_MLEFT + 2190606386 + name 1_658_KEY_MRIGHT + 2190606387 + name 1_658_KEY_DSubtitle + 2190606404 + name 1_658_KEY_TTOnOff + 2190606409 + name 1_659_KEY_0 + 2190671872 + name 1_659_KEY_1 + 2190671873 + name 1_659_KEY_2 + 2190671874 + name 1_659_KEY_3 + 2190671875 + name 1_659_KEY_4 + 2190671876 + name 1_659_KEY_5 + 2190671877 + name 1_659_KEY_6 + 2190671878 + name 1_659_KEY_7 + 2190671879 + name 1_659_KEY_8 + 2190671880 + name 1_659_KEY_9 + 2190671881 + name 1_659_KEY_POWER + 2190671882 + name 1_659_KEY_CH_UP + 2190671887 + name 1_659_KEY_CH_DOWN + 2190671888 + name 1_659_KEY_MUTE + 2190671889 + name 1_659_KEY_VOL_DOWN + 2190671890 + name 1_659_KEY_VOL_UP + 2190671892 + name 1_659_KEY_MNSELECT + 2190671895 + name 1_659_KEY_EXIT + 2190671896 + name 1_659_KEY_GUIDE + 2190671899 + name 1_659_KEY_MNRETRUN + 2190671904 + name 1_659_KEY_MENU + 2190671919 + name 1_659_KEY_MUP + 2190671920 + name 1_659_KEY_MDOWN + 2190671921 + name 1_659_KEY_MLEFT + 2190671922 + name 1_659_KEY_MRIGHT + 2190671923 + name 1_659_KEY_DSubtitle + 2190671940 + name 1_660_KEY_0 + 2190737408 + name 1_660_KEY_1 + 2190737409 + name 1_660_KEY_2 + 2190737410 + name 1_660_KEY_3 + 2190737411 + name 1_660_KEY_4 + 2190737412 + name 1_660_KEY_5 + 2190737413 + name 1_660_KEY_6 + 2190737414 + name 1_660_KEY_7 + 2190737415 + name 1_660_KEY_8 + 2190737416 + name 1_660_KEY_9 + 2190737417 + name 1_660_KEY_POWER + 2190737418 + name 1_660_KEY_CH_UP + 2190737423 + name 1_660_KEY_CH_DOWN + 2190737424 + name 1_660_KEY_MUTE + 2190737425 + name 1_660_KEY_VOL_DOWN + 2190737426 + name 1_660_KEY_VOL_UP + 2190737428 + name 1_660_KEY_EXIT + 2190737432 + name 1_660_KEY_GUIDE + 2190737435 + name 1_660_KEY_BLUE + 2190737443 + name 1_660_KEY_GREEN + 2190737444 + name 1_660_KEY_RED + 2190737445 + name 1_660_KEY_YELLOW + 2190737446 + name 1_660_KEY_MENU + 2190737455 + name 1_660_KEY_MUP + 2190737456 + name 1_660_KEY_MDOWN + 2190737457 + name 1_660_KEY_MLEFT + 2190737458 + name 1_660_KEY_MRIGHT + 2190737459 + name 1_660_KEY_TTOnOff + 2190737481 + name 1_661_KEY_0 + 2190802944 + name 1_661_KEY_1 + 2190802945 + name 1_661_KEY_2 + 2190802946 + name 1_661_KEY_3 + 2190802947 + name 1_661_KEY_4 + 2190802948 + name 1_661_KEY_5 + 2190802949 + name 1_661_KEY_6 + 2190802950 + name 1_661_KEY_7 + 2190802951 + name 1_661_KEY_8 + 2190802952 + name 1_661_KEY_9 + 2190802953 + name 1_661_KEY_POWER + 2190802954 + name 1_661_TWO_DIGITS + 2190802957 + name 1_661_KEY_CH_UP + 2190802959 + name 1_661_KEY_CH_DOWN + 2190802960 + name 1_661_KEY_DISPLAY + 2190802965 + name 1_661_KEY_MNSELECT + 2190802967 + name 1_661_KEY_EXIT + 2190802968 + name 1_661_KEY_BLUE + 2190802979 + name 1_661_KEY_GREEN + 2190802980 + name 1_661_KEY_RED + 2190802981 + name 1_661_KEY_YELLOW + 2190802982 + name 1_661_KEY_MENU + 2190802991 + name 1_661_KEY_MUP + 2190802992 + name 1_661_KEY_MDOWN + 2190802993 + name 1_661_KEY_MLEFT + 2190802994 + name 1_661_KEY_MRIGHT + 2190802995 + name 1_661_KEY_On + 2190803021 + name 1_662_KEY_0 + 2190868480 + name 1_662_KEY_1 + 2190868481 + name 1_662_KEY_2 + 2190868482 + name 1_662_KEY_3 + 2190868483 + name 1_662_KEY_4 + 2190868484 + name 1_662_KEY_5 + 2190868485 + name 1_662_KEY_6 + 2190868486 + name 1_662_KEY_7 + 2190868487 + name 1_662_KEY_8 + 2190868488 + name 1_662_KEY_9 + 2190868489 + name 1_662_KEY_POWER + 2190868490 + name 1_662_KEY_CH_UP + 2190868495 + name 1_662_KEY_CH_DOWN + 2190868496 + name 1_662_KEY_MUTE + 2190868497 + name 1_662_KEY_VOL_DOWN + 2190868498 + name 1_662_KEY_VOL_UP + 2190868500 + name 1_662_KEY_MENU + 2190868527 + name 1_662_KEY_MUP + 2190868528 + name 1_662_KEY_MDOWN + 2190868529 + name 1_662_KEY_MLEFT + 2190868530 + name 1_662_KEY_MRIGHT + 2190868531 + name 1_662_KEY_Sleep + 2190868543 + name 1_663_KEY_0 + 2190934016 + name 1_663_KEY_1 + 2190934017 + name 1_663_KEY_2 + 2190934018 + name 1_663_KEY_3 + 2190934019 + name 1_663_KEY_4 + 2190934020 + name 1_663_KEY_5 + 2190934021 + name 1_663_KEY_6 + 2190934022 + name 1_663_KEY_7 + 2190934023 + name 1_663_KEY_8 + 2190934024 + name 1_663_KEY_9 + 2190934025 + name 1_663_KEY_POWER + 2190934026 + name 1_663_KEY_CH_UP + 2190934031 + name 1_663_KEY_CH_DOWN + 2190934032 + name 1_663_KEY_GUIDE + 2190934043 + name 1_663_KEY_MNRETRUN + 2190934048 + name 1_663_KEY_BLUE + 2190934051 + name 1_663_KEY_GREEN + 2190934052 + name 1_663_KEY_RED + 2190934053 + name 1_663_KEY_YELLOW + 2190934054 + name 1_663_KEY_MENU + 2190934063 + name 1_663_KEY_MUP + 2190934064 + name 1_663_KEY_MDOWN + 2190934065 + name 1_663_KEY_MLEFT + 2190934066 + name 1_663_KEY_MRIGHT + 2190934067 + name 1_663_KEY_On + 2190934093 + name 1_663_KEY_Off + 2190934094 + name 1_664_KEY_0 + 2190999552 + name 1_664_KEY_1 + 2190999553 + name 1_664_KEY_2 + 2190999554 + name 1_664_KEY_3 + 2190999555 + name 1_664_KEY_4 + 2190999556 + name 1_664_KEY_5 + 2190999557 + name 1_664_KEY_6 + 2190999558 + name 1_664_KEY_7 + 2190999559 + name 1_664_KEY_8 + 2190999560 + name 1_664_KEY_9 + 2190999561 + name 1_664_KEY_POWER + 2190999562 + name 1_664_KEY_CH_UP + 2190999567 + name 1_664_KEY_CH_DOWN + 2190999568 + name 1_664_KEY_MUTE + 2190999569 + name 1_664_KEY_VOL_DOWN + 2190999570 + name 1_664_CH_PREVIOUS + 2190999571 + name 1_664_KEY_VOL_UP + 2190999572 + name 1_664_KEY_MNSELECT + 2190999575 + name 1_664_KEY_EXIT + 2190999576 + name 1_664_KEY_GUIDE + 2190999579 + name 1_664_KEY_MENU + 2190999599 + name 1_664_KEY_MUP + 2190999600 + name 1_664_KEY_MDOWN + 2190999601 + name 1_664_KEY_MLEFT + 2190999602 + name 1_664_KEY_MRIGHT + 2190999603 + name 1_665_KEY_0 + 2191065088 + name 1_665_KEY_1 + 2191065089 + name 1_665_KEY_2 + 2191065090 + name 1_665_KEY_3 + 2191065091 + name 1_665_KEY_4 + 2191065092 + name 1_665_KEY_5 + 2191065093 + name 1_665_KEY_6 + 2191065094 + name 1_665_KEY_7 + 2191065095 + name 1_665_KEY_8 + 2191065096 + name 1_665_KEY_9 + 2191065097 + name 1_665_KEY_POWER + 2191065098 + name 1_665_KEY_CH_UP + 2191065103 + name 1_665_KEY_CH_DOWN + 2191065104 + name 1_665_KEY_MUTE + 2191065105 + name 1_665_KEY_VOL_DOWN + 2191065106 + name 1_665_CH_PREVIOUS + 2191065107 + name 1_665_KEY_VOL_UP + 2191065108 + name 1_665_KEY_MNSELECT + 2191065111 + name 1_665_KEY_EXIT + 2191065112 + name 1_665_KEY_GUIDE + 2191065115 + name 1_665_KEY_MENU + 2191065135 + name 1_665_KEY_MUP + 2191065136 + name 1_665_KEY_MDOWN + 2191065137 + name 1_665_KEY_MLEFT + 2191065138 + name 1_665_KEY_MRIGHT + 2191065139 + name 1_665_KEY_DSubtitle + 2191065156 + name 1_665_KEY_On + 2191065165 + name 1_665_KEY_Off + 2191065166 + name 1_666_KEY_0 + 2191130624 + name 1_666_KEY_1 + 2191130625 + name 1_666_KEY_2 + 2191130626 + name 1_666_KEY_3 + 2191130627 + name 1_666_KEY_4 + 2191130628 + name 1_666_KEY_5 + 2191130629 + name 1_666_KEY_6 + 2191130630 + name 1_666_KEY_7 + 2191130631 + name 1_666_KEY_8 + 2191130632 + name 1_666_KEY_9 + 2191130633 + name 1_666_KEY_POWER + 2191130634 + name 1_666_KEY_CH_UP + 2191130639 + name 1_666_KEY_CH_DOWN + 2191130640 + name 1_666_KEY_MUTE + 2191130641 + name 1_666_KEY_VOL_DOWN + 2191130642 + name 1_666_CH_PREVIOUS + 2191130643 + name 1_666_KEY_VOL_UP + 2191130644 + name 1_666_KEY_MNSELECT + 2191130647 + name 1_666_KEY_GUIDE + 2191130651 + name 1_666_KEY_MNRETRUN + 2191130656 + name 1_666_KEY_BLUE + 2191130659 + name 1_666_KEY_GREEN + 2191130660 + name 1_666_KEY_RED + 2191130661 + name 1_666_KEY_YELLOW + 2191130662 + name 1_666_KEY_MUP + 2191130672 + name 1_666_KEY_MDOWN + 2191130673 + name 1_666_KEY_MLEFT + 2191130674 + name 1_666_KEY_MRIGHT + 2191130675 + name 1_666_KEY_Sleep + 2191130687 + name 1_666_KEY_Off + 2191130702 + name 1_667_KEY_0 + 2191196160 + name 1_667_KEY_1 + 2191196161 + name 1_667_KEY_2 + 2191196162 + name 1_667_KEY_3 + 2191196163 + name 1_667_KEY_4 + 2191196164 + name 1_667_KEY_5 + 2191196165 + name 1_667_KEY_6 + 2191196166 + name 1_667_KEY_7 + 2191196167 + name 1_667_KEY_8 + 2191196168 + name 1_667_KEY_9 + 2191196169 + name 1_667_KEY_POWER + 2191196170 + name 1_667_KEY_CH_UP + 2191196175 + name 1_667_KEY_CH_DOWN + 2191196176 + name 1_667_KEY_MUTE + 2191196177 + name 1_667_KEY_VOL_DOWN + 2191196178 + name 1_667_CH_PREVIOUS + 2191196179 + name 1_667_KEY_VOL_UP + 2191196180 + name 1_667_KEY_MNSELECT + 2191196183 + name 1_667_KEY_GUIDE + 2191196187 + name 1_667_KEY_MNRETRUN + 2191196192 + name 1_667_KEY_BLUE + 2191196195 + name 1_667_KEY_GREEN + 2191196196 + name 1_667_KEY_RED + 2191196197 + name 1_667_KEY_YELLOW + 2191196198 + name 1_667_KEY_MUP + 2191196208 + name 1_667_KEY_MDOWN + 2191196209 + name 1_667_KEY_MLEFT + 2191196210 + name 1_667_KEY_MRIGHT + 2191196211 + name 1_667_KEY_On + 2191196237 + name 1_667_KEY_Off + 2191196238 + name 1_668_KEY_0 + 2191261696 + name 1_668_KEY_1 + 2191261697 + name 1_668_KEY_2 + 2191261698 + name 1_668_KEY_3 + 2191261699 + name 1_668_KEY_4 + 2191261700 + name 1_668_KEY_5 + 2191261701 + name 1_668_KEY_6 + 2191261702 + name 1_668_KEY_7 + 2191261703 + name 1_668_KEY_8 + 2191261704 + name 1_668_KEY_9 + 2191261705 + name 1_668_KEY_POWER + 2191261706 + name 1_668_KEY_CH_UP + 2191261711 + name 1_668_KEY_CH_DOWN + 2191261712 + name 1_668_KEY_MUTE + 2191261713 + name 1_668_KEY_VOL_DOWN + 2191261714 + name 1_668_CH_PREVIOUS + 2191261715 + name 1_668_KEY_VOL_UP + 2191261716 + name 1_668_KEY_MNSELECT + 2191261719 + name 1_668_KEY_GUIDE + 2191261723 + name 1_668_KEY_MNRETRUN + 2191261728 + name 1_668_KEY_BLUE + 2191261731 + name 1_668_KEY_GREEN + 2191261732 + name 1_668_KEY_RED + 2191261733 + name 1_668_KEY_YELLOW + 2191261734 + name 1_668_KEY_AV + 2191261737 + name 1_668_KEY_MUP + 2191261744 + name 1_668_KEY_MDOWN + 2191261745 + name 1_668_KEY_MLEFT + 2191261746 + name 1_668_KEY_MRIGHT + 2191261747 + name 1_668_KEY_Sleep + 2191261759 + name 1_668_KEY_Off + 2191261774 + name 1_669_KEY_0 + 2191327232 + name 1_669_KEY_1 + 2191327233 + name 1_669_KEY_2 + 2191327234 + name 1_669_KEY_3 + 2191327235 + name 1_669_KEY_4 + 2191327236 + name 1_669_KEY_5 + 2191327237 + name 1_669_KEY_6 + 2191327238 + name 1_669_KEY_7 + 2191327239 + name 1_669_KEY_8 + 2191327240 + name 1_669_KEY_9 + 2191327241 + name 1_669_KEY_POWER + 2191327242 + name 1_669_KEY_CH_UP + 2191327247 + name 1_669_KEY_CH_DOWN + 2191327248 + name 1_669_KEY_MUTE + 2191327249 + name 1_669_KEY_VOL_DOWN + 2191327250 + name 1_669_CH_PREVIOUS + 2191327251 + name 1_669_KEY_VOL_UP + 2191327252 + name 1_669_KEY_MNSELECT + 2191327255 + name 1_669_KEY_GUIDE + 2191327259 + name 1_669_KEY_MNRETRUN + 2191327264 + name 1_669_KEY_BLUE + 2191327267 + name 1_669_KEY_GREEN + 2191327268 + name 1_669_KEY_RED + 2191327269 + name 1_669_KEY_YELLOW + 2191327270 + name 1_669_KEY_AV + 2191327273 + name 1_669_KEY_MUP + 2191327280 + name 1_669_KEY_MDOWN + 2191327281 + name 1_669_KEY_MLEFT + 2191327282 + name 1_669_KEY_MRIGHT + 2191327283 + name 1_669_KEY_Sleep + 2191327295 + name 1_669_KEY_Off + 2191327310 + name 1_670_KEY_0 + 2191392768 + name 1_670_KEY_1 + 2191392769 + name 1_670_KEY_2 + 2191392770 + name 1_670_KEY_3 + 2191392771 + name 1_670_KEY_4 + 2191392772 + name 1_670_KEY_5 + 2191392773 + name 1_670_KEY_6 + 2191392774 + name 1_670_KEY_7 + 2191392775 + name 1_670_KEY_8 + 2191392776 + name 1_670_KEY_9 + 2191392777 + name 1_670_KEY_POWER + 2191392778 + name 1_670_KEY_CH_UP + 2191392783 + name 1_670_KEY_CH_DOWN + 2191392784 + name 1_670_KEY_MUTE + 2191392785 + name 1_670_KEY_VOL_DOWN + 2191392786 + name 1_670_CH_PREVIOUS + 2191392787 + name 1_670_KEY_VOL_UP + 2191392788 + name 1_670_KEY_INPUT + 2191392794 + name 1_670_KEY_MUP + 2191392816 + name 1_670_KEY_MDOWN + 2191392817 + name 1_670_KEY_MLEFT + 2191392818 + name 1_670_KEY_MRIGHT + 2191392819 + name 1_670_KEY_On + 2191392845 + name 1_670_KEY_Off + 2191392846 + name 1_671_KEY_0 + 2191458304 + name 1_671_KEY_1 + 2191458305 + name 1_671_KEY_2 + 2191458306 + name 1_671_KEY_3 + 2191458307 + name 1_671_KEY_4 + 2191458308 + name 1_671_KEY_5 + 2191458309 + name 1_671_KEY_6 + 2191458310 + name 1_671_KEY_7 + 2191458311 + name 1_671_KEY_8 + 2191458312 + name 1_671_KEY_9 + 2191458313 + name 1_671_KEY_POWER + 2191458314 + name 1_671_KEY_CH_UP + 2191458319 + name 1_671_KEY_CH_DOWN + 2191458320 + name 1_671_KEY_MUTE + 2191458321 + name 1_671_KEY_VOL_DOWN + 2191458322 + name 1_671_CH_PREVIOUS + 2191458323 + name 1_671_KEY_VOL_UP + 2191458324 + name 1_671_KEY_MNSELECT + 2191458327 + name 1_671_KEY_EXIT + 2191458328 + name 1_671_KEY_INPUT + 2191458330 + name 1_671_KEY_GUIDE + 2191458331 + name 1_671_KEY_MNRETRUN + 2191458336 + name 1_671_KEY_MENU + 2191458351 + name 1_671_KEY_MUP + 2191458352 + name 1_671_KEY_MDOWN + 2191458353 + name 1_671_KEY_MLEFT + 2191458354 + name 1_671_KEY_MRIGHT + 2191458355 + name 1_671_KEY_TTOnOff + 2191458377 + name 1_672_KEY_0 + 2191523840 + name 1_672_KEY_1 + 2191523841 + name 1_672_KEY_2 + 2191523842 + name 1_672_KEY_3 + 2191523843 + name 1_672_KEY_4 + 2191523844 + name 1_672_KEY_5 + 2191523845 + name 1_672_KEY_6 + 2191523846 + name 1_672_KEY_7 + 2191523847 + name 1_672_KEY_8 + 2191523848 + name 1_672_KEY_9 + 2191523849 + name 1_672_KEY_POWER + 2191523850 + name 1_672_KEY_CH_UP + 2191523855 + name 1_672_KEY_CH_DOWN + 2191523856 + name 1_672_KEY_MUTE + 2191523857 + name 1_672_KEY_VOL_DOWN + 2191523858 + name 1_672_CH_PREVIOUS + 2191523859 + name 1_672_KEY_VOL_UP + 2191523860 + name 1_672_KEY_MNSELECT + 2191523863 + name 1_672_KEY_GUIDE + 2191523867 + name 1_672_KEY_MNRETRUN + 2191523872 + name 1_672_KEY_BLUE + 2191523875 + name 1_672_KEY_GREEN + 2191523876 + name 1_672_KEY_RED + 2191523877 + name 1_672_KEY_YELLOW + 2191523878 + name 1_672_KEY_MUP + 2191523888 + name 1_672_KEY_MDOWN + 2191523889 + name 1_672_KEY_MLEFT + 2191523890 + name 1_672_KEY_MRIGHT + 2191523891 + name 1_672_KEY_Sleep + 2191523903 + name 1_672_KEY_Off + 2191523918 + name 1_673_KEY_0 + 2191589376 + name 1_673_KEY_1 + 2191589377 + name 1_673_KEY_2 + 2191589378 + name 1_673_KEY_3 + 2191589379 + name 1_673_KEY_4 + 2191589380 + name 1_673_KEY_5 + 2191589381 + name 1_673_KEY_6 + 2191589382 + name 1_673_KEY_7 + 2191589383 + name 1_673_KEY_8 + 2191589384 + name 1_673_KEY_9 + 2191589385 + name 1_673_KEY_POWER + 2191589386 + name 1_673_KEY_CH_UP + 2191589391 + name 1_673_KEY_CH_DOWN + 2191589392 + name 1_673_KEY_MUTE + 2191589393 + name 1_673_KEY_VOL_DOWN + 2191589394 + name 1_673_CH_PREVIOUS + 2191589395 + name 1_673_KEY_VOL_UP + 2191589396 + name 1_673_KEY_MNSELECT + 2191589399 + name 1_673_KEY_GUIDE + 2191589403 + name 1_673_KEY_MNRETRUN + 2191589408 + name 1_673_KEY_BLUE + 2191589411 + name 1_673_KEY_GREEN + 2191589412 + name 1_673_KEY_RED + 2191589413 + name 1_673_KEY_YELLOW + 2191589414 + name 1_673_KEY_MUP + 2191589424 + name 1_673_KEY_MDOWN + 2191589425 + name 1_673_KEY_MLEFT + 2191589426 + name 1_673_KEY_MRIGHT + 2191589427 + name 1_673_KEY_Sleep + 2191589439 + name 1_673_KEY_Off + 2191589454 + name 1_674_KEY_0 + 2191654912 + name 1_674_KEY_1 + 2191654913 + name 1_674_KEY_2 + 2191654914 + name 1_674_KEY_3 + 2191654915 + name 1_674_KEY_4 + 2191654916 + name 1_674_KEY_5 + 2191654917 + name 1_674_KEY_6 + 2191654918 + name 1_674_KEY_7 + 2191654919 + name 1_674_KEY_8 + 2191654920 + name 1_674_KEY_9 + 2191654921 + name 1_674_KEY_POWER + 2191654922 + name 1_674_KEY_CH_UP + 2191654927 + name 1_674_KEY_CH_DOWN + 2191654928 + name 1_674_KEY_VOL_DOWN + 2191654930 + name 1_674_KEY_VOL_UP + 2191654932 + name 1_674_KEY_MNSELECT + 2191654935 + name 1_674_KEY_EXIT + 2191654936 + name 1_674_KEY_GUIDE + 2191654939 + name 1_674_KEY_TIMER + 2191654956 + name 1_674_KEY_MENU + 2191654959 + name 1_674_KEY_MUP + 2191654960 + name 1_674_KEY_MDOWN + 2191654961 + name 1_674_KEY_MLEFT + 2191654962 + name 1_674_KEY_MRIGHT + 2191654963 + name 1_674_KEY_Sleep + 2191654975 + name 1_674_KEY_On + 2191654989 + name 1_674_KEY_Off + 2191654990 + name 1_675_KEY_0 + 2191720448 + name 1_675_KEY_1 + 2191720449 + name 1_675_KEY_2 + 2191720450 + name 1_675_KEY_3 + 2191720451 + name 1_675_KEY_4 + 2191720452 + name 1_675_KEY_5 + 2191720453 + name 1_675_KEY_6 + 2191720454 + name 1_675_KEY_7 + 2191720455 + name 1_675_KEY_8 + 2191720456 + name 1_675_KEY_9 + 2191720457 + name 1_675_KEY_POWER + 2191720458 + name 1_675_KEY_CH_UP + 2191720463 + name 1_675_KEY_CH_DOWN + 2191720464 + name 1_675_KEY_VOL_DOWN + 2191720466 + name 1_675_KEY_VOL_UP + 2191720468 + name 1_675_KEY_MNSELECT + 2191720471 + name 1_675_KEY_GUIDE + 2191720475 + name 1_675_KEY_MNRETRUN + 2191720480 + name 1_675_KEY_TIMER + 2191720492 + name 1_675_KEY_MUP + 2191720496 + name 1_675_KEY_MDOWN + 2191720497 + name 1_675_KEY_MLEFT + 2191720498 + name 1_675_KEY_MRIGHT + 2191720499 + name 1_676_KEY_0 + 2191785984 + name 1_676_KEY_1 + 2191785985 + name 1_676_KEY_2 + 2191785986 + name 1_676_KEY_3 + 2191785987 + name 1_676_KEY_4 + 2191785988 + name 1_676_KEY_5 + 2191785989 + name 1_676_KEY_6 + 2191785990 + name 1_676_KEY_7 + 2191785991 + name 1_676_KEY_8 + 2191785992 + name 1_676_KEY_9 + 2191785993 + name 1_676_KEY_POWER + 2191785994 + name 1_676_KEY_CH_UP + 2191785999 + name 1_676_KEY_CH_DOWN + 2191786000 + name 1_676_KEY_MUTE + 2191786001 + name 1_676_KEY_VOL_DOWN + 2191786002 + name 1_676_CH_PREVIOUS + 2191786003 + name 1_676_KEY_VOL_UP + 2191786004 + name 1_676_KEY_MNSELECT + 2191786007 + name 1_676_KEY_EXIT + 2191786008 + name 1_676_KEY_GUIDE + 2191786011 + name 1_676_KEY_BLUE + 2191786019 + name 1_676_KEY_GREEN + 2191786020 + name 1_676_KEY_RED + 2191786021 + name 1_676_KEY_YELLOW + 2191786022 + name 1_676_KEY_MENU + 2191786031 + name 1_676_KEY_MUP + 2191786032 + name 1_676_KEY_MDOWN + 2191786033 + name 1_676_KEY_MLEFT + 2191786034 + name 1_676_KEY_MRIGHT + 2191786035 + name 1_676_KEY_DSubtitle + 2191786052 + name 1_677_KEY_0 + 2191851520 + name 1_677_KEY_1 + 2191851521 + name 1_677_KEY_2 + 2191851522 + name 1_677_KEY_3 + 2191851523 + name 1_677_KEY_4 + 2191851524 + name 1_677_KEY_5 + 2191851525 + name 1_677_KEY_6 + 2191851526 + name 1_677_KEY_7 + 2191851527 + name 1_677_KEY_8 + 2191851528 + name 1_677_KEY_9 + 2191851529 + name 1_677_KEY_POWER + 2191851530 + name 1_677_KEY_CH_UP + 2191851535 + name 1_677_KEY_CH_DOWN + 2191851536 + name 1_677_KEY_MUTE + 2191851537 + name 1_677_KEY_VOL_DOWN + 2191851538 + name 1_677_CH_PREVIOUS + 2191851539 + name 1_677_KEY_VOL_UP + 2191851540 + name 1_677_KEY_MNSELECT + 2191851543 + name 1_677_KEY_EXIT + 2191851544 + name 1_677_KEY_GUIDE + 2191851547 + name 1_677_KEY_BLUE + 2191851555 + name 1_677_KEY_GREEN + 2191851556 + name 1_677_KEY_RED + 2191851557 + name 1_677_KEY_YELLOW + 2191851558 + name 1_677_KEY_MENU + 2191851567 + name 1_677_KEY_MUP + 2191851568 + name 1_677_KEY_MDOWN + 2191851569 + name 1_677_KEY_MLEFT + 2191851570 + name 1_677_KEY_MRIGHT + 2191851571 + name 1_677_KEY_Sleep + 2191851583 + name 1_677_KEY_DSubtitle + 2191851588 + name 1_677_KEY_TTOnOff + 2191851593 + name 1_678_KEY_0 + 2191917056 + name 1_678_KEY_1 + 2191917057 + name 1_678_KEY_2 + 2191917058 + name 1_678_KEY_3 + 2191917059 + name 1_678_KEY_4 + 2191917060 + name 1_678_KEY_5 + 2191917061 + name 1_678_KEY_6 + 2191917062 + name 1_678_KEY_7 + 2191917063 + name 1_678_KEY_8 + 2191917064 + name 1_678_KEY_9 + 2191917065 + name 1_678_KEY_POWER + 2191917066 + name 1_678_KEY_CH_UP + 2191917071 + name 1_678_KEY_CH_DOWN + 2191917072 + name 1_678_KEY_MUTE + 2191917073 + name 1_678_KEY_VOL_DOWN + 2191917074 + name 1_678_CH_PREVIOUS + 2191917075 + name 1_678_KEY_VOL_UP + 2191917076 + name 1_678_KEY_MNSELECT + 2191917079 + name 1_678_KEY_EXIT + 2191917080 + name 1_678_KEY_GUIDE + 2191917083 + name 1_678_KEY_BLUE + 2191917091 + name 1_678_KEY_GREEN + 2191917092 + name 1_678_KEY_RED + 2191917093 + name 1_678_KEY_YELLOW + 2191917094 + name 1_678_KEY_MENU + 2191917103 + name 1_678_KEY_MUP + 2191917104 + name 1_678_KEY_MDOWN + 2191917105 + name 1_678_KEY_MLEFT + 2191917106 + name 1_678_KEY_MRIGHT + 2191917107 + name 1_678_KEY_DSubtitle + 2191917124 + name 1_678_KEY_TTOnOff + 2191917129 + name 1_679_KEY_0 + 2191982592 + name 1_679_KEY_1 + 2191982593 + name 1_679_KEY_2 + 2191982594 + name 1_679_KEY_3 + 2191982595 + name 1_679_KEY_4 + 2191982596 + name 1_679_KEY_5 + 2191982597 + name 1_679_KEY_6 + 2191982598 + name 1_679_KEY_7 + 2191982599 + name 1_679_KEY_8 + 2191982600 + name 1_679_KEY_9 + 2191982601 + name 1_679_KEY_POWER + 2191982602 + name 1_679_KEY_CH_UP + 2191982607 + name 1_679_KEY_CH_DOWN + 2191982608 + name 1_679_KEY_MUTE + 2191982609 + name 1_679_KEY_VOL_DOWN + 2191982610 + name 1_679_KEY_VOL_UP + 2191982612 + name 1_679_KEY_MENU + 2191982639 + name 1_679_KEY_MUP + 2191982640 + name 1_679_KEY_MDOWN + 2191982641 + name 1_680_KEY_0 + 2192048128 + name 1_680_KEY_1 + 2192048129 + name 1_680_KEY_2 + 2192048130 + name 1_680_KEY_3 + 2192048131 + name 1_680_KEY_4 + 2192048132 + name 1_680_KEY_5 + 2192048133 + name 1_680_KEY_6 + 2192048134 + name 1_680_KEY_7 + 2192048135 + name 1_680_KEY_8 + 2192048136 + name 1_680_KEY_9 + 2192048137 + name 1_680_KEY_POWER + 2192048138 + name 1_680_KEY_CH_UP + 2192048143 + name 1_680_KEY_CH_DOWN + 2192048144 + name 1_681_KEY_0 + 2192113664 + name 1_681_KEY_1 + 2192113665 + name 1_681_KEY_2 + 2192113666 + name 1_681_KEY_3 + 2192113667 + name 1_681_KEY_4 + 2192113668 + name 1_681_KEY_5 + 2192113669 + name 1_681_KEY_6 + 2192113670 + name 1_681_KEY_7 + 2192113671 + name 1_681_KEY_8 + 2192113672 + name 1_681_KEY_9 + 2192113673 + name 1_681_KEY_POWER + 2192113674 + name 1_681_KEY_CH_UP + 2192113679 + name 1_681_KEY_CH_DOWN + 2192113680 + name 1_681_KEY_MUTE + 2192113681 + name 1_681_KEY_VOL_DOWN + 2192113682 + name 1_681_CH_PREVIOUS + 2192113683 + name 1_681_KEY_VOL_UP + 2192113684 + name 1_681_KEY_MNSELECT + 2192113687 + name 1_681_KEY_GUIDE + 2192113691 + name 1_681_KEY_BLUE + 2192113699 + name 1_681_KEY_GREEN + 2192113700 + name 1_681_KEY_RED + 2192113701 + name 1_681_KEY_YELLOW + 2192113702 + name 1_681_KEY_MENU + 2192113711 + name 1_681_KEY_MUP + 2192113712 + name 1_681_KEY_MDOWN + 2192113713 + name 1_681_KEY_MLEFT + 2192113714 + name 1_681_KEY_MRIGHT + 2192113715 + name 1_681_KEY_Sleep + 2192113727 + name 1_681_KEY_DSubtitle + 2192113732 + name 1_681_KEY_TTOnOff + 2192113737 + name 1_682_KEY_0 + 2192179200 + name 1_682_KEY_1 + 2192179201 + name 1_682_KEY_2 + 2192179202 + name 1_682_KEY_3 + 2192179203 + name 1_682_KEY_4 + 2192179204 + name 1_682_KEY_5 + 2192179205 + name 1_682_KEY_6 + 2192179206 + name 1_682_KEY_7 + 2192179207 + name 1_682_KEY_8 + 2192179208 + name 1_682_KEY_9 + 2192179209 + name 1_682_KEY_POWER + 2192179210 + name 1_682_KEY_CH_UP + 2192179215 + name 1_682_KEY_CH_DOWN + 2192179216 + name 1_682_KEY_MUTE + 2192179217 + name 1_682_KEY_VOL_DOWN + 2192179218 + name 1_682_KEY_VOL_UP + 2192179220 + name 1_682_KEY_MNSELECT + 2192179223 + name 1_682_KEY_EXIT + 2192179224 + name 1_682_KEY_GUIDE + 2192179227 + name 1_682_KEY_BLUE + 2192179235 + name 1_682_KEY_GREEN + 2192179236 + name 1_682_KEY_RED + 2192179237 + name 1_682_KEY_YELLOW + 2192179238 + name 1_682_KEY_MENU + 2192179247 + name 1_682_KEY_MUP + 2192179248 + name 1_682_KEY_MDOWN + 2192179249 + name 1_682_KEY_MLEFT + 2192179250 + name 1_682_KEY_MRIGHT + 2192179251 + name 1_682_KEY_DSubtitle + 2192179268 + name 1_682_KEY_Off + 2192179278 + name 1_683_KEY_0 + 2192244736 + name 1_683_KEY_1 + 2192244737 + name 1_683_KEY_2 + 2192244738 + name 1_683_KEY_3 + 2192244739 + name 1_683_KEY_4 + 2192244740 + name 1_683_KEY_5 + 2192244741 + name 1_683_KEY_6 + 2192244742 + name 1_683_KEY_7 + 2192244743 + name 1_683_KEY_8 + 2192244744 + name 1_683_KEY_9 + 2192244745 + name 1_683_KEY_POWER + 2192244746 + name 1_683_KEY_CH_UP + 2192244751 + name 1_683_KEY_CH_DOWN + 2192244752 + name 1_683_KEY_MUTE + 2192244753 + name 1_683_KEY_VOL_DOWN + 2192244754 + name 1_683_CH_PREVIOUS + 2192244755 + name 1_683_KEY_VOL_UP + 2192244756 + name 1_683_KEY_MNSELECT + 2192244759 + name 1_683_KEY_EXIT + 2192244760 + name 1_683_KEY_GUIDE + 2192244763 + name 1_683_KEY_BLUE + 2192244771 + name 1_683_KEY_GREEN + 2192244772 + name 1_683_KEY_RED + 2192244773 + name 1_683_KEY_YELLOW + 2192244774 + name 1_683_KEY_AV + 2192244777 + name 1_683_KEY_MENU + 2192244783 + name 1_683_KEY_MUP + 2192244784 + name 1_683_KEY_MDOWN + 2192244785 + name 1_683_KEY_MLEFT + 2192244786 + name 1_683_KEY_MRIGHT + 2192244787 + name 1_683_KEY_DSubtitle + 2192244804 + name 1_683_KEY_On + 2192244813 + name 1_683_KEY_Off + 2192244814 + name 1_684_KEY_0 + 2192310272 + name 1_684_KEY_1 + 2192310273 + name 1_684_KEY_2 + 2192310274 + name 1_684_KEY_3 + 2192310275 + name 1_684_KEY_4 + 2192310276 + name 1_684_KEY_5 + 2192310277 + name 1_684_KEY_6 + 2192310278 + name 1_684_KEY_7 + 2192310279 + name 1_684_KEY_8 + 2192310280 + name 1_684_KEY_9 + 2192310281 + name 1_684_KEY_POWER + 2192310282 + name 1_684_KEY_CH_UP + 2192310287 + name 1_684_KEY_CH_DOWN + 2192310288 + name 1_684_KEY_MUTE + 2192310289 + name 1_684_KEY_VOL_DOWN + 2192310290 + name 1_684_CH_PREVIOUS + 2192310291 + name 1_684_KEY_VOL_UP + 2192310292 + name 1_684_KEY_MNSELECT + 2192310295 + name 1_684_KEY_AV + 2192310313 + name 1_684_KEY_MENU + 2192310319 + name 1_684_KEY_MUP + 2192310320 + name 1_684_KEY_MDOWN + 2192310321 + name 1_684_KEY_MLEFT + 2192310322 + name 1_684_KEY_MRIGHT + 2192310323 + name 1_684_KEY_Off + 2192310350 + name 1_685_KEY_0 + 2192375808 + name 1_685_KEY_1 + 2192375809 + name 1_685_KEY_2 + 2192375810 + name 1_685_KEY_3 + 2192375811 + name 1_685_KEY_4 + 2192375812 + name 1_685_KEY_5 + 2192375813 + name 1_685_KEY_6 + 2192375814 + name 1_685_KEY_7 + 2192375815 + name 1_685_KEY_8 + 2192375816 + name 1_685_KEY_9 + 2192375817 + name 1_685_KEY_POWER + 2192375818 + name 1_685_KEY_CH_UP + 2192375823 + name 1_685_KEY_CH_DOWN + 2192375824 + name 1_685_KEY_MUTE + 2192375825 + name 1_685_KEY_VOL_DOWN + 2192375826 + name 1_685_KEY_VOL_UP + 2192375828 + name 1_685_KEY_MNSELECT + 2192375831 + name 1_685_KEY_MENU + 2192375855 + name 1_685_KEY_MUP + 2192375856 + name 1_685_KEY_MDOWN + 2192375857 + name 1_685_KEY_MLEFT + 2192375858 + name 1_685_KEY_MRIGHT + 2192375859 + name 1_686_KEY_0 + 2192441344 + name 1_686_KEY_1 + 2192441345 + name 1_686_KEY_2 + 2192441346 + name 1_686_KEY_3 + 2192441347 + name 1_686_KEY_4 + 2192441348 + name 1_686_KEY_5 + 2192441349 + name 1_686_KEY_6 + 2192441350 + name 1_686_KEY_7 + 2192441351 + name 1_686_KEY_8 + 2192441352 + name 1_686_KEY_9 + 2192441353 + name 1_686_KEY_POWER + 2192441354 + name 1_686_KEY_CH_UP + 2192441359 + name 1_686_KEY_CH_DOWN + 2192441360 + name 1_686_KEY_MUTE + 2192441361 + name 1_686_KEY_VOL_DOWN + 2192441362 + name 1_686_KEY_VOL_UP + 2192441364 + name 1_686_KEY_MNSELECT + 2192441367 + name 1_686_KEY_MUP + 2192441392 + name 1_686_KEY_MDOWN + 2192441393 + name 1_686_KEY_MLEFT + 2192441394 + name 1_686_KEY_MRIGHT + 2192441395 + name 1_686_KEY_Sleep + 2192441407 + name 1_687_KEY_0 + 2192506880 + name 1_687_KEY_1 + 2192506881 + name 1_687_KEY_2 + 2192506882 + name 1_687_KEY_3 + 2192506883 + name 1_687_KEY_4 + 2192506884 + name 1_687_KEY_5 + 2192506885 + name 1_687_KEY_6 + 2192506886 + name 1_687_KEY_7 + 2192506887 + name 1_687_KEY_8 + 2192506888 + name 1_687_KEY_9 + 2192506889 + name 1_687_KEY_POWER + 2192506890 + name 1_687_TWO_DIGITS + 2192506893 + name 1_687_KEY_CH_UP + 2192506895 + name 1_687_KEY_CH_DOWN + 2192506896 + name 1_687_KEY_MUTE + 2192506897 + name 1_687_KEY_VOL_DOWN + 2192506898 + name 1_687_KEY_VOL_UP + 2192506900 + name 1_687_KEY_MNSELECT + 2192506903 + name 1_687_KEY_EXIT + 2192506904 + name 1_687_KEY_BLUE + 2192506915 + name 1_687_KEY_GREEN + 2192506916 + name 1_687_KEY_RED + 2192506917 + name 1_687_KEY_YELLOW + 2192506918 + name 1_687_KEY_AV + 2192506921 + name 1_687_KEY_MENU + 2192506927 + name 1_687_KEY_MUP + 2192506928 + name 1_687_KEY_MDOWN + 2192506929 + name 1_687_KEY_On + 2192506957 + name 1_687_KEY_Off + 2192506958 + name 1_688_KEY_0 + 2192572416 + name 1_688_KEY_1 + 2192572417 + name 1_688_KEY_2 + 2192572418 + name 1_688_KEY_3 + 2192572419 + name 1_688_KEY_4 + 2192572420 + name 1_688_KEY_5 + 2192572421 + name 1_688_KEY_6 + 2192572422 + name 1_688_KEY_7 + 2192572423 + name 1_688_KEY_8 + 2192572424 + name 1_688_KEY_9 + 2192572425 + name 1_688_KEY_POWER + 2192572426 + name 1_688_TWO_DIGITS + 2192572429 + name 1_688_KEY_CH_UP + 2192572431 + name 1_688_KEY_CH_DOWN + 2192572432 + name 1_688_KEY_MUTE + 2192572433 + name 1_688_KEY_VOL_DOWN + 2192572434 + name 1_688_KEY_VOL_UP + 2192572436 + name 1_688_KEY_EXIT + 2192572440 + name 1_688_KEY_GUIDE + 2192572443 + name 1_688_KEY_BLUE + 2192572451 + name 1_688_KEY_GREEN + 2192572452 + name 1_688_KEY_RED + 2192572453 + name 1_688_KEY_YELLOW + 2192572454 + name 1_688_KEY_MENU + 2192572463 + name 1_688_KEY_MUP + 2192572464 + name 1_688_KEY_MDOWN + 2192572465 + name 1_688_KEY_Sleep + 2192572479 + name 1_688_KEY_DSubtitle + 2192572484 + name 1_688_KEY_On + 2192572493 + name 1_689_KEY_0 + 2192637952 + name 1_689_KEY_1 + 2192637953 + name 1_689_KEY_2 + 2192637954 + name 1_689_KEY_3 + 2192637955 + name 1_689_KEY_4 + 2192637956 + name 1_689_KEY_5 + 2192637957 + name 1_689_KEY_6 + 2192637958 + name 1_689_KEY_7 + 2192637959 + name 1_689_KEY_8 + 2192637960 + name 1_689_KEY_9 + 2192637961 + name 1_689_KEY_POWER + 2192637962 + name 1_689_KEY_CH_UP + 2192637967 + name 1_689_KEY_CH_DOWN + 2192637968 + name 1_689_KEY_MUTE + 2192637969 + name 1_689_KEY_VOL_DOWN + 2192637970 + name 1_689_CH_PREVIOUS + 2192637971 + name 1_689_KEY_VOL_UP + 2192637972 + name 1_689_KEY_AV + 2192637993 + name 1_690_KEY_0 + 2192703488 + name 1_690_KEY_1 + 2192703489 + name 1_690_KEY_2 + 2192703490 + name 1_690_KEY_3 + 2192703491 + name 1_690_KEY_4 + 2192703492 + name 1_690_KEY_5 + 2192703493 + name 1_690_KEY_6 + 2192703494 + name 1_690_KEY_7 + 2192703495 + name 1_690_KEY_8 + 2192703496 + name 1_690_KEY_9 + 2192703497 + name 1_690_KEY_POWER + 2192703498 + name 1_690_KEY_CH_UP + 2192703503 + name 1_690_KEY_CH_DOWN + 2192703504 + name 1_690_KEY_MUTE + 2192703505 + name 1_690_KEY_VOL_DOWN + 2192703506 + name 1_690_KEY_VOL_UP + 2192703508 + name 1_690_KEY_MNSELECT + 2192703511 + name 1_690_KEY_MNRETRUN + 2192703520 + name 1_690_KEY_AV + 2192703529 + name 1_690_KEY_MENU + 2192703535 + name 1_690_KEY_MUP + 2192703536 + name 1_690_KEY_MDOWN + 2192703537 + name 1_690_KEY_MLEFT + 2192703538 + name 1_690_KEY_MRIGHT + 2192703539 + name 1_690_KEY_On + 2192703565 + name 1_690_KEY_Off + 2192703566 + name 1_691_KEY_0 + 2192769024 + name 1_691_KEY_1 + 2192769025 + name 1_691_KEY_2 + 2192769026 + name 1_691_KEY_3 + 2192769027 + name 1_691_KEY_4 + 2192769028 + name 1_691_KEY_5 + 2192769029 + name 1_691_KEY_6 + 2192769030 + name 1_691_KEY_7 + 2192769031 + name 1_691_KEY_8 + 2192769032 + name 1_691_KEY_9 + 2192769033 + name 1_691_KEY_POWER + 2192769034 + name 1_691_KEY_CH_UP + 2192769039 + name 1_691_KEY_CH_DOWN + 2192769040 + name 1_691_KEY_MUTE + 2192769041 + name 1_691_KEY_VOL_DOWN + 2192769042 + name 1_691_KEY_VOL_UP + 2192769044 + name 1_691_KEY_MNSELECT + 2192769047 + name 1_691_KEY_AV + 2192769065 + name 1_691_KEY_MENU + 2192769071 + name 1_691_KEY_MUP + 2192769072 + name 1_691_KEY_MDOWN + 2192769073 + name 1_691_KEY_MLEFT + 2192769074 + name 1_691_KEY_MRIGHT + 2192769075 + name 1_692_KEY_0 + 2192834560 + name 1_692_KEY_1 + 2192834561 + name 1_692_KEY_2 + 2192834562 + name 1_692_KEY_3 + 2192834563 + name 1_692_KEY_4 + 2192834564 + name 1_692_KEY_5 + 2192834565 + name 1_692_KEY_6 + 2192834566 + name 1_692_KEY_7 + 2192834567 + name 1_692_KEY_8 + 2192834568 + name 1_692_KEY_9 + 2192834569 + name 1_692_KEY_POWER + 2192834570 + name 1_692_KEY_CH_UP + 2192834575 + name 1_692_KEY_CH_DOWN + 2192834576 + name 1_692_CH_PREVIOUS + 2192834579 + name 1_692_KEY_MNSELECT + 2192834583 + name 1_692_KEY_MUP + 2192834608 + name 1_692_KEY_MDOWN + 2192834609 + name 1_692_KEY_MLEFT + 2192834610 + name 1_692_KEY_MRIGHT + 2192834611 + name 1_693_KEY_0 + 2192900096 + name 1_693_KEY_1 + 2192900097 + name 1_693_KEY_2 + 2192900098 + name 1_693_KEY_3 + 2192900099 + name 1_693_KEY_4 + 2192900100 + name 1_693_KEY_5 + 2192900101 + name 1_693_KEY_6 + 2192900102 + name 1_693_KEY_7 + 2192900103 + name 1_693_KEY_8 + 2192900104 + name 1_693_KEY_9 + 2192900105 + name 1_693_KEY_POWER + 2192900106 + name 1_693_KEY_CH_UP + 2192900111 + name 1_693_KEY_CH_DOWN + 2192900112 + name 1_693_KEY_MUTE + 2192900113 + name 1_693_KEY_VOL_DOWN + 2192900114 + name 1_693_KEY_VOL_UP + 2192900116 + name 1_693_KEY_EXIT + 2192900120 + name 1_693_KEY_MENU + 2192900143 + name 1_694_KEY_0 + 2192965632 + name 1_694_KEY_1 + 2192965633 + name 1_694_KEY_2 + 2192965634 + name 1_694_KEY_3 + 2192965635 + name 1_694_KEY_4 + 2192965636 + name 1_694_KEY_5 + 2192965637 + name 1_694_KEY_6 + 2192965638 + name 1_694_KEY_7 + 2192965639 + name 1_694_KEY_8 + 2192965640 + name 1_694_KEY_9 + 2192965641 + name 1_694_KEY_POWER + 2192965642 + name 1_694_KEY_CH_UP + 2192965647 + name 1_694_KEY_CH_DOWN + 2192965648 + name 1_694_KEY_MUTE + 2192965649 + name 1_694_KEY_VOL_DOWN + 2192965650 + name 1_694_KEY_VOL_UP + 2192965652 + name 1_695_KEY_0 + 2193031168 + name 1_695_KEY_1 + 2193031169 + name 1_695_KEY_2 + 2193031170 + name 1_695_KEY_3 + 2193031171 + name 1_695_KEY_4 + 2193031172 + name 1_695_KEY_5 + 2193031173 + name 1_695_KEY_6 + 2193031174 + name 1_695_KEY_7 + 2193031175 + name 1_695_KEY_8 + 2193031176 + name 1_695_KEY_9 + 2193031177 + name 1_695_KEY_POWER + 2193031178 + name 1_695_KEY_CH_UP + 2193031183 + name 1_695_KEY_CH_DOWN + 2193031184 + name 1_695_KEY_MUTE + 2193031185 + name 1_695_KEY_VOL_DOWN + 2193031186 + name 1_695_CH_PREVIOUS + 2193031187 + name 1_695_KEY_VOL_UP + 2193031188 + name 1_695_KEY_MNSELECT + 2193031191 + name 1_695_KEY_EXIT + 2193031192 + name 1_695_KEY_GUIDE + 2193031195 + name 1_695_KEY_MUP + 2193031216 + name 1_695_KEY_MDOWN + 2193031217 + name 1_695_KEY_MLEFT + 2193031218 + name 1_695_KEY_MRIGHT + 2193031219 + name 1_696_KEY_0 + 2193096704 + name 1_696_KEY_1 + 2193096705 + name 1_696_KEY_2 + 2193096706 + name 1_696_KEY_3 + 2193096707 + name 1_696_KEY_4 + 2193096708 + name 1_696_KEY_5 + 2193096709 + name 1_696_KEY_6 + 2193096710 + name 1_696_KEY_7 + 2193096711 + name 1_696_KEY_8 + 2193096712 + name 1_696_KEY_9 + 2193096713 + name 1_696_KEY_POWER + 2193096714 + name 1_696_KEY_CH_UP + 2193096719 + name 1_696_KEY_CH_DOWN + 2193096720 + name 1_696_KEY_MUTE + 2193096721 + name 1_696_KEY_VOL_DOWN + 2193096722 + name 1_696_KEY_VOL_UP + 2193096724 + name 1_696_KEY_MNSELECT + 2193096727 + name 1_696_KEY_AV + 2193096745 + name 1_696_KEY_MENU + 2193096751 + name 1_696_KEY_MUP + 2193096752 + name 1_696_KEY_MDOWN + 2193096753 + name 1_696_KEY_MLEFT + 2193096754 + name 1_696_KEY_MRIGHT + 2193096755 + name 1_696_KEY_Sleep + 2193096767 + name 1_697_KEY_0 + 2193162240 + name 1_697_KEY_1 + 2193162241 + name 1_697_KEY_2 + 2193162242 + name 1_697_KEY_3 + 2193162243 + name 1_697_KEY_4 + 2193162244 + name 1_697_KEY_5 + 2193162245 + name 1_697_KEY_6 + 2193162246 + name 1_697_KEY_7 + 2193162247 + name 1_697_KEY_8 + 2193162248 + name 1_697_KEY_9 + 2193162249 + name 1_697_KEY_POWER + 2193162250 + name 1_697_KEY_CH_UP + 2193162255 + name 1_697_KEY_CH_DOWN + 2193162256 + name 1_697_KEY_MUTE + 2193162257 + name 1_697_KEY_VOL_DOWN + 2193162258 + name 1_697_KEY_VOL_UP + 2193162260 + name 1_697_KEY_AV + 2193162281 + name 1_697_KEY_MENU + 2193162287 + name 1_697_KEY_MUP + 2193162288 + name 1_697_KEY_MDOWN + 2193162289 + name 1_697_KEY_MLEFT + 2193162290 + name 1_697_KEY_MRIGHT + 2193162291 + name 1_697_KEY_Sleep + 2193162303 + name 1_697_KEY_Off + 2193162318 + name 1_698_KEY_0 + 2193227776 + name 1_698_KEY_1 + 2193227777 + name 1_698_KEY_2 + 2193227778 + name 1_698_KEY_3 + 2193227779 + name 1_698_KEY_4 + 2193227780 + name 1_698_KEY_5 + 2193227781 + name 1_698_KEY_6 + 2193227782 + name 1_698_KEY_7 + 2193227783 + name 1_698_KEY_8 + 2193227784 + name 1_698_KEY_9 + 2193227785 + name 1_698_KEY_POWER + 2193227786 + name 1_698_KEY_CH_UP + 2193227791 + name 1_698_KEY_CH_DOWN + 2193227792 + name 1_698_KEY_MUTE + 2193227793 + name 1_698_KEY_VOL_DOWN + 2193227794 + name 1_698_KEY_VOL_UP + 2193227796 + name 1_698_KEY_MNSELECT + 2193227799 + name 1_698_KEY_MENU + 2193227823 + name 1_698_KEY_MUP + 2193227824 + name 1_698_KEY_MDOWN + 2193227825 + name 1_698_KEY_MLEFT + 2193227826 + name 1_698_KEY_MRIGHT + 2193227827 + name 1_698_KEY_Off + 2193227854 + name 1_699_KEY_0 + 2193293312 + name 1_699_KEY_1 + 2193293313 + name 1_699_KEY_2 + 2193293314 + name 1_699_KEY_3 + 2193293315 + name 1_699_KEY_4 + 2193293316 + name 1_699_KEY_5 + 2193293317 + name 1_699_KEY_6 + 2193293318 + name 1_699_KEY_7 + 2193293319 + name 1_699_KEY_8 + 2193293320 + name 1_699_KEY_9 + 2193293321 + name 1_699_KEY_POWER + 2193293322 + name 1_699_KEY_CH_UP + 2193293327 + name 1_699_KEY_CH_DOWN + 2193293328 + name 1_699_KEY_MUTE + 2193293329 + name 1_699_KEY_VOL_DOWN + 2193293330 + name 1_699_KEY_VOL_UP + 2193293332 + name 1_699_KEY_GUIDE + 2193293339 + name 1_699_KEY_AV + 2193293353 + name 1_699_KEY_MUP + 2193293360 + name 1_699_KEY_MDOWN + 2193293361 + name 1_699_KEY_MLEFT + 2193293362 + name 1_699_KEY_MRIGHT + 2193293363 + name 1_700_KEY_0 + 2193358848 + name 1_700_KEY_1 + 2193358849 + name 1_700_KEY_2 + 2193358850 + name 1_700_KEY_3 + 2193358851 + name 1_700_KEY_4 + 2193358852 + name 1_700_KEY_5 + 2193358853 + name 1_700_KEY_6 + 2193358854 + name 1_700_KEY_7 + 2193358855 + name 1_700_KEY_8 + 2193358856 + name 1_700_KEY_9 + 2193358857 + name 1_700_KEY_POWER + 2193358858 + name 1_700_KEY_CH_UP + 2193358863 + name 1_700_KEY_CH_DOWN + 2193358864 + name 1_700_KEY_MUTE + 2193358865 + name 1_700_KEY_VOL_DOWN + 2193358866 + name 1_700_CH_PREVIOUS + 2193358867 + name 1_700_KEY_VOL_UP + 2193358868 + name 1_700_KEY_MNSELECT + 2193358871 + name 1_700_KEY_EXIT + 2193358872 + name 1_700_KEY_GUIDE + 2193358875 + name 1_700_KEY_BLUE + 2193358883 + name 1_700_KEY_GREEN + 2193358884 + name 1_700_KEY_RED + 2193358885 + name 1_700_KEY_YELLOW + 2193358886 + name 1_700_KEY_MENU + 2193358895 + name 1_700_KEY_MUP + 2193358896 + name 1_700_KEY_MDOWN + 2193358897 + name 1_700_KEY_MLEFT + 2193358898 + name 1_700_KEY_MRIGHT + 2193358899 + name 1_700_KEY_DSubtitle + 2193358916 + name 1_700_KEY_Off + 2193358926 + name 1_701_KEY_0 + 2193424384 + name 1_701_KEY_1 + 2193424385 + name 1_701_KEY_2 + 2193424386 + name 1_701_KEY_3 + 2193424387 + name 1_701_KEY_4 + 2193424388 + name 1_701_KEY_5 + 2193424389 + name 1_701_KEY_6 + 2193424390 + name 1_701_KEY_7 + 2193424391 + name 1_701_KEY_8 + 2193424392 + name 1_701_KEY_9 + 2193424393 + name 1_701_KEY_POWER + 2193424394 + name 1_701_KEY_CH_UP + 2193424399 + name 1_701_KEY_CH_DOWN + 2193424400 + name 1_701_KEY_MUTE + 2193424401 + name 1_701_KEY_VOL_DOWN + 2193424402 + name 1_701_CH_PREVIOUS + 2193424403 + name 1_701_KEY_VOL_UP + 2193424404 + name 1_701_KEY_MNSELECT + 2193424407 + name 1_701_KEY_EXIT + 2193424408 + name 1_701_KEY_GUIDE + 2193424411 + name 1_701_KEY_MENU + 2193424431 + name 1_701_KEY_MUP + 2193424432 + name 1_701_KEY_MDOWN + 2193424433 + name 1_701_KEY_MLEFT + 2193424434 + name 1_701_KEY_MRIGHT + 2193424435 + name 1_702_KEY_0 + 2193489920 + name 1_702_KEY_1 + 2193489921 + name 1_702_KEY_2 + 2193489922 + name 1_702_KEY_3 + 2193489923 + name 1_702_KEY_4 + 2193489924 + name 1_702_KEY_5 + 2193489925 + name 1_702_KEY_6 + 2193489926 + name 1_702_KEY_7 + 2193489927 + name 1_702_KEY_8 + 2193489928 + name 1_702_KEY_9 + 2193489929 + name 1_702_KEY_POWER + 2193489930 + name 1_702_KEY_CH_UP + 2193489935 + name 1_702_KEY_CH_DOWN + 2193489936 + name 1_702_KEY_MUTE + 2193489937 + name 1_702_KEY_VOL_DOWN + 2193489938 + name 1_702_CH_PREVIOUS + 2193489939 + name 1_702_KEY_VOL_UP + 2193489940 + name 1_702_KEY_AV + 2193489961 + name 1_703_KEY_0 + 2193555456 + name 1_703_KEY_1 + 2193555457 + name 1_703_KEY_2 + 2193555458 + name 1_703_KEY_3 + 2193555459 + name 1_703_KEY_4 + 2193555460 + name 1_703_KEY_5 + 2193555461 + name 1_703_KEY_6 + 2193555462 + name 1_703_KEY_7 + 2193555463 + name 1_703_KEY_8 + 2193555464 + name 1_703_KEY_9 + 2193555465 + name 1_703_KEY_POWER + 2193555466 + name 1_703_KEY_CH_UP + 2193555471 + name 1_703_KEY_CH_DOWN + 2193555472 + name 1_703_KEY_MUTE + 2193555473 + name 1_703_KEY_VOL_DOWN + 2193555474 + name 1_703_CH_PREVIOUS + 2193555475 + name 1_703_KEY_VOL_UP + 2193555476 + name 1_703_KEY_MNSELECT + 2193555479 + name 1_703_KEY_EXIT + 2193555480 + name 1_703_KEY_GUIDE + 2193555483 + name 1_703_KEY_BLUE + 2193555491 + name 1_703_KEY_GREEN + 2193555492 + name 1_703_KEY_RED + 2193555493 + name 1_703_KEY_YELLOW + 2193555494 + name 1_703_KEY_AV + 2193555497 + name 1_703_KEY_MENU + 2193555503 + name 1_703_KEY_MUP + 2193555504 + name 1_703_KEY_MDOWN + 2193555505 + name 1_703_KEY_MLEFT + 2193555506 + name 1_703_KEY_MRIGHT + 2193555507 + name 1_704_KEY_0 + 2193620992 + name 1_704_KEY_1 + 2193620993 + name 1_704_KEY_2 + 2193620994 + name 1_704_KEY_3 + 2193620995 + name 1_704_KEY_4 + 2193620996 + name 1_704_KEY_5 + 2193620997 + name 1_704_KEY_6 + 2193620998 + name 1_704_KEY_7 + 2193620999 + name 1_704_KEY_8 + 2193621000 + name 1_704_KEY_9 + 2193621001 + name 1_704_KEY_POWER + 2193621002 + name 1_704_KEY_CH_UP + 2193621007 + name 1_704_KEY_CH_DOWN + 2193621008 + name 1_704_KEY_MUTE + 2193621009 + name 1_704_KEY_VOL_DOWN + 2193621010 + name 1_704_CH_PREVIOUS + 2193621011 + name 1_704_KEY_VOL_UP + 2193621012 + name 1_704_KEY_MNSELECT + 2193621015 + name 1_704_KEY_EXIT + 2193621016 + name 1_704_KEY_GUIDE + 2193621019 + name 1_704_KEY_AV + 2193621033 + name 1_704_KEY_MENU + 2193621039 + name 1_704_KEY_MUP + 2193621040 + name 1_704_KEY_MDOWN + 2193621041 + name 1_704_KEY_MLEFT + 2193621042 + name 1_704_KEY_MRIGHT + 2193621043 + name 1_704_KEY_On + 2193621069 + name 1_704_KEY_Off + 2193621070 + name 1_705_KEY_0 + 2193686528 + name 1_705_KEY_1 + 2193686529 + name 1_705_KEY_2 + 2193686530 + name 1_705_KEY_3 + 2193686531 + name 1_705_KEY_4 + 2193686532 + name 1_705_KEY_5 + 2193686533 + name 1_705_KEY_6 + 2193686534 + name 1_705_KEY_7 + 2193686535 + name 1_705_KEY_8 + 2193686536 + name 1_705_KEY_9 + 2193686537 + name 1_705_KEY_POWER + 2193686538 + name 1_705_KEY_CH_UP + 2193686543 + name 1_705_KEY_CH_DOWN + 2193686544 + name 1_705_KEY_MUTE + 2193686545 + name 1_705_KEY_VOL_DOWN + 2193686546 + name 1_705_CH_PREVIOUS + 2193686547 + name 1_705_KEY_VOL_UP + 2193686548 + name 1_705_KEY_MNSELECT + 2193686551 + name 1_705_KEY_EXIT + 2193686552 + name 1_705_KEY_GUIDE + 2193686555 + name 1_705_KEY_MNRETRUN + 2193686560 + name 1_705_KEY_BLUE + 2193686563 + name 1_705_KEY_GREEN + 2193686564 + name 1_705_KEY_RED + 2193686565 + name 1_705_KEY_YELLOW + 2193686566 + name 1_705_KEY_AV + 2193686569 + name 1_705_KEY_MENU + 2193686575 + name 1_705_KEY_MUP + 2193686576 + name 1_705_KEY_MDOWN + 2193686577 + name 1_705_KEY_MLEFT + 2193686578 + name 1_705_KEY_MRIGHT + 2193686579 + name 1_705_KEY_DSubtitle + 2193686596 + name 1_706_KEY_0 + 2193752064 + name 1_706_KEY_1 + 2193752065 + name 1_706_KEY_2 + 2193752066 + name 1_706_KEY_3 + 2193752067 + name 1_706_KEY_4 + 2193752068 + name 1_706_KEY_5 + 2193752069 + name 1_706_KEY_6 + 2193752070 + name 1_706_KEY_7 + 2193752071 + name 1_706_KEY_8 + 2193752072 + name 1_706_KEY_9 + 2193752073 + name 1_706_KEY_POWER + 2193752074 + name 1_706_KEY_CH_UP + 2193752079 + name 1_706_KEY_CH_DOWN + 2193752080 + name 1_706_KEY_MUTE + 2193752081 + name 1_706_KEY_VOL_DOWN + 2193752082 + name 1_706_CH_PREVIOUS + 2193752083 + name 1_706_KEY_VOL_UP + 2193752084 + name 1_706_KEY_MNSELECT + 2193752087 + name 1_706_KEY_EXIT + 2193752088 + name 1_706_KEY_GUIDE + 2193752091 + name 1_706_KEY_MNRETRUN + 2193752096 + name 1_706_KEY_BLUE + 2193752099 + name 1_706_KEY_GREEN + 2193752100 + name 1_706_KEY_RED + 2193752101 + name 1_706_KEY_YELLOW + 2193752102 + name 1_706_KEY_MENU + 2193752111 + name 1_706_KEY_MUP + 2193752112 + name 1_706_KEY_MDOWN + 2193752113 + name 1_706_KEY_MLEFT + 2193752114 + name 1_706_KEY_MRIGHT + 2193752115 + name 1_706_KEY_DSubtitle + 2193752132 + name 1_706_KEY_On + 2193752141 + name 1_707_KEY_0 + 2193817600 + name 1_707_KEY_1 + 2193817601 + name 1_707_KEY_2 + 2193817602 + name 1_707_KEY_3 + 2193817603 + name 1_707_KEY_4 + 2193817604 + name 1_707_KEY_5 + 2193817605 + name 1_707_KEY_6 + 2193817606 + name 1_707_KEY_7 + 2193817607 + name 1_707_KEY_8 + 2193817608 + name 1_707_KEY_9 + 2193817609 + name 1_707_KEY_POWER + 2193817610 + name 1_707_TWO_DIGITS + 2193817613 + name 1_707_KEY_CH_UP + 2193817615 + name 1_707_KEY_CH_DOWN + 2193817616 + name 1_707_KEY_MUTE + 2193817617 + name 1_707_KEY_VOL_DOWN + 2193817618 + name 1_707_KEY_VOL_UP + 2193817620 + name 1_707_KEY_EXIT + 2193817624 + name 1_707_KEY_BLUE + 2193817635 + name 1_707_KEY_GREEN + 2193817636 + name 1_707_KEY_RED + 2193817637 + name 1_707_KEY_YELLOW + 2193817638 + name 1_707_KEY_AV + 2193817641 + name 1_707_KEY_MENU + 2193817647 + name 1_707_KEY_MUP + 2193817648 + name 1_707_KEY_MDOWN + 2193817649 + name 1_707_KEY_MLEFT + 2193817650 + name 1_707_KEY_MRIGHT + 2193817651 + name 1_707_KEY_On + 2193817677 + name 1_707_KEY_Off + 2193817678 + name 1_708_KEY_0 + 2193883136 + name 1_708_KEY_1 + 2193883137 + name 1_708_KEY_2 + 2193883138 + name 1_708_KEY_3 + 2193883139 + name 1_708_KEY_4 + 2193883140 + name 1_708_KEY_5 + 2193883141 + name 1_708_KEY_6 + 2193883142 + name 1_708_KEY_7 + 2193883143 + name 1_708_KEY_8 + 2193883144 + name 1_708_KEY_9 + 2193883145 + name 1_708_KEY_POWER + 2193883146 + name 1_708_KEY_CH_UP + 2193883151 + name 1_708_KEY_CH_DOWN + 2193883152 + name 1_708_KEY_MUTE + 2193883153 + name 1_708_KEY_VOL_DOWN + 2193883154 + name 1_708_KEY_VOL_UP + 2193883156 + name 1_708_KEY_EXIT + 2193883160 + name 1_708_KEY_GUIDE + 2193883163 + name 1_708_KEY_BLUE + 2193883171 + name 1_708_KEY_GREEN + 2193883172 + name 1_708_KEY_RED + 2193883173 + name 1_708_KEY_YELLOW + 2193883174 + name 1_708_KEY_MENU + 2193883183 + name 1_708_KEY_MUP + 2193883184 + name 1_708_KEY_MDOWN + 2193883185 + name 1_708_KEY_MLEFT + 2193883186 + name 1_708_KEY_MRIGHT + 2193883187 + name 1_708_KEY_DSubtitle + 2193883204 + name 1_708_KEY_TTOnOff + 2193883209 + name 1_709_KEY_0 + 2193948672 + name 1_709_KEY_1 + 2193948673 + name 1_709_KEY_2 + 2193948674 + name 1_709_KEY_3 + 2193948675 + name 1_709_KEY_4 + 2193948676 + name 1_709_KEY_5 + 2193948677 + name 1_709_KEY_6 + 2193948678 + name 1_709_KEY_7 + 2193948679 + name 1_709_KEY_8 + 2193948680 + name 1_709_KEY_9 + 2193948681 + name 1_709_KEY_CH_UP + 2193948687 + name 1_709_KEY_CH_DOWN + 2193948688 + name 1_709_KEY_MNSELECT + 2193948695 + name 1_709_KEY_MNRETRUN + 2193948704 + name 1_709_KEY_MENU + 2193948719 + name 1_710_KEY_0 + 2194014208 + name 1_710_KEY_1 + 2194014209 + name 1_710_KEY_2 + 2194014210 + name 1_710_KEY_3 + 2194014211 + name 1_710_KEY_4 + 2194014212 + name 1_710_KEY_5 + 2194014213 + name 1_710_KEY_6 + 2194014214 + name 1_710_KEY_7 + 2194014215 + name 1_710_KEY_8 + 2194014216 + name 1_710_KEY_9 + 2194014217 + name 1_710_KEY_POWER + 2194014218 + name 1_710_KEY_CH_UP + 2194014223 + name 1_710_KEY_CH_DOWN + 2194014224 + name 1_710_KEY_MUTE + 2194014225 + name 1_710_KEY_MNSELECT + 2194014231 + name 1_710_KEY_EXIT + 2194014232 + name 1_710_KEY_GUIDE + 2194014235 + name 1_710_KEY_MNRETRUN + 2194014240 + name 1_710_KEY_MENU + 2194014255 + name 1_710_KEY_MUP + 2194014256 + name 1_710_KEY_MDOWN + 2194014257 + name 1_710_KEY_MLEFT + 2194014258 + name 1_710_KEY_MRIGHT + 2194014259 + name 1_710_KEY_DSubtitle + 2194014276 + name 1_711_KEY_0 + 2194079744 + name 1_711_KEY_1 + 2194079745 + name 1_711_KEY_2 + 2194079746 + name 1_711_KEY_3 + 2194079747 + name 1_711_KEY_4 + 2194079748 + name 1_711_KEY_5 + 2194079749 + name 1_711_KEY_6 + 2194079750 + name 1_711_KEY_7 + 2194079751 + name 1_711_KEY_8 + 2194079752 + name 1_711_KEY_9 + 2194079753 + name 1_711_KEY_POWER + 2194079754 + name 1_711_KEY_CH_UP + 2194079759 + name 1_711_KEY_CH_DOWN + 2194079760 + name 1_711_KEY_MUTE + 2194079761 + name 1_711_KEY_VOL_DOWN + 2194079762 + name 1_711_KEY_VOL_UP + 2194079764 + name 1_711_KEY_MNSELECT + 2194079767 + name 1_711_KEY_EXIT + 2194079768 + name 1_711_KEY_GUIDE + 2194079771 + name 1_711_KEY_MNRETRUN + 2194079776 + name 1_711_KEY_MENU + 2194079791 + name 1_711_KEY_MUP + 2194079792 + name 1_711_KEY_MDOWN + 2194079793 + name 1_711_KEY_MLEFT + 2194079794 + name 1_711_KEY_MRIGHT + 2194079795 + name 1_711_KEY_DSubtitle + 2194079812 + name 1_712_KEY_0 + 2194145280 + name 1_712_KEY_1 + 2194145281 + name 1_712_KEY_2 + 2194145282 + name 1_712_KEY_3 + 2194145283 + name 1_712_KEY_4 + 2194145284 + name 1_712_KEY_5 + 2194145285 + name 1_712_KEY_6 + 2194145286 + name 1_712_KEY_7 + 2194145287 + name 1_712_KEY_8 + 2194145288 + name 1_712_KEY_9 + 2194145289 + name 1_712_KEY_POWER + 2194145290 + name 1_712_KEY_CH_UP + 2194145295 + name 1_712_KEY_CH_DOWN + 2194145296 + name 1_712_KEY_MUTE + 2194145297 + name 1_712_KEY_VOL_DOWN + 2194145298 + name 1_712_CH_PREVIOUS + 2194145299 + name 1_712_KEY_VOL_UP + 2194145300 + name 1_712_KEY_MNSELECT + 2194145303 + name 1_712_KEY_GUIDE + 2194145307 + name 1_712_KEY_MNRETRUN + 2194145312 + name 1_712_KEY_BLUE + 2194145315 + name 1_712_KEY_GREEN + 2194145316 + name 1_712_KEY_RED + 2194145317 + name 1_712_KEY_YELLOW + 2194145318 + name 1_712_KEY_TIMER + 2194145324 + name 1_712_KEY_MUP + 2194145328 + name 1_712_KEY_MDOWN + 2194145329 + name 1_712_KEY_MLEFT + 2194145330 + name 1_712_KEY_MRIGHT + 2194145331 + name 1_712_KEY_DSubtitle + 2194145348 + name 1_712_KEY_On + 2194145357 + name 1_713_KEY_0 + 2194210816 + name 1_713_KEY_1 + 2194210817 + name 1_713_KEY_2 + 2194210818 + name 1_713_KEY_3 + 2194210819 + name 1_713_KEY_4 + 2194210820 + name 1_713_KEY_5 + 2194210821 + name 1_713_KEY_6 + 2194210822 + name 1_713_KEY_7 + 2194210823 + name 1_713_KEY_8 + 2194210824 + name 1_713_KEY_9 + 2194210825 + name 1_713_KEY_POWER + 2194210826 + name 1_713_KEY_CH_UP + 2194210831 + name 1_713_KEY_CH_DOWN + 2194210832 + name 1_713_KEY_MUTE + 2194210833 + name 1_713_KEY_VOL_DOWN + 2194210834 + name 1_713_CH_PREVIOUS + 2194210835 + name 1_713_KEY_VOL_UP + 2194210836 + name 1_713_KEY_MNSELECT + 2194210839 + name 1_713_KEY_EXIT + 2194210840 + name 1_713_KEY_GUIDE + 2194210843 + name 1_713_KEY_MNRETRUN + 2194210848 + name 1_713_KEY_MENU + 2194210863 + name 1_713_KEY_MUP + 2194210864 + name 1_713_KEY_MDOWN + 2194210865 + name 1_713_KEY_MLEFT + 2194210866 + name 1_713_KEY_MRIGHT + 2194210867 + name 1_713_KEY_DSubtitle + 2194210884 + name 1_714_KEY_0 + 2194276352 + name 1_714_KEY_1 + 2194276353 + name 1_714_KEY_2 + 2194276354 + name 1_714_KEY_3 + 2194276355 + name 1_714_KEY_4 + 2194276356 + name 1_714_KEY_5 + 2194276357 + name 1_714_KEY_6 + 2194276358 + name 1_714_KEY_7 + 2194276359 + name 1_714_KEY_8 + 2194276360 + name 1_714_KEY_9 + 2194276361 + name 1_714_KEY_POWER + 2194276362 + name 1_714_KEY_CH_UP + 2194276367 + name 1_714_KEY_CH_DOWN + 2194276368 + name 1_714_KEY_MUTE + 2194276369 + name 1_714_KEY_VOL_DOWN + 2194276370 + name 1_714_CH_PREVIOUS + 2194276371 + name 1_714_KEY_VOL_UP + 2194276372 + name 1_714_KEY_MNSELECT + 2194276375 + name 1_714_KEY_EXIT + 2194276376 + name 1_714_KEY_GUIDE + 2194276379 + name 1_714_KEY_TIMER + 2194276396 + name 1_714_KEY_MUP + 2194276400 + name 1_714_KEY_MDOWN + 2194276401 + name 1_714_KEY_MLEFT + 2194276402 + name 1_714_KEY_MRIGHT + 2194276403 + name 1_714_KEY_DSubtitle + 2194276420 + name 1_715_KEY_0 + 2194341888 + name 1_715_KEY_1 + 2194341889 + name 1_715_KEY_2 + 2194341890 + name 1_715_KEY_3 + 2194341891 + name 1_715_KEY_4 + 2194341892 + name 1_715_KEY_5 + 2194341893 + name 1_715_KEY_6 + 2194341894 + name 1_715_KEY_7 + 2194341895 + name 1_715_KEY_8 + 2194341896 + name 1_715_KEY_9 + 2194341897 + name 1_715_KEY_POWER + 2194341898 + name 1_715_KEY_CH_UP + 2194341903 + name 1_715_KEY_CH_DOWN + 2194341904 + name 1_715_KEY_MUTE + 2194341905 + name 1_715_KEY_VOL_DOWN + 2194341906 + name 1_715_CH_PREVIOUS + 2194341907 + name 1_715_KEY_VOL_UP + 2194341908 + name 1_715_KEY_MNSELECT + 2194341911 + name 1_715_KEY_EXIT + 2194341912 + name 1_715_KEY_GUIDE + 2194341915 + name 1_715_KEY_BLUE + 2194341923 + name 1_715_KEY_GREEN + 2194341924 + name 1_715_KEY_RED + 2194341925 + name 1_715_KEY_YELLOW + 2194341926 + name 1_715_KEY_TIMER + 2194341932 + name 1_715_KEY_MENU + 2194341935 + name 1_715_KEY_MUP + 2194341936 + name 1_715_KEY_MDOWN + 2194341937 + name 1_715_KEY_MLEFT + 2194341938 + name 1_715_KEY_MRIGHT + 2194341939 + name 1_715_KEY_DSubtitle + 2194341956 + name 1_715_KEY_On + 2194341965 + name 1_716_KEY_0 + 2194407424 + name 1_716_KEY_1 + 2194407425 + name 1_716_KEY_2 + 2194407426 + name 1_716_KEY_3 + 2194407427 + name 1_716_KEY_4 + 2194407428 + name 1_716_KEY_5 + 2194407429 + name 1_716_KEY_6 + 2194407430 + name 1_716_KEY_7 + 2194407431 + name 1_716_KEY_8 + 2194407432 + name 1_716_KEY_9 + 2194407433 + name 1_716_KEY_POWER + 2194407434 + name 1_716_KEY_CH_UP + 2194407439 + name 1_716_KEY_CH_DOWN + 2194407440 + name 1_716_KEY_MUTE + 2194407441 + name 1_716_KEY_VOL_DOWN + 2194407442 + name 1_716_KEY_VOL_UP + 2194407444 + name 1_716_KEY_MNSELECT + 2194407447 + name 1_716_KEY_EXIT + 2194407448 + name 1_716_KEY_GUIDE + 2194407451 + name 1_716_KEY_FAV + 2194407453 + name 1_716_KEY_MENU + 2194407471 + name 1_716_KEY_MUP + 2194407472 + name 1_716_KEY_MDOWN + 2194407473 + name 1_716_KEY_MLEFT + 2194407474 + name 1_716_KEY_MRIGHT + 2194407475 + name 1_716_KEY_DSubtitle + 2194407492 + name 1_717_KEY_0 + 2194472960 + name 1_717_KEY_1 + 2194472961 + name 1_717_KEY_2 + 2194472962 + name 1_717_KEY_3 + 2194472963 + name 1_717_KEY_4 + 2194472964 + name 1_717_KEY_5 + 2194472965 + name 1_717_KEY_6 + 2194472966 + name 1_717_KEY_7 + 2194472967 + name 1_717_KEY_8 + 2194472968 + name 1_717_KEY_9 + 2194472969 + name 1_717_KEY_POWER + 2194472970 + name 1_717_TWO_DIGITS + 2194472973 + name 1_717_KEY_CH_UP + 2194472975 + name 1_717_KEY_CH_DOWN + 2194472976 + name 1_717_KEY_MUTE + 2194472977 + name 1_717_KEY_VOL_DOWN + 2194472978 + name 1_717_KEY_VOL_UP + 2194472980 + name 1_717_KEY_EXIT + 2194472984 + name 1_717_KEY_BLUE + 2194472995 + name 1_717_KEY_GREEN + 2194472996 + name 1_717_KEY_RED + 2194472997 + name 1_717_KEY_YELLOW + 2194472998 + name 1_717_KEY_AV + 2194473001 + name 1_717_KEY_MENU + 2194473007 + name 1_717_KEY_MUP + 2194473008 + name 1_717_KEY_MDOWN + 2194473009 + name 1_717_KEY_MLEFT + 2194473010 + name 1_717_KEY_MRIGHT + 2194473011 + name 1_717_KEY_On + 2194473037 + name 1_718_KEY_0 + 2194538496 + name 1_718_KEY_1 + 2194538497 + name 1_718_KEY_2 + 2194538498 + name 1_718_KEY_3 + 2194538499 + name 1_718_KEY_4 + 2194538500 + name 1_718_KEY_5 + 2194538501 + name 1_718_KEY_6 + 2194538502 + name 1_718_KEY_7 + 2194538503 + name 1_718_KEY_8 + 2194538504 + name 1_718_KEY_9 + 2194538505 + name 1_718_KEY_POWER + 2194538506 + name 1_718_TWO_DIGITS + 2194538509 + name 1_718_KEY_CH_UP + 2194538511 + name 1_718_KEY_CH_DOWN + 2194538512 + name 1_718_KEY_MUTE + 2194538513 + name 1_718_KEY_VOL_DOWN + 2194538514 + name 1_718_KEY_VOL_UP + 2194538516 + name 1_718_KEY_EXIT + 2194538520 + name 1_718_KEY_BLUE + 2194538531 + name 1_718_KEY_GREEN + 2194538532 + name 1_718_KEY_RED + 2194538533 + name 1_718_KEY_YELLOW + 2194538534 + name 1_718_KEY_AV + 2194538537 + name 1_718_KEY_MENU + 2194538543 + name 1_718_KEY_MUP + 2194538544 + name 1_718_KEY_MDOWN + 2194538545 + name 1_718_KEY_MLEFT + 2194538546 + name 1_718_KEY_MRIGHT + 2194538547 + name 1_718_KEY_On + 2194538573 + name 1_718_KEY_Off + 2194538574 + name 1_719_KEY_0 + 2194604032 + name 1_719_KEY_1 + 2194604033 + name 1_719_KEY_2 + 2194604034 + name 1_719_KEY_3 + 2194604035 + name 1_719_KEY_4 + 2194604036 + name 1_719_KEY_5 + 2194604037 + name 1_719_KEY_6 + 2194604038 + name 1_719_KEY_7 + 2194604039 + name 1_719_KEY_8 + 2194604040 + name 1_719_KEY_9 + 2194604041 + name 1_719_KEY_POWER + 2194604042 + name 1_719_TWO_DIGITS + 2194604045 + name 1_719_KEY_CH_UP + 2194604047 + name 1_719_KEY_CH_DOWN + 2194604048 + name 1_719_KEY_MUTE + 2194604049 + name 1_719_KEY_VOL_DOWN + 2194604050 + name 1_719_KEY_VOL_UP + 2194604052 + name 1_719_KEY_EXIT + 2194604056 + name 1_719_KEY_BLUE + 2194604067 + name 1_719_KEY_GREEN + 2194604068 + name 1_719_KEY_RED + 2194604069 + name 1_719_KEY_YELLOW + 2194604070 + name 1_719_KEY_AV + 2194604073 + name 1_719_KEY_MENU + 2194604079 + name 1_719_KEY_MUP + 2194604080 + name 1_719_KEY_MDOWN + 2194604081 + name 1_719_KEY_MLEFT + 2194604082 + name 1_719_KEY_MRIGHT + 2194604083 + name 1_719_KEY_On + 2194604109 + name 1_719_KEY_Off + 2194604110 + name 1_720_KEY_0 + 2194669568 + name 1_720_KEY_1 + 2194669569 + name 1_720_KEY_2 + 2194669570 + name 1_720_KEY_3 + 2194669571 + name 1_720_KEY_4 + 2194669572 + name 1_720_KEY_5 + 2194669573 + name 1_720_KEY_6 + 2194669574 + name 1_720_KEY_7 + 2194669575 + name 1_720_KEY_8 + 2194669576 + name 1_720_KEY_9 + 2194669577 + name 1_720_KEY_POWER + 2194669578 + name 1_720_TWO_DIGITS + 2194669581 + name 1_720_KEY_CH_UP + 2194669583 + name 1_720_KEY_CH_DOWN + 2194669584 + name 1_720_KEY_MUTE + 2194669585 + name 1_720_KEY_VOL_DOWN + 2194669586 + name 1_720_KEY_VOL_UP + 2194669588 + name 1_720_KEY_EXIT + 2194669592 + name 1_720_KEY_BLUE + 2194669603 + name 1_720_KEY_GREEN + 2194669604 + name 1_720_KEY_RED + 2194669605 + name 1_720_KEY_YELLOW + 2194669606 + name 1_720_KEY_AV + 2194669609 + name 1_720_KEY_MENU + 2194669615 + name 1_720_KEY_MUP + 2194669616 + name 1_720_KEY_MDOWN + 2194669617 + name 1_720_KEY_MLEFT + 2194669618 + name 1_720_KEY_MRIGHT + 2194669619 + name 1_720_KEY_On + 2194669645 + name 1_720_KEY_Off + 2194669646 + name 1_721_KEY_0 + 2194735104 + name 1_721_KEY_1 + 2194735105 + name 1_721_KEY_2 + 2194735106 + name 1_721_KEY_3 + 2194735107 + name 1_721_KEY_4 + 2194735108 + name 1_721_KEY_5 + 2194735109 + name 1_721_KEY_6 + 2194735110 + name 1_721_KEY_7 + 2194735111 + name 1_721_KEY_8 + 2194735112 + name 1_721_KEY_9 + 2194735113 + name 1_721_KEY_POWER + 2194735114 + name 1_721_TWO_DIGITS + 2194735117 + name 1_721_KEY_CH_UP + 2194735119 + name 1_721_KEY_CH_DOWN + 2194735120 + name 1_721_KEY_MUTE + 2194735121 + name 1_721_KEY_VOL_DOWN + 2194735122 + name 1_721_KEY_VOL_UP + 2194735124 + name 1_721_KEY_EXIT + 2194735128 + name 1_721_KEY_BLUE + 2194735139 + name 1_721_KEY_GREEN + 2194735140 + name 1_721_KEY_RED + 2194735141 + name 1_721_KEY_YELLOW + 2194735142 + name 1_721_KEY_AV + 2194735145 + name 1_721_KEY_MENU + 2194735151 + name 1_721_KEY_MUP + 2194735152 + name 1_721_KEY_MDOWN + 2194735153 + name 1_721_KEY_MLEFT + 2194735154 + name 1_721_KEY_MRIGHT + 2194735155 + name 1_721_KEY_On + 2194735181 + name 1_721_KEY_Off + 2194735182 + name 1_722_KEY_0 + 2194800640 + name 1_722_KEY_1 + 2194800641 + name 1_722_KEY_2 + 2194800642 + name 1_722_KEY_3 + 2194800643 + name 1_722_KEY_4 + 2194800644 + name 1_722_KEY_5 + 2194800645 + name 1_722_KEY_6 + 2194800646 + name 1_722_KEY_7 + 2194800647 + name 1_722_KEY_8 + 2194800648 + name 1_722_KEY_9 + 2194800649 + name 1_722_KEY_POWER + 2194800650 + name 1_722_TWO_DIGITS + 2194800653 + name 1_722_KEY_CH_UP + 2194800655 + name 1_722_KEY_CH_DOWN + 2194800656 + name 1_722_KEY_MUTE + 2194800657 + name 1_722_KEY_VOL_DOWN + 2194800658 + name 1_722_KEY_VOL_UP + 2194800660 + name 1_722_KEY_EXIT + 2194800664 + name 1_722_KEY_BLUE + 2194800675 + name 1_722_KEY_GREEN + 2194800676 + name 1_722_KEY_RED + 2194800677 + name 1_722_KEY_YELLOW + 2194800678 + name 1_722_KEY_AV + 2194800681 + name 1_722_KEY_MENU + 2194800687 + name 1_722_KEY_MUP + 2194800688 + name 1_722_KEY_MDOWN + 2194800689 + name 1_722_KEY_MLEFT + 2194800690 + name 1_722_KEY_MRIGHT + 2194800691 + name 1_722_KEY_On + 2194800717 + name 1_722_KEY_Off + 2194800718 + name 1_723_KEY_0 + 2194866176 + name 1_723_KEY_1 + 2194866177 + name 1_723_KEY_2 + 2194866178 + name 1_723_KEY_3 + 2194866179 + name 1_723_KEY_4 + 2194866180 + name 1_723_KEY_5 + 2194866181 + name 1_723_KEY_6 + 2194866182 + name 1_723_KEY_7 + 2194866183 + name 1_723_KEY_8 + 2194866184 + name 1_723_KEY_9 + 2194866185 + name 1_723_KEY_POWER + 2194866186 + name 1_723_TWO_DIGITS + 2194866189 + name 1_723_KEY_CH_UP + 2194866191 + name 1_723_KEY_CH_DOWN + 2194866192 + name 1_723_KEY_EXIT + 2194866200 + name 1_723_KEY_BLUE + 2194866211 + name 1_723_KEY_GREEN + 2194866212 + name 1_723_KEY_RED + 2194866213 + name 1_723_KEY_YELLOW + 2194866214 + name 1_723_KEY_AV + 2194866217 + name 1_723_KEY_MENU + 2194866223 + name 1_723_KEY_MUP + 2194866224 + name 1_723_KEY_MDOWN + 2194866225 + name 1_723_KEY_MLEFT + 2194866226 + name 1_723_KEY_MRIGHT + 2194866227 + name 1_723_KEY_On + 2194866253 + name 1_723_KEY_Off + 2194866254 + name 1_724_KEY_0 + 2194931712 + name 1_724_KEY_1 + 2194931713 + name 1_724_KEY_2 + 2194931714 + name 1_724_KEY_3 + 2194931715 + name 1_724_KEY_4 + 2194931716 + name 1_724_KEY_5 + 2194931717 + name 1_724_KEY_6 + 2194931718 + name 1_724_KEY_7 + 2194931719 + name 1_724_KEY_8 + 2194931720 + name 1_724_KEY_9 + 2194931721 + name 1_724_KEY_POWER + 2194931722 + name 1_724_TWO_DIGITS + 2194931725 + name 1_724_KEY_CH_UP + 2194931727 + name 1_724_KEY_CH_DOWN + 2194931728 + name 1_724_KEY_MUTE + 2194931729 + name 1_724_KEY_VOL_DOWN + 2194931730 + name 1_724_KEY_VOL_UP + 2194931732 + name 1_724_KEY_EXIT + 2194931736 + name 1_724_KEY_BLUE + 2194931747 + name 1_724_KEY_GREEN + 2194931748 + name 1_724_KEY_RED + 2194931749 + name 1_724_KEY_YELLOW + 2194931750 + name 1_724_KEY_AV + 2194931753 + name 1_724_KEY_MENU + 2194931759 + name 1_724_KEY_MUP + 2194931760 + name 1_724_KEY_MDOWN + 2194931761 + name 1_724_KEY_MLEFT + 2194931762 + name 1_724_KEY_MRIGHT + 2194931763 + name 1_724_KEY_On + 2194931789 + name 1_724_KEY_Off + 2194931790 + name 1_725_KEY_0 + 2194997248 + name 1_725_KEY_1 + 2194997249 + name 1_725_KEY_2 + 2194997250 + name 1_725_KEY_3 + 2194997251 + name 1_725_KEY_4 + 2194997252 + name 1_725_KEY_5 + 2194997253 + name 1_725_KEY_6 + 2194997254 + name 1_725_KEY_7 + 2194997255 + name 1_725_KEY_8 + 2194997256 + name 1_725_KEY_9 + 2194997257 + name 1_725_KEY_POWER + 2194997258 + name 1_725_TWO_DIGITS + 2194997261 + name 1_725_KEY_CH_UP + 2194997263 + name 1_725_KEY_CH_DOWN + 2194997264 + name 1_725_KEY_MUTE + 2194997265 + name 1_725_KEY_VOL_DOWN + 2194997266 + name 1_725_KEY_VOL_UP + 2194997268 + name 1_725_KEY_EXIT + 2194997272 + name 1_725_KEY_BLUE + 2194997283 + name 1_725_KEY_GREEN + 2194997284 + name 1_725_KEY_RED + 2194997285 + name 1_725_KEY_YELLOW + 2194997286 + name 1_725_KEY_AV + 2194997289 + name 1_725_KEY_MENU + 2194997295 + name 1_725_KEY_MUP + 2194997296 + name 1_725_KEY_MDOWN + 2194997297 + name 1_725_KEY_MLEFT + 2194997298 + name 1_725_KEY_MRIGHT + 2194997299 + name 1_725_KEY_On + 2194997325 + name 1_725_KEY_Off + 2194997326 + name 1_726_KEY_0 + 2195062784 + name 1_726_KEY_1 + 2195062785 + name 1_726_KEY_2 + 2195062786 + name 1_726_KEY_3 + 2195062787 + name 1_726_KEY_4 + 2195062788 + name 1_726_KEY_5 + 2195062789 + name 1_726_KEY_6 + 2195062790 + name 1_726_KEY_7 + 2195062791 + name 1_726_KEY_8 + 2195062792 + name 1_726_KEY_9 + 2195062793 + name 1_726_KEY_POWER + 2195062794 + name 1_726_TWO_DIGITS + 2195062797 + name 1_726_KEY_CH_UP + 2195062799 + name 1_726_KEY_CH_DOWN + 2195062800 + name 1_726_KEY_MUTE + 2195062801 + name 1_726_KEY_VOL_DOWN + 2195062802 + name 1_726_KEY_VOL_UP + 2195062804 + name 1_726_KEY_EXIT + 2195062808 + name 1_726_KEY_BLUE + 2195062819 + name 1_726_KEY_GREEN + 2195062820 + name 1_726_KEY_RED + 2195062821 + name 1_726_KEY_YELLOW + 2195062822 + name 1_726_KEY_AV + 2195062825 + name 1_726_KEY_MENU + 2195062831 + name 1_726_KEY_MUP + 2195062832 + name 1_726_KEY_MDOWN + 2195062833 + name 1_726_KEY_MLEFT + 2195062834 + name 1_726_KEY_MRIGHT + 2195062835 + name 1_726_KEY_On + 2195062861 + name 1_726_KEY_Off + 2195062862 + name 1_727_KEY_0 + 2195128320 + name 1_727_KEY_1 + 2195128321 + name 1_727_KEY_2 + 2195128322 + name 1_727_KEY_3 + 2195128323 + name 1_727_KEY_4 + 2195128324 + name 1_727_KEY_5 + 2195128325 + name 1_727_KEY_6 + 2195128326 + name 1_727_KEY_7 + 2195128327 + name 1_727_KEY_8 + 2195128328 + name 1_727_KEY_9 + 2195128329 + name 1_727_KEY_POWER + 2195128330 + name 1_727_TWO_DIGITS + 2195128333 + name 1_727_KEY_CH_UP + 2195128335 + name 1_727_KEY_CH_DOWN + 2195128336 + name 1_727_KEY_MUTE + 2195128337 + name 1_727_KEY_VOL_DOWN + 2195128338 + name 1_727_KEY_VOL_UP + 2195128340 + name 1_727_KEY_EXIT + 2195128344 + name 1_727_KEY_BLUE + 2195128355 + name 1_727_KEY_GREEN + 2195128356 + name 1_727_KEY_RED + 2195128357 + name 1_727_KEY_YELLOW + 2195128358 + name 1_727_KEY_AV + 2195128361 + name 1_727_KEY_MENU + 2195128367 + name 1_727_KEY_MUP + 2195128368 + name 1_727_KEY_MDOWN + 2195128369 + name 1_727_KEY_MLEFT + 2195128370 + name 1_727_KEY_MRIGHT + 2195128371 + name 1_727_KEY_On + 2195128397 + name 1_727_KEY_Off + 2195128398 + name 1_728_KEY_0 + 2195193856 + name 1_728_KEY_1 + 2195193857 + name 1_728_KEY_2 + 2195193858 + name 1_728_KEY_3 + 2195193859 + name 1_728_KEY_4 + 2195193860 + name 1_728_KEY_5 + 2195193861 + name 1_728_KEY_6 + 2195193862 + name 1_728_KEY_7 + 2195193863 + name 1_728_KEY_8 + 2195193864 + name 1_728_KEY_9 + 2195193865 + name 1_728_KEY_POWER + 2195193866 + name 1_728_TWO_DIGITS + 2195193869 + name 1_728_KEY_CH_UP + 2195193871 + name 1_728_KEY_CH_DOWN + 2195193872 + name 1_728_KEY_MUTE + 2195193873 + name 1_728_KEY_VOL_DOWN + 2195193874 + name 1_728_KEY_VOL_UP + 2195193876 + name 1_728_KEY_EXIT + 2195193880 + name 1_728_KEY_BLUE + 2195193891 + name 1_728_KEY_GREEN + 2195193892 + name 1_728_KEY_RED + 2195193893 + name 1_728_KEY_YELLOW + 2195193894 + name 1_728_KEY_AV + 2195193897 + name 1_728_KEY_MENU + 2195193903 + name 1_728_KEY_MUP + 2195193904 + name 1_728_KEY_MDOWN + 2195193905 + name 1_728_KEY_MLEFT + 2195193906 + name 1_728_KEY_MRIGHT + 2195193907 + name 1_728_KEY_On + 2195193933 + name 1_728_KEY_Off + 2195193934 + name 1_729_KEY_0 + 2195259392 + name 1_729_KEY_1 + 2195259393 + name 1_729_KEY_2 + 2195259394 + name 1_729_KEY_3 + 2195259395 + name 1_729_KEY_4 + 2195259396 + name 1_729_KEY_5 + 2195259397 + name 1_729_KEY_6 + 2195259398 + name 1_729_KEY_7 + 2195259399 + name 1_729_KEY_8 + 2195259400 + name 1_729_KEY_9 + 2195259401 + name 1_729_KEY_POWER + 2195259402 + name 1_729_TWO_DIGITS + 2195259405 + name 1_729_KEY_CH_UP + 2195259407 + name 1_729_KEY_CH_DOWN + 2195259408 + name 1_729_KEY_MUTE + 2195259409 + name 1_729_KEY_VOL_DOWN + 2195259410 + name 1_729_KEY_VOL_UP + 2195259412 + name 1_729_KEY_EXIT + 2195259416 + name 1_729_KEY_BLUE + 2195259427 + name 1_729_KEY_GREEN + 2195259428 + name 1_729_KEY_RED + 2195259429 + name 1_729_KEY_YELLOW + 2195259430 + name 1_729_KEY_AV + 2195259433 + name 1_729_KEY_MENU + 2195259439 + name 1_729_KEY_MUP + 2195259440 + name 1_729_KEY_MDOWN + 2195259441 + name 1_729_KEY_MLEFT + 2195259442 + name 1_729_KEY_MRIGHT + 2195259443 + name 1_729_KEY_On + 2195259469 + name 1_729_KEY_Off + 2195259470 + name 1_730_KEY_0 + 2195324928 + name 1_730_KEY_1 + 2195324929 + name 1_730_KEY_2 + 2195324930 + name 1_730_KEY_3 + 2195324931 + name 1_730_KEY_4 + 2195324932 + name 1_730_KEY_5 + 2195324933 + name 1_730_KEY_6 + 2195324934 + name 1_730_KEY_7 + 2195324935 + name 1_730_KEY_8 + 2195324936 + name 1_730_KEY_9 + 2195324937 + name 1_730_KEY_POWER + 2195324938 + name 1_730_TWO_DIGITS + 2195324941 + name 1_730_KEY_CH_UP + 2195324943 + name 1_730_KEY_CH_DOWN + 2195324944 + name 1_730_KEY_MUTE + 2195324945 + name 1_730_KEY_VOL_DOWN + 2195324946 + name 1_730_KEY_VOL_UP + 2195324948 + name 1_730_KEY_EXIT + 2195324952 + name 1_730_KEY_BLUE + 2195324963 + name 1_730_KEY_GREEN + 2195324964 + name 1_730_KEY_RED + 2195324965 + name 1_730_KEY_YELLOW + 2195324966 + name 1_730_KEY_AV + 2195324969 + name 1_730_KEY_MENU + 2195324975 + name 1_730_KEY_MUP + 2195324976 + name 1_730_KEY_MDOWN + 2195324977 + name 1_730_KEY_MLEFT + 2195324978 + name 1_730_KEY_MRIGHT + 2195324979 + name 1_730_KEY_On + 2195325005 + name 1_730_KEY_Off + 2195325006 + name 1_731_KEY_0 + 2195390464 + name 1_731_KEY_1 + 2195390465 + name 1_731_KEY_2 + 2195390466 + name 1_731_KEY_3 + 2195390467 + name 1_731_KEY_4 + 2195390468 + name 1_731_KEY_5 + 2195390469 + name 1_731_KEY_6 + 2195390470 + name 1_731_KEY_7 + 2195390471 + name 1_731_KEY_8 + 2195390472 + name 1_731_KEY_9 + 2195390473 + name 1_731_KEY_POWER + 2195390474 + name 1_731_TWO_DIGITS + 2195390477 + name 1_731_KEY_CH_UP + 2195390479 + name 1_731_KEY_CH_DOWN + 2195390480 + name 1_731_KEY_MUTE + 2195390481 + name 1_731_KEY_VOL_DOWN + 2195390482 + name 1_731_KEY_VOL_UP + 2195390484 + name 1_731_KEY_EXIT + 2195390488 + name 1_731_KEY_BLUE + 2195390499 + name 1_731_KEY_GREEN + 2195390500 + name 1_731_KEY_RED + 2195390501 + name 1_731_KEY_YELLOW + 2195390502 + name 1_731_KEY_AV + 2195390505 + name 1_731_KEY_MENU + 2195390511 + name 1_731_KEY_MUP + 2195390512 + name 1_731_KEY_MDOWN + 2195390513 + name 1_731_KEY_MLEFT + 2195390514 + name 1_731_KEY_MRIGHT + 2195390515 + name 1_731_KEY_On + 2195390541 + name 1_731_KEY_Off + 2195390542 + end raw_codes +end remote + + diff --git a/abs/core/system-templates/templates/transmit/rca_drd4xxrg_series/lircd.conf b/abs/core/system-templates/templates/transmit/rca_drd4xxrg_series/lircd.conf new file mode 100755 index 0000000..58940ad --- /dev/null +++ b/abs/core/system-templates/templates/transmit/rca_drd4xxrg_series/lircd.conf @@ -0,0 +1,71 @@ +# +# This is the configuration file for the RCA DirecTV +# Universal remote for 6th (DRD4##RG) and 7th (DRD4##RH) +# generation DirecTV cable boxes. This includes systems +# marked as "RF" which also have an IR receiver. +# +# This file was created with irrecord (0.6.6) and by hand +# on April 24, 2003 by Bryan Jacobs . +# It has since been tested with 7th genration boxes. Please +# contact me if this file does not work as specified for +# for your specific box. +# +# This only contains code for "SAT/DIRECTTV" mode. +# On some remotes the "OK" button is labeled "SELECT" +# + + +begin remote + + name RCA_DSS_RG_RH + bits 24 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 4000 4000 + one 500 2000 + zero 500 1000 + ptrail 500 + gap 64000 + toggle_bit 0 + + begin codes + + ANTENNA 0x00000000007058FA + CLEAR 0x00000000007068F9 + MENU 0x00000000007088F7 + GUIDE 0x000000000071A8E5 + GO_BACK 0x00000000007278D8 + ON/OFF 0x000000000072A8D5 + CH- 0x000000000072C8D3 + CH+ 0x000000000072D8D2 + 0 0x00000000007308CF + 1 0x00000000007318CE + 2 0x00000000007328CD + 3 0x00000000007338CC + 4 0x00000000007348CB + 5 0x00000000007358CA + 6 0x00000000007368C9 + 7 0x00000000007378C8 + 8 0x00000000007388C7 + 9 0x00000000007398C6 + SAT 0x000000000073A8C5 + INFO 0x000000000073C8C3 + SKIP 0x00000000007538AC + LEFT_ARROW 0x00000000007568A9 + RIGHT_ARROW 0x00000000007578A8 + DOWN_ARROW 0x00000000007588A7 + UP_ARROW 0x00000000007598A6 + WHO 0x000000000076189E + FETCH 0x000000000079386C + OK 0x00000000007F480B + VOL- 0x0000000000F2E0D1 + VOL+ 0x0000000000F2F0D0 + MUTE 0x0000000000F3F0C0 + + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/rca_drd4xxrh_series/lircd.conf b/abs/core/system-templates/templates/transmit/rca_drd4xxrh_series/lircd.conf new file mode 100755 index 0000000..58940ad --- /dev/null +++ b/abs/core/system-templates/templates/transmit/rca_drd4xxrh_series/lircd.conf @@ -0,0 +1,71 @@ +# +# This is the configuration file for the RCA DirecTV +# Universal remote for 6th (DRD4##RG) and 7th (DRD4##RH) +# generation DirecTV cable boxes. This includes systems +# marked as "RF" which also have an IR receiver. +# +# This file was created with irrecord (0.6.6) and by hand +# on April 24, 2003 by Bryan Jacobs . +# It has since been tested with 7th genration boxes. Please +# contact me if this file does not work as specified for +# for your specific box. +# +# This only contains code for "SAT/DIRECTTV" mode. +# On some remotes the "OK" button is labeled "SELECT" +# + + +begin remote + + name RCA_DSS_RG_RH + bits 24 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 4000 4000 + one 500 2000 + zero 500 1000 + ptrail 500 + gap 64000 + toggle_bit 0 + + begin codes + + ANTENNA 0x00000000007058FA + CLEAR 0x00000000007068F9 + MENU 0x00000000007088F7 + GUIDE 0x000000000071A8E5 + GO_BACK 0x00000000007278D8 + ON/OFF 0x000000000072A8D5 + CH- 0x000000000072C8D3 + CH+ 0x000000000072D8D2 + 0 0x00000000007308CF + 1 0x00000000007318CE + 2 0x00000000007328CD + 3 0x00000000007338CC + 4 0x00000000007348CB + 5 0x00000000007358CA + 6 0x00000000007368C9 + 7 0x00000000007378C8 + 8 0x00000000007388C7 + 9 0x00000000007398C6 + SAT 0x000000000073A8C5 + INFO 0x000000000073C8C3 + SKIP 0x00000000007538AC + LEFT_ARROW 0x00000000007568A9 + RIGHT_ARROW 0x00000000007578A8 + DOWN_ARROW 0x00000000007588A7 + UP_ARROW 0x00000000007598A6 + WHO 0x000000000076189E + FETCH 0x000000000079386C + OK 0x00000000007F480B + VOL- 0x0000000000F2E0D1 + VOL+ 0x0000000000F2F0D0 + MUTE 0x0000000000F3F0C0 + + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/samsung_1000/lircd.conf b/abs/core/system-templates/templates/transmit/samsung_1000/lircd.conf new file mode 100755 index 0000000..de5a956 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/samsung_1000/lircd.conf @@ -0,0 +1,71 @@ +# this config file was semi-automatically generated +# using lirc-0.7.1(mceusb) and some common sense on 10-8-2005 19:19:20 +# +# contributed by Marco Saarloos +# +# brand: Samsung +# model no. of remote control: unknown +# devices being controlled by this remote: SMT-1000T +# (Samsung's OEM boxes for KPN Digital TV) SMT-1100T +# + +begin remote + + name Samsung_SMT-1000T + bits 32 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9013 4448 + one 594 1654 + zero 594 525 + ptrail 584 + repeat 9000 2217 + gap 107700 + toggle_bit 0 + + begin codes + + power 0x020250AF + mute 0x020230CF + tv/stb 0x0202F00F + 0 0x020200FF + 1 0x0202807F + 2 0x020240BF + 3 0x0202C03F + 4 0x020220DF + 5 0x0202A05F + 6 0x0202609F + 7 0x0202E01F + 8 0x020210EF + 9 0x0202906F + txt 0x0202A25D + radio 0x0202B847 + menu 0x020202FD + epg 0x020258A7 + i 0x020242BD + exit 0x0202827D + left 0x020208F7 + up 0x0202D02F + right 0x02028877 + down 0x0202708F + ok 0x0202B04F + vol+ 0x0202A857 + vol- 0x020238C7 + chan+ 0x0202F807 + chan- 0x02027887 + red 0x02026897 + green 0x0202E817 + yellow 0x020218E7 + blue 0x02029867 + fav 0x0202E21D + rcl 0x0202C23D + a-z 0x0202629D + clock 0x020248B7 + + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/samsung_300/lircd.conf b/abs/core/system-templates/templates/transmit/samsung_300/lircd.conf new file mode 100755 index 0000000..49eef13 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/samsung_300/lircd.conf @@ -0,0 +1,50 @@ +# Samsung SIR-S300W DirectTV receiver + +begin remote + + name Samsung-SIRS300W-DTV + bits 32 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9182 4216 + one 762 1485 + zero 762 336 + ptrail 793 + repeat 9184 1923 + gap 107395 + toggle_bit 0 + + + begin codes + 1 0x000000000008C03F + 2 0x00000000000820DF + 3 0x000000000008A05F + 4 0x000000000008609F + 5 0x000000000008E01F + 6 0x00000000000810EF + 7 0x000000000008906F + 8 0x00000000000850AF + 9 0x000000000008D02F + 0 0x00000000000830CF + ok 0x000000000008C837 + minus 0x000000000008B04F + game 0x000000000008F00F + red 0x000000000000807F + green 0x0000000000007887 + yellow 0x000000000000B847 + blue 0x00000000000040BF + back 0x00000000000058A7 + exit 0x0000000000006897 + channul_up 0x000000000000F807 + channel_dn 0x00000000000002FD + power 0x00000000000000FF + + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/samsung_702/lircd.conf b/abs/core/system-templates/templates/transmit/samsung_702/lircd.conf new file mode 100755 index 0000000..8a3f5b7 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/samsung_702/lircd.conf @@ -0,0 +1,75 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(serial) on Thu Jun 10 17:22:40 2004 +# +# contributed by Manfred Heinrichs +# +# brand: SAMSUNG +# model no. of remote control: (delivered with Digital SAT receiver SFT-702 E +# devices being controlled by this remote: +# + +begin remote + + name Samsung_SFT-702E + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9039 4416 + one 615 1631 + zero 615 500 + ptrail 624 + repeat 9046 2176 + pre_data_bits 16 + pre_data 0x2FD + gap 107606 + min_repeat 1 + toggle_bit 0 + + + begin codes + Mute 0x00000000000020DF + Power 0x00000000000000FF + TV/Radio 0x000000000000A05F + NTSC/PAL 0x00000000000010EF + FAV 0x000000000000906F + TV/SAT 0x000000000000807F + Volume+ 0x000000000000609F + Volume- 0x000000000000E01F + EPG 0x00000000000050AF + Channel+ 0x00000000000040BF + Channel- 0x000000000000C03F + i 0x000000000000D02F + Exit 0x00000000000030CF + Rescan 0x000000000000B04F + Prev 0x00000000000008F7 + Menu 0x0000000000008877 + Up 0x00000000000048B7 + Down 0x000000000000C837 + Right 0x00000000000028D7 + Left 0x0000000000006897 + OK 0x000000000000A857 + Red 0x00000000000018E7 + Green 0x0000000000009867 + Yellow 0x00000000000058A7 + Blue 0x000000000000D827 + 1 0x00000000000038C7 + 2 0x000000000000B847 + 3 0x0000000000007887 + 4 0x00000000000002FD + 5 0x000000000000827D + 6 0x00000000000042BD + 7 0x00000000000022DD + 8 0x000000000000A25D + 9 0x000000000000629D + 0 0x000000000000E21D + User1 0x000000000000F807 + User2 0x000000000000C23D + end codes + +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/sciatl_4200/lircd.conf b/abs/core/system-templates/templates/transmit/sciatl_4200/lircd.conf new file mode 100755 index 0000000..894df55 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/sciatl_4200/lircd.conf @@ -0,0 +1,87 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(sir) on Wed Mar 24 22:28:59 2004 +# +# Modified by Stephane Lavergne : +# Base frequency is 56kHz, irrecord was otherwise right on. +# +# contributed by +# +# brand: Scientific Atlanta +# model no. of remote control: AT8400 +# devices being controlled by this remote: Explorer 8000 +# + +begin remote + + name SAE8000 + bits 22 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 3397 3372 + one 827 2557 + zero 827 855 + ptrail 827 + gap 101386 + toggle_bit 0 + + frequency 56000 + + begin codes + power 0x000000000037C107 + guide 0x000000000036C127 + menu 0x000000000036F920 + info 0x000000000036213B + select_up 0x000000000036812F + select_down 0x000000000037A10B + select 0x0000000000366133 + select_left 0x000000000037810F + select_right 0x0000000000364137 + select_page+ 0x000000000036D924 + select_page- 0x000000000037D904 + exit 0x0000000000366932 + settings 0x0000000000373918 + A 0x000000000037E902 + B 0x000000000036193C + C 0x000000000037191C + vol+ 0x000000000036093E + vol- 0x000000000037091E + ch+ 0x0000000000377111 + ch- 0x000000000036F121 + mute 0x000000000036892E + fav 0x000000000037F101 + last 0x000000000036E123 + rew8secs 0x000000000037C906 + list 0x000000000036C926 + live 0x000000000036B129 + rew 0x000000000037291A + ff 0x000000000036293A + play 0x000000000037990C + stop 0x0000000000365934 + pause 0x0000000000374117 + rec 0x0000000000375914 + 1 0x000000000036113D + 2 0x000000000037111D + 3 0x000000000036912D + 4 0x000000000037910D + 5 0x0000000000365135 + 6 0x0000000000375115 + 7 0x000000000036D125 + 8 0x000000000037D105 + 9 0x0000000000363139 + asterisk 0x000000000037E103 + 0 0x0000000000373119 + pound 0x000000000036B928 + pip_power 0x000000000037B908 + pip_swap 0x0000000000367930 + pip_move 0x0000000000377910 + pip_ch+ 0x000000000036E922 + pip_ch- 0x000000000037F900 + video_source 0x0000000000376113 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/sciatl_exp1840/lircd.conf b/abs/core/system-templates/templates/transmit/sciatl_exp1840/lircd.conf new file mode 100755 index 0000000..f937cd9 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/sciatl_exp1840/lircd.conf @@ -0,0 +1,77 @@ +# this config file was automatically generated +# using lirc-0.8.1(default) on Sun Apr 15 01:59:37 2007 +# +# contributed by Calvin Walton +# +# brand: Rogers +# model no. of remote control: Unknown +# devices being controlled by this remote: Scientific Atlanta 1840, possibly +# other (all?) Rogers set-top boxes. +# + +begin remote + + name Scientific_Atlanta-1840 + bits 22 + flags SPACE_ENC + eps 30 + aeps 100 + + header 3385 3277 + one 871 2479 + zero 871 793 + ptrail 865 + gap 37261 + toggle_bit 0 + + + begin codes + NUM_1 0x36113D + NUM_2 0x37111D + NUM_3 0x36912D + NUM_4 0x37910D + NUM_5 0x365135 + NUM_6 0x375115 + NUM_7 0x36D125 + NUM_8 0x37D105 + NUM_9 0x363139 + NUM_0 0x373119 + SELECT 0x366133 + ARROW_UP 0x36812F + ARROW_DOWN 0x37A10B + ARROW_LEFT 0x37810F + ARROW_RIGHT 0x364137 + CH_UP 0x377111 + CH_DOWN 0x36F121 + VOL_UP 0x36093E + VOL_DOWN 0x37091E + STAR 0x37E103 + HASH 0x36B928 + MUTE 0x36892E + NEXT 0x36D924 + PREV 0x37D904 + EXIT 0x366932 + FAV 0x37F101 + LAST 0x36E123 + INFO 0x36213B + GUIDE 0x36C127 + MENU 0x373918 + POWER 0x37C107 + LAST 0x36E123 + A 0x37E902 + B 0x36193C + C 0x37191C + REWIND 0x37291A + PLAY 0x37990C + FASTFORWARD 0x36293A + PAUSE 0x374117 + STOP 0x365934 + RECORD 0x375914 + BYPASS 0x376113 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/sciatl_exp2000/lircd.conf b/abs/core/system-templates/templates/transmit/sciatl_exp2000/lircd.conf new file mode 100755 index 0000000..8c8475b --- /dev/null +++ b/abs/core/system-templates/templates/transmit/sciatl_exp2000/lircd.conf @@ -0,0 +1,423 @@ +# +# this config file was automatically generated +# using lirc-0.6.5(serial) on Mon Jun 3 17:36:12 2002 +# +# contributed by +# +# brand: Scientific Atlanta +# model no. of remote control: +# devices being controlled by this remote: Explorer 2000 settop box +# + +begin remote + + name SA2000 + flags CONST_LENGTH|RAW_CODES + eps 30 + aeps 100 + + ptrail 0 + repeat 0 0 + gap 100240 + + begin raw_codes + + name MUTE + 972 802 971 802 1887 778 + 971 798 971 798 972 798 + 971 798 972 798 971 1677 + 972 802 1887 1656 992 + + name POWER + 3450 3229 894 2468 891 2468 + 893 778 892 2468 891 2469 + 917 2444 891 2468 892 2469 + 891 779 892 778 918 752 + 917 754 917 752 892 2471 + 889 779 892 779 892 777 + 892 779 892 777 868 2492 + 892 2469 891 2470 890 + + name GUIDE + 3397 3285 890 2470 840 2519 + 916 755 891 2470 839 2520 + 891 780 891 2474 860 2495 + 892 778 917 754 890 780 + 891 781 864 804 917 2443 + 865 805 891 779 866 2495 + 864 805 892 779 891 2469 + 865 2495 891 2469 866 + + name INFO + 3449 3231 918 2441 920 2440 + 920 750 947 2414 920 2440 + 920 750 894 777 919 750 + 947 2413 921 750 919 750 + 920 751 919 752 918 2441 + 921 749 895 776 919 2441 + 920 2440 920 2441 920 749 + 921 2439 921 2440 921 + + name UP + 3396 3285 915 2444 919 2442 + 918 752 916 2444 919 2441 + 919 751 916 2445 919 751 + 890 780 916 753 917 754 + 942 729 889 780 916 2445 + 919 751 915 756 914 2448 + 916 752 916 2444 918 2442 + 919 2441 918 2443 918 + + name DOWN + 3421 3261 890 2470 918 2442 + 919 751 916 2446 917 2441 + 919 2442 918 2442 918 752 + 916 2444 919 751 890 780 + 916 755 915 755 915 2445 + 919 753 914 755 889 781 + 889 781 916 2444 919 752 + 889 2471 919 2441 918 + + name LEFT + 3427 3255 918 2441 924 2437 + 920 750 918 2442 920 2441 + 919 2440 921 2439 921 750 + 919 751 944 726 919 752 + 917 753 918 751 944 2417 + 920 750 893 777 919 751 + 919 752 918 2441 921 2440 + 920 2440 920 2440 921 + + name RIGHT + 3424 3258 892 2466 921 2439 + 896 774 920 2441 920 2440 + 920 750 920 751 945 2414 + 921 750 919 751 920 750 + 919 752 919 751 919 2440 + 921 750 918 752 918 2442 + 920 2440 921 749 918 2443 + 920 2440 920 2441 919 + + name SELECT + 3424 3257 944 2416 919 2442 + 919 750 918 2442 920 2441 + 919 751 943 727 918 2442 + 920 2440 920 752 916 752 + 969 702 917 753 892 2468 + 919 751 892 778 918 2442 + 924 2436 921 750 917 753 + 918 2443 919 2441 919 + + name SETTINGS + 3402 3278 871 2491 921 2438 + 921 749 922 2440 919 2441 + 919 2440 921 749 921 750 + 895 2465 920 2440 921 2440 + 920 749 896 775 921 2439 + 920 749 923 748 895 775 + 922 2439 920 2440 920 749 + 897 774 896 774 921 + + name EXIT + 3400 3279 896 2464 921 2439 + 921 750 895 2465 921 2439 + 921 749 898 772 896 2465 + 920 2440 920 750 920 2441 + 920 749 896 774 870 2491 + 921 749 921 749 895 2465 + 921 2440 920 749 922 748 + 897 2464 920 750 896 + + name PGUP + 3425 3255 920 2440 920 2440 + 921 749 895 2466 920 2440 + 920 749 920 2441 896 2464 + 921 749 919 2445 917 2440 + 920 750 920 750 920 2441 + 921 748 921 749 920 2440 + 921 750 919 752 919 2440 + 921 749 921 750 919 + + name PGDN + 3400 3281 921 2438 921 2441 + 920 749 895 2465 896 2465 + 920 2440 920 2440 920 2440 + 921 749 896 2465 895 2465 + 920 750 895 775 920 2440 + 921 749 921 750 895 775 + 896 774 896 774 921 2439 + 921 749 921 751 894 + + name VOLUP + 995 778 1886 779 994 775 + 995 777 993 774 996 774 + 995 775 995 1654 1885 778 + 995 775 995 774 995 + + name VOLDN + 996 778 971 802 1862 803 + 970 799 996 774 995 774 + 996 774 995 1654 1886 778 + 996 773 971 1678 991 + + name CHUP + 3421 3259 916 2444 918 2443 + 918 751 917 2444 919 2441 + 919 2441 919 751 916 2444 + 919 2441 919 2443 918 751 + 941 729 916 755 917 2442 + 919 752 916 754 891 778 + 918 2444 918 751 916 754 + 917 753 916 2445 919 + + name CHDN + 3421 3260 915 2445 918 2442 + 919 751 891 2469 919 2441 + 927 745 915 2444 919 2441 + 919 2441 919 2442 918 752 + 915 755 890 780 917 2443 + 919 752 916 754 915 2445 + 919 751 915 755 890 781 + 914 756 916 2445 917 + + name A + 3425 3258 916 2442 920 2441 + 919 751 918 2442 919 2441 + 920 2440 920 2441 919 2441 + 919 2441 920 750 917 2443 + 920 751 917 752 919 2442 + 920 750 918 753 917 753 + 917 753 942 728 917 753 + 918 2442 920 750 942 + + name B + 3398 3283 916 2443 892 2470 + 892 778 892 2468 891 2475 + 886 779 916 754 892 777 + 892 778 919 2442 891 2468 + 918 753 892 778 891 2469 + 892 778 892 778 918 2443 + 891 2469 892 2467 893 2469 + 891 778 918 753 892 + + name C + 3396 3283 891 2469 892 2468 + 892 778 917 2444 892 2468 + 892 2469 891 778 892 779 + 893 777 892 2468 892 2468 + 918 752 893 777 892 2469 + 892 778 892 778 867 802 + 918 2444 917 2442 868 2492 + 893 778 892 779 916 + + name 1 + 3424 3257 890 2470 865 2495 + 891 780 892 2468 865 2495 + 892 777 891 780 892 779 + 890 780 916 2444 865 805 + 891 779 917 753 916 2445 + 865 805 916 754 892 2469 + 865 2494 916 2445 865 2495 + 891 779 917 2443 866 + + name 2 + 3422 3258 916 2444 865 2496 + 889 782 915 2444 865 2495 + 917 2444 839 830 891 780 + 915 755 890 2470 864 806 + 917 753 891 780 866 2495 + 864 805 891 779 892 779 + 865 2494 865 2496 891 2469 + 865 805 891 2469 865 + + name 3 + 3397 3284 916 2443 892 2468 + 892 779 893 2467 892 2468 + 917 753 892 2469 891 778 + 893 778 891 2469 892 778 + 918 753 890 779 893 2468 + 891 779 893 778 891 2469 + 892 777 893 2468 891 2468 + 917 754 943 2417 892 + + name 4 + 3421 3261 890 2470 839 2520 + 917 753 891 2470 865 2495 + 917 2443 865 2495 890 781 + 891 778 891 2470 865 804 + 895 776 892 779 891 2468 + 866 805 917 753 943 727 + 866 805 889 2471 865 2494 + 892 780 916 2444 865 + + name 5 + 3396 3282 920 2441 892 2467 + 894 778 891 2468 892 2469 + 891 780 866 802 893 2470 + 890 779 918 2443 891 777 + 892 779 918 752 892 2468 + 892 779 918 752 918 2443 + 891 2469 891 779 891 2469 + 892 778 891 2468 893 + + name 6 + 3396 3284 918 2442 866 2494 + 892 778 917 2444 866 2494 + 917 2444 865 804 893 2468 + 890 780 916 2445 890 779 + 892 779 891 778 918 2443 + 891 778 892 779 892 779 + 891 2468 892 778 919 2444 + 889 778 893 2468 891 + + name 7 + 3398 3282 893 2467 892 2468 + 893 779 891 2469 891 2468 + 919 752 892 2467 892 2469 + 891 779 892 2468 892 777 + 893 778 918 752 892 2468 + 893 779 916 753 918 2442 + 892 779 891 778 893 2468 + 892 778 893 2467 892 + + name 8 + 3448 3232 892 2468 866 2494 + 892 779 892 2467 867 2494 + 891 2469 866 2495 891 2469 + 865 805 968 2394 864 804 + 918 753 891 779 892 2468 + 866 804 917 754 891 780 + 916 752 917 754 892 2469 + 865 804 893 2468 890 + + name 9 + 3422 3258 891 2469 839 2521 + 891 780 892 2468 824 2536 + 916 754 916 755 891 779 + 866 2494 839 2522 891 778 + 892 778 890 781 915 2448 + 837 831 891 779 890 2470 + 837 2523 942 2418 838 832 + 892 778 890 2471 839 + + name 0 + 3398 3284 891 2469 890 2469 + 893 779 891 2468 892 2468 + 892 2468 892 778 892 779 + 891 2469 892 2468 893 778 + 892 777 893 777 893 2469 + 891 778 892 779 868 802 + 917 2443 892 2469 890 779 + 891 779 892 2468 893 + + name LAST + 3422 3258 891 2471 916 2443 + 891 780 891 2469 272 3088 + 865 805 916 2445 308 3052 + 890 2469 892 779 915 756 + 889 781 889 780 890 2471 + 890 779 889 781 891 2471 + 272 1397 890 779 891 781 + 890 2469 448 2912 917 + + name FAV + 3423 3257 918 2442 944 2417 + 917 753 892 2469 890 2471 + 324 3036 890 2469 379 289 + 167 2525 891 2470 379 2981 + 890 780 378 270 242 781 + 866 806 889 2469 786 884 + 891 779 891 779 892 779 + 916 754 890 779 892 778 + 891 2470 839 + + name REW + 3420 3258 916 2445 326 3033 + 891 780 916 2443 891 2469 + 916 2445 838 831 918 754 + 890 2471 837 832 916 2444 + 838 832 891 779 916 2445 + 838 831 892 779 890 780 + 892 2469 839 2520 891 780 + 915 2444 836 836 890 + + name PLAY + 3448 3233 916 2444 891 2469 + 917 753 892 2468 918 2443 + 941 2420 891 2468 917 754 + 915 755 914 2446 918 2443 + 916 754 916 753 945 2416 + 943 727 941 729 918 752 + 917 753 919 2442 916 2444 + 915 755 943 728 916 + + name FF + 3420 3259 917 2442 946 2415 + 918 752 916 2445 918 2441 + 943 728 917 753 942 728 + 892 2470 864 806 889 2471 + 865 805 918 752 916 2443 + 944 726 892 779 891 2470 + 891 2469 915 2445 917 753 + 890 2471 222 1447 891 + + name PAUSE + 3421 3259 891 2470 787 2573 + 890 780 916 2444 840 2520 + 892 2468 864 806 917 2444 + 839 831 890 780 891 779 + 891 780 891 779 889 2471 + 839 831 916 755 915 754 + 892 2469 839 830 917 2444 + 840 2521 891 2469 840 + + name STOP + 3398 3284 889 2471 325 3036 + 891 779 890 2470 395 290 + 140 2535 889 781 890 781 + 889 2470 274 1397 891 2470 + 272 3087 917 754 890 780 + 889 2472 293 1377 890 779 + 916 2444 448 2913 916 754 + 866 2495 325 1344 891 779 + 915 + + name REC + 3421 3258 917 2444 916 2444 + 942 729 942 2420 889 2469 + 992 2367 942 730 891 2468 + 917 754 916 2443 892 2470 + 892 777 916 754 892 2467 + 943 730 916 754 891 779 + 917 2442 917 754 943 2417 + 918 753 915 754 892 + + name BYPASS + 3450 3231 891 2470 890 2470 + 917 753 916 2447 913 2445 + 273 3088 889 780 890 2470 + 891 2469 916 755 890 780 + 942 727 918 752 916 2444 + 890 782 916 754 865 805 + 891 2469 891 780 889 781 + 891 2468 259 3102 866 + + name TV/VCR + 19945 3915 612 1873 560 1926 + 560 1925 561 931 560 931 + 587 905 559 931 563 931 + 557 932 561 1925 585 908 + 583 1901 559 931 586 905 + 585 907 610 1875 561 1924 + 561 1926 559 1926 535 1951 + 559 1925 586 907 585 1899 + 560 931 1048 7898 3707 3862 + 587 1899 586 1899 586 1900 + 559 932 586 908 323 + + end raw_codes + +end remote + + + diff --git a/abs/core/system-templates/templates/transmit/sciatl_exp2xxx_3xxx_4xxx/lircd.conf b/abs/core/system-templates/templates/transmit/sciatl_exp2xxx_3xxx_4xxx/lircd.conf new file mode 100755 index 0000000..894df55 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/sciatl_exp2xxx_3xxx_4xxx/lircd.conf @@ -0,0 +1,87 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(sir) on Wed Mar 24 22:28:59 2004 +# +# Modified by Stephane Lavergne : +# Base frequency is 56kHz, irrecord was otherwise right on. +# +# contributed by +# +# brand: Scientific Atlanta +# model no. of remote control: AT8400 +# devices being controlled by this remote: Explorer 8000 +# + +begin remote + + name SAE8000 + bits 22 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 3397 3372 + one 827 2557 + zero 827 855 + ptrail 827 + gap 101386 + toggle_bit 0 + + frequency 56000 + + begin codes + power 0x000000000037C107 + guide 0x000000000036C127 + menu 0x000000000036F920 + info 0x000000000036213B + select_up 0x000000000036812F + select_down 0x000000000037A10B + select 0x0000000000366133 + select_left 0x000000000037810F + select_right 0x0000000000364137 + select_page+ 0x000000000036D924 + select_page- 0x000000000037D904 + exit 0x0000000000366932 + settings 0x0000000000373918 + A 0x000000000037E902 + B 0x000000000036193C + C 0x000000000037191C + vol+ 0x000000000036093E + vol- 0x000000000037091E + ch+ 0x0000000000377111 + ch- 0x000000000036F121 + mute 0x000000000036892E + fav 0x000000000037F101 + last 0x000000000036E123 + rew8secs 0x000000000037C906 + list 0x000000000036C926 + live 0x000000000036B129 + rew 0x000000000037291A + ff 0x000000000036293A + play 0x000000000037990C + stop 0x0000000000365934 + pause 0x0000000000374117 + rec 0x0000000000375914 + 1 0x000000000036113D + 2 0x000000000037111D + 3 0x000000000036912D + 4 0x000000000037910D + 5 0x0000000000365135 + 6 0x0000000000375115 + 7 0x000000000036D125 + 8 0x000000000037D105 + 9 0x0000000000363139 + asterisk 0x000000000037E103 + 0 0x0000000000373119 + pound 0x000000000036B928 + pip_power 0x000000000037B908 + pip_swap 0x0000000000367930 + pip_move 0x0000000000377910 + pip_ch+ 0x000000000036E922 + pip_ch- 0x000000000037F900 + video_source 0x0000000000376113 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/sciatl_exp8000/lircd.conf b/abs/core/system-templates/templates/transmit/sciatl_exp8000/lircd.conf new file mode 100755 index 0000000..894df55 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/sciatl_exp8000/lircd.conf @@ -0,0 +1,87 @@ +# +# this config file was automatically generated +# using lirc-0.6.6(sir) on Wed Mar 24 22:28:59 2004 +# +# Modified by Stephane Lavergne : +# Base frequency is 56kHz, irrecord was otherwise right on. +# +# contributed by +# +# brand: Scientific Atlanta +# model no. of remote control: AT8400 +# devices being controlled by this remote: Explorer 8000 +# + +begin remote + + name SAE8000 + bits 22 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 3397 3372 + one 827 2557 + zero 827 855 + ptrail 827 + gap 101386 + toggle_bit 0 + + frequency 56000 + + begin codes + power 0x000000000037C107 + guide 0x000000000036C127 + menu 0x000000000036F920 + info 0x000000000036213B + select_up 0x000000000036812F + select_down 0x000000000037A10B + select 0x0000000000366133 + select_left 0x000000000037810F + select_right 0x0000000000364137 + select_page+ 0x000000000036D924 + select_page- 0x000000000037D904 + exit 0x0000000000366932 + settings 0x0000000000373918 + A 0x000000000037E902 + B 0x000000000036193C + C 0x000000000037191C + vol+ 0x000000000036093E + vol- 0x000000000037091E + ch+ 0x0000000000377111 + ch- 0x000000000036F121 + mute 0x000000000036892E + fav 0x000000000037F101 + last 0x000000000036E123 + rew8secs 0x000000000037C906 + list 0x000000000036C926 + live 0x000000000036B129 + rew 0x000000000037291A + ff 0x000000000036293A + play 0x000000000037990C + stop 0x0000000000365934 + pause 0x0000000000374117 + rec 0x0000000000375914 + 1 0x000000000036113D + 2 0x000000000037111D + 3 0x000000000036912D + 4 0x000000000037910D + 5 0x0000000000365135 + 6 0x0000000000375115 + 7 0x000000000036D125 + 8 0x000000000037D105 + 9 0x0000000000363139 + asterisk 0x000000000037E103 + 0 0x0000000000373119 + pound 0x000000000036B928 + pip_power 0x000000000037B908 + pip_swap 0x0000000000367930 + pip_move 0x0000000000377910 + pip_ch+ 0x000000000036E922 + pip_ch- 0x000000000037F900 + video_source 0x0000000000376113 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/skymaster_9410/lircd.conf b/abs/core/system-templates/templates/transmit/skymaster_9410/lircd.conf new file mode 100755 index 0000000..2b7df7b --- /dev/null +++ b/abs/core/system-templates/templates/transmit/skymaster_9410/lircd.conf @@ -0,0 +1,69 @@ +# +# this config file was automatically generated +# using lirc-0.8.1-CVS(default) on Thu Mar 23 23:29:30 2006 +# +# contributed by Christoph Bartelmus +# +# brand: Skymaster +# model no. of remote control: +# devices being controlled by this remote: Digital Satellite Receiver DCI 9410 +# + +begin remote + + name Skymaster_DCI_9410 + bits 11 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + one 229 7374 + zero 229 4849 + ptrail 229 + gap 121676 + toggle_bit 2 + + + begin codes + MUTE 0x558 + POWER 0x55E + TV 0x566 + TV/RAD 0x56E + AUDIO 0x576 + 1 0x575 + 2 0x56D + 3 0x565 + 4 0x55D + 5 0x574 + 6 0x56C + 7 0x564 + 8 0x55C + 9 0x573 + TEXT 0x563 + 0 0x56B + SUB 0x556 + EPG 0x56F + MENU 0x567 + EXT 0x570 + ALT 0x555 + CHANNEL+ 0x568 + OK 0x569 + CHANNEL- 0x56A + VOL- 0x571 + VOL+ 0x561 + FREEZE 0x560 + PAGE- 0x55F + PAGE+ 0x55A + BROWSE 0x55B + RED 0x559 + GREEN 0x572 + YELLOW 0x562 + BLUE 0x577 + i 0x554 + end codes + +end remote + + + + diff --git a/abs/core/system-templates/templates/transmit/skyplus/lircd.conf b/abs/core/system-templates/templates/transmit/skyplus/lircd.conf new file mode 100755 index 0000000..c8c6876 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/skyplus/lircd.conf @@ -0,0 +1,74 @@ +# +# this config file was automatically generated +# using lirc-0.8.0(userspace) on Fri Jul 28 02:45:39 2006 +# +# contributed by Lloyd Williams +# +# brand: SKY +# model no. of remote control: URC 1650-00 B00 - 9RC16P-1014 Sky+ Rev 6 +# devices being controlled by this remote: SKY+ DVB-S receiver & PVR +# + +begin remote + + name SKY+_DVB-S + bits 8 + flags RC6|CONST_LENGTH + eps 30 + aeps 100 + + header 2691 890 + one 427 460 + zero 427 460 + pre_data_bits 17 + pre_data 0x3FF3 + gap 149845 + min_repeat 2 + toggle_bit 0 + + rc6_mask 0x100000 + + begin codes + POWER 0xF3 + TV_GUIDE 0x33 + BOX_OFFICE 0x82 + SERVICES 0x81 + INTERACTIVE 0x0A + INFO 0x34 + UP 0xA7 + LEFT 0xA5 + RIGHT 0xA4 + DOWN 0xA6 + SELECT 0xA3 + CH+ 0xDF + CH- 0xDE + TEXT 0xC3 + BACK_UP 0x7C + HELP 0x7E + FREV 0xC2 + FFWD 0xD7 + PLAY 0xC1 + PAUSE 0xDB + RECORD 0xBF + STOP 0xC0 + RED 0x92 + GREEN 0x91 + YELLOW 0x90 + BLUE 0x8F + 1 0xFE + 2 0xFD + 3 0xFC + 4 0xFB + 5 0xFA + 6 0xF9 + 7 0xF8 + 8 0xF7 + 9 0xF6 + 0 0xFF + SKY 0x7F + TV 0x7B + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/technisat_st3002s/lircd.conf b/abs/core/system-templates/templates/transmit/technisat_st3002s/lircd.conf new file mode 100755 index 0000000..1589d24 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/technisat_st3002s/lircd.conf @@ -0,0 +1,64 @@ +# +# this config file was automatically generated +# using lirc-0.6.5(irdeo) on Tue Jun 18 19:54:36 2002 +# +# contributed by +# +# brand: TechniSat +# model no. of remote control: ST3002S +# devices being controlled by this remote: Sattelite Receiver +# + +begin remote + + name ST3002S + bits 11 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + one 201 7390 + zero 201 4859 + ptrail 210 + gap 121450 + toggle_bit 2 + + + begin codes + power 0x0000000000000441 + mute 0x0000000000000446 + 1 0x0000000000000450 + 2 0x0000000000000451 + 3 0x0000000000000452 + 4 0x0000000000000453 + 5 0x0000000000000454 + 6 0x0000000000000455 + 7 0x0000000000000456 + 8 0x0000000000000457 + 9 0x0000000000000458 + 0 0x000000000000044F + volume_plus 0x000000000000046E + volume_minus 0x000000000000046F + program_plus 0x0000000000000447 + program_minus 0x0000000000000448 + radio 0x0000000000000442 + audio_plus 0x0000000000000468 + audio_minus 0x0000000000000469 + deem 0x000000000000045E + dek 0x0000000000000444 + a-b 0x0000000000000464 + lnb 0x000000000000044E + video_plus 0x000000000000046C + video_minus 0x000000000000046D + sat 0x0000000000000449 + tab 0x0000000000000445 + save 0x0000000000000466 + delete 0x0000000000000461 + end codes + +end remote + + + + + diff --git a/abs/core/system-templates/templates/transmit/technisat_st3004s/lircd.conf b/abs/core/system-templates/templates/transmit/technisat_st3004s/lircd.conf new file mode 100755 index 0000000..cb03e63 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/technisat_st3004s/lircd.conf @@ -0,0 +1,67 @@ +# +# this is a space encoded remote control from Technisat +# +# contributed by Christoph Bartelmus (columbus@hit.handshake.de) +# +# brand: Technisat +# model: 100 TS 008 +# supported devices: satellite receiver ST 3004 S +# + +begin remote + + name TECHNISAT_ST3004S + bits 6 + flags SPACE_ENC|CONST_LENGTH + eps 20 + aeps 120 + + header 0 0 + one 170 7440 + zero 170 4920 + plead 0 + ptrail 170 + plead 0 + foot 0 0 + repeat 0 0 + pre_data_bits 5 + pre_data 0x11 + post_data_bits 0 + post_data 0x0 + pre 0 0 + post 0 0 + gap 121400 + repeat_bit 2 + + begin codes + POWER 0x0000000000000001 + MUTE 0x0000000000000006 + 0 0x000000000000000F + 1 0x0000000000000010 + 2 0x0000000000000011 + 3 0x0000000000000012 + 4 0x0000000000000013 + 5 0x0000000000000014 + 6 0x0000000000000015 + 7 0x0000000000000016 + 8 0x0000000000000017 + 9 0x0000000000000018 + VOL_UP 0x000000000000002E + VOL_DOWN 0x000000000000002F + CH_UP 0x0000000000000007 + CH_DOWN 0x0000000000000008 + LIST 0x0000000000000037 + A/B 0x0000000000000024 + TV/R 0x0000000000000002 + BACK 0x0000000000000027 + MENU 0x000000000000002B + OK 0x0000000000000036 + ARROW_UP 0x0000000000000032 + ARROW_DOWN 0x0000000000000033 + ARROW_RIGHT 0x0000000000000035 + ARROW_LEFT 0x0000000000000034 + end codes + +end remote + + diff --git a/abs/core/system-templates/templates/transmit/zenith_dtt900/lircd.conf b/abs/core/system-templates/templates/transmit/zenith_dtt900/lircd.conf new file mode 100755 index 0000000..e436562 --- /dev/null +++ b/abs/core/system-templates/templates/transmit/zenith_dtt900/lircd.conf @@ -0,0 +1,67 @@ +# +# this config file was automatically generated +# using lirc-0.8.2-CVS(default) on Wed Apr 23 21:55:59 2008 +# +# contributed by http://www.mythpvr.com +# +# brand: Zenith +# model no. of remote control: AKB36157102 +# devices being controlled by this remote: DTT900 +# + +begin remote + + name Zenith_DTT900 + bits 16 + flags SPACE_ENC|CONST_LENGTH + eps 30 + aeps 100 + + header 9088 4480 + one 640 1664 + zero 640 640 + ptrail 640 + pre_data_bits 16 + pre_data 0xEF10 + gap 103958 + toggle_bit_mask 0x0 + + begin codes + 0 0x08F7 + RECALL 0x58A7 + - 0x32CD + 9 0x9867 + 8 0x18E7 + 7 0xE817 + 6 0x6897 + 5 0xA857 + 4 0x28D7 + 3 0xC837 + 2 0x48B7 + 1 0x8877 + CHDOWN 0x807F + CHUP 0x00FF + MUTE 0x906F + FAV 0x7887 + VOLDOWN 0xC03F + VOLUP 0x40BF + EXIT 0xDA25 + DOWN 0xA05F + UP 0x20DF + RIGHT 0x609F + LEFT 0xE01F + OK 0x22DD + GUIDE 0x956A + MENU 0xC23D + DISPLAY 0x55AA + ZOOM 0x9E61 + SAP 0x50AF + SIGNAL 0x6996 + SLEEP 0x708F + POWER 0x10EF + end codes + +end remote + + + diff --git a/abs/core/system-templates/templates/xine.config.template b/abs/core/system-templates/templates/xine.config.template new file mode 100644 index 0000000..966487f --- /dev/null +++ b/abs/core/system-templates/templates/xine.config.template @@ -0,0 +1,754 @@ +# +# xine config file +# +.version:2 + +# Entries which are still set to their default values are commented out. +# Remove the '#' at the beginning of the line, if you want to change them. + +# Enable deinterlacing by default +# bool, default: 0 +#gui.deinterlace_by_default:0 + +# Configuration experience level +# { Beginner Advanced Expert Master of the known universe }, default: 0 +gui.experience_level:Expert + +# Enable OSD support +# bool, default: 1 +#gui.osd_enabled:1 + +# Dismiss OSD time (s) +# numeric, default: 3 +#gui.osd_timeout:3 + +# Ask user for playback with unsupported codec +# bool, default: 0 +#gui.play_anyway:0 + +# Automatically reload old playlist +# bool, default: 0 +#gui.playlist_auto_reload:0 + +# Audio visualization plugin +# { oscope fftscope fftgraph goom }, default: 0 +gui.post_audio_plugin:fftgraph + +# gui skin theme +# { Antares Centori KeramicRH8 cloudy xinetic }, default: 4 +gui.skin:KeramicRH8 + +# Change xine's behavior for unexperienced user +# bool, default: 1 +#gui.smart_mode:1 + +# Snapshot location +# string, default: /home/jams +#gui.snapshotdir:/home/jams + +# Display splash screen +# bool, default: 1 +gui.splash:0 + +# Subtitle autoloading +# bool, default: 1 +#gui.subtitle_autoload:1 + +# Visual animation style +# { None Post Plugin Stream Animation }, default: 1 +#gui.visual_anim:Post Plugin + +# Windows stacking (more) +# bool, default: 0 +#gui.always_layer_above:0 + +# Audio mixer control method +# { Sound card Software }, default: 0 +#gui.audio_mixer_method:Sound card + +# Visiblility behavior of panel +# bool, default: 0 +#gui.auto_panel_visibility:0 + +# Visibility behavior of output window +# bool, default: 0 +#gui.auto_video_output_visibility:0 + +# Deinterlace plugin. +# string, default: tvtime:method=LinearBlend,cheap_mode=1,pulldown=0,use_progressive_frame_flag=1 +#gui.deinterlace_plugin:tvtime:method=LinearBlend,cheap_mode=1,pulldown=0,use_progressive_frame_flag=1 + +# Event sender behavior +# bool, default: 1 +#gui.eventer_sticky:1 + +# Windows stacking +# bool, default: 0 +#gui.layer_above:0 + +# Use unscaled OSD +# bool, default: 1 +gui.osd_use_unscaled:0 + +# Screensaver reset interval (s) +# numeric, default: 10 +#gui.screensaver_timeout:10 + +# Menu shortcut style +# { Windows style Emacs style }, default: 0 +#gui.shortcut_style:Windows style + +# Stream information +# bool, default: 0 +#gui.sinfo_auto_update:0 + +# Skin Server Url +# string, default: http://xine.sourceforge.net/skins/skins.slx +#gui.skin_server_url:http://xine.sourceforge.net/skins/skins.slx + +# Chapter hopping +# bool, default: 1 +#gui.skip_by_chapter:1 + +# New stream sizes resize output window +# bool, default: 1 +#gui.stream_resize_window:1 + +# Tips timeout (ms) +# numeric, default: 5000 +#gui.tips_timeout:5000 + +# gui tips visibility +# bool, default: 1 +#gui.tips_visible:1 + +# Name of video display +# string, default: +#gui.video_display: + +# Synchronized X protocol (debug) +# bool, default: 0 +#gui.xsynchronize:0 + +# Double size for small streams (require stream_resize_window) +# bool, default: 0 +#gui.zoom_small_stream:0 + +# Logo mrl +# string, default: file:/usr/share/xine/skins/xine-ui_logo.mpv +#gui.logo_mrl:file:/usr/share/xine/skins/xine-ui_logo.mpv + +# use XVidModeExtension when switching to fullscreen +# bool, default: 0 +#gui.use_xvidext:0 + +# height for xinerama fullscreen (-8192 = autodetect) +# numeric, default: -8192 +#gui.xinerama_fullscreen_height:-8192 + +# width for xinerama fullscreen (-8192 = autodetect) +# numeric, default: -8192 +#gui.xinerama_fullscreen_width:-8192 + +# x coordinate for xinerama fullscreen (-8192 = autodetect) +# numeric, default: -8192 +#gui.xinerama_fullscreen_x:-8192 + +# y coordinate for xinerama fullscreen (-8192 = autodetect) +# numeric, default: -8192 +#gui.xinerama_fullscreen_y:-8192 + +# Screens to use in order to do a very fullscreen in xinerama mode. (example 0 2 3) +# string, default: 0 1 +#gui.xinerama_use_screens:0 1 + +# Amplification level +# [0..200], default: 100 +#gui.amp_level:100 + +# gui panel visibility +# bool, default: 1 +gui.panel_visible:0 + +# numeric, default: 200 +gui.panel_x:21 + +# numeric, default: 100 +gui.panel_y:1050 + +gui.control_x:186 + +gui.control_y:46 + +gui.dropped_frames_warning:0 + +gui.eventer_x:1041 + +gui.eventer_y:781 + +gui.mrl_browser_x:23 + +gui.mrl_browser_y:9 + +gui.setup_x:717 + +gui.setup_y:227 + +gui.viewlog_x:200 + +gui.viewlog_y:210 + +# color specification yuv-opacity +# string, default: 8080c0-f +#gui.osdmenu.color_focused_button:8080c0-f + +# color specification yuv-opacity +# string, default: 808080-f +#gui.osdmenu.color_focused_slider:808080-f + +# color specification yuv-opacity +# string, default: ff8080-f +#gui.osdmenu.color_focused_slider_knob:ff8080-f + +# color specification yuv-opacity +# string, default: 808080-f +#gui.osdmenu.color_focused_text_border:808080-f + +# color specification yuv-opacity +# string, default: ff8080-f +#gui.osdmenu.color_focused_text_foreground:ff8080-f + +# color specification yuv-opacity +# string, default: 0080c0-f +#gui.osdmenu.color_label_border:0080c0-f + +# color specification yuv-opacity +# string, default: c08080-f +#gui.osdmenu.color_label_foreground:c08080-f + +# color specification yuv-opacity +# string, default: 0080c0-f +#gui.osdmenu.color_label_window:0080c0-f + +# color specification yuv-opacity +# string, default: 008000-f +#gui.osdmenu.color_slider:008000-f + +# color specification yuv-opacity +# string, default: ffff00-f +#gui.osdmenu.color_slider_knob:ffff00-f + +# color specification yuv-opacity +# string, default: 008000-f +#gui.osdmenu.color_text_border:008000-f + +# color specification yuv-opacity +# string, default: ffff00-f +#gui.osdmenu.color_text_foreground:ffff00-f + +# color specification yuv-opacity +# string, default: 0080c0-f +#gui.osdmenu.color_text_window:0080c0-f + +# directory a media in dvd device will be mounted +# string, default: /dvd +#gui.osdmenu.dvd_mountpoint:/dvd + +# palette (foreground-border-background) to use for subtitles and OSD +# { white-black-transparent white-none-transparent white-none-translucid yellow-black-transparent }, default: 0 +#ui.osd.text_palette:white-black-transparent + +# audio driver to use +# { auto null alsa oss esd file none }, default: 0 +audio.driver:oss + +# a/v sync method to use by OSS +# { auto getodelay getoptr softsync probebuffer }, default: 0 +#audio.oss_sync_method:auto + +# use A/52 dynamic range compression +# bool, default: 0 +#audio.a52.dynamic_range:0 + +# downmix audio to 2 channel surround stereo +# bool, default: 0 +#audio.a52.surround_downmix:0 + +# A/52 volume +# [0..200], default: 100 +#audio.a52.level:100 + +# OSS audio device name +# { auto /dev/dsp /dev/sound/dsp }, default: 0 +#audio.device.oss_device_name:auto + +# OSS audio device number, -1 for none +# numeric, default: -1 +#audio.device.oss_device_number:-1 + +# OSS audio mixer number, -1 for none +# numeric, default: -1 +#audio.device.oss_mixer_number:-1 + +audio.device.alsa_front_device:default + +# speaker arrangement +# { Mono 1.0 Stereo 2.0 Headphones 2.0 Stereo 2.1 Surround 3.0 Surround 4.0 Surround 4.1 Surround 5.0 Surround 5.1 Surround 6.0 Surround 6.1 Surround 7.1 Pass Through }, default: 1 +#audio.output.speaker_arrangement:Stereo 2.0 + +# offset for digital passthrough +# numeric, default: 0 +#audio.synchronization.passthrough_offset:0 + +# play audio even on slow/fast speeds +# bool, default: 0 +#audio.synchronization.slow_fast_audio:0 + +# method to sync audio and video +# { metronom feedback resample }, default: 0 +#audio.synchronization.av_sync_method:metronom feedback + +# always resample to this rate (0 to disable) +# numeric, default: 0 +#audio.synchronization.force_rate:0 + +# enable resampling +# { auto off on }, default: 0 +#audio.synchronization.resample_mode:auto + +# startup audio volume +# [0..100], default: 50 +#audio.volume.mixer_volume:50 + +# restore volume level at startup +# bool, default: 0 +#audio.volume.remember_volume:0 + +# video driver to use +# { auto aadxr3 dxr3 xv opengl SyncFB xshm none xxmc sdl vidixfb vidix fb xvmc }, default: 0 +#video.driver:auto + +# pitch alignment workaround +# bool, default: 0 +#video.device.xv_pitch_alignment:0 + +# disable exact alpha blending of overlays +# bool, default: 0 +#video.output.disable_exact_alphablend:0 + +# disable all video scaling +# bool, default: 0 +#video.output.disable_scaling:0 + +# horizontal image position in the output window +# [0..100], default: 50 +#video.output.horizontal_position:50 + +# vertical image position in the output window +# [0..100], default: 50 +#video.output.vertical_position:50 + +# deinterlace method (deprecated) +# { none bob weave greedy onefield onefield_xv linearblend }, default: 4 +video.output.xv_deinterlace_method:linearblend + +# MPEG-4 postprocessing quality +# [0..6], default: 3 +#video.processing.ffmpeg_pp_quality:3 + +# DXR3 device number +# numeric, default: 0 +#dxr3.device_number:0 + +# swap odd and even lines +# bool, default: 0 +#dxr3.encoding.swap_fields:0 + +# add black bars to correct aspect ratio +# bool, default: 1 +#dxr3.encoding.add_bars:1 + +# use smooth play mode for mpeg encoder playback +# bool, default: 1 +#dxr3.encoding.alt_play_mode:1 + +# device used for CD audio +# string, default: /dev/cdrom +#media.audio_cd.device:/dev/cdrom + +# slow down disc drive to this speed factor +# numeric, default: 4 +#media.audio_cd.drive_slowdown:4 + +# query CDDB +# bool, default: 1 +#media.audio_cd.use_cddb:1 + +# CDDB cache directory +# string, default: /home/jams/.xine/cddbcache +#media.audio_cd.cddb_cachedir:/home/jams/.xine/cddbcache + +# CDDB server port +# numeric, default: 8880 +#media.audio_cd.cddb_port:8880 + +# CDDB server name +# string, default: freedb.freedb.org +#media.audio_cd.cddb_server:freedb.freedb.org + +# directory for saving streams +# string, default: +#media.capture.save_dir: + +# Number of dvb card to use. +# numeric, default: 0 +#media.dvb.adapter:0 + +# Remember last DVB channel watched +# bool, default: 1 +#media.dvb.remember_channel:1 + +# Last DVB channel viewed +# numeric, default: -1 +#media.dvb.last_channel:-1 + +# default language for DVD playback +# string, default: en +#media.dvd.language:en + +# region the DVD player claims to be in (1 to 8) +# numeric, default: 1 +#media.dvd.region:1 + +# device used for DVD playback +# string, default: /dev/dvd +#media.dvd.device:/dev/dvd + +# raw device set up for DVD access +# string, default: /dev/rdvd +#media.dvd.raw_device:/dev/rdvd + +# read-ahead caching +# bool, default: 1 +#media.dvd.readahead:1 + +# CSS decryption method +# { key disc title }, default: 0 +#media.dvd.css_decryption_method:key + +# play mode when title/chapter is given +# { entire dvd one chapter }, default: 0 +#media.dvd.play_single_chapter:entire dvd + +# unit for seeking +# { seek in program chain seek in program }, default: 0 +#media.dvd.seek_behaviour:seek in program chain + +# unit for the skip action +# { skip program skip part skip title }, default: 0 +#media.dvd.skip_behaviour:skip program + +# path to the title key cache +# string, default: /home/jams/.dvdcss/ +#media.dvd.css_cache_path:/home/jams/.dvdcss/ + +# file browsing start location +# string, default: /home/jams +#media.files.origin_path:/home/jams + +# list hidden files +# bool, default: 0 +#media.files.show_hidden_files:0 + +# network bandwidth +# { 14.4 Kbps (Modem) 19.2 Kbps (Modem) 28.8 Kbps (Modem) 33.6 Kbps (Modem) 34.4 Kbps (Modem) 57.6 Kbps (Modem) 115.2 Kbps (ISDN) 262.2 Kbps (Cable/DSL) 393.2 Kbps (Cable/DSL) 524.3 Kbps (Cable/DSL) 1.5 Mbps (T1) 10.5 Mbps (LAN) }, default: 10 +#media.network.bandwidth:1.5 Mbps (T1) + +# Timeout for network stream reading (in seconds) +# numeric, default: 30 +#media.network.timeout:30 + +# Domains for which to ignore the HTTP proxy +# string, default: +#media.network.http_no_proxy: + +# HTTP proxy host +# string, default: +#media.network.http_proxy_host: + +# HTTP proxy password +# string, default: +#media.network.http_proxy_password: + +# HTTP proxy port +# numeric, default: 80 +#media.network.http_proxy_port:80 + +# HTTP proxy username +# string, default: +#media.network.http_proxy_user: + +# MMS protocol +# { auto TCP HTTP }, default: 0 +#media.network.mms_protocol:auto + +# automatically advance VCD track/entry +# bool, default: 1 +#media.vcd.autoadvance:1 + +# VCD default type to use on autoplay +# { MPEG track entry segment playback-control item }, default: 3 +#media.vcd.autoplay:playback-control item + +# CD-ROM drive used for VCD when none given +# string, default: +#media.vcd.device: + +# VCD position slider range +# { auto track entry }, default: 0 +#media.vcd.length_reporting:auto + +# show 'rejected' VCD LIDs +# bool, default: 0 +#media.vcd.show_rejected:0 + +# VCD format string for stream comment field +# string, default: %P - Track %T +#media.vcd.comment_format:%P - Track %T + +# VCD debug flag mask +# numeric, default: 0 +#media.vcd.debug:0 + +# VCD format string for display banner +# string, default: %F - %I %N%L%S, disk %c of %C - %v %A +#media.vcd.title_format:%F - %I %N%L%S, disk %c of %C - %v %A + +# v4l radio device +# string, default: /dev/v4l/radio0 +#media.video4linux.radio_device:/dev/v4l/radio0 + +# v4l video device +# string, default: /dev/v4l/video0 +#media.video4linux.video_device:/dev/v4l/video0 + +# device used for WinTV-PVR 250/350 (pvr plugin) +# string, default: /dev/video0 +#media.wintv_pvr.device:/dev/video0 + +# path to RealPlayer codecs +# string, default: /usr/lib/win32 +#decoder.external.real_codecs_path:/usr/lib/win32 + +# path to Win32 codecs +# string, default: /usr/lib/win32 +#decoder.external.win32_codecs_path:/usr/lib/win32 + +# subtitle size +# { tiny small normal large very large huge }, default: 1 +#subtitles.separate.subtitle_size:small + +# subtitle vertical offset +# numeric, default: 0 +#subtitles.separate.vertical_offset:0 + +# font for subtitles +# string, default: sans +#subtitles.separate.font:sans + +# encoding of the subtitles +# string, default: iso-8859-1 +#subtitles.separate.src_encoding:iso-8859-1 + +# use unscaled OSD if possible +# bool, default: 1 +#subtitles.separate.use_unscaled_osd:1 + +# default duration of subtitle display in seconds +# numeric, default: 4 +#subtitles.separate.timeout:4 + +# frames per second to generate +# numeric, default: 14 +#effects.goom.fps:14 + +# goom image height +# numeric, default: 240 +#effects.goom.height:240 + +# goom image width +# numeric, default: 320 +#effects.goom.width:320 + +# colorspace conversion method +# { Fast but not photorealistic Slow but looks better }, default: 0 +#effects.goom.csc_method:Fast but not photorealistic + +# number of audio buffers +# numeric, default: 230 +#engine.buffers.audio_num_buffers:230 + +# number of video buffers +# numeric, default: 500 +#engine.buffers.video_num_buffers:500 + +# default number of video frames +# numeric, default: 15 +#engine.buffers.video_num_frames:15 + +# priority for a/52 decoder +# numeric, default: 0 +#engine.decoder_priorities.a/52:0 + +# priority for bitplane decoder +# numeric, default: 0 +#engine.decoder_priorities.bitplane:0 + +# priority for dts decoder +# numeric, default: 0 +#engine.decoder_priorities.dts:0 + +# priority for dvaudio decoder +# numeric, default: 0 +#engine.decoder_priorities.dvaudio:0 + +# priority for dxr3-mpeg2 decoder +# numeric, default: 0 +#engine.decoder_priorities.dxr3-mpeg2:0 + +# priority for dxr3-spudec decoder +# numeric, default: 0 +#engine.decoder_priorities.dxr3-spudec:0 + +# priority for faad decoder +# numeric, default: 0 +#engine.decoder_priorities.faad:0 + +# priority for ffmpeg-wmv8 decoder +# numeric, default: 0 +#engine.decoder_priorities.ffmpeg-wmv8:0 + +# priority for ffmpeg-wmv9 decoder +# numeric, default: 0 +#engine.decoder_priorities.ffmpeg-wmv9:0 + +# priority for ffmpegaudio decoder +# numeric, default: 0 +#engine.decoder_priorities.ffmpegaudio:0 + +# priority for ffmpegvideo decoder +# numeric, default: 0 +#engine.decoder_priorities.ffmpegvideo:0 + +# priority for gdkpixbuf decoder +# numeric, default: 0 +#engine.decoder_priorities.gdkpixbuf:0 + +# priority for gsm610 decoder +# numeric, default: 0 +#engine.decoder_priorities.gsm610:0 + +# priority for image decoder +# numeric, default: 0 +#engine.decoder_priorities.image:0 + +# priority for mad decoder +# numeric, default: 0 +#engine.decoder_priorities.mad:0 + +# priority for mpc decoder +# numeric, default: 0 +#engine.decoder_priorities.mpc:0 + +# priority for mpeg2 decoder +# numeric, default: 0 +#engine.decoder_priorities.mpeg2:0 + +# priority for nsf decoder +# numeric, default: 0 +#engine.decoder_priorities.nsf:0 + +# priority for pcm decoder +# numeric, default: 0 +#engine.decoder_priorities.pcm:0 + +# priority for qta decoder +# numeric, default: 0 +#engine.decoder_priorities.qta:0 + +# priority for qtv decoder +# numeric, default: 0 +#engine.decoder_priorities.qtv:0 + +# priority for real decoder +# numeric, default: 0 +#engine.decoder_priorities.real:0 + +# priority for realadec decoder +# numeric, default: 0 +#engine.decoder_priorities.realadec:0 + +# priority for rgb decoder +# numeric, default: 0 +#engine.decoder_priorities.rgb:0 + +# priority for spucc decoder +# numeric, default: 0 +#engine.decoder_priorities.spucc:0 + +# priority for spucmml decoder +# numeric, default: 0 +#engine.decoder_priorities.spucmml:0 + +# priority for spudec decoder +# numeric, default: 0 +#engine.decoder_priorities.spudec:0 + +# priority for spudvb decoder +# numeric, default: 0 +#engine.decoder_priorities.spudvb:0 + +# priority for sputext decoder +# numeric, default: 0 +#engine.decoder_priorities.sputext:0 + +# priority for theora decoder +# numeric, default: 0 +#engine.decoder_priorities.theora:0 + +# priority for vorbis decoder +# numeric, default: 0 +#engine.decoder_priorities.vorbis:0 + +# priority for win32a decoder +# numeric, default: 0 +#engine.decoder_priorities.win32a:0 + +# priority for win32v decoder +# numeric, default: 0 +#engine.decoder_priorities.win32v:0 + +# priority for yuv decoder +# numeric, default: 0 +#engine.decoder_priorities.yuv:0 + +# media format detection strategy +# { default reverse content extension }, default: 0 +#engine.demux.strategy:default + +# memcopy method used by xine +# { probe libc kernel mmx mmxext sse }, default: 0 +engine.performance.memcpy_method:libc + +# percentage of discarded frames to tolerate +# numeric, default: 10 +#engine.performance.warn_discarded_threshold:10 + +# percentage of skipped frames to tolerate +# numeric, default: 10 +#engine.performance.warn_skipped_threshold:10 + +# allow implicit changes to the configuration (e.g. by MRL) +# bool, default: 0 +#misc.implicit_config:0 + diff --git a/abs/core/system-templates/templates/xorg/96xx_supported.txt b/abs/core/system-templates/templates/xorg/96xx_supported.txt new file mode 100644 index 0000000..dd4833a --- /dev/null +++ b/abs/core/system-templates/templates/xorg/96xx_supported.txt @@ -0,0 +1,175 @@ + NVIDIA GPU product Device PCI ID + + GeForce 6800 Ultra 0x0040 + GeForce 6800 0x0041 + GeForce 6800 XE 0x0043 + GeForce 6800 XT 0x0044 + GeForce 6800 GT 0x0045 + GeForce 6800 GT 0x0046 + GeForce 6800 GS 0x0047 + GeForce 6800 XT 0x0048 + Quadro FX 4000 0x004E + GeForce 7800 GTX 0x0090 + GeForce 7800 GTX 0x0091 + GeForce 7800 GT 0x0092 + GeForce 7800 GS 0x0093 + GeForce Go 7800 0x0098 + GeForce Go 7800 GTX 0x0099 + Quadro FX 4500 0x009D + GeForce 6800 GS 0x00C0 + GeForce 6800 0x00C1 + GeForce 6800 LE 0x00C2 + GeForce 6800 XT 0x00C3 + GeForce Go 6800 0x00C8 + GeForce Go 6800 Ultra 0x00C9 + Quadro FX Go1400 0x00CC + Quadro FX 3450/4000 SDI 0x00CD + Quadro FX 1400 0x00CE + GeForce 6800/GeForce 6800 Ultra 0x00F0 + GeForce 6600/GeForce 6600 GT 0x00F1 + GeForce 6600 0x00F2 + GeForce 6200 0x00F3 + GeForce 6600 LE 0x00F4 + GeForce 7800 GS 0x00F5 + GeForce 6800 GS 0x00F6 + Quadro FX 3400/4400 0x00F8 + GeForce 6800 Ultra 0x00F9 + GeForce PCX 5750 0x00FA + GeForce PCX 5900 0x00FB + Quadro FX 330/GeForce PCX 5300 0x00FC + Quadro NVS 280 PCI-E/Quadro FX 330 0x00FD + Quadro FX 1300 0x00FE + GeForce PCX 4300 0x00FF + GeForce2 MX/MX 400 0x0110 + GeForce2 MX 100/200 0x0111 + GeForce2 Go 0x0112 + Quadro2 MXR/EX/Go 0x0113 + 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 Go 6600 0x0148 + GeForce Go 6600 GT 0x0149 + Quadro NVS 440 0x014A + Quadro FX 550 0x014C + Quadro FX 540 0x014E + GeForce 6200 0x014F + GeForce 6500 0x0160 + GeForce 6200 TurboCache(TM) 0x0161 + GeForce Go 6200 0x0164 + Quadro NVS 285 0x0165 + GeForce Go 6400 0x0166 + GeForce Go 6200 0x0167 + GeForce Go 6400 0x0168 + 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 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 with AGP8X 0x018A + Quadro4 380 XGL 0x018B + Quadro NVS 50 PCI 0x018C + GeForce2 Integrated GPU 0x01A0 + GeForce 7300 LE 0x01D1 + Quadro NVS 110M 0x01D7 + GeForce Go 7300 0x01D7 + GeForce Go 7400 0x01D8 + Quadro NVS 110M 0x01DA + Quadro NVS 120M 0x01DB + Quadro FX 350M 0x01DC + Quadro FX 350 0x01DE + GeForce 7300 GS 0x01DF + GeForce4 MX Integrated GPU 0x01F0 + GeForce3 0x0200 + GeForce3 Ti 200 0x0201 + GeForce3 Ti 500 0x0202 + Quadro DCC 0x0203 + GeForce 6800 0x0211 + GeForce 6800 LE 0x0212 + GeForce 6800 GT 0x0215 + GeForce 6800 XT 0x0218 + GeForce 6150 0x0240 + GeForce 6150 LE 0x0241 + GeForce 6100 0x0242 + 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 + GeForce 7900 GTX 0x0290 + GeForce 7900 GT 0x0291 + GeForce Go 7900 GS 0x0298 + GeForce Go 7900 GTX 0x0299 + 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 + GeForce 7600 GS 0x02E1 + GeForce FX 5800 Ultra 0x0301 + GeForce FX 5800 0x0302 + Quadro FX 2000 0x0308 + Quadro FX 1000 0x0309 + GeForce FX 5600 Ultra 0x0311 + GeForce FX 5600 0x0312 + GeForce FX 5600XT 0x0314 + GeForce FX Go5600 0x031A + GeForce FX Go5650 0x031B + Quadro FX Go700 0x031C + 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 + Quadro NVS 280 PCI 0x032A + Quadro FX 500/600 PCI 0x032B + 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 + Quadro FX 3000 0x0338 + Quadro FX 700 0x033F + 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 + Quadro FX Go1000 0x034C + Quadro FX 1100 0x034E + GeForce 7600 GT 0x0391 + GeForce 7600 GS 0x0392 + GeForce Go 7600 0x0398 + Quadro FX 560 0x039E \ No newline at end of file diff --git a/abs/core/system-templates/templates/xorg/modeline.ATSC b/abs/core/system-templates/templates/xorg/modeline.ATSC new file mode 100644 index 0000000..b2cd709 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/modeline.ATSC @@ -0,0 +1,33 @@ +ModeLine "ATSC-720p60Hz" 74.160 1280 1352 1392 1648 720 725 730 750 + +ModeLine "My480p" 28.6 720 744 768 900 480 484 492 525 + +ModeLine "My540p" 37.26 960 976 1008 1104 540 542 548 563 +hsync +vsync + +ModeLine "My720p" 73.825 1280 1320 1368 1640 720 722 724 751 +hsync +vsync 74.086 MHz 44.955 kHz 5$ + +ModeLine "My720p2" 73.825 1280 1320 1368 1640 720 722 724 751 +hsync +vsync 74.086 MHz 44.955 kHz 5$ + +ModeLine "My1080i" 79.84 1920 2040 2200 2368 1080 1090 1106 1125 +vsync -hsync interlace + +ModeLine "My1080i2" 74.52 1920 1952 2016 2208 1080 1084 1096 1126 -hsync -vsync interlace + +Modeline "My1920x1080_i" 74.52 1920 1952 2016 2208 1080 1084 1096 1126 -HSync -VSync Interlace + +Modeline "in1080_i" 74.52 1760 1888 2096 2208 960 1012 1028 1126 -HSync -VSync Interlace + +Modeline "1920x1080_59i" 76.11 1920 1952 2240 2272 1080 1104 1110 1135 interlace + +Modeline "1920x1080_60i" 77.60 1920 1952 2240 2272 1080 1104 1110 1135 interlace + +Modeline "1920x1080_61i" 79.08 1920 1952 2248 2280 1080 1104 1110 1135 interlace + +Modeline "1776x1000_60i" 65.91 1776 1808 2056 2088 1000 1023 1028 1051 interlace + +Modeline "1920x1080_30" 77.60 1920 1952 2240 2272 1080 1104 1110 1135 + +Modeline "1760x960_60i" 62.39 1760 1792 2024 2056 960 982 987 1009 interlace + +Modeline "1280x720_60.00" 74.25 1280 1352 1432 1648 720 725 730 750 -hsync -vsync + +Modeline "1280x720_50.00" 74.25 1280 1360 1400 1984 720 725 730 750 -hsync -vsync diff --git a/abs/core/system-templates/templates/xorg/modeline.DVD b/abs/core/system-templates/templates/xorg/modeline.DVD new file mode 100644 index 0000000..9e846d0 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/modeline.DVD @@ -0,0 +1,9 @@ +#DVD-NativeModes +ModeLine "NTSC-DVD-59.94i" 13.5 720 736 800 858 480 484 492 525 Interlace +ModeLine "NTSC-DVD-60i" 13.514 720 736 800 858 480 484 492 525 Interlace +ModeLine "NTSC-DVD-59.94p" 27.0 720 736 800 858 480 484 492 525 +ModeLine "NTSC-DVD-60p" 27.027 720 736 800 858 480 484 492 525 +ModeLine "NTSC-DVD-71.93p" 32.4 720 736 800 858 480 484 492 525 +ModeLine "NTSC-DVD-72p" 32.432 720 736 800 858 480 484 492 525 +ModeLine "NTSC-DVD-119.88p" 54.0 720 736 800 858 480 484 492 525 +ModeLine "NTSC-DVD-120p" 54.054 720 736 800 858 480 484 492 525 diff --git a/abs/core/system-templates/templates/xorg/modeline.NTSC b/abs/core/system-templates/templates/xorg/modeline.NTSC new file mode 100644 index 0000000..5536c1b --- /dev/null +++ b/abs/core/system-templates/templates/xorg/modeline.NTSC @@ -0,0 +1,10 @@ +#Analog-RegularModes +ModeLine "NTSCspec-59.94i" 14.318 768 784 848 910 483 484 492 525 Interlace +ModeLine "NTSCspec-59.94p" 28.636 768 784 848 910 483 484 492 525 +ModeLine "Laserdisk-59.94i" 567 583 647 684 483 484 492 525 Interlace +ModeLine "Laserdisk-59.94p" 567 583 647 684 483 484 492 525 +ModeLine "Broadcast-59.94i" 483 484 492 525 Interlace +ModeLine "Broadcast-59.94p" 483 484 492 525 +ModeLine "VHS-59.94i" 483 484 492 525 Interlace +ModeLine "VHS-59.94p" 483 484 492 525 + diff --git a/abs/core/system-templates/templates/xorg/modeline.VESA b/abs/core/system-templates/templates/xorg/modeline.VESA new file mode 100644 index 0000000..a026f64 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/modeline.VESA @@ -0,0 +1,163 @@ +# 640x350 @ 85Hz (VESA) hsync: 37.9kHz +ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync + +# 640x400 @ 85Hz (VESA) hsync: 37.9kHz +ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync + +# 720x400 @ 85Hz (VESA) hsync: 37.9kHz +ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync + +# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz +ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync + +# 640x480 @ 72Hz (VESA) hsync: 37.9kHz +ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync + +# 640x480 @ 75Hz (VESA) hsync: 37.5kHz +ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync + +# 640x480 @ 85Hz (VESA) hsync: 43.3kHz +ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync + +# 800x600 @ 56Hz (VESA) hsync: 35.2kHz +ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync + +# 800x600 @ 60Hz (VESA) hsync: 37.9kHz +ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync + +# 800x600 @ 72Hz (VESA) hsync: 48.1kHz +ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync + +# 800x600 @ 75Hz (VESA) hsync: 46.9kHz +ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync + +# 800x600 @ 85Hz (VESA) hsync: 53.7kHz +ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync + +# 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz +ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace + +# 1024x768 @ 60Hz (VESA) hsync: 48.4kHz +ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync + +# 1024x768 @ 70Hz (VESA) hsync: 56.5kHz +ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync + +# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz +ModeLine "1024x768" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync + +# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz +ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync + +# 1152x864 @ 75Hz (VESA) hsync: 67.5kHz +ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync + +# 1280x960 @ 60Hz (VESA) hsync: 60.0kHz +ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync + +# 1280x960 @ 85Hz (VESA) hsync: 85.9kHz +ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync + +# 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz +ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync + +# 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz +ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync + +# 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz +ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync + +# 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz +ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync +# 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz +ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz +ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz +ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz +ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync + +# 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz +ModeLine "1792x1344" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync + +# 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz +ModeLine "1792x1344" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync + +# 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz +ModeLine "1856x1392" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync + +# 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz +ModeLine "1856x1392" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync + +# 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz +ModeLine "1920x1440" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync + +# 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz +ModeLine "1920x1440" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync + +# 640x480 @ 100.00 Hz (GTF) hsync: 50.90 kHz; pclk: 43.16 MHz +ModeLine "640x480" 43.16 640 680 744 848 480 481 484 509 -HSync +Vsync + +# 768x576 @ 60.00 Hz (GTF) hsync: 35.82 kHz; pclk: 34.96 MHz +ModeLine "768x576" 34.96 768 792 872 976 576 577 580 597 -HSync +Vsync + +# 768x576 @ 72.00 Hz (GTF) hsync: 43.27 kHz; pclk: 42.93 MHz +ModeLine "768x576" 42.93 768 800 880 992 576 577 580 601 -HSync +Vsync + +# 768x576 @ 75.00 Hz (GTF) hsync: 45.15 kHz; pclk: 45.51 MHz +ModeLine "768x576" 45.51 768 808 888 1008 576 577 580 602 -HSync +Vsync + +# 768x576 @ 85.00 Hz (GTF) hsync: 51.42 kHz; pclk: 51.84 MHz +ModeLine "768x576" 51.84 768 808 888 1008 576 577 580 605 -HSync +Vsync + +# 768x576 @ 100.00 Hz (GTF) hsync: 61.10 kHz; pclk: 62.57 MHz +ModeLine "768x576" 62.57 768 816 896 1024 576 577 580 611 -HSync +Vsync + +# 800x600 @ 100.00 Hz (GTF) hsync: 63.60 kHz; pclk: 68.18 MHz +ModeLine "800x600" 68.18 800 848 936 1072 600 601 604 636 -HSync +Vsync + +# 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz +ModeLine "1024x768" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsync + +# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz +ModeLine "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync + +# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz +ModeLine "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync + +# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz +ModeLine "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync + +# 1280x960 @ 72.00 Hz (GTF) hsync: 72.07 kHz; pclk: 124.54 MHz +ModeLine "1280x960" 124.54 1280 1368 1504 1728 960 961 964 1001 -HSync +Vsync + +# 1280x960 @ 75.00 Hz (GTF) hsync: 75.15 kHz; pclk: 129.86 MHz +ModeLine "1280x960" 129.86 1280 1368 1504 1728 960 961 964 1002 -HSync +Vsync + +# 1280x960 @ 100.00 Hz (GTF) hsync: 101.70 kHz; pclk: 178.99 MHz +ModeLine "1280x960" 178.99 1280 1376 1520 1760 960 961 964 1017 -HSync +Vsync + +# 1280x1024 @ 100.00 Hz (GTF) hsync: 108.50 kHz; pclk: 190.96 MHz +ModeLine "1280x1024" 190.96 1280 1376 1520 1760 1024 1025 1028 1085 -HSync +Vsync + +# 1400x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 122.61 MHz +ModeLine "1400x1050" 122.61 1400 1488 1640 1880 1050 1051 1054 1087 -HSync +Vsync + +# 1400x1050 @ 72.00 Hz (GTF) hsync: 78.77 kHz; pclk: 149.34 MHz +ModeLine "1400x1050" 149.34 1400 1496 1648 1896 1050 1051 1054 1094 -HSync +Vsync + +# 1400x1050 @ 75.00 Hz (GTF) hsync: 82.20 kHz; pclk: 155.85 MHz +ModeLine "1400x1050" 155.85 1400 1496 1648 1896 1050 1051 1054 1096 -HSync +Vsync + +# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz +ModeLine "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync + +# 1400x1050 @ 100.00 Hz (GTF) hsync: 111.20 kHz; pclk: 214.39 MHz +ModeLine "1400x1050" 214.39 1400 1512 1664 1928 1050 1051 1054 1112 -HSync +Vsync + +# 1600x1200 @ 100.00 Hz (GTF) hsync: 127.10 kHz; pclk: 280.64 MHz +ModeLine "1600x1200" 280.64 1600 1728 1904 2208 1200 1201 1204 1271 -HSync +Vsync diff --git a/abs/core/system-templates/templates/xorg/modeline.custom b/abs/core/system-templates/templates/xorg/modeline.custom new file mode 100644 index 0000000..ca6d678 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/modeline.custom @@ -0,0 +1 @@ +ModeLine "CustomModeline" 14.318 768 784 848 910 483 484 492 525 Interlace diff --git a/abs/core/system-templates/templates/xorg/xorg.conf.ati b/abs/core/system-templates/templates/xorg/xorg.conf.ati new file mode 100644 index 0000000..8c75552 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/xorg.conf.ati @@ -0,0 +1,98 @@ +Section "ServerFlags" + Option "AutoAddDevices" "False" +EndSection + +Section "ServerLayout" + Identifier "X.org Configured" + Screen 0 "aticonfig-Screen[0]" 0 0 + InputDevice "Mouse0" "CorePointer" + InputDevice "Keyboard0" "CoreKeyboard" +EndSection + +Section "Files" +# RgbPath "/usr/share/X11/rgb" + ModulePath "/usr/lib/xorg/modules" + FontPath "/usr/share/fonts/misc" + FontPath "/usr/share/fonts/75dpi" + FontPath "/usr/share/fonts/100dpi" + FontPath "/usr/share/fonts/TTF" + FontPath "/usr/share/fonts/Type1" +EndSection + +Section "Module" + Load "xtrap" + Load "dbe" + Load "record" + Load "extmod" + Load "dri" + Load "type1" + Load "freetype" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "kbd" +EndSection + +Section "InputDevice" + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/input/mice" + Option "ZAxisMapping" "4 5 6 7" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Monitor Vendor" + ModelName "Monitor Model" +EndSection + +Section "Monitor" + Identifier "aticonfig-Monitor[0]" +# HorizSync +# VertRefresh + Option "VendorName" "ATI Proprietary Driver" + Option "ModelName" "Generic Autodetecting Monitor" + Option "DPMS" "true" +EndSection + +Section "Device" + + ### Available Driver options are:- + ### Values: : integer, : float, : "True"/"False", + ### : "String", : " Hz/kHz/MHz" + ### [arg]: arg optional + #Option "ShadowFB" # [] + #Option "DefaultRefresh" # [] + #Option "ModeSetClearScreen" # [] + Identifier "Card0" + Driver "vesa" + VendorName "ATI Technologies Inc" + BoardName "RV370 5B60 [Radeon X300 (PCIE)]" + BusID "PCI:1:0:0" +EndSection + +Section "Device" + Identifier "aticonfig-Device[0]" + Driver "fglrx" +#INSERT HERE + +# Option "ForceMonitors" "tv,nocrt1,notmds1" +# Option "TVStandard" "SCART" +# Option "TVFormat" "PAL-B" +EndSection + + +Section "Screen" + Identifier "aticonfig-Screen[0]" + Device "aticonfig-Device[0]" + Monitor "aticonfig-Monitor[0]" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "640x480" + EndSubSection +EndSection + diff --git a/abs/core/system-templates/templates/xorg/xorg.conf.intel b/abs/core/system-templates/templates/xorg/xorg.conf.intel new file mode 100644 index 0000000..c4a67c9 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/xorg.conf.intel @@ -0,0 +1,152 @@ +Section "ServerFlags" + Option "AutoAddDevices" "False" +EndSection + +Section "ServerLayout" + Identifier "Xorg Configured" + Screen 0 "Screen0" 0 0 + InputDevice "Keyboard0" "CoreKeyboard" + InputDevice "PS/2 Mouse" "CorePointer" +# Serial Mouse not detected +# USB Mouse not detected +EndSection + +Section "ServerFlags" + Option "AllowMouseOpenFail" "true" + +EndSection + +Section "Files" +# RgbPath "/usr/share/X11/rgb" + ModulePath "/usr/lib/xorg/modules" + FontPath "/usr/share/fonts/misc:unscaled" + FontPath "/usr/share/fonts/misc" + FontPath "/usr/share/fonts/75dpi:unscaled" + FontPath "/usr/share/fonts/75dpi" + FontPath "/usr/share/fonts/100dpi:unscaled" + FontPath "/usr/share/fonts/100dpi" + FontPath "/usr/share/fonts/PEX" +# Additional fonts: Locale, Gimp, TTF... + FontPath "/usr/share/fonts/cyrillic" +# FontPath "/usr/share/lib/X11/fonts/latin2/75dpi" +# FontPath "/usr/share/lib/X11/fonts/latin2/100dpi" +# True type and type1 fonts are also handled via xftlib, see /etc/X11/XftConfig! + FontPath "/usr/share/fonts/Type1" + FontPath "/usr/share/fonts/ttf/western" + FontPath "/usr/share/fonts/ttf/decoratives" + FontPath "/usr/share/fonts/truetype" + FontPath "/usr/share/fonts/truetype/openoffice" + FontPath "/usr/share/fonts/truetype/ttf-bitstream-vera" + FontPath "/usr/share/fonts/latex-ttf-fonts" + FontPath "/usr/share/fonts/defoma/CID" + FontPath "/usr/share/fonts/defoma/TrueType" +EndSection + +Section "Module" + Load "ddc" # ddc probing of monitor + Load "dbe" + Load "dri" + Load "extmod" + Load "glx" + Load "bitmap" # bitmap-fonts + Load "type1" + Load "freetype" + Load "record" +EndSection + +Section "InputDevice" + Identifier "Keyboard0" + Driver "keyboard" + Option "CoreKeyboard" + Option "XkbRules" "xorg" + Option "XkbModel" "pc105" + Option "XkbLayout" "" + Option "XkbVariant" "" +EndSection + +Section "InputDevice" + Identifier "Serial Mouse" + Driver "mouse" + Option "Protocol" "Microsoft" + Option "Device" "/dev/ttyS0" + Option "Emulate3Buttons" "true" + Option "Emulate3Timeout" "70" + Option "SendCoreEvents" "true" +EndSection + +Section "InputDevice" + Identifier "PS/2 Mouse" + Driver "mouse" + Option "Protocol" "auto" + Option "ZAxisMapping" "4 5" + Option "Device" "/dev/psaux" + Option "Emulate3Buttons" "true" + Option "Emulate3Timeout" "70" + Option "SendCoreEvents" "true" +EndSection + +Section "InputDevice" + Identifier "USB Mouse" + Driver "mouse" + Option "Device" "/dev/input/mice" + Option "SendCoreEvents" "true" + Option "Protocol" "IMPS/2" + Option "ZAxisMapping" "4 5" + Option "Buttons" "5" +EndSection + +# Auto-generated by Archie mkxcfg + +Section "Monitor" + Identifier "Monitor0" + Option "DPMS" "true" +EndSection + +# Auto-generated by Archie mkxcfg + +Section "Device" + Identifier "Card0" + Driver "intel" + VendorName "All" + BoardName "All" +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultColorDepth 16 + SubSection "Display" + Depth 1 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Depth 4 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Depth 8 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Depth 15 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Depth 16 + Modes "800x600" + virtual 800 600 + EndSubSection + SubSection "Display" + Depth 24 + Modes "1024x768" "800x600" "640x480" + EndSubSection + SubSection "Display" + Depth 32 + Modes "1024x768" "800x600" "640x480" + EndSubSection +EndSection + +Section "DRI" + Mode 0666 +EndSection diff --git a/abs/core/system-templates/templates/xorg/xorg.conf.nvidia b/abs/core/system-templates/templates/xorg/xorg.conf.nvidia new file mode 100755 index 0000000..3a53183 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/xorg.conf.nvidia @@ -0,0 +1,88 @@ +# nvidia-xconfig: X configuration file generated by nvidia-xconfig +# nvidia-xconfig: version 1.0 (buildmeister@builder3) Tue Aug 1 21:11:12 PDT 2006 +Section "ServerFlags" + Option "AutoAddDevices" "False" +EndSection + +Section "ServerLayout" + Identifier "Layout0" + Screen 0 "Screen0" + InputDevice "Keyboard0" "CoreKeyboard" + InputDevice "Mouse0" "CorePointer" +EndSection + +Section "Files" +# RgbPath "/usr/X11R6/lib/X11/rgb" +EndSection + +Section "Module" + Load "dbe" + Load "extmod" + Load "type1" + Load "freetype" + Load "glx" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/psaux" + Option "Emulate3Buttons" "no" + Option "ZAxisMapping" "4 5" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Keyboard0" + Driver "keyboard" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Unknown" + ModelName "Unknown" +# HorizSync +# VertRefresh + Option "DPMS" "false" +# DisplaySize 203 153 +#INSERT MODELINE +EndSection + +Section "Device" + Identifier "Device0" + Driver "nvidia" + VendorName "NVIDIA Corporation" + Option "DPI" "100 x 100" + Option "NoLogo" "1" + +#INSERT HERE + +#END OPTIONS + +# Option "ConnectedMonitor" "DFP" +# Option "FlatPanelProperties" "Scaling = centered, Dithering = enabled" +# Option "DigitalVibrance" "0" +# Option "TransparentIndex" "0" +# Option "CursorShadowAlpha" "64" +# Option "CursorShadowXOffset" "4" +# Option "UseEdidFreqs" "True" +# Option "NvAGP" "1" + + + + +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Device0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1280x720" + EndSubSection +EndSection + diff --git a/abs/core/system-templates/templates/xorg/xorg.conf.vesa b/abs/core/system-templates/templates/xorg/xorg.conf.vesa new file mode 100755 index 0000000..fa96ea5 --- /dev/null +++ b/abs/core/system-templates/templates/xorg/xorg.conf.vesa @@ -0,0 +1,70 @@ +# nvidia-xconfig: X configuration file generated by nvidia-xconfig +# nvidia-xconfig: version 1.0 (buildmeister@builder3) Tue Aug 1 21:11:12 PDT 2006 +Section "ServerFlags" + Option "AutoAddDevices" "False" +EndSection + +Section "ServerLayout" + Identifier "Layout0" + Screen 0 "Screen0" + InputDevice "Keyboard0" "CoreKeyboard" + InputDevice "Mouse0" "CorePointer" +EndSection + +Section "Files" +# RgbPath "/usr/X11R6/lib/X11/rgb" +EndSection + +Section "Module" + Load "dbe" + Load "extmod" + Load "type1" + Load "freetype" + +EndSection + +Section "InputDevice" + # generated from default + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/psaux" + Option "Emulate3Buttons" "no" + Option "ZAxisMapping" "4 5" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Keyboard0" + Driver "keyboard" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Unknown" + ModelName "Unknown" + HorizSync 30.0 - 110.0 + VertRefresh 50.0 - 150.0 + Option "DPMS" "false" +EndSection + +Section "Device" + Identifier "Device0" + Driver "vesa" + VendorName "Generic Corporation" + Option "DPI" "100 x 100" + + +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Device0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1280x720" + EndSubSection +EndSection + diff --git a/abs/core/system-templates/templates/xorg/xorg.conf.via b/abs/core/system-templates/templates/xorg/xorg.conf.via new file mode 100644 index 0000000..91c517f --- /dev/null +++ b/abs/core/system-templates/templates/xorg/xorg.conf.via @@ -0,0 +1,75 @@ +# nvidia-xconfig: X configuration file generated by nvidia-xconfig +# nvidia-xconfig: version 1.0 (buildmeister@builder3) Tue Aug 1 21:11:12 PDT 2006 +Section "ServerFlags" + Option "AutoAddDevices" "False" +EndSection + +Section "ServerLayout" + Identifier "Layout0" + Screen 0 "Screen0" + InputDevice "Keyboard0" "CoreKeyboard" + InputDevice "Mouse0" "CorePointer" +EndSection + +Section "Files" +# RgbPath "/usr/X11R6/lib/X11/rgb" +EndSection + +Section "Module" + Load "dbe" + Load "glx" + Load "extmod" + Load "type1" + Load "freetype" + Load "dri" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/psaux" + Option "Emulate3Buttons" "no" + Option "ZAxisMapping" "4 5" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Keyboard0" + Driver "keyboard" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Unknown" + ModelName "Unknown" + HorizSync 30.0 - 110.0 + VertRefresh 50.0 - 150.0 + Option "DPMS" "false" +EndSection + +Section "Device" + Identifier "Device0" + Driver "openchrome" + VendorName "via" + Option "DPI" "100 x 100" + + +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Device0" + Monitor "Monitor0" + DefaultDepth 16 + SubSection "Display" + Depth 16 + Modes "800x600" + EndSubSection +EndSection + +Section "DRI" + Group "video" + Mode 0666 + EndSection diff --git a/abs/core/system-templates/templates/xorg/xorg.conf.vmware b/abs/core/system-templates/templates/xorg/xorg.conf.vmware new file mode 100755 index 0000000..4e9fd4a --- /dev/null +++ b/abs/core/system-templates/templates/xorg/xorg.conf.vmware @@ -0,0 +1,70 @@ +# nvidia-xconfig: X configuration file generated by nvidia-xconfig +# nvidia-xconfig: version 1.0 (buildmeister@builder3) Tue Aug 1 21:11:12 PDT 2006 +Section "ServerFlags" + Option "AutoAddDevices" "False" +EndSection + +Section "ServerLayout" + Identifier "Layout0" + Screen 0 "Screen0" + InputDevice "Keyboard0" "CoreKeyboard" + InputDevice "Mouse0" "CorePointer" +EndSection + +Section "Files" +# RgbPath "/usr/X11R6/lib/X11/rgb" +EndSection + +Section "Module" + Load "dbe" + Load "extmod" + Load "type1" + Load "freetype" + Load "glx" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Mouse0" + Driver "mouse" + Option "Protocol" "auto" + Option "Device" "/dev/psaux" + Option "Emulate3Buttons" "no" + Option "ZAxisMapping" "4 5" +EndSection + +Section "InputDevice" + # generated from default + Identifier "Keyboard0" + Driver "keyboard" +EndSection + +Section "Monitor" + Identifier "Monitor0" + VendorName "Unknown" + ModelName "Unknown" + HorizSync 30.0 - 110.0 + VertRefresh 50.0 - 150.0 + Option "DPMS" "false" +EndSection + +Section "Device" + Identifier "Device0" + Driver "vmware" + VendorName "NVIDIA Corporation" + Option "DPI" "100 x 100" + + +EndSection + +Section "Screen" + Identifier "Screen0" + Device "Device0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1280x720" + EndSubSection +EndSection + diff --git a/abs/core/system-templates/templates/xscreensaver.template b/abs/core/system-templates/templates/xscreensaver.template new file mode 100644 index 0000000..dcddefa --- /dev/null +++ b/abs/core/system-templates/templates/xscreensaver.template @@ -0,0 +1,255 @@ +# XScreenSaver Preferences File +# Written by xscreensaver-demo 5.08 for mythtv on Mon Mar 9 14:30:41 2009. +# http://www.jwz.org/xscreensaver/ + +timeout: 0:10:00 +cycle: 0:10:00 +lock: False +lockTimeout: 0:00:00 +passwdTimeout: 0:00:30 +visualID: default +installColormap: True +verbose: False +timestamp: True +splash: True +splashDuration: 0:00:05 +demoCommand: xscreensaver-demo +prefsCommand: xscreensaver-demo -prefs +nice: 10 +memoryLimit: 0 +fade: True +unfade: False +fadeSeconds: 0:00:03 +fadeTicks: 20 +captureStderr: True +ignoreUninstalledPrograms:False +font: *-medium-r-*-140-*-m-* +dpmsEnabled: False +dpmsStandby: 2:00:00 +dpmsSuspend: 2:00:00 +dpmsOff: 4:00:00 +grabDesktopImages: True +grabVideoFrames: False +chooseRandomImages: False +imageDirectory: + +mode: random +selected: -1 + +textMode: file +textLiteral: XScreenSaver +textFile: +textProgram: fortune +textURL: http://www.livejournal.com/stats/latest-rss.bml + +programs: \ + maze -root \n\ + GL: superquadrics -root \n\ + attraction -root \n\ + blitspin -root \n\ + greynetic -root \n\ + helix -root \n\ + hopalong -root \n\ +- hypercube -root \n\ + imsmap -root \n\ +- noseguy -root \n\ +- pyro -root \n\ + qix -root \n\ +- rocks -root \n\ + rorschach -root \n\ + decayscreen -root \n\ + flame -root \n\ + halo -root \n\ + slidescreen -root \n\ + pedal -root \n\ + bouboule -root \n\ +- braid -root \n\ + coral -root \n\ + deco -root \n\ + drift -root \n\ +- fadeplot -root \n\ + galaxy -root \n\ + goop -root \n\ + grav -root \n\ + ifs -root \n\ + GL: jigsaw -root \n\ + julia -root \n\ +- kaleidescope -root \n\ + GL: moebius -root \n\ + moire -root \n\ + GL: morph3d -root \n\ + mountain -root \n\ + munch -root \n\ + penrose -root \n\ + GL: pipes -root \n\ + rd-bomb -root \n\ + GL: rubik -root \n\ +- sierpinski -root \n\ + slip -root \n\ + GL: sproingies -root \n\ + starfish -root \n\ + strange -root \n\ + swirl -root \n\ + triangle -root \n\ + xjack -root \n\ + xlyap -root \n\ + GL: atlantis -root \n\ + bsod -root \n\ + GL: bubble3d -root \n\ + GL: cage -root \n\ +- crystal -root \n\ + cynosure -root \n\ + discrete -root \n\ + distort -root \n\ + epicycle -root \n\ + flow -root \n\ +- GL: glplanet -root \n\ + interference -root \n\ + kumppa -root \n\ + GL: lament -root \n\ + moire2 -root \n\ + GL: sonar -root \n\ + GL: stairs -root \n\ + truchet -root \n\ +- vidwhacker -root \n\ + blaster -root \n\ + bumps -root \n\ + ccurve -root \n\ + compass -root \n\ + deluxe -root \n\ +- demon -root \n\ +- GL: extrusion -root \n\ +- loop -root \n\ + penetrate -root \n\ + petri -root \n\ + phosphor -root \n\ + GL: pulsar -root \n\ + ripples -root \n\ + shadebobs -root \n\ + GL: sierpinski3d -root \n\ + spotlight -root \n\ + squiral -root \n\ + wander -root \n\ +- webcollage -root \n\ + xflame -root \n\ + xmatrix -root \n\ + GL: gflux -root \n\ +- hyperball -root \n\ +- nerverot -root \n\ + xrayswarm -root \n\ + xspirograph -root \n\ + GL: circuit -root \n\ + GL: dangerball -root \n\ +- GL: dnalogo -root \n\ + GL: engine -root \n\ + GL: flipscreen3d -root \n\ + GL: gltext -root \n\ + GL: menger -root \n\ + GL: molecule -root \n\ + rotzoomer -root \n\ + speedmine -root \n\ + GL: starwars -root \n\ + GL: stonerview -root \n\ + vermiculate -root \n\ + whirlwindwarp -root \n\ + zoom -root \n\ + anemone -root \n\ + apollonian -root \n\ + GL: boxed -root \n\ + GL: cubenetic -root \n\ + GL: endgame -root \n\ + euler2d -root \n\ + fluidballs -root \n\ + GL: flurry -root \n\ +- GL: glblur -root \n\ + GL: glsnake -root \n\ + halftone -root \n\ +- juggle -root \n\ + GL: lavalite -root \n\ +- polyominoes -root \n\ + GL: queens -root \n\ +- GL: sballs -root \n\ + GL: spheremonics -root \n\ +- thornbird -root \n\ + twang -root \n\ +- GL: antspotlight -root \n\ + apple2 -root \n\ + GL: atunnel -root \n\ + barcode -root \n\ + GL: blinkbox -root \n\ + GL: blocktube -root \n\ + GL: bouncingcow -root \n\ + cloudlife -root \n\ + GL: cubestorm -root \n\ + eruption -root \n\ + GL: flipflop -root \n\ + GL: flyingtoasters -root \n\ + fontglide -root \n\ + GL: gleidescope -root \n\ + GL: glknots -root \n\ + GL: glmatrix -root \n\ +- GL: glslideshow -root \n\ + GL: hypertorus -root \n\ +- GL: jigglypuff -root \n\ + GL: klein -root \n\ + metaballs -root \n\ + GL: mirrorblob -root \n\ + piecewise -root \n\ + GL: polytopes -root \n\ + pong -root \n\ + popsquares -root \n\ + xanalogtv -root \n\ +- abstractile -root \n\ + anemotaxis -root \n\ +- GL: antinspect -root \n\ + fireworkx -root \n\ + fuzzyflakes -root \n\ + interaggregate -root \n\ + intermomentary -root \n\ + memscroller -root \n\ + GL: noof -root \n\ + pacman -root \n\ + GL: pinion -root \n\ + GL: polyhedra -root \n\ +- GL: providence -root \n\ + substrate -root \n\ + wormhole -root \n\ +- GL: antmaze -root \n\ + GL: boing -root \n\ + boxfit -root \n\ + GL: carousel -root \n\ + celtic -root \n\ + GL: crackberg -root \n\ + GL: cube21 -root \n\ + fiberlamp -root \n\ + GL: fliptext -root \n\ + GL: glhanoi -root \n\ + GL: juggler3d -root \n\ + GL: tangram -root \n\ + GL: timetunnel -root \n\ + GL: glschool -root \n\ + GL: topblock -root \n\ + GL: cubicgrid -root \n\ + cwaves -root \n\ + GL: gears -root \n\ + GL: glcells -root \n\ + GL: lockward -root \n\ + m6502 -root \n\ + GL: moebiusgears -root \n\ + GL: voronoi -root \n\ + GL: hypnowheel -root \n\ +- lcdscrub -root \n\ + GL: photopile -root \n\ + GL: skytentacles -root \n\ + + +pointerPollTime: 0:00:05 +pointerHysteresis: 10 +windowCreationTimeout:0:00:30 +initialDelay: 0:00:00 +sgiSaverExtension: True +xidleExtension: True +GetViewPortIsFullOfLies:False +procInterrupts: True +overlayStderr: True + diff --git a/abs/core/system-templates/templates/xscreensavers b/abs/core/system-templates/templates/xscreensavers new file mode 100644 index 0000000..887bef9 --- /dev/null +++ b/abs/core/system-templates/templates/xscreensavers @@ -0,0 +1,198 @@ +abstractile +anemone +anemotaxis +antinspect +antmaze +antspotlight +apollonian +apple2 +atlantis +attraction +atunnel +barcode +blaster +blinkbox +blitspin +blocktube +boing +bouboule +bouncingcow +boxed +boxfit +braid +bsod +bubble3d +bumps +cage +carousel +ccurve +celtic +circuit +cloudlife +compass +coral +crackberg +crystal +cube21 +cubenetic +cubestorm +cubicgrid +cwaves +cynosure +dangerball +decayscreen +deco +deluxe +demon +discrete +distort +drift +endgame +engine +epicycle +eruption +euler2d +fadeplot +fiberlamp +fireworkx +flame +flipflop +flipscreen3d +fliptext +flow +fluidballs +flurry +flyingtoasters +fontglide +fuzzyflakes +galaxy +gears +gflux +glblur +glcells +gleidescope +glhanoi +glknots +glmatrix +glplanet +glschool +glslideshow +glsnake +gltext +goop +grav +greynetic +halftone +halo +helix +hopalong +hyperball +hypercube +hypertorus +hypnowheel +ifs +imsmap +interaggregate +interference +intermomentary +jigglypuff +jigsaw +juggle +juggler3d +julia +kaleidescope +klein +kumppa +lament +lavalite +lcdscrub +ljlatest +lockward +loop +m6502 +maze +memscroller +menger +metaballs +mirrorblob +moebius +moebiusgears +moire +moire2 +molecule +morph3d +mountain +munch +nerverot +noof +noseguy +pacman +pedal +penetrate +penrose +petri +phosphor +photopile +piecewise +pinion +pipes +polyhedra +polyominoes +polytopes +pong +popsquares +providence +pulsar +pyro +qix +queens +rd-bomb +ripples +rocks +rorschach +rotzoomer +rubik +sballs +shadebobs +sierpinski +sierpinski3d +skytentacles +slidescreen +slip +sonar +speedmine +spheremonics +spotlight +sproingies +squiral +stairs +starfish +starwars +stonerview +strange +substrate +superquadrics +swirl +tangram +thornbird +timetunnel +topblock +triangle +truchet +twang +vermiculate +vidwhacker +voronoi +wander +webcollage +webcollage-helper +whirlwindwarp +wormhole +xanalogtv +xflame +xjack +xlyap +xmatrix +xrayswarm +xspirograph +zoom diff --git a/abs/core/sysvinit/PKGBUILD b/abs/core/sysvinit/PKGBUILD index 2a32da9..6fbb3cd 100644 --- a/abs/core/sysvinit/PKGBUILD +++ b/abs/core/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/sysvinit/halt-init.patch b/abs/core/sysvinit/halt-init.patch index 3c61e0f..88eb0ce 100644 --- a/abs/core/sysvinit/halt-init.patch +++ b/abs/core/sysvinit/halt-init.patch @@ -7,8 +7,8 @@ + if (!strcmp(progname, "reboot.init")) do_reboot = 1; + if (!strcmp(progname, "poweroff.init")) do_poweroff = 1; + -+ fprintf(stderr, "%d: do_reboot \n ", do_reboot); -+ fprintf(stderr, "%d: do_poweroff \n ", do_poweroff); ++ //fprintf(stderr, "%d: do_reboot \n ", do_reboot); ++ //fprintf(stderr, "%d: do_poweroff \n ", do_poweroff); + //fprintf(stderr, "%s: \n", progname); + //do_nothing = 1; + diff --git a/abs/core/tar/PKGBUILD b/abs/core/tar/PKGBUILD index a22d455..2a0c87c 100644 --- a/abs/core/tar/PKGBUILD +++ b/abs/core/tar/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: judd pkgname=tar pkgver=1.20 -pkgrel=11 +pkgrel=13 pkgdesc="Utility used to store, backup, and transport files" arch=('i686' 'x86_64') license=('GPL3') diff --git a/abs/core/tcl/ChangeLog b/abs/core/tcl/ChangeLog index 313bd98..0aeabc7 100644 --- a/abs/core/tcl/ChangeLog +++ b/abs/core/tcl/ChangeLog @@ -1,10 +1,16 @@ -2008-08-16 Allan McRae +2008-12-24 Allan McRae + * 8.5.6-1 : + new upstream release + +2008-10-16 Allan McRae + * 8.5.5-1 : + new upstream release +2008-08-16 Allan McRae * 8.5.4-1 : new upstream release FHS man directory -2008-07-01 Allan McRae - +2008-07-01 Allan McRae * 8.5.3-1 : new upstream release. diff --git a/abs/core/tcl/PKGBUILD b/abs/core/tcl/PKGBUILD index ec911bb..bcf3ab2 100644 --- a/abs/core/tcl/PKGBUILD +++ b/abs/core/tcl/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 8742 2008-08-16 05:01:49Z allan $ +# $Id: PKGBUILD 22246 2008-12-24 10:50:10Z allan $ # Maintainer: Allan McRae # Committer: Judd Vinet pkgname=tcl -pkgver=8.5.4 +pkgver=8.5.6 pkgrel=1 pkgdesc="The Tcl scripting language" arch=('i686' 'x86_64') license=('custom') -depends=(glibc) +depends=('glibc') source=(http://downloads.sourceforge.net/sourceforge/tcl/tcl${pkgver}-src.tar.gz) url="http://tcl.sourceforge.net/" -md5sums=('15032a6a43f3bfbe9223b95186849472') +md5sums=('d0b0b3ff7600ff63135c710b575265cd') build() { cd ${srcdir}/tcl${pkgver}/unix diff --git a/abs/core/tdb/PKGBUILD b/abs/core/tdb/PKGBUILD new file mode 100644 index 0000000..e908119 --- /dev/null +++ b/abs/core/tdb/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 37511 2009-05-02 16:17:09Z tpowa $ +# Maintainer: eric +# Contributor: Tom Newsom + +pkgname=tdb +pkgver=3.3.4 +pkgrel=1 +# We use the 'A' to fake out pacman's version comparators. Samba chooses +# to append 'a','b',etc to their subsequent releases, which pamcan +# misconstrues as alpha, beta, etc. Bad samba! +_realver=3.3.4 +pkgdesc="A Trivial Database similar to GDBM but allows simultaneous commits" +arch=(i686 x86_64) +license=('GPL3') +url="www.samba.org" +source=(http://us1.samba.org/samba/ftp/samba-${_realver}.tar.gz) +options=(!makeflags) + +build() { + cd ${srcdir}/samba-${_realver}/source/lib/tdb + ./autogen.sh + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + ln -sf /usr/lib/libtdb.so.1.1.2 ${pkgdir}/usr/lib/libtdb.so.1 + ln -sf /usr/lib/libtdb.so.1.1.2 ${pkgdir}/usr/lib/libtdb.so +} +md5sums=('1443165edb7cb3f56f1e77aec1ee3266') diff --git a/abs/core/tdb/gcc3.patch b/abs/core/tdb/gcc3.patch new file mode 100644 index 0000000..c88c2e7 --- /dev/null +++ b/abs/core/tdb/gcc3.patch @@ -0,0 +1,41 @@ +--- tdb-1.0.6/tdbtool.c 2001-12-10 22:45:47.000000000 -0500 ++++ ./tdbtool.c 2003-12-31 19:44:50.000000000 -0500 +@@ -169,22 +169,22 @@ + + static void help(void) + { +- printf(" +-tdbtool: +- create dbname : create a database +- open dbname : open an existing database +- erase : erase the database +- dump dumpname : dump the database as strings +- insert key data : insert a record +- store key data : store a record (replace) +- show key : show a record by key +- delete key : delete a record by key +- list : print the database hash table and freelist +- free : print the database freelist +- 1 | first : print the first record +- n | next : print the next record +- q | quit : terminate +- \\n : repeat 'next' command ++ printf("\ ++tdbtool: \ ++ create dbname : create a database\ ++ open dbname : open an existing database\ ++ erase : erase the database\ ++ dump dumpname : dump the database as strings\ ++ insert key data : insert a record\ ++ store key data : store a record (replace)\ ++ show key : show a record by key\ ++ delete key : delete a record by key\ ++ list : print the database hash table and freelist\ ++ free : print the database freelist\ ++ 1 | first : print the first record\ ++ n | next : print the next record\ ++ q | quit : terminate\ ++ \\n : repeat 'next' command\ + "); + } + diff --git a/abs/core/texinfo/ChangeLog b/abs/core/texinfo/ChangeLog new file mode 100644 index 0000000..46091e7 --- /dev/null +++ b/abs/core/texinfo/ChangeLog @@ -0,0 +1,17 @@ +2008-09-26 Eric Belanger + + * texinfo 4.13a-1 + * Upstream update + * Moved to base group + * Added install scriptlet to handle info pages + +2008-04-28 Eric Belanger + + * texinfo 4.12-2 + * Added to base-devel group + +2008-04-21 Eric Belanger + + * texinfo 4.12-1 + * Upstream update + * Updated license diff --git a/abs/core/texinfo/PKGBUILD b/abs/core/texinfo/PKGBUILD new file mode 100644 index 0000000..69aa173 --- /dev/null +++ b/abs/core/texinfo/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 13367 2008-09-27 01:52:08Z eric $ +# Maintainer: Eric Belanger +# Contributor: Tom Newsom + +pkgname=texinfo +pkgver=4.13a +pkgrel=1 +pkgdesc="Utilities to work with and produce manuals, ASCII text, and on-line documentation from a single source file" +arch=('i686' 'x86_64') +url="http://www.gnu.org/software/texinfo/" +license=('GPL3') +groups=('base') +depends=('ncurses') +install=texinfo.install +source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('71ba711519209b5fb583fed2b3d86fcb') +sha1sums=('a1533cf8e03ea4fa6c443b73f4c85e4da04dead0') + +build() { + cd ${srcdir}/${pkgname}-4.13 + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/share/info/dir + gzip ${pkgdir}/usr/share/info/* +} diff --git a/abs/core/texinfo/texinfo.install b/abs/core/texinfo/texinfo.install new file mode 100644 index 0000000..87c7ac4 --- /dev/null +++ b/abs/core/texinfo/texinfo.install @@ -0,0 +1,18 @@ +infodir=/usr/share/info +filelist=(info.info.gz info-stnd.info.gz texinfo.gz texinfo-1.gz texinfo-2.gz texinfo-3.gz) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/abs/core/tftp-hpa/LICENSE b/abs/core/tftp-hpa/LICENSE new file mode 100644 index 0000000..6dade69 --- /dev/null +++ b/abs/core/tftp-hpa/LICENSE @@ -0,0 +1,32 @@ +/* + * Copyright (c) 1983, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ diff --git a/abs/core/tftp-hpa/PKGBUILD b/abs/core/tftp-hpa/PKGBUILD new file mode 100644 index 0000000..cf1c9e0 --- /dev/null +++ b/abs/core/tftp-hpa/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 37555 2009-05-02 22:51:20Z eric $ +# Maintainer: dorphell +# Contributor: Jose Javier +pkgname=tftp-hpa +pkgver=5.0 +pkgrel=2 +pkgdesc="Official tftp server" +arch=('i686' 'x86_64') +url="http://www.kernel.org/pub/software/network/tftp/" +license=('BSD') +depends=('tcp_wrappers') +conflicts=('netkit-tftp') +backup=('etc/conf.d/tftpd') +source=(http://www.kernel.org/pub/software/network/tftp/$pkgname-$pkgver.tar.gz tftpd.rc tftpd.conf LICENSE) +md5sums=('1ae813a94670f0d8c294aafa9f5ecf65' 'a974d02526f19222146c8e3d3b598871'\ + '414a79dc891bced056d99a9bb790fc9e' '6ce21e27b6fdc1a1adf85c81e42aeecf') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 + make || return 1 + make INSTALLROOT="${pkgdir}" install || return 1 + install -d "${pkgdir}/etc/rc.d" + install -d "${pkgdir}/var/tftpboot" + install -m755 "${srcdir}/tftpd.rc" "${pkgdir}/etc/rc.d/tftpd" || return 1 + install -D -m644 "${srcdir}/tftpd.conf" "${pkgdir}/etc/conf.d/tftpd" || return 1 + rm "${pkgdir}/usr/share/man/man8/tftpd.8" + install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/abs/core/tftp-hpa/tftpd.conf b/abs/core/tftp-hpa/tftpd.conf new file mode 100644 index 0000000..4705cc3 --- /dev/null +++ b/abs/core/tftp-hpa/tftpd.conf @@ -0,0 +1,4 @@ +# +# Parameters to be passed to TFTPD +# +TFTPD_ARGS="-l -s /var/tftpboot" diff --git a/abs/core/tftp-hpa/tftpd.rc b/abs/core/tftp-hpa/tftpd.rc new file mode 100755 index 0000000..b21f87f --- /dev/null +++ b/abs/core/tftp-hpa/tftpd.rc @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +TFTPD_ARGS= +[ -f /etc/conf.d/tftpd ] && . /etc/conf.d/tftpd + +PID=$(pidof -o %PPID /usr/sbin/in.tftpd) +case "$1" in + start) + stat_busy "Starting TFTPD" + [ -z "$PID" ] && /usr/sbin/in.tftpd ${TFTPD_ARGS} + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon in.tftpd + stat_done + fi + ;; + stop) + stat_busy "Stopping TFTPD" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon in.tftpd + stat_done + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core/tiacx/PKGBUILD b/abs/core/tiacx/PKGBUILD index d1bffc7..a55fb12 100644 --- a/abs/core/tiacx/PKGBUILD +++ b/abs/core/tiacx/PKGBUILD @@ -1,22 +1,25 @@ -# $Id: PKGBUILD 5944 2008-07-21 20:26:41Z thomas $ +# $Id: PKGBUILD 22506 2008-12-26 22:54:41Z tpowa $ # Maintainer: James Rayner pkgname=tiacx pkgver=20080210 -pkgrel=6 +pkgrel=10 pkgdesc="OpenSource module for Texas Instruments ACX100/ACX111 wireless chips. For stock arch 2.6 kernel" arch=(i686 x86_64) url="http://acx100.sourceforge.net/" license=('MPL') -depends=('wireless_tools' 'kernel26>=2.6.26-1' 'kernel26<2.6.27' 'tiacx-firmware') +depends=('wireless_tools' 'kernel26>=2.6.28' 'kernel26<2.6.29' 'tiacx-firmware') install=acx.install -source=(http://downloads.sourceforge.net/sourceforge/acx100/acx-$pkgver.tar.bz2) -md5sums=('7d5ce3215708e4e9f95cf567a9ee3a12') +source=(http://downloads.sourceforge.net/sourceforge/acx100/acx-$pkgver.tar.bz2 + kernel-2.6.27.patch) +md5sums=('7d5ce3215708e4e9f95cf567a9ee3a12' + '9895f72f8d0c84956b0f6c3b16df0fe8') -_kernver=2.6.26-ARCH +_kernver=2.6.28-LinHES build() { cd $startdir/src/acx-$pkgver + patch -Np1 -i ../kernel-2.6.27.patch || return 1 make -C /lib/modules/${_kernver}/build M=`pwd` || return 1 install -D acx.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/net/wireless/tiacx/acx.ko sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install diff --git a/abs/core/tiacx/acx.install b/abs/core/tiacx/acx.install index 09a0d0d..8d11348 100644 --- a/abs/core/tiacx/acx.install +++ b/abs/core/tiacx/acx.install @@ -1,20 +1,20 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the new package version # arg 2: the old package version post_upgrade() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core/tiacx/kernel-2.6.27.patch b/abs/core/tiacx/kernel-2.6.27.patch new file mode 100644 index 0000000..f0c114b --- /dev/null +++ b/abs/core/tiacx/kernel-2.6.27.patch @@ -0,0 +1,82 @@ +diff -Nur acx-20080210.orig/ioctl.c acx-20080210/ioctl.c +--- acx-20080210.orig/ioctl.c 2008-02-10 21:06:42.000000000 +0100 ++++ acx-20080210/ioctl.c 2008-10-10 17:07:32.000000000 +0200 +@@ -489,6 +489,7 @@ + static char* + acx_s_scan_add_station( + acx_device_t *adev, ++ struct iw_request_info *info, + char *ptr, + char *end_buf, + struct client *bss) +@@ -503,14 +504,14 @@ + iwe.u.ap_addr.sa_family = ARPHRD_ETHER; + MAC_COPY(iwe.u.ap_addr.sa_data, bss->bssid); + acxlog_mac(L_IOCTL, "scan, station address: ", bss->bssid, "\n"); +- ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_ADDR_LEN); ++ ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_ADDR_LEN); + + /* Add ESSID */ + iwe.cmd = SIOCGIWESSID; + iwe.u.data.length = bss->essid_len; + iwe.u.data.flags = 1; + log(L_IOCTL, "scan, essid: %s\n", bss->essid); +- ptr = iwe_stream_add_point(ptr, end_buf, &iwe, bss->essid); ++ ptr = iwe_stream_add_point(info, ptr, end_buf, &iwe, bss->essid); + + /* Add mode */ + iwe.cmd = SIOCGIWMODE; +@@ -520,7 +521,7 @@ + else + iwe.u.mode = IW_MODE_ADHOC; + log(L_IOCTL, "scan, mode: %d\n", iwe.u.mode); +- ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_UINT_LEN); ++ ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_UINT_LEN); + } + + /* Add frequency */ +@@ -528,7 +529,7 @@ + iwe.u.freq.m = acx_channel_freq[bss->channel - 1] * 100000; + iwe.u.freq.e = 1; + log(L_IOCTL, "scan, frequency: %d\n", iwe.u.freq.m); +- ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_FREQ_LEN); ++ ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_FREQ_LEN); + + /* Add link quality */ + iwe.cmd = IWEVQUAL; +@@ -546,7 +547,7 @@ + iwe.u.qual.updated = 7; + log(L_IOCTL, "scan, link quality: %d/%d/%d\n", + iwe.u.qual.level, iwe.u.qual.noise, iwe.u.qual.qual); +- ptr = iwe_stream_add_event(ptr, end_buf, &iwe, IW_EV_QUAL_LEN); ++ ptr = iwe_stream_add_event(info, ptr, end_buf, &iwe, IW_EV_QUAL_LEN); + + /* Add encryption */ + iwe.cmd = SIOCGIWENCODE; +@@ -556,7 +557,7 @@ + iwe.u.data.flags = IW_ENCODE_DISABLED; + iwe.u.data.length = 0; + log(L_IOCTL, "scan, encryption flags: %X\n", iwe.u.data.flags); +- ptr = iwe_stream_add_point(ptr, end_buf, &iwe, bss->essid); ++ ptr = iwe_stream_add_point(info, ptr, end_buf, &iwe, bss->essid); + + /* add rates */ + iwe.cmd = SIOCGIWRATE; +@@ -570,7 +571,7 @@ + if (rate & 1) { + iwe.u.bitrate.value = *p * 500000; /* units of 500kb/s */ + log(L_IOCTL, "scan, rate: %d\n", iwe.u.bitrate.value); +- ptr_rate = iwe_stream_add_value(ptr, ptr_rate, end_buf, ++ ptr_rate = iwe_stream_add_value(info, ptr, ptr_rate, end_buf, + &iwe, IW_EV_PARAM_LEN); + } + rate >>= 1; +@@ -625,7 +626,7 @@ + for (i = 0; i < ARRAY_SIZE(adev->sta_list); i++) { + struct client *bss = &adev->sta_list[i]; + if (!bss->used) continue; +- ptr = acx_s_scan_add_station(adev, ptr, ++ ptr = acx_s_scan_add_station(adev, info, ptr, + extra + IW_SCAN_MAX_DATA, bss); + } + dwrq->length = ptr - extra; diff --git a/abs/core/tk/ChangeLog b/abs/core/tk/ChangeLog index 83abeb6..fc2998f 100644 --- a/abs/core/tk/ChangeLog +++ b/abs/core/tk/ChangeLog @@ -1,16 +1,21 @@ -2008-08-20 Allan McRae +2008-12-24 Allan McRae + * 8.5.6-1 : + new upstream release + +2008-10-16 Allan McRae + * 8.5.5-1 : + new upstream release +2008-08-20 Allan McRae * 8.5.4-2 : Remove xproto compatibility patch as no longer needed -2008-08-16 Allan McRae - +2008-08-16 Allan McRae * 8.5.4-1 : new upstream release FHS man pages -2008-07-01 Allan McRae - +2008-07-01 Allan McRae * 8.5.3-1 : new upstream release added patch for xproto-7.0.13 compatibility diff --git a/abs/core/tk/PKGBUILD b/abs/core/tk/PKGBUILD index 80299e6..3c75949 100644 --- a/abs/core/tk/PKGBUILD +++ b/abs/core/tk/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 9873 2008-08-20 08:29:04Z allan $ +# $Id: PKGBUILD 22248 2008-12-24 10:55:13Z allan $ # Maintainer: Allan McRae # Contributor: Judd Vinet pkgname=tk -pkgver=8.5.4 -pkgrel=2 +pkgver=8.5.6 +pkgrel=1 pkgdesc="A windowing toolkit for use with tcl" arch=('i686' 'x86_64') url="http://tcl.sourceforge.net/" license=('custom') depends=("tcl=${pkgver}" 'libxss' 'libxft') source=(http://downloads.sourceforge.net/sourceforge/tcl/tk${pkgver}-src.tar.gz) -md5sums=('a6aee7653566ec0b7c4b0f4c24a96f20') +md5sums=('7da2e00adddc7eed6080df904579d94e') build() { cd ${srcdir}/tk${pkgver}/unix diff --git a/abs/core/transcode/PKGBUILD b/abs/core/transcode/PKGBUILD new file mode 100644 index 0000000..4535bce --- /dev/null +++ b/abs/core/transcode/PKGBUILD @@ -0,0 +1,67 @@ +# $Id: PKGBUILD 26150 2009-02-03 03:22:44Z eric $ +# Contributor: Sarah Hay +# Maintainer: roberto + +pkgname=transcode +_sripver=0.3-4 +pkgver=1.1.0 +pkgrel=6 +pkgdesc="Transcode is a video/DVD ripper and encoder for the terminal/console." +arch=(i686 x86_64) +license=('GPL2') +depends=('imagemagick>=6.4.8.10' 'lzo2' 'libdv' 'libdvdread' 'ffmpeg>=20081220' 'mjpegtools' \ + 'xvidcore' 'libmpeg2' 'libtheora' 'libxaw' 'x264>=20090108' 'libxml2' \ + 'libxv' 'a52dec') +makedepends=('nasm') +install=transcode.install +url="http://transcoding.org" +options=(!libtool !makeflags) +source=(http://fromani.exit1.org/${pkgname}-${pkgver}.tar.bz2 \ + http://downloads.sourceforge.net/sourceforge/subtitleripper/subtitleripper-${_sripver}.tgz) +md5sums=('5ca205e32b546402a48ea8004a7b3232' 'c0bd49a88f667c68c4430ad25bbed510') + +build() { + cd $startdir/src/$pkgname-$pkgver + sed -i 's|ffmpeg/avcodec.h|libavcodec/avcodec.h|' import/{import_ffmpeg.c,decode_lavc.c} || return 1 + sed -i 's|ffmpeg/avcodec.h|libavcodec/avcodec.h|' export/{aud_aux.c,export_ffmpeg.c,ffmpeg_cfg.h} || return 1 + sed -i 's|ffmpeg/avcodec.h|libavcodec/avcodec.h|' filter/filter_resample.c || return 1 + autoconf || return 1 + + # building from here + ./configure --prefix=/usr --enable-deprecated \ + --enable-sse=no --enable-sse2=no --enable-altivec=no --enable-mmx \ + --enable-avifile=no --enable-lame --enable-ogg --enable-vorbis --enable-theora \ + --enable-libdv --enable-a52-default-decoder --enable-libxml2 --enable-v4l \ + --enable-imagemagick --enable-libjpeg --enable-lzo --enable-mjpegtools \ + --enable-sdl --enable-freetype2 --enable-a52 --enable-libpostproc \ + --with-libxml2-prefix=/usr \ + --with-mjpegtools-prefix=/usr \ + --with-imagemagick-prefix=/usr \ + --with-libdv-includes=/usr \ + --with-libpostproc-includes=/usr/include/libpostproc \ + --with-ogg-prefix=/usr \ + --with-lame-libs=/usr \ + --with-lzo-libs=/usr/lib \ + --with-libavcodec-prefix=/usr \ + --with-libavcodec-includes=/usr/include \ + --with-libavcodec-libs=/usr/lib + make || return 1 + make DESTDIR=$startdir/pkg install + ############################################################################## + # this imports the latest subtitleripper sources and replaces the internal +### rm -rf $startdir/src/$pkgname-$pkgver/contrib/subrip + mkdir $startdir/src/$pkgname-$pkgver/contrib + tar xzf ../subtitleripper-$_sripver.tgz -C $startdir/src/$pkgname-$pkgver/contrib + mv $startdir/src/$pkgname-$pkgver/contrib/subtitleripper \ + $startdir/src/$pkgname-$pkgver/contrib/subrip + # removes dependency on libppm, make it dependend on netpbm just failed, argh... + sed -i 's|^\(.*lppm.*\)$|#\1|' contrib/subrip/Makefile + sed -i 's|^\(.*D_HAVE_LIB_PPM.*\)$|#\1|' contrib/subrip/Makefile + cd contrib/subrip + make + install -m 755 pgm2txt $startdir/pkg/usr/bin/ + install -m 755 srttool $startdir/pkg/usr/bin/ + install -m 755 subtitle2pgm $startdir/pkg/usr/bin/ + install -m 755 subtitle2vobsub $startdir/pkg/usr/bin/ + install -m 755 vobsub2pgm $startdir/pkg/usr/bin/ +} diff --git a/abs/core/transcode/transcode.install b/abs/core/transcode/transcode.install new file mode 100644 index 0000000..9858c32 --- /dev/null +++ b/abs/core/transcode/transcode.install @@ -0,0 +1,6 @@ +post_install() { +echo ">>" +echo ">> Transcode currently does not work with divx4linux. Please" +echo ">> use xvid(core) instead." +echo ">>" +} diff --git a/abs/core/ttf-bitstream-vera/PKGBUILD b/abs/core/ttf-bitstream-vera/PKGBUILD new file mode 100644 index 0000000..d802ca4 --- /dev/null +++ b/abs/core/ttf-bitstream-vera/PKGBUILD @@ -0,0 +1,22 @@ +# $Id +# Maintainer: dorphell + +pkgname=ttf-bitstream-vera +pkgver=1.10 +pkgrel=5 +pkgdesc="Bitstream vera fonts" +arch=(i686 x86_64) +license=(custom) +url="http://www.gnome.org/fonts" +depends=(fontconfig xorg-fonts-encodings xorg-font-utils) +install=vera.install +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/1.10/${pkgname}-${pkgver}.tar.bz2) +md5sums=(bb22bd5b4675f5dbe17c6963d8c00ed6) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + mkdir -p ${startdir}/pkg/usr/share/fonts/TTF + install -m644 *.ttf ${startdir}/pkg/usr/share/fonts/TTF/ + mkdir -p ${startdir}/pkg/usr/share/licenses/custom/ttf-bitstream-vera + install -m644 COPYRIGHT.TXT ${startdir}/pkg/usr/share/licenses/custom/ttf-bitstream-vera/license.txt +} diff --git a/abs/core/ttf-bitstream-vera/vera.install b/abs/core/ttf-bitstream-vera/vera.install new file mode 100644 index 0000000..4f5212e --- /dev/null +++ b/abs/core/ttf-bitstream-vera/vera.install @@ -0,0 +1,20 @@ +post_install() { + echo -n "Updating font cache... " + fc-cache -f > /dev/null + mkfontscale /usr/share/fonts/TTF + mkfontdir /usr/share/fonts/TTF + echo "done." +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} + +op=$1 +shift + +$op $* diff --git a/abs/core/ttf-dejavu/ChangeLog b/abs/core/ttf-dejavu/ChangeLog index 5c02e9f..b3cf284 100644 --- a/abs/core/ttf-dejavu/ChangeLog +++ b/abs/core/ttf-dejavu/ChangeLog @@ -1,3 +1,13 @@ +2008-12-22 Alexander Fehr + + * ttf-dejavu-2.28-1: + New upstream release. + +2008-11-26 Alexander Fehr + + * ttf-dejavu-2.27-1: + New upstream release. + 2008-07-29 Alexander Fehr * ttf-dejavu-2.26-1: diff --git a/abs/core/ttf-dejavu/PKGBUILD b/abs/core/ttf-dejavu/PKGBUILD index 5cbbecc..93356a5 100644 --- a/abs/core/ttf-dejavu/PKGBUILD +++ b/abs/core/ttf-dejavu/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 7356 2008-07-31 01:07:11Z alexanderf $ +# $Id: PKGBUILD 22203 2008-12-22 23:29:26Z alexanderf $ # Maintainer: Alexander Fehr # Contributor: Jan de Groot # Contributor: Michal Krenek pkgname=ttf-dejavu -pkgver=2.26 +pkgver=2.28 pkgrel=1 pkgdesc="Font family based on the Bitstream Vera Fonts with a wider range of characters" arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ license=('custom') depends=('fontconfig' 'xorg-fonts-encodings') install=ttf-dejavu.install source=(http://downloads.sourceforge.net/dejavu/dejavu-fonts-ttf-$pkgver.tar.bz2) -md5sums=('bff450e8c1b3c9a3f38294ac44d81adc') +md5sums=('10002ae52fbad207641d1fd2bf9bf4b8') build() { cd "$srcdir/dejavu-fonts-ttf-$pkgver" diff --git a/abs/core/tweaker/PKGBUILD b/abs/core/tweaker/PKGBUILD new file mode 100644 index 0000000..79fc20d --- /dev/null +++ b/abs/core/tweaker/PKGBUILD @@ -0,0 +1,43 @@ +pkgname=tweaker +pkgver=1 +pkgrel=55 +pkgdesc="applies tweaks to the baseline configuration and attempts to optimize settings for the hardware it finds" +arch=('i686' 'x86_64') + +depends=('bash' 'perl' 'perl-dbi' 'perl-exception-class' 'perl-log-log4perl' 'perl-log-dispatch' 'perl-getopt-lucid' 'perl-list-member' 'perl-class-data-inheritable' 'perl-devel-stacktrace' 'perl-xml-twig') + +source=(tweaker.sh log4perl.conf) + +license=('GPL2') +#groups=('pvr') + + +install=tweaker.install +build() { + TWEAKER_ROOT=usr/LH/tweaker + mkdir -p $startdir/pkg/$TWEAKER_ROOT + mkdir -p $startdir/pkg/$TWEAKER_ROOT/{bin,fs,tcf} + mkdir -p $startdir/pkg/etc/profile.d + mkdir -p $startdir/pkg/usr/lib/perl5/vendor_perl/Tweaker/ + + cd $startdir + # executables + install -m0777 -D bin/* $startdir/pkg/$TWEAKER_ROOT/bin + + # parallel root directory structure used for seeding configuration files + # Ensure shell variables are configured at start; ensure $TWEAKER_ROOT/bin is in $PATH + cp -rp fs $startdir/pkg/$TWEAKER_ROOT/ + chmod -R 0777 $startdir/pkg/$TWEAKER_ROOT/ + + # Tweaker configuration files + install -m0555 -D tcf/* $startdir/pkg/$TWEAKER_ROOT/tcf + + # Tweaker-centric log4perl configuration + #install -m0755 log4perl.conf $startdir/pkg/etc/log4perl.conf + install -m0755 log4perl.conf $startdir/pkg/$TWEAKER_ROOT + + install -m0755 tweaker.sh $startdir/pkg/etc/profile.d/tweaker.sh + + # Copy our tweaker Perl modules for general use + install -m0555 lib/Tweaker/* $startdir/pkg/usr/lib/perl5/vendor_perl/Tweaker/ +} diff --git a/abs/core/tweaker/bin/LocalIPCheck.pl b/abs/core/tweaker/bin/LocalIPCheck.pl new file mode 100755 index 0000000..b744fb6 --- /dev/null +++ b/abs/core/tweaker/bin/LocalIPCheck.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl + +# Valid private IP ranges + +my @LOCAL_IP_RANGES = ("10.0.0.0", "10.255.255.255", + "172.16.0.0", "172.31.255.255", + "192.168.0.0", "192.168.255.255"); + +# input: A dotted quad IP address. + +# output: 0 if a public (internet) address +# : 8 if a class A private (LAN) address +# : 12 if a class B private (LAN) address +# : 16 if a class C private (LAN) address + +sub get_IP_number () { + my ($dotted_quad) = @_; + my $IP_number=0; + + split(/\./, $dotted_quad); + + for (my $i=0; $i < 4; $i++) { + $IP_number=$IP_number+@_[3-$i]*(2**(8*$i)); + } + return $IP_number; +} + +while(<>) { + chop; + my $IPnumber=&get_IP_number($_); + my $class=16; + + while (@LOCAL_IP_RANGES) { + my $highIPnumber = &get_IP_number(pop(@LOCAL_IP_RANGES)); + my $lowIPnumber = &get_IP_number(pop(@LOCAL_IP_RANGES)); + + if (($lowIPnumber <= $IPnumber) && ($highIPnumber >= $IPnumber)) { + exit($class); # PRIVATE IP + } else { + $class += 4; + } + } +} + +exit(0); # PUBLIC IP + + diff --git a/abs/core/tweaker/bin/SQLtweaker.sh b/abs/core/tweaker/bin/SQLtweaker.sh new file mode 100755 index 0000000..5760e5d --- /dev/null +++ b/abs/core/tweaker/bin/SQLtweaker.sh @@ -0,0 +1,86 @@ +# This isn't to be run. Do not chmod it +x and try - it won't do anything. + +# This function will change or create entries in various tables within +# the mythconverg database. +# If the key value already exists in $SQL_FILENAME, then it is changed. Otherwise, +# it will create the necessary SQL to make the entry if it does not exist. +# +# For the purposes of this function, a key is defined as any unique string of text +# after which a comma and a value or values follow. E.g.: +# in an entry like this: +# INSERT INTO `videotypes` VALUES (6,'mpeg','',0,1); +# we can define the key as "6" if we wanted, but that would be ambiguous. So we can instead +# define it as "6,'mpeg'" and we gain the ability to control the values of the fields after +# the first two. So this function call +# +# ChangeOrMakeEntry "6,'mpeg'" "'mplayer -fs -zoom', 0,1" "videotypes" +# +# would change the above SQL entry into this: +# +# INSERT INTO `videotypes` VALUES (6,'mpeg','mplayer -fs -zoom', 0,1); + +# parameters: name, value, table + +# Some tables have simple key, value pairs. Others have several potential keys and values. +# The 'settings' table is a simple key, value pair table, plus the name of the system on which +# the settings hold true, e.g.: +# INSERT INTO `settings` VALUES ('FooHat','Peas with sauce:drizzle','MythTVhost'); +### +function ChangeOrMakeEntry { + NAME=$1 ; shift + VALUE=$1 ; shift + TABLE=$1 ; shift + + if [ `grep -c "$NAME" $SQL_FILENAME` == 0 ]; then + # There is no setting for $SETTING_NAME, so we need to make it + echo "INSERT INTO \`$TABLE\`" VALUES \($NAME,$VALUE\)\; >> $SQL_FILENAME + else + # There is a setting for $SETTING_NAME, so make sure it's what we want it to be. + sed -i "s@$NAME,.*);@$NAME,$VALUE);@" $SQL_FILENAME + fi +} + +# shortcut function to ChangeOrMakeEntry for 'settings' table +function ChangeOrMakeSetting { + NAME=$1 ; shift + VALUE=$1 ; shift + + ChangeOrMakeEntry "$NAME" "$VALUE, 'MythTVhost'" "settings" +} + +# shortcut function to ChangeOrMakeEntry for 'settings' table +function ChangeOrMakeKeybinding { + NAME=$1 ; shift + VALUE=$1 ; shift + + ChangeOrMakeEntry "$NAME" "$VALUE, 'MythTVhost'" "keybindings" +} + +# This only works for North America at the moment. +LocaleCode() { # no arguments. Obtain a zipcode or locale, either using + # SchedulesDirect subscription info or by asking the user. + + mysqldump --tab=/tmp --opt mythconverg videosource + # Get the first data direct "Video Source" + dd_src=$(awk -F'\t' '$3 == "schedulesdirect1" {print $0; exit 0;}' .*<\/userName>/$SCHEDULESDIRECT_USERNAME<\/userName>/" xtvd.xml + sed -i "s/.*<\/password>/$SCHEDULESDIRECT_PASSWORD<\/password>/" xtvd.xml + datadirect-parse.pl &> /dev/null + + SQL_LocaleCode=`grep -i postalCode \`ls -1tr *xml | tail -1\` | perl -e '%zips=""; while(<>) { split(/postalCode=/); @_[1] =~ m/(\d{5})/; if ($1) { $zips{$1}=$1; } } @keys = keys %zips; if ($#keys == 1) { print values %zips,"\n"; }'` + + if [ "$SQL_LocaleCode" == "" ]; then # zipcode was ambiguous or was not extractable + echo -e "\nPlease enter your US zipcode or Canadian Postal Code:" + read SQL_LocaleCode + fi + echo $SQL_LocaleCode > /tmp/locale.txt # remember this just long enough to make use of it in PostSQLTweaker.sh + fi +} diff --git a/abs/core/tweaker/bin/create-linhes-sql.sh b/abs/core/tweaker/bin/create-linhes-sql.sh new file mode 100755 index 0000000..478eed0 --- /dev/null +++ b/abs/core/tweaker/bin/create-linhes-sql.sh @@ -0,0 +1,166 @@ +#!/bin/bash + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# PURPOSE: +# -------------------------- +# This script automates the creation of a new LinHES.sql based +# on the contents of the current mythconverg database. + +if [ `whoami` != "root" ]; then + echo "This script must be run as root." + exit -1 +fi + +# Every file we may create, edit, or delete +########################################### +export LINHES_SQL_PROTOTYPE=/data/database/LinHES.sql-new +export MYTHTV_SQL_OLD=/data/database/LinHES.sql-backup +export TMPFILE=/tmp/LinHES.sql-tmp + +echo "" +echo " ** ONLY CESMAN SHOULD EVER NEED TO RUN THIS SCRIPT **" +echo "" +echo " WARNING: This will archive your mythconverg database to a file," +echo " then delete mythconverg from MySQL. It will then launch mythbackend" +echo " to repopulate mythconverg, with a goal of creating the smallest-possible" +echo " mythconverg database that MythTV can load without complanining." +echo " Every attempt will be made to restore your original database, but" +echo " ***no guarantee is made***." +echo "" +echo " ** ONLY CESMAN SHOULD EVER NEED TO RUN THIS SCRIPT **" +echo "" + +echo -n "Proceed? [y|N] " +read FEAR + +if [ "$FEAR" != "y" ] && [ "$FEAR" != "Y" ]; then + echo "***NO OPERATION WILL BE PERFORMED***" + exit +fi + +# Archive the current mythconverg table from the MySQL database: +echo "DROP DATABASE IF EXISTS mythconverg; CREATE DATABASE mythconverg; USE mythconverg;" > $MYTHTV_SQL_OLD +mysqldump mythconverg >> $MYTHTV_SQL_OLD + +# delete the mythconverg database from MySQL +killall mythbackend +mysql -e "DROP DATABASE IF EXISTS mythconverg; CREATE DATABASE mythconverg;" + +mythtv-setup --geometry 640x480 2>&1 > /dev/null & + +echo "*" +echo "* 1) PICK ANY LANGUAGE WHEN PROMPTED." +echo "* 2) AGREE TO THE SCHEMA UPGRADE." +echo "* 3) PRESS ENTER HERE WHEN THE MYTHTV-SETUP MENU LAUNCHES." +echo "*" +read KEYPRESS + +mysql -e "USE mythconverg; \ +INSERT INTO settings VALUES ('SecurityPin','0000','"`hostname`"'); \ +INSERT INTO settings VALUES ('BackendServerIP','127.0.0.1','"`hostname`"'); \ +INSERT INTO storagegroup VALUES ('\N', 'Default','"`hostname`"','/');" + +echo "*" +echo "* 1) EXIT MYTHTV-SETUP" +echo "* 2) PRESS ENTER HERE WHEN READY TO CONTINUE." +echo "*" +read KEYPRESS + +# let mythbackend repopulate mythconverg from scratch +mythbackend 2>&1 > /dev/null & +sleep 3 + +mythfrontend --geometry 640x480 2>&1 > /dev/null & +echo "*" +echo "* 1) EXIT MYTHFRONTEND" +echo "* 2) PRESS ENTER HERE WHEN READY TO CONTINUE." +echo "*" +read KEYPRESS + +killall mythfrontend +killall mythbackend + +# save off the mostly-pristine MythTV myconverg database +# (It would be 100% pristine, but mythbackend won't run unless BackendServerIP is given a value, +# and both mythtv-setup and the mythfrontend won't proceed until you've picked a language.) + +# Edit the pristine MythTV mythconverg database so that we can use it to prime +# the database during a semi-automated LinHES installation. + +SQL_FILENAME=$LINHES_SQL_PROTOTYPE + +# load our library functions +. /usr/LH/tweaker/bin/SQLtweaker.sh +# +echo "*" +echo "* Writing $LINHES_SQL_PROTOTYPE..." +echo "*" +# +echo "/*" > $LINHES_SQL_PROTOTYPE +echo " * MythTV raw SQL creation file." >> $LINHES_SQL_PROTOTYPE +echo " */" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE +echo "-- #################################################################### --" >> $LINHES_SQL_PROTOTYPE +echo "-- Drop any initial database:" >> $LINHES_SQL_PROTOTYPE +echo "DROP DATABASE IF EXISTS mythconverg;" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE +echo "-- #################################################################### --" >> $LINHES_SQL_PROTOTYPE +echo "-- Create an empty new database:" >> $LINHES_SQL_PROTOTYPE +echo "CREATE DATABASE mythconverg;" >> $LINHES_SQL_PROTOTYPE +echo "GRANT ALL ON mythconverg.* TO mythtv@localhost IDENTIFIED BY \"mythtv\";" >> $LINHES_SQL_PROTOTYPE +echo "FLUSH PRIVILEGES;" >> $LINHES_SQL_PROTOTYPE +echo "GRANT CREATE TEMPORARY TABLES ON mythconverg.* TO mythtv@localhost IDENTIFIED BY \"mythtv\";" >> $LINHES_SQL_PROTOTYPE +echo "FLUSH PRIVILEGES;" >> $LINHES_SQL_PROTOTYPE +echo "USE mythconverg;" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE +echo "-- #################################################################### --" >> $LINHES_SQL_PROTOTYPE +echo "-- Create all the tables:" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE + +# Dump the database, removing all unneeded DB inserts - when LinHES launches mythtv-setup and mythfrontend, +# anything undefined will be given default values by the applications, except for the INSERTs below. +mysqldump mythconverg | sed -e "s/`hostname`/MythTVhost'/g" -e "s/AUTO_INCREMENT=[0-9]* //g" > $TMPFILE +grep -v "INSERT INTO" $TMPFILE >> $LINHES_SQL_PROTOTYPE +sed "s/,(/,\n(/g" $TMPFILE | grep DBSchema | sed "s/\(.*\)NULL),/INSERT INTO settings VALUES \1'MythTVhost');/g" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('SecurityPin','0000','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('BackendServerIP','127.0.0.1','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('MasterServerIP','127.0.0.1','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('MasterServerPort','6543','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('Theme', 'LinHES','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('HostMyhostname', 'type_hostname_here','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO storagegroup VALUES ('\N', 'Default','MythTVhost','/');" >> $LINHES_SQL_PROTOTYPE + +rm $TMPFILE + +# +echo "*" +echo "...DONE" +echo "*" +# + +echo "*" +echo "* PRESS ENTER HERE WHEN READY TO RESTORE THE OLD DATABASE" +echo "* AND RE-LAUNCH MYTHBACKEND" +echo "*" +read KEYPRESS + +# +echo "Restoring original database from $MYTHTV_SQL_OLD..." +# +# Restore the original mythconverg database +cat $MYTHTV_SQL_OLD | mysql 2>&1 > /dev/null +# +echo "...DONE" +# + +# +echo "restarting mythbackend..." +# +mythbackend & +# +echo "...DONE" +# diff --git a/abs/core/tweaker/bin/tweaker.pl b/abs/core/tweaker/bin/tweaker.pl new file mode 100755 index 0000000..28519df --- /dev/null +++ b/abs/core/tweaker/bin/tweaker.pl @@ -0,0 +1,333 @@ +#!/usr/bin/perl -w + +# Copyright 2007, 2008 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +package Tweaker; + +use strict; +use Getopt::Lucid qw( :all ); +# see http://search.cpan.org/~dagolden/Getopt-Lucid-0.16/lib/Getopt/Lucid.pm for usage details +use XML::Twig; +# see http://xmltwig.com for usage details +use Log::Log4perl qw(get_logger); + +# see http://search.cpan.org/~mschilli/Log-Log4perl-1.14/lib/Log/Log4perl.pm for usage details +# http://www.perl.com/pub/a/2002/09/11/log4perl.html is highly recommended as well + +use Tweaker::Script; +use Tweaker::Definitions; + +# To install the above modules: +# -- +# sudo cpan install Getopt::Lucid XML::Twig Log::Log4perl List::Member +# choose the defaults for all options, agree to install all dependencies +# Copy TweakerDefinitions.pm to /etc/perl + +use vars qw($debug); +use vars qw($interactivity); +use vars qw($logfile); +use vars qw($twig); + +my $bottom = Tweaker::Definitions::get_global_variable_value("bottom"); +my $optional = Tweaker::Definitions::get_global_variable_value("optional"); +my $minimal = Tweaker::Definitions::get_global_variable_value("minimal"); +my $null = Tweaker::Definitions::get_global_variable_value("null"); + +# As each tweak tag is processed, this subroutine is called. Here we will +# see if any previous tweak tag had the same name attribute. If so, we will +# replace the previous tweak tag with this new tweak tag's contents. +sub uniquify_tweaks { + my ($twig, $this_tweak) = @_; + my $tweak_name = $this_tweak->att('name'); + my $previous_tweak = $this_tweak->prev_sibling( qq{tweak[\@name="$tweak_name"]}); + my $logger = get_logger('tweaker'); + + # If the tweak's name is found elsewhere, replace the first + # instance with the latest one, then delete the latest one. + if ($previous_tweak) { + my $log_entry; + # Requirement 6.3.1 + $log_entry = sprintf("\tReplacing\n\t\t%s\n\twith\n\t\t%s\n", $previous_tweak->sprint, $this_tweak->sprint); + $logger->info($log_entry); + $this_tweak->cut; + $this_tweak->replace($previous_tweak); + } +} + +$twig = XML::Twig->new(load_DTD => 1, + expand_external_ents => 1, + twig_handlers => { 'tweak' => \&uniquify_tweaks } + ); + +# Requirement 4.2 +# Print advice on usage and invocation. +sub help () { + my $logger = get_logger('tweaker'); + $logger->fatal("USAGE:\n$0 --tcf file1.tcf [--tcf file2.tcf ...] [--help]"); + exit; +} + +sub print_tcf { + my(@tweaks) = @_; + my $logger = get_logger('tweaker'); + + $logger->debug(''); # print the XML declaration + $logger->debug(''); + $logger->debug(''); # then the root element start tag + + foreach my $tweak (@tweaks) { # the list of tweaks + $logger->debug($tweak->sprint); # print the xml content of the element + } + + $logger->debug("\n"); # close the document +} + +# For each tweak, invoke the option that was selected. +# Requirement 9.1.5 +# Requirement 13 +sub invoke_selected_options { + my @tweaks= $twig->root->children; # get the tweak list + my $logger = get_logger('tweaker'); + my $has_selected_option; + my $recommendationlevel = $bottom; + + foreach my $tweak (@tweaks) { # the list of tweaks + if ($tweak->att('name')) { + $has_selected_option=0; + $logger->debug("TWEAK ", $tweak->att('name')); + my @options = $tweak->descendants('option'); + foreach my $option (@options) { + if ($option->first_child('selected')) { + $has_selected_option++; + $recommendationlevel = $option->first_child('selected')->text; + $logger->info("\t", $tweak->att('name'), " : ", $option->att('name'), " is selected (recommendationlevel is ", $recommendationlevel, ")"); + # If the selected option is merely $optional, and we are in $minimal interactivity mode, we + # really don't know if this option is useful for the user. Just skip it. + if (($recommendationlevel == $optional) && ($interactivity eq $minimal)) { # UI Requirement 9.1.4 + $logger->debug("\tSKIPPING"); + next; + } elsif (($tweak->first_child('script')->text) && + ($tweak->first_child('script')->text) ne $null) { + $logger->debug("\tRUNNING"); + my $command = sprintf("%s --implement %s", $tweak->first_child('script')->text, $option->att('name')); + $logger->info("\t\tRunning '$command' to run a tweak."); + + open(COMMAND, "$command|"); + while() { # should only be one line of results + if ($_) { + $logger->debug("script returned text: ", $_); + } else { + $logger->debug("no return value from script"); + } + } + close(COMMAND); + } else { + $logger->debug("\tNO SCRIPT TO RUN"); + } + } + } + if ($has_selected_option == 0) { + $logger->debug("\tNO OPTION SELECTED"); + } + } + } +} + + +# Parses an XML file in TCF format, loading its information into memory. +# Rely on the DTD to mandate required tags. +sub parse_tcf { + my $this_tcf = shift(@_); + my $logger = get_logger('tweaker'); + + $logger->info("Parsing $this_tcf..."); + $twig->safe_parsefile($this_tcf) || $logger->fatal("Bad TCF $this_tcf: $@"); + if ($@) { + return 0; + } + # ??? For Requirement 5.1, we need to catch parse errors here + # $twig now has the parsed $this_tcf + $logger->info("DONE parsing $this_tcf"); + + my $root= $twig->root; # get the root of the twig (tcf) + my @tweaks= $root->children; # get the tweak list + + print_tcf(@tweaks) if $debug; + + return 1; # successfully parsed $this_tcf +} + +sub parse_core_tcf { + my ($core_tcf_pathname) = @_; + my $logger = get_logger('tweaker'); + + $logger->debug("core TCF pathname: $core_tcf_pathname"); + + # Requirement 5.1 + if (!(parse_tcf($core_tcf_pathname))) { + # Part of Requirement 6.4.1 + $logger->fatal("$0 requires at least one valid .tcf file."); + $logger->fatal("$core_tcf_pathname, or a .tcf that it includes, did not parse."); + exit; + } + # $twig->root->print; +} + +sub process_parameters () { + # Accept these parameters: + # -- + my @parameters = ( + Switch("help")->anycase, # Requirement 4.2 + Switch("debug")->anycase, + # part of Requirement 8 + Param("interactivity")->default($minimal), # side-effect of UI Requirement 9 for v0.7 + ); + + my $opt = Getopt::Lucid->getopt( \@parameters ); + my $help = $opt->get_help; + $debug = $opt->get_debug; + $interactivity = $opt->get_interactivity; + + if ($interactivity ne $minimal) { # side-effect of UI Requirement 9 for v0.7 + my $logger = get_logger('tweaker'); + $logger->warn("This version of Tweaker ignores requests for $interactivity interactivity and defaults to $minimal."); + $interactivity = $minimal; + } + + if ( $help > 0 ) { + help; + } +} + +# Requirement 6.6: Tweaker shall determine Recommendation Levels and default Options +# Requirements 6.6.1 and 6.6.2 +sub post_process_tweaks { + my $logger = get_logger('tweaker'); + + # Requirement 6.6.1 + + my $root= $twig->root; # get the root of the twig (tcf) + my @tweaks= $root->children; # get the tweak list + + foreach my $tweak (@tweaks) { + $logger->debug("#######"); + my @options = $tweak->descendants('option'); + + my $name_of_most_recommended_option=""; + my $most_recommended_option; + my $highest_recommendationlevel=$bottom; + + foreach my $option (@options) { + $logger->debug("===== OPTION"); + $logger->debug($option->sprint); + + my $recommendationlevel = $option->first_child('recommendationlevel'); + if ($recommendationlevel) { + # Requirement 6.6.1.1 + $logger->debug("\t+++"); + $logger->debug("\tUsing predefined recommendation level:", $recommendationlevel->text); + } else { + # Requirement 6.6.1.4 + my $result="optional"; + my $explanation=""; + + if (($tweak->first_child('script')->text) && + ($tweak->first_child('script')->text) ne $null) { + # Requirement 6.6.1.2 + $logger->debug("\t---"); + $logger->debug("\tThis has no defined recommendation level."); + + # Get the name of the script for this tweak and invoke it with the name of the option. + my $command = sprintf("%s --poll %s", $tweak->first_child('script')->text, $option->att('name')); + $logger->debug("\t\tRunning '$command' to see what it should be."); + # Create a recommendationlevel element and populate it with the script's return value. + + open(COMMAND, "$command|"); + while() { # should only be one line of results + $logger->debug("Got this: ", $_); + if ($_) { + chop; + my @text = split(/\|/); + $result = $text[0]; + if ($text[1]) { + $explanation = $text[1]; + } + } + } + close(COMMAND); + } + # Requirement 6.6.1.3 + $option->set_field ( 'recommendationlevel', $result ); + if ($explanation) { + $option->set_field ( 'explanation', $explanation ); + } + #$logger->debug("*** Paste results: ", $option->sprint); + } + # Requirement 6.6.2 : Auto-select the Option with the highest non-negative Recommendation Level. + # Requirement 6.6.2.1 : If there is a tie, Tweaker shall auto-select the first Option with the highest Recommendation Level. + $recommendationlevel = $option->first_child('recommendationlevel'); + if ($recommendationlevel) { + if ($name_of_most_recommended_option) { + $logger->debug("comparing ", $name_of_most_recommended_option, "'s recommendationlevel ($highest_recommendationlevel) to ", $recommendationlevel->text, " (",Tweaker::Definitions::get_global_variable_value($recommendationlevel->text),")"); + } else { + $logger->debug("considering recommendationlevel ", $recommendationlevel->text, " (",Tweaker::Definitions::get_global_variable_value($recommendationlevel->text),")"); + } + if (($highest_recommendationlevel < Tweaker::Definitions::get_global_variable_value($recommendationlevel->text)) + && (Tweaker::Definitions::get_global_variable_value($recommendationlevel->text) >= 0)) { + $highest_recommendationlevel = Tweaker::Definitions::get_global_variable_value($recommendationlevel->text); + $name_of_most_recommended_option = $option->att('name'); + $most_recommended_option = $option; + $logger->debug("now recommending: ", $name_of_most_recommended_option, " at level ", $highest_recommendationlevel); + } + } else { + $logger->error("No recommendationlevel defined for ", $option->att('name')); + } + # Select the best option, based on recommendation level + } + if ($most_recommended_option) { + $logger->debug("(1) BEST OPTION: ", $most_recommended_option->sprint); + $most_recommended_option->set_field ( 'selected', $highest_recommendationlevel ); + } + } +} + +sub main () { + my $tweaker_root; + + if (!($tweaker_root = Tweaker::Script::get_environment_variable("\$TWEAKER_ROOT"))) { + Log::Log4perl->easy_init(); + my $logger = get_logger(); + $logger->fatal("\$TWEAKER_ROOT not defined. Exiting."); + exit -1; + } + my $core_tcf_path = "$tweaker_root/tcf"; + my $core_tcf = "tweaker-core.tcf"; + my $core_tcf_pathname = "$core_tcf_path/$core_tcf"; + my $log4perl_conf = "$tweaker_root/log4perl.conf"; + + Log::Log4perl::init_and_watch($log4perl_conf,10); + + process_parameters; + parse_core_tcf($core_tcf_pathname); + post_process_tweaks; + # ??? need to add Requirement 11 here + invoke_selected_options; +} + +main; + +#my @tweaks= $twig->root->children; # get the tweak list +#print_tcf(@tweaks) if $debug; diff --git a/abs/core/tweaker/bin/twk_EXAMPLE.pl b/abs/core/tweaker/bin/twk_EXAMPLE.pl new file mode 100755 index 0000000..7dfb075 --- /dev/null +++ b/abs/core/tweaker/bin/twk_EXAMPLE.pl @@ -0,0 +1,134 @@ +# This is not an executable. It provides an example of how you would implement a +# Tweaker Script. For details on the functions provided by Tweaker::Script, +# such as execute_shell_command, get_environment_variable, connect_to_db, etc. +# see Tweaker/Script.pm +# +# See the corresponding EXAMPLE.tcf for the Tweak that would correspond to this script. + +# +# BEGIN EXAMPLE +# + +#!/usr/bin/perl -w + +# Copyright 2009 YOUR NAME HERE +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +# List all the options that this script supports. Make sure it matches what's in +# the corresponding .tcf entry. +set_known_options( 'option1', 'option2', 'option3' ); + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + # If you need a subroutine that is specific to the task of implementing an option, + # define it inside the above subroutine. + sub my_subroutune { + # ... + } + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + switch ($option) { + # List all the options that this script supports. You can have as many as you like. + case "option1" { + # Perform the actions necessary to implement option1. + # You may want to call do_query, change_or_make_setting, or change_or_make_entry to make changes to the MySQL database. + # You may want to call execute_shell_command to make changes from the shell. + } + case "option2" { + # Perform the actions necessary to implement option2. + # You may want to call do_query, change_or_make_setting, or change_or_make_entry to make changes to the MySQL database. + # You may want to call execute_shell_command to make changes from the shell. + } + case "option3" { + # Perform the actions necessary to implement option3. + # You may want to call do_query, change_or_make_setting, or change_or_make_entry to make changes to the MySQL database. + # You may want to call execute_shell_command to make changes from the shell. + } + } + } else { # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: Unable to connect to mythconverg database"); + $logger->error("ERROR: Unable to implement option $option."); + exit -1; # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + } # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + disconnect_from_db(); # You may not have to do this. It's only when you need to change MySQL settings for MythTV. +} + +# Poll the system to see what recommendationlevel the given option has on the system. +sub poll_options { + my($option) = @_; + + # If you need a subroutine that is specific to the task of implementing an option, + # define it inside the above subroutine. + sub my_subroutune { + # ... + } + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + switch ($option) { + # List all the options that this script supports. You can have as many as you like. + case "option1" { + # Perform the actions necessary to determine a recommendation level for option1. + # You may want to call do_query to query to the MySQL database. + # You may want to call execute_shell_command to check things in the shell. + # When you're done, you can use the recommendation_level subroutine to return the + # resulting recommendation level. + } + case "option2" { + # Perform the actions necessary to determine a recommendation level for option2. + # You may want to call do_query to query to the MySQL database. + # You may want to call execute_shell_command to check things in the shell. + # When you're done, you can use the recommendation_level subroutine to return the + # resulting recommendation level. + } + case "option3" { + # Perform the actions necessary to determine a recommendation level for option3. + # You may want to call do_query to query to the MySQL database. + # You may want to call execute_shell_command to check things in the shell. + # When you're done, you can use the recommendation_level subroutine to return the + # resulting recommendation level. + } + } + } else { # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + exit -1; # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + } # You may not have to do this. It's only when you need to change MySQL settings for MythTV. + disconnect_from_db(); # You may not have to do this. It's only when you need to change MySQL settings for MythTV. +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; # mandatory + +# +# END EXAMPLE +# diff --git a/abs/core/tweaker/bin/twk_RAM.pl b/abs/core/tweaker/bin/twk_RAM.pl new file mode 100755 index 0000000..2eea598 --- /dev/null +++ b/abs/core/tweaker/bin/twk_RAM.pl @@ -0,0 +1,81 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'low', 'medium', 'high' ); + +# ??? Need to make this update a class variable so it only ever needs to run once. +sub determine_RAM_size() { + my $result = execute_shell_command("cat /proc/meminfo | grep MemTotal"); + if ($result =~ m/.*MemTotal:\s*(\d+) .*/) { + return $1; + } + return 0; +} + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + # MythTV's GUI allows setting this value in multiples of 4700kB. + # We will arbitrarily set the HDRingbufferSize to the value that is closest to + # 3.3% of the total RAM. + my $RAM_size = determine_RAM_size(); + my $ringbuffer_size = int($RAM_size * 0.033 / 4700) * 4700; + change_or_make_setting('HDRingbufferSize', $ringbuffer_size) || exit -1; + + # change any existing mplayer cache setting to one based on available RAM size + # We will arbitrarily set the cache size to 1/16 of available RAM + my $cachesize = int($RAM_size / 16); + execute_shell_command("if [[ `grep -e cache.*=.*\$ /etc/mplayer/mplayer.conf` ]]; then sed -i 's/cache.*=.*/cache=$cachesize/g' /etc/mplayer/mplayer.conf; else echo 'cache=$cachesize' >> /etc/mplayer/mplayer.conf; fi") || exit -1; + + # If there's enough RAM, make mtd run by default. + # ??? unimplemented + } else { + exit -1; + } + disconnect_from_db(); +} + +# Poll the system to see what recommendationlevel the given option has on the system. +sub poll_options { + my($option) = @_; + my $fudge_factor = .985; + my $low_RAM = int($fudge_factor * 512*1024); # ~512MB + my $medium_RAM = int($fudge_factor * 1024*1024); # ~1GB + my $high_RAM = int($fudge_factor * 2048*1024); # ~2GB + + threshold_test($option, determine_RAM_size(), "RAM", $low_RAM, $medium_RAM, $high_RAM); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_audio.pl b/abs/core/tweaker/bin/twk_audio.pl new file mode 100755 index 0000000..47a2415 --- /dev/null +++ b/abs/core/tweaker/bin/twk_audio.pl @@ -0,0 +1,390 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'analogstereo', 'analogsurround', 'digital' ); + +# Poll the system to find the digital output device. +sub poll_for_digital_output_device { + my $card=-1; + my $device=-1; + my $poll_command = "aplay -l | grep card"; + + my @digital_matches = ( "digital", "IEC958" ); + + my $results = execute_shell_command($poll_command); + if ($results) { + foreach my $digital_match (@digital_matches) { + if ($results =~ /card (\d):.*device (\d).*$digital_match.*/i) { + $card = $1; + $device = $2; + } + } + } else { + recommendation_level("not available", "No audio devices detected."); + exit(-1); + } + return ($card, $device); +} + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + use vars qw($card); + use vars qw($device); + ($card, $device) = poll_for_digital_output_device; + use vars qw($asound_conf); + $asound_conf = "/etc/asound.conf"; + use vars qw($mplayer_conf); + $mplayer_conf = "/etc/mplayer/mplayer.conf"; + use vars qw($xine_conf); + $xine_conf = "/home/mythtv/.xine/config"; + + sub generate_asound_conf { + my($option) = @_; + my $command1; + my $command2; + + switch ($option) { + case "analogstereo" { + # Analog stereo usually needs no asound.conf, but sometimes it needs to be there to + # support more than one app using sound simultaneously. + $command1 = "[ -e $asound_conf ] && /bin/cp $asound_conf $asound_conf-TWEAKERBACKUP"; + # Assumption: The proper analog device is always device 0. + if ($card >= 0) { + $command2 = "[ -e $asound_conf ] && sed -i 's/hw:.,./hw:$card,0/g' $asound_conf"; + } else { + $command2 = "[ -e $asound_conf ] && sed -i 's/hw:.,./hw:0,0/g' $asound_conf"; + } + } + case "analogsurround" { + # Not supported yet. + } + case "digital" { + # Digital audio starts with an asound.conf that references the + # hardware address on the sound device corresponding to digital + # output. + $command1 = "/bin/cp \$TWEAKER_ROOT/fs$asound_conf /etc/"; + if (($card >= 0) && ($device >= 0)) { + $command2 = "[ -e $asound_conf ] && sed -i 's/hw:.,./hw:$card,$device/g' $asound_conf"; + } else { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: Unable to poll for digital sound output device."); + exit(-1); + } + } + } + if (my $error = execute_shell_command($command1)) { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + if (my $error = execute_shell_command($command2)) { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + my $logger = get_logger('tweaker.script'); + $logger->info("Generated $asound_conf for $option audio."); + } + + sub edit_mplayer_conf { + my($option) = @_; + # delete any old entries that Tweaker made, relevant to this particular edit + my $delete_old_tweaker_edits = "[ -e $mplayer_conf ] && sed -i '/^.*a[o,c,f].*=.*#TWEAKER/d' $mplayer_conf && sed -i '/^speed.*=.*#TWEAKER/d' $mplayer_conf"; + # comment out old entries that some other process may have made + my $comment_out_external_edits = "[ -e $mplayer_conf ] && sed -i 's/^\\(a[o,c,f].*=.*\\)/#\\1/g' $mplayer_conf && sed -i 's/^\\(speed.*=.*\\)/#\\1/g' $mplayer_conf"; + my $command1; + my $command2=""; + ($card, $device) = poll_for_digital_output_device; + my $logger = get_logger('tweaker.script'); + + if (my $error = execute_shell_command("$delete_old_tweaker_edits && $comment_out_external_edits")) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + switch($option) { + case "analogstereo" { + # No additional work needed; the above commands comment out ao and ac entries, + # leaving a baseline which works with analog stereo. + } + case "analogsurround" { + # Not supported yet. + } + case "digital" { + $command2 = "echo -e 'ac=hwac3,hwdts, #TWEAKER\nao=alsa:device=plughw=$card.$device #TWEAKER' >> $mplayer_conf"; + if (my $error = execute_shell_command($command2)) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + my @digital_audio_device_patterns = ( + [ + # Asus T3-M2NC51PV onboard audio + ".*0403.*10de.*026c.*1043.*821f", "T3-M2NC51PV", "[ -e $mplayer_conf ] && sed -i 's/plughw.* #TWEAKER/spdif #TWEAKER/g' $mplayer_conf" + ] + ); + + foreach my $pattern_and_workaround_command (@digital_audio_device_patterns) { + my $pattern=@$pattern_and_workaround_command[0]; + my $name=@$pattern_and_workaround_command[1]; + my $workaround_command=@$pattern_and_workaround_command[2]; + + if (execute_shell_command('lspci -mn | grep -e "'.$pattern.'"')) { + $logger->info("Applying workaround for $name audio"); + execute_shell_command($workaround_command); + last; + } + } + } + } + # for all options + $command2 = "echo -e 'af=scaletempo=stride=30:overlap=.50:search=10 #TWEAKER\nspeed=1.0 #TWEAKER' >> $mplayer_conf"; + if (my $error = execute_shell_command($command2)) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + $logger->info("Edited $mplayer_conf for $option audio."); + } + + sub edit_xine_conf { + my($option)=@_; + # delete any old entries that Tweaker made, relevant to this particular edit + my $delete_old_tweaker_edits = "[ -e $xine_conf ] && sed -i -e '/^.*audio.output.speaker_arrangement.*#TWEAKER/d' -e '/^.*audio.synchronization.passthrough_offset.*#TWEAKER/d' $xine_conf"; + # comment out entries that some other process may have made + my $comment_out_external_edits = "[ -e $xine_conf ] && sed -i -e 's/^\\(audio.output.speaker_arrangement.*\\)/#\\1/g' -e 's/^\\(audio.synchronization.passthrough_offset.*\\)/#\\1/g' $xine_conf"; + my $logger = get_logger('tweaker.script'); + + if (my $error = execute_shell_command("$delete_old_tweaker_edits && $comment_out_external_edits")) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + my $command1; + + switch($option) { + case "analogstereo" { + $command1 = "echo 'audio.output.speaker_arrangement:Stereo 2.0 #TWEAKER' >> $xine_conf"; + } + case "analogsurround" { + # Not supported yet. + } + case "digital" { + $command1 = "echo -e 'audio.output.speaker_arrangement:Pass Through #TWEAKER\naudio.synchronization.passthrough_offset:$device #TWEAKER' >> $xine_conf"; + } + } + if (my $error = execute_shell_command($command1)) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + $logger->info("Edited $xine_conf for $option audio."); + } + + sub reload_modules { + my($option) = @_; + my $command = "update-modules; depmod -a; rmmod snd-pcm-oss; modprobe snd-pcm-oss"; + my $logger = get_logger('tweaker.script'); + + if (my $error = execute_shell_command($command)) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + $logger->info("Reloaded sound modules for $option audio."); + } + + sub set_mixer_values { + my($option) = @_; + my $logger = get_logger('tweaker.script'); + + # Some sound devices work poorly in their default state, so we will load in a known-good + # state for them. + + my @digital_audio_device_patterns = ( + [ + # Chaintech AV-710 + ".*0401.*1412.*1724.*1412.*1724", "AV710" + ], + [ + # Realtek ALC888 High Definition onboard Audio + ".*0403.*10de.*055c.*1565.*820c", "ALC888" + ] + ); + + foreach my $pattern_and_name_pairing (@digital_audio_device_patterns) { + my $name=@$pattern_and_name_pairing[1]; + my $pattern=@$pattern_and_name_pairing[0]; + + if (execute_shell_command('lspci -mn | grep -e "'.$pattern.'"')) { + $logger->info("Applying ALSA state workaround for $name audio"); + execute_shell_command("/bin/cp \$TWEAKER_ROOT/fs/var/lib/alsa/$name.asound.state /var/lib/alsa/asound.state"); + execute_shell_command("alsactl restore"); + last; + } + } + + # Now, do what works for all sound devices. + + my $command = "su - mythtv -c \"aumix -v 70 -m 0 -l 0 -l R -w 70\""; # ok for analog and digital + + if (my $error = execute_shell_command($command)) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + if ("$option" eq "digital") { + # Poll system for IEC958 controls, and try to turn them all 'on' + $command = "amixer scontrols | grep IEC958"; + my @results = split('\n', execute_shell_command($command)); + foreach my $line (@results) { + if ($line =~ /Simple mixer control (.*),.*/i) { + $command = "su - mythtv -c \"amixer set $1 on\""; # Tries to set all IEC958 devices to 'on' + # but some are just placeholders and can't be turned 'on', therefore don't error out if we fail + execute_shell_command($command); + } + } + } + execute_shell_command("alsactl store"); # persist the above change(s) + $logger->info("Reset mixer volume levels for $option audio."); + } + + sub edit_mythtv_configuration { + my($option)=@_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + switch ($option) { + case "analogstereo" { + change_or_make_setting('AC3PassThru', '0') || exit -1; + change_or_make_setting('DTSPassThru', '0') || exit -1; + change_or_make_setting('MTDac3Flag', '0') || exit -1; + change_or_make_setting('MythControlsVolume', '1') || exit -1; + } + case "analogsurround" { + # Not supported yet. + } + case "digital" { + change_or_make_setting('AC3PassThru', '1') || exit -1; + change_or_make_setting('DTSPassThru', '1') || exit -1; + change_or_make_setting('MTDac3Flag', '1') || exit -1; + change_or_make_setting('MythControlsVolume', '0') || exit -1; + } + } + change_or_make_setting('AudioOutputDevice', 'ALSA:default') || exit -1; + change_or_make_setting('MixerDevice', 'ALSA:default') || exit -1; + change_or_make_setting('MusicAudioDevice', 'default') || exit -1; + } else { + exit -1; + } + disconnect_from_db(); + } + + generate_asound_conf($option); + edit_mplayer_conf($option); + #edit_xine_conf($option); + #reload_modules($option); + edit_mythtv_configuration($option); + set_mixer_values($option); +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + my @digital_audio_device_patterns = ( + [ + # Pattern matches for PCI IDs of perfect devices, comma-separated within the brackets + [ ".*0403.*8086.*284b.*8086.*2504", # Intel DG965WH onboard audio + ".*0403.*10de.*026c.*1043.*821f", # Asus T3-M2NC51PV onboard audio + ".*0403.*8086.*293e.*8086.*3001" # Intel AusDragon onboard audio + ], + "optional|Your sound device works very well in digital mode. Unless you don't have a receiver that can accept digital inputs, you should use digital mode.", + ], + [ + # Pattern matches for PCI IDs of suboptimal devices, comma-separated within the brackets + [ ".*0401.*1412.*1724.*1412.*1724", # Chaintech AV-710 PCI card (regressions in R5.5) + ], + "inadvisable|Your sound device is known to have some problems in digital mode, but you may try it if you like, starting at low volume in your receiver.", + ], + [ + [ ], # Leave blank for unknown devices + "optional|Your sound device may or may not work well in digital mode. Please tell us if it works, and how well.", + ] + ); + + switch ($option) { + case "analogstereo" { + my ($card, $device) = poll_for_digital_output_device; + if (($card >= 0) && ($device >= 0)) { # A digital output device was detected. + recommendation_level("optional"); + } else { + recommendation_level("recommended", "You seem to have no digital output option. If this is not true, please tell us."); + } + } + case "analogsurround" { + my ($card, $device) = poll_for_digital_output_device; + recommendation_level("unsupported", "No configuration data exists yet for this option."); + } + case "digital" { + my ($card, $device) = poll_for_digital_output_device; + if (($card >= 0) && ($device >= 0)) { # A digital output device was detected. + my $recommendation_return_string; + foreach my $pattern_and_recommendation_pairing (@digital_audio_device_patterns) { + $recommendation_return_string=@$pattern_and_recommendation_pairing[1]; + foreach my $patterns (@$pattern_and_recommendation_pairing[0]) { + foreach my $pattern (@$patterns) { + if (execute_shell_command('lspci -mn | grep -e "'.$pattern.'"')) { + recommendation_level($recommendation_return_string); + return; + } + } + } + } + # Because we didn't return a recommendation level above, return a default recommendation level. + recommendation_level($recommendation_return_string); + return; + } else { # No digital output device was detected. + recommendation_level("not available"); + } + } + } +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_cpu.pl b/abs/core/tweaker/bin/twk_cpu.pl new file mode 100755 index 0000000..8d5e563 --- /dev/null +++ b/abs/core/tweaker/bin/twk_cpu.pl @@ -0,0 +1,163 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'low', 'medium', 'high' ); + +# These values are in BOGOMIPS. They are arbitrary and will be refined, if possible, +# as more data is collected. Obviously, BOGOMIPS are not the best CPU benchmarking +# tool. +my $rrd_threshold = 1650; # bogomips at or below this mean rrdtool is too much of a strain +#my $rrd_threshold = 3365; + +my $low_threshold = 2500; +my $medium_threshold = 4050; +my $high_threshold = 7400; + +# Poll the system to find the CPU type. Currently, we use bogomips (the bogosity of which +# is in the name itself) to guess how powerful the CPU is. +sub get_CPU_strength { + my $bogomips=0; + my @results = split("\n", execute_shell_command("cat /proc/cpuinfo | grep bogomips")); + foreach my $result (@results) { # Count the bogomips for each core. Again, this is rough. + if ($result =~ /bogomips\s*:\s*(\d+.\d+)/) { + $bogomips+=$1; + } + } + return $bogomips; +} + +# ??? Need to test for storage groups and LVM +# Specific to KnoppMyth +sub get_HDD_size { + my @HDD_info = split(" +", execute_shell_command("df -h /myth | grep myth")); + + chop($HDD_info[1]); + return($HDD_info[1] || 0); +} + +#sub disable_rrdtool { +# +#} + +# Edit mplayer.conf to tell mplayer to drop video frames when necessary. This should do no harm +# on systems that don't need the option, and it should make video watchable on those that do. +sub edit_mplayer_conf { + use vars qw($mplayer_conf); + $mplayer_conf = "/etc/mplayer/mplayer.conf"; + + # delete any old entries that Tweaker made, relevant to this particular edit + my $delete_old_tweaker_edits = "[ -e $mplayer_conf ] && sed -i '/^.*hardframedrop.*=.*#TWEAKER/d' $mplayer_conf"; + # comment out old entries that some other process may have made + my $comment_out_external_edits = "[ -e $mplayer_conf ] && sed -i 's/^\\(hardframedrop.*=.*\\)/#\\1/g' $mplayer_conf"; + my $command1; + my $command2=""; + my $logger = get_logger('tweaker.script'); + + if (my $error = execute_shell_command("$delete_old_tweaker_edits && $comment_out_external_edits")) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + $command2 = "echo -e 'hardframedrop=true #TWEAKER' >> $mplayer_conf"; + if (my $error = execute_shell_command($command2)) { + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + + $logger->info("Edited $mplayer_conf to drop video frames when CPU is overloaded."); +} + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + # ??? This will need some work to properly integrate with MythTV 0.21's own CPU-based playback settings. + # For now, set profile to CPU++ no matter what CPU type, and just change what CPU++ provides. + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + switch ($option) { + case "low" { + change_or_make_setting('AutoCommflagWhileRecording', '0') || exit -1; + change_or_make_setting('Theme', 'Iulius') || exit -1; # Low eye candy, high performance + #change_or_make_setting('PreferredMPEG2Decoder', 'libmpeg2') || exit -1; # Least CPU usage, lowest quality + #change_or_make_entry("displayprofiles", [["pref_decoder", "libmpeg2"]], [["profilegroupid", "1"], ["profileid", "1"]]) || exit -1; # Least CPU usage, lowest quality + change_or_make_setting('DefaultVideoPlaybackProfile', 'CPU--') || exit -1; # best playback defaults for weak hardware + # Should libmpeg2/ffmpeg be triggered based on CPU type? libmpeg2 is usually + # recommended for AMD CPUs. + # ??? when to use xvmc? + + # Weak CPUs may actually be too weak to run rrdtool without causing problems. +# if (get_CPU_strength() <= $rrd_threshold) { +# disable_rrdtool(); +# } + } + case "medium" { + change_or_make_setting('AutoCommflagWhileRecording', '1') || exit -1; + change_or_make_setting('Theme', 'LinHES') || exit -1; # Moderate eye candy, moderate performance + #change_or_make_setting('PreferredMPEG2Decoder', 'libmpeg2') || exit -1; # Least CPU usage, lowest quality + #change_or_make_entry("displayprofiles", [["pref_decoder", "libmpeg2"]], [["profilegroupid", "1"], ["profileid", "1"]]) || exit -1; # Least CPU usage, lowest quality + change_or_make_setting('DefaultVideoPlaybackProfile', 'CPU+') || exit -1; # best playback defaults for average hardware + # ??? when to use xvmc? + } + case "high" { + change_or_make_setting('AutoCommflagWhileRecording', '1') || exit -1; + # ??? Interacts with screen aspect ratio + change_or_make_setting('Theme', 'LinHES') || exit -1; # Moderate eye candy, moderate performance + #change_or_make_entry("displayprofiles", [["pref_decoder", "ffmpeg"]], [["profilegroupid", "1"], ["profileid", "1"]]) || exit -1; # Most CPU usage, best quality + #change_or_make_setting('PreferredMPEG2Decoder', 'ffmpeg') || exit -1; # Most CPU usage, best quality + change_or_make_setting('DefaultVideoPlaybackProfile', 'CPU++') || exit -1; # best playback defaults for powerful hardware + # ??? when to use xvmc? + } + } + change_or_make_setting('UseXvMcVld', '0') || exit -1; + #change_or_make_entry("displayprofiles", [["pref_deint0", "onefield"]], [["profilegroupid", "1"], ["profileid", "1"]]) || exit -1; # Most CPU usage, best quality + change_or_make_setting('OSDTheme', 'blootube-osd') || exit -1; + change_or_make_setting('PlayBoxShading', '0') || exit -1; + change_or_make_setting('PlaybackExitPrompt', '2') || exit -1; + #edit_mplayer_conf(); # This was found to cause temporary picture freezing when skipping forward through playback, followed by out-of-sync audio and video + } else { + exit -1; + } + disconnect_from_db(); +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + + threshold_test($option, get_CPU_strength(), "CPU", $low_threshold, $medium_threshold, $high_threshold); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_dragon.pl b/abs/core/tweaker/bin/twk_dragon.pl new file mode 100755 index 0000000..21a9dc7 --- /dev/null +++ b/abs/core/tweaker/bin/twk_dragon.pl @@ -0,0 +1,65 @@ +#!/usr/bin/perl -w + +# Copyright 2008-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +# List all the options that this script supports. Make sure it matches what's in +# the corresponding .tcf entry. +set_known_options( 'all' ); + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + my $logger = get_logger('tweaker.script'); + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + # Overrides SQL changes made in twk_tuners.pl + # WARNING: Very big harccoded hack that chooses ATSC tuning over QAM. + do_query("UPDATE cardinput SET sourceid='10' WHERE sourceid='20'") || return -1; + + # Use the most beautiful theme + change_or_make_setting('Theme', 'blootube-wide') || exit -1; + } else { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: Unable to connect to mythconverg database"); + $logger->error("ERROR: Unable to implement option $option."); + exit -1; + } + disconnect_from_db(); +} + +# Poll the system to see what recommendationlevel the given option has on the system. +sub poll_options { + my($option) = @_; + recommendation_level("recommended", "These tweaks benefit all Dragon users."); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_fingerprint_hardware.sh b/abs/core/tweaker/bin/twk_fingerprint_hardware.sh new file mode 100755 index 0000000..25111dd --- /dev/null +++ b/abs/core/tweaker/bin/twk_fingerprint_hardware.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +# Copyright 2007, 2008 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +# This script will grab USB and PCI data and dump it to a file for the +# user to post. + +output_file=/tmp/fingerprint.txt +maintainer="Human" +thread="" + +Usage() { + echo "USAGE:" + echo `basename $0` " [-a]" + echo "-a: advanced mode" + echo + echo "EXAMPLE: $0" + exit 3 +} + +while getopts "a" FLAG ; do + case "$FLAG" in + a) ADVANCED_MODE=1;; + *) Usage;; + esac +done + +check_for_root() { + if [ `whoami` != "root" ]; then + echo -n `basename $0` + echo " must be run as root. Exiting."; + exit; + fi +} + +poll_PCI() { + echo \ +"##### +# lspci -vv +#####" >> $output_file + lspci -vv >> $output_file + echo "" >> $output_file + + echo \ +"##### +# lspci -mn +#####" >> $output_file + lspci -mn >> $output_file + echo "" >> $output_file +} + +poll_USB() { + echo \ +"##### +# /proc/bus/usb/devices +#####" >> $output_file +cat /proc/bus/usb/devices >> $output_file +} + +instruct() { + echo "Your hardware fingerprint is in $output_file" + echo -n "Please PM it to $maintainer" + if [ "$thread" != "" ]; then + echo " or post it to" + echo -n "$thread" + fi + echo "." + echo "It should be accompanied by a list of changes that you made to the baseline +installation in order to improve MythTV on your hardware." + + echo "If you feel up to the task, feel free to prune out any entries that are for +very low-level devices like memory controllers, USB subsystems, etc. before +sending the fingerprint." +} + +main() { + check_for_root + > $output_file + poll_PCI + poll_USB + instruct +} + +main + diff --git a/abs/core/tweaker/bin/twk_general.pl b/abs/core/tweaker/bin/twk_general.pl new file mode 100755 index 0000000..23572bc --- /dev/null +++ b/abs/core/tweaker/bin/twk_general.pl @@ -0,0 +1,590 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'all' ); + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + # KnoppMyth-centric file-level tweaks + sub file_tweaks { + my($option) = @_; + + my @commands = ( + # keymap tweaks + "twk_keymap.sh" + ); + + foreach my $command (@commands) { + if (my $error = execute_shell_command($command)) { + my $logger = get_logger('tweaker.script'); + $logger->error("$error"); + $logger->error("Unable to implement option $option with command $command."); + } + } + return 1; + } + + # Enhance the default MythTV SQL + sub SQL_tweaks { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + # ??? This also exists in mkmythdir - it should be centralized + my $SQL_DirData="/myth"; # Top level dir. of structure, + my $SQL_DirTV="$SQL_DirData/tv"; # TV Recordings, + my $SQL_DirMusic="$SQL_DirData/music/"; # Music storage, + my $SQL_DirGames="$SQL_DirData/games"; # Games dir, + my $SQL_DirPics="$SQL_DirData/gallery"; # Pictures directory. + my $SQL_DirTmp="$SQL_DirData/tmp"; # DVD temp + my $SQL_DirVideo="$SQL_DirData/video"; # videos + + # ??? Eventually, put these into a text file so that 1) people can contribute without having to code, and 2) the data + # stays separate from the code and can be re-used by other (non-Perl) implementations + + # + # keybindings + # + change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "Gallery"], ["action","PLAY"]]); + change_or_make_entry("keybindings", [["keylist", ">"]], [["context", "Music"], ["action","FFWD"]]); + change_or_make_entry("keybindings", [["keylist", "<"]], [["context", "Music"], ["action","RWND"]]); + change_or_make_entry("keybindings", [["keylist", "PgDown,.,Z,End"]], [["context", "Music"], ["action","NEXTTTRACK"]]); + change_or_make_entry("keybindings", [["keylist", "PgUp,Q,Home"]], [["context", "Music"], ["action","PREVTRACK"]]); + change_or_make_entry("keybindings", [["keylist", "P,l"]], [["context", "Music"], ["action","PAUSE"]]); + + change_or_make_entry("keybindings", [["keylist", ">"]], [["context", "Stream"], ["action","FORWARD"]]); + change_or_make_entry("keybindings", [["keylist", "<"]], [["context", "Stream"], ["action","REWIND"]]); + change_or_make_entry("keybindings", [["keylist", "F"]], [["context", "Stream"], ["action","FULLSCREEN"]]); + change_or_make_entry("keybindings", [["keylist", "|,\\,F9,Volume Mute"]], [["context", "Stream"], ["action","MUTE"]]); + change_or_make_entry("keybindings", [["keylist", "Y"]], [["context", "Stream"], ["action","STOREMARKED"]]); + + change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "TV Frontend"], ["action","PLAYBACK"]]); + + change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "TV Playback"], ["action","PLAY"]]); + change_or_make_entry("keybindings", [["keylist", "P"]], [["context", "TV Playback"], ["action","PAUSE"]]); # default, but here for completeness + + # + # better awareness of different video extensions + # + foreach my $video_ext ("mp2", "tp", "ts", "m2p", "nuv", "mkv", "ogg", "theora") { + change_or_make_entry("videotypes", [["playcommand", "Default"], ["f_ignore", "0"], ["use_default", "1"]], [["extension", $video_ext]]); + } + foreach my $non_video_ext ("jpg", "par2", "php") { + change_or_make_entry("videotypes", [["f_ignore", "1"]], [["extension", $non_video_ext]]); + } + + # + # games, game players, and emulators + # + my @players = ( + [ 'SDLMAME', '/myth/games/xmame/roms', '/myth/games/xmame/screenshots', '/usr/games/mame -rp /myth/games/xmame/roms %s', 'MAME' ], + [ 'ZSNES','/myth/games/snes/roms','/myth/games/snes/screens','/usr/bin/zsnes','SNES' ], + [ 'FCEU','/myth/games/nes/roms','/myth/games/nes/screens','/usr/games/fceu','NES' ], + [ 'Frozen Bubble', '', '', '/usr/games/frozen-bubble --fullscreen','PC' ] + ); + + foreach my $player (@players) { + # These INSERTs will fail if the playername is already present, but we don't error out if it happens. + do_query("INSERT INTO gameplayers (playername, rompath, screenshots, commandline, gametype) VALUES ('".join("','",@$player)."');"); + } + # somewhat hardwired, but make sure Frozen Bubble shows up in the list of playable games. + do_query("INSERT INTO gamemetadata (system, romname, gamename, genre, year, publisher, rompath, gametype) VALUES ('". + join("','",($players[3][0], $players[3][3], $players[3][0], "action/puzzle", "2006", "Frozen Bubble Team", "/usr/games", $players[3][4]))."');"); + + # + # smart music playlists + # + # categoryid, name + change_or_make_entry("music_smartplaylist_categories", [["name", "Decades"]], [["categoryid", 1]]); + change_or_make_entry("music_smartplaylist_categories", [["name", "Favorite Tracks"]], [["categoryid", 2]]); + change_or_make_entry("music_smartplaylist_categories", [["name", "New Tracks"]], [["categoryid", 3]]); + + foreach my $decade (60, 70, 80, 90, 100) { + my $id = ($decade / 10) - 5; + my $query = "INSERT INTO music_smartplaylist_items (smartplaylistid, field, operator, value1, value2) VALUES ($id, 'Year', 'is between'," . ($decade+1900) . "," . ($decade+1909) . ");"; + do_query($query); + $query = "INSERT INTO music_smartplaylists (name, categoryid, matchtype, orderby, limitto) VALUES ('". ($decade+1900) . "\\'s', 1, 'All', 'Artist (A)', 0);"; + do_query($query); + } + + my @other_lists = ( + [ + ( 'Rating', 'is greater than', '7', 'Favorite Tracks', 2, 'Artist (A), Album (A)', 0 ), + ( 'Play Count', 'is greater than', '0', '100 Most Played Tracks', 2, 'Play Count (D)', 100 ), + ( 'Play Count', 'is equal to', '0', 'Never Played Tracks', 3, 'Artist (A), Album (A)', 0 ) + ]); + + my $id=6; + foreach my $other_list (@other_lists) { + change_or_make_entry("music_smartplaylist_items", [["field", @$other_list[0]], ["operator", @$other_list[1]], ["value1", @$other_list[2]]], [["smartplaylistid", $id]]); + change_or_make_entry("music_smartplaylists", [["name", @$other_list[3]], ["categoryid", @$other_list[4]], ["matchtype", "All"], ["orderby", @$other_list[5]], ["limitto", @$other_list[6]]], [["smartplaylistid", $id]]); + $id++; + } + + # + # default playgroup with time-related settings + # + change_or_make_entry("playgroup", [["skipahead", 10], ["skipback", 5], ["timestretch", 100], ["jump", 1]], [["name", "Default"]]); + + # + # useful recording profiles and transcoding options + # + change_or_make_entry("profilegroups", [["name", "Software Encoders (v4l based)"], ["cardtype", "V4L"], ["is_default", 1]], [["id", 1]]); + change_or_make_entry("profilegroups", [["name", "MPEG-2 Encoders (PVR-x50, PVR-500)"], ["cardtype", "MPEG"], ["is_default", 1]], [["id", 2]]); + change_or_make_entry("profilegroups", [["name", "Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)"], ["cardtype", "MJPEG"], ["is_default", 1]], [["id", 3]]); + change_or_make_entry("profilegroups", [["name", "Hardware HDTV"], ["cardtype", "HDTV"], ["is_default", 1]], [["id", 4]]); + change_or_make_entry("profilegroups", [["name", "Hardware DVB Encoders"], ["cardtype", "DVB"], ["is_default", 1]], [["id", 5]]); + change_or_make_entry("profilegroups", [["name", "Transcoders"], ["cardtype", "TRANSCODE"], ["is_default", 1]], [["id", 6]]); + change_or_make_entry("profilegroups", [["name", "FireWire Input"], ["cardtype", "FIREWIRE"], ["is_default", 1]], [["id", 7]]); + change_or_make_entry("profilegroups", [["name", "USB Mpeg-4 Encoder (Plextor ConvertX, etc)"], ["cardtype", "GO7007"], ["is_default", 1]], [["id", 8]]); + change_or_make_entry("profilegroups", [["name", "DBOX2 Input"], ["cardtype", "DBOX2"], ["is_default", 1]], [["id", 9]]); + change_or_make_entry("profilegroups", [["name", "Freebox Input"], ["cardtype", "Freebox"], ["is_default", 1]], [["id", 10]]); + change_or_make_entry("profilegroups", [["name", "HDHomeRun Recorders"], ["cardtype", "HDHOMERUN"], ["is_default", 1]], [["id", 11]]); + change_or_make_entry("profilegroups", [["name", "CRC IP Recorders"], ["cardtype", "CRC_IP"], ["is_default", 1]], [["id", 12]]); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4bitrate', 2200)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionvhq', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4option4mv', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'samplerate', 48000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'volume', 100)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4bitrate', 2200)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionvhq', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4option4mv', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'samplerate', 48000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'volume', 100)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (27, 'transcodelossless', 1)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4bitrate', 2200)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionvhq', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4option4mv', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'samplerate', 48000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'volume', 100)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4bitrate', 1500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionvhq', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4option4mv', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'samplerate', 44100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mp3quality', 7)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'volume', 100)"); + + + # I don't know why we have so many of these. Only profilegroup 6 seems to matter. + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 1]], [["id", 1]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 1]], [["id", 2]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 1]], [["id", 3]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 1]], [["id", 4]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 2]], [["id", 5]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 2]], [["id", 6]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 2]], [["id", 7]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 2]], [["id", 8]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 3]], [["id", 9]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 3]], [["id", 10]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 3]], [["id", 11]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 3]], [["id", 12]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 4]], [["id", 13]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 4]], [["id", 14]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 4]], [["id", 15]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 4]], [["id", 16]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 5]], [["id", 17]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 5]], [["id", 18]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 5]], [["id", 19]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 5]], [["id", 20]]); + change_or_make_entry("recordingprofiles", [["name", 'RTjpeg/MPEG4'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 21]]); + change_or_make_entry("recordingprofiles", [["name", 'MPEG2'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 22]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 8]], [["id", 23]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 8]], [["id", 24]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 8]], [["id", 25]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 8]], [["id", 26]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 6]], [["id", 27]]); + change_or_make_entry("recordingprofiles", [["name", 'Medium Quality'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 28]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "MP3"]], [["id", 29]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 10]], [["id", 30]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 10]], [["id", 31]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 10]], [["id", 32]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 10]], [["id", 33]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 11]], [["id", 34]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 11]], [["id", 35]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 11]], [["id", 36]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 11]], [["id", 37]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 12]], [["id", 38]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 12]], [["id", 39]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 12]], [["id", 40]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 12]], [["id", 41]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 7]], [["id", 42]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 7]], [["id", 43]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 7]], [["id", 44]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 7]], [["id", 45]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 9]], [["id", 46]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 9]], [["id", 47]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 9]], [["id", 48]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 9]], [["id", 49]]); + + # + # settings + # + change_or_make_setting('AlwaysStreamFiles', '1'); # new in R6 + change_or_make_setting('AutoCommercialSkip', '1'); + change_or_make_setting('AutoExpireWatchedPriority', '1'); + change_or_make_setting('BackendServerPort', '6543'); + change_or_make_setting('BackendStatusPort', '6544'); + change_or_make_setting('CDWriterDevice', 'ATA:1,0,0'); +# change_or_make_setting('ChannelOrdering', 'chanid'); + change_or_make_setting('CommercialSkipMethod', '255'); + change_or_make_setting('DVDBookmarkPrompt', '1'); + change_or_make_setting('DVDRipLocation', $SQL_DirTmp); + change_or_make_setting('DefaultRipQuality', '1'); + change_or_make_setting('DefaultTranscoder', '28'); # change this number if you redefine the transcoders above + change_or_make_setting('Deinterlace', '1'); + change_or_make_setting('DeletesFollowLinks', '1'); + change_or_make_setting('DisableFirewireReset', '0'); + change_or_make_setting('EITCrawIdleStart','60'); + change_or_make_setting('EITIgnoresSource','0'); + change_or_make_setting('EITTimeOffset','Auto'); + change_or_make_setting('EITTransportTimeout','5'); + change_or_make_setting('EPGEnableJumpToChannel','1'); + change_or_make_setting('EPGFillType','12'); + change_or_make_setting('EnableDVDBookmark','1'); + change_or_make_setting('EndOfRecordingExitPrompt','1'); + change_or_make_setting('GalleryDir', $SQL_DirPics); + change_or_make_setting('GalleryRecursiveSlideshow', '1'); +#------------------------JM--------------------------- + change_or_make_setting('HaltCommand', 'sudo /sbin/halt'); +# change_or_make_setting('HostAudiotype','ALSA'); +# change_or_make_setting('HostMiro','1'); +# change_or_make_setting('HostXine','1'); +# change_or_make_setting('Hostpluginmythappletrailers','1'); +# change_or_make_setting('Hostpluginmytharchive','1'); +# change_or_make_setting('Hostpluginmythbrowser','1'); +# change_or_make_setting('Hostpluginmythcontrols','1'); +# change_or_make_setting('Hostpluginmythflix','1'); +# change_or_make_setting('Hostpluginmythgallery','1'); +# change_or_make_setting('Hostpluginmythgame','1'); +# change_or_make_setting('HostpluginmythgameFceu','1'); +# change_or_make_setting('HostpluginmythgameMame','1'); +# change_or_make_setting('HostpluginmythgameMame','1'); +# change_or_make_setting('HostpluginmythgameROMDB','1'); +# change_or_make_setting('HostpluginmythgameXE','1'); +# change_or_make_setting('HostpluginmythgameZsnes','1'); +# change_or_make_setting('HostpluginmythgameZsnes','1'); +# change_or_make_setting('Hostpluginmythmovietime','1'); +# change_or_make_setting('Hostpluginmythmusic','1'); +# change_or_make_setting('Hostpluginmythnews','1'); +# change_or_make_setting('Hostpluginmythphone','1'); +# change_or_make_setting('Hostpluginmythsmolt','1'); +# change_or_make_setting('Hostpluginmythstream','1'); +# change_or_make_setting('Hostpluginmythvideo','1'); +# change_or_make_setting('Hostpluginmythvideo_dvdcss','0'); +# change_or_make_setting('Hostpluginmythvideo_dvdcss','0'); +# change_or_make_setting('Hostpluginmythvodka','1'); +# change_or_make_setting('Hostpluginmythweather','1'); + change_or_make_setting('JobAllowCommFlag', '1'); + change_or_make_setting('JobAllowTranscode', '1'); + change_or_make_setting('JobAllowUserJob1', '1'); + change_or_make_setting('JobAllowUserJob2', '1'); + change_or_make_setting('JobAllowUserJob3', '1'); + change_or_make_setting('JobAllowUserJob4', '1'); + change_or_make_setting('JobQueueCPU','0'); + change_or_make_setting('JobQueueCheckFrequency','60'); + change_or_make_setting('JobQueueCommFlagCommand','mythcommflag'); + change_or_make_setting('JobQueueMaxSimultaneousJobs','1'); + change_or_make_setting('JobQueueTranscodeCommand','mythtranscode'); + change_or_make_setting('JobQueueWindowEnd','23:59'); + change_or_make_setting('JobQueueWindowStart','00:00'); + change_or_make_setting('JobsRunOnRecordHost','0'); + change_or_make_setting('LiveTVInAllPrograms','1'); + change_or_make_setting('MasterMixerVolume','100'); +# change_or_make_setting('MasterServerIP', '127.0.0.1'); +# change_or_make_setting('MasterServerPort', '6543'); + change_or_make_setting('MediaChangeEvents','1'); + change_or_make_setting('MonitorDrives', '1'); + change_or_make_setting('MusicLocation', $SQL_DirMusic); + change_or_make_setting('MythArchivePng2yuvCmd', 'png2yuv'); # ??? still used? + change_or_make_setting('MythArchiveShareDir','/myth/archive/'); + change_or_make_setting('MythArchiveTempDir', $SQL_DirTmp); + change_or_make_setting('MythFillDatabaseArgs', '--quiet'); + change_or_make_setting('MythFillDatabaseLog', '/var/log/mythtv/mythfilldatabase.log'); + change_or_make_setting('MythFillDatabasePath', '/usr/bin/nice -n 19 /usr/bin/mythfilldatabase'); + change_or_make_setting('MythFillEnabled', '1'); + change_or_make_setting('MythTVtv', $SQL_DirTV); + change_or_make_setting('NetworkControlEnabled', '1'); + change_or_make_setting('PCMMixerVolume', '50'); + change_or_make_setting('PVR350VideoDev', '/dev/video16'); + change_or_make_setting('PlayBoxShading', '0'); + change_or_make_setting('PlayMode', 'none'); + change_or_make_setting('PlaybackExitPrompt', '2'); + change_or_make_setting('PlaybackPreviewLowCPU', '1'); +# change_or_make_setting('PlaybackReturnPrompt', '1'); +# change_or_make_setting('PlaybackReturnPrompt', '2'); + change_or_make_setting('RebootCommand', 'sudo /sbin/reboot'); + change_or_make_setting('RecordFilePrefix',$SQL_DirTV); + change_or_make_setting('SelectChangesChannel', '1'); + change_or_make_setting('ServerHaltCommand', 'sudo /sbin/halt -p'); + change_or_make_setting('ShowWholeTree', '1'); + change_or_make_setting('SmartChannelChange', '1'); + change_or_make_setting('StartupSecsBeforeRecording', '120'); + change_or_make_setting('TruncateDeletesSlowly', '1'); + change_or_make_setting('UseOutputPictureControls', '1'); + change_or_make_setting('UserJob1', 'myth2ipod \"%DIR%\" \"%FILE%\"'); + change_or_make_setting('UserJob2', 'myt2xvid3 \"%DIR%\" \"%FILE%\"'); + change_or_make_setting('UserJob3', 'myth2x264 \"%DIR%/%FILE%\" \"%TITLE% - %SUBTITLE%\" \"%CHANID%\" \"%STARTTIME%\" \"%JOBID%\"'); + change_or_make_setting('UserJob4', 'removecommercials \"%DIR%\" \"%FILE%\" \"%CHANID%\" \"%STARTTIME%\" \"%JOBID%\"'); + change_or_make_setting('UserJobDesc1', 'Transcode for iPod'); + change_or_make_setting('UserJobDesc2', 'Transcode to xvid'); + change_or_make_setting('UserJobDesc3', 'Transcode to h264'); + change_or_make_setting('UserJobDesc4', 'Remove Commercials'); + change_or_make_setting('UseOutputPictureControls','0'); # If this is set to '1' it can swap blue for red (and vice versa) on some nVidia GPUs + change_or_make_setting('VCDPlayerCommand', 'mplayer-wrapper.pl vcd:\/\/ -cdrom-device %d -fs -zoom'); + change_or_make_setting('VideoArtworkDir', "$SQL_DirVideo/.covers"); + change_or_make_setting('VideoBrowserNoDB', '1'); + change_or_make_setting('VideoDefaultPlayer', 'mplayer-wrapper.pl -fs -zoom %s'); + change_or_make_setting('VideoGalleryNoDB', '1'); + change_or_make_setting('VideoStartupDir', $SQL_DirVideo); + change_or_make_setting('VideoTreeNoDB', '1'); + change_or_make_setting('VisualMode','BumpScope;Gears;Goom;MonoScope;Squares;StereoScope;Synaesthesia;LibVisual-bumpscope;LibVisual-corona;LibVisual-infinite;AlbumArt'); + change_or_make_setting('weatherbackgroundfetch', '1'); + change_or_make_setting('WebBrowserCommand','/usr/bin/mythbrowser'); + change_or_make_setting('WebBrowserHideScrollbars','0'); + change_or_make_setting('WebBrowserScrollMode','1'); + change_or_make_setting('WebBrowserScrollSpeed','4'); + change_or_make_setting('WebBrowserZoomLevel','20'); + change_or_make_setting('WebcamDevice','/dev/video'); + change_or_make_setting('WOLbackendCommand',''); + change_or_make_setting('WOLbackendConnectRetry','5'); + change_or_make_setting('WOLslaveBackendsCommand',''); + change_or_make_setting('WakeupTimeFormat','hh:mm yyyy-MM-dd'); + change_or_make_setting('WatchTVGuide','0'); +# change_or_make_setting('WeatherDBSchemaVer','1000'); + change_or_make_setting('WebBrowserCommand','/usr/bin/mythbrowser'); + change_or_make_setting('WebBrowserHideScrollbars','0'); + change_or_make_setting('WebBrowserScrollMode','1'); + change_or_make_setting('WebBrowserScrollSpeed','4'); + change_or_make_setting('WebBrowserZoomLevel','20'); + change_or_make_setting('XineramaScreen','0'); + change_or_make_setting('blockSDWUwithoutClient','1'); + change_or_make_setting('idleWaitForRecordingTime','15'); + change_or_make_setting('mythdvd.DVDPlayerCommand', 'Internal'); + change_or_make_setting('mythvideo.VideoTreeRemember', '1'); + change_or_make_setting('mythfilldatabaseLastRunStart',''); + change_or_make_setting('mythfilldatabaseLastRunEnd',''); + change_or_make_setting('mythfilldatabaseLastRunStatus',''); + + # + # customexample table + # + change_or_make_entry("customexample", [["fromclause", ""], ["whereclause", "program.category_type = \"movie\" AND program.airdate >= YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) AND program.stars > 0.5 "], ["search", "1"]], [["rulename", "New Flix"]]); + +# # As much of MythWeather as we can automate for now + my $units = 0; + my $metric_units = do_query("SELECT * FROM settings WHERE value='SIUnits' AND data='YES'"); + if ($metric_units) { + $units=0; + } else { + $units=1; + } +# change_or_make_entry("weatherscreens", [["draworder", "0"], ["container", "Six Day Forecast"], ["units", $units]], [["screen_id", 1]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "6dlocation"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# for (my $increment=0; $increment < 6; $increment++) { +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "date-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "high-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "icon-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "low-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# } +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "updatetime"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# +# change_or_make_entry("weathersourcesettings", [["sourceid", "1"], ["source_name", "BBC-Current-XML"], ["update_timeout", "7200"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/bbccurrentxml.pl"], ["author", "Stuart Morgan"], ["version", "0.1"], ["email", "stuart\@tase.co.uk"], ["types", "cclocation,station_id,copyright,observation_time,weather,temp,relative_humidity,wind_dir,pressure,visibility,weather_icon,appt,wind_spdgst"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "2"], ["source_name", "BBC-3day-XML"], ["update_timeout", "21600"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/bbcthreedayxml.pl"], ["author", "Stuart Morgan"], ["version", "0.1"], ["email", "stuart\@tase.co.uk"], ["types", "3dlocation,station_id,copyright,weather_icon,date-0,icon-0,low-0,high-0,date-1,icon-1,low-1,high-1,date-2,icon-2,low-2,high-2,updatetime"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "3"], ["source_name", "ENVCAN"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ca_envcan/envcan.pl"], ["author", "Joe Ripley"], ["version", "0.4"], ["email", "vitaminjoe\@gmail.com"], ["types", "cclocation,station_id,copyright,observation_time,observation_time_rfc822,weather,temp,relative_humidity,wind_dir,wind_degrees,wind_speed,wind_gust,pressure,dewpoint,heat_index,windchill,visibility,weather_icon,appt,wind_spdgst,3dlocation,6dlocation,date-0,icon-0,low-0,high-0,date-1,icon-1,low-1,high-1,date-2,icon-2,low-2,high-2,updatetime,date-3,icon-3,low-3,high-3,date-4,icon-4,low-4,high-4,date-5,icon-5,low-5,high-5"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "4"], ["source_name", "NDFD-6_day"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ndfd.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "3dlocation,6dlocation,updatetime,high-0,high-1,high-2,high-3,high-4,high-5,low-0,low-1,low-2,low-3,low-4,low-5,icon-0,icon-1,icon-2,icon-3,icon-4,icon-5,date-0,date-1,date-2,date-3,date-4,date-5"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "5"], ["source_name", "NDFD-18_hour"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ndfd18.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "18hrlocation,updatetime,temp-0,temp-1,temp-2,temp-3,temp-4,temp-5,18icon-0,18icon-1,18icon-2,18icon-3,18icon-4,18icon-5,pop-0,pop-1,pop-2,pop-3,pop-4,pop-5,time-0,time-1,time-2,time-3,time-4,time-5"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "6"], ["source_name", "NWS-Alerts"], ["update_timeout", "600"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/nws-alert.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "swlocation,updatetime,alerts"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "7"], ["source_name", "NWS-XML"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/nwsxml.pl"], ["author", "Lucien Dunning"], ["version", "0.2"], ["email", "ldunning\@gmail.com"], ["types", "cclocation,station_id,latitude,longitude,observation_time,observation_time_rfc822,weather,temperature_string,temp,relative_humidity,wind_string,wind_dir,wind_degrees,wind_speed,wind_gust,pressure_string,pressure,dewpoint_string,dewpoint,heat_index_string,heat_index,windchill_string,windchill,visibility,weather_icon,appt,wind_spdgst"]]); + + my $ipaddress = execute_shell_command("ifconfig | grep inet.addr | head -1"); + $ipaddress =~ s/.*inet addr:(\d+.\d+.\d+.\d+)\s.*/$1/g; + + + + + + +#-------------------jm +# # Change from the generic IP address to the real one. +# do_query("UPDATE settings SET data='$ipaddress' where data='127.0.0.1'"); +# do_query("UPDATE settings SET data='$ipaddress' where data='MythTVip'"); # ??? needed? + + my $hostname = execute_shell_command("hostname") || "localhost"; + # one table at a time, replace hostname with our actual hostname + # ??? can this be done all at once in MySQL? + foreach my $table ("capturecard", "inuseprograms", "jobqueue", "jumppoints", "keybindings", "music_playlists", + "musicplaylist", "recorded", "settings", "weatherscreens") { + do_query("UPDATE $table SET hostname='$hostname'"); + } + + # Some entries in 'settings' should stay NULL: http://www.mythtv.org/wiki/index.php/Settings_table + # There are fewer entries that stay NULL than there are that should have the hostname set, so while + # it duplicates some effort to change them from NULL to the hostname and them back to NULL, it's + # easier to maintain and more future-proof. + + foreach my $entry ("mythfilldatabaseLastRunStart", "mythfilldatabaseLastRunEnd", "mythfilldatabaseLastRunStatus", + "DataDirectMessage", "HaveRepeats", "DBSchemaVer", "DefaultTranscoder", "MythFillSuggestedRunTime", + "MythFillGrabberSuggestsTime", "MasterServerIP", "MasterServerPort", "TVFormat", "VbiFormat", "FreqTable", + "TimeOffset", "MasterBackendOverride", "DeletesFollowLinks", "HDRingbufferSize", "EITTransportTimeout", + "EITIgnoresSource", "EITCrawIdleStart", "startupCommand", "blockSDWUwithoutClient", "idleWaitForRecordingTime", + "StartupSecsBeforeRecording", "WakeupTimeFormat", "SetWakeuptimeCommand", "ServerHaltCommand", "preSDWUCheckCommand", + "WOLbackendConnectRetry", "WOLbackendCommand", "WOLslaveBackendsCommand", "JobsRunOnRecordHost", + "AutoCommflagWhileRecording", "JobQueueCommFlagCommand", "JobQueueTranscodeCommand", + "AutoTranscodeBeforeAutoCommflag", "SaveTranscoding", "UserJobDesc1", "UserJob1", "UserJobDesc2", "UserJob2", + "UserJobDesc3", "UserJob3", "UserJobDesc4", "UserJob4", "PreviewPixmapOffset", "AllRecGroupPassword", + "MaximumCommercialSkip", "CommSkipAllBlanks", "LastFreeCard", "LiveTVPriority", "AutoExpireMethod", + "AutoExpireDefault", "RerecordWatched", "AutoExpireWatchedPriority", "AutoExpireLiveTVMaxAge", + "AutoExpireDayPriority", "AutoExpireExtraSpace", "AutoExpireInsteadOfDelete", "DeletedFifoOrder", + "CommercialSkipMethod", "AggressiveCommDetect", "AutoCommercialFlag", "AutoTranscode", "AutoRunUserJob1", + "AutoRunUserJob2", "AutoRunUserJob3", "AutoRunUserJob4", "OverTimeCategory", "CategoryOverTime", + "EPGEnableJumpToChannel", "LogEnabled", "MythFillEnabled", "MythFillDatabasePath", "MythFillDatabaseArgs", + "MythFillDatabaseLog", "MythFillPeriod", "MythFillMinHour", "MythFillMaxHour", "SchedMoveHigher", "SchedOpenEnd", + "ComplexPriority", "PrefInputPriority", "SingleRecordRecPriority", "FindOneRecordRecPriority", "ArchiveDBSchemaVer", + "FlixDBSchemaVer", "GalleryDBSchemaVer", "GameDBSchemaVer", "MusicDBSchemaVer", "PhoneDBSchemaVer", + "mythvideo.DBSchemaVer", "WeatherDBSchemaVer") { + do_query("UPDATE settings SET hostname=NULL WHERE value='$entry'"); + } + + change_or_make_setting('MasterBackendOverride','1'); # I don't remember why, but making the hostname NULL is important here + do_query("UPDATE settings SET hostname=NULL WHERE value='MasterBackendOverride'"); + + # storagegroup + change_or_make_entry("storagegroup", [["groupname", "Default"], ["hostname", $hostname], ["dirname", $SQL_DirTV]], [["id", 1]]); + + # + # Websites for mythbrowser + # + #change_or_make_entry("websites", [["grp", "LinHeS"], ["dsc", ""], ["updated", ""]], [["url", "http://knoppmyth.net"]]); + #change_or_make_entry("websites", [["grp", "LinHeS"], ["dsc", ""], ["updated", ""]], [["url", "http://knoppmythwiki.org"]]); + + disconnect_from_db(); + + # Fix hostname for iPod feed URLs + $command = "sed -i \"s/hostname\\//$hostname\\//g\" /usr/local/bin/myth2ipod"; + execute_shell_command($command); + + # Fix hostname for XViD feed URLs + $command = "sed -i \"s/192.168.0.222\\//$hostname\\//g\" /usr/local/bin/myt2xvid3"; + execute_shell_command($command); + + # Customize default MythTV library.xml to reflect KnoppMyth's wider selection of + # online stream options. + #$command = "sed -i \"/STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s///; }\" /usr/share/mythtv/library.xml"; + $command = "/bin/cp /usr/share/mythtv/library.xml.km /usr/share/mythtv/library.xml"; + execute_shell_command($command); + } else { + my $logger = get_logger('tweaker.script'); + $logger->error("Unable to connect to mythconverg database"); + $logger->error("Unable to implement option $option."); + return -1; + } + return 1; + } + + file_tweaks($option) || exit -1; + SQL_tweaks($option) || exit -1; +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + recommendation_level("recommended", "These tweaks benefit all users."); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_general.pl.orig b/abs/core/tweaker/bin/twk_general.pl.orig new file mode 100755 index 0000000..0255852 --- /dev/null +++ b/abs/core/tweaker/bin/twk_general.pl.orig @@ -0,0 +1,579 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'all' ); + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + # KnoppMyth-centric file-level tweaks + sub file_tweaks { + my($option) = @_; + + my @commands = ( + # keymap tweaks + "twk_keymap.sh" + ); + + foreach my $command (@commands) { + if (my $error = execute_shell_command($command)) { + my $logger = get_logger('tweaker.script'); + $logger->error("$error"); + $logger->error("Unable to implement option $option with command $command."); + } + } + return 1; + } + + # Enhance the default MythTV SQL + sub SQL_tweaks { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + # ??? This also exists in mkmythdir - it should be centralized + my $SQL_DirData="/myth"; # Top level dir. of structure, + my $SQL_DirTV="$SQL_DirData/tv"; # TV Recordings, + my $SQL_DirMusic="$SQL_DirData/music/"; # Music storage, + my $SQL_DirGames="$SQL_DirData/games"; # Games dir, + my $SQL_DirPics="$SQL_DirData/gallery"; # Pictures directory. + my $SQL_DirTmp="$SQL_DirData/tmp"; # DVD temp + my $SQL_DirVideo="$SQL_DirData/video"; # videos + + # ??? Eventually, put these into a text file so that 1) people can contribute without having to code, and 2) the data + # stays separate from the code and can be re-used by other (non-Perl) implementations + + # + # keybindings + # + change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "Gallery"], ["action","PLAY"]]); + change_or_make_entry("keybindings", [["keylist", ">"]], [["context", "Music"], ["action","FFWD"]]); + change_or_make_entry("keybindings", [["keylist", "<"]], [["context", "Music"], ["action","RWND"]]); + change_or_make_entry("keybindings", [["keylist", "PgDown,.,Z,End"]], [["context", "Music"], ["action","NEXTTTRACK"]]); + change_or_make_entry("keybindings", [["keylist", "PgUp,Q,Home"]], [["context", "Music"], ["action","PREVTRACK"]]); + change_or_make_entry("keybindings", [["keylist", "P,l"]], [["context", "Music"], ["action","PAUSE"]]); + + change_or_make_entry("keybindings", [["keylist", ">"]], [["context", "Stream"], ["action","FORWARD"]]); + change_or_make_entry("keybindings", [["keylist", "<"]], [["context", "Stream"], ["action","REWIND"]]); + change_or_make_entry("keybindings", [["keylist", "F"]], [["context", "Stream"], ["action","FULLSCREEN"]]); + change_or_make_entry("keybindings", [["keylist", "|,\\,F9,Volume Mute"]], [["context", "Stream"], ["action","MUTE"]]); + change_or_make_entry("keybindings", [["keylist", "Y"]], [["context", "Stream"], ["action","STOREMARKED"]]); + + change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "TV Frontend"], ["action","PLAYBACK"]]); + + change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "TV Playback"], ["action","PLAY"]]); + change_or_make_entry("keybindings", [["keylist", "P"]], [["context", "TV Playback"], ["action","PAUSE"]]); # default, but here for completeness + + # + # better awareness of different video extensions + # + change_or_make_entry("videotypes", [["playcommand", "mplayer-resumer.pl -fs -zoom -vc theora,fftheora, -vo xv %s"]], [["extension", "ogg"]]); + change_or_make_entry("videotypes", [["playcommand", "mplayer-resumer.pl -fs -zoom -vc theora,fftheora, -vo xv %s"]], [["extension", "theora"]]); + foreach my $video_ext ("mp2", "tp", "ts", "m2p", "nuv", "mkv") { + change_or_make_entry("videotypes", [["playcommand", "Internal"], ["f_ignore", "0"], ["use_default", "1"]], [["extension", $video_ext]]); + } + foreach my $non_video_ext ("jpg", "par2") { + change_or_make_entry("videotypes", [["f_ignore", "1"]], [["extension", $non_video_ext]]); + } + + # + # games, game players, and emulators + # + my @players = ( + [ 'SDLMAME', '/myth/games/xmame/roms', '/myth/games/xmame/screenshots', '/usr/games/mame -rp /myth/games/xmame/roms %s', 'MAME' ], + [ 'ZSNES','/myth/games/snes/roms','/myth/games/snes/screens','/usr/bin/zsnes','SNES' ], + [ 'FCEU','/myth/games/nes/roms','/myth/games/nes/screens','/usr/games/fceu','NES' ], + [ 'Frozen Bubble', '', '', '/usr/games/frozen-bubble --fullscreen','PC' ] + ); + + foreach my $player (@players) { + # These INSERTs will fail if the playername is already present, but we don't error out if it happens. + do_query("INSERT INTO gameplayers (playername, rompath, screenshots, commandline, gametype) VALUES ('".join("','",@$player)."');"); + } + # somewhat hardwired, but make sure Frozen Bubble shows up in the list of playable games. + do_query("INSERT INTO gamemetadata (system, romname, gamename, genre, year, publisher, rompath, gametype) VALUES ('". + join("','",($players[3][0], $players[3][3], $players[3][0], "action/puzzle", "2006", "Frozen Bubble Team", "/usr/games", $players[3][4]))."');"); + + # + # smart music playlists + # + # categoryid, name + change_or_make_entry("music_smartplaylist_categories", [["name", "Decades"]], [["categoryid", 1]]); + change_or_make_entry("music_smartplaylist_categories", [["name", "Favorite Tracks"]], [["categoryid", 2]]); + change_or_make_entry("music_smartplaylist_categories", [["name", "New Tracks"]], [["categoryid", 3]]); + + foreach my $decade (60, 70, 80, 90, 100) { + my $id = ($decade / 10) - 5; + my $query = "INSERT INTO music_smartplaylist_items (smartplaylistid, field, operator, value1, value2) VALUES ($id, 'Year', 'is between'," . ($decade+1900) . "," . ($decade+1909) . ");"; + do_query($query); + $query = "INSERT INTO music_smartplaylists (name, categoryid, matchtype, orderby, limitto) VALUES ('". ($decade+1900) . "\\'s', 1, 'All', 'Artist (A)', 0);"; + do_query($query); + } + + my @other_lists = ( + [ + ( 'Rating', 'is greater than', '7', 'Favorite Tracks', 2, 'Artist (A), Album (A)', 0 ), + ( 'Play Count', 'is greater than', '0', '100 Most Played Tracks', 2, 'Play Count (D)', 100 ), + ( 'Play Count', 'is equal to', '0', 'Never Played Tracks', 3, 'Artist (A), Album (A)', 0 ) + ]); + + my $id=6; + foreach my $other_list (@other_lists) { + change_or_make_entry("music_smartplaylist_items", [["field", @$other_list[0]], ["operator", @$other_list[1]], ["value1", @$other_list[2]]], [["smartplaylistid", $id]]); + change_or_make_entry("music_smartplaylists", [["name", @$other_list[3]], ["categoryid", @$other_list[4]], ["matchtype", "All"], ["orderby", @$other_list[5]], ["limitto", @$other_list[6]]], [["smartplaylistid", $id]]); + $id++; + } + + # + # default playgroup with time-related settings + # + change_or_make_entry("playgroup", [["skipahead", 10], ["skipback", 5], ["timestretch", 100], ["jump", 1]], [["name", "Default"]]); + + # + # useful recording profiles and transcoding options + # + change_or_make_entry("profilegroups", [["name", "Software Encoders (v4l based)"], ["cardtype", "V4L"], ["is_default", 1]], [["id", 1]]); + change_or_make_entry("profilegroups", [["name", "MPEG-2 Encoders (PVR-x50, PVR-500)"], ["cardtype", "MPEG"], ["is_default", 1]], [["id", 2]]); + change_or_make_entry("profilegroups", [["name", "Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)"], ["cardtype", "MJPEG"], ["is_default", 1]], [["id", 3]]); + change_or_make_entry("profilegroups", [["name", "Hardware HDTV"], ["cardtype", "HDTV"], ["is_default", 1]], [["id", 4]]); + change_or_make_entry("profilegroups", [["name", "Hardware DVB Encoders"], ["cardtype", "DVB"], ["is_default", 1]], [["id", 5]]); + change_or_make_entry("profilegroups", [["name", "Transcoders"], ["cardtype", "TRANSCODE"], ["is_default", 1]], [["id", 6]]); + change_or_make_entry("profilegroups", [["name", "FireWire Input"], ["cardtype", "FIREWIRE"], ["is_default", 1]], [["id", 7]]); + change_or_make_entry("profilegroups", [["name", "USB Mpeg-4 Encoder (Plextor ConvertX, etc)"], ["cardtype", "GO7007"], ["is_default", 1]], [["id", 8]]); + change_or_make_entry("profilegroups", [["name", "DBOX2 Input"], ["cardtype", "DBOX2"], ["is_default", 1]], [["id", 9]]); + change_or_make_entry("profilegroups", [["name", "Freebox Input"], ["cardtype", "Freebox"], ["is_default", 1]], [["id", 10]]); + change_or_make_entry("profilegroups", [["name", "HDHomeRun Recorders"], ["cardtype", "HDHOMERUN"], ["is_default", 1]], [["id", 11]]); + change_or_make_entry("profilegroups", [["name", "CRC IP Recorders"], ["cardtype", "CRC_IP"], ["is_default", 1]], [["id", 12]]); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4bitrate', 2200)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionvhq', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4option4mv', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'samplerate', 48000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'volume', 100)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4bitrate', 2200)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionvhq', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4option4mv', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'samplerate', 48000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'volume', 100)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (27, 'transcodelossless', 1)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4bitrate', 2200)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionvhq', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4option4mv', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'samplerate', 48000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'volume', 100)"); + + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'transcodelossless', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'transcoderesize', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4bitrate', 1500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4maxquality', 2)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4minquality', 15)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4qualdiff', 3)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'scalebitrate', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionvhq', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4option4mv', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionidct', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionime', 0)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'encodingthreadcount', 1)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2bitrate', 4500)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpegquality', 100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpeghdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpegvdecimation', 4)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2streamtype', 'MPEG-2 PS')"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2maxbitrate', 6000)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'samplerate', 44100)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mp3quality', 7)"); + do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'volume', 100)"); + + + # I don't know why we have so many of these. Only profilegroup 6 seems to matter. + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 1]], [["id", 1]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 1]], [["id", 2]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 1]], [["id", 3]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 1]], [["id", 4]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 2]], [["id", 5]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 2]], [["id", 6]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 2]], [["id", 7]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 2]], [["id", 8]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 3]], [["id", 9]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 3]], [["id", 10]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 3]], [["id", 11]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 3]], [["id", 12]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 4]], [["id", 13]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 4]], [["id", 14]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 4]], [["id", 15]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 4]], [["id", 16]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 5]], [["id", 17]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 5]], [["id", 18]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 5]], [["id", 19]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 5]], [["id", 20]]); + change_or_make_entry("recordingprofiles", [["name", 'RTjpeg/MPEG4'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 21]]); + change_or_make_entry("recordingprofiles", [["name", 'MPEG2'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 22]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 8]], [["id", 23]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 8]], [["id", 24]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 8]], [["id", 25]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 8]], [["id", 26]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 6]], [["id", 27]]); + change_or_make_entry("recordingprofiles", [["name", 'Medium Quality'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 28]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "MP3"]], [["id", 29]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 10]], [["id", 30]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 10]], [["id", 31]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 10]], [["id", 32]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 10]], [["id", 33]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 11]], [["id", 34]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 11]], [["id", 35]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 11]], [["id", 36]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 11]], [["id", 37]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 12]], [["id", 38]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 12]], [["id", 39]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 12]], [["id", 40]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 12]], [["id", 41]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 7]], [["id", 42]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 7]], [["id", 43]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 7]], [["id", 44]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 7]], [["id", 45]]); + change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 9]], [["id", 46]]); + change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 9]], [["id", 47]]); + change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 9]], [["id", 48]]); + change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 9]], [["id", 49]]); + + # + # settings + # + change_or_make_setting('AlwaysStreamFiles', '1'); # new in R6 + change_or_make_setting('AutoCommercialSkip', '1'); + change_or_make_setting('AutoExpireWatchedPriority', '1'); + change_or_make_setting('BackendServerPort', '6543'); + change_or_make_setting('BackendStatusPort', '6544'); + change_or_make_setting('CDWriterDevice', 'ATA:1,0,0'); +# change_or_make_setting('ChannelOrdering', 'chanid'); + change_or_make_setting('CommercialSkipMethod', '255'); + change_or_make_setting('DVDBookmarkPrompt', '1'); + change_or_make_setting('DVDRipLocation', $SQL_DirTmp); + change_or_make_setting('DefaultRipQuality', '1'); + change_or_make_setting('DefaultTranscoder', '28'); # change this number if you redefine the transcoders above + change_or_make_setting('Deinterlace', '1'); + change_or_make_setting('DeletesFollowLinks', '1'); + change_or_make_setting('DisableFirewireReset', '0'); + change_or_make_setting('EITCrawIdleStart','60'); + change_or_make_setting('EITIgnoresSource','0'); + change_or_make_setting('EITTimeOffset','Auto'); + change_or_make_setting('EITTransportTimeout','5'); + change_or_make_setting('EPGEnableJumpToChannel','1'); + change_or_make_setting('EPGFillType','12'); + change_or_make_setting('EnableDVDBookmark','1'); + change_or_make_setting('EndOfRecordingExitPrompt','1'); + change_or_make_setting('GalleryDir', $SQL_DirPics); + change_or_make_setting('GalleryRecursiveSlideshow', '1'); + change_or_make_setting('HaltCommand', 'sudo /sbin/halt'); + change_or_make_setting('HostAudiotype','ALSA'); + change_or_make_setting('HostMiro','1'); + change_or_make_setting('HostXine','1'); + change_or_make_setting('Hostpluginmythappletrailers','1'); + change_or_make_setting('Hostpluginmytharchive','1'); + change_or_make_setting('Hostpluginmythbrowser','1'); + change_or_make_setting('Hostpluginmythcontrols','1'); + change_or_make_setting('Hostpluginmythflix','1'); + change_or_make_setting('Hostpluginmythgallery','1'); + change_or_make_setting('Hostpluginmythgame','1'); + change_or_make_setting('HostpluginmythgameFceu','1'); + change_or_make_setting('HostpluginmythgameMame','1'); + change_or_make_setting('HostpluginmythgameMame','1'); + change_or_make_setting('HostpluginmythgameROMDB','1'); + change_or_make_setting('HostpluginmythgameXE','1'); + change_or_make_setting('HostpluginmythgameZsnes','1'); + change_or_make_setting('HostpluginmythgameZsnes','1'); + change_or_make_setting('Hostpluginmythmovietime','1'); + change_or_make_setting('Hostpluginmythmusic','1'); + change_or_make_setting('Hostpluginmythnews','1'); + change_or_make_setting('Hostpluginmythphone','1'); + change_or_make_setting('Hostpluginmythsmolt','1'); + change_or_make_setting('Hostpluginmythstream','1'); + change_or_make_setting('Hostpluginmythvideo','1'); + change_or_make_setting('Hostpluginmythvideo_dvdcss','0'); + change_or_make_setting('Hostpluginmythvideo_dvdcss','0'); + change_or_make_setting('Hostpluginmythvodka','1'); + change_or_make_setting('Hostpluginmythweather','1'); + change_or_make_setting('JobAllowCommFlag', '1'); + change_or_make_setting('JobAllowTranscode', '1'); + change_or_make_setting('JobAllowUserJob1', '1'); + change_or_make_setting('JobAllowUserJob2', '2'); + change_or_make_setting('JobQueueCPU','0'); + change_or_make_setting('JobQueueCheckFrequency','60'); + change_or_make_setting('JobQueueCommFlagCommand','mythcommflag'); + change_or_make_setting('JobQueueMaxSimultaneousJobs','1'); + change_or_make_setting('JobQueueTranscodeCommand','mythtranscode'); + change_or_make_setting('JobQueueWindowEnd','23:59'); + change_or_make_setting('JobQueueWindowStart','00:00'); + change_or_make_setting('JobsRunOnRecordHost','0'); + change_or_make_setting('LiveTVInAllPrograms','1'); + change_or_make_setting('MasterMixerVolume','100'); + change_or_make_setting('MasterServerIP', '127.0.0.1'); + change_or_make_setting('MasterServerPort', '6543'); + change_or_make_setting('MediaChangeEvents','1'); + change_or_make_setting('MonitorDrives', '1'); + change_or_make_setting('MusicLocation', $SQL_DirMusic); + change_or_make_setting('MythArchivePng2yuvCmd', 'png2yuv'); # ??? still used? + change_or_make_setting('MythArchiveShareDir','/myth/archive/'); + change_or_make_setting('MythArchiveTempDir', $SQL_DirTmp); + change_or_make_setting('MythFillDatabaseArgs', '--quiet'); + change_or_make_setting('MythFillDatabaseLog', '/var/log/mythtv/mythfilldatabase.log'); + change_or_make_setting('MythFillDatabasePath', '/usr/bin/nice -n 19 /usr/bin/mythfilldatabase'); + change_or_make_setting('MythFillEnabled', '1'); + change_or_make_setting('MythTVtv', $SQL_DirTV); + change_or_make_setting('NetworkControlEnabled', '1'); + change_or_make_setting('PCMMixerVolume', '50'); + change_or_make_setting('PVR350VideoDev', '/dev/video16'); + change_or_make_setting('PlayBoxShading', '0'); + change_or_make_setting('PlayMode', 'none'); + change_or_make_setting('PlaybackExitPrompt', '2'); + change_or_make_setting('PlaybackPreviewLowCPU', '1'); +# change_or_make_setting('PlaybackReturnPrompt', '1'); +# change_or_make_setting('PlaybackReturnPrompt', '2'); + change_or_make_setting('RebootCommand', 'sudo /sbin/reboot'); + change_or_make_setting('RecordFilePrefix',$SQL_DirTV); + change_or_make_setting('SelectChangesChannel', '1'); + change_or_make_setting('ServerHaltCommand', 'sudo /sbin/halt -p'); + change_or_make_setting('ShowWholeTree', '1'); + change_or_make_setting('SmartChannelChange', '1'); + change_or_make_setting('StartupSecsBeforeRecording', '120'); + change_or_make_setting('TruncateDeletesSlowly', '1'); + change_or_make_setting('UseOutputPictureControls', '1'); + change_or_make_setting('UserJob1', 'myth2ipod -cut \"%DIR%\" \"%FILE%\"'); + change_or_make_setting('UserJob2', 'myt2xvid3 -cut \"%DIR%\" \"%FILE%\"'); + change_or_make_setting('UserJobDesc1', 'Encode for iPod'); + change_or_make_setting('UserJobDesc2', 'Transcode to XviD'); + change_or_make_setting('UserJobDesc3', 'User Job #3'); + change_or_make_setting('UserJobDesc4', 'User Job #4'); + change_or_make_setting('VCDPlayerCommand', 'mplayer vcd:\/\/ -cdrom-device %d -fs -zoom -vo xv -vf pp=lb'); + change_or_make_setting('VideoArtworkDir', "$SQL_DirVideo/.covers"); + change_or_make_setting('VideoBrowserNoDB', '1'); + change_or_make_setting('VideoDefaultPlayer', 'mplayer-resumer.pl -fs -zoom -vo xv %s'); + change_or_make_setting('VideoGalleryNoDB', '1'); + change_or_make_setting('VideoStartupDir', $SQL_DirVideo); + change_or_make_setting('VideoTreeNoDB', '1'); + change_or_make_setting('VisualMode','BumpScope;Gears;Goom;MonoScope;Squares;StereoScope;Synaesthesia;LibVisual-bumpscope;LibVisual-corona;LibVisual-infinite;AlbumArt'); + change_or_make_setting('weatherbackgroundfetch', '1'); + change_or_make_setting('WebBrowserCommand','/usr/bin/mythbrowser'); + change_or_make_setting('WebBrowserHideScrollbars','0'); + change_or_make_setting('WebBrowserScrollMode','1'); + change_or_make_setting('WebBrowserScrollSpeed','4'); + change_or_make_setting('WebBrowserZoomLevel','20'); + change_or_make_setting('WebcamDevice','/dev/video'); + change_or_make_setting('WOLbackendCommand',''); + change_or_make_setting('WOLbackendConnectRetry','5'); + change_or_make_setting('WOLslaveBackendsCommand',''); + change_or_make_setting('WakeupTimeFormat','hh:mm yyyy-MM-dd'); + change_or_make_setting('WatchTVGuide','0'); + change_or_make_setting('WeatherDBSchemaVer','1000'); + change_or_make_setting('WebBrowserCommand','/usr/bin/mythbrowser'); + change_or_make_setting('WebBrowserHideScrollbars','0'); + change_or_make_setting('WebBrowserScrollMode','1'); + change_or_make_setting('WebBrowserScrollSpeed','4'); + change_or_make_setting('WebBrowserZoomLevel','20'); + change_or_make_setting('XineramaScreen','0'); + change_or_make_setting('blockSDWUwithoutClient','1'); + change_or_make_setting('idleWaitForRecordingTime','15'); + change_or_make_setting('mythdvd.DVDPlayerCommand', 'Internal'); + change_or_make_setting('mythvideo.VideoTreeRemember', '1'); + change_or_make_setting('mythfilldatabaseLastRunStart',''); + change_or_make_setting('mythfilldatabaseLastRunEnd',''); + change_or_make_setting('mythfilldatabaseLastRunStatus',''); + + # + # customexample table + # + change_or_make_entry("customexample", [["fromclause", ""], ["whereclause", "program.category_type = \"movie\" AND program.airdate >= YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) AND program.stars > 0.5 "], ["search", "1"]], [["rulename", "New Flix"]]); + +# # As much of MythWeather as we can automate for now + my $units = 0; + my $metric_units = do_query("SELECT * FROM settings WHERE value='SIUnits' AND data='YES'"); + if ($metric_units) { + $units=0; + } else { + $units=1; + } +# change_or_make_entry("weatherscreens", [["draworder", "0"], ["container", "Six Day Forecast"], ["units", $units]], [["screen_id", 1]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "6dlocation"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# for (my $increment=0; $increment < 6; $increment++) { +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "date-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "high-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "icon-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "low-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# } +# change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "updatetime"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]); +# +# change_or_make_entry("weathersourcesettings", [["sourceid", "1"], ["source_name", "BBC-Current-XML"], ["update_timeout", "7200"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/bbccurrentxml.pl"], ["author", "Stuart Morgan"], ["version", "0.1"], ["email", "stuart\@tase.co.uk"], ["types", "cclocation,station_id,copyright,observation_time,weather,temp,relative_humidity,wind_dir,pressure,visibility,weather_icon,appt,wind_spdgst"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "2"], ["source_name", "BBC-3day-XML"], ["update_timeout", "21600"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/bbcthreedayxml.pl"], ["author", "Stuart Morgan"], ["version", "0.1"], ["email", "stuart\@tase.co.uk"], ["types", "3dlocation,station_id,copyright,weather_icon,date-0,icon-0,low-0,high-0,date-1,icon-1,low-1,high-1,date-2,icon-2,low-2,high-2,updatetime"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "3"], ["source_name", "ENVCAN"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ca_envcan/envcan.pl"], ["author", "Joe Ripley"], ["version", "0.4"], ["email", "vitaminjoe\@gmail.com"], ["types", "cclocation,station_id,copyright,observation_time,observation_time_rfc822,weather,temp,relative_humidity,wind_dir,wind_degrees,wind_speed,wind_gust,pressure,dewpoint,heat_index,windchill,visibility,weather_icon,appt,wind_spdgst,3dlocation,6dlocation,date-0,icon-0,low-0,high-0,date-1,icon-1,low-1,high-1,date-2,icon-2,low-2,high-2,updatetime,date-3,icon-3,low-3,high-3,date-4,icon-4,low-4,high-4,date-5,icon-5,low-5,high-5"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "4"], ["source_name", "NDFD-6_day"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ndfd.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "3dlocation,6dlocation,updatetime,high-0,high-1,high-2,high-3,high-4,high-5,low-0,low-1,low-2,low-3,low-4,low-5,icon-0,icon-1,icon-2,icon-3,icon-4,icon-5,date-0,date-1,date-2,date-3,date-4,date-5"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "5"], ["source_name", "NDFD-18_hour"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ndfd18.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "18hrlocation,updatetime,temp-0,temp-1,temp-2,temp-3,temp-4,temp-5,18icon-0,18icon-1,18icon-2,18icon-3,18icon-4,18icon-5,pop-0,pop-1,pop-2,pop-3,pop-4,pop-5,time-0,time-1,time-2,time-3,time-4,time-5"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "6"], ["source_name", "NWS-Alerts"], ["update_timeout", "600"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/nws-alert.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "swlocation,updatetime,alerts"]]); +# change_or_make_entry("weathersourcesettings", [["sourceid", "7"], ["source_name", "NWS-XML"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/nwsxml.pl"], ["author", "Lucien Dunning"], ["version", "0.2"], ["email", "ldunning\@gmail.com"], ["types", "cclocation,station_id,latitude,longitude,observation_time,observation_time_rfc822,weather,temperature_string,temp,relative_humidity,wind_string,wind_dir,wind_degrees,wind_speed,wind_gust,pressure_string,pressure,dewpoint_string,dewpoint,heat_index_string,heat_index,windchill_string,windchill,visibility,weather_icon,appt,wind_spdgst"]]); + + my $ipaddress = execute_shell_command("ifconfig | grep inet.addr | head -1"); + $ipaddress =~ s/.*inet addr:(\d+.\d+.\d+.\d+)\s.*/$1/g; + + # Change from the generic IP address to the real one. + do_query("UPDATE settings SET data='$ipaddress' where data='127.0.0.1'"); + do_query("UPDATE settings SET data='$ipaddress' where data='MythTVip'"); # ??? needed? + + my $hostname = execute_shell_command("hostname") || "localhost"; + # one table at a time, replace hostname with our actual hostname + # ??? can this be done all at once in MySQL? + foreach my $table ("capturecard", "inuseprograms", "jobqueue", "jumppoints", "keybindings", "music_playlists", + "musicplaylist", "recorded", "settings", "weatherscreens") { + do_query("UPDATE $table SET hostname='$hostname'"); + } + + # Some entries in 'settings' should stay NULL: http://www.mythtv.org/wiki/index.php/Settings_table + # There are fewer entries that stay NULL than there are that should have the hostname set, so while + # it duplicates some effort to change them from NULL to the hostname and them back to NULL, it's + # easier to maintain and more future-proof. + foreach my $entry ("mythfilldatabaseLastRunStart", "mythfilldatabaseLastRunEnd", "mythfilldatabaseLastRunStatus", + "DataDirectMessage", "HaveRepeats", "DBSchemaVer", "DefaultTranscoder", "MythFillSuggestedRunTime", + "MythFillGrabberSuggestsTime", "MasterServerIP", "MasterServerPort", "TVFormat", "VbiFormat", "FreqTable", + "TimeOffset", "MasterBackendOverride", "DeletesFollowLinks", "HDRingbufferSize", "EITTransportTimeout", + "EITIgnoresSource", "EITCrawIdleStart", "startupCommand", "blockSDWUwithoutClient", "idleWaitForRecordingTime", + "StartupSecsBeforeRecording", "WakeupTimeFormat", "SetWakeuptimeCommand", "ServerHaltCommand", "preSDWUCheckCommand", + "WOLbackendConnectRetry", "WOLbackendCommand", "WOLslaveBackendsCommand", "JobsRunOnRecordHost", + "AutoCommflagWhileRecording", "JobQueueCommFlagCommand", "JobQueueTranscodeCommand", + "AutoTranscodeBeforeAutoCommflag", "SaveTranscoding", "UserJobDesc1", "UserJob1", "UserJobDesc2", "UserJob2", + "UserJobDesc3", "UserJob3", "UserJobDesc4", "UserJob4", "PreviewPixmapOffset", "AllRecGroupPassword", + "MaximumCommercialSkip", "CommSkipAllBlanks", "LastFreeCard", "LiveTVPriority", "AutoExpireMethod", + "AutoExpireDefault", "RerecordWatched", "AutoExpireWatchedPriority", "AutoExpireLiveTVMaxAge", + "AutoExpireDayPriority", "AutoExpireExtraSpace", "AutoExpireInsteadOfDelete", "DeletedFifoOrder", + "CommercialSkipMethod", "AggressiveCommDetect", "AutoCommercialFlag", "AutoTranscode", "AutoRunUserJob1", + "AutoRunUserJob2", "AutoRunUserJob3", "AutoRunUserJob4", "OverTimeCategory", "CategoryOverTime", + "EPGEnableJumpToChannel", "LogEnabled", "MythFillEnabled", "MythFillDatabasePath", "MythFillDatabaseArgs", + "MythFillDatabaseLog", "MythFillPeriod", "MythFillMinHour", "MythFillMaxHour", "SchedMoveHigher", "SchedOpenEnd", + "ComplexPriority", "PrefInputPriority", "SingleRecordRecPriority", "FindOneRecordRecPriority", "ArchiveDBSchemaVer", + "FlixDBSchemaVer", "GalleryDBSchemaVer", "GameDBSchemaVer", "MusicDBSchemaVer", "PhoneDBSchemaVer", + "mythvideo.DBSchemaVer", "WeatherDBSchemaVer") { + do_query("UPDATE settings SET hostname=NULL WHERE value='$entry'"); + } + + change_or_make_setting('MasterBackendOverride','1'); # I don't remember why, but making the hostname NULL is important here + do_query("UPDATE settings SET hostname=NULL WHERE value='MasterBackendOverride'"); + + # storagegroup + change_or_make_entry("storagegroup", [["groupname", "Default"], ["hostname", $hostname], ["dirname", $SQL_DirTV]], [["id", 1]]); + + # + # Websites for mythbrowser + # + #change_or_make_entry("websites", [["grp", "LinHeS"], ["dsc", ""], ["updated", ""]], [["url", "http://knoppmyth.net"]]); + #change_or_make_entry("websites", [["grp", "LinHeS"], ["dsc", ""], ["updated", ""]], [["url", "http://knoppmythwiki.org"]]); + + disconnect_from_db(); + + # Fix hostname for iPod feed URLs + $command = "sed -i \"s/hostname\\//$hostname\\//g\" /usr/local/bin/myth2ipod"; + execute_shell_command($command); + + # Fix hostname for XViD feed URLs + $command = "sed -i \"s/192.168.0.222\\//$hostname\\//g\" /usr/local/bin/myt2xvid3"; + execute_shell_command($command); + + # Customize default MythTV library.xml to reflect KnoppMyth's wider selection of + # online stream options. + #$command = "sed -i \"/STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s///; }\" /usr/share/mythtv/library.xml"; + $command = "/bin/cp /usr/share/mythtv/library.xml.km /usr/share/mythtv/library.xml"; + execute_shell_command($command); + } else { + my $logger = get_logger('tweaker.script'); + $logger->error("Unable to connect to mythconverg database"); + $logger->error("Unable to implement option $option."); + return -1; + } + return 1; + } + + file_tweaks($option) || exit -1; + SQL_tweaks($option) || exit -1; +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + recommendation_level("recommended", "These tweaks benefit all users."); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_graphics.pl b/abs/core/tweaker/bin/twk_graphics.pl new file mode 100755 index 0000000..22b6688 --- /dev/null +++ b/abs/core/tweaker/bin/twk_graphics.pl @@ -0,0 +1,149 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +# List all the options that this script supports. Make sure it matches what's in +# the corresponding .tcf entry. +set_known_options( 'low', 'medium', 'high' ); + +sub check_for_GL() { + # ??? Need to make this update a class variable instead of a temp file. + my $fps = execute_shell_command("[ -e /tmp/fps ] && cat /tmp/fps") || -1; + + # We think that any nVidia cards at or below NV25 are not well-supported + # for GL. Newer cards are NV34 or above, or have a different starting letter. + my $generation = execute_shell_command("lspci -v | grep \"nVidia Corporation\" | grep VGA | awk -FCorporation '{ print \$2 }' | awk '{ print \$1 }'"); + my $letters = substr($generation,0,2); + if (("$letters" eq "NV") && ("$generation" lt "NV24")) { + $fps = 0; + } + + if ($fps == -1) { + my $result = execute_shell_command("glxinfo | grep 'direct rendering'"); + if ($result =~ m/direct rendering: Yes/) { + my $logger = get_logger('tweaker.script'); + $logger->info("Hardware OpenGL rendering ability detected."); + # Now poll the strength, returning the FPS from glxgears, run at the default resolution. + # I would love to be able to poll this in a way that 1) doesn't pop up a GUI window and + # 2) doesn't rely on manually making a database that maps video cards to performance levels. + $result = execute_shell_command("script -q -c \"glxgears -fullscreen & sleep 11 ; pkill -15 glxgears\" | grep FPS | tail -1"); + if ($result =~ m/ (\d+)\.\d+ FPS/) { + $fps = $1; + execute_shell_command("echo $fps > /tmp/fps"); + } + } else { + $fps = 0; + execute_shell_command("echo $fps > /tmp/fps"); + } + } + return $fps; +} + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + switch ($option) { + # List all the options that this script supports. You can have as many as you like. + case "low" { + change_or_make_setting('ThemePainter', 'Qt') || exit -1; + change_or_make_setting('SlideshowUseOpenGL', '0') || exit -1; + change_or_make_setting('SlideshowOpenGLTransition', 'none') || exit -1; + change_or_make_setting('SlideshowTransition', 'none') || exit -1; + } + case "medium" { + change_or_make_setting('ThemePainter', 'Qt') || exit -1; + change_or_make_setting('SlideshowUseOpenGL', '1') || exit -1; + change_or_make_setting('SlideshowOpenGLTransition', 'random (gl)') || exit -1; + change_or_make_setting('SlideshowTransition', 'random') || exit -1; + } + case "high" { + change_or_make_setting('ThemePainter', 'opengl') || exit -1; + change_or_make_setting('SlideshowUseOpenGL', '1') || exit -1; + change_or_make_setting('SlideshowOpenGLTransition', 'random (gl)') || exit -1; + change_or_make_setting('SlideshowTransition', 'random') || exit -1; + } + + # In all cases, do the following: + + # enable anti-aliased fonts + my $qtrc="/home/mythtv/.qt/qtrc"; + # clean out old Xft settings + my $command = "sed -i 's/.*Xft=.*//g' $qtrc"; + + if (my $error = execute_shell_command($command)) { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } else { + # Add Xft settings + my $command = "sed -i 's/embedFonts=true/embedFonts=true\nenableXft=true\nuseXft=true/g' $qtrc"; + if (my $error = execute_shell_command($command)) { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } else { + # Make sure to use an AA-capable font + my $command = "sed -i 's/font=.*/font=Sans Serif,12,-1,5,50,0,0,0,0,0/g' $qtrc"; + if (my $error = execute_shell_command($command)) { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: $error"); + $logger->error("ERROR: Unable to implement option $option."); + exit(-1); + } + } + } + } + } else { + exit -1; + } + disconnect_from_db(); +} + +# Poll the system to see what recommendationlevel the given option has on the system. +sub poll_options { + my($option) = @_; + + # These are somewhat arbitrary at this point. Note that they correspond to + # _full screen_ glxgears results in Frames Per Second (FPS), since GL is used + # at full screen resolution in MythTV. + my $low_threshold = 350; # at or below $low_threshold FPS, GL is not considered good enough to use in MythTV + my $medium_threshold = 425; # GL is pretty usable here + my $high_threshold = 500; + + threshold_test($option, check_for_GL(), "video card", $low_threshold, $medium_threshold, $high_threshold); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_keymap.sh b/abs/core/tweaker/bin/twk_keymap.sh new file mode 100755 index 0000000..c7f4093 --- /dev/null +++ b/abs/core/tweaker/bin/twk_keymap.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +# This script is called from twk_general.pl to implement keymap standardization in KnoppMyth + +#KNOPPMYTH_SHARE=/usr/local/share/knoppmyth + +#################### +# Unify key mappings +#################### + +# Universal keybindings: +# Function Remote Key Keyboard Key +# ------------------------------------------ +# Skip Back << PgUp +# Skip Forward >> PgDn +# Play |> l +# Pause || p +# Stop [] ESC + +#Make mplayer use keymappings that are compatible with other media player keymappings. +#NOTE: PGUP is PageUp and PGDWN is PageDown +MPLAYER_CONF=/etc/mplayer/input.conf +if [[ -f $MPLAYER_CONF ]]; then + sed -i "s/^PGUP .*/PGUP seek -60/" $MPLAYER_CONF + sed -i "s/^PGDWN .*/PGDWN seek +60/" $MPLAYER_CONF + sed -i "s/^p .*/p pause/" $MPLAYER_CONF + sed -i "s/^l .*/l pause/" $MPLAYER_CONF +else + echo "ERROR: $MPLAYER_CONF is missing, which is unexpected." + exit -1 +fi + +#Do the same for smplayer +SMPLAYER_CONF=/home/mythtv/.config/smplayer/smplayer.ini +if [[ -f $SMPLAYER_CONF ]]; then + echo "INFO: $SMPLAYER_CONF found; tweaking now" +else + echo "INFO: $SMPLAYER_CONF is missing; installing full version, then (re-)tweaking" + sudo -u mythtv mkdir -p /home/mythtv/.config/smplayer/ + /bin/cp $TWEAKER_ROOT/fs$SMPLAYER_CONF $SMPLAYER_CONF +fi +sed -i "s/rewind3=.*/rewind3=PgUp/" $SMPLAYER_CONF +sed -i "s/forward3=.*/forward3=PgDown/" $SMPLAYER_CONF +sed -i "s/quit=.*/quit=Esc/" $SMPLAYER_CONF +sed -i "s/pause=.*/pause=P/" $SMPLAYER_CONF +sed -i "s/play=.*/play=L/" $SMPLAYER_CONF +# Remove conflicting keybindings +sed -i "s/stop=.*/stop=/" $SMPLAYER_CONF +sed -i "s/play_or_pause=.*/play_or_pause=/" $SMPLAYER_CONF +sed -i "s/exit_fullscreen=.*/exit_fullscreen=/" $SMPLAYER_CONF +sed -i "s/pl_play=.*/pl_play=/" $SMPLAYER_CONF diff --git a/abs/core/tweaker/bin/twk_localization.pl b/abs/core/tweaker/bin/twk_localization.pl new file mode 100755 index 0000000..fc84440 --- /dev/null +++ b/abs/core/tweaker/bin/twk_localization.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'US_English', 'GB_English' ); # Should eventually expand to handle all translations available for MythTV. + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + # The entire planet except the US uses metric measurements. + change_or_make_setting('SIUnits', 'YES') || exit -1; + switch ($option) { + case "US_English" { + # Uses Imperial measurements for things like weather. + change_or_make_setting('SIUnits', 'NO') || exit -1; + change_or_make_setting('Language', 'EN') || exit -1; + change_or_make_setting('ISO639Language0', 'eng') || exit -1; + change_or_make_setting('ISO639Language1', 'eng') || exit -1; + change_or_make_setting('MythArchiveVideoFormat', 'NTSC') || exit -1; + } + case "GB_English" { + change_or_make_setting('Language', 'EN_GB') || exit -1; + change_or_make_setting('ISO639Language0', 'eng') || exit -1; + change_or_make_setting('ISO639Language1', 'eng') || exit -1; + change_or_make_setting('MythArchiveVideoFormat', 'PAL') || exit -1; + } + } + } else { + exit -1; + } + disconnect_from_db(); +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + + recommendation_level("optional", "We don't yet have any way to know what your preferred language is. This option is as valid as any other."); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_misc.pl b/abs/core/tweaker/bin/twk_misc.pl new file mode 100755 index 0000000..96771a6 --- /dev/null +++ b/abs/core/tweaker/bin/twk_misc.pl @@ -0,0 +1,13 @@ +# Placeholder for tweaks not yet implemented + +# Screen size / viewing distance +change_or_make_setting('chanPerPage', '4') || exit -1; +change_or_make_setting('timePerPage', '3') || exit -1; + +# Disk space / sound quality / compatibility +change_or_make_setting('DefaultRipQuality', '2') || exit -1; +change_or_make_setting('Mp3UseVBR', '1') || exit -1; + +# Localization / tuner type +# N. America +change_or_make_setting('VbiFormat', 'NTSC Closed Caption') || exit -1; diff --git a/abs/core/tweaker/bin/twk_scrub_sql.pl b/abs/core/tweaker/bin/twk_scrub_sql.pl new file mode 100755 index 0000000..c1de20b --- /dev/null +++ b/abs/core/tweaker/bin/twk_scrub_sql.pl @@ -0,0 +1,96 @@ +#!/usr/bin/perl -w + +# Copyright 2008-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +# List all the options that this script supports. Make sure it matches what's in +# the corresponding .tcf entry. +set_known_options( 'scrub', 'protect' ); +my $beginning_of_user_index=65; + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + + my @table_list = ( + [ 'capturecard', 'cardid' ], # tuner-related + [ 'cardinput', 'cardinputid' ], # tuner-related + [ 'videosource', 'sourceid' ], # tuner-related + + [ 'dvdinput', 'intid' ], + [ 'dvdtranscode', 'intid' ], + [ 'gameplayers', 'gameplayerid' ], + [ 'music_smartplaylist_categories', 'categoryid' ], + [ 'music_smartplaylist_items', 'smartplaylistitemid' ], + [ 'music_smartplaylists', 'smartplaylistid' ], + [ 'phonedirectory', 'intid' ], + [ 'profilegroups', 'id' ], + [ 'recordingprofiles', 'id' ], + [ 'storagegroup', 'id' ], + [ 'videotypes', 'intid' ], + ); + + switch ($option) { + case "scrub" { # delete the rows from the table + foreach my $table (@table_list) { + do_query("DELETE FROM @$table[0] WHERE @$table[1] < $beginning_of_user_index;"); + do_query("ALTER TABLE @$table[0] AUTO_INCREMENT = 0;"); + } + } + case "protect" { + foreach my $table (@table_list) { + do_query("ALTER TABLE @$table[0] AUTO_INCREMENT = $beginning_of_user_index;"); + } + } + } + } else { + exit -1; + } + disconnect_from_db(); +} + +sub poll_options { + my($option) = @_; + switch ($option) { + case "scrub" { + recommendation_level("recommended", "This is required to ensure that other KnoppMyth SQL Tweaks work."); + } + case "protect" { + recommendation_level("recommended", "This is required to ensure that other KnoppMyth SQL Tweaks do not clobber user-made changes."); + } + } +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; + + diff --git a/abs/core/tweaker/bin/twk_tuners.pl b/abs/core/tweaker/bin/twk_tuners.pl new file mode 100755 index 0000000..22c6a23 --- /dev/null +++ b/abs/core/tweaker/bin/twk_tuners.pl @@ -0,0 +1,491 @@ +#!/usr/bin/perl -w + +# Copyright 2008 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'all' ); # When Tweaker handles multiple instances of a script, this will be expanded to +# handle options for a given card, based on what it supports, e.g. ATSC, QAM, NTSC-coax, NTSC-Svideo, etc. +# The current version of this script will run once and set up defaults for all detected cards, choosing +# a default configuration based on some assumptions of common usage. Modes in this array should be listed +# from least desirable to most desirable. E.g. ["NTSC", "ATSC", "QAM"] + +my @capture_card_patterns = ( + # DIGITAL + # ------- + # ATSC-only devices + [ "pcHDTV hd-2000", [".*0400.*109e.*036e.*r11.*7063.*2000.*"], + ["DVB", ["ATSC"]]], +# [ "BBTI Air2PC v2", [".*0280.*13d0.*2103.*r02.*13d0.*2103.*"], # ??? dupe 1; mihanson +# ["DVB", ["ATSC"]]], + + # DVB-T devices + [ "DViCO FusionHDTV DVB-T Lite", [".*0400.*109e.*036e.*r11.*18ac.*db10.*"], + # secondary device "0480" "109e" "0878" -r11 "18ac" "d500" + ["DVB", ["DVB-T"]]], + [ "DViCO FusionHDTV DVB-T1", [".*0400.*14f1.*8800.*18ac.*db00.*"], + ["DVB", ["DVB-T"]]], # also has composite and S-Video in for frame grabbing + [ "DViCO FusionHDTV DVB-T Plus", [".*0400.*14f1.*8800.*8800.*db10.*"], + ["DVB", ["DVB-T"]]], + [ "DViCO FusionHDTV dual Express", [".*0400.*14f1.*8852.*18ac.*db78.*"], + ["DVB", ["DVB-T"]]], + [ "Twinhan VisionPlus DVB-T", [".*0400.*109e.*036e.*r11.*1822.*0001.*"], # ??? dupe 2; jbman, Girkers + ["DVB", ["DVB-T"]]], +# [ "EU Hauppauge PVR-500 (DVB-T)", [".*0400.*4444.*0016.*0070.*e807.*"], +# ["DVB", ["DVB-T"]]], + [ "Avermedia A777", [".*0480.*1131.*7133.*1461.*2c05.*", ".*0480.*1131.*7134.*1461.*2c05.*"], + ["DVB", ["DVB-T"]]], + [ "Compro T300", [".*0480.*1131.*7134.*185b.*c900.*", ".*0480.*1131.*7134.*7134.*c900.*"], + ["DVB", ["DVB-T"]]], + + # DVB-C devices + [ "Siemens DVB-C", [".*0480.*1131.*7146.*110a.*0000.*"], + ["DVB", ["DVB-C"]]], + + # DVB-S devices + [ "VisionPlus 1020A", [".*0480.*109e.*0878.*1822.*0001.*"], + ["DVB", ["DVB-S"]]], +# [ "Technisat Skystar2", [".*0280.*13d0.*2103.*r01.*13d0.*2103.*"], # ??? dupe 1; nbdwt73, neutron68 +# ["DVB", ["DVB-S"]]], + [ "Twinhan 102g", [".*0400.*109e.*036e.*r11.*1822.*0001.*"], # ??? dupe 2; neutron68 + # secondary device "0480" "109e" "0878" -r11 "1822" "0001" + ["DVB", ["DVB-S"]]], + + # ATSC/QAM devices + [ "Kworld ATSC-110", [".*0480.*1131.*7133.*17de.*"], + ["DVB", ["ATSC", "QAM"]]], + [ "pcHDTV hd-3000", [".*0400.*14f1.*8800.*3000.*"], + ["DVB", ["ATSC", "QAM"]]], # the hd-3000 has several sub-devices; this pattern matches the digital tuner + [ "BBTI HD5000AV / AirStar 2 TV", [".*0280.*13d0.*2103.*r02.*13d0.*2103.*"], # ??? dupe 1; manicmike + ["DVB", ["ATSC", "QAM", "DVB-T"]]], + [ "pcHDTV hd-5500", [".*0400.*14f1.*8800.*7063.*5500.*"], + ["DVB", ["ATSC", "QAM"]]], + [ "Hauppauge WinTV-HVR-1800", [".*0400.*14f1.*8880.*0070.*7801.*"], + ["DVB", ["ATSC", "QAM"]]], + [ "DViCO Fusion Express", [".*0400.*14f1.*8852.*r02.*18ac.*d500.*"], + ["DVB", ["ATSC", "QAM"]]], + + # card has one sub-device; this pattern matches the primary device + [ "DViCO Fusion HDTV5 Lite", [".*0400.*109e.*036e.*r11.*18ac.*d500.*"], + # secondary device "0480" "109e" "0878" -r11 "18ac" "d500" + ["DVB", ["ATSC", "QAM"]]], + + # ANALOG + # ------- + # NTSC cards + # MPEG-2 type + [ "Hauppauge PVR-150", [".*0400.*4444.*0016.*0070.*8003.*", ".*0400.*4444.*0016.*0070.*8801.*"], + ["MPEG", ["NTSC"]]], + [ "Hauppauge PVR-250", [".*0200.*10ec.*8139.*1799.*5000.*", ".*0400.*4444.*0016.*0070.*4009.*", ".*0400.*4444.*0016.*0070.*f7f9.*"], + ["MPEG", ["NTSC"]]], + [ "Hauppauge PVR-350", [".*0400.*4444.*0803.*0070.*4000.*"], + ["MPEG", ["NTSC"]]], + + # NTSC/PAL cards + # MPEG-2 type + [ "Hauppauge PVR-500", [".*0400.*4444.*0016.*0070.*e817.*", ".*0400.*4444.*0016.*0070.*e807.*"], # look for each of two devices on the card, since it's dual-tuner + ["MPEG", ["NTSC"]]], + + # Frame grabbers +# [ "bt878-based frame grabbers", [".*0400.*109e.*036e.*", ".*0480.*109e.*0878.*"], +# ["V4L", ["NTSC"]]], + + # USB patterns + + [ "Dvico Dual Digital 4 rev2", [".* 0fe9:db98 .*"], + ["DVB", ["DVB-T"]]], + ); + +# "Hauppauge Nova-T 500 Dual DVB-T" + +#T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0 +#D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +#P: Vendor=2040 ProdID=9941 Rev= 1.00 +#S: Manufacturer=Hauppauge +#S: Product=WinTV Nova-DT +#S: SerialNumber=4027351140 +#C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA +#I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=dvb_usb_dib0700 +#E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us +#E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +#E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +#E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms + +# "Hauppauge Nova-T-500" + +#T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0 +#D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +#P: Vendor=2040 ProdID=9950 Rev= 1.00 +#S: Manufacturer=Hauppauge +#S: Product=WinTV Nova-DT +#S: SerialNumber=4027353863 +#C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA +#I: If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=dvb_usb_dib0700 +#E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us +#E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +#E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +#E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + my $logger = get_logger('tweaker.script'); + + # Get a list of all PCI and USB devices for later processing + my @device_list = split('\n', execute_shell_command("lspci -mn ; lsusb")); + + # Iterate through the list of known tuner cards, then the list of known network tuners. + # For each known tuner, configure a safe default for it if it's found. Set up + # well-named video sources for any mode supported by any tuner, and pick a default. + + # Determine the recording priority for a given device using the following priority rules, + # from top to bottom, the top being the most significant, and the bottom being the least + # significant + + # Input types in order of decreasing priority: + # Digital cable, digital satellite, digital OTA, analog cable, analog line-in, analog OTA + + # Device types in order of decreasing priority: + # local device, remote device + + # Capture types in order of decreasing priority: + # MPEG-2 creators (or passthrough of MPEG-2), MPEG-4 creators, frame grabbers + + # For example, if device1 supports a better input type than device2, device1 is always preferred. + # Ties are broken by the next level down. For example, if device1 and device2 both support the + # same input type, the tie is broken based on whether it's a local or remote device. Finally, + # ties of input type and device type are broken by the output of the device. It should be + # noted that it's possible to tie in all categories, and MythTV will break ties based on the + # order in which the devices are defined. + + + # For the following subroutines, $relative_device_count represents which device this is in + # the context of the total devices of its type. $global_device_count represents which device + # this is amongst all capture devices. Each returns a list of row names and values + # for the capturecard table, appropriate for the relevant type of device. + + # Create an entry in the capturecard table for the given tuner. + sub make_capturecard_SQL { + my($global_device_count, $relative_device_count, $cardtype, $tuner_number)=@_; + # $tuner_number is only used for HDHomeRuns + my $defaultinput=""; + my $hostname = execute_shell_command("hostname") || "localhost"; + my $checkfields = [["cardid", "$global_device_count"], + ["hostname", "$hostname"], + ["cardtype", "$cardtype"]]; + my $setfields; + my $logger = get_logger('tweaker.script'); + + # Because other devices use the /dev/video* and /dev/vbi* device + # files, the "device count" is used to determine which number follows the base + # device file name, e.g. /dev/video1, /dev/vbi1 + sub make_V4L_capturecard_SQL { + my($relative_device_count)=@_; # 0-indexed + + return [["videodevice", "/dev/video$relative_device_count"], + ["audiodevice", "/dev/dsp"], + ["vbidevice", "/dev/vbi$relative_device_count"], + ["audioratelimit", "0"]]; + } + + # Because other devices use the /dev/video* and /dev/vbi* device + # files, the "device count" is used to determine which number follows the base + # device file name, e.g. /dev/video1, /dev/vbi1 + sub make_MPEG_capturecard_SQL { + my($relative_device_count, $defaultinput)=@_; # 0-indexed + + return [["videodevice", "/dev/video$relative_device_count"], + ["defaultinput", $defaultinput]]; + } + + sub make_DVB_capturecard_SQL { + my($relative_device_count, # 0-indexed + $defaultinput)=@_; + my $logger = get_logger('tweaker.script'); + + $logger->debug("DEFAULTINPUT: $defaultinput"); + + return [["videodevice", "$relative_device_count"], # Rather than being a device file, it's a 0-indexed value indicating + # which of the N available DVB devices this is. Since a card can have more than one DVB device on it, there may + # be more DVB "videodevice"s on a system than there are distinct "cardid"s. + ["defaultinput", $defaultinput], + ["dvb_on_demand", "1"]]; + } + + # special case of DVB device + sub make_HDHOMERUN_capturecard_SQL { + my($hdhr_hex_id, $tuner_number, $defaultinput)=@_; + + return [["videodevice", "$hdhr_hex_id"], + ["defaultinput", $defaultinput], + ["dvb_on_demand", "0"], + ["dbox2_port", $tuner_number] # 0 or 1 + ]; + } + + $logger->debug("CARD TYPE: $cardtype"); + switch($cardtype) { + case "V4L" { + $setfields = make_V4L_capturecard_SQL($relative_device_count); + } + case "DVB" { + $defaultinput = "DVBInput"; + $setfields = make_DVB_capturecard_SQL($relative_device_count, $defaultinput); + } + case "HDHOMERUN" { + $defaultinput = "MPEG2TS"; + $setfields = make_HDHOMERUN_capturecard_SQL($relative_device_count, $tuner_number, $defaultinput); + } + case "MPEG" { + $defaultinput = "Tuner 1"; + $setfields = make_MPEG_capturecard_SQL($relative_device_count, $defaultinput); + } + } + + change_or_make_entry("capturecard", $setfields, $checkfields); + return $defaultinput; + } + + # Create an entry in videosource corresponding to the sub-type of input this device takes + # Return the sourceid for the entry we just made, which is a rough metric of desirability. + sub verify_or_make_videosource_SQL { + # sub-types are NTSC, PAL, ATSC, QAM, DVB-S, DVB-T, DVB-C, etc. + my($sub_type)=@_; + my $logger = get_logger('tweaker.script'); + + $logger->debug("\t\t\tUpdating or adding videosource for sub-type: $sub_type"); + + switch($sub_type) { + # North American options, from least desirable to most desirable (this is slightly arbitrary) + case "NTSC" { + change_or_make_entry("videosource", [["name", "analog_broadcast"], ["freqtable", "try-all"]], [["sourceid", 1]]); + # This is one of two cases where a sub_type can be used in two ways. Both videosources are made, but the preferred one is + # cable, the most common option. + change_or_make_entry("videosource", [["name", "analog_cable"], ["freqtable", "try-all"]], [["sourceid", 5]]); + return 5; + } + case "ATSC" { + change_or_make_entry("videosource", [["name", "digital_broadcast"], ["freqtable", "try-all"]], [["sourceid", 10]]); + return 10; + } + case "QAM" { + change_or_make_entry("videosource", [["name", "digital_cable"], ["freqtable", "try-all"]], [["sourceid", 20]]); + return 20; + } + + # Options for the rest of the planet + case "PAL" { + change_or_make_entry("videosource", [["name", "analog_broadcast"], ["freqtable", "try-all"]], [["sourceid", 1]]); + # This is one of two cases where a sub_type can be used in two ways. Both videosources are made, but the preferred one is + # cable, the most common option. + change_or_make_entry("videosource", [["name", "analog_cable"], ["freqtable", "try-all"]], [["sourceid", 5]]); + return 5; + } + case "DVB-T" { + change_or_make_entry("videosource", [["name", "digital_broadcast"], ["freqtable", "try-all"]], [["sourceid", 10]]); + return 10; + } + case "DVB-C" { + change_or_make_entry("videosource", [["name", "digital_cable"], ["freqtable", "try-all"]], [["sourceid", 20]]); + return 20; + } + + # Planet-wide options + case "DVB-S" { + change_or_make_entry("videosource", [["name", "digital_satellite"], ["freqtable", "try-all"]], [["sourceid", 15]]); + return 15; + } + } + } + + sub make_cardinput_SQL { + my($tuner_card_number, $sourceid, $inputname, $priority_modifier)=@_; + + change_or_make_entry("cardinput", [["sourceid", $sourceid], ["cardid", $tuner_card_number], + ["inputname", $inputname], ["preference", $sourceid], ["tunechan", ""], + ["startchan", "Please add"], ["freetoaironly", "1"], + ["recpriority", $sourceid+$priority_modifier]], + [["cardinputid", $tuner_card_number]]); + } + + sub max { + my($a, $b)=@_; + if ($a > $b) { + return $a; + } else { + return $b; + } + } + + my $global_device_count=0; + + # Configure each supported tuner/capture device detected on the system. + + # built-in, PCI, PCI Express, or USB + $logger->debug("Processing built-in, PCI, PCI Express or USB devices..."); + for my $a_device (@device_list) { + $logger->debug("DEVICE: $a_device"); + my $match=0; + + for my $device_data (@capture_card_patterns) { + $logger->debug("\tIs there a @$device_data[0] at this location?"); + + for my $patterns (@$device_data[1]) { + for my $pattern (@$patterns) { + if ($match) { + next; + } else { + $logger->debug("\t\tPATTERN: $pattern"); + $match += ($a_device =~ m/$pattern/i); + if ($match) { + $global_device_count++; # 1-indexed + + $logger->debug("\t\tfound one!"); + # Each device has a device type (e.g. MPEG, DVB, V4L) that it supports, and a + # list of sub_types (e.g. PAL, NTSC, DVB-S, DVB-T, DVB-C, ATSC, QAM). + # The device type is used to configure the capturecard table and the cardinput table. + # The sub_types are used to populate the videosource table. + # The device type and "best" sub_type are used to set the 'sourceid' field of the cardinput table. + + for my $typeblock (@$device_data[2]) { + my $device_type = @$typeblock[0]; + $logger->debug("\t\tDEVICE TYPE: $device_type"); # e.g. "DVB", "MPEG", etc. + $cardtypes{$device_type}++; + my $sourceid = -1; + for my $sub_types (@$typeblock[1]) { + for my $sub_type (@$sub_types) { + $logger->debug("\t\tSUB-TYPE: $sub_type\n"); # e.g. "DVB-S", "QAM", etc. + # ensure that the videosource table has an entry for each sub_type + # that this device supports; use the "best" one for the device by + # default + + # + # POPULATE videosource table + # + $sourceid = max(verify_or_make_videosource_SQL($sub_type), $sourceid); + } + } + $logger->debug("\t\t\"BEST\" SOURCE ID: $sourceid\n"); + + # + # POPULATE capturecard table + # + my $defaultinput = make_capturecard_SQL($global_device_count, $cardtypes{$device_type}-1, $device_type, -1); + + # + # POPULATE cardinput table + # + make_cardinput_SQL($global_device_count, $sourceid, $defaultinput, 0); + } + } + } + } + } + } + } + + # network tuner devices + $logger->debug("Processing network devices..."); + + # get our IP address + my $ip_address; + open(SHELL, "ifconfig | grep \"inet addr\" | grep -v 127 |"); + while() { + my @line = split(/:| +/); + $ip_address = $line[3]; + } + close(SHELL); + + # ??? eventually, just add LocalIPCheck.pl's code to Tweaker/Script.pm and avoid bizarre perl-to-shell-to-perl calls at this level + my $ip_class = execute_shell_command("echo $ip_address | LocalIPCheck.pl; echo \$?"); + + if ($ip_class > 0) { # we're on a LAN, not the internet + # Look for HDHomeRun, a DVB ATSC/QAM device + $sourceid=0; + $logger->debug("\tLooking for SiliconDust HDHomeRun..."); + open(SHELL2, "hdhomerun_config discover |"); + while() { + if (m/\d+\.\d+\.\d+\.\d+/) { + my @line = split(/ /); + my $hdhr_hex_id = $line[2]; + + $logger->debug("\tfound $hdhr_hex_id"); + $global_device_count++; # 1-indexed + $cardtypes{"DVB"}++; + # + # POPULATE videosource table + # + for my $sub_type ("ATSC", "QAM") { + $sourceid = max(verify_or_make_videosource_SQL($sub_type), $sourceid); + } + $logger->debug("\t\t\"BEST\" SOURCE ID: $sourceid\n"); + + # + # POPULATE capturecard table + # + + # there are two tuners per HDHomeRun + for (my $sub_tuner_count = 0; $sub_tuner_count < 2; $sub_tuner_count++) { + my $defaultinput = make_capturecard_SQL($global_device_count+$sub_tuner_count, $hdhr_hex_id, "HDHOMERUN", $sub_tuner_count); + # + # POPULATE cardinput table + # + make_cardinput_SQL($global_device_count+$sub_tuner_count, $sourceid, $defaultinput, -4); # the -4 is to make it less desirable + # than a local device + } + $global_device_count++; + + } + } + close(SHELL2); + } # else: don't scan the internet! + + # Filesystem Tweaks for tuners + # This only works with the Nova-T-500 card, but it doesn't hurt any other cards + execute_shell_command("echo \"#switch on onboard amplifier on Nova-T-500 card\" > /etc/modprobe.d/dvb-usb-dib0700"); + execute_shell_command("echo \"options dvb-usb-dib0700 force_lna_activation=1\" >> /etc/modprobe.d/dvb-usb-dib0700"); + } else { + my $logger = get_logger('tweaker.script'); + $logger->error("Unable to connect to mythconverg database"); + $logger->error("Unable to implement option $option."); + return -1; + } +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + + recommendation_level("recommended", "Everyone should scan for tuners to autoconfigure."); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_tuners_notes.txt b/abs/core/tweaker/bin/twk_tuners_notes.txt new file mode 100644 index 0000000..1f2e283 --- /dev/null +++ b/abs/core/tweaker/bin/twk_tuners_notes.txt @@ -0,0 +1,55 @@ +# Some PCI devices have the same lspci -mn fingerprint, yet users are identifying them as having different functions. The example below is reported as an ATSC(DVB-T) card by one user and as a DVB-S card by two other users. lspci -vvxxx provides more fingerprint data, and I'm trying to see if there's a definitive way to tell the cards apart from it. + + [ "BBTI Air2PC v2", [".*0280.*13d0.*2103.*r02.*13d0.*2103.*"], # ??? dupe 1; mihanson + ["DVB", ["ATSC"]]], + # mihanson lspci -vvxxx info: + +#00: d0 13 03 21 07 01 00 04 02 00 80 02 00 40 00 00 +#10: 00 00 64 ed 81 70 00 00 00 00 00 00 00 00 00 00 +#20: 00 00 00 00 00 00 00 00 00 00 00 00 d0 13 03 21 +#30: 00 00 00 00 00 00 00 00 00 00 00 00 0c 01 00 00 + +#00: d0 13 03 21 07 01 00 04 02 00 80 02 00 40 00 00 +#10: 00 00 65 ed a1 70 00 00 00 00 00 00 00 00 00 00 +#20: 00 00 00 00 00 00 00 00 00 00 00 00 d0 13 03 21 +#30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00 + +#00: d0 13 03 21 07 01 00 04 02 00 80 02 00 40 00 00 +#10: 00 00 66 ed c1 70 00 00 00 00 00 00 00 00 00 00 +#20: 00 00 00 00 00 00 00 00 00 00 00 00 d0 13 03 21 +#30: 00 00 00 00 00 00 00 00 00 00 00 00 0a 01 00 00 + +#00: d0 13 03 21 07 01 00 04 02 00 80 02 00 40 00 00 +#10: 00 00 67 ed e1 70 00 00 00 00 00 00 00 00 00 00 +#20: 00 00 00 00 00 00 00 00 00 00 00 00 d0 13 03 21 +#30: 00 00 00 00 00 00 00 00 00 00 00 00 0c 01 00 00 + +# Among the above, there are only three sections that +# differ, shown by XX: +#10: -- -- XX -- XX -- -- -- -- -- -- -- -- -- -- -- +#30: -- -- -- -- -- -- -- -- -- -- -- -- XX -- -- -- + + + [ "Technisat Skystar2", [".*0280.*13d0.*2103.*r01.*13d0.*2103.*"], # ??? dupe 1; nbdwt73, neutron68 + ["DVB", ["DVB-S"]]], + # Neutron68 lspci -vvxxx info: +#00: d0 13 03 21 07 01 00 04 01 00 80 02 00 40 00 00 +#10: 00 00 ae fa 81 c8 00 00 00 00 00 00 00 00 00 00 +#20: 00 00 00 00 00 00 00 00 00 00 00 00 d0 13 03 21 +#30: 00 00 00 00 00 00 00 00 00 00 00 00 05 01 00 00 + +# when compared with mihanson's blocks, these entries differ: +#00: -- -- -- -- -- -- -- -- -- -- -- XX -- -- -- -- +#10: -- -- XX XX XX XX XX -- -- -- -- -- -- -- -- -- +#20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +#30: -- -- -- -- -- -- -- -- -- -- -- -- XX -- -- -- + +# eliminating the entries that even differ among mihanson's devices, we get: +#00: -- -- -- -- -- -- -- -- -- -- -- XX -- -- -- -- +#10: -- -- -- XX -- XX XX -- -- -- -- -- -- -- -- -- +#20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +#30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +# Without more feedback, it's not clear whether or not this pattern is representative +# of the differences between the DVB-S and ATSC versions of this device. + diff --git a/abs/core/tweaker/bin/twk_upgrade.pl b/abs/core/tweaker/bin/twk_upgrade.pl new file mode 100755 index 0000000..b5d09b6 --- /dev/null +++ b/abs/core/tweaker/bin/twk_upgrade.pl @@ -0,0 +1,190 @@ +#!/usr/bin/perl -w + +# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +# +# NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE +# +# Tweaker 0.7 is not interactive, so these post-upgrade changes are a stopgap +# measure to make sure people upgrading from R5F27 get sensible settings +# for things that MythTV 0.21 doesn't know how to handle properly. This file +# should shrink or disappear entirely once Tweaker becomes interactive. +# +# NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE +# + +use Switch; +use Tweaker::Script; +package Tweaker::Script; + +set_known_options( 'all' ); + +# Try to implement the given option. +sub implement_option { + my($option) = @_; + + $dbconnectionstring = get_mythtv_connection_string(); + + if (connect_to_db("DBI:mysql:$dbconnectionstring")) { + # use poll results from twk_cpu.pl to set playback decoder options + my @levels = ("low", "medium", "high"); + foreach my $level (@levels) { + my @results = split(/\|/, execute_shell_command("twk_cpu.pl --poll $level")); + foreach my $result (@results) { + if ($result eq "recommended") { + if ("$level" eq "low") { + change_or_make_setting('DefaultVideoPlaybackProfile', 'CPU--') || exit -1; # best playback defaults for weak hardware + } elsif ("$level" eq "medium") { + change_or_make_setting('DefaultVideoPlaybackProfile', 'CPU+') || exit -1; # best playback defaults for average hardware + } elsif ("$level" eq "high") { + change_or_make_setting('DefaultVideoPlaybackProfile', 'CPU++') || exit -1; # best playback defaults for powerful hardware + } + } + } + } + + # Update visualization modes for 0.21 + change_or_make_setting('VisualMode','BumpScope;Gears;Goom;MonoScope;Squares;StereoScope;Synaesthesia;LibVisual-bumpscope;LibVisual-corona;LibVisual-infinite;LibVisual-jakdaw;LibVisual-jess;AlbumArt'); + + # Remove possibly obsolete and conflicting theme cache entries. + execute_shell_command("/bin/rm -rf /home/mythtv/.mythtv/themecache/"); + + # Fix bizarre ownership of files: + execute_shell_command("chown -f root: /usr/bin/get_dual.sh"); + execute_shell_command("chown -fR root: /usr/lib/krp"); + execute_shell_command("chown -fR root: /usr/local/bin"); + execute_shell_command("chown -f root: /usr/share/man/man1/tv_grab_au.1.gz"); + execute_shell_command("chown -f root: /usr/share/xmltv/tv_grab_au/channel_ids"); + execute_shell_command("chown -fR root:src /usr/src/"); + + # Fix video problems for some nVidia users + execute_shell_command("grep nvidia /etc/X11/xorg.conf && sed -i -e 's/^[ \t]*Option.*\"XvmcUsesTextures\".*/#REMOVEME/g' -e 's/^[ \t]*Option.*\"UseEvents\".*/#REMOVEME/g' /etc/X11/xorg.conf"); # clear out old entries, if present + execute_shell_command("grep nvidia /etc/X11/xorg.conf && sed -i -n '1h;2,\$H;\${g;s/#REMOVEME\\n//g;p}' /etc/X11/xorg.conf"); # clear out old entries, if present + execute_shell_command("grep nvidia /etc/X11/xorg.conf && sed -i 's/\\(^[ \t]*Driver.*\"nvidia\".*\\)/\\1\\n\tOption \"XvmcUsesTextures\" \"false\"\\n\tOption \"UseEvents\" \"true\"/g' /etc/X11/xorg.conf"); + execute_shell_command("if [ -e /home/mythtv/.nvidia-settings-rc ] ; then sed -i -e \"s'.*XVideoTextureSyncToVBlank.*'#REMOVEME'g\" -e \"s'.*XVideoBlitterSyncToVBlank.*'#REMOVEME'g\" /home/mythtv/.nvidia-settings-rc; fi"); + execute_shell_command("grep nvidia /etc/X11/xorg.conf && echo 0/XVideoTextureSyncToVBlank=0 >> /home/mythtv/.nvidia-settings-rc && echo 0/XVideoBlitterSyncToVBlank=0 >> /home/mythtv/.nvidia-settings-rc && sed -i -n '1h;2,\$H;\${g;s/#REMOVEME\\n//g;p}' /home/mythtv/.nvidia-settings-rc"); + + + # Enable any digital audio out device we can. + my $command = "amixer scontrols | grep IEC958"; + my @results = split('\n', execute_shell_command($command)); + foreach my $line (@results) { + if ($line =~ /Simple mixer control (.*),.*/i) { + $command = "su - mythtv -c \"amixer set $1 on\""; # Tries to set all IEC958 devices to 'on' + # but some are just placeholders and can't be turned 'on', therefore don't error out if we fail + execute_shell_command($command); + } + } + execute_shell_command("alsactl store"); # persist the above change(s) + + # The Chaintech AV-710 was generally configured for digital audio in R5F27 in a way that worked + # great there but which is failing utterly in R5.5. Try to detect this old configuration, and if + # it's present, implement the new settings which seem to work for all digital audio devices. + # This may only match 80% of the AV-710 users, but the rest of them can just run the necessary + # tweaker command by hand to get the same result. + if (execute_shell_command('lspci -mn | grep -e ".*0401.*1412.*1724.*1412.*1724"')) { + # found an AV-710, now see if it's configured for digital audio + if (do_query("SELECT * FROM settings WHERE value='AudioOutputDevice' AND data='/dev/adsp'")) { + # The user was using this AV-710's spdif output, so give them the new good digital configuration + execute_shell_command("twk_audio.pl --implement digital"); + } + } + change_or_make_setting('MixerDevice', 'ALSA:default') || exit -1; + + # Undo obsolete mplayer workaround for aspect ratio + execute_shell_command("sed -i 's/.*monitoraspect.*//g' /home/mythtv/.mplayer/config"); + + my $hostname = execute_shell_command("hostname") || "localhost"; + # one table at a time, replace hostname with our actual hostname + # ??? can this be done all at once in MySQL? + foreach my $table ("capturecard", "inuseprograms", "jobqueue", "jumppoints", "keybindings", "music_playlists", + "musicplaylist", "recorded", "settings", "weatherscreens") { + do_query("UPDATE $table SET hostname='$hostname'"); + } + + # Some entries in 'settings' should stay NULL: http://www.mythtv.org/wiki/index.php/Settings_table + # There are fewer entries that stay NULL than there are that should have the hostname set, so while + # it duplicates some effort to change them from NULL to the hostname and them back to NULL, it's + # easier to maintain and more future-proof. + foreach my $entry ("mythfilldatabaseLastRunStart", "mythfilldatabaseLastRunEnd", "mythfilldatabaseLastRunStatus", + "DataDirectMessage", "HaveRepeats", "DBSchemaVer", "DefaultTranscoder", "MythFillSuggestedRunTime", + "MythFillGrabberSuggestsTime", "MasterServerIP", "MasterServerPort", "TVFormat", "VbiFormat", "FreqTable", + "TimeOffset", "MasterBackendOverride", "DeletesFollowLinks", "HDRingbufferSize", "EITTransportTimeout", + "EITIgnoresSource", "EITCrawIdleStart", "startupCommand", "blockSDWUwithoutClient", "idleWaitForRecordingTime", + "StartupSecsBeforeRecording", "WakeupTimeFormat", "SetWakeuptimeCommand", "ServerHaltCommand", "preSDWUCheckCommand", + "WOLbackendConnectRetry", "WOLbackendCommand", "WOLslaveBackendsCommand", "JobsRunOnRecordHost", + "AutoCommflagWhileRecording", "JobQueueCommFlagCommand", "JobQueueTranscodeCommand", + "AutoTranscodeBeforeAutoCommflag", "SaveTranscoding", "UserJobDesc1", "UserJob1", "UserJobDesc2", "UserJob2", + "UserJobDesc3", "UserJob3", "UserJobDesc4", "UserJob4", "PreviewPixmapOffset", "AllRecGroupPassword", + "MaximumCommercialSkip", "CommSkipAllBlanks", "LastFreeCard", "LiveTVPriority", "AutoExpireMethod", + "AutoExpireDefault", "RerecordWatched", "AutoExpireWatchedPriority", "AutoExpireLiveTVMaxAge", + "AutoExpireDayPriority", "AutoExpireExtraSpace", "AutoExpireInsteadOfDelete", "DeletedFifoOrder", + "CommercialSkipMethod", "AggressiveCommDetect", "AutoCommercialFlag", "AutoTranscode", "AutoRunUserJob1", + "AutoRunUserJob2", "AutoRunUserJob3", "AutoRunUserJob4", "OverTimeCategory", "CategoryOverTime", + "EPGEnableJumpToChannel", "LogEnabled", "MythFillEnabled", "MythFillDatabasePath", "MythFillDatabaseArgs", + "MythFillDatabaseLog", "MythFillPeriod", "MythFillMinHour", "MythFillMaxHour", "SchedMoveHigher", "SchedOpenEnd", + "ComplexPriority", "PrefInputPriority", "SingleRecordRecPriority", "FindOneRecordRecPriority", "ArchiveDBSchemaVer", + "FlixDBSchemaVer", "GalleryDBSchemaVer", "GameDBSchemaVer", "MusicDBSchemaVer", "PhoneDBSchemaVer", + "mythvideo.DBSchemaVer", "WeatherDBSchemaVer") { + do_query("UPDATE settings SET hostname=NULL WHERE value='$entry'"); + } + + change_or_make_setting('MythFillDatabaseLog', '/var/log/mythtv/mythfilldatabase.log'); + change_or_make_setting('MasterBackendOverride','1'); # I don't remember why, but making the hostname NULL is important here + do_query("UPDATE settings SET hostname=NULL WHERE value='MasterBackendOverride'"); + + disconnect_from_db(); + + # Fix hostname for iPod feed URLs + $command = "sed -i \"s/hostname\\//$hostname\\//g\" /usr/local/bin/myth2ipod"; + execute_shell_command($command); + + # Fix hostname for XViD feed URLs + $command = "sed -i \"s/192.168.0.222\\//$hostname\\//g\" /usr/local/bin/myt2xvid3"; + execute_shell_command($command); + + # Customize default MythTV library.xml to reflect KnoppMyth's wider selection of + # online stream options. + #$command = "sed -i \"/STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s///; }\" /usr/share/mythtv/library.xml"; + $command = "/bin/cp /usr/share/mythtv/library.xml.km /usr/share/mythtv/library.xml"; + execute_shell_command($command); + + } else { + my $logger = get_logger('tweaker.script'); + $logger->error("ERROR: Unable to connect to mythconverg database"); + $logger->error("ERROR: Unable to implement option $option."); + exit -1; + } + disconnect_from_db(); +} + +# Try to get a Recommendation Level for $option. +sub poll_options { + my($option) = @_; + recommendation_level("recommended", "These tweaks benefit all users."); +} + +# Unimplemented in 0.7 +sub check_option { + help; +} + +# Unimplemented in 0.7 +sub count_iterations { + help; +} + +process_parameters; diff --git a/abs/core/tweaker/bin/twk_what_has_changed.sh b/abs/core/tweaker/bin/twk_what_has_changed.sh new file mode 100755 index 0000000..deff7cf --- /dev/null +++ b/abs/core/tweaker/bin/twk_what_has_changed.sh @@ -0,0 +1,183 @@ +#!/bin/bash + +# Copyright 2008 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv +# and Tom Culliton of . Most of restore_baseline_SQL taken from +# KnoppMyth R5F27's /usr/local/bin/KnoppMyth-run script (multiple authors) +# +# 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 3 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, see . + + +#---------------------------------------------------------------------------- +. /usr/local/bin/backupcommon || { + echo "Can not find common settings!" + exit 1 +} +#---------------------------------------------------------------------------- + +# Target output file for our results +DIFF_RESULTS=/tmp/database_changes.txt +LOGFILE=/var/log/twk_what_has_changed.log +WORKING_DIR=/tmp/ + +# Restore the SQL to the way it would have been after R5F27 was installed +# and before the user made any changes to MythTV settings. +# This is KnoppMyth-centric and does not apply to general MythTV distros, +# however it is possible to generalize this to apply to any MythTV distro +# including generic Linux distros in which MythTV has been installed. +# +# Preconditions: MySQL daemon is running +# +# Postconditions: 'mythconverg' is deleted and re-created, just as it +# would be during the course of a normal installation. +restore_baseline_SQL() { + echo "restoring baseline SQL" >> $LOGFILE + KRP_RESULT=-1 + KRPAutoDetect.pl &> /dev/null # be quiet + KRP_RESULT=$?; + + # Parts from R5F27's KnoppMyth-run + KNOPPMYTH_SQL_FILE="/usr/local/share/knoppmyth/KnoppMyth.sql" + + # Try to detect and configure settings for various tuner + # and capture devices. + /usr/local/bin/TunerConfig.sh $KNOPPMYTH_SQL_FILE >> /dev/null + /usr/local/bin/ren_host.sh + GlobalSQLtweaker.sh $KNOPPMYTH_SQL_FILE + + if [[ ($KRP_RESULT != 1) && ($KRP_RESULT != 2) && ($KRP_RESULT != 3) && ($KRP_RESULT != 10) && (-n "$IS_AUS") ]]; then # not Dragon + /usr/local/bin/epia_sql.sh + fi + + # General MythTV SQL settings for all boxes + if [ -f "/usr/local/bin/MythTV-sql" ]; then + # Interject platform-specific SQL settings before we populate the SQL + # database. + if [[ ($KRP_RESULT == 1) || ($KRP_RESULT == 2) || ($KRP_RESULT == 3) || ($KRP_RESULT == 10) ]]; then # Dragon + DragonSQLtweaker.sh $KNOPPMYTH_SQL_FILE + fi + # Now use the (possibly modified) KnoppMyth.sql to populate initial + # MythTV settings. + + # This wipes out the current mythconverg and replaces it with what's in $KNOPPMYTH_SQL_FILE + sh /usr/local/bin/MythTV-sql $KNOPPMYTH_SQL_FILE + fi + + echo \ + "MythTV will re-launch in a tiny window. If it asks you about +upgrading the schema, agree. When the schema upgrade is complete, +exit MythTV. +You can exit MythTV immediately if you aren't asked to do a schema +upgrade." + echo "###" + echo "Press ENTER to re-launch MythTV." + read CONTINUE; + restart_mythtv "--geometry 640x480" +} + +# Call mysql and only dump the requested data in tab seperated columns +get_data () { + mysql mythconverg -u root -sNBe "$*" +} + +# Compares $MYTHTV_EXPECTED_DB_NAME to $USERS_DB_NAME +compare_databases() { + echo "comparing databases" >> $LOGFILE + tables_to_compare="capturecard cardinput codecparams displayprofilegroups displayprofiles dtv_multiplex keybindings playgroups profilegroups recordingprofiles settings videotypes weatherdatalayout weatherscreens weathersourcesettings" + hostnames=$(get_data "select distinct hostname from settings where hostname is not null") + + /etc/init.d/mysql start >> $LOGFILE + # Do some MySQL magic to compare $tables_to_compare between + # $MYTHTV_EXPECTED_DB_NAME (baseline) and $USERS_DB_NAME (user's version) + # ??? +} + +# This is somewhat KnoppMyth-centric, though minor modification would +# make it work generally. +function restart_mythtv { + echo "restarting MythTV" >> $LOGFILE + EXTRA_PARAMETERS=$1 ; shift + /etc/init.d/mythtv-backend start >> $LOGFILE + killall mythfrontend + # re-launches the frontend and gives the user a chance to upgrade to latest schema + su - mythtv -c "export DISPLAY=:0.0 ; mythfrontend --logfile /var/log/mythtv/mythfrontend.log $EXTRA_PARAMETERS" >> $LOGFILE +} + +function rename_database { + db_source=$1 ; shift + db_target=$1 ; shift + + echo "renaming database $db_source to $db_target" >> $LOGFILE + + # Exit the frontend before messing with the SQL + killall mythfrontend + # If we stop MySQL before stopping the MythTV backend, we'll probably trigger badness + /etc/init.d/mythtv-backend stop >> $LOGFILE + # MySQL needs to stop before we do this. + /etc/init.d/mysql stop >> $LOGFILE + /bin/mv $db_source $db_target +} + +main() { + echo -n "$0 started running: " >> $LOGFILE + date >> $LOGFILE + + echo "STEP 0..." + echo "STEP 0" >> $LOGFILE + # 0) acquire system settings + MYTHTV_EXPECTED_DB_NAME=`grep DBName /etc/mythtv/mysql.txt | awk -F= '{ print $2 }'` + USERS_DB_NAME="mythconverg-copy" + /etc/init.d/mysql start >> $LOGFILE + # MySQL needs to be running or mysqladmin won't return anything + SQL_HOME=`mysqladmin variables | grep datadir | awk -F\| '{ print $3 }' | sed 's/ //g'` + + echo "STEP 1..." + echo "STEP 1" >> $LOGFILE + # 1) rename the current MythTV MySQL database + rename_database $SQL_HOME$MYTHTV_EXPECTED_DB_NAME $WORKING_DIR$USERS_DB_NAME + + echo "STEP 2..." + echo "STEP 2" >> $LOGFILE + # 2) re-create the R5F27 baseline SQL. + /etc/init.d/mysql start >> $LOGFILE + restore_baseline_SQL + + echo "STEP 3..." + echo "STEP 3" >> $LOGFILE + # 3) compare the fresh baseline DB with the user's modified DB, and save the + # diffs to a text file + # ??? + + echo "STEP 4..." + echo "STEP 4" >> $LOGFILE + # 4) restore the user's database + rename_database $WORKING_DIR$USERS_DB_NAME $SQL_HOME$MYTHTV_EXPECTED_DB_NAME + /etc/init.d/mysql start >> $LOGFILE + + echo "STEP 5..." + echo "STEP 5" >> $LOGFILE + # 5) Tell them the comparison is done, tell them where to find the results, + # and prompt them to restart MythTV. + echo "Your results are in $DIFF_RESULTS" + echo "###" + echo "Press ENTER to re-launch MythTV." + read CONTINUE; + + restart_mythtv "&" + echo "DONE" + echo -n "$0 stopped running: " >> $LOGFILE + date >> $LOGFILE +} + +main + diff --git a/abs/core/tweaker/fs/etc/asound.conf b/abs/core/tweaker/fs/etc/asound.conf new file mode 100644 index 0000000..ffb665d --- /dev/null +++ b/abs/core/tweaker/fs/etc/asound.conf @@ -0,0 +1,15 @@ +pcm.spdifdmix { + type dmix + ipc_key 1337 + slave { + pcm "hw:0,1" + format S32_LE + } +} + +pcm.!default { + type plug + slave { + pcm spdifdmix + } +} diff --git a/abs/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini b/abs/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini new file mode 100644 index 0000000..9660607 --- /dev/null +++ b/abs/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini @@ -0,0 +1,429 @@ +[%General] +mplayer_bin=mplayer +driver\vo="xv," +driver\ao="alsa," +screenshot_directory=/home/mythtv/.config/smplayer/screenshots +dont_remember_media_settings=false +dont_remember_time_pos=false +audio_lang= +subtitle_lang= +use_direct_rendering=false +use_double_buffer=true +disable_screensaver=true +use_soft_video_eq=false +use_slices=true +autoq=6 +add_blackborders_on_fullscreen=false +use_soft_vol=true +softvol_max=110 +use_scaletempo=-1 +dont_change_volume=false +use_hwac3=false +use_audio_equalizer=true +use_volume_option=-1 +loop=false +osd=0 +file_settings_method=hash + +[drives] +dvd_device=/dev/dvd +cdrom_device=/dev/cdrom +vcd_initial_title=2 +use_dvdnav=false + +[performance] +priority=2 +frame_drop=true +hard_frame_drop=false +autosync=false +autosync_factor=100 +h264_skip_loop_filter=1 +HD_height=720 +fast_audio_change=-1 +threads=1 +cache_for_files=2000 +cache_for_streams=1000 +cache_for_dvds=0 +cache_for_vcds=1000 +cache_for_audiocds=1000 + +[subtitles] +font_file= +font_name= +use_fontconfig=false +subcp=ISO-8859-1 +use_enca=false +enca_lang=en +font_autoscale=1 +subfuzziness=1 +autoload_sub=true +use_ass_subtitles=true +ass_line_spacing=0 +use_closed_caption_subs=false +use_forced_subs_only=false +subtitles_on_screenshots=false +use_new_sub_commands=-1 +change_sub_scale_should_restart=-1 +styles\fontname=Arial +styles\fontsize=20 +styles\primarycolor=4294967295 +styles\backcolor=4278190080 +styles\outlinecolor=4278190080 +styles\bold=false +styles\italic=false +styles\halignment=2 +styles\valignment=0 +styles\borderstyle=1 +styles\outline=1 +styles\shadow=2 +styles\marginl=20 +styles\marginr=20 +styles\marginv=8 +force_ass_styles=false +user_forced_ass_style= +freetype_support=true + +[advanced] +color_key=20202 +use_mplayer_window=false +monitor_aspect= +use_idx=false +mplayer_additional_options= +mplayer_additional_video_filters= +mplayer_additional_audio_filters= +log_mplayer=true +log_smplayer=true +log_filter=.* +autosave_mplayer_log=false +mplayer_log_saveto= +repaint_video_background=false +use_edl_files=true +prefer_ipv4=true +use_short_pathnames=false +change_video_equalizer_on_startup=true +use_pausing_keep_force=true +correct_pts=-1 +actions_to_run= + +[gui] +fullscreen=false +start_in_fullscreen=false +compact_mode=false +stay_on_top=0 +size_factor=100 +resize_method=1 +style= +show_frame_counter=false +show_motion_vectors=false +mouse_left_click_function=dvdnav_mouse +mouse_right_click_function=show_context_menu +mouse_double_click_function=fullscreen +mouse_middle_click_function=mute +mouse_xbutton1_click_function= +mouse_xbutton2_click_function= +wheel_function=0 +seeking1=10 +seeking2=60 +seeking3=600 +seeking4=30 +update_while_seeking=false +time_slider_drag_delay=100 +language= +iconset= +balloon_count=5 +restore_pos_after_fullscreen=false +save_window_size_on_exit=true +close_on_finish=false +default_font= +pause_when_hidden=false +allow_video_movement=false +gui=DefaultGUI +gui_minimum_width=0 +default_size=@Size(580 440) +hide_video_window_on_audio_files=true +report_mplayer_crashes=true +reported_mplayer_is_old=false +auto_add_to_playlist=true +add_to_playlist_consecutive_files=false + +[directories] +latest_dir=/home/mythtv +last_dvd_directory= + +[defaults] +initial_sub_scale=5 +initial_sub_scale_ass=1 +initial_volume=40 +initial_contrast=0 +initial_brightness=0 +initial_hue=0 +initial_saturation=0 +initial_gamma=0 +initial_audio_equalizer=0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +initial_panscan_factor=1 +initial_sub_pos=100 +initial_volnorm=false +initial_postprocessing=false +initial_deinterlace=0 +initial_audio_channels=2 +initial_stereo_mode=0 +initial_audio_track=1 +initial_subtitle_track=1 + +[mplayer_info] +mplayer_detected_version=29134 +mplayer_user_supplied_version=-1 + +[instances] +use_single_instance=true +connection_port=8000 +use_autoport=true +temp\autoport=57685 + +[floating_control] +margin=0 +width=100 +animated=true +display_in_compact_mode=false +bypass_window_manager=true + +[history] +recents=@Invalid() +recents\max_items=10 +urls=@Invalid() +urls\max_items=10 + +[default_gui] +fullscreen_toolbar1_was_visible=false +fullscreen_toolbar2_was_visible=false +compact_toolbar1_was_visible=false +compact_toolbar2_was_visible=false +pos=@Point(0 25) +size=@Size(580 440) +toolbars_state=@ByteArray(\0\0\0\xff\0\0\x11\x95\xfd\0\0\0\x1\0\0\0\x3\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x1\0\0\0\x1\xfb\0\0\0\x18\0p\0l\0\x61\0y\0l\0i\0s\0t\0\x64\0o\0\x63\0k\x2\0\0\0\x19\0\0\0\x19\0\0\x3\xc0\0\0\x1\xe0\0\0\x2\x44\0\0\x1\x36\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x2\0\0\0\x2\0\0\0\x2\0\0\0\x10\0t\0o\0o\0l\0\x62\0\x61\0r\0\x31\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0t\0o\0o\0l\0\x62\0\x61\0r\0\x32\x1\0\0\x1\xc5\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x3\0\0\0\x2\0\0\0\x1a\0\x63\0o\0n\0t\0r\0o\0l\0w\0i\0\x64\0g\0\x65\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0$\0\x63\0o\0n\0t\0r\0o\0l\0w\0i\0\x64\0g\0\x65\0t\0_\0m\0i\0n\0i\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0) +actions\toolbar1=open_file, open_dvd, open_url, separator, compact, fullscreen, separator, screenshot, separator, show_file_properties, show_playlist, show_preferences, separator, play_prev, play_next +actions\controlwidget=play, pause_and_frame_step, stop, separator, rewindbutton_action, timeslider_action, forwardbutton_action, separator, fullscreen, mute, volumeslider_action +actions\controlwidget_mini=play_or_pause, stop, separator, rewind1, timeslider_action, forward1, separator, mute, volumeslider_action +actions\floating_control=play, pause, stop, separator, rewindbutton_action, timeslider_action, forwardbutton_action, separator, fullscreen, mute, volumeslider_action, separator, timelabel_action + +[base_gui_plus] +show_tray_icon=false +mainwindow_visible=true +trayicon_playlist_was_visible=false +widgets_size=0 +fullscreen_playlist_was_visible=false +fullscreen_playlist_was_floating=false +compact_playlist_was_visible=false +ignore_playlist_events=false + +[playlist] +repeat=false +shuffle=false +auto_get_info=true +recursive_add_directory=false +save_playlist_in_config=true +play_files_from_start=true +latest_dir= + +[playlist_contents] +count=0 +current_item=-1 +modified=false + +[actions] +open_file=Ctrl+F +open_directory= +open_playlist= +open_vcd= +open_audio_cd= +open_dvd= +open_dvd_folder= +open_url=Ctrl+U +close=Ctrl+X +clear_recents= +play=L +play_or_pause=Media Play +pause=P +pause_and_frame_step= +stop=Media Stop +frame_step=. +rewind1=Left +rewind2=Down +rewind3=PgUp +forward1=Right +forward2=Up +forward3=PgDown +repeat= +jump_to=Ctrl+J +normal_speed=Backspace +halve_speed={ +double_speed=} +dec_speed=[ +inc_speed=] +dec_speed_4= +inc_speed_4= +dec_speed_1= +inc_speed_1= +fullscreen=F +compact=Ctrl+C +video_equalizer=Ctrl+E +screenshot=S +video_preview= +flip= +mirror= +postprocessing= +autodetect_phase= +deblock= +dering= +add_noise= +add_letterbox= +upscaling= +audio_equalizer= +mute=M +decrease_volume="9, /" +increase_volume="0, *" +dec_audio_delay=- +inc_audio_delay=+ +audio_delay= +load_audio_file= +unload_audio_file= +extrastereo_filter= +karaoke_filter= +volnorm_filter= +load_subs= +unload_subs= +dec_sub_delay=Z +inc_sub_delay=X +sub_delay= +dec_sub_pos=R +inc_sub_pos=T +dec_sub_scale=Shift+R +inc_sub_scale=Shift+T +dec_sub_step=G +inc_sub_step=Y +use_ass_lib= +use_closed_caption= +use_forced_subs_only= +show_find_sub_dialog= +upload_subtitles= +show_playlist=Ctrl+L +show_file_properties=Ctrl+I +frame_counter= +motion_vectors= +show_preferences=Ctrl+P +show_mplayer_log=Ctrl+M +show_smplayer_log=Ctrl+S +faq= +cl_options= +tips= +about_qt= +about_smplayer= +play_next=> +play_prev=< +move_up=Alt+Up +move_down=Alt+Down +move_left=Alt+Left +move_right=Alt+Right +inc_zoom=E +dec_zoom=W +reset_zoom=Shift+E +auto_zoom=Shift+W +zoom_169=Shift+A +zoom_235=Shift+S +exit_fullscreen= +next_osd=O +dec_contrast=1 +inc_contrast=2 +dec_brightness=3 +inc_brightness=4 +dec_hue=5 +inc_hue=6 +dec_saturation=7 +inc_saturation=8 +dec_gamma= +inc_gamma= +next_video= +next_audio=H +next_subtitle=J +next_chapter=@@ +prev_chapter=! +toggle_double_size=Ctrl+D +reset_video_equalizer= +reset_audio_equalizer= +show_context_menu= +next_aspect=A +osd_none= +osd_seek= +osd_timer= +osd_total= +denoise_none= +denoise_normal= +denoise_soft= +size_50= +size_75= +size_100=Ctrl+1 +size_125= +size_150= +size_175= +size_200=Ctrl+2 +size_300= +size_400= +deinterlace_none= +deinterlace_l5= +deinterlace_yadif0= +deinterlace_yadif1= +deinterlace_lb= +deinterlace_kern= +channels_stereo= +channels_surround= +channels_ful51= +stereo= +left_channel= +right_channel= +aspect_detect= +aspect_4%3A3= +aspect_5%3A4= +aspect_14%3A9= +aspect_16%3A9= +aspect_16%3A10= +aspect_2.35%3A1= +aspect_1%3A1= +aspect_none= +rotate_none= +rotate_clockwise_flip= +rotate_clockwise= +rotate_counterclockwise= +rotate_counterclockwise_flip= +on_top_always= +on_top_never= +on_top_playing= +toggle_stay_on_top= +dvdnav_up=Shift+Up +dvdnav_down=Shift+Down +dvdnav_left=Shift+Left +dvdnav_right=Shift+Right +dvdnav_menu=Shift+Return +dvdnav_select=Return +dvdnav_prev=Shift+Esc +dvdnav_mouse= +quit=Esc +show_tray_icon= +restore\hide= +pl_open= +pl_save= +pl_play= +pl_next=N +pl_prev= +pl_move_up= +pl_move_down= +pl_repeat= +pl_shuffle= +pl_preferences= +pl_add_current= +pl_add_files= +pl_add_directory= +pl_remove_selected= +pl_remove_all= +pl_edit= +show_main_toolbar=F5 +show_language_toolbar=F6 diff --git a/abs/core/tweaker/fs/var/lib/alsa/ALC888.asound.state b/abs/core/tweaker/fs/var/lib/alsa/ALC888.asound.state new file mode 100644 index 0000000..5540338 --- /dev/null +++ b/abs/core/tweaker/fs/var/lib/alsa/ALC888.asound.state @@ -0,0 +1,354 @@ +state.NVidia { + control.1 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Front Playback Volume' + value.0 25 + value.1 25 + } + control.2 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Front Playback Switch' + value.0 true + value.1 true + } + control.3 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Surround Playback Volume' + value.0 0 + value.1 0 + } + control.4 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Surround Playback Switch' + value.0 true + value.1 true + } + control.5 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Center Playback Volume' + value 0 + } + control.6 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'LFE Playback Volume' + value 0 + } + control.7 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Center Playback Switch' + value true + } + control.8 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'LFE Playback Switch' + value true + } + control.9 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Side Playback Volume' + value.0 0 + value.1 0 + } + control.10 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Side Playback Switch' + value.0 true + value.1 true + } + control.11 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Headphone Playback Switch' + value.0 true + value.1 true + } + control.12 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Mic Playback Volume' + value.0 0 + value.1 0 + } + control.13 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Mic Playback Switch' + value.0 false + value.1 false + } + control.14 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Front Mic Playback Volume' + value.0 0 + value.1 0 + } + control.15 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Front Mic Playback Switch' + value.0 false + value.1 false + } + control.16 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Line Playback Volume' + value.0 0 + value.1 0 + } + control.17 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Line Playback Switch' + value.0 false + value.1 false + } + control.18 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 3' + comment.dbmin 0 + comment.dbmax 3000 + iface MIXER + name 'Mic Boost' + value.0 0 + value.1 0 + } + control.19 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 3' + comment.dbmin 0 + comment.dbmax 3000 + iface MIXER + name 'Front Mic Boost' + value.0 0 + value.1 0 + } + control.20 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -1650 + comment.dbmax 3000 + iface MIXER + name 'Capture Volume' + value.0 0 + value.1 0 + } + control.21 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Capture Switch' + value.0 true + value.1 true + } + control.22 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -1650 + comment.dbmax 3000 + iface MIXER + name 'Capture Volume' + index 1 + value.0 0 + value.1 0 + } + control.23 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Capture Switch' + index 1 + value.0 true + value.1 true + } + control.24 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Mic + comment.item.1 'Front Mic' + comment.item.2 Line + iface MIXER + name 'Input Source' + value Mic + } + control.25 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Mic + comment.item.1 'Front Mic' + comment.item.2 Line + iface MIXER + name 'Input Source' + index 1 + value Mic + } + control.26 { + comment.access read + comment.type IEC958 + comment.count 1 + iface MIXER + name 'IEC958 Playback Con Mask' + value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + } + control.27 { + comment.access read + comment.type IEC958 + comment.count 1 + iface MIXER + name 'IEC958 Playback Pro Mask' + value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + } + control.28 { + comment.access 'read write' + comment.type IEC958 + comment.count 1 + iface MIXER + name 'IEC958 Playback Default' + value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + } + control.29 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'IEC958 Playback Switch' + value false + } + control.30 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'IEC958 Default PCM Playback Switch' + value true + } + control.31 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'IEC958 Capture Switch' + value false + } + control.32 { + comment.access read + comment.type IEC958 + comment.count 1 + iface MIXER + name 'IEC958 Capture Default' + value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + } + control.33 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Master Playback Volume' + value 31 + } + control.34 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Master Playback Switch' + value true + } + control.35 { + comment.access 'read write user' + comment.type INTEGER + comment.count 2 + comment.range '0 - 255' + comment.tlv '0000000100000008ffffec1400000014' + comment.dbmin -5100 + comment.dbmax 0 + iface MIXER + name 'PCM Playback Volume' + value.0 163 + value.1 163 + } +} diff --git a/abs/core/tweaker/fs/var/lib/alsa/AV710.asound.state b/abs/core/tweaker/fs/var/lib/alsa/AV710.asound.state new file mode 100644 index 0000000..7e57108 --- /dev/null +++ b/abs/core/tweaker/fs/var/lib/alsa/AV710.asound.state @@ -0,0 +1,567 @@ +state.AV710 { + control.1 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Master Playback Switch' + value true + } + control.2 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Master Playback Volume' + value.0 22 + value.1 22 + } + control.3 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Center Playback Switch' + value false + } + control.4 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Center Playback Volume' + value 31 + } + control.5 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'LFE Playback Switch' + value false + } + control.6 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'LFE Playback Volume' + value 0 + } + control.7 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 2 + iface MIXER + name 'Surround Playback Switch' + value.0 false + value.1 false + } + control.8 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Surround Playback Volume' + value.0 0 + value.1 0 + } + control.9 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Headphone Playback Switch' + value true + } + control.10 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Headphone Playback Volume' + value.0 22 + value.1 22 + } + control.11 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Master Mono Playback Switch' + value true + } + control.12 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -4650 + comment.dbmax 0 + iface MIXER + name 'Master Mono Playback Volume' + value 25 + } + control.13 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'PC Speaker Playback Switch' + value false + } + control.14 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + comment.dbmin -4500 + comment.dbmax 0 + iface MIXER + name 'PC Speaker Playback Volume' + value 0 + } + control.15 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Phone Playback Switch' + value false + } + control.16 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Phone Playback Volume' + value 0 + } + control.17 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mic Playback Switch' + value false + } + control.18 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Mic Playback Volume' + value 0 + } + control.19 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Mic Boost (+20dB)' + value false + } + control.20 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Line Playback Switch' + value false + } + control.21 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Line Playback Volume' + value.0 0 + value.1 0 + } + control.22 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'CD Playback Switch' + value true + } + control.23 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'CD Playback Volume' + value.0 25 + value.1 25 + } + control.24 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Video Playback Switch' + value false + } + control.25 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Video Playback Volume' + value.0 0 + value.1 0 + } + control.26 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Aux Playback Switch' + value false + } + control.27 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'Aux Playback Volume' + value.0 0 + value.1 0 + } + control.28 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'PCM Playback Switch' + value true + } + control.29 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 31' + comment.dbmin -3450 + comment.dbmax 1200 + iface MIXER + name 'PCM Playback Volume' + value.0 22 + value.1 22 + } + control.30 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 2 + comment.item.0 Mic + comment.item.1 CD + comment.item.2 Video + comment.item.3 Aux + comment.item.4 Line + comment.item.5 Mix + comment.item.6 'Mix Mono' + comment.item.7 Phone + iface MIXER + name 'Capture Source' + value.0 Line + value.1 Line + } + control.31 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Capture Switch' + value true + } + control.32 { + comment.access 'read write' + comment.type INTEGER + comment.count 2 + comment.range '0 - 15' + comment.dbmin 0 + comment.dbmax 2250 + iface MIXER + name 'Capture Volume' + value.0 0 + value.1 0 + } + control.33 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name '3D Control - Switch' + value false + } + control.34 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Mix + comment.item.1 Mic + iface MIXER + name 'Mono Output Select' + value Mix + } + control.35 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 Mic1 + comment.item.1 Mic2 + iface MIXER + name 'Mic Select' + value Mic1 + } + control.36 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name '3D Control - Center' + value 0 + } + control.37 { + comment.access 'read write' + comment.type INTEGER + comment.count 1 + comment.range '0 - 15' + iface MIXER + name '3D Control - Depth' + value 0 + } + control.38 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Alternate Level to Surround Out' + value false + } + control.39 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Downmix LFE and Center to Front' + value false + } + control.40 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Downmix Surround to Front' + value false + } + control.41 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'External Amplifier' + value true + } + control.42 { + comment.access read + comment.type BYTES + comment.count 52 + iface CARD + name 'ICE1724 EEPROM' + value '172414121c01020210c1ff0000ff0000ff0000000101010001000000000000000000000000000000ff000000ff000000ff000000' + } + control.43 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 '8000' + comment.item.1 '9600' + comment.item.2 '11025' + comment.item.3 '12000' + comment.item.4 '16000' + comment.item.5 '22050' + comment.item.6 '24000' + comment.item.7 '32000' + comment.item.8 '44100' + comment.item.9 '48000' + comment.item.10 '64000' + comment.item.11 '88200' + comment.item.12 '96000' + comment.item.13 '176400' + comment.item.14 '192000' + comment.item.15 'IEC958 Input' + iface MIXER + name 'Multi Track Internal Clock' + value '44100' + } + control.44 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Multi Track Rate Locking' + value false + } + control.45 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'Multi Track Rate Reset' + value true + } + control.46 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'PCM Out' + comment.item.1 'H/W In 0' + comment.item.2 'H/W In 1' + comment.item.3 'IEC958 In L' + comment.item.4 'IEC958 In R' + iface MIXER + name 'H/W Playback Route' + value 'PCM Out' + } + control.47 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'PCM Out' + comment.item.1 'H/W In 0' + comment.item.2 'H/W In 1' + comment.item.3 'IEC958 In L' + comment.item.4 'IEC958 In R' + iface MIXER + name 'H/W Playback Route' + index 1 + value 'PCM Out' + } + control.48 { + comment.access read + comment.type INTEGER + comment.count 22 + comment.range '0 - 255' + iface MIXER + name 'Multi Track Peak' + value.0 0 + value.1 0 + value.2 0 + value.3 0 + value.4 0 + value.5 0 + value.6 0 + value.7 0 + value.8 255 + value.9 255 + value.10 0 + value.11 0 + value.12 0 + value.13 0 + value.14 0 + value.15 0 + value.16 0 + value.17 0 + value.18 0 + value.19 0 + value.20 0 + value.21 0 + } + control.49 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'PCM Out' + comment.item.1 'H/W In 0' + comment.item.2 'H/W In 1' + comment.item.3 'IEC958 In L' + comment.item.4 'IEC958 In R' + iface MIXER + name 'IEC958 Playback Route' + value 'PCM Out' + } + control.50 { + comment.access 'read write' + comment.type ENUMERATED + comment.count 1 + comment.item.0 'PCM Out' + comment.item.1 'H/W In 0' + comment.item.2 'H/W In 1' + comment.item.3 'IEC958 In L' + comment.item.4 'IEC958 In R' + iface MIXER + name 'IEC958 Playback Route' + index 1 + value 'PCM Out' + } + control.51 { + comment.access 'read write' + comment.type BOOLEAN + comment.count 1 + iface MIXER + name 'IEC958 Output Switch' + value true + } + control.52 { + comment.access 'read write' + comment.type IEC958 + comment.count 1 + iface PCM + device 1 + name 'IEC958 Playback Default' + value '0000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + } + control.53 { + comment.access read + comment.type IEC958 + comment.count 1 + iface PCM + device 1 + name 'IEC958 Playback Con Mask' + value '3fff000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + } + control.54 { + comment.access read + comment.type IEC958 + comment.count 1 + iface PCM + device 1 + name 'IEC958 Playback Pro Mask' + value df00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + } +} diff --git a/abs/core/tweaker/lib/Tweaker/Definitions.pm b/abs/core/tweaker/lib/Tweaker/Definitions.pm new file mode 100644 index 0000000..cbadf29 --- /dev/null +++ b/abs/core/tweaker/lib/Tweaker/Definitions.pm @@ -0,0 +1,66 @@ +# Copyright 2007 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +package Tweaker::Definitions; +use List::Member; +use Log::Log4perl qw(:easy); + +# To install the above modules: +# -- +# sudo cpan install List::Member + +# Recommendation Levels +my $bottom = -200; # a reserved value, under which no recommendationlevel can go +my $not_available = -100; +my $unsupported = -99; +my $inadvisable = -50; +my $optional = 0; +my $recommended = 100; + +# Interactivity Levels +my $guided = "guided"; +my $minimal = "minimal"; + +# Special variables +my $null = "null"; # reserved as the script name for special Tweaks that define Tweaker behavior + +my %global_variable_hash = ( + "bottom" => $bottom, + "not available" => $not_available, + "unsupported" => $unsupported, + "inadvisable" => $inadvisable, + "optional" => $optional, + "recommended" => $recommended, + "guided" => $guided, + "minimal" => $minimal, + "null" => $null +); + +sub get_global_variable_value { + my ($variable) = @_; + + my @known_variables = keys %global_variable_hash; + if (member($variable, @known_variables) + 1) { + if ($global_variable_hash{$variable}) { + return $global_variable_hash{$variable}; + } + } else { + my $logger = get_logger(); + $logger->error("No Tweaker Definition for variable named $variable"); + return $bottom; + } +} + +1; diff --git a/abs/core/tweaker/lib/Tweaker/Script.pm b/abs/core/tweaker/lib/Tweaker/Script.pm new file mode 100644 index 0000000..7dd2c8f --- /dev/null +++ b/abs/core/tweaker/lib/Tweaker/Script.pm @@ -0,0 +1,353 @@ +# Copyright 2007, 2008 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. +# +# 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 3 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, see . + +package Tweaker::Script; + +use strict; +use DBI; +use Switch; +use Tweaker::Definitions; + +# To install the above modules: +# -- +# sudo apt-get install libdbi-perl liblog-log4perl-perl +# sudo cpan install Getopt::Lucid List::Member +# choose the defaults for all options, agree to install all dependencies + +use Getopt::Lucid qw( :all ); +# see http://search.cpan.org/~dagolden/Getopt-Lucid-0.16/lib/Getopt/Lucid.pm for usage details +use Log::Log4perl qw(get_logger); +# see http://search.cpan.org/~mschilli/Log-Log4perl-1.14/lib/Log/Log4perl.pm for usage details +# http://www.perl.com/pub/a/2002/09/11/log4perl.html is highly recommended as well + +use List::Member; + +my $dbh; # the database we connect to +my $sth; # +my $TWEAKER_ROOT; +my @known_options; + +# Print advice on usage and invocation. +sub help () { + my $logger = get_logger('tweaker.script'); + $logger->fatal("USAGE:\n$0 [--check Option] [--implement Option] [--poll Option] [--iterations] [--help]"); + $logger->fatal("Valid values for Option are: ", join(" ",@known_options)); + $logger->fatal("Only one of the above parameters may be passed."); + $logger->fatal("The --check and --iterations parameters are not yet supported."); + exit; +} + +sub execute_shell_command { + my($command) = @_; + my $results=""; + my $logger = get_logger('tweaker.script'); + + open(SHELL, "$command 2>&1 |"); + + while() { + $results=$results."".$_; + } + close(SHELL); + chop($results); + $logger->debug("Command '$command' produced output '$results'"); + return $results; +} + +# Simple way to get the value of an environment variable from the executing shell. +sub get_environment_variable { + my($envvar) = @_; + open(SHELL, "echo $envvar|"); + while() { + chop; + return $_; + } + close(SHELL); +} + +sub get_mythtv_connection_string { + # we want something like mythconverg:localhost + my $dbname = ""; + my $dbhostname = ""; + open(MYSQLTXT, "< /usr/share/mythtv/mysql.txt"); + while() { + if (/DBName=(.*)/) { + $dbname=$1; + } elsif (/DBHostName=(.*)/) { + $dbhostname=$1; + } + } + close(MYSQLTXT); + + return "$dbname:$dbhostname"; +} + +sub get_mythtv_authentication { + # we want something like ['root', ''] + my $dbusername = ""; + my $dbpassword = ""; + + open(MYSQLTXT, "< /usr/share/mythtv/mysql.txt"); + while() { + if (/DBUserName=(.*)/) { + $dbusername=$1; + } elsif (/DBPassword=(.*)/) { + $dbpassword=$1; + } + } + close(MYSQLTXT); + + return ($dbusername, $dbpassword); +} + +# Database routines. +sub connect_to_db { + my ($db) = @_; + my $logger = get_logger('tweaker.script'); + my ($dbusername, $dbpassword) = get_mythtv_authentication(); + if (!($dbh = DBI->connect($db, $dbusername, $dbpassword))) { + $logger->error("Couldn't connect to database: ", DBI->errstr); + return -1; + } + return 1; +} + +sub disconnect_from_db { + $dbh->disconnect; +} + +sub do_query { + my ($query) = @_; + my $logger = get_logger('tweaker.script'); + my $rv=""; + + $logger->debug("Processing statement: ", $query); + + if (!($sth = $dbh->prepare($query))) { + $logger->error("Couldn't prepare statement: ", $dbh->errstr); + return -1; + } + $rv = $sth->execute(); # Returns an integer when rows were affected; returns -1 when there's an + # error; returns 0E0 (true) when no error but no rows affected. + + if (!$rv) { + $logger->error("Couldn't execute statement: ", $sth->errstr); + return -1; + } + return $rv; +} + +# Make sure the option passed to this script is handled. +sub validate_option { + my($option) = @_; + + if (!(member($option, @known_options) + 1)) { + my $logger = get_logger('tweaker.script'); + $logger->fatal("Option '$option' is not known to $0."); + $logger->fatal("Valid Options are: ", join(", ",@known_options)); + exit -1; + } + return 1; +} + +# Prints out each option that the script handles, separated by '|'. +# This allows for a minimal .tcf entry. +sub get_options { + print join("|",@known_options),"\n"; +} + +# Prints out the passed Recommendation Level first, followed by any other +# strings, separated by '|'. This allows the author of a Tweaker Script to +# return explanatory information along with a Recommendation Level. +sub recommendation_level { + print join("|",@_),"\n"; +} + +sub process_parameters () { + # Accept these parameters: + # -- + my @parameters = ( + Switch("help")->anycase, + Param("check")->anycase, # Requirement 1.1 + Param("implement")->anycase, # Requirement 1.2 + Param("poll")->anycase, # Requirement 1.3 + Switch("iterations")->anycase, # Requirement 1.4 + Switch("getoptions")->anycase # Requirement 1.5 + ); + my $opt = Getopt::Lucid->getopt( \@parameters ); + + if (!(my $TWEAKER_ROOT = get_environment_variable("\$TWEAKER_ROOT"))) { + Log::Log4perl->easy_init(); + my $logger = get_logger(); + $logger->fatal("ERROR: \$TWEAKER_ROOT environment variable is not set."); + exit -1; + } else { + my $log4perl_conf = "$TWEAKER_ROOT/log4perl.conf"; + Log::Log4perl::init_and_watch($log4perl_conf,10); + my $logger = get_logger('tweaker.script'); + $logger->info("\$TWEAKER_ROOT is '$TWEAKER_ROOT'."); + } + + if ($opt->get_help > 0) { + help; + } + + my $check = $opt->get_check; + my $implement = $opt->get_implement; + my $poll = $opt->get_poll; + my $iterations = $opt->get_iterations; + my $getoptions = $opt->get_getoptions; + + # Requirement 1.6 + if ($check) { + if ($implement || $poll || $iterations || $getoptions) { + help; + } + validate_option($check); # exits with an error if option is invalid + check_option($check); # Requirement 1.1 + } elsif ($implement) { + if ($poll || $iterations || $getoptions) { + help; + } + validate_option($implement); # exits with an error if option is invalid + implement_option($implement); # Requirement 1.2 + } elsif ($poll) { + if ($iterations || $getoptions) { + help; + } + validate_option($poll); # exits with an error if option is invalid + poll_options($poll); # Requirement 1.3 + } elsif ($iterations) { + if ($getoptions) { + help; + } + #count_iterations; # Requirement 1.4 + } elsif ($getoptions) { + get_options; # Requirement 1.5 + } else { + help; + } +} + +sub set_known_options { + my(@options) = @_; + @known_options = @_; +} + +# These entries may or may not already exist. First, try updating them, and if that fails, insert them. +# Pass in array references for setfields and checkfields. Each must +# reference an array of lists, where each list is a key, value pair, e.g. +# [["data", "somedata"], ["name", "skippy"]] +sub change_or_make_entry { + my($table, $setfields, $checkfields) = @_; + my $query_string = "UPDATE $table SET "; + + my $fields=""; + foreach my $sets (@$setfields) { + if ($fields) { + $fields = $fields . ", "; + } + $fields = $fields . "@$sets[0]='@$sets[1]' "; + } + $query_string = $query_string . $fields . "WHERE "; + + my $checkstring=""; + foreach my $checks (@$checkfields) { + if ($checkstring) { + $checkstring = $checkstring . "AND "; + } + $checkstring = $checkstring . "@$checks[0]='@$checks[1]' "; + } + $query_string = $query_string . $checkstring; + + my $rv = do_query($query_string); + if (($rv == 0E0) || ($rv < 1)) { # UPDATE didn't apply; do an insert + my $fields=""; + my $values=""; + foreach my $sets (@$setfields) { + if ($fields) { + $fields = $fields . ", "; + $values = $values . ", "; + } + $fields = $fields . "@$sets[0]"; + $values = $values . "'@$sets[1]'"; + } + foreach my $sets (@$checkfields) { + if ($fields) { + $fields = $fields . ", "; + $values = $values . ", "; + } + $fields = $fields . "@$sets[0]"; + $values = $values . "'@$sets[1]'"; + } + + $query_string = "INSERT INTO $table (". $fields . ") VALUES (" . $values . ")"; + + $rv = do_query($query_string); + } + return $rv; +} + +# We update so many entries in the settings table that a subroutine makes coding and readability easier. +sub change_or_make_setting { + my($value, $data) = @_; + + return(change_or_make_entry("settings", [["data", $data]], [["value", $value]])); +} + +# Benchmark-driven tests for low, medium, or high "performance" often look the same. +# If your test falls into this pattern, you can use this subroutine to simplify your +# Tweaker Script's poll_options subroutine. +# NOTE: This only handles options for low, medium, or high right now. +# NOTE: You don't have to use this! Only use it if your poll_options subroutine +# would look like this anyway. Don't shoehorn it to fit! +sub threshold_test { + my($option, $benchmark_number, $name_of_benchmarked_device, $low_threshold, $medium_threshold, $high_threshold) = @_; + # e.g. ("medium", 512, "video card", 350, 425, 500) + + my $logger = get_logger('tweaker.script'); + $logger->debug("Threshold test for option '$option' ($name_of_benchmarked_device) with benchmark of $benchmark_number, where: low = $low_threshold, medium = $medium_threshold, high = $high_threshold"); + + switch ($option) { + case "low" { + if ($benchmark_number <= $low_threshold) { + recommendation_level("recommended", "Your $name_of_benchmarked_device seems to be unable to handle higher usage than this."); + } elsif ($benchmark_number <= $medium_threshold) { + recommendation_level("optional", "Your $name_of_benchmarked_device seems to be able to handle higher usage than this, but select this option if you want to reduce overall $name_of_benchmarked_device usage."); + } elsif ($benchmark_number >= $high_threshold) { + recommendation_level("optional", "Your $name_of_benchmarked_device seems to be quite capable of this setting, but select this option if you want to reduce overall $name_of_benchmarked_device usage."); + } + } + case "medium" { + if ($benchmark_number <= $low_threshold) { + recommendation_level("inadvisable", "Your $name_of_benchmarked_device seems to be unable to handle this usage level, but you are free to try."); + } elsif ($benchmark_number <= $medium_threshold) { + recommendation_level("recommended", "Your $name_of_benchmarked_device seems to be unable to handle higher usage than this."); + } elsif ($benchmark_number >= $high_threshold) { + recommendation_level("optional", "Your $name_of_benchmarked_device seems to be able to handle higher usage than this, but select this option if you want to reduce overall $name_of_benchmarked_device usage."); + } + } + case "high" { + if ($benchmark_number <= $low_threshold) { + recommendation_level("inadvisable", "Your $name_of_benchmarked_device seems to be unable to handle this usage level, and it is not recommended that you try."); + } elsif ($benchmark_number <= $medium_threshold) { + recommendation_level("inadvisable", "Your $name_of_benchmarked_device seems to be unable to handle this usage level, but you are free to try."); + } elsif ($benchmark_number >= $high_threshold) { + recommendation_level("recommended", "Your $name_of_benchmarked_device seems to be quite capable of this setting."); + } + } + } +} + +1; diff --git a/abs/core/tweaker/log4perl.conf b/abs/core/tweaker/log4perl.conf new file mode 100644 index 0000000..3c0a5bb --- /dev/null +++ b/abs/core/tweaker/log4perl.conf @@ -0,0 +1,13 @@ +log4perl.logger = FATAL, ScreenLogger +log4perl.logger.tweaker = INFO, FileLogger +log4perl.logger.tweaker.script = WARN, FileLogger + +log4perl.appender.ScreenLogger = Log::Dispatch::Screen +log4perl.appender.ScreenLogger.Threshold = FATAL +log4perl.appender.ScreenLogger.layout = Log::Log4perl::Layout::PatternLayout +log4perl.appender.ScreenLogger.layout.ConversionPattern=<%p> %F{1} - %m%n + +log4perl.appender.FileLogger = Log::Log4perl::Appender::File +log4perl.appender.FileLogger.filename = /var/log/tweaker.log +log4perl.appender.FileLogger.layout = Log::Log4perl::Layout::PatternLayout +log4perl.appender.FileLogger.layout.ConversionPattern=%d <%p> %F{1}:%L %M - %m%n diff --git a/abs/core/tweaker/tcf/EXAMPLE.tcf b/abs/core/tweaker/tcf/EXAMPLE.tcf new file mode 100644 index 0000000..0064fba --- /dev/null +++ b/abs/core/tweaker/tcf/EXAMPLE.tcf @@ -0,0 +1,38 @@ + + + Put a human-readable description of the tweak here. + Put a complexity level here. + + boolean + + + + + + diff --git a/abs/core/tweaker/tcf/focus.tcf b/abs/core/tweaker/tcf/focus.tcf new file mode 100644 index 0000000..353662c --- /dev/null +++ b/abs/core/tweaker/tcf/focus.tcf @@ -0,0 +1,113 @@ + + + Scrubs the sections of mythconverg that KnoppMyth controls, preparing for the Tweaks below. + + + + + + + Configures MythTV, xine, and mplayer to output audio the way you want. + + + + + + + + + Configures MythTV to use CPU-appropriate features and themes. + + + + + + + + + Configures MythTV to use the right-sized RAM cache for various options. + + + + + + + + + Configures MythTV to use graphical options that are appropriate for your video card. + + + + + + + + + Configures the system to use your native language, system of measurements, etc. + + + + + + + + Recommended for everyone. + + + + + + + Recommended for everyone. + + + + + + + Protects the sections of mythconverg that KnoppMyth controls, keeping our changes separate from user-made changes. + + + + diff --git a/abs/core/tweaker/tcf/os.tcf b/abs/core/tweaker/tcf/os.tcf new file mode 100644 index 0000000..e70f4ee --- /dev/null +++ b/abs/core/tweaker/tcf/os.tcf @@ -0,0 +1,10 @@ + + + Recommended for everyone. + + + + diff --git a/abs/core/tweaker/tcf/tcf.dtd b/abs/core/tweaker/tcf/tcf.dtd new file mode 100644 index 0000000..64ce67e --- /dev/null +++ b/abs/core/tweaker/tcf/tcf.dtd @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/abs/core/tweaker/tcf/tweaker-core.tcf b/abs/core/tweaker/tcf/tweaker-core.tcf new file mode 100644 index 0000000..88d8608 --- /dev/null +++ b/abs/core/tweaker/tcf/tweaker-core.tcf @@ -0,0 +1,47 @@ + + //--> + + + + ]> + + + Some configuration options require more understanding than others. + basic + + + + + + + + + Tweaker can guess answers to some configuration options. Interactivity determines whether or not these guesses are used automatically, or whether you have a chance to intervene. + basic + + + + + + + &os; + &distro; + &focus; + &userland; + + diff --git a/abs/core/tweaker/tcf/userland.tcf b/abs/core/tweaker/tcf/userland.tcf new file mode 100644 index 0000000..e69de29 diff --git a/abs/core/tweaker/tweaker.install b/abs/core/tweaker/tweaker.install new file mode 100644 index 0000000..fc4ba07 --- /dev/null +++ b/abs/core/tweaker/tweaker.install @@ -0,0 +1,39 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { +/bin/true +} + +# arg 1: the new package version +post_install() { + touch /var/log/tweaker.log + chmod 777 /var/log/tweaker.log +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + /bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/core/tweaker/tweaker.sh b/abs/core/tweaker/tweaker.sh new file mode 100644 index 0000000..8cb36eb --- /dev/null +++ b/abs/core/tweaker/tweaker.sh @@ -0,0 +1,4 @@ +#!/bin/bash + export TWEAKER_ROOT=/usr/LH/tweaker + export PATH=$PATH:$TWEAKER_ROOT/bin + export PERL5LIB=$TWEAKER_ROOT/lib:$PERL5LIB \ No newline at end of file diff --git a/abs/core/udev/00-load-blacklist.rules b/abs/core/udev/00-load-blacklist.rules deleted file mode 100644 index b1a5faf..0000000 --- a/abs/core/udev/00-load-blacklist.rules +++ /dev/null @@ -1 +0,0 @@ -IMPORT{program} = "/lib/udev/mod-blacklist.sh" diff --git a/abs/core/udev/51-arch.rules b/abs/core/udev/51-arch.rules deleted file mode 100644 index b06be93..0000000 --- a/abs/core/udev/51-arch.rules +++ /dev/null @@ -1,191 +0,0 @@ -# Udev rules for Archlinux by Tobias Powalowski -# do not edit this file, it will be overwritten on update -# -# This ruleset should provide a DevFS-compatible device tree. -# -# There are a number of modifiers that are allowed to be used in some -# of the different fields. They provide the following subsitutions: -# -# %n the "kernel number" of the device. -# For example, 'sda3' has a "kernel number" of '3' -# %k the kernel name for the device. -# %M the kernel major number for the device -# %m the kernel minor number for the device -# %b the bus id for the device -# %c the string returned by the PROGRAM -# %s{filename} the content of a sysfs attribute. -# %% the '%' char itself. -# -# There are a number of modifiers that are allowed to be used in some of the -# fields. See the udev man page for a full description of them. -# global stuff -# - -##################################### -###### Hotplug rules - begin -##################################### -# check if the device has already been claimed by a driver -ACTION!="add", GOTO="drivers_end" -DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/lib/udev/load-modules.sh $env{MODALIAS}" - -# SCSI addon modules -SUBSYSTEM=="scsi", ATTRS{type}=="[07]", RUN+="/lib/udev/load-modules.sh sd_mod" -SUBSYSTEM=="scsi", ATTRS{type}=="14", RUN+="/lib/udev/load-modules.sh sd_mod" -SUBSYSTEM=="scsi", ATTRS{type}=="[45]", RUN+="/lib/udev/load-modules.sh sr_mod" -SUBSYSTEM=="scsi", ATTRS{type}=="1", ATTRS{vendor}=="Onstream", ATTRS{model}!="ADR*", RUN+="/lib/udev/load-modules.sh osst" -SUBSYSTEM=="scsi", ATTRS{type}=="1", ATTRS{vendor}=="Onstream", ATTRS{model}=="ADR*", RUN+="/lib/udev/load-modules.sh st" -SUBSYSTEM=="scsi", ATTRS{type}=="1", ATTRS{vendor}!="Onstream", RUN+="/lib/udev/load-modules.sh st" - -# SOUND addon modules -SUBSYSTEM=="sound", RUN+="/lib/udev/load-modules.sh snd-pcm-oss" -SUBSYSTEM=="sound", RUN+="/lib/udev/load-modules.sh snd-seq-oss" - -#PNP addon modules -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP0800", RUN+="/lib/udev/load-modules.sh pcspkr" -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP0b00", RUN+="/lib/udev/load-modules.sh rtc_cmos" -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="*PNP0510*", RUN+="/lib/udev/load-modules.sh irtty-sir" -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="*PNP0511*", RUN+="/lib/udev/load-modules.sh irtty-sir" -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNPb02f", RUN+="/lib/udev/load-modules.sh analog" -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP0501", RUN+="/lib/udev/load-modules.sh ppp-generic" - -# PARPORT addon modules -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP040*", RUN+="/lib/udev/load-modules.sh lp" -SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP040*", RUN+="/lib/udev/load-modules.sh ppdev" - -# fix ide cdrom detection on old proliant servers -SUBSYSTEM=="pci", ENV{MODALIAS}=="pci:v00000E11d00000001sv00000000sd00000000bc06sc02i00", RUN+="/lib/udev/load-modules.sh ide-generic" - -LABEL="drivers_end" -##################################### -##### Hotplug rules - end -##################################### - -##################################### -###### CD/DVD symlinks - begin -##################################### -ACTION=="add", SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", IMPORT="cdrom_id --export $tempnode" -ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", IMPORT="cdrom_id --export $tempnode" -ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="scd[a-z]", IMPORT="cdrom_id --export $tempnode" -ENV{ID_CDROM}=="?*", SYMLINK+="cd/cdrom-%b" -ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cd/cdrw-%b" -ENV{ID_CDROM_DVD}=="?*", SYMLINK+="cd/dvd-%b" -ENV{ID_CDROM_DVD_R}=="?*", SYMLINK+="cd/dvd-%b" -ACTION=="add", SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", RUN+="cdsymlinks.sh" -ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", ATTRS{type}=="5", RUN+="cdsymlinks.sh" -ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="5", RUN+="cdsymlinks.sh" -ACTION=="remove", SUBSYSTEMS=="block", KERNEL=="hd[a-z]", RUN+="cdsymlinks.sh" -ACTION=="remove", SUBSYSTEMS=="block", KERNEL=="sr[0-9]*", RUN+="cdsymlinks.sh" -ACTION=="remove", SUBSYSTEMS=="block", KERNEL=="sg[0-9]*", RUN+="cdsymlinks.sh" -##################################### -###### CD/DVD symlinks - end -##################################### - -##################################### -# Permissions and Symlinks - begin -##################################### -# fix /dev/root symlink -SUBSYSTEM=="block", RUN+="root-link.sh" - -# permissions for IDE CD devices -SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", GROUP="optical" - -# permissions for SCSI CD devices -SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", ATTRS{type}=="5", SYMLINK+="scd%n", GROUP="optical" -SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="5", GROUP="optical" - -# permissions for removable devices like cardreaders or sticks -KERNEL=="sd*", ATTRS{scsi_level}=="0", ATTRS{type}=="0", GROUP="storage" - -# permissions for firewire external drives -KERNEL=="sd*", ATTRS{scsi_level}=="5", GROUP="storage" - -# permissions for usb to scsi external adapters -KERNEL=="sd*", ATTRS{scsi_level}=="3", ATTRS{type}=="7", GROUP="storage" - -# permissions for ide storage like pcmcia card readers -ACTION!="add", GOTO="pcmcia_end" -SUBSYSTEM!="block", GOTO="pcmcia_end" -KERNEL=="hd*[!0-9]", IMPORT{program}="ata_id --export $tempnode" -KERNEL=="hd*", IMPORT{parent}=="ID_*" -KERNEL=="hd*", ENV{ID_TYPE}=="generic", GROUP="storage" -LABEL="pcmcia_end" - -# permissions for SCSI scanners -SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="6", GROUP="scanner" - -# md block devices -KERNEL=="md[0-9]*", NAME="md%n", SYMLINK+="md/%n" - -# video devices -SUBSYSTEM=="video4linux", GROUP="video" -### xorg resets those permissions, adjust your xorg.conf! -KERNEL=="nvidia*", GROUP="video" -KERNEL=="3dfx*", GROUP="video" - -# i2c devices -KERNEL=="i2c-[0-9]*", NAME="i2c/%n", SYMLINK+="%k" - -# loop devices -KERNEL=="loop[0-9]*", NAME="loop/%n", SYMLINK+="%k" - -# misc -KERNEL=="nvram", NAME="misc/%k", SYMLINK+="%k", GROUP="kmem", MODE="0640" -KERNEL=="psaux", NAME="misc/%k", SYMLINK+="%k" -KERNEL=="uinput", NAME="misc/%k", SYMLINK+="%k" -KERNEL=="sgi_fetchop", MODE="0666" -KERNEL=="sonypi", MODE="0666" -KERNEL=="inotify", NAME="misc/%k", SYMLINK+="%k", MODE="0666" - -# sound devices -# alsa devices -SUBSYSTEM=="sound", GROUP="audio" -KERNEL=="controlC[0-9]*", NAME="snd/%k" -KERNEL=="hw[CD0-9]*", NAME="snd/%k" -KERNEL=="pcm[CD0-9cp]*", NAME="snd/%k" -KERNEL=="midi[CD0-9]*", NAME="snd/%k" -KERNEL=="timer", NAME="snd/%k" -KERNEL=="seq", NAME="snd/%k" -# oss devices -KERNEL=="audio*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="dmmidi*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="admmidi*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="dsp*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="adsp*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="midi*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="amidi*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="mixer*", NAME="sound/%k", SYMLINK+="%k" -KERNEL=="sequencer*", NAME="sound/%k", SYMLINK+="%k" - -# USB devices -KERNEL=="hiddev*", NAME="usb/%k" -KERNEL=="legousbtower*", NAME="usb/%k", MODE="0666" -KERNEL=="dabusb*", NAME="usb/%k" - -# netlink devices -KERNEL=="route", NAME="netlink/%k" -KERNEL=="skip", NAME="netlink/%k" -KERNEL=="usersock", NAME="netlink/%k" -KERNEL=="fwmonitor", NAME="netlink/%k" -KERNEL=="tcpdiag", NAME="netlink/%k" -KERNEL=="nflog", NAME="netlink/%k" -KERNEL=="xfrm", NAME="netlink/%k" -KERNEL=="arpd", NAME="netlink/%k" -KERNEL=="route6", NAME="netlink/%k" -KERNEL=="ip6_fw", NAME="netlink/%k" -KERNEL=="dnrtmsg", NAME="netlink/%k" -### ! disabled seems to break device creation ! -# KERNEL=="tap*", NAME="netlink/%k" - -# CAPI devices -KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20", GROUP="uucp" -KERNEL=="capi*", NAME="capi/%n", GROUP="uucp" - -# IEEE1394 (firewire) devices -KERNEL=="raw1394", NAME="%k", GROUP="video" - -# kbd devices -KERNEL=="kbd", MODE="0664" - -####################################### -# Permissions and Symlinks - end -####################################### diff --git a/abs/core/udev/81-arch.rules b/abs/core/udev/81-arch.rules new file mode 100644 index 0000000..933cbc4 --- /dev/null +++ b/abs/core/udev/81-arch.rules @@ -0,0 +1,175 @@ +# Udev rules for Archlinux by Tobias Powalowski +# do not edit this file, it will be overwritten on update +# +# This ruleset should provide a DevFS-compatible device tree. +# +# There are a number of modifiers that are allowed to be used in some +# of the different fields. They provide the following subsitutions: +# +# %n the "kernel number" of the device. +# For example, 'sda3' has a "kernel number" of '3' +# %k the kernel name for the device. +# %M the kernel major number for the device +# %m the kernel minor number for the device +# %b the bus id for the device +# %c the string returned by the PROGRAM +# %s{filename} the content of a sysfs attribute. +# %% the '%' char itself. +# +# There are a number of modifiers that are allowed to be used in some of the +# fields. See the udev man page for a full description of them. +# global stuff +# + +##################################### +###### Hotplug rules - begin +# Only additional modules, +# which are not detectable, +# are loaded here! +##################################### +# check if the device has already been claimed by a driver +ACTION!="add", GOTO="drivers_end" + +# SOUND addon modules +SUBSYSTEM=="sound", RUN+="/lib/udev/load-modules.sh snd-pcm-oss" +SUBSYSTEM=="sound", RUN+="/lib/udev/load-modules.sh snd-seq-oss" + +#PNP addon modules +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP0800", RUN+="/lib/udev/load-modules.sh pcspkr" +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="*PNP0510*", RUN+="/lib/udev/load-modules.sh irtty-sir" +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="*PNP0511*", RUN+="/lib/udev/load-modules.sh irtty-sir" +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNPb02f", RUN+="/lib/udev/load-modules.sh analog" +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP0501", RUN+="/lib/udev/load-modules.sh ppp-generic" + +# PARPORT addon modules +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP040*", RUN+="/lib/udev/load-modules.sh lp" +SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", ATTRS{id}=="PNP040*", RUN+="/lib/udev/load-modules.sh ppdev" + +# fix ide cdrom detection on old proliant servers +SUBSYSTEM=="pci", ENV{MODALIAS}=="pci:v00000E11d00000001sv00000000sd00000000bc06sc02i00", RUN+="/lib/udev/load-modules.sh ide-generic" + +LABEL="drivers_end" +##################################### +##### Hotplug rules - end +##################################### + +##################################### +###### CD/DVD symlinks - begin +##################################### +ACTION=="add", SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", IMPORT="cdrom_id --export $tempnode" +ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", IMPORT="cdrom_id --export $tempnode" +ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="scd[a-z]", IMPORT="cdrom_id --export $tempnode" +ENV{ID_CDROM}=="?*", SYMLINK+="cd/cdrom-%b" +ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cd/cdrw-%b" +ENV{ID_CDROM_DVD}=="?*", SYMLINK+="cd/dvd-%b" +ENV{ID_CDROM_DVD_R}=="?*", SYMLINK+="cd/dvd-%b" +ACTION=="add", SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", RUN+="cdsymlinks.sh" +ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", ATTRS{type}=="5", RUN+="cdsymlinks.sh" +ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="5", RUN+="cdsymlinks.sh" +ACTION=="remove", SUBSYSTEMS=="block", KERNEL=="hd[a-z]", RUN+="cdsymlinks.sh" +ACTION=="remove", SUBSYSTEMS=="block", KERNEL=="sr[0-9]*", RUN+="cdsymlinks.sh" +ACTION=="remove", SUBSYSTEMS=="block", KERNEL=="sg[0-9]*", RUN+="cdsymlinks.sh" +##################################### +###### CD/DVD symlinks - end +##################################### + +##################################### +# Additional Archlinux +# Permissions and Symlinks - begin +##################################### +# fix /dev/root symlink +SUBSYSTEM=="block", RUN+="root-link.sh" + +# permissions for IDE CD devices +SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", GROUP="optical" + +# permissions for SCSI CD devices +SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", ATTRS{type}=="5", SYMLINK+="scd%n", GROUP="optical" +SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="5", GROUP="optical" + +# permissions for removable devices like cardreaders or sticks +KERNEL=="sd*", ATTRS{scsi_level}=="0", ATTRS{type}=="0", GROUP="storage" + +# permissions for firewire external drives +KERNEL=="sd*", ATTRS{scsi_level}=="5", GROUP="storage" + +# permissions for usb to scsi external adapters +KERNEL=="sd*", ATTRS{scsi_level}=="3", ATTRS{type}=="7", GROUP="storage" + +# permissions for ide storage like pcmcia card readers +ACTION!="add", GOTO="pcmcia_end" +SUBSYSTEM!="block", GOTO="pcmcia_end" +KERNEL=="hd*[!0-9]", IMPORT{program}="ata_id --export $tempnode" +KERNEL=="hd*", IMPORT{parent}=="ID_*" +KERNEL=="hd*", ENV{ID_TYPE}=="generic", GROUP="storage" +LABEL="pcmcia_end" + +# permissions for SCSI scanners +SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="6", GROUP="scanner" + +# md block devices +KERNEL=="md[0-9]*", NAME="md%n", SYMLINK+="md/%n" + +# video devices +SUBSYSTEM=="video4linux", GROUP="video" +### xorg resets those permissions, adjust your xorg.conf! +KERNEL=="nvidia*", GROUP="video" +KERNEL=="3dfx*", GROUP="video" + +# i2c devices +KERNEL=="i2c-[0-9]*", NAME="i2c/%n", SYMLINK+="%k" + +# loop devices +KERNEL=="loop[0-9]*", NAME="loop/%n", SYMLINK+="%k" + +# misc +KERNEL=="nvram", NAME="misc/%k", SYMLINK+="%k", GROUP="kmem", MODE="0640" +KERNEL=="psaux", NAME="misc/%k", SYMLINK+="%k" +KERNEL=="uinput", NAME="misc/%k", SYMLINK+="%k" +KERNEL=="sgi_fetchop", MODE="0666" +KERNEL=="sonypi", MODE="0666" +KERNEL=="inotify", NAME="misc/%k", SYMLINK+="%k", MODE="0666" + +# sound devices +# alsa devices +SUBSYSTEM=="sound", GROUP="audio" +# oss devices +KERNEL=="audio*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="dmmidi*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="admmidi*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="dsp*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="adsp*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="midi*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="amidi*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="mixer*", NAME="sound/%k", SYMLINK+="%k" +KERNEL=="sequencer*", NAME="sound/%k", SYMLINK+="%k" + +# USB devices +KERNEL=="hiddev*", NAME="usb/%k" +KERNEL=="legousbtower*", NAME="usb/%k", MODE="0666" +KERNEL=="dabusb*", NAME="usb/%k" + +# netlink devices +KERNEL=="route", NAME="netlink/%k" +KERNEL=="skip", NAME="netlink/%k" +KERNEL=="usersock", NAME="netlink/%k" +KERNEL=="fwmonitor", NAME="netlink/%k" +KERNEL=="tcpdiag", NAME="netlink/%k" +KERNEL=="nflog", NAME="netlink/%k" +KERNEL=="xfrm", NAME="netlink/%k" +KERNEL=="arpd", NAME="netlink/%k" +KERNEL=="route6", NAME="netlink/%k" +KERNEL=="ip6_fw", NAME="netlink/%k" +KERNEL=="dnrtmsg", NAME="netlink/%k" +### ! disabled seems to break device creation ! +# KERNEL=="tap*", NAME="netlink/%k" + +# IEEE1394 (firewire) devices +KERNEL=="raw1394", NAME="%k", GROUP="video" + +# kbd devices +KERNEL=="kbd", MODE="0664" + +####################################### +# Permissions and Symlinks - end +####################################### diff --git a/abs/core/udev/PKGBUILD b/abs/core/udev/PKGBUILD index 7c71a08..c22b10b 100644 --- a/abs/core/udev/PKGBUILD +++ b/abs/core/udev/PKGBUILD @@ -1,15 +1,17 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22190 2008-12-22 18:25:11Z tpowa $ +# Maintainer: Aaron Griffin # Maintainer: Tobias Powalowski # Maintainer: Thomas Bächler pkgname=udev -pkgver=119 -pkgrel=10 +pkgver=135 +pkgrel=7 pkgdesc="The userspace dev tools (udev)" arch=(i686 x86_64) url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html" license=('GPL') groups=('base') depends=('glibc' 'coreutils' 'util-linux') +makedepends=('kernel26') #needed to build framebuffer blacklist install=udev.install backup=(etc/udev/udev.conf etc/scsi_id.config @@ -17,66 +19,78 @@ backup=(etc/udev/udev.conf etc/modprobe.d/framebuffer_blacklist) conflicts=('pcmcia-cs' 'hotplug') replaces=('devfsd') +# older initscripts versions required start_udev +conflicts=('initscripts<2008.02') options=(!makeflags) source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.bz2 - migrate-udev start_udev 51-arch.rules load-modules.sh - cdrom-rules.patch cdsymlinks.sh root-link.sh readme-udev-arch.txt arch-udev-rules.patch) -md5sums=('dd299c16371c9e14e52d79744bccf4c0' - '49434a593918c822077bc3af765f1aff' - 'a68a519d1ed8cbbd2f45c23eb32ea218' - '082e76ef9053495a5cade321817467cd' - '945f6d30ab458189b3c17f8e6722da1f' - '5de33ba31ce52ab4da47fe3ddd3c19ea' + 81-arch.rules load-modules.sh resolve-modalias.c cdsymlinks.sh root-link.sh + arch-udev-rules.patch readme-udev-arch.txt usb-storage.rules udev-ntfs-3g.patch mount-usb) +md5sums=('661b9df34e1304dad10f595d95b472bb' + '3a955ca8e2122a48a223f9d8adf87b70' + 'f4951f61438d69894b728212dac7318b' + 'fca04a608009069beb786e26338a783b' '8424b78e9dd772e75b4ef90814807815' '2d6dc6842464f107bccc68cd505a6c31' - '780db5316a762dc5cdcf52027ab8a8eb' - 'fab7fa68aa35f0595c0b2bd88c4dbfd9') + 'ae216c26a6a5cae4a3ef9c0e1f7bfaa6' + '7fc6d33bb218e752302eef0a80ff0a89' + '11eaec41b77746f50975d4ef834c8f83') build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver + patch -p1 < ../udev-ntfs-3g.patch || return 1 + ./configure --prefix="" --mandir=/usr/share/man --includedir=/usr/include make || return 1 - make INSTALL=/bin/install DESTDIR=$startdir/pkg install \ - EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id extras/firmware extras/floppy extras/scsi_id extras/usb_id extras/volume_id extras/path_id extras/rule_generator" + make DESTDIR=$startdir/pkg install + + # Fix pkgconfig path + install -d -m755 $pkgdir/usr/lib + mv $pkgdir/lib/pkgconfig $pkgdir/usr/lib + + # Non-stock rules still go in /etc + install -D -m644 $srcdir/81-arch.rules $pkgdir/etc/udev/rules.d/81-arch.rules + install -D -m644 $srcdir/usb-storage.rules $pkgdir/etc/udev/rules.d/usb-storage.rules + + # Scripts needed + mkdir $pkgdir/etc/udev/scripts + install -D -m744 $srcdir/mount-usb $pkgdir/etc/udev/scripts - install -D -m755 extras/path_id/path_id $startdir/pkg/sbin/path_id - install -D -m755 $startdir/src/start_udev $startdir/pkg/etc/start_udev - install -D -m755 $startdir/src/migrate-udev $startdir/pkg/sbin/migrate-udev - install -D -m644 $startdir/src/51-arch.rules $startdir/pkg/etc/udev/rules.d/51-arch.rules # install our module loading subsystem - install -D -m755 $startdir/src/load-modules.sh $startdir/pkg/lib/udev/load-modules.sh + install -D -m755 $srcdir/load-modules.sh $pkgdir/lib/udev/load-modules.sh + install -d -m755 $pkgdir/bin + gcc -Wall $CFLAGS -o $pkgdir/bin/resolve-modalias $srcdir/resolve-modalias.c # install cdsymlinks.sh - install -D -m755 $startdir/src/cdsymlinks.sh $startdir/pkg/lib/udev/cdsymlinks.sh + install -D -m755 $srcdir/cdsymlinks.sh $pkgdir/lib/udev/cdsymlinks.sh # install root-link.sh - install -D -m755 $startdir/src/root-link.sh $startdir/pkg/lib/udev/root-link.sh + install -D -m755 $srcdir/root-link.sh $pkgdir/lib/udev/root-link.sh + # install instructions - install -D -m644 $startdir/src/readme-udev-arch.txt $startdir/pkg/etc/udev/readme-udev-arch.txt + # NOTE: We should delete this file + install -D -m644 $srcdir/readme-udev-arch.txt $pkgdir/usr/share/udev/readme-udev-arch.txt + # add devices dir - mkdir $startdir/pkg/lib/udev/devices - # disable error loggin to prevent startup failures printed to vc on boot - sed -i -e 's|udev_log="err"|udev_log="0"|g' $startdir/pkg/etc/udev/udev.conf + mkdir $pkgdir/lib/udev/devices + # disable error logging to prevent startup failures printed to vc on boot + sed -i -e 's|udev_log="err"|udev_log="0"|g' $pkgdir/etc/udev/udev.conf # install additional rules files - install -D -m 644 $startdir/src/$pkgname-$pkgver/etc/udev/packages/40-pilot-links.rules $startdir/pkg/etc/udev/rules.d/ - install -D -m 644 $startdir/src/$pkgname-$pkgver/etc/udev/packages/64-device-mapper.rules $startdir/pkg/etc/udev/rules.d/ - install -D -m 644 $startdir/src/$pkgname-$pkgver/etc/udev/packages/64-md-raid.rules $startdir/pkg/etc/udev/rules.d/ - # fix 60-cdrom_id.rules - cd $startdir/pkg/etc/udev/rules.d/ - patch -Np0 -i $startdir/src/cdrom-rules.patch || return 1 - # fix standard udev rules to fit to arch - patch -Np0 -i $startdir/src/arch-udev-rules.patch || return 1 - # fix program paths in rules files - for i in vol_id cdrom_id ata_id scsi_id path_id edd_id usb_id; do - sed -i -e "s#$i#/lib/udev/$i#g" $startdir/pkg/etc/udev/rules.d/* + for rule in $srcdir/$pkgname-$pkgver/rules/packages/*.rules; do + install -D -m 644 $rule $pkgdir/lib/udev/rules.d/ done - # fix modprobe rules to use the load-modules.sh - sed -i -e "s#/sbin/modprobe#/lib/udev/load-modules.sh#g" $startdir/pkg/etc/udev/rules.d/* - # disable persistent cdromsymlinks and network by default - mv $startdir/pkg/etc/udev/rules.d/75-persistent-net-generator.rules \ - $startdir/pkg/etc/udev/rules.d/75-persistent-net-generator.rules.optional - mv $startdir/pkg/etc/udev/rules.d/75-cd-aliases-generator.rules \ - $startdir/pkg/etc/udev/rules.d/75-cd-aliases-generator.rules.optional + # fix standard udev rules to fit to arch + cd $pkgdir/lib/udev/rules.d/ + patch -Np1 -i $srcdir/arch-udev-rules.patch || return 1 + + # remove the md-raid rules which are now provided by the mdadm package + rm -f $pkgdir/lib/udev/rules.d/64-md-raid.rules + + # disable persistent cdromsymlinks and network by default + # and move it to /etc/udev/rules.d + mv $pkgdir/lib/udev/rules.d/75-persistent-net-generator.rules \ + $pkgdir/etc/udev/rules.d/75-persistent-net-generator.rules.optional + mv $pkgdir/lib/udev/rules.d/75-cd-aliases-generator.rules \ + $pkgdir/etc/udev/rules.d/75-cd-aliases-generator.rules.optional # create framebuffer blacklist - mkdir -p $startdir/pkg/etc/modprobe.d/ - for mod in $(find /lib/modules/ -name '*fb*.ko' -exec basename {} .ko \;); do - echo "blacklist $mod" >> $startdir/pkg/etc/modprobe.d/framebuffer_blacklist + mkdir -p $pkgdir/etc/modprobe.d/ + for mod in $(find /lib/modules/*/kernel/drivers/video -name '*fb.ko' -exec basename {} .ko \;); do + echo "blacklist $mod" >> $pkgdir/etc/modprobe.d/framebuffer_blacklist done } diff --git a/abs/core/udev/__changelog b/abs/core/udev/__changelog new file mode 100644 index 0000000..7e00323 --- /dev/null +++ b/abs/core/udev/__changelog @@ -0,0 +1 @@ +Added usb-storage.rule and script to un/mount USB drives. diff --git a/abs/core/udev/arch-udev-rules.patch b/abs/core/udev/arch-udev-rules.patch index fc5ede0..b672731 100644 --- a/abs/core/udev/arch-udev-rules.patch +++ b/abs/core/udev/arch-udev-rules.patch @@ -1,17 +1,58 @@ ---- 50-udev-default.rules.old 2008-03-09 17:52:59.000000000 +0100 -+++ 50-udev-default.rules 2008-03-09 17:09:50.000000000 +0100 +diff -Nur rules.d/60-persistent-storage.rules rules.d.arch/60-persistent-storage.rules +--- rules.d/60-persistent-storage.rules 2008-09-12 15:59:57.000000000 +0200 ++++ rules.d.arch/60-persistent-storage.rules 2008-09-12 16:00:50.000000000 +0200 +@@ -10,7 +10,7 @@ + SUBSYSTEM!="block", GOTO="persistent_storage_end" + + # skip rules for inappropriate block devices +-KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*|btibm*", GOTO="persistent_storage_end" ++KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*|btibm*", GOTO="persistent_storage_end" + + # never access non-cdrom removable ide devices, the drivers are causing event loops on open() + KERNEL=="hd*[!0-9]", ATTR{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end" +diff -Nur rules.d/80-drivers.rules rules.d.arch/80-drivers.rules +--- rules.d/80-drivers.rules 2008-09-12 15:59:57.000000000 +0200 ++++ rules.d.arch/80-drivers.rules 2008-09-12 16:01:56.000000000 +0200 +@@ -2,14 +2,16 @@ + + ACTION!="add", GOTO="drivers_end" + +-DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/sbin/modprobe $env{MODALIAS}" +-SUBSYSTEM=="tifm", RUN+="/sbin/modprobe --all tifm_sd tifm_ms" +-SUBSYSTEM=="memstick", RUN+="/sbin/modprobe --all ms_block mspro_block" +-SUBSYSTEM=="mmc", RUN+="/sbin/modprobe mmc_block" +-SUBSYSTEM=="i2o", RUN+="/sbin/modprobe i2o_block" +-SUBSYSTEM=="ide", ATTR{media}=="tape", RUN+="/sbin/modprobe ide-scsi" +-SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg" +-SUBSYSTEM=="module", KERNEL=="parport_pc", RUN+="/sbin/modprobe ppdev" ++DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/lib/udev/load-modules.sh $env{MODALIAS}" ++SUBSYSTEM=="tifm", RUN+="/lib/udev/load-modules.sh tifm_sd" ++SUBSYSTEM=="tifm", RUN+="/lib/udev/load-modules.sh tifm_ms" ++SUBSYSTEM=="memstick", RUN+="/lib/udev/load-modules.sh ms_block" ++SUBSYSTEM=="memstick", RUN+="/lib/udev/load-modules.sh mspro_block" ++SUBSYSTEM=="mmc", RUN+="/lib/udev/load-modules.sh mmc_block" ++SUBSYSTEM=="i2o", RUN+="/lib/udev/load-modules.sh i2o_block" ++SUBSYSTEM=="ide", ATTR{media}=="tape", RUN+="/lib/udev/load-modules.sh ide-scsi" ++SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/lib/udev/load-modules.sh sg" ++SUBSYSTEM=="module", KERNEL=="parport_pc", RUN+="/lib/udev/load-modules.sh ppdev" + + LABEL="drivers_end" + +diff -Nur rules.d/50-udev-default.rules rules.d.arch/50-udev-default.rules +--- rules.d/50-udev-default.rules 2008-09-12 15:59:57.000000000 +0200 ++++ rules.d.arch/50-udev-default.rules 2008-09-12 16:00:50.000000000 +0200 @@ -4,12 +4,17 @@ - KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660", OPTIONS="last_rule" - KERNEL=="ptmx", GROUP="tty", MODE="0666", OPTIONS="last_rule" - KERNEL=="tty", GROUP="tty", MODE="0666", OPTIONS="last_rule" --KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620", OPTIONS="last_rule" --KERNEL=="vcs|vcs[0-9]*|vcsa|vcsa[0-9]*", GROUP="tty", OPTIONS="last_rule" -+KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620", NAME="vc/%n", SYMLINK+="%k" OPTIONS="last_rule" -+KERNEL=="vcs", GROUP="tty", NAME="vcc/0", OPTIONS="last_rule" -+KERNEL=="vcs[0-9]*", GROUP="tty", NAME="vcc/%n", OPTIONS="last_rule" -+KERNEL=="vcsa", GROUP="tty", NAME="vcc/a0", OPTIONS="last_rule" -+KERNEL=="vcsa[0-9]*", GROUP="tty", NAME="vcc/a%n", OPTIONS="last_rule" - KERNEL=="console", MODE="0600", OPTIONS="last_rule" + KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660", OPTIONS+="last_rule" + KERNEL=="ptmx", GROUP="tty", MODE="0666", OPTIONS+="last_rule" + KERNEL=="tty", GROUP="tty", MODE="0666", OPTIONS+="last_rule" +-KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620", OPTIONS+="last_rule" +-KERNEL=="vcs|vcs[0-9]*|vcsa|vcsa[0-9]*", GROUP="tty", OPTIONS+="last_rule" ++KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620", NAME="vc/%n", SYMLINK+="%k" OPTIONS+="last_rule" ++KERNEL=="vcs", GROUP="tty", NAME="vcc/0", OPTIONS+="last_rule" ++KERNEL=="vcs[0-9]*", GROUP="tty", NAME="vcc/%n", OPTIONS+="last_rule" ++KERNEL=="vcsa", GROUP="tty", NAME="vcc/a0", OPTIONS+="last_rule" ++KERNEL=="vcsa[0-9]*", GROUP="tty", NAME="vcc/a%n", OPTIONS+="last_rule" + KERNEL=="console", MODE="0600", OPTIONS+="last_rule" # serial KERNEL=="tty[A-Z]*|pppox*|ircomm*|noz*", GROUP="uucp" @@ -20,69 +61,49 @@ KERNEL=="ppp", MODE="0600", OPTIONS+="ignore_remove" KERNEL=="mwave", NAME="modems/mwave", GROUP="uucp" KERNEL=="hvc*|hvsi*", GROUP="uucp" -@@ -20,8 +25,7 @@ - KERNEL=="null|zero|full|random|urandom", MODE="0666" - KERNEL=="null", SYMLINK+="XOR" - KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" --KERNEL=="ram0", SYMLINK+="ramdisk" --KERNEL=="ram1", SYMLINK+="ram" +@@ -21,6 +26,7 @@ + KERNEL=="mem|kmem|port|nvram", GROUP="kmem", MODE="0640" + KERNEL=="ram0", SYMLINK+="ramdisk" + KERNEL=="ram1", SYMLINK+="ram" +KERNEL=="ram[0-9]*", NAME="rd/%n", SYMLINK+="%k" # input KERNEL=="mouse*|mice|event*", NAME="input/%k", MODE="0640" -@@ -30,23 +34,30 @@ - - # video4linux +@@ -36,13 +36,18 @@ + KERNEL=="vtx*|vbi*", GROUP="video" + KERNEL=="winradio*", GROUP="video" KERNEL=="vbi0", SYMLINK+="vbi" -+KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="%k", GROUP="video" - KERNEL=="radio0", SYMLINK+="radio" +-KERNEL=="radio0", SYMLINK+="radio" ++KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="%k" ++KERNEL=="radio0", SYMLINK+="video" +KERNEL=="radio[0-9]*", NAME="v4l/radio%n", SYMLINK+="radio%n", GROUP="video" KERNEL=="video0", SYMLINK+="video" -+KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="%k", GROUP="video" ++KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="%k" +KERNEL=="vtx0", SYMLINK+="vtx" -+KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", SYMLINK+="%k", GROUP="video" ++KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", SYMLINK+="%k" # graphics --KERNEL=="agpgart", MODE="0600" +-KERNEL=="agpgart", MODE="0600", GROUP="video" -KERNEL=="card[0-9]*", NAME="dri/%k", MODE="0666" -+### xorg resets those permissions, adjust your xorg.conf! +-KERNEL=="fb0", SYMLINK+="fb" +KERNEL=="agpgart", NAME="misc/%k", SYMLINK+="%k", GROUP="video", MODE="0600" +KERNEL=="card[0-9]*", NAME="dri/%k", GROUP="video", MODE="0666" +KERNEL=="fb[0-9]*", NAME="fb/%n", SYMLINK+="%k", GROUP="video" - KERNEL=="fb0", SYMLINK+="fb" - - # DVB video --SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c" -+SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video" - - # Firewire --KERNEL=="dv1394*", SYMLINK+="dv1394/%n" --KERNEL=="video1394*", NAME="video1394/%n" -+KERNEL=="dv1394*", SYMLINK+="dv1394/%n", GROUP="video" -+KERNEL=="video1394*", NAME="video1394/%n", GROUP="video" - - # firmware class requests --SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh" -+SUBSYSTEM=="firmware", ACTION=="add", ENV{FIRMWARE}=="?*", RUN+="firmware.sh" - - # libusb device nodes - SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0644" -@@ -59,23 +70,20 @@ - KERNEL=="irlpt[0-9]*", GROUP="lp" - + KERNEL=="pmu", GROUP="video" + KERNEL=="nvidia*|nvidiactl*", GROUP="video" + SUBSYSTEM=="graphics", GROUP="video" +@@ -62,19 +73,19 @@ # block, tapes, block-releated --SUBSYSTEM=="block", GROUP="disk", MODE="0640" --SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="scd%n" -+SUBSYSTEM=="block", GROUP="disk" - SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="0|7|14", ATTR{timeout}="60" - SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="1", ATTR{timeout}="900" + SUBSYSTEM=="block", GROUP="disk" + SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="scd%n" -KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions" --KERNEL=="fd[0-9]", GROUP="floppy" --KERNEL=="fd[0-9]", ACTION=="add", ATTRS{cmos}=="?*", RUN+="create_floppy_devices -c -t $attr{cmos} -m %M -M 0640 -G floppy $root/%k" +KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions", GROUP="floppy" -+KERNEL=="fd[0-9]*", NAME="fd%n", SYMLINK+="floppy/%n fd%nu1440 fd%nu720 fd%nh1200 fd%nu360", GROUP="floppy" + KERNEL=="fd[0-9]", GROUP="floppy" +-KERNEL=="fd[0-9]", ACTION=="add", ATTRS{cmos}=="?*", RUN+="create_floppy_devices -c -t $attr{cmos} -m %M -M 0640 -G floppy $root/%k" ++KERNEL=="fd[0-9]", ACTION=="add", ATTRS{cmos}=="?*", RUN+="create_floppy_devices -c -t $attr{cmos} -m %M -M 0660 -G floppy $root/%k" KERNEL=="sch[0-9]*", GROUP="disk" -KERNEL=="sg[0-9]*", ATTRS{type}!="3|6", GROUP="disk", MODE="0640" ++KERNEL=="sg[0-9]*", ATTRS{type}!="3|6", GROUP="disk", MODE="0660" KERNEL=="ht[0-9]*|nht[0-9]*", GROUP="disk" KERNEL=="pg[0-9]*", GROUP="disk" KERNEL=="pt[0-9]*|npt[0-9]*", GROUP="disk" @@ -91,12 +112,12 @@ SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", NAME="raw/%k", GROUP="disk" -KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%k" -KERNEL=="pktcdvd", NAME="pktcdvd/control" -+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%k", GROUP="optical", MODE="0660" ++KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%k", GROUP="optical", MODE="0660" +KERNEL=="pktcdvd", NAME="pktcdvd/control", GROUP="optical", MODE="0660" KERNEL=="qft0", SYMLINK+="ftape" SUBSYSTEM=="bsg", NAME="bsg/%k" SUBSYSTEM=="aoe", NAME="etherd/%k", GROUP="disk" -@@ -84,13 +92,13 @@ +@@ -83,13 +94,13 @@ KERNEL=="tun", NAME="net/%k", MODE="0666", OPTIONS+="ignore_remove" # CPU @@ -109,43 +130,7 @@ # miscellaneous KERNEL=="fuse", MODE="0666" -KERNEL=="rtc|rtc0", MODE="0644" -+KERNEL=="rtc*", NAME="misc/%k", SYMLINK+="%k", GROUP="audio", MODE="0664" ++KERNEL=="rtc|rtc0", NAME="misc/%k", SYMLINK+="%k", GROUP="audio", MODE="0664" KERNEL=="rtc0", SYMLINK+="rtc" KERNEL=="auer[0-9]*", NAME="usb/%k" KERNEL=="hw_random", NAME="hwrng", SYMLINK+="%k" ---- 60-persistent-storage.rules.old 2008-03-09 17:52:59.000000000 +0100 -+++ 60-persistent-storage.rules 2008-03-09 15:05:13.000000000 +0100 -@@ -3,11 +3,13 @@ - # persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path} - # scheme based on "Linux persistent device names", 2004, Hannes Reinecke - --ACTION!="add|change", GOTO="persistent_storage_end" -+# needed like this!!! -+ACTION!="add|change", GOTO="persistent_storage_end" - SUBSYSTEM!="block", GOTO="persistent_storage_end" - - # skip rules for inappropriate block devices --KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*", GOTO="persistent_storage_end" -+# don't add dm-*!!! -+KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*", GOTO="persistent_storage_end" - - # never access non-cdrom removable ide devices, the drivers are causing event loops on open() - KERNEL=="hd*[!0-9]", ATTR{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end" ---- 80-drivers.rules~ 2008-03-15 00:05:02.000000000 +0100 -+++ 80-drivers.rules 2008-03-21 21:44:28.000000000 +0100 -@@ -3,10 +3,11 @@ - ACTION!="add", GOTO="drivers_end" - - DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/sbin/modprobe $env{MODALIAS}" --SUBSYSTEM=="pnp", DRIVER!="?*", ENV{MODALIAS}!="?*", \ -- RUN{ignore_error}+="/bin/sh -c '/sbin/modprobe -a $$(while read id; do echo pnp:d$$id; done < /sys$devpath/id)'" --SUBSYSTEM=="tifm", RUN+="/sbin/modprobe --all tifm_sd tifm_ms" --SUBSYSTEM=="memstick", RUN+="/sbin/modprobe --all ms_block mspro_block" -+SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", DRIVER!="?*", RUN{ignore_error}+="/bin/sh -c 'while read id; do /lib/udev/load-modules.sh pnp:d$$id; /lib/udev/load-modules.sh pnp:c$$id ; done < /sys$devpath/id'" -+SUBSYSTEM=="tifm", RUN+="/sbin/modprobe tifm_sd" -+SUBSYSTEM=="tifm", RUN+="/sbin/modprobe tifm_ms" -+SUBSYSTEM=="memstick", RUN+="/sbin/modprobe ms_block" -+SUBSYSTEM=="memstick", RUN+="/sbin/modprobe mspro_block" - SUBSYSTEM=="mmc", RUN+="/sbin/modprobe mmc_block" - SUBSYSTEM=="i2o", RUN+="/sbin/modprobe i2o_block" - SUBSYSTEM=="ide", ATTR{media}=="tape", RUN+="/sbin/modprobe ide-scsi" diff --git a/abs/core/udev/cdrom-rules.patch b/abs/core/udev/cdrom-rules.patch deleted file mode 100644 index 9b3518a..0000000 --- a/abs/core/udev/cdrom-rules.patch +++ /dev/null @@ -1,8 +0,0 @@ ---- 60-cdrom_id.rules.old 2006-09-07 09:57:04.000000000 +0200 -+++ 60-cdrom_id.rules 2006-09-07 11:29:31.000000000 +0200 -@@ -1,3 +1,4 @@ - # import optical drive properties - --KERNEL=="sr[0-9]*|hd[a-z]|pcd[0-9]*", IMPORT{program}="cdrom_id --export $tempnode" -+KERNEL=="sr[0-9]*|hd[a-z]|pcd[0-9]*", IMPORT{program}="cdrom_id --export $tempnode" -+KERNEL=="sr[0-9]*|hd[a-z]|pcd[0-9]*", IMPORT{program}="path_id %p" diff --git a/abs/core/udev/load-modules.sh b/abs/core/udev/load-modules.sh index 861b942..a42d376 100755 --- a/abs/core/udev/load-modules.sh +++ b/abs/core/udev/load-modules.sh @@ -1,4 +1,4 @@ -#! /bin/bash +#!/bin/bash # Implement blacklisting for udev-loaded modules [ $# -ne 1 ] && exit 1 @@ -7,20 +7,22 @@ # grab modules from rc.conf BLACKLIST="${MOD_BLACKLIST[@]}" +MODPROBE="/sbin/modprobe" +LOGGER="/usr/bin/logger" +RESOLVEALIAS="/bin/resolve-modalias" +USEBLACKLIST="--use-blacklist" if [ -f /proc/cmdline ]; then for cmd in $(cat /proc/cmdline); do case $cmd in - *=*) eval $cmd ;; + disablemodules=*) eval $cmd ;; + load_modules=off) exit ;; esac done #parse cmdline entries of the form "disablemodules=x,y,z" if [ -n "$disablemodules" ]; then BLACKLIST="$BLACKLIST $(echo $disablemodules | sed 's|,| |g')" fi - if [ "$load_modules" == "off" ]; then - MOD_AUTOLOAD="no" - fi fi #MODULES entries in rc.conf that begin with ! are blacklisted @@ -30,31 +32,49 @@ for mod in ${MODULES[@]}; do fi done - if [ "$MOD_AUTOLOAD" = "yes" -o "$MOD_AUTOLOAD" = "YES" ]; then - if [ -n "$BLACKLIST" ]; then - depmods="$(/sbin/modprobe -i --show-depends $1)" - if [ $? -ne 0 ]; then - /usr/bin/logger -p info "cannot find module $1" - exit 1 - fi - - #sanitize our module names - depmods="$(echo "$depmods" | sed \ - -e "s#^insmod /lib.*/\(.*\)\.ko.*#\1#g" \ - -e 's|-|_|g')" - - for mod in $depmods; do - if echo $BLACKLIST | /bin/grep "\<$mod\>" 2>&1 >/dev/null; then - /usr/bin/logger -p info "udev load-modules: $1 is blacklisted" - exit 1 - fi - done + if [ -n "${BLACKLIST}" ]; then + # If an alias name is on the blacklist, load no modules for this device + if echo "${BLACKLIST}" | /bin/grep -q -e " $1 " -e "^$1 " -e " $1\$"; then + $LOGGER -p info -t "$(basename $0)" "Not loading module alias '$1' because it is blacklisted" + exit fi - /sbin/modprobe $1 -else - #/usr/bin/logger -p info \ - echo \ - "udev load-modules: autoloading is disabled, not loading $1" + #sanitize the blacklist + BLACKLIST="$(echo "$BLACKLIST" | sed -e 's|-|_|g')" + # Try to find all modules for the alias + mods=$($RESOLVEALIAS /lib/modules/$(uname -r)/modules.alias $1) + # If no modules could be found, try if the alias name is a module name + # In that case, omit the --use-blacklist parameter to imitate normal modprobe behaviour + [ -z "${mods}" ] && $MODPROBE -qni $1 && mods="$1" && USEBLACKLIST="" + [ -z "${mods}" ] && $LOGGER -p info -t "$(basename $0)" "'$1' is not a valid module or alias name" + for mod in ${mods}; do + # Find the module and all its dependencies + deps="$($MODPROBE -i --show-depends ${mod})" + [ $? -ne 0 ] && continue + + #sanitize the module names + deps="$(echo "$deps" | sed \ + -e "s#^insmod /lib.*/\(.*\)\.ko.*#\1#g" \ + -e 's|-|_|g')" + + # If the module or any of its dependencies is blacklisted, don't load it + for dep in $deps; do + if echo "${BLACKLIST}" | /bin/grep -q -e " ${dep} " -e "^${dep} " -e " ${dep}\$"; then + if [ "${dep}" = "${mod}" ]; then + $LOGGER -p info -t "$(basename $0)" "Not loading module '${mod}' for alias '$1' because it is blacklisted" + else + $LOGGER -p info -t "$(basename $0)" "Not loading module '${mod}' for alias '$1' because its dependency '${dep}' is blacklisted" + fi + continue 2 + fi + done + # modprobe usually uses the "blacklist" statements from modprobe.conf only to blacklist all aliases + # of a module, but not the module itself. We use --use-blacklist here so that modprobe also blacklists + # module names if we resolved alias names manually above + $MODPROBE $USEBLACKLIST ${mod} + done + else + $MODPROBE $1 + fi fi # vim: set et ts=4: diff --git a/abs/core/udev/migrate-udev b/abs/core/udev/migrate-udev deleted file mode 100644 index a7a24c9..0000000 --- a/abs/core/udev/migrate-udev +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# This script will create static system-critical device nodes in your /dev -# tree so the initscripts can get by without devfs/udev long enough to start -# up devfs/udev. - -STARTDIR=`pwd` -TMPDIR=`mktemp -d` -ROOT=/ -[ "$1" != "" ] && ROOT=$1 - -mount --bind $ROOT $TMPDIR -cd $TMPDIR - -echo -n "creating device nodes: " -rm -f dev/console -rm -f dev/null -rm -f dev/zero -mknod dev/console c 5 1 -echo -n "console " -mknod -m 666 dev/null c 1 3 -echo -n "null " -mknod -m 666 dev/zero c 1 5 -echo -n "zero " -echo - -cd $STARTDIR -umount $TMPDIR -rm -rf $TMPDIR diff --git a/abs/core/udev/mod-blacklist.sh b/abs/core/udev/mod-blacklist.sh deleted file mode 100755 index 264192a..0000000 --- a/abs/core/udev/mod-blacklist.sh +++ /dev/null @@ -1,47 +0,0 @@ -#! /bin/bash -# Export a combined blacklist of all modules -# for use by the load-modules script -# -# NOTE: we only need bash because of rc.conf, but this -# is a one-time use script, so we're good - -. /etc/rc.conf - -# grab modules from rc.conf -BLACKLIST="${MOD_BLACKLIST[@]}" - -if [ -f /proc/cmdline ]; then - for cmd in $(cat /proc/cmdline); do - case $cmd in - *=*) eval $cmd ;; - esac - done - #parse cmdline entries of the form "disablemodules=x,y,z" - if [ -n "$disablemodules" ]; then - BLACKLIST="$BLACKLIST $(echo $disablemodules | sed 's|,| |g')" - fi - if [ "$load_modules" == "off" ]; then - MOD_AUTOLOAD="no" - fi -fi - -# blacklist framebuffer modules -DRIVER_DIR="/lib/modules/$(uname -r)/kernel/drivers/" -for x in $DRIVER_DIR/video/*/*fb*; do - BLACKLIST="$BLACKLIST $(basename $x .ko)" -done -for x in $DRIVER_DIR/video/*fb*; do - BLACKLIST="$BLACKLIST $(basename $x .ko)" -done - -#MODULES entries in rc.conf that begin with ! are blacklisted -for mod in ${MODULES[@]}; do - if [ "${mod}" != "${mod#!}" ]; then - BLACKLIST="$BLACKLIST ${mod#!}" - fi -done - -echo "MOD_AUTOLOAD=\"$MOD_AUTOLOAD\"" -echo "BLACKLIST=\"$BLACKLIST\"" - -# vim: set et ts=4: diff --git a/abs/core/udev/mount-usb b/abs/core/udev/mount-usb new file mode 100644 index 0000000..2d3b3f5 --- /dev/null +++ b/abs/core/udev/mount-usb @@ -0,0 +1,51 @@ +#!/bin/sh + + +DIR=/media +DEVICE=$2 +LABEL=`/lib/udev/vol_id -L /dev/$DEVICE` +FS=`/lib/udev/vol_id -t /dev/$DEVICE` + + +mount_device () { + if [ "$LABEL" == "" ]; + then + mkdir -p $DIR/usb-$DEVICE + case $FS in + vfat) /bin/mount -t vfat -o rw,noauto,flush,quiet,nodev,nosuid,noexec,noatime,dmask=000,fmask=111 /dev/$DEVICE $DIR/usb-$DEVICE + ;; + *) /bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/$DEVICE $DIR/usb-$DEVICE + ;; + esac + else + mkdir -p $DIR/$LABEL + echo $LABEL >$DIR/.$DEVICE + case $FS in + vfat) /bin/mount -t vfat -o rw,noauto,flush,quiet,nodev,nosuid,noexec,noatime,dmask=000,fmask=111 /dev/$DEVICE $DIR/$LABEL + ;; + *) /bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/$DEVICE $DIR/$LABEL + ;; + esac + fi +} + +umount_device () { + if [ -e $DIR/usb-$DEVICE ]; + then + umount -l $DIR/usb-$DEVICE + rmdir $DIR/usb-$DEVICE; + else + ULABEL=`cat $DIR/.$DEVICE` + umount -l $DIR/$ULABEL + rmdir $DIR/$ULABEL + rm $DIR/.$DEVICE; + fi +} + +case $1 in + mount) mount_device + ;; + umount) umount_device + ;; + *) echo "Usage: mount-usb mount/umount sdxY" +esac diff --git a/abs/core/udev/readme-udev-arch.txt b/abs/core/udev/readme-udev-arch.txt index ac4a693..e903a6b 100644 --- a/abs/core/udev/readme-udev-arch.txt +++ b/abs/core/udev/readme-udev-arch.txt @@ -1,7 +1,7 @@ ========================== Cold/Hotplugging with Udev ========================== -Version 1.1.5 +Version 1.1.6 written by Tobias Powalowski --------------- @@ -48,6 +48,8 @@ written by Tobias Powalowski in most cases it will be empty. --- snap Changelog Udev 098 - optional udev >= 099 Persistent rules generator for network and cd/dvd devices was added. +- default udev rules are installed to /lib/udev/rules.d/, they can be overriden by placing + own rules files to /etc/udev/rules.d/ . --------------- * How it works: @@ -57,7 +59,7 @@ written by Tobias Powalowski - Udev loads the modules simultaneously, which is much faster, but can cause some troubles with multiple network/sound/etc devices (see below). -- To reload your rules please use /etc/start_udev. +- To reload your rules please use '/sbin/udevadm trigger'. ====================== * Autoloading modules: @@ -113,7 +115,7 @@ is only used in mkinitrd now. - To enable this feature copy in /etc/udev/rules.d 75-cd-aliases-generator.rules.optinal to 75-cd-aliases-generator.rules - Also disable this part in /etc/udev/rules.d/40-arch.rules by putting a # in front: + Also disable this part in /lib/udev/rules.d/81-arch.rules by putting a # in front: --- snip ACTION=="add", SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", RUN+="/lib/udev/cdsymlinks.sh" ACTION=="add", SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", ATTRS{type}=="5", RUN+="/lib/udev/cdsymlinks.sh" @@ -124,7 +126,7 @@ is only used in mkinitrd now. --- snap - To get the same device name for CD/DVD symlinks each time you boot, - a rule will be generated during bootup or by executing /etc/start_udev. + a rule will be generated during bootup or by executing '/sbin/udevadm trigger'. - Examples: dvd, cdrom ,cdrw etc. - If you want to change those links, modify '/etc/udev/rules.d/70-peristent-cd.rules' to your needs. @@ -142,7 +144,7 @@ if you change your CD/DVD device, you have to check the 75-persistent-net-generator.rules.optional to 75-persistent-net-generator.rules - To get the same network device name each time you boot, - a rule will be generated during bootup or by executing /etc/start_udev. + a rule will be generated during bootup or by executing '/sbin/udevadm trigger'. - Examples: eth0, eth1, wlan0 etc. - If you want to change those names, modify '/etc/udev/rules.d/70-peristent-net.rules' to your needs. diff --git a/abs/core/udev/resolve-modalias.c b/abs/core/udev/resolve-modalias.c new file mode 100644 index 0000000..d1680b1 --- /dev/null +++ b/abs/core/udev/resolve-modalias.c @@ -0,0 +1,62 @@ +#include +#include +#include +#include + +static char *getline(FILE *file) { + static size_t size = 1024; + static char *buf = NULL; + static unsigned int i = 0, r = 0;; + + if(buf == NULL) + buf = (char*)malloc(size); + + if(i) { + memmove(buf, buf+i, size-i); + r -= i; + i = 0; + } + + while(1) { + if(i == size) { + size *= 2; + buf = (char*)realloc(buf, size); + } + + if(i==r) + r += fread(buf+i, 1, size-i, file); + + if(i==r && i == 0) { + free(buf); + buf = NULL; + r = 0; + return NULL; + } + + if(i==r || buf[i] == '\n') { + buf[i++] = '\0'; + return buf; + } + i++; + } +} + +int main(int argc, char *argv[]) { + FILE *f=fopen(argv[1], "r"); + char *line, *pattern, *module; + char *pos1, *pos2; + + while((line=getline(f))!=NULL) { + if(!strncmp(line, "alias", strlen("alias"))) { + pos1 = index(line, ' '); + pos2 = index(pos1+1, ' '); + pattern = pos1+1; + *pos2 = '\0'; + module = pos2+1; + + if(!fnmatch(pattern, argv[2], 0)) + printf("%s\n", module); + } + } + return 0; +} diff --git a/abs/core/udev/udev-ntfs-3g.patch b/abs/core/udev/udev-ntfs-3g.patch new file mode 100644 index 0000000..366c41f --- /dev/null +++ b/abs/core/udev/udev-ntfs-3g.patch @@ -0,0 +1,217 @@ +diff -ruaN udev-135.orig/extras/volume_id/lib/ntfs.c udev-135/extras/volume_id/lib/ntfs.c +--- udev-135.orig/extras/volume_id/lib/ntfs.c 2008-11-13 20:42:56.000000000 +0000 ++++ udev-135/extras/volume_id/lib/ntfs.c 2009-06-28 23:31:01.000000000 +0000 +@@ -194,7 +194,7 @@ + } + + volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); +- id->type = "ntfs"; ++ id->type = "ntfs-3g"; + /* we think this is ntfs, but we make sure no other signatures are found */ + id->force_unique_result = 1; + return 0; +diff -ruaN udev-135.orig/extras/volume_id/lib/ntfs.c~ udev-135/extras/volume_id/lib/ntfs.c~ +--- udev-135.orig/extras/volume_id/lib/ntfs.c~ 1970-01-01 00:00:00.000000000 +0000 ++++ udev-135/extras/volume_id/lib/ntfs.c~ 2008-11-13 20:42:56.000000000 +0000 +@@ -0,0 +1,201 @@ ++/* ++ * volume_id - reads filesystem label and uuid ++ * ++ * Copyright (C) 2004 Kay Sievers ++ * ++ * 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, see . ++ */ ++ ++#ifndef _GNU_SOURCE ++#define _GNU_SOURCE 1 ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "libvolume_id.h" ++#include "libvolume_id-private.h" ++ ++static struct ntfs_super_block { ++ uint8_t jump[3]; ++ uint8_t oem_id[8]; ++ uint16_t bytes_per_sector; ++ uint8_t sectors_per_cluster; ++ uint16_t reserved_sectors; ++ uint8_t fats; ++ uint16_t root_entries; ++ uint16_t sectors; ++ uint8_t media_type; ++ uint16_t sectors_per_fat; ++ uint16_t sectors_per_track; ++ uint16_t heads; ++ uint32_t hidden_sectors; ++ uint32_t large_sectors; ++ uint16_t unused[2]; ++ uint64_t number_of_sectors; ++ uint64_t mft_cluster_location; ++ uint64_t mft_mirror_cluster_location; ++ int8_t cluster_per_mft_record; ++ uint8_t reserved1[3]; ++ int8_t cluster_per_index_record; ++ uint8_t reserved2[3]; ++ uint8_t volume_serial[8]; ++ uint16_t checksum; ++} PACKED *ns; ++ ++static struct master_file_table_record { ++ uint8_t magic[4]; ++ uint16_t usa_ofs; ++ uint16_t usa_count; ++ uint64_t lsn; ++ uint16_t sequence_number; ++ uint16_t link_count; ++ uint16_t attrs_offset; ++ uint16_t flags; ++ uint32_t bytes_in_use; ++ uint32_t bytes_allocated; ++} PACKED *mftr; ++ ++static struct file_attribute { ++ uint32_t type; ++ uint32_t len; ++ uint8_t non_resident; ++ uint8_t name_len; ++ uint16_t name_offset; ++ uint16_t flags; ++ uint16_t instance; ++ uint32_t value_len; ++ uint16_t value_offset; ++} PACKED *attr; ++ ++static struct volume_info { ++ uint64_t reserved; ++ uint8_t major_ver; ++ uint8_t minor_ver; ++} PACKED *info; ++ ++#define MFT_RECORD_VOLUME 3 ++#define MFT_RECORD_ATTR_VOLUME_NAME 0x60 ++#define MFT_RECORD_ATTR_VOLUME_INFO 0x70 ++#define MFT_RECORD_ATTR_OBJECT_ID 0x40 ++#define MFT_RECORD_ATTR_END 0xffffffffu ++ ++int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size) ++{ ++ unsigned int sector_size; ++ unsigned int cluster_size; ++ uint64_t mft_cluster; ++ uint64_t mft_off; ++ unsigned int mft_record_size; ++ unsigned int attr_type; ++ unsigned int attr_off; ++ unsigned int attr_len; ++ unsigned int val_off; ++ unsigned int val_len; ++ const uint8_t *buf; ++ const uint8_t *val; ++ ++ info("probing at offset 0x%" PRIx64 "\n", off); ++ ++ ns = (struct ntfs_super_block *) volume_id_get_buffer(id, off, 0x200); ++ if (ns == NULL) ++ return -1; ++ ++ if (memcmp(ns->oem_id, "NTFS", 4) != 0) ++ return -1; ++ ++ volume_id_set_uuid(id, ns->volume_serial, 0, UUID_64BIT_LE); ++ ++ sector_size = le16_to_cpu(ns->bytes_per_sector); ++ if (sector_size < 0x200) ++ return -1; ++ ++ cluster_size = ns->sectors_per_cluster * sector_size; ++ mft_cluster = le64_to_cpu(ns->mft_cluster_location); ++ mft_off = mft_cluster * cluster_size; ++ ++ if (ns->cluster_per_mft_record < 0) ++ /* size = -log2(mft_record_size); normally 1024 Bytes */ ++ mft_record_size = 1 << -ns->cluster_per_mft_record; ++ else ++ mft_record_size = ns->cluster_per_mft_record * cluster_size; ++ ++ dbg("sectorsize 0x%x\n", sector_size); ++ dbg("clustersize 0x%x\n", cluster_size); ++ dbg("mftcluster %" PRIu64 "\n", mft_cluster); ++ dbg("mftoffset 0x%" PRIx64 "\n", mft_off); ++ dbg("cluster per mft_record %i\n", ns->cluster_per_mft_record); ++ dbg("mft record size %i\n", mft_record_size); ++ ++ buf = volume_id_get_buffer(id, off + mft_off + (MFT_RECORD_VOLUME * mft_record_size), ++ mft_record_size); ++ if (buf == NULL) ++ return -1; ++ ++ mftr = (struct master_file_table_record*) buf; ++ dbg("mftr->magic '%c%c%c%c'\n", mftr->magic[0], mftr->magic[1], mftr->magic[2], mftr->magic[3]); ++ if (memcmp(mftr->magic, "FILE", 4) != 0) ++ return -1; ++ ++ attr_off = le16_to_cpu(mftr->attrs_offset); ++ dbg("file $Volume's attributes are at offset %i\n", attr_off); ++ ++ while (1) { ++ attr = (struct file_attribute*) &buf[attr_off]; ++ attr_type = le32_to_cpu(attr->type); ++ attr_len = le16_to_cpu(attr->len); ++ val_off = le16_to_cpu(attr->value_offset); ++ val_len = le32_to_cpu(attr->value_len); ++ attr_off += attr_len; ++ ++ if (attr_len == 0) ++ break; ++ ++ if (attr_off >= mft_record_size) ++ break; ++ ++ if (attr_type == MFT_RECORD_ATTR_END) ++ break; ++ ++ dbg("found attribute type 0x%x, len %i, at offset %i\n", ++ attr_type, attr_len, attr_off); ++ ++ if (attr_type == MFT_RECORD_ATTR_VOLUME_INFO) { ++ dbg("found info, len %i\n", val_len); ++ info = (struct volume_info*) (((uint8_t *) attr) + val_off); ++ snprintf(id->type_version, sizeof(id->type_version)-1, ++ "%u.%u", info->major_ver, info->minor_ver); ++ } ++ ++ if (attr_type == MFT_RECORD_ATTR_VOLUME_NAME) { ++ dbg("found label, len %i\n", val_len); ++ if (val_len > VOLUME_ID_LABEL_SIZE) ++ val_len = VOLUME_ID_LABEL_SIZE; ++ ++ val = ((uint8_t *) attr) + val_off; ++ volume_id_set_label_raw(id, val, val_len); ++ volume_id_set_label_unicode16(id, val, LE, val_len); ++ } ++ } ++ ++ volume_id_set_usage(id, VOLUME_ID_FILESYSTEM); ++ id->type = "ntfs"; ++ /* we think this is ntfs, but we make sure no other signatures are found */ ++ id->force_unique_result = 1; ++ return 0; ++} diff --git a/abs/core/udev/udev.install b/abs/core/udev/udev.install index 19d3546..bb8b166 100644 --- a/abs/core/udev/udev.install +++ b/abs/core/udev/udev.install @@ -1,9 +1,4 @@ # arg 1: the new package version -post_install() { - sbin/migrate-udev `pwd` -} - -# arg 1: the new package version # arg 2: the old package version post_upgrade() { if [ "$(vercmp $2 100)" -lt 0 ]; then @@ -17,6 +12,21 @@ if [ "$(vercmp $2 100)" -lt 0 ]; then fi } +post_install() { + # If a ramfs is mounted, we still need to make sure that /dev/{console,null,zero} exist + # The Archlinux installer bind-mounts /dev to /mnt/dev, thus making the real /dev invisible + ROOTDIR="" + [ "$(stat -c %D /)" != "$(stat -c %D /dev)" ] && ROOTDIR=$(mktemp -d /tmp/udevinstall.XXXXXX) + [ -n "${ROOTDIR}" ] && mount --bind / ${ROOTDIR} + [ -c ${ROOTDIR}/dev/console ] || mknod -m600 ${ROOTDIR}/dev/console c 5 1 + [ -c ${ROOTDIR}/dev/null ] || mknod -m644 ${ROOTDIR}/dev/null c 1 3 + [ -c ${ROOTDIR}/dev/zero ] || mknod -m644 ${ROOTDIR}/dev/zero c 1 5 + if [ -n "${ROOTDIR}" ]; then + umount ${ROOTDIR} + rmdir ${ROOTDIR} + fi +} + op=$1 shift $op $* diff --git a/abs/core/udev/usb-storage.rules b/abs/core/udev/usb-storage.rules new file mode 100644 index 0000000..a7e0726 --- /dev/null +++ b/abs/core/udev/usb-storage.rules @@ -0,0 +1,4 @@ +SUBSYSTEMS=="usb", KERNEL=="sd[b-z]", NAME="%k", SYMLINK+="usb-%k", GROUP="users", OPTIONS="last_rule" +ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd[b-z][0-9]", SYMLINK+="usb-%k", GROUP="users", NAME="%k" +ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd[b-z][0-9]", RUN+="/etc/udev/scripts/mount-usb mount %k", OPTIONS="last_rule" +ACTION=="remove", SUBSYSTEMS=="block", RUN+="/etc/udev/scripts/mount-usb umount %k", OPTIONS="last_rule"# diff --git a/abs/core/udev/usb_id-fix.patch b/abs/core/udev/usb_id-fix.patch deleted file mode 100644 index 35fb2e1..0000000 --- a/abs/core/udev/usb_id-fix.patch +++ /dev/null @@ -1,107 +0,0 @@ -From: Kay Sievers -Date: Mon, 15 Oct 2007 18:38:20 +0000 (+0200) -Subject: usb_id: fail if vendor/product can not be retrieved -X-Git-Url: http://git.kernel.org/?p=linux%2Fhotplug%2Fudev.git;a=commitdiff_plain;h=963033472f8d2aab0bf77147b916de8f3b0b5450 - -usb_id: fail if vendor/product can not be retrieved - -Thanks to Daniel Drake for identifying the bug. ---- - -diff --git a/extras/usb_id/usb_id.c b/extras/usb_id/usb_id.c -index d36a27b..5fb030d 100644 ---- a/extras/usb_id/usb_id.c -+++ b/extras/usb_id/usb_id.c -@@ -1,7 +1,5 @@ - /* -- * usb_id.c -- * -- * Identify an USB (block) device -+ * usb_id - identify an USB device - * - * Copyright (c) 2005 SUSE Linux Products GmbH, Germany - * -@@ -224,8 +222,6 @@ static int usb_id(const char *devpath) - struct sysfs_device *dev; - struct sysfs_device *dev_interface; - struct sysfs_device *dev_usb; -- const char *scsi_model, *scsi_vendor, *scsi_type, *scsi_rev; -- const char *usb_model = NULL, *usb_vendor = NULL, *usb_rev, *usb_serial; - const char *if_class, *if_subclass; - int if_class_num; - int protocol = 0; -@@ -271,6 +267,7 @@ static int usb_id(const char *devpath) - /* mass storage */ - if (protocol == 6 && !use_usb_info) { - struct sysfs_device *dev_scsi; -+ const char *scsi_model, *scsi_vendor, *scsi_type, *scsi_rev; - int host, bus, target, lun; - - /* get scsi device */ -@@ -321,40 +318,50 @@ static int usb_id(const char *devpath) - } - - fallback: -- /* Fallback to USB vendor & device */ -+ /* fallback to USB vendor & device */ - if (vendor_str[0] == '\0') { -+ const char *usb_vendor = NULL; -+ - if (!use_num_info) -- if (!(usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "manufacturer"))) -- dbg("No USB vendor string found, using idVendor"); -+ usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "manufacturer"); -+ -+ if (!usb_vendor) -+ usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "idVendor"); - - if (!usb_vendor) { -- if (!(usb_vendor = sysfs_attr_get_value(dev_usb->devpath, "idVendor"))) { -- dbg("No USB vendor information available\n"); -- sprintf(vendor_str,"0000"); -- } -+ info("No USB vendor information available"); -+ return 1; - } -- set_str(vendor_str,usb_vendor, sizeof(vendor_str) - 1); -+ set_str(vendor_str, usb_vendor, sizeof(vendor_str)-1); - } -- -+ - if (model_str[0] == '\0') { -+ const char *usb_model = NULL; -+ - if (!use_num_info) -- if (!(usb_model = sysfs_attr_get_value(dev_usb->devpath, "product"))) -- dbg("No USB model string found, using idProduct"); -- -+ usb_model = sysfs_attr_get_value(dev_usb->devpath, "product"); -+ -+ if (!usb_model) -+ usb_model = sysfs_attr_get_value(dev_usb->devpath, "idProduct"); -+ - if (!usb_model) { -- if (!(usb_model = sysfs_attr_get_value(dev_usb->devpath, "idProduct"))) -- dbg("No USB model information available\n"); sprintf(model_str,"0000"); -+ dbg("No USB model information available"); -+ return 1; - } -- set_str(model_str, usb_model, sizeof(model_str) - 1); -+ set_str(model_str, usb_model, sizeof(model_str)-1); - } - - if (revision_str[0] == '\0') { -+ const char *usb_rev; -+ - usb_rev = sysfs_attr_get_value(dev_usb->devpath, "bcdDevice"); - if (usb_rev) - set_str(revision_str, usb_rev, sizeof(revision_str)-1); - } - - if (serial_str[0] == '\0') { -+ const char *usb_serial; -+ - usb_serial = sysfs_attr_get_value(dev_usb->devpath, "serial"); - if (usb_serial) - set_str(serial_str, usb_serial, sizeof(serial_str)-1); - diff --git a/abs/core/unclutter/PKGBUILD b/abs/core/unclutter/PKGBUILD new file mode 100755 index 0000000..5622394 --- /dev/null +++ b/abs/core/unclutter/PKGBUILD @@ -0,0 +1,22 @@ +pkgname=unclutter +pkgver=8 +pkgrel=1 +pkgdesc="Hides mouse cursor when not in use" +url="http://www.x.org/contrib/utilities/unclutter-8.README" +license="GPL" +depends=(x-server) +makedepends=() +conflicts=() +replaces=() +backup=() +install= +arch='i686' +source=(ftp://ftp.x.org/contrib/utilities/$pkgname-$pkgver.tar.Z) + + +build() { + cd $startdir/src/$pkgname + make LDLIBS=-L/usr/X11R6/lib || return 1 + mkdir -p $startdir/pkg/usr/X11R6/bin + make DESTDIR=$startdir/pkg BINDIR=$startdir/pkg/usr/X11R6/bin install +} diff --git a/abs/core/unichrome-dri/PKGBUILD b/abs/core/unichrome-dri/PKGBUILD index c51bb2b..2870c39 100644 --- a/abs/core/unichrome-dri/PKGBUILD +++ b/abs/core/unichrome-dri/PKGBUILD @@ -1,40 +1,38 @@ -# $Id: PKGBUILD 1898 2008-05-22 18:05:23Z jgc $ +# $Id: PKGBUILD 13002 2008-09-25 18:36:29Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=unichrome-dri -pkgver=7.0.3 -_mesaver=7.0.3 +pkgver=7.2 pkgrel=1 pkgdesc="DRI drivers for Unichrome-based videochipsets" arch=(i686 x86_64) -license=('GPL') url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('imake' 'mesa>=7.0.3' 'glproto>=1.4.9') +depends=('libdrm>=2.3.1' 'expat>=2.0.1' 'libgl>=7.1-2') +makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext') options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/Mesa-${_mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = unichrome" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${srcdir}/Mesa-${pkgver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch + export CFLAGS="${CFLAGS} -ffast-math" + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=unichrome \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/lib/pkgconfig + rm -rf ${pkgdir}/usr/include + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so } -md5sums=('e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core/unichrome-dri/mesa-7.1-link-shared.patch b/abs/core/unichrome-dri/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/unichrome-dri/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/unison/PKGBUILD b/abs/core/unison/PKGBUILD deleted file mode 100644 index b1efa5b..0000000 --- a/abs/core/unison/PKGBUILD +++ /dev/null @@ -1,28 +0,0 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -#Maintainer: Tobias Powalowski - -pkgname=unison -pkgver=2.27.57 -pkgrel=1 -pkgdesc="Unison is a file-synchronization tool" -arch=(i686 x86_64) -license=('GPL2') -url="http://www.cis.upenn.edu/~bcpierce/unison" -depends=('glibc') -#makedepends=('ocaml' 'lablgtk' 'lablgtk2' 'imagemagick') -makedepends=('ocaml' ) -source=(http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/$pkgname-$pkgver.tar.gz \ - $pkgname.desktop) -options=(!makeflags) -install=unison.install - -build() { - cd $startdir/src/$pkgname-$pkgver - CFLAGS="" - make clean - make UISTYLE=text DEBUGGING=false THREADS=true || return 1 - mkdir -p $startdir/pkg/usr/bin - install -Dm755 unison $startdir/pkg/usr/bin/unison -} -md5sums=('4ba0a3e4bf4b4ad0c063f86391371f78' - '2daecba7705455a8e4b769e48b059872') diff --git a/abs/core/unison/ocaml-3.08-extnames.patch b/abs/core/unison/ocaml-3.08-extnames.patch deleted file mode 100644 index e959be2..0000000 --- a/abs/core/unison/ocaml-3.08-extnames.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ur unison-2.9.1/ubase/uprintf.ml unison-2.9.1.patched/ubase/uprintf.ml ---- unison-2.9.1/ubase/uprintf.ml 2002-04-11 07:13:23.000000000 +0200 -+++ unison-2.9.1.patched/ubase/uprintf.ml 2004-08-08 14:10:09.784776851 +0200 -@@ -10,8 +10,8 @@ - (* *) - (***********************************************************************) - --external format_int: string -> int -> string = "format_int" --external format_float: string -> float -> string = "format_float" -+external format_int: string -> int -> string = "caml_format_int" -+external format_float: string -> float -> string = "caml_format_float" - - let fprintf outchan doafter format = - let format = (Obj.magic format : string) in diff --git a/abs/core/unison/unison.desktop b/abs/core/unison/unison.desktop deleted file mode 100644 index 3a7e1d7..0000000 --- a/abs/core/unison/unison.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=unison -Name[de]=unison -Comment=File synchronisation tool for X11 -Comment[de]=Datei Abgleicher und Synchronisierer -TryExec=unison-x11 -Exec=unison-x11 -Terminal=false -Type=Application -Categories=GTK;Application;Network; -Icon=unison.png -StartupNotify=true diff --git a/abs/core/unison/unison.install b/abs/core/unison/unison.install deleted file mode 100644 index 70e70b0..0000000 --- a/abs/core/unison/unison.install +++ /dev/null @@ -1,32 +0,0 @@ -# arg 1: the new package version -post_install() { - echo "NOTE:" - echo " For gtk1 frontend please add 'gtk' package." - echo " For gtk2 frontend please add 'gtk2' package." - echo " Default X11 frontend is set to gtk2. " - echo "" - echo " If you want to default to gtk1 unison:" - echo " 'rm /usr/bin/unison-x11'" - echo " 'ln -s /usr/bin/unison-gtk /usr/bin/unison-x11'" - echo "" -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - post_install $1 -} - -# arg 1: the old package version -pre_remove() { - /bin/true -} - -# arg 1: the old package version -post_remove() { - /bin/true -} - -op=$1 -shift -$op $* diff --git a/abs/core/unzip/PKGBUILD b/abs/core/unzip/PKGBUILD new file mode 100644 index 0000000..4bcecf5 --- /dev/null +++ b/abs/core/unzip/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Dan McGee + +pkgname=unzip +pkgver=5.52 +pkgrel=4 +pkgdesc="Unpacks .zip archives such as those made by PKZIP" +arch=('i686' 'x86_64') +url="http://www.info-zip.org/" +license=('custom') +depends=('glibc') +source=(http://downloads.sourceforge.net/infozip/unzip552.tar.gz + unzip-5.5.2-CVE-2008-0888.patch + unzip-5.50-alt-iconv-v1.2-utf8.patch + unzip542-size-64bit.patch) +md5sums=('9d23919999d6eac9217d1f41472034a9' + '2de357c2ba84576f38b17aed87915c87' + 'a4797a1f6e45385f5e021f9f6f2ec0fa' + '83c7e79de9618bf7d081dd639dd3dde1') + +build() { + cd $startdir/src/$pkgname-$pkgver + + # http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-0888 + patch -Np0 -i ../unzip-5.5.2-CVE-2008-0888.patch || return 1 + + # FS#8383 + patch -Np1 -i ../unzip-5.50-alt-iconv-v1.2-utf8.patch || return 1 + + [ "$CARCH" == "x86_64" ] && (patch -Np0 -i ../unzip542-size-64bit.patch || return 1) + + export CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64" + if [ "${CARCH}" = "i686" ]; then + make -f unix/Makefile LOCAL_UNZIP="$CFLAGS" prefix=/usr linux || return 1 + else + make -f unix/Makefile LOCAL_UNZIP="$CFLAGS" prefix=/usr linux_noasm || return 1 + fi + make -f unix/Makefile prefix=$startdir/pkg/usr install + + install -Dm644 LICENSE $startdir/pkg/usr/share/licenses/unzip/LICENSE +} diff --git a/abs/core/unzip/unzip-5.5.2-CVE-2008-0888.patch b/abs/core/unzip/unzip-5.5.2-CVE-2008-0888.patch new file mode 100644 index 0000000..f29a75b --- /dev/null +++ b/abs/core/unzip/unzip-5.5.2-CVE-2008-0888.patch @@ -0,0 +1,50 @@ +--- inflate.c 2005-02-27 06:08:46.000000000 +0000 ++++ inflate.c 2006-07-19 21:45:33.543595000 +0100 +@@ -983,6 +983,7 @@ + unsigned l; /* last length */ + unsigned m; /* mask for bit lengths table */ + unsigned n; /* number of lengths to get */ ++ struct huft *tlp; + struct huft *tl; /* literal/length code table */ + struct huft *td; /* distance code table */ + unsigned bl; /* lookup bits for tl */ +@@ -996,6 +997,8 @@ + int retval = 0; /* error code returned: initialized to "no error" */ + + ++ td = tlp = tl = (struct huft *)NULL; ++ + /* make local bit buffer */ + Trace((stderr, "\ndynamic block")); + b = G.bb; +@@ -1047,9 +1050,9 @@ + while (i < n) + { + NEEDBITS(bl) +- j = (td = tl + ((unsigned)b & m))->b; ++ j = (tlp = tl + ((unsigned)b & m))->b; + DUMPBITS(j) +- j = td->v.n; ++ j = tlp->v.n; + if (j < 16) /* length of code in bits (0..15) */ + ll[i++] = l = j; /* save last length in l */ + else if (j == 16) /* repeat last length 3 to 6 times */ +@@ -1141,6 +1144,7 @@ + huft_free(td); + } + huft_free(tl); ++ + return retval; + } + +@@ -1149,8 +1153,8 @@ + + cleanup_and_exit: + /* free the decoding tables, return */ +- huft_free(tl); +- huft_free(td); ++ if (tl) huft_free(tl); ++ if (td) huft_free(td); + return retval; + } + diff --git a/abs/core/unzip/unzip-5.50-alt-iconv-v1.2-utf8.patch b/abs/core/unzip/unzip-5.50-alt-iconv-v1.2-utf8.patch new file mode 100644 index 0000000..0a215f4 --- /dev/null +++ b/abs/core/unzip/unzip-5.50-alt-iconv-v1.2-utf8.patch @@ -0,0 +1,430 @@ +*** unzip-5.50-real/unix/unix.c 2002-01-22 03:54:42.000000000 +0500 +--- unzip-5.50/unix/unix.c 2006-02-20 14:42:21.607294176 +0500 +*************** +*** 29,34 **** +--- 29,37 ---- + #define UNZIP_INTERNAL + #include "unzip.h" + ++ #include ++ #include ++ + #ifdef SCO_XENIX + # define SYSNDIR + #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */ +*************** +*** 1524,1526 **** +--- 1527,1616 ---- + } + } + #endif /* QLZIP */ ++ ++ ++ typedef struct { ++ char *local_charset; ++ char *archive_charset; ++ } CHARSET_MAP; ++ ++ /* A mapping of local <-> archive charsets used by default to convert filenames ++ * of DOS/Windows Zip archives. Currently very basic. */ ++ static CHARSET_MAP dos_charset_map[] = { ++ { "ANSI_X3.4-1968", "CP850" }, ++ { "ISO-8859-1", "CP850" }, ++ { "CP1252", "CP850" }, ++ { "UTF-8", "CP866" }, ++ { "KOI8-R", "CP866" }, ++ { "KOI8-U", "CP866" }, ++ { "ISO-8859-5", "CP866" } ++ }; ++ ++ char OEM_CP[MAX_CP_NAME] = ""; ++ char ISO_CP[MAX_CP_NAME] = ""; ++ ++ /* Try to guess the default value of OEM_CP based on the current locale. ++ * ISO_CP is left alone for now. */ ++ void init_conversion_charsets() ++ { ++ const char *local_charset; ++ int i; ++ ++ /* Make a guess only if OEM_CP not already set. */ ++ if(*OEM_CP == '\0') { ++ local_charset = nl_langinfo(CODESET); ++ for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) ++ if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { ++ strncpy(OEM_CP, dos_charset_map[i].archive_charset, ++ sizeof(OEM_CP)); ++ break; ++ } ++ } ++ } ++ ++ /* Convert a string from one encoding to the current locale using iconv(). ++ * Be as non-intrusive as possible. If error is encountered during covertion ++ * just leave the string intact. */ ++ static void charset_to_intern(char *string, char *from_charset) ++ { ++ iconv_t cd; ++ char *s,*d, *buf; ++ size_t slen, dlen, buflen; ++ const char *local_charset; ++ ++ if(*from_charset == '\0') ++ return; ++ ++ buf = NULL; ++ local_charset = nl_langinfo(CODESET); ++ ++ if((cd = iconv_open(local_charset, from_charset)) == (iconv_t)-1) ++ return; ++ ++ slen = strlen(string); ++ s = string; ++ dlen = buflen = 2*slen; ++ d = buf = malloc(buflen + 1); ++ if(!d) ++ goto cleanup; ++ bzero(buf,buflen); ++ if(iconv(cd, &s, &slen, &d, &dlen) == (size_t)-1) ++ goto cleanup; ++ strncpy(string, buf, buflen); ++ ++ cleanup: ++ free(buf); ++ iconv_close(cd); ++ } ++ ++ /* Convert a string from OEM_CP to the current locale charset. */ ++ inline void oem_intern(char *string) ++ { ++ charset_to_intern(string, OEM_CP); ++ } ++ ++ /* Convert a string from ISO_CP to the current locale charset. */ ++ inline void iso_intern(char *string) ++ { ++ charset_to_intern(string, ISO_CP); ++ } +*** unzip-5.50-real/unix/unxcfg.h 2001-06-04 05:27:14.000000000 +0600 +--- unzip-5.50/unix/unxcfg.h 2006-02-20 14:16:27.194600824 +0500 +*************** +*** 123,126 **** +--- 123,152 ---- + /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */ + /* and notfirstcall are used by do_wild(). */ + ++ ++ #define MAX_CP_NAME 25 ++ ++ #ifdef SETLOCALE ++ # undef SETLOCALE ++ #endif ++ #define SETLOCALE(category, locale) setlocale(category, locale) ++ #include ++ ++ #ifdef _ISO_INTERN ++ # undef _ISO_INTERN ++ #endif ++ #define _ISO_INTERN(str1) iso_intern(str1) ++ ++ #ifdef _OEM_INTERN ++ # undef _OEM_INTERN ++ #endif ++ #ifndef IZ_OEM2ISO_ARRAY ++ # define IZ_OEM2ISO_ARRAY ++ #endif ++ #define _OEM_INTERN(str1) oem_intern(str1) ++ ++ void iso_intern(char *); ++ void oem_intern(char *); ++ void init_conversion_charsets(void); ++ + #endif /* !__unxcfg_h */ +*** unzip-5.50-real/unzip.c 2002-01-28 00:26:16.000000000 +0500 +--- unzip-5.50/unzip.c 2006-02-20 14:16:27.196600520 +0500 +*************** +*** 304,314 **** +--- 304,324 ---- + -2 just filenames but allow -h/-t/-z -l long Unix \"ls -l\" format\n\ + -v verbose, multi-page format\n"; + ++ #ifndef UNIX + static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ + -h print header line -t print totals for listed files or for all\n\ + -z print zipfile comment %c-T%c print file times in sortable decimal format\ + \n %c-C%c be case-insensitive %s\ + -x exclude filenames that follow from listing\n"; ++ #else /* UNIX */ ++ static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ ++ -h print header line -t print totals for listed files or for all\n\ ++ -z print zipfile comment %c-T%c print file times in sortable decimal format\ ++ \n %c-C%c be case-insensitive %s\ ++ -x exclude filenames that follow from listing\n\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n"; ++ #endif /* !UNIX */ + #ifdef MORE + #ifdef VMS + static ZCONST char Far ZipInfoUsageLine4[] = +*************** +*** 589,594 **** +--- 599,605 ---- + #endif /* ?VM_CMS */ + #endif /* ?MACOS */ + ++ #ifndef UNIX + static ZCONST char Far UnzipUsageLine4[] = "\ + modifiers: -q quiet mode (-qq => quieter)\n\ + -n never overwrite existing files -a auto-convert any text files\n\ +*************** +*** 596,601 **** +--- 607,623 ---- + -j junk paths (do not make directories) -v be verbose/print version info\n\ + %c-C%c match filenames case-insensitively %c-L%c make (some) names \ + lowercase\n %-42s %c-V%c retain VMS version numbers\n%s"; ++ #else /* UNIX */ ++ static ZCONST char Far UnzipUsageLine4[] = "\ ++ modifiers: -q quiet mode (-qq => quieter)\n\ ++ -n never overwrite existing files -a auto-convert any text files\n\ ++ -o overwrite files WITHOUT prompting -aa treat ALL files as text\n \ ++ -j junk paths (do not make directories) -v be verbose/print version info\n\ ++ %c-C%c match filenames case-insensitively %c-L%c make (some) names \ ++ lowercase\n %-42s %c-V%c retain VMS version numbers\n%s\n\ ++ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ ++ -I CHARSET specify a character encoding for UNIX and other archives\n\n"; ++ #endif /* !UNIX */ + + static ZCONST char Far UnzipUsageLine5[] = "\ + Examples (see unzip.txt for more info):\n\ +*************** +*** 656,661 **** +--- 678,687 ---- + + SETLOCALE(LC_CTYPE,""); + ++ #ifdef UNIX ++ init_conversion_charsets(); ++ #endif ++ + #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__)) + extern void DebugMalloc(void); + +*************** +*** 1070,1075 **** +--- 1096,1106 ---- + argc = *pargc; + argv = *pargv; + ++ #ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++ #endif ++ + while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) { + s = *argv + 1; + while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */ +*************** +*** 1233,1238 **** +--- 1264,1298 ---- + } + break; + #endif /* MACOS */ ++ #ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++ #endif /* ?UNIX */ + case ('j'): /* junk pathnames/directory structure */ + if (negative) + uO.jflag = FALSE, negative = 0; +*************** +*** 1299,1304 **** +--- 1359,1393 ---- + } else + ++uO.overwrite_all; + break; ++ #ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++ #endif /* ?UNIX */ + case ('p'): /* pipes: extract to stdout, no messages */ + if (negative) { + uO.cflag = FALSE; +*** unzip-5.50-real/unzpriv.h 2002-02-17 22:01:48.000000000 +0500 +--- unzip-5.50/unzpriv.h 2006-02-20 14:16:27.198600216 +0500 +*************** +*** 1103,1109 **** + # define lastchar(ptr, len) (ptr[(len)-1]) + # define MBSCHR(str, c) strchr(str, c) + # define MBSRCHR(str, c) strrchr(str, c) +! # define SETLOCALE(category, locale) + #endif /* ?_MBCS */ + #define INCSTR(ptr) PREINCSTR(ptr) + +--- 1103,1111 ---- + # define lastchar(ptr, len) (ptr[(len)-1]) + # define MBSCHR(str, c) strchr(str, c) + # define MBSRCHR(str, c) strrchr(str, c) +! # ifndef SETLOCALE +! # define SETLOCALE(category, locale) +! # endif + #endif /* ?_MBCS */ + #define INCSTR(ptr) PREINCSTR(ptr) + +*************** +*** 2424,2430 **** + !(((islochdr) || (isuxatt)) && \ + ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ + (hostnum) == FS_HPFS_ || \ +! ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \ + _OEM_INTERN((string)); \ + } else { \ + _ISO_INTERN((string)); \ +--- 2426,2432 ---- + !(((islochdr) || (isuxatt)) && \ + ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ + (hostnum) == FS_HPFS_ || \ +! ((hostnum) == FS_NTFS_/* && (hostver) == 50*/)) { \ + _OEM_INTERN((string)); \ + } else { \ + _ISO_INTERN((string)); \ +*** unzip-5.50-real/zipinfo.c 2001-12-26 03:56:40.000000000 +0500 +--- unzip-5.50/zipinfo.c 2006-02-20 14:16:27.200599912 +0500 +*************** +*** 440,445 **** +--- 440,449 ---- + int tflag_slm=TRUE, tflag_2v=FALSE; + int explicit_h=FALSE, explicit_t=FALSE; + ++ #ifdef UNIX ++ extern char OEM_CP[MAX_CP_NAME]; ++ extern char ISO_CP[MAX_CP_NAME]; ++ #endif + + #ifdef MACOS + uO.lflag = LFLAG; /* reset default on each call */ +*************** +*** 484,489 **** +--- 488,522 ---- + uO.lflag = 0; + } + break; ++ #ifdef UNIX ++ case ('I'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Icharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } else { /* -I charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(ISO_CP, s, sizeof(ISO_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++ #endif /* ?UNIX */ + case 'l': /* longer form of "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; +*************** +*** 504,509 **** +--- 537,571 ---- + G.M_flag = TRUE; + break; + #endif ++ #ifdef UNIX ++ case ('O'): ++ if (negative) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: encodings can't be negated")); ++ return(PK_PARAM); ++ } else { ++ if(*s) { /* Handle the -Ocharset case */ ++ /* Assume that charsets can't start with a dash to spot arguments misuse */ ++ if(*s == '-') { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -I argument")); ++ return(PK_PARAM); ++ } ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } else { /* -O charset */ ++ ++argv; ++ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { ++ Info(slide, 0x401, ((char *)slide, ++ "error: a valid character encoding should follow the -O argument")); ++ return(PK_PARAM); ++ } ++ s = *argv; ++ strncpy(OEM_CP, s, sizeof(OEM_CP)); ++ } ++ while(*(++s)); /* No params straight after charset name */ ++ } ++ break; ++ #endif /* ?UNIX */ + case 's': /* default: shorter "ls -l" type listing */ + if (negative) + uO.lflag = -2, negative = 0; diff --git a/abs/core/unzip/unzip542-size-64bit.patch b/abs/core/unzip/unzip542-size-64bit.patch new file mode 100644 index 0000000..0142a36 --- /dev/null +++ b/abs/core/unzip/unzip542-size-64bit.patch @@ -0,0 +1,72 @@ +--- ./zipinfo.c.gege Sat Jan 13 22:42:38 2001 ++++ ./zipinfo.c Tue Mar 19 13:54:52 2002 +@@ -172,7 +172,7 @@ + static ZCONST char Far CentralDirEntry[] = + "\nCentral directory entry #%lu:\n---------------------------\n\n"; + static ZCONST char Far ZipfileStats[] = +- "%lu file%s, %lu bytes uncompressed, %lu bytes compressed: %s%d.%d%%\n"; ++ "%lu file%s, %llu bytes uncompressed, %llu bytes compressed: %s%d.%d%%\n"; + + /* zi_long() strings */ + static ZCONST char Far OS_FAT[] = "MS-DOS, OS/2 or NT FAT"; +@@ -699,7 +699,7 @@ + int do_this_file=FALSE, error, error_in_archive=PK_COOL; + int *fn_matched=NULL, *xn_matched=NULL; + ulg j, members=0L; +- ulg tot_csize=0L, tot_ucsize=0L; ++ ulg64 tot_csize=0L, tot_ucsize=0L; + ulg endprev; /* buffers end of previous entry for zi_long()'s check + * of extra bytes */ + +--- ./unzip.h.gege Fri Apr 21 01:21:14 2000 ++++ ./unzip.h Tue Mar 19 13:55:10 2002 +@@ -322,7 +322,8 @@ + typedef unsigned char uch; /* code assumes unsigned bytes; these type- */ + typedef unsigned short ush; /* defs replace byte/UWORD/ULONG (which are */ + typedef unsigned long ulg; /* predefined on some systems) & match zip */ ++typedef unsigned long long ulg64; /* predefined on some systems) & match zip */ + #define _IZ_TYPES_DEFINED + #endif /* !_IZ_TYPES_DEFINED */ + + +--- ./list.c.gege Sat Jan 13 22:39:48 2001 ++++ ./list.c Tue Mar 19 17:03:27 2002 +@@ -633,23 +633,16 @@ + /********************/ + + int ratio(uc, c) +- ulg uc, c; ++ ulg64 uc, c; + { +- ulg denom; ++ ulg64 denom; + + if (uc == 0) + return 0; +- if (uc > 2000000L) { /* risk signed overflow if multiply numerator */ +- denom = uc / 1000L; +- return ((uc >= c) ? +- (int) ((uc-c + (denom>>1)) / denom) : +- -((int) ((c-uc + (denom>>1)) / denom))); +- } else { /* ^^^^^^^^ rounding */ +- denom = uc; +- return ((uc >= c) ? ++ denom = uc; ++ return ((uc >= c) ? + (int) ((1000L*(uc-c) + (denom>>1)) / denom) : + -((int) ((1000L*(c-uc) + (denom>>1)) / denom))); +- } /* ^^^^^^^^ rounding */ + } + + +--- ./unzpriv.h.gege Wed Jan 10 23:53:56 2001 ++++ ./unzpriv.h Tue Mar 19 17:05:08 2002 +@@ -1669,7 +1669,7 @@ + int get_time_stamp OF((__GPRO__ time_t *last_modtime, + ulg *nmember)); + #endif +-int ratio OF((ulg uc, ulg c)); ++int ratio OF((ulg64 uc, ulg64 c)); + void fnprint OF((__GPRO)); + + #endif /* !SFX */ diff --git a/abs/core/urlgrabber/PKGBUILD b/abs/core/urlgrabber/PKGBUILD new file mode 100644 index 0000000..070c387 --- /dev/null +++ b/abs/core/urlgrabber/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=urlgrabber +pkgver=3.1.0 +pkgrel=2 +pkgdesc="A high-level cross-protocol url-grabber and Python library" +url="http://linux.duke.edu/projects/urlgrabber/" +license=('LGPL') +arch=('i686' 'x86_64') +depends=('python') +provides=(python-urlgrabber) +source=(http://linux.duke.edu/projects/urlgrabber/download/urlgrabber-$pkgver.tar.gz) +build() { + cd $startdir/src/$pkgname-$pkgver + python setup.py install --prefix=$startdir/pkg/usr || return 1 +} +md5sums=('2a92d8ce0d89c5e772a98e9b8dcd5b73') diff --git a/abs/core/util-linux-ng/PKGBUILD b/abs/core/util-linux-ng/PKGBUILD index 35207fd..3d72cbc 100644 --- a/abs/core/util-linux-ng/PKGBUILD +++ b/abs/core/util-linux-ng/PKGBUILD @@ -1,38 +1,39 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 29509 2009-03-09 17:25:09Z tpowa $ # Maintainer: judd pkgname=util-linux-ng -pkgver=2.14 -pkgrel=10 +pkgver=2.14.2 +_loop_date=20090214 +pkgrel=1 pkgdesc="Miscellaneous system utilities for Linux" +url="http://userweb.kernel.org/~kzak/util-linux-ng/" arch=('i686' 'x86_64') groups=('base') -depends=('bash' 'ncurses' 'zlib' 'e2fsprogs') +depends=('bash' 'ncurses>=5.7' 'zlib' 'e2fsprogs') replaces=('linux32' 'util-linux') conflicts=('linux32' 'util-linux') provides=('linux32' 'util-linux') -license=('GPL') +license=('GPL2') source=(ftp://ftp.kernel.org/pub/linux/utils/${pkgname}/v2.14/${pkgname}-${pkgver}.tar.bz2 - util-linux-ng-2.14-20080624.diff) -md5sums=('23f227da49df36f33fe47e917e332cd8' - 'acb7bf692d239eb9872b0f00de437b7e') - -# The cryptoloop-support.patch comes from the boys at Rock Linux -# (http://www.rocklinux.net/packages/util-linux.html) - -# Newer crypt support is here: -# http://loop-aes.sourceforge.net/updates/util-linux-${_realver}.diff.bz2 + http://loop-aes.sourceforge.net/updates/${pkgname}-${pkgver}-${_loop_date}.diff.bz2) +install=util-linux-ng.install +md5sums=('b9d0053a22cfcbf0b9c0aa6d6eccfbc8' + '72c5b3e961efc1bda2750dbad019e414') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./autogen.sh + cd ${srcdir}/${pkgname}-${pkgver} + # cryptoloop support - patch -Np1 -i ${startdir}/src/util-linux-ng-2.14-20080624.diff || return 1 + patch -Np1 -i ${srcdir}/${pkgname}-${pkgver}-${_loop_date}.diff || return 1 + # hardware clock sed -e 's%etc/adjtime%var/lib/hwclock/adjtime%' -i hwclock/hwclock.c mkdir -p ${startdir}/pkg/var/lib/hwclock ./configure --enable-arch --enable-write --enable-raw --disable-wall --enable-rdev make HAVE_SLN=yes ADD_RAW=yes || return 1 - make HAVE_SLN=yes ADD_RAW=yes DESTDIR=${startdir}/pkg install - rm -f ${startdir}/pkg/bin/kill - rm -f ${startdir}/pkg/usr/share/man/man1/kill.1 - rm -f ${startdir}/pkg/usr/share/man/man5/nfs.5 + make HAVE_SLN=yes ADD_RAW=yes DESTDIR=${startdir}/pkg install || return 1 + # remove files + rm -f ${pkgdir}/bin/kill + rm -f ${pkgdir}/usr/share/man/man1/kill.1 + rm -f ${pkgdir}/usr/share/man/man5/nfs.5 + rm -f ${pkgdir}/usr/share/info/dir } + diff --git a/abs/core/util-linux-ng/cryptoloop-support.patch b/abs/core/util-linux-ng/cryptoloop-support.patch new file mode 100644 index 0000000..91aa12d --- /dev/null +++ b/abs/core/util-linux-ng/cryptoloop-support.patch @@ -0,0 +1,4649 @@ +If this patch does not apply cleanly to newer version of util-linux-ng, try +replacing original lomount.c lomount.h loop.h losetup.8 files in mount +subdirectory with versions from util-linux-ng that the patch is for. And +then apply this patch. + +mount/Makefile.in is a generated file. You can ignore patch failures on that +file if you generate it again by running the ./autogen.sh script. That +./autogen.sh script needs recent versions of autohell tools. + +diff -urN util-linux-ng-2.13/mount/Makefile.am util-linux-ng-2.13-AES/mount/Makefile.am +--- util-linux-ng-2.13/mount/Makefile.am 2007-05-23 01:05:21.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/Makefile.am 2007-09-02 18:05:41.000000000 +0300 +@@ -12,20 +12,20 @@ + mount_paths.h lomount.h fsprobe.h realpath.h xmalloc.h \ + getusername.h loop.h sundries.h + +-mount_common = fstab.c mount_mntent.c getusername.c lomount.c \ ++mount_common = fstab.c mount_mntent.c getusername.c \ + $(utils_common) $(headers_common) ../lib/env.c + +-mount_SOURCES = mount.c $(mount_common) ../lib/setproctitle.c ++mount_SOURCES = mount.c lomount.c loumount.c loop.c sha512.c rmd160.c aes.c $(mount_common) ../lib/setproctitle.c + mount_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) + mount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS) + +-umount_SOURCES = umount.c $(mount_common) ++umount_SOURCES = umount.c loumount.c $(mount_common) + umount_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) + umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS) + +-swapon_SOURCES = swapon.c swap_constants.h $(utils_common) ++swapon_SOURCES = swapon.c loop.c sha512.c swap_constants.h $(utils_common) + +-losetup_SOURCES = lomount.c loop.h lomount.h ++losetup_SOURCES = lomount.c loumount.c loop.c sha512.c rmd160.c aes.c loop.h lomount.h + losetup_CPPFLAGS = -DMAIN $(AM_CPPFLAGS) + + mount_LDADD = $(LDADD_common) +diff -urN util-linux-ng-2.13/mount/aes.c util-linux-ng-2.13-AES/mount/aes.c +--- util-linux-ng-2.13/mount/aes.c 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/aes.c 2007-09-02 18:05:41.000000000 +0300 +@@ -0,0 +1,299 @@ ++// I retain copyright in this code but I encourage its free use provided ++// that I don't carry any responsibility for the results. I am especially ++// happy to see it used in free and open source software. If you do use ++// it I would appreciate an acknowledgement of its origin in the code or ++// the product that results and I would also appreciate knowing a little ++// about the use to which it is being put. I am grateful to Frank Yellin ++// for some ideas that are used in this implementation. ++// ++// Dr B. R. Gladman 6th April 2001. ++// ++// This is an implementation of the AES encryption algorithm (Rijndael) ++// designed by Joan Daemen and Vincent Rijmen. This version is designed ++// to provide both fixed and dynamic block and key lengths and can also ++// run with either big or little endian internal byte order (see aes.h). ++// It inputs block and key lengths in bytes with the legal values being ++// 16, 24 and 32. ++ ++/* ++ * Modified by Jari Ruusu, May 1 2001 ++ * - Fixed some compile warnings, code was ok but gcc warned anyway. ++ * - Changed basic types: byte -> unsigned char, word -> u_int32_t ++ * - Major name space cleanup: Names visible to outside now begin ++ * with "aes_" or "AES_". A lot of stuff moved from aes.h to aes.c ++ * - Removed C++ and DLL support as part of name space cleanup. ++ * - Eliminated unnecessary recomputation of tables. (actual bug fix) ++ * - Merged precomputed constant tables to aes.c file. ++ * - Removed data alignment restrictions for portability reasons. ++ * - Made block and key lengths accept bit count (128/192/256) ++ * as well byte count (16/24/32). ++ * - Removed all error checks. This change also eliminated the need ++ * to preinitialize the context struct to zero. ++ * - Removed some totally unused constants. ++ */ ++ ++/* ++ * Modified by Jari Ruusu, June 9 2003 ++ * - Removed all code not necessary for small size ++ * optimized encryption using 256 bit keys. ++ */ ++ ++#include "aes.h" ++ ++#if AES_BLOCK_SIZE != 16 ++#error an illegal block size has been specified ++#endif ++ ++// upr(x,n): rotates bytes within words by n positions, moving bytes ++// to higher index positions with wrap around into low positions ++// bval(x,n): extracts a byte from a word ++ ++#define upr(x,n) (((x) << 8 * (n)) | ((x) >> (32 - 8 * (n)))) ++#define bval(x,n) ((unsigned char)((x) >> 8 * (n))) ++#define bytes2word(b0, b1, b2, b3) \ ++ ((u_int32_t)(b3) << 24 | (u_int32_t)(b2) << 16 | (u_int32_t)(b1) << 8 | (b0)) ++ ++#if defined(i386) || defined(_I386) || defined(__i386__) || defined(__i386) ++/* little endian processor without data alignment restrictions */ ++#define word_in(x) *(u_int32_t*)(x) ++#define word_out(x,v) *(u_int32_t*)(x) = (v) ++#else ++/* slower but generic big endian or with data alignment restrictions */ ++#define word_in(x) ((u_int32_t)(((unsigned char *)(x))[0])|((u_int32_t)(((unsigned char *)(x))[1])<<8)|((u_int32_t)(((unsigned char *)(x))[2])<<16)|((u_int32_t)(((unsigned char *)(x))[3])<<24)) ++#define word_out(x,v) ((unsigned char *)(x))[0]=(v),((unsigned char *)(x))[1]=((v)>>8),((unsigned char *)(x))[2]=((v)>>16),((unsigned char *)(x))[3]=((v)>>24) ++#endif ++ ++// the finite field modular polynomial and elements ++ ++#define ff_poly 0x011b ++#define ff_hi 0x80 ++ ++static int tab_gen = 0; ++static unsigned char s_box[256]; // the S box ++static u_int32_t rcon_tab[AES_RC_LENGTH]; // table of round constants ++static u_int32_t ft_tab[4][256]; ++static u_int32_t fl_tab[4][256]; ++ ++// Generate the tables for the dynamic table option ++ ++// It will generally be sensible to use tables to compute finite ++// field multiplies and inverses but where memory is scarse this ++// code might sometimes be better. ++ ++// return 2 ^ (n - 1) where n is the bit number of the highest bit ++// set in x with x in the range 1 < x < 0x00000200. This form is ++// used so that locals within FFinv can be bytes rather than words ++ ++static unsigned char hibit(const u_int32_t x) ++{ unsigned char r = (unsigned char)((x >> 1) | (x >> 2)); ++ ++ r |= (r >> 2); ++ r |= (r >> 4); ++ return (r + 1) >> 1; ++} ++ ++// return the inverse of the finite field element x ++ ++static unsigned char FFinv(const unsigned char x) ++{ unsigned char p1 = x, p2 = 0x1b, n1 = hibit(x), n2 = 0x80, v1 = 1, v2 = 0; ++ ++ if(x < 2) return x; ++ ++ for(;;) ++ { ++ if(!n1) return v1; ++ ++ while(n2 >= n1) ++ { ++ n2 /= n1; p2 ^= p1 * n2; v2 ^= v1 * n2; n2 = hibit(p2); ++ } ++ ++ if(!n2) return v2; ++ ++ while(n1 >= n2) ++ { ++ n1 /= n2; p1 ^= p2 * n1; v1 ^= v2 * n1; n1 = hibit(p1); ++ } ++ } ++} ++ ++// define the finite field multiplies required for Rijndael ++ ++#define FFmul02(x) ((((x) & 0x7f) << 1) ^ ((x) & 0x80 ? 0x1b : 0)) ++#define FFmul03(x) ((x) ^ FFmul02(x)) ++ ++// The forward and inverse affine transformations used in the S-box ++ ++#define fwd_affine(x) \ ++ (w = (u_int32_t)x, w ^= (w<<1)^(w<<2)^(w<<3)^(w<<4), 0x63^(unsigned char)(w^(w>>8))) ++ ++static void gen_tabs(void) ++{ u_int32_t i, w; ++ ++ for(i = 0, w = 1; i < AES_RC_LENGTH; ++i) ++ { ++ rcon_tab[i] = bytes2word(w, 0, 0, 0); ++ w = (w << 1) ^ (w & ff_hi ? ff_poly : 0); ++ } ++ ++ for(i = 0; i < 256; ++i) ++ { unsigned char b; ++ ++ s_box[i] = b = fwd_affine(FFinv((unsigned char)i)); ++ ++ w = bytes2word(b, 0, 0, 0); ++ fl_tab[0][i] = w; ++ fl_tab[1][i] = upr(w,1); ++ fl_tab[2][i] = upr(w,2); ++ fl_tab[3][i] = upr(w,3); ++ w = bytes2word(FFmul02(b), b, b, FFmul03(b)); ++ ft_tab[0][i] = w; ++ ft_tab[1][i] = upr(w,1); ++ ft_tab[2][i] = upr(w,2); ++ ft_tab[3][i] = upr(w,3); ++ } ++} ++ ++#define four_tables(x,tab,vf,rf,c) \ ++ ( tab[0][bval(vf(x,0,c),rf(0,c))] \ ++ ^ tab[1][bval(vf(x,1,c),rf(1,c))] \ ++ ^ tab[2][bval(vf(x,2,c),rf(2,c))] \ ++ ^ tab[3][bval(vf(x,3,c),rf(3,c))]) ++ ++#define vf1(x,r,c) (x) ++#define rf1(r,c) (r) ++#define rf2(r,c) ((r-c)&3) ++ ++#define ls_box(x,c) four_tables(x,fl_tab,vf1,rf2,c) ++ ++#define nc (AES_BLOCK_SIZE / 4) ++ ++// Initialise the key schedule from the user supplied key. ++// The key length is now specified in bytes, 32. ++// This corresponds to bit length of 256 bits, and ++// to Nk value of 8 respectively. ++ ++void aes_set_key(aes_context *cx, const unsigned char in_key[], int n_bytes, const int f) ++{ u_int32_t *kf, *kt, rci; ++ ++ if(!tab_gen) { gen_tabs(); tab_gen = 1; } ++ ++ cx->aes_Nkey = 8; ++ cx->aes_Nrnd = (cx->aes_Nkey > nc ? cx->aes_Nkey : nc) + 6; ++ ++ cx->aes_e_key[0] = word_in(in_key ); ++ cx->aes_e_key[1] = word_in(in_key + 4); ++ cx->aes_e_key[2] = word_in(in_key + 8); ++ cx->aes_e_key[3] = word_in(in_key + 12); ++ ++ kf = cx->aes_e_key; ++ kt = kf + nc * (cx->aes_Nrnd + 1) - cx->aes_Nkey; ++ rci = 0; ++ ++ switch(cx->aes_Nkey) ++ { ++ case 8: cx->aes_e_key[4] = word_in(in_key + 16); ++ cx->aes_e_key[5] = word_in(in_key + 20); ++ cx->aes_e_key[6] = word_in(in_key + 24); ++ cx->aes_e_key[7] = word_in(in_key + 28); ++ do ++ { kf[ 8] = kf[0] ^ ls_box(kf[7],3) ^ rcon_tab[rci++]; ++ kf[ 9] = kf[1] ^ kf[ 8]; ++ kf[10] = kf[2] ^ kf[ 9]; ++ kf[11] = kf[3] ^ kf[10]; ++ kf[12] = kf[4] ^ ls_box(kf[11],0); ++ kf[13] = kf[5] ^ kf[12]; ++ kf[14] = kf[6] ^ kf[13]; ++ kf[15] = kf[7] ^ kf[14]; ++ kf += 8; ++ } ++ while (kf < kt); ++ break; ++ } ++} ++ ++// y = output word, x = input word, r = row, c = column ++// for r = 0, 1, 2 and 3 = column accessed for row r ++ ++#define s(x,c) x[c] ++ ++// I am grateful to Frank Yellin for the following constructions ++// which, given the column (c) of the output state variable that ++// is being computed, return the input state variables which are ++// needed for each row (r) of the state ++ ++// For the fixed block size options, compilers reduce these two ++// expressions to fixed variable references. For variable block ++// size code conditional clauses will sometimes be returned ++ ++#define fwd_var(x,r,c) \ ++ ( r==0 ? \ ++ ( c==0 ? s(x,0) \ ++ : c==1 ? s(x,1) \ ++ : c==2 ? s(x,2) \ ++ : c==3 ? s(x,3) \ ++ : c==4 ? s(x,4) \ ++ : c==5 ? s(x,5) \ ++ : c==6 ? s(x,6) \ ++ : s(x,7)) \ ++ : r==1 ? \ ++ ( c==0 ? s(x,1) \ ++ : c==1 ? s(x,2) \ ++ : c==2 ? s(x,3) \ ++ : c==3 ? nc==4 ? s(x,0) : s(x,4) \ ++ : c==4 ? s(x,5) \ ++ : c==5 ? nc==8 ? s(x,6) : s(x,0) \ ++ : c==6 ? s(x,7) \ ++ : s(x,0)) \ ++ : r==2 ? \ ++ ( c==0 ? nc==8 ? s(x,3) : s(x,2) \ ++ : c==1 ? nc==8 ? s(x,4) : s(x,3) \ ++ : c==2 ? nc==4 ? s(x,0) : nc==8 ? s(x,5) : s(x,4) \ ++ : c==3 ? nc==4 ? s(x,1) : nc==8 ? s(x,6) : s(x,5) \ ++ : c==4 ? nc==8 ? s(x,7) : s(x,0) \ ++ : c==5 ? nc==8 ? s(x,0) : s(x,1) \ ++ : c==6 ? s(x,1) \ ++ : s(x,2)) \ ++ : \ ++ ( c==0 ? nc==8 ? s(x,4) : s(x,3) \ ++ : c==1 ? nc==4 ? s(x,0) : nc==8 ? s(x,5) : s(x,4) \ ++ : c==2 ? nc==4 ? s(x,1) : nc==8 ? s(x,6) : s(x,5) \ ++ : c==3 ? nc==4 ? s(x,2) : nc==8 ? s(x,7) : s(x,0) \ ++ : c==4 ? nc==8 ? s(x,0) : s(x,1) \ ++ : c==5 ? nc==8 ? s(x,1) : s(x,2) \ ++ : c==6 ? s(x,2) \ ++ : s(x,3))) ++ ++#define si(y,x,k,c) s(y,c) = word_in(x + 4 * c) ^ k[c] ++#define so(y,x,c) word_out(y + 4 * c, s(x,c)) ++ ++#define fwd_rnd(y,x,k,c) s(y,c)= (k)[c] ^ four_tables(x,ft_tab,fwd_var,rf1,c) ++#define fwd_lrnd(y,x,k,c) s(y,c)= (k)[c] ^ four_tables(x,fl_tab,fwd_var,rf1,c) ++ ++#define locals(y,x) x[4],y[4] ++ ++#define l_copy(y, x) s(y,0) = s(x,0); s(y,1) = s(x,1); \ ++ s(y,2) = s(x,2); s(y,3) = s(x,3); ++#define state_in(y,x,k) si(y,x,k,0); si(y,x,k,1); si(y,x,k,2); si(y,x,k,3) ++#define state_out(y,x) so(y,x,0); so(y,x,1); so(y,x,2); so(y,x,3) ++#define round(rm,y,x,k) rm(y,x,k,0); rm(y,x,k,1); rm(y,x,k,2); rm(y,x,k,3) ++ ++void aes_encrypt(const aes_context *cx, const unsigned char in_blk[], unsigned char out_blk[]) ++{ u_int32_t locals(b0, b1); ++ const u_int32_t *kp = cx->aes_e_key; ++ ++ state_in(b0, in_blk, kp); kp += nc; ++ ++ { u_int32_t rnd; ++ ++ for(rnd = 0; rnd < cx->aes_Nrnd - 1; ++rnd) ++ { ++ round(fwd_rnd, b1, b0, kp); ++ l_copy(b0, b1); kp += nc; ++ } ++ ++ round(fwd_lrnd, b0, b1, kp); ++ } ++ ++ state_out(out_blk, b0); ++} +diff -urN util-linux-ng-2.13/mount/aes.h util-linux-ng-2.13-AES/mount/aes.h +--- util-linux-ng-2.13/mount/aes.h 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/aes.h 2007-09-02 18:05:41.000000000 +0300 +@@ -0,0 +1,97 @@ ++// I retain copyright in this code but I encourage its free use provided ++// that I don't carry any responsibility for the results. I am especially ++// happy to see it used in free and open source software. If you do use ++// it I would appreciate an acknowledgement of its origin in the code or ++// the product that results and I would also appreciate knowing a little ++// about the use to which it is being put. I am grateful to Frank Yellin ++// for some ideas that are used in this implementation. ++// ++// Dr B. R. Gladman 6th April 2001. ++// ++// This is an implementation of the AES encryption algorithm (Rijndael) ++// designed by Joan Daemen and Vincent Rijmen. This version is designed ++// to provide both fixed and dynamic block and key lengths and can also ++// run with either big or little endian internal byte order (see aes.h). ++// It inputs block and key lengths in bytes with the legal values being ++// 16, 24 and 32. ++ ++/* ++ * Modified by Jari Ruusu, May 1 2001 ++ * - Fixed some compile warnings, code was ok but gcc warned anyway. ++ * - Changed basic types: byte -> unsigned char, word -> u_int32_t ++ * - Major name space cleanup: Names visible to outside now begin ++ * with "aes_" or "AES_". A lot of stuff moved from aes.h to aes.c ++ * - Removed C++ and DLL support as part of name space cleanup. ++ * - Eliminated unnecessary recomputation of tables. (actual bug fix) ++ * - Merged precomputed constant tables to aes.c file. ++ * - Removed data alignment restrictions for portability reasons. ++ * - Made block and key lengths accept bit count (128/192/256) ++ * as well byte count (16/24/32). ++ * - Removed all error checks. This change also eliminated the need ++ * to preinitialize the context struct to zero. ++ * - Removed some totally unused constants. ++ */ ++ ++#ifndef _AES_H ++#define _AES_H ++ ++#if defined(__linux__) && defined(__KERNEL__) ++# include ++#else ++# include ++#endif ++ ++// CONFIGURATION OPTIONS (see also aes.c) ++// ++// Define AES_BLOCK_SIZE to set the cipher block size (16, 24 or 32) or ++// leave this undefined for dynamically variable block size (this will ++// result in much slower code). ++// IMPORTANT NOTE: AES_BLOCK_SIZE is in BYTES (16, 24, 32 or undefined). If ++// left undefined a slower version providing variable block length is compiled ++ ++#define AES_BLOCK_SIZE 16 ++ ++// The number of key schedule words for different block and key lengths ++// allowing for method of computation which requires the length to be a ++// multiple of the key length ++// ++// Nk = 4 6 8 ++// ------------- ++// Nb = 4 | 60 60 64 ++// 6 | 96 90 96 ++// 8 | 120 120 120 ++ ++#if !defined(AES_BLOCK_SIZE) || (AES_BLOCK_SIZE == 32) ++#define AES_KS_LENGTH 120 ++#define AES_RC_LENGTH 29 ++#else ++#define AES_KS_LENGTH 4 * AES_BLOCK_SIZE ++#define AES_RC_LENGTH (9 * AES_BLOCK_SIZE) / 8 - 8 ++#endif ++ ++typedef struct ++{ ++ u_int32_t aes_Nkey; // the number of words in the key input block ++ u_int32_t aes_Nrnd; // the number of cipher rounds ++ u_int32_t aes_e_key[AES_KS_LENGTH]; // the encryption key schedule ++ u_int32_t aes_d_key[AES_KS_LENGTH]; // the decryption key schedule ++#if !defined(AES_BLOCK_SIZE) ++ u_int32_t aes_Ncol; // the number of columns in the cipher state ++#endif ++} aes_context; ++ ++// THE CIPHER INTERFACE ++ ++#if !defined(AES_BLOCK_SIZE) ++extern void aes_set_blk(aes_context *, const int); ++#endif ++extern void aes_set_key(aes_context *, const unsigned char [], const int, const int); ++extern void aes_encrypt(const aes_context *, const unsigned char [], unsigned char []); ++extern void aes_decrypt(const aes_context *, const unsigned char [], unsigned char []); ++ ++// The block length inputs to aes_set_block and aes_set_key are in numbers ++// of bytes or bits. The calls to subroutines must be made in the above ++// order but multiple calls can be made without repeating earlier calls ++// if their parameters have not changed. ++ ++#endif // _AES_H +diff -urN util-linux-ng-2.13/mount/lomount.c util-linux-ng-2.13-AES/mount/lomount.c +--- util-linux-ng-2.13/mount/lomount.c 2007-08-27 16:00:34.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/lomount.c 2007-09-02 18:05:41.000000000 +0300 +@@ -1,4 +1,15 @@ +-/* Originally from Ted's losetup.c */ ++/* Taken from Ted's losetup.c - Mitch */ ++/* Added vfs mount options - aeb - 960223 */ ++/* Removed lomount - aeb - 960224 */ ++ ++/* ++ * 1999-02-22 Arkadiusz Mi�kiewicz ++ * - added Native Language Support ++ * 1999-03-21 Arnaldo Carvalho de Melo ++ * - fixed strerr(errno) in gettext calls ++ * 2001-04-11 Jari Ruusu ++ * - added AES support ++ */ + + #define LOOPMAJOR 7 + +@@ -13,62 +24,81 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include + #include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + + #include "loop.h" + #include "lomount.h" + #include "xstrncpy.h" + #include "nls.h" ++#include "sha512.h" ++#include "rmd160.h" ++#include "aes.h" ++ ++#if !defined(BLKGETSIZE64) ++# define BLKGETSIZE64 _IOR(0x12,114,size_t) ++#endif + + extern int verbose; +-extern char *progname; + extern char *xstrdup (const char *s); /* not: #include "sundries.h" */ + extern void error (const char *fmt, ...); /* idem */ ++extern void show_all_loops(void); ++extern int read_options_from_fstab(char *, char **); ++extern int recompute_loop_dev_size(char *); + +-#define SIZE(a) (sizeof(a)/sizeof(a[0])) ++#if !defined(LOOP_PASSWORD_MIN_LENGTH) ++# define LOOP_PASSWORD_MIN_LENGTH 20 ++#endif + +-#ifdef LOOP_SET_FD ++char *passFDnumber = (char *)0; ++char *passAskTwice = (char *)0; ++char *passSeedString = (char *)0; ++char *passHashFuncName = (char *)0; ++char *passIterThousands = (char *)0; ++char *loInitValue = (char *)0; ++char *gpgKeyFile = (char *)0; ++char *gpgHomeDir = (char *)0; ++char *clearTextKeyFile = (char *)0; ++char *loopOffsetBytes = (char *)0; ++char *loopSizeBytes = (char *)0; ++char *loopEncryptionType = (char *)0; ++ ++static int multiKeyMode = 0; /* 0=single-key 64=multi-key-v2 65=multi-key-v3 1000=any */ ++static char *multiKeyPass[66]; ++static char *loopFileName; + +-static int +-loop_info64_to_old(const struct loop_info64 *info64, struct loop_info *info) +-{ +- memset(info, 0, sizeof(*info)); +- info->lo_number = info64->lo_number; +- info->lo_device = info64->lo_device; +- info->lo_inode = info64->lo_inode; +- info->lo_rdevice = info64->lo_rdevice; +- info->lo_offset = info64->lo_offset; +- info->lo_encrypt_type = info64->lo_encrypt_type; +- info->lo_encrypt_key_size = info64->lo_encrypt_key_size; +- info->lo_flags = info64->lo_flags; +- info->lo_init[0] = info64->lo_init[0]; +- info->lo_init[1] = info64->lo_init[1]; +- if (info->lo_encrypt_type == LO_CRYPT_CRYPTOAPI) +- memcpy(info->lo_name, info64->lo_crypt_name, LO_NAME_SIZE); +- else +- memcpy(info->lo_name, info64->lo_file_name, LO_NAME_SIZE); +- memcpy(info->lo_encrypt_key, info64->lo_encrypt_key, LO_KEY_SIZE); +- +- /* error in case values were truncated */ +- if (info->lo_device != info64->lo_device || +- info->lo_rdevice != info64->lo_rdevice || +- info->lo_inode != info64->lo_inode || +- info->lo_offset != info64->lo_offset) +- return -EOVERFLOW; ++#ifdef MAIN ++static char * ++crypt_name (int id, int *flags) { ++ int i; + +- return 0; ++ for (i = 0; loop_crypt_type_tbl[i].id != -1; i++) ++ if(id == loop_crypt_type_tbl[i].id) { ++ *flags = loop_crypt_type_tbl[i].flags; ++ return loop_crypt_type_tbl[i].name; ++ } ++ *flags = 0; ++ if(id == 18) ++ return "CryptoAPI"; ++ return "undefined"; + } + +-#ifdef MAIN +- + static int + show_loop(char *device) { +- struct loop_info loopinfo; +- struct loop_info64 loopinfo64; +- int fd, errsv; ++ struct loop_info64 loopinfo; ++ int fd; + + if ((fd = open(device, O_RDONLY)) < 0) { + int errsv = errno; +@@ -76,106 +106,64 @@ + device, strerror (errsv)); + return 2; + } +- +- if (ioctl(fd, LOOP_GET_STATUS64, &loopinfo64) == 0) { +- +- loopinfo64.lo_file_name[LO_NAME_SIZE-2] = '*'; +- loopinfo64.lo_file_name[LO_NAME_SIZE-1] = 0; +- loopinfo64.lo_crypt_name[LO_NAME_SIZE-1] = 0; +- +- printf("%s: [%04llx]:%llu (%s)", +- device, loopinfo64.lo_device, loopinfo64.lo_inode, +- loopinfo64.lo_file_name); +- +- if (loopinfo64.lo_offset) +- printf(_(", offset %lld"), loopinfo64.lo_offset); +- +- if (loopinfo64.lo_sizelimit) +- printf(_(", sizelimit %lld"), loopinfo64.lo_sizelimit); +- +- if (loopinfo64.lo_encrypt_type || +- loopinfo64.lo_crypt_name[0]) { +- char *e = loopinfo64.lo_crypt_name; +- +- if (*e == 0 && loopinfo64.lo_encrypt_type == 1) +- e = "XOR"; +- printf(_(", encryption %s (type %d)"), +- e, loopinfo64.lo_encrypt_type); +- } +- printf("\n"); ++ if (loop_get_status64_ioctl(fd, &loopinfo) < 0) { ++ int errsv = errno; ++ fprintf(stderr, _("loop: can't get info on device %s: %s\n"), ++ device, strerror (errsv)); + close (fd); +- return 0; ++ return 1; + } +- +- if (ioctl(fd, LOOP_GET_STATUS, &loopinfo) == 0) { +- printf ("%s: [%04x]:%ld (%s)", +- device, loopinfo.lo_device, loopinfo.lo_inode, +- loopinfo.lo_name); +- +- if (loopinfo.lo_offset) +- printf(_(", offset %d"), loopinfo.lo_offset); +- +- if (loopinfo.lo_encrypt_type) +- printf(_(", encryption type %d\n"), +- loopinfo.lo_encrypt_type); +- +- printf("\n"); +- close (fd); +- return 0; ++ loopinfo.lo_file_name[LO_NAME_SIZE-1] = 0; ++ loopinfo.lo_crypt_name[LO_NAME_SIZE-1] = 0; ++ printf("%s: [%04llx]:%llu (%s)", device, (unsigned long long)loopinfo.lo_device, ++ (unsigned long long)loopinfo.lo_inode, loopinfo.lo_file_name); ++ if (loopinfo.lo_offset) { ++ if ((long long)loopinfo.lo_offset < 0) { ++ printf(_(" offset=@%llu"), -((unsigned long long)loopinfo.lo_offset)); ++ } else { ++ printf(_(" offset=%llu"), (unsigned long long)loopinfo.lo_offset); ++ } + } +- +- errsv = errno; +- fprintf(stderr, _("loop: can't get info on device %s: %s\n"), +- device, strerror (errsv)); +- close (fd); +- return 1; +-} +- +-static int +-show_used_loop_devices (void) { +- char dev[20]; +- char *loop_formats[] = { "/dev/loop%d", "/dev/loop/%d" }; +- int i, j, fd, permission = 0, somedev = 0; +- struct stat statbuf; +- struct loop_info loopinfo; +- +- for (j = 0; j < SIZE(loop_formats); j++) { +- for(i = 0; i < 256; i++) { +- sprintf(dev, loop_formats[j], i); +- if (stat (dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) { +- fd = open (dev, O_RDONLY); +- if (fd >= 0) { +- if(ioctl (fd, LOOP_GET_STATUS, &loopinfo) == 0) +- show_loop(dev); +- close (fd); +- somedev++; +- } else if (errno == EACCES) +- permission++; +- continue; /* continue trying as long as devices exist */ ++ if (loopinfo.lo_sizelimit) ++ printf(_(" sizelimit=%llu"), (unsigned long long)loopinfo.lo_sizelimit); ++ if (loopinfo.lo_encrypt_type) { ++ int flags; ++ char *s = crypt_name (loopinfo.lo_encrypt_type, &flags); ++ ++ printf(_(" encryption=%s"), s); ++ /* type 18 == LO_CRYPT_CRYPTOAPI */ ++ if (loopinfo.lo_encrypt_type == 18) { ++ printf("/%s", loopinfo.lo_crypt_name); ++ } else { ++ if(flags & 2) ++ printf("-"); ++ if(flags & 1) ++ printf("%u", (unsigned int)loopinfo.lo_encrypt_key_size << 3); + } ++ } ++ switch(loopinfo.lo_flags & 0x180000) { ++ case 0x180000: ++ printf(_(" multi-key-v3")); ++ break; ++ case 0x100000: ++ printf(_(" multi-key-v2")); + break; +- } + } ++ /* type 2 == LO_CRYPT_DES */ ++ if (loopinfo.lo_init[0] && (loopinfo.lo_encrypt_type != 2)) ++ printf(_(" loinit=%llu"), (unsigned long long)loopinfo.lo_init[0]); ++ if (loopinfo.lo_flags & 0x200000) ++ printf(_(" read-only")); ++ printf("\n"); ++ close (fd); + +- if (somedev==0 && permission) { +- error(_("%s: no permission to look at /dev/loop#"), progname); +- return 1; +- } + return 0; + } +- +- + #endif + +-int +-is_loop_device (const char *device) { +- struct stat statbuf; +- +- return (stat(device, &statbuf) == 0 && +- S_ISBLK(statbuf.st_mode) && +- major(statbuf.st_rdev) == LOOPMAJOR); +-} ++#define SIZE(a) (sizeof(a)/sizeof(a[0])) + ++#if !defined(MAIN) + char * + find_unused_loop_device (void) { + /* Just creating a device, say in /tmp, is probably a bad idea - +@@ -183,9 +171,8 @@ + So, we just try /dev/loop[0-7]. */ + char dev[20]; + char *loop_formats[] = { "/dev/loop%d", "/dev/loop/%d" }; +- int i, j, fd, somedev = 0, someloop = 0, permission = 0; ++ int i, j, fd, somedev = 0, someloop = 0; + struct stat statbuf; +- struct loop_info loopinfo; + + for (j = 0; j < SIZE(loop_formats); j++) { + for(i = 0; i < 256; i++) { +@@ -194,16 +181,14 @@ + somedev++; + fd = open (dev, O_RDONLY); + if (fd >= 0) { +- if(ioctl (fd, LOOP_GET_STATUS, &loopinfo) == 0) ++ if (is_unused_loop_device(fd) == 0) + someloop++; /* in use */ + else if (errno == ENXIO) { + close (fd); + return xstrdup(dev);/* probably free */ + } + close (fd); +- } else if (errno == EACCES) +- permission++; +- ++ } + continue;/* continue trying as long as devices exist */ + } + break; +@@ -211,75 +196,626 @@ + } + + if (!somedev) +- error(_("%s: could not find any device /dev/loop#"), progname); +- else if (!someloop && permission) +- error(_("%s: no permission to look at /dev/loop#"), progname); ++ error(_("mount: could not find any device /dev/loop#")); + else if (!someloop) +- error(_( +- "%s: Could not find any loop device. Maybe this kernel " +- "does not know\n" +- " about the loop device? (If so, recompile or " +- "`modprobe loop'.)"), progname); ++ error(_("mount: Could not find any loop device. Maybe this kernel does not know\n" ++ " about the loop device? (If so, recompile or `modprobe loop'.)")); + else +- error(_("%s: could not find any free loop device"), progname); ++ error(_("mount: could not find any free loop device")); + return 0; + } + +-/* +- * A function to read the passphrase either from the terminal or from +- * an open file descriptor. +- */ +-static char * +-xgetpass(int pfd, const char *prompt) { +- char *pass; +- int buflen, i; +- +- if (pfd < 0) /* terminal */ +- return getpass(prompt); +- +- pass = NULL; +- buflen = 0; +- for (i=0; ; i++) { +- if (i >= buflen-1) { +- /* we're running out of space in the buffer. +- * Make it bigger: */ +- char *tmppass = pass; +- buflen += 128; +- pass = realloc(tmppass, buflen); +- if (pass == NULL) { +- /* realloc failed. Stop reading. */ +- error("Out of memory while reading passphrase"); +- pass = tmppass; /* the old buffer hasn't changed */ +- break; +- } +- } +- if (read(pfd, pass+i, 1) != 1 || +- pass[i] == '\n' || pass[i] == 0) ++int is_loop_active(const char *dev, const char *backdev) ++{ ++ int fd; ++ int ret = 0; ++ struct stat statbuf; ++ struct loop_info64 loopinfo; ++ if (stat (dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) { ++ fd = open (dev, O_RDONLY); ++ if (fd < 0) ++ return 0; ++ if ((loop_get_status64_ioctl(fd, &loopinfo) == 0) ++ && (stat (backdev, &statbuf) == 0) ++ && (statbuf.st_dev == loopinfo.lo_device) ++ && (statbuf.st_ino == loopinfo.lo_inode)) ++ ret = 1; /* backing device matches */ ++ memset(&loopinfo, 0, sizeof(loopinfo)); ++ close(fd); ++ } ++ return ret; ++} ++#endif ++ ++static int rd_wr_retry(int fd, char *buf, int cnt, int w) ++{ ++ int x, y, z; ++ ++ x = 0; ++ while(x < cnt) { ++ y = cnt - x; ++ if(w) { ++ z = write(fd, buf + x, y); ++ } else { ++ z = read(fd, buf + x, y); ++ if (!z) return x; ++ } ++ if(z < 0) { ++ if ((errno == EAGAIN) || (errno == ENOMEM) || (errno == ERESTART) || (errno == EINTR)) { ++ continue; ++ } ++ return x; ++ } ++ x += z; ++ } ++ return x; ++} ++ ++static char *get_FD_pass(int fd) ++{ ++ char *p = NULL, *n; ++ int x = 0, y = 0; ++ ++ do { ++ if(y >= (x - 1)) { ++ x += 128; ++ /* Must enforce some max limit here -- this code */ ++ /* runs as part of mount, and mount is setuid root */ ++ /* and has used mlockall(MCL_CURRENT | MCL_FUTURE) */ ++ if(x > (4*1024)) return(NULL); ++ n = malloc(x); ++ if(!n) return(NULL); ++ if(p) { ++ memcpy(n, p, y); ++ memset(p, 0, y); ++ free(p); ++ } ++ p = n; ++ } ++ if(rd_wr_retry(fd, p + y, 1, 0) != 1) break; ++ if((p[y] == '\n') || !p[y]) break; ++ y++; ++ } while(1); ++ if(p) p[y] = 0; ++ return p; ++} ++ ++static unsigned long long mystrtoull(char *s, int acceptAT) ++{ ++ unsigned long long v = 0; ++ int negative = 0; ++ ++ while ((*s == ' ') || (*s == '\t')) ++ s++; ++ if (acceptAT && (*s == '@')) { ++ s++; ++ negative = 1; ++ } ++ if (*s == '0') { ++ s++; ++ if ((*s == 'x') || (*s == 'X')) { ++ s++; ++ sscanf(s, "%llx", &v); ++ } else { ++ sscanf(s, "%llo", &v); ++ } ++ } else { ++ sscanf(s, "%llu", &v); ++ } ++ return negative ? -v : v; ++} ++ ++static void warnAboutBadKeyData(int x) ++{ ++ if((x > 1) && (x != 64) && (x != 65)) { ++ fprintf(stderr, _("Warning: Unknown key data format - using it anyway\n")); ++ } ++} ++ ++static char *do_GPG_pipe(char *pass) ++{ ++ int x, pfdi[2], pfdo[2]; ++ char str[10], *a[16], *e[2], *h; ++ pid_t gpid; ++ struct passwd *p; ++ void *oldSigPipeHandler; ++ ++ if((getuid() == 0) && gpgHomeDir && gpgHomeDir[0]) { ++ h = gpgHomeDir; ++ } else { ++ if(!(p = getpwuid(getuid()))) { ++ fprintf(stderr, _("Error: Unable to detect home directory for uid %d\n"), (int)getuid()); ++ return NULL; ++ } ++ h = p->pw_dir; ++ } ++ if(!(e[0] = malloc(strlen(h) + 6))) { ++ nomem1: ++ fprintf(stderr, _("Error: Unable to allocate memory\n")); ++ return NULL; ++ } ++ sprintf(e[0], "HOME=%s", h); ++ e[1] = 0; ++ ++ if(pipe(&pfdi[0])) { ++ nomem2: ++ free(e[0]); ++ goto nomem1; ++ } ++ if(pipe(&pfdo[0])) { ++ close(pfdi[0]); ++ close(pfdi[1]); ++ goto nomem2; ++ } ++ ++ /* ++ * When this code is run as part of losetup, normal read permissions ++ * affect the open() below because losetup is not setuid-root. ++ * ++ * When this code is run as part of mount, only root can set ++ * 'gpgKeyFile' and as such, only root can decide what file is opened ++ * below. However, since mount is usually setuid-root all non-root ++ * users can also open() the file too, but that file's contents are ++ * only piped to gpg. This readable-for-all is intended behaviour, ++ * and is very useful in situations where non-root users mount loop ++ * devices with their own gpg private key, and yet don't have access ++ * to the actual key used to encrypt loop device. ++ */ ++ if((x = open(gpgKeyFile, O_RDONLY)) == -1) { ++ fprintf(stderr, _("Error: unable to open %s for reading\n"), gpgKeyFile); ++ nomem3: ++ free(e[0]); ++ close(pfdo[0]); ++ close(pfdo[1]); ++ close(pfdi[0]); ++ close(pfdi[1]); ++ return NULL; ++ } ++ ++ /* ++ * If someone puts a gpg key file at beginning of device and ++ * puts the real file system at some offset into the device, ++ * this code extracts that gpg key file into a temp file so gpg ++ * won't end up reading whole device when decrypting the key file. ++ * ++ * Example of encrypted cdrom mount with 8192 bytes reserved for gpg key file: ++ * mount -t iso9660 /dev/cdrom /cdrom -o loop=/dev/loop0,encryption=AES128,gpgkey=/dev/cdrom,offset=8192 ++ * ^^^^^^^^^^ ^^^^^^^^^^ ^^^^ ++ */ ++ if(loopOffsetBytes && !strcmp(loopFileName, gpgKeyFile)) { ++ FILE *f; ++ char b[1024]; ++ long long cnt; ++ int cnt2, cnt3; ++ ++ cnt = mystrtoull(loopOffsetBytes, 1); ++ if(cnt < 0) cnt = -cnt; ++ if(cnt > (1024 * 1024)) cnt = 1024 * 1024; /* sanity check */ ++ f = tmpfile(); ++ if(!f) { ++ fprintf(stderr, _("Error: unable to create temp file\n")); ++ close(x); ++ goto nomem3; ++ } ++ while(cnt > 0) { ++ cnt2 = sizeof(b); ++ if(cnt < cnt2) cnt2 = cnt; ++ cnt3 = rd_wr_retry(x, b, cnt2, 0); ++ if(cnt3 && (fwrite(b, cnt3, 1, f) != 1)) { ++ tmpWrErr: ++ fprintf(stderr, _("Error: unable to write to temp file\n")); ++ fclose(f); ++ close(x); ++ goto nomem3; ++ } ++ if(cnt2 != cnt3) break; ++ cnt -= cnt3; ++ } ++ if(fflush(f)) goto tmpWrErr; ++ close(x); ++ x = dup(fileno(f)); ++ fclose(f); ++ lseek(x, 0L, SEEK_SET); ++ } ++ ++ sprintf(str, "%d", pfdi[0]); ++ if(!(gpid = fork())) { ++ dup2(x, 0); ++ dup2(pfdo[1], 1); ++ close(x); ++ close(pfdi[1]); ++ close(pfdo[0]); ++ close(pfdo[1]); ++ if((x = open("/dev/null", O_WRONLY)) >= 0) { ++ dup2(x, 2); ++ close(x); ++ } ++ x = 0; ++ a[x++] = "gpg"; ++ if(gpgHomeDir && gpgHomeDir[0]) { ++ a[x++] = "--homedir"; ++ a[x++] = gpgHomeDir; ++ } ++ a[x++] = "--no-options"; ++ a[x++] = "--quiet"; ++ a[x++] = "--batch"; ++ a[x++] = "--no-tty"; ++ a[x++] = "--passphrase-fd"; ++ a[x++] = str; ++ a[x++] = "--decrypt"; ++ a[x] = 0; ++ setgid(getgid()); ++ setuid(getuid()); ++ for(x = 3; x < 1024; x++) { ++ if(x == pfdi[0]) continue; ++ close(x); ++ } ++ execve("/bin/gpg", &a[0], &e[0]); ++ execve("/usr/bin/gpg", &a[0], &e[0]); ++ execve("/usr/local/bin/gpg", &a[0], &e[0]); ++ exit(1); ++ } ++ free(e[0]); ++ close(x); ++ close(pfdi[0]); ++ close(pfdo[1]); ++ if(gpid == -1) { ++ close(pfdi[1]); ++ close(pfdo[0]); ++ goto nomem1; ++ } ++ ++ x = strlen(pass); ++ ++ /* ignore possible SIGPIPE signal while writing to gpg */ ++ oldSigPipeHandler = signal(SIGPIPE, SIG_IGN); ++ rd_wr_retry(pfdi[1], pass, x, 1); ++ rd_wr_retry(pfdi[1], "\n", 1, 1); ++ if(oldSigPipeHandler != SIG_ERR) signal(SIGPIPE, oldSigPipeHandler); ++ ++ close(pfdi[1]); ++ memset(pass, 0, x); ++ x = 0; ++ while(x < 66) { ++ multiKeyPass[x] = get_FD_pass(pfdo[0]); ++ if(!multiKeyPass[x]) { ++ /* mem alloc failed - abort */ ++ multiKeyPass[0] = 0; + break; ++ } ++ if(strlen(multiKeyPass[x]) < LOOP_PASSWORD_MIN_LENGTH) break; ++ x++; ++ } ++ warnAboutBadKeyData(x); ++ if(x >= 65) ++ multiKeyMode = 65; ++ if(x == 64) ++ multiKeyMode = 64; ++ close(pfdo[0]); ++ waitpid(gpid, &x, 0); ++ if(!multiKeyPass[0]) goto nomem1; ++ return multiKeyPass[0]; ++} ++ ++static char *sGetPass(int minLen, int warnLen) ++{ ++ char *p, *s, *seed; ++ int i, ask2, close_i_fd = 0; ++ ++ if(!passFDnumber) { ++ if(clearTextKeyFile) { ++ if((i = open(clearTextKeyFile, O_RDONLY)) == -1) { ++ fprintf(stderr, _("Error: unable to open %s for reading\n"), clearTextKeyFile); ++ return NULL; ++ } ++ close_i_fd = 1; ++ goto contReadFrom_i; ++ } ++ p = getpass(_("Password: ")); ++ ask2 = passAskTwice ? 1 : 0; ++ } else { ++ i = atoi(passFDnumber); ++ contReadFrom_i: ++ if(gpgKeyFile && gpgKeyFile[0]) { ++ p = get_FD_pass(i); ++ if(close_i_fd) close(i); ++ } else { ++ int x = 0; ++ while(x < 66) { ++ multiKeyPass[x] = get_FD_pass(i); ++ if(!multiKeyPass[x]) goto nomem; ++ if(strlen(multiKeyPass[x]) < LOOP_PASSWORD_MIN_LENGTH) break; ++ x++; ++ } ++ if(close_i_fd) close(i); ++ warnAboutBadKeyData(x); ++ if(x >= 65) { ++ multiKeyMode = 65; ++ return multiKeyPass[0]; ++ } ++ if(x == 64) { ++ multiKeyMode = 64; ++ return multiKeyPass[0]; ++ } ++ p = multiKeyPass[0]; ++ } ++ ask2 = 0; ++ } ++ if(!p) goto nomem; ++ if(gpgKeyFile && gpgKeyFile[0]) { ++ if(ask2) { ++ i = strlen(p); ++ s = malloc(i + 1); ++ if(!s) goto nomem; ++ strcpy(s, p); ++ p = getpass(_("Retype password: ")); ++ if(!p) goto nomem; ++ if(strcmp(s, p)) goto compareErr; ++ memset(s, 0, i); ++ free(s); ++ ask2 = 0; ++ } ++ p = do_GPG_pipe(p); ++ if(!p) return(NULL); ++ if(!p[0]) { ++ fprintf(stderr, _("Error: gpg key file decryption failed\n")); ++ return(NULL); ++ } ++ if(multiKeyMode) return(p); ++ } ++ i = strlen(p); ++ if(i < minLen) { ++ fprintf(stderr, _("Error: Password must be at least %d characters.\n"), minLen); ++ return(NULL); ++ } ++ seed = passSeedString; ++ if(!seed) seed = ""; ++ s = malloc(i + strlen(seed) + 1); ++ if(!s) { ++ nomem: ++ fprintf(stderr, _("Error: Unable to allocate memory\n")); ++ return(NULL); ++ } ++ strcpy(s, p); ++ memset(p, 0, i); ++ if(ask2) { ++ p = getpass(_("Retype password: ")); ++ if(!p) goto nomem; ++ if(strcmp(s, p)) { ++ compareErr: ++ fprintf(stderr, _("Error: Passwords are not identical\n")); ++ return(NULL); ++ } ++ memset(p, 0, i); + } ++ if(i < warnLen) { ++ fprintf(stderr, _("WARNING - Please use longer password (%d or more characters)\n"), LOOP_PASSWORD_MIN_LENGTH); ++ } ++ strcat(s, seed); ++ return(s); ++} + +- if (pass == NULL) +- return ""; ++/* this is for compatibility with historic loop-AES version */ ++static void unhashed1_key_setup(unsigned char *keyStr, int ile, unsigned char *keyBuf, int bufSize) ++{ ++ register int x, y, z, cnt = ile; ++ unsigned char *kp; + +- pass[i] = 0; +- return pass; ++ memset(keyBuf, 0, bufSize); ++ kp = keyStr; ++ for(x = 0; x < (bufSize * 8); x += 6) { ++ y = *kp++; ++ if(--cnt <= 0) { ++ kp = keyStr; ++ cnt = ile; ++ } ++ if((y >= '0') && (y <= '9')) y -= '0'; ++ else if((y >= 'A') && (y <= 'Z')) y -= ('A' - 10); ++ else if((y >= 'a') && (y <= 'z')) y -= ('a' - 36); ++ else if((y == '.') || (y == '/')) y += (62 - '.'); ++ else y &= 63; ++ z = x >> 3; ++ if(z < bufSize) { ++ keyBuf[z] |= y << (x & 7); ++ } ++ z++; ++ if(z < bufSize) { ++ keyBuf[z] |= y >> (8 - (x & 7)); ++ } ++ } + } + +-static int +-digits_only(const char *s) { +- while (*s) +- if (!isdigit(*s++)) +- return 0; +- return 1; ++/* this is for compatibility with mainline mount */ ++static void unhashed2_key_setup(unsigned char *keyStr, int ile, unsigned char *keyBuf, int bufSize) ++{ ++ memset(keyBuf, 0, bufSize); ++ strncpy((char *)keyBuf, (char *)keyStr, bufSize - 1); ++ keyBuf[bufSize - 1] = 0; ++} ++ ++static void rmd160HashTwiceWithA(unsigned char *ib, int ile, unsigned char *ob, int ole) ++{ ++ char tmpBuf[20 + 20]; ++ char pwdCopy[130]; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 40) ole = 40; ++ rmd160_hash_buffer(&tmpBuf[0], (char *)ib, ile); ++ pwdCopy[0] = 'A'; ++ if(ile > sizeof(pwdCopy) - 1) ile = sizeof(pwdCopy) - 1; ++ memcpy(pwdCopy + 1, ib, ile); ++ rmd160_hash_buffer(&tmpBuf[20], pwdCopy, ile + 1); ++ memcpy(ob, tmpBuf, ole); ++ memset(tmpBuf, 0, sizeof(tmpBuf)); ++ memset(pwdCopy, 0, sizeof(pwdCopy)); ++} ++ ++extern long long llseek(int, long long, int); ++ ++static long long xx_lseek(int fd, long long offset, int whence) ++{ ++ if(sizeof(off_t) >= 8) { ++ return lseek(fd, offset, whence); ++ } else { ++ return llseek(fd, offset, whence); ++ } ++} ++ ++static int loop_create_random_keys(char *partition, long long offset, long long sizelimit, int loopro, unsigned char *k) ++{ ++ int x, y, fd; ++ sha512_context s; ++ unsigned char b[4096]; ++ ++ if(loopro) { ++ fprintf(stderr, _("Error: read-only device %s\n"), partition); ++ return 1; ++ } ++ ++ /* ++ * Compute SHA-512 over first 40 KB of old fs data. SHA-512 hash ++ * output is then used as entropy for new fs encryption key. ++ */ ++ if((fd = open(partition, O_RDWR)) == -1) { ++ seekFailed: ++ fprintf(stderr, _("Error: unable to open/seek device %s\n"), partition); ++ return 1; ++ } ++ if(offset < 0) offset = -offset; ++ if(xx_lseek(fd, offset, SEEK_SET) == -1) { ++ close(fd); ++ goto seekFailed; ++ } ++ sha512_init(&s); ++ for(x = 1; x <= 10; x++) { ++ if((sizelimit > 0) && ((sizeof(b) * x) > sizelimit)) break; ++ if(rd_wr_retry(fd, &b[0], sizeof(b), 0) != sizeof(b)) break; ++ sha512_write(&s, &b[0], sizeof(b)); ++ } ++ sha512_final(&s); ++ ++ /* ++ * Overwrite 40 KB of old fs data 20 times so that recovering ++ * SHA-512 output beyond this point is difficult and expensive. ++ */ ++ for(y = 0; y < 20; y++) { ++ int z; ++ struct { ++ struct timeval tv; ++ unsigned char h[64]; ++ int x,y,z; ++ } j; ++ if(xx_lseek(fd, offset, SEEK_SET) == -1) break; ++ memcpy(&j.h[0], &s.sha_out[0], 64); ++ gettimeofday(&j.tv, NULL); ++ j.y = y; ++ for(x = 1; x <= 10; x++) { ++ j.x = x; ++ for(z = 0; z < sizeof(b); z += 64) { ++ j.z = z; ++ sha512_hash_buffer((unsigned char *)&j, sizeof(j), &b[z], 64); ++ } ++ if((sizelimit > 0) && ((sizeof(b) * x) > sizelimit)) break; ++ if(rd_wr_retry(fd, &b[0], sizeof(b), 1) != sizeof(b)) break; ++ } ++ memset(&j, 0, sizeof(j)); ++ if(fsync(fd)) break; ++ } ++ close(fd); ++ ++ /* ++ * Use all 512 bits of hash output ++ */ ++ memcpy(&b[0], &s.sha_out[0], 64); ++ memset(&s, 0, sizeof(s)); ++ ++ /* ++ * Read 32 bytes of random entropy from kernel's random ++ * number generator. This code may be executed early on startup ++ * scripts and amount of random entropy may be non-existent. ++ * SHA-512 of old fs data is used as workaround for missing ++ * entropy in kernel's random number generator. ++ */ ++ if((fd = open("/dev/urandom", O_RDONLY)) == -1) { ++ fprintf(stderr, _("Error: unable to open /dev/urandom\n")); ++ return 1; ++ } ++ rd_wr_retry(fd, &b[64], 32, 0); ++ ++ /* generate multi-key hashes */ ++ x = 0; ++ while(x < 65) { ++ rd_wr_retry(fd, &b[64+32], 16, 0); ++ sha512_hash_buffer(&b[0], 64+32+16, k, 32); ++ k += 32; ++ x++; ++ } ++ ++ close(fd); ++ memset(&b[0], 0, sizeof(b)); ++ return 0; ++} ++ ++#if !defined(MAIN) ++static int loop_fork_mkfs_command(char *device, char *fstype) ++{ ++ int x, y = 0; ++ char *a[10], *e[1]; ++ ++ sync(); ++ if(!(x = fork())) { ++ if((x = open("/dev/null", O_WRONLY)) >= 0) { ++ dup2(x, 0); ++ dup2(x, 1); ++ dup2(x, 2); ++ close(x); ++ } ++ x = 0; ++ a[x++] = "mkfs"; ++ a[x++] = "-t"; ++ a[x++] = fstype; ++ /* mkfs.reiserfs and mkfs.xfs need -f option */ ++ if(!strcmp(fstype, "reiserfs") || !strcmp(fstype, "xfs")) { ++ a[x++] = "-f"; ++ } ++ a[x++] = device; ++ a[x] = 0; ++ e[0] = 0; ++ setgid(getgid()); ++ setuid(getuid()); ++ for(x = 3; x < 1024; x++) { ++ close(x); ++ } ++ execve("/sbin/mkfs", &a[0], &e[0]); ++ exit(1); ++ } ++ if(x == -1) { ++ fprintf(stderr, _("Error: fork failed\n")); ++ return 1; ++ } ++ waitpid(x, &y, 0); ++ sync(); ++ if(!WIFEXITED(y) || (WEXITSTATUS(y) != 0)) { ++ fprintf(stderr, _("Error: encrypted file system mkfs failed\n")); ++ return 1; ++ } ++ return 0; + } ++#endif + + int +-set_loop(const char *device, const char *file, unsigned long long offset, +- const char *encryption, int pfd, int *loopro) { +- struct loop_info64 loopinfo64; +- int fd, ffd, mode, i; +- char *pass; ++set_loop(const char *device, const char *file, int *loopro, const char **fstype, unsigned int *AutoChmodPtr, int busyRetVal) { ++ struct loop_info64 loopinfo; ++ int fd, ffd, mode, i, errRetVal = 1; ++ char *pass, *apiName = NULL; ++ void (*hashFunc)(unsigned char *, int, unsigned char *, int); ++ unsigned char multiKeyBits[65][32]; ++ int minPassLen = LOOP_PASSWORD_MIN_LENGTH; ++ int run_mkfs_command = 0; + ++ loopFileName = (char *)file; ++ multiKeyMode = 0; + mode = (*loopro ? O_RDONLY : O_RDWR); + if ((ffd = open(file, mode)) < 0) { + if (!*loopro && errno == EROFS) +@@ -291,180 +827,255 @@ + } + if ((fd = open(device, mode)) < 0) { + perror (device); +- return 1; ++ goto close_ffd_return1; + } + *loopro = (mode == O_RDONLY); + +- memset(&loopinfo64, 0, sizeof(loopinfo64)); +- +- xstrncpy(loopinfo64.lo_file_name, file, LO_NAME_SIZE); +- +- if (encryption && *encryption) { +- if (digits_only(encryption)) { +- loopinfo64.lo_encrypt_type = atoi(encryption); +- } else { +- loopinfo64.lo_encrypt_type = LO_CRYPT_CRYPTOAPI; +- snprintf(loopinfo64.lo_crypt_name, LO_NAME_SIZE, +- "%s", encryption); +- } +- } +- +- loopinfo64.lo_offset = offset; ++ memset (&loopinfo, 0, sizeof (loopinfo)); ++ xstrncpy ((char *)loopinfo.lo_file_name, file, LO_NAME_SIZE); ++ if (loopEncryptionType) ++ loopinfo.lo_encrypt_type = loop_crypt_type (loopEncryptionType, &loopinfo.lo_encrypt_key_size, &apiName); ++ if (loopOffsetBytes) ++ loopinfo.lo_offset = mystrtoull(loopOffsetBytes, 1); ++ if (loopSizeBytes) ++ loopinfo.lo_sizelimit = mystrtoull(loopSizeBytes, 0); + + #ifdef MCL_FUTURE + /* + * Oh-oh, sensitive data coming up. Better lock into memory to prevent + * passwd etc being swapped out and left somewhere on disk. + */ +- if (loopinfo64.lo_encrypt_type != LO_CRYPT_NONE) { +- if(mlockall(MCL_CURRENT | MCL_FUTURE)) { +- perror("memlock"); +- fprintf(stderr, _("Couldn't lock into memory, exiting.\n")); +- exit(1); +- } ++ ++ if(mlockall(MCL_CURRENT | MCL_FUTURE)) { ++ perror("memlock"); ++ fprintf(stderr, _("Couldn't lock into memory, exiting.\n")); ++ exit(1); + } + #endif + +- switch (loopinfo64.lo_encrypt_type) { ++ switch (loopinfo.lo_encrypt_type) { + case LO_CRYPT_NONE: +- loopinfo64.lo_encrypt_key_size = 0; ++ loopinfo.lo_encrypt_key_size = 0; + break; + case LO_CRYPT_XOR: +- pass = getpass(_("Password: ")); +- goto gotpass; ++ pass = sGetPass (1, 0); ++ if(!pass) goto close_fd_ffd_return1; ++ xstrncpy ((char *)loopinfo.lo_encrypt_key, pass, LO_KEY_SIZE); ++ loopinfo.lo_encrypt_key_size = strlen((char*)loopinfo.lo_encrypt_key); ++ break; ++ case 3: /* LO_CRYPT_FISH2 */ ++ case 4: /* LO_CRYPT_BLOW */ ++ case 7: /* LO_CRYPT_SERPENT */ ++ case 8: /* LO_CRYPT_MARS */ ++ case 11: /* LO_CRYPT_RC6 */ ++ case 12: /* LO_CRYPT_DES_EDE3 */ ++ case 16: /* LO_CRYPT_AES */ ++ case 18: /* LO_CRYPT_CRYPTOAPI */ ++ /* set default hash function */ ++ hashFunc = sha256_hash_buffer; ++ if(loopinfo.lo_encrypt_key_size == 24) hashFunc = sha384_hash_buffer; ++ if(loopinfo.lo_encrypt_key_size == 32) hashFunc = sha512_hash_buffer; ++ /* possibly override default hash function */ ++ if(passHashFuncName) { ++ if(!strcasecmp(passHashFuncName, "sha256")) { ++ hashFunc = sha256_hash_buffer; ++ } else if(!strcasecmp(passHashFuncName, "sha384")) { ++ hashFunc = sha384_hash_buffer; ++ } else if(!strcasecmp(passHashFuncName, "sha512")) { ++ hashFunc = sha512_hash_buffer; ++ } else if(!strcasecmp(passHashFuncName, "rmd160")) { ++ hashFunc = rmd160HashTwiceWithA; ++ minPassLen = 1; ++ } else if(!strcasecmp(passHashFuncName, "unhashed1")) { ++ hashFunc = unhashed1_key_setup; ++ } else if(!strcasecmp(passHashFuncName, "unhashed2")) { ++ hashFunc = unhashed2_key_setup; ++ minPassLen = 1; ++ } else if(!strcasecmp(passHashFuncName, "unhashed3") && passFDnumber && !gpgKeyFile) { ++ /* unhashed3 hash type reads binary key from file descriptor. */ ++ /* This is not compatible with gpgkey= mount option */ ++ if(rd_wr_retry(atoi(passFDnumber), (char *)&loopinfo.lo_encrypt_key[0], LO_KEY_SIZE, 0) < 1) { ++ fprintf(stderr, _("Error: couldn't read binary key\n")); ++ goto close_fd_ffd_return1; ++ } ++ break; /* out of switch(loopinfo.lo_encrypt_type) */ ++ } else if(!strncasecmp(passHashFuncName, "random", 6) && ((passHashFuncName[6] == 0) || (passHashFuncName[6] == '/'))) { ++ /* random hash type sets up 65 random keys */ ++ /* WARNING! DO NOT USE RANDOM HASH TYPE ON PARTITION WITH EXISTING */ ++ /* IMPORTANT DATA ON IT. RANDOM HASH TYPE WILL DESTROY YOUR DATA. */ ++ if(loop_create_random_keys((char*)file, loopinfo.lo_offset, loopinfo.lo_sizelimit, *loopro, &multiKeyBits[0][0])) { ++ goto close_fd_ffd_return1; ++ } ++ memcpy(&loopinfo.lo_encrypt_key[0], &multiKeyBits[0][0], sizeof(loopinfo.lo_encrypt_key)); ++ run_mkfs_command = multiKeyMode = 1000; ++ break; /* out of switch(loopinfo.lo_encrypt_type) */ ++ } ++ } ++ pass = sGetPass (minPassLen, LOOP_PASSWORD_MIN_LENGTH); ++ if(!pass) goto close_fd_ffd_return1; ++ i = strlen(pass); ++ if(hashFunc == unhashed1_key_setup) { ++ /* this is for compatibility with historic loop-AES version */ ++ loopinfo.lo_encrypt_key_size = 16; /* 128 bits */ ++ if(i >= 32) loopinfo.lo_encrypt_key_size = 24; /* 192 bits */ ++ if(i >= 43) loopinfo.lo_encrypt_key_size = 32; /* 256 bits */ ++ } ++ (*hashFunc)((unsigned char *)pass, i, &loopinfo.lo_encrypt_key[0], sizeof(loopinfo.lo_encrypt_key)); ++ if(multiKeyMode) { ++ int r = 0, t; ++ while(r < multiKeyMode) { ++ t = strlen(multiKeyPass[r]); ++ (*hashFunc)((unsigned char *)multiKeyPass[r], t, &multiKeyBits[r][0], 32); ++ memset(multiKeyPass[r], 0, t); ++ /* ++ * MultiKeyMode uses md5 IV. One key mode uses sector IV. Sector IV ++ * and md5 IV v2 and v3 are all computed differently. This first key ++ * byte XOR with 0x55/0xF4 is needed to cause complete decrypt failure ++ * in cases where data is encrypted with one type of IV and decrypted ++ * with another type IV. If identical key was used but only IV was ++ * computed differently, only first plaintext block of 512 byte CBC ++ * chain would decrypt incorrectly and rest would decrypt correctly. ++ * Partially correct decryption is dangerous. Decrypting all blocks ++ * incorrectly is safer because file system mount will simply fail. ++ */ ++ if(multiKeyMode == 65) { ++ multiKeyBits[r][0] ^= 0xF4; /* version 3 */ ++ } else { ++ multiKeyBits[r][0] ^= 0x55; /* version 2 */ ++ } ++ r++; ++ } ++ } else if(passIterThousands) { ++ aes_context ctx; ++ unsigned long iter = 0; ++ unsigned char tempkey[32]; ++ /* ++ * Set up AES-256 encryption key using same password and hash function ++ * as before but with password bit 0 flipped before hashing. That key ++ * is then used to encrypt actual loop key 'itercountk' thousand times. ++ */ ++ pass[0] ^= 1; ++ (*hashFunc)((unsigned char *)pass, i, &tempkey[0], 32); ++ aes_set_key(&ctx, &tempkey[0], 32, 0); ++ sscanf(passIterThousands, "%lu", &iter); ++ iter *= 1000; ++ while(iter > 0) { ++ /* encrypt both 128bit blocks with AES-256 */ ++ aes_encrypt(&ctx, &loopinfo.lo_encrypt_key[ 0], &loopinfo.lo_encrypt_key[ 0]); ++ aes_encrypt(&ctx, &loopinfo.lo_encrypt_key[16], &loopinfo.lo_encrypt_key[16]); ++ /* exchange upper half of first block with lower half of second block */ ++ memcpy(&tempkey[0], &loopinfo.lo_encrypt_key[8], 8); ++ memcpy(&loopinfo.lo_encrypt_key[8], &loopinfo.lo_encrypt_key[16], 8); ++ memcpy(&loopinfo.lo_encrypt_key[16], &tempkey[0], 8); ++ iter--; ++ } ++ memset(&ctx, 0, sizeof(ctx)); ++ memset(&tempkey[0], 0, sizeof(tempkey)); ++ } ++ memset(pass, 0, i); /* erase original password */ ++ break; + default: +- pass = xgetpass(pfd, _("Password: ")); +- gotpass: +- memset(loopinfo64.lo_encrypt_key, 0, LO_KEY_SIZE); +- xstrncpy(loopinfo64.lo_encrypt_key, pass, LO_KEY_SIZE); +- memset(pass, 0, strlen(pass)); +- loopinfo64.lo_encrypt_key_size = LO_KEY_SIZE; ++ fprintf (stderr, _("Error: don't know how to get key for encryption system %d\n"), loopinfo.lo_encrypt_type); ++ goto close_fd_ffd_return1; ++ } ++ ++ if(loInitValue) { ++ /* cipher modules are free to do whatever they want with this value */ ++ i = 0; ++ sscanf(loInitValue, "%d", &i); ++ loopinfo.lo_init[0] = i; + } + + if (ioctl(fd, LOOP_SET_FD, ffd) < 0) { +- close(fd); +- close(ffd); +- if (errno == EBUSY) { +- if (verbose) +- printf(_("ioctl LOOP_SET_FD failed: %s\n"), strerror(errno)); +- return 2; +- } else { ++ if(errno == EBUSY) ++ errRetVal = busyRetVal; ++ if((errRetVal != 2) || verbose) + perror("ioctl: LOOP_SET_FD"); +- return 1; +- } ++keyclean_close_fd_ffd_return1: ++ memset(loopinfo.lo_encrypt_key, 0, sizeof(loopinfo.lo_encrypt_key)); ++ memset(&multiKeyBits[0][0], 0, sizeof(multiKeyBits)); ++close_fd_ffd_return1: ++ close (fd); ++close_ffd_return1: ++ close (ffd); ++ return errRetVal; + } +- close (ffd); + +- i = ioctl(fd, LOOP_SET_STATUS64, &loopinfo64); +- if (i) { +- struct loop_info loopinfo; +- int errsv = errno; +- +- i = loop_info64_to_old(&loopinfo64, &loopinfo); +- if (i) { +- errno = errsv; +- perror("ioctl: LOOP_SET_STATUS64"); +- } else { +- i = ioctl(fd, LOOP_SET_STATUS, &loopinfo); +- if (i) +- perror("ioctl: LOOP_SET_STATUS"); ++ /* type 18 == LO_CRYPT_CRYPTOAPI */ ++ if ((loopinfo.lo_encrypt_type == 18) || (loop_set_status64_ioctl(fd, &loopinfo) < 0)) { ++ /* direct cipher interface failed - try CryptoAPI interface now */ ++ if(!apiName || (try_cryptoapi_loop_interface(fd, &loopinfo, apiName) < 0)) { ++ fprintf(stderr, _("ioctl: LOOP_SET_STATUS: %s, requested cipher or key length (%d bits) not supported by kernel\n"), strerror(errno), loopinfo.lo_encrypt_key_size << 3); ++ loop_clr_fd_out: ++ (void) ioctl (fd, LOOP_CLR_FD, 0); ++ goto keyclean_close_fd_ffd_return1; + } +- memset(&loopinfo, 0, sizeof(loopinfo)); + } +- memset(&loopinfo64, 0, sizeof(loopinfo64)); +- +- if (i) { +- ioctl (fd, LOOP_CLR_FD, 0); +- close (fd); +- return 1; ++ if(multiKeyMode >= 65) { ++ if(ioctl(fd, LOOP_MULTI_KEY_SETUP_V3, &multiKeyBits[0][0]) < 0) { ++ if(multiKeyMode == 1000) goto try_v2_setup; ++ perror("ioctl: LOOP_MULTI_KEY_SETUP_V3"); ++ goto loop_clr_fd_out; ++ } ++ } else if(multiKeyMode == 64) { ++ try_v2_setup: ++ if((ioctl(fd, LOOP_MULTI_KEY_SETUP, &multiKeyBits[0][0]) < 0) && (multiKeyMode != 1000)) { ++ perror("ioctl: LOOP_MULTI_KEY_SETUP"); ++ goto loop_clr_fd_out; ++ } + } +- close (fd); +- +- if (verbose > 1) +- printf(_("set_loop(%s,%s,%llu): success\n"), +- device, file, offset); +- return 0; +-} +- +-int +-del_loop (const char *device) { +- int fd; + +- if ((fd = open (device, O_RDONLY)) < 0) { +- int errsv = errno; +- fprintf(stderr, _("loop: can't delete device %s: %s\n"), +- device, strerror (errsv)); +- return 1; +- } +- if (ioctl (fd, LOOP_CLR_FD, 0) < 0) { +- perror ("ioctl: LOOP_CLR_FD"); +- close(fd); +- return 1; +- } ++ memset(loopinfo.lo_encrypt_key, 0, sizeof(loopinfo.lo_encrypt_key)); ++ memset(&multiKeyBits[0][0], 0, sizeof(multiKeyBits)); + close (fd); +- if (verbose > 1) +- printf(_("del_loop(%s): success\n"), device); +- return 0; +-} +- +-#else /* no LOOP_SET_FD defined */ +-static void +-mutter(void) { +- fprintf(stderr, +- _("This mount was compiled without loop support. " +- "Please recompile.\n")); +-} +- +-int +-set_loop (const char *device, const char *file, unsigned long long offset, +- const char *encryption, int *loopro) { +- mutter(); +- return 1; +-} ++ close (ffd); + +-int +-del_loop (const char *device) { +- mutter(); +- return 1; +-} ++#if !defined(MAIN) ++ if(run_mkfs_command && fstype && *fstype && **fstype && (getuid() == 0)) { ++ if(!loop_fork_mkfs_command((char *)device, (char *)(*fstype))) { ++ /* !strncasecmp(passHashFuncName, "random", 6) test matched */ ++ /* This reads octal mode for newly created file system root */ ++ /* directory node from '-o phash=random/1777' mount option. */ ++ /* octal mode--^^^^ */ ++ sscanf(passHashFuncName + 6, "/%o", AutoChmodPtr); ++ } else { ++ if((fd = open(device, mode)) >= 0) { ++ ioctl(fd, LOOP_CLR_FD, 0); ++ close(fd); ++ return 1; ++ } ++ } ++ } ++#endif + +-char * +-find_unused_loop_device (void) { +- mutter(); ++ if (verbose > 1) ++ printf(_("set_loop(%s,%s): success\n"), device, file); + return 0; + } + +-#endif +- + #ifdef MAIN + +-#ifdef LOOP_SET_FD +- + #include + #include + + int verbose = 0; +-char *progname; ++static char *progname; + + static void + usage(void) { +- fprintf(stderr, _("\nUsage:\n" +- " %1$s loop_device # give info\n" +- " %1$s -a | --all # list all used\n" +- " %1$s -d | --detach loop_device # delete\n" +- " %1$s -f | --find # find unused\n" +- " %1$s [ options ] {-f|--find|loop_device} file # setup\n" +- "\nOptions:\n" +- " -e | --encryption enable data encryption with specified \n" +- " -h | --help this help\n" +- " -o | --offset start at offset into file\n" +- " -p | --pass-fd read passphrase from file descriptor \n" +- " -r | --read-only setup read-only loop device\n" +- " -s | --show print device name (with -f )\n" +- " -v | --verbose verbose mode\n\n"), +- progname); ++ fprintf(stderr, _("usage:\n\ ++ %s [options] loop_device file # setup\n\ ++ %s -F [options] loop_device [file] # setup, read /etc/fstab\n\ ++ %s loop_device # give info\n\ ++ %s -a # give info of all loops\n\ ++ %s -d loop_device # delete\n\ ++ %s -R loop_device # resize\n\ ++options: -e encryption -o offset -s sizelimit -p passwdfd -T -S pseed\n\ ++ -H phash -I loinit -K gpgkey -G gpghome -C itercountk -v -r\n\ ++ -P cleartextkey\n"), ++ progname, progname, progname, progname, progname, progname); + exit(1); +- } ++} + + char * + xstrdup (const char *s) { +@@ -493,153 +1104,252 @@ + fprintf (stderr, "\n"); + } + ++void ++show_all_loops(void) ++{ ++ char dev[20]; ++ char *lfmt[] = { "/dev/loop%d", "/dev/loop/%d" }; ++ int i, j, fd, x; ++ struct stat statbuf; ++ ++ for(i = 0; i < 256; i++) { ++ for(j = (sizeof(lfmt) / sizeof(lfmt[0])) - 1; j >= 0; j--) { ++ sprintf(dev, lfmt[j], i); ++ if(stat(dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) { ++ fd = open(dev, O_RDONLY); ++ if(fd >= 0) { ++ x = is_unused_loop_device(fd); ++ close(fd); ++ if(x == 0) { ++ show_loop(dev); ++ j = 0; ++ } ++ } ++ } ++ } ++ } ++} ++ ++int ++read_options_from_fstab(char *loopToFind, char **partitionPtr) ++{ ++ FILE *f; ++ struct mntent *m; ++ int y, foundMatch = 0; ++ char *opt, *fr1, *fr2; ++ struct options { ++ char *name; /* name of /etc/fstab option */ ++ char **dest; /* destination where it is written to */ ++ char *line; /* temp */ ++ }; ++ struct options tbl[] = { ++ { "device/file name ", partitionPtr }, /* must be index 0 */ ++ { "loop=", &loopToFind }, /* must be index 1 */ ++ { "offset=", &loopOffsetBytes }, ++ { "sizelimit=", &loopSizeBytes }, ++ { "encryption=", &loopEncryptionType }, ++ { "pseed=", &passSeedString }, ++ { "phash=", &passHashFuncName }, ++ { "loinit=", &loInitValue }, ++ { "gpgkey=", &gpgKeyFile }, ++ { "gpghome=", &gpgHomeDir }, ++ { "cleartextkey=", &clearTextKeyFile }, ++ { "itercountk=", &passIterThousands }, ++ }; ++ struct options *p; ++ ++ if (!(f = setmntent("/etc/fstab", "r"))) { ++ fprintf(stderr, _("Error: unable to open /etc/fstab for reading\n")); ++ return 0; ++ } ++ while ((m = getmntent(f)) != NULL) { ++ tbl[0].line = fr1 = xstrdup(m->mnt_fsname); ++ p = &tbl[1]; ++ do { ++ p->line = NULL; ++ } while (++p < &tbl[sizeof(tbl) / sizeof(struct options)]); ++ opt = fr2 = xstrdup(m->mnt_opts); ++ for (opt = strtok(opt, ","); opt != NULL; opt = strtok(NULL, ",")) { ++ p = &tbl[1]; ++ do { ++ y = strlen(p->name); ++ if (!strncmp(opt, p->name, y)) ++ p->line = opt + y; ++ } while (++p < &tbl[sizeof(tbl) / sizeof(struct options)]); ++ } ++ if (tbl[1].line && !strcmp(loopToFind, tbl[1].line)) { ++ if (++foundMatch > 1) { ++ fprintf(stderr, _("Error: multiple loop=%s options found in /etc/fstab\n"), loopToFind); ++ endmntent(f); ++ return 0; ++ } ++ p = &tbl[0]; ++ do { ++ if (!*p->dest && p->line) { ++ *p->dest = p->line; ++ if (verbose) ++ printf(_("using %s%s from /etc/fstab\n"), p->name, p->line); ++ } ++ } while (++p < &tbl[sizeof(tbl) / sizeof(struct options)]); ++ fr1 = fr2 = NULL; ++ } ++ if(fr1) free(fr1); ++ if(fr2) free(fr2); ++ } ++ endmntent(f); ++ if (foundMatch == 0) { ++ fprintf(stderr, _("Error: loop=%s option not found in /etc/fstab\n"), loopToFind); ++ } ++ return foundMatch; ++} ++ ++int ++recompute_loop_dev_size(char *device) ++{ ++ int fd, err1 = 0, err2, err3; ++ long long oldBytes = -1, newBytes = -1; ++ ++ fd = open(device, O_RDONLY); ++ if(fd < 0) { ++ perror(device); ++ return 1; ++ } ++ if(verbose) { ++ err1 = ioctl(fd, BLKGETSIZE64, &oldBytes); ++ } ++ err2 = ioctl(fd, LOOP_RECOMPUTE_DEV_SIZE, 0); ++ if(err2) { ++ perror(device); ++ goto done1; ++ } ++ if(verbose) { ++ err3 = ioctl(fd, BLKGETSIZE64, &newBytes); ++ if(!err1 && (oldBytes >= 0)) { ++ printf("%s: old size %lld bytes\n", device, oldBytes); ++ } ++ if(!err3 && (newBytes >= 0)) { ++ printf("%s: new size %lld bytes\n", device, newBytes); ++ } ++ } ++done1: ++ close(fd); ++ return err2; ++} + + int + main(int argc, char **argv) { +- char *p, *offset, *encryption, *passfd, *device, *file; +- int delete, find, c, all; ++ char *partitionName = NULL; ++ int delete,c,option_a=0,option_F=0,option_R=0,setup_o=0; + int res = 0; +- int showdev = 0; + int ro = 0; +- int pfd = -1; +- unsigned long long off; +- struct option longopts[] = { +- { "all", 0, 0, 'a' }, +- { "detach", 0, 0, 'd' }, +- { "encryption", 1, 0, 'e' }, +- { "find", 0, 0, 'f' }, +- { "help", 0, 0, 'h' }, +- { "offset", 1, 0, 'o' }, +- { "pass-fd", 1, 0, 'p' }, +- { "read-only", 0, 0, 'r' }, +- { "show", 0, 0, 's' }, +- { "verbose", 0, 0, 'v' }, +- { NULL, 0, 0, 0 } +- }; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + +- delete = find = all = 0; +- off = 0; +- offset = encryption = passfd = NULL; +- ++ delete = 0; + progname = argv[0]; +- if ((p = strrchr(progname, '/')) != NULL) +- progname = p+1; +- +- while ((c = getopt_long(argc, argv, "ade:E:fho:p:rsv", +- longopts, NULL)) != -1) { ++ while ((c = getopt(argc,argv,"aC:de:FG:H:I:K:o:p:rRs:S:Tv")) != -1) { + switch (c) { +- case 'a': +- all = 1; ++ case 'a': /* show status of all loops */ ++ option_a = 1; + break; +- case 'r': +- ro = 1; ++ case 'C': ++ passIterThousands = optarg; ++ setup_o = 1; + break; + case 'd': + delete = 1; + break; +- case 'E': + case 'e': +- encryption = optarg; ++ loopEncryptionType = optarg; ++ setup_o = 1; + break; +- case 'f': +- find = 1; ++ case 'F': /* read loop related options from /etc/fstab */ ++ option_F = 1; ++ setup_o = 1; ++ break; ++ case 'G': /* GnuPG home dir */ ++ gpgHomeDir = optarg; ++ setup_o = 1; ++ break; ++ case 'H': /* passphrase hash function name */ ++ passHashFuncName = optarg; ++ setup_o = 1; ++ break; ++ case 'I': /* lo_init[0] value (in string form) */ ++ loInitValue = optarg; ++ setup_o = 1; ++ break; ++ case 'K': /* GnuPG key file name */ ++ gpgKeyFile = optarg; ++ setup_o = 1; + break; + case 'o': +- offset = optarg; ++ loopOffsetBytes = optarg; ++ setup_o = 1; ++ break; ++ case 'p': /* read passphrase from given fd */ ++ passFDnumber = optarg; ++ setup_o = 1; + break; +- case 'p': +- passfd = optarg; ++ case 'P': /* read passphrase from given file */ ++ clearTextKeyFile = optarg; ++ setup_o = 1; ++ break; ++ case 'r': /* read-only */ ++ ro = 1; ++ setup_o = 1; ++ break; ++ case 'R': /* recompute loop dev size */ ++ option_R = 1; + break; + case 's': +- showdev = 1; ++ loopSizeBytes = optarg; ++ setup_o = 1; ++ break; ++ case 'S': /* optional seed for passphrase */ ++ passSeedString = optarg; ++ setup_o = 1; ++ break; ++ case 'T': /* ask passphrase _twice_ */ ++ passAskTwice = "T"; ++ setup_o = 1; + break; + case 'v': +- verbose = 1; ++ verbose++; + break; + default: + usage(); + } + } +- +- if (argc == 1) { +- usage(); ++ if (option_a + delete + option_R + setup_o > 1) usage(); ++ if (option_a) { ++ /* show all loops */ ++ if (argc != optind) usage(); ++ show_all_loops(); ++ res = 0; + } else if (delete) { +- if (argc != optind+1 || encryption || offset || find || all || showdev) +- usage(); +- } else if (find) { +- if (all || argc < optind || argc > optind+1) +- usage(); +- } else if (all) { +- if (argc > 2) +- usage(); +- } else { +- if (argc < optind+1 || argc > optind+2) +- usage(); +- } +- +- if (all) +- return show_used_loop_devices(); +- else if (find) { +- device = find_unused_loop_device(); +- if (device == NULL) +- return -1; +- if (argc == optind) { +- if (verbose) +- printf("Loop device is %s\n", device); +- printf("%s\n", device); +- return 0; +- } +- file = argv[optind]; ++ /* delete loop */ ++ if (argc != optind+1) usage(); ++ res = del_loop(argv[optind]); ++ } else if (option_R) { ++ /* resize existing loop */ ++ if (argc != optind+1) usage(); ++ res = recompute_loop_dev_size(argv[optind]); ++ } else if ((argc == optind+1) && !setup_o) { ++ /* show one loop */ ++ res = show_loop(argv[optind]); + } else { +- device = argv[optind]; +- if (argc == optind+1) +- file = NULL; +- else +- file = argv[optind+1]; +- } +- +- if (delete) +- res = del_loop(device); +- else if (file == NULL) +- res = show_loop(device); +- else { +- if (offset && sscanf(offset, "%llu", &off) != 1) +- usage(); +- if (passfd && sscanf(passfd, "%d", &pfd) != 1) ++ /* set up new loop */ ++ if ((argc < optind+1) || ((argc == optind+1) && !option_F) || (argc > optind+2)) + usage(); +- do { +- res = set_loop(device, file, off, encryption, pfd, &ro); +- if (res == 2 && find) { +- if (verbose) +- printf("stolen loop=%s...trying again\n", +- device); +- free(device); +- if (!(device = find_unused_loop_device())) +- return -1; +- } +- } while (find && res == 2); +- +- if (verbose && res == 0) +- printf("Loop device is %s\n", device); +- +- if (res == 0 && showdev && find) +- printf("%s\n", device); ++ if (argc > optind+1) ++ partitionName = argv[optind+1]; ++ if (option_F && (read_options_from_fstab(argv[optind], &partitionName) != 1)) ++ exit(1); ++ res = set_loop(argv[optind],partitionName,&ro,(const char**)0,(unsigned int *)0, 1); + } + return res; + } +- +-#else /* LOOP_SET_FD not defined */ +- +-int +-main(int argc, char **argv) { +- fprintf(stderr, +- _("No loop support was available at compile time. " +- "Please recompile.\n")); +- return -1; +-} +-#endif + #endif +diff -urN util-linux-ng-2.13/mount/lomount.h util-linux-ng-2.13-AES/mount/lomount.h +--- util-linux-ng-2.13/mount/lomount.h 2007-04-25 15:43:38.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/lomount.h 2007-09-02 18:05:41.000000000 +0300 +@@ -1,6 +1,19 @@ + extern int verbose; +-extern int set_loop(const char *, const char *, unsigned long long, +- const char *, int, int *); ++extern int set_loop(const char *, const char *, int *, const char **, unsigned int *, int); + extern int del_loop(const char *); + extern int is_loop_device(const char *); ++extern int is_loop_active(const char *, const char *); + extern char * find_unused_loop_device(void); ++ ++extern char *passFDnumber; ++extern char *passAskTwice; ++extern char *passSeedString; ++extern char *passHashFuncName; ++extern char *passIterThousands; ++extern char *loInitValue; ++extern char *gpgKeyFile; ++extern char *gpgHomeDir; ++extern char *clearTextKeyFile; ++extern char *loopOffsetBytes; ++extern char *loopSizeBytes; ++extern char *loopEncryptionType; +diff -urN util-linux-ng-2.13/mount/loop.c util-linux-ng-2.13-AES/mount/loop.c +--- util-linux-ng-2.13/mount/loop.c 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/loop.c 2007-09-02 18:05:41.000000000 +0300 +@@ -0,0 +1,221 @@ ++/* ++ * loop.c ++ * ++ * Copyright 2003 by Jari Ruusu. ++ * Redistribution of this file is permitted under the GNU GPL ++ */ ++ ++/* collection of loop helper functions used by losetup, mount and swapon */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include "loop.h" ++ ++static void convert_info_to_info64(struct loop_info *info, struct loop_info64 *info64) ++{ ++ memset(info64, 0, sizeof(*info64)); ++ info64->lo_number = info->lo_number; ++ info64->lo_device = info->lo_device; ++ info64->lo_inode = info->lo_inode; ++ info64->lo_rdevice = info->lo_rdevice; ++ info64->lo_offset = info->lo_offset; ++ info64->lo_encrypt_type = info->lo_encrypt_type; ++ info64->lo_encrypt_key_size = info->lo_encrypt_key_size; ++ info64->lo_flags = info->lo_flags; ++ info64->lo_init[0] = info->lo_init[0]; ++ info64->lo_init[1] = info->lo_init[1]; ++ info64->lo_sizelimit = 0; ++ if (info->lo_encrypt_type == 18) /* LO_CRYPT_CRYPTOAPI */ ++ memcpy(info64->lo_crypt_name, info->lo_name, sizeof(info64->lo_crypt_name)); ++ else ++ memcpy(info64->lo_file_name, info->lo_name, sizeof(info64->lo_file_name)); ++ memcpy(info64->lo_encrypt_key, info->lo_encrypt_key, sizeof(info64->lo_encrypt_key)); ++} ++ ++static int convert_info64_to_info(struct loop_info64 *info64, struct loop_info *info) ++{ ++ memset(info, 0, sizeof(*info)); ++ info->lo_number = info64->lo_number; ++ info->lo_device = info64->lo_device; ++ info->lo_inode = info64->lo_inode; ++ info->lo_rdevice = info64->lo_rdevice; ++ info->lo_offset = info64->lo_offset; ++ info->lo_encrypt_type = info64->lo_encrypt_type; ++ info->lo_encrypt_key_size = info64->lo_encrypt_key_size; ++ info->lo_flags = info64->lo_flags; ++ info->lo_init[0] = info64->lo_init[0]; ++ info->lo_init[1] = info64->lo_init[1]; ++ if (info->lo_encrypt_type == 18) /* LO_CRYPT_CRYPTOAPI */ ++ memcpy(info->lo_name, info64->lo_crypt_name, sizeof(info->lo_name)); ++ else ++ memcpy(info->lo_name, info64->lo_file_name, sizeof(info->lo_name)); ++ memcpy(info->lo_encrypt_key, info64->lo_encrypt_key, sizeof(info->lo_encrypt_key)); ++ ++ /* error in case values were truncated */ ++ if (info->lo_device != info64->lo_device || ++ info->lo_rdevice != info64->lo_rdevice || ++ info->lo_inode != info64->lo_inode || ++ info->lo_offset != info64->lo_offset || ++ info64->lo_sizelimit) { ++ errno = EOVERFLOW; ++ return -1; ++ } ++ return 0; ++} ++ ++int loop_set_status64_ioctl(int fd, struct loop_info64 *info64) ++{ ++ struct loop_info info; ++ struct loop_info64 tmp; ++ int r; ++ ++ /* ++ * This ugly work around is needed because some ++ * Red Hat kernels are using same ioctl code: ++ * #define LOOP_CHANGE_FD 0x4C04 ++ * vs. ++ * #define LOOP_SET_STATUS64 0x4C04 ++ * that is used by modern loop driver. ++ * ++ * Attempt to detect presense of LOOP_GET_STATUS64 ++ * ioctl before issuing LOOP_SET_STATUS64 ioctl. ++ * Red Hat kernels with above LOOP_CHANGE_FD damage ++ * should return -1 and set errno to EINVAL. ++ */ ++ r = ioctl(fd, LOOP_GET_STATUS64, &tmp); ++ memset(&tmp, 0, sizeof(tmp)); ++ if ((r == 0) || (errno != EINVAL)) { ++ r = ioctl(fd, LOOP_SET_STATUS64, info64); ++ if (!r) ++ return 0; ++ } ++ r = convert_info64_to_info(info64, &info); ++ if (!r) ++ r = ioctl(fd, LOOP_SET_STATUS, &info); ++ ++ /* don't leave copies of encryption key on stack */ ++ memset(&info, 0, sizeof(info)); ++ return r; ++} ++ ++int loop_get_status64_ioctl(int fd, struct loop_info64 *info64) ++{ ++ struct loop_info info; ++ int r; ++ ++ memset(info64, 0, sizeof(*info64)); ++ r = ioctl(fd, LOOP_GET_STATUS64, info64); ++ if (!r) ++ return 0; ++ r = ioctl(fd, LOOP_GET_STATUS, &info); ++ if (!r) ++ convert_info_to_info64(&info, info64); ++ ++ /* don't leave copies of encryption key on stack */ ++ memset(&info, 0, sizeof(info)); ++ return r; ++} ++ ++/* returns: 1=unused 0=busy */ ++int is_unused_loop_device(int fd) ++{ ++ struct loop_info64 info64; ++ struct loop_info info; ++ int r; ++ ++ r = ioctl(fd, LOOP_GET_STATUS64, &info64); ++ memset(&info64, 0, sizeof(info64)); ++ if (!r) ++ return 0; ++ if (errno == ENXIO) ++ return 1; ++ ++ r = ioctl(fd, LOOP_GET_STATUS, &info); ++ memset(&info, 0, sizeof(info)); ++ if (!r) ++ return 0; ++ if (errno == ENXIO) ++ return 1; ++ if (errno == EOVERFLOW) ++ return 0; ++ return 1; ++} ++ ++struct loop_crypt_type_struct loop_crypt_type_tbl[] = { ++ { 0, 0, 0, "no" }, ++ { 0, 0, 0, "none" }, ++ { 1, 0, 0, "xor" }, ++ { 3, 1, 16, "twofish" }, ++ { 4, 1, 16, "blowfish" }, ++ { 7, 1, 16, "serpent" }, ++ { 8, 1, 16, "mars" }, ++ { 11, 3, 16, "rc6" }, ++ { 12, 0, 21, "tripleDES" }, ++ { 12, 0, 24, "3des" }, ++ { 12, 0, 24, "des3_ede" }, ++ { 16, 1, 16, "AES" }, ++ { -1, 0, 0, NULL } ++}; ++ ++static char *getApiName(char *e, int *len) ++{ ++ int x, y, z = 1, q = -1; ++ unsigned char *s; ++ ++ *len = y = 0; ++ s = (unsigned char *)strdup(e); ++ if(!s) ++ return ""; ++ x = strlen((char *)s); ++ while(x > 0) { ++ x--; ++ if(!isdigit(s[x])) ++ break; ++ y += (s[x] - '0') * z; ++ z *= 10; ++ q = x; ++ } ++ while(x >= 0) { ++ s[x] = tolower(s[x]); ++ if(s[x] == '-') ++ s[x] = 0; ++ x--; ++ } ++ if(y >= 40) { ++ if(q >= 0) ++ s[q] = 0; ++ *len = y; ++ } ++ return((char *)s); ++} ++ ++int loop_crypt_type(const char *name, u_int32_t *kbyp, char **apiName) ++{ ++ int i, k; ++ ++ *apiName = getApiName((char *)name, &k); ++ if(k < 0) ++ k = 0; ++ if(k > 256) ++ k = 256; ++ for (i = 0; loop_crypt_type_tbl[i].id != -1; i++) { ++ if (!strcasecmp (*apiName , loop_crypt_type_tbl[i].name)) { ++ *kbyp = k ? k >> 3 : loop_crypt_type_tbl[i].keyBytes; ++ return loop_crypt_type_tbl[i].id; ++ } ++ } ++ *kbyp = 16; /* 128 bits */ ++ return 18; /* LO_CRYPT_CRYPTOAPI */ ++} ++ ++int try_cryptoapi_loop_interface(int fd, struct loop_info64 *loopinfo, char *apiName) ++{ ++ snprintf((char *)loopinfo->lo_crypt_name, sizeof(loopinfo->lo_crypt_name), "%s-cbc", apiName); ++ loopinfo->lo_crypt_name[LO_NAME_SIZE - 1] = 0; ++ loopinfo->lo_encrypt_type = 18; /* LO_CRYPT_CRYPTOAPI */ ++ return(loop_set_status64_ioctl(fd, loopinfo)); ++} +diff -urN util-linux-ng-2.13/mount/loop.h util-linux-ng-2.13-AES/mount/loop.h +--- util-linux-ng-2.13/mount/loop.h 2007-04-25 15:43:38.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/loop.h 2007-09-02 18:05:41.000000000 +0300 +@@ -1,6 +1,20 @@ +-#define LO_CRYPT_NONE 0 +-#define LO_CRYPT_XOR 1 +-#define LO_CRYPT_DES 2 ++/* ++ * loop.h ++ * ++ * Copyright 2003 by Jari Ruusu. ++ * Redistribution of this file is permitted under the GNU GPL ++ */ ++ ++#ifndef _LOOP_H ++#define _LOOP_H 1 ++ ++#include ++#include ++#include ++ ++#define LO_CRYPT_NONE 0 ++#define LO_CRYPT_XOR 1 ++#define LO_CRYPT_DES 2 + #define LO_CRYPT_CRYPTOAPI 18 + + #define LOOP_SET_FD 0x4C00 +@@ -9,17 +23,26 @@ + #define LOOP_GET_STATUS 0x4C03 + #define LOOP_SET_STATUS64 0x4C04 + #define LOOP_GET_STATUS64 0x4C05 ++#define LOOP_MULTI_KEY_SETUP 0x4C4D ++#define LOOP_MULTI_KEY_SETUP_V3 0x4C4E ++#define LOOP_RECOMPUTE_DEV_SIZE 0x4C52 + +-#define LO_NAME_SIZE 64 +-#define LO_KEY_SIZE 32 +- +-#include "my_dev_t.h" ++#define LO_NAME_SIZE 64 ++#define LO_KEY_SIZE 32 + + struct loop_info { + int lo_number; +- my_dev_t lo_device; ++#if LINUX_VERSION_CODE >= 0x20600 ++ __kernel_old_dev_t lo_device; ++#else ++ __kernel_dev_t lo_device; ++#endif + unsigned long lo_inode; +- my_dev_t lo_rdevice; ++#if LINUX_VERSION_CODE >= 0x20600 ++ __kernel_old_dev_t lo_rdevice; ++#else ++ __kernel_dev_t lo_rdevice; ++#endif + int lo_offset; + int lo_encrypt_type; + int lo_encrypt_key_size; +@@ -30,22 +53,35 @@ + char reserved[4]; + }; + +-/* +- * Where to get __u8, __u32, __u64? Let us use unsigned char/int/long long +- * and get punished when someone comes with 128-bit long longs. +- */ + struct loop_info64 { +- unsigned long long lo_device; +- unsigned long long lo_inode; +- unsigned long long lo_rdevice; +- unsigned long long lo_offset; +- unsigned long long lo_sizelimit; /* bytes, 0 == max available */ +- unsigned int lo_number; +- unsigned int lo_encrypt_type; +- unsigned int lo_encrypt_key_size; +- unsigned int lo_flags; +- unsigned char lo_file_name[LO_NAME_SIZE]; +- unsigned char lo_crypt_name[LO_NAME_SIZE]; +- unsigned char lo_encrypt_key[LO_KEY_SIZE]; +- unsigned long long lo_init[2]; ++ u_int64_t lo_device; /* ioctl r/o */ ++ u_int64_t lo_inode; /* ioctl r/o */ ++ u_int64_t lo_rdevice; /* ioctl r/o */ ++ u_int64_t lo_offset; /* bytes */ ++ u_int64_t lo_sizelimit; /* bytes, 0 == max available */ ++ u_int32_t lo_number; /* ioctl r/o */ ++ u_int32_t lo_encrypt_type; ++ u_int32_t lo_encrypt_key_size; /* ioctl w/o */ ++ u_int32_t lo_flags; /* ioctl r/o */ ++ unsigned char lo_file_name[LO_NAME_SIZE]; ++ unsigned char lo_crypt_name[LO_NAME_SIZE]; ++ unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */ ++ u_int64_t lo_init[2]; ++}; ++ ++extern int loop_set_status64_ioctl(int, struct loop_info64 *); ++extern int loop_get_status64_ioctl(int, struct loop_info64 *); ++extern int is_unused_loop_device(int); ++ ++struct loop_crypt_type_struct { ++ short int id; ++ unsigned char flags; /* bit0 = show keybits, bit1 = add '-' before keybits */ ++ unsigned char keyBytes; ++ char *name; + }; ++ ++extern struct loop_crypt_type_struct loop_crypt_type_tbl[]; ++extern int loop_crypt_type(const char *, u_int32_t *, char **); ++extern int try_cryptoapi_loop_interface(int, struct loop_info64 *, char *); ++ ++#endif +diff -urN util-linux-ng-2.13/mount/losetup.8 util-linux-ng-2.13-AES/mount/losetup.8 +--- util-linux-ng-2.13/mount/losetup.8 2007-08-13 13:39:46.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/losetup.8 2007-09-02 18:05:41.000000000 +0300 +@@ -1,45 +1,29 @@ +-.TH LOSETUP 8 "2003-07-01" "Linux" "MAINTENANCE COMMANDS" ++.TH LOSETUP 8 "2007-09-02" "Linux" "MAINTENANCE COMMANDS" + .SH NAME + losetup \- set up and control loop devices + .SH SYNOPSIS + .ad l +-Get info: +-.sp +-.in +5 + .B losetup ++[options] + .I loop_device +-.sp ++file ++.br ++.B losetup -F ++[options] ++.I loop_device ++[file] ++.br ++.B losetup ++[ ++.B \-d ++] ++.I loop_device ++.br + .B losetup -a +-.sp +-.in -5 +-Delete loop: +-.sp +-.in +5 +-.B "losetup \-d" ++.br ++.B losetup ++.B \-R + .I loop_device +-.sp +-.in -5 +-Print name of first unused loop device: +-.sp +-.in +5 +-.B "losetup \-f" +-.sp +-.in -5 +-Setup loop device: +-.sp +-.in +5 +-.B losetup +-.RB [{\-e | \-E} +-.IR encryption ] +-.RB [ \-o +-.IR offset ] +-.RB [ \-p +-.IR pfd ] +-.RB [ \-r ] +-.in +8 +-.RB { \-f [ \-s ] | \fIloop_device\fP } +-.I file +-.in -13 + .ad b + .SH DESCRIPTION + .B losetup +@@ -47,53 +31,135 @@ + to detach loop devices and to query the status of a loop device. If only the + \fIloop_device\fP argument is given, the status of the corresponding loop + device is shown. +- +-.SS "Encryption" +-It is possible to specify transfer functions (for encryption/decryption +-or other purposes) using one of the +-.B \-E +-and +-.B \-e +-options. +-There are two mechanisms to specify the desired encryption: by number +-and by name. If an encryption is specified by number then one +-has to make sure that the Linux kernel knows about the encryption with that +-number, probably by patching the kernel. Standard numbers that are +-always present are 0 (no encryption) and 1 (XOR encryption). +-When the cryptoloop module is loaded (or compiled in), it uses number 18. +-This cryptoloop module will take the name of an arbitrary encryption type +-and finds the module that knows how to perform that encryption. + .SH OPTIONS +-.IP "\fB\-a, \-\-all\fP" +-show status of all loop devices +-.IP "\fB\-d, \-\-detach\fP" +-detach the file or device associated with the specified loop device +-.IP "\fB\-e, \-E, \-\-encryption \fIencryption_type\fP" +-enable data encryption with specified name or number +-.IP "\fB\-f, \-\-find\fP" +-find the first unused loop device. If a +-.I file +-argument is present, use this device. Otherwise, print its name. +-.IP "\fB\-h, \-\-help\fP" +-print help +-.IP "\fB\-o, \-\-offset \fIoffset\fP" ++.IP \fB\-a\fP ++Show status of all loop devices. ++.IP "\fB\-C \fIitercountk\fP" ++Runs hashed passphrase through \fIitercountk\fP thousand iterations of AES-256 ++before using it for loop encryption. This consumes lots of CPU cycles at ++loop setup/mount time but not thereafter. In combination with passphrase seed ++this slows down dictionary attacks. Iteration is not done in multi-key mode. ++.IP "\fB\-d\fP" ++Detach the file or device associated with the specified loop device. ++.IP "\fB\-e \fIencryption\fP" ++.RS ++Enable data encryption. Following encryption types are recognized: ++.IP \fBNONE\fP ++Use no encryption (default). ++.PD 0 ++.IP \fBXOR\fP ++Use a simple XOR encryption. ++.IP "\fBAES128 AES\fP" ++Use 128 bit AES encryption. Passphrase is hashed with SHA-256 by default. ++.IP \fBAES192\fP ++Use 192 bit AES encryption. Passphrase is hashed with SHA-384 by default. ++.IP \fBAES256\fP ++Use 256 bit AES encryption. Passphrase is hashed with SHA-512 by default. ++ ++.IP "\fBtwofish128 twofish160 twofish192 twofish256\fP" ++.IP "\fBblowfish128 blowfish160 blowfish192 blowfish256\fP" ++.IP "\fBserpent128 serpent192 serpent256 mars128 mars192\fP" ++.IP "\fBmars256 rc6-128 rc6-192 rc6-256 tripleDES\fP" ++These encryption types are available if they are enabled in kernel ++configuration or corresponding modules have been loaded to kernel. ++.PD ++.RE ++.IP "\fB\-F\fP" ++Reads and uses mount options from /etc/fstab that match specified loop ++device, including offset= sizelimit= encryption= pseed= phash= loinit= ++gpgkey= gpghome= cleartextkey= itercountk= and looped to device/file name. ++loop= option in /etc/fstab must match specified loop device name. Command ++line options take precedence in case of conflict. ++.IP "\fB\-G \fIgpghome\fP" ++Set gpg home directory to \fIgpghome\fP, so that gpg uses public/private ++keys on \fIgpghome\fP directory. This is only used when gpgkey file needs to ++be decrypted using public/private keys. If gpgkey file is encrypted with ++symmetric cipher only, public/private keys are not required and this option ++has no effect. ++.IP "\fB\-H \fIphash\fP" ++Uses \fIphash\fP function to hash passphrase. Available hash functions are ++sha256, sha384, sha512 and rmd160. unhashed1, unhashed2 and unhashed3 ++functions also exist for compatibility with some obsolete implementations. ++ ++Hash function random does not ask for passphrase but sets up random keys and ++attempts to put loop to multi-key mode. When random/1777 hash type is used ++as mount option for mount program, mount program will create new file system ++on the loop device and construct initial permissions of file system root ++directory from octal digits that follow the slash character. ++ ++WARNING! DO NOT USE RANDOM HASH TYPE ON PARTITION WITH EXISTING IMPORTANT ++DATA ON IT. RANDOM HASH TYPE WILL DESTROY YOUR DATA. ++.IP "\fB\-I \fIloinit\fP" ++Passes a numeric value of \fIloinit\fP as a parameter to cipher transfer ++function. Cipher transfer functions are free to interpret value as they ++want. ++.IP "\fB\-K \fIgpgkey\fP" ++Passphrase is piped to gpg so that gpg can decrypt file \fIgpgkey\fP which ++contains the real keys that are used to encrypt loop device. If decryption ++requires public/private keys and gpghome is not specified, all users use ++their own gpg public/private keys to decrypt \fIgpgkey\fP. Decrypted ++\fIgpgkey\fP should contain 1 or 64 or 65 keys, each key at least 20 ++characters and separated by newline. If decrypted \fIgpgkey\fP contains 64 ++or 65 keys, then loop device is put to multi-key mode. In multi-key mode ++first key is used for first sector, second key for second sector, and so on. ++65th key, if present, is used as additional input to MD5 IV computation. ++.IP "\fB\-o \fIoffset\fP" + The data start is moved \fIoffset\fP bytes into the specified file or +-device. +-.IP "\fB\-p, \-\-pass-fd \fInum\fP" +-Read the passphrase from file descriptor with number +-.I num +-instead of from the terminal +-.IP "\fB\-r, \-\-read-only\fP" +-setup read-only loop device +-.IP "\fB\-s, \-\-show\fP" +-print device name if the +-.I -f +-option and a +-.I file +-argument are present +-.IP "\fB\-v, \-\-verbose\fP" +-verbose mode ++device. Normally offset is included in IV (initialization vector) ++computations. If offset is prefixed with @ character, then offset is not ++included in IV computations. @ prefix functionality may not be supported on ++some older kernels and/or loop drivers. ++.IP "\fB\-p \fIpasswdfd\fP" ++Read the passphrase from file descriptor \fIpasswdfd\fP instead of the ++terminal. If -K option is not being used (no gpg key file), then losetup ++attempts to read 65 keys from \fIpasswdfd\fP, each key at least 20 ++characters and separated by newline. If losetup successfully reads 64 or 65 ++keys, then loop device is put to multi-key mode. If losetup encounters ++end-of-file before 64 keys are read, then only first key is used in ++single-key mode. ++ ++echo SecretPassphraseHere | losetup -p0 -K foo.gpg -e AES128 ... + ++In above example, losetup reads passphrase from file descriptor 0 (stdin). ++.IP "\fB\-P \fIcleartextkey\fP" ++Read the passphrase from file \fIcleartextkey\fP instead of the ++terminal. If -K option is not being used (no gpg key file), then losetup ++attempts to read 65 keys from \fIcleartextkey\fP, each key at least 20 ++characters and separated by newline. If losetup successfully reads 64 or 65 ++keys, then loop device is put to multi-key mode. If losetup encounters ++end-of-file before 64 keys are read, then only first key is used in ++single-key mode. If both -p and -P options are used, then -p option takes ++precedence. These are equivalent: ++ ++losetup -p3 -K foo.gpg -e AES128 ... 3/etc/fskey9.gpg ++losetup -e AES128 -K /etc/fskey9.gpg /dev/loop0 /file ++mkfs -t ext2 /dev/loop0 ++mount -t ext2 /dev/loop0 /mnt + ... +-# umount /dev/loop0 +-# losetup -d /dev/loop0 +-.fi +-.LP +-If you are using the loadable module you may remove the module with +-the command +-.IP +-# rmmod loop +-.LP ++umount /dev/loop0 ++losetup -d /dev/loop0 + .fi + .SH RESTRICTION +-DES encryption is painfully slow. On the other hand, XOR is terribly weak. +- +-Cryptoloop is deprecated in favor of dm-crypt. For more details see +-.B cryptsetup(8). +-.SH AVAILABILITY +-The losetup command is part of the util-linux-ng package and is available from +-ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/. +-.\" .SH AUTHORS +-.\" .nf +-.\" Original version: Theodore Ts'o +-.\" Original DES by: Eric Young +-.\" .fi ++XOR encryption is terribly weak. ++.SH AUTHORS ++.nf ++Original version: Theodore Ts'o ++AES support: Jari Ruusu ++.fi +diff -urN util-linux-ng-2.13/mount/loumount.c util-linux-ng-2.13-AES/mount/loumount.c +--- util-linux-ng-2.13/mount/loumount.c 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/loumount.c 2007-09-02 18:05:42.000000000 +0300 +@@ -0,0 +1,60 @@ ++/* ++ * loumount.c ++ * ++ * This code was extracted to separate file from lomount.c so that umount ++ * program doesn't have to link with all loop related setup code ++ */ ++ ++#define LOOPMAJOR 7 ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "loop.h" ++#include "lomount.h" ++#include "xstrncpy.h" ++#include "nls.h" ++ ++int ++is_loop_device (const char *device) { ++ struct stat statbuf; ++ ++ return (stat(device, &statbuf) == 0 && ++ S_ISBLK(statbuf.st_mode) && ++ major(statbuf.st_rdev) == LOOPMAJOR); ++} ++ ++int ++del_loop (const char *device) { ++ int fd; ++ ++ if ((fd = open (device, O_RDONLY)) < 0) { ++ int errsv = errno; ++ fprintf(stderr, _("loop: can't delete device %s: %s\n"), ++ device, strerror (errsv)); ++ return 1; ++ } ++ if (ioctl (fd, LOOP_CLR_FD, 0) < 0) { ++ perror ("ioctl: LOOP_CLR_FD"); ++ return 1; ++ } ++ close (fd); ++ if (verbose > 1) ++ printf(_("del_loop(%s): success\n"), device); ++ return 0; ++} +diff -urN util-linux-ng-2.13/mount/mount.8 util-linux-ng-2.13-AES/mount/mount.8 +--- util-linux-ng-2.13/mount/mount.8 2007-08-27 16:00:34.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/mount.8 2007-09-02 18:05:42.000000000 +0300 +@@ -316,6 +316,16 @@ + .B \-v + Verbose mode. + .TP ++.B \-p "\fIpasswdfd\fP" ++If the mount requires a passphrase to be entered, read it from file ++descriptor \fIpasswdfd\fP instead of from the terminal. If mount uses ++encrypted loop device and gpgkey= mount option is not being used (no gpg key ++file), then mount attempts to read 65 keys from \fIpasswdfd\fP, each key at ++least 20 characters and separated by newline. If mount successfully reads 64 ++or 65 keys, then loop device is put to multi-key mode. If mount encounters ++end-of-file before 64 keys are read, then only first key is used in ++single-key mode. ++.TP + .B \-a + Mount all filesystems (of the given types) mentioned in + .IR fstab . +@@ -365,12 +375,6 @@ + .I /etc + is on a read-only file system. + .TP +-.BI \-p " num" +-In case of a loop mount with encryption, read the passphrase from +-file descriptor +-.I num +-instead of from the terminal. +-.TP + .B \-s + Tolerate sloppy mount options rather than failing. This will ignore + mount options not supported by a filesystem type. Not all filesystems +@@ -1999,13 +2003,19 @@ + and then mount this device on + .IR /mnt . + +-This type of mount knows about three options, namely +-.BR loop ", " offset " and " encryption , ++This type of mount knows about 11 options, namely ++.BR loop ", " offset ", " sizelimit ", " encryption ", " pseed ", " phash ", " loinit ", " gpgkey ", " gpghome ", " cleartextkey " and " itercountk + that are really options to + .BR \%losetup (8). + (These options can be used in addition to those specific + to the filesystem type.) + ++If the mount requires a passphrase, you will be prompted for one unless you ++specify a file descriptor to read from instead with the ++.BR \-p ++command line option, or specify a file name with ++.BR cleartextkey ++mount option. + If no explicit loop device is mentioned + (but just an option `\fB\-o loop\fP' is given), then + .B mount +diff -urN util-linux-ng-2.13/mount/mount.c util-linux-ng-2.13-AES/mount/mount.c +--- util-linux-ng-2.13/mount/mount.c 2007-08-27 16:00:34.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/mount.c 2007-09-02 18:05:42.000000000 +0300 +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -90,9 +91,6 @@ + /* True if ruid != euid. */ + static int suid = 0; + +-/* Contains the fd to read the passphrase from, if any. */ +-static int pfd = -1; +- + /* Map from -o and fstab option strings to the flag argument to mount(2). */ + struct opt_map { + const char *opt; /* option name */ +@@ -185,7 +183,7 @@ + { NULL, 0, 0, 0 } + }; + +-static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption, ++static const char *opt_loopdev, *opt_vfstype, + *opt_speed, *opt_comment, *opt_uhelper; + + static int mounted (const char *spec0, const char *node0); +@@ -199,8 +197,16 @@ + } string_opt_map[] = { + { "loop=", 0, &opt_loopdev }, + { "vfs=", 1, &opt_vfstype }, +- { "offset=", 0, &opt_offset }, +- { "encryption=", 0, &opt_encryption }, ++ { "pseed=", 1, (const char **)&passSeedString }, ++ { "phash=", 0, (const char **)&passHashFuncName }, ++ { "loinit=", 0, (const char **)&loInitValue }, ++ { "gpgkey=", 0, (const char **)&gpgKeyFile }, ++ { "gpghome=", 0, (const char **)&gpgHomeDir }, ++ { "cleartextkey=", 0, (const char **)&clearTextKeyFile }, ++ { "itercountk=", 1, (const char **)&passIterThousands }, ++ { "offset=", 0, (const char **)&loopOffsetBytes }, ++ { "sizelimit=", 0, (const char **)&loopSizeBytes }, ++ { "encryption=", 0, (const char **)&loopEncryptionType }, + { "speed=", 0, &opt_speed }, + { "comment=", 1, &opt_comment }, + { "uhelper=", 0, &opt_uhelper }, +@@ -826,9 +832,8 @@ + + static int + loop_check(const char **spec, const char **type, int *flags, +- int *loop, const char **loopdev, const char **loopfile) { ++ int *loop, const char **loopdev, const char **loopfile, unsigned int *AutoChmodPtr) { + int looptype; +- unsigned long long offset; + + /* + * In the case of a loop mount, either type is of the form lo@/dev/loop5 +@@ -853,7 +858,7 @@ + *type = opt_vfstype; + } + +- *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption); ++ *loop = ((*flags & MS_LOOP) || *loopdev || loopOffsetBytes || loopSizeBytes || loopEncryptionType); + *loopfile = *spec; + + if (*loop) { +@@ -861,12 +866,14 @@ + if (fake) { + if (verbose) + printf(_("mount: skipping the setup of a loop device\n")); ++ } else if (*loopdev && is_loop_active(*loopdev, *loopfile)) { ++ if (verbose) ++ printf(_("mount: skipping the setup of a loop device\n")); ++ *spec = *loopdev; + } else { + int loopro = (*flags & MS_RDONLY); + int res; + +- offset = opt_offset ? strtoull(opt_offset, NULL, 0) : 0; +- + do { + if (!*loopdev || !**loopdev) + *loopdev = find_unused_loop_device(); +@@ -875,19 +882,18 @@ + if (verbose) + printf(_("mount: going to use the loop device %s\n"), *loopdev); + +- if ((res = set_loop(*loopdev, *loopfile, offset, +- opt_encryption, pfd, &loopro))) { ++ if ((res = set_loop(*loopdev, *loopfile, &loopro, type, AutoChmodPtr, !opt_loopdev ? 2 : 1))) { + if (res == 2) { + /* loop dev has been grabbed by some other process, + try again, if not given explicitly */ + if (!opt_loopdev) { + if (verbose) +- printf(_("mount: stolen loop=%s ...trying again\n"), *loopdev); ++ printf(_("mount: loop=%s not available ...trying again\n"), *loopdev); + my_free(*loopdev); + *loopdev = NULL; + continue; + } +- error(_("mount: stolen loop=%s"), *loopdev); ++ error(_("mount: loop=%s not available"), *loopdev); + return EX_FAIL; + + } else { +@@ -960,14 +966,6 @@ + } + + static void +-set_pfd(char *s) { +- if (!isdigit(*s)) +- die(EX_USAGE, +- _("mount: argument to -p or --pass-fd must be a number")); +- pfd = atoi(optarg); +-} +- +-static void + cdrom_setspeed(const char *spec) { + #define CDROM_SELECT_SPEED 0x5322 /* Set the CD-ROM speed */ + if (opt_speed) { +@@ -1006,6 +1004,7 @@ + const char *opts, *spec, *node, *types; + char *user = 0; + int loop = 0; ++ unsigned int LoopMountAutomaticChmod = 0; + const char *loopdev = 0, *loopfile = 0; + struct stat statbuf; + +@@ -1052,7 +1051,7 @@ + * stale assignments of files to loop devices. Nasty when used for + * encryption. + */ +- res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile); ++ res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile, &LoopMountAutomaticChmod); + if (res) + goto out; + } +@@ -1075,7 +1074,16 @@ + if (!fake) { + mnt5_res = guess_fstype_and_mount (spec, node, &types, flags & ~MS_NOSYS, + mount_opts, &special, &status); +- ++ if(!mnt5_res && LoopMountAutomaticChmod && (getuid() == 0)) { ++ /* ++ * If loop was set up using random keys and new file system ++ * was created on the loop device, initial permissions for ++ * file system root directory need to be set here. ++ */ ++ if(chmod(node, LoopMountAutomaticChmod)) { ++ error (_("Error: encrypted file system chmod() failed")); ++ } ++ } + if (special) { + block_signals (SIG_UNBLOCK); + res = status; +@@ -1836,8 +1844,8 @@ + case 'O': /* with -t: mount only if (not) opt */ + test_opts = append_opt(test_opts, optarg, NULL); + break; +- case 'p': /* fd on which to read passwd */ +- set_pfd(optarg); ++ case 'p': /* read passphrase from given fd */ ++ passFDnumber = optarg; + break; + case 'r': /* mount readonly */ + readonly = 1; +diff -urN util-linux-ng-2.13/mount/rmd160.c util-linux-ng-2.13-AES/mount/rmd160.c +--- util-linux-ng-2.13/mount/rmd160.c 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/rmd160.c 2007-09-02 18:05:42.000000000 +0300 +@@ -0,0 +1,532 @@ ++/* rmd160.c - RIPE-MD160 ++ * Copyright (C) 1998 Free Software Foundation, Inc. ++ */ ++ ++/* This file was part of GnuPG. Modified for use within the Linux ++ * mount utility by Marc Mutz . None of this code is ++ * by myself. I just removed everything that you don't need when all ++ * you want to do is to use rmd160_hash_buffer(). ++ * My comments are marked with (mm). */ ++ ++/* GnuPG 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. ++ * ++ * GnuPG 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 */ ++ ++#include /* (mm) for memcpy */ ++#include /* (mm) for BIG_ENDIAN and BYTE_ORDER */ ++#include "rmd160.h" ++ ++/* (mm) these are used by the original GnuPG file. In order to modify ++ * that file not too much, we keep the notations. maybe it would be ++ * better to include linux/types.h and typedef __u32 to u32 and __u8 ++ * to byte? */ ++typedef unsigned int u32; /* taken from e.g. util-linux's minix.h */ ++typedef unsigned char byte; ++ ++typedef struct { ++ u32 h0,h1,h2,h3,h4; ++ u32 nblocks; ++ byte buf[64]; ++ int count; ++} RMD160_CONTEXT; ++ ++/**************** ++ * Rotate a 32 bit integer by n bytes ++ */ ++#if defined(__GNUC__) && defined(__i386__) ++static inline u32 ++rol( u32 x, int n) ++{ ++ __asm__("roll %%cl,%0" ++ :"=r" (x) ++ :"0" (x),"c" (n)); ++ return x; ++} ++#else ++ #define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) ) ++#endif ++ ++/********************************* ++ * RIPEMD-160 is not patented, see (as of 25.10.97) ++ * http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html ++ * Note that the code uses Little Endian byteorder, which is good for ++ * 386 etc, but we must add some conversion when used on a big endian box. ++ * ++ * ++ * Pseudo-code for RIPEMD-160 ++ * ++ * RIPEMD-160 is an iterative hash function that operates on 32-bit words. ++ * The round function takes as input a 5-word chaining variable and a 16-word ++ * message block and maps this to a new chaining variable. All operations are ++ * defined on 32-bit words. Padding is identical to that of MD4. ++ * ++ * ++ * RIPEMD-160: definitions ++ * ++ * ++ * nonlinear functions at bit level: exor, mux, -, mux, - ++ * ++ * f(j, x, y, z) = x XOR y XOR z (0 <= j <= 15) ++ * f(j, x, y, z) = (x AND y) OR (NOT(x) AND z) (16 <= j <= 31) ++ * f(j, x, y, z) = (x OR NOT(y)) XOR z (32 <= j <= 47) ++ * f(j, x, y, z) = (x AND z) OR (y AND NOT(z)) (48 <= j <= 63) ++ * f(j, x, y, z) = x XOR (y OR NOT(z)) (64 <= j <= 79) ++ * ++ * ++ * added constants (hexadecimal) ++ * ++ * K(j) = 0x00000000 (0 <= j <= 15) ++ * K(j) = 0x5A827999 (16 <= j <= 31) int(2**30 x sqrt(2)) ++ * K(j) = 0x6ED9EBA1 (32 <= j <= 47) int(2**30 x sqrt(3)) ++ * K(j) = 0x8F1BBCDC (48 <= j <= 63) int(2**30 x sqrt(5)) ++ * K(j) = 0xA953FD4E (64 <= j <= 79) int(2**30 x sqrt(7)) ++ * K'(j) = 0x50A28BE6 (0 <= j <= 15) int(2**30 x cbrt(2)) ++ * K'(j) = 0x5C4DD124 (16 <= j <= 31) int(2**30 x cbrt(3)) ++ * K'(j) = 0x6D703EF3 (32 <= j <= 47) int(2**30 x cbrt(5)) ++ * K'(j) = 0x7A6D76E9 (48 <= j <= 63) int(2**30 x cbrt(7)) ++ * K'(j) = 0x00000000 (64 <= j <= 79) ++ * ++ * ++ * selection of message word ++ * ++ * r(j) = j (0 <= j <= 15) ++ * r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8 ++ * r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12 ++ * r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2 ++ * r(64..79) = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 ++ * r0(0..15) = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12 ++ * r0(16..31)= 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2 ++ * r0(32..47)= 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13 ++ * r0(48..63)= 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14 ++ * r0(64..79)= 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 ++ * ++ * ++ * amount for rotate left (rol) ++ * ++ * s(0..15) = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8 ++ * s(16..31) = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12 ++ * s(32..47) = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5 ++ * s(48..63) = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12 ++ * s(64..79) = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ++ * s'(0..15) = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6 ++ * s'(16..31)= 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11 ++ * s'(32..47)= 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5 ++ * s'(48..63)= 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8 ++ * s'(64..79)= 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ++ * ++ * ++ * initial value (hexadecimal) ++ * ++ * h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476; ++ * h4 = 0xC3D2E1F0; ++ * ++ * ++ * RIPEMD-160: pseudo-code ++ * ++ * It is assumed that the message after padding consists of t 16-word blocks ++ * that will be denoted with X[i][j], with 0 <= i <= t-1 and 0 <= j <= 15. ++ * The symbol [+] denotes addition modulo 2**32 and rol_s denotes cyclic left ++ * shift (rotate) over s positions. ++ * ++ * ++ * for i := 0 to t-1 { ++ * A := h0; B := h1; C := h2; D = h3; E = h4; ++ * A' := h0; B' := h1; C' := h2; D' = h3; E' = h4; ++ * for j := 0 to 79 { ++ * T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E; ++ * A := E; E := D; D := rol_10(C); C := B; B := T; ++ * T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)] ++ [+] K'(j)) [+] E'; ++ * A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T; ++ * } ++ * T := h1 [+] C [+] D'; h1 := h2 [+] D [+] E'; h2 := h3 [+] E [+] A'; ++ * h3 := h4 [+] A [+] B'; h4 := h0 [+] B [+] C'; h0 := T; ++ * } ++ */ ++ ++/* Some examples: ++ * "" 9c1185a5c5e9fc54612808977ee8f548b2258d31 ++ * "a" 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe ++ * "abc" 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc ++ * "message digest" 5d0689ef49d2fae572b881b123a85ffa21595f36 ++ * "a...z" f71c27109c692c1b56bbdceb5b9d2865b3708dbc ++ * "abcdbcde...nopq" 12a053384a9c0c88e405a06c27dcf49ada62eb2b ++ * "A...Za...z0...9" b0e20b6e3116640286ed3a87a5713079b21f5189 ++ * 8 times "1234567890" 9b752e45573d4b39f4dbd3323cab82bf63326bfb ++ * 1 million times "a" 52783243c1697bdbe16d37f97f68f08325dc1528 ++ */ ++ ++ ++static void ++rmd160_init( RMD160_CONTEXT *hd ) ++{ ++ hd->h0 = 0x67452301; ++ hd->h1 = 0xEFCDAB89; ++ hd->h2 = 0x98BADCFE; ++ hd->h3 = 0x10325476; ++ hd->h4 = 0xC3D2E1F0; ++ hd->nblocks = 0; ++ hd->count = 0; ++} ++ ++ ++ ++/**************** ++ * Transform the message X which consists of 16 32-bit-words ++ */ ++static void ++transform( RMD160_CONTEXT *hd, byte *data ) ++{ ++ u32 a,b,c,d,e,aa,bb,cc,dd,ee,t; ++ #if BYTE_ORDER == BIG_ENDIAN ++ u32 x[16]; ++ { int i; ++ byte *p2, *p1; ++ for(i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 ) { ++ p2[3] = *p1++; ++ p2[2] = *p1++; ++ p2[1] = *p1++; ++ p2[0] = *p1++; ++ } ++ } ++ #else ++ #if 0 ++ u32 *x =(u32*)data; ++ #else ++ /* this version is better because it is always aligned; ++ * The performance penalty on a 586-100 is about 6% which ++ * is acceptable - because the data is more local it might ++ * also be possible that this is faster on some machines. ++ * This function (when compiled with -02 on gcc 2.7.2) ++ * executes on a 586-100 (39.73 bogomips) at about 1900kb/sec; ++ * [measured with a 4MB data and "gpgm --print-md rmd160"] */ ++ u32 x[16]; ++ memcpy( x, data, 64 ); ++ #endif ++ #endif ++ ++ ++#define K0 0x00000000 ++#define K1 0x5A827999 ++#define K2 0x6ED9EBA1 ++#define K3 0x8F1BBCDC ++#define K4 0xA953FD4E ++#define KK0 0x50A28BE6 ++#define KK1 0x5C4DD124 ++#define KK2 0x6D703EF3 ++#define KK3 0x7A6D76E9 ++#define KK4 0x00000000 ++#define F0(x,y,z) ( (x) ^ (y) ^ (z) ) ++#define F1(x,y,z) ( ((x) & (y)) | (~(x) & (z)) ) ++#define F2(x,y,z) ( ((x) | ~(y)) ^ (z) ) ++#define F3(x,y,z) ( ((x) & (z)) | ((y) & ~(z)) ) ++#define F4(x,y,z) ( (x) ^ ((y) | ~(z)) ) ++#define R(a,b,c,d,e,f,k,r,s) do { t = a + f(b,c,d) + k + x[r]; \ ++ a = rol(t,s) + e; \ ++ c = rol(c,10); \ ++ } while(0) ++ ++ /* left lane */ ++ a = hd->h0; ++ b = hd->h1; ++ c = hd->h2; ++ d = hd->h3; ++ e = hd->h4; ++ R( a, b, c, d, e, F0, K0, 0, 11 ); ++ R( e, a, b, c, d, F0, K0, 1, 14 ); ++ R( d, e, a, b, c, F0, K0, 2, 15 ); ++ R( c, d, e, a, b, F0, K0, 3, 12 ); ++ R( b, c, d, e, a, F0, K0, 4, 5 ); ++ R( a, b, c, d, e, F0, K0, 5, 8 ); ++ R( e, a, b, c, d, F0, K0, 6, 7 ); ++ R( d, e, a, b, c, F0, K0, 7, 9 ); ++ R( c, d, e, a, b, F0, K0, 8, 11 ); ++ R( b, c, d, e, a, F0, K0, 9, 13 ); ++ R( a, b, c, d, e, F0, K0, 10, 14 ); ++ R( e, a, b, c, d, F0, K0, 11, 15 ); ++ R( d, e, a, b, c, F0, K0, 12, 6 ); ++ R( c, d, e, a, b, F0, K0, 13, 7 ); ++ R( b, c, d, e, a, F0, K0, 14, 9 ); ++ R( a, b, c, d, e, F0, K0, 15, 8 ); ++ R( e, a, b, c, d, F1, K1, 7, 7 ); ++ R( d, e, a, b, c, F1, K1, 4, 6 ); ++ R( c, d, e, a, b, F1, K1, 13, 8 ); ++ R( b, c, d, e, a, F1, K1, 1, 13 ); ++ R( a, b, c, d, e, F1, K1, 10, 11 ); ++ R( e, a, b, c, d, F1, K1, 6, 9 ); ++ R( d, e, a, b, c, F1, K1, 15, 7 ); ++ R( c, d, e, a, b, F1, K1, 3, 15 ); ++ R( b, c, d, e, a, F1, K1, 12, 7 ); ++ R( a, b, c, d, e, F1, K1, 0, 12 ); ++ R( e, a, b, c, d, F1, K1, 9, 15 ); ++ R( d, e, a, b, c, F1, K1, 5, 9 ); ++ R( c, d, e, a, b, F1, K1, 2, 11 ); ++ R( b, c, d, e, a, F1, K1, 14, 7 ); ++ R( a, b, c, d, e, F1, K1, 11, 13 ); ++ R( e, a, b, c, d, F1, K1, 8, 12 ); ++ R( d, e, a, b, c, F2, K2, 3, 11 ); ++ R( c, d, e, a, b, F2, K2, 10, 13 ); ++ R( b, c, d, e, a, F2, K2, 14, 6 ); ++ R( a, b, c, d, e, F2, K2, 4, 7 ); ++ R( e, a, b, c, d, F2, K2, 9, 14 ); ++ R( d, e, a, b, c, F2, K2, 15, 9 ); ++ R( c, d, e, a, b, F2, K2, 8, 13 ); ++ R( b, c, d, e, a, F2, K2, 1, 15 ); ++ R( a, b, c, d, e, F2, K2, 2, 14 ); ++ R( e, a, b, c, d, F2, K2, 7, 8 ); ++ R( d, e, a, b, c, F2, K2, 0, 13 ); ++ R( c, d, e, a, b, F2, K2, 6, 6 ); ++ R( b, c, d, e, a, F2, K2, 13, 5 ); ++ R( a, b, c, d, e, F2, K2, 11, 12 ); ++ R( e, a, b, c, d, F2, K2, 5, 7 ); ++ R( d, e, a, b, c, F2, K2, 12, 5 ); ++ R( c, d, e, a, b, F3, K3, 1, 11 ); ++ R( b, c, d, e, a, F3, K3, 9, 12 ); ++ R( a, b, c, d, e, F3, K3, 11, 14 ); ++ R( e, a, b, c, d, F3, K3, 10, 15 ); ++ R( d, e, a, b, c, F3, K3, 0, 14 ); ++ R( c, d, e, a, b, F3, K3, 8, 15 ); ++ R( b, c, d, e, a, F3, K3, 12, 9 ); ++ R( a, b, c, d, e, F3, K3, 4, 8 ); ++ R( e, a, b, c, d, F3, K3, 13, 9 ); ++ R( d, e, a, b, c, F3, K3, 3, 14 ); ++ R( c, d, e, a, b, F3, K3, 7, 5 ); ++ R( b, c, d, e, a, F3, K3, 15, 6 ); ++ R( a, b, c, d, e, F3, K3, 14, 8 ); ++ R( e, a, b, c, d, F3, K3, 5, 6 ); ++ R( d, e, a, b, c, F3, K3, 6, 5 ); ++ R( c, d, e, a, b, F3, K3, 2, 12 ); ++ R( b, c, d, e, a, F4, K4, 4, 9 ); ++ R( a, b, c, d, e, F4, K4, 0, 15 ); ++ R( e, a, b, c, d, F4, K4, 5, 5 ); ++ R( d, e, a, b, c, F4, K4, 9, 11 ); ++ R( c, d, e, a, b, F4, K4, 7, 6 ); ++ R( b, c, d, e, a, F4, K4, 12, 8 ); ++ R( a, b, c, d, e, F4, K4, 2, 13 ); ++ R( e, a, b, c, d, F4, K4, 10, 12 ); ++ R( d, e, a, b, c, F4, K4, 14, 5 ); ++ R( c, d, e, a, b, F4, K4, 1, 12 ); ++ R( b, c, d, e, a, F4, K4, 3, 13 ); ++ R( a, b, c, d, e, F4, K4, 8, 14 ); ++ R( e, a, b, c, d, F4, K4, 11, 11 ); ++ R( d, e, a, b, c, F4, K4, 6, 8 ); ++ R( c, d, e, a, b, F4, K4, 15, 5 ); ++ R( b, c, d, e, a, F4, K4, 13, 6 ); ++ ++ aa = a; bb = b; cc = c; dd = d; ee = e; ++ ++ /* right lane */ ++ a = hd->h0; ++ b = hd->h1; ++ c = hd->h2; ++ d = hd->h3; ++ e = hd->h4; ++ R( a, b, c, d, e, F4, KK0, 5, 8); ++ R( e, a, b, c, d, F4, KK0, 14, 9); ++ R( d, e, a, b, c, F4, KK0, 7, 9); ++ R( c, d, e, a, b, F4, KK0, 0, 11); ++ R( b, c, d, e, a, F4, KK0, 9, 13); ++ R( a, b, c, d, e, F4, KK0, 2, 15); ++ R( e, a, b, c, d, F4, KK0, 11, 15); ++ R( d, e, a, b, c, F4, KK0, 4, 5); ++ R( c, d, e, a, b, F4, KK0, 13, 7); ++ R( b, c, d, e, a, F4, KK0, 6, 7); ++ R( a, b, c, d, e, F4, KK0, 15, 8); ++ R( e, a, b, c, d, F4, KK0, 8, 11); ++ R( d, e, a, b, c, F4, KK0, 1, 14); ++ R( c, d, e, a, b, F4, KK0, 10, 14); ++ R( b, c, d, e, a, F4, KK0, 3, 12); ++ R( a, b, c, d, e, F4, KK0, 12, 6); ++ R( e, a, b, c, d, F3, KK1, 6, 9); ++ R( d, e, a, b, c, F3, KK1, 11, 13); ++ R( c, d, e, a, b, F3, KK1, 3, 15); ++ R( b, c, d, e, a, F3, KK1, 7, 7); ++ R( a, b, c, d, e, F3, KK1, 0, 12); ++ R( e, a, b, c, d, F3, KK1, 13, 8); ++ R( d, e, a, b, c, F3, KK1, 5, 9); ++ R( c, d, e, a, b, F3, KK1, 10, 11); ++ R( b, c, d, e, a, F3, KK1, 14, 7); ++ R( a, b, c, d, e, F3, KK1, 15, 7); ++ R( e, a, b, c, d, F3, KK1, 8, 12); ++ R( d, e, a, b, c, F3, KK1, 12, 7); ++ R( c, d, e, a, b, F3, KK1, 4, 6); ++ R( b, c, d, e, a, F3, KK1, 9, 15); ++ R( a, b, c, d, e, F3, KK1, 1, 13); ++ R( e, a, b, c, d, F3, KK1, 2, 11); ++ R( d, e, a, b, c, F2, KK2, 15, 9); ++ R( c, d, e, a, b, F2, KK2, 5, 7); ++ R( b, c, d, e, a, F2, KK2, 1, 15); ++ R( a, b, c, d, e, F2, KK2, 3, 11); ++ R( e, a, b, c, d, F2, KK2, 7, 8); ++ R( d, e, a, b, c, F2, KK2, 14, 6); ++ R( c, d, e, a, b, F2, KK2, 6, 6); ++ R( b, c, d, e, a, F2, KK2, 9, 14); ++ R( a, b, c, d, e, F2, KK2, 11, 12); ++ R( e, a, b, c, d, F2, KK2, 8, 13); ++ R( d, e, a, b, c, F2, KK2, 12, 5); ++ R( c, d, e, a, b, F2, KK2, 2, 14); ++ R( b, c, d, e, a, F2, KK2, 10, 13); ++ R( a, b, c, d, e, F2, KK2, 0, 13); ++ R( e, a, b, c, d, F2, KK2, 4, 7); ++ R( d, e, a, b, c, F2, KK2, 13, 5); ++ R( c, d, e, a, b, F1, KK3, 8, 15); ++ R( b, c, d, e, a, F1, KK3, 6, 5); ++ R( a, b, c, d, e, F1, KK3, 4, 8); ++ R( e, a, b, c, d, F1, KK3, 1, 11); ++ R( d, e, a, b, c, F1, KK3, 3, 14); ++ R( c, d, e, a, b, F1, KK3, 11, 14); ++ R( b, c, d, e, a, F1, KK3, 15, 6); ++ R( a, b, c, d, e, F1, KK3, 0, 14); ++ R( e, a, b, c, d, F1, KK3, 5, 6); ++ R( d, e, a, b, c, F1, KK3, 12, 9); ++ R( c, d, e, a, b, F1, KK3, 2, 12); ++ R( b, c, d, e, a, F1, KK3, 13, 9); ++ R( a, b, c, d, e, F1, KK3, 9, 12); ++ R( e, a, b, c, d, F1, KK3, 7, 5); ++ R( d, e, a, b, c, F1, KK3, 10, 15); ++ R( c, d, e, a, b, F1, KK3, 14, 8); ++ R( b, c, d, e, a, F0, KK4, 12, 8); ++ R( a, b, c, d, e, F0, KK4, 15, 5); ++ R( e, a, b, c, d, F0, KK4, 10, 12); ++ R( d, e, a, b, c, F0, KK4, 4, 9); ++ R( c, d, e, a, b, F0, KK4, 1, 12); ++ R( b, c, d, e, a, F0, KK4, 5, 5); ++ R( a, b, c, d, e, F0, KK4, 8, 14); ++ R( e, a, b, c, d, F0, KK4, 7, 6); ++ R( d, e, a, b, c, F0, KK4, 6, 8); ++ R( c, d, e, a, b, F0, KK4, 2, 13); ++ R( b, c, d, e, a, F0, KK4, 13, 6); ++ R( a, b, c, d, e, F0, KK4, 14, 5); ++ R( e, a, b, c, d, F0, KK4, 0, 15); ++ R( d, e, a, b, c, F0, KK4, 3, 13); ++ R( c, d, e, a, b, F0, KK4, 9, 11); ++ R( b, c, d, e, a, F0, KK4, 11, 11); ++ ++ ++ t = hd->h1 + d + cc; ++ hd->h1 = hd->h2 + e + dd; ++ hd->h2 = hd->h3 + a + ee; ++ hd->h3 = hd->h4 + b + aa; ++ hd->h4 = hd->h0 + c + bb; ++ hd->h0 = t; ++} ++ ++ ++/* Update the message digest with the contents ++ * of INBUF with length INLEN. ++ */ ++static void ++rmd160_write( RMD160_CONTEXT *hd, byte *inbuf, size_t inlen) ++{ ++ if( hd->count == 64 ) { /* flush the buffer */ ++ transform( hd, hd->buf ); ++ hd->count = 0; ++ hd->nblocks++; ++ } ++ if( !inbuf ) ++ return; ++ if( hd->count ) { ++ for( ; inlen && hd->count < 64; inlen-- ) ++ hd->buf[hd->count++] = *inbuf++; ++ rmd160_write( hd, NULL, 0 ); ++ if( !inlen ) ++ return; ++ } ++ ++ while( inlen >= 64 ) { ++ transform( hd, inbuf ); ++ hd->count = 0; ++ hd->nblocks++; ++ inlen -= 64; ++ inbuf += 64; ++ } ++ for( ; inlen && hd->count < 64; inlen-- ) ++ hd->buf[hd->count++] = *inbuf++; ++} ++ ++/* The routine terminates the computation ++ */ ++ ++static void ++rmd160_final( RMD160_CONTEXT *hd ) ++{ ++ u32 t, msb, lsb; ++ byte *p; ++ ++ rmd160_write(hd, NULL, 0); /* flush */; ++ ++ msb = 0; ++ t = hd->nblocks; ++ if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */ ++ msb++; ++ msb += t >> 26; ++ t = lsb; ++ if( (lsb = t + hd->count) < t ) /* add the count */ ++ msb++; ++ t = lsb; ++ if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */ ++ msb++; ++ msb += t >> 29; ++ ++ if( hd->count < 56 ) { /* enough room */ ++ hd->buf[hd->count++] = 0x80; /* pad */ ++ while( hd->count < 56 ) ++ hd->buf[hd->count++] = 0; /* pad */ ++ } ++ else { /* need one extra block */ ++ hd->buf[hd->count++] = 0x80; /* pad character */ ++ while( hd->count < 64 ) ++ hd->buf[hd->count++] = 0; ++ rmd160_write(hd, NULL, 0); /* flush */; ++ memset(hd->buf, 0, 56 ); /* fill next block with zeroes */ ++ } ++ /* append the 64 bit count */ ++ hd->buf[56] = lsb ; ++ hd->buf[57] = lsb >> 8; ++ hd->buf[58] = lsb >> 16; ++ hd->buf[59] = lsb >> 24; ++ hd->buf[60] = msb ; ++ hd->buf[61] = msb >> 8; ++ hd->buf[62] = msb >> 16; ++ hd->buf[63] = msb >> 24; ++ transform( hd, hd->buf ); ++ ++ p = hd->buf; ++ #if BYTE_ORDER == BIG_ENDIAN ++ #define X(a) do { *p++ = hd->h##a ; *p++ = hd->h##a >> 8; \ ++ *p++ = hd->h##a >> 16; *p++ = hd->h##a >> 24; } while(0) ++ #else /* little endian */ ++ #define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0) ++ #endif ++ X(0); ++ X(1); ++ X(2); ++ X(3); ++ X(4); ++ #undef X ++} ++ ++/**************** ++ * Shortcut functions which puts the hash value of the supplied buffer ++ * into outbuf which must have a size of 20 bytes. ++ */ ++void ++rmd160_hash_buffer( char *outbuf, const char *buffer, size_t length ) ++{ ++ RMD160_CONTEXT hd; ++ ++ rmd160_init( &hd ); ++ rmd160_write( &hd, (byte*)buffer, length ); ++ rmd160_final( &hd ); ++ memcpy( outbuf, hd.buf, 20 ); ++} +diff -urN util-linux-ng-2.13/mount/rmd160.h util-linux-ng-2.13-AES/mount/rmd160.h +--- util-linux-ng-2.13/mount/rmd160.h 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/rmd160.h 2007-09-02 18:05:42.000000000 +0300 +@@ -0,0 +1,9 @@ ++#ifndef RMD160_H ++#define RMD160_H ++ ++void ++rmd160_hash_buffer( char *outbuf, const char *buffer, size_t length ); ++ ++#endif /*RMD160_H*/ ++ ++ +diff -urN util-linux-ng-2.13/mount/sha512.c util-linux-ng-2.13-AES/mount/sha512.c +--- util-linux-ng-2.13/mount/sha512.c 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/sha512.c 2007-09-02 18:05:42.000000000 +0300 +@@ -0,0 +1,432 @@ ++/* ++ * sha512.c ++ * ++ * Written by Jari Ruusu, April 16 2001 ++ * ++ * Copyright 2001 by Jari Ruusu. ++ * Redistribution of this file is permitted under the GNU Public License. ++ */ ++ ++#include ++#include ++#include "sha512.h" ++ ++/* Define one or more of these. If none is defined, you get all of them */ ++#if !defined(SHA256_NEEDED)&&!defined(SHA512_NEEDED)&&!defined(SHA384_NEEDED) ++# define SHA256_NEEDED 1 ++# define SHA512_NEEDED 1 ++# define SHA384_NEEDED 1 ++#endif ++ ++#if defined(SHA256_NEEDED) ++static const u_int32_t sha256_hashInit[8] = { ++ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, ++ 0x1f83d9ab, 0x5be0cd19 ++}; ++static const u_int32_t sha256_K[64] = { ++ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, ++ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, ++ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, ++ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, ++ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, ++ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, ++ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, ++ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, ++ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, ++ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, ++ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ++}; ++#endif ++ ++#if defined(SHA512_NEEDED) ++static const u_int64_t sha512_hashInit[8] = { ++ 0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, ++ 0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, ++ 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL ++}; ++#endif ++ ++#if defined(SHA384_NEEDED) ++static const u_int64_t sha384_hashInit[8] = { ++ 0xcbbb9d5dc1059ed8ULL, 0x629a292a367cd507ULL, 0x9159015a3070dd17ULL, ++ 0x152fecd8f70e5939ULL, 0x67332667ffc00b31ULL, 0x8eb44a8768581511ULL, ++ 0xdb0c2e0d64f98fa7ULL, 0x47b5481dbefa4fa4ULL ++}; ++#endif ++ ++#if defined(SHA512_NEEDED) || defined(SHA384_NEEDED) ++static const u_int64_t sha512_K[80] = { ++ 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, ++ 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, ++ 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, 0xd807aa98a3030242ULL, ++ 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, ++ 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, ++ 0xc19bf174cf692694ULL, 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, ++ 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL, ++ 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, ++ 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, ++ 0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, ++ 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, 0x27b70a8546d22ffcULL, ++ 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, ++ 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, ++ 0x92722c851482353bULL, 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, ++ 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL, ++ 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, ++ 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, ++ 0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, ++ 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, 0x748f82ee5defb2fcULL, ++ 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, ++ 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, ++ 0xc67178f2e372532bULL, 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, ++ 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL, ++ 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, ++ 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, ++ 0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, ++ 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL ++}; ++#endif ++ ++#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) ++#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) ++#define R(x,y) ((y) >> (x)) ++ ++#if defined(SHA256_NEEDED) ++void sha256_init(sha256_context *ctx) ++{ ++ memcpy(&ctx->sha_H[0], &sha256_hashInit[0], sizeof(ctx->sha_H)); ++ ctx->sha_blocks = 0; ++ ctx->sha_bufCnt = 0; ++} ++ ++#define S(x,y) (((y) >> (x)) | ((y) << (32 - (x)))) ++#define uSig0(x) ((S(2,(x))) ^ (S(13,(x))) ^ (S(22,(x)))) ++#define uSig1(x) ((S(6,(x))) ^ (S(11,(x))) ^ (S(25,(x)))) ++#define lSig0(x) ((S(7,(x))) ^ (S(18,(x))) ^ (R(3,(x)))) ++#define lSig1(x) ((S(17,(x))) ^ (S(19,(x))) ^ (R(10,(x)))) ++ ++static void sha256_transform(sha256_context *ctx, unsigned char *datap) ++{ ++ register int j; ++ u_int32_t a, b, c, d, e, f, g, h; ++ u_int32_t T1, T2, W[64], Wm2, Wm15; ++ ++ /* read the data, big endian byte order */ ++ j = 0; ++ do { ++ W[j] = (((u_int32_t)(datap[0]))<<24) | (((u_int32_t)(datap[1]))<<16) | ++ (((u_int32_t)(datap[2]))<<8 ) | ((u_int32_t)(datap[3])); ++ datap += 4; ++ } while(++j < 16); ++ ++ /* initialize variables a...h */ ++ a = ctx->sha_H[0]; ++ b = ctx->sha_H[1]; ++ c = ctx->sha_H[2]; ++ d = ctx->sha_H[3]; ++ e = ctx->sha_H[4]; ++ f = ctx->sha_H[5]; ++ g = ctx->sha_H[6]; ++ h = ctx->sha_H[7]; ++ ++ /* apply compression function */ ++ j = 0; ++ do { ++ if(j >= 16) { ++ Wm2 = W[j - 2]; ++ Wm15 = W[j - 15]; ++ W[j] = lSig1(Wm2) + W[j - 7] + lSig0(Wm15) + W[j - 16]; ++ } ++ T1 = h + uSig1(e) + Ch(e,f,g) + sha256_K[j] + W[j]; ++ T2 = uSig0(a) + Maj(a,b,c); ++ h = g; g = f; f = e; ++ e = d + T1; ++ d = c; c = b; b = a; ++ a = T1 + T2; ++ } while(++j < 64); ++ ++ /* compute intermediate hash value */ ++ ctx->sha_H[0] += a; ++ ctx->sha_H[1] += b; ++ ctx->sha_H[2] += c; ++ ctx->sha_H[3] += d; ++ ctx->sha_H[4] += e; ++ ctx->sha_H[5] += f; ++ ctx->sha_H[6] += g; ++ ctx->sha_H[7] += h; ++ ++ ctx->sha_blocks++; ++} ++ ++void sha256_write(sha256_context *ctx, unsigned char *datap, int length) ++{ ++ while(length > 0) { ++ if(!ctx->sha_bufCnt) { ++ while(length >= sizeof(ctx->sha_out)) { ++ sha256_transform(ctx, datap); ++ datap += sizeof(ctx->sha_out); ++ length -= sizeof(ctx->sha_out); ++ } ++ if(!length) return; ++ } ++ ctx->sha_out[ctx->sha_bufCnt] = *datap++; ++ length--; ++ if(++ctx->sha_bufCnt == sizeof(ctx->sha_out)) { ++ sha256_transform(ctx, &ctx->sha_out[0]); ++ ctx->sha_bufCnt = 0; ++ } ++ } ++} ++ ++void sha256_final(sha256_context *ctx) ++{ ++ register int j; ++ u_int64_t bitLength; ++ u_int32_t i; ++ unsigned char padByte, *datap; ++ ++ bitLength = (ctx->sha_blocks << 9) | (ctx->sha_bufCnt << 3); ++ padByte = 0x80; ++ sha256_write(ctx, &padByte, 1); ++ ++ /* pad extra space with zeroes */ ++ padByte = 0; ++ while(ctx->sha_bufCnt != 56) { ++ sha256_write(ctx, &padByte, 1); ++ } ++ ++ /* write bit length, big endian byte order */ ++ ctx->sha_out[56] = bitLength >> 56; ++ ctx->sha_out[57] = bitLength >> 48; ++ ctx->sha_out[58] = bitLength >> 40; ++ ctx->sha_out[59] = bitLength >> 32; ++ ctx->sha_out[60] = bitLength >> 24; ++ ctx->sha_out[61] = bitLength >> 16; ++ ctx->sha_out[62] = bitLength >> 8; ++ ctx->sha_out[63] = bitLength; ++ sha256_transform(ctx, &ctx->sha_out[0]); ++ ++ /* return results in ctx->sha_out[0...31] */ ++ datap = &ctx->sha_out[0]; ++ j = 0; ++ do { ++ i = ctx->sha_H[j]; ++ datap[0] = i >> 24; ++ datap[1] = i >> 16; ++ datap[2] = i >> 8; ++ datap[3] = i; ++ datap += 4; ++ } while(++j < 8); ++ ++ /* clear sensitive information */ ++ memset(&ctx->sha_out[32], 0, sizeof(sha256_context) - 32); ++} ++ ++void sha256_hash_buffer(unsigned char *ib, int ile, unsigned char *ob, int ole) ++{ ++ sha256_context ctx; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 32) ole = 32; ++ sha256_init(&ctx); ++ sha256_write(&ctx, ib, ile); ++ sha256_final(&ctx); ++ memcpy(ob, &ctx.sha_out[0], ole); ++ memset(&ctx, 0, sizeof(ctx)); ++} ++ ++#endif ++ ++#if defined(SHA512_NEEDED) ++void sha512_init(sha512_context *ctx) ++{ ++ memcpy(&ctx->sha_H[0], &sha512_hashInit[0], sizeof(ctx->sha_H)); ++ ctx->sha_blocks = 0; ++ ctx->sha_blocksMSB = 0; ++ ctx->sha_bufCnt = 0; ++} ++#endif ++ ++#if defined(SHA512_NEEDED) || defined(SHA384_NEEDED) ++#undef S ++#undef uSig0 ++#undef uSig1 ++#undef lSig0 ++#undef lSig1 ++#define S(x,y) (((y) >> (x)) | ((y) << (64 - (x)))) ++#define uSig0(x) ((S(28,(x))) ^ (S(34,(x))) ^ (S(39,(x)))) ++#define uSig1(x) ((S(14,(x))) ^ (S(18,(x))) ^ (S(41,(x)))) ++#define lSig0(x) ((S(1,(x))) ^ (S(8,(x))) ^ (R(7,(x)))) ++#define lSig1(x) ((S(19,(x))) ^ (S(61,(x))) ^ (R(6,(x)))) ++ ++static void sha512_transform(sha512_context *ctx, unsigned char *datap) ++{ ++ register int j; ++ u_int64_t a, b, c, d, e, f, g, h; ++ u_int64_t T1, T2, W[80], Wm2, Wm15; ++ ++ /* read the data, big endian byte order */ ++ j = 0; ++ do { ++ W[j] = (((u_int64_t)(datap[0]))<<56) | (((u_int64_t)(datap[1]))<<48) | ++ (((u_int64_t)(datap[2]))<<40) | (((u_int64_t)(datap[3]))<<32) | ++ (((u_int64_t)(datap[4]))<<24) | (((u_int64_t)(datap[5]))<<16) | ++ (((u_int64_t)(datap[6]))<<8 ) | ((u_int64_t)(datap[7])); ++ datap += 8; ++ } while(++j < 16); ++ ++ /* initialize variables a...h */ ++ a = ctx->sha_H[0]; ++ b = ctx->sha_H[1]; ++ c = ctx->sha_H[2]; ++ d = ctx->sha_H[3]; ++ e = ctx->sha_H[4]; ++ f = ctx->sha_H[5]; ++ g = ctx->sha_H[6]; ++ h = ctx->sha_H[7]; ++ ++ /* apply compression function */ ++ j = 0; ++ do { ++ if(j >= 16) { ++ Wm2 = W[j - 2]; ++ Wm15 = W[j - 15]; ++ W[j] = lSig1(Wm2) + W[j - 7] + lSig0(Wm15) + W[j - 16]; ++ } ++ T1 = h + uSig1(e) + Ch(e,f,g) + sha512_K[j] + W[j]; ++ T2 = uSig0(a) + Maj(a,b,c); ++ h = g; g = f; f = e; ++ e = d + T1; ++ d = c; c = b; b = a; ++ a = T1 + T2; ++ } while(++j < 80); ++ ++ /* compute intermediate hash value */ ++ ctx->sha_H[0] += a; ++ ctx->sha_H[1] += b; ++ ctx->sha_H[2] += c; ++ ctx->sha_H[3] += d; ++ ctx->sha_H[4] += e; ++ ctx->sha_H[5] += f; ++ ctx->sha_H[6] += g; ++ ctx->sha_H[7] += h; ++ ++ ctx->sha_blocks++; ++ if(!ctx->sha_blocks) ctx->sha_blocksMSB++; ++} ++ ++void sha512_write(sha512_context *ctx, unsigned char *datap, int length) ++{ ++ while(length > 0) { ++ if(!ctx->sha_bufCnt) { ++ while(length >= sizeof(ctx->sha_out)) { ++ sha512_transform(ctx, datap); ++ datap += sizeof(ctx->sha_out); ++ length -= sizeof(ctx->sha_out); ++ } ++ if(!length) return; ++ } ++ ctx->sha_out[ctx->sha_bufCnt] = *datap++; ++ length--; ++ if(++ctx->sha_bufCnt == sizeof(ctx->sha_out)) { ++ sha512_transform(ctx, &ctx->sha_out[0]); ++ ctx->sha_bufCnt = 0; ++ } ++ } ++} ++ ++void sha512_final(sha512_context *ctx) ++{ ++ register int j; ++ u_int64_t bitLength, bitLengthMSB; ++ u_int64_t i; ++ unsigned char padByte, *datap; ++ ++ bitLength = (ctx->sha_blocks << 10) | (ctx->sha_bufCnt << 3); ++ bitLengthMSB = (ctx->sha_blocksMSB << 10) | (ctx->sha_blocks >> 54); ++ padByte = 0x80; ++ sha512_write(ctx, &padByte, 1); ++ ++ /* pad extra space with zeroes */ ++ padByte = 0; ++ while(ctx->sha_bufCnt != 112) { ++ sha512_write(ctx, &padByte, 1); ++ } ++ ++ /* write bit length, big endian byte order */ ++ ctx->sha_out[112] = bitLengthMSB >> 56; ++ ctx->sha_out[113] = bitLengthMSB >> 48; ++ ctx->sha_out[114] = bitLengthMSB >> 40; ++ ctx->sha_out[115] = bitLengthMSB >> 32; ++ ctx->sha_out[116] = bitLengthMSB >> 24; ++ ctx->sha_out[117] = bitLengthMSB >> 16; ++ ctx->sha_out[118] = bitLengthMSB >> 8; ++ ctx->sha_out[119] = bitLengthMSB; ++ ctx->sha_out[120] = bitLength >> 56; ++ ctx->sha_out[121] = bitLength >> 48; ++ ctx->sha_out[122] = bitLength >> 40; ++ ctx->sha_out[123] = bitLength >> 32; ++ ctx->sha_out[124] = bitLength >> 24; ++ ctx->sha_out[125] = bitLength >> 16; ++ ctx->sha_out[126] = bitLength >> 8; ++ ctx->sha_out[127] = bitLength; ++ sha512_transform(ctx, &ctx->sha_out[0]); ++ ++ /* return results in ctx->sha_out[0...63] */ ++ datap = &ctx->sha_out[0]; ++ j = 0; ++ do { ++ i = ctx->sha_H[j]; ++ datap[0] = i >> 56; ++ datap[1] = i >> 48; ++ datap[2] = i >> 40; ++ datap[3] = i >> 32; ++ datap[4] = i >> 24; ++ datap[5] = i >> 16; ++ datap[6] = i >> 8; ++ datap[7] = i; ++ datap += 8; ++ } while(++j < 8); ++ ++ /* clear sensitive information */ ++ memset(&ctx->sha_out[64], 0, sizeof(sha512_context) - 64); ++} ++ ++void sha512_hash_buffer(unsigned char *ib, int ile, unsigned char *ob, int ole) ++{ ++ sha512_context ctx; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 64) ole = 64; ++ sha512_init(&ctx); ++ sha512_write(&ctx, ib, ile); ++ sha512_final(&ctx); ++ memcpy(ob, &ctx.sha_out[0], ole); ++ memset(&ctx, 0, sizeof(ctx)); ++} ++#endif ++ ++#if defined(SHA384_NEEDED) ++void sha384_init(sha512_context *ctx) ++{ ++ memcpy(&ctx->sha_H[0], &sha384_hashInit[0], sizeof(ctx->sha_H)); ++ ctx->sha_blocks = 0; ++ ctx->sha_blocksMSB = 0; ++ ctx->sha_bufCnt = 0; ++} ++ ++void sha384_hash_buffer(unsigned char *ib, int ile, unsigned char *ob, int ole) ++{ ++ sha512_context ctx; ++ ++ if(ole < 1) return; ++ memset(ob, 0, ole); ++ if(ole > 48) ole = 48; ++ sha384_init(&ctx); ++ sha512_write(&ctx, ib, ile); ++ sha512_final(&ctx); ++ memcpy(ob, &ctx.sha_out[0], ole); ++ memset(&ctx, 0, sizeof(ctx)); ++} ++#endif +diff -urN util-linux-ng-2.13/mount/sha512.h util-linux-ng-2.13-AES/mount/sha512.h +--- util-linux-ng-2.13/mount/sha512.h 1970-01-01 02:00:00.000000000 +0200 ++++ util-linux-ng-2.13-AES/mount/sha512.h 2007-09-02 18:05:42.000000000 +0300 +@@ -0,0 +1,45 @@ ++/* ++ * sha512.h ++ * ++ * Written by Jari Ruusu, April 16 2001 ++ * ++ * Copyright 2001 by Jari Ruusu. ++ * Redistribution of this file is permitted under the GNU Public License. ++ */ ++ ++#include ++ ++typedef struct { ++ unsigned char sha_out[64]; /* results are here, bytes 0...31 */ ++ u_int32_t sha_H[8]; ++ u_int64_t sha_blocks; ++ int sha_bufCnt; ++} sha256_context; ++ ++typedef struct { ++ unsigned char sha_out[128]; /* results are here, bytes 0...63 */ ++ u_int64_t sha_H[8]; ++ u_int64_t sha_blocks; ++ u_int64_t sha_blocksMSB; ++ int sha_bufCnt; ++} sha512_context; ++ ++/* no sha384_context, use sha512_context */ ++ ++/* 256 bit hash, provides 128 bits of security against collision attacks */ ++extern void sha256_init(sha256_context *); ++extern void sha256_write(sha256_context *, unsigned char *, int); ++extern void sha256_final(sha256_context *); ++extern void sha256_hash_buffer(unsigned char *, int, unsigned char *, int); ++ ++/* 512 bit hash, provides 256 bits of security against collision attacks */ ++extern void sha512_init(sha512_context *); ++extern void sha512_write(sha512_context *, unsigned char *, int); ++extern void sha512_final(sha512_context *); ++extern void sha512_hash_buffer(unsigned char *, int, unsigned char *, int); ++ ++/* 384 bit hash, provides 192 bits of security against collision attacks */ ++extern void sha384_init(sha512_context *); ++/* no sha384_write(), use sha512_write() */ ++/* no sha384_final(), use sha512_final(), result in ctx->sha_out[0...47] */ ++extern void sha384_hash_buffer(unsigned char *, int, unsigned char *, int); +diff -urN util-linux-ng-2.13/mount/swapon.8 util-linux-ng-2.13-AES/mount/swapon.8 +--- util-linux-ng-2.13/mount/swapon.8 2007-08-13 13:49:22.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/swapon.8 2007-09-02 18:05:42.000000000 +0300 +@@ -142,6 +142,22 @@ + .I /proc/swaps + or + .IR /etc/fstab ). ++.PP ++If ++.I loop=/dev/loop? ++and ++.I encryption=AES128 ++options are present in ++.I /etc/fstab ++then ++.BR "swapon -a" ++will set up loop devices using random keys, run ++.BR "mkswap" ++on them, and enable encrypted swap on specified loop devices. Encrypted loop ++devices are set up with page size offset so that unencrypted swap signatures ++on first page of swap devices are not touched. ++.BR "swapoff -a" ++will tear down such loop devices. + .SH NOTE + You should not use + .B swapon +diff -urN util-linux-ng-2.13/mount/swapon.c util-linux-ng-2.13-AES/mount/swapon.c +--- util-linux-ng-2.13/mount/swapon.c 2007-08-27 16:00:34.000000000 +0300 ++++ util-linux-ng-2.13-AES/mount/swapon.c 2007-09-02 18:05:42.000000000 +0300 +@@ -1,5 +1,18 @@ + /* + * A swapon(8)/swapoff(8) for Linux 0.99. ++ * swapon.c,v 1.1.1.1 1993/11/18 08:40:51 jrs Exp ++ * ++ * 1997-02-xx ++ * - added '-s' (summary option) ++ * 1999-02-22 Arkadiusz Mi�kiewicz ++ * - added Native Language Support ++ * 1999-03-21 Arnaldo Carvalho de Melo ++ * - fixed strerr(errno) in gettext calls ++ * 2001-03-22 Erik Troan ++ * - added -e option for -a ++ * - -a shouldn't try to add swaps that are already enabled ++ * 2002-04-14 Jari Ruusu ++ * - added encrypted swap support + */ + #include + #include +@@ -8,7 +21,14 @@ + #include + #include + #include ++#include ++#include + #include ++#include ++#include ++#include ++#include ++#include + #include + #include "xmalloc.h" + #include "swap_constants.h" +@@ -16,6 +36,9 @@ + #include "fsprobe.h" + #include "realpath.h" + #include "mount_paths.h" ++#include "loop.h" ++#include "xstrncpy.h" ++#include "sha512.h" + + #ifdef HAVE_SYS_SWAP_H + # include +@@ -288,6 +311,262 @@ + } + + static int ++prepare_encrypted_swap(const char *partition, char *loop, char *encryption) ++{ ++ int x, y, fd, ffd; ++ int page_size; ++ sha512_context s; ++ unsigned char b[4096], multiKeyBits[65][32]; ++ char *a[10], *apiName; ++ struct loop_info64 loopinfo; ++ FILE *f; ++ ++ /* ++ * Some sanity checks ++ */ ++ if(strlen(partition) < 1) { ++ fprintf(stderr, _("swapon: invalid swap device name\n")); ++ return 0; ++ } ++ if(strlen(loop) < 1) { ++ fprintf(stderr, _("swapon: invalid loop device name\n")); ++ return 0; ++ } ++ if(strlen(encryption) < 1) { ++ fprintf(stderr, _("swapon: invalid encryption type\n")); ++ return 0; ++ } ++ ++ /* ++ * Abort if loop device does not exist or is already in use ++ */ ++ if((fd = open(loop, O_RDWR)) == -1) { ++ fprintf(stderr, _("swapon: unable to open loop device %s\n"), loop); ++ return 0; ++ } ++ if(is_unused_loop_device(fd) == 0) { ++ fprintf(stderr, _("swapon: loop device %s already in use\n"), loop); ++ goto errout0; ++ } ++ ++ /* ++ * Compute SHA-512 over first 40 KB of old swap data. This data ++ * is mostly unknown data encrypted using unknown key. SHA-512 hash ++ * output is then used as entropy for new swap encryption key. ++ */ ++ if(!(f = fopen(partition, "r+"))) { ++ fprintf(stderr, _("swapon: unable to open swap device %s\n"), partition); ++ goto errout0; ++ } ++ page_size = getpagesize(); ++ fseek(f, (long)page_size, SEEK_SET); ++ sha512_init(&s); ++ for(x = 0; x < 10; x++) { ++ if(fread(&b[0], sizeof(b), 1, f) != 1) break; ++ sha512_write(&s, &b[0], sizeof(b)); ++ } ++ sha512_final(&s); ++ ++ /* ++ * Overwrite 40 KB of old swap data 20 times so that recovering ++ * SHA-512 output beyond this point is difficult and expensive. ++ */ ++ for(y = 0; y < 20; y++) { ++ int z; ++ struct { ++ struct timeval tv; ++ unsigned char h[64]; ++ int x,y,z; ++ } j; ++ if(fseek(f, (long)page_size, SEEK_SET)) break; ++ memcpy(&j.h[0], &s.sha_out[0], 64); ++ gettimeofday(&j.tv, NULL); ++ j.y = y; ++ for(x = 0; x < 10; x++) { ++ j.x = x; ++ for(z = 0; z < sizeof(b); z += 64) { ++ j.z = z; ++ sha512_hash_buffer((unsigned char *)&j, sizeof(j), &b[z], 64); ++ } ++ if(fwrite(&b[0], sizeof(b), 1, f) != 1) break; ++ } ++ memset(&j, 0, sizeof(j)); ++ if(fflush(f)) break; ++ if(fsync(fileno(f))) break; ++ } ++ fclose(f); ++ ++ /* ++ * Use all 512 bits of hash output ++ */ ++ memcpy(&b[0], &s.sha_out[0], 64); ++ memset(&s, 0, sizeof(s)); ++ ++ /* ++ * Read 32 bytes of random entropy from kernel's random ++ * number generator. This code may be executed early on startup ++ * scripts and amount of random entropy may be non-existent. ++ * SHA-512 of old swap data is used as workaround for missing ++ * entropy in kernel's random number generator. ++ */ ++ if(!(f = fopen("/dev/urandom", "r"))) { ++ fprintf(stderr, _("swapon: unable to open /dev/urandom\n")); ++ goto errout0; ++ } ++ fread(&b[64], 32, 1, f); ++ ++ /* ++ * Set up struct loop_info64 ++ */ ++ if((ffd = open(partition, O_RDWR)) < 0) { ++ fprintf(stderr, _("swapon: unable to open swap device %s\n"), partition); ++ goto errout1; ++ } ++ memset(&loopinfo, 0, sizeof(loopinfo)); ++ xstrncpy((char *)loopinfo.lo_file_name, partition, LO_NAME_SIZE); ++ loopinfo.lo_encrypt_type = loop_crypt_type(encryption, &loopinfo.lo_encrypt_key_size, &apiName); ++ if(loopinfo.lo_encrypt_type <= 1) { ++ fprintf(stderr, _("swapon: unsupported swap encryption type %s\n"), encryption); ++errout2: ++ close(ffd); ++errout1: ++ fclose(f); ++errout0: ++ close(fd); ++ memset(&loopinfo.lo_encrypt_key[0], 0, sizeof(loopinfo.lo_encrypt_key)); ++ memset(&multiKeyBits[0][0], 0, sizeof(multiKeyBits)); ++ return 0; ++ } ++ loopinfo.lo_offset = page_size; ++ /* single-key hash */ ++ sha512_hash_buffer(&b[0], 64+32, &loopinfo.lo_encrypt_key[0], sizeof(loopinfo.lo_encrypt_key)); ++ /* multi-key hash */ ++ x = 0; ++ while(x < 65) { ++ fread(&b[64+32], 16, 1, f); ++ sha512_hash_buffer(&b[0], 64+32+16, &multiKeyBits[x][0], 32); ++ x++; ++ } ++ ++ /* ++ * Try to set up single-key loop ++ */ ++ if(ioctl(fd, LOOP_SET_FD, ffd) < 0) { ++ fprintf(stderr, _("swapon: LOOP_SET_FD failed\n")); ++ goto errout2; ++ } ++ if ((loopinfo.lo_encrypt_type == 18) || (loop_set_status64_ioctl(fd, &loopinfo) < 0)) { ++ if(try_cryptoapi_loop_interface(fd, &loopinfo, apiName) < 0) { ++ fprintf(stderr, _("swapon: LOOP_SET_STATUS failed\n")); ++ ioctl(fd, LOOP_CLR_FD, 0); ++ goto errout2; ++ } ++ } ++ ++ /* ++ * Try to put loop to multi-key v3 or v2 mode. ++ * If this fails, then let it operate in single-key mode. ++ */ ++ if(ioctl(fd, LOOP_MULTI_KEY_SETUP_V3, &multiKeyBits[0][0]) < 0) { ++ ioctl(fd, LOOP_MULTI_KEY_SETUP, &multiKeyBits[0][0]); ++ } ++ ++ /* ++ * Loop is now set up. Clean up the keys. ++ */ ++ memset(&loopinfo.lo_encrypt_key[0], 0, sizeof(loopinfo.lo_encrypt_key)); ++ memset(&multiKeyBits[0][0], 0, sizeof(multiKeyBits)); ++ close(ffd); ++ fclose(f); ++ close(fd); ++ ++ /* ++ * Write 40 KB of zeroes to loop device. That same data is written ++ * to underlying partition in encrypted form. This is done to guarantee ++ * that next time encrypted swap is initialized, the SHA-512 hash will ++ * be different. And, if encrypted swap data writes over this data, that's ++ * even better. ++ */ ++ if(!(f = fopen(loop, "r+"))) { ++ fprintf(stderr, _("swapon: unable to open loop device %s\n"), loop); ++ return 0; ++ } ++ memset(&b[0], 0, sizeof(b)); ++ for(x = 0; x < 10; x++) { ++ if(fwrite(&b[0], sizeof(b), 1, f) != 1) break; ++ } ++ fflush(f); ++ fsync(fileno(f)); ++ fclose(f); ++ sync(); ++ ++ /* ++ * Run mkswap on loop device so that kernel understands it as swap. ++ * Redirect stderr to /dev/null and ignore exit value. ++ */ ++ if(!(x = fork())) { ++ if((x = open("/dev/null", O_WRONLY)) >= 0) { ++ dup2(x, 2); ++ close(x); ++ } ++ a[0] = "mkswap"; ++ a[1] = loop; ++ a[2] = 0; ++ execvp(a[0], &a[0]); ++ execv("/sbin/mkswap", &a[0]); ++ /* error to stdout, stderr is directed to /dev/null */ ++ printf(_("swapon: unable to execute mkswap\n")); ++ exit(1); ++ } ++ if(x == -1) { ++ fprintf(stderr, _("swapon: fork failed\n")); ++ return 0; ++ } ++ waitpid(x, &y, 0); ++ sync(); ++ ++ return 1; ++} ++ ++static void ++shutdown_encrypted_swap(char *loop) ++{ ++ int fd; ++ struct stat statbuf; ++ struct loop_info64 loopinfo; ++ unsigned char b[32]; ++ FILE *f; ++ ++ if(stat(loop, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) { ++ if((fd = open(loop, O_RDWR)) >= 0) { ++ if(!loop_get_status64_ioctl(fd, &loopinfo)) { ++ /* ++ * Read 32 bytes of random data from kernel's random ++ * number generator and write that to loop device. ++ * This preserves some of kernel's random entropy ++ * to next activation of encrypted swap on this ++ * partition. ++ */ ++ if((f = fopen("/dev/urandom", "r")) != NULL) { ++ fread(&b[0], 32, 1, f); ++ fclose(f); ++ write(fd, &b[0], 32); ++ fsync(fd); ++ } ++ } ++ close(fd); ++ } ++ sync(); ++ if((fd = open(loop, O_RDONLY)) >= 0) { ++ if(!loop_get_status64_ioctl(fd, &loopinfo)) { ++ ioctl(fd, LOOP_CLR_FD, 0); ++ } ++ close(fd); ++ } ++ } ++} ++ ++static int + swapon_all(void) { + FILE *fp; + struct mntent *fstab; +@@ -307,6 +586,8 @@ + const char *special; + int skip = 0; + int pri = priority; ++ char *opt, *opts; ++ char *loop = NULL, *encryption = NULL; + + if (!streq(fstab->mnt_type, MNTTYPE_SWAP)) + continue; +@@ -315,23 +596,39 @@ + if (!special) + continue; + +- if (!is_in_proc_swaps(special) && +- (!ifexists || !access(special, R_OK))) { +- /* parse mount options; */ +- char *opt, *opts = strdup(fstab->mnt_opts); +- +- for (opt = strtok(opts, ","); opt != NULL; +- opt = strtok(NULL, ",")) { +- if (strncmp(opt, "pri=", 4) == 0) +- pri = atoi(opt+4); +- if (strcmp(opt, "noauto") == 0) +- skip = 1; ++ /* parse mount options; */ ++ opts = strdup(fstab->mnt_opts); ++ if (!opts) { ++ fprintf(stderr, "not enough memory"); ++ exit(1); ++ } ++ for (opt = strtok(opts, ","); opt != NULL; opt = strtok(NULL, ",")) { ++ if (strncmp(opt, "pri=", 4) == 0) ++ pri = atoi(opt+4); ++ if (strcmp(opt, "noauto") == 0) ++ skip = 1; ++ if (strncmp(opt, "loop=", 5) == 0) ++ loop = opt + 5; ++ if (strncmp(opt, "encryption=", 11) == 0) ++ encryption = opt + 11; ++ } ++ if(skip) ++ continue; ++ if (loop && encryption) { ++ if(!is_in_proc_swaps(loop) && (!ifexists || !access(special, R_OK))) { ++ if (!prepare_encrypted_swap(special, loop, encryption)) { ++ status |= -1; ++ continue; ++ } ++ status |= do_swapon(loop, pri, CANONIC); + } +- if (!skip) +- status |= do_swapon(special, pri, CANONIC); ++ continue; ++ } ++ if (!is_in_proc_swaps(special) && (!ifexists || !access(special, R_OK))) { ++ status |= do_swapon(special, pri, CANONIC); + } + } +- fclose(fp); ++ endmntent(fp); + + return status; + } +@@ -494,19 +791,51 @@ + exit(2); + } + while ((fstab = getmntent(fp)) != NULL) { ++ const char *orig_special = fstab->mnt_fsname; + const char *special; ++ int skip = 0; ++ char *opt, *opts; ++ char *loop = NULL, *encryption = NULL; + + if (!streq(fstab->mnt_type, MNTTYPE_SWAP)) + continue; + +- special = fsprobe_get_devname(fstab->mnt_fsname); ++ special = fsprobe_get_devname(orig_special); + if (!special) + continue; + +- if (!is_in_proc_swaps(special)) ++ /* parse mount options; */ ++ opts = strdup(fstab->mnt_opts); ++ if (!opts) { ++ fprintf(stderr, "not enough memory"); ++ exit(1); ++ } ++ for (opt = strtok(opts, ","); opt != NULL; opt = strtok(NULL, ",")) { ++ if (strcmp(opt, "noauto") == 0) ++ skip = 1; ++ if (strncmp(opt, "loop=", 5) == 0) ++ loop = opt + 5; ++ if (strncmp(opt, "encryption=", 11) == 0) ++ encryption = opt + 11; ++ } ++ if (loop && encryption) { ++ if (!is_in_proc_swaps(loop)) { ++ if(skip) ++ continue; ++ do_swapoff(loop, QUIET, CANONIC); ++ } ++ shutdown_encrypted_swap(loop); ++ continue; ++ } ++ if(skip) ++ continue; ++ if (!is_in_proc_swaps(special)) { + do_swapoff(special, QUIET, CANONIC); ++ } ++ ++ + } +- fclose(fp); ++ endmntent(fp); + } + + return status; diff --git a/abs/core/util-linux-ng/util-linux-ng.install b/abs/core/util-linux-ng/util-linux-ng.install new file mode 100644 index 0000000..22d38db --- /dev/null +++ b/abs/core/util-linux-ng/util-linux-ng.install @@ -0,0 +1,21 @@ +infodir=/usr/share/info +filelist=(ipc.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + usr/bin/install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + diff --git a/abs/core/v4l-dvb/PKGBUILD b/abs/core/v4l-dvb/PKGBUILD index 8db31a2..64286d7 100644 --- a/abs/core/v4l-dvb/PKGBUILD +++ b/abs/core/v4l-dvb/PKGBUILD @@ -2,9 +2,9 @@ # Maintainer: Cecil Watson pkgname=v4l-dvb -_kernver=2.6.26-ARCH +_kernver=2.6.28-LinHES pkgver=1 -pkgrel=1 +pkgrel=12 pkgdesc="V4L-DVB drivers from mercurial" arch=('i686' 'x86_64') license=('GPL2') diff --git a/abs/core/v4l-dvb/v4l-dvb.install b/abs/core/v4l-dvb/v4l-dvb.install index c87bb82..7ae7ed0 100644 --- a/abs/core/v4l-dvb/v4l-dvb.install +++ b/abs/core/v4l-dvb/v4l-dvb.install @@ -1,20 +1,20 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the new package version # arg 2: the old package version post_upgrade() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.28-LinHES' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core/vdpinfo-71xx/PKGBUILD b/abs/core/vdpinfo-71xx/PKGBUILD new file mode 100644 index 0000000..bf20d32 --- /dev/null +++ b/abs/core/vdpinfo-71xx/PKGBUILD @@ -0,0 +1,25 @@ +# It is not expected that vdpau will work with the 71xx nVidia drivers, but we still want +# 'vdpinfo' to return something when users run it, even if the real 'vdpinfo' won't build +# for their nVidia driver version. + +pkgname=vdpinfo-71xx +pkgver=1 +pkgrel=1 +pkgdesc="tells the user they can't handle vdpau" +license=('GPLv2') +arch=('i686' 'x86_64') +depends=('nvidia-71xx-utils' 'nvidia-71xx') +# Just let the dependency on the right nvidia and nvidia-utils versions +# handle conflicts via those packages conflicts. +# conflicts=() +provides=('vdpinfo') +source=(vdpinfo) +md5sums=() + +build() { + LH_ROOT=/usr/LH + mkdir -p $startdir/pkg/$LH_ROOT/bin/ + + cd $startdir + install -m0755 -D vdpinfo $startdir/pkg/$LH_ROOT/bin/ +} \ No newline at end of file diff --git a/abs/core/vdpinfo-71xx/vdpinfo b/abs/core/vdpinfo-71xx/vdpinfo new file mode 100755 index 0000000..9b237dc --- /dev/null +++ b/abs/core/vdpinfo-71xx/vdpinfo @@ -0,0 +1,2 @@ +#!/bin/bash +echo "vdpau is unsupported" diff --git a/abs/core/vdpinfo-96xx/PKGBUILD b/abs/core/vdpinfo-96xx/PKGBUILD new file mode 100644 index 0000000..34391dd --- /dev/null +++ b/abs/core/vdpinfo-96xx/PKGBUILD @@ -0,0 +1,25 @@ +# It is not expected that vdpau will work with the 71xx nVidia drivers, but we still want +# 'vdpinfo' to return something when users run it, even if the real 'vdpinfo' won't build +# for their nVidia driver version. + +pkgname=vdpinfo-96xx +pkgver=1 +pkgrel=1 +pkgdesc="tells the user they can't handle vdpau" +license=('GPLv2') +arch=('i686' 'x86_64') +depends=('nvidia-96xx-utils' 'nvidia-96xx') +# Just let the dependency on the right nvidia and nvidia-utils versions +# handle conflicts via those packages conflicts. +# conflicts=() +provides=('vdpinfo') +source=(vdpinfo) +md5sums=() + +build() { + LH_ROOT=/usr/LH + mkdir -p $startdir/pkg/$LH_ROOT/bin/ + + cd $startdir + install -m0755 -D vdpinfo $startdir/pkg/$LH_ROOT/bin/ +} \ No newline at end of file diff --git a/abs/core/vdpinfo-96xx/vdpinfo b/abs/core/vdpinfo-96xx/vdpinfo new file mode 100755 index 0000000..9b237dc --- /dev/null +++ b/abs/core/vdpinfo-96xx/vdpinfo @@ -0,0 +1,2 @@ +#!/bin/bash +echo "vdpau is unsupported" diff --git a/abs/core/vdpinfo/PKGBUILD b/abs/core/vdpinfo/PKGBUILD new file mode 100644 index 0000000..db7be03 --- /dev/null +++ b/abs/core/vdpinfo/PKGBUILD @@ -0,0 +1,35 @@ +# Because this requires parts of the nVidia driver, this parallels the PKGBUILD for +# the nvidia package. + +pkgname=vdpinfo +pkgver=185.18.36 +pkgrel=1 +pkgdesc="polls the GPU for nVidia vdpau capabilities" +arch=('i686' 'x86_64') +[ "$CARCH" = "i686" ] && ARCH=x86 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 +url="http://www.cs.rug.nl/~wladimir/vdpinfo/" +license=('MIT') +depends=('nvidia-utils=185.18.36' 'nvidia=185.18.36') +# Just let the dependency on the right nvidia and nvidia-utils versions +# handle conflicts via those packages conflicts. +# conflicts=() +provides=('vdpinfo') +source=(http://www.cs.rug.nl/~wladimir/vdpinfo/vdpinfo-0.0.5.tar.gz http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run) +md5sums=() + +build() { + LH_ROOT=/usr/LH + mkdir -p $startdir/pkg/$LH_ROOT/bin/ + + # Extract nVidia driver to get at the headers we need to build vdpau + cd $startdir/src/ + sh NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run --extract-only + + # build vdpinfo + cd $startdir/src/vdpinfo + #g++ -O3 -g -I../NVIDIA-Linux-x86-185.18.14-pkg0/usr/include -c -o vdpinfo.o vdpinfo.cpp + #g++ -O3 -g -I$startdir/src/usr/include -c -o vdpinfo.o vdpinfo.cpp + make + install -m0755 vdpinfo $startdir/pkg/$LH_ROOT/bin/ +} diff --git a/abs/core/vi/PKGBUILD b/abs/core/vi/PKGBUILD index 1165431..b65cb93 100644 --- a/abs/core/vi/PKGBUILD +++ b/abs/core/vi/PKGBUILD @@ -1,18 +1,18 @@ -# $Id: PKGBUILD 3026 2008-06-18 02:38:15Z eric $ +# $Id: PKGBUILD 17437 2008-10-29 18:56:25Z tobias $ # Maintainer: tobias [ tobias at archlinux org ] pkgname=vi -_srcver=7.1 -_patchlevel=330 +_srcver=7.2 +_patchlevel=148 pkgver=${_srcver}.${_patchlevel} -pkgrel=10 +pkgrel=3 pkgdesc="a highly configurable, improved version of the vi text editor (basic version)" arch=(i686 x86_64) license=('custom:vim') url="http://www.vim.org" groups=('base') depends=('glibc' 'ncurses' 'coreutils') -makedepends=('wget' 'sed' 'grep') +makedepends=('wget' 'sed' 'grep' 'gettext') backup=(etc/virc) install=${pkgname}.install # we need the extra-stuff to get all patches applied smoothly @@ -20,9 +20,6 @@ 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 \ fetch_patches.sh fetch_runtime.sh) -md5sums=('44c6b4914f38d6f9aa959640b89da329' '605cc7ae31bcc9d7864bb0bb6025f55d' \ - '144aa049ba70621acf4247f0459f3ee7' '0fbebfbf8464b1e65fb6a9ca4bddefe1' \ - '92e3dc8844d446c1ecd28e7257a47cb7') build() { @@ -45,18 +42,30 @@ build() make || return 1 make VIMRCLOC=/etc DESTDIR=${startdir}/pkg VIMRTDIR= install cd ${startdir}/pkg/usr/bin - rm -f vim rvim view rview + rm -f vim rvim view rview vidiff ln -s vi evi + # delete the manpages for vidiff, we don't bother with that symlink since vidiff doesn't work + find ${startdir}/pkg/usr/share/man -type d -name 'man1' 2> /dev/null | \ + while read mandir; do + cd ${mandir} + rm -f vidiff.1 + done + _runtimedir="${startdir}/pkg/usr/share/vim/" update_runtime - # kill vim and x specific stuff - sed -i '/vms/,+4 d;/Convenient command/,+3 d;/mouse work/,+2 d'\ - ${startdir}/pkg/usr/share/vim/vimrc_example.vim install -Dm644 ${startdir}/pkg/usr/share/vim/vimrc_example.vim \ ${startdir}/pkg/etc/virc rm -f ${startdir}/pkg/usr/share/vim/gvimrc_example.vim install -dm755 ${startdir}/pkg/usr/share/licenses/vim cd ${startdir}/pkg/usr/share/licenses/vim ln -s ../../vim/doc/uganda.txt license.txt + +# Changes to remove mouse support VERY IMPORTANT! + ######################################################################################## + sed -i "s/mouse=a/mouse-=a/g" $startdir/pkg/etc/virc + + + ############################################################################ + } diff --git a/abs/core/vi/__changelog b/abs/core/vi/__changelog new file mode 100644 index 0000000..47cbb5f --- /dev/null +++ b/abs/core/vi/__changelog @@ -0,0 +1,3 @@ +Remove mouse support from /etc/vimrc. This new found ability is truely annoying. + + diff --git a/abs/core/vi/fetch_patches.sh b/abs/core/vi/fetch_patches.sh index 1f38e42..2ce1019 100644 --- a/abs/core/vi/fetch_patches.sh +++ b/abs/core/vi/fetch_patches.sh @@ -17,7 +17,7 @@ get_patches() { echo -e "\tfetching checksumfile for patches" wget ${_rpath}/MD5SUMS >/dev/null 2>&1 - downloads=0 + downloads=-1 for _line in $(/bin/cat MD5SUMS); do downloads=$((${downloads} + 1)) _md5=$(echo $_line | cut -d ' ' -f1) @@ -42,10 +42,8 @@ get_patches() { return 1 fi done - - ## TEMPFIX stupid fuckup upstream - mv ./7.1.126ne ./7.1.126 - downloads=$((${downloads} - 1)) + cd $startdir/src/patches + rm 7.2.001-100.gz ######## if [ ${downloads} != ${_patchlevel} ]; then diff --git a/abs/core/which/PKGBUILD b/abs/core/which/PKGBUILD index 3bd0175..41e0b60 100644 --- a/abs/core/which/PKGBUILD +++ b/abs/core/which/PKGBUILD @@ -1,20 +1,24 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: judd +# $Id: PKGBUILD 12859 2008-09-22 17:33:50Z andyrtr $ +# Maintainer: Andreas Radke + pkgname=which -pkgver=2.19 -pkgrel=11 +pkgver=2.20 +pkgrel=10 pkgdesc="A utility to show the full path of commands" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.xs4all.nl/~carlo17/which" license=('GPL3') +install=which.install groups=('base') -depends=('glibc') +depends=('glibc' 'texinfo') source=(http://www.xs4all.nl/~carlo17/$pkgname/$pkgname-$pkgver.tar.gz) -md5sums=('bbd094cec2444cd78befbc0cf09deea4') +md5sums=('95be0501a466e515422cde4af46b2744') build() { cd $startdir/src/$pkgname-$pkgver ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core/which/which.install b/abs/core/which/which.install new file mode 100644 index 0000000..899bd6f --- /dev/null +++ b/abs/core/which/which.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(which.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/wireless_tools/PKGBUILD b/abs/core/wireless_tools/PKGBUILD new file mode 100644 index 0000000..cb68362 --- /dev/null +++ b/abs/core/wireless_tools/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Judd Vinet +# Contributer: Jason Chu +pkgname=wireless_tools +pkgver=29 +pkgrel=2 +pkgdesc="Wireless Tools" +arch=(i686 x86_64) +url="http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html" +license=('GPL') +depends=('glibc') +backup=('etc/conf.d/wireless') +source=(http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz wireless.conf.d) +md5sums=('e06c222e186f7cc013fd272d023710cb' + '027576534885b8d5dded9be546057b12') + +build() { + cd $startdir/src/wireless_tools.29 + make || return 1 + mkdir -p $startdir/pkg/usr/sbin + mkdir -p $startdir/pkg/usr/lib + mkdir -p $startdir/pkg/usr/include + mkdir -p $startdir/pkg/usr/man/man8 +# make INSTALL_DIR=$startdir/pkg/usr/sbin/ INSTALL_LIB=$startdir/pkg/usr/lib/ INSTALL_INC=$startdir/pkg/usr/include/ INSTALL_MAN=$startdir/pkg/usr/man/ install + make PREFIX=$startdir/pkg/usr install + install -D -m644 ../wireless.conf.d $startdir/pkg/etc/conf.d/wireless +} diff --git a/abs/core/wireless_tools/wireless.conf.d b/abs/core/wireless_tools/wireless.conf.d new file mode 100644 index 0000000..47540ef --- /dev/null +++ b/abs/core/wireless_tools/wireless.conf.d @@ -0,0 +1,12 @@ +# +# Settings for wireless cards +# +# For each wireless interface declared in INTERFACES (in rc.conf), declare +# a wlan_${IF} variable that contains the arguments to be passed to +# iwconfig(8). Then list the original interface name in the +# WLAN_INTERFACES array. +# + +#wlan_eth0="eth0 mode managed essid default" +#WLAN_INTERFACES=(eth0) + diff --git a/abs/core/wlan-ng26-utils/PKGBUILD b/abs/core/wlan-ng26-utils/PKGBUILD deleted file mode 100644 index e842c99..0000000 --- a/abs/core/wlan-ng26-utils/PKGBUILD +++ /dev/null @@ -1,32 +0,0 @@ -# $Id: PKGBUILD 7972 2008-08-05 11:03:19Z tpowa $ -# Maintainer: Tom Killian - -pkgname=wlan-ng26-utils -pkgver=0.2.9 -pkgrel=1 -pkgdesc="Wireless Lan userspace tools." -depends=('glibc' 'bash') -makedepends=('kernel26') -source=(ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-$pkgver.tar.bz2 \ - wlan-ng.patch wlan kernel-2.6.26.patch) -url="ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/" -backup=(etc/wlan/wlan.conf) -arch=('i686' 'x86_64') -license=('MPL') - -build() { - cd $startdir/src/linux-wlan-ng-$pkgver - patch -Np0 -i ../kernel-2.6.26.patch || return 1 - sed -i "s#TARGET_ROOT_ON_HOST=#TARGET_ROOT_ON_HOST=$startdir/pkg#;s#PRISM2_PLX=y#PRISM2_PLX=n#;s#PRISM2_PCI=y#PRISM2_PCI=n#" config.in - patch -p1 < ../wlan-ng.patch - make auto_config - make all || return 1 - make install - mkdir -p $startdir/pkg/etc/rc.d - rm -r $startdir/pkg/{init.d,lib,etc/pcmcia} - install -m 755 $startdir/src/wlan $startdir/pkg/etc/rc.d/wlan -} -md5sums=('96130b36f9674521b08fb3e2a6ac0382' - '706464f9e6e127558aed25b9f454f905' - '1056365bdbe7102b1a668c84926ecb17' - '6ed5a5fefc2c149e0e0a98de211ba147') diff --git a/abs/core/wlan-ng26-utils/kernel-2.6.22-r1832.patch b/abs/core/wlan-ng26-utils/kernel-2.6.22-r1832.patch deleted file mode 100644 index f1aa310..0000000 --- a/abs/core/wlan-ng26-utils/kernel-2.6.22-r1832.patch +++ /dev/null @@ -1,120 +0,0 @@ -diff -uNr linux-wlan-ng-0.2.8/CHANGES linux-wlan-ng-svn-1832/CHANGES ---- linux-wlan-ng-0.2.8/CHANGES 2007-05-04 13:29:27.000000000 +0100 -+++ linux-wlan-ng-svn-1832/CHANGES 2007-06-27 11:28:14.000000000 +0100 -@@ -41,6 +41,8 @@ - * Intersil Corporation as part of PRISM(R) chipset product development. - * - * -------------------------------------------------------------------- -+ - Tweaks to support Fedora 7 (Dan Williams) -+ - Support 2.6.22 kernels - 0.2.8 - - Fix up a pile of sparse warnings (Pavel Roskin) - - Support 2.6.20 kernels (Pavel Roskin) -diff -uNr linux-wlan-ng-0.2.8/Configure linux-wlan-ng-svn-1832/Configure ---- linux-wlan-ng-0.2.8/Configure 2007-05-07 23:00:22.000000000 +0100 -+++ linux-wlan-ng-svn-1832/Configure 2007-06-27 11:28:14.000000000 +0100 -@@ -277,9 +277,9 @@ - fi - write_bool KERN_2_6_17 - --if [ $VERSION_CODE -gt `version 2 6 21` ] ; then -+if [ $VERSION_CODE -gt `version 2 6 22` ] ; then - $ECHO "******* WARNING WARNING WARNING *******" -- $ECHO "Kernels newer than 2.6.21.x are not supported." -+ $ECHO "Kernels newer than 2.6.22.x are not supported." - $ECHO "******* WARNING WARNING WARNING *******" - fi - -diff -uNr linux-wlan-ng-0.2.8/config.in linux-wlan-ng-svn-1832/config.in ---- linux-wlan-ng-0.2.8/config.in 2007-02-09 21:51:58.000000000 +0000 -+++ linux-wlan-ng-svn-1832/config.in 2007-06-27 11:28:14.000000000 +0100 -@@ -1,6 +1,6 @@ - WLAN_VERSION=0 - WLAN_PATCHLEVEL=2 --WLAN_SUBLEVEL=8 -+WLAN_SUBLEVEL=9 - WLAN_EXTRAVERSION= - #LINUX_SRC=/usr/src/linux - PCMCIA_SRC= -diff -uNr linux-wlan-ng-0.2.8/etc/udev/rules.d/40-prism2.rules linux-wlan-ng-svn-1832/etc/udev/rules.d/40-prism2.rules ---- linux-wlan-ng-0.2.8/etc/udev/rules.d/40-prism2.rules 2006-06-26 16:03:27.000000000 +0100 -+++ linux-wlan-ng-svn-1832/etc/udev/rules.d/40-prism2.rules 2007-06-27 11:28:14.000000000 +0100 -@@ -1 +1,2 @@ --ACTION=="add",BUS=="usb",DRIVER=="prism2_usb" ,RUN+="/etc/wlan/wlan-udev.sh %k" -+#ACTION=="add",BUS=="usb",DRIVER=="prism2_usb" ,RUN+="/etc/wlan/wlan-udev.sh %k" -+KERNEL="wlan*",ACTION=="add",DRIVERS=="prism2_usb" ,RUN+="/etc/wlan/wlan-udev.sh %k" -diff -uNr linux-wlan-ng-0.2.8/src/include/wlan/wlan_compat.h linux-wlan-ng-svn-1832/src/include/wlan/wlan_compat.h ---- linux-wlan-ng-0.2.8/src/include/wlan/wlan_compat.h 2007-02-28 15:44:02.000000000 +0000 -+++ linux-wlan-ng-svn-1832/src/include/wlan/wlan_compat.h 2007-06-27 11:28:14.000000000 +0100 -@@ -479,6 +479,13 @@ - #endif - #endif /* _LINUX_PROC_FS_H */ - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) -+#define skb_reset_mac_header(__a) (__a)->mac.raw = (__a)->data -+#define SKB_MAC_HEADER(__a) (__a)->mac.raw -+#else -+#define SKB_MAC_HEADER(__a) (__a)->mac_header -+#endif -+ - #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - #ifndef INIT_TQUEUE - #define PREPARE_TQUEUE(_tq, _routine, _data) \ -diff -uNr linux-wlan-ng-0.2.8/src/p80211/p80211conv.c linux-wlan-ng-svn-1832/src/p80211/p80211conv.c ---- linux-wlan-ng-0.2.8/src/p80211/p80211conv.c 2007-03-19 15:37:00.000000000 +0000 -+++ linux-wlan-ng-svn-1832/src/p80211/p80211conv.c 2007-06-27 11:28:14.000000000 +0100 -@@ -498,7 +498,7 @@ - } - - skb->protocol = eth_type_trans(skb, netdev); -- skb->mac.raw = (unsigned char *) e_hdr; /* new MAC header */ -+ SKB_MAC_HEADER(skb) = (unsigned char *) e_hdr; /* new MAC header */ - - /* jkriegl: process signal and noise as set in hfa384x_int_rx() */ - /* jkriegl: only process signal/noise if requested by iwspy */ -diff -uNr linux-wlan-ng-0.2.8/src/p80211/p80211netdev.c linux-wlan-ng-svn-1832/src/p80211/p80211netdev.c ---- linux-wlan-ng-0.2.8/src/p80211/p80211netdev.c 2007-03-19 15:37:00.000000000 +0000 -+++ linux-wlan-ng-svn-1832/src/p80211/p80211netdev.c 2007-06-27 11:28:14.000000000 +0100 -@@ -389,7 +389,8 @@ - - /* set up various data fields */ - skb->dev = dev; -- skb->mac.raw = skb->data ; -+ skb_reset_mac_header(skb); -+ - skb->ip_summed = CHECKSUM_NONE; - skb->pkt_type = PACKET_OTHERHOST; - skb->protocol = htons(ETH_P_80211_RAW); -@@ -929,7 +930,7 @@ - dev->open = p80211knetdev_open; - dev->stop = p80211knetdev_stop; - --#ifdef CONFIG_NET_WIRELESS -+#if defined(CONFIG_NET_WIRELESS) || defined(WIRELESS_EXT) - #if ((WIRELESS_EXT < 17) && (WIRELESS_EXT < 21)) - dev->get_wireless_stats = p80211wext_get_wireless_stats; - #endif -diff -uNr linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x.c linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x.c ---- linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x.c 2007-03-19 15:37:00.000000000 +0000 -+++ linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x.c 2007-06-27 11:28:14.000000000 +0100 -@@ -3645,7 +3645,7 @@ - /* the prism2 cards don't return the FCS */ - datap = skb_put(skb, WLAN_CRC_LEN); - memset (datap, 0xff, WLAN_CRC_LEN); -- skb->mac.raw = skb->data; -+ skb_reset_mac_header(skb); - - /* Attach the rxmeta, set some stuff */ - p80211skb_rxmeta_attach(wlandev, skb); -diff -uNr linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x_usb.c linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x_usb.c ---- linux-wlan-ng-0.2.8/src/prism2/driver/hfa384x_usb.c 2007-03-19 15:37:00.000000000 +0000 -+++ linux-wlan-ng-svn-1832/src/prism2/driver/hfa384x_usb.c 2007-06-27 11:28:14.000000000 +0100 -@@ -4255,7 +4255,7 @@ - /* The prism2 series does not return the CRC */ - memset(skb_put(skb, WLAN_CRC_LEN), 0xff, WLAN_CRC_LEN); - -- skb->mac.raw = skb->data; -+ skb_reset_mac_header(skb); - - /* Attach the rxmeta, set some stuff */ - p80211skb_rxmeta_attach(wlandev, skb); diff --git a/abs/core/wlan-ng26-utils/kernel-2.6.26.patch b/abs/core/wlan-ng26-utils/kernel-2.6.26.patch deleted file mode 100644 index ec306f0..0000000 --- a/abs/core/wlan-ng26-utils/kernel-2.6.26.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: src/p80211/p80211netdev.c -=================================================================== ---- src/p80211/p80211netdev.c (revision 1865) -+++ src/p80211/p80211netdev.c (working copy) -@@ -947,7 +947,9 @@ - #endif - #endif - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) ) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) ) -+ dev_net_set(dev, &init_net); -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) ) - dev->nd_net = &init_net; - #endif \ No newline at end of file diff --git a/abs/core/wlan-ng26-utils/wlan b/abs/core/wlan-ng26-utils/wlan deleted file mode 100644 index 6b3252d..0000000 --- a/abs/core/wlan-ng26-utils/wlan +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh - -if [ ! -f /etc/wlan/shared ] ; then - echo "/etc/wlan/shared not present" - exit 0 -fi - -. /etc/wlan/shared -. /etc/rc.conf -. /etc/rc.d/functions - -case "$1" in - start) - # This will implicitly fire off wland via hotplug. - stat_busy "Starting WLAN Devices" - if ! $MODPROBE p80211; then - echo "Failed to load p80211.o." - exit 1 - fi - - # NOTE: We don't explicitly insmod the card driver here. The - # best thing to do is to specify an alias in /etc/modules.conf. - - for DEVICE in $WLAN_DEVICES; do - $MODPROBE $DEVICE - # if we don't have hotplug.. do things the old-fashioned way. - if [ $HAS_HOTPLUG = 'n' ] ; then - wlan_bring_it_up $DEVICE - fi - done - - # And hotplug will take care of the rest, namely device - # initialization and whatnot. - - add_daemon wlan - stat_done - - ;; - - stop) - stat_busy "Shutting Down WLAN Devices" - # Do a reset on each device to make sure none of them are still - # trying to generate interrupts. - for DEVICE in $WLAN_DEVICES; do - wlan_disable $DEVICE - ifconfig $DEVICE down - $MODPROBE -r $DEVICE - done - - # remove p80211, which will implictly kill wland. - $MODPROBE -r p80211 - - rm_daemon wlan - stat_done - ;; - - restart) - $0 stop - $0 start - EXITCODE=$? - ;; - - *) - echo "usage: $0 {start|stop|restart}" - ;; - -esac -exit 0 diff --git a/abs/core/wlan-ng26-utils/wlan-ng.patch b/abs/core/wlan-ng26-utils/wlan-ng.patch deleted file mode 100644 index 9449975..0000000 --- a/abs/core/wlan-ng26-utils/wlan-ng.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ur linux-wlan-ng-0.2.1pre22/man/Makefile linux-wlan-ng-0.2.1pre22-new/man/Makefile ---- linux-wlan-ng-0.2.1pre22/man/Makefile 2004-08-04 14:09:27.000000000 -0700 -+++ linux-wlan-ng-0.2.1pre22-new/man/Makefile 2004-10-18 12:23:19.000000000 -0700 -@@ -48,8 +48,8 @@ - @echo "Nothing to do..." - - install: -- mkdir -p $(TARGET_ROOT_ON_HOST)/usr/local/man/man1 -- cp *.1 $(TARGET_ROOT_ON_HOST)/usr/local/man/man1 -+ mkdir -p $(TARGET_ROOT_ON_HOST)/usr/share/man/man1 -+ cp *.1 $(TARGET_ROOT_ON_HOST)/usr/share/man/man1 - - clean: - rm -f core core.* *.o .*.o *.s *.a .depend tmp_make *~ tags diff --git a/abs/core/wlan-ng26/PKGBUILD b/abs/core/wlan-ng26/PKGBUILD deleted file mode 100644 index c592386..0000000 --- a/abs/core/wlan-ng26/PKGBUILD +++ /dev/null @@ -1,35 +0,0 @@ -# $Id: PKGBUILD 7952 2008-08-05 10:33:48Z tpowa $ -# Maintainer: Tom Killian - -pkgname=wlan-ng26 -pkgver=0.2.9 -pkgrel=1 -_kernver=2.6.26-ARCH -pkgdesc="Wireless Lan usb modules. For kernel26." -arch=(i686 x86_64) -license=('MPL') -depends=('kernel26>=2.6.26-1' 'kernel26<2.6.27' 'wlan-ng26-utils') -source=(ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-$pkgver.tar.bz2 - kernel-2.6.26.patch) -url="ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/" -install=wlan-ng26.install -options=(!makeflags) - -build() { - cd $startdir/src/linux-wlan-ng-$pkgver - patch -Np0 -i ../kernel-2.6.26.patch || return 1 - # only built usb modules the rest is covered by hostap and orinoco driver, according to gentoo changelog - sed -i "s#PRISM2_PCMCIA=y#PRISM2_PCMCIA=n#;s#TARGET_ROOT_ON_HOST=#TARGET_ROOT_ON_HOST=$startdir/pkg#;s#PRISM2_PLX=y#PRISM2_PLX=n#;s#PRISM2_PCI=y#PRISM2_PCI=n#;s#PRISM2_USB=n#PRISM2_USB=y#;s%#LINUX_SRC=/usr/src/linux%LINUX_SRC=/lib/modules/${_kernver}/build%" config.in - make auto_config - make all || return 1 - make install - sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" $startdir/wlan-ng26.install - rm -r $startdir/pkg/{etc,sbin,usr,init.d} - # fix module path - mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/net/wireless - mv $startdir/pkg/lib/modules/${_kernver}/linux-wlan-ng \ - $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/net/wireless -} - -md5sums=('96130b36f9674521b08fb3e2a6ac0382' - '6ed5a5fefc2c149e0e0a98de211ba147') diff --git a/abs/core/wlan-ng26/kernel-2.6.26.patch b/abs/core/wlan-ng26/kernel-2.6.26.patch deleted file mode 100644 index ec306f0..0000000 --- a/abs/core/wlan-ng26/kernel-2.6.26.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: src/p80211/p80211netdev.c -=================================================================== ---- src/p80211/p80211netdev.c (revision 1865) -+++ src/p80211/p80211netdev.c (working copy) -@@ -947,7 +947,9 @@ - #endif - #endif - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) ) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) ) -+ dev_net_set(dev, &init_net); -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) ) - dev->nd_net = &init_net; - #endif \ No newline at end of file diff --git a/abs/core/wlan-ng26/wlan-ng26.install b/abs/core/wlan-ng26/wlan-ng26.install deleted file mode 100644 index fe7abaa..0000000 --- a/abs/core/wlan-ng26/wlan-ng26.install +++ /dev/null @@ -1,30 +0,0 @@ -# arg 1: the new package version -post_install() { - post_upgrade -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - # updating module dependencies - echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH - depmod -v $KERNEL_VERSION > /dev/null 2>&1 -} - -# arg 1: the old package version -pre_remove() { - /bin/true -} - -# arg 1: the old package version -post_remove() { - # updating module dependencies - echo ">>> Updating module dependencies. Please wait ..." - KERNEL_VERSION=2.6.26-ARCH - depmod -v $KERNEL_VERSION > /dev/null 2>&1 -} - -op=$1 -shift -$op $* diff --git a/abs/core/wpa_supplicant/PKGBUILD b/abs/core/wpa_supplicant/PKGBUILD index 2f022ce..3ecc4a8 100644 --- a/abs/core/wpa_supplicant/PKGBUILD +++ b/abs/core/wpa_supplicant/PKGBUILD @@ -1,36 +1,42 @@ -# Contributor: iztok pizorn -# Contributor: William Rea +# $Id: PKGBUILD 32196 2009-03-29 14:55:53Z thomas $ +# Maintainer: Thomas Baechler + pkgname=wpa_supplicant -pkgver=0.5.10 -_madwifi_ver=0.9.4 -pkgrel=10 +pkgver=0.6.9 +#_madwifi_ver=0.9.4 +pkgrel=1 pkgdesc="A utility providing key negotiation for WPA wireless networks" arch=('i686' 'x86_64') -makedepends=('kernel26>=2.6.24' 'kernel26<=2.6.26.3') -depends=('openssl') +depends=('openssl' 'dbus-core>=1.2.4' 'readline' 'libnl') +optdepends=('wpa_supplicant_gui: wpa_gui program') license=('GPL') groups=('base') backup=('etc/wpa_supplicant.conf') url="http://hostap.epitest.fi/wpa_supplicant" source=(http://hostap.epitest.fi/releases/wpa_supplicant-$pkgver.tar.gz - config - http://downloads.sourceforge.net/sourceforge/madwifi/madwifi-${_madwifi_ver}.tar.gz) -install='wpa_supplicant.install' -md5sums=('9e7b99da67c47d81121368c6d580d069' - '87a7bb38e0b4820b29065a9b3e8f4e06' - '399d20de8d855a59f20058857c2178ad') + config) + #http://downloads.sourceforge.net/sourceforge/madwifi/madwifi-${_madwifi_ver}.tar.gz) +md5sums=('0efb8fcedf0a8acf6f423dfdb0658fdd' + 'd472554904cca44e1090e25dea7b03c9') + #'399d20de8d855a59f20058857c2178ad') build() { - cd ${startdir}/src/ - mv madwifi-${_madwifi_ver} madwifi - cd $startdir/src/$pkgname-$pkgver - cp ../config ./.config + cd "${srcdir}" + #mv madwifi-${_madwifi_ver} madwifi + cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}" + cp ${srcdir}/config ./.config sed -i 's@/usr/local@$(PREFIX)@g' Makefile - sed -i 's@dynamic_eap_methods@@g' Makefile make || return 1 - make PREFIX=/usr DESTDIR=$startdir/pkg install || return 1 - install -D -m644 wpa_supplicant.conf $startdir/pkg/etc/wpa_supplicant.conf || return 1 - install -d -m755 $startdir/pkg/usr/man/man{5,8} || return 1 - install -m644 doc/docbook/wpa_supplicant.conf.5 $startdir/pkg/usr/man/man5 || return 1 - install -m644 doc/docbook/{wpa_background,wpa_cli,wpa_passphrase,wpa_supplicant}.8 $startdir/pkg/usr/man/man8 || return 1 + make PREFIX=/usr DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/etc" + install -m644 wpa_supplicant.conf "${pkgdir}/etc/wpa_supplicant.conf" || return 1 + install -d -m755 ${pkgdir}/usr/share/man/man{5,8} || return 1 + install -m644 doc/docbook/wpa_supplicant.conf.5 "${pkgdir}/usr/share/man/man5/" || return 1 + install -m644 doc/docbook/{wpa_background,wpa_cli,wpa_passphrase,wpa_supplicant}.8 "${pkgdir}/usr/share/man/man8/" || return 1 + + install -m755 -d "${pkgdir}/usr/share/dbus-1/system-services" + install -m644 dbus-wpa_supplicant.service "${pkgdir}/usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service" || return 1 + sed -e 's/sbin/usr\/sbin/' -i "${pkgdir}/usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service" || return 1 + install -m755 -d "${pkgdir}/etc/dbus-1/system.d" + install -m644 dbus-wpa_supplicant.conf "${pkgdir}/etc/dbus-1/system.d/fi.epitest.hostap.WPASupplicant.conf" || return 1 } diff --git a/abs/core/wpa_supplicant/config b/abs/core/wpa_supplicant/config index 8841fe3..e3582bf 100644 --- a/abs/core/wpa_supplicant/config +++ b/abs/core/wpa_supplicant/config @@ -41,7 +41,7 @@ # Driver interface for Host AP driver -CONFIG_DRIVER_HOSTAP=y +#CONFIG_DRIVER_HOSTAP=y # Driver interface for Agere driver #CONFIG_DRIVER_HERMES=y @@ -50,14 +50,14 @@ CONFIG_DRIVER_HOSTAP=y #CFLAGS += -I../../include/wireless # Driver interface for madwifi driver -CONFIG_DRIVER_MADWIFI=y -# Change include directories to match with the local setup -CFLAGS += -I../madwifi +#CONFIG_DRIVER_MADWIFI=y +# Set include directory to the madwifi source tree +#CFLAGS += -I../../madwifi # Driver interface for Prism54 driver # (Note: Prism54 is not yet supported, i.e., this will not work as-is and is # for developers only) -CONFIG_DRIVER_PRISM54=y +#CONFIG_DRIVER_PRISM54=y # Driver interface for ndiswrapper CONFIG_DRIVER_NDISWRAPPER=y @@ -65,17 +65,26 @@ CONFIG_DRIVER_NDISWRAPPER=y # Driver interface for Atmel driver CONFIG_DRIVER_ATMEL=y -# Driver interface for Broadcom driver +# Driver interface for old Broadcom driver +# Please note that the newer Broadcom driver ("hybrid Linux driver") supports +# Linux wireless extensions and does not need (or even work) with the old +# driver wrapper. Use CONFIG_DRIVER_WEXT=y with that driver. #CONFIG_DRIVER_BROADCOM=y # Example path for wlioctl.h; change to match your configuration #CFLAGS += -I/opt/WRT54GS/release/src/include # Driver interface for Intel ipw2100/2200 driver -CONFIG_DRIVER_IPW=y +#CONFIG_DRIVER_IPW=y + +# Driver interface for Ralink driver +#CONFIG_DRIVER_RALINK=y # Driver interface for generic Linux wireless extensions CONFIG_DRIVER_WEXT=y +# Driver interface for Linux drivers using the nl80211 kernel interface +CONFIG_DRIVER_NL80211=y + # Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) #CONFIG_DRIVER_BSD=y #CFLAGS += -I/usr/local/include @@ -103,6 +112,9 @@ CONFIG_DRIVER_WEXT=y # Driver interface for wired Ethernet drivers CONFIG_DRIVER_WIRED=y +# Driver interface for the Broadcom RoboSwitch family +#CONFIG_DRIVER_ROBOSWITCH=y + # Enable IEEE 802.1X Supplicant (automatically included if any EAP method is # included) CONFIG_IEEE8021X_EAPOL=y @@ -122,6 +134,13 @@ CONFIG_EAP_PEAP=y # EAP-TTLS CONFIG_EAP_TTLS=y +# EAP-FAST +# Note: Default OpenSSL package does not include support for all the +# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, +# the OpenSSL library must be patched (openssl-0.9.8d-tls-extensions.patch) +# to add the needed functions. +#CONFIG_EAP_FAST=y + # EAP-GTC CONFIG_EAP_GTC=y @@ -143,6 +162,13 @@ CONFIG_EAP_LEAP=y # EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used) #CONFIG_EAP_AKA=y +# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used). +# This requires CONFIG_EAP_AKA to be enabled, too. +#CONFIG_EAP_AKA_PRIME=y + +# Enable USIM simulator (Milenage) for EAP-AKA +#CONFIG_USIM_SIMULATOR=y + # EAP-SAKE #CONFIG_EAP_SAKE=y @@ -151,6 +177,15 @@ CONFIG_EAP_LEAP=y # Include support for optional SHA256 cipher suite in EAP-GPSK #CONFIG_EAP_GPSK_SHA256=y +# EAP-TNC and related Trusted Network Connect support (experimental) +#CONFIG_EAP_TNC=y + +# Wi-Fi Protected Setup (WPS) +CONFIG_WPS=y + +# EAP-IKEv2 +#CONFIG_EAP_IKEV2=y + # PKCS#12 (PFX) support (used to read private key and certificate file from # a file that usually has extension .p12 or .pfx) CONFIG_PKCS12=y @@ -166,13 +201,10 @@ CONFIG_SMARTCARD=y # Development testing #CONFIG_EAPOL_TEST=y -# Replace native Linux implementation of packet sockets with libdnet/libpcap. -# This will be automatically set for non-Linux OS. -#CONFIG_DNET_PCAP=y - # Select control interface backend for external programs, e.g, wpa_cli: # unix = UNIX domain sockets (default for Linux/*BSD) -# udp = UDP sockets (default for Windows) +# udp = UDP sockets using localhost (127.0.0.1) +# named_pipe = Windows Named Pipe (default for Windows) # y = use default (backwards compatibility) # If this option is commented out, control interface is not included in the # build. @@ -182,7 +214,7 @@ CONFIG_CTRL_IFACE=y # When building a wpa_cli binary for distribution, please note that these # libraries are licensed under GPL and as such, BSD license may not apply for # the resulting binary. -#CONFIG_READLINE=y +CONFIG_READLINE=y # Remove debugging code that is printing out debug message to stdout. # This can be used to reduce the size of the wpa_supplicant considerably @@ -199,16 +231,39 @@ CONFIG_CTRL_IFACE=y # or 6 kB if building for WPA-Enterprise. #CONFIG_NO_WPA2=y +# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support +# This option can be used to reduce code size by removing support for +# converting ASCII passphrases into PSK. If this functionality is removed, the +# PSK can only be configured as the 64-octet hexstring (e.g., from +# wpa_passphrase). This saves about 0.5 kB in code size. +#CONFIG_NO_WPA_PASSPHRASE=y + # Remove AES extra functions. This can be used to reduce code size by about # 1.5 kB by removing extra AES modes that are not needed for commonly used # client configurations (they are needed for some EAP types). #CONFIG_NO_AES_EXTRAS=y +# Disable scan result processing (ap_mode=1) to save code size by about 1 kB. +# This can be used if ap_scan=1 mode is never enabled. +#CONFIG_NO_SCAN_PROCESSING=y + # Select configuration backend: -# file = text file (e.g., wpa_supplicant.conf) +# file = text file (e.g., wpa_supplicant.conf; note: the configuration file +# path is given on command line, not here; this option is just used to +# select the backend that allows configuration files to be used) # winreg = Windows registry (see win_example.reg for an example) CONFIG_BACKEND=file +# Remove configuration write functionality (i.e., to allow the configuration +# file to be updated based on runtime configuration changes). The runtime +# configuration can still be changed, the changes are just not going to be +# persistent over restarts. This option can be used to reduce code size by +# about 3.5 kB. +#CONFIG_NO_CONFIG_WRITE=y + +# Remove support for configuration blobs to reduce code size by about 1.5 kB. +#CONFIG_NO_CONFIG_BLOBS=y + # Select program entry point implementation: # main = UNIX/POSIX like main() function (default) # main_winsvc = Windows service (read parameters from registry) @@ -236,13 +291,15 @@ CONFIG_BACKEND=file # none = Empty template #CONFIG_L2_PACKET=linux -# IEEE 802.11i/IEEE 802.11e STAKey negotiation for direct link connection -#CONFIG_STAKEY=y - -# Proposed replacement for STAKey negotiation: PeerKey handshake for -# Station to Station Link +# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) CONFIG_PEERKEY=y +# IEEE 802.11w (management frame protection) +# This version is an experimental implementation based on IEEE 802.11w/D1.0 +# draft and is subject to change since the standard has not yet been finalized. +# Driver support is also needed for IEEE 802.11w. +#CONFIG_IEEE80211W=y + # Select TLS implementation # openssl = OpenSSL (default) # gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA) @@ -259,21 +316,29 @@ CONFIG_PEERKEY=y #CONFIG_GNUTLS_EXTRA=y # If CONFIG_TLS=internal is used, additional library and include paths are -# needed for LibTomCrypt and TomsFastMath. -#LTC_PATH=/usr/src/libtomcrypt-1.11 -#TFM_PATH=/usr/src/tomsfastmath-0.09 -#CFLAGS += -I$(LTC_PATH)/src/headers -#LIBS += -L$(LTC_PATH) -L$(TFM_PATH) -#LIBS_p += -L$(LTC_PATH) -L$(TFM_PATH) - -# Integrate ndis_events.exe functionality into wpa_supplicant. +# needed for LibTomMath. Alternatively, an integrated, minimal version of +# LibTomMath can be used. See beginning of libtommath.c for details on benefits +# and drawbacks of this option. +#CONFIG_INTERNAL_LIBTOMMATH=y +#ifndef CONFIG_INTERNAL_LIBTOMMATH +#LTM_PATH=/usr/src/libtommath-0.39 +#CFLAGS += -I$(LTM_PATH) +#LIBS += -L$(LTM_PATH) +#LIBS_p += -L$(LTM_PATH) +#endif +# At the cost of about 4 kB of additional binary size, the internal LibTomMath +# can be configured to include faster routines for exptmod, sqr, and div to +# speed up DH and RSA calculation considerably +#CONFIG_INTERNAL_LIBTOMMATH_FAST=y + +# Include NDIS event processing through WMI into wpa_supplicant/wpasvc. # This is only for Windows builds and requires WMI-related header files and # WbemUuid.Lib from Platform SDK even when building with MinGW. #CONFIG_NDIS_EVENTS_INTEGRATED=y #PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib" # Add support for DBus control interface -#CONFIG_CTRL_IFACE_DBUS=y +CONFIG_CTRL_IFACE_DBUS=y # Add support for loading EAP methods dynamically as shared libraries. # When this option is enabled, each EAP method can be either included @@ -294,15 +359,24 @@ CONFIG_PEERKEY=y # Please also note that using dynamic libraries will increase the total binary # size. Thus, it may not be the best option for targets that have limited # amount of memory/flash. -CONFIG_DYNAMIC_EAP_METHODS=y +#CONFIG_DYNAMIC_EAP_METHODS=y # Include client MLME (management frame processing). -# This can be used to move MLME processing of Devicescape IEEE 802.11 stack -# into user space. +# This can be used to move MLME processing of Linux mac80211 stack into user +# space. Please note that this is currently only available with +# driver_nl80211.c and only with a modified version of Linux kernel and +# wpa_supplicant. #CONFIG_CLIENT_MLME=y -# Currently, driver_devicescape.c build requires some additional parameters -# to be able to include some of the kernel header files. Following lines can -# be used to set these (WIRELESS_DEV must point to the root directory of the -# wireless-dev.git tree). -WIRELESS_DEV=/lib/modules/2.6.24-ARCH/build -CFLAGS += -I$(WIRELESS_DEV)/net/mac80211 + +# IEEE Std 802.11r-2008 (Fast BSS Transition) +#CONFIG_IEEE80211R=y + +# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt) +#CONFIG_DEBUG_FILE=y + +# Enable privilege separation (see README 'Privilege separation' for details) +#CONFIG_PRIVSEP=y + +# Enable mitigation against certain attacks against TKIP by delaying Michael +# MIC error reports by a random amount of time between 0 and 60 seconds +#CONFIG_DELAYED_MIC_ERROR_REPORT=y diff --git a/abs/core/wpa_supplicant/wpa_supplicant.install b/abs/core/wpa_supplicant/wpa_supplicant.install deleted file mode 100644 index 0c31765..0000000 --- a/abs/core/wpa_supplicant/wpa_supplicant.install +++ /dev/null @@ -1,15 +0,0 @@ -# arg 1: the new package version -post_install() { - post_upgrade -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - echo "==> For wpa_gui please install 'wpa_supplicant_gui'" -} - -op=$1 -shift - -$op $* diff --git a/abs/core/x264/PKGBUILD b/abs/core/x264/PKGBUILD index fd30204..4f1756b 100644 --- a/abs/core/x264/PKGBUILD +++ b/abs/core/x264/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 3616 2008-06-26 02:00:55Z paul $ +# $Id: PKGBUILD 36085 2009-04-19 22:58:09Z eric $ # Contributor: damir # Maintainer: Paul Mattal pkgname=x264 -pkgver=20080625 +pkgver=20090416 pkgrel=1 pkgdesc="free library for encoding H264/AVC video streams" arch=(i686 x86_64) @@ -12,7 +12,7 @@ license=('GPL') depends=('libx11') makedepends=('yasm') source=(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245.tar.bz2) -md5sums=('6b4da463cf4c800b69fbf8518d6461e5') +md5sums=('f5730feaa6175539e8227e48e38b7d67') build() { cd "$srcdir/$pkgname-snapshot-$pkgver-2245" || return 1 diff --git a/abs/core/xcb-proto/PKGBUILD b/abs/core/xcb-proto/PKGBUILD index b17aa2d..b80602a 100644 --- a/abs/core/xcb-proto/PKGBUILD +++ b/abs/core/xcb-proto/PKGBUILD @@ -1,21 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 27497 2009-02-22 09:20:47Z andyrtr $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot + pkgname=xcb-proto -pkgver=1.1 +pkgver=1.4 pkgrel=1 pkgdesc="XML-XCB protocol descriptions" arch=(i686 x86_64) url="http://xcb.freedesktop.org/" license=('custom') +makedepends=('python' 'libxml2') source=(${url}/dist/${pkgname}-${pkgver}.tar.bz2) +md5sums=('45a599289a81189b9812ccb00911eed8') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('dd34acc58c0a438e812f72a9afe7b2a0') diff --git a/abs/core/xcb-util/PKGBUILD b/abs/core/xcb-util/PKGBUILD new file mode 100644 index 0000000..734f57d --- /dev/null +++ b/abs/core/xcb-util/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: $ +# Maintainer: Jan de Groot +# Contributor: Andrea Scarpino + +pkgname=xcb-util +pkgver=0.3.2 +pkgrel=1 +pkgdesc="Utility libraries for XC Binding" +arch=('i686' 'x86_64') +license=('GPL') +url="http://xcb.freedesktop.org" +depends=('libxcb>=1.1.90.1') +makedepends=('gperf') +options=('!libtool') +source=(http://xcb.freedesktop.org/dist/${pkgname}-${pkgver}.tar.bz2) +md5sums=('fa41a147f5a63b01207cfd975fecc45c') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/core/xcmiscproto/PKGBUILD b/abs/core/xcmiscproto/PKGBUILD new file mode 100644 index 0000000..9ad8f14 --- /dev/null +++ b/abs/core/xcmiscproto/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +#Maintainer: Jan de Groot + +pkgname=xcmiscproto +pkgver=1.1.2 +pkgrel=1 +pkgdesc="X11 XC-Miscellaneous extension wire protocol" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) +md5sums=('fde0b050901f024b19159cdacdcfbd20') +sha1sums=('825ec15986cd1ab008b11f6379eb4c7f3c78bd76') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/core/xdotool/PKGBUILD b/abs/core/xdotool/PKGBUILD new file mode 100644 index 0000000..0fd5db1 --- /dev/null +++ b/abs/core/xdotool/PKGBUILD @@ -0,0 +1,23 @@ +pkgname=xdotool +pkgver=20090126 +pkgrel=1 +pkgdesc="Command-line X11 automation tool" +arch=('i686' 'x86_64') +url="http://www.semicomplete.com/projects/xdotool/" +license=('BSD') +depends=('libxtst') +source=(http://semicomplete.googlecode.com/files/$pkgname-$pkgver.tar.gz) +md5sums=('a520d6a3175c3b55582998cbeef81688') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + make || return 1 + install -dm755 "$pkgdir"/usr/{bin,share/man} + make PREFIX="$pkgdir/usr" INSTALLMAN="$pkgdir/usr/share/man" install + + # License + install -D -m644 COPYRIGHT "$pkgdir/usr/share/licenses/xdotool/COPYRIGHT" +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/xextproto/PKGBUILD b/abs/core/xextproto/PKGBUILD index 3ec2c1b..a22207c 100644 --- a/abs/core/xextproto/PKGBUILD +++ b/abs/core/xextproto/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3231 2008-06-21 15:50:45Z jgc $ +# $Id: PKGBUILD 26846 2009-02-13 15:23:45Z andyrtr $ #Maintainer: Jan de Groot pkgname=xextproto -pkgver=7.0.3 +pkgver=7.0.5 pkgrel=1 pkgdesc="X11 various extension wire protocol" arch=(i686 x86_64) license=('custom') +depends=('inputproto>=1.5') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) -md5sums=('3a2e0252e853ab30b3bff05ac92ec61c') -sha1sums=('4a59150f0d9400f3997df542828834969a2c4842') +md5sums=('e6841018a7c64983b0954aa2c564d115') +sha1sums=('d62e704039e7c647da66c9a6531ebdede37dace8') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xf86-input-aiptek/PKGBUILD b/abs/core/xf86-input-aiptek/PKGBUILD index f3d5b39..509eba6 100644 --- a/abs/core/xf86-input-aiptek/PKGBUILD +++ b/abs/core/xf86-input-aiptek/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 10857 2008-08-31 13:24:55Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-aiptek -pkgver=1.0.1 -pkgrel=4 +pkgver=1.1.1 +pkgrel=1 pkgdesc="X.Org Aiptek USB Digital Tablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('951b2b1a270f67d28e2e89fd2b9f15ae') +md5sums=('2aa75313ea5652a8cf93581c65ee6493') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-calcomp/PKGBUILD b/abs/core/xf86-input-calcomp/PKGBUILD index b18d89c..2792455 100644 --- a/abs/core/xf86-input-calcomp/PKGBUILD +++ b/abs/core/xf86-input-calcomp/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11000 2008-08-31 13:46:51Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-calcomp -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 pkgdesc="X.Org CalComp Drawing Board input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('ebc9a64dc72ae3015c16011bbd2d3557') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('689099e2ade8a8c9f68f82fdf569b3ad') diff --git a/abs/core/xf86-input-digitaledge/PKGBUILD b/abs/core/xf86-input-digitaledge/PKGBUILD index 2017d0f..fcdfd1a 100644 --- a/abs/core/xf86-input-digitaledge/PKGBUILD +++ b/abs/core/xf86-input-digitaledge/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11039 2008-08-31 13:50:33Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-digitaledge -pkgver=1.1.0 -pkgrel=4 +pkgver=1.1.1 +pkgrel=1 pkgdesc="X.Org Digital Edge Tablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('53461c34cc0712aacab92b820b9fcb84') +md5sums=('4c27e0f3c6447e76df39a837fd46a00f') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-dmc/PKGBUILD b/abs/core/xf86-input-dmc/PKGBUILD index 5839019..afc4e86 100644 --- a/abs/core/xf86-input-dmc/PKGBUILD +++ b/abs/core/xf86-input-dmc/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11060 2008-08-31 13:52:40Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-dmc -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 pkgdesc="X.Org DMC FIT10 serial input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('91021ea8f3593221c0d9ee9cc14deb48') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('f21f008220bc7687ce1c34ab557ec32f') diff --git a/abs/core/xf86-input-dynapro/PKGBUILD b/abs/core/xf86-input-dynapro/PKGBUILD index 467e05d..4043a9f 100644 --- a/abs/core/xf86-input-dynapro/PKGBUILD +++ b/abs/core/xf86-input-dynapro/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11063 2008-08-31 13:54:38Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-dynapro -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 pkgdesc="X.org DynaPro Touch Screen input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('ceb5efbd3d62e24ab3a5f9f180777f7c') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('d47be12a230c44a05d56d6b79ebcfc38') diff --git a/abs/core/xf86-input-elographics/PKGBUILD b/abs/core/xf86-input-elographics/PKGBUILD index 374fcaa..1b48f31 100644 --- a/abs/core/xf86-input-elographics/PKGBUILD +++ b/abs/core/xf86-input-elographics/PKGBUILD @@ -1,26 +1,26 @@ -# $Id: PKGBUILD 3250 2008-06-21 18:18:33Z jgc $ +# $Id: PKGBUILD 17524 2008-10-30 22:03:55Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-elographics -pkgver=1.2.2 +pkgver=1.2.3 pkgrel=1 pkgdesc="X.org Elographics TouchScreen input driver" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.2') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('50a9c32af12ca4733afe23042f012f9c') +md5sums=('cc2923460c8eff9652b01889a063058d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xf86-input-evdev/PKGBUILD b/abs/core/xf86-input-evdev/PKGBUILD index 0745861..1ff72c5 100644 --- a/abs/core/xf86-input-evdev/PKGBUILD +++ b/abs/core/xf86-input-evdev/PKGBUILD @@ -1,22 +1,25 @@ -# $Id: PKGBUILD 3693 2008-06-29 11:05:37Z jgc $ +# $Id: PKGBUILD 26856 2009-02-13 15:54:01Z andyrtr $ # Maintainer: Alexander Baldeck pkgname=xf86-input-evdev -pkgver=2.0.1 +pkgver=2.1.2 pkgrel=1 pkgdesc="X.org evdev input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" +license=('custom') depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'inputproto>=1.4.3' 'randrproto>=1.2.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'inputproto>=1.5.0' 'randrproto>=1.2.1') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('061c4558316b1ec9ee71478bdf68b10c') +md5sums=('c27944124b31fa08ac13f244eb42c3fa') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xf86-input-fpit/PKGBUILD b/abs/core/xf86-input-fpit/PKGBUILD index c8931e9..280ca28 100644 --- a/abs/core/xf86-input-fpit/PKGBUILD +++ b/abs/core/xf86-input-fpit/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11093 2008-08-31 13:58:34Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-fpit -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.Org Fujitsu Stylistic Tablet PC input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a31066a2076d18619ceaea67f6d89698') +md5sums=('0f3e013d5ff58e0aba3d9e1d18830291') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-hyperpen/PKGBUILD b/abs/core/xf86-input-hyperpen/PKGBUILD index 8873552..b06636b 100644 --- a/abs/core/xf86-input-hyperpen/PKGBUILD +++ b/abs/core/xf86-input-hyperpen/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11115 2008-08-31 14:01:17Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-hyperpen -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.Org HyperPen Tablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('1dfccb75069e61e0c6f990b47eb58c40') +md5sums=('175c1e1ad668ebbbe212c1e975dd14f9') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-jamstudio/PKGBUILD b/abs/core/xf86-input-jamstudio/PKGBUILD index 28be4e1..35036e2 100644 --- a/abs/core/xf86-input-jamstudio/PKGBUILD +++ b/abs/core/xf86-input-jamstudio/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11114 2008-08-31 14:00:38Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-jamstudio -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.Org KB-Gear JamStudio pentablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a32e36a24545791a3408cdc5563b6523') +md5sums=('8011f90d7dd801d26e8c3dd058633978') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-joystick/PKGBUILD b/abs/core/xf86-input-joystick/PKGBUILD index e2146e8..de6f6e3 100644 --- a/abs/core/xf86-input-joystick/PKGBUILD +++ b/abs/core/xf86-input-joystick/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 23023 2009-01-01 16:35:00Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-joystick -pkgver=1.3.1 +pkgver=1.4.0 pkgrel=1 pkgdesc="X.Org Joystick input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('600bca5bd96a0dee90e20b606aa1eb93') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('ff25ea697cfa1570cc28f4b9cf9c761f') diff --git a/abs/core/xf86-input-keyboard/PKGBUILD b/abs/core/xf86-input-keyboard/PKGBUILD index 8e30c84..7b5a52f 100644 --- a/abs/core/xf86-input-keyboard/PKGBUILD +++ b/abs/core/xf86-input-keyboard/PKGBUILD @@ -1,25 +1,25 @@ -# $Id: PKGBUILD 3248 2008-06-21 18:17:00Z jgc $ +# $Id: PKGBUILD 26857 2009-02-13 15:55:24Z andyrtr $ # Maintainer; Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-keyboard -pkgver=1.3.1 +pkgver=1.3.2 pkgrel=1 pkgdesc="X.Org keyboard input driver" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') options=('!libtool') groups=('xorg' 'xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('ebe5dcf8eed819103909f18321fc3b9d') +md5sums=('d6fe929c4f6085d6dd67f197ae9c42f6') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xf86-input-magellan/PKGBUILD b/abs/core/xf86-input-magellan/PKGBUILD index 324c0be..9ed417a 100644 --- a/abs/core/xf86-input-magellan/PKGBUILD +++ b/abs/core/xf86-input-magellan/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11137 2008-08-31 14:03:11Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-magellan -pkgver=1.1.1 +pkgver=1.2.0 pkgrel=1 pkgdesc="X.Org Magellan Space mouse input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('9801ba10f15f8be2420dfb3f3b5d5d27') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('8a966d3b74dc2a801ff09b895037090c') diff --git a/abs/core/xf86-input-magictouch/PKGBUILD b/abs/core/xf86-input-magictouch/PKGBUILD index fdd4a4a..70c417e 100644 --- a/abs/core/xf86-input-magictouch/PKGBUILD +++ b/abs/core/xf86-input-magictouch/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 20562 2008-12-05 20:36:01Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-magictouch @@ -15,9 +15,8 @@ source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) md5sums=('d23f2791cd634ef85b7cc5e9da8f8407') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-input-microtouch/PKGBUILD b/abs/core/xf86-input-microtouch/PKGBUILD index be6b234..5984af1 100644 --- a/abs/core/xf86-input-microtouch/PKGBUILD +++ b/abs/core/xf86-input-microtouch/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11144 2008-08-31 14:03:49Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-microtouch -pkgver=1.1.1 +pkgver=1.2.0 pkgrel=1 pkgdesc="X.org microtouch input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('1ad1aee7d8df84b9ea832d1e75963257') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('9843fbea6cc0c4129e96ce9a6c893cf6') diff --git a/abs/core/xf86-input-mutouch/PKGBUILD b/abs/core/xf86-input-mutouch/PKGBUILD index 36da1e3..ce27c8e 100644 --- a/abs/core/xf86-input-mutouch/PKGBUILD +++ b/abs/core/xf86-input-mutouch/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 15051 2008-10-12 12:28:57Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-mutouch -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.1 +pkgrel=1 pkgdesc="X.org mutouch input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.2') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('98ae915c67cabf0e6d40a425dbdbe10b') +md5sums=('f28998cdfae2a4c41589299a4ee1f459') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-input-palmax/PKGBUILD b/abs/core/xf86-input-palmax/PKGBUILD index ff5c4b2..45c4da1 100644 --- a/abs/core/xf86-input-palmax/PKGBUILD +++ b/abs/core/xf86-input-palmax/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11159 2008-08-31 14:05:43Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-palmax -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org palmax input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('0959dbf7972dfb95f56e4bd3f56447cf') +md5sums=('9655d2235569c5a6ac321c6fb89a6f3b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-penmount/PKGBUILD b/abs/core/xf86-input-penmount/PKGBUILD index 062401f..b036796 100644 --- a/abs/core/xf86-input-penmount/PKGBUILD +++ b/abs/core/xf86-input-penmount/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11167 2008-08-31 14:06:53Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-penmount -pkgver=1.2.1 +pkgver=1.3.0 pkgrel=1 pkgdesc="X.org penmount input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('268af4dceda544d8c815b9b7e87d4536') +md5sums=('24594c0222e631fedccc7c540c420b03') diff --git a/abs/core/xf86-input-summa/PKGBUILD b/abs/core/xf86-input-summa/PKGBUILD index 9b0c9ef..abbae8a 100644 --- a/abs/core/xf86-input-summa/PKGBUILD +++ b/abs/core/xf86-input-summa/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11181 2008-08-31 14:11:07Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-summa -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org summa input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('b37a432fd87bb9f46d011622d6fce6b3') +md5sums=('7e17468c0d90dcbbb6202a8242efff4b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-synaptics/PKGBUILD b/abs/core/xf86-input-synaptics/PKGBUILD new file mode 100644 index 0000000..3ce5c88 --- /dev/null +++ b/abs/core/xf86-input-synaptics/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 26858 2009-02-13 15:56:55Z andyrtr $ +# Maintainer: Jan de Groot +# Contributor: Tobias Powalowski +# Contributor: Thomas Bächler +# Contributor: Alexander Baldeck +pkgname=xf86-input-synaptics +pkgver=1.0.0 +pkgrel=1 +pkgdesc="synaptics driver for notebook touchpads" +arch=(i686 x86_64) +license=('custom') +url="http://w1.894.telia.com/~u89404340/touchpad/" +depends=('libx11') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +replaces=('synaptics') +provides=('synaptics') +conflicts=('synaptics') +options=(!libtool) +source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('66dd051bb1885613d21ff7a77a7948d8') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -d "${pkgdir}/usr/share/hal/fdi/policy/10osvendor" + install -m644 fdi/*.fdi "${pkgdir}/usr/share/hal/fdi/policy/10osvendor/" || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/abs/core/xf86-input-tek4957/PKGBUILD b/abs/core/xf86-input-tek4957/PKGBUILD index 2ea7a0f..afa4498 100644 --- a/abs/core/xf86-input-tek4957/PKGBUILD +++ b/abs/core/xf86-input-tek4957/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11210 2008-08-31 14:13:46Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-tek4957 -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org tek4957 input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('be8a4bd474ad6c85b93f66dd6fcfa6ee') +md5sums=('8103db1ca5c55726e0b58148e4b1fc06') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-input-ur98/PKGBUILD b/abs/core/xf86-input-ur98/PKGBUILD index 8fcafc0..6c1ec76 100644 --- a/abs/core/xf86-input-ur98/PKGBUILD +++ b/abs/core/xf86-input-ur98/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 20489 2008-12-05 10:09:15Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-ur98 @@ -15,9 +15,8 @@ source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) md5sums=('3cf8928411458baaa9e726e51772c550') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-input-vmmouse/PKGBUILD b/abs/core/xf86-input-vmmouse/PKGBUILD index 55eed97..6b0ef90 100644 --- a/abs/core/xf86-input-vmmouse/PKGBUILD +++ b/abs/core/xf86-input-vmmouse/PKGBUILD @@ -1,23 +1,26 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22273 2008-12-25 16:56:34Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-input-vmmouse -pkgver=12.4.3 +pkgver=12.6.3 pkgrel=1 pkgdesc="X.org VMWare Mouse input driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('f5933143d7789557983ecb527092d14e') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('44730af795616ed4d4a0cd9a3a07935d') diff --git a/abs/core/xf86-input-void/PKGBUILD b/abs/core/xf86-input-void/PKGBUILD index d2d5b2b..ce4b0cf 100644 --- a/abs/core/xf86-input-void/PKGBUILD +++ b/abs/core/xf86-input-void/PKGBUILD @@ -1,23 +1,25 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11237 2008-08-31 14:17:19Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-input-void -pkgver=1.1.0 -pkgrel=2 +pkgver=1.1.1 +pkgrel=1 pkgdesc="X.org void input driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('ea72a92d43b95f413347df96d6a73933') +md5sums=('862c230f5f6e0c545f232b4c0fa9537a') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core/xf86-video-amd/PKGBUILD b/abs/core/xf86-video-amd/PKGBUILD index 1bf6f62..fa31ce0 100644 --- a/abs/core/xf86-video-amd/PKGBUILD +++ b/abs/core/xf86-video-amd/PKGBUILD @@ -1,27 +1,28 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11397 2008-08-31 14:36:04Z jgc $ # Maintainer: Alexander Baldeck pkgname=xf86-video-amd -pkgver=2.7.7.6 +pkgver=2.7.7.7 pkgrel=1 pkgdesc="X.org AMD/Geode LX & NX video driver" # there is no 64bit geode yet! arch=(i686) +license=('custom') url="http://xorg.freedesktop.org/" -makedepends=('pkgconfig' 'xorg-server>=1.4') +depends=('glibc') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') options=('!libtool') -license=('custom:amd') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2f3e8c3019afda926e7ab95b074c35e1') build() { cd ${startdir}/src/${pkgname}-${pkgver} ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} \ - --enable-visibility + --enable-visibility || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } -md5sums=('e839cc4552032b7bd44beb72e575980f') diff --git a/abs/core/xf86-video-apm/PKGBUILD b/abs/core/xf86-video-apm/PKGBUILD index 7808dbc..4ed1cff 100644 --- a/abs/core/xf86-video-apm/PKGBUILD +++ b/abs/core/xf86-video-apm/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3262 2008-06-21 18:38:40Z jgc $ +# $Id: PKGBUILD 22289 2008-12-25 17:19:55Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-apm -pkgver=1.2.0 +pkgver=1.2.1 pkgrel=1 pkgdesc="X.org Alliance ProMotion video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('673c93df004bb857dc89ae9c78ccf907') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('4f78650d79656dc803a720049d65682e') diff --git a/abs/core/xf86-video-ark/PKGBUILD b/abs/core/xf86-video-ark/PKGBUILD index cbe38bd..288686c 100644 --- a/abs/core/xf86-video-ark/PKGBUILD +++ b/abs/core/xf86-video-ark/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3260 2008-06-21 18:36:28Z jgc $ +# $Id: PKGBUILD 22271 2008-12-25 16:54:52Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-ark -pkgver=0.7.0 +pkgver=0.7.1 pkgrel=1 pkgdesc="X.org ark video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('be91391f061863617018403cdbd2944f') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('6826c556ebe9a1248cbc7f7edd44f956') diff --git a/abs/core/xf86-video-ati/PKGBUILD b/abs/core/xf86-video-ati/PKGBUILD index c95c021..1a7f5fe 100644 --- a/abs/core/xf86-video-ati/PKGBUILD +++ b/abs/core/xf86-video-ati/PKGBUILD @@ -1,51 +1,25 @@ -# $Id: PKGBUILD 3261 2008-06-21 18:38:23Z jgc $ -# Maintainer: Alexander Baldeck -# Contributor: Jan de Groot +# $Id: PKGBUILD 24044 2009-01-12 11:44:28Z giovanni $ +# Maintainer: Jan de Groot +# Contributor: Alexander Baldeck pkgname=xf86-video-ati -pkgver=6.8.0 -pkgrel=4 -_mesaver="7.0.3" +pkgver=6.10.0 +pkgrel=1 pkgdesc="X.org ati video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0') -makedepends=('pkgconfig' 'xorg-server>=1.4' 'imake' 'mesa>=7.0.3' - 'glproto>=1.4.9' 'xf86driproto' 'diffutils') +depends=('libdrm>=2.3.1' 'libpciaccess' 'ati-dri>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'fontsproto' + 'glproto>=1.4.9' 'xf86driproto' 'diffutils' 'xorg-util-macros') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') -license=('custom') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('6445815b12ffa4ccd1aafd43640f466d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ - --enable-dri + --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - - cd ${startdir}/src/Mesa-${_mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - # currently commented, see FS#7590 for details - #echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = r128 radeon r200 r300" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + make "DESTDIR=${pkgdir}" install || return 1 } -md5sums=('3c97c7925ebf4162eeb3463e23adc0e3' - 'e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core/xf86-video-ati/git-20081021.patch b/abs/core/xf86-video-ati/git-20081021.patch new file mode 100644 index 0000000..b3a1baf --- /dev/null +++ b/abs/core/xf86-video-ati/git-20081021.patch @@ -0,0 +1,17245 @@ +diff --git a/man/radeon.man b/man/radeon.man +index 03622a0..68029ed 100644 +--- a/man/radeon.man ++++ b/man/radeon.man +@@ -283,7 +283,8 @@ The default value is + .BI "Option \*qEnablePageFlip\*q \*q" boolean \*q + Enable page flipping for 3D acceleration. This will increase performance + but not work correctly in some rare cases, hence the default is +-.B off. ++.B off. ++It is currently only supported on r4xx and older hardware. + .TP + .BI "Option \*qForceMinDotClock\*q \*q" frequency \*q + Override minimum dot clock. Some Radeon BIOSes report a minimum dot +@@ -297,10 +298,9 @@ parameter may be specified as a float value with standard suffixes like + "k", "kHz", "M", "MHz". + .TP + .BI "Option \*qRenderAccel\*q \*q" boolean \*q +-Enables or disables hardware Render acceleration. This driver does not +-support component alpha (subpixel) rendering. It is only supported on +-Radeon series up to and including 9200 (9500/9700 and newer +-unsupported). The default is to ++Enables or disables hardware Render acceleration. It is supported on ++Radeon series up to and including r5xx for EXA and up to and ++including r2xx for XAA. The default is to + .B enable + Render acceleration. + .TP +diff --git a/src/AtomBios/CD_Operations.c b/src/AtomBios/CD_Operations.c +index 509aa0c..58c4ae9 100644 +--- a/src/AtomBios/CD_Operations.c ++++ b/src/AtomBios/CD_Operations.c +@@ -44,7 +44,6 @@ Revision History: + #include "xorg-server.h" + + #include "Decoder.h" +-#include "atombios.h" + + VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData); + VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData); +@@ -231,7 +230,7 @@ UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData); + pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; + } +- pParserTempData->IndirectIOTablePointer-=*(UINT16*)(pParserTempData->IndirectIOTablePointer+1); ++ pParserTempData->IndirectIOTablePointer-=UINT16LE_TO_CPU(*(UINT16*)(pParserTempData->IndirectIOTablePointer+1)); + pParserTempData->IndirectIOTablePointer++; + return pParserTempData->IndirectData; + } else pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; +@@ -243,7 +242,7 @@ UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.WordXX.PA_Destination; ++ pParserTempData->Index=(UINT32)UINT16LE_TO_CPU(pParserTempData->pCmd->Parameters.WordXX.PA_Destination); + pParserTempData->Index+=pParserTempData->CurrentRegBlock; + switch(pParserTempData->Multipurpose.CurrentPort){ + case ATI_RegsPort: +@@ -269,16 +268,16 @@ VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)= +- pParserTempData->DestData32; ++ CPU_TO_UINT32LE(pParserTempData->DestData32); + } + + VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + if (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination < WS_QUOTIENT_C) +- *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32; ++ *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32; + else +- switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) +- { ++ switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) ++ { + case WS_REMINDER_C: + pParserTempData->MultiplicationOrDivision.Division.Reminder32=pParserTempData->DestData32; + break; +@@ -339,7 +338,7 @@ VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; ++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); + pParserTempData->Index+=pParserTempData->CurrentRegBlock; + switch(pParserTempData->Multipurpose.CurrentPort) +@@ -361,9 +360,11 @@ UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { ++ UINT32 data; + pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; + pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); +- return *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index); ++ data = UINT32LE_TO_CPU(*(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index)); ++ return data; + } + + UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) +@@ -419,9 +420,12 @@ UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; ++ UINT32 ret; ++ ++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); +- return *(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock); ++ ret = UINT32LE_TO_CPU(*(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock)); ++ return ret; + } + + UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData) +@@ -435,7 +439,7 @@ UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + pParserTempData->CD_Mask.SrcAlignment=alignmentLowerWord; +- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; ++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); + return pParserTempData->Index; + } +@@ -443,7 +447,7 @@ UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + pParserTempData->CD_Mask.SrcAlignment=alignmentDword; +- pParserTempData->Index=*(UINT32*)pParserTempData->pWorkingTableData->IP; ++ pParserTempData->Index=UINT32LE_TO_CPU(*(UINT32*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT32); + return pParserTempData->Index; + } +@@ -474,7 +478,7 @@ VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword) + { +- pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); ++ pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); + } else + { + SkipDestination[pParserTempData->ParametersType.Destination](pParserTempData); +@@ -664,7 +668,8 @@ VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ + pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); + pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; + pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; +- while ( *(UINT16*)pParserTempData->pWorkingTableData->IP != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE)) ++ ++ while ( UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP) != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE)) + { + if (*pParserTempData->pWorkingTableData->IP == 'c') + { +@@ -673,7 +678,7 @@ VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ + pParserTempData->Index=GetParametersDirect16(pParserTempData); + if (pParserTempData->SourceData32 == pParserTempData->DestData32) + { +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index); + return; + } + } +@@ -695,7 +700,7 @@ VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + } else + { + pMasterDataTable = GetDataMasterTablePointer(pParserTempData->pDeviceData); +- pParserTempData->CurrentDataBlock= (TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]; ++ pParserTempData->CurrentDataBlock= UINT16LE_TO_CPU((TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]); + } + } + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); +@@ -704,13 +709,13 @@ VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + VOID cmdSet_ATI_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + pParserTempData->Multipurpose.CurrentPort=ATI_RegsPort; +- pParserTempData->CurrentPortID = (UINT8)((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination; ++ pParserTempData->CurrentPortID = (UINT8)UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination); + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); + } + + VOID cmdSet_Reg_Block(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->CurrentRegBlock = ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination; ++ pParserTempData->CurrentRegBlock = UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination); + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); + } + +@@ -754,19 +759,23 @@ VOID ProcessDebug(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + VOID ProcessDS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->pWorkingTableData->IP+=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination+sizeof(COMMAND_TYPE_OPCODE_OFFSET16); ++ pParserTempData->pWorkingTableData->IP+=UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination)+sizeof(COMMAND_TYPE_OPCODE_OFFSET16); + } + + +-VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ ++VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData) ++{ + UINT16* MasterTableOffset; + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); + MasterTableOffset = GetCommandMasterTablePointer(pParserTempData->pDeviceData); + if(((PTABLE_UNIT_TYPE)MasterTableOffset)[((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value]!=0 ) // if the offset is not ZERO + { ++ ATOM_TABLE_ATTRIBUTE lTableAttr; ++ + pParserTempData->CommandSpecific.IndexInMasterTable=GetTrueIndexInMasterTable(pParserTempData,((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value); +- pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = +- (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pParserTempData->pWorkingTableData->pTableHead)->TableAttribute.PS_SizeInBytes>>2); ++ ++ lTableAttr = GetCommandTableAttribute(pParserTempData->pWorkingTableData->pTableHead); ++ pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = (lTableAttr.PS_SizeInBytes >>2); + pParserTempData->pDeviceData->pParameterSpace+= + pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable; + pParserTempData->Status=CD_CALL_TABLE; +@@ -792,7 +801,7 @@ VOID ProcessJump(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + (pParserTempData->ParametersType.Destination == pParserTempData->CompareFlags )) + { + +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16)); + } else + { + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); +@@ -805,7 +814,7 @@ VOID ProcessJumpE(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + (pParserTempData->CompareFlags == pParserTempData->ParametersType.Destination)) + { + +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16)); + } else + { + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); +@@ -817,7 +826,7 @@ VOID ProcessJumpNE(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + if (pParserTempData->CompareFlags != Equal) + { + +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16)); + } else + { + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); +diff --git a/src/AtomBios/Decoder.c b/src/AtomBios/Decoder.c +index e8b3b6e..73aac94 100644 +--- a/src/AtomBios/Decoder.c ++++ b/src/AtomBios/Decoder.c +@@ -40,12 +40,9 @@ Revision History: + #endif + + #include +- ++#include "xorg-server.h" + + #include "Decoder.h" +-#include "atombios.h" +-#include "CD_binding.h" +-#include "CD_Common_Types.h" + + #ifndef DISABLE_EASF + #include "easf.h" +@@ -77,13 +74,13 @@ UINT16* GetCommandMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData) + /* + make MasterTableOffset point to EASF_ASIC_SETUP_TABLE structure, including usSize. + */ +- MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset); ++ MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+(UINT16LE_TO_CPU(((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset)); + } else + #endif + { + #ifndef UEFI_BUILD +- MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image); +- MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset + pDeviceData->pBIOS_Image ); ++ MasterTableOffset = (UINT16 *)(UINT16LE_TO_CPU(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER)) + pDeviceData->pBIOS_Image); ++ MasterTableOffset = (UINT16 *)((ULONG)UINT16LE_TO_CPU(((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset) + pDeviceData->pBIOS_Image ); + MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_COMMAND_TABLE *)MasterTableOffset)->ListOfCommandTables); + #else + MasterTableOffset = (UINT16 *)(&(GetCommandMasterTable( )->ListOfCommandTables)); +@@ -97,8 +94,8 @@ UINT16* GetDataMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData) + UINT16 *MasterTableOffset; + + #ifndef UEFI_BUILD +- MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image); +- MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset + pDeviceData->pBIOS_Image ); ++ MasterTableOffset = (UINT16 *)(UINT16LE_TO_CPU(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER)) + pDeviceData->pBIOS_Image); ++ MasterTableOffset = (UINT16 *)((ULONG)(UINT16LE_TO_CPU(((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset)) + pDeviceData->pBIOS_Image ); + MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_DATA_TABLE *)MasterTableOffset)->ListOfDataTables); + #else + MasterTableOffset = (UINT16 *)(&(GetDataMasterTable( )->ListOfDataTables)); +@@ -129,11 +126,29 @@ UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData, + } + } + ++ATOM_TABLE_ATTRIBUTE GetCommandTableAttribute(UINT8 *pTableHeader) ++{ ++ ATOM_TABLE_ATTRIBUTE_ACCESS lTableAccess; ++ ++ /* It's unclear whether this union trick breaks C aliasing rules, ++ * however, it's explicitely permitted by gcc, and we have other ++ * case where the code relies on a union being accessed by either ++ * of the "ways" and stay consistent so if a compiler breaks this ++ * assumption, it will probably need us to compile without strict ++ * aliasing enforcement ++ */ ++ lTableAccess.sbfAccess = ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pTableHeader)->TableAttribute; ++ lTableAccess.susAccess = UINT16LE_TO_CPU(lTableAccess.susAccess); ++ ++ return lTableAccess.sbfAccess; ++} ++ + CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTable) + { + PARSER_TEMP_DATA ParserTempData; + WORKING_TABLE_DATA STACK_BASED* prevWorkingTableData; + ++ memset(&ParserTempData, 0, sizeof(PARSER_TEMP_DATA)); + ParserTempData.pDeviceData=(DEVICE_DATA*)pDeviceData; + #ifndef DISABLE_EASF + if (pDeviceData->format == TABLE_FORMAT_EASF) +@@ -143,7 +158,7 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa + #endif + { + ParserTempData.pCmd=(GENERIC_ATTRIBUTE_COMMAND*)GetDataMasterTablePointer(pDeviceData); +- ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE]) + pDeviceData->pBIOS_Image); ++ ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE])) + pDeviceData->pBIOS_Image); + ParserTempData.IndirectIOTablePointer+=sizeof(ATOM_COMMON_TABLE_HEADER); + } + +@@ -160,65 +175,66 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa + ParserTempData.Status=CD_CALL_TABLE; + + do{ +- ++ + if (ParserTempData.Status==CD_CALL_TABLE) +- { ++ { + IndexInMasterTable=ParserTempData.CommandSpecific.IndexInMasterTable; + if(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]!=0) // if the offset is not ZERO +- { ++ { ++ ATOM_TABLE_ATTRIBUTE lTableAttr; ++ lTableAttr = GetCommandTableAttribute(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])+pDeviceData->pBIOS_Image); + #ifndef UEFI_BUILD + ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData, +- ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); ++ lTableAttr.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); + #else +- ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData, +- ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); ++ ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData, ++ lTableAttr.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); + #endif +- if (ParserTempData.pWorkingTableData!=NULL) +- { +- ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA)); ++ if (ParserTempData.pWorkingTableData!=NULL) ++ { ++ ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA)); + #ifndef UEFI_BUILD +- ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image); ++ ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])+pDeviceData->pBIOS_Image); + #else +- ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]); ++ ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])); + #endif +- ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER); +- ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData; +- prevWorkingTableData=ParserTempData.pWorkingTableData; +- ParserTempData.Status = CD_SUCCESS; +- } else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR; +- } else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND; ++ ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER); ++ ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData; ++ prevWorkingTableData=ParserTempData.pWorkingTableData; ++ ParserTempData.Status = CD_SUCCESS; ++ } else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR; ++ } else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND; + } + if (!CD_ERROR(ParserTempData.Status)) + { +- ParserTempData.Status = CD_SUCCESS; ++ ParserTempData.Status = CD_SUCCESS; + while (!CD_ERROR_OR_COMPLETED(ParserTempData.Status)) +- { +- ++ { + if (IS_COMMAND_VALID(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode)) +- { ++ { + ParserTempData.pCmd = (GENERIC_ATTRIBUTE_COMMAND*)ParserTempData.pWorkingTableData->IP; +- ++ + if (IS_END_OF_TABLE(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode)) + { + ParserTempData.Status=CD_COMPLETED; +- prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData; +- ++ prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData; ++ + FreeWorkSpace(pDeviceData, ParserTempData.pWorkingTableData); +- ParserTempData.pWorkingTableData=prevWorkingTableData; +- if (prevWorkingTableData!=NULL) +- { +- ParserTempData.pDeviceData->pParameterSpace-= +- (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)ParserTempData.pWorkingTableData-> +- pTableHead)->TableAttribute.PS_SizeInBytes>>2); +- } +- // if there is a parent table where to return, then restore PS_pointer to the original state ++ ParserTempData.pWorkingTableData=prevWorkingTableData; ++ if (prevWorkingTableData!=NULL) ++ { ++ ATOM_TABLE_ATTRIBUTE lTableAttr; ++ lTableAttr = GetCommandTableAttribute(ParserTempData.pWorkingTableData->pTableHead); ++ ParserTempData.pDeviceData->pParameterSpace-=(lTableAttr.PS_SizeInBytes>>2); ++ } ++ // if there is a parent table where to return, then restore PS_pointer to the original state + } + else + { +- IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData); ++ IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData); + (*CallTable[IndexInMasterTable].function)((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData); + #if (PARSER_TYPE!=DRIVER_TYPE_PARSER) +- BIOS_STACK_MODIFIER(); ++ BIOS_STACK_MODIFIER(); + #endif + } + } +@@ -227,13 +243,13 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa + ParserTempData.Status=CD_INVALID_OPCODE; + break; + } +- ++ + } // while + } // if + else + break; + } while (prevWorkingTableData!=NULL); +- if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS; ++ if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS; + return ParserTempData.Status; + } else return CD_SUCCESS; + } +diff --git a/src/AtomBios/hwserv_drv.c b/src/AtomBios/hwserv_drv.c +index a5f5a5b..9f2b6b9 100644 +--- a/src/AtomBios/hwserv_drv.c ++++ b/src/AtomBios/hwserv_drv.c +@@ -34,8 +34,14 @@ Revision History: + + NEG:27.09.2002 Initiated. + --*/ +-#include "CD_binding.h" +-#include "CD_hw_services.h" ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include ++#include "xorg-server.h" ++ ++#include "Decoder.h" + + //trace settings + #if DEBUG_OUTPUT_DEVICE & 1 +@@ -249,12 +255,12 @@ VOID WriteReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData) + + VOID ReadIndReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData) + { +- pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1)); ++ pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,UINT16LE_TO_CPU(*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1))); + } + + VOID WriteIndReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData) + { +- CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1),pWorkingTableData->IndirectData ); ++ CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,UINT16LE_TO_CPU(*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1)),pWorkingTableData->IndirectData); + } + + #endif +diff --git a/src/AtomBios/includes/CD_Common_Types.h b/src/AtomBios/includes/CD_Common_Types.h +index c60b652..071b8fd 100644 +--- a/src/AtomBios/includes/CD_Common_Types.h ++++ b/src/AtomBios/includes/CD_Common_Types.h +@@ -155,6 +155,18 @@ typedef unsigned long ULONG_PTR; + #ifndef FGL_LINUX + #pragma warning ( default : 4142 ) + #endif ++ ++#ifndef ATOM_BIG_ENDIAN ++#ifdef X_BYTE_ORDER ++#if X_BYTE_ORDER == X_BIG_ENDIAN ++#define ATOM_BIG_ENDIAN 1 ++#endif ++#endif ++#endif ++#ifndef ATOM_BIG_ENDIAN ++#define ATOM_BIG_ENDIAN 0 ++#endif ++ + #endif // _COMMON_TYPES_H_ + + // EOF +diff --git a/src/AtomBios/includes/CD_Definitions.h b/src/AtomBios/includes/CD_Definitions.h +index 98fd495..c00e93e 100644 +--- a/src/AtomBios/includes/CD_Definitions.h ++++ b/src/AtomBios/includes/CD_Definitions.h +@@ -39,11 +39,12 @@ NEG:27.08.2002 Initiated. + #ifndef _CD_DEFINITIONS_H + #define _CD_DEFINITIONS_H_ + #ifdef DRIVER_PARSER +-VOID *AllocateMemory(VOID *, UINT16); ++VOID *AllocateMemory(DEVICE_DATA *, UINT16); + VOID ReleaseMemory(DEVICE_DATA * , WORKING_TABLE_DATA* ); + #endif + CD_STATUS ParseTable(DEVICE_DATA* pDeviceData, UINT8 IndexInMasterTable); + //CD_STATUS CD_MainLoop(PARSER_TEMP_DATA_POINTER pParserTempData); + CD_STATUS Main_Loop(DEVICE_DATA* pDeviceData,UINT16 *MasterTableOffset,UINT8 IndexInMasterTable); + UINT16* GetCommandMasterTablePointer(DEVICE_DATA* pDeviceData); ++ATOM_TABLE_ATTRIBUTE GetCommandTableAttribute(UINT8 *pTableHeader); + #endif //CD_DEFINITIONS +diff --git a/src/AtomBios/includes/CD_Structs.h b/src/AtomBios/includes/CD_Structs.h +index c43f81d..01fb80e 100644 +--- a/src/AtomBios/includes/CD_Structs.h ++++ b/src/AtomBios/includes/CD_Structs.h +@@ -35,10 +35,18 @@ Revision History: + NEG:26.08.2002 Initiated. + --*/ + +-#include "CD_binding.h" + #ifndef _CD_STRUCTS_H_ + #define _CD_STRUCTS_H_ + ++#include "CD_binding.h" ++ ++/* Endaianness should be specified before inclusion, ++ * default to little endian ++ */ ++#ifndef ATOM_BIG_ENDIAN ++#error Endian not specified ++#endif ++ + #ifdef UEFI_BUILD + typedef UINT16** PTABLE_UNIT_TYPE; + typedef UINTN TABLE_UNIT_TYPE; +@@ -304,9 +312,15 @@ typedef union _PARAMETER_ACCESS { + }PARAMETER_ACCESS; + + typedef struct _COMMAND_ATTRIBUTE { ++#if ATOM_BIG_ENDIAN ++ UINT8 DestinationAlignment:2; ++ UINT8 SourceAlignment:3; ++ UINT8 Source:3; ++#else + UINT8 Source:3; + UINT8 SourceAlignment:3; + UINT8 DestinationAlignment:2; ++#endif + }COMMAND_ATTRIBUTE; + + typedef struct _SOURCE_DESTINATION_ALIGNMENT{ +@@ -363,11 +377,19 @@ typedef union _COMMAND_SPECIFIC_UNION{ + + + typedef struct _CD_GENERIC_BYTE{ ++#if ATOM_BIG_ENDIAN ++ UINT16 PS_SizeInDwordsUsedByCallingTable:5; ++ UINT16 CurrentPort:2; ++ UINT16 CommandAccessType:3; ++ UINT16 CurrentParameterSize:3; ++ UINT16 CommandType:3; ++#else + UINT16 CommandType:3; + UINT16 CurrentParameterSize:3; + UINT16 CommandAccessType:3; + UINT16 CurrentPort:2; + UINT16 PS_SizeInDwordsUsedByCallingTable:5; ++#endif + }CD_GENERIC_BYTE; + + typedef UINT8 COMMAND_TYPE_OPCODE_ONLY; +diff --git a/src/AtomBios/includes/Decoder.h b/src/AtomBios/includes/Decoder.h +index 24c25fc..1e143f0 100644 +--- a/src/AtomBios/includes/Decoder.h ++++ b/src/AtomBios/includes/Decoder.h +@@ -47,12 +47,32 @@ NEG:27.08.2002 Initiated. + #define PARSER_VERSION_MAJOR 0x00000000 + #define PARSER_VERSION_MINOR 0x0000000E + #define PARSER_VERSION (PARSER_VERSION_MAJOR | PARSER_VERSION_MINOR) +-#include "CD_binding.h" ++ + #include "CD_Common_Types.h" ++ ++#include "atombios.h" ++ ++/* these depends on some struct defined in atombios.h */ ++#include "CD_binding.h" + #include "CD_hw_services.h" + #include "CD_Structs.h" +-#include "CD_Definitions.h" + #include "CD_Opcodes.h" ++#include "CD_Definitions.h" ++ ++#if ATOM_BIG_ENDIAN ++extern UINT16 ATOM_BSWAP16(UINT16 x); ++extern UINT32 ATOM_BSWAP32(UINT32 x); ++ ++#define CPU_TO_UINT16LE(x) ATOM_BSWAP16(x) ++#define CPU_TO_UINT32LE(x) ATOM_BSWAP32(x) ++#define UINT16LE_TO_CPU(x) ATOM_BSWAP16(x) ++#define UINT32LE_TO_CPU(x) ATOM_BSWAP32(x) ++#else ++#define CPU_TO_UINT16LE(x) (x) ++#define CPU_TO_UINT32LE(x) (x) ++#define UINT16LE_TO_CPU(x) (x) ++#define UINT32LE_TO_CPU(x) (x) ++#endif + + #define SOURCE_ONLY_CMD_TYPE 0//0xFE + #define SOURCE_DESTINATION_CMD_TYPE 1//0xFD +diff --git a/src/AtomBios/includes/ObjectID.h b/src/AtomBios/includes/ObjectID.h +index 4b106cf..f1f18a4 100644 +--- a/src/AtomBios/includes/ObjectID.h ++++ b/src/AtomBios/includes/ObjectID.h +@@ -78,6 +78,10 @@ + #define ENCODER_OBJECT_ID_DP_DP501 0x1D + #define ENCODER_OBJECT_ID_INTERNAL_UNIPHY 0x1E + #define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA 0x1F ++#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 0x20 ++#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 0x21 ++ ++#define ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO 0xFF + + /****************************************************/ + /* Connector Object ID Definition */ +@@ -118,6 +122,8 @@ + #define GRAPH_OBJECT_ENUM_ID2 0x02 + #define GRAPH_OBJECT_ENUM_ID3 0x03 + #define GRAPH_OBJECT_ENUM_ID4 0x04 ++#define GRAPH_OBJECT_ENUM_ID5 0x05 ++#define GRAPH_OBJECT_ENUM_ID6 0x06 + + /****************************************************/ + /* Graphics Object ID Bit definition */ +@@ -173,7 +179,7 @@ + #define ENCODER_SI178_ENUM_ID1 0x2117 + #define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118 + #define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119 +-#define ENCODER_VT1625_ENUM_ID1 0x211A ++#define ENCODER_VT1625_ENUM_ID1 0x211A + #define ENCODER_HDMI_SI1932_ENUM_ID1 0x211B + #define ENCODER_ENCODER_DP_AN9801_ENUM_ID1 0x211C + #define ENCODER_DP_DP501_ENUM_ID1 0x211D +@@ -323,6 +329,26 @@ + GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ + ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT) + ++#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT) ++ + /****************************************************/ + /* Connector Object ID definition - Shared with BIOS */ + /****************************************************/ +@@ -453,6 +479,14 @@ + GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ + CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) + ++#define CONNECTOR_DISPLAYPORT_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\ ++ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) ++ ++#define CONNECTOR_DISPLAYPORT_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\ ++ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) ++ + /****************************************************/ + /* Router Object ID definition - Shared with BIOS */ + /****************************************************/ +diff --git a/src/AtomBios/includes/atombios.h b/src/AtomBios/includes/atombios.h +index 17483a6..9932b09 100644 +--- a/src/AtomBios/includes/atombios.h ++++ b/src/AtomBios/includes/atombios.h +@@ -34,6 +34,12 @@ + + #define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR) + ++/* Endianness should be specified before inclusion, ++ * default to little endian ++ */ ++#ifndef ATOM_BIG_ENDIAN ++#error Endian not specified ++#endif + + #ifdef _H2INC + #ifndef ULONG +@@ -260,7 +266,7 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{ + USHORT SetCRTC_UsingDTDTiming; //Atomic Table, directly used by various SW components,latest version 1.1 + USHORT ExternalEncoderControl; //Atomic Table, directly used by various SW components,latest version 2.1 + USHORT LVTMAOutputControl; //Atomic Table, directly used by various SW components,latest version 1.1 +- USHORT VRAM_BlockDetectionByStrap; ++ USHORT VRAM_BlockDetectionByStrap; //Atomic Table, used only by Bios + USHORT MemoryCleanUp; //Atomic Table, only used by Bios + USHORT ProcessI2cChannelTransaction; //Function Table,only used by Bios + USHORT WriteOneByteToHWAssistedI2C; //Function Table,indirectly used by various SW components +@@ -270,9 +276,9 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{ + USHORT MC_Synchronization; //Atomic Table, indirectly used by various SW components,called from SetMemoryClock + USHORT ComputeMemoryEnginePLL; //Atomic Table, indirectly used by various SW components,called from SetMemory/EngineClock + USHORT MemoryRefreshConversion; //Atomic Table, indirectly used by various SW components,called from SetMemory or SetEngineClock +- USHORT VRAM_GetCurrentInfoBlock; ++ USHORT VRAM_GetCurrentInfoBlock; //Atomic Table, used only by Bios + USHORT DynamicMemorySettings; //Atomic Table, indirectly used by various SW components,called from SetMemoryClock +- USHORT MemoryTraining; ++ USHORT MemoryTraining; //Atomic Table, used only by Bios + USHORT EnableSpreadSpectrumOnPPLL; //Atomic Table, directly used by various SW components,latest version 1.2 + USHORT TMDSAOutputControl; //Atomic Table, directly used by various SW components,latest version 1.1 + USHORT SetVoltage; //Function Table,directly and/or indirectly used by various SW components,latest version 1.1 +@@ -290,11 +296,12 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{ + USHORT DPEncoderService; //Function Table,only used by Bios + }ATOM_MASTER_LIST_OF_COMMAND_TABLES; + ++// For backward compatible + #define ReadEDIDFromHWAssistedI2C ProcessI2cChannelTransaction +- + #define UNIPHYTransmitterControl DIG1TransmitterControl + #define LVTMATransmitterControl DIG2TransmitterControl +-#define SetCRTC_DPM_State GetConditionalGoldenSetting ++#define SetCRTC_DPM_State GetConditionalGoldenSetting ++#define SetUniphyInstance ASIC_StaticPwrMgtStatusChange + + typedef struct _ATOM_MASTER_COMMAND_TABLE + { +@@ -302,9 +309,12 @@ typedef struct _ATOM_MASTER_COMMAND_TABLE + ATOM_MASTER_LIST_OF_COMMAND_TABLES ListOfCommandTables; + }ATOM_MASTER_COMMAND_TABLE; + ++/****************************************************************************/ ++// Structures used in every command table ++/****************************************************************************/ + typedef struct _ATOM_TABLE_ATTRIBUTE + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + USHORT UpdatedByUtility:1; //[15]=Table updated by utility flag + USHORT PS_SizeInBytes:7; //[14:8]=Size of parameter space in Bytes (multiple of a dword), + USHORT WS_SizeInBytes:8; //[7:0]=Size of workspace in Bytes (in multiple of a dword), +@@ -315,23 +325,26 @@ typedef struct _ATOM_TABLE_ATTRIBUTE + #endif + }ATOM_TABLE_ATTRIBUTE; + +-// Common header for all command tables. +-//Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header. +-//And the pointer actually points to this header. ++typedef union _ATOM_TABLE_ATTRIBUTE_ACCESS ++{ ++ ATOM_TABLE_ATTRIBUTE sbfAccess; ++ USHORT susAccess; ++}ATOM_TABLE_ATTRIBUTE_ACCESS; + ++/****************************************************************************/ ++// Common header for all command tables. ++// Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header. ++// And the pointer actually points to this header. ++/****************************************************************************/ + typedef struct _ATOM_COMMON_ROM_COMMAND_TABLE_HEADER + { + ATOM_COMMON_TABLE_HEADER CommonHeader; + ATOM_TABLE_ATTRIBUTE TableAttribute; + }ATOM_COMMON_ROM_COMMAND_TABLE_HEADER; + +- +-typedef struct _ASIC_INIT_PARAMETERS +-{ +- ULONG ulDefaultEngineClock; //In 10Khz unit +- ULONG ulDefaultMemoryClock; //In 10Khz unit +-}ASIC_INIT_PARAMETERS; +- ++/****************************************************************************/ ++// Structures used by ComputeMemoryEnginePLLTable ++/****************************************************************************/ + #define COMPUTE_MEMORY_PLL_PARAM 1 + #define COMPUTE_ENGINE_PLL_PARAM 2 + +@@ -368,6 +381,57 @@ typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2 + #define b3FIRST_TIME_CHANGE_CLOCK 0x08 //Applicable to both memory and engine clock change,when set, it means this is 1st time to change clock after ASIC bootup + #define b3SKIP_SW_PROGRAM_PLL 0x10 //Applicable to both memory and engine clock change, when set, it means the table will not program SPLL/MPLL + ++typedef struct _ATOM_COMPUTE_CLOCK_FREQ ++{ ++#if ATOM_BIG_ENDIAN ++ ULONG ulComputeClockFlag:8; // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM ++ ULONG ulClockFreq:24; // in unit of 10kHz ++#else ++ ULONG ulClockFreq:24; // in unit of 10kHz ++ ULONG ulComputeClockFlag:8; // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM ++#endif ++}ATOM_COMPUTE_CLOCK_FREQ; ++ ++typedef struct _ATOM_S_MPLL_FB_DIVIDER ++{ ++ USHORT usFbDivFrac; ++ USHORT usFbDiv; ++}ATOM_S_MPLL_FB_DIVIDER; ++ ++typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3 ++{ ++ union ++ { ++ ATOM_COMPUTE_CLOCK_FREQ ulClock; //Input Parameter ++ ATOM_S_MPLL_FB_DIVIDER ulFbDiv; //Output Parameter ++ }; ++ UCHAR ucRefDiv; //Output Parameter ++ UCHAR ucPostDiv; //Output Parameter ++ UCHAR ucCntlFlag; //Output Parameter ++ UCHAR ucReserved; ++}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3; ++ ++// ucCntlFlag ++#define ATOM_PLL_CNTL_FLAG_PLL_POST_DIV_EN 1 ++#define ATOM_PLL_CNTL_FLAG_MPLL_VCO_MODE 2 ++#define ATOM_PLL_CNTL_FLAG_FRACTION_DISABLE 4 ++ ++typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER ++{ ++ ATOM_COMPUTE_CLOCK_FREQ ulClock; ++ ULONG ulReserved[2]; ++}DYNAMICE_MEMORY_SETTINGS_PARAMETER; ++ ++typedef struct _DYNAMICE_ENGINE_SETTINGS_PARAMETER ++{ ++ ATOM_COMPUTE_CLOCK_FREQ ulClock; ++ ULONG ulMemoryClock; ++ ULONG ulReserved; ++}DYNAMICE_ENGINE_SETTINGS_PARAMETER; ++ ++/****************************************************************************/ ++// Structures used by SetEngineClockTable ++/****************************************************************************/ + typedef struct _SET_ENGINE_CLOCK_PARAMETERS + { + ULONG ulTargetEngineClock; //In 10Khz unit +@@ -379,7 +443,9 @@ typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION + COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved; + }SET_ENGINE_CLOCK_PS_ALLOCATION; + +- ++/****************************************************************************/ ++// Structures used by SetMemoryClockTable ++/****************************************************************************/ + typedef struct _SET_MEMORY_CLOCK_PARAMETERS + { + ULONG ulTargetMemoryClock; //In 10Khz unit +@@ -391,13 +457,24 @@ typedef struct _SET_MEMORY_CLOCK_PS_ALLOCATION + COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved; + }SET_MEMORY_CLOCK_PS_ALLOCATION; + ++/****************************************************************************/ ++// Structures used by ASIC_Init.ctb ++/****************************************************************************/ ++typedef struct _ASIC_INIT_PARAMETERS ++{ ++ ULONG ulDefaultEngineClock; //In 10Khz unit ++ ULONG ulDefaultMemoryClock; //In 10Khz unit ++}ASIC_INIT_PARAMETERS; ++ + typedef struct _ASIC_INIT_PS_ALLOCATION + { + ASIC_INIT_PARAMETERS sASICInitClocks; + SET_ENGINE_CLOCK_PS_ALLOCATION sReserved; //Caller doesn't need to init this structure + }ASIC_INIT_PS_ALLOCATION; + +- ++/****************************************************************************/ ++// Structure used by DynamicClockGatingTable.ctb ++/****************************************************************************/ + typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS + { + UCHAR ucEnable; // ATOM_ENABLE or ATOM_DISABLE +@@ -405,7 +482,9 @@ typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS + }DYNAMIC_CLOCK_GATING_PARAMETERS; + #define DYNAMIC_CLOCK_GATING_PS_ALLOCATION DYNAMIC_CLOCK_GATING_PARAMETERS + +- ++/****************************************************************************/ ++// Structure used by EnableASIC_StaticPwrMgtTable.ctb ++/****************************************************************************/ + typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS + { + UCHAR ucEnable; // ATOM_ENABLE or ATOM_DISABLE +@@ -413,7 +492,9 @@ typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS + }ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS; + #define ENABLE_ASIC_STATIC_PWR_MGT_PS_ALLOCATION ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by DAC_LoadDetectionTable.ctb ++/****************************************************************************/ + typedef struct _DAC_LOAD_DETECTION_PARAMETERS + { + USHORT usDeviceID; //{ATOM_DEVICE_CRTx_SUPPORT,ATOM_DEVICE_TVx_SUPPORT,ATOM_DEVICE_CVx_SUPPORT} +@@ -424,14 +505,15 @@ typedef struct _DAC_LOAD_DETECTION_PARAMETERS + // DAC_LOAD_DETECTION_PARAMETERS.ucMisc + #define DAC_LOAD_MISC_YPrPb 0x01 + +- + typedef struct _DAC_LOAD_DETECTION_PS_ALLOCATION + { + DAC_LOAD_DETECTION_PARAMETERS sDacload; + ULONG Reserved[2];// Don't set this one, allocation for EXT DAC + }DAC_LOAD_DETECTION_PS_ALLOCATION; + +- ++/****************************************************************************/ ++// Structures used by DAC1EncoderControlTable.ctb and DAC2EncoderControlTable.ctb ++/****************************************************************************/ + typedef struct _DAC_ENCODER_CONTROL_PARAMETERS + { + USHORT usPixelClock; // in 10KHz; for bios convenient +@@ -443,14 +525,11 @@ typedef struct _DAC_ENCODER_CONTROL_PARAMETERS + + #define DAC_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PARAMETERS + +-typedef struct _TV_ENCODER_CONTROL_PARAMETERS +-{ +- USHORT usPixelClock; // in 10KHz; for bios convenient +- UCHAR ucTvStandard; // See definition "ATOM_TV_NTSC ..." +- UCHAR ucAction; // 0: turn off encoder +- // 1: setup and turn on encoder +-}TV_ENCODER_CONTROL_PARAMETERS; +- ++/****************************************************************************/ ++// Structures used by DIG1EncoderControlTable ++// DIG2EncoderControlTable ++// ExternalEncoderControlTable ++/****************************************************************************/ + typedef struct _DIG_ENCODER_CONTROL_PARAMETERS + { + USHORT usPixelClock; // in 10KHz; for bios convenient +@@ -475,7 +554,6 @@ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS + }DIG_ENCODER_CONTROL_PARAMETERS; + #define DIG_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PARAMETERS + #define EXTERNAL_ENCODER_CONTROL_PARAMETER DIG_ENCODER_CONTROL_PARAMETERS +-#define EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PS_ALLOCATION + + //ucConfig + #define ATOM_ENCODER_CONFIG_DPLINKRATE_MASK 0x01 +@@ -506,6 +584,56 @@ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS + #define ATOM_ENCODER_MODE_CV 14 + #define ATOM_ENCODER_MODE_CRT 15 + ++typedef struct _ATOM_DIG_ENCODER_CONFIG_V2 ++{ ++#if ATOM_BIG_ENDIAN ++ UCHAR ucReserved1:2; ++ UCHAR ucTransmitterSel:2; // =0: UniphyAB, =1: UniphyCD =2: UniphyEF ++ UCHAR ucLinkSel:1; // =0: linkA/C/E =1: linkB/D/F ++ UCHAR ucReserved:1; ++ UCHAR ucDPLinkRate:1; // =0: 1.62Ghz, =1: 2.7Ghz ++#else ++ UCHAR ucDPLinkRate:1; // =0: 1.62Ghz, =1: 2.7Ghz ++ UCHAR ucReserved:1; ++ UCHAR ucLinkSel:1; // =0: linkA/C/E =1: linkB/D/F ++ UCHAR ucTransmitterSel:2; // =0: UniphyAB, =1: UniphyCD =2: UniphyEF ++ UCHAR ucReserved1:2; ++#endif ++}ATOM_DIG_ENCODER_CONFIG_V2; ++ ++ ++typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V2 ++{ ++ USHORT usPixelClock; // in 10KHz; for bios convenient ++ ATOM_DIG_ENCODER_CONFIG_V2 acConfig; ++ UCHAR ucAction; ++ UCHAR ucEncoderMode; ++ // =0: DP encoder ++ // =1: LVDS encoder ++ // =2: DVI encoder ++ // =3: HDMI encoder ++ // =4: SDVO encoder ++ UCHAR ucLaneNum; // how many lanes to enable ++ UCHAR ucReserved[2]; ++}DIG_ENCODER_CONTROL_PARAMETERS_V2; ++ ++//ucConfig ++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_MASK 0x01 ++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_1_62GHZ 0x00 ++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_2_70GHZ 0x01 ++#define ATOM_ENCODER_CONFIG_V2_LINK_SEL_MASK 0x04 ++#define ATOM_ENCODER_CONFIG_V2_LINKA 0x00 ++#define ATOM_ENCODER_CONFIG_V2_LINKB 0x04 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER_SEL_MASK 0x18 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER1 0x00 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER2 0x08 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER3 0x10 ++ ++/****************************************************************************/ ++// Structures used by UNIPHYTransmitterControlTable ++// LVTMATransmitterControlTable ++// DVOOutputControlTable ++/****************************************************************************/ + typedef struct _ATOM_DP_VS_MODE + { + UCHAR ucLaneSel; +@@ -583,7 +711,82 @@ typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS + #define ATOM_TRANSMITTER_ACTION_SETUP 10 + #define ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH 11 + +-/****************************Device Output Control Command Table Definitions**********************/ ++ ++// Following are used for DigTransmitterControlTable ver1.2 ++typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V2 ++{ ++#if ATOM_BIG_ENDIAN ++ UCHAR ucTransmitterSel:2; //bit7:6: =0 Dig Transmitter 1 ( Uniphy AB ) ++ // =1 Dig Transmitter 2 ( Uniphy CD ) ++ // =2 Dig Transmitter 3 ( Uniphy EF ) ++ UCHAR ucReserved:1; ++ UCHAR fDPConnector:1; //bit4=0: DP connector =1: None DP connector ++ UCHAR ucEncoderSel:1; //bit3=0: Data/Clk path source from DIGA( DIG inst0 ). =1: Data/clk path source from DIGB ( DIG inst1 ) ++ UCHAR ucLinkSel:1; //bit2=0: Uniphy LINKA or C or E when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is A or C or E ++ // =1: Uniphy LINKB or D or F when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is B or D or F ++ ++ UCHAR fCoherentMode:1; //bit1=1: Coherent Mode ( for DVI/HDMI mode ) ++ UCHAR fDualLinkConnector:1; //bit0=1: Dual Link DVI connector ++#else ++ UCHAR fDualLinkConnector:1; //bit0=1: Dual Link DVI connector ++ UCHAR fCoherentMode:1; //bit1=1: Coherent Mode ( for DVI/HDMI mode ) ++ UCHAR ucLinkSel:1; //bit2=0: Uniphy LINKA or C or E when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is A or C or E ++ // =1: Uniphy LINKB or D or F when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is B or D or F ++ UCHAR ucEncoderSel:1; //bit3=0: Data/Clk path source from DIGA( DIG inst0 ). =1: Data/clk path source from DIGB ( DIG inst1 ) ++ UCHAR fDPConnector:1; //bit4=0: DP connector =1: None DP connector ++ UCHAR ucReserved:1; ++ UCHAR ucTransmitterSel:2; //bit7:6: =0 Dig Transmitter 1 ( Uniphy AB ) ++ // =1 Dig Transmitter 2 ( Uniphy CD ) ++ // =2 Dig Transmitter 3 ( Uniphy EF ) ++#endif ++}ATOM_DIG_TRANSMITTER_CONFIG_V2; ++ ++//ucConfig ++//Bit0 ++#define ATOM_TRANSMITTER_CONFIG_V2_DUAL_LINK_CONNECTOR 0x01 ++ ++//Bit1 ++#define ATOM_TRANSMITTER_CONFIG_V2_COHERENT 0x02 ++ ++//Bit2 ++#define ATOM_TRANSMITTER_CONFIG_V2_LINK_SEL_MASK 0x04 ++#define ATOM_TRANSMITTER_CONFIG_V2_LINKA 0x00 ++#define ATOM_TRANSMITTER_CONFIG_V2_LINKB 0x04 ++ ++// Bit3 ++#define ATOM_TRANSMITTER_CONFIG_V2_ENCODER_SEL_MASK 0x08 ++#define ATOM_TRANSMITTER_CONFIG_V2_DIG1_ENCODER 0x00 // only used when ucAction == ATOM_TRANSMITTER_ACTION_ENABLE or ATOM_TRANSMITTER_ACTION_SETUP ++#define ATOM_TRANSMITTER_CONFIG_V2_DIG2_ENCODER 0x08 // only used when ucAction == ATOM_TRANSMITTER_ACTION_ENABLE or ATOM_TRANSMITTER_ACTION_SETUP ++ ++// Bit4 ++#define ATOM_TRASMITTER_CONFIG_V2_DP_CONNECTOR 0x10 ++ ++// Bit7:6 ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER_SEL_MASK 0xC0 ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER1 0x00 //AB ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER2 0x40 //CD ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER3 0x80 //EF ++ ++typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V2 ++{ ++ union ++ { ++ USHORT usPixelClock; // in 10KHz; for bios convenient ++ USHORT usInitInfo; // when init uniphy,lower 8bit is used for connector type defined in objectid.h ++ ATOM_DP_VS_MODE asMode; // DP Voltage swing mode ++ }; ++ ATOM_DIG_TRANSMITTER_CONFIG_V2 acConfig; ++ UCHAR ucAction; // define as ATOM_TRANSMITER_ACTION_XXX ++ UCHAR ucReserved[4]; ++}DIG_TRANSMITTER_CONTROL_PARAMETERS_V2; ++ ++ ++/****************************************************************************/ ++// Structures used by DAC1OuputControlTable ++// DAC2OuputControlTable ++// LVTMAOutputControlTable (Before DEC30) ++// TMDSAOutputControlTable (Before DEC30) ++/****************************************************************************/ + typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS + { + UCHAR ucAction; // Possible input:ATOM_ENABLE||ATOMDISABLE +@@ -622,7 +825,9 @@ typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS + #define DVO_OUTPUT_CONTROL_PS_ALLOCATION DIG_TRANSMITTER_CONTROL_PS_ALLOCATION + #define DVO_OUTPUT_CONTROL_PARAMETERS_V3 DIG_TRANSMITTER_CONTROL_PARAMETERS + +-/**************************************************************************/ ++/****************************************************************************/ ++// Structures used by BlankCRTCTable ++/****************************************************************************/ + typedef struct _BLANK_CRTC_PARAMETERS + { + UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2 +@@ -633,7 +838,11 @@ typedef struct _BLANK_CRTC_PARAMETERS + }BLANK_CRTC_PARAMETERS; + #define BLANK_CRTC_PS_ALLOCATION BLANK_CRTC_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by EnableCRTCTable ++// EnableCRTCMemReqTable ++// UpdateCRTC_DoubleBufferRegistersTable ++/****************************************************************************/ + typedef struct _ENABLE_CRTC_PARAMETERS + { + UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2 +@@ -642,7 +851,9 @@ typedef struct _ENABLE_CRTC_PARAMETERS + }ENABLE_CRTC_PARAMETERS; + #define ENABLE_CRTC_PS_ALLOCATION ENABLE_CRTC_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by SetCRTC_OverScanTable ++/****************************************************************************/ + typedef struct _SET_CRTC_OVERSCAN_PARAMETERS + { + USHORT usOverscanRight; // right +@@ -654,7 +865,9 @@ typedef struct _SET_CRTC_OVERSCAN_PARAMETERS + }SET_CRTC_OVERSCAN_PARAMETERS; + #define SET_CRTC_OVERSCAN_PS_ALLOCATION SET_CRTC_OVERSCAN_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by SetCRTC_ReplicationTable ++/****************************************************************************/ + typedef struct _SET_CRTC_REPLICATION_PARAMETERS + { + UCHAR ucH_Replication; // horizontal replication +@@ -664,7 +877,9 @@ typedef struct _SET_CRTC_REPLICATION_PARAMETERS + }SET_CRTC_REPLICATION_PARAMETERS; + #define SET_CRTC_REPLICATION_PS_ALLOCATION SET_CRTC_REPLICATION_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by SelectCRTC_SourceTable ++/****************************************************************************/ + typedef struct _SELECT_CRTC_SOURCE_PARAMETERS + { + UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2 +@@ -701,6 +916,10 @@ typedef struct _SELECT_CRTC_SOURCE_PARAMETERS_V2 + //#define ATOM_ENCODER_MODE_CV 14 + //#define ATOM_ENCODER_MODE_CRT 15 + ++/****************************************************************************/ ++// Structures used by SetPixelClockTable ++// GetPixelClockTable ++/****************************************************************************/ + //Major revision=1., Minor revision=1 + typedef struct _PIXEL_CLOCK_PARAMETERS + { +@@ -716,7 +935,6 @@ typedef struct _PIXEL_CLOCK_PARAMETERS + UCHAR ucPadding; + }PIXEL_CLOCK_PARAMETERS; + +- + //Major revision=1., Minor revision=2, add ucMiscIfno + //ucMiscInfo: + #define MISC_FORCE_REPROG_PIXEL_CLOCK 0x1 +@@ -787,6 +1005,9 @@ typedef struct _PIXEL_CLOCK_PARAMETERS_V3 + #define PIXEL_CLOCK_PARAMETERS_LAST PIXEL_CLOCK_PARAMETERS_V2 + #define GET_PIXEL_CLOCK_PS_ALLOCATION PIXEL_CLOCK_PARAMETERS_LAST + ++/****************************************************************************/ ++// Structures used by AdjustDisplayPllTable ++/****************************************************************************/ + typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS + { + USHORT usPixelClock; +@@ -804,6 +1025,9 @@ typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS + + #define ADJUST_DISPLAY_PLL_PS_ALLOCATION ADJUST_DISPLAY_PLL_PARAMETERS + ++/****************************************************************************/ ++// Structures used by EnableYUVTable ++/****************************************************************************/ + typedef struct _ENABLE_YUV_PARAMETERS + { + UCHAR ucEnable; // ATOM_ENABLE:Enable YUV or ATOM_DISABLE:Disable YUV (RGB) +@@ -812,20 +1036,27 @@ typedef struct _ENABLE_YUV_PARAMETERS + }ENABLE_YUV_PARAMETERS; + #define ENABLE_YUV_PS_ALLOCATION ENABLE_YUV_PARAMETERS + ++/****************************************************************************/ ++// Structures used by GetMemoryClockTable ++/****************************************************************************/ + typedef struct _GET_MEMORY_CLOCK_PARAMETERS + { + ULONG ulReturnMemoryClock; // current memory speed in 10KHz unit + } GET_MEMORY_CLOCK_PARAMETERS; + #define GET_MEMORY_CLOCK_PS_ALLOCATION GET_MEMORY_CLOCK_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by GetEngineClockTable ++/****************************************************************************/ + typedef struct _GET_ENGINE_CLOCK_PARAMETERS + { + ULONG ulReturnEngineClock; // current engine speed in 10KHz unit + } GET_ENGINE_CLOCK_PARAMETERS; + #define GET_ENGINE_CLOCK_PS_ALLOCATION GET_ENGINE_CLOCK_PARAMETERS + +- ++/****************************************************************************/ ++// Following Structures and constant may be obsolete ++/****************************************************************************/ + //Maxium 8 bytes,the data read in will be placed in the parameter space. + //Read operaion successeful when the paramter space is non-zero, otherwise read operation failed + typedef struct _READ_EDID_FROM_HW_I2C_DATA_PARAMETERS +@@ -875,6 +1106,9 @@ typedef struct _SET_UP_HW_I2C_DATA_PARAMETERS + /**************************************************************************/ + #define SPEED_FAN_CONTROL_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS + ++/****************************************************************************/ ++// Structures used by PowerConnectorDetectionTable ++/****************************************************************************/ + typedef struct _POWER_CONNECTOR_DETECTION_PARAMETERS + { + UCHAR ucPowerConnectorStatus; //Used for return value 0: detected, 1:not detected +@@ -891,6 +1125,10 @@ typedef struct POWER_CONNECTOR_DETECTION_PS_ALLOCATION + }POWER_CONNECTOR_DETECTION_PS_ALLOCATION; + + /****************************LVDS SS Command Table Definitions**********************/ ++ ++/****************************************************************************/ ++// Structures used by EnableSpreadSpectrumOnPPLLTable ++/****************************************************************************/ + typedef struct _ENABLE_LVDS_SS_PARAMETERS + { + USHORT usSpreadSpectrumPercentage; +@@ -936,6 +1174,9 @@ typedef struct _SET_PIXEL_CLOCK_PS_ALLOCATION + + #define ENABLE_VGA_RENDER_PS_ALLOCATION SET_PIXEL_CLOCK_PS_ALLOCATION + ++/****************************************************************************/ ++// Structures used by ### ++/****************************************************************************/ + typedef struct _MEMORY_TRAINING_PARAMETERS + { + ULONG ulTargetMemoryClock; //In 10Khz unit +@@ -943,8 +1184,14 @@ typedef struct _MEMORY_TRAINING_PARAMETERS + #define MEMORY_TRAINING_PS_ALLOCATION MEMORY_TRAINING_PARAMETERS + + +- + /****************************LVDS and other encoder command table definitions **********************/ ++ ++ ++/****************************************************************************/ ++// Structures used by LVDSEncoderControlTable (Before DCE30) ++// LVTMAEncoderControlTable (Before DCE30) ++// TMDSAEncoderControlTable (Before DCE30) ++/****************************************************************************/ + typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS + { + USHORT usPixelClock; // in 10KHz; for bios convenient +@@ -964,19 +1211,6 @@ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS + #define TMDS2_ENCODER_CONTROL_PARAMETERS TMDS1_ENCODER_CONTROL_PARAMETERS + #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION TMDS2_ENCODER_CONTROL_PARAMETERS + +-typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS +-{ +- UCHAR ucEnable; // Enable or Disable External TMDS encoder +- UCHAR ucMisc; // Bit0=0:Enable Single link;=1:Enable Dual link;Bit1 {=0:666RGB, =1:888RGB} +- UCHAR ucPadding[2]; +-}ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS; +- +-typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION +-{ +- ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder; +- WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion +-}ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION; +- + + //ucTableFormatRevision=1,ucTableContentRevision=2 + typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2 +@@ -1016,6 +1250,32 @@ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2 + + #define TMDS2_ENCODER_CONTROL_PARAMETERS_V2 TMDS1_ENCODER_CONTROL_PARAMETERS_V2 + #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V2 TMDS2_ENCODER_CONTROL_PARAMETERS_V2 ++ ++#define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2 ++#define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 ++ ++#define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 ++#define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3 ++ ++#define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 ++#define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3 ++ ++/****************************************************************************/ ++// Structures used by ### ++/****************************************************************************/ ++typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS ++{ ++ UCHAR ucEnable; // Enable or Disable External TMDS encoder ++ UCHAR ucMisc; // Bit0=0:Enable Single link;=1:Enable Dual link;Bit1 {=0:666RGB, =1:888RGB} ++ UCHAR ucPadding[2]; ++}ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS; ++ ++typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION ++{ ++ ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder; ++ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion ++}ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION; ++ + #define ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS_V2 LVDS_ENCODER_CONTROL_PARAMETERS_V2 + + typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2 +@@ -1024,7 +1284,15 @@ typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2 + WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion + }ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2; + ++typedef struct _EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION ++{ ++ DIG_ENCODER_CONTROL_PARAMETERS sDigEncoder; ++ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; ++}EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION; + ++/****************************************************************************/ ++// Structures used by DVOEncoderControlTable ++/****************************************************************************/ + //ucTableFormatRevision=1,ucTableContentRevision=3 + + //ucDVOConfig: +@@ -1050,15 +1318,6 @@ typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3 + // bit1=0: non-coherent mode + // =1: coherent mode + +-#define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2 +-#define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 +- +-#define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 +-#define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3 +- +-#define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 +-#define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3 +- + //========================================================================================== + //Only change is here next time when changing encoder parameter definitions again! + #define LVDS_ENCODER_CONTROL_PARAMETERS_LAST LVDS_ENCODER_CONTROL_PARAMETERS_V3 +@@ -1102,20 +1361,23 @@ typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3 + #define PANEL_ENCODER_75FRC_E 0x00 + #define PANEL_ENCODER_75FRC_F 0x80 + +-/**************************************************************************/ +- ++/****************************************************************************/ ++// Structures used by SetVoltageTable ++/****************************************************************************/ + #define SET_VOLTAGE_TYPE_ASIC_VDDC 1 + #define SET_VOLTAGE_TYPE_ASIC_MVDDC 2 + #define SET_VOLTAGE_TYPE_ASIC_MVDDQ 3 + #define SET_VOLTAGE_TYPE_ASIC_VDDCI 4 ++#define SET_VOLTAGE_INIT_MODE 5 ++#define SET_VOLTAGE_GET_MAX_VOLTAGE 6 //Gets the Max. voltage for the soldered Asic + + #define SET_ASIC_VOLTAGE_MODE_ALL_SOURCE 0x1 + #define SET_ASIC_VOLTAGE_MODE_SOURCE_A 0x2 + #define SET_ASIC_VOLTAGE_MODE_SOURCE_B 0x4 + +-#define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0 +-#define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1 +-#define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2 ++#define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0 ++#define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1 ++#define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2 + + typedef struct _SET_VOLTAGE_PARAMETERS + { +@@ -1125,7 +1387,6 @@ typedef struct _SET_VOLTAGE_PARAMETERS + UCHAR ucReserved; + }SET_VOLTAGE_PARAMETERS; + +- + typedef struct _SET_VOLTAGE_PARAMETERS_V2 + { + UCHAR ucVoltageType; // To tell which voltage to set up, VDDC/MVDDC/MVDDQ +@@ -1133,13 +1394,23 @@ typedef struct _SET_VOLTAGE_PARAMETERS_V2 + USHORT usVoltageLevel; // real voltage level + }SET_VOLTAGE_PARAMETERS_V2; + +- + typedef struct _SET_VOLTAGE_PS_ALLOCATION + { + SET_VOLTAGE_PARAMETERS sASICSetVoltage; + WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; + }SET_VOLTAGE_PS_ALLOCATION; + ++/****************************************************************************/ ++// Structures used by TVEncoderControlTable ++/****************************************************************************/ ++typedef struct _TV_ENCODER_CONTROL_PARAMETERS ++{ ++ USHORT usPixelClock; // in 10KHz; for bios convenient ++ UCHAR ucTvStandard; // See definition "ATOM_TV_NTSC ..." ++ UCHAR ucAction; // 0: turn off encoder ++ // 1: setup and turn on encoder ++}TV_ENCODER_CONTROL_PARAMETERS; ++ + typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION + { + TV_ENCODER_CONTROL_PARAMETERS sTVEncoder; +@@ -1153,6 +1424,9 @@ typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION + #define USHORT void* + #endif + ++/****************************************************************************/ ++// Structure used in Data.mtb ++/****************************************************************************/ + typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES + { + USHORT UtilityPipeLine; // Offest for the utility to get parser info,Don't change this position! +@@ -1195,14 +1469,15 @@ typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES + #define USHORT UTEMP + #endif + +- + typedef struct _ATOM_MASTER_DATA_TABLE + { + ATOM_COMMON_TABLE_HEADER sHeader; + ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables; + }ATOM_MASTER_DATA_TABLE; + +- ++/****************************************************************************/ ++// Structure used in MultimediaCapabilityInfoTable ++/****************************************************************************/ + typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -1213,7 +1488,9 @@ typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO + UCHAR ucHostPortInfo; // Provides host port configuration information + }ATOM_MULTIMEDIA_CAPABILITY_INFO; + +- ++/****************************************************************************/ ++// Structure used in MultimediaConfigInfoTable ++/****************************************************************************/ + typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -1232,7 +1509,9 @@ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO + UCHAR ucVideoInput4Info;// Video Input 4 Type (1:0) F/B setting (2) physical connector ID (5:3) reserved (7:6) + }ATOM_MULTIMEDIA_CONFIG_INFO; + +-/****************************Firmware Info Table Definitions**********************/ ++/****************************************************************************/ ++// Structures used in FirmwareInfoTable ++/****************************************************************************/ + + // usBIOSCapability Defintion: + // Bit 0 = 0: Bios image is not Posted, =1:Bios image is Posted; +@@ -1258,7 +1537,7 @@ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO + //Please don't add or expand this bitfield structure below, this one will retire soon.! + typedef struct _ATOM_FIRMWARE_CAPABILITY + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + USHORT Reserved:3; + USHORT HyperMemory_Size:4; + USHORT HyperMemory_Support:1; +@@ -1447,6 +1726,9 @@ typedef struct _ATOM_FIRMWARE_INFO_V1_4 + + #define ATOM_FIRMWARE_INFO_LAST ATOM_FIRMWARE_INFO_V1_4 + ++/****************************************************************************/ ++// Structures used in IntegratedSystemInfoTable ++/****************************************************************************/ + #define IGP_CAP_FLAG_DYNAMIC_CLOCK_EN 0x2 + #define IGP_CAP_FLAG_AC_CARD 0x4 + #define IGP_CAP_FLAG_SDVO_CARD 0x8 +@@ -1528,11 +1810,11 @@ typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 + { + ATOM_COMMON_TABLE_HEADER sHeader; + ULONG ulBootUpEngineClock; //in 10kHz unit +- ULONG ulReserved1[2]; //must be 0x0 for the reserved ++ ULONG ulReserved1[2]; //must be 0x0 for the reserved + ULONG ulBootUpUMAClock; //in 10kHz unit + ULONG ulBootUpSidePortClock; //in 10kHz unit + ULONG ulMinSidePortClock; //in 10kHz unit +- ULONG ulReserved2[6]; //must be 0x0 for the reserved ++ ULONG ulReserved2[6]; //must be 0x0 for the reserved + ULONG ulSystemConfig; //see explanation below + ULONG ulBootUpReqDisplayVector; + ULONG ulOtherDisplayMisc; +@@ -1555,7 +1837,13 @@ typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 + USHORT usUMADataReturnTime; + USHORT usLinkStatusZeroTime; + USHORT usReserved; +- ULONG ulReserved3[101]; //must be 0x0 ++ ULONG ulHighVoltageHTLinkFreq; // in 10Khz ++ ULONG ulLowVoltageHTLinkFreq; // in 10Khz ++ USHORT usMaxUpStreamHTLinkWidth; ++ USHORT usMaxDownStreamHTLinkWidth; ++ USHORT usMinUpStreamHTLinkWidth; ++ USHORT usMinDownStreamHTLinkWidth; ++ ULONG ulReserved3[97]; //must be 0x0 + }ATOM_INTEGRATED_SYSTEM_INFO_V2; + + /* +@@ -1564,8 +1852,20 @@ ulBootUpUMAClock: Boot-up UMA Clock in 10Khz; it must be 0x0 when UMA is no + ulBootUpSidePortClock: Boot-up SidePort Clock in 10Khz; it must be 0x0 when SidePort Memory is not present,this could be equal to or less than maximum supported Sideport memory clock + + ulSystemConfig: +-Bit[0]: =1 PowerExpress mode =0 Non-PowerExpress mode; +-Bit[1]=1: system is running at overdrived engine clock =0:system is not running at overdrived engine clock ++Bit[0]=1: PowerExpress mode =0 Non-PowerExpress mode; ++Bit[1]=1: system boots up at AMD overdrived state or user customized mode. In this case, driver will just stick to this boot-up mode. No other PowerPlay state ++ =0: system boots up at driver control state. Power state depends on PowerPlay table. ++Bit[2]=1: PWM method is used on NB voltage control. =0: GPIO method is used. ++Bit[3]=1: Only one power state(Performance) will be supported. ++ =0: Multiple power states supported from PowerPlay table. ++Bit[4]=1: CLMC is supported and enabled on current system. ++ =0: CLMC is not supported or enabled on current system. SBIOS need to support HT link/freq change through ATIF interface. ++Bit[5]=1: Enable CDLW for all driver control power states. Max HT width is from SBIOS, while Min HT width is determined by display requirement. ++ =0: CDLW is disabled. If CLMC is enabled case, Min HT width will be set equal to Max HT width. If CLMC disabled case, Max HT width will be applied. ++Bit[6]=1: High Voltage requested for all power states. In this case, voltage will be forced at 1.1v and powerplay table voltage drop/throttling request will be ignored. ++ =0: Voltage settings is determined by powerplay table. ++Bit[7]=1: Enable CLMC as hybrid Mode. CDLD and CILR will be disabled in this case and we're using legacy C1E. This is workaround for CPU(Griffin) performance issue. ++ =0: Enable CLMC as regular mode, CDLD and CILR will be enabled. + + ulBootUpReqDisplayVector: This dword is a bit vector indicates what display devices are requested during boot-up. Refer to ATOM_DEVICE_xxx_SUPPORT for the bit vector definitions. + +@@ -1594,16 +1894,21 @@ ucDockingPinBit: which bit in this register to read the pin status; + ucDockingPinPolarity:Polarity of the pin when docked; + + ulCPUCapInfo: [7:0]=1:Griffin;[7:0]=2:Greyhound;[7:0]=3:K8, other bits reserved for now and must be 0x0 +- ++ + usNumberOfCyclesInPeriod:Indicate how many cycles when PWM duty is 100%. +-usMaxNBVoltage:Voltage regulator dependent PWM value.Set this one to 0xFF if VC without PWM. Set this to 0x0 if no VC at all. +-usMinNBVoltage:Voltage regulator dependent PWM value.Set this one to 0x00 if VC without PWM or no VC at all. ++usMaxNBVoltage:Max. voltage control value in either PWM or GPIO mode. ++usMinNBVoltage:Min. voltage control value in either PWM or GPIO mode. ++ GPIO mode: both usMaxNBVoltage & usMinNBVoltage have a valid value ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE=0 ++ PWM mode: both usMaxNBVoltage & usMinNBVoltage have a valid value ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE=1 ++ GPU SW don't control mode: usMaxNBVoltage & usMinNBVoltage=0 and no care about ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE + usBootUpNBVoltage:Boot-up voltage regulator dependent PWM value. + ++ulHTLinkFreq: Bootup HT link Frequency in 10Khz. ++usMinHTLinkWidth: Bootup minimum HT link width. If CDLW disabled, this is equal to usMaxHTLinkWidth. ++ If CDLW enabled, both upstream and downstream width should be the same during bootup. ++usMaxHTLinkWidth: Bootup maximum HT link width. If CDLW disabled, this is equal to usMinHTLinkWidth. ++ If CDLW enabled, both upstream and downstream width should be the same during bootup. + +-ulHTLinkFreq: Current HT link Frequency in 10Khz. +-usMinHTLinkWidth: +-usMaxHTLinkWidth: + usUMASyncStartDelay: Memory access latency, required for watermark calculation + usUMADataReturnTime: Memory access latency, required for watermark calculation + usLinkStatusZeroTime:Memory access latency required for watermark calculation, set this to 0x0 for K8 CPU, set a proper value in 0.01 the unit of us +@@ -1612,10 +1917,27 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + if T0Ttime [5:4]=01b, then usLinkStatusZeroTime=T0Ttime [3:0]*0.5us (0.0 to 7.5us) + if T0Ttime [5:4]=10b, then usLinkStatusZeroTime=T0Ttime [3:0]*2.0us (0.0 to 30us) + if T0Ttime [5:4]=11b, and T0Ttime [3:0]=0x0 to 0xa, then usLinkStatusZeroTime=T0Ttime [3:0]*20us (0.0 to 200us) ++ ++ulHighVoltageHTLinkFreq: HT link frequency for power state with low voltage. If boot up runs in HT1, this must be 0. ++ This must be less than or equal to ulHTLinkFreq(bootup frequency). ++ulLowVoltageHTLinkFreq: HT link frequency for power state with low voltage or voltage scaling 1.0v~1.1v. If boot up runs in HT1, this must be 0. ++ This must be less than or equal to ulHighVoltageHTLinkFreq. ++ ++usMaxUpStreamHTLinkWidth: Asymmetric link width support in the future, to replace usMaxHTLinkWidth. Not used for now. ++usMaxDownStreamHTLinkWidth: same as above. ++usMinUpStreamHTLinkWidth: Asymmetric link width support in the future, to replace usMinHTLinkWidth. Not used for now. ++usMinDownStreamHTLinkWidth: same as above. + */ + ++ + #define SYSTEM_CONFIG_POWEREXPRESS_ENABLE 0x00000001 + #define SYSTEM_CONFIG_RUN_AT_OVERDRIVE_ENGINE 0x00000002 ++#define SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE 0x00000004 ++#define SYSTEM_CONFIG_PERFORMANCE_POWERSTATE_ONLY 0x00000008 ++#define SYSTEM_CONFIG_CLMC_ENABLED 0x00000010 ++#define SYSTEM_CONFIG_CDLW_ENABLED 0x00000020 ++#define SYSTEM_CONFIG_HIGH_VOLTAGE_REQUESTED 0x00000040 ++#define SYSTEM_CONFIG_CLMC_HYBRID_MODE_ENABLED 0x00000080 + + #define IGP_DDI_SLOT_LANE_CONFIG_MASK 0x000000FF + +@@ -1671,14 +1993,16 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + #define ATOM_DEVICE_DFP2_INDEX 0x00000007 + #define ATOM_DEVICE_CV_INDEX 0x00000008 + #define ATOM_DEVICE_DFP3_INDEX 0x00000009 +-#define ATOM_DEVICE_RESERVEDA_INDEX 0x0000000A +-#define ATOM_DEVICE_RESERVEDB_INDEX 0x0000000B ++#define ATOM_DEVICE_DFP4_INDEX 0x0000000A ++#define ATOM_DEVICE_DFP5_INDEX 0x0000000B + #define ATOM_DEVICE_RESERVEDC_INDEX 0x0000000C + #define ATOM_DEVICE_RESERVEDD_INDEX 0x0000000D + #define ATOM_DEVICE_RESERVEDE_INDEX 0x0000000E + #define ATOM_DEVICE_RESERVEDF_INDEX 0x0000000F +-#define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_CV_INDEX+2) ++#define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_DFP3_INDEX+1) + #define ATOM_MAX_SUPPORTED_DEVICE_INFO_2 ATOM_MAX_SUPPORTED_DEVICE_INFO ++#define ATOM_MAX_SUPPORTED_DEVICE_INFO_3 (ATOM_DEVICE_DFP5_INDEX + 1 ) ++ + #define ATOM_MAX_SUPPORTED_DEVICE (ATOM_DEVICE_RESERVEDF_INDEX+1) + + #define ATOM_DEVICE_CRT1_SUPPORT (0x1L << ATOM_DEVICE_CRT1_INDEX ) +@@ -1691,9 +2015,11 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + #define ATOM_DEVICE_DFP2_SUPPORT (0x1L << ATOM_DEVICE_DFP2_INDEX) + #define ATOM_DEVICE_CV_SUPPORT (0x1L << ATOM_DEVICE_CV_INDEX ) + #define ATOM_DEVICE_DFP3_SUPPORT (0x1L << ATOM_DEVICE_DFP3_INDEX ) ++#define ATOM_DEVICE_DFP4_SUPPORT (0x1L << ATOM_DEVICE_DFP4_INDEX ) ++#define ATOM_DEVICE_DFP5_SUPPORT (0x1L << ATOM_DEVICE_DFP5_INDEX ) + + #define ATOM_DEVICE_CRT_SUPPORT ATOM_DEVICE_CRT1_SUPPORT | ATOM_DEVICE_CRT2_SUPPORT +-#define ATOM_DEVICE_DFP_SUPPORT ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT ++#define ATOM_DEVICE_DFP_SUPPORT ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT | ATOM_DEVICE_DFP4_SUPPORT | ATOM_DEVICE_DFP5_SUPPORT + #define ATOM_DEVICE_TV_SUPPORT ATOM_DEVICE_TV1_SUPPORT | ATOM_DEVICE_TV2_SUPPORT + #define ATOM_DEVICE_LCD_SUPPORT ATOM_DEVICE_LCD1_SUPPORT | ATOM_DEVICE_LCD2_SUPPORT + +@@ -1764,10 +2090,9 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + // = 3-7 Reserved for future I2C engines + // [3-0] - I2C_LINE_MUX = A Mux number when it's HW assisted I2C or GPIO ID when it's SW I2C + +- + typedef struct _ATOM_I2C_ID_CONFIG + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + UCHAR bfHW_Capable:1; + UCHAR bfHW_EngineID:3; + UCHAR bfI2C_LineMux:4; +@@ -1785,6 +2110,9 @@ typedef union _ATOM_I2C_ID_CONFIG_ACCESS + }ATOM_I2C_ID_CONFIG_ACCESS; + + ++/****************************************************************************/ ++// Structure used in GPIO_I2C_InfoTable ++/****************************************************************************/ + typedef struct _ATOM_GPIO_I2C_ASSIGMENT + { + USHORT usClkMaskRegisterIndex; +@@ -1814,13 +2142,16 @@ typedef struct _ATOM_GPIO_I2C_INFO + ATOM_GPIO_I2C_ASSIGMENT asGPIO_Info[ATOM_MAX_SUPPORTED_DEVICE]; + }ATOM_GPIO_I2C_INFO; + ++/****************************************************************************/ ++// Common Structure used in other structures ++/****************************************************************************/ + + #ifndef _H2INC + + //Please don't add or expand this bitfield structure below, this one will retire soon.! + typedef struct _ATOM_MODE_MISC_INFO + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + USHORT Reserved:6; + USHORT RGB888:1; + USHORT DoubleClock:1; +@@ -1896,7 +2227,9 @@ typedef union _ATOM_MODE_MISC_INFO_ACCESS + // VESA_HSYNC_WIDTH = VESA_HSYNC_TIME = EDID_HSPW + // VESA_BORDER = EDID_BORDER + +- ++/****************************************************************************/ ++// Structure used in SetCRTC_UsingDTDTimingTable ++/****************************************************************************/ + typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS + { + USHORT usH_Size; +@@ -1914,6 +2247,9 @@ typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS + UCHAR ucPadding[3]; + }SET_CRTC_USING_DTD_TIMING_PARAMETERS; + ++/****************************************************************************/ ++// Structure used in SetCRTC_TimingTable ++/****************************************************************************/ + typedef struct _SET_CRTC_TIMING_PARAMETERS + { + USHORT usH_Total; // horizontal total +@@ -1934,7 +2270,11 @@ typedef struct _SET_CRTC_TIMING_PARAMETERS + }SET_CRTC_TIMING_PARAMETERS; + #define SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION SET_CRTC_TIMING_PARAMETERS + +- ++/****************************************************************************/ ++// Structure used in StandardVESA_TimingTable ++// AnalogTV_InfoTable ++// ComponentVideoInfoTable ++/****************************************************************************/ + typedef struct _ATOM_MODE_TIMING + { + USHORT usCRTC_H_Total; +@@ -1956,7 +2296,6 @@ typedef struct _ATOM_MODE_TIMING + UCHAR ucRefreshRate; + }ATOM_MODE_TIMING; + +- + typedef struct _ATOM_DTD_FORMAT + { + USHORT usPixClk; +@@ -1977,12 +2316,19 @@ typedef struct _ATOM_DTD_FORMAT + UCHAR ucRefreshRate; + }ATOM_DTD_FORMAT; + ++/****************************************************************************/ ++// Structure used in LVDS_InfoTable ++// * Need a document to describe this table ++/****************************************************************************/ + #define SUPPORTED_LCD_REFRESHRATE_30Hz 0x0004 + #define SUPPORTED_LCD_REFRESHRATE_40Hz 0x0008 + #define SUPPORTED_LCD_REFRESHRATE_50Hz 0x0010 + #define SUPPORTED_LCD_REFRESHRATE_60Hz 0x0020 + +-/****************************LVDS Info Table Definitions **********************/ ++//Once DAL sees this CAP is set, it will read EDID from LCD on its own instead of using sLCDTiming in ATOM_LVDS_INFO_V12. ++//Other entries in ATOM_LVDS_INFO_V12 are still valid/useful to DAL ++#define LCDPANEL_CAP_READ_EDID 0x1 ++ + //ucTableFormatRevision=1 + //ucTableContentRevision=1 + typedef struct _ATOM_LVDS_INFO +@@ -2111,9 +2457,9 @@ typedef struct _ATOM_SPREAD_SPECTRUM_INFO + ATOM_SPREAD_SPECTRUM_ASSIGNMENT asSS_Info[ATOM_MAX_SS_ENTRY]; + }ATOM_SPREAD_SPECTRUM_INFO; + +- +- +- ++/****************************************************************************/ ++// Structure used in AnalogTV_InfoTable (Top level) ++/****************************************************************************/ + //ucTVBootUpDefaultStd definiton: + + //ATOM_TV_NTSC 1 +@@ -2125,7 +2471,6 @@ typedef struct _ATOM_SPREAD_SPECTRUM_INFO + //ATOM_TV_PAL60 7 + //ATOM_TV_SECAM 8 + +- + //ucTVSuppportedStd definition: + #define NTSC_SUPPORT 0x1 + #define NTSCJ_SUPPORT 0x2 +@@ -2215,7 +2560,15 @@ typedef struct _ATOM_ANALOG_TV_INFO + #define ATOM_DFP3_DTD_MODE_TBL_ADDR (ATOM_DFP3_EDID_ADDR + ATOM_EDID_RAW_DATASIZE) + #define ATOM_DFP3_STD_MODE_TBL_ADDR (ATOM_DFP3_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE) + +-#define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR+ATOM_STD_MODE_SUPPORT_TBL_SIZE) ++#define ATOM_DFP4_EDID_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE) ++#define ATOM_DFP4_DTD_MODE_TBL_ADDR (ATOM_DFP4_EDID_ADDR + ATOM_EDID_RAW_DATASIZE) ++#define ATOM_DFP4_STD_MODE_TBL_ADDR (ATOM_DFP4_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE) ++ ++#define ATOM_DFP5_EDID_ADDR (ATOM_DFP4_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE) ++#define ATOM_DFP5_DTD_MODE_TBL_ADDR (ATOM_DFP5_EDID_ADDR + ATOM_EDID_RAW_DATASIZE) ++#define ATOM_DFP5_STD_MODE_TBL_ADDR (ATOM_DFP5_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE) ++ ++#define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP5_STD_MODE_TBL_ADDR+ATOM_STD_MODE_SUPPORT_TBL_SIZE) + + #define ATOM_STACK_STORAGE_START (ATOM_DP_TRAINING_TBL_ADDR+256) + #define ATOM_STACK_STORAGE_END ATOM_STACK_STORAGE_START+512 +@@ -2228,6 +2581,15 @@ typedef struct _ATOM_ANALOG_TV_INFO + #define ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION 0x1 + #define ATOM_VRAM_BLOCK_NEEDS_RESERVATION 0x0 + ++/***********************************************************************************/ ++// Structure used in VRAM_UsageByFirmwareTable ++// Note1: This table is filled by SetBiosReservationStartInFB in CoreCommSubs.asm ++// at running time. ++// note2: From RV770, the memory is more than 32bit addressable, so we will change ++// ucTableFormatRevision=1,ucTableContentRevision=4, the strcuture remains ++// exactly same as 1.1 and 1.2 (1.3 is never in use), but ulStartAddrUsedByFirmware ++// (in offset to start of memory address) is KB aligned instead of byte aligend. ++/***********************************************************************************/ + #define ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO 1 + + typedef struct _ATOM_FIRMWARE_VRAM_RESERVE_INFO +@@ -2243,8 +2605,9 @@ typedef struct _ATOM_VRAM_USAGE_BY_FIRMWARE + ATOM_FIRMWARE_VRAM_RESERVE_INFO asFirmwareVramReserveInfo[ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO]; + }ATOM_VRAM_USAGE_BY_FIRMWARE; + +-/**************************************************************************/ +-//GPIO Pin lut table definition ++/****************************************************************************/ ++// Structure used in GPIO_Pin_LUTTable ++/****************************************************************************/ + typedef struct _ATOM_GPIO_PIN_ASSIGNMENT + { + USHORT usGpioPin_AIndex; +@@ -2258,9 +2621,9 @@ typedef struct _ATOM_GPIO_PIN_LUT + ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1]; + }ATOM_GPIO_PIN_LUT; + +-/**************************************************************************/ +- +- ++/****************************************************************************/ ++// Structure used in ComponentVideoInfoTable ++/****************************************************************************/ + #define GPIO_PIN_ACTIVE_HIGH 0x1 + + #define MAX_SUPPORTED_CV_STANDARDS 5 +@@ -2350,8 +2713,9 @@ typedef struct _ATOM_COMPONENT_VIDEO_INFO_V21 + + #define ATOM_COMPONENT_VIDEO_INFO_LAST ATOM_COMPONENT_VIDEO_INFO_V21 + +-/**************************************************************************/ +-//Object table starts here ++/****************************************************************************/ ++// Structure used in object_InfoTable ++/****************************************************************************/ + typedef struct _ATOM_OBJECT_HEADER + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -2596,9 +2960,9 @@ typedef struct _ATOM_ROUTER_DATA_CLOCK_PATH_SELECT_RECORD + #define ATOM_ROUTER_MUX_PIN_STATE_MASK 0x0f + #define ATOM_ROUTER_MUX_PIN_SINGLE_STATE_COMPLEMENT 0x01 + +-/**************************************************************************/ +-//ASIC voltage data table starts here +- ++/****************************************************************************/ ++// ASIC voltage data table ++/****************************************************************************/ + typedef struct _ATOM_VOLTAGE_INFO_HEADER + { + USHORT usVDDCBaseLevel; //In number of 50mv unit +@@ -2824,13 +3188,16 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S0_CV_DIN 0x00002000L + #define ATOM_S0_CV_MASK (ATOM_S0_CV+ATOM_S0_CV_DIN) + +- + #define ATOM_S0_DFP1 0x00010000L + #define ATOM_S0_DFP2 0x00020000L + #define ATOM_S0_LCD1 0x00040000L + #define ATOM_S0_LCD2 0x00080000L + #define ATOM_S0_TV2 0x00100000L + #define ATOM_S0_DFP3 0x00200000L ++#define ATOM_S0_DFP4 0x00400000L ++#define ATOM_S0_DFP5 0x00800000L ++ ++#define ATOM_S0_DFP_MASK ATOM_S0_DFP1 | ATOM_S0_DFP2 | ATOM_S0_DFP3 | ATOM_S0_DFP4 | ATOM_S0_DFP5 + + #define ATOM_S0_FAD_REGISTER_BUG 0x02000000L // If set, indicates we are running a PCIE asic with + // the FAD/HDP reg access bug. Bit is read by DAL +@@ -2888,7 +3255,6 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S1_ROM_LOCATION_MASK 0x0000FFFFL + #define ATOM_S1_PCI_BUS_DEV_MASK 0xFFFF0000L + +- + // BIOS_2_SCRATCH Definition + #define ATOM_S2_TV1_STANDARD_MASK 0x0000000FL + #define ATOM_S2_CURRENT_BL_LEVEL_MASK 0x0000FF00L +@@ -2904,12 +3270,14 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S2_DFP2_DPMS_STATE 0x00800000L + #define ATOM_S2_CV_DPMS_STATE 0x01000000L + #define ATOM_S2_DFP3_DPMS_STATE 0x02000000L ++#define ATOM_S2_DFP4_DPMS_STATE 0x04000000L ++#define ATOM_S2_DFP5_DPMS_STATE 0x08000000L + +-#define ATOM_S2_DEVICE_DPMS_STATE (ATOM_S2_CRT1_DPMS_STATE+ATOM_S2_LCD1_DPMS_STATE+ATOM_S2_TV1_DPMS_STATE+\ +- ATOM_S2_DFP1I_DPMS_STATE+ATOM_S2_CRT2_DPMS_STATE+ATOM_S2_LCD2_DPMS_STATE+\ +- ATOM_S2_TV2_DPMS_STATE+ATOM_S2_DFP1X_DPMS_STATE+ATOM_S2_CV_DPMS_STATE+\ +- ATOM_S2_DFP3_DPMS_STATE) ++#define ATOM_S2_DFP_DPM_STATE ATOM_S2_DFP1_DPMS_STATE | ATOM_S2_DFP2_DPMS_STATE | ATOM_S2_DFP3_DPMS_STATE | ATOM_S2_DFP4_DPMS_STATE | ATOM_S2_DFP5_DPMS_STATE + ++#define ATOM_S2_DEVICE_DPMS_STATE (ATOM_S2_CRT1_DPMS_STATE+ATOM_S2_LCD1_DPMS_STATE+ATOM_S2_TV1_DPMS_STATE+\ ++ ATOM_S2_DFP_DPMS_STATE+ATOM_S2_CRT2_DPMS_STATE+ATOM_S2_LCD2_DPMS_STATE+\ ++ ATOM_S2_TV2_DPMS_STATE+ATOM_S2_CV_DPMS_STATE + + #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK 0x0C000000L + #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK_SHIFT 26 +@@ -2938,6 +3306,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S2_DFP2_DPMS_STATEb2 0x80 + #define ATOM_S2_CV_DPMS_STATEb3 0x01 + #define ATOM_S2_DFP3_DPMS_STATEb3 0x02 ++#define ATOM_S2_DFP4_DPMS_STATEb3 0x04 ++#define ATOM_S2_DFP5_DPMS_STATEb3 0x08 + + #define ATOM_S2_DEVICE_DPMS_MASKw1 0x3FF + #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASKb3 0x0C +@@ -2957,6 +3327,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_ACTIVE 0x00000080L + #define ATOM_S3_CV_ACTIVE 0x00000100L + #define ATOM_S3_DFP3_ACTIVE 0x00000200L ++#define ATOM_S3_DFP4_ACTIVE 0x00000400L ++#define ATOM_S3_DFP5_ACTIVE 0x00000800L + + #define ATOM_S3_DEVICE_ACTIVE_MASK 0x000003FFL + +@@ -2973,8 +3345,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_CRTC_ACTIVE 0x00800000L + #define ATOM_S3_CV_CRTC_ACTIVE 0x01000000L + #define ATOM_S3_DFP3_CRTC_ACTIVE 0x02000000L ++#define ATOM_S3_DFP4_CRTC_ACTIVE 0x04000000L ++#define ATOM_S3_DFP5_CRTC_ACTIVE 0x08000000L + +-#define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x03FF0000L ++#define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x0FFF0000L + #define ATOM_S3_ASIC_GUI_ENGINE_HUNG 0x20000000L + #define ATOM_S3_ALLOW_FAST_PWR_SWITCH 0x40000000L + #define ATOM_S3_RQST_GPU_USE_MIN_PWR 0x80000000L +@@ -2990,8 +3364,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_ACTIVEb0 0x80 + #define ATOM_S3_CV_ACTIVEb1 0x01 + #define ATOM_S3_DFP3_ACTIVEb1 0x02 ++#define ATOM_S3_DFP4_ACTIVEb1 0x04 ++#define ATOM_S3_DFP5_ACTIVEb1 0x08 + +-#define ATOM_S3_ACTIVE_CRTC1w0 0x3FF ++#define ATOM_S3_ACTIVE_CRTC1w0 0xFFF + + #define ATOM_S3_CRT1_CRTC_ACTIVEb2 0x01 + #define ATOM_S3_LCD1_CRTC_ACTIVEb2 0x02 +@@ -3003,8 +3379,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_CRTC_ACTIVEb2 0x80 + #define ATOM_S3_CV_CRTC_ACTIVEb3 0x01 + #define ATOM_S3_DFP3_CRTC_ACTIVEb3 0x02 ++#define ATOM_S3_DFP4_CRTC_ACTIVEb3 0x04 ++#define ATOM_S3_DFP5_CRTC_ACTIVEb3 0x08 + +-#define ATOM_S3_ACTIVE_CRTC2w1 0x3FF ++#define ATOM_S3_ACTIVE_CRTC2w1 0xFFF + + #define ATOM_S3_ASIC_GUI_ENGINE_HUNGb3 0x20 + #define ATOM_S3_ALLOW_FAST_PWR_SWITCHb3 0x40 +@@ -3015,13 +3393,11 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S4_LCD1_REFRESH_MASK 0x0000FF00L + #define ATOM_S4_LCD1_REFRESH_SHIFT 8 + +- + //Byte aligned defintion for BIOS usage + #define ATOM_S4_LCD1_PANEL_ID_MASKb0 0x0FF + #define ATOM_S4_LCD1_REFRESH_MASKb1 ATOM_S4_LCD1_PANEL_ID_MASKb0 + #define ATOM_S4_VRAM_INFO_MASKb2 ATOM_S4_LCD1_PANEL_ID_MASKb0 + +- + // BIOS_5_SCRATCH Definition, BIOS_5_SCRATCH is used by Firmware only !!!! + #define ATOM_S5_DOS_REQ_CRT1b0 0x01 + #define ATOM_S5_DOS_REQ_LCD1b0 0x02 +@@ -3033,6 +3409,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S5_DOS_REQ_DFP2b0 0x80 + #define ATOM_S5_DOS_REQ_CVb1 0x01 + #define ATOM_S5_DOS_REQ_DFP3b1 0x02 ++#define ATOM_S5_DOS_REQ_DFP4b1 0x04 ++#define ATOM_S5_DOS_REQ_DFP5b1 0x08 + + #define ATOM_S5_DOS_REQ_DEVICEw0 0x03FF + +@@ -3046,6 +3424,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S5_DOS_REQ_DFP2 0x0080 + #define ATOM_S5_DOS_REQ_CV 0x0100 + #define ATOM_S5_DOS_REQ_DFP3 0x0200 ++#define ATOM_S5_DOS_REQ_DFP4 0x0400 ++#define ATOM_S5_DOS_REQ_DFP5 0x0800 + + #define ATOM_S5_DOS_FORCE_CRT1b2 ATOM_S5_DOS_REQ_CRT1b0 + #define ATOM_S5_DOS_FORCE_TV1b2 ATOM_S5_DOS_REQ_TV1b0 +@@ -3073,7 +3453,6 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S6_DISPLAY_STATE_CHANGE 0x00004000L //This bit is recycled when ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE is set,previously it's SCL2_H_expansion + #define ATOM_S6_I2C_STATE_CHANGE 0x00008000L //This bit is recycled,when ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE is set,previously it's SCL2_V_expansion + +- + #define ATOM_S6_ACC_REQ_CRT1 0x00010000L + #define ATOM_S6_ACC_REQ_LCD1 0x00020000L + #define ATOM_S6_ACC_REQ_TV1 0x00040000L +@@ -3084,8 +3463,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S6_ACC_REQ_DFP2 0x00800000L + #define ATOM_S6_ACC_REQ_CV 0x01000000L + #define ATOM_S6_ACC_REQ_DFP3 0x02000000L ++#define ATOM_S6_ACC_REQ_DFP4 0x04000000L ++#define ATOM_S6_ACC_REQ_DFP5 0x08000000L + +-#define ATOM_S6_ACC_REQ_MASK 0x03FF0000L ++#define ATOM_S6_ACC_REQ_MASK 0x0FFF0000L + #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE 0x10000000L + #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH 0x20000000L + #define ATOM_S6_VRI_BRIGHTNESS_CHANGE 0x40000000L +@@ -3117,6 +3498,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S6_ACC_REQ_DFP2b2 0x80 + #define ATOM_S6_ACC_REQ_CVb3 0x01 + #define ATOM_S6_ACC_REQ_DFP3b3 0x02 ++#define ATOM_S6_ACC_REQ_DFP4b3 0x04 ++#define ATOM_S6_ACC_REQ_DFP5b3 0x08 + + #define ATOM_S6_ACC_REQ_DEVICEw1 ATOM_S5_DOS_REQ_DEVICEw0 + #define ATOM_S6_SYSTEM_POWER_MODE_CHANGEb3 0x10 +@@ -3391,7 +3774,7 @@ typedef struct _ATOM_TV_MODE_SCALER_PTR + typedef struct _ATOM_STANDARD_VESA_TIMING + { + ATOM_COMMON_TABLE_HEADER sHeader; +- ATOM_MODE_TIMING aModeTimings[16]; // 16 is not the real array number, just for initial allocation ++ ATOM_DTD_FORMAT aModeTimings[16]; // 16 is not the real array number, just for initial allocation + }ATOM_STANDARD_VESA_TIMING; + + +@@ -3426,7 +3809,7 @@ typedef struct _ATOM_MEMORY_VENDOR_BLOCK{ + + + typedef struct _ATOM_MEMORY_SETTING_ID_CONFIG{ +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + ULONG ucMemBlkId:8; + ULONG ulMemClockRange:24; + #else +@@ -3470,6 +3853,11 @@ typedef struct _ATOM_INIT_REG_BLOCK{ + #define VALUE_SAME_AS_ABOVE 0 + #define VALUE_MASK_DWORD 0x84 + ++#define INDEX_ACCESS_RANGE_BEGIN (VALUE_DWORD + 1) ++#define INDEX_ACCESS_RANGE_END (INDEX_ACCESS_RANGE_BEGIN + 1) ++#define VALUE_INDEX_ACCESS_SINGLE (INDEX_ACCESS_RANGE_END + 1) ++ ++ + typedef struct _ATOM_MC_INIT_PARAM_TABLE + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -3508,6 +3896,28 @@ typedef struct _ATOM_MC_INIT_PARAM_TABLE + #define QIMONDA INFINEON + #define PROMOS MOSEL + ++/////////////Support for GDDR5 MC uCode to reside in upper 64K of ROM///////////// ++ ++#define UCODE_ROM_START_ADDRESS 0x1c000 ++#define UCODE_SIGNATURE 0x4375434d // 'MCuC' - MC uCode ++ ++//uCode block header for reference ++ ++typedef struct _MCuCodeHeader ++{ ++ ULONG ulSignature; ++ UCHAR ucRevision; ++ UCHAR ucChecksum; ++ UCHAR ucReserved1; ++ UCHAR ucReserved2; ++ USHORT usParametersLength; ++ USHORT usUCodeLength; ++ USHORT usReserved1; ++ USHORT usReserved2; ++} MCuCodeHeader; ++ ++////////////////////////////////////////////////////////////////////////////////// ++ + #define ATOM_MAX_NUMBER_OF_VRAM_MODULE 16 + + #define ATOM_VRAM_MODULE_MEMORY_VENDOR_ID_MASK 0xF +@@ -3564,6 +3974,42 @@ typedef struct _ATOM_VRAM_MODULE_V2 + typedef struct _ATOM_MEMORY_TIMING_FORMAT + { + ULONG ulClkRange; // memory clock in 10kHz unit, when target memory clock is below this clock, use this memory timing ++ union{ ++ USHORT usMRS; // mode register ++ USHORT usDDR3_MR0; ++ }; ++ union{ ++ USHORT usEMRS; // extended mode register ++ USHORT usDDR3_MR1; ++ }; ++ UCHAR ucCL; // CAS latency ++ UCHAR ucWL; // WRITE Latency ++ UCHAR uctRAS; // tRAS ++ UCHAR uctRC; // tRC ++ UCHAR uctRFC; // tRFC ++ UCHAR uctRCDR; // tRCDR ++ UCHAR uctRCDW; // tRCDW ++ UCHAR uctRP; // tRP ++ UCHAR uctRRD; // tRRD ++ UCHAR uctWR; // tWR ++ UCHAR uctWTR; // tWTR ++ UCHAR uctPDIX; // tPDIX ++ UCHAR uctFAW; // tFAW ++ UCHAR uctAOND; // tAOND ++ union ++ { ++ struct { ++ UCHAR ucflag; // flag to control memory timing calculation. bit0= control EMRS2 Infineon ++ UCHAR ucReserved; ++ }; ++ USHORT usDDR3_MR2; ++ }; ++}ATOM_MEMORY_TIMING_FORMAT; ++ ++ ++typedef struct _ATOM_MEMORY_TIMING_FORMAT_V1 ++{ ++ ULONG ulClkRange; // memory clock in 10kHz unit, when target memory clock is below this clock, use this memory timing + USHORT usMRS; // mode register + USHORT usEMRS; // extended mode register + UCHAR ucCL; // CAS latency +@@ -3581,16 +4027,31 @@ typedef struct _ATOM_MEMORY_TIMING_FORMAT + UCHAR uctFAW; // tFAW + UCHAR uctAOND; // tAOND + UCHAR ucflag; // flag to control memory timing calculation. bit0= control EMRS2 Infineon +- UCHAR ucReserved; // +-}ATOM_MEMORY_TIMING_FORMAT; ++////////////////////////////////////GDDR parameters/////////////////////////////////// ++ UCHAR uctCCDL; // ++ UCHAR uctCRCRL; // ++ UCHAR uctCRCWL; // ++ UCHAR uctCKE; // ++ UCHAR uctCKRSE; // ++ UCHAR uctCKRSX; // ++ UCHAR uctFAW32; // ++ UCHAR ucReserved1; // ++ UCHAR ucReserved2; // ++ UCHAR ucTerminator; ++}ATOM_MEMORY_TIMING_FORMAT_V1; + +-#define MEM_TIMING_FLAG_APP_MODE 0x01 // =0 mid clock range =1 high clock range + + typedef struct _ATOM_MEMORY_FORMAT + { + ULONG ulDllDisClock; // memory DLL will be disable when target memory clock is below this clock +- USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type +- USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ union{ ++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_Reserved; // Not used for DDR3 memory ++ }; ++ union{ ++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_MR3; // Used for DDR3 memory ++ }; + UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4;[3:0] - must not be used for now; + UCHAR ucMemoryVenderID; // Predefined,never change across designs or memory type/vender. If not predefined, vendor detection table gets executed + UCHAR ucRow; // Number of Row,in power of 2; +@@ -3629,6 +4090,79 @@ typedef struct _ATOM_VRAM_MODULE_V3 + + #define ATOM_VRAM_MODULE ATOM_VRAM_MODULE_V3 + ++typedef struct _ATOM_VRAM_MODULE_V4 ++{ ++ ULONG ulChannelMapCfg; // board dependent parameter: Channel combination ++ USHORT usModuleSize; // size of ATOM_VRAM_MODULE_V4, make it easy for VBIOS to look for next entry of VRAM_MODULE ++ USHORT usPrivateReserved; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS) ++ USHORT usReserved; ++ UCHAR ucExtMemoryID; // An external indicator (by hardcode, callback or pin) to tell what is the current memory module ++ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4; 0x5:DDR5 [3:0] - Must be 0x0 for now; ++ UCHAR ucChannelNum; // Number of channels present in this module config ++ UCHAR ucChannelWidth; // 0 - 32 bits; 1 - 64 bits ++ UCHAR ucDensity; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 ++ UCHAR ucFlag; // To enable/disable functionalities based on memory type ++ UCHAR ucMisc; // bit0: 0 - single rank; 1 - dual rank; bit2: 0 - burstlength 4, 1 - burstlength 8 ++ UCHAR ucVREFI; // board dependent parameter ++ UCHAR ucNPL_RT; // board dependent parameter:NPL round trip delay, used for calculate memory timing parameters ++ UCHAR ucPreamble; // [7:4] Write Preamble, [3:0] Read Preamble ++ UCHAR ucMemorySize; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros ++ UCHAR ucReserved[3]; ++ ++//compare with V3, we flat the struct by merging ATOM_MEMORY_FORMAT (as is) into V4 as the same level ++ union{ ++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_Reserved; ++ }; ++ union{ ++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_MR3; // Used for DDR3 memory ++ }; ++ UCHAR ucMemoryVenderID; // Predefined, If not predefined, vendor detection table gets executed ++ UCHAR ucRefreshRateFactor; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) ++ UCHAR ucReserved2[2]; ++ ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];//Memory Timing block sort from lower clock to higher clock ++}ATOM_VRAM_MODULE_V4; ++ ++#define VRAM_MODULE_V4_MISC_RANK_MASK 0x3 ++#define VRAM_MODULE_V4_MISC_DUAL_RANK 0x1 ++#define VRAM_MODULE_V4_MISC_BL_MASK 0x4 ++#define VRAM_MODULE_V4_MISC_BL8 0x4 ++#define VRAM_MODULE_V4_MISC_DUAL_CS 0x10 ++ ++typedef struct _ATOM_VRAM_MODULE_V5 ++{ ++ ULONG ulChannelMapCfg; // board dependent parameter: Channel combination ++ USHORT usModuleSize; // size of ATOM_VRAM_MODULE_V4, make it easy for VBIOS to look for next entry of VRAM_MODULE ++ USHORT usPrivateReserved; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS) ++ USHORT usReserved; ++ UCHAR ucExtMemoryID; // An external indicator (by hardcode, callback or pin) to tell what is the current memory module ++ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4; 0x5:DDR5 [3:0] - Must be 0x0 for now; ++ UCHAR ucChannelNum; // Number of channels present in this module config ++ UCHAR ucChannelWidth; // 0 - 32 bits; 1 - 64 bits ++ UCHAR ucDensity; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 ++ UCHAR ucFlag; // To enable/disable functionalities based on memory type ++ UCHAR ucMisc; // bit0: 0 - single rank; 1 - dual rank; bit2: 0 - burstlength 4, 1 - burstlength 8 ++ UCHAR ucVREFI; // board dependent parameter ++ UCHAR ucNPL_RT; // board dependent parameter:NPL round trip delay, used for calculate memory timing parameters ++ UCHAR ucPreamble; // [7:4] Write Preamble, [3:0] Read Preamble ++ UCHAR ucMemorySize; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros ++ UCHAR ucReserved[3]; ++ ++//compare with V3, we flat the struct by merging ATOM_MEMORY_FORMAT (as is) into V4 as the same level ++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ UCHAR ucMemoryVenderID; // Predefined, If not predefined, vendor detection table gets executed ++ UCHAR ucRefreshRateFactor; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) ++ UCHAR ucFIFODepth; // FIFO depth supposes to be detected during vendor detection, but if we dont do vendor detection we have to hardcode FIFO Depth ++ UCHAR ucCDR_Bandwidth; // [0:3]=Read CDR bandwidth, [4:7] - Write CDR Bandwidth ++ ATOM_MEMORY_TIMING_FORMAT_V1 asMemTiming[5];//Memory Timing block sort from lower clock to higher clock ++}ATOM_VRAM_MODULE_V5; ++ + typedef struct _ATOM_VRAM_INFO_V2 + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -3651,6 +4185,21 @@ typedef struct _ATOM_VRAM_INFO_V3 + + #define ATOM_VRAM_INFO_LAST ATOM_VRAM_INFO_V3 + ++typedef struct _ATOM_VRAM_INFO_V4 ++{ ++ ATOM_COMMON_TABLE_HEADER sHeader; ++ USHORT usMemAdjustTblOffset; // offset of ATOM_INIT_REG_BLOCK structure for memory vendor specific MC adjust setting ++ USHORT usMemClkPatchTblOffset; // offset of ATOM_INIT_REG_BLOCK structure for memory clock specific MC setting ++ USHORT usRerseved; ++ UCHAR ucMemDQ7_0ByteRemap; // DQ line byte remap, =0: Memory Data line BYTE0, =1: BYTE1, =2: BYTE2, =3: BYTE3 ++ ULONG ulMemDQ7_0BitRemap; // each DQ line ( 7~0) use 3bits, like: DQ0=Bit[2:0], DQ1:[5:3], ... DQ7:[23:21] ++ UCHAR ucReservde[4]; ++ UCHAR ucNumOfVRAMModule; ++ ATOM_VRAM_MODULE_V4 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; ++ ATOM_INIT_REG_BLOCK asMemPatch; // for allocation ++ // ATOM_INIT_REG_BLOCK aMemAdjust; ++}ATOM_VRAM_INFO_V4; ++ + typedef struct _ATOM_VRAM_GPIO_DETECTION_INFO + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -3954,6 +4503,7 @@ typedef struct _DP_ENCODER_SERVICE_PARAMETERS + #define ATOM_DP_ACTION_TRAINING_PATTERN_SEL 0x04 + #define ATOM_DP_ACTION_SET_VSWING_PREEMP 0x05 + #define ATOM_DP_ACTION_GET_VSWING_PREEMP 0x06 ++#define ATOM_DP_ACTION_BLANKING 0x07 + + // ucConfig + #define ATOM_DP_CONFIG_ENCODER_SEL_MASK 0x03 +@@ -4072,7 +4622,7 @@ typedef struct _COMPASSIONATE_DATA + + typedef struct _ATOM_CONNECTOR_INFO + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + UCHAR bfConnectorType:4; + UCHAR bfAssociatedDAC:4; + #else +@@ -4469,17 +5019,6 @@ typedef struct _ATOM_POWERPLAY_INFO_V3 + #define ENABLE_LVDS_SS_PARAMETERS_V3 ENABLE_SPREAD_SPECTRUM_ON_PPLL + + /*********************************************************************************/ +-#define ATOM_S3_SCALER2_ACTIVE_H 0x00004000L +-#define ATOM_S3_SCALER2_ACTIVE_V 0x00008000L +-#define ATOM_S6_REQ_SCALER2_H 0x00004000L +-#define ATOM_S6_REQ_SCALER2_V 0x00008000L +- +-#define ATOM_S3_SCALER1_ACTIVE_H ATOM_S3_LCD_FULLEXPANSION_ACTIVE +-#define ATOM_S3_SCALER1_ACTIVE_V ATOM_S3_LCD_EXPANSION_ASPEC_RATIO_ACTIVE +- +-#define ATOM_S6_REQ_SCALER1_H ATOM_S6_REQ_LCD_EXPANSION_FULL +-#define ATOM_S6_REQ_SCALER1_V ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIO +-//========================================================================================== + + #pragma pack() // BIOS data must use byte aligment + +diff --git a/src/Makefile.am b/src/Makefile.am +index 5333495..d65a3e4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -26,8 +26,11 @@ + # _ladir passes a dummy rpath to libtool so the thing will actually link + # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. + ++radeon_drv_la_LIBADD = ++ + if DRI + RADEON_DRI_SRCS = radeon_dri.c ++radeon_drv_la_LIBADD += $(DRI_LIBS) + endif + + RADEON_ATOMBIOS_SOURCES = \ +@@ -70,6 +73,11 @@ AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_A + + INCLUDES = -I$(srcdir)/AtomBios/includes + ++if XSERVER_LIBPCIACCESS ++ati_drv_la_LIBADD = $(PCIACCESS_LIBS) ++radeon_drv_la_LIBADD += $(PCIACCESS_LIBS) ++endif ++ + ati_drv_la_LTLIBRARIES = ati_drv.la + ati_drv_la_LDFLAGS = -module -avoid-version + ati_drv_ladir = @moduledir@/drivers +@@ -80,7 +88,7 @@ radeon_drv_la_LTLIBRARIES = radeon_drv.la + radeon_drv_la_LDFLAGS = -module -avoid-version + radeon_drv_ladir = @moduledir@/drivers + radeon_drv_la_SOURCES = \ +- radeon_accel.c radeon_cursor.c radeon_dga.c \ ++ radeon_accel.c radeon_cursor.c radeon_dga.c radeon_legacy_memory.c \ + radeon_driver.c radeon_video.c radeon_bios.c radeon_mm_i2c.c \ + radeon_vip.c radeon_misc.c radeon_probe.c \ + legacy_crtc.c legacy_output.c \ +@@ -120,7 +128,6 @@ EXTRA_DIST = \ + radeon_render.c \ + radeon_accelfuncs.c \ + radeon_textured_videofuncs.c \ +- \ + ati.h \ + ativersion.h \ + generic_bus.h \ +diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h +index a740df8..633c5d3 100644 +--- a/src/ati_pciids_gen.h ++++ b/src/ati_pciids_gen.h +@@ -1,4 +1,5 @@ + #define PCI_CHIP_RV380_3150 0x3150 ++#define PCI_CHIP_RV380_3151 0x3151 + #define PCI_CHIP_RV380_3152 0x3152 + #define PCI_CHIP_RV380_3154 0x3154 + #define PCI_CHIP_RV380_3E50 0x3E50 +@@ -330,6 +331,9 @@ + #define PCI_CHIP_R600_940A 0x940A + #define PCI_CHIP_R600_940B 0x940B + #define PCI_CHIP_R600_940F 0x940F ++#define PCI_CHIP_RV770_9440 0x9440 ++#define PCI_CHIP_RV770_9441 0x9441 ++#define PCI_CHIP_RV770_9442 0x9442 + #define PCI_CHIP_RV610_94C0 0x94C0 + #define PCI_CHIP_RV610_94C1 0x94C1 + #define PCI_CHIP_RV610_94C3 0x94C3 +@@ -347,6 +351,7 @@ + #define PCI_CHIP_RV670_9507 0x9507 + #define PCI_CHIP_RV670_950F 0x950F + #define PCI_CHIP_RV670_9511 0x9511 ++#define PCI_CHIP_RV670_9515 0x9515 + #define PCI_CHIP_RV630_9580 0x9580 + #define PCI_CHIP_RV630_9581 0x9581 + #define PCI_CHIP_RV630_9583 0x9583 +diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c +index 363addf..4e2395f 100644 +--- a/src/atombios_crtc.c ++++ b/src/atombios_crtc.c +@@ -43,11 +43,33 @@ + + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #endif + ++AtomBiosResult ++atombios_lock_crtc(atomBiosHandlePtr atomBIOS, int crtc, int lock) ++{ ++ ENABLE_CRTC_PS_ALLOCATION crtc_data; ++ AtomBiosArgRec data; ++ unsigned char *space; ++ ++ crtc_data.ucCRTC = crtc; ++ crtc_data.ucEnable = lock; ++ ++ data.exec.index = GetIndexIntoMasterTable(COMMAND, UpdateCRTC_DoubleBufferRegisters); ++ data.exec.dataSpace = (void *)&space; ++ data.exec.pspace = &crtc_data; ++ ++ if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { ++ ErrorF("%s CRTC %d success\n", lock? "Lock":"Unlock", crtc); ++ return ATOM_SUCCESS ; ++ } ++ ++ ErrorF("Lock CRTC failed\n"); ++ return ATOM_NOT_IMPLEMENTED; ++} ++ + static AtomBiosResult + atombios_enable_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) + { +@@ -105,7 +127,7 @@ atombios_blank_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) + crtc_data.ucCRTC = crtc; + crtc_data.ucBlanking = state; + +- data.exec.index = offsetof(ATOM_MASTER_LIST_OF_COMMAND_TABLES, BlankCRTC) / sizeof(unsigned short); ++ data.exec.index = GetIndexIntoMasterTable(COMMAND, BlankCRTC); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &crtc_data; + +@@ -146,10 +168,27 @@ atombios_set_crtc_timing(atomBiosHandlePtr atomBIOS, SET_CRTC_TIMING_PARAMETERS_ + { + AtomBiosArgRec data; + unsigned char *space; ++ SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION conv_param; ++ ++ conv_param.usH_Total = cpu_to_le16(crtc_param->usH_Total); ++ conv_param.usH_Disp = cpu_to_le16(crtc_param->usH_Disp); ++ conv_param.usH_SyncStart = cpu_to_le16(crtc_param->usH_SyncStart); ++ conv_param.usH_SyncWidth = cpu_to_le16(crtc_param->usH_SyncWidth); ++ conv_param.usV_Total = cpu_to_le16(crtc_param->usV_Total); ++ conv_param.usV_Disp = cpu_to_le16(crtc_param->usV_Disp); ++ conv_param.usV_SyncStart = cpu_to_le16(crtc_param->usV_SyncStart); ++ conv_param.usV_SyncWidth = cpu_to_le16(crtc_param->usV_SyncWidth); ++ conv_param.susModeMiscInfo.usAccess = cpu_to_le16(crtc_param->susModeMiscInfo.usAccess); ++ conv_param.ucCRTC = crtc_param->ucCRTC; ++ conv_param.ucOverscanRight = crtc_param->ucOverscanRight; ++ conv_param.ucOverscanLeft = crtc_param->ucOverscanLeft; ++ conv_param.ucOverscanBottom = crtc_param->ucOverscanBottom; ++ conv_param.ucOverscanTop = crtc_param->ucOverscanTop; ++ conv_param.ucReserved = crtc_param->ucReserved; + + data.exec.index = GetIndexIntoMasterTable(COMMAND, SetCRTC_Timing); + data.exec.dataSpace = (void *)&space; +- data.exec.pspace = crtc_param; ++ data.exec.pspace = &conv_param; + + if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { + ErrorF("Set CRTC Timing success\n"); +@@ -185,7 +224,11 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) + if (IS_AVIVO_VARIANT) { + uint32_t temp; + +- pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; ++ if (IS_DCE3_VARIANT && mode->Clock > 200000) /* range limits??? */ ++ pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; ++ else ++ pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; ++ + + RADEONComputePLL(&info->pll, mode->Clock, &temp, &fb_div, &ref_div, &post_div, pll_flags); + sclock = temp; +@@ -235,9 +278,9 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) + case 1: + case 2: + spc2_ptr = (PIXEL_CLOCK_PARAMETERS_V2*)&spc_param.sPCLKInput; +- spc2_ptr->usPixelClock = sclock; +- spc2_ptr->usRefDiv = ref_div; +- spc2_ptr->usFbDiv = fb_div; ++ spc2_ptr->usPixelClock = cpu_to_le16(sclock); ++ spc2_ptr->usRefDiv = cpu_to_le16(ref_div); ++ spc2_ptr->usFbDiv = cpu_to_le16(fb_div); + spc2_ptr->ucPostDiv = post_div; + spc2_ptr->ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; + spc2_ptr->ucCRTC = radeon_crtc->crtc_id; +@@ -246,9 +289,9 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) + break; + case 3: + spc3_ptr = (PIXEL_CLOCK_PARAMETERS_V3*)&spc_param.sPCLKInput; +- spc3_ptr->usPixelClock = sclock; +- spc3_ptr->usRefDiv = ref_div; +- spc3_ptr->usFbDiv = fb_div; ++ spc3_ptr->usPixelClock = cpu_to_le16(sclock); ++ spc3_ptr->usRefDiv = cpu_to_le16(ref_div); ++ spc3_ptr->usFbDiv = cpu_to_le16(fb_div); + spc3_ptr->ucPostDiv = post_div; + spc3_ptr->ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; + spc3_ptr->ucMiscInfo = (radeon_crtc->crtc_id << 2); +@@ -442,9 +485,6 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, + fb_location = fb_location + (char *)crtc->rotatedData - (char *)info->FB; + } + +- /* lock the grph regs */ +- OUTREG(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, AVIVO_D1GRPH_UPDATE_LOCK); +- + OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location); + OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location); + OUTREG(AVIVO_D1GRPH_CONTROL + radeon_crtc->crtc_offset, fb_format); +@@ -459,26 +499,27 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, + crtc->scrn->displayWidth); + OUTREG(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1); + +- /* unlock the grph regs */ +- OUTREG(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, 0); +- +- /* lock the mode regs */ +- OUTREG(AVIVO_D1SCL_UPDATE + radeon_crtc->crtc_offset, AVIVO_D1SCL_UPDATE_LOCK); +- + OUTREG(AVIVO_D1MODE_DESKTOP_HEIGHT + radeon_crtc->crtc_offset, + mode->VDisplay); + OUTREG(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset, (x << 16) | y); + OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset, + (mode->HDisplay << 16) | mode->VDisplay); +- /* unlock the mode regs */ +- OUTREG(AVIVO_D1SCL_UPDATE + radeon_crtc->crtc_offset, 0); + ++ if (adjusted_mode->Flags & V_INTERLACE) ++ OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, ++ AVIVO_D1MODE_INTERLEAVE_EN); ++ else ++ OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, ++ 0); + } + + atombios_crtc_set_pll(crtc, adjusted_mode, pll_flags); + + atombios_set_crtc_timing(info->atomBIOS, &crtc_timing); + ++ if (info->DispPriority) ++ RADEONInitDispBandwidth(pScrn); ++ + if (tilingChanged) { + /* need to redraw front buffer, I guess this can be considered a hack ? */ + /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ +@@ -492,3 +533,126 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, + + } + ++/* Calculate display buffer watermark to prevent buffer underflow */ ++void ++RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ uint32_t dc_lb_memory_split; ++ float mem_bw, peak_disp_bw; ++ float min_mem_eff = 0.8; /* XXX: taken from legacy method */ ++ float pix_clk, pix_clk2; /* in MHz */ ++ ++ /* ++ * Set display0/1 priority up in the memory controller for ++ * modes if the user specifies HIGH for displaypriority ++ * option. ++ */ ++ if (info->DispPriority == 2) { ++ uint32_t mc_init_misc_lat_timer = 0; ++ if (info->ChipFamily == CHIP_FAMILY_RV515) ++ mc_init_misc_lat_timer = INMC(pScrn, RV515_MC_INIT_MISC_LAT_TIMER); ++ else if (info->ChipFamily == CHIP_FAMILY_RS690) ++ mc_init_misc_lat_timer = INMC(pScrn, RS690_MC_INIT_MISC_LAT_TIMER); ++ ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP1R_INIT_LAT_MASK << R300_MC_DISP1R_INIT_LAT_SHIFT); ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP0R_INIT_LAT_MASK << R300_MC_DISP0R_INIT_LAT_SHIFT); ++ ++ if (pRADEONEnt->pCrtc[1]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP1R_INIT_LAT_SHIFT); /* display 1 */ ++ if (pRADEONEnt->pCrtc[0]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP0R_INIT_LAT_SHIFT); /* display 0 */ ++ ++ if (info->ChipFamily == CHIP_FAMILY_RV515) ++ OUTMC(pScrn, RV515_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer); ++ else if (info->ChipFamily == CHIP_FAMILY_RS690) ++ OUTMC(pScrn, RS690_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer); ++ } ++ ++ /* XXX: fix me for AVIVO ++ * Determine if there is enough bandwidth for current display mode ++ */ ++ mem_bw = info->mclk * (info->RamWidth / 8) * (info->IsDDR ? 2 : 1); ++ ++ pix_clk = 0; ++ pix_clk2 = 0; ++ peak_disp_bw = 0; ++ if (mode1) { ++ pix_clk = mode1->Clock/1000.0; ++ peak_disp_bw += (pix_clk * pixel_bytes1); ++ } ++ if (mode2) { ++ pix_clk2 = mode2->Clock/1000.0; ++ peak_disp_bw += (pix_clk2 * pixel_bytes2); ++ } ++ ++ if (peak_disp_bw >= mem_bw * min_mem_eff) { ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "You may not have enough display bandwidth for current mode\n" ++ "If you have flickering problem, try to lower resolution, refresh rate, or color depth\n"); ++ } ++ ++ /* ++ * Line Buffer Setup ++ * There is a single line buffer shared by both display controllers. ++ * DC_LB_MEMORY_SPLIT controls how that line buffer is shared between the display ++ * controllers. The paritioning can either be done manually or via one of four ++ * preset allocations specified in bits 1:0: ++ * 0 - line buffer is divided in half and shared between each display controller ++ * 1 - D1 gets 3/4 of the line buffer, D2 gets 1/4 ++ * 2 - D1 gets the whole buffer ++ * 3 - D1 gets 1/4 of the line buffer, D2 gets 3/4 ++ * Setting bit 2 of DC_LB_MEMORY_SPLIT controls switches to manual allocation mode. ++ * In manual allocation mode, D1 always starts at 0, D1 end/2 is specified in bits ++ * 14:4; D2 allocation follows D1. ++ */ ++ ++ /* is auto or manual better ? */ ++ dc_lb_memory_split = INREG(AVIVO_DC_LB_MEMORY_SPLIT) & ~AVIVO_DC_LB_MEMORY_SPLIT_MASK; ++ dc_lb_memory_split &= ~AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE; ++#if 1 ++ /* auto */ ++ if (mode1 && mode2) { ++ if (mode1->HDisplay > mode2->HDisplay) { ++ if (mode1->HDisplay > 2560) ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q; ++ else ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; ++ } else if (mode2->HDisplay > mode1->HDisplay) { ++ if (mode2->HDisplay > 2560) ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; ++ else ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; ++ } else ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; ++ } else if (mode1) { ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY; ++ } else if (mode2) { ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; ++ } ++#else ++ /* manual */ ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE; ++ dc_lb_memory_split &= ~(AVIVO_DC_LB_DISP1_END_ADR_MASK << AVIVO_DC_LB_DISP1_END_ADR_SHIFT); ++ if (mode1) { ++ dc_lb_memory_split |= ((((mode1->HDisplay / 2) + 64 /*???*/) & AVIVO_DC_LB_DISP1_END_ADR_MASK) ++ << AVIVO_DC_LB_DISP1_END_ADR_SHIFT); ++ } else if (mode2) { ++ dc_lb_memory_split |= (0 << AVIVO_DC_LB_DISP1_END_ADR_SHIFT); ++ } ++ OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, dc_lb_memory_split); ++#endif ++ ++ /* ++ * Watermark setup ++ * TODO... ++ * Unforunately, I haven't been able to dig up the avivo watermark programming ++ * guide yet. -AGD ++ */ ++ ++} +diff --git a/src/atombios_output.c b/src/atombios_output.c +index 51be301..49de04f 100644 +--- a/src/atombios_output.c ++++ b/src/atombios_output.c +@@ -43,6 +43,8 @@ + #include "radeon_macros.h" + #include "radeon_atombios.h" + ++#include "ati_pciids_gen.h" ++ + static int + atombios_output_dac1_setup(xf86OutputPtr output, DisplayModePtr mode) + { +@@ -78,7 +80,7 @@ atombios_output_dac1_setup(xf86OutputPtr output, DisplayModePtr mode) + } + } + +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + data.exec.index = GetIndexIntoMasterTable(COMMAND, DAC1EncoderControl); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; +@@ -128,7 +130,7 @@ atombios_output_dac2_setup(xf86OutputPtr output, DisplayModePtr mode) + } + } + +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + data.exec.index = GetIndexIntoMasterTable(COMMAND, DAC2EncoderControl); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; +@@ -188,7 +190,7 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode) + } + } + +- disp_data.sTVEncoder.usPixelClock = mode->Clock / 10; ++ disp_data.sTVEncoder.usPixelClock = cpu_to_le16(mode->Clock / 10); + data.exec.index = GetIndexIntoMasterTable(COMMAND, TVEncoderControl); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; +@@ -206,7 +208,8 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode) + int + atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode) + { +- RADEONInfoPtr info = RADEONPTR(output->scrn); ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); + ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION disp_data; + AtomBiosArgRec data; + unsigned char *space; +@@ -218,7 +221,7 @@ atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode) + else + disp_data.sXTmdsEncoder.ucMisc = 0; + +- if (!info->dac6bits) ++ if (pScrn->rgbBits == 8) + disp_data.sXTmdsEncoder.ucMisc |= (1 << 1); + + data.exec.index = GetIndexIntoMasterTable(COMMAND, DVOEncoderControl); +@@ -243,7 +246,7 @@ atombios_output_ddia_setup(xf86OutputPtr output, DisplayModePtr mode) + unsigned char *space; + + disp_data.sDVOEncoder.ucAction = ATOM_ENABLE; +- disp_data.sDVOEncoder.usPixelClock = mode->Clock / 10; ++ disp_data.sDVOEncoder.usPixelClock = cpu_to_le16(mode->Clock / 10); + + if (mode->Clock > 165000) + disp_data.sDVOEncoder.usDevAttr.sDigAttrib.ucAttribute = PANEL_ENCODER_MISC_DUAL; +@@ -264,84 +267,110 @@ atombios_output_ddia_setup(xf86OutputPtr output, DisplayModePtr mode) + } + + static int +-atombios_output_tmds1_setup(xf86OutputPtr output, DisplayModePtr mode) ++atombios_output_digital_setup(xf86OutputPtr output, int device, DisplayModePtr mode) + { +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- TMDS1_ENCODER_CONTROL_PS_ALLOCATION disp_data; ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data; ++ LVDS_ENCODER_CONTROL_PS_ALLOCATION_V2 disp_data2; + AtomBiosArgRec data; + unsigned char *space; ++ int index; ++ int major, minor; + +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = mode->Clock / 10; +- data.exec.index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl); +- data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; +- +- if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output TMDS1 setup success\n"); +- return ATOM_SUCCESS; ++ switch (device) { ++ case ATOM_DEVICE_DFP1_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl); ++ break; ++ case ATOM_DEVICE_LCD1_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl); ++ break; ++ case ATOM_DEVICE_DFP3_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl); ++ break; ++ default: ++ return ATOM_NOT_IMPLEMENTED; ++ break; + } + +- ErrorF("Output TMDS1 setup failed\n"); +- return ATOM_NOT_IMPLEMENTED; +- +-} +- +-static int +-atombios_output_tmds2_setup(xf86OutputPtr output, DisplayModePtr mode) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- TMDS2_ENCODER_CONTROL_PS_ALLOCATION disp_data; +- AtomBiosArgRec data; +- unsigned char *space; +- +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = mode->Clock / 10; +- data.exec.index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl); +- data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; ++ atombios_get_command_table_version(info->atomBIOS, index, &major, &minor); + +- if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output TMDS2 setup success\n"); +- return ATOM_SUCCESS; ++ /*ErrorF("table is %d %d\n", major, minor);*/ ++ switch (major) { ++ case 0: ++ case 1: ++ switch (minor) { ++ case 1: ++ disp_data.ucMisc = 0; ++ disp_data.ucAction = PANEL_ENCODER_ACTION_ENABLE; ++ if (radeon_output->type == OUTPUT_HDMI) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); ++ if (device == ATOM_DEVICE_LCD1_INDEX) { ++ if (radeon_output->lvds_misc & (1 << 0)) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data.ucMisc |= (1 << 1); ++ } else { ++ if (mode->Clock > 165000) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (pScrn->rgbBits == 8) ++ disp_data.ucMisc |= (1 << 1); ++ } ++ data.exec.pspace = &disp_data; ++ break; ++ case 2: ++ case 3: ++ disp_data2.ucMisc = 0; ++ disp_data2.ucAction = PANEL_ENCODER_ACTION_ENABLE; ++ if (minor == 3) { ++ if (radeon_output->coherent_mode) { ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_COHERENT; ++ xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "Coherent Mode enabled\n"); ++ } ++ } ++ if (radeon_output->type == OUTPUT_HDMI) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; ++ disp_data2.usPixelClock = cpu_to_le16(mode->Clock / 10); ++ disp_data2.ucTruncate = 0; ++ disp_data2.ucSpatial = 0; ++ disp_data2.ucTemporal = 0; ++ disp_data2.ucFRC = 0; ++ if (device == ATOM_DEVICE_LCD1_INDEX) { ++ if (radeon_output->lvds_misc & (1 << 0)) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (radeon_output->lvds_misc & (1 << 5)) { ++ disp_data2.ucSpatial = PANEL_ENCODER_SPATIAL_DITHER_EN; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data2.ucSpatial |= PANEL_ENCODER_SPATIAL_DITHER_DEPTH; ++ } ++ if (radeon_output->lvds_misc & (1 << 6)) { ++ disp_data2.ucTemporal = PANEL_ENCODER_TEMPORAL_DITHER_EN; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_DITHER_DEPTH; ++ if (((radeon_output->lvds_misc >> 2) & 0x3) == 2) ++ disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4; ++ } ++ } else { ++ if (mode->Clock > 165000) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ } ++ data.exec.pspace = &disp_data2; ++ break; ++ } ++ break; + } + +- ErrorF("Output TMDS2 setup failed\n"); +- return ATOM_NOT_IMPLEMENTED; +-} +- +-static int +-atombios_output_lvds_setup(xf86OutputPtr output, DisplayModePtr mode) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data; +- AtomBiosArgRec data; +- unsigned char *space; +- +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = mode->Clock / 10; +- data.exec.index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl); ++ data.exec.index = index; + data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; + + if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output LVDS setup success\n"); ++ ErrorF("Output digital setup success\n"); + return ATOM_SUCCESS; + } + +- ErrorF("Output LVDS setup failed\n"); ++ ErrorF("Output digital setup failed\n"); + return ATOM_NOT_IMPLEMENTED; + } + +@@ -355,7 +384,7 @@ atombios_output_dig1_setup(xf86OutputPtr output, DisplayModePtr mode) + unsigned char *space; + + disp_data.ucAction = 1; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_ENCODER_CONFIG_TRANSMITTER1; + if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + if (radeon_output->coherent_mode) { +@@ -406,7 +435,7 @@ atombios_output_dig1_transmitter_setup(xf86OutputPtr output, DisplayModePtr mode + unsigned char *space; + + disp_data.ucAction = ATOM_TRANSMITTER_ACTION_ENABLE; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER | ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; + + if (info->IsIGP && (radeon_output->TMDSType == TMDS_UNIPHY)) { +@@ -464,7 +493,7 @@ atombios_output_dig2_setup(xf86OutputPtr output, DisplayModePtr mode) + unsigned char *space; + + disp_data.ucAction = 1; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_ENCODER_CONFIG_TRANSMITTER2; + if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + if (radeon_output->coherent_mode) { +@@ -515,7 +544,7 @@ atombios_output_dig2_transmitter_setup(xf86OutputPtr output, DisplayModePtr mode + unsigned char *space; + + disp_data.ucAction = ATOM_TRANSMITTER_ACTION_ENABLE; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER | ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; + + if (info->IsIGP && (radeon_output->TMDSType == TMDS_UNIPHY)) { +@@ -600,34 +629,6 @@ atombios_output_scaler_setup(xf86OutputPtr output, DisplayModePtr mode) + + } + +-static void +-dfp_disable_dither(xf86OutputPtr output, int device) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- unsigned char *RADEONMMIO = info->MMIO; +- +- switch (device) { +- case ATOM_DEVICE_DFP1_SUPPORT: +- OUTREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL, 0); /* TMDSA */ +- break; +- case ATOM_DEVICE_DFP2_SUPPORT: +- if ((info->ChipFamily == CHIP_FAMILY_RS600) || +- (info->ChipFamily == CHIP_FAMILY_RS690) || +- (info->ChipFamily == CHIP_FAMILY_RS740)) +- OUTREG(AVIVO_DDIA_BIT_DEPTH_CONTROL, 0); /* DDIA */ +- else +- OUTREG(AVIVO_DVOA_BIT_DEPTH_CONTROL, 0); /* DVO */ +- break; +- /*case ATOM_DEVICE_LCD1_SUPPORT:*/ /* LVDS panels need dither enabled */ +- case ATOM_DEVICE_DFP3_SUPPORT: +- OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */ +- break; +- default: +- break; +- } +- +-} +- + static AtomBiosResult + atombios_display_device_control(atomBiosHandlePtr atomBIOS, int device, Bool state) + { +@@ -896,6 +897,30 @@ atombios_set_output_crtc_source(xf86OutputPtr output) + return; + } + ++static void ++atombios_apply_output_quirks(xf86OutputPtr output) ++{ ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ /* Funky macbooks */ ++ if ((info->Chipset == PCI_CHIP_RV530_71C5) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x106b) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0080)) { ++ if (radeon_output->MonType == MT_LCD) { ++ if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) { ++ uint32_t lvtma_bit_depth_control = INREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL); ++ ++ lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_EN; ++ lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN; ++ ++ OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, lvtma_bit_depth_control); ++ } ++ } ++ } ++} ++ + void + atombios_output_mode_set(xf86OutputPtr output, + DisplayModePtr mode, +@@ -920,10 +945,8 @@ atombios_output_mode_set(xf86OutputPtr output, + if (IS_DCE3_VARIANT) { + atombios_output_dig1_setup(output, adjusted_mode); + atombios_output_dig1_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_tmds1_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP1_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_DFP1_INDEX, adjusted_mode); + } else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT) { + if (IS_DCE3_VARIANT) { + // fix me +@@ -934,26 +957,21 @@ atombios_output_mode_set(xf86OutputPtr output, + atombios_output_ddia_setup(output, adjusted_mode); + else + atombios_external_tmds_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP2_SUPPORT); + } + } else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT) { + if (IS_DCE3_VARIANT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_tmds2_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP3_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_DFP3_INDEX, adjusted_mode); + } + } else if (radeon_output->MonType == MT_LCD) { + if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) { + if (IS_DCE3_VARIANT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_lvds_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_LCD1_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_LCD1_INDEX, adjusted_mode); + } + } else if ((radeon_output->MonType == MT_CTV) || + (radeon_output->MonType == MT_STV) || +@@ -964,7 +982,7 @@ atombios_output_mode_set(xf86OutputPtr output, + atombios_output_dac2_setup(output, adjusted_mode); + atombios_output_tv1_setup(output, adjusted_mode); + } +- ++ atombios_apply_output_quirks(output); + } + + static AtomBiosResult +@@ -979,19 +997,19 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output) + dac_data.sDacload.ucMisc = 0; + + if (radeon_output->devices & ATOM_DEVICE_CRT1_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CRT1_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT1_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) + dac_data.sDacload.ucDacType = ATOM_DAC_B; + } else if (radeon_output->devices & ATOM_DEVICE_CRT2_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CRT2_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT2_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) + dac_data.sDacload.ucDacType = ATOM_DAC_B; + } else if (radeon_output->devices & ATOM_DEVICE_CV_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CV_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CV_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) +@@ -999,7 +1017,7 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output) + if (IS_DCE3_VARIANT) + dac_data.sDacload.ucMisc = 1; + } else if (radeon_output->devices & ATOM_DEVICE_TV1_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_TV1_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_TV1_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) +diff --git a/src/bicubic_table.h b/src/bicubic_table.h +new file mode 100644 +index 0000000..765cfff +--- /dev/null ++++ b/src/bicubic_table.h +@@ -0,0 +1,646 @@ ++static const uint16_t bicubic_tex_512[] = { ++ 0xb266, 0x3c00, 0x3aaa, 0x3155, ++ 0xb287, 0x3bf0, 0x3aa2, 0x3175, ++ 0xb2a9, 0x3be0, 0x3a9a, 0x3196, ++ 0xb2cc, 0x3bd0, 0x3a92, 0x31b7, ++ 0xb2ee, 0x3bc0, 0x3a89, 0x31d9, ++ 0xb312, 0x3bb0, 0x3a81, 0x31fb, ++ 0xb335, 0x3ba0, 0x3a78, 0x321e, ++ 0xb359, 0x3b90, 0x3a6f, 0x3241, ++ 0xb37d, 0x3b80, 0x3a66, 0x3264, ++ 0xb3a2, 0x3b70, 0x3a5d, 0x3288, ++ 0xb3c7, 0x3b60, 0x3a54, 0x32ad, ++ 0xb3ed, 0x3b51, 0x3a4b, 0x32d1, ++ 0xb409, 0x3b41, 0x3a42, 0x32f7, ++ 0xb41c, 0x3b31, 0x3a38, 0x331c, ++ 0xb42f, 0x3b21, 0x3a2f, 0x3342, ++ 0xb443, 0x3b12, 0x3a25, 0x3369, ++ 0xb456, 0x3b02, 0x3a1c, 0x3390, ++ 0xb46a, 0x3af3, 0x3a12, 0x33b7, ++ 0xb47e, 0x3ae3, 0x3a08, 0x33de, ++ 0xb492, 0x3ad4, 0x39fe, 0x3403, ++ 0xb4a6, 0x3ac5, 0x39f4, 0x3417, ++ 0xb4bb, 0x3ab5, 0x39ea, 0x342b, ++ 0xb4cf, 0x3aa6, 0x39df, 0x3440, ++ 0xb4e4, 0x3a97, 0x39d5, 0x3454, ++ 0xb4f9, 0x3a88, 0x39cb, 0x3469, ++ 0xb50e, 0x3a79, 0x39c0, 0x347e, ++ 0xb523, 0x3a6a, 0x39b6, 0x3493, ++ 0xb539, 0x3a5a, 0x39ab, 0x34a8, ++ 0xb54e, 0x3a4c, 0x39a0, 0x34be, ++ 0xb564, 0x3a3d, 0x3996, 0x34d3, ++ 0xb57a, 0x3a2e, 0x398b, 0x34e9, ++ 0xb590, 0x3a1f, 0x3980, 0x34ff, ++ 0xb5a6, 0x3a10, 0x3975, 0x3515, ++ 0xb5bc, 0x3a02, 0x396a, 0x352b, ++ 0xb5d2, 0x39f3, 0x395f, 0x3541, ++ 0xb5e9, 0x39e4, 0x3954, 0x3557, ++ 0xb5ff, 0x39d6, 0x3948, 0x356e, ++ 0xb616, 0x39c7, 0x393d, 0x3584, ++ 0xb62d, 0x39b9, 0x3932, 0x359b, ++ 0xb644, 0x39ab, 0x3926, 0x35b2, ++ 0xb65b, 0x399c, 0x391b, 0x35c9, ++ 0xb672, 0x398e, 0x3910, 0x35df, ++ 0xb68a, 0x3980, 0x3904, 0x35f6, ++ 0xb6a1, 0x3972, 0x38f8, 0x360e, ++ 0xb6b9, 0x3964, 0x38ed, 0x3625, ++ 0xb6d1, 0x3956, 0x38e1, 0x363c, ++ 0xb6e8, 0x3948, 0x38d6, 0x3653, ++ 0xb700, 0x393a, 0x38ca, 0x366b, ++ 0xb719, 0x392c, 0x38be, 0x3682, ++ 0xb731, 0x391e, 0x38b2, 0x369a, ++ 0xb749, 0x3910, 0x38a7, 0x36b1, ++ 0xb762, 0x3902, 0x389b, 0x36c9, ++ 0xb77a, 0x38f5, 0x388f, 0x36e1, ++ 0xb793, 0x38e7, 0x3883, 0x36f8, ++ 0xb7ac, 0x38da, 0x3877, 0x3710, ++ 0xb7c5, 0x38cc, 0x386b, 0x3728, ++ 0xb7de, 0x38bf, 0x385f, 0x3740, ++ 0xb7f7, 0x38b1, 0x3853, 0x3758, ++ 0xb808, 0x38a4, 0x3847, 0x3770, ++ 0xb815, 0x3897, 0x383b, 0x3788, ++ 0xb821, 0x3889, 0x382f, 0x37a0, ++ 0xb82e, 0x387c, 0x3823, 0x37b8, ++ 0xb83b, 0x386f, 0x3817, 0x37d0, ++ 0xb848, 0x3862, 0x380b, 0x37e8, ++ 0xb855, 0x3855, 0x3800, 0x3800, ++ 0xb862, 0x3848, 0x37e8, 0x380b, ++ 0xb86f, 0x383b, 0x37d0, 0x3817, ++ 0xb87c, 0x382e, 0x37b8, 0x3823, ++ 0xb889, 0x3821, 0x37a0, 0x382f, ++ 0xb897, 0x3815, 0x3788, 0x383b, ++ 0xb8a4, 0x3808, 0x3770, 0x3847, ++ 0xb8b1, 0x37f7, 0x3758, 0x3853, ++ 0xb8bf, 0x37de, 0x3740, 0x385f, ++ 0xb8cc, 0x37c5, 0x3728, 0x386b, ++ 0xb8da, 0x37ac, 0x3710, 0x3877, ++ 0xb8e7, 0x3793, 0x36f8, 0x3883, ++ 0xb8f5, 0x377a, 0x36e1, 0x388f, ++ 0xb902, 0x3762, 0x36c9, 0x389b, ++ 0xb910, 0x3749, 0x36b1, 0x38a7, ++ 0xb91e, 0x3731, 0x369a, 0x38b2, ++ 0xb92c, 0x3719, 0x3682, 0x38be, ++ 0xb93a, 0x3700, 0x366b, 0x38ca, ++ 0xb948, 0x36e8, 0x3653, 0x38d6, ++ 0xb956, 0x36d1, 0x363c, 0x38e1, ++ 0xb964, 0x36b9, 0x3625, 0x38ed, ++ 0xb972, 0x36a1, 0x360e, 0x38f8, ++ 0xb980, 0x368a, 0x35f6, 0x3904, ++ 0xb98e, 0x3672, 0x35df, 0x3910, ++ 0xb99c, 0x365b, 0x35c9, 0x391b, ++ 0xb9ab, 0x3644, 0x35b2, 0x3926, ++ 0xb9b9, 0x362d, 0x359b, 0x3932, ++ 0xb9c7, 0x3616, 0x3584, 0x393d, ++ 0xb9d6, 0x35ff, 0x356e, 0x3948, ++ 0xb9e4, 0x35e9, 0x3557, 0x3954, ++ 0xb9f3, 0x35d2, 0x3541, 0x395f, ++ 0xba02, 0x35bc, 0x352b, 0x396a, ++ 0xba10, 0x35a6, 0x3515, 0x3975, ++ 0xba1f, 0x3590, 0x34ff, 0x3980, ++ 0xba2e, 0x357a, 0x34e9, 0x398b, ++ 0xba3d, 0x3564, 0x34d3, 0x3996, ++ 0xba4c, 0x354e, 0x34be, 0x39a0, ++ 0xba5a, 0x3539, 0x34a8, 0x39ab, ++ 0xba6a, 0x3523, 0x3493, 0x39b6, ++ 0xba79, 0x350e, 0x347e, 0x39c0, ++ 0xba88, 0x34f9, 0x3469, 0x39cb, ++ 0xba97, 0x34e4, 0x3454, 0x39d5, ++ 0xbaa6, 0x34cf, 0x3440, 0x39df, ++ 0xbab5, 0x34bb, 0x342b, 0x39ea, ++ 0xbac5, 0x34a6, 0x3417, 0x39f4, ++ 0xbad4, 0x3492, 0x3403, 0x39fe, ++ 0xbae3, 0x347e, 0x33de, 0x3a08, ++ 0xbaf3, 0x346a, 0x33b7, 0x3a12, ++ 0xbb02, 0x3456, 0x3390, 0x3a1c, ++ 0xbb12, 0x3443, 0x3369, 0x3a25, ++ 0xbb21, 0x342f, 0x3342, 0x3a2f, ++ 0xbb31, 0x341c, 0x331c, 0x3a38, ++ 0xbb41, 0x3409, 0x32f7, 0x3a42, ++ 0xbb51, 0x33ed, 0x32d1, 0x3a4b, ++ 0xbb60, 0x33c7, 0x32ad, 0x3a54, ++ 0xbb70, 0x33a2, 0x3288, 0x3a5d, ++ 0xbb80, 0x337d, 0x3264, 0x3a66, ++ 0xbb90, 0x3359, 0x3241, 0x3a6f, ++ 0xbba0, 0x3335, 0x321e, 0x3a78, ++ 0xbbb0, 0x3312, 0x31fb, 0x3a81, ++ 0xbbc0, 0x32ee, 0x31d9, 0x3a89, ++ 0xbbd0, 0x32cc, 0x31b7, 0x3a92, ++ 0xbbe0, 0x32a9, 0x3196, 0x3a9a, ++ 0xbbf0, 0x3287, 0x3175, 0x3aa2, ++ 0 }; ++ ++static const uint16_t bicubic_tex_2048[] = { ++ 0xb266, 0x3c00, 0x3aaa, 0x3155, ++ 0xb26e, 0x3bfc, 0x3aa8, 0x315d, ++ 0xb277, 0x3bf8, 0x3aa6, 0x3165, ++ 0xb27f, 0x3bf4, 0x3aa4, 0x316d, ++ 0xb287, 0x3bf0, 0x3aa2, 0x3175, ++ 0xb290, 0x3bec, 0x3aa0, 0x317d, ++ 0xb298, 0x3be8, 0x3a9e, 0x3185, ++ 0xb2a1, 0x3be4, 0x3a9c, 0x318e, ++ 0xb2a9, 0x3be0, 0x3a9a, 0x3196, ++ 0xb2b2, 0x3bdc, 0x3a98, 0x319e, ++ 0xb2ba, 0x3bd8, 0x3a96, 0x31a6, ++ 0xb2c3, 0x3bd4, 0x3a94, 0x31af, ++ 0xb2cc, 0x3bd0, 0x3a92, 0x31b7, ++ 0xb2d4, 0x3bcc, 0x3a90, 0x31bf, ++ 0xb2dd, 0x3bc8, 0x3a8d, 0x31c8, ++ 0xb2e6, 0x3bc4, 0x3a8b, 0x31d0, ++ 0xb2ee, 0x3bc0, 0x3a89, 0x31d9, ++ 0xb2f7, 0x3bbc, 0x3a87, 0x31e1, ++ 0xb300, 0x3bb8, 0x3a85, 0x31ea, ++ 0xb309, 0x3bb4, 0x3a83, 0x31f2, ++ 0xb312, 0x3bb0, 0x3a81, 0x31fb, ++ 0xb31a, 0x3bac, 0x3a7e, 0x3204, ++ 0xb323, 0x3ba8, 0x3a7c, 0x320c, ++ 0xb32c, 0x3ba4, 0x3a7a, 0x3215, ++ 0xb335, 0x3ba0, 0x3a78, 0x321e, ++ 0xb33e, 0x3b9c, 0x3a76, 0x3226, ++ 0xb347, 0x3b98, 0x3a74, 0x322f, ++ 0xb350, 0x3b94, 0x3a71, 0x3238, ++ 0xb359, 0x3b90, 0x3a6f, 0x3241, ++ 0xb362, 0x3b8c, 0x3a6d, 0x3249, ++ 0xb36b, 0x3b88, 0x3a6b, 0x3252, ++ 0xb374, 0x3b84, 0x3a69, 0x325b, ++ 0xb37d, 0x3b80, 0x3a66, 0x3264, ++ 0xb387, 0x3b7c, 0x3a64, 0x326d, ++ 0xb390, 0x3b78, 0x3a62, 0x3276, ++ 0xb399, 0x3b74, 0x3a60, 0x327f, ++ 0xb3a2, 0x3b70, 0x3a5d, 0x3288, ++ 0xb3ab, 0x3b6c, 0x3a5b, 0x3291, ++ 0xb3b5, 0x3b68, 0x3a59, 0x329a, ++ 0xb3be, 0x3b64, 0x3a57, 0x32a3, ++ 0xb3c7, 0x3b60, 0x3a54, 0x32ad, ++ 0xb3d0, 0x3b5c, 0x3a52, 0x32b6, ++ 0xb3da, 0x3b58, 0x3a50, 0x32bf, ++ 0xb3e3, 0x3b54, 0x3a4d, 0x32c8, ++ 0xb3ed, 0x3b51, 0x3a4b, 0x32d1, ++ 0xb3f6, 0x3b4d, 0x3a49, 0x32db, ++ 0xb3ff, 0x3b49, 0x3a46, 0x32e4, ++ 0xb404, 0x3b45, 0x3a44, 0x32ed, ++ 0xb409, 0x3b41, 0x3a42, 0x32f7, ++ 0xb40e, 0x3b3d, 0x3a3f, 0x3300, ++ 0xb412, 0x3b39, 0x3a3d, 0x3309, ++ 0xb417, 0x3b35, 0x3a3b, 0x3313, ++ 0xb41c, 0x3b31, 0x3a38, 0x331c, ++ 0xb421, 0x3b2d, 0x3a36, 0x3326, ++ 0xb426, 0x3b29, 0x3a34, 0x332f, ++ 0xb42a, 0x3b25, 0x3a31, 0x3339, ++ 0xb42f, 0x3b21, 0x3a2f, 0x3342, ++ 0xb434, 0x3b1e, 0x3a2c, 0x334c, ++ 0xb439, 0x3b1a, 0x3a2a, 0x3355, ++ 0xb43e, 0x3b16, 0x3a28, 0x335f, ++ 0xb443, 0x3b12, 0x3a25, 0x3369, ++ 0xb448, 0x3b0e, 0x3a23, 0x3372, ++ 0xb44d, 0x3b0a, 0x3a20, 0x337c, ++ 0xb451, 0x3b06, 0x3a1e, 0x3386, ++ 0xb456, 0x3b02, 0x3a1c, 0x3390, ++ 0xb45b, 0x3afe, 0x3a19, 0x3399, ++ 0xb460, 0x3afb, 0x3a17, 0x33a3, ++ 0xb465, 0x3af7, 0x3a14, 0x33ad, ++ 0xb46a, 0x3af3, 0x3a12, 0x33b7, ++ 0xb46f, 0x3aef, 0x3a0f, 0x33c1, ++ 0xb474, 0x3aeb, 0x3a0d, 0x33ca, ++ 0xb479, 0x3ae7, 0x3a0a, 0x33d4, ++ 0xb47e, 0x3ae3, 0x3a08, 0x33de, ++ 0xb483, 0x3ae0, 0x3a05, 0x33e8, ++ 0xb488, 0x3adc, 0x3a03, 0x33f2, ++ 0xb48d, 0x3ad8, 0x3a00, 0x33fc, ++ 0xb492, 0x3ad4, 0x39fe, 0x3403, ++ 0xb497, 0x3ad0, 0x39fb, 0x3408, ++ 0xb49c, 0x3acc, 0x39f9, 0x340d, ++ 0xb4a1, 0x3ac8, 0x39f6, 0x3412, ++ 0xb4a6, 0x3ac5, 0x39f4, 0x3417, ++ 0xb4ac, 0x3ac1, 0x39f1, 0x341c, ++ 0xb4b1, 0x3abd, 0x39ef, 0x3421, ++ 0xb4b6, 0x3ab9, 0x39ec, 0x3426, ++ 0xb4bb, 0x3ab5, 0x39ea, 0x342b, ++ 0xb4c0, 0x3ab1, 0x39e7, 0x3430, ++ 0xb4c5, 0x3aae, 0x39e5, 0x3435, ++ 0xb4ca, 0x3aaa, 0x39e2, 0x343b, ++ 0xb4cf, 0x3aa6, 0x39df, 0x3440, ++ 0xb4d5, 0x3aa2, 0x39dd, 0x3445, ++ 0xb4da, 0x3a9e, 0x39da, 0x344a, ++ 0xb4df, 0x3a9b, 0x39d8, 0x344f, ++ 0xb4e4, 0x3a97, 0x39d5, 0x3454, ++ 0xb4e9, 0x3a93, 0x39d2, 0x345a, ++ 0xb4ef, 0x3a8f, 0x39d0, 0x345f, ++ 0xb4f4, 0x3a8b, 0x39cd, 0x3464, ++ 0xb4f9, 0x3a88, 0x39cb, 0x3469, ++ 0xb4fe, 0x3a84, 0x39c8, 0x346e, ++ 0xb504, 0x3a80, 0x39c5, 0x3474, ++ 0xb509, 0x3a7c, 0x39c3, 0x3479, ++ 0xb50e, 0x3a79, 0x39c0, 0x347e, ++ 0xb513, 0x3a75, 0x39be, 0x3483, ++ 0xb519, 0x3a71, 0x39bb, 0x3489, ++ 0xb51e, 0x3a6d, 0x39b8, 0x348e, ++ 0xb523, 0x3a6a, 0x39b6, 0x3493, ++ 0xb529, 0x3a66, 0x39b3, 0x3499, ++ 0xb52e, 0x3a62, 0x39b0, 0x349e, ++ 0xb533, 0x3a5e, 0x39ae, 0x34a3, ++ 0xb539, 0x3a5a, 0x39ab, 0x34a8, ++ 0xb53e, 0x3a57, 0x39a8, 0x34ae, ++ 0xb543, 0x3a53, 0x39a6, 0x34b3, ++ 0xb549, 0x3a4f, 0x39a3, 0x34b9, ++ 0xb54e, 0x3a4c, 0x39a0, 0x34be, ++ 0xb554, 0x3a48, 0x399e, 0x34c3, ++ 0xb559, 0x3a44, 0x399b, 0x34c9, ++ 0xb55e, 0x3a40, 0x3998, 0x34ce, ++ 0xb564, 0x3a3d, 0x3996, 0x34d3, ++ 0xb569, 0x3a39, 0x3993, 0x34d9, ++ 0xb56f, 0x3a35, 0x3990, 0x34de, ++ 0xb574, 0x3a32, 0x398d, 0x34e4, ++ 0xb57a, 0x3a2e, 0x398b, 0x34e9, ++ 0xb57f, 0x3a2a, 0x3988, 0x34ef, ++ 0xb585, 0x3a26, 0x3985, 0x34f4, ++ 0xb58a, 0x3a23, 0x3983, 0x34f9, ++ 0xb590, 0x3a1f, 0x3980, 0x34ff, ++ 0xb595, 0x3a1b, 0x397d, 0x3504, ++ 0xb59b, 0x3a18, 0x397a, 0x350a, ++ 0xb5a0, 0x3a14, 0x3978, 0x350f, ++ 0xb5a6, 0x3a10, 0x3975, 0x3515, ++ 0xb5ab, 0x3a0d, 0x3972, 0x351a, ++ 0xb5b1, 0x3a09, 0x396f, 0x3520, ++ 0xb5b6, 0x3a05, 0x396d, 0x3525, ++ 0xb5bc, 0x3a02, 0x396a, 0x352b, ++ 0xb5c1, 0x39fe, 0x3967, 0x3530, ++ 0xb5c7, 0x39fa, 0x3964, 0x3536, ++ 0xb5cd, 0x39f7, 0x3961, 0x353c, ++ 0xb5d2, 0x39f3, 0x395f, 0x3541, ++ 0xb5d8, 0x39ef, 0x395c, 0x3547, ++ 0xb5dd, 0x39ec, 0x3959, 0x354c, ++ 0xb5e3, 0x39e8, 0x3956, 0x3552, ++ 0xb5e9, 0x39e4, 0x3954, 0x3557, ++ 0xb5ee, 0x39e1, 0x3951, 0x355d, ++ 0xb5f4, 0x39dd, 0x394e, 0x3563, ++ 0xb5fa, 0x39d9, 0x394b, 0x3568, ++ 0xb5ff, 0x39d6, 0x3948, 0x356e, ++ 0xb605, 0x39d2, 0x3946, 0x3573, ++ 0xb60b, 0x39cf, 0x3943, 0x3579, ++ 0xb610, 0x39cb, 0x3940, 0x357f, ++ 0xb616, 0x39c7, 0x393d, 0x3584, ++ 0xb61c, 0x39c4, 0x393a, 0x358a, ++ 0xb621, 0x39c0, 0x3937, 0x3590, ++ 0xb627, 0x39bd, 0x3935, 0x3595, ++ 0xb62d, 0x39b9, 0x3932, 0x359b, ++ 0xb633, 0x39b5, 0x392f, 0x35a1, ++ 0xb638, 0x39b2, 0x392c, 0x35a6, ++ 0xb63e, 0x39ae, 0x3929, 0x35ac, ++ 0xb644, 0x39ab, 0x3926, 0x35b2, ++ 0xb64a, 0x39a7, 0x3924, 0x35b7, ++ 0xb64f, 0x39a3, 0x3921, 0x35bd, ++ 0xb655, 0x39a0, 0x391e, 0x35c3, ++ 0xb65b, 0x399c, 0x391b, 0x35c9, ++ 0xb661, 0x3999, 0x3918, 0x35ce, ++ 0xb667, 0x3995, 0x3915, 0x35d4, ++ 0xb66c, 0x3992, 0x3912, 0x35da, ++ 0xb672, 0x398e, 0x3910, 0x35df, ++ 0xb678, 0x398a, 0x390d, 0x35e5, ++ 0xb67e, 0x3987, 0x390a, 0x35eb, ++ 0xb684, 0x3983, 0x3907, 0x35f1, ++ 0xb68a, 0x3980, 0x3904, 0x35f6, ++ 0xb68f, 0x397c, 0x3901, 0x35fc, ++ 0xb695, 0x3979, 0x38fe, 0x3602, ++ 0xb69b, 0x3975, 0x38fb, 0x3608, ++ 0xb6a1, 0x3972, 0x38f8, 0x360e, ++ 0xb6a7, 0x396e, 0x38f6, 0x3613, ++ 0xb6ad, 0x396b, 0x38f3, 0x3619, ++ 0xb6b3, 0x3967, 0x38f0, 0x361f, ++ 0xb6b9, 0x3964, 0x38ed, 0x3625, ++ 0xb6bf, 0x3960, 0x38ea, 0x362b, ++ 0xb6c5, 0x395d, 0x38e7, 0x3630, ++ 0xb6cb, 0x3959, 0x38e4, 0x3636, ++ 0xb6d1, 0x3956, 0x38e1, 0x363c, ++ 0xb6d6, 0x3952, 0x38de, 0x3642, ++ 0xb6dc, 0x394f, 0x38db, 0x3648, ++ 0xb6e2, 0x394b, 0x38d9, 0x364d, ++ 0xb6e8, 0x3948, 0x38d6, 0x3653, ++ 0xb6ee, 0x3944, 0x38d3, 0x3659, ++ 0xb6f4, 0x3941, 0x38d0, 0x365f, ++ 0xb6fa, 0x393d, 0x38cd, 0x3665, ++ 0xb700, 0x393a, 0x38ca, 0x366b, ++ 0xb706, 0x3936, 0x38c7, 0x3671, ++ 0xb70c, 0x3933, 0x38c4, 0x3676, ++ 0xb712, 0x392f, 0x38c1, 0x367c, ++ 0xb719, 0x392c, 0x38be, 0x3682, ++ 0xb71f, 0x3928, 0x38bb, 0x3688, ++ 0xb725, 0x3925, 0x38b8, 0x368e, ++ 0xb72b, 0x3921, 0x38b5, 0x3694, ++ 0xb731, 0x391e, 0x38b2, 0x369a, ++ 0xb737, 0x391a, 0x38af, 0x36a0, ++ 0xb73d, 0x3917, 0x38ad, 0x36a5, ++ 0xb743, 0x3914, 0x38aa, 0x36ab, ++ 0xb749, 0x3910, 0x38a7, 0x36b1, ++ 0xb74f, 0x390d, 0x38a4, 0x36b7, ++ 0xb755, 0x3909, 0x38a1, 0x36bd, ++ 0xb75b, 0x3906, 0x389e, 0x36c3, ++ 0xb762, 0x3902, 0x389b, 0x36c9, ++ 0xb768, 0x38ff, 0x3898, 0x36cf, ++ 0xb76e, 0x38fc, 0x3895, 0x36d5, ++ 0xb774, 0x38f8, 0x3892, 0x36db, ++ 0xb77a, 0x38f5, 0x388f, 0x36e1, ++ 0xb780, 0x38f1, 0x388c, 0x36e7, ++ 0xb787, 0x38ee, 0x3889, 0x36ec, ++ 0xb78d, 0x38eb, 0x3886, 0x36f2, ++ 0xb793, 0x38e7, 0x3883, 0x36f8, ++ 0xb799, 0x38e4, 0x3880, 0x36fe, ++ 0xb79f, 0x38e0, 0x387d, 0x3704, ++ 0xb7a5, 0x38dd, 0x387a, 0x370a, ++ 0xb7ac, 0x38da, 0x3877, 0x3710, ++ 0xb7b2, 0x38d6, 0x3874, 0x3716, ++ 0xb7b8, 0x38d3, 0x3871, 0x371c, ++ 0xb7be, 0x38cf, 0x386e, 0x3722, ++ 0xb7c5, 0x38cc, 0x386b, 0x3728, ++ 0xb7cb, 0x38c9, 0x3868, 0x372e, ++ 0xb7d1, 0x38c5, 0x3865, 0x3734, ++ 0xb7d7, 0x38c2, 0x3862, 0x373a, ++ 0xb7de, 0x38bf, 0x385f, 0x3740, ++ 0xb7e4, 0x38bb, 0x385c, 0x3746, ++ 0xb7ea, 0x38b8, 0x3859, 0x374c, ++ 0xb7f1, 0x38b5, 0x3856, 0x3752, ++ 0xb7f7, 0x38b1, 0x3853, 0x3758, ++ 0xb7fd, 0x38ae, 0x3850, 0x375e, ++ 0xb801, 0x38aa, 0x384d, 0x3764, ++ 0xb805, 0x38a7, 0x384a, 0x376a, ++ 0xb808, 0x38a4, 0x3847, 0x3770, ++ 0xb80b, 0x38a0, 0x3844, 0x3776, ++ 0xb80e, 0x389d, 0x3841, 0x377c, ++ 0xb811, 0x389a, 0x383e, 0x3782, ++ 0xb815, 0x3897, 0x383b, 0x3788, ++ 0xb818, 0x3893, 0x3838, 0x378e, ++ 0xb81b, 0x3890, 0x3835, 0x3794, ++ 0xb81e, 0x388d, 0x3832, 0x379a, ++ 0xb821, 0x3889, 0x382f, 0x37a0, ++ 0xb824, 0x3886, 0x382c, 0x37a6, ++ 0xb828, 0x3883, 0x3829, 0x37ac, ++ 0xb82b, 0x387f, 0x3826, 0x37b2, ++ 0xb82e, 0x387c, 0x3823, 0x37b8, ++ 0xb831, 0x3879, 0x3820, 0x37be, ++ 0xb835, 0x3876, 0x381d, 0x37c4, ++ 0xb838, 0x3872, 0x381a, 0x37ca, ++ 0xb83b, 0x386f, 0x3817, 0x37d0, ++ 0xb83e, 0x386c, 0x3814, 0x37d6, ++ 0xb841, 0x3868, 0x3811, 0x37dc, ++ 0xb845, 0x3865, 0x380e, 0x37e2, ++ 0xb848, 0x3862, 0x380b, 0x37e8, ++ 0xb84b, 0x385f, 0x3808, 0x37ee, ++ 0xb84e, 0x385b, 0x3806, 0x37f4, ++ 0xb852, 0x3858, 0x3803, 0x37fa, ++ 0xb855, 0x3855, 0x3800, 0x3800, ++ 0xb858, 0x3852, 0x37fa, 0x3803, ++ 0xb85b, 0x384e, 0x37f4, 0x3806, ++ 0xb85f, 0x384b, 0x37ee, 0x3808, ++ 0xb862, 0x3848, 0x37e8, 0x380b, ++ 0xb865, 0x3845, 0x37e2, 0x380e, ++ 0xb868, 0x3841, 0x37dc, 0x3811, ++ 0xb86c, 0x383e, 0x37d6, 0x3814, ++ 0xb86f, 0x383b, 0x37d0, 0x3817, ++ 0xb872, 0x3838, 0x37ca, 0x381a, ++ 0xb876, 0x3835, 0x37c4, 0x381d, ++ 0xb879, 0x3831, 0x37be, 0x3820, ++ 0xb87c, 0x382e, 0x37b8, 0x3823, ++ 0xb87f, 0x382b, 0x37b2, 0x3826, ++ 0xb883, 0x3828, 0x37ac, 0x3829, ++ 0xb886, 0x3824, 0x37a6, 0x382c, ++ 0xb889, 0x3821, 0x37a0, 0x382f, ++ 0xb88d, 0x381e, 0x379a, 0x3832, ++ 0xb890, 0x381b, 0x3794, 0x3835, ++ 0xb893, 0x3818, 0x378e, 0x3838, ++ 0xb897, 0x3815, 0x3788, 0x383b, ++ 0xb89a, 0x3811, 0x3782, 0x383e, ++ 0xb89d, 0x380e, 0x377c, 0x3841, ++ 0xb8a0, 0x380b, 0x3776, 0x3844, ++ 0xb8a4, 0x3808, 0x3770, 0x3847, ++ 0xb8a7, 0x3805, 0x376a, 0x384a, ++ 0xb8aa, 0x3801, 0x3764, 0x384d, ++ 0xb8ae, 0x37fd, 0x375e, 0x3850, ++ 0xb8b1, 0x37f7, 0x3758, 0x3853, ++ 0xb8b5, 0x37f1, 0x3752, 0x3856, ++ 0xb8b8, 0x37ea, 0x374c, 0x3859, ++ 0xb8bb, 0x37e4, 0x3746, 0x385c, ++ 0xb8bf, 0x37de, 0x3740, 0x385f, ++ 0xb8c2, 0x37d7, 0x373a, 0x3862, ++ 0xb8c5, 0x37d1, 0x3734, 0x3865, ++ 0xb8c9, 0x37cb, 0x372e, 0x3868, ++ 0xb8cc, 0x37c5, 0x3728, 0x386b, ++ 0xb8cf, 0x37be, 0x3722, 0x386e, ++ 0xb8d3, 0x37b8, 0x371c, 0x3871, ++ 0xb8d6, 0x37b2, 0x3716, 0x3874, ++ 0xb8da, 0x37ac, 0x3710, 0x3877, ++ 0xb8dd, 0x37a5, 0x370a, 0x387a, ++ 0xb8e0, 0x379f, 0x3704, 0x387d, ++ 0xb8e4, 0x3799, 0x36fe, 0x3880, ++ 0xb8e7, 0x3793, 0x36f8, 0x3883, ++ 0xb8eb, 0x378d, 0x36f2, 0x3886, ++ 0xb8ee, 0x3787, 0x36ec, 0x3889, ++ 0xb8f1, 0x3780, 0x36e7, 0x388c, ++ 0xb8f5, 0x377a, 0x36e1, 0x388f, ++ 0xb8f8, 0x3774, 0x36db, 0x3892, ++ 0xb8fc, 0x376e, 0x36d5, 0x3895, ++ 0xb8ff, 0x3768, 0x36cf, 0x3898, ++ 0xb902, 0x3762, 0x36c9, 0x389b, ++ 0xb906, 0x375b, 0x36c3, 0x389e, ++ 0xb909, 0x3755, 0x36bd, 0x38a1, ++ 0xb90d, 0x374f, 0x36b7, 0x38a4, ++ 0xb910, 0x3749, 0x36b1, 0x38a7, ++ 0xb914, 0x3743, 0x36ab, 0x38aa, ++ 0xb917, 0x373d, 0x36a5, 0x38ad, ++ 0xb91a, 0x3737, 0x36a0, 0x38af, ++ 0xb91e, 0x3731, 0x369a, 0x38b2, ++ 0xb921, 0x372b, 0x3694, 0x38b5, ++ 0xb925, 0x3725, 0x368e, 0x38b8, ++ 0xb928, 0x371f, 0x3688, 0x38bb, ++ 0xb92c, 0x3719, 0x3682, 0x38be, ++ 0xb92f, 0x3712, 0x367c, 0x38c1, ++ 0xb933, 0x370c, 0x3676, 0x38c4, ++ 0xb936, 0x3706, 0x3671, 0x38c7, ++ 0xb93a, 0x3700, 0x366b, 0x38ca, ++ 0xb93d, 0x36fa, 0x3665, 0x38cd, ++ 0xb941, 0x36f4, 0x365f, 0x38d0, ++ 0xb944, 0x36ee, 0x3659, 0x38d3, ++ 0xb948, 0x36e8, 0x3653, 0x38d6, ++ 0xb94b, 0x36e2, 0x364d, 0x38d9, ++ 0xb94f, 0x36dc, 0x3648, 0x38db, ++ 0xb952, 0x36d6, 0x3642, 0x38de, ++ 0xb956, 0x36d1, 0x363c, 0x38e1, ++ 0xb959, 0x36cb, 0x3636, 0x38e4, ++ 0xb95d, 0x36c5, 0x3630, 0x38e7, ++ 0xb960, 0x36bf, 0x362b, 0x38ea, ++ 0xb964, 0x36b9, 0x3625, 0x38ed, ++ 0xb967, 0x36b3, 0x361f, 0x38f0, ++ 0xb96b, 0x36ad, 0x3619, 0x38f3, ++ 0xb96e, 0x36a7, 0x3613, 0x38f6, ++ 0xb972, 0x36a1, 0x360e, 0x38f8, ++ 0xb975, 0x369b, 0x3608, 0x38fb, ++ 0xb979, 0x3695, 0x3602, 0x38fe, ++ 0xb97c, 0x368f, 0x35fc, 0x3901, ++ 0xb980, 0x368a, 0x35f6, 0x3904, ++ 0xb983, 0x3684, 0x35f1, 0x3907, ++ 0xb987, 0x367e, 0x35eb, 0x390a, ++ 0xb98a, 0x3678, 0x35e5, 0x390d, ++ 0xb98e, 0x3672, 0x35df, 0x3910, ++ 0xb992, 0x366c, 0x35da, 0x3912, ++ 0xb995, 0x3667, 0x35d4, 0x3915, ++ 0xb999, 0x3661, 0x35ce, 0x3918, ++ 0xb99c, 0x365b, 0x35c9, 0x391b, ++ 0xb9a0, 0x3655, 0x35c3, 0x391e, ++ 0xb9a3, 0x364f, 0x35bd, 0x3921, ++ 0xb9a7, 0x364a, 0x35b7, 0x3924, ++ 0xb9ab, 0x3644, 0x35b2, 0x3926, ++ 0xb9ae, 0x363e, 0x35ac, 0x3929, ++ 0xb9b2, 0x3638, 0x35a6, 0x392c, ++ 0xb9b5, 0x3633, 0x35a1, 0x392f, ++ 0xb9b9, 0x362d, 0x359b, 0x3932, ++ 0xb9bd, 0x3627, 0x3595, 0x3935, ++ 0xb9c0, 0x3621, 0x3590, 0x3937, ++ 0xb9c4, 0x361c, 0x358a, 0x393a, ++ 0xb9c7, 0x3616, 0x3584, 0x393d, ++ 0xb9cb, 0x3610, 0x357f, 0x3940, ++ 0xb9cf, 0x360b, 0x3579, 0x3943, ++ 0xb9d2, 0x3605, 0x3573, 0x3946, ++ 0xb9d6, 0x35ff, 0x356e, 0x3948, ++ 0xb9d9, 0x35fa, 0x3568, 0x394b, ++ 0xb9dd, 0x35f4, 0x3563, 0x394e, ++ 0xb9e1, 0x35ee, 0x355d, 0x3951, ++ 0xb9e4, 0x35e9, 0x3557, 0x3954, ++ 0xb9e8, 0x35e3, 0x3552, 0x3956, ++ 0xb9ec, 0x35dd, 0x354c, 0x3959, ++ 0xb9ef, 0x35d8, 0x3547, 0x395c, ++ 0xb9f3, 0x35d2, 0x3541, 0x395f, ++ 0xb9f7, 0x35cd, 0x353c, 0x3961, ++ 0xb9fa, 0x35c7, 0x3536, 0x3964, ++ 0xb9fe, 0x35c1, 0x3530, 0x3967, ++ 0xba02, 0x35bc, 0x352b, 0x396a, ++ 0xba05, 0x35b6, 0x3525, 0x396d, ++ 0xba09, 0x35b1, 0x3520, 0x396f, ++ 0xba0d, 0x35ab, 0x351a, 0x3972, ++ 0xba10, 0x35a6, 0x3515, 0x3975, ++ 0xba14, 0x35a0, 0x350f, 0x3978, ++ 0xba18, 0x359b, 0x350a, 0x397a, ++ 0xba1b, 0x3595, 0x3504, 0x397d, ++ 0xba1f, 0x3590, 0x34ff, 0x3980, ++ 0xba23, 0x358a, 0x34f9, 0x3983, ++ 0xba26, 0x3585, 0x34f4, 0x3985, ++ 0xba2a, 0x357f, 0x34ef, 0x3988, ++ 0xba2e, 0x357a, 0x34e9, 0x398b, ++ 0xba32, 0x3574, 0x34e4, 0x398d, ++ 0xba35, 0x356f, 0x34de, 0x3990, ++ 0xba39, 0x3569, 0x34d9, 0x3993, ++ 0xba3d, 0x3564, 0x34d3, 0x3996, ++ 0xba40, 0x355e, 0x34ce, 0x3998, ++ 0xba44, 0x3559, 0x34c9, 0x399b, ++ 0xba48, 0x3554, 0x34c3, 0x399e, ++ 0xba4c, 0x354e, 0x34be, 0x39a0, ++ 0xba4f, 0x3549, 0x34b9, 0x39a3, ++ 0xba53, 0x3543, 0x34b3, 0x39a6, ++ 0xba57, 0x353e, 0x34ae, 0x39a8, ++ 0xba5a, 0x3539, 0x34a8, 0x39ab, ++ 0xba5e, 0x3533, 0x34a3, 0x39ae, ++ 0xba62, 0x352e, 0x349e, 0x39b0, ++ 0xba66, 0x3529, 0x3499, 0x39b3, ++ 0xba6a, 0x3523, 0x3493, 0x39b6, ++ 0xba6d, 0x351e, 0x348e, 0x39b8, ++ 0xba71, 0x3519, 0x3489, 0x39bb, ++ 0xba75, 0x3513, 0x3483, 0x39be, ++ 0xba79, 0x350e, 0x347e, 0x39c0, ++ 0xba7c, 0x3509, 0x3479, 0x39c3, ++ 0xba80, 0x3504, 0x3474, 0x39c5, ++ 0xba84, 0x34fe, 0x346e, 0x39c8, ++ 0xba88, 0x34f9, 0x3469, 0x39cb, ++ 0xba8b, 0x34f4, 0x3464, 0x39cd, ++ 0xba8f, 0x34ef, 0x345f, 0x39d0, ++ 0xba93, 0x34e9, 0x345a, 0x39d2, ++ 0xba97, 0x34e4, 0x3454, 0x39d5, ++ 0xba9b, 0x34df, 0x344f, 0x39d8, ++ 0xba9e, 0x34da, 0x344a, 0x39da, ++ 0xbaa2, 0x34d5, 0x3445, 0x39dd, ++ 0xbaa6, 0x34cf, 0x3440, 0x39df, ++ 0xbaaa, 0x34ca, 0x343b, 0x39e2, ++ 0xbaae, 0x34c5, 0x3435, 0x39e5, ++ 0xbab1, 0x34c0, 0x3430, 0x39e7, ++ 0xbab5, 0x34bb, 0x342b, 0x39ea, ++ 0xbab9, 0x34b6, 0x3426, 0x39ec, ++ 0xbabd, 0x34b1, 0x3421, 0x39ef, ++ 0xbac1, 0x34ac, 0x341c, 0x39f1, ++ 0xbac5, 0x34a6, 0x3417, 0x39f4, ++ 0xbac8, 0x34a1, 0x3412, 0x39f6, ++ 0xbacc, 0x349c, 0x340d, 0x39f9, ++ 0xbad0, 0x3497, 0x3408, 0x39fb, ++ 0xbad4, 0x3492, 0x3403, 0x39fe, ++ 0xbad8, 0x348d, 0x33fc, 0x3a00, ++ 0xbadc, 0x3488, 0x33f2, 0x3a03, ++ 0xbae0, 0x3483, 0x33e8, 0x3a05, ++ 0xbae3, 0x347e, 0x33de, 0x3a08, ++ 0xbae7, 0x3479, 0x33d4, 0x3a0a, ++ 0xbaeb, 0x3474, 0x33ca, 0x3a0d, ++ 0xbaef, 0x346f, 0x33c1, 0x3a0f, ++ 0xbaf3, 0x346a, 0x33b7, 0x3a12, ++ 0xbaf7, 0x3465, 0x33ad, 0x3a14, ++ 0xbafb, 0x3460, 0x33a3, 0x3a17, ++ 0xbafe, 0x345b, 0x3399, 0x3a19, ++ 0xbb02, 0x3456, 0x3390, 0x3a1c, ++ 0xbb06, 0x3451, 0x3386, 0x3a1e, ++ 0xbb0a, 0x344d, 0x337c, 0x3a20, ++ 0xbb0e, 0x3448, 0x3372, 0x3a23, ++ 0xbb12, 0x3443, 0x3369, 0x3a25, ++ 0xbb16, 0x343e, 0x335f, 0x3a28, ++ 0xbb1a, 0x3439, 0x3355, 0x3a2a, ++ 0xbb1e, 0x3434, 0x334c, 0x3a2c, ++ 0xbb21, 0x342f, 0x3342, 0x3a2f, ++ 0xbb25, 0x342a, 0x3339, 0x3a31, ++ 0xbb29, 0x3426, 0x332f, 0x3a34, ++ 0xbb2d, 0x3421, 0x3326, 0x3a36, ++ 0xbb31, 0x341c, 0x331c, 0x3a38, ++ 0xbb35, 0x3417, 0x3313, 0x3a3b, ++ 0xbb39, 0x3412, 0x3309, 0x3a3d, ++ 0xbb3d, 0x340e, 0x3300, 0x3a3f, ++ 0xbb41, 0x3409, 0x32f7, 0x3a42, ++ 0xbb45, 0x3404, 0x32ed, 0x3a44, ++ 0xbb49, 0x33ff, 0x32e4, 0x3a46, ++ 0xbb4d, 0x33f6, 0x32db, 0x3a49, ++ 0xbb51, 0x33ed, 0x32d1, 0x3a4b, ++ 0xbb54, 0x33e3, 0x32c8, 0x3a4d, ++ 0xbb58, 0x33da, 0x32bf, 0x3a50, ++ 0xbb5c, 0x33d0, 0x32b6, 0x3a52, ++ 0xbb60, 0x33c7, 0x32ad, 0x3a54, ++ 0xbb64, 0x33be, 0x32a3, 0x3a57, ++ 0xbb68, 0x33b5, 0x329a, 0x3a59, ++ 0xbb6c, 0x33ab, 0x3291, 0x3a5b, ++ 0xbb70, 0x33a2, 0x3288, 0x3a5d, ++ 0xbb74, 0x3399, 0x327f, 0x3a60, ++ 0xbb78, 0x3390, 0x3276, 0x3a62, ++ 0xbb7c, 0x3387, 0x326d, 0x3a64, ++ 0xbb80, 0x337d, 0x3264, 0x3a66, ++ 0xbb84, 0x3374, 0x325b, 0x3a69, ++ 0xbb88, 0x336b, 0x3252, 0x3a6b, ++ 0xbb8c, 0x3362, 0x3249, 0x3a6d, ++ 0xbb90, 0x3359, 0x3241, 0x3a6f, ++ 0xbb94, 0x3350, 0x3238, 0x3a71, ++ 0xbb98, 0x3347, 0x322f, 0x3a74, ++ 0xbb9c, 0x333e, 0x3226, 0x3a76, ++ 0xbba0, 0x3335, 0x321e, 0x3a78, ++ 0xbba4, 0x332c, 0x3215, 0x3a7a, ++ 0xbba8, 0x3323, 0x320c, 0x3a7c, ++ 0xbbac, 0x331a, 0x3204, 0x3a7e, ++ 0xbbb0, 0x3312, 0x31fb, 0x3a81, ++ 0xbbb4, 0x3309, 0x31f2, 0x3a83, ++ 0xbbb8, 0x3300, 0x31ea, 0x3a85, ++ 0xbbbc, 0x32f7, 0x31e1, 0x3a87, ++ 0xbbc0, 0x32ee, 0x31d9, 0x3a89, ++ 0xbbc4, 0x32e6, 0x31d0, 0x3a8b, ++ 0xbbc8, 0x32dd, 0x31c8, 0x3a8d, ++ 0xbbcc, 0x32d4, 0x31bf, 0x3a90, ++ 0xbbd0, 0x32cc, 0x31b7, 0x3a92, ++ 0xbbd4, 0x32c3, 0x31af, 0x3a94, ++ 0xbbd8, 0x32ba, 0x31a6, 0x3a96, ++ 0xbbdc, 0x32b2, 0x319e, 0x3a98, ++ 0xbbe0, 0x32a9, 0x3196, 0x3a9a, ++ 0xbbe4, 0x32a1, 0x318e, 0x3a9c, ++ 0xbbe8, 0x3298, 0x3185, 0x3a9e, ++ 0xbbec, 0x3290, 0x317d, 0x3aa0, ++ 0xbbf0, 0x3287, 0x3175, 0x3aa2, ++ 0xbbf4, 0x327f, 0x316d, 0x3aa4, ++ 0xbbf8, 0x3277, 0x3165, 0x3aa6, ++ 0xbbfc, 0x326e, 0x315d, 0x3aa8, ++ 0 }; ++ +diff --git a/src/bicubic_table.py b/src/bicubic_table.py +new file mode 100755 +index 0000000..232ccb7 +--- /dev/null ++++ b/src/bicubic_table.py +@@ -0,0 +1,72 @@ ++#!/usr/bin/python ++ ++import struct ++ ++def half(i): ++ fs, fe, fm = ((i >> 31) & 0x1, (i >> 23) & 0xff, i & 0x7fffff) ++ s, e, m = (fs, 0, 0) ++ ++ if (fe == 0x0): ++ pass ++ if ((fe == 0xff) and (fm == 0x0)): ++ e = 31 ++ elif (fe == 0xff): ++ m = 1 ++ e = 31 ++ else: ++ exp = fe - 127; ++ if (exp < -24): ++ pass ++ elif (exp < -14): ++ temp = 10 - (-14 - exp) ++ m = 2**temp + (m >> (23 - temp)) ++ elif (exp > 15): ++ e = 31 ++ else: ++ e = exp + 15 ++ m = fm >> 13 ++ ++ return ((s << 15) | (e << 10) | m) ++ ++def texgen(pix): ++ ++ tex = [] ++ ++ for i in range(0,pix,4): ++ ++ a = i / float(pix) ++ a2 = a ** 2 ++ a3 = a ** 3 ++ ++ w0 = 1 / 6.0 * (-a3 + 3 * a2 + -3 * a + 1) ++ w1 = 1 / 6.0 * (3 * a3 + -6 * a2 + 4) ++ w2 = 1 / 6.0 * (-3 * a3 + 3 * a2 + 3 * a + 1) ++ w3 = 1 / 6.0 * a3 ++ ++ tex.append(-(1 - (w1 / (w0 + w1)) + a)) ++ tex.append(1 + (w3 / (w2 + w3)) - a) ++ tex.append(w0 + w1) ++ tex.append(w2 + w3) ++ ++ return tex ++ ++def printrow(l, offset): ++ ++ seq = [ struct.unpack(' +@@ -624,11 +623,17 @@ radeon_crtc_modeset_ioctl(xf86CrtcPtr crtc, Bool post) + RADEONInfoPtr info = RADEONPTR(crtc->scrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + struct drm_modeset_ctl modeset; ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ if (!info->directRenderingEnabled) ++ return; + + modeset.crtc = radeon_crtc->crtc_id; + modeset.cmd = post ? _DRM_POST_MODESET : _DRM_PRE_MODESET; + +- ioctl(info->drmFD, DRM_IOCTL_MODESET_CTL, &modeset); ++ ioctl(info->dri->drmFD, DRM_IOCTL_MODESET_CTL, &modeset); ++ ++ info->ModeReg->gen_int_cntl = INREG( RADEON_GEN_INT_CNTL ); + #endif + } + +@@ -752,13 +757,13 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, + RADEONInfoPtr info = RADEONPTR(pScrn); + int Base; + #ifdef XF86DRI +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + XF86DRISAREAPtr pSAREA; + #endif + + save->crtc_offset = pScrn->fbOffset; + #ifdef XF86DRI +- if (info->allowPageFlip) ++ if (info->dri && info->dri->allowPageFlip) + save->crtc_offset_cntl = RADEON_CRTC_OFFSET_FLIP_CNTL; + else + #endif +@@ -851,7 +856,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, + pSAREA->frame.height = pScrn->frameY1 - y + 1; + + if (pSAREAPriv->pfCurrentPage == 1) { +- Base += info->backOffset - info->frontOffset; ++ Base += info->dri->backOffset - info->dri->frontOffset; + } + } + #endif +@@ -970,7 +975,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, + RADEONInfoPtr info = RADEONPTR(pScrn); + int Base; + #ifdef XF86DRI +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + XF86DRISAREAPtr pSAREA; + #endif + +@@ -978,7 +983,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, + */ + save->crtc2_offset = pScrn->fbOffset; + #ifdef XF86DRI +- if (info->allowPageFlip) ++ if (info->dri && info->dri->allowPageFlip) + save->crtc2_offset_cntl = RADEON_CRTC_OFFSET_FLIP_CNTL; + else + #endif +@@ -1065,7 +1070,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, + pSAREAPriv->crtc2_base = Base; + + if (pSAREAPriv->pfCurrentPage == 1) { +- Base += info->backOffset - info->frontOffset; ++ Base += info->dri->backOffset - info->dri->frontOffset; + } + } + #endif +@@ -1327,9 +1332,12 @@ radeon_update_tv_routing(ScrnInfoPtr pScrn, RADEONSavePtr restore) + } + + /* Calculate display buffer watermark to prevent buffer underflow */ +-static void +-RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2, DisplayModePtr mode1, DisplayModePtr mode2) ++void ++RADEONInitDispBandwidthLegacy(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2) + { ++ RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); + unsigned char *RADEONMMIO = info->MMIO; + +@@ -1352,10 +1360,10 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + float min_mem_eff = 0.8; + float sclk_eff, sclk_delay; + float mc_latency_mclk, mc_latency_sclk, cur_latency_mclk, cur_latency_sclk; +- float disp_latency, disp_latency_overhead, disp_drain_rate, disp_drain_rate2; ++ float disp_latency, disp_latency_overhead, disp_drain_rate = 0, disp_drain_rate2; + float pix_clk, pix_clk2; /* in MHz */ + int cur_size = 16; /* in octawords */ +- int critical_point, critical_point2; ++ int critical_point = 0, critical_point2; + int stop_req, max_stop_req; + float read_return_rate, time_disp1_drop_priority; + +@@ -1366,15 +1374,15 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + */ + if ((info->DispPriority == 2) && IS_R300_VARIANT) { + uint32_t mc_init_misc_lat_timer = INREG(R300_MC_INIT_MISC_LAT_TIMER); +- if (pRADEONEnt->pCrtc[1]->enabled) { +- mc_init_misc_lat_timer |= 0x1100; /* display 0 and 1 */ +- } else { +- mc_init_misc_lat_timer |= 0x0100; /* display 0 only */ +- } ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP1R_INIT_LAT_MASK << R300_MC_DISP1R_INIT_LAT_SHIFT); ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP0R_INIT_LAT_MASK << R300_MC_DISP0R_INIT_LAT_SHIFT); ++ if (pRADEONEnt->pCrtc[1]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP1R_INIT_LAT_SHIFT); /* display 1 */ ++ if (pRADEONEnt->pCrtc[0]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP0R_INIT_LAT_SHIFT); /* display 0 */ + OUTREG(R300_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer); + } + +- + /* R420 and RV410 family not supported yet */ + if (info->ChipFamily == CHIP_FAMILY_R420 || info->ChipFamily == CHIP_FAMILY_RV410) return; + +@@ -1383,15 +1391,17 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + */ + mem_bw = info->mclk * (info->RamWidth / 8) * (info->IsDDR ? 2 : 1); + +- pix_clk = mode1->Clock/1000.0; +- if (mode2) ++ pix_clk = 0; ++ pix_clk2 = 0; ++ peak_disp_bw = 0; ++ if (mode1) { ++ pix_clk = mode1->Clock/1000.0; ++ peak_disp_bw += (pix_clk * pixel_bytes1); ++ } ++ if (mode2) { + pix_clk2 = mode2->Clock/1000.0; +- else +- pix_clk2 = 0; +- +- peak_disp_bw = (pix_clk * info->CurrentLayout.pixel_bytes); +- if (pixel_bytes2) +- peak_disp_bw += (pix_clk2 * pixel_bytes2); ++ peak_disp_bw += (pix_clk2 * pixel_bytes2); ++ } + + if (peak_disp_bw >= mem_bw * min_mem_eff) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +@@ -1399,20 +1409,6 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + "If you have flickering problem, try to lower resolution, refresh rate, or color depth\n"); + } + +- /* CRTC1 +- Set GRPH_BUFFER_CNTL register using h/w defined optimal values. +- GRPH_STOP_REQ <= MIN[ 0x7C, (CRTC_H_DISP + 1) * (bit depth) / 0x10 ] +- */ +- stop_req = mode1->HDisplay * info->CurrentLayout.pixel_bytes / 16; +- +- /* setup Max GRPH_STOP_REQ default value */ +- if (IS_RV100_VARIANT) +- max_stop_req = 0x5c; +- else +- max_stop_req = 0x7c; +- if (stop_req > max_stop_req) +- stop_req = max_stop_req; +- + /* Get values from the EXT_MEM_CNTL register...converting its contents. */ + temp = INREG(RADEON_MEM_TIMING_CNTL); + if ((info->ChipFamily == CHIP_FAMILY_RV100) || info->IsIGP) { /* RV100, M6, IGPs */ +@@ -1435,9 +1431,8 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + } + + if (IS_R300_VARIANT) { +- + /* on the R300, Tcas is included in Trbs. +- */ ++ */ + temp = INREG(RADEON_MEM_CNTL); + data = (R300_MEM_NUM_CHANNELS_MASK & temp); + if (data == 1) { +@@ -1467,13 +1462,14 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + } else { + #ifdef XF86DRI + if (info->directRenderingEnabled) +- sclk_eff = info->sclk - (info->agpMode * 50.0 / 3.0); ++ sclk_eff = info->sclk - (info->dri->agpMode * 50.0 / 3.0); + else + #endif + sclk_eff = info->sclk; + } + +- /* Find the memory controller latency for the display client. ++ /* ++ Find the memory controller latency for the display client. + */ + if (IS_R300_VARIANT) { + /*not enough for R350 ???*/ +@@ -1527,89 +1523,107 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + mc_latency_sclk = mc_latency_sclk + disp_latency_overhead + cur_latency_sclk; + disp_latency = MAX(mc_latency_mclk, mc_latency_sclk); + +- /* +- Find the drain rate of the display buffer. +- */ +- disp_drain_rate = pix_clk / (16.0/info->CurrentLayout.pixel_bytes); +- if (pixel_bytes2) +- disp_drain_rate2 = pix_clk2 / (16.0/pixel_bytes2); ++ /* setup Max GRPH_STOP_REQ default value */ ++ if (IS_RV100_VARIANT) ++ max_stop_req = 0x5c; + else +- disp_drain_rate2 = 0; ++ max_stop_req = 0x7c; + +- /* +- Find the critical point of the display buffer. +- */ +- critical_point= (uint32_t)(disp_drain_rate * disp_latency + 0.5); ++ if (mode1) { ++ /* CRTC1 ++ Set GRPH_BUFFER_CNTL register using h/w defined optimal values. ++ GRPH_STOP_REQ <= MIN[ 0x7C, (CRTC_H_DISP + 1) * (bit depth) / 0x10 ] ++ */ ++ stop_req = mode1->HDisplay * pixel_bytes1 / 16; + +- /* ???? */ +- /* +- temp = (info->SavedReg.grph_buffer_cntl & RADEON_GRPH_CRITICAL_POINT_MASK) >> RADEON_GRPH_CRITICAL_POINT_SHIFT; +- if (critical_point < temp) critical_point = temp; +- */ +- if (info->DispPriority == 2) { +- critical_point = 0; +- } ++ if (stop_req > max_stop_req) ++ stop_req = max_stop_req; + +- /* +- The critical point should never be above max_stop_req-4. Setting +- GRPH_CRITICAL_CNTL = 0 will thus force high priority all the time. +- */ +- if (max_stop_req - critical_point < 4) critical_point = 0; ++ /* ++ Find the drain rate of the display buffer. ++ */ ++ disp_drain_rate = pix_clk / (16.0/pixel_bytes1); + +- if (critical_point == 0 && mode2 && info->ChipFamily == CHIP_FAMILY_R300) { +- /* some R300 cards have problem with this set to 0, when CRTC2 is enabled.*/ +- critical_point = 0x10; +- } ++ /* ++ Find the critical point of the display buffer. ++ */ ++ critical_point= (uint32_t)(disp_drain_rate * disp_latency + 0.5); + +- temp = info->SavedReg->grph_buffer_cntl; +- temp &= ~(RADEON_GRPH_STOP_REQ_MASK); +- temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT); +- temp &= ~(RADEON_GRPH_START_REQ_MASK); +- if ((info->ChipFamily == CHIP_FAMILY_R350) && +- (stop_req > 0x15)) { +- stop_req -= 0x10; +- } +- temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT); ++ /* ???? */ ++ /* ++ temp = (info->SavedReg.grph_buffer_cntl & RADEON_GRPH_CRITICAL_POINT_MASK) >> RADEON_GRPH_CRITICAL_POINT_SHIFT; ++ if (critical_point < temp) critical_point = temp; ++ */ ++ if (info->DispPriority == 2) { ++ critical_point = 0; ++ } + +- temp |= RADEON_GRPH_BUFFER_SIZE; +- temp &= ~(RADEON_GRPH_CRITICAL_CNTL | +- RADEON_GRPH_CRITICAL_AT_SOF | +- RADEON_GRPH_STOP_CNTL); +- /* +- Write the result into the register. +- */ +- OUTREG(RADEON_GRPH_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) | +- (critical_point << RADEON_GRPH_CRITICAL_POINT_SHIFT))); ++ /* ++ The critical point should never be above max_stop_req-4. Setting ++ GRPH_CRITICAL_CNTL = 0 will thus force high priority all the time. ++ */ ++ if (max_stop_req - critical_point < 4) critical_point = 0; ++ ++ if (critical_point == 0 && mode2 && info->ChipFamily == CHIP_FAMILY_R300) { ++ /* some R300 cards have problem with this set to 0, when CRTC2 is enabled.*/ ++ critical_point = 0x10; ++ } ++ ++ temp = info->SavedReg->grph_buffer_cntl; ++ temp &= ~(RADEON_GRPH_STOP_REQ_MASK); ++ temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT); ++ temp &= ~(RADEON_GRPH_START_REQ_MASK); ++ if ((info->ChipFamily == CHIP_FAMILY_R350) && ++ (stop_req > 0x15)) { ++ stop_req -= 0x10; ++ } ++ temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT); ++ ++ temp |= RADEON_GRPH_BUFFER_SIZE; ++ temp &= ~(RADEON_GRPH_CRITICAL_CNTL | ++ RADEON_GRPH_CRITICAL_AT_SOF | ++ RADEON_GRPH_STOP_CNTL); ++ /* ++ Write the result into the register. ++ */ ++ OUTREG(RADEON_GRPH_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) | ++ (critical_point << RADEON_GRPH_CRITICAL_POINT_SHIFT))); + + #if 0 +- if ((info->ChipFamily == CHIP_FAMILY_RS400) || +- (info->ChipFamily == CHIP_FAMILY_RS480)) { +- /* attempt to program RS400 disp regs correctly ??? */ +- temp = info->SavedReg->disp1_req_cntl1; +- temp &= ~(RS400_DISP1_START_REQ_LEVEL_MASK | +- RS400_DISP1_STOP_REQ_LEVEL_MASK); +- OUTREG(RS400_DISP1_REQ_CNTL1, (temp | +- (critical_point << RS400_DISP1_START_REQ_LEVEL_SHIFT) | +- (critical_point << RS400_DISP1_STOP_REQ_LEVEL_SHIFT))); +- temp = info->SavedReg->dmif_mem_cntl1; +- temp &= ~(RS400_DISP1_CRITICAL_POINT_START_MASK | +- RS400_DISP1_CRITICAL_POINT_STOP_MASK); +- OUTREG(RS400_DMIF_MEM_CNTL1, (temp | +- (critical_point << RS400_DISP1_CRITICAL_POINT_START_SHIFT) | +- (critical_point << RS400_DISP1_CRITICAL_POINT_STOP_SHIFT))); +- } ++ if ((info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) { ++ /* attempt to program RS400 disp regs correctly ??? */ ++ temp = info->SavedReg->disp1_req_cntl1; ++ temp &= ~(RS400_DISP1_START_REQ_LEVEL_MASK | ++ RS400_DISP1_STOP_REQ_LEVEL_MASK); ++ OUTREG(RS400_DISP1_REQ_CNTL1, (temp | ++ (critical_point << RS400_DISP1_START_REQ_LEVEL_SHIFT) | ++ (critical_point << RS400_DISP1_STOP_REQ_LEVEL_SHIFT))); ++ temp = info->SavedReg->dmif_mem_cntl1; ++ temp &= ~(RS400_DISP1_CRITICAL_POINT_START_MASK | ++ RS400_DISP1_CRITICAL_POINT_STOP_MASK); ++ OUTREG(RS400_DMIF_MEM_CNTL1, (temp | ++ (critical_point << RS400_DISP1_CRITICAL_POINT_START_SHIFT) | ++ (critical_point << RS400_DISP1_CRITICAL_POINT_STOP_SHIFT))); ++ } + #endif + +- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, +- "GRPH_BUFFER_CNTL from %x to %x\n", +- (unsigned int)info->SavedReg->grph_buffer_cntl, +- (unsigned int)INREG(RADEON_GRPH_BUFFER_CNTL)); ++ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, ++ "GRPH_BUFFER_CNTL from %x to %x\n", ++ (unsigned int)info->SavedReg->grph_buffer_cntl, ++ (unsigned int)INREG(RADEON_GRPH_BUFFER_CNTL)); ++ } + + if (mode2) { + stop_req = mode2->HDisplay * pixel_bytes2 / 16; + + if (stop_req > max_stop_req) stop_req = max_stop_req; + ++ /* ++ Find the drain rate of the display buffer. ++ */ ++ disp_drain_rate2 = pix_clk2 / (16.0/pixel_bytes2); ++ + temp = info->SavedReg->grph2_buffer_cntl; + temp &= ~(RADEON_GRPH_STOP_REQ_MASK); + temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT); +@@ -1629,7 +1643,10 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + critical_point2 = 0; + else { + read_return_rate = MIN(info->sclk, info->mclk*(info->RamWidth*(info->IsDDR+1)/128)); +- time_disp1_drop_priority = critical_point / (read_return_rate - disp_drain_rate); ++ if (mode1) ++ time_disp1_drop_priority = critical_point / (read_return_rate - disp_drain_rate); ++ else ++ time_disp1_drop_priority = 0; + + critical_point2 = (uint32_t)((disp_latency + time_disp1_drop_priority + + disp_latency) * disp_drain_rate2 + 0.5); +@@ -1681,45 +1698,6 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + } + + void +-RADEONInitDispBandwidth(ScrnInfoPtr pScrn) +-{ +- RADEONInfoPtr info = RADEONPTR(pScrn); +- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); +- DisplayModePtr mode1, mode2; +- int pixel_bytes2 = 0; +- +- if (info->IsPrimary || info->IsSecondary) +- mode1 = &xf86_config->crtc[0]->mode; +- else +- mode1 = info->CurrentLayout.mode; +- mode2 = NULL; +- pixel_bytes2 = info->CurrentLayout.pixel_bytes; +- +- if (xf86_config->num_crtc == 2) { +- pixel_bytes2 = 0; +- mode2 = NULL; +- +- if (xf86_config->crtc[1]->enabled && xf86_config->crtc[0]->enabled) { +- pixel_bytes2 = info->CurrentLayout.pixel_bytes; +- mode1 = &xf86_config->crtc[0]->mode; +- mode2 = &xf86_config->crtc[1]->mode; +- } else if (xf86_config->crtc[0]->enabled) { +- mode1 = &xf86_config->crtc[0]->mode; +- } else if (xf86_config->crtc[1]->enabled) { +- mode1 = &xf86_config->crtc[1]->mode; +- } else +- return; +- } else { +- if (xf86_config->crtc[0]->enabled) +- mode1 = &xf86_config->crtc[0]->mode; +- else +- return; +- } +- +- RADEONInitDispBandwidth2(pScrn, info, pixel_bytes2, mode1, mode2); +-} +- +-void + legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode, int x, int y) + { +@@ -1729,10 +1707,15 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, + RADEONInfoPtr info = RADEONPTR(pScrn); + int i = 0; + double dot_clock = 0; +- int pll_flags = RADEON_PLL_LEGACY | RADEON_PLL_PREFER_LOW_REF_DIV; ++ int pll_flags = RADEON_PLL_LEGACY; + Bool update_tv_routing = FALSE; + Bool tilingChanged = FALSE; + ++ if (adjusted_mode->Clock > 200000) /* range limits??? */ ++ pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; ++ else ++ pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; ++ + if (info->allowColorTiling) { + radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + tilingChanged = RADEONSetTiling(pScrn); +diff --git a/src/legacy_output.c b/src/legacy_output.c +index 9c9ebb9..e5ddf1f 100644 +--- a/src/legacy_output.c ++++ b/src/legacy_output.c +@@ -48,6 +48,8 @@ + #include "radeon_tv.h" + #include "radeon_atombios.h" + ++#include "ati_pciids_gen.h" ++ + static RADEONMonitorType radeon_detect_tv(ScrnInfoPtr pScrn); + static RADEONMonitorType radeon_detect_primary_dac(ScrnInfoPtr pScrn, Bool color); + static RADEONMonitorType radeon_detect_tv_dac(ScrnInfoPtr pScrn, Bool color); +@@ -277,16 +279,12 @@ static void + RADEONRestoreDVOChip(ScrnInfoPtr pScrn, xf86OutputPtr output) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- unsigned char *RADEONMMIO = info->MMIO; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + + if (!radeon_output->DVOChip) + return; + +- OUTREG(radeon_output->dvo_i2c.mask_clk_reg, +- INREG(radeon_output->dvo_i2c.mask_clk_reg) & +- (uint32_t)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1)); +- ++ RADEONI2CDoLock(output, TRUE); + if (!RADEONInitExtTMDSInfoFromBIOS(output)) { + if (radeon_output->DVOChip) { + switch(info->ext_tmds_chip) { +@@ -316,6 +314,7 @@ RADEONRestoreDVOChip(ScrnInfoPtr pScrn, xf86OutputPtr output) + } + } + } ++ RADEONI2CDoLock(output, FALSE); + } + + #if 0 +@@ -727,14 +726,6 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable) + save->crtc2_gen_cntl |= RADEON_CRTC2_CRT2_ON; + } + tv_dac_change = 1; +- /* IGP chips seem to use a mix of Primary and TVDAC controls */ +- if (info->IsIGP) { +- tmp = INREG(RADEON_CRTC_EXT_CNTL); +- tmp |= RADEON_CRTC_CRT_ON; +- OUTREG(RADEON_CRTC_EXT_CNTL, tmp); +- save->crtc_ext_cntl |= RADEON_CRTC_CRT_ON; +- RADEONDacPowerSet(pScrn, bEnable, TRUE); +- } + } + } else if (radeon_output->MonType == MT_DFP) { + if (radeon_output->TMDSType == TMDS_INT) { +@@ -815,14 +806,6 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable) + save->crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON; + } + } +- /* IGP chips seem to use a mix of Primary and TVDAC controls */ +- if (info->IsIGP) { +- tmp = INREG(RADEON_CRTC_EXT_CNTL); +- tmp &= ~RADEON_CRTC_CRT_ON; +- OUTREG(RADEON_CRTC_EXT_CNTL, tmp); +- save->crtc_ext_cntl &= ~RADEON_CRTC_CRT_ON; +- RADEONDacPowerSet(pScrn, bEnable, TRUE); +- } + } + } else if (radeon_output->MonType == MT_DFP) { + if (radeon_output->TMDSType == TMDS_INT) { +@@ -1033,9 +1016,14 @@ RADEONInitFP2Registers(xf86OutputPtr output, RADEONSavePtr save, + RADEON_FP2_DVO_RATE_SEL_SDR); + + +- /* XXX: these may be oem specific */ ++ /* XXX: these are oem specific */ + if (IS_R300_VARIANT) { +- save->fp2_gen_cntl |= RADEON_FP2_PAD_FLOP_EN | R300_FP2_DVO_CLOCK_MODE_SINGLE; ++ if ((info->Chipset == PCI_CHIP_RV350_NP) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1028) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x2001)) ++ save->fp2_gen_cntl |= R300_FP2_DVO_CLOCK_MODE_SINGLE; /* Dell Inspiron 8600 */ ++ else ++ save->fp2_gen_cntl |= RADEON_FP2_PAD_FLOP_EN | R300_FP2_DVO_CLOCK_MODE_SINGLE; + #if 0 + if (mode->Clock > 165000) + save->fp2_gen_cntl |= R300_FP2_DVO_DUAL_CHANNEL_EN; +@@ -1383,7 +1371,6 @@ RADEONInitOutputRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save, + { + Bool IsPrimary = crtc_num == 0 ? TRUE : FALSE; + RADEONOutputPrivatePtr radeon_output = output->driver_private; +- RADEONInfoPtr info = RADEONPTR(pScrn); + + if (crtc_num == 0) + RADEONInitRMXRegisters(output, save, mode); +@@ -1393,9 +1380,6 @@ RADEONInitOutputRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save, + RADEONInitDACRegisters(output, save, mode, IsPrimary); + } else { + RADEONInitDAC2Registers(output, save, mode, IsPrimary); +- /* IGP chips seem to use a mix of primary and TVDAC controls */ +- if (info->IsIGP) +- RADEONInitDACRegisters(output, save, mode, IsPrimary); + } + } else if (radeon_output->MonType == MT_LCD) { + RADEONInitLVDSRegisters(output, save, mode, IsPrimary); +@@ -1456,8 +1440,8 @@ legacy_output_mode_set(xf86OutputPtr output, DisplayModePtr mode, + } + OUTREG(RADEON_FP2_GEN_CNTL, fp2_gen_cntl); + } else { +- RADEONRestoreDVOChip(pScrn, output); + RADEONRestoreFP2Registers(pScrn, info->ModeReg); ++ RADEONRestoreDVOChip(pScrn, output); + } + } + break; +diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv +index 1f6fa82..07e71a3 100644 +--- a/src/pcidb/ati_pciids.csv ++++ b/src/pcidb/ati_pciids.csv +@@ -1,5 +1,6 @@ + "#pciid","define","family","mobility","igp","nocrtc2","Nointtvout","singledac","name" + "0x3150","RV380_3150","RV380",1,,,,,"ATI Radeon Mobility X600 (M24) 3150 (PCIE)" ++"0x3151","RV380_3151","RV380",,,,,,"ATI FireMV 2400 (PCI)" + "0x3152","RV380_3152","RV380",1,,,,,"ATI Radeon Mobility X300 (M24) 3152 (PCIE)" + "0x3154","RV380_3154","RV380",1,,,,,"ATI FireGL M24 GL 3154 (PCIE)" + "0x3E50","RV380_3E50","RV380",,,,,,"ATI Radeon X600 (RV380) 3E50 (PCIE)" +@@ -331,6 +332,9 @@ + "0x940A","R600_940A","R600",,,,,,"ATI FireGL V8650" + "0x940B","R600_940B","R600",,,,,,"ATI FireGL V8600" + "0x940F","R600_940F","R600",,,,,,"ATI FireGL V7600" ++"0x9440","RV770_9440","RV770",,,,,,"ATI Radeon 4800 Series" ++"0x9441","RV770_9441","RV770",,,,,,"ATI Radeon HD 4870 x2" ++"0x9442","RV770_9442","RV770",,,,,,"ATI Radeon 4800 Series" + "0x94C0","RV610_94C0","RV610",,,,,,"ATI RV610" + "0x94C1","RV610_94C1","RV610",,,,,,"ATI Radeon HD 2400 XT" + "0x94C3","RV610_94C3","RV610",,,,,,"ATI Radeon HD 2400 Pro" +@@ -348,6 +352,7 @@ + "0x9507","RV670_9507","RV670",,,,,,"ATI RV670" + "0x950F","RV670_950F","RV670",,,,,,"ATI Radeon HD3870 X2" + "0x9511","RV670_9511","RV670",,,,,,"ATI FireGL V7700" ++"0x9515","RV670_9515","RV670",,,,,,"ATI Radeon HD3850" + "0x9580","RV630_9580","RV630",,,,,,"ATI RV630" + "0x9581","RV630_9581","RV630",1,,,,,"ATI Mobility Radeon HD 2600" + "0x9583","RV630_9583","RV630",1,,,,,"ATI Mobility Radeon HD 2600 XT" +diff --git a/src/radeon.h b/src/radeon.h +index 4f77c3b..f7ae1a8 100644 +--- a/src/radeon.h ++++ b/src/radeon.h +@@ -72,9 +72,10 @@ + /* DRI support */ + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dripriv.h" + #include "dri.h" + #include "GL/glxint.h" ++#include "xf86drm.h" ++ + #ifdef DAMAGE + #include "damage.h" + #include "globals.h" +@@ -98,6 +99,36 @@ + #define MIN(a,b) ((a)>(b)?(b):(a)) + #endif + ++#if HAVE_BYTESWAP_H ++#include ++#elif defined(USE_SYS_ENDIAN_H) ++#include ++#else ++#define bswap_16(value) \ ++ ((((value) & 0xff) << 8) | ((value) >> 8)) ++ ++#define bswap_32(value) \ ++ (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \ ++ (uint32_t)bswap_16((uint16_t)((value) >> 16))) ++ ++#define bswap_64(value) \ ++ (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \ ++ << 32) | \ ++ (uint64_t)bswap_32((uint32_t)((value) >> 32))) ++#endif ++ ++#if X_BYTE_ORDER == X_BIG_ENDIAN ++#define le32_to_cpu(x) bswap_32(x) ++#define le16_to_cpu(x) bswap_16(x) ++#define cpu_to_le32(x) bswap_32(x) ++#define cpu_to_le16(x) bswap_16(x) ++#else ++#define le32_to_cpu(x) (x) ++#define le16_to_cpu(x) (x) ++#define cpu_to_le32(x) (x) ++#define cpu_to_le16(x) (x) ++#endif ++ + /* Provide substitutes for gcc's __FUNCTION__ on other compilers */ + #if !defined(__GNUC__) && !defined(__FUNCTION__) + # define __FUNCTION__ __func__ /* C99 */ +@@ -220,7 +251,12 @@ typedef struct { + #define RADEON_PLL_NO_ODD_POST_DIV (1 << 1) + #define RADEON_PLL_USE_REF_DIV (1 << 2) + #define RADEON_PLL_LEGACY (1 << 3) +-#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4) ++#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4) ++#define RADEON_PLL_PREFER_HIGH_REF_DIV (1 << 5) ++#define RADEON_PLL_PREFER_LOW_FB_DIV (1 << 6) ++#define RADEON_PLL_PREFER_HIGH_FB_DIV (1 << 7) ++#define RADEON_PLL_PREFER_LOW_POST_DIV (1 << 8) ++#define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9) + + typedef struct { + uint16_t reference_freq; +@@ -287,6 +323,7 @@ typedef enum { + CHIP_FAMILY_RV620, + CHIP_FAMILY_RV635, + CHIP_FAMILY_RS780, ++ CHIP_FAMILY_RV770, + CHIP_FAMILY_LAST + } RADEONChipFamily; + +@@ -377,156 +414,45 @@ typedef struct { + int singledac; + } RADEONCardInfo; + +-typedef struct { +- EntityInfoPtr pEnt; +- pciVideoPtr PciInfo; +- PCITAG PciTag; +- int Chipset; +- RADEONChipFamily ChipFamily; +- RADEONErrata ChipErrata; +- +- unsigned long LinearAddr; /* Frame buffer physical address */ +- unsigned long MMIOAddr; /* MMIO region physical address */ +- unsigned long BIOSAddr; /* BIOS physical address */ +- uint32_t fbLocation; +- uint32_t gartLocation; +- uint32_t mc_fb_location; +- uint32_t mc_agp_location; +- uint32_t mc_agp_location_hi; +- +- void *MMIO; /* Map of MMIO region */ +- void *FB; /* Map of frame buffer */ +- uint8_t *VBIOS; /* Video BIOS pointer */ +- +- Bool IsAtomBios; /* New BIOS used in R420 etc. */ +- int ROMHeaderStart; /* Start of the ROM Info Table */ +- int MasterDataStart; /* Offset for Master Data Table for ATOM BIOS */ +- +- uint32_t MemCntl; +- uint32_t BusCntl; +- unsigned long MMIOSize; /* MMIO region physical address */ +- unsigned long FbMapSize; /* Size of frame buffer, in bytes */ +- unsigned long FbSecureSize; /* Size of secured fb area at end of +- framebuffer */ +- +- Bool IsMobility; /* Mobile chips for laptops */ +- Bool IsIGP; /* IGP chips */ +- Bool HasSingleDAC; /* only TVDAC on chip */ +- Bool ddc_mode; /* Validate mode by matching exactly +- * the modes supported in DDC data +- */ +- Bool R300CGWorkaround; +- +- /* EDID or BIOS values for FPs */ +- int RefDivider; +- int FeedbackDivider; +- int PostDivider; +- Bool UseBiosDividers; +- /* EDID data using DDC interface */ +- Bool ddc_bios; +- Bool ddc1; +- Bool ddc2; +- +- RADEONPLLRec pll; +- +- int RamWidth; +- float sclk; /* in MHz */ +- float mclk; /* in MHz */ +- Bool IsDDR; +- int DispPriority; +- +- RADEONSavePtr SavedReg; /* Original (text) mode */ +- RADEONSavePtr ModeReg; /* Current mode */ +- Bool (*CloseScreen)(int, ScreenPtr); +- +- void (*BlockHandler)(int, pointer, pointer, pointer); +- +- Bool PaletteSavedOnVT; /* Palette saved on last VT switch */ +- +-#ifdef USE_EXA +- ExaDriverPtr exa; +- int exaSyncMarker; +- int exaMarkerSynced; +- int engineMode; +-#define EXA_ENGINEMODE_UNKNOWN 0 +-#define EXA_ENGINEMODE_2D 1 +-#define EXA_ENGINEMODE_3D 2 + #ifdef XF86DRI +- Bool accelDFS; +-#endif +-#endif +-#ifdef USE_XAA +- XAAInfoRecPtr accel; +-#endif +- Bool accelOn; +- xf86CursorInfoPtr cursor; +- Bool allowColorTiling; +- Bool tilingEnabled; /* mirror of sarea->tiling_enabled */ +-#ifdef ARGB_CURSOR +- Bool cursor_argb; +-#endif +- int cursor_fg; +- int cursor_bg; ++struct radeon_cp { ++ Bool CPRuns; /* CP is running */ ++ Bool CPInUse; /* CP has been used by X server */ ++ Bool CPStarted; /* CP has started */ ++ int CPMode; /* CP mode that server/clients use */ ++ int CPFifoSize; /* Size of the CP command FIFO */ ++ int CPusecTimeout; /* CP timeout in usecs */ ++ Bool needCacheFlush; + +-#ifdef USE_XAA +- /* +- * XAAForceTransBlit is used to change the behavior of the XAA +- * SetupForScreenToScreenCopy function, to make it DGA-friendly. +- */ +- Bool XAAForceTransBlit; +-#endif ++ /* CP accleration */ ++ drmBufPtr indirectBuffer; ++ int indirectStart; + +- int fifo_slots; /* Free slots in the FIFO (64 max) */ +- int pix24bpp; /* Depth of pixmap for 24bpp fb */ +- Bool dac6bits; /* Use 6 bit DAC? */ ++ /* Debugging info for BEGIN_RING/ADVANCE_RING pairs. */ ++ int dma_begin_count; ++ char *dma_debug_func; ++ int dma_debug_lineno; + +- /* Computed values for Radeon */ +- int pitch; +- int datatype; +- uint32_t dp_gui_master_cntl; +- uint32_t dp_gui_master_cntl_clip; +- uint32_t trans_color; ++ }; + +- /* Saved values for ScreenToScreenCopy */ +- int xdir; +- int ydir; ++typedef struct { ++ /* Nothing here yet */ ++ int dummy; ++} RADEONConfigPrivRec, *RADEONConfigPrivPtr; + +-#ifdef USE_XAA +- /* ScanlineScreenToScreenColorExpand support */ +- unsigned char *scratch_buffer[1]; +- unsigned char *scratch_save; +- int scanline_x; +- int scanline_y; +- int scanline_w; +- int scanline_h; +- int scanline_h_w; +- int scanline_words; +- int scanline_direct; +- int scanline_bpp; /* Only used for ImageWrite */ +- int scanline_fg; +- int scanline_bg; +- int scanline_hpass; +- int scanline_x1clip; +- int scanline_x2clip; ++typedef struct { ++#ifdef PER_CONTEXT_SAREA ++ drm_context_t ctx_id; ++ drm_handle_t sarea_handle; ++#else ++ /* Nothing here yet */ ++ int dummy; + #endif +- /* Saved values for DashedTwoPointLine */ +- int dashLen; +- uint32_t dashPattern; +- int dash_fg; +- int dash_bg; ++} RADEONDRIContextRec, *RADEONDRIContextPtr; + +- DGAModePtr DGAModes; +- int numDGAModes; +- Bool DGAactive; +- int DGAViewportStatus; +- DGAFunctionRec DGAFuncs; ++struct radeon_dri { ++ Bool noBackBuffer; + +- RADEONFBLayout CurrentLayout; +- uint32_t dst_pitch_offset; +-#ifdef XF86DRI +- Bool noBackBuffer; +- Bool directRenderingEnabled; +- Bool directRenderingInited; + Bool newMemoryMap; + drmVersionPtr pLibDRMVersion; + drmVersionPtr pKernelDRMVersion; +@@ -542,7 +468,6 @@ typedef struct { + drmSize registerSize; + drm_handle_t registerHandle; + +- RADEONCardType cardType; /* Current card is a PCI card */ + drmSize pciSize; + drm_handle_t pciMemHandle; + unsigned char *PCI; /* Map */ +@@ -564,15 +489,7 @@ typedef struct { + + uint32_t pciCommand; + +- Bool CPRuns; /* CP is running */ +- Bool CPInUse; /* CP has been used by X server */ +- Bool CPStarted; /* CP has started */ +- int CPMode; /* CP mode that server/clients use */ +- int CPFifoSize; /* Size of the CP command FIFO */ +- int CPusecTimeout; /* CP timeout in usecs */ +- Bool needCacheFlush; +- +- /* CP ring buffer data */ ++ /* CP ring buffer data */ + unsigned long ringStart; /* Offset into GART space */ + drm_handle_t ringHandle; /* Handle from drmAddMap */ + drmSize ringMapSize; /* Size of map */ +@@ -585,7 +502,7 @@ typedef struct { + drmSize ringReadMapSize; /* Size of map */ + drmAddress ringReadPtr; /* Map */ + +- /* CP vertex/indirect buffer data */ ++ /* CP vertex/indirect buffer data */ + unsigned long bufStart; /* Offset into GART space */ + drm_handle_t bufHandle; /* Handle from drmAddMap */ + drmSize bufMapSize; /* Size of map */ +@@ -594,7 +511,7 @@ typedef struct { + int bufNumBufs; /* Number of buffers */ + drmBufMapPtr buffers; /* Buffer map */ + +- /* CP GART Texture data */ ++ /* CP GART Texture data */ + unsigned long gartTexStart; /* Offset into GART space */ + drm_handle_t gartTexHandle; /* Handle from drmAddMap */ + drmSize gartTexMapSize; /* Size of map */ +@@ -602,11 +519,7 @@ typedef struct { + drmAddress gartTex; /* Map */ + int log2GARTTexGran; + +- /* CP accleration */ +- drmBufPtr indirectBuffer; +- int indirectStart; +- +- /* DRI screen private data */ ++ /* DRI screen private data */ + int fbX; + int fbY; + int backX; +@@ -628,43 +541,215 @@ typedef struct { + int pciGartSize; + uint32_t pciGartOffset; + void *pciGartBackup; ++ ++ int irq; ++ ++#ifdef PER_CONTEXT_SAREA ++ int perctx_sarea_size; ++#endif ++ + #ifdef USE_XAA + uint32_t frontPitchOffset; + uint32_t backPitchOffset; + uint32_t depthPitchOffset; + +- /* offscreen memory management */ ++ /* offscreen memory management */ + int backLines; + FBAreaPtr backArea; + int depthTexLines; + FBAreaPtr depthTexArea; + #endif + +- /* Saved scissor values */ +- uint32_t sc_left; +- uint32_t sc_right; +- uint32_t sc_top; +- uint32_t sc_bottom; ++}; ++#endif ++ ++struct radeon_accel_state { ++ /* common accel data */ ++ int fifo_slots; /* Free slots in the FIFO (64 max) */ ++ /* Computed values for Radeon */ ++ uint32_t dp_gui_master_cntl; ++ uint32_t dp_gui_master_cntl_clip; ++ uint32_t trans_color; ++ /* Saved values for ScreenToScreenCopy */ ++ int xdir; ++ int ydir; ++ uint32_t dst_pitch_offset; ++ ++ /* render accel */ ++ unsigned short texW[2]; ++ unsigned short texH[2]; ++ Bool XInited3D; /* X itself has the 3D context */ ++ int num_gb_pipes; ++ Bool has_tcl; ++ ++#ifdef USE_EXA ++ /* EXA */ ++ ExaDriverPtr exa; ++ int exaSyncMarker; ++ int exaMarkerSynced; ++ int engineMode; ++#define EXA_ENGINEMODE_UNKNOWN 0 ++#define EXA_ENGINEMODE_2D 1 ++#define EXA_ENGINEMODE_3D 2 ++ ++ Bool is_transform[2]; ++ PictTransform *transform[2]; ++ Bool has_mask; ++ /* Whether we are tiling horizontally and vertically */ ++ Bool need_src_tile_x; ++ Bool need_src_tile_y; ++ /* Size of tiles ... set to 65536x65536 if not tiling in that direction */ ++ Bool src_tile_width; ++ Bool src_tile_height; ++#endif ++ ++#ifdef USE_XAA ++ /* XAA */ ++ XAAInfoRecPtr accel; ++ /* ScanlineScreenToScreenColorExpand support */ ++ unsigned char *scratch_buffer[1]; ++ unsigned char *scratch_save; ++ int scanline_x; ++ int scanline_y; ++ int scanline_w; ++ int scanline_h; ++ int scanline_h_w; ++ int scanline_words; ++ int scanline_direct; ++ int scanline_bpp; /* Only used for ImageWrite */ ++ int scanline_fg; ++ int scanline_bg; ++ int scanline_hpass; ++ int scanline_x1clip; ++ int scanline_x2clip; ++ /* Saved values for DashedTwoPointLine */ ++ int dashLen; ++ uint32_t dashPattern; ++ int dash_fg; ++ int dash_bg; ++ ++ FBLinearPtr RenderTex; ++ void (*RenderCallback)(ScrnInfoPtr); ++ Time RenderTimeout; ++ /* ++ * XAAForceTransBlit is used to change the behavior of the XAA ++ * SetupForScreenToScreenCopy function, to make it DGA-friendly. ++ */ ++ Bool XAAForceTransBlit; ++#endif ++ ++}; + +- uint32_t re_top_left; +- uint32_t re_width_height; ++typedef struct { ++ EntityInfoPtr pEnt; ++ pciVideoPtr PciInfo; ++ PCITAG PciTag; ++ int Chipset; ++ RADEONChipFamily ChipFamily; ++ RADEONErrata ChipErrata; ++ ++ unsigned long LinearAddr; /* Frame buffer physical address */ ++ unsigned long MMIOAddr; /* MMIO region physical address */ ++ unsigned long BIOSAddr; /* BIOS physical address */ ++ uint32_t fbLocation; ++ uint32_t gartLocation; ++ uint32_t mc_fb_location; ++ uint32_t mc_agp_location; ++ uint32_t mc_agp_location_hi; + +- uint32_t aux_sc_cntl; ++ void *MMIO; /* Map of MMIO region */ ++ void *FB; /* Map of frame buffer */ ++ uint8_t *VBIOS; /* Video BIOS pointer */ + +- int irq; ++ Bool IsAtomBios; /* New BIOS used in R420 etc. */ ++ int ROMHeaderStart; /* Start of the ROM Info Table */ ++ int MasterDataStart; /* Offset for Master Data Table for ATOM BIOS */ + +- Bool DMAForXv; ++ uint32_t MemCntl; ++ uint32_t BusCntl; ++ unsigned long MMIOSize; /* MMIO region physical address */ ++ unsigned long FbMapSize; /* Size of frame buffer, in bytes */ ++ unsigned long FbSecureSize; /* Size of secured fb area at end of ++ framebuffer */ + +-#ifdef PER_CONTEXT_SAREA +- int perctx_sarea_size; ++ Bool IsMobility; /* Mobile chips for laptops */ ++ Bool IsIGP; /* IGP chips */ ++ Bool HasSingleDAC; /* only TVDAC on chip */ ++ Bool ddc_mode; /* Validate mode by matching exactly ++ * the modes supported in DDC data ++ */ ++ Bool R300CGWorkaround; ++ ++ /* EDID or BIOS values for FPs */ ++ int RefDivider; ++ int FeedbackDivider; ++ int PostDivider; ++ Bool UseBiosDividers; ++ /* EDID data using DDC interface */ ++ Bool ddc_bios; ++ Bool ddc1; ++ Bool ddc2; ++ ++ RADEONPLLRec pll; ++ ++ int RamWidth; ++ float sclk; /* in MHz */ ++ float mclk; /* in MHz */ ++ Bool IsDDR; ++ int DispPriority; ++ ++ RADEONSavePtr SavedReg; /* Original (text) mode */ ++ RADEONSavePtr ModeReg; /* Current mode */ ++ Bool (*CloseScreen)(int, ScreenPtr); ++ ++ void (*BlockHandler)(int, pointer, pointer, pointer); ++ ++ Bool PaletteSavedOnVT; /* Palette saved on last VT switch */ ++ ++ xf86CursorInfoPtr cursor; ++#ifdef ARGB_CURSOR ++ Bool cursor_argb; + #endif ++ int cursor_fg; ++ int cursor_bg; + +- /* Debugging info for BEGIN_RING/ADVANCE_RING pairs. */ +- int dma_begin_count; +- char *dma_debug_func; +- int dma_debug_lineno; ++ int pix24bpp; /* Depth of pixmap for 24bpp fb */ ++ Bool dac6bits; /* Use 6 bit DAC? */ ++ ++ DGAModePtr DGAModes; ++ int numDGAModes; ++ Bool DGAactive; ++ int DGAViewportStatus; ++ DGAFunctionRec DGAFuncs; ++ ++ RADEONFBLayout CurrentLayout; ++ ++#ifdef XF86DRI ++ Bool directRenderingEnabled; ++ Bool directRenderingInited; ++ RADEONCardType cardType; /* Current card is a PCI card */ ++ struct radeon_cp *cp; ++ struct radeon_dri *dri; ++#ifdef USE_EXA ++ Bool accelDFS; ++#endif ++ Bool DMAForXv; + #endif /* XF86DRI */ + ++ /* accel */ ++ Bool RenderAccel; /* Render */ ++ Bool allowColorTiling; ++ Bool tilingEnabled; /* mirror of sarea->tiling_enabled */ ++ struct radeon_accel_state *accel_state; ++ Bool accelOn; ++ Bool useEXA; ++#ifdef USE_EXA ++ XF86ModReqInfo exaReq; ++#endif ++#ifdef USE_XAA ++ XF86ModReqInfo xaaReq; ++#endif ++ + /* XVideo */ + XF86VideoAdaptorPtr adaptor; + void (*VideoTimerCallback)(ScrnInfoPtr, Time); +@@ -693,31 +778,10 @@ typedef struct { + int overlay_scaler_buffer_width; + int ecp_div; + +- /* Render */ +- Bool RenderAccel; +- unsigned short texW[2]; +- unsigned short texH[2]; +-#ifdef USE_XAA +- FBLinearPtr RenderTex; +- void (*RenderCallback)(ScrnInfoPtr); +- Time RenderTimeout; +-#endif +- + /* general */ + Bool showCache; + OptionInfoPtr Options; + +- Bool useEXA; +-#ifdef USE_EXA +- XF86ModReqInfo exaReq; +-#endif +-#ifdef USE_XAA +- XF86ModReqInfo xaaReq; +-#endif +- +- /* X itself has the 3D context */ +- Bool XInited3D; +- + DisplayModePtr currentMode, savedCurrentMode; + + /* special handlings for DELL triple-head server */ +@@ -772,22 +836,19 @@ typedef struct { + Bool r600_shadow_fb; + void *fb_shadow; + +- int num_gb_pipes; +- Bool has_tcl; + } RADEONInfoRec, *RADEONInfoPtr; + + #define RADEONWaitForFifo(pScrn, entries) \ + do { \ +- if (info->fifo_slots < entries) \ ++ if (info->accel_state->fifo_slots < entries) \ + RADEONWaitForFifoFunction(pScrn, entries); \ +- info->fifo_slots -= entries; \ ++ info->accel_state->fifo_slots -= entries; \ + } while (0) + + /* legacy_crtc.c */ + extern void legacy_crtc_dpms(xf86CrtcPtr crtc, int mode); + extern void legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode, int x, int y); +-extern void RADEONInitDispBandwidth(ScrnInfoPtr pScrn); + extern void RADEONRestoreCommonRegisters(ScrnInfoPtr pScrn, + RADEONSavePtr restore); + extern void RADEONRestoreCrtcRegisters(ScrnInfoPtr pScrn, +@@ -872,6 +933,7 @@ extern Bool RADEONGetTMDSInfoFromBIOS(xf86OutputPtr output); + extern Bool RADEONGetTVInfoFromBIOS(xf86OutputPtr output); + extern Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output); + extern Bool RADEONPostCardFromBIOSTables(ScrnInfoPtr pScrn); ++extern Bool radeon_card_posted(ScrnInfoPtr pScrn); + + /* radeon_commonfuncs.c */ + #ifdef XF86DRI +@@ -894,6 +956,7 @@ extern DisplayModePtr RADEONCrtcFindClosestMode(xf86CrtcPtr crtc, + DisplayModePtr pMode); + extern void RADEONUnblank(ScrnInfoPtr pScrn); + extern Bool RADEONSetTiling(ScrnInfoPtr pScrn); ++extern void RADEONInitDispBandwidth(ScrnInfoPtr pScrn); + + /* radeon_cursor.c */ + extern Bool RADEONCursorInit(ScreenPtr pScreen); +@@ -983,6 +1046,8 @@ extern void RADEONPrintPortMap(ScrnInfoPtr pScrn); + extern void RADEONSetOutputType(ScrnInfoPtr pScrn, + RADEONOutputPrivatePtr radeon_output); + extern Bool RADEONSetupConnectors(ScrnInfoPtr pScrn); ++extern Bool RADEONI2CDoLock(xf86OutputPtr output, Bool lock_state); ++ + + /* radeon_tv.c */ + extern void RADEONSaveTVRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save); +@@ -1003,6 +1068,16 @@ extern void RADEONUpdateHVPosition(xf86OutputPtr output, DisplayModePtr mode); + extern void RADEONInitVideo(ScreenPtr pScreen); + extern void RADEONResetVideo(ScrnInfoPtr pScrn); + ++/* radeon_legacy_memory.c */ ++extern uint32_t ++radeon_legacy_allocate_memory(ScrnInfoPtr pScrn, ++ void **mem_struct, ++ int size, ++ int align); ++extern void ++radeon_legacy_free_memory(ScrnInfoPtr pScrn, ++ void *mem_struct); ++ + #ifdef XF86DRI + # ifdef USE_XAA + /* radeon_accelfuncs.c */ +@@ -1011,72 +1086,58 @@ extern void RADEONAccelInitCP(ScreenPtr pScreen, XAAInfoRecPtr a); + + #define RADEONCP_START(pScrn, info) \ + do { \ +- int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_START); \ ++ int _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_START); \ + if (_ret) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "%s: CP start %d\n", __FUNCTION__, _ret); \ + } \ +- info->CPStarted = TRUE; \ ++ info->cp->CPStarted = TRUE; \ + } while (0) + + #define RADEONCP_RELEASE(pScrn, info) \ + do { \ +- if (info->CPInUse) { \ ++ if (info->cp->CPInUse) { \ + RADEON_PURGE_CACHE(); \ + RADEON_WAIT_UNTIL_IDLE(); \ + RADEONCPReleaseIndirect(pScrn); \ +- info->CPInUse = FALSE; \ ++ info->cp->CPInUse = FALSE; \ + } \ + } while (0) + + #define RADEONCP_STOP(pScrn, info) \ + do { \ + int _ret; \ +- if (info->CPStarted) { \ ++ if (info->cp->CPStarted) { \ + _ret = RADEONCPStop(pScrn, info); \ + if (_ret) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "%s: CP stop %d\n", __FUNCTION__, _ret); \ + } \ +- info->CPStarted = FALSE; \ ++ info->cp->CPStarted = FALSE; \ + } \ + RADEONEngineRestore(pScrn); \ +- info->CPRuns = FALSE; \ ++ info->cp->CPRuns = FALSE; \ + } while (0) + + #define RADEONCP_RESET(pScrn, info) \ + do { \ +- if (RADEONCP_USE_RING_BUFFER(info->CPMode)) { \ +- int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESET); \ ++ int _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_RESET); \ + if (_ret) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "%s: CP reset %d\n", __FUNCTION__, _ret); \ + } \ +- } \ + } while (0) + + #define RADEONCP_REFRESH(pScrn, info) \ + do { \ +- if (!info->CPInUse) { \ +- if (info->needCacheFlush) { \ ++ if (!info->cp->CPInUse) { \ ++ if (info->cp->needCacheFlush) { \ + RADEON_PURGE_CACHE(); \ + RADEON_PURGE_ZCACHE(); \ +- info->needCacheFlush = FALSE; \ ++ info->cp->needCacheFlush = FALSE; \ + } \ + RADEON_WAIT_UNTIL_IDLE(); \ +- if (info->ChipFamily <= CHIP_FAMILY_RV280) { \ +- BEGIN_RING(6); \ +- OUT_RING_REG(RADEON_RE_TOP_LEFT, info->re_top_left); \ +- OUT_RING_REG(RADEON_RE_WIDTH_HEIGHT, info->re_width_height); \ +- OUT_RING_REG(RADEON_AUX_SC_CNTL, info->aux_sc_cntl); \ +- ADVANCE_RING(); \ +- } else { \ +- BEGIN_RING(4); \ +- OUT_RING_REG(R300_SC_SCISSOR0, info->re_top_left); \ +- OUT_RING_REG(R300_SC_SCISSOR1, info->re_width_height); \ +- ADVANCE_RING(); \ +- } \ +- info->CPInUse = TRUE; \ ++ info->cp->CPInUse = TRUE; \ + } \ + } while (0) + +@@ -1100,33 +1161,33 @@ do { \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "BEGIN_RING(%d) in %s\n", (unsigned int)n, __FUNCTION__);\ + } \ +- if (++info->dma_begin_count != 1) { \ ++ if (++info->cp->dma_begin_count != 1) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "BEGIN_RING without end at %s:%d\n", \ +- info->dma_debug_func, info->dma_debug_lineno); \ +- info->dma_begin_count = 1; \ ++ info->cp->dma_debug_func, info->cp->dma_debug_lineno); \ ++ info->cp->dma_begin_count = 1; \ + } \ +- info->dma_debug_func = __FILE__; \ +- info->dma_debug_lineno = __LINE__; \ +- if (!info->indirectBuffer) { \ +- info->indirectBuffer = RADEONCPGetBuffer(pScrn); \ +- info->indirectStart = 0; \ +- } else if (info->indirectBuffer->used + (n) * (int)sizeof(uint32_t) > \ +- info->indirectBuffer->total) { \ ++ info->cp->dma_debug_func = __FILE__; \ ++ info->cp->dma_debug_lineno = __LINE__; \ ++ if (!info->cp->indirectBuffer) { \ ++ info->cp->indirectBuffer = RADEONCPGetBuffer(pScrn); \ ++ info->cp->indirectStart = 0; \ ++ } else if (info->cp->indirectBuffer->used + (n) * (int)sizeof(uint32_t) > \ ++ info->cp->indirectBuffer->total) { \ + RADEONCPFlushIndirect(pScrn, 1); \ + } \ + __expected = n; \ +- __head = (pointer)((char *)info->indirectBuffer->address + \ +- info->indirectBuffer->used); \ ++ __head = (pointer)((char *)info->cp->indirectBuffer->address + \ ++ info->cp->indirectBuffer->used); \ + __count = 0; \ + } while (0) + + #define ADVANCE_RING() do { \ +- if (info->dma_begin_count-- != 1) { \ ++ if (info->cp->dma_begin_count-- != 1) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "ADVANCE_RING without begin at %s:%d\n", \ + __FILE__, __LINE__); \ +- info->dma_begin_count = 0; \ ++ info->cp->dma_begin_count = 0; \ + } \ + if (__count != __expected) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ +@@ -1136,11 +1197,11 @@ do { \ + if (RADEON_VERBOSE) { \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "ADVANCE_RING() start: %d used: %d count: %d\n", \ +- info->indirectStart, \ +- info->indirectBuffer->used, \ ++ info->cp->indirectStart, \ ++ info->cp->indirectBuffer->used, \ + __count * (int)sizeof(uint32_t)); \ + } \ +- info->indirectBuffer->used += __count * (int)sizeof(uint32_t); \ ++ info->cp->indirectBuffer->used += __count * (int)sizeof(uint32_t); \ + } while (0) + + #define OUT_RING(x) do { \ +@@ -1162,7 +1223,7 @@ do { \ + if (RADEON_VERBOSE) \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "FLUSH_RING in %s\n", __FUNCTION__); \ +- if (info->indirectBuffer) { \ ++ if (info->cp->indirectBuffer) { \ + RADEONCPFlushIndirect(pScrn, 0); \ + } \ + } while (0) +@@ -1236,19 +1297,19 @@ static __inline__ void RADEON_MARK_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn) + #endif + #ifdef USE_XAA + if (!info->useEXA) +- SET_SYNC_FLAG(info->accel); ++ SET_SYNC_FLAG(info->accel_state->accel); + #endif + } + + static __inline__ void RADEON_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn) + { + #ifdef USE_EXA +- if (info->useEXA) ++ if (info->useEXA && pScrn->pScreen) + exaWaitSync(pScrn->pScreen); + #endif + #ifdef USE_XAA +- if (!info->useEXA && info->accel) +- info->accel->Sync(pScrn); ++ if (!info->useEXA && info->accel_state->accel) ++ info->accel_state->accel->Sync(pScrn); + #endif + } + +diff --git a/src/radeon_accel.c b/src/radeon_accel.c +index 65ad33d..a6e332d 100644 +--- a/src/radeon_accel.c ++++ b/src/radeon_accel.c +@@ -83,9 +83,7 @@ + #include "radeon_version.h" + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_common.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #endif + + /* Line support */ +@@ -130,9 +128,9 @@ void RADEONWaitForFifoFunction(ScrnInfoPtr pScrn, int entries) + + for (;;) { + for (i = 0; i < RADEON_TIMEOUT; i++) { +- info->fifo_slots = ++ info->accel_state->fifo_slots = + INREG(RADEON_RBBM_STATUS) & RADEON_RBBM_FIFOCNT_MASK; +- if (info->fifo_slots >= entries) return; ++ if (info->accel_state->fifo_slots >= entries) return; + } + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "FIFO timed out: %u entries, stat=0x%08x\n", +@@ -324,8 +322,8 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn) + * in the wrong place (happened). + */ + RADEONWaitForFifo(pScrn, 2); +- OUTREG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset); +- OUTREG(RADEON_SRC_PITCH_OFFSET, info->dst_pitch_offset); ++ OUTREG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset); ++ OUTREG(RADEON_SRC_PITCH_OFFSET, info->accel_state->dst_pitch_offset); + + RADEONWaitForFifo(pScrn, 1); + #if X_BYTE_ORDER == X_BIG_ENDIAN +@@ -343,7 +341,7 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn) + OUTREG(RADEON_DEFAULT_SC_BOTTOM_RIGHT, (RADEON_DEFAULT_SC_RIGHT_MAX + | RADEON_DEFAULT_SC_BOTTOM_MAX)); + RADEONWaitForFifo(pScrn, 1); +- OUTREG(RADEON_DP_GUI_MASTER_CNTL, (info->dp_gui_master_cntl ++ OUTREG(RADEON_DP_GUI_MASTER_CNTL, (info->accel_state->dp_gui_master_cntl + | RADEON_GMC_BRUSH_SOLID_COLOR + | RADEON_GMC_SRC_DATATYPE_COLOR)); + +@@ -356,7 +354,7 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn) + + RADEONWaitForIdleMMIO(pScrn); + +- info->XInited3D = FALSE; ++ info->accel_state->XInited3D = FALSE; + } + + /* Initialize the acceleration hardware */ +@@ -364,6 +362,7 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; ++ int datatype = 0; + + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "EngineInit (%d/%d)\n", +@@ -372,21 +371,21 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled && (IS_R300_3D || IS_R500_3D)) { +- drmRadeonGetParam np; ++ drm_radeon_getparam_t np; + int num_pipes; + + memset(&np, 0, sizeof(np)); + np.param = RADEON_PARAM_NUM_GB_PIPES; + np.value = &num_pipes; + +- if (drmCommandWriteRead(info->drmFD, DRM_RADEON_GETPARAM, &np, ++ if (drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_GETPARAM, &np, + sizeof(np)) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Failed to determine num pipes from DRM, falling back to " + "manual look-up!\n"); +- info->num_gb_pipes = 0; ++ info->accel_state->num_gb_pipes = 0; + } else { +- info->num_gb_pipes = num_pipes; ++ info->accel_state->num_gb_pipes = num_pipes; + } + } + #endif +@@ -399,34 +398,34 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + (info->ChipFamily == CHIP_FAMILY_RS400) || + (info->ChipFamily == CHIP_FAMILY_RS480) || + IS_R500_3D) { +- if (info->num_gb_pipes == 0) { ++ if (info->accel_state->num_gb_pipes == 0) { + uint32_t gb_pipe_sel = INREG(R400_GB_PIPE_SELECT); + +- info->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1; ++ info->accel_state->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1; + if (IS_R500_3D) + OUTPLL(pScrn, R500_DYN_SCLK_PWMEM_PIPE, (1 | ((gb_pipe_sel >> 8) & 0xf) << 4)); + } + } else { +- if (info->num_gb_pipes == 0) { ++ if (info->accel_state->num_gb_pipes == 0) { + if ((info->ChipFamily == CHIP_FAMILY_R300) || + (info->ChipFamily == CHIP_FAMILY_R350)) { + /* R3xx chips */ +- info->num_gb_pipes = 2; ++ info->accel_state->num_gb_pipes = 2; + } else { + /* RV3xx chips */ +- info->num_gb_pipes = 1; ++ info->accel_state->num_gb_pipes = 1; + } + } + } + + if (IS_R300_3D || IS_R500_3D) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "num pipes is %d\n", info->num_gb_pipes); ++ "num quad-pipes is %d\n", info->accel_state->num_gb_pipes); + + if (IS_R300_3D || IS_R500_3D) { + uint32_t gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16); + +- switch(info->num_gb_pipes) { ++ switch(info->accel_state->num_gb_pipes) { + case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break; + case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break; + case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break; +@@ -446,11 +445,11 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + RADEONEngineReset(pScrn); + + switch (info->CurrentLayout.pixel_code) { +- case 8: info->datatype = 2; break; +- case 15: info->datatype = 3; break; +- case 16: info->datatype = 4; break; +- case 24: info->datatype = 5; break; +- case 32: info->datatype = 6; break; ++ case 8: datatype = 2; break; ++ case 15: datatype = 3; break; ++ case 16: datatype = 4; break; ++ case 24: datatype = 5; break; ++ case 32: datatype = 6; break; + default: + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Unknown depth/bpp = %d/%d (code = %d)\n", +@@ -458,34 +457,12 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + info->CurrentLayout.bitsPerPixel, + info->CurrentLayout.pixel_code); + } +- info->pitch = ((info->CurrentLayout.displayWidth / 8) * +- (info->CurrentLayout.pixel_bytes == 3 ? 3 : 1)); + +- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, +- "Pitch for acceleration = %d\n", info->pitch); +- +- info->dp_gui_master_cntl = +- ((info->datatype << RADEON_GMC_DST_DATATYPE_SHIFT) ++ info->accel_state->dp_gui_master_cntl = ++ ((datatype << RADEON_GMC_DST_DATATYPE_SHIFT) + | RADEON_GMC_CLR_CMP_CNTL_DIS + | RADEON_GMC_DST_PITCH_OFFSET_CNTL); + +-#ifdef XF86DRI +- info->sc_left = 0x00000000; +- info->sc_right = RADEON_DEFAULT_SC_RIGHT_MAX; +- info->sc_top = 0x00000000; +- info->sc_bottom = RADEON_DEFAULT_SC_BOTTOM_MAX; +- +- info->re_top_left = 0x00000000; +- if (info->ChipFamily <= CHIP_FAMILY_RV280) +- info->re_width_height = ((0x7ff << RADEON_RE_WIDTH_SHIFT) | +- (0x7ff << RADEON_RE_HEIGHT_SHIFT)); +- else +- info->re_width_height = ((8191 << R300_SCISSOR_X_SHIFT) | +- (8191 << R300_SCISSOR_Y_SHIFT)); +- +- info->aux_sc_cntl = 0x00000000; +-#endif +- + RADEONEngineRestore(pScrn); + } + +@@ -534,14 +511,14 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + /* Stop the CP */ + int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info) + { +- drmRadeonCPStop stop; ++ drm_radeon_cp_stop_t stop; + int ret, i; + + stop.flush = 1; + stop.idle = 1; + +- ret = drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, &stop, +- sizeof(drmRadeonCPStop)); ++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, &stop, ++ sizeof(drm_radeon_cp_stop_t)); + + if (ret == 0) { + return 0; +@@ -553,8 +530,8 @@ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info) + + i = 0; + do { +- ret = drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, &stop, +- sizeof(drmRadeonCPStop)); ++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, &stop, ++ sizeof(drm_radeon_cp_stop_t)); + } while (ret && errno == EBUSY && i++ < RADEON_IDLE_RETRY); + + if (ret == 0) { +@@ -565,8 +542,8 @@ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info) + + stop.idle = 0; + +- if (drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, +- &stop, sizeof(drmRadeonCPStop))) { ++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, ++ &stop, sizeof(drm_radeon_cp_stop_t))) { + return -errno; + } else { + return 0; +@@ -608,7 +585,7 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn) + + while (1) { + do { +- ret = drmDMA(info->drmFD, &dma); ++ ret = drmDMA(info->dri->drmFD, &dma); + if (ret && ret != -EBUSY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP GetBuffer %d\n", __FUNCTION__, ret); +@@ -616,7 +593,7 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn) + } while ((ret == -EBUSY) && (i++ < RADEON_TIMEOUT)); + + if (ret == 0) { +- buf = &info->buffers->list[indx]; ++ buf = &info->dri->buffers->list[indx]; + buf->used = 0; + if (RADEON_VERBOSE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +@@ -641,9 +618,9 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn) + void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- drmBufPtr buffer = info->indirectBuffer; +- int start = info->indirectStart; +- drmRadeonIndirect indirect; ++ drmBufPtr buffer = info->cp->indirectBuffer; ++ int start = info->cp->indirectStart; ++ drm_radeon_indirect_t indirect; + + if (!buffer) return; + if (start == buffer->used && !discard) return; +@@ -658,18 +635,18 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard) + indirect.end = buffer->used; + indirect.discard = discard; + +- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT, +- &indirect, sizeof(drmRadeonIndirect)); ++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT, ++ &indirect, sizeof(drm_radeon_indirect_t)); + + if (discard) { +- info->indirectBuffer = RADEONCPGetBuffer(pScrn); +- info->indirectStart = 0; ++ info->cp->indirectBuffer = RADEONCPGetBuffer(pScrn); ++ info->cp->indirectStart = 0; + } else { + /* Start on a double word boundary */ +- info->indirectStart = buffer->used = (buffer->used + 7) & ~7; ++ info->cp->indirectStart = buffer->used = (buffer->used + 7) & ~7; + if (RADEON_VERBOSE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, " Starting at %d\n", +- info->indirectStart); ++ info->cp->indirectStart); + } + } + } +@@ -678,12 +655,12 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard) + void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- drmBufPtr buffer = info->indirectBuffer; +- int start = info->indirectStart; +- drmRadeonIndirect indirect; ++ drmBufPtr buffer = info->cp->indirectBuffer; ++ int start = info->cp->indirectStart; ++ drm_radeon_indirect_t indirect; + +- info->indirectBuffer = NULL; +- info->indirectStart = 0; ++ info->cp->indirectBuffer = NULL; ++ info->cp->indirectStart = 0; + + if (!buffer) return; + +@@ -697,8 +674,8 @@ void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn) + indirect.end = buffer->used; + indirect.discard = 1; + +- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT, +- &indirect, sizeof(drmRadeonIndirect)); ++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT, ++ &indirect, sizeof(drm_radeon_indirect_t)); + } + + /** \brief Calculate HostDataBlit parameters from pointer and pitch +@@ -964,7 +941,7 @@ Bool RADEONAccelInit(ScreenPtr pScreen) + if (!info->useEXA) { + XAAInfoRecPtr a; + +- if (!(a = info->accel = XAACreateInfoRec())) { ++ if (!(a = info->accel_state->accel = XAACreateInfoRec())) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "XAACreateInfoRec Error\n"); + return FALSE; + } +@@ -993,16 +970,16 @@ void RADEONInit3DEngine(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled) { +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + + pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen); +- pSAREAPriv->ctxOwner = DRIGetContext(pScrn->pScreen); ++ pSAREAPriv->ctx_owner = DRIGetContext(pScrn->pScreen); + RADEONInit3DEngineCP(pScrn); + } else + #endif + RADEONInit3DEngineMMIO(pScrn); + +- info->XInited3D = TRUE; ++ info->accel_state->XInited3D = TRUE; + } + + #ifdef USE_XAA +@@ -1013,7 +990,7 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + int cpp = info->CurrentLayout.pixel_bytes; +- int depthCpp = (info->depthBits - 8) / 4; ++ int depthCpp = (info->dri->depthBits - 8) / 4; + int width_bytes = pScrn->displayWidth * cpp; + int bufferSize; + int depthSize; +@@ -1023,9 +1000,9 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + BoxRec MemBox; + FBAreaPtr fbarea; + +- info->frontOffset = 0; +- info->frontPitch = pScrn->displayWidth; +- info->backPitch = pScrn->displayWidth; ++ info->dri->frontOffset = 0; ++ info->dri->frontPitch = pScrn->displayWidth; ++ info->dri->backPitch = pScrn->displayWidth; + + /* make sure we use 16 line alignment for tiling (8 might be enough). + * Might need that for non-XF86DRI too? +@@ -1042,30 +1019,18 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + * which is always the case if color tiling is used due to color pitch + * but not necessarily otherwise, and its height a multiple of 16 lines. + */ +- info->depthPitch = (pScrn->displayWidth + 31) & ~31; +- depthSize = ((((pScrn->virtualY + 15) & ~15) * info->depthPitch ++ info->dri->depthPitch = (pScrn->displayWidth + 31) & ~31; ++ depthSize = ((((pScrn->virtualY + 15) & ~15) * info->dri->depthPitch + * depthCpp + RADEON_BUFFER_ALIGN) & ~RADEON_BUFFER_ALIGN); + +- switch (info->CPMode) { +- case RADEON_DEFAULT_CP_PIO_MODE: +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in PIO mode\n"); +- break; +- case RADEON_DEFAULT_CP_BM_MODE: +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in BM mode\n"); +- break; +- default: +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in UNKNOWN mode\n"); +- break; +- } +- + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB GART aperture\n", info->gartSize); ++ "Using %d MB GART aperture\n", info->dri->gartSize); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB for the ring buffer\n", info->ringSize); ++ "Using %d MB for the ring buffer\n", info->dri->ringSize); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB for vertex/indirect buffers\n", info->bufSize); ++ "Using %d MB for vertex/indirect buffers\n", info->dri->bufSize); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB for GART textures\n", info->gartTexSize); ++ "Using %d MB for GART textures\n", info->dri->gartTexSize); + + /* Try for front, back, depth, and three framebuffers worth of + * pixmap cache. Should be enough for a fullscreen background +@@ -1075,35 +1040,35 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + * otherwise probably), and never reserve more than 3 offscreen buffers as it's + * probably useless for XAA. + */ +- if (info->textureSize >= 0) { ++ if (info->dri->textureSize >= 0) { + texsizerequest = ((int)info->FbMapSize - 2 * bufferSize - depthSize + - 2 * width_bytes - 16384 - info->FbSecureSize) + /* first divide, then multiply or we'll get an overflow (been there...) */ +- / 100 * info->textureSize; ++ / 100 * info->dri->textureSize; + } + else { + texsizerequest = (int)info->FbMapSize / 2; + } +- info->textureSize = info->FbMapSize - info->FbSecureSize - 5 * bufferSize - depthSize; ++ info->dri->textureSize = info->FbMapSize - info->FbSecureSize - 5 * bufferSize - depthSize; + + /* If that gives us less than the requested memory, let's + * be greedy and grab some more. Sorry, I care more about 3D + * performance than playing nicely, and you'll get around a full + * framebuffer's worth of pixmap cache anyway. + */ +- if (info->textureSize < texsizerequest) { +- info->textureSize = info->FbMapSize - 4 * bufferSize - depthSize; ++ if (info->dri->textureSize < texsizerequest) { ++ info->dri->textureSize = info->FbMapSize - 4 * bufferSize - depthSize; + } +- if (info->textureSize < texsizerequest) { +- info->textureSize = info->FbMapSize - 3 * bufferSize - depthSize; ++ if (info->dri->textureSize < texsizerequest) { ++ info->dri->textureSize = info->FbMapSize - 3 * bufferSize - depthSize; + } + + /* If there's still no space for textures, try without pixmap cache, but + * never use the reserved space, the space hw cursor and PCIGART table might + * use. + */ +- if (info->textureSize < 0) { +- info->textureSize = info->FbMapSize - 2 * bufferSize - depthSize ++ if (info->dri->textureSize < 0) { ++ info->dri->textureSize = info->FbMapSize - 2 * bufferSize - depthSize + - 2 * width_bytes - 16384 - info->FbSecureSize; + } + +@@ -1112,14 +1077,14 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + */ + /* FIXME: what's this good for? condition is pretty much impossible to meet */ + if ((int)info->FbMapSize - 8192*width_bytes - bufferSize - depthSize +- > info->textureSize) { +- info->textureSize = ++ > info->dri->textureSize) { ++ info->dri->textureSize = + info->FbMapSize - 8192*width_bytes - bufferSize - depthSize; + } + + /* If backbuffer is disabled, don't allocate memory for it */ +- if (info->noBackBuffer) { +- info->textureSize += bufferSize; ++ if (info->dri->noBackBuffer) { ++ info->dri->textureSize += bufferSize; + } + + /* RADEON_BUFFER_ALIGN is not sufficient for backbuffer! +@@ -1131,61 +1096,61 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + can't be used (?) due to that log_tex_granularity thing??? + Could use different copyscreentoscreen function for the pageflip copies + (which would use different src and dst offsets) to avoid this. */ +- if (info->allowColorTiling && !info->noBackBuffer) { +- info->textureSize = info->FbMapSize - ((info->FbMapSize - info->textureSize + ++ if (info->allowColorTiling && !info->dri->noBackBuffer) { ++ info->dri->textureSize = info->FbMapSize - ((info->FbMapSize - info->dri->textureSize + + width_bytes * 16 - 1) / (width_bytes * 16)) * (width_bytes * 16); + } +- if (info->textureSize > 0) { +- l = RADEONMinBits((info->textureSize-1) / RADEON_NR_TEX_REGIONS); ++ if (info->dri->textureSize > 0) { ++ l = RADEONMinBits((info->dri->textureSize-1) / RADEON_NR_TEX_REGIONS); + if (l < RADEON_LOG_TEX_GRANULARITY) + l = RADEON_LOG_TEX_GRANULARITY; + /* Round the texture size up to the nearest whole number of + * texture regions. Again, be greedy about this, don't + * round down. + */ +- info->log2TexGran = l; +- info->textureSize = (info->textureSize >> l) << l; ++ info->dri->log2TexGran = l; ++ info->dri->textureSize = (info->dri->textureSize >> l) << l; + } else { +- info->textureSize = 0; ++ info->dri->textureSize = 0; + } + + /* Set a minimum usable local texture heap size. This will fit + * two 256x256x32bpp textures. + */ +- if (info->textureSize < 512 * 1024) { +- info->textureOffset = 0; +- info->textureSize = 0; ++ if (info->dri->textureSize < 512 * 1024) { ++ info->dri->textureOffset = 0; ++ info->dri->textureSize = 0; + } + +- if (info->allowColorTiling && !info->noBackBuffer) { +- info->textureOffset = ((info->FbMapSize - info->textureSize) / +- (width_bytes * 16)) * (width_bytes * 16); ++ if (info->allowColorTiling && !info->dri->noBackBuffer) { ++ info->dri->textureOffset = ((info->FbMapSize - info->dri->textureSize) / ++ (width_bytes * 16)) * (width_bytes * 16); + } + else { + /* Reserve space for textures */ +- info->textureOffset = ((info->FbMapSize - info->textureSize + +- RADEON_BUFFER_ALIGN) & +- ~(uint32_t)RADEON_BUFFER_ALIGN); ++ info->dri->textureOffset = ((info->FbMapSize - info->dri->textureSize + ++ RADEON_BUFFER_ALIGN) & ++ ~(uint32_t)RADEON_BUFFER_ALIGN); + } + + /* Reserve space for the shared depth + * buffer. + */ +- info->depthOffset = ((info->textureOffset - depthSize + +- RADEON_BUFFER_ALIGN) & +- ~(uint32_t)RADEON_BUFFER_ALIGN); ++ info->dri->depthOffset = ((info->dri->textureOffset - depthSize + ++ RADEON_BUFFER_ALIGN) & ++ ~(uint32_t)RADEON_BUFFER_ALIGN); + + /* Reserve space for the shared back buffer */ +- if (info->noBackBuffer) { +- info->backOffset = info->depthOffset; ++ if (info->dri->noBackBuffer) { ++ info->dri->backOffset = info->dri->depthOffset; + } else { +- info->backOffset = ((info->depthOffset - bufferSize + +- RADEON_BUFFER_ALIGN) & +- ~(uint32_t)RADEON_BUFFER_ALIGN); ++ info->dri->backOffset = ((info->dri->depthOffset - bufferSize + ++ RADEON_BUFFER_ALIGN) & ++ ~(uint32_t)RADEON_BUFFER_ALIGN); + } + +- info->backY = info->backOffset / width_bytes; +- info->backX = (info->backOffset - (info->backY * width_bytes)) / cpp; ++ info->dri->backY = info->dri->backOffset / width_bytes; ++ info->dri->backX = (info->dri->backOffset - (info->dri->backY * width_bytes)) / cpp; + + scanlines = (info->FbMapSize-info->FbSecureSize) / width_bytes; + if (scanlines > 8191) +@@ -1236,12 +1201,12 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + /* Lines in offscreen area needed for depth buffer and + * textures + */ +- info->depthTexLines = (scanlines +- - info->depthOffset / width_bytes); +- info->backLines = (scanlines +- - info->backOffset / width_bytes +- - info->depthTexLines); +- info->backArea = NULL; ++ info->dri->depthTexLines = (scanlines ++ - info->dri->depthOffset / width_bytes); ++ info->dri->backLines = (scanlines ++ - info->dri->backOffset / width_bytes ++ - info->dri->depthTexLines); ++ info->dri->backArea = NULL; + } else { + xf86DrvMsg(scrnIndex, X_ERROR, + "Unable to determine largest offscreen area " +@@ -1252,30 +1217,30 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + + xf86DrvMsg(scrnIndex, X_INFO, + "Will use front buffer at offset 0x%x\n", +- info->frontOffset); ++ info->dri->frontOffset); + + xf86DrvMsg(scrnIndex, X_INFO, + "Will use back buffer at offset 0x%x\n", +- info->backOffset); ++ info->dri->backOffset); + xf86DrvMsg(scrnIndex, X_INFO, + "Will use depth buffer at offset 0x%x\n", +- info->depthOffset); ++ info->dri->depthOffset); + if (info->cardType==CARD_PCIE) + xf86DrvMsg(scrnIndex, X_INFO, + "Will use %d kb for PCI GART table at offset 0x%x\n", +- info->pciGartSize/1024, (unsigned)info->pciGartOffset); ++ info->dri->pciGartSize/1024, (unsigned)info->dri->pciGartOffset); + xf86DrvMsg(scrnIndex, X_INFO, + "Will use %d kb for textures at offset 0x%x\n", +- info->textureSize/1024, info->textureOffset); ++ info->dri->textureSize/1024, info->dri->textureOffset); + +- info->frontPitchOffset = (((info->frontPitch * cpp / 64) << 22) | +- ((info->frontOffset + info->fbLocation) >> 10)); ++ info->dri->frontPitchOffset = (((info->dri->frontPitch * cpp / 64) << 22) | ++ ((info->dri->frontOffset + info->fbLocation) >> 10)); + +- info->backPitchOffset = (((info->backPitch * cpp / 64) << 22) | +- ((info->backOffset + info->fbLocation) >> 10)); ++ info->dri->backPitchOffset = (((info->dri->backPitch * cpp / 64) << 22) | ++ ((info->dri->backOffset + info->fbLocation) >> 10)); + +- info->depthPitchOffset = (((info->depthPitch * depthCpp / 64) << 22) | +- ((info->depthOffset + info->fbLocation) >> 10)); ++ info->dri->depthPitchOffset = (((info->dri->depthPitch * depthCpp / 64) << 22) | ++ ((info->dri->depthOffset + info->fbLocation) >> 10)); + return TRUE; + } + #endif /* XF86DRI */ +diff --git a/src/radeon_accelfuncs.c b/src/radeon_accelfuncs.c +index 56793cd..45eb6d5 100644 +--- a/src/radeon_accelfuncs.c ++++ b/src/radeon_accelfuncs.c +@@ -137,14 +137,14 @@ FUNC_NAME(RADEONSetupForSolidFill)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_SOLID_COLOR +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].pattern); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_SOLID_COLOR ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].pattern); + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, color); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT +@@ -172,7 +172,7 @@ FUNC_NAME(RADEONSubsequentSolidFillRect)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); + OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (w << 16) | h); +@@ -191,10 +191,10 @@ FUNC_NAME(RADEONSetupForSolidLine)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_SOLID_COLOR +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].pattern); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_SOLID_COLOR ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].pattern); + + if (info->ChipFamily >= CHIP_FAMILY_RV200) { + BEGIN_ACCEL(1); +@@ -205,7 +205,7 @@ FUNC_NAME(RADEONSetupForSolidLine)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, color); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + +@@ -236,7 +236,7 @@ FUNC_NAME(RADEONSubsequentSolidHorVertLine)(ScrnInfoPtr pScrn, + + OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT + | RADEON_DST_Y_TOP_TO_BOTTOM)); +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); + OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (w << 16) | h); +@@ -269,7 +269,7 @@ FUNC_NAME(RADEONSubsequentSolidTwoPointLine)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_LINE_START, (ya << 16) | xa); + OUT_ACCEL_REG(RADEON_DST_LINE_END, (yb << 16) | xb); +@@ -298,8 +298,8 @@ FUNC_NAME(RADEONSetupForDashedLine)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for determining whether or not to draw last pixel */ +- info->dashLen = length; +- info->dashPattern = pat; ++ info->accel_state->dashLen = length; ++ info->accel_state->dashPattern = pat; + + #if X_BYTE_ORDER == X_BIG_ENDIAN + # define PAT_SHIFT(pat, shift) (pat >> shift) +@@ -315,18 +315,18 @@ FUNC_NAME(RADEONSetupForDashedLine)(ScrnInfoPtr pScrn, + } + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | (bg == -1 +- ? RADEON_GMC_BRUSH_32x1_MONO_FG_LA +- : RADEON_GMC_BRUSH_32x1_MONO_FG_BG) +- | RADEON_ROP[rop].pattern +- | RADEON_GMC_BYTE_LSB_TO_MSB); +- info->dash_fg = fg; +- info->dash_bg = bg; ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | (bg == -1 ++ ? RADEON_GMC_BRUSH_32x1_MONO_FG_LA ++ : RADEON_GMC_BRUSH_32x1_MONO_FG_BG) ++ | RADEON_ROP[rop].pattern ++ | RADEON_GMC_BYTE_LSB_TO_MSB); ++ info->accel_state->dash_fg = fg; ++ info->accel_state->dash_bg = bg; + + BEGIN_ACCEL((bg == -1) ? 4 : 5); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg); + if (bg != -1) +@@ -348,7 +348,7 @@ FUNC_NAME(RADEONDashedLastPel)(ScrnInfoPtr pScrn, + int fg) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- uint32_t dp_gui_master_cntl = info->dp_gui_master_cntl_clip; ++ uint32_t dp_gui_master_cntl = info->accel_state->dp_gui_master_cntl_clip; + ACCEL_PREAMBLE(); + + dp_gui_master_cntl &= ~RADEON_GMC_BRUSH_DATATYPE_MASK; +@@ -362,15 +362,15 @@ FUNC_NAME(RADEONDashedLastPel)(ScrnInfoPtr pScrn, + OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, dp_gui_master_cntl); + OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT + | RADEON_DST_Y_TOP_TO_BOTTOM)); +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); + OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (1 << 16) | 1); + + /* Restore old values */ +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); +- OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, info->dash_fg); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, info->accel_state->dash_fg); + + FINISH_ACCEL(); + BEGIN_ACCEL(2); +@@ -402,17 +402,17 @@ FUNC_NAME(RADEONSubsequentDashedTwoPointLine)(ScrnInfoPtr pScrn, + else shift = deltay; + + shift += phase; +- shift %= info->dashLen; ++ shift %= info->accel_state->dashLen; + +- if ((info->dashPattern >> shift) & 1) +- FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->dash_fg); +- else if (info->dash_bg != -1) +- FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->dash_bg); ++ if ((info->accel_state->dashPattern >> shift) & 1) ++ FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->accel_state->dash_fg); ++ else if (info->accel_state->dash_bg != -1) ++ FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->accel_state->dash_bg); + } + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_LINE_START, (ya << 16) | xa); + OUT_ACCEL_REG(RADEON_DST_LINE_PATCOUNT, phase); +@@ -433,7 +433,7 @@ FUNC_NAME(RADEONSetTransparency)(ScrnInfoPtr pScrn, + { + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if ((trans_color != -1) || (info->XAAForceTransBlit == TRUE)) { ++ if ((trans_color != -1) || (info->accel_state->XAAForceTransBlit == TRUE)) { + ACCEL_PREAMBLE(); + + BEGIN_ACCEL(3); +@@ -461,20 +461,20 @@ FUNC_NAME(RADEONSetupForScreenToScreenCopy)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- info->xdir = xdir; +- info->ydir = ydir; ++ info->accel_state->xdir = xdir; ++ info->accel_state->ydir = ydir; + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_NONE +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].rop +- | RADEON_DP_SRC_SOURCE_MEMORY +- | RADEON_GMC_SRC_PITCH_OFFSET_CNTL); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_NONE ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].rop ++ | RADEON_DP_SRC_SOURCE_MEMORY ++ | RADEON_GMC_SRC_PITCH_OFFSET_CNTL); + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_CNTL, + ((xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) | +@@ -487,7 +487,7 @@ FUNC_NAME(RADEONSetupForScreenToScreenCopy)(ScrnInfoPtr pScrn, + RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); + FINISH_ACCEL(); + +- info->trans_color = trans_color; ++ info->accel_state->trans_color = trans_color; + FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color); + } + +@@ -501,14 +501,14 @@ FUNC_NAME(RADEONSubsequentScreenToScreenCopy)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- if (info->xdir < 0) xa += w - 1, xb += w - 1; +- if (info->ydir < 0) ya += h - 1, yb += h - 1; ++ if (info->accel_state->xdir < 0) xa += w - 1, xb += w - 1; ++ if (info->accel_state->ydir < 0) ya += h - 1, yb += h - 1; + + BEGIN_ACCEL(5); + +- OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (yb <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_SRC_Y_X, (ya << 16) | xa); + OUT_ACCEL_REG(RADEON_DST_Y_X, (yb << 16) | xb); +@@ -552,19 +552,19 @@ FUNC_NAME(RADEONSetupForMono8x8PatternFill)(ScrnInfoPtr pScrn, + #endif + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | (bg == -1 +- ? RADEON_GMC_BRUSH_8X8_MONO_FG_LA +- : RADEON_GMC_BRUSH_8X8_MONO_FG_BG) +- | RADEON_ROP[rop].pattern ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | (bg == -1 ++ ? RADEON_GMC_BRUSH_8X8_MONO_FG_LA ++ : RADEON_GMC_BRUSH_8X8_MONO_FG_BG) ++ | RADEON_ROP[rop].pattern + #if X_BYTE_ORDER == X_LITTLE_ENDIAN +- | RADEON_GMC_BYTE_MSB_TO_LSB ++ | RADEON_GMC_BYTE_MSB_TO_LSB + #endif +- ); ++ ); + + BEGIN_ACCEL((bg == -1) ? 5 : 6); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg); + if (bg != -1) +@@ -600,7 +600,7 @@ FUNC_NAME(RADEONSubsequentMono8x8PatternFillRect)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_BRUSH_Y_X, (patterny << 8) | patternx); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); +@@ -625,21 +625,21 @@ FUNC_NAME(RADEONSetupForColor8x8PatternFill)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_8x8_COLOR +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].pattern +- | RADEON_DP_SRC_SOURCE_MEMORY); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_8x8_COLOR ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].pattern ++ | RADEON_DP_SRC_SOURCE_MEMORY); + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_SRC_Y_X, (paty << 16) | patx); + + FINISH_ACCEL(); + +- info->trans_color = trans_color; ++ info->accel_state->trans_color = trans_color; + FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color); + } + +@@ -655,7 +655,7 @@ FUNC_NAME(RADEONSubsequentColor8x8PatternFillRect)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_BRUSH_Y_X, (paty << 16) | patx); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); +@@ -666,7 +666,7 @@ FUNC_NAME(RADEONSubsequentColor8x8PatternFillRect)(ScrnInfoPtr pScrn, + #endif + + #ifdef ACCEL_CP +-#define CP_BUFSIZE (info->indirectBuffer->total/4-10) ++#define CP_BUFSIZE (info->cp->indirectBuffer->total/4-10) + + /* Helper function to write out a HOSTDATA_BLT packet into the indirect + * buffer and set the XAA scratch buffer address appropriately. +@@ -675,41 +675,41 @@ static void + RADEONCPScanlinePacket(ScrnInfoPtr pScrn, int bufno) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- int chunk_words = info->scanline_hpass * info->scanline_words; ++ int chunk_words = info->accel_state->scanline_hpass * info->accel_state->scanline_words; + ACCEL_PREAMBLE(); + + if (RADEON_VERBOSE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "CPScanline Packet h=%d hpass=%d chunkwords=%d\n", +- info->scanline_h, info->scanline_hpass, chunk_words); ++ info->accel_state->scanline_h, info->accel_state->scanline_hpass, chunk_words); + } + BEGIN_RING(chunk_words+10); + + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_CNTL_HOSTDATA_BLT,chunk_words+10-2)); +- OUT_RING(info->dp_gui_master_cntl_clip); +- OUT_RING(info->dst_pitch_offset | +- ((info->tilingEnabled && (info->scanline_y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); +- OUT_RING((info->scanline_y << 16) | +- (info->scanline_x1clip & 0xffff)); +- OUT_RING(((info->scanline_y+info->scanline_hpass) << 16) | +- (info->scanline_x2clip & 0xffff)); +- OUT_RING(info->scanline_fg); +- OUT_RING(info->scanline_bg); +- OUT_RING((info->scanline_y << 16) | +- (info->scanline_x & 0xffff)); +- OUT_RING((info->scanline_hpass << 16) | +- (info->scanline_w & 0xffff)); ++ OUT_RING(info->accel_state->dp_gui_master_cntl_clip); ++ OUT_RING(info->accel_state->dst_pitch_offset | ++ ((info->tilingEnabled && (info->accel_state->scanline_y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); ++ OUT_RING((info->accel_state->scanline_y << 16) | ++ (info->accel_state->scanline_x1clip & 0xffff)); ++ OUT_RING(((info->accel_state->scanline_y+info->accel_state->scanline_hpass) << 16) | ++ (info->accel_state->scanline_x2clip & 0xffff)); ++ OUT_RING(info->accel_state->scanline_fg); ++ OUT_RING(info->accel_state->scanline_bg); ++ OUT_RING((info->accel_state->scanline_y << 16) | ++ (info->accel_state->scanline_x & 0xffff)); ++ OUT_RING((info->accel_state->scanline_hpass << 16) | ++ (info->accel_state->scanline_w & 0xffff)); + OUT_RING(chunk_words); + +- info->scratch_buffer[bufno] = (unsigned char *)&__head[__count]; ++ info->accel_state->scratch_buffer[bufno] = (unsigned char *)&__head[__count]; + __count += chunk_words; + + /* The ring can only be advanced after the __head and __count have + been adjusted above */ + FINISH_ACCEL(); + +- info->scanline_y += info->scanline_hpass; +- info->scanline_h -= info->scanline_hpass; ++ info->accel_state->scanline_y += info->accel_state->scanline_hpass; ++ info->accel_state->scanline_h -= info->accel_state->scanline_hpass; + } + #endif + +@@ -729,22 +729,22 @@ FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- info->scanline_bpp = 0; ++ info->accel_state->scanline_bpp = 0; + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_DST_CLIPPING +- | RADEON_GMC_BRUSH_NONE +- | (bg == -1 +- ? RADEON_GMC_SRC_DATATYPE_MONO_FG_LA +- : RADEON_GMC_SRC_DATATYPE_MONO_FG_BG) +- | RADEON_ROP[rop].rop ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_DST_CLIPPING ++ | RADEON_GMC_BRUSH_NONE ++ | (bg == -1 ++ ? RADEON_GMC_SRC_DATATYPE_MONO_FG_LA ++ : RADEON_GMC_SRC_DATATYPE_MONO_FG_BG) ++ | RADEON_ROP[rop].rop + #if X_BYTE_ORDER == X_LITTLE_ENDIAN +- | RADEON_GMC_BYTE_LSB_TO_MSB ++ | RADEON_GMC_BYTE_LSB_TO_MSB + #else +- | RADEON_GMC_BYTE_MSB_TO_LSB ++ | RADEON_GMC_BYTE_MSB_TO_LSB + #endif +- | RADEON_DP_SRC_SOURCE_HOST_DATA); ++ | RADEON_DP_SRC_SOURCE_HOST_DATA); + + #ifdef ACCEL_MMIO + +@@ -755,15 +755,15 @@ FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr pScrn, + + OUT_ACCEL_REG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE); + #endif +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_SRC_FRGD_CLR, fg); + OUT_ACCEL_REG(RADEON_DP_SRC_BKGD_CLR, bg); + + #else /* ACCEL_CP */ + +- info->scanline_fg = fg; +- info->scanline_bg = bg; ++ info->accel_state->scanline_fg = fg; ++ info->accel_state->scanline_bg = bg; + + #if X_BYTE_ORDER == X_LITTLE_ENDIAN + BEGIN_ACCEL(1); +@@ -796,31 +796,31 @@ FUNC_NAME(RADEONSubsequentScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr + #ifdef ACCEL_MMIO + ACCEL_PREAMBLE(); + +- info->scanline_h = h; +- info->scanline_words = (w + 31) >> 5; ++ info->accel_state->scanline_h = h; ++ info->accel_state->scanline_words = (w + 31) >> 5; + + #ifdef __alpha__ + /* Always use indirect for Alpha */ + if (0) + #else +- if ((info->scanline_words * h) <= 9) ++ if ((info->accel_state->scanline_words * h) <= 9) + #endif + { + /* Turn on direct for less than 9 dword colour expansion */ +- info->scratch_buffer[0] = ++ info->accel_state->scratch_buffer[0] = + (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST) +- - (info->scanline_words - 1)); +- info->scanline_direct = 1; ++ - (info->accel_state->scanline_words - 1)); ++ info->accel_state->scanline_direct = 1; + } else { + /* Use indirect for anything else */ +- info->scratch_buffer[0] = info->scratch_save; +- info->scanline_direct = 0; ++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save; ++ info->accel_state->scanline_direct = 0; + } + +- BEGIN_ACCEL(5 + (info->scanline_direct ? +- (info->scanline_words * h) : 0)); ++ BEGIN_ACCEL(5 + (info->accel_state->scanline_direct ? ++ (info->accel_state->scanline_words * h) : 0)); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, (y << 16) | ((x+skipleft) + & 0xffff)); +@@ -833,17 +833,17 @@ FUNC_NAME(RADEONSubsequentScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr + + #else /* ACCEL_CP */ + +- info->scanline_x = x; +- info->scanline_y = y; ++ info->accel_state->scanline_x = x; ++ info->accel_state->scanline_y = y; + /* Have to pad the width here and use clipping engine */ +- info->scanline_w = (w + 31) & ~31; +- info->scanline_h = h; ++ info->accel_state->scanline_w = (w + 31) & ~31; ++ info->accel_state->scanline_h = h; + +- info->scanline_x1clip = x + skipleft; +- info->scanline_x2clip = x + w; ++ info->accel_state->scanline_x1clip = x + skipleft; ++ info->accel_state->scanline_x2clip = x + w; + +- info->scanline_words = info->scanline_w / 32; +- info->scanline_hpass = min(h,(CP_BUFSIZE/info->scanline_words)); ++ info->accel_state->scanline_words = info->accel_state->scanline_w / 32; ++ info->accel_state->scanline_hpass = min(h,(CP_BUFSIZE/info->accel_state->scanline_words)); + + RADEONCPScanlinePacket(pScrn, 0); + +@@ -859,21 +859,21 @@ FUNC_NAME(RADEONSubsequentScanline)(ScrnInfoPtr pScrn, + { + RADEONInfoPtr info = RADEONPTR(pScrn); + #ifdef ACCEL_MMIO +- uint32_t *p = (pointer)info->scratch_buffer[bufno]; ++ uint32_t *p = (pointer)info->accel_state->scratch_buffer[bufno]; + int i; +- int left = info->scanline_words; ++ int left = info->accel_state->scanline_words; + volatile uint32_t *d; + ACCEL_PREAMBLE(); + +- if (info->scanline_direct) return; ++ if (info->accel_state->scanline_direct) return; + +- --info->scanline_h; ++ --info->accel_state->scanline_h; + + while (left) { + write_mem_barrier(); + if (left <= 8) { + /* Last scanline - finish write to DATA_LAST */ +- if (info->scanline_h == 0) { ++ if (info->accel_state->scanline_h == 0) { + BEGIN_ACCEL(left); + /* Unrolling doesn't improve performance */ + for (d = ADDRREG(RADEON_HOST_DATA_LAST) - (left - 1); left; --left) +@@ -900,25 +900,25 @@ FUNC_NAME(RADEONSubsequentScanline)(ScrnInfoPtr pScrn, + + #if X_BYTE_ORDER == X_BIG_ENDIAN + if (info->ChipFamily >= CHIP_FAMILY_R300) { +- if (info->scanline_bpp == 16) { +- RADEONCopySwap(info->scratch_buffer[bufno], +- info->scratch_buffer[bufno], +- info->scanline_words << 2, ++ if (info->accel_state->scanline_bpp == 16) { ++ RADEONCopySwap(info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scanline_words << 2, + RADEON_HOST_DATA_SWAP_HDW); +- } else if (info->scanline_bpp < 15) { +- RADEONCopySwap(info->scratch_buffer[bufno], +- info->scratch_buffer[bufno], +- info->scanline_words << 2, ++ } else if (info->accel_state->scanline_bpp < 15) { ++ RADEONCopySwap(info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scanline_words << 2, + RADEON_HOST_DATA_SWAP_32BIT); + } + } + #endif + +- if (--info->scanline_hpass) { +- info->scratch_buffer[bufno] += 4 * info->scanline_words; +- } else if (info->scanline_h) { +- info->scanline_hpass = +- min(info->scanline_h,(CP_BUFSIZE/info->scanline_words)); ++ if (--info->accel_state->scanline_hpass) { ++ info->accel_state->scratch_buffer[bufno] += 4 * info->accel_state->scanline_words; ++ } else if (info->accel_state->scanline_h) { ++ info->accel_state->scanline_hpass = ++ min(info->accel_state->scanline_h,(CP_BUFSIZE/info->accel_state->scanline_words)); + RADEONCPScanlinePacket(pScrn, bufno); + } + +@@ -937,16 +937,16 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- info->scanline_bpp = bpp; ++ info->accel_state->scanline_bpp = bpp; + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_DST_CLIPPING +- | RADEON_GMC_BRUSH_NONE +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].rop +- | RADEON_GMC_BYTE_MSB_TO_LSB +- | RADEON_DP_SRC_SOURCE_HOST_DATA); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_DST_CLIPPING ++ | RADEON_GMC_BRUSH_NONE ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].rop ++ | RADEON_GMC_BYTE_MSB_TO_LSB ++ | RADEON_DP_SRC_SOURCE_HOST_DATA); + + #ifdef ACCEL_MMIO + +@@ -962,7 +962,7 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn, + else + OUT_ACCEL_REG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE); + #endif +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + + #else /* ACCEL_CP */ + +@@ -984,7 +984,7 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn, + + FINISH_ACCEL(); + +- info->trans_color = trans_color; ++ info->accel_state->trans_color = trans_color; + FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color); + } + +@@ -1007,31 +1007,31 @@ FUNC_NAME(RADEONSubsequentScanlineImageWriteRect)(ScrnInfoPtr pScrn, + if (pScrn->bitsPerPixel == 8) shift = 3; + else if (pScrn->bitsPerPixel == 16) shift = 1; + +- info->scanline_h = h; +- info->scanline_words = (w * info->scanline_bpp + 31) >> 5; ++ info->accel_state->scanline_h = h; ++ info->accel_state->scanline_words = (w * info->accel_state->scanline_bpp + 31) >> 5; + + #ifdef __alpha__ + /* Always use indirect for Alpha */ + if (0) + #else +- if ((info->scanline_words * h) <= 9) ++ if ((info->accel_state->scanline_words * h) <= 9) + #endif + { + /* Turn on direct for less than 9 dword colour expansion */ +- info->scratch_buffer[0] ++ info->accel_state->scratch_buffer[0] + = (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST) +- - (info->scanline_words - 1)); +- info->scanline_direct = 1; ++ - (info->accel_state->scanline_words - 1)); ++ info->accel_state->scanline_direct = 1; + } else { + /* Use indirect for anything else */ +- info->scratch_buffer[0] = info->scratch_save; +- info->scanline_direct = 0; ++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save; ++ info->accel_state->scanline_direct = 0; + } + +- BEGIN_ACCEL(5 + (info->scanline_direct ? +- (info->scanline_words * h) : 0)); ++ BEGIN_ACCEL(5 + (info->accel_state->scanline_direct ? ++ (info->accel_state->scanline_words * h) : 0)); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, (y << 16) | ((x+skipleft) + & 0xffff)); +@@ -1050,17 +1050,17 @@ FUNC_NAME(RADEONSubsequentScanlineImageWriteRect)(ScrnInfoPtr pScrn, + if (pScrn->bitsPerPixel == 8) pad = 3; + else if (pScrn->bitsPerPixel == 16) pad = 1; + +- info->scanline_x = x; +- info->scanline_y = y; ++ info->accel_state->scanline_x = x; ++ info->accel_state->scanline_y = y; + /* Have to pad the width here and use clipping engine */ +- info->scanline_w = (w + pad) & ~pad; +- info->scanline_h = h; ++ info->accel_state->scanline_w = (w + pad) & ~pad; ++ info->accel_state->scanline_h = h; + +- info->scanline_x1clip = x + skipleft; +- info->scanline_x2clip = x + w; ++ info->accel_state->scanline_x1clip = x + skipleft; ++ info->accel_state->scanline_x2clip = x + w; + +- info->scanline_words = (w * info->scanline_bpp + 31) / 32; +- info->scanline_hpass = min(h,(CP_BUFSIZE/info->scanline_words)); ++ info->accel_state->scanline_words = (w * info->accel_state->scanline_bpp + 31) / 32; ++ info->accel_state->scanline_hpass = min(h,(CP_BUFSIZE/info->accel_state->scanline_words)); + + RADEONCPScanlinePacket(pScrn, 0); + +@@ -1110,7 +1110,7 @@ FUNC_NAME(RADEONSetClippingRectangle)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, (info->dp_gui_master_cntl_clip ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, (info->accel_state->dp_gui_master_cntl_clip + | RADEON_GMC_DST_CLIPPING)); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, tmp1); + OUT_ACCEL_REG(RADEON_SC_BOTTOM_RIGHT, tmp2); +@@ -1122,7 +1122,7 @@ FUNC_NAME(RADEONSetClippingRectangle)(ScrnInfoPtr pScrn, + RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); + FINISH_ACCEL(); + +- FUNC_NAME(RADEONSetTransparency)(pScrn, info->trans_color); ++ FUNC_NAME(RADEONSetTransparency)(pScrn, info->accel_state->trans_color); + } + + /* Disable the clipping rectangle */ +@@ -1134,7 +1134,7 @@ FUNC_NAME(RADEONDisableClipping)(ScrnInfoPtr pScrn) + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, 0); + OUT_ACCEL_REG(RADEON_SC_BOTTOM_RIGHT, (RADEON_DEFAULT_SC_RIGHT_MAX | + RADEON_DEFAULT_SC_BOTTOM_MAX)); +@@ -1146,7 +1146,7 @@ FUNC_NAME(RADEONDisableClipping)(ScrnInfoPtr pScrn) + RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); + FINISH_ACCEL(); + +- FUNC_NAME(RADEONSetTransparency)(pScrn, info->trans_color); ++ FUNC_NAME(RADEONSetTransparency)(pScrn, info->accel_state->trans_color); + } + + void +@@ -1203,12 +1203,12 @@ FUNC_NAME(RADEONAccelInit)(ScreenPtr pScreen, XAAInfoRecPtr a) + | ROP_NEEDS_SOURCE + | LEFT_EDGE_CLIPPING_NEGATIVE_X); + a->NumScanlineColorExpandBuffers = 1; +- a->ScanlineColorExpandBuffers = info->scratch_buffer; +- if (!info->scratch_save) +- info->scratch_save ++ a->ScanlineColorExpandBuffers = info->accel_state->scratch_buffer; ++ if (!info->accel_state->scratch_save) ++ info->accel_state->scratch_save + = xalloc(((pScrn->virtualX+31)/32*4) + + (pScrn->virtualX * info->CurrentLayout.pixel_bytes)); +- info->scratch_buffer[0] = info->scratch_save; ++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save; + a->SetupForScanlineCPUToScreenColorExpandFill + = FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill); + a->SubsequentScanlineCPUToScreenColorExpandFill +@@ -1299,7 +1299,7 @@ FUNC_NAME(RADEONAccelInit)(ScreenPtr pScreen, XAAInfoRecPtr a) + + /* ImageWrite */ + a->NumScanlineImageWriteBuffers = 1; +- a->ScanlineImageWriteBuffers = info->scratch_buffer; ++ a->ScanlineImageWriteBuffers = info->accel_state->scratch_buffer; + a->SetupForScanlineImageWrite + = FUNC_NAME(RADEONSetupForScanlineImageWrite); + a->SubsequentScanlineImageWriteRect +diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c +index 20aa722..851014b 100644 +--- a/src/radeon_atombios.c ++++ b/src/radeon_atombios.c +@@ -501,11 +501,11 @@ rhdAtomASICInit(atomBiosHandlePtr handle) + RHDAtomBiosFunc(handle->scrnIndex, handle, + GET_DEFAULT_ENGINE_CLOCK, + &data); +- asicInit.sASICInitClocks.ulDefaultEngineClock = data.val / 10;/*in 10 Khz*/ ++ asicInit.sASICInitClocks.ulDefaultEngineClock = cpu_to_le32(data.val / 10);/*in 10 Khz*/ + RHDAtomBiosFunc(handle->scrnIndex, handle, + GET_DEFAULT_MEMORY_CLOCK, + &data); +- asicInit.sASICInitClocks.ulDefaultMemoryClock = data.val / 10;/*in 10 Khz*/ ++ asicInit.sASICInitClocks.ulDefaultMemoryClock = cpu_to_le32(data.val / 10);/*in 10 Khz*/ + data.exec.dataSpace = NULL; + data.exec.index = 0x0; + data.exec.pspace = &asicInit; +@@ -609,17 +609,6 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2, + #endif + handle->BIOSImageSize = BIOSImageSize; + +-# if ATOM_BIOS_PARSER +- /* Try to find out if BIOS has been posted (either by system or int10 */ +- if (!rhdAtomGetFbBaseAndSize(handle, NULL, NULL)) { +- /* run AsicInit */ +- if (!rhdAtomASICInit(handle)) +- xf86DrvMsg(scrnIndex, X_WARNING, +- "%s: AsicInit failed. Won't be able to obtain in VRAM " +- "FB scratch space\n",__func__); +- } +-# endif +- + data->atomhandle = handle; + return ATOM_SUCCESS; + +@@ -654,12 +643,18 @@ rhdAtomVramInfoQuery(atomBiosHandlePtr handle, AtomBiosRequestID func, + + switch (func) { + case GET_FW_FB_START: +- *val = le32_to_cpu(atomDataPtr->VRAM_UsageByFirmware +- ->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware); ++ if (atomDataPtr->VRAM_UsageByFirmware) ++ *val = le32_to_cpu(atomDataPtr->VRAM_UsageByFirmware ++ ->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware); ++ else ++ return ATOM_NOT_IMPLEMENTED; + break; + case GET_FW_FB_SIZE: +- *val = le16_to_cpu(atomDataPtr->VRAM_UsageByFirmware +- ->asFirmwareVramReserveInfo[0].usFirmwareUseInKb); ++ if (atomDataPtr->VRAM_UsageByFirmware) ++ *val = le16_to_cpu(atomDataPtr->VRAM_UsageByFirmware ++ ->asFirmwareVramReserveInfo[0].usFirmwareUseInKb); ++ else ++ return ATOM_NOT_IMPLEMENTED; + break; + default: + return ATOM_NOT_IMPLEMENTED; +@@ -1391,35 +1386,57 @@ const int object_connector_convert[] = + CONNECTOR_DISPLAY_PORT, + }; + +-static void +-rhdAtomParseI2CRecord(atomBiosHandlePtr handle, +- ATOM_I2C_RECORD *Record, int *ddc_line) ++xf86MonPtr radeon_atom_get_edid(xf86OutputPtr output) + { +- ErrorF(" %s: I2C Record: %s[%x] EngineID: %x I2CAddr: %x\n", +- __func__, +- Record->sucI2cId.bfHW_Capable ? "HW_Line" : "GPIO_ID", +- Record->sucI2cId.bfI2C_LineMux, +- Record->sucI2cId.bfHW_EngineID, +- Record->ucI2CAddr); +- +- if (!*(unsigned char *)&(Record->sucI2cId)) +- *ddc_line = 0; +- else { +- if (Record->ucI2CAddr != 0) +- return; +- +- if (Record->sucI2cId.bfHW_Capable) { +- switch(Record->sucI2cId.bfI2C_LineMux) { +- case 0: *ddc_line = 0x7e40; break; +- case 1: *ddc_line = 0x7e50; break; +- case 2: *ddc_line = 0x7e30; break; +- default: break; +- } +- return; +- } else { +- /* add GPIO pin parsing */ +- } +- } ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ READ_EDID_FROM_HW_I2C_DATA_PS_ALLOCATION edid_data; ++ AtomBiosArgRec data; ++ unsigned char *space; ++ int i2c_clock = 50; ++ int engine_clk = info->sclk * 100; ++ int prescale; ++ unsigned char *edid; ++ xf86MonPtr mon = NULL; ++ ++ if (!radeon_output->ddc_i2c.hw_capable) ++ return mon; ++ ++ if (info->atomBIOS->fbBase) ++ edid = (unsigned char *)info->FB + info->atomBIOS->fbBase; ++ else if (info->atomBIOS->scratchBase) ++ edid = (unsigned char *)info->atomBIOS->scratchBase; ++ else ++ return mon; ++ ++ memset(edid, 0, ATOM_EDID_RAW_DATASIZE); ++ ++ if (info->ChipFamily == CHIP_FAMILY_R520) ++ prescale = (127 << 8) + (engine_clk * 10) / (4 * 127 * i2c_clock); ++ else if (info->ChipFamily < CHIP_FAMILY_R600) ++ prescale = (((engine_clk * 10)/(4 * 128 * 100) + 1) << 8) + 128; ++ else ++ prescale = (info->pll.reference_freq * 10) / i2c_clock; ++ ++ edid_data.usPrescale = prescale; ++ edid_data.usVRAMAddress = 0; ++ edid_data.ucSlaveAddr = 0xa0; ++ edid_data.ucLineNumber = radeon_output->ddc_i2c.hw_line; ++ ++ data.exec.index = GetIndexIntoMasterTable(COMMAND, ReadEDIDFromHWAssistedI2C); ++ data.exec.dataSpace = (void *)&space; ++ data.exec.pspace = &edid_data; ++ ++ if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) ++ ErrorF("Atom Get EDID success\n"); ++ else ++ ErrorF("Atom Get EDID failed\n"); ++ ++ if (edid[1] == 0xff) ++ mon = xf86InterpretEDID(output->scrn->scrnIndex, edid); ++ ++ return mon; ++ + } + + static RADEONI2CBusRec +@@ -1450,36 +1467,53 @@ RADEONLookupGPIOLineForDDC(ScrnInfoPtr pScrn, uint8_t id) + i2c.put_data_reg = le16_to_cpu(gpio.usDataEnRegisterIndex) * 4; + i2c.get_clk_reg = le16_to_cpu(gpio.usClkY_RegisterIndex) * 4; + i2c.get_data_reg = le16_to_cpu(gpio.usDataY_RegisterIndex) * 4; ++ i2c.a_clk_reg = le16_to_cpu(gpio.usClkA_RegisterIndex) * 4; ++ i2c.a_data_reg = le16_to_cpu(gpio.usDataA_RegisterIndex) * 4; + i2c.mask_clk_mask = (1 << gpio.ucClkMaskShift); + i2c.mask_data_mask = (1 << gpio.ucDataMaskShift); + i2c.put_clk_mask = (1 << gpio.ucClkEnShift); + i2c.put_data_mask = (1 << gpio.ucDataEnShift); + i2c.get_clk_mask = (1 << gpio.ucClkY_Shift); + i2c.get_data_mask = (1 << gpio.ucDataY_Shift); ++ i2c.a_clk_mask = (1 << gpio.ucClkA_Shift); ++ i2c.a_data_mask = (1 << gpio.ucDataA_Shift); ++ i2c.hw_line = gpio.sucI2cId.sbfAccess.bfI2C_LineMux; ++ i2c.hw_capable = gpio.sucI2cId.sbfAccess.bfHW_Capable; + i2c.valid = TRUE; + + #if 0 ++ ErrorF("id: %d\n", id); ++ ErrorF("hw capable: %d\n", gpio.sucI2cId.sbfAccess.bfHW_Capable); ++ ErrorF("hw engine id: %d\n", gpio.sucI2cId.sbfAccess.bfHW_EngineID); ++ ErrorF("line mux %d\n", gpio.sucI2cId.sbfAccess.bfI2C_LineMux); + ErrorF("mask_clk_reg: 0x%x\n", gpio.usClkMaskRegisterIndex * 4); + ErrorF("mask_data_reg: 0x%x\n", gpio.usDataMaskRegisterIndex * 4); + ErrorF("put_clk_reg: 0x%x\n", gpio.usClkEnRegisterIndex * 4); + ErrorF("put_data_reg: 0x%x\n", gpio.usDataEnRegisterIndex * 4); + ErrorF("get_clk_reg: 0x%x\n", gpio.usClkY_RegisterIndex * 4); + ErrorF("get_data_reg: 0x%x\n", gpio.usDataY_RegisterIndex * 4); +- ErrorF("other_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4); +- ErrorF("other_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4); ++ ErrorF("a_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4); ++ ErrorF("a_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4); + ErrorF("mask_clk_mask: %d\n", gpio.ucClkMaskShift); + ErrorF("mask_data_mask: %d\n", gpio.ucDataMaskShift); + ErrorF("put_clk_mask: %d\n", gpio.ucClkEnShift); + ErrorF("put_data_mask: %d\n", gpio.ucDataEnShift); + ErrorF("get_clk_mask: %d\n", gpio.ucClkY_Shift); + ErrorF("get_data_mask: %d\n", gpio.ucDataY_Shift); +- ErrorF("other_clk_mask: %d\n", gpio.ucClkA_Shift); +- ErrorF("other_data_mask: %d\n", gpio.ucDataA_Shift); ++ ErrorF("a_clk_mask: %d\n", gpio.ucClkA_Shift); ++ ErrorF("a_data_mask: %d\n", gpio.ucDataA_Shift); + #endif + + return i2c; + } + ++static RADEONI2CBusRec ++rhdAtomParseI2CRecord(ScrnInfoPtr pScrn, atomBiosHandlePtr handle, ++ ATOM_I2C_RECORD *Record) ++{ ++ return RADEONLookupGPIOLineForDDC(pScrn, Record->sucI2cId.bfI2C_LineMux); ++} ++ + Bool + RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + { +@@ -1489,7 +1523,7 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + atomDataTablesPtr atomDataPtr; + ATOM_CONNECTOR_OBJECT_TABLE *con_obj; + ATOM_INTEGRATED_SYSTEM_INFO_V2 *igp_obj = NULL; +- int i, j, ddc_line = 0; ++ int i, j; + + atomDataPtr = info->atomBIOS->atomDataPtr; + if (!rhdAtomGetTableRevisionAndSize((ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->Object_Header), &crev, &frev, &size)) +@@ -1560,15 +1594,23 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + break; + case ENCODER_OBJECT_ID_INTERNAL_TMDS1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_INT; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_INT; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: +- if (num == 1) +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); +- else +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP2_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_UNIPHY; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ if (num == 1) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); ++ else ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP2_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_UNIPHY; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_TMDS2: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1: +@@ -1577,8 +1619,12 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + break; + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP3_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_LVTMA; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP3_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_LVTMA; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_DAC1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: +@@ -1617,10 +1663,8 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + ErrorF("record type %d\n", Record->ucRecordType); + switch (Record->ucRecordType) { + case ATOM_I2C_RECORD_TYPE: +- rhdAtomParseI2CRecord(info->atomBIOS, +- (ATOM_I2C_RECORD *)Record, +- &ddc_line); +- info->BiosConnector[i].ddc_i2c = atom_setup_i2c_bus(ddc_line); ++ info->BiosConnector[i].ddc_i2c = rhdAtomParseI2CRecord(pScrn, info->atomBIOS, ++ (ATOM_I2C_RECORD *)Record); + break; + case ATOM_HPD_INT_RECORD_TYPE: + break; +@@ -1636,6 +1680,71 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + } + + Bool ++RADEONGetATOMLVDSInfo(xf86OutputPtr output) ++{ ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ atomDataTablesPtr atomDataPtr; ++ uint8_t crev, frev; ++ ++ atomDataPtr = info->atomBIOS->atomDataPtr; ++ ++ if (!rhdAtomGetTableRevisionAndSize( ++ (ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->LVDS_Info.base), ++ &frev,&crev,NULL)) { ++ return FALSE; ++ } ++ ++ switch (crev) { ++ case 1: ++ radeon_output->PanelXRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHActive); ++ radeon_output->PanelYRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVActive); ++ radeon_output->DotClock = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usPixClk) * 10; ++ radeon_output->HBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHBlanking_Time); ++ radeon_output->HOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHSyncOffset); ++ radeon_output->HSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHSyncWidth); ++ radeon_output->VBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVBlanking_Time); ++ radeon_output->VOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVSyncOffset); ++ radeon_output->VSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVSyncWidth); ++ radeon_output->PanelPwrDly = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->usOffDelayInMs); ++ radeon_output->lvds_misc = atomDataPtr->LVDS_Info.LVDS_Info->ucLVDS_Misc; ++ radeon_output->lvds_ss_id = atomDataPtr->LVDS_Info.LVDS_Info->ucSS_Id; ++ break; ++ case 2: ++ radeon_output->PanelXRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHActive); ++ radeon_output->PanelYRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVActive); ++ radeon_output->DotClock = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usPixClk) * 10; ++ radeon_output->HBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHBlanking_Time); ++ radeon_output->HOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHSyncOffset); ++ radeon_output->HSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHSyncWidth); ++ radeon_output->VBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVBlanking_Time); ++ radeon_output->VOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVSyncOffset); ++ radeon_output->VSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVSyncWidth); ++ radeon_output->PanelPwrDly = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->usOffDelayInMs); ++ radeon_output->lvds_misc = atomDataPtr->LVDS_Info.LVDS_Info_v12->ucLVDS_Misc; ++ radeon_output->lvds_ss_id = atomDataPtr->LVDS_Info.LVDS_Info_v12->ucSS_Id; ++ break; ++ } ++ ++ if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) ++ radeon_output->PanelPwrDly = 2000; ++ ++ radeon_output->Flags = 0; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "LVDS Info:\n" ++ "XRes: %d, YRes: %d, DotClock: %d\n" ++ "HBlank: %d, HOverPlus: %d, HSyncWidth: %d\n" ++ "VBlank: %d, VOverPlus: %d, VSyncWidth: %d\n", ++ radeon_output->PanelXRes, radeon_output->PanelYRes, radeon_output->DotClock, ++ radeon_output->HBlank, radeon_output->HOverPlus, radeon_output->HSyncWidth, ++ radeon_output->VBlank, radeon_output->VOverPlus, radeon_output->VSyncWidth); ++ ++ return TRUE; ++} ++ ++Bool + RADEONGetATOMTVInfo(xf86OutputPtr output) + { + ScrnInfoPtr pScrn = output->scrn; +@@ -1751,6 +1860,30 @@ static void RADEONApplyATOMQuirks(ScrnInfoPtr pScrn, int index) + } + } + ++ /* Falcon NW laptop lists vga ddc line for LVDS */ ++ if ((info->Chipset == PCI_CHIP_RV410_5653) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1462) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0291)) { ++ if (info->BiosConnector[index].ConnectorType == CONNECTOR_LVDS) { ++ info->BiosConnector[index].ddc_i2c.valid = FALSE; ++ } ++ } ++ ++ /* Funky macbooks */ ++ if ((info->Chipset == PCI_CHIP_RV530_71C5) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x106b) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0080)) { ++ if ((index == ATOM_DEVICE_CRT1_INDEX) || ++ (index == ATOM_DEVICE_CRT2_INDEX) || ++ (index == ATOM_DEVICE_DFP2_INDEX)) ++ info->BiosConnector[index].valid = FALSE; ++ ++ if (index == ATOM_DEVICE_DFP1_INDEX) { ++ info->BiosConnector[index].DACType = DAC_TVDAC; ++ info->BiosConnector[index].devices |= (1 << ATOM_DEVICE_CRT2_INDEX); ++ } ++ } ++ + } + + Bool +@@ -2027,9 +2160,12 @@ RHDAtomBiosFunc(int scrnIndex, atomBiosHandlePtr handle, + VOID* + CailAllocateMemory(VOID *CAIL,UINT16 size) + { ++ void *ret; + CAILFUNC(CAIL); + +- return malloc(size); ++ ret = malloc(size); ++ memset(ret, 0, size); ++ return ret; + } + + VOID +@@ -2256,4 +2392,15 @@ atombios_get_command_table_version(atomBiosHandlePtr atomBIOS, int index, int *m + } + + ++UINT16 ATOM_BSWAP16(UINT16 x) ++{ ++ return bswap_16(x); ++} ++ ++UINT32 ATOM_BSWAP32(UINT32 x) ++{ ++ return bswap_32(x); ++} ++ ++ + #endif /* ATOM_BIOS */ +diff --git a/src/radeon_atombios.h b/src/radeon_atombios.h +index fe7044d..fbe8dd5 100644 +--- a/src/radeon_atombios.h ++++ b/src/radeon_atombios.h +@@ -125,12 +125,18 @@ atombios_static_pwrmgt_setup(ScrnInfoPtr pScrn, int enable); + extern Bool + RADEONGetATOMTVInfo(xf86OutputPtr output); + ++extern Bool ++RADEONGetATOMLVDSInfo(xf86OutputPtr output); ++ + extern int + atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode); + + extern void + atombios_get_command_table_version(atomBiosHandlePtr atomBIOS, int index, int *major, int *minor); + ++extern xf86MonPtr ++radeon_atom_get_edid(xf86OutputPtr output); ++ + Bool + rhdAtomASICInit(atomBiosHandlePtr handle); + +diff --git a/src/radeon_atomwrapper.c b/src/radeon_atomwrapper.c +index 3e7ae01..bed1471 100644 +--- a/src/radeon_atomwrapper.c ++++ b/src/radeon_atomwrapper.c +@@ -31,6 +31,7 @@ + + #define INT32 INT32 + #include "CD_Common_Types.h" ++#include "atombios.h" + #include "CD_Definitions.h" + + +diff --git a/src/radeon_bios.c b/src/radeon_bios.c +index 529dda7..22bb5ed 100644 +--- a/src/radeon_bios.c ++++ b/src/radeon_bios.c +@@ -266,6 +266,26 @@ radeon_read_unposted_bios(ScrnInfoPtr pScrn) + return ret; + } + ++Bool ++radeon_card_posted(ScrnInfoPtr pScrn) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ uint32_t reg; ++ ++ if (IS_AVIVO_VARIANT) { ++ reg = INREG(AVIVO_D1CRTC_CONTROL) | INREG(AVIVO_D2CRTC_CONTROL); ++ if (reg & AVIVO_CRTC_EN) ++ return TRUE; ++ } else { ++ reg = INREG(RADEON_CRTC_GEN_CNTL) | INREG(RADEON_CRTC2_GEN_CNTL); ++ if (reg & RADEON_CRTC_EN) ++ return TRUE; ++ } ++ ++ return FALSE; ++} ++ + /* Read the Video BIOS block and the FP registers (if applicable). */ + Bool + RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) +@@ -273,6 +293,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + RADEONInfoPtr info = RADEONPTR(pScrn); + int tmp; + unsigned short dptr; ++ Bool posted = TRUE; + + #ifdef XSERVER_LIBPCIACCESS + int size = info->PciInfo->rom_size > RADEON_VBIOS_SIZE ? info->PciInfo->rom_size : RADEON_VBIOS_SIZE; +@@ -291,6 +312,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + RADEON_VBIOS_SIZE); + } else if (!radeon_read_bios(pScrn)) { + (void)radeon_read_unposted_bios(pScrn); ++ posted = FALSE; + } + } + +@@ -326,7 +348,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + info->VBIOS = NULL; + return FALSE; + } +- ++ + tmp = info->ROMHeaderStart + 4; + if ((RADEON_BIOS8(tmp) == 'A' && + RADEON_BIOS8(tmp+1) == 'T' && +@@ -344,51 +366,65 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + info->IsAtomBios ? "ATOM":"Legacy"); + + if (info->IsAtomBios) { +- AtomBiosArgRec atomBiosArg; ++ AtomBiosArgRec atomBiosArg; + +- if (RHDAtomBiosFunc(pScrn->scrnIndex, NULL, ATOMBIOS_INIT, &atomBiosArg) +- == ATOM_SUCCESS) { +- info->atomBIOS = atomBiosArg.atomhandle; +- } ++ if (RHDAtomBiosFunc(pScrn->scrnIndex, NULL, ATOMBIOS_INIT, &atomBiosArg) ++ == ATOM_SUCCESS) { ++ info->atomBIOS = atomBiosArg.atomhandle; ++ } + +- atomBiosArg.fb.start = info->FbFreeStart; +- atomBiosArg.fb.size = info->FbFreeSize; +- if (RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ATOMBIOS_ALLOCATE_FB_SCRATCH, ++ atomBiosArg.fb.start = info->FbFreeStart; ++ atomBiosArg.fb.size = info->FbFreeSize; ++ if (RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ATOMBIOS_ALLOCATE_FB_SCRATCH, + &atomBiosArg) == ATOM_SUCCESS) { + + info->FbFreeStart = atomBiosArg.fb.start; + info->FbFreeSize = atomBiosArg.fb.size; +- } +- +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_ENGINE_CLOCK, +- &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_MEMORY_CLOCK, +- &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_MAX_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_MIN_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_MAX_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ } ++ ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_ENGINE_CLOCK, ++ &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_MEMORY_CLOCK, ++ &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_MAX_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_MIN_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_MAX_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, + GET_MIN_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, + GET_MAX_PIXEL_CLK, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_REF_CLOCK, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_REF_CLOCK, &atomBiosArg); + + info->MasterDataStart = RADEON_BIOS16 (info->ROMHeaderStart + 32); + } ++ ++ /* We are a bit too quick at using this "unposted" to re-post the ++ * card. This causes some problems with VT switch on some machines, ++ * so let's work around this for now by only POSTing if none of the ++ * CRTCs are enabled ++ */ ++ if ((!posted) && info->VBIOS) { ++ posted = radeon_card_posted(pScrn); ++ } ++ ++ if ((!posted) && info->VBIOS) { ++ if (info->IsAtomBios) { ++ if (!rhdAtomASICInit(info->atomBIOS)) ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "%s: AsicInit failed.\n",__func__); ++ } else { + #if 0 +- else { +- /* non-primary card may need posting */ +- if (!pInt10) { +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting to POST via BIOS tables\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting to POST via legacy BIOS tables\n"); + RADEONGetBIOSInitTableOffsets(pScrn); + RADEONPostCardFromBIOSTables(pScrn); ++#endif + } + } +-#endif ++ + return TRUE; + } + +@@ -397,7 +433,7 @@ static Bool RADEONGetATOMConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + RADEONInfoPtr info = RADEONPTR (pScrn); + + if (!info->VBIOS) return FALSE; +- ++ + if (RADEONGetATOMConnectorInfoFromBIOSObject(pScrn)) + return TRUE; + +@@ -411,28 +447,41 @@ static void RADEONApplyLegacyQuirks(ScrnInfoPtr pScrn, int index) + { + RADEONInfoPtr info = RADEONPTR (pScrn); + +- /* on XPRESS chips, CRT2_DDC and MONID_DCC both use the +- * MONID gpio, but use different pins. +- * CRT2_DDC uses the standard pinout, MONID_DDC uses +- * something else. ++ /* For RS300/RS350/RS400 chips, there is no primary DAC. Force VGA port to use TVDAC ++ * Also there is no internal TMDS + */ ++ if ((info->ChipFamily == CHIP_FAMILY_RS300) || ++ (info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) { ++ info->BiosConnector[index].DACType = DAC_TVDAC; ++ info->BiosConnector[index].TMDSType = TMDS_EXT; ++ } ++ ++ /* XPRESS DDC quirks */ + if ((info->ChipFamily == CHIP_FAMILY_RS400 || + info->ChipFamily == CHIP_FAMILY_RS480) && +- info->BiosConnector[index].ConnectorType == CONNECTOR_VGA && + info->BiosConnector[index].ddc_i2c.mask_clk_reg == RADEON_GPIO_CRT2_DDC) { + info->BiosConnector[index].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_MONID); +- } +- +- /* XPRESS desktop chips seem to have a proprietary connector listed for +- * DVI-D, try and do the right thing here. +- */ +- if ((!info->IsMobility) && +- (info->BiosConnector[index].ConnectorType == CONNECTOR_LVDS)) { +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "Proprietary connector found, assuming DVI-D\n"); +- info->BiosConnector[index].DACType = DAC_NONE; +- info->BiosConnector[index].TMDSType = TMDS_EXT; +- info->BiosConnector[index].ConnectorType = CONNECTOR_DVI_D; ++ } else if ((info->ChipFamily == CHIP_FAMILY_RS400 || ++ info->ChipFamily == CHIP_FAMILY_RS480) && ++ info->BiosConnector[index].ddc_i2c.mask_clk_reg == RADEON_GPIO_MONID) { ++ info->BiosConnector[index].ddc_i2c.valid = TRUE; ++ info->BiosConnector[index].ddc_i2c.mask_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.mask_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.a_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.a_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.put_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.put_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.get_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.get_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.mask_clk_reg = RADEON_GPIOPAD_MASK; ++ info->BiosConnector[index].ddc_i2c.mask_data_reg = RADEON_GPIOPAD_MASK; ++ info->BiosConnector[index].ddc_i2c.a_clk_reg = RADEON_GPIOPAD_A; ++ info->BiosConnector[index].ddc_i2c.a_data_reg = RADEON_GPIOPAD_A; ++ info->BiosConnector[index].ddc_i2c.put_clk_reg = RADEON_GPIOPAD_EN; ++ info->BiosConnector[index].ddc_i2c.put_data_reg = RADEON_GPIOPAD_EN; ++ info->BiosConnector[index].ddc_i2c.get_clk_reg = RADEON_LCD_GPIO_Y_REG; ++ info->BiosConnector[index].ddc_i2c.get_data_reg = RADEON_LCD_GPIO_Y_REG; + } + + /* Certain IBM chipset RN50s have a BIOS reporting two VGAs, +@@ -454,6 +503,16 @@ static void RADEONApplyLegacyQuirks(ScrnInfoPtr pScrn, int index) + } + } + ++ /* X300 card with extra non-existent DVI port */ ++ if (info->Chipset == PCI_CHIP_RV370_5B60 && ++ PCI_SUB_VENDOR_ID(info->PciInfo) == 0x17af && ++ PCI_SUB_DEVICE_ID(info->PciInfo) == 0x201e && ++ index == 2) { ++ if (info->BiosConnector[index].ConnectorType == CONNECTOR_DVI_I) { ++ info->BiosConnector[index].valid = FALSE; ++ } ++ } ++ + } + + static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) +@@ -479,7 +538,7 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + ConnectorType = (tmp >> 12) & 0xf; + switch (ConnectorType) { + case CONNECTOR_PROPRIETARY_LEGACY: +- info->BiosConnector[i].ConnectorType = CONNECTOR_LVDS; ++ info->BiosConnector[i].ConnectorType = CONNECTOR_DVI_D; + break; + case CONNECTOR_CRT_LEGACY: + info->BiosConnector[i].ConnectorType = CONNECTOR_VGA; +@@ -528,10 +587,6 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + else + info->BiosConnector[i].DACType = DAC_PRIMARY; + +- /* For RS300/RS350/RS400 chips, there is no primary DAC. Force VGA port to use TVDAC*/ +- if (info->IsIGP) +- info->BiosConnector[i].DACType = DAC_TVDAC; +- + if ((tmp >> 4) & 0x1) + info->BiosConnector[i].TMDSType = TMDS_EXT; + else +@@ -560,7 +615,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + } + + /* check LVDS table */ +- if (info->IsMobility) { ++ /* RS4xx can be mobile or desktop so check the connectors */ ++ if (info->IsMobility || ++ info->ChipFamily == CHIP_FAMILY_RS400 || ++ info->ChipFamily == CHIP_FAMILY_RS480) { + offset = RADEON_BIOS16(info->ROMHeaderStart + 0x40); + if (offset) { + info->BiosConnector[4].valid = TRUE; +@@ -591,10 +649,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + break; + case DDC_LCD: + info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_LCD_GPIO_MASK); +- info->BiosConnector[4].ddc_i2c.mask_clk_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); +- info->BiosConnector[4].ddc_i2c.mask_data_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.mask_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.mask_data_mask = RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.a_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.a_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.put_clk_mask = RADEON_BIOS32(tmp0 + 0x03); + info->BiosConnector[4].ddc_i2c.put_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.get_clk_mask = RADEON_BIOS32(tmp0 + 0x03); +@@ -602,10 +660,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + break; + case DDC_GPIO: + info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_MDGPIO_EN_REG); +- info->BiosConnector[4].ddc_i2c.mask_clk_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); +- info->BiosConnector[4].ddc_i2c.mask_data_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.mask_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.mask_data_mask = RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.a_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.a_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.put_clk_mask = RADEON_BIOS32(tmp0 + 0x03); + info->BiosConnector[4].ddc_i2c.put_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.get_clk_mask = RADEON_BIOS32(tmp0 + 0x03); +@@ -917,30 +975,9 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86OutputPtr output) + + if (!info->VBIOS) return FALSE; + +- if (info->IsAtomBios) { +- if((tmp = RADEON_BIOS16 (info->MasterDataStart + 16))) { +- +- radeon_output->PanelXRes = RADEON_BIOS16(tmp+6); +- radeon_output->PanelYRes = RADEON_BIOS16(tmp+10); +- radeon_output->DotClock = RADEON_BIOS16(tmp+4)*10; +- radeon_output->HBlank = RADEON_BIOS16(tmp+8); +- radeon_output->HOverPlus = RADEON_BIOS16(tmp+14); +- radeon_output->HSyncWidth = RADEON_BIOS16(tmp+16); +- radeon_output->VBlank = RADEON_BIOS16(tmp+12); +- radeon_output->VOverPlus = RADEON_BIOS16(tmp+18); +- radeon_output->VSyncWidth = RADEON_BIOS16(tmp+20); +- radeon_output->PanelPwrDly = RADEON_BIOS16(tmp+40); +- +- if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) +- radeon_output->PanelPwrDly = 2000; +- +- radeon_output->Flags = 0; +- } else { +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "No LVDS Info Table found in BIOS!\n"); +- return FALSE; +- } +- } else { ++ if (info->IsAtomBios) ++ return RADEONGetATOMLVDSInfo(output); ++ else { + + tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x40); + +@@ -963,7 +1000,7 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86OutputPtr output) + radeon_output->PanelYRes = RADEON_BIOS16(tmp+27); + xf86DrvMsg(0, X_INFO, "Panel Size from BIOS: %dx%d\n", + radeon_output->PanelXRes, radeon_output->PanelYRes); +- ++ + radeon_output->PanelPwrDly = RADEON_BIOS16(tmp+44); + if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) + radeon_output->PanelPwrDly = 2000; +@@ -1118,6 +1155,50 @@ Bool RADEONGetTMDSInfoFromBIOS (xf86OutputPtr output) + return FALSE; + } + ++static RADEONI2CBusRec ++RADEONLookupI2CBlock(ScrnInfoPtr pScrn, int id) ++{ ++ RADEONInfoPtr info = RADEONPTR (pScrn); ++ int offset, blocks, i; ++ RADEONI2CBusRec i2c; ++ ++ memset(&i2c, 0, sizeof(RADEONI2CBusRec)); ++ i2c.valid = FALSE; ++ ++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x70); ++ if (offset) { ++ blocks = RADEON_BIOS8(offset + 2); ++ for (i = 0; i < blocks; i++) { ++ int i2c_id = RADEON_BIOS8(offset + 3 + (i * 5) + 0); ++ if (id == i2c_id) { ++ int reg = RADEON_BIOS16(offset + 3 + (i * 5) + 1) * 4; ++ int clock_shift = RADEON_BIOS8(offset + 3 + (i * 5) + 3); ++ int data_shift = RADEON_BIOS8(offset + 3 + (i * 5) + 4); ++ ++ i2c.mask_clk_mask = (1 << clock_shift); ++ i2c.mask_data_mask = (1 << data_shift); ++ i2c.a_clk_mask = (1 << clock_shift); ++ i2c.a_data_mask = (1 << data_shift); ++ i2c.put_clk_mask = (1 << clock_shift); ++ i2c.put_data_mask = (1 << data_shift); ++ i2c.get_clk_mask = (1 << clock_shift); ++ i2c.get_data_mask = (1 << data_shift); ++ i2c.mask_clk_reg = reg; ++ i2c.mask_data_reg = reg; ++ i2c.a_clk_reg = reg; ++ i2c.a_data_reg = reg; ++ i2c.put_clk_reg = reg; ++ i2c.put_data_reg = reg; ++ i2c.get_clk_reg = reg; ++ i2c.get_data_reg = reg; ++ i2c.valid = TRUE; ++ break; ++ } ++ } ++ } ++ return i2c; ++} ++ + Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output) + { + ScrnInfoPtr pScrn = output->scrn; +@@ -1129,6 +1210,52 @@ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output) + + if (info->IsAtomBios) { + return FALSE; ++ } else if (info->IsIGP) { ++ /* RS4xx TMDS stuff is in the mobile table */ ++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x42); ++ if (offset) { ++ int rev = RADEON_BIOS8(offset); ++ if (rev >= 6) { ++ offset = RADEON_BIOS16(offset + 0x17); ++ if (offset) { ++ offset = RADEON_BIOS16(offset + 2); ++ rev = RADEON_BIOS8(offset); ++ if (offset && (rev > 1)) { ++ int blocks = RADEON_BIOS8(offset + 3); ++ int index = offset + 4; ++ radeon_output->dvo_i2c.valid = FALSE; ++ while (blocks > 0) { ++ int id = RADEON_BIOS16(index); ++ index += 2; ++ switch (id >> 13) { ++ case 0: ++ index += 6; ++ break; ++ case 2: ++ index += 10; ++ break; ++ case 3: ++ index += 2; ++ break; ++ case 4: ++ index += 2; ++ break; ++ case 6: ++ radeon_output->dvo_i2c_slave_addr = ++ RADEON_BIOS16(index) & 0xff; ++ index += 2; ++ radeon_output->dvo_i2c = ++ RADEONLookupI2CBlock(pScrn, RADEON_BIOS8(index)); ++ return TRUE; ++ default: ++ break; ++ } ++ blocks--; ++ } ++ } ++ } ++ } ++ } + } else { + offset = RADEON_BIOS16(info->ROMHeaderStart + 0x58); + if (offset) { +@@ -1148,10 +1275,11 @@ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output) + radeon_output->dvo_i2c = legacy_setup_i2c_bus(RADEON_GPIO_VGA_DDC); + else if (gpio_reg == 4) + radeon_output->dvo_i2c = legacy_setup_i2c_bus(RADEON_GPIO_CRT2_DDC); +- else if (gpio_reg == 5) ++ else if (gpio_reg == 5) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "unsupported MM gpio_reg\n"); +- else { ++ return FALSE; ++ } else { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Unknown gpio reg: %d\n", gpio_reg); + return FALSE; +@@ -1179,12 +1307,82 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output) + unsigned char *RADEONMMIO = info->MMIO; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + int offset, index, id; +- uint32_t val, reg, andmask, ormask; ++ uint32_t val, reg, and_mask, or_mask; + + if (!info->VBIOS) return FALSE; + + if (info->IsAtomBios) { + return FALSE; ++ } else if (info->IsIGP) { ++ /* RS4xx TMDS stuff is in the mobile table */ ++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x42); ++ if (offset) { ++ int rev = RADEON_BIOS8(offset); ++ if (rev >= 6) { ++ offset = RADEON_BIOS16(offset + 0x17); ++ if (offset) { ++ offset = RADEON_BIOS16(offset + 2); ++ rev = RADEON_BIOS8(offset); ++ if (offset && (rev > 1)) { ++ int blocks = RADEON_BIOS8(offset + 3); ++ index = offset + 4; ++ while (blocks > 0) { ++ id = RADEON_BIOS16(index); ++ index += 2; ++ switch (id >> 13) { ++ case 0: ++ reg = (id & 0x1fff) * 4; ++ val = RADEON_BIOS32(index); ++ index += 4; ++ ErrorF("MMIO: 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)val); ++ OUTREG(reg, val); ++ break; ++ case 2: ++ reg = (id & 0x1fff) * 4; ++ and_mask = RADEON_BIOS32(index); ++ index += 4; ++ or_mask = RADEON_BIOS32(index); ++ index += 4; ++ ErrorF("MMIO mask: 0x%x 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask); ++ val = INREG(reg); ++ val = (val & and_mask) | or_mask; ++ OUTREG(reg, val); ++ break; ++ case 3: ++ val = RADEON_BIOS16(index); ++ index += 2; ++ ErrorF("delay: %u\n", (unsigned)val); ++ usleep(val); ++ break; ++ case 4: ++ val = RADEON_BIOS16(index); ++ index += 2; ++ ErrorF("delay: %u\n", (unsigned)val * 1000); ++ usleep(val * 1000); ++ break; ++ case 6: ++ index++; ++ reg = RADEON_BIOS8(index); ++ index++; ++ val = RADEON_BIOS8(index); ++ index++; ++ ErrorF("i2c write: 0x%x, 0x%x\n", (unsigned)reg, ++ (unsigned)val); ++ RADEONDVOWriteByte(radeon_output->DVOChip, reg, val); ++ break; ++ default: ++ ErrorF("unknown id %d\n", id>>13); ++ return FALSE; ++ } ++ blocks--; ++ } ++ return TRUE; ++ } ++ } ++ } ++ } + } else { + offset = RADEON_BIOS16(info->ROMHeaderStart + 0x58); + if (offset) { +@@ -1194,24 +1392,24 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output) + index += 2; + switch(id >> 13) { + case 0: +- reg = id & 0x1fff; ++ reg = (id & 0x1fff) * 4; + val = RADEON_BIOS32(index); + index += 4; +- ErrorF("WRITE INDEXED: 0x%x 0x%x\n", ++ ErrorF("MMIO: 0x%x 0x%x\n", + (unsigned)reg, (unsigned)val); +- /*OUTREG(reg, val);*/ ++ OUTREG(reg, val); + break; + case 2: +- reg = id & 0x1fff; +- andmask = RADEON_BIOS32(index); ++ reg = (id & 0x1fff) * 4; ++ and_mask = RADEON_BIOS32(index); + index += 4; +- ormask = RADEON_BIOS32(index); ++ or_mask = RADEON_BIOS32(index); + index += 4; + val = INREG(reg); +- val = (val & andmask) | ormask; +- ErrorF("MASK DIRECT: 0x%x 0x%x 0x%x\n", +- (unsigned)reg, (unsigned)andmask, (unsigned)ormask); +- /*OUTREG(reg, val);*/ ++ val = (val & and_mask) | or_mask; ++ ErrorF("MMIO mask: 0x%x 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask); ++ OUTREG(reg, val); + break; + case 4: + val = RADEON_BIOS16(index); +@@ -1221,15 +1419,15 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output) + break; + case 5: + reg = id & 0x1fff; +- andmask = RADEON_BIOS32(index); ++ and_mask = RADEON_BIOS32(index); + index += 4; +- ormask = RADEON_BIOS32(index); ++ or_mask = RADEON_BIOS32(index); + index += 4; +- ErrorF("MASK PLL: 0x%x 0x%x 0x%x\n", +- (unsigned)reg, (unsigned)andmask, (unsigned)ormask); +- /*val = INPLL(pScrn, reg); +- val = (val & andmask) | ormask; +- OUTPLL(pScrn, reg, val);*/ ++ ErrorF("PLL mask: 0x%x 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask); ++ val = INPLL(pScrn, reg); ++ val = (val & and_mask) | or_mask; ++ OUTPLL(pScrn, reg, val); + break; + case 6: + reg = id & 0x1fff; +diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h +index ed3174a..daaf717 100644 +--- a/src/radeon_chipinfo_gen.h ++++ b/src/radeon_chipinfo_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + RADEONCardInfo RADEONCards[] = { + { 0x3150, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 }, ++ { 0x3151, CHIP_FAMILY_RV380, 0, 0, 0, 0, 0 }, + { 0x3152, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 }, + { 0x3154, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 }, + { 0x3E50, CHIP_FAMILY_RV380, 0, 0, 0, 0, 0 }, +@@ -250,6 +251,9 @@ RADEONCardInfo RADEONCards[] = { + { 0x940A, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 }, + { 0x940B, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 }, + { 0x940F, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 }, ++ { 0x9440, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, ++ { 0x9441, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, ++ { 0x9442, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x94C0, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, + { 0x94C1, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, + { 0x94C3, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, +@@ -267,6 +271,7 @@ RADEONCardInfo RADEONCards[] = { + { 0x9507, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x950F, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x9511, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, ++ { 0x9515, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x9580, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 }, + { 0x9581, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 }, + { 0x9583, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 }, +diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h +index d1761d2..79b094a 100644 +--- a/src/radeon_chipset_gen.h ++++ b/src/radeon_chipset_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + static SymTabRec RADEONChipsets[] = { + { PCI_CHIP_RV380_3150, "ATI Radeon Mobility X600 (M24) 3150 (PCIE)" }, ++ { PCI_CHIP_RV380_3151, "ATI FireMV 2400 (PCI)" }, + { PCI_CHIP_RV380_3152, "ATI Radeon Mobility X300 (M24) 3152 (PCIE)" }, + { PCI_CHIP_RV380_3154, "ATI FireGL M24 GL 3154 (PCIE)" }, + { PCI_CHIP_RV380_3E50, "ATI Radeon X600 (RV380) 3E50 (PCIE)" }, +@@ -250,6 +251,9 @@ static SymTabRec RADEONChipsets[] = { + { PCI_CHIP_R600_940A, "ATI FireGL V8650" }, + { PCI_CHIP_R600_940B, "ATI FireGL V8600" }, + { PCI_CHIP_R600_940F, "ATI FireGL V7600" }, ++ { PCI_CHIP_RV770_9440, "ATI Radeon 4800 Series" }, ++ { PCI_CHIP_RV770_9441, "ATI Radeon HD 4870 x2" }, ++ { PCI_CHIP_RV770_9442, "ATI Radeon 4800 Series" }, + { PCI_CHIP_RV610_94C0, "ATI RV610" }, + { PCI_CHIP_RV610_94C1, "ATI Radeon HD 2400 XT" }, + { PCI_CHIP_RV610_94C3, "ATI Radeon HD 2400 Pro" }, +@@ -267,6 +271,7 @@ static SymTabRec RADEONChipsets[] = { + { PCI_CHIP_RV670_9507, "ATI RV670" }, + { PCI_CHIP_RV670_950F, "ATI Radeon HD3870 X2" }, + { PCI_CHIP_RV670_9511, "ATI FireGL V7700" }, ++ { PCI_CHIP_RV670_9515, "ATI Radeon HD3850" }, + { PCI_CHIP_RV630_9580, "ATI RV630" }, + { PCI_CHIP_RV630_9581, "ATI Mobility Radeon HD 2600" }, + { PCI_CHIP_RV630_9583, "ATI Mobility Radeon HD 2600 XT" }, +diff --git a/src/radeon_common.h b/src/radeon_common.h +deleted file mode 100644 +index 193c1f9..0000000 +--- a/src/radeon_common.h ++++ /dev/null +@@ -1,496 +0,0 @@ +-/* radeon_common.h -- common header definitions for Radeon 2D/3D/DRM suite +- * +- * Copyright 2000 VA Linux Systems, Inc., Fremont, California. +- * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. +- * All Rights Reserved. +- * +- * Permission is hereby granted, free of charge, to any person obtaining a +- * copy of this software and associated documentation files (the "Software"), +- * to deal in the Software without restriction, including without limitation +- * the rights to use, copy, modify, merge, publish, distribute, sublicense, +- * and/or sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the next +- * paragraph) shall be included in all copies or substantial portions of the +- * Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +- * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- * +- * Author: +- * Gareth Hughes +- * Kevin E. Martin +- * Keith Whitwell +- * +- * Converted to common header format: +- * Jens Owen +- * +- */ +- +-#ifndef _RADEON_COMMON_H_ +-#define _RADEON_COMMON_H_ +- +-#include +-#include "xf86drm.h" +- +-/* WARNING: If you change any of these defines, make sure to change +- * the kernel include file as well (radeon_drm.h) +- */ +- +-/* Driver specific DRM command indices +- * NOTE: these are not OS specific, but they are driver specific +- */ +-#define DRM_RADEON_CP_INIT 0x00 +-#define DRM_RADEON_CP_START 0x01 +-#define DRM_RADEON_CP_STOP 0x02 +-#define DRM_RADEON_CP_RESET 0x03 +-#define DRM_RADEON_CP_IDLE 0x04 +-#define DRM_RADEON_RESET 0x05 +-#define DRM_RADEON_FULLSCREEN 0x06 +-#define DRM_RADEON_SWAP 0x07 +-#define DRM_RADEON_CLEAR 0x08 +-#define DRM_RADEON_VERTEX 0x09 +-#define DRM_RADEON_INDICES 0x0a +-#define DRM_RADEON_STIPPLE 0x0c +-#define DRM_RADEON_INDIRECT 0x0d +-#define DRM_RADEON_TEXTURE 0x0e +-#define DRM_RADEON_VERTEX2 0x0f +-#define DRM_RADEON_CMDBUF 0x10 +-#define DRM_RADEON_GETPARAM 0x11 +-#define DRM_RADEON_FLIP 0x12 +-#define DRM_RADEON_ALLOC 0x13 +-#define DRM_RADEON_FREE 0x14 +-#define DRM_RADEON_INIT_HEAP 0x15 +-#define DRM_RADEON_IRQ_EMIT 0x16 +-#define DRM_RADEON_IRQ_WAIT 0x17 +-#define DRM_RADEON_CP_RESUME 0x18 +-#define DRM_RADEON_SETPARAM 0x19 +-#define DRM_RADEON_SURF_ALLOC 0x1a +-#define DRM_RADEON_SURF_FREE 0x1b +-#define DRM_RADEON_MAX_DRM_COMMAND_INDEX 0x39 +- +- +-#define RADEON_FRONT 0x1 +-#define RADEON_BACK 0x2 +-#define RADEON_DEPTH 0x4 +-#define RADEON_STENCIL 0x8 +- +-#define RADEON_CLEAR_X1 0 +-#define RADEON_CLEAR_Y1 1 +-#define RADEON_CLEAR_X2 2 +-#define RADEON_CLEAR_Y2 3 +-#define RADEON_CLEAR_DEPTH 4 +- +- +-typedef struct { +- enum { +- DRM_RADEON_INIT_CP = 0x01, +- DRM_RADEON_CLEANUP_CP = 0x02, +- DRM_RADEON_INIT_R200_CP = 0x03, +- DRM_RADEON_INIT_R300_CP = 0x04 +- } func; +- unsigned long sarea_priv_offset; +- int is_pci; +- int cp_mode; +- int gart_size; +- int ring_size; +- int usec_timeout; +- +- unsigned int fb_bpp; +- unsigned int front_offset, front_pitch; +- unsigned int back_offset, back_pitch; +- unsigned int depth_bpp; +- unsigned int depth_offset, depth_pitch; +- +- unsigned long fb_offset; +- unsigned long mmio_offset; +- unsigned long ring_offset; +- unsigned long ring_rptr_offset; +- unsigned long buffers_offset; +- unsigned long gart_textures_offset; +-} drmRadeonInit; +- +-typedef struct { +- int flush; +- int idle; +-} drmRadeonCPStop; +- +-typedef struct { +- int idx; +- int start; +- int end; +- int discard; +-} drmRadeonIndirect; +- +-typedef union drmRadeonClearR { +- float f[5]; +- unsigned int ui[5]; +-} drmRadeonClearRect; +- +-typedef struct drmRadeonClearT { +- unsigned int flags; +- unsigned int clear_color; +- unsigned int clear_depth; +- unsigned int color_mask; +- unsigned int depth_mask; /* misnamed field: should be stencil */ +- drmRadeonClearRect *depth_boxes; +-} drmRadeonClearType; +- +-typedef struct drmRadeonFullscreenT { +- enum { +- RADEON_INIT_FULLSCREEN = 0x01, +- RADEON_CLEANUP_FULLSCREEN = 0x02 +- } func; +-} drmRadeonFullscreenType; +- +-typedef struct { +- unsigned int *mask; +-} drmRadeonStipple; +- +-typedef struct { +- unsigned int x; +- unsigned int y; +- unsigned int width; +- unsigned int height; +- const void *data; +-} drmRadeonTexImage; +- +-typedef struct { +- unsigned int offset; +- int pitch; +- int format; +- int width; /* Texture image coordinates */ +- int height; +- drmRadeonTexImage *image; +-} drmRadeonTexture; +- +- +-#define RADEON_MAX_TEXTURE_UNITS 3 +- +-/* Layout matches drm_radeon_state_t in linux drm_radeon.h. +- */ +-typedef struct { +- struct { +- unsigned int pp_misc; /* 0x1c14 */ +- unsigned int pp_fog_color; +- unsigned int re_solid_color; +- unsigned int rb3d_blendcntl; +- unsigned int rb3d_depthoffset; +- unsigned int rb3d_depthpitch; +- unsigned int rb3d_zstencilcntl; +- unsigned int pp_cntl; /* 0x1c38 */ +- unsigned int rb3d_cntl; +- unsigned int rb3d_coloroffset; +- unsigned int re_width_height; +- unsigned int rb3d_colorpitch; +- } context; +- struct { +- unsigned int se_cntl; +- } setup1; +- struct { +- unsigned int se_coord_fmt; /* 0x1c50 */ +- } vertex; +- struct { +- unsigned int re_line_pattern; /* 0x1cd0 */ +- unsigned int re_line_state; +- unsigned int se_line_width; /* 0x1db8 */ +- } line; +- struct { +- unsigned int pp_lum_matrix; /* 0x1d00 */ +- unsigned int pp_rot_matrix_0; /* 0x1d58 */ +- unsigned int pp_rot_matrix_1; +- } bumpmap; +- struct { +- unsigned int rb3d_stencilrefmask; /* 0x1d7c */ +- unsigned int rb3d_ropcntl; +- unsigned int rb3d_planemask; +- } mask; +- struct { +- unsigned int se_vport_xscale; /* 0x1d98 */ +- unsigned int se_vport_xoffset; +- unsigned int se_vport_yscale; +- unsigned int se_vport_yoffset; +- unsigned int se_vport_zscale; +- unsigned int se_vport_zoffset; +- } viewport; +- struct { +- unsigned int se_cntl_status; /* 0x2140 */ +- } setup2; +- struct { +- unsigned int re_top_left; /*ignored*/ /* 0x26c0 */ +- unsigned int re_misc; +- } misc; +- struct { +- unsigned int pp_txfilter; +- unsigned int pp_txformat; +- unsigned int pp_txoffset; +- unsigned int pp_txcblend; +- unsigned int pp_txablend; +- unsigned int pp_tfactor; +- unsigned int pp_border_color; +- } texture[RADEON_MAX_TEXTURE_UNITS]; +- struct { +- unsigned int se_zbias_factor; +- unsigned int se_zbias_constant; +- } zbias; +- unsigned int dirty; +-} drmRadeonState; +- +-/* 1.1 vertex ioctl. Used in compatibility modes. +- */ +-typedef struct { +- int prim; +- int idx; /* Index of vertex buffer */ +- int count; /* Number of vertices in buffer */ +- int discard; /* Client finished with buffer? */ +-} drmRadeonVertex; +- +-typedef struct { +- unsigned int start; +- unsigned int finish; +- unsigned int prim:8; +- unsigned int stateidx:8; +- unsigned int numverts:16; /* overloaded as offset/64 for elt prims */ +- unsigned int vc_format; +-} drmRadeonPrim; +- +-typedef struct { +- int idx; /* Index of vertex buffer */ +- int discard; /* Client finished with buffer? */ +- int nr_states; +- drmRadeonState *state; +- int nr_prims; +- drmRadeonPrim *prim; +-} drmRadeonVertex2; +- +-#define RADEON_MAX_STATES 16 +-#define RADEON_MAX_PRIMS 64 +- +-/* Command buffer. Replace with true dma stream? +- */ +-typedef struct { +- int bufsz; +- char *buf; +- int nbox; +- drm_clip_rect_t *boxes; +-} drmRadeonCmdBuffer; +- +-/* New style per-packet identifiers for use in cmd_buffer ioctl with +- * the RADEON_EMIT_PACKET command. Comments relate new packets to old +- * state bits and the packet size: +- */ +-#define RADEON_EMIT_PP_MISC 0 /* context/7 */ +-#define RADEON_EMIT_PP_CNTL 1 /* context/3 */ +-#define RADEON_EMIT_RB3D_COLORPITCH 2 /* context/1 */ +-#define RADEON_EMIT_RE_LINE_PATTERN 3 /* line/2 */ +-#define RADEON_EMIT_SE_LINE_WIDTH 4 /* line/1 */ +-#define RADEON_EMIT_PP_LUM_MATRIX 5 /* bumpmap/1 */ +-#define RADEON_EMIT_PP_ROT_MATRIX_0 6 /* bumpmap/2 */ +-#define RADEON_EMIT_RB3D_STENCILREFMASK 7 /* masks/3 */ +-#define RADEON_EMIT_SE_VPORT_XSCALE 8 /* viewport/6 */ +-#define RADEON_EMIT_SE_CNTL 9 /* setup/2 */ +-#define RADEON_EMIT_SE_CNTL_STATUS 10 /* setup/1 */ +-#define RADEON_EMIT_RE_MISC 11 /* misc/1 */ +-#define RADEON_EMIT_PP_TXFILTER_0 12 /* tex0/6 */ +-#define RADEON_EMIT_PP_BORDER_COLOR_0 13 /* tex0/1 */ +-#define RADEON_EMIT_PP_TXFILTER_1 14 /* tex1/6 */ +-#define RADEON_EMIT_PP_BORDER_COLOR_1 15 /* tex1/1 */ +-#define RADEON_EMIT_PP_TXFILTER_2 16 /* tex2/6 */ +-#define RADEON_EMIT_PP_BORDER_COLOR_2 17 /* tex2/1 */ +-#define RADEON_EMIT_SE_ZBIAS_FACTOR 18 /* zbias/2 */ +-#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19 /* tcl/11 */ +-#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20 /* material/17 */ +-#define R200_EMIT_PP_TXCBLEND_0 21 /* tex0/4 */ +-#define R200_EMIT_PP_TXCBLEND_1 22 /* tex1/4 */ +-#define R200_EMIT_PP_TXCBLEND_2 23 /* tex2/4 */ +-#define R200_EMIT_PP_TXCBLEND_3 24 /* tex3/4 */ +-#define R200_EMIT_PP_TXCBLEND_4 25 /* tex4/4 */ +-#define R200_EMIT_PP_TXCBLEND_5 26 /* tex5/4 */ +-#define R200_EMIT_PP_TXCBLEND_6 27 /* /4 */ +-#define R200_EMIT_PP_TXCBLEND_7 28 /* /4 */ +-#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29 /* tcl/6 */ +-#define R200_EMIT_TFACTOR_0 30 /* tf/6 */ +-#define R200_EMIT_VTX_FMT_0 31 /* vtx/4 */ +-#define R200_EMIT_VAP_CTL 32 /* vap/1 */ +-#define R200_EMIT_MATRIX_SELECT_0 33 /* msl/5 */ +-#define R200_EMIT_TEX_PROC_CTL_2 34 /* tcg/5 */ +-#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35 /* tcl/1 */ +-#define R200_EMIT_PP_TXFILTER_0 36 /* tex0/6 */ +-#define R200_EMIT_PP_TXFILTER_1 37 /* tex1/6 */ +-#define R200_EMIT_PP_TXFILTER_2 38 /* tex2/6 */ +-#define R200_EMIT_PP_TXFILTER_3 39 /* tex3/6 */ +-#define R200_EMIT_PP_TXFILTER_4 40 /* tex4/6 */ +-#define R200_EMIT_PP_TXFILTER_5 41 /* tex5/6 */ +-#define R200_EMIT_PP_TXOFFSET_0 42 /* tex0/1 */ +-#define R200_EMIT_PP_TXOFFSET_1 43 /* tex1/1 */ +-#define R200_EMIT_PP_TXOFFSET_2 44 /* tex2/1 */ +-#define R200_EMIT_PP_TXOFFSET_3 45 /* tex3/1 */ +-#define R200_EMIT_PP_TXOFFSET_4 46 /* tex4/1 */ +-#define R200_EMIT_PP_TXOFFSET_5 47 /* tex5/1 */ +-#define R200_EMIT_VTE_CNTL 48 /* vte/1 */ +-#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49 /* vtx/1 */ +-#define R200_EMIT_PP_TAM_DEBUG3 50 /* tam/1 */ +-#define R200_EMIT_PP_CNTL_X 51 /* cst/1 */ +-#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52 /* cst/1 */ +-#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53 /* cst/1 */ +-#define R200_EMIT_RE_SCISSOR_TL_0 54 /* cst/2 */ +-#define R200_EMIT_RE_SCISSOR_TL_1 55 /* cst/2 */ +-#define R200_EMIT_RE_SCISSOR_TL_2 56 /* cst/2 */ +-#define R200_EMIT_SE_VAP_CNTL_STATUS 57 /* cst/1 */ +-#define R200_EMIT_SE_VTX_STATE_CNTL 58 /* cst/1 */ +-#define R200_EMIT_RE_POINTSIZE 59 /* cst/1 */ +-#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60 /* cst/4 */ +-#define R200_EMIT_PP_CUBIC_FACES_0 61 +-#define R200_EMIT_PP_CUBIC_OFFSETS_0 62 +-#define R200_EMIT_PP_CUBIC_FACES_1 63 +-#define R200_EMIT_PP_CUBIC_OFFSETS_1 64 +-#define R200_EMIT_PP_CUBIC_FACES_2 65 +-#define R200_EMIT_PP_CUBIC_OFFSETS_2 66 +-#define R200_EMIT_PP_CUBIC_FACES_3 67 +-#define R200_EMIT_PP_CUBIC_OFFSETS_3 68 +-#define R200_EMIT_PP_CUBIC_FACES_4 69 +-#define R200_EMIT_PP_CUBIC_OFFSETS_4 70 +-#define R200_EMIT_PP_CUBIC_FACES_5 71 +-#define R200_EMIT_PP_CUBIC_OFFSETS_5 72 +-#define RADEON_EMIT_PP_TEX_SIZE_0 73 +-#define RADEON_EMIT_PP_TEX_SIZE_1 74 +-#define RADEON_EMIT_PP_TEX_SIZE_2 75 +-#define R200_EMIT_RB3D_BLENDCOLOR 76 +-#define RADEON_MAX_STATE_PACKETS 77 +- +- +-/* Commands understood by cmd_buffer ioctl. More can be added but +- * obviously these can't be removed or changed: +- */ +-#define RADEON_CMD_PACKET 1 /* emit one of the register packets above */ +-#define RADEON_CMD_SCALARS 2 /* emit scalar data */ +-#define RADEON_CMD_VECTORS 3 /* emit vector data */ +-#define RADEON_CMD_DMA_DISCARD 4 /* discard current dma buf */ +-#define RADEON_CMD_PACKET3 5 /* emit hw packet */ +-#define RADEON_CMD_PACKET3_CLIP 6 /* emit hw packet wrapped in cliprects */ +-#define RADEON_CMD_SCALARS2 7 /* R200 stopgap */ +-#define RADEON_CMD_WAIT 8 /* synchronization */ +- +-typedef union { +- int i; +- struct { +- unsigned char cmd_type, pad0, pad1, pad2; +- } header; +- struct { +- unsigned char cmd_type, packet_id, pad0, pad1; +- } packet; +- struct { +- unsigned char cmd_type, offset, stride, count; +- } scalars; +- struct { +- unsigned char cmd_type, offset, stride, count; +- } vectors; +- struct { +- unsigned char cmd_type, buf_idx, pad0, pad1; +- } dma; +- struct { +- unsigned char cmd_type, flags, pad0, pad1; +- } wait; +-} drmRadeonCmdHeader; +- +- +-#define RADEON_WAIT_2D 0x1 +-#define RADEON_WAIT_3D 0x2 +- +- +-/* 1.3: An ioctl to get parameters that aren't available to the 3d +- * client any other way. +- */ +-#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */ +-#define RADEON_PARAM_LAST_FRAME 2 +-#define RADEON_PARAM_LAST_DISPATCH 3 +-#define RADEON_PARAM_LAST_CLEAR 4 +-/* Added with DRM version 1.6. */ +-#define RADEON_PARAM_IRQ_NR 5 +-#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */ +-/* Added with DRM version 1.8. */ +-#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */ +-#define RADEON_PARAM_STATUS_HANDLE 8 +-#define RADEON_PARAM_SAREA_HANDLE 9 +-#define RADEON_PARAM_GART_TEX_HANDLE 10 +-#define RADEON_PARAM_SCRATCH_OFFSET 11 +-#define RADEON_PARAM_CARD_TYPE 12 +-#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ +-#define RADEON_PARAM_FB_LOCATION 14 /* FB location */ +-#define RADEON_PARAM_NUM_GB_PIPES 15 +- +-typedef struct drm_radeon_getparam { +- int param; +- int *value; +-} drmRadeonGetParam; +- +- +-#define RADEON_MEM_REGION_GART 1 +-#define RADEON_MEM_REGION_FB 2 +- +-typedef struct drm_radeon_mem_alloc { +- int region; +- int alignment; +- int size; +- int *region_offset; /* offset from start of fb or GART */ +-} drmRadeonMemAlloc; +- +-typedef struct drm_radeon_mem_free { +- int region; +- int region_offset; +-} drmRadeonMemFree; +- +-typedef struct drm_radeon_mem_init_heap { +- int region; +- int size; +- int start; +-} drmRadeonMemInitHeap; +- +-/* 1.6: Userspace can request & wait on irq's: +- */ +-typedef struct drm_radeon_irq_emit { +- int *irq_seq; +-} drmRadeonIrqEmit; +- +-typedef struct drm_radeon_irq_wait { +- int irq_seq; +-} drmRadeonIrqWait; +- +- +-/* 1.10: Clients tell the DRM where they think the framebuffer is located in +- * the card's address space, via a new generic ioctl to set parameters +- */ +- +-typedef struct drm_radeon_set_param { +- unsigned int param; +- int64_t value; +-} drmRadeonSetParam; +- +-#define RADEON_SETPARAM_FB_LOCATION 1 +-#define RADEON_SETPARAM_SWITCH_TILING 2 +-#define RADEON_SETPARAM_PCIGART_LOCATION 3 +-#define RADEON_SETPARAM_NEW_MEMMAP 4 +-#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 +-#define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */ +-/* 1.14: Clients can allocate/free a surface +- */ +-typedef struct drm_radeon_surface_alloc { +- unsigned int address; +- unsigned int size; +- unsigned int flags; +-} drmRadeonSurfaceAlloc; +- +-typedef struct drm_radeon_surface_free { +- unsigned int address; +-} drmRadeonSurfaceFree; +- +-#define DRM_RADEON_VBLANK_CRTC1 1 +-#define DRM_RADEON_VBLANK_CRTC2 2 +- +-#endif +diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c +index 58fe306..dba197e 100644 +--- a/src/radeon_commonfuncs.c ++++ b/src/radeon_commonfuncs.c +@@ -58,7 +58,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + uint32_t gb_tile_config, su_reg_dest, vap_cntl; + ACCEL_PREAMBLE(); + +- info->texW[0] = info->texH[0] = info->texW[1] = info->texH[1] = 1; ++ info->accel_state->texW[0] = info->accel_state->texH[0] = ++ info->accel_state->texW[1] = info->accel_state->texH[1] = 1; + + if (IS_R300_3D || IS_R500_3D) { + +@@ -70,7 +71,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + + gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16); + +- switch(info->num_gb_pipes) { ++ switch(info->accel_state->num_gb_pipes) { + case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break; + case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break; + case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break; +@@ -87,7 +88,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + FINISH_ACCEL(); + + if (IS_R500_3D) { +- su_reg_dest = ((1 << info->num_gb_pipes) - 1); ++ su_reg_dest = ((1 << info->accel_state->num_gb_pipes) - 1); + BEGIN_ACCEL(2); + OUT_ACCEL_REG(R500_SU_REG_DEST, su_reg_dest); + OUT_ACCEL_REG(R500_VAP_INDEX_OFFSET, 0); +@@ -146,7 +147,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + FINISH_ACCEL(); + + /* setup the VAP */ +- if (info->has_tcl) ++ if (info->accel_state->has_tcl) + vap_cntl = ((5 << R300_PVS_NUM_SLOTS_SHIFT) | + (5 << R300_PVS_NUM_CNTLRS_SHIFT) | + (9 << R300_VF_MAX_VTX_NUM_SHIFT)); +@@ -158,25 +159,26 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + if (info->ChipFamily == CHIP_FAMILY_RV515) + vap_cntl |= (2 << R300_PVS_NUM_FPUS_SHIFT); + else if ((info->ChipFamily == CHIP_FAMILY_RV530) || +- (info->ChipFamily == CHIP_FAMILY_RV560)) ++ (info->ChipFamily == CHIP_FAMILY_RV560) || ++ (info->ChipFamily == CHIP_FAMILY_RV570)) + vap_cntl |= (5 << R300_PVS_NUM_FPUS_SHIFT); +- else if (info->ChipFamily == CHIP_FAMILY_R420) ++ else if ((info->ChipFamily == CHIP_FAMILY_RV410) || ++ (info->ChipFamily == CHIP_FAMILY_R420)) + vap_cntl |= (6 << R300_PVS_NUM_FPUS_SHIFT); + else if ((info->ChipFamily == CHIP_FAMILY_R520) || +- (info->ChipFamily == CHIP_FAMILY_R580) || +- (info->ChipFamily == CHIP_FAMILY_RV570)) ++ (info->ChipFamily == CHIP_FAMILY_R580)) + vap_cntl |= (8 << R300_PVS_NUM_FPUS_SHIFT); + else + vap_cntl |= (4 << R300_PVS_NUM_FPUS_SHIFT); + +- if (info->has_tcl) ++ if (info->accel_state->has_tcl) + BEGIN_ACCEL(15); + else + BEGIN_ACCEL(9); + OUT_ACCEL_REG(R300_VAP_VTX_STATE_CNTL, 0); + OUT_ACCEL_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0); + +- if (info->has_tcl) ++ if (info->accel_state->has_tcl) + OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, 0); + else + OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, R300_PVS_BYPASS); +@@ -206,7 +208,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + ((R300_WRITE_ENA_X | R300_WRITE_ENA_Y | R300_WRITE_ENA_Z | R300_WRITE_ENA_W) + << R300_WRITE_ENA_2_SHIFT))); + +- if (info->has_tcl) { ++ if (info->accel_state->has_tcl) { + OUT_ACCEL_REG(R300_VAP_PVS_FLOW_CNTL_OPC, 0); + OUT_ACCEL_REG(R300_VAP_GB_VERT_CLIP_ADJ, 0x3f800000); + OUT_ACCEL_REG(R300_VAP_GB_VERT_DISC_ADJ, 0x3f800000); +@@ -217,8 +219,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + FINISH_ACCEL(); + + /* pre-load the vertex shaders */ +- if (info->has_tcl) { +- /* exa mask shader program */ ++ if (info->accel_state->has_tcl) { ++ /* exa mask/Xv bicubic shader program */ + BEGIN_ACCEL(13); + OUT_ACCEL_REG(R300_VAP_PVS_VECTOR_INDX_REG, 0); + /* PVS inst 0 */ +@@ -498,14 +500,14 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + if (IS_R300_3D) { + BEGIN_ACCEL(2); + /* tex inst for src texture */ +- OUT_ACCEL_REG(R300_US_TEX_INST_0, ++ OUT_ACCEL_REG(R300_US_TEX_INST(0), + (R300_TEX_SRC_ADDR(0) | + R300_TEX_DST_ADDR(0) | + R300_TEX_ID(0) | + R300_TEX_INST(R300_TEX_INST_LD))); + + /* tex inst for mask texture */ +- OUT_ACCEL_REG(R300_US_TEX_INST_1, ++ OUT_ACCEL_REG(R300_US_TEX_INST(1), + (R300_TEX_SRC_ADDR(1) | + R300_TEX_DST_ADDR(1) | + R300_TEX_ID(1) | +@@ -514,9 +516,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + } + + if (IS_R300_3D) { +- BEGIN_ACCEL(9); ++ BEGIN_ACCEL(8); + OUT_ACCEL_REG(R300_US_CONFIG, (0 << R300_NLEVEL_SHIFT) | R300_FIRST_TEX); +- OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + OUT_ACCEL_REG(R300_US_CODE_ADDR_0, + (R300_ALU_START(0) | + R300_ALU_SIZE(0) | +@@ -533,9 +534,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + R300_TEX_START(0) | + R300_TEX_SIZE(0))); + } else { +- BEGIN_ACCEL(7); ++ BEGIN_ACCEL(6); + OUT_ACCEL_REG(R300_US_CONFIG, R500_ZERO_TIMES_ANYTHING_EQUALS_ZERO); +- OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + OUT_ACCEL_REG(R500_US_FC_CTRL, 0); + } + OUT_ACCEL_REG(R300_US_W_FMT, 0); +@@ -687,14 +687,14 @@ void FUNC_NAME(RADEONWaitForIdle)(ScrnInfoPtr pScrn) + + #ifdef ACCEL_CP + /* Make sure the CP is idle first */ +- if (info->CPStarted) { ++ if (info->cp->CPStarted) { + int ret; + + FLUSH_RING(); + + for (;;) { + do { +- ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE); ++ ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_IDLE); + if (ret && ret != -EBUSY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP idle %d\n", __FUNCTION__, ret); +diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c +index c63b650..9040bae 100644 +--- a/src/radeon_crtc.c ++++ b/src/radeon_crtc.c +@@ -48,8 +48,7 @@ + + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #endif + +@@ -58,6 +57,14 @@ extern void atombios_crtc_mode_set(xf86CrtcPtr crtc, + DisplayModePtr adjusted_mode, + int x, int y); + extern void atombios_crtc_dpms(xf86CrtcPtr crtc, int mode); ++extern void ++RADEONInitDispBandwidthLegacy(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2); ++extern void ++RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2); + + void + radeon_crtc_dpms(xf86CrtcPtr crtc, int mode) +@@ -220,7 +227,12 @@ RADEONComputePLL(RADEONPLLPtr pll, + best_freq = current_freq; + best_error = error; + best_vco_diff = vco_diff; +- } else if ((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) { ++ } else if (((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) || ++ ((flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) || ++ ((flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) || ++ ((flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) || ++ ((flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) || ++ ((flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) { + best_post_div = post_div; + best_ref_div = ref_div; + best_feedback_div = feedback_div; +@@ -354,7 +366,7 @@ radeon_crtc_lock(xf86CrtcPtr crtc) + RADEONInfoPtr info = RADEONPTR(pScrn); + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) { ++ if (info->cp->CPStarted && pScrn->pScreen) { + DRILock(pScrn->pScreen, 0); + if (info->accelOn) + RADEON_SYNC(info, pScrn); +@@ -375,51 +387,13 @@ radeon_crtc_unlock(xf86CrtcPtr crtc) + RADEONInfoPtr info = RADEONPTR(pScrn); + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); ++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); + #endif + + if (info->accelOn) + RADEON_SYNC(info, pScrn); + } + +-#ifdef USE_XAA +-/** +- * Allocates memory from the XF86 linear allocator, but also purges +- * memory if possible to cause the allocation to succeed. +- */ +-static FBLinearPtr +-radeon_xf86AllocateOffscreenLinear(ScreenPtr pScreen, int length, +- int granularity, +- MoveLinearCallbackProcPtr moveCB, +- RemoveLinearCallbackProcPtr removeCB, +- pointer privData) +-{ +- FBLinearPtr linear; +- int max_size; +- +- linear = xf86AllocateOffscreenLinear(pScreen, length, granularity, moveCB, +- removeCB, privData); +- if (linear != NULL) +- return linear; +- +- /* The above allocation didn't succeed, so purge unlocked stuff and try +- * again. +- */ +- xf86QueryLargestOffscreenLinear(pScreen, &max_size, granularity, +- PRIORITY_EXTREME); +- +- if (max_size < length) +- return NULL; +- +- xf86PurgeUnlockedOffscreenAreas(pScreen); +- +- linear = xf86AllocateOffscreenLinear(pScreen, length, granularity, moveCB, +- removeCB, privData); +- +- return linear; +-} +-#endif +- + /** + * Allocates memory for a locked-in-framebuffer shadow of the given + * width and height for this CRTC's rotated shadow framebuffer. +@@ -429,8 +403,6 @@ static void * + radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height) + { + ScrnInfoPtr pScrn = crtc->scrn; +- /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ +- ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; + RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + unsigned long rotate_pitch; +@@ -441,49 +413,14 @@ radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height) + rotate_pitch = pScrn->displayWidth * cpp; + size = rotate_pitch * height; + +-#ifdef USE_EXA + /* We could get close to what we want here by just creating a pixmap like + * normal, but we have to lock it down in framebuffer, and there is no + * setter for offscreen area locking in EXA currently. So, we just + * allocate offscreen memory and fake up a pixmap header for it. + */ +- if (info->useEXA) { +- assert(radeon_crtc->rotate_mem_exa == NULL); +- +- radeon_crtc->rotate_mem_exa = exaOffscreenAlloc(pScreen, size, align, +- TRUE, NULL, NULL); +- if (radeon_crtc->rotate_mem_exa == NULL) { +- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +- "Couldn't allocate shadow memory for rotated CRTC\n"); +- return NULL; +- } +- rotate_offset = radeon_crtc->rotate_mem_exa->offset; +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- /* The XFree86 linear allocator operates in units of screen pixels, +- * sadly. +- */ +- size = (size + cpp - 1) / cpp; +- align = (align + cpp - 1) / cpp; +- +- assert(radeon_crtc->rotate_mem_xaa == NULL); +- +- radeon_crtc->rotate_mem_xaa = +- radeon_xf86AllocateOffscreenLinear(pScreen, size, align, +- NULL, NULL, NULL); +- if (radeon_crtc->rotate_mem_xaa == NULL) { +- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +- "Couldn't allocate shadow memory for rotated CRTC\n"); +- return NULL; +- } +-#ifdef XF86DRI +- rotate_offset = info->frontOffset + +- radeon_crtc->rotate_mem_xaa->offset * cpp; +-#endif +- } +-#endif /* USE_XAA */ ++ rotate_offset = radeon_legacy_allocate_memory(pScrn, &radeon_crtc->crtc_rotate_mem, size, align); ++ if (rotate_offset == 0) ++ return NULL; + + return info->FB + rotate_offset; + } +@@ -523,26 +460,16 @@ static void + radeon_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data) + { + ScrnInfoPtr pScrn = crtc->scrn; +- RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + + if (rotate_pixmap) + FreeScratchPixmapHeader(rotate_pixmap); +- ++ + if (data) { +-#ifdef USE_EXA +- if (info->useEXA && radeon_crtc->rotate_mem_exa != NULL) { +- exaOffscreenFree(pScrn->pScreen, radeon_crtc->rotate_mem_exa); +- radeon_crtc->rotate_mem_exa = NULL; +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- xf86FreeOffscreenLinear(radeon_crtc->rotate_mem_xaa); +- radeon_crtc->rotate_mem_xaa = NULL; +- } +-#endif /* USE_XAA */ ++ radeon_legacy_free_memory(pScrn, radeon_crtc->crtc_rotate_mem); ++ radeon_crtc->crtc_rotate_mem = NULL; + } ++ + } + + static const xf86CrtcFuncsRec radeon_crtc_funcs = { +@@ -567,6 +494,43 @@ static const xf86CrtcFuncsRec radeon_crtc_funcs = { + .destroy = NULL, /* XXX */ + }; + ++void ++RADEONInitDispBandwidth(ScrnInfoPtr pScrn) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); ++ DisplayModePtr mode1 = NULL, mode2 = NULL; ++ int pixel_bytes1 = info->CurrentLayout.pixel_bytes; ++ int pixel_bytes2 = info->CurrentLayout.pixel_bytes; ++ ++ if (xf86_config->num_crtc == 2) { ++ if (xf86_config->crtc[1]->enabled && ++ xf86_config->crtc[0]->enabled) { ++ mode1 = &xf86_config->crtc[0]->mode; ++ mode2 = &xf86_config->crtc[1]->mode; ++ } else if (xf86_config->crtc[0]->enabled) { ++ mode1 = &xf86_config->crtc[0]->mode; ++ } else if (xf86_config->crtc[1]->enabled) { ++ mode2 = &xf86_config->crtc[1]->mode; ++ } else ++ return; ++ } else { ++ if (info->IsPrimary) ++ mode1 = &xf86_config->crtc[0]->mode; ++ else if (info->IsSecondary) ++ mode2 = &xf86_config->crtc[0]->mode; ++ else if (xf86_config->crtc[0]->enabled) ++ mode1 = &xf86_config->crtc[0]->mode; ++ else ++ return; ++ } ++ ++ if (IS_AVIVO_VARIANT) ++ RADEONInitDispBandwidthAVIVO(pScrn, mode1, pixel_bytes1, mode2, pixel_bytes2); ++ else ++ RADEONInitDispBandwidthLegacy(pScrn, mode1, pixel_bytes1, mode2, pixel_bytes2); ++} ++ + Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask) + { + RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); +@@ -791,7 +755,7 @@ RADEONSetTiling(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled && (info->tilingEnabled != can_tile)) { +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (can_tile ? 1 : 0)) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed changing tiling status\n"); +diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c +index c4472db..08bfddf 100644 +--- a/src/radeon_cursor.c ++++ b/src/radeon_cursor.c +@@ -209,21 +209,23 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y) + if (xorigin >= CURSOR_WIDTH) xorigin = CURSOR_WIDTH - 1; + if (yorigin >= CURSOR_HEIGHT) yorigin = CURSOR_HEIGHT - 1; + +- if (mode->Flags & V_INTERLACE) +- y /= 2; +- else if (mode->Flags & V_DBLSCAN) +- y *= 2; +- + if (IS_AVIVO_VARIANT) { + /* avivo cursor spans the full fb width */ +- x += crtc->x; +- y += crtc->y; ++ if (crtc->rotatedData == NULL) { ++ x += crtc->x; ++ y += crtc->y; ++ } + avivo_lock_cursor(crtc, TRUE); + OUTREG(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, ((xorigin ? 0 : x) << 16) + | (yorigin ? 0 : y)); + OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); + avivo_lock_cursor(crtc, FALSE); + } else { ++ if (mode->Flags & V_INTERLACE) ++ y /= 2; ++ else if (mode->Flags & V_DBLSCAN) ++ y *= 2; ++ + if (crtc_id == 0) { + OUTREG(RADEON_CUR_HORZ_VERT_OFF, (RADEON_CUR_LOCK + | (xorigin << 16) +@@ -325,49 +327,32 @@ Bool RADEONCursorInit(ScreenPtr pScreen) + int width_bytes; + int height; + int size_bytes; +- uint32_t cursor_offset = 0; + int c; + + size_bytes = CURSOR_WIDTH * 4 * CURSOR_HEIGHT; + width = pScrn->displayWidth; + width_bytes = width * (pScrn->bitsPerPixel / 8); + height = ((size_bytes * xf86_config->num_crtc) + width_bytes - 1) / width_bytes; ++ int align = IS_AVIVO_VARIANT ? 4096 : 256; + +-#ifdef USE_XAA + if (!info->useEXA) { +- int align = IS_AVIVO_VARIANT ? 4096 : 256; +- FBAreaPtr fbarea; +- +- fbarea = xf86AllocateOffscreenArea(pScreen, width, height, +- align, NULL, NULL, NULL); +- +- if (!fbarea) { +- cursor_offset = 0; +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "Hardware cursor disabled" +- " due to insufficient offscreen memory\n"); +- return FALSE; +- } else { +- cursor_offset = RADEON_ALIGN((fbarea->box.x1 + +- fbarea->box.y1 * width) * +- info->CurrentLayout.pixel_bytes, +- align); +- +- for (c = 0; c < xf86_config->num_crtc; c++) { +- xf86CrtcPtr crtc = xf86_config->crtc[c]; +- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; +- +- radeon_crtc->cursor_offset = cursor_offset + (c * size_bytes); +- +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using hardware cursor %d (scanline %u)\n", c, +- (unsigned)(radeon_crtc->cursor_offset / pScrn->displayWidth +- / info->CurrentLayout.pixel_bytes)); +- } ++ for (c = 0; c < xf86_config->num_crtc; c++) { ++ xf86CrtcPtr crtc = xf86_config->crtc[c]; ++ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + ++ radeon_crtc->cursor_offset = ++ radeon_legacy_allocate_memory(pScrn, &radeon_crtc->cursor_mem, size_bytes, align); ++ ++ if (radeon_crtc->cursor_offset == 0) ++ return FALSE; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Will use %d kb for hardware cursor %d at offset 0x%08x\n", ++ (size_bytes * xf86_config->num_crtc) / 1024, ++ c, ++ (unsigned int)radeon_crtc->cursor_offset); + } + } +-#endif + + return xf86_cursors_init (pScreen, CURSOR_WIDTH, CURSOR_HEIGHT, + (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP | +diff --git a/src/radeon_dga.c b/src/radeon_dga.c +index d623fe4..6b0fabe 100644 +--- a/src/radeon_dga.c ++++ b/src/radeon_dga.c +@@ -47,6 +47,9 @@ + /* Driver data structures */ + #include "radeon.h" + #include "radeon_probe.h" ++#ifdef XF86DRI ++#include "radeon_drm.h" ++#endif + + /* X and server generic header files */ + #include "xf86.h" +@@ -126,12 +129,12 @@ SECOND_PASS: + } + #endif /* USE_EXA */ + #ifdef USE_XAA +- if (!info->useEXA && info->accel) { +- if (info->accel->SetupForSolidFill && +- info->accel->SubsequentSolidFillRect) ++ if (!info->useEXA && info->accel_state->accel) { ++ if (info->accel_state->accel->SetupForSolidFill && ++ info->accel_state->accel->SubsequentSolidFillRect) + currentMode->flags |= DGA_FILL_RECT; +- if (info->accel->SetupForScreenToScreenCopy && +- info->accel->SubsequentScreenToScreenCopy) ++ if (info->accel_state->accel->SetupForScreenToScreenCopy && ++ info->accel_state->accel->SubsequentScreenToScreenCopy) + currentMode->flags |= DGA_BLIT_RECT | DGA_BLIT_RECT_TRANS; + if (currentMode->flags & + (DGA_PIXMAP_AVAILABLE | DGA_FILL_RECT | +@@ -265,13 +268,13 @@ Bool RADEONDGAInit(ScreenPtr pScreen) + } + #endif /* USE_EXA */ + #ifdef USE_XAA +- if (!info->useEXA && info->accel) { +- info->DGAFuncs.Sync = info->accel->Sync; +- if (info->accel->SetupForSolidFill && +- info->accel->SubsequentSolidFillRect) ++ if (!info->useEXA && info->accel_state->accel) { ++ info->DGAFuncs.Sync = info->accel_state->accel->Sync; ++ if (info->accel_state->accel->SetupForSolidFill && ++ info->accel_state->accel->SubsequentSolidFillRect) + info->DGAFuncs.FillRect = RADEON_FillRect; +- if (info->accel->SetupForScreenToScreenCopy && +- info->accel->SubsequentScreenToScreenCopy) { ++ if (info->accel_state->accel->SetupForScreenToScreenCopy && ++ info->accel_state->accel->SubsequentScreenToScreenCopy) { + info->DGAFuncs.BlitRect = RADEON_BlitRect; + info->DGAFuncs.BlitTransRect = RADEON_BlitTransRect; + } +@@ -383,8 +386,8 @@ static void RADEON_FillRect(ScrnInfoPtr pScrn, + #endif /* USE_EXA */ + #ifdef USE_XAA + if (!info->useEXA) { +- (*info->accel->SetupForSolidFill)(pScrn, color, GXcopy, (uint32_t)(~0)); +- (*info->accel->SubsequentSolidFillRect)(pScrn, x, y, w, h); ++ (*info->accel_state->accel->SetupForSolidFill)(pScrn, color, GXcopy, (uint32_t)(~0)); ++ (*info->accel_state->accel->SubsequentSolidFillRect)(pScrn, x, y, w, h); + if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel) + RADEON_MARK_SYNC(info, pScrn); + } +@@ -413,10 +416,10 @@ static void RADEON_BlitRect(ScrnInfoPtr pScrn, + #endif /* USE_EXA */ + #ifdef USE_XAA + if (!info->useEXA) { +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, +- GXcopy, (uint32_t)(~0), -1); +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, +- dstx, dsty, w, h); ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, ++ GXcopy, (uint32_t)(~0), -1); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, ++ dstx, dsty, w, h); + if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel) + RADEON_MARK_SYNC(info, pScrn); + } +@@ -431,14 +434,14 @@ static void RADEON_BlitTransRect(ScrnInfoPtr pScrn, + int xdir = ((srcx < dstx) && (srcy == dsty)) ? -1 : 1; + int ydir = (srcy < dsty) ? -1 : 1; + +- info->XAAForceTransBlit = TRUE; +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, +- GXcopy, (uint32_t)(~0), color); ++ info->accel_state->XAAForceTransBlit = TRUE; ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, ++ GXcopy, (uint32_t)(~0), color); + +- info->XAAForceTransBlit = FALSE; ++ info->accel_state->XAAForceTransBlit = FALSE; + +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, +- dstx, dsty, w, h); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, ++ dstx, dsty, w, h); + + if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel) + RADEON_MARK_SYNC(info, pScrn); +diff --git a/src/radeon_dri.c b/src/radeon_dri.c +index 0fc03e4..5542d2b 100644 +--- a/src/radeon_dri.c ++++ b/src/radeon_dri.c +@@ -46,6 +46,7 @@ + #include "radeon_video.h" + #include "radeon_reg.h" + #include "radeon_macros.h" ++#include "radeon_drm.h" + #include "radeon_dri.h" + #include "radeon_version.h" + +@@ -58,10 +59,13 @@ + #define _XF86DRI_SERVER_ + #include "GL/glxtokens.h" + #include "sarea.h" +-#include "radeon_sarea.h" + + static size_t radeon_drm_page_size; + ++#define RADEON_MAX_DRAWABLES 256 ++ ++extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, ++ void **configprivs); + + static void RADEONDRITransitionTo2d(ScreenPtr pScreen); + static void RADEONDRITransitionTo3d(ScreenPtr pScreen); +@@ -92,7 +96,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + RADEONConfigPrivPtr *pRADEONConfigPtrs = 0; + int i, accum, stencil, db, use_db; + +- use_db = !info->noBackBuffer ? 1 : 0; ++ use_db = !info->dri->noBackBuffer ? 1 : 0; + + switch (info->CurrentLayout.pixel_code) { + case 8: /* 8bpp mode is not support */ +@@ -166,7 +170,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + pConfigs[i].doubleBuffer = FALSE; + pConfigs[i].stereo = FALSE; + pConfigs[i].bufferSize = 16; +- pConfigs[i].depthSize = info->depthBits; ++ pConfigs[i].depthSize = info->dri->depthBits; + if (pConfigs[i].depthSize == 24 ? (RADEON_USE_STENCIL - stencil) + : stencil) { + pConfigs[i].stencilSize = 8; +@@ -252,7 +256,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + pConfigs[i].doubleBuffer = FALSE; + pConfigs[i].stereo = FALSE; + pConfigs[i].bufferSize = 32; +- pConfigs[i].depthSize = info->depthBits; ++ pConfigs[i].depthSize = info->dri->depthBits; + if (pConfigs[i].depthSize == 24 ? (RADEON_USE_STENCIL - stencil) + : stencil) { + pConfigs[i].stencilSize = 8; +@@ -280,9 +284,9 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + break; + } + +- info->numVisualConfigs = numConfigs; +- info->pVisualConfigs = pConfigs; +- info->pVisualConfigsPriv = pRADEONConfigs; ++ info->dri->numVisualConfigs = numConfigs; ++ info->dri->pVisualConfigs = pConfigs; ++ info->dri->pVisualConfigsPriv = pRADEONConfigs; + GlxSetVisualConfigs(numConfigs, pConfigs, (void**)pRADEONConfigPtrs); + return TRUE; + } +@@ -300,8 +304,8 @@ static Bool RADEONCreateContext(ScreenPtr pScreen, VisualPtr visual, + ctx_info = (RADEONDRIContextPtr)contextStore; + if (!ctx_info) return FALSE; + +- if (drmAddMap(info->drmFD, 0, +- info->perctx_sarea_size, ++ if (drmAddMap(info->dri->drmFD, 0, ++ info->dri->perctx_sarea_size, + DRM_SHM, + DRM_REMOVABLE, + &ctx_info->sarea_handle) < 0) { +@@ -311,12 +315,12 @@ static Bool RADEONCreateContext(ScreenPtr pScreen, VisualPtr visual, + return FALSE; + } + +- if (drmAddContextPrivateMapping(info->drmFD, hwContext, ++ if (drmAddContextPrivateMapping(info->dri->drmFD, hwContext, + ctx_info->sarea_handle) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[dri] could not associate private sarea to ctx id (%d)\n", + (int)hwContext); +- drmRmMap(info->drmFD, ctx_info->sarea_handle); ++ drmRmMap(info->dri->drmFD, ctx_info->sarea_handle); + return FALSE; + } + +@@ -337,7 +341,7 @@ static void RADEONDestroyContext(ScreenPtr pScreen, drm_context_t hwContext, + ctx_info = (RADEONDRIContextPtr)contextStore; + if (!ctx_info) return; + +- if (drmRmMap(info->drmFD, ctx_info->sarea_handle) < 0) { ++ if (drmRmMap(info->dri->drmFD, ctx_info->sarea_handle) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[dri] could not remove private sarea for ctx id (%d)\n", + (int)hwContext); +@@ -356,29 +360,29 @@ static void RADEONEnterServer(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + + + RADEON_MARK_SYNC(info, pScrn); + + pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen); +- if (pSAREAPriv->ctxOwner != DRIGetContext(pScrn->pScreen)) { +- info->XInited3D = FALSE; +- info->needCacheFlush = (info->ChipFamily >= CHIP_FAMILY_R300); ++ if (pSAREAPriv->ctx_owner != DRIGetContext(pScrn->pScreen)) { ++ info->accel_state->XInited3D = FALSE; ++ info->cp->needCacheFlush = (info->ChipFamily >= CHIP_FAMILY_R300); + } + + #ifdef DAMAGE +- if (!info->pDamage && info->allowPageFlip) { ++ if (!info->dri->pDamage && info->dri->allowPageFlip) { + PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); +- info->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, +- pScreen, pPix); ++ info->dri->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, ++ pScreen, pPix); + +- if (info->pDamage == NULL) { ++ if (info->dri->pDamage == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "No screen damage record, page flipping disabled\n"); +- info->allowPageFlip = 0; ++ info->dri->allowPageFlip = 0; + } else { +- DamageRegister(&pPix->drawable, info->pDamage); ++ DamageRegister(&pPix->drawable, info->dri->pDamage); + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Damage tracking initialized for page flipping\n"); +@@ -401,8 +405,8 @@ static void RADEONLeaveServer(ScreenPtr pScreen) + RING_LOCALS; + + #ifdef DAMAGE +- if (info->pDamage) { +- RegionPtr pDamageReg = DamageRegion(info->pDamage); ++ if (info->dri->pDamage) { ++ RegionPtr pDamageReg = DamageRegion(info->dri->pDamage); + int nrects = pDamageReg ? REGION_NUM_RECTS(pDamageReg) : 0; + + if (nrects) { +@@ -417,7 +421,7 @@ static void RADEONLeaveServer(ScreenPtr pScreen) + RADEONCP_RELEASE(pScrn, info); + + #ifdef USE_EXA +- info->engineMode = EXA_ENGINEMODE_UNKNOWN; ++ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN; + #endif + } + +@@ -451,17 +455,17 @@ static void RADEONDRISwapContext(ScreenPtr pScreen, DRISyncType syncType, + + /* 16-bit depth buffer functions */ + #define WRITE_DEPTH16(_x, _y, d) \ +- *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->frontPitch)) = (d) ++ *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->dri->frontPitch)) = (d) + + #define READ_DEPTH16(d, _x, _y) \ +- (d) = *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->frontPitch)) ++ (d) = *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->dri->frontPitch)) + + /* 32-bit depth buffer (stencil and depth simultaneously) functions */ + #define WRITE_DEPTHSTENCIL32(_x, _y, d) \ +- *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->frontPitch)) = (d) ++ *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->dri->frontPitch)) = (d) + + #define READ_DEPTHSTENCIL32(d, _x, _y) \ +- (d) = *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->frontPitch)) ++ (d) = *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->dri->frontPitch)) + + /* Screen to screen copy of data in the depth buffer */ + static void RADEONScreenToScreenCopyDepth(ScrnInfoPtr pScrn, +@@ -470,7 +474,7 @@ static void RADEONScreenToScreenCopyDepth(ScrnInfoPtr pScrn, + int w, int h) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- unsigned char *buf = info->FB + info->depthOffset; ++ unsigned char *buf = info->FB + info->dri->depthOffset; + int xstart, xend, xdir; + int ystart, yend, ydir; + int x, y, d; +@@ -641,12 +645,12 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, + } + + /* pretty much a hack. */ +- info->dst_pitch_offset = info->backPitchOffset; ++ info->accel_state->dst_pitch_offset = info->dri->backPitchOffset; + if (info->tilingEnabled) +- info->dst_pitch_offset |= RADEON_DST_TILE_MACRO; ++ info->accel_state->dst_pitch_offset |= RADEON_DST_TILE_MACRO; + +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, GXcopy, +- (uint32_t)(-1), -1); ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, GXcopy, ++ (uint32_t)(-1), -1); + + for (; nbox-- ; pbox++) { + int xa = pbox->x1; +@@ -664,12 +668,12 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, + if (w <= 0) continue; + if (h <= 0) continue; + +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, +- xa, ya, +- destx, desty, +- w, h); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, ++ xa, ya, ++ destx, desty, ++ w, h); + +- if (info->depthMoves) { ++ if (info->dri->depthMoves) { + RADEONScreenToScreenCopyDepth(pScrn, + xa, ya, + destx, desty, +@@ -677,14 +681,14 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, + } + } + +- info->dst_pitch_offset = info->frontPitchOffset;; ++ info->accel_state->dst_pitch_offset = info->dri->frontPitchOffset;; + + xfree(pptNew2); + xfree(pboxNew2); + xfree(pptNew1); + xfree(pboxNew1); + +- info->accel->NeedToSync = TRUE; ++ info->accel_state->accel->NeedToSync = TRUE; + #endif /* USE_XAA */ + } + +@@ -692,36 +696,36 @@ static void RADEONDRIInitGARTValues(RADEONInfoPtr info) + { + int s, l; + +- info->gartOffset = 0; ++ info->dri->gartOffset = 0; + + /* Initialize the CP ring buffer data */ +- info->ringStart = info->gartOffset; +- info->ringMapSize = info->ringSize*1024*1024 + radeon_drm_page_size; +- info->ringSizeLog2QW = RADEONMinBits(info->ringSize*1024*1024/8)-1; ++ info->dri->ringStart = info->dri->gartOffset; ++ info->dri->ringMapSize = info->dri->ringSize*1024*1024 + radeon_drm_page_size; ++ info->dri->ringSizeLog2QW = RADEONMinBits(info->dri->ringSize*1024*1024/8)-1; + +- info->ringReadOffset = info->ringStart + info->ringMapSize; +- info->ringReadMapSize = radeon_drm_page_size; ++ info->dri->ringReadOffset = info->dri->ringStart + info->dri->ringMapSize; ++ info->dri->ringReadMapSize = radeon_drm_page_size; + + /* Reserve space for vertex/indirect buffers */ +- info->bufStart = info->ringReadOffset + info->ringReadMapSize; +- info->bufMapSize = info->bufSize*1024*1024; ++ info->dri->bufStart = info->dri->ringReadOffset + info->dri->ringReadMapSize; ++ info->dri->bufMapSize = info->dri->bufSize*1024*1024; + + /* Reserve the rest for GART textures */ +- info->gartTexStart = info->bufStart + info->bufMapSize; +- s = (info->gartSize*1024*1024 - info->gartTexStart); ++ info->dri->gartTexStart = info->dri->bufStart + info->dri->bufMapSize; ++ s = (info->dri->gartSize*1024*1024 - info->dri->gartTexStart); + l = RADEONMinBits((s-1) / RADEON_NR_TEX_REGIONS); + if (l < RADEON_LOG_TEX_GRANULARITY) l = RADEON_LOG_TEX_GRANULARITY; +- info->gartTexMapSize = (s >> l) << l; +- info->log2GARTTexGran = l; ++ info->dri->gartTexMapSize = (s >> l) << l; ++ info->dri->log2GARTTexGran = l; + } + + /* Set AGP transfer mode according to requests and constraints */ + static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + { + unsigned char *RADEONMMIO = info->MMIO; +- unsigned long mode = drmAgpGetMode(info->drmFD); /* Default mode */ +- unsigned int vendor = drmAgpVendorId(info->drmFD); +- unsigned int device = drmAgpDeviceId(info->drmFD); ++ unsigned long mode = drmAgpGetMode(info->dri->drmFD); /* Default mode */ ++ unsigned int vendor = drmAgpVendorId(info->dri->drmFD); ++ unsigned int device = drmAgpDeviceId(info->dri->drmFD); + /* ignore agp 3.0 mode bit from the chip as it's buggy on some cards with + pcie-agp rialto bridge chip - use the one from bridge which must match */ + uint32_t agp_status = (INREG(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode; +@@ -739,26 +743,26 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + + from = X_DEFAULT; + +- if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->agpMode)) { +- if ((info->agpMode < (is_v3 ? 4 : 1)) || +- (info->agpMode > (is_v3 ? 8 : 4)) || +- (info->agpMode & (info->agpMode - 1))) { ++ if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->dri->agpMode)) { ++ if ((info->dri->agpMode < (is_v3 ? 4 : 1)) || ++ (info->dri->agpMode > (is_v3 ? 8 : 4)) || ++ (info->dri->agpMode & (info->dri->agpMode - 1))) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "Illegal AGP Mode: %d (valid values: %s), leaving at " +- "%dx\n", info->agpMode, is_v3 ? "4, 8" : "1, 2, 4", ++ "%dx\n", info->dri->agpMode, is_v3 ? "4, 8" : "1, 2, 4", + defaultMode); +- info->agpMode = defaultMode; ++ info->dri->agpMode = defaultMode; + } else + from = X_CONFIG; + } else +- info->agpMode = defaultMode; ++ info->dri->agpMode = defaultMode; + +- xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->agpMode); ++ xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->dri->agpMode); + + mode &= ~RADEON_AGP_MODE_MASK; + if (is_v3) { + /* only set one mode bit for AGPv3 */ +- switch (info->agpMode) { ++ switch (info->dri->agpMode) { + case 8: mode |= RADEON_AGPv3_8X_MODE; break; + case 4: default: mode |= RADEON_AGPv3_4X_MODE; + } +@@ -766,7 +770,7 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + * currently these bits are not used in all tested cards. + */ + } else { +- switch (info->agpMode) { ++ switch (info->dri->agpMode) { + case 4: mode |= RADEON_AGP_4X_MODE; + case 2: mode |= RADEON_AGP_2X_MODE; + case 1: default: mode |= RADEON_AGP_1X_MODE; +@@ -800,9 +804,9 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + PCI_DEV_VENDOR_ID(info->PciInfo), + PCI_DEV_DEVICE_ID(info->PciInfo)); + +- if (drmAgpEnable(info->drmFD, mode) < 0) { ++ if (drmAgpEnable(info->dri->drmFD, mode) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n"); +- drmAgpRelease(info->drmFD); ++ drmAgpRelease(info->dri->drmFD); + return FALSE; + } + +@@ -829,15 +833,15 @@ static void RADEONSetAgpBase(RADEONInfoPtr info, ScreenPtr pScreen) + * agp_base_2 ? + */ + if (info->ChipFamily == CHIP_FAMILY_RV515) +- OUTMC(pScrn, RV515_MC_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTMC(pScrn, RV515_MC_AGP_BASE, drmAgpBase(info->dri->drmFD)); + else if ((info->ChipFamily >= CHIP_FAMILY_R520) && + (info->ChipFamily <= CHIP_FAMILY_RV570)) +- OUTMC(pScrn, R520_MC_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTMC(pScrn, R520_MC_AGP_BASE, drmAgpBase(info->dri->drmFD)); + else if ((info->ChipFamily == CHIP_FAMILY_RS690) || + (info->ChipFamily == CHIP_FAMILY_RS740)) +- OUTMC(pScrn, RS690_MC_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTMC(pScrn, RS690_MC_AGP_BASE, drmAgpBase(info->dri->drmFD)); + else if (info->ChipFamily < CHIP_FAMILY_RV515) +- OUTREG(RADEON_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTREG(RADEON_AGP_BASE, drmAgpBase(info->dri->drmFD)); + } + + /* Initialize the AGP state. Request memory for use in AGP space, and +@@ -847,7 +851,7 @@ static Bool RADEONDRIAgpInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + int ret; + +- if (drmAgpAcquire(info->drmFD) < 0) { ++ if (drmAgpAcquire(info->dri->drmFD) < 0) { + xf86DrvMsg(pScreen->myNum, X_WARNING, "[agp] AGP not available\n"); + return FALSE; + } +@@ -857,101 +861,101 @@ static Bool RADEONDRIAgpInit(RADEONInfoPtr info, ScreenPtr pScreen) + + RADEONDRIInitGARTValues(info); + +- if ((ret = drmAgpAlloc(info->drmFD, info->gartSize*1024*1024, 0, NULL, +- &info->agpMemHandle)) < 0) { ++ if ((ret = drmAgpAlloc(info->dri->drmFD, info->dri->gartSize*1024*1024, 0, NULL, ++ &info->dri->agpMemHandle)) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Out of memory (%d)\n", ret); +- drmAgpRelease(info->drmFD); ++ drmAgpRelease(info->dri->drmFD); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] %d kB allocated with handle 0x%08x\n", +- info->gartSize*1024, info->agpMemHandle); ++ info->dri->gartSize*1024, info->dri->agpMemHandle); + +- if (drmAgpBind(info->drmFD, +- info->agpMemHandle, info->gartOffset) < 0) { ++ if (drmAgpBind(info->dri->drmFD, ++ info->dri->agpMemHandle, info->dri->gartOffset) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Could not bind\n"); +- drmAgpFree(info->drmFD, info->agpMemHandle); +- drmAgpRelease(info->drmFD); ++ drmAgpFree(info->dri->drmFD, info->dri->agpMemHandle); ++ drmAgpRelease(info->dri->drmFD); + return FALSE; + } + +- if (drmAddMap(info->drmFD, info->ringStart, info->ringMapSize, +- DRM_AGP, DRM_READ_ONLY, &info->ringHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringStart, info->dri->ringMapSize, ++ DRM_AGP, DRM_READ_ONLY, &info->dri->ringHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add ring mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, +- "[agp] ring handle = 0x%08x\n", info->ringHandle); ++ "[agp] ring handle = 0x%08x\n", info->dri->ringHandle); + +- if (drmMap(info->drmFD, info->ringHandle, info->ringMapSize, +- &info->ring) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringHandle, info->dri->ringMapSize, ++ &info->dri->ring) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Could not map ring\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] Ring mapped at 0x%08lx\n", +- (unsigned long)info->ring); ++ (unsigned long)info->dri->ring); + +- if (drmAddMap(info->drmFD, info->ringReadOffset, info->ringReadMapSize, +- DRM_AGP, DRM_READ_ONLY, &info->ringReadPtrHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringReadOffset, info->dri->ringReadMapSize, ++ DRM_AGP, DRM_READ_ONLY, &info->dri->ringReadPtrHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add ring read ptr mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] ring read ptr handle = 0x%08x\n", +- info->ringReadPtrHandle); ++ info->dri->ringReadPtrHandle); + +- if (drmMap(info->drmFD, info->ringReadPtrHandle, info->ringReadMapSize, +- &info->ringReadPtr) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringReadPtrHandle, info->dri->ringReadMapSize, ++ &info->dri->ringReadPtr) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not map ring read ptr\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] Ring read ptr mapped at 0x%08lx\n", +- (unsigned long)info->ringReadPtr); ++ (unsigned long)info->dri->ringReadPtr); + +- if (drmAddMap(info->drmFD, info->bufStart, info->bufMapSize, +- DRM_AGP, 0, &info->bufHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->bufStart, info->dri->bufMapSize, ++ DRM_AGP, 0, &info->dri->bufHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add vertex/indirect buffers mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] vertex/indirect buffers handle = 0x%08x\n", +- info->bufHandle); ++ info->dri->bufHandle); + +- if (drmMap(info->drmFD, info->bufHandle, info->bufMapSize, +- &info->buf) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->bufHandle, info->dri->bufMapSize, ++ &info->dri->buf) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not map vertex/indirect buffers\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] Vertex/indirect buffers mapped at 0x%08lx\n", +- (unsigned long)info->buf); ++ (unsigned long)info->dri->buf); + +- if (drmAddMap(info->drmFD, info->gartTexStart, info->gartTexMapSize, +- DRM_AGP, 0, &info->gartTexHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->gartTexStart, info->dri->gartTexMapSize, ++ DRM_AGP, 0, &info->dri->gartTexHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add GART texture map mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] GART texture map handle = 0x%08x\n", +- info->gartTexHandle); ++ info->dri->gartTexHandle); + +- if (drmMap(info->drmFD, info->gartTexHandle, info->gartTexMapSize, +- &info->gartTex) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->gartTexHandle, info->dri->gartTexMapSize, ++ &info->dri->gartTex) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not map GART texture map\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] GART Texture map mapped at 0x%08lx\n", +- (unsigned long)info->gartTex); ++ (unsigned long)info->dri->gartTex); + + RADEONSetAgpBase(info, pScreen); + +@@ -966,104 +970,104 @@ static Bool RADEONDRIPciInit(RADEONInfoPtr info, ScreenPtr pScreen) + int ret; + int flags = DRM_READ_ONLY | DRM_LOCKED | DRM_KERNEL; + +- ret = drmScatterGatherAlloc(info->drmFD, info->gartSize*1024*1024, +- &info->pciMemHandle); ++ ret = drmScatterGatherAlloc(info->dri->drmFD, info->dri->gartSize*1024*1024, ++ &info->dri->pciMemHandle); + if (ret < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[pci] Out of memory (%d)\n", ret); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] %d kB allocated with handle 0x%08x\n", +- info->gartSize*1024, info->pciMemHandle); ++ info->dri->gartSize*1024, info->dri->pciMemHandle); + + RADEONDRIInitGARTValues(info); + +- if (drmAddMap(info->drmFD, info->ringStart, info->ringMapSize, +- DRM_SCATTER_GATHER, flags, &info->ringHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringStart, info->dri->ringMapSize, ++ DRM_SCATTER_GATHER, flags, &info->dri->ringHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add ring mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, +- "[pci] ring handle = 0x%08x\n", info->ringHandle); ++ "[pci] ring handle = 0x%08x\n", info->dri->ringHandle); + +- if (drmMap(info->drmFD, info->ringHandle, info->ringMapSize, +- &info->ring) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringHandle, info->dri->ringMapSize, ++ &info->dri->ring) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[pci] Could not map ring\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring mapped at 0x%08lx\n", +- (unsigned long)info->ring); ++ (unsigned long)info->dri->ring); + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring contents 0x%08lx\n", +- *(unsigned long *)(pointer)info->ring); ++ *(unsigned long *)(pointer)info->dri->ring); + +- if (drmAddMap(info->drmFD, info->ringReadOffset, info->ringReadMapSize, +- DRM_SCATTER_GATHER, flags, &info->ringReadPtrHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringReadOffset, info->dri->ringReadMapSize, ++ DRM_SCATTER_GATHER, flags, &info->dri->ringReadPtrHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add ring read ptr mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] ring read ptr handle = 0x%08x\n", +- info->ringReadPtrHandle); ++ info->dri->ringReadPtrHandle); + +- if (drmMap(info->drmFD, info->ringReadPtrHandle, info->ringReadMapSize, +- &info->ringReadPtr) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringReadPtrHandle, info->dri->ringReadMapSize, ++ &info->dri->ringReadPtr) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not map ring read ptr\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring read ptr mapped at 0x%08lx\n", +- (unsigned long)info->ringReadPtr); ++ (unsigned long)info->dri->ringReadPtr); + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring read ptr contents 0x%08lx\n", +- *(unsigned long *)(pointer)info->ringReadPtr); ++ *(unsigned long *)(pointer)info->dri->ringReadPtr); + +- if (drmAddMap(info->drmFD, info->bufStart, info->bufMapSize, +- DRM_SCATTER_GATHER, 0, &info->bufHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->bufStart, info->dri->bufMapSize, ++ DRM_SCATTER_GATHER, 0, &info->dri->bufHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add vertex/indirect buffers mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] vertex/indirect buffers handle = 0x%08x\n", +- info->bufHandle); ++ info->dri->bufHandle); + +- if (drmMap(info->drmFD, info->bufHandle, info->bufMapSize, +- &info->buf) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->bufHandle, info->dri->bufMapSize, ++ &info->dri->buf) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not map vertex/indirect buffers\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Vertex/indirect buffers mapped at 0x%08lx\n", +- (unsigned long)info->buf); ++ (unsigned long)info->dri->buf); + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Vertex/indirect buffers contents 0x%08lx\n", +- *(unsigned long *)(pointer)info->buf); ++ *(unsigned long *)(pointer)info->dri->buf); + +- if (drmAddMap(info->drmFD, info->gartTexStart, info->gartTexMapSize, +- DRM_SCATTER_GATHER, 0, &info->gartTexHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->gartTexStart, info->dri->gartTexMapSize, ++ DRM_SCATTER_GATHER, 0, &info->dri->gartTexHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add GART texture map mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] GART texture map handle = 0x%08x\n", +- info->gartTexHandle); ++ info->dri->gartTexHandle); + +- if (drmMap(info->drmFD, info->gartTexHandle, info->gartTexMapSize, +- &info->gartTex) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->gartTexHandle, info->dri->gartTexMapSize, ++ &info->dri->gartTex) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not map GART texture map\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] GART Texture map mapped at 0x%08lx\n", +- (unsigned long)info->gartTex); ++ (unsigned long)info->dri->gartTex); + + return TRUE; + } +@@ -1074,13 +1078,13 @@ static Bool RADEONDRIPciInit(RADEONInfoPtr info, ScreenPtr pScreen) + static Bool RADEONDRIMapInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + /* Map registers */ +- info->registerSize = info->MMIOSize; +- if (drmAddMap(info->drmFD, info->MMIOAddr, info->registerSize, +- DRM_REGISTERS, DRM_READ_ONLY, &info->registerHandle) < 0) { ++ info->dri->registerSize = info->MMIOSize; ++ if (drmAddMap(info->dri->drmFD, info->MMIOAddr, info->dri->registerSize, ++ DRM_REGISTERS, DRM_READ_ONLY, &info->dri->registerHandle) < 0) { + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, +- "[drm] register handle = 0x%08x\n", info->registerHandle); ++ "[drm] register handle = 0x%08x\n", info->dri->registerHandle); + + return TRUE; + } +@@ -1090,43 +1094,43 @@ static int RADEONDRIKernelInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + int cpp = info->CurrentLayout.pixel_bytes; +- drmRadeonInit drmInfo; ++ drm_radeon_init_t drmInfo; + +- memset(&drmInfo, 0, sizeof(drmRadeonInit)); ++ memset(&drmInfo, 0, sizeof(drm_radeon_init_t)); + if ( info->ChipFamily >= CHIP_FAMILY_R300 ) +- drmInfo.func = DRM_RADEON_INIT_R300_CP; ++ drmInfo.func = RADEON_INIT_R300_CP; + else + if ( info->ChipFamily >= CHIP_FAMILY_R200 ) +- drmInfo.func = DRM_RADEON_INIT_R200_CP; ++ drmInfo.func = RADEON_INIT_R200_CP; + else +- drmInfo.func = DRM_RADEON_INIT_CP; ++ drmInfo.func = RADEON_INIT_CP; + + drmInfo.sarea_priv_offset = sizeof(XF86DRISAREARec); + drmInfo.is_pci = (info->cardType!=CARD_AGP); +- drmInfo.cp_mode = info->CPMode; +- drmInfo.gart_size = info->gartSize*1024*1024; +- drmInfo.ring_size = info->ringSize*1024*1024; +- drmInfo.usec_timeout = info->CPusecTimeout; ++ drmInfo.cp_mode = RADEON_CSQ_PRIBM_INDBM; ++ drmInfo.gart_size = info->dri->gartSize*1024*1024; ++ drmInfo.ring_size = info->dri->ringSize*1024*1024; ++ drmInfo.usec_timeout = info->cp->CPusecTimeout; + + drmInfo.fb_bpp = info->CurrentLayout.pixel_code; +- drmInfo.depth_bpp = (info->depthBits - 8) * 2; +- +- drmInfo.front_offset = info->frontOffset; +- drmInfo.front_pitch = info->frontPitch * cpp; +- drmInfo.back_offset = info->backOffset; +- drmInfo.back_pitch = info->backPitch * cpp; +- drmInfo.depth_offset = info->depthOffset; +- drmInfo.depth_pitch = info->depthPitch * drmInfo.depth_bpp / 8; +- +- drmInfo.fb_offset = info->fbHandle; +- drmInfo.mmio_offset = info->registerHandle; +- drmInfo.ring_offset = info->ringHandle; +- drmInfo.ring_rptr_offset = info->ringReadPtrHandle; +- drmInfo.buffers_offset = info->bufHandle; +- drmInfo.gart_textures_offset= info->gartTexHandle; +- +- if (drmCommandWrite(info->drmFD, DRM_RADEON_CP_INIT, +- &drmInfo, sizeof(drmRadeonInit)) < 0) ++ drmInfo.depth_bpp = (info->dri->depthBits - 8) * 2; ++ ++ drmInfo.front_offset = info->dri->frontOffset; ++ drmInfo.front_pitch = info->dri->frontPitch * cpp; ++ drmInfo.back_offset = info->dri->backOffset; ++ drmInfo.back_pitch = info->dri->backPitch * cpp; ++ drmInfo.depth_offset = info->dri->depthOffset; ++ drmInfo.depth_pitch = info->dri->depthPitch * drmInfo.depth_bpp / 8; ++ ++ drmInfo.fb_offset = info->dri->fbHandle; ++ drmInfo.mmio_offset = info->dri->registerHandle; ++ drmInfo.ring_offset = info->dri->ringHandle; ++ drmInfo.ring_rptr_offset = info->dri->ringReadPtrHandle; ++ drmInfo.buffers_offset = info->dri->bufHandle; ++ drmInfo.gart_textures_offset= info->dri->gartTexHandle; ++ ++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_INIT, ++ &drmInfo, sizeof(drm_radeon_init_t)) < 0) + return FALSE; + + /* DRM_RADEON_CP_INIT does an engine reset, which resets some engine +@@ -1140,21 +1144,21 @@ static int RADEONDRIKernelInit(RADEONInfoPtr info, ScreenPtr pScreen) + + static void RADEONDRIGartHeapInit(RADEONInfoPtr info, ScreenPtr pScreen) + { +- drmRadeonMemInitHeap drmHeap; ++ drm_radeon_mem_init_heap_t drmHeap; + + /* Start up the simple memory manager for GART space */ + drmHeap.region = RADEON_MEM_REGION_GART; + drmHeap.start = 0; +- drmHeap.size = info->gartTexMapSize; ++ drmHeap.size = info->dri->gartTexMapSize; + +- if (drmCommandWrite(info->drmFD, DRM_RADEON_INIT_HEAP, ++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_INIT_HEAP, + &drmHeap, sizeof(drmHeap))) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] Failed to initialize GART heap manager\n"); + } else { + xf86DrvMsg(pScreen->myNum, X_INFO, + "[drm] Initialized kernel GART heap manager, %d\n", +- info->gartTexMapSize); ++ info->dri->gartTexMapSize); + } + } + +@@ -1164,29 +1168,29 @@ static void RADEONDRIGartHeapInit(RADEONInfoPtr info, ScreenPtr pScreen) + static Bool RADEONDRIBufInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + /* Initialize vertex buffers */ +- info->bufNumBufs = drmAddBufs(info->drmFD, +- info->bufMapSize / RADEON_BUFFER_SIZE, +- RADEON_BUFFER_SIZE, +- (info->cardType!=CARD_AGP) ? DRM_SG_BUFFER : DRM_AGP_BUFFER, +- info->bufStart); ++ info->dri->bufNumBufs = drmAddBufs(info->dri->drmFD, ++ info->dri->bufMapSize / RADEON_BUFFER_SIZE, ++ RADEON_BUFFER_SIZE, ++ (info->cardType!=CARD_AGP) ? DRM_SG_BUFFER : DRM_AGP_BUFFER, ++ info->dri->bufStart); + +- if (info->bufNumBufs <= 0) { ++ if (info->dri->bufNumBufs <= 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] Could not create vertex/indirect buffers list\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[drm] Added %d %d byte vertex/indirect buffers\n", +- info->bufNumBufs, RADEON_BUFFER_SIZE); ++ info->dri->bufNumBufs, RADEON_BUFFER_SIZE); + +- if (!(info->buffers = drmMapBufs(info->drmFD))) { ++ if (!(info->dri->buffers = drmMapBufs(info->dri->drmFD))) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] Failed to map vertex/indirect buffers list\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[drm] Mapped %d vertex/indirect buffers\n", +- info->buffers->count); ++ info->dri->buffers->count); + + return TRUE; + } +@@ -1195,29 +1199,35 @@ static void RADEONDRIIrqInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + +- if (!info->irq) { +- info->irq = drmGetInterruptFromBusID( +- info->drmFD, ++ if (!info->dri->irq) { ++ info->dri->irq = drmGetInterruptFromBusID( ++ info->dri->drmFD, + PCI_CFG_BUS(info->PciInfo), + PCI_CFG_DEV(info->PciInfo), + PCI_CFG_FUNC(info->PciInfo)); + +- if ((drmCtlInstHandler(info->drmFD, info->irq)) != 0) { ++ if ((drmCtlInstHandler(info->dri->drmFD, info->dri->irq)) != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[drm] failure adding irq handler, " + "there is a device already using that irq\n" + "[drm] falling back to irq-free operation\n"); +- info->irq = 0; ++ info->dri->irq = 0; + } else { + unsigned char *RADEONMMIO = info->MMIO; + info->ModeReg->gen_int_cntl = INREG( RADEON_GEN_INT_CNTL ); ++ ++ /* Let the DRM know it can safely disable the vblank interrupts */ ++ radeon_crtc_modeset_ioctl(XF86_CRTC_CONFIG_PTR(pScrn)->crtc[0], ++ FALSE); ++ radeon_crtc_modeset_ioctl(XF86_CRTC_CONFIG_PTR(pScrn)->crtc[0], ++ TRUE); + } + } + +- if (info->irq) ++ if (info->dri->irq) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[drm] dma control initialized, using IRQ %d\n", +- info->irq); ++ info->dri->irq); + } + + +@@ -1233,7 +1243,7 @@ static void RADEONDRICPInit(ScrnInfoPtr pScrn) + RADEONCP_START(pScrn, info); + #ifdef USE_XAA + if (!info->useEXA) +- info->dst_pitch_offset = info->frontPitchOffset; ++ info->accel_state->dst_pitch_offset = info->dri->frontPitchOffset; + #endif + } + +@@ -1274,16 +1284,16 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + + /* Check the lib version */ + if (xf86LoaderCheckSymbol("drmGetLibVersion")) +- info->pLibDRMVersion = drmGetLibVersion(info->drmFD); +- if (info->pLibDRMVersion == NULL) { ++ info->dri->pLibDRMVersion = drmGetLibVersion(info->dri->drmFD); ++ if (info->dri->pLibDRMVersion == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed because libDRM is really " + "way to old to even get a version number out of it.\n" + "[dri] Disabling DRI.\n"); + return FALSE; + } +- if (info->pLibDRMVersion->version_major != 1 || +- info->pLibDRMVersion->version_minor < 2) { ++ if (info->dri->pLibDRMVersion->version_major != 1 || ++ info->dri->pLibDRMVersion->version_minor < 2) { + /* incompatible drm library version */ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed because of a " +@@ -1291,11 +1301,11 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + "[dri] libdrm.a module version is %d.%d.%d but " + "version 1.2.x is needed.\n" + "[dri] Disabling DRI.\n", +- info->pLibDRMVersion->version_major, +- info->pLibDRMVersion->version_minor, +- info->pLibDRMVersion->version_patchlevel); +- drmFreeVersion(info->pLibDRMVersion); +- info->pLibDRMVersion = NULL; ++ info->dri->pLibDRMVersion->version_major, ++ info->dri->pLibDRMVersion->version_minor, ++ info->dri->pLibDRMVersion->version_patchlevel); ++ drmFreeVersion(info->dri->pLibDRMVersion); ++ info->dri->pLibDRMVersion = NULL; + return FALSE; + } + +@@ -1322,9 +1332,9 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + } + + /* Get DRM version & close DRM */ +- info->pKernelDRMVersion = drmGetVersion(fd); ++ info->dri->pKernelDRMVersion = drmGetVersion(fd); + drmClose(fd); +- if (info->pKernelDRMVersion == NULL) { ++ if (info->dri->pKernelDRMVersion == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed to get the DRM version\n" + "[dri] Disabling DRI.\n"); +@@ -1344,10 +1354,10 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + } + + /* We don't, bummer ! */ +- if (info->pKernelDRMVersion->version_major != 1 || +- info->pKernelDRMVersion->version_minor < req_minor || +- (info->pKernelDRMVersion->version_minor == req_minor && +- info->pKernelDRMVersion->version_patchlevel < req_patch)) { ++ if (info->dri->pKernelDRMVersion->version_major != 1 || ++ info->dri->pKernelDRMVersion->version_minor < req_minor || ++ (info->dri->pKernelDRMVersion->version_minor == req_minor && ++ info->dri->pKernelDRMVersion->version_patchlevel < req_patch)) { + /* Incompatible drm version */ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed because of a version " +@@ -1355,13 +1365,13 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + "[dri] radeon.o kernel module version is %d.%d.%d " + "but version 1.%d.%d or newer is needed.\n" + "[dri] Disabling DRI.\n", +- info->pKernelDRMVersion->version_major, +- info->pKernelDRMVersion->version_minor, +- info->pKernelDRMVersion->version_patchlevel, ++ info->dri->pKernelDRMVersion->version_major, ++ info->dri->pKernelDRMVersion->version_minor, ++ info->dri->pKernelDRMVersion->version_patchlevel, + req_minor, + req_patch); +- drmFreeVersion(info->pKernelDRMVersion); +- info->pKernelDRMVersion = NULL; ++ drmFreeVersion(info->dri->pKernelDRMVersion); ++ info->dri->pKernelDRMVersion = NULL; + return FALSE; + } + +@@ -1377,7 +1387,7 @@ Bool RADEONDRISetVBlankInterrupt(ScrnInfoPtr pScrn, Bool on) + if (!info->want_vblank_interrupts) + on = FALSE; + +- if (info->directRenderingEnabled && info->pKernelDRMVersion->version_minor >= 28) { ++ if (info->directRenderingEnabled && info->dri->pKernelDRMVersion->version_minor >= 28) { + if (on) { + if (xf86_config->num_crtc > 1 && xf86_config->crtc[1]->enabled) + value = DRM_RADEON_VBLANK_CRTC1 | DRM_RADEON_VBLANK_CRTC2; +@@ -1406,7 +1416,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + DRIInfoPtr pDRIInfo; + RADEONDRIPtr pRADEONDRI; + +- info->DRICloseScreen = NULL; ++ info->dri->DRICloseScreen = NULL; + + switch (info->CurrentLayout.pixel_code) { + case 8: +@@ -1432,7 +1442,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + */ + if (!(pDRIInfo = DRICreateInfoRec())) return FALSE; + +- info->pDRIInfo = pDRIInfo; ++ info->dri->pDRIInfo = pDRIInfo; + pDRIInfo->drmDriverName = RADEON_DRIVER_NAME; + + if ( (info->ChipFamily >= CHIP_FAMILY_R300) ) { +@@ -1453,11 +1463,10 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + PCI_DEV_DEV(info->PciInfo), + PCI_DEV_FUNC(info->PciInfo)); + } +- pDRIInfo->ddxDriverMajorVersion = info->allowColorTiling ? +- RADEON_VERSION_MAJOR_TILED : RADEON_VERSION_MAJOR; +- pDRIInfo->ddxDriverMinorVersion = RADEON_VERSION_MINOR; +- pDRIInfo->ddxDriverPatchVersion = RADEON_VERSION_PATCH; +- pDRIInfo->frameBufferPhysicalAddress = (void *)info->LinearAddr + info->frontOffset; ++ pDRIInfo->ddxDriverMajorVersion = info->allowColorTiling ? 5 : 4; ++ pDRIInfo->ddxDriverMinorVersion = 3; ++ pDRIInfo->ddxDriverPatchVersion = 0; ++ pDRIInfo->frameBufferPhysicalAddress = (void *)info->LinearAddr + info->dri->frontOffset; + pDRIInfo->frameBufferSize = info->FbMapSize - info->FbSecureSize; + pDRIInfo->frameBufferStride = (pScrn->displayWidth * + info->CurrentLayout.pixel_bytes); +@@ -1487,7 +1496,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + /* For now the mapping works by using a fixed size defined + * in the SAREA header + */ +- if (sizeof(XF86DRISAREARec)+sizeof(RADEONSAREAPriv) > SAREA_MAX) { ++ if (sizeof(XF86DRISAREARec)+sizeof(drm_radeon_sarea_t) > SAREA_MAX) { + ErrorF("Data does not fit in SAREA\n"); + return FALSE; + } +@@ -1495,8 +1504,8 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + #endif + + if (!(pRADEONDRI = (RADEONDRIPtr)xcalloc(sizeof(RADEONDRIRec),1))) { +- DRIDestroyInfoRec(info->pDRIInfo); +- info->pDRIInfo = NULL; ++ DRIDestroyInfoRec(info->dri->pDRIInfo); ++ info->dri->pDRIInfo = NULL; + return FALSE; + } + pDRIInfo->devPrivate = pRADEONDRI; +@@ -1538,7 +1547,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + } + #endif + +- if (!DRIScreenInit(pScreen, pDRIInfo, &info->drmFD)) { ++ if (!DRIScreenInit(pScreen, pDRIInfo, &info->dri->drmFD)) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[dri] DRIScreenInit failed. Disabling DRI.\n"); + xfree(pDRIInfo->devPrivate); +@@ -1581,7 +1590,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + void *scratch_ptr; + int scratch_int; + +- DRIGetDeviceInfo(pScreen, &info->fbHandle, ++ DRIGetDeviceInfo(pScreen, &info->dri->fbHandle, + &scratch_int, &scratch_int, + &scratch_int, &scratch_int, + &scratch_ptr); +@@ -1605,7 +1614,7 @@ static Bool RADEONDRIDoCloseScreen(int scrnIndex, ScreenPtr pScreen) + + RADEONDRICloseScreen(pScreen); + +- pScreen->CloseScreen = info->DRICloseScreen; ++ pScreen->CloseScreen = info->dri->DRICloseScreen; + return (*pScreen->CloseScreen)(scrnIndex, pScreen); + } + +@@ -1617,11 +1626,11 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + RADEONDRIPtr pRADEONDRI; + +- info->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; +- /* info->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; */ ++ info->dri->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; ++ /* info->dri->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; */ + + /* NOTE: DRIFinishScreenInit must be called before *DRIKernelInit + * because *DRIKernelInit requires that the hardware lock is held by +@@ -1655,10 +1664,10 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen) + RADEONDRICPInit(pScrn); + + /* Initialize the SAREA private data structure */ +- pSAREAPriv = (RADEONSAREAPrivPtr)DRIGetSAREAPrivate(pScreen); ++ pSAREAPriv = (drm_radeon_sarea_t*)DRIGetSAREAPrivate(pScreen); + memset(pSAREAPriv, 0, sizeof(*pSAREAPriv)); + +- pRADEONDRI = (RADEONDRIPtr)info->pDRIInfo->devPrivate; ++ pRADEONDRI = (RADEONDRIPtr)info->dri->pDRIInfo->devPrivate; + + pRADEONDRI->deviceID = info->Chipset; + pRADEONDRI->width = pScrn->virtualX; +@@ -1667,40 +1676,40 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen) + pRADEONDRI->bpp = pScrn->bitsPerPixel; + + pRADEONDRI->IsPCI = (info->cardType!=CARD_AGP); +- pRADEONDRI->AGPMode = info->agpMode; ++ pRADEONDRI->AGPMode = info->dri->agpMode; + +- pRADEONDRI->frontOffset = info->frontOffset; +- pRADEONDRI->frontPitch = info->frontPitch; +- pRADEONDRI->backOffset = info->backOffset; +- pRADEONDRI->backPitch = info->backPitch; +- pRADEONDRI->depthOffset = info->depthOffset; +- pRADEONDRI->depthPitch = info->depthPitch; +- pRADEONDRI->textureOffset = info->textureOffset; +- pRADEONDRI->textureSize = info->textureSize; +- pRADEONDRI->log2TexGran = info->log2TexGran; ++ pRADEONDRI->frontOffset = info->dri->frontOffset; ++ pRADEONDRI->frontPitch = info->dri->frontPitch; ++ pRADEONDRI->backOffset = info->dri->backOffset; ++ pRADEONDRI->backPitch = info->dri->backPitch; ++ pRADEONDRI->depthOffset = info->dri->depthOffset; ++ pRADEONDRI->depthPitch = info->dri->depthPitch; ++ pRADEONDRI->textureOffset = info->dri->textureOffset; ++ pRADEONDRI->textureSize = info->dri->textureSize; ++ pRADEONDRI->log2TexGran = info->dri->log2TexGran; + +- pRADEONDRI->registerHandle = info->registerHandle; +- pRADEONDRI->registerSize = info->registerSize; ++ pRADEONDRI->registerHandle = info->dri->registerHandle; ++ pRADEONDRI->registerSize = info->dri->registerSize; + +- pRADEONDRI->statusHandle = info->ringReadPtrHandle; +- pRADEONDRI->statusSize = info->ringReadMapSize; ++ pRADEONDRI->statusHandle = info->dri->ringReadPtrHandle; ++ pRADEONDRI->statusSize = info->dri->ringReadMapSize; + +- pRADEONDRI->gartTexHandle = info->gartTexHandle; +- pRADEONDRI->gartTexMapSize = info->gartTexMapSize; +- pRADEONDRI->log2GARTTexGran = info->log2GARTTexGran; +- pRADEONDRI->gartTexOffset = info->gartTexStart; ++ pRADEONDRI->gartTexHandle = info->dri->gartTexHandle; ++ pRADEONDRI->gartTexMapSize = info->dri->gartTexMapSize; ++ pRADEONDRI->log2GARTTexGran = info->dri->log2GARTTexGran; ++ pRADEONDRI->gartTexOffset = info->dri->gartTexStart; + + pRADEONDRI->sarea_priv_offset = sizeof(XF86DRISAREARec); + + #ifdef PER_CONTEXT_SAREA + /* Set per-context SAREA size */ +- pRADEONDRI->perctx_sarea_size = info->perctx_sarea_size; ++ pRADEONDRI->perctx_sarea_size = info->dri->perctx_sarea_size; + #endif + + info->directRenderingInited = TRUE; + + /* Wrap CloseScreen */ +- info->DRICloseScreen = pScreen->CloseScreen; ++ info->dri->DRICloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = RADEONDRIDoCloseScreen; + + /* disable vblank at startup */ +@@ -1721,7 +1730,7 @@ void RADEONDRIResume(ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if (info->pKernelDRMVersion->version_minor >= 9) { ++ if (info->dri->pKernelDRMVersion->version_minor >= 9) { + xf86DrvMsg(pScreen->myNum, X_INFO, + "[RESUME] Attempting to re-init Radeon hardware.\n"); + } else { +@@ -1738,7 +1747,7 @@ void RADEONDRIResume(ScreenPtr pScreen) + RADEONSetAgpBase(info, pScreen); + } + +- _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESUME); ++ _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_RESUME); + if (_ret) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP resume %d\n", __FUNCTION__, _ret); +@@ -1777,86 +1786,86 @@ void RADEONDRICloseScreen(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- drmRadeonInit drmInfo; ++ drm_radeon_init_t drmInfo; + + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "RADEONDRICloseScreen\n"); + + #ifdef DAMAGE +- REGION_UNINIT(pScreen, &info->driRegion); ++ REGION_UNINIT(pScreen, &info->dri->driRegion); + #endif + +- if (info->irq) { ++ if (info->dri->irq) { + RADEONDRISetVBlankInterrupt (pScrn, FALSE); +- drmCtlUninstHandler(info->drmFD); +- info->irq = 0; ++ drmCtlUninstHandler(info->dri->drmFD); ++ info->dri->irq = 0; + info->ModeReg->gen_int_cntl = 0; + } + + /* De-allocate vertex buffers */ +- if (info->buffers) { +- drmUnmapBufs(info->buffers); +- info->buffers = NULL; ++ if (info->dri->buffers) { ++ drmUnmapBufs(info->dri->buffers); ++ info->dri->buffers = NULL; + } + + /* De-allocate all kernel resources */ +- memset(&drmInfo, 0, sizeof(drmRadeonInit)); +- drmInfo.func = DRM_RADEON_CLEANUP_CP; +- drmCommandWrite(info->drmFD, DRM_RADEON_CP_INIT, +- &drmInfo, sizeof(drmRadeonInit)); ++ memset(&drmInfo, 0, sizeof(drm_radeon_init_t)); ++ drmInfo.func = RADEON_CLEANUP_CP; ++ drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_INIT, ++ &drmInfo, sizeof(drm_radeon_init_t)); + + /* De-allocate all GART resources */ +- if (info->gartTex) { +- drmUnmap(info->gartTex, info->gartTexMapSize); +- info->gartTex = NULL; ++ if (info->dri->gartTex) { ++ drmUnmap(info->dri->gartTex, info->dri->gartTexMapSize); ++ info->dri->gartTex = NULL; + } +- if (info->buf) { +- drmUnmap(info->buf, info->bufMapSize); +- info->buf = NULL; ++ if (info->dri->buf) { ++ drmUnmap(info->dri->buf, info->dri->bufMapSize); ++ info->dri->buf = NULL; + } +- if (info->ringReadPtr) { +- drmUnmap(info->ringReadPtr, info->ringReadMapSize); +- info->ringReadPtr = NULL; ++ if (info->dri->ringReadPtr) { ++ drmUnmap(info->dri->ringReadPtr, info->dri->ringReadMapSize); ++ info->dri->ringReadPtr = NULL; + } +- if (info->ring) { +- drmUnmap(info->ring, info->ringMapSize); +- info->ring = NULL; ++ if (info->dri->ring) { ++ drmUnmap(info->dri->ring, info->dri->ringMapSize); ++ info->dri->ring = NULL; + } +- if (info->agpMemHandle != DRM_AGP_NO_HANDLE) { +- drmAgpUnbind(info->drmFD, info->agpMemHandle); +- drmAgpFree(info->drmFD, info->agpMemHandle); +- info->agpMemHandle = DRM_AGP_NO_HANDLE; +- drmAgpRelease(info->drmFD); ++ if (info->dri->agpMemHandle != DRM_AGP_NO_HANDLE) { ++ drmAgpUnbind(info->dri->drmFD, info->dri->agpMemHandle); ++ drmAgpFree(info->dri->drmFD, info->dri->agpMemHandle); ++ info->dri->agpMemHandle = DRM_AGP_NO_HANDLE; ++ drmAgpRelease(info->dri->drmFD); + } +- if (info->pciMemHandle) { +- drmScatterGatherFree(info->drmFD, info->pciMemHandle); +- info->pciMemHandle = 0; ++ if (info->dri->pciMemHandle) { ++ drmScatterGatherFree(info->dri->drmFD, info->dri->pciMemHandle); ++ info->dri->pciMemHandle = 0; + } + +- if (info->pciGartBackup) { +- xfree(info->pciGartBackup); +- info->pciGartBackup = NULL; ++ if (info->dri->pciGartBackup) { ++ xfree(info->dri->pciGartBackup); ++ info->dri->pciGartBackup = NULL; + } + + /* De-allocate all DRI resources */ + DRICloseScreen(pScreen); + + /* De-allocate all DRI data structures */ +- if (info->pDRIInfo) { +- if (info->pDRIInfo->devPrivate) { +- xfree(info->pDRIInfo->devPrivate); +- info->pDRIInfo->devPrivate = NULL; ++ if (info->dri->pDRIInfo) { ++ if (info->dri->pDRIInfo->devPrivate) { ++ xfree(info->dri->pDRIInfo->devPrivate); ++ info->dri->pDRIInfo->devPrivate = NULL; + } +- DRIDestroyInfoRec(info->pDRIInfo); +- info->pDRIInfo = NULL; ++ DRIDestroyInfoRec(info->dri->pDRIInfo); ++ info->dri->pDRIInfo = NULL; + } +- if (info->pVisualConfigs) { +- xfree(info->pVisualConfigs); +- info->pVisualConfigs = NULL; ++ if (info->dri->pVisualConfigs) { ++ xfree(info->dri->pVisualConfigs); ++ info->dri->pVisualConfigs = NULL; + } +- if (info->pVisualConfigsPriv) { +- xfree(info->pVisualConfigsPriv); +- info->pVisualConfigsPriv = NULL; ++ if (info->dri->pVisualConfigsPriv) { ++ xfree(info->dri->pVisualConfigsPriv); ++ info->dri->pVisualConfigsPriv = NULL; + } + } + +@@ -1885,24 +1894,24 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + RADEONInfoPtr info = RADEONPTR(pScrn); + int i, num; + ScreenPtr pScreen = pScrn->pScreen; +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + #ifdef USE_EXA + PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); + #endif + RegionRec region; + BoxPtr pbox; + +- if (!info->directRenderingInited || !info->CPStarted) ++ if (!info->directRenderingInited || !info->cp->CPStarted) + return; + + /* Don't want to do this when no 3d is active and pages are + * right-way-round + */ +- if (!pSAREAPriv->pfAllowPageFlip && pSAREAPriv->pfCurrentPage == 0) ++ if (!pSAREAPriv->pfState && pSAREAPriv->pfCurrentPage == 0) + return; + + REGION_NULL(pScreen, ®ion); +- REGION_SUBTRACT(pScreen, ®ion, pReg, &info->driRegion); ++ REGION_SUBTRACT(pScreen, ®ion, pReg, &info->dri->driRegion); + + num = REGION_NUM_RECTS(®ion); + +@@ -1919,9 +1928,9 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + uint32_t src_pitch_offset, dst_pitch_offset, datatype; + + RADEONGetPixmapOffsetPitch(pPix, &src_pitch_offset); +- dst_pitch_offset = src_pitch_offset + (info->backOffset >> 10); ++ dst_pitch_offset = src_pitch_offset + (info->dri->backOffset >> 10); + RADEONGetDatatypeBpp(pScrn->bitsPerPixel, &datatype); +- info->xdir = info->ydir = 1; ++ info->accel_state->xdir = info->accel_state->ydir = 1; + + RADEONDoPrepareCopyCP(pScrn, src_pitch_offset, dst_pitch_offset, datatype, + GXcopy, ~0); +@@ -1931,13 +1940,14 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + #ifdef USE_XAA + if (!info->useEXA) { + /* Make sure accel has been properly inited */ +- if (info->accel == NULL || info->accel->SetupForScreenToScreenCopy == NULL) ++ if (info->accel_state->accel == NULL || ++ info->accel_state->accel->SetupForScreenToScreenCopy == NULL) + goto out; + if (info->tilingEnabled) +- info->dst_pitch_offset |= RADEON_DST_TILE_MACRO; +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, +- 1, 1, GXcopy, +- (uint32_t)(-1), -1); ++ info->accel_state->dst_pitch_offset |= RADEON_DST_TILE_MACRO; ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, ++ 1, 1, GXcopy, ++ (uint32_t)(-1), -1); + } + #endif + +@@ -1954,23 +1964,23 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + + #ifdef USE_XAA + if (!info->useEXA) { +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, xa, ya, +- xa + info->backX, +- ya + info->backY, +- xb - xa + 1, +- yb - ya + 1); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, xa, ya, ++ xa + info->dri->backX, ++ ya + info->dri->backY, ++ xb - xa + 1, ++ yb - ya + 1); + } + #endif + } + } + + #ifdef USE_XAA +- info->dst_pitch_offset &= ~RADEON_DST_TILE_MACRO; ++ info->accel_state->dst_pitch_offset &= ~RADEON_DST_TILE_MACRO; + #endif + + out: + REGION_NULL(pScreen, ®ion); +- DamageEmpty(info->pDamage); ++ DamageEmpty(info->dri->pDamage); + } + + #endif /* DAMAGE */ +@@ -1981,13 +1991,13 @@ static void RADEONEnablePageFlip(ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if (info->allowPageFlip) { +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ if (info->dri->allowPageFlip) { ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + BoxRec box = { .x1 = 0, .y1 = 0, .x2 = pScrn->virtualX - 1, + .y2 = pScrn->virtualY - 1 }; + RegionPtr pReg = REGION_CREATE(pScreen, &box, 1); + +- pSAREAPriv->pfAllowPageFlip = 1; ++ pSAREAPriv->pfState = 1; + RADEONDRIRefreshArea(pScrn, pReg); + REGION_DESTROY(pScreen, pReg); + } +@@ -2000,9 +2010,9 @@ static void RADEONDisablePageFlip(ScreenPtr pScreen) + * -- Field in sarea, plus bumping the window counters. + * -- DRM needs to cope with Front-to-Back swapbuffers. + */ +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + +- pSAREAPriv->pfAllowPageFlip = 0; ++ pSAREAPriv->pfState = 0; + } + + static void RADEONDRITransitionSingleToMulti3d(ScreenPtr pScreen) +@@ -2034,9 +2044,9 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + * first so we always start with all free offscreen memory, except + * maybe for Xv + */ +- if (info->backArea) { +- xf86FreeOffscreenArea(info->backArea); +- info->backArea = NULL; ++ if (info->dri->backArea) { ++ xf86FreeOffscreenArea(info->dri->backArea); ++ info->dri->backArea = NULL; + } + + xf86PurgeUnlockedOffscreenAreas(pScreen); +@@ -2047,7 +2057,7 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + * FIXME: This is hideous. What about telling xv "oh btw you have no memory + * any more?" -- anholt + */ +- if (height < (info->depthTexLines + info->backLines)) { ++ if (height < (info->dri->depthTexLines + info->dri->backLines)) { + RADEONPortPrivPtr portPriv = info->adaptor->pPortPrivates[0].ptr; + xf86FreeOffscreenLinear((FBLinearPtr)portPriv->video_memory); + portPriv->video_memory = NULL; +@@ -2061,29 +2071,29 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + */ + fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, + height +- - info->depthTexLines +- - info->backLines, ++ - info->dri->depthTexLines ++ - info->dri->backLines, + pScrn->displayWidth, + NULL, NULL, NULL); + if (!fbarea) + xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve placeholder " + "offscreen area, you might experience screen corruption\n"); + +- info->backArea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, +- info->backLines, +- pScrn->displayWidth, +- NULL, NULL, NULL); +- if (!info->backArea) ++ info->dri->backArea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, ++ info->dri->backLines, ++ pScrn->displayWidth, ++ NULL, NULL, NULL); ++ if (!info->dri->backArea) + xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve offscreen " + "area for back buffer, you might experience screen " + "corruption\n"); + +- info->depthTexArea = xf86AllocateOffscreenArea(pScreen, +- pScrn->displayWidth, +- info->depthTexLines, +- pScrn->displayWidth, +- NULL, NULL, NULL); +- if (!info->depthTexArea) ++ info->dri->depthTexArea = xf86AllocateOffscreenArea(pScreen, ++ pScrn->displayWidth, ++ info->dri->depthTexLines, ++ pScrn->displayWidth, ++ NULL, NULL, NULL); ++ if (!info->dri->depthTexArea) + xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve offscreen " + "area for depth buffer and textures, you might " + "experience screen corruption\n"); +@@ -2092,7 +2102,7 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + } + #endif /* USE_XAA */ + +- info->have3DWindows = 1; ++ info->dri->have3DWindows = 1; + + RADEONChangeSurfaces(pScrn); + RADEONEnablePageFlip(pScreen); +@@ -2108,19 +2118,19 @@ static void RADEONDRITransitionTo2d(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + + /* Try flipping back to the front page if necessary */ + if (pSAREAPriv->pfCurrentPage == 1) +- drmCommandNone(info->drmFD, DRM_RADEON_FLIP); ++ drmCommandNone(info->dri->drmFD, DRM_RADEON_FLIP); + + /* Shut down shadowing if we've made it back to the front page */ + if (pSAREAPriv->pfCurrentPage == 0) { + RADEONDisablePageFlip(pScreen); + #ifdef USE_XAA + if (!info->useEXA) { +- xf86FreeOffscreenArea(info->backArea); +- info->backArea = NULL; ++ xf86FreeOffscreenArea(info->dri->backArea); ++ info->dri->backArea = NULL; + } + #endif + } else { +@@ -2131,10 +2141,10 @@ static void RADEONDRITransitionTo2d(ScreenPtr pScreen) + + #ifdef USE_XAA + if (!info->useEXA) +- xf86FreeOffscreenArea(info->depthTexArea); ++ xf86FreeOffscreenArea(info->dri->depthTexArea); + #endif + +- info->have3DWindows = 0; ++ info->dri->have3DWindows = 0; + + RADEONChangeSurfaces(pScrn); + +@@ -2154,8 +2164,8 @@ RADEONDRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + +- REGION_UNINIT(pScreen, &info->driRegion); +- REGION_NULL(pScreen, &info->driRegion); ++ REGION_UNINIT(pScreen, &info->dri->driRegion); ++ REGION_NULL(pScreen, &info->dri->driRegion); + + if (num > 0) { + int i; +@@ -2164,8 +2174,8 @@ RADEONDRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num) + WindowPtr pWin = ppWin[i]; + + if (pWin) { +- REGION_UNION(pScreen, &info->driRegion, &pWin->clipList, +- &info->driRegion); ++ REGION_UNION(pScreen, &info->dri->driRegion, &pWin->clipList, ++ &info->dri->driRegion); + } + } + } +@@ -2178,24 +2188,24 @@ void RADEONDRIAllocatePCIGARTTable(ScreenPtr pScreen) + RADEONInfoPtr info = RADEONPTR(pScrn); + + if (info->cardType != CARD_PCIE || +- info->pKernelDRMVersion->version_minor < 19) ++ info->dri->pKernelDRMVersion->version_minor < 19) + return; + + if (info->FbSecureSize==0) + return; + + /* set the old default size of pci gart table */ +- if (info->pKernelDRMVersion->version_minor < 26) +- info->pciGartSize = 32768; ++ if (info->dri->pKernelDRMVersion->version_minor < 26) ++ info->dri->pciGartSize = 32768; + +- info->pciGartSize = RADEONDRIGetPciAperTableSize(pScrn); ++ info->dri->pciGartSize = RADEONDRIGetPciAperTableSize(pScrn); + + /* allocate space to back up PCIEGART table */ +- info->pciGartBackup = xnfcalloc(1, info->pciGartSize); +- if (info->pciGartBackup == NULL) ++ info->dri->pciGartBackup = xnfcalloc(1, info->dri->pciGartSize); ++ if (info->dri->pciGartBackup == NULL) + return; + +- info->pciGartOffset = (info->FbMapSize - info->FbSecureSize); ++ info->dri->pciGartOffset = (info->FbMapSize - info->FbSecureSize); + + + } +@@ -2207,7 +2217,7 @@ int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn) + int ret_size; + int num_pages; + +- num_pages = (info->pciAperSize * 1024 * 1024) / page_size; ++ num_pages = (info->dri->pciAperSize * 1024 * 1024) / page_size; + + ret_size = num_pages * sizeof(unsigned int); + +@@ -2216,14 +2226,14 @@ int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn) + + int RADEONDRISetParam(ScrnInfoPtr pScrn, unsigned int param, int64_t value) + { +- drmRadeonSetParam radeonsetparam; ++ drm_radeon_setparam_t radeonsetparam; + RADEONInfoPtr info = RADEONPTR(pScrn); + int ret; + +- memset(&radeonsetparam, 0, sizeof(drmRadeonSetParam)); ++ memset(&radeonsetparam, 0, sizeof(drm_radeon_setparam_t)); + radeonsetparam.param = param; + radeonsetparam.value = value; +- ret = drmCommandWrite(info->drmFD, DRM_RADEON_SETPARAM, +- &radeonsetparam, sizeof(drmRadeonSetParam)); ++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SETPARAM, ++ &radeonsetparam, sizeof(drm_radeon_setparam_t)); + return ret; + } +diff --git a/src/radeon_dri.h b/src/radeon_dri.h +index 67892a6..6e3ad62 100644 +--- a/src/radeon_dri.h ++++ b/src/radeon_dri.h +@@ -39,9 +39,8 @@ + #include "xf86drm.h" + + /* DRI Driver defaults */ +-#define RADEON_DEFAULT_CP_PIO_MODE RADEON_CSQ_PRIPIO_INDPIO +-#define RADEON_DEFAULT_CP_BM_MODE RADEON_CSQ_PRIBM_INDBM + #define RADEON_DEFAULT_GART_SIZE 8 /* MB (must be 2^n and > 4MB) */ ++#define R300_DEFAULT_GART_SIZE 32 /* MB (for R300 and above) */ + #define RADEON_DEFAULT_RING_SIZE 1 /* MB (must be page aligned) */ + #define RADEON_DEFAULT_BUFFER_SIZE 2 /* MB (must be page aligned) */ + #define RADEON_DEFAULT_GART_TEX_SIZE 1 /* MB (must be page aligned) */ +@@ -52,10 +51,6 @@ + + #define RADEON_CARD_TYPE_RADEON 1 + +-#define RADEONCP_USE_RING_BUFFER(m) \ +- (((m) == RADEON_CSQ_PRIBM_INDDIS) || \ +- ((m) == RADEON_CSQ_PRIBM_INDBM)) +- + typedef struct { + /* DRI screen private data */ + int deviceID; /* PCI device ID */ +diff --git a/src/radeon_dripriv.h b/src/radeon_dripriv.h +deleted file mode 100644 +index fcde08e..0000000 +--- a/src/radeon_dripriv.h ++++ /dev/null +@@ -1,63 +0,0 @@ +-/* +- * Copyright 2000 ATI Technologies Inc., Markham, Ontario, +- * VA Linux Systems Inc., Fremont, California. +- * +- * All Rights Reserved. +- * +- * Permission is hereby granted, free of charge, to any person obtaining +- * a copy of this software and associated documentation files (the +- * "Software"), to deal in the Software without restriction, including +- * without limitation on the rights to use, copy, modify, merge, +- * publish, distribute, sublicense, and/or sell copies of the Software, +- * and to permit persons to whom the Software is furnished to do so, +- * subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the +- * next paragraph) shall be included in all copies or substantial +- * portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR +- * THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- */ +- +-/* +- * Authors: +- * Kevin E. Martin +- * Rickard E. Faith +- * +- */ +- +-#ifndef _RADEON_DRIPRIV_H_ +-#define _RADEON_DRIPRIV_H_ +- +-#include "GL/glxint.h" +-#include "xf86drm.h" +-#include "radeon_common.h" +- +-#define RADEON_MAX_DRAWABLES 256 +- +-extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, +- void **configprivs); +- +-typedef struct { +- /* Nothing here yet */ +- int dummy; +-} RADEONConfigPrivRec, *RADEONConfigPrivPtr; +- +-typedef struct { +-#ifdef PER_CONTEXT_SAREA +- drm_context_t ctx_id; +- drm_handle_t sarea_handle; +-#else +- /* Nothing here yet */ +- int dummy; +-#endif +-} RADEONDRIContextRec, *RADEONDRIContextPtr; +- +-#endif +diff --git a/src/radeon_driver.c b/src/radeon_driver.c +index f18ad99..c759bd6 100644 +--- a/src/radeon_driver.c ++++ b/src/radeon_driver.c +@@ -79,7 +79,7 @@ + #ifdef XF86DRI + #define _XF86DRI_SERVER_ + #include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #endif + +@@ -498,7 +498,7 @@ static Bool RADEONUnmapMem(ScrnInfoPtr pScrn) + void RADEONPllErrataAfterIndex(RADEONInfoPtr info) + { + unsigned char *RADEONMMIO = info->MMIO; +- ++ + if (!(info->ChipErrata & CHIP_ERRATA_PLL_DUMMYREADS)) + return; + +@@ -669,7 +669,14 @@ static void radeon_write_mc_fb_agp_location(ScrnInfoPtr pScrn, int mask, uint32_ + RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; + +- if (info->ChipFamily >= CHIP_FAMILY_R600) { ++ if (info->ChipFamily >= CHIP_FAMILY_RV770) { ++ if (mask & LOC_FB) ++ OUTREG(R700_MC_VM_FB_LOCATION, fb_loc); ++ if (mask & LOC_AGP) { ++ OUTREG(R600_MC_VM_AGP_BOT, agp_loc); ++ OUTREG(R600_MC_VM_AGP_TOP, agp_loc_hi); ++ } ++ } else if (info->ChipFamily >= CHIP_FAMILY_R600) { + if (mask & LOC_FB) + OUTREG(R600_MC_VM_FB_LOCATION, fb_loc); + if (mask & LOC_AGP) { +@@ -712,7 +719,14 @@ static void radeon_read_mc_fb_agp_location(ScrnInfoPtr pScrn, int mask, uint32_t + RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; + +- if (info->ChipFamily >= CHIP_FAMILY_R600) { ++ if (info->ChipFamily >= CHIP_FAMILY_RV770) { ++ if (mask & LOC_FB) ++ *fb_loc = INREG(R700_MC_VM_FB_LOCATION); ++ if (mask & LOC_AGP) { ++ *agp_loc = INREG(R600_MC_VM_AGP_BOT); ++ *agp_loc_hi = INREG(R600_MC_VM_AGP_TOP); ++ } ++ } else if (info->ChipFamily >= CHIP_FAMILY_R600) { + if (mask & LOC_FB) + *fb_loc = INREG(R600_MC_VM_FB_LOCATION); + if (mask & LOC_AGP) { +@@ -1160,7 +1174,6 @@ static Bool RADEONPreInitVisual(ScrnInfoPtr pScrn) + + xf86PrintDepthBpp(pScrn); + +- info->fifo_slots = 0; + info->pix24bpp = xf86GetBppFromDepth(pScrn, + pScrn->depth); + info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel; +@@ -1271,7 +1284,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + /* Apply memory map limitation if using an old DRI */ +- if (info->directRenderingEnabled && !info->newMemoryMap) { ++ if (info->directRenderingEnabled && !info->dri->newMemoryMap) { + if (aper_size < mem_size) + mem_size = aper_size; + } +@@ -1286,7 +1299,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) + #ifdef XF86DRI + /* Old DRI has restrictions on the memory map */ + if ( info->directRenderingEnabled && +- info->pKernelDRMVersion->version_minor < 10 ) ++ info->dri->pKernelDRMVersion->version_minor < 10 ) + info->mc_fb_location = (mem_size - 1) & 0xffff0000U; + else + #endif +@@ -1474,18 +1487,18 @@ static uint32_t RADEONGetAccessibleVRAM(ScrnInfoPtr pScrn) + * we need to limit the amount of accessible video memory + */ + if (info->directRenderingEnabled && +- info->pKernelDRMVersion->version_minor < 23) { ++ info->dri->pKernelDRMVersion->version_minor < 23) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[dri] limiting video memory to one aperture of %uK\n", + (unsigned)aper_size); + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[dri] detected radeon kernel module version 1.%d but" + " 1.23 or newer is required for full memory mapping.\n", +- info->pKernelDRMVersion->version_minor); +- info->newMemoryMap = FALSE; ++ info->dri->pKernelDRMVersion->version_minor); ++ info->dri->newMemoryMap = FALSE; + return aper_size; + } +- info->newMemoryMap = TRUE; ++ info->dri->newMemoryMap = TRUE; + #endif /* XF86DRI */ + + /* Set HDP_APER_CNTL only on cards that are known not to be broken, +@@ -1893,20 +1906,6 @@ static Bool RADEONPreInitChipType(ScrnInfoPtr pScrn) + return FALSE; + } + +- +- if ((info->ChipFamily == CHIP_FAMILY_RS100) || +- (info->ChipFamily == CHIP_FAMILY_RS200) || +- (info->ChipFamily == CHIP_FAMILY_RS300) || +- (info->ChipFamily == CHIP_FAMILY_RS400) || +- (info->ChipFamily == CHIP_FAMILY_RS480) || +- (info->ChipFamily == CHIP_FAMILY_RS600) || +- (info->ChipFamily == CHIP_FAMILY_RS690) || +- (info->ChipFamily == CHIP_FAMILY_RS740)) +- info->has_tcl = FALSE; +- else { +- info->has_tcl = TRUE; +- } +- + return TRUE; + } + +@@ -1960,6 +1959,25 @@ static Bool RADEONPreInitAccel(ScrnInfoPtr pScrn) + char *optstr; + #endif + ++ if (!(info->accel_state = xcalloc(1, sizeof(struct radeon_accel_state)))) { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to allocate accel_state rec!\n"); ++ return FALSE; ++ } ++ info->accel_state->fifo_slots = 0; ++ ++ if ((info->ChipFamily == CHIP_FAMILY_RS100) || ++ (info->ChipFamily == CHIP_FAMILY_RS200) || ++ (info->ChipFamily == CHIP_FAMILY_RS300) || ++ (info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480) || ++ (info->ChipFamily == CHIP_FAMILY_RS600) || ++ (info->ChipFamily == CHIP_FAMILY_RS690) || ++ (info->ChipFamily == CHIP_FAMILY_RS740)) ++ info->accel_state->has_tcl = FALSE; ++ else { ++ info->accel_state->has_tcl = TRUE; ++ } ++ + info->useEXA = FALSE; + + if (info->ChipFamily >= CHIP_FAMILY_R600) { +@@ -2032,16 +2050,22 @@ static Bool RADEONPreInitAccel(ScrnInfoPtr pScrn) + + static Bool RADEONPreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10) + { +-#if !defined(__powerpc__) && !defined(__sparc__) ++#if (!defined(__powerpc__) && !defined(__sparc__)) || \ ++ (defined(XSERVER_LIBPCIACCESS) && HAVE_PCI_DEVICE_ENABLE) + RADEONInfoPtr info = RADEONPTR(pScrn); ++#endif ++#if !defined(__powerpc__) && !defined(__sparc__) + unsigned char *RADEONMMIO = info->MMIO; + uint32_t fp2_gen_ctl_save = 0; ++#endif + + #ifdef XSERVER_LIBPCIACCESS + #if HAVE_PCI_DEVICE_ENABLE + pci_device_enable(info->PciInfo); + #endif + #endif ++ ++#if !defined(__powerpc__) && !defined(__sparc__) + /* don't need int10 on atom cards. + * in theory all radeons, but the older stuff + * isn't 100% yet +@@ -2087,10 +2111,19 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + + info->directRenderingEnabled = FALSE; + info->directRenderingInited = FALSE; +- info->CPInUse = FALSE; +- info->CPStarted = FALSE; +- info->pLibDRMVersion = NULL; +- info->pKernelDRMVersion = NULL; ++ ++ if (!(info->dri = xcalloc(1, sizeof(struct radeon_dri)))) { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"Unable to allocate dri rec!\n"); ++ return FALSE; ++ } ++ ++ if (!(info->cp = xcalloc(1, sizeof(struct radeon_cp)))) { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"Unable to allocate cp rec!\n"); ++ return FALSE; ++ } ++ info->cp->CPInUse = FALSE; ++ info->cp->CPStarted = FALSE; ++ info->cp->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT; + + if (xf86IsEntityShared(info->pEnt->index)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +@@ -2106,19 +2139,16 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + + if (info->Chipset == PCI_CHIP_RN50_515E || + info->Chipset == PCI_CHIP_RN50_5969 || +- info->Chipset == PCI_CHIP_RC410_5A61 || +- info->Chipset == PCI_CHIP_RC410_5A62 || +- info->Chipset == PCI_CHIP_RS485_5975 || + info->ChipFamily == CHIP_FAMILY_RS600 || + info->ChipFamily >= CHIP_FAMILY_R600) { + if (xf86ReturnOptValBool(info->Options, OPTION_DRI, FALSE)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "Direct rendering for RN50/RC410/RS485/RS600/R600 forced on -- " ++ "Direct rendering for RN50/RS600/R600 forced on -- " + "This is NOT officially supported at the hardware level " + "and may cause instability or lockups\n"); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Direct rendering not officially supported on RN50/RC410/R600\n"); ++ "Direct rendering not officially supported on RN50/RS600/R600\n"); + return FALSE; + } + } +@@ -2136,18 +2166,26 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + return FALSE; + } + ++ if (!(info->dri = xcalloc(1, sizeof(struct radeon_dri)))) { ++ ErrorF("Unable to allocate dri rec!\n"); ++ return FALSE; ++ } ++ ++ info->dri->pLibDRMVersion = NULL; ++ info->dri->pKernelDRMVersion = NULL; ++ + if (!RADEONDRIGetVersion(pScrn)) + return FALSE; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[dri] Found DRI library version %d.%d.%d and kernel" + " module version %d.%d.%d\n", +- info->pLibDRMVersion->version_major, +- info->pLibDRMVersion->version_minor, +- info->pLibDRMVersion->version_patchlevel, +- info->pKernelDRMVersion->version_major, +- info->pKernelDRMVersion->version_minor, +- info->pKernelDRMVersion->version_patchlevel); ++ info->dri->pLibDRMVersion->version_major, ++ info->dri->pLibDRMVersion->version_minor, ++ info->dri->pLibDRMVersion->version_patchlevel, ++ info->dri->pKernelDRMVersion->version_major, ++ info->dri->pKernelDRMVersion->version_minor, ++ info->dri->pKernelDRMVersion->version_patchlevel); + + if (info->Chipset == PCI_CHIP_RS400_5A41 || + info->Chipset == PCI_CHIP_RS400_5A42 || +@@ -2158,7 +2196,7 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + info->Chipset == PCI_CHIP_RS482_5974 || + info->Chipset == PCI_CHIP_RS485_5975) { + +- if (info->pKernelDRMVersion->version_minor < 27) { ++ if (info->dri->pKernelDRMVersion->version_minor < 27) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Direct rendering broken on XPRESS 200 and 200M with DRI less than 1.27\n"); + return FALSE; +@@ -2167,25 +2205,22 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + "Direct rendering experimental on RS400/Xpress 200 enabled\n"); + } + +- if (xf86ReturnOptValBool(info->Options, OPTION_CP_PIO, FALSE)) { +- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forcing CP into PIO mode\n"); +- info->CPMode = RADEON_DEFAULT_CP_PIO_MODE; +- } else { +- info->CPMode = RADEON_DEFAULT_CP_BM_MODE; +- } ++ if (info->ChipFamily >= CHIP_FAMILY_R300) ++ info->dri->gartSize = R300_DEFAULT_GART_SIZE; ++ else ++ info->dri->gartSize = RADEON_DEFAULT_GART_SIZE; + +- info->gartSize = RADEON_DEFAULT_GART_SIZE; +- info->ringSize = RADEON_DEFAULT_RING_SIZE; +- info->bufSize = RADEON_DEFAULT_BUFFER_SIZE; +- info->gartTexSize = RADEON_DEFAULT_GART_TEX_SIZE; +- info->pciAperSize = RADEON_DEFAULT_PCI_APER_SIZE; +- info->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT; ++ info->dri->ringSize = RADEON_DEFAULT_RING_SIZE; ++ info->dri->bufSize = RADEON_DEFAULT_BUFFER_SIZE; ++ info->dri->gartTexSize = RADEON_DEFAULT_GART_TEX_SIZE; ++ info->dri->pciAperSize = RADEON_DEFAULT_PCI_APER_SIZE; ++ info->cp->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT; + + if ((xf86GetOptValInteger(info->Options, +- OPTION_GART_SIZE, (int *)&(info->gartSize))) || ++ OPTION_GART_SIZE, (int *)&(info->dri->gartSize))) || + (xf86GetOptValInteger(info->Options, +- OPTION_GART_SIZE_OLD, (int *)&(info->gartSize)))) { +- switch (info->gartSize) { ++ OPTION_GART_SIZE_OLD, (int *)&(info->dri->gartSize)))) { ++ switch (info->dri->gartSize) { + case 4: + case 8: + case 16: +@@ -2197,24 +2232,24 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + + default: + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +- "Illegal GART size: %d MB\n", info->gartSize); ++ "Illegal GART size: %d MB\n", info->dri->gartSize); + return FALSE; + } + } + + if (xf86GetOptValInteger(info->Options, +- OPTION_RING_SIZE, &(info->ringSize))) { +- if (info->ringSize < 1 || info->ringSize >= (int)info->gartSize) { ++ OPTION_RING_SIZE, &(info->dri->ringSize))) { ++ if (info->dri->ringSize < 1 || info->dri->ringSize >= (int)info->dri->gartSize) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal ring buffer size: %d MB\n", +- info->ringSize); ++ info->dri->ringSize); + return FALSE; + } + } + + if (xf86GetOptValInteger(info->Options, +- OPTION_PCIAPER_SIZE, &(info->pciAperSize))) { +- switch(info->pciAperSize) { ++ OPTION_PCIAPER_SIZE, &(info->dri->pciAperSize))) { ++ switch(info->dri->pciAperSize) { + case 32: + case 64: + case 128: +@@ -2223,63 +2258,63 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + default: + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal pci aper size: %d MB\n", +- info->pciAperSize); ++ info->dri->pciAperSize); + return FALSE; + } + } + + + if (xf86GetOptValInteger(info->Options, +- OPTION_BUFFER_SIZE, &(info->bufSize))) { +- if (info->bufSize < 1 || info->bufSize >= (int)info->gartSize) { ++ OPTION_BUFFER_SIZE, &(info->dri->bufSize))) { ++ if (info->dri->bufSize < 1 || info->dri->bufSize >= (int)info->dri->gartSize) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal vertex/indirect buffers size: %d MB\n", +- info->bufSize); ++ info->dri->bufSize); + return FALSE; + } +- if (info->bufSize > 2) { ++ if (info->dri->bufSize > 2) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal vertex/indirect buffers size: %d MB\n", +- info->bufSize); ++ info->dri->bufSize); + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Clamping vertex/indirect buffers size to 2 MB\n"); +- info->bufSize = 2; ++ info->dri->bufSize = 2; + } + } + +- if (info->ringSize + info->bufSize + info->gartTexSize > +- (int)info->gartSize) { ++ if (info->dri->ringSize + info->dri->bufSize + info->dri->gartTexSize > ++ (int)info->dri->gartSize) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Buffers are too big for requested GART space\n"); + return FALSE; + } + +- info->gartTexSize = info->gartSize - (info->ringSize + info->bufSize); ++ info->dri->gartTexSize = info->dri->gartSize - (info->dri->ringSize + info->dri->bufSize); + + if (xf86GetOptValInteger(info->Options, OPTION_USEC_TIMEOUT, +- &(info->CPusecTimeout))) { ++ &(info->cp->CPusecTimeout))) { + /* This option checked by the RADEON DRM kernel module */ + } + + /* Two options to try and squeeze as much texture memory as possible + * for dedicated 3d rendering boxes + */ +- info->noBackBuffer = xf86ReturnOptValBool(info->Options, +- OPTION_NO_BACKBUFFER, +- FALSE); ++ info->dri->noBackBuffer = xf86ReturnOptValBool(info->Options, ++ OPTION_NO_BACKBUFFER, ++ FALSE); + +- info->allowPageFlip = 0; ++ info->dri->allowPageFlip = 0; + + #ifdef DAMAGE +- if (info->noBackBuffer) { ++ if (info->dri->noBackBuffer) { + from = X_DEFAULT; + reason = " because back buffer disabled"; + } else { + from = xf86GetOptValBool(info->Options, OPTION_PAGE_FLIP, +- &info->allowPageFlip) ? X_CONFIG : X_DEFAULT; ++ &info->dri->allowPageFlip) ? X_CONFIG : X_DEFAULT; + + if (IS_AVIVO_VARIANT) { +- info->allowPageFlip = 0; ++ info->dri->allowPageFlip = 0; + reason = " on r5xx and newer chips.\n"; + } else { + reason = ""; +@@ -2292,7 +2327,7 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + #endif + + xf86DrvMsg(pScrn->scrnIndex, from, "Page Flipping %sabled%s\n", +- info->allowPageFlip ? "en" : "dis", reason); ++ info->dri->allowPageFlip ? "en" : "dis", reason); + + info->DMAForXv = TRUE; + from = xf86GetOptValBool(info->Options, OPTION_XV_DMA, &info->DMAForXv) +@@ -2332,15 +2367,15 @@ static void RADEONPreInitColorTiling(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled && +- info->pKernelDRMVersion->version_minor < 14) { ++ info->dri->pKernelDRMVersion->version_minor < 14) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[dri] color tiling disabled because of version " + "mismatch.\n" + "[dri] radeon.o kernel module version is %d.%d.%d but " + "1.14.0 or later is required for color tiling.\n", +- info->pKernelDRMVersion->version_major, +- info->pKernelDRMVersion->version_minor, +- info->pKernelDRMVersion->version_patchlevel); ++ info->dri->pKernelDRMVersion->version_major, ++ info->dri->pKernelDRMVersion->version_minor, ++ info->dri->pKernelDRMVersion->version_patchlevel); + info->allowColorTiling = FALSE; + return; + } +@@ -2994,7 +3029,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, + int c; + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); ++ if (info->cp->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); + #endif + + if (info->accelOn && pScrn->pScreen) +@@ -3058,7 +3093,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, + } + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); ++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); + #endif + } + +@@ -3077,12 +3112,12 @@ static void RADEONBlockHandler(int i, pointer blockData, + (*info->VideoTimerCallback)(pScrn, currentTime.milliseconds); + + #if defined(RENDER) && defined(USE_XAA) +- if(info->RenderCallback) +- (*info->RenderCallback)(pScrn); ++ if(info->accel_state->RenderCallback) ++ (*info->accel_state->RenderCallback)(pScrn); + #endif + + #ifdef USE_EXA +- info->engineMode = EXA_ENGINEMODE_UNKNOWN; ++ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN; + #endif + } + +@@ -3175,17 +3210,17 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + + info->accelOn = FALSE; + #ifdef USE_XAA +- info->accel = NULL; ++ info->accel_state->accel = NULL; + #endif + #ifdef XF86DRI +- pScrn->fbOffset = info->frontOffset; ++ pScrn->fbOffset = info->dri->frontOffset; + #endif + + if (info->IsSecondary) pScrn->fbOffset = pScrn->videoRam * 1024; + #ifdef XF86DRI + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "RADEONScreenInit %lx %ld %d\n", +- pScrn->memPhysBase, pScrn->fbOffset, info->frontOffset); ++ pScrn->memPhysBase, pScrn->fbOffset, info->dri->frontOffset); + #else + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "RADEONScreenInit %lx %ld\n", +@@ -3194,8 +3229,8 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + if (!RADEONMapMem(pScrn)) return FALSE; + + #ifdef XF86DRI +- info->fbX = 0; +- info->fbY = 0; ++ info->dri->fbX = 0; ++ info->dri->fbY = 0; + #endif + + info->PaletteSavedOnVT = FALSE; +@@ -3249,21 +3284,21 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + if (info->directRenderingEnabled) { + MessageType from; + +- info->depthBits = pScrn->depth; ++ info->dri->depthBits = pScrn->depth; + + from = xf86GetOptValInteger(info->Options, OPTION_DEPTH_BITS, +- &info->depthBits) ++ &info->dri->depthBits) + ? X_CONFIG : X_DEFAULT; + +- if (info->depthBits != 16 && info->depthBits != 24) { ++ if (info->dri->depthBits != 16 && info->dri->depthBits != 24) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Value for Option \"DepthBits\" must be 16 or 24\n"); +- info->depthBits = pScrn->depth; ++ info->dri->depthBits = pScrn->depth; + from = X_DEFAULT; + } + + xf86DrvMsg(pScrn->scrnIndex, from, +- "Using %d bit depth buffer\n", info->depthBits); ++ "Using %d bit depth buffer\n", info->dri->depthBits); + } + + +@@ -3276,7 +3311,7 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + RADEONInitMemoryMap(pScrn); + + /* empty the surfaces */ +- { ++ if (info->ChipFamily < CHIP_FAMILY_R600) { + unsigned char *RADEONMMIO = info->MMIO; + unsigned int j; + for (j = 0; j < 8; j++) { +@@ -3288,14 +3323,14 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + + #ifdef XF86DRI + /* Depth moves are disabled by default since they are extremely slow */ +- info->depthMoves = xf86ReturnOptValBool(info->Options, ++ info->dri->depthMoves = xf86ReturnOptValBool(info->Options, + OPTION_DEPTH_MOVE, FALSE); +- if (info->depthMoves && info->allowColorTiling) { ++ if (info->dri->depthMoves && info->allowColorTiling) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Enabling depth moves\n"); +- } else if (info->depthMoves) { ++ } else if (info->dri->depthMoves) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Depth moves don't work without color tiling, disabled\n"); +- info->depthMoves = FALSE; ++ info->dri->depthMoves = FALSE; + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Depth moves disabled by default\n"); +@@ -3331,15 +3366,15 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + * default, can be overridden with Option "FBTexPercent". + * Round down to a whole number of texture regions. + */ +- info->textureSize = 50; ++ info->dri->textureSize = 50; + + if (xf86GetOptValInteger(info->Options, OPTION_FBTEX_PERCENT, +- &(info->textureSize))) { +- if (info->textureSize < 0 || info->textureSize > 100) { ++ &(info->dri->textureSize))) { ++ if (info->dri->textureSize < 0 || info->dri->textureSize > 100) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal texture memory percentage: %dx, setting to default 50%%\n", +- info->textureSize); +- info->textureSize = 50; ++ info->dri->textureSize); ++ info->dri->textureSize = 50; + } + } + } +@@ -3356,19 +3391,19 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + + #if defined(XF86DRI) && defined(USE_XAA) + if (!info->useEXA && hasDRI) { +- info->textureSize = -1; ++ info->dri->textureSize = -1; + if (xf86GetOptValInteger(info->Options, OPTION_FBTEX_PERCENT, +- &(info->textureSize))) { +- if (info->textureSize < 0 || info->textureSize > 100) { ++ &(info->dri->textureSize))) { ++ if (info->dri->textureSize < 0 || info->dri->textureSize > 100) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal texture memory percentage: %dx, using default behaviour\n", +- info->textureSize); +- info->textureSize = -1; ++ info->dri->textureSize); ++ info->dri->textureSize = -1; + } + } + if (!RADEONSetupMemXAA_DRI(scrnIndex, pScreen)) + return FALSE; +- pScrn->fbOffset = info->frontOffset; ++ pScrn->fbOffset = info->dri->frontOffset; + } + #endif + +@@ -3377,8 +3412,9 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + return FALSE; + #endif + +- info->dst_pitch_offset = (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64) +- << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10)); ++ info->accel_state->dst_pitch_offset = ++ (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64) ++ << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10)); + + /* Setup DRI after visuals have been established, but before fbScreenInit is + * called. fbScreenInit will eventually call the driver's InitGLXVisuals +@@ -3408,18 +3444,18 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + } + + /* Tell DRI about new memory map */ +- if (info->directRenderingEnabled && info->newMemoryMap) { ++ if (info->directRenderingEnabled && info->dri->newMemoryMap) { + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_NEW_MEMMAP, 1) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[drm] failed to enable new memory map\n"); + RADEONDRICloseScreen(pScreen); +- info->directRenderingEnabled = FALSE; ++ info->directRenderingEnabled = FALSE; + } + } + #endif + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Initializing fb layer\n"); +- ++ + if (info->r600_shadow_fb) { + info->fb_shadow = xcalloc(1, + pScrn->displayWidth * pScrn->virtualY * +@@ -3473,18 +3509,16 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + else if (strcmp(s, "BGR") == 0) subPixelOrder = SubPixelHorizontalBGR; + else if (strcmp(s, "NONE") == 0) subPixelOrder = SubPixelNone; + PictureSetSubpixelOrder (pScreen, subPixelOrder); +- } ++ } + #endif + + pScrn->vtSema = TRUE; + +- /* xf86CrtcRotate() accesses pScrn->pScreen */ +- pScrn->pScreen = pScreen; +- +- if (!xf86SetDesiredModes (pScrn)) +- return FALSE; +- +- RADEONSaveScreen(pScreen, SCREEN_SAVER_ON); ++ /* restore the memory map here otherwise we may get a hang when ++ * initializing the drm below ++ */ ++ RADEONInitMemMapRegisters(pScrn, info->ModeReg, info); ++ RADEONRestoreMemMapRegisters(pScrn, info->ModeReg); + + /* Backing store setup */ + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, +@@ -3495,14 +3529,14 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + /* DRI finalisation */ + #ifdef XF86DRI + if (info->directRenderingEnabled && info->cardType==CARD_PCIE && +- info->pKernelDRMVersion->version_minor >= 19) ++ info->dri->pKernelDRMVersion->version_minor >= 19) + { +- if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_LOCATION, info->pciGartOffset) < 0) ++ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_LOCATION, info->dri->pciGartOffset) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed set pci gart location\n"); + +- if (info->pKernelDRMVersion->version_minor >= 26) { +- if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_TABLE_SIZE, info->pciGartSize) < 0) ++ if (info->dri->pKernelDRMVersion->version_minor >= 26) { ++ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_TABLE_SIZE, info->dri->pciGartSize) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed set pci gart table size\n"); + } +@@ -3519,10 +3553,6 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + */ + RADEONAdjustMemMapRegisters(pScrn, info->ModeReg); + +- if ((info->DispPriority == 1) && (info->cardType==CARD_AGP)) { +- /* we need to re-calculate bandwidth because of AGPMode difference. */ +- RADEONInitDispBandwidth(pScrn); +- } + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering enabled\n"); + + /* we might already be in tiled mode, tell drm about it */ +@@ -3620,6 +3650,10 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + } + } + ++ /* set the modes with desired rotation, etc. */ ++ if (!xf86SetDesiredModes (pScrn)) ++ return FALSE; ++ + /* Provide SaveScreen & wrap BlockHandler and CloseScreen */ + /* Wrap CloseScreen */ + info->CloseScreen = pScreen->CloseScreen; +@@ -3910,7 +3944,7 @@ static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save) + else + info->fbLocation = (info->mc_fb_location & 0xffff) << 16; + +- info->dst_pitch_offset = ++ info->accel_state->dst_pitch_offset = + (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64) + << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10)); + RADEONInitMemMapRegisters(pScrn, save, info); +@@ -3920,14 +3954,14 @@ static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save) + #ifdef USE_EXA + if (info->accelDFS) + { +- drmRadeonGetParam gp; ++ drm_radeon_getparam_t gp; + int gart_base; + + memset(&gp, 0, sizeof(gp)); + gp.param = RADEON_PARAM_GART_BASE; + gp.value = &gart_base; + +- if (drmCommandWriteRead(info->drmFD, DRM_RADEON_GETPARAM, &gp, ++ if (drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_GETPARAM, &gp, + sizeof(gp)) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to determine GART area MC location, not using " +@@ -4011,35 +4045,35 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn) + } + #ifdef XF86DRI + if (info->directRenderingInited) { +- drmRadeonSurfaceFree drmsurffree; +- drmRadeonSurfaceAlloc drmsurfalloc; ++ drm_radeon_surface_free_t drmsurffree; ++ drm_radeon_surface_alloc_t drmsurfalloc; + int retvalue; +- int depthCpp = (info->depthBits - 8) / 4; ++ int depthCpp = (info->dri->depthBits - 8) / 4; + int depth_width_bytes = pScrn->displayWidth * depthCpp; + int depthBufferSize = ((((pScrn->virtualY + 15) & ~15) * depth_width_bytes + + RADEON_BUFFER_ALIGN) & ~RADEON_BUFFER_ALIGN); + unsigned int depth_pattern; + +- drmsurffree.address = info->frontOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ drmsurffree.address = info->dri->frontOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + + if (!((info->ChipFamily == CHIP_FAMILY_RV100) || + (info->ChipFamily == CHIP_FAMILY_RS100) || + (info->ChipFamily == CHIP_FAMILY_RS200))) { +- drmsurffree.address = info->depthOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ drmsurffree.address = info->dri->depthOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + } + +- if (!info->noBackBuffer) { +- drmsurffree.address = info->backOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ if (!info->dri->noBackBuffer) { ++ drmsurffree.address = info->dri->backOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + } + + drmsurfalloc.size = bufferSize; +- drmsurfalloc.address = info->frontOffset; ++ drmsurfalloc.address = info->dri->frontOffset; + drmsurfalloc.flags = swap_pattern; + + if (info->tilingEnabled) { +@@ -4048,15 +4082,15 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn) + else + drmsurfalloc.flags |= (width_bytes / 16) | color_pattern; + } +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (retvalue < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "drm: could not allocate surface for front buffer!\n"); + +- if ((info->have3DWindows) && (!info->noBackBuffer)) { +- drmsurfalloc.address = info->backOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ if ((info->dri->have3DWindows) && (!info->dri->noBackBuffer)) { ++ drmsurfalloc.address = info->dri->backOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (retvalue < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +@@ -4081,18 +4115,18 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn) + } + + /* rv100 and probably the derivative igps don't have depth tiling on all the time? */ +- if (info->have3DWindows && ++ if (info->dri->have3DWindows && + (!((info->ChipFamily == CHIP_FAMILY_RV100) || + (info->ChipFamily == CHIP_FAMILY_RS100) || + (info->ChipFamily == CHIP_FAMILY_RS200)))) { +- drmRadeonSurfaceAlloc drmsurfalloc; ++ drm_radeon_surface_alloc_t drmsurfalloc; + drmsurfalloc.size = depthBufferSize; +- drmsurfalloc.address = info->depthOffset; ++ drmsurfalloc.address = info->dri->depthOffset; + if (IS_R300_VARIANT || IS_AVIVO_VARIANT) + drmsurfalloc.flags = swap_pattern | (depth_width_bytes / 8) | depth_pattern; + else + drmsurfalloc.flags = swap_pattern | (depth_width_bytes / 16) | depth_pattern; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (retvalue < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +@@ -4178,6 +4212,7 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save) + + state->crtc_master_en = INREG(AVIVO_DC_CRTC_MASTER_EN); + state->crtc_tv_control = INREG(AVIVO_DC_CRTC_TV_CONTROL); ++ state->dc_lb_memory_split = INREG(AVIVO_DC_LB_MEMORY_SPLIT); + + state->pll1.ref_div_src = INREG(AVIVO_EXT1_PPLL_REF_DIV_SRC); + state->pll1.ref_div = INREG(AVIVO_EXT1_PPLL_REF_DIV); +@@ -4233,8 +4268,10 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save) + state->grph1.x_end = INREG(AVIVO_D1GRPH_X_END); + state->grph1.y_end = INREG(AVIVO_D1GRPH_Y_END); + ++ state->grph1.desktop_height = INREG(AVIVO_D1MODE_DESKTOP_HEIGHT); + state->grph1.viewport_start = INREG(AVIVO_D1MODE_VIEWPORT_START); + state->grph1.viewport_size = INREG(AVIVO_D1MODE_VIEWPORT_SIZE); ++ state->grph1.mode_data_format = INREG(AVIVO_D1MODE_DATA_FORMAT); + + state->crtc2.pll_source = INREG(AVIVO_PCLK_CRTC2_CNTL); + +@@ -4272,8 +4309,10 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save) + state->grph2.x_end = INREG(AVIVO_D2GRPH_X_END); + state->grph2.y_end = INREG(AVIVO_D2GRPH_Y_END); + ++ state->grph2.desktop_height = INREG(AVIVO_D2MODE_DESKTOP_HEIGHT); + state->grph2.viewport_start = INREG(AVIVO_D2MODE_VIEWPORT_START); + state->grph2.viewport_size = INREG(AVIVO_D2MODE_VIEWPORT_SIZE); ++ state->grph2.mode_data_format = INREG(AVIVO_D2MODE_DATA_FORMAT); + + if (IS_DCE3_VARIANT) { + /* save DVOA regs */ +@@ -4477,14 +4516,71 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + struct avivo_state *state = &restore->avivo; + int i, j; + +- // OUTMC(pScrn, AVIVO_MC_MEMORY_MAP, state->mc_memory_map); +- // OUTREG(AVIVO_VGA_MEMORY_BASE, state->vga_memory_base); +- // OUTREG(AVIVO_VGA_FB_START, state->vga_fb_start); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "avivo_restore !\n"); ++ ++ /* Disable VGA control for now.. maybe needs to be changed */ ++ OUTREG(AVIVO_D1VGA_CONTROL, 0); ++ OUTREG(AVIVO_D2VGA_CONTROL, 0); ++ ++ /* Disable CRTCs */ ++ OUTREG(AVIVO_D1CRTC_CONTROL, ++ (INREG(AVIVO_D1CRTC_CONTROL) & ~0x300) | 0x01000000); ++ OUTREG(AVIVO_D2CRTC_CONTROL, ++ (INREG(AVIVO_D2CRTC_CONTROL) & ~0x300) | 0x01000000); ++ OUTREG(AVIVO_D1CRTC_CONTROL, ++ INREG(AVIVO_D1CRTC_CONTROL) & ~0x1); ++ OUTREG(AVIVO_D2CRTC_CONTROL, ++ INREG(AVIVO_D2CRTC_CONTROL) & ~0x1); ++ OUTREG(AVIVO_D1CRTC_CONTROL, ++ INREG(AVIVO_D1CRTC_CONTROL) | 0x100); ++ OUTREG(AVIVO_D2CRTC_CONTROL, ++ INREG(AVIVO_D2CRTC_CONTROL) | 0x100); ++ ++ /* Lock graph registers */ ++ OUTREG(AVIVO_D1GRPH_UPDATE, AVIVO_D1GRPH_UPDATE_LOCK); ++ OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS, state->grph1.prim_surf_addr); ++ OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS, state->grph1.sec_surf_addr); ++ OUTREG(AVIVO_D1GRPH_CONTROL, state->grph1.control); ++ OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X, state->grph1.x_offset); ++ OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y, state->grph1.y_offset); ++ OUTREG(AVIVO_D1GRPH_X_START, state->grph1.x_start); ++ OUTREG(AVIVO_D1GRPH_Y_START, state->grph1.y_start); ++ OUTREG(AVIVO_D1GRPH_X_END, state->grph1.x_end); ++ OUTREG(AVIVO_D1GRPH_Y_END, state->grph1.y_end); ++ OUTREG(AVIVO_D1GRPH_PITCH, state->grph1.pitch); ++ OUTREG(AVIVO_D1GRPH_ENABLE, state->grph1.enable); ++ OUTREG(AVIVO_D1GRPH_UPDATE, 0); ++ ++ OUTREG(AVIVO_D2GRPH_UPDATE, AVIVO_D1GRPH_UPDATE_LOCK); ++ OUTREG(AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS, state->grph2.prim_surf_addr); ++ OUTREG(AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS, state->grph2.sec_surf_addr); ++ OUTREG(AVIVO_D2GRPH_CONTROL, state->grph2.control); ++ OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_X, state->grph2.x_offset); ++ OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_Y, state->grph2.y_offset); ++ OUTREG(AVIVO_D2GRPH_X_START, state->grph2.x_start); ++ OUTREG(AVIVO_D2GRPH_Y_START, state->grph2.y_start); ++ OUTREG(AVIVO_D2GRPH_X_END, state->grph2.x_end); ++ OUTREG(AVIVO_D2GRPH_Y_END, state->grph2.y_end); ++ OUTREG(AVIVO_D2GRPH_PITCH, state->grph2.pitch); ++ OUTREG(AVIVO_D2GRPH_ENABLE, state->grph2.enable); ++ OUTREG(AVIVO_D2GRPH_UPDATE, 0); + ++ /* Whack some mode regs too */ ++ OUTREG(AVIVO_D1SCL_UPDATE, AVIVO_D1SCL_UPDATE_LOCK); ++ OUTREG(AVIVO_D1MODE_DESKTOP_HEIGHT, state->grph1.desktop_height); ++ OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start); ++ OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size); ++ OUTREG(AVIVO_D1MODE_DATA_FORMAT, state->grph1.mode_data_format); ++ OUTREG(AVIVO_D1SCL_UPDATE, 0); + +- OUTREG(AVIVO_DC_CRTC_MASTER_EN, state->crtc_master_en); +- OUTREG(AVIVO_DC_CRTC_TV_CONTROL, state->crtc_tv_control); ++ OUTREG(AVIVO_D2SCL_UPDATE, AVIVO_D1SCL_UPDATE_LOCK); ++ OUTREG(AVIVO_D2MODE_DESKTOP_HEIGHT, state->grph2.desktop_height); ++ OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start); ++ OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size); ++ OUTREG(AVIVO_D2MODE_DATA_FORMAT, state->grph2.mode_data_format); ++ OUTREG(AVIVO_D2SCL_UPDATE, 0); + ++ /* Set the PLL */ + OUTREG(AVIVO_EXT1_PPLL_REF_DIV_SRC, state->pll1.ref_div_src); + OUTREG(AVIVO_EXT1_PPLL_REF_DIV, state->pll1.ref_div); + OUTREG(AVIVO_EXT1_PPLL_FB_DIV, state->pll1.fb_div); +@@ -4504,7 +4600,9 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(AVIVO_P2PLL_INT_SS_CNTL, state->pll2.int_ss_cntl); + + OUTREG(AVIVO_PCLK_CRTC1_CNTL, state->crtc1.pll_source); ++ OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source); + ++ /* Set the CRTC */ + OUTREG(AVIVO_D1CRTC_H_TOTAL, state->crtc1.h_total); + OUTREG(AVIVO_D1CRTC_H_BLANK_START_END, state->crtc1.h_blank_start_end); + OUTREG(AVIVO_D1CRTC_H_SYNC_A, state->crtc1.h_sync_a); +@@ -4519,29 +4617,12 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(AVIVO_D1CRTC_V_SYNC_B, state->crtc1.v_sync_b); + OUTREG(AVIVO_D1CRTC_V_SYNC_B_CNTL, state->crtc1.v_sync_b_cntl); + +- OUTREG(AVIVO_D1CRTC_CONTROL, state->crtc1.control); +- OUTREG(AVIVO_D1CRTC_BLANK_CONTROL, state->crtc1.blank_control); + OUTREG(AVIVO_D1CRTC_INTERLACE_CONTROL, state->crtc1.interlace_control); + OUTREG(AVIVO_D1CRTC_STEREO_CONTROL, state->crtc1.stereo_control); + + OUTREG(AVIVO_D1CUR_CONTROL, state->crtc1.cursor_control); + +- OUTREG(AVIVO_D1GRPH_ENABLE, state->grph1.enable); +- OUTREG(AVIVO_D1GRPH_CONTROL, state->grph1.control); +- OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS, state->grph1.prim_surf_addr); +- OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS, state->grph1.sec_surf_addr); +- OUTREG(AVIVO_D1GRPH_PITCH, state->grph1.pitch); +- OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X, state->grph1.x_offset); +- OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y, state->grph1.y_offset); +- OUTREG(AVIVO_D1GRPH_X_START, state->grph1.x_start); +- OUTREG(AVIVO_D1GRPH_Y_START, state->grph1.y_start); +- OUTREG(AVIVO_D1GRPH_X_END, state->grph1.x_end); +- OUTREG(AVIVO_D1GRPH_Y_END, state->grph1.y_end); +- +- OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start); +- OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size); +- +- OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source); ++ /* XXX Fix scaler */ + + OUTREG(AVIVO_D2CRTC_H_TOTAL, state->crtc2.h_total); + OUTREG(AVIVO_D2CRTC_H_BLANK_START_END, state->crtc2.h_blank_start_end); +@@ -4557,29 +4638,11 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(AVIVO_D2CRTC_V_SYNC_B, state->crtc2.v_sync_b); + OUTREG(AVIVO_D2CRTC_V_SYNC_B_CNTL, state->crtc2.v_sync_b_cntl); + +- OUTREG(AVIVO_D2CRTC_CONTROL, state->crtc2.control); +- OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control); + OUTREG(AVIVO_D2CRTC_INTERLACE_CONTROL, state->crtc2.interlace_control); + OUTREG(AVIVO_D2CRTC_STEREO_CONTROL, state->crtc2.stereo_control); + + OUTREG(AVIVO_D2CUR_CONTROL, state->crtc2.cursor_control); + +- OUTREG(AVIVO_D2GRPH_ENABLE, state->grph2.enable); +- OUTREG(AVIVO_D2GRPH_CONTROL, state->grph2.control); +- OUTREG(AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS, state->grph2.prim_surf_addr); +- OUTREG(AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS, state->grph2.sec_surf_addr); +- OUTREG(AVIVO_D2GRPH_PITCH, state->grph2.pitch); +- OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_X, state->grph2.x_offset); +- OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_Y, state->grph2.y_offset); +- OUTREG(AVIVO_D2GRPH_X_START, state->grph2.x_start); +- OUTREG(AVIVO_D2GRPH_Y_START, state->grph2.y_start); +- OUTREG(AVIVO_D2GRPH_X_END, state->grph2.x_end); +- OUTREG(AVIVO_D2GRPH_Y_END, state->grph2.y_end); +- +- OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start); +- OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size); +- +- + if (IS_DCE3_VARIANT) { + /* DVOA regs */ + OUTREG(0x7080, state->dvoa[0]); +@@ -4699,7 +4762,7 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + } + + j = 0; +- /* DAC regs */ ++ /* DAC regs */ /* -- MIGHT NEED ORDERING FIX & DELAYS -- */ + for (i = 0x7800; i <= 0x782c; i += 4) { + OUTREG(i, state->daca[j]); + OUTREG((i + 0x200), state->dacb[j]); +@@ -4766,8 +4829,31 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(0x6e30, state->dxscl[6]); + OUTREG(0x6e34, state->dxscl[7]); + ++ /* Enable CRTCs */ ++ if (state->crtc1.control & 1) { ++ OUTREG(AVIVO_D1CRTC_CONTROL, 0x01000101); ++ INREG(AVIVO_D1CRTC_CONTROL); ++ OUTREG(AVIVO_D1CRTC_CONTROL, 0x00010101); ++ } ++ if (state->crtc2.control & 1) { ++ OUTREG(AVIVO_D2CRTC_CONTROL, 0x01000101); ++ INREG(AVIVO_D2CRTC_CONTROL); ++ OUTREG(AVIVO_D2CRTC_CONTROL, 0x00010101); ++ } ++ ++ /* Where should that go ? */ ++ OUTREG(AVIVO_DC_CRTC_TV_CONTROL, state->crtc_tv_control); ++ OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, state->dc_lb_memory_split); ++ ++ /* Need fixing too ? */ ++ OUTREG(AVIVO_D1CRTC_BLANK_CONTROL, state->crtc1.blank_control); ++ OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control); ++ ++ /* Dbl check */ + OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl); + OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl); ++ ++ /* Should only enable outputs here */ + } + + static void avivo_restore_vga_regs(ScrnInfoPtr pScrn, RADEONSavePtr restore) +@@ -5045,7 +5131,7 @@ Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) + Bool tilingOld = info->tilingEnabled; + Bool ret; + #ifdef XF86DRI +- Bool CPStarted = info->CPStarted; ++ Bool CPStarted = info->cp->CPStarted; + + if (CPStarted) { + DRILock(pScrn->pScreen, 0); +@@ -5060,7 +5146,7 @@ Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) + info->tilingEnabled = (mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + #ifdef XF86DRI + if (info->directRenderingEnabled && (info->tilingEnabled != tilingOld)) { +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed changing tiling status\n"); +@@ -5170,7 +5256,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2) + unsigned char *RADEONMMIO = info->MMIO; + int Base, reg, regcntl, crtcoffsetcntl, xytilereg, crtcxytile = 0; + #ifdef XF86DRI +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + XF86DRISAREAPtr pSAREA; + #endif + +@@ -5209,7 +5295,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2) + #if 0 + /* try to get rid of flickering when scrolling at least for 2d */ + #ifdef XF86DRI +- if (!info->have3DWindows) ++ if (!info->dri->have3DWindows) + #endif + crtcoffsetcntl &= ~RADEON_CRTC_OFFSET_FLIP_CNTL; + #endif +@@ -5266,7 +5352,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2) + } + + if (pSAREAPriv->pfCurrentPage == 1) { +- Base += info->backOffset - info->frontOffset; ++ Base += info->dri->backOffset - info->dri->frontOffset; + } + } + #endif +@@ -5290,7 +5376,7 @@ void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags) + xf86CrtcPtr crtc = output->crtc; + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); ++ if (info->cp->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); + #endif + + if (info->accelOn) +@@ -5307,7 +5393,7 @@ void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags) + + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); ++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); + #endif + } + +@@ -5318,26 +5404,18 @@ Bool RADEONEnterVT(int scrnIndex, int flags) + { + ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- unsigned char *RADEONMMIO = info->MMIO; +- uint32_t mem_size; + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); + int i; + + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "RADEONEnterVT\n"); + +- if (info->ChipFamily >= CHIP_FAMILY_R600) +- mem_size = INREG(R600_CONFIG_MEMSIZE); +- else +- mem_size = INREG(RADEON_CONFIG_MEMSIZE); +- +- if (mem_size == 0) { /* Softboot V_BIOS */ ++ if (!radeon_card_posted(pScrn)) { /* Softboot V_BIOS */ + if (info->IsAtomBios) { + rhdAtomASICInit(info->atomBIOS); + } else { + xf86Int10InfoPtr pInt; +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "zero MEMSIZE, probably at D3cold. Re-POSTing via int10.\n"); ++ + pInt = xf86InitInt10 (info->pEnt->index); + if (pInt) { + pInt->num = 0xe6; +@@ -5382,10 +5460,10 @@ Bool RADEONEnterVT(int scrnIndex, int flags) + #ifdef XF86DRI + if (info->directRenderingEnabled) { + if (info->cardType == CARD_PCIE && +- info->pKernelDRMVersion->version_minor >= 19 && ++ info->dri->pKernelDRMVersion->version_minor >= 19 && + info->FbSecureSize) { + /* we need to backup the PCIE GART TABLE from fb memory */ +- memcpy(info->FB + info->pciGartOffset, info->pciGartBackup, info->pciGartSize); ++ memcpy(info->FB + info->dri->pciGartOffset, info->dri->pciGartBackup, info->dri->pciGartSize); + } + + /* get the DRI back into shape after resume */ +@@ -5433,18 +5511,18 @@ void RADEONLeaveVT(int scrnIndex, int flags) + RADEONCP_STOP(pScrn, info); + + if (info->cardType == CARD_PCIE && +- info->pKernelDRMVersion->version_minor >= 19 && ++ info->dri->pKernelDRMVersion->version_minor >= 19 && + info->FbSecureSize) { + /* we need to backup the PCIE GART TABLE from fb memory */ +- memcpy(info->pciGartBackup, (info->FB + info->pciGartOffset), info->pciGartSize); ++ memcpy(info->dri->pciGartBackup, (info->FB + info->dri->pciGartOffset), info->dri->pciGartSize); + } + + /* Make sure 3D clients will re-upload textures to video RAM */ +- if (info->textureSize) { +- RADEONSAREAPrivPtr pSAREAPriv = +- (RADEONSAREAPrivPtr)DRIGetSAREAPrivate(pScrn->pScreen); +- drmTextureRegionPtr list = pSAREAPriv->texList[0]; +- int age = ++pSAREAPriv->texAge[0]; ++ if (info->dri->textureSize) { ++ drm_radeon_sarea_t *pSAREAPriv = ++ (drm_radeon_sarea_t*)DRIGetSAREAPrivate(pScrn->pScreen); ++ struct drm_tex_region *list = pSAREAPriv->tex_list[0]; ++ int age = ++pSAREAPriv->tex_age[0]; + + i = 0; + +@@ -5501,12 +5579,12 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen) + + #ifdef XF86DRI + #ifdef DAMAGE +- if (info->pDamage) { ++ if (info->dri && info->dri->pDamage) { + PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); + +- DamageUnregister(&pPix->drawable, info->pDamage); +- DamageDestroy(info->pDamage); +- info->pDamage = NULL; ++ DamageUnregister(&pPix->drawable, info->dri->pDamage); ++ DamageDestroy(info->dri->pDamage); ++ info->dri->pDamage = NULL; + } + #endif + +@@ -5514,9 +5592,9 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen) + #endif + + #ifdef USE_XAA +- if(!info->useEXA && info->RenderTex) { +- xf86FreeOffscreenLinear(info->RenderTex); +- info->RenderTex = NULL; ++ if(!info->useEXA && info->accel_state->RenderTex) { ++ xf86FreeOffscreenLinear(info->accel_state->RenderTex); ++ info->accel_state->RenderTex = NULL; + } + #endif /* USE_XAA */ + +@@ -5527,21 +5605,21 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen) + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Disposing accel...\n"); + #ifdef USE_EXA +- if (info->exa) { ++ if (info->accel_state->exa) { + exaDriverFini(pScreen); +- xfree(info->exa); +- info->exa = NULL; ++ xfree(info->accel_state->exa); ++ info->accel_state->exa = NULL; + } + #endif /* USE_EXA */ + #ifdef USE_XAA + if (!info->useEXA) { +- if (info->accel) +- XAADestroyInfoRec(info->accel); +- info->accel = NULL; ++ if (info->accel_state->accel) ++ XAADestroyInfoRec(info->accel_state->accel); ++ info->accel_state->accel = NULL; + +- if (info->scratch_save) +- xfree(info->scratch_save); +- info->scratch_save = NULL; ++ if (info->accel_state->scratch_save) ++ xfree(info->accel_state->scratch_save); ++ info->accel_state->scratch_save = NULL; + } + #endif /* USE_XAA */ + +diff --git a/src/radeon_drm.h b/src/radeon_drm.h +new file mode 100644 +index 0000000..66cefb7 +--- /dev/null ++++ b/src/radeon_drm.h +@@ -0,0 +1,756 @@ ++/* radeon_drm.h -- Public header for the radeon driver -*- linux-c -*- ++ * ++ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. ++ * Copyright 2000 VA Linux Systems, Inc., Fremont, California. ++ * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. ++ * All rights reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Authors: ++ * Kevin E. Martin ++ * Gareth Hughes ++ * Keith Whitwell ++ */ ++ ++#ifndef __RADEON_DRM_H__ ++#define __RADEON_DRM_H__ ++ ++/* WARNING: If you change any of these defines, make sure to change the ++ * defines in the X server file (radeon_sarea.h) ++ */ ++#ifndef __RADEON_SAREA_DEFINES__ ++#define __RADEON_SAREA_DEFINES__ ++ ++/* Old style state flags, required for sarea interface (1.1 and 1.2 ++ * clears) and 1.2 drm_vertex2 ioctl. ++ */ ++#define RADEON_UPLOAD_CONTEXT 0x00000001 ++#define RADEON_UPLOAD_VERTFMT 0x00000002 ++#define RADEON_UPLOAD_LINE 0x00000004 ++#define RADEON_UPLOAD_BUMPMAP 0x00000008 ++#define RADEON_UPLOAD_MASKS 0x00000010 ++#define RADEON_UPLOAD_VIEWPORT 0x00000020 ++#define RADEON_UPLOAD_SETUP 0x00000040 ++#define RADEON_UPLOAD_TCL 0x00000080 ++#define RADEON_UPLOAD_MISC 0x00000100 ++#define RADEON_UPLOAD_TEX0 0x00000200 ++#define RADEON_UPLOAD_TEX1 0x00000400 ++#define RADEON_UPLOAD_TEX2 0x00000800 ++#define RADEON_UPLOAD_TEX0IMAGES 0x00001000 ++#define RADEON_UPLOAD_TEX1IMAGES 0x00002000 ++#define RADEON_UPLOAD_TEX2IMAGES 0x00004000 ++#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */ ++#define RADEON_REQUIRE_QUIESCENCE 0x00010000 ++#define RADEON_UPLOAD_ZBIAS 0x00020000 /* version 1.2 and newer */ ++#define RADEON_UPLOAD_ALL 0x003effff ++#define RADEON_UPLOAD_CONTEXT_ALL 0x003e01ff ++ ++/* New style per-packet identifiers for use in cmd_buffer ioctl with ++ * the RADEON_EMIT_PACKET command. Comments relate new packets to old ++ * state bits and the packet size: ++ */ ++#define RADEON_EMIT_PP_MISC 0 /* context/7 */ ++#define RADEON_EMIT_PP_CNTL 1 /* context/3 */ ++#define RADEON_EMIT_RB3D_COLORPITCH 2 /* context/1 */ ++#define RADEON_EMIT_RE_LINE_PATTERN 3 /* line/2 */ ++#define RADEON_EMIT_SE_LINE_WIDTH 4 /* line/1 */ ++#define RADEON_EMIT_PP_LUM_MATRIX 5 /* bumpmap/1 */ ++#define RADEON_EMIT_PP_ROT_MATRIX_0 6 /* bumpmap/2 */ ++#define RADEON_EMIT_RB3D_STENCILREFMASK 7 /* masks/3 */ ++#define RADEON_EMIT_SE_VPORT_XSCALE 8 /* viewport/6 */ ++#define RADEON_EMIT_SE_CNTL 9 /* setup/2 */ ++#define RADEON_EMIT_SE_CNTL_STATUS 10 /* setup/1 */ ++#define RADEON_EMIT_RE_MISC 11 /* misc/1 */ ++#define RADEON_EMIT_PP_TXFILTER_0 12 /* tex0/6 */ ++#define RADEON_EMIT_PP_BORDER_COLOR_0 13 /* tex0/1 */ ++#define RADEON_EMIT_PP_TXFILTER_1 14 /* tex1/6 */ ++#define RADEON_EMIT_PP_BORDER_COLOR_1 15 /* tex1/1 */ ++#define RADEON_EMIT_PP_TXFILTER_2 16 /* tex2/6 */ ++#define RADEON_EMIT_PP_BORDER_COLOR_2 17 /* tex2/1 */ ++#define RADEON_EMIT_SE_ZBIAS_FACTOR 18 /* zbias/2 */ ++#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19 /* tcl/11 */ ++#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20 /* material/17 */ ++#define R200_EMIT_PP_TXCBLEND_0 21 /* tex0/4 */ ++#define R200_EMIT_PP_TXCBLEND_1 22 /* tex1/4 */ ++#define R200_EMIT_PP_TXCBLEND_2 23 /* tex2/4 */ ++#define R200_EMIT_PP_TXCBLEND_3 24 /* tex3/4 */ ++#define R200_EMIT_PP_TXCBLEND_4 25 /* tex4/4 */ ++#define R200_EMIT_PP_TXCBLEND_5 26 /* tex5/4 */ ++#define R200_EMIT_PP_TXCBLEND_6 27 /* /4 */ ++#define R200_EMIT_PP_TXCBLEND_7 28 /* /4 */ ++#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29 /* tcl/7 */ ++#define R200_EMIT_TFACTOR_0 30 /* tf/7 */ ++#define R200_EMIT_VTX_FMT_0 31 /* vtx/5 */ ++#define R200_EMIT_VAP_CTL 32 /* vap/1 */ ++#define R200_EMIT_MATRIX_SELECT_0 33 /* msl/5 */ ++#define R200_EMIT_TEX_PROC_CTL_2 34 /* tcg/5 */ ++#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35 /* tcl/1 */ ++#define R200_EMIT_PP_TXFILTER_0 36 /* tex0/6 */ ++#define R200_EMIT_PP_TXFILTER_1 37 /* tex1/6 */ ++#define R200_EMIT_PP_TXFILTER_2 38 /* tex2/6 */ ++#define R200_EMIT_PP_TXFILTER_3 39 /* tex3/6 */ ++#define R200_EMIT_PP_TXFILTER_4 40 /* tex4/6 */ ++#define R200_EMIT_PP_TXFILTER_5 41 /* tex5/6 */ ++#define R200_EMIT_PP_TXOFFSET_0 42 /* tex0/1 */ ++#define R200_EMIT_PP_TXOFFSET_1 43 /* tex1/1 */ ++#define R200_EMIT_PP_TXOFFSET_2 44 /* tex2/1 */ ++#define R200_EMIT_PP_TXOFFSET_3 45 /* tex3/1 */ ++#define R200_EMIT_PP_TXOFFSET_4 46 /* tex4/1 */ ++#define R200_EMIT_PP_TXOFFSET_5 47 /* tex5/1 */ ++#define R200_EMIT_VTE_CNTL 48 /* vte/1 */ ++#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49 /* vtx/1 */ ++#define R200_EMIT_PP_TAM_DEBUG3 50 /* tam/1 */ ++#define R200_EMIT_PP_CNTL_X 51 /* cst/1 */ ++#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52 /* cst/1 */ ++#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53 /* cst/1 */ ++#define R200_EMIT_RE_SCISSOR_TL_0 54 /* cst/2 */ ++#define R200_EMIT_RE_SCISSOR_TL_1 55 /* cst/2 */ ++#define R200_EMIT_RE_SCISSOR_TL_2 56 /* cst/2 */ ++#define R200_EMIT_SE_VAP_CNTL_STATUS 57 /* cst/1 */ ++#define R200_EMIT_SE_VTX_STATE_CNTL 58 /* cst/1 */ ++#define R200_EMIT_RE_POINTSIZE 59 /* cst/1 */ ++#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60 /* cst/4 */ ++#define R200_EMIT_PP_CUBIC_FACES_0 61 ++#define R200_EMIT_PP_CUBIC_OFFSETS_0 62 ++#define R200_EMIT_PP_CUBIC_FACES_1 63 ++#define R200_EMIT_PP_CUBIC_OFFSETS_1 64 ++#define R200_EMIT_PP_CUBIC_FACES_2 65 ++#define R200_EMIT_PP_CUBIC_OFFSETS_2 66 ++#define R200_EMIT_PP_CUBIC_FACES_3 67 ++#define R200_EMIT_PP_CUBIC_OFFSETS_3 68 ++#define R200_EMIT_PP_CUBIC_FACES_4 69 ++#define R200_EMIT_PP_CUBIC_OFFSETS_4 70 ++#define R200_EMIT_PP_CUBIC_FACES_5 71 ++#define R200_EMIT_PP_CUBIC_OFFSETS_5 72 ++#define RADEON_EMIT_PP_TEX_SIZE_0 73 ++#define RADEON_EMIT_PP_TEX_SIZE_1 74 ++#define RADEON_EMIT_PP_TEX_SIZE_2 75 ++#define R200_EMIT_RB3D_BLENDCOLOR 76 ++#define R200_EMIT_TCL_POINT_SPRITE_CNTL 77 ++#define RADEON_EMIT_PP_CUBIC_FACES_0 78 ++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T0 79 ++#define RADEON_EMIT_PP_CUBIC_FACES_1 80 ++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T1 81 ++#define RADEON_EMIT_PP_CUBIC_FACES_2 82 ++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T2 83 ++#define R200_EMIT_PP_TRI_PERF_CNTL 84 ++#define R200_EMIT_PP_AFS_0 85 ++#define R200_EMIT_PP_AFS_1 86 ++#define R200_EMIT_ATF_TFACTOR 87 ++#define R200_EMIT_PP_TXCTLALL_0 88 ++#define R200_EMIT_PP_TXCTLALL_1 89 ++#define R200_EMIT_PP_TXCTLALL_2 90 ++#define R200_EMIT_PP_TXCTLALL_3 91 ++#define R200_EMIT_PP_TXCTLALL_4 92 ++#define R200_EMIT_PP_TXCTLALL_5 93 ++#define R200_EMIT_VAP_PVS_CNTL 94 ++#define RADEON_MAX_STATE_PACKETS 95 ++ ++/* Commands understood by cmd_buffer ioctl. More can be added but ++ * obviously these can't be removed or changed: ++ */ ++#define RADEON_CMD_PACKET 1 /* emit one of the register packets above */ ++#define RADEON_CMD_SCALARS 2 /* emit scalar data */ ++#define RADEON_CMD_VECTORS 3 /* emit vector data */ ++#define RADEON_CMD_DMA_DISCARD 4 /* discard current dma buf */ ++#define RADEON_CMD_PACKET3 5 /* emit hw packet */ ++#define RADEON_CMD_PACKET3_CLIP 6 /* emit hw packet wrapped in cliprects */ ++#define RADEON_CMD_SCALARS2 7 /* r200 stopgap */ ++#define RADEON_CMD_WAIT 8 /* emit hw wait commands -- note: ++ * doesn't make the cpu wait, just ++ * the graphics hardware */ ++#define RADEON_CMD_VECLINEAR 9 /* another r200 stopgap */ ++ ++typedef union { ++ int i; ++ struct { ++ unsigned char cmd_type, pad0, pad1, pad2; ++ } header; ++ struct { ++ unsigned char cmd_type, packet_id, pad0, pad1; ++ } packet; ++ struct { ++ unsigned char cmd_type, offset, stride, count; ++ } scalars; ++ struct { ++ unsigned char cmd_type, offset, stride, count; ++ } vectors; ++ struct { ++ unsigned char cmd_type, addr_lo, addr_hi, count; ++ } veclinear; ++ struct { ++ unsigned char cmd_type, buf_idx, pad0, pad1; ++ } dma; ++ struct { ++ unsigned char cmd_type, flags, pad0, pad1; ++ } wait; ++} drm_radeon_cmd_header_t; ++ ++#define RADEON_WAIT_2D 0x1 ++#define RADEON_WAIT_3D 0x2 ++ ++/* Allowed parameters for R300_CMD_PACKET3 ++ */ ++#define R300_CMD_PACKET3_CLEAR 0 ++#define R300_CMD_PACKET3_RAW 1 ++ ++/* Commands understood by cmd_buffer ioctl for R300. ++ * The interface has not been stabilized, so some of these may be removed ++ * and eventually reordered before stabilization. ++ */ ++#define R300_CMD_PACKET0 1 ++#define R300_CMD_VPU 2 /* emit vertex program upload */ ++#define R300_CMD_PACKET3 3 /* emit a packet3 */ ++#define R300_CMD_END3D 4 /* emit sequence ending 3d rendering */ ++#define R300_CMD_CP_DELAY 5 ++#define R300_CMD_DMA_DISCARD 6 ++#define R300_CMD_WAIT 7 ++# define R300_WAIT_2D 0x1 ++# define R300_WAIT_3D 0x2 ++/* these two defines are DOING IT WRONG - however ++ * we have userspace which relies on using these. ++ * The wait interface is backwards compat new ++ * code should use the NEW_WAIT defines below ++ * THESE ARE NOT BIT FIELDS ++ */ ++# define R300_WAIT_2D_CLEAN 0x3 ++# define R300_WAIT_3D_CLEAN 0x4 ++ ++# define R300_NEW_WAIT_2D_3D 0x3 ++# define R300_NEW_WAIT_2D_2D_CLEAN 0x4 ++# define R300_NEW_WAIT_3D_3D_CLEAN 0x6 ++# define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8 ++ ++#define R300_CMD_SCRATCH 8 ++#define R300_CMD_R500FP 9 ++ ++typedef union { ++ unsigned int u; ++ struct { ++ unsigned char cmd_type, pad0, pad1, pad2; ++ } header; ++ struct { ++ unsigned char cmd_type, count, reglo, reghi; ++ } packet0; ++ struct { ++ unsigned char cmd_type, count, adrlo, adrhi; ++ } vpu; ++ struct { ++ unsigned char cmd_type, packet, pad0, pad1; ++ } packet3; ++ struct { ++ unsigned char cmd_type, packet; ++ unsigned short count; /* amount of packet2 to emit */ ++ } delay; ++ struct { ++ unsigned char cmd_type, buf_idx, pad0, pad1; ++ } dma; ++ struct { ++ unsigned char cmd_type, flags, pad0, pad1; ++ } wait; ++ struct { ++ unsigned char cmd_type, reg, n_bufs, flags; ++ } scratch; ++ struct { ++ unsigned char cmd_type, count, adrlo, adrhi_flags; ++ } r500fp; ++} drm_r300_cmd_header_t; ++ ++#define RADEON_FRONT 0x1 ++#define RADEON_BACK 0x2 ++#define RADEON_DEPTH 0x4 ++#define RADEON_STENCIL 0x8 ++#define RADEON_CLEAR_FASTZ 0x80000000 ++#define RADEON_USE_HIERZ 0x40000000 ++#define RADEON_USE_COMP_ZBUF 0x20000000 ++ ++#define R500FP_CONSTANT_TYPE (1 << 1) ++#define R500FP_CONSTANT_CLAMP (1 << 2) ++ ++/* Primitive types ++ */ ++#define RADEON_POINTS 0x1 ++#define RADEON_LINES 0x2 ++#define RADEON_LINE_STRIP 0x3 ++#define RADEON_TRIANGLES 0x4 ++#define RADEON_TRIANGLE_FAN 0x5 ++#define RADEON_TRIANGLE_STRIP 0x6 ++ ++/* Vertex/indirect buffer size ++ */ ++#define RADEON_BUFFER_SIZE 65536 ++ ++/* Byte offsets for indirect buffer data ++ */ ++#define RADEON_INDEX_PRIM_OFFSET 20 ++ ++#define RADEON_SCRATCH_REG_OFFSET 32 ++#define R600_SCRATCH_REG_OFFSET 256 ++ ++#define RADEON_NR_SAREA_CLIPRECTS 12 ++ ++/* There are 2 heaps (local/GART). Each region within a heap is a ++ * minimum of 64k, and there are at most 64 of them per heap. ++ */ ++#define RADEON_LOCAL_TEX_HEAP 0 ++#define RADEON_GART_TEX_HEAP 1 ++#define RADEON_NR_TEX_HEAPS 2 ++#define RADEON_NR_TEX_REGIONS 64 ++#define RADEON_LOG_TEX_GRANULARITY 16 ++ ++#define RADEON_MAX_TEXTURE_LEVELS 12 ++#define RADEON_MAX_TEXTURE_UNITS 3 ++ ++#define RADEON_MAX_SURFACES 8 ++ ++/* Blits have strict offset rules. All blit offset must be aligned on ++ * a 1K-byte boundary. ++ */ ++#define RADEON_OFFSET_SHIFT 10 ++#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT) ++#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1) ++ ++#endif /* __RADEON_SAREA_DEFINES__ */ ++ ++typedef struct { ++ unsigned int red; ++ unsigned int green; ++ unsigned int blue; ++ unsigned int alpha; ++} radeon_color_regs_t; ++ ++typedef struct { ++ /* Context state */ ++ unsigned int pp_misc; /* 0x1c14 */ ++ unsigned int pp_fog_color; ++ unsigned int re_solid_color; ++ unsigned int rb3d_blendcntl; ++ unsigned int rb3d_depthoffset; ++ unsigned int rb3d_depthpitch; ++ unsigned int rb3d_zstencilcntl; ++ ++ unsigned int pp_cntl; /* 0x1c38 */ ++ unsigned int rb3d_cntl; ++ unsigned int rb3d_coloroffset; ++ unsigned int re_width_height; ++ unsigned int rb3d_colorpitch; ++ unsigned int se_cntl; ++ ++ /* Vertex format state */ ++ unsigned int se_coord_fmt; /* 0x1c50 */ ++ ++ /* Line state */ ++ unsigned int re_line_pattern; /* 0x1cd0 */ ++ unsigned int re_line_state; ++ ++ unsigned int se_line_width; /* 0x1db8 */ ++ ++ /* Bumpmap state */ ++ unsigned int pp_lum_matrix; /* 0x1d00 */ ++ ++ unsigned int pp_rot_matrix_0; /* 0x1d58 */ ++ unsigned int pp_rot_matrix_1; ++ ++ /* Mask state */ ++ unsigned int rb3d_stencilrefmask; /* 0x1d7c */ ++ unsigned int rb3d_ropcntl; ++ unsigned int rb3d_planemask; ++ ++ /* Viewport state */ ++ unsigned int se_vport_xscale; /* 0x1d98 */ ++ unsigned int se_vport_xoffset; ++ unsigned int se_vport_yscale; ++ unsigned int se_vport_yoffset; ++ unsigned int se_vport_zscale; ++ unsigned int se_vport_zoffset; ++ ++ /* Setup state */ ++ unsigned int se_cntl_status; /* 0x2140 */ ++ ++ /* Misc state */ ++ unsigned int re_top_left; /* 0x26c0 */ ++ unsigned int re_misc; ++} drm_radeon_context_regs_t; ++ ++typedef struct { ++ /* Zbias state */ ++ unsigned int se_zbias_factor; /* 0x1dac */ ++ unsigned int se_zbias_constant; ++} drm_radeon_context2_regs_t; ++ ++/* Setup registers for each texture unit ++ */ ++typedef struct { ++ unsigned int pp_txfilter; ++ unsigned int pp_txformat; ++ unsigned int pp_txoffset; ++ unsigned int pp_txcblend; ++ unsigned int pp_txablend; ++ unsigned int pp_tfactor; ++ unsigned int pp_border_color; ++} drm_radeon_texture_regs_t; ++ ++typedef struct { ++ unsigned int start; ++ unsigned int finish; ++ unsigned int prim:8; ++ unsigned int stateidx:8; ++ unsigned int numverts:16; /* overloaded as offset/64 for elt prims */ ++ unsigned int vc_format; /* vertex format */ ++} drm_radeon_prim_t; ++ ++typedef struct { ++ drm_radeon_context_regs_t context; ++ drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS]; ++ drm_radeon_context2_regs_t context2; ++ unsigned int dirty; ++} drm_radeon_state_t; ++ ++typedef struct { ++ /* The channel for communication of state information to the ++ * kernel on firing a vertex buffer with either of the ++ * obsoleted vertex/index ioctls. ++ */ ++ drm_radeon_context_regs_t context_state; ++ drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS]; ++ unsigned int dirty; ++ unsigned int vertsize; ++ unsigned int vc_format; ++ ++ /* The current cliprects, or a subset thereof. ++ */ ++ struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS]; ++ unsigned int nbox; ++ ++ /* Counters for client-side throttling of rendering clients. ++ */ ++ unsigned int last_frame; ++ unsigned int last_dispatch; ++ unsigned int last_clear; ++ ++ struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS + ++ 1]; ++ unsigned int tex_age[RADEON_NR_TEX_HEAPS]; ++ int ctx_owner; ++ int pfState; /* number of 3d windows (0,1,2ormore) */ ++ int pfCurrentPage; /* which buffer is being displayed? */ ++ int crtc2_base; /* CRTC2 frame offset */ ++ int tiling_enabled; /* set by drm, read by 2d + 3d clients */ ++} drm_radeon_sarea_t; ++ ++/* WARNING: If you change any of these defines, make sure to change the ++ * defines in the Xserver file (xf86drmRadeon.h) ++ * ++ * KW: actually it's illegal to change any of this (backwards compatibility). ++ */ ++ ++/* Radeon specific ioctls ++ * The device specific ioctl range is 0x40 to 0x79. ++ */ ++#define DRM_RADEON_CP_INIT 0x00 ++#define DRM_RADEON_CP_START 0x01 ++#define DRM_RADEON_CP_STOP 0x02 ++#define DRM_RADEON_CP_RESET 0x03 ++#define DRM_RADEON_CP_IDLE 0x04 ++#define DRM_RADEON_RESET 0x05 ++#define DRM_RADEON_FULLSCREEN 0x06 ++#define DRM_RADEON_SWAP 0x07 ++#define DRM_RADEON_CLEAR 0x08 ++#define DRM_RADEON_VERTEX 0x09 ++#define DRM_RADEON_INDICES 0x0A ++#define DRM_RADEON_NOT_USED ++#define DRM_RADEON_STIPPLE 0x0C ++#define DRM_RADEON_INDIRECT 0x0D ++#define DRM_RADEON_TEXTURE 0x0E ++#define DRM_RADEON_VERTEX2 0x0F ++#define DRM_RADEON_CMDBUF 0x10 ++#define DRM_RADEON_GETPARAM 0x11 ++#define DRM_RADEON_FLIP 0x12 ++#define DRM_RADEON_ALLOC 0x13 ++#define DRM_RADEON_FREE 0x14 ++#define DRM_RADEON_INIT_HEAP 0x15 ++#define DRM_RADEON_IRQ_EMIT 0x16 ++#define DRM_RADEON_IRQ_WAIT 0x17 ++#define DRM_RADEON_CP_RESUME 0x18 ++#define DRM_RADEON_SETPARAM 0x19 ++#define DRM_RADEON_SURF_ALLOC 0x1a ++#define DRM_RADEON_SURF_FREE 0x1b ++ ++#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t) ++#define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START) ++#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t) ++#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESET) ++#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE) ++#define DRM_IOCTL_RADEON_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_RESET) ++#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t) ++#define DRM_IOCTL_RADEON_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_SWAP) ++#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t) ++#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t) ++#define DRM_IOCTL_RADEON_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t) ++#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t) ++#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t) ++#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t) ++#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t) ++#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t) ++#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t) ++#define DRM_IOCTL_RADEON_FLIP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_FLIP) ++#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t) ++#define DRM_IOCTL_RADEON_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t) ++#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t) ++#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t) ++#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t) ++#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME) ++#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t) ++#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t) ++#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t) ++ ++typedef struct drm_radeon_init { ++ enum { ++ RADEON_INIT_CP = 0x01, ++ RADEON_CLEANUP_CP = 0x02, ++ RADEON_INIT_R200_CP = 0x03, ++ RADEON_INIT_R300_CP = 0x04, ++ RADEON_INIT_R600_CP = 0x05, ++ } func; ++ unsigned long sarea_priv_offset; ++ int is_pci; /* for overriding only */ ++ int cp_mode; ++ int gart_size; ++ int ring_size; ++ int usec_timeout; ++ ++ unsigned int fb_bpp; ++ unsigned int front_offset, front_pitch; ++ unsigned int back_offset, back_pitch; ++ unsigned int depth_bpp; ++ unsigned int depth_offset, depth_pitch; ++ ++ /* DEPRECATED commented out below to allow for -Werror build */ ++ unsigned long fb_offset /*DEPRECATED*/; /* deprecated, driver asks hardware */ ++ unsigned long mmio_offset /*DEPRECATED*/; /* deprecated, driver asks hardware */ ++ unsigned long ring_offset; ++ unsigned long ring_rptr_offset; ++ unsigned long buffers_offset; ++ unsigned long gart_textures_offset; ++} drm_radeon_init_t; ++ ++typedef struct drm_radeon_cp_stop { ++ int flush; ++ int idle; ++} drm_radeon_cp_stop_t; ++ ++typedef struct drm_radeon_fullscreen { ++ enum { ++ RADEON_INIT_FULLSCREEN = 0x01, ++ RADEON_CLEANUP_FULLSCREEN = 0x02 ++ } func; ++} drm_radeon_fullscreen_t; ++ ++#define CLEAR_X1 0 ++#define CLEAR_Y1 1 ++#define CLEAR_X2 2 ++#define CLEAR_Y2 3 ++#define CLEAR_DEPTH 4 ++ ++typedef union drm_radeon_clear_rect { ++ float f[5]; ++ unsigned int ui[5]; ++} drm_radeon_clear_rect_t; ++ ++typedef struct drm_radeon_clear { ++ unsigned int flags; ++ unsigned int clear_color; ++ unsigned int clear_depth; ++ unsigned int color_mask; ++ unsigned int depth_mask; /* misnamed field: should be stencil */ ++ drm_radeon_clear_rect_t __user *depth_boxes; ++} drm_radeon_clear_t; ++ ++typedef struct drm_radeon_vertex { ++ int prim; ++ int idx; /* Index of vertex buffer */ ++ int count; /* Number of vertices in buffer */ ++ int discard; /* Client finished with buffer? */ ++} drm_radeon_vertex_t; ++ ++typedef struct drm_radeon_indices { ++ int prim; ++ int idx; ++ int start; ++ int end; ++ int discard; /* Client finished with buffer? */ ++} drm_radeon_indices_t; ++ ++/* v1.2 - obsoletes drm_radeon_vertex and drm_radeon_indices ++ * - allows multiple primitives and state changes in a single ioctl ++ * - supports driver change to emit native primitives ++ */ ++typedef struct drm_radeon_vertex2 { ++ int idx; /* Index of vertex buffer */ ++ int discard; /* Client finished with buffer? */ ++ int nr_states; ++ drm_radeon_state_t __user *state; ++ int nr_prims; ++ drm_radeon_prim_t __user *prim; ++} drm_radeon_vertex2_t; ++ ++/* v1.3 - obsoletes drm_radeon_vertex2 ++ * - allows arbitarily large cliprect list ++ * - allows updating of tcl packet, vector and scalar state ++ * - allows memory-efficient description of state updates ++ * - allows state to be emitted without a primitive ++ * (for clears, ctx switches) ++ * - allows more than one dma buffer to be referenced per ioctl ++ * - supports tcl driver ++ * - may be extended in future versions with new cmd types, packets ++ */ ++typedef struct drm_radeon_cmd_buffer { ++ int bufsz; ++ char __user *buf; ++ int nbox; ++ struct drm_clip_rect __user *boxes; ++} drm_radeon_cmd_buffer_t; ++ ++typedef struct drm_radeon_tex_image { ++ unsigned int x, y; /* Blit coordinates */ ++ unsigned int width, height; ++ const void __user *data; ++} drm_radeon_tex_image_t; ++ ++typedef struct drm_radeon_texture { ++ unsigned int offset; ++ int pitch; ++ int format; ++ int width; /* Texture image coordinates */ ++ int height; ++ drm_radeon_tex_image_t __user *image; ++} drm_radeon_texture_t; ++ ++typedef struct drm_radeon_stipple { ++ unsigned int __user *mask; ++} drm_radeon_stipple_t; ++ ++typedef struct drm_radeon_indirect { ++ int idx; ++ int start; ++ int end; ++ int discard; ++} drm_radeon_indirect_t; ++ ++#define RADEON_INDIRECT_DISCARD (1 << 0) ++#define RADEON_INDIRECT_NOFLUSH (1 << 1) ++ ++/* enum for card type parameters */ ++#define RADEON_CARD_PCI 0 ++#define RADEON_CARD_AGP 1 ++#define RADEON_CARD_PCIE 2 ++ ++/* 1.3: An ioctl to get parameters that aren't available to the 3d ++ * client any other way. ++ */ ++#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */ ++#define RADEON_PARAM_LAST_FRAME 2 ++#define RADEON_PARAM_LAST_DISPATCH 3 ++#define RADEON_PARAM_LAST_CLEAR 4 ++/* Added with DRM version 1.6. */ ++#define RADEON_PARAM_IRQ_NR 5 ++#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */ ++/* Added with DRM version 1.8. */ ++#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */ ++#define RADEON_PARAM_STATUS_HANDLE 8 ++#define RADEON_PARAM_SAREA_HANDLE 9 ++#define RADEON_PARAM_GART_TEX_HANDLE 10 ++#define RADEON_PARAM_SCRATCH_OFFSET 11 ++#define RADEON_PARAM_CARD_TYPE 12 ++#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ ++#define RADEON_PARAM_FB_LOCATION 14 /* FB location */ ++#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */ ++ ++typedef struct drm_radeon_getparam { ++ int param; ++ void __user *value; ++} drm_radeon_getparam_t; ++ ++/* 1.6: Set up a memory manager for regions of shared memory: ++ */ ++#define RADEON_MEM_REGION_GART 1 ++#define RADEON_MEM_REGION_FB 2 ++ ++typedef struct drm_radeon_mem_alloc { ++ int region; ++ int alignment; ++ int size; ++ int __user *region_offset; /* offset from start of fb or GART */ ++} drm_radeon_mem_alloc_t; ++ ++typedef struct drm_radeon_mem_free { ++ int region; ++ int region_offset; ++} drm_radeon_mem_free_t; ++ ++typedef struct drm_radeon_mem_init_heap { ++ int region; ++ int size; ++ int start; ++} drm_radeon_mem_init_heap_t; ++ ++/* 1.6: Userspace can request & wait on irq's: ++ */ ++typedef struct drm_radeon_irq_emit { ++ int __user *irq_seq; ++} drm_radeon_irq_emit_t; ++ ++typedef struct drm_radeon_irq_wait { ++ int irq_seq; ++} drm_radeon_irq_wait_t; ++ ++/* 1.10: Clients tell the DRM where they think the framebuffer is located in ++ * the card's address space, via a new generic ioctl to set parameters ++ */ ++ ++typedef struct drm_radeon_setparam { ++ unsigned int param; ++ int64_t value; ++} drm_radeon_setparam_t; ++ ++#define RADEON_SETPARAM_FB_LOCATION 1 /* determined framebuffer location */ ++#define RADEON_SETPARAM_SWITCH_TILING 2 /* enable/disable color tiling */ ++#define RADEON_SETPARAM_PCIGART_LOCATION 3 /* PCI Gart Location */ ++ ++#define RADEON_SETPARAM_NEW_MEMMAP 4 /* Use new memory map */ ++#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 /* PCI GART Table Size */ ++#define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */ ++/* 1.14: Clients can allocate/free a surface ++ */ ++typedef struct drm_radeon_surface_alloc { ++ unsigned int address; ++ unsigned int size; ++ unsigned int flags; ++} drm_radeon_surface_alloc_t; ++ ++typedef struct drm_radeon_surface_free { ++ unsigned int address; ++} drm_radeon_surface_free_t; ++ ++#define DRM_RADEON_VBLANK_CRTC1 1 ++#define DRM_RADEON_VBLANK_CRTC2 2 ++ ++#endif +diff --git a/src/radeon_exa.c b/src/radeon_exa.c +index f461f3c..0f86fdd 100644 +--- a/src/radeon_exa.c ++++ b/src/radeon_exa.c +@@ -36,14 +36,11 @@ + #include "radeon.h" + #include "radeon_reg.h" + #ifdef XF86DRI +-#include "radeon_dri.h" ++#include "radeon_drm.h" + #endif + #include "radeon_macros.h" + #include "radeon_probe.h" + #include "radeon_version.h" +-#ifdef XF86DRI +-#include "radeon_sarea.h" +-#endif + + #include "xf86.h" + +@@ -164,10 +161,10 @@ static Bool RADEONGetOffsetPitch(PixmapPtr pPix, int bpp, uint32_t *pitch_offset + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + +- if (pitch > 16320 || pitch % info->exa->pixmapPitchAlign != 0) ++ if (pitch > 16320 || pitch % info->accel_state->exa->pixmapPitchAlign != 0) + RADEON_FALLBACK(("Bad pitch 0x%08x\n", pitch)); + +- if (offset % info->exa->pixmapOffsetAlign != 0) ++ if (offset % info->accel_state->exa->pixmapOffsetAlign != 0) + RADEON_FALLBACK(("Bad offset 0x%08x\n", offset)); + + pitch = pitch >> 6; +@@ -237,14 +234,14 @@ static Bool RADEONPrepareAccess(PixmapPtr pPix, int index) + } + #if defined(XF86DRI) + if (info->directRenderingEnabled && info->allowColorTiling) { +- drmRadeonSurfaceAlloc drmsurfalloc; ++ struct drm_radeon_surface_alloc drmsurfalloc; + int rc; + + drmsurfalloc.address = offset; + drmsurfalloc.size = size; + drmsurfalloc.flags = flags | 1; /* bogus pitch to please DRM */ + +- rc = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ rc = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (rc < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +@@ -280,10 +277,10 @@ static void RADEONFinishAccess(PixmapPtr pPix, int index) + return; + #if defined(XF86DRI) + if (info->directRenderingEnabled && info->allowColorTiling) { +- drmRadeonSurfaceFree drmsurffree; ++ struct drm_radeon_surface_free drmsurffree; + + drmsurffree.address = offset; +- drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + swapper_surfaces[index] = 0; + return; +@@ -302,7 +299,7 @@ static void RADEONFinishAccess(PixmapPtr pPix, int index) + do { \ + uint32_t wait_until = 0; \ + BEGIN_ACCEL(1); \ +- switch (info->engineMode) { \ ++ switch (info->accel_state->engineMode) { \ + case EXA_ENGINEMODE_UNKNOWN: \ + wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN; \ + case EXA_ENGINEMODE_3D: \ +@@ -312,14 +309,14 @@ do { \ + } \ + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until); \ + FINISH_ACCEL(); \ +- info->engineMode = EXA_ENGINEMODE_2D; \ ++ info->accel_state->engineMode = EXA_ENGINEMODE_2D; \ + } while (0); + + #define RADEON_SWITCH_TO_3D() \ + do { \ + uint32_t wait_until = 0; \ + BEGIN_ACCEL(1); \ +- switch (info->engineMode) { \ ++ switch (info->accel_state->engineMode) { \ + case EXA_ENGINEMODE_UNKNOWN: \ + wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_3D_IDLECLEAN; \ + case EXA_ENGINEMODE_2D: \ +@@ -329,7 +326,7 @@ do { \ + } \ + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until); \ + FINISH_ACCEL(); \ +- info->engineMode = EXA_ENGINEMODE_3D; \ ++ info->accel_state->engineMode = EXA_ENGINEMODE_3D; \ + } while (0); + + #define ENTER_DRAW(x) TRACE +@@ -352,6 +349,7 @@ do { \ + #undef ACCEL_PREAMBLE + #undef BEGIN_ACCEL + #undef OUT_ACCEL_REG ++#undef OUT_ACCEL_REG_F + #undef FINISH_ACCEL + + #ifdef XF86DRI +@@ -371,6 +369,13 @@ do { \ + #endif + #include "radeon_exa_funcs.c" + ++#undef ACCEL_CP ++#undef ACCEL_PREAMBLE ++#undef BEGIN_ACCEL ++#undef OUT_ACCEL_REG ++#undef FINISH_ACCEL ++#undef OUT_RING_F ++ + #endif /* XF86DRI */ + + /* +@@ -386,12 +391,12 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + int screen_size; + int byteStride = pScrn->displayWidth * cpp; + +- if (info->exa != NULL) { ++ if (info->accel_state->exa != NULL) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map already initialized\n"); + return FALSE; + } +- info->exa = exaDriverAlloc(); +- if (info->exa == NULL) ++ info->accel_state->exa = exaDriverAlloc(); ++ if (info->accel_state->exa == NULL) + return FALSE; + + /* Need to adjust screen size for 16 line tiles, and then make it align to. +@@ -402,53 +407,52 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + else + screen_size = pScrn->virtualY * byteStride; + +- info->exa->memoryBase = info->FB; +- info->exa->memorySize = info->FbMapSize - info->FbSecureSize; +- info->exa->offScreenBase = screen_size; ++ info->accel_state->exa->memoryBase = info->FB; ++ info->accel_state->exa->memorySize = info->FbMapSize - info->FbSecureSize; ++ info->accel_state->exa->offScreenBase = screen_size; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Allocating from a screen of %ld kb\n", +- info->exa->memorySize / 1024); +- ++ info->accel_state->exa->memorySize / 1024); + + /* Reserve static area for hardware cursor */ + if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) { +- int cursor_size = 64 * 4 * 64; +- int c; +- +- for (c = 0; c < xf86_config->num_crtc; c++) { +- xf86CrtcPtr crtc = xf86_config->crtc[c]; +- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; +- +- radeon_crtc->cursor_offset = info->exa->offScreenBase; +- info->exa->offScreenBase += cursor_size; +- +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Will use %d kb for hardware cursor %d at offset 0x%08x\n", +- (cursor_size * xf86_config->num_crtc) / 1024, +- c, +- (unsigned int)radeon_crtc->cursor_offset); +- } +- +- ++ int cursor_size = 64 * 4 * 64; ++ int align = IS_AVIVO_VARIANT ? 4096 : 256; ++ int c; ++ ++ for (c = 0; c < xf86_config->num_crtc; c++) { ++ xf86CrtcPtr crtc = xf86_config->crtc[c]; ++ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; ++ ++ radeon_crtc->cursor_offset = ++ RADEON_ALIGN(info->accel_state->exa->offScreenBase, align); ++ info->accel_state->exa->offScreenBase = radeon_crtc->cursor_offset + cursor_size; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Will use %d kb for hardware cursor %d at offset 0x%08x\n", ++ (cursor_size * xf86_config->num_crtc) / 1024, ++ c, ++ (unsigned int)radeon_crtc->cursor_offset); ++ } + } + + #if defined(XF86DRI) + if (info->directRenderingEnabled) { +- int depthCpp = (info->depthBits - 8) / 4, l, next, depth_size; ++ int depthCpp = (info->dri->depthBits - 8) / 4, l, next, depth_size; + +- info->frontOffset = 0; +- info->frontPitch = pScrn->displayWidth; ++ info->dri->frontOffset = 0; ++ info->dri->frontPitch = pScrn->displayWidth; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for front buffer at offset 0x%08x\n", +- screen_size / 1024, info->frontOffset); ++ screen_size / 1024, info->dri->frontOffset); + RADEONDRIAllocatePCIGARTTable(pScreen); + + if (info->cardType==CARD_PCIE) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for PCI GART at offset 0x%08x\n", +- info->pciGartSize / 1024, +- (int)info->pciGartOffset); ++ info->dri->pciGartSize / 1024, ++ (int)info->dri->pciGartOffset); + + /* Reserve a static area for the back buffer the same size as the + * visible screen. XXX: This would be better initialized in ati_dri.c +@@ -456,49 +460,49 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + * don't last through VT switches, while the kernel's understanding of + * offscreen locations does. + */ +- info->backPitch = pScrn->displayWidth; +- next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN); +- if (!info->noBackBuffer && +- next + screen_size <= info->exa->memorySize) ++ info->dri->backPitch = pScrn->displayWidth; ++ next = RADEON_ALIGN(info->accel_state->exa->offScreenBase, RADEON_BUFFER_ALIGN); ++ if (!info->dri->noBackBuffer && ++ next + screen_size <= info->accel_state->exa->memorySize) + { +- info->backOffset = next; +- info->exa->offScreenBase = next + screen_size; ++ info->dri->backOffset = next; ++ info->accel_state->exa->offScreenBase = next + screen_size; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for back buffer at offset 0x%08x\n", +- screen_size / 1024, info->backOffset); ++ screen_size / 1024, info->dri->backOffset); + } + + /* Reserve the static depth buffer, and adjust pitch and height to + * handle tiling. + */ +- info->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32); +- depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->depthPitch * depthCpp; +- next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN); +- if (next + depth_size <= info->exa->memorySize) ++ info->dri->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32); ++ depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->dri->depthPitch * depthCpp; ++ next = RADEON_ALIGN(info->accel_state->exa->offScreenBase, RADEON_BUFFER_ALIGN); ++ if (next + depth_size <= info->accel_state->exa->memorySize) + { +- info->depthOffset = next; +- info->exa->offScreenBase = next + depth_size; ++ info->dri->depthOffset = next; ++ info->accel_state->exa->offScreenBase = next + depth_size; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for depth buffer at offset 0x%08x\n", +- depth_size / 1024, info->depthOffset); ++ depth_size / 1024, info->dri->depthOffset); + } + +- info->textureSize *= (info->exa->memorySize - +- info->exa->offScreenBase) / 100; ++ info->dri->textureSize *= (info->accel_state->exa->memorySize - ++ info->accel_state->exa->offScreenBase) / 100; + +- l = RADEONLog2(info->textureSize / RADEON_NR_TEX_REGIONS); ++ l = RADEONLog2(info->dri->textureSize / RADEON_NR_TEX_REGIONS); + if (l < RADEON_LOG_TEX_GRANULARITY) + l = RADEON_LOG_TEX_GRANULARITY; +- info->textureSize = (info->textureSize >> l) << l; +- if (info->textureSize >= 512 * 1024) { +- info->textureOffset = info->exa->offScreenBase; +- info->exa->offScreenBase += info->textureSize; ++ info->dri->textureSize = (info->dri->textureSize >> l) << l; ++ if (info->dri->textureSize >= 512 * 1024) { ++ info->dri->textureOffset = info->accel_state->exa->offScreenBase; ++ info->accel_state->exa->offScreenBase += info->dri->textureSize; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for textures at offset 0x%08x\n", +- info->textureSize / 1024, info->textureOffset); ++ info->dri->textureSize / 1024, info->dri->textureOffset); + } else { + /* Minimum texture size is for 2 256x256x32bpp textures */ +- info->textureSize = 0; ++ info->dri->textureSize = 0; + } + } else + #endif /* XF86DRI */ +@@ -508,8 +512,8 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %ld kb for X Server offscreen at offset 0x%08lx\n", +- (info->exa->memorySize - info->exa->offScreenBase) / +- 1024, info->exa->offScreenBase); ++ (info->accel_state->exa->memorySize - info->accel_state->exa->offScreenBase) / ++ 1024, info->accel_state->exa->offScreenBase); + + return TRUE; + } +diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c +index 56de23e..62224d0 100644 +--- a/src/radeon_exa_funcs.c ++++ b/src/radeon_exa_funcs.c +@@ -65,7 +65,7 @@ FUNC_NAME(RADEONMarkSync)(ScreenPtr pScreen) + + TRACE; + +- return ++info->exaSyncMarker; ++ return ++info->accel_state->exaSyncMarker; + } + + static void +@@ -76,12 +76,12 @@ FUNC_NAME(RADEONSync)(ScreenPtr pScreen, int marker) + + TRACE; + +- if (info->exaMarkerSynced != marker) { ++ if (info->accel_state->exaMarkerSynced != marker) { + FUNC_NAME(RADEONWaitForIdle)(pScrn); +- info->exaMarkerSynced = marker; ++ info->accel_state->exaMarkerSynced = marker; + } + +- RADEONPTR(pScrn)->engineMode = EXA_ENGINEMODE_UNKNOWN; ++ RADEONPTR(pScrn)->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN; + } + + static Bool +@@ -172,8 +172,8 @@ FUNC_NAME(RADEONDoPrepareCopy)(ScrnInfoPtr pScrn, uint32_t src_pitch_offset, + RADEON_GMC_CLR_CMP_CNTL_DIS); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_CNTL, +- ((info->xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) | +- (info->ydir >= 0 ? RADEON_DST_Y_TOP_TO_BOTTOM : 0))); ++ ((info->accel_state->xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) | ++ (info->accel_state->ydir >= 0 ? RADEON_DST_Y_TOP_TO_BOTTOM : 0))); + OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, dst_pitch_offset); + OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, src_pitch_offset); + FINISH_ACCEL(); +@@ -190,8 +190,8 @@ FUNC_NAME(RADEONPrepareCopy)(PixmapPtr pSrc, PixmapPtr pDst, + + TRACE; + +- info->xdir = xdir; +- info->ydir = ydir; ++ info->accel_state->xdir = xdir; ++ info->accel_state->ydir = ydir; + + if (pDst->drawable.bitsPerPixel == 24) + RADEON_FALLBACK(("24bpp unsupported")); +@@ -219,11 +219,11 @@ FUNC_NAME(RADEONCopy)(PixmapPtr pDst, + + TRACE; + +- if (info->xdir < 0) { ++ if (info->accel_state->xdir < 0) { + srcX += w - 1; + dstX += w - 1; + } +- if (info->ydir < 0) { ++ if (info->accel_state->ydir < 0) { + srcY += h - 1; + dstY += h - 1; + } +@@ -401,9 +401,9 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, + int swap = RADEON_HOST_DATA_SWAP_NONE, wpass = w * bpp / 8; + int hpass = min(h, scratch->total/2 / scratch_pitch); + uint32_t scratch_pitch_offset = scratch_pitch << 16 +- | (info->gartLocation + info->bufStart ++ | (info->gartLocation + info->dri->bufStart + + scratch->idx * scratch->total) >> 10; +- drmRadeonIndirect indirect; ++ drm_radeon_indirect_t indirect; + ACCEL_PREAMBLE(); + + RADEON_SWITCH_TO_2D(); +@@ -450,7 +450,7 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, + * we'd really need is a way to reliably wait for the host interface + * to be done with pushing the data to the host. + */ +- while ((drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY) ++ while ((drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY) + && (i++ < RADEON_TIMEOUT)) + ; + +@@ -473,10 +473,10 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, + indirect.start = indirect.end = 0; + indirect.discard = 1; + +- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT, +- &indirect, sizeof(drmRadeonIndirect)); ++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT, ++ &indirect, sizeof(drm_radeon_indirect_t)); + +- info->exaMarkerSynced = info->exaSyncMarker; ++ info->accel_state->exaMarkerSynced = info->accel_state->exaSyncMarker; + + return TRUE; + } +@@ -522,35 +522,35 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + { + RINFO_FROM_SCREEN(pScreen); + +- if (info->exa == NULL) { ++ if (info->accel_state->exa == NULL) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map not set up\n"); + return FALSE; + } + +- info->exa->exa_major = EXA_VERSION_MAJOR; +- info->exa->exa_minor = EXA_VERSION_MINOR; ++ info->accel_state->exa->exa_major = EXA_VERSION_MAJOR; ++ info->accel_state->exa->exa_minor = EXA_VERSION_MINOR; + +- info->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid); +- info->exa->Solid = FUNC_NAME(RADEONSolid); +- info->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid); ++ info->accel_state->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid); ++ info->accel_state->exa->Solid = FUNC_NAME(RADEONSolid); ++ info->accel_state->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid); + +- info->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy); +- info->exa->Copy = FUNC_NAME(RADEONCopy); +- info->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy); ++ info->accel_state->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy); ++ info->accel_state->exa->Copy = FUNC_NAME(RADEONCopy); ++ info->accel_state->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy); + +- info->exa->MarkSync = FUNC_NAME(RADEONMarkSync); +- info->exa->WaitMarker = FUNC_NAME(RADEONSync); +- info->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen); +- info->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen); ++ info->accel_state->exa->MarkSync = FUNC_NAME(RADEONMarkSync); ++ info->accel_state->exa->WaitMarker = FUNC_NAME(RADEONSync); ++ info->accel_state->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen); ++ info->accel_state->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen); + + #if X_BYTE_ORDER == X_BIG_ENDIAN +- info->exa->PrepareAccess = RADEONPrepareAccess; +- info->exa->FinishAccess = RADEONFinishAccess; ++ info->accel_state->exa->PrepareAccess = RADEONPrepareAccess; ++ info->accel_state->exa->FinishAccess = RADEONFinishAccess; + #endif /* X_BYTE_ORDER == X_BIG_ENDIAN */ + +- info->exa->flags = EXA_OFFSCREEN_PIXMAPS; +- info->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1; +- info->exa->pixmapPitchAlign = 64; ++ info->accel_state->exa->flags = EXA_OFFSCREEN_PIXMAPS; ++ info->accel_state->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1; ++ info->accel_state->exa->pixmapPitchAlign = 64; + + #ifdef RENDER + if (info->RenderAccel) { +@@ -565,11 +565,11 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + ) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " + "enabled for R300/R400/R500 type cards.\n"); +- info->exa->CheckComposite = R300CheckComposite; +- info->exa->PrepareComposite = ++ info->accel_state->exa->CheckComposite = R300CheckComposite; ++ info->accel_state->exa->PrepareComposite = + FUNC_NAME(R300PrepareComposite); +- info->exa->Composite = FUNC_NAME(RadeonComposite); +- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); ++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite); ++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); + } else + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Composite requires CP on R5xx/IGP\n"); + } else if ((info->ChipFamily == CHIP_FAMILY_RV250) || +@@ -578,19 +578,19 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + (info->ChipFamily == CHIP_FAMILY_R200)) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " + "enabled for R200 type cards.\n"); +- info->exa->CheckComposite = R200CheckComposite; +- info->exa->PrepareComposite = ++ info->accel_state->exa->CheckComposite = R200CheckComposite; ++ info->accel_state->exa->PrepareComposite = + FUNC_NAME(R200PrepareComposite); +- info->exa->Composite = FUNC_NAME(RadeonComposite); +- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); ++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite); ++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " + "enabled for R100 type cards.\n"); +- info->exa->CheckComposite = R100CheckComposite; +- info->exa->PrepareComposite = ++ info->accel_state->exa->CheckComposite = R100CheckComposite; ++ info->accel_state->exa->PrepareComposite = + FUNC_NAME(R100PrepareComposite); +- info->exa->Composite = FUNC_NAME(RadeonComposite); +- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); ++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite); ++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); + } + } + #endif +@@ -598,17 +598,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + #if EXA_VERSION_MAJOR > 2 || (EXA_VERSION_MAJOR == 2 && EXA_VERSION_MINOR >= 3) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting EXA maxPitchBytes\n"); + +- info->exa->maxPitchBytes = 16320; +- info->exa->maxX = 8192; ++ info->accel_state->exa->maxPitchBytes = 16320; ++ info->accel_state->exa->maxX = 8192; + #else +- info->exa->maxX = 16320 / 4; ++ info->accel_state->exa->maxX = 16320 / 4; + #endif +- info->exa->maxY = 8192; ++ info->accel_state->exa->maxY = 8192; + + RADEONEngineInit(pScrn); + +- if (!exaDriverInit(pScreen, info->exa)) { +- xfree(info->exa); ++ if (!exaDriverInit(pScreen, info->accel_state->exa)) { ++ xfree(info->accel_state->exa); + return FALSE; + } + exaMarkSync(pScreen); +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index 4736e4f..97199ae 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -56,15 +56,6 @@ + + /* Only include the following (generic) bits once. */ + #ifdef ONLY_ONCE +-static Bool is_transform[2]; +-static PictTransform *transform[2]; +-static Bool has_mask; +-/* Whether we are tiling horizontally and vertically */ +-static Bool need_src_tile_x; +-static Bool need_src_tile_y; +-/* Size of tiles ... set to 65536x65536 if not tiling in that direction */ +-static Bool src_tile_width; +-static Bool src_tile_height; + + struct blendinfo { + Bool dst_alpha; +@@ -287,8 +278,10 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict, + Bool canTile1d, + Bool needMatchingPitch) + { +- need_src_tile_x = need_src_tile_y = FALSE; +- src_tile_width = src_tile_height = 65536; /* "infinite" */ ++ RINFO_FROM_SCREEN(pPix->drawable.pScreen); ++ ++ info->accel_state->need_src_tile_x = info->accel_state->need_src_tile_y = FALSE; ++ info->accel_state->src_tile_width = info->accel_state->src_tile_height = 65536; /* "infinite" */ + + if (pPict->repeat) { + Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix); +@@ -301,17 +294,19 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict, + RADEON_FALLBACK(("Width %d and pitch %u not compatible for repeat\n", + w, (unsigned)exaGetPixmapPitch(pPix))); + } else { +- need_src_tile_x = (w & (w - 1)) != 0 || badPitch; +- need_src_tile_y = (h & (h - 1)) != 0; ++ info->accel_state->need_src_tile_x = (w & (w - 1)) != 0 || badPitch; ++ info->accel_state->need_src_tile_y = (h & (h - 1)) != 0; + + if (!canTile1d) +- need_src_tile_x = need_src_tile_y = need_src_tile_x || need_src_tile_y; ++ info->accel_state->need_src_tile_x = ++ info->accel_state->need_src_tile_y = ++ info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y; + } + +- if (need_src_tile_x) +- src_tile_width = w; +- if (need_src_tile_y) +- src_tile_height = h; ++ if (info->accel_state->need_src_tile_x) ++ info->accel_state->src_tile_width = w; ++ if (info->accel_state->need_src_tile_y) ++ info->accel_state->src_tile_height = h; + } + + return TRUE; +@@ -357,7 +352,8 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + uint32_t txfilter, txformat, txoffset, txpitch; + int w = pPict->pDrawable->width; + int h = pPict->pDrawable->height; +- Bool repeat = pPict->repeat && !(unit == 0 && (need_src_tile_x || need_src_tile_y)); ++ Bool repeat = pPict->repeat && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); + int i; + ACCEL_PREAMBLE(); + +@@ -389,8 +385,8 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + txformat |= RADEON_TXFORMAT_NON_POWER2; + txformat |= unit << 24; /* RADEON_TXFORMAT_ST_ROUTE_STQX */ + +- info->texW[unit] = 1; +- info->texH[unit] = 1; ++ info->accel_state->texW[unit] = 1; ++ info->accel_state->texH[unit] = 1; + + switch (pPict->filter) { + case PictFilterNearest: +@@ -427,10 +423,10 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + FINISH_ACCEL(); + + if (pPict->transform != 0) { +- is_transform[unit] = TRUE; +- transform[unit] = pPict->transform; ++ info->accel_state->is_transform[unit] = TRUE; ++ info->accel_state->transform[unit] = pPict->transform; + } else { +- is_transform[unit] = FALSE; ++ info->accel_state->is_transform[unit] = FALSE; + } + + return TRUE; +@@ -531,16 +527,16 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + + TRACE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!RADEONGetDestFormat(pDstPicture, &dst_format)) + return FALSE; + + if (pMask) +- has_mask = TRUE; ++ info->accel_state->has_mask = TRUE; + else +- has_mask = FALSE; ++ info->accel_state->has_mask = FALSE; + + pixel_shift = pDst->drawable.bitsPerPixel >> 4; + +@@ -569,7 +565,7 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + return FALSE; + pp_cntl |= RADEON_TEX_1_ENABLE; + } else { +- is_transform[1] = FALSE; ++ info->accel_state->is_transform[1] = FALSE; + } + + RADEON_SWITCH_TO_3D(); +@@ -670,7 +666,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + uint32_t txfilter, txformat, txoffset, txpitch; + int w = pPict->pDrawable->width; + int h = pPict->pDrawable->height; +- Bool repeat = pPict->repeat && !(unit == 0 && (need_src_tile_x || need_src_tile_y)); ++ Bool repeat = pPict->repeat && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); + int i; + ACCEL_PREAMBLE(); + +@@ -702,8 +699,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + txformat |= R200_TXFORMAT_NON_POWER2; + txformat |= unit << R200_TXFORMAT_ST_ROUTE_SHIFT; + +- info->texW[unit] = w; +- info->texH[unit] = h; ++ info->accel_state->texW[unit] = w; ++ info->accel_state->texH[unit] = h; + + switch (pPict->filter) { + case PictFilterNearest: +@@ -742,10 +739,10 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + FINISH_ACCEL(); + + if (pPict->transform != 0) { +- is_transform[unit] = TRUE; +- transform[unit] = pPict->transform; ++ info->accel_state->is_transform[unit] = TRUE; ++ info->accel_state->transform[unit] = pPict->transform; + } else { +- is_transform[unit] = FALSE; ++ info->accel_state->is_transform[unit] = FALSE; + } + + return TRUE; +@@ -830,16 +827,16 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + + TRACE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!RADEONGetDestFormat(pDstPicture, &dst_format)) + return FALSE; + + if (pMask) +- has_mask = TRUE; ++ info->accel_state->has_mask = TRUE; + else +- has_mask = FALSE; ++ info->accel_state->has_mask = FALSE; + + pixel_shift = pDst->drawable.bitsPerPixel >> 4; + +@@ -866,7 +863,7 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + return FALSE; + pp_cntl |= RADEON_TEX_1_ENABLE; + } else { +- is_transform[1] = FALSE; ++ info->accel_state->is_transform[1] = FALSE; + } + + RADEON_SWITCH_TO_3D(); +@@ -1045,15 +1042,15 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + */ + txformat0 |= R300_TXPITCH_EN; + +- info->texW[unit] = w; +- info->texH[unit] = h; ++ info->accel_state->texW[unit] = w; ++ info->accel_state->texH[unit] = h; + +- if (pPict->repeat && !(unit == 0 && need_src_tile_x)) ++ if (pPict->repeat && !(unit == 0 && info->accel_state->need_src_tile_x)) + txfilter = R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP); + else + txfilter = R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL); + +- if (pPict->repeat && !(unit == 0 && need_src_tile_y)) ++ if (pPict->repeat && !(unit == 0 && info->accel_state->need_src_tile_y)) + txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP); + else + txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL); +@@ -1083,10 +1080,10 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + FINISH_ACCEL(); + + if (pPict->transform != 0) { +- is_transform[unit] = TRUE; +- transform[unit] = pPict->transform; ++ info->accel_state->is_transform[unit] = TRUE; ++ info->accel_state->transform[unit] = pPict->transform; + } else { +- is_transform[unit] = FALSE; ++ info->accel_state->is_transform[unit] = FALSE; + } + + return TRUE; +@@ -1191,16 +1188,16 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + + TRACE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!R300GetDestFormat(pDstPicture, &dst_format)) + return FALSE; + + if (pMask) +- has_mask = TRUE; ++ info->accel_state->has_mask = TRUE; + else +- has_mask = FALSE; ++ info->accel_state->has_mask = FALSE; + + pixel_shift = pDst->drawable.bitsPerPixel >> 4; + +@@ -1230,13 +1227,13 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + return FALSE; + txenable |= R300_TEX_1_ENABLE; + } else { +- is_transform[1] = FALSE; ++ info->accel_state->is_transform[1] = FALSE; + } + + RADEON_SWITCH_TO_3D(); + + /* setup the VAP */ +- if (info->has_tcl) { ++ if (info->accel_state->has_tcl) { + if (pMask) + BEGIN_ACCEL(8); + else +@@ -1296,7 +1293,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + * - Xv + * Here we select the offset of the vertex program we want to use + */ +- if (info->has_tcl) { ++ if (info->accel_state->has_tcl) { + if (pMask) { + OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0, + ((0 << R300_PVS_FIRST_INST_SHIFT) | +@@ -1419,7 +1416,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + + + /* setup the rasterizer, load FS */ +- BEGIN_ACCEL(9); ++ BEGIN_ACCEL(10); + if (pMask) { + /* 4 components: 2 for tex0, 2 for tex1 */ + OUT_ACCEL_REG(R300_RS_COUNT, +@@ -1461,6 +1458,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + R300_RGBA_OUT)); + } + ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + /* shader output swizzling */ + OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt); + +@@ -1474,7 +1472,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + * R300_ALU_RGB_OMASK - output components to write + * R300_ALU_RGB_TARGET_A - render target + */ +- OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR(0), + (R300_ALU_RGB_ADDR0(0) | + R300_ALU_RGB_ADDR1(1) | + R300_ALU_RGB_ADDR2(0) | +@@ -1486,7 +1484,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + /* RGB inst + * ALU operation + */ +- OUT_ACCEL_REG(R300_US_ALU_RGB_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_INST(0), + (R300_ALU_RGB_SEL_A(src_color) | + R300_ALU_RGB_MOD_A(R300_ALU_RGB_MOD_NOP) | + R300_ALU_RGB_SEL_B(mask_color) | +@@ -1503,7 +1501,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + * R300_ALU_ALPHA_OMASK - output components to write + * R300_ALU_ALPHA_TARGET_A - render target + */ +- OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR(0), + (R300_ALU_ALPHA_ADDR0(0) | + R300_ALU_ALPHA_ADDR1(1) | + R300_ALU_ALPHA_ADDR2(0) | +@@ -1514,7 +1512,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + /* Alpha inst + * ALU operation + */ +- OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST(0), + (R300_ALU_ALPHA_SEL_A(src_alpha) | + R300_ALU_ALPHA_MOD_A(R300_ALU_ALPHA_MOD_NOP) | + R300_ALU_ALPHA_SEL_B(mask_alpha) | +@@ -1633,7 +1631,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + break; + } + +- BEGIN_ACCEL(6); ++ BEGIN_ACCEL(7); + if (pMask) { + /* 4 components: 2 for tex0, 2 for tex1 */ + OUT_ACCEL_REG(R300_RS_COUNT, +@@ -1662,12 +1660,13 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0); + } + ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt); + FINISH_ACCEL(); + + if (pMask) { + BEGIN_ACCEL(19); +- OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); + /* tex inst for src texture */ + OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | + R500_INST_RGB_WMASK_R | +@@ -1739,7 +1738,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); + } else { + BEGIN_ACCEL(13); +- OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); + /* tex inst for src texture */ + OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | + R500_INST_TEX_SEM_WAIT | +@@ -1936,20 +1935,20 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + maskBottomRight.x = IntToxFixed(maskX + w); + maskBottomRight.y = IntToxFixed(maskY + h); + +- if (is_transform[0]) { +- transformPoint(transform[0], &srcTopLeft); +- transformPoint(transform[0], &srcTopRight); +- transformPoint(transform[0], &srcBottomLeft); +- transformPoint(transform[0], &srcBottomRight); ++ if (info->accel_state->is_transform[0]) { ++ transformPoint(info->accel_state->transform[0], &srcTopLeft); ++ transformPoint(info->accel_state->transform[0], &srcTopRight); ++ transformPoint(info->accel_state->transform[0], &srcBottomLeft); ++ transformPoint(info->accel_state->transform[0], &srcBottomRight); + } +- if (is_transform[1]) { +- transformPoint(transform[1], &maskTopLeft); +- transformPoint(transform[1], &maskTopRight); +- transformPoint(transform[1], &maskBottomLeft); +- transformPoint(transform[1], &maskBottomRight); ++ if (info->accel_state->is_transform[1]) { ++ transformPoint(info->accel_state->transform[1], &maskTopLeft); ++ transformPoint(info->accel_state->transform[1], &maskTopRight); ++ transformPoint(info->accel_state->transform[1], &maskBottomLeft); ++ transformPoint(info->accel_state->transform[1], &maskBottomRight); + } + +- if (has_mask) ++ if (info->accel_state->has_mask) + vtx_count = VTX_COUNT_MASK; + else + vtx_count = VTX_COUNT; +@@ -1962,21 +1961,21 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + + #ifdef ACCEL_CP + if (info->ChipFamily < CHIP_FAMILY_R200) { +- BEGIN_RING(4 * vtx_count + 3); ++ BEGIN_RING(3 * vtx_count + 3); + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD, +- 4 * vtx_count + 1)); +- if (has_mask) ++ 3 * vtx_count + 1)); ++ if (info->accel_state->has_mask) + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0 | + RADEON_CP_VC_FRMT_ST1); + else + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + RADEON_CP_VC_CNTL_MAOS_ENABLE | + RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | +- (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); ++ (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } else { + if (IS_R300_3D || IS_R500_3D) + BEGIN_RING(4 * vtx_count + 4); +@@ -1985,7 +1984,7 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, + 4 * vtx_count)); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } +@@ -1993,43 +1992,49 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + #else /* ACCEL_CP */ + if (IS_R300_3D || IS_R500_3D) + BEGIN_ACCEL(2 + vtx_count * 4); ++ else if (info->ChipFamily < CHIP_FAMILY_R200) ++ BEGIN_ACCEL(1 + vtx_count * 3); + else + BEGIN_ACCEL(1 + vtx_count * 4); + +- if (info->ChipFamily < CHIP_FAMILY_R200) { +- OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_FAN | ++ if (info->ChipFamily < CHIP_FAMILY_R200) ++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST | + RADEON_VF_PRIM_WALK_DATA | + RADEON_VF_RADEON_MODE | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } else { ++ (3 << RADEON_VF_NUM_VERTICES_SHIFT))); ++ else + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | + RADEON_VF_PRIM_WALK_DATA | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } ++ (4 << RADEON_VF_NUM_VERTICES_SHIFT))); ++ + #endif + +- if (has_mask) { +- VTX_OUT_MASK((float)dstX, (float)dstY, +- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0], +- xFixedToFloat(maskTopLeft.x) / info->texW[1], xFixedToFloat(maskTopLeft.y) / info->texH[1]); ++ if (info->accel_state->has_mask) { ++ if (info->ChipFamily >= CHIP_FAMILY_R200) { ++ VTX_OUT_MASK((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskTopLeft.x) / info->accel_state->texW[1], xFixedToFloat(maskTopLeft.y) / info->accel_state->texH[1]); ++ } + VTX_OUT_MASK((float)dstX, (float)(dstY + h), +- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0], +- xFixedToFloat(maskBottomLeft.x) / info->texW[1], xFixedToFloat(maskBottomLeft.y) / info->texH[1]); ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskBottomLeft.x) / info->accel_state->texW[1], xFixedToFloat(maskBottomLeft.y) / info->accel_state->texH[1]); + VTX_OUT_MASK((float)(dstX + w), (float)(dstY + h), +- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0], +- xFixedToFloat(maskBottomRight.x) / info->texW[1], xFixedToFloat(maskBottomRight.y) / info->texH[1]); ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskBottomRight.x) / info->accel_state->texW[1], xFixedToFloat(maskBottomRight.y) / info->accel_state->texH[1]); + VTX_OUT_MASK((float)(dstX + w), (float)dstY, +- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0], +- xFixedToFloat(maskTopRight.x) / info->texW[1], xFixedToFloat(maskTopRight.y) / info->texH[1]); ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskTopRight.x) / info->accel_state->texW[1], xFixedToFloat(maskTopRight.y) / info->accel_state->texH[1]); + } else { +- VTX_OUT((float)dstX, (float)dstY, +- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0]); ++ if (info->ChipFamily >= CHIP_FAMILY_R200) { ++ VTX_OUT((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0]); ++ } + VTX_OUT((float)dstX, (float)(dstY + h), +- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0]); ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + w), (float)(dstY + h), +- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0]); ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + w), (float)dstY, +- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0]); ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]); + } + + if (IS_R300_3D || IS_R500_3D) +@@ -2055,8 +2060,9 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst, + { + int tileSrcY, tileMaskY, tileDstY; + int remainingHeight; +- +- if (!need_src_tile_x && !need_src_tile_y) { ++ RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ++ if (!info->accel_state->need_src_tile_x && !info->accel_state->need_src_tile_y) { + FUNC_NAME(RadeonCompositeTile)(pDst, + srcX, srcY, + maskX, maskY, +@@ -2067,7 +2073,7 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst, + + /* Tiling logic borrowed from exaFillRegionTiled */ + +- modulus(srcY, src_tile_height, tileSrcY); ++ modulus(srcY, info->accel_state->src_tile_height, tileSrcY); + tileMaskY = maskY; + tileDstY = dstY; + +@@ -2075,18 +2081,18 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst, + while (remainingHeight > 0) { + int remainingWidth = width; + int tileSrcX, tileMaskX, tileDstX; +- int h = src_tile_height - tileSrcY; ++ int h = info->accel_state->src_tile_height - tileSrcY; + + if (h > remainingHeight) + h = remainingHeight; + remainingHeight -= h; + +- modulus(srcX, src_tile_width, tileSrcX); ++ modulus(srcX, info->accel_state->src_tile_width, tileSrcX); + tileMaskX = maskX; + tileDstX = dstX; + + while (remainingWidth > 0) { +- int w = src_tile_width - tileSrcX; ++ int w = info->accel_state->src_tile_width - tileSrcX; + if (w > remainingWidth) + w = remainingWidth; + remainingWidth -= w; +diff --git a/src/radeon_legacy_memory.c b/src/radeon_legacy_memory.c +new file mode 100644 +index 0000000..2a9ee94 +--- /dev/null ++++ b/src/radeon_legacy_memory.c +@@ -0,0 +1,117 @@ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++/* Driver data structures */ ++#include "radeon.h" ++ ++/* Allocates memory, either by resizing the allocation pointed to by mem_struct, ++ * or by freeing mem_struct (if non-NULL) and allocating a new space. The size ++ * is measured in bytes, and the offset from the beginning of card space is ++ * returned. ++ */ ++uint32_t ++radeon_legacy_allocate_memory(ScrnInfoPtr pScrn, ++ void **mem_struct, ++ int size, ++ int align) ++{ ++ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ uint32_t offset = 0; ++ ++#ifdef USE_EXA ++ if (info->useEXA) { ++ ExaOffscreenArea *area = *mem_struct; ++ ++ if (area != NULL) { ++ if (area->size >= size) ++ return area->offset; ++ ++ exaOffscreenFree(pScreen, area); ++ } ++ ++ area = exaOffscreenAlloc(pScreen, size, align, TRUE, ++ NULL, NULL); ++ ++ *mem_struct = area; ++ if (area == NULL) ++ return 0; ++ offset = area->offset; ++ } ++#endif /* USE_EXA */ ++#ifdef USE_XAA ++ if (!info->useEXA) { ++ FBLinearPtr linear = *mem_struct; ++ int cpp = info->CurrentLayout.bitsPerPixel / 8; ++ ++ /* XAA allocates in units of pixels at the screen bpp, so adjust size ++ * appropriately. ++ */ ++ size = (size + cpp - 1) / cpp; ++ align = (align + cpp - 1) / cpp; ++ ++ if (linear) { ++ if(linear->size >= size) ++ return linear->offset * cpp; ++ ++ if(xf86ResizeOffscreenLinear(linear, size)) ++ return linear->offset * cpp; ++ ++ xf86FreeOffscreenLinear(linear); ++ } ++ ++ linear = xf86AllocateOffscreenLinear(pScreen, size, align, ++ NULL, NULL, NULL); ++ *mem_struct = linear; ++ ++ if (!linear) { ++ int max_size; ++ ++ xf86QueryLargestOffscreenLinear(pScreen, &max_size, align, ++ PRIORITY_EXTREME); ++ ++ if (max_size < size) ++ return 0; ++ ++ xf86PurgeUnlockedOffscreenAreas(pScreen); ++ linear = xf86AllocateOffscreenLinear(pScreen, size, align, ++ NULL, NULL, NULL); ++ *mem_struct = linear; ++ if (!linear) ++ return 0; ++ } ++ offset = linear->offset * cpp; ++ } ++#endif /* USE_XAA */ ++ ++ return offset; ++} ++ ++void ++radeon_legacy_free_memory(ScrnInfoPtr pScrn, ++ void *mem_struct) ++{ ++ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ ++#ifdef USE_EXA ++ if (info->useEXA) { ++ ExaOffscreenArea *area = mem_struct; ++ ++ if (area != NULL) ++ exaOffscreenFree(pScreen, area); ++ area = NULL; ++ } ++#endif /* USE_EXA */ ++#ifdef USE_XAA ++ if (!info->useEXA) { ++ FBLinearPtr linear = mem_struct; ++ ++ if (linear != NULL) ++ xf86FreeOffscreenLinear(linear); ++ linear = NULL; ++ } ++#endif /* USE_XAA */ ++} +diff --git a/src/radeon_macros.h b/src/radeon_macros.h +index afe442e..f19bc3e 100644 +--- a/src/radeon_macros.h ++++ b/src/radeon_macros.h +@@ -51,32 +51,6 @@ + + #include "compiler.h" + +-#if HAVE_BYTESWAP_H +-#include +-#elif defined(USE_SYS_ENDIAN_H) +-#include +-#else +-#define bswap_16(value) \ +- ((((value) & 0xff) << 8) | ((value) >> 8)) +- +-#define bswap_32(value) \ +- (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \ +- (uint32_t)bswap_16((uint16_t)((value) >> 16))) +- +-#define bswap_64(value) \ +- (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \ +- << 32) | \ +- (uint64_t)bswap_32((uint32_t)((value) >> 32))) +-#endif +- +-#if X_BYTE_ORDER == X_BIG_ENDIAN +-#define le32_to_cpu(x) bswap_32(x) +-#define le16_to_cpu(x) bswap_16(x) +-#else +-#define le32_to_cpu(x) (x) +-#define le16_to_cpu(x) (x) +-#endif +- + #define RADEON_BIOS8(v) (info->VBIOS[v]) + #define RADEON_BIOS16(v) (info->VBIOS[v] | \ + (info->VBIOS[(v) + 1] << 8)) +diff --git a/src/radeon_output.c b/src/radeon_output.c +index 7b89d66..8c794fb 100644 +--- a/src/radeon_output.c ++++ b/src/radeon_output.c +@@ -173,9 +173,6 @@ static const uint32_t default_tvdac_adj [CHIP_FAMILY_LAST] = + + static void RADEONUpdatePanelSize(xf86OutputPtr output); + static void RADEONGetTMDSInfoFromTable(xf86OutputPtr output); +-#define AVIVO_I2C_DISABLE 0 +-#define AVIVO_I2C_ENABLE 1 +-static Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state); + + extern void atombios_output_mode_set(xf86OutputPtr output, + DisplayModePtr mode, +@@ -183,6 +180,8 @@ extern void atombios_output_mode_set(xf86OutputPtr output, + extern void atombios_output_dpms(xf86OutputPtr output, int mode); + extern RADEONMonitorType atombios_dac_detect(ScrnInfoPtr pScrn, xf86OutputPtr output); + extern int atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode); ++extern AtomBiosResult ++atombios_lock_crtc(atomBiosHandlePtr atomBIOS, int crtc, int lock); + static void + radeon_bios_output_dpms(xf86OutputPtr output, int mode); + static void +@@ -213,88 +212,6 @@ void RADEONPrintPortMap(ScrnInfoPtr pScrn) + + } + +-static xf86MonPtr +-radeon_do_ddc(xf86OutputPtr output) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- unsigned char *RADEONMMIO = info->MMIO; +- uint32_t DDCReg; +- xf86MonPtr MonInfo = NULL; +- RADEONOutputPrivatePtr radeon_output = output->driver_private; +- int i, j; +- +- if (radeon_output->pI2CBus) { +- DDCReg = radeon_output->ddc_i2c.mask_clk_reg; +- +- if (IS_AVIVO_VARIANT) { +- AVIVOI2CDoLock(output, AVIVO_I2C_ENABLE); +- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); +- AVIVOI2CDoLock(output, AVIVO_I2C_DISABLE); +- } else if ((DDCReg == RADEON_LCD_GPIO_MASK) || (DDCReg == RADEON_MDGPIO_EN_REG)) { +- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); +- } else { +- OUTREG(DDCReg, INREG(DDCReg) & +- (uint32_t)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1)); +- +- /* For some old monitors (like Compaq Presario FP500), we need +- * following process to initialize/stop DDC +- */ +- OUTREG(DDCReg, INREG(DDCReg) & ~(RADEON_GPIO_EN_1)); +- for (j = 0; j < 3; j++) { +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_0)); +- usleep(13000); +- +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_1)); +- for (i = 0; i < 10; i++) { +- usleep(15000); +- if (INREG(DDCReg) & RADEON_GPIO_Y_1) +- break; +- } +- if (i == 10) continue; +- +- usleep(15000); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0); +- usleep(15000); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1); +- usleep(15000); +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_0)); +- usleep(15000); +- +- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1); +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0); +- usleep(15000); +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_1)); +- for (i = 0; i < 5; i++) { +- usleep(15000); +- if (INREG(DDCReg) & RADEON_GPIO_Y_1) +- break; +- } +- usleep(15000); +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_0)); +- usleep(15000); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1); +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0); +- usleep(15000); +- if (MonInfo) break; +- } +- OUTREG(DDCReg, INREG(DDCReg) & +- ~(RADEON_GPIO_EN_0 | RADEON_GPIO_EN_1)); +- } +- } +- +- return MonInfo; +-} +- + static RADEONMonitorType + radeon_ddc_connected(xf86OutputPtr output) + { +@@ -304,8 +221,20 @@ radeon_ddc_connected(xf86OutputPtr output) + xf86MonPtr MonInfo = NULL; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + +- if (radeon_output->pI2CBus) +- MonInfo = radeon_do_ddc(output); ++ if (radeon_output->pI2CBus) { ++ /* RV410 RADEON_GPIO_VGA_DDC seems to only work via hw i2c ++ * We may want to extend this to other cases if the need arises... ++ */ ++ if ((info->ChipFamily == CHIP_FAMILY_RV410) && ++ (radeon_output->ddc_i2c.mask_clk_reg == RADEON_GPIO_VGA_DDC) && ++ info->IsAtomBios) ++ MonInfo = radeon_atom_get_edid(output); ++ else { ++ RADEONI2CDoLock(output, TRUE); ++ MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); ++ RADEONI2CDoLock(output, FALSE); ++ } ++ } + if (MonInfo) { + if (!xf86ReturnOptValBool(info->Options, OPTION_IGNORE_EDID, FALSE)) + xf86OutputSetEDID(output, MonInfo); +@@ -317,13 +246,14 @@ radeon_ddc_connected(xf86OutputPtr output) + MonType = MT_DFP; + else if (radeon_output->type == OUTPUT_DP) + MonType = MT_DFP; +- else if (radeon_output->type == OUTPUT_DVI_I && (MonInfo->rawData[0x14] & 0x80)) /* if it's digital and DVI */ ++ else if (radeon_output->type == OUTPUT_DVI_I && ++ (MonInfo->rawData[0x14] & 0x80)) /* if it's digital and DVI */ + MonType = MT_DFP; + else + MonType = MT_CRT; + } else + MonType = MT_NONE; +- ++ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Output: %s, Detected Monitor Type: %d\n", output->name, MonType); + +@@ -537,7 +467,7 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, + if (IS_AVIVO_VARIANT) { + /* set to the panel's native mode */ + adjusted_mode->HDisplay = radeon_output->PanelXRes; +- adjusted_mode->HDisplay = radeon_output->PanelYRes; ++ adjusted_mode->VDisplay = radeon_output->PanelYRes; + adjusted_mode->HTotal = radeon_output->PanelXRes + radeon_output->HBlank; + adjusted_mode->HSyncStart = radeon_output->PanelXRes + radeon_output->HOverPlus; + adjusted_mode->HSyncEnd = adjusted_mode->HSyncStart + radeon_output->HSyncWidth; +@@ -580,12 +510,20 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, + } + } + ++ if (IS_AVIVO_VARIANT) { ++ /* hw bug */ ++ if ((mode->Flags & V_INTERLACE) ++ && (mode->CrtcVSyncStart < (mode->CrtcVDisplay + 2))) ++ adjusted_mode->CrtcVSyncStart = adjusted_mode->CrtcVDisplay + 2; ++ } ++ + return TRUE; + } + + static void + radeon_mode_prepare(xf86OutputPtr output) + { ++ RADEONInfoPtr info = RADEONPTR(output->scrn); + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn); + int o; + +@@ -595,9 +533,12 @@ radeon_mode_prepare(xf86OutputPtr output) + continue; + else if (loop_output->crtc) { + xf86CrtcPtr other_crtc = loop_output->crtc; ++ RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private; + if (other_crtc->enabled) { +- radeon_dpms(loop_output, DPMSModeOff); + radeon_crtc_dpms(other_crtc, DPMSModeOff); ++ if (IS_AVIVO_VARIANT) ++ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1); ++ radeon_dpms(loop_output, DPMSModeOff); + } + } + } +@@ -625,6 +566,7 @@ radeon_mode_set(xf86OutputPtr output, DisplayModePtr mode, + static void + radeon_mode_commit(xf86OutputPtr output) + { ++ RADEONInfoPtr info = RADEONPTR(output->scrn); + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn); + int o; + +@@ -634,9 +576,12 @@ radeon_mode_commit(xf86OutputPtr output) + continue; + else if (loop_output->crtc) { + xf86CrtcPtr other_crtc = loop_output->crtc; ++ RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private; + if (other_crtc->enabled) { +- radeon_dpms(loop_output, DPMSModeOn); + radeon_crtc_dpms(other_crtc, DPMSModeOn); ++ if (IS_AVIVO_VARIANT) ++ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0); ++ radeon_dpms(loop_output, DPMSModeOn); + } + } + } +@@ -1201,8 +1146,7 @@ radeon_create_resources(xf86OutputPtr output) + } + } + +- if (IS_DCE3_VARIANT && +- (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI))) { ++ if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + coherent_mode_atom = MAKE_ATOM("coherent_mode"); + + range[0] = 0; /* off */ +@@ -1214,7 +1158,7 @@ radeon_create_resources(xf86OutputPtr output) + "RRConfigureOutputProperty error, %d\n", err); + } + +- data = 1; /* use coherent mode by default */ ++ data = 0; /* coherent mode off by default */ + + err = RRChangeOutputProperty(output->randr_output, coherent_mode_atom, + XA_INTEGER, 32, PropModeReplace, 1, &data, +@@ -1682,8 +1626,8 @@ Bool AVIVOI2CReset(ScrnInfoPtr pScrn) + } + #endif + +-static +-Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state) ++Bool ++RADEONI2CDoLock(xf86OutputPtr output, int lock_state) + { + ScrnInfoPtr pScrn = output->scrn; + RADEONInfoPtr info = RADEONPTR(pScrn); +@@ -1692,19 +1636,29 @@ Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state) + unsigned char *RADEONMMIO = info->MMIO; + uint32_t temp; + ++ if (lock_state) { ++ temp = INREG(pRADEONI2CBus->a_clk_reg); ++ temp &= ~(pRADEONI2CBus->a_clk_mask); ++ OUTREG(pRADEONI2CBus->a_clk_reg, temp); ++ ++ temp = INREG(pRADEONI2CBus->a_data_reg); ++ temp &= ~(pRADEONI2CBus->a_data_mask); ++ OUTREG(pRADEONI2CBus->a_data_reg, temp); ++ } ++ + temp = INREG(pRADEONI2CBus->mask_clk_reg); +- if (lock_state == AVIVO_I2C_ENABLE) +- temp |= (pRADEONI2CBus->put_clk_mask); ++ if (lock_state) ++ temp |= (pRADEONI2CBus->mask_clk_mask); + else +- temp &= ~(pRADEONI2CBus->put_clk_mask); ++ temp &= ~(pRADEONI2CBus->mask_clk_mask); + OUTREG(pRADEONI2CBus->mask_clk_reg, temp); + temp = INREG(pRADEONI2CBus->mask_clk_reg); + + temp = INREG(pRADEONI2CBus->mask_data_reg); +- if (lock_state == AVIVO_I2C_ENABLE) +- temp |= (pRADEONI2CBus->put_data_mask); ++ if (lock_state) ++ temp |= (pRADEONI2CBus->mask_data_mask); + else +- temp &= ~(pRADEONI2CBus->put_data_mask); ++ temp &= ~(pRADEONI2CBus->mask_data_mask); + OUTREG(pRADEONI2CBus->mask_data_reg, temp); + temp = INREG(pRADEONI2CBus->mask_data_reg); + +@@ -1786,8 +1740,12 @@ legacy_setup_i2c_bus(int ddc_line) + { + RADEONI2CBusRec i2c; + +- i2c.mask_clk_mask = RADEON_GPIO_EN_1 | RADEON_GPIO_Y_1; +- i2c.mask_data_mask = RADEON_GPIO_EN_0 | RADEON_GPIO_Y_0; ++ i2c.hw_line = 0; ++ i2c.hw_capable = FALSE; ++ i2c.mask_clk_mask = RADEON_GPIO_EN_1; ++ i2c.mask_data_mask = RADEON_GPIO_EN_0; ++ i2c.a_clk_mask = RADEON_GPIO_A_1; ++ i2c.a_data_mask = RADEON_GPIO_A_0; + i2c.put_clk_mask = RADEON_GPIO_EN_1; + i2c.put_data_mask = RADEON_GPIO_EN_0; + i2c.get_clk_mask = RADEON_GPIO_Y_1; +@@ -1796,6 +1754,8 @@ legacy_setup_i2c_bus(int ddc_line) + (ddc_line == RADEON_MDGPIO_EN_REG)) { + i2c.mask_clk_reg = ddc_line; + i2c.mask_data_reg = ddc_line; ++ i2c.a_clk_reg = ddc_line; ++ i2c.a_data_reg = ddc_line; + i2c.put_clk_reg = ddc_line; + i2c.put_data_reg = ddc_line; + i2c.get_clk_reg = ddc_line + 4; +@@ -1803,6 +1763,8 @@ legacy_setup_i2c_bus(int ddc_line) + } else { + i2c.mask_clk_reg = ddc_line; + i2c.mask_data_reg = ddc_line; ++ i2c.a_clk_reg = ddc_line; ++ i2c.a_data_reg = ddc_line; + i2c.put_clk_reg = ddc_line; + i2c.put_data_reg = ddc_line; + i2c.get_clk_reg = ddc_line; +@@ -1822,6 +1784,8 @@ atom_setup_i2c_bus(int ddc_line) + { + RADEONI2CBusRec i2c; + ++ i2c.hw_line = 0; ++ i2c.hw_capable = FALSE; + if (ddc_line == AVIVO_GPIO_0) { + i2c.put_clk_mask = (1 << 19); + i2c.put_data_mask = (1 << 18); +@@ -1829,6 +1793,8 @@ atom_setup_i2c_bus(int ddc_line) + i2c.get_data_mask = (1 << 18); + i2c.mask_clk_mask = (1 << 19); + i2c.mask_data_mask = (1 << 18); ++ i2c.a_clk_mask = (1 << 19); ++ i2c.a_data_mask = (1 << 18); + } else { + i2c.put_clk_mask = (1 << 0); + i2c.put_data_mask = (1 << 8); +@@ -1836,9 +1802,13 @@ atom_setup_i2c_bus(int ddc_line) + i2c.get_data_mask = (1 << 8); + i2c.mask_clk_mask = (1 << 0); + i2c.mask_data_mask = (1 << 8); ++ i2c.a_clk_mask = (1 << 0); ++ i2c.a_data_mask = (1 << 8); + } + i2c.mask_clk_reg = ddc_line; + i2c.mask_data_reg = ddc_line; ++ i2c.a_clk_reg = ddc_line + 0x4; ++ i2c.a_data_reg = ddc_line + 0x4; + i2c.put_clk_reg = ddc_line + 0x8; + i2c.put_data_reg = ddc_line + 0x8; + i2c.get_clk_reg = ddc_line + 0xc; +@@ -2301,13 +2271,13 @@ static Bool RADEONSetupAppleConnectors(ScrnInfoPtr pScrn) + info->BiosConnector[0].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_DVI_DDC); + info->BiosConnector[0].DACType = DAC_NONE; + info->BiosConnector[0].TMDSType = TMDS_NONE; +- info->BiosConnector[0].ConnectorType = CONNECTOR_VGA; ++ info->BiosConnector[0].ConnectorType = CONNECTOR_LVDS; + info->BiosConnector[0].valid = TRUE; + + info->BiosConnector[1].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_VGA_DDC); + info->BiosConnector[1].DACType = DAC_PRIMARY; +- info->BiosConnector[1].TMDSType = TMDS_INT; +- info->BiosConnector[1].ConnectorType = CONNECTOR_DVI_I; ++ info->BiosConnector[1].TMDSType = TMDS_NONE; ++ info->BiosConnector[1].ConnectorType = CONNECTOR_VGA; + info->BiosConnector[1].valid = TRUE; + + info->BiosConnector[2].ConnectorType = CONNECTOR_STV; +@@ -2677,7 +2647,6 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn) + { + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); + xf86OutputPtr output; + char *optstr; + int i = 0; +@@ -2742,13 +2711,6 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn) + RADEONSetupGenericConnectors(pScrn); + } + +- if (!pRADEONEnt->HasCRTC2) { +- for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) { +- if (info->BiosConnector[i].ConnectorType == CONNECTOR_VGA) +- info->BiosConnector[i].DACType = DAC_PRIMARY; +- } +- } +- + /* parse connector table option */ + optstr = (char *)xf86GetOptValString(info->Options, OPTION_CONNECTORTABLE); + +diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h +index 39adb5e..ff1801f 100644 +--- a/src/radeon_pci_chipset_gen.h ++++ b/src/radeon_pci_chipset_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + PciChipsets RADEONPciChipsets[] = { + { PCI_CHIP_RV380_3150, PCI_CHIP_RV380_3150, RES_SHARED_VGA }, ++ { PCI_CHIP_RV380_3151, PCI_CHIP_RV380_3151, RES_SHARED_VGA }, + { PCI_CHIP_RV380_3152, PCI_CHIP_RV380_3152, RES_SHARED_VGA }, + { PCI_CHIP_RV380_3154, PCI_CHIP_RV380_3154, RES_SHARED_VGA }, + { PCI_CHIP_RV380_3E50, PCI_CHIP_RV380_3E50, RES_SHARED_VGA }, +@@ -250,6 +251,9 @@ PciChipsets RADEONPciChipsets[] = { + { PCI_CHIP_R600_940A, PCI_CHIP_R600_940A, RES_SHARED_VGA }, + { PCI_CHIP_R600_940B, PCI_CHIP_R600_940B, RES_SHARED_VGA }, + { PCI_CHIP_R600_940F, PCI_CHIP_R600_940F, RES_SHARED_VGA }, ++ { PCI_CHIP_RV770_9440, PCI_CHIP_RV770_9440, RES_SHARED_VGA }, ++ { PCI_CHIP_RV770_9441, PCI_CHIP_RV770_9441, RES_SHARED_VGA }, ++ { PCI_CHIP_RV770_9442, PCI_CHIP_RV770_9442, RES_SHARED_VGA }, + { PCI_CHIP_RV610_94C0, PCI_CHIP_RV610_94C0, RES_SHARED_VGA }, + { PCI_CHIP_RV610_94C1, PCI_CHIP_RV610_94C1, RES_SHARED_VGA }, + { PCI_CHIP_RV610_94C3, PCI_CHIP_RV610_94C3, RES_SHARED_VGA }, +@@ -267,6 +271,7 @@ PciChipsets RADEONPciChipsets[] = { + { PCI_CHIP_RV670_9507, PCI_CHIP_RV670_9507, RES_SHARED_VGA }, + { PCI_CHIP_RV670_950F, PCI_CHIP_RV670_950F, RES_SHARED_VGA }, + { PCI_CHIP_RV670_9511, PCI_CHIP_RV670_9511, RES_SHARED_VGA }, ++ { PCI_CHIP_RV670_9515, PCI_CHIP_RV670_9515, RES_SHARED_VGA }, + { PCI_CHIP_RV630_9580, PCI_CHIP_RV630_9580, RES_SHARED_VGA }, + { PCI_CHIP_RV630_9581, PCI_CHIP_RV630_9581, RES_SHARED_VGA }, + { PCI_CHIP_RV630_9583, PCI_CHIP_RV630_9583, RES_SHARED_VGA }, +diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h +index d81cbe3..d650f9f 100644 +--- a/src/radeon_pci_device_match_gen.h ++++ b/src/radeon_pci_device_match_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + static const struct pci_id_match radeon_device_match[] = { + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3150, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3151, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3152, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3154, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3E50, 0 ), +@@ -250,6 +251,9 @@ static const struct pci_id_match radeon_device_match[] = { + ATI_DEVICE_MATCH( PCI_CHIP_R600_940A, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_R600_940B, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_R600_940F, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9440, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9441, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9442, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C0, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C1, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C3, 0 ), +@@ -267,6 +271,7 @@ static const struct pci_id_match radeon_device_match[] = { + ATI_DEVICE_MATCH( PCI_CHIP_RV670_9507, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV670_950F, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV670_9511, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV670_9515, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV630_9580, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV630_9581, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV630_9583, 0 ), +diff --git a/src/radeon_probe.h b/src/radeon_probe.h +index 24af52b..c14241e 100644 +--- a/src/radeon_probe.h ++++ b/src/radeon_probe.h +@@ -166,6 +166,8 @@ typedef struct + Bool valid; + uint32_t mask_clk_reg; + uint32_t mask_data_reg; ++ uint32_t a_clk_reg; ++ uint32_t a_data_reg; + uint32_t put_clk_reg; + uint32_t put_data_reg; + uint32_t get_clk_reg; +@@ -176,15 +178,15 @@ typedef struct + uint32_t put_data_mask; + uint32_t get_clk_mask; + uint32_t get_data_mask; ++ uint32_t a_clk_mask; ++ uint32_t a_data_mask; ++ int hw_line; ++ Bool hw_capable; + } RADEONI2CBusRec, *RADEONI2CBusPtr; + + typedef struct _RADEONCrtcPrivateRec { +-#ifdef USE_XAA +- FBLinearPtr rotate_mem_xaa; +-#endif +-#ifdef USE_EXA +- ExaOffscreenArea *rotate_mem_exa; +-#endif ++ void *crtc_rotate_mem; ++ void *cursor_mem; + int crtc_id; + int binding; + uint32_t cursor_offset; +@@ -235,8 +237,10 @@ typedef struct _RADEONOutputPrivateRec { + int VSyncWidth; + int VBlank; + int Flags; /* Saved copy of mode flags */ +- int PanelPwrDly; + int DotClock; ++ int PanelPwrDly; ++ int lvds_misc; ++ int lvds_ss_id; + RADEONTMDSPll tmds_pll[4]; + RADEONRMXType rmx_type; + /* dvo */ +@@ -310,8 +314,10 @@ struct avivo_grph_state { + uint32_t x_end; + uint32_t y_end; + ++ uint32_t desktop_height; + uint32_t viewport_start; + uint32_t viewport_size; ++ uint32_t mode_data_format; + }; + + struct avivo_state +@@ -326,6 +332,7 @@ struct avivo_state + + uint32_t crtc_master_en; + uint32_t crtc_tv_control; ++ uint32_t dc_lb_memory_split; + + struct avivo_pll_state pll1; + struct avivo_pll_state pll2; +diff --git a/src/radeon_reg.h b/src/radeon_reg.h +index 59e2f12..19f9869 100644 +--- a/src/radeon_reg.h ++++ b/src/radeon_reg.h +@@ -1032,6 +1032,10 @@ + #define RADEON_OV0_BASE_ADDR 0x43c + #define RADEON_NB_TOM 0x15c + #define R300_MC_INIT_MISC_LAT_TIMER 0x180 ++# define R300_MC_DISP0R_INIT_LAT_SHIFT 8 ++# define R300_MC_DISP0R_INIT_LAT_MASK 0xf ++# define R300_MC_DISP1R_INIT_LAT_SHIFT 12 ++# define R300_MC_DISP1R_INIT_LAT_MASK 0xf + #define RADEON_MCLK_CNTL 0x0012 /* PLL */ + # define RADEON_FORCEON_MCLKA (1 << 16) + # define RADEON_FORCEON_MCLKB (1 << 17) +@@ -3185,6 +3189,7 @@ + #define RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST 0x00000008 + #define RADEON_CP_VC_CNTL_PRIM_TYPE_3VRT_POINT_LIST 0x00000009 + #define RADEON_CP_VC_CNTL_PRIM_TYPE_3VRT_LINE_LIST 0x0000000a ++#define RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST 0x0000000d + #define RADEON_CP_VC_CNTL_PRIM_WALK_IND 0x00000010 + #define RADEON_CP_VC_CNTL_PRIM_WALK_LIST 0x00000020 + #define RADEON_CP_VC_CNTL_PRIM_WALK_RING 0x00000030 +@@ -3418,6 +3423,7 @@ + #define RS690_MC_AGP_LOCATION 0x101 + #define RS690_MC_AGP_BASE 0x102 + #define RS690_MC_AGP_BASE_2 0x103 ++#define RS690_MC_INIT_MISC_LAT_TIMER 0x104 + #define RS690_MC_STATUS 0x90 + #define RS690_MC_STATUS_IDLE (1 << 0) + +@@ -3431,12 +3437,13 @@ + #define RS600_MC_STATUS 0x0 + #define RS600_MC_STATUS_IDLE (1 << 0) + +-#define AVIVO_MC_INDEX 0x0070 +-#define R520_MC_STATUS 0x00 +-#define R520_MC_STATUS_IDLE (1<<1) +-#define RV515_MC_STATUS 0x08 +-#define RV515_MC_STATUS_IDLE (1<<4) +-#define AVIVO_MC_DATA 0x0074 ++#define AVIVO_MC_INDEX 0x0070 ++#define R520_MC_STATUS 0x00 ++# define R520_MC_STATUS_IDLE (1 << 1) ++#define RV515_MC_STATUS 0x08 ++# define RV515_MC_STATUS_IDLE (1 << 4) ++#define RV515_MC_INIT_MISC_LAT_TIMER 0x09 ++#define AVIVO_MC_DATA 0x0074 + + #define RV515_MC_FB_LOCATION 0x1 + #define RV515_MC_AGP_LOCATION 0x2 +@@ -3598,8 +3605,20 @@ + #define AVIVO_DC_LUTA_WHITE_OFFSET_GREEN 0x64d4 + #define AVIVO_DC_LUTA_WHITE_OFFSET_RED 0x64d8 + +- +-#define AVIVO_D1MODE_DESKTOP_HEIGHT 0x652C ++#define AVIVO_DC_LB_MEMORY_SPLIT 0x6520 ++# define AVIVO_DC_LB_MEMORY_SPLIT_MASK 0x3 ++# define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT 0 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF 0 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q 1 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY 2 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q 3 ++# define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE (1 << 2) ++# define AVIVO_DC_LB_DISP1_END_ADR_SHIFT 4 ++# define AVIVO_DC_LB_DISP1_END_ADR_MASK 0x7ff ++ ++#define AVIVO_D1MODE_DATA_FORMAT 0x6528 ++# define AVIVO_D1MODE_INTERLEAVE_EN (1 << 0) ++#define AVIVO_D1MODE_DESKTOP_HEIGHT 0x652c + #define AVIVO_D1MODE_VIEWPORT_START 0x6580 + #define AVIVO_D1MODE_VIEWPORT_SIZE 0x6584 + #define AVIVO_D1MODE_EXT_OVERSCAN_LEFT_RIGHT 0x6588 +@@ -3651,6 +3670,8 @@ + #define AVIVO_D2CUR_SIZE 0x6c10 + #define AVIVO_D2CUR_POSITION 0x6c14 + ++#define AVIVO_D2MODE_DATA_FORMAT 0x6d28 ++#define AVIVO_D2MODE_DESKTOP_HEIGHT 0x6d2c + #define AVIVO_D2MODE_VIEWPORT_START 0x6d80 + #define AVIVO_D2MODE_VIEWPORT_SIZE 0x6d84 + #define AVIVO_D2MODE_EXT_OVERSCAN_LEFT_RIGHT 0x6d88 +@@ -3658,6 +3679,7 @@ + + #define AVIVO_D2SCL_SCALER_ENABLE 0x6d90 + #define AVIVO_D2SCL_SCALER_TAP_CONTROL 0x6d94 ++#define AVIVO_D2SCL_UPDATE 0x6dcc + + #define AVIVO_DDIA_BIT_DEPTH_CONTROL 0x7214 + +@@ -3918,6 +3940,8 @@ + #define R600_MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2194 + #define R600_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x2198 + ++#define R700_MC_VM_FB_LOCATION 0x2024 ++ + #define R600_HDP_NONSURFACE_BASE 0x2c04 + + #define R600_BUS_CNTL 0x5420 +@@ -4234,7 +4258,7 @@ + #define R300_PVS_SRC_ADDR_SEL(x) (x << 29) + #define R300_PVS_SRC_ADDR_MODE_1 (1 << 31) + +-#define R300_VAP_PVS_FLOW_CNTL_OPC 0x22DC ++#define R300_VAP_PVS_FLOW_CNTL_OPC 0x22dc + #define R300_VAP_OUT_VTX_FMT_0 0x2090 + # define R300_VTX_POS_PRESENT (1 << 0) + # define R300_VTX_COLOR_0_PRESENT (1 << 1) +@@ -4322,6 +4346,7 @@ + + #define R300_TX_INVALTAGS 0x4100 + #define R300_TX_FILTER0_0 0x4400 ++#define R300_TX_FILTER0_1 0x4404 + # define R300_TX_CLAMP_S(x) (x << 0) + # define R300_TX_CLAMP_T(x) (x << 3) + # define R300_TX_CLAMP_R(x) (x << 6) +@@ -4339,7 +4364,9 @@ + # define R300_TX_MIN_FILTER_LINEAR (2 << 11) + # define R300_TX_ID_SHIFT 28 + #define R300_TX_FILTER1_0 0x4440 ++#define R300_TX_FILTER1_1 0x4444 + #define R300_TX_FORMAT0_0 0x4480 ++#define R300_TX_FORMAT0_1 0x4484 + # define R300_TXWIDTH_SHIFT 0 + # define R300_TXHEIGHT_SHIFT 11 + # define R300_NUM_LEVELS_SHIFT 26 +@@ -4347,6 +4374,7 @@ + # define R300_TXPROJECTED (1 << 30) + # define R300_TXPITCH_EN (1 << 31) + #define R300_TX_FORMAT1_0 0x44c0 ++#define R300_TX_FORMAT1_1 0x44c4 + # define R300_TX_FORMAT_X8 0x0 + # define R300_TX_FORMAT_X16 0x1 + # define R300_TX_FORMAT_Y4X4 0x2 +@@ -4420,10 +4448,12 @@ + # define R300_TX_FORMAT_SWAP_YUV (1 << 24) + + #define R300_TX_FORMAT2_0 0x4500 ++#define R300_TX_FORMAT2_1 0x4504 + # define R500_TXWIDTH_11 (1 << 15) + # define R500_TXHEIGHT_11 (1 << 16) + + #define R300_TX_OFFSET_0 0x4540 ++#define R300_TX_OFFSET_1 0x4544 + # define R300_ENDIAN_SWAP_16_BIT (1 << 0) + # define R300_ENDIAN_SWAP_32_BIT (2 << 0) + # define R300_ENDIAN_SWAP_HALF_DWORD (3 << 0) +@@ -4500,6 +4530,7 @@ + #define R300_US_TEX_INST_0 0x4620 + #define R300_US_TEX_INST_1 0x4624 + #define R300_US_TEX_INST_2 0x4628 ++#define R300_US_TEX_INST(x) (R300_US_TEX_INST_0 + (x)*4) + # define R300_TEX_SRC_ADDR(x) (x << 0) + # define R300_TEX_DST_ADDR(x) (x << 6) + # define R300_TEX_ID(x) (x << 11) +@@ -4512,11 +4543,13 @@ + #define R300_US_ALU_RGB_ADDR_0 0x46c0 + #define R300_US_ALU_RGB_ADDR_1 0x46c4 + #define R300_US_ALU_RGB_ADDR_2 0x46c8 ++#define R300_US_ALU_RGB_ADDR(x) (R300_US_ALU_RGB_ADDR_0 + (x)*4) + /* for ADDR0-2, values 0-31 specify a location in the pixel stack, + values 32-63 specify a constant */ + # define R300_ALU_RGB_ADDR0(x) (x << 0) + # define R300_ALU_RGB_ADDR1(x) (x << 6) + # define R300_ALU_RGB_ADDR2(x) (x << 12) ++# define R300_ALU_RGB_CONST(x) ((x) | (1 << 5)) + /* ADDRD - where on the pixel stack the result of this instruction + will be written */ + # define R300_ALU_RGB_ADDRD(x) (x << 18) +@@ -4526,6 +4559,7 @@ + # define R300_ALU_RGB_MASK_R 1 + # define R300_ALU_RGB_MASK_G 2 + # define R300_ALU_RGB_MASK_B 4 ++# define R300_ALU_RGB_MASK_RGB 7 + # define R300_ALU_RGB_TARGET_A (0 << 29) + # define R300_ALU_RGB_TARGET_B (1 << 29) + # define R300_ALU_RGB_TARGET_C (2 << 29) +@@ -4533,6 +4567,7 @@ + #define R300_US_ALU_RGB_INST_0 0x48c0 + #define R300_US_ALU_RGB_INST_1 0x48c4 + #define R300_US_ALU_RGB_INST_2 0x48c8 ++#define R300_US_ALU_RGB_INST(x) (R300_US_ALU_RGB_INST_0 + (x)*4) + # define R300_ALU_RGB_SEL_A(x) (x << 0) + # define R300_ALU_RGB_SRC0_RGB 0 + # define R300_ALU_RGB_SRC0_RRR 1 +@@ -4604,11 +4639,13 @@ + #define R300_US_ALU_ALPHA_ADDR_0 0x47c0 + #define R300_US_ALU_ALPHA_ADDR_1 0x47c4 + #define R300_US_ALU_ALPHA_ADDR_2 0x47c8 ++#define R300_US_ALU_ALPHA_ADDR(x) (R300_US_ALU_ALPHA_ADDR_0 + (x)*4) + /* for ADDR0-2, values 0-31 specify a location in the pixel stack, + values 32-63 specify a constant */ + # define R300_ALU_ALPHA_ADDR0(x) (x << 0) + # define R300_ALU_ALPHA_ADDR1(x) (x << 6) + # define R300_ALU_ALPHA_ADDR2(x) (x << 12) ++# define R300_ALU_ALPHA_CONST(x) ((x) | (1 << 5)) + /* ADDRD - where on the pixel stack the result of this instruction + will be written */ + # define R300_ALU_ALPHA_ADDRD(x) (x << 18) +@@ -4624,6 +4661,7 @@ + #define R300_US_ALU_ALPHA_INST_0 0x49c0 + #define R300_US_ALU_ALPHA_INST_1 0x49c4 + #define R300_US_ALU_ALPHA_INST_2 0x49c8 ++#define R300_US_ALU_ALPHA_INST(x) (R300_US_ALU_ALPHA_INST_0 + (x)*4) + # define R300_ALU_ALPHA_SEL_A(x) (x << 0) + # define R300_ALU_ALPHA_SRC0_R 0 + # define R300_ALU_ALPHA_SRC0_G 1 +@@ -4680,6 +4718,15 @@ + # define R300_ALU_ALPHA_OMOD_DIV_8 6 + # define R300_ALU_ALPHA_CLAMP (1 << 30) + ++#define R300_US_ALU_CONST_R_0 0x4c00 ++#define R300_US_ALU_CONST_R(x) (R300_US_ALU_CONST_R_0 + (x)*16) ++#define R300_US_ALU_CONST_G_0 0x4c04 ++#define R300_US_ALU_CONST_G(x) (R300_US_ALU_CONST_G_0 + (x)*16) ++#define R300_US_ALU_CONST_B_0 0x4c08 ++#define R300_US_ALU_CONST_B(x) (R300_US_ALU_CONST_B_0 + (x)*16) ++#define R300_US_ALU_CONST_A_0 0x4c0c ++#define R300_US_ALU_CONST_A(x) (R300_US_ALU_CONST_A_0 + (x)*16) ++ + #define R300_FG_DEPTH_SRC 0x4bd8 + #define R300_FG_FOG_BLEND 0x4bc0 + #define R300_FG_ALPHA_FUNC 0x4bd4 +@@ -4759,10 +4806,11 @@ + + /* R500 US has to be loaded through an index/data pair */ + #define R500_GA_US_VECTOR_INDEX 0x4250 +-# define R500_US_VECTOR_INDEX(x) (x << 0) + # define R500_US_VECTOR_TYPE_INST (0 << 16) + # define R500_US_VECTOR_TYPE_CONST (1 << 16) + # define R500_US_VECTOR_CLAMP (1 << 17) ++# define R500_US_VECTOR_INST_INDEX(x) ((x) | R500_US_VECTOR_TYPE_INST) ++# define R500_US_VECTOR_CONST_INDEX(x) ((x) | R500_US_VECTOR_TYPE_CONST) + #define R500_GA_US_VECTOR_DATA 0x4254 + + /* +diff --git a/src/radeon_render.c b/src/radeon_render.c +index dbd5b79..6668fe0 100644 +--- a/src/radeon_render.c ++++ b/src/radeon_render.c +@@ -268,7 +268,7 @@ RemoveLinear (FBLinearPtr linear) + { + RADEONInfoPtr info = (RADEONInfoPtr)(linear->devPrivate.ptr); + +- info->RenderTex = NULL; ++ info->accel_state->RenderTex = NULL; + } + + static void +@@ -276,13 +276,14 @@ RenderCallback (ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if ((currentTime.milliseconds > info->RenderTimeout) && info->RenderTex) { +- xf86FreeOffscreenLinear(info->RenderTex); +- info->RenderTex = NULL; ++ if ((currentTime.milliseconds > info->accel_state->RenderTimeout) && ++ info->accel_state->RenderTex) { ++ xf86FreeOffscreenLinear(info->accel_state->RenderTex); ++ info->accel_state->RenderTex = NULL; + } + +- if (!info->RenderTex) +- info->RenderCallback = NULL; ++ if (!info->accel_state->RenderTex) ++ info->accel_state->RenderCallback = NULL; + } + + static Bool +@@ -293,30 +294,30 @@ AllocateLinear ( + RADEONInfoPtr info = RADEONPTR(pScrn); + int cpp = info->CurrentLayout.bitsPerPixel / 8; + +- info->RenderTimeout = currentTime.milliseconds + 30000; +- info->RenderCallback = RenderCallback; ++ info->accel_state->RenderTimeout = currentTime.milliseconds + 30000; ++ info->accel_state->RenderCallback = RenderCallback; + + /* XAA allocates in units of pixels at the screen bpp, so adjust size + * appropriately. + */ + sizeNeeded = (sizeNeeded + cpp - 1) / cpp; + +- if (info->RenderTex) { +- if (info->RenderTex->size >= sizeNeeded) ++ if (info->accel_state->RenderTex) { ++ if (info->accel_state->RenderTex->size >= sizeNeeded) + return TRUE; + else { +- if (xf86ResizeOffscreenLinear(info->RenderTex, sizeNeeded)) ++ if (xf86ResizeOffscreenLinear(info->accel_state->RenderTex, sizeNeeded)) + return TRUE; + +- xf86FreeOffscreenLinear(info->RenderTex); +- info->RenderTex = NULL; ++ xf86FreeOffscreenLinear(info->accel_state->RenderTex); ++ info->accel_state->RenderTex = NULL; + } + } + +- info->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32, +- NULL, RemoveLinear, info); ++ info->accel_state->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32, ++ NULL, RemoveLinear, info); + +- return (info->RenderTex != NULL); ++ return (info->accel_state->RenderTex != NULL); + } + + #if X_BYTE_ORDER == X_BIG_ENDIAN +@@ -435,7 +436,7 @@ static Bool FUNC_NAME(R100SetupTexture)( + txformat |= RADEON_TXFORMAT_NON_POWER2; + } + +- offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8; ++ offset = info->accel_state->RenderTex->offset * pScrn->bitsPerPixel / 8; + dst = (uint8_t*)(info->FB + offset); + + /* Upload texture to card. */ +@@ -459,8 +460,8 @@ static Bool FUNC_NAME(R100SetupTexture)( + + #else + +- if (info->accel->NeedToSync) +- info->accel->Sync(pScrn); ++ if (info->accel_state->accel->NeedToSync) ++ info->accel_state->accel->Sync(pScrn); + + while (height--) { + memcpy(dst, src, width * tex_bytepp); +@@ -514,7 +515,7 @@ FUNC_NAME(R100SetupForCPUToScreenAlphaTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R100SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch, +@@ -565,7 +566,7 @@ FUNC_NAME(R100SetupForCPUToScreenTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R100SetupTexture)(pScrn, srcFormat, texPtr, texPitch, width, +@@ -772,10 +773,10 @@ static Bool FUNC_NAME(R200SetupTexture)( + txformat |= RADEON_TXFORMAT_NON_POWER2; + } + +- info->texW[0] = width; +- info->texH[0] = height; ++ info->accel_state->texW[0] = width; ++ info->accel_state->texH[0] = height; + +- offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8; ++ offset = info->accel_state->RenderTex->offset * pScrn->bitsPerPixel / 8; + dst = (uint8_t*)(info->FB + offset); + + /* Upload texture to card. */ +@@ -799,8 +800,8 @@ static Bool FUNC_NAME(R200SetupTexture)( + + #else + +- if (info->accel->NeedToSync) +- info->accel->Sync(pScrn); ++ if (info->accel_state->accel->NeedToSync) ++ info->accel_state->accel->Sync(pScrn); + + while (height--) { + memcpy(dst, src, width * tex_bytepp); +@@ -855,7 +856,7 @@ FUNC_NAME(R200SetupForCPUToScreenAlphaTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R200SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch, +@@ -907,7 +908,7 @@ FUNC_NAME(R200SetupForCPUToScreenTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R200SetupTexture)(pScrn, srcFormat, texPtr, texPitch, width, +@@ -974,10 +975,10 @@ FUNC_NAME(R200SubsequentCPUToScreenTexture) ( + + r = width + l; + b = height + t; +- fl = (float)srcx / info->texW[0]; +- fr = (float)(srcx + width) / info->texW[0]; +- ft = (float)srcy / info->texH[0]; +- fb = (float)(srcy + height) / info->texH[0]; ++ fl = (float)srcx / info->accel_state->texW[0]; ++ fr = (float)(srcx + width) / info->accel_state->texW[0]; ++ ft = (float)srcy / info->accel_state->texH[0]; ++ fb = (float)(srcy + height) / info->accel_state->texH[0]; + + #ifdef ACCEL_CP + BEGIN_RING(24); +diff --git a/src/radeon_sarea.h b/src/radeon_sarea.h +deleted file mode 100644 +index 80333a4..0000000 +--- a/src/radeon_sarea.h ++++ /dev/null +@@ -1,231 +0,0 @@ +-/* +- * Copyright 2000 ATI Technologies Inc., Markham, Ontario, +- * VA Linux Systems Inc., Fremont, California. +- * +- * All Rights Reserved. +- * +- * Permission is hereby granted, free of charge, to any person obtaining +- * a copy of this software and associated documentation files (the +- * "Software"), to deal in the Software without restriction, including +- * without limitation on the rights to use, copy, modify, merge, +- * publish, distribute, sublicense, and/or sell copies of the Software, +- * and to permit persons to whom the Software is furnished to do so, +- * subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the +- * next paragraph) shall be included in all copies or substantial +- * portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR +- * THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- */ +- +-/* +- * Authors: +- * Kevin E. Martin +- * Gareth Hughes +- * +- */ +- +-#ifndef _RADEON_SAREA_H_ +-#define _RADEON_SAREA_H_ +- +-/* WARNING: If you change any of these defines, make sure to change the +- * defines in the kernel file (radeon_drm.h) +- */ +-#ifndef __RADEON_SAREA_DEFINES__ +-#define __RADEON_SAREA_DEFINES__ +- +-/* What needs to be changed for the current vertex buffer? */ +-#define RADEON_UPLOAD_CONTEXT 0x00000001 +-#define RADEON_UPLOAD_VERTFMT 0x00000002 +-#define RADEON_UPLOAD_LINE 0x00000004 +-#define RADEON_UPLOAD_BUMPMAP 0x00000008 +-#define RADEON_UPLOAD_MASKS 0x00000010 +-#define RADEON_UPLOAD_VIEWPORT 0x00000020 +-#define RADEON_UPLOAD_SETUP 0x00000040 +-#define RADEON_UPLOAD_TCL 0x00000080 +-#define RADEON_UPLOAD_MISC 0x00000100 +-#define RADEON_UPLOAD_TEX0 0x00000200 +-#define RADEON_UPLOAD_TEX1 0x00000400 +-#define RADEON_UPLOAD_TEX2 0x00000800 +-#define RADEON_UPLOAD_TEX0IMAGES 0x00001000 +-#define RADEON_UPLOAD_TEX1IMAGES 0x00002000 +-#define RADEON_UPLOAD_TEX2IMAGES 0x00004000 +-#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */ +-#define RADEON_REQUIRE_QUIESCENCE 0x00010000 +-#define RADEON_UPLOAD_ZBIAS 0x00020000 +-#define RADEON_UPLOAD_ALL 0x0002ffff +-#define RADEON_UPLOAD_CONTEXT_ALL 0x000201ff +- +-#define RADEON_FRONT 0x1 +-#define RADEON_BACK 0x2 +-#define RADEON_DEPTH 0x4 +-#define RADEON_STENCIL 0x8 +- +-/* Primitive types */ +-#define RADEON_POINTS 0x1 +-#define RADEON_LINES 0x2 +-#define RADEON_LINE_STRIP 0x3 +-#define RADEON_TRIANGLES 0x4 +-#define RADEON_TRIANGLE_FAN 0x5 +-#define RADEON_TRIANGLE_STRIP 0x6 +-#define RADEON_3VTX_POINTS 0x9 +-#define RADEON_3VTX_LINES 0xa +- +-/* Vertex/indirect buffer size */ +-#define RADEON_BUFFER_SIZE 65536 +- +-/* Byte offsets for indirect buffer data */ +-#define RADEON_INDEX_PRIM_OFFSET 20 +-#define RADEON_HOSTDATA_BLIT_OFFSET 32 +- +-#define RADEON_SCRATCH_REG_OFFSET 32 +- +-/* Keep these small for testing */ +-#define RADEON_NR_SAREA_CLIPRECTS 12 +- +-/* There are 2 heaps (local/GART). Each region within a heap is a +- * minimum of 64k, and there are at most 64 of them per heap. +- */ +-#define RADEON_CARD_HEAP 0 +-#define RADEON_GART_HEAP 1 +-#define RADEON_NR_TEX_HEAPS 2 +-#define RADEON_NR_TEX_REGIONS 64 +-#define RADEON_LOG_TEX_GRANULARITY 16 +- +-#define RADEON_MAX_TEXTURE_LEVELS 12 +-#define RADEON_MAX_TEXTURE_UNITS 3 +- +-/* Blits have strict offset rules. All blit offset must be aligned on +- * a 1K-byte boundary. +- */ +-#define RADEON_OFFSET_SHIFT 10 +-#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT) +-#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1) +- +-#endif /* __RADEON_SAREA_DEFINES__ */ +- +-typedef struct { +- unsigned int red; +- unsigned int green; +- unsigned int blue; +- unsigned int alpha; +-} radeon_color_regs_t; +- +-typedef struct { +- /* Context state */ +- unsigned int pp_misc; +- unsigned int pp_fog_color; +- unsigned int re_solid_color; +- unsigned int rb3d_blendcntl; +- unsigned int rb3d_depthoffset; +- unsigned int rb3d_depthpitch; +- unsigned int rb3d_zstencilcntl; +- +- unsigned int pp_cntl; +- unsigned int rb3d_cntl; +- unsigned int rb3d_coloroffset; +- unsigned int re_width_height; +- unsigned int rb3d_colorpitch; +- unsigned int se_cntl; +- +- /* Vertex format state */ +- unsigned int se_coord_fmt; +- +- /* Line state */ +- unsigned int re_line_pattern; +- unsigned int re_line_state; +- +- unsigned int se_line_width; +- +- /* Bumpmap state */ +- unsigned int pp_lum_matrix; +- +- unsigned int pp_rot_matrix_0; +- unsigned int pp_rot_matrix_1; +- +- /* Mask state */ +- unsigned int rb3d_stencilrefmask; +- unsigned int rb3d_ropcntl; +- unsigned int rb3d_planemask; +- +- /* Viewport state */ +- unsigned int se_vport_xscale; +- unsigned int se_vport_xoffset; +- unsigned int se_vport_yscale; +- unsigned int se_vport_yoffset; +- unsigned int se_vport_zscale; +- unsigned int se_vport_zoffset; +- +- /* Setup state */ +- unsigned int se_cntl_status; +- +- /* Misc state */ +- unsigned int re_top_left; +- unsigned int re_misc; +-} radeon_context_regs_t; +- +-/* Setup registers for each texture unit */ +-typedef struct { +- unsigned int pp_txfilter; +- unsigned int pp_txformat; +- unsigned int pp_txoffset; +- unsigned int pp_txcblend; +- unsigned int pp_txablend; +- unsigned int pp_tfactor; +- unsigned int pp_border_color; +-} radeon_texture_regs_t; +- +-typedef struct { +- /* The channel for communication of state information to the kernel +- * on firing a vertex buffer. +- */ +- radeon_context_regs_t ContextState; +- radeon_texture_regs_t TexState[RADEON_MAX_TEXTURE_UNITS]; +- unsigned int dirty; +- unsigned int vertsize; +- unsigned int vc_format; +- +- /* The current cliprects, or a subset thereof */ +- drm_clip_rect_t boxes[RADEON_NR_SAREA_CLIPRECTS]; +- unsigned int nbox; +- +- /* Counters for throttling of rendering clients */ +- unsigned int last_frame; +- unsigned int last_dispatch; +- unsigned int last_clear; +- +- /* Maintain an LRU of contiguous regions of texture space. If you +- * think you own a region of texture memory, and it has an age +- * different to the one you set, then you are mistaken and it has +- * been stolen by another client. If global texAge hasn't changed, +- * there is no need to walk the list. +- * +- * These regions can be used as a proxy for the fine-grained texture +- * information of other clients - by maintaining them in the same +- * lru which is used to age their own textures, clients have an +- * approximate lru for the whole of global texture space, and can +- * make informed decisions as to which areas to kick out. There is +- * no need to choose whether to kick out your own texture or someone +- * else's - simply eject them all in LRU order. +- */ +- /* Last elt is sentinal */ +- drmTextureRegion texList[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS+1]; +- /* last time texture was uploaded */ +- unsigned int texAge[RADEON_NR_TEX_HEAPS]; +- +- int ctxOwner; /* last context to upload state */ +- int pfAllowPageFlip; /* set by the 2d driver, read by the client */ +- int pfCurrentPage; /* set by kernel, read by others */ +- int crtc2_base; /* for pageflipping with CloneMode */ +- int tiling_enabled; /* set by drm, read by 2d + 3d clients */ +- } RADEONSAREAPriv, *RADEONSAREAPrivPtr; +- +-#endif +diff --git a/src/radeon_textured_video.c b/src/radeon_textured_video.c +index cfa349d..c185b46 100644 +--- a/src/radeon_textured_video.c ++++ b/src/radeon_textured_video.c +@@ -81,33 +81,43 @@ static __inline__ uint32_t F_TO_DW(float val) + } + + #define ACCEL_MMIO +-#define VIDEO_PREAMBLE() unsigned char *RADEONMMIO = info->MMIO +-#define BEGIN_VIDEO(n) RADEONWaitForFifo(pScrn, (n)) +-#define OUT_VIDEO_REG(reg, val) OUTREG(reg, val) +-#define OUT_VIDEO_REG_F(reg, val) OUTREG(reg, F_TO_DW(val)) +-#define FINISH_VIDEO() ++#define ACCEL_PREAMBLE() unsigned char *RADEONMMIO = info->MMIO ++#define BEGIN_ACCEL(n) RADEONWaitForFifo(pScrn, (n)) ++#define OUT_ACCEL_REG(reg, val) OUTREG(reg, val) ++#define OUT_ACCEL_REG_F(reg, val) OUTREG(reg, F_TO_DW(val)) ++#define FINISH_ACCEL() + + #include "radeon_textured_videofuncs.c" + + #undef ACCEL_MMIO +-#undef VIDEO_PREAMBLE +-#undef BEGIN_VIDEO +-#undef OUT_VIDEO_REG +-#undef FINISH_VIDEO ++#undef ACCEL_PREAMBLE ++#undef BEGIN_ACCEL ++#undef OUT_ACCEL_REG ++#undef OUT_ACCEL_REG_F ++#undef FINISH_ACCEL + + #ifdef XF86DRI + + #define ACCEL_CP +-#define VIDEO_PREAMBLE() \ ++#define ACCEL_PREAMBLE() \ + RING_LOCALS; \ + RADEONCP_REFRESH(pScrn, info) +-#define BEGIN_VIDEO(n) BEGIN_RING(2*(n)) +-#define OUT_VIDEO_REG(reg, val) OUT_RING_REG(reg, val) +-#define FINISH_VIDEO() ADVANCE_RING() +-#define OUT_VIDEO_RING_F(x) OUT_RING(F_TO_DW(x)) ++#define BEGIN_ACCEL(n) BEGIN_RING(2*(n)) ++#define OUT_ACCEL_REG(reg, val) OUT_RING_REG(reg, val) ++#define OUT_ACCEL_REG_F(reg, val) OUT_ACCEL_REG(reg, F_TO_DW(val)) ++#define FINISH_ACCEL() ADVANCE_RING() ++#define OUT_RING_F(x) OUT_RING(F_TO_DW(x)) + + #include "radeon_textured_videofuncs.c" + ++#undef ACCEL_CP ++#undef ACCEL_PREAMBLE ++#undef BEGIN_ACCEL ++#undef OUT_ACCEL_REG ++#undef OUT_ACCEL_REG_F ++#undef FINISH_ACCEL ++#undef OUT_RING_F ++ + #endif /* XF86DRI */ + + static int +@@ -187,18 +197,30 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn, + dstPitch = (dstPitch + 15) & ~15; + + if (pPriv->video_memory != NULL && size != pPriv->size) { +- RADEONFreeMemory(pScrn, pPriv->video_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); + pPriv->video_memory = NULL; + } + + if (pPriv->video_memory == NULL) { +- pPriv->video_offset = RADEONAllocateMemory(pScrn, +- &pPriv->video_memory, +- size * 2); ++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, ++ &pPriv->video_memory, ++ size * 2, 64); + if (pPriv->video_offset == 0) + return BadAlloc; + } + ++ /* Bicubic filter loading */ ++ if (!IS_R500_3D) ++ pPriv->bicubic_enabled = FALSE; ++ if (pPriv->bicubic_memory == NULL && pPriv->bicubic_enabled) { ++ pPriv->bicubic_offset = radeon_legacy_allocate_memory(pScrn, ++ &pPriv->bicubic_memory, ++ sizeof(bicubic_tex_512), 64); ++ pPriv->bicubic_src_offset = pPriv->bicubic_offset + info->fbLocation + pScrn->fbOffset; ++ if (pPriv->bicubic_offset == 0) ++ pPriv->bicubic_enabled = FALSE; ++ } ++ + if (pDraw->type == DRAWABLE_WINDOW) + pPriv->pPixmap = (*pScreen->GetWindowPixmap)((WindowPtr)pDraw); + else +@@ -267,6 +289,10 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn, + break; + } + ++ /* Upload bicubic filter tex */ ++ if (pPriv->bicubic_enabled) ++ RADEONCopyData(pScrn, (uint8_t *)bicubic_tex_512, (uint8_t *)(info->FB + pPriv->bicubic_offset), 1024, 1024, 1, 512, 2); ++ + /* update cliplist */ + if (!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { + REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); +@@ -320,12 +346,16 @@ static XF86VideoFormatRec Formats[NUM_FORMATS] = + {15, TrueColor}, {16, TrueColor}, {24, TrueColor} + }; + +-#define NUM_ATTRIBUTES 0 ++#define NUM_ATTRIBUTES 1 + +-static XF86AttributeRec Attributes[NUM_ATTRIBUTES] = ++static XF86AttributeRec Attributes[NUM_ATTRIBUTES+1] = + { ++ {XvSettable | XvGettable, 0, 1, "XV_BICUBIC"}, ++ {0, 0, 0, NULL} + }; + ++static Atom xvBicubic; ++ + #define NUM_IMAGES 4 + + static XF86ImageRec Images[NUM_IMAGES] = +@@ -336,6 +366,44 @@ static XF86ImageRec Images[NUM_IMAGES] = + XVIMAGE_UYVY + }; + ++int ++RADEONGetTexPortAttribute(ScrnInfoPtr pScrn, ++ Atom attribute, ++ INT32 *value, ++ pointer data) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; ++ ++ if (info->accelOn) RADEON_SYNC(info, pScrn); ++ ++ if (attribute == xvBicubic) ++ *value = pPriv->bicubic_enabled ? 1 : 0; ++ else ++ return BadMatch; ++ ++ return Success; ++} ++ ++int ++RADEONSetTexPortAttribute(ScrnInfoPtr pScrn, ++ Atom attribute, ++ INT32 value, ++ pointer data) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; ++ ++ RADEON_SYNC(info, pScrn); ++ ++ if (attribute == xvBicubic) ++ pPriv->bicubic_enabled = ClipValue (value, 0, 1); ++ else ++ return BadMatch; ++ ++ return Success; ++} ++ + XF86VideoAdaptorPtr + RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + { +@@ -351,6 +419,8 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + if (adapt == NULL) + return NULL; + ++ xvBicubic = MAKE_ATOM("XV_BICUBIC"); ++ + adapt->type = XvWindowMask | XvInputMask | XvImageMask; + adapt->flags = 0; + adapt->name = "Radeon Textured Video"; +@@ -367,8 +437,13 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + pPortPriv = + (RADEONPortPrivPtr)(&adapt->pPortPrivates[num_texture_ports]); + +- adapt->nAttributes = NUM_ATTRIBUTES; +- adapt->pAttributes = Attributes; ++ if (IS_R500_3D) { ++ adapt->nAttributes = NUM_ATTRIBUTES; ++ adapt->pAttributes = Attributes; ++ } else { ++ adapt->nAttributes = 0; ++ adapt->pAttributes = NULL; ++ } + adapt->pImages = Images; + adapt->nImages = NUM_IMAGES; + adapt->PutVideo = NULL; +@@ -376,8 +451,8 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + adapt->GetVideo = NULL; + adapt->GetStill = NULL; + adapt->StopVideo = RADEONStopVideo; +- adapt->SetPortAttribute = RADEONSetPortAttribute; +- adapt->GetPortAttribute = RADEONGetPortAttribute; ++ adapt->SetPortAttribute = RADEONSetTexPortAttribute; ++ adapt->GetPortAttribute = RADEONGetTexPortAttribute; + adapt->QueryBestSize = RADEONQueryBestSize; + adapt->PutImage = RADEONPutImageTextured; + adapt->ReputImage = NULL; +@@ -390,6 +465,7 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + pPriv->videoStatus = 0; + pPriv->currentBuffer = 0; + pPriv->doubleBuffer = 0; ++ pPriv->bicubic_enabled = (info->ChipFamily >= CHIP_FAMILY_RV515); + + /* gotta uninit this someplace, XXX: shouldn't be necessary for textured */ + REGION_NULL(pScreen, &pPriv->clip); +diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c +index 277d9b2..c5ad0e1 100644 +--- a/src/radeon_textured_videofuncs.c ++++ b/src/radeon_textured_videofuncs.c +@@ -45,26 +45,47 @@ + #endif + #endif + ++#define VTX_DWORD_COUNT_FILTER 6 + #define VTX_DWORD_COUNT 4 + + #ifdef ACCEL_CP + ++#define VTX_OUT_FILTER(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \ ++do { \ ++ OUT_RING_F(_dstX); \ ++ OUT_RING_F(_dstY); \ ++ OUT_RING_F(_srcX); \ ++ OUT_RING_F(_srcY); \ ++ OUT_RING_F(_maskX); \ ++ OUT_RING_F(_maskY); \ ++} while (0) ++ + #define VTX_OUT(_dstX, _dstY, _srcX, _srcY) \ + do { \ +- OUT_VIDEO_RING_F(_dstX); \ +- OUT_VIDEO_RING_F(_dstY); \ +- OUT_VIDEO_RING_F(_srcX); \ +- OUT_VIDEO_RING_F(_srcY); \ ++ OUT_RING_F(_dstX); \ ++ OUT_RING_F(_dstY); \ ++ OUT_RING_F(_srcX); \ ++ OUT_RING_F(_srcY); \ + } while (0) + + #else /* ACCEL_CP */ + ++#define VTX_OUT_FILTER(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \ ++do { \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _maskX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _maskY); \ ++} while (0) ++ + #define VTX_OUT(_dstX, _dstY, _srcX, _srcY) \ + do { \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _dstX); \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _dstY); \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _srcX); \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _srcY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcY); \ + } while (0) + + #endif /* !ACCEL_CP */ +@@ -79,10 +100,10 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + uint32_t dst_offset, dst_pitch, dst_format; + uint32_t txenable, colorpitch; + uint32_t blendcntl; +- int dstxoff, dstyoff, pixel_shift; ++ int dstxoff, dstyoff, pixel_shift, vtx_count; + BoxPtr pBox = REGION_RECTS(&pPriv->clip); + int nBox = REGION_NUM_RECTS(&pPriv->clip); +- VIDEO_PREAMBLE(); ++ ACCEL_PREAMBLE(); + + pixel_shift = pPixmap->drawable.bitsPerPixel >> 4; + +@@ -106,22 +127,27 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + dstyoff = 0; + #endif + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + /* we can probably improve this */ +- BEGIN_VIDEO(2); ++ BEGIN_ACCEL(2); + if (IS_R300_3D || IS_R500_3D) +- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); ++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); + else +- OUT_VIDEO_REG(RADEON_RB3D_DSTCACHE_CTLSTAT, RADEON_RB3D_DC_FLUSH); ++ OUT_ACCEL_REG(RADEON_RB3D_DSTCACHE_CTLSTAT, RADEON_RB3D_DC_FLUSH); + /* We must wait for 3d to idle, in case source was just written as a dest. */ +- OUT_VIDEO_REG(RADEON_WAIT_UNTIL, ++ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, + RADEON_WAIT_HOST_IDLECLEAN | + RADEON_WAIT_2D_IDLECLEAN | + RADEON_WAIT_3D_IDLECLEAN | + RADEON_WAIT_DMA_GUI_IDLE); +- FINISH_VIDEO(); ++ FINISH_ACCEL(); ++ ++ if (pPriv->bicubic_enabled) ++ vtx_count = VTX_DWORD_COUNT_FILTER; ++ else ++ vtx_count = VTX_DWORD_COUNT; + + if (IS_R300_3D || IS_R500_3D) { + uint32_t output_fmt; +@@ -160,16 +186,17 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + txformat1 |= R300_TX_FORMAT_YUV_TO_RGB_CLAMP; + + txformat0 = ((((pPriv->w - 1) & 0x7ff) << R300_TXWIDTH_SHIFT) | +- (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT)); +- +- txformat0 |= R300_TXPITCH_EN; ++ (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT) | ++ R300_TXPITCH_EN); + +- info->texW[0] = pPriv->w; +- info->texH[0] = pPriv->h; ++ info->accel_state->texW[0] = pPriv->w; ++ info->accel_state->texH[0] = pPriv->h; + + txfilter = (R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_LAST) | + R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST) | +- R300_TX_MAG_FILTER_LINEAR | R300_TX_MIN_FILTER_LINEAR); ++ R300_TX_MAG_FILTER_LINEAR | ++ R300_TX_MIN_FILTER_LINEAR | ++ (0 << R300_TX_ID_SHIFT)); + + /* pitch is in pixels */ + txpitch = pPriv->src_pitch / 2; +@@ -183,22 +210,58 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + + txoffset = pPriv->src_offset; + +- BEGIN_VIDEO(6); +- OUT_VIDEO_REG(R300_TX_FILTER0_0, txfilter); +- OUT_VIDEO_REG(R300_TX_FILTER1_0, 0); +- OUT_VIDEO_REG(R300_TX_FORMAT0_0, txformat0); +- OUT_VIDEO_REG(R300_TX_FORMAT1_0, txformat1); +- OUT_VIDEO_REG(R300_TX_FORMAT2_0, txpitch); +- OUT_VIDEO_REG(R300_TX_OFFSET_0, txoffset); +- FINISH_VIDEO(); ++ BEGIN_ACCEL(6); ++ OUT_ACCEL_REG(R300_TX_FILTER0_0, txfilter); ++ OUT_ACCEL_REG(R300_TX_FILTER1_0, 0); ++ OUT_ACCEL_REG(R300_TX_FORMAT0_0, txformat0); ++ OUT_ACCEL_REG(R300_TX_FORMAT1_0, txformat1); ++ OUT_ACCEL_REG(R300_TX_FORMAT2_0, txpitch); ++ OUT_ACCEL_REG(R300_TX_OFFSET_0, txoffset); ++ FINISH_ACCEL(); + + txenable = R300_TEX_0_ENABLE; + ++ if (pPriv->bicubic_enabled) { ++ /* Size is 128x1 */ ++ txformat0 = ((0x7f << R300_TXWIDTH_SHIFT) | ++ (0x0 << R300_TXHEIGHT_SHIFT) | ++ R300_TXPITCH_EN); ++ /* Format is 32-bit floats, 4bpp */ ++ txformat1 = R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16); ++ /* Pitch is 127 (128-1) */ ++ txpitch = 0x7f; ++ /* Tex filter */ ++ txfilter = (R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP) | ++ R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP) | ++ R300_TX_MIN_FILTER_NEAREST | ++ R300_TX_MAG_FILTER_NEAREST | ++ (1 << R300_TX_ID_SHIFT)); ++ ++ BEGIN_ACCEL(6); ++ OUT_ACCEL_REG(R300_TX_FILTER0_1, txfilter); ++ OUT_ACCEL_REG(R300_TX_FILTER1_1, 0); ++ OUT_ACCEL_REG(R300_TX_FORMAT0_1, txformat0); ++ OUT_ACCEL_REG(R300_TX_FORMAT1_1, txformat1); ++ OUT_ACCEL_REG(R300_TX_FORMAT2_1, txpitch); ++ OUT_ACCEL_REG(R300_TX_OFFSET_1, pPriv->bicubic_src_offset); ++ FINISH_ACCEL(); ++ ++ /* Enable tex 1 */ ++ txenable |= R300_TEX_1_ENABLE; ++ } ++ + /* setup the VAP */ +- if (info->has_tcl) +- BEGIN_VIDEO(6); +- else +- BEGIN_VIDEO(4); ++ if (info->accel_state->has_tcl) { ++ if (pPriv->bicubic_enabled) ++ BEGIN_ACCEL(7); ++ else ++ BEGIN_ACCEL(6); ++ } else { ++ if (pPriv->bicubic_enabled) ++ BEGIN_ACCEL(5); ++ else ++ BEGIN_ACCEL(4); ++ } + + /* These registers define the number, type, and location of data submitted + * to the PVS unit of GA input (when PVS is disabled) +@@ -213,56 +276,90 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + * Textures 0-7 + * Fog + */ +- OUT_VIDEO_REG(R300_VAP_PROG_STREAM_CNTL_0, +- ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) | +- (0 << R300_SKIP_DWORDS_0_SHIFT) | +- (0 << R300_DST_VEC_LOC_0_SHIFT) | +- R300_SIGNED_0 | +- (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) | +- (0 << R300_SKIP_DWORDS_1_SHIFT) | +- (6 << R300_DST_VEC_LOC_1_SHIFT) | +- R300_LAST_VEC_1 | +- R300_SIGNED_1)); ++ if (pPriv->bicubic_enabled) { ++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_0, ++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) | ++ (0 << R300_SKIP_DWORDS_0_SHIFT) | ++ (0 << R300_DST_VEC_LOC_0_SHIFT) | ++ R300_SIGNED_0 | ++ (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) | ++ (0 << R300_SKIP_DWORDS_1_SHIFT) | ++ (6 << R300_DST_VEC_LOC_1_SHIFT) | ++ R300_SIGNED_1)); ++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_1, ++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_2_SHIFT) | ++ (0 << R300_SKIP_DWORDS_2_SHIFT) | ++ (7 << R300_DST_VEC_LOC_2_SHIFT) | ++ R300_LAST_VEC_2 | ++ R300_SIGNED_2)); ++ } else { ++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_0, ++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) | ++ (0 << R300_SKIP_DWORDS_0_SHIFT) | ++ (0 << R300_DST_VEC_LOC_0_SHIFT) | ++ R300_SIGNED_0 | ++ (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) | ++ (0 << R300_SKIP_DWORDS_1_SHIFT) | ++ (6 << R300_DST_VEC_LOC_1_SHIFT) | ++ R300_LAST_VEC_1 | ++ R300_SIGNED_1)); ++ } + + /* load the vertex shader + * We pre-load vertex programs in RADEONInit3DEngine(): ++ * - exa mask/Xv bicubic + * - exa no mask +- * - exa mask + * - Xv + * Here we select the offset of the vertex program we want to use + */ +- if (info->has_tcl) { +- OUT_VIDEO_REG(R300_VAP_PVS_CODE_CNTL_0, +- ((5 << R300_PVS_FIRST_INST_SHIFT) | +- (6 << R300_PVS_XYZW_VALID_INST_SHIFT) | +- (6 << R300_PVS_LAST_INST_SHIFT))); +- OUT_VIDEO_REG(R300_VAP_PVS_CODE_CNTL_1, +- (6 << R300_PVS_LAST_VTX_SRC_INST_SHIFT)); ++ if (info->accel_state->has_tcl) { ++ if (pPriv->bicubic_enabled) { ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0, ++ ((0 << R300_PVS_FIRST_INST_SHIFT) | ++ (2 << R300_PVS_XYZW_VALID_INST_SHIFT) | ++ (2 << R300_PVS_LAST_INST_SHIFT))); ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_1, ++ (2 << R300_PVS_LAST_VTX_SRC_INST_SHIFT)); ++ } else { ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0, ++ ((5 << R300_PVS_FIRST_INST_SHIFT) | ++ (6 << R300_PVS_XYZW_VALID_INST_SHIFT) | ++ (6 << R300_PVS_LAST_INST_SHIFT))); ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_1, ++ (6 << R300_PVS_LAST_VTX_SRC_INST_SHIFT)); ++ } + } + + /* Position and one set of 2 texture coordinates */ +- OUT_VIDEO_REG(R300_VAP_OUT_VTX_FMT_0, R300_VTX_POS_PRESENT); +- OUT_VIDEO_REG(R300_VAP_OUT_VTX_FMT_1, (2 << R300_TEX_0_COMP_CNT_SHIFT)); +- OUT_VIDEO_REG(R300_US_OUT_FMT_0, output_fmt); +- FINISH_VIDEO(); ++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_0, R300_VTX_POS_PRESENT); ++ if (pPriv->bicubic_enabled) ++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_1, ((2 << R300_TEX_0_COMP_CNT_SHIFT) | ++ (2 << R300_TEX_1_COMP_CNT_SHIFT))); ++ else ++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_1, (2 << R300_TEX_0_COMP_CNT_SHIFT)); ++ ++ OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt); ++ FINISH_ACCEL(); + + /* setup pixel shader */ + if (IS_R300_3D) { +- BEGIN_VIDEO(8); ++ BEGIN_ACCEL(9); + /* 2 components: 2 for tex0 */ +- OUT_VIDEO_REG(R300_RS_COUNT, ++ OUT_ACCEL_REG(R300_RS_COUNT, + ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | + R300_RS_COUNT_HIRES_EN)); + /* R300_INST_COUNT_RS - highest RS instruction used */ +- OUT_VIDEO_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); ++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); + +- OUT_VIDEO_REG(R300_US_CODE_OFFSET, ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */ ++ ++ OUT_ACCEL_REG(R300_US_CODE_OFFSET, + (R300_ALU_CODE_OFFSET(0) | + R300_ALU_CODE_SIZE(1) | + R300_TEX_CODE_OFFSET(0) | + R300_TEX_CODE_SIZE(1))); + +- OUT_VIDEO_REG(R300_US_CODE_ADDR_3, ++ OUT_ACCEL_REG(R300_US_CODE_ADDR_3, + (R300_ALU_START(0) | + R300_ALU_SIZE(0) | + R300_TEX_START(0) | +@@ -273,7 +370,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + + /* ALU inst */ + /* RGB */ +- OUT_VIDEO_REG(R300_US_ALU_RGB_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0, + (R300_ALU_RGB_ADDR0(0) | + R300_ALU_RGB_ADDR1(0) | + R300_ALU_RGB_ADDR2(0) | +@@ -282,7 +379,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_RGB_MASK_G | + R300_ALU_RGB_MASK_B)) | + R300_ALU_RGB_TARGET_A)); +- OUT_VIDEO_REG(R300_US_ALU_RGB_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_INST_0, + (R300_ALU_RGB_SEL_A(R300_ALU_RGB_SRC0_RGB) | + R300_ALU_RGB_MOD_A(R300_ALU_RGB_MOD_NOP) | + R300_ALU_RGB_SEL_B(R300_ALU_RGB_1_0) | +@@ -293,7 +390,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_RGB_OMOD(R300_ALU_RGB_OMOD_NONE) | + R300_ALU_RGB_CLAMP)); + /* Alpha */ +- OUT_VIDEO_REG(R300_US_ALU_ALPHA_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0, + (R300_ALU_ALPHA_ADDR0(0) | + R300_ALU_ALPHA_ADDR1(0) | + R300_ALU_ALPHA_ADDR2(0) | +@@ -301,7 +398,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_ALPHA_OMASK(R300_ALU_ALPHA_MASK_A) | + R300_ALU_ALPHA_TARGET_A | + R300_ALU_ALPHA_OMASK_W(R300_ALU_ALPHA_MASK_NONE))); +- OUT_VIDEO_REG(R300_US_ALU_ALPHA_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST_0, + (R300_ALU_ALPHA_SEL_A(R300_ALU_ALPHA_SRC0_A) | + R300_ALU_ALPHA_MOD_A(R300_ALU_ALPHA_MOD_NOP) | + R300_ALU_ALPHA_SEL_B(R300_ALU_ALPHA_1_0) | +@@ -311,118 +408,591 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_ALPHA_OP(R300_ALU_ALPHA_OP_MAD) | + R300_ALU_ALPHA_OMOD(R300_ALU_ALPHA_OMOD_NONE) | + R300_ALU_ALPHA_CLAMP)); +- FINISH_VIDEO(); ++ FINISH_ACCEL(); + } else { +- BEGIN_VIDEO(18); +- /* 2 components: 2 for tex0 */ +- OUT_VIDEO_REG(R300_RS_COUNT, +- ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | +- R300_RS_COUNT_HIRES_EN)); +- +- /* R300_INST_COUNT_RS - highest RS instruction used */ +- OUT_VIDEO_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); +- +- OUT_VIDEO_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) | +- R500_US_CODE_END_ADDR(1))); +- OUT_VIDEO_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) | +- R500_US_CODE_RANGE_SIZE(1))); +- OUT_VIDEO_REG(R500_US_CODE_OFFSET, 0); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_INDEX, 0); +- +- /* tex inst */ +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | +- R500_INST_TEX_SEM_WAIT | +- R500_INST_RGB_WMASK_R | +- R500_INST_RGB_WMASK_G | +- R500_INST_RGB_WMASK_B | +- R500_INST_ALPHA_WMASK | +- R500_INST_RGB_CLAMP | +- R500_INST_ALPHA_CLAMP)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | +- R500_TEX_INST_LD | +- R500_TEX_SEM_ACQUIRE | +- R500_TEX_IGNORE_UNCOVERED)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | +- R500_TEX_SRC_S_SWIZ_R | +- R500_TEX_SRC_T_SWIZ_G | +- R500_TEX_DST_ADDR(0) | +- R500_TEX_DST_R_SWIZ_R | +- R500_TEX_DST_G_SWIZ_G | +- R500_TEX_DST_B_SWIZ_B | +- R500_TEX_DST_A_SWIZ_A)); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_DX_ADDR(0) | +- R500_DX_S_SWIZ_R | +- R500_DX_T_SWIZ_R | +- R500_DX_R_SWIZ_R | +- R500_DX_Q_SWIZ_R | +- R500_DY_ADDR(0) | +- R500_DY_S_SWIZ_R | +- R500_DY_T_SWIZ_R | +- R500_DY_R_SWIZ_R | +- R500_DY_Q_SWIZ_R)); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, 0x00000000); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, 0x00000000); +- +- /* ALU inst */ +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT | +- R500_INST_TEX_SEM_WAIT | +- R500_INST_LAST | +- R500_INST_RGB_OMASK_R | +- R500_INST_RGB_OMASK_G | +- R500_INST_RGB_OMASK_B | +- R500_INST_ALPHA_OMASK | +- R500_INST_RGB_CLAMP | +- R500_INST_ALPHA_CLAMP)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | +- R500_RGB_ADDR1(0) | +- R500_RGB_ADDR1_CONST | +- R500_RGB_ADDR2(0) | +- R500_RGB_ADDR2_CONST)); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | +- R500_ALPHA_ADDR1(0) | +- R500_ALPHA_ADDR1_CONST | +- R500_ALPHA_ADDR2(0) | +- R500_ALPHA_ADDR2_CONST)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | +- R500_ALU_RGB_R_SWIZ_A_R | +- R500_ALU_RGB_G_SWIZ_A_G | +- R500_ALU_RGB_B_SWIZ_A_B | +- R500_ALU_RGB_SEL_B_SRC0 | +- R500_ALU_RGB_R_SWIZ_B_1 | +- R500_ALU_RGB_B_SWIZ_B_1 | +- R500_ALU_RGB_G_SWIZ_B_1)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_OP_MAD | +- R500_ALPHA_SWIZ_A_A | +- R500_ALPHA_SWIZ_B_1)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_OP_MAD | +- R500_ALU_RGBA_R_SWIZ_0 | +- R500_ALU_RGBA_G_SWIZ_0 | +- R500_ALU_RGBA_B_SWIZ_0 | +- R500_ALU_RGBA_A_SWIZ_0)); +- FINISH_VIDEO(); ++ if (pPriv->bicubic_enabled) { ++ BEGIN_ACCEL(7); ++ ++ /* 4 components: 2 for tex0 and 2 for tex1 */ ++ OUT_ACCEL_REG(R300_RS_COUNT, ++ ((4 << R300_RS_COUNT_IT_COUNT_SHIFT) | ++ R300_RS_COUNT_HIRES_EN)); ++ ++ /* R300_INST_COUNT_RS - highest RS instruction used */ ++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6)); ++ ++ /* Pixel stack frame size. */ ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 5); ++ ++ /* FP length. */ ++ OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) | ++ R500_US_CODE_END_ADDR(13))); ++ OUT_ACCEL_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) | ++ R500_US_CODE_RANGE_SIZE(13))); ++ ++ /* Prepare for FP emission. */ ++ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); ++ FINISH_ACCEL(); ++ ++ BEGIN_ACCEL(89); ++ /* Pixel shader. ++ * I've gone ahead and annotated each instruction, since this ++ * thing is MASSIVE. :3 ++ * Note: In order to avoid buggies with temps and multiple ++ * inputs, all temps are offset by 2. temp0 -> register2. */ ++ ++ /* TEX temp2, input1.xxxx, tex1, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(1) | ++ R500_TEX_INST_LD | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(1) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_R | ++ R500_TEX_SRC_R_SWIZ_R | ++ R500_TEX_SRC_Q_SWIZ_R | ++ R500_TEX_DST_ADDR(2) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* TEX temp5, input1.yyyy, tex1, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(1) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(1) | ++ R500_TEX_SRC_S_SWIZ_G | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_SRC_R_SWIZ_G | ++ R500_TEX_SRC_Q_SWIZ_G | ++ R500_TEX_DST_ADDR(5) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* MUL temp4, const0.x0x0, temp2.yyxx */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR0_CONST | ++ R500_RGB_ADDR1(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR0_CONST | ++ R500_ALPHA_ADDR1(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_R | ++ R500_ALU_RGB_G_SWIZ_A_0 | ++ R500_ALU_RGB_B_SWIZ_A_R | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_G | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(4) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC0 | ++ R500_ALPHA_SWIZ_A_0 | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(4) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_R_SWIZ_0 | ++ R500_ALU_RGBA_G_SWIZ_0 | ++ R500_ALU_RGBA_B_SWIZ_0 | ++ R500_ALU_RGBA_A_SWIZ_0)); ++ ++ /* MAD temp3, const0.0y0y, temp5.xxxx, temp4 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR0_CONST | ++ R500_RGB_ADDR1(5) | ++ R500_RGB_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR0_CONST | ++ R500_ALPHA_ADDR1(5) | ++ R500_ALPHA_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_0 | ++ R500_ALU_RGB_G_SWIZ_A_G | ++ R500_ALU_RGB_B_SWIZ_A_0 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_R | ++ R500_ALU_RGB_B_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC0 | ++ R500_ALPHA_SWIZ_A_G | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* ADD temp3, temp3, input0.xyxy */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR1(3) | ++ R500_RGB_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR1(3) | ++ R500_ALPHA_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_R_SWIZ_A_1 | ++ R500_ALU_RGB_G_SWIZ_A_1 | ++ R500_ALU_RGB_B_SWIZ_A_1 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SWIZ_A_1 | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_R | ++ R500_ALU_RGBA_A_SWIZ_G)); ++ ++ /* TEX temp1, temp3.zwxy, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(3) | ++ R500_TEX_SRC_S_SWIZ_B | ++ R500_TEX_SRC_T_SWIZ_A | ++ R500_TEX_SRC_R_SWIZ_R | ++ R500_TEX_SRC_Q_SWIZ_G | ++ R500_TEX_DST_ADDR(1) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* TEX temp3, temp3.xyzw, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(3) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_SRC_R_SWIZ_B | ++ R500_TEX_SRC_Q_SWIZ_A | ++ R500_TEX_DST_ADDR(3) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* MAD temp4, const1.0y0y, temp5.yyyy, temp4 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR0_CONST | ++ R500_RGB_ADDR1(5) | ++ R500_RGB_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR0_CONST | ++ R500_ALPHA_ADDR1(5) | ++ R500_ALPHA_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_0 | ++ R500_ALU_RGB_G_SWIZ_A_G | ++ R500_ALU_RGB_B_SWIZ_A_0 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_G | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_G)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(4) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC0 | ++ R500_ALPHA_SWIZ_A_G | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_G)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(4) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* ADD temp0, temp4, input0.xyxy */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR1(4) | ++ R500_RGB_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR1(4) | ++ R500_ALPHA_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_R_SWIZ_A_1 | ++ R500_ALU_RGB_G_SWIZ_A_1 | ++ R500_ALU_RGB_B_SWIZ_A_1 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SWIZ_A_1 | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_R | ++ R500_ALU_RGBA_A_SWIZ_G)); ++ ++ /* TEX temp4, temp0.zwzw, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | ++ R500_TEX_SRC_S_SWIZ_B | ++ R500_TEX_SRC_T_SWIZ_A | ++ R500_TEX_SRC_R_SWIZ_B | ++ R500_TEX_SRC_Q_SWIZ_A | ++ R500_TEX_DST_ADDR(4) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* TEX temp0, temp0.xyzw, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_SRC_R_SWIZ_B | ++ R500_TEX_SRC_Q_SWIZ_A | ++ R500_TEX_DST_ADDR(0) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* LRP temp3, temp2.zzzz, temp1, temp3 -> ++ * - PRESUB temps, temp1 - temp3 ++ * - MAD temp2.zzzz, temps, temp3 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(3) | ++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 | ++ R500_RGB_ADDR1(1) | ++ R500_RGB_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(3) | ++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 | ++ R500_ALPHA_ADDR1(1) | ++ R500_ALPHA_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 | ++ R500_ALU_RGB_R_SWIZ_A_B | ++ R500_ALU_RGB_G_SWIZ_A_B | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRCP | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC2 | ++ R500_ALPHA_SWIZ_A_B | ++ R500_ALPHA_SEL_B_SRCP | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC0 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* LRP temp0, temp2.zzzz, temp4, temp0 -> ++ * - PRESUB temps, temp4 - temp1 ++ * - MAD temp2.zzzz, temps, temp0 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 | ++ R500_RGB_ADDR1(4) | ++ R500_RGB_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 | ++ R500_ALPHA_ADDR1(4) | ++ R500_ALPHA_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 | ++ R500_ALU_RGB_R_SWIZ_A_B | ++ R500_ALU_RGB_G_SWIZ_A_B | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRCP | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC2 | ++ R500_ALPHA_SWIZ_A_B | ++ R500_ALPHA_SEL_B_SRCP | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC0 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* LRP output, temp5.zzzz, temp3, temp0 -> ++ * - PRESUB temps, temp3 - temp0 ++ * - MAD temp5.zzzz, temps, temp0 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT | ++ R500_INST_LAST | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK | ++ R500_INST_RGB_OMASK_R | ++ R500_INST_RGB_OMASK_G | ++ R500_INST_RGB_OMASK_B | ++ R500_INST_ALPHA_OMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 | ++ R500_RGB_ADDR1(3) | ++ R500_RGB_ADDR2(5))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 | ++ R500_ALPHA_ADDR1(3) | ++ R500_ALPHA_ADDR2(5))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 | ++ R500_ALU_RGB_R_SWIZ_A_B | ++ R500_ALU_RGB_G_SWIZ_A_B | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRCP | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC2 | ++ R500_ALPHA_SWIZ_A_B | ++ R500_ALPHA_SEL_B_SRCP | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC0 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* Shader constants. */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_CONST_INDEX(0)); ++ ++ /* const0 = {1 / texture[0].width, 0, 0, 0} */ ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, (1.0/(float)pPriv->w)); ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, (1.0/(float)pPriv->h)); ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, 0x0); ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, 0x0); ++ ++ FINISH_ACCEL(); ++ ++ } else { ++ BEGIN_ACCEL(19); ++ /* 2 components: 2 for tex0 */ ++ OUT_ACCEL_REG(R300_RS_COUNT, ++ ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | ++ R300_RS_COUNT_HIRES_EN)); ++ ++ /* R300_INST_COUNT_RS - highest RS instruction used */ ++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); ++ ++ /* Pixel stack frame size. */ ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */ ++ ++ /* FP length. */ ++ OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) | ++ R500_US_CODE_END_ADDR(1))); ++ OUT_ACCEL_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) | ++ R500_US_CODE_RANGE_SIZE(1))); ++ ++ /* Prepare for FP emission. */ ++ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); ++ ++ /* tex inst */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK | ++ R500_INST_RGB_CLAMP | ++ R500_INST_ALPHA_CLAMP)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_DST_ADDR(0) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_DX_ADDR(0) | ++ R500_DX_S_SWIZ_R | ++ R500_DX_T_SWIZ_R | ++ R500_DX_R_SWIZ_R | ++ R500_DX_Q_SWIZ_R | ++ R500_DY_ADDR(0) | ++ R500_DY_S_SWIZ_R | ++ R500_DY_T_SWIZ_R | ++ R500_DY_R_SWIZ_R | ++ R500_DY_Q_SWIZ_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* ALU inst */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_LAST | ++ R500_INST_RGB_OMASK_R | ++ R500_INST_RGB_OMASK_G | ++ R500_INST_RGB_OMASK_B | ++ R500_INST_ALPHA_OMASK | ++ R500_INST_RGB_CLAMP | ++ R500_INST_ALPHA_CLAMP)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR1(0) | ++ R500_RGB_ADDR1_CONST | ++ R500_RGB_ADDR2(0) | ++ R500_RGB_ADDR2_CONST)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR1(0) | ++ R500_ALPHA_ADDR1_CONST | ++ R500_ALPHA_ADDR2(0) | ++ R500_ALPHA_ADDR2_CONST)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_R | ++ R500_ALU_RGB_G_SWIZ_A_G | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRC0 | ++ R500_ALU_RGB_R_SWIZ_B_1 | ++ R500_ALU_RGB_B_SWIZ_B_1 | ++ R500_ALU_RGB_G_SWIZ_B_1)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_OP_MAD | ++ R500_ALPHA_SWIZ_A_A | ++ R500_ALPHA_SWIZ_B_1)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_R_SWIZ_0 | ++ R500_ALU_RGBA_G_SWIZ_0 | ++ R500_ALU_RGBA_B_SWIZ_0 | ++ R500_ALU_RGBA_A_SWIZ_0)); ++ FINISH_ACCEL(); ++ } + } + +- BEGIN_VIDEO(5); +- OUT_VIDEO_REG(R300_TX_INVALTAGS, 0); +- OUT_VIDEO_REG(R300_TX_ENABLE, txenable); ++ BEGIN_ACCEL(6); ++ OUT_ACCEL_REG(R300_TX_INVALTAGS, 0); ++ OUT_ACCEL_REG(R300_TX_ENABLE, txenable); + +- OUT_VIDEO_REG(R300_RB3D_COLOROFFSET0, dst_offset); +- OUT_VIDEO_REG(R300_RB3D_COLORPITCH0, colorpitch); ++ OUT_ACCEL_REG(R300_RB3D_COLOROFFSET0, dst_offset); ++ OUT_ACCEL_REG(R300_RB3D_COLORPITCH0, colorpitch); + + blendcntl = RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO; + /* no need to enable blending */ +- OUT_VIDEO_REG(R300_RB3D_BLENDCNTL, blendcntl); +- FINISH_VIDEO(); ++ OUT_ACCEL_REG(R300_RB3D_BLENDCNTL, blendcntl); + +- BEGIN_VIDEO(1); +- OUT_VIDEO_REG(R300_VAP_VTX_SIZE, VTX_DWORD_COUNT); +- FINISH_VIDEO(); ++ OUT_ACCEL_REG(R300_VAP_VTX_SIZE, vtx_count); ++ FINISH_ACCEL(); + + } else { + +@@ -453,20 +1023,20 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + if (RADEONTilingEnabled(pScrn, pPixmap)) + colorpitch |= RADEON_COLOR_TILE_ENABLE; + +- BEGIN_VIDEO(5); ++ BEGIN_ACCEL(5); + +- OUT_VIDEO_REG(RADEON_PP_CNTL, +- RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE); +- OUT_VIDEO_REG(RADEON_RB3D_CNTL, +- dst_format | RADEON_ALPHA_BLEND_ENABLE); +- OUT_VIDEO_REG(RADEON_RB3D_COLOROFFSET, dst_offset); ++ OUT_ACCEL_REG(RADEON_PP_CNTL, ++ RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE); ++ OUT_ACCEL_REG(RADEON_RB3D_CNTL, ++ dst_format | RADEON_ALPHA_BLEND_ENABLE); ++ OUT_ACCEL_REG(RADEON_RB3D_COLOROFFSET, dst_offset); + +- OUT_VIDEO_REG(RADEON_RB3D_COLORPITCH, colorpitch); ++ OUT_ACCEL_REG(RADEON_RB3D_COLORPITCH, colorpitch); + +- OUT_VIDEO_REG(RADEON_RB3D_BLENDCNTL, +- RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO); ++ OUT_ACCEL_REG(RADEON_RB3D_BLENDCNTL, ++ RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO); + +- FINISH_VIDEO(); ++ FINISH_ACCEL(); + + + if ((info->ChipFamily == CHIP_FAMILY_RV250) || +@@ -474,77 +1044,82 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + (info->ChipFamily == CHIP_FAMILY_RS300) || + (info->ChipFamily == CHIP_FAMILY_R200)) { + +- info->texW[0] = pPriv->w; +- info->texH[0] = pPriv->h; +- +- BEGIN_VIDEO(12); +- +- OUT_VIDEO_REG(R200_SE_VTX_FMT_0, R200_VTX_XY); +- OUT_VIDEO_REG(R200_SE_VTX_FMT_1, +- (2 << R200_VTX_TEX0_COMP_CNT_SHIFT)); +- +- OUT_VIDEO_REG(R200_PP_TXFILTER_0, +- R200_MAG_FILTER_LINEAR | +- R200_MIN_FILTER_LINEAR | +- R200_YUV_TO_RGB); +- OUT_VIDEO_REG(R200_PP_TXFORMAT_0, txformat); +- OUT_VIDEO_REG(R200_PP_TXFORMAT_X_0, 0); +- OUT_VIDEO_REG(R200_PP_TXSIZE_0, +- (pPriv->w - 1) | +- ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); +- OUT_VIDEO_REG(R200_PP_TXPITCH_0, pPriv->src_pitch - 32); +- +- OUT_VIDEO_REG(R200_PP_TXOFFSET_0, pPriv->src_offset); +- +- OUT_VIDEO_REG(R200_PP_TXCBLEND_0, +- R200_TXC_ARG_A_ZERO | +- R200_TXC_ARG_B_ZERO | +- R200_TXC_ARG_C_R0_COLOR | +- R200_TXC_OP_MADD); +- OUT_VIDEO_REG(R200_PP_TXCBLEND2_0, +- R200_TXC_CLAMP_0_1 | R200_TXC_OUTPUT_REG_R0); +- OUT_VIDEO_REG(R200_PP_TXABLEND_0, +- R200_TXA_ARG_A_ZERO | +- R200_TXA_ARG_B_ZERO | +- R200_TXA_ARG_C_R0_ALPHA | +- R200_TXA_OP_MADD); +- OUT_VIDEO_REG(R200_PP_TXABLEND2_0, +- R200_TXA_CLAMP_0_1 | R200_TXA_OUTPUT_REG_R0); +- FINISH_VIDEO(); ++ info->accel_state->texW[0] = pPriv->w; ++ info->accel_state->texH[0] = pPriv->h; ++ ++ BEGIN_ACCEL(12); ++ ++ OUT_ACCEL_REG(R200_SE_VTX_FMT_0, R200_VTX_XY); ++ OUT_ACCEL_REG(R200_SE_VTX_FMT_1, ++ (2 << R200_VTX_TEX0_COMP_CNT_SHIFT)); ++ ++ OUT_ACCEL_REG(R200_PP_TXFILTER_0, ++ R200_MAG_FILTER_LINEAR | ++ R200_MIN_FILTER_LINEAR | ++ R200_CLAMP_S_CLAMP_LAST | ++ R200_CLAMP_T_CLAMP_LAST | ++ R200_YUV_TO_RGB); ++ OUT_ACCEL_REG(R200_PP_TXFORMAT_0, txformat); ++ OUT_ACCEL_REG(R200_PP_TXFORMAT_X_0, 0); ++ OUT_ACCEL_REG(R200_PP_TXSIZE_0, ++ (pPriv->w - 1) | ++ ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); ++ OUT_ACCEL_REG(R200_PP_TXPITCH_0, pPriv->src_pitch - 32); ++ ++ OUT_ACCEL_REG(R200_PP_TXOFFSET_0, pPriv->src_offset); ++ ++ OUT_ACCEL_REG(R200_PP_TXCBLEND_0, ++ R200_TXC_ARG_A_ZERO | ++ R200_TXC_ARG_B_ZERO | ++ R200_TXC_ARG_C_R0_COLOR | ++ R200_TXC_OP_MADD); ++ OUT_ACCEL_REG(R200_PP_TXCBLEND2_0, ++ R200_TXC_CLAMP_0_1 | R200_TXC_OUTPUT_REG_R0); ++ OUT_ACCEL_REG(R200_PP_TXABLEND_0, ++ R200_TXA_ARG_A_ZERO | ++ R200_TXA_ARG_B_ZERO | ++ R200_TXA_ARG_C_R0_ALPHA | ++ R200_TXA_OP_MADD); ++ OUT_ACCEL_REG(R200_PP_TXABLEND2_0, ++ R200_TXA_CLAMP_0_1 | R200_TXA_OUTPUT_REG_R0); ++ FINISH_ACCEL(); + } else { + +- info->texW[0] = 1; +- info->texH[0] = 1; +- +- BEGIN_VIDEO(8); +- +- OUT_VIDEO_REG(RADEON_SE_VTX_FMT, RADEON_SE_VTX_FMT_XY | +- RADEON_SE_VTX_FMT_ST0); +- +- OUT_VIDEO_REG(RADEON_PP_TXFILTER_0, RADEON_MAG_FILTER_LINEAR | +- RADEON_MIN_FILTER_LINEAR | +- RADEON_YUV_TO_RGB); +- OUT_VIDEO_REG(RADEON_PP_TXFORMAT_0, txformat); +- OUT_VIDEO_REG(RADEON_PP_TXOFFSET_0, pPriv->src_offset); +- OUT_VIDEO_REG(RADEON_PP_TXCBLEND_0, +- RADEON_COLOR_ARG_A_ZERO | +- RADEON_COLOR_ARG_B_ZERO | +- RADEON_COLOR_ARG_C_T0_COLOR | +- RADEON_BLEND_CTL_ADD | +- RADEON_CLAMP_TX); +- OUT_VIDEO_REG(RADEON_PP_TXABLEND_0, +- RADEON_ALPHA_ARG_A_ZERO | +- RADEON_ALPHA_ARG_B_ZERO | +- RADEON_ALPHA_ARG_C_T0_ALPHA | +- RADEON_BLEND_CTL_ADD | +- RADEON_CLAMP_TX); +- +- OUT_VIDEO_REG(RADEON_PP_TEX_SIZE_0, +- (pPriv->w - 1) | +- ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); +- OUT_VIDEO_REG(RADEON_PP_TEX_PITCH_0, +- pPriv->src_pitch - 32); +- FINISH_VIDEO(); ++ info->accel_state->texW[0] = 1; ++ info->accel_state->texH[0] = 1; ++ ++ BEGIN_ACCEL(8); ++ ++ OUT_ACCEL_REG(RADEON_SE_VTX_FMT, (RADEON_SE_VTX_FMT_XY | ++ RADEON_SE_VTX_FMT_ST0)); ++ ++ OUT_ACCEL_REG(RADEON_PP_TXFILTER_0, ++ RADEON_MAG_FILTER_LINEAR | ++ RADEON_MIN_FILTER_LINEAR | ++ RADEON_CLAMP_S_CLAMP_LAST | ++ RADEON_CLAMP_T_CLAMP_LAST | ++ RADEON_YUV_TO_RGB); ++ OUT_ACCEL_REG(RADEON_PP_TXFORMAT_0, txformat); ++ OUT_ACCEL_REG(RADEON_PP_TXOFFSET_0, pPriv->src_offset); ++ OUT_ACCEL_REG(RADEON_PP_TXCBLEND_0, ++ RADEON_COLOR_ARG_A_ZERO | ++ RADEON_COLOR_ARG_B_ZERO | ++ RADEON_COLOR_ARG_C_T0_COLOR | ++ RADEON_BLEND_CTL_ADD | ++ RADEON_CLAMP_TX); ++ OUT_ACCEL_REG(RADEON_PP_TXABLEND_0, ++ RADEON_ALPHA_ARG_A_ZERO | ++ RADEON_ALPHA_ARG_B_ZERO | ++ RADEON_ALPHA_ARG_C_T0_ALPHA | ++ RADEON_BLEND_CTL_ADD | ++ RADEON_CLAMP_TX); ++ ++ OUT_ACCEL_REG(RADEON_PP_TEX_SIZE_0, ++ (pPriv->w - 1) | ++ ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); ++ OUT_ACCEL_REG(RADEON_PP_TEX_PITCH_0, ++ pPriv->src_pitch - 32); ++ FINISH_ACCEL(); + } + } + +@@ -582,77 +1157,96 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + + #ifdef ACCEL_CP + if (info->ChipFamily < CHIP_FAMILY_R200) { +- BEGIN_RING(4 * VTX_DWORD_COUNT + 3); ++ BEGIN_RING(3 * vtx_count + 3); + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD, +- 4 * VTX_DWORD_COUNT + 1)); ++ 3 * vtx_count + 1)); + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + RADEON_CP_VC_CNTL_MAOS_ENABLE | + RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | +- (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); ++ (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } else { + if (IS_R300_3D || IS_R500_3D) +- BEGIN_RING(4 * VTX_DWORD_COUNT + 4); ++ BEGIN_RING(4 * vtx_count + 4); + else +- BEGIN_RING(4 * VTX_DWORD_COUNT + 2); ++ BEGIN_RING(4 * vtx_count + 2); + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, +- 4 * VTX_DWORD_COUNT)); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ 4 * vtx_count)); ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } + #else /* ACCEL_CP */ + if (IS_R300_3D || IS_R500_3D) +- BEGIN_VIDEO(2 + VTX_DWORD_COUNT * 4); ++ BEGIN_ACCEL(2 + vtx_count * 4); ++ else if (info->ChipFamily < CHIP_FAMILY_R200) ++ BEGIN_ACCEL(1 + vtx_count * 3); + else +- BEGIN_VIDEO(1 + VTX_DWORD_COUNT * 4); ++ BEGIN_ACCEL(1 + vtx_count * 4); + +- if (info->ChipFamily < CHIP_FAMILY_R200) { +- OUT_VIDEO_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_FAN | ++ if (info->ChipFamily < CHIP_FAMILY_R200) ++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST | + RADEON_VF_PRIM_WALK_DATA | + RADEON_VF_RADEON_MODE | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } else { +- OUT_VIDEO_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | ++ (3 << RADEON_VF_NUM_VERTICES_SHIFT))); ++ else ++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | + RADEON_VF_PRIM_WALK_DATA | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } +-#endif ++ (4 << RADEON_VF_NUM_VERTICES_SHIFT))); + +- VTX_OUT((float)dstX, (float)dstY, +- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0]); +- VTX_OUT((float)dstX, (float)(dstY + dsth), +- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0]); +- VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), +- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0]); +- VTX_OUT((float)(dstX + dstw), (float)dstY, +- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0]); ++#endif ++ if (pPriv->bicubic_enabled) { ++ VTX_OUT_FILTER((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcTopLeft.x) + 0.5, xFixedToFloat(srcTopLeft.y) + 0.5); ++ VTX_OUT_FILTER((float)dstX, (float)(dstY + dsth), ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcBottomLeft.x) + 0.5, xFixedToFloat(srcBottomLeft.y) + 0.5); ++ VTX_OUT_FILTER((float)(dstX + dstw), (float)(dstY + dsth), ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcBottomRight.x) + 0.5, xFixedToFloat(srcBottomRight.y) + 0.5); ++ VTX_OUT_FILTER((float)(dstX + dstw), (float)dstY, ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcTopRight.x) + 0.5, xFixedToFloat(srcTopRight.y) + 0.5); ++ } else { ++ if (info->ChipFamily >= CHIP_FAMILY_R200) { ++ VTX_OUT((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0]); ++ } ++ VTX_OUT((float)dstX, (float)(dstY + dsth), ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0]); ++ VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0]); ++ VTX_OUT((float)(dstX + dstw), (float)dstY, ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]); ++ } + + if (IS_R300_3D || IS_R500_3D) + /* flushing is pipelined, free/finish is not */ +- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); ++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); + + #ifdef ACCEL_CP + ADVANCE_RING(); + #else +- FINISH_VIDEO(); ++ FINISH_ACCEL(); + #endif /* !ACCEL_CP */ + + pBox++; + } + + if (IS_R300_3D || IS_R500_3D) { +- BEGIN_VIDEO(2); +- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL); ++ BEGIN_ACCEL(2); ++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL); + } else +- BEGIN_VIDEO(1); +- OUT_VIDEO_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); +- FINISH_VIDEO(); ++ BEGIN_ACCEL(1); ++ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); ++ FINISH_ACCEL(); + + DamageDamageRegion(pPriv->pDraw, &pPriv->clip); + } + + #undef VTX_OUT ++#undef VTX_OUT_FILTER + #undef FUNC_NAME +diff --git a/src/radeon_tv.c b/src/radeon_tv.c +index 90020b3..90d1ac9 100644 +--- a/src/radeon_tv.c ++++ b/src/radeon_tv.c +@@ -140,7 +140,7 @@ static const uint16_t vert_timing_PAL[] = + **********************************************************************/ + static const TVModeConstants availableTVModes[] = + { +- { ++ { /* NTSC timing for 27 Mhz ref clk */ + 800, /* horResolution */ + 600, /* verResolution */ + TV_STD_NTSC, /* standard */ +@@ -155,7 +155,7 @@ static const TVModeConstants availableTVModes[] = + 4, /* crtcPLL_postDiv */ + 1022, /* pixToTV */ + }, +- { ++ { /* PAL timing for 27 Mhz ref clk */ + 800, /* horResolution */ + 600, /* verResolution */ + TV_STD_PAL, /* standard */ +@@ -169,7 +169,22 @@ static const TVModeConstants availableTVModes[] = + 231, /* crtcPLL_M */ + 4, /* crtcPLL_postDiv */ + 759, /* pixToTV */ +- } ++ }, ++ { /* NTSC timing for 14 Mhz ref clk */ ++ 800, /* horResolution */ ++ 600, /* verResolution */ ++ TV_STD_NTSC, /* standard */ ++ 1018, /* horTotal */ ++ 727, /* verTotal */ ++ 813, /* horStart */ ++ 840, /* horSyncStart */ ++ 633, /* verSyncStart */ ++ 630627, /* defRestart */ ++ 347, /* crtcPLL_N */ ++ 14, /* crtcPLL_M */ ++ 8, /* crtcPLL_postDiv */ ++ 1022, /* pixToTV */ ++ }, + }; + + #define N_AVAILABLE_MODES (sizeof(availableModes) / sizeof(availableModes[ 0 ])) +@@ -582,6 +597,8 @@ static Bool RADEONInitTVRestarts(xf86OutputPtr output, RADEONSavePtr save, + DisplayModePtr mode) + { + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ RADEONPLLPtr pll = &info->pll; + int restart; + unsigned hTotal; + unsigned vTotal; +@@ -597,14 +614,21 @@ static Bool RADEONInitTVRestarts(xf86OutputPtr output, RADEONSavePtr save, + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + hTotal = constPtr->horTotal; + vTotal = constPtr->verTotal; +- ++ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || + radeon_output->tvStd == TV_STD_PAL_M || +@@ -696,6 +720,8 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + ScrnInfoPtr pScrn = output->scrn; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; ++ unsigned m, n, p; + unsigned i; + unsigned long vert_space, flicker_removal; + uint32_t tmp; +@@ -703,14 +729,20 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + const uint16_t *hor_timing; + const uint16_t *vert_timing; + +- + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->tv_crc_cntl = 0; + +@@ -796,7 +828,10 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + save->tv_vscaler_cntl1 = RADEON_Y_W_EN; + save->tv_vscaler_cntl1 = + (save->tv_vscaler_cntl1 & 0xe3ff0000) | (vert_space * (1 << FRAC_BITS) / 10000); +- save->tv_vscaler_cntl1 |= RADEON_RESTART_FIELD; ++ ++ if (pll->reference_freq == 2700) ++ save->tv_vscaler_cntl1 |= RADEON_RESTART_FIELD; ++ + if (constPtr->horResolution == 1024) + save->tv_vscaler_cntl1 |= (4 << RADEON_Y_DEL_W_SIG_SHIFT); + else +@@ -873,18 +908,33 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + #endif + + if (radeon_output->tvStd == TV_STD_NTSC || +- radeon_output->tvStd == TV_STD_NTSC_J) +- save->tv_pll_cntl = (NTSC_TV_PLL_M & RADEON_TV_M0LO_MASK) | +- (((NTSC_TV_PLL_M >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) | +- ((NTSC_TV_PLL_N & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) | +- (((NTSC_TV_PLL_N >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) | +- ((NTSC_TV_PLL_P & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT); +- else +- save->tv_pll_cntl = (PAL_TV_PLL_M & RADEON_TV_M0LO_MASK) | +- (((PAL_TV_PLL_M >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) | +- ((PAL_TV_PLL_N & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) | +- (((PAL_TV_PLL_N >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) | +- ((PAL_TV_PLL_P & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT); ++ radeon_output->tvStd == TV_STD_NTSC_J) { ++ if (pll->reference_freq == 2700) { ++ m = NTSC_TV_PLL_M_27; ++ n = NTSC_TV_PLL_N_27; ++ p = NTSC_TV_PLL_P_27; ++ } else { ++ m = NTSC_TV_PLL_M_14; ++ n = NTSC_TV_PLL_N_14; ++ p = NTSC_TV_PLL_P_14; ++ } ++ } else { ++ if (pll->reference_freq == 2700) { ++ m = PAL_TV_PLL_M_27; ++ n = PAL_TV_PLL_N_27; ++ p = PAL_TV_PLL_P_27; ++ } else { ++ /* FIXME */ ++ m = PAL_TV_PLL_M_27; ++ n = PAL_TV_PLL_N_27; ++ p = PAL_TV_PLL_P_27; ++ } ++ } ++ save->tv_pll_cntl = (m & RADEON_TV_M0LO_MASK) | ++ (((m >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) | ++ ((n & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) | ++ (((n >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) | ++ ((p & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT); + + save->tv_pll_cntl1 = (((4 & RADEON_TVPCP_MASK)<< RADEON_TVPCP_SHIFT) | + ((4 & RADEON_TVPVG_MASK) << RADEON_TVPVG_SHIFT) | +@@ -999,14 +1049,23 @@ void RADEONAdjustCrtcRegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + { + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->crtc_h_total_disp = (((constPtr->horResolution / 8) - 1) << RADEON_CRTC_H_DISP_SHIFT) | + (((constPtr->horTotal / 8) - 1) << RADEON_CRTC_H_TOTAL_SHIFT); +@@ -1030,14 +1089,23 @@ void RADEONAdjustPLLRegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + unsigned postDiv; + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->htotal_cntl = (constPtr->horTotal & 0x7 /*0xf*/) | RADEON_HTOT_CNTL_VGA_EN; + +@@ -1083,14 +1151,23 @@ void RADEONAdjustCrtc2RegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + { + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->crtc2_h_total_disp = (((constPtr->horResolution / 8) - 1) << RADEON_CRTC_H_DISP_SHIFT) | + (((constPtr->horTotal / 8) - 1) << RADEON_CRTC_H_TOTAL_SHIFT); +@@ -1114,14 +1191,23 @@ void RADEONAdjustPLL2RegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + unsigned postDiv; + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->htotal_cntl2 = (constPtr->horTotal & 0x7); /* 0xf */ + +diff --git a/src/radeon_tv.h b/src/radeon_tv.h +index c4b7838..8d77a77 100644 +--- a/src/radeon_tv.h ++++ b/src/radeon_tv.h +@@ -27,24 +27,31 @@ + #define MAX_H_SIZE 5 /* Range: [-5..5], negative is smaller, positive is larger */ + + /* tv standard constants */ +-#define NTSC_TV_PLL_M 22 +-#define NTSC_TV_PLL_N 175 +-#define NTSC_TV_PLL_P 5 + #define NTSC_TV_CLOCK_T 233 + #define NTSC_TV_VFTOTAL 1 + #define NTSC_TV_LINES_PER_FRAME 525 + #define NTSC_TV_ZERO_H_SIZE 479166 + #define NTSC_TV_H_SIZE_UNIT 9478 + +-#define PAL_TV_PLL_M 113 +-#define PAL_TV_PLL_N 668 +-#define PAL_TV_PLL_P 3 + #define PAL_TV_CLOCK_T 188 + #define PAL_TV_VFTOTAL 3 + #define PAL_TV_LINES_PER_FRAME 625 + #define PAL_TV_ZERO_H_SIZE 473200 + #define PAL_TV_H_SIZE_UNIT 9360 + ++/* tv pll setting for 27 mhz ref clk */ ++#define NTSC_TV_PLL_M_27 22 ++#define NTSC_TV_PLL_N_27 175 ++#define NTSC_TV_PLL_P_27 5 ++ ++#define PAL_TV_PLL_M_27 113 ++#define PAL_TV_PLL_N_27 668 ++#define PAL_TV_PLL_P_27 3 ++ ++/* tv pll setting for 14 mhz ref clk */ ++#define NTSC_TV_PLL_M_14 33 ++#define NTSC_TV_PLL_N_14 693 ++#define NTSC_TV_PLL_P_14 7 + + #define VERT_LEAD_IN_LINES 2 + #define FRAC_BITS 0xe +diff --git a/src/radeon_version.h b/src/radeon_version.h +index ccc1367..5717ead 100644 +--- a/src/radeon_version.h ++++ b/src/radeon_version.h +@@ -39,10 +39,9 @@ + #define R200_DRIVER_NAME "r200" + #define R300_DRIVER_NAME "r300" + +-#define RADEON_VERSION_MAJOR 4 +-#define RADEON_VERSION_MAJOR_TILED 5 +-#define RADEON_VERSION_MINOR 3 +-#define RADEON_VERSION_PATCH 0 ++#define RADEON_VERSION_MAJOR PACKAGE_VERSION_MAJOR ++#define RADEON_VERSION_MINOR PACKAGE_VERSION_MINOR ++#define RADEON_VERSION_PATCH PACKAGE_VERSION_PATCHLEVEL + + #ifndef RADEON_VERSION_EXTRA + #define RADEON_VERSION_EXTRA "" +diff --git a/src/radeon_video.c b/src/radeon_video.c +index ac60166..6249cea 100644 +--- a/src/radeon_video.c ++++ b/src/radeon_video.c +@@ -89,10 +89,6 @@ static void RADEON_MSP_SetEncoding(RADEONPortPrivPtr pPriv); + static void RADEON_TDA9885_SetEncoding(RADEONPortPrivPtr pPriv); + static void RADEON_FI1236_SetEncoding(RADEONPortPrivPtr pPriv); + +- +- +-#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v)) +- + static Atom xvBrightness, xvColorKey, xvSaturation, xvDoubleBuffer; + static Atom xvRedIntensity, xvGreenIntensity, xvBlueIntensity; + static Atom xvContrast, xvHue, xvColor, xvAutopaintColorkey, xvSetDefaults; +@@ -106,7 +102,6 @@ static Atom xvEncoding, xvFrequency, xvVolume, xvMute, + + static Atom xvOvAlpha, xvGrAlpha, xvAlphaMode; + +- + #define GET_PORT_PRIVATE(pScrn) \ + (RADEONPortPrivPtr)((RADEONPTR(pScrn))->adaptor->pPortPrivates[0].ptr) + +@@ -245,19 +240,6 @@ radeon_crtc_clip_video(ScrnInfoPtr pScrn, + #endif + } + +-#ifdef USE_EXA +-static void +-ATIVideoSave(ScreenPtr pScreen, ExaOffscreenArea *area) +-{ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONPortPrivPtr pPriv = info->adaptor->pPortPrivates[0].ptr; +- +- if (pPriv->video_memory == area) +- pPriv->video_memory = NULL; +-} +-#endif /* USE_EXA */ +- + void RADEONInitVideo(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; +@@ -1632,13 +1614,12 @@ RADEONSetupImageVideo(ScreenPtr pScreen) + + pPriv->textured = FALSE; + +- if(pPriv->theatre != NULL) +- { ++ if(pPriv->theatre != NULL) { + /* video decoder is present, extend capabilities */ + adapt->nEncodings = 13; + adapt->pEncodings = InputVideoEncodings; + adapt->type |= XvVideoMask; +- adapt->nAttributes = NUM_DEC_ATTRIBUTES; ++ adapt->nAttributes = NUM_DEC_ATTRIBUTES; + adapt->PutVideo = RADEONPutVideo; + } + +@@ -1654,8 +1635,19 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool cleanup) + unsigned char *RADEONMMIO = info->MMIO; + RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; + +- if (pPriv->textured) +- return; ++ if (pPriv->textured) { ++ if (cleanup) { ++ if (pPriv->bicubic_memory != NULL) { ++ radeon_legacy_free_memory(pScrn, pPriv->bicubic_memory); ++ pPriv->bicubic_memory = NULL; ++ } ++ if (pPriv->video_memory != NULL) { ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); ++ pPriv->video_memory = NULL; ++ } ++ } ++ return; ++ } + + REGION_EMPTY(pScrn->pScreen, &pPriv->clip); + +@@ -1675,7 +1667,7 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool cleanup) + if(pPriv->i2c != NULL) RADEON_board_setmisc(pPriv); + } + if (pPriv->video_memory != NULL) { +- RADEONFreeMemory(pScrn, pPriv->video_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); + pPriv->video_memory = NULL; + } + pPriv->videoStatus = 0; +@@ -1699,9 +1691,6 @@ RADEONSetPortAttribute(ScrnInfoPtr pScrn, + Bool setAlpha = FALSE; + unsigned char *RADEONMMIO = info->MMIO; + +- if (pPriv->textured) +- return BadMatch; +- + RADEON_SYNC(info, pScrn); + + #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) +@@ -1928,7 +1917,7 @@ RADEONSetPortAttribute(ScrnInfoPtr pScrn, + if(pPriv->fi1236!=NULL){ + xf86_fi1236_dump_status(pPriv->fi1236); + } +- } ++ } + else if(attribute == xvAdjustment) + { + pPriv->adjustment=value; +@@ -1973,9 +1962,6 @@ RADEONGetPortAttribute(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; + +- if (pPriv->textured) +- return BadMatch; +- + if (info->accelOn) RADEON_SYNC(info, pScrn); + + if(attribute == xvAutopaintColorkey) +@@ -2433,120 +2419,13 @@ RADEONCopyMungedData( + } + } + +- +-/* Allocates memory, either by resizing the allocation pointed to by mem_struct, +- * or by freeing mem_struct (if non-NULL) and allocating a new space. The size +- * is measured in bytes, and the offset from the beginning of card space is +- * returned. +- */ +-uint32_t +-RADEONAllocateMemory( +- ScrnInfoPtr pScrn, +- void **mem_struct, +- int size +-){ +- ScreenPtr pScreen; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- int offset = 0; +- +- pScreen = screenInfo.screens[pScrn->scrnIndex]; +-#ifdef USE_EXA +- if (info->useEXA) { +- ExaOffscreenArea *area = *mem_struct; +- +- if (area != NULL) { +- if (area->size >= size) +- return area->offset; +- +- exaOffscreenFree(pScrn->pScreen, area); +- } +- +- area = exaOffscreenAlloc(pScrn->pScreen, size, 64, TRUE, ATIVideoSave, +- NULL); +- *mem_struct = area; +- if (area == NULL) +- return 0; +- offset = area->offset; +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- FBLinearPtr linear = *mem_struct; +- int cpp = info->CurrentLayout.bitsPerPixel / 8; +- +- /* XAA allocates in units of pixels at the screen bpp, so adjust size +- * appropriately. +- */ +- size = (size + cpp - 1) / cpp; +- +- if (linear) { +- if(linear->size >= size) +- return linear->offset * cpp; +- +- if(xf86ResizeOffscreenLinear(linear, size)) +- return linear->offset * cpp; +- +- xf86FreeOffscreenLinear(linear); +- } +- +- linear = xf86AllocateOffscreenLinear(pScreen, size, 16, +- NULL, NULL, NULL); +- *mem_struct = linear; +- +- if (!linear) { +- int max_size; +- +- xf86QueryLargestOffscreenLinear(pScreen, &max_size, 16, +- PRIORITY_EXTREME); +- +- if(max_size < size) +- return 0; +- +- xf86PurgeUnlockedOffscreenAreas(pScreen); +- linear = xf86AllocateOffscreenLinear(pScreen, size, 16, +- NULL, NULL, NULL); +- *mem_struct = linear; +- if (!linear) +- return 0; +- } +- offset = linear->offset * cpp; +- } +-#endif /* USE_XAA */ +- +- return offset; +-} +- +-void +-RADEONFreeMemory( +- ScrnInfoPtr pScrn, +- void *mem_struct +-){ +- RADEONInfoPtr info = RADEONPTR(pScrn); +- +-#ifdef USE_EXA +- if (info->useEXA) { +- ExaOffscreenArea *area = mem_struct; +- +- if (area != NULL) +- exaOffscreenFree(pScrn->pScreen, area); +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- FBLinearPtr linear = mem_struct; +- +- if (linear != NULL) +- xf86FreeOffscreenLinear(linear); +- } +-#endif /* USE_XAA */ +-} +- + static void + RADEONDisplayVideo( + ScrnInfoPtr pScrn, + xf86CrtcPtr crtc, + RADEONPortPrivPtr pPriv, + int id, ++ int base_offset, + int offset1, int offset2, + int offset3, int offset4, + int offset5, int offset6, +@@ -2715,6 +2594,20 @@ RADEONDisplayVideo( + } + #endif + ++ /* Make the overlay base address as close to the buffers as possible to ++ * prevent the buffer offsets from exceeding the hardware limit of 128 MB. ++ * The base address must be aligned to a multiple of 4 MB. ++ */ ++ base_offset = ((info->fbLocation + base_offset) & (~0 << 22)) - ++ info->fbLocation; ++ ++ offset1 -= base_offset; ++ offset2 -= base_offset; ++ offset3 -= base_offset; ++ offset4 -= base_offset; ++ offset5 -= base_offset; ++ offset6 -= base_offset; ++ + /* keep everything in 16.16 */ + + if (is_planar) { +@@ -2846,6 +2739,12 @@ RADEONDisplayVideo( + src_w >>= 1; + OUTREG(RADEON_OV0_P2_X_START_END, (src_w + leftuv - 1) | (leftuv << 16)); + OUTREG(RADEON_OV0_P3_X_START_END, (src_w + leftuv - 1) | (leftuv << 16)); ++ if (info->ModeReg->ov0_base_addr != (info->fbLocation + base_offset)) { ++ ErrorF("Changing OV0_BASE_ADDR from 0x%08x to 0x%08x\n", ++ info->ModeReg->ov0_base_addr, info->fbLocation + base_offset); ++ info->ModeReg->ov0_base_addr = info->fbLocation + base_offset; ++ OUTREG(RADEON_OV0_BASE_ADDR, info->ModeReg->ov0_base_addr); ++ } + OUTREG(RADEON_OV0_VID_BUF0_BASE_ADRS, offset1); + OUTREG(RADEON_OV0_VID_BUF1_BASE_ADRS, offset2); + OUTREG(RADEON_OV0_VID_BUF2_BASE_ADRS, offset3); +@@ -3038,9 +2937,9 @@ RADEONPutImage( + if (idconv == FOURCC_YV12 || id == FOURCC_I420) { + new_size += (dstPitch >> 1) * ((height + 1) & ~1); + } +- pPriv->video_offset = RADEONAllocateMemory(pScrn, &pPriv->video_memory, +- (pPriv->doubleBuffer ? +- (new_size * 2) : new_size)); ++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, &pPriv->video_memory, ++ (pPriv->doubleBuffer ? ++ (new_size * 2) : new_size), 64); + if (pPriv->video_offset == 0) + return BadAlloc; + +@@ -3150,9 +3049,10 @@ RADEONPutImage( + + /* FIXME: someone should look at these offsets, I don't think it makes sense how + they are handled throughout the source. */ +- RADEONDisplayVideo(pScrn, crtc, pPriv, idconv, offset, offset + d2line, offset + d3line, +- offset, offset + d2line, offset + d3line, width, height, dstPitch, +- xa, xb, ya, &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB); ++ RADEONDisplayVideo(pScrn, crtc, pPriv, idconv, pPriv->video_offset, offset, ++ offset + d2line, offset + d3line, offset, offset + d2line, ++ offset + d3line, width, height, dstPitch, xa, xb, ya, ++ &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB); + + pPriv->videoStatus = CLIENT_VIDEO_ON; + +@@ -3233,7 +3133,7 @@ RADEONVideoTimerCallback(ScrnInfoPtr pScrn, Time now) + } else { /* FREE_TIMER */ + if(pPriv->freeTime < now) { + if (pPriv->video_memory != NULL) { +- RADEONFreeMemory(pScrn, pPriv->video_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); + pPriv->video_memory = NULL; + } + pPriv->videoStatus = 0; +@@ -3268,7 +3168,7 @@ RADEONAllocateSurface( + pitch = ((w << 1) + 15) & ~15; + size = pitch * h; + +- offset = RADEONAllocateMemory(pScrn, &surface_memory, size); ++ offset = radeon_legacy_allocate_memory(pScrn, &surface_memory, size, 64); + if (offset == 0) + return BadAlloc; + +@@ -3276,18 +3176,18 @@ RADEONAllocateSurface( + surface->height = h; + + if(!(surface->pitches = xalloc(sizeof(int)))) { +- RADEONFreeMemory(pScrn, surface_memory); ++ radeon_legacy_free_memory(pScrn, surface_memory); + return BadAlloc; + } + if(!(surface->offsets = xalloc(sizeof(int)))) { + xfree(surface->pitches); +- RADEONFreeMemory(pScrn, surface_memory); ++ radeon_legacy_free_memory(pScrn, surface_memory); + return BadAlloc; + } + if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) { + xfree(surface->pitches); + xfree(surface->offsets); +- RADEONFreeMemory(pScrn, surface_memory); ++ radeon_legacy_free_memory(pScrn, surface_memory); + return BadAlloc; + } + +@@ -3328,7 +3228,8 @@ RADEONFreeSurface( + + if(pPriv->isOn) + RADEONStopSurface(surface); +- RADEONFreeMemory(pScrn, pPriv->surface_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->surface_memory); ++ pPriv->surface_memory = NULL; + xfree(surface->pitches); + xfree(surface->offsets); + xfree(surface->devPrivate.ptr); +@@ -3417,8 +3318,9 @@ RADEONDisplaySurface( + surface->offsets[0], surface->offsets[0], + surface->offsets[0], surface->offsets[0], + surface->offsets[0], surface->offsets[0], +- surface->width, surface->height, surface->pitches[0], +- xa, xb, ya, &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB); ++ surface->offsets[0], surface->width, surface->height, ++ surface->pitches[0], xa, xb, ya, &dstBox, src_w, src_h, ++ drw_w, drw_h, METHOD_BOB); + + if (portPriv->autopaint_colorkey) + xf86XVFillKeyHelper(pScrn->pScreen, portPriv->colorKey, clipBoxes); +@@ -3602,9 +3504,9 @@ RADEONPutVideo( + if (pPriv->capture_vbi_data) + alloc_size += 2 * 2 * vbi_line_width * 21; + +- pPriv->video_offset = RADEONAllocateMemory(pScrn, &pPriv->video_memory, +- (pPriv->doubleBuffer ? +- (new_size * 2) : new_size)); ++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, &pPriv->video_memory, ++ (pPriv->doubleBuffer ? ++ (new_size * 2) : new_size), 64); + if (pPriv->video_offset == 0) + return BadAlloc; + +@@ -3705,10 +3607,12 @@ RADEONPutVideo( + RADEONFillKeyHelper(pDraw, pPriv->colorKey, clipBoxes); + } + +- RADEONDisplayVideo(pScrn, crtc, pPriv, id, offset1+top*srcPitch, offset2+top*srcPitch, +- offset3+top*srcPitch, offset4+top*srcPitch, offset1+top*srcPitch, +- offset2+top*srcPitch, width, height, dstPitch*mult/2, +- xa, xb, ya, &dstBox, src_w, src_h*mult/2, drw_w, drw_h, pPriv->overlay_deinterlacing_method); ++ RADEONDisplayVideo(pScrn, crtc, pPriv, id, pPriv->video_offset, ++ offset1+top*srcPitch, offset2+top*srcPitch, ++ offset3+top*srcPitch, offset4+top*srcPitch, ++ offset1+top*srcPitch, offset2+top*srcPitch, width, height, ++ dstPitch*mult/2, xa, xb, ya, &dstBox, src_w, src_h*mult/2, ++ drw_w, drw_h, pPriv->overlay_deinterlacing_method); + + RADEONWaitForFifo(pScrn, 1); + OUTREG(RADEON_OV0_REG_LOAD_CNTL, RADEON_REG_LD_CTL_LOCK); +diff --git a/src/radeon_video.h b/src/radeon_video.h +index 096de37..11b8029 100644 +--- a/src/radeon_video.h ++++ b/src/radeon_video.h +@@ -13,6 +13,10 @@ + + #include "xf86Crtc.h" + ++#include "bicubic_table.h" ++ ++#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v)) ++ + /* Xvideo port struct */ + typedef struct { + uint32_t transform_index; +@@ -37,7 +41,7 @@ typedef struct { + uint32_t radeon_N; + uint32_t i2c_status; + uint32_t i2c_cntl; +- ++ + FI1236Ptr fi1236; + uint8_t tuner_type; + MSP3430Ptr msp3430; +@@ -46,7 +50,7 @@ typedef struct { + + /* VIP bus and devices */ + GENERIC_BUS_Ptr VIP; +- TheatrePtr theatre; ++ TheatrePtr theatre; + + Bool video_stream_active; + int encoding; +@@ -56,7 +60,7 @@ typedef struct { + int sap_channel; + int v; + uint32_t adjustment; /* general purpose variable */ +- ++ + #define METHOD_BOB 0 + #define METHOD_SINGLE 1 + #define METHOD_WEAVE 2 +@@ -82,13 +86,16 @@ typedef struct { + xf86CrtcPtr desired_crtc; + + int size; +-#ifdef USE_EXA +- ExaOffscreenArea *off_screen; +-#endif + + void *video_memory; + int video_offset; + ++ /* bicubic filtering */ ++ void *bicubic_memory; ++ int bicubic_offset; ++ Bool bicubic_enabled; ++ uint32_t bicubic_src_offset; ++ + Atom device_id, location_id, instance_id; + + /* textured video */ +@@ -106,18 +113,12 @@ typedef struct { + int drw_x, drw_y; + } RADEONPortPrivRec, *RADEONPortPrivPtr; + +- + void RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + + void RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + +-uint32_t +-RADEONAllocateMemory(ScrnInfoPtr pScrn, void **mem_struct, int size); +-void +-RADEONFreeMemory(ScrnInfoPtr pScrn, void *mem_struct); +- + int RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer); + int RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer); + void RADEONStopVideo(ScrnInfoPtr, pointer, Bool); diff --git a/abs/core/xf86-video-ati/mesa-7.1-link-shared.patch b/abs/core/xf86-video-ati/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-ati/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-chips/PKGBUILD b/abs/core/xf86-video-chips/PKGBUILD index 60161c3..f63366d 100644 --- a/abs/core/xf86-video-chips/PKGBUILD +++ b/abs/core/xf86-video-chips/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3258 2008-06-21 18:34:07Z jgc $ +# $Id: PKGBUILD 22287 2008-12-25 17:17:00Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-chips -pkgver=1.2.0 +pkgver=1.2.1 pkgrel=1 pkgdesc="X.org Chips and Technologies video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=(glibc) -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2f2643fca6335f18024bffa6c4e0c12f') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('0fec6bee65383790485d917247a61629') diff --git a/abs/core/xf86-video-cirrus/PKGBUILD b/abs/core/xf86-video-cirrus/PKGBUILD index 02aecfc..4527182 100644 --- a/abs/core/xf86-video-cirrus/PKGBUILD +++ b/abs/core/xf86-video-cirrus/PKGBUILD @@ -1,14 +1,15 @@ -# $Id: PKGBUILD 3247 2008-06-21 18:15:30Z jgc $ +# $Id: PKGBUILD 11420 2008-08-31 15:22:15Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-cirrus pkgver=1.2.1 -pkgrel=1 +pkgrel=2 pkgdesc="X.org Cirrus Logic video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) diff --git a/abs/core/xf86-video-dummy/PKGBUILD b/abs/core/xf86-video-dummy/PKGBUILD index 51763f6..b060c9c 100644 --- a/abs/core/xf86-video-dummy/PKGBUILD +++ b/abs/core/xf86-video-dummy/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11419 2008-08-31 15:22:13Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-dummy -pkgver=0.2.0 -pkgrel=4 +pkgver=0.3.0 +pkgrel=1 pkgdesc="X.org dummy video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('22b7cc20a33443cbd218bd2521850cfe') +md5sums=('3d96297556846bee02a74166ffb5d052') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-video-fbdev/PKGBUILD b/abs/core/xf86-video-fbdev/PKGBUILD index c5d835c..05bcbca 100644 --- a/abs/core/xf86-video-fbdev/PKGBUILD +++ b/abs/core/xf86-video-fbdev/PKGBUILD @@ -1,23 +1,26 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11425 2008-08-31 15:24:08Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-fbdev -pkgver=0.3.1 -pkgrel=4 +pkgver=0.4.0 +pkgrel=1 pkgdesc="X.org framebuffer video driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('9ae810c6c6c3c9713a67866fe794d4ff') +md5sums=('6572b39fec77b8e6de1c858a93992924') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core/xf86-video-glint/PKGBUILD b/abs/core/xf86-video-glint/PKGBUILD index 15c0dce..f52d528 100644 --- a/abs/core/xf86-video-glint/PKGBUILD +++ b/abs/core/xf86-video-glint/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22285 2008-12-25 17:13:14Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-glint -pkgver=1.1.1 -pkgrel=5 +pkgver=1.2.2 +pkgrel=1 pkgdesc="X.org GLINT/Permedia video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.3.99.2' 'xf86driproto' 'mesa') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('4295a46a75fa98470c6dfb0e1a4f7e9f') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('2cf49f701024a145bd25aff9da11d479') diff --git a/abs/core/xf86-video-i128/PKGBUILD b/abs/core/xf86-video-i128/PKGBUILD index fcf2c06..2c98984 100644 --- a/abs/core/xf86-video-i128/PKGBUILD +++ b/abs/core/xf86-video-i128/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11431 2008-08-31 15:26:32Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-i128 -pkgver=1.2.1 -pkgrel=4 +pkgver=1.3.0 +pkgrel=1 pkgdesc="X.org Number 9 I128 video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('aff4922d2f02bad7e0d8649358edbcee') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('d0080732eaa15059b0a953aa3522185a') diff --git a/abs/core/xf86-video-i740/PKGBUILD b/abs/core/xf86-video-i740/PKGBUILD index 9101847..3e0fd57 100644 --- a/abs/core/xf86-video-i740/PKGBUILD +++ b/abs/core/xf86-video-i740/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11440 2008-08-31 15:37:53Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-i740 -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org Intel i740 video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('57302e225060a7286ae1a970c87a589b') +md5sums=('d0e5a805c546b29b1dd3b55a68d16dc4') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch b/abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch new file mode 100644 index 0000000..c2c72a7 --- /dev/null +++ b/abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch @@ -0,0 +1,18 @@ +diff -Nurp xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c 2008-06-20 00:05:23.000000000 -0700 ++++ xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c 2008-06-20 00:20:19.000000000 -0700 +@@ -266,9 +266,13 @@ static i830_quirk i830_quirk_list[] = { + /* HP Compaq 6730s has no TV output */ + { PCI_CHIP_IGD_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + ++ /* Thinkpad G40 needs pipe A force quirk (See LP: #240457) */ ++ { PCI_CHIP_I855_GM, 0x1014, 0x0543, quirk_pipea_force }, + /* Thinkpad R31 needs pipe A force quirk */ + { PCI_CHIP_I830_M, 0x1014, 0x0505, quirk_pipea_force }, +- /* Dell Latitude D400 needs pipe A force quirk (LP: #228519) */ ++ /* Dell Latitude C400 needs pipe A force quirk (See LP: #216490) */ ++ { PCI_CHIP_I855_GM, 0x1028, 0x00c8, quirk_pipea_force }, ++ /* Dell Latitude D400 needs pipe A force quirk (See LP: #228519) */ + { PCI_CHIP_I855_GM, 0x1028, 0x0139, quirk_pipea_force }, + /* Dell Latitude D500 needs pipe A force quirk */ + { PCI_CHIP_I855_GM, 0x1028, 0x0152, quirk_pipea_force }, diff --git a/abs/core/xf86-video-intel/21_quirk_lenovo.patch b/abs/core/xf86-video-intel/21_quirk_lenovo.patch new file mode 100644 index 0000000..8479a40 --- /dev/null +++ b/abs/core/xf86-video-intel/21_quirk_lenovo.patch @@ -0,0 +1,12 @@ +diff -Nurp xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c 2008-06-26 20:21:14.000000000 -0700 ++++ xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c 2008-06-26 20:30:23.000000000 -0700 +@@ -242,6 +242,8 @@ static i830_quirk i830_quirk_list[] = { + + /* Lenovo Napa TV (use dmi)*/ + { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi }, ++ /* Lenovo T60/R60 needs pipe A force quirk (See LP: #243405) */ ++ { PCI_CHIP_I945_GM, 0x17aa, 0x201a, quirk_pipea_force }, + /* Lenovo T61 has no TV output */ + { PCI_CHIP_I965_GM, 0x17aa, 0x20b5, quirk_ignore_tv }, + /* Lenovo 3000 v200 */ diff --git a/abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch b/abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch new file mode 100644 index 0000000..d82923f --- /dev/null +++ b/abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch @@ -0,0 +1,13 @@ +diff -Nurp xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c 2008-09-08 20:12:28.000000000 -0700 ++++ xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c 2008-09-08 21:02:53.000000000 -0700 +@@ -312,6 +317,9 @@ static i830_quirk i830_quirk_list[] = { + /* Sony vaio VGN-SZ4MN (See LP: #212163) */ + { PCI_CHIP_I830_M, 0x104d, 0x81e6, quirk_pipea_force }, + ++ /* Quanta Gigabyte W251U (See LP: #244242) */ ++ { PCI_CHIP_I945_GM, 0x152d, 0x0755, quirk_pipea_force }, ++ + /* Ordi Enduro UW31 (See LP: #152416) */ + { PCI_CHIP_I945_GM, 0x1584, 0x9900, quirk_ignore_tv }, + diff --git a/abs/core/xf86-video-intel/25_quirk_nc6110.patch b/abs/core/xf86-video-intel/25_quirk_nc6110.patch new file mode 100644 index 0000000..a6db410 --- /dev/null +++ b/abs/core/xf86-video-intel/25_quirk_nc6110.patch @@ -0,0 +1,13 @@ +diff --git a/src/i830_quirks.c b/src/i830_quirks.c +index 089e458..09b7c53 100644 +--- a/src/i830_quirks.c ++++ b/src/i830_quirks.c +@@ -278,6 +278,8 @@ static i830_quirk i830_quirk_list[] = { + /* Samsung Q45 has no TV output */ + { PCI_CHIP_I965_GM, 0x144d, 0xc510, quirk_ignore_tv }, + ++ /* HP Compaq nx6110 has no TV output */ ++ { PCI_CHIP_I915_GM, 0x103c, 0x099c, quirk_ignore_tv }, + /* HP Compaq 6730s has no TV output */ + { PCI_CHIP_GM45_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + diff --git a/abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch b/abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch new file mode 100644 index 0000000..d74b809 --- /dev/null +++ b/abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch @@ -0,0 +1,63 @@ +diff -Nurp patched/src/bios_reader/bios_reader.c working/src/bios_reader/bios_reader.c +--- patched/src/bios_reader/bios_reader.c 2008-10-16 14:06:07.000000000 -0700 ++++ working/src/bios_reader/bios_reader.c 2008-10-16 14:25:07.000000000 -0700 +@@ -180,6 +180,19 @@ static void dump_lvds_options(void *data + printf("\tPFIT mode: %d\n", options->pfit_mode); + } + ++static void dump_lvds_ptr_data(void *data, unsigned char *base) ++{ ++ struct bdb_lvds_lfp_data_ptrs *ptrs = data; ++ ++ struct lvds_fp_timing *fp_timing = ++ (struct lvds_fp_timing *)(base + ptrs->ptr[panel_type].fp_timing_offset); ++ ++ printf("LVDS timing pointer data:\n"); ++ ++ printf("\tpanel type %02i: %dx%d\n", panel_type, fp_timing->x_res, ++ fp_timing->y_res); ++} ++ + static void dump_lvds_data(void *data, unsigned char *base) + { + struct bdb_lvds_lfp_data *lvds_data = data; +@@ -274,6 +287,8 @@ int main(int argc, char **argv) + dump_general_definitions(find_section(bdb, BDB_GENERAL_DEFINITIONS)); + dump_lvds_options(find_section(bdb, BDB_LVDS_OPTIONS)); + dump_lvds_data(find_section(bdb, BDB_LVDS_LFP_DATA), bdb); ++ dump_lvds_ptr_data(find_section(bdb, BDB_LVDS_LFP_DATA_PTRS), ++ (unsigned char *)bdb); + + return 0; + } +diff -Nurp patched/src/i830_bios.c working/src/i830_bios.c +--- patched/src/i830_bios.c 2008-10-16 14:06:07.000000000 -0700 ++++ working/src/i830_bios.c 2008-10-16 14:27:15.000000000 -0700 +@@ -89,7 +89,8 @@ parse_panel_data(I830Ptr pI830, struct b + { + struct bdb_lvds_options *lvds_options; + struct bdb_lvds_lfp_data *lvds_lfp_data; +- struct bdb_lvds_lfp_data_entry *entry; ++ struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; ++ int timing_offset; + DisplayModePtr fixed_mode; + unsigned char *timing_ptr; + +@@ -104,12 +105,13 @@ parse_panel_data(I830Ptr pI830, struct b + if (lvds_options->panel_type == 0xff) + return; + +- lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); +- if (!lvds_lfp_data) ++ lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); ++ if (!lvds_lfp_data_ptrs) + return; + +- entry = &lvds_lfp_data->data[lvds_options->panel_type]; +- timing_ptr = (unsigned char *)&entry->dvo_timing; ++ timing_offset = ++ lvds_lfp_data_ptrs->ptr[lvds_options->panel_type].dvo_timing_offset; ++ timing_ptr = (unsigned char *)bdb + timing_offset; + + fixed_mode = xnfalloc(sizeof(DisplayModeRec)); + memset(fixed_mode, 0, sizeof(*fixed_mode)); diff --git a/abs/core/xf86-video-intel/27_disable_fbc_on_965.patch b/abs/core/xf86-video-intel/27_disable_fbc_on_965.patch new file mode 100644 index 0000000..cc881b9 --- /dev/null +++ b/abs/core/xf86-video-intel/27_disable_fbc_on_965.patch @@ -0,0 +1,18 @@ +diff --git a/src/i830.h b/src/i830.h +index 5b78236..89f19d2 100644 +--- a/src/i830.h ++++ b/src/i830.h +@@ -950,6 +950,13 @@ static inline int i830_fb_compression_supported(I830Ptr pI830) + */ + if (!pI830->tiling || (IS_I965G(pI830) && pI830->accel <= ACCEL_XAA)) + return FALSE; ++ /* We have not gotten FBC to work consistently on 965GM. Our best ++ * working theory right now is that FBC simply isn't reliable on ++ * that device. See this bug report for more details: ++ * https://bugs.freedesktop.org/show_bug.cgi?id=16257 ++ */ ++ if (IS_I965GM(pI830)) ++ return FALSE; + return TRUE; + } + diff --git a/abs/core/xf86-video-intel/PKGBUILD b/abs/core/xf86-video-intel/PKGBUILD index 106ec41..3530b90 100644 --- a/abs/core/xf86-video-intel/PKGBUILD +++ b/abs/core/xf86-video-intel/PKGBUILD @@ -1,25 +1,43 @@ -# $Id: PKGBUILD 3246 2008-06-21 18:13:57Z jgc $ +# $Id: PKGBUILD 19083 2008-11-14 21:09:00Z jgc $ # Maintainer: Alexander Baldeck +# Maintainer: Jan de Groot pkgname=xf86-video-intel -pkgver=2.3.2 +pkgver=2.4.3 pkgrel=1 -pkgdesc="X.org Intel i810/i830/i915 video drivers" +pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('intel-dri' 'libdrm') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'xorg-util-macros' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.0.3') - -options=('!libtool') +depends=('intel-dri>=7.2' 'libpciaccess>=0.10.5' 'libdrm>=2.3.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.2' 'libdrm=2.3.1') +conflicts=('xorg-server<1.5.3' 'xf86-video-i810') +replaces=('xf86-video-i810') +options=('!libtool' 'force') groups=('xorg-video-drivers') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('fef32ffc428d9d565ab10b338ce17855') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + 20_thinkpad_g40_quirk.patch + 21_quirk_lenovo.patch + 23_quirks_studiohybrid_eeepc_and_w251u.patch + 25_quirk_nc6110.patch + 26_i830-use-lfp-data-ptrs.patch + 27_disable_fbc_on_965.patch) +md5sums=('a664819288b98a37f77ab6ae1e14c9d9' + '68a362a168ffa4f37d9f722f43855468' + '2d617364ac2e47ca366901d0b849b1a1' + '3d0f8e593e8eac3000154feb6b0f45b8' + '3deb800906e6845e8576d4e9d0f22b12' + 'cb7ee7a68858c038020e0cd991143d8e' + 'd215e428585c6e55aefd9f525ebfbe7b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/20_thinkpad_g40_quirk.patch" || return 1 + patch -Np1 -i "${srcdir}/21_quirk_lenovo.patch" || return 1 + patch -Np1 -i "${srcdir}/23_quirks_studiohybrid_eeepc_and_w251u.patch" || return 1 + patch -Np1 -i "${srcdir}/25_quirk_nc6110.patch" || return 1 + patch -Np1 -i "${srcdir}/26_i830-use-lfp-data-ptrs.patch" || return 1 + patch -Np1 -i "${srcdir}/27_disable_fbc_on_965.patch" || return 1 ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - rm -f ${startdir}/pkg/usr/lib/xorg/modules/drivers/i810_drv.so - rm -f ${startdir}/pkg/usr/share/man/man4/i810.4* + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-video-ivtvfb/PKGBUILD b/abs/core/xf86-video-ivtvfb/PKGBUILD new file mode 100644 index 0000000..592a439 --- /dev/null +++ b/abs/core/xf86-video-ivtvfb/PKGBUILD @@ -0,0 +1,26 @@ +# Contributor: Andreas Baumann + +pkgname=xf86-video-ivtvfb +pkgver=1.0.1 +pkgrel=1 +pkgdesc="xorg framebuffer driver for IVTV video cards" +arch=('i686') +url="http://ivtvdriver.org" +license=('GPL') +source=(http://dl.ivtvdriver.org/xf86-video-ivtv/archive/1.0.x/xf86-video-ivtv-1.0.1.tar.gz + xf86-video-ivtv-pagesize.patch + ) + +md5sums=('c66a5cd5c12c3eab92751b310c1fd43e' + 'a32d2bf15f08bddebdbdd9b8534715c4') + +build() { + cd "$srcdir/xf86-video-ivtv-1.0.1" + + patch -Np1 -i "$srcdir/xf86-video-ivtv-pagesize.patch" || return 1 + + ./configure --prefix=/usr + + make || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/core/xf86-video-ivtvfb/xf86-video-ivtv-pagesize.patch b/abs/core/xf86-video-ivtvfb/xf86-video-ivtv-pagesize.patch new file mode 100644 index 0000000..61272f3 --- /dev/null +++ b/abs/core/xf86-video-ivtvfb/xf86-video-ivtv-pagesize.patch @@ -0,0 +1,20 @@ +diff -rauN xf86-video-ivtv-1.0.1/src/ivtv_hw.c xf86-video-ivtv-pagesize-patch/src/ivtv_hw.c +--- xf86-video-ivtv-1.0.1/src/ivtv_hw.c 2008-02-28 08:05:23.000000000 +0100 ++++ xf86-video-ivtv-pagesize-patch/src/ivtv_hw.c 2009-02-14 18:07:01.000000000 +0100 +@@ -54,7 +54,6 @@ + + #include "xf86cmap.h" + +-#include "asm/page.h" /* #define for PAGE_* */ + #include "globals.h" + #define DPMS_SERVER + #include +@@ -570,7 +569,7 @@ + ivtvHWMapVidmem(ScrnInfoPtr pScrn) + { + ivtvHWPtr hwPtr = IVTVDEVHWPTR(pScrn); +- long page_mask = ~(sysconf(_SC_PAGESIZE) - 1); ++ long page_mask = ~(getpagesize() - 1); + + TRACE_ENTER("MapVidmem"); + if (NULL == hwPtr->fbmem) { diff --git a/abs/core/xf86-video-mach64/PKGBUILD b/abs/core/xf86-video-mach64/PKGBUILD new file mode 100644 index 0000000..ed91461 --- /dev/null +++ b/abs/core/xf86-video-mach64/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 13016 2008-09-25 18:54:26Z jgc $ +# Maintainer: Jan de Groot +pkgname=xf86-video-mach64 +pkgver=6.8.0 +pkgrel=2 +_mesaver="7.2" +pkgdesc="X.org mach64 video driver" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=('libdrm>=2.3.1' 'libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'mesa>=7.2' 'dri2proto' + 'glproto>=1.4.9' 'xf86driproto' 'diffutils') +conflicts=('xorg-server<1.5.1') +groups=('xorg-video-drivers') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('6081b8fa50c689d51f85c2fbaf93867e' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --enable-dri || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + cd ${srcdir}/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=mach64 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig +} diff --git a/abs/core/xf86-video-mach64/mesa-7.1-link-shared.patch b/abs/core/xf86-video-mach64/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-mach64/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-mga/PKGBUILD b/abs/core/xf86-video-mga/PKGBUILD index 1d07b1f..5681868 100644 --- a/abs/core/xf86-video-mga/PKGBUILD +++ b/abs/core/xf86-video-mga/PKGBUILD @@ -1,22 +1,25 @@ -# $Id: PKGBUILD 4390 2008-07-06 20:07:05Z jgc $ +# $Id: PKGBUILD 13014 2008-09-25 18:53:21Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-mga pkgver=1.4.9 -pkgrel=1 +pkgrel=3 pkgdesc="X.org mga video driver" -mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3' \ +depends=('libgl>=7.2' 'expat>=2.0.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' 'xf86driproto' 'glproto>=1.4.9') +conflicts=('xorg-server<1.5.1') options=('!libtool' 'force') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) md5sums=('11066b84b949cd04300ec819c9c51532' - 'e6e6379d7793af40a6bc3ce1bace572e') + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -24,26 +27,22 @@ build() { --enable-dri || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - - cd ${startdir}/src/Mesa-${mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = mga" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${srcdir}/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=mga \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig } diff --git a/abs/core/xf86-video-mga/mesa-7.1-link-shared.patch b/abs/core/xf86-video-mga/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-mga/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-neomagic/PKGBUILD b/abs/core/xf86-video-neomagic/PKGBUILD index cbe614d..7d47807 100644 --- a/abs/core/xf86-video-neomagic/PKGBUILD +++ b/abs/core/xf86-video-neomagic/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3245 2008-06-21 18:12:45Z jgc $ +# $Id: PKGBUILD 22283 2008-12-25 17:06:50Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-neomagic -pkgver=1.2.1 +pkgver=1.2.2 pkgrel=1 pkgdesc="X.org neomagic video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a72f57fca4f4dff9a2c82eb1fe7456f4') +md5sums=('896864e1a2d7333c16333a24eac17d00') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-video-nv/PKGBUILD b/abs/core/xf86-video-nv/PKGBUILD index ad4b2ee..7c74343 100644 --- a/abs/core/xf86-video-nv/PKGBUILD +++ b/abs/core/xf86-video-nv/PKGBUILD @@ -1,26 +1,28 @@ -# $Id: PKGBUILD 1904 2008-05-22 18:19:19Z jgc $ +# $Id: PKGBUILD 11446 2008-08-31 15:40:39Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot + pkgname=xf86-video-nv -pkgver=2.1.9 +pkgver=2.1.12 pkgrel=1 pkgdesc="X.org nv video driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') options=('!libtool') -license=('custom') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('c6b7e52fa18455c22eb040b8d2575ce5') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } +md5sums=('42f12a36d7afc26c817e8e8f5c8b7274') diff --git a/abs/core/xf86-video-openchrome/LICENSE.txt b/abs/core/xf86-video-openchrome/LICENSE.txt new file mode 100644 index 0000000..dff1dc3 --- /dev/null +++ b/abs/core/xf86-video-openchrome/LICENSE.txt @@ -0,0 +1,26 @@ +/* + * Copyright 2005-2007 The Openchrome Project [openchrome.org] + * Copyright 2004-2006 Luc Verhaegen. + * Copyright 2004-2005 The Unichrome Project [unichrome.sf.net] + * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. + * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ diff --git a/abs/core/xf86-video-openchrome/PKGBUILD b/abs/core/xf86-video-openchrome/PKGBUILD new file mode 100644 index 0000000..235dba8 --- /dev/null +++ b/abs/core/xf86-video-openchrome/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 11506 2008-08-31 18:01:45Z jgc $ +# Contributor: Paul Mattal +# Maintainer: Juergen Hoetzel + +pkgname=xf86-video-openchrome +pkgver=0.2.903 +pkgrel=1 +pkgdesc="X.Org Openchrome drivers" +arch=(i686 x86_64) +license=('custom') +url="http://www.openchrome.org" +depends=('unichrome-dri>=7.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906' 'xf86driproto' 'xorg-util-macros' 'libxvmc' 'glproto' 'mesa>=7.1') +replaces=('openchrome' 'xf86-video-via') +options=('!libtool' 'force' '!makeflags') +conflicts=('xf86-video-via' 'xf86-video-unichrome' 'openchrome' 'xorg-server<1.4.99.906') +source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.gz + LICENSE.txt) +md5sums=('bcb3ba67e89824c132790c3a0365c6a5' + 'addb3cf2671f4cf7e91156952de1627f') + +build() { + cd ${startdir}/src/${pkgname}-$pkgver || return 1 + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 ${srcdir}/LICENSE.txt ${pkgdir}/usr/share/licenses/${pkgname}/COPYING || return 1 +} diff --git a/abs/core/xf86-video-r128/PKGBUILD b/abs/core/xf86-video-r128/PKGBUILD new file mode 100644 index 0000000..9339f9a --- /dev/null +++ b/abs/core/xf86-video-r128/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 13012 2008-09-25 18:50:04Z jgc $ +# Maintainer: Jan de Groot +pkgname=xf86-video-r128 +pkgver=6.8.0 +pkgrel=2 +_mesaver="7.2" +pkgdesc="X.org ati Rage128 video driver" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=('libdrm>=2.3.1' 'libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' + 'glproto>=1.4.9' 'xf86driproto' 'diffutils') +conflicts=('xorg-server<1.5.1') +groups=('xorg-video-drivers') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('007bec0c6b07d9d3aeca4da18e561efb' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --enable-dri || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + cd ${srcdir}/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=r128 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig +} diff --git a/abs/core/xf86-video-r128/mesa-7.1-link-shared.patch b/abs/core/xf86-video-r128/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-r128/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-radeonhd/PKGBUILD b/abs/core/xf86-video-radeonhd/PKGBUILD index 7173afd..ce29874 100644 --- a/abs/core/xf86-video-radeonhd/PKGBUILD +++ b/abs/core/xf86-video-radeonhd/PKGBUILD @@ -1,26 +1,27 @@ -# $Id: PKGBUILD 861 2008-04-23 21:44:36Z juergen $ +# $Id: PKGBUILD 22422 2008-12-26 19:30:38Z jgc $ # Maintainer: pkgname=xf86-video-radeonhd -pkgver=1.2.1 +pkgver=1.2.4 pkgrel=1 pkgdesc="Experimental Radeon HD video driver for r500 and r600 ATI cards" arch=(i686 x86_64) url="http://wiki.x.org/wiki/radeonhd" license=('custom') -depends=('glibc') -makedepends=('pkgconfig' 'xorg-server' 'diffutils') +depends=('glibc' 'ati-dri>=7.2' 'libdrm' 'libpciaccess') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'diffutils') +conflicts=('xorg-server<1.5.3') options=('!libtool') conflicts=('xf86-video-radeonhd-git') replaces=('xf86-video-radeonhd-git') groups=('xorg-video-drivers') -source=(ftp://ftp.freedesktop.org/pub/individual/driver/$pkgname-$pkgver.tar.bz2) -md5sums=('9db15e1f1f891f514ca72dd9a3cc360a') +source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('3c9cfffe7e3d795dde59ea0eef7361b1') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} - make DESTDIR=${startdir}/pkg install || return 1 - install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xf86-video-rendition/PKGBUILD b/abs/core/xf86-video-rendition/PKGBUILD index 20fba5f..6bb78d2 100644 --- a/abs/core/xf86-video-rendition/PKGBUILD +++ b/abs/core/xf86-video-rendition/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11462 2008-08-31 15:55:46Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-rendition -pkgver=4.1.3 -pkgrel=4 +pkgver=4.2.0 +pkgrel=1 pkgdesc="X.org Rendition video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('7c03de3804d4c4f6ff59f74050d24b2b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('a8b97feccb32184820d5856fe78d34db') diff --git a/abs/core/xf86-video-s3/PKGBUILD b/abs/core/xf86-video-s3/PKGBUILD index c7aefc2..f294fe9 100644 --- a/abs/core/xf86-video-s3/PKGBUILD +++ b/abs/core/xf86-video-s3/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22275 2008-12-25 16:57:57Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-s3 -pkgver=0.5.0 -pkgrel=4 +pkgver=0.6.1 +pkgrel=1 pkgdesc="X.org S3 video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('a5f1f2f93a50e56bd3aeed009c407337') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('d95ab6445cab477f39adfbbc81006f67') diff --git a/abs/core/xf86-video-s3virge/PKGBUILD b/abs/core/xf86-video-s3virge/PKGBUILD index 4a27540..18391fb 100644 --- a/abs/core/xf86-video-s3virge/PKGBUILD +++ b/abs/core/xf86-video-s3virge/PKGBUILD @@ -1,49 +1,24 @@ -# $Id: PKGBUILD 3244 2008-06-21 18:11:55Z jgc $ +# $Id: PKGBUILD 22269 2008-12-25 16:53:28Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-s3virge -pkgver=1.10.1 +pkgver=1.10.2 pkgrel=1 pkgdesc="X.org S3 Virge video driver" -mesaver="7.0.3" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('expat>=2.0' 'libdrm') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3') +depends=('glibc') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=(!libtool) groups=('xorg-video-drivers') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2) -md5sums=('4a293047e988d4ea1e9e96d3b5793f43' - 'e6e6379d7793af40a6bc3ce1bace572e') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('69784e4964d75487d81be4eae3d467dd') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ - --enable-dri || return 1 + --disable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - - - cd ${startdir}/src/Mesa-${mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = s3v" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-video-savage/PKGBUILD b/abs/core/xf86-video-savage/PKGBUILD index 99e5324..0cdb7c7 100644 --- a/abs/core/xf86-video-savage/PKGBUILD +++ b/abs/core/xf86-video-savage/PKGBUILD @@ -1,21 +1,24 @@ -# $Id: PKGBUILD 3243 2008-06-21 18:08:53Z jgc $ +# $Id: PKGBUILD 13010 2008-09-25 18:47:39Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-savage pkgver=2.2.1 -pkgrel=1 +pkgrel=2 pkgdesc="X.org savage video driver" -mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3' 'xf86driproto' 'glproto>=1.4.9') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' 'xf86driproto' 'glproto>=1.4.9') +conflicts=('xorg-server<1.5.1') options=(!libtool) groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) md5sums=('62b8aba48b54eaefeae87df502bf219c' - 'e6e6379d7793af40a6bc3ce1bace572e') + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -24,26 +27,22 @@ build() { make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - cd ${startdir}/src/Mesa-${mesaver} - - cd configs - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = savage" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${startdir}/src/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=savage \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/lib/pkgconfig + rm -rf ${pkgdir}/usr/include + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so } diff --git a/abs/core/xf86-video-savage/mesa-7.1-link-shared.patch b/abs/core/xf86-video-savage/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-savage/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-siliconmotion/PKGBUILD b/abs/core/xf86-video-siliconmotion/PKGBUILD index 0e785ed..3518f94 100644 --- a/abs/core/xf86-video-siliconmotion/PKGBUILD +++ b/abs/core/xf86-video-siliconmotion/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 23018 2009-01-01 16:25:18Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-siliconmotion -pkgver=1.5.1 -pkgrel=4 +pkgver=1.7.0 +pkgrel=1 pkgdesc="X.org siliconmotion video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('f9acffba89d8be200f91bab3d1df80da') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('ee35d7714ce44a2b5ac7ad7b7b7dd75a') diff --git a/abs/core/xf86-video-sis/PKGBUILD b/abs/core/xf86-video-sis/PKGBUILD index 02c519d..dfb0625 100644 --- a/abs/core/xf86-video-sis/PKGBUILD +++ b/abs/core/xf86-video-sis/PKGBUILD @@ -1,48 +1,48 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22281 2008-12-25 17:05:24Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-sis -pkgver=0.9.4 -pkgrel=3 +pkgver=0.10.1 +pkgrel=1 pkgdesc="X.org SiS video driver" -mesaver="7.0.4" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'xf86driproto' 'mesa>=7.0.3rc1' 'glproto>=1.4.9') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto' 'mesa>=7.1' 'glproto>=1.4.9') +conflicts=('xorg-server<1.5.1') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://voxel.dl.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.gz) -md5sums=('43f12cabf770b06170cdd1cdaafdc50f' - '909afa3a01ae31478d363837681415ac') + http://downloads.sourceforge.net/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('9f57c2f5ccbd8340db32da1c74083771' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - cd ${startdir}/src/Mesa-${mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = sis" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd "${srcdir}/Mesa-${_mesaver}" + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=sis \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -rf "${pkgdir}/usr/lib/pkgconfig" + rm -rf "${pkgdir}/usr/include" + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" } diff --git a/abs/core/xf86-video-sis/mesa-7.1-link-shared.patch b/abs/core/xf86-video-sis/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-sis/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-sisusb/PKGBUILD b/abs/core/xf86-video-sisusb/PKGBUILD index 43992ab..0d205b1 100644 --- a/abs/core/xf86-video-sisusb/PKGBUILD +++ b/abs/core/xf86-video-sisusb/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11481 2008-08-31 16:45:57Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-sisusb -pkgver=0.8.1 -pkgrel=4 +pkgver=0.9.0 +pkgrel=1 pkgdesc="X.org SiS USB video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('cbd669507e4aa35e468905f09b546333') +md5sums=('7b1f5465f423a859f306f4f1d6306a1b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-video-tdfx/PKGBUILD b/abs/core/xf86-video-tdfx/PKGBUILD index 82a75af..0f62948 100644 --- a/abs/core/xf86-video-tdfx/PKGBUILD +++ b/abs/core/xf86-video-tdfx/PKGBUILD @@ -1,49 +1,48 @@ -# $Id: PKGBUILD 3259 2008-06-21 18:34:20Z jgc $ +# $Id: PKGBUILD 22277 2008-12-25 17:00:41Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-tdfx -pkgver=1.4.0 +pkgver=1.4.1 pkgrel=1 pkgdesc="X.org tdfx video driver" -_mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('expat>=2.0' 'libdrm>=2.3.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'mesa>=7.0.3') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'mesa>=7.2') +conflicts=('xorg-server<1.5.3') options=(!libtool) groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('59acf2a4f721f9b7abbd121748467b16' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - cd ${startdir}/src/Mesa-${_mesaver} - cd configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = tdfx" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd "${srcdir}/Mesa-${_mesaver}" + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=tdfx \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -rf "${pkgdir}/usr/lib/pkgconfig" + rm -rf "${pkgdir}/usr/include" + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" } -md5sums=('b13132f24683ef759bfb0c1db5096496' - 'e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core/xf86-video-tdfx/mesa-7.1-link-shared.patch b/abs/core/xf86-video-tdfx/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-tdfx/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-trident/PKGBUILD b/abs/core/xf86-video-trident/PKGBUILD index 5616e12..874f185 100644 --- a/abs/core/xf86-video-trident/PKGBUILD +++ b/abs/core/xf86-video-trident/PKGBUILD @@ -1,49 +1,49 @@ -# $Id: PKGBUILD 3257 2008-06-21 18:32:30Z jgc $ +# $Id: PKGBUILD 22291 2008-12-25 17:22:27Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-trident -pkgver=1.3.0 -pkgrel=2 +pkgver=1.3.1 +pkgrel=1 pkgdesc="X.org Trident video driver" -_mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'mesa>=7.0.3' 'xf86driproto') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'mesa>=7.2' 'xf86driproto') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=(!libtool) source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('9f280bef235426394013cb5e1854b823' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - cd ${startdir}/src/Mesa-${_mesaver} - cd configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = trident" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd "${srcdir}/Mesa-${_mesaver}" + cd ${srcdir}/Mesa-${pkgver} + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=trident \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -rf "${pkgdir}/usr/lib/pkgconfig" + rm -rf "${pkgdir}/usr/include" + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" } -md5sums=('e89799579d0cf3858362bd751469e0bf' - 'e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core/xf86-video-trident/mesa-7.1-link-shared.patch b/abs/core/xf86-video-trident/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core/xf86-video-trident/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core/xf86-video-tseng/PKGBUILD b/abs/core/xf86-video-tseng/PKGBUILD index 6863c46..f5909d7 100644 --- a/abs/core/xf86-video-tseng/PKGBUILD +++ b/abs/core/xf86-video-tseng/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22279 2008-12-25 17:02:55Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-tseng -pkgver=1.1.1 -pkgrel=4 +pkgver=1.2.1 +pkgrel=1 pkgdesc="X.org tseng video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2f687eddae5dafa5dcc05116561e267c') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('488aa9c3ec7a95e6589afa4b50bec8b4') diff --git a/abs/core/xf86-video-unichrome/PKGBUILD b/abs/core/xf86-video-unichrome/PKGBUILD index 2f618ca..7f3bc57 100644 --- a/abs/core/xf86-video-unichrome/PKGBUILD +++ b/abs/core/xf86-video-unichrome/PKGBUILD @@ -1,26 +1,23 @@ -# $Id: PKGBUILD 3256 2008-06-21 18:31:47Z jgc $ +# $Id: PKGBUILD 22301 2008-12-25 18:28:12Z jgc $ # Maintainer: Jan de Groot pkgname=xf86-video-unichrome -pkgver=0.2.6 -pkgrel=8 +pkgver=0.2.7 +pkgrel=0.1 +_gitversion=1464eb9ecb178163af0e85443c3e591755c8c320 pkgdesc="Unichrome video drivers for X.Org" arch=(i686 x86_64) url="http://unichrome.sf.net/" -depends=('unichrome-dri>=7.0.3') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'xorg-util-macros' 'xf86driproto' \ - 'glproto' 'mesa>=7.0.3' 'autoconf' 'automake' 'libtool') +depends=('unichrome-dri>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xorg-util-macros' 'xf86driproto' 'glproto' 'mesa>=7.2' 'autoconf' 'automake' 'libtool') options=('!libtool') -conflicts=('xf86-video-via' 'openchrome') -groups=('xorg-video-drivers') -source=(http://downloads.sf.net/unichrome/${pkgname}-${pkgver}.tar.gz - fix-defines.patch) -md5sums=('fd81a739ae8145bb9729fa9665ef426c' '84142497ed91048bb2d0d082ce8a0229') +conflicts=('xf86-video-via' 'openchrome' 'xf86-video-openchrome' 'xorg-server<1.5.3') +source=(http://cgit.freedesktop.org/~libv/${pkgname}/snapshot/${pkgname}-${_gitversion}.tar.bz2) +md5sums=('dfef1e3b9ed24d50938ea5ee6f708457') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/src/fix-defines.patch || return 1 + cd "${srcdir}/${pkgname}-${_gitversion}" ./autogen.sh --prefix=/usr \ --enable-dri make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-video-v4l/PKGBUILD b/abs/core/xf86-video-v4l/PKGBUILD index dc8ba80..518e267 100644 --- a/abs/core/xf86-video-v4l/PKGBUILD +++ b/abs/core/xf86-video-v4l/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11496 2008-08-31 16:52:37Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-v4l -pkgver=0.1.1 -pkgrel=4 +pkgver=0.2.0 +pkgrel=1 pkgdesc="X.org v4l video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('69339c38eba2cebc357d67e7a755d734') +md5sums=('2251ae2a0a905764941cd7b098e85ad1') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core/xf86-video-vesa/PKGBUILD b/abs/core/xf86-video-vesa/PKGBUILD index ed4acc7..bbccb88 100644 --- a/abs/core/xf86-video-vesa/PKGBUILD +++ b/abs/core/xf86-video-vesa/PKGBUILD @@ -1,21 +1,20 @@ -# $Id: PKGBUILD 5566 2008-07-18 20:48:52Z jgc $ +# $Id: PKGBUILD 22267 2008-12-25 16:51:23Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-vesa -pkgver=1.3.0 -pkgrel=6 +pkgver=2.1.0 +pkgrel=1 pkgdesc="X.org vesa video driver" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg' 'xorg-video-drivers') -options=('!libtool' 'force') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - COPYING) -md5sums=('4a307852f3b4850e436a41dab2a73676' - 'e5418e7a75e21268637984e70265e146') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('d813269613b4d63ff6dbfbfbd104cc84') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -23,5 +22,5 @@ build() { make || return 1 make DESTDIR=${startdir}/pkg install || return 1 install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 ${srcdir}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core/xf86-video-vga/PKGBUILD b/abs/core/xf86-video-vga/PKGBUILD index 1ac84a7..034c440 100644 --- a/abs/core/xf86-video-vga/PKGBUILD +++ b/abs/core/xf86-video-vga/PKGBUILD @@ -1,23 +1,29 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 15043 2008-10-12 12:14:52Z jgc $ #Maintainer: Jan de Groot pkgname=xf86-video-vga pkgver=4.1.0 -pkgrel=4 +pkgrel=6 pkgdesc="X.org VGA 16 color video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') -groups=('xorg-video-drivers') +makedepends=('pkgconfig' 'xorg-server>=1.5.2') +conflicts=('xorg-server<1.5.2') options=('!libtool') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('b93e5fe9757db779a75cd3ce97b9613d') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + pciaccess.patch) +md5sums=('b93e5fe9757db779a75cd3ce97b9613d' + 'fe3a45179f51fb86215f6fd2b5ac0747') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/pciaccess.patch" || return 1 + libtoolize --force || return 1 + aclocal || return 1 + autoconf || return 1 + automake || return 1 + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core/xf86-video-vga/pciaccess.patch b/abs/core/xf86-video-vga/pciaccess.patch new file mode 100644 index 0000000..141701f --- /dev/null +++ b/abs/core/xf86-video-vga/pciaccess.patch @@ -0,0 +1,371 @@ +From: Paulo Cesar Pereira de Andrade +Date: Fri, 18 Jul 2008 21:27:26 +0000 (-0300) +Subject: Add libpciaccess and remove xf1bpp and xf4bpp support. +X-Git-Url: http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-vga.git;a=commitdiff;h=97e2d12548921d92b6dc2dcce8abee48f25981d2 + +Add libpciaccess and remove xf1bpp and xf4bpp support. + + The driver is not fully functional, starts at 320x200, but may require +running something like vbetool post before starting the X Server, and does +not restore console as usually linux consoles use vesafb, but should work +correctly if console is in a "standard vga mode". +--- + +--- a/configure.ac ++++ b/configure.ac +@@ -57,6 +57,22 @@ PKG_CHECK_MODULES(XORG, [xorg-server >= + sdkdir=$(pkg-config --variable=sdkdir xorg-server) + + # Checks for libraries. ++SAVE_CPPFLAGS="$CPPFLAGS" ++CPPFLAGS="$CPPFLAGS $XORG_CFLAGS" ++AC_CHECK_DECL(XSERVER_LIBPCIACCESS, ++ [XSERVER_LIBPCIACCESS=yes], [XSERVER_LIBPCIACCESS=no], ++ [#include "xorg-server.h"]) ++AC_CHECK_HEADER(xf1bpp.h,[AC_DEFINE(HAVE_XF1BPP, 1, [Have 1bpp support])],[]) ++AC_CHECK_HEADER(xf4bpp.h,[AC_DEFINE(HAVE_XF4BPP, 1, [Have 4bpp support])],[]) ++CPPFLAGS="$SAVE_CPPFLAGS" ++ ++if test "x$XSERVER_LIBPCIACCESS" = xyes; then ++ PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) ++ XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS" ++fi ++AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) ++ ++# Checks for libraries. + + # Checks for header files. + AC_HEADER_STDC +--- a/src/generic.c ++++ b/src/generic.c +@@ -50,8 +50,13 @@ + + #include "fb.h" + ++#if HAVE_XF4BPP + #include "xf4bpp.h" ++#endif ++ ++#if HAVE_XF1BPP + #include "xf1bpp.h" ++#endif + + #include "shadowfb.h" + +@@ -62,6 +67,10 @@ + #include "xf86Resources.h" + #include "xf86int10.h" + ++#ifdef XSERVER_LIBPCIACCESS ++#include ++#endif ++ + /* Some systems #define VGA for their own purposes */ + #undef VGA + +@@ -79,10 +88,31 @@ + #define CLOCK_TOLERANCE 2000 /* Clock matching tolerance (2MHz) */ + #endif + ++/* ++ * This structure is used to wrap the screen's CloseScreen vector. ++ */ ++typedef struct _GenericRec ++{ ++ Bool ShadowFB; ++ Bool KGAUniversal; ++ CARD8 * ShadowPtr; ++ CARD32 ShadowPitch; ++ CloseScreenProcPtr CloseScreen; ++ OptionInfoPtr Options; ++#ifdef XSERVER_LIBPCIACCESS ++ struct pci_device *pciInfo; ++#endif ++} GenericRec, *GenericPtr; ++ ++ + /* Forward definitions */ + static const OptionInfoRec *GenericAvailableOptions(int chipid, int busid); + static void GenericIdentify(int); + static Bool GenericProbe(DriverPtr, int); ++#ifdef XSERVER_LIBPCIACCESS ++static Bool GenericPciProbe(DriverPtr drv, int entity_num, ++ struct pci_device *dev, intptr_t match_data); ++#endif + static Bool GenericPreInit(ScrnInfoPtr, int); + static Bool GenericScreenInit(int, ScreenPtr, int, char **); + static Bool GenericSwitchMode(int, DisplayModePtr, int); +@@ -97,6 +127,24 @@ static Bool GenericMapMe + + static ModeStatus GenericValidMode(int, DisplayModePtr, Bool, int); + ++static GenericPtr GenericGetRec(ScrnInfoPtr pScreenInfo); ++ ++enum GenericTypes ++{ ++ CHIP_VGA_GENERIC ++}; ++ ++#ifdef XSERVER_LIBPCIACCESS ++static const struct pci_id_match generic_device_match[] = { ++ { ++ PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, ++ 0x00030000, 0x00ffffff, CHIP_VGA_GENERIC ++ }, ++ ++ { 0, 0, 0 }, ++}; ++#endif ++ + /* The root of all evil... */ + _X_EXPORT DriverRec VGA = + { +@@ -106,7 +154,13 @@ _X_EXPORT DriverRec VGA = + GenericProbe, + GenericAvailableOptions, + NULL, +- 0 ++ 0, ++ NULL, ++ ++#ifdef XSERVER_LIBPCIACCESS ++ generic_device_match, ++ GenericPciProbe ++#endif + }; + + typedef enum +@@ -146,8 +200,12 @@ static const char *vgahwSymbols[] = + #ifdef XFree86LOADER + static const char *miscfbSymbols[] = + { ++#if HAVE_XF1BPP + "xf1bppScreenInit", ++#endif ++#if HAVE_XF4BPP + "xf4bppScreenInit", ++#endif + NULL + }; + #endif +@@ -210,7 +268,13 @@ GenericSetup(pointer Module, pointer Opt + if (!Initialised) + { + Initialised = TRUE; +- xf86AddDriver(&VGA, Module, 0); ++ xf86AddDriver(&VGA, Module, ++#ifdef XSERVER_LIBPCIACCESS ++ HaveDriverFuncs ++#else ++ 0 ++#endif ++ ); + LoaderRefSymLists(vgahwSymbols, miscfbSymbols, fbSymbols, + shadowfbSymbols, int10Symbols, NULL); + return (pointer)TRUE; +@@ -224,11 +288,6 @@ GenericSetup(pointer Module, pointer Opt + #endif + + +-enum GenericTypes +-{ +- CHIP_VGA_GENERIC +-}; +- + /* Supported chipsets */ + static SymTabRec GenericChipsets[] = + { +@@ -236,11 +295,13 @@ static SymTabRec GenericChipsets[] = + {-1, NULL} + }; + ++#ifndef XSERVER_LIBPCIACCESS + static PciChipsets GenericPCIchipsets[] = + { + {CHIP_VGA_GENERIC, PCI_CHIP_VGA, RES_SHARED_VGA}, + {-1, -1, RES_UNDEFINED}, + }; ++#endif + + static IsaChipsets GenericISAchipsets[] = + { +@@ -267,6 +328,37 @@ GenericAvailableOptions(int chipid, int + * do a minimal probe for supported hardware. + */ + ++#ifdef XSERVER_LIBPCIACCESS ++static Bool ++GenericPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev, ++ intptr_t match_data) ++{ ++ ScrnInfoPtr pScrn; ++ ++ pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL, ++ NULL, NULL, NULL, NULL, NULL); ++ if (pScrn != NULL) { ++ GenericPtr pGeneric = GenericGetRec(pScrn); ++ ++ pScrn->driverVersion = VGA_VERSION_CURRENT; ++ pScrn->driverName = VGA_DRIVER_NAME; ++ pScrn->name = VGA_NAME; ++ pScrn->Probe = GenericProbe; ++ pScrn->PreInit = GenericPreInit; ++ pScrn->ScreenInit = GenericScreenInit; ++ pScrn->SwitchMode = GenericSwitchMode; ++ pScrn->AdjustFrame = GenericAdjustFrame; ++ pScrn->EnterVT = GenericEnterVT; ++ pScrn->LeaveVT = GenericLeaveVT; ++ pScrn->FreeScreen = GenericFreeScreen; ++ ++ pGeneric->pciInfo = dev; ++ } ++ ++ return (pScrn != NULL); ++} ++#endif ++ + static Bool + GenericProbe(DriverPtr drv, int flags) + { +@@ -283,6 +375,7 @@ GenericProbe(DriverPtr drv, int flags) + if ((numDevSections = xf86MatchDevice(VGA_NAME, &devSections)) <= 0) + return FALSE; + ++#ifndef XSERVER_LIBPCIACCESS + /* PCI BUS */ + if (xf86GetPciVideoInfo()) + { +@@ -324,6 +417,7 @@ GenericProbe(DriverPtr drv, int flags) + xfree(usedChips); + } + } ++#endif + + /* Isa Bus */ + numUsed = xf86MatchIsaInstances(VGA_NAME, GenericChipsets, +@@ -391,20 +485,6 @@ VGAFindIsaDevice(GDevPtr dev) + return (int)CHIP_VGA_GENERIC; + } + +-/* +- * This structure is used to wrap the screen's CloseScreen vector. +- */ +-typedef struct _GenericRec +-{ +- Bool ShadowFB; +- Bool KGAUniversal; +- CARD8 * ShadowPtr; +- CARD32 ShadowPitch; +- CloseScreenProcPtr CloseScreen; +- OptionInfoPtr Options; +-} GenericRec, *GenericPtr; +- +- + static GenericPtr + GenericGetRec(ScrnInfoPtr pScreenInfo) + { +@@ -509,8 +589,14 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + + switch (pScreenInfo->depth) + { +- case 1: Module = "xf1bpp"; Sym = "xf1bppScreenInit"; break; +- case 4: Module = "xf4bpp"; Sym = "xf4bppScreenInit"; break; ++ case 1: ++#if HAVE_XF1BPP ++ Module = "xf1bpp"; Sym = "xf1bppScreenInit"; break; ++#endif ++ case 4: ++#if HAVE_XF4BPP ++ Module = "xf4bpp"; Sym = "xf4bppScreenInit"; break; ++#endif + case 8: Module = "fb"; break; + + default: +@@ -673,6 +759,8 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + /* Set display resolution */ + xf86SetDpi(pScreenInfo, 0, 0); + ++ ++#if HAVE_XF1BPP && HAVE_XF4BPP + if (xf86ReturnOptValBool(pGenericPriv->Options, OPTION_SHADOW_FB, FALSE)) + { + pGenericPriv->ShadowFB = TRUE; +@@ -688,7 +776,7 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + "Enabling universal \"KGA\" treatment.\n"); + } + +-#ifdef SPECIAL_FB_BYTE_ACCESS ++# ifdef SPECIAL_FB_BYTE_ACCESS + if (!pGenericPriv->ShadowFB && (pScreenInfo->depth == 4)) + { + xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, +@@ -696,8 +784,13 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + " ShadowFB enabled.\n"); + pGenericPriv->ShadowFB = TRUE; + } ++# endif ++ ++#else ++ pGenericPriv->ShadowFB = TRUE; + #endif + ++ + if (pGenericPriv->ShadowFB) + { + pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER; +@@ -1378,6 +1471,7 @@ GenericScreenInit(int scrnIndex, ScreenP + #endif + ShadowFBInit(pScreen, GenericRefreshArea1bpp); + } ++#if HAVE_XF1BPP + else + { + Inited = xf1bppScreenInit(pScreen, pvgaHW->Base, +@@ -1386,6 +1480,7 @@ GenericScreenInit(int scrnIndex, ScreenP + pScreenInfo->xDpi, pScreenInfo->yDpi, + pScreenInfo->displayWidth); + } ++#endif + break; + case 4: + if (pGenericPriv->ShadowFB) +@@ -1410,6 +1505,7 @@ GenericScreenInit(int scrnIndex, ScreenP + #endif + ShadowFBInit(pScreen, GenericRefreshArea4bpp); + } ++#if HAVE_XF4BPP + else + { + Inited = xf4bppScreenInit(pScreen, pvgaHW->Base, +@@ -1418,6 +1514,7 @@ GenericScreenInit(int scrnIndex, ScreenP + pScreenInfo->xDpi, pScreenInfo->yDpi, + pScreenInfo->displayWidth); + } ++#endif + break; + case 8: + Inited = fbScreenInit(pScreen, pvgaHW->Base, +@@ -1579,6 +1676,9 @@ GenericMapMem(ScrnInfoPtr scrp) + { + vgaHWPtr hwp = VGAHWPTR(scrp); + int scr_index = scrp->scrnIndex; ++#ifdef XSERVER_LIBPCIACCESS ++ GenericPtr pPriv = GenericGetRec(scrp); ++#endif + + if (hwp->Base) + return TRUE; +@@ -1589,7 +1689,12 @@ GenericMapMem(ScrnInfoPtr scrp) + if (hwp->MapPhys == 0) + hwp->MapPhys = VGA_DEFAULT_PHYS_ADDR; + +- hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO, hwp->Tag, ++ hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO, ++#ifdef XSERVER_LIBPCIACCESS ++ pPriv->pciInfo, ++#else ++ hwp->Tag, ++#endif + hwp->MapPhys, hwp->MapSize); + return hwp->Base != NULL; + } diff --git a/abs/core/xf86-video-vmware/PKGBUILD b/abs/core/xf86-video-vmware/PKGBUILD index 5992099..f259c2e 100644 --- a/abs/core/xf86-video-vmware/PKGBUILD +++ b/abs/core/xf86-video-vmware/PKGBUILD @@ -1,18 +1,19 @@ -# $Id: PKGBUILD 3242 2008-06-21 18:06:18Z jgc $ +# $Id: PKGBUILD 11487 2008-08-31 16:48:39Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-vmware -pkgver=10.16.2 +pkgver=10.16.5 pkgrel=1 pkgdesc="X.org vmware video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'randrproto' 'renderproto' 'xextproto' 'xineramaproto' 'videoproto') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906' 'randrproto' 'renderproto' 'xextproto' 'xineramaproto' 'videoproto') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('d79b660e1effb86628930e5c01989216') +md5sums=('6d78c82ea7c2bb0fcb587d7bb4e8f60a') build() { cd ${startdir}/src/${pkgname}-${pkgver} diff --git a/abs/core/xf86-video-voodoo/PKGBUILD b/abs/core/xf86-video-voodoo/PKGBUILD index bbbc518..d35e2ac 100644 --- a/abs/core/xf86-video-voodoo/PKGBUILD +++ b/abs/core/xf86-video-voodoo/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11484 2008-08-31 16:48:17Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xf86-video-voodoo -pkgver=1.1.1 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org voodoo video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('bc878e795688b49a595b355482d27174') +md5sums=('7c681d9b57f5e1f798263fc1a9d99245') diff --git a/abs/core/xf86bigfontproto/PKGBUILD b/abs/core/xf86bigfontproto/PKGBUILD new file mode 100644 index 0000000..32041a7 --- /dev/null +++ b/abs/core/xf86bigfontproto/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +#Maintainer: Jan de Groot + +pkgname=xf86bigfontproto +pkgver=1.1.2 +pkgrel=1 +pkgdesc="X11 Big Fonts extension wire protocol" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) +md5sums=('a318c1e86123832d7b0c95fc7d47ef35') +sha1sums=('4a2e84b3f529e4747dbc07bf4496bfe01f40aa85') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/core/xf86driproto/PKGBUILD b/abs/core/xf86driproto/PKGBUILD new file mode 100644 index 0000000..120c7f4 --- /dev/null +++ b/abs/core/xf86driproto/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 1886 2008-05-22 17:47:52Z jgc $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=xf86driproto +pkgver=2.0.4 +pkgrel=1 +pkgdesc="X11 DRI extension wire protocol" +url="http://xorg.freedesktop.org/" +arch=(i686 x86_64) +source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} + +md5sums=('01470d088da3a8a3deefa8e1f45d69cb') diff --git a/abs/core/xfsprogs/PKGBUILD b/abs/core/xfsprogs/PKGBUILD index 9750021..4043caf 100644 --- a/abs/core/xfsprogs/PKGBUILD +++ b/abs/core/xfsprogs/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 3596 2008-06-25 23:37:31Z paul $ +# $Id: PKGBUILD 26327 2009-02-06 16:24:28Z paul $ # Maintainer: Paul Mattal pkgname=xfsprogs -pkgver=2.9.8 -pkgrel=10 +pkgver=3.0.0 +pkgrel=1 pkgdesc="XFS filesystem utilities" arch=(i686 x86_64) license=('LGPL') @@ -10,19 +10,13 @@ url="http://oss.sgi.com/projects/xfs/" groups=('base') depends=(e2fsprogs) options=('!makeflags' '!libtool') -source=(ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs_${pkgver}-1.tar.gz) -md5sums=('f32ab3282c3e02ce25128f7a6c2d5157') +source=(ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-${pkgver}.tar.gz) +md5sums=('ec734f935ec87ebb8be890d29380a3e6') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - #sed -i '/autoconf/d' Makefile - - if [ "$CARCH" == "x86_64" ]; then - export OPTIMIZER="-march=x86-64 -O1" # for x86_64 - else export OPTIMIZER="-march=${CARCH} -O1" # for i686 -fi - + cd ${srcdir}/${pkgname}-${pkgver} + export OPTIMIZER="-march=$(echo ${CARCH} -O1 | sed -e 's/_/-/g')" export DEBUG=-DNDEBUG make || return 1 - make DIST_ROOT=${startdir}/pkg install install-dev + make DIST_ROOT=${pkgdir} install install-dev } diff --git a/abs/core/xkeyboard-config/PKGBUILD b/abs/core/xkeyboard-config/PKGBUILD index 5b26253..abac013 100644 --- a/abs/core/xkeyboard-config/PKGBUILD +++ b/abs/core/xkeyboard-config/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 7542 2008-08-02 21:31:59Z jgc $ -# Maintainer: Alexander Baldeck +# $Id: PKGBUILD 22425 2008-12-26 19:55:49Z jgc $ +# Maintainer: Jan de Groot pkgname=xkeyboard-config -pkgver=1.3 -pkgrel=1 +pkgver=1.4 +pkgrel=2 pkgdesc="X keyboard configuration files" arch=(i686 x86_64) license=('custom') @@ -12,19 +12,21 @@ makedepends=('perlxml' 'pkgconfig') provides=('xkbdata') replaces=('xkbdata') conflicts=('xkbdata') -source=(http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${pkgver}.tar.bz2) -md5sums=('d9e9f69f9c6ef5c5a8255cfbe6a57d51') +source=(http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${pkgver}.tar.bz2 + fix-abnt2.patch) +md5sums=('a9fe7efbc67a6966c4d4501f0cf88073' '5af20ec00a42a051cf0d7bcb572471df') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/fix-abnt2.patch" || return 1 ./configure --prefix=/usr \ --with-xkb-base=/usr/share/X11/xkb \ --with-xkb-rules-symlink=xorg \ --enable-compat-rules=yes || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - rm -f ${startdir}/pkg/usr/share/X11/xkb/compiled || return 1 - install -m755 -d ${startdir}/pkg/var/lib/xkb - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/share/X11/xkb/compiled" || return 1 + install -m755 -d "${pkgdir}/var/lib/xkb" + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xkeyboard-config/fix-abnt2.patch b/abs/core/xkeyboard-config/fix-abnt2.patch new file mode 100644 index 0000000..a451df8 --- /dev/null +++ b/abs/core/xkeyboard-config/fix-abnt2.patch @@ -0,0 +1,20 @@ +From b67326a9b271332c5bef23115d9c4ac7e7b2e6d9 Mon Sep 17 00:00:00 2001 +From: Sergey V. Udaltsov +Date: Wed, 26 Nov 2008 23:19:41 +0000 +Subject: fixed abnt2 keycodes, b.fd.o#18712 + +--- +diff --git a/keycodes/evdev b/keycodes/evdev +index 760e2d0..9da2cd5 100644 +--- a/keycodes/evdev ++++ b/keycodes/evdev +@@ -311,6 +311,7 @@ xkb_keycodes "jp106" { + // For brazilian ABNT2 keyboard. + xkb_keycodes "abnt2" { + include "evdev(evdev)" ++ = 129; + }; + + // PC98 +-- +cgit v0.8.1-24-ge5fb diff --git a/abs/core/xmlrpc-c/PKGBUILD b/abs/core/xmlrpc-c/PKGBUILD new file mode 100644 index 0000000..4a1057e --- /dev/null +++ b/abs/core/xmlrpc-c/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer: Pierre Schmitz +# Contributor: Vitaliy Berdinskikh + +pkgname=xmlrpc-c +pkgver=1.06.32 +pkgrel=1 +pkgdesc='This library provides a modular implementation of XML-RPC for C and C++' +arch=('i686' 'x86_64') +url='http://xmlrpc-c.sourceforge.net/' +license=('custom') +depends=('curl' 'libxml2') +makedepends=('libtool') +options=('!makeflags' '!libtool') +source=("http://downloads.sourceforge.net/xmlrpc-c/xmlrpc-c-${pkgver}.tgz") +md5sums=('1a5a0771a22e75819d90e7fab38ef377') + +build() { + [ "${CARCH}" = "x86_64" ] && export CFLAGS="${CFLAGS} -fPIC" + + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr \ + --enable-libxml2-backend \ + --disable-cgi-server \ + --disable-abyss-server \ + --disable-libwww-client \ + --disable-wininet-client + + make CFLAGS_PERSONAL="${CFLAGS}" || return 1 + make DESTDIR=$pkgdir install + + install -m 644 -D doc/COPYING $pkgdir/usr/share/licenses/${pkgname}/COPYING +} diff --git a/abs/core/xmltv/PKGBUILD b/abs/core/xmltv/PKGBUILD index 2583e94..e16f791 100755 --- a/abs/core/xmltv/PKGBUILD +++ b/abs/core/xmltv/PKGBUILD @@ -1,29 +1,34 @@ -# Maintainer: Allan McRae +# $Id: PKGBUILD,v 1.7 2009/01/28 12:14:17 allan Exp $ +# Maintainer: Allan McRae # Contributor: Andrew Simmons pkgname=xmltv -pkgver=0.5.51 -pkgrel=2 +pkgver=0.5.54 +pkgrel=1 pkgdesc="Set of utilities to download tv listings and format them in xml" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://xmltv.org/wiki/" -license="GPL" -depends=('perl-archive-zip' 'perl-date-manip' 'perl-file-slurp' 'perl-html-tree' \ - 'perl-http-cache-transparent' 'perl-io-stringy' 'perl-xml-libxml' \ - 'perl-lingua-en-numbers' 'perl-lingua-en-numbers-ordinate' 'perl-lingua-preferred' \ - 'perl-soap-lite' 'perl-term-progressbar' 'perl-term-readkey' 'perl-text-bidi' \ - 'perl-text-kakasi' 'perl-timedate' 'perl-tk-tablematrix' 'perl-unicode-string' \ - 'perl-unicode-utf8simple' 'perl-www-mechanize' 'perl-xml-twig' 'perl-xml-writer') -source=(http://downloads.sourceforge.net/xmltv/xmltv-${pkgver}.tar.bz2) -md5sums=('b0b3f0d31b0e7fbc2f615024faedfbb7') +license=('GPL') +depends=('perl-archive-zip' 'perl-date-manip' 'perl-file-slurp' \ + 'perl-http-cache-transparent' 'perl-html-tree' 'perl-io-stringy' \ + 'perl-lingua-en-numbers-ordinate' 'perl-lingua-preferred' 'perl-soap-lite' \ + 'perl-term-progressbar' 'perl-term-readkey' 'perl-text-kakasi' \ + 'perl-timedate' 'perl-tk-tablematrix' 'perl-unicode-string' \ + 'perl-unicode-utf8simple' 'perl-www-mechanize' 'perl-xml-dom' 'libxml2' \ + 'perl-xml-libxml' 'perl-xml-libxslt' 'perl-xml-simple' 'perl-xml-twig' \ + 'perl-xml-writer') + +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('b006f72f45a3e7be3e64f88813275403') build() { - cd $startdir/src/xmltv-${pkgver} - yes | perl Makefile.PL PREFIX=/usr INSTALLDIRS=vendor + cd ${srcdir}/${pkgname}-${pkgver} + yes | perl Makefile.PL PREFIX=/usr INSTALLDIRS=vendor + make || return 1 - make DESTDIR=$startdir/pkg PREFIX=/usr install + make DESTDIR=${pkgdir} PREFIX=/usr install # remove perllocal.pod and .packlist - find ${startdir}/pkg -name perllocal.pod -delete - find ${startdir}/pkg -name .packlist -delete + find ${pkgdir} -name perllocal.pod -delete + find ${pkgdir} -name .packlist -delete } \ No newline at end of file diff --git a/abs/core/xorg-apps/PKGBUILD b/abs/core/xorg-apps/PKGBUILD index dae4b4e..adaccd2 100644 --- a/abs/core/xorg-apps/PKGBUILD +++ b/abs/core/xorg-apps/PKGBUILD @@ -1,22 +1,21 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 19081 2008-11-14 21:07:55Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xorg-apps -pkgver=1.0.3 -pkgrel=3 +pkgver=7.4 +pkgrel=1 pkgdesc="Various X.Org applications" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=(libxcursor libxkbfile libpng libxft libfontenc libxaw) makedepends=(pkgconfig xbitmaps) - source=(${url}/releases/individual/app/oclock-1.0.1.tar.bz2 ${url}/releases/individual/app/luit-1.0.3.tar.bz2 - ${url}/releases/individual/app/xclock-1.0.2.tar.bz2 + ${url}/releases/individual/app/xclock-1.0.3.tar.bz2 ${url}/releases/individual/app/xpr-1.0.2.tar.bz2 - ${url}/releases/individual/app/xwd-1.0.1.tar.bz2 + ${url}/releases/individual/app/xwd-1.0.2.tar.bz2 ${url}/releases/individual/app/xwud-1.0.1.tar.bz2 - ${url}/releases/individual/app/x11perf-1.4.1.tar.bz2 + ${url}/releases/individual/app/x11perf-1.5.tar.bz2 ${url}/releases/individual/app/xbiff-1.0.1.tar.bz2 ${url}/releases/individual/app/xclipboard-1.0.1.tar.bz2 ${url}/releases/individual/app/xconsole-1.0.3.tar.bz2 @@ -26,14 +25,35 @@ source=(${url}/releases/individual/app/oclock-1.0.1.tar.bz2 ${url}/releases/individual/app/xload-1.0.2.tar.bz2 ${url}/releases/individual/app/xlogo-1.0.1.tar.bz2 ${url}/releases/individual/app/xmag-1.0.2.tar.bz2 - ${url}/releases/individual/app/xmessage-1.0.1.tar.bz2 + ${url}/releases/individual/app/xmessage-1.0.2.tar.bz2 ${url}/releases/individual/app/xcalc-1.0.2.tar.bz2 - ${url}/releases/individual/app/xman-1.0.2.tar.bz2 - ${url}/releases/individual/app/xedit-1.0.2.tar.bz2 + ${url}/releases/individual/app/xman-1.0.3.tar.bz2 + ${url}/releases/individual/app/xedit-1.1.2.tar.bz2 ${url}/releases/individual/app/xmh-1.0.1.tar.bz2) +md5sums=('91f49547f9ed3cd0137c8b7c3183e360' + 'b01e4f71c20fc1c79ed727759c1df40c' + '2b1a3d030d87e62a591db8ee4c0072e6' + '6b3a6896081f628bf5a2c9129417c86f' + '0a6ef08a2ac08ad5c4dd1522eb3788a3' + '6e3c5d0297d88e890b6f5df31f73dd60' + '31283bfc3c78718ac1bd71e510d4e774' + '404f5add4537d22dd109c33e518a5190' + '2c6ecedb10dc51adbb64c95f22fd99c2' + '0e1a3110bebabecc2897d67a973526b0' + '6fc90896b8c786cb1a2100b4167f7874' + '033f14f7c4e30d1f4edbb22d5ef86883' + 'f66d76abb0f75514ca32272e23cca757' + 'b41ed6b4bcfc9897366c27a94d2bf150' + '4c5482552f38a7d42398a694cc9b2ee6' + '7c6a783e42c88360ac31d259a864a19d' + 'b4b561ef11fd184989a6062962e86748' + 'd31a99795b9668f047aa11bf36df6df0' + '3d3a4b310a65ccce82472ef83acbbf97' + '67193be728414d45a1922911e6437991' + '656bcbdd41818a8b5a9f7dba77a3eeba') build() { - cd ${startdir}/src + cd "${srcdir}" for i in *; do if [ -d "${i}" ]; then pushd "${i}" @@ -47,32 +67,11 @@ build() { -i Makefile.* || return 1 ;; esac - ./configure --prefix=/usr --disable-xprint \ + ./configure --prefix=/usr --disable-xprint --mandir=/usr/share/man \ --with-localealiasfile=/usr/share/X11/locale/locale.alias make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done } -md5sums=('91f49547f9ed3cd0137c8b7c3183e360' - 'b01e4f71c20fc1c79ed727759c1df40c' - '6b930326f71993fb54b7203902b387cd' - '6b3a6896081f628bf5a2c9129417c86f' - '911addfb7fa402217ddac63e5c1d97c7' - '6e3c5d0297d88e890b6f5df31f73dd60' - 'fd06c8b8e3572a0e14af65a49e0dd7d1' - '404f5add4537d22dd109c33e518a5190' - '2c6ecedb10dc51adbb64c95f22fd99c2' - '0e1a3110bebabecc2897d67a973526b0' - '6fc90896b8c786cb1a2100b4167f7874' - '033f14f7c4e30d1f4edbb22d5ef86883' - 'f66d76abb0f75514ca32272e23cca757' - 'b41ed6b4bcfc9897366c27a94d2bf150' - '4c5482552f38a7d42398a694cc9b2ee6' - '7c6a783e42c88360ac31d259a864a19d' - 'b3674c3a00a089764d86aa94e257ccec' - 'd31a99795b9668f047aa11bf36df6df0' - '855f2dbfa2aff58b8b9cd6a1c1120fad' - 'c56160e93c24ddf17e69891ed50deb72' - '656bcbdd41818a8b5a9f7dba77a3eeba') diff --git a/abs/core/xorg-server-utils/PKGBUILD b/abs/core/xorg-server-utils/PKGBUILD index eb30890..84b4d12 100644 --- a/abs/core/xorg-server-utils/PKGBUILD +++ b/abs/core/xorg-server-utils/PKGBUILD @@ -1,17 +1,15 @@ -# $Id: PKGBUILD 3241 2008-06-21 18:04:39Z jgc $ +# $Id: PKGBUILD 19183 2008-11-16 22:56:53Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xorg-server-utils -pkgver=7.3 -pkgrel=1 +pkgver=7.4 +pkgrel=2 pkgdesc="X.Org utilities required by xorg-server" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libxfontcache' 'libxi' 'liblbxutil' 'libxrandr>=1.2.1' 'libxxf86misc' - 'libxaw' 'libxxf86vm' 'libxtrap' 'mcpp>=2.6' 'xtrans') -makedepends=('pkgconfig' 'xbitmaps' 'xproxymngproto') +depends=('libxfontcache' 'libxi' 'libxmu' 'libxxf86misc' 'libxrandr' 'libxxf86vm' 'mcpp>=2.6') +makedepends=('pkgconfig' 'xbitmaps' 'bigreqsproto' 'xtrans') source=(${url}/releases/individual/app/iceauth-1.0.2.tar.bz2 - ${url}/releases/individual/app/lbxproxy-1.0.1.tar.bz2 ${url}/releases/individual/app/rgb-1.0.3.tar.bz2 ${url}/releases/individual/app/sessreg-1.0.4.tar.bz2 ${url}/releases/individual/app/xcmsdb-1.0.1.tar.bz2 @@ -24,13 +22,8 @@ source=(${url}/releases/individual/app/iceauth-1.0.2.tar.bz2 ${url}/releases/individual/app/xrefresh-1.0.2.tar.bz2 ${url}/releases/individual/app/xset-1.0.4.tar.bz2 ${url}/releases/individual/app/xsetmode-1.0.0.tar.bz2 - ${url}/releases/individual/app/xsetpointer-1.0.1.tar.bz2 - ${url}/releases/individual/app/xsetroot-1.0.2.tar.bz2 - ${url}/releases/individual/app/xstdcmap-1.0.1.tar.bz2 - ${url}/releases/individual/app/xtrap-1.0.2.tar.bz2 - ${url}/releases/individual/app/xvidtune-1.0.1.tar.bz2) + ${url}/releases/individual/app/xsetroot-1.0.2.tar.bz2) md5sums=('7ab8b64edf0212a9d9a3c8129901a450' - '9d5045a5c76b1fe360221b967a5aa0e9' '44ea16cc3104de6401bc74035f642357' '839e968d7197b9563f0fd8a5a3aac2e3' '8579d5f50ba7f0c4a5bf16b9670fea01' @@ -43,11 +36,7 @@ md5sums=('7ab8b64edf0212a9d9a3c8129901a450' '1228f890f86148e4e6ae22aa73118cbb' '2f41fd983ba4d89419204854936025e2' 'd074e79d380b031d2f60e4cd56538c93' - '9e5bcbeda4aaf02bfa095e41d30baee4' - '9af7db9f3052aef0b11636720b3101dd' - '86ab558441edfb86f853639e4290a754' - '97a62a011a11f03b46d72851aa298fa8' - 'e0744594f4e5969b20df28d897781318') + '9af7db9f3052aef0b11636720b3101dd') build() { cd ${startdir}/src @@ -56,19 +45,14 @@ build() { pushd "${i}" case "${i}" in xrdb*) - ./configure --prefix=/usr --with-cpp=/usr/bin/mcpp\ -@old - ;; - lbxproxy*) - sed -e 's|$(libdir)/X11/lbxproxy|$(datadir)/X11/libxproxy|g' \ - -i Makefile.* || return 1 - ./configure --prefix=/usr + ./configure --prefix=/usr --mandir=/usr/share/man --with-cpp=/usr/bin/mcpp\ -@old || return 1 ;; *) - ./configure --prefix=/usr + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 ;; esac make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done diff --git a/abs/core/xorg-server/001_fedora_extramodes.patch b/abs/core/xorg-server/001_fedora_extramodes.patch new file mode 100644 index 0000000..30743b8 --- /dev/null +++ b/abs/core/xorg-server/001_fedora_extramodes.patch @@ -0,0 +1,85 @@ +From: Adam Jackson +Date: Sun, 28 Oct 2007 09:37:52 +0100 +Subject: [PATCH] Fedora extra modes list + +--- +Index: xorg-server/hw/xfree86/common/extramodes +=================================================================== +--- xorg-server.orig/hw/xfree86/common/extramodes ++++ xorg-server/hw/xfree86/common/extramodes +@@ -3,16 +3,75 @@ + // + // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ + // ++// NOTE: Please keep all video modes sorted in order of X res, then Y res for ++// ease of maintenance and readability. + + # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz + ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync + ++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz ++Modeline "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync ++ ++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz ++Modeline "1152x864" 96.77 1152 1224 1344 1536 864 865 868 900 -HSync +Vsync ++ ++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz ++Modeline "1152x864" 104.99 1152 1224 1352 1552 864 865 868 902 -HSync +Vsync ++ ++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz ++Modeline "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync ++ ++# 1152x864 @ 85Hz (Red Hat custom modeline) ++ModeLine "1152x864" 121.5 1152 1216 1344 1568 864 865 868 911 +hsync -vsync ++ ++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz ++Modeline "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync ++ ++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz ++Modeline "1360x768" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync ++ ++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz ++Modeline "1360x768" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync ++ + # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz + ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync + ++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz ++Modeline "1400x1050" 145.06 1400 1496 1648 1896 1050 1051 1054 1093 -HSync +Vsync ++ + # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz + ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync + ++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz ++Modeline "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync ++ ++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz ++Modeline "1440x900" 106.50 1440 1520 1672 1904 900 903 909 934 -HSync +Vsync ++ ++# 1600x1024 for SGI 1600 SW ++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync ++ ++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz ++Modeline "1680x1050" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync ++ ++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz ++Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync ++ ++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz ++Modeline "1680x1050" 174.00 1680 1800 1976 2272 1050 1053 1059 1096 -hsync +vsync ++ ++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz ++Modeline "1680x1050" 187.00 1680 1800 1976 2272 1050 1053 1059 1099 -hsync +vsync ++ ++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz ++Modeline "1680x1050" 214.75 1680 1808 1984 2288 1050 1053 1059 1105 -hsync +vsync ++ ++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz ++Modeline "1920x1080" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ++ ++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz ++Modeline "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync ++ + # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz + Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync + diff --git a/abs/core/xorg-server/PKGBUILD b/abs/core/xorg-server/PKGBUILD index 0582a82..51f75f8 100644 --- a/abs/core/xorg-server/PKGBUILD +++ b/abs/core/xorg-server/PKGBUILD @@ -1,45 +1,54 @@ -# $Id: PKGBUILD 3240 2008-06-21 18:01:37Z jgc $ +# $Id: PKGBUILD 21903 2008-12-17 20:32:54Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xorg-server -pkgver=1.4.2 -pkgrel=1 -_mesaver=7.0.3 +pkgver=1.5.3 +pkgrel=5 pkgdesc="X.Org X servers" arch=('i686' 'x86_64') license=('custom') url="http://xorg.freedesktop.org" -depends=('libxkbui' 'ncurses' 'libxxf86misc' 'libxfont' - 'libxaw' 'libxxf86vm' 'xcursor-themes' - 'xkeyboard-config' 'xorg-server-utils' 'xorg-utils' 'libdrm>=2.3.0' - 'xorg-fonts-misc' 'pixman>=0.10' 'xbitmaps') -makedepends=('pkgconfig' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' - 'xf86bigfontproto' 'resourceproto' 'evieext' 'damageproto>=1.1.0' - 'compositeproto>=0.4' 'scrnsaverproto' 'libxres' 'xorg-util-macros' - 'randrproto' 'glproto>=1.4.9' 'renderproto>=0.9.3' 'autoconf' - 'automake' 'libtool' 'bison' 'flex' 'gcc' 'libxrender' - 'libxfixes' 'quilt' 'mesa') +depends=('libx11>=1.1.5' 'libxkbui>=1.0.2' 'libgl' 'libxfont>=1.3.3' 'openssl>=0.9.8h' 'libxxf86misc>=1.0.1' 'libpciaccess>=0.10.5' 'libxv>=1.0.4' 'libxaw>=1.0.4' 'pixman>=0.11.10' 'hal>=0.5.11' 'xcursor-themes' 'xkeyboard-config>=1.3' 'xorg-server-utils' 'xorg-utils' 'xorg-fonts-misc' 'xbitmaps' 'libdrm>=2.3.1' 'diffutils' 'xf86-input-evdev') +makedepends=('glproto>=1.4.9' 'xf86driproto>=2.0.4' 'mesa>=7.2' 'randrproto>=1.2.2' 'renderproto>=0.9.3' 'scrnsaverproto>=1.1.0' 'fontsproto>=2.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'trapproto>=3.4.3' 'resourceproto>=1.0.2' 'xineramaproto>=1.1.2' 'evieext>=1.0.2' 'libxkbfile>=1.0.5' 'libxmu>=1.0.4' 'libxpm>=3.5.7' 'libxxf86dga>=1.0.2' 'inputproto>=1.4.4' 'xcmiscproto>=1.1.2' 'bigreqsproto' 'libdrm=2.3.1' 'xtrans') options=('!libtool') provides=('x-server') groups=('xorg') install=xorg-server.install source=(${url}/releases/individual/xserver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 - ftp://ftp.archlinux.org/other/xorg-server/xorg-server-patches-1.4.2-1.tar.bz2) -md5sums=('fa2915ae377f61c340a18ebef484b64b' - 'e6e6379d7793af40a6bc3ce1bace572e' - 'bc907d6d69b55b445c3046a4d7ecc8ef') + xserver-1.5-branch-4970d.patch + 001_fedora_extramodes.patch + xorg-redhat-die-ugly-pattern-die-die-die.patch + xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch + xserver-1.5.3-AEI-on-by-default.patch) +md5sums=('308971036e25250e7fe3cccfd5a120f8' + '61f9bb524501247dce647b218ad14347' + '033427f2b406cba8dd6103ff374e7156' + '1a336eb22e27cbf443ec5a2ecddfa93c' + '7b03ba9b75d795e4f7fdfaa550d97159' + '63d1d61d217005db7c23c4a98fc3e7eb') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - quilt push -a || return 1 - libtoolize --force --copy || return 1 - aclocal || return 1 - autoconf || return 1 - automake --add-missing || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + # Upstream commits from server-1.5 branch + patch -Np1 -i "${srcdir}/xserver-1.5-branch-4970d.patch" || return 1 + + # extramodes + patch -Np1 -i "${srcdir}/001_fedora_extramodes.patch" || return 1 + + # Get rid of the ugly pattern + patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1 + + # Patch from Fedora to fix FS#12248 + patch -Np1 -i "${srcdir}/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch" || return 1 + + # Upstream patch to fix evdev issues with >=2.1.0 + patch -Np1 -i "${srcdir}/xserver-1.5.3-AEI-on-by-default.patch" || return 1 + + # Fix dbus config path + sed -i -e 's/\$(sysconfdir)/\/etc/' config/Makefile.* || return 1 + ./configure --prefix=/usr \ - --with-mesa-source=${startdir}/src/Mesa-${_mesaver} \ --enable-ipv6 \ --enable-dri \ --disable-dmx \ @@ -54,39 +63,43 @@ build() { --enable-glx-tls \ --enable-xorgcfg \ --enable-kdrive \ + --enable-install-setuid \ + --enable-config-hal \ + --enable-config-dbus \ --disable-xfbdev \ --disable-xfake \ --disable-xsdl \ --disable-kdrive-vesa \ - --enable-install-setuid \ + --disable-dri2 \ --disable-xprint \ + --disable-static \ --sysconfdir=/etc/X11 \ --localstatedir=/var \ --with-default-font-path=/usr/share/fonts/misc,/usr/share/fonts/100dpi:unscaled,/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/TTF,/usr/share/fonts/Type1 \ - --with-rgb-path=/usr/share/X11/rgb \ --with-xkb-path=/usr/share/X11/xkb \ - --with-xkb-output=/usr/share/X11/xkb/compiled \ - --with-dri-driver-path=/usr/lib/xorg/modules/dri \ - --disable-config-hal \ - --disable-static + --with-xkb-output=/var/lib/xkb \ + --with-dri-driver-path=/usr/lib/xorg/modules/dri --enable-null-root-cursor || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -m755 -d ${startdir}/pkg/etc/X11 || return 1 - install -m755 -d ${startdir}/pkg/var/lib || return 1 - mv ${startdir}/pkg/usr/share/X11/xkb/compiled ${startdir}/pkg/var/lib/xkb - ln -sf /var/lib/xkb ${startdir}/pkg/usr/share/X11/xkb/compiled || return 1 + rm -rf "${pkgdir}/var/log" || return 1 - cd ${startdir}/pkg/usr/lib/xorg/modules/extensions - mv libGLcore.so libGLcore.xorg - mv libglx.so libglx.xorg + install -m755 -d "${pkgdir}/etc/X11" || return 1 + install -m755 -d "${pkgdir}/var/lib/xkb" || return 1 # No longer needed, but as nvidia-utils mangles these files, # keep them like this so they can be restored - mv ${startdir}/pkg/usr/lib/xorg/modules/libwfb.so \ - ${startdir}/pkg/usr/lib/xorg/modules/libwfb.so.1.4 || return 1 + mv "${pkgdir}/usr/lib/xorg/modules/libwfb.so" \ + "${pkgdir}/usr/lib/xorg/modules/libwfb.so.1.4" || return 1 + + # Needed for non-mesa drivers, libgl will restore it + mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \ + "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg" || return 1 + + mv "${pkgdir}/usr/lib/xorg/modules/extensions/libdri.so" \ + "${pkgdir}/usr/lib/xorg/modules/extensions/libdri.xorg" || return 1 - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xorg-server/__changelog b/abs/core/xorg-server/__changelog new file mode 100644 index 0000000..2f87167 --- /dev/null +++ b/abs/core/xorg-server/__changelog @@ -0,0 +1,3 @@ + +added --enable-null-root-cursor to configure line. -jm + diff --git a/abs/core/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch b/abs/core/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch new file mode 100644 index 0000000..4e782f1 --- /dev/null +++ b/abs/core/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch @@ -0,0 +1,16 @@ +Remove the default root window grey stipple pattern, replacing it with +blackness. + +--- xc/programs/Xserver/dix/window.c.die-ugly-pattern-die-die-die Tue Feb 12 16:33:04 2002 ++++ xc/programs/Xserver/dix/window.c Tue Feb 12 16:45:32 2002 +@@ -119,8 +119,8 @@ + * + ******/ + +-static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11}; +-static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88}; ++static unsigned char _back_lsb[4] = {0x00, 0x00, 0x00, 0x00}; ++static unsigned char _back_msb[4] = {0x00, 0x00, 0x00, 0x00}; + + int screenIsSaved = SCREEN_SAVER_OFF; + diff --git a/abs/core/xorg-server/xorg-server.install b/abs/core/xorg-server/xorg-server.install index f7ff03a..c67438d 100644 --- a/abs/core/xorg-server/xorg-server.install +++ b/abs/core/xorg-server/xorg-server.install @@ -1,12 +1,33 @@ post_install() { - rm -f /usr/lib/xorg/modules/libwfb.so - ln -sf libwfb.so.1.4 /usr/lib/xorg/modules/libwfb.so + rm -f usr/lib/xorg/modules/libwfb.so + ln -sf libwfb.so.1.4 usr/lib/xorg/modules/libwfb.so + + cmp usr/lib/xorg/modules/extensions/libdri.so usr/lib/xorg/modules/extensions/libglx.xorg >/dev/null 2>&1 && rm -f usr/lib/xorg/modules/extensions/libdri.so + + # If the symlink is dead or non-existent, remove it and make a new one + if [ ! -e usr/lib/xorg/modules/extensions/libdri.so ]; then + rm -f usr/lib/xorg/modules/extensions/libdri.so + ln -sf libdri.xorg usr/lib/xorg/modules/extensions/libdri.so + fi } post_upgrade() { + if [ "`vercmp $2 1.4.99.906`" -lt 0 ]; then + cat << _EOF + + Input device handling has changed in xorg-server 1.5. + Please read http://wiki.archlinux.org/index.php/Xorg_input_hotplugging. + +_EOF + fi post_install } post_remove() { rm -f /usr/lib/xorg/modules/libwfb.so + + # If the symlink is dead, remove it + if [ ! -e usr/lib/xorg/modules/extensions/libdri.so ]; then + rm -f usr/lib/xorg/modules/extensions/libdri.so + fi } diff --git a/abs/core/xorg-server/xserver-1.5-branch-4970d.patch b/abs/core/xorg-server/xserver-1.5-branch-4970d.patch new file mode 100644 index 0000000..23cdab0 --- /dev/null +++ b/abs/core/xorg-server/xserver-1.5-branch-4970d.patch @@ -0,0 +1,246 @@ +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/config/x11-input.fdi xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/config/x11-input.fdi +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/config/x11-input.fdi 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/config/x11-input.fdi 2008-12-16 19:19:00.000000000 +0000 +@@ -64,8 +64,8 @@ + base + + +- keyboard ++ kbd otherwise). --> ++ kbd + pc105 + +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/exa/exa_accel.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/exa/exa_accel.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/exa/exa_accel.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/exa/exa_accel.c 2008-12-16 19:19:00.000000000 +0000 +@@ -398,6 +398,10 @@ + RegionPtr srcregion = NULL, dstregion = NULL; + xRectangle *rects; + ++ /* avoid doing copy operations if no boxes */ ++ if (nbox == 0) ++ return; ++ + pSrcPixmap = exaGetDrawablePixmap (pSrcDrawable); + pDstPixmap = exaGetDrawablePixmap (pDstDrawable); + +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/common/xf86Helper.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/common/xf86Helper.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/common/xf86Helper.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/common/xf86Helper.c 2008-12-16 19:19:00.000000000 +0000 +@@ -448,10 +448,6 @@ + #define GLOBAL_DEFAULT_DEPTH 24 + #endif + +-#ifndef GLOBAL_DEFAULT_FBBPP +-#define GLOBAL_DEFAULT_FBBPP 32 +-#endif +- + _X_EXPORT Bool + xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int dummy, int fbbpp, + int depth24flags) +@@ -529,7 +525,6 @@ + if (depth > 0) + scrp->depth = depth; + } else { +- scrp->bitsPerPixel = GLOBAL_DEFAULT_FBBPP; + scrp->depth = GLOBAL_DEFAULT_DEPTH; + } + } +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/os-support/linux/int10/linux.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/os-support/linux/int10/linux.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/os-support/linux/int10/linux.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/os-support/linux/int10/linux.c 2008-12-16 19:19:00.000000000 +0000 +@@ -1,6 +1,6 @@ + /* + * linux specific part of the int10 module +- * Copyright 1999, 2000, 2001, 2002, 2003, 2004 Egbert Eich ++ * Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2008 Egbert Eich + */ + #ifdef HAVE_XORG_CONFIG_H + #include +@@ -357,7 +357,10 @@ + "shmat(low_mem) error: %s\n",strerror(errno)); + return FALSE; + } +- ++ if (mprotect((void*)0, V_RAM, PROT_READ|PROT_WRITE|PROT_EXEC) != 0) ++ xf86DrvMsg(pInt->scrnIndex, X_ERROR, ++ "Cannot set EXEC bit on low memory: %s\n", strerror(errno)); ++ + if (((linuxInt10Priv*)pInt->private)->highMem >= 0) { + addr = shmat(((linuxInt10Priv*)pInt->private)->highMem, + (char*)HIGH_MEM, 0); +@@ -368,6 +371,11 @@ + "shmget error: %s\n",strerror(errno)); + return FALSE; + } ++ if (mprotect((void*)HIGH_MEM, HIGH_MEM_SIZE, ++ PROT_READ|PROT_WRITE|PROT_EXEC) != 0) ++ xf86DrvMsg(pInt->scrnIndex, X_ERROR, ++ "Cannot set EXEC bit on high memory: %s\n", ++ strerror(errno)); + } else { + if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { + if (mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS, +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaa.h xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaa.h +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaa.h 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaa.h 2008-12-16 19:19:00.000000000 +0000 +@@ -2,6 +2,10 @@ + #ifndef _XAA_H + #define _XAA_H + ++#define XAA_VERSION_MAJOR 1 ++#define XAA_VERSION_MINOR 2 ++#define XAA_VERSION_RELEASE 1 ++ + /* + + ******** OPERATION SPECIFIC FLAGS ********* +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaaInitAccel.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaaInitAccel.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaaInitAccel.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaaInitAccel.c 2008-12-16 19:19:00.000000000 +0000 +@@ -103,7 +103,9 @@ + MODINFOSTRING1, + MODINFOSTRING2, + XORG_VERSION_CURRENT, +- 1, 2, 0, ++ XAA_VERSION_MAJOR, ++ XAA_VERSION_MINOR, ++ XAA_VERSION_RELEASE, + ABI_CLASS_VIDEODRV, /* requires the video driver ABI */ + ABI_VIDEODRV_VERSION, + MOD_CLASS_NONE, +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaawrap.h xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaawrap.h +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaawrap.h 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaawrap.h 2008-12-16 19:19:00.000000000 +0000 +@@ -48,8 +48,8 @@ + XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\ + GCFuncs *oldFuncs = pGC->funcs;\ + pGC->funcs = pGCPriv->wrapFuncs;\ +- pGC->ops = pGCPriv->wrapOps +- ++ pGC->ops = pGCPriv->wrapOps; \ ++ SYNC_CHECK(pGC) + + #define XAA_PIXMAP_OP_EPILOGUE(pGC)\ + pGCPriv->wrapOps = pGC->ops;\ +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/mi/miinitext.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/mi/miinitext.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/mi/miinitext.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/mi/miinitext.c 2008-12-16 19:19:00.000000000 +0000 +@@ -661,7 +661,8 @@ + #endif + + #ifdef GLXEXT +- GlxPushProvider(&__glXDRISWRastProvider); ++ if (serverGeneration == 1) ++ GlxPushProvider(&__glXDRISWRastProvider); + if (!noGlxExtension) GlxExtensionInit(); + #endif + } +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/os/utils.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/os/utils.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/os/utils.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/os/utils.c 2008-12-16 19:19:00.000000000 +0000 +@@ -1702,7 +1702,7 @@ + int pid; + } *pidlist; + +-void (*old_alarm)(int) = NULL; /* XXX horrible awful hack */ ++OsSigHandlerPtr old_alarm = NULL; /* XXX horrible awful hack */ + + pointer + Popen(char *command, char *type) +@@ -1726,7 +1726,7 @@ + } + + /* Ignore the smart scheduler while this is going on */ +- old_alarm = signal(SIGALRM, SIG_IGN); ++ old_alarm = OsSignal(SIGALRM, SIG_IGN); + if (old_alarm == SIG_ERR) { + perror("signal"); + return NULL; +@@ -1737,7 +1737,7 @@ + close(pdes[0]); + close(pdes[1]); + xfree(cur); +- if (signal(SIGALRM, old_alarm) == SIG_ERR) ++ if (OsSignal(SIGALRM, old_alarm) == SIG_ERR) + perror("signal"); + return NULL; + case 0: /* child */ +@@ -1914,7 +1914,7 @@ + /* allow EINTR again */ + OsReleaseSignals (); + +- if (old_alarm && signal(SIGALRM, old_alarm) == SIG_ERR) { ++ if (old_alarm && OsSignal(SIGALRM, old_alarm) == SIG_ERR) { + perror("signal"); + return -1; + } +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/xkb/xkbEvents.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/xkb/xkbEvents.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/xkb/xkbEvents.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/xkb/xkbEvents.c 2008-12-16 19:19:00.000000000 +0000 +@@ -109,7 +109,7 @@ + register CARD16 changed,bState; + + interest = kbd->xkb_interest; +- if (!interest) ++ if (!interest || !kbd->key || !kbd->key->xkbInfo) + return; + xkbi = kbd->key->xkbInfo; + state= &xkbi->state; +@@ -168,6 +168,9 @@ + unsigned time = 0,initialized; + CARD16 changed; + ++ if (!kbd->key || !kbd->key->xkbInfo) ++ return; ++ + xkbi = kbd->key->xkbInfo; + initialized= 0; + +@@ -291,7 +294,7 @@ + Time time = 0; + + interest = kbd->xkb_interest; +- if (!interest) ++ if (!interest || !kbd->key || !kbd->key->xkbInfo) + return; + xkbi = kbd->key->xkbInfo; + +@@ -401,6 +404,9 @@ + Time time = 0; + XID winID = 0; + ++ if (!kbd->key || !kbd->key->xkbInfo) ++ return; ++ + xkbi = kbd->key->xkbInfo; + + if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&& +@@ -616,11 +622,12 @@ + XkbInterestPtr interest; + Time time = 0; + +- xkbi = kbd->key->xkbInfo; + interest = kbd->xkb_interest; +- if (!interest) ++ if (!interest || !kbd->key || !kbd->key->xkbInfo) + return; + ++ xkbi = kbd->key->xkbInfo; ++ + initialized = 0; + pEv->mods= xkbi->state.mods; + pEv->group= xkbi->state.group; +@@ -996,6 +1003,10 @@ + ClientPtr client = NULL; + + found= False; ++ ++ if (!dev->key || !dev->key->xkbInfo) ++ return found; ++ + autoCtrls= autoValues= 0; + if ( dev->xkb_interest ) { + interest = dev->xkb_interest; diff --git a/abs/core/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch b/abs/core/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch new file mode 100644 index 0000000..2ac6095 --- /dev/null +++ b/abs/core/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch @@ -0,0 +1,69 @@ +From 638cab7e1dc3711f7fb04155bcdabf4b8895cc5e Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 4 Aug 2008 17:08:36 +0930 +Subject: [PATCH] xfree86: force SwitchCoreKeyboard for evdev devices (updated). + +If an evdev keyboard device is added through the HAL mechanism, force a +SwitchCoreKeyboard to load the evdev map into the VCK. This way, by the time a +client starts the evdev keymap is already there, leading to less pain lateron. + +Works if: +- all keyboards are hotplugged through HAL, and/or +- the xorg.conf keyboard uses the kbd driver. + +Has no effect (i.e. busted keymaps) if: +- an evdev keyboard device has been specified in the xorg.conf. +- we don't have a device at startup and plug a device in after starting the + desktop environment. +- if the device we use isn't the first one reported by HAL. + +If HAL isn't set up, this patch is a noop. +--- + hw/xfree86/common/xf86Xinput.c | 31 +++++++++++++++++++++++++++++++ + 1 files changed, 31 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c +index 710e787..dacc3dc 100644 +--- a/hw/xfree86/common/xf86Xinput.c ++++ b/hw/xfree86/common/xf86Xinput.c +@@ -423,6 +423,37 @@ NewInputDeviceRequest (InputOption *options, DeviceIntPtr *pdev) + (!is_auto || xf86Info.autoEnableDevices)) + EnableDevice(dev); + ++ /* XXX: The VCK always starts with built-in defaults for keymap. These ++ * defaults are different to the evdev ones. When the first key is hit on ++ * an extension device, the keymap is copied into the VCK's and any ++ * changes made at runtime to the VCK map are lost. ++ * ++ * Assumption: if we have at least one evdev keyboard device, we can ++ * ignore kbd devices. Force a SwitchCoreKeyboard so the VCK has the same ++ * keymap as we do. ++ * ++ * Next time we hit a key, we don't change the map over anymore (see ++ * SwitchCoreKeyboard), and live happily ever after. ++ * Until we have 2 physical keyboards. Or the first real keyboard isn't ++ * actually the one we use. Oh well. ++ * ++ */ ++ if (dev->key) ++ { ++ InputInfoPtr info; ++ ++ /* Search if there is one other keyboard that uses evdev. */ ++ for (info = xf86InputDevs; info; info = info->next) ++ { ++ if (info != pInfo && info->dev && info->dev->key && ++ (strcmp(info->drv->driverName, "evdev") == 0)) ++ break; ++ } ++ ++ if (!info) ++ SwitchCoreKeyboard(dev); ++ } ++ + *pdev = dev; + return Success; + +-- +1.5.5.1 + diff --git a/abs/core/xorg-server/xserver-1.5.3-AEI-on-by-default.patch b/abs/core/xorg-server/xserver-1.5.3-AEI-on-by-default.patch new file mode 100644 index 0000000..d6cdf83 --- /dev/null +++ b/abs/core/xorg-server/xserver-1.5.3-AEI-on-by-default.patch @@ -0,0 +1,108 @@ +From 15bf414daa83967fd1f24bd48bd01ea941c11ce2 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 13 Nov 2008 10:17:33 +1000 +Subject: [PATCH] xfree86: AllowEmptyInput is true by default - update the xf86Info defaults. + +Also set AutoAddDevices and AutoEnableDevices to their defaults. + +And in doing so, switch the rest of the defaults over to named intializers. + +Signed-off-by: Peter Hutterer +(cherry picked from commit 0b56b44addc323a00eb7cd86240cb0dd4275bcf8) + +Conflicts: + + hw/xfree86/common/xf86Globals.c +--- + hw/xfree86/common/xf86Globals.c | 69 ++++++++++++++++++++------------------ + 1 files changed, 36 insertions(+), 33 deletions(-) + +diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c +index f5babbc..a5edd82 100644 +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -95,45 +95,48 @@ InputInfoPtr xf86InputDevs = NULL; + /* Globals that video drivers may not access */ + + xf86InfoRec xf86Info = { +- -1, /* consoleFd */ +- -1, /* vtno */ +- FALSE, /* vtSysreq */ +- SKWhenNeeded, /* ddxSpecialKeys */ +- NULL, /* pMouse */ ++ .consoleFd = -1, ++ .vtno = -1, ++ .vtSysreq = FALSE, ++ .ddxSpecialKeys = SKWhenNeeded, ++ .pMouse = NULL, + #ifdef XINPUT +- NULL, /* mouseLocal */ ++ .mouseLocal = NULL, + #endif +- -1, /* lastEventTime */ +- FALSE, /* vtRequestsPending */ +- FALSE, /* inputPending */ +- FALSE, /* dontVTSwitch */ +- FALSE, /* dontZap */ +- FALSE, /* dontZoom */ +- FALSE, /* notrapSignals */ +- FALSE, /* caughtSignal */ +- FALSE, /* sharedMonitor */ +- NULL, /* currentScreen */ ++ .lastEventTime = -1, ++ .vtRequestsPending = FALSE, ++ .inputPending = FALSE, ++ .dontVTSwitch = FALSE, ++ .dontZap = FALSE, ++ .dontZoom = FALSE, ++ .notrapSignals = FALSE, ++ .caughtSignal = FALSE, ++ .sharedMonitor = FALSE, ++ .currentScreen = NULL, + #ifdef CSRG_BASED +- -1, /* screenFd */ +- -1, /* consType */ ++ .screenFd = -1, ++ .consType = -1, + #endif +- FALSE, /* allowMouseOpenFail */ +- TRUE, /* vidModeEnabled */ +- FALSE, /* vidModeAllowNonLocal */ +- TRUE, /* miscModInDevEnabled */ +- FALSE, /* miscModInDevAllowNonLocal */ +- PCIOsConfig, /* pciFlags */ +- Pix24DontCare, /* pixmap24 */ +- X_DEFAULT, /* pix24From */ ++ .allowMouseOpenFail = FALSE, ++ .vidModeEnabled = TRUE, ++ .vidModeAllowNonLocal = FALSE, ++ .miscModInDevEnabled = TRUE, ++ .miscModInDevAllowNonLocal = FALSE, ++ .pciFlags = PCIOsConfig, ++ .pixmap24 = Pix24DontCare, ++ .pix24From = X_DEFAULT, + #ifdef __i386__ +- FALSE, /* pc98 */ ++ .pc98 = FALSE, + #endif +- TRUE, /* pmFlag */ +- LogNone, /* syncLog */ +- 0, /* estimateSizesAggressively */ +- FALSE, /* kbdCustomKeycodes */ +- FALSE, /* disableRandR */ +- X_DEFAULT /* randRFrom */ ++ .pmFlag = TRUE, ++ .log = LogNone, ++ .estimateSizesAggressively = 0, ++ .kbdCustomKeycodes = FALSE, ++ .disableRandR = FALSE, ++ .randRFrom = X_DEFAULT, ++ .allowEmptyInput = TRUE, ++ .autoAddDevices = TRUE, ++ .autoEnableDevices = TRUE + }; + const char *xf86ConfigFile = NULL; + const char *xf86InputDeviceList = NULL; +-- +1.6.0.3 + diff --git a/abs/core/xorg-util-macros/PKGBUILD b/abs/core/xorg-util-macros/PKGBUILD new file mode 100644 index 0000000..af3786a --- /dev/null +++ b/abs/core/xorg-util-macros/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 21902 2008-12-17 20:27:32Z jgc $ +#Maintainer: Jan de Groot + +pkgname=xorg-util-macros +pkgver=1.2.1 +pkgrel=1 +pkgdesc="X.Org Autotools macros" +arch=(i686 x86_64) +license=('custom') +url="http://xorg.freedesktop.org/" +source=(${url}/releases/individual/util/util-macros-${pkgver}.tar.bz2) +md5sums=('dc7ddaf9bea8b341510efe4dac125af4') + +build() { + cd "${srcdir}/util-macros-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/abs/core/xorg-utils/PKGBUILD b/abs/core/xorg-utils/PKGBUILD index 2355fd9..61a55ce 100644 --- a/abs/core/xorg-utils/PKGBUILD +++ b/abs/core/xorg-utils/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 3238 2008-06-21 17:44:50Z jgc $ +# $Id: PKGBUILD 18946 2008-11-12 04:14:33Z eric $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xorg-utils -pkgver=7.3 -pkgrel=1 +pkgver=7.4 +pkgrel=2 pkgdesc="Collection of client utilities used to query the X server" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('libxxf86dga' 'libxi' 'libxxf86misc' 'libxtst' 'libxinerama' 'libxv' - 'libdmx' 'libxft' 'libxaw') + 'libdmx' 'libxft' 'libxaw>=1.0.5') makedepends=('pkgconfig' 'mesa') source=(${url}/releases/individual/app/xdpyinfo-1.0.3.tar.bz2 ${url}/releases/individual/app/xdriinfo-1.0.2.tar.bz2 @@ -20,27 +20,22 @@ source=(${url}/releases/individual/app/xdpyinfo-1.0.3.tar.bz2 ${url}/releases/individual/app/xlsfonts-1.0.2.tar.bz2 ${url}/releases/individual/app/xprop-1.0.4.tar.bz2 ${url}/releases/individual/app/xvinfo-1.0.2.tar.bz2 - ${url}/releases/individual/app/xwininfo-1.0.3.tar.bz2) -md5sums=('b7cbab6cbcd12bf7ad65dbc12d86e104' - 'a5ec51ed9f0a55dc3462d90d52ff899c' - 'a9532c3d1683c99bb5df1895cb3a60b1' - 'c72abd90f50ef459bc14b39ec9fcc7f8' - '288fe4cf8a990e4e602aac16dd9109fb' - '69adcda848479acc3b82b3928812d191' - '44473b880d26bfbe8b3d4d72b183cba7' - '28958248590ff60ecd70e8f590d977b7' - '48aa8fd78802f477dcbf9ef0dfd9f783' - 'e1e318436f49e2f0f3764593dadd9ad2' - '721f84332c98c33152460bb22ba9ded6') + ${url}/releases/individual/app/xwininfo-1.0.4.tar.bz2) +md5sums=('b7cbab6cbcd12bf7ad65dbc12d86e104' 'a5ec51ed9f0a55dc3462d90d52ff899c'\ + 'a9532c3d1683c99bb5df1895cb3a60b1' 'c72abd90f50ef459bc14b39ec9fcc7f8'\ + '288fe4cf8a990e4e602aac16dd9109fb' '69adcda848479acc3b82b3928812d191'\ + '44473b880d26bfbe8b3d4d72b183cba7' '28958248590ff60ecd70e8f590d977b7'\ + '48aa8fd78802f477dcbf9ef0dfd9f783' 'e1e318436f49e2f0f3764593dadd9ad2'\ + 'e2a9bf5ab7f2a0866700a3b49dd8c6bf') build() { - cd ${startdir}/src + cd "${srcdir}" for i in *; do if [ -d "${i}" ]; then pushd "${i}" - ./configure --prefix=/usr || return 1 + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done diff --git a/abs/core/xorg-xinit/PKGBUILD b/abs/core/xorg-xinit/PKGBUILD index ffad09c..d66a5cb 100644 --- a/abs/core/xorg-xinit/PKGBUILD +++ b/abs/core/xorg-xinit/PKGBUILD @@ -3,7 +3,7 @@ # Contributor: Jan de Groot pkgname=xorg-xinit pkgver=1.1.0 -pkgrel=1 +pkgrel=2 pkgdesc="X.Org initialisation program " arch=(i686 x86_64) license=('GPL') @@ -23,7 +23,7 @@ options=(!emptydirs) md5sums=('9144097186c3d2454beffe8ac3b53c6e' 'f165d9a52284ef8cd4c8a129463a2b49' '7873d97db30d6c279ed37e3559e7c59d' - 'bb550d3b9a2d2b6cbe6e2667a3a7cd03') + '7a9d2659689a3d64b68758772cff4688') build() { cd ${startdir}/src/xinit-${pkgver} diff --git a/abs/core/xorg-xinit/xserverrc b/abs/core/xorg-xinit/xserverrc index 6a636c1..c880000 100644 --- a/abs/core/xorg-xinit/xserverrc +++ b/abs/core/xorg-xinit/xserverrc @@ -1 +1 @@ -exec /usr/bin/X -nolisten tcp +exec /usr/bin/X -nolisten tcp -logverbose 6 diff --git a/abs/core/xorg-xkb-utils/PKGBUILD b/abs/core/xorg-xkb-utils/PKGBUILD index 5bfac78..15ab306 100644 --- a/abs/core/xorg-xkb-utils/PKGBUILD +++ b/abs/core/xorg-xkb-utils/PKGBUILD @@ -1,33 +1,31 @@ -# $Id: PKGBUILD 4399 2008-07-06 20:26:41Z jgc $ +# $Id: PKGBUILD 18690 2008-11-08 17:01:43Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xorg-xkb-utils -pkgver=7.3 +pkgver=7.4 pkgrel=1 pkgdesc="X.org keyboard utilities" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libxaw' 'libxkbfile') +depends=('libxaw>=1.0.5' 'libxkbfile') makedepends=(pkgconfig) source=(${url}/releases/individual/app/xkbutils-1.0.1.tar.bz2 ${url}/releases/individual/app/xkbcomp-1.0.5.tar.bz2 ${url}/releases/individual/app/xkbevd-1.0.2.tar.bz2 - ${url}/releases/individual/app/xkbprint-1.0.1.tar.bz2 ${url}/releases/individual/app/setxkbmap-1.0.4.tar.bz2) md5sums=('84396a3dd75337caaae29d8fa5616fb1' '6cc96c3e4ed5d9802fe717beac008f19' '68f2a143716c23b566f8509d9498f516' - 'b98ae2d8b21c545b7b322d0b302efefa' '6fab3bb176be9e510c5613d054ef1ca4') build() { - cd ${startdir}/src + cd "${srcdir}" for i in *; do if [ -d "${i}" ]; then pushd "${i}" - ./configure --prefix=/usr + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done diff --git a/abs/core/xosd/PKGBUILD b/abs/core/xosd/PKGBUILD new file mode 100644 index 0000000..e4a87ba --- /dev/null +++ b/abs/core/xosd/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir +# Contributor: Damir Perisa + +pkgname=xosd +pkgver=2.2.14 +pkgrel=1 +pkgdesc="XOSD displays text on your screen. On-Screen-Display-libs for some tools." +arch=("i686" "x86_64") +license=('GPL2') +url="http://www.ignavus.net/software.html" +depends=('libxt' 'libxinerama' 'gdk-pixbuf') +makedepends=('xmms' 'bmp') +options=(!libtool) +#source=("http://www.ignavus.net/xosd-$pkgver.tar.bz2") +source=("http://ftp.de.debian.org/debian/pool/main/x/xosd/xosd_$pkgver.orig.tar.gz") + +build() { + cd $startdir/src/xosd-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg/ install +} + + +md5sums=('4b349fe930e4eee2f504d6c02673e24d') diff --git a/abs/core/xproto/PKGBUILD b/abs/core/xproto/PKGBUILD index bdde6af..be9eccf 100644 --- a/abs/core/xproto/PKGBUILD +++ b/abs/core/xproto/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 3230 2008-06-21 15:50:01Z jgc $ +# $Id: PKGBUILD 29290 2009-03-07 18:46:58Z jgc $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xproto -pkgver=7.0.13 +pkgver=7.0.15 pkgrel=1 pkgdesc="X11 core wire protocol and auxiliary headers" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) -md5sums=('7d26f45dca52632712a696e0631dc17b') +md5sums=('1a2b31430d04340be2e49e8b6445e076') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/xterm/PKGBUILD b/abs/core/xterm/PKGBUILD index ced251a..f3ac735 100644 --- a/abs/core/xterm/PKGBUILD +++ b/abs/core/xterm/PKGBUILD @@ -1,21 +1,22 @@ -# $Id: PKGBUILD 3697 2008-06-29 12:44:48Z jgc $ +# $Id: PKGBUILD 18684 2008-11-08 16:46:33Z jgc $ # ppc Maintainer: Alexander Baldeck # i686 Maintainer: Jan de Groot pkgname=xterm -pkgver=235 +pkgver=237 pkgrel=1 pkgdesc="X Terminal Emulator" arch=(i686 x86_64) url="http://invisible-island.net/xterm/" -depends=('libxft' 'libxaw' 'ncurses' 'xorg-apps') +depends=('libxft' 'libxaw>=1.0.5' 'ncurses' 'xorg-apps') groups=('xorg') source=(ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver}.tgz) -md5sums=('5060cab9cef0ea09a24928f3c7fbde2b') +md5sums=('6d5f9e124fd3e09487f47c66da8c7345') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --libdir=/etc \ + --mandir=/usr/share/man \ --with-app-defaults=/usr/share/X11/app-defaults/ \ --with-x \ --disable-full-tgetent \ @@ -38,6 +39,6 @@ build() { --enable-mini-luit \ --enable-narrowproto || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - chmod 0755 ${startdir}/pkg/usr/bin/xterm || return 1 + make DESTDIR="${pkgdir}" install || return 1 + chmod 0755 "${pkgdir}/usr/bin/xterm" || return 1 } diff --git a/abs/core/xtrans/PKGBUILD b/abs/core/xtrans/PKGBUILD index f1f0b19..dc8a9e3 100644 --- a/abs/core/xtrans/PKGBUILD +++ b/abs/core/xtrans/PKGBUILD @@ -1,21 +1,21 @@ -# $Id: PKGBUILD 4408 2008-07-06 20:48:35Z jgc $ +# $Id: PKGBUILD 26847 2009-02-13 15:27:40Z andyrtr $ # Maintainer: Alexander Baldeck # Contributor: Jan de Groot pkgname=xtrans -pkgver=1.2.1 +pkgver=1.2.3 pkgrel=1 pkgdesc="X transport library" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) -md5sums=('96e142331edd498a9364887b2548f1bb') +md5sums=('f9cf791dfad59cf044e276aab3a71e1d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core/yasm/PKGBUILD b/abs/core/yasm/PKGBUILD new file mode 100644 index 0000000..fcbd935 --- /dev/null +++ b/abs/core/yasm/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 18746 2008-11-08 22:44:05Z aaron $ +# Maintainer: Aaron Griffin +# Contributor: Vinay S Shastry + +pkgname=yasm +pkgver=0.7.2 +pkgrel=1 +pkgdesc="A rewrite of NASM to allow for multiple syntax supported (NASM, TASM, GAS, etc.)" +arch=('i686' 'x86_64') +license=('custom') +url="http://www.tortall.net/projects/yasm/" +depends=('glibc') +source=(http://www.tortall.net/projects/yasm/releases/$pkgname-$pkgver.tar.gz) +options=('!libtool') +md5sums=('cc9360593de5625dca286f0bfcb27dd5') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + install -Dm644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/core/zoneminder/Makefile.patch b/abs/core/zoneminder/Makefile.patch new file mode 100644 index 0000000..d033e72 --- /dev/null +++ b/abs/core/zoneminder/Makefile.patch @@ -0,0 +1,13 @@ +--- ZoneMinder-1.23.3.orig/Makefile 2008-03-13 17:41:47.000000000 -0700 ++++ ZoneMinder-1.23.3/Makefile 2008-03-15 06:21:22.000000000 -0700 +@@ -687,8 +687,8 @@ + # Yes, you are correct. This is a HACK! + install-data-hook: + ( cd $(DESTDIR)$(sysconfdir); chown $(webuser):$(webgroup) $(sysconf_DATA); chmod 600 $(sysconf_DATA) ) +- -( if ! test -e $(RUNDIR); then mkdir $(RUNDIR); fi ) +- ( if ! test -e $(ZM_RUNDIR); then mkdir $(ZM_RUNDIR); fi; chown $(webuser):$(webgroup) $(ZM_RUNDIR); chmod u+w $(ZM_RUNDIR) ) ++ -( if ! test -e$(DESTDIR)$(RUNDIR); then mkdir -p $(DESTDIR)$(RUNDIR); fi ) ++ ( if ! test -e $(DESTDIR)$(ZM_RUNDIR); then mkdir -p $(DESTDIR)$(ZM_RUNDIR); fi; chown $(webuser):$(webgroup) $(DESTDIR)$(ZM_RUNDIR); chmod u+w $(DESTDIR)$(ZM_RUNDIR) ) + + uninstall-hook: + @-( cd $(DESTDIR)$(webdir); rm -rf events graphics images sounds temp ) diff --git a/abs/core/zoneminder/PKGBUILD b/abs/core/zoneminder/PKGBUILD new file mode 100644 index 0000000..94a543a --- /dev/null +++ b/abs/core/zoneminder/PKGBUILD @@ -0,0 +1,93 @@ +# This is a ZoneMinder PKGBUILD file. +# Contributor: Ross melin + +pkgname=zoneminder +pkgver=1.23.3 +pkgrel=10 +pkgdesc="Capture, analyse, record and monitor video security cameras." +arch=('i686') +url="http://www.zoneminder.com" +license=('GPL') +groups=() +depends=('lighttpd' 'php' 'mysql' 'pcre' 'gnutls' 'ffmpeg' 'perl-php-serialization' 'perl-libwww' 'perl-date-manip' 'perl-unicode-map' 'perl-dbi' 'perl-dbd-mysql' 'perl-io-stringy' 'perl-mime-lite' 'perl-timedate' 'perl-x10' 'perl-time-modules') +makedepends=() +provides=(zoneminder) +conflicts=() +replaces=() +backup=(etc/zm.conf) +options=() +install=zoneminder.install +source=(http://www2.zoneminder.com/downloads/ZoneMinder-$pkgver.tar.gz \ + zm.rc.d \ + zm.conf.patch \ + zmupdate.patch \ + Makefile.patch \ + zminit.arch \ + customdb \ + mootools.v1.11.js \ + http://www.charliemouse.com:8080/code/cambozola/cambozola-0.50.tar.gz \ + zmeventdump \ + run) +noextract=() +md5sums=('ee803f0f71d6e67adf602c3557fb6bc9' + 'af8631abe20cd7dcab1a023af7d4f3e8' + '1a6c94411f8adb53a10dc7c19c3bbf02' + '320dd41725945218de0672f899e1d739' + '818cec2eba7e1efb3f5c410f6dd8d528' + 'f9720872736f26d17bc49d8725b75ae4' + 'f0c4b80b3c2f1e0fe90d7b52191b7e51' + '0df5bf23f9b09f0cae2e7f0a9e0ef16e' + 'daded58688e16ab513920a54a0599267' + '3046d91dde4a753867c62aba985c647e') + +build() { + cd "$srcdir/ZoneMinder-$pkgver" + + patch -p1 < $startdir/src/zm.conf.patch + patch -p1 < $startdir/src/zmupdate.patch + + sed -i 's|||' $srcdir/ZoneMinder-$pkgver/src/zm_mpeg.h + sed -i 's|||' $srcdir/ZoneMinder-$pkgver/src/zm_mpeg.h + sed -i 's|--- Created by|-- Created by|' $srcdir/ZoneMinder-$pkgver/scripts/zmdbbackup.in + + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --with-webuser=http \ + --with-webgroup=http \ + --with-mysql=/usr \ + --with-webdir=/data/srv/httpd/htdocs/zm \ + --with-cgidir=/data/srv/httpd/htdocs/cgi-bin \ + --bindir=/usr/lib/zm/bin + + patch -p1 < $startdir/src/Makefile.patch + make || return 1 + make DESTDIR="$pkgdir" install || return 1 + + install -D -m 700 $startdir/src/zminit.arch $startdir/pkg/usr/lib/zm/bin/zminit + install -D -m 700 $startdir/src/zm.rc.d $startdir/pkg/etc/rc.d/zm + install -D -m 700 scripts/zmdbbackup $startdir/pkg/usr/lib/zm/bin/zmdbbackup + install -D -m 700 scripts/zmdbbackup $startdir/pkg/usr/lib/zm/bin/zmdbbackup + install -D -m 700 scripts/zmdbrestore $startdir/pkg/usr/lib/zm/bin/zmdbrestore + install -D -m 700 scripts/zmlogrotate.conf $startdir/pkg/etc/logrotate.d/zm + install -D -m 700 $startdir/src/zmeventdump $startdir/pkg/etc/cron.hourly/zmeventdump + + tar -zxf $startdir/src/cambozola-0.50.tar.gz + install -m 644 cambozola-0.50/dist/cambozola.jar $startdir/pkg/data/srv/httpd/htdocs/zm/cambozola.jar + + install $startdir/src/mootools.v1.11.js $startdir/pkg/data/srv/httpd/htdocs/zm/mootools.js + install -D -m 700 $startdir/src/customdb $startdir/pkg/usr/lib/zm/upgrade/customdb + install -D db/zm*.sql $startdir/pkg/usr/lib/zm/upgrade/ + + mkdir -p $startdir/pkg/var/run/zm + + ### remove special files + find $startdir/pkg/ -name "perllocal.pod" \ + -o -name ".packlist" \ + -o -name "*.bs" \ + |xargs -i rm -f {} + mkdir -p $pkgdir/etc/sv/zm + install -D -m 755 $srcdir/run $pkgdir/etc/sv/zm + +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core/zoneminder/customdb b/abs/core/zoneminder/customdb new file mode 100755 index 0000000..93ce7fe --- /dev/null +++ b/abs/core/zoneminder/customdb @@ -0,0 +1,31 @@ +#!/bin/sh +DBHOST=$1 +DBNAME=$2 +USERNAME=$3 +PASSWORD=$4 + +ZM_PATH_ZMS=/cgi-bin/nph-zms +ZM_PATH_SOCKS=/var/lib/zm +ZM_PATH_LOGS=/var/log/zm +ZM_WEB_LIST_THUMBS=1 +ZM_WEB_MONTAGE_WIDTH=320 +ZM_WEB_MONTAGE_HEIGHT=240 +ZM_OPT_CAMBOZOLA=1 +ZM_OPT_MPEG=ffmpeg +ZM_PATH_FFMPEG=/usr/bin/ffmpeg +ZM_OPT_NETPBM=1 +ZM_EXTRA_DEBUG_LOG=/var/log/zm/zm_debug.log+ +ZM_OPT_USE_AUTH=0 + +sql=/tmp/$$ +echo "" >$sql +for n in ZM_PATH_ZMS ZM_PATH_SOCKS ZM_PATH_LOGS ZM_WEB_LIST_THUMBS ZM_WEB_MONTAGE_WIDTH ZM_WEB_MONTAGE_HEIGHT ZM_OPT_CAMBOZOLA ZM_OPT_MPEG ZM_PATH_FFMPEG ZM_OPT_NETPBM ZM_EXTRA_DEBUG_LOG ZM_OPT_USE_AUTH; do + eval "val=\$$n" + echo "UPDATE Config SET Value='$val' WHERE Name='$n';" >>$sql +done + +cat $sql | mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST $DBNAME +rm -f $sql + + +exit 0 diff --git a/abs/core/zoneminder/mootools.v1.11.js b/abs/core/zoneminder/mootools.v1.11.js new file mode 100644 index 0000000..154284c --- /dev/null +++ b/abs/core/zoneminder/mootools.v1.11.js @@ -0,0 +1,3 @@ +//MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006-2007 Valerio Proietti, , MIT Style License. + +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('o ci={cj:\'1.11\'};k $77(N){m(N!=9N)};k $F(N){B(!$77(N))m O;B(N.5i)m\'G\';o F=7c N;B(F==\'2I\'&&N.ch){22(N.84){Y 1:m\'G\';Y 3:m(/\\S/).2v(N.ax)?\'cg\':\'cd\'}}B(F==\'2I\'||F==\'k\'){22(N.9C){Y 2t:m\'1z\';Y 7y:m\'5C\';Y 18:m\'4R\'}B(7c N.V==\'4M\'){B(N.3r)m\'ce\';B(N.8t)m\'1b\'}}m F};k $2a(){o 54={};M(o i=0;i<1b.V;i++){M(o K 1a 1b[i]){o ap=1b[i][K];o 6d=54[K];B(6d&&$F(ap)==\'2I\'&&$F(6d)==\'2I\')54[K]=$2a(6d,ap);14 54[K]=ap}}m 54};o $R=k(){o 1p=1b;B(!1p[1])1p=[c,1p[0]];M(o K 1a 1p[1])1p[0][K]=1p[1][K];m 1p[0]};o $5e=k(){M(o i=0,l=1b.V;i-1:c.3k(2z)>-1},b5:k(){m c.3g(/([.*+?^${}()|[\\]\\/\\\\])/g,\'\\\\$1\')}});2t.R({5E:k(1z){B(c.V<3)m O;B(c.V==4&&c[3]==0&&!1z)m\'c2\';o 3C=[];M(o i=0;i<3;i++){o 5d=(c[i]-0).4l(16);3C.1k((5d.V==1)?\'0\'+5d:5d)}m 1z?3C:\'#\'+3C.2c(\'\')},5G:k(1z){B(c.V!=3)m O;o 1s=[];M(o i=0;i<3;i++){1s.1k(5O((c[i].V==1)?c[i]+c[i]:c[i],16))}m 1z?1s:\'1s(\'+1s.2c(\',\')+\')\'}});7Z.R({3a:k(C){o fn=c;C=$2a({\'W\':fn,\'I\':O,\'1b\':1n,\'2g\':O,\'4f\':O,\'6f\':O},C);B($2A(C.1b)&&$F(C.1b)!=\'1z\')C.1b=[C.1b];m k(I){o 1p;B(C.I){I=I||U.I;1p=[(C.I===1e)?I:L C.I(I)];B(C.1b)1p.R(C.1b)}14 1p=C.1b||1b;o 3N=k(){m fn.4j($4T(C.W,fn),1p)};B(C.2g)m 9M(3N,C.2g);B(C.4f)m c3(3N,C.4f);B(C.6f)5j{m 3N()}5c(c9){m O};m 3N()}},bT:k(1p,W){m c.3a({\'1b\':1p,\'W\':W})},6f:k(1p,W){m c.3a({\'1b\':1p,\'W\':W,\'6f\':1e})()},W:k(W,1p){m c.3a({\'W\':W,\'1b\':1p})},c8:k(W,1p){m c.3a({\'W\':W,\'I\':1e,\'1b\':1p})},2g:k(2g,W,1p){m c.3a({\'2g\':2g,\'W\':W,\'1b\':1p})()},4f:k(aV,W,1p){m c.3a({\'4f\':aV,\'W\':W,\'1b\':1p})()}});aN.R({3d:k(){m 5O(c)},aH:k(){m 66(c)},1F:k(3s,1D){m 1c.3s(1D,1c.1D(3s,c))},2q:k(5Y){5Y=1c.3w(10,5Y||0);m 1c.2q(c*5Y)/5Y},c7:k(fn){M(o i=0;i\'}el=Q.aJ(el)}el=$(el);m(!1U||!el)?el:el.2j(1U)}});o 26=L 18({1i:k(T){m(T)?$R(T,c):c}});26.R=k(1U){M(o 1V 1a 1U){c.1L[1V]=1U[1V];c[1V]=$5e.6x(1V)}};k $(el){B(!el)m 1n;B(el.5i)m 2F.52(el);B([U,Q].1j(el))m el;o F=$F(el);B(F==\'2z\'){el=Q.6W(el);F=(el)?\'G\':O}B(F!=\'G\')m 1n;B(el.5i)m 2F.52(el);B([\'2I\',\'c4\'].1j(el.6S.5L()))m el;$R(el,P.1L);el.5i=k(){};m 2F.52(el)};Q.6Y=Q.33;k $$(){o T=[];M(o i=0,j=1b.V;i0&&6Q<13)c.1t=\'f\'+6Q}c.1t=c.1t||6i.bA(c.6O).5L()}14 B(c.F.2v(/(6h|3m|bw)/)){c.1Y={\'x\':I.8E||I.9f+Q.2Z.5V,\'y\':I.8w||I.at+Q.2Z.63};c.9B={\'x\':I.8E?I.8E-U.99:I.9f,\'y\':I.8w?I.8w-U.9i:I.at};c.bR=(I.9K==3)||(I.bv==2);22(c.F){Y\'90\':c.2o=I.2o||I.ca;1C;Y\'8Y\':c.2o=I.2o||I.8A}c.aU()}m c},1R:k(){m c.6U().6X()},6U:k(){B(c.I.6U)c.I.6U();14 c.I.db=1e;m c},6X:k(){B(c.I.6X)c.I.6X();14 c.I.eK=O;m c}});2X.6m={2o:k(){B(c.2o&&c.2o.84==3)c.2o=c.2o.3n},aD:k(){5j{2X.6m.2o.1X(c)}5c(e){c.2o=c.3v}}};2X.1L.aU=(U.8r)?2X.6m.aD:2X.6m.2o;2X.1O=L 3M({\'eL\':13,\'6P\':38,\'eJ\':40,\'1u\':37,\'4n\':39,\'eI\':27,\'eF\':32,\'eG\':8,\'eH\':9,\'57\':46});P.2H.2p={1B:k(F,fn){c.$19=c.$19||{};c.$19[F]=c.$19[F]||{\'1O\':[],\'1I\':[]};B(c.$19[F].1O.1j(fn))m c;c.$19[F].1O.1k(fn);o 76=F;o 2w=P.2p[F];B(2w){B(2w.7F)2w.7F.1X(c,fn);B(2w.2D)fn=2w.2D;B(2w.F)76=2w.F}B(!c.8j)fn=fn.3a({\'W\':c,\'I\':1e});c.$19[F].1I.1k(fn);m(P.8V.1j(76))?c.2C(76,fn):c},4C:k(F,fn){B(!c.$19||!c.$19[F])m c;o 1m=c.$19[F].1O.3k(fn);B(1m==-1)m c;o 1t=c.$19[F].1O.74(1m,1)[0];o J=c.$19[F].1I.74(1m,1)[0];o 2w=P.2p[F];B(2w){B(2w.2K)2w.2K.1X(c,fn);B(2w.F)F=2w.F}m(P.8V.1j(F))?c.3h(F,J):c},6j:k(1Z){m P.72(c,\'1B\',1Z)},78:k(F){B(!c.$19)m c;B(!F){M(o 6g 1a c.$19)c.78(6g);c.$19=1n}14 B(c.$19[F]){c.$19[F].1O.1q(k(fn){c.4C(F,fn)},c);c.$19[F]=1n}m c},1h:k(F,1p,2g){B(c.$19&&c.$19[F]){c.$19[F].1O.1q(k(fn){fn.3a({\'W\':c,\'2g\':2g,\'1b\':1p})()},c)}m c},au:k(15,F){B(!15.$19)m c;B(!F){M(o 6g 1a 15.$19)c.au(15,6g)}14 B(15.$19[F]){15.$19[F].1O.1q(k(fn){c.1B(F,fn)},c)}m c}};U.R(P.2H.2p);Q.R(P.2H.2p);P.R(P.2H.2p);P.2p=L 3M({\'8N\':{F:\'90\',2D:k(I){I=L 2X(I);B(I.2o!=c&&!c.8o(I.2o))c.1h(\'8N\',I)}},\'8P\':{F:\'8Y\',2D:k(I){I=L 2X(I);B(I.2o!=c&&!c.8o(I.2o))c.1h(\'8P\',I)}},\'5a\':{F:(U.8r)?\'8b\':\'5a\'}});P.8V=[\'6h\',\'eM\',\'5z\',\'5n\',\'5a\',\'8b\',\'90\',\'8Y\',\'2M\',\'9X\',\'eN\',\'eS\',\'4e\',\'7v\',\'9t\',\'eT\',\'5o\',\'eR\',\'eQ\',\'3F\',\'eO\',\'eP\',\'48\',\'aE\',\'8s\',\'eE\',\'2G\'];7Z.R({3e:k(W,1p){m c.3a({\'W\':W,\'1b\':1p,\'I\':2X})}});26.R({eV:k(3q){m L 26(c.36(k(el){m(P.4D(el)==3q)}))},a8:k(1A,2J){o T=c.36(k(el){m(el.1A&&el.1A.1j(1A,\' \'))});m(2J)?T:L 26(T)},a2:k(4u,2J){o T=c.36(k(el){m(el.4u==4u)});m(2J)?T:L 26(T)},a9:k(1w,82,J,2J){o T=c.36(k(el){o 2i=P.5R(el,1w);B(!2i)m O;B(!82)m 1e;22(82){Y\'=\':m(2i==J);Y\'*=\':m(2i.1j(J));Y\'^=\':m(2i.6K(0,J.V)==J);Y\'$=\':m(2i.6K(2i.V-J.V)==J);Y\'!=\':m(2i!=J);Y\'~=\':m 2i.1j(J,\' \')}m O});m(2J)?T:L 26(T)}});k $E(1S,36){m($(36)||Q).9P(1S)};k $et(1S,36){m($(36)||Q).6Y(1S)};$$.3B={\'5C\':/^(\\w*|\\*)(?:#([\\w-]+)|\\.([\\w-]+))?(?:\\[(\\w+)(?:([!*^$]?=)["\']?([^"\'\\]]*)["\']?)?])?$/,\'4a\':{7L:k(1x,3b,1d,i){o 2r=[3b.eu?\'7N:\':\'\',1d[1]];B(1d[2])2r.1k(\'[@4u="\',1d[2],\'"]\');B(1d[3])2r.1k(\'[1j(7P(" ", @4R, " "), " \',1d[3],\' ")]\');B(1d[4]){B(1d[5]&&1d[6]){22(1d[5]){Y\'*=\':2r.1k(\'[1j(@\',1d[4],\', "\',1d[6],\'")]\');1C;Y\'^=\':2r.1k(\'[es-er(@\',1d[4],\', "\',1d[6],\'")]\');1C;Y\'$=\':2r.1k(\'[eo(@\',1d[4],\', 2z-V(@\',1d[4],\') - \',1d[6].V,\' + 1) = "\',1d[6],\'"]\');1C;Y\'=\':2r.1k(\'[@\',1d[4],\'="\',1d[6],\'"]\');1C;Y\'!=\':2r.1k(\'[@\',1d[4],\'!="\',1d[6],\'"]\')}}14{2r.1k(\'[@\',1d[4],\']\')}}1x.1k(2r.2c(\'\'));m 1x},7O:k(1x,3b,2J){o T=[];o 4a=Q.5r(\'.//\'+1x.2c(\'//\'),3b,$$.3B.ac,ep.eq,1n);M(o i=0,j=4a.ev;i<\\/2s>\');$(\'7I\').7i=k(){B(c.5m==\'8p\')5X()}}}14{U.2C("4e",5X);Q.2C("fe",5X)}}};U.fm=k(fn){m c.1B(\'7S\',fn)};U.R({8m:k(){B(c.5x)m c.fl;B(c.9a)m Q.4B.9c;m Q.2Z.9c},8n:k(){B(c.5x)m c.fo;B(c.9a)m Q.4B.9d;m Q.2Z.9d},93:k(){B(c.2P)m 1c.1D(Q.2Z.4b,Q.2Z.71);B(c.4x)m Q.4B.71;m Q.2Z.71},92:k(){B(c.2P)m 1c.1D(Q.2Z.3R,Q.2Z.5P);B(c.4x)m Q.4B.5P;m Q.2Z.5P},8u:k(){m c.99||Q.2Z.5V},8v:k(){m c.9i||Q.2Z.63},7g:k(){m{\'3l\':{\'x\':c.8m(),\'y\':c.8n()},\'7h\':{\'x\':c.93(),\'y\':c.92()},\'2G\':{\'x\':c.8u(),\'y\':c.8v()}}},3p:k(){m{\'x\':0,\'y\':0}}});o 1f={};1f.2T=L 18({C:{3X:18.1l,1Q:18.1l,7w:18.1l,2f:k(p){m-(1c.av(1c.7W*p)-1)/2},49:fb,2x:\'4W\',3T:1e,98:50},1i:k(C){c.G=c.G||1n;c.2Y(C);B(c.C.1i)c.C.1i.1X(c)},2n:k(){o 3A=$3A();B(3A=(7-4*a)/11){J=-1c.3w((11-6*a-11*p)/4,2)+b*b;1C}}m J},ds:k(p,x){m 1c.3w(2,10*--p)*1c.av(20*p*1c.7W*(x[0]||1)/3)}});[\'dt\',\'dz\',\'dA\',\'dG\'].1q(k(2f,i){1f.3o[2f]=L 1f.7U(k(p){m 1c.3w(p,[i+2])});1f.3o.7X(2f)});o 4g={};4g.2T=L 18({C:{3J:O,2x:\'4W\',3X:18.1l,al:18.1l,1Q:18.1l,as:18.1l,8S:18.1l,1F:O,3E:{x:\'1u\',y:\'1o\'},4P:O,6M:6},1i:k(el,C){c.2Y(C);c.G=$(el);c.3J=$(c.C.3J)||c.G;c.3m={\'12\':{},\'1m\':{}};c.J={\'1g\':{},\'12\':{}};c.1G={\'1g\':c.1g.3e(c),\'4i\':c.4i.3e(c),\'3D\':c.3D.3e(c),\'1R\':c.1R.W(c)};c.6V();B(c.C.1i)c.C.1i.1X(c)},6V:k(){c.3J.1B(\'5n\',c.1G.1g);m c},9F:k(){c.3J.4C(\'5n\',c.1G.1g);m c},1g:k(I){c.1h(\'al\',c.G);c.3m.1g=I.1Y;o 1F=c.C.1F;c.1F={\'x\':[],\'y\':[]};M(o z 1a c.C.3E){B(!c.C.3E[z])6l;c.J.12[z]=c.G.2h(c.C.3E[z]).3d();c.3m.1m[z]=I.1Y[z]-c.J.12[z];B(1F&&1F[z]){M(o i=0;i<2;i++){B($2A(1F[z][i]))c.1F[z][i]=($F(1F[z][i])==\'k\')?1F[z][i]():1F[z][i]}}}B($F(c.C.4P)==\'4M\')c.C.4P={\'x\':c.C.4P,\'y\':c.C.4P};Q.2C(\'2M\',c.1G.4i);Q.2C(\'5z\',c.1G.1R);c.1h(\'3X\',c.G);I.1R()},4i:k(I){o ao=1c.2q(1c.dH(1c.3w(I.1Y.x-c.3m.1g.x,2)+1c.3w(I.1Y.y-c.3m.1g.y,2)));B(ao>c.C.6M){Q.3h(\'2M\',c.1G.4i);Q.2C(\'2M\',c.1G.3D);c.3D(I);c.1h(\'as\',c.G)}I.1R()},3D:k(I){c.69=O;c.3m.12=I.1Y;M(o z 1a c.C.3E){B(!c.C.3E[z])6l;c.J.12[z]=c.3m.12[z]-c.3m.1m[z];B(c.1F[z]){B($2A(c.1F[z][1])&&(c.J.12[z]>c.1F[z][1])){c.J.12[z]=c.1F[z][1];c.69=1e}14 B($2A(c.1F[z][0])&&(c.J.12[z]el.1u&&12.xel.1o)},1R:k(){B(c.3f&&!c.69)c.3f.1h(\'dC\',[c.G,c]);14 c.G.1h(\'dD\',c);c.1r();m c}});P.R({dq:k(C){m L 4g.aM(c,C)}});o 6n=L 18({C:{23:\'59\',be:1e,9g:18.1l,5h:18.1l,6w:18.1l,aG:1e,5J:\'dp-8\',aZ:O,4J:{}},7q:k(){c.2u=(U.6C)?L 6C():(U.2P?L 9o(\'en.dc\'):O);m c},1i:k(C){c.7q().2Y(C);c.C.5D=c.C.5D||c.5D;c.4J={};B(c.C.aG&&c.C.23==\'59\'){o 5J=(c.C.5J)?\'; dd=\'+c.C.5J:\'\';c.5l(\'9R-F\',\'9J/x-aS-da-d9\'+5J)}B(c.C.1i)c.C.1i.1X(c)},9s:k(){B(c.2u.5m!=4||!c.4Q)m;c.4Q=O;o 4I=0;5j{4I=c.2u.4I}5c(e){};B(c.C.5D.1X(c,4I))c.5h();14 c.6w();c.2u.7i=18.1l},5D:k(4I){m((4I>=d6)&&(4I]*>([\\s\\S]*?)<\\/2s>/dJ;6Z((2s=5C.e9(c.3L.1K)))3y.1k(2s[1]);3y=3y.2c(\'\\n\')}B(3y)(U.9O)?U.9O(3y):U.9M(3y,0)},af:k(1w){5j{m c.2u.ea(1w)}5c(e){};m 1n}});8X.5A=k(1Z){o 5f=[];M(o K 1a 1Z)5f.1k(7e(K)+\'=\'+7e(1Z[K]));m 5f.2c(\'&\')};P.R({6a:k(C){m L 9b(c.5R(\'eb\'),$2a({1T:c.5A()},C,{23:\'59\'})).9h()}});o 3H=L 3M({C:{7o:O,7k:O,49:O,5g:O},2j:k(1t,J,C){C=$2a(c.C,C);J=7e(J);B(C.7o)J+=\'; 7o=\'+C.7o;B(C.7k)J+=\'; 7k=\'+C.7k;B(C.49){o 6k=L 96();6k.e8(6k.9w()+C.49*24*60*60*bd);J+=\'; e7=\'+6k.e4()}B(C.5g)J+=\'; 5g\';Q.4K=1t+\'=\'+J;m $R(C,{\'1t\':1t,\'J\':J})},5q:k(1t){o J=Q.4K.31(\'(?:^|;)\\\\s*\'+1t.b5()+\'=([^;]*)\');m J?e5(J[1]):O},2K:k(4K,C){B($F(4K)==\'2I\')c.2j(4K.1t,\'\',$2a(4K,{49:-1}));14 c.2j(4K,\'\',$2a(C,{49:-1}))}});o 3I={4l:k(N){22($F(N)){Y\'2z\':m\'"\'+N.3g(/(["\\\\])/g,\'\\\\$1\')+\'"\';Y\'1z\':m\'[\'+N.2D(3I.4l).2c(\',\')+\']\';Y\'2I\':o 2z=[];M(o K 1a N)2z.1k(3I.4l(K)+\':\'+3I.4l(N[K]));m\'{\'+2z.2c(\',\')+\'}\';Y\'4M\':B(e6(N))1C;Y O:m\'1n\'}m 6i(N)},5r:k(4H,5g){m(($F(4H)!=\'2z\')||(5g&&!4H.2v(/^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+ec-u \\n\\r\\t])+?$/)))?1n:ed(\'(\'+4H+\')\')}};3I.ej=6n.R({1i:k(2L,C){c.2L=2L;c.1B(\'5h\',c.1Q);c.1r(C);c.5l(\'X-ek\',\'ei\')},6a:k(N){m c.1r(c.2L,\'eh=\'+3I.4l(N))},1Q:k(){c.1h(\'1Q\',[3I.5r(c.3L.1K,c.C.5g)])}});o ar=L 3M({8q:k(1Z,1J){1J=$2a({\'5N\':18.1l},1J);o 2s=L P(\'2s\',{\'4s\':1Z}).6j({\'4e\':1J.5N,\'ee\':k(){B(c.5m==\'8p\')c.1h(\'4e\')}});57 1J.5N;m 2s.6o(1J).28(Q.6e)},1y:k(1Z,1J){m L P(\'4y\',$2a({\'a1\':\'ef\',\'eg\':\'e3\',\'F\':\'1K/1y\',\'4N\':1Z},1J)).28(Q.6e)},4S:k(1Z,1J){1J=$2a({\'5N\':18.1l,\'e2\':18.1l,\'dP\':18.1l},1J);o 4S=L dQ();4S.4s=1Z;o G=L P(\'8x\',{\'4s\':1Z});[\'4e\',\'8s\',\'aE\'].1q(k(F){o I=1J[\'67\'+F];57 1J[\'67\'+F];G.1B(F,k(){c.4C(F,1b.8t);I.1X(c)})});B(4S.2y&&4S.2N)G.1h(\'4e\',G,1);m G.6o(1J)},6s:k(58,C){C=$2a({1Q:18.1l,an:18.1l},C);B(!58.1k)58=[58];o 6s=[];o 6q=0;58.1q(k(1Z){o 8x=L ar.4S(1Z,{\'5N\':k(){C.an.1X(c,6q);6q++;B(6q==58.V)C.1Q()}});6s.1k(8x)});m L 26(6s)}});o 3O=L 18({V:0,1i:k(2I){c.N=2I||{};c.5K()},5q:k(1t){m(c.6t(1t))?c.N[1t]:1n},6t:k(1t){m(1t 1a c.N)},2j:k(1t,J){B(!c.6t(1t))c.V++;c.N[1t]=J;m c},5K:k(){c.V=0;M(o p 1a c.N)c.V++;m c},2K:k(1t){B(c.6t(1t)){57 c.N[1t];c.V--}m c},1q:k(fn,W){$1q(c.N,fn,W)},R:k(N){$R(c.N,N);m c.5K()},2a:k(){c.N=$2a.4j(1n,[c.N].R(1b));m c.5K()},1l:k(){c.N={};c.V=0;m c},1O:k(){o 1O=[];M(o K 1a c.N)1O.1k(K);m 1O},1I:k(){o 1I=[];M(o K 1a c.N)1I.1k(c.N[K]);m 1I}});k $H(N){m L 3O(N)};3O.3H=3O.R({1i:k(1w,C){c.1w=1w;c.C=$R({\'aw\':1e},C||{});c.4e()},aX:k(){B(c.V==0){3H.2K(c.1w,c.C);m 1e}o 4H=3I.4l(c.N);B(4H.V>dR)m O;3H.2j(c.1w,4H,c.C);m 1e},4e:k(){c.N=3I.5r(3H.5q(c.1w),1e)||{};c.5K()}});3O.3H.2H={};[\'R\',\'2j\',\'2a\',\'1l\',\'2K\'].1q(k(23){3O.3H.2H[23]=k(){3O.1L[23].4j(c,1b);B(c.C.aw)c.aX();m c}});3O.3H.3i(3O.3H.2H);o 2Q=L 18({1i:k(2E,F){F=F||(2E.1k?\'1s\':\'3C\');o 1s,2m;22(F){Y\'1s\':1s=2E;2m=1s.8h();1C;Y\'2m\':1s=2E.b9();2m=2E;1C;62:1s=2E.5G(1e);2m=1s.8h()}1s.2m=2m;1s.3C=1s.5E();m $R(1s,2Q.1L)},54:k(){o 5I=$A(1b);o 7d=($F(5I[5I.V-1])==\'4M\')?5I.dO():50;o 1s=c.8e();5I.1q(k(2E){2E=L 2Q(2E);M(o i=0;i<3;i++)1s[i]=1c.2q((1s[i]/ 35 * (35 - 7d)) + (2E[i] /35*7d))});m L 2Q(1s,\'1s\')},dN:k(){m L 2Q(c.2D(k(J){m 51-J}))},dK:k(J){m L 2Q([J,c.2m[1],c.2m[2]],\'2m\')},dL:k(7a){m L 2Q([c.2m[0],7a,c.2m[2]],\'2m\')},dM:k(7a){m L 2Q([c.2m[0],c.2m[1],7a],\'2m\')}});k $dS(r,g,b){m L 2Q([r,g,b],\'1s\')};k $dT(h,s,b){m L 2Q([h,s,b],\'2m\')};2t.R({8h:k(){o 5W=c[0],65=c[1],75=c[2];o 2W,6y,8k;o 1D=1c.1D(5W,65,75),3s=1c.3s(5W,65,75);o 4p=1D-3s;8k=1D/51;6y=(1D!=0)?4p/1D:0;B(6y==0){2W=0}14{o 8l=(1D-5W)/4p;o 8W=(1D-65)/4p;o br=(1D-75)/4p;B(5W==1D)2W=br-8W;14 B(65==1D)2W=2+8l-br;14 2W=4+8W-8l;2W/=6;B(2W<0)2W++}m[1c.2q(2W*bc),1c.2q(6y*35),1c.2q(8k*35)]},b9:k(){o br=1c.2q(c[2]/35*51);B(c[1]==0){m[br,br,br]}14{o 2W=c[0]%bc;o f=2W%60;o p=1c.2q((c[2]*(35-c[1]))/dZ*51);o q=1c.2q((c[2]*(b7-c[1]*f))/bm*51);o t=1c.2q((c[2]*(b7-c[1]*(60-f)))/bm*51);22(1c.9q(2W/60)){Y 0:m[br,t,p];Y 1:m[q,br,p];Y 2:m[p,br,t];Y 3:m[p,q,br];Y 4:m[t,p,br];Y 5:m[br,p,q]}}m O}});o 9x=L 18({C:{6b:20,8O:1,6F:k(x,y){c.G.3G(x,y)}},1i:k(G,C){c.2Y(C);c.G=$(G);c.8y=([U,Q].1j(G))?$(Q.4B):c.G},1g:k(){c.8z=c.9A.3e(c);c.8y.2C(\'2M\',c.8z)},1R:k(){c.8y.3h(\'2M\',c.8z);c.1H=$55(c.1H)},9A:k(I){c.1Y=(c.G==U)?I.9B:I.1Y;B(!c.1H)c.1H=c.2G.4f(50,c)},2G:k(){o el=c.G.7g();o 1m=c.G.3p();o 3F={\'x\':0,\'y\':0};M(o z 1a c.1Y){B(c.1Y[z]<(c.C.6b+1m[z])&&el.2G[z]!=0)3F[z]=(c.1Y[z]-c.C.6b-1m[z])*c.C.8O;14 B(c.1Y[z]+c.C.6b>(el.3l[z]+1m[z])&&el.2G[z]+el.3l[z]!=el.7h[z])3F[z]=(c.1Y[z]-el.3l[z]+c.C.6b-1m[z])*c.C.8O}B(3F.y||3F.x)c.1h(\'6F\',[el.2G.x+3F.x,el.2G.y+3F.y])}});9x.3i(L 2p,L 43);o 8B=L 18({C:{6F:18.1l,1Q:18.1l,8L:k(1m){c.4h.1P(c.p,1m)},2b:\'8M\',6E:35,1E:0},1i:k(el,4h,C){c.G=$(el);c.4h=$(4h);c.2Y(C);c.8K=-1;c.8D=-1;c.2n=-1;c.G.1B(\'5n\',c.9D.3e(c));o 6H,1E;22(c.C.2b){Y\'8M\':c.z=\'x\';c.p=\'1u\';6H={\'x\':\'1u\',\'y\':O};1E=\'4b\';1C;Y\'8Q\':c.z=\'y\';c.p=\'1o\';6H={\'x\':O,\'y\':\'1o\'};1E=\'3R\'}c.1D=c.G[1E]-c.4h[1E]+(c.C.1E*2);c.a5=c.4h[1E]/2;c.ai=c.G[\'5q\'+c.p.8R()].W(c.G);c.4h.1P(\'1v\',\'70\').1P(c.p,-c.C.1E);o 8U={};8U[c.z]=[-c.C.1E,c.1D-c.C.1E];c.3D=L 4g.2T(c.4h,{1F:8U,3E:6H,6M:0,3X:k(){c.6L()}.W(c),8S:k(){c.6L()}.W(c),1Q:k(){c.6L();c.29()}.W(c)});B(c.C.1i)c.C.1i.1X(c)},2j:k(2n){c.2n=2n.1F(0,c.C.6E);c.6G();c.29();c.1h(\'8L\',c.a0(c.2n));m c},9D:k(I){o 1v=I.1Y[c.z]-c.ai()-c.a5;1v=1v.1F(-c.C.1E,c.1D-c.C.1E);c.2n=c.8C(1v);c.6G();c.29();c.1h(\'8L\',1v)},6L:k(){c.2n=c.8C(c.3D.J.12[c.z]);c.6G()},6G:k(){B(c.8K!=c.2n){c.8K=c.2n;c.1h(\'6F\',c.2n)}},29:k(){B(c.8D!==c.2n){c.8D=c.2n;c.1h(\'1Q\',c.2n+\'\')}},8C:k(1v){m 1c.2q((1v+c.C.1E)/c.1D*c.C.6E)},a0:k(2n){m c.1D*2n/c.C.6E}});8B.3i(L 2p);8B.3i(L 43);o e0=1f.ah.R({1i:k(C){c.1r(U,C);c.5w=(c.C.5w)?$$(c.C.5w):$$(Q.5w);o 5k=U.5k.4N.31(/^[^#]*/)[0]+\'#\';c.5w.1q(k(4y){B(4y.4N.3k(5k)!=0)m;o 3K=4y.4N.6K(5k.V);B(3K&&$(3K))c.9L(4y,3K)},c);B(!U.5x)c.1B(\'1Q\',k(){U.5k.e1=c.3K})},9L:k(4y,3K){4y.1B(\'6h\',k(I){c.3K=3K;c.8A(3K);I.1R()}.3e(c))}});o 9S=L 18({C:{4L:O,3X:18.1l,1Q:18.1l,2S:1e,6M:3,9H:k(G,2S){2S.1P(\'21\',0.7);G.1P(\'21\',0.7)},9e:k(G,2S){G.1P(\'21\',1);2S.2K();c.3V.2K()}},1i:k(5p,C){c.2Y(C);c.5p=$(5p);c.T=c.5p.8H();c.4L=(c.C.4L)?$$(c.C.4L):c.T;c.1G={\'1g\':[],\'5y\':c.5y.3e(c)};M(o i=0,l=c.4L.V;i0);o 6T=c.4G.9W();o 3x=c.4G.8I();B(6T&&6P&&12<6T.4E().3P)c.4G.7Y(6T);B(3x&&!6P&&12>3x.4E().1o)c.4G.6v(3x);c.2l=12},dY:k(9Q){m c.5p.8H().2D(9Q||k(el){m c.T.3k(el)},c)},29:k(){c.2l=1n;Q.3h(\'2M\',c.1G.5o);Q.3h(\'5z\',c.1G.29);B(c.C.2S){Q.3h(\'2M\',c.1G.5y);c.1h(\'9e\',[c.4G,c.2S])}c.1h(\'1Q\',c.4G)}});9S.3i(L 2p,L 43);o aI=L 18({C:{aT:k(3W){3W.1P(\'4z\',\'8G\')},aW:k(3W){3W.1P(\'4z\',\'4O\')},8T:30,bp:35,bt:35,1A:\'dX\',5F:{\'x\':16,\'y\':16},4V:O},1i:k(T,C){c.2Y(C);c.45=L P(\'4Z\',{\'4R\':c.C.1A+\'-3W\',\'8J\':{\'1v\':\'3Y\',\'1o\':\'0\',\'1u\':\'0\',\'4z\':\'4O\'}}).28(Q.4B);c.3c=L P(\'4Z\').28(c.45);$$(T).1q(c.9I,c);B(c.C.1i)c.C.1i.1X(c)},9I:k(el){el.$1W.42=(el.4N&&el.4D()==\'a\')?el.4N.3g(\'9Y://\',\'\'):(el.a1||O);B(el.53){o 6z=el.53.68(\'::\');B(6z.V>1){el.$1W.42=6z[0].5T();el.$1W.5u=6z[1].5T()}14{el.$1W.5u=el.53}el.a7(\'53\')}14{el.$1W.5u=O}B(el.$1W.42&&el.$1W.42.V>c.C.8T)el.$1W.42=el.$1W.42.6K(0,c.C.8T-1)+"&dU;";el.1B(\'8N\',k(I){c.1g(el);B(!c.C.4V)c.8f(I);14 c.1v(el)}.W(c));B(!c.C.4V)el.1B(\'2M\',c.8f.3e(c));o 29=c.29.W(c);el.1B(\'8P\',29);el.1B(\'3V\',29)},1g:k(el){c.3c.1l();B(el.$1W.42){c.53=L P(\'b0\').28(L P(\'4Z\',{\'4R\':c.C.1A+\'-53\'}).28(c.3c)).5s(el.$1W.42)}B(el.$1W.5u){c.1K=L P(\'b0\').28(L P(\'4Z\',{\'4R\':c.C.1A+\'-1K\'}).28(c.3c)).5s(el.$1W.5u)}$55(c.1H);c.1H=c.4d.2g(c.C.bp,c)},29:k(I){$55(c.1H);c.1H=c.3Z.2g(c.C.bt,c)},1v:k(G){o 1m=G.3p();c.45.4A({\'1u\':1m.x+c.C.5F.x,\'1o\':1m.y+c.C.5F.y})},8f:k(I){o am={\'x\':U.8m(),\'y\':U.8n()};o 2G={\'x\':U.8u(),\'y\':U.8v()};o 3W={\'x\':c.45.4b,\'y\':c.45.3R};o 1V={\'x\':\'1u\',\'y\':\'1o\'};M(o z 1a 1V){o 1m=I.1Y[z]+c.C.5F[z];B((1m+3W[z]-2G[z])>am[z])1m=I.1Y[z]-c.C.5F[z]-3W[z];c.45.1P(1V[z],1m)}},4d:k(){B(c.C.aq)c.1H=c.3Z.2g(c.C.aq,c);c.1h(\'aT\',[c.45])},3Z:k(){c.1h(\'aW\',[c.45])}});aI.3i(L 2p,L 43);o dV=L 18({1i:k(){c.6D=$A(1b);c.19={};c.4U={}},1B:k(F,fn){c.4U[F]=c.4U[F]||{};c.19[F]=c.19[F]||[];B(c.19[F].1j(fn))m O;14 c.19[F].1k(fn);c.6D.1q(k(5v,i){5v.1B(F,c.4i.W(c,[F,5v,i]))},c);m c},4i:k(F,5v,i){c.4U[F][i]=1e;o 4F=c.6D.4F(k(2i,j){m c.4U[F][j]||O},c);B(!4F)m;c.4U[F]={};c.19[F].1q(k(I){I.1X(c,c.6D,5v)},c)}});o 7t=1f.26.R({C:{7K:18.1l,aa:18.1l,3Q:0,4d:O,2N:1e,2y:O,21:1e,7f:O,7n:O,3T:O,6I:O},1i:k(){o C,2B,T,2d;$1q(1b,k(4t,i){22($F(4t)){Y\'2I\':C=4t;1C;Y\'G\':2d=$(4t);1C;62:o 2r=$$(4t);B(!2B)2B=2r;14 T=2r}});c.2B=2B||[];c.T=T||[];c.2d=$(2d);c.2Y(C);c.2l=-1;B(c.C.6I)c.C.3T=1e;B($2A(c.C.4d)){c.C.3Q=O;c.2l=c.C.4d}B(c.C.1g){c.C.3Q=O;c.C.4d=O}c.3U={};B(c.C.21)c.3U.21=\'b8\';B(c.C.2y)c.3U.2y=c.C.7n?\'aj\':\'4b\';B(c.C.2N)c.3U.2N=c.C.7f?\'9n\':\'5P\';M(o i=0,l=c.2B.V;i0));c.1h(3Z?\'aa\':\'7K\',[c.2B[i],el]);M(o 2O 1a c.3U)N[i][2O]=3Z?0:el[c.3U[2O]]},c);m c.1g(N)},dW:k(25){m c.3Q(25)}});1f.7t=7t;',62,956,'||||||||||||this||||||||function||return||var|||||||||||||if|options|||type|element||event|value|property|new|for|obj|false|Element|document|extend||elements|window|length|bind||case||||now||else|from||to|Class|events|in|arguments|Math|param|true|Fx|start|fireEvent|initialize|contains|push|empty|pos|null|top|args|each|parent|rgb|key|left|position|name|items|css|array|className|addEvent|break|max|offset|limit|bound|timer|values|properties|text|prototype|result|style|keys|setStyle|onComplete|stop|selector|data|props|prop|tmp|call|page|source||opacity|switch|method||index|Elements||inject|end|merge|mode|join|container|parsed|transition|delay|getStyle|current|set|overflown|previous|hsb|step|relatedTarget|Events|round|temp|script|Array|transport|test|custom|unit|width|string|chk|togglers|addListener|map|color|Garbage|scroll|Methods|object|nocash|remove|url|mousemove|height|fx|ie|Color|border|ghost|Base|params|parse|hue|Event|setOptions|documentElement||match||getElementsByTagName|margin|100|filter||||create|context|wrapper|toInt|bindWithEvent|overed|replace|removeListener|implement|toggler|indexOf|size|mouse|parentNode|Transitions|getPosition|tag|item|min|CSS|iCss|target|pow|next|scripts|option|time|shared|hex|drag|modifiers|change|scrollTo|Cookie|Json|handle|anchor|response|Abstract|returns|Hash|bottom|display|offsetHeight|len|wait|effects|trash|tip|onStart|absolute|hide||iterable|myTitle|Options|getValue|toolTip||iTo|select|duration|xpath|offsetWidth|Styles|show|load|periodical|Drag|knob|check|apply|increase|toString|val|right|compute|delta|setNow|cont|src|argument|id|chains|padding|webkit|link|visibility|setStyles|body|removeEvent|getTag|getCoordinates|every|active|str|status|headers|cookie|handles|number|href|hidden|grid|running|class|image|pick|checker|fixed|px|open|results|div||255|collect|title|mix|clear|getNow|delete|sources|post|mousewheel|fromTo|catch|bit|native|queryString|secure|onSuccess|htmlElement|try|location|setHeader|readyState|mousedown|move|list|get|evaluate|setHTML|xml|myText|instance|links|webkit419|moveGhost|mouseup|toQueryString|HTMLElement|regexp|isSuccess|rgbToHex|offsets|hexToRgb|_method|colors|encoding|setLength|toLowerCase|unique|onload|parseInt|scrollHeight|iFrom|getProperty|include|trim|iNow|scrollLeft|red|domReady|precision|klass||walk|default|scrollTop|layout|green|parseFloat|on|split|out|send|area|droppables|mp|head|attempt|evType|click|String|addEvents|date|continue|fix|XHR|setProperties|currentStyle|counter|included|images|hasKey|brother|injectAfter|onFailure|generic|saturation|dual|Properties|loaded|XMLHttpRequest|instances|steps|onChange|checkStep|mod|alwaysHide|Listeners|substr|draggedKnob|snap|getElements|code|up|fKey|evalScripts|tagName|prev|stopPropagation|attach|getElementById|preventDefault|getElementsBySelector|while|relative|scrollWidth|setMany|Multi|splice|blue|realType|defined|removeEvents|regex|percent|forEach|typeof|alpha|encodeURIComponent|fixedHeight|getSize|scrollSize|onreadystatechange|none|path|setProperty|proto|fixedWidth|domain|evalResponse|setTransport|clean|hasClass|Accordion|Chain|unload|onCancel|update|RegExp|callChain|toUpperCase|transitions|qs|disabled|checked|add|pairs|getMany|ie_ready|multiple|onActive|getParam|found|xhtml|getItems|concat|selected|Dom|domready|Style|Transition|flag|PI|compat|injectBefore|Function|getLast|node|operator|innerText|nodeType|iProps|appendChild|cssText|firstChild|easeType|camelCase|DOMMouseScroll|random|charAt|copy|locate|newArray|rgbToHsb|merged|addEventListener|brightness|rr|getWidth|getHeight|hasChild|complete|javascript|gecko|abort|callee|getScrollLeft|getScrollTop|pageY|img|mousemover|coord|toElement|Slider|toStep|previousEnd|pageX|coordinates|visible|getChildren|getNext|styles|previousChange|onTick|horizontal|mouseenter|velocity|mouseleave|vertical|capitalize|onDrag|maxTitleChars|lim|NativeEvents|gr|Object|mouseout|first|mouseover|insertBefore|getScrollHeight|getScrollWidth|after|cancel|Date|borderShort|fps|pageXOffset|opera|Ajax|clientWidth|clientHeight|onDragComplete|clientX|onRequest|request|pageYOffset|Single|before|Merge|pp|fullHeight|ActiveXObject|wheelDelta|floor|wheelStops|onStateChange|beforeunload|iParsed|direction|getTime|Scroller|overflow|addClass|getCoords|client|constructor|clickedElement|removeClass|detach|clone|onDragStart|build|application|which|useLink|setTimeout|undefined|execScript|getElement|converter|Content|Sortables|normal|sel|contents|getPrevious|keydown|http|prefix|toPosition|rel|filterById|PropertiesIFlag|removeEventListener|half|Left|removeAttribute|filterByClass|filterByAttribute|onBackground|input|resolver|textarea|getFormElements|getHeader|ie6|Scroll|getPos|fullWidth|zoom|onBeforeStart|win|onProgress|distance||timeout|Asset|onSnap|clientY|cloneEvents|cos|autoSave|nodeValue|where|Bottom|idx|elementsProperty|childNodes|relatedTargetGecko|error|defaultView|urlEncoded|toFloat|Tips|createElement|shift|hyphenate|Move|Number|checkAgainst|getLeft|getTop|addSection|www|onShow|fixRelatedTarget|interval|onHide|save|picked|autoCancel|span|textContent|adopt|innerHTML|styleSheet|escapeRegExp|fixStyle|6000|fullOpacity|hsbToRgb|slideIn|slideOut|360|1000|async|Width|getStyles|slice|Top|sin|setOpacity|removeChild|600000|appendText|0px|showDelay|extended||Right|hideDelay|full|button|menu|shiftKey|metaKey|altKey|fromCharCode|frameborder|ctrlKey|attachEvent|detail|srcElement|control|CollectGarbage|readonly|frameBorder|alt|keyCode|111|readOnly|meta|detachEvent|120|rightClick|wheel|pass|some|associate|getRandom|clearChain|chain|DOMElement|execCommand|BackgroundImageCache|transparent|setInterval|embed|boolean|injectInside|times|bindAsEventListener|err|fromElement|iframe|khtml|whitespace|collection|clearTimeout|textnode|nodeName|MooTools|version|clearInterval|Window|taintEnabled|webkit420|getBoxObjectFor|navigator|all|Document|ie7|injectTop|cloneNode|borderStyle|borderColor|htmlFor|borderWidth|getText|getProperties|setAttribute|setText|colspan|colSpan|tabindex|tabIndex|maxlength|accessKey|accesskey|rowspan|rowSpan|removeProperty|attributes|float|styleFloat|cssFloat|toggleClass|createTextNode|replaceWith|replaceChild|zIndex|hasLayout|lastChild|getParent|getAttribute|getFirst|Sibling|getComputedStyle|getPropertyValue|maxLength|overrideMimeType|200|300|responseText|urlencoded|form|cancelBubble|XMLHTTP|charset|responseXML|Connection|Accept|html|ecma|With|Requested|close|setRequestHeader|postBody||utf|makeDraggable|Bounce|Elastic|Quad|618|Back|Circ|acos|Sine|Cubic|Quart|over|drop|emptydrop|leave|makeResizable|Quint|sqrt|java|gi|setHue|setSaturation|setBrightness|invert|pop|onerror|Image|4096|RGB|HSB|hellip|Group|showThisHideOpen|tool|serialize|10000|SmoothScroll|hash|onabort|screen|toGMTString|decodeURIComponent|isFinite|expires|setTime|exec|getResponseHeader|action|Eaeflnr|eval|readystatechange|stylesheet|media|json|JSON|Remote|Request||Expo|Microsoft|substring|XPathResult|UNORDERED_NODE_SNAPSHOT_TYPE|with|starts|ES|namespaceURI|snapshotLength|snapshotItem|checkbox|radio|getElementsByClassName|1999|w3|org|Pow|contextmenu|space|backspace|tab|esc|down|returnValue|enter|dblclick|keypress|submit|reset|blur|focus|keyup|resize|password|filterByTag|toLeft|toRight|Slide|toBottom|toTop|clearTimer|effect|toggle|easeIn|InOut|ease|Out|In|easeOut|easeInOut|500|linear|defer|DOMContentLoaded|protocol|write|offsetTop|https|offsetParent|void|innerWidth|onDomReady||innerHeight|offsetLeft'.split('|'),0,{})) diff --git a/abs/core/zoneminder/run b/abs/core/zoneminder/run new file mode 100755 index 0000000..e458bc8 --- /dev/null +++ b/abs/core/zoneminder/run @@ -0,0 +1,6 @@ +#!/bin/bash +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting ZoneMinder" +exec /etc/rc.d/zm start diff --git a/abs/core/zoneminder/zm.conf.patch b/abs/core/zoneminder/zm.conf.patch new file mode 100644 index 0000000..f7a9870 --- /dev/null +++ b/abs/core/zoneminder/zm.conf.patch @@ -0,0 +1,20 @@ +--- ZoneMinder-1.23.3/zm.conf.in.orig 2006-11-16 01:06:30.000000000 -0800 ++++ ZoneMinder-1.23.3/zm.conf.in 2007-09-26 16:51:06.000000000 -0700 +@@ -14,6 +14,7 @@ + + # Path to build directory, used mostly for finding DB upgrade scripts + ZM_PATH_BUILD=@PATH_BUILD@ ++ZM_PATH_UPDATE=/usr/lib/zm/upgrade + + # Build time, used to record when to trigger various checks + ZM_TIME_BUILD=@TIME_BUILD@ +@@ -44,7 +45,7 @@ + ZM_DB_NAME=@ZM_DB_NAME@ + + # ZoneMinder database user +-ZM_DB_USER=@ZM_DB_USER@ ++ZM_DB_USER=mythtv + + # ZoneMinder database password +-ZM_DB_PASS=@ZM_DB_PASS@ ++ZM_DB_PASS=mythtv diff --git a/abs/core/zoneminder/zm.rc.d b/abs/core/zoneminder/zm.rc.d new file mode 100644 index 0000000..00cd73c --- /dev/null +++ b/abs/core/zoneminder/zm.rc.d @@ -0,0 +1,172 @@ +#!/bin/bash + +# Source function library. +. /etc/rc.conf +. /etc/rc.d/functions + +prog=ZoneMinder +ZM_VERSION="1.23.3" +ZM_PATH_BIN="/usr/lib/zm/bin" +ZM_CONFIG="/etc/zm.conf" +command="$ZM_PATH_BIN/zmpkg.pl" + +loadconf() +{ + if [ -f $ZM_CONFIG ]; then + . $ZM_CONFIG + else + echo "ERROR: $ZM_CONFIG not found. +" + return 1 + fi +} + +# Check for old config and update if needed +checkcfg() +{ + # Check config + if [ "$ZM_DB_HOST" = "" -o "$ZM_DB_NAME" = "" -o "$ZM_DB_USER" = "" -o "$ZM_DB_PASS" = "" ]; then + echo "In $ZM_CONFIG there should not be null values. +" + return 1 + loadconf + fi +} + +checkdb() +{ + # Check database exisits and version + GetVer="select Value from Config where Name='ZM_DYN_DB_VERSION'" + OLD_VERSION=`echo $GetVer | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'` + if [ "$OLD_VERSION" = "" ]; then + GetVer="select Value from Config where Name='ZM_DYN_CURR_VERSION'" + OLD_VERSION=`echo $GetVer | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'` + if [ "$OLD_VERSION" = "" ]; then + echo "You must run $ZM_PATH_BIN/zminit manually +" + return 1 + fi + fi + RETVAL=$? + + if [ $RETVAL != 0 ]; then + tbls=`mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS -s -e 'show tables' $ZM_DB_NAME` + RETVAL=$? + if [ $RETVAL = 0 ]; then + echo "Initialize $prog database: +" + echo tbls | grep Config >/dev/null 2>&1 + RETVAL=$? + if [ $RETVAL != 0 ]; then + mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME < $ZM_PATH_UPDATE/zm_create.sql + RETVAL=$? + [ $RETVAL = 0 ] && stat_done + [ $RETVAL != 0 ] && stat_fail + echo + return $RETVAL + fi + ( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f ) + RETVAL=$? + [ $RETVAL = 0 ] && stat_done + [ $RETVAL != 0 ] && stat_fail + echo + return $RETVAL + else + echo "No access to ZoneMinder database. +Run $ZM_PATH_BIN/zminit manually. +" + return $RETVAL + fi + else + [ "$ZM_VERSION" = "$OLD_VERSION" ] && return 0 + echo "Upgrade %s database: " "$prog" + $ZM_PATH_BIN/zmupdate.pl --version=$OLD_VERSION --noi && ( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f ) + RETVAL=$? + [ $RETVAL = 0 ] && stat_done + [ $RETVAL != 0 ] && stat_fail + echo + return $RETVAL + fi +} + +start() +{ + loadconf || return $? + checkcfg || return $? + checkdb || return $? + stat_busy "Starting $prog" + [ -d /var/run/zm ] || mkdir -m 774 /var/run/zm + chown -R $ZM_WEB_USER:$ZM_WEB_GROUP /var/run/zm + GetPath="select Value from Config where Name='ZM_PATH_SOCKS'" + ZM_PATH_SOCK=`echo $GetPath | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'` + [ -d $ZM_PATH_SOCK ] || mkdir -m 774 $ZM_PATH_SOCK + sudo -u $ZM_WEB_USER test -O $ZM_PATH_SOCK \ + || chown -R $ZM_WEB_USER:$ZM_WEB_GROUP $ZM_PATH_SOCK + # Setup the log dir + [ -d /var/log/zm ] || mkdir /var/log/zm + for logs in zmaudit.log zmdc.log zmfilter.log zmpkg.log zmupdate.log zmwatch.log; do + touch /var/log/zm/$logs + done + chown -R $ZM_WEB_USER:$ZM_WEB_GROUP /var/log/zm + $command start + RETVAL=$? + [ $RETVAL = 0 ] && stat_done + [ $RETVAL != 0 ] && stat_fail + #[ $RETVAL = 0 ] && touch /var/lock/subsys/zm + return $RETVAL +} + +stop() +{ + stat_busy "Stopping $prog" + $command stop + RETVAL=$? + [ $RETVAL = 0 ] && stat_done + [ $RETVAL != 0 ] && stat_fail + #[ $RETVAL = 0 ] && rm -f /var/lock/subsys/zm +} + +status() +{ + result=`$command status` + if [ "$result" = "running" ]; then + echo "ZoneMinder is running +" + RETVAL=0 + else + echo "ZoneMinder is stopped +" + RETVAL=1 + fi +} + +case "$1" in + 'start') + start + ;; + 'stop') + stop + ;; + 'restart') + stop + start + ;; + 'condrestart') + loadconf + checkcfg + result=`$ZM_PATH_BIN/zmdc.pl check` + if [ "$result" = "running" ]; then + $ZM_PATH_BIN/zmdc.pl shutdown > /dev/null + start + fi + ;; + 'status') + status + ;; + *) + echo "Usage: zm { start | stop | restart | condrestart | status } +" + RETVAL=1 + ;; +esac +exit $RETVAL diff --git a/abs/core/zoneminder/zmeventdump b/abs/core/zoneminder/zmeventdump new file mode 100755 index 0000000..17087b9 --- /dev/null +++ b/abs/core/zoneminder/zmeventdump @@ -0,0 +1,48 @@ +#!/bin/bash +#=============================================================================== +# +# FILE: eventdump.sh +# +# USAGE: ./eventdump.sh +# +# DESCRIPTION: Uses mysqldump to create a .sql file for individual zm +# events to make Event table recovery possible by doing a +# 'find' search in ZoneMinder the events directory +# +# OPTIONS: --- +# REQUIREMENTS: --- mysqldump +# BUGS: --- +# NOTES: --- +# AUTHOR: Ross Melin +# COMPANY: +# VERSION: 1.0 +# CREATED: 03/06/2008 11:51:19 AM PST +# REVISION: --- +#=============================================================================== + +# Edit these to suit your configuration +ZM_CONFIG=/etc/zm.conf +MYSQLDUMP=/usr/bin/mysqldump +EVENTSDIR=/home/httpd/html/zm/events + +# The rest should not need editing + +# Get the mysql user and password +source $ZM_CONFIG +MYDUMPOPTS="--user=$ZM_DB_USER --password=$ZM_DB_PASS --skip-opt --compact --quick --no-create-info" + + +for tag in $(find $EVENTSDIR -amin -65 -name ".[0-9]*") + do + EVENT_PATH=$(echo $tag |cut -f 1 -d .) + EVENT_ID=$(echo $tag |cut -f 2 -d .) + # Dump the sql statements needed to reload the Events, Frames and Stats tables + + echo "-- ZM_DB_VERSION=$ZM_VERSION +" > $EVENT_PATH.sql + + $MYSQLDUMP $MYDUMPOPTS --where="Id=$EVENT_ID" zm Events >> $EVENT_PATH.sql + $MYSQLDUMP $MYDUMPOPTS --where="Eventid=$EVENT_ID" zm Frames >> $EVENT_PATH.sql + $MYSQLDUMP $MYDUMPOPTS --where="Eventid=$EVENT_ID" zm Stats >> $EVENT_PATH.sql + +done diff --git a/abs/core/zoneminder/zminit.arch b/abs/core/zoneminder/zminit.arch new file mode 100644 index 0000000..01b6658 --- /dev/null +++ b/abs/core/zoneminder/zminit.arch @@ -0,0 +1,143 @@ +#!/bin/sh + + +ZM_CONFIG=/etc/zm.conf + + + +loadcfg() { + if [ -f $ZM_CONFIG ]; then + . $ZM_CONFIG + else + echo "ERROR: $ZM_CONFIG not found." + exit 1 + fi + } +chkmysql(){ + #FIXME + /etc/rc.d/mysqld restart || (echo "mysql is not availible" && exit 1 ) + } + +getmylogin(){ + echo "Enter MySQL Administrator username" + echo "(Default: root and password is blank)" + echo -n "MySQL Admin: " + read MYADMIN + echo -n "Password: " + read MYPASS + if [ "X$MYPASS" != "X" ]; then MYPASS="-p$MYPASS"; fi + echo "\q" |mysql -u $MYADMIN $MYPASS || exit 0 + + } + +checkdb() +{ + # Check database exisits and version + exists=$(echo "show databases" |mysql -u $MYADMIN "$MYPASS" |grep zm) + if [ "$exists" = "zm" ]; then + OLD_VERSION=$(echo "select Value from Config where Name = 'ZM_DYN_DB_VERSION';" | mysql -u $MYADMIN $MYPASS zm |grep -v '^Value') + + case $OLD_VERSION in + "") + echo "A zm database exists, but the version is unknown" + echo "Updating is unlikely to succeed" + ;; + "$ZM_VERSION") + echo "The zm database appears to be up to date" + echo "If this is incorrect, edit $ZM_CONFIG to reflect the current version" + ;; + *) + echo "A database fron zm-$OLD_VERSION exists already" + ;; + esac + + while [ true ] + do + echo "Choose one of the following options:" + echo "[U]pdate the database" + echo "[D]rop the old database and reinitialize" + echo "[E]xit and do nothing" + read OPTION + case $OPTION in + "U"|"u") + /etc/rc.d/zm restart + exit 0 + ;; + "D"|"d") + echo "drop database zm;"|mysql -u $MYADMIN $MYPASS + return + ;; + "E"|"e") + exit 0 + ;; + esac + done + fi +} + +checkcfg(){ +for n in ZM_DB_HOST ZM_DB_NAME ZM_DB_USER ZM_DB_PASS; do + eval "val=\$$n" + if [ "$val" = "" ]; then + echo "ERROR($ZM_CONFIG): $n should not be empty." + echo "Enter a $n for ZM to use the Database." + if [ "$n" = "ZM_DB_PASS" ]; then + echo -n "Will not echo on screen $n : " + stty -echo # Turns off screen echo. + read newval + stty echo # Restores screen echo. + echo "" + ### The following can be used to generate a random password + # randstr newval 16 + else + echo -n "$n : " + read newval + fi + cp $ZM_CONFIG /tmp/$$ && + sed 's/^'$n='.*$/'$n=$newval'/g' /tmp/$$ >$ZM_CONFIG + + fi +done + +if [ "$ZM_DB_HOST" = "localhost" ]; then + ClientHost=localhost +else + ClientHost=`hostname` +fi +} + +reloadcfg(){ +loadcfg +} + +initdb(){ +sql=/tmp/zm.crdb.sql +echo "" >$sql +chmod 600 $sql + +echo "CREATE DATABASE $ZM_DB_NAME;" >>$sql +echo "USE $ZM_DB_NAME;" >>$sql + +echo "GRANT all on $ZM_DB_NAME.* TO '$ZM_DB_USER'@'$ClientHost' IDENTIFIED BY '$ZM_DB_PASS';" >>$sql + +cat $sql | mysql -B -h $ZM_DB_HOST -u $MYADMIN $MYPASS +rm -f $sql + +cat $ZM_PATH_UPDATE/zm_create.sql | mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME +( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f ) + + $ZM_PATH_UPDATE/customdb $ZM_DB_HOST $ZM_DB_NAME $ZM_DB_USER $ZM_DB_PASS +} + + + +loadcfg +getmylogin +checkdb +checkcfg +reloadcfg +initdb + + + + diff --git a/abs/core/zoneminder/zmupdate.patch b/abs/core/zoneminder/zmupdate.patch new file mode 100644 index 0000000..913a6ec --- /dev/null +++ b/abs/core/zoneminder/zmupdate.patch @@ -0,0 +1,23 @@ +--- ZoneMinder-1.23.3/scripts/zmupdate.pl.orig 2007-09-26 17:05:19.000000000 -0700 ++++ ZoneMinder-1.23.3/scripts/zmupdate.pl 2007-09-26 17:10:55.000000000 -0700 +@@ -327,7 +327,7 @@ + $command .= " -p".$db_pass; + } + } +- $command .= " ".ZM_DB_NAME." < ".ZM_PATH_BUILD."/db/zm_update-".$version.".sql"; ++ $command .= " ".ZM_DB_NAME." < ".ZM_PATH_UPDATE."/zm_update-".$version.".sql"; + + print( "Executing '$command'\n" ) if ( DBG_LEVEL > 0 ); + my $output = qx($command); +diff -Naru ZoneMinder-1.23.3-orig/scripts/zmlogrotate.conf.in ZoneMinder-1.23.3/scripts/zmlogrotate.conf.in +--- ZoneMinder-1.23.3-orig/scripts/zmlogrotate.conf.in 2008-02-25 20:19:52.000000000 +1030 ++++ ZoneMinder-1.23.3/scripts/zmlogrotate.conf.in 2009-07-20 20:18:16.000000000 +0930 +@@ -7,7 +7,7 @@ + missingok + } + +-Now the weekly db backup ++# Now the weekly db backup + + /var/lib/zm/zm_backup.sql { + weekly diff --git a/abs/core/zoneminder/zoneminder.install b/abs/core/zoneminder/zoneminder.install new file mode 100644 index 0000000..1f3cfc0 --- /dev/null +++ b/abs/core/zoneminder/zoneminder.install @@ -0,0 +1,69 @@ +# zoneminder.install + +## arg 1: the new package version +pre_install() { + echo +} + +## arg 1: the new package version +post_install() { +chown http.http /data/srv/httpd/htdocs/zm/events +chown http.http /data/srv/httpd/htdocs/zm/images +chown http.http /data/srv/httpd/htdocs/zm/temp +chown http.http /etc/zm.conf + +cat << EOF +Note: +==> mythtv has been defined in /etc/zm.conf as user and password for +==> The zoneminder (zm) database +==> To initialize the ZoneMinder database run (as root) +==> /usr/lib/zm/bin/zminit + +EOF + +cat /etc/sysctl.conf |grep "kernel.shmall" >/dev/null || cat << EOF +==> To raise the limit on shared memory for zoneminder +==> add these lines to /etc/sysctl.conf +==> kernel.shmall = 134217728 +==> kernel.shmmax = 134217728 +EOF + + +[ -d /var/lib/zm ] || mkdir /var/lib/zm/ +touch /var/lib/zm/zm_backup.sql + +# Reuse the old config +[ -f /etc/zm.conf.pacnew ] && cat /etc/zm.conf | sed -e "s/^ZM_VERSION=.*$/ZM_VERSION=1.23.3/" > /tmp/zm.conf +[ -f /etc/zm.conf.pacsave ] && cat /etc/zm.conf.pacsave | sed -e "s/^ZM_VERSION=.*$/ZM_VERSION=1.23.3/" > /tmp/zm.conf +[ -f /tmp/zm.conf ] && mv -f /tmp/zm.conf /etc/zm.conf && chown -R nobody.nobody /etc/zm.conf + +} + +## arg 1: the new package version +## arg 2: the old package version +pre_upgrade() { + echo +} + +## arg 1: the new package version +## arg 2: the old package version +post_upgrade() { + + # Reuse the old config +[ -f /etc/zm.conf.pacnew ] && cat /etc/zm.conf | sed -e "s/^ZM_VERSION=.*$/ZM_VERSION=1.23.3/" > /tmp/zm.conf +[ -f /etc/zm.conf.pacsave ] && cat /etc/zm.conf.pacsave | sed -e "s/^ZM_VERSION=.*$/ZM_VERSION=1.23.3/" > /tmp/zm.conf +[ -f /tmp/zm.conf ] && mv -f /tmp/zm.conf /etc/zm.conf && chown -R http.http /etc/zm.conf +add_service.sh zm +} +## arg 1: the old package version +pre_remove() { + echo +} + +## arg 1: the old package version +post_remove() { + echo + remove_service.sh zm +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/extra/abs/ChangeLog b/abs/extra/abs/ChangeLog new file mode 100644 index 0000000..03d6d88 --- /dev/null +++ b/abs/extra/abs/ChangeLog @@ -0,0 +1,41 @@ +2008-10-28 Allan McRae + + * 2.3-1 + Upstream update + - add ability to download files using tarballs on pacman mirror + +2008-08-10 Allan McRae + + * 2.2-1 + Upstream update + - adds ability to select which repos/packages + sync on commandline + - additional PKGBUILD and install script prototypes + +2008-04-19 Travis Willard + + * 2.1-1 + Upstream update - re-adds support for community + +2008-04-19 Travis Willard + + * 2.0-4 + Added install warning about /var/abs + +2008-04-15 Travis Willard + + * 2.0-3 + Added install message + Moved abs.conf to /etc instead of /etc/abs + +2008-04-13 Travis Willard + + * 2.0-2 + Moved rsyncd.conf.abs to /usr/share/abs + Made rsync server configurable + +2008-04-10 Travis Willard + + * 2.0-1 + Added ChangeLog + New rsync-based release diff --git a/abs/extra/abs/PKGBUILD b/abs/extra/abs/PKGBUILD new file mode 100644 index 0000000..872fc59 --- /dev/null +++ b/abs/extra/abs/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 17300 2008-10-28 04:37:22Z allan $ +# Maintainer: Allan McRae + +pkgname=abs +pkgver=2.3 +pkgrel=1 +pkgdesc="Utilities to download and work with the Arch Build System (ABS)" +arch=('i686' 'x86_64') +url="http://projects.archlinux.org/git/?p=abs.git" +license=('GPL') +depends=('bash' 'rsync') +backup=(etc/abs.conf) +install=abs.install +source=(ftp://ftp.archlinux.org/other/abs/${pkgname}-${pkgver}.tar.gz) +md5sums=('d6fd791aa487ba8bb5ff48c3ace20592') + +build() { + cd ${srcdir}/${pkgname} + + make CONFDIR=/etc/ || return 1 + make CONFDIR=/etc/ DESTDIR=${pkgdir} install || return 1 + + # Add readme file, and make base /var/abs path + install -dm0755 ${pkgdir}/var/abs/local/ + install -Dm0644 ${srcdir}/abs/README ${pkgdir}/var/abs/README + + # change ABS tags for x86_64 to correct values + if [ "$CARCH" = "x86_64" ]; then + sed -i "s|i686|x86_64|g" ${pkgdir}/etc/abs.conf + fi +} + +# vim: set ts=2 sw=2 noet: diff --git a/abs/extra/abs/abs.install b/abs/extra/abs/abs.install new file mode 100644 index 0000000..1b19b4a --- /dev/null +++ b/abs/extra/abs/abs.install @@ -0,0 +1,15 @@ +## arg 1: the new package version +## arg 2: the old package version +pre_upgrade() { + if [ "$(vercmp $2 2.0-1)" -lt 0 ]; then + echo "==> ABS now uses rsync, instead of cvsup, to synchronize your tree." + echo "==> Please note the new configuration in /etc/abs.conf" + fi + + if [ "$(vercmp $2 2.0-4)" -lt 0 ]; then + echo "==> Warning: abs clears out the contents of /var/abs when syncing." + echo "==> Keep all local PKGBUILDs in /var/abs/local, or they will disappear" + fi +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/extra/apache-ant/PKGBUILD b/abs/extra/apache-ant/PKGBUILD new file mode 100644 index 0000000..663cc19 --- /dev/null +++ b/abs/extra/apache-ant/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 24082 2009-01-12 21:42:39Z paul $ +# Contributor: Andrew Wright +# Maintainer: Paul Mattal + +pkgname=apache-ant +pkgver=1.7.1 +pkgrel=1 +pkgdesc="Ant is a java-based build tool." +arch=(i686 x86_64) +license=('APACHE') +url="http://ant.apache.org/" +depends=('java-runtime') +makedepends=('java-environment') +noextract=('junit3.8.1.zip') +source=(http://archive.apache.org/dist/ant/source/${pkgname}-${pkgver}-src.tar.bz2 + http://heanet.dl.sourceforge.net/sourceforge/junit/junit3.8.1.zip) +md5sums=('0d68db4a1ada5c91bcbf53cefd0c2fd7' '5110326e4b7f7497dfa60ede4b626751') + +build() { + cd ${startdir}/src || return 1 + unzip junit3.8.1.zip || return 1 + + cd ${startdir}/src/${pkgname}-${pkgver} + if [ -f /etc/profile.d/java-gcj-compat.sh ]; then + . /etc/profile.d/java-gcj-compat.sh + elif [ -f /etc/profile.d/jdk.sh ]; then + . /etc/profile.d/jre.sh + . /etc/profile.d/jdk.sh + fi + + # we need the junit jar in the classpath to build ant + export CLASSPATH="${startdir}/src/junit3.8.1/junit.jar" + + # build + mkdir dist || return 1 + ./build.sh -Ddist.dir=dist/ dist || return 1 + + # install + export ANT_HOME="${startdir}/pkg/usr" + ./build.sh install-lite || return 1 +} diff --git a/abs/extra/apcupsd/PKGBUILD b/abs/extra/apcupsd/PKGBUILD new file mode 100644 index 0000000..9f66f5d --- /dev/null +++ b/abs/extra/apcupsd/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD,v 1.17 2009/01/19 10:34:32 sergej Exp $ +# Maintainer: Sergej Pupykin +# Maintainer: Todd Musall + +pkgname=apcupsd +pkgver=3.14.5 +pkgrel=2 +pkgdesc="Apcupsd can be used for power mangement and controlling most of APC's UPS models on Unix and Windows machines." +arch=(i686 x86_64) +url="http://www.apcupsd.org" +license=('GPL') +depends=('gcc-libs' 'gd' 'gconf') +makedepends=('pkgconfig') +backup=(etc/apcupsd/apcupsd.conf etc/apcupsd/hosts.conf \ + etc/apcupsd/multimon.conf) +source=(http://switch.dl.sf.net/sourceforge/apcupsd/$pkgname-$pkgver.tar.gz \ + apcupsd + apcupsd.conf + run) +md5sums=('4ac73ec91d8ab56f3fac894e172567c4' + '5eae3c4d921eeb81798a0250fe3dd111' + '2f533aec32c9445510bb2127b453b175' + 'd4b8c755ecd30f57810f71a6d6435dd3') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --enable-cgi --enable-usb --enable-net \ + --with-upstype=usb --with-upscable=usb \ + --with-serial-dev=/dev/usb/hid/hiddev[0-9] \ + --enable-pthreads --enable-gapcmon + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + install -D -m755 ../apcupsd $startdir/pkg/etc/rc.d/apcupsd && \ + chmod 755 $startdir/pkg/sbin/* + cp ../apcupsd.conf $startdir/pkg/etc/apcupsd/ + mkdir -p $startdir/pkg/etc/sv/apcupsd/supervise + install -D -m755 ../run $startdir/pkg/etc/sv/apcupsd +} diff --git a/abs/extra/apcupsd/apcupsd b/abs/extra/apcupsd/apcupsd new file mode 100755 index 0000000..3cd5c9d --- /dev/null +++ b/abs/extra/apcupsd/apcupsd @@ -0,0 +1,44 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /sbin/apcupsd` +case "$1" in + start) + stat_busy "Starting APCUPSD Daemon" + rm -f /etc/apcupsd/powerfail + rm -f /etc/nologin + [ -z "$PID" ] && /sbin/apcupsd -f /etc/apcupsd/apcupsd.conf + if [ $? -gt 0 ]; then + stat_fail + else + PID=`pidof -o %PPID /sbin/apcupsd` + echo $PID > /var/run/apcupsd.pid + add_daemon apcupsd + stat_done + fi + ;; + stop) + stat_busy "Stopping APCUPSD Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm /var/run/apcupsd.pid + rm_daemon apcupsd + stat_done + fi + ;; + restart) + $0 stop + sleep 2 + $0 start + ;; + status) + /sbin/apcaccess status + ;; + *) + echo "usage: $0 {start|stop|restart|status}" +esac +exit 0 diff --git a/abs/extra/apcupsd/apcupsd.conf b/abs/extra/apcupsd/apcupsd.conf new file mode 100644 index 0000000..dd60889 --- /dev/null +++ b/abs/extra/apcupsd/apcupsd.conf @@ -0,0 +1,325 @@ +## apcupsd.conf v1.1 ## +# +# for apcupsd release 3.14.5 (10 January 2009) - unknown +# +# "apcupsd" POSIX config file + +# +# ========= General configuration parameters ============ +# + +# UPSNAME xxx +# Use this to give your UPS a name in log files and such. This +# is particulary useful if you have multiple UPSes. This does not +# set the EEPROM. It should be 8 characters or less. +#UPSNAME + +# UPSCABLE +# Defines the type of cable connecting the UPS to your computer. +# +# Possible generic choices for are: +# simple, smart, ether, usb +# +# Or a specific cable model number may be used: +# 940-0119A, 940-0127A, 940-0128A, 940-0020B, +# 940-0020C, 940-0023A, 940-0024B, 940-0024C, +# 940-1524C, 940-0024G, 940-0095A, 940-0095B, +# 940-0095C, M-04-02-2000 +# +UPSCABLE usb + +# To get apcupsd to work, in addition to defining the cable +# above, you must also define a UPSTYPE, which corresponds to +# the type of UPS you have (see the Description for more details). +# You must also specify a DEVICE, sometimes referred to as a port. +# For USB UPSes, please leave the DEVICE directive blank. For +# other UPS types, you must specify an appropriate port or address. +# +# UPSTYPE DEVICE Description +# apcsmart /dev/tty** Newer serial character device, +# appropriate for SmartUPS models using +# a serial cable (not USB). +# +# usb Most new UPSes are USB. A blank DEVICE +# setting enables autodetection, which is +# the best choice for most installations. +# +# net hostname:port Network link to a master apcupsd +# through apcupsd's Network Information +# Server. This is used if you don't have +# a UPS directly connected to your computer. +# +# snmp hostname:port:vendor:community +# SNMP Network link to an SNMP-enabled +# UPS device. Vendor is the MIB used by +# the UPS device: can be "APC", "APC_NOTRAP" +# or "RFC" where APC is the powernet MIB, +# "APC_NOTRAP" is powernet with SNMP trap +# catching disabled, and RFC is the IETF's +# rfc1628 UPS-MIB. You usually want "APC". +# Port is usually 161. Community is usually +# "private". +# +# dumb /dev/tty** Old serial character device for use +# with simple-signaling UPSes. +# +# pcnet ipaddr:username:passphrase +# PowerChute Network Shutdown protocol +# which can be used as an alternative to SNMP +# with AP9617 family of smart slot cards. +# ipaddr is the IP address of the UPS mgmt +# card. username and passphrase are the +# credentials for which the card has been +# configured. +# +UPSTYPE usb +DEVICE /dev/usb/hid/hiddev[0-9] + +# POLLTIME +# Interval (in seconds) at which apcupsd polls the UPS for status. This +# setting applies both to directly-attached UPSes (UPSTYPE apcsmart, usb, +# dumb) and networked UPSes (UPSTYPE net, snmp). Lowering this setting +# will improve apcupsd's responsiveness to certain events at the cost of +# higher CPU utilization. The default of 60 is appropriate for most +# situations. +#POLLTIME 60 + +# LOCKFILE +# Path for device lock file. Not used on Win32. +LOCKFILE /var/lock + +# SCRIPTDIR +# Directory in which apccontrol and event scripts are located. +SCRIPTDIR /etc/apcupsd + +# PWRFAILDIR +# Directory in which to write the powerfail flag file. This file +# is created when apcupsd initiates a system shutdown and is +# checked in the OS halt scripts to determine if a killpower +# (turning off UPS output power) is required. +PWRFAILDIR /etc/apcupsd + +# NOLOGINDIR +# Directory in which to write the nologin file. The existence +# of this flag file tells the OS to disallow new logins. +NOLOGINDIR /etc + + +# +# ======== Configuration parameters used during power failures ========== +# + +# The ONBATTERYDELAY is the time in seconds from when a power failure +# is detected until we react to it with an onbattery event. +# +# This means that, apccontrol will be called with the powerout argument +# immediately when a power failure is detected. However, the +# onbattery argument is passed to apccontrol only after the +# ONBATTERYDELAY time. If you don't want to be annoyed by short +# powerfailures, make sure that apccontrol powerout does nothing +# i.e. comment out the wall. +ONBATTERYDELAY 6 + +# +# Note: BATTERYLEVEL, MINUTES, and TIMEOUT work in conjunction, so +# the first that occurs will cause the initation of a shutdown. +# + +# If during a power failure, the remaining battery percentage +# (as reported by the UPS) is below or equal to BATTERYLEVEL, +# apcupsd will initiate a system shutdown. +BATTERYLEVEL 5 + +# If during a power failure, the remaining runtime in minutes +# (as calculated internally by the UPS) is below or equal to MINUTES, +# apcupsd, will initiate a system shutdown. +MINUTES 3 + +# If during a power failure, the UPS has run on batteries for TIMEOUT +# many seconds or longer, apcupsd will initiate a system shutdown. +# A value of 0 disables this timer. +# +# Note, if you have a Smart UPS, you will most likely want to disable +# this timer by setting it to zero. That way, you UPS will continue +# on batteries until either the % charge remaing drops to or below BATTERYLEVEL, +# or the remaining battery runtime drops to or below MINUTES. Of course, +# if you are testing, setting this to 60 causes a quick system shutdown +# if you pull the power plug. +# If you have an older dumb UPS, you will want to set this to less than +# the time you know you can run on batteries. +TIMEOUT 0 + +# Time in seconds between annoying users to signoff prior to +# system shutdown. 0 disables. +ANNOY 300 + +# Initial delay after power failure before warning users to get +# off the system. +ANNOYDELAY 60 + +# The condition which determines when users are prevented from +# logging in during a power failure. +# NOLOGON [ disable | timeout | percent | minutes | always ] +NOLOGON disable + +# If KILLDELAY is non-zero, apcupsd will continue running after a +# shutdown has been requested, and after the specified time in +# seconds attempt to kill the power. This is for use on systems +# where apcupsd cannot regain control after a shutdown. +# KILLDELAY 0 disables +KILLDELAY 0 + +# +# ==== Configuration statements for Network Information Server ==== +# + +# NETSERVER [ on | off ] on enables, off disables the network +# information server. If netstatus is on, a network information +# server process will be started for serving the STATUS and +# EVENT data over the network (used by CGI programs). +NETSERVER on + +# NISIP +# IP address on which NIS server will listen for incoming connections. +# This is useful if your server is multi-homed (has more than one +# network interface and IP address). Default value is 0.0.0.0 which +# means any incoming request will be serviced. Alternatively, you can +# configure this setting to any specific IP address of your server and +# NIS will listen for connections only on that interface. Use the +# loopback address (127.0.0.1) to accept connections only from the +# local machine. +NISIP 0.0.0.0 + +# NISPORT default is 3551 as registered with the IANA +# port to use for sending STATUS and EVENTS data over the network. +# It is not used unless NETSERVER is on. If you change this port, +# you will need to change the corresponding value in the cgi directory +# and rebuild the cgi programs. +NISPORT 3551 + +# If you want the last few EVENTS to be available over the network +# by the network information server, you must define an EVENTSFILE. +EVENTSFILE /var/log/apcupsd.events + +# EVENTSFILEMAX +# By default, the size of the EVENTSFILE will be not be allowed to exceed +# 10 kilobytes. When the file grows beyond this limit, older EVENTS will +# be removed from the beginning of the file (first in first out). The +# parameter EVENTSFILEMAX can be set to a different kilobyte value, or set +# to zero to allow the EVENTSFILE to grow without limit. +EVENTSFILEMAX 10 + +# +# ========== Configuration statements used if sharing ============= +# a UPS with more than one machine + +# +# Remaining items are for ShareUPS (APC expansion card) ONLY +# + +# UPSCLASS [ standalone | shareslave | sharemaster ] +# Normally standalone unless you share an UPS using an APC ShareUPS +# card. +UPSCLASS standalone + +# UPSMODE [ disable | share ] +# Normally disable unless you share an UPS using an APC ShareUPS card. +UPSMODE disable + +# +# ===== Configuration statements to control apcupsd system logging ======== +# + +# Time interval in seconds between writing the STATUS file; 0 disables +STATTIME 300 + +# Location of STATUS file (written to only if STATTIME is non-zero) +STATFILE /var/log/apcupsd.status + +# LOGSTATS [ on | off ] on enables, off disables +# Note! This generates a lot of output, so if +# you turn this on, be sure that the +# file defined in syslog.conf for LOG_NOTICE is a named pipe. +# You probably do not want this on. +LOGSTATS off + +# Time interval in seconds between writing the DATA records to +# the log file. 0 disables. +DATATIME 0 + +# FACILITY defines the logging facility (class) for logging to syslog. +# If not specified, it defaults to "daemon". This is useful +# if you want to separate the data logged by apcupsd from other +# programs. +#FACILITY DAEMON + +# +# ========== Configuration statements used in updating the UPS EPROM ========= +# + +# +# These statements are used only by apctest when choosing "Set EEPROM with conf +# file values" from the EEPROM menu. THESE STATEMENTS HAVE NO EFFECT ON APCUPSD. +# + +# UPS name, max 8 characters +#UPSNAME UPS_IDEN + +# Battery date - 8 characters +#BATTDATE mm/dd/yy + +# Sensitivity to line voltage quality (H cause faster transfer to batteries) +# SENSITIVITY H M L (default = H) +#SENSITIVITY H + +# UPS delay after power return (seconds) +# WAKEUP 000 060 180 300 (default = 0) +#WAKEUP 60 + +# UPS Grace period after request to power off (seconds) +# SLEEP 020 180 300 600 (default = 20) +#SLEEP 180 + +# Low line voltage causing transfer to batteries +# The permitted values depend on your model as defined by last letter +# of FIRMWARE or APCMODEL. Some representative values are: +# D 106 103 100 097 +# M 177 172 168 182 +# A 092 090 088 086 +# I 208 204 200 196 (default = 0 => not valid) +#LOTRANSFER 208 + +# High line voltage causing transfer to batteries +# The permitted values depend on your model as defined by last letter +# of FIRMWARE or APCMODEL. Some representative values are: +# D 127 130 133 136 +# M 229 234 239 224 +# A 108 110 112 114 +# I 253 257 261 265 (default = 0 => not valid) +#HITRANSFER 253 + +# Battery charge needed to restore power +# RETURNCHARGE 00 15 50 90 (default = 15) +#RETURNCHARGE 15 + +# Alarm delay +# 0 = zero delay after pwr fail, T = power fail + 30 sec, L = low battery, N = never +# BEEPSTATE 0 T L N (default = 0) +#BEEPSTATE T + +# Low battery warning delay in minutes +# LOWBATT 02 05 07 10 (default = 02) +#LOWBATT 2 + +# UPS Output voltage when running on batteries +# The permitted values depend on your model as defined by last letter +# of FIRMWARE or APCMODEL. Some representative values are: +# D 115 +# M 208 +# A 100 +# I 230 240 220 225 (default = 0 => not valid) +#OUTPUTVOLTS 230 + +# Self test interval in hours 336=2 weeks, 168=1 week, ON=at power on +# SELFTEST 336 168 ON OFF (default = 336) +#SELFTEST 336 diff --git a/abs/extra/apcupsd/run b/abs/extra/apcupsd/run new file mode 100644 index 0000000..a9dfa3d --- /dev/null +++ b/abs/extra/apcupsd/run @@ -0,0 +1,3 @@ +#!/bin/sh +exec 2>&1 +exec /sbin/apcupsd -b -f /etc/apcupsd/apcupsd.conf >/dev/null 2>/dev/null diff --git a/abs/extra/atomicparsley/PKGBUILD b/abs/extra/atomicparsley/PKGBUILD new file mode 100644 index 0000000..4108fa9 --- /dev/null +++ b/abs/extra/atomicparsley/PKGBUILD @@ -0,0 +1,18 @@ +# Contributor: Baptiste Daroussin +pkgname=atomicparsley +pkgver=0.9.0 +pkgrel=2 +pkgdesc="command line program for reading, parsing and setting iTunes-style metadata in MPEG4 files" +arch=(i686 x86_64) +url="http://atomicparsley.sourceforge.net/" +license=('GPL') +source=(http://ftp.knoppmyth.net/R6/sources/$pkgname/AtomicParsley-source-$pkgver.tar.bz2) +md5sums=('dfe6700089ca20c87f7f5293dee5df6c') + +build() { + cd $startdir/src/ + unzip AtomicParsley-source-$pkgver + cd $startdir/src/AtomicParsley-source-$pkgver + ./build + install -D -m 755 AtomicParsley $startdir/pkg/usr/bin/AtomicParsley +} diff --git a/abs/extra/autofs/Changelog b/abs/extra/autofs/Changelog new file mode 100644 index 0000000..f25555e --- /dev/null +++ b/abs/extra/autofs/Changelog @@ -0,0 +1,2 @@ +5.0.4-5 4/29/09 +Cecil - Added run and finish files for runit. diff --git a/abs/extra/autofs/PKGBUILD b/abs/extra/autofs/PKGBUILD new file mode 100644 index 0000000..7524ae4 --- /dev/null +++ b/abs/extra/autofs/PKGBUILD @@ -0,0 +1,54 @@ +# $Id: PKGBUILD 36638 2009-04-26 19:00:46Z andrea $ +# Maintainer: Andrea Scarpino +# Contributor: Dale Blount +# Contributor: Manolis Tzanidakis + +pkgname=autofs +pkgver=5.0.4 +pkgrel=5 +pkgdesc="A kernel-based automounter for Linux." +arch=('i686' 'x86_64') +url="http://wiki.autofs.net/FrontPage" +license=('GPL2') +depends=('libldap' 'libxml2' 'heimdal') +backup=(etc/autofs/auto.master etc/autofs/auto.misc etc/conf.d/autofs) +install=autofs.install +source=("http://www.kernel.org/pub/linux/daemons/${pkgname}/v5/${pkgname}-${pkgver}.tar.bz2" + 'autofs' 'autofs.conf.d' 'auto.master' 'auto.misc' + 'heimdal.patch' 'run' 'finish') +md5sums=('2646dde61edd08dd952255558c733c08' + 'b4984b3161f50cba3d189b0ec594d014' + '47f597c870410055e0fdb66103daf928' + 'a6cefb591e77b31b79dbb7243646c96b' + 'd8a15ec9186c5c0b36e5cea1e2739e8a' + '1ee4825e26ad72bfe86acec3d3da5d2a' + '74d3b5b6c4421275448084472cfa691a' + '43410e98ecb224cde73ce32be5a6aa14') + +build() { + export MAKEFLAGS="-j1" + cd ${srcdir}/${pkgname}-${pkgver} + + sed -i "s:SUBDIRS = lib daemon modules man samples:SUBDIRS = lib daemon modules man:" Makefile.rules + patch -Np1 -i ${srcdir}/heimdal.patch + + ./configure --prefix=/usr \ + --sysconfdir=/etc/autofs \ + --with-mapdir=/etc/autofs \ + --without-hesiod + make || return 1 + make INSTALLROOT=${pkgdir} install + + local conf_file + for conf_file in auto.{master,misc}; do + install -D -m 644 ${srcdir}/$conf_file ${pkgdir}/etc/autofs/$conf_file + done + + sed -i "s:/etc:/etc/autofs:g" ${pkgdir}/usr/share/man/man5/auto.master.5 + install -D -m 755 ${srcdir}/autofs ${pkgdir}/etc/rc.d/autofs + install -D -m 644 ${srcdir}/autofs.conf.d ${pkgdir}/etc/conf.d/autofs + mkdir -p ${pkgdir}/etc/sv/autofs/supervise + install -D -m 744 ${srcdir}/run ${pkgdir}/etc/sv/autofs + install -D -m 744 ${srcdir}/finish ${pkgdir}/etc/sv/autofs +} +# vim: ts=2 sw=2 et ft=sh diff --git a/abs/extra/autofs/auto.master b/abs/extra/autofs/auto.master new file mode 100644 index 0000000..be4ea73 --- /dev/null +++ b/abs/extra/autofs/auto.master @@ -0,0 +1,6 @@ +# Sample auto.master file +# Format of this file: +# mountpoint map options +# For details of the format look at autofs(5). + +#/media /etc/autofs/auto.media diff --git a/abs/extra/autofs/auto.misc b/abs/extra/autofs/auto.misc new file mode 100644 index 0000000..5691566 --- /dev/null +++ b/abs/extra/autofs/auto.misc @@ -0,0 +1,7 @@ +# This is an automounter map and it has the following format +# key [ -mount-options-separated-by-comma ] location +# Details may be found in the autofs(5) manpage + +cdrom -fstype=iso9660,ro,nodev,nosuid :/dev/cdrom +floppy -fstype=auto,async,nodev,nosuid,umask=000 :/dev/fl +usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sda1 diff --git a/abs/extra/autofs/autofs b/abs/extra/autofs/autofs new file mode 100644 index 0000000..59ea4f5 --- /dev/null +++ b/abs/extra/autofs/autofs @@ -0,0 +1,43 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +# source application-specific settings +[ -f /etc/conf.d/autofs ] && . /etc/conf.d/autofs + +if [ ! -z "$TIMEOUT" ]; then + daemonoptions="--timeout=$TIMEOUT $daemonoptions" +fi + +PID=`cat /var/run/autofs-running 2> /dev/null` +case "$1" in + start) + stat_busy "Starting Automounter" + [ -z "$PID" ] && /usr/sbin/automount $daemonoptions &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon autofs + stat_done + fi + ;; + stop) + stat_busy "Stopping Automounter" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon autofs + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/autofs/autofs.conf.d b/abs/extra/autofs/autofs.conf.d new file mode 100644 index 0000000..bc82491 --- /dev/null +++ b/abs/extra/autofs/autofs.conf.d @@ -0,0 +1,4 @@ +#localoptions='rsize=8192,wsize=8192' + +# e.g. --timeout=60 +daemonoptions='' diff --git a/abs/extra/autofs/autofs.install b/abs/extra/autofs/autofs.install new file mode 100644 index 0000000..61120bb --- /dev/null +++ b/abs/extra/autofs/autofs.install @@ -0,0 +1,5 @@ +post_install(){ + echo "########################################################" + echo "In autofs5 --ghost option isn't valid. In order to start" + echo "autofs you must remove it from your /etc/conf.d/autofs. " +} diff --git a/abs/extra/autofs/finish b/abs/extra/autofs/finish new file mode 100755 index 0000000..26f9d19 --- /dev/null +++ b/abs/extra/autofs/finish @@ -0,0 +1,3 @@ +#!/bin/sh +exec 2>&1 +sv down autofs diff --git a/abs/extra/autofs/heimdal.patch b/abs/extra/autofs/heimdal.patch new file mode 100644 index 0000000..c49b1fd --- /dev/null +++ b/abs/extra/autofs/heimdal.patch @@ -0,0 +1,34 @@ +--- autofs-5.0.4/modules/cyrus-sasl.c~ 2009-01-11 17:18:55.000000000 +0100 ++++ autofs-5.0.4/modules/cyrus-sasl.c 2009-01-11 17:18:55.000000000 +0100 +@@ -66,6 +66,15 @@ + #endif + #endif + ++/** ++ * The type of a principal is different for MIT Krb5 and Heimdal. ++ * These macros are provided by Heimdal, and introduced here for MIT. ++ */ ++#ifndef krb5_realm_length ++#define krb5_realm_length(r) ((r).length) ++#define krb5_realm_data(r) ((r).data) ++#endif ++ + /* + * Once a krb5 credentials cache is setup, we need to set the KRB5CCNAME + * environment variable so that the library knows where to find it. +@@ -451,11 +460,11 @@ + + /* setup a principal for the ticket granting service */ + ret = krb5_build_principal_ext(ctxt->krb5ctxt, &tgs_princ, +- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->length, +- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->data, ++ krb5_realm_length(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)), ++ krb5_realm_data(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)), + strlen(KRB5_TGS_NAME), KRB5_TGS_NAME, +- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->length, +- krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->data, ++ krb5_realm_length(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)), ++ krb5_realm_data(*krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)), + 0); + if (ret) { + error(logopt, diff --git a/abs/extra/autofs/run b/abs/extra/autofs/run new file mode 100755 index 0000000..b35a4ea --- /dev/null +++ b/abs/extra/autofs/run @@ -0,0 +1,5 @@ +#!/bin/sh +exec 2>&1 +set -e # barf if modprobe fails +/sbin/modprobe autofs4 +exec /etc/rc.d/autofs start diff --git a/abs/extra/beautiful-soup/PKGBUILD b/abs/extra/beautiful-soup/PKGBUILD new file mode 100644 index 0000000..082700c --- /dev/null +++ b/abs/extra/beautiful-soup/PKGBUILD @@ -0,0 +1,19 @@ +# Maintainer: Douglas Soares de Andrade +# Contributor: phrakture < aaron m griffin * gmail::com > +# Contributor: tardo + +pkgname=beautiful-soup +pkgver=3.1.0.1 +pkgrel=1 +pkgdesc="A Python HTML/XML parser designed for quick turnaround projects like screen-scraping" +arch=('i686' 'x86_64') +url="http://www.crummy.com/software/BeautifulSoup/index.html" +license=('PSF') +depends=('python') +source=(http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup-$pkgver.tar.gz) + +build() { + cd $startdir/src/BeautifulSoup-$pkgver + python setup.py install --root=$startdir/pkg +} +md5sums=('bcffef3eda6e06e6d1e18c06a9db8a24') diff --git a/abs/extra/bluez-firmware/PKGBUILD b/abs/extra/bluez-firmware/PKGBUILD new file mode 100644 index 0000000..64466c1 --- /dev/null +++ b/abs/extra/bluez-firmware/PKGBUILD @@ -0,0 +1,23 @@ +# Maintainer: Geoffroy Carrier +# Contributor: Giovanni Scafora +# Contributor: Stefano Zamprogno + +pkgname=bluez-firmware +pkgver=1.2 +pkgrel=4 +pkgdesc="Firmware for Broadcom BCM203x Blutonium devices" +url="http://www.bluez.org/" +arch=('i686' 'x86_64') +license=('GPL2') +depends=() +source=("http://bluez.sf.net/download/$pkgname-$pkgver.tar.gz") + +build() { + cd "$srcdir/$pkgname-$pkgver" + + ./configure --libdir=/lib || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 +} + +md5sums=('1cc3cefad872e937e05de5a0a2b390dd') diff --git a/abs/extra/bluez-hcidump/PKGBUILD b/abs/extra/bluez-hcidump/PKGBUILD new file mode 100644 index 0000000..25e0fdf --- /dev/null +++ b/abs/extra/bluez-hcidump/PKGBUILD @@ -0,0 +1,22 @@ +# Maintainer: Geoffroy carrier +# Contributor: Giovanni Scafora +# Contributor: Joerie de Gram + +pkgname=bluez-hcidump +pkgver=1.42 +pkgrel=1 +pkgdesc="Bluetooth HCI package analyzer" +url="http://www.bluez.org/" +arch=('i686' 'x86_64') +license=('GPL2') +depends=('bluez>=4.18') +source=(http://bluez.sf.net/download/$pkgname-$pkgver.tar.gz) + +build() { + cd "$srcdir/$pkgname-$pkgver" + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 +} + +md5sums=('5704737aaf72104eeaf77335218a1827') diff --git a/abs/extra/bluez-python/PKGBUILD b/abs/extra/bluez-python/PKGBUILD new file mode 100644 index 0000000..fcf2639 --- /dev/null +++ b/abs/extra/bluez-python/PKGBUILD @@ -0,0 +1,17 @@ +# Contributor: Li Dongyang + +pkgname=bluez-python +pkgver=0.1.4 +pkgrel=1 +pkgdesc="A BlueZ python binding on top of dbus-python" +arch=(i686 x86_64) +url="http://code.google.com/p/bluez-python" +license=('LGPL') +depends=('bluez>=4.30' 'dbus-python') +source=(http://bluez-python.googlecode.com/files/${pkgname}-${pkgver}.tar.gz) +md5sums=('013f283d3c32765e67c89ebf7f5470ea') + +build() { + cd $startdir/src/$pkgname + python setup.py install --root=$startdir/pkg +} diff --git a/abs/extra/bluez/PKGBUILD b/abs/extra/bluez/PKGBUILD new file mode 100644 index 0000000..9e8f13b --- /dev/null +++ b/abs/extra/bluez/PKGBUILD @@ -0,0 +1,53 @@ +# Maintainer: Geoffroy Carrier +pkgname=bluez +pkgver=4.30 +pkgrel=1 +pkgdesc="Libraries and tools for the Bluetooth protocol stack" +url="http://www.bluez.org/" +arch=('i686' 'x86_64') +license=('GPL2') +depends=('dbus-core' 'glib2') +makedepends=('gstreamer0.10-base' 'alsa-lib' 'libusb') +optdepends=('gstreamer0.10-base' 'alsa-lib' 'libusb') +conflicts=('bluez-libs' 'bluez-utils') +provides=('bluez-libs' 'bluez-utils') +replaces=('bluez-libs' 'bluez-utils') +backup=(etc/bluetooth/{main,rfcomm,audio,network,input}.conf + etc/conf.d/bluetooth) +source=("http://www.kernel.org/pub/linux/bluetooth/$pkgname-$pkgver.tar.bz2" + 'bluetooth.conf.d' + 'rc.bluetooth') +build() { + cd "$srcdir/$pkgname-$pkgver" + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --libexecdir=/lib \ + --mandir=/usr/share/man \ + --enable-gstreamer \ + --enable-alsa \ + --enable-usb \ + --enable-netlink \ + --enable-tools \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-dfutool \ + --enable-hidd \ + --enable-pand \ + --enable-dund \ + --enable-cups \ + --enable-manpages \ + --enable-configfiles \ + --enable-pcmciarules || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 + + install -D -m644 "$srcdir/$pkgname-$pkgver/network/network.conf" "$pkgdir/etc/bluetooth/" || return 1 + install -D -m644 "$srcdir/$pkgname-$pkgver/input/input.conf" "$pkgdir/etc/bluetooth/" || return 1 + install -D -m644 "$srcdir/$pkgname-$pkgver/audio/audio.conf" "$pkgdir/etc/bluetooth/" || return 1 + install -D -m755 "$srcdir/rc.bluetooth" "$pkgdir/etc/rc.d/bluetooth" || return 1 + install -D -m644 "$srcdir/bluetooth.conf.d" "$pkgdir/etc/conf.d/bluetooth" || return 1 +} +md5sums=('5c37fb99c03f40269b9245eec3e7b7f4' + 'd12be5b494525bb1ba6eac5c3983dd3e' + '03d4f2463b1b580e8d2ada3767140685') diff --git a/abs/extra/bluez/bluetooth.conf.d b/abs/extra/bluez/bluetooth.conf.d new file mode 100644 index 0000000..8f25ef4 --- /dev/null +++ b/abs/extra/bluez/bluetooth.conf.d @@ -0,0 +1,33 @@ +# Bluetooth configuraton file + +# Bluetooth services (allowed values are "true" and "false") + +# Run the bluetoothd daemon (default: true) +#DAEMON_ENABLE="false" + +# Run hid2hci (default: false) +#HID2HCI_ENABLE="true" + +# Run the sdp daemon (default: false) +# If this is disabled, hcid's internal sdp daemon will be used +#SDPD_ENABLE="true" + +# Run the bluetooth HID daemon (default: false) +#HIDD_ENABLE="true" + +# Activate rfcomm ports (default: false) +#RFCOMM_ENABLE="true" + +# Run bluetooth dial-up networking daemon (default: false) +#DUND_ENABLE="true" + +# Run bluetooth PAN daemon (default: false) +#PAND_ENABLE="true" + +# rfcomm configuration file (default: /etc/bluetooth/rfcomm.conf) +#RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +# Options for hidd, dund and pand (default: none) +#HIDD_OPTIONS="" +#DUND_OPTIONS="" +#PAND_OPTIONS="" diff --git a/abs/extra/bluez/rc.bluetooth b/abs/extra/bluez/rc.bluetooth new file mode 100644 index 0000000..38b6216 --- /dev/null +++ b/abs/extra/bluez/rc.bluetooth @@ -0,0 +1,106 @@ +#!/bin/sh +# +# Start/stop the Bluetooth daemons +# + +. /etc/rc.conf +. /etc/rc.d/functions + +DAEMON_NAME="bluetoothd" +HID2HCI_NAME="hid2hci" +HIDD_NAME="hidd" +RFCOMM_NAME="rfcomm" +PAND_NAME="pand" +DUND_NAME="dund" + +DAEMON_EXEC="/usr/sbin/bluetoothd" +HID2HCI_EXEC="/usr/sbin/hid2hci" +HIDD_EXEC="/usr/bin/hidd" +RFCOMM_EXEC="/usr/bin/rfcomm" +PAND_EXEC="/usr/bin/pand" +DUND_EXEC="/usr/bin/dund" + +DAEMON_ENABLE="true" +HID2HCI_ENABLE="false" +HIDD_ENABLE="false" +RFCOMM_ENABLE="false" +DUND_ENABLE="false" +PAND_ENABLE="false" + +RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +HIDD_OPTIONS="" +DUND_OPTIONS="" +PAND_OPTIONS="" + +[ -f /etc/conf.d/bluetooth ] && . /etc/conf.d/bluetooth + +case "$1" in + start) + stat_busy "Starting bluetooth subsystem:" + if [ "$DAEMON_ENABLE" = "true" -a -x "$DAEMON_EXEC" ] ; then + stat_append " $DAEMON_NAME" + $DAEMON_EXEC + fi + if [ "$HID2HCI_ENABLE" = "true" -a -x "$HID2HCI_EXEC" ] ; then + stat_append " $HID2HCI_NAME" + $HID2HCI_EXEC --tohci > /dev/null 2>&1 || true + fi + if [ "$SDPD_ENABLE" = "true" -a -x "$SDPD_EXEC" ] ; then + stat_append " $SDPD_NAME" + $SDPD_EXEC + fi + if [ "$HIDD_ENABLE" = "true" -a -x "$HIDD_EXEC" ]; then + stat_append " $HIDD_NAME" + $HIDD_EXEC $HIDD_OPTIONS --server + fi + if [ "$RFCOMM_ENABLE" = "true" -a -x "$RFCOMM_EXEC" -a -f "$RFCOMM_CONFIG" ]; then + stat_append " $RFCOMM_NAME" + $RFCOMM_EXEC -f $RFCOMM_CONFIG bind all + fi + if [ "$DUND_ENABLE" = "true" -a -x "$DUND_EXEC" -a -n "$DUND_OPTIONS" ]; then + stat_append " $DUND_NAME" + $DUND_EXEC $DUND_OPTIONS + fi + if [ "$PAND_ENABLE" = "true" -a -x "$PAND_EXEC" -a -n "$PAND_OPTIONS" ]; then + stat_append " $PAND_NAME" + $PAND_EXEC $PAND_OPTIONS + fi + add_daemon bluetooth + stat_done + ;; + stop) + stat_busy "Stopping bluetooth subsystem:" + + stat_append " $PAND_NAME" + killall $PAND_NAME >/dev/null 2>&1 + + stat_append " $DUND_NAME" + killall $DUND_NAME >/dev/null 2>&1 + + if [ -x "$RFCOMM_EXEC" ]; then + stat_append " $RFCOMM_NAME" + $RFCOMM_EXEC release all >/dev/null 2>&1 + fi + + stat_append " $HIDD_NAME" + killall $HIDD_NAME >/dev/null 2>&1 + + stat_append " $SDPD_NAME" + killall $SDPD_NAME >/dev/null 2>&1 + + stat_append " $DAEMON_NAME" + killall $DAEMON_NAME >/dev/null 2>&1 + + rm_daemon bluetooth + stat_done + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/bmp/0.9.7-visualization.patch b/abs/extra/bmp/0.9.7-visualization.patch new file mode 100644 index 0000000..ac03323 --- /dev/null +++ b/abs/extra/bmp/0.9.7-visualization.patch @@ -0,0 +1,12 @@ +--- beep/vis.c 2004-12-04 10:04:29.000000000 +0100 ++++ beep/vis.c 2005-02-17 12:02:25.391044008 +0100 +@@ -223,7 +223,8 @@ vis_draw(Widget * w) + /* FIXME: The check "shouldn't" be neccessary? */ + /* if (GTK_IS_WINDOW(vis->vs_window)) { */ + GDK_THREADS_ENTER(); +- gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc, ++ if (GDK_IS_DRAWABLE(vis->vs_window)) ++ gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc, + vis->vs_widget.x, vis->vs_widget.y, + vis->vs_widget.width, vis->vs_widget.height, + GDK_RGB_DITHER_NORMAL, (guchar *) rgb_data, diff --git a/abs/extra/bmp/0.9.7.1-visualization.patch b/abs/extra/bmp/0.9.7.1-visualization.patch new file mode 100644 index 0000000..ac03323 --- /dev/null +++ b/abs/extra/bmp/0.9.7.1-visualization.patch @@ -0,0 +1,12 @@ +--- beep/vis.c 2004-12-04 10:04:29.000000000 +0100 ++++ beep/vis.c 2005-02-17 12:02:25.391044008 +0100 +@@ -223,7 +223,8 @@ vis_draw(Widget * w) + /* FIXME: The check "shouldn't" be neccessary? */ + /* if (GTK_IS_WINDOW(vis->vs_window)) { */ + GDK_THREADS_ENTER(); +- gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc, ++ if (GDK_IS_DRAWABLE(vis->vs_window)) ++ gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc, + vis->vs_widget.x, vis->vs_widget.y, + vis->vs_widget.width, vis->vs_widget.height, + GDK_RGB_DITHER_NORMAL, (guchar *) rgb_data, diff --git a/abs/extra/bmp/PKGBUILD b/abs/extra/bmp/PKGBUILD new file mode 100644 index 0000000..ffcc1bf --- /dev/null +++ b/abs/extra/bmp/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 9914 2008-08-21 00:36:16Z eric $ +# Maintainer: Kevin Piche +# Contributor: Ben + +pkgname=bmp +pkgver=0.9.7.1 +pkgrel=4 +pkgdesc="gtk2 port of xmms" +arch=(i686 x86_64) +url="http://bmp.beep-media-player.org/" +depends=('esd' 'id3lib' 'libglade' 'libsm' 'libvorbis' 'unzip') +source=(http://voxel.dl.sourceforge.net/sourceforge/beepmp/bmp-$pkgver.tar.gz $pkgver-visualization.patch bmp-${pkgver}-crossfade-0.3.9.patch) +md5sums=('c25d5a8d49cc5851d13d525a20023c4c' 'fa1bdf5a8d03e8539a6bed5caa471176'\ + '42ad4109ddb66024d4c6d1f3e572ab86') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -p0 -i ../${pkgver}-visualization.patch + patch -p1 -i ../${pkgname}-${pkgver}-crossfade-0.3.9.patch + ./configure --prefix=/usr + /usr/bin/make || return 1 + /usr/bin/make DESTDIR=$startdir/pkg install + find $startdir/pkg -name '*.la' -exec rm {} \; +} +# vim: ts=2 sw=2 et ft=sh diff --git a/abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch b/abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch new file mode 100644 index 0000000..4c1e46d --- /dev/null +++ b/abs/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch @@ -0,0 +1,108 @@ +Patch taken from xmms-crossfade 3.10 tarball. Required for crossfade to +work. http://www.eisenlohr.org/xmms-crossfade/ + +diff -ur bmp-0.9.7.1/beep/mainwin.c bmp-0.9.7.1.patched/beep/mainwin.c +--- bmp-0.9.7.1/beep/mainwin.c 2005-05-09 10:45:39.000000000 +0200 ++++ bmp-0.9.7.1.patched/beep/mainwin.c 2005-11-25 00:03:59.000000000 +0100 +@@ -655,9 +655,11 @@ + mainwin_set_shade(!cfg.player_shaded); + } + ++gboolean is_quitting = FALSE; + void + mainwin_quit_cb(void) + { ++ is_quitting = TRUE; + gtk_widget_hide(equalizerwin); + gtk_widget_hide(playlistwin); + gtk_widget_hide(mainwin); +@@ -1318,7 +1320,7 @@ + change_song(guint pos) + { + if (bmp_playback_get_playing()) +- bmp_playback_stop(); ++ bmp_playback_stop_for_restart(); + + playlist_set_position(pos); + bmp_playback_initiate(); +diff -ur bmp-0.9.7.1/beep/playback.c bmp-0.9.7.1.patched/beep/playback.c +--- bmp-0.9.7.1/beep/playback.c 2005-01-26 06:56:15.000000000 +0100 ++++ bmp-0.9.7.1.patched/beep/playback.c 2005-11-25 00:03:59.000000000 +0100 +@@ -89,7 +89,7 @@ + return; + + if (bmp_playback_get_playing()) +- bmp_playback_stop(); ++ bmp_playback_stop_for_restart(); + + vis_clear_data(mainwin_vis); + vis_clear_data(playlistwin_vis); +@@ -135,6 +135,15 @@ + get_current_input_plugin()->pause(ip_data.paused); + } + ++gboolean input_stopped_for_restart = FALSE; ++void ++bmp_playback_stop_for_restart(void) ++{ ++ input_stopped_for_restart = TRUE; ++ bmp_playback_stop(); ++ input_stopped_for_restart = FALSE; ++} ++ + void + bmp_playback_stop(void) + { +diff -ur bmp-0.9.7.1/beep/playback.h bmp-0.9.7.1.patched/beep/playback.h +--- bmp-0.9.7.1/beep/playback.h 2004-12-04 10:04:26.000000000 +0100 ++++ bmp-0.9.7.1.patched/beep/playback.h 2005-11-25 00:03:59.000000000 +0100 +@@ -26,6 +26,7 @@ + void bmp_playback_initiate(void); + void bmp_playback_pause(void); + void bmp_playback_stop(void); ++void bmp_playback_stop_for_restart(void); + gboolean bmp_playback_play_file(const gchar * filename); + gboolean bmp_playback_get_playing(void); + gboolean bmp_playback_get_paused(void); +diff -ur bmp-0.9.7.1/beep/playlist.c bmp-0.9.7.1.patched/beep/playlist.c +--- bmp-0.9.7.1/beep/playlist.c 2005-08-11 09:25:51.000000000 +0200 ++++ bmp-0.9.7.1.patched/beep/playlist.c 2005-11-25 00:03:59.000000000 +0100 +@@ -817,7 +817,7 @@ + if (bmp_playback_get_playing()) { + /* We need to stop before changing playlist_position */ + PLAYLIST_UNLOCK(); +- bmp_playback_stop(); ++ bmp_playback_stop_for_restart(); + PLAYLIST_LOCK(); + restart_playing = TRUE; + } +@@ -868,7 +868,7 @@ + if (bmp_playback_get_playing()) { + /* We need to stop before changing playlist_position */ + PLAYLIST_UNLOCK(); +- bmp_playback_stop(); ++ bmp_playback_stop_for_restart(); + PLAYLIST_LOCK(); + restart_playing = TRUE; + } +@@ -1018,7 +1018,7 @@ + if (bmp_playback_get_playing()) { + /* We need to stop before changing playlist_position */ + PLAYLIST_UNLOCK(); +- bmp_playback_stop(); ++ bmp_playback_stop_for_restart(); + PLAYLIST_LOCK(); + restart_playing = TRUE; + } +@@ -1047,7 +1047,10 @@ + { + GList *plist_pos_list; + +- bmp_playback_stop(); ++ if (cfg.repeat) ++ bmp_playback_stop_for_restart(); ++ else ++ bmp_playback_stop(); + + PLAYLIST_LOCK(); + plist_pos_list = find_playlist_position_list(); diff --git a/abs/extra/boost/0001-date_time-gcc-4.3-fix.patch b/abs/extra/boost/0001-date_time-gcc-4.3-fix.patch new file mode 100644 index 0000000..9f7e016 --- /dev/null +++ b/abs/extra/boost/0001-date_time-gcc-4.3-fix.patch @@ -0,0 +1,25 @@ +From 88f7023cc36d82133cfa0e705531a9d73feb4686 Mon Sep 17 00:00:00 2001 +From: Tim Blechmann +Date: Sat, 2 Feb 2008 17:22:58 +0100 +Subject: [PATCH] date_time: gcc-4.3 fix + +--- + boost/date_time/tz_db_base.hpp | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/boost/date_time/tz_db_base.hpp b/boost/date_time/tz_db_base.hpp +index b9c0a8a..03f748e 100644 +--- a/boost/date_time/tz_db_base.hpp ++++ b/boost/date_time/tz_db_base.hpp +@@ -158,7 +158,7 @@ namespace boost { + typedef typename time_zone_type::base_type time_zone_base_type; + typedef typename time_zone_type::time_duration_type time_duration_type; + typedef time_zone_names_base time_zone_names; +- typedef dst_adjustment_offsets dst_adjustment_offsets; ++ typedef boost::date_time::dst_adjustment_offsets dst_adjustment_offsets; + typedef std::basic_string string_type; + + //! Constructs an empty database +-- +1.5.3.8 + diff --git a/abs/extra/boost/PKGBUILD b/abs/extra/boost/PKGBUILD new file mode 100644 index 0000000..1fcfd98 --- /dev/null +++ b/abs/extra/boost/PKGBUILD @@ -0,0 +1,63 @@ +# $Id: PKGBUILD 24200 2009-01-15 01:41:45Z douglas $ +# Maintainer: kevin +# TU: Kritoke +# Contributor: Luca Roccia + +pkgname=boost +pkgver=1.37.0 +_boostver=1_37_0 +pkgrel=1 +pkgdesc="Boost provides free peer-reviewed portable C++ source libraries." +arch=(i686 x86_64) +url="http://www.boost.org/" +depends=('python>=2.5' 'bzip2' 'zlib') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}_${_boostver}.tar.gz 0001-date_time-gcc-4.3-fix.patch) +license=('custom') + +build() { + cd ${srcdir}/${pkgname}_${_boostver} + export CFLAGS="${CFLAGS} -fno-strict-aliasing" + #patch -Np1 -i ${srcdir}/0001-date_time-gcc-4.3-fix.patch || return 1 + + # build bjam + cd ${srcdir}/${pkgname}_${_boostver}/tools/jam/src + ./build.sh cc || return 1 + + _bindir="bin.linuxx86" + [ "${CARCH}" = "x86_64" ] && _bindir="bin.linuxx86_64" + + install -m755 -d ${pkgdir}/usr/bin + install -m755 ${_bindir}/bjam ${pkgdir}/usr/bin/bjam || return 1 + + # build bcp + cd ${srcdir}/${pkgname}_${_boostver}/tools/bcp + ../jam/src/${_bindir}/bjam || return 1 + install -m755 ${srcdir}/${pkgname}_${_boostver}/dist/bin/bcp \ + ${pkgdir}/usr/bin/bcp || return 1 + + # build libs + cd ${srcdir}/${pkgname}_${_boostver} + # default "debug release static/dynamic single/multi" + # --layout=system removes the -gcc suffix from libraries and installs + # includes in /usr/include/boost. + ./tools/jam/src/${_bindir}/bjam \ + release debug-symbols=off threading=single,multi \ + runtime-link=shared link=shared,static \ + --prefix=${pkgdir}/usr \ + -sPYTHON_ROOT=/usr \ + -sPYTHON_VERSION=2.5 \ + -sTOOLS=gcc \ + --layout=system \ + install || return 1 + + # build pyste + cd ${srcdir}/${pkgname}_${_boostver}/libs/python/pyste/install + python setup.py install --root=${pkgdir} || return 1 + + # license + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 ${srcdir}/${pkgname}_${_boostver}/LICENSE_1_0.txt \ + ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 +} +md5sums=('c38b88bb4ebc6d0d9193f432842273d2' + 'd7f821056540ef08eb1d5ebd5ed017f1') diff --git a/abs/extra/boost/serialization_gcc43.patch b/abs/extra/boost/serialization_gcc43.patch new file mode 100644 index 0000000..13dbf5d --- /dev/null +++ b/abs/extra/boost/serialization_gcc43.patch @@ -0,0 +1,44 @@ +Index: /home/maik/workspace/boost/boost/archive/polymorphic_iarchive.hpp +=================================================================== +--- /home/maik/workspace/boost/boost/archive/polymorphic_iarchive.hpp (Revision 43953) ++++ /home/maik/workspace/boost/boost/archive/polymorphic_iarchive.hpp (Arbeitskopie) +@@ -17,6 +17,7 @@ + // See http://www.boost.org for updates, documentation, and revision history. + + #include // std::size_t ++#include // ULONG_MAX + #include + + #if defined(BOOST_NO_STDC_NAMESPACE) +@@ -38,6 +39,9 @@ + // i.e. that its not a synonym for (unsigned) long + // if there is no 64 bit int or if its the same as a long + // we shouldn't define separate functions for int64 data types. ++#ifndef ULONG_MAX ++# error "ULONG_MAX is not defined" ++#endif + #if defined(BOOST_NO_INT64_T) \ + || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1 + # define BOOST_NO_INTRINSIC_INT64_T +Index: /home/maik/workspace/boost/boost/archive/polymorphic_oarchive.hpp +=================================================================== +--- /home/maik/workspace/boost/boost/archive/polymorphic_oarchive.hpp (Revision 43953) ++++ /home/maik/workspace/boost/boost/archive/polymorphic_oarchive.hpp (Arbeitskopie) +@@ -18,6 +18,7 @@ + + #include // size_t + #include ++#include // ULONG_MAX + + #include + #if defined(BOOST_NO_STDC_NAMESPACE) +@@ -37,6 +38,9 @@ + // i.e. that its not a synonym for (unsigned) long + // if there is no 64 bit int or if its the same as a long + // we shouldn't define separate functions for int64 data types. ++#ifndef ULONG_MAX ++# error "ULONG_MAX is not defined" ++#endif + #if defined(BOOST_NO_INT64_T) \ + || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1 + # define BOOST_NO_INTRINSIC_INT64_T diff --git a/abs/extra/cabextract/PKGBUILD b/abs/extra/cabextract/PKGBUILD new file mode 100644 index 0000000..2b8eb10 --- /dev/null +++ b/abs/extra/cabextract/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dale +pkgname=cabextract +pkgver=1.2 +pkgrel=1 +pkgdesc="A program to extract Microsoft cabinet (.CAB) files." +license=(GPL) +arch=(i686 x86_64) +depends=(glibc) +conflicts=() +backup=() +install= +url="http://www.kyz.uklinux.net/cabextract.php" +source=(http://www.cabextract.org.uk/$pkgname-$pkgver.tar.gz) +md5sums=('dc421a690648b503265c82ade84e143e') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --sysconfdir=/etc + make || return 1 + make prefix=$startdir/pkg/usr install +} diff --git a/abs/extra/cddb-py/PKGBUILD b/abs/extra/cddb-py/PKGBUILD new file mode 100755 index 0000000..6852446 --- /dev/null +++ b/abs/extra/cddb-py/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=cddb-py +pkgver=1.4 +pkgrel=1 +pkgdesc="CDDB-Server access from Python. Differs from pycddb" +url="http://cddb-py.sourceforge.net" +license="" +depends=(python) +makedepends=() +conflicts=() +replaces=() +backup=() +install= +arch='i686' +source=("http://easynews.dl.sourceforge.net/sourceforge/cddb-py/CDDB-$pkgver.tar.gz") +md5sums=('254698082bafe3030d07d88fb7e13fe2') + +build() { + cd $startdir/src/CDDB-$pkgver + python setup.py install --root=$startdir/pkg/ + } diff --git a/abs/extra/community/athcool/PKGBUILD b/abs/extra/community/athcool/PKGBUILD new file mode 100644 index 0000000..c5a3290 --- /dev/null +++ b/abs/extra/community/athcool/PKGBUILD @@ -0,0 +1,24 @@ +pkgname=athcool +pkgver=0.3.12 +pkgrel=3 +pkgdesc="Small utility allowing to enable powersaving mode on AMD Duron/Athlon/Athlon XP processors." +url="http://members.jcom.home.ne.jp/jacobi/linux/softwares.html" +depends=(pciutils) +license="GPL" +install=athcool.install +arch=(i686) +source=(http://members.jcom.home.ne.jp/jacobi/linux/files/$pkgname-$pkgver.tar.gz +athcool run finish) +md5sums=('f2e0f4fbd04f5e1f09aa60a3ecb24645' + 'bbf32484cec6431568ccf51c2516f9e7' + 'b9cf31ac580c1665d50d70e405d276bc') + +build() { + cd $startdir/src/$pkgname-$pkgver + make || return 1 + make DESTDIR=$startdir/pkg install + /bin/install -D -m0755 ../athcool $startdir/pkg/etc/rc.d/athcool + mkdir -p $pkgdir/etc/sv/athcool/supervise + install -D -m0755 ../run $pkgdir/etc/sv/athcool + install -D -m0755 ../finish $pkgdir/etc/sv/athcool +} diff --git a/abs/extra/community/athcool/athcool b/abs/extra/community/athcool/athcool new file mode 100644 index 0000000..f49bd40 --- /dev/null +++ b/abs/extra/community/athcool/athcool @@ -0,0 +1,35 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +ATHCOOL=/usr/sbin/athcool + +case "$1" in + start) + stat_busy "Enabling Athcool" + $ATHCOOL on > /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + stop) + stat_busy "Disabling Athcool" + $ATHCOOL off > /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + restart) + $0 stop + /bin/sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/community/athcool/athcool.install b/abs/extra/community/athcool/athcool.install new file mode 100644 index 0000000..8896da2 --- /dev/null +++ b/abs/extra/community/athcool/athcool.install @@ -0,0 +1,18 @@ +# arg 1: the new package version +post_install() { + add_service.sh athcool +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + remove_service.sh athcool +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/athcool/finish b/abs/extra/community/athcool/finish new file mode 100755 index 0000000..cae6b1b --- /dev/null +++ b/abs/extra/community/athcool/finish @@ -0,0 +1,3 @@ +#!/bin/bash +exec 2>&1 +sv down athcool diff --git a/abs/extra/community/athcool/run b/abs/extra/community/athcool/run new file mode 100644 index 0000000..b43936c --- /dev/null +++ b/abs/extra/community/athcool/run @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/sbin/athcool on 2>&1 diff --git a/abs/extra/community/cksfv/PKGBUILD b/abs/extra/community/cksfv/PKGBUILD new file mode 100644 index 0000000..b82aa60 --- /dev/null +++ b/abs/extra/community/cksfv/PKGBUILD @@ -0,0 +1,21 @@ +# Contributor: Jaroslaw Swierczynski +# Contributor: Wijnand Modderman + +pkgname=cksfv +pkgver=1.3.12 +pkgrel=1 +pkgdesc="SFV (Simple File Verification) Checker" +arch=('i686' 'x86_64') +url="http://zakalwe.virtuaalipalvelin.net/~shd/foss/cksfv/" +license=('GPL') +depends=('glibc') +source=(http://zakalwe.virtuaalipalvelin.net/~shd/foss/cksfv/files/$pkgname-$pkgver.tar.bz2) +md5sums=('1d277da8bafaec9ddadb92ece4999590') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --package-prefix=$startdir/pkg + make || return 1 + make install + chmod 644 $startdir/pkg/usr/share/man/man1/$pkgname.1 +} diff --git a/abs/extra/community/codecs/PKGBUILD b/abs/extra/community/codecs/PKGBUILD new file mode 100644 index 0000000..8cf80be --- /dev/null +++ b/abs/extra/community/codecs/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 27228 2009-02-17 05:58:02Z thayer $ +# Contributor: Thomas Baechler +# Maintainer: Thayer Williams + +pkgname=codecs +pkgver=20071007 +pkgrel=3 +pkgdesc="Non-linux native codec pack. (Win32, Real9, QuickTime)" +arch=('i686' 'x86_64') +license=('unknown') +# The codec packages are different +# only the 32 bit package needs legacy libstdc++ +[ "$CARCH" = "i686" ] && depends=('libstdc++5') +[ "$CARCH" = "x86_64" ] && depends=('gcc-libs') +options=('!strip') +url="http://www.mplayerhq.hu/design7/dload.html" + +md5sums=('4ea9c2dbd0945c83af1a8d0dd363993c') +_arch="" +if [ "${CARCH}" = "x86_64" ]; then + _arch="-amd64" + md5sums=('8e1ceeec51469f5baac65e56fac709e8') +fi +source=(http://www.mplayerhq.hu/MPlayer/releases/codecs/essential${_arch}-${pkgver}.tar.bz2) + +build() { + mkdir -p ${pkgdir}/usr/lib/codecs + cd ${pkgdir}/usr/lib + ln -s codecs win32 + install -m755 ${srcdir}/essential${_arch}-${pkgver}/* ${pkgdir}/usr/lib/codecs + rm ${pkgdir}/usr/lib/codecs/README +} + diff --git a/abs/extra/community/cpulimit/PKGBUILD b/abs/extra/community/cpulimit/PKGBUILD new file mode 100644 index 0000000..28a3b55 --- /dev/null +++ b/abs/extra/community/cpulimit/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD,v 1.6 2009/02/09 18:02:27 abhidg Exp $ +# Maintainer: Sergej Pupykin +# Contributor: Sergej Pupykin + +pkgname=cpulimit +pkgver=1.1 +pkgrel=1 +pkgdesc="Limit cpu usage in %. Actualy sends SIGSTOP/SIGCONT" +arch=('i686' 'x86_64') +url="http://cpulimit.sourceforge.net/" +license=("GPL") +source=("http://downloads.sourceforge.net/sourceforge/cpulimit/cpulimit-$pkgver.tar.gz") +md5sums=('f4ff6d4bfaef1258e8f5cd2041e2e2a3') + +build () { + cd $startdir/src/$pkgname-$pkgver + make + install -D -m0755 cpulimit $startdir/pkg/usr/bin/cpulimit +} + diff --git a/abs/extra/community/cwiid-svn/PKGBUILD b/abs/extra/community/cwiid-svn/PKGBUILD new file mode 100644 index 0000000..eba6523 --- /dev/null +++ b/abs/extra/community/cwiid-svn/PKGBUILD @@ -0,0 +1,49 @@ +#Contributor:Andrea Tarocchi +pkgname=cwiid-svn +#pkgver=`date +%Y%m%d` +pkgver=184 +pkgrel=3 +pkgdesc="Cwiid-svn is the bleeding edge version of a wiimote's driver and utility tools" +arch=(i686 x86_64) +url="http://abstrakraft.org/cwiid/" +license=('GPL') + +depends=('gawk' 'bluez-libs' 'gtk2') +makedepends=('subversion') +conflicts=('cwiid') +provides=('cwiid') +install=('cwiid.install') +source=() +md5sums=('b3966beecae0de200c90523af8f3bf0e') + +_svntrunk=http://abstrakraft.org/cwiid/svn/trunk/ +_svnmod=cwiid + +build() { + cd $startdir/src + + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + #svn co $_svntrunk --config-dir ./ $_svnmod + + msg "SVN checkout done or server timeout" + msg "Starting make..." + + cp -r $_svnmod $_svnmod-build + cd $_svnmod-build + + autoreconf + + ./configure --prefix=/usr --disable-ldconfig --sysconfdir=/etc + make + + install -d $startdir/pkg/usr/bin + install -d $startdir/pkg/etc + install -d $startdir/pkg/usr/lib + install -d $startdir/pkg/usr/include + + make prefix=$startdir/pkg/usr sysconfdir=$startdir/pkg/etc install + + install -D -m644 ./wminput/README $pkgdir/usr/share/doc/cwiid-svn/wminput + + rm -rf $startdir/src/$_svnmod-build +} diff --git a/abs/extra/community/cwiid-svn/cwiid.install b/abs/extra/community/cwiid-svn/cwiid.install new file mode 100644 index 0000000..6f3dccc --- /dev/null +++ b/abs/extra/community/cwiid-svn/cwiid.install @@ -0,0 +1,16 @@ +# arg 1: the new package version +post_install() { +echo -e "Note:" +echo -e "\033[1;31m==> In order to use wminput you have to load the uinput kernel module:\033[0m" +echo -e "\033[1;31m==> modprobe uinput (as root)\033[0m" +echo -e "\033[1;31m==> and you have to assign correct right acces to /dev/uinput\033[0m" +echo -e "\033[1;31m==> PLEASE READ /usr/share/doc/cwiid-svn/wminput\033[0m" +} + +post_upgrade() { + post_install $1 +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/deluge/PKGBUILD b/abs/extra/community/deluge/PKGBUILD new file mode 100644 index 0000000..6a1a971 --- /dev/null +++ b/abs/extra/community/deluge/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 26558 2009-02-09 16:10:09Z hugo $ +# Maintainer: Hugo Doria + +pkgname=deluge +pkgver=1.1.2 +pkgrel=1 +pkgdesc="A bittorrent client written with python and pygtk" +arch=('i686' 'x86_64') +url="http://deluge-torrent.org/" +license=('GPL3') +depends=('pygtk' 'boost>=1.37.0' 'pyxdg' 'dbus-python' 'librsvg' 'setuptools') +makedepends=('subversion' 'intltool') +options=('!emptydirs') +source=(http://download.deluge-torrent.org/source/${pkgver}/${pkgname}-${pkgver}.tar.gz) +md5sums=('c9d56e266e5cb3024f2dbd72c952e182') + +build() { + + cd ${srcdir}/${pkgname}-${pkgver}/ + python setup.py build + python setup.py install --prefix=/usr --root=${pkgdir} + + install -D -m644 deluge/data/pixmaps/deluge.svg ${pkgdir}/usr/share/pixmaps/deluge.svg +} + diff --git a/abs/extra/community/desktop-file-utils/ChangeLog b/abs/extra/community/desktop-file-utils/ChangeLog new file mode 100644 index 0000000..8941e48 --- /dev/null +++ b/abs/extra/community/desktop-file-utils/ChangeLog @@ -0,0 +1,7 @@ +2008-07-22 Alexander Fehr + + * desktop-file-utils-0.15-1: + New upstream release. + New maintainer. + Changed url. + Added ChangeLog. diff --git a/abs/extra/community/desktop-file-utils/PKGBUILD b/abs/extra/community/desktop-file-utils/PKGBUILD new file mode 100644 index 0000000..aa92c33 --- /dev/null +++ b/abs/extra/community/desktop-file-utils/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 6468 2008-07-24 13:00:42Z alexanderf $ +# Maintainer: Alexander Fehr + +pkgname=desktop-file-utils +pkgver=0.15 +pkgrel=1 +pkgdesc="Command line utilities for working with desktop entries" +arch=('i686' 'x86_64') +url="http://www.freedesktop.org/wiki/Software/desktop-file-utils" +license=('GPL') +depends=('glib2') +source=(http://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-$pkgver.tar.gz) +md5sums=('2fe8ebe222fc33cd4a959415495b7eed') + +build() { + cd "$srcdir/desktop-file-utils-$pkgver" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 +} diff --git a/abs/extra/community/djmount/PKGBUILD b/abs/extra/community/djmount/PKGBUILD new file mode 100644 index 0000000..a3648dc --- /dev/null +++ b/abs/extra/community/djmount/PKGBUILD @@ -0,0 +1,25 @@ +# Contributor: Michele Schäuble + +pkgname=djmount +pkgver=0.71 +pkgrel=1 +pkgdesc="A UPnP AV client that mounts media server contents as a filesystem." +arch=('i686') +url="http://djmount.sourceforge.net/" +license=('GPL') +depends=('fuse') +source=(http://voxel.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz \ + djmount.rcd djmount.confd) +md5sums=('c922753e706c194bf82a8b6ca77e6a9a' \ + 'f473b5150df385447f2f58049bfb6199' \ + '21de4c947c17e8558f1007a20757f254') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + + install -D -m755 $startdir/src/djmount.rcd $startdir/pkg/etc/rc.d/djmount + install -D -m644 $startdir/src/djmount.confd $startdir/pkg/etc/conf.d/djmount +} diff --git a/abs/extra/community/djmount/djmount.confd b/abs/extra/community/djmount/djmount.confd new file mode 100644 index 0000000..079100e --- /dev/null +++ b/abs/extra/community/djmount/djmount.confd @@ -0,0 +1,2 @@ +OPTIONS="-o ro,allow_other" +MOUNTPOINT="/media/upnp" diff --git a/abs/extra/community/djmount/djmount.rcd b/abs/extra/community/djmount/djmount.rcd new file mode 100755 index 0000000..84899dd --- /dev/null +++ b/abs/extra/community/djmount/djmount.rcd @@ -0,0 +1,39 @@ +#!/bin/bash + + . /etc/rc.conf + . /etc/rc.d/functions + +# source application-specific settings +[ -f /etc/conf.d/djmount ] && . /etc/conf.d/djmount + + case "$1" in + + start) + stat_busy "Starting djmount" + /usr/bin/djmount $OPTIONS $MOUNTPOINT &>/dev/null + if [ $? -ne 0 ]; then + stat_fail + else + add_daemon djmount + stat_done + fi + ;; + + stop) + stat_busy "Stopping djmount" + fusermount -u $MOUNTPOINT + kill -9 `pidof /usr/bin/djmount` &>/dev/null + rm_daemon djmount + stat_done + ;; + + restart) + stat_busy "Restarting djmount ..." + $0 stop + $0 start + stat_done + ;; + + *) + echo "usage: $0 {start|stop|restart}" + esac diff --git a/abs/extra/community/enca/PKGBUILD b/abs/extra/community/enca/PKGBUILD new file mode 100644 index 0000000..1bbd7db --- /dev/null +++ b/abs/extra/community/enca/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD,v 1.7 2009/02/27 12:40:33 sergej Exp $ +# Maintainer: Sergej Pupykin +# Contributor: Filip Dvorak + +pkgname=enca +pkgver=1.9 +pkgrel=4 +pkgdesc="Charset analyser and converter" +arch=(i686 x86_64) +url="http://trific.ath.cx/software/enca" +options=('!libtool') +license=("GPL") +depends=() +source=(http://archlinux-stuff.googlecode.com/files/enca-$pkgver.tar.bz2) +md5sums=('b3581e28d68d452286fb0bfe58bed3b3') + +build() { + cd $startdir/src/enca-$pkgver + ./configure --prefix=/usr --libexecdir=/usr/lib/enca + make || return 1 + make DESTDIR=$startdir/pkg install +} + diff --git a/abs/extra/community/firefox-i18n/PKGBUILD b/abs/extra/community/firefox-i18n/PKGBUILD new file mode 100644 index 0000000..7f65aa7 --- /dev/null +++ b/abs/extra/community/firefox-i18n/PKGBUILD @@ -0,0 +1,87 @@ +# $Id: PKGBUILD 36428 2009-04-22 11:57:51Z pierre $ +# Maintainer: Thomas Baechler +# Contributor: Jaroslaw Swierczynski +# Contributor: Michal Hybner +pkgname=firefox-i18n +pkgver=3.0.9 +pkgrel=1 +_languages=af,ar,be,bg,bn-IN,ca,cs,cy,da,de,el,en-GB,eo,es-AR,es-ES,et,eu,fi,fr,fy-NL,ga-IE,gl,gu-IN,he,hi-IN,hu,id,is,it,ja,ka,kn,ko,ku,lt,lv,mk,mn,mr,nb-NO,nl,nn-NO,oc,pa-IN,pl,pt-BR,pt-PT,ro,ru,si,sk,sl,sq,sr,sv-SE,te,th,tr,uk,zh-CN,zh-TW +pkgdesc="Language packs for Firefox" +arch=(i686 x86_64) +license=('MPL') +url="http://www.mozilla.com/" +depends=("firefox>=${pkgver}") +eval conflicts=(mozilla-firefox-i18n mozilla-firefox-{${_languages}} firefox-{${_languages}}) +makedepends=('unzip') +eval source=(ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${pkgver}/linux-i686/xpi/{${_languages}}.xpi) +md5sums=('da750827ddf1aaa6c3b09fbb7ca4ebfc' + '3beb35aeb195552627394b7769f09c5e' + 'cc25e1dfe322e163edd453b54b18ed6c' + '3a24f88aed1ec222739909467d45c36f' + '458dc3b51d94dfb92180b6513da33768' + '6100761f50681a27ecee4b9d43968090' + '33f8922cf3f574ddfc40e350e09e1ee8' + '1aac80931215e85a9434821318322840' + '0fdce63787e71ade32f4150555db446c' + 'c40760c6b6ec0a5d43d708d175af71e0' + '8a861ec0bc928f7d2babb9c9fdac7afa' + 'b5318a854916e712a79f7d3022c82d58' + '5d82688be741219e4a2e884c27674d06' + '3b786beb412062770cf921b7dfc7c412' + '4c4913ba9e21903bc979ff2883256cdb' + '2fab4572520a5062d69815bfcde647b5' + 'd42995bda0f79edb8115f995e1ecf44f' + '7438e9461d20a65c13514ee340db4369' + '7be481c1595300ec83ca0632a0e5fd8f' + '6784c85f27219f04daecc2151a3ffa3a' + '479d5ab78dee9aa3b23ca14e39721034' + 'e98a62f1c4096fb471f8d858d01d044f' + '59fbe6d0584b5c6c0adff7d16ef8ea51' + 'f62a1d67104514da3aad97481e16e81e' + '0e43c81c9bd55c5feedcdcab2fb9c4df' + 'd2e1c28de1be2474ff42c54727cd8c07' + 'c78d170dca0d767c8d9bc31954cd2324' + 'dafc51a775d512e3b34601c2a2291f76' + '76e95f638d7499fe36e5db2aa4446fc1' + '2a12e9ed49515a3e4210224d37f325ca' + 'b904d86f667768c7554f7ac1630e2fc7' + '466ee82c40244cb0f3308798ae3ef1df' + '8e3ab0ac7127b9e651fa8150803d59fa' + '6e817a315663b926c4bcee48ef025195' + '67cb1f812b5e1ad2cd58d77e34e5e154' + 'bc22bb46828c4a929c1e2ec41b090c97' + 'ee4d58656343e0f0ee54e066d7e72451' + '9b2ac04cffc153a752b4ff6e000b2a29' + '329283f9e7a7aaa8a8e5f5ae7e62660d' + '13c5186b51ab3c5374620adf8e5c3576' + 'a2b1f79253729735ad2e59568144f1b4' + 'ccb9763952394717a8b5ec3dec877706' + 'e508856e25040ffb87e023de94dca70b' + '322eaad0dd48a464187000ea0be5362a' + '3632809f34b423ad3ba31077682bbf26' + 'fa15ae8bb4927d416abd3f1661dd4af9' + '5b8d7b418c477060a78f334d2928702d' + '3d5f4b14ae257ed03096757d6a05b217' + '4ad2c7aca6a890078f511bf4224e5347' + '18754e6cb9cee7b408702bd35cadeb0d' + '892701fea3cc09c4350f19ed5c9900ac' + '0a939cce9bbff751da5a1e006a26093f' + '1e3aeeb18c2958d81ee6eb4801aa9faa' + 'cb29c96ac0dd5ece19e78653e74da48a' + '9517325ea18e01007787b5e3210c776c' + 'c61320979392169249da20a48f81d2a8' + 'a2765b25542e7e4d43279f098ea97e72' + 'cc42c2b4151c5c41543507d5a4eb699d' + '195bb042493f8dc4bda09a66c8a2f49e' + 'fe36d87eb352e46459b3c2cc01c4dc2f' + '2b73195d3c12fb8ebfd39f30267d3e64') + +build() { + cd ${startdir}/src + for lang in $(echo "${_languages}" | sed 's|,| |g'); do + unzip -o ${lang}.xpi + sed -i "s|jar:chrome/${lang}.jar|jar:${lang}.jar|" chrome.manifest || return 1 + install -D -m 644 chrome/${lang}.jar ${pkgdir}/usr/lib/firefox-3.0/chrome/${lang}.jar || return 1 + install -D -m 644 chrome.manifest ${pkgdir}/usr/lib/firefox-3.0/chrome/${lang}.manifest || return 1 + done +} diff --git a/abs/extra/community/firefox/PKGBUILD b/abs/extra/community/firefox/PKGBUILD new file mode 100644 index 0000000..191c913 --- /dev/null +++ b/abs/extra/community/firefox/PKGBUILD @@ -0,0 +1,76 @@ +# $Id: PKGBUILD 46468 2009-07-18 13:24:45Z jgc $ +# Contributor: Jakub Schmidtke + +pkgname=firefox +pkgver=3.5.1 +pkgrel=3 +_xulver=1.9.1.1 +pkgdesc="Standalone web browser from mozilla.org" +arch=(i686 x86_64) +license=('MPL' 'GPL' 'LGPL') +depends=("xulrunner>=${_xulver}" 'desktop-file-utils' "nspr>=4.8") +makedepends=('zip' 'pkgconfig' 'diffutils' 'libgnomeui>=2.24.1' 'python') +replaces=('firefox3') +install=firefox.install +url="http://www.mozilla.org/projects/firefox" +source=(http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${pkgver}/source/firefox-${pkgver}-source.tar.bz2 + mozconfig + firefox.desktop + firefox-safe.desktop + mozilla-firefox-1.0-lang.patch + browser-defaulturls.patch + firefox-version.patch + browser-app-makefile.patch + http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz) +md5sums=('18169e189785d680827d4fce94524449' + '3c928b11918d22377eba01de34debc19' + '68cf02788491c6e846729b2f2913bf79' + '5e68cabfcf3c021806b326f664ac505e' + 'bd5db57c23c72a02a489592644f18995' + '346d74ec560e7bbf453c02ff21f4b868' + '1dd9a10df0b9e4cf332eadc326d78e07' + '165c43a5b03a0bf7ad2e7210b0d8c82c' + '6306980e40a3266b4b6c173bfcfdc946') + +build() { + cd "${srcdir}/mozilla-1.9.1" + patch -Np1 -i "${srcdir}/mozilla-firefox-1.0-lang.patch" || return 1 + patch -Np0 -i "${srcdir}/browser-defaulturls.patch" || return 1 + patch -Np1 -i "${srcdir}/firefox-version.patch" || return 1 + + cp "${srcdir}/mozconfig" .mozconfig + unset CFLAGS + unset CXXFLAGS + + export LDFLAGS="-Wl,-rpath,/usr/lib/firefox-3.5" + + make -j1 -f client.mk configure MOZ_MAKE_FLAGS="${MAKEFLAGS}" || return 1 + cd browser/app + patch -p2 < "${srcdir}/browser-app-makefile.patch" || return 1 + cd ../.. + make -j1 -f client.mk build MOZ_MAKE_FLAGS="${MAKEFLAGS}" || return 1 + make -j1 DESTDIR="${pkgdir}" install || return 1 + + rm -f ${pkgdir}/usr/lib/firefox-3.5/libjemalloc.so + + install -m755 -d ${pkgdir}/usr/share/applications + install -m755 -d ${pkgdir}/usr/share/pixmaps + install -m644 ${srcdir}/mozilla-1.9.1/browser/branding/unofficial/default48.png ${pkgdir}/usr/share/pixmaps/firefox.png || return 1 + install -m644 ${srcdir}/firefox.desktop ${pkgdir}/usr/share/applications/ || return 1 + install -m644 ${srcdir}/firefox-safe.desktop ${pkgdir}/usr/share/applications/ || return 1 + + # Install the flash player plugin. + + mkdir -p ${pkgdir}/usr/lib/firefox-3.5/plugins + install -m755 ${srcdir}/libflashplayer.so ${pkgdir}/usr/lib/firefox-3.5/plugins || return 1 + + # This is to stop firefox from crashing when the flashplayer (youtube) is + # set to full screen. To test if it is still necessary with updates to + # this package, run /usr/bin/firefox.bin without setting the LD_PRELOAD var. + + mv ${pkgdir}/usr/bin/firefox ${pkgdir}/usr/bin/firefox.bin + echo "#!/bin/bash +export LD_PRELOAD=/usr/lib/libGL.so.1 +/usr/bin/firefox.bin" > ${pkgdir}/usr/bin/firefox + chmod 755 ${pkgdir}/usr/bin/firefox +} diff --git a/abs/extra/community/firefox/browser-app-makefile.patch b/abs/extra/community/firefox/browser-app-makefile.patch new file mode 100644 index 0000000..9a02c40 --- /dev/null +++ b/abs/extra/community/firefox/browser-app-makefile.patch @@ -0,0 +1,11 @@ +--- browser/app/Makefile 2009-07-27 22:41:13.000000000 +0930 ++++ browser-new/app/Makefile 2009-07-27 22:42:51.000000000 +0930 +@@ -279,7 +279,7 @@ + + ifneq (,$(filter-out OS2 WINNT WINCE,$(OS_ARCH))) + +-$(MOZ_APP_NAME):: $(topsrcdir)/build/unix/mozilla.in $(GLOBAL_DEPS) ++$(MOZ_APP_NAME): $(topsrcdir)/build/unix/mozilla.in $(GLOBAL_DEPS) + cat $< | sed -e "s|%MOZAPPDIR%|$(installdir)|" \ + -e "s|%MOZ_APP_DISPLAYNAME%|$(MOZ_APP_DISPLAYNAME)|" > $@ + chmod +x $@ diff --git a/abs/extra/community/firefox/browser-defaulturls.patch b/abs/extra/community/firefox/browser-defaulturls.patch new file mode 100644 index 0000000..42a2e1d --- /dev/null +++ b/abs/extra/community/firefox/browser-defaulturls.patch @@ -0,0 +1,26 @@ +--- browser/branding/unofficial/locales/browserconfig.properties~ 2009-06-13 17:04:42.000000000 +0200 ++++ browser/branding/unofficial/locales/browserconfig.properties 2009-06-13 17:05:28.000000000 +0200 +@@ -1,3 +1,3 @@ + # Do NOT localize or otherwise change these values +-browser.startup.homepage=http://www.mozilla.org/projects/shiretoko/ ++browser.startup.homepage=http://www.google.com/firefox + +--- browser/branding/unofficial/pref/firefox-branding.js~ 2009-06-13 16:57:53.000000000 +0200 ++++ browser/branding/unofficial/pref/firefox-branding.js 2009-06-13 16:59:17.000000000 +0200 +@@ -1,5 +1,5 @@ +-pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/"); +-pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/"); ++pref("startup.homepage_override_url","http://www.mozilla.com/%APP%/%VERSION%/whatsnew/"); ++pref("startup.homepage_welcome_url","http://www.mozilla.com/%APP%/%VERSION%/firstrun/"); + // The time interval between checks for a new version (in seconds) + // nightly=8 hours, official=24 hours + pref("app.update.interval", 28800); +@@ -11,7 +11,7 @@ + pref("app.update.url.details", "http://www.mozilla.org/projects/%APP%/"); + + // Release notes URL +-pref("app.releaseNotesURL", "http://www.mozilla.org/projects/%APP%/%VERSION%/releasenotes/"); ++pref("app.releaseNotesURL", "http://www.mozilla.com/%APP%/%VERSION%/releasenotes/"); + + // Search codes belong only in builds with official branding + pref("browser.search.param.yahoo-fr", ""); diff --git a/abs/extra/community/firefox/firefox-safe.desktop b/abs/extra/community/firefox/firefox-safe.desktop new file mode 100644 index 0000000..afb4cdb --- /dev/null +++ b/abs/extra/community/firefox/firefox-safe.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Exec=firefox -safe-mode %u +Icon=firefox +Type=Application +Terminal=false +MultipleArgs=false +Name=Firefox - Safe Mode +GenericName=Web Browser - Safe Mode +StartupNotify=false +Categories=Application;Network; diff --git a/abs/extra/community/firefox/firefox-version.patch b/abs/extra/community/firefox/firefox-version.patch new file mode 100644 index 0000000..b0a4552 --- /dev/null +++ b/abs/extra/community/firefox/firefox-version.patch @@ -0,0 +1,11 @@ +--- mozilla-1.9.1/browser/installer/Makefile.in.ver 2009-07-18 13:32:35.000000000 +0200 ++++ mozilla-1.9.1/browser/installer/Makefile.in 2009-07-18 13:33:12.000000000 +0200 +@@ -43,6 +43,8 @@ + + include $(DEPTH)/config/autoconf.mk + ++MOZ_APP_VERSION="3.5" ++ + NO_PKG_FILES = \ + $(MOZ_APP_NAME)-config \ + $(MOZ_APP_NAME)-bin.elf \ diff --git a/abs/extra/community/firefox/firefox.desktop b/abs/extra/community/firefox/firefox.desktop new file mode 100644 index 0000000..2a4b678 --- /dev/null +++ b/abs/extra/community/firefox/firefox.desktop @@ -0,0 +1,83 @@ +[Desktop Entry] +Encoding=UTF-8 +Exec=firefox %u +Icon=firefox +Type=Application +Terminal=false +MultipleArgs=false +Name=Firefox +Name[bn]=ফায়ারফকà§à¦¸3 +Name[eo]=Fajrovulpo3 +Name[fi]=Firefox3 +Name[pa]=ਫਾਇਰਫੋਕਸ3 +Name[tg]=Рӯбоҳи оташин3 +GenericName=Web Browser +GenericName[af]=Web Blaaier +GenericName[ar]=متصÙØ­ ويب +GenericName[az]=Veb SÉ™yyahı +GenericName[bg]=Браузър +GenericName[bn]=ওয়েব বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° +GenericName[br]=Furcher ar Gwiad +GenericName[bs]=WWW Preglednik +GenericName[ca]=Fullejador web +GenericName[cs]=WWW prohlížeÄ +GenericName[cy]=Porydd Gwe +GenericName[da]=Browser +GenericName[de]=Web-Browser +GenericName[el]=ΠεÏιηγητής Î™ÏƒÏ„Î¿Ï +GenericName[eo]=TTT-legilo +GenericName[es]=Navegador web +GenericName[et]=Veebilehitseja +GenericName[eu]=Web arakatzailea +GenericName[fa]=مرورگر وب +GenericName[fi]=WWW-selain +GenericName[fo]=Alnótsfar +GenericName[fr]=Navigateur web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן ×ינטרנט +GenericName[hi]=वेब बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° +GenericName[hr]=Web preglednik +GenericName[hu]=WebböngészÅ‘ +GenericName[is]=Vafri +GenericName[it]=Browser Web +GenericName[ja]=ウェブブラウザ +GenericName[ko]=웹 브ë¼ìš°ì € +GenericName[lo]=ເວັບບຣາວເຊີ +GenericName[lt]=Žiniatinklio narÅ¡yklÄ— +GenericName[lv]=Web PÄrlÅ«ks +GenericName[mk]=ПрелиÑтувач на Интернет +GenericName[mn]=Веб-Хөтөч +GenericName[nb]=Nettleser +GenericName[nds]=Nettkieker +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[nso]=Seinyakisi sa Web +GenericName[pa]=ਵੈਬ à¨à¨²à¨•à¨¾à¨°à¨¾ +GenericName[pl]=PrzeglÄ…darka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator de web +GenericName[ru]=Веб-браузер +GenericName[se]=Fierpmádatlogan +GenericName[sk]=Webový prehliadaÄ +GenericName[sl]=Spletni brskalnik +GenericName[sr]=Веб претраживач +GenericName[sr@Latn]=Veb pretraživaÄ +GenericName[ss]=Ibrawuza yeWeb +GenericName[sv]=Webbläsare +GenericName[ta]=வலை உலாவி +GenericName[tg]=ТафÑиргари вÑб +GenericName[th]=เว็บบราวเซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[uk]=Ðавігатор Тенет +GenericName[uz]=Веб-браузер +GenericName[ven]=Buronza ya Webu +GenericName[vi]=Trình duyệt Web +GenericName[wa]=Betchteu waibe +GenericName[xh]=Umkhangeli zincwadi we Web +GenericName[zh_CN]=网页æµè§ˆå™¨ +GenericName[zh_TW]=網é ç€è¦½å™¨ +GenericName[zu]=Umcingi we-Web +MimeType=text/html +StartupNotify=true +Categories=Application;Network; diff --git a/abs/extra/community/firefox/firefox.install b/abs/extra/community/firefox/firefox.install new file mode 100644 index 0000000..cd50dec --- /dev/null +++ b/abs/extra/community/firefox/firefox.install @@ -0,0 +1,24 @@ +post_install() { + update-desktop-database -q + + # For LinHES: check for a fluxbox keys file that doesnt have a mapping + # for Alt-w and map it to firefox. + + if [ -e /home/mythtv/.fluxbox/keys ] + then + if ! grep -q "Mod1 w" /home/mythtv/.fluxbox/keys + then + echo Adding fluxbox key for firefox. + echo "Mod1 w :ExecCommand firefox" >> /home/mythtv/.fluxbox/keys + fi + fi +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + update-desktop-database -q +} + diff --git a/abs/extra/community/firefox/mozconfig b/abs/extra/community/firefox/mozconfig new file mode 100644 index 0000000..030317d --- /dev/null +++ b/abs/extra/community/firefox/mozconfig @@ -0,0 +1,35 @@ +. $topsrcdir/browser/config/mozconfig + +ac_add_options --prefix=/usr +ac_add_options --libdir=/usr/lib +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +ac_add_options --with-system-png +ac_add_options --with-pthreads +ac_add_options --disable-tests +ac_add_options --disable-debug +ac_add_options --enable-optimize +ac_add_options --disable-installer +ac_add_options --enable-xinerama +ac_add_options --enable-default-toolkit=cairo-gtk2 +ac_add_options --disable-xprint +ac_add_options --enable-strip +ac_add_options --enable-pango +ac_add_options --enable-system-cairo +ac_add_options --enable-svg +ac_add_options --enable-canvas +ac_add_options --enable-startup-notification +ac_add_options --enable-libxul +ac_add_options --disable-crashreporter +ac_add_options --with-libxul-sdk=/usr/lib/xulrunner-devel-1.9.1.1 +ac_add_options --enable-safe-browsing +ac_add_options --with-branding=browser/branding/unofficial + +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +export USE_SHORT_LIBNAME=1 +mk_add_options BUILD_OFFICIAL=1 +mk_add_options MOZILLA_OFFICIAL=1 +mk_add_options USE_SHORT_LIBNAME=1 diff --git a/abs/extra/community/firefox/mozilla-firefox-1.0-lang.patch b/abs/extra/community/firefox/mozilla-firefox-1.0-lang.patch new file mode 100644 index 0000000..f0f7325 --- /dev/null +++ b/abs/extra/community/firefox/mozilla-firefox-1.0-lang.patch @@ -0,0 +1,12 @@ +--- mozilla/browser/app/profile/firefox.js.lang 2005-01-13 15:32:03.509282726 +0100 ++++ mozilla/browser/app/profile/firefox.js 2005-01-13 15:33:40.220914789 +0100 +@@ -253,6 +253,9 @@ + pref("font.language.group", "chrome://global/locale/intl.properties"); + pref("intl.menuitems.alwaysappendaccesskeys","chrome://global/locale/intl.properties"); + ++// Use LANG environment variable to choose locale ++pref("intl.locale.matchOS", true); ++ + // 0=lines, 1=pages, 2=history , 3=text size + pref("mousewheel.withcontrolkey.action",3); + pref("mousewheel.withshiftkey.action",2); diff --git a/abs/extra/community/flashplugin/PKGBUILD b/abs/extra/community/flashplugin/PKGBUILD new file mode 100644 index 0000000..1e68f40 --- /dev/null +++ b/abs/extra/community/flashplugin/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 21951 2008-12-18 13:25:19Z thomas $ + +pkgname=flashplugin +_licensefile='Reader_Player_WWEULA-Combined-20060724_1430.pdf' +if [ "${CARCH}" = 'i686' ]; then + pkgver=10.0.15.3 + pkgrel=1 + source=('http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz' + "http://www.adobe.com/products/eulas/pdfs/${_licensefile}") + md5sums=('afab0b40b0ae11445e2e90a4a9224a8a' + '844cea6c9afc13d9e27f28ce1a6e20f3') +elif [ "${CARCH}" = 'x86_64' ]; then + pkgver=10.0.d21.1 + pkgrel=1 + source=("http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-${pkgver}.linux-x86_64.so.tar.gz" + "http://www.adobe.com/products/eulas/pdfs/${_licensefile}") + md5sums=('c165af9d4e324bfaf6d1cfbdbe959fbb' + '844cea6c9afc13d9e27f28ce1a6e20f3') +else + error Unknown architecture. + exit 1 +fi +pkgdesc='Adobe Flash Player' +url='http://www.adobe.com/go/getflash' +arch=('i686' 'x86_64') +depends=('mozilla-common' 'libxt' 'gtk2' 'nss' 'curl') +replaces=('flashplugin-beta') +provides=('flashplayer') +license=('custom') + +build() { + install -d -m755 ${pkgdir}/usr/lib/mozilla/plugins/ || return 1 + if [ "${CARCH}" = 'i686' ]; then + install -m755 ${srcdir}/install_flash_player_10_linux/libflashplayer.so ${pkgdir}/usr/lib/mozilla/plugins/ || return 1 + elif [ "${CARCH}" = 'x86_64' ]; then + install -m755 ${srcdir}/libflashplayer.so ${pkgdir}/usr/lib/mozilla/plugins/ || return 1 + fi + install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + install -m644 "${_licensefile}" ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 +} diff --git a/abs/extra/community/fluidsynth/PKGBUILD b/abs/extra/community/fluidsynth/PKGBUILD new file mode 100644 index 0000000..f3606cb --- /dev/null +++ b/abs/extra/community/fluidsynth/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir + +pkgname=fluidsynth +pkgver=1.0.8 +origver=1.0.8 +pkgrel=1 +pkgdesc="FluidSynth is a real-time software synthesizer based on the SoundFont 2 specifications." +arch=("i686" "x86_64") +url="http://www.fluidsynth.org/" +depends=('jack-audio-connection-kit' 'ladspa') +options=('!libtool') +license=('LGPL') +source=("http://savannah.nongnu.org/download/fluid/$pkgname-$pkgver.tar.gz") +md5sums=('e2abfd2e69fd8b28d965df968d7d44ee') + + +build() { + cd $startdir/src/$pkgname-$origver + ./configure --prefix=/usr \ + --enable-ladspa + make || return 1 + make prefix=$startdir/pkg/usr install +} + diff --git a/abs/extra/community/fluxconf/PKGBUILD b/abs/extra/community/fluxconf/PKGBUILD new file mode 100644 index 0000000..9d9220f --- /dev/null +++ b/abs/extra/community/fluxconf/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Aaron Griffin +# Contributor: Jochem Kossen + +pkgname=fluxconf +pkgver=0.9.9 +pkgrel=1 +pkgdesc="Configuration utility for the Fluxbox windowmanager" +arch=(i686 x86_64) +depends=('gtk2') +source=(http://devaux.fabien.free.fr/flux/$pkgname-$pkgver.tar.gz) +url="http://devaux.fabien.free.fr/flux/" +md5sums=('ac37b12410daa06128f8eb29163a741d') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + /usr/bin/make || return 1 + /usr/bin/make prefix=$startdir/pkg/usr install + cd $startdir/pkg/usr/bin + /bin/ln -sf $pkgname fluxbare + /bin/ln -sf $pkgname fluxkeys + /bin/ln -sf $pkgname fluxmenu +} diff --git a/abs/extra/community/foldingathome/PKGBUILD b/abs/extra/community/foldingathome/PKGBUILD new file mode 100644 index 0000000..bb93407 --- /dev/null +++ b/abs/extra/community/foldingathome/PKGBUILD @@ -0,0 +1,26 @@ +# Contributor: Jason Taylor +# Contributor: seratne +# Contributor: Nick B + +pkgname=foldingathome +pkgver=6.02 +pkgrel=6 +pkgdesc="Folding@Home is a distributed computing project which studies protein folding, misfolding, aggregation, and related diseases." +arch=('i686') +url="http://folding.stanford.edu/" +license=('custom') +depends=('bash') +backup=('etc/conf.d/foldingathome') +install=foldingathome.install +source=(http://www.stanford.edu/group/pandegroup/folding/release/FAH$pkgver-Linux.tgz + run) +md5sums=('112b3d66909050f1bb990993a1464cb9' + '61eb4617e7363d586a05dde980ad1c14') + +build() { + cd $startdir/src/ + + # At this stage, the mpiexec is not included because it requires x86_64. + install -D -c -m755 fah6 $startdir/pkg/usr/bin/fah6 || return 1 + install -D -m755 run $startdir/pkg/etc/sv/fah/run +} diff --git a/abs/extra/community/foldingathome/foldingathome.install b/abs/extra/community/foldingathome/foldingathome.install new file mode 100644 index 0000000..20e48d1 --- /dev/null +++ b/abs/extra/community/foldingathome/foldingathome.install @@ -0,0 +1,47 @@ +post_install() { + # Check for an R5.5 fah installation. + r5_fah_dir=/myth/folding@home + r6_fah_dir=/myth/foldingathome/$(hostname) + if [ -d "$r5_fah_dir" ] ; then + if [ -d "$r6_fah_dir" ] ; then + cat << 'EOM' + --> You have an R5.5 and an R6 folding directory at the same time! + --> you should manually delete the R5.5 directory: + --> $r5_fah_dir + --> The directroy used on R6 will be: + --> $r6_fah_dir +EOM + else + mkdir -p /myth/foldingathome + mv $r5_fah_dir $r6_fah_dir + fi + else + if [ ! -d "$r6_fah_dir" ] ; then + mkdir -p $r6_fah_dir + cat > $r6_fah_dir/client.cfg << 'EOM' +[settings] +username=LinHES +team=50975 +passkey= +asknet=no +bigpackets=normal +machineid=1 + +[http] +active=no +host=localhost +port=8080 +EOM + fi + fi + rm -fr $r6_fah_dir/index.html + ln -s $r6_fah_dir/MyFolding.html $r6_fah_dir/index.html + ln -s $r6_fah_dir /data/srv/httpd/htdocs/foldingathome + /sbin/add_service.sh fah +} + +pre_remove() { + sv stop fah + /sbin/remove_service.sh fah +} + diff --git a/abs/extra/community/foldingathome/run b/abs/extra/community/foldingathome/run new file mode 100644 index 0000000..ede51f2 --- /dev/null +++ b/abs/extra/community/foldingathome/run @@ -0,0 +1,26 @@ +#!/bin/sh +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting folding@home" + +FOLDING_DIR=/myth/foldingathome/$(hostname) + +if [ -d $FOLDING_DIR ] ; then + cd $FOLDING_DIR + # Ensure that the client configuration file has the same details as /etc/systemconfig + + source /etc/systemconfig + + if [ -n "$foldingusername" ] ; then + sed -i 's/username=.*$/username='$foldingusername'/g' $FOLDING_DIR/client.cfg + fi + + if [ -n "$foldingworksize" ] ; then + sed -i 's/bigpackets=.*$/bigpackets='$foldingworksize'/g' $FOLDING_DIR/client.cfg + fi + + # No need to direct output to a log file becase a log file + # will automatically be placed in $FOLDING_DIR + exec /usr/bin/fah6 -verbosity 9 &> /dev/null < /dev/null +fi diff --git a/abs/extra/community/gnash-common/PKGBUILD b/abs/extra/community/gnash-common/PKGBUILD new file mode 100644 index 0000000..107afb8 --- /dev/null +++ b/abs/extra/community/gnash-common/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 17544 2008-10-30 22:40:52Z pierre $ + +pkgname=gnash-common +pkgver=0.8.4 +pkgrel=1 +pkgdesc='A GNU Flash movie player' +arch=('i686' 'x86_64') +url='http://www.gnu.org/software/gnash/' +license=('GPL3') +depends=('curl' 'giflib' 'boost' 'libldap' 'gstreamer0.10-base' 'sdl' 'libgl' + 'libjpeg' 'libpng' 'mesa') +makedepends=('pkgconfig') +source=("http://ftp.gnu.org/gnu/gnash/${pkgver}/gnash-${pkgver}.tar.bz2") +options=('!libtool' '!emptydirs' '!docs') +provides=('gnash') +replaces=('gnash') +md5sums=('b47a7ed4b7c66b8c2ebacc2286ef0d4b') + +build() { + cd $srcdir/gnash-$pkgver + + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --disable-plugins \ + --disable-menus \ + --enable-gui=sdl \ + --enable-renderer=ogl \ + --enable-z \ + --enable-jpeg \ + --enable-libpng \ + --enable-gif \ + --enable-fontconfig \ + --enable-Xft \ + --enable-expat \ + --enable-gstreamer \ + --enable-media=gst || return 1 + + make || return 1 + make DESTDIR=$pkgdir install || return 1 +} diff --git a/abs/extra/community/gnash-gtk/PKGBUILD b/abs/extra/community/gnash-gtk/PKGBUILD new file mode 100644 index 0000000..45ba804 --- /dev/null +++ b/abs/extra/community/gnash-gtk/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 17609 2008-10-31 06:16:21Z pierre $ + +pkgname=gnash-gtk +pkgver=0.8.4 +pkgrel=1 +pkgdesc='A GNU Flash movie player (gtk)' +arch=('i686' 'x86_64') +url='http://www.gnu.org/software/gnash/' +license=("GPL3") +depends=("gnash-common=$pkgver" 'gtk2' 'gtkglext') +makedepends=('pkgconfig') +source=("http://ftp.gnu.org/gnu/gnash/${pkgver}/gnash-${pkgver}.tar.bz2") +options=('!libtool' '!emptydirs' '!docs') +md5sums=('b47a7ed4b7c66b8c2ebacc2286ef0d4b') + +build() { + cd $srcdir/gnash-$pkgver + + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --enable-gui=gtk \ + --with-plugins-install=system \ + --with-npapi-plugindir=/usr/lib/mozilla/plugins \ + --enable-renderer=ogl \ + --enable-z \ + --enable-jpeg \ + --enable-libpng \ + --enable-gif \ + --enable-fontconfig \ + --enable-Xft \ + --enable-expat \ + --enable-gstreamer \ + --enable-media=gst || return 1 + + make || return 1 + make DESTDIR=$pkgdir install install-plugin || return 1 + rm -rf $pkgdir/usr/{lib/gnash,share} + rm -f $pkgdir/usr/bin/{gnash,gprocessor,dumpshm,soldumper,flvdumper} + rm -rf $pkgdir/etc +} diff --git a/abs/extra/community/gstreamer0.10-base-plugins/PKGBUILD b/abs/extra/community/gstreamer0.10-base-plugins/PKGBUILD new file mode 100644 index 0000000..5678e9d --- /dev/null +++ b/abs/extra/community/gstreamer0.10-base-plugins/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 14436 2008-10-06 17:41:07Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gstreamer0.10-base-plugins +pkgver=0.10.21 +pkgrel=1 +pkgdesc="GStreamer Multimedia Framework Base Plugins (gst-plugins-base)" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('gstreamer0.10-base>=0.10.21' 'gnome-vfs>=2.24.0' 'alsa-lib>=1.0.17a' 'cdparanoia>=10.2' 'libvisual' 'libvorbis>=1.2.0' 'libtheora') +makedepends=('pkgconfig') +replaces=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-gnomevfs' 'gstreamer0.10-ogg') +conflicts=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-gnomevfs' 'gstreamer0.10-ogg') +provides=("gstreamer0.10-alsa=${pkgver}" "gstreamer0.10-theora=${pkgver}" "gstreamer0.10-libvisual=${pkgver}" "gstreamer0.10-pango=${pkgver}" "gstreamer0.10-cdparanoia=${pkgver}" "gstreamer0.10-vorbis=${pkgver}" "gstreamer0.10-gnomevfs=${pkgver}" "gstreamer0.10-ogg=${pkgver}" "gst-plugins-base=${pkgver}") +options=(!libtool) +url="http://gstreamer.freedesktop.org/" +groups=('gstreamer0.10-plugins') +_relname=gst-plugins-base +source=(${url}/src/${_relname}/${_relname}-${pkgver}.tar.bz2) +md5sums=('0e0cd485311502ad1c0c028148e3186a') + +build() { + cd "${srcdir}/${_relname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --disable-static --enable-experimental \ + --disable-docs-build --disable-plugin-docs \ + --with-package-name="GStreamer Base Plugins (Archlinux)" \ + --with-package-origin="http://www.archlinux.org/" || return 1 + + make || return 1 + cd ext || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/community/gstreamer0.10-base/PKGBUILD b/abs/extra/community/gstreamer0.10-base/PKGBUILD new file mode 100644 index 0000000..b1b065d --- /dev/null +++ b/abs/extra/community/gstreamer0.10-base/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 14433 2008-10-06 17:33:22Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gstreamer0.10-base +pkgver=0.10.21 +pkgrel=1 +pkgdesc="GStreamer Multimedia Framework Base plugin libraries" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('gstreamer0.10>=0.10.21' 'liboil>=0.3.15' 'libsm' 'libxv') +makedepends=('pkgconfig') +options=(!libtool) +url="http://gstreamer.freedesktop.org/" +_relname=gst-plugins-base +source=(${url}/src/${_relname}/${_relname}-${pkgver}.tar.bz2) +md5sums=('0e0cd485311502ad1c0c028148e3186a') + +build() { + cd ${startdir}/src/${_relname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --disable-static --enable-experimental --disable-external \ + --disable-docs-build --disable-plugin-docs \ + --with-package-name="GStreamer Base Plugins (Archlinux)" \ + --with-package-origin="http://www.archlinux.org/" || return 1 + + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/community/gstreamer0.10/PKGBUILD b/abs/extra/community/gstreamer0.10/PKGBUILD new file mode 100644 index 0000000..52934e2 --- /dev/null +++ b/abs/extra/community/gstreamer0.10/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 18833 2008-11-09 14:51:01Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gstreamer0.10 +pkgver=0.10.21 +pkgrel=2 +pkgdesc="GStreamer Multimedia Framework" +arch=(i686 x86_64) +license=('LGPL') +url="http://gstreamer.freedesktop.org/" +depends=('libxml2>=2.6.32' 'glib2>=2.18.1') +makedepends=('perlxml' 'pkgconfig' 'gtk-doc') +options=('!libtool') +source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.bz2 + bgo555631.patch) +md5sums=('7bad90af3fd81a1535363cf85359125c' + '71eb301845184638e6556dacd1ca7d55') + +build() { + cd "${srcdir}/gstreamer-${pkgver}" + patch -Np0 -i "${srcdir}/bgo555631.patch" || return 1 + ./configure --prefix=/usr \ + --sysconfdir=/etc --localstatedir=/var \ + --disable-docs-build || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + cd "${pkgdir}/usr/bin" + + #Remove unversioned gst-* binaries to get rid of conflicts + for bins in `ls *-0.10`; do + rm -f ${bins/-0.10/} + done +} diff --git a/abs/extra/community/gstreamer0.10/bgo555631.patch b/abs/extra/community/gstreamer0.10/bgo555631.patch new file mode 100644 index 0000000..b9a18f4 --- /dev/null +++ b/abs/extra/community/gstreamer0.10/bgo555631.patch @@ -0,0 +1,88 @@ +--- libs/gst/base/gstbasetransform.c 2008/10/20 13:29:06 1.126 ++++ libs/gst/base/gstbasetransform.c 2008/10/21 16:30:41 1.127 +@@ -251,7 +251,7 @@ + /* upstream caps and size suggestions */ + GstCaps *sink_suggest; + guint size_suggest; +- gint suggest_pending; ++ gboolean suggest_pending; + + gboolean reconfigure; + }; +@@ -1224,7 +1224,7 @@ + gst_caps_unref (priv->sink_suggest); + priv->sink_suggest = gst_caps_ref (othercaps); + priv->size_suggest = size_suggest; +- g_atomic_int_set (&trans->priv->suggest_pending, 1); ++ trans->priv->suggest_pending = TRUE; + GST_OBJECT_UNLOCK (trans->sinkpad); + } + gst_caps_unref (othercaps); +@@ -1366,7 +1366,7 @@ + GstBaseTransform *trans; + GstBaseTransformPrivate *priv; + GstFlowReturn res; +- gboolean proxy, suggest; ++ gboolean proxy, suggest, same_caps; + GstCaps *sink_suggest; + guint size_suggest; + +@@ -1384,8 +1384,12 @@ + + /* we remember our previous alloc request to quickly see if we can proxy or + * not. We skip this check if we have a pending suggestion. */ +- if (g_atomic_int_get (&priv->suggest_pending) == 0 && caps && +- gst_caps_is_equal (priv->sink_alloc, caps)) { ++ GST_OBJECT_LOCK (pad); ++ same_caps = !priv->suggest_pending && caps && ++ gst_caps_is_equal (priv->sink_alloc, caps); ++ GST_OBJECT_UNLOCK (pad); ++ ++ if (same_caps) { + /* we have seen this before, see below if we need to proxy */ + GST_DEBUG_OBJECT (trans, "have old caps"); + sink_suggest = caps; +@@ -1414,7 +1418,7 @@ + size_suggest = size; + suggest = FALSE; + } +- g_atomic_int_set (&priv->suggest_pending, 0); ++ priv->suggest_pending = FALSE; + GST_OBJECT_UNLOCK (pad); + + /* check if we actually handle this format on the sinkpad */ +@@ -1462,7 +1466,10 @@ + } + } + /* remember the new caps */ ++ GST_OBJECT_LOCK (pad); + gst_caps_replace (&priv->sink_alloc, sink_suggest); ++ GST_OBJECT_UNLOCK (pad); ++ + proxy = priv->proxy_alloc; + GST_DEBUG_OBJECT (trans, "doing default alloc, proxy %d", proxy); + +@@ -1487,11 +1494,13 @@ + if (!gst_caps_is_equal (newcaps, caps)) { + GST_DEBUG_OBJECT (trans, "caps are new"); + /* we have new caps, see if we can proxy downstream */ +- if (gst_pad_peer_accept_caps (trans->sinkpad, newcaps)) { ++ if (gst_pad_peer_accept_caps (pad, newcaps)) { + /* peer accepts the caps, return a buffer in this format */ + GST_DEBUG_OBJECT (trans, "peer accepted new caps"); + /* remember the format */ ++ GST_OBJECT_LOCK (pad); + gst_caps_replace (&priv->sink_alloc, newcaps); ++ GST_OBJECT_UNLOCK (pad); + } else { + GST_DEBUG_OBJECT (trans, "peer did not accept new caps"); + /* peer does not accept the caps, free the buffer we received and +@@ -2306,7 +2315,7 @@ + caps = gst_caps_copy (caps); + trans->priv->sink_suggest = caps; + trans->priv->size_suggest = size; +- g_atomic_int_set (&trans->priv->suggest_pending, 1); ++ trans->priv->suggest_pending = TRUE; + GST_DEBUG_OBJECT (trans, "new suggest %" GST_PTR_FORMAT, caps); + GST_OBJECT_UNLOCK (trans->sinkpad); + } diff --git a/abs/extra/community/gtkglext/PKGBUILD b/abs/extra/community/gtkglext/PKGBUILD new file mode 100644 index 0000000..a310af6 --- /dev/null +++ b/abs/extra/community/gtkglext/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 9958 2008-08-21 02:56:50Z eric $ +# Maintainer: damir +# Contributor: Ben + +pkgname=gtkglext +pkgver=1.2.0 +pkgrel=1 +pkgdesc="opengl extensions for gtk2" +arch=('i686' 'x86_64') +url="http://gtkglext.sourceforge.net/" +depends=('gtk2' 'pango') +makedepends=('gcc>=4.0.3') +options=('!libtool') +source=("http://downloads.sourceforge.net/sourceforge/gtkglext/$pkgname-$pkgver.tar.bz2") # $pkgname-$pkgver-pangox.patch) +md5sums=('ed7ba24ce06a8630c07f2d0ee5f04ab4') + +build() { + cd $startdir/src/$pkgname-$pkgver + # fix "undefined reference to `pango_x_font*" trouble + #cat $startdir/src/$pkgname-$pkgver-pangox.patch | patch -p1 || return 1 + autoconf --force + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install +} diff --git a/abs/extra/community/gtkglext/gtkglext-1.0.6-pangox.patch b/abs/extra/community/gtkglext/gtkglext-1.0.6-pangox.patch new file mode 100644 index 0000000..8cd589e --- /dev/null +++ b/abs/extra/community/gtkglext/gtkglext-1.0.6-pangox.patch @@ -0,0 +1,30 @@ +--- gtkglext-1.0.6/configure.in 2005-09-10 16:45:06.000000000 +0200 ++++ gtkglext-1.0.6.az/configure.in 2005-09-10 16:46:01.000000000 +0200 +@@ -59,6 +59,10 @@ + m4_define([pango_pkg], [pango]) + m4_define([pango_required_version], [1.0.0]) + ++# Pangox ++m4_define([pangox_pkg], [pangox]) ++m4_define([pangox_required_version], [1.0.0]) ++ + # PangoFT2 + m4_define([pangoft2_pkg], [pangoft2]) + m4_define([pangoft2_required_version], [1.0.0]) +@@ -345,6 +349,7 @@ + gtk_pkg >= gtk_required_version \ + gdk_pkg >= gdk_required_version \ + pango_pkg >= pango_required_version \ ++pangox_pkg >= pango_required_version \ + gmodule_pkg >= gmodule_required_version \ + ]) + +@@ -789,7 +794,7 @@ + # CFLAGS and LIBS + ################################################## + +-GDKGLEXT_PACKAGES="gdk_pkg pango_pkg gmodule_pkg" ++GDKGLEXT_PACKAGES="gdk_pkg pango_pkg pangox_pkg gmodule_pkg" + GDKGLEXT_EXTRA_CFLAGS="$GL_CFLAGS $GDKGLEXT_WIN_CFLAGS" + GDKGLEXT_EXTRA_LIBS="$GL_LIBS $GDKGLEXT_WIN_LIBS" + GDKGLEXT_DEP_CFLAGS="$GDKGLEXT_EXTRA_CFLAGS `$PKG_CONFIG --cflags $GDKGLEXT_PACKAGES`" diff --git a/abs/extra/community/ircii/PKGBUILD b/abs/extra/community/ircii/PKGBUILD new file mode 100644 index 0000000..2eb8ad6 --- /dev/null +++ b/abs/extra/community/ircii/PKGBUILD @@ -0,0 +1,16 @@ +# Contributor: Mateusz Herych +pkgname=ircii +pkgver=20060725 +pkgrel=1 +pkgdesc="IRC Client" +arch=('i686') +url="http://www.eterna.com.au/ircii/" +license=('BSD') +source=(ftp://ircii.warped.com/pub/ircII/ircii-$pkgver.tar.bz2) +md5sums=('280ae54367627591c1c43c765eb9d59b') +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make install DESTDIR=$startdir/pkg || return 1 +} diff --git a/abs/extra/community/jdk/PKGBUILD b/abs/extra/community/jdk/PKGBUILD new file mode 100644 index 0000000..31924ce --- /dev/null +++ b/abs/extra/community/jdk/PKGBUILD @@ -0,0 +1,50 @@ +# Maintainer: Geoffroy Carrier +# Previous Maintainer: Jason Chu +pkgname=jdk +pkgver=6u12 +pkgrel=1 +pkgdesc="Sun's Java Development Kit" +arch=(i686 x86_64) + [ "${CARCH}" = "i686" ] && ARCH=i586 + [ "${CARCH}" = "x86_64" ] && ARCH=amd64 +url="http://java.sun.com" +depends=('glibc' 'jre') +install="jdk.install" +source=(http://download.java.net/dlj/binaries/jdk-${pkgver}-dlj-linux-${ARCH}.bin + https://jdk-distros.dev.java.net/source/browse/*checkout*/jdk-distros/trunk/utils/construct.sh + jdk.profile) +[ "$CARCH" = "i686" ] && md5sums=('560a51cfeecc4918d01ca29abc858d52' + '94065b612df0046d9ae758943f9f6a75' + '1e937a8bbca36330f730fc17663e3625') +[ "$CARCH" = "x86_64" ] && md5sums=('0f687b6dbfe54e117bb0d9e090fda20b' + '94065b612df0046d9ae758943f9f6a75' + '1e937a8bbca36330f730fc17663e3625') +replaces=('j2sdk') +conflicts=('java-environment' 'j2sdk') +provides=('java-environment' 'j2sdk') +license=('custom') + +build() { + cd ${startdir}/src + + mkdir unbundle-jdk + cd unbundle-jdk + + sh ../jdk-${pkgver}-dlj-linux-${ARCH}.bin --accept-license + + cd .. + + sh construct.sh unbundle-jdk linux-jdk linux-jre + + rm -rf linux-jdk/jre + + mkdir -p ${startdir}/pkg/opt + mv linux-jdk ${startdir}/pkg/opt/java + + install -D -m755 ${startdir}/src/${pkgname}.profile ${startdir}/pkg/etc/profile.d/${pkgname}.sh + + mkdir -p $startdir/pkg/usr/share/licenses/jdk + cp $startdir/pkg/opt/java/COPYRIGHT $startdir/pkg/usr/share/licenses/jdk + cp $startdir/pkg/opt/java/LICENSE $startdir/pkg/usr/share/licenses/jdk + cp $startdir/pkg/opt/java/THIRDPARTYLICENSEREADME.txt $startdir/pkg/usr/share/licenses/jdk +} diff --git a/abs/extra/community/jdk/jdk.install b/abs/extra/community/jdk/jdk.install new file mode 100644 index 0000000..6fb8be5 --- /dev/null +++ b/abs/extra/community/jdk/jdk.install @@ -0,0 +1,14 @@ +post_upgrade() { + post_install $1 +} + +post_install() { + echo "The jdk package is licensed software." + echo "You MUST read and agree to the license stored in" + echo "/opt/java/LICENSE before using it." + +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/jdk/jdk.profile b/abs/extra/community/jdk/jdk.profile new file mode 100644 index 0000000..b39d49c --- /dev/null +++ b/abs/extra/community/jdk/jdk.profile @@ -0,0 +1,3 @@ +export J2SDKDIR=/opt/java +export PATH=$PATH:/opt/java/bin +export JAVA_HOME=/opt/java diff --git a/abs/extra/community/jre/PKGBUILD b/abs/extra/community/jre/PKGBUILD new file mode 100644 index 0000000..cd9a932 --- /dev/null +++ b/abs/extra/community/jre/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD,v 1.6 2009/06/01 19:10:05 wonder Exp $ +# Maintainer: Jason Chu + +pkgname=jre +pkgver=6u14 +pkgrel=1 +pkgdesc="Sun's java runtime environment" +arch=('i686' 'x86_64') + [ "$CARCH" = "i686" ] && _arch=i586 + [ "$CARCH" = "x86_64" ] && _arch=amd64 +url="http://java.sun.com" +depends=('glibc' 'libxtst') +install="jre.install" +source=(http://download.java.net/dlj/binaries/jdk-$pkgver-dlj-linux-$_arch.bin + https://jdk-distros.dev.java.net/source/browse/*checkout*/jdk-distros/trunk/utils/construct.sh + jre.profile) +[ "$CARCH" = "i686" ] && md5sums=('299c445e4b14bfbb2a05323734d89c0c' + '94065b612df0046d9ae758943f9f6a75' + '50b4f5ac4129097461d246645d73a622') +[ "$CARCH" = "x86_64" ] && md5sums=('6e866db04748296fc34ed83a92420403' + '94065b612df0046d9ae758943f9f6a75' + '50b4f5ac4129097461d246645d73a622') + + +replaces=('j2re') +conflicts=('j2re' 'java-runtime') +provides=('j2re' 'java-runtime=6') +license=('custom') + +build() { + cd $startdir/src + + mkdir unbundle-jdk + cd unbundle-jdk + + sh ../jdk-$pkgver-dlj-linux-$_arch.bin --accept-license + + cd .. + + sh construct.sh unbundle-jdk linux-jdk linux-jre + + mkdir -p $startdir/pkg/opt/java + mv linux-jdk/jre $startdir/pkg/opt/java + + install -D -m755 $startdir/src/${pkgname}.profile $startdir/pkg/etc/profile.d/${pkgname}.sh + + mkdir -p $startdir/pkg/usr/lib/mozilla/plugins + + if [ "$CARCH" = "i686" ]; then + ln -s /opt/java/jre/lib/i386/libnpjp2.so $startdir/pkg/usr/lib/mozilla/plugins + else ln -s /opt/java/jre/lib/amd64/libnpjp2.so $startdir/pkg/usr/lib/mozilla/plugins + fi + + mkdir -p $startdir/pkg/usr/share/licenses/jre + cp $startdir/pkg/opt/java/jre/COPYRIGHT $startdir/pkg/usr/share/licenses/jre + cp $startdir/pkg/opt/java/jre/LICENSE $startdir/pkg/usr/share/licenses/jre + cp $startdir/pkg/opt/java/jre/THIRDPARTYLICENSEREADME.txt $startdir/pkg/usr/share/licenses/jre +} diff --git a/abs/extra/community/jre/jre.install b/abs/extra/community/jre/jre.install new file mode 100644 index 0000000..4e557a7 --- /dev/null +++ b/abs/extra/community/jre/jre.install @@ -0,0 +1,26 @@ +post_upgrade() { + post_install $1 +} + +post_install() { + echo "The jre package is licensed software." + echo "You MUST read and agree to the license stored in" + echo "/opt/java/jre/LICENSE before using it." + if [ -f /etc/mailcap ] ; then + sed -e '/application\/x-java-jnlp-file/d' -i /etc/mailcap + fi + echo 'application/x-java-jnlp-file;/opt/java/jre/bin/javaws %s' >>/etc/mailcap +} + +post_remove() { + mailcap=$(grep -v 'application/x-java-jnlp-file' /etc/mailcap) + if [ "$mailcap" != "" ] ; then + sed -e '/application\/x-java-jnlp-file/d' -i /etc/mailcap + else + rm /etc/mailcap + fi +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/jre/jre.profile b/abs/extra/community/jre/jre.profile new file mode 100644 index 0000000..af3e373 --- /dev/null +++ b/abs/extra/community/jre/jre.profile @@ -0,0 +1,4 @@ +export PATH=$PATH:/opt/java/jre/bin +if [ ! -f /etc/profile.d/jdk.sh ]; then + export JAVA_HOME=/opt/java/jre +fi diff --git a/abs/extra/community/libdvbpsi/PKGBUILD b/abs/extra/community/libdvbpsi/PKGBUILD new file mode 100644 index 0000000..5b261a2 --- /dev/null +++ b/abs/extra/community/libdvbpsi/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 14016 2008-10-01 07:44:22Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Gilles CHAUVIN + +pkgname=libdvbpsi +pkgver=0.1.6 +pkgrel=3 +pkgdesc="MPEG TS and DVB PSI tables library (needed by vlc for streaming)" +arch=('i686' 'x86_64') +license=('GPL2') +depends=('glibc') +options=('!libtool') +replaces=('libdvbpsi4' 'libdvbpsi5') +conflicts=('libdvbpsi4' 'libdvbpsi5') +url="http://developers.videolan.org/libdvbpsi/" +source=(http://download.videolan.org/pub/libdvbpsi/0.1.6/libdvbpsi5-$pkgver.tar.bz2) +md5sums=('bd2d9861be3311e1e03c91cd9345f542') + +build() +{ + cd $startdir/src/libdvbpsi5-$pkgver + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install +} diff --git a/abs/extra/community/libelf/PKGBUILD b/abs/extra/community/libelf/PKGBUILD new file mode 100644 index 0000000..0cf517b --- /dev/null +++ b/abs/extra/community/libelf/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 20525 2008-12-05 13:31:11Z jgc $ +# Maintainer: arjan +# Contributor: Tom Newsom + +pkgname=libelf +pkgver=0.8.10 +pkgrel=3 +pkgdesc="libelf is a free ELF object file access library" +arch=(i686 x86_64) +license=('GPL') +source=(http://www.mr511.de/software/${pkgname}-${pkgver}.tar.gz) +url="http://directory.fsf.org/libs/misc/libelf.html" +depends=('glibc') +md5sums=('9db4d36c283d9790d8fa7df1f4d7b4d9') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --enable-shared \ + --enable-gnu-names --enable-compat || return 1 + make || return 1 + make prefix="${pkgdir}/usr" install || return 1 +} diff --git a/abs/extra/community/libmatroska/PKGBUILD b/abs/extra/community/libmatroska/PKGBUILD new file mode 100644 index 0000000..0011c13 --- /dev/null +++ b/abs/extra/community/libmatroska/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir +# Contributor 03/08/04 + +pkgname=libmatroska +pkgver=0.8.1 +pkgrel=1 +pkgdesc="Matroska library" +arch=(i686 x86_64) +url="http://dl.matroska.org/downloads/libmatroska/" +depends=('libebml>=0.7.6') +#source=(http://www.bunkus.org/videotools/mkvtoolnix/sources/$pkgname-$pkgver.tar.bz2) +source=($url/$pkgname-$pkgver.tar.bz2) + +build() { + cd $startdir/src/$pkgname-$pkgver/make/linux + make sharedlib || return 1 + make prefix=$startdir/pkg/usr install +} + +md5sums=('20cf624ace0c58a54c7752eebfbc0b19') diff --git a/abs/extra/community/libmodplug/PKGBUILD b/abs/extra/community/libmodplug/PKGBUILD new file mode 100644 index 0000000..12c67db --- /dev/null +++ b/abs/extra/community/libmodplug/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot +# Contributor: Patrick Leslie Polzer + +pkgname=libmodplug +pkgver=0.8.4 +pkgrel=1 +pkgdesc="A MOD playing library" +arch=(i686 x86_64) +url="http://modplug-xmms.sourceforge.net/" +license=('GPL') +depends=(gcc-libs) +source=(http://downloads.sf.net/sourceforge/modplug-xmms/libmodplug-${pkgver}.tar.gz) +md5sums=('091bd1168a524a4f36fc61f95209e7e4') +options=('!libtool') + +build() { + cd ${startdir}/src/libmodplug-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} + diff --git a/abs/extra/community/libmpcdec/PKGBUILD b/abs/extra/community/libmpcdec/PKGBUILD new file mode 100644 index 0000000..feeaf8b --- /dev/null +++ b/abs/extra/community/libmpcdec/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot + +pkgname=libmpcdec +pkgver=1.2.6 +pkgrel=1 +pkgdesc="Musepack decoding library" +arch=(i686 x86_64) +license=('custom') +depends=('glibc') +options=('!libtool') +source=(http://files.musepack.net/source/${pkgname}-${pkgver}.tar.bz2) +url="http://musepack.net/" +md5sums=('7f7a060e83b4278acf4b77d7a7b9d2c0') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-static + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + install -Dm644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING +} diff --git a/abs/extra/community/libnetfilter_queue/PKGBUILD b/abs/extra/community/libnetfilter_queue/PKGBUILD new file mode 100644 index 0000000..986c916 --- /dev/null +++ b/abs/extra/community/libnetfilter_queue/PKGBUILD @@ -0,0 +1,21 @@ +# Contributor: Kevin Edmonds +# Maintainer: Filip Wojciechowski, filip at loka dot pl +pkgname=libnetfilter_queue +pkgver=0.0.16 +pkgrel=1 +pkgdesc="userspace library providing an API to packets that have been queued by the kernel packet filter" +arch=('i686' 'x86_64') +url="http://www.netfilter.org/projects/libnetfilter_queue/index.html" +license=('GPL') +depends=(libnfnetlink) +makedepends=(pkgconfig) +options=('!libtool') +source=(http://www.netfilter.org/projects/$pkgname/files/$pkgname-$pkgver.tar.bz2) +md5sums=('b36664e6cd39edbfe46b416a86118add') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/community/libnfnetlink/PKGBUILD b/abs/extra/community/libnfnetlink/PKGBUILD new file mode 100644 index 0000000..2e0242e --- /dev/null +++ b/abs/extra/community/libnfnetlink/PKGBUILD @@ -0,0 +1,18 @@ +pkgname=libnfnetlink +pkgver=0.0.40 +pkgrel=1 +pkgdesc="low-level library for netfilter related kernel/userspace communication" +depends=(glibc) +url="http://www.netfilter.org/projects/libnfnetlink/index.html" +license=('GPL') +arch=('i686' 'x86_64') +options=('!libtool') +source=(http://www.netfilter.org/projects/$pkgname/files/$pkgname-$pkgver.tar.bz2) +md5sums=('3fe19dc4b05ba7e7e6216123097c2819') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/community/liboil/PKGBUILD b/abs/extra/community/liboil/PKGBUILD new file mode 100644 index 0000000..23230f5 --- /dev/null +++ b/abs/extra/community/liboil/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 14430 2008-10-06 17:28:40Z jgc $ +# Maintainer: Jan de Groot + +pkgname=liboil +pkgver=0.3.15 +pkgrel=1 +pkgdesc="Library of simple functions that are optimized for various CPUs." +arch=('i686' 'x86_64') +license=('custom') +url="http://liboil.freedesktop.org/" +depends=('glibc') +makedepends=('glib2' 'pkgconfig' 'docbook-xsl') +options=('!libtool' '!makeflags') +source=(${url}/download/${pkgname}-${pkgver}.tar.gz) +md5sums=('11dd39b1ca13ce2e0618d4df8303f137') + +build() { + unset CFLAGS + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/liboil" + install -m644 COPYING "${pkgdir}/usr/share/licenses/liboil/" +} diff --git a/abs/extra/community/libshout/PKGBUILD b/abs/extra/community/libshout/PKGBUILD new file mode 100644 index 0000000..b23c88e --- /dev/null +++ b/abs/extra/community/libshout/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 19191 2008-11-17 11:43:24Z jgc $ +# Maintainer: Giovanni Scafora +# Contributor: arjan +# Contributor: Jason Chu + +pkgname=libshout +pkgver=2.2.2 +pkgrel=2 +pkgdesc="Library for accessing a shoutcast/icecast server" +arch=('i686' 'x86_64') +depends=('libvorbis' 'libtheora' 'speex') +url="http://www.icecast.org/" +options=('!libtool' 'force') +license=('LGPL2') +source=(http://downloads.xiph.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('4f75fc9901c724b712c371c9a1e782d3') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1 + make LDFLAGS+=-lspeex || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/community/libstdc++5/PKGBUILD b/abs/extra/community/libstdc++5/PKGBUILD new file mode 100644 index 0000000..00bee17 --- /dev/null +++ b/abs/extra/community/libstdc++5/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot + +pkgname=libstdc++5 +pkgver=3.3.6 +pkgrel=2 +pkgdesc="GNU Standard C++ library version 3" +arch=(i686 x86_64) +url="http://gcc.gnu.org" +depends=('gcc-libs') +makedepends=('binutils' 'gcc') +options=(!libtool) +source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++}-${pkgver}.tar.bz2 gcc-3.4.3-no_multilib_amd64.patch) +md5sums=(18c52e6fb8966b7700665dca289d077f 6b3d00b8d079805be1b895f7f6ce47a0 \ + 088e0807e677010cafe4e590e8711be1) + +build(){ + export MAKEFLAGS="-j1" + export CFLAGS=$(echo $CFLAGS | sed 's|-mtune=generic||') + export CXXFLAGS=$(echo $CXXFLAGS | sed 's|-mtune=generic||') + cd ${startdir}/src/gcc-${pkgver} + + if [ "$CARCH" = "x86_64" ]; then + patch -Np0 -i ../gcc-3.4.3-no_multilib_amd64.patch || return 1 + fi + + # No fixincludes + sed -i -e 's@\./fixinc\.sh@-c true@' gcc/Makefile.in + mkdir ../gcc-build + cd ../gcc-build + ../gcc-${pkgver}/configure --prefix=/usr --enable-shared \ + --enable-languages=c++ --enable-threads=posix --enable-__cxa_atexit \ + --disable-multilib --libdir=/usr/lib + make all-target-libstdc++-v3 BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || return 1 + make DESTDIR=${startdir}/pkg install-target-libstdc++-v3 || return 1 + + # Remove includefiles and libs provided by gcc + rm -rf ${startdir}/pkg/usr/{include,share/locale} + rm -f ${startdir}/pkg/usr/lib/*.a + rm -f ${startdir}/pkg/usr/lib/libstdc++.so +} diff --git a/abs/extra/community/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch b/abs/extra/community/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch new file mode 100644 index 0000000..dce10d4 --- /dev/null +++ b/abs/extra/community/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch @@ -0,0 +1,11 @@ +--- gcc/config/i386/t-linux64.orig 2003-06-28 00:19:59.000000000 +0000 ++++ gcc/config/i386/t-linux64 2003-06-28 00:20:07.000000000 +0000 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = . ../lib + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib diff --git a/abs/extra/community/libv4l/PKGBUILD b/abs/extra/community/libv4l/PKGBUILD new file mode 100644 index 0000000..3afcf6c --- /dev/null +++ b/abs/extra/community/libv4l/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 28297 2009-02-28 18:20:12Z thomas $ +# Maintainer: Thomas Baechler +pkgname=libv4l +pkgver=0.5.8 +pkgrel=1 +pkgdesc="Userspace library for Video 4 Linux (1 and 2)" +arch=('i686' 'x86_64') +url="http://hansdegoede.livejournal.com/3636.html" +license=('LGPL') +depends=('glibc') +source=(http://people.atrpms.net/~hdegoede/$pkgname-$pkgver.tar.gz) +md5sums=('4f8ae9c743b215c8ac0e553eaa01e980') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + make || return 1 + make install PREFIX="/usr" DESTDIR="$pkgdir/" +} diff --git a/abs/extra/community/lua/PKGBUILD b/abs/extra/community/lua/PKGBUILD new file mode 100644 index 0000000..ff0b435 --- /dev/null +++ b/abs/extra/community/lua/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 10401 2008-08-29 00:31:46Z allan $ +# Maintainer: Juergen Hoetzel +# Contributor: Damir Perisa + +pkgname=lua +pkgver=5.1.4 +pkgrel=3 +pkgdesc="A powerful light-weight programming language designed for extending applications." +arch=(i686 x86_64) +url="http://www.lua.org/" +depends=('readline' 'ncurses') +license=(MIT) +options=('!makeflags') +source=($url/ftp/$pkgname-$pkgver.tar.gz $pkgname-arch.patch 'lua-5.1-cflags.diff') +md5sums=('d0870f2de55d59c1c8419f36e8fac150' + '1bd1164a19abf9165e231ba0d8a0bbc7' + '249582bf1fd861ccf492d2c35a9fe732') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -p1 -i $startdir/src/$pkgname-arch.patch || return 1 + + [ "$CARCH" == "x86_64" ] && patch -Np1 -i ../lua-5.1-cflags.diff + [ "$CARCH" == "x86_64" ] && export CFLAGS="$CFLAGS -fPIC" + make INSTALL_DATA="cp -d" TO_LIB="liblua.a liblua.so liblua.so.5.1" LUA_SO=liblua.so INSTALL_TOP=$startdir/pkg/usr INSTALL_MAN=$startdir/pkg/usr/share/man/man1 \ + linux install || return 1 + install -D -m 644 etc/lua.pc $startdir/pkg/usr/lib/pkgconfig/lua.pc + install -D -m644 COPYRIGHT $startdir/pkg/usr/share/licenses/$pkgname/COPYRIGHT +} +# vim: ts=2 sw=2 et ft=sh diff --git a/abs/extra/community/lua/lua-5.1-cflags.diff b/abs/extra/community/lua/lua-5.1-cflags.diff new file mode 100644 index 0000000..db658ae --- /dev/null +++ b/abs/extra/community/lua/lua-5.1-cflags.diff @@ -0,0 +1,13 @@ +diff -Naur lua-5.1.orig/src/Makefile lua-5.1/src/Makefile +--- lua-5.1.orig/src/Makefile 2006-02-16 16:45:09.000000000 +0100 ++++ lua-5.1/src/Makefile 2006-03-01 14:55:29.000000000 +0100 +@@ -8,7 +8,8 @@ + PLAT= none + + CC= gcc +-CFLAGS= -O2 -Wall $(MYCFLAGS) ++CFLAGS ?= -O2 -Wall ++CFLAGS += $(MYCFLAGS) + AR= ar rcu + RANLIB= ranlib + RM= rm -f diff --git a/abs/extra/community/lua/lua-5.1.3-official-patch1.diff b/abs/extra/community/lua/lua-5.1.3-official-patch1.diff new file mode 100644 index 0000000..dec8fba --- /dev/null +++ b/abs/extra/community/lua/lua-5.1.3-official-patch1.diff @@ -0,0 +1,12 @@ +--- src/lbaselib.c ++++ src/lbaselib.c +443c443,444 +< ** functions to consume unlimited stack space. +--- +> ** functions to consume unlimited stack space. (must be smaller than +> ** -LUA_REGISTRYINDEX) +445,446c446 +< #define LUAI_MCS_AUX ((int)(INT_MAX / (4*sizeof(LUA_NUMBER)))) +< #define LUAI_MAXCSTACK (LUAI_MCS_AUX > SHRT_MAX ? SHRT_MAX : LUAI_MCS_AUX) +--- +> #define LUAI_MAXCSTACK 8000 diff --git a/abs/extra/community/lua/lua-5.1.3-official-patch2.diff b/abs/extra/community/lua/lua-5.1.3-official-patch2.diff new file mode 100644 index 0000000..05ac244 --- /dev/null +++ b/abs/extra/community/lua/lua-5.1.3-official-patch2.diff @@ -0,0 +1,11 @@ +--- src/lbaselib.c (old) ++++ src/lbaselib.c (new) +@@ -526,7 +526,7 @@ + status = lua_resume(co, narg); + if (status == 0 || status == LUA_YIELD) { + int nres = lua_gettop(co); +- if (!lua_checkstack(L, nres)) ++ if (!lua_checkstack(L, nres + 1)) + luaL_error(L, "too many results to resume"); + lua_xmove(co, L, nres); /* move yielded values */ + return nres; diff --git a/abs/extra/community/lua/lua-5.1.3-official-patch3.diff b/abs/extra/community/lua/lua-5.1.3-official-patch3.diff new file mode 100644 index 0000000..8126ff5 --- /dev/null +++ b/abs/extra/community/lua/lua-5.1.3-official-patch3.diff @@ -0,0 +1,21 @@ +--- src/lapi.c (old) ++++ src/lapi.c (new) +@@ -93,15 +93,14 @@ + + + LUA_API int lua_checkstack (lua_State *L, int size) { +- int res; ++ int res = 1; + lua_lock(L); +- if ((L->top - L->base + size) > LUAI_MAXCSTACK) ++ if (size > LUAI_MAXCSTACK || (L->top - L->base + size) > LUAI_MAXCSTACK) + res = 0; /* stack overflow */ +- else { ++ else if (size > 0) { + luaD_checkstack(L, size); + if (L->ci->top < L->top + size) + L->ci->top = L->top + size; +- res = 1; + } + lua_unlock(L); + return res; diff --git a/abs/extra/community/lua/lua-5.1.3-official-patch4.diff b/abs/extra/community/lua/lua-5.1.3-official-patch4.diff new file mode 100644 index 0000000..1d03f37 --- /dev/null +++ b/abs/extra/community/lua/lua-5.1.3-official-patch4.diff @@ -0,0 +1,18 @@ +--- src/lbaselib.c (old) ++++ src/lbaselib.c (new) +@@ -344,10 +344,12 @@ + luaL_checktype(L, 1, LUA_TTABLE); + i = luaL_optint(L, 2, 1); + e = luaL_opt(L, luaL_checkint, 3, luaL_getn(L, 1)); ++ if (i > e) return 0; /* empty range */ + n = e - i + 1; /* number of elements */ +- if (n <= 0) return 0; /* empty range */ +- luaL_checkstack(L, n, "table too big to unpack"); +- for (; i<=e; i++) /* push arg[i...e] */ ++ if (n <= 0 || !lua_checkstack(L, n)) /* n <= 0 means arith. overflow */ ++ return luaL_error(L, "too many results to unpack"); ++ lua_rawgeti(L, 1, i); /* push arg[i] (avoiding overflow problems) */ ++ while (i++ < e) /* push arg[i + 1...e] */ + lua_rawgeti(L, 1, i); + return n; + } diff --git a/abs/extra/community/lua/lua-arch.patch b/abs/extra/community/lua/lua-arch.patch new file mode 100644 index 0000000..7d6d331 --- /dev/null +++ b/abs/extra/community/lua/lua-arch.patch @@ -0,0 +1,55 @@ +diff -ur lua-5.1.orig/etc/lua.pc lua-5.1/etc/lua.pc +--- lua-5.1.orig/etc/lua.pc 2006-03-21 11:51:53.000000000 +0100 ++++ lua-5.1/etc/lua.pc 2006-03-21 11:52:05.000000000 +0100 +@@ -6,7 +6,7 @@ + V= 5.1 + + # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/' +-prefix= /usr/local ++prefix= /usr + INSTALL_BIN= ${prefix}/bin + INSTALL_INC= ${prefix}/include + INSTALL_LIB= ${prefix}/lib +diff -ur lua-5.1.orig/src/Makefile lua-5.1/src/Makefile +--- lua-5.1.orig/src/Makefile 2006-03-21 11:51:53.000000000 +0100 ++++ lua-5.1/src/Makefile 2006-03-21 11:52:09.000000000 +0100 +@@ -23,6 +23,7 @@ + PLATS= aix ansi bsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \ + lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \ + lundump.o lvm.o lzio.o +@@ -36,7 +37,7 @@ + LUAC_O= luac.o print.o + + ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O) +-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) + ALL_A= $(LUA_A) + + default: $(PLAT) +@@ -51,6 +52,10 @@ + $(AR) $@ $? + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -shared -ldl -Wl,-soname,liblua.so -o $@.5.1 $? $(MYLDFLAGS) ++ ln -s $@.5.1 $@ ++ + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) + +diff -ur lua-5.1.orig/src/luaconf.h lua-5.1/src/luaconf.h +--- lua-5.1.orig/src/luaconf.h 2006-03-21 11:51:53.000000000 +0100 ++++ lua-5.1/src/luaconf.h 2006-03-21 11:52:05.000000000 +0100 +@@ -82,7 +82,7 @@ + ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" + + #else +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/5.1/" + #define LUA_CDIR LUA_ROOT "lib/lua/5.1/" + #define LUA_PATH_DEFAULT \ diff --git a/abs/extra/community/mmv/PKGBUILD b/abs/extra/community/mmv/PKGBUILD new file mode 100644 index 0000000..0ccec1b --- /dev/null +++ b/abs/extra/community/mmv/PKGBUILD @@ -0,0 +1,35 @@ +# Contributor: blue_lizard lizard@blue.dyn-o-saur.com + +pkgname=mmv +pkgver=1.01b.orig +pkgrel=1 +pkgdesc="multiple move files" +depends=('glibc' 'sed') +conflicts=() +backup=() +source=(http://ftp.de.debian.org/debian/pool/main/m/mmv/mmv_1.01b.orig.tar.gz http://ftp.de.debian.org/debian/pool/main/m/mmv/mmv_1.01b-14.diff.gz) +md5sums=('1b2135ab2f17bdfa9e08debbb3c46ad8' 'a69eff7501e63c0bd1fcd231bf6949f1') +url="http://linux.maruhn.com/sec/mmv.html" +license="GPL" +install=$pkgname.install +arch=('i686') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -p1 < ../mmv_1.01b-14.diff + cat Makefile | sed -e "s/LDFLAGS.\s=-s -N/LDFLAGS =-s/g" > /tmp/Makefile + mv /tmp/Makefile ./ + make || return 1 + mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/usr/man/man1 + make DESTDIR=$startdir/pkg install + chmod 644 $startdir/pkg/usr/man/man1/mmv.1 + cd $startdir/pkg/usr/bin + ln -s mmv mcp + ln -s mmv mad + ln -s mmv mln + cd $startdir/pkg/usr/man/man1/ + ln -s mmv.1 mcp.1 + ln -s mmv.1 mad.1 + ln -s mmv.1 mln.1 +} diff --git a/abs/extra/community/mmv/mmv.install b/abs/extra/community/mmv/mmv.install new file mode 100644 index 0000000..9b23e48 --- /dev/null +++ b/abs/extra/community/mmv/mmv.install @@ -0,0 +1,19 @@ +# arg 1: the new package version +post_install() { + echo ">>>" + echo ">>>" + echo ">>>" + echo ">>> many thanks to the debian people who provide the sources" + echo ">>>" +} + +# arg 1: the old package version +post_remove() { + echo ">>>" + echo ">>>" + echo ">>>" +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/moblock/MoBlock-nfq.sh.patch b/abs/extra/community/moblock/MoBlock-nfq.sh.patch new file mode 100644 index 0000000..15e742f --- /dev/null +++ b/abs/extra/community/moblock/MoBlock-nfq.sh.patch @@ -0,0 +1,53 @@ +--- MoBlock-0.8/MoBlock-nfq.sh.orig 2008-11-30 03:44:02.000000000 -0500 ++++ MoBlock-0.8/MoBlock-nfq.sh 2008-12-01 18:56:15.000000000 -0500 +@@ -3,14 +3,10 @@ + # MoBlock.sh - MoBlock start script + # --------------------------------- + +-ACTIVATE_CHAINS=1 +-WHITE_TCP_IN="" +-WHITE_UDP_IN="" +-WHITE_TCP_OUT="" +-WHITE_UDP_OUT="" +-WHITE_TCP_FORWARD="" +-WHITE_UDP_FORWARD="" ++# Some configuration options have been moved to an external conf file ++# This should make maintenance and upgrading easier + ++. /etc/moblock/config + + PIDF=/var/run/moblock.pid + +@@ -78,6 +74,17 @@ + iptables -I MOBLOCK_FW -p udp --dport $PORT -j ACCEPT + done + ++# For added IP whitelisting support ++ ++for IP in $WHITE_IP_OUT; do ++ iptables -I MOBLOCK_OUT -p all -m iprange --dst-range $IP -j ACCEPT ++done ++for IP in $WHITE_IP_IN; do ++ iptables -I MOBLOCK_IN -p all -m iprange --dst-range $IP -j ACCEPT ++done ++for IP in $WHITE_IP_FW; do ++ iptables -I MOBLOCK_FW -p all -m iprange --dst-range $IP -j ACCEPT ++done + + # Loopback traffic fix + +@@ -85,7 +92,8 @@ + iptables -I OUTPUT -p all -o lo -j ACCEPT + + # Here you can change block list and log files +-./moblock -p /etc/guarding.p2p ./moblock.log ++#./moblock -p /etc/guarding.p2p ./moblock.log ++/usr/bin/moblock -p /etc/moblock/banned.list /var/log/moblock.log >/dev/null 2>&1 + + # On exit delete the rules we added + +@@ -108,3 +116,4 @@ + if [ -f $PIDF ]; then + rm $PIDF; + fi ++ diff --git a/abs/extra/community/moblock/PKGBUILD b/abs/extra/community/moblock/PKGBUILD new file mode 100755 index 0000000..f6c7e51 --- /dev/null +++ b/abs/extra/community/moblock/PKGBUILD @@ -0,0 +1,56 @@ +# Contributor: Kevin Edmonds +# Maintainer: Filip Wojciechowski, filip at loka dot pl + +pkgname=moblock +pkgver=0.9rc2 +pkgrel=8 +pkgdesc="Console application that blocks connections from/to hosts listed in a file in peerguardian format" +arch=('i686' 'x86_64') +url="http://moblock.berlios.de/" +license=('GPL') +depends=(libnetfilter_queue iptables) +backup=(etc/moblock/config) +install=moblock.install +source=(http://download.berlios.de/moblock/MoBlock-0.8-i586.tar.bz2 \ + moblock_0.9_rc2.patch \ + MoBlock-nfq.sh.patch \ + moblock_include.patch \ + config \ + moblock-update \ + moblock \ + moblock.logrotate) +md5sums=('199967adb48b153be90db10fe21325c5' + 'e4e33c515677fa53eaca4616591d4e44' + '1193adccce219d31a7c0540807a4a8e8' + 'b23b5214965df59632de5cec317ddbde' + '840bb52a99529305e49212a69c9ced8a' + '49a16feb221d4d912cc7200313517f7b' + '1bdc949fcff0ce751a5096e489061513' + 'a8285fd3e68043cd8d21993d3dbbf9d4') + +build() { + cd $startdir/src/MoBlock-0.8 + + # patch to update moblock to the latest cvs version + patch -Np1 -i ../moblock_0.9_rc2.patch || return 1 + # add IP whitelisting and move configs to a separate conf file + patch -Np1 -i ../MoBlock-nfq.sh.patch || return 1 + # necessary to make moblock build with recent kernels + patch -Np1 -i ../moblock_include.patch || return 1 + + # change the CFLAGS for both i686 and x84_64 builds + sed -i "s#-Wall -O.*-ffast-math#$CFLAGS#g" Makefile + + # build + make || return 1 + + #move the files + install -D -m 755 ./MoBlock-nfq.sh $startdir/pkg/usr/bin/moblock-nfq || return 1 + install -D -m 744 ./moblock $startdir/pkg/usr/bin/moblock || return 1 + install -D -m 755 ../moblock-update $startdir/pkg/usr/bin/moblock-update || return 1 + install -D -m 744 ../moblock $startdir/pkg/etc/rc.d/moblock || return 1 + install -D -m 644 ../config $startdir/pkg/etc/moblock/config || return 1 + install -D -m 644 ../moblock.logrotate $startdir/pkg/etc/logrotate.d/moblock || return 1 +} + + diff --git a/abs/extra/community/moblock/config b/abs/extra/community/moblock/config new file mode 100644 index 0000000..7d7c287 --- /dev/null +++ b/abs/extra/community/moblock/config @@ -0,0 +1,30 @@ +# Original MoBlock configuration options from MoBlock-nfq.sh file +ACTIVATE_CHAINS=1 +WHITE_TCP_IN="" +WHITE_UDP_IN="" +WHITE_TCP_OUT="" # Add "http https" here to prevent moblock from blocking webpages +WHITE_UDP_OUT="" +WHITE_TCP_FORWARD="" +WHITE_UDP_FORWARD="" + +# Added IP whitelisting support +WHITE_IP_IN="" +WHITE_IP_OUT="" +WHITE_IP_FW="" + +# Individual lists can be disabled by prefixing them with '!' +# Bluetack blacklists (http://www.bluetack.co.uk) +BLUETACK=(level1 level2 !level3 !edu ads-trackers-and-bad-pr0n bogon spyware spider Microsoft !proxy hijacked templist !rangetest dshield) + +# blocklist.org lists (currently doesn't work) +#BLOCKLIST=(p2p gov spy ads edu) + +# backup lists (might be outdated) +#PHOENIXLABS=(!p2b.p2b edu.txt spider.txt spyware.txt level1.txt !level2.txt !level3.txt) + +# Change to 'yes' if you want to backup up the old list before writing +# a new one. Only one backup copy will be kept. +BACKUP_OLD_LIST="no" + +# Options passed to wget +WGET_OPTS="-q" diff --git a/abs/extra/community/moblock/moblock b/abs/extra/community/moblock/moblock new file mode 100755 index 0000000..d88bd2e --- /dev/null +++ b/abs/extra/community/moblock/moblock @@ -0,0 +1,70 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting MoBlock" + if [ ! -f /var/run/moblock.pid ] + then + /usr/bin/moblock-nfq & + if [ $? -gt 0 ] + then + stat_fail + else + add_daemon moblock + stat_done + fi + else + stat_fail + fi + ;; + update) + stat_busy "Updating MoBlock block list..." + error=0 + /usr/bin/moblock-update || error=1 + stat_busy "Updating MoBlock block list" + if [ $error -eq 1 ]; then + stat_fail + else + stat_done + fi + ;; + stats) + stat_busy "Logging stats to /var/log/MoBlock.stats" + PID=`cat /var/run/moblock.pid 2>/dev/null` + if [ ! -z "$PID" ]; then + /bin/kill -USR2 $PID + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + else + stat_fail + fi + ;; + stop) + stat_busy "Stopping MoBlock" + PID=`cat /var/run/moblock.pid 2>/dev/null` + if [ ! -z "$PID" ]; then + /bin/kill $PID + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon moblock + stat_done + fi + else + stat_fail + fi + ;; + restart) + $0 stop + sleep 2 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart|update|stats}" +esac diff --git a/abs/extra/community/moblock/moblock-update b/abs/extra/community/moblock/moblock-update new file mode 100755 index 0000000..aae861d --- /dev/null +++ b/abs/extra/community/moblock/moblock-update @@ -0,0 +1,174 @@ +#!/bin/bash + +. /etc/moblock/config + +CONF_DIR=/etc/moblock +TEMP_DIR=$(/usr/bin/mktemp -t -d moblock-updateXXXXXXXX) +LIST_FILE=banned.list + +USECOLOR="no" +. /etc/rc.d/functions +PREFIX_REG=" >" +PREFIX_HL="::" + +function extract() +{ + /usr/bin/find $TEMP_DIR -type f -name '*.gz' -o -name '*.zip' |\ + while read N + do + case "$N" in + *.zip) /usr/bin/unzip -oqq "$N" 2>/dev/null + if [ $? -gt 0 ]; then + rm -f "$N" + return 1 + else + rm -f "$N" + fi + ;; + *.gz) /bin/gunzip -f "$N" 2>/dev/null + if [ $? -gt 0 ]; then + rm -f "$N" + return 1 + fi + ;; + *) continue + ;; + esac + done + return 0 +} + +cd $TEMP_DIR + +printf "${C_SEPARATOR} ------------------------------\n" +printhl "Downloading and extracting files:\n" + +# Bluetack lists (with fallback) +for i in ${BLUETACK[@]} +do + if [ $(echo $i | /bin/grep '^[^\!]' | /usr/bin/wc -l) -eq 1 ]; then + stat_busy "BLUETACK '${i}'... " + /usr/bin/wget ${WGET_OPTS} "http://www.bluetack.co.uk/config/${i}.gz" && extract + if [ $? -gt 0 ] || [ ! -f ${i} ]; then + stat_fail + bfile=$i + if [ "$bfile" = "ads-trackers-and-bad-pr0n" ]; then + bfile="ads" + elif [ "$bfile" = "Microsoft" ];then + bfile="microsoft" + fi + stat_busy "[!!] BLUETACK '${i}' (fallback link)... " + /usr/bin/wget ${WGET_OPTS} "http://list.iblocklist.com/?list=bt_${bfile%%-*}" -O "${i}.gz" && extract + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + else + stat_done + fi + fi +done + +# Blocklist lists +for i in ${BLOCKLIST[@]} +do + if [ $(echo $i | /bin/grep '^[^\!]' | /usr/bin/wc -l) -eq 1 ]; then + stat_busy "BLOCKLIST '${i}'... " + /usr/bin/wget ${WGET_OPTS} "blocklist.org/${i}.p2b.gz" && extract + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + fi +done + +# Old phoenixlabs.org lists +for i in ${PHOENIXLABS[@]} +do + if [ $(echo $i | /bin/grep '^[^\!]' | /usr/bin/wc -l) -eq 1 ]; then + stat_busy "PHOENIXLABS '${i}'... " + /usr/bin/wget ${WGET_OPTS} "fox.phoenixlabs.org/${i}" && extract + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + fi +done + +if [ $(/bin/cat "$TEMP_DIR"/* | /usr/bin/wc -l) -eq 0 ]; then + printf "\n" + printhl "ERROR: No files were downloaded" + printf "${C_SEPARATOR} ------------------------------\n" + exit 1 +fi + +# Check files +printsep +printhl "Checking integrity of downloaded files:\n" + +/usr/bin/find -type f | while read N +do + stat_busy "File '$(echo $N | /bin/awk -F/ '{print $NF}')'... " + scan1=$(/bin/cat "$N" | /usr/bin/wc -l) + scan2=$(/bin/egrep -o ":[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*-[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" "$N" | /usr/bin/wc -l) + if [ $scan1 -eq $scan2 ]; then + stat_done + else + if [ $scan2 -gt 0 ]; then + if [ $scan1 -gt $scan2 ]; then + stat_append "$(($scan1-$scan2)) of $scan1 entries failed validation; keeping the file" + stat_done + fi + else + stat_fail + stat_busy "[!!] Removing corrupted file... " + rm "$N" 2>/dev/null + if [ $? -gt 0 ]; then + stat_fail + exit 1 + else + stat_done + fi + fi + fi +done + +printsep +printhl "Saving the list:\n" + +# Make backup +if [ "$BACKUP_OLD_LIST" = "yes" ] && [ -f "$CONF_DIR"/"$LIST_FILE" ]; then + stat_busy "Backing up old list to '$CONF_DIR/$LIST_FILE.gz'... " + /bin/gzip -f "$CONF_DIR"/"$LIST_FILE" 2>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi +fi + +# Save the list +stat_busy "Saving new list to '$CONF_DIR/$LIST_FILE'... " +/bin/cat "$TEMP_DIR"/* > "$CONF_DIR"/"$LIST_FILE" 2>&1 +if [ $? -gt 0 ]; then + stat_fail + exit 1 +else + stat_done + printf "\n" + printhl "Saved `cat "$CONF_DIR"/"$LIST_FILE" | wc -l` ranges" + printf "${C_SEPARATOR} ------------------------------\n" +fi + +rm -rf "$TEMP_DIR" + +# Restart MoBlock +if [ -f /var/run/moblock.pid ]; then + /bin/kill -HUP `cat /var/run/moblock.pid` >/dev/null 2>&1 +fi + +exit 0 + diff --git a/abs/extra/community/moblock/moblock.install b/abs/extra/community/moblock/moblock.install new file mode 100644 index 0000000..c7715e7 --- /dev/null +++ b/abs/extra/community/moblock/moblock.install @@ -0,0 +1,30 @@ +post_install() { + #clean up after an old hack + if [ -h /usr/lib/libnfnetlink.so.1 ]; then + rm /usr/lib/libnfnetlink.so.1 + fi + echo "" + echo ">>> moblock-update script no longer uses /var/spool/moblock" + echo ">>> as a temporary directory. You can safely delete it." + echo "" + if [ ! -d /var/spool/moblock/used ] + then + mkdir -p /var/spool/moblock/used + fi +} + +post_upgrade() { + #clean up after an old hack + if [ -h /usr/lib/libnfnetlink.so.1 ]; then + rm /usr/lib/libnfnetlink.so.1 + fi + if [ ! -d /var/spool/moblock/used ] + then + mkdir -p /var/spool/moblock/used + fi +} + +op=$1 +shift +$op $* + diff --git a/abs/extra/community/moblock/moblock.logrotate b/abs/extra/community/moblock/moblock.logrotate new file mode 100644 index 0000000..6ed64bb --- /dev/null +++ b/abs/extra/community/moblock/moblock.logrotate @@ -0,0 +1,11 @@ +"/var/log/moblock.log" /var/log/MoBlock.stats { + daily + missingok + notifempty + sharedscripts + postrotate + /usr/bin/test -f /var/run/moblock.pid && /bin/kill -HUP `cat /var/run/moblock.pid 2>/dev/null` 2>/dev/null || exit 0 + endscript + compress +} + diff --git a/abs/extra/community/moblock/moblock_0.9_rc2.patch b/abs/extra/community/moblock/moblock_0.9_rc2.patch new file mode 100644 index 0000000..69994ff --- /dev/null +++ b/abs/extra/community/moblock/moblock_0.9_rc2.patch @@ -0,0 +1,912 @@ +diff -Naur MoBlock-0.8_orig/Changelog MoBlock-0.8/Changelog +--- MoBlock-0.8_orig/Changelog 2006-03-22 12:44:31.000000000 -0500 ++++ MoBlock-0.8/Changelog 2008-02-10 11:56:08.000000000 -0500 +@@ -4,6 +4,23 @@ + + --- + ++0.9: - fix for kernel 2.6.23 ++ - support for MARKing packets instead of DROPping or ++ ACCEPTing ++ - example start script that REJECTs packets instead of ++ DROPping. ++ - Integrated a patch from David Walluck for proper loading ++ of p2b files (version 2) ++ - command line options for logging to syslog, stdout ++ and log timestamping ++ - fixed loading pg1 lists with comments (lines starting ++ with '#') ++ - fixed a bug in ranges merge ++ - applied patch 2223 by badfish99: "IPs logged with bytes ++ reversed on big-endian m/c" ++ ++--- ++ + 0.8: - support for NFQUEUE-ing from iptables FORWARD chain (thx to + hyakki for suggestions and testing!) + - included patches from Maximilian Mehnert to support log file +diff -Naur MoBlock-0.8_orig/Makefile MoBlock-0.8/Makefile +--- MoBlock-0.8_orig/Makefile 2006-03-22 12:44:31.000000000 -0500 ++++ MoBlock-0.8/Makefile 2007-11-22 08:10:44.000000000 -0500 +@@ -1,4 +1,3 @@ +- + # To use the old-soon-to-be-deprecated libipq interface + # uncomment the following line and comment the NFQUEUE one, + # then comment the gcc line with netfilter_queue and +@@ -7,7 +6,7 @@ + #QUEUE_LIB=LIBIPQ + QUEUE_LIB=NFQUEUE + +-CFLAGS=-Wall -O2 -march=i586 -mtune=i686 -fomit-frame-pointer -ffast-math \ ++CFLAGS=-Wall -O3 -march=i586 -mtune=i686 -fomit-frame-pointer -ffast-math \ + -D_GNU_SOURCE -D$(QUEUE_LIB) -L/usr/include/libipq + CC=gcc + +diff -Naur MoBlock-0.8_orig/MoBlock-nfq-reject.sh MoBlock-0.8/MoBlock-nfq-reject.sh +--- MoBlock-0.8_orig/MoBlock-nfq-reject.sh 1969-12-31 19:00:00.000000000 -0500 ++++ MoBlock-0.8/MoBlock-nfq-reject.sh 2007-11-22 08:10:44.000000000 -0500 +@@ -0,0 +1,104 @@ ++#!/bin/sh ++# ++# MoBlock.sh - MoBlock start script ++# --------------------------------- ++ ++ACTIVATE_CHAINS=1 ++WHITE_TCP_IN="" ++WHITE_UDP_IN="" ++WHITE_TCP_OUT="" ++WHITE_UDP_OUT="" ++WHITE_TCP_FORWARD="" ++WHITE_UDP_FORWARD="" ++REJECT_MARK="10" ++ ++PIDF=/var/run/moblock.pid ++ ++FNAME=`basename $0 .sh` ++MODE=`echo $FNAME|awk -F- '{print $2}'` ++ ++if [ -f $PIDF ]; then ++ PID=`cat $PIDF` ++ if [ `ps -p $PID|wc -l` -gt 1 ]; then ++ echo "$0: $PIDF exists and processs seems to be running. Exiting." ++ exit 1; ++ fi; ++fi; ++ ++if [ $MODE == "ipq" ]; then ++ modprobe ip_queue ++ TARGET="QUEUE" ++elif [ $MODE == "nfq" ]; then ++ modprobe ipt_NFQUEUE ++ TARGET="NFQUEUE" ++fi; ++ ++modprobe ipt_state ++ ++# Filter all traffic, edit for your needs ++ ++iptables -N MOBLOCK_IN ++iptables -N MOBLOCK_OUT ++iptables -N MOBLOCK_FW ++ ++if [ $ACTIVATE_CHAINS -eq 1 ]; then ++ iptables -I INPUT -p all -m state --state NEW -j MOBLOCK_IN ++ iptables -I OUTPUT -p all -m state --state NEW -j MOBLOCK_OUT ++ iptables -I FORWARD -p all -m state --state NEW -j MOBLOCK_FW ++fi; ++ ++ ++iptables -I MOBLOCK_IN -p all -j $TARGET ++ ++iptables -I MOBLOCK_OUT -p all -j $TARGET ++ ++iptables -I MOBLOCK_FW -p all -j $TARGET ++ ++for PORT in $WHITE_TCP_OUT; do ++ iptables -I MOBLOCK_OUT -p tcp --dport $PORT -j ACCEPT ++done ++for PORT in $WHITE_UDP_OUT; do ++ iptables -I MOBLOCK_OUT -p udp --dport $PORT -j ACCEPT ++done ++ ++for PORT in $WHITE_TCP_IN; do ++ iptables -I MOBLOCK_IN -p tcp --dport $PORT -j ACCEPT ++done ++for PORT in $WHITE_UDP_IN; do ++ iptables -I MOBLOCK_IN -p udp --dport $PORT -j ACCEPT ++done ++ ++for PORT in $WHITE_TCP_FORWARD; do ++ iptables -I MOBLOCK_FW -p tcp --dport $PORT -j ACCEPT ++done ++for PORT in $WHITE_UDP_FORWARD; do ++ iptables -I MOBLOCK_FW -p udp --dport $PORT -j ACCEPT ++done ++ ++iptables -I OUTPUT -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT ++iptables -I FORWARD -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT ++ ++# Here you can change block list and log files ++./moblock -d /etc/ipfilter.dat -t -s -r $REJECT_MARK ./moblock.log ++ ++# On exit delete the rules we added ++ ++if [ $ACTIVATE_CHAINS -eq 1 ]; then ++ iptables -D INPUT -p all -m state --state NEW -j MOBLOCK_IN ++ iptables -D OUTPUT -p all -m state --state NEW -j MOBLOCK_OUT ++ iptables -D FORWARD -p all -m state --state NEW -j MOBLOCK_FW ++fi; ++ ++iptables -D OUTPUT -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT ++iptables -D FORWARD -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT ++ ++iptables -F MOBLOCK_IN ++iptables -X MOBLOCK_IN ++iptables -F MOBLOCK_OUT ++iptables -X MOBLOCK_OUT ++iptables -F MOBLOCK_FW ++iptables -X MOBLOCK_FW ++ ++if [ -f $PIDF ]; then ++ rm $PIDF; ++fi +diff -Naur MoBlock-0.8_orig/MoBlock.c MoBlock-0.8/MoBlock.c +--- MoBlock-0.8_orig/MoBlock.c 2006-03-22 12:44:31.000000000 -0500 ++++ MoBlock-0.8/MoBlock.c 2008-02-10 11:56:08.000000000 -0500 +@@ -35,6 +35,8 @@ + #include + #include + #include ++#include ++#include + + // in Makefile define LIBIPQ to use soon-to-be-deprecated ip_queue, + // NFQUEUE for ipt_NFQUEUE (from kernel 2.6.14) +@@ -46,7 +48,7 @@ + #include + #endif + +-#define MB_VERSION "0.8" ++#define MB_VERSION "0.9rc2" + + #define BUFSIZE 2048 + #define PAYLOADSIZE 21 +@@ -58,6 +60,9 @@ + #define SRC_ADDR(payload) (*(in_addr_t *)((payload)+12)) + #define DST_ADDR(payload) (*(in_addr_t *)((payload)+16)) + ++#define likely(x) __builtin_expect((x),1) ++#define unlikely(x) __builtin_expect((x),0) ++ + // rbt datatypes/functions + + typedef enum { +@@ -96,7 +101,8 @@ + char filename[100]; + } blocklist_info; + +-int merged_ranges=0, skipped_ranges=0; ++u_int32_t merged_ranges=0, skipped_ranges=0, accept_mark=0, reject_mark=0; ++u_int8_t log2syslog=0, log2file=0, log2stdout=0, timestamp=0; + + #ifdef LIBIPQ + static void die(struct ipq_handle *h) +@@ -112,11 +118,13 @@ + static char buf[2][ sizeof("aaa.bbb.ccc.ddd") ]; + static short int index=0; + ++ ip = ntohl(ip); ++ + sprintf(buf[index],"%d.%d.%d.%d", +- (ip) & 0xff, +- (ip >> 8) & 0xff, ++ (ip >> 24) & 0xff, + (ip >> 16) & 0xff, +- (ip >> 24) & 0xff); ++ (ip >> 8) & 0xff, ++ (ip) & 0xff); + + if (index) { + index=0; +@@ -134,10 +142,38 @@ + fflush(stdout); + } + ++void log_action(char *msg) ++{ ++ char timestr[30]; ++ time_t tv; ++ ++ if (timestamp) { ++ tv = time(NULL); ++ strncpy(timestr, ctime(&tv), 19); ++ timestr[19] = '\0'; ++ strcat(timestr, "| "); ++ } ++ else strcpy(timestr, ""); ++ ++ if (log2syslog) { ++ syslog(LOG_INFO, msg); ++ } ++ ++ if (log2file) { ++ fprintf(logfile,"%s%s",timestr,msg); ++ fflush(logfile); ++ } ++ ++ if (log2stdout) { ++ fprintf(stdout,"%s%s",timestr,msg); ++ } ++} ++ + inline void ranged_insert(char *name,char *ipmin,char *ipmax) + { + recType tmprec; + int ret; ++ char msgbuf[255]; + + if ( strlen(name) > (BNAME_LEN-1) ) { + strncpy(tmprec.blockname, name, BNAME_LEN); +@@ -149,10 +185,11 @@ + if ( (ret=insert(ntohl(inet_addr(ipmin)),&tmprec)) != STATUS_OK ) + switch(ret) { + case STATUS_MEM_EXHAUSTED: +- fprintf(logfile,"Error inserting range, MEM_EXHAUSTED.\n"); ++ log_action("Error inserting range, MEM_EXHAUSTED.\n"); + break; + case STATUS_DUPLICATE_KEY: +- fprintf(logfile,"Duplicated range ( %s )\n",name); ++ sprintf(msgbuf,"Duplicated range ( %s )\n",name); ++ log_action(msgbuf); + break; + case STATUS_MERGED: + merged_ranges++; +@@ -161,8 +198,9 @@ + skipped_ranges++; + break; + default: +- fprintf(logfile,"Unexpected return value from ranged_insert()!\n"); +- fprintf(logfile,"Return value was: %d\n",ret); ++ log_action("Unexpected return value from ranged_insert()!\n"); ++ sprintf(msgbuf,"Return value was: %d\n",ret); ++ log_action(msgbuf); + break; + } + } +@@ -177,15 +215,19 @@ + regex_t regmain; + regmatch_t matches[4]; + int i; ++ char msgbuf[255]; + + regcomp(®main, "^(.*)[:]([0-9.]*)[-]([0-9.]*)$", REG_EXTENDED); + + fp=fopen(filename,"r"); + if ( fp == NULL ) { +- fprintf(logfile,"Error opening %s, aborting...\n", filename); ++ sprintf(msgbuf,"Error opening %s, aborting...\n", filename); ++ log_action(msgbuf); + exit(-1); + } + while ( (count=getline(&line,&len,fp)) != -1 ) { ++ if ( line[0] == '#' ) //comment line, skip ++ continue; + for(i=count-1; i>=0; i--) { + if ((line[i] == '\r') || (line[i] == '\n') || (line[i] == ' ')) { + line[i] = 0; +@@ -207,36 +249,78 @@ + line+matches[3].rm_so); + ntot++; + } else { +- fprintf(logfile,"Short guarding.p2p line %s, skipping it...\n", line); ++ sprintf(msgbuf,"Short guarding.p2p line %s, skipping it...\n", line); ++ log_action(msgbuf); + } + } + if (line) + free(line); + fclose(fp); +- fprintf(logfile,"Ranges loaded: %d\n",ntot); +- printf("* Ranges loaded: %d\n",ntot); ++ sprintf(msgbuf, "* Ranges loaded: %d\n", ntot); ++ log_action(msgbuf); ++ if ( !log2stdout ) ++ printf(msgbuf); + } + +-void loadlist_pg2(char *filename) // experimental, no check for list sanity ++void loadlist_pg2(char *filename) // supports only v2 files + { + FILE *fp; +- int i,retval,ntot=0; +- char name[100],ipmin[16]; // hope we don't have a list with longer names... ++ int i, j, c, retval=0, ntot=0; ++ char name[100],ipmin[16], msgbuf[255]; // hope we don't have a list with longer names... + uint32_t start_ip, end_ip; + struct in_addr startaddr,endaddr; ++ size_t s; + + fp=fopen(filename,"r"); + if ( fp == NULL ) { +- fprintf(logfile,"Error opening %s, aborting...\n", filename); ++ sprintf(msgbuf, "Error opening %s, aborting...\n", filename); ++ log_action(msgbuf); + exit(-1); + } + +- fgetc(fp); // skip first 4 bytes, don't know what they are +- fgetc(fp); +- fgetc(fp); +- retval=fgetc(fp); ++ for (j=0; j<4; j++) { ++ c=fgetc(fp); ++ if ( c != 0xff ) { ++ sprintf(msgbuf,"Byte %d: 0x%x != 0xff, aborting...\n", j+1, c); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } ++ } ++ ++ c=fgetc(fp); ++ if ( c != 'P' ) { ++ sprintf(msgbuf,"Byte 5: %c != P, aborting...\n", c); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } ++ ++ c=fgetc(fp); ++ if ( c != '2' ) { ++ sprintf(msgbuf,"Byte 6: %c != 2, aborting...\n", c); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } + +- while ( retval != EOF ) { ++ c=fgetc(fp); ++ if ( c != 'B' ) { ++ sprintf(msgbuf,"Byte 7: %c != B, aborting...\n", c); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } ++ ++ c=fgetc(fp); ++ if ( c != 0x02 ) { ++ sprintf(msgbuf,"Byte 8: version: %d != 2, aborting...\n", c); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } ++ ++ do { + i=0; + do { + name[i]=fgetc(fp); +@@ -244,9 +328,22 @@ + } while ( name[i-1] != 0x00 && name[i-1] != EOF); + if ( name[i-1] != EOF ) { + name[i-1]='\0'; +- fread(&start_ip,4,1,fp); +- fread(&end_ip,4,1,fp); +- startaddr.s_addr=start_ip; ++ s=fread(&start_ip,4,1,fp); ++ if ( s != 1 ) { ++ sprintf(msgbuf,"Failed to read start IP: %d != 1, aborting...\n", (int)s); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } ++ s=fread(&end_ip,4,1,fp); ++ if ( s != 1 ) { ++ sprintf(msgbuf,"Failed to read end IP: %d != 1, aborting...\n", (int)s); ++ log_action(msgbuf); ++ fclose(fp); ++ exit(-1); ++ } ++ ++ startaddr.s_addr=start_ip; + endaddr.s_addr=end_ip; + strcpy(ipmin,inet_ntoa(startaddr)); + ranged_insert(name,ipmin,inet_ntoa(endaddr)); +@@ -255,22 +352,25 @@ + else { + retval=EOF; + } +- } ++ } while ( retval != EOF ); + fclose(fp); +- fprintf(logfile,"Ranges loaded: %d\n",ntot); +- printf("* Ranges loaded: %d\n",ntot); ++ sprintf(msgbuf, "* Ranges loaded: %d\n",ntot); ++ log_action(msgbuf); ++ if ( !log2stdout ) ++ printf(msgbuf); + } + + void loadlist_dat(char *filename) + { + FILE *fp; + int ntot=0; +- char readbuf[200], *name, start_ip[16], end_ip[16]; ++ char readbuf[200], *name, start_ip[16], end_ip[16], msgbuf[255]; + unsigned short ip1_0, ip1_1, ip1_2, ip1_3, ip2_0, ip2_1, ip2_2, ip2_3; + + fp=fopen(filename,"r"); + if ( fp == NULL ) { +- fprintf(logfile,"Error opening %s, aborting...\n", filename); ++ sprintf(msgbuf,"Error opening %s, aborting...\n", filename); ++ log_action(msgbuf); + exit(-1); + } + +@@ -286,38 +386,45 @@ + ntot++; + } + fclose(fp); +- fprintf(logfile,"Ranges loaded: %d\n",ntot); +- printf("* Ranges loaded: %d\n",ntot); ++ sprintf(msgbuf, "* Ranges loaded: %d\n", ntot); ++ log_action(msgbuf); ++ if ( !log2stdout ) ++ printf(msgbuf); + } + + void reopen_logfile(void) + { ++ char msgbuf[255]; ++ + if (logfile != NULL) { + fclose(logfile); + logfile=NULL; + } + logfile=fopen(logfile_name,"a"); + if (logfile == NULL) { +- fprintf(stderr, "Unable to open logfile %s\n", logfile_name); ++ sprintf(msgbuf, "Unable to open logfile %s\n", logfile_name); ++ log_action(msgbuf); + exit(-1); + } +- fprintf(logfile, "Reopening logfile.\n"); ++ log_action("Reopening logfile.\n"); + } + + void my_sahandler(int sig) + { ++ char msgbuf[255]; ++ + switch( sig ) { + case SIGUSR1: +- fprintf(logfile,"Got SIGUSR1! Dumping stats...\n"); ++ log_action("Got SIGUSR1! Dumping stats...\n"); + ll_show(logfile); + reopen_logfile(); + break; + case SIGUSR2: +- fprintf(logfile,"Got SIGUSR2! Dumping stats to /var/log/MoBlock.stats\n"); ++ log_action("Got SIGUSR2! Dumping stats to /var/log/MoBlock.stats\n"); + ll_log(); + break; + case SIGHUP: +- fprintf(logfile,"\nGot SIGHUP! Dumping and resetting stats, reloading blocklist\n\n"); ++ log_action("Got SIGHUP! Dumping and resetting stats, reloading blocklist\n"); + ll_log(); + ll_clear(); // clear stats list + destroy_tree(); // clear loaded ranges +@@ -332,17 +439,18 @@ + loadlist_pg2(blocklist_info.filename); + break; + default: +- fprintf(logfile,"Unknown blocklist type while reloading list, contact the developer!\n"); ++ log_action("Unknown blocklist type while reloading list, contact the developer!\n"); + break; + } + reopen_logfile(); + break; + case SIGTERM: +- fprintf(logfile,"Got SIGTERM! Dumping stats and exiting.\n"); ++ log_action("Got SIGTERM! Dumping stats and exiting.\n"); + ll_log(); + exit(0); + default: +- fprintf(logfile,"Received signal = %d but not handled\n",sig); ++ sprintf(msgbuf,"Received signal = %d but not handled\n",sig); ++ log_action(msgbuf); + break; + } + } +@@ -378,7 +486,7 @@ + { + int id=0, status=0; + struct nfqnl_msg_packet_hdr *ph; +- char *payload; ++ char *payload, msgbuf[255]; + recType tmprec; + + ph = nfq_get_msg_packet_hdr(nfa); +@@ -389,34 +497,78 @@ + switch (ph->hook) { + case NF_IP_LOCAL_IN: + if ( find(ntohl(SRC_ADDR(payload)),&tmprec) == STATUS_OK ) { ++ // we drop the packet instead of rejecting ++ // we don't want the other host to know we are alive + status=nfq_set_verdict(qh, id, NF_DROP, 0, NULL); +- fprintf(logfile,"Blocked IN: %s,hits: %d,SRC: %s\n",tmprec.blockname,tmprec.hits,ip2str(SRC_ADDR(payload))); +- } else status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL); ++ sprintf(msgbuf,"Blocked IN: %s,hits: %d,SRC: %s\n",tmprec.blockname,tmprec.hits,ip2str(SRC_ADDR(payload))); ++ log_action(msgbuf); ++ } ++ else if ( unlikely(accept_mark) ) { ++ // we set the user-defined accept_mark and set NF_REPEAT verdict ++ // it's up to other iptables rules to decide what to do with this marked packet ++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, accept_mark, 0, NULL); ++ } ++ else { ++ // no accept_mark, just NF_ACCEPT the packet ++ status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL); ++ } + break; + case NF_IP_LOCAL_OUT: + if ( find(ntohl(DST_ADDR(payload)),&tmprec) == STATUS_OK ) { +- status=nfq_set_verdict(qh, id, NF_DROP, 0, NULL); +- fprintf(logfile,"Blocked OUT: %s,hits: %d,DST: %s\n",tmprec.blockname,tmprec.hits,ip2str(DST_ADDR(payload))); +- } else status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL); ++ if ( likely(reject_mark) ) { ++ // we set the user-defined reject_mark and set NF_REPEAT verdict ++ // it's up to other iptables rules to decide what to do with this marked packet ++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, reject_mark, 0, NULL); ++ } ++ else { ++ status = nfq_set_verdict(qh, id, NF_DROP, 0, NULL); ++ } ++ sprintf(msgbuf,"Blocked OUT: %s,hits: %d,DST: %s\n",tmprec.blockname,tmprec.hits,ip2str(DST_ADDR(payload))); ++ log_action(msgbuf); ++ } ++ else if ( unlikely(accept_mark) ) { ++ // we set the user-defined accept_mark and set NF_REPEAT verdict ++ // it's up to other iptables rules to decide what to do with this marked packet ++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, accept_mark, 0, NULL); ++ } ++ else { ++ // no accept_mark, just NF_ACCEPT the packet ++ status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL); ++ } + break; + case NF_IP_FORWARD: + if ( find2(ntohl(SRC_ADDR(payload)), ntohl(DST_ADDR(payload)), &tmprec) == STATUS_OK ) { +- status=nfq_set_verdict(qh, id, NF_DROP, 0, NULL); +- fprintf(logfile,"Blocked FWD: %s,hits: %d,SRC: %s, DST: %s\n", ++ if ( likely(reject_mark) ) { ++ // we set the user-defined reject_mark and set NF_REPEAT verdict ++ // it's up to other iptables rules to decide what to do with this marked packet ++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, reject_mark, 0, NULL); ++ } ++ else { ++ status = nfq_set_verdict(qh, id, NF_DROP, 0, NULL); ++ } ++ sprintf(msgbuf,"Blocked FWD: %s,hits: %d,SRC: %s, DST: %s\n", + tmprec.blockname, tmprec.hits, ip2str(SRC_ADDR(payload)), ip2str(DST_ADDR(payload))); +- fflush(logfile); +- } else status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL); ++ log_action(msgbuf); ++ } ++ else if ( unlikely(accept_mark) ) { ++ // we set the user-defined accept_mark and set NF_REPEAT verdict ++ // it's up to other iptables rules to decide what to do with this marked packet ++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, accept_mark, 0, NULL); ++ } ++ else { ++ // no accept_mark, just NF_ACCEPT the packet ++ status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL); ++ } + break; + default: +- fprintf(logfile,"Not NF_LOCAL_IN/OUT/FORWARD packet!\n"); ++ log_action("Not NF_LOCAL_IN/OUT/FORWARD packet!\n"); + break; + } + } + else { +- fprintf(logfile,"NFQUEUE: can't get msg packet header.\n"); ++ log_action("NFQUEUE: can't get msg packet header.\n"); + return(1); // from nfqueue source: 0 = ok, >0 = soft error, <0 hard error + } +- fflush(logfile); + return(0); + } + #endif +@@ -492,46 +644,48 @@ + struct nfq_q_handle *qh; + struct nfnl_handle *nh; + int fd,rv; +- char buf[BUFSIZE]; ++ char buf[BUFSIZE], msgbuf[255]; + + h = nfq_open(); + if (!h) { +- fprintf(logfile, "Error during nfq_open()\n"); ++ log_action("Error during nfq_open()\n"); + exit(-1); + } + + if (nfq_unbind_pf(h, AF_INET) < 0) { +- fprintf(logfile, "error during nfq_unbind_pf()\n"); +- exit(-1); ++ log_action("error during nfq_unbind_pf()\n"); ++ //exit(-1); + } + + if (nfq_bind_pf(h, AF_INET) < 0) { +- fprintf(logfile, "Error during nfq_bind_pf()\n"); ++ log_action("Error during nfq_bind_pf()\n"); + exit(-1); + } + +- fprintf(logfile,"NFQUEUE: binding to queue '%hd'\n", queuenum); ++ sprintf(msgbuf,"NFQUEUE: binding to queue '%hd'\n", queuenum); ++ log_action(msgbuf); + qh = nfq_create_queue(h, queuenum, &nfqueue_cb, NULL); + if (!qh) { +- fprintf(logfile, "error during nfq_create_queue()\n"); ++ log_action("error during nfq_create_queue()\n"); + exit(-1); + } + + if (nfq_set_mode(qh, NFQNL_COPY_PACKET, PAYLOADSIZE) < 0) { +- fprintf(logfile, "can't set packet_copy mode\n"); ++ log_action("can't set packet_copy mode\n"); + exit(-1); + } + + nh = nfq_nfnlh(h); + fd = nfnl_fd(nh); + +- while ((rv = recv(fd, buf, sizeof(buf), 0)) && rv >= 0) { ++ while ((rv = recv(fd, buf, sizeof(buf), 0)) >= 0) { + nfq_handle_packet(h, buf, rv); + } + +- printf("NFQUEUE: unbinding from queue 0\n"); ++ log_action("NFQUEUE: unbinding from queue 0\n"); + nfq_destroy_queue(qh); + nfq_close(h); ++ nfq_unbind_pf(h, AF_INET); + return(0); + #endif + +@@ -540,11 +694,16 @@ + void print_options(void) + { + printf("\nMoBlock %s by Morpheus",MB_VERSION); +- printf("\nSyntax: MoBlock -dnp [-b] [-q 0-65535] \n\n"); ++ printf("\nSyntax: MoBlock -dnp [-q 0-65535] \n\n"); + printf("\t-d\tblocklist is an ipfilter.dat file\n"); + printf("\t-n\tblocklist is a peerguardian 2.x file (.p2b)\n"); + printf("\t-p\tblocklist is a peerguardian file (.p2p)\n"); + printf("\t-q\t0-65535 NFQUEUE number (as specified in --queue-num with iptables)\n"); ++ printf("\t-r MARK\tmark packet with MARK instead of DROP\n"); ++ printf("\t-a MARK\tmark packet with MARK instead of ACCEPT\n"); ++ printf("\t-l\tlog to stdout\n"); ++ printf("\t-s\tlog to syslog\n"); ++ printf("\t-t\tlog timestamping\n\n"); + } + + void on_quit() +@@ -556,6 +715,7 @@ + { + int ret=0; + unsigned short int queuenum=0; ++ char msgbuf[255]; + + if (argc < 3) { + print_options(); +@@ -591,10 +751,11 @@ + } + logfile_name=malloc(strlen(argv[argc-1])+1); + strcpy(logfile_name,argv[argc-1]); ++ log2file = 1; + printf("* Logging to %s\n",logfile_name); + + while (1) { //scan command line options +- ret=getopt(argc, argv, "d:n:p:q:"); ++ ret=getopt(argc, argv, "d:n:p:q:a:r:stl"); + if ( ret == -1 ) break; + + switch (ret) { +@@ -619,6 +780,28 @@ + case 'q': + queuenum=(unsigned short int)atoi(optarg); + break; ++ case 'r': ++ reject_mark=(u_int32_t)atoi(optarg); ++ printf("* DROP MARK: %d\n", reject_mark); ++ reject_mark=htonl(reject_mark); ++ break; ++ case 'a': ++ accept_mark=(u_int32_t)atoi(optarg); ++ printf("* ACCEPT MARK: %d\n", accept_mark); ++ accept_mark=htonl(accept_mark); ++ break; ++ case 's': ++ log2syslog = 1; ++ printf("* Logging to syslog\n"); ++ break; ++ case 't': ++ timestamp = 1; ++ printf("* Log timestamp enabled\n"); ++ break; ++ case 'l': ++ log2stdout = 1; ++ printf("* Log to stdout enabled\n"); ++ break; + case '?': // unknown option + print_options(); + exit(-1); +@@ -626,10 +809,14 @@ + } + } + +- printf("* Merged ranges: %d\n", merged_ranges); +- fprintf(logfile, "Merged ranges: %d\n", merged_ranges); +- printf("* Skipped useless ranges: %d\n", skipped_ranges); +- fprintf(logfile,"Skipped useless ranges: %d\n", skipped_ranges); ++ sprintf(msgbuf, "* Merged ranges: %d\n", merged_ranges); ++ log_action(msgbuf); ++ if ( !log2stdout ) ++ printf(msgbuf); ++ sprintf(msgbuf,"* Skipped useless ranges: %d\n", skipped_ranges); ++ log_action(msgbuf); ++ if ( !log2stdout ) ++ printf(msgbuf); + fflush(NULL); + + netlink_loop(queuenum); +diff -Naur MoBlock-0.8_orig/README MoBlock-0.8/README +--- MoBlock-0.8_orig/README 2006-03-22 12:44:31.000000000 -0500 ++++ MoBlock-0.8/README 2007-11-22 08:10:44.000000000 -0500 +@@ -1,5 +1,5 @@ + +-MoBlock README v0.8 ++MoBlock README v0.9 + http://moblock.berlios.de + + .Introduction. +@@ -47,6 +47,22 @@ + ip_conntrack 40044 1 ipt_state + iptable_filter 2176 1 + ip_tables 17600 3 ipt_NFQUEUE,ipt_state,iptable_filter ++ ++ ...and these with kernel 2.6.23 using NFQUEUE interface: ++ ++ nfnetlink_queue 9344 1 ++ nfnetlink 4568 2 nfnetlink_queue ++ ipt_REJECT 3520 2 ++ xt_mark 1600 2 ++ nf_conntrack_ipv4 12424 5 ++ iptable_filter 2308 1 ++ ip_tables 10328 1 iptable_filter ++ xt_state 1984 5 ++ nf_conntrack 48356 2 nf_conntrack_ipv4,xt_state ++ xt_NFQUEUE 1664 3 ++ x_tables 11396 5 ipt_REJECT,xt_mark,ip_tables,xt_state,xt_NFQUEUE ++ ++ (notice that ipt_NFQUEUE has changed to xt_NFQUEUE, same thing for other modules too) + + 2) A valid guarding.p2p/ipfilter.dat/p2p.p2b host file in /etc ( /etc/guarding.p2p ). + MoBlock tries to skip malformed or duplicate ranges but +@@ -140,8 +156,18 @@ + To specify a NFQUEUE queue number: + + ./moblock -p /etc/guarding.p2p -q 5 MoBlock.log ++ ++ From version 0.9 MoBlock supports MARKing packets and RETURN them to ++ iptables, there's an example start script (MoBlock-nfq-reject.sh) that ++ uses this feature to REJECT packet instead of dropping them. It can help ++ in complex firewall configuration where you need more control of packets ++ flow after MoBlock inspection. ++ See the mentioned start script for reference, you can set the MARK value ++ for packets that MoBlock would drop (ip in list) with the "-r" command line ++ option and for packets that MoBlock would accept (ip not in list) with ++ the "-a" command line option. + +- To stop it: ++ To stop MoBlock: + + kill -TERM + +@@ -149,7 +175,7 @@ + To obtain stats about blocked ranges while it's running: + + kill -USR1 # write stats to logfile +- kill -USR2 # write stats to /var/log/MoBlock.stats ++ kill -USR2 # write stats to /var/log/MoBlock.stats + + ** NEW: to reload the blocklist while MoBlock is running send to it the + HUP signal: +@@ -168,7 +194,10 @@ + took some code and ideas from his FTwall + - Andrew de Quincey (adq at lidskialf dot net) for regular expressions + and command line args patch +-- Maximilian Mehnert (clessing at freenet dot de) for logfile rotation ++- clessing at freenet dot de for logfile rotation + patches, pid file creation, start script, fixes/files for debian packaging ++- David Walluck, patch for proper loading of p2b files ++- jre, for continuing clessing work on debian packaging and many other ++ contributions + +-Last Updated: 20/Mar/2006 ++Last Updated: 15/Oct/2007 +diff -Naur MoBlock-0.8_orig/rbt.c MoBlock-0.8/rbt.c +--- MoBlock-0.8_orig/rbt.c 2006-03-22 12:44:31.000000000 -0500 ++++ MoBlock-0.8/rbt.c 2008-02-10 11:56:08.000000000 -0500 +@@ -19,7 +19,7 @@ + #include + #include + +-#define RBT_VERSION 0.8 ++#define RBT_VERSION 0.9 + #define BNAME_LEN 80 + + /* implementation dependend declarations */ +@@ -421,7 +421,7 @@ + + statusEnum insert(keyType key, recType *rec) { + nodeType *current, *parent, *x; +- keyType tmpkey; ++ //keyType tmpkey; + recType tmprec; + int ret; + +@@ -433,6 +433,23 @@ + current = root; + parent = 0; + while (current != NIL) { ++ if (compEQ2(current->key, key, rec->ipmax)) { // current node key is inside new range to be inserted ++ strcpy(tmprec.blockname, rec->blockname); // block name from new range ++ if (compLT(current->rec.ipmax, rec->ipmax)) ++ tmprec.ipmax = rec->ipmax; ++ else tmprec.ipmax = current->rec.ipmax; ++ tmprec.hits = 0; ++ //printf("deleting node :%lu\n", current->key); ++ ret=delete(current->key); ++ if ( ret != STATUS_OK ) ++ return(ret); ++ ret=insert(key, &tmprec); ++ if ( ret == STATUS_OK ) { ++ printf("new merge\n"); ++ return(STATUS_MERGED); ++ } ++ else return(ret); ++ } + if (compEQ(key, current->key)) { + if ( rec->ipmax > current->rec.ipmax ) { + current->rec.ipmax=rec->ipmax; +@@ -458,7 +475,7 @@ + } + } + //check if higher ip (ipmax) is already in a range +- if (compEQ2(rec->ipmax,current->key,current->rec.ipmax)) { ++ /*if (compEQ2(rec->ipmax,current->key,current->rec.ipmax)) { + fprintf(logfile,"higher ip in range\n"); + tmpkey=key; + strcpy(tmprec.blockname,current->rec.blockname); +@@ -470,7 +487,7 @@ + if ( ret == STATUS_OK ) + return(STATUS_MERGED); + else return(ret); +- } ++ }*/ + parent = current; + current = compLT(key, current->key) ? + current->left : current->right; +@@ -495,7 +512,7 @@ + } else { + root = x; + } +- ++ //printf("new node, key: %lu, parent: %lu\n", x->key, parent ? parent->key : 0); + insertFixup(x); + lastFind = NULL; + diff --git a/abs/extra/community/moblock/moblock_include.patch b/abs/extra/community/moblock/moblock_include.patch new file mode 100644 index 0000000..644e824 --- /dev/null +++ b/abs/extra/community/moblock/moblock_include.patch @@ -0,0 +1,10 @@ +--- MoBlock-0.8/MoBlock.c.orig 2008-08-15 14:41:49.000000000 -0400 ++++ MoBlock-0.8/MoBlock.c 2008-08-15 14:43:45.000000000 -0400 +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/abs/extra/community/moblockcontrol/PKGBUILD b/abs/extra/community/moblockcontrol/PKGBUILD new file mode 100644 index 0000000..5a912e2 --- /dev/null +++ b/abs/extra/community/moblockcontrol/PKGBUILD @@ -0,0 +1,42 @@ +# Contributor: marinz + +pkgname=moblockcontrol +pkgver=1.0 +pkgrel=10 +pkgdesc="moblock-control" +arch=('i686' 'x86_64') +url="http://moblock-deb.sourceforge.net/" +license=('GPL') +groups=() +depends=('moblock') +makedepends=() +install=moblockcontrol.install +source=(http://download.sourceforge.net/moblock-deb/moblock-control-1.0.tar.gz \ + moblock_control.patch moblock-control-update.sh) +md5sums=('1399e5465028e116e941cd1e01f6f7fc' + 'dc269c6c47bc423b9093919d52e97d63') +backup=('etc/moblock/moblock.conf' 'etc/moblock/blocklists.list') + +build() { + + cd $startdir/src/moblock-control-1.0 + + patch -Np1 -i ../moblock_control.patch || return 1 + + install -d ${pkgdir}/usr/bin ${pkgdir}/etc/moblock ${pkgdir}/etc/default ${pkgdir}/var/spool/moblock/user ${pkgdir}/lib/lsb ${pkgdir}/var/log + install -m 755 moblock-control ${pkgdir}/usr/bin/moblock-control + install -m 755 blocklists.list ${pkgdir}/etc/moblock/blocklists.list + install -m 755 moblock.conf ${pkgdir}/etc/moblock/moblock.conf + install -m 755 moblock.default ${pkgdir}/etc/default/moblock + install -m 755 init-functions ${pkgdir}/lib/lsb/init-functions + install -m 755 iptables-custom-insert.sh ${pkgdir}/etc/iptables-custom-insert.sh + install -m 755 iptables-custom-remove.sh ${pkgdir}/etc/iptables-custom-remove.sh + + touch ${pkgdir}/var/log/moblock-control.log + touch ${pkgdir}/etc/moblock/guarding.p2p + + cd $startdir/src + install -m 755 moblock-control-update.sh ${pkgdir}/usr/bin/moblock-control-update.sh + sed -i "s/config\/templist.gz/config\/badpeers.gz/" $startdir/pkg/etc/moblock/blocklists.list +} + diff --git a/abs/extra/community/moblockcontrol/moblock-control-update.sh b/abs/extra/community/moblockcontrol/moblock-control-update.sh new file mode 100644 index 0000000..8da564d --- /dev/null +++ b/abs/extra/community/moblockcontrol/moblock-control-update.sh @@ -0,0 +1,3 @@ +#!/bin/bash +. /etc/profile +/usr/bin/moblock-control update diff --git a/abs/extra/community/moblockcontrol/moblock_control.patch b/abs/extra/community/moblockcontrol/moblock_control.patch new file mode 100644 index 0000000..db6bbf9 --- /dev/null +++ b/abs/extra/community/moblockcontrol/moblock_control.patch @@ -0,0 +1,11 @@ +--- moblockcontrol/moblock-control_2 2008-09-25 23:22:39.000000000 +0200 ++++ moblockcontrol/moblock-control 2008-12-28 09:33:51.000000000 +0100 +@@ -954,7 +954,7 @@ + else + # The options Moblock is started with + # The same like above, but with a "&" to start moblock in the background +- DAEMON_OPTS="-$BLOCKLIST_FORMAT $BLOCKLIST $NFQUEUE_NUMBER_OPT $LOG_SYSLOG_OPT $LOG_TIMESTAMP_OPT -r $REJECT_MARK -a $ACCEPT_MARK $DAEMON_LOG &" ++ DAEMON_OPTS="-$BLOCKLIST_FORMAT $BLOCKLIST $NFQUEUE_NUMBER_OPT $LOG_SYSLOG_OPT $DAEMON_LOG & " + # Start MoBlock + start_daemon -p $PIDFILE $DAEMON $DAEMON_OPTS # The init-functions provided with moblock-control depend on this syntax! + fi diff --git a/abs/extra/community/moblockcontrol/moblockcontrol.install b/abs/extra/community/moblockcontrol/moblockcontrol.install new file mode 100644 index 0000000..439a3ee --- /dev/null +++ b/abs/extra/community/moblockcontrol/moblockcontrol.install @@ -0,0 +1,28 @@ +post_install() { + if [ ! -d /var/spool/moblock/used ] + then + mkdir -p /var/spool/moblock/used + fi + + if [ ! -e /etc/cron.daily/moblock-control-update.sh ] + then + ln -s /usr/bin/moblock-control-update.sh /etc/cron.daily/moblock-control-update.sh + fi +} + +post_upgrade() { + if [ ! -d /var/spool/moblock/used ] + then + mkdir -p /var/spool/moblock/used + fi + + if [ ! -e /etc/cron.daily/moblock-control-update.sh ] + then + ln -s /usr/bin/moblock-control-update.sh /etc/cron.daily/moblock-control-update.sh + fi +} + +op=$1 +shift +$op $* + diff --git a/abs/extra/community/mobloquer/PKGBUILD b/abs/extra/community/mobloquer/PKGBUILD new file mode 100644 index 0000000..eecdb4a --- /dev/null +++ b/abs/extra/community/mobloquer/PKGBUILD @@ -0,0 +1,26 @@ +# Contributor: marinz + +pkgname=mobloquer +pkgver=0.5 +pkgrel=5 +pkgdesc="A graphical front end for moblock" +arch=('i686' 'x86_64') +url="http://mobloquer.foutrelis.com/" +license=('GPL') +depends=('qt' 'moblockcontrol') +source=(http://download.sourceforge.net/mobloquer/$pkgname-$pkgver.tar.gz) +md5sums=('2adb03d170fa0e9a7ffcc9dac8d71bf5') + +build() { + + cd $startdir/src/$pkgname + + qmake + make || return 1 + + install -d ${pkgdir}/usr/share/applications ${pkgdir}/usr/bin + install -m 755 -p $startdir/src/mobloquer/images/mobloquer.png $startdir/pkg/usr/share/pixmaps/ + install -m 644 -p $startdir/src/mobloquer/other/Mobloquer.desktop $startdir/pkg/usr/share/applications/ + install -m 755 -p $startdir/src/mobloquer/mobloquer $startdir/pkg/usr/bin/mobloquer +} + diff --git a/abs/extra/community/motion-svn/PKGBUILD b/abs/extra/community/motion-svn/PKGBUILD new file mode 100644 index 0000000..dcbd162 --- /dev/null +++ b/abs/extra/community/motion-svn/PKGBUILD @@ -0,0 +1,42 @@ +# Contributor: Demind +pkgname=motion-svn +pkgver=1 +pkgrel=1 +pkgdesc="Motion is a software motion detector. It grabs images from video4linux devices and/or from webcams." +arch=('i686' 'x86_64') +url="http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome" +license=('GPL2') +depends=('zlib' 'libjpeg') +makedepends=('subversion') +provides=('motion') +conflicts=('motion') +install="motion-svn.install" +source=('rc.motion') +md5sums=('fc09828564850824f8549d258053e0b6') + +_svntrunk=http://www.lavrsen.dk/svn/motion/trunk/ +_svnmod=motion + +build() { + cd $startdir/src + + msg "Retrieving sources" + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + + [ -d ./$_svnmod-build ] && rm -fr ./$_svnmod-build + cp -r ./$_svnmod ./$_svnmod-build + cd ./$_svnmod-build + + msg "SVN checkout done or server timeout" + msg "Starting build" + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc + + make || return 1 + make DESTDIR=$startdir/pkg/ install || return 1 + install -D -m755 $startdir/src/rc.motion $startdir/pkg/etc/rc.d/motion + rm -rf $startdir/src/$_svnmod-build +} + diff --git a/abs/extra/community/motion-svn/motion-svn.install b/abs/extra/community/motion-svn/motion-svn.install new file mode 100644 index 0000000..f88a2fc --- /dev/null +++ b/abs/extra/community/motion-svn/motion-svn.install @@ -0,0 +1,11 @@ +# arg 1: the new package version +post_install() { + echo "" + echo ">>> An example configuration has been saved to /etc/motion-dispatch.conf" +} + +op=$1 +shift +[ "$(type -t "$op")" = "function" ] && $op "$@" + +# vim:set ts=2 et: diff --git a/abs/extra/community/motion-svn/rc.motion b/abs/extra/community/motion-svn/rc.motion new file mode 100644 index 0000000..7dd027c --- /dev/null +++ b/abs/extra/community/motion-svn/rc.motion @@ -0,0 +1,36 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/motion` +case "$1" in + start) + stat_busy "Starting Motion" + [ -z "$PID" ] && /usr/bin/motion + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon motion + stat_done + fi + ;; + stop) + stat_busy "Stopping Motion" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon motion + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/community/mozplugger/ChangeLog b/abs/extra/community/mozplugger/ChangeLog new file mode 100644 index 0000000..048d061 --- /dev/null +++ b/abs/extra/community/mozplugger/ChangeLog @@ -0,0 +1,7 @@ +2008-12-07 Allan McRae + * mozplugger 1.12.0-1 + * upstream update + +2008-01-14 JJDaNiMoTh + * Version bump to 1.10.1 + * Added mozplugger.install diff --git a/abs/extra/community/mozplugger/PKGBUILD b/abs/extra/community/mozplugger/PKGBUILD new file mode 100644 index 0000000..b2fdbcd --- /dev/null +++ b/abs/extra/community/mozplugger/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD,v 1.14 2008/12/07 05:27:24 allan Exp $ +# Maintainer: Allan McRae +# Contributor: Todd Musall + +pkgname=mozplugger +pkgver=1.12.0 +pkgrel=1 +pkgdesc="A Mozilla & Firefox multimedia plugin." +arch=('i686' 'x86_64') +url="http://mozplugger.mozdev.org" +license="GPL" +depends=('libx11') +backup=(etc/mozpluggerrc) +source=(http://$pkgname.mozdev.org/files/$pkgname-$pkgver.tar.gz) +md5sums=('6d4dd7b1c577f625c9d664532389d6db') +install=$pkgname.install + +build() { + cd $srcdir/$pkgname-$pkgver + make linux || return 1 + install -Dm755 mozplugger.so $pkgdir/usr/lib/mozilla/plugins/mozplugger.so + install -Dm644 mozpluggerrc $pkgdir/etc/mozpluggerrc + install -Dm755 mozplugger-helper $pkgdir/usr/bin/mozplugger-helper + install -Dm755 mozplugger-controller $pkgdir/usr/bin/mozplugger-controller + install -Dm644 mozplugger.7 $pkgdir/usr/share/man/man7/mozplugger.7 +} diff --git a/abs/extra/community/mozplugger/mozplugger.install b/abs/extra/community/mozplugger/mozplugger.install new file mode 100644 index 0000000..1a08b9d --- /dev/null +++ b/abs/extra/community/mozplugger/mozplugger.install @@ -0,0 +1,15 @@ +post_install() { + echo -en " +==> You may need to delete your local $HOME/.mozilla/firefox/pluginreg.dat +==> file for mozplugger to be enabled correctly after you update it. +==> (It will get regenerated). +==> To add more helpers, edit /etc/mozpluggerrc. +==> The window name can be obtained using the utility xprop(1x). +==> Type "xprop WM_CLASS" and click on a window.\n" +} + +post_upgrade() { + post_install +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/extra/community/mpc/ChangeLog b/abs/extra/community/mpc/ChangeLog new file mode 100644 index 0000000..b645e19 --- /dev/null +++ b/abs/extra/community/mpc/ChangeLog @@ -0,0 +1,15 @@ +2009-03-11 Alexander Fehr + + * mpc-0.15-1: + New upstream release. + Changed license to GPL2. + +2008-12-22 Alexander Fehr + + * mpc-0.14-1: + New upstream release. + New maintainer. + Changed url. + Added !emptydirs option. + Changed download location to downloads.sourceforge.net. + Added ChangeLog. diff --git a/abs/extra/community/mpc/PKGBUILD b/abs/extra/community/mpc/PKGBUILD new file mode 100644 index 0000000..345a2d6 --- /dev/null +++ b/abs/extra/community/mpc/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 33671 2009-04-04 15:49:53Z alexanderf $ +# Maintainer: Alexander Fehr +# Contributor: Link Dupont + +pkgname=mpc +pkgver=0.15 +pkgrel=1 +pkgdesc="Minimalist command line interface to MPD" +arch=('i686' 'x86_64') +url="http://mpd.wikia.com/wiki/Client:Mpc" +license=('GPL2') +depends=('glibc') +options=('!emptydirs') +source=(http://downloads.sourceforge.net/musicpd/mpc-$pkgver.tar.bz2) +md5sums=('48897aeb3a7ee5c64f30e56789f105a8') + +build() { + cd "$srcdir/mpc-$pkgver" + + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 + + # Install bash completion file + install -D -m644 doc/mpc-bashrc "$pkgdir/etc/bash_completion.d/mpc" || return 1 +} diff --git a/abs/extra/community/mpd/PKGBUILD b/abs/extra/community/mpd/PKGBUILD new file mode 100644 index 0000000..75a79ee --- /dev/null +++ b/abs/extra/community/mpd/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 27462 2009-02-22 02:31:36Z eric $ +# Maintainer: Damir Perisa +# Contributor: Ben + +pkgname=mpd +pkgver=0.15.3 +pkgrel=1 +pkgdesc="Music daemon that plays MP3, FLAC, and Ogg Vorbis files" +arch=('i686' 'x86_64') +license=('GPL') +url="http://musicpd.org" +depends=('libid3tag' 'libmad' 'flac>=1.1.3' 'audiofile' 'faad2>=2.6' 'libmikmod' + 'alsa-lib' 'libshout' 'libmpcdec>=1.2.5' 'libsamplerate' 'libao' 'ffmpeg' + 'wavpack' 'glib2' 'curl') +install=mpd.install +source=(http://downloads.sourceforge.net/musicpd/${pkgname}-${pkgver}.tar.gz + 'mpd') +md5sums=('43e854e7f46ac87bb1f1a7247ae4b902' + 'b1fd15de359db08e4b9ae4b199640f0e') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --disable-jack \ + --enable-ao --enable-mod \ + --with-zeroconf=no + make || return 1 + make DESTDIR=${pkgdir} install + + # set ours dirs in mpd.conf file + sed -i 's|music_directory.*$|#music_directory "path_to_your_music_collection"|1' doc/mpdconf.example + sed -i 's|playlist_directory.*$|playlist_directory "/var/lib/mpd/playlists"|1' doc/mpdconf.example + sed -i 's|db_file.*$|db_file "/var/lib/mpd/mpd.db"|1' doc/mpdconf.example + sed -i 's|log_file.*$|log_file "/var/log/mpd/mpd.log"|1' doc/mpdconf.example + sed -i 's|error_file.*$|error_file "/var/log/mpd/mpd.error"|1' doc/mpdconf.example + sed -i 's|#pid_file.*$|pid_file "/var/run/mpd/mpd.pid"|1' doc/mpdconf.example + sed -i 's|#state_file.*$|state_file "/var/lib/mpd/mpdstate"|1' doc/mpdconf.example + sed -i 's|#user.*$|user "mpd"|1' doc/mpdconf.example + + install -Dm644 doc/mpdconf.example ${pkgdir}/etc/mpd.conf.example || return 1 + + install -D ${srcdir}/mpd ${pkgdir}/etc/rc.d/mpd || return 1 + install -d ${pkgdir}/var/lib/mpd/playlists ${pkgdir}/var/log/mpd ${pkgdir}/var/run/mpd +} diff --git a/abs/extra/community/mpd/mpd b/abs/extra/community/mpd/mpd new file mode 100755 index 0000000..76ec1c0 --- /dev/null +++ b/abs/extra/community/mpd/mpd @@ -0,0 +1,42 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting Music Player Daemon" + /usr/bin/mpd /etc/mpd.conf &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon mpd + stat_done + fi + ;; + stop) + stat_busy "Stopping Music Player Daemon" + /usr/bin/mpd --kill /etc/mpd.conf &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon mpd + stat_done + fi + ;; + create-db) + stat_busy "Creating mpd's database ..." + logpath="/var/log/mpd/mpd.db-creation" + /usr/bin/mpd --create-db /etc/mpd.conf > $logpath \ + && stat_busy "Output written to $logpath" + stat_done + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart|create-db}" +esac +exit 0 diff --git a/abs/extra/community/mpd/mpd.install b/abs/extra/community/mpd/mpd.install new file mode 100644 index 0000000..e44c9be --- /dev/null +++ b/abs/extra/community/mpd/mpd.install @@ -0,0 +1,23 @@ +# arg 1: the new package version +post_install() { + echo "==> mpd: Create a config under /etc/mpd.conf before using MPD (Example: /etc/mpd.conf.example)" + groupadd -g 45 mpd &>/dev/null + useradd -u 45 -g mpd -d /var/lib/mpd -s /bin/true mpd &>/dev/null + gpasswd -a mpd audio &>/dev/null + chown mpd:mpd -R /var/{lib,log,run}/mpd +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + if [ "$(vercmp $2 0.12)" -lt 0 ]; then + echo "==> mpd: upgrade from 0.11 -> 0.12: configuration file syntax changed, " + echo "==> mpd: make sure to update your configuration file! example conf: /etc/mpd.conf.example" + fi + chown mpd:mpd -R /var/{lib,log,run}/mpd +} + +# arg 1: the old package version +pre_remove() { + userdel mpd &>/dev/null +} diff --git a/abs/extra/community/mythpywii/PKGBUILD b/abs/extra/community/mythpywii/PKGBUILD new file mode 100644 index 0000000..4b57c77 --- /dev/null +++ b/abs/extra/community/mythpywii/PKGBUILD @@ -0,0 +1,18 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=mythpywii +pkgver=1 +pkgrel=1 +pkgdesc="Control MythTV using Wiimote." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.benjiegillam.com/" +depends=('bluez' 'python-pybluez' 'cwiid-svn') +#install=mythpywii.install +source=(http://www.benjiegillam.com/code/myth_py_wii.py) + +build() { + mkdir -p $startdir/pkg/usr/bin + install -D -m 755 myth_py_wii.py $startdir/pkg/usr/bin +} diff --git a/abs/extra/community/mythtv-vdpau/2.6.28_dvb_api_version.diff b/abs/extra/community/mythtv-vdpau/2.6.28_dvb_api_version.diff new file mode 100644 index 0000000..0116023 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/2.6.28_dvb_api_version.diff @@ -0,0 +1,22 @@ +Index: libs/libmythtv/dvbtypes.h +=================================================================== +--- libs/libmythtv/dvbtypes.h (revision 19792) ++++ libs/libmythtv/dvbtypes.h (working copy) +@@ -19,7 +19,7 @@ + #include + #include + +-#if (DVB_API_VERSION != 3) ++#if (DVB_API_VERSION != 3 && DVB_API_VERSION != 5) + # error "DVB driver includes with API version 3 not found!" + #endif + +@@ -27,7 +27,7 @@ + # define DVB_API_VERSION_MINOR 0 + #endif + +-#if (DVB_API_VERSION >= 3 && DVB_API_VERSION_MINOR >= 1) ++#if ((DVB_API_VERSION == 3 && DVB_API_VERSION_MINOR >= 1) || DVB_API_VERSION == 5) + # define USE_ATSC + #else + #warning DVB API version < 3.1 diff --git a/abs/extra/community/mythtv-vdpau/PKGBUILD b/abs/extra/community/mythtv-vdpau/PKGBUILD new file mode 100644 index 0000000..9c293e2 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/PKGBUILD @@ -0,0 +1,102 @@ +pkgname=mythtv-vdpau +pkgver=0.21 +pkgrel=23 +pkgdesc="A Homebrew PVR project" +arch=('i686' 'x86_64') +depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' \ + 'libxvmc' 'libavc1394' 'libdc1394' 'libiec61883' 'nvidia>=180.29' \ + 'perl-net-upnp') +backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt usr/share/mythtv/is.xml usr/share/mythtv/media_settings.xml) +source=(ftp://ftp.knoppmyth.net/R6/sources/mythtv-${pkgver}-fixes.tar.bz2 \ + mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch \ + smolt_jump.patch pretty \ + http://www.avenard.org/files/media/vdpau/mythtv-fixes-glvdpau20549.patch.gz mpegpspatch mythbackend.lr mythfrontend.lr) + +#md5sums=('e316ed18d7ac837cf8c4af54b1478793' '7ef6de58240e7aad389a0b13d91b1cf6'\ +# 'a0ecb7f476cb71c0c1ac90d349fc7695') +conflicts=('mythtv') +provides=('mythtv'=${pkgver}) +license=('GPL2') +makedepends=(libgl subversion 'nvidia-utils>=180.29' python perl) +groups=('pvr') +options=(!strip) +url="http://www.mythtv.org/" +install=mythtv.install + +build() { + cd $startdir/src/mythtv-${pkgver} || return 1 + svn update + +#apply patches + patch -p0 < ../myththemedmenu.cpp.patch + patch -p0 < ../myththemedmenu.h.patch +# patch -p0 < ../pop_be_restart.h.patch +# patch -p0 < ../pop_be_restart.cpp.patch + patch -p0 < ../smolt_jump.patch +# patch -p0 < ../2.6.28_dvb_api_version.diff + patch -p1 < ../mythtv-fixes-glvdpau20549.patch + cd libs/libavformat + patch -p0 < $startdir/src/mpegpspatch + cd - + + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + ./configure --prefix=/usr --cpu=${ARCH} --enable-mmx --enable-audio-oss \ + --enable-audio-alsa --enable-dvb --enable-lirc --enable-joystick-menu \ + --enable-firewire --enable-v4l --enable-ivtv --enable-dvb \ + --dvb-path=/usr/include --enable-xvmc --disable-ffmpeg \ + --enable-xvmc-pro --enable-xvmc-vld --enable-opengl-vsync \ + --disable-audio-jack --disable-audio-arts --disable-directfb \ + --enable-vdpau --enable-opengl-video --compile-type=debug || return 1 + + # build + #needs the subversion program + pkgversubversion=`svnversion` + echo $pkgversubversion + sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgversubversion/" version.pro + + +# qmake mythtv.pro || return 1 +# make qmake || return 1 + make || return 1 + + # basic install + make INSTALL_ROOT=$startdir/pkg install || return 1 + + # install db schema + install -m0644 database/mc.sql $startdir/pkg/usr/share/mythtv/ \ + || return 1 + install -D -m0755 ../mythbackend $startdir/pkg/etc/rc.d/mythbackend \ + || return 1 + cp -r docs $startdir/pkg/usr/share/mythtv/ || return 1 + # cp ../QUICKSTART.archlinux $startdir/pkg/usr/share/mythtv/ \ +# || return 1 + + # install contrib + mkdir -p $startdir/pkg/usr/share/mythtv/contrib || return 1 + install -m0755 contrib/* $startdir/pkg/usr/share/mythtv/contrib + + # set suid on mythfrontend + #chmod a+s $startdir/pkg/usr/bin/mythfrontend + +#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 + patch -p0 < $startdir/menu-xml/util_menu.xml.patch + +#Make log dir + mkdir -p $startdir/pkg/var/log/mythtv + chown 1000.1000 $startdir/pkg/var/log/mythtv + mkdir -p $startdir/pkg/etc/cron.hourly + install -m0755 $startdir/src/pretty $startdir/pkg/etc/cron.hourly/ + mkdir -p $startdir/pkg/etc/logrotate.d + cp $startdir/src/*.lr $startdir/pkg/etc/logrotate.d +} diff --git a/abs/extra/community/mythtv-vdpau/PKGBUILD.orig b/abs/extra/community/mythtv-vdpau/PKGBUILD.orig new file mode 100644 index 0000000..9299fa1 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/PKGBUILD.orig @@ -0,0 +1,102 @@ +pkgname=mythtv-vdpau +pkgver=0.21 +pkgrel=19 +pkgdesc="A Homebrew PVR project" +arch=('i686' 'x86_64') +depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' \ + 'libxvmc' 'libavc1394' 'libdc1394' 'libiec61883' 'nvidia>=180.29' \ + 'perl-net-upnp') +backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt usr/share/mythtv/is.xml usr/share/mythtv/media_settings.xml) +source=(ftp://ftp.knoppmyth.net/R6/sources/mythtv-${pkgver}-fixes.tar.bz2 \ + mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch \ + smolt_jump.patch pretty \ + http://www.avenard.org/files/media/vdpau/mythtv-fixes-glvdpau20462.patch.gz mpegpspatch mythbackend.lr mythfrontend.lr) + +#md5sums=('e316ed18d7ac837cf8c4af54b1478793' '7ef6de58240e7aad389a0b13d91b1cf6'\ +# 'a0ecb7f476cb71c0c1ac90d349fc7695') +conflicts=('mythtv') +provides=('mythtv'=${pkgver}) +license=('GPL2') +makedepends=(libgl subversion 'nvidia-utils>=180.29' python perl) +groups=('pvr') +url="http://www.mythtv.org/" +install=mythtv.install + +build() { + cd $startdir/src/mythtv-${pkgver} || return 1 + svn update + +#apply patches + patch -p0 < ../myththemedmenu.cpp.patch + patch -p0 < ../myththemedmenu.h.patch +# patch -p0 < ../pop_be_restart.h.patch +# patch -p0 < ../pop_be_restart.cpp.patch + patch -p0 < ../smolt_jump.patch +# patch -p0 < ../2.6.28_dvb_api_version.diff + patch -p1 < ../mythtv-fixes-glvdpau20462.patch + cd libs/libavformat + patch -p0 < $startdir/src/mpegpspatch + cd - + + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + [ "$CARCH" = "i686" ] && ARCH="i686" + [ "$CARCH" = "x86_64" ] && ARCH="x86-64" + + ./configure --prefix=/usr --cpu=${ARCH} --enable-mmx --enable-audio-oss \ + --enable-audio-alsa --enable-dvb --enable-lirc --enable-joystick-menu \ + --disable-firewire --enable-v4l --enable-ivtv --enable-dvb \ + --dvb-path=/usr/include --enable-xvmc --disable-ffmpeg \ + --enable-xvmc-pro --enable-xvmc-vld --enable-opengl-vsync \ + --disable-audio-jack --disable-audio-arts --disable-directfb \ + --enable-vdpau --enable-opengl-video --enable-ffmpeg-pthreads \ + --enable-glx-procaddrarb || return 1 + + # build + #needs the subversion program + pkgversubversion=`svnversion` + echo $pkgversubversion + sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgversubversion/" version.pro + + +# qmake mythtv.pro || return 1 +# make qmake || return 1 + make || return 1 + + # basic install + make INSTALL_ROOT=$startdir/pkg install || return 1 + + # install db schema + install -m0644 database/mc.sql $startdir/pkg/usr/share/mythtv/ \ + || return 1 + install -D -m0755 ../mythbackend $startdir/pkg/etc/rc.d/mythbackend \ + || return 1 + cp -r docs $startdir/pkg/usr/share/mythtv/ || return 1 + # cp ../QUICKSTART.archlinux $startdir/pkg/usr/share/mythtv/ \ +# || return 1 + + # install contrib + mkdir -p $startdir/pkg/usr/share/mythtv/contrib || return 1 + install -m0755 contrib/* $startdir/pkg/usr/share/mythtv/contrib + + # set suid on mythfrontend + #chmod a+s $startdir/pkg/usr/bin/mythfrontend + +#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 + patch -p0 < $startdir/menu-xml/util_menu.xml.patch + +#Make log dir + mkdir -p $startdir/pkg/var/log/mythtv + chown 1000.1000 $startdir/pkg/var/log/mythtv + mkdir -p $startdir/pkg/etc/cron.hourly + install -m0755 $startdir/src/pretty $startdir/pkg/etc/cron.hourly/ + mkdir -p $startdir/pkg/etc/logrotate.d + cp $startdir/src/*.lr $startdir/pkg/etc/logrotate.d +} diff --git a/abs/extra/community/mythtv-vdpau/QUICKSTART.archlinux b/abs/extra/community/mythtv-vdpau/QUICKSTART.archlinux new file mode 100644 index 0000000..310705c --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/QUICKSTART.archlinux @@ -0,0 +1,69 @@ +MythTV QUICKSTART +================= +This Arch Linux package provides a generic MythTV installation. It +requires extensive user configuration. This is a skeletal document, and +more extensive information is available in /usr/share/mythtv/docs. + +MythTV is split into a backend and a frontend. The backend records +television programming, keeps up with scheduling, does commercial +flagging, transcoding, and other such jobs. The frontend provides a +pretty GUI which allows playback and edition of the recorded programs. +It also provides a means to schedule recordings. There are a number of +plugins available for MythTV, and most of the official ones are +available as Arch packages. There are two configurations; the backend +and frontend can be on the same machine, or on two different machines on +the same network. + +Backend Configuration +--------------------- +MythTV keeps the majority of its settings and program information in a +mysql database. Before running the backend configuration program, it is +necessary to initialize the datase. Make sure mysql is running properly. + +# mysql < /usr/share/mythtv/mc.sql + +If your frontend is going to be remote, you must allow other computers +on your network to have access to your database. Substitute 192.168.1.% +with whatever IP range you use. If you have a root mysql password (as +you should), leave the -p in the mysql command line. Otherwise remove +the switch. + +# mysql -u root -p + mysql> connect mythconverg; + mysql> grant all on mythconverg.* to mythtv@"192.168.1.%" identified by "mythtv"; + mysql> flush privileges; + mysql> quit + +In order to configure the MythTV backend, you will need to run the +mythtv-setup program. Note that this requires X. If your backend is +headless, considering using vnc as a quick and dirty "fix". + +# mythtv-setup + +Go through all the menus. You will need to know information like your +capture card device (/dev/v4l/video[0-9]) and your program information +acquisition method. United States users will most likely subscribe to +Zap2it Labs' DataDirect service. It requires that users take a survey +every three months in order to continue service. This isn't as hard as +it sounds. + +It is necessary to update the database with all the current TV listings. +Run the mythfilldatabase program to grab the listings using whatever +method you specified in mythtv-setup. + +# mythfilldatabase + +Run mythbackend from the command line to make sure everything starts ok. + +# mythbackend + +If so, you may kill the task with "ctrl-c" on your keyboard, and add the +backend to /etc/rc.conf. In the DAEMONS line, just add "mythbackend" to +the list. + +In the future, you will need to run mythfilldatabase regularly. I allow +my frontend computer to do this, as it runs continuously, and it is an +option within MythTV. Otherwise, you can set up a cron job, or move +mythfilldatabasecron to /etc/cron.daily + +cp /usr/share/mythtv/mythfilldatabasecron /etc/cron.daily diff --git a/abs/extra/community/mythtv-vdpau/menu-xml/HOST_SETTINGS.xml b/abs/extra/community/mythtv-vdpau/menu-xml/HOST_SETTINGS.xml new file mode 100755 index 0000000..f257920 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/menu-xml/HOST_SETTINGS.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/extra/community/mythtv-vdpau/menu-xml/is.xml b/abs/extra/community/mythtv-vdpau/menu-xml/is.xml new file mode 100644 index 0000000..88b7e6b --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/menu-xml/is.xml @@ -0,0 +1,3 @@ + + + diff --git a/abs/extra/community/mythtv-vdpau/menu-xml/library.xml.patch b/abs/extra/community/mythtv-vdpau/menu-xml/library.xml.patch new file mode 100644 index 0000000..efc8623 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/menu-xml/library.xml.patch @@ -0,0 +1,15 @@ +--- library.xml.orig 2009-02-09 04:30:04.000000000 +0000 ++++ library.xml 2009-02-09 04:31:50.000000000 +0000 +@@ -119,10 +119,9 @@ + + + + + + + + + + + + + diff --git a/abs/extra/community/mythtv-vdpau/menu-xml/mainmenu.xml.patch b/abs/extra/community/mythtv-vdpau/menu-xml/mainmenu.xml.patch new file mode 100644 index 0000000..a299325 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/menu-xml/mainmenu.xml.patch @@ -0,0 +1,39 @@ +--- mainmenu.xml.orig 2009-01-09 02:45:07.000000000 +0000 ++++ mainmenu.xml 2009-01-22 08:04:28.000000000 +0000 +@@ -158,34 +158,8 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/extra/community/mythtv-vdpau/mpegpspatch b/abs/extra/community/mythtv-vdpau/mpegpspatch new file mode 100644 index 0000000..eed08eb --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/mpegpspatch @@ -0,0 +1,66 @@ +--- orig_mpeg.c 2009-03-23 11:26:22.000000000 -0700 ++++ mpeg.c 2009-03-23 11:28:09.000000000 -0700 +@@ -66,35 +66,40 @@ + + static int mpegps_probe(AVProbeData *p) + { ++ uint32_t code= -1; ++ int sys=0, pspack=0, priv1=0, vid=0, audio=0, invalid=0; + int i; +- int size= FFMIN(2048, p->buf_size); +- uint32_t code=0xFF; ++ int score=0; + +- /* we search the first start code. If it is a packet start code, +- then we decide it is mpeg ps. We do not send highest value to +- give a chance to mpegts */ +- /* NOTE: the search range was restricted to avoid too many false +- detections */ +- +- for (i = 0; i < size; i++) { +- code = (code << 8) | p->buf[i]; ++ for(i=0; ibuf_size; i++){ ++ code = (code<<8) + p->buf[i]; + if ((code & 0xffffff00) == 0x100) { +- if (code == PACK_START_CODE || +- code == SYSTEM_HEADER_START_CODE || +- (code >= 0x1e0 && code <= 0x1ef) || +- (code >= 0x1c0 && code <= 0x1df) || +- code == PRIVATE_STREAM_2 || +- code == PROGRAM_STREAM_MAP || +- code == PRIVATE_STREAM_1 || +- code == PADDING_STREAM || +- code >= 0x100 && code <= 0x1b0) +- return AVPROBE_SCORE_MAX - 2; +- else +- return 0; ++ int pes= check_pes(p->buf+i, p->buf+p->buf_size); ++ ++ if(code == SYSTEM_HEADER_START_CODE) sys++; ++ else if(code == PRIVATE_STREAM_1) priv1++; ++ else if(code == PACK_START_CODE) pspack++; ++ else if((code & 0xf0) == VIDEO_ID && pes) vid++; ++ else if((code & 0xe0) == AUDIO_ID && pes) audio++; ++ ++ else if((code & 0xf0) == VIDEO_ID && !pes) invalid++; ++ else if((code & 0xe0) == AUDIO_ID && !pes) invalid++; + } + } + +- return 0; ++ if(vid+audio > invalid) /* invalid VDR files nd short PES streams */ ++ score= AVPROBE_SCORE_MAX/4; ++ ++//av_log(NULL, AV_LOG_ERROR, "%d %d %d %d %d len:%d\n", sys, priv1, pspack,vid, audio, p->buf_size); ++ if(sys>invalid && sys*9 <= pspack*10) ++ return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg ++ if(priv1 + vid + audio > invalid && (priv1+vid+audio)*9 <= pspack*10) ++ return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg ++ if((!!vid ^ !!audio) && (audio > 4 || vid > 1) && !sys && !pspack && p->buf_size>2048) /* PES stream */ ++ return AVPROBE_SCORE_MAX/2+2; ++ ++ //02-Penguin.flac has sys:0 priv1:0 pspack:0 vid:0 audio:1 ++ return score; + } + + typedef struct MpegDemuxContext { diff --git a/abs/extra/community/mythtv-vdpau/mythbackend b/abs/extra/community/mythtv-vdpau/mythbackend new file mode 100755 index 0000000..93773a2 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/mythbackend @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/mythbackend` +case "$1" in + start) + stat_busy "Starting MythTV Backend" + [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit + [ -z "$PID" ] && /usr/bin/mythbackend -d -l /var/log/mythbackend.log -v important + if [ $? -gt 0 ]; then + stat_fail + else + echo $PID > /var/run/mythbackend.pid + add_daemon mythbackend + stat_done + fi + ;; + stop) + stat_busy "Stopping MythTV Backend" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon mythbackend + stat_done + fi + ;; + restart) + $0 stop + sleep 1s + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/community/mythtv-vdpau/mythbackend.lr b/abs/extra/community/mythtv-vdpau/mythbackend.lr new file mode 100644 index 0000000..4f218bc --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/mythbackend.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/mythbackend.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/extra/community/mythtv-vdpau/mythfrontend.lr b/abs/extra/community/mythtv-vdpau/mythfrontend.lr new file mode 100644 index 0000000..1580533 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/mythfrontend.lr @@ -0,0 +1,9 @@ +/var/log/mythtv/mythfrontend.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/extra/community/mythtv-vdpau/myththemedmenu.cpp.patch b/abs/extra/community/mythtv-vdpau/myththemedmenu.cpp.patch new file mode 100644 index 0000000..e5c57ef --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/myththemedmenu.cpp.patch @@ -0,0 +1,125 @@ +--- libs/libmythui/myththemedmenu.cpp.orig 2008-01-31 15:26:38.000000000 +0000 ++++ libs/libmythui/myththemedmenu.cpp 2008-02-07 22:24:27.000000000 +0000 +@@ -2102,6 +2102,10 @@ + } + lastbutton = NULL; + } ++ else if (action == "MENU") ++ { ++ parent->doMenu(); ++ } + else if (action == "EJECT") + { + myth_eject(); +@@ -2482,6 +2486,8 @@ + + if (d->foundtheme) + d->parseMenu(menufile); ++ ++ m_menuPopup = NULL; + } + + MythThemedMenu::~MythThemedMenu(void) +@@ -2592,3 +2598,102 @@ + MythScreenType::aboutToShow(); + d->updateLCD(); + } ++void MythThemedMenu::doMenu() ++{ ++ int allowsd = gContext->GetNumSetting("AllowQuitShutdown"); ++ if (m_menuPopup) ++ return; ++ QString label = "System Menu"; ++ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); ++ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup"); ++ if (m_menuPopup->Create()) ++ mainStack->AddScreen(m_menuPopup); ++ ++ //changed line to always show shutdown/reboot ++ if ( allowsd != 10 && allowsd !=14 ) ++ { ++ m_menuPopup->SetReturnEvent(this,"popmenu_exit"); ++ m_menuPopup->AddButton("Power off"); ++ m_menuPopup->AddButton("Reboot"); ++ m_menuPopup->AddButton("About"); ++ m_menuPopup->AddButton("Cancel"); ++ } ++ 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(IO_ReadOnly | IO_Translate) ) ++ { ++ 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(QCustomEvent *event) ++{ ++ if (event->type() == kMythDialogBoxCompletionEventType) ++ { ++ DialogCompletionEvent *dce = ++ dynamic_cast(event); ++ ++ QString resultid= dce->GetId(); ++ int buttonnum = dce->GetResult(); ++ if (resultid == "popmenu_exit") ++ { ++ if (buttonnum == 0) ++ { ++ QString halt_cmd = gContext->GetSetting("HaltCommand", ++ "sudo /sbin/halt -p"); ++ if (!halt_cmd.isEmpty()) ++ system(halt_cmd.ascii()); ++ } ++ ++ if (buttonnum == 1) ++ { ++ QString reboot_cmd = gContext->GetSetting("RebootCommand", ++ "sudo /sbin/reboot"); ++ if (!reboot_cmd.isEmpty()) ++ system(reboot_cmd.ascii()); ++ } ++ ++ if (buttonnum == 2) ++ { ++ aboutScreen(); ++ } ++ } ++ ++ if (resultid == "popmenu_noexit") ++ { ++ if (buttonnum == 0) ++ aboutScreen(); ++ } ++ ++ m_menuPopup = NULL; ++ } ++} diff --git a/abs/extra/community/mythtv-vdpau/myththemedmenu.h.patch b/abs/extra/community/mythtv-vdpau/myththemedmenu.h.patch new file mode 100644 index 0000000..9744b11 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/myththemedmenu.h.patch @@ -0,0 +1,25 @@ +--- libs/libmythui/myththemedmenu.h.orig 2008-01-31 15:26:45.000000000 +0000 ++++ libs/libmythui/myththemedmenu.h 2008-02-07 21:00:22.000000000 +0000 +@@ -2,6 +2,7 @@ + #define MYTHTHEMEDMENU_H_ + + #include "mythscreentype.h" ++#include "mythdialogbox.h" + + class MythMainWindow; + class MythThemedMenuPrivate; +@@ -26,8 +27,14 @@ + + void ReloadTheme(void); + void ReloadExitKey(void); ++ + virtual void aboutToShow(void); + ++ void doMenu(); ++ void aboutScreen(); ++ MythDialogBox *m_menuPopup; ++ void customEvent(QCustomEvent *event); ++ + protected: + virtual bool keyPressEvent(QKeyEvent *e); + virtual void gestureEvent(MythUIType *origtype, MythGestureEvent *ge); diff --git a/abs/extra/community/mythtv-vdpau/mythtv.install b/abs/extra/community/mythtv-vdpau/mythtv.install new file mode 100644 index 0000000..a063766 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/mythtv.install @@ -0,0 +1,61 @@ +# arg 1: the new package version +post_install() { + if [ ! -d /var/log/mythtv ] + then + mkdir -p /var/log/mythv + chown -R mythtv /var/log/mythtv + echo "---" > /var/log/mythtv/mythbackend.log + chown mythtv /var/log/mythtv/mythbackend.log + fi + if [ -e /tmp/is.xml ] + then + cp /tmp/is.xml /usr/share/mythtv/is.xml + fi + + if [ -e /tmp/media_settings.xml ] + then + cp /tmp/media_settings.xml /usr/share/mythtv/media_settings.xml + fi + + echo + echo + echo "As is with no guarantee, please don't file any bu reports against this package." +} +pre_upgrade() { + if [ -e /usr/share/mythtv/is.xml ] + then + cp /usr/share/mythtv/is.xml /tmp + fi + + if [ -e /usr/share/mythtv/media_settings.xml ] + then + cp /usr/share/mythtv/media_settings.xml /tmp + fi +} + +post_upgrade() { + cp /tmp/is.xml /usr/share/mythtv/ + cp /tmp/media_settings.xml /usr/share/mythtv/ + if [ ! -d /var/log/mythtv ] + then + mkdir -p /var/log/mythv + chown -R mythtv /var/log/mythtv + fi + echo + echo + echo "As is with no guarantee, please don't file any bu reports against this package." + +} +pre_remove () { + pre_upgrade +} + +# arg 1: the old package version +post_remove() { + /bin/true + +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/mythtv-vdpau/pretty b/abs/extra/community/mythtv-vdpau/pretty new file mode 100644 index 0000000..eed6f9c --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/pretty @@ -0,0 +1,2 @@ +#!/bin/bash +su - mythtv -c "/usr/bin/perl /usr/share/mythtv/contrib/mythrename.pl --link /myth/pretty" diff --git a/abs/extra/community/mythtv-vdpau/smolt_jump.patch b/abs/extra/community/mythtv-vdpau/smolt_jump.patch new file mode 100644 index 0000000..696be80 --- /dev/null +++ b/abs/extra/community/mythtv-vdpau/smolt_jump.patch @@ -0,0 +1,9 @@ +--- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-23 23:00:25.000000000 +0000 ++++ programs/mythfrontend/networkcontrol.cpp 2008-03-23 23:01:33.000000000 +0000 +@@ -81,6 +81,7 @@ + jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; + jumpMap["zoneminderevents"] = "ZoneMinder Events"; ++ jumpMap["mythsmolt"] = "MythSmolt"; + + // These jump point names match the (lowercased) locations from gContext + jumpMap["channelrecpriority"] = "Channel Recording Priorities"; diff --git a/abs/extra/community/ncdu/PKGBUILD b/abs/extra/community/ncdu/PKGBUILD new file mode 100644 index 0000000..fb61b63 --- /dev/null +++ b/abs/extra/community/ncdu/PKGBUILD @@ -0,0 +1,19 @@ +# Contributor: lp76 +pkgname=ncdu +pkgver=1.4 +pkgrel=1 +pkgdesc="An NCurses version of the famous old 'du' unix command" +arch=('i686' 'x86_64') +url="http://dev.yorhel.nl/ncdu/" +license=('MIT') +depends=('ncurses') +source=(http://dev.yorhel.nl/download/$pkgname-$pkgver.tar.gz) +md5sums=('07f01579f7c9852033139ae9fa2414c9') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$pkgdir install || return 1 + install -D COPYING $pkgdir/usr/share/licenses/$pkgname/LICENSE +} diff --git a/abs/extra/community/nvclock/PKGBUILD b/abs/extra/community/nvclock/PKGBUILD new file mode 100644 index 0000000..d49f915 --- /dev/null +++ b/abs/extra/community/nvclock/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 23406 2009-01-09 22:39:57Z andyrtr $ +# Contributor: Markus Meissner +# Maintainer: Andreas Radke + +pkgname=nvclock +pkgver=0.8b4 +pkgrel=1 +pkgdesc="A small utility which allows users to overclock NVIDIA based video cards" +arch=('i686' 'x86_64') +license=('GPL') +depends=('gtk2') +source=(http://www.linuxhardware.org/$pkgname/${pkgname}${pkgver}.tar.gz + nvclock-0.8b4-buildfix.patch) +url="http://www.linuxhardware.org/nvclock/" +md5sums=('23f1b3ebf40f35d76d5fdac50f66ab11' + '1da24b50dd6a8c4704fa550a3e1a8b53') +options=('!makeflags') + +build(){ + cd ${srcdir}/$pkgname$pkgver + # build fix from Fedora + patch -Np1 -i $srcdir/nvclock-0.8b4-buildfix.patch || return 1 + sed -i 's:${prefix}/man:${prefix}\/share\/man:' ${srcdir}/$pkgname$pkgver/Makefile.in || return 1 + ./configure --prefix=/usr --bindir=/usr/bin + make || return 1 || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/extra/community/nvclock/nvclock-0.8b4-buildfix.patch b/abs/extra/community/nvclock/nvclock-0.8b4-buildfix.patch new file mode 100644 index 0000000..cdc9f5c --- /dev/null +++ b/abs/extra/community/nvclock/nvclock-0.8b4-buildfix.patch @@ -0,0 +1,16 @@ +diff -upNr nvclock0.8b4.orign/src/Makefile.in nvclock0.8b4/src/Makefile.in +--- nvclock0.8b4.orign/src/Makefile.in 2009-01-03 18:02:54.000000000 +0100 ++++ nvclock0.8b4/src/Makefile.in 2009-01-07 11:37:39.000000000 +0100 +@@ -50,8 +50,8 @@ distclean: distclean-recursive clean-app + install: install-recursive install-app + install-app: + mkdir -p $(bindir) +- $(INSTALL) -c nvclock $(DESTDIR)$(bindir)/nvclock +- $(INSTALL) -c smartdimmer $(DESTDIR)$(bindir)/smartdimmer ++ $(INSTALL) -c nvclock $(bindir)/nvclock ++ $(INSTALL) -c smartdimmer $(bindir)/smartdimmer + + + uninstall: uninstall-recursive uninstall-app + + diff --git a/abs/extra/community/nvidia-beta/PKGBUILD b/abs/extra/community/nvidia-beta/PKGBUILD new file mode 100644 index 0000000..d4beaf7 --- /dev/null +++ b/abs/extra/community/nvidia-beta/PKGBUILD @@ -0,0 +1,44 @@ +# Maintainer : Dan Vratil + +pkgname=nvidia-beta +pkgver=180.41 +_kernver=2.6.28-LinHES +pkgrel=1 +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=180.41') +url="http://www.nvidia.com/" +depends=('kernel26' 'nvidia-utils-beta=180.41') +conflicts=('nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy') +license=('custom') +provides=("nvidia") +install=('nvidia.install') +source=(ftp://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}.run) + +md5sums=('ec91f014a00357303c12f4cfd03c8a3f') +[ "$CARCH" = "x86_64" ] && md5sums=('07ec7b5521d927b6ff332ef019ac80cd') + + +build() +{ + # Extract + echo ${_kernver} + cd $startdir/src/ + sh NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}.run --extract-only + cd NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV} + + # Any extra patches are applied in here... + + cd usr/src/nv/ + ln -s Makefile.kbuild Makefile + make SYSSRC=/lib/modules/${_kernver}/build module + + # install kernel module + mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/ + install -m644 nvidia.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/ + + sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install +} + diff --git a/abs/extra/community/nvidia-beta/nvidia.install b/abs/extra/community/nvidia-beta/nvidia.install new file mode 100644 index 0000000..f892d98 --- /dev/null +++ b/abs/extra/community/nvidia-beta/nvidia.install @@ -0,0 +1,22 @@ +# arg 1: the new package version +post_install() { + KERNEL_VERSION=`uname -r` + 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=`uname -r` + depmod -v $KERNEL_VERSION > /dev/null 2>&1 +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/nvidia-utils-beta/PKGBUILD b/abs/extra/community/nvidia-utils-beta/PKGBUILD new file mode 100644 index 0000000..d89addd --- /dev/null +++ b/abs/extra/community/nvidia-utils-beta/PKGBUILD @@ -0,0 +1,80 @@ +#Maintainer: Dan Vratil + +pkgname=nvidia-utils-beta +pkgver=180.41 +pkgrel=1 +pkgdesc="NVIDIA beta drivers utilities and libraries." +provides=('nvidia-utils' 'libgl') +arch=('i686' 'x86_64') +[ "$CARCH" = "i686" ] && ARCH=x86 && NV=0 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 && NV=0 +url="http://www.nvidia.com/" +depends=('xorg-server>=1.5') +provides=('nvidia-utils=180.41' 'libgl') +conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-legacy-utils' \ + 'nvidia-71xx-utils' 'nvidia-96xx-utils') +license=('custom') +install=nvidia.install +source=(ftp://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run \ + supported-cards.txt) + +md5sums=('ec91f014a00357303c12f4cfd03c8a3f' + '5b5835bdb1508a57591b812c109a2679') +[ "$CARCH" = "x86_64" ] && md5sums=('07ec7b5521d927b6ff332ef019ac80cd' + '5b5835bdb1508a57591b812c109a2679') +options=(docs) + +build() +{ + # override nvida install routine and do it the long way. + cd $startdir/src/ + sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run --extract-only + cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/ + + mkdir -p $startdir/pkg/usr/{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} \ + mkdir -p $startdir/pkg/usr/include/{,GL,cuda,vdpau} + + install -m644 include/cuda/{cudaGL,cuda}.h $startdir/pkg/usr/include/cuda + install -m644 include/vdpau/{vdpau_x11,vdpau}.h $startdir/pkg/usr/include/vdpau + # Conflicts with MESA; if you want to develop opengl app, enable this line + #install -m644 include/GL/{glxext,gl,glx,glext}.h $startdir/pkg/usr/include/GL + + install lib/{libGLcore,libGL,libnvidia-cfg,libcuda,tls/libnvidia-tls,libvdpau_nvidia,libvdpau,libvdpau_trace}.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 + ln -s libvdpau.so.$pkgver libvdpau.so.1 || return 1 + ln -s libvdpau.so.$pkgver libvdpau.so || return 1 + cd $startdir/pkg/usr/lib/xorg/modules/extensions + ln -s libglx.so.$pkgver libglx.so || return 1 + + install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || return 1 + ln -s nvidia $startdir/pkg/usr/share/licenses/nvidia-utils || return 1 + install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || return 1 + install -D -m644 $startdir/src/supported-cards.txt $startdir/pkg/usr/share/doc/nvidia/supported-cards.txt || return 1 + + find $startdir/pkg/usr -type d -exec chmod 755 {} \; +} + diff --git a/abs/extra/community/nvidia-utils-beta/nvidia.install b/abs/extra/community/nvidia-utils-beta/nvidia.install new file mode 100644 index 0000000..6f50f79 --- /dev/null +++ b/abs/extra/community/nvidia-utils-beta/nvidia.install @@ -0,0 +1,36 @@ +# 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 This drivers are beta. We recommend to use drivers from extra repo. + +# 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 +} + +#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/extra/community/nvidia-utils-beta/supported-cards.txt b/abs/extra/community/nvidia-utils-beta/supported-cards.txt new file mode 100644 index 0000000..7dfcb45 --- /dev/null +++ b/abs/extra/community/nvidia-utils-beta/supported-cards.txt @@ -0,0 +1,272 @@ +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 contains GPUs currently supported by the 177.76 beta driver. + +______________________________________________________________________________ + +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 177.36 +driver, and then go to the Supported Products List. + + +A1. NVIDIA GEFORCE GPUS + + + NVIDIA GPU product Device PCI ID + ---------------------------------- ---------------------------------- + GeForce 9800 GTX+ 0x0613 + GeForce 9800GT 0x0614 + GeForce 8100P 0x0847 + nForce 780a SLI 0x084C + nForce 750a SLI 0x084D + GeForce 9700 M GTS 0x062A + GeForce 9800 GX2 0x0604 + GeForce 9800 GTX 0x0612 + GeForce 9600 GT 0x0622 + GeForce 9500 GT 0x0640 + GeForce 9500M GS 0x0405 + GeForce 8800M GTX 0x060C + GeForce 8800M GTS 0x0609 + GeForce 8800 Ultra 0x0194 + GeForce 8800 GTX 0x0191 + GeForce 8800 GTS 512 0x0600 + GeForce 8800 GTS 0x0193 + GeForce 8800 GT 0x0602 + GeForce 8800 GT 0x0611 + GeForce 8800 GS 0x0606 + GeForce 8800 GS 0x060D + GeForce 8700M GT 0x0409 + GeForce 8600M GT 0x0407 + GeForce 8600M GS 0x0425 + GeForce 8600 GTS 0x0400 + GeForce 8600 GT 0x0401 + GeForce 8600 GT 0x0402 + GeForce 8500 GT 0x0421 + GeForce 8400M GT 0x0426 + GeForce 8400M GS 0x0427 + GeForce 8400M G 0x0428 + GeForce 8400 SE 0x0420 + GeForce 8400 GS 0x0404 + GeForce 8400 GS 0x0422 + GeForce 8400 GS 0x0424 + GeForce 8400 GS 0x06E4 + GeForce 8300 GS 0x0423 + GeForce 8300 0x0848 + GeForce 8200/ nForce 730a 0x084A + GeForce 8200 0x0849 + GeForce 8200 0x084B + GeForce 8100 / nForce 720a 0x084F + GeForce 7950 GX2 0x0293 + GeForce 7950 GX2 0x0294 + GeForce 7950 GT 0x0295 + GeForce 7950 GT 0x02E4 + GeForce 7900 GTX 0x0290 + GeForce 7900 GT/GTO 0x0291 + GeForce 7900 GS 0x0292 + GeForce 7900 GS 0x02E3 + GeForce 7800 SLI 0x0095 + GeForce 7800 GTX 0x0090 + GeForce 7800 GTX 0x0091 + GeForce 7800 GT 0x0092 + GeForce 7800 GS 0x0093 + GeForce 7800 GS 0x00F5 + GeForce 7650 GS 0x0390 + GeForce 7600 LE 0x0394 + GeForce 7600 GT 0x02E0 + GeForce 7600 GT 0x0391 + GeForce 7600 GS 0x02E1 + GeForce 7600 GS 0x0392 + GeForce 7500 LE 0x01DD + GeForce 7350 LE 0x01D0 + GeForce 7300 SE/7200 GS 0x01D3 + GeForce 7300 LE 0x01D1 + GeForce 7300 GT 0x0393 + GeForce 7300 GT 0x0395 + GeForce 7300 GS 0x01DF + GeForce 7150M / nForce 630M 0x0531 + GeForce 7150 / NVIDIA nForce 630i 0x07E0 + GeForce 7100 GS 0x016A + GeForce 7100 / NVIDIA nForce 630i 0x07E1 + GeForce 7050 PV / NVIDIA nForce 630a 0x053A + GeForce 7050 PV / NVIDIA nForce 630a 0x053B + GeForce 7050 / NVIDIA nForce 610i 0x07E3 + GeForce 7025 / NVIDIA nForce 630a 0x053E + GeForce 7000M / nForce 610M 0x0533 + GeForce 6800 XT 0x0044 + GeForce 6800 XT 0x0048 + GeForce 6800 XT 0x00C3 + GeForce 6800 XT 0x0218 + GeForce 6800 XE 0x0043 + GeForce 6800 Ultra 0x0040 + GeForce 6800 Ultra 0x00F9 + GeForce 6800 LE 0x0042 + GeForce 6800 LE 0x00C2 + GeForce 6800 LE 0x0212 + GeForce 6800 GT 0x0045 + GeForce 6800 GT 0x0046 + GeForce 6800 GT 0x0215 + GeForce 6800 GS 0x0047 + GeForce 6800 GS 0x00C0 + GeForce 6800 GS 0x00F6 + GeForce 6800 0x0041 + GeForce 6800 0x00C1 + GeForce 6800 0x00F0 + GeForce 6800 0x0211 + GeForce 6700 XL 0x0147 + GeForce 6610 XL 0x0145 + GeForce 6600 VE 0x0143 + GeForce 6600 LE 0x00F4 + GeForce 6600 LE 0x0142 + GeForce 6600 GT 0x00F1 + GeForce 6600 GT 0x0140 + GeForce 6600 0x00F2 + GeForce 6600 0x0141 + GeForce 6500 0x0160 + GeForce 6250 0x0169 + GeForce 6200SE TurboCache(TM) 0x0162 + GeForce 6200 TurboCache(TM) 0x0161 + GeForce 6200 LE 0x0163 + GeForce 6200 A-LE 0x0222 + GeForce 6200 0x00F3 + GeForce 6200 0x014F + GeForce 6200 0x0221 + GeForce 6150SE nForce 430 0x03D0 + GeForce 6150 LE 0x0241 + GeForce 6150 0x0240 + GeForce 6100 nForce 420 0x03D5 + GeForce 6100 nForce 405 0x03D1 + GeForce 6100 nForce 400 0x03D2 + GeForce 6100 0x0242 + GeForce PCX 5900 0x00FB + GeForce PCX 5750 0x00FA + GeForce PCX 5300 0x00FC + GeForce Go 7950 GTX 0x0297 + GeForce Go 7900 GTX 0x0299 + GeForce Go 7900 GS 0x0298 + GeForce Go 7800 GTX 0x0099 + GeForce Go 7800 0x0098 + GeForce Go 7600 GT 0x0399 + GeForce Go 7600 0x0398 + GeForce Go 7400 0x01D8 + GeForce Go 7300 0x01D7 + GeForce Go 7200 0x01D6 + GeForce Go 6800 Ultra 0x00C9 + GeForce Go 6800 0x00C8 + GeForce Go 6600 TE/6200 TE 0x0146 + GeForce Go 6600 GT 0x0149 + GeForce Go 6600 0x0144 + GeForce Go 6600 0x0148 + GeForce Go 6400 0x0166 + GeForce Go 6400 0x0168 + GeForce Go 6200 0x0164 + GeForce Go 6200 0x0167 + GeForce Go 6150 0x0244 + GeForce Go 6100 0x0247 + GeForce FX Go5700 0x0347 + GeForce FX Go5700 0x0348 + GeForce FX Go5650 0x031B + GeForce FX Go5600 0x031A + GeForce FX Go53xx 0x032C + GeForce FX Go5250 0x0325 + GeForce FX Go5200 32M/64M 0x0328 + GeForce FX Go5200 0x0324 + GeForce FX Go5100 0x032D + GeForce FX 5950 Ultra 0x0333 + GeForce FX 5900ZT 0x0334 + GeForce FX 5900XT 0x0332 + GeForce FX 5900 Ultra 0x0330 + GeForce FX 5900 0x0331 + GeForce FX 5800 Ultra 0x0301 + GeForce FX 5800 0x0302 + GeForce FX 5700VE 0x0344 + GeForce FX 5700LE 0x0343 + GeForce FX 5700 Ultra 0x0341 + GeForce FX 5700 0x0342 + GeForce FX 5600XT 0x0314 + GeForce FX 5600 Ultra 0x0311 + GeForce FX 5600 0x0312 + GeForce FX 5500 0x0326 + GeForce FX 5200LE 0x0323 + GeForce FX 5200 Ultra 0x0321 + GeForce FX 5200 0x0320 + GeForce FX 5200 0x0322 + GeForce FX 5100 0x0327 + + +A1. TESLA GPUS + + NVIDIA GPU product Device PCI ID + ---------------------------------- ---------------------------------- + Tesla C870 0x0197 + + +A1. NVIDIA GEFORCE GPUS + + NVIDIA GPU product Device PCI ID + ---------------------------------- ---------------------------------- + Quadro FX 770M 0x065C + Quadro NVS 160M 0x06EB + Quadro NVS 150M 0x06EA + Quadro FX 1000 0x0309 + Quadro FX 1100 0x034E + Quadro FX 1300 0x00FE + Quadro FX 1400 0x00CE + Quadro FX 1500 0x029E + Quadro FX 1500M 0x029B + Quadro FX 1600M 0x040D + Quadro FX 1700 0x040F + Quadro FX 2000 0x0308 + Quadro FX 2500M 0x029A + Quadro FX 3000 0x0338 + Quadro FX 330 0x00FC + Quadro FX 3450/4000 SDI 0x00CD + Quadro FX 350 0x01DE + Quadro FX 3500 0x029D + Quadro FX 350M 0x01DC + Quadro FX 3600M 0x061C + Quadro FX 360M 0x042D + Quadro FX 370 0x040A + Quadro FX 3700 0x061A + Quadro FX 4000 0x004E + Quadro FX 4400/Quadro FX 3400 0x00F8 + Quadro FX 4500 0x009D + Quadro FX 4500 X2 0x029F + Quadro FX 4600 0x019E + Quadro FX 500/FX 600 0x032B + Quadro FX 540 0x014E + Quadro FX 540M 0x014C + Quadro FX 550 0x014D + Quadro FX 5500 0x029C + Quadro FX 560 0x039E + Quadro FX 5600 0x019D + Quadro FX 570 0x040E + Quadro FX 570M 0x040C + Quadro FX 700 0x033F + Quadro FX Go1000 0x034C + Quadro FX Go1400 0x00CC + Quadro FX Go700 0x031C + Quadro NVS 110M 0x01D7 + Quadro NVS 110M 0x01DA + Quadro NVS 120M 0x01DB + Quadro NVS 130M 0x042A + Quadro NVS 135M 0x042B + Quadro NVS 140M 0x0429 + Quadro NVS 210S 0x0245 + NVIDIA GeForce 6150L 0x0245 + Quadro NVS 280 PCI-E/Quadro FX 330 0x00FD + Quadro NVS 285 0x0165 + Quadro NVS 290 0x042F + Quadro NVS 320M 0x040B + Quadro NVS 440 0x014A + Quadro NVS 55/280 PCI 0x032A + + diff --git a/abs/extra/community/nxtvepg.tar.gz b/abs/extra/community/nxtvepg.tar.gz new file mode 100644 index 0000000..fe8da09 Binary files /dev/null and b/abs/extra/community/nxtvepg.tar.gz differ diff --git a/abs/extra/community/nxtvepg/PKGBUILD b/abs/extra/community/nxtvepg/PKGBUILD new file mode 100644 index 0000000..5de6bc7 --- /dev/null +++ b/abs/extra/community/nxtvepg/PKGBUILD @@ -0,0 +1,45 @@ +# Contributor: Perry3D +# Previous: Gilles CHAUVIN + +pkgname=nxtvepg +pkgver=2.8.1 +pkgrel=2 +pkgdesc="A decoder for nexTView EPG an Electronic TV Programme Guide" +url="http://nxtvepg.sf.net/" +license="GPL" +depends=('tcl>=8.5.0' 'tk' 'libxmu') +source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz \ +tcl_85.patch \ +$pkgname-icon-16.png $pkgname-icon-32.png $pkgname-icon-48.png \ +$pkgname.desktop) +arch=('i686' 'x86_64') + +build() { + cd $startdir/src/$pkgname-$pkgver + + msg "Applying patch for tcl/tk8.5..." + patch -p0 < ../tcl_85.patch + + make || return 1 + + make prefix=$startdir/pkg/usr/ \ + bindir=$startdir/pkg/usr/bin \ + resdir=$startdir/pkg/usr/share/X11 \ + INST_DB_DIR=$startdir/pkg/var/tmp/nxtvdb \ + cfgdir=$startdir/pkg/usr/share/nxtvepg \ + install + + # Icons + for size in 16 32 48; do + install $startdir/src/$pkgname-icon-$size.png -D -m644 $startdir/pkg/usr/share/pixmaps/$pkgname-icon-$size.png + done + + # .desktop file + install $startdir/src/$pkgname.desktop -D -m644 $startdir/pkg/usr/share/applications/$pkgname.desktop +} +md5sums=('0811b1b95537b3cbab9f8d18d1501411' + 'db5e77089204aeb35e84c7f5505664a6' + '5f7c220d3355b6f043a2bdd5acec8608' + '8988d3f33a90bd99f9a61d8f7e4f46c3' + '26d86bd935df1dc9328f07b879f30de2' + '5d14ff096ef811ccb7dc330e5d3a76fd') diff --git a/abs/extra/community/nxtvepg/nxtvepg-icon-16.png b/abs/extra/community/nxtvepg/nxtvepg-icon-16.png new file mode 100644 index 0000000..e6d8a85 Binary files /dev/null and b/abs/extra/community/nxtvepg/nxtvepg-icon-16.png differ diff --git a/abs/extra/community/nxtvepg/nxtvepg-icon-32.png b/abs/extra/community/nxtvepg/nxtvepg-icon-32.png new file mode 100644 index 0000000..9071f10 Binary files /dev/null and b/abs/extra/community/nxtvepg/nxtvepg-icon-32.png differ diff --git a/abs/extra/community/nxtvepg/nxtvepg-icon-48.png b/abs/extra/community/nxtvepg/nxtvepg-icon-48.png new file mode 100644 index 0000000..a5f991b Binary files /dev/null and b/abs/extra/community/nxtvepg/nxtvepg-icon-48.png differ diff --git a/abs/extra/community/nxtvepg/nxtvepg.desktop b/abs/extra/community/nxtvepg/nxtvepg.desktop new file mode 100644 index 0000000..6703dfc --- /dev/null +++ b/abs/extra/community/nxtvepg/nxtvepg.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Comment=Electronic TV Programme Guide +Icon=/usr/share/pixmaps/nxtvepg-icon-48.png +Exec=nxtvepg +Name=nexTView EPG +GenericName=electronic TV Programme Guide +Terminal=false +Type=Application +Categories=Application;AudioVideo; diff --git a/abs/extra/community/nxtvepg/tcl_85.patch b/abs/extra/community/nxtvepg/tcl_85.patch new file mode 100644 index 0000000..9059a6c --- /dev/null +++ b/abs/extra/community/nxtvepg/tcl_85.patch @@ -0,0 +1,13 @@ +--- Makefile.orig 2008-02-03 20:01:14.000000000 +0100 ++++ Makefile 2008-02-03 20:01:23.000000000 +0100 +@@ -58,8 +58,8 @@ + YACC = /usr/bin/yacc + + # select Tcl/Tk version (8.5 recommended due to modernized widget appearence) +-TCL_VER := $(shell echo 'puts [package require Tcl]' | tclsh) +-#TCL_VER = 8.5 ++#TCL_VER := $(shell echo 'puts [package require Tcl]' | tclsh) ++TCL_VER = 8.5 + + ifeq ($(shell test -d /usr/include/tcl$(TCL_VER) && echo YES),YES) + INCS += -I/usr/include/tcl$(TCL_VER) diff --git a/abs/extra/community/nzbperl/PKGBUILD b/abs/extra/community/nzbperl/PKGBUILD new file mode 100755 index 0000000..bbfee00 --- /dev/null +++ b/abs/extra/community/nzbperl/PKGBUILD @@ -0,0 +1,16 @@ +#Contributor: Xavier Vierling +pkgname=nzbperl +pkgver=0.6.8 +pkgrel=1 +pkgdesc="nzb based nntp/usenet downloader in perl" +arch=('i686' 'x86_64') +url="http://noisybox.net/computers/nzbperl/" +license="GPL" +depends=(perl-term-readkey perl-xml-dom uudeview) +source=(http://noisybox.net/computers/nzbperl/$pkgname-$pkgver.pl) +md5sums=('70e64b7cd4ff9c7c098bf8dffeb62578') + +build() { + cd $startdir/src + install -D nzbperl-$pkgver.pl $startdir/pkg/usr/bin/nzbperl +} \ No newline at end of file diff --git a/abs/extra/community/projectx/PKGBUILD b/abs/extra/community/projectx/PKGBUILD new file mode 100644 index 0000000..62092a4 --- /dev/null +++ b/abs/extra/community/projectx/PKGBUILD @@ -0,0 +1,45 @@ +# Contributer: Sebastian Sareyko + +pkgname=projectx +pkgver=0.90.4.00 +pkgrel=8 +license=('GPL') +arch=('i686' 'x86_64') +pkgdesc="DVB demux tool for repairing and analyzing different stream types" +makedepends=('java-environment') +depends=('java-runtime') +url="http://sourceforge.net/projects/project-x" +source=(http://dl.sourceforge.net/sourceforge/project-x/ProjectX_Source_eng_$pkgver.zip \ + http://dl.sourceforge.net/sourceforge/project-x/ProjectX_LanguagePack_$pkgver.zip \ + projectx) + +md5sums=('92d7b5aea50b8811307f27b6e01ceb5c' + 'edfe8d04bd3d403eec4d9e27d1b976d2' + '0c88b15884a0c997e3386d15e207cd30') + +build() { + cd $startdir/src/ProjectX_Source_0.90.4 + + sed -i 's,^Exec=.*,Exec=projectx,' projectx.desktop + + mkdir -p build + + javac -encoding "ISO-8859-1" -O -g:none \ + -classpath lib/commons-net-1.3.0.jar:lib/jakarta-oro-2.0.8.jar \ + -d build @sources.lst || return 1 + + mv resources/* ./build + sed -i -e 's/ReleaseNotes_0.90.1.txt/ReleaseNotes_0.90.4.txt/' htmls/index.html + mv htmls build + mv ReadMe.txt build + mv ReleaseNotes_0.90.4.txt build + jar cvfm ProjectX.jar MANIFEST.MF -C build . + + install -D -m0755 $startdir/projectx $startdir/pkg/usr/bin/projectx + install -D -m0644 ProjectX.jar $startdir/pkg/opt/projectx/ProjectX.jar + install -D -m0644 lib/commons-net-1.3.0.jar \ + $startdir/pkg/opt/projectx/lib/commons-net-1.3.0.jar + install -D -m0644 lib/jakarta-oro-2.0.8.jar \ + $startdir/pkg/opt/projectx/lib/jakarta-oro-2.0.8.jar + install -D -m0644 projectx.desktop $startdir/pkg/usr/share/applications/projectx.desktop +} diff --git a/abs/extra/community/projectx/projectx b/abs/extra/community/projectx/projectx new file mode 100644 index 0000000..1d540bc --- /dev/null +++ b/abs/extra/community/projectx/projectx @@ -0,0 +1,10 @@ +#!/bin/sh + +if [ ! -d ~/.projectx ] ; then + mkdir ~/.projectx +fi + +if [ "$#" -eq 0 ] ; then + cd ~/.projectx +fi +java -jar /opt/projectx/ProjectX.jar "$@" diff --git a/abs/extra/community/pyxdg/PKGBUILD b/abs/extra/community/pyxdg/PKGBUILD new file mode 100644 index 0000000..c56fd55 --- /dev/null +++ b/abs/extra/community/pyxdg/PKGBUILD @@ -0,0 +1,18 @@ +# $Id: PKGBUILD 16878 2008-10-23 00:28:55Z douglas $ +# Maintainer: Aaron Griffin +# Contributor: Mario A. Vazquez +pkgname=pyxdg +pkgver=0.15 +pkgrel=3 +pkgdesc="Python library to access freedesktop.org standards." +arch=(i686 x86_64) +url="http://freedesktop.org/Software/pyxdg" +license=("LGPL") +depends=('python') +source=(http://gentoolabs.com.ar/distfiles/${pkgname}-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + python setup.py install --prefix=/usr --root=${startdir}/pkg || return 1 +} +md5sums=('86a5441285fc908145414b63348d11a3') diff --git a/abs/extra/community/screen/PKGBUILD b/abs/extra/community/screen/PKGBUILD new file mode 100644 index 0000000..f97df4b --- /dev/null +++ b/abs/extra/community/screen/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 9361 2008-08-17 06:28:44Z allan $ +# Maintainer: Aaron Griffin +# Committer: dorphell + +pkgname=screen +pkgver=4.0.3 +pkgrel=6 +_ptygroup=5 #the UID of our PTY/TTY group +pkgdesc="Full-screen window manager that multiplexes a physical terminal" +license=('GPL') +arch=('i686' 'x86_64') +install=screen.install +depends=(ncurses libelf shadow gpm) +backup=('etc/screenrc' 'etc/pam.d/screen') +url="ftp://ftp.uni-erlangen.de/pub/utilities/screen" +source=(ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-${pkgver}.tar.gz \ + screen.pam) +md5sums=('8506fd205028a96c741e4037de6e3c42' '74f7919d7b65436cc2ea5341fa8ca374') + +build() { + export MAKEFLAGS="-j1" + cd ${startdir}/src/${pkgname}-${pkgver} + + ./configure --prefix=/usr --enable-pam \ + --with-sys-screenrc=/etc/screenrc --enable-colors256 \ + --enable-rxvt_osc --with-pty-group=$_ptygroup \ + --mandir=/usr/share/man + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + mkdir -p ${startdir}/pkg/etc/pam.d + install -m644 ${startdir}/src/screen.pam ${startdir}/pkg/etc/pam.d/screen + + cd etc/ + mkdir -p ${startdir}/pkg/usr/share/zsh/site-functions/ + install -m644 completer.zsh ${startdir}/pkg/usr/share/zsh/site-functions/screen + mkdir -p ${startdir}/pkg/etc/skel/ + install -m644 etcscreenrc ${startdir}/pkg/etc/screenrc + install -m644 screenrc ${startdir}/pkg/etc/skel/.screenrc + + rm -rf ${startdir}/pkg/usr/info +} diff --git a/abs/extra/community/screen/screen.install b/abs/extra/community/screen/screen.install new file mode 100644 index 0000000..51bd6a7 --- /dev/null +++ b/abs/extra/community/screen/screen.install @@ -0,0 +1,27 @@ + +pre_upgrade() { + pre_remove $* +} + +pre_remove() { + compiled="/usr/share/terminfo/s/screen-256color" + if [ -e $compiled ]; then + if pacman -Qo $compiled 2>&1 | grep "No package owns" >/dev/null; then + echo -n "removing compiled terminfo..." + rm -f $compiled + echo "done." + fi + fi + compiled="/usr/share/terminfo/s/screen-256color-bce" + if [ -e $compiled ]; then + if pacman -Qo $compiled 2>&1 | grep "No package owns" >/dev/null; then + echo -n "removing compiled terminfo..." + rm -f $compiled + echo "done." + fi + fi +} + +op=$1 +shift +$op $* diff --git a/abs/extra/community/screen/screen.pam b/abs/extra/community/screen/screen.pam new file mode 100644 index 0000000..07c42ad --- /dev/null +++ b/abs/extra/community/screen/screen.pam @@ -0,0 +1 @@ +auth required pam_unix.so diff --git a/abs/extra/community/smplayer/ChangeLog b/abs/extra/community/smplayer/ChangeLog new file mode 100644 index 0000000..a40f9a4 --- /dev/null +++ b/abs/extra/community/smplayer/ChangeLog @@ -0,0 +1,62 @@ +2009-03-13 Allan McRae + * smplayer 0.6.7-1 + * Upstream update + +2009-01-01 Allan McRae + * smplayer 0.6.6-1 + * Upstream update + +2008-11-14 Allan McRae + * smplayer 0.6.5.1-1 + * Upstream update + +2008-10-27 Allan McRae + * smplayer 0.6.4-1 + * Upstream update + +2008-09-27 Allan McRae + * smplayer 0.6.3-1 + * Upstream update + +2008-06-21 Allan McRae + + * smplayer 0.6.2-1 + * Upstream update + * Removed install message + +2008-06-21 Allan McRae + + * smplayer 0.6.1-1 + * Upstream update + * Removed provides/conflicts/replaces + +2008-05-23 Eric Belanger + + * smplayer 0.6.0-1 + * Upstream update + * Updated .install file + +2008-01-32 Varun Acharya + + * smplayer-0.5.62-1 moved to extra, thanks molok + * PKGBUILD cleanup + +2007-11-27 Alessio 'mOLOk' Bolognino + + * smplayer-0.5.62-1 + * version bump + +2007-10-24 Alessio 'mOLOk' Bolognino + + * smplayer-0.5.61-1 + * build against qt4 + * removed post_upgrade message + +2007-07-12 Alessio 'mOLOk' Bolognino + + * smplayer-0.5.21-1 + * version bump + +2007-05-30 Alessio 'mOLOk' Bolognino + * smplayer-0.5.0-1 + * version bump diff --git a/abs/extra/community/smplayer/PKGBUILD b/abs/extra/community/smplayer/PKGBUILD new file mode 100644 index 0000000..3aa1d3d --- /dev/null +++ b/abs/extra/community/smplayer/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 29947 2009-03-14 00:58:48Z allan $ +# Maintainer: Allan McRae +# Contributor: Alessio 'mOLOk' Bolognino +# Contributor: shamrok + +pkgname=smplayer +pkgver=0.6.7 +pkgrel=2 +pkgdesc="A complete front-end for MPlayer" +arch=('i686' 'x86_64') +url="http://smplayer.sourceforge.net/" +license=('GPL') +depends=('qt' 'mplayer') +source=(http://downloads.sourceforge.net/sourceforge/smplayer/${pkgname}-${pkgver}.tar.bz2) +md5sums=('306b99374ad89cee93f1ad6fa94dea71') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + + # remove broken translation + sed -i "s|translations/smplayer_gl.ts|#translations/smplayer_gl.ts|" src/smplayer.pro + + make PREFIX=/usr || return 1 + make PREFIX=${pkgdir}/usr install || return 1 + + install -dm755 ${pkgdir}/usr/share/pixmaps + ln -s /usr/share/icons/hicolor/64x64/apps/smplayer.png \ + ${pkgdir}/usr/share/pixmaps/ +} + diff --git a/abs/extra/community/torrentflux/PKGBUILD b/abs/extra/community/torrentflux/PKGBUILD new file mode 100644 index 0000000..2f2c9f0 --- /dev/null +++ b/abs/extra/community/torrentflux/PKGBUILD @@ -0,0 +1,51 @@ +# 'Maintainer': Mikko Seppälä aka Neverth + +pkgname=torrentflux +pkgver=2.4 +pkgrel=4 +pkgdesc="TorrentFlux is a free php based Torrent client that runs on a web server. Manage all of your Torrents remotely or locally." +arch=(i686 x86_64) +url="http://www.torrentflux.com/" +license=(GPL) +# You still need your favorite httpd, I do not wish to force it. +depends=('mysql' 'php' 'python' 'pycrypto' 'transmission-cli') +makedepends=('findutils') +conflicts=('torrentflux2') +backup=('opt/torrentflux/config.php') +install=(torrentflux.install) +source=("http://mesh.dl.sourceforge.net/sourceforge/torrentflux/${pkgname}_${pkgver}.tar.gz" "torrentflux.install") +md5sums=('8fdc3952bc2ece9f10bcee299b2aeb16' 'f14ebd47dd41c7949411973c2f74f4fd') + +build() +{ + cd $startdir/src/${pkgname}_${pkgver} + install -d $startdir/pkg/opt/torrentflux + + # This thing is compressed in windows? fix permissions later.. + cp -R html/* $startdir/pkg/opt/torrentflux/ + cp -R sql $startdir/pkg/opt/torrentflux + + cd $startdir/pkg + # Our group + chgrp -R daemon opt/torrentflux + chmod -R 775 opt/torrentflux + + # Our mysqluser, we dont want root here :p + sed -re 's/root/torrentfluxie/' -i opt/torrentflux/config.php + + cd opt/torrentflux + # Permissions... + find ./ -name \*php -exec chmod 444 '{}' \; + find ./ -name \*png -exec chmod 444 '{}' \; + find ./ -name \*gif -exec chmod 444 '{}' \; + # They dont want to read this + chmod 660 config.php + chmod 444 favicon.ico dtree.css *.js blank.html TF_BitTornado/index.html images/*{gif,png,ico,html} searchEngines/* themes/index.html downloads/index.html + # We dont touch to adodb, leave it for customizer, as so we leave subdirs for now + + # Upgrade files + install -D -m444 $startdir/src/${pkgname}_${pkgver}/upgrades/upgrade21_22.php $startdir/pkg/opt/torrentflux/upgradeflux21_22.php + install -D -m444 $startdir/src/${pkgname}_${pkgver}/upgrades/upgrade22_23.php $startdir/pkg/opt/torrentflux/upgradeflux22_23.php + install -D -m444 $startdir/src/${pkgname}_${pkgver}/upgrades/upgrade23_24.php $startdir/pkg/opt/torrentflux/upgradeflux23_24.php +} + diff --git a/abs/extra/community/torrentflux/torrentflux.install b/abs/extra/community/torrentflux/torrentflux.install new file mode 100644 index 0000000..2aa50aa --- /dev/null +++ b/abs/extra/community/torrentflux/torrentflux.install @@ -0,0 +1,60 @@ +post_install() { + cat << EOF +OK. So youre about to install torrentflux? Postgresql and mysql are supported. +Instructions are for mysql so lets use it? ok? +Remove mysql from depencies if you dont like. +(mysqlcommands might need '-u root -p' depending on your setup) + +1. You need to create mysql database for it +mysqladmin create torrentflux +(eg. 'mysqladmin -u root -p create torrentflux' if needed) + +2. Load the script that creates tables and such +(.sql files for postgresql are here too!) +mysql torrentflux < /opt/torrentflux/sql/mysql_torrentflux.sql + +3. Edit the config.php located in /opt/torrentflux/html + +4. Point your fav http server to use this, +(eg. use vhosts for apache or create symlink to /opt/torrentflux from +somewhere that http server can access) + +5. Our database user is "torrentfluxie" +(use mysql_setpermission to give rights for him) +mysql_setpermission -u mysqlroot +hit 5 in menu and choose torrentflux as database +give torrentfluxie as user and give password if you want +(if you do this, you need to set the password to /opt/torrentflux/config.php: +$cfg["db_pass"] = "yourpass";) +localhost is good choice for host +(we dont need password always if we got private comp) + +6. Safemode must be off in php.ini (/etc/php.ini) + +httpd server must support php and mysql, you can look for archwiki +if you dont know howto enable them. +Notice that the httpd server should belong to daemon group +(one way or another) +EOF +} + +post_upgrade() { + cat << EOF +To upgrade your database, use files in /opt/torrentflux/ +(eg for 2.2 -> 2.4 go from browser to http://yourtorrentfuxdomain.and.path/upgradeflux22_23.php +and do the same on upgradeflux23_24.php file) +All your old information should stay trough the upgrades +When it tells you to remove the files, just chmod them to 000 and they will not harm. +EOF +} + +pre_remove() { + /bin/echo "Remember to remove mysql tables if you want :p" + /bin/echo "mysqladmin -f drop torrentflux" + /bin/echo "(remeber -u root -p, hope it worked)" +} + +op=$1 +shift + +$op $* diff --git a/abs/extra/community/transmission-cli/ChangeLog b/abs/extra/community/transmission-cli/ChangeLog new file mode 100644 index 0000000..57a8a01 --- /dev/null +++ b/abs/extra/community/transmission-cli/ChangeLog @@ -0,0 +1,60 @@ +2008-12-27 Alexander Fehr + + * transmission-cli-1.42-1: + New upstream release. + +2008-11-26 Alexander Fehr + + * transmission-cli-1.40-1: + New upstream release. + Enabled web client. + +2008-09-17 Alexander Fehr + + * transmission-cli-1.34-1: + New upstream release. + +2008-08-23 Alexander Fehr + + * transmission-cli-1.33-1: + New upstream release. + +2008-08-09 Alexander Fehr + + * transmission-cli-1.32-1: + New upstream release. + +2008-08-07 Alexander Fehr + + * transmission-cli-1.31-1: + New upstream release. + Replaced transmission-remote -q with kill in init script. + Removed install message on upgrade. + +2008-07-20 Alexander Fehr + + * transmission-cli-1.22-1: + New upstream release. + Renamed from transmission to transmission-cli. + New maintainer. + Split out GTK+ GUI into transmission-gtk. + Changed url. + Added make dependency on intltool. + Cleaned up init script. + Cleaned up install file. + +2008-01-07 Varun Acharya + + * transmission-1.00-1: + Adopted and moved to extra. + +2007-06-26 Alessio 'mOLOk' Bolognino + + * transmission-0.72-4: + I had to use gentoo's sources because the tarball provided by the official site is broken. + transmission-{daemon,remote} are back. + +2007-06-19 Alessio 'mOLOk' Bolognino + + * transmission-0.72-3: + Rebuild against libevent-1.3b. diff --git a/abs/extra/community/transmission-cli/PKGBUILD b/abs/extra/community/transmission-cli/PKGBUILD new file mode 100644 index 0000000..a3791fc --- /dev/null +++ b/abs/extra/community/transmission-cli/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 23076 2009-01-02 11:33:41Z alexanderf $ +# Maintainer: Alexander Fehr +# Contributor: Alessio 'mOLOk' Bolognino + +pkgname=transmission-cli +pkgver=1.42 +pkgrel=1 +pkgdesc="Fast, easy, and free BitTorrent client (CLI tools, daemon and web client)" +arch=('i686' 'x86_64') +url="http://www.transmissionbt.com/" +license=('MIT') +depends=('curl') +makedepends=('intltool') +replaces=('transmission') +backup=('etc/conf.d/transmissiond') +install=transmission-cli.install +source=(http://mirrors.m0k.org/transmission/files/transmission-$pkgver.tar.bz2 + transmissiond + transmissiond.conf) +md5sums=('c083bdcb01426466e80ee339bccd9351' + 'e2326d412e25b4449ff663a5d4015e1a' + '7b019a710493ec4f8b54a1f528e1981d') + +build() { + cd "$srcdir/transmission-$pkgver" + + ./configure --prefix=/usr --disable-gtk --disable-wx || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 + + install -D -m755 "$srcdir/transmissiond" "$pkgdir/etc/rc.d/transmissiond" || return 1 + install -D -m644 "$srcdir/transmissiond.conf" "$pkgdir/etc/conf.d/transmissiond" || return 1 + + install -D -m644 COPYING "$pkgdir/usr/share/licenses/transmission-cli/COPYING" || return 1 +} diff --git a/abs/extra/community/transmission-cli/transmission-cli.install b/abs/extra/community/transmission-cli/transmission-cli.install new file mode 100644 index 0000000..cb6bf60 --- /dev/null +++ b/abs/extra/community/transmission-cli/transmission-cli.install @@ -0,0 +1,9 @@ +post_install() { + cat << _EOF + + If you want to run the Transmission daemon at boot, + add transmissiond to the DAEMONS array in /etc/rc.conf. + You have to set the user in /etc/conf.d/transmissiond. + +_EOF +} diff --git a/abs/extra/community/transmission-cli/transmissiond b/abs/extra/community/transmission-cli/transmissiond new file mode 100644 index 0000000..b2c9322 --- /dev/null +++ b/abs/extra/community/transmission-cli/transmissiond @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/transmissiond + +PID=`pidof -o %PPID /usr/bin/transmission-daemon` +case "$1" in + start) + stat_busy "Starting Transmission Daemon" + [ -z "$PID" ] && su -l -c "/usr/bin/transmission-daemon" $TRANS_USER + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon transmissiond + stat_done + fi + ;; + stop) + stat_busy "Stopping Transmission Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon transmissiond + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/community/transmission-cli/transmissiond.conf b/abs/extra/community/transmission-cli/transmissiond.conf new file mode 100644 index 0000000..8f1275b --- /dev/null +++ b/abs/extra/community/transmission-cli/transmissiond.conf @@ -0,0 +1 @@ +TRANS_USER="" diff --git a/abs/extra/community/tre/PKGBUILD b/abs/extra/community/tre/PKGBUILD new file mode 100644 index 0000000..b7d82eb --- /dev/null +++ b/abs/extra/community/tre/PKGBUILD @@ -0,0 +1,19 @@ +# Contributor: Igor Galic +# Maintainer: Stefan Husmann +# Contributor: dorphell + +pkgname=unrar +pkgver=3.8.5 +pkgrel=1 +pkgdesc="The RAR uncompression program" +arch=('i686' 'x86_64') +depends=('gcc-libs') +url="http://rarlab.com" +license=('custom') +replaces=('rar') +source=(http://www.rarlab.com/rar/unrarsrc-${pkgver}.tar.gz) +md5sums=('875688e6a144a3f75d2a6a0da3e43f8b') + +build() { + cd ${srcdir}/${pkgname} + make -f makefile.unix + install -Dm755 unrar ${pkgdir}/usr/bin/unrar + # install license + install -Dm644 license.txt ${pkgdir}/usr/share/licenses/$pkgname/license.txt +} diff --git a/abs/extra/community/unrar/unrar-3.5.2-optimalization-fix.patch b/abs/extra/community/unrar/unrar-3.5.2-optimalization-fix.patch new file mode 100644 index 0000000..2ed2e6e --- /dev/null +++ b/abs/extra/community/unrar/unrar-3.5.2-optimalization-fix.patch @@ -0,0 +1,12 @@ +diff -Naur unrar.orig/makefile.unix unrar/makefile.unix +--- unrar.orig/makefile.unix 2005-05-27 21:53:56.000000000 +0000 ++++ unrar/makefile.unix 2005-05-27 21:54:16.000000000 +0000 +@@ -7,7 +7,7 @@ + + # Linux using GCC + CXX=g++ +-CXXFLAGS=-O2 ++CXXFLAGS=${CFLAGS} + DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE + STRIP=strip + diff --git a/abs/extra/community/uudeview/PKGBUILD b/abs/extra/community/uudeview/PKGBUILD new file mode 100644 index 0000000..cdb3a81 --- /dev/null +++ b/abs/extra/community/uudeview/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD,v 1.5 2008/09/23 12:49:17 sergej Exp $ +# Maintainer: Sergej Pupykin +# Maintainer: kmaster + +pkgname=uudeview +pkgver=0.5.20 +pkgrel=6 +pkgdesc="UUDeview helps transmitting & recieving binary files using mail or newsgroups. Includes library files." +arch=('i686' 'x86_64') +url="http://www.fpx.de/fp/Software/UUDeview/" +license=('GPL') +optdepends=('tk: for GUI') +source=(http://www.fpx.de/fp/Software/UUDeview/download/$pkgname-$pkgver.tar.gz) +md5sums=('0161abaec3658095044601eae82bbc5b') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install || return 1 + mkdir -p $startdir/pkg/usr/lib/uudeview && \ + mkdir -p $startdir/pkg/usr/include/uudeview || return 1 + + cd $startdir/src/uudeview-$pkgver/uulib + ./configure --prefix=/usr + make || return 1 + cp -v *.o $startdir/pkg/usr/lib/uudeview && \ + cp -v *.a $startdir/pkg/usr/lib/uudeview && \ + cp -v *.h $startdir/pkg/usr/include/uudeview +} diff --git a/abs/extra/community/vlc/PKGBUILD b/abs/extra/community/vlc/PKGBUILD new file mode 100644 index 0000000..77e21f7 --- /dev/null +++ b/abs/extra/community/vlc/PKGBUILD @@ -0,0 +1,71 @@ +# $Id: PKGBUILD 24027 2009-01-11 23:38:33Z eric $ +# Maintainer: Giovanni Scafora +# Contributor: Sarah Hay + +pkgname=vlc +pkgver=0.9.8a +pkgrel=4 +pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player" +arch=('i686' 'x86_64') +url="http://www.videolan.org/vlc/" +license=('GPL2') +depends=('libmad' 'libmpeg2' 'ffmpeg>=20081220' 'x264>=20090108' 'fluidsynth' \ + 'libdvbpsi' 'fribidi' 'sysfsutils' 'libdvdnav' \ + 'libmatroska' 'zvbi' 'libdvdread' 'libmpcdec' \ + 'libdca' 'libxml2' 'lirc-utils' 'libcddb' 'libraw1394' \ + 'smbclient' 'taglib' 'libmodplug' 'avahi' 'libv4l' \ + 'sdl_image' 'libshout' 'lua' 'qt' 'a52dec' 'libgcrypt') +makedepends=('pkgconfig' 'live-media>=2008.09.02') +optdepends=('libnotify') +options=('!libtool' 'force') +source=(http://download.videolan.org/pub/videolan/vlc/${pkgver}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('8ffa2ff763badd5de7592004d8d69a63') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + sed -i -e 's:#include :#include \n #include : ' modules/misc/freetype.c + sed -i -e 's:/usr/share/fonts/truetype/freefont/FreeSerifBold.ttf:/usr/share/fonts/TTF/VeraBd.ttf:' modules/misc/freetype.c + [ "${CARCH}" = "i686" ] && EXTRAFEATURES="--enable-loader --enable-live555 --with-live555-tree=/usr/lib/live-media" + [ "${CARCH}" = "x86_64" ] && EXTRAFEATURES="--enable-fast-install" + ./configure --prefix=/usr \ + --enable-dvdread \ + --enable-dvdnav \ + --enable-madi \ + --enable-ffmpeg \ + --disable-rpath \ + --enable-qt4 \ + --enable-faad \ + --enable-alsa \ + --enable-skins2 \ + --enable-dvb \ + --enable-dmo \ + --with-ffmpeg-faac \ + --with-ffmpeg-vorbis \ + --with-ffmpeg-dts \ + --with-ffmpeg-ogg \ + --with-ffmpeg-theora \ + --enable-v4l \ + --enable-theora \ + --enable-flac \ + --enable-snapshot \ + --enable-hal \ + --enable-dbus \ + --enable-ogg \ + --enable-dbus-control \ + --enable-shared \ + --enable-nls \ + --enable-lirc \ + --enable-shout \ + --enable-pvr \ + --enable-release \ + --program-suffix= \ + --with-dv-raw1394=/usr/include/libraw1394 ${EXTRAFEATURES} || return 1 + make || return 1 + make DESTDIR=${pkgdir}/ install || return 1 + + for res in 16 32 48 128; do + install -D -m644 ${srcdir}/vlc-${pkgver}/share/vlc${res}x${res}.png \ + ${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png || return 1 + done + rm -rf ${pkgdir}/usr/lib/mozilla +} diff --git a/abs/extra/community/vsftpd/PKGBUILD b/abs/extra/community/vsftpd/PKGBUILD new file mode 100644 index 0000000..32a4007 --- /dev/null +++ b/abs/extra/community/vsftpd/PKGBUILD @@ -0,0 +1,52 @@ +# $Id: PKGBUILD 29700 2009-03-11 22:18:56Z hugo $ +# Maintainer: Andreas Radke +# Contributor: judd + +pkgname=vsftpd +pkgver=2.1.0 +pkgrel=4 +pkgdesc="Very Secure FTP daemon" +arch=('i686' 'x86_64') +license=('GPL') +backup=(etc/vsftpd.conf etc/xinetd.d/vsftpd) +url="http://vsftpd.beasts.org/" +#makedepends=('vim') +depends=('glibc' 'pam' 'tcp_wrappers>=7.6-8' 'openssl>=0.9.8j-1' 'libcap>=2.16') +install=vsftpd.install +source=(ftp://vsftpd.beasts.org/users/cevans/vsftpd-$pkgver.tar.gz \ + vsftpd.xinetd vsftpd.d run) +md5sums=('7890b54e7ffa6106ffbdfda53f47fa41' + 'b07fd4609c70063c1d6b20142910c1a6' + 'e46ed8e4c4a6e6a3de59f60b98e4f569' + '8abbed7cc75f9a9d2944e0e83c8dd90d') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + # build-time config + sed \ + -e 's|^#undef VSF_BUILD_TCPWRAPPERS$|#define VSF_BUILD_TCPWRAPPERS|' \ + -e 's|^#undef VSF_BUILD_SSL$|#define VSF_BUILD_SSL|' \ + -i builddefs.h + make CFLAGS="${CFLAGS}" || return 1 + install -D -m755 vsftpd ${pkgdir}/usr/sbin/vsftpd || return 1 + install -D -m644 vsftpd.conf ${pkgdir}/etc/vsftpd.conf || return 1 + install -D -m644 vsftpd.8 ${pkgdir}/usr/share/man/man8/vsftpd.8 || return 1 + install -D -m644 vsftpd.conf.5 ${pkgdir}/usr/share/man/man5/vsftpd.conf.5 || return 1 + install -D -m644 ../vsftpd.xinetd ${pkgdir}/etc/xinetd.d/vsftpd || return 1 + install -D -m755 ../vsftpd.d ${pkgdir}/etc/rc.d/vsftpd || return 1 + mkdir -p $startdir/pkg/usr/share/empty +# ex ${pkgdir}/etc/vsftpd.conf <<_EOF +#2 +#i +## +## Use this to use vsftpd in standalone mode, otherwise it runs through (x)inetd +##listen=YES +#. +#w +#q +#_EOF +#} +# Below added for LinHES + mkdir -p $startdir/pkg/etc/sv/vsftpd/supervise + install -D -m755 $startdir/src/run $startdir/pkg/etc/sv/vsftpd/ +} diff --git a/abs/extra/community/vsftpd/run b/abs/extra/community/vsftpd/run new file mode 100644 index 0000000..1fd5202 --- /dev/null +++ b/abs/extra/community/vsftpd/run @@ -0,0 +1,13 @@ +#!/bin/sh +exec 2>&1 +. /etc/profile +. /etc/systemconfig +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions + +stat_runit "Starting VSFTPD" +export HOME=/root + +# Start vsftpd +/usr/sbin/vsftpd /etc/vsftpd.conf diff --git a/abs/extra/community/vsftpd/vsftpd.d b/abs/extra/community/vsftpd/vsftpd.d new file mode 100644 index 0000000..b43a6d0 --- /dev/null +++ b/abs/extra/community/vsftpd/vsftpd.d @@ -0,0 +1,40 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/vsftpd` +case "$1" in + start) + stat_busy "Starting vsftpd FTP Daemon" + if [ -z "$PID" ]; then + /usr/sbin/vsftpd & + PID=`pidof -o %PPID /usr/sbin/vsftpd` + if [ -z $PID ]; then + stat_fail + else + add_daemon vsftpd + stat_done + fi + else + stat_fail + fi + ;; + stop) + stat_busy "Stopping vsftpd FTP Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon vsftpd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/extra/community/vsftpd/vsftpd.install b/abs/extra/community/vsftpd/vsftpd.install new file mode 100644 index 0000000..3bbb2cc --- /dev/null +++ b/abs/extra/community/vsftpd/vsftpd.install @@ -0,0 +1,22 @@ +# arg 1: the new package version +post_install() { + if [ -f lib/modules/`uname -r`/kernel/security/capability.ko ]; then + echo ">>> It appears that your current kernel has linux security" + echo ">>> capabilities built as a module. vsftpd requires this" + echo ">>> functionality to operate." + echo ">>>" + echo ">>> To activate the module, please load it now (modprobe capability)." + echo ">>> Also, you should add it to your MODULES array in rc.conf, so" + echo ">>> it will be activated automatically at boot-up." + fi +# Below added for LinHES + add_service.sh vsftpd +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + remove_service.sh vsftpd +} diff --git a/abs/extra/community/vsftpd/vsftpd.xinetd b/abs/extra/community/vsftpd/vsftpd.xinetd new file mode 100644 index 0000000..eff2eb3 --- /dev/null +++ b/abs/extra/community/vsftpd/vsftpd.xinetd @@ -0,0 +1,10 @@ +service ftp +{ + socket_type = stream + wait = no + user = root + server = /usr/sbin/vsftpd + log_on_success += HOST DURATION + log_on_failure += HOST + disable = yes +} diff --git a/abs/extra/community/wiiuse/PKGBUILD b/abs/extra/community/wiiuse/PKGBUILD new file mode 100644 index 0000000..d8b1e2b --- /dev/null +++ b/abs/extra/community/wiiuse/PKGBUILD @@ -0,0 +1,26 @@ +#Contributor:Andrea Tarocchi +pkgname=wiiuse +pkgver=0.12 +pkgrel=2 +pkgdesc="Wiiuse is a library written in C that connects with several Nintendo Wii remotes." +arch=(i686 x86_64) +url="http://wiiuse.sourceforge.net/" +depends=('bluez') +license="GPL3" +install=wiiuse.install +postfix=_src.tar.gz +source=(http://downloads.sourceforge.net/sourceforge/wiiuse/wiiuse_v$pkgver\_src.tar.gz) + +md5sums=('29b555096f79dbd3fbc9b96b8d443083') + +build() { + cd $startdir/src/wiiuse_v$pkgver + make wiiuse || return 1 + +#installing + mkdir -p $startdir/pkg/usr/lib + mkdir -p $startdir/pkg/usr/include + + install -D -m644 ./src/release-`gcc -v 2>&1|grep ^Target:|cut -d' ' -f2`/libwiiuse.so $startdir/pkg/usr/lib + install -D -m644 ./src/wiiuse.h $startdir/pkg/usr/include +} diff --git a/abs/extra/community/wiiuse/wiiuse.install b/abs/extra/community/wiiuse/wiiuse.install new file mode 100644 index 0000000..d856696 --- /dev/null +++ b/abs/extra/community/wiiuse/wiiuse.install @@ -0,0 +1,17 @@ +# arg 1: the new package version +post_install() { +cat << EOF +Note: +==> for using this lib in your projects include wiiuse.h and link against libwiiuse.so +EOF +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +op=$1 +shift +$op $* \ No newline at end of file diff --git a/abs/extra/community/xbmc-svn/CHANGELOG b/abs/extra/community/xbmc-svn/CHANGELOG new file mode 100644 index 0000000..ddcbd53 --- /dev/null +++ b/abs/extra/community/xbmc-svn/CHANGELOG @@ -0,0 +1,110 @@ +xbmc-svn Change log: +-------------------- +2nd July 2009 +21333 haggy: updated to current svn head which has media flagging support if your skin + supports it (the shipped PM3HD does already, also Aeon and MediaStream redux) + +3rd June 2009 +20896 haggy: enabled external libs for every lib supported despite python and ffmpeg + enabling external python breaks python support in xbmc due to Arch's python + compiled with UCS2 support whereas xbmc expects UCS4. Enabling external ffmpeg + disables VDPAU and we don't want that for sure. + + IMPORTANT NOTE: If compilation breaks at configure step with some message about + not being able to compute the size of int or size_t, try running makepkg as root + with 'sudo makepkg --asroot'. This is a known issue and happens only on systems + linked to nvidia's libgl which causes binaries to segfault within a fakeroot + environment. pacman 3.3 will fix this by splitting configure and installation steps. + +1st June 2009 +20818 haggy: this is the last revision before external-libs-support got patched + in. Unfortunately this will not compile with fakeroot. waiting for + pacman 3.3 which can split up configure and make install steps. + +30th May 2009 +20793 haggy: removed gcc44-fixes.patch - got merged into svn + +29th May 2009 +20755 haggy: pushed rev as requested + +27th May 2009 +20705 haggy: added a patch which fixed compilation with GCC 4.4. + +21th May 2009 +20509 haggy: xbmc got updates on goom due to the jaunty build system update. i + i wiped all goom specific hacks from the PKGBUILD and it compiled + fine, so let's see what you guys achieve. + +19th May 2009 +20449-1 richy: 1. Removed the autoreconf line as it didn't seem to help + 2. Added !makeflags + 3. Rev push :-) + +16th May 2009 +20343-1 richy: 1. added python as a depenency and removed x-server (namcap advised), + 2. added autoreconf to goom before aclocal - another pot-shot at the goom compile prob. + 3. added flax and bison to makedepends - I thought they were implicitely provided, but + some users didn't have them. + 4. Rev push to 20343 + 5. Removed the --quiet flag form SVN for now as sourcforge was timing out and + failing silently. + + Note: namcap advised a number of other changes which I ignored for now. + +15th May 2009 +20231-3 - haggy: added libsamplerate as a dependency, it is needed for the recent smoothvideo patches + +14th May 2009 +20231-2 - haggy: another shot in the dark to fix that damn goom compilation error + +13th May 2009 +20231 - haggy: smoothvideo! + +12th May 2009 +20172 - haggy: a shot in the dark: try another autoreconf inside goom and see if it helps. + +11th May 2009 +20149 - haggy: pushed rev, removed 'hitting-o-breaks...'-patch - it got fixed in svn + +9th May 2009 +20101 - haggy: an updated PM3 skin made it into xbmc. added conflicts hint to this PKGBUILD + +8th May 2009 +20059 - haggy: minor push past 9.04, removed copying the source tree to a build tree which wastes space, + takes ages and stresses the hdd for no reason. instead we now use svn to revert to a + clean build dir. + +5th May 2009 +19941 - rich: heaps more tickets closed, Mexican translation + +30th April 2009 +19841 - haggy: lots of closed tickets worth a release, removed xsession patch + +27th April 2009 +19753 - haggy: added patch for xsession file breaking installation into fakeroot. + +22nd April 2009 +19602 - richy: version bump to address problem with python scripts and plugins + +20th April 2009 +19550 - haggy: pushed rev, some .mov fixes and better i18n in xbmc + +17th April 2009 +19517 - haggy: pushed rev, re-added installfile +19516-2- richy: Added back autoreconf -vif in libdvdcss - still required for some folk (me) +19516 - haggy: pushed rev, moved patches to patchfiles, added 'safe fullscreen patch', several cleanups + +15th April 2009 +19484 - haggy: pushed rev, re-enabled MAKEFLAGS to allow a more streamlined package + +14th April 2009 +19463 - haggy: added install file +19463 - richy: moved _svn* back inside build() on Haggy's suggestion. Let's try and avoid broken releases! +19463 - richy: makedepends 'subversion' instead of 'svn' because that's what's in the guidelines +19463 - richy: changed licens from ('GPL' 'custom') to ('GPL', 'LGPL') - See: http://xbmc.org/about/ + +13th April 2009 - initial upload to AUR, tested on 32bit and 64bit. +19444 - richy: Moved _svn* outside of build so that users get the latest SVN. +19444 - richy: Added a symlink for XBMCtex to usr/bin/XBMCtex +19444 - richy: Moved libcdio into depends from opt-depends - right now it is a dependency. + diff --git a/abs/extra/community/xbmc-svn/Lircmap.xml b/abs/extra/community/xbmc-svn/Lircmap.xml new file mode 100644 index 0000000..600567f --- /dev/null +++ b/abs/extra/community/xbmc-svn/Lircmap.xml @@ -0,0 +1,233 @@ + + + + + + + + + + + + + Pause + Stop + Forward + Rewind + Left + Right + Up + Down + + ChanUp + ChanDown + Back + PreviousMenu + Play + More + Skip + Replay + Teletext + Home + Record + VolUp + VolDown + Mute + Power + Videos + Music + Pictures + TV + One + Two + Three + Four + Five + Six + Seven + Eight + Nine + Zero + Red + Green + Yellow + Blue + + + + Pause + Stop + Forward + Rewind + Left + Right + Up + Down + + ChanUp + ChanDown + Back + PreviousMenu + Play + More + Skip + Replay + Teletext + Home + Record + VolUp + VolDown + Mute + Power + Videos + Music + Pictures + TV + One + Two + Three + Four + Five + Six + Seven + Eight + Nine + Zero + Red + Green + Yellow + Blue + + + + PLAY + PAUSE + STOP + FORWARD + REVERSE + LEFT + RIGHT + UP + DOWN + + BACK + MENU + TITLE + INFO + SKIP+ + SKIP- + DISPLAY + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + + + + PLAY + PAUSE + STOP + FORWARD + REVERSE + LEFT + RIGHT + UP + DOWN + + BACK + MENU + TITLE + INFO + SKIP+ + SKIP- + DISPLAY + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + + + + Play + pause + Stop + FForward + Rewind + Vol-Rew + Vol+FF + Chan+Play + Chan-Stop + channel+ + channel- + + undo + Menu + L + Info + next + Fullscreen + Record + vol+ + vol- + Mute + Power + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + + + + PLAY + PAUSE + STOP + >> + << + LEFT + RIGHT + UP + DOWN + CH_UP + CH_DOWN + + EXIT + MENU + RED + GREEN + >>| + YELLOW + RECORD + VOL_UP + VOL_DOWN + MUTE + POWER + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 0 + + diff --git a/abs/extra/community/xbmc-svn/PKGBUILD b/abs/extra/community/xbmc-svn/PKGBUILD new file mode 100644 index 0000000..45d6671 --- /dev/null +++ b/abs/extra/community/xbmc-svn/PKGBUILD @@ -0,0 +1,139 @@ +# Contributors : Richard Atkinson atkinsonr-at-gmail +# Ralf Barth +# +# Original credits go to Edgar Hucek +# for his xbmc-vdpau-vdr PKGBUILD at https://archvdr.svn.sourceforge.net/svnroot/archvdr/trunk/archvdr/xbmc-vdpau-vdr/PKGBUILD + +pkgname=xbmc-svn +pkgver=21748 +pkgrel=1 +pkgdesc="XBMC Media Center from SVN (linuxport branch)" +provides=('xbmc') +conflicts=('xbmc' 'xbmc-smoothvideo' 'xbmc-vdpau') +arch=('i686' 'x86_64') +url="http://xbmc.org" +license=('GPL' 'LGPL') +depends=('alsa-lib' 'curl' 'enca' 'faac' 'freetype2' 'fribidi' 'gawk' 'glew' + 'hal' 'jasper' 'libgl' 'libjpeg>=6b-5' 'libmad' 'libmysqlclient' + 'libxinerama' 'libxrandr' 'lzo2' 'sdl_image' 'sdl_mixer' 'sqlite3' + 'tre' 'unzip' 'libcdio' 'libsamplerate' 'python' 'avahi' 'libmad' + 'a52dec' 'libdca' 'faad2' 'libmpeg2' 'libvorbis' 'libogg' 'libmms' + 'libmpcdec' 'flac' 'wavpack' 'xorg-utils') +makedepends=('subversion' 'autoconf' 'automake' 'boost' 'cmake' 'gcc' 'gperf' + 'libtool>=2.2.6a-1' 'make' 'nasm' 'patch' 'pkgconfig' 'zip' 'flex' 'bison') +optdepends=('lirc: remote controller support' + 'pmount: mount removable devices as normal user' + 'smbclient: access windows shares' + 'unrar: access compressed files without unpacking them') +install=("${pkgname}.install") +source=('libcurl-not-in-lib64.patch' + 'Lircmap.xml') +noextract=('libcurl-not-in-lib64.patch' + 'Lircmap.xml') +md5sums=('c5e808703d0c9e392e1c2837fea1a5ef' + '3f93186f1ea4aad73011d00754c7265a') + +options=(!makeflags) + +build() { + + _svntrunk=http://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/linuxport/XBMC + _svnmod=XBMC + _prefix=/usr + + cd ${srcdir}/ + if [ -d $_svnmod/.svn ]; then + msg "SVN tree found, reverting changes and updating to -r$pkgver" + (cd $_svnmod && svn revert -R . && svn up -r $pkgver) || return 1 + else + msg "Checking out SVN tree of -r$pkgver" + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod || return 1 + fi + + # Apply patches + cd "$srcdir/$_svnmod" + + # Arch's libcurl lives in /usr/lib, not /usr/lib64 - fix the path: + msg "Patching with libcurl-not-in-lib64.patch" + patch -p0 < "$srcdir/libcurl-not-in-lib64.patch" || return 1 + + # Goom also needs a fixup due to newer autotools + cd "$srcdir/$_svnmod/xbmc/visualizations/Goom/goom2k4-0" + aclocal + libtoolize --copy --force + ./autogen.sh --enable-static --with-pic + + cd "$srcdir/$_svnmod" + + # Configure XBMC + # + # Note on external-libs: + # - We cannot use external python because Arch's python was built with + # UCS2 unicode support, whereas xbmc expects UCS4 support + # - We cannot use external ffmpeg as we would loose VDPAU functionality + # because Arch's ffmpeg package does not support VDPAU + # - We don't want to rely on AUR packages, so we also don't use libass + # as long as it's in AUR + msg "Configuring XBMC" + make clean + ./configure --prefix=${_prefix} \ + --enable-external-libmad \ + --enable-external-liba52 \ + --enable-external-libdts \ + --enable-external-libfaad \ + --enable-external-libmpeg2 \ + --enable-external-libvorbis \ + --enable-external-libogg \ + --enable-external-libmpcdec \ + --enable-external-libflac \ + --enable-external-libwavpack \ + --disable-external-libass \ + --disable-external-python \ + --disable-external-ffmpeg \ + --disable-pulse \ + --disable-debug || return 1 + + # Fix false negative detections of realloc that happens some times + msg "Fixing false negative detections of realloc" + if grep -q 'HAVE_REALLOC 0' config.h; then + sed -e 's|#define HAVE_REALLOC 0|#define HAVE_REALLOC 1|' \ + -e 's|#define realloc rpl_realloc|/* #define realloc rpl_realloc */|' \ + -i config.h || return 1 + fi + + # XBMCTex will segfault on systems with nvidia installed if linked to OpenGL + msg "Fixing XBMCTex on systems using the nvidia driver blob" + sed -e 's/-lGLU -lGLEW -lGL//' \ + -i ${srcdir}/$_svnmod/tools/XBMCTex/Makefile + + # Now (finally) build + msg "Running make" + make || return 1 + msg "Running make install" + make prefix=${pkgdir}${_prefix} install || return 1 + + # Install + install -Dm755 ${srcdir}/$_svnmod/xbmc-xrandr \ + ${pkgdir}${_prefix}/share/xbmc/xbmc-xrandr || return 1 + + install -Dm644 ${srcdir}/$_svnmod/tools/Linux/xbmc.desktop \ + ${pkgdir}${_prefix}/share/applications/xbmc.desktop || return 1 + + install -Dm644 ${srcdir}/$_svnmod/tools/Linux/xbmc.png \ + ${pkgdir}${_prefix}/share/pixmaps/xbmc.png || return 1 + + install -Dm755 ${srcdir}/$_svnmod/tools/XBMCTex/XBMCTex \ + ${pkgdir}${_prefix}/share/xbmc/tools/xbmctex || return 1 + + # Skins often use build.sh that looks for /usr/bin/XBMCTex + ln -s "${_prefix}/share/xbmc/tools/xbmctex" "$pkgdir/usr/bin/XBMCTex" + + install -dm755 ${pkgdir}${_prefix}/share/licenses/${pkgname} + for licensef in LICENSE.GPL README.linux copying.txt; do + mv ${pkgdir}${_prefix}/share/xbmc/${licensef} \ + ${pkgdir}${_prefix}/share/licenses/${pkgname} || return 1 + done + + # Use custom Lircmap to support StreamZap remote + cp ${srcdir}/Lircmap.xml ${pkgdir}${_prefix}/share/xbmc/system/Lircmap.xml +} diff --git a/abs/extra/community/xbmc-svn/__changelog b/abs/extra/community/xbmc-svn/__changelog new file mode 100644 index 0000000..bbf1705 --- /dev/null +++ b/abs/extra/community/xbmc-svn/__changelog @@ -0,0 +1 @@ +Added Lircmap.xml to PKGBUILD to support MCE2 and StreamZap remotes diff --git a/abs/extra/community/xbmc-svn/libcurl-not-in-lib64.patch b/abs/extra/community/xbmc-svn/libcurl-not-in-lib64.patch new file mode 100644 index 0000000..0bfbc4c --- /dev/null +++ b/abs/extra/community/xbmc-svn/libcurl-not-in-lib64.patch @@ -0,0 +1,13 @@ +Index: Makefile.include.in +=================================================================== +--- Makefile.include.in (revision 21447) ++++ Makefile.include.in (working copy) +@@ -25,7 +25,7 @@ + + ifeq (linux,$(findstring linux, $(ARCH))) + ifeq ($(ARCH), x86_64-linux) +- DEFINES+=-DDLL_PATH_LIBCURL="\"/usr/lib64/libcurl.so.4\"" ++ DEFINES+=-DDLL_PATH_LIBCURL="\"/usr/lib/libcurl.so.4\"" + else + DEFINES+=-DDLL_PATH_LIBCURL="\"/usr/lib/libcurl.so.4\"" + endif diff --git a/abs/extra/community/xbmc-svn/xbmc-svn.install b/abs/extra/community/xbmc-svn/xbmc-svn.install new file mode 100644 index 0000000..acf409c --- /dev/null +++ b/abs/extra/community/xbmc-svn/xbmc-svn.install @@ -0,0 +1,13 @@ +post_install() { + echo ">> If XBMC won't start, but just segfaults, double check your X.Org config" + echo ">> so that your display depth is at least 24-bit. Eg: change " + echo ">> \"DefaultDepth 16\" under the \"Screen\" section so it says 24 instead" + echo ">> of 16." + echo ">> If you have problems or suggestions for this PKGBUILD, have a look at its" + echo ">> dedicated forum thread: http://bbs.archlinux.org/viewtopic.php?pid=559107" + echo ">> or the wiki: http://xbmc.org/wiki/?title=XBMC_on_Arch_Linux_(Unofficial)" + echo + /bin/true +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/extra/community/xbmc/ChangeLog b/abs/extra/community/xbmc/ChangeLog new file mode 100644 index 0000000..59f2370 --- /dev/null +++ b/abs/extra/community/xbmc/ChangeLog @@ -0,0 +1,64 @@ +2009-03-07 [vEX] + + * 8.10-10 : + Try and fix some autoconf issues (thanks Gentoo ebuild). + +2009-02-08 [vEX] + + * 8.10-9 : + Replace some libtool 'ltmain.sh' scripts with the one from libtool + installed with Arch. + Make sure XBMCTex isn't linked to OpenGL libraries or it will segfault + on systems using the nvidia driver. + +2009-01-30 [vEX] + + * 8.10-8 : + Fix some include's so that gcc 4.3.x is happy, shouldn't complain about + undefined '::realloc' anymore. + Remove Mac OS X specific files. + +2009-01-25 [vEX] + + * 8.10-7 : + Moved libcdio, pmount, smbclient and unrar to optdepends. + Removed unneeded dependency on sdl_gfx. + Removed dependency on libpng as sdl_image depends on it. + +2008-12-14 [vEX] + + * 8.10-6 : + Added libpng to dependency list. + Added gawk to dependency list. + Removed '--disable-mms' and '--enable-halmount' configure flags as they + are not mentioned as supported in the configure script. + +2008-12-06 [vEX] + + * 8.10-5 : + Added libmad to the dependency list. + Streamripper 1.64.0+ does not include tre anymore, removed streamripper + and added tre instead. + Removed subversion from makedepends. + +2008-12-06 [vEX] + + * 8.10-4 : + Fix permissions for some more scripts, ffmpeg/texi2doc.pl should not + fail any longer. + +2008-12-05 [vEX] + + * 8.10-3 : + Added lirc to the optdepends array. + +2008-11-26 [vEX] + + * 8.10-2 : + Added install file which informs users that a display depth of at + least 24-bit is required. + +2008-11-17 [vEX] + + * 8.10-1 : + Initial package, based on previous work by Zeqadious. diff --git a/abs/extra/community/xbmc/PKGBUILD b/abs/extra/community/xbmc/PKGBUILD new file mode 100644 index 0000000..950d704 --- /dev/null +++ b/abs/extra/community/xbmc/PKGBUILD @@ -0,0 +1,118 @@ +# Contributor: [vEX] +# Contributor: Zeqadious + +pkgname=xbmc +pkgver=8.10 +pkgrel=10 +pkgdesc="XBMC Media Center" +arch=('i686' 'x86_64') +url="http://xbmc.org" +license=('GPL' 'custom') +depends=('alsa-lib' 'curl' 'enca' 'faac' 'freetype2' 'fribidi' 'gawk' 'glew' \ + 'hal' 'jasper' 'libgl' 'libjpeg>=6b-5' 'libmad' 'libmysqlclient' \ + 'libxinerama' 'libxrandr' 'lzo2' 'sdl_image' 'sdl_mixer' 'sqlite3' \ + 'tre' 'unzip' 'x-server') +makedepends=('autoconf' 'automake' 'boost' 'cmake' 'gcc' 'gperf' + 'libtool>=2.2.6a-1' 'make' 'nasm' 'patch' 'pkgconfig' 'zip') +optdepends=('libcdio: optical disc support' + 'lirc: remote controller support' + 'pmount: mount removable devices as normal user' + 'smbclient: access windows shares' + 'unrar: access compressed files without unpacking them') +install=("${pkgname}.install") +source=("http://downloads.sourceforge.net/${pkgname}/XBMC-${pkgver}.src.tar.gz") +md5sums=('2d20d255a211223eaa47f1c6bcf4be8e') + +build() { + cd "${srcdir}/XBMC" + + # Remove Mac OS X specific files + rm -rf system/python/lib-osx/ + rm system/players/dvdplayer/*-osx* + + # Fix permissions for the configure scripts + find -type f -name "configure"|xargs chmod a+x || return 1 + + # Fix other permissions + find -type f -name "*.pl"|xargs chmod a+x || return 1 + + # Make it gcc 4.3.x compatible + sed '92i#include ' -i guilib/system.h || return 1 + + # Clean up the configure files and make sure they support C++. + for file in `find . -type f -name configure.in -or -name configure.ac`; do + echo 'AC_PROG_CXX' >> "${file}" + sed -e '/AM_PATH_XMMS/ c\echo' \ + -e '/AM_PATH_SDL2/ c\echo' \ + -i ${file} || return 1 + done + sed -e 's/test_libFLAC++//g' \ + -i "${srcdir}/XBMC/xbmc/cores/paplayer/flac-1.2.1/src/Makefile.am" || return 1 + + # Fix some autoconf issues + touch ${srcdir}/XBMC/xbmc/cores/dvdplayer/Codecs/libmad/{NEWS,AUTHORS,ChangeLog} || return 1 + touch ${srcdir}/XBMC/xbmc/visualizations/Goom/goom2k4-0/ylwrap || return 1 + touch ${srcdir}/XBMC/xbmc/lib/libid3tag/libid3tag/{NEWS,README,AUTHORS,ChangeLog} || return 1 + for dir in \ + . \ + xbmc/cores/dvdplayer/Codecs/libDVDCSS \ + xbmc/cores/dvdplayer/Codecs/libdts \ + xbmc/cores/dvdplayer/Codecs/libdvdnav \ + xbmc/cores/dvdplayer/Codecs/libfaad2 \ + xbmc/cores/dvdplayer/Codecs/libmad \ + xbmc/cores/dvdplayer/Codecs/libmpeg2 \ + xbmc/cores/paplayer/flac-1.2.1 \ + xbmc/cores/paplayer/vorbisfile/libvorbis \ + xbmc/cores/paplayer/vorbisfile/ogg \ + xbmc/visualizations/Goom/goom2k4-0 \ + xbmc/lib/libass \ + xbmc/lib/libid3tag/libid3tag + do + autoreconf --install "${srcdir}/XBMC/${dir}" || return 1 + done + + cd "${srcdir}/XBMC/" + + # Configure XBMC + ./configure --prefix=/usr \ + --disable-debug || return 1 + + # Fix false negative detections of realloc that happens some times + if grep -q 'HAVE_REALLOC 0' config.h; then + sed -e 's|#define HAVE_REALLOC 0|#define HAVE_REALLOC 1|' \ + -e 's|#define realloc rpl_realloc|/* #define realloc rpl_realloc */|' \ + -i config.h || return 1 + fi + + # XBMCTex will segfault on systems with nvidia instaleld if linked to OpenGL + sed -e 's/-lGLU -lGLEW -lGL//' \ + -i ${srcdir}/XBMC/tools/XBMCTex/Makefile + + # Now (finally) build + make || return 1 + make prefix=${pkgdir}/usr install || return 1 + + # Fix the shell script + sed -i '4iexport SDL_AUDIODRIVER=alsa' ${pkgdir}/usr/bin/xbmc + + # Xrandr + install -Dm755 ${srcdir}/XBMC/xbmc-xrandr \ + ${pkgdir}/usr/share/xbmc/xbmc-xrandr || return 1 + + # Menu item + install -Dm644 ${srcdir}/XBMC/tools/Linux/xbmc.desktop \ + ${pkgdir}/usr/share/applications/xbmc.desktop || return 1 + install -Dm644 ${srcdir}/XBMC/tools/Linux/xbmc.png \ + ${pkgdir}/usr/share/pixmaps/xbmc.png || return 1 + + # XBMCTex + install -Dm755 ${srcdir}/XBMC/tools/XBMCTex/XBMCTex \ + ${pkgdir}/usr/share/xbmc/tools/xbmctex || return 1 + + # License(s) + install -dm755 ${pkgdir}/usr/share/licenses/${pkgname} + for licensef in LICENSE.GPL README.linux copying.txt; do + mv ${pkgdir}/usr/share/xbmc/${licensef} \ + ${pkgdir}/usr/share/licenses/${pkgname} || return 1 + done +} diff --git a/abs/extra/community/xbmc/xbmc.install b/abs/extra/community/xbmc/xbmc.install new file mode 100644 index 0000000..9316bc8 --- /dev/null +++ b/abs/extra/community/xbmc/xbmc.install @@ -0,0 +1,9 @@ +post_install() { + echo ">> If XBMC won't start, but just segfaults, double check your X.Org config" + echo ">> so that your display depth is at least 24-bit. Eg: change " + echo ">> \"DefaultDepth 16\" under the \"Screen\" section so it says 24 instead" + echo ">> of 16." + /bin/true +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/extra/community/xine-lib-vdpau-svn/PKGBUILD b/abs/extra/community/xine-lib-vdpau-svn/PKGBUILD new file mode 100644 index 0000000..2d1e887 --- /dev/null +++ b/abs/extra/community/xine-lib-vdpau-svn/PKGBUILD @@ -0,0 +1,47 @@ +# Contributor: Dennis Brendel +pkgname=xine-lib-vdpau-svn +pkgver=222 +pkgrel=2 +pkgdesc="A free video player library for Unix with support for vdpau" +arch=('i686' 'x86_64') +url="http://xinehq.de/" +license=('GPL') +depends=('libxvmc' 'esound' 'flac>=1.1.4' 'libvorbis' 'sdl' 'libmng' 'libtheora' 'libxcb' 'wavpack' 'ffmpeg>=20080715' 'heimdal>=1.2.1' 'nvidia-utils>=180.22' 'nvidia>=180.22') +optdepends=('codecs') +makedepends=('subversion' 'pkgconfig' 'libtool' 'imagemagick' 'smbclient' 'mesa' 'alsa-lib' 'vcdimager' 'jack-audio-connection-kit' 'cvs') +conflicts=('xine-lib') +provides=('xine-lib=1.1.16.1' 'xine-lib') + +_svntrunk=svn://jusst.de/xine-vdpau +_svnmod=xine-vdpau + +build() { + + cd ${srcdir} + + if [ -d $_svnmod/.svn ]; then + (cd $_svnmod && svn up -r $pkgver) + else + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + fi + + msg "SVN checkout done or server timeout" + msg "Starting make..." + + cp -r $_svnmod $_svnmod-build + cd $_svnmod-build + + unset CFLAGS + + ./autogen.sh --prefix=/usr --with-w32-path=/usr/lib/codecs \ + --with-xv-path=/usr/lib --with-xxmc-path=/usr/lib --with-xvmc-path=/usr/lib \ + --with-libflac --with-wavpack --with-xcb \ + --without-arts --with-jack --without-speex \ + --disable-gnomevfs --without-pulseaudio --disable-aalib \ + --disable-modplug --with-external-ffmpeg || return 1 + + make || return 1 + make DESTDIR=$pkgdir install || return 1 + + rm -rf ${srcdir}/${_svnmod}-build +} diff --git a/abs/extra/community/zvbi/PKGBUILD b/abs/extra/community/zvbi/PKGBUILD new file mode 100644 index 0000000..f638f29 --- /dev/null +++ b/abs/extra/community/zvbi/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +# Contributor: dorphell +pkgname=zvbi +pkgver=0.2.26 +pkgrel=1 +pkgdesc="zvbi is needed for zapping" +arch=(i686 x86_64) +depends=('libpng') +license=('GPL') +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/zapping/$pkgname-$pkgver.tar.bz2) +url="http://zapping.sourceforge.net/cgi-bin/view/ZVBI/WebHome" + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install +} +md5sums=('82805319ca61f6ffd7b7bb64d7433448') diff --git a/abs/extra/conky/PKGBUILD b/abs/extra/conky/PKGBUILD new file mode 100644 index 0000000..726f426 --- /dev/null +++ b/abs/extra/conky/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 15346 2008-10-12 21:48:59Z giovanni $ +# Maintainer: James Rayner +# Contributor: MrGreen + +pkgname=conky +pkgver=1.6.1 +pkgrel=2 +pkgdesc="Conky is an advanced, highly configurable system monitor for X based on torsmo" +arch=('i686' 'x86_64') +url="http://conky.sourceforge.net/" +license=('custom') +replaces=('torsmo') +depends=('libxext' 'libxml2' 'curl' 'wireless_tools' 'libxft' 'glib2' 'libxdamage') +makedepends=('pkgconfig') +source=(http://downloads.sourceforge.net/sourceforge/conky/$pkgname-$pkgver.tar.bz2) +md5sums=('b2839f21cec18e5eaa338c7440a1ba28') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --enable-xft --enable-mpd --enable-double-buffer \ + --enable-proc-uptime --enable-seti --enable-wlan --enable-rss --enable-smapi + make || return 1 + make DESTDIR=$startdir/pkg install + mkdir -p $startdir/pkg/etc/xdg/ + mv $startdir/pkg/usr/etc/conky/ $startdir/pkg/etc/xdg/ + rmdir $startdir/pkg/usr/etc + install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING +} + diff --git a/abs/extra/crda/PKGBUILD b/abs/extra/crda/PKGBUILD new file mode 100644 index 0000000..5a23fbd --- /dev/null +++ b/abs/extra/crda/PKGBUILD @@ -0,0 +1,50 @@ +# $Id: PKGBUILD 24388 2009-01-15 23:18:18Z thomas $ +# Maintainer: Thomas Bächler + +pkgname=crda +pkgver=0.9.5 +_regdbver=2009-01-15 +pkgrel=2 +pkgdesc="Central Regulatory Domain Agent" +arch=(i686 x86_64) +url="http://wireless.kernel.org/en/developers/Regulatory/CRDA" +license=('custom') +depends=('libnl' 'libgcrypt' 'udev' 'iw') +makedepends=('python-m2crypto') +source=(http://wireless.kernel.org/download/crda/$pkgname-$pkgver.tar.bz2 + http://wireless.kernel.org/download/wireless-regdb/regulatory.bins/${_regdbver}-regulatory.bin + crda.rc + crda.conf.d) +backup=(etc/conf.d/wireless-regdom) +md5sums=('cee459e588441f713a96ae2fb0472d7f' + 'a0db99e5385c876b6da7e2869546f6e2' + '014eef3f8655e9a130064ec6891317fc' + '2374dcf1c6530332f375e5362b80169b') + +build() { + # Install crda, regdbdump and udev rules + msg "Compiling and installing crda ..." + cd $srcdir/$pkgname-$pkgver + make crda regdbdump || return 1 + make DESTDIR=$pkgdir install || return 1 + + # Install and verify regulatory.bin file + msg "Installing and verifying the regulatory.bin file ..." + install -D -m444 $srcdir/${_regdbver}-regulatory.bin $pkgdir/usr/lib/crda/regulatory.bin || return 1 + if $pkgdir/sbin/regdbdump $pkgdir/usr/lib/crda/regulatory.bin > /dev/null; then + msg "Regulatory database verification was succesful." + else + error "Regulatory database verification failed." + return 1 + fi + + msg "Installing license ..." + install -D -m644 $srcdir/$pkgname-$pkgver/LICENSE $pkgdir/usr/share/licenses/crda/LICENSE || return 1 + + msg "Installing boot scripts ..." + install -D -m755 $srcdir/crda.rc $pkgdir/etc/rc.d/wireless-regdom || return 1 + install -D -m644 $srcdir/crda.conf.d $pkgdir/etc/conf.d/wireless-regdom || return 1 + for dom in $($pkgdir/sbin/regdbdump $pkgdir/usr/lib/crda/regulatory.bin | grep ^country | cut -d' ' -f2 | sed 's|:||g'); do + echo "#WIRELESS_REGDOM=\"${dom}\"" >> $pkgdir/etc/conf.d/wireless-regdom || return 1 + done +} diff --git a/abs/extra/crda/crda.conf.d b/abs/extra/crda/crda.conf.d new file mode 100644 index 0000000..8511238 --- /dev/null +++ b/abs/extra/crda/crda.conf.d @@ -0,0 +1,4 @@ +# +# Wireless regulatory domain configuration +# + diff --git a/abs/extra/crda/crda.rc b/abs/extra/crda/crda.rc new file mode 100755 index 0000000..13dbd87 --- /dev/null +++ b/abs/extra/crda/crda.rc @@ -0,0 +1,26 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/wireless-regdom + +case "$1" in + start) + if [ -n "${WIRELESS_REGDOM}" ]; then + stat_busy "Setting wireless regulatory domain: ${WIRELESS_REGDOM}" + if iw reg set ${WIRELESS_REGDOM}; then + stat_done + else + stat_fail + fi + fi + ;; + stop) + ;; + restart) + $0 start + ;; + *) + echo "usage: $0 start" +esac +exit 0 diff --git a/abs/extra/cvs/PKGBUILD b/abs/extra/cvs/PKGBUILD new file mode 100644 index 0000000..488f4a0 --- /dev/null +++ b/abs/extra/cvs/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 20493 2008-12-05 11:27:50Z allan $ +# Maintainer: dorphell +pkgname=cvs +pkgver=1.11.23 +pkgrel=3 +pkgdesc="Concurrent Versions System - a source control system" +arch=(i686 x86_64) +url="http://ximbiot.com/cvs/wiki/index.php" +license=('GPL') +depends=('heimdal>=1.2') +source=(ftp://ftp.gnu.org/non-gnu/cvs/source/stable/$pkgver/$pkgname-$pkgver.tar.bz2) +md5sums=('0213ea514e231559d6ff8f80a34117f0') + +build() { + cd $startdir/src/$pkgname-$pkgver + unset EDITOR VISUAL + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/ddclient/ChangeLog b/abs/extra/ddclient/ChangeLog new file mode 100644 index 0000000..4520b69 --- /dev/null +++ b/abs/extra/ddclient/ChangeLog @@ -0,0 +1,22 @@ +2008-08-07 Abhishek Dasgupta + + * ddclient 3.7.3-2 + * added /etc/conf.d/ddclient for modifying + daemon poll frequency. This overrides the + setting specified in /etc/ddclient/ddclient.conf + when ddclient is called as an rc script. + +2007-08-08 Alessio 'mOLOk' Bolognino + + * ddclient-3.7.3-1 + * version bump + * GPL -> GPL2 + * shortened pkgdesc + +2007-07-02 tardo + + * Built for x86_64 + +2007-06-29 Georg Grabler (STiAT) + + * Version Bump to 3.7.2 diff --git a/abs/extra/ddclient/PKGBUILD b/abs/extra/ddclient/PKGBUILD new file mode 100644 index 0000000..121d2c5 --- /dev/null +++ b/abs/extra/ddclient/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD,v 1.13 2008/08/07 07:11:09 abhidg Exp $ +# Maintainer: Abhishek Dasgupta +# Contributor: David Rosenstrauch + +pkgname=ddclient +pkgver=3.7.3 +pkgrel=2 +pkgdesc="Update dynamic DNS entries for accounts on many dynamic DNS services." +arch=('i686' 'x86_64') +url="http://ddclient.sourceforge.net/" +license=('GPL2') +depends=('perl' 'perl-io-socket-ssl') +backup=('etc/ddclient/ddclient.conf' 'etc/conf.d/ddclient') +install=ddclient.install +source=(http://downloads.sourceforge.net/sourceforge/ddclient/ddclient-$pkgver.tar.bz2 ddclient.rc ddclient.conf.d) + +build() { + cd ${srcdir}/ddclient-${pkgver} + + # core files + install -D -m755 ddclient ${pkgdir}/usr/sbin/ddclient + install -D -m755 ${srcdir}/ddclient.rc ${pkgdir}/etc/rc.d/ddclient + install -D -m600 sample-etc_ddclient.conf ${pkgdir}/etc/ddclient/ddclient.conf + install -D -m644 ${srcdir}/ddclient.conf.d ${pkgdir}/etc/conf.d/ddclient + install -d ${pkgdir}/var/cache/ddclient + + # additional instructions, sample configs + install -D -m644 README ${pkgdir}/etc/ddclient/samples/README + install -D -m644 sample-etc_cron.d_ddclient ${pkgdir}/etc/ddclient/samples/sample-etc_cron.d_ddclient + install -D -m644 sample-etc_dhcpc_dhcpcd-eth0.exe ${pkgdir}/etc/ddclient/samples/sample-etc_dhcpc_dhcpcd-eth0.exe + install -D -m644 sample-etc_ppp_ip-up.local ${pkgdir}/etc/ddclient/samples/sample-etc_ppp_ip-up.local +} +md5sums=('f6a55bc68cf73ffe7e80d2fa5cd44f85' + '7035bf8132f3517a59167f61ee5e8b90' + 'b8f39c82827776da948b76ef83544d33') diff --git a/abs/extra/ddclient/ddclient.conf.d b/abs/extra/ddclient/ddclient.conf.d new file mode 100644 index 0000000..8b754a3 --- /dev/null +++ b/abs/extra/ddclient/ddclient.conf.d @@ -0,0 +1,2 @@ +# Parameters passed to ddclient +EXTRA_ARGS="-daemon 300" diff --git a/abs/extra/ddclient/ddclient.install b/abs/extra/ddclient/ddclient.install new file mode 100644 index 0000000..d6edc0e --- /dev/null +++ b/abs/extra/ddclient/ddclient.install @@ -0,0 +1,41 @@ +# arg 1: the new package version +post_install() { +cat << EOM + +If you want to use ddclient with dhcpcd, cron or pppd, +see /etc/ddclient/samples for further instructions. + +If you have ddclient in the DAEMONS array of /etc/rc.conf: +- Change /etc/conf.d/ddclient according to your needs. +- This setting OVERRIDES any setting in + /etc/ddclient/ddclient.conf + +EOM +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + +if [ -f /etc/ddclient/ddclient.cache ]; then + echo -n "Moving ddclient.cache from /etc/ddclient/ to /var/cache/ddclient/." + mv /etc/ddclient/ddclient.cache /var/cache/ddclient/ + echo " (done)" +fi + +if [ "$(vercmp $2 3.7.3-2)" -lt 0 ]; then +cat << EOM + +If you have ddclient in the DAEMONS array of /etc/rc.conf: +- Change /etc/conf.d/ddclient according to your needs. +- This setting OVERRIDES any setting in + /etc/ddclient/ddclient.conf + +EOM +fi + +} + +op=$1 +shift +$op $* diff --git a/abs/extra/ddclient/ddclient.rc b/abs/extra/ddclient/ddclient.rc new file mode 100644 index 0000000..a9093f7 --- /dev/null +++ b/abs/extra/ddclient/ddclient.rc @@ -0,0 +1,37 @@ +#!/bin/bash + +[ -f /etc/conf.d/ddclient ] && . /etc/conf.d/ddclient + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/ddclient` +case "$1" in + start) + stat_busy "Starting ddclient" + [ -z "$PID" ] && /usr/sbin/ddclient ${EXTRA_ARGS} + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon ddclient + stat_done + fi + ;; + stop) + stat_busy "Stopping ddclient" + [ -n "$PID" ] && kill -15 $PID >/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon ddclient + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/extra/diffstat/PKGBUILD b/abs/extra/diffstat/PKGBUILD new file mode 100644 index 0000000..2c049ce --- /dev/null +++ b/abs/extra/diffstat/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 13739 2008-09-28 10:43:08Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Matthias-Christian Ott + +pkgname=diffstat +pkgver=1.46 +pkgrel=1 +pkgdesc="diffstat produces graph of changes introduced by a diff file" +arch=('i686' 'x86_64') +url="http://invisible-island.net/diffstat" +depends=('glibc') +license=('GPL') +source=(ftp://invisible-island.net/diffstat/diffstat-$pkgver.tgz) +md5sums=('626acb8cdd9e5cdb3a502bc12b828067') + +build () { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --mandir=/usr/share/man + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/docbook-xml/PKGBUILD b/abs/extra/docbook-xml/PKGBUILD new file mode 100644 index 0000000..feac080 --- /dev/null +++ b/abs/extra/docbook-xml/PKGBUILD @@ -0,0 +1,268 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dorphell +# Committer: Judd Vinet + +pkgname=docbook-xml +pkgver=4.5 +pkgrel=1 +pkgdesc="A widely used XML scheme for writing documentation and help" +arch=(i686 x86_64) +url="http://scrollkeeper.sourceforge.net/docbook.shtml" +depends=('libxml2') +makedepends=('unzip') +install=docbook-xml.install +source=(http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip + http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip + http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip + http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip + http://www.docbook.org/xml/4.1.2/docbkx412.zip) +noextract=('docbook-xml-4.5.zip' 'docbook-xml-4.4.zip' 'docbook-xml-4.3.zip' 'docbook-xml-4.2.zip' 'docbkx412.zip') +md5sums=('03083e288e87a7e829e437358da7ef9e' + 'cbb04e9a700955d88c50962ef22c1634' + 'ab200202b9e136a144db1e0864c45074' + '73fe50dfe74ca631c1602f558ed8961f' + '900d7609fb7e6d78901b357e4acfbc17') + +build() { + for ver in 4.2 4.3 4.4 4.5; do + mkdir docbook-xml-${ver} + pushd docbook-xml-${ver} + unzip ${startdir}/src/docbook-xml-${ver}.zip + mkdir -p ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-${ver} + cp -af docbook.cat *.dtd ent/ *.mod \ + ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-${ver}/ + popd + done + mkdir docbook-xml-4.1.2 + pushd docbook-xml-4.1.2 + unzip ${startdir}/src/docbkx412.zip + mkdir -p ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-4.1.2 + cp -af docbook.cat *.dtd ent/ *.mod \ + ${startdir}/pkg/usr/share/xml/docbook/xml-dtd-4.1.2/ + popd + + mkdir -p ${startdir}/pkg/etc/xml + xmlcatalog --noout --create ${startdir}/pkg/etc/xml/docbook-xml + + # V4.1.2 + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/calstblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/soextblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbpoolx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbhierx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbgenent.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.1.2/dbcentx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.1.2" \ + "file:///usr/share/xml/docbook/xml-dtd-4.1.2" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.1.2" \ + "file:///usr/share/xml/docbook/xml-dtd-4.1.2" \ + ${startdir}/pkg/etc/xml/docbook-xml + + # V4.2 + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook CALS Table Model V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/calstblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/soextblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Information Pool V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbpoolx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbhierx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Additional General Entities V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbgenent.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Notations V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbnotnx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Character Entities V4.2//EN" \ + "http://www.oasis-open.org/docbook/xml/4.2/dbcentx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.2" \ + "file:///usr/share/xml/docbook/xml-dtd-4.2" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.2" \ + "file:///usr/share/xml/docbook/xml-dtd-4.2" \ + ${startdir}/pkg/etc/xml/docbook-xml + + # V4.3 + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook CALS Table Model V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/calstblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/soextblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Information Pool V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbpoolx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbhierx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Additional General Entities V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbgenent.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Notations V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbnotnx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Character Entities V4.3//EN" \ + "http://www.oasis-open.org/docbook/xml/4.3/dbcentx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.3" \ + "file:///usr/share/xml/docbook/xml-dtd-4.3" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.3" \ + "file:///usr/share/xml/docbook/xml-dtd-4.3" \ + ${startdir}/pkg/etc/xml/docbook-xml + + # V4.4 + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook CALS Table Model V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/calstblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/htmltblx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/soextblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Information Pool V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbpoolx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbhierx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Additional General Entities V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbgenent.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Notations V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbnotnx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook Character Entities V4.4//EN" \ + "http://www.oasis-open.org/docbook/xml/4.4/dbcentx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.4" \ + "file:///usr/share/xml/docbook/xml-dtd-4.4" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.4" \ + "file:///usr/share/xml/docbook/xml-dtd-4.4" \ + ${startdir}/pkg/etc/xml/docbook-xml + + # V4.5 + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.5//EN" \ + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.5" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5" \ + ${startdir}/pkg/etc/xml/docbook-xml + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.5" \ + "file:///usr/share/xml/docbook/xml-dtd-4.5" \ + ${startdir}/pkg/etc/xml/docbook-xml +} diff --git a/abs/extra/docbook-xml/docbook-xml.install b/abs/extra/docbook-xml/docbook-xml.install new file mode 100644 index 0000000..c62f65f --- /dev/null +++ b/abs/extra/docbook-xml/docbook-xml.install @@ -0,0 +1,46 @@ +post_install() { + if [ -e etc/xml/catalog.preserve ]; then + mv etc/xml/catalog.preserve etc/xml/catalog + elif [ ! -e etc/xml/catalog ]; then + xmlcatalog --noout --create etc/xml/catalog + fi + xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//ENTITIES DocBook XML" \ + "file:///etc/xml/docbook-xml" \ + etc/xml/catalog + xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//DTD DocBook XML" \ + "file:///etc/xml/docbook-xml" \ + etc/xml/catalog + xmlcatalog --noout --add "delegateSystem" \ + "http://www.oasis-open.org/docbook/" \ + "file:///etc/xml/docbook-xml" \ + etc/xml/catalog + xmlcatalog --noout --add "delegateURI" \ + "http://www.oasis-open.org/docbook/" \ + "file:///etc/xml/docbook-xml" \ + etc/xml/catalog +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + if [ $(vercmp $2 4.5) -lt 0 ]; then + xmlcatalog --del "file:///etc/xml/docbook" etc/xml/catalog > etc/xml/catalog.preserve + fi +} + +post_upgrade() { + if [ $(vercmp $2 4.5) -ge 0 ]; then + post_remove + fi + post_install +} + +post_remove() { + xmlcatalog --noout --del file:///etc/xml/docbook-xml etc/xml/catalog +} + +op=$1 +shift +$op $* diff --git a/abs/extra/docbook-xml/docbook.patch b/abs/extra/docbook-xml/docbook.patch new file mode 100644 index 0000000..1932f19 --- /dev/null +++ b/abs/extra/docbook-xml/docbook.patch @@ -0,0 +1,226 @@ +diff -Naur docbookx412-orig/Makefile docbookx412/Makefile +--- docbookx412-orig/Makefile 2002-02-16 11:08:29.000000000 -0800 ++++ docbookx412/Makefile 2002-08-24 12:03:31.000000000 -0700 +@@ -1,7 +1,7 @@ + SHELL=/bin/sh + VERSION=4.1.2-9 +-DESTDIR=/usr/share/xml/docbook/xml-dtd-$(VERSION) +-CATALOG=/usr/share/xml/docbook/catalog ++DESTDIR=$(ROOT)/usr/share/xml/docbook/xml-dtd-$(VERSION) ++CATALOG=$(ROOT)/usr/share/xml/docbook/catalog + OPENJADEVER=1.3 + + all: +@@ -24,7 +24,7 @@ + # + # + # DocBook XML V4.1.2 +- @./buildDocBookCatalog ++ @./buildDocBookCatalog $(ROOT) + + uninstall: + # +diff -Naur docbookx412-orig/buildDocBookCatalog docbookx412/buildDocBookCatalog +--- docbookx412-orig/buildDocBookCatalog 2002-02-17 09:32:45.000000000 -0800 ++++ docbookx412/buildDocBookCatalog 2002-08-24 12:15:23.000000000 -0700 +@@ -28,16 +28,20 @@ + # Modifications made to Daniel Veillard's catalog build script at + # http://xmlsoft.org/buildDocBookCatalog. + +-if [ ! -d /etc/xml -a -w /etc ] ++DESTDIR=$1 ++echo "DESTDIR is $DESTDIR" ++mkdir $DESTDIR/etc ++ ++if [ ! -d $DESTDIR/etc/xml -a -w $DESTDIR/etc ] + then + echo Directory /etc/xml missing creating it +- mkdir /etc/xml +- chmod 755 /etc/xml ++ mkdir $DESTDIR/etc/xml ++ chmod 755 $DESTDIR/etc/xml + fi +-if [ -w /etc/xml ] ++if [ -w $DESTDIR/etc/xml ] + then +- ROOTCATALOG=/etc/xml/catalog +- CATALOG=/etc/xml/docbook ++ ROOTCATALOG=$DESTDIR/etc/xml/catalog ++ CATALOG=$DESTDIR/etc/xml/docbook + else + echo Unable to update root catalog /etc/xml/catalog + echo Using $HOME/xmlcatalog as the root catalog +@@ -69,16 +73,7 @@ + # + # find the prefix for DocBook DTD + # +-found=`find /usr/share/xml -name docbookx.dtd` +-if [ "$found" = "" ] ; then +- found=`find $HOME -name docbookx.dtd` +-fi +-if [ "$found" = "" ] ; then +- found=`find /usr/local -name docbookx.dtd` +-fi +-if [ "$found" = "" ] ; then +- found=`find /usr/share/sgml -name docbookx.dtd` +-fi ++found=`find $DESTDIR/usr/share/xml -name docbookx.dtd` + if [ "$found" = "" ] ; then + echo could not locate docbookx.dtd for DocBook XML + exit 1 +@@ -105,49 +100,52 @@ + # exit 2 + #fi + ++fakedocbookdir=`echo $docbookdir | sed "s|^$DESTDIR||"` ++FAKECATALOG=`echo $CATALOG | sed "s|^$DESTDIR||"` ++ + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Information Pool V4.1.2//EN" \ +- "file://$docbookdir/dbpoolx.mod" $CATALOG ++ "file://$fakedocbookdir/dbpoolx.mod" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML V4.1.2//EN" \ +- "file://$docbookdir/docbookx.dtd" $CATALOG ++ "file://$fakedocbookdir/docbookx.dtd" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN" \ +- "file://$docbookdir/dbcentx.mod" $CATALOG ++ "file://$fakedocbookdir/dbcentx.mod" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Notations V4.1.2//EN" \ +- "file://$docbookdir/dbnotnx.mod" $CATALOG ++ "file://$fakedocbookdir/dbnotnx.mod" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.1.2//EN" \ +- "file://$docbookdir/dbgenent.mod" $CATALOG ++ "file://$fakedocbookdir/dbgenent.mod" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.1.2//EN" \ +- "file://$docbookdir/dbhierx.mod" $CATALOG ++ "file://$fakedocbookdir/dbhierx.mod" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ +- "file://$docbookdir/soextblx.dtd" $CATALOG ++ "file://$fakedocbookdir/soextblx.dtd" $CATALOG + xmlcatalog --noout --add "public" \ + "-//OASIS//DTD DocBook XML CALS Table Model V4.1.2//EN" \ +- "file://$docbookdir/calstblx.dtd" $CATALOG ++ "file://$fakedocbookdir/calstblx.dtd" $CATALOG + xmlcatalog --noout --add "rewriteSystem" \ + "http://www.oasis-open.org/docbook/xml/4.1.2" \ +- "file://$docbookdir" $CATALOG ++ "file://$fakedocbookdir" $CATALOG + xmlcatalog --noout --add "rewriteURI" \ + "http://www.oasis-open.org/docbook/xml/4.1.2" \ +- "file://$docbookdir" $CATALOG ++ "file://$fakedocbookdir" $CATALOG + + xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//ENTITIES DocBook XML" \ +- "file://$CATALOG" $ROOTCATALOG ++ "file://$FAKECATALOG" $ROOTCATALOG + xmlcatalog --noout --add "delegatePublic" \ + "-//OASIS//DTD DocBook XML" \ +- "file://$CATALOG" $ROOTCATALOG ++ "file://$FAKECATALOG" $ROOTCATALOG + xmlcatalog --noout --add "delegateSystem" \ + "http://www.oasis-open.org/docbook/" \ +- "file://$CATALOG" $ROOTCATALOG ++ "file://$FAKECATALOG" $ROOTCATALOG + xmlcatalog --noout --add "delegateURI" \ + "http://www.oasis-open.org/docbook/" \ +- "file://$CATALOG" $ROOTCATALOG ++ "file://$FAKECATALOG" $ROOTCATALOG + + # + # find the prefix for ISO DocBook entities +@@ -187,66 +185,68 @@ + isodir=`dirname $entxml` + echo Found ISO DocBook entities in $isodir + ++fakeisodir=`echo $isodir | sed "s|^$DESTDIR||"` ++ + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Publishing//EN" \ +- "file://$isodir/iso-pub.ent" $CATALOG ++ "file://$fakeisodir/iso-pub.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Greek Letters//EN" \ +- "file://$isodir/iso-grk1.ent" $CATALOG ++ "file://$fakeisodir/iso-grk1.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Box and Line Drawing//EN" \ +- "file://$isodir/iso-box.ent" $CATALOG ++ "file://$fakeisodir/iso-box.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Greek Symbols//EN" \ +- "file://$isodir/iso-grk3.ent" $CATALOG ++ "file://$fakeisodir/iso-grk3.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" \ +- "file://$isodir/iso-amsn.ent" $CATALOG ++ "file://$fakeisodir/iso-amsn.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" \ +- "file://$isodir/iso-num.ent" $CATALOG ++ "file://$fakeisodir/iso-num.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" \ +- "file://$isodir/iso-grk4.ent" $CATALOG ++ "file://$fakeisodir/iso-grk4.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Diacritical Marks//EN" \ +- "file://$isodir/iso-dia.ent" $CATALOG ++ "file://$fakeisodir/iso-dia.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Monotoniko Greek//EN" \ +- "file://$isodir/iso-grk2.ent" $CATALOG ++ "file://$fakeisodir/iso-grk2.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" \ +- "file://$isodir/iso-amsa.ent" $CATALOG ++ "file://$fakeisodir/iso-amsa.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" \ +- "file://$isodir/iso-amso.ent" $CATALOG ++ "file://$fakeisodir/iso-amso.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Russian Cyrillic//EN" \ +- "file://$isodir/iso-cyr1.ent" $CATALOG ++ "file://$fakeisodir/iso-cyr1.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES General Technical//EN" \ +- "file://$isodir/iso-tech.ent" $CATALOG ++ "file://$fakeisodir/iso-tech.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" \ +- "file://$isodir/iso-amsc.ent" $CATALOG ++ "file://$fakeisodir/iso-amsc.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Latin 1//EN" \ +- "file://$isodir/iso-lat1.ent" $CATALOG ++ "file://$fakeisodir/iso-lat1.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" \ +- "file://$isodir/iso-amsb.ent" $CATALOG ++ "file://$fakeisodir/iso-amsb.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Latin 2//EN" \ +- "file://$isodir/iso-lat2.ent" $CATALOG ++ "file://$fakeisodir/iso-lat2.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" \ +- "file://$isodir/iso-amsr.ent" $CATALOG ++ "file://$fakeisodir/iso-amsr.ent" $CATALOG + xmlcatalog --noout --add "public" \ + "ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" \ +- "file://$isodir/iso-cyr2.ent" $CATALOG ++ "file://$fakeisodir/iso-cyr2.ent" $CATALOG + + xmlcatalog --noout --add "delegatePublic" \ + "ISO 8879:1986" \ +- "file://$CATALOG" $ROOTCATALOG ++ "file://$FAKECATALOG" $ROOTCATALOG + # + # diff --git a/abs/extra/docbook-xsl/PKGBUILD b/abs/extra/docbook-xsl/PKGBUILD new file mode 100644 index 0000000..cedcfa8 --- /dev/null +++ b/abs/extra/docbook-xsl/PKGBUILD @@ -0,0 +1,37 @@ +# $Id: PKGBUILD 20950 2008-12-08 05:32:07Z allan $ +# Maintainer: Jan de Groot +# Contributer: Sean Middleditch + +pkgname=docbook-xsl +pkgver=1.74.0 +pkgrel=1 +pkgdesc="XML stylesheets for Docbook-xml transformations." +arch=(i686 x86_64) +license=('custom') +url="http://scrollkeeper.sourceforge.net/docbook.shtml" +depends=('libxml2' 'libxslt' 'docbook-xml') +source=(http://downloads.sourceforge.net/sourceforge/docbook/docbook-xsl-${pkgver}.tar.bz2) +install=docbook-xsl.install +md5sums=('a56b598decd006d5d39e4544c0bfbc6a') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/common + install -m644 common/*.{xml,xsl,dtd,ent} ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/common/ + + mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/params + install -m644 params/*.xml ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/params/ + + for fn in fo highlighting html roundtrip; do + mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn} + install -m644 ${fn}/*.{xml,xsl} ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn}/ + done + for fn in eclipse htmlhelp javahelp lib manpages profiling template website xhtml; do + mkdir -p ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn} + install -m644 ${fn}/*.xsl ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/${fn}/ + done + mkdir -p ${pkgdir}/etc/xml + install -m644 VERSION ${pkgdir}/usr/share/xml/docbook/xsl-stylesheets-${pkgver}/ + + install -m644 -D COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING +} diff --git a/abs/extra/docbook-xsl/docbook-xsl.install b/abs/extra/docbook-xsl/docbook-xsl.install new file mode 100644 index 0000000..a8ea3e7 --- /dev/null +++ b/abs/extra/docbook-xsl/docbook-xsl.install @@ -0,0 +1,47 @@ +post_install() { + if [ ! -f /etc/xml/catalog ]; then + xmlcatalog --noout --create /etc/xml/catalog + fi + _NEW=`echo $1 | sed 's|\(.*\)\-.*|\1|'` + + xmlcatalog --noout --add "rewriteSystem" \ + "http://docbook.sourceforge.net/release/xsl/${_NEW}" \ + "/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \ + etc/xml/catalog + + xmlcatalog --noout --add "rewriteURI" \ + "http://docbook.sourceforge.net/release/xsl/${_NEW}" \ + "/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \ + etc/xml/catalog && + + xmlcatalog --noout --add "rewriteSystem" \ + "http://docbook.sourceforge.net/release/xsl/current" \ + "/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \ + etc/xml/catalog && + + xmlcatalog --noout --add "rewriteURI" \ + "http://docbook.sourceforge.net/release/xsl/current" \ + "/usr/share/xml/docbook/xsl-stylesheets-${_NEW}" \ + etc/xml/catalog +} + +post_upgrade() { + post_remove $2 + post_install $1 +} + +post_remove() { + _OLD=`echo $1 | sed 's|\(.*\)\-.*|\1|'` + xmlcatalog --noout --del "/usr/share/xml/docbook/xsl-stylesheets-${_OLD}" etc/xml/catalog + + if [ $(vercmp $1 1.72.0-3) -lt 0 ]; then + xmlcatalog --noout --del "/usr/share/xml/docbook" etc/xml/catalog + xmlcatalog --noout --del "file:///etc/xml/docbook" etc/xml/catalog + fi +} + +op=$1 +shift + +$op $* + diff --git a/abs/extra/doxygen/PKGBUILD b/abs/extra/doxygen/PKGBUILD new file mode 100644 index 0000000..5959ce5 --- /dev/null +++ b/abs/extra/doxygen/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 14308 2008-10-05 15:59:28Z dan $ +# Maintainer: Dan McGee +pkgname=doxygen +pkgver=1.5.7.1 +pkgrel=1 +pkgdesc="A documentation system for C++, C, Java, IDL and PHP" +license=('GPL') +arch=(i686 x86_64) +url="http://www.doxygen.org/" +depends=('gcc-libs') +# qt required to build and run doxywizard, but don't want to drag it in +makedepends=('flex' 'qt3') +optdepends=('graphviz: for caller/callee graph generation' + 'qt3: for doxywizard') +source=(ftp://ftp.stack.nl/pub/users/dimitri/${pkgname}-${pkgver}.src.tar.gz) + +build() { + . /etc/profile.d/qt3.sh + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix /usr --with-doxywizard + make || return 1 + make INSTALL=${startdir}/pkg/usr MAN1DIR=share/man/man1 install +} + +md5sums=('bc35dfd52bdae0247b862e67e0cbe7d7') diff --git a/abs/extra/enchant/PKGBUILD b/abs/extra/enchant/PKGBUILD new file mode 100644 index 0000000..e22aa05 --- /dev/null +++ b/abs/extra/enchant/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 2581 2008-06-08 12:52:18Z jgc $ +# Maintainer: dorphell +pkgname=enchant +pkgver=1.4.2 +pkgrel=1 +pkgdesc="A wrapper library for generic spell checking" +arch=(i686 x86_64) +license=('LGPL') +depends=('aspell' 'dbus-glib>=0.74' 'hunspell>=1.2.2') +makedepends=('hspell') +options=(!libtool) +source=(http://www.abisource.com/downloads/enchant/${pkgver}/${pkgname}-${pkgver}.tar.gz) +url="http://www.abisource.com/enchant/" +md5sums=('fe4558269ff59f569ab9581c907d58cb') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/ethtool/PKGBUILD b/abs/extra/ethtool/PKGBUILD new file mode 100644 index 0000000..1fddeb1 --- /dev/null +++ b/abs/extra/ethtool/PKGBUILD @@ -0,0 +1,22 @@ +pkgname=ethtool +pkgver=6 +pkgrel=1 +pkgdesc="gkernel ethtool" +arch=(i686 x86_64) +url="http://sourceforge.net/projects/gkernel/" +license=('GPL') +depends=(glibc) +makedepends=() +conflicts=() +replaces=() +backup=() +install= +source=(http://easynews.dl.sf.net/sourceforge/gkernel/$pkgname-$pkgver.tar.gz) +md5sums=('3b721ec27f17ebf320ba8c505cf66d9c') + +build() { + cd $startdir/src/$pkgname-$pkgver || return 1 + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 +} diff --git a/abs/extra/evrouter/PKGBUILD b/abs/extra/evrouter/PKGBUILD new file mode 100644 index 0000000..e4fb59d --- /dev/null +++ b/abs/extra/evrouter/PKGBUILD @@ -0,0 +1,18 @@ +# Contributor: Jonathan Liu +pkgname=evrouter +pkgver=0.3.3 +pkgrel=2 +pkgdesc="An Input Event Router for Linux" +arch=(i686) +url="http://www.bedroomlan.org/~alexios/coding_evrouter.html" +license=('GPL2') +depends=('libxt' 'libxtst' 'xorg-server') +source=(http://www.bedroomlan.org/~alexios/files/SOFTWARE/evrouter/${pkgname}_${pkgver}.tar.gz) +md5sums=('a20073e04679eb11a5c2da9ab59e75fd') + +build() { + cd "$startdir/src/$pkgname" + ./configure --prefix=/usr --without-xmms + make || return 1 + make DESTDIR="$startdir/pkg" install +} diff --git a/abs/extra/exo/PKGBUILD b/abs/extra/exo/PKGBUILD new file mode 100644 index 0000000..e402aac --- /dev/null +++ b/abs/extra/exo/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 28206 2009-02-28 11:01:08Z andyrtr $ +# Maintainer: tobias +# Contributor: Aurelien Foret + +pkgname=exo +pkgver=0.3.100 +pkgrel=1 +pkgdesc="Extensions to Xfce by os-cillation" +arch=('i686' 'x86_64') +license=('GPL2' 'LGPL2') +url="http://www.os-cillation.com/article.php?sid=40" +groups=('xfce4') +depends=("libxfce4util" "hal" 'hicolor-icon-theme') +makedepends=("pygtk>=2.14.0" 'pkgconfig' 'libnotify' 'perl-uri') +optdepends=('libnotify enables notification support' \ + 'perl enables mail-compose helper script') +options=('!libtool') +install=${pkgname}.install +source=(http://www.xfce.org/archive/xfce-4.6.0/src/${pkgname}-${pkgver}.tar.bz2) +md5sums=('ebded97ff55f43cd0fe6b16242992ecf') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/xfce4 \ + --localstatedir=/var --disable-static --enable-notifications \ + --enable-python || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/extra/exo/exo.install b/abs/extra/exo/exo.install new file mode 100644 index 0000000..21b79d2 --- /dev/null +++ b/abs/extra/exo/exo.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} diff --git a/abs/extra/fakeroot/PKGBUILD b/abs/extra/fakeroot/PKGBUILD new file mode 100644 index 0000000..f8dd4b2 --- /dev/null +++ b/abs/extra/fakeroot/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 29508 2009-03-09 17:06:43Z andyrtr $ +# Maintainer: Andreas Radke +# Contributor: Jochem Kossen + +pkgname=fakeroot +pkgver=1.12.2 +pkgrel=2 +pkgdesc="Gives a fake root environment, useful for building packages as a non-privileged user" +arch=('i686' 'x86_64') +license=('GPL') +url="http://packages.debian.org/fakeroot" +groups=('base-devel') +install=fakeroot.install +depends=('glibc' 'filesystem' 'grep' 'sed') +options=('!libtool') +source=(http://ftp.debian.org/debian/pool/main/f/$pkgname/${pkgname}_${pkgver}.tar.gz) +md5sums=('1eb7d972a19159035892e7d132602726') + +build() { + cd ${srcdir}/$pkgname-$pkgver + ./configure --prefix=/usr --libdir=/usr/lib/libfakeroot \ + --disable-static --with-ipc=sysv + # --with-ipc=tcp is currently broken and no option on smp systems + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + # install README for sysv/tcp usage + install -Dm644 $srcdir/$pkgname-$pkgver/README $pkgdir/usr/share/doc/$pkgname/README +} diff --git a/abs/extra/fakeroot/fakeroot.install b/abs/extra/fakeroot/fakeroot.install new file mode 100644 index 0000000..c2f62a7 --- /dev/null +++ b/abs/extra/fakeroot/fakeroot.install @@ -0,0 +1,30 @@ +# arg 1: the new package version +post_install() { + if [ ! "`grep /usr/lib/libfakeroot etc/ld.so.conf`" ]; then + echo -n "updating /etc/ld.so.conf... " + echo "/usr/lib/libfakeroot" >>etc/ld.so.conf + sbin/ldconfig -r . + echo "done." + fi +echo "The package is built using sysv ipc. If this causes segfaults" +echo "see included README file and rebuild the pkg --with-ipc=tcp" +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +# arg 1: the old package version +pre_remove() { + echo -ne "\nupdating /etc/ld.so.conf... " + sed -i -e '/\/usr\/lib\/libfakeroot/d' etc/ld.so.conf + sbin/ldconfig -r . + echo "done." +} + +op=$1 +shift + +$op $* diff --git a/abs/extra/fceu/PKGBUILD b/abs/extra/fceu/PKGBUILD new file mode 100755 index 0000000..cdae29a --- /dev/null +++ b/abs/extra/fceu/PKGBUILD @@ -0,0 +1,24 @@ +# Maintainer: Eric Belanger +# Contributor: Jo Christian Bergskås + +pkgname=fceu +pkgver=0.98.15 +pkgrel=1 +pkgdesc="FCE Ultra is a fast and ultra-compatible NES/Famicom emulator with SDL, OpenGL and SVGALIB support." +arch=('i686' 'x86_64') +url="http://fceultra.sourceforge.net" +license="GPL" +options=('docs') +depends=('sdl' 'zlib') +source=(ftp://ftp.knoppmyth.net/R6/sources/$pkgname-$pkgver-src.tar.bz2) +md5sums=('bfe9aa7f91c19fa17bb6e5424dc5901b') + +build() { + cd $startdir/src/fceu + ./configure --prefix=/usr --with-opengl --build=i686-linux-gnu + make || return 1 + make DESTDIR=$startdir/pkg install + install -D -m644 $startdir/src/fceu/Documentation/fceu-sdl.6 $startdir/pkg/usr/man/man6/fceu.6 + install -d $startdir/pkg/usr/share/doc/fceu-doc + cp -r $startdir/src/fceu/Documentation/* $startdir/pkg/usr/share/doc/fceu-doc +} diff --git a/abs/extra/fftw/PKGBUILD b/abs/extra/fftw/PKGBUILD new file mode 100644 index 0000000..1556108 --- /dev/null +++ b/abs/extra/fftw/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 20304 2008-12-02 10:48:00Z ronald $ +# Maintainer: Ronald van Haren +# Contributor: damir + +pkgname=fftw +pkgver=3.2 +pkgrel=1 +pkgdesc="A library for computing the discrete Fourier transform (DFT)" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.fftw.org/" +depends=('glibc') +options=(!libtool) +source=(http://www.fftw.org/${pkgname}-${pkgver}.tar.gz) +install=fftw.install + +# notes: +# http://www.fftw.org/fftw2_doc/fftw_6.html#SEC69 +# http://www.fftw.org/faq/section2.html#singleprec +# http://www.fftw.org/fftw3_doc/Precision.html#Precision + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + + # build & install double precision + ./configure F77=gfortran --prefix=/usr \ + --enable-shared || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + make clean + + # build & install long double precission + ./configure F77=gfortran --prefix=/usr \ + --enable-long-double --enable-shared || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + make clean + + # build + install single precision + ./configure F77=gfortran --prefix=/usr \ + --enable-float --enable-shared || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + + # handle info files + rm -f $pkgdir/usr/share/info/dir + gzip $pkgdir/usr/share/info/* +} diff --git a/abs/extra/fftw/fftw.install b/abs/extra/fftw/fftw.install new file mode 100644 index 0000000..a3748aa --- /dev/null +++ b/abs/extra/fftw/fftw.install @@ -0,0 +1,22 @@ +info_dir=/usr/share/info +info_files=(fftw3.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + + + + diff --git a/abs/extra/frozen-bubble/PKGBUILD b/abs/extra/frozen-bubble/PKGBUILD new file mode 100644 index 0000000..ca48827 --- /dev/null +++ b/abs/extra/frozen-bubble/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Thomas Baechler +# Contributer: Brandon Niemczyk + +pkgname=frozen-bubble +pkgver=2.1.0 +pkgrel=2 +pkgdesc="A game in which you throw colorful bubbles and build groups to destroy the bubbles" +arch=(i686 x86_64) +url="http://www.frozen-bubble.org" +depends=('sdl_perl' 'sdl_mixer' 'perl-locale-gettext' 'sdl_pango') +makedepends=('imagemagick') +source=(http://www.frozen-bubble.org/data/${pkgname}-${pkgver}.tar.bz2 \ + frozen-bubble.desktop) +md5sums=('f5eb984897e1ccd52a0d8820d8359861' '3e0755836580e374e0911653f8cd33e2') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver}/gfx/balls + # Fix missing files for colourblind + for g in bubble-colourblind-?.gif; do + convert -depth 8 -scale 16x16 ${g} ${g/%.gif/-mini.png} + done + cd ../.. + make OPTIMIZE="${CFLAGS}" \ + CFLAGS="$(pkg-config glib-2.0 --cflags)" INSTALLDIRS=vendor \ + PREFIX=/usr || return 1 + + make DESTDIR=${startdir}/pkg PREFIX=/usr install || return 1 + install -D -m644 icons/frozen-bubble-icon-64x64.png ${startdir}/pkg/usr/share/pixmaps/frozen-bubble.png || return 1 + install -D -m644 ${startdir}/src/frozen-bubble.desktop ${startdir}/pkg/usr/share/applications/frozen-bubble.desktop || return 1 +} diff --git a/abs/extra/frozen-bubble/frozen-bubble.desktop b/abs/extra/frozen-bubble/frozen-bubble.desktop new file mode 100644 index 0000000..6e53e5d --- /dev/null +++ b/abs/extra/frozen-bubble/frozen-bubble.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Encoding=UTF-8 +Name=Frozen Bubble +Icon=frozen-bubble.png +Exec=frozen-bubble +Terminal=false +Categories=Game; diff --git a/abs/extra/fuppes-svn/PKGBUILD b/abs/extra/fuppes-svn/PKGBUILD new file mode 100644 index 0000000..67936c0 --- /dev/null +++ b/abs/extra/fuppes-svn/PKGBUILD @@ -0,0 +1,52 @@ +# Contributor: Andrew Krawchyk +# patch for svn r634: Ivan Yurasov + +pkgname=fuppes-svn +pkgver=636 +pkgrel=9 +pkgdesc="A free, multiplatform Universal Plug and Play A/V MediaServer" +arch=('i686' 'x86_64') +url="http://fuppes.ulrich-voelkel.de/" +license=('GPL2') +depends=('pcre' 'libxml2' 'sqlite3' 'gettext' 'taglib' 'imagemagick' 'ffmpeg' 'libmp4v2' 'lame' 'libvorbis' 'libmpcdec' 'flac' 'faad2' 'libmad') +makdepends=('pkgconfig' 'autoconf' 'subversion') +install=fuppes.install +source=(fuppes-r634-archlinux.patch fuppes.diff fuppes.cfg run fuppes.ch fuppes.lr) +md5sums=('5d9f6331cc91b64aab69449ce327b214' 'c495fa1bd9a870ae36820632434319ee' \ + 'b0cef07d8e60d01c8146a69870672e1f' '3850001378088e5efac60487e5550d54' \ + '3c355b860f1b0d273f5aa8b2bea1bde6') + +_svnmod="fuppes" +_svntrunk="https://fuppes.svn.sourceforge.net/svnroot/fuppes/trunk" + +build() +{ + cd ${startdir}/src + + msg "Getting sources..." + svn co ${_svntrunk} ${_svnmod} + msg "Done getting sources or failed to connect to server." + + cd ${_svnmod} + +# patch -Np0 -i ../fuppes-r634-archlinux.patch +# patch -Np0 -i ../fuppes.diff + autoreconf -vfi + + ./configure --prefix=/usr \ + --enable-video-transcoding \ + --disable-twolame || return 1 + + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + mkdir -p $startdir/pkg/etc/sv/fuppes/supervise + install -D -m755 $startdir/src/run $startdir/pkg/etc/sv/fuppes/ + mkdir -p $startdir/pkg/etc/fuppes + cp $startdir/src/fuppes.cfg $startdir/pkg/etc/fuppes + mkdir -p $startdir/pkg/etc/cron.hourly + mkdir -p $startdir/pkg/etc/logrotate.d/ + mkdir -p $startdir/pkg/etc/sv/fuppes/supervise + install -D -m755 $startdir/src/fuppes.ch $startdir/pkg/etc/cron.hourly + install -D -m755 $startdir/src/run $startdir/pkg/etc/sv/fuppes + install -D -m755 $startdir/src/fuppes.lr $startdir/pkg/etc/logrotate.d +} diff --git a/abs/extra/fuppes-svn/PKGBUILD.orig b/abs/extra/fuppes-svn/PKGBUILD.orig new file mode 100644 index 0000000..79d11e2 --- /dev/null +++ b/abs/extra/fuppes-svn/PKGBUILD.orig @@ -0,0 +1,52 @@ +# Contributor: Andrew Krawchyk +# patch for svn r634: Ivan Yurasov + +pkgname=fuppes-svn +pkgver=636 +pkgrel=9 +pkgdesc="A free, multiplatform Universal Plug and Play A/V MediaServer" +arch=('i686' 'x86_64') +url="http://fuppes.ulrich-voelkel.de/" +license=('GPL2') +depends=('pcre' 'libxml2' 'sqlite3' 'gettext' 'taglib' 'imagemagick' 'ffmpeg' 'libmp4v2' 'lame' 'libvorbis' 'libmpcdec' 'flac' 'faad2' 'libmad') +makdepends=('pkgconfig' 'autoconf' 'subversion') +install=fuppes.install +source=(fuppes-r634-archlinux.patch fuppes.diff fuppes.cfg run fuppes.ch fuppes.lr) +md5sums=('5d9f6331cc91b64aab69449ce327b214' 'c495fa1bd9a870ae36820632434319ee' \ + 'b0cef07d8e60d01c8146a69870672e1f' '3850001378088e5efac60487e5550d54' \ + '3c355b860f1b0d273f5aa8b2bea1bde6') + +_svnmod="fuppes" +_svntrunk="https://fuppes.svn.sourceforge.net/svnroot/fuppes/trunk" + +build() +{ + cd ${startdir}/src + + msg "Getting sources..." + svn co -r 636 ${_svntrunk} ${_svnmod} + msg "Done getting sources or failed to connect to server." + + cd ${_svnmod} + + patch -Np0 -i ../fuppes-r634-archlinux.patch + patch -Np0 -i ../fuppes.diff + autoreconf -vfi + + ./configure --prefix=/usr \ + --enable-video-transcoding \ + --disable-twolame || return 1 + + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + mkdir -p $startdir/pkg/etc/sv/fuppes/supervise + install -D -m755 $startdir/src/run $startdir/pkg/etc/sv/fuppes/ + mkdir -p $startdir/pkg/etc/fuppes + cp $startdir/src/fuppes.cfg $startdir/pkg/etc/fuppes + mkdir -p $startdir/pkg/etc/cron.hourly + mkdir -p $startdir/pkg/etc/logrotate.d/ + mkdir -p $startdir/pkg/etc/sv/fuppes/supervise + install -D -m755 $startdir/src/fuppes.ch $startdir/pkg/etc/cron.hourly + install -D -m755 $startdir/src/run $startdir/pkg/etc/sv/fuppes + install -D -m755 $startdir/src/fuppes.lr $startdir/pkg/etc/logrotate.d +} diff --git a/abs/extra/fuppes-svn/fuppes-r634-archlinux.patch b/abs/extra/fuppes-svn/fuppes-r634-archlinux.patch new file mode 100644 index 0000000..feaccfa --- /dev/null +++ b/abs/extra/fuppes-svn/fuppes-r634-archlinux.patch @@ -0,0 +1,93 @@ +Index: src/plugins/ffmpeg/ffmpeg.cpp +=================================================================== +--- src/plugins/ffmpeg/ffmpeg.cpp (revision 634) ++++ src/plugins/ffmpeg/ffmpeg.cpp (working copy) +@@ -2190,7 +2190,7 @@ + p=NULL; + for(p = av_codec_next(p); p != NULL; p = av_codec_next(p) ) { + #else +- for(p = first_avcodec; p != NULL; p = p->next) { ++ for(p = av_codec_next(NULL); p != NULL; p = p->next) { + #endif + + if((p2==NULL || strcmp(p->name, p2->name)<0) && +@@ -2269,7 +2269,7 @@ + } + avformat_opts = av_alloc_format_context(); + #ifdef HAVE_LIBSWSCALE +- sws_opts = sws_getContext(16,16,0, 16,16,0, sws_flags, NULL,NULL,NULL); ++ sws_opts = sws_getContext(16,16,(PixelFormat)0, 16,16,(PixelFormat)0, sws_flags, NULL,NULL,NULL); + #endif + + +Index: src/plugins/ffmpeg/ffmpeg.h +=================================================================== +--- src/plugins/ffmpeg/ffmpeg.h (revision 634) ++++ src/plugins/ffmpeg/ffmpeg.h (working copy) +@@ -38,7 +38,7 @@ + #include + #include + +-#if FFMPEG_VERSION >= 52 && !defined(OLD_INCLUDES_PATH) ++/* #if FFMPEG_VERSION >= 52 && !defined(OLD_INCLUDES_PATH) */ + #include + #include + #include +@@ -51,27 +51,27 @@ + #ifdef HAVE_AVSTRING_H + #include + #endif +-#else ++/* #else + #include + #include + #include +- #include ++ #include */ + + + #ifdef HAVE_LIBSWSCALE +- #include ++ #include + #endif + + #ifdef HAVE_AVSTRING_H +- #include ++ #include + #endif +-#endif ++/* #endif */ + + + #include + #include + #include +- //#include ++ //#include + + } + #endif // __cplusplus +Index: version.sh +=================================================================== +--- version.sh (revision 634) ++++ version.sh (working copy) +@@ -1,8 +1,15 @@ + #!/bin/sh + +-svn_revision=`cd "$1" && LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2` +-test $svn_revision || svn_revision=`cd "$1" && grep revision .svn/entries 2>/dev/null | cut -d '"' -f2` +-test $svn_revision || svn_revision=`cd "$1" && sed -n -e '/^dir$/{n;p;q}' .svn/entries 2>/dev/null` ++if [ "$1" == "" ] ++then ++DIR="." ++else ++DIR="$1" ++fi ++ ++svn_revision=`cd "$DIR" && LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2` ++test $svn_revision || svn_revision=`cd "$DIR" && grep revision .svn/entries 2>/dev/null | cut -d '"' -f2` ++test $svn_revision || svn_revision=`cd "$DIR" && sed -n -e '/^dir$/{n;p;q}' .svn/entries 2>/dev/null` + test $svn_revision || svn_revision=UNKNOWN + + NEW_REVISION="#define FUPPES_VERSION \"0.$svn_revision\"" + diff --git a/abs/extra/fuppes-svn/fuppes.cfg b/abs/extra/fuppes-svn/fuppes.cfg new file mode 100644 index 0000000..beb81cf --- /dev/null +++ b/abs/extra/fuppes-svn/fuppes.cfg @@ -0,0 +1,216 @@ + + + + + + /myth/tv + /myth/video + /myth/music + /myth/gallery + /myth/pretty + + + + 192.168.1.253 + + 81 + + + + + + + + UTF-8 + + true + true + true + + + + + false + + + + + + + + + 0 + + file + false + false + 4 + + + + AUDIO_ITEM + audio/mpeg + MP3 + + + AUDIO_ITEM + application/octet-stream + + mp3 + audio/mpeg + MP3 + chunked + vorbis + lame + 192 + 44100 + + + + AUDIO_ITEM + application/octet-stream + + mp3 + audio/mpeg + MP3 + chunked + musepack + lame + 192 + 44100 + + + + AUDIO_ITEM + audio/x-wav + + + AUDIO_ITEM + audio/x-flac + + mp3 + audio/mpeg + MP3 + chunked + flac + lame + 192 + 44100 + + + + AUDIO_ITEM + audio/x-ms-wma + WMAFULL + + + + jpeg + IMAGE_ITEM + image/jpeg + + + png + image/png + 0 + 0 + + false + + false + + + + + IMAGE_ITEM + image/bmp + + + IMAGE_ITEM + image/png + + + IMAGE_ITEM + image/gif + + + + mpeg + VIDEO_ITEM + video/mpeg + + + VIDEO_ITEM + video/mp4 + + + VIDEO_ITEM + video/x-msvideo + + + VIDEO_ITEM + video/x-ms-wmv + + + VIDEO_ITEM + video/x-ms-vob + + + VIDEO_ITEM + video/x-extension-vdr + + vob + video/x-ms-vob + + + + VIDEO_ITEM + application/x-flash-video + + + VIDEO_ITEM + video/x-ms-asf + + + + PLAYLIST + audio/x-scpls + + + PLAYLIST + audio/x-mpegurl + + + + + + + + UPnP/1.0 DLNADOC/1.00 + PLAYSTATION3 + + true + 50 + + + AUDIO_ITEM_MUSIC_TRACK + + stream + + + + + + Xbox/2.0.\d+.\d+ UPnP/1.0 Xbox/2.0.\d+.\d+ + Xenon + true + true + + %s %v : 1 : Windows Media Connect + Windows Media Connect compatible (%s) + 2.0 + + + + diff --git a/abs/extra/fuppes-svn/fuppes.ch b/abs/extra/fuppes-svn/fuppes.ch new file mode 100644 index 0000000..60960b5 --- /dev/null +++ b/abs/extra/fuppes-svn/fuppes.ch @@ -0,0 +1,2 @@ +#!/bin/bash +/usr/bin/wget -O /dev/null -q http://localhost:81/presentation/options.html?db=update &> /dev/null diff --git a/abs/extra/fuppes-svn/fuppes.diff b/abs/extra/fuppes-svn/fuppes.diff new file mode 100644 index 0000000..9b7b6a8 --- /dev/null +++ b/abs/extra/fuppes-svn/fuppes.diff @@ -0,0 +1,25 @@ +--- src/plugins/ffmpeg/ffmpeg.cpp.orig 2009-05-29 20:12:09.000000000 +0000 ++++ src/plugins/ffmpeg/ffmpeg.cpp 2009-05-29 20:10:01.000000000 +0000 +@@ -1021,19 +1021,9 @@ + if (subtitle_to_free) { + if (subtitle_to_free->rects != NULL) { + for (i = 0; i < subtitle_to_free->num_rects; i++) { +- +-#ifndef LIBAVCODEC_VERSION_MINOR +-#define LIBAVCODEC_VERSION_MINOR 0 +-#endif +- +-#if LIBAVCODEC_VERSION_MINOR >= 11 +- av_freep(subtitle_to_free->rects[i]->pict.data[0]); +- av_freep(subtitle_to_free->rects[i]->pict.data[1]); +- av_freep(subtitle_to_free->rects[i]); +-#else +- av_free(subtitle_to_free->rects[i].bitmap); +- av_free(subtitle_to_free->rects[i].rgba_palette); +-#endif ++ av_freep(&subtitle_to_free->rects[i]->pict.data[0]); ++ av_freep(&subtitle_to_free->rects[i]->pict.data[1]); ++ av_freep(&subtitle_to_free->rects[i]); + } + av_freep(&subtitle_to_free->rects); + } diff --git a/abs/extra/fuppes-svn/fuppes.install b/abs/extra/fuppes-svn/fuppes.install new file mode 100644 index 0000000..d0099e3 --- /dev/null +++ b/abs/extra/fuppes-svn/fuppes.install @@ -0,0 +1,20 @@ +# arg 1: the new package version +post_install() { + sv stop mythbackend + mv /etc/sv/mythbackend/run /tmp + sed 's/logfile/noupnp\ --logfile/' /etc/sv/mythbackend/run + chmod 755 /etc/sv/mythbackend/run + sv start mythbackend + add_service.sh fuppes + sv start fuppes +} + +post_remove() { + sv stop fuppes + remove_service.sh fuppes + mv /etc/sv/mythbackend/run /tmp/run + sv stop mythbackend + sed 's/--noupnp\ --logfile/--logfile/' /etc/sv/mythbackend/run + chmod 755 /etc/sv/mythbackend/run + sv start mythbackend +} diff --git a/abs/extra/fuppes-svn/fuppes.lr b/abs/extra/fuppes-svn/fuppes.lr new file mode 100644 index 0000000..ec2f88f --- /dev/null +++ b/abs/extra/fuppes-svn/fuppes.lr @@ -0,0 +1,9 @@ +/var/log/fuppes/fuppes.log { + copytruncate + daily + size 10M + missingok + rotate 7 + compress + notifempty +} diff --git a/abs/extra/fuppes-svn/run b/abs/extra/fuppes-svn/run new file mode 100755 index 0000000..dc69879 --- /dev/null +++ b/abs/extra/fuppes-svn/run @@ -0,0 +1,2 @@ +#!/bin/bash +exec su mythtv -c "/usr/bin/fuppes --config-dir /etc/fuppes --database-file /data/srv/fuppes/fuppes.db --temp-dir /myth/tmp" diff --git a/abs/extra/gconf/01_xml-gettext-domain.patch b/abs/extra/gconf/01_xml-gettext-domain.patch new file mode 100644 index 0000000..7491ca8 --- /dev/null +++ b/abs/extra/gconf/01_xml-gettext-domain.patch @@ -0,0 +1,299 @@ +# Description: Support calling gettext at runtime and putting the gettext domain into the .schemas file instead of replicating translations in /usr/share/gconf/schemas/*.schemas *and* /var/lib/gconf/defaults/%gconf-tree-$LANG.xml. This saves in the order of 90 MB uncompressed/10 MB compressed on hard disks. +# Ubuntu: https://bugs.launchpad.net/bugs/123025 +# Upstream: http://bugzilla.gnome.org/show_bug.cgi?id=568845 +diff -Nur -x '*.orig' -x '*~' gconf-2.25.0/backends/markup-tree.c gconf-2.25.0.new/backends/markup-tree.c +--- gconf-2.25.0/backends/markup-tree.c 2009-01-10 05:55:08.000000000 +0100 ++++ gconf-2.25.0.new/backends/markup-tree.c 2009-01-23 12:11:48.000000000 +0100 +@@ -52,6 +52,7 @@ + char *schema_name; + char *mod_user; + GTime mod_time; ++ char *gettext_domain; + }; + + static LocalSchemaInfo* local_schema_info_new (void); +@@ -1351,6 +1352,7 @@ + gconf_value_free (entry->value); + g_free (entry->schema_name); + g_free (entry->mod_user); ++ g_free (entry->gettext_domain); + + g_slist_foreach (entry->local_schemas, + (GFunc) local_schema_info_free, +@@ -1593,6 +1595,8 @@ + gconf_schema_get_type (schema)); + gconf_schema_set_owner (current_schema, + gconf_schema_get_owner (schema)); ++ gconf_schema_set_gettext_domain (current_schema, ++ gconf_schema_get_gettext_domain (schema)); + } + + /* Update mod time */ +@@ -1805,6 +1809,8 @@ + else if (c_local_schema && c_local_schema->long_desc) + gconf_schema_set_long_desc (schema, c_local_schema->long_desc); + ++ gconf_schema_set_gettext_domain (schema, entry->gettext_domain); ++ + return retval; + } + } +@@ -2339,8 +2345,9 @@ + const char *ltype; + const char *list_type; + const char *owner; ++ + GConfValueType vtype; +- const char *dummy1, *dummy2, *dummy3, *dummy4; ++ const char *dummy1, *dummy2, *dummy3, *dummy4, *dummy5; + + #if 0 + g_assert (ELEMENT_IS ("entry") || +@@ -2377,6 +2384,7 @@ + "muser", &dummy2, + "mtime", &dummy3, + "schema", &dummy4, ++ "gettext_domain", &dummy5, + + NULL)) + return; +@@ -2682,6 +2690,7 @@ + const char *mtime; + const char *schema; + const char *type; ++ const char *gettext_domain; + const char *dummy1, *dummy2, *dummy3, *dummy4; + const char *dummy5, *dummy6, *dummy7; + GConfValue *value; +@@ -2692,6 +2701,7 @@ + mtime = NULL; + schema = NULL; + type = NULL; ++ gettext_domain = NULL; + + if (!locate_attributes (context, element_name, attribute_names, attribute_values, + error, +@@ -2700,6 +2710,7 @@ + "mtime", &mtime, + "schema", &schema, + "type", &type, ++ "gettext_domain", &gettext_domain, + + /* These are allowed but we don't use them until + * parse_value_element +@@ -2767,6 +2778,9 @@ + */ + if (schema) + entry->schema_name = g_strdup (schema); ++ ++ if (gettext_domain) ++ entry->gettext_domain = g_strdup (gettext_domain); + } + else + { +@@ -3705,6 +3719,7 @@ + GConfSchema *schema; + GConfValueType stype; + const char *owner; ++ const char *gettext_domain; + + schema = gconf_value_get_schema (value); + +@@ -3730,6 +3745,23 @@ + + g_free (s); + } ++ ++ gettext_domain = gconf_schema_get_gettext_domain (schema); ++ ++ if (gettext_domain) ++ { ++ char *s; ++ ++ s = g_markup_escape_text (gettext_domain, -1); ++ ++ if (fprintf (f, " gettext_domain=\"%s\"", s) < 0) ++ { ++ g_free (s); ++ return FALSE; ++ } ++ ++ g_free (s); ++ } + + if (stype == GCONF_VALUE_LIST) + { +diff -Nur -x '*.orig' -x '*~' gconf-2.25.0/gconf/gconf-schema.c gconf-2.25.0.new/gconf/gconf-schema.c +--- gconf-2.25.0/gconf/gconf-schema.c 2009-01-10 05:55:07.000000000 +0100 ++++ gconf-2.25.0.new/gconf/gconf-schema.c 2009-01-23 12:11:48.000000000 +0100 +@@ -35,6 +35,7 @@ + gchar* owner; /* Name of creating application */ + gchar* short_desc; /* 40 char or less description, no newlines */ + gchar* long_desc; /* could be a paragraph or so */ ++ gchar* gettext_domain; /* description gettext domain */ + GConfValue* default_value; /* Default value of the key */ + } GConfRealSchema; + +@@ -63,6 +64,7 @@ + g_free (real->locale); + g_free (real->short_desc); + g_free (real->long_desc); ++ g_free (real->gettext_domain); + g_free (real->owner); + + if (real->default_value) +@@ -91,6 +93,8 @@ + + dest->long_desc = g_strdup (real->long_desc); + ++ dest->gettext_domain = g_strdup (real->gettext_domain); ++ + dest->owner = g_strdup (real->owner); + + dest->default_value = real->default_value ? gconf_value_copy (real->default_value) : NULL; +@@ -136,6 +140,20 @@ + REAL_SCHEMA (sc)->locale = NULL; + } + ++void ++gconf_schema_set_gettext_domain (GConfSchema* sc, const gchar* domain) ++{ ++ g_return_if_fail (domain == NULL || g_utf8_validate (domain, -1, NULL)); ++ ++ if (REAL_SCHEMA (sc)->gettext_domain) ++ g_free (REAL_SCHEMA (sc)->gettext_domain); ++ ++ if (domain) ++ REAL_SCHEMA (sc)->gettext_domain = g_strdup (domain); ++ else ++ REAL_SCHEMA (sc)->gettext_domain = NULL; ++} ++ + void + gconf_schema_set_short_desc (GConfSchema* sc, const gchar* desc) + { +@@ -228,6 +246,14 @@ + return FALSE; + } + ++ if (real->gettext_domain && !g_utf8_validate (real->gettext_domain, -1, NULL)) ++ { ++ g_set_error (err, GCONF_ERROR, ++ GCONF_ERROR_FAILED, ++ _("Schema contains invalid UTF-8")); ++ return FALSE; ++ } ++ + if (real->owner && !g_utf8_validate (real->owner, -1, NULL)) + { + g_set_error (err, GCONF_ERROR, +@@ -299,11 +325,22 @@ + } + + const char* ++gconf_schema_get_gettext_domain (const GConfSchema *schema) ++{ ++ g_return_val_if_fail (schema != NULL, NULL); ++ ++ return REAL_SCHEMA (schema)->gettext_domain; ++} ++ ++const char* + gconf_schema_get_short_desc (const GConfSchema *schema) + { + g_return_val_if_fail (schema != NULL, NULL); + +- return REAL_SCHEMA (schema)->short_desc; ++ if (REAL_SCHEMA (schema)->gettext_domain) ++ return g_dgettext(REAL_SCHEMA (schema)->gettext_domain, REAL_SCHEMA (schema)->short_desc); ++ else ++ return REAL_SCHEMA (schema)->short_desc; + } + + const char* +@@ -311,7 +348,10 @@ + { + g_return_val_if_fail (schema != NULL, NULL); + +- return REAL_SCHEMA (schema)->long_desc; ++ if (REAL_SCHEMA (schema)->gettext_domain) ++ return dgettext(REAL_SCHEMA (schema)->gettext_domain, REAL_SCHEMA (schema)->long_desc); ++ else ++ return REAL_SCHEMA (schema)->long_desc; + } + + const char* +diff -Nur -x '*.orig' -x '*~' gconf-2.25.0/gconf/gconf-schema.h gconf-2.25.0.new/gconf/gconf-schema.h +--- gconf-2.25.0/gconf/gconf-schema.h 2009-01-10 05:55:07.000000000 +0100 ++++ gconf-2.25.0.new/gconf/gconf-schema.h 2009-01-23 12:11:48.000000000 +0100 +@@ -48,6 +48,8 @@ + GConfValueType type); + void gconf_schema_set_locale (GConfSchema *sc, + const gchar *locale); ++void gconf_schema_set_gettext_domain (GConfSchema *sc, ++ const gchar *domain); + void gconf_schema_set_short_desc (GConfSchema *sc, + const gchar *desc); + void gconf_schema_set_long_desc (GConfSchema *sc, +@@ -65,6 +67,7 @@ + GConfValueType gconf_schema_get_car_type (const GConfSchema *schema); + GConfValueType gconf_schema_get_cdr_type (const GConfSchema *schema); + const char* gconf_schema_get_locale (const GConfSchema *schema); ++const char* gconf_schema_get_gettext_domain(const GConfSchema *schema); + const char* gconf_schema_get_short_desc (const GConfSchema *schema); + const char* gconf_schema_get_long_desc (const GConfSchema *schema); + const char* gconf_schema_get_owner (const GConfSchema *schema); +diff -Nur -x '*.orig' -x '*~' gconf-2.25.0/gconf/gconftool.c gconf-2.25.0.new/gconf/gconftool.c +--- gconf-2.25.0/gconf/gconftool.c 2009-01-10 05:55:07.000000000 +0100 ++++ gconf-2.25.0.new/gconf/gconftool.c 2009-01-23 12:11:48.000000000 +0100 +@@ -3293,6 +3293,7 @@ + GConfValueType cdr_type; + GConfValue* global_default; + GHashTable* hash; ++ gchar* gettext_domain; + }; + + static int +@@ -3545,6 +3546,15 @@ + else + g_printerr (_("WARNING: empty node")); + } ++ else if (strcmp((char *)iter->name, "gettext_domain") == 0) ++ { ++ tmp = (char *)xmlNodeGetContent(iter); ++ if (tmp) ++ { ++ info->gettext_domain = g_strdup(tmp); ++ xmlFree(tmp); ++ } ++ } + else + g_printerr (_("WARNING: node <%s> not understood below \n"), + iter->name); +@@ -3634,6 +3644,9 @@ + if (info->owner != NULL) + gconf_schema_set_owner(schema, info->owner); + ++ if (info->gettext_domain != NULL) ++ gconf_schema_set_gettext_domain(schema, info->gettext_domain); ++ + xmlFree(name); + + /* Locale-specific info */ +@@ -3763,6 +3776,7 @@ + info.apply_to = NULL; + info.owner = NULL; + info.global_default = NULL; ++ info.gettext_domain = NULL; + info.hash = g_hash_table_new(g_str_hash, g_str_equal); + + extract_global_info(node, &info); +@@ -3799,6 +3813,8 @@ + ; /* nothing */ + else if (strcmp((char *)iter->name, "applyto") == 0) + ; /* nothing */ ++ else if (strcmp((char *)iter->name, "gettext_domain") == 0) ++ ; /* nothing */ + else if (strcmp((char *)iter->name, "locale") == 0) + { + process_locale_info(iter, &info); diff --git a/abs/extra/gconf/05_from_vuntz_gconf2-pk-default-path.patch b/abs/extra/gconf/05_from_vuntz_gconf2-pk-default-path.patch new file mode 100644 index 0000000..c303e19 --- /dev/null +++ b/abs/extra/gconf/05_from_vuntz_gconf2-pk-default-path.patch @@ -0,0 +1,12 @@ +diff -Nur -x '*.orig' -x '*~' gconf-2.25.2/defaults/gconf-defaults.c gconf-2.25.2.new/defaults/gconf-defaults.c +--- gconf-2.25.2/defaults/gconf-defaults.c 2009-02-17 01:15:19.000000000 +0100 ++++ gconf-2.25.2.new/defaults/gconf-defaults.c 2009-02-17 11:12:39.000000000 +0100 +@@ -507,7 +507,7 @@ + else { + annotation_key = "org.gnome.gconf.defaults.set-system.prefix"; + default_action = "org.gnome.gconf.defaults.set-system"; +- dest_address = "xml:merged:" SYSGCONFDIR "/gconf.xml.system"; ++ dest_address = "xml:merged:" SYSGCONFDIR "/gconf.xml.defaults"; + } + + for (i = 0; includes[i]; i++) { diff --git a/abs/extra/gconf/PKGBUILD b/abs/extra/gconf/PKGBUILD new file mode 100644 index 0000000..053e26a --- /dev/null +++ b/abs/extra/gconf/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 33882 2009-04-05 19:42:30Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gconf +pkgver=2.26.0 +pkgrel=3 +pkgdesc="A configuration database system" +arch=(i686 x86_64) +license=('LGPL') +depends=('orbit2>=2.14.17' 'gtk2>=2.16.0' 'libxml2>=2.7.3' 'policykit>=0.9' 'libldap>=2.3.43') +makedepends=('pkgconfig' 'intltool>=0.40.6' 'gtk-doc>=1.10') +options=('!libtool') +install=gconf.install +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/GConf/2.26/GConf-${pkgver}.tar.bz2 + gconf-merge-schema + gconfpkg + gconf-reload.patch + xml-gettext-domain.patch + 05_from_vuntz_gconf2-pk-default-path.patch) +md5sums=('b010f0de356ea093c6a73778b13de956' + '240b473fa17b748fc9020caf372d936c' + 'b745f04b4121d8724c002b14a4c110b6' + 'cfcc8e15be7b8a48de4aa34336ff6090' + '1c8a0eece8202c4c2fbba596fe0d9c67' + 'd9a02aee25ec04f2340f4e98963aabb0') + +build() { + cd "${srcdir}/GConf-${pkgver}" + # Patch from fedora - reloads gconf after installing schemas + patch -Np1 -i "${srcdir}/gconf-reload.patch" || return 1 + # http://bugzilla.gnome.org/show_bug.cgi?id=568845 + patch -Np1 -i "${srcdir}/xml-gettext-domain.patch" || return 1 + # Patch from Ubuntu: change default path + patch -Np1 -i "${srcdir}/05_from_vuntz_gconf2-pk-default-path.patch" || return 1 + libtoolize --force --copy || return 1 + aclocal || return 1 + autoconf || return 1 + automake --add-missing || return 1 + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --libexecdir=/usr/lib/GConf \ + --disable-static --enable-defaults-service || return 1 + make pkglibdir=/usr/lib/GConf || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/etc/gconf/gconf.xml.system" || return 1 + install -m755 "${srcdir}/gconf-merge-schema" "${pkgdir}/usr/bin/" || return 1 + install -d -m755 "${pkgdir}/usr/sbin" + install -m755 "${srcdir}/gconfpkg" "${pkgdir}/usr/sbin/" || return 1 +} diff --git a/abs/extra/gconf/gconf-merge-schema b/abs/extra/gconf/gconf-merge-schema new file mode 100755 index 0000000..992c162 --- /dev/null +++ b/abs/extra/gconf/gconf-merge-schema @@ -0,0 +1,34 @@ +#!/bin/bash +if [ ! "$1" -a ! "$2" ]; then + echo "Usage: $0 output.schemas [--domain gettextdomain] file1.schemas [file2.schemas [...]]" + exit 1 +fi + +OUTFILE="$1" +DOMAIN="" +shift + +if [ "$1" = "--domain" ]; then + shift + DOMAIN=$1 + shift +fi + +echo '' > "$OUTFILE" +echo '' >> "$OUTFILE" + +while [ "$1" ]; do + if [ -f "$1" ]; then + sed -e '/||g' \ + -e 's|||g' \ + -e 's|||g' \ + -e 's|||g' "$1" >> "$OUTFILE" + fi + shift +done + +echo '' >> "$OUTFILE" +if [ "$DOMAIN" != "" ]; then + sed -ri "s/^([[:space:]]*)()/\1$DOMAIN<\/gettext_domain>\n\1\2/; /^[[:space:]]*[[:space:]]*\$/ d; /^$/d; s/<\/schema>$/&\n/" "$OUTFILE" +fi diff --git a/abs/extra/gconf/gconf-reload.patch b/abs/extra/gconf/gconf-reload.patch new file mode 100644 index 0000000..910f0da --- /dev/null +++ b/abs/extra/gconf/gconf-reload.patch @@ -0,0 +1,20 @@ +--- GConf-2.16.0/gconf/gconftool.c.orig 2006-10-14 17:37:14.000000000 +0000 ++++ GConf-2.16.0/gconf/gconftool.c 2006-10-14 17:39:27.000000000 +0000 +@@ -963,6 +963,8 @@ main (int argc, char** argv) + + gconf_engine_unref (conf); + ++ g_spawn_command_line_sync ("/usr/bin/killall -q -TERM " GCONF_SERVERDIR "/" GCONFD, NULL, NULL, NULL, NULL); ++ + return retval; + } + +@@ -975,6 +977,8 @@ main (int argc, char** argv) + + gconf_engine_unref (conf); + ++ g_spawn_command_line_sync ("/usr/bin/killall -q -TERM " GCONF_SERVERDIR "/" GCONFD, NULL, NULL, NULL, NULL); ++ + return retval; + } + diff --git a/abs/extra/gconf/gconf.install b/abs/extra/gconf/gconf.install new file mode 100644 index 0000000..4e792c4 --- /dev/null +++ b/abs/extra/gconf/gconf.install @@ -0,0 +1,26 @@ +post_install() { + ldconfig -r . + chmod 755 etc/gconf/gconf.xml.system +} + +post_upgrade() { + ldconfig -r . + if [ `vercmp $2 2.18.0.1-2` -lt 0 ]; then + echo "Regenerating GConf database... " + # Move from /opt/gnome to /usr + ldconfig -r . + export GCONF_CONFIG_SOURCE=`usr/bin/gconftool-2 --get-default-source` + find /opt/gnome/{etc,share}/gconf/schemas -name "*.schemas" | xargs \ + usr/bin/gconftool-2 --makefile-install-rule > /dev/null + if [ -f opt/gnome/etc/gconf/panel-default-setup.entries ]; then + usr/bin/gconftool-2 --direct --load opt/gnome/etc/gconf/panel-default-setup.entries > /dev/null + fi + echo "done." + fi + chmod 755 etc/gconf/gconf.xml.system + + PID=`pidof gconfd-2` + if [ ! -z "${PID}" ]; then + kill ${PID} + fi +} diff --git a/abs/extra/gconf/gconfpkg b/abs/extra/gconf/gconfpkg new file mode 100755 index 0000000..72021e4 --- /dev/null +++ b/abs/extra/gconf/gconfpkg @@ -0,0 +1,50 @@ +#!/bin/sh + +usage() { +cat << _EOF +Usage: + gconfpkg [OPTION] [PACKAGE] + + Help Options: + -?, --help Show help options + + Application Options: + --install Install schemas for a given package + --uninstall Uninstall schemas for a given package + +_EOF +} + +install() { + GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` \ + /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/${pkgname}.schemas >/dev/null +} + +uninstall() { + if [ -f /usr/share/gconf/schemas/${pkgname}.schemas ]; then + schemas=/usr/share/gconf/schemas/${pkgname}.schemas + elif [ -f /opt/gnome/share/gconf/schemas/${pkgname}.schemas ]; then + schemas=/opt/gnome/share/gconf/schemas/${pkgname}.schemas + else + schemas=`pacman -Ql ${pkgname} | grep 'gconf/schemas/.*schemas$' | awk '{ print $2 }'` + fi + GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` \ + /usr/bin/gconftool-2 --makefile-uninstall-rule ${schemas} >/dev/null +} + +if [ -z "$2" ]; then + usage +else + pkgname="$2" + case "$1" in + --install) + install + ;; + --uninstall) + uninstall + ;; + *) + usage + ;; + esac +fi diff --git a/abs/extra/gconf/xml-gettext-domain.patch b/abs/extra/gconf/xml-gettext-domain.patch new file mode 100644 index 0000000..1c5a78e --- /dev/null +++ b/abs/extra/gconf/xml-gettext-domain.patch @@ -0,0 +1,367 @@ +diff -ru GConf-2.26.0/backends/markup-tree.c GConf-2.26.0.patched/backends/markup-tree.c +--- GConf-2.26.0/backends/markup-tree.c 2009-02-16 18:17:43.000000000 +0000 ++++ GConf-2.26.0.patched/backends/markup-tree.c 2009-04-05 19:36:42.000000000 +0000 +@@ -52,6 +52,7 @@ + char *schema_name; + char *mod_user; + GTime mod_time; ++ char *gettext_domain; + }; + + static LocalSchemaInfo* local_schema_info_new (void); +@@ -1351,6 +1352,7 @@ + gconf_value_free (entry->value); + g_free (entry->schema_name); + g_free (entry->mod_user); ++ g_free (entry->gettext_domain); + + g_slist_foreach (entry->local_schemas, + (GFunc) local_schema_info_free, +@@ -1593,6 +1595,8 @@ + gconf_schema_get_type (schema)); + gconf_schema_set_owner (current_schema, + gconf_schema_get_owner (schema)); ++ gconf_schema_set_gettext_domain (current_schema, ++ gconf_schema_get_gettext_domain (schema)); + } + + /* Update mod time */ +@@ -1805,6 +1809,8 @@ + else if (c_local_schema && c_local_schema->long_desc) + gconf_schema_set_long_desc (schema, c_local_schema->long_desc); + ++ gconf_schema_set_gettext_domain (schema, entry->gettext_domain); ++ + return retval; + } + } +@@ -2339,8 +2345,9 @@ + const char *ltype; + const char *list_type; + const char *owner; ++ + GConfValueType vtype; +- const char *dummy1, *dummy2, *dummy3, *dummy4; ++ const char *dummy1, *dummy2, *dummy3, *dummy4, *dummy5; + + #if 0 + g_assert (ELEMENT_IS ("entry") || +@@ -2377,6 +2384,7 @@ + "muser", &dummy2, + "mtime", &dummy3, + "schema", &dummy4, ++ "gettext_domain", &dummy5, + + NULL)) + return; +@@ -2683,6 +2691,7 @@ + const char *mtime; + const char *schema; + const char *type; ++ const char *gettext_domain; + const char *dummy1, *dummy2, *dummy3, *dummy4; + const char *dummy5, *dummy6, *dummy7; + GConfValue *value; +@@ -2693,6 +2702,7 @@ + mtime = NULL; + schema = NULL; + type = NULL; ++ gettext_domain = NULL; + + if (!locate_attributes (context, element_name, attribute_names, attribute_values, + error, +@@ -2701,6 +2711,7 @@ + "mtime", &mtime, + "schema", &schema, + "type", &type, ++ "gettext_domain", &gettext_domain, + + /* These are allowed but we don't use them until + * parse_value_element +@@ -2768,6 +2779,9 @@ + */ + if (schema) + entry->schema_name = g_strdup (schema); ++ ++ if (gettext_domain) ++ entry->gettext_domain = g_strdup (gettext_domain); + } + else + { +@@ -3716,6 +3730,7 @@ + GConfSchema *schema; + GConfValueType stype; + const char *owner; ++ const char *gettext_domain; + + schema = gconf_value_get_schema (value); + +@@ -3741,6 +3756,23 @@ + + g_free (s); + } ++ ++ gettext_domain = gconf_schema_get_gettext_domain (schema); ++ ++ if (gettext_domain) ++ { ++ char *s; ++ ++ s = g_markup_escape_text (gettext_domain, -1); ++ ++ if (fprintf (f, " gettext_domain=\"%s\"", s) < 0) ++ { ++ g_free (s); ++ return FALSE; ++ } ++ ++ g_free (s); ++ } + + if (stype == GCONF_VALUE_LIST) + { +Only in GConf-2.26.0.patched/backends: markup-tree.c.orig +diff -ru GConf-2.26.0/doc/gconf-1.0.dtd GConf-2.26.0.patched/doc/gconf-1.0.dtd +--- GConf-2.26.0/doc/gconf-1.0.dtd 2008-05-09 14:29:51.000000000 +0000 ++++ GConf-2.26.0.patched/doc/gconf-1.0.dtd 2009-04-05 19:36:42.000000000 +0000 +@@ -7,7 +7,7 @@ + +- ++ + + + +diff -ru GConf-2.26.0/gconf/GConfX.idl GConf-2.26.0.patched/gconf/GConfX.idl +--- GConf-2.26.0/gconf/GConfX.idl 2008-05-09 14:29:51.000000000 +0000 ++++ GConf-2.26.0.patched/gconf/GConfX.idl 2009-04-05 19:36:46.000000000 +0000 +@@ -16,6 +16,7 @@ + string short_desc; + string long_desc; + string owner; ++ string gettext_domain; + // Work around lack of recursive data types + string encoded_default_value; + }; +diff -ru GConf-2.26.0/gconf/gconf-internals.c GConf-2.26.0.patched/gconf/gconf-internals.c +--- GConf-2.26.0/gconf/gconf-internals.c 2009-03-17 02:47:13.000000000 +0000 ++++ GConf-2.26.0.patched/gconf/gconf-internals.c 2009-04-05 19:36:46.000000000 +0000 +@@ -513,6 +513,7 @@ + cs->short_desc = CORBA_string_dup (gconf_schema_get_short_desc (sc) ? gconf_schema_get_short_desc (sc) : ""); + cs->long_desc = CORBA_string_dup (gconf_schema_get_long_desc (sc) ? gconf_schema_get_long_desc (sc) : ""); + cs->owner = CORBA_string_dup (gconf_schema_get_owner (sc) ? gconf_schema_get_owner (sc) : ""); ++ cs->gettext_domain = CORBA_string_dup (gconf_schema_get_gettext_domain (sc) ? gconf_schema_get_gettext_domain (sc) : ""); + + { + gchar* encoded; +@@ -600,6 +601,14 @@ + gconf_schema_set_owner(sc, cs->owner); + } + ++ if (*cs->gettext_domain != '\0') ++ { ++ if (!g_utf8_validate (cs->gettext_domain, -1, NULL)) ++ gconf_log (GCL_ERR, _("Invalid UTF-8 in gettext domain for schema")); ++ else ++ gconf_schema_set_gettext_domain(sc, cs->gettext_domain); ++ } ++ + { + GConfValue* val; + +diff -ru GConf-2.26.0/gconf/gconf-schema.c GConf-2.26.0.patched/gconf/gconf-schema.c +--- GConf-2.26.0/gconf/gconf-schema.c 2008-10-09 17:51:31.000000000 +0000 ++++ GConf-2.26.0.patched/gconf/gconf-schema.c 2009-04-05 19:36:42.000000000 +0000 +@@ -32,9 +32,10 @@ + GConfValueType car_type; /* Pair car type of the described entry */ + GConfValueType cdr_type; /* Pair cdr type of the described entry */ + gchar* locale; /* Schema locale */ +- gchar* owner; /* Name of creating application */ ++ const gchar* owner; /* Name of creating application */ + gchar* short_desc; /* 40 char or less description, no newlines */ + gchar* long_desc; /* could be a paragraph or so */ ++ const gchar* gettext_domain; /* description gettext domain */ + GConfValue* default_value; /* Default value of the key */ + } GConfRealSchema; + +@@ -63,7 +64,6 @@ + g_free (real->locale); + g_free (real->short_desc); + g_free (real->long_desc); +- g_free (real->owner); + + if (real->default_value) + gconf_value_free (real->default_value); +@@ -91,7 +91,9 @@ + + dest->long_desc = g_strdup (real->long_desc); + +- dest->owner = g_strdup (real->owner); ++ dest->gettext_domain = real->gettext_domain; ++ ++ dest->owner = real->owner; + + dest->default_value = real->default_value ? gconf_value_copy (real->default_value) : NULL; + +@@ -136,6 +138,17 @@ + REAL_SCHEMA (sc)->locale = NULL; + } + ++void ++gconf_schema_set_gettext_domain (GConfSchema* sc, const gchar* domain) ++{ ++ g_return_if_fail (domain == NULL || g_utf8_validate (domain, -1, NULL)); ++ ++ if (domain) ++ REAL_SCHEMA (sc)->gettext_domain = g_intern_string (domain); ++ else ++ REAL_SCHEMA (sc)->gettext_domain = NULL; ++} ++ + void + gconf_schema_set_short_desc (GConfSchema* sc, const gchar* desc) + { +@@ -169,11 +182,8 @@ + { + g_return_if_fail (owner == NULL || g_utf8_validate (owner, -1, NULL)); + +- if (REAL_SCHEMA (sc)->owner) +- g_free (REAL_SCHEMA (sc)->owner); +- + if (owner) +- REAL_SCHEMA (sc)->owner = g_strdup (owner); ++ REAL_SCHEMA (sc)->owner = g_intern_string (owner); + else + REAL_SCHEMA (sc)->owner = NULL; + } +@@ -228,6 +238,14 @@ + return FALSE; + } + ++ if (real->gettext_domain && !g_utf8_validate (real->gettext_domain, -1, NULL)) ++ { ++ g_set_error (err, GCONF_ERROR, ++ GCONF_ERROR_FAILED, ++ _("Schema contains invalid UTF-8")); ++ return FALSE; ++ } ++ + if (real->owner && !g_utf8_validate (real->owner, -1, NULL)) + { + g_set_error (err, GCONF_ERROR, +@@ -299,11 +317,29 @@ + } + + const char* ++gconf_schema_get_gettext_domain (const GConfSchema *schema) ++{ ++ g_return_val_if_fail (schema != NULL, NULL); ++ ++ return REAL_SCHEMA (schema)->gettext_domain; ++} ++ ++static inline const char * ++schema_translate (const GConfSchema *schema, ++ const char *string) ++{ ++ if (REAL_SCHEMA (schema)->gettext_domain) ++ return g_dgettext(REAL_SCHEMA (schema)->gettext_domain, string); ++ else ++ return string; ++} ++ ++const char* + gconf_schema_get_short_desc (const GConfSchema *schema) + { + g_return_val_if_fail (schema != NULL, NULL); + +- return REAL_SCHEMA (schema)->short_desc; ++ return schema_translate (schema, REAL_SCHEMA (schema)->short_desc); + } + + const char* +@@ -311,7 +347,7 @@ + { + g_return_val_if_fail (schema != NULL, NULL); + +- return REAL_SCHEMA (schema)->long_desc; ++ return schema_translate (schema, REAL_SCHEMA (schema)->long_desc); + } + + const char* +diff -ru GConf-2.26.0/gconf/gconf-schema.h GConf-2.26.0.patched/gconf/gconf-schema.h +--- GConf-2.26.0/gconf/gconf-schema.h 2008-10-09 17:51:29.000000000 +0000 ++++ GConf-2.26.0.patched/gconf/gconf-schema.h 2009-04-05 19:36:42.000000000 +0000 +@@ -48,6 +48,8 @@ + GConfValueType type); + void gconf_schema_set_locale (GConfSchema *sc, + const gchar *locale); ++void gconf_schema_set_gettext_domain (GConfSchema *sc, ++ const gchar *domain); + void gconf_schema_set_short_desc (GConfSchema *sc, + const gchar *desc); + void gconf_schema_set_long_desc (GConfSchema *sc, +@@ -65,6 +67,7 @@ + GConfValueType gconf_schema_get_car_type (const GConfSchema *schema); + GConfValueType gconf_schema_get_cdr_type (const GConfSchema *schema); + const char* gconf_schema_get_locale (const GConfSchema *schema); ++const char* gconf_schema_get_gettext_domain(const GConfSchema *schema); + const char* gconf_schema_get_short_desc (const GConfSchema *schema); + const char* gconf_schema_get_long_desc (const GConfSchema *schema); + const char* gconf_schema_get_owner (const GConfSchema *schema); +diff -ru GConf-2.26.0/gconf/gconftool.c GConf-2.26.0.patched/gconf/gconftool.c +--- GConf-2.26.0/gconf/gconftool.c 2009-02-16 18:17:43.000000000 +0000 ++++ GConf-2.26.0.patched/gconf/gconftool.c 2009-04-05 19:36:42.000000000 +0000 +@@ -3295,6 +3295,7 @@ + GConfValueType cdr_type; + GConfValue* global_default; + GHashTable* hash; ++ gchar* gettext_domain; + }; + + static int +@@ -3547,6 +3548,15 @@ + else + g_printerr (_("WARNING: empty node")); + } ++ else if (strcmp((char *)iter->name, "gettext_domain") == 0) ++ { ++ tmp = (char *)xmlNodeGetContent(iter); ++ if (tmp) ++ { ++ info->gettext_domain = g_strdup(tmp); ++ xmlFree(tmp); ++ } ++ } + else + g_printerr (_("WARNING: node <%s> not understood below \n"), + iter->name); +@@ -3636,6 +3646,9 @@ + if (info->owner != NULL) + gconf_schema_set_owner(schema, info->owner); + ++ if (info->gettext_domain != NULL) ++ gconf_schema_set_gettext_domain(schema, info->gettext_domain); ++ + xmlFree(name); + + /* Locale-specific info */ +@@ -3765,6 +3778,7 @@ + info.apply_to = NULL; + info.owner = NULL; + info.global_default = NULL; ++ info.gettext_domain = NULL; + info.hash = g_hash_table_new(g_str_hash, g_str_equal); + + extract_global_info(node, &info); +@@ -3801,6 +3815,8 @@ + ; /* nothing */ + else if (strcmp((char *)iter->name, "applyto") == 0) + ; /* nothing */ ++ else if (strcmp((char *)iter->name, "gettext_domain") == 0) ++ ; /* nothing */ + else if (strcmp((char *)iter->name, "locale") == 0) + { + process_locale_info(iter, &info); +Only in GConf-2.26.0.patched/gconf: gconftool.c.orig diff --git a/abs/extra/gd/PKGBUILD b/abs/extra/gd/PKGBUILD new file mode 100644 index 0000000..3df77a1 --- /dev/null +++ b/abs/extra/gd/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Eric Belanger + +pkgname=gd +pkgver=2.0.35 +pkgrel=2 +pkgdesc="Library for the dynamic creation of images by programmers" +arch=('i686' 'x86_64') +url="http://www.libgd.org/" +license=('custom') +depends=('libpng>=1.2.16' 'fontconfig>=2.4.2' 'libjpeg') +options=('!libtool') +source=(http://www.libgd.org/releases/${pkgname}-${pkgver}.tar.bz2) +md5sums=('6c6c3dbb7bf079e0bb5fbbfd3bb8a71c') +sha1sums=('ccf34a610abff2dbf133a20c4d2a4aa94939018a') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --without-xpm + make || return 1 + make DESTDIR=${startdir}/pkg install + install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/extra/gdl/PKGBUILD b/abs/extra/gdl/PKGBUILD new file mode 100644 index 0000000..ee649c2 --- /dev/null +++ b/abs/extra/gdl/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 32356 2009-03-30 17:59:10Z andyrtr $ +# Maintainer: Jan de Groot + +pkgname=gdl +pkgver=2.26.0 +pkgrel=1 +pkgdesc="Gnome Devtool Libraries" +arch=(i686 x86_64) +license=('GPL') +url="http://www.gnome.org/" +depends=('libglade>=2.6.4') +makedepends=('pkgconfig') +options=('!libtool') +source=(http://ftp.gnome.org/pub/GNOME/sources/gdl/2.26/${pkgname}-${pkgver}.tar.bz2) +md5sums=('8915b8808d88e12c1bb53e84f50e6707') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/glew/PKGBUILD b/abs/extra/glew/PKGBUILD new file mode 100644 index 0000000..989621b --- /dev/null +++ b/abs/extra/glew/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 27226 2009-02-17 05:43:56Z eric $ +# AUR-Maintainer: William Rea +# Contributor: SleepyDog + +pkgname=glew +pkgver=1.5.1 +pkgrel=1 +pkgdesc="A cross-platform C/C++ extension loading library" +arch=('i686' 'x86_64') +url="http://glew.sourceforge.net" +license=('BSD' 'MIT' 'GPL') +depends=('libxmu' 'libxi' 'mesa') +makedepends=('hd2u') +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}-src.tgz) +md5sums=('759a59853dfaae4d007b414a3c1712f2') + +build() { + cd ${startdir}/src/${pkgname} + dos2unix config/config.guess + make || return 1 + make GLEW_DEST=${startdir}/pkg/usr LIBDIR=${startdir}/pkg/usr/lib install || return 1 + install -D -m644 LICENSE.txt ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE.txt || return 1 +} diff --git a/abs/extra/gnome-desktop/PKGBUILD b/abs/extra/gnome-desktop/PKGBUILD new file mode 100644 index 0000000..ddd10ad --- /dev/null +++ b/abs/extra/gnome-desktop/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 24727 2009-01-20 10:17:53Z douglas $ +# Maintainer: Jan de Groot + +pkgname=gnome-desktop +pkgver=2.24.3 +pkgrel=1 +pkgdesc="The GNOME Desktop" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('libgnomeui>=2.24.0' 'startup-notification>=0.9') +makedepends=('gnome-doc-utils>=0.14.2' 'pkgconfig' 'intltool') +optdepends=('gnome-python: gnome-about') +url="http://www.gnome.org" +groups=('gnome') +options=('!libtool') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2) +md5sums=('27579963a56d1d35a22e30c21666a500') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --with-gnome-distributor="Archlinux" \ + --disable-scrollkeeper || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/gnome-doc-utils/PKGBUILD b/abs/extra/gnome-doc-utils/PKGBUILD new file mode 100644 index 0000000..b450165 --- /dev/null +++ b/abs/extra/gnome-doc-utils/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 24717 2009-01-20 09:52:00Z douglas $ +# Maintainer: Jan de Groot + +pkgname=gnome-doc-utils +pkgver=0.14.2 +pkgrel=1 +pkgdesc="Documentation utilities for Gnome" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('libxslt>=1.1.24' 'python>=2.6' 'docbook-xml' 'rarian>=0.8.1') +makedependd7a7d8646f34571704e4be62e5c7107fs=('pkgconfig' 'perlxml') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.14/${pkgname}-${pkgver}.tar.bz2) +md5sums=('d7a7d8646f34571704e4be62e5c7107f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \ + --localstatedir=/var --disable-scrollkeeper || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/gnome-keyring/PKGBUILD b/abs/extra/gnome-keyring/PKGBUILD new file mode 100644 index 0000000..d0ea53d --- /dev/null +++ b/abs/extra/gnome-keyring/PKGBUILD @@ -0,0 +1,34 @@ +#$Id: PKGBUILD 15806 2008-10-19 09:55:58Z jgc $ +#Maintainer: Jan De Groot + +pkgname=gnome-keyring +pkgver=2.24.1 +pkgrel=1 +pkgdesc="GNOME Password Management daemon" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('gconf>=2.24.0' 'hal>=0.5.11') +makedepends=('perlxml' 'pkgconfig') +options=('!libtool' '!emptydirs') +url="http://www.gnome.org" +install=gnome-keyring.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2 + gnome-keyring.service) +md5sums=('aa5552dc129f3509ee39145b7f0bf977' '16062d82eb8062201fb24f3e0ceb49a6') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/gnome-keyring \ + --with-pam-dir=/lib/security || return 1 + make || return 1 + make -j1 GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1 + + install -m755 -d "${pkgdir}/usr/share/dbus-1/services" + install -m644 "${srcdir}/gnome-keyring.service" "${pkgdir}/usr/share/dbus-1/services/" || return 1 + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" ${pkgdir}/etc/gconf/schemas/*.schemas || return 1 + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/abs/extra/gnome-keyring/gnome-keyring.install b/abs/extra/gnome-keyring/gnome-keyring.install new file mode 100644 index 0000000..8874c6e --- /dev/null +++ b/abs/extra/gnome-keyring/gnome-keyring.install @@ -0,0 +1,19 @@ +pkgname=gnome-keyring + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + if [ -f usr/share/gconf/${pkgname}.schemas ]; then + usr/sbin/gconfpkg --uninstall ${pkgname} + fi +} diff --git a/abs/extra/gnome-keyring/gnome-keyring.service b/abs/extra/gnome-keyring/gnome-keyring.service new file mode 100644 index 0000000..96ea061 --- /dev/null +++ b/abs/extra/gnome-keyring/gnome-keyring.service @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.keyring +Exec=/usr/bin/gnome-keyring-daemon diff --git a/abs/extra/gnome-menus/PKGBUILD b/abs/extra/gnome-menus/PKGBUILD new file mode 100644 index 0000000..491fd40 --- /dev/null +++ b/abs/extra/gnome-menus/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 19656 2008-11-28 20:25:40Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gnome-menus +pkgver=2.24.2 +pkgrel=1 +pkgdesc="GNOME menu specifications" +arch=(i686 x86_64) +depends=('pygtk>=2.13.0') +makedepends=('pkgconfig' 'intltool') +options=('!libtool' '!makeflags') +license=('GPL' 'LGPL') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2 + menus.patch) +md5sums=('ca8e25b031fd7024b3f9abe1c6865d2c' '37b1021887f60a9cead67172e51a3a18') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np0 -i "${srcdir}/menus.patch" || return 1 + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/gnome-menus/menus.patch b/abs/extra/gnome-menus/menus.patch new file mode 100644 index 0000000..bf73e86 --- /dev/null +++ b/abs/extra/gnome-menus/menus.patch @@ -0,0 +1,25 @@ +--- layout/applications.menu 2005-06-28 10:16:39.000000000 +0200 ++++ layout/applications.menu 2005-09-12 23:21:20.000000000 +0200 +@@ -7,7 +7,6 @@ + Applications.directory + + +- + /etc/X11/applnk + /usr/share/gnome/apps + +@@ -18,6 +17,14 @@ + + + ++ ++ ++ Archlinux ++ Archlinux.directory ++ ++ Archlinux ++ ++ + + + Accessories diff --git a/abs/extra/gnome-mime-data/PKGBUILD b/abs/extra/gnome-mime-data/PKGBUILD new file mode 100644 index 0000000..2ce4092 --- /dev/null +++ b/abs/extra/gnome-mime-data/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot + +pkgname=gnome-mime-data +pkgver=2.18.0 +pkgrel=3 +pkgdesc="The base MIME and Application database for GNOME" +arch=(i686 x86_64) +license=('GPL') +depends=('shared-mime-info') +makedepens=('perlxml') +url="http://www.gnome.org" +groups=('gnome') +source=(ftp://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.18/${pkgname}-${pkgver}.tar.bz2) +md5sums=('541858188f80090d12a33b5a7c34d42c') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var + make || return 1 + make DESTDIR=${startdir}/pkg install + + mkdir -p ${startdir}/pkg/usr/lib + mv ${startdir}/pkg/usr/share/pkgconfig ${startdir}/pkg/usr/lib/ +} diff --git a/abs/extra/gnome-python-extras/PKGBUILD b/abs/extra/gnome-python-extras/PKGBUILD new file mode 100644 index 0000000..297ef68 --- /dev/null +++ b/abs/extra/gnome-python-extras/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 35285 2009-04-11 20:46:50Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gnome-python-extras +pkgver=2.25.3 +pkgrel=1 +pkgdesc="Gnome Python interfaces for libraries not part of the core platform" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('gnome-python>=2.22.1') +makedepends=('libgtkhtml' 'gtkspell' 'gdl' 'xulrunner>=1.9' 'libgksu' 'pkgconfig' 'libgnomeui' 'libgda') +optdepends=('libgtkhtml' 'gtkspell' 'gdl' 'xulrunner' 'libgksu' 'libgnomeui' 'libgda') +options=('!libtool') +source=(http://ftp.gnome.org/pub/gnome/sources/gnome-python-extras/2.25/gnome-python-extras-${pkgver}.tar.bz2) +url="http://www.daa.com.au/~james/pygtk/" +md5sums=('9f3b7ec5c57130b96061cb486b79c076') + +build() { + cd "${srcdir}/gnome-python-extras-${pkgver}" + ./configure --prefix=/usr || return 1 + make MOZILLA_HOME=/usr/lib/xulrunner-1.9 || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch b/abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch new file mode 100644 index 0000000..77fd0a4 --- /dev/null +++ b/abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch @@ -0,0 +1,61 @@ +diff -up gnome-python-extras-2.19.1/configure.pkg-config gnome-python-extras-2.19.1/configure +--- gnome-python-extras-2.19.1/configure.pkg-config 2008-01-12 21:07:56.000000000 -0500 ++++ gnome-python-extras-2.19.1/configure 2008-01-12 21:09:49.000000000 -0500 +@@ -22096,14 +22096,14 @@ if test -n "$PKG_CONFIG"; then + pkg_cv_GTKMOZEMBED_CFLAGS="$GTKMOZEMBED_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ +- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$mozpackage-gtkmozembed >= \$mozpackage_required_version, ++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\mozilla-gtkmozembed >= \$mozpackage_required_version, + gtk+-2.0 >= 2.4.0\"") >&5 +- ($PKG_CONFIG --exists --print-errors "$mozpackage-gtkmozembed >= $mozpackage_required_version, ++ ($PKG_CONFIG --exists --print-errors "mozilla-gtkmozembed >= $mozpackage_required_version, + gtk+-2.0 >= 2.4.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_GTKMOZEMBED_CFLAGS=`$PKG_CONFIG --cflags "$mozpackage-gtkmozembed >= $mozpackage_required_version, ++ pkg_cv_GTKMOZEMBED_CFLAGS=`$PKG_CONFIG --cflags "mozilla-gtkmozembed >= $mozpackage_required_version, + gtk+-2.0 >= 2.4.0" 2>/dev/null` + else + pkg_failed=yes +@@ -22117,14 +22117,14 @@ if test -n "$PKG_CONFIG"; then + pkg_cv_GTKMOZEMBED_LIBS="$GTKMOZEMBED_LIBS" + else + if test -n "$PKG_CONFIG" && \ +- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$mozpackage-gtkmozembed >= \$mozpackage_required_version, ++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\mozilla-gtkmozembed >= \$mozpackage_required_version, + gtk+-2.0 >= 2.4.0\"") >&5 +- ($PKG_CONFIG --exists --print-errors "$mozpackage-gtkmozembed >= $mozpackage_required_version, ++ ($PKG_CONFIG --exists --print-errors "mozilla-gtkmozembed >= $mozpackage_required_version, + gtk+-2.0 >= 2.4.0") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_GTKMOZEMBED_LIBS=`$PKG_CONFIG --libs "$mozpackage-gtkmozembed >= $mozpackage_required_version, ++ pkg_cv_GTKMOZEMBED_LIBS=`$PKG_CONFIG --libs "mozilla-gtkmozembed >= $mozpackage_required_version, + gtk+-2.0 >= 2.4.0" 2>/dev/null` + else + pkg_failed=yes +@@ -22144,10 +22144,10 @@ else + _pkg_short_errors_supported=no + fi + if test $_pkg_short_errors_supported = yes; then +- GTKMOZEMBED_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$mozpackage-gtkmozembed >= $mozpackage_required_version, ++ GTKMOZEMBED_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mozilla-gtkmozembed >= $mozpackage_required_version, + gtk+-2.0 >= 2.4.0"` + else +- GTKMOZEMBED_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$mozpackage-gtkmozembed >= $mozpackage_required_version, ++ GTKMOZEMBED_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mozilla-gtkmozembed >= $mozpackage_required_version, + gtk+-2.0 >= 2.4.0"` + fi + # Put the nasty error message in config.log where it belongs +@@ -22179,7 +22179,7 @@ fi + if test -n "$export_dynamic"; then + GTKMOZEMBED_LIBS=`echo $GTKMOZEMBED_LIBS | sed -e "s/$export_dynamic//"` + fi +-MOZILLA_HOME="`$PKG_CONFIG --variable=libdir $mozpackage-gtkmozembed`" ++MOZILLA_HOME="`$PKG_CONFIG --variable=libdir mozilla-gtkmozembed`" + + + diff --git a/abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch b/abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch new file mode 100644 index 0000000..d2fa26e --- /dev/null +++ b/abs/extra/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch @@ -0,0 +1,22 @@ +diff -up gnome-python-extras-2.19.1/docs/gtkmozembed/html/class-gtkmozembed.html.old gnome-python-extras-2.19.1/docs/gtkmozembed/html/class-gtkmozembed.html +diff -up gnome-python-extras-2.19.1/docs/gtkmozembed/html/pygtkmozembed.devhelp.old gnome-python-extras-2.19.1/docs/gtkmozembed/html/pygtkmozembed.devhelp +diff -up gnome-python-extras-2.19.1/docs/gtkmozembed/gtkmozembed-gtkmozembed.xml.old gnome-python-extras-2.19.1/docs/gtkmozembed/gtkmozembed-gtkmozembed.xml +diff -up gnome-python-extras-2.19.1/gtkmozembed/gtkmozembed.override.old gnome-python-extras-2.19.1/gtkmozembed/gtkmozembed.override +diff -up gnome-python-extras-2.19.1/gtkmozembed/gtkmozembed.defs.old gnome-python-extras-2.19.1/gtkmozembed/gtkmozembed.defs +--- gnome-python-extras-2.19.1/gtkmozembed/gtkmozembed.defs.old 2007-06-05 16:52:30.000000000 +0200 ++++ gnome-python-extras-2.19.1/gtkmozembed/gtkmozembed.defs 2007-11-27 12:54:42.000000000 +0100 +@@ -123,6 +123,14 @@ + ) + ) + ++(define-function set_path ++ (c-name "gtk_moz_embed_set_path") ++ (return-type "none") ++ (parameters ++ '("char*" "aPath") ++ ) ++) ++ + (define-function gtk_moz_embed_set_profile_path + (c-name "gtk_moz_embed_set_profile_path_deprecated") + (return-type "none") diff --git a/abs/extra/gnome-python/PKGBUILD b/abs/extra/gnome-python/PKGBUILD new file mode 100644 index 0000000..d9e0045 --- /dev/null +++ b/abs/extra/gnome-python/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 16730 2008-10-22 02:56:32Z allan $ +# Maintainer: Jan de Groot +# Contributor: Sarah Hay + +pkgname=gnome-python +pkgver=2.22.3 +pkgrel=3 +pkgdesc="gnome-python is a set of interfaces to gnome-libs." +arch=(i686 x86_64) +license=('LGPL') +depends=('pygtk>=2.13.0' 'pyorbit>=2.24.0' 'libgnomeui>=2.24.0') +makedepends=('pkgconfig') +groups=('gnome') +options=('!libtool') +url="http://www.pygtk.org/" +source=(http://ftp.gnome.org/pub/gnome/sources/gnome-python/2.22/${pkgname}-${pkgver}.tar.bz2) +md5sums=('ab12d94954a57de39b25eb7903d8429c') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./waf configure --prefix=/usr || return 1 + ./waf build ${MAKEFLAGS} || return 1 + ./waf install --destdir="${pkgdir}" || return 1 +} diff --git a/abs/extra/gnome-screensaver/PKGBUILD b/abs/extra/gnome-screensaver/PKGBUILD new file mode 100644 index 0000000..cdd4e0b --- /dev/null +++ b/abs/extra/gnome-screensaver/PKGBUILD @@ -0,0 +1,47 @@ +# $Id: PKGBUILD 29213 2009-03-06 18:47:56Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gnome-screensaver +pkgver=2.24.1 +pkgrel=7 +pkgdesc="Screensaver designed to integrate well with the GNOME desktop." +arch=(i686 x86_64) +license=('GPL') +url="http://live.gnome.org/GnomeScreensaver" +backup=(etc/pam.d/gnome-screensaver) +depends=('gnome-menus>=2.24.2' 'libgnomekbd>=2.24.0' 'libxss' 'libgl' 'libnotify' 'gnome-desktop>=2.24.2' 'libxxf86misc') +makedepends=('pkgconfig' 'gettext' 'intltool' 'mesa' 'xscreensaver' 'libxslt') +groups=('gnome') +options=(!emptydirs) +install=gnome-screensaver.install +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2 + gnome-screensaver.pam + bug564548.patch) +md5sums=('f0b9cc3108bb9105141a8c22b56bf615' + '4b4d2672a787e0d2ed792b4c308ccf8d' + 'b2accd56fd1e7e3855c1cee3cc3780c4') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/bug564548.patch" || return 1 + ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/gnome-screensaver \ + --localstatedir=/var --with-gdm-config=/usr/share/gdm/defaults.conf \ + --with-xscreensaverdir=/usr/share/xscreensaver/config \ + --with-xscreensaverhackdir=/usr/lib/xscreensaver \ + --with-dpms-ext || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + install -m644 "${srcdir}/gnome-screensaver.pam" "${pkgdir}/etc/pam.d/gnome-screensaver" || return 1 + + #Migrate xscreensaver configuration files + cd "${pkgdir}/usr/share/applications/screensavers" + "${srcdir}/${pkgname}-${pkgver}/data/migrate-xscreensaver-config.sh" /usr/share/xscreensaver/config/*.xml || return 1 + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" ${pkgdir}/etc/gconf/schemas/*.schemas || return 1 + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas + ls $pkgdir/usr/share/applications/screensavers/|cut -d. -f1 > $startdir/gscreensavers + +} diff --git a/abs/extra/gnome-screensaver/__changelog b/abs/extra/gnome-screensaver/__changelog new file mode 100644 index 0000000..3fb149c --- /dev/null +++ b/abs/extra/gnome-screensaver/__changelog @@ -0,0 +1,5 @@ +add defaults to install file +make xsltproc part of makedepends +print list of screensavers to gscreensavers + ls $pkgdir/usr/share/applications/screensavers/|cut -d. -f1 > $startdir/gscreensavers + diff --git a/abs/extra/gnome-screensaver/bug564548.patch b/abs/extra/gnome-screensaver/bug564548.patch new file mode 100644 index 0000000..da58094 --- /dev/null +++ b/abs/extra/gnome-screensaver/bug564548.patch @@ -0,0 +1,13 @@ +--- trunk/src/gs-window-x11.c 2008/05/29 17:03:19 1452 ++++ trunk/src/gs-window-x11.c 2008/12/15 15:19:36 1571 +@@ -2287,6 +2287,10 @@ + + gs_window_dialog_finish (window); + ++ if (window->priv->background_pixmap) { ++ g_object_unref (window->priv->background_pixmap); ++ } ++ + G_OBJECT_CLASS (gs_window_parent_class)->finalize (object); + } + diff --git a/abs/extra/gnome-screensaver/gnome-screensaver.install b/abs/extra/gnome-screensaver/gnome-screensaver.install new file mode 100644 index 0000000..bd98655 --- /dev/null +++ b/abs/extra/gnome-screensaver/gnome-screensaver.install @@ -0,0 +1,32 @@ +pkgname=gnome-screensaver + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} + #set defaults + gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /apps/gnome-screensaver/lock_enabled false + gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type int -s "/apps/gnome-screensaver/idle_delay" 10 + gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --set --type list --list-type=string /apps/gnome-screensaver/themes [screensavers-cosmos-slideshow] + gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string -s "/apps/gnome-screensaver/mode" single + + if grep gnome-screensaver-command /home/mythtv/.mplayer/config + then + echo "Nothing to do here..." + else + echo "heartbeat-cmd=\"gnome-screensaver-command -p &\"" >> /home/mythtv/.mplayer/config + fi +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} + grep -v gnome-screensaver /home/mythtv/.mplayer/config > /tmp/mp-config + mv /tmp/mp-config /home/mythtv/.mplayer/config + chown mythtv.mythtv /home/mythtv/.mplayer/config +} diff --git a/abs/extra/gnome-screensaver/gnome-screensaver.pam b/abs/extra/gnome-screensaver/gnome-screensaver.pam new file mode 100644 index 0000000..c776a54 --- /dev/null +++ b/abs/extra/gnome-screensaver/gnome-screensaver.pam @@ -0,0 +1,3 @@ +#%PAM-1.0 +auth required pam_unix_auth.so +auth optional pam_gnome_keyring.so diff --git a/abs/extra/gnome-screensaver/gscreensavers b/abs/extra/gnome-screensaver/gscreensavers new file mode 100644 index 0000000..7f56072 --- /dev/null +++ b/abs/extra/gnome-screensaver/gscreensavers @@ -0,0 +1,200 @@ +abstractile +anemone +anemotaxis +antinspect +antmaze +antspotlight +apollonian +apple2 +atlantis +attraction +atunnel +barcode +blaster +blinkbox +blitspin +blocktube +boing +bouboule +bouncingcow +boxed +boxfit +braid +bsod +bubble3d +bumps +cage +carousel +ccurve +celtic +circuit +cloudlife +compass +coral +cosmos-slideshow +crackberg +crystal +cube21 +cubenetic +cubestorm +cubicgrid +cwaves +cynosure +dangerball +decayscreen +deco +deluxe +demon +discrete +distort +drift +endgame +engine +epicycle +eruption +euler2d +extrusion +fadeplot +fiberlamp +fireworkx +flame +flipflop +flipscreen3d +fliptext +flow +fluidballs +flurry +flyingtoasters +fontglide +footlogo-floaters +fuzzyflakes +galaxy +gears +gflux +glblur +glcells +gleidescope +glhanoi +glknots +glmatrix +glplanet +glschool +glslideshow +glsnake +gltext +goop +grav +greynetic +halftone +halo +helix +hopalong +hyperball +hypercube +hypertorus +hypnowheel +ifs +imsmap +interaggregate +interference +intermomentary +jigglypuff +jigsaw +juggle +juggler3d +julia +kaleidescope +klein +kumppa +lament +lavalite +lcdscrub +lockward +loop +m6502 +maze +memscroller +menger +metaballs +mirrorblob +moebius +moebiusgears +moire +moire2 +molecule +morph3d +mountain +munch +nerverot +noof +noseguy +pacman +pedal +penetrate +penrose +personal-slideshow +petri +phosphor +photopile +piecewise +pinion +pipes +polyhedra +polyominoes +polytopes +pong +popsquares +providence +pulsar +pyro +qix +queens +rd-bomb +ripples +rocks +rorschach +rotzoomer +rubik +sballs +shadebobs +sierpinski +sierpinski3d +skytentacles +slidescreen +slip +sonar +speedmine +spheremonics +spotlight +sproingies +squiral +stairs +starfish +starwars +stonerview +strange +substrate +superquadrics +swirl +tangram +thornbird +timetunnel +topblock +triangle +truchet +twang +vermiculate +vidwhacker +voronoi +wander +webcollage +whirlwindwarp +wormhole +xanalogtv +xflame +xjack +xlyap +xmatrix +xrayswarm +xspirograph +zoom diff --git a/abs/extra/gnome-vfs/PKGBUILD b/abs/extra/gnome-vfs/PKGBUILD new file mode 100644 index 0000000..9a54cdd --- /dev/null +++ b/abs/extra/gnome-vfs/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 30314 2009-03-18 21:34:12Z jgc $ +# Maintainer: Jan de Groot + +pkgname=gnome-vfs +pkgver=2.24.1 +pkgrel=2 +pkgdesc="The GNOME Virtual File System" +arch=(i686 x86_64) +license=('LGPL') +depends=('fam' 'gconf>=2.26.0-2' 'hal>=0.5.11' 'bzip2' 'avahi>=0.6.24' 'smbclient>=3.3.1' 'gnome-mime-data>=2.18.0-2' 'heimdal>=1.2.1' 'gnutls>=2.6.4') +makedepends=('pkgconfig' 'intltool') +options=('!libtool' '!emptydirs') +conflicts=(gnome-vfs-samba) +provides=(gnome-vfs-samba) +replaces=(gnome-vfs-samba gnome-vfs-extras) +url="http://www.gnome.org" +install=gnome-vfs.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/gnome-vfs-${pkgver}.tar.bz2 + hal-show-volume-names.patch) +md5sums=('100f9af16dc659e375ee8da45175a28d' '109d07aa1dc8cb6523c47c4984047dce') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + #Archlinux patch (b.g.o #321498) + patch -Np1 -i ${startdir}/src/hal-show-volume-names.patch || return 1 + + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/gnome-vfs-2.0 \ + --enable-samba --enable-hal \ + --enable-avahi --disable-howl \ + --disable-openssl --enable-gnutls || return 1 + make || return 1 + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1 + + install -d -m755 "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-vfs-2.0 ${startdir}/pkg/etc/gconf/schemas/*.schemas + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/abs/extra/gnome-vfs/gnome-vfs.install b/abs/extra/gnome-vfs/gnome-vfs.install new file mode 100644 index 0000000..793a3e7 --- /dev/null +++ b/abs/extra/gnome-vfs/gnome-vfs.install @@ -0,0 +1,17 @@ +pkgname=gnome-vfs + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} diff --git a/abs/extra/gnome-vfs/hal-show-volume-names.patch b/abs/extra/gnome-vfs/hal-show-volume-names.patch new file mode 100644 index 0000000..5b8420c --- /dev/null +++ b/abs/extra/gnome-vfs/hal-show-volume-names.patch @@ -0,0 +1,46 @@ +Index: gnome-vfs-hal-mounts.c +=================================================================== +RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c,v +retrieving revision 1.33 +diff -u -p -r1.33 gnome-vfs-hal-mounts.c +--- gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 7 Jul 2006 15:56:57 -0000 1.33 ++++ gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 14 Jul 2006 18:48:51 -0000 +@@ -877,6 +877,7 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa + GnomeVFSDrive *drive; + GnomeVFSVolumeMonitor *volume_monitor; + char *name; ++ char *icon; + gboolean allowed_by_policy; + const char *backing_udi; + +@@ -975,6 +976,8 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa + */ + drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi (volume_monitor, libhal_volume_get_udi (hal_volume)); + if (drive == NULL && allowed_by_policy) { ++ name = _hal_drive_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume); ++ icon = _hal_drive_policy_get_icon (volume_monitor_daemon, hal_drive, hal_volume); + drive = g_object_new (GNOME_VFS_TYPE_DRIVE, NULL); + if (libhal_volume_disc_has_audio (hal_volume)) { + drive->priv->activation_uri = g_strdup_printf ("cdda://%s", +@@ -989,16 +992,16 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa + * So just set it to the empty string + */ + drive->priv->activation_uri = g_strdup (""); ++ g_free (name); ++ name = _hal_volume_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume); ++ g_free (icon); ++ icon = _hal_volume_policy_get_icon (volume_monitor_daemon, hal_drive, hal_volume); + } + drive->priv->is_connected = TRUE; + drive->priv->device_path = g_strdup (libhal_volume_get_device_file (hal_volume)); + drive->priv->device_type = _hal_get_gnome_vfs_device_type (hal_drive); + +- /* TODO: could add an icon of a drive with media in it since this codepath only +- * handles drives with media in them +- */ +- drive->priv->icon = _hal_drive_policy_get_icon (volume_monitor_daemon, hal_drive, NULL); +- name = _hal_drive_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume); ++ drive->priv->icon = icon; + drive->priv->display_name = _gnome_vfs_volume_monitor_uniquify_drive_name (volume_monitor, name); + g_free (name); + name = g_utf8_casefold (drive->priv->display_name, -1); diff --git a/abs/extra/gnuplot/PKGBUILD b/abs/extra/gnuplot/PKGBUILD new file mode 100644 index 0000000..ec372f0 --- /dev/null +++ b/abs/extra/gnuplot/PKGBUILD @@ -0,0 +1,34 @@ +# $Id$ +# Maintainer: damir +# Contributor: Niklas Volbers + +pkgname=gnuplot +pkgver=4.2.5 +pkgrel=1 +pkgdesc="Command-line driven interactive data and function plotting utility" +url="http://www.gnuplot.info" +depends=('gd>=2.0.29' 'wxgtk' 'libjpeg>=7') +makedepends=('texinfo') +license='custom' +arch=('i686') +source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz) +md5sums=(85d042f8efd7aae3d9cbfd85b14d06d2) + +build() { + cd $startdir/src/$pkgname-$pkgver + + ./configure --prefix=/usr \ + --datadir=/usr/share \ + --libexecdir=/usr/bin \ + --with-readline=gnu \ + --enable-history-file \ + --with-x + + make X11_DRIVER_DIR='/usr/bin' || return 1 + + make DESTDIR=$startdir/pkg \ + libexecdir=/usr/bin \ + pkglibexecdir=/usr/bin install + + install -D $startdir/src/$pkgname-$pkgver/Copyright $startdir/pkg/usr/share/licenses/custom/gnuplot/Copyright +} diff --git a/abs/extra/gpac/ChangeLog b/abs/extra/gpac/ChangeLog new file mode 100644 index 0000000..5e63198 --- /dev/null +++ b/abs/extra/gpac/ChangeLog @@ -0,0 +1,9 @@ +2009-04-19 Allan McRae + * gpac-0.4.5-2 + * Rebuild against libavcodec.so.52 (FS#14291) + +2008-12-14 Allan McRae + * gpac-0.4.5-1 + * upstream update + * FHS man page + diff --git a/abs/extra/gpac/PKGBUILD b/abs/extra/gpac/PKGBUILD new file mode 100755 index 0000000..04ce3cc --- /dev/null +++ b/abs/extra/gpac/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD,v 1.4 2009/04/19 08:06:33 allan Exp $ +# Maintainer: Allan McRae +# Contributor: niQo + +pkgname=gpac +pkgver=0.4.5 +pkgrel=4 +pkgdesc="A multimedia framework based on the MPEG-4 Systems standard" +arch=('i686' 'x86_64') +url="http://gpac.sourceforge.net" +depends=('libxml2' 'wxgtk' 'alsa-lib' 'sdl' 'spidermonkey' 'libmad' \ + 'faad2' 'xvidcore' 'ffmpeg' 'freeglut' 'libjpeg') +license=('LGPL') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz) +md5sums=('755e8c438a48ebdb13525dd491f5b0d1') + +build() { + cd "${srcdir}/${pkgname}" + chmod +x configure + sed -i 's#osmozilla##g' applications/Makefile + sed -i 's#"$(prefix)#"$(DESTDIR)$(prefix)#' applications/osmo4_wx/Makefile + sed -i 's#ldconfig || true##g' Makefile + ./configure --prefix=/usr --mandir=/usr/share/man --use-js=no + make || return 1 + make DESTDIR=${pkgdir}/ install-lib + make DESTDIR=${pkgdir}/ install +} diff --git a/abs/extra/gpac/gpac-0.4.2-ffmpeg-errno.patch b/abs/extra/gpac/gpac-0.4.2-ffmpeg-errno.patch new file mode 100755 index 0000000..ec59cec --- /dev/null +++ b/abs/extra/gpac/gpac-0.4.2-ffmpeg-errno.patch @@ -0,0 +1,20 @@ +Index: gpac/modules/ffmpeg_in/ffmpeg_demux.c +=================================================================== +--- gpac.orig/modules/ffmpeg_in/ffmpeg_demux.c ++++ gpac/modules/ffmpeg_in/ffmpeg_demux.c +@@ -23,6 +23,7 @@ + */ + + #include "ffmpeg_in.h" ++#include + + /*default buffer is 200 ms per channel*/ + #define FFD_DATA_BUFFER 800 +@@ -285,7 +286,6 @@ static GF_ESD *FFD_GetESDescriptor(FFDem + case CODEC_ID_MP3: + esd->decoderConfig->objectTypeIndication = 0x69; + break; +- case CODEC_ID_MPEG4AAC: + case CODEC_ID_AAC: + if (!dec->extradata_size) goto opaque_audio; + esd->decoderConfig->objectTypeIndication = 0x40; diff --git a/abs/extra/graphload/PKGBUILD b/abs/extra/graphload/PKGBUILD new file mode 100644 index 0000000..6af2f95 --- /dev/null +++ b/abs/extra/graphload/PKGBUILD @@ -0,0 +1,16 @@ +pkgname=graphload +pkgver=1 +pkgrel=1 +pkgdesc="command to graph the total CPU utilization for N-core systems for a given interval" +depends=('gnuplot>=4.2.5') +license='GPLv2' +arch=('i686') + +build() { + LH_ROOT=/usr/LH + mkdir -p $startdir/pkg/$LH_ROOT/bin/ + + cd $startdir + # executables + install -m0755 -D graphload.sh $startdir/pkg/$LH_ROOT/bin/ +} diff --git a/abs/extra/graphload/graphload.sh b/abs/extra/graphload/graphload.sh new file mode 100755 index 0000000..79023ec --- /dev/null +++ b/abs/extra/graphload/graphload.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +MYTICKS=100 +MYINTERVAL=4 # we sample once every $MYINTERVAL seconds +MYINVERSEINTERVAL=0.25 + +top -d $MYINVERSEINTERVAL -n $MYTICKS -b -i | grep Cpu | perl -e "while(<>) { split(','); \$load = 100 - substr @_[3], 0, -3; print \$load,\"\n\";}" > profile +perl -e '$second=0; while(<>) { chop(); $load = $_; print "$second $load "; split " ", $load; print @_[0] + @_[1], "\n"; $second+=0.25;}' < profile > points +echo "set grid +set xrange [0: $(($MYTICKS/$MYINTERVAL))] +set yrange [0: 101] +set xtics 0,$MYINVERSEINTERVAL,$(($MYTICKS/$MYINTERVAL)) +set xlabel \"time\" +set ylabel \"CPU usage\" +plot \"points\" using 1:2 with lines title 'total load' +replot" > gplot.cmds +gnuplot -persist gplot.cmds diff --git a/abs/extra/gtk-doc/PKGBUILD b/abs/extra/gtk-doc/PKGBUILD new file mode 100644 index 0000000..6bbbb94 --- /dev/null +++ b/abs/extra/gtk-doc/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dorphell + +pkgname=gtk-doc +pkgver=1.10 +pkgrel=1 +options=('docs') +pkgdesc="Used to document the public API of libraries" +arch=(i686 x86_64) +license=('GPL' 'FDL') +depends=('perl>=5.8.8' 'rarian' 'docbook-xsl') +makedepends=('pkgconfig' 'jade') +install=gtk-doc.install +url="http://www.gtk.org/gtk-doc/" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('cbd4be396b0cf8b8ce1fc9b927cdf451') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/gtk-doc/gtk-doc.install b/abs/extra/gtk-doc/gtk-doc.install new file mode 100644 index 0000000..5e39bbf --- /dev/null +++ b/abs/extra/gtk-doc/gtk-doc.install @@ -0,0 +1,14 @@ +post_install() { +cat << _EOF +==> SGML support in gtk-doc is no longer maintained, only very old projects +==> still use SGML. Install (open)jade for SGML support. +_EOF +} + +post_upgrade() { + post_install $1 +} + +op=$1 +shift +$op $* diff --git a/abs/extra/gtk-sharp-2/PKGBUILD b/abs/extra/gtk-sharp-2/PKGBUILD new file mode 100644 index 0000000..cabcc92 --- /dev/null +++ b/abs/extra/gtk-sharp-2/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 26977 2009-02-15 00:09:35Z jgc $ +# Maintainer: tobias + +pkgname=gtk-sharp-2 +pkgver=2.12.8 +pkgrel=1 +pkgdesc="gtk2 bindings for C#" +arch=(i686 x86_64) +license=('LGPL') +url="http://gtk-sharp.sourceforge.net" +depends=('mono>=2.2' 'libglade>=2.6.3' 'gtk2>=2.14.7') +makedepends=('pkgconfig' 'monodoc') +conflicts=('gtk#') +options=('!libtool' '!makeflags') +source=(http://ftp.gnome.org/pub/GNOME/sources/gtk-sharp/2.12/gtk-sharp-${pkgver}.tar.bz2) +md5sums=('1b12a33df2ab87448848c0cc0733ca77') + +build() { + # get rid of that .wapi errors; thanks to brice + export MONO_SHARED_DIR="${srcdir}/weird" + mkdir -p "${MONO_SHARED_DIR}" + + cd "${srcdir}/gtk-sharp-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --disable-static || return 1 + make || return 1 + make GACUTIL="/usr/bin/gacutil /root ${pkgdir}/usr/lib" \ + DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/gtkspell/PKGBUILD b/abs/extra/gtkspell/PKGBUILD new file mode 100644 index 0000000..1b372a1 --- /dev/null +++ b/abs/extra/gtkspell/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 22305 2008-12-25 18:48:10Z jgc $ +# Maintainer: Roman Kyrylych +# Contributer: Ben + +pkgname=gtkspell +pkgver=2.0.15 +pkgrel=1 +url="http://gtkspell.sourceforge.net/" +pkgdesc="GtkSpell provides word-processor-style highlighting and replacement of misspelled words in a GtkTextView widget" +arch=('i686' 'x86_64') +license=('GPL') +depends=('gtk2>=2.14.6' 'enchant>=1.4.2') +makedepends=('intltool') +options=('!libtool') +source=(http://gtkspell.sourceforge.net/download/${pkgname}-${pkgver}.tar.gz) +md5sums=('d90a7fe883f29caca149f04f31e2f0f9') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/guile/PKGBUILD b/abs/extra/guile/PKGBUILD new file mode 100644 index 0000000..3721e3f --- /dev/null +++ b/abs/extra/guile/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 23033 2009-01-01 17:11:52Z jgc $ +# Contributor: Tom Newsom +# Maintainer: Jan de Groot + +pkgname=guile +pkgver=1.8.6 +pkgrel=1 +pkgdesc="Guile is a portable, embeddable Scheme implementation written in C" +url="http://www.gnu.org/software/guile/" +arch=(i686 x86_64) +license=('GPL') +depends=('gmp' 'libtool' 'ncurses>=5.6-7' 'texinfo') +install=guile.install +source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) +options=('!libtool') +md5sums=('9e23d3dbea0e89bab8a9acc6880150de') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-networking \ + --disable-error-on-warning || return 1 + make LDFLAGS+="-lpthread" || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/share/info/dir" + gzip "${pkgdir}/usr/share/info"/* || return 1 +} diff --git a/abs/extra/guile/guile.install b/abs/extra/guile/guile.install new file mode 100644 index 0000000..8fab0b1 --- /dev/null +++ b/abs/extra/guile/guile.install @@ -0,0 +1,27 @@ +files=(goops.info + guile-tut.info + guile.info + guile.info-1 + guile.info-2 + guile.info-3 + guile.info-4 + guile.info-5 + guile.info-6 + guile.info-7 + r5rs.info) + +post_install() { + for f in "${files[@]}"; do + install-info usr/share/info/${f}.gz usr/share/info/dir 2>/dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for f in "${files[@]}"; do + install-info --delete usr/share/info/${f}.gz usr/share/info/dir 2> /dev/null + done +} diff --git a/abs/extra/gvim/PKGBUILD b/abs/extra/gvim/PKGBUILD new file mode 100644 index 0000000..63c901a --- /dev/null +++ b/abs/extra/gvim/PKGBUILD @@ -0,0 +1,84 @@ +# $Id: PKGBUILD 17439 2008-10-29 19:05:16Z tobias $ +# Maintainer: tobias [ tobias at archlinux org ] + +pkgname=gvim +_srcver=7.2 +_patchlevel=132 +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) + +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 + + ############################################################## + sed -i "s/mouse=a/mouse-=a/g" $startdir/pkg/etc/gvimrc + ################################################################# +} diff --git a/abs/extra/gvim/fetch_patches.sh b/abs/extra/gvim/fetch_patches.sh new file mode 100644 index 0000000..2ce1019 --- /dev/null +++ b/abs/extra/gvim/fetch_patches.sh @@ -0,0 +1,61 @@ +# 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=-1 + 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 + cd $startdir/src/patches + rm 7.2.001-100.gz + ######## + + 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/gvim/gvim.desktop b/abs/extra/gvim/gvim.desktop new file mode 100644 index 0000000..8c99660 --- /dev/null +++ b/abs/extra/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/gvim/gvim.install b/abs/extra/gvim/gvim.install new file mode 100644 index 0000000..f49c345 --- /dev/null +++ b/abs/extra/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/hd2u/PKGBUILD b/abs/extra/hd2u/PKGBUILD new file mode 100644 index 0000000..8cde95c --- /dev/null +++ b/abs/extra/hd2u/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 13676 2008-09-27 21:20:46Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Damir Perisa + +pkgname=hd2u +pkgver=1.0.3 +pkgrel=1 +pkgdesc="Dos2Unix text file converter" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://hany.sk/~hany/software/hd2u/" +depends=('popt') +source=(http://hany.sk/~hany/_data/hd2u/$pkgname-$pkgver.tgz) +md5sums=('8f6668fafb279aa19f956ec0515717b6') + +build() { + cd "$srcdir/$pkgname-$pkgver" + ./configure --prefix=/usr + make || return 1 + make prefix=$pkgdir/usr install +} diff --git a/abs/extra/hddtemp/ChangeLog b/abs/extra/hddtemp/ChangeLog new file mode 100644 index 0000000..d9b03e7 --- /dev/null +++ b/abs/extra/hddtemp/ChangeLog @@ -0,0 +1,14 @@ +2009-03-05 Andreas Radke +* pkg moved to extra from AUR + +2008-01-23 Roman Kyrylych +* Updated to v38 of Debian's patchset + +2007-11-30 Roman Kyrylych +* Backup /etc/conf.d/hddtemp + +2007-11-09 Roman Kyrylych +* Updated to v37 of Debian's patchset + +2007-06-26 tardo +* Built for x86_64 diff --git a/abs/extra/hddtemp/PKGBUILD b/abs/extra/hddtemp/PKGBUILD new file mode 100644 index 0000000..996577d --- /dev/null +++ b/abs/extra/hddtemp/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 29127 2009-03-05 18:08:55Z andyrtr $ +# Maintainer: Andrea Scarpino +# Contributor: Roman Kyrylych +# Contributor: Damir Perisa + +pkgname=hddtemp +pkgver=0.3.beta15.45 +_origver=0.3-beta15 +_patchver=45 +pkgrel=2 +pkgdesc="Gives you the temperature of your hard drive by reading S.M.A.R.T. information" +arch=('i686' 'x86_64') +url="http://www.guzu.net/linux/hddtemp.php" +license=('GPL') +depends=('glibc') +backup=('etc/conf.d/hddtemp') +source=(http://www.guzu.net/files/hddtemp-${_origver}.tar.bz2 + http://ftp.debian.org/debian/pool/main/h/hddtemp/hddtemp_${_origver}-${_patchver}.diff.gz + 'hddtemp' 'hddtemp.confd') +md5sums=('8b829339e1ae9df701684ec239021bb8' + 'a809a3a28d29ee719b2855af9b4eb1a8' + 'b7ebb86dfeef3bc4577ed1040307e36b' + 'fdca5c43900406f0be76534ef2a5a697') +options=('!libtool') + +build() { + cd "$srcdir/$pkgname-${_origver}" + + patch -Np1 -i "$srcdir/${pkgname}_${_origver}-${_patchver}.diff" || return 1 + + ./configure --prefix=/usr --mandir=/usr/share/man --with-db-path=/usr/share/$pkgname/hddtemp.db + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + + install -D -m644 "$srcdir/$pkgname-${_origver}/debian/hddtemp.db" \ + "$pkgdir/usr/share/${pkgname}/hddtemp.db" || return 1 + install -D -m644 "$srcdir/hddtemp.confd" "$pkgdir/etc/conf.d/hddtemp" || return 1 + install -D -m755 "$srcdir/hddtemp" "$pkgdir/etc/rc.d/hddtemp" || return 1 +} diff --git a/abs/extra/hddtemp/hddtemp b/abs/extra/hddtemp/hddtemp new file mode 100644 index 0000000..62f0908 --- /dev/null +++ b/abs/extra/hddtemp/hddtemp @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PARAMS= +DRIVES= +[ -f /etc/conf.d/hddtemp ] && . /etc/conf.d/hddtemp +PID=$(pidof -o %PPID /usr/sbin/hddtemp) +case "$1" in + start) + stat_busy "Starting HDDTemp" + [ -z "$PID" ] && /usr/sbin/hddtemp -d $PARAMS $DRIVES + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon hddtemp + stat_done + fi + ;; + stop) + stat_busy "Stopping HDDTemp" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon hddtemp + stat_done + fi + ;; + restart) + $0 stop + sleep 2 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/hddtemp/hddtemp.confd b/abs/extra/hddtemp/hddtemp.confd new file mode 100644 index 0000000..6a1e18e --- /dev/null +++ b/abs/extra/hddtemp/hddtemp.confd @@ -0,0 +1,2 @@ +PARAMS="-q -l 127.0.0.1" +DRIVES="/dev/sda" diff --git a/abs/extra/hdhgrab/PKGBUILD b/abs/extra/hdhgrab/PKGBUILD new file mode 100755 index 0000000..be4fc7f --- /dev/null +++ b/abs/extra/hdhgrab/PKGBUILD @@ -0,0 +1,19 @@ +pkgname=hdhgrab +pkgver=1 +pkgrel=1 +arch=("i686") +pkgdesc="A multimedia framework based on the MPEG-4 Systems standard" +url="myth2ipod.com" +depends=('hdhomerun' ) +source=(http://ops.nocc.us/hdh/hdhgrab.tar.gz) + + +build() { + cd $startdir/src + + install -D -m 755 hdhscan $startdir/pkg/usr/bin/hdhscan + install -D -m 755 hdhgrab $startdir/pkg/usr/bin/hdhgrab + install -D -m755 README $startdir/pkg/usr/share/README.hdhgrab + + +} diff --git a/abs/extra/hicolor-icon-theme/PKGBUILD b/abs/extra/hicolor-icon-theme/PKGBUILD new file mode 100644 index 0000000..55e4c34 --- /dev/null +++ b/abs/extra/hicolor-icon-theme/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: arjan +# Contributer: Jan De Groot +pkgname=hicolor-icon-theme +pkgver=0.10 +pkgrel=1 +pkgdesc="Freedesktop.org Hicolor icon theme" +arch=(i686 x86_64) +depends=() +url="http://icon-theme.freedesktop.org/wiki/HicolorTheme" +source=(http://icon-theme.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz) +md5sums=('3534f7b8e59785c7d5bfa923e85510a7') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/hspell/PKGBUILD b/abs/extra/hspell/PKGBUILD new file mode 100644 index 0000000..7700435 --- /dev/null +++ b/abs/extra/hspell/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 28768 2009-03-02 04:21:08Z eric $ +# Maintainer: Tobias Powalowski + +pkgname=hspell +pkgver=1.0 +pkgrel=2 +pkgdesc="Hebrew spell-checker" +arch=(i686 x86_64) +license=('GPL') +url="http://www.ivrix.org.il/projects/spell-checker/" +depends=('glibc>=2.7' 'zlib' 'perl') +options=('!libtool' '!makeflags') +source=(ftp://ftp.archlinux.org/other/hspell/${pkgname}-${pkgver}.tar.gz) +md5sums=('3e12fa383c2cfd430918d115f33f9841') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + [ "${CARCH}" = "x86_64" ] && export CFLAGS="${CFLAGS} -fPIC" + sed -i -e 's|/usr/bin/awk|/bin/awk|' wzip + ./configure --prefix=/usr --enable-linginfo + make || return 1 + make DESTDIR=${startdir}/pkg/ install || return 1 +} diff --git a/abs/extra/htop/ChangeLog b/abs/extra/htop/ChangeLog new file mode 100644 index 0000000..7d77d0b --- /dev/null +++ b/abs/extra/htop/ChangeLog @@ -0,0 +1,8 @@ +2008-12-09 Alexander Fehr + + * htop-0.8.1-1: + New upstream release. + New maintainer. + Added patch to fix FS#12235. + Enabled Unicode support. + Added ChangeLog. diff --git a/abs/extra/htop/PKGBUILD b/abs/extra/htop/PKGBUILD new file mode 100644 index 0000000..326a98a --- /dev/null +++ b/abs/extra/htop/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 21081 2008-12-09 17:41:11Z alexanderf $ +# Maintainer: Alexander Fehr + +pkgname=htop +pkgver=0.8.1 +pkgrel=1 +pkgdesc="Interactive process viewer" +arch=('i686' 'x86_64') +url="http://htop.sourceforge.net/" +license=('GPL') +depends=('ncurses') +options=('!emptydirs') +source=(http://downloads.sourceforge.net/htop/htop-$pkgver.tar.gz + htop-treeview.patch) +md5sums=('f0b259ca29175656de48bf0fa0a2e619' + '54613e5237592691da8903fae05780d9') + +build() { + cd "$srcdir/htop-$pkgver" + + # Fix tree view + # http://sourceforge.net/tracker2/?func=detail&aid=2343835&group_id=108839&atid=651635 + patch -Np1 -i "$srcdir/htop-treeview.patch" || return 1 + + ./configure --prefix=/usr --enable-unicode || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 +} diff --git a/abs/extra/htop/htop-treeview.patch b/abs/extra/htop/htop-treeview.patch new file mode 100644 index 0000000..bcf6334 --- /dev/null +++ b/abs/extra/htop/htop-treeview.patch @@ -0,0 +1,12 @@ +diff -ur htop-0.8.1.orig/ProcessList.c htop-0.8.1/ProcessList.c +--- htop-0.8.1.orig/ProcessList.c 2008-09-23 08:23:14.000000000 +0200 ++++ htop-0.8.1/ProcessList.c 2008-12-09 15:14:56.000000000 +0100 +@@ -331,7 +331,7 @@ + + for (int i = Vector_size(this->processes) - 1; i >= 0; i--) { + Process* process = (Process*) (Vector_get(this->processes, i)); +- if (process->tgid == pid || (process->tgid == process->pid && process->ppid == pid)) { ++ if (process->tgid == pid || process->ppid == pid) { + Process* process = (Process*) (Vector_take(this->processes, i)); + Vector_add(children, process); + } diff --git a/abs/extra/hunspell/ChangeLog b/abs/extra/hunspell/ChangeLog new file mode 100644 index 0000000..dcb3a2a --- /dev/null +++ b/abs/extra/hunspell/ChangeLog @@ -0,0 +1,6 @@ +2008-12-02 Alexander Fehr + + * hunspell-1.2.8-1: + New upstream release. + New maintainer. + Added ChangeLog. diff --git a/abs/extra/hunspell/PKGBUILD b/abs/extra/hunspell/PKGBUILD new file mode 100644 index 0000000..2db38c2 --- /dev/null +++ b/abs/extra/hunspell/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 20746 2008-12-06 14:17:50Z alexanderf $ +# Maintainer: Alexander Fehr +# Contributor: Hussam Al-Tayeb + +pkgname=hunspell +pkgver=1.2.8 +pkgrel=1 +pkgdesc="Spell checker and morphological analyzer library and program" +arch=('i686' 'x86_64') +url="http://hunspell.sourceforge.net/" +license=('GPL' 'LGPL' 'MPL') +depends=('gcc-libs') +options=('!libtool') +source=(http://downloads.sourceforge.net/hunspell/hunspell-$pkgver.tar.gz) +md5sums=('1177af54a09e320d2c24015f29c3a93e') + +build() { + cd "$srcdir/hunspell-$pkgver" + + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR="$pkgdir" install || return 1 +} diff --git a/abs/extra/i2c-tools/Makefile.patch b/abs/extra/i2c-tools/Makefile.patch new file mode 100644 index 0000000..f90fa14 --- /dev/null +++ b/abs/extra/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/i2c-tools/PKGBUILD b/abs/extra/i2c-tools/PKGBUILD new file mode 100644 index 0000000..db1700d --- /dev/null +++ b/abs/extra/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/icon-naming-utils/PKGBUILD b/abs/extra/icon-naming-utils/PKGBUILD new file mode 100644 index 0000000..82592ff --- /dev/null +++ b/abs/extra/icon-naming-utils/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 4394 2008-07-06 20:12:55Z jgc $ +# Maintainer: Jan de Groot +# Contributor: William Rea + +pkgname=icon-naming-utils +pkgver=0.8.7 +pkgrel=1 +pkgdesc="Maps the new names of icons for Tango to the legacy names used by the GNOME and KDE desktops." +arch=(i686 x86_64) +license=('GPL') +url="http://tango.freedesktop.org/" +depends=('perl-xml-simple') +source=(http://tango.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2bcd77b8b6361831a932a5e76e82b66d') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/icon-naming-utils \ + --localstatedir=/var + make || return 1 + make DESTDIR=${startdir}/pkg install + mv ${startdir}/pkg/usr/share/pkgconfig ${startdir}/pkg/usr/lib/pkgconfig +} diff --git a/abs/extra/id3lib/PKGBUILD b/abs/extra/id3lib/PKGBUILD new file mode 100644 index 0000000..ba0328a --- /dev/null +++ b/abs/extra/id3lib/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 2134 2008-05-26 00:30:40Z eric $ +# Maintainer: +# Contributor: Jochem Kossen +pkgname=id3lib +pkgver=3.8.3 +pkgrel=10 +pkgdesc="An open-source, cross-platform software development library for reading, writing, and manipulating ID3v1 and ID3v2 tags" +arch=(i686 x86_64) +license=('LGPL') +url="http://id3lib.sourceforge.net/" +depends=('zlib' 'gcc-libs') +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz + patch_id3lib_3.8.3_UTF16_writing_bug.diff + id3lib-3.8.3-CVE-2007-4460.patch + id3lib-3.8.3-gcc-4.3.patch) +md5sums=('19f27ddd2dda4b2d26a559a4f0f402a7' '196c65adee1ba511ddacef2de0dfd102'\ + '78e90e15ddd1122b66da352b6c3b00ff' 'fdbffd2d9d289ed0d730950c78d4ebc4') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + patch -Np1 -i ${startdir}/src/patch_id3lib_3.8.3_UTF16_writing_bug.diff || return 1 + patch -Np0 -i ${startdir}/src/id3lib-3.8.3-CVE-2007-4460.patch || return 1 + patch -Np1 -i ${startdir}/src/id3lib-3.8.3-gcc-4.3.patch || return 1 + ./configure --prefix=/usr + sed -i -e 's/^LIBS =/LIBS = -lz -lstdc++/' src/Makefile || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch b/abs/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch new file mode 100644 index 0000000..daa0866 --- /dev/null +++ b/abs/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch @@ -0,0 +1,49 @@ +--- src/tag_file.cpp ++++ src/tag_file.cpp +@@ -242,8 +242,8 @@ + strcpy(sTempFile, filename.c_str()); + strcat(sTempFile, sTmpSuffix.c_str()); + +-#if ((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP)) +- // This section is for Windows folk && gcc 3.x folk ++#if !defined(HAVE_MKSTEMP) ++ // This section is for Windows folk + fstream tmpOut; + createFile(sTempFile, tmpOut); + +@@ -257,7 +257,7 @@ + tmpOut.write((char *)tmpBuffer, nBytes); + } + +-#else //((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP)) ++#else //!defined(HAVE_MKSTEMP) + + // else we gotta make a temp file, copy the tag into it, copy the + // rest of the old file after the tag, delete the old file, rename +@@ -270,7 +270,7 @@ + //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file"); + } + +- ofstream tmpOut(fd); ++ ofstream tmpOut(sTempFile); + if (!tmpOut) + { + tmpOut.close(); +@@ -285,14 +285,14 @@ + uchar tmpBuffer[BUFSIZ]; + while (file) + { +- file.read(tmpBuffer, BUFSIZ); ++ file.read((char *)tmpBuffer, BUFSIZ); + size_t nBytes = file.gcount(); +- tmpOut.write(tmpBuffer, nBytes); ++ tmpOut.write((char *)tmpBuffer, nBytes); + } + + close(fd); //closes the file + +-#endif ////((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP)) ++#endif ////!defined(HAVE_MKSTEMP) + + tmpOut.close(); + file.close(); diff --git a/abs/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch b/abs/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch new file mode 100644 index 0000000..f5ec498 --- /dev/null +++ b/abs/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch @@ -0,0 +1,83 @@ +diff -Naur id3lib-3.8.3-orig/configure id3lib-3.8.3/configure +--- id3lib-3.8.3-orig/configure 2008-05-24 23:39:36.000000000 -0400 ++++ id3lib-3.8.3/configure 2008-05-24 23:39:57.000000000 -0400 +@@ -10296,8 +10296,7 @@ + + for ac_header in \ + string \ +- iomanip.h \ + + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` + +diff -Naur id3lib-3.8.3-orig/include/id3/id3lib_strings.h id3lib-3.8.3/include/id3/id3lib_strings.h +--- id3lib-3.8.3-orig/include/id3/id3lib_strings.h 2008-03-05 18:19:46.000000000 -0600 ++++ id3lib-3.8.3/include/id3/id3lib_strings.h 2008-03-05 18:19:38.000000000 -0600 +@@ -30,6 +30,7 @@ + #define _ID3LIB_STRINGS_H_ + + #include ++#include + + #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000)) + namespace std +diff -Naur id3lib-3.8.3-orig/include/id3/writers.h id3lib-3.8.3/include/id3/writers.h +--- id3lib-3.8.3-orig/include/id3/writers.h 2003-03-01 18:23:00.000000000 -0600 ++++ id3lib-3.8.3/include/id3/writers.h 2008-03-05 18:23:05.000000000 -0600 +@@ -30,7 +30,7 @@ + + #include "id3/writer.h" + #include "id3/id3lib_streams.h" +-//#include ++#include + + class ID3_CPP_EXPORT ID3_OStreamWriter : public ID3_Writer + { +diff -Naur id3lib-3.8.3-orig/examples/demo_convert.cpp id3lib-3.8.3/examples/demo_convert.cpp +--- id3lib-3.8.3-orig/examples/demo_convert.cpp 2003-03-01 18:23:00.000000000 -0600 ++++ id3lib-3.8.3/examples/demo_convert.cpp 2008-03-05 18:26:50.000000000 -0600 +@@ -84,7 +84,7 @@ + } + } + +-int main( unsigned int argc, char * const argv[]) ++int main( int argc, char * const argv[]) + { + flags_t ulFlag = ID3TT_ALL; + gengetopt_args_info args; +diff -Naur id3lib-3.8.3-orig/examples/demo_info.cpp id3lib-3.8.3/examples/demo_info.cpp +--- id3lib-3.8.3-orig/examples/demo_info.cpp 2003-03-01 18:23:00.000000000 -0600 ++++ id3lib-3.8.3/examples/demo_info.cpp 2008-03-05 18:27:40.000000000 -0600 +@@ -309,7 +309,7 @@ + + #define DEBUG + +-int main( unsigned int argc, char * const argv[]) ++int main( int argc, char * const argv[]) + { + ID3D_INIT_DOUT(); + +diff -Naur id3lib-3.8.3-orig/examples/demo_tag.cpp id3lib-3.8.3/examples/demo_tag.cpp +--- id3lib-3.8.3-orig/examples/demo_tag.cpp 2003-03-01 18:23:00.000000000 -0600 ++++ id3lib-3.8.3/examples/demo_tag.cpp 2008-03-05 18:31:20.000000000 -0600 +@@ -46,7 +46,7 @@ + os << "v2"; + } + +-int main( unsigned int argc, char * const argv[]) ++int main( int argc, char * const argv[]) + { + int ulFlag = ID3TT_ID3; + ID3D_INIT_DOUT(); +diff -Naur id3lib-3.8.3-orig/examples/demo_copy.cpp id3lib-3.8.3/examples/demo_copy.cpp +--- id3lib-3.8.3-orig/examples/demo_copy.cpp 2003-03-01 18:23:00.000000000 -0600 ++++ id3lib-3.8.3/examples/demo_copy.cpp 2008-03-05 18:32:44.000000000 -0600 +@@ -81,7 +81,7 @@ + } + } + +-int main( unsigned int argc, char * const argv[]) ++int main( int argc, char * const argv[]) + { + int ulFlag = ID3TT_ID3; + ID3D_INIT_DOUT(); diff --git a/abs/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff b/abs/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff new file mode 100644 index 0000000..b05d2cf --- /dev/null +++ b/abs/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff @@ -0,0 +1,39 @@ +diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog +--- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100 +@@ -1,3 +1,8 @@ ++2006-02-17 Jerome Couderc ++ ++ * Patch from Spoon to fix UTF-16 writing bug ++ http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 ++ + 2003-03-02 Sunday 17:38 Thijmen Klok + + * THANKS (1.20): added more people +diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp +--- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100 ++++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100 +@@ -363,11 +363,22 @@ + // Write the BOM: 0xFEFF + unicode_t BOM = 0xFEFF; + writer.writeChars((const unsigned char*) &BOM, 2); ++ // Patch from Spoon : 2004-08-25 14:17 ++ // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979 ++ // Wrong code ++ //for (size_t i = 0; i < size; i += 2) ++ //{ ++ // unicode_t ch = (data[i] << 8) | data[i+1]; ++ // writer.writeChars((const unsigned char*) &ch, 2); ++ //} ++ // Right code ++ unsigned char *pdata = (unsigned char *) data.c_str(); + for (size_t i = 0; i < size; i += 2) + { +- unicode_t ch = (data[i] << 8) | data[i+1]; ++ unicode_t ch = (pdata[i] << 8) | pdata[i+1]; + writer.writeChars((const unsigned char*) &ch, 2); + } ++ // End patch + } + return writer.getCur() - beg; + } diff --git a/abs/extra/ifenslave/PKGBUILD b/abs/extra/ifenslave/PKGBUILD new file mode 100644 index 0000000..8a75170 --- /dev/null +++ b/abs/extra/ifenslave/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 12836 2008-09-21 14:41:26Z dan $ +# Maintainer: Judd Vinet +pkgname=ifenslave +pkgver=1.1.0 +pkgrel=4 +pkgdesc="Utility for bonding ethernet interfaces" +license=('GPL2') +arch=(i686 x86_64) +url="http://www.linuxfoundation.org/en/Net:Bonding" +depends=('glibc') +source=(ftp://ftp.archlinux.org/other/ifenslave/ifenslave.c bonding.conf.d) +md5sums=('b0d8e4c97094155747cc9238f762c7aa' + '397fccbf574d5082c7a3c8d3793dc000') + +build() { + cd $startdir/src + gcc $CFLAGS -I/usr/src/linux/include ifenslave.c -o ifenslave || return 1 + install -D -m755 ifenslave $startdir/pkg/sbin/ifenslave + install -D -m644 bonding.conf.d $startdir/pkg/etc/conf.d/bonding +} diff --git a/abs/extra/ifenslave/bonding.conf.d b/abs/extra/ifenslave/bonding.conf.d new file mode 100644 index 0000000..3092c5e --- /dev/null +++ b/abs/extra/ifenslave/bonding.conf.d @@ -0,0 +1,12 @@ +# +# Settings for ethernet bonding +# +# For each bond interface declared in INTERFACES (in rc.conf), declare +# a bond_${IF} variable that contains the real ethernet interfaces that +# should be bonded to the bond interface with the ifenslave utility. +# Then list the bond interface name in the BOND_INTERFACES array. +# + +#bond_bond0="eth0 eth1" +#BOND_INTERFACES=(bond0) + diff --git a/abs/extra/inadyn/PKGBUILD b/abs/extra/inadyn/PKGBUILD new file mode 100644 index 0000000..405f34d --- /dev/null +++ b/abs/extra/inadyn/PKGBUILD @@ -0,0 +1,18 @@ +pkgname=inadyn +pkgver=1.96.2 +pkgrel=4 +pkgdesc="Simple dynamic DNS client" +url="http://www.dyndns.com/support/kb/using_inadyn_with_dyndns_services.html" +makedepends=('unzip') +arch=('i686' 'x86_64') +license=('GPL') +source=(http://cdn.dyndns.com/$pkgname.zip run) + + +build() { + cd $startdir/src/$pkgname + install -m755 -D bin/linux/$pkgname $startdir/pkg/usr/sbin/$pkgname + install -m644 -D man/$pkgname.8 $startdir/pkg/usr/man/man8/$pkgname.8 + install -m644 -D man/$pkgname.conf.5 $startdir/pkg/usr/man/man5/$pkgname.conf.5 + install -m755 -D ../run $startdir/pkg/etc/sv/inadyn/run +} diff --git a/abs/extra/inadyn/run b/abs/extra/inadyn/run new file mode 100644 index 0000000..7046c12 --- /dev/null +++ b/abs/extra/inadyn/run @@ -0,0 +1,4 @@ +#!/bin/bash +exec 2>&1 +. /etc/systemconfig +exec /usr/sbin/inadyn -u $DDnslogin -p $DDnspassword -a $DDnshostname --syslog diff --git a/abs/extra/irqbalance/Makefile.irqbalance b/abs/extra/irqbalance/Makefile.irqbalance new file mode 100644 index 0000000..fe08dc0 --- /dev/null +++ b/abs/extra/irqbalance/Makefile.irqbalance @@ -0,0 +1,13 @@ +CFLAGS := $(CFLAGS) -D_FORTIFY_SOURCE=2 -Wall -W $(shell pkg-config --cflags glib-2.0) +LDFLAGS := $(shell pkg-config --libs glib-2.0) + +OBJS = bitmap.o irqbalance.o cputree.o procinterrupts.o irqlist.o \ + placement.o activate.o network.o powermode.o numa.o classify.o + +all: irqbalance + +irqbalance: $(OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +clean: + rm -f irqbalance *~ *.o diff --git a/abs/extra/irqbalance/PKGBUILD b/abs/extra/irqbalance/PKGBUILD new file mode 100644 index 0000000..5d823cd --- /dev/null +++ b/abs/extra/irqbalance/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer: Dan McGee +# Contributor: Martin Striz + +pkgname=irqbalance +pkgver=0.55 +pkgrel=3 +pkgdesc="IRQ balancing daemon for SMP systems" +arch=('i686' 'x86_64') +url="http://www.irqbalance.org/" +license=('GPL') +depends=(glib2) +makedepends=(pkgconfig) +backup=(etc/conf.d/irqbalance) +source=(http://www.irqbalance.org/releases/$pkgname-$pkgver.tar.gz + Makefile.irqbalance + irqbalance.conf.d + irqbalance.rc.d) +md5sums=('9f6b314ff1fdc14173abeb40592d4edf' + '45bc9e1d041d8547f2dbf12f887216df' + '336c1ee99818f9ecda1687e34c69fd6b' + '96efae052553711f74a61760cefa93b5') + +build() { + cd $srcdir/$pkgname-$pkgver + # use our Makefile instead of one provided which is not quite right + cp ../Makefile.irqbalance Makefile + make || return 1 + + install -D -m755 irqbalance $pkgdir/usr/sbin/irqbalance + install -D -m644 ../irqbalance.conf.d $pkgdir/etc/conf.d/irqbalance + install -D -m755 ../irqbalance.rc.d $pkgdir/etc/rc.d/irqbalance +} diff --git a/abs/extra/irqbalance/irqbalance.conf.d b/abs/extra/irqbalance/irqbalance.conf.d new file mode 100644 index 0000000..ef1bdfd --- /dev/null +++ b/abs/extra/irqbalance/irqbalance.conf.d @@ -0,0 +1,6 @@ +# +# Settings for irqbalance daemon +# + +# one shot mode - set to 1 if you have Pentium 4 with HT +ONESHOT=0 diff --git a/abs/extra/irqbalance/irqbalance.rc.d b/abs/extra/irqbalance/irqbalance.rc.d new file mode 100644 index 0000000..c8d197f --- /dev/null +++ b/abs/extra/irqbalance/irqbalance.rc.d @@ -0,0 +1,46 @@ +#!/bin/bash + +# source application-specific settings +ONESHOT=0 +[ -f /etc/conf.d/irqbalance ] && . /etc/conf.d/irqbalance + +if [ "$ONESHOT" -ne 0 ]; then + ONESHOT_CMD="oneshot" +fi + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/irqbalance` +case "$1" in + start) + stat_busy "Starting IRQ balancing" + [ -z "$PID" ] && /usr/sbin/irqbalance $ONESHOT_CMD + if [ $? -gt 0 ]; then + stat_fail + else + if [ "$ONESHOT" -eq 0 ]; then + add_daemon irqbalance + fi + stat_done + fi + ;; + stop) + stat_busy "Stopping IRQ balancing" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon irqbalance + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/iso-codes/PKGBUILD b/abs/extra/iso-codes/PKGBUILD new file mode 100644 index 0000000..21504a3 --- /dev/null +++ b/abs/extra/iso-codes/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 1166 2008-05-01 15:36:12Z jgc $ +# Maintainer: Jan de Groot + +pkgname=iso-codes +pkgver=2.0 +pkgrel=1 +arch=(i686 x86_64) +license=('LGPL') +pkgdesc="Lists of the country, language, and currency names" +source=(ftp://pkg-isocodes.alioth.debian.org/pub/pkg-isocodes/${pkgname}-${pkgver}.tar.bz2) +url="http://pkg-isocodes.alioth.debian.org/" +md5sums=('58e7fee45749583e11a3880c8e1ae567') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${pkgdir} pkgconfigdir=/usr/lib/pkgconfig install || return 1 +} diff --git a/abs/extra/iw/PKGBUILD b/abs/extra/iw/PKGBUILD new file mode 100644 index 0000000..052e6d0 --- /dev/null +++ b/abs/extra/iw/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 24436 2009-01-17 00:02:46Z thomas $ +# Maintainer: Thomas Baechler + +pkgname=iw +pkgver=0.9.8 +pkgrel=1 +pkgdesc="nl80211 based CLI configuration utility for wireless devices" +arch=("i686" "x86_64") +url="http://www.linuxwireless.org/en/users/Documentation/iw" +license=("GPL") +depends=("libnl") +makedepends=("kernel-headers") +source=(http://wireless.kernel.org/download/$pkgname/$pkgname-$pkgver.tar.bz2) +md5sums=('d39f85e3866b1be5533fe0edce412951') + +build() { + cd $pkgname-$pkgver + make || return 1 + make DESTDIR=$pkgdir install +} diff --git a/abs/extra/jade/PKGBUILD b/abs/extra/jade/PKGBUILD new file mode 100644 index 0000000..e6a7722 --- /dev/null +++ b/abs/extra/jade/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 3700 2008-06-29 13:36:31Z jgc $ +# Maintainer: dorphell +# Contributor: Tom Newsom +pkgname=jade +pkgver=1.2.1 +pkgrel=5 +_debpatch=47 +pkgdesc="James Clark's DSSSL Engine" +url='http://www.jclark.com/jade/' +arch=('i686' 'x86_64') +license=('custom') +depends=('gcc-libs') +replaces='openjade' +options=('!libtool') +source=(ftp://ftp.jclark.com/pub/jade/jade-${pkgver}.tar.gz + http://ftp.debian.org/debian/pool/main/j/jade/jade_${pkgver}-${_debpatch}.diff.gz) +md5sums=('4239670ca6b578bff68b8c2e7cd1225f' + 'feb3889e2a5fa86ac6bdb742a25d0001') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -Np1 -i ${srcdir}/jade_${pkgver}-${_debpatch}.diff || return 1 + chmod 755 configure || return 1 + ./configure --prefix=/usr --enable-default-catalog=/usr/share/sgml/catalog || return 1 + make || return 1 + install -d -m755 ${pkgdir}/usr/lib + make prefix=${pkgdir}/usr install || return 1 + mv ${pkgdir}/usr/bin/sx ${pkgdir}/usr/bin/sgml2xml || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 +} diff --git a/abs/extra/joyutils/PKGBUILD b/abs/extra/joyutils/PKGBUILD new file mode 100644 index 0000000..bd24a63 --- /dev/null +++ b/abs/extra/joyutils/PKGBUILD @@ -0,0 +1,31 @@ +# Maintainer: Arkham +# Contributor: dirty_d + +pkgname=joyutils +pkgver=1.2.15 +pkgrel=2 +pkgdesc="jscal, jstest, and jsattach utilities for the linux joystick driver" +arch=('i686' 'x86_64') +url="http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/" +license=('GPL') +source=(ftp://atrey.karlin.mff.cuni.cz/pub/linux/joystick/joystick-$pkgver.tar.gz) +md5sums=('023500eb6986e1a94aa1a0c30af729c2') + +build() { + # Fix some warnings + cd $srcdir/joystick-$pkgver + sed -i 's:#include :#include \n#include :' jscal.c + + # Compile + gcc -lm -o jscal jscal.c + gcc -o jstest jstest.c + gcc -o jsattach jsattach.c + + # Install + install -Dm 755 jscal $pkgdir/usr/bin/jscal + install -m 755 jstest $pkgdir/usr/bin/ + install -m 755 jsattach $pkgdir/usr/bin/ + install -Dm 644 jscal.1 $pkgdir/usr/share/man/man1/jscal.1 + install -m 644 jstest.1 $pkgdir/usr/share/man/man1/ + install -m 644 jsattach.1 $pkgdir/usr/share/man/man1/ +} diff --git a/abs/extra/ladspa/PKGBUILD b/abs/extra/ladspa/PKGBUILD new file mode 100644 index 0000000..c734ca0 --- /dev/null +++ b/abs/extra/ladspa/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 18545 2008-11-06 23:58:57Z jgc $ +# Maintainer: damir + +pkgname=ladspa +pkgver=1.13 +pkgrel=2 +pkgdesc="Linux Audio Developer's Simple Plugin API (LADSPA)" +arch=("i686" "x86_64") +license=('LGPL') +url="http://www.ladspa.org/" +depends=('gcc-libs>=4.3') +source=(http://www.ladspa.org/download/${pkgname}_sdk_${pkgver}.tgz + hardcode-path.patch) +md5sums=('671be3e1021d0722cadc7fb27054628e' + '27743258232d828575d66940e6de2858') + +build() { + cd "${srcdir}/${pkgname}_sdk/src" + patch -Np1 -i "${srcdir}/hardcode-path.patch" || return 1 + sed -i -e 's/mkdirhier/mkdir -p/' makefile || return 1 + make targets || return 1 + make INSTALL_PLUGINS_DIR="${pkgdir}/usr/lib/ladspa/" \ + INSTALL_INCLUDE_DIR="${pkgdir}/usr/include/" \ + INSTALL_BINARY_DIR="${pkgdir}/usr/bin/" install || return 1 +} diff --git a/abs/extra/ladspa/hardcode-path.patch b/abs/extra/ladspa/hardcode-path.patch new file mode 100644 index 0000000..821c200 --- /dev/null +++ b/abs/extra/ladspa/hardcode-path.patch @@ -0,0 +1,28 @@ +--- src/search.c.orig 2008-11-07 00:38:18.000000000 +0100 ++++ src/search.c 2008-11-07 00:50:51.000000000 +0100 +@@ -83,6 +83,8 @@ + dlclose(pcFilename); + free(pcFilename); + } ++ } else { ++ free(pcFilename); + } + } + } +@@ -99,13 +101,10 @@ + + pcLADSPAPath = getenv("LADSPA_PATH"); + if (!pcLADSPAPath) { +- fprintf(stderr, +- "Warning: You do not have a LADSPA_PATH " +- "environment variable set.\n"); +- return; ++ pcStart = "/usr/lib/ladspa/"; ++ } else { ++ pcStart = pcLADSPAPath; + } +- +- pcStart = pcLADSPAPath; + while (*pcStart != '\0') { + pcEnd = pcStart; + while (*pcEnd != ':' && *pcEnd != '\0') diff --git a/abs/extra/lcdproc/PKGBUILD b/abs/extra/lcdproc/PKGBUILD new file mode 100644 index 0000000..7ee6e50 --- /dev/null +++ b/abs/extra/lcdproc/PKGBUILD @@ -0,0 +1,29 @@ +# Contributor: Bernhard Walle +pkgname=lcdproc +pkgver=0.5.2 +pkgrel=2 +pkgdesc="LCDproc is a utility to drive one or more LCD (and LCD-like) devices attached to a host." +url="http://lcdproc.omnipotent.net/" +license="GPL" +depends=(libusb serdisplib libftdi autoconf automake lirc libnxml libmrss pkgconfig xosd) +backup=(etc/LCDd.conf) +arch=(i686 x86_64) +source=(http://switch.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz + lcdd + lcdproc-add-serdisplib + ) +md5sums=('860f192d061d87dda6512b11b79daac2' + '56f52dcccd6e129a9cf84cd1a0452d56' + '274322642740ad323c43ec5d324519d4') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -p1 < ../lcdproc-add-serdisplib + autoreconf + ./configure --prefix=/usr --sysconfdir=/etc --enable-libusb --enable-lcdproc-menus --enable-stat-smbfs --enable-drivers=all + make + make DESTDIR=$startdir/pkg install + sed -e "s/server\/drivers\//\/usr\/lib\/lcdproc\//g" LCDd.conf > $startdir/pkg/etc/LCDd.conf + mkdir -p $startdir/pkg/etc/rc.d + install -m 755 $startdir/src/lcdd $startdir/pkg/etc/rc.d +} diff --git a/abs/extra/lcdproc/__changelog b/abs/extra/lcdproc/__changelog new file mode 100644 index 0000000..52c2d35 --- /dev/null +++ b/abs/extra/lcdproc/__changelog @@ -0,0 +1 @@ +add xosd \ No newline at end of file diff --git a/abs/extra/lcdproc/lcdd b/abs/extra/lcdproc/lcdd new file mode 100755 index 0000000..a124c00 --- /dev/null +++ b/abs/extra/lcdproc/lcdd @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/LCDd` +case "$1" in + start) + stat_busy "Starting LCDd daemon" + [ -z "$PID" ] && /usr/sbin/LCDd -c /etc/LCDd.conf + if [ $? -gt 0 ]; then + stat_fail + else + echo $PID > /var/run/lcdd.pid + add_daemon lcdd + stat_done + fi + ;; + stop) + stat_busy "Stopping LCDd daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm /var/run/lcdd.pid + rm_daemon lcdd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/lcdproc/lcdproc-add-serdisplib b/abs/extra/lcdproc/lcdproc-add-serdisplib new file mode 100644 index 0000000..48d239a --- /dev/null +++ b/abs/extra/lcdproc/lcdproc-add-serdisplib @@ -0,0 +1,1353 @@ +[PATCH] Add serdisplib driver + +This patch adds a serdisplib driver for the serdisplib library +(http://serdisplib.sf.net) that is used for low-level accessing of dot-matrix +devices (i.e. such displays that are drived by pixel and not by characters +unlike HD44780, for example). + +I know there's already glcdlib. But that approach has several disadvantages: + + o Unnecessary library dependencies. + o Complicated installation, i.e. you have to edit two configuration files. + o Too much redraws. In fact, that was the reason for me to write this + driver because my ctinclud display (http://www.ct-maeusekino.de) was quite + unusable with the glcdlib driver. The problem is simply that lcdproc + redraws the whole screen each second and it's the task of the driver + to not to redraw it in reality. The problem is now that the glcdproc + driver only has the view of characters, and cannot decide which pixels it + actually has to redraw. And graphlcd which has the per-pixel view doesn't + do that "caching" and simply redraws all. Of course, that _can_ + be changed in graphlcd, but I'm sure that leads to endless discussions and + because I didn't like the glcdlib -> graphlcd -> serdisplib approach + anyway, I decided to write that driver. + +Some important design decisions: + + o The driver is split into lcdgraphic.c and serdisplib.c. All function that + do the character -> pixel "rendering" are split out into lcdgraphic.c, + so it would be possible to write another low-level driver that uses that + function. However, in normal cases it makes more sense to add that part to + serdisplib. + o It only requires FreeType (http://freetype.sf.net) for font rendering. + That's no new real dependency because in almost all cases, graphlcd was + compiled with FreeType support. + o Only mono space fonts are supported. + o The driver implements symbols (arrow, etc.) using Unicode characters of the + font. (The recommended font is Andale Mono which is available for free + from http://corefonts.sf.net) + o Works on i686 and x86_64. + +Please review. The patch is against 0.5.2. If you consider to add this into +CVS, I'll provide documentation. And this time, I'll provide the documentation +in time unlike with the ula200 driver. ;-) + + +Signed-off-by: Bernhard Walle + +--- + LCDd.conf | 28 ++ + acinclude.m4 | 27 +- + server/drivers/Makefile.am | 5 + server/drivers/lcdgraphic.c | 590 ++++++++++++++++++++++++++++++++++++++++++++ + server/drivers/lcdgraphic.h | 195 ++++++++++++++ + server/drivers/serdisplib.c | 379 ++++++++++++++++++++++++++++ + 6 files changed, 1220 insertions(+), 4 deletions(-) + +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -10,13 +10,13 @@ AC_ARG_ENABLE(drivers, + [ irman,joy,lb216,lcdm001,lcterm,lirc,MD8800,ms6931,] + [ mtc_s16209x,MtxOrb,NoritakeVFD,picolcd,pyramid,sed1330] + [ sed1520,serialPOS,serialVFD,sli,stv5730,svga,t6963,text,] +- [ tyan,ula200,xosd] ++ [ tyan,ula200,serdisplib,xosd] + [ 'all' compiles all drivers;] + [ 'all,!xxx,!yyy' de-selects previously selected drivers], + drivers="$enableval", + drivers=[bayrad,CFontz,CFontz633,curses,CwLnx,glk,lb216,lcdm001,MtxOrb,pyramid,text]) + +-allDrivers=[bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,ea65,EyeboxOne,g15,glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,joy,lb216,lcdm001,lcterm,lirc,MD8800,ms6931,mtc_s16209x,MtxOrb,NoritakeVFD,picolcd,pyramid,sed1330,sed1520,serialPOS,serialVFD,sli,stv5730,svga,t6963,text,tyan,ula200,xosd] ++allDrivers=[bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,ea65,EyeboxOne,g15,glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,joy,lb216,lcdm001,lcterm,lirc,MD8800,ms6931,mtc_s16209x,MtxOrb,NoritakeVFD,picolcd,pyramid,sed1330,sed1520,serialPOS,serialVFD,sli,stv5730,svga,t6963,text,tyan,ula200,serdisplib,xosd] + + drivers=`echo $drivers | sed -e 's/,/ /g'` + +@@ -383,6 +383,29 @@ dnl else + AC_MSG_WARN([The ula200 driver needs ftdi.h and usb.h]) + ]) + ;; ++ serdisplib) ++ LIBFREETYPE_CFLAGS=`pkg-config --cflags freetype2` ++ LIBFREETYPE_LIBS=`pkg-config --libs freetype2` ++ if test x"$LIBFREETYPE_CFLAGS" = "x" ; then ++ AC_MSG_WARN([The serdisplib driver needs freetype2]) ++ fi ++ ++ AC_CHECK_HEADERS([serdisplib/serdisp.h],[ ++ AC_CHECK_LIB(serdisp, serdisp_nextdisplaydescription,[ ++ LIBSERDISP="-lserdisp" ++ DRIVERS="$DRIVERS serdisplib${SO}" ++ actdrivers=["$actdrivers serdisplib"] ++ ],[ ++ AC_MSG_WARN([The serdisplib driver needs serdisplib]) ++ ]) ++ ],[ ++ AC_MSG_WARN([The serdisplib driver needs serdislib/serdisp.h]) ++ ]) ++ ++ AC_SUBST(LIBFREETYPE_CFLAGS) ++ AC_SUBST(LIBFREETYPE_LIBS) ++ AC_SUBST(LIBSERDISP) ++ ;; + xosd) + AC_CHECK_HEADERS([xosd.h],[ + AC_CHECK_LIB(xosd, main,[ +--- a/server/drivers/Makefile.am ++++ b/server/drivers/Makefile.am +@@ -19,12 +19,13 @@ AM_LDFLAGS = @LDSHARED@ + #LIBS = + + pkglib_PROGRAMS = @DRIVERS@ +-EXTRA_PROGRAMS = bayrad CFontz CFontz633 CFontzPacket curses CwLnx ea65 EyeboxOne g15 glcdlib glk hd44780 icp_a106 imon IOWarrior irman joy lb216 lcdm001 lcterm lirc MD8800 ms6931 mtc_s16209x MtxOrb NoritakeVFD picolcd pyramid sed1330 sed1520 serialPOS serialVFD stv5730 svga t6963 text tyan sli ula200 xosd ++EXTRA_PROGRAMS = bayrad CFontz CFontz633 CFontzPacket curses CwLnx ea65 EyeboxOne g15 glcdlib glk hd44780 icp_a106 imon IOWarrior irman joy lb216 lcdm001 lcterm lirc MD8800 ms6931 mtc_s16209x MtxOrb NoritakeVFD picolcd pyramid sed1330 sed1520 serialPOS serialVFD stv5730 svga t6963 text tyan sli ula200 serdisplib xosd + noinst_LIBRARIES = libLCD.a libbignum.a + + IOWarrior_CFLAGS = @libusb_cflags@ $(AM_CFLAGS) + hd44780_CFLAGS = @libusb_cflags@ $(AM_CFLAGS) + g15_CFLAGS = @libusb_cflags@ $(AM_CFLAGS) ++serdisplib_CFLAGS = @LIBFREETYPE_CFLAGS@ $(AM_CFLAGS) + + CFontz_LDADD = libLCD.a libbignum.a + CFontz633_LDADD = libLCD.a libbignum.a +@@ -53,6 +54,7 @@ svga_LDADD = @LIBSVGA@ + t6963_LDADD = libLCD.a + tyan_LDADD = libLCD.a libbignum.a + ula200_LDADD = libLCD.a @LIBFTDI@ ++serdisplib_LDADD = libLCD.a @LIBSERDISP@ @LIBFREETYPE_LIBS@ + sli_LDADD = libLCD.a + xosd_LDADD = @LIBXOSD@ + +@@ -99,6 +101,7 @@ t6963_SOURCES = lcd.h lcd_lib.h t69 + text_SOURCES = lcd.h text.h text.c report.h + tyan_SOURCES = lcd.h lcd_lib.h tyan_lcdm.h tyan_lcdm.c report.h adv_bignum.h + ula200_SOURCES = lcd.h lcd_lib.h ula200.h ula200.c report.h ++serdisplib_SOURCES = lcd.h serdisplib.h serdisplib.c lcdgraphic.c lcdgraphic.h + sli_SOURCES = lcd.h lcd_lib.h wirz-sli.h wirz-sli.c report.h + xosd_SOURCES = lcd.h xosdlib_drv.c xosdlib_drv.h report.h + +--- /dev/null ++++ b/server/drivers/lcdgraphic.c +@@ -0,0 +1,590 @@ ++// Description: ++ ++/* Copyright (C) 2007 Bernhard Walle ++ ++ 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 ++ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "lcdgraphic.h" ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Defines ++ ++#undef report ++#define lcdgr_report lcdgr->drv->report ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Returns the value of a pixel in the new_buffer buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x location of the pixel ++// @param y the y location of the pixel ++// ++// @return the value of the pixel ++// ++static inline int get_pixel_new(struct lcdgraphic *lcdgr, int x, int y) ++{ ++ if (x >= lcdgr->width || y >= lcdgr->height) ++ return -1; ++ else ++ return lcdgr->new_buffer[lcdgr->width * y + x]; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Returns the value of a pixel in the disp_buffer buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x location of the pixel ++// @param y the y location of the pixel ++// ++// @return the value of the pixel ++// ++static inline int get_pixel_disp(struct lcdgraphic *lcdgr, int x, int y) ++{ ++ if (x >= lcdgr->width || y >= lcdgr->height) ++ return -1; ++ else ++ return lcdgr->disp_buffer[lcdgr->width * y + x]; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Sets the value of a pixel in the new_buffer buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x location of the pixel ++// @param y the y location of the pixel ++// @param value the value to which the buffer should be set ++// ++static void set_pixel_new(struct lcdgraphic *lcdgr, int x, int y, int value) ++{ ++ if (x < lcdgr->width && y < lcdgr->height) ++ lcdgr->new_buffer[lcdgr->width * y + x] = value; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Sets the value of a pixel in the disp_buffer buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x location of the pixel ++// @param y the y location of the pixel ++// @param value the value to which the buffer should be set ++// ++static void set_pixel_disp(struct lcdgraphic *lcdgr, int x, int y, int value) ++{ ++ if (x < lcdgr->width && y < lcdgr->height) ++ lcdgr->disp_buffer[lcdgr->width * y + x] = value; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Maps a lcdproc icon to a unicode code for an icon. ++// ++// @param icon the lcdproc icon constant ++// ++// @return Unicode value ++// ++static int icon2unicode(int icon) ++{ ++ switch (icon) { ++ case ICON_BLOCK_FILLED: ++ return UNICODE_BLOCK_FILLED; ++ case ICON_HEART_FILLED: ++ return UNICODE_HEART_FILLED; ++ case ICON_HEART_OPEN: ++ return UNICODE_HEART_OPEN; ++ case ICON_ARROW_UP: ++ return UNICODE_ARROW_UP; ++ case ICON_ARROW_DOWN: ++ return UNICODE_ARROW_DOWN; ++ case ICON_ARROW_LEFT: ++ return UNICODE_ARROW_LEFT; ++ case ICON_ARROW_RIGHT: ++ return UNICODE_ARROW_RIGHT; ++ case ICON_SELECTOR_AT_LEFT: ++ return UNICODE_SELECTOR_AT_LEFT; ++ case ICON_SELECTOR_AT_RIGHT: ++ return UNICODE_SELECTOR_AT_RIGHT; ++ case ICON_ELLIPSIS: ++ return UNICODE_ELLIPSIS; ++ default: ++ return -1; ++ } ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Initialises the instance ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure (not initialised, ++// only allocated ++// @param settings a pointer to a settings structure, for a description of the ++// members, see above ++// @param functions a pointer to the functions structure, for a description of ++// the members, see above ++// ++// @return 0 on success, != 0 on failure ++// ++int lcdgraphic_init(struct lcdgraphic *lcdgr, ++ struct lcdgraphic_settings *settings, ++ struct lcdgraphic_functions *functions) ++{ ++ int ret; ++ ++ // check the arguments ++ if (!lcdgr || !functions || !settings) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_init: one of the arguments is NULL"); ++ return -EINVAL; ++ } ++ ++ // check functions ++ if (!functions->setpixel || !functions->clear || !functions->flush) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_init: all functions must be valid"); ++ return -EINVAL; ++ } ++ ++ // validation ++ if (settings->cwidth == 0 || settings->cheight == 0) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_init: cwidth / cheight is 0"); ++ return -EINVAL; ++ } ++ ++ // zero all first ++ memset(lcdgr, 0, sizeof(struct lcdgraphic)); ++ ++ // assign some members ++ lcdgr->width = settings->width; ++ lcdgr->height = settings->height; ++ lcdgr->cwidth = settings->cwidth; ++ lcdgr->cheight = settings->cheight; ++ lcdgr->bwidth = settings->bheight; ++ lcdgr->drv = settings->drv; ++ strncpy(lcdgr->normal_font, settings->normal_font, PATH_MAX); ++ lcdgr->normal_font[PATH_MAX-1] = 0; ++ lcdgr->funcs = *functions; ++ lcdgr->all_dirty = 1; ++ ++ // calculate some stuff ++ lcdgr->num_pixels = lcdgr->width * lcdgr->height; ++ lcdgr->xchars = (lcdgr->width - 2*lcdgr->bwidth) / lcdgr->cwidth; ++ lcdgr->ychars = (lcdgr->height - 2*lcdgr->bheight) / lcdgr->cheight; ++ ++ // initialise freetype ++ ret = FT_Init_FreeType(&lcdgr->ft_library); ++ if (ret != 0) { ++ lcdgr_report(RPT_ERR, "Freetype initialisation failed"); ++ goto out; ++ } ++ ++ // load the font face for freetype ++ ret = FT_New_Face(lcdgr->ft_library, lcdgr->normal_font, 0, ++ &lcdgr->ft_normal_font); ++ if (ret != 0) { ++ lcdgr_report(RPT_ERR, "Freetype creation of font '%s' failed", ++ lcdgr->normal_font); ++ goto out; ++ } ++ ++ // allocate the buffers ++ lcdgr->disp_buffer = (int *)malloc(sizeof(int) * lcdgr->num_pixels); ++ if (!lcdgr->disp_buffer) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_init: malloc of disp_buffer failed"); ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ lcdgr->new_buffer = (int *)malloc(sizeof(int) * lcdgr->num_pixels); ++ if (!lcdgr->new_buffer) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_init: malloc of new_buffer failed"); ++ ret = -ENOMEM; ++ goto out; ++ } ++ ++ // clear buffers initially ++ memset(lcdgr->new_buffer, 0, sizeof(int) * lcdgr->num_pixels); ++ memset(lcdgr->disp_buffer, 0, sizeof(int) * lcdgr->num_pixels); ++ ++ return 0; ++ ++out: ++ if (lcdgr->ft_normal_font) ++ FT_Done_Face(lcdgr->ft_normal_font); ++ if (lcdgr->ft_library) ++ FT_Done_FreeType(lcdgr->ft_library); ++ if (lcdgr->new_buffer) ++ free(lcdgr->new_buffer); ++ if (lcdgr->disp_buffer) ++ free(lcdgr->disp_buffer); ++ ++ return ret; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Destroys the instance ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// ++void lcdgraphic_destroy(struct lcdgraphic *lcdgr) ++{ ++ if (!lcdgr) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_destroy: lcdgr == NULL"); ++ return; ++ } ++ ++ if (lcdgr->ft_normal_font) ++ FT_Done_Face(lcdgr->ft_normal_font); ++ if (lcdgr->ft_library) ++ FT_Done_FreeType(lcdgr->ft_library); ++ ++ free(lcdgr->disp_buffer); ++ free(lcdgr->new_buffer); ++ ++ // allow multiple calls of that function ++ lcdgr->disp_buffer = NULL; ++ lcdgr->new_buffer = NULL; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Returns the number of characters in one line. This function can be used ++// inside the width callback of the display driver. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// ++// @return the number of characters in a line ++// ++int lcdgraphic_width(struct lcdgraphic *lcdgr) ++{ ++ if (!lcdgr) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_destroy: lcdgr == NULL"); ++ return -1; ++ } ++ ++ return lcdgr->xchars; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Returns the number of lines. This function can be used inside the height ++// callback of the display driver. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// ++// @return the number lines ++// ++int lcdgraphic_height(struct lcdgraphic *lcdgr) ++{ ++ if (!lcdgr) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_destroy: lcdgr == NULL"); ++ return -1; ++ } ++ ++ return lcdgr->ychars; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Clears the buffer. Doesn't draw anything. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// ++void lcdgraphic_clear(struct lcdgraphic *lcdgr) ++{ ++ if (!lcdgr) { ++ lcdgr_report(RPT_ERR, "lcdgraphic_destroy: lcdgr == NULL"); ++ return; ++ } ++ ++ memset(lcdgr->new_buffer, 0, sizeof(int) * lcdgr->num_pixels); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a string into the display buffer. This calls lcdgraphic_draw_char() ++// internally. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the column (position in characters!) where the character ++// should be drawn ++// @param y the line (position in characters!) where the character ++// should be drawn ++// @param str the string that should be drawn ++// ++void lcdgraphic_draw_string(struct lcdgraphic *lcdgr, int x, int y, char *str) ++{ ++ int i; ++ int num_chars = strlen(str); ++ ++ // check string length ++ if (x + num_chars > lcdgr->xchars) { ++ lcdgr_report(RPT_WARNING, "lcdgraphic_draw_string: %dx%d - %s too long", ++ x, y, str); ++ return; ++ } ++ ++ for (i = 0; i < num_chars; i++) ++ lcdgraphic_draw_char(lcdgr, x + i, y, str[i]); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a Unicode character into the display buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the column (position in characters!) where the character ++// should be drawn ++// @param y the line (position in characters!) where the character ++// should be drawn ++// @param c the character that should be drawn (unicode code) ++// @param scale for big numbers -- the number of cells that the rendered ++// string should occupy ++// @param width the width in characters ++// ++static int lcdgraphic_draw_char_unicode(struct lcdgraphic *lcdgr, ++ int x, ++ int y, ++ int c, ++ int scale, ++ int width) ++{ ++ static int last_font_size = -1; ++ int xoffset, yoffset; // in pixel ++ int err; ++ FT_Bitmap *bitmap; ++ unsigned char *bitmap_buf; ++ int col, row; ++ FT_GlyphSlot glyph; ++ FT_Face face; ++ int cwidth, cheight; ++ int font_size; ++ ++ face = lcdgr->ft_normal_font; ++ xoffset = lcdgr->bwidth + x*lcdgr->cwidth; ++ yoffset = lcdgr->bheight + y*lcdgr->cheight; ++ ++ // set the font size ++ font_size = lcdgr->cheight * scale; ++ if (last_font_size != font_size) { ++ err = FT_Set_Pixel_Sizes(lcdgr->ft_normal_font, font_size, font_size); ++ if (err != 0) { ++ lcdgr_report(RPT_ERR, "Failed to set pixel size (%dx%x)", ++ lcdgr->cwidth * scale, lcdgr->cheight * scale); ++ return -1; ++ } ++ ++ last_font_size = font_size; ++ } ++ ++ // load the glyph and render it ++ err = FT_Load_Char(lcdgr->ft_normal_font, c, ++ FT_LOAD_RENDER | FT_LOAD_MONOCHROME); ++ if (err != 0) { ++ lcdgr_report(RPT_WARNING, "lcdgraphic_draw_char: loading char " ++ "'%c' (%d) failed", c, c); ++ ++ return -1; ++ } ++ ++ // clear the rectangle first ++ cwidth = lcdgr->cwidth * width; ++ cheight = lcdgr->cheight * scale; ++ for (col = 0; col < cwidth; col++) ++ for (row = 0; row < cheight; row++) ++ set_pixel_new(lcdgr, xoffset + col, yoffset + row, 0); ++ ++ // set some data elements for convenience ++ glyph = lcdgr->ft_normal_font->glyph; ++ bitmap = &glyph->bitmap; ++ bitmap_buf = bitmap->buffer; ++ ++ // and now copy the pixels ++ for (row = 0; row < bitmap->rows; row++) { ++ for (col = 0; col < bitmap->width; col++) { ++ int bitmap_left = glyph->bitmap_left; ++ ++ if (scale != width) ++ bitmap_left = (cwidth - bitmap->width)/2; ++ ++ set_pixel_new(lcdgr, xoffset + col + bitmap_left, ++ yoffset + row + lcdgr->cheight + (face->size->metrics.descender >> 6) ++ - glyph->bitmap_top, ++ bitmap_buf[col/8] >> (7 - (col % 8)) & 1); ++ } ++ bitmap_buf += bitmap->pitch; ++ } ++ ++ return 0; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a character into the display buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the column (position in characters!) where the character ++// should be drawn ++// @param y the line (position in characters!) where the character ++// should be drawn ++// @param c the character that should be drawn ++// ++void lcdgraphic_draw_char(struct lcdgraphic *lcdgr, int x, int y, char c) ++{ ++ if (lcdgraphic_draw_char_unicode(lcdgr, x, y, c & 0xff, 1, 1) != 0) ++ lcdgraphic_draw_char_unicode(lcdgr, x, y, '?', 1, 1); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a big number into the display buffer. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x position ++// @param num the actual number ++// ++void lcdgraphic_draw_num(struct lcdgraphic *lcdgr, int x, int num) ++{ ++ int y; ++ const int BIG_HEIGHT = 3; ++ ++ if (num < 0 || num > 10) { ++ lcdgr_report(RPT_WARNING, "lcdgraphic_draw_num: num out of range (%d)", num); ++ return; ++ } ++ ++ y = lcdgr->ychars - (lcdgr->ychars - BIG_HEIGHT + 1)/2; ++ if (num == 10) ++ lcdgraphic_draw_char_unicode(lcdgr, x, y, ':', BIG_HEIGHT, 1); ++ else ++ lcdgraphic_draw_char_unicode(lcdgr, x, y, '0' + num, BIG_HEIGHT, BIG_HEIGHT); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws an icon (which standard lcdproc icon syntax) ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x position of the icon ++// @param y the y position of the icon ++// @param icon the icon constant ++// ++// @return 0 on success, -1 on failure (i.e. the core replaces the icon by a ++// suitable character ++// ++int lcdgraphic_icon(struct lcdgraphic *lcdgr, int x, int y, int icon) ++{ ++ int unicode; ++ ++ unicode = icon2unicode(icon); ++ if (unicode > 0) ++ return lcdgraphic_draw_char_unicode(lcdgr, x, y, unicode, 1, 1); ++ else ++ return -1; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a horizontal bar ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x position of the bar ++// @param y the y position of the bar ++// @param len the maximum length ++// @param promille the current state ++// @param options ++// ++void lcdgraphic_hbar(struct lcdgraphic *lcdgr, ++ int x, ++ int y, ++ int len, ++ int promille, ++ int options) ++{ ++ int startx, midx, endx, starty, endy; ++ int col, row; ++ ++ /* calculate positions */ ++ startx = lcdgr->bwidth + x*lcdgr->cwidth; ++ midx = startx + promille * (len*lcdgr->cwidth) / 1000; ++ endx = startx + len*lcdgr->cwidth; ++ starty = lcdgr->bheight + y*lcdgr->cheight; ++ endy = starty + lcdgr->cheight - 1; /* don't draw the last line */ ++ ++ for (col = startx; col < endx; col++) ++ for (row = starty; row < endy; row++) ++ set_pixel_new(lcdgr, col, row, col < midx); ++} ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a vertical bar ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// @param x the x position of the bar ++// @param y the y position of the bar ++// @param len the maximum length ++// @param promille the current state ++// @param options ++// ++void lcdgraphic_vbar(struct lcdgraphic *lcdgr, ++ int x, ++ int y, ++ int len, ++ int promille, ++ int options) ++{ ++ int startx, endx, starty, midy, endy; ++ int col, row; ++ ++ /* calculation positions */ ++ startx = lcdgr->bwidth + x*lcdgr->cwidth; ++ endx = startx + lcdgr->cwidth - 1; /* don't draw the last column */ ++ starty = lcdgr->bheight + (y + 1)*lcdgr->cheight - 1; ++ midy = starty - promille * (len*lcdgr->cheight) / 1000; ++ endy = starty - len*lcdgr->cheight; ++ ++ for (col = startx; col < endx; col++) ++ for (row = starty; row > endy; row--) ++ set_pixel_new(lcdgr, col, row, row > midy); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Flushes the output to the display. Uses the provided callback functions ++// of the underlying display. ++// ++// @param lcdgr a pointer to a valid lcdgraphic structure ++// ++void lcdgraphic_flush(struct lcdgraphic *lcdgr) ++{ ++ int x, y; ++ ++ if (lcdgr->all_dirty) ++ lcdgr->funcs.clear(lcdgr->drv); ++ ++ for (y = 0; y < lcdgr->height; y++) { ++ for (x = 0; x < lcdgr->width; x++) { ++ int val = get_pixel_new(lcdgr, x, y); ++ ++ if (lcdgr->all_dirty || ++ (val != get_pixel_disp(lcdgr, x, y)) ) { ++ lcdgr->funcs.setpixel(lcdgr->drv, x, y, val); ++ set_pixel_disp(lcdgr, x, y, val); ++ } ++ } ++ } ++ ++ lcdgr->funcs.flush(lcdgr->drv); ++ lcdgr->all_dirty = 0; ++} ++ ++// vimx: set sw=4 ts=4 et: +--- /dev/null ++++ b/server/drivers/lcdgraphic.h +@@ -0,0 +1,195 @@ ++// Description: ++ ++/* Copyright (C) 2007 Bernhard Walle ++ ++ 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 ++ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ ++ ++#ifndef LCDGRAPHIC_H ++#define LCDGRAPHIC_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include ++#include FT_FREETYPE_H ++ ++#include ++ ++ ++#include "lcd.h" ++#include "report.h" ++#include "timing.h" ++ ++/////////////////////////////////////////////////////////////////////////////// ++// constants ++// ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Unicode characters ++// ++ ++#define UNICODE_BLOCK_FILLED 0x2588 ++#define UNICODE_HEART_OPEN 0x2661 ++#define UNICODE_HEART_FILLED 0x2665 ++#define UNICODE_ARROW_UP 0x2191 ++#define UNICODE_ARROW_DOWN 0x2193 ++#define UNICODE_ARROW_LEFT 0x2190 ++#define UNICODE_ARROW_RIGHT 0x2192 ++#define UNICODE_CHECKBOX_OFF -1 /* -1 == not implemented */ ++#define UNICODE_CHECKBOX_ON -1 ++#define UNICODE_CHECKBOX_GRAY -1 ++#define UNICODE_SELECTOR_AT_LEFT -1 ++#define UNICODE_SELECTOR_AT_RIGHT -1 ++#define UNICODE_ELLIPSIS -1 ++ ++/////////////////////////////////////////////////////////////////////////////// ++// These are callback functions that the low level driver must provide ++// ++struct lcdgraphic_functions { ++ ++ // sets the colour of a pixel ++ void (*setpixel)(Driver *drvthis, int x, int y, int pixel); ++ ++ // clears the whole display ++ void (*clear)(Driver *drvthis); ++ ++ // flushes the display ++ void (*flush)(Driver *drvthis); ++}; ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// That structure should be passed by the user, while struct lcdgraphic is ++// entirely private to the library ++struct lcdgraphic_settings { ++ ++ // the width and the height (in number of pixels) of the display ++ int width, height; ++ ++ // the width and the height of one character ++ int cwidth, cheight; ++ ++ // defines unused area on the display (border width / border height) ++ int bwidth, bheight; ++ ++ // that's the cookie that is passed to the callback functions ++ // it's also used for reporting errors ++ Driver *drv; ++ ++ // font file used for normal characters (TTF, must be monospaced) ++ char normal_font[PATH_MAX]; ++}; ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Private structure for drivers that use the functions of that library. ++// Don't access the members by hand here. ++// ++struct lcdgraphic { ++ ++ // --- public members from the structure above ----- ++ ++ // the width and the height (in number of pixels) of the display ++ int width, height; ++ ++ // the width and the height of one character ++ int cwidth, cheight; ++ ++ // defines unused area on the display (border width / border height) ++ int bwidth, bheight; ++ ++ // that's the cookie that is passed to the callback functions ++ // it's also used for reporting errors ++ Driver *drv; ++ ++ // font file used for normal characters (TTF, must be monospaced) ++ char normal_font[PATH_MAX]; ++ ++ // a set of callback functions ++ struct lcdgraphic_functions funcs; ++ ++ // --- private members ----- ++ ++ // the framebuffer that's actually displayed ++ int *disp_buffer; ++ ++ // the buffer that shows the contents of the next update but wasn't ++ // flushed yet ++ int *new_buffer; ++ ++ // (calculated) convenience value because we need that often ++ int num_pixels; ++ ++ // (calculated) number of characters in both directions ++ int xchars, ychars; ++ ++ // all buffers are dirty, i.e. update all ++ int all_dirty; ++ ++ // freetype library handle ++ FT_Library ft_library; ++ ++ // handle for the normal font ++ FT_Face ft_normal_font; ++ ++ // handle for charset convertions ++ iconv_t iconv_handle; ++}; ++ ++// Forward declarations for 'clients' ++ ++int lcdgraphic_init(struct lcdgraphic *lcdgr, ++ struct lcdgraphic_settings *settings, ++ struct lcdgraphic_functions *functions); ++ ++int lcdgraphic_width(struct lcdgraphic *lcdgr); ++int lcdgraphic_height(struct lcdgraphic *lcdgr); ++void lcdgraphic_destroy(struct lcdgraphic *lcdgr); ++void lcdgraphic_clear(struct lcdgraphic *lcdgr); ++void lcdgraphic_flush(struct lcdgraphic *lcdgr); ++void lcdgraphic_draw_string(struct lcdgraphic *lcdgr, int x, int y, char *str); ++void lcdgraphic_draw_char(struct lcdgraphic *lcdgr, int x, int y, char c); ++void lcdgraphic_draw_num(struct lcdgraphic *lcdgr, int x, int num); ++int lcdgraphic_icon(struct lcdgraphic *lcdgr, int x, int y, int icon); ++ ++void lcdgraphic_hbar(struct lcdgraphic *lcdgr, ++ int x, ++ int y, ++ int len, ++ int promille, ++ int options); ++ ++void lcdgraphic_vbar(struct lcdgraphic *lcdgr, ++ int x, ++ int y, ++ int len, ++ int promille, ++ int options); ++ ++#endif /* LCDGRAPHIC_H */ ++ ++// vim: set sw=4 ts=4 et: +--- /dev/null ++++ b/server/drivers/serdisplib.c +@@ -0,0 +1,379 @@ ++// Description: ++ ++/* Copyright (C) 2007 Bernhard Walle ++ ++ 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 ++ 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#include "lcd.h" ++#include "report.h" ++#include "timing.h" ++#include "lcdgraphic.h" ++ ++/* Vars for the server core */ ++MODULE_EXPORT char *api_version = API_VERSION; ++MODULE_EXPORT int stay_in_foreground = 0; ++MODULE_EXPORT int supports_multiple = 1; ++MODULE_EXPORT char *symbol_prefix = "serdisplib_"; ++ ++/////////////////////////////////////////////////////////////////////////////// ++// constants ++// ++#define SERDISPLIB_MAX_DISPLAYNAME 32 ++#define SERDISPLIB_MAX_DEVICENAME PATH_MAX ++ ++/////////////////////////////////////////////////////////////////////////////// ++// private data types ++// ++typedef struct { ++ ++ // the name of the display driver in serdisplib, e.g. 'ctinclud' ++ char display_name[SERDISPLIB_MAX_DISPLAYNAME]; ++ ++ // the name of the device in serdisplib, e.g. /dev/parport0 ++ char display_device[SERDISPLIB_MAX_DEVICENAME]; ++ ++ // the serdisplib connection handle ++ serdisp_CONN_t* serdisplib_conn; ++ ++ // the serdisplib handle ++ serdisp_t *serdisplib; ++ ++ // invert the display ++ int invert; ++ ++ // the lcdgraphic handle ++ struct lcdgraphic *lcdgraphic; ++ ++} PrivateData; ++ ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Callback functions ++// ++ ++static void callback_setpixel(Driver *drvthis, int x, int y, int pixel) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ serdisp_setcolour(p->serdisplib, x, y, pixel ? SD_COL_BLACK : SD_COL_WHITE); ++} ++ ++static void callback_clear(Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ serdisp_clearbuffer(p->serdisplib); ++} ++ ++static void callback_flush(Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ serdisp_update(p->serdisplib); ++} ++ ++struct lcdgraphic_functions lcdgraphic_functions = { ++ .setpixel = callback_setpixel, ++ .clear = callback_clear, ++ .flush = callback_flush ++}; ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Init the driver and display ++// ++MODULE_EXPORT int ++serdisplib_init(Driver *drvthis) ++{ ++ PrivateData *p; ++ int ret; ++ struct lcdgraphic_settings settings; ++ const char *s; ++ ++ // Alocate and store private data ++ p = (PrivateData *) malloc(sizeof(PrivateData)); ++ if (!p) ++ return -1; ++ if (drvthis->store_private_ptr(drvthis, p)) ++ return -1; ++ memset(p, 0, sizeof(PrivateData)); ++ ++ // get the display name ++ s = drvthis->config_get_string(drvthis->name, "display_name", 0, NULL); ++ if (!s) { ++ report(RPT_ERR, "You must specify display_name in configuration"); ++ goto out; ++ } ++ strncpy(p->display_name, s, SERDISPLIB_MAX_DISPLAYNAME); ++ p->display_name[SERDISPLIB_MAX_DISPLAYNAME-1] = 0; ++ ++ // get the display device ++ s = drvthis->config_get_string(drvthis->name, "display_device", 0, NULL); ++ if (!s) { ++ report(RPT_ERR, "You must specify display_device in configuration"); ++ goto out; ++ } ++ strncpy(p->display_device, s, SERDISPLIB_MAX_DEVICENAME); ++ p->display_device[SERDISPLIB_MAX_DEVICENAME-1] = 0; ++ ++ // get the normal font ++ s = drvthis->config_get_string(drvthis->name, "normal_font", 0, NULL); ++ if (!s) { ++ report(RPT_ERR, "You must specify normal_font in configuration"); ++ goto out; ++ } ++ strncpy(settings.normal_font, s, PATH_MAX); ++ settings.normal_font[PATH_MAX-1] = 0; ++ ++ // character size ++ s = drvthis->config_get_string(drvthis->name, "char_size", 0, "6x10"); ++ if (!s) { ++ report(RPT_ERR, "Could not retrieve char_size from configuration"); ++ goto out; ++ } ++ if (sscanf(s, "%dx%d", &settings.cwidth, &settings.cheight) != 2) { ++ report(RPT_ERR, "Could not scan '%s' correctly", s); ++ goto out; ++ } ++ ++ // border size ++ s = drvthis->config_get_string(drvthis->name, "border_size", 0, "0x0"); ++ if (!s) { ++ report(RPT_ERR, "Could not retrieve border size from configuration"); ++ goto out; ++ } ++ if (sscanf(s, "%dx%d", &settings.bwidth, &settings.bheight) != 2) { ++ report(RPT_ERR, "Could not scan '%s' correctly", s); ++ goto out; ++ } ++ ++ // invert ++ p->invert = drvthis->config_get_bool(drvthis->name, "invert", 0, 1); ++ ++ ++ /* End of config file parsing */ ++ ++ // opening the output device */ ++ p->serdisplib_conn = SDCONN_open(p->display_device); ++ if (!p->serdisplib_conn) { ++ report(RPT_ERR, "Could not open %s: %s", p->display_device, ++ sd_geterrormsg()); ++ goto out; ++ } ++ ++ // opening and initialising the display ++ p->serdisplib = serdisp_init(p->serdisplib_conn, p->display_name, ""); ++ if (!p->serdisplib) { ++ report(RPT_ERR, "Error opening display %s: %s\n", p->display_name, ++ sd_geterrormsg()); ++ goto out; ++ } ++ ++ // invert settings ++ serdisp_setoption(p->serdisplib, "INVERT", p->invert ++ ? SD_OPTION_YES : SD_OPTION_NO); ++ ++ // allocate lcdgraphic handle ++ p->lcdgraphic = (struct lcdgraphic *)malloc(sizeof(struct lcdgraphic)); ++ if (!p->lcdgraphic) { ++ report(RPT_ERR, "Not enough memory to allocate struct lcdgraphic"); ++ goto out; ++ } ++ ++ // register at the lcdgraphic backend ++ settings.width = serdisp_getwidth(p->serdisplib); ++ settings.height = serdisp_getheight(p->serdisplib); ++ settings.drv = drvthis; ++ ++ ret = lcdgraphic_init(p->lcdgraphic, &settings, &lcdgraphic_functions); ++ if (ret != 0) { ++ report(RPT_ERR, "Error registering at lcdgraphic subsystem"); ++ goto out; ++ } ++ ++ return 0; ++ ++out: ++ if (p->serdisplib_conn && !p->serdisplib) ++ SDCONN_close(p->serdisplib_conn); ++ if (p->serdisplib) ++ serdisp_quit(p->serdisplib); ++ drvthis->store_private_ptr(drvthis, NULL); ++ free(p); ++ ++ return -1; ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Clean-up ++// ++MODULE_EXPORT void ++serdisplib_close(Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ if (p) { ++ if (p->serdisplib) ++ serdisp_quit(p->serdisplib); ++ if (p->lcdgraphic) ++ lcdgraphic_destroy(p->lcdgraphic); ++ } ++ drvthis->store_private_ptr(drvthis, NULL); ++ free(p); ++} ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Returns the display width ++// ++MODULE_EXPORT int ++serdisplib_width (Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ return lcdgraphic_width(p->lcdgraphic); ++} ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Returns the display height ++// ++MODULE_EXPORT int ++serdisplib_height (Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ return lcdgraphic_height(p->lcdgraphic); ++} ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Clear the framebuffer ++// ++MODULE_EXPORT void ++serdisplib_clear (Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_clear(p->lcdgraphic); ++} ++ ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Place a character in the framebuffer ++// ++MODULE_EXPORT void ++serdisplib_chr (Driver *drvthis, int x, int y, char ch) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_draw_char(p->lcdgraphic, x - 1, y - 1, ch); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Place a string in the framebuffer ++// ++MODULE_EXPORT void ++serdisplib_string (Driver *drvthis, int x, int y, char *s) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_draw_string(p->lcdgraphic, x - 1, y - 1, s); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Place a big number in the framebuffer ++// ++MODULE_EXPORT void ++serdisplib_num (Driver *drvthis, int x, int num) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_draw_num(p->lcdgraphic, x - 1, num); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Sets the backlight on or off ++// ++MODULE_EXPORT void ++serdisplib_backlight (Driver *drvthis, int on) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ serdisp_setoption(p->serdisplib, "BACKLIGHT", on ? SD_OPTION_YES : SD_OPTION_NO); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Flush the framebuffer to the display ++// ++MODULE_EXPORT void ++serdisplib_flush(Driver *drvthis) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_flush(p->lcdgraphic); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Set default icon into a userdef char ++// ++MODULE_EXPORT int ++serdisplib_icon(Driver *drvthis, int x, int y, int icon) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ return lcdgraphic_icon(p->lcdgraphic, x - 1, y - 1, icon); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a horizontal bar ++// ++MODULE_EXPORT void ++serdisplib_hbar(Driver *drvthis, int x, int y, int len, int promille, int options) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_hbar(p->lcdgraphic, x - 1, y - 1, len, promille, options); ++} ++ ++/////////////////////////////////////////////////////////////////////////////// ++// Draws a vertical bar ++// ++MODULE_EXPORT void ++serdisplib_vbar(Driver *drvthis, int x, int y, int len, int promille, int options) ++{ ++ PrivateData *p = (PrivateData *) drvthis->private_data; ++ ++ lcdgraphic_vbar(p->lcdgraphic, x - 1, y - 1, len, promille, options); ++} ++ ++ ++// vim: set sw=4 ts=4 et: +--- a/LCDd.conf ++++ b/LCDd.conf +@@ -40,7 +40,8 @@ + # EyeboxOne, g15, glcdlib, glk, hd44780, icp_a106, imon, IOWarrior, + # irman, joy, lb216, lcdm001, lcterm, lirc, MD8800, ms6931, mtc_s16209x, + # MtxOrb, NoritakeVFD, picolcd, pyramid, sed1330, sed1520, serialPOS, +-# serialVFD, sli, stv5730, svga, t6963, text, tyan, ula200, xosd ++# serialVFD, sli, stv5730, svga, t6963, text, tyan, ula200, serdisplib, ++# xosd + Driver=curses + + # Tells the driver to bind to the given interface +@@ -931,6 +932,31 @@ Size=20x4 + # KeyMap_E=Enter + # KeyMap_F=Escape + ++## serdisplib meta-driver for dot-matrix displays ## ++[serdisplib] ++ ++# the underlying serdisplib driver, e.g. ctinclud ++display_name=ctinclud ++ ++# the display device, e.g. serraw:/dev/ttyS0, parport:/dev/parport0 ++# or USB:07c0/1501 (vendor ID, device ID) ++display_device=USB:07c0/1501 ++ ++# the font which is used for rendering, this font must be monospace ++# and should contain some special Unicode characters like arrows ++# (Andale Mono is recommended and can be fetched at ++# http://corefonts.sf.net or from a Windows installation) ++normal_font=/usr/share/fonts/truetype/andalemo.ttf ++ ++# invert the display (black => white, white => black) ++invert=0 ++ ++# the size of one characters, the number of characters is calculated ++# automatically from this and from border_size (see below) ++char_size=6x10 ++ ++# size of the border around the drawing area ++border_size=0 + + + ## Wirz SLI LCD driver ## diff --git a/abs/extra/libbonobo/PKGBUILD b/abs/extra/libbonobo/PKGBUILD new file mode 100644 index 0000000..93e2538 --- /dev/null +++ b/abs/extra/libbonobo/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 29425 2009-03-08 17:32:56Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libbonobo +pkgver=2.24.1 +pkgrel=1 +pkgdesc="A set of language and system independant CORBA interfaces for creating reusable components" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('orbit2>=2.14.17' 'libxml2>=2.7.3' 'dbus-glib>=0.78') +makedepends=('intltool' 'pkgconfig' 'flex') +options=('!libtool') +backup=('etc/bonobo-activation/bonobo-activation-config.xml') +replaces=('bonobo-activation') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/libbonobo/2.24/libbonobo-${pkgver}.tar.bz2 + bonobo-activation-config.xml) +install=libbonobo.install +md5sums=('8868b6083392964a6969547ceb8d7cd1' + '6392efaca30a26f826eafc4b8ccbc01f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/bonobo || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m644 "${srcdir}/bonobo-activation-config.xml" "${pkgdir}/etc/bonobo-activation/" || return 1 +} diff --git a/abs/extra/libbonobo/bonobo-activation-config.xml b/abs/extra/libbonobo/bonobo-activation-config.xml new file mode 100644 index 0000000..65ee75f --- /dev/null +++ b/abs/extra/libbonobo/bonobo-activation-config.xml @@ -0,0 +1,14 @@ + + + + + + + /usr/lib/bonobo/servers + /opt/gnome/lib/bonobo/servers + + + + + + diff --git a/abs/extra/libbonobo/libbonobo.install b/abs/extra/libbonobo/libbonobo.install new file mode 100644 index 0000000..1794e4a --- /dev/null +++ b/abs/extra/libbonobo/libbonobo.install @@ -0,0 +1,23 @@ +post_install() { + /bin/true +} + +post_upgrade() { + ldconfig -r . + PID=`pidof bonobo-activation-server` + if [ ! -z "${PID}" ]; then + killall -HUP bonobo-activation-server 2>&1 + fi +} + +pre_remove() { + /bin/true +} + +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/extra/libbonoboui/PKGBUILD b/abs/extra/libbonoboui/PKGBUILD new file mode 100644 index 0000000..b008798 --- /dev/null +++ b/abs/extra/libbonoboui/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 29428 2009-03-08 17:35:50Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libbonoboui +pkgver=2.24.1 +pkgrel=1 +pkgdesc="User Interface library for Bonobo" +arch=(i686 x86_64) +license=('GPL' 'LGPL') +depends=('libgnomecanvas>=2.20.1.1' 'libgnome>=2.24.1') +makedepends=('perlxml' 'pkgconfig') +options=('!libtool' '!emptydirs') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2) +md5sums=('9ff3ec1c7aefd0b1a15a5b21ecc7b4e4') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/share/applications/bonobo-browser.desktop" +} diff --git a/abs/extra/libcdio/PKGBUILD b/abs/extra/libcdio/PKGBUILD new file mode 100644 index 0000000..d3aaaa9 --- /dev/null +++ b/abs/extra/libcdio/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 9268 2008-08-17 05:54:40Z allan $ +# Maintainer: damir +# Contributor: damir + +pkgname=libcdio +pkgver=0.80 +pkgrel=3 +pkgdesc="GNU Compact Disc Input and Control Library" +arch=("i686" "x86_64") +license=('GPL') +url="http://www.gnu.org/software/libcdio/" +depends=('gcc-libs>=4.3.0' 'libcddb' 'ncurses') +options=('!libtool') +source=(http://ftp.gnu.org/gnu/libcdio/$pkgname-$pkgver.tar.gz) +md5sums=('6495add276ed11b7ac8a88092799ab4f') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --disable-vcd-info || return 1 + make || return 1 + make DESTDIR=$startdir/pkg install || return 1 + install -m644 libcdio_paranoia.pc libcdio_cdda.pc \ + ${startdir}/pkg/usr/lib/pkgconfig/ || return 1 + rm ${pkgdir}/usr/share/info/dir +} + diff --git a/abs/extra/libdvdcss/PKGBUILD b/abs/extra/libdvdcss/PKGBUILD new file mode 100644 index 0000000..9b5253e --- /dev/null +++ b/abs/extra/libdvdcss/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 14403 2008-10-06 08:19:39Z douglas $ +# Maintainer: arjan +# Contributor Sarah Hay + +pkgname=libdvdcss +pkgver=1.2.10 +pkgrel=1 +pkgdesc="libdvdcss is a cross-platform library for transparent DVD device access with on-the-fly CSS decryption." +arch=('i686' 'x86_64') +depends=('glibc') +options=('!libtool') +source=(http://download.videolan.org/pub/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2) +url="http://www.videolan.org/libdvdcss/" + +md5sums=('ebd5370b79ac5a83e5c61b24a214cf74') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/libdvdnav/PKGBUILD b/abs/extra/libdvdnav/PKGBUILD new file mode 100644 index 0000000..4e9e3ca --- /dev/null +++ b/abs/extra/libdvdnav/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 927 2008-04-24 21:34:43Z jgc $ +# Maintainer: arjan +# contributor Sarah Hay + +pkgname=libdvdnav +pkgver=0.1.10 +pkgrel=3 +pkgdesc="The library for xine-dvdnav plugin." +arch=(i686 x86_64) +license=('GPL') +url="http://dvd.sourceforge.net/index.shtml" +depends=('glibc') +options=(!libtool) +source=(http://downloads.sourceforge.net/sourceforge/dvd/${pkgname}-${pkgver}.tar.gz) +md5sums=('c8ddee96ba1182d73447eaf0bb6fde81') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./autogen.sh --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/libebml/PKGBUILD b/abs/extra/libebml/PKGBUILD new file mode 100644 index 0000000..d537999 --- /dev/null +++ b/abs/extra/libebml/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir +# Contributor: 03/08/04 + +pkgname=libebml +pkgver=0.7.8 +pkgrel=1 +pkgdesc="Extensible Binary Meta Language library" +arch=(i686 x86_64) +url="http://dl.matroska.org/downloads/libebml/" +depends=('gcc-libs') +license=('LGPL') +#source=(http://www.bunkus.org/videotools/mkvtoolnix/sources/$pkgname-$pkgver.tar.bz2) +source=($url/$pkgname-$pkgver.tar.bz2) + +build() { + cd $startdir/src/$pkgname-$pkgver/make/linux + make || return 1 + make prefix=$startdir/pkg/usr install +} + + +md5sums=('6278109f52e4f9d2c8a8dfc0d668b587') diff --git a/abs/extra/libftdi/PKGBUILD b/abs/extra/libftdi/PKGBUILD new file mode 100644 index 0000000..b435b9a --- /dev/null +++ b/abs/extra/libftdi/PKGBUILD @@ -0,0 +1,19 @@ +# Contributor: Bernhard Walle +pkgname=libftdi +pkgver=0.13 +pkgrel=0 +pkgdesc="Library to program and control the FTDI USB controller" +url="http://www.intra2net.com/de/produkte/opensource/ftdi/" +license="GPL" +depends=(libusb) +arch=(i686 x86_64) +source=(http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/$pkgname-$pkgver.tar.gz) +md5sums=('7b4a660fd644980f3d45873d156d021a') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --sysconfdir=/etc + make + make DESTDIR=$startdir/pkg install +} +# :mode=shellscript: diff --git a/abs/extra/libgda/Changelog b/abs/extra/libgda/Changelog new file mode 100644 index 0000000..88ba942 --- /dev/null +++ b/abs/extra/libgda/Changelog @@ -0,0 +1,2 @@ +4.0.2 5/2/09 +Added path for jni headers in configure. diff --git a/abs/extra/libgda/PKGBUILD b/abs/extra/libgda/PKGBUILD new file mode 100644 index 0000000..c4350b7 --- /dev/null +++ b/abs/extra/libgda/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 36066 2009-04-19 20:31:09Z jgc $ +# Maintainer: tobias +# Contributor: Tobias Kieslich + +pkgname=libgda +pkgver=4.0.2 +pkgrel=4 +pkgdesc="data abstraction layer; with mysql, pgsql, ldap, xml, sqlite providers" +arch=(i686 x86_64) +license=('GPL') +depends=('glib2>=2.20.1' 'libxslt' 'db>=4.7' 'ncurses>=5.7-2') +makedepends=('intltool' 'pkgconfig' 'openjdk6') +options=('!libtool') +url="http://www.gnome-db.org" +source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/4.0/${pkgname}-${pkgver}.tar.bz2) +md5sums=('cd79f6542cdd9477017b76b5f81c776f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --disable-static --with-jni=/usr/lib/jvm/java-1.6.0-openjdk/include/ --without-java || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/libgda/bdb43.patch b/abs/extra/libgda/bdb43.patch new file mode 100644 index 0000000..3fe6e93 --- /dev/null +++ b/abs/extra/libgda/bdb43.patch @@ -0,0 +1,18 @@ +diff -r -u libgda-1.2.0.old/providers/bdb/gda-bdb-recordset.c libgda-1.2.0/providers/bdb/gda-bdb-recordset.c +--- libgda-1.2.0.old/providers/bdb/gda-bdb-recordset.c 2003-12-17 11:27:02.000000000 +0000 ++++ libgda-1.2.0/providers/bdb/gda-bdb-recordset.c 2005-02-19 15:43:12.000000000 +0000 +@@ -227,10 +227,14 @@ + + /* get the number of records in the database */ + ret = dbp->stat (dbp, ++#if BDB_VERSION > 40300 ++ NULL, ++#endif + &statp, + #if BDB_VERSION < 40000 + NULL, + #endif ++ + 0); + if (ret != 0) { + gda_connection_add_error (cnc, gda_bdb_make_error (ret)); diff --git a/abs/extra/libgda/libgda.install b/abs/extra/libgda/libgda.install new file mode 100644 index 0000000..6420004 --- /dev/null +++ b/abs/extra/libgda/libgda.install @@ -0,0 +1,16 @@ +post_install() { + scrollkeeper-update -q -p var/lib/scrollkeeper +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} + +op=$1 +shift + +$op $* diff --git a/abs/extra/libgdiplus/PKGBUILD b/abs/extra/libgdiplus/PKGBUILD new file mode 100644 index 0000000..3b91775 --- /dev/null +++ b/abs/extra/libgdiplus/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 15386 2008-10-13 16:29:55Z daniel $ +# Maintainer: daniel@archlinux.org + +pkgname=libgdiplus +pkgver=2.2 +pkgrel=1 +pkgdesc="An Open Source Implementation of the GDI+ API" +arch=(i686 x86_64) +license=('MPL' 'LGPL') +url="http://www.mono-project.com" +depends=('libtiff' 'cairo>=1.6.4' 'giflib' 'glib2>=2.18.0' 'libexif') +makedepends=('automake' 'pkgconfig') +options=('!libtool') +source=(http://go-mono.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('4af9c8171e75f1408c3628a8f7937d9f') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --with-cairo=system + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/libgdiplus/system-cairo.patch b/abs/extra/libgdiplus/system-cairo.patch new file mode 100644 index 0000000..b605a3e --- /dev/null +++ b/abs/extra/libgdiplus/system-cairo.patch @@ -0,0 +1,67 @@ +diff -ur libgdiplus-1.1.15-old/Makefile.am libgdiplus-1.1.15/Makefile.am +--- libgdiplus-1.1.15-old/Makefile.am 2006-04-14 10:04:55.000000000 -0700 ++++ libgdiplus-1.1.15/Makefile.am 2006-04-21 18:06:49.000000000 -0700 +@@ -1,4 +1,4 @@ +-SUBDIRS = cairo src tests ++SUBDIRS = src tests + #libpixman + + pkgconfigdir = $(libdir)/pkgconfig +diff -ur libgdiplus-1.1.15-old/configure.in libgdiplus-1.1.15/configure.in +--- libgdiplus-1.1.15-old/configure.in 2006-04-14 10:04:55.000000000 -0700 ++++ libgdiplus-1.1.15/configure.in 2006-04-21 18:06:49.000000000 -0700 +@@ -18,32 +18,32 @@ + AC_MSG_ERROR("Did not find Glib >= 2.2.3"); + fi + +-AC_CONFIG_SUBDIRS(cairo) +-CAIRO_LIBS='$(top_builddir)/cairo/src/libcairo.la' +-CAIRO_CFLAGS='-I$(top_builddir)/cairo/pixman/src -I$(top_srcdir)/cairo/pixman/src -I$(top_builddir)/cairo/src -I$(top_srcdir)/cairo/src' +-AC_DEFINE(USE_INCLUDED_CAIRO,1,[Use Cairo bundled in libgdiplus]) ++#AC_CONFIG_SUBDIRS(cairo) ++#CAIRO_LIBS='$(top_builddir)/cairo/src/libcairo.la' ++#CAIRO_CFLAGS='-I$(top_builddir)/cairo/pixman/src -I$(top_srcdir)/cairo/pixman/src -I$(top_builddir)/cairo/src -I$(top_srcdir)/cairo/src' ++#AC_DEFINE(USE_INCLUDED_CAIRO,1,[Use Cairo bundled in libgdiplus]) + + # Activate this when we support linking to an already exiting Cairo installation +-#default_cairo=included +-#AC_ARG_WITH(cairo, [ --with-cairo=included,installed],[cairo_v=$with_cairo],[cairo_v=$default_cairo]) ++default_cairo=included ++AC_ARG_WITH(cairo, [ --with-cairo=included,installed],[cairo_v=$with_cairo],[cairo_v=$default_cairo]) + # +-#if test $cairo_v = "included"; +-#then ++if test $cairo_v = "included"; ++then + # #AC_CONFIG_SUBDIRS(libpixman) +-# AC_CONFIG_SUBDIRS(cairo) +-# CAIRO_LIBS='$(top_builddir)/cairo/src/libcairo.la' +-# CAIRO_CFLAGS='-I$(top_builddir)/cairo/pixman/src -I$(top_srcdir)/cairo/pixman/src -I$(top_builddir)/cairo/src -I$(top_srcdir)/cairo/src' +-# AC_DEFINE(USE_INCLUDED_CAIRO,1,[Use Cairo bundled in libgdiplus]) +-#else +-# if pkg-config --exact-version 0.3.0 cairo; then +-# echo Cairo installation OK +-# else +-# AC_MSG_ERROR("Did not find Cairo == 0.3.0"); +-# fi +-# +-# CAIRO_LIBS="`pkg-config --libs cairo`" +-# CAIRO_CFLAGS="`pkg-config --cflags cairo`" +-#fi ++ AC_CONFIG_SUBDIRS(cairo) ++ CAIRO_LIBS='$(top_builddir)/cairo/src/libcairo.la' ++ CAIRO_CFLAGS='-I$(top_builddir)/cairo/pixman/src -I$(top_srcdir)/cairo/pixman/src -I$(top_builddir)/cairo/src -I$(top_srcdir)/cairo/src' ++ AC_DEFINE(USE_INCLUDED_CAIRO,1,[Use Cairo bundled in libgdiplus]) ++else ++ if pkg-config --atleast-version 1.0.1 cairo; then ++ echo Cairo installation OK ++ else ++ AC_MSG_ERROR("Did not find Cairo == 1.0.1"); ++ fi ++ ++ CAIRO_LIBS="`pkg-config --libs cairo`" ++ CAIRO_CFLAGS="`pkg-config --cflags cairo`" ++fi + + GDIPLUS_LIBS="$CAIRO_LIBS `pkg-config --libs glib-2.0 ` `pkg-config freetype2 fontconfig --libs`" + GDIPLUS_CFLAGS="$CAIRO_CFLAGS `pkg-config --cflags glib-2.0 ` `pkg-config freetype2 fontconfig --cflags`" diff --git a/abs/extra/libgksu/PKGBUILD b/abs/extra/libgksu/PKGBUILD new file mode 100644 index 0000000..5f18266 --- /dev/null +++ b/abs/extra/libgksu/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 5570 2008-07-18 21:03:14Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libgksu +pkgver=2.0.7 +pkgrel=1 +pkgdesc="gksu authorization library" +arch=(i686 x86_64) +url="http://www.nongnu.org/gksu/index.html" +license=(GPL) +depends=('gnome-keyring>=2.22.3' 'libgtop>=2.22.3' + 'libglade>=2.6.2' 'startup-notification>=0.9') +makedepends=('gtk-doc' 'pkgconfig') +options=('!libtool') +install=libgksu.install +source=(http://people.debian.org/~kov/gksu/${pkgname}-${pkgver}.tar.gz) +md5sums=('2f2c6a21281370942ea2855553d3ad89') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=${startdir}/pkg install || return 1 + rm -f ${startdir}/pkg/usr/lib/*.a + install -m755 -d ${startdir}/pkg/usr/share/gconf/schemas + gconf-merge-schema ${startdir}/pkg/usr/share/gconf/schemas/${pkgname}.schemas ${startdir}/pkg/etc/gconf/schemas/*.schemas || return 1 + rm -f ${startdir}/pkg/etc/gconf/schemas/*.schemas +} diff --git a/abs/extra/libgksu/libgksu.install b/abs/extra/libgksu/libgksu.install new file mode 100644 index 0000000..89cf0cf --- /dev/null +++ b/abs/extra/libgksu/libgksu.install @@ -0,0 +1,17 @@ +pkgname=libgksu + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --install ${pkgname} +} diff --git a/abs/extra/libglade/PKGBUILD b/abs/extra/libglade/PKGBUILD new file mode 100644 index 0000000..95eff9b --- /dev/null +++ b/abs/extra/libglade/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 30217 2009-03-17 18:11:58Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libglade +pkgver=2.6.4 +pkgrel=1 +pkgdesc="Allows you to load glade interface files in a program at runtime" +arch=(i686 x86_64) +license=('LGPL') +depends=('gtk2>=2.16.0' 'libxml2>=2.7.3') +makedepends=('python' 'pkgconfig') +optdepends=('python: libglade-convert script') +options=('!libtool') +install=glade.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2 + libglade-2.0.1-nowarning.patch) +url="http://www.gnome.org" +md5sums=('d1776b40f4e166b5e9c107f1c8fe4139' + '4f879c0ce550004905aa0fb24f25c353') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/libglade-2.0.1-nowarning.patch" || return 1 + ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 libglade-convert "${pkgdir}/usr/bin/" || return 1 +} diff --git a/abs/extra/libglade/glade.install b/abs/extra/libglade/glade.install new file mode 100644 index 0000000..a7f05c5 --- /dev/null +++ b/abs/extra/libglade/glade.install @@ -0,0 +1,25 @@ +post_install() { + if [ ! -d etc/xml ]; then + mkdir -p etc/xml + fi + if [ ! -e etc/xml/catalog ]; then + xmlcatalog --noout --create etc/xml/catalog + fi + xmlcatalog --noout --add "system" \ + "http://glade.gnome.org/glade-2.0.dtd" \ + /usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog +} + +pre_upgrade() { + post_remove +} + +post_upgrade() { + post_install $1 +} + +# arg 1: the old package version +post_remove() { + xmlcatalog --noout --del \ + /usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog +} diff --git a/abs/extra/libglade/libglade-2.0.1-nowarning.patch b/abs/extra/libglade/libglade-2.0.1-nowarning.patch new file mode 100644 index 0000000..fd07121 --- /dev/null +++ b/abs/extra/libglade/libglade-2.0.1-nowarning.patch @@ -0,0 +1,39 @@ +--- libglade-2.0.1/glade/glade-gtk.c.nowarning 2003-08-29 14:50:10.000000000 -0400 ++++ libglade-2.0.1/glade/glade-gtk.c 2003-08-29 14:58:41.000000000 -0400 +@@ -639,9 +639,8 @@ + if (!strcmp (childinfo->properties[j].name, "label")) { + label = childinfo->properties[j].value; + break; +- } else { +- g_warning ("Unknown CList child property: %s", childinfo->properties[j].name); + } ++ /* Ignore all other properties */ + } + + if (label) { +@@ -683,6 +682,7 @@ + char *icon = NULL; + gboolean use_stock = FALSE, active = FALSE, new_group = FALSE; + gboolean use_underline = FALSE; ++ gboolean sensitive = TRUE; + GtkWidget *iconw = NULL; + int j; + +@@ -708,6 +708,8 @@ + group_name = value; + } else if (!strcmp (name, "new_group")) { + new_group = BOOL (value); ++ } else if (!strcmp (name, "sensitive")) { ++ sensitive = BOOL (value); + } else if (!strcmp (name, "visible")) { + /* ignore for now */ + } else if (!strcmp (name, "tooltip")) { +@@ -785,6 +787,8 @@ + gtk_label_set_use_underline (GTK_LABEL (toolbar_child->label), + TRUE); + } ++ ++ gtk_widget_set_sensitive (child, sensitive); + + glade_xml_set_common_params (xml, child, childinfo->child); + } else { diff --git a/abs/extra/libgnome/PKGBUILD b/abs/extra/libgnome/PKGBUILD new file mode 100644 index 0000000..9197e0f --- /dev/null +++ b/abs/extra/libgnome/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 30321 2009-03-18 21:50:51Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libgnome +pkgver=2.26.0 +pkgrel=2 +pkgdesc="Common libraries for GNOME" +arch=(i686 x86_64) +license=('LGPL') +depends=('gnome-vfs>=2.24.1-2' 'esound>=0.2.41' 'libbonobo>=2.24.1') +makedepends=('pkgconfig' 'intltool') +options=('!libtool' '!emptydirs') +url="http://www.gnome.org" +install=libgnome.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2) +md5sums=('a5634fe9ddc54bbb726cbaaa35abc0b9') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1 + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain libgnome-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas || return 1 + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/abs/extra/libgnome/libgnome.install b/abs/extra/libgnome/libgnome.install new file mode 100644 index 0000000..db4e04d --- /dev/null +++ b/abs/extra/libgnome/libgnome.install @@ -0,0 +1,17 @@ +pkgname=libgnome + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --install ${pkgname} +} diff --git a/abs/extra/libgnomecanvas/PKGBUILD b/abs/extra/libgnomecanvas/PKGBUILD new file mode 100644 index 0000000..7e419ed --- /dev/null +++ b/abs/extra/libgnomecanvas/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 30223 2009-03-17 18:18:11Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libgnomecanvas +pkgver=2.26.0 +pkgrel=1 +pkgdesc="The GNOME Canvas library" +arch=(i686 x86_64) +license=('LGPL') +depends=('libglade>=2.6.4' 'libart-lgpl>=2.3.20') +makedepends=('pkgconfig' 'intltool') +options=('!libtool') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2) +md5sums=('9bbc635e5ae70e63af071af74ba7e72f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/libgnomekbd/PKGBUILD b/abs/extra/libgnomekbd/PKGBUILD new file mode 100644 index 0000000..8aab901 --- /dev/null +++ b/abs/extra/libgnomekbd/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 30447 2009-03-19 22:15:35Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libgnomekbd +pkgver=2.26.0 +pkgrel=1 +pkgdesc="Gnome keyboard library" +url="http://gswitchit.sourceforge.net" +arch=(i686 x86_64) +license=('LGPL') +depends=('libxklavier>=3.9' 'gconf>=2.26.0-2' 'libglade>=2.6.4') +makedepends=('perlxml' 'pkgconfig') +options=('!libtool' '!emptydirs') +install=libgnomekbd.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2) +md5sums=('aee58c088c4fd980e1bf813ea813c156') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1 + + install -m755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain libgnomekbd ${pkgdir}/etc/gconf/schemas/*.schemas || return 1 + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/abs/extra/libgnomekbd/libgnomekbd.install b/abs/extra/libgnomekbd/libgnomekbd.install new file mode 100644 index 0000000..9fc9f55 --- /dev/null +++ b/abs/extra/libgnomekbd/libgnomekbd.install @@ -0,0 +1,17 @@ +pkgname=libgnomekbd + +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} diff --git a/abs/extra/libgnomeui/PKGBUILD b/abs/extra/libgnomeui/PKGBUILD new file mode 100644 index 0000000..f52b649 --- /dev/null +++ b/abs/extra/libgnomeui/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 29431 2009-03-08 17:37:38Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libgnomeui +pkgver=2.24.1 +pkgrel=1 +pkgdesc="User Interface library for GNOME" +arch=('i686' 'x86_64') +license=('LGPL') +depends=('libbonoboui>=2.24.1' 'gnome-keyring>=2.24.1') +makedepends=('intltool' 'pkgconfig') +options=('!libtool' 'force') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2) +md5sums=('8e7d36dd1decfcf5cc4d5cb93bc4d217') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/libgnomeui || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/libgtkhtml/PKGBUILD b/abs/extra/libgtkhtml/PKGBUILD new file mode 100644 index 0000000..f0753d7 --- /dev/null +++ b/abs/extra/libgtkhtml/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 18537 2008-11-06 23:26:35Z jgc $ +# Maintainer: Jan de Groot +pkgname=libgtkhtml +pkgver=2.11.1 +pkgrel=2 +pkgdesc="An HTML library for GTK" +arch=(i686 x86_64) +license=('LGPL') +depends=('gtk2>=2.14.4' 'libxml2>=2.6.32') +makedepends=('perlxml' 'pkgconfig') +options=('!libtool') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.11/${pkgname}-${pkgver}.tar.bz2) +md5sums=('a1d1a197dcff8c4571659deef5495e24') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/libgtop/PKGBUILD b/abs/extra/libgtop/PKGBUILD new file mode 100644 index 0000000..da34a59 --- /dev/null +++ b/abs/extra/libgtop/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 35522 2009-04-13 20:24:53Z jgc $ +# Maintainer: Jan de Groot + +pkgname=libgtop +pkgver=2.26.1 +pkgrel=1 +pkgdesc="A library that read information about processes and the running system" +arch=(i686 x86_64) +license=('LGPL') +depends=('glib2>=2.20.1' 'libxau' 'texinfo') +install=libgtop.install +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2) +options=('!libtool') +url="http://www.gnome.org/" +md5sums=('49fe5c91a6bbc103a0a05c6854a6cc11') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --with-libgtop-smp --with-libgtop-inodedb \ + --with-linux-table || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -f "${pkgdir}/usr/share/info/dir" + gzip -9nf ${pkgdir}/usr/share/info/* +} diff --git a/abs/extra/libgtop/libgtop.install b/abs/extra/libgtop/libgtop.install new file mode 100644 index 0000000..15690f1 --- /dev/null +++ b/abs/extra/libgtop/libgtop.install @@ -0,0 +1,13 @@ +info_dir=/usr/share/info + +post_install() { + install-info ${info_dir}/libgtop2.info.gz ${info_dir}/dir 2> /dev/null +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + install-info --delete ${info_dir}/libgtop2.info.gz ${info_dir}/dir 2> /dev/null +} diff --git a/abs/extra/libidl2/PKGBUILD b/abs/extra/libidl2/PKGBUILD new file mode 100644 index 0000000..488909a --- /dev/null +++ b/abs/extra/libidl2/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 30208 2009-03-17 17:59:14Z jgc $ +# Maintainer: dorphell +# Committer: Judd Vinet + +pkgname=libidl2 +pkgver=0.8.13 +pkgrel=1 +pkgdesc="A front-end for CORBA 2.2 IDL and Netscape's XPIDL" +arch=(i686 x86_64) +license=('LGPL') +depends=('glib2>=2.20.0' 'texinfo') +makedepends=('pkgconfig') +install=libidl2.install +options=('!libtool' '!emptydirs') +source=(http://ftp.gnome.org/pub/gnome/sources/libIDL/0.8/libIDL-${pkgver}.tar.bz2) +url="http://www.gnome.org" +md5sums=('b43b289a859eb38a710f70622c46e571') + +build() { + cd "${srcdir}/libIDL-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -f "${pkgdir}/usr/share/info/dir" + gzip -9nf "${pkgdir}/usr/share/info/"* +} diff --git a/abs/extra/libidl2/libidl2.install b/abs/extra/libidl2/libidl2.install new file mode 100644 index 0000000..38b3d56 --- /dev/null +++ b/abs/extra/libidl2/libidl2.install @@ -0,0 +1,13 @@ +info_dir=/usr/share/info + +post_install() { + install-info ${info_dir}/libIDL2.info.gz ${info_dir}/dir 2> /dev/null +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + install-info --delete ${info_dir}/libIDL2.info.gz ${info_dir}/dir 2> /dev/null +} diff --git a/abs/extra/libmikmod/PKGBUILD b/abs/extra/libmikmod/PKGBUILD new file mode 100644 index 0000000..eb124f3 --- /dev/null +++ b/abs/extra/libmikmod/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: arjan +# Contributor: Tom Newsom +pkgname=libmikmod +pkgver=3.1.12 +pkgrel=1 +pkgdesc="A portable sound library" +license=('GPL' 'LGPL') +url="http://sourceforge.net/projects/mikmod/" +arch=('i686' 'x86_64') +depends=('glibc') +source=(http://downloads.sourceforge.net/mikmod/${pkgname}-${pkgver}.tar.gz) +md5sums=('9f3c740298260d5f88981fc0d51f6f16') +options=('!libtool') + +build() { + cd $startdir/src/$pkgname-$pkgver + missing_dir="`pwd`" ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} + diff --git a/abs/extra/libmms/PKGBUILD b/abs/extra/libmms/PKGBUILD new file mode 100644 index 0000000..81c7474 --- /dev/null +++ b/abs/extra/libmms/PKGBUILD @@ -0,0 +1,21 @@ +#$Id$ +#Maintainer: Jan de Groot + +pkgname=libmms +pkgver=0.4 +pkgrel=1 +pkgdesc="MMS stream protocol library" +arch=(i686 x86_64) +url="https://launchpad.net/libmms" +license=(LGPL) +depends=('glib2>=2.16.4') +options=('!libtool') +source=(http://launchpad.net/libmms/trunk/${pkgver}/+download/libmms-${pkgver}.tar.gz) +md5sums=('4a681a815186fe26bb1b02ccea57fb75') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/libmpcdec/PKGBUILD b/abs/extra/libmpcdec/PKGBUILD new file mode 100644 index 0000000..feeaf8b --- /dev/null +++ b/abs/extra/libmpcdec/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot + +pkgname=libmpcdec +pkgver=1.2.6 +pkgrel=1 +pkgdesc="Musepack decoding library" +arch=(i686 x86_64) +license=('custom') +depends=('glibc') +options=('!libtool') +source=(http://files.musepack.net/source/${pkgname}-${pkgver}.tar.bz2) +url="http://musepack.net/" +md5sums=('7f7a060e83b4278acf4b77d7a7b9d2c0') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-static + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + install -Dm644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING +} diff --git a/abs/extra/libmrss/PKGBUILD b/abs/extra/libmrss/PKGBUILD new file mode 100644 index 0000000..7d23508 --- /dev/null +++ b/abs/extra/libmrss/PKGBUILD @@ -0,0 +1,20 @@ +# Contributor: Bernhard Walle +pkgname=libmrss +pkgver=0.19.2 +pkgrel=1 +pkgdesc="C library for parsing, writing and creating RSS/ATOM files or streams" +url="http://www2.autistici.org/bakunin/libmrss/" +license="LGPL" +depends=(curl libnxml) +arch=('i686' 'x86_64') +options=('!libtool') +source=(http://www2.autistici.org/bakunin/libmrss/$pkgname-$pkgver.tar.gz) +md5sums=('a6f66b72898d27270e3a68007f90d62b') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} +# :mode=shellscript: diff --git a/abs/extra/libnl/PKGBUILD b/abs/extra/libnl/PKGBUILD new file mode 100644 index 0000000..4a6465a --- /dev/null +++ b/abs/extra/libnl/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 930 2008-04-24 22:14:40Z jgc $ +# Maintainer: Jan de Groot +# Contributor: William Rea +pkgname=libnl +pkgver=1.1 +pkgrel=2 +pkgdesc="Library for applications dealing with netlink sockets" +arch=('i686' 'x86_64') +url="http://people.suug.ch/~tgr/libnl" +license=('GPL') +depends=('glibc') +source=(http://people.suug.ch/~tgr/${pkgname}/files/${pkgname}-${pkgver}.tar.gz ulong_max.patch) +md5sums=('ae970ccd9144e132b68664f98e7ceeb1' '255bb3740149d518766032675810c590') + +build() { + cd ${startdir}/src/libnl-${pkgver} + patch -p1 < ../ulong_max.patch + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/libnl/ulong_max.patch b/abs/extra/libnl/ulong_max.patch new file mode 100644 index 0000000..d9ef218 --- /dev/null +++ b/abs/extra/libnl/ulong_max.patch @@ -0,0 +1,11 @@ +--- libnl-1.1/include/netlink-local.h.orig 2008-06-08 19:09:20.000000000 ++0200 ++++ libnl-1.1/include/netlink-local.h 2008-06-08 19:09:33.000000000 +0200 +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #include + #include diff --git a/abs/extra/libnotify/PKGBUILD b/abs/extra/libnotify/PKGBUILD new file mode 100644 index 0000000..3b8d12f --- /dev/null +++ b/abs/extra/libnotify/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 19585 2008-11-27 18:06:47Z hugo $ +# Maintainer: Jan de Groot + +pkgname=libnotify +pkgver=0.4.5 +pkgrel=1 +pkgdesc="Desktop notification library" +arch=(i686 x86_64) +license=('LGPL') +depends=('dbus-glib>=0.76' 'gtk2>=2.14.4') +makedepends=('pkgconfig') +options=('!libtool') +source=(http://www.galago-project.org/files/releases/source/${pkgname}/${pkgname}-${pkgver}.tar.gz) +url="http://www.galago-project.org/" +md5sums=('472e2c1f808848365572a9b024d9e8f5') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/libnxml/PKGBUILD b/abs/extra/libnxml/PKGBUILD new file mode 100644 index 0000000..0c4f9cb --- /dev/null +++ b/abs/extra/libnxml/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD,v 1.1 2008/09/27 07:05:31 allan Exp $ +# Maintainer: Allan McRae +# Contributor: Bernhard Walle + +pkgname=libnxml +pkgver=0.18.3 +pkgrel=1 +pkgdesc="C library for parsing, writing and creating XML 1.0 and 1.1 files or streams" +url="http://www2.autistici.org/bakunin//libnxml/" +license=('LGPL') +depends=('curl') +arch=('i686' 'x86_64') +options=('!libtool') +source=(http://www2.autistici.org/bakunin//libnxml/$pkgname-$pkgver.tar.gz) +md5sums=('857f43970e7f0724d28f4ddc87085daf') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$pkgdir install +} diff --git a/abs/extra/libsamplerate/ChangeLog b/abs/extra/libsamplerate/ChangeLog new file mode 100644 index 0000000..b76b041 --- /dev/null +++ b/abs/extra/libsamplerate/ChangeLog @@ -0,0 +1,14 @@ +2009-04-08 Eric Belanger + + * libsamplerate 0.1.7-1 + * Upstream update + +2009-01-30 Eric Belanger + + * libsamplerate 0.1.6-1 + * Upstream update + +2008-07-10 Eric Belanger + + * libsamplerate 0.1.4-1 + * Upstream update diff --git a/abs/extra/libsamplerate/PKGBUILD b/abs/extra/libsamplerate/PKGBUILD new file mode 100644 index 0000000..dc0f0fa --- /dev/null +++ b/abs/extra/libsamplerate/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 34235 2009-04-08 11:01:52Z eric $ +# Maintainer: Eric Belanger +# Contributor: Jason Chu + +pkgname=libsamplerate +pkgver=0.1.7 +pkgrel=1 +pkgdesc="Secret Rabbit Code - aka Sample Rate Converter for audio" +arch=('i686' 'x86_64') +url="http://www.mega-nerd.com/SRC/index.html" +license=('GPL') +depends=('libsndfile' 'flac>=1.1.4') +options=('!libtool') +source=(http://www.mega-nerd.com/SRC/libsamplerate-${pkgver}.tar.gz) +md5sums=('ad093e60ec44f0a60de8e29983ddbc0f') +sha1sums=('98a52392eb97f9ba724ca024b3af29a8a0cc0206') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/extra/libxfce4util/PKGBUILD b/abs/extra/libxfce4util/PKGBUILD new file mode 100644 index 0000000..46e2539 --- /dev/null +++ b/abs/extra/libxfce4util/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 28199 2009-02-28 10:49:12Z andyrtr $ +# Maintainer: tobias + +pkgname=libxfce4util +pkgver=4.6.0 +pkgrel=1 +pkgdesc="Basic utility non-GUI functions for Xfce" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.xfce.org/" +groups=('xfce4') +depends=("glib2>=2.18.3") +makedepends=('pkgconfig') +options=('!libtool') +source=(http://www.xfce.org/archive/xfce-${pkgver}/src/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2b0b7cdb4516704940eedf11edc94d5e') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \ + --localstatedir=/var --disable-static + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/share/gtk-doc +} diff --git a/abs/extra/libxklavier/PKGBUILD b/abs/extra/libxklavier/PKGBUILD new file mode 100644 index 0000000..02ca7e3 --- /dev/null +++ b/abs/extra/libxklavier/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 20594 2008-12-05 21:38:46Z jgc $ +# Maintainer: Jan de Groot +# Contributor: Arjan Timmerman + +pkgname=libxklavier +pkgver=3.8 +pkgrel=1 +pkgdesc="High-level API for X Keyboard Extension" +arch=(i686 x86_64) +license=('LGPL') +depends=('libxkbfile>=1.0.5' 'libxml2>=2.6.32' 'glib2>=2.18.3' 'xkeyboard-config>=1.4' 'iso-codes') +makedepends=('pkgconfig') +options=('!libtool' '!emptydirs') +url="http://gswitchit.sourceforge.net" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('e4f1b9e600c4159f39d38ab94d56cf9b') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr \ + --with-xkb-base=/usr/share/X11/xkb --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/libxp/PKGBUILD b/abs/extra/libxp/PKGBUILD new file mode 100644 index 0000000..1812082 --- /dev/null +++ b/abs/extra/libxp/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 4458 2008-07-07 16:34:45Z jgc $ +#Maintainer: Jan de Groot + +pkgname=libxp +pkgver=1.0.0 +pkgrel=2 +pkgdesc="X11 X Print Library" +arch=('i686' 'x86_64') +license=('custom') +url="http://xorg.freedesktop.org/" +depends=('libxext' 'printproto') +makedepends=('pkgconfig') +options=('!libtool') +source=(${url}/releases/individual/lib/libXp-${pkgver}.tar.bz2) +md5sums=('0f4ac39108c1ae8c443cdfac259b58fa') + +build() { + cd ${srcdir}/libXp-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 +} diff --git a/abs/extra/lm_sensors/PKGBUILD b/abs/extra/lm_sensors/PKGBUILD new file mode 100644 index 0000000..487a6fe --- /dev/null +++ b/abs/extra/lm_sensors/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 8687 2008-08-15 15:06:46Z andyrtr $ +# Maintainer: aurelien +# Contributor: Aurelien Foret +pkgname=lm_sensors +pkgver=3.0.2 +pkgrel=2 +pkgdesc="Collection of user space tools for general SMBus access and hardware monitoring." +arch=('i686' 'x86_64') +license=('GPL') +depends=('perl' 'sysfsutils') +makedepends=('bison' 'flex' 'rrdtool') +optdepends=('rrdtool: for logging with sensord') +backup=(etc/sensors3.conf) +install=sensors.install +source=(http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-$pkgver.tar.bz2 + sensors.rc + fancontrol.rc + sensors-detect.patch) +url="http://www.lm-sensors.org/" +md5sums=('5b210ba9cc01f00161c438fd618484e5' + 'c9f7f38964963ae3ced4dff3f1f0b7b9' + 'f14e335a8eea27388892c36af8099782' + '6fd30ed1e5ac739b8a27f3913ba706f4') + +build() { + cd ${srcdir}/$pkgname-$pkgver + patch -Np0 -i ${srcdir}/sensors-detect.patch || return 1 + + make PREFIX=/usr PROG_EXTRA:=sensord user || return 1 + make user_install PREFIX=/usr DESTDIR=${pkgdir} + install -DT -m755 ${srcdir}/$pkgname-$pkgver/prog/sensord/sensord ${pkgdir}/usr/sbin/sensord + + install -DT -m755 ${srcdir}/sensors.rc ${pkgdir}/etc/rc.d/sensors + install -DT -m755 ${srcdir}/fancontrol.rc ${pkgdir}/etc/rc.d/fancontrol + + # remove the static lib + rm -rf ${pkgdir}/usr/lib/libsensors.a + + # FIXME: avoid conflicts with glibc headers + rm -rf ${pkgdir}/usr/include/linux +} diff --git a/abs/extra/lm_sensors/fancontrol.rc b/abs/extra/lm_sensors/fancontrol.rc new file mode 100644 index 0000000..7fc1bbf --- /dev/null +++ b/abs/extra/lm_sensors/fancontrol.rc @@ -0,0 +1,34 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting fancontrol" + /usr/sbin/fancontrol >/dev/null 2>&1 & + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon fancontrol + stat_done + fi + ;; + stop) + stat_busy "Stopping fancontrol" + [ -f /var/run/fancontrol.pid ] && kill `cat /var/run/fancontrol.pid` + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon fancontrol + stat_done + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/lm_sensors/sensors-detect.patch b/abs/extra/lm_sensors/sensors-detect.patch new file mode 100644 index 0000000..981ed3d --- /dev/null +++ b/abs/extra/lm_sensors/sensors-detect.patch @@ -0,0 +1,61 @@ +--- prog/detect/sensors-detect.orig 2008-02-07 20:59:25.125302226 +0100 ++++ prog/detect/sensors-detect 2008-02-07 21:06:53.821929489 +0100 +@@ -5879,21 +5879,21 @@ + } + } + +- my $have_sysconfig = -d '/etc/sysconfig'; +- printf "Do you want to \%s /etc/sysconfig/lm_sensors? (\%s): ", +- (-e '/etc/sysconfig/lm_sensors' ? 'overwrite' : 'generate'), ++ my $have_sysconfig = -d '/etc/conf.d'; ++ printf "Do you want to \%s /etc/conf.d/lm_sensors? (\%s): ", ++ (-e '/etc/conf.d/lm_sensors' ? 'overwrite' : 'generate'), + ($have_sysconfig ? 'YES/no' : 'yes/NO'); + $_ = ; + if (($have_sysconfig and not m/^\s*n/i) or m/^\s*y/i) { + unless ($have_sysconfig) { +- mkdir '/etc/sysconfig', 0777 +- or die "Sorry, can't create /etc/sysconfig ($!)"; ++ mkdir '/etc/conf.d', 0777 ++ or die "Sorry, can't create /etc/conf.d ($!)"; + } +- open(local *SYSCONFIG, ">/etc/sysconfig/lm_sensors") +- or die "Sorry, can't create /etc/sysconfig/lm_sensors ($!)"; ++ open(local *SYSCONFIG, ">/etc/conf.d/lm_sensors") ++ or die "Sorry, can't create /etc/conf.d/lm_sensors ($!)"; + print SYSCONFIG <<'EOT'; +-# /etc/sysconfig/lm_sensors - Defines modules loaded by +-# /etc/init.d/lm_sensors ++# /etc/conf.d/lm_sensors - Defines modules loaded by ++# /etc/rc.d/sensors + # Copyright (c) 1998 - 2001 Frodo Looijaard + # + # This program is free software; you can redistribute it and/or modify +@@ -5914,8 +5914,8 @@ + # See also the lm_sensors homepage at: + # http://www.lm-sensors.org/ + # +-# This file is used by /etc/init.d/lm_sensors and defines the modules to +-# be loaded/unloaded. This file is sourced into /etc/init.d/lm_sensors. ++# This file is used by /etc/rc.d/sensors and defines the modules to ++# be loaded/unloaded. This file is sourced into /etc/rc.d/sensors. + # + # The format of this file is a shell script that simply defines the modules + # in order as normal variables with the special names: +@@ -5952,12 +5952,12 @@ + print SYSCONFIG $sysconfig; + close(SYSCONFIG); + +- print "Copy prog/init/lm_sensors.init to /etc/init.d/lm_sensors\n". ++ print "Copy prog/init/lm_sensors.init to /etc/rc.d/sensors\n". + "for initialization at boot time.\n" +- unless -f "/etc/init.d/lm_sensors"; ++ unless -f "/etc/rc.d/sensors"; + +- if (-x "/sbin/insserv" && -f "/etc/init.d/lm_sensors") { +- system("/sbin/insserv", "/etc/init.d/lm_sensors"); ++ if (-x "/sbin/insserv" && -f "/etc/rc.d/sensors") { ++ system("/sbin/insserv", "/etc/rc.d/sensors"); + } elsif (-x "/sbin/chkconfig" && -f "/etc/init.d/lm_sensors") { + system("/sbin/chkconfig", "lm_sensors", "on"); + if (-x "/sbin/service") { diff --git a/abs/extra/lm_sensors/sensors.install b/abs/extra/lm_sensors/sensors.install new file mode 100644 index 0000000..d593f84 --- /dev/null +++ b/abs/extra/lm_sensors/sensors.install @@ -0,0 +1,12 @@ +post_install() { + echo ">>> to control the lm_sensors daemon type" + echo ">>> \"/etc/rc.d/sensors start|stop|restart\" " + echo ">>> --------------------------------------" + echo ">>> before you can use the fancontrol daemon" + echo ">>> first create a fancontrol config file, use \"pwmconfig\"" + echo ">>> then type \"/etc/rc.d/fancontrol start|stop|restart\" " + echo ">>> --------------------------------------" + echo ">>> to decode memory SPD timings modprobe eeprom module" + echo ">>> and get this perl script from" + echo ">>> \"http://www.lm-sensors.org/browser/lm-sensors/trunk/prog/eeprom/decode-dimms.pl\"" +} diff --git a/abs/extra/lm_sensors/sensors.rc b/abs/extra/lm_sensors/sensors.rc new file mode 100644 index 0000000..aa086eb --- /dev/null +++ b/abs/extra/lm_sensors/sensors.rc @@ -0,0 +1,127 @@ +#!/bin/bash +# +# chkconfig: 2345 26 74 +# description: sensors is used for monitoring motherboard sensor values. +# config: /etc/sysconfig/sensors +# +# 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +# See also the lm_sensors homepage at: +# http://www2.lm-sensors.nu/~lm78/index.html + +# It uses a config file /etc/sysconfig/sensors that contains the modules to +# be loaded/unloaded. That file is sourced into this one. + +# The format of that file a shell script that simply defines the modules +# in order as normal shell variables with the special names: +# MODULE_1, MODULE_2, MODULE_3, etc. + +. /etc/rc.conf +. /etc/rc.d/functions + +if grep -q sysfs /proc/mounts; then + WITHSYS=1 +else + WITHSYS=0 +fi + +CONFIG=/etc/conf.d/lm_sensors +PSENSORS=/usr/bin/sensors +if [ ! -x $PSENSORS ]; then + PSENSORS=/usr/bin/sensors +fi + +case "$1" in + start) + stat_busy "Starting Up Sensors" + + if [ $WITHSYS == "0" ]; then + # If sensors isn't supported by the kernel, try loading the module... + [ -e /proc/sys/dev/sensors ] || /sbin/modprobe i2c-proc &>/dev/null + + # Don't bother if /proc/sensors still doesn't exist, kernel doesn't have + # support for sensors. + [ -e /proc/sys/dev/sensors ] || exit 0 + + # If sensors was not already running, unload the module... + [ -e /var/lock/subsys/lm_sensors ] || /sbin/modprobe -r i2c-proc &>/dev/null + fi + + + if [ -r "$CONFIG" ]; then + . "$CONFIG" + modules=`grep \^MODULE_ $CONFIG | wc -l | tr -d ' '` + i=0 + while [ $i -lt $modules ] ; do + module=`eval echo '$'MODULE_$i` + #echo starting module __${module}__ #debug + /sbin/modprobe $module &>/dev/null + i=`expr $i + 1` + done + fi + $PSENSORS -s + + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon sensors + stat_done + fi + ;; + + stop) + stat_busy "Shutting Down Sensors" + + if [ -r "$CONFIG" ]; then + . "$CONFIG" + modules=`grep \^MODULE_ $CONFIG | wc -l | tr -d ' '` + i=`expr $modules` + while [ $i -ge 0 ] ; do + module=`eval echo '$'MODULE_$i` + /sbin/modprobe -r $module &>/dev/null + i=`expr $i - 1` + done + fi + + if [ $WITHSYS == "0" ]; then + /sbin/modprobe -r i2c-proc &>/dev/null + fi + + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon sensors + stat_done + fi + ;; + + dostatus) + $PSENSORS + RETVAL=$? + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + condrestart) + [ -e /var/lock/subsys/lm_sensors ] && restart || : + ;; + + *) + echo "Usage: sensors.init {start|stop|status|restart|reload|condrestart}" +esac diff --git a/abs/extra/lynx/PKGBUILD b/abs/extra/lynx/PKGBUILD new file mode 100644 index 0000000..326e3ee --- /dev/null +++ b/abs/extra/lynx/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 9279 2008-08-17 05:59:10Z allan $ +# Maintainer: dorphell +# Contributor: Tom Newsom +pkgname=lynx +pkgver=2.8.6 +pkgrel=2 +pkgdesc="A text browser for the World Wide Web" +url="http://lynx.isc.org/" +arch=(i686 x86_64) +license=('GPL') +depends=('ncurses' 'openssl') +source=(http://lynx.isc.org/release/${pkgname}${pkgver}.tar.gz) +url="http://lynx.isc.org" +backup=('etc/lynx.cfg') +md5sums=('c1346198ae99302cc26763d89f89a239') + +build() { + cd $startdir/src/${pkgname}2-8-6 + ./configure --prefix=/usr --sysconfdir=/etc --with-ssl --enable-nls \ + --mandir=/usr/share/man + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/make/PKGBUILD b/abs/extra/make/PKGBUILD new file mode 100644 index 0000000..a908e6e --- /dev/null +++ b/abs/extra/make/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: judd +pkgname=make +pkgver=3.81 +pkgrel=4 +pkgdesc="GNU make utility to maintain groups of programs" +arch=(i686 x86_64) +url="http://www.gnu.org/software/make" +license=('GPL') +groups=('base-devel') +depends=('glibc' 'bash') +source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('a4e9494ac6dc3f6b0c5ff75c5d52abba') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/mc/PKGBUILD b/abs/extra/mc/PKGBUILD new file mode 100644 index 0000000..e8b6b2f --- /dev/null +++ b/abs/extra/mc/PKGBUILD @@ -0,0 +1,55 @@ +# $Id: PKGBUILD 3023 2008-06-18 02:32:22Z eric $ +# Maintainer: dorphell +# Committer: Judd Vinet +# Contributor: Lucien Immink +pkgname=mc +pkgver=4.6.1 +pkgrel=5 +pkgdesc="A filemanager/shell that emulates Norton Commander" +arch=('i686' 'x86_64') +url="http://www.ibiblio.org/mc/" +license=('GPL') +depends=('e2fsprogs' 'glib2' 'pcre' 'gpm>=1.20.4' 'slang') +makedepends=('libxt' 'libx11') +conflicts=('mc-utf8') +replaces=('mc-utf8') +options=('!emptydirs' '!makeflags') +source=(http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/${pkgname}-${pkgver}.tar.gz \ + ftp://ftp.archlinux.org/other/mc/mc-4.6.1-utf8-r2.patch.bz2 \ + mc-4.6.1-bash-all.patch mc-4.6.1-find.patch mc-4.6.1-invalid-mtime.patch \ + mc-4.6.1-largefile.patch mc-4.6.1-nonblock.patch) +md5sums=('18b20db6e40480a53bac2870c56fc3c4' 'f90bffe7f51883e818143dc2077eb98f'\ + 'd0c5d1f7258daf2a86b41b185524dced' '3c950491cdf44091df216cfa709d133a'\ + '81930cce827fe93639dcd6bff630a1a4' '80b45ecf38d9b5df6d368c83d14fd89d'\ + '00e89cfc43fe6026b61f52b218a65907') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -p1 < ../mc-4.6.1-find.patch || return 1 + patch -p1 < ../mc-4.6.1-largefile.patch || return 1 + patch -p1 < ../mc-4.6.1-invalid-mtime.patch || return 1 + patch -p1 < ../mc-4.6.1-utf8-r2.patch || return 1 + patch -p1 < ../mc-4.6.1-nonblock.patch || return 1 + patch -p1 < ../mc-4.6.1-bash-all.patch || return 1 + +# Prevent lazy bindings in cons.saver binary. +# - not using bindnow-flags() because cons.saver is only built on GNU/Linux + sed -i -e "s:^\(cons_saver_LDADD = .*\):\1 -Wl,-z,now:" src/Makefile.in + + ./configure --prefix=/usr --mandir=/usr/share/man \ + --without-gnome --without-debug --with-screen=slang --without-included-gettext \ + -enable-largefile --with-subshell --with-edit --with-vfs --with-samba --with-mmap \ + --with-x --with-gpm-mouse --enable-charset + make || return 1 + make DESTDIR=${pkgdir} install + + iconv -f koi8-r -t utf8 ${pkgdir}/usr/share/mc/mc.hint.ru > ${pkgdir}/usr/share/mc/mc.hint.ru.tmp || return 1 + mv ${pkgdir}/usr/share/mc/mc.hint.ru.tmp ${pkgdir}/usr/share/mc/mc.hint.ru + + iconv -f koi8-r -t utf8 ${pkgdir}/usr/share/mc/mc.hlp.ru > ${pkgdir}/usr/share/mc/mc.hlp.ru.tmp || return 1 + mv ${pkgdir}/usr/share/mc/mc.hlp.ru.tmp ${pkgdir}/usr/share/mc/mc.hlp.ru + + # convert man pages to utf8 + cd ${pkgdir}/usr/share/man/ru + find -type f | xargs -i123 -- sh -c "mv 123 123.old && iconv -f koi8-r -t utf8 123.old >123 && rm 123.old" || return 1 +} diff --git a/abs/extra/mc/mc-4.6.1-bash-all.patch b/abs/extra/mc/mc-4.6.1-bash-all.patch new file mode 100644 index 0000000..e3e2afc --- /dev/null +++ b/abs/extra/mc/mc-4.6.1-bash-all.patch @@ -0,0 +1,33 @@ +--- /src/subshell.c.000 2006-05-08 23:11:48.000000000 +0200 ++++ /src/subshell.c 2006-10-28 15:40:46.000000000 +0200 +@@ -745,29 +745,13 @@ subshell_name_quote (const char *s) + memcpy (d, cmd_start, len); + d += len; + +- /* +- * Print every character in octal format with the leading backslash. +- * tcsh and zsh may require 4-digit octals, bash < 2.05b doesn't like them. +- */ +- if (subshell_type == BASH) { + for (; *s; s++) { +- /* Must quote numbers, so that they are not glued to octals */ + if (isalpha ((unsigned char) *s)) { + *d++ = (unsigned char) *s; + } else { +- sprintf (d, "\\%03o", (unsigned char) *s); +- d += 4; +- } +- } +- } else { +- for (; *s; s++) { +- if (isalnum ((unsigned char) *s)) { +- *d++ = (unsigned char) *s; +- } else { + sprintf (d, "\\0%03o", (unsigned char) *s); + d += 5; + } +- } + } + + memcpy (d, common_end, sizeof (common_end)); + diff --git a/abs/extra/mc/mc-4.6.1-find.patch b/abs/extra/mc/mc-4.6.1-find.patch new file mode 100644 index 0000000..f44a6ac --- /dev/null +++ b/abs/extra/mc/mc-4.6.1-find.patch @@ -0,0 +1,155 @@ +diff -Naur mc-4.6.1.orig/src/cmd.c mc-4.6.1/src/cmd.c +--- mc-4.6.1.orig/src/cmd.c 2005-05-27 16:19:18.000000000 +0200 ++++ mc-4.6.1/src/cmd.c 2006-03-19 12:57:00.000000000 +0100 +@@ -510,7 +510,7 @@ + continue; + } + c = regexp_match (reg_exp_t, current_panel->dir.list[i].fname, +- match_file); ++ match_file, 0); + if (c == -1) { + message (1, MSG_ERROR, _(" Malformed regular expression ")); + g_free (reg_exp); +diff -Naur mc-4.6.1.orig/src/dir.c mc-4.6.1/src/dir.c +--- mc-4.6.1.orig/src/dir.c 2005-05-27 16:19:18.000000000 +0200 ++++ mc-4.6.1/src/dir.c 2006-03-19 12:58:56.000000000 +0100 +@@ -405,7 +405,7 @@ + *stale_link = 1; + } + if (!(S_ISDIR (buf1->st_mode) || *link_to_dir) && filter +- && !regexp_match (filter, dp->d_name, match_file)) ++ && !regexp_match (filter, dp->d_name, match_file, 0)) + return 0; + + /* Need to grow the *list? */ +diff -Naur mc-4.6.1.orig/src/ext.c mc-4.6.1/src/ext.c +--- mc-4.6.1.orig/src/ext.c 2005-05-27 16:19:18.000000000 +0200 ++++ mc-4.6.1/src/ext.c 2006-03-19 13:00:43.000000000 +0100 +@@ -394,7 +394,7 @@ + } + + if (content_string[0] +- && regexp_match (ptr, content_string + content_shift, match_regex)) { ++ && regexp_match (ptr, content_string + content_shift, match_regex, 0)) { + found = 1; + } + +@@ -534,11 +534,11 @@ + /* Do not transform shell patterns, you can use shell/ for + * that + */ +- if (regexp_match (p, filename, match_regex)) ++ if (regexp_match (p, filename, match_regex, 0)) + found = 1; + } else if (!strncmp (p, "directory/", 10)) { + if (S_ISDIR (mystat.st_mode) +- && regexp_match (p + 10, filename, match_regex)) ++ && regexp_match (p + 10, filename, match_regex, 0)) + found = 1; + } else if (!strncmp (p, "shell/", 6)) { + p += 6; +diff -Naur mc-4.6.1.orig/src/find.c mc-4.6.1/src/find.c +--- mc-4.6.1.orig/src/find.c 2005-05-27 16:19:18.000000000 +0200 ++++ mc-4.6.1/src/find.c 2006-03-19 13:04:10.000000000 +0100 +@@ -575,6 +575,7 @@ + struct stat tmp_stat; + static int pos; + static int subdirs_left = 0; ++ int flags = 0; + + if (!h) { /* someone forces me to close dirp */ + if (dirp) { +@@ -586,6 +587,10 @@ + dp = 0; + return 1; + } ++ ++ if (!(case_sense->state & C_BOOL)) ++ flags |= REG_ICASE; ++ + do_search_begin: + while (!dp){ + +@@ -662,7 +667,7 @@ + g_free (tmp_name); + } + +- if (regexp_match (find_pattern, dp->d_name, match_file)){ ++ if (regexp_match (find_pattern, dp->d_name, match_file, flags)){ + if (content_pattern) { + if (search_content (h, directory, dp->d_name)) { + return 1; +diff -Naur mc-4.6.1.orig/src/user.c mc-4.6.1/src/user.c +--- mc-4.6.1.orig/src/user.c 2005-07-01 17:47:07.000000000 +0200 ++++ mc-4.6.1/src/user.c 2006-03-19 13:05:00.000000000 +0100 +@@ -412,18 +412,18 @@ + break; + case 'f': /* file name pattern */ + p = extract_arg (p, arg, sizeof (arg)); +- *condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file); ++ *condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file, 0); + break; + case 'y': /* syntax pattern */ + if (edit_widget && edit_widget->syntax_type) { + p = extract_arg (p, arg, sizeof (arg)); + *condition = panel && +- regexp_match (arg, edit_widget->syntax_type, match_normal); ++ regexp_match (arg, edit_widget->syntax_type, match_normal, 0); + } + break; + case 'd': + p = extract_arg (p, arg, sizeof (arg)); +- *condition = panel && regexp_match (arg, panel->cwd, match_file); ++ *condition = panel && regexp_match (arg, panel->cwd, match_file, 0); + break; + case 't': + p = extract_arg (p, arg, sizeof (arg)); +diff -Naur mc-4.6.1.orig/src/util.c mc-4.6.1/src/util.c +--- mc-4.6.1.orig/src/util.c 2005-05-27 16:19:18.000000000 +0200 ++++ mc-4.6.1/src/util.c 2006-03-19 13:06:58.000000000 +0100 +@@ -563,27 +563,30 @@ + return g_strdup (pattern); + } + +-int regexp_match (const char *pattern, const char *string, int match_type) ++int regexp_match (const char *pattern, const char *string, int match_type, int flags) + { + static regex_t r; + static char *old_pattern = NULL; + static int old_type; ++ static int old_flags; + int rval; + char *my_pattern; + +- if (!old_pattern || STRCOMP (old_pattern, pattern) || old_type != match_type){ ++ if (!old_pattern || STRCOMP (old_pattern, pattern) || old_type != match_type || old_flags != flags){ + if (old_pattern){ + regfree (&r); + g_free (old_pattern); + old_pattern = NULL; + } + my_pattern = convert_pattern (pattern, match_type, 0); +- if (regcomp (&r, my_pattern, REG_EXTENDED|REG_NOSUB|MC_ARCH_FLAGS)) { ++ ++ if (regcomp (&r, my_pattern, REG_EXTENDED|REG_NOSUB|MC_ARCH_FLAGS|flags)) { + g_free (my_pattern); + return -1; + } + old_pattern = my_pattern; + old_type = match_type; ++ old_flags = flags; + } + rval = !regexec (&r, string, 0, NULL, 0); + return rval; +diff -Naur mc-4.6.1.orig/src/util.h mc-4.6.1/src/util.h +--- mc-4.6.1.orig/src/util.h 2005-01-13 20:20:47.000000000 +0100 ++++ mc-4.6.1/src/util.h 2006-03-19 13:07:16.000000000 +0100 +@@ -116,7 +116,7 @@ + + extern int easy_patterns; + char *convert_pattern (const char *pattern, int match_type, int do_group); +-int regexp_match (const char *pattern, const char *string, int match_type); ++int regexp_match (const char *pattern, const char *string, int match_type, int flags); + + /* Error pipes */ + void open_error_pipe (void); diff --git a/abs/extra/mc/mc-4.6.1-invalid-mtime.patch b/abs/extra/mc/mc-4.6.1-invalid-mtime.patch new file mode 100644 index 0000000..07b1f6d --- /dev/null +++ b/abs/extra/mc/mc-4.6.1-invalid-mtime.patch @@ -0,0 +1,30 @@ + + Invalid timestamps on files caused mc to segfault by passing a null + pointer to strftime. Avoid trying to print the time in this case. + + Reported by Maxim Britov + at http://bugs.gentoo.org/184296 + +--- mc-4.6.1/src/util.c ++++ mc-4.6.1/src/util.c +@@ -717,6 +717,7 @@ + static size_t i18n_timelength = 0; + static const char *fmtyear, *fmttime; + const char *fmt; ++ struct tm *whentm; + + if (i18n_timelength == 0){ + i18n_timelength = i18n_checktimelength() + 1; +@@ -740,7 +741,11 @@ + else + fmt = fmttime; + +- strftime (timebuf, i18n_timelength, fmt, localtime(&when)); ++ whentm = localtime(&when); ++ if (whentm == NULL) ++ return "(invalid)"; ++ ++ strftime (timebuf, i18n_timelength, fmt, whentm); + return timebuf; + } + diff --git a/abs/extra/mc/mc-4.6.1-largefile.patch b/abs/extra/mc/mc-4.6.1-largefile.patch new file mode 100644 index 0000000..de30715 --- /dev/null +++ b/abs/extra/mc/mc-4.6.1-largefile.patch @@ -0,0 +1,194 @@ +diff -Naur mc-4.6.1.orig/intl/loadmsgcat.c mc-4.6.1/intl/loadmsgcat.c +--- mc-4.6.1.orig/intl/loadmsgcat.c 2005-07-23 18:52:57.000000000 +0200 ++++ mc-4.6.1/intl/loadmsgcat.c 2006-03-19 17:11:14.000000000 +0100 +@@ -1002,7 +1002,7 @@ + /* The magic number is wrong: not a message catalog file. */ + #ifdef HAVE_MMAP + if (use_mmap) +- munmap ((caddr_t) data, size); ++ munmap ((void *) data, size); + else + #endif + free (data); +@@ -1271,7 +1271,7 @@ + free (domain->malloced); + #ifdef HAVE_MMAP + if (use_mmap) +- munmap ((caddr_t) data, size); ++ munmap ((void *) data, size); + else + #endif + free (data); +@@ -1306,7 +1306,7 @@ + + # ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) +- munmap ((caddr_t) domain->data, domain->mmap_size); ++ munmap ((void *) domain->data, domain->mmap_size); + else + # endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); +diff -Naur mc-4.6.1.orig/src/view.c mc-4.6.1/src/view.c +--- mc-4.6.1.orig/src/view.c 2005-05-27 16:19:18.000000000 +0200 ++++ mc-4.6.1/src/view.c 2006-03-19 17:10:34.000000000 +0100 +@@ -76,6 +76,12 @@ + #define vwidth (view->widget.cols - (view->have_frame ? 2 : 0)) + #define vheight (view->widget.lines - (view->have_frame ? 2 : 0)) + ++#if GLIB_MAJOR_VERSION >= 2 ++# define my_g_malloc g_try_malloc ++#else ++# define my_g_malloc g_malloc ++#endif ++ + /* Offset in bytes into a file */ + typedef unsigned long offset_type; + #define INVALID_OFFSET ((offset_type) -1) +@@ -560,8 +566,8 @@ + view->data = mc_mmap (0, view->s.st_size, PROT_READ, + MAP_FILE | MAP_SHARED, view->file, 0); + else +- view->data = (caddr_t) -1; +- if ((caddr_t) view->data != (caddr_t) - 1) { ++ view->data = (void *) -1; ++ if (view->data != (void *)-1) { + /* mmap worked */ + view->first = 0; + view->bytes_read = view->s.st_size; +@@ -573,6 +579,9 @@ + /* For the OSes that don't provide mmap call, try to load all the + * file into memory (alex@bcs.zaporizhzhe.ua). Also, mmap can fail + * for any reason, so we use this as fallback (pavel@ucw.cz) */ ++ ++ /* If large file support is enabled, st_size is a 64 bit value and ++ * will thus on 32 bit platforms possibly be beyond the range of gulong */ + + /* Make sure view->s.st_size is not truncated when passed to g_malloc */ + if ((gulong) view->s.st_size == view->s.st_size) +diff -Naur mc-4.6.1.orig/vfs/local.c mc-4.6.1/vfs/local.c +--- mc-4.6.1.orig/vfs/local.c 2004-09-25 01:00:18.000000000 +0200 ++++ mc-4.6.1/vfs/local.c 2006-03-19 17:00:45.000000000 +0100 +@@ -243,8 +243,8 @@ + } + + #ifdef HAVE_MMAP +-caddr_t +-local_mmap (struct vfs_class *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset) ++void * ++local_mmap (struct vfs_class *me, void *addr, size_t len, int prot, int flags, void *data, off_t offset) + { + int fd = * (int *)data; + +@@ -252,7 +252,7 @@ + } + + int +-local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data) ++local_munmap (struct vfs_class *me, void *addr, size_t len, void *data) + { + return munmap (addr, len); + } +diff -Naur mc-4.6.1.orig/vfs/local.h mc-4.6.1/vfs/local.h +--- mc-4.6.1.orig/vfs/local.h 2004-08-17 11:17:43.000000000 +0200 ++++ mc-4.6.1/vfs/local.h 2006-03-19 17:01:35.000000000 +0100 +@@ -13,9 +13,9 @@ + extern int local_errno (struct vfs_class *me); + extern int local_lseek (void *data, off_t offset, int whence); + #ifdef HAVE_MMAP +-extern caddr_t local_mmap (struct vfs_class *me, caddr_t addr, size_t len, ++extern void *local_mmap (struct vfs_class *me, void *addr, size_t len, + int prot, int flags, void *data, off_t offset); +-extern int local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data); ++extern int local_munmap (struct vfs_class *me, void *addr, size_t len, void *data); + #endif + + #endif +diff -Naur mc-4.6.1.orig/vfs/samba/lib/util.c mc-4.6.1/vfs/samba/lib/util.c +--- mc-4.6.1.orig/vfs/samba/lib/util.c 2005-05-27 16:19:19.000000000 +0200 ++++ mc-4.6.1/vfs/samba/lib/util.c 2006-03-19 17:06:39.000000000 +0100 +@@ -1836,7 +1836,7 @@ + + /* Look up the host address in the address list we just got. */ + for (i = 0; hp->h_addr_list[i]; i++) { +- if (memcmp(hp->h_addr_list[i], (caddr_t) & addr, sizeof(addr)) == 0) ++ if (memcmp(hp->h_addr_list[i], &addr, sizeof(addr)) == 0) + return True; + } + +diff -Naur mc-4.6.1.orig/vfs/vfs.c mc-4.6.1/vfs/vfs.c +--- mc-4.6.1.orig/vfs/vfs.c 2005-05-27 16:19:19.000000000 +0200 ++++ mc-4.6.1/vfs/vfs.c 2006-03-19 17:03:48.000000000 +0100 +@@ -740,27 +740,27 @@ + + #ifdef HAVE_MMAP + static struct mc_mmapping { +- caddr_t addr; ++ void *addr; + void *vfs_info; + struct vfs_class *vfs; + struct mc_mmapping *next; + } *mc_mmaparray = NULL; + +-caddr_t +-mc_mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) ++void * ++mc_mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset) + { + struct vfs_class *vfs; +- caddr_t result; ++ void *result; + struct mc_mmapping *mcm; + + if (fd == -1) +- return (caddr_t) -1; ++ return (void *) -1; + + vfs = vfs_op (fd); +- result = vfs->mmap ? (*vfs->mmap)(vfs, addr, len, prot, flags, vfs_info (fd), offset) : (caddr_t)-1; +- if (result == (caddr_t)-1){ ++ result = vfs->mmap ? (*vfs->mmap)(vfs, addr, len, prot, flags, vfs_info (fd), offset) : (void *)-1; ++ if (result == (void *)-1){ + errno = ferrno (vfs); +- return (caddr_t)-1; ++ return (void *)-1; + } + mcm =g_new (struct mc_mmapping, 1); + mcm->addr = result; +@@ -772,7 +772,7 @@ + } + + int +-mc_munmap (caddr_t addr, size_t len) ++mc_munmap (void *addr, size_t len) + { + struct mc_mmapping *mcm, *mcm2 = NULL; + +diff -Naur mc-4.6.1.orig/vfs/vfs.h mc-4.6.1/vfs/vfs.h +--- mc-4.6.1.orig/vfs/vfs.h 2004-11-16 17:16:08.000000000 +0100 ++++ mc-4.6.1/vfs/vfs.h 2006-03-19 17:05:57.000000000 +0100 +@@ -49,8 +49,8 @@ + int mc_ctl (int fd, int ctlop, void *arg); + int mc_setctl (const char *path, int ctlop, void *arg); + #ifdef HAVE_MMAP +-caddr_t mc_mmap (caddr_t, size_t, int, int, int, off_t); +-int mc_munmap (caddr_t addr, size_t len); ++void *mc_mmap (void *, size_t, int, int, int, off_t); ++int mc_munmap (void *addr, size_t len); + #endif /* HAVE_MMAP */ + + /* Operations for mc_ctl - on open file */ +diff -Naur mc-4.6.1.orig/vfs/vfs-impl.h mc-4.6.1/vfs/vfs-impl.h +--- mc-4.6.1.orig/vfs/vfs-impl.h 2004-09-02 15:57:59.000000000 +0200 ++++ mc-4.6.1/vfs/vfs-impl.h 2006-03-19 17:12:01.000000000 +0100 +@@ -72,9 +72,9 @@ + int (*setctl) (struct vfs_class *me, const char *path, int ctlop, + void *arg); + #ifdef HAVE_MMAP +- caddr_t (*mmap) (struct vfs_class *me, caddr_t addr, size_t len, ++ void *(*mmap) (struct vfs_class *me, void *addr, size_t len, + int prot, int flags, void *vfs_info, off_t offset); +- int (*munmap) (struct vfs_class *me, caddr_t addr, size_t len, ++ int (*munmap) (struct vfs_class *me, void *addr, size_t len, + void *vfs_info); + #endif + }; diff --git a/abs/extra/mc/mc-4.6.1-nonblock.patch b/abs/extra/mc/mc-4.6.1-nonblock.patch new file mode 100644 index 0000000..eca34aa --- /dev/null +++ b/abs/extra/mc/mc-4.6.1-nonblock.patch @@ -0,0 +1,11 @@ +--- mc-4.6.1/src/cons.saver.c.old 2006-04-30 20:45:11.725128977 +0200 ++++ mc-4.6.1/src/cons.saver.c 2006-04-30 20:45:55.545063247 +0200 +@@ -134,7 +134,7 @@ + + if (seteuid (uid) < 0) + die (); +- console_fd = open (tty_name, O_RDONLY); ++ console_fd = open (tty_name, O_RDONLY | O_NONBLOCK); + if (console_fd < 0) + die (); + if (fstat (console_fd, &st) < 0 || ! S_ISCHR (st.st_mode)) diff --git a/abs/extra/mdbtools/PKGBUILD b/abs/extra/mdbtools/PKGBUILD new file mode 100644 index 0000000..c7a562d --- /dev/null +++ b/abs/extra/mdbtools/PKGBUILD @@ -0,0 +1,24 @@ +# Contributor: TDY +# Contributor: Eduard "bekks" Warkentin +pkgname=mdbtools +pkgver=0.5 +pkgrel=8 +pkgdesc="Utilities for viewing data and exporting schema from Microsoft Access Database files" +arch=('i686' 'x86_64') +url="http://sourceforge.net/projects/mdbtools/" +license=('LGPL' 'GPL') +depends=('libgnomeui') +makedepends=('bison' 'flex') +options=('!libtool') +source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz + gmdb2.desktop) +md5sums=('4a18bf96e67161101cade64526756d22' + '289f236ca91d73510e842922b5776999') + +build() { + cd "$srcdir/$pkgname-$pkgver" + ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man + make || return 1 + make DESTDIR="$pkgdir" install + install -Dm644 ../gmdb2.desktop "$pkgdir/usr/share/applications/gmdb2.desktop" +} diff --git a/abs/extra/mdbtools/gmdb2.desktop b/abs/extra/mdbtools/gmdb2.desktop new file mode 100644 index 0000000..8b40dc2 --- /dev/null +++ b/abs/extra/mdbtools/gmdb2.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=MDB Tools +Comment=View data and export schema from MDB files +TryExec=/usr/bin/gmdb2 +Exec=gmdb2 +Icon=/usr/share/gmdb/glade/logo.xpm +Categories=System;FileTools; diff --git a/abs/extra/mediaserv/PKGBUILD b/abs/extra/mediaserv/PKGBUILD new file mode 100644 index 0000000..0ed43fa --- /dev/null +++ b/abs/extra/mediaserv/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=mediaserv +pkgver=0.05 +pkgrel=5 +pkgdesc="On-demand transcoding server for videos, targetting the Nokia Internet Tablets." +arch=('i686' 'x86_64') +license=('ARTISTIC') +depends=('tablet-encode' 'perl-xml-rss') +backup=(/myth/mediaserv/config) +install=(mediaserv.install) +url="http://mediautils.garage.maemo.org/tablet-encode.html" +source=(https://garage.maemo.org/frs/download.php/2632/mediaserv-0.05.tar.gz linhes-mediaserv.tar.bz2 mediaserv.no_daemon.patch run finish) + +build() { + cd ${srcdir}/mediaserv + patch -Np1 -i ${startdir}/src/mediaserv.no_daemon.patch || return 1 + mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/etc/sv/mediaserv/supervise + mkdir -p $startdir/pkg/usr/share/doc/mediaserv + mkdir -p $startdir/pkg/myth/mediaserv + mkdir -p $startdir/pkg/myth/mediaserv/media + install -D -m755 mediaserv $startdir/pkg/usr/bin + cp README.txt $startdir/pkg/usr/share/doc/mediaserv + cp -a ${srcdir}/.mediaserv/* ${pkgdir}/myth/mediaserv + install -D -m755 ${srcdir}/run ${srcdir}/finish $startdir/pkg/etc/sv/mediaserv +} diff --git a/abs/extra/mediaserv/finish b/abs/extra/mediaserv/finish new file mode 100644 index 0000000..f424494 --- /dev/null +++ b/abs/extra/mediaserv/finish @@ -0,0 +1,8 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Stopping mediaserv" +#wait +exec /usr/bin/killall mediaserv diff --git a/abs/extra/mediaserv/linhes-mediaserv.tar.bz2 b/abs/extra/mediaserv/linhes-mediaserv.tar.bz2 new file mode 100644 index 0000000..7630679 Binary files /dev/null and b/abs/extra/mediaserv/linhes-mediaserv.tar.bz2 differ diff --git a/abs/extra/mediaserv/mediaserv.install b/abs/extra/mediaserv/mediaserv.install new file mode 100644 index 0000000..7a26077 --- /dev/null +++ b/abs/extra/mediaserv/mediaserv.install @@ -0,0 +1,26 @@ +# arg 1: the new package version +post_install() { + ln -s /myth/mediaserv /home/mythtv/.mediaserv + ln -s /myth/pretty /myth/mediaserv/media/tv + ln -s /myth/video /myth/mediaserv/media/video + chown -R mythtv.mythtv /myth/mediaserv + add_service.sh mediaserv + sv start mediaserv +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +# arg 1: the old package version +post_remove() { + sv stop mediaserv + remove_service.sh mediaserv + rm -fr /home/mythtv/.mediaserv + rm -fr /myth/mediaserv +} + +op=$1 +shift +$op $* diff --git a/abs/extra/mediaserv/mediaserv.no_daemon.patch b/abs/extra/mediaserv/mediaserv.no_daemon.patch new file mode 100644 index 0000000..b659354 --- /dev/null +++ b/abs/extra/mediaserv/mediaserv.no_daemon.patch @@ -0,0 +1,17 @@ +--- mediaserv/mediaserv.orig 2009-06-15 03:16:53.000000000 +0000 ++++ mediaserv/mediaserv 2009-06-15 03:17:29.000000000 +0000 +@@ -608,10 +608,10 @@ + # daemonize - daemonize the parent/control app + # + sub daemonize { +- my $pid = fork; # Fork off the main process +- defined ($pid) or die "Cannot start daemon: $!"; +- print "Parent daemon running.\n" if $pid; # If we have a PID, the parent daemonized okay +- exit if $pid; # Return control to the user ++# my $pid = fork; # Fork off the main process ++# defined ($pid) or die "Cannot start daemon: $!"; ++ print "Parent daemon running.\n" ; # If we have a PID, the parent daemonized okay ++# exit if $pid; # Return control to the user + + # Now we're a daemonized parent process! + diff --git a/abs/extra/mediaserv/run b/abs/extra/mediaserv/run new file mode 100644 index 0000000..82a1705 --- /dev/null +++ b/abs/extra/mediaserv/run @@ -0,0 +1,8 @@ +#!/bin/bash +exec 2>&1 +export TERM=linux +. /etc/rc.conf +. /etc/rc.d/functions +stat_runit "Starting mediaserv" +exec su mythtv -c "/usr/bin/mediaserv" +wait diff --git a/abs/extra/mednafen/PKGBUILD b/abs/extra/mednafen/PKGBUILD new file mode 100755 index 0000000..69e127f --- /dev/null +++ b/abs/extra/mednafen/PKGBUILD @@ -0,0 +1,21 @@ +# Maintainer: Daenyth +# Contributor: Angel 'angvp' Velasquez +# Contributor: kagan +pkgname=mednafen +pkgver=0.8.C +pkgrel=1 +pkgdesc="A command-line multi-system gaming emulator" +url="http://mednafen.sourceforge.net/" +license=(GPL) +arch=('i686' 'x86_64') +depends=('libcdio>=0.80-3' 'libsamplerate' 'libogg' 'libvorbis' 'sdl' 'sdl_net' 'libsndfile' 'zlib') +makedepends=('pkgconfig') +source=(http://downloads.sourceforge.net/mednafen/$pkgname-$pkgver.tar.bz2) +md5sums=('e8f4b6ba7ed2eca399b02578e1803831') + +build() { + cd $srcdir/$pkgname + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$pkgdir install +} diff --git a/abs/extra/mercurial/ChangeLog b/abs/extra/mercurial/ChangeLog new file mode 100644 index 0000000..cea6101 --- /dev/null +++ b/abs/extra/mercurial/ChangeLog @@ -0,0 +1,21 @@ + +2009-03-05 Douglas Soares de Andrade + + * Updated for i686: 1.2 + +2009-01-03 Douglas Soares de Andrade + + * Updated for i686: 1.1.2 + +2008-12-02 Douglas Soares de Andrade + + * Updated for i686: 1.1 + +2008-08-17 Douglas Soares de Andrade + + * Updated for i686: 1.0.2 + +2008-07-10 Douglas Soares de Andrade + + * Updated for i686: 1.0.1 + diff --git a/abs/extra/mercurial/PKGBUILD b/abs/extra/mercurial/PKGBUILD new file mode 100644 index 0000000..08d38e3 --- /dev/null +++ b/abs/extra/mercurial/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 29080 2009-03-05 10:10:06Z douglas $ +# Contributor: Jeff Mickey +# Contributor: Giovanni Scafora +# Contributor: David 'SleepyDog' +# Maintainer: Douglas Soares de Andrade + +pkgname=mercurial +pkgver=1.2 +pkgrel=1 +pkgdesc="A scalable distributed SCM tool" +url="http://www.selenic.com/mercurial" +license=("GPL") +depends=('python>=2.6') +source=(http://www.selenic.com/mercurial/release/$pkgname-$pkgver.tar.gz) +arch=('i686' 'x86_64') + +build() { + cd $startdir/src/$pkgname-$pkgver + python setup.py install --root $startdir/pkg + + install -d $startdir/pkg/usr/share/man/{man1,man5} + install -m644 doc/hg.1 $startdir/pkg/usr/share/man/man1 + install -m644 doc/{hgrc.5,hgignore.5} $startdir/pkg/usr/share/man/man5 + install -m755 contrib/hgk $startdir/pkg/usr/bin + install -m644 -D contrib/zsh_completion $startdir/pkg/usr/share/zsh/site-functions/_hg + install -m644 -D contrib/bash_completion $startdir/pkg/etc/bash_completion.d/hg + install -d $startdir/pkg/usr/share/emacs/site-lisp + install -m644 contrib/{mq.el,mercurial.el} $startdir/pkg/usr/share/emacs/site-lisp + install -m644 -D contrib/vim/HGAnnotate.vim $startdir/pkg/usr/share/vim/syntax/HGAnnotate.vim + + # Autoloading plugins to vim = no good. + # install -d $startdir/pkg/usr/share/vim/plugin + # install -m644 contrib/vim/{hg-menu.vim,hgcommand.vim,patchreview.vim} $startdir/pkg/usr/share/vim/plugin +} +md5sums=('ac9d16b078f99f7a89d6865421570f05') diff --git a/abs/extra/mingetty/PKGBUILD b/abs/extra/mingetty/PKGBUILD new file mode 100644 index 0000000..d24a8b5 --- /dev/null +++ b/abs/extra/mingetty/PKGBUILD @@ -0,0 +1,30 @@ +# Contributor: stonecrest +pkgname=mingetty +pkgver=1.08 +pkgrel=2 +pkgdesc="Designed to be a minimal getty and allows automatic logins." +arch=('i686' 'x86_64') +url="http://sourceforge.net/projects/mingetty" +license=('GPL') +depends=('glibc') +makedepends=('gcc' 'make') +provides=('mingetty') +conflicts=('mingetty') +md5sums=('2a75ad6487ff271424ffc00a64420990' + 'b1bcb0668c34d4981e3acddc3990dfdb') +source=(http://downloads.sourceforge.net/sourceforge/mingetty/$pkgname-$pkgver.tar.gz + mingetty-utf8.patch) + +build() { + patch $startdir/src/$pkgname-$pkgver/mingetty.c mingetty-utf8.patch || return 1 + + mkdir -p $startdir/pkg/sbin || return 1 + mkdir -p $startdir/pkg/usr/man/man8 || return 1 + + cd $startdir/src || return 1 + cd $startdir/src/$pkgname-$pkgver || return 1 + + LDFLAGS="-s" make || return 1 + install -m 0755 mingetty $startdir/pkg/sbin || return 1 + install -m 0644 mingetty.8 $startdir/pkg/usr/man/man8 || return 1 +} diff --git a/abs/extra/mingetty/mingetty-utf8.patch b/abs/extra/mingetty/mingetty-utf8.patch new file mode 100644 index 0000000..c269039 --- /dev/null +++ b/abs/extra/mingetty/mingetty-utf8.patch @@ -0,0 +1,158 @@ +diff -Nru mingetty-1.07.orig/mingetty.c mingetty-1.07/mingetty.c +--- mingetty-1.07.orig/mingetty.c 2004-01-03 15:15:56.000000000 +0200 ++++ mingetty-1.07/mingetty.c 2006-11-22 22:13:26.967910100 +0200 +@@ -16,10 +16,15 @@ + * - autologin only at first login + * - /etc/mingetty.conf that can be used instead of /etc/inittab for + * command line options +- * - Can UTF-8 setup be done within mingetty? ++ * - Can UTF-8 setup be done within mingetty? Let's try now :-) (VinzC) + * - Also add /bin/login-type functionality in here? + */ + ++/* Additional comments: Vincent Cadet (2006-11-21) ++ * - Attempt to make mingetty support UTF-8. Modifications were imported ++ * from Suse migetty.c 0.9.6s. ++ */ ++ + #include + #include + #include +@@ -39,6 +44,19 @@ + #include + #include + #include ++#include ++#include ++#include ++#include ++#include ++ ++#ifndef IUTF8 ++# ifndef ASM_IUTF8 ++# error ASM_IUTF8 input flag not defined - Cannot define IUTF8 ++# else ++# define IUTF8 ASM_IUTF8 ++# endif ++#endif + + /* name of this program (argv[0]) */ + static char *progname; +@@ -74,6 +92,8 @@ + static char *autologin = NULL; + /* try to read a char before dropping to login prompt */ + static int loginpause = 0; ++/* terminal mode */ ++static int mode = K_RAW; + + /* error() - output error messages */ + static void error (const char *fmt, ...) +@@ -187,10 +207,21 @@ + if (fd > 2) + close (fd); + ++ /* Detect mode of current keyboard setup, e.g. for UTF-8 */ ++ if (ioctl(0, KDGKBMODE, &mode) < 0) ++ mode = K_RAW; ++ + /* Write a reset string to the terminal. This is very linux-specific + and should be checked for other systems. */ + if (noclear == 0) +- write (0, "\033c", 2); ++ /* don't write a full reset (ESC c) because this leaves the ++ unicode mode again if the terminal was in unicode mode ++ and also undos the ESC sequences in CONSOLE_MAGIC which ++ are needed for some languages/console-fonts. ++ Just put the cursor to the home position (ESC [ H), ++ erase everything below the cursor (ESC [ J), and set the ++ scrolling region to the full window (ESC [ r) */ ++ write (0, "\033[r\033[H\033[J", 9); + + sigaction (SIGHUP, &sa_old, NULL); + } +@@ -292,32 +323,75 @@ + + static char *get_logname (void) + { +- static char logname[40]; ++ static char logname[4*UT_NAMESIZE]; + char *bp; + unsigned char c; ++ int ascii; ++ iconv_t ic; + + tcflush (0, TCIFLUSH); /* flush pending input */ ++ ++ /* Check for UTF-8 mode */ ++ switch(mode) { ++ case K_UNICODE: ++ ascii = 0; ++ setlocale(LC_CTYPE, "en_US.UTF-8"); ++ break; ++ case K_RAW: ++ case K_MEDIUMRAW: ++ case K_XLATE: ++ default: ++ ascii = 1; ++ setlocale(LC_CTYPE, "POSIX"); ++ break; ++ } ++ + for (*logname = 0; *logname == 0;) { + do_prompt (1); + for (bp = logname;;) { + if (read (0, &c, 1) < 1) { +- if (errno == EINTR || errno == EIO +- || errno == ENOENT) ++ if (errno == EINTR || errno == EAGAIN) { ++ usleep(1000); ++ continue; ++ } ++ if (errno == EIO || errno == ENOENT) + exit (EXIT_SUCCESS); + error ("%s: read: %s", tty, strerror (errno)); + } + if (c == '\n' || c == '\r') { + *bp = 0; + break; +- } else if (!isprint (c)) +- error ("%s: invalid character 0x%x in login" +- " name", tty, c); ++ } ++ ++ if (ascii && !isprint (c)) ++ error ("%s: invalid character 0x%x in login name", tty, c); + else if ((size_t)(bp - logname) >= sizeof (logname) - 1) + error ("%s: too long login name", tty); +- else +- *bp++ = c; ++ ++ *bp++ = c; + } + } ++ ++ if (!ascii && (ic = iconv_open("WCHAR_T", "UTF-8"))) { ++ char tmpbuf[4*sizeof(logname)], *op, *lp; ++ size_t len = bp - logname; ++ size_t out = sizeof(tmpbuf) - 1; ++ size_t wcl; ++ wint_t *wcp; ++ ++ op = tmpbuf; ++ lp = logname; ++ if ((wcl = iconv(ic , &lp, &len, &op, &out)) == (size_t)-1) ++ error ("%s: invalid character conversion for login name", tty); ++ iconv_close(ic); ++ ++ wcp = (wint_t*)tmpbuf; ++ wcp[wcl] = (wint_t)0; ++ while (*wcp) { ++ if (!iswprint(*wcp++)) ++ error ("%s: invalid character for login name found", tty); ++ } ++ } + return logname; + } + + + diff --git a/abs/extra/miro/ChangeLog b/abs/extra/miro/ChangeLog new file mode 100644 index 0000000..223b1de --- /dev/null +++ b/abs/extra/miro/ChangeLog @@ -0,0 +1,34 @@ +2008-01-30 Eric Belanger + * miro-1.1-2 + * rebuilt against xulrunner 1.8.1.11 + +2008-01-16 Varun Acharya + + * upgpkg miro-1.1 + +2008-01-03 Varun Acharya + + * Adopted and moved to extra, miro-1.0-2 + +2007-11-26 Alessio 'mOLOk' Bolognino + + * miro-1.0-2 + * changed url + * added sqlite3 as dep (fix FS#8636) + +2007-11-13 Alessio 'mOLOk' Bolognino + + * miro-1.0-1 + * version bump + +2007-09-09 Alessio 'mOLOk' Bolognino + + * miro-0.9.9-1 + * version bump + +2007-08-08 Alessio 'mOLOk' Bolognino + + * miro-0.9.8.1-1 + * initial commit + + diff --git a/abs/extra/miro/Changelog b/abs/extra/miro/Changelog new file mode 100644 index 0000000..40505f2 --- /dev/null +++ b/abs/extra/miro/Changelog @@ -0,0 +1,2 @@ +Miro 2.0.4-3 4/30/09 +Upgrade miro.install to add remove miro from is.xml. diff --git a/abs/extra/miro/Miro-xulrunner.patch b/abs/extra/miro/Miro-xulrunner.patch new file mode 100644 index 0000000..b8f4db3 --- /dev/null +++ b/abs/extra/miro/Miro-xulrunner.patch @@ -0,0 +1,64 @@ +diff -up Miro-1.2.3/platform/gtk-x11/platform/mozsetup.py.old Miro-1.2.3/platform/gtk-x11/platform/mozsetup.py +--- Miro-1.2.3/platform/gtk-x11/platform/mozsetup.py.old 2008-04-22 17:17:01.000000000 +0200 ++++ Miro-1.2.3/platform/gtk-x11/platform/mozsetup.py 2008-04-28 12:51:46.000000000 +0200 +@@ -106,8 +106,8 @@ def setupMozillaEnvironment(): + set_profile_path = gtkmozembed.gtk_moz_embed_set_profile_path + + set_profile_path(config.get(prefs.SUPPORT_DIRECTORY), 'mozilla') +- if hasattr(gtkmozembed, 'set_comp_path'): +- set_comp_path = gtkmozembed.set_comp_path ++ if hasattr(gtkmozembed, 'set_path'): ++ set_comp_path = gtkmozembed.set_path + elif hasattr(gtkmozembed, 'set_path'): + set_comp_path = gtkmozembed.set_path + else: +diff -up Miro-1.2.3/platform/gtk-x11/setup.py.old Miro-1.2.3/platform/gtk-x11/setup.py +--- Miro-1.2.3/platform/gtk-x11/setup.py.old 2008-04-22 17:17:01.000000000 +0200 ++++ Miro-1.2.3/platform/gtk-x11/setup.py 2008-04-28 13:14:27.000000000 +0200 +@@ -209,6 +209,7 @@ def parsePkgConfig(command, components, + options_dict = { + 'include_dirs' : [], + 'library_dirs' : [], ++ 'runtime_dirs' : [], + 'libraries' : [], + 'extra_compile_args' : [] + } +@@ -224,6 +225,11 @@ def parsePkgConfig(command, components, + options_dict['libraries'].append(rest) + else: + options_dict['extra_compile_args'].append(comp) ++ ++ commandLine = "%s --variable=libdir %s" % (command, components) ++ output = getCommandOutput(commandLine).strip() ++ options_dict['runtime_dirs'].append(output) ++ + return options_dict + + #### The fasttypes extension #### +@@ -279,6 +285,8 @@ mozilla_browser_options = parsePkgConfig + "gtk+-2.0 glib-2.0 pygtk-2.0 --define-variable=includetype=unstable %s %s" % (gtkmozembed, xpcom)) + mozilla_lib_path = parsePkgConfig('pkg-config', + '%s' % gtkmozembed)['library_dirs'] ++runtime_lib_path = parsePkgConfig('pkg-config', ++ '%s' % gtkmozembed)['runtime_dirs'] + # Find the base mozilla directory, and add the subdirs we need. + def allInDir(directory, subdirs): + for subdir in subdirs: +@@ -334,7 +342,7 @@ mozilla_browser_ext = Extension("miro.pl + os.path.join(platform_html_frontend_dir,'DragAndDrop.cc'), + os.path.join(platform_html_frontend_dir,'XPCOMUtil.cc'), + ], +- runtime_library_dirs=mozilla_lib_path, ++ runtime_library_dirs=runtime_lib_path, + **mozilla_browser_options) + #### Xlib Extension #### + xlib_ext = \ +@@ -434,7 +442,7 @@ class install_data (distutils.command.in + BUILD_MACHINE="%s@%s" % (getlogin(), + os.uname()[1]), + BUILD_TIME=str(time.time()), +- MOZILLA_LIB_PATH=mozilla_lib_path[0]) ++ MOZILLA_LIB_PATH=runtime_lib_path[0]) + self.outfiles.append(dest) + + locale_dir = os.path.join (resource_dir, "locale") diff --git a/abs/extra/miro/PKGBUILD b/abs/extra/miro/PKGBUILD new file mode 100644 index 0000000..1411c43 --- /dev/null +++ b/abs/extra/miro/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 35621 2009-04-14 18:07:17Z ronald $ +# Maintainer: Ronald van Haren + +pkgname=miro +pkgver=2.0.4 +pkgrel=9 +pkgdesc="The free and open source internet TV platform" +arch=('i686' 'x86_64') +url="http://www.getmiro.com" +license=('GPL2') +depends=('xine-lib>=1.1.16.1' 'boost>=1.37.0' 'gnome-python-extras>=2.25.3' + 'dbus-python>=0.82.4' 'pyrex' 'xulrunner>=1.9.0.1' 'gtk2' 'nspr' + 'desktop-file-utils') +makedepends=('pkgconfig' 'pm-utils' 'qt3') +optdepends=('gstreamer0.10-python: gstreamer backend (potentially unstable)' 'gstreamer0.10: gstreamer backend (potentially unstable') +install=miro.install +conflicts=('democracy') +replaces=('democracy') +provides=('democracy') +source=(http://ftp.osuosl.org/pub/pculture.org/miro/src/Miro-${pkgver}.tar.gz + miro.exec.patch) +md5sums=('e6cf48252496b2bddd290f375fc0ca33' + '355648eac790d52c51ccb014736f90fc') + +build() { + cd ${srcdir}/Miro-${pkgver}/platform/gtk-x11 + python setup.py install --root=${pkgdir} || return 1 + + # Fix FS#14196 + cd ${pkgdir} + patch -Np0 -i ${srcdir}/miro.exec.patch || return 1 +} diff --git a/abs/extra/miro/boost_1.36.0_fix.patch b/abs/extra/miro/boost_1.36.0_fix.patch new file mode 100644 index 0000000..b3b5a48 --- /dev/null +++ b/abs/extra/miro/boost_1.36.0_fix.patch @@ -0,0 +1,32 @@ +--- Miro-1.2.7/portable/libtorrent/src/torrent_info.cpp.old 2008-09-21 13:47:00.122974031 +0200 ++++ Miro-1.2.7/portable/libtorrent/src/torrent_info.cpp 2008-09-21 13:48:54.812965713 +0200 +@@ -352,7 +352,7 @@ + fs::path tmp = m_name; + if (tmp.is_complete()) throw std::runtime_error("torrent contains " + "a file with an absolute path: '" + m_name + "'"); +- if (tmp.has_branch_path()) throw std::runtime_error( ++ if (!tmp.branch_path().empty()) throw std::runtime_error( + "torrent contains name with directories: '" + m_name + "'"); + + // extract file list +@@ -556,7 +556,7 @@ + { + // TORRENT_ASSERT(file.begin() != file.end()); + +- if (!file.has_branch_path()) ++ if (file.branch_path().empty()) + { + // you have already added at least one file with a + // path to the file (branch_path), which means that + +--- Miro-1.2.7/portable/libtorrent/include/libtorrent/disk_io_thread.hpp.old 2008-09-21 13:57:05.433330334 +0200 ++++ Miro-1.2.7/portable/libtorrent/include/libtorrent/disk_io_thread.hpp 2008-09-21 13:57:29.060304305 +0200 +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + #include "libtorrent/config.hpp" + + namespace libtorrent + diff --git a/abs/extra/miro/miro-xine.patch b/abs/extra/miro/miro-xine.patch new file mode 100644 index 0000000..5abf5f1 --- /dev/null +++ b/abs/extra/miro/miro-xine.patch @@ -0,0 +1,12 @@ +--- usr/bin/miro.old 2009-02-22 21:49:26.332356738 +0100 ++++ usr/bin/miro 2009-02-22 21:50:39.169010435 +0100 +@@ -21,7 +21,7 @@ + exit; + fi + +- LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 $GDB -ex 'set breakpoint pending on' -ex 'break gdk_x_error' -ex 'run' --args $PYTHON ./miro.real --sync "$@" ++ LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 $GDB -ex 'set breakpoint pending on' -ex 'break gdk_x_error' -ex 'run' --args $PYTHON ./miro.real --set xine-driver=opengl --sync "$@" + else +- LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 miro.real "$@" ++ LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 miro.real --set xine-driver=opengl "$@" + fi diff --git a/abs/extra/miro/miro.exec.patch b/abs/extra/miro/miro.exec.patch new file mode 100644 index 0000000..4b012af --- /dev/null +++ b/abs/extra/miro/miro.exec.patch @@ -0,0 +1,9 @@ +--- usr/bin/miro.old 2009-04-14 19:40:09.578785938 +0200 ++++ usr/bin/miro 2009-04-14 19:40:34.445435006 +0200 +@@ -23,5 +23,5 @@ + + LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 $GDB -ex 'set breakpoint pending on' -ex 'run' --args $PYTHON ./miro.real --sync "$@" + else +- LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 miro.real "$@" ++ MOZILLA_FIVE_HOME="/usr/lib/xulrunner-1.9/" LD_LIBRARY_PATH=/usr/lib/xulrunner-1.9 miro.real "$@" + fi diff --git a/abs/extra/miro/miro.install b/abs/extra/miro/miro.install new file mode 100644 index 0000000..db52df4 --- /dev/null +++ b/abs/extra/miro/miro.install @@ -0,0 +1,54 @@ +# arg 1: the new package version +post_install() { + update-desktop-database -q + mv /usr/share/mythtv/is.xml /tmp/is.xml.tmp + sed -e '/\#Miro/,/\#Miro/d' < /tmp/is.xml.tmp > /usr/share/mythtv/is.xml + mv /usr/share/mythtv/is.xml /tmp + grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo " " >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + mv /tmp/is.xml.tmp /usr/share/mythtv/is.xml + if [ -d /myth/democracy ] + then + ln -s /myth/democracy /home/mythtv/.miro + ln -s /myth/miro/Movies /myth/video/Miro + exit 1 + else + if [ -d /myth/miro ] + then + ln -s /myth/miro /home/mythtv/.miro + ln -s /myth/miro/Movies /myth/video/Miro + exit 1 + else + if [ ! -d /myth/miro -o /myth/democracy ] + then + mkdir -p /myth/miro/Movies + ln -s /myth/miro /home/mythtv/.miro + ln -s /myth/miro/Movies /home/mythtv/Movies + ln -s /myth/miro/Movies /myth/video/Miro + fi + fi + fi +} + +post_update() { + post_install $1 +} + +post_remove() { + update-desktop-database -q + rm -fr /home/mythtv/.miro /myth/video/Miro /myth/miro /myth/democracy + mv /usr/share/mythtv/is.xml /tmp/is.xml.tmp + sed -e '/\#Miro/,/\#Miro/d' < /tmp/is.xml.tmp > /usr/share/mythtv/is.xml +} + +op=$1 +shift +$op $* diff --git a/abs/extra/miro/miro_python26.patch b/abs/extra/miro/miro_python26.patch new file mode 100644 index 0000000..f404a4e --- /dev/null +++ b/abs/extra/miro/miro_python26.patch @@ -0,0 +1,16 @@ +--- miro.real 2008-10-24 19:49:17.000000000 +0200 ++++ miro.real.new 2008-11-12 08:51:17.649458321 +0100 +@@ -6,8 +6,12 @@ + if xlibhelper.XInitThreads() == 0: + print "WARNING: XInitThreads() failed!" + +-import os.path ++import miro.feedparser ++import miro.storedatabase + import sys ++sys.modules['feedparser'] = miro.feedparser ++sys.modules['storedatabase'] = miro.storedatabase ++import os.path + import optparse + + import pygtk diff --git a/abs/extra/miro/missing-headers.patch b/abs/extra/miro/missing-headers.patch new file mode 100644 index 0000000..7dc42b8 --- /dev/null +++ b/abs/extra/miro/missing-headers.patch @@ -0,0 +1,33 @@ +diff -ur a/portable/libtorrent/include/libtorrent/peer_id.hpp b/portable/libtorrent/include/libtorrent/peer_id.hpp +--- a/portable/libtorrent/include/libtorrent/peer_id.hpp 2008-04-22 10:17:04.000000000 -0500 ++++ b/portable/libtorrent/include/libtorrent/peer_id.hpp 2008-05-07 01:51:09.000000000 -0500 +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include "libtorrent/config.hpp" + #include "libtorrent/assert.hpp" +diff -ur a/portable/libtorrent/src/entry.cpp b/portable/libtorrent/src/entry.cpp +--- a/portable/libtorrent/src/entry.cpp 2008-04-22 10:17:04.000000000 -0500 ++++ b/portable/libtorrent/src/entry.cpp 2008-05-07 02:16:14.000000000 -0500 +@@ -33,6 +33,7 @@ + #include "libtorrent/pch.hpp" + + #include ++#include + #include + #include "libtorrent/entry.hpp" + #include "libtorrent/config.hpp" +diff -ur a/portable/libtorrent/src/file.cpp b/portable/libtorrent/src/file.cpp +--- a/portable/libtorrent/src/file.cpp 2008-04-22 10:17:04.000000000 -0500 ++++ b/portable/libtorrent/src/file.cpp 2008-05-07 01:53:04.000000000 -0500 +@@ -68,6 +68,7 @@ + #include + #include "libtorrent/file.hpp" + #include ++#include + + #ifndef O_BINARY + #define O_BINARY 0 diff --git a/abs/extra/mkvtoolnix/PKGBUILD b/abs/extra/mkvtoolnix/PKGBUILD new file mode 100644 index 0000000..21681a9 --- /dev/null +++ b/abs/extra/mkvtoolnix/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 41916 2009-06-07 23:34:29Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: 03/08/04 + +pkgname=mkvtoolnix +pkgver=2.9.8 +pkgrel=1 +pkgdesc="Set of tools to create, edit and inspect Matroska files" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.bunkus.org/videotools/mkvtoolnix/index.html" +depends=('libmatroska>=0.8.1' 'flac>=1.1.4' 'libvorbis' 'wxgtk>=2.8.0.1' 'file' 'boost' 'lzo2') +source=("http://www.bunkus.org/videotools/${pkgname}/sources/${pkgname}-${pkgver}.tar.bz2") +md5sums=('7b049aa43c6b39dfcb19f5a46d5574ac') + +build() { + cd ${srcdir}/${pkgname}-${pkgver}/ + ./configure --prefix=/usr \ + --with-boost-libdir=/usr/lib + make || return 1 + make DESTDIR=${pkgdir}/ install +} diff --git a/abs/extra/mono/PKGBUILD b/abs/extra/mono/PKGBUILD new file mode 100644 index 0000000..94ad05a --- /dev/null +++ b/abs/extra/mono/PKGBUILD @@ -0,0 +1,47 @@ +# $Id: PKGBUILD 25123 2009-01-23 17:05:04Z daniel $ +# Maintainer: Daniel Isenmann +# Contributor: Brice Carpentier + +pkgname=mono +pkgver=2.2 +pkgrel=1 +pkgdesc="Free implementation of the .NET platform including runtime and compiler" +arch=(i686 x86_64) +license=('GPL' 'LGPL2' 'MPL' 'custom:MITX11') +url="http://www.mono-project.com/" +depends=('zlib' 'libgdiplus>=2.2') +makedepends=('pkgconfig' 'bison') +options=('!libtool' '!makeflags') +provides=('monodoc') +conflicts=('monodoc') +source=(http://www.go-mono.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2 + mono.rc.d) +md5sums=('da147e24d14a73d8ad52775dd4a3d165' + '8315e46c6a6e9625502521fc0ad1a322') + +build() { + # get rid of that .wapi errors; thanks to brice + export MONO_SHARED_DIR=${startdir}/src/weird + mkdir -p "${MONO_SHARED_DIR}" + mkdir -p ${startdir}/pkg/usr/share/licenses/$pkgname + # build mono + cd ${startdir}/src/${pkgname}-${pkgver} + rm -f libgc/libtool.m4 + autoreconf --force --install + autoreconf --force --install libgc + ./configure --prefix=/usr --sysconfdir=/etc \ + --with-libgdiplus=installed --with-icu=no \ + --with-tls=pthread --with-jit=yes --with-preview=yes \ + --with-sigaltstack=yes --enable-nunit-tests \ + --with-moonlight=yes + make || return 1 + sed -i "/NO_INSTALL = yes/d" mcs/nunit20/nunit-console/Makefile + make DESTDIR=${startdir}/pkg install + + # install daemons and pathes + mkdir -p ${startdir}/pkg/etc/rc.d + install -m755 ${startdir}/src/mono.rc.d $startdir/pkg/etc/rc.d/mono + + #install license + install -m644 mcs/MIT.X11 ${startdir}/pkg/usr/share/licenses/$pkgname/ +} diff --git a/abs/extra/mono/__changelog b/abs/extra/mono/__changelog new file mode 100644 index 0000000..254c863 --- /dev/null +++ b/abs/extra/mono/__changelog @@ -0,0 +1 @@ +add bison as a make depends diff --git a/abs/extra/mono/bug434892.patch b/abs/extra/mono/bug434892.patch new file mode 100644 index 0000000..d4f46f6 --- /dev/null +++ b/abs/extra/mono/bug434892.patch @@ -0,0 +1,11 @@ +--- trunk/mcs/class/System.Web.Services/System.Web.Services.Description/BasicProfileChecker.cs 2008/07/01 20:17:46 107006 ++++ trunk/mcs/class/System.Web.Services/System.Web.Services.Description/BasicProfileChecker.cs 2008/10/28 09:32:46 117243 +@@ -177,7 +177,7 @@ + foreach (OperationMessage om in op.Messages) { + Message msg = ctx.Services.GetMessage (om.Message); + foreach (MessagePart part in msg.Parts) +- parts.Add (part,part); ++ parts [part] = part; // do not use Add() - there could be the same MessagePart instance. + } + } + diff --git a/abs/extra/mono/mono.rc.d b/abs/extra/mono/mono.rc.d new file mode 100644 index 0000000..548cc2d --- /dev/null +++ b/abs/extra/mono/mono.rc.d @@ -0,0 +1,35 @@ +#!/bin/bash +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Registering .NET IL binaries with mono" + if [ ! -d /proc/sys/fs/binfmt_misc ]; then + stat_die "You need support for \"misc binaries\" in your kernel!" + fi + mount | grep -q binfmt_misc + if [ $? != 0 ]; then + mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc + if [ $? != 0 ]; then + stat_die + fi + fi + echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register + stat_done + ;; + stop) + + stat_busy "Unregistering .NET IL binaries" + if [ -f /proc/sys/fs/binfmt_misc/CLR ]; then + echo '-1' > /proc/sys/fs/binfmt_misc/CLR + fi + stat_done + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/extra/mozilla-common/PKGBUILD b/abs/extra/mozilla-common/PKGBUILD new file mode 100644 index 0000000..563ebf4 --- /dev/null +++ b/abs/extra/mozilla-common/PKGBUILD @@ -0,0 +1,17 @@ +# $Id: PKGBUILD 3686 2008-06-29 10:43:22Z jgc $ +# Maintainer: dale + +pkgname=mozilla-common +pkgver=1.2 +pkgrel=1 +pkgdesc="Common Initialization Profile for Mozilla.org products" +arch=(i686 x86_64) +license=('GPL') +url="http://www.mozilla.org/" +source=(mozilla-common.sh) +md5sums=('2ecf5090ce1170c7e280e8d726952f8a') + +build() { + install -m755 -d ${startdir}/pkg/etc/profile.d + install -m755 ${startdir}/src/mozilla-common.sh ${startdir}/pkg/etc/profile.d/ || return 1 +} diff --git a/abs/extra/mozilla-common/mozilla-common.sh b/abs/extra/mozilla-common/mozilla-common.sh new file mode 100755 index 0000000..4b73259 --- /dev/null +++ b/abs/extra/mozilla-common/mozilla-common.sh @@ -0,0 +1 @@ +export MOZ_PLUGIN_PATH="/usr/lib/mozilla/plugins:/opt/mozilla/lib/plugins" diff --git a/abs/extra/myt2xvid3/PKGBUILD b/abs/extra/myt2xvid3/PKGBUILD new file mode 100755 index 0000000..9d88ce9 --- /dev/null +++ b/abs/extra/myt2xvid3/PKGBUILD @@ -0,0 +1,18 @@ +pkgname=myt2xvid3 +pkgver=0.1 +pkgrel=7 +arch=("i686") +pkgdesc="A multimedia framework based on the MPEG-4 Systems standard" +url="http://www.knoppmythwiki.org/index.php?page=XvidEncoding" +depends=('nuvexport') +install="myt2xvid3.install" +source=( myt2xvid3 myt2xvid3-userjob.sh archive.php) + + +build() { + cd $startdir/src + install -D -m 755 myt2xvid3 $startdir/pkg/usr/bin/myt2xvid3 + install -D -m 755 myt2xvid3-userjob.sh $startdir/pkg/usr/bin/myt2xvid3-userjob.sh + mkdir -m777 -p $startdir/pkg/myth/video/archive/ + install -D -m 755 archive.php $startdir/pkg/myth/video/archive/ +} diff --git a/abs/extra/myt2xvid3/archive.php b/abs/extra/myt2xvid3/archive.php new file mode 100644 index 0000000..f970868 --- /dev/null +++ b/abs/extra/myt2xvid3/archive.php @@ -0,0 +1,159 @@ + + + + + MythWeb - Archive Recordings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +'; + } +} + $i=1; + foreach (glob("*.XviD.xml") as $file) { + $lines = file($file); + echo '".''.""; + $i++; + } +//} + +function filesizeparse($size){ + $i=0; + $iec = array(" B", " KB", " MB", " GB", " TB"); + while (($size/1024)>1) { + $size=$size/1024; + $i++; + } + return substr($size,0,strpos($size,'.')+3).$iec[$i]; +} +?> +
    View and delete recordings transcoded to XviD via Myt2XviD3.
    + '; + echo $delete; + unlink($delete) or print(" failed to be "); + echo ' has been deleted, '; + $deletetoo = substr($delete, 0, -3)."avi"; + echo $deletetoo; + unlink($deletetoo) or print(" failed to be "); + echo ' has been deleted.'; + echo'
     '; + echo ''.$i.''; + echo "".strip_tags($lines[1])."".strip_tags($lines[7])."".strip_tags($lines[6])."".filesizeparse(filesize(substr($file, 0, -3)."avi"))."".'Delete'." 
    + + diff --git a/abs/extra/myt2xvid3/myt2xvid3 b/abs/extra/myt2xvid3/myt2xvid3 new file mode 100755 index 0000000..af65188 --- /dev/null +++ b/abs/extra/myt2xvid3/myt2xvid3 @@ -0,0 +1,310 @@ +#!/usr/bin/perl -w +# VERSION: 1.0b2 - myth2ipod +# Get the latest version, and change log at myth2ipod.com +# Author: Chris aka Wififun - email: wififun@myth2ipod.com +# Contributions and testing by Paul Egli +# modified to use nuvexport by starv at juniks dot org + +# Includes +use DBI; +use Getopt::Long; +use File::Path; + +# User variables +my $portable = "XviD"; +my $feedfile = "/myth/video/archive/feed.php"; +my $feedpath = "/myth/video/archive/"; +my $wwwloc = "/data/srv/httpd/htdocs"; +my $feedurl = "http://REPLACEME/archive/"; +my $nuvoptions ="--mode=XviD --nice=19 --cutlist --nodenoise --nodeinterlace --crop --multipass"; + +# Some variables +our ($dest, $format, $usage); +our ($db_host, $db_user, $db_name, $db_pass, $video_dir); +our ($hostname, $db_handle, $sql, $statement, $row_ref); +our ($chanid, $start, $nuvfile, @nuvarray); +my $rebuild = '0'; +my $encode = '0'; +my $debug = '0'; +my $setup = '0'; +my $cut = '0'; +my( $rightnow ) = `date`; + +GetOptions ("rebuild" => \$rebuild, + "encode" => \$encode, + "debug" => \$debug, + "setup" => \$setup, + "cut" => \$cut); + +if ($setup == 1){ + system("clear"); + print "Setup will do everything needed to run this script.\n"; + print "This has only been tested on KnoppMyth R5A22.\n"; + print "make sure you have edited the variables for your conguration.\n"; + my $cksetup = &promptUser("\nAre you sure you want to procceed?","n"); + if ($cksetup =~ "y") { + DoSetup(); + exit; + } + print "Setup exited. Nothing done.\n"; + exit; +} +elsif ($rebuild == 1){ + GenerateRSSFeed(); + print "Rebuilding of RSS feed is complete.\n"; + exit; +} +else { + Encode4Portable(); + print "$title is ready for your $portable\n"; + + # Check to see if the feed file exists; if not, create it. + if (! -e $feedfile) { + print "No feed file found. I will make one for you.\n"; + GenerateRSSFeed(); + print "All done.\n"; + } +} + +sub Encode4Portable{ + if ($#ARGV != 1) { + print "Encoding requires options.\nusage: myth2ipod DIRECTORY FILE\n"; + exit; + } + + # Get the show information + $directory = $ARGV[0]; + $file = $ARGV[1]; + @file = split(/_/, $file); + $chanid = $file[0]; + $start = substr $file[1],0,14; + if($debug == 1){ print "$chanid\n$start\n"}; + if (! -e $directory."/".$file){ + print "Oops, the file ".$directory.$file." does not exist.\n"; + exit; + } + + # Connect to the database + PrepSQLRead(); + $db_handle = DBI->connect("dbi:mysql:database=$db_name:host=$db_host", $db_user, $db_pass) + or die "Cannot connect to database: $!\n\n"; + $sql = "SELECT title, subtitle, description, category, starttime FROM recorded WHERE chanid = $chanid AND DATE_FORMAT(starttime,'%Y%m%d%H%i%s') = $start"; + + $statement = $db_handle->prepare($sql) + or die "Couldn't prepare query '$sql': $DBI::errstr\n"; + + $statement->execute() + or die "Couldn't execute query '$sql': $DBI::errstr\n"; + $row_ref = $statement->fetchrow_hashref(); + if($debug == 1){ print "$row_ref->{starttime}\n"}; + $title = $row_ref->{title}; + $subtitle = $row_ref->{subtitle}; + $recorddate = $row_ref->{starttime}; + $description = $row_ref->{description}; + $category = $row_ref->{category}; + $filename = $title."-".$subtitle."-".substr $start, 0, 8; + $filename =~ s/ /_/g; + $filename =~ s/&/+/g; + $filename =~ s/\047//g; + $filename =~ s/[^+0-9a-zA-Z_-]+/_/g; + $filename =~ s/_$//g; + + printf("Starting nuvexport...\n"); + EncodeIt(); + printf("Nuvexport completed, starting xml generation...\n"); + CreateItemXML(); + printf("XML file created for \"$filename\" : Yipeee\n"); + printf("Cleaning up temporary files\n"); + $cmd = "rm -f $feedpath$chanid\_$start.temp.mp4"; + print $cmd."\n"; + if(system($cmd)) { print "Removing nuvexport temp file failed\n"; } + + # remove the cutlist incase we added it. + if ($cut == 1){ + printf("Generating cutlist\n"); + $cmd = "/usr/bin/mythcommflag --chanid $chanid --starttime $start --clearcutlist"; + print $cmd."\n"; + if(system($cmd)) { print "It looks like I was not able to generate a cutlist.\n"; } + } + return 0; +} + +# +# Encode for Portable +# +sub EncodeIt { + # Create cutlist from commercial flagging if -cut was passed to the script + if ($cut == 1){ + printf("Generating cutlist\n"); + $cmd = "/usr/bin/mythcommflag --chanid $chanid --starttime $start --gencutlist"; + print $cmd."\n"; + if(system($cmd)) { print "It looks like I was not able to generate a cutlist.\n"; } + } + + # Use nuvexport to do the work + $cmd = "/usr/bin/nuvexport --chanid=$chanid --start=$start $nuvoptions --filename=$chanid\_$start.$portable --path=$feedpath"; + print $cmd."\n"; + if(system($cmd)) { print "Nuvexport encoding seems to have failed\n"; } + + # Now clean up the output so iPods with firmware 1.1 and above can use it + #$cmd = "/usr/local/bin/MP4Box -add $feedpath$chanid\_$start.temp.mp4 $feedpath$chanid\_$start.$portable.mp4"; + #print $cmd."\n"; + #if(system($cmd)) { print "MP4Box cleanup seems to have failed\n"; } + return 0; +} + +# +# Create XML with tag for this video file +# +sub CreateItemXML { + open(ITEM, ">$feedpath$chanid\_$start.$portable.xml"); + print ITEM "\n"; + print ITEM "".&encodeForXML($title." - ".$subtitle)."\n"; + print ITEM "MythTV\n"; + print ITEM "MythTV\n"; + print ITEM "\n"; + print ITEM "".&encodeForXML($file)."\n"; + print ITEM "".&encodeForXML($description)."\n"; + print ITEM "".$recorddate."\n"; + print ITEM "\n"; + print ITEM "\n"; + print ITEM "".&encodeForXML($title." - ".$subtitle." - ".$category)."\n"; + print ITEM "".&encodeForXML($category)."\n"; + print ITEM "\n"; + print "\"$filename\" has been added to the feed.\n"; + close(ITEM); + return 0; +} + +# +# Generate the RSS feed by combining the ITEM XML Files +# +sub GenerateRSSFeed { + + open(RSS, ">$feedfile"); + print RSS "\"; ?>\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "MythTV - <? if (\$_GET['title'] == \"\") { \$title = \"*\"; echo \"Recorded Programs\"; }\n"; + print RSS "else { \$title = \$_GET['title']; echo str_replace(\"_\",\" \",\$_GET['title']); } ?> \n"; + print RSS "MythTV - myth2ipod\n"; + print RSS "".&encodeForXML($feedurl)."\n"; + print RSS "Transcoded recording for your iPod Video.\n"; + print RSS "Myth TV Recorded Programs for the iPod v.1\n"; + print RSS "Myth TV Recorded Programs for the iPod v.1\n"; + print RSS "\n"; + print RSS "MythTV\n"; + print RSS "mythtv\@localhost\n"; + print RSS "\n"; + print RSS "No\n"; + print RSS "en-us\n"; + print RSS "Copyright 2005.\n"; + print RSS "mythtv\@localhost\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "TV Shows\n"; + print RSS ""; + print RSS ""; + print RSS "http://myth2ipod.com/mythipod_200.jpg\n"; + print RSS "MythTV 2 iPod\n"; + print RSS "".&encodeForXML($feedurl)."\n"; + print RSS "200\n"; + print RSS "200\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "\n"; + close(RSS); + if($debug == 1){ print "I created a feed file, was I supposed to?\n"}; + + return 0; +} + +# substitute for XML entities +sub encodeForXML { + local $result; + $result = $_[0]; + $result =~ s/&/&/g; + $result =~ s//>/g; + $result; +} + + +# +# This code taken from one of the mythlink.sh scripts to get MySQL information +# +sub PrepSQLRead{ +# Get the hostname of this machine + $hostname = `hostname`; + chomp($hostname); + +# Read the mysql.txt file in use by MythTV. +# could be in a couple places, so try the usual suspects + my $found = 0; + my @mysql = ('/usr/local/share/mythtv/mysql.txt', + '/usr/share/mythtv/mysql.txt', + '/etc/mythtv/mysql.txt', + '/usr/local/etc/mythtv/mysql.txt', + "$ENV{HOME}/.mythtv/mysql.txt", + 'mysql.txt' + ); + foreach my $file (@mysql) { + next unless (-e $file); + $found = 1; + open(CONF, $file) or die "Unable to open $file: $!\n\n"; + while (my $line = ) { + # Cleanup + next if ($line =~ /^\s*#/); + $line =~ s/^str //; + chomp($line); + # Split off the var=val pairs + my ($var, $val) = split(/\=/, $line, 2); + next unless ($var && $var =~ /\w/); + if ($var eq 'DBHostName') { + $db_host = $val; + } + elsif ($var eq 'DBUserName') { + $db_user = $val; + } + elsif ($var eq 'DBName') { + $db_name = $val; + } + elsif ($var eq 'DBPassword') { + $db_pass = $val; + } + # Hostname override + elsif ($var eq 'LocalHostName') { + $hostname = $val; + } + } + close CONF; + } + die "Unable to locate mysql.txt: $!\n\n" unless ($found && $db_host); + return 0; +} + +sub promptUser { + local($promptString,$defaultValue) = @_; + if ($defaultValue) { + print $promptString, "[", $defaultValue, "]: "; + } else { + print $promptString, ": "; + } + + $| = 1; # force a flush after our print + $_ = ; # get the input from STDIN (presumably the keyboard) + chomp; + if ("$defaultValue") { + return $_ ? $_ : $defaultValue; # return $_ if it has a value + } else { + return $_; + } +} + +sub DoSetup { + print "\nNot ready yet. How do you send the cd command from perl?\n"; + return 0; +} diff --git a/abs/extra/myt2xvid3/myt2xvid3-userjob.sh b/abs/extra/myt2xvid3/myt2xvid3-userjob.sh new file mode 100755 index 0000000..6bd46ea --- /dev/null +++ b/abs/extra/myt2xvid3/myt2xvid3-userjob.sh @@ -0,0 +1,6 @@ +#!/bin/bash +. /etc/profile +#su mythtv -c "TERM=vt100 /usr/bin/myth2ipod "$1" "$2" >/tmp/logfile" +su mythtv -c "TERM=vt100 /usr/bin/myt2xvid3 "$1" "$2" " +#or to also use commercial flagging cutlist +#su mythtv -c "TERM=vt100 /usr/bin/myth2ipod -cut "$1" "$2" >/tmp/logfile" diff --git a/abs/extra/myt2xvid3/myt2xvid3.install b/abs/extra/myt2xvid3/myt2xvid3.install new file mode 100755 index 0000000..b3767f3 --- /dev/null +++ b/abs/extra/myt2xvid3/myt2xvid3.install @@ -0,0 +1,38 @@ + +pre_install() { + mkdir -p /myth/video/archive + chown mythtv:http /myth/video/archive +} + +pre_upgrade() { + pre_install +} + +pre_remove() { + pre_install +} + +post_install() { + . /etc/systemconfig + ln -s /myth/video/archive /data/srv/httpd/htdocs/archive + ln -s /myth/video/archive/archive.php /myth/video/archive/index.php + sed -i -e "s/REPLACEME/$HOSTNAME/g" /usr/bin/myt2xvid3 + chown -R mythtv:http /myth/video/archive + /usr/bin/myt2xvid3 -rebuild +} + +post_upgrade() { + /usr/bin/myt2xvid3 -rebuild +} + +post_remove() { + rm -fr /data/srv/http/htdocs/archive + rm -rf /myth/video/archive/index.php + rm -rf /myth/video/archive/archive.php + # don't delete content that the user may still want, so leave /myth/video/archive +} + +op=$1 +shift + +$op $* diff --git a/abs/extra/myth2ipod/PKGBUILD b/abs/extra/myth2ipod/PKGBUILD new file mode 100755 index 0000000..1942f2b --- /dev/null +++ b/abs/extra/myth2ipod/PKGBUILD @@ -0,0 +1,19 @@ +pkgname=myth2ipod +pkgver=0.2 +pkgrel=28 +arch=("i686") +pkgdesc="A multimedia framework based on the MPEG-4 Systems standard" +url="myth2ipod.com" +depends=('gpac' 'nuvexport' ) +install="myth2ipod.install" +source=( myth2ipod iPod.pm myth2ipod-userjob.sh m2iweb.php) + + +build() { + cd $startdir/src + install -D -m 755 myth2ipod $startdir/pkg/usr/bin/myth2ipod + install -D -m 755 myth2ipod-userjob.sh /$startdir/pkg/usr/bin/myth2ipod-userjob.sh + install -D -m755 iPod.pm $startdir/pkg/usr/share/nuvexport/export/ffmpeg/iPod.pm + mkdir -m755 -p $startdir/pkg/myth/ipodfeed + install -D -m755 m2iweb.php $startdir/pkg/myth/ipodfeed/ +} diff --git a/abs/extra/myth2ipod/iPod.pm b/abs/extra/myth2ipod/iPod.pm new file mode 100755 index 0000000..24eae99 --- /dev/null +++ b/abs/extra/myth2ipod/iPod.pm @@ -0,0 +1,184 @@ +# +# $Date: 2006-01-18 00:15:31 -0800 (Wed, 18 Jan 2006) $ +# $Revision: 226 $ +# $Author: xris $ +# +# export::ffmpeg::iPod +# + +package export::ffmpeg::iPod; + use base 'export::ffmpeg'; + +# Load the myth and nuv utilities, and make sure we're connected to the database + use nuv_export::shared_utils; + use nuv_export::cli; + use nuv_export::ui; + use mythtv::db; + use mythtv::recordings; + +# Load the following extra parameters from the commandline + add_arg('quantisation|q=i', 'Quantisation'); + add_arg('a_bitrate|a=i', 'Audio bitrate'); + add_arg('v_bitrate|v=i', 'Video bitrate'); + add_arg('multipass!', 'Enably two-pass encoding.'); + + sub new { + my $class = shift; + my $self = { + 'cli' => qr/\bipod\b/i, + 'name' => 'Export to iPod', + 'enabled' => 1, + 'errors' => [], + 'defaults' => {}, + }; + bless($self, $class); + + # Initialize the default parameters + $self->load_defaults(); + + # Verify any commandline or config file options + die "Audio bitrate must be > 0\n" unless (!defined $self->val('a_bitrate') || $self->{'a_bitrate'} > 0); + die "Video bitrate must be > 0\n" unless (!defined $self->val('v_bitrate') || $self->{'v_bitrate'} > 0); + + # VBR, multipass, etc. + if ($self->val('multipass')) { + $self->{'vbr'} = 0; + } + elsif ($self->val('quantisation')) { + die "Quantisation must be a number between 1 and 31 (lower means better quality).\n" if ($self->{'quantisation'} < 1 || $self->{'quantisation'} > 31); + $self->{'vbr'} = 1; + } + + # Initialize and check for ffmpeg + $self->init_ffmpeg(); + + # Can we even encode ipod? + # if (!$self->can_encode('mov')) { + # push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to mov file formats."; + # } + if (!$self->can_encode('xvid')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to xvid video."; + } + if (!$self->can_encode('aac')) { + push @{$self->{'errors'}}, "Your ffmpeg installation doesn't support encoding to aac audio."; + } + # Any errors? disable this function + $self->{'enabled'} = 0 if ($self->{'errors'} && @{$self->{'errors'}} > 0); + # Return + return $self; + } + +# Load default settings + sub load_defaults { + my $self = shift; + # Load the parent module's settings + $self->SUPER::load_defaults(); + # Default bitrates + $self->{'defaults'}{'v_bitrate'} = 384; + $self->{'defaults'}{'a_bitrate'} = 64; + } + +# Gather settings from the user + sub gather_settings { + my $self = shift; + # Load the parent module's settings + $self->SUPER::gather_settings(); + # Audio Bitrate + $self->{'a_bitrate'} = query_text('Audio bitrate?', + 'int', + $self->val('a_bitrate')); + # VBR options + if (!$is_cli) { + $self->{'vbr'} = query_text('Variable bitrate video?', + 'yesno', + $self->val('vbr')); + if ($self->{'vbr'}) { + $self->{'multipass'} = query_text('Multi-pass (slower, but better quality)?', + 'yesno', + $self->val('multipass')); + if (!$self->{'multipass'}) { + while (1) { + my $quantisation = query_text('VBR quality/quantisation (1-31)?', + 'float', + $self->val('quantisation')); + if ($quantisation < 1) { + print "Too low; please choose a number between 1 and 31.\n"; + } + elsif ($quantisation > 31) { + print "Too high; please choose a number between 1 and 31\n"; + } + else { + $self->{'quantisation'} = $quantisation; + last; + } + } + } + } else { + $self->{'multipass'} = 0; + } + # Ask the user what video bitrate he/she wants + $self->{'v_bitrate'} = query_text('Video bitrate?', + 'int', + $self->val('v_bitrate')); + } + } + + sub export { + my $self = shift; + my $episode = shift; + # Force to 4:3 aspect ratio + $self->{'out_aspect'} = 1.3333; + $self->{'aspect_stretched'} = 1; + # PAL or NTSC? + my $standard = ($episode->{'finfo'}{'fps'} =~ /^2(?:5|4\.9)/) ? 'PAL' : 'NTSC'; + $self->{'width'} = 320; + $self->{'height'} = ($standard eq 'PAL') ? '288' : '240'; + $self->{'out_fps'} = ($standard eq 'PAL') ? 25 : 29.97; + # Embed the title + my $safe_title = shell_escape($episode->{'show_name'}.' - '.$episode->{'title'}); + # Dual pass? + if ($self->{'multipass'}) { + # Build the common ffmpeg string + my $ffmpeg_xtra = ' -b ' . $self->{'v_bitrate'} + .' -bufsize 65535' + .' -vcodec xvid -acodec aac ' + .' -ab ' . $self->{'a_bitrate'} + ." -f mp4 -title $safe_title"; + # Add the temporary file to the list + push @tmpfiles, "/tmp/xvid.$$.log"; + # Back up the path and use /dev/null for the first pass + my $path_bak = $self->{'path'}; + $self->{'path'} = '/dev/null'; + # Build the ffmpeg string + print "First pass...\n"; + $self->{'ffmpeg_xtra'} = " -pass 1 -passlogfile '/tmp/divx.$$.log'" + .$ffmpeg_xtra; + $self->SUPER::export($episode, ''); + # Restore the path + $self->{'path'} = $path_bak; + # Second Pass + print "Final pass...\n"; + $self->{'ffmpeg_xtra'} = " -pass 2 -passlogfile '/tmp/divx.$$.log'" + .$ffmpeg_xtra; + } + # Single Pass + else { + $self->{'ffmpeg_xtra'} = ' -b ' . $self->{'v_bitrate'} + .(($self->{'vbr'}) + ? ' -qmin '.$self->{'quantisation'} + .' -qmax 31 -minrate 32' + .' -maxrate '.(2*$self->{'v_bitrate'}) + .' -bt 32' + : '') + .' -vcodec xvid -acodec aac ' + .' -ab ' . $self->{'a_bitrate'} + ." -f mp4 -title $safe_title"; + } + # Execute the (final pass) encode + $self->SUPER::export($episode, '.mp4'); + } + +1; #return true + +# vim:ts=4:sw=4:ai:et:si:sts=4 + diff --git a/abs/extra/myth2ipod/m2iweb.php b/abs/extra/myth2ipod/m2iweb.php new file mode 100755 index 0000000..a8a9e4d --- /dev/null +++ b/abs/extra/myth2ipod/m2iweb.php @@ -0,0 +1,157 @@ + + + + + MythWeb - Archive Recordings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +'; + echo $delete; + unlink($delete) or print(" failed to be "); + echo 'deleted
    '; + $deletetoo = substr($delete, 0, -3)."mp4"; + echo $deletetoo; + unlink($deletetoo) or print(" failed to be "); + echo 'deleted

    Home'; +} +} +else { + $i=1; + foreach (glob("*.ipod.xml") as $file) { + $lines = file($file); + echo '
    ".''.""; + $i++; + } +} +function filesizeparse($size){ + $i=0; + $iec = array(" B", " KB", " MB", " GB", " TB"); + while (($size/1024)>1) { + $size=$size/1024; + $i++; + } + return substr($size,0,strpos($size,'.')+3).$iec[$i]; +} +?> +
    View information and delete myth2ipod recordings.
     '; + echo ''.$i.''; + echo "".strip_tags($lines[1])."".strip_tags($lines[7])."".strip_tags($lines[6])."".filesizeparse(filesize(substr($file, 0, -3)."mp4"))."".'Delete'." 
    + + + diff --git a/abs/extra/myth2ipod/myth2ipod b/abs/extra/myth2ipod/myth2ipod new file mode 100755 index 0000000..268a522 --- /dev/null +++ b/abs/extra/myth2ipod/myth2ipod @@ -0,0 +1,310 @@ +#!/usr/bin/perl -w +# VERSION: 1.0b2 - myth2ipod +# Get the latest version, and change log at myth2ipod.com +# Author: Chris aka Wififun - email: wififun@myth2ipod.com +# Contributions and testing by Paul Egli +# modified to use nuvexport by starv at juniks dot org + +# Includes +use DBI; +use Getopt::Long; +use File::Path; + +# User variables +my $portable = "ipod"; +my $feedfile = "/myth/ipodfeed/feed.php"; +my $feedpath = "/myth/ipodfeed/"; +my $wwwloc = "/data/srv/httpd/htdocs"; +my $feedurl = "http://REPLACEME/ipodfeed/"; +my $nuvoptions ="--mode=iPod --nice=19 --cutlist --nodenoise --nodeinterlace --nomultipass"; + +# Some variables +our ($dest, $format, $usage); +our ($db_host, $db_user, $db_name, $db_pass, $video_dir); +our ($hostname, $db_handle, $sql, $statement, $row_ref); +our ($chanid, $start, $nuvfile, @nuvarray); +my $rebuild = '0'; +my $encode = '0'; +my $debug = '0'; +my $setup = '0'; +my $cut = '0'; +my( $rightnow ) = `date`; + +GetOptions ("rebuild" => \$rebuild, + "encode" => \$encode, + "debug" => \$debug, + "setup" => \$setup, + "cut" => \$cut); + +if ($setup == 1){ + system("clear"); + print "Setup will do everything needed to run this script.\n"; + print "This has only been tested on KnoppMyth R5A22.\n"; + print "make sure you have edited the variables for your conguration.\n"; + my $cksetup = &promptUser("\nAre you sure you want to procceed?","n"); + if ($cksetup =~ "y") { + DoSetup(); + exit; + } + print "Setup exited. Nothing done.\n"; + exit; +} +elsif ($rebuild == 1){ + GenerateRSSFeed(); + print "Rebuilding of RSS feed is complete.\n"; + exit; +} +else { + Encode4Portable(); + print "$title is ready for your $portable\n"; + + # Check to see if the feed file exists; if not, create it. + if (! -e $feedfile) { + print "No feed file found. I will make one for you.\n"; + GenerateRSSFeed(); + print "All done.\n"; + } +} + +sub Encode4Portable{ + if ($#ARGV != 1) { + print "Encoding requires options.\nusage: myth2ipod DIRECTORY FILE\n"; + exit; + } + + # Get the show information + $directory = $ARGV[0]; + $file = $ARGV[1]; + @file = split(/_/, $file); + $chanid = $file[0]; + $start = substr $file[1],0,14; + if($debug == 1){ print "$chanid\n$start\n"}; + if (! -e $directory."/".$file){ + print "Oops, the file ".$directory.$file." does not exist.\n"; + exit; + } + + # Connect to the database + PrepSQLRead(); + $db_handle = DBI->connect("dbi:mysql:database=$db_name:host=$db_host", $db_user, $db_pass) + or die "Cannot connect to database: $!\n\n"; + $sql = "SELECT title, subtitle, description, category, starttime FROM recorded WHERE chanid = $chanid AND DATE_FORMAT(starttime,'%Y%m%d%H%i%s') = $start"; + + $statement = $db_handle->prepare($sql) + or die "Couldn't prepare query '$sql': $DBI::errstr\n"; + + $statement->execute() + or die "Couldn't execute query '$sql': $DBI::errstr\n"; + $row_ref = $statement->fetchrow_hashref(); + if($debug == 1){ print "$row_ref->{starttime}\n"}; + $title = $row_ref->{title}; + $subtitle = $row_ref->{subtitle}; + $recorddate = $row_ref->{starttime}; + $description = $row_ref->{description}; + $category = $row_ref->{category}; + $filename = $title."-".$subtitle."-".substr $start, 0, 8; + $filename =~ s/ /_/g; + $filename =~ s/&/+/g; + $filename =~ s/\047//g; + $filename =~ s/[^+0-9a-zA-Z_-]+/_/g; + $filename =~ s/_$//g; + + printf("Starting nuvexport...\n"); + EncodeIt(); + printf("Nuvexport completed, starting xml generation...\n"); + CreateItemXML(); + printf("XML file created for \"$filename\" : Yipeee\n"); + printf("Cleaning up temporary files\n"); + $cmd = "rm -f $feedpath$chanid\_$start.temp.mp4"; + print $cmd."\n"; + if(system($cmd)) { print "Removing nuvexport temp file failed\n"; } + + # remove the cutlist incase we added it. + if ($cut == 1){ + printf("Generating cutlist\n"); + $cmd = "/usr/bin/mythcommflag --chanid $chanid --starttime $start --clearcutlist"; + print $cmd."\n"; + if(system($cmd)) { print "It looks like I was not able to generate a cutlist.\n"; } + } + return 0; +} + +# +# Encode for Portable +# +sub EncodeIt { + # Create cutlist from commercial flagging if -cut was passed to the script + if ($cut == 1){ + printf("Generating cutlist\n"); + $cmd = "/usr/bin/mythcommflag --chanid $chanid --starttime $start --gencutlist"; + print $cmd."\n"; + if(system($cmd)) { print "It looks like I was not able to generate a cutlist.\n"; } + } + + # Use nuvexport to do the work + $cmd = "/usr/bin/nuvexport --chanid=$chanid --start=$start $nuvoptions --filename=$chanid\_$start.temp --path=$feedpath"; + print $cmd."\n"; + if(system($cmd)) { print "Nuvexport encoding seems to have failed\n"; } + + # Now clean up the output so iPods with firmware 1.1 and above can use it + $cmd = "/usr/bin/MP4Box -add $feedpath$chanid\_$start.temp.mp4 $feedpath$chanid\_$start.$portable.mp4"; + print $cmd."\n"; + if(system($cmd)) { print "MP4Box cleanup seems to have failed\n"; } + return 0; +} + +# +# Create XML with tag for this video file +# +sub CreateItemXML { + open(ITEM, ">$feedpath$chanid\_$start.$portable.xml"); + print ITEM "\n"; + print ITEM "".&encodeForXML($title." - ".$subtitle)."\n"; + print ITEM "MythTV\n"; + print ITEM "MythTV\n"; + print ITEM "\n"; + print ITEM "".&encodeForXML($file)."\n"; + print ITEM "".&encodeForXML($description)."\n"; + print ITEM "".$recorddate."\n"; + print ITEM "\n"; + print ITEM "\n"; + print ITEM "".&encodeForXML($title." - ".$subtitle." - ".$category)."\n"; + print ITEM "".&encodeForXML($category)."\n"; + print ITEM "\n"; + print "\"$filename\" has been added to the feed.\n"; + close(ITEM); + return 0; +} + +# +# Generate the RSS feed by combining the ITEM XML Files +# +sub GenerateRSSFeed { + + open(RSS, ">$feedfile"); + print RSS "\"; ?>\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "MythTV - <? if (\$_GET['title'] == \"\") { \$title = \"*\"; echo \"Recorded Programs\"; }\n"; + print RSS "else { \$title = \$_GET['title']; echo str_replace(\"_\",\" \",\$_GET['title']); } ?> \n"; + print RSS "MythTV - myth2ipod\n"; + print RSS "".&encodeForXML($feedurl)."\n"; + print RSS "Transcoded recording for your iPod Video.\n"; + print RSS "Myth TV Recorded Programs for the iPod v.1\n"; + print RSS "Myth TV Recorded Programs for the iPod v.1\n"; + print RSS "\n"; + print RSS "MythTV\n"; + print RSS "mythtv\@localhost\n"; + print RSS "\n"; + print RSS "No\n"; + print RSS "en-us\n"; + print RSS "Copyright 2005.\n"; + print RSS "mythtv\@localhost\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "TV Shows\n"; + print RSS ""; + print RSS ""; + print RSS "http://myth2ipod.com/mythipod_200.jpg\n"; + print RSS "MythTV 2 iPod\n"; + print RSS "".&encodeForXML($feedurl)."\n"; + print RSS "200\n"; + print RSS "200\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "\n"; + print RSS "\n"; + close(RSS); + if($debug == 1){ print "I created a feed file, was I supposed to?\n"}; + + return 0; +} + +# substitute for XML entities +sub encodeForXML { + local $result; + $result = $_[0]; + $result =~ s/&/&/g; + $result =~ s//>/g; + $result; +} + + +# +# This code taken from one of the mythlink.sh scripts to get MySQL information +# +sub PrepSQLRead{ +# Get the hostname of this machine + $hostname = `hostname`; + chomp($hostname); + +# Read the mysql.txt file in use by MythTV. +# could be in a couple places, so try the usual suspects + my $found = 0; + my @mysql = ('/usr/share/mythtv/mysql.txt', + '/usr/share/mythtv/mysql.txt', + '/etc/mythtv/mysql.txt', + '/usr/local/etc/mythtv/mysql.txt', + "$ENV{HOME}/.mythtv/mysql.txt", + 'mysql.txt' + ); + foreach my $file (@mysql) { + next unless (-e $file); + $found = 1; + open(CONF, $file) or die "Unable to open $file: $!\n\n"; + while (my $line = ) { + # Cleanup + next if ($line =~ /^\s*#/); + $line =~ s/^str //; + chomp($line); + # Split off the var=val pairs + my ($var, $val) = split(/\=/, $line, 2); + next unless ($var && $var =~ /\w/); + if ($var eq 'DBHostName') { + $db_host = $val; + } + elsif ($var eq 'DBUserName') { + $db_user = $val; + } + elsif ($var eq 'DBName') { + $db_name = $val; + } + elsif ($var eq 'DBPassword') { + $db_pass = $val; + } + # Hostname override + elsif ($var eq 'LocalHostName') { + $hostname = $val; + } + } + close CONF; + } + die "Unable to locate mysql.txt: $!\n\n" unless ($found && $db_host); + return 0; +} + +sub promptUser { + local($promptString,$defaultValue) = @_; + if ($defaultValue) { + print $promptString, "[", $defaultValue, "]: "; + } else { + print $promptString, ": "; + } + + $| = 1; # force a flush after our print + $_ = ; # get the input from STDIN (presumably the keyboard) + chomp; + if ("$defaultValue") { + return $_ ? $_ : $defaultValue; # return $_ if it has a value + } else { + return $_; + } +} + +sub DoSetup { + print "\nNot ready yet. How do you send the cd command from perl?\n"; + return 0; +} diff --git a/abs/extra/myth2ipod/myth2ipod-userjob.sh b/abs/extra/myth2ipod/myth2ipod-userjob.sh new file mode 100755 index 0000000..9ed65b2 --- /dev/null +++ b/abs/extra/myth2ipod/myth2ipod-userjob.sh @@ -0,0 +1,6 @@ +#!/bin/bash +. /etc/profile +#su mythtv -c "TERM=vt100 /usr/bin/myth2ipod "$1" "$2" >/tmp/logfile" +su mythtv -c "TERM=vt100 /usr/bin/myth2ipod "$1" "$2" " +#or to also use commercial flagging cutlist +#su mythtv -c "TERM=vt100 /usr/bin/myth2ipod -cut "$1" "$2" >/tmp/logfile" diff --git a/abs/extra/myth2ipod/myth2ipod.install b/abs/extra/myth2ipod/myth2ipod.install new file mode 100755 index 0000000..367d90f --- /dev/null +++ b/abs/extra/myth2ipod/myth2ipod.install @@ -0,0 +1,38 @@ + +pre_install() { + mkdir -p /myth/ipodfeed + chown mythtv:http /myth/ipodfeed +} + +pre_upgrade() { + pre_install +} + +pre_remove() { + pre_install +} + +post_install() { + . /etc/systemconfig + ln -s /myth/ipodfeed /data/srv/httpd/htdocs/ipodfeed + ln -s /myth/ipodfeed/m2iweb.php /myth/ipodfeed/index.php + sed -i -e "s/REPLACEME/$hostname/g" /usr/bin/myth2ipod + chown -R mythtv:http /myth/ipodfeed + /usr/bin/myth2ipod -rebuild +} + +post_upgrade() { + /usr/bin/myth2ipod -rebuild +} + +post_remove() { + rm -fr /data/srv/httpd/htdocs/ipodfeed + rm -rf /myth/ipodfeed/m2iweb.php + rm -rf /myth/ipodfeed/index.php + # don't delete content that the user may still want, so leave /myth/ipodfeed +} + +op=$1 +shift + +$op $* diff --git a/abs/extra/mythappletrailers/PKGBUILD b/abs/extra/mythappletrailers/PKGBUILD new file mode 100644 index 0000000..9c12971 --- /dev/null +++ b/abs/extra/mythappletrailers/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=mythappletrailers +pkgver=0.04.3 +pkgrel=35 +pkgdesc="Unofficial Add-on for MythTV to get Apple.com Movie Trailers." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.mythtv.org/wiki/index.php/Myth_Apple_Trailers" +depends=('php' 'mythtv' 'mplayer-wrapper') +install=mythappletrailers.install +source=('myth_trailers_grabber' 'appletrailer.xml' +'trailers' 'loading.sh' 'fix_aple_url.sh') + +build() { + mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/etc/cron.daily + mkdir -p $startdir/pkg/home/mythtv/ + mkdir -p $startdir/pkg/usr/share/mythtv/ + cp appletrailer.xml $startdir/pkg/home/mythtv/appletrailer.xml + chown 1000:1000 $startdir/pkg/home/mythtv/appletrailer.xml + chmod 755 trailers + chmod 755 myth_trailers_grabber + chmod 755 loading.sh + cp myth_trailers_grabber $startdir/pkg/usr/bin/ + cp loading.sh $startdir/pkg/usr/bin/ + cp trailers $startdir/pkg/etc/cron.daily/ + install -m755 $srcdir/fix_aple_url.sh $pkgdir/usr/bin +} diff --git a/abs/extra/mythappletrailers/appletrailer.xml b/abs/extra/mythappletrailers/appletrailer.xml new file mode 100644 index 0000000..dc0c938 --- /dev/null +++ b/abs/extra/mythappletrailers/appletrailer.xml @@ -0,0 +1,722 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/extra/mythappletrailers/fix_aple_url.sh b/abs/extra/mythappletrailers/fix_aple_url.sh new file mode 100644 index 0000000..a08be65 --- /dev/null +++ b/abs/extra/mythappletrailers/fix_aple_url.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cat /home/mythtv/appletrailer.xml | sed -e 's|http:/\/\movies.apple|http:\/\/apple|g' > /tmp/appletrailer.xml +mv /tmp/appletrailer.xml /home/mythtv diff --git a/abs/extra/mythappletrailers/loading.sh b/abs/extra/mythappletrailers/loading.sh new file mode 100755 index 0000000..d1ef680 --- /dev/null +++ b/abs/extra/mythappletrailers/loading.sh @@ -0,0 +1,2 @@ +#!/bin/bash +echo -e "Loading . . . " | osd_cat -p middle -s 5 -f"-adobe-courier-bold-*-*-*-34-*-*-*-*-*" -d 10 -A centre diff --git a/abs/extra/mythappletrailers/myth_trailers_grabber b/abs/extra/mythappletrailers/myth_trailers_grabber new file mode 100755 index 0000000..ae32e75 --- /dev/null +++ b/abs/extra/mythappletrailers/myth_trailers_grabber @@ -0,0 +1,214 @@ + + * + * Description: Apple Trailer Grabber for mythtv + * + * Version 0.4.3 + * + * Apple Trailer Grabber 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. + * + * Apple Trailer Grabber 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 + * + * Usage: read the INSTALL file + * Setup as a cron script to run as frequently as you want + * + * + */ + +/************************************************************************/ +// CONFIGURATION + +// command to use when streaming content from the internet - cache 50% before displaying and use 32MB of memory +$STREAMING_EXEC_CMD = 'loading.sh && mplayer-wrapper.pl -fs -zoom -really-quiet -user-agent "QuickTime/7.6.2" -cache 16000'; +$APPLE_FEED = 'http://www.apple.com/trailers/home/xml/current.xml'; +/************************************************************************/ +// Shouldn't Need To modify anything beyond here + + +define("PLAYERCMD", $STREAMING_EXEC_CMD); +define("XMLFEED", $APPLE_FEED); + +/************************************************************************/ + +init_main(); + +// Function: returns null | init_main () +// Description: Outputs Apple Trailer XML feed to watchable movie urls in MythTV menu XML format +function init_main() +{ + + print "\n"; + + if(valid_url(XMLFEED)){ + + // Gather Array of Current Movie Trailers + //XML Data + $xml_data = url_to_string(XMLFEED); + //Creating Instance of the Class + $xmlObj = new XmlToArray($xml_data); + $arrayData = $xmlObj->createArray(); + + foreach($arrayData['records']['movieinfo'] as $Row){ + + $MovieTitle = $Row['info'][0]['title']; + $MovieLink = $Row['preview'][0]['large']; + $VideoPlayCMD = PLAYERCMD . ' ' . $MovieLink; + + if(!valid_url($MovieLink)){ + $MovieTitle = $MovieTitle . '*VIDEO ERROR*'; + $VideoPlayCMD = ''; + } + + print "\t\n\n"; + + } + }else{ + print "\t\n\n"; + } + + print "\n"; + + + +} + + +// Function: returns boolean | valid_url ( var | url to check) +// Description: Checks to see if a url is a valid page +function valid_url($str) +{ + if(@fopen($str, "r")) { + return true; + } else { + return false; + } +} + +// Function: returns string | all elements of XML ( var | url to feed) +// Description: Converts each element in an XML feed to single line string +// Notes: must have 'allow_url_fopen = On' in php.ini +function url_to_string($url){ + $lines = file($url); + foreach ($lines as $line) { + $lineR = trim($line); + } + $lineR = eregi_replace("<" . "large" . "[^>]*>", "", $lineR); //hack for apple goofy xml + return $lineR; +} + +// Class: returns (~) x array | elements of XML ( var | XML in string) +// Description: Converts each element in an XML feed to an Array +class XmlToArray +{ + + var $xml=''; + + /** + * Default Constructor + * @param $xml = xml data + * @return none + */ + + function XmlToArray($xml) + { + $this->xml = $xml; + } + + /** + * _struct_to_array($values, &$i) + * + * This is adds the contents of the return xml into the array for easier processing. + * Recursive, Static + * + * @access private + * @param array $values this is the xml data in an array + * @param int $i this is the current location in the array + * @return Array + */ + + function _struct_to_array($values, &$i) + { + $child = array(); + if (isset($values[$i]['value'])) array_push($child, $values[$i]['value']); + + while ($i++ < count($values)) { + switch ($values[$i]['type']) { + case 'cdata': + array_push($child, $values[$i]['value']); + break; + + case 'complete': + $name = $values[$i]['tag']; + if(!empty($name)){ + $child[$name]= ($values[$i]['value'])?($values[$i]['value']):''; + if(isset($values[$i]['attributes'])) { + $child[$name] = $values[$i]['attributes']; + } + } + break; + + case 'open': + $name = $values[$i]['tag']; + $size = isset($child[$name]) ? sizeof($child[$name]) : 0; + $child[$name][$size] = $this->_struct_to_array($values, $i); + break; + + case 'close': + return $child; + break; + } + } + return $child; + }//_struct_to_array + + /** + * createArray($data) + * + * This is adds the contents of the return xml into the array for easier processing. + * + * @access public + * @param string $data this is the string of the xml data + * @return Array + */ + function createArray() + { + $xml = $this->xml; + $values = array(); + $index = array(); + $array = array(); + $parser = xml_parser_create(); + xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); + xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); + xml_parse_into_struct($parser, $xml, $values, $index); + xml_parser_free($parser); + $i = 0; + $name = $values[$i]['tag']; + $array[$name] = isset($values[$i]['attributes']) ? $values[$i]['attributes'] : ''; + $array[$name] = $this->_struct_to_array($values, $i); + return $array; + } + + +} + +?> diff --git a/abs/extra/mythappletrailers/mythappletrailers.install b/abs/extra/mythappletrailers/mythappletrailers.install new file mode 100644 index 0000000..0f6d8fa --- /dev/null +++ b/abs/extra/mythappletrailers/mythappletrailers.install @@ -0,0 +1,37 @@ +# arg 1: the new package version +post_install() { + ln -s /home/mythtv/appletrailer.xml /usr/share/mythtv/appletrailer.xml + mv /usr/share/mythtv/is.xml /tmp + grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo " " >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + mv /tmp/is.xml.tmp /usr/share/mythtv/is.xml +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + if [ -e /usr/share/mythtv/appletrailer.xml ] + then + exit + else + ln -s /home/mythtv/appletrailer.xml /usr/share/mythtv/appletrailer.xml + fi +} + +# arg 1: the old package version +post_remove() { + rm -fr /usr/share/mythtv/appletrailer.xml + mv /usr/share/mythtv/is.xml /tmp/is.xml.tmp + sed -e '/\#MythAp/,/\#MythAp/d' < /tmp/is.xml.tmp > /usr/share/mythtv/is.xml +} + +op=$1 +shift +$op $* diff --git a/abs/extra/mythappletrailers/trailers b/abs/extra/mythappletrailers/trailers new file mode 100755 index 0000000..241a60a --- /dev/null +++ b/abs/extra/mythappletrailers/trailers @@ -0,0 +1,2 @@ +#!/bin/sh +su mythtv -c '/usr/bin/php -q /usr/bin/myth_trailers_grabber > /home/mythtv/appletrailer.xml && /usr/bin/fix_aple_url.sh' 2>/dev/null diff --git a/abs/extra/mythexport/PKGBUILD b/abs/extra/mythexport/PKGBUILD new file mode 100644 index 0000000..3cd04f3 --- /dev/null +++ b/abs/extra/mythexport/PKGBUILD @@ -0,0 +1,17 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=mythexport +pkgver=2.0.71 +pkgrel=5 +pkgdesc="Script to export recordings for portable devices." +arch=('i686' 'x86_64') +license=('GPL3') +depends=('atomicparsley' 'perl-config-simple' 'perl-net-upnp' 'perl-proc-daemon' 'perl-proc-pid-file') +url="http://linhes.org/" +source=(ftp://ftp.knoppmyth.net/R6/sources/mythexport.tar.bz2) +install=mythexport.install + +build() { + cp -a mythexport/* $startdir/pkg +} diff --git a/abs/extra/mythexport/mythexport.install b/abs/extra/mythexport/mythexport.install new file mode 100644 index 0000000..edd60f5 --- /dev/null +++ b/abs/extra/mythexport/mythexport.install @@ -0,0 +1,10 @@ +# arg 1: the new package version +post_install() { + mysql -u root mythconverg < /usr/share/mythtv/mythexport.sql + ln -s /usr/share/mythtv/mythexport /data/srv/httpd/htdocs/ + ln -s /myth/archive /usr/share/mythtv/mythexport/video +} + +op=$1 +shift +$op $* diff --git a/abs/extra/mythfeed/PKGBUILD b/abs/extra/mythfeed/PKGBUILD new file mode 100644 index 0000000..9f634df --- /dev/null +++ b/abs/extra/mythfeed/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=mythfeed +pkgver=0.06c +pkgrel=1 +pkgdesc="Unofficial MythTV plugin to allow selection of internet flash media sources" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.mythfeed.sourceforge.net" +depends=('mythtv' 'firefox' 'flashplugin' 'python') +makedepends=('qt') +install=mythfeed.install +source=('http://softlayer.dl.sourceforge.net/project/mythfeed/mythfeed/0.06c/mythfeed.06c.tar.gz') + +build() { + mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/etc/cron.daily + mkdir -p $startdir/pkg/home/mythtv/ + mkdir -p $startdir/pkg/usr/share/mythtv/ + cp trailers $startdir/pkg/etc/cron.daily/ +} diff --git a/abs/extra/mythfeed/mythfeed.install b/abs/extra/mythfeed/mythfeed.install new file mode 100644 index 0000000..0f6d8fa --- /dev/null +++ b/abs/extra/mythfeed/mythfeed.install @@ -0,0 +1,37 @@ +# arg 1: the new package version +post_install() { + ln -s /home/mythtv/appletrailer.xml /usr/share/mythtv/appletrailer.xml + mv /usr/share/mythtv/is.xml /tmp + grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo " " >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + mv /tmp/is.xml.tmp /usr/share/mythtv/is.xml +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + if [ -e /usr/share/mythtv/appletrailer.xml ] + then + exit + else + ln -s /home/mythtv/appletrailer.xml /usr/share/mythtv/appletrailer.xml + fi +} + +# arg 1: the old package version +post_remove() { + rm -fr /usr/share/mythtv/appletrailer.xml + mv /usr/share/mythtv/is.xml /tmp/is.xml.tmp + sed -e '/\#MythAp/,/\#MythAp/d' < /tmp/is.xml.tmp > /usr/share/mythtv/is.xml +} + +op=$1 +shift +$op $* diff --git a/abs/extra/mythnuv2mkv/PKGBUILD b/abs/extra/mythnuv2mkv/PKGBUILD new file mode 100644 index 0000000..9a61d9a --- /dev/null +++ b/abs/extra/mythnuv2mkv/PKGBUILD @@ -0,0 +1,16 @@ +pkgname=mythnuv2mkv +pkgver=1.53 +pkgrel=1 +conflicts=() +pkgdesc="Converts MythTV nuv or mpg files to mkv, mp4 or avi files. It can be run as a MythTV User Job or at command line to convert MythTV recordings or stand alone files." +depends=(perl mplayer wget bc imagemagick lame x264 faac faad2 mkvtoolnix vorbis-tools gpac ) +arch=('i686') +license=('GPL') +source=(http://web.aanet.com.au/~auric/files2/V${pkgver}/mythnuv2mkv.sh) + +install='' +build() { + mkdir -p $startdir/pkg/usr/bin + install -m 0755 mythnuv2mkv.sh $startdir/pkg/usr/bin/mythnuv2mkv.sh +} + diff --git a/abs/extra/mythvodka/PKGBUILD b/abs/extra/mythvodka/PKGBUILD new file mode 100644 index 0000000..0832093 --- /dev/null +++ b/abs/extra/mythvodka/PKGBUILD @@ -0,0 +1,36 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=mythvodka +pkgver=0.7 +pkgrel=11 +pkgdesc="MythVodka (Video On Demand Killer App) is a plugin for MythTV allowing streaming of BBC iPlayer, Hulu, HTTP and NZB content." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://code.google.com/p/mythvodka/" +depends=('rtmpdump' 'perl-xml-dom' 'beautiful-soup') +install=mythvodka.install +source=('http://mythvodka.googlecode.com/files/mythvodka.07.tar.gz' 'mythvodka.diff' 'hulu_grabber.sh' 'http://ftp.knoppmyth/R6/sources/huludata.tar.bz2') + +build() { + patch -p0 < mythvodka.diff + cd $startdir/src/mythvodka/mythvodka + rm -fr Makefile + qmake mythvodka.pro + make + mkdir -p $startdir/pkg/usr/lib/mythtv/plugins/ + cp libmythvodka.so $startdir/pkg/usr/lib/mythtv/plugins/ + strip --strip-unneeded $startdir/pkg/usr/lib/mythtv/plugins/libmythvodka.so + mkdir -p $startdir/pkg/usr/share/mythtv/themes/default/ + cp streams-ui.xml $startdir/pkg/usr/share/mythtv/themes/default/ + mkdir -p $startdir/pkg/usr/share/mythtv/themes/default-wide/ + cp theme-wide/streams-ui.xml $startdir/pkg/usr/share/mythtv/themes/default-wide/ + mkdir -p $startdir/pkg/usr/local/bin + chmod a+x ../scripts/* + cp -p ../scripts/* $startdir/pkg/usr/local/bin + mkdir -p $startdir/pkg/etc/cron.daily/ + chmod 755 ../../hulu_grabber.sh + cp ../../hulu_grabber.sh $startdir/pkg/etc/cron.daily/ + mkdir -p $startdir/pkg/var/tmp + cp $startdir/src/huludata.xml $startdir/pkg/var/tmp +} diff --git a/abs/extra/mythvodka/hulu_grabber.sh b/abs/extra/mythvodka/hulu_grabber.sh new file mode 100755 index 0000000..4840dc0 --- /dev/null +++ b/abs/extra/mythvodka/hulu_grabber.sh @@ -0,0 +1,16 @@ +#! /bin/bash +log=/var/log/mythtv/hulu_grabber.log +out=/var/tmp/huludata.xml +rm -f $log +echo "Start on `date`" >>$log 2>&1 +/usr/local/bin/gethulu.pl $out.new >>$log 2>&1 +stat=$? +if [ $stat -ne 0 ]; then + echo "Bad status $stat from gethulu.pl" >>$log 2>&1 + exit 1 +fi +rm -f $out.old +mv $out $out.old +mv $out.new $out +echo "Done on `date`" >>$log 2>&1 +ls -lh $out >>$log 2>&1 diff --git a/abs/extra/mythvodka/mythvodka.diff b/abs/extra/mythvodka/mythvodka.diff new file mode 100644 index 0000000..5735a42 --- /dev/null +++ b/abs/extra/mythvodka/mythvodka.diff @@ -0,0 +1,3933 @@ +diff -ruaN mythvodka.orig/mythvodka/streamsui.cpp mythvodka/mythvodka/streamsui.cpp +--- mythvodka.orig/mythvodka/streamsui.cpp 2009-01-06 00:18:35.000000000 +0000 ++++ mythvodka/mythvodka/streamsui.cpp 2009-02-12 07:28:31.000000000 +0000 +@@ -646,7 +646,7 @@ + + MythProgressDialog *buffer_progress; + buffer_progress = new MythProgressDialog( +- QObject::tr("If she kicks you in the balls, you have the ability and the right..."), bufferSize, true, this, SLOT(cancelPressed())); ++ QObject::tr("Buffering... Just a moment please."), bufferSize, true, this, SLOT(cancelPressed())); + + QFile file(filename); + +@@ -729,7 +729,7 @@ + + MythProgressDialog *buffer_progress; + buffer_progress = new MythProgressDialog( +- QObject::tr("Nascar Sucks / Hillary For President / Man Love Rules Ok"), bufferSize, true, this, SLOT(cancelPressed())); ++ QObject::tr("Your video is being loaded..."), bufferSize, true, this, SLOT(cancelPressed())); + + QFile file(filename); + +@@ -822,7 +822,7 @@ + + MythProgressDialog *buffer_progress; + buffer_progress = new MythProgressDialog( +- QObject::tr("RING RING... I FUCKED YOUR GRANDDAUGHTER"), bufferSizemov, true, this, SLOT(cancelPressed())); ++ QObject::tr("We seem to have hit some sort of problem..."), bufferSizemov, true, this, SLOT(cancelPressed())); + + QFile filemov(filenamemov); + +diff -ruaN mythvodka.orig/scripts/get_iplayer mythvodka/scripts/get_iplayer +--- mythvodka.orig/scripts/get_iplayer 2009-01-06 19:11:24.000000000 +0000 ++++ mythvodka/scripts/get_iplayer 2009-02-12 07:27:44.000000000 +0000 +@@ -3,16 +3,17 @@ + # get_iplayer + # + # Lists and downloads BBC iPlayer audio and video streams +-# ++# + Downloads ITVplayer Catch-Up video streams ++# + # Author: Phil Lewis + # Email: iplayer (at sign) linuxcentre.net + # Web: http://linuxcentre.net/iplayer + # License: GPLv3 (see LICENSE.txt) + # + # Other credits: +-# RTMP additions: Andrej Stepanchuk ++# RTMP additions: Andrej Stepanchuk + # +-my $version = 1.04; ++my $version = 1.17; + # + # Help: + # ./get_iplayer --help +@@ -29,13 +30,16 @@ + # * Index/Download live radio streams w/schedule feeds to assist timing + # * Podcasts for 'local' stations are missing (only a handful). They use a number of different station ids which will involve reading html to determine rss feed. + # * Remove all rtsp/mplayer/lame/tee dross when realaudio streams become obselete (not quite yet) +-# * Cope with radio via rtmp + # * Stdout mode with rtmp +-# ++# * Do subtitle downloading after programme download so that rtmp auth doesn't timeout ++ + # Known Issues: + # * In ActivePerl/windows downloaded iPhone video files do not get renamed (remain with .partial.mov) + # * vlc does not quit after downloading an rtsp N95 video stream (ctrl-c is required) - need a --play-and-quit option if such a thing exists +-# * flv conversions from rtmp downloads aren't quite right yet. A/V sync issues? ++# * rtmpdump (v1.2) of flashaudio fails at end of stream => non-zero exit code ++# * if ffmpeg trys to convert flv to mp3 it succeeds but => non-zero exit code ++# * Some rtmpdump downloads always give a non-zero exit code regardless of success (using a min-filesize workaround for now) ++# * resuming a flashaudio download fails + + use Env qw[@PATH]; + use Fcntl; +@@ -62,10 +66,17 @@ + my %opt_cmdline = (); # a hash of which options came from the cmdline rather than the options files + my %opt_file = (); # a hash of which options came from the options files rather than the cmdline + +-# Print to STDERR if not quiet unless verbose or debug ++# Print to STDERR/STDOUT if not quiet unless verbose or debug + sub logger(@) { + # Make sure quiet can be overridden by verbose and debug options +- print STDERR $_[0] if (! $opt{quiet}) || $opt{verbose} || $opt{debug}; ++ if ( $opt{verbose} || $opt{debug} || ! $opt{quiet} ) { ++ # Only send messages to STDERR if pvr or stdout options are being used. ++ if ( $opt{stdout} || $opt{pvr} || $opt{stderr} ) { ++ print STDERR $_[0]; ++ } else { ++ print STDOUT $_[0]; ++ } ++ } + } + + sub usage { +@@ -74,7 +85,7 @@ + Search Programmes: get_iplayer [] [ ...] + Download files: get_iplayer --get [] ... + get_iplayer --pid [] +-Stream Downloads: get_iplayer --stdout [] | mplayer -cache 2048 - ++Stream Downloads: get_iplayer --stdout [] | mplayer -cache 3072 - + Update get_iplayer: get_iplayer --update + + Search Options: +@@ -83,9 +94,10 @@ + --channel Narrow search to matched channel(s) + --category Narrow search to matched categories + --versions Narrow search to matched programme version(s) ++ --exclude Narrow search to exclude matched programme names + --exclude-channel Narrow search to exclude matched channel(s) + --exclude-category Narrow search to exclude matched catogories +- --type Only search in these types of programmes (tv is default) ++ --type Only search in these types of programmes: radio, tv, podcast, all, itv (tv is default) + --since Limit search to programmes added to the cache in the last N hours + + Display Options: +@@ -95,26 +107,25 @@ + -i, --info Show full programme metadata (only if number of matches < 50) + --list Show a list of available categories/channels for the selected type and exit + --hide Hide previously downloaded programmes ++ --streaminfo Returns all of the media stream urls of the programme(s) + + Download Options: + -g, --get Download matching programmes + -x, --stdout Additionally stream to STDOUT (so you can pipe output to a player) + -p, --proxy Web proxy URL spec + --partial-proxy Works around for some broken web proxies (try this extra option if your proxy fails) +- --pid Download an arbitrary pid that does not appear in the index ++ --pid Download an arbitrary pid that does not appear in the index (itv: for itv programmes) + --force-download Ignore download history (unsets --hide option also) +- --realaudio Use the RealAudio radio stream and not the MP3 stream +- --mp3audio Use the MP3 radio stream for radio and dont fallback to the RealAudio stream ++ --amode ,,... Audio Download mode(s): iphone,flashaudio,realaudio (default: iphone,flashaudio,realaudio) ++ --vmode ,,... Video Download mode(s): iphone,rtmp,flashhigh,flashnormal,flashwii,n95_wifi (default: iphone,flashhigh,flashnormal) + --wav In radio realaudio mode output as wav and don't transcode to mp3 +- --raw In radio/realaudio or iPhone/video mode don't transcode or change the downloaded stream in any way +- --n95 In TV mode download/stream low quality Nokia N95 H.264 stream (alpha) +- --rtmp In TV mode download/stream high quality flash stream (alpha) ++ --raw Don't transcode or change the downloaded stream in any way (i.e. radio/realaudio, rtmp/flv, iphone/mov) + --bandwidth In radio realaudio mode specify the link bandwidth in bps for rtsp streaming (default 512000) + --subtitles In TV mode, download subtitles into srt/SubRip format if available + --suboffset Offset the subtitle timestamps by the specified number of milliseconds + --version-list Override the version of programme to download (e.g. '--version-list signed,default') + -t, --test Test only - no download (will show programme type) +- ++ + PVR Options: + --pvr Runs the PVR download using all saved PVR searches (intended to be run every hour from cron etc) + --pvradd Add the current search terms to the named PVR search +@@ -139,18 +150,18 @@ + -f, --flush, --refresh Refresh cache + -e, --expiry Cache expiry in seconds (default 4hrs) + --symlink Create symlink to once we have the header of the download +- --fxd Create Freevo FXD XML in specified file +- --mythtv Create Mythtv streams XML in specified file ++ --fxd Create Freevo FXD XML of matching programmes in specified file ++ --mythtv Create Mythtv streams XML of matching programmes in specified file + --xml-channels Create freevo/Mythtv menu of channels -> programme names -> episodes + --xml-names Create freevo/Mythtv menu of programme names -> episodes + --xml-alpha Create freevo/Mythtv menu sorted alphabetically by programme name +- --html Create basic HTML index of programmes in specified file ++ --html Create basic HTML index of matching programmes in specified file + --mplayer Location of mplayer binary ++ --ffmpeg Location of ffmpeg binary + --lame Location of lame binary + --id3v2 Location of id3v2 binary + --rtmpdump Location of rtmpdump binary +- --vlc Location of vlc binary +- --streaminfo Returns all of the media stream urls of the programme(s) ++ --vlc Location of vlc or cvlc binary + -v, --verbose Verbose + -u, --update Update get_iplayer if a newer one exists + -h, --help Help +@@ -192,14 +203,17 @@ + Getopt::Long::Configure ("bundling"); + # cmdline opts take precedence + GetOptions( ++ "amode=s" => \$opt_cmdline{amode}, + "bandwidth=n" => \$opt_cmdline{bandwidth}, + "category=s" => \$opt_cmdline{category}, + "channel=s" => \$opt_cmdline{channel}, + "c|command=s" => \$opt_cmdline{command}, + "debug" => \$opt_cmdline{debug}, ++ "exclude=s" => \$opt_cmdline{exclude}, + "exclude-category=s" => \$opt_cmdline{excludecategory}, + "exclude-channel=s" => \$opt_cmdline{excludechannel}, + "expiry|e=n" => \$opt_cmdline{expiry}, ++ "ffmpeg=s" => \$opt_cmdline{ffmpeg}, + "file-prefix|fileprefix=s" => \$opt_cmdline{fileprefix}, + "flush|refresh|f" => \$opt_cmdline{flush}, + "force-download" => \$opt_cmdline{forcedownload}, +@@ -238,7 +252,7 @@ + "rtmpdump=s" => \$opt_cmdline{rtmpdump}, + "save" => \$save, + "since=n" => \$opt_cmdline{since}, +- "stdout|stream|x" => \$opt_cmdline{stdout}, ++ "stdout|x" => \$opt_cmdline{stdout}, + "streaminfo" => \$opt_cmdline{streaminfo}, + "subdirs|subdir|s" => \$opt_cmdline{subdir}, + "suboffset=n" => \$opt_cmdline{suboffset}, +@@ -253,6 +267,7 @@ + "versions=s" => \$opt_cmdline{versions}, + "verbose|v" => \$opt_cmdline{verbose}, + "vlc=s" => \$opt_cmdline{vlc}, ++ "vmode=s" => \$opt_cmdline{vmode}, + "wav" => \$opt_cmdline{wav}, + "whitespace|ws|w" => \$opt_cmdline{whitespace}, + "xml-channels|fxd-channels" => \$opt_cmdline{xmlchannels}, +@@ -269,7 +284,7 @@ + save_options_file( $optfile ) if $save; + + +-# Global vars ++### Global vars ### + + # Programme data structure + # $prog{$pid} = { +@@ -283,7 +298,7 @@ + # 'thumbnail' => + # 'channel => + # 'categories' => +-# 'type' => ++# 'type' => + # 'timeadded' => + # 'longname' => , + # 'version' => +@@ -292,11 +307,35 @@ + # 'fileprefix' => + # 'ext' => + #}; ++ ++# Define cache file format ++my @cache_format = qw/index type name pid available episode versions duration desc channel categories thumbnail timeadded guidance/; ++ ++# List of all types ++my @all_prog_types = qw/ tv radio podcast itv /; ++ ++# Ranges of numbers used in the indicies for each programme type ++my %index_range; ++$index_range{tv}{min} = 1; ++$index_range{tv}{max} = 9999; ++$index_range{radio}{min} = 10001; ++$index_range{radio}{max} = 19999; ++$index_range{podcast}{min} = 20001; ++$index_range{podcast}{max} = 29999; ++$index_range{itv}{min} = 100001; ++$index_range{itv}{max} = 199999; ++# Set maximun index number ++my $max_index; ++for (@all_prog_types) { ++ $max_index = $index_range{$_}{max} if $index_range{$_}{max} > $max_index; ++} + my %prog; ++my %type; + my %pids_history; + my %index_pid; # Hash to obtain pid given an index + my $now; + my $childpid; ++my $min_download_size = 1000000; + + # Static URLs + my $channel_feed_url = 'http://feeds.bbc.co.uk/iplayer'; # /$channel/list/limit/400 +@@ -396,6 +435,18 @@ + 'bbc_radio_jersey' => 'radio|BBC Jersey', + }; + ++$channels{itv} = { ++ 'crime' => 'itv|TV Classics Crime Drama', ++ 'perioddrama' => 'itv|TV Classics Period Drama', ++ 'familydrama' => 'itv|TV Classics Family Drama', ++ 'documentary' => 'itv|TV Classics Documentaries', ++ 'comedy' => 'itv|TV Classics Comedy', ++ 'kids' => 'itv|TV Classics Children\'s TV', ++ 'soaps' => 'itv|TV Classics Soaps', ++ '/' => 'itv|TV Classics', ++}; ++ ++ + # User Agents + my %user_agent = ( + coremedia => 'Apple iPhone v1.1.1 CoreMedia v1.0.0.3A110a', +@@ -410,6 +461,7 @@ + + # Other Non-option dependant vars + my %cachefile = ( ++ 'itv' => "${profile_dir}/itv.cache", + 'tv' => "${profile_dir}/tv.cache", + 'radio' => "${profile_dir}/radio.cache", + 'podcast' => "${profile_dir}/podcast.cache", +@@ -430,6 +482,7 @@ + my $mplayer; + #my $mencoder; + my $ffmpeg; ++my $ffmpeg_opts; + my $rtmpdump; + my $mplayer_opts; + my $lame; +@@ -480,7 +533,7 @@ + # Display default options + display_default_options(); + # For each PVR search +- for my $name ( sort {$a <=> $b} keys %pvrsearches ) { ++ for my $name ( sort {lc $a cmp lc $b} keys %pvrsearches ) { + # Ignore if this search is disabled + if ( $pvrsearches{$name}{disable} ) { + logger "\nSkipping disabled PVR Search '$name'\n" if $opt{verbose}; +@@ -519,27 +572,29 @@ + # Option dependant vars + %download_dir = ( + 'tv' => $opt{outputtv} || $opt{output} || $ENV{IPLAYER_OUTDIR} || '.', ++ 'itv' => $opt{outputtv} || $opt{output} || $ENV{IPLAYER_OUTDIR} || '.', + 'radio' => $opt{outputradio} || $opt{output} || $ENV{IPLAYER_OUTDIR} || '.', + 'podcast' => $opt{outputpodcast} || $opt{output} || $ENV{IPLAYER_OUTDIR} || '.', + ); +- # Default to type=tv +- $opt{type} = 'tv' if ! $opt{type}; +- # Expand 'all' to various prog types +- $opt{type} = 'tv,radio,podcast' if $opt{type} =~ /(all|any)/i; ++ + # Ensure lowercase +- $opt{type} = lc( $opt{type} ); ++ $opt{type} = lc( $opt{type} ); ++ # Expand 'all' to comma separated list all prog types ++ $opt{type} = join(',', @all_prog_types) if $opt{type} =~ /(all|any)/i; ++ # Hash to store specified prog types ++ %type = (); ++ $type{$_} = 1 for split /,/, $opt{type}; ++ # Default to type=tv if no type option is set ++ $type{tv} = 1 if keys %type == 0; + $cache_secs = $opt{expiry} || 14400; + $mplayer = $opt{mplayer} || 'mplayer'; + $mplayer_opts = '-nolirc'; + $mplayer_opts .= ' -really-quiet' if $opt{quiet}; +- # Assume mencoder/ffmpeg is in the same path as mplayer +-# $mencoder = $mplayer; +-# $mencoder =~ s|^(.*?)mplayer|$1mencoder|g; +- $ffmpeg = $mplayer; +- $ffmpeg =~ s|^(.*?)mplayer|$1ffmpeg|g; ++ $ffmpeg = $opt{ffmpeg} || 'ffmpeg'; ++ $ffmpeg_opts = ''; + $lame = $opt{lame} || 'lame'; +- $lame_opts = '-f '; +- $lame_opts .= '--quiet ' if $opt{quiet}; ++ $lame_opts = '-f'; ++ $lame_opts .= ' --quiet ' if $opt{quiet}; + $vlc = $opt{vlc} || 'cvlc'; + $vlc_opts = '-vv'; + $id3v2 = $opt{id3v2} || 'id3v2'; +@@ -562,11 +617,11 @@ + exit 1; + } + +- # Disable rtmp mode if rtmpdump does not exist +- if ( $opt{rtmp} && ! exists_in_path($rtmpdump)) { +- logger "\nERROR: Required program $rtmpdump does not exist (see http://linuxcentre.net/getiplayer/installation and http://linuxcentre.net/getiplayer/download), falling back to iphone mode\n"; +- delete $opt{rtmp}; +- } ++ # Backward compatability options - to be removed eventually ++ $opt{vmode} = 'rtmp' if $opt{rtmp}; ++ $opt{vmode} = 'n95_wifi' if $opt{n95}; ++ $opt{amode} = 'realaudio' if $opt{realaudio}; ++ $opt{amode} = 'iphone' if $opt{mp3audio}; + + # Web proxy + $proxy_url = $opt{proxy} || $ENV{HTTP_PROXY} || $ENV{http_proxy} || ''; +@@ -585,8 +640,21 @@ + } + } + +- # Get arbitrary pid ++ # Get prog by arbitrary pid (then exit) + if ( $opt{pid} ) { ++ ++ # Temporary hack to get 'ITV Catch-up' downloads specified as --pid itv: ++ $type{itv} = 1 if $opt{pid} =~ m{^itv:(.+?)$}; ++ if ( $type{itv} ) { ++ exit 1 if ( ! $opt{streaminfo} ) && check_download_history( $opt{pid} ); ++ # Remove leading itv: tag (backwards compat) ++ $opt{pid} =~ s/^itv:(.+?)$/$1/ig; ++ # Force prog type to itv ++ $prog{$opt{pid}}{type} = 'itv'; ++ download_programme( $opt{pid} ); ++ exit 0; ++ } ++ + # Remove any url parts from the pid + $opt{pid} =~ s/^.*(b0[a-z,0-9]{6}).*$/$1/g; + # Retry loop +@@ -594,21 +662,29 @@ + my $retries = 3; + my $retcode; + exit 1 if ( ! $opt{streaminfo} ) && check_download_history( $opt{pid} ); +- while ( $count < $retries && ($retcode = download_programme( $opt{pid} )) eq 'retry' ) { +- logger "WARNING: Retrying download for PID $opt{pid}\n"; +- $count++; ++ for ($count = 1; $count <= $retries; $count++) { ++ $retcode = download_programme( $opt{pid} ); ++ return 0 if $retcode eq 'skip'; ++ if ( $retcode eq 'retry' && $count < $retries ) { ++ logger "WARNING: Retrying download for PID $opt{pid}\n"; ++ } else { ++ $retcode = 1 if $retcode eq 'retry'; ++ last; ++ } + } + # Add to history, tag and Run post download command if download was successful + if ($retcode == 0) { + add_to_download_history( $opt{pid} ); + tag_file( $opt{pid} ); + run_user_command( $opt{pid}, $opt{command} ) if $opt{command}; +- } ++ } elsif (! $opt{test}) { ++ logger "ERROR: Failed to download PID $opt{pid}\n"; ++ } + exit 0; + } + + # Get stream links from BBC iplayer site or from cache (also populates all hashes) specified in --type option +- get_links( $_ ) for split /,/, $opt{type}; ++ get_links( $_ ) for keys %type; + + # List elements (i.e. 'channel' 'categories') if required and exit + if ( $opt{list} ) { +@@ -616,18 +692,13 @@ + exit 0; + } + +- # Write HTML and XML files if required +- create_html( sort {$a <=> $b} keys %index_pid ) if $opt{html}; +- create_xml( $opt{fxd}, sort {$a <=> $b} keys %index_pid ) if $opt{fxd}; +- create_xml( $opt{mythtv}, sort {$a <=> $b} keys %index_pid ) if $opt{mythtv}; +- + # Parse remaining args + my @match_list; + for ( @search_args ) { + chomp(); +- +- # If Numerical value < 30000 +- if ( /^[\d]+$/ && $_ < 30000) { ++ ++ # If Numerical value < $max_index ++ if ( /^[\d]+$/ && $_ <= $max_index) { + push @match_list, $_; + + # If PID then find matching programmes with this PID +@@ -649,24 +720,29 @@ + # Go get the cached data for other programme types if the index numbers require it + my %require; + for ( @match_list ) { +- $require{tv} = 1 if $_ >= 1 && $_ < 10000 && ( ! $require{tv} ) && $opt{type} !~ /tv/; +- $require{radio} = 1 if $_ >= 10000 && $_ < 20000 && ( ! $require{radio} ) && $opt{type} !~ /radio/; +- $require{podcast} = 1 if $_ >= 20000 && $_ < 30000 && ( ! $require{podcast} ) && $opt{type} !~ /podcast/; ++ for my $types ( @all_prog_types ) { ++ $require{$types} = 1 if $_ >= $index_range{$types}{min} && $_ <= $index_range{$types}{max} && ( ! $require{$types} ) && ( ! $type{$types} ); ++ } + } ++ + # Get extra required programme caches + logger "INFO: Additionally getting cached programme data for ".(join ', ', keys %require)."\n" if %require > 0; + # Get stream links from BBC iplayer site or from cache (also populates all hashes) + for (keys %require) { + # Get $_ stream links + get_links( $_ ); +- # Add new prog types to the type option +- $opt{type} .= ",$_"; ++ # Add new prog types to the type list ++ $type{$_} = 1; + } +- + # Display list for download + logger "Matches:\n" if @match_list; + @match_list = list_progs( @match_list ); + ++ # Write HTML and XML files if required (with search options applied) ++ create_html( @match_list ) if $opt{html}; ++ create_xml( $opt{fxd}, @match_list ) if $opt{fxd}; ++ create_xml( $opt{mythtv}, @match_list ) if $opt{mythtv}; ++ + # Do the downloads based on list of index numbers if required + if ( $opt{get} || $opt{stdout} ) { + for (@match_list) { +@@ -681,16 +757,27 @@ + logger "ERROR: No PID for index $_ (try using --type option ?)\n"; + next; + } +- while ( $count < $retries && $pid && ($retcode = download_programme( $pid )) eq 'retry' ) { +- logger "WARNING: Retrying download for '$prog{$pid}{name} - $prog{$pid}{episode}'\n"; +- $count++; ++ for ($count = 1; $count <= $retries; $count++) { ++ $retcode = download_programme( $pid ); ++ last if $retcode eq 'skip'; ++ if ( $retcode eq 'retry' && $count < $retries ) { ++ logger "WARNING: Retrying download for '$prog{$pid}{name} - $prog{$pid}{episode}'\n"; ++ } else { ++ $retcode = 1 if $retcode eq 'retry'; ++ last; ++ } + } + # Add to history, tag file, and run post download command if download was successful +- if ($retcode eq '0') { ++ if ($retcode == 0) { + add_to_download_history( $pid ); + tag_file( $pid ); + run_user_command( $pid, $opt{command} ) if $opt{command}; + pvr_report( $pid ) if $opt{pvr}; ++ # Next match if 'skip' was returned ++ } elsif ( $retcode eq 'skip' ) { ++ last; ++ } elsif (! $opt{test}) { ++ logger "ERROR: Failed to download '$prog{$pid}{name} - $prog{$pid}{episode}'\n"; + } + } + } +@@ -702,16 +789,11 @@ + + # Lists progs given an array of index numbers, also returns an array with non-existent entries removed + sub list_progs { +- my $ua; ++ my $ua = create_ua('desktop'); + my @checked; + my %names; + # Setup user agent for a persistent connection to get programme metadata + if ( $opt{info} ) { +- $ua = LWP::UserAgent->new; +- $ua->timeout([$lwp_request_timeout]); +- $ua->proxy( ['http'] => $proxy_url ); +- $ua->agent( $user_agent{desktop} ); +- $ua->conn_cache(LWP::ConnCache->new()); + # Truncate array if were lisiting info and > $info_limit entries are requested - be nice to the beeb! + if ( $#_ >= $info_limit ) { + $#_ = $info_limit - 1; +@@ -733,18 +815,7 @@ + push @checked, $_; + if ( $opt{info} ) { + my %metadata = get_pid_metadata( $ua, $pid ); +- logger "\nPid:\t\t$metadata{pid}\n"; +- logger "Index:\t\t$metadata{index}\n"; +- logger "Type:\t\t$metadata{type}\n"; +- logger "Duration:\t$metadata{duration}\n"; +- logger "Channel:\t$metadata{channel}\n"; +- logger "Available:\t$metadata{available}\n"; +- logger "Expires:\t$metadata{expiry}\n"; +- logger "Versions:\t$metadata{versions}\n"; +- logger "Guidance:\t$metadata{guidance}\n"; +- logger "Categories:\t$metadata{categories}\n"; +- logger "Description:\t$metadata{desc}\n"; +- logger "Player:\t\t$metadata{player}\n"; ++ display_metadata( \%metadata, qw/ pid index type duration channel available expiry versions guidance categories desc player / ); + } + } + logger "\n"; +@@ -758,8 +829,9 @@ + # Display a line containing programme info (using long, terse, and type options) + sub list_prog_entry { + my ( $pid, $prefix, $tree ) = ( @_ ); +- my $type = ''; +- $type = "$prog{$pid}{type}, " if $opt{type} !~ /^(tv|radio|podcast)$/i; ++ my $prog_type = ''; ++ # Show the type field if >1 type has been specified ++ $prog_type = "$prog{$pid}{type}, " if keys %type > 1; + my $name; + # If tree view + if ( $opt{tree} ) { +@@ -768,20 +840,21 @@ + } else { + $name = "$prog{$pid}{name} - "; + } +- # Remove some info depending on type ++ # Remove some info depending on prog_type + my $optional; + $optional = ", '$prog{$pid}{channel}', $prog{$pid}{categories}, $prog{$pid}{versions}" if $prog{$pid}{type} eq 'tv'; ++ $optional = ", '$prog{$pid}{channel}'" if $prog{$pid}{type} eq 'itv'; + $optional = ", '$prog{$pid}{channel}', $prog{$pid}{categories}" if $prog{$pid}{type} eq 'radio'; + $optional = ", '$prog{$pid}{available}', '$prog{$pid}{channel}', $prog{$pid}{categories}" if $prog{$pid}{type} eq 'podcast'; +- logger "\n${type}$prog{$pid}{name}\n" if $opt{tree} && ! $tree; ++ logger "\n${prog_type}$prog{$pid}{name}\n" if $opt{tree} && ! $tree; + # Display based on output options + if ( $opt{long} ) { + my @time = gmtime( time() - $prog{$pid}{timeadded} ); +- logger "${prefix}$prog{$pid}{index}:\t${type}${name}$prog{$pid}{episode}${optional}, $time[7] days $time[2] hours ago - $prog{$pid}{desc}\n"; ++ logger "${prefix}$prog{$pid}{index}:\t${prog_type}${name}$prog{$pid}{episode}${optional}, $time[7] days $time[2] hours ago - $prog{$pid}{desc}\n"; + } elsif ( $opt{terse} ) { +- logger "${prefix}$prog{$pid}{index}:\t${type}${name}$prog{$pid}{episode}\n"; ++ logger "${prefix}$prog{$pid}{index}:\t${prog_type}${name}$prog{$pid}{episode}\n"; + } else { +- logger "${prefix}$prog{$pid}{index}:\t${type}${name}$prog{$pid}{episode}${optional}\n"; ++ logger "${prefix}$prog{$pid}{index}:\t${prog_type}${name}$prog{$pid}{episode}${optional}\n"; + } + return 0; + } +@@ -795,6 +868,7 @@ + my $channel_regex = $opt{channel} || '.*'; + my $category_regex = $opt{category} || '.*'; + my $versions_regex = $opt{versions} || '.*'; ++ my $exclude_regex = $opt{exclude} || '^ROGUE$'; + my $channel_exclude_regex = $opt{excludechannel} || '^ROGUE$'; + my $category_exclude_regex = $opt{excludecategory} || '^ROGUE$'; + my $since = $opt{since} || 99999; +@@ -808,6 +882,7 @@ + && $prog{$pid}{categories} =~ /$category_regex/i + && $prog{$pid}{versions} =~ /$versions_regex/i + && $prog{$pid}{channel} !~ /$channel_exclude_regex/i ++ && $prog{$pid}{name} !~ /$exclude_regex/i + && $prog{$pid}{categories} !~ /$category_exclude_regex/i + && $prog{$pid}{timeadded} >= $now - ($since * 3600) + ) { +@@ -828,25 +903,22 @@ + ); + } + } ++ + return sort {$a <=> $b} keys %download_hash; + } + + +-# get_links_atom (%channels) +-sub get_links_atom { +- my $type = shift; ++# get_links_bbciplayer (%channels) ++sub get_links_bbciplayer { ++ my $prog_type = shift; + my %channels = %{$_[0]}; + + my $xml; + my $feed_data; + my $res; +- logger "INFO: Getting $type Index Feeds\n"; ++ logger "INFO: Getting $prog_type Index Feeds\n"; + # Setup User agent +- my $ua = LWP::UserAgent->new; +- $ua->timeout([$lwp_request_timeout]); +- $ua->proxy( ['http'] => $proxy_url ); +- $ua->agent( $user_agent{desktop} ); +- $ua->conn_cache(LWP::ConnCache->new()); ++ my $ua = create_ua('desktop'); + + # Download index feed + # Sort feeds so that category based feeds are done last - this makes sure that the channels get defined correctly if there are dups +@@ -909,7 +981,7 @@ + # Discard first element == header + shift @entries; + +- my ( $name, $episode, $desc, $pid, $available, $channel, $duration, $thumbnail, $type, $versions ); ++ my ( $name, $episode, $desc, $pid, $available, $channel, $duration, $thumbnail, $prog_type, $versions ); + foreach my $entry (@entries) { + + my $entry_flat = $entry; +@@ -939,7 +1011,7 @@ + } + + # Extract channel and type +- ($type, $channel) = (split /\|/, $channels{$_})[0,1]; ++ ($prog_type, $channel) = (split /\|/, $channels{$_})[0,1]; + + logger "DEBUG: '$pid, $name - $episode, $channel'\n" if $opt{debug}; + +@@ -980,7 +1052,7 @@ + 'thumbnail' => "${thumbnail_prefix}/${pid}_150_84.jpg", + 'channel' => $channel, + 'categories' => join(',', @category), +- 'type' => $type, ++ 'type' => $prog_type, + }; + } + } +@@ -996,13 +1068,8 @@ + + # Add index field based on alphabetical sorting by prog name + my %index; +- $index{tv} = 1; +- +- # Start index counter at 10001 for radio progs +- $index{radio} = 10001; +- +- # Start index counter at 20001 for podcast progs +- $index{podcast} = 20001; ++ # Start index counter at 'min' for each prog type ++ $index{$_} = $index_range{$_}{min} for @all_prog_types; + + my @prog_pid; + +@@ -1013,10 +1080,10 @@ + for (sort @prog_pid) { + # Extract pid + my $pid = (split /\|/)[1]; +- my $type = $prog{$pid}{type}; +- $index_pid{ $index{$type} } = $pid; +- $prog{$pid}{index} = $index{$type}; +- $index{$type}++; ++ my $prog_type = $prog{$pid}{type}; ++ $index_pid{ $index{$prog_type} } = $pid; ++ $prog{$pid}{index} = $index{$prog_type}; ++ $index{$prog_type}++; + } + return 0; + } +@@ -1024,18 +1091,14 @@ + + + # Uses: $podcast_index_feed_url +-# get_podcast_links () +-sub get_podcast_links { ++# get_links_bbcpodcast () ++sub get_links_bbcpodcast { + + my $xml; + my $res; + logger "INFO: Getting podcast Index Feeds\n"; + # Setup User agent +- my $ua = LWP::UserAgent->new; +- $ua->timeout([$lwp_request_timeout]); +- $ua->proxy( ['http'] => $proxy_url ); +- $ua->agent( $user_agent{get_iplayer} ); +- $ua->conn_cache(LWP::ConnCache->new()); ++ my $ua = create_ua('get_iplayer'); + + # Method + # $podcast_index_feed_url (gets list of rss feeds for each podcast prog) => +@@ -1224,6 +1287,302 @@ + + + ++# Uses: ++# get_links_itv () ++sub get_links_itv { ++ my %channels = %{$_[0]}; ++ my $xml; ++ my $res; ++ my %series_pid; ++ my %episode_pid; ++ logger "INFO: Getting itv Index Feeds\n"; ++ # Setup User agent ++ my $ua = create_ua('desktop'); ++ ++ # Method ++ # http://www.itv.com/_data/xml/CatchUpData/CatchUp360/CatchUpMenu.xml (gets list of urls for each prog series) => ++ # => ++ ++ # Download index feed ++ my $itv_index_shows_url = 'http://www.itv.com/ClassicTVshows/'; # $channel/default.html ++ my $itv_index_feed_url = 'http://www.itv.com/_data/xml/CatchUpData/CatchUp360/CatchUpMenu.xml'; ++ ++ # Sort feeds so that pages are done last - this makes sure that the channels get defined correctly if there are dups ++ my @channel_list; ++ push @channel_list, grep !/\//, keys %channels; ++ push @channel_list, grep /\//, keys %channels; ++ # ITV ClassicShows parsing ++ for my $channel ( @channel_list ) { ++ #
  • A Bit of a Do
  • ++ #
  • A Christmas Carol
  • ++ # Get page, search for relevent lines which contain series links and loop through each matching line ++ for my $s_line ( grep /(
  • <\/a>

    |.+?<\/a>
    <\/li>)/, ( split /\n/, request_url_retry($ua, $itv_index_shows_url.${channel}.'/default.html', 3, '.', "WARNING: Failed to get itv ${channel} index from site\n") ) ) { ++ my ($url, $name); ++ # Extract series url + series description ++ ($url, $name) = ($1, $2) if $s_line =~ m{
  • <\/a>

    }; ++ ($url, $name) = ($1, $2) if $s_line =~ m{\s*(.+?)\s*<\/a>
    <\/li>}; ++ chomp($url); ++ chomp($name); ++ next if ! ($url && $name); ++ logger "DEBUG: Channel: '$channel' Series: '$name' URL: '$url'\n" if $opt{verbose}; ++ ++ # Get list of episodes for this series ++ # e.g.
  • Episode one
    The Sun in a Bottle
  • ++ #
  • Episode two
    Castle Saburac
  • ++ #
  • Episode one
    The Dead of Jericho
  • ++ # ++ # e.g.
  • Crossroads: Rosemary shoots DavidPlay

    ++ # vodcrid=crid://itv.com/971&DF=0">Emmerdale  2002 Louise kills RaySoldier Soldier Play

    Soldier Soldier

    ++ # ++ for my $e_line ( grep /vodcrid=crid/, ( split /\n/, request_url_retry($ua, $url, 3, '.', "WARNING: Failed to get ${name} index from site\n") ) ) { ++ my ($guidance, $pid, $episode, $thumbnail); ++ logger "DEBUG: Match Line: $e_line\n" if $opt{debug}; ++ # Extract episode data ++ ($guidance, $pid, $episode) = ($2, $3, $4) if $e_line =~ m{\s*(.+?)\s*<}; ++ ($pid, $thumbnail, $episode) = ($1, $2, $3) if $e_line =~ m{vodcrid=crid://itv.com/(\d+?)&.+?> $name, ++ 'versions' => 'default', ++ 'episode' => $episode, ++ 'channel' => (split /\|/, $channels{$channel})[1], ++ 'guidance' => $guidance, ++ 'categories' => (split /\|/, $channels{$channel})[1], ++ 'type' => 'itv', ++ }; ++ } ++ } ++ } ++ ++ my $xmlindex = request_url_retry($ua, $itv_index_feed_url, 3, '.', "WARNING: Failed to get itv index from site\n"); ++ $xmlindex =~ s/[\n\r]//g; ++ ++ # This gives a list of programme series (sometimes episodes) ++ # ++ # 50 ++ # A CHRISTMAS CAROL ++ # 615915 ++ # ++ # http://www.itv.com//img/150x113/A-Christmas-Carol-2f16d25a-de1d-4a3a-90cb-d47489eee98e.jpg ++ # 2009-01-06T12:24:22.7419643+00:00 ++ # ++ # http://www.itv.com/CatchUp/Video/default.html?ViewType=5&Filter=32910 ++ # 1 ++ # 32910 ++ # -1 ++ # ++ # ++ # ++ # ++ ++ for my $feedxml ( split //, $xmlindex ) { ++ # Extract feed data ++ my ($episodecount, $viewtype, $videoid, $url); ++ my @entries; ++ ++ logger "\n\nDEBUG: XML: $feedxml\n" if $opt{debug}; ++ ++ # 1 ++ $episodecount = $1 if $feedxml =~ m{\s*(\d+)\s*<\/EpisodeCount>}; ++ ++ # http://www.itv.com/CatchUp/Video/default.html?ViewType=5&Filter=32910 ++ ($viewtype, $videoid) = ($1, $2) if $feedxml =~ m{\s*.+?ViewType=(\d+).+?Filter=(\d+)\s*<\/Url>}i; ++ ++ ## 32910 ++ #$videoid = $1 if $feedxml =~ m{\s*(\d+)\s*<\/VideoID>}; ++ ++ # Skip if there is no feed data for channel ++ next if ($viewtype =~ /^0*$/ || $videoid =~ /^0*$/ ); ++ ++ logger "DEBUG: Got ViewType=$viewtype VideoId=$videoid EpisodeCount=$episodecount\n" if $opt{debug}; ++ ++ my $url = "http://www.itv.com/_app/Dynamic/CatchUpData.ashx?ViewType=${viewtype}&Filter=${videoid}"; ++ ++ # Add response from episode metadata url to list to be parsed if this is an episode link ++ if ( $viewtype == 5 ) { ++ next if $episode_pid{$videoid}; ++ $episode_pid{$videoid} = 1; ++ # Get metadata pages for episode ++ ++ my ( $name, $guidance, $channel, $episode, $desc, $pid, $available, $duration, $thumbnail ); ++ ++ $pid = $videoid; ++ $channel = 'ITV Catch-up'; ++ ++ # Skip if this pid is a duplicate ++ if ( defined $prog{$pid} ) { ++ logger "WARNING: '$pid, $prog{$pid}{name} - $prog{$pid}{episode}, $prog{$pid}{channel}' already exists (this channel = $channel)\n" if $opt{verbose}; ++ next; ++ } ++ ++ $name = $1 if $feedxml =~ m{\s*(.+?)\s*<\/ProgrammeTitle>}; ++ $guidance = $1 if $feedxml =~ m{\s*(.+?)\s*<\/DentonRating>}; ++ $thumbnail = $1 if $feedxml =~ m{\s*(.+?)\s*<\/ProgrammeMediaUrl>}; ++ $episode = $pid; ++ # Strip non-printable chars ++ $guidance =~ s/[\s\x00\xc2\xa0]+$//ig; ++ ++ # build data structure ++ $prog{$pid} = { ++ 'name' => $name, ++ 'versions' => 'default', ++ 'episode' => $episode, ++ 'guidance' => $guidance, ++ 'desc' => $desc, ++ 'available' => $available, ++ 'duration' => $duration, ++ 'thumbnail' => $thumbnail, ++ 'channel' => $channel, ++ 'categories' => 'TV', ++ 'type' => 'itv', ++ }; ++ ++ ++ ++ ++ ++ # Get next episode list and parse ++ #
    ++ #
    ++ #

    Emmerdale

    ++ #

    Mon 05 Jan 2009

    ++ #

    Donna is stunned to learn Marlon has pointed the finger at Ross. Aaron defaces Tom King's grave.

    ++ #
      ++ #
    • ++ # Duration: 30 min ++ #
    • ++ #
    • ++ # Expires in ++ # 29 ++ # days ++ #
    • ++ #
    ++ #
    ++ #
    ++ #
    ++ #
    ++ #

    Emmerdale

    ++ #

    Fri 02 Jan 2009

    ++ #

    Marlon gets his revenge on Ross. The King brothers struggle to restart their business without Matthew. Scarlett is fed up with Victoria getting all Daz ++ #

      ++ #
    • ++ # Duration: 30 min ++ #
    • ++ #
    • ++ # Expires in ++ # 26 ++ # days ++ #
    • ++ #
    ++ #
    ++ #
    ++ # ++ } elsif ( $viewtype == 1 ) { ++ # Make sure we don't duplicate parsing a series ++ next if $series_pid{$videoid}; ++ $series_pid{$videoid} = 1; ++ ++ # Get metadata pages for each series ++ logger "DEBUG: Getting series metadata $url\n" if $opt{debug}; ++ $xml = request_url_retry($ua, $url, 2, '.', "WARNING: Failed to get itv series data for ${videoid} from itv site\n") if $opt{verbose}; ++ $xml = request_url_retry($ua, $url, 2, '.', '') if ! $opt{verbose}; ++ ++ # skip if no data ++ next if ! $xml; ++ ++ decode_entities($xml); ++ # Flatten entry ++ $xml =~ s/[\n\r]//g; ++ ++ # Extract Filter (pids) from this list ++ # e.g.

    Emmerdale

    ++ my @videoids = (split /

    \s*(.+?)\s*<\/ProgrammeTitle>}; ++ $available = $1 if $xml =~ m{(.+?)<\/p>}i; ++ $episode = $available; ++ $duration = $1 if $xml =~ m{
  • Duration:\s*(.+?)\s*<\/li>}i; ++ $desc = $1 if $xml =~ m{(.+?)\s*<\/p>}; ++ $guidance = $1 if $feedxml =~ m{\s*(.+?)\s*<\/DentonRating>}; ++ $thumbnail = $1 if $feedxml =~ m{\s*(.+?)\s*<\/ProgrammeMediaUrl>}; ++ $guidance =~ s/[\s\x00\xc2\xa0]+$//ig; ++ ++ logger "DEBUG: name='$name' episode='$episode' pid=$pid available='$available' \n" if $opt{debug}; ++ ++ # build data structure ++ $prog{$pid} = { ++ 'name' => $name, ++ 'versions' => 'default', ++ 'episode' => $episode, ++ 'guidance' => $guidance, ++ 'desc' => $desc, ++ 'available' => $available, ++ 'duration' => $duration, ++ 'thumbnail' => $thumbnail, ++ 'channel' => $channel, ++ 'categories' => 'TV', ++ 'type' => 'itv', ++ }; ++ } ++ } ++ ++ } ++ logger "\n"; ++ return 0; ++} ++ ++ ++ + # Feed info: + # # Also see http://derivadow.com/2008/07/18/interesting-bbc-data-to-hack-with/ + # # All podcasts menu (iphone) +@@ -1261,14 +1620,14 @@ + # http://www.bbc.co.uk/cbbc/programmes/genres/childrens/player + # http://www.bbc.co.uk/programmes/genres/childrens/schedules/upcoming.ics + # +-# get_links( ) ++# get_links( ) + sub get_links { + my @cache; + my $now = time(); +- my $type = shift; ++ my $prog_type = shift; + + # Open cache file (need to verify we can even read this) +- if ( open(CACHE, "< $cachefile{$type}") ) { ++ if ( open(CACHE, "< $cachefile{$prog_type}") ) { + # Get file contents less any comments + @cache = grep !/^[\#\s]/, ; + close (CACHE); +@@ -1281,47 +1640,40 @@ + for (@cache) { + # Populate %prog from cache + chomp(); +- my ($index, $type, $name, $pid, $available, $episode, $versions, $duration, $desc, $channel, $categories, $thumbnail, $timeadded) = split /\|/; +- # Create data structure with prog data +- $prog_old{$pid} = { +- 'index' => $index, +- 'name' => $name, +- 'episode' => $episode, +- 'desc' => $desc, +- 'available' => $available, +- 'duration' => $duration, +- 'versions' => $versions, +- 'channel' => $channel, +- 'categories' => $categories, +- 'thumbnail' => $thumbnail, +- 'type' => $type, +- 'timeadded' => $timeadded, +- }; +- $index_pid_old{$index} = $pid; ++ # Get cache line ++ my @record = split /\|/; ++ my %record_entries; ++ # Update fields in %prog hash for $pid ++ $record_entries{$_} = shift @record for @cache_format; ++ $prog_old{ $record_entries{pid} } = \%record_entries; ++ $index_pid_old{ $record_entries{index} } = $record_entries{pid}; + } + } + + # if a cache file doesn't exist/corrupted, flush option is specified or original file is older than $cache_sec then download new data +- if ( (! @cache) || (! -f $cachefile{$type}) || $opt{flush} || ($now >= ( stat($cachefile{$type})->mtime + $cache_secs )) ) { ++ if ( (! @cache) || (! -f $cachefile{$prog_type}) || $opt{flush} || ($now >= ( stat($cachefile{$prog_type})->mtime + $cache_secs )) ) { + +- # Podcast only +- get_podcast_links() if $type eq 'podcast'; ++ # BBC Podcast only ++ get_links_bbcpodcast() if $prog_type eq 'podcast'; + +- # Radio and TV +- get_links_atom( $type, \%{$channels{$type}} ) if $type =~ /(tv|radio)/; ++ # ITV only ++ get_links_itv( \%{$channels{$prog_type}} ) if $prog_type eq 'itv'; ++ ++ # BBC Radio and TV ++ get_links_bbciplayer( $prog_type, \%{$channels{$prog_type}} ) if $prog_type =~ /^(tv|radio)$/; + + # Sort indexes + sort_indexes(); + + # Open cache file for writing +- unlink $cachefile{$type}; ++ unlink $cachefile{$prog_type}; + my $now = time(); +- if ( open(CACHE, "> $cachefile{$type}") ) { +- print CACHE "#Index|Type|Name|Pid|Available|Episode|Versions|Duration|Desc|Channel|Categories|Thumbnail|TimeAdded\n"; ++ if ( open(CACHE, "> $cachefile{$prog_type}") ) { ++ print CACHE "#".(join '|', @cache_format)."\n"; + for (sort {$a <=> $b} keys %index_pid) { + my $pid = $index_pid{$_}; + # Only write entries for correct prog type +- if ($prog{$pid}{type} eq $type) { ++ if ($prog{$pid}{type} eq $prog_type) { + # Merge old and new data to retain timestamps + # if the entry was in old cache then retain timestamp from old entry + if ( $prog_old{$pid}{timeadded} ) { +@@ -1332,12 +1684,17 @@ + list_prog_entry( $pid, 'Added: ' ); + } + # write to cache file +- print CACHE "$_|$prog{$pid}{type}|$prog{$pid}{name}|$pid|$prog{$pid}{available}|$prog{$pid}{episode}|$prog{$pid}{versions}|$prog{$pid}{duration}|$prog{$pid}{desc}|$prog{$pid}{channel}|$prog{$pid}{categories}|$prog{$pid}{thumbnail}|$prog{$pid}{timeadded}\n"; ++ $prog{$pid}{pid} = $pid; ++ # Write each field into cache line ++ for my $field (@cache_format) { ++ print CACHE $prog{$pid}{$field}.'|'; ++ } ++ print CACHE "\n"; + } + } + close (CACHE); + } else { +- logger "WARNING: Couldn't open cache file '$cachefile{$type}' for writing\n"; ++ logger "WARNING: Couldn't open cache file '$cachefile{$prog_type}' for writing\n"; + } + + +@@ -1354,172 +1711,434 @@ + # Usage: download_programme () + sub download_programme { + my $pid = shift; ++ my %streamdata; ++ my %version_pids; ++ my $return; + + # Setup user-agent +- # Switch off automatic redirects +- my $ua = LWP::UserAgent->new( requests_redirectable => [] ); +- # Setup user agent +- $ua->timeout([$lwp_request_timeout]); +- $ua->proxy( ['http'] => $proxy_url ); +- $ua->cookie_jar( HTTP::Cookies->new( file => $cookiejar, autosave => 1, ignore_discard => 1 ) ); ++ my $ua = create_ua('desktop'); + +- my $dir = $download_dir{ $prog{$pid}{type} }; +- $prog{$pid}{ext} = 'mov'; ++ # download depending on the prog type ++ logger "INFO: Attempting to Download $prog{$pid}{type}: $prog{$pid}{name} - $prog{$pid}{episode}\n"; + +- # If were a podcast... ++ # ITV TV ++ if ( $prog{$pid}{type} eq 'itv' ) { ++ # stream data ++ # Display media stream data if required ++ if ( $opt{streaminfo} ) { ++ display_stream_info( $pid, undef, 'all' ); ++ $opt{quiet} = 1; ++ return 'skip'; ++ } ++ return download_programme_itv( $ua, $pid ); ++ } ++ ++ # BBC Podcasts + if ( $prog{$pid}{type} eq 'podcast' ) { +- # Determine the correct filename and extension for this download +- my $filename_orig = $pid; +- $prog{$pid}{ext} = $pid; +- $filename_orig =~ s|^.+/(.+?)\.\w+$|$1|g; +- $prog{$pid}{ext} =~ s|^.*\.(\w+)$|$1|g; +- $prog{$pid}{fileprefix} = generate_download_filename_prefix($pid, $dir, $opt{fileprefix} || " - $filename_orig"); +- $prog{$pid}{dir} = $dir; +- logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; +- my $file_done = "${dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; +- my $file = "${dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; +- $prog{$pid}{filename} = $file_done; +- if ( -f $file_done ) { +- logger "WARNING: File $file_done already exists\n\n"; +- return 1; ++ # stream data not available ++ return 'skip' if $opt{streaminfo}; ++ return download_programme_podcast( $ua, $pid ); ++ } ++ ++ # For BBC Radio/TV we might have a pid with no prog_type - determine here first ++ ( $prog{$pid}{type}, $prog{$pid}{longname}, %version_pids ) = get_version_pids( $ua, $pid ); ++ ++ # BBC TV ++ if ( $prog{$pid}{type} eq 'tv' ) { ++ ++ # Deal with BBC TV fallback modes ++ # Valid modes are iphone,rtmp,flashhigh,flashnormal,flashwii,n95_wifi ++ $opt{vmode} = 'flashhigh,flashnormal' if $opt{vmode} eq 'rtmp' || $opt{vmode} eq 'flash'; ++ # Defaults ++ if ( $opt{vmode} eq 'auto' || ! $opt{vmode} ) { ++ if ( ! exists_in_path($rtmpdump) ) { ++ $opt{vmode} = 'iphone'; ++ } else { ++ $opt{vmode} = 'iphone,flashhigh,flashnormal'; ++ } + } ++ # Expand the modes into a loop ++ logger "INFO: $opt{vmode} modes will be tried\n"; ++ for my $mode ( split /,/, $opt{vmode} ) { ++ chomp( $mode ); ++ logger "INFO: Attempting to download using $mode mode\n"; ++ $return = download_programme_tv( $ua, $pid, $mode, \%version_pids ); ++ logger "DEBUG: Download using $mode mode return code: '$return'\n" if $opt{debug}; + +- # Skip from here if we are only testing downloads +- return 1 if $opt{test}; ++ # Give up trying alternative download methods ++ return 2 if $return eq 'abort'; + +- # Create symlink filename if required +- my $file_symlink; +- if ( $opt{symlink} ) { +- # Substitute the fields for the pid +- $file_symlink = substitute_fields( $pid, $opt{symlink} ); ++ # Return to retry loop if successful or retry requested ++ return 'retry' if $return eq 'retry'; ++ ++ # Return to retry loop and do nothing ++ return 'skip' if $return eq 'skip'; ++ ++ # Return 0 if successful ++ return 0 if ! $return; ++ ++ # Return failed if there is no 'next' ++ return 1 if $return ne 'next'; + } +- +- return download_podcast_stream( $ua, $pid, $file, $file_done, $file_symlink ); + } + +- logger "INFO: Attempting to Download: $prog{$pid}{name} - $prog{$pid}{episode}\n"; ++ # BBC Radio ++ if ( $prog{$pid}{type} eq 'radio' ) { ++ # This will always be the pid version for radio ++ $prog{$pid}{version} = 'default'; ++ # Display media stream data if required ++ if ( $opt{streaminfo} ) { ++ display_stream_info( $pid, $version_pids{default}, 'all' ); ++ $opt{quiet} = 1; ++ return 'skip'; ++ } ++ ++ # Deal with radio fallback modes ++ # Valid modes are mp3|iphone,flash|rtmp,real|ra ++ # Defaults ++ $opt{amode} = 'iphone,flash,real' if $opt{amode} eq 'auto' || ! $opt{amode}; ++ ++ # Expand the modes into a loop ++ logger "INFO: $opt{amode} modes will be tried\n"; ++ for my $mode ( split /,/, $opt{amode} ) { ++ chomp( $mode ); ++ logger "INFO: Attempting to download using $mode mode\n"; ++ # RealAudio ++ if ( $mode =~ /^(real|ra)/ ) { ++ $return = download_programme_radio_realaudio( $ua, $pid, \%version_pids ); ++ ++ # FlashAudio ++ } elsif ( $mode =~ /^(flash|rtmp)/ ) { ++ $return = download_programme_radio_flashaudio( $ua, $pid, $mode, \%version_pids ); ++ ++ # iPhone ++ } elsif ( $mode =~ /^(iphone|mp3)/ ) { ++ $return = download_programme_radio_iphone( $ua, $pid, \%version_pids ); ++ } ++ logger "DEBUG: Download using $mode mode return code: '$return'\n" if $opt{debug}; + +- # Get version => pid hash +- my ( $type, $title, %version_pids ) = get_version_pids( $ua, $pid ); ++ # Give up trying alternative download methods ++ return 2 if $return eq 'abort'; + +- # Extract Long Name, e.g.: iplayer.episode.setTitle("DIY SOS: Series 16: Swansea"); +- $prog{$pid}{longname} = $title; ++ # Not going to allow retries here until rtmpdump/flashaudio exits correctly - so just just skip to next mode for now ++ $return = 'next' if $return eq 'retry'; ++ ## Return to retry loop if successful or retry requested ++ #return 'retry' if $return eq 'retry'; + +- # Strip off the episode name +- $prog{$pid}{longname} =~ s/^(.+):.*?$/$1/g; ++ # Return to retry loop and do nothing ++ return 'skip' if $return eq 'skip'; + +- # Detect if this content is for radio +- my $usemp3 = 0; +- if ( $type eq 'radio' ) { ++ # Return 0 if successful ++ return 0 if ! $return; + +- # Display media stream data if required +- if ( $opt{streaminfo} ) { +- get_media_stream_data( $pid, $version_pids{'default'}, 'all' ); +- return 1; ++ # Return failed if there is no 'next' ++ return 1 if $return ne 'next'; + } ++ } + +- # Type is definitely radio +- $prog{$pid}{type} = 'radio'; +- $dir = $download_dir{ $prog{$pid}{type} }; +- +- # Check for mp3 stream - unless realaudio option is specified +- if ( ! $opt{realaudio} ) { +- # Check for iphone mp3 radio stream +- if ( get_media_stream_data( $pid, $version_pids{default}, 'iphone' ) ) { +- $usemp3 = 1; +- $prog{$pid}{ext} = 'mp3'; +- logger "INFO: MP3 stream media is available\n" if $opt{verbose}; +- +- # if mp3audio option is specified do not fallback to realaudio +- } elsif ( $opt{mp3audio} ) { +- logger "ERROR: No MP3 stream media is available - not falling back to RealAudio\n"; +- return 1; ++ # If we get here then we have failed ++ return 1; ++} + +- # if not then force realaudio option as fallback +- } else { +- $opt{realaudio} = 1; +- logger "INFO: No MP3 stream media is available - falling back to RealAudio\n" if $opt{verbose}; +- } +- } + +- # Use realplayer stream +- if ( $opt{realaudio} ) { + +- # Check dependancies for radio programme transcoding / streaming +- # Check if we need 'tee' +- if ( (! exists_in_path($tee)) && $opt{stdout} && (! $opt{nowrite}) ) { +- logger "\nERROR: $tee does not exist in path, skipping\n"; +- return 20; +- } +- # Check if we have mplayer and lame +- if ( (! $opt{wav}) && (! $opt{raw}) && (! exists_in_path($lame)) ) { +- logger "\nWARNING: Required $lame does not exist, falling back to wav mode\n"; +- $opt{wav} = 1; +- } +- if (! exists_in_path($mplayer)) { +- logger "\nERROR: Required $mplayer does not exist, skipping\n"; +- return 20; +- } ++sub download_programme_itv { ++ my ( $ua, $pid ) = ( @_ ); ++ my %streamdata; ++ ++ # Check for mplayer (required) ++ if (! exists_in_path($mplayer)) { ++ logger "\nERROR: Required $mplayer does not exist, skipping\n"; ++ return 21; ++ } + +- my $url_2 = get_media_stream_data( $pid, $version_pids{default}, 'realaudio' ); ++ $prog{$pid}{dir} = $download_dir{ $prog{$pid}{type} }; ++ $prog{$pid}{pid} = $pid; ++ $prog{$pid}{ext} = 'mp4'; ++ $prog{$pid}{ext} = 'asf' if $opt{raw}; + +- logger "INFO: Version = $prog{$pid}{version}\n" if $opt{verbose}; +- logger "INFO: Stage 2 URL = $url_2\n" if $opt{verbose}; ++ my @url_list = %{get_media_stream_data( $pid, undef, 'itv')}->{streamurl}; + +- # Report error if no versions are available +- if ( ! $url_2 ) { +- logger "ERROR: No Stage 2 URL\n" if $opt{verbose}; +- return 15; +- } ++ # Get and set more meta data - Set the %prog values from metadata if they aren't already set ++ my %metadata = get_pid_metadata($ua, $pid); ++ for ( qw/ name episode available duration thumbnail desc guidance / ) { ++ $prog{$pid}{$_} = $metadata{$_} if ! $prog{$pid}{$_}; ++ } + +- # Determine the correct filenames for this download +- $prog{$pid}{ext} = 'mp3'; +- $prog{$pid}{ext} = 'ra' if $opt{raw}; +- $prog{$pid}{ext} = 'wav' if $opt{wav}; +- $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, ${dir}, $opt{fileprefix} || " - " ); +- logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; +- $prog{$pid}{dir} = $dir; +- my $file_done = "${dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; +- my $file = "${dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; +- $prog{$pid}{filename} = $file_done; +- if ( -f $file_done ) { +- logger "WARNING: File $file_done already exists\n\n"; +- return 1; +- } ++ $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, $prog{$pid}{dir}, $opt{fileprefix} || " " ); ++ logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; ++ # Create a subdir if there are multiple parts ++ if ($#url_list > 0) { ++ $prog{$pid}{dir} .= "/$prog{$pid}{fileprefix}"; ++ logger "INFO: Creating subdirectory $prog{$pid}{dir} for programme\n" if $opt{verbose}; ++ mkpath $prog{$pid}{dir} if ! -d $prog{$pid}{dir}; ++ } ++ my $file_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; ++ my $file = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; ++ $prog{$pid}{filename} = $file_done; + +- # Skip from here if we are only testing downloads +- return 1 if $opt{test}; ++ # Display metadata ++ display_metadata( $prog{$pid}, qw/ pid index name duration available expiry desc / ); + +- # Create symlink filename if required +- my $file_symlink; +- if ( $opt{symlink} ) { +- # Substitute the fields for the pid +- $file_symlink = substitute_fields( $pid, $opt{symlink} ); +- } ++ # Skip from here if we are only testing downloads ++ return 1 if $opt{test}; + +- # Do the audio download +- return download_rtsp_stream( $ua, $url_2, $file, $file_done, $file_symlink, $pid ); +- } ++ return download_stream_mms_video( $ua, (join '|', @url_list), $file, $file_done, $pid ); ++} ++ ++ ++ ++sub download_programme_podcast { ++ my ( $ua, $pid ) = ( @_ ); ++ my %streamdata; ++ ++ $prog{$pid}{dir} = $download_dir{ $prog{$pid}{type} }; ++ ++ # Determine the correct filename and extension for this download ++ my $filename_orig = $pid; ++ $prog{$pid}{ext} = $pid; ++ $filename_orig =~ s|^.+/(.+?)\.\w+$|$1|g; ++ $prog{$pid}{ext} =~ s|^.*\.(\w+)$|$1|g; ++ $prog{$pid}{fileprefix} = generate_download_filename_prefix($pid, $prog{$pid}{dir}, $opt{fileprefix} || " - $filename_orig"); ++ logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; ++ my $file_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; ++ my $file = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; ++ $prog{$pid}{filename} = $file_done; ++ if ( -f $file_done && stat($file_done)->size > $min_download_size ) { ++ logger "WARNING: File $file_done already exists\n\n"; ++ return 1; ++ } ++ ++ # Skip from here if we are only testing downloads ++ return 1 if $opt{test}; ++ ++ # Create symlink filename if required ++ my $file_symlink; ++ if ( $opt{symlink} ) { ++ # Substitute the fields for the pid ++ $file_symlink = substitute_fields( $pid, $opt{symlink} ); ++ } ++ ++ return download_stream_podcast( $ua, $pid, $file, $file_done, $file_symlink ); ++} ++ ++ ++ ++sub download_programme_radio_realaudio { ++ my $ua = shift; ++ my $pid = shift; ++ my %version_pids = %{@_[0]}; ++ my %streamdata; ++ ++ # Check dependancies for radio programme transcoding / streaming ++ # Check if we need 'tee' ++ if ( (! exists_in_path($tee)) && $opt{stdout} && (! $opt{nowrite}) ) { ++ logger "\nERROR: $tee does not exist in path, skipping\n"; ++ return 'abort'; ++ } ++ if (! exists_in_path($mplayer)) { ++ logger "\nWARNING: Required $mplayer does not exist\n"; ++ return 'next'; ++ } ++ # Check if we have mplayer and lame ++ if ( (! $opt{wav}) && (! $opt{raw}) && (! exists_in_path($lame)) ) { ++ logger "\nWARNING: Required $lame does not exist, will save file in wav format\n"; ++ $opt{wav} = 1; ++ } ++ ++ $prog{$pid}{dir} = $download_dir{ $prog{$pid}{type} }; ++ $prog{$pid}{ext} = 'mp3'; ++ $prog{$pid}{ext} = 'ra' if $opt{raw}; ++ $prog{$pid}{ext} = 'wav' if $opt{wav}; + ++ my $url_2 = %{get_media_stream_data( $pid, $version_pids{default}, 'realaudio')}->{streamurl}; ++ ++ # Report error if no versions are available ++ if ( ! $url_2 ) { ++ logger "WARNING: RealAudio version not available\n"; ++ return 'next'; + } else { +- # Type is definitely tv +- $prog{$pid}{type} = 'tv'; +- $dir = $download_dir{ $prog{$pid}{type} }; ++ logger "INFO: Stage 2 URL = $url_2\n" if $opt{verbose}; ++ } ++ ++ # Determine the correct filenames for this download ++ $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, $prog{$pid}{dir}, $opt{fileprefix} || " - " ); ++ logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; ++ my $file_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; ++ my $file = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; ++ $prog{$pid}{filename} = $file_done; ++ if ( -f $file_done ) { ++ logger "WARNING: File $file_done already exists\n\n"; ++ return 'abort'; + } + ++ # Skip from here if we are only testing downloads ++ return 'abort' if $opt{test}; + +- # iPhone mp3/h.264 stream downloading... ++ # Create symlink filename if required ++ my $file_symlink; ++ if ( $opt{symlink} ) { ++ # Substitute the fields for the pid ++ $file_symlink = substitute_fields( $pid, $opt{symlink} ); ++ } + +- # Check if we have vlc - if not use iPhone mode +- if ( $opt{n95} && (! exists_in_path($vlc)) ) { +- logger "\nWARNING: Required $vlc does not exist, falling back to iPhone mode\n"; +- $opt{n95} = 0; +- } ++ # Do the audio download ++ return download_stream_rtsp( $ua, $url_2, $file, $file_done, $file_symlink, $pid ); ++} + + ++ ++sub download_programme_radio_iphone { ++ my $ua = shift; ++ my $pid = shift; ++ my %version_pids = %{@_[0]}; ++ my %streamdata; ++ my $url_2; ++ ++ $prog{$pid}{dir} = $download_dir{ $prog{$pid}{type} }; ++ $prog{$pid}{ext} = 'mp3'; ++ ++ my $url_2 = %{get_media_stream_data( $pid, $version_pids{ $prog{$pid}{version} }, 'iphone')}->{streamurl}; ++ ++ # Report error if no versions are available ++ if ( ! $url_2 ) { ++ logger "WARNING: iPhone stream media not available\n"; ++ return 'next'; ++ } else { ++ logger "INFO: Stage 2 URL = $url_2\n" if $opt{verbose}; ++ } ++ ++ # Determine the correct filenames for this download ++ $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, $prog{$pid}{dir}, $opt{fileprefix} || " - " ); ++ logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; ++ my $file_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; ++ my $file = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; ++ $prog{$pid}{filename} = $file_done; ++ if ( -f $file_done ) { ++ logger "WARNING: File $file_done already exists\n\n"; ++ return 'abort'; ++ } ++ ++ # Skip from here if we are only testing downloads ++ return 'abort' if $opt{test}; ++ ++ # Create symlink filename if required ++ my $file_symlink; ++ if ( $opt{symlink} ) { ++ # Substitute the fields for the pid ++ $file_symlink = substitute_fields( $pid, $opt{symlink} ); ++ } ++ ++ my $return; ++ # Disable proxy here if required ++ $ua->proxy( ['http'] => undef ) if $opt{partialproxy}; ++ $return = download_stream_iphone( $ua, $url_2, $pid, $file, $file_done, $file_symlink, 0 ); ++ # Re-enable proxy here if required ++ $ua->proxy( ['http'] => $proxy_url ) if $opt{partialproxy}; ++ ++ return $return; ++} ++ ++ ++ ++sub download_programme_radio_flashaudio { ++ my $ua = shift; ++ my $pid = shift; ++ my $mode = shift; ++ my %version_pids = %{@_[0]}; ++ my %streamdata; ++ my $url_2; ++ ++ # Force raw mode if ffmpeg is not installed ++ if ( ! exists_in_path($ffmpeg) ) { ++ logger "\nWARNING: $ffmpeg does not exist - not converting flv file\n"; ++ $opt{raw} = 1; ++ } ++ # Disable rtmp modes if rtmpdump does not exist ++ if ( ! exists_in_path($rtmpdump) ) { ++ logger "\nERROR: Required program $rtmpdump does not exist (see http://linuxcentre.net/getiplayer/installation and http://linuxcentre.net/getiplayer/download)\n"; ++ return 'next'; ++ } ++ ++ $prog{$pid}{dir} = $download_dir{ $prog{$pid}{type} }; ++ $prog{$pid}{ext} = 'mp3'; ++ $prog{$pid}{ext} = 'flv' if $opt{raw}; ++ ++ logger "INFO: Trying to get media stream metadata for flashaudio RTMP mode\n" if $opt{verbose}; ++ %streamdata = %{ get_media_stream_data( $pid, $version_pids{ $prog{$pid}{version} }, 'flashaudio') }; ++ $url_2 = $streamdata{streamurl}; ++ if ( ! $url_2 ) { ++ logger "WARNING: No flashaudio version available\n"; ++ return 'next'; ++ } ++ ++ # Determine the correct filenames for this download ++ $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, $prog{$pid}{dir}, $opt{fileprefix} || " - " ); ++ logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; ++ my $file_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; ++ my $file = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; ++ $prog{$pid}{filename} = $file_done; ++ if ( -f $file_done ) { ++ logger "WARNING: File $file_done already exists\n\n"; ++ return 'abort'; ++ } ++ ++ # Skip from here if we are only testing downloads ++ return 'abort' if $opt{test}; ++ ++ # Create symlink filename if required ++ my $file_symlink; ++ if ( $opt{symlink} ) { ++ # Substitute the fields for the pid ++ $file_symlink = substitute_fields( $pid, $opt{symlink} ); ++ } ++ ++ # Do the RTMP flashaudio download ++ return download_stream_rtmp( $ua, $streamdata{streamurl}, $pid, $mode, $streamdata{application}, $streamdata{tcurl}, $streamdata{authstring}, $streamdata{swfurl}, $file, $file_done, $file_symlink ); ++} ++ ++ ++ ++# Usage: download_programme_tv () ++sub download_programme_tv { ++ my $ua = shift; ++ my $pid = shift; ++ my $mode = shift; ++ my %version_pids = %{@_[0]}; ++ my %streamdata; + my $url_2; + my $got_url; + ++ # Check if we have vlc - if not use iPhone mode ++ if ( $opt{vmode} eq 'n95' && (! exists_in_path($vlc)) ) { ++ logger "\nWARNING: Required $vlc does not exist\n"; ++ return 'next'; ++ } ++ # if rtmpdump does not exist ++ if ( $mode =~ /^(rtmp|flash)/ && ! exists_in_path($rtmpdump)) { ++ logger "WARNING: Required program $rtmpdump does not exist (see http://linuxcentre.net/getiplayer/installation and http://linuxcentre.net/getiplayer/download)\n"; ++ return 'next'; ++ } ++ # Force raw mode if ffmpeg is not installed ++ if ( $mode =~ /^(flash|rtmp)/ && ! exists_in_path($ffmpeg)) { ++ logger "\nWARNING: $ffmpeg does not exist - not converting flv file\n"; ++ $opt{raw} = 1; ++ } ++ ++ $prog{$pid}{dir} = $download_dir{ $prog{$pid}{type} }; ++ $prog{$pid}{ext} = 'mov'; ++ # Lookup table to determine which ext to use for different download methods ++ my %stream_ext = ( ++ iphone => 'mov', ++ flashhigh => 'mp4', ++ flashnormal => 'avi', ++ flashwii => 'avi', ++ n95_wifi => '3gp', ++ n95_3g => '3gp', ++ ); ++ $prog{$pid}{ext} = $stream_ext{$mode} if not $opt{raw}; ++ $prog{$pid}{ext} = 'flv' if $mode =~ /^(flash|rtmp)/ && $opt{raw}; ++ + # Do this for each version tried in this order (if they appeared in the content) + for my $version ( @version_search_list ) { + +@@ -1528,52 +2147,41 @@ + logger "INFO: Checking existence of $version version\n"; + $prog{$pid}{version} = $version; + logger "INFO: Version = $prog{$pid}{version}\n" if $opt{verbose}; +- if( ! $opt{rtmp} ) { +- $url_2 = get_iphone_stream_download_url( $ua, $version_pids{$version} ); +- } else { +- $url_2 = get_media_stream_data( $pid, $version_pids{ $prog{$pid}{version} }, 'flashhigh' ); +- } +- $got_url = 1; ++ # Try to get stream data ++ %streamdata = %{ get_media_stream_data( $pid, $version_pids{ $prog{$pid}{version} }, $mode) }; ++ $url_2 = $streamdata{streamurl}; + } + # Break out of loop if we have an actual URL +- last if $got_url && $url_2; +- } +- +- # Report error if no versions are available +- if ( ! $got_url ) { +- logger "ERROR: No versions exist for download\n"; +- return 14; ++ last if $url_2; + } + + # Display media stream data if required + if ( $opt{streaminfo} ) { +- get_media_stream_data( $pid, $version_pids{'default'}, 'all' ); +- return 1; ++ display_stream_info( $pid, $version_pids{ $prog{$pid}{version} }, 'all' ); ++ $opt{quiet} = 1; ++ return 'skip'; + } + +- # Report error if failed to get URL for version +- if ( $got_url && ! $url_2 ) { +- logger "ERROR: No Stage 2 URL\n" if $opt{verbose}; +- # If mp3 audio stream does not exist force realaudio mode and retry +- if ( $usemp3 && ! $opt{mp3audio}) { +- $opt{realaudio} = 1; +- return 'retry'; +- } +- return 15; ++ # Report error if no versions are available ++ if ( ! $url_2 ) { ++ logger "WARNING: No $mode versions available\n"; ++ return 'next'; + } +- ++ + # Determine the correct filenames for this download +- $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, $dir, $opt{fileprefix} || " - " ); ++ $prog{$pid}{fileprefix} = generate_download_filename_prefix( $pid, $prog{$pid}{dir}, $opt{fileprefix} || " - " ); + logger "\rINFO: File name prefix = $prog{$pid}{fileprefix} \n"; +- $prog{$pid}{dir} = $dir; +- my $file_done = "${dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; +- my $file = "${dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; ++ my $file_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.$prog{$pid}{ext}"; ++ my $file = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.$prog{$pid}{ext}"; + $prog{$pid}{filename} = $file_done; + if ( -f $file_done ) { +- logger "WARNING: File $file_done already exists\n\n"; +- return 1; ++ logger "ERROR: File $file_done already exists\n\n"; ++ return 'abort'; + } + ++ # Skip from here if we are only testing downloads ++ return 'abort' if $opt{test}; ++ + # Create symlink filename if required + my $file_symlink; + if ( $opt{symlink} ) { +@@ -1581,53 +2189,34 @@ + $file_symlink = substitute_fields( $pid, $opt{symlink} ); + } + +- # Skip from here if we are only testing downloads +- return 1 if $opt{test}; +- +- # Get subtitles if they exist and are required ++ # Get subtitles if they exist and are required ++ # best to do this before d/l of file so that the subtitles can be enjoyed while download progresses + my $subfile_done; + my $subfile; + if ( $opt{subtitles} ) { +- $subfile_done = "${dir}/$prog{$pid}{fileprefix}.srt"; +- $subfile = "${dir}/$prog{$pid}{fileprefix}.partial.srt"; +- download_subtitles( $ua, $subfile, $version_pids{ $prog{$pid}{version} } ); ++ $subfile_done = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.srt"; ++ $subfile = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}.partial.srt"; ++ $ua->proxy( ['http'] => undef ) if $opt{partialproxy}; ++ download_stream_subtitles( $ua, $subfile, $version_pids{ $prog{$pid}{version} } ); ++ $ua->proxy( ['http'] => $proxy_url ) if $opt{partialproxy}; + } + + my $return; + # Do rtmp download +- if ( $opt{rtmp} ) { +- # Get player url +- my %metadata = get_pid_metadata( $ua, $pid ); +- # get this redirected page and find out where it is redirected to +- my ($ub, $request, $response, $prog_url); +- $ub = new LWP::UserAgent; +- $request = new HTTP::Request HEAD => $metadata{player}; +- $response = $ub->request($request); +- $prog_url = $response->request->url; +- $return = download_h264_rtmp_stream( $ua, $url_2, $prog_url, $file, $file_done, $file_symlink ); ++ if ( $mode =~ /^(rtmp|flash)/ ) { ++ $return = download_stream_rtmp( $ua, $streamdata{streamurl}, $pid, $mode, $streamdata{application}, $streamdata{tcurl}, $streamdata{authstring}, $streamdata{swfurl}, $file, $file_done, $file_symlink ); + + # Do the N95 h.264 download +- } elsif ( $opt{n95} ) { +- my $url = get_media_stream_data( $pid, $version_pids{ $prog{$pid}{version} }, 'n95_wifi' ); +- $return = download_h264_low_stream( $ua, $url, $file, $file_done ); ++ } elsif ( $mode =~ /^n95/ ) { ++ $return = download_stream_h264_low( $ua, $url_2, $file, $file_done, $pid, $mode ); + + # Do the iPhone h.264 download +- } elsif ( $prog{$pid}{type} eq 'tv' ) { +- # Disable proxy here if required +- $ua->proxy( ['http'] => undef ) if $opt{partialproxy}; +- $return = download_iphone_stream( $ua, $url_2, $file, $file_done, $file_symlink, 1 ); +- # Re-enable proxy here if required +- $ua->proxy( ['http'] => $proxy_url ) if $opt{partialproxy}; +- +- # Do the iPhone mp3 download +- } elsif ( $prog{$pid}{type} eq 'radio' ) { ++ } else { + # Disable proxy here if required + $ua->proxy( ['http'] => undef ) if $opt{partialproxy}; +- $return = download_iphone_stream( $ua, $url_2, $file, $file_done, $file_symlink, 0 ); ++ $return = download_stream_iphone( $ua, $url_2, $pid, $file, $file_done, $file_symlink, 1 ); + # Re-enable proxy here if required + $ua->proxy( ['http'] => $proxy_url ) if $opt{partialproxy}; +- # If the iphone mp3 download fails then it's probably not ready yet so retry using realaudio +- $opt{realaudio} = 1 if $return eq 'retry'; + } + + # Rename the subtitle file accordingly +@@ -1647,13 +2236,12 @@ + + + # Download Subtitles, convert to srt(SubRip) format and apply time offset +-sub download_subtitles { ++sub download_stream_subtitles { + my ( $ua, $file, $verpid ) = @_; + my $suburl; + my $subs; + logger "INFO: Getting Subtitle metadata for $verpid\n" if $opt{verbose}; +- $suburl = get_media_stream_data( undef, $verpid, 'subtitles' ); +- ++ $suburl = %{get_media_stream_data( undef, $verpid, 'subtitles')}->{streamurl}; + # Return if we have no url + if (! $suburl) { + logger "INFO: Subtitles not available\n"; +@@ -1793,12 +2381,12 @@ + + # Get title + # Amazon with Bruce Parry: Episode 1 +- my ( $title, $type ); ++ my ( $title, $prog_type ); + $title = $1 if $xml =~ m{\s*(.+?)\s*<\/title>}; + + # Get type +- $type = 'tv' if grep /kind="programme"/, $xml; +- $type = 'radio' if grep /kind="radioProgramme"/, $xml; ++ $prog_type = 'tv' if grep /kind="programme"/, $xml; ++ $prog_type = 'radio' if grep /kind="radioProgramme"/, $xml; + + # Split into <item kind="programme"> sections + for ( split /<item\s+kind="(radioProgramme|programme)"/, $xml ) { +@@ -1812,310 +2400,389 @@ + $version_pids{$version} = $verpid; + logger "INFO: Version: $version, VersionPid: $verpid\n" if $opt{verbose}; + } ++ ++ # Extract Long Name, e.g.: iplayer.episode.setTitle("DIY SOS: Series 16: Swansea"), Strip off the episode name ++ $title =~ s/^(.+):.*?$/$1/g; ++ + # Add to prog hash + $prog{$pid}{versions} = join ',', keys %version_pids; +- return ( $type, $title, %version_pids ); ++ return ( $prog_type, $title, %version_pids ); + } + + + + # Gets media streams data for this version pid +-# $media = all|flashhigh|flashnormal|iphone|flashwii|n95_wifi|n95_3g|mobile|flashaudio|realaudio|wma|subtitles ++# $media = all|itv|flashhigh|flashnormal|iphone|flashwii|n95_wifi|n95_3g|mobile|flashaudio|realaudio|wma|subtitles + sub get_media_stream_data { + my ( $pid, $verpid, $media ) = @_; +- my %streams; +- my $ua = LWP::UserAgent->new(); ++ my %data; ++ + # Setup user agent with redirection enabled +- $ua->timeout([$lwp_request_timeout]); +- $ua->proxy( ['http'] => $proxy_url ); +- $ua->cookie_jar( HTTP::Cookies->new( file => $cookiejar, autosave => 1, ignore_discard => 1 ) ); ++ my $ua = create_ua('desktop'); + $opt{quiet} = 0 if $opt{streaminfo}; +- logger "INFO: Getting media stream metadata for $prog{$pid}{name} - $prog{$pid}{episode}, $verpid\n" if $pid; +- my $xml1 = request_url_retry($ua, $media_stream_data_prefix.$verpid, 3, '', ''); +- logger "\n$xml1\n" if $opt{debug}; +- # flatten +- $xml1 =~ s/\n/ /g; + +- for my $xml ( split /<media/, $xml1 ) { +- $xml = "<media".$xml; ++ # ITV streams ++ if ( $prog{$pid}{type} eq 'itv' ) { ++ my $prog_type = 'itv'; ++ $data{$prog_type}{type} = 'ITV ASF Video stream'; ++ $opt{quiet} = 1 if $opt{streaminfo}; ++ $data{$prog_type}{streamurl} = join('|', get_stream_url_itv($ua, $pid) ); ++ $opt{quiet} = 0 if $opt{streaminfo}; ++ ++ # BBC streams ++ } else { ++ my $xml1 = request_url_retry($ua, $media_stream_data_prefix.$verpid, 3, '', ''); ++ logger "\n$xml1\n" if $opt{debug}; ++ # flatten ++ $xml1 =~ s/\n/ /g; ++ ++ for my $xml ( split /<media/, $xml1 ) { ++ $xml = "<media".$xml; ++ my $prog_type; ++ ++ # h.264 high quality stream ++ # <media kind="video" ++ # width="640" ++ # height="360" ++ # type="video/mp4" ++ # encoding="h264" > ++ # <connection ++ # priority="10" ++ # application="bbciplayertok" ++ # kind="level3" ++ # server="bbciplayertokfs.fplive.net" ++ # identifier="mp4:b000zxf4-H26490898078" ++ # authString="d52f77fede048f1ffd6587fd47446dee" ++ # /> ++ # application: bbciplayertok ++ # tcURL: rtmp://bbciplayertokfs.fplive.net:80/bbciplayertok ++ if ( $media =~ /^(flashhigh|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/mp4".+?encoding="h264".+?application="(.+?)".+?kind="level3"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { ++ $prog_type = 'flashhigh'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{application}, $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{authstring} ) = ( $1, $2, $3, $4 ); ++ $data{$prog_type}{type} = 'Flash RTMP H.264 high quality stream'; ++ $data{$prog_type}{tcurl} = "rtmp://$data{$prog_type}{server}:80/$data{$prog_type}{application}"; ++ $data{$prog_type}{swfurl} = "http://www.bbc.co.uk/emp/9player.swf?revision=7276"; ++ $data{$prog_type}{streamurl} = "rtmp://$data{$prog_type}{server}:1935/ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ } ++ ++ # h.264 normal quality stream ++ # <media kind="video" ++ # width="640" ++ # height="360" ++ # type="video/x-flv" ++ # encoding="vp6" > ++ # <connection ++ # priority="10" ++ # kind="akamai" ++ # server="cp41752.edgefcs.net" ++ # identifier="secure/b000zxf4-streaming90898078" ++ # authString="daEdSdgbcaibFa7biaobCaYdadyaTamazbq-biXsum-cCp-FqrECnEoGBwFvwG" ++ # /> ++ # </media> ++ # ++ # application (e.g.): ondemand?_fcs_vhost=cp41752.edgefcs.net&auth=daEcia8aQaRardxdwb_dCbvc0cPbLavc2cL-bjw5rj-cCp-JnlDCnzn.MEqHpxF&aifp=v001&slist=secure/b000gy717streaming103693754 ++ # tcURL: rtmp://88.221.26.165:80/ondemand?_fcs_vhost=cp41752.edgefcs.net&auth=daEcia8aQaRardxdwb_dCbvc0cPbLavc.2cL-bjw5rj-cCp-JnlDCnznMEqHpxF&aifp=v001&slist=secure/b000gy717streaming103693754 ++ if ( $media =~ /^(flashnormal|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/x-flv".+?encoding="vp6".+?kind="akamai"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { ++ $prog_type = 'flashnormal'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{authstring} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{application} = "ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ $data{$prog_type}{type} = 'Flash RTMP H.264 normal quality stream'; ++ $data{$prog_type}{tcurl} = "rtmp://$data{$prog_type}{server}:80/$data{$prog_type}{application}"; ++ $data{$prog_type}{swfurl} = "http://www.bbc.co.uk/emp/9player.swf?revision=7276"; ++ $data{$prog_type}{streamurl} = "rtmp://$data{$prog_type}{server}:1935/ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ } ++ ++ # Wii h.264 standard quality stream ++ #<media kind="video" ++ # width="512" ++ # height="288" ++ # type="video/x-flv" ++ # encoding="spark" > ++ # <connection ++ # priority="10" ++ # kind="akamai" ++ # server="cp41752.edgefcs.net" ++ # identifier="secure/5242138581547639062" ++ # authString="daEd8dLbGaPaZdzdNcwd.auaydJcxcHandp-biX5YL-cCp-BqsECnxnGEsHwyE" ++ # /> ++ #</media> ++ # application (e.g.): ondemand?_fcs_vhost=cp41752.edgefcs.net&auth=daEcpc6cYbhdIakdWduc6bJdPbydbazdmdp-bjxPBF-cCp-GptFAoDqJBnHvzC&aifp=v001&slist=secure/b000g884xstreaming101052333 ++ # tcURL: rtmp: //88.221.26.173:1935/ondemand?_fcs_vhost=cp41752.edgefcs.net&auth=daEcpc6cYbhdIakdWduc6bJdPbydbazdmdp-bjxPBF-cCp-GptFAoDqJBnHvzC&aifp=v001&slist=secure/b000g884xstreaming101052333 ++ # swfUrl: http://www.bbc.co.uk/emp/iplayer/7player.swf?revision=3897 ++ if ( $media =~ /^(flashwii|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/x-flv".+?encoding="spark".+?kind="akamai"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { ++ $prog_type = 'flashwii'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{authstring} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{application} = "ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ $data{$prog_type}{type} = 'Flash RTMP H.264 Wii stream'; ++ $data{$prog_type}{tcurl} = "rtmp://$data{$prog_type}{server}:1935/$data{$prog_type}{application}"; ++ $data{$prog_type}{swfurl} = "http://www.bbc.co.uk/emp/iplayer/7player.swf?revision=3897"; ++ $data{$prog_type}{streamurl} = "rtmp://$data{$prog_type}{server}:1935/ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ } ++ ++ # iPhone h.264/mp3 stream ++ #<media kind="video" ++ # width="480" ++ # height="272" ++ # type="video/mp4" ++ # encoding="h264" > ++ # <connection ++ # priority="10" ++ # kind="sis" ++ # server="http://www.bbc.co.uk/mediaselector/3/auth/stream/" ++ # identifier="5242138581547639062" ++ # href="http://www.bbc.co.uk/mediaselector/3/auth/stream/5242138581547639062.mp4" ++ # /> ++ #</media> ++ if ( $media =~ /^(iphone|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/mp4".+?encoding="h264".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'iphone'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{streamurl} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{type} = 'iPhone stream'; ++ } ++ ++ # Nokia N95 h.264 low quality stream (WiFi) ++ #<media kind="video" ++ # type="video/mpeg" ++ # encoding="h264" > ++ # <connection ++ # priority="10" ++ # kind="sis" ++ # server="http://www.bbc.co.uk/mediaselector/4/sdp/" ++ # identifier="b00108ld/iplayer_streaming_n95_wifi" ++ # href="http://www.bbc.co.uk/mediaselector/4/sdp/b00108ld/iplayer_streaming_n95_wifi" ++ # /> ++ #</media> ++ if ( $media =~ /^(n95_wifi|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/mpeg".+?encoding="h264".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'n95_wifi'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{href} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{type} = 'Nokia N95 h.264 low quality WiFi stream'; ++ $opt{quiet} = 1 if $opt{streaminfo}; ++ chomp( $data{$prog_type}{streamurl} = request_url_retry($ua, $data{$prog_type}{href}, 2, '', '') ); ++ $opt{quiet} = 0 if $opt{streaminfo}; ++ } ++ ++ # Nokia N95 h.264 low quality stream (3G) ++ #<media kind="" ++ # expires="2008-10-30T12:29:00+00:00" ++ # type="video/mpeg" ++ # encoding="h264" > ++ # <connection ++ # priority="10" ++ # kind="sis" ++ # server="http://www.bbc.co.uk/mediaselector/4/sdp/" ++ # identifier="b009tzxx/iplayer_streaming_n95_3g" ++ # href="http://www.bbc.co.uk/mediaselector/4/sdp/b009tzxx/iplayer_streaming_n95_3g" ++ # /> ++ #</media> ++ if ( $media =~ /^(n95_3g|all)$/ && $xml =~ m{<media\s+kind="".+?type="video/mpeg".+?encoding="h264".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'n95_3g'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{href} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{type} = 'Nokia N95 h.264 low quality 3G stream'; ++ $opt{quiet} = 1 if $opt{streaminfo}; ++ chomp( $data{$prog_type}{streamurl} = request_url_retry($ua, $data{$prog_type}{href}, 2, '', '') ); ++ $opt{quiet} = 0 if $opt{streaminfo}; ++ } ++ ++ # Mobile WMV DRM ++ #<media kind="video" ++ # expires="2008-10-20T21:59:00+01:00" ++ # type="video/wmv" > ++ # <connection ++ # priority="10" ++ # kind="licence" ++ # server="http://iplayldsvip.iplayer.bbc.co.uk/WMLicenceIssuer/LicenceDelivery.asmx" ++ # identifier="0A1CA43B-98A8-43EA-B684-DA06672C0575" ++ # href="http://iplayldsvip.iplayer.bbc.co.uk/WMLicenceIssuer/LicenceDelivery.asmx/0A1CA43B-98A8-43EA-B684-DA06672C0575" ++ # /> ++ #<connection ++ # priority="10" ++ # kind="sis" ++ # server="http://directdl.iplayer.bbc.co.uk/windowsmedia/" ++ # identifier="AmazonwithBruceParry_Episode5_200810132100_mobile" ++ # href="http://directdl.iplayer.bbc.co.uk/windowsmedia/AmazonwithBruceParry_Episode5_200810132100_mobile.wmv" ++ # /> ++ #</media> ++ if ( $media =~ /^(mobile|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/wmv".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'mobile'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{streamurl} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{type} = 'Mobile WMV DRM stream'; ++ } ++ ++ # Audio rtmp mp3 ++ #<media kind="audio" ++ # type="audio/mpeg" ++ # encoding="mp3" > ++ # <connection ++ # priority="10" ++ # kind="akamai" ++ # server="cp48181.edgefcs.net" ++ # identifier="mp3:secure/radio1/RBN2_mashup_b00d67h9_2008_09_05_22_14_25" ++ # authString="daEbQa1c6cda6aHdudxagcCcUcVbvbncmdK-biXtzq-cCp-DnoFIpznNBqHnzF" ++ # /> ++ #</media> ++ #app: ondemand?_fcs_vhost=cp48181.edgefcs.net&auth=daEasducLbidOancObacmc0amd6d7ana8c6-bjx.9v-cCp-JqlFHoEq.FBqGnxC&aifp=v001&slist=secure/radio1/RBN2_radio_1_-_wednesday_1000_b00g3xcj_2008_12_31_13_21_49 ++ #swfUrl: http://www.bbc.co.uk/emp/9player.swf?revision=7276 ++ #tcUrl: rtmp://92.122.210.173:1935/ondemand?_fcs_vhost=cp48181.edgefcs.net&auth=daEasducLbidOancObacmc0amd6d7ana8c6-bjx.9v-cCp-JqlFHoEqFBqGnxC&aifp=v001&slist=secure/radio1/RBN2_radio_1_-_wednesday_1.000_b00g3xcj_2008_12_31_13_21_49 ++ #pageUrl: http://www.bbc.co.uk/iplayer/episode/b00g3xp7/Annie_Mac_31_12_2008/ ++ if ( $media =~ /^(flashaudio|all)$/ && $xml =~ m{<media\s+kind="audio".+?type="audio/mpeg".+?encoding="mp3".+?kind="akamai"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { ++ $prog_type = 'flashaudio'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{authstring} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{streamurl} = "rtmp://$data{$prog_type}{server}:1935/ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ # Remove offending mp3: at the start of the identifier (don't remove in stream url) ++ $data{$prog_type}{identifier} =~ s/^mp3://; ++ $data{$prog_type}{application} = "ondemand?_fcs_vhost=$data{$prog_type}{server}&auth=$data{$prog_type}{authstring}&aifp=v001&slist=$data{$prog_type}{identifier}"; ++ $data{$prog_type}{type} = 'RTMP MP3 stream'; ++ $data{$prog_type}{tcurl} = "rtmp://$data{$prog_type}{server}:1935/$data{$prog_type}{application}"; ++ $data{$prog_type}{swfurl} = "http://www.bbc.co.uk/emp/9player.swf?revision=7276"; ++ } ++ ++ # RealAudio stream ++ #<media kind="audio" ++ # type="audio/real" ++ # encoding="real" > ++ # <connection ++ # priority="10" ++ # kind="sis" ++ # server="http://www.bbc.co.uk" ++ # identifier="/radio/aod/playlists/9h/76/d0/0b/2000_bbc_radio_one" ++ # href="http://www.bbc.co.uk/radio/aod/playlists/9h/76/d0/0b/2000_bbc_radio_one.ram" ++ # /> ++ #</media> ++ # Realaudio for worldservice ++ #<media kind="" ++ #type="audio/real" ++ #encoding="real" > ++ #<connection ++ # priority="10" ++ # kind="edgesuite" ++ # server="http://http-ws.bbc.co.uk.edgesuite.net" ++ # identifier="/generatecssram.esi?file=/worldservice/css/nb/410060838.ra" ++ # href="http://http-ws.bbc.co.uk.edgesuite.net/generatecssram.esi?file=/worldservice/css/nb/410060838.ra" ++ #/> ++ #</media> ++ #</mediaSelection> ++ if ( $media =~ /^(realaudio|all)$/ && $xml =~ m{<media\s+kind="(audio|)".+?type="audio/real".+?encoding="real".+?kind="(sis|edgesuite)"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'realaudio'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{href} ) = ( $3, $4, $5 ); ++ $data{$prog_type}{type} = 'RealAudio RTSP stream'; ++ $opt{quiet} = 1 if $opt{streaminfo}; ++ chomp( $data{$prog_type}{streamurl} = request_url_retry($ua, $data{$prog_type}{href}, 2, '', '') ); ++ $data{$prog_type}{streamurl} =~ s/[\s\n]//g; ++ $opt{quiet} = 0 if $opt{streaminfo}; ++ } ++ ++ # Radio WMA (low quality) ++ #<mediaSelection xmlns="http://bbc.co.uk/2008/mp/mediaselection"> ++ #<media kind="" ++ # type="audio/wma" ++ # encoding="wma" > ++ # <connection ++ # priority="10" ++ # kind="edgesuite" ++ # server="http://http-ws.bbc.co.uk.edgesuite.net" ++ # identifier="/generatecssasx.esi?file=/worldservice/css/nb/410060838" ++ # href="http://http-ws.bbc.co.uk.edgesuite.net/generatecssasx.esi?file=/worldservice/css/nb/410060838.wma" ++ # /> ++ #</media> ++ if ( $media =~ /^(wma|all)$/ && $xml =~ m{<media\s+kind="(audio|)".+?type="audio/wma".+?encoding="wma".+?kind="(sis|edgesuite)"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'wma'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{href} ) = ( $3, $4, $5 ); ++ $data{$prog_type}{type} = 'WMA MMS stream'; ++ $opt{quiet} = 1 if $opt{streaminfo}; ++ chomp( $data{$prog_type}{streamurl} = request_url_retry($ua, $data{$prog_type}{href}, 2, '', '') ); ++ $data{$prog_type}{streamurl} =~ s/[\s\n]//g; ++ # HREF="mms://a1899.v394403.c39440.g.vm.akamaistream.net/7/1899/39440/1/bbcworldservice.download.akamai.com/39440//worldservice/css/nb/410060838.wma" ++ $data{$prog_type}{streamurl} =~ s/^.*href=\"(.+?)\".*$/$1/gi; ++ $opt{quiet} = 0 if $opt{streaminfo}; ++ } ++ ++ # Subtitles stream ++ #<media kind="captions" ++ # type="application/ttaf+xml" > ++ # <connection ++ # priority="10" ++ # kind="http" ++ # server="http://www.bbc.co.uk/iplayer/subtitles/" ++ # identifier="b0008dc8rstreaming89808204.xml" ++ # href="http://www.bbc.co.uk/iplayer/subtitles/b0008dc8rstreaming89808204.xml" ++ # /> ++ #</media> ++ if ( $media =~ /^(subtitles|all)$/ && $xml =~ m{<media\s+kind="captions".+?type="application/ttaf\+xml".+?kind="http"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { ++ $prog_type = 'subtitles'; ++ logger "DEBUG: Processing $prog_type stream\n" if $opt{verbose}; ++ ( $data{$prog_type}{server}, $data{$prog_type}{identifier}, $data{$prog_type}{streamurl} ) = ( $1, $2, $3 ); ++ $data{$prog_type}{type} = 'Subtitles stream'; ++ } ++ } ++ # Do iphone redirect check regardless of an xml entry for iphone - sometimes the iphone streams exist regardless ++ if ( my $streamurl = get_stream_url_iphone($ua, $verpid) ) { ++ my $prog_type = 'iphone'; ++ $data{$prog_type}{type} = 'iPhone stream'; ++ # Get iphone redirect ++ $data{$prog_type}{streamurl} = $streamurl; ++ } else { ++ logger "DEBUG: No iphone redirect stream\n" if $opt{verbose}; ++ } ++ ++ } ++ # Return a hash with media => url if 'all' is specified - otherwise just the specified url ++ if ( $media eq 'all' ) { ++ return %data; ++ } else { ++ # Make sure this hash exists before we pass it back... ++ $data{$media}{exists} = 0 if not defined $data{$media}; ++ return $data{$media}; ++ } ++} ++ + +- my ($server, $authstring, $identifier, $href); + +- # h.264 high quality stream +- # <media kind="video" +- # width="640" +- # height="360" +- # type="video/mp4" +- # encoding="h264" > +- # <connection +- # priority="10" +- # application="bbciplayertok" +- # kind="level3" +- # server="bbciplayertokfs.fplive.net" +- # identifier="mp4:b000zxf4-H26490898078" +- # authString="d52f77fede048f1ffd6587fd47446dee" +- # /> +- if ( $media =~ /^(flashhigh|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/mp4".+?encoding="h264".+?kind="level3"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { +- ( $server, $identifier, $authstring ) = ( $1, $2, $3 ); +- logger "INFO: RTMP h.264 high quality stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: authstring=$authstring\n" if $opt{verbose}; +- $streams{'flashhigh'} = "rtmp://${server}:1935/ondemand?_fcs_vhost=${server}&auth=${authstring}&aifp=v001&slist=${identifier}"; +- logger "INFO: RTMP high quality stream URL: $streams{'flashhigh'}\n"; +- } +- +- # h.264 normal quality stream +- # <media kind="video" +- # width="512" +- # height="288" +- # type="video/x-flv" +- # encoding="vp6" > +- # <connection +- # priority="10" +- # kind="akamai" +- # server="cp41752.edgefcs.net" +- # identifier="secure/b000zxf4-streaming90898078" +- # authString="daEdSdgbcaibFa7biaobCaYdadyaTamazbq-biXsum-cCp-FqrECnEoGBwFvwG" +- # /> +- # </media> +- # +- if ( $media =~ /^(flashnormal|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/x-flv".+?encoding="vp6".+?kind="akamai"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { +- ( $server, $identifier, $authstring ) = ( $1, $2, $3 ); +- logger "INFO: RTMP h.264 normal quality stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: authstring=$authstring\n" if $opt{verbose}; +- $streams{'flashnormal'} = "rtmp://${server}:1935/ondemand?_fcs_vhost=${server}&auth=${authstring}&aifp=v001&slist=${identifier}"; +- logger "INFO: RTMP normal quality stream URL: $streams{'flashnormal'}\n"; +- } +- +- # Wii h.264 standard quality stream +- #<media kind="video" +- # width="512" +- # height="288" +- # type="video/x-flv" +- # encoding="spark" > +- # <connection +- # priority="10" +- # kind="akamai" +- # server="cp41752.edgefcs.net" +- # identifier="secure/5242138581547639062" +- # authString="daEd8dLbGaPaZdzdNcwd.auaydJcxcHandp-biX5YL-cCp-BqsECnxnGEsHwyE" +- # /> +- #</media> +- if ( $media =~ /^(flashwii|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/x-flv".+?encoding="spark".+?kind="akamai"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { +- ( $server, $identifier, $authstring ) = ( $1, $2, $3 ); +- logger "INFO: RTMP Wii normal quality stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: authstring=$authstring\n" if $opt{verbose}; +- $streams{'flashwii'} = "rtmp://${server}:1935/ondemand?_fcs_vhost=${server}&auth=${authstring}&aifp=v001&slist=${identifier}"; +- logger "INFO: RTMP Wii normal quality stream URL: $streams{'flashwii'}\n"; +- } +- +- # iPhone h.264/mp3 stream +- #<media kind="video" +- # width="480" +- # height="272" +- # type="video/mp4" +- # encoding="h264" > +- # <connection +- # priority="10" +- # kind="sis" +- # server="http://www.bbc.co.uk/mediaselector/3/auth/stream/" +- # identifier="5242138581547639062" +- # href="http://www.bbc.co.uk/mediaselector/3/auth/stream/5242138581547639062.mp4" +- # /> +- #</media> +- if ( $media =~ /^(iphone|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/mp4".+?encoding="h264".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $1, $2, $3 ); +- logger "INFO: iPhone stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'iphone'} = "$href"; +- logger "INFO: iPhone stream URL: $streams{'iphone'}\n"; +- } +- +- # Nokia N95 h.264 low quality stream (WiFi) +- #<media kind="video" +- # type="video/mpeg" +- # encoding="h264" > +- # <connection +- # priority="10" +- # kind="sis" +- # server="http://www.bbc.co.uk/mediaselector/4/sdp/" +- # identifier="b00108ld/iplayer_streaming_n95_wifi" +- # href="http://www.bbc.co.uk/mediaselector/4/sdp/b00108ld/iplayer_streaming_n95_wifi" +- # /> +- #</media> +- if ( $media =~ /^(n95_wifi|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/mpeg".+?encoding="h264".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $1, $2, $3 ); +- $opt{quiet} = 1 if $opt{streaminfo}; +- chomp( my $rtsp = request_url_retry($ua, $href, 2, '', '') ); +- $opt{quiet} = 0 if $opt{streaminfo}; +- logger "INFO: Nokia N95 h.264 low quality WiFi stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'n95_wifi'} = "$rtsp"; +- logger "INFO: Nokia N95 h.264 low quality WiFi stream URL: $streams{'n95_wifi'}\n"; +- } +- +- # Nokia N95 h.264 low quality stream (3G) +- #<media kind="" +- # expires="2008-10-30T12:29:00+00:00" +- # type="video/mpeg" +- # encoding="h264" > +- # <connection +- # priority="10" +- # kind="sis" +- # server="http://www.bbc.co.uk/mediaselector/4/sdp/" +- # identifier="b009tzxx/iplayer_streaming_n95_3g" +- # href="http://www.bbc.co.uk/mediaselector/4/sdp/b009tzxx/iplayer_streaming_n95_3g" +- # /> +- #</media> +- if ( $media =~ /^(n95_3g|all)$/ && $xml =~ m{<media\s+kind="".+?type="video/mpeg".+?encoding="h264".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $1, $2, $3 ); +- $opt{quiet} = 1 if $opt{streaminfo}; +- chomp( my $rtsp = request_url_retry($ua, $href, 2, '', '') ); +- $opt{quiet} = 0 if $opt{streaminfo}; +- logger "INFO: Nokia N95 h.264 low quality 3G stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'n95_3g'} = "$rtsp"; +- logger "INFO: Nokia N95 h.264 low quality 3G stream URL: $streams{'n95_3g'}\n"; +- } +- +- +- +- # Mobile WMV DRM +- #<media kind="video" +- # expires="2008-10-20T21:59:00+01:00" +- # type="video/wmv" > +- # <connection +- # priority="10" +- # kind="licence" +- # server="http://iplayldsvip.iplayer.bbc.co.uk/WMLicenceIssuer/LicenceDelivery.asmx" +- # identifier="0A1CA43B-98A8-43EA-B684-DA06672C0575" +- # href="http://iplayldsvip.iplayer.bbc.co.uk/WMLicenceIssuer/LicenceDelivery.asmx/0A1CA43B-98A8-43EA-B684-DA06672C0575" +- # /> +- #<connection +- # priority="10" +- # kind="sis" +- # server="http://directdl.iplayer.bbc.co.uk/windowsmedia/" +- # identifier="AmazonwithBruceParry_Episode5_200810132100_mobile" +- # href="http://directdl.iplayer.bbc.co.uk/windowsmedia/AmazonwithBruceParry_Episode5_200810132100_mobile.wmv" +- # /> +- #</media> +- if ( $media =~ /^(mobile|all)$/ && $xml =~ m{<media\s+kind="video".+?type="video/wmv".+?kind="sis"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $1, $2, $3 ); +- logger "INFO: Mobile WMV DRM stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'mobile'} = "$href"; +- logger "INFO: Mobile WMV DRM stream URL: $streams{'mobile'}\n"; +- } +- +- # Audio rtmp mp3 +- #<media kind="audio" +- # type="audio/mpeg" +- # encoding="mp3" > +- # <connection +- # priority="10" +- # kind="akamai" +- # server="cp48181.edgefcs.net" +- # identifier="mp3:secure/radio1/RBN2_mashup_b00d67h9_2008_09_05_22_14_25" +- # authString="daEbQa1c6cda6aHdudxagcCcUcVbvbncmdK-biXtzq-cCp-DnoFIpznNBqHnzF" +- # /> +- #</media> +- if ( $media =~ /^(flashaudio|all)$/ && $xml =~ m{<media\s+kind="audio".+?type="audio/mpeg".+?encoding="mp3".+?kind="akamai"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?authString="(.+?)"} ) { +- ( $server, $identifier, $authstring ) = ( $1, $2, $3 ); +- # Remove offending mp3: at the start of the identifier +- $identifier =~ s/^mp3://; +- logger "INFO: RTMP MP3 stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: authstring=$authstring\n" if $opt{verbose}; +- $streams{'flashaudio'} = "rtmp://${server}:1935/ondemand?_fcs_vhost=${server}&auth=${authstring}&aifp=v001&slist=${identifier}"; +- logger "INFO: RTMP stream URL: $streams{'flashaudio'}\n"; +- } +- +- # RealAudio stream +- #<media kind="audio" +- # type="audio/real" +- # encoding="real" > +- # <connection +- # priority="10" +- # kind="sis" +- # server="http://www.bbc.co.uk" +- # identifier="/radio/aod/playlists/9h/76/d0/0b/2000_bbc_radio_one" +- # href="http://www.bbc.co.uk/radio/aod/playlists/9h/76/d0/0b/2000_bbc_radio_one.ram" +- # /> +- #</media> +- # Realaudio for worldservice +- #<media kind="" +- #type="audio/real" +- #encoding="real" > +- #<connection +- # priority="10" +- # kind="edgesuite" +- # server="http://http-ws.bbc.co.uk.edgesuite.net" +- # identifier="/generatecssram.esi?file=/worldservice/css/nb/410060838.ra" +- # href="http://http-ws.bbc.co.uk.edgesuite.net/generatecssram.esi?file=/worldservice/css/nb/410060838.ra" +- #/> +- #</media> +- #</mediaSelection> +- if ( $media =~ /^(realaudio|all)$/ && $xml =~ m{<media\s+kind="(audio|)".+?type="audio/real".+?encoding="real".+?kind="(sis|edgesuite)"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $3, $4, $5 ); +- $opt{quiet} = 1 if $opt{streaminfo}; +- chomp( my $rtsp = request_url_retry($ua, $href, 2, '', '') ); +- $rtsp =~ s/[\s\n]//g; +- $opt{quiet} = 0 if $opt{streaminfo}; +- logger "INFO: RealAudio RTSP stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'realaudio'} = "$rtsp"; +- logger "INFO: RealAudio RTSP stream URL: $streams{'realaudio'}\n"; +- } +- +- +- # Radio WMA (low quality) +- #<mediaSelection xmlns="http://bbc.co.uk/2008/mp/mediaselection"> +- #<media kind="" +- # type="audio/wma" +- # encoding="wma" > +- # <connection +- # priority="10" +- # kind="edgesuite" +- # server="http://http-ws.bbc.co.uk.edgesuite.net" +- # identifier="/generatecssasx.esi?file=/worldservice/css/nb/410060838" +- # href="http://http-ws.bbc.co.uk.edgesuite.net/generatecssasx.esi?file=/worldservice/css/nb/410060838.wma" +- # /> +- #</media> +- if ( $media =~ /^(wma|all)$/ && $xml =~ m{<media\s+kind="(audio|)".+?type="audio/wma".+?encoding="wma".+?kind="(sis|edgesuite)"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $3, $4, $5 ); +- $opt{quiet} = 1 if $opt{streaminfo}; +- chomp( my $mms = request_url_retry($ua, $href, 2, '', '') ); +- $mms =~ s/[\n]//g; +- # HREF="mms://a1899.v394403.c39440.g.vm.akamaistream.net/7/1899/39440/1/bbcworldservice.download.akamai.com/39440//worldservice/css/nb/410060838.wma" +- $mms =~ s/^.*href=\"(.+?)\".*$/$1/gi; +- $opt{quiet} = 0 if $opt{streaminfo}; +- logger "INFO: WMA MMS stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'wma'} = "$mms"; +- logger "INFO: WMA MMS stream URL: $streams{'wma'}\n"; +- } +- +- +- # Subtitles stream +- #<media kind="captions" +- # type="application/ttaf+xml" > +- # <connection +- # priority="10" +- # kind="http" +- # server="http://www.bbc.co.uk/iplayer/subtitles/" +- # identifier="b0008dc8rstreaming89808204.xml" +- # href="http://www.bbc.co.uk/iplayer/subtitles/b0008dc8rstreaming89808204.xml" +- # /> +- #</media> +- if ( $media =~ /^(subtitles|all)$/ && $xml =~ m{<media\s+kind="captions".+?type="application/ttaf\+xml".+?kind="http"\s+server="(.+?)"\s+?identifier="(.+?)"\s+?href="(.+?)"} ) { +- ( $server, $identifier, $href ) = ( $1, $2, $3 ); +- logger "INFO: Subtitles stream:\nINFO: server=$server\nINFO: identifier=$identifier\nINFO: href=$href\n" if $opt{verbose}; +- $streams{'subtitles'} = "$href"; +- logger "INFO: Subtitles stream URL: $streams{'subtitles'}\n"; ++sub display_stream_info { ++ my ($pid, $verpid, $media) = (@_); ++ logger "INFO: Getting media stream metadata for $prog{$pid}{name} - $prog{$pid}{episode}, $verpid\n" if $pid; ++ my %data = get_media_stream_data( $pid, $verpid, $media); ++ # Print out stream data ++ for my $prog_type (sort keys %data) { ++ logger "stream: $prog_type\n"; ++ for my $entry ( sort keys %{ $data{$prog_type} } ) { ++ logger sprintf("%-11s %s\n", $entry.':', $data{$prog_type}{$entry} ); + } ++ logger "\n"; + } +- logger "\n" if $opt{streaminfo}; +- $opt{quiet} = 1 if $opt{streaminfo}; ++ return 0; ++} + +- # Return a hash with media => url if 'all' is specified - otherwise just the specified url +- return %streams if $media eq 'all'; +- return $streams{$media}; ++ ++ ++# Displays specified metadata from supplied hash ++# Usage: display_metadata( <hashref>, <array of elements to display> ) ++sub display_metadata { ++ my %data = %{$_[0]}; ++ shift; ++ my @keys = @_; ++ @keys = keys %data if $#_ < 0; ++ logger "\n"; ++ for (@keys) { ++ logger sprintf "%-15s %s\n", ucfirst($_).':', $data{$_} if $data{$_}; ++ } ++ return 0; + } + + + + # Actually do the h.264/mp3 downloading + # ( $ua, $pid, $url_2, $file, $file_done, '0|1 == rearrange moov' ) +-sub download_iphone_stream { +- my ( $ua, $url_2, $file, $file_done, $file_symlink, $rearrange ) = @_; ++sub download_stream_iphone { ++ my ( $ua, $url_2, $pid, $file, $file_done, $file_symlink, $rearrange ) = @_; + + # Stage 3a: Download 1st byte to get exact file length + logger "INFO: Stage 3 URL = $url_2\n" if $opt{verbose}; +@@ -2132,53 +2799,44 @@ + my $req = HTTP::Request->new ('GET', $url_2, $h); + my $res = $ua->request($req); + # e.g. Content-Range: bytes 0-1/181338136 (return if no content length returned) +- my $file_len = $res->header("Content-Range"); +- if ( ! $file_len ) { +- logger "ERROR: No Content-Range was obtained\n" if $opt{verbose}; ++ my $download_len = $res->header("Content-Range"); ++ if ( ! $download_len ) { ++ #logger "ERROR: No Content-Range was obtained\n" if $opt{verbose}; ++ logger "WARNING: iphone version not available\n"; + return 'retry' + } +- $file_len =~ s|^bytes 0-1/(\d+).*$|$1|; +- logger "INFO: Download File Length $file_len\n" if $opt{verbose}; ++ $download_len =~ s|^bytes 0-1/(\d+).*$|$1|; ++ logger "INFO: Download File Length $download_len\n" if $opt{verbose}; + + # Only do this if we're rearranging QT streams + my $mdat_start = 0; +- my $moov_start = $file_len + 1; ++ # default to this if we are not rearranging (tells the download chunk loop where to stop - i.e. EOF instead of end of mdat atom) ++ my $moov_start = $download_len + 1; + my $header; + if ($rearrange) { + # Get ftyp+wide header etc + $mdat_start = 0x1c; + my $buffer = download_block(undef, $url_2, $ua, 0, $mdat_start + 4); + # Get bytes upto (but not including) mdat atom start -> $header +- $header = download_block(undef, $url_2, $ua, 0, $mdat_start - 1, $file_len); +- ++ $header = substr($buffer, 0, $mdat_start); ++ + # Detemine moov start +- # Get mdat_end_offset_chars from downloaded block +- my $mdat_end_offset_chars = substr($buffer, $mdat_start, 4); +- my $mdat_end_offset = bytestring_to_int($mdat_end_offset_chars); +- logger "DEBUG: mdat_end_offset = ".get_hex($mdat_end_offset_chars)." = $mdat_end_offset\n" if $opt{debug}; +- logger "DEBUG: mdat_end_offset (decimal) = $mdat_end_offset\n" if $opt{debug}; ++ # Get mdat_length_chars from downloaded block ++ my $mdat_length_chars = substr($buffer, $mdat_start, 4); ++ my $mdat_length = bytestring_to_int($mdat_length_chars); ++ logger "DEBUG: mdat_length = ".get_hex($mdat_length_chars)." = $mdat_length\n" if $opt{debug}; ++ logger "DEBUG: mdat_length (decimal) = $mdat_length\n" if $opt{debug}; + # The MOOV box starts one byte after MDAT box ends +- $moov_start = $mdat_start + $mdat_end_offset; +- +- +- ## scan 2nd level atoms in moov atom until we get stco atom(s) +- # We can skip first 8 bytes (moov atom header) +- #my $i = 8; +- #while( $i < $moov_length - 4 ) { +- # my $atom_len = bytestring_to_int( substr($moovdata, $i, 4) ); +- # my $atom_name = substr($moovdata, $i+4, 4); +- # logger "Parsing atom: $atom_name, length: $atom_len\n"; +- # # Increment $i by atom_len to get next atom +- # $i += $atom_len; +- #} ++ $moov_start = $mdat_start + $mdat_length; + } + + # If we have partial content and wish to stream, resume the download & spawn off STDOUT from existing file start + # Sanity check - we cannot support downloading of partial content if we're streaming also. + if ( $opt{stdout} && (! $opt{nowrite}) && -f $file ) { + logger "WARNING: Partially downloaded file exists, streaming will start from the beginning of the programme\n"; +- # Don't do usual streaming code +- $opt{stdout} = 0; ++ # Don't do usual streaming code - also force all messages to go to stderr ++ delete $opt{stdout}; ++ $opt{stderr} = 1; + $childpid = fork(); + if (! $childpid) { + # Child starts here +@@ -2205,15 +2863,15 @@ + my $fh = open_file_append($file); + + # If the partial file already exists, then resume from the correct mdat/download offset +- my $restart_offset = $mdat_start; ++ my $restart_offset = 0; + my $moovdata; + my $moov_length = 0; + + if ($rearrange) { + # if cookie fails then trigger a retry after deleting cookiejar +- # Determine moov atom length so we can work out if the partially downloaded file has the moov atom in it already ++ # Determine orginal moov atom length so we can work out if the partially downloaded file has the moov atom in it already + $moov_length = bytestring_to_int( download_block( undef, $url_2, $ua, $moov_start, $moov_start+3 ) ); +- logger "INFO: moov atom length = $moov_length \n" if $opt{verbose}; ++ logger "INFO: original moov atom length = $moov_length \n" if $opt{verbose}; + # Sanity check this moov length - chances are that were being served up a duff file if this is > 10% of the file size or < 64k + if ( $moov_length > (${moov_start}/9.0) || $moov_length < 65536 ) { + logger "WARNING: Bad file download, deleting cookie \n"; +@@ -2222,33 +2880,73 @@ + unlink $file; + return 'retry'; + } +- } +- +- # If we have a too-small-sized file and not stdout and not no-write then this is a partial download +- if (-f $file && (! $opt{stdout}) && (! $opt{nowrite}) && stat($file)->size > ($moov_length+$mdat_start) ) { +- # Calculate new start offset (considering that we've put moov first in file) +- $restart_offset = stat($file)->size - $moov_length; +- logger "INFO: Resuming download from $restart_offset \n"; +- } + +- if ($rearrange) { ++ # we still need an accurate moovlength for the already downloaded moov atom for resume restart_offset..... + # If we have no existing file, a file which doesn't yet even have the moov atom, or using stdout (or no-write option) +- if ( $opt{stdout} || $opt{nowrite} || stat($file)->size < ($moov_length+$mdat_start) ) { ++ # (allow extra 1k on moov_length for metadata when testing) ++ if ( $opt{stdout} || $opt{nowrite} || stat($file)->size < ($moov_length+$mdat_start+1024) ) { + # get moov chunk into memory +- $moovdata = download_block( undef, $url_2, $ua, $moov_start, (${file_len}-1) ); ++ $moovdata = download_block( undef, $url_2, $ua, $moov_start, (${download_len}-1) ); ++ ++ # Create new udta atom with child atoms for metadata ++ my $udta_new = create_qt_atom('udta', ++ create_qt_atom( chr(0xa9).'nam', $prog{$pid}{name}.' - '.$prog{$pid}{episode}, 'string' ). ++ create_qt_atom( chr(0xa9).'alb', $prog{$pid}{name}, 'string' ). ++ create_qt_atom( chr(0xa9).'trk', $prog{$pid}{episode}, 'string' ). ++ create_qt_atom( chr(0xa9).'aut', $prog{$pid}{channel}, 'string' ). ++ create_qt_atom( chr(0xa9).'ART', $prog{$pid}{channel}, 'string' ). ++ create_qt_atom( chr(0xa9).'des', $prog{$pid}{desc}, 'string' ). ++ create_qt_atom( chr(0xa9).'cmt', 'Downloaded with get_iplayer', 'string' ). ++ create_qt_atom( chr(0xa9).'req', 'QuickTime 6.0 or greater', 'string' ). ++ create_qt_atom( chr(0xa9).'day', (localtime())[5] + 1900, 'string' ) ++ ); ++ # Insert new udta atom over the old one and get the new $moov_length (and update moov atom size field) ++ replace_moov_udta_atom ( $udta_new, $moovdata ); ++ + # Process the moov data so that we can relocate it (change the chunk offsets that are absolute) ++ # Also update moov+_length to be accurate after metadata is added etc + $moov_length = relocate_moov_chunk_offsets( $moovdata ); +- # write moov atom to file next (yes - were rearranging the file - moov+header+mdat - not header+mdat+moov) +- logger "INFO: Appending moov+ftype+wide atoms to $file\n" if $opt{verbose}; +- # Write moov atom +- print $fh $moovdata if ! $opt{nowrite}; +- print STDOUT $moovdata if $opt{stdout}; ++ logger "INFO: New moov atom length = $moov_length \n" if $opt{verbose}; ++ # write moov atom to file next (yes - were rearranging the file - header+moov+mdat - not header+mdat+moov) ++ logger "INFO: Appending ftype+wide+moov atoms to $file\n" if $opt{verbose}; + # Write header atoms (ftyp, wide) + print $fh $header if ! $opt{nowrite}; + print STDOUT $header if $opt{stdout}; ++ # Write moov atom ++ print $fh $moovdata if ! $opt{nowrite}; ++ print STDOUT $moovdata if $opt{stdout}; ++ # If were not resuming we want to only start the download chunk loop from mdat_start ++ $restart_offset = $mdat_start; ++ } ++ ++ # Get accurate moov_length from file (unless stdout or nowrite options are specified) ++ # Assume header+moov+mdat atom layout ++ if ( (! $opt{stdout}) && (! $opt{nowrite}) && stat($file)->size > ($moov_length+$mdat_start) ) { ++ logger "INFO: Getting moov atom length from partially downloaded file $file\n" if $opt{verbose}; ++ if ( ! open( MOOVDATA, "< $file" ) ) { ++ logger "ERROR: Cannot Read partially downloaded file\n"; ++ return 4; ++ } ++ my $data; ++ seek(MOOVDATA, $mdat_start, 0); ++ if ( read(MOOVDATA, $data, 4, 0) != 4 ) { ++ logger "ERROR: Cannot Read moov atom length from partially downloaded file\n"; ++ return 4; ++ } ++ close MOOVDATA; ++ # Get moov atom size from file ++ $moov_length = bytestring_to_int( substr($data, 0, 4) ); ++ logger "INFO: moov atom length (from partially downloaded file) = $moov_length \n" if $opt{verbose}; + } + } + ++ # If we have a too-small-sized file (greater than moov_length+mdat_start) and not stdout and not no-write then this is a partial download ++ if (-f $file && (! $opt{stdout}) && (! $opt{nowrite}) && stat($file)->size > ($moov_length+$mdat_start) ) { ++ # Calculate new start offset (considering that we've put moov first in file) ++ $restart_offset = stat($file)->size - $moov_length; ++ logger "INFO: Resuming download from $restart_offset \n"; ++ } ++ + # Create symlink if required + if ( $opt{symlink} ) { + # remove old symlink +@@ -2273,16 +2971,15 @@ + $e = $s + $chunk_size - 1; + } + # Get block from URL and append to $file +- if ( download_block($file, $url_2, $ua, $s, $e, $file_len, $fh ) ) { ++ if ( download_block($file, $url_2, $ua, $s, $e, $download_len, $fh ) ) { + logger "ERROR: Could not download block $s - $e from $file\n\n"; +- return 9; ++ return 'retry'; + } + } + + # end marker + my $end_time = time(); + +- # Should now be able to concatenate header.block + mdat.block + moov.block to get movie! + # Calculate average speed, duration and total bytes downloaded + logger sprintf("INFO: Downloaded %.2fMB in %s at %5.0fkbps to %s\n", + ($moov_start - 1 - $restart_offset) / (1024.0 * 1024.0), +@@ -2292,57 +2989,217 @@ + + # Moving file into place as complete (if not stdout) + move($file, $file_done) if ! $opt{stdout}; ++ ++ # Re-symlink file ++ if ( $opt{symlink} ) { ++ # remove old symlink ++ unlink $file_symlink if -l $file_symlink; ++ symlink $file_done, $file_symlink; ++ logger "INFO: Created symlink from '$file_symlink' -> '$file_done'\n" if $opt{verbose}; ++ } ++ $prog{$pid}{mode} = 'iphone'; + return 0; + } + + + +-sub download_h264_rtmp_stream { +- my ( $ua, $url_2, $prog_url, $file, $file_done, $file_symlink ) = @_; +- my $file_flv = $file; # .'.flv'; ++# Actually do the RTMP stream downloading ++sub download_stream_rtmp { ++ my ( $ua, $url_2, $pid, $mode, $application, $tcurl, $authstring, $swfurl, $file, $file_done, $file_symlink ) = @_; ++ my $file_tmp; ++ my $cmd; ++ ++ if ( $opt{raw} ) { ++ $file_tmp = $file; ++ } else { ++ $file_tmp = $file.'.flv' ++ } + +- logger "INFO: url: $url_2, prog_url: $prog_url, file: $file, file_done: $file_done\n" if $opt{verbose}; ++ # Remove failed file download (below a certain size) - hack to get around rtmpdump not returning correct exit code ++ if ( -f $file_tmp && stat($file_tmp)->size < $min_download_size ) { ++ unlink( $file_tmp ); ++ } ++ ++ logger "INFO: RTMP_URL: $url_2, tcUrl: $tcurl, application: $application, authString: $authstring, swfUrl: $swfurl, file: $file, file_done: $file_done\n" if $opt{verbose}; + + # Create symlink if required + if ( $opt{symlink} ) { + # remove old symlink + unlink $file_symlink if -l $file_symlink; +- symlink $file_flv, $file_symlink; +- logger "INFO: Created symlink from '$file_symlink' -> '$file_flv'\n" if $opt{verbose}; ++ symlink $file_tmp, $file_symlink; ++ logger "INFO: Created symlink from '$file_symlink' -> '$file_tmp'\n" if $opt{verbose}; + } ++ $cmd = "$rtmpdump --resume --rtmp \"$url_2\" --auth \"$authstring\" --swfUrl \"$swfurl\" --tcUrl \"$tcurl\" --app \"$application\" -o \"$file_tmp\" >&2"; ++ logger "\n\nINFO: Command: $cmd\n" if $opt{verbose}; ++ my $return = system($cmd); ++ # Hack to get around rtmpdump prentending to fail on successful flash downloads ++ if ( (! -f $file_tmp) || ($return && -f $file_tmp && stat($file_tmp)->size < $min_download_size) ) { ++ logger "\n\nINFO: Command: $cmd\n" if $opt{verbose}; ++ logger "\nWARNING: Failed to download file $file_tmp via RTMP\n"; ++ unlink $file_tmp; ++ return 'next'; ++ } ++ ++ # Retain raw flv format if required ++ if ( $opt{raw} ) { ++ move($file_tmp, $file_done) if ! $opt{stdout}; ++ return 0; + +- my $cmd = "$rtmpdump --rtmp \"$url_2\" --pageUrl \"$prog_url\" --swfUrl \"http://www.bbc.co.uk/emp/9player.swf?revision=6928_7030\" --tcUrl \"rtmp://bbciplayertokfs.fplive.net:80/bbciplayertok\" --app \"bbciplayertok\" -o \"$file_flv\" >&2"; +- #my $cmd2 = "$ffmpeg -i \"$file_flv\" -vcodec copy -acodec copy -f mp4 -y \"$file\" >&2"; +- #my $cmd2 = "$mencoder -oac copy -ovc copy -o \"$file\" \"$file_flv\" >&2"; ++ # Convert flv to mp3 for flash audio ++ } elsif ( $mode eq 'flashaudio' ) { ++ # We could do id3 tagging here but id3v2 does this later anyway ++ $cmd = "$ffmpeg -i \"$file_tmp\" -vn -acodec copy -y \"$file\" >&2"; + +- # logger "\n\nINFO: Command1: $cmd\nINFO: Command2: $cmd2\n\n" if $opt{verbose}; +- if ( system($cmd) ) { +- logger "\nWARNING: Failed to download file $file via RTMP\n"; +- return 1; ++ # Convert video flv to mp4/avi if required ++ } else { ++ $cmd = "$ffmpeg $ffmpeg_opts -i \"$file_tmp\" -vcodec copy -acodec copy -f $prog{$pid}{ext} -y \"$file\" >&2"; ++ } ++ ++ logger "\n\nINFO: Command: $cmd\n\n" if $opt{verbose}; ++ # Run flv conversion and delete source file on success ++ if ( (! system($cmd)) && -f $file && stat($file)->size > $min_download_size ) { ++ unlink( $file_tmp ); ++ ++ # If the ffmpeg conversion failed, remove the failed-converted file attempt - move the file as done anyway ++ } else { ++ logger "WARNING: flv conversion failed - retaining flv file\n"; ++ unlink $file; ++ $file = $file_tmp; ++ $file_done = $file_tmp; ++ } ++ # Moving file into place as complete (if not stdout) ++ move($file, $file_done) if ! $opt{stdout}; ++ ++ # Re-symlink file ++ if ( $opt{symlink} ) { ++ # remove old symlink ++ unlink $file_symlink if -l $file_symlink; ++ symlink $file_done, $file_symlink; ++ logger "INFO: Created symlink from '$file_symlink' -> '$file_done'\n" if $opt{verbose}; ++ } ++ ++ logger "INFO: Downloaded $file_done\n"; ++ $prog{$pid}{mode} = $mode; ++ return 0; ++} ++ ++ ++ ++# Actually do the MMS video stream downloading ++sub download_stream_mms_video { ++ my ( $ua, $urls, $file, $file_done, $pid ) = @_; ++ my $file_tmp; ++ my $cmd; ++ my $null; ++ my @url_list = split /\|/, $urls; ++ my @file_tmp_list; ++ my %threadpid; ++ ++ logger "INFO: MMS_URLs: ".(join ', ', @file_tmp_list).", file: $file, file_done: $file_done\n" if $opt{verbose}; ++ ++ # Start marker ++ my $start_time = time(); ++ # Download each mms url (multi-threaded to download in parallel) ++ my $file_part_prefix = "$prog{$pid}{dir}/$prog{$pid}{fileprefix}_part"; ++ for ( my $count = 0; $count <= $#url_list; $count++ ) { ++ ++ # Create temp download filename ++ $file_tmp = $file_part_prefix.($count+1).".asf"; ++ $file_tmp_list[$count] = $file_tmp; ++ $null = " 2>/dev/null " if (! $opt{verbose}) && (! $opt{debug}); ++ $cmd = "$mplayer -dumpstream \"$url_list[$count]\" -dumpfile \"$file_tmp\" $null >&2 </dev/null"; ++ logger "\n\nINFO: Command: $cmd\n" if $opt{verbose}; ++ ++ my $childpid = fork(); ++ if (! $childpid) { ++ # Child starts here ++ logger "INFO: Downloading file $file_tmp\n"; ++ if ( system($cmd) ) { ++ logger "\nWARNING: Failed to download file $file_tmp via MMS\n"; ++ exit 1; ++ } ++ logger "INFO: Download thread has completed for file $file_tmp\n"; ++ exit 0; ++ } ++ # Create a hash of process_id => 'count' ++ $threadpid{$childpid} = $count; ++ } ++ # Wait for all threads to complete ++ $| = 1; ++ # Autoreap zombies ++ $SIG{CHLD}='IGNORE'; ++ my $done = 0; ++ while (keys %threadpid) { ++ my @sizes; ++ my $total_size = 0; ++ my $total_size_new = 0; ++ my $format = "Threads: "; ++ sleep 1; ++ #logger "DEBUG: ProcessIDs: ".(join ',', keys %threadpid)."\n"; ++ for my $procid (sort keys %threadpid) { ++ my $size = 0; ++ # Is this child still alive? ++ if ( kill 0 => $procid ) { ++ logger "DEBUG Thread $threadpid{$procid} still alive ($file_tmp_list[$threadpid{$procid}])\n" if $opt{debug}; ++ # Build the status string ++ $format .= "%d) %.3fMB "; ++ $size = stat($file_tmp_list[$threadpid{$procid}])->size if -f $file_tmp_list[$threadpid{$procid}]; ++ push @sizes, $threadpid{$procid}+1, $size/(1024.0*1024.0); ++ $total_size_new += $size; ++ } else { ++ $size = stat($file_tmp_list[$threadpid{$procid}])->size if -f $file_tmp_list[$threadpid{$procid}]; ++ # end marker ++ my $end_time = time(); ++ # Calculate average speed, duration and total bytes downloaded ++ logger sprintf("INFO: Thread #%d Downloaded %.2fMB in %s at %5.0fkbps to %s\n", ++ ($threadpid{$procid}+1), ++ $size / (1024.0 * 1024.0), ++ sprintf("%02d:%02d:%02d", ( gmtime($end_time - $start_time))[2,1,0] ), ++ $size / ($end_time - $start_time) / 1024.0 * 8.0, ++ $file_tmp_list[$threadpid{$procid}] ); ++ # Remove from thread test list ++ delete $threadpid{$procid}; ++ } ++ } ++ $format .= " downloaded (%.0fkbps) \r"; ++ logger sprintf $format, @sizes, ($total_size_new - $total_size) / (time() - $start_time) / 1024.0 * 8.0; + } +- # Only convert to mp4 if we have mencoder in path +- # Disable rtmp mode if rtmpdump does not exist +- if ( ! exists_in_path($ffmpeg)) { +- logger "\nWARNING: $ffmpeg does not exist - not converting flv file to mp4\n"; +- #} else { +- # Run flv conversion and delete source file on success +- #if ( ! system($cmd2) ) { +- # unlink( $file_flv ); +- #} else { +- # logger "ERROR: flv to mp4 conversion failed\n"; +- # return 2; +- #} +- # Moving file into place as complete (if not stdout) +- #move($file, $file_done) if ! $opt{stdout}; ++ logger "INFO: All download threads completed\n"; ++ # Unset autoreap ++ delete $SIG{CHLD}; ++ # Retain raw format if required ++ if ( $opt{raw} ) { ++ return 0; + } ++ ++# # Convert video asf to mp4 if required - need to find a suitable converter... ++# } else { ++# # Create part of cmd that specifies each partial file ++# my $filestring; ++# $filestring .= " -i \"$_\" " for (@file_tmp_list); ++# $cmd = "$ffmpeg $ffmpeg_opts $filestring -vcodec copy -acodec copy -f $prog{$pid}{ext} -y \"$file\" >&2"; ++# } ++# ++# logger "\n\nINFO: Command: $cmd\n\n" if $opt{verbose}; ++# # Run asf conversion and delete source file on success ++# if ( ! system($cmd) ) { ++# unlink( @file_tmp_list ); ++# } else { ++# logger "ERROR: asf conversion failed - retaining files ".(join ', ', @file_tmp_list)."\n"; ++# return 2; ++# } ++# # Moving file into place as complete (if not stdout) ++# move($file, $file_done) if ! $opt{stdout}; ++ ++ $prog{$pid}{mode} = 'itv'; + return 0; + } + + + + # Actually do the N95 h.264 downloading +-sub download_h264_low_stream { +- my ( $ua, $url_2, $file, $file_done ) = @_; ++sub download_stream_h264_low { ++ my ( $ua, $url_2, $file, $file_done, $pid, $mode ) = @_; + + # Change filename extension + $file =~ s/mov$/mpg/gi; +@@ -2353,7 +3210,7 @@ + logger "INFO: Downloading Low Quality H.264 stream\n"; + my $cmd = "$vlc $vlc_opts --sout file/ts:${file} $url_2 1>&2"; + if ( system($cmd) ) { +- return 2; ++ return 'next'; + } + + # to STDOUT +@@ -2361,19 +3218,21 @@ + logger "INFO: Streaming Low Quality H.264 stream to stdout\n"; + my $cmd = "$vlc $vlc_opts --sout file/ts:- $url_2 1>&2"; + if ( system($cmd) ) { +- return 2; ++ return 'next'; + } + } + logger "INFO: Downloaded $file_done\n"; + # Moving file into place as complete (if not stdout) + move($file, $file_done) if ! $opt{stdout}; ++ ++ $prog{$pid}{mode} = $mode; + return 0; + } + + + + # Actually do the rtsp downloading +-sub download_rtsp_stream { ++sub download_stream_rtsp { + my ( $ua, $url, $file, $file_done, $file_symlink, $pid ) = @_; + my $childpid; + +@@ -2389,7 +3248,7 @@ + # Create ID3 tagging options for lame (escape " for shell) + my ( $id3_name, $id3_episode, $id3_desc, $id3_channel ) = ( $prog{$pid}{name}, $prog{$pid}{episode}, $prog{$pid}{desc}, $prog{$pid}{channel} ); + $id3_name =~ s|"|\"|g for ($id3_name, $id3_episode, $id3_desc, $id3_channel); +- $lame_opts .= "--ignore-tag-errors --ty ".( (localtime())[5] + 1900 )." --tl \"$id3_name\" --tt \"$id3_episode\" --ta \"$id3_channel\" --tc \"$id3_desc\" "; ++ $lame_opts .= " --ignore-tag-errors --ty ".( (localtime())[5] + 1900 )." --tl \"$id3_name\" --tt \"$id3_episode\" --ta \"$id3_channel\" --tc \"$id3_desc\" "; + + # Use post-download transcoding using lame if namedpipes are not supported (i.e. ActivePerl/Windows) + # (Fallback if no namedpipe support and raw/wav not specified) +@@ -2402,14 +3261,14 @@ + logger "INFO: Downloading wav format (followed by transcoding)\n"; + $cmd = "$mplayer $mplayer_opts -cache 128 -bandwidth $bandwidth -vc null -vo null -ao pcm:waveheader:fast:file=\"${file}.wav\" \"$url\" 1>&2"; + if ( system($cmd) ) { +- return 2; ++ return 'next'; + } + # Transcode + logger "INFO: Transcoding ${file}.wav\n"; + $cmd = "$lame $lame_opts \"${file}.wav\" \"${file}.mp3\" 1>&2"; + logger "DEGUG: Running $cmd\n" if $opt{debug}; +- if ( system($cmd) ) { +- return 2; ++ if ( system($cmd) || (-f "${file}.wav" && stat("${file}.wav")->size < $min_download_size) ) { ++ return 'next'; + } + unlink "${file}.wav"; + move "${file}.mp3", $file_done; +@@ -2425,7 +3284,7 @@ + my $cmd = "$mplayer $mplayer_opts -cache 128 -bandwidth $bandwidth -vc null -vo null -ao pcm:waveheader:fast:file=\"$file\" \"$url\" 1>&2"; + logger "DEGUG: Running $cmd\n" if $opt{debug}; + if ( system($cmd) ) { +- return 2; ++ return 'next'; + } + # Move file to done state + move $file, $file_done if ! $opt{nowrite}; +@@ -2438,7 +3297,7 @@ + my $cmd = "$mplayer $mplayer_opts -cache 128 -bandwidth $bandwidth -dumpstream -dumpfile \"$file\" \"$url\" 1>&2"; + logger "DEGUG: Running $cmd\n" if $opt{debug}; + if ( system($cmd) ) { +- return 2; ++ return 'next'; + } + # Move file to done state + move $file, $file_done if ! $opt{nowrite}; +@@ -2498,7 +3357,7 @@ + if ( system($cmd) ) { + # If we fail then kill off child processes + kill 9, $childpid; +- return 2; ++ return 'next'; + } + # WAV / mp3 mode + } else { +@@ -2506,7 +3365,7 @@ + if ( system($cmd) ) { + # If we fail then kill off child processes + kill 9, $childpid; +- return 2; ++ return 'next'; + } + } + # Wait for child processes to prevent zombies +@@ -2522,13 +3381,14 @@ + logger "INFO: Created symlink from '$file_symlink' -> '$file_done'\n" if $opt{verbose}; + } + ++ $prog{$pid}{mode} = 'realaudio'; + return 0; + } + + + + # Actually do the podcast downloading +-sub download_podcast_stream { ++sub download_stream_podcast { + my ( $ua, $url_2, $file, $file_done, $file_symlink ) = @_; + my $start_time = time(); + +@@ -2548,7 +3408,7 @@ + + if ( download_block($file, $url_2, $ua, $start, undef, undef, $fh) != 0 ) { + logger "ERROR: Download failed\n"; +- return 22; ++ return 'next'; + } else { + # end marker + my $end_time = time(); +@@ -2569,111 +3429,98 @@ + logger "INFO: Created symlink from '$file_symlink' -> '$file_done'\n" if $opt{verbose}; + } + } ++ ++ $prog{$url_2}{mode} = 'podcast'; + return 0; + } + + + + # Get streaming iphone URL +-sub get_iphone_stream_download_url { +- my $ua = shift; +- my $pid = shift; +- +- # Create url with appended 6 digit random number +- my $url_1 = ${iphone_download_prefix}.'/'.${pid}.'?'.(sprintf "%06.0f", 1000000*rand(0)).'%20'; +- logger "INFO: media stream download URL = $url_1\n" if $opt{verbose}; +- +- # Stage 2: e.g. "Location: http://download.iplayer.bbc.co.uk/iplayer_streaming_http_mp4/121285241910131406.mp4?token=iVXexp1yQt4jalB2Hkl%2BMqI25nz2WKiSsqD7LzRmowrwXGe%2Bq94k8KPsm7pI8kDkLslodvHySUyU%0ApM76%2BxEGtoQTF20ZdFjuqo1%2B3b7Qmb2StOGniozptrHEVQl%2FYebFKVNINg%3D%3D%0A" +- logger "\rGetting iplayer download URL " if ! $opt{verbose}; +- my $h = new HTTP::Headers( +- 'User-Agent' => $user_agent{coremedia}, +- 'Accept' => '*/*', +- 'Range' => 'bytes=0-1', +- ); +- my $req = HTTP::Request->new ('GET', $url_1, $h); +- # send request +- my $res = $ua->request($req); +- # Get resulting Location header (i.e. redirect URL) +- my $url_2 = $res->header("location"); +- if ( ! $res->is_redirect ) { +- logger "ERROR: Failed to get redirect from iplayer site\n\n"; +- return ''; +- } +- # Extract redirection Location URL +- $url_2 =~ s/^Location: (.*)$/$1/g; +- # If we get a Redirection containing statuscode=404 then this prog is not yet ready +- if ( $url_2 =~ /statuscode=404/ ) { +- logger "\rERROR: Programme is not yet ready for download\n"; +- return ''; +- } +- +- return $url_2; +-} +- +- ++sub get_stream_url_iphone { ++ my $ua = shift; ++ my $pid = shift; + +-# Get streaming audio URL (Real => rtsp) +-#<media kind="audio" +-# type="audio/real" +-# encoding="real" > +-# <connection +-# priority="10" +-# kind="sis" +-# server="http://www.bbc.co.uk" +-# identifier="/radio/aod/playlists/gs/5d/c0/0b/0900_bbc_radio_two" +-# href="http://www.bbc.co.uk/radio/aod/playlists/gs/5d/c0/0b/0900_bbc_radio_two.ram" +-# /> +-#</media> +-# OR +-#<media kind="" +-# type="audio/real" +-# encoding="real" > +-# <connection +-# priority="10" +-# kind="edgesuite" +-# server="http://http-ws.bbc.co.uk.edgesuite.net" +-# identifier="/generatecssram.esi?file=/worldservice/css/nb/410591221152760.ra" +-# href="http://http-ws.bbc.co.uk.edgesuite.net/generatecssram.esi?file=/worldservice/css/nb/410591221152760.ra" +-# /> +-#</media> +-# +-sub get_audio_stream_download_url { +- my $ua = shift; +- my $url_1 = shift; +- my $url_2; ++ # Create url with appended 6 digit random number ++ my $url_1 = ${iphone_download_prefix}.'/'.${pid}.'?'.(sprintf "%06.0f", 1000000*rand(0)).'%20'; ++ logger "INFO: media stream download URL = $url_1\n" if $opt{verbose}; + +- logger "\rGetting iplayer download URL " if ! $opt{verbose}; +- my $h = new HTTP::Headers( +- 'User-Agent' => $user_agent{coremedia}, +- 'Accept' => '*/*', +- 'Range' => 'bytes=0-', +- ); +- my $req = HTTP::Request->new ('GET', $url_1, $h); +- # send request +- my $res = $ua->request($req); +- # Get resulting content +- my $content = $res->content; +- # Flatten +- $content =~ s/\n/ /g; +- if ( ! $res->is_success ) { +- logger "ERROR: Failed to get audio url from iplayer site\n\n"; +- return ''; +- } +- # If we get a Redirection containing statuscode=404 then this prog is not yet ready +- if ( $content =~ /statuscode=404/ ) { +- logger "\rERROR: Programme is not yet ready for download\n"; +- return ''; +- } +- # extract ram URL +- $url_2 = $2 if $content =~ m{<media kind="(|audio)"\s*type="audio/real".*href="(.+?)"\s*}; +- +- # If we cannot see 'encoding="real"...' then we don't have real audio transcoded format then skip +- if ( ! $url_2 ) { +- logger "\rERROR: Programme is not yet ready for download in RealAudio format\n"; +- return ''; +- } +- +- return $url_2; ++ # Stage 2: e.g. "Location: http://download.iplayer.bbc.co.uk/iplayer_streaming_http_mp4/121285241910131406.mp4?token=iVXexp1yQt4jalB2Hkl%2BMqI25nz2WKiSsqD7LzRmowrwXGe%2Bq94k8KPsm7pI8kDkLslodvHySUyU%0ApM76%2BxEGtoQTF20ZdFjuqo1%2B3b7Qmb2StOGniozptrHEVQl%2FYebFKVNINg%3D%3D%0A" ++ logger "\rGetting iplayer download URL " if (! $opt{verbose}) && ! $opt{streaminfo}; ++ my $h = new HTTP::Headers( ++ 'User-Agent' => $user_agent{coremedia}, ++ 'Accept' => '*/*', ++ 'Range' => 'bytes=0-1', ++ ); ++ my $req = HTTP::Request->new ('GET', $url_1, $h); ++ # send request (use simple_request here because that will not allow redirects) ++ my $res = $ua->simple_request($req); ++ # Get resulting Location header (i.e. redirect URL) ++ my $url_2 = $res->header("location"); ++ if ( ! $res->is_redirect ) { ++ logger "ERROR: Failed to get redirect from iplayer site\n\n"; ++ return ''; ++ } ++ # Extract redirection Location URL ++ $url_2 =~ s/^Location: (.*)$/$1/g; ++ # If we get a Redirection containing statuscode=404 then this prog is not yet ready ++ if ( $url_2 =~ /statuscode=404/ ) { ++ logger "\rERROR: Programme is not yet ready for download\n" if $opt{verbose}; ++ return ''; ++ } ++ ++ return $url_2; ++} ++ ++ ++ ++sub get_stream_url_itv { ++ my ( $ua, $pid ) = ( @_ ); ++ ++ my ( $response, $url_1, $url_2, $url_3, $url_4 ); ++ my $part; ++ my $duration; ++ my $filename; ++ my @url_list; ++ ++ # construct stage 1 request url ++ $url_1 = 'http://www.itv.com/_app/video/GetMediaItem.ashx?vodcrid=crid://itv.com/'.$pid.'&bitrate=384&adparams=SITE=ITV/AREA=CATCHUP.VIDEO/SEG=CATCHUP.VIDEO%20HTTP/1.1'; ++ ++ # Extract '<LicencePlaylist>(.+?) HTTP/1.1</LicencePlaylist>' ++ logger "INFO: ITV Video Stage 1 URL: $url_1\n" if $opt{verbose}; ++ $response = request_url_retry($ua, $url_1, 2, '', ''); ++ logger "DEBUG: Response data: $response\n" if $opt{debug}; ++ $url_2 = $1 if $response =~ m{<LicencePlaylist>(.+?) HTTP/1.1</LicencePlaylist>}; ++ # replace '&' with '&' and append '%20HTTP/1.1' ++ $url_2 =~ s/&/&/g; ++ $url_2 .= '%20HTTP/1.1'; ++ logger "INFO: ITV Video Stage 2 URL: $url_2\n" if $opt{verbose}; ++ $response = request_url_retry($ua, $url_2, 2, '', ''); ++ logger "DEBUG: Response data: $response\n" if $opt{debug}; ++ ++ # Extract hrefs and names. There are multiple entries for parts of prog (due to ads): ++ # e.g. <asx><Title>Doctor Zhivago ++ $prog{$pid}{name} = $1 if $response =~ m{(.+?)<\/Title>}; ++ for my $entry (split /<Entry><ref\s+href=/, $response) { ++ logger "DEBUG: Entry data: $entry\n" if $opt{debug}; ++ $entry .= '<Entry><ref href='.$entry; ++ ++ ( $url_3, $part, $filename, $duration ) = ( $1, $2, $3, $4 ) if $entry =~ m{<Entry><ref\s+href="(.+?)"\s+\/><param\s+value="true"\s+name="Prebuffer"\s+\/>\s*<PARAM\s+NAME="PrgPartNumber"\s+VALUE="(.+?)"\s*\/><PARAM\s+NAME="FileName"\s+VALUE="(.+?)"\s*\/><PARAM\s+NAME="PrgLength"\s+VALUE="(.+?)"\s*\/>}; ++ next if not $url_3; ++ # Replace '&' with '&' in url ++ $url_3 =~ s/&/&/g; ++ logger "INFO: ITV Video Name: $part\n"; ++ ++ logger "INFO: ITV Video Stage 3 URL: $url_3\n" if $opt{verbose}; ++ $entry = request_url_retry($ua, $url_3, 2, '', ''); ++ logger "DEBUG: Response data: $entry\n" if $opt{debug}; ++ ++ # Extract mms (replace 'http' with 'mms') url: e.g.: Ref1=http://itvbrdbnd.wmod.llnwd.net/a1379/o21/ucontent/2007/6/22/1549_384_1_2.wmv?MSWMExt=.asf ++ chomp( $url_4 = 'mms'.$1 ) if $entry =~ m{Ref1=http(.+?)[\r\n]+}; ++ logger "INFO: ITV Video URL: $url_4\n" if $opt{verbose}; ++ push @url_list, $url_4; ++ } ++ return @url_list; + } + + +@@ -2711,7 +3558,7 @@ + # Change all the chunk offsets in moov->stco atoms and add moov_length to them all + # get moov atom length + my $moov_length = bytestring_to_int( substr($moovdata, 0, 4) ); +- # Use index() to seatch for a string within a string ++ # Use index() to search for a string within a string + my $i = -1; + while (($i = index($moovdata, 'stco', $i)) > -1) { + +@@ -2725,10 +3572,11 @@ + #logger "chunk_offset @ $i, $j = '".get_hex( substr($moovdata, $j, 4) )."', $chunk_offset + $moov_length = "; + $chunk_offset += $moov_length; + # write back bytes into $moovdata +- substr($moovdata, $j+0, 1) = chr( ($chunk_offset >> 24) & 0xFF ); +- substr($moovdata, $j+1, 1) = chr( ($chunk_offset >> 16) & 0xFF ); +- substr($moovdata, $j+2, 1) = chr( ($chunk_offset >> 8) & 0xFF ); +- substr($moovdata, $j+3, 1) = chr( ($chunk_offset >> 0) & 0xFF ); ++ #substr($moovdata, $j+0, 1) = chr( ($chunk_offset >> 24) & 0xFF ); ++ #substr($moovdata, $j+1, 1) = chr( ($chunk_offset >> 16) & 0xFF ); ++ #substr($moovdata, $j+2, 1) = chr( ($chunk_offset >> 8) & 0xFF ); ++ #substr($moovdata, $j+3, 1) = chr( ($chunk_offset >> 0) & 0xFF ); ++ write_msb_value_at_offset( $moovdata, $j, $chunk_offset ); + #$chunk_offset = bytestring_to_int( substr($moovdata, $j, 4) ); + #logger "$chunk_offset\n"; + } +@@ -2743,6 +3591,86 @@ + + + ++# Replace the moov->udta atom with a new user-supplied one and update the moov atom size ++# Usage: replace_moov_udta_atom ( $udta_new, $moovdata ) ++sub replace_moov_udta_atom { ++ my $udta_new = $_[0]; ++ my $moovdata = $_[1]; ++ ++ # get moov atom length ++ my $moov_length = bytestring_to_int( substr($moovdata, 0, 4) ); ++ ++ # Find the original udta atom start ++ # Use index() to search for a string within a string ($i will point at the beginning of the atom) ++ my $i = index($moovdata, 'udta', -1) - 4; ++ ++ # determine length of atom (4 bytes preceding the name) ++ my $udta_len = bytestring_to_int( substr($moovdata, $i, 4) ); ++ logger "INFO: Found udta atom at moov atom offset: $i length $udta_len\n" if $opt{verbose}; ++ ++ # Save the data before the udta atom ++ my $moovdata_before_udta = substr($moovdata, 0, $i); ++ ++ # Save the remainder portion of data after the udta atom for later ++ my $moovdata_after_udta = substr($moovdata, $i, $moovdata - $i + $udta_len); ++ ++ # Old udta atom should we need it ++ ### my $udta_old = substr($moovdata, $i, $udta_len); ++ ++ # Create new moov atom ++ $moovdata = $moovdata_before_udta.$udta_new.$moovdata_after_udta; ++ ++ # Recalculate the moov size and insert into moovdata ++ write_msb_value_at_offset( $moovdata, 0, length($moovdata) ); ++ ++ # Write $moovdata back to calling string ++ $_[1] = $moovdata; ++ ++ return 0; ++} ++ ++ ++ ++# Write the msb 4 byte $value starting at $offset into the passed string ++# Usage: write_msb_value($string, $offset, $value) ++sub write_msb_value_at_offset { ++ my $offset = $_[1]; ++ my $value = $_[2]; ++ substr($_[0], $offset+0, 1) = chr( ($value >> 24) & 0xFF ); ++ substr($_[0], $offset+1, 1) = chr( ($value >> 16) & 0xFF ); ++ substr($_[0], $offset+2, 1) = chr( ($value >> 8) & 0xFF ); ++ substr($_[0], $offset+3, 1) = chr( ($value >> 0) & 0xFF ); ++ return 0; ++} ++ ++ ++ ++# Returns a string containing an QT atom ++# Usage: create_qt_atom(<atome name>, <atom data>, ['string']) ++sub create_qt_atom { ++ my ($name, $data, $prog_type) = (@_); ++ if (length($name) != 4) { ++ logger "ERROR: Inavlid QT atom name length '$name'\n"; ++ exit 1; ++ } ++ # prepend string length if this is a string type ++ if ( $prog_type eq 'string' ) { ++ my $value = length($data); ++ $data = '1111'.$data; ++ # overwrite '1111' with total atom length in 2-byte MSB + 0x0 0x0 ++ substr($data, 0, 1) = chr( ($value >> 8) & 0xFF ); ++ substr($data, 1, 1) = chr( ($value >> 0) & 0xFF ); ++ substr($data, 2, 1) = chr(0); ++ substr($data, 3, 1) = chr(0); ++ } ++ my $atom = '0000'.$name.$data; ++ # overwrite '0000' with total atom length in MSB ++ write_msb_value_at_offset( $atom, 0, length($name.$data) + 4 ); ++ return $atom; ++} ++ ++ ++ + # Usage download_block($file, $url_2, $ua, $start, $end, $file_len, $fh); + # ensure filehandle $fh is open in append mode + # or, $content = download_block(undef, $url_2, $ua, $start, $end, $file_len); +@@ -2811,7 +3739,7 @@ + $rate = sprintf("%5.0fkbps", (8.0 / 1024.0) * $rate_bps); + $time = sprintf("%02d:%02d:%02d", ( gmtime( ($file_len - $size) / $rate_bps ) )[2,1,0] ); + } +- printf STDERR "%8.2fMB / %.2fMB %s %5.1f%%, %s remaining \r", ++ logger sprintf "%8.2fMB / %.2fMB %s %5.1f%%, %s remaining \r", + $size / 1024.0 / 1024.0, + $file_len / 1024.0 / 1024.0, + $rate, +@@ -2851,7 +3779,7 @@ + $time = sprintf("%02d:%02d:%02d", ( gmtime( ($file_len - $size) / $rate_bps ) )[2,1,0] ); + } + # time remaining +- printf STDERR "%8.2fMB / %.2fMB %s %5.1f%%, %s remaining \r", ++ logger sprintf "%8.2fMB / %.2fMB %s %5.1f%%, %s remaining \r", + $size / 1024.0 / 1024.0, + $file_len / 1024.0 / 1024.0, + $rate, +@@ -2865,7 +3793,7 @@ + } else { + $rate = sprintf("%5.0fkbps", (8.0 / 1024.0) * $size / ($timecalled - $now) ); + } +- printf STDERR "%8.2fMB %s \r", $size / 1024.0 / 1024.0, $rate; ++ logger sprintf "%8.2fMB %s \r", $size / 1024.0 / 1024.0, $rate; + } + }; + +@@ -2901,6 +3829,19 @@ + + + ++sub create_ua { ++ my $agent = shift; ++ my $ua = LWP::UserAgent->new; ++ $ua->timeout([$lwp_request_timeout]); ++ $ua->proxy( ['http'] => $proxy_url ); ++ $ua->agent( $user_agent{$agent} ); ++ $ua->conn_cache(LWP::ConnCache->new()); ++ $ua->cookie_jar( HTTP::Cookies->new( file => $cookiejar, autosave => 1, ignore_discard => 1 ) ); ++ return $ua; ++}; ++ ++ ++ + # Converts a string of chars to it's HEX representation + sub get_hex { + my $buf = shift || ''; +@@ -2985,11 +3926,7 @@ + sub update_script { + # Get version URL + my $script_file = $0; +- my $ua = LWP::UserAgent->new; +- $ua->timeout([$lwp_request_timeout]); +- $ua->proxy( ['http'] => $proxy_url ); +- $ua->agent( $user_agent{update} ); +- $ua->conn_cache(LWP::ConnCache->new()); ++ my $ua = create_ua('update'); + logger "INFO: Current version is $version\n"; + logger "INFO: Checking for latest version from linuxcentre.net\n"; + my $res = $ua->request( HTTP::Request->new( GET => $version_url ) ); +@@ -3070,10 +4007,8 @@ + <video><url id=\"p1\">${pid}.mov<playlist/></url></video> + <info><description>${desc}</description></info> + </movie>\n" if $opt{fxd}; +- my $newtitle = ${title} ; +- $newtitle =~ s/\&//g ; + print XML "<Stream> +- <Name>\"$newtitle\"</Name> ++ <Name>\"${title}\"</Name> + <url>${pid}.mov</url> + <Subtitle></Subtitle> + <Synopsis>${desc}</Synopsis> +@@ -3294,6 +4229,7 @@ + my $pid = shift; + my $metadata; + my $entry3; ++ my ($name, $episode, $duration, $available, $channel, $expiry, $longdesc, $versions, $guidance, $prog_type, $categories, $player, $thumbnail); + + # This URL works for all prog types: + # http://www.bbc.co.uk/iplayer/playlist/${pid} +@@ -3307,97 +4243,162 @@ + # This URL works for tv/radio prog types: + # $prog_feed_url = http://feeds.bbc.co.uk/iplayer/episode/$pid + +- if ( $prog{$pid}{type} =~ /(tv|radio)/i ) { ++ if ( $prog{$pid}{type} =~ /^(tv|radio)$/i ) { + $entry3 = request_url_retry($ua, $prog_feed_url.$pid, 3, '', ''); + decode_entities($entry3); + logger "DEBUG: $prog_feed_url.$pid:\n$entry3\n\n" if $opt{debug}; + # Flatten + $entry3 =~ s|\n| |g; +- } + +- # Entry3 format +- #<?xml version="1.0" encoding="utf-8"?> +- #<?xml-stylesheet href="http://www.bbc.co.uk/iplayer/style/rss.css" type="text/css"?> +- #<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-GB"> +- # <title>BBC iPlayer - Episode Detail: Edith Bowman: 22/09/2008 +- # Sara Cox sits in for Edith with another Cryptic Randomizer. +- # 2008-09-29T10:59:45Z +- # tag:feeds.bbc.co.uk,2008:/iplayer/feed/episode/b00djtfh +- # +- # +- # +- # BBC +- # http://www.bbc.co.uk +- # +- # +- # Edith Bowman: 22/09/2008 +- # tag:feeds.bbc.co.uk,2008:PIPS:b00djtfh +- # 2008-09-15T01:28:36Z +- # Sara Cox sits in for Edith with another Cryptic Randomizer. +- # +- # <p> +- # <a href="http://www.bbc.co.uk/iplayer/episode/b00djtfh?src=a_syn30"> +- # <img src="http://www.bbc.co.uk/iplayer/images/episode/b00djtfh_150_84.jpg" alt="Edith Bowman: 22/09/2008" /> +- # </a> +- # </p> +- # <p> +- # Sara Cox sits in for Edith with movie reviews and great new music, plus another Cryptic Randomizer. +- # </p> +- # +- # +- # +- # Edith Bowman: 22/09/2008 +- # Sara Cox sits in for Edith with movie reviews and great new music, plus another Cryptic Randomizer. +- # +- # 9100099 +- # 9100006 +- # 9200069 +- # BBC Radio 1 +- # BBC Radio 1 +- # +- # +- # +- # +- # +- # +- # +- # start=2008-09-22T15:44:20Z; +- # end=2008-09-29T15:02:00Z; +- # scheme=W3C-DTF +- # +- # +- # +- # +- # +- # +- # +- # +- +- my ($duration, $available, $channel, $expiry, $longdesc, $versions, $guidance, $type, $categories, $player, $thumbnail); +- +- $expiry = $1 if $entry3 =~ m{\s*start=.+?;\s*end=(.*?);}; +- $available = $1 if $entry3 =~ m{\s*start=(.+?);\s*end=.*?;}; +- $duration = $1 if $entry3 =~ m{duration=\"(\d+?)\"}; +- $type = $1 if $entry3 =~ m{medium=\"(\w+?)\"}; +- $longdesc = $1 if $entry3 =~ m{\s*(.*?)\s*<\/media:description>}; +- $guidance = $1 if $entry3 =~ m{(.+?)<\/media:rating>}; +- $player = $1 if $entry3 =~ m{}; +- $thumbnail = $1 if $entry3 =~ m{}; +- +- my @cats; +- for (split /\d+<\/media:category>}; +- } +- $categories = join ',', @cats; ++ # Entry3 format ++ # ++ # ++ # ++ # BBC iPlayer - Episode Detail: Edith Bowman: 22/09/2008 ++ # Sara Cox sits in for Edith with another Cryptic Randomizer. ++ # 2008-09-29T10:59:45Z ++ # tag:feeds.bbc.co.uk,2008:/iplayer/feed/episode/b00djtfh ++ # ++ # ++ # ++ # BBC ++ # http://www.bbc.co.uk ++ # ++ # ++ # Edith Bowman: 22/09/2008 ++ # tag:feeds.bbc.co.uk,2008:PIPS:b00djtfh ++ # 2008-09-15T01:28:36Z ++ # Sara Cox sits in for Edith with another Cryptic Randomizer. ++ # ++ # <p> ++ # <a href="http://www.bbc.co.uk/iplayer/episode/b00djtfh?src=a_syn30"> ++ # <img src="http://www.bbc.co.uk/iplayer/images/episode/b00djtfh_150_84.jpg" alt="Edith Bowman: 22/09/2008" /> ++ # </a> ++ # </p> ++ # <p> ++ # Sara Cox sits in for Edith with movie reviews and great new music, plus another Cryptic Randomizer. ++ # </p> ++ # ++ # ++ # ++ # Edith Bowman: 22/09/2008 ++ # Sara Cox sits in for Edith with movie reviews and great new music, plus another Cryptic Randomizer. ++ # ++ # 9100099 ++ # 9100006 ++ # 9200069 ++ # BBC Radio 1 ++ # BBC Radio 1 ++ # ++ # ++ # ++ # ++ # ++ # ++ # ++ # start=2008-09-22T15:44:20Z; ++ # end=2008-09-29T15:02:00Z; ++ # scheme=W3C-DTF ++ # ++ # ++ # ++ # ++ # ++ # ++ # ++ # ++ ++ $expiry = $1 if $entry3 =~ m{\s*start=.+?;\s*end=(.*?);}; ++ $available = $1 if $entry3 =~ m{\s*start=(.+?);\s*end=.*?;}; ++ $duration = $1 if $entry3 =~ m{duration=\"(\d+?)\"}; ++ $prog_type = $1 if $entry3 =~ m{medium=\"(\w+?)\"}; ++ $longdesc = $1 if $entry3 =~ m{\s*(.*?)\s*<\/media:description>}; ++ $guidance = $1 if $entry3 =~ m{(.+?)<\/media:rating>}; ++ $player = $1 if $entry3 =~ m{}; ++ $thumbnail = $1 if $entry3 =~ m{}; ++ ++ my @cats; ++ for (split /\d+<\/media:category>}; ++ } ++ $categories = join ',', @cats; ++ ++ # populate version pid metadata ++ get_version_pids($ua, $pid); ++ ++ # ITV Catch-Up metadata ++ } elsif ( $prog{$pid}{type} eq 'itv' ) { ++ my $prog_metadata_url_itv = 'http://www.itv.com/_app/Dynamic/CatchUpData.ashx?ViewType=5&Filter='; # + ++ $entry3 = request_url_retry($ua, "${prog_metadata_url_itv}${pid}", 3, '', ''); ++ decode_entities($entry3); ++ logger "DEBUG: ${prog_metadata_url_itv}${pid}:\n$entry3\n\n" if $opt{debug}; ++ # Flatten ++ $entry3 =~ s|[\r\n]||g; ++ ++ #div class="itvCatchUpPlayerPanel" xmlns:ms="urn:schemas-microsoft-com:xslt"> ++ #
    ITV Player is sponsored by Freeview
    ++ #

    Doctor Zhivago

    ++ #

    Part 1 of 3. Dramatisation of the epic novel by Boris Pasternak. Growing up in Moscow with his uncle, aunt and cousin Tonya, Yury is captivated by a stunning young girl called ...

    ++ #

    Mon 29 Dec 2008

    ++ # ++ # Duration: 1hr 30 min | ++ # Expires in ++ # 22 ++ # days ++ #

    ++ #

    3 Episodes Available ++ #

    ++ # ++ #
    33105
    ++ #
    17
    ++ #
    http://www.itv.com//img/480x272/Doctor-Zhivago-c47828f8-a1af-4cd2-b5a2-40c18eb7e63c.jpg
    ++ # ++ # + +- # populate version pid metadata +- get_version_pids($ua, $pid); ++ #
    ++ #
    ITV Player is sponsored by Freeview
    ++ #

    Affinity

    ++ #

    Victorian period drama with a murderous, pyschological twist.

    ++ #

    Sun 28 Dec 2008

    ++ # ++ # Duration: 2hr 00 min | ++ # Expires in ++ # 21 ++ # days ++ #

    ++ # ++ #
    ++ #
    ITV Video Guidance

    This programme contains strong language and scenes of a sexual nature  

    ++ #
    ++ #
    ++ #
    33076
    ++ #
    11
    ++ #
    http://www.itv.com//img/480x272/Affinity-9624033b-6e05-4784-85f7-114be0559b24.jpg
    ++ #
    ++ # ++ ++ #$expiry = $1 if $entry3 =~ m{\s*start=.+?;\s*end=(.*?);}; ++ $available = $1 if $entry3 =~ m{\s*(.+?)<\/span>}; ++ $duration = $1 if $entry3 =~ m{Duration:\s*(.+?)\s+\|}; ++ #$prog_type = $1 if $entry3 =~ m{medium=\"(\w+?)\"}; ++ $longdesc = $1 if $entry3 =~ m{

    (.+?)<\/p>}i; ++ $guidance = $1 if $entry3 =~ m{ITV Video Guidance<\/strong>

    \s*(.+?)[\W\s]*<\/p>}; ++ #$player = $1 if $entry3 =~ m{}; ++ $thumbnail = $1 if $entry3 =~ m{

    (.+?)
    }; ++ $name = $1 if $entry3 =~ m{

    (.+?)

    }; ++ } + + # Fill in from cache if not got from metadata + my %metadata; + $metadata{pid} = $pid; + $metadata{index} = $prog{$pid}{index}; +- $metadata{type} = $type || $prog{$pid}{type}; ++ $metadata{name} = $name || $prog{$pid}{name}; ++ $metadata{episode} = $episode || $prog{$pid}{episode}; ++ $metadata{type} = $prog_type || $prog{$pid}{type}; + $metadata{duration} = $duration || $prog{$pid}{duration}; + $metadata{channel} = $channel || $prog{$pid}{channel}; + $metadata{available} = $available || $prog{$pid}{available}; +@@ -3492,7 +4493,7 @@ + logger "WARNING: Cannot write or append to $historyfile\n\n"; + return 1; + } +- print HIST "$pid|$prog{$pid}{name}|$prog{$pid}{episode}|$prog{$pid}{type}|".time()."\n"; ++ print HIST "$pid|$prog{$pid}{name}|$prog{$pid}{episode}|$prog{$pid}{type}|".time()."|$prog{$pid}{mode}\n"; + close HIST; + return 0; + } +@@ -3555,7 +4556,10 @@ + # Add id3 tag to MP3 files if required + sub tag_file { + my $pid = shift; ++ + if ( $prog{$pid}{ext} eq 'mp3' ) { ++ # Return if file does not exist ++ return if ! -f $prog{$pid}{filename}; + # Create ID3 tagging options for external tagger program (escape " for shell) + my ( $id3_name, $id3_episode, $id3_desc, $id3_channel ) = ( $prog{$pid}{name}, $prog{$pid}{episode}, $prog{$pid}{desc}, $prog{$pid}{channel} ); + $id3_name =~ s|"|\"|g for ($id3_name, $id3_episode, $id3_desc, $id3_channel); +@@ -3580,9 +4584,16 @@ + sub list_unique_element_counts { + my $element_name = shift; + my %elements; +- logger "INFO: $opt{type} $element_name List:\n" if $opt{verbose}; ++ logger "INFO: ".(join ',', keys %type)." $element_name List:\n" if $opt{verbose}; + for my $pid (keys %prog) { +- for my $element ( split /,/, $prog{$pid}{$element_name} ) { ++ my @element; ++ # Need to separate the categories ++ if ($element_name eq 'categories') { ++ @element = split /,/, $prog{$pid}{$element_name}; ++ } else { ++ @element[0] = $prog{$pid}{$element_name}; ++ } ++ for my $element (@element) { + $elements{ $element }++; + } + } +@@ -3659,6 +4670,7 @@ + + + ++ + # Save the options on the cmdline as a PVR search with the specified name + sub pvr_add { + my $name = shift; +@@ -3670,7 +4682,7 @@ + return 1; + } + # Parse valid options and create array (ignore options from the options files that have not been overriden on the cmdline) +- for (grep /^(long|output.*|proxy|subdir|whitespace|versions|type|(exclude)?category|(exclude)?channel|command|realaudio|mp3audio|wav|raw|bandwidth|subtitles|suboffset|since|versionlist|verbose)$/, sort {$a <=> $b} keys %opt_cmdline) { ++ for (grep /^(amode|vmode|long|output.*|proxy|subdir|whitespace|versions|type|(exclude)?category|(exclude)?channel|command|realaudio|mp3audio|wav|raw|bandwidth|subtitles|suboffset|since|versionlist|verbose)$/, sort {lc $a cmp lc $b} keys %opt_cmdline) { + if ( defined $opt_cmdline{$_} ) { + push @options, "$_ $opt_cmdline{$_}"; + logger "DEBUG: Adding option $_ = $opt_cmdline{$_}\n" if $opt{debug}; +@@ -3715,7 +4727,7 @@ + pvr_load_list(); + # Print out list + logger "All PVR Searches:\n\n"; +- for my $name ( sort {$a <=> $b} keys %pvrsearches ) { ++ for my $name ( sort {lc $a cmp lc $b} keys %pvrsearches ) { + # Report whether disabled + if ( $pvrsearches{$name}{disable} ) { + logger "(Disabled) PVR Search '$name':\n"; +diff -ruaN mythvodka.orig/scripts/gethulu.pl mythvodka/scripts/gethulu.pl +--- mythvodka.orig/scripts/gethulu.pl 2009-01-06 19:26:30.000000000 +0000 ++++ mythvodka/scripts/gethulu.pl 2009-02-12 07:27:44.000000000 +0000 +@@ -123,7 +123,8 @@ + if($ephtml =~ m/thumbnail_url: "(.+?)"/) { $epimg=$1 } ; + + print MYTHMENU "\n"; +- print MYTHMENU "$eptitle\n"; ++ print MYTHMENU "$title-$eptitle\n"; ++ #print MYTHMENU "$eptitle\n"; + print MYTHMENU "http://www.hulu.com/watch/$epid\n"; + print MYTHMENU "$season - $epno\n"; + print MYTHMENU "$epdate - $epdesc\n"; +diff -ruaN mythvodka.orig/scripts/hulu mythvodka/scripts/hulu +--- mythvodka.orig/scripts/hulu 2009-01-04 15:25:24.000000000 +0000 ++++ mythvodka/scripts/hulu 2009-02-12 07:27:44.000000000 +0000 +@@ -22,6 +22,7 @@ + html=get_HTML(cid) + cidSoup=BeautifulStoneSoup(html) + pid=cidSoup.findAll('pid')[0].contents[0] ++logfile="/var/log/mythtv/hulu_quality.log" + + smilURL = "http://releasegeo.hulu.com/content.select?pid=" + pid + "&mbr=true&format=smil" + print smilURL +@@ -34,18 +35,58 @@ + #label streams + i=0 + quality=0 ++qual_medium=-1; qual_high=-1; qual_h264=-1; command2="echo hulu done." ++os.system("rm -f "+logfile+".0") ++os.system("mv -f "+logfile+" "+logfile+".0") ++f=open(logfile,'w') ++os.system("chmod a+rw "+logfile) ++print >>f, "Debug debug" ++print >>f, "hulu ",url, " ", fileout ++# ++# Find the various quality choices that are available ++# + for stream in video: +- if "480K" in stream['src'] or "480k" in stream['src']: ++ print >>f, stream ++ if "H264" in stream['src'] or "h264" in stream['src'] or "h264" in stream['profile'] or "H264" in stream['profile']: ++ streams.append(['H264',stream['src']]) ++ qual_h264=i ++ print >>f, "DebugQual h264", i ++ print >>f, "" ++ elif "480K" in stream['src'] or "480k" in stream['src']: + streams.append(['Flash (480k)',stream['src']]) ++ qual_medium=i ++ print >>f, "DebugQual medium", i ++ print >>f, "" + elif "700K" in stream['src'] or "700k" in stream['src']: + streams.append(['Flash (700k)',stream['src']]) + quality=i +- elif "H264" in stream['src'] or "h264" in stream['src']: +- streams.append(['H264',stream['src']]) ++ qual_high=i ++ print >>f, "DebugQual high", i ++ print >>f, "" ++ elif "medium" in stream['profile'] or "Medium" in stream['profile']: ++ streams.append(['Flash (Medium)',stream['src']]) ++ if qual_medium==-1: qual_medium=i ++ print >>f, "DebugQual Medium", i, qual_medium ++ print >>f, "" ++ elif "high" in stream['profile'] or "High" in stream['profile']: ++ streams.append(['Flash (High)',stream['src']]) ++ if qual_high==-1: qual_high=i ++ print >>f, "DebugQual High", i, qual_high ++ print >>f, "" + else: + streams.append(['unkown quality: '+stream['src'].split('/')[-1],stream['src']]) ++ print >>f, "DebugQual Unknown", i ++ print >>f, "" + i=i+1 + ++if qual_high>-1: ++ quality=qual_high ++elif qual_medium>-1: ++ quality=qual_medium ++ ++print >>f, "DebugQualVars: h264, high, medium, selected=",qual_h264,qual_high,qual_medium,quality ++ ++ + if quality!=-1: + print "stream url" + #generate random code +@@ -104,4 +145,9 @@ + command=command.replace(';','\\;') + + print command +- os.system(command) ++ print >>f,"Command is ",command ++ print >>f,"command2 is ",command2 ++ f.close() ++ os.system(command + "; " + command2) ++else: ++ f.close() +diff -ruaN mythvodka.orig/scripts/mythvodka_player.sh mythvodka/scripts/mythvodka_player.sh +--- mythvodka.orig/scripts/mythvodka_player.sh 1970-01-01 00:00:00.000000000 +0000 ++++ mythvodka/scripts/mythvodka_player.sh 2009-02-12 07:27:44.000000000 +0000 +@@ -0,0 +1,38 @@ ++#! /bin/bash ++# ++log=/var/log/mythtv/mythvodka_player.log ++player_list="/usr/local/bin/mplayer_h264 /usr/local/bin/mplayer \ ++ /usr/bin/mplayer /bin/mplayer" ++# ++player_list="/usr/local/bin/mplayer /usr/bin/mplayer /bin/mplayer" ++f="$1" ++shift ++rm -f $log ++echo "Request to play $f on `date`" >> $log ++player="" ++for player in $player_list; do ++ if [ -x "$player" ]; then ++ echo "Found player $player" >> $log ++ break ++ fi ++done ++if [ ! -x $player ]; then ++ echo "ERROR -- not able to find mplayer on your system. " >> $log ++ echo "I searched the following list" >> $log ++ echo " $player_list" >> $log ++ exit 1 ++fi ++for pass in 1 2 4 8 10; do ++ size="0" ++ if [ -e $f ]; then ++ size=$( du --apparent-size -sD "$f" | awk '{ print $1 }' ) ++ if [ $size -gt 1500 ]; then ++ break ++ fi ++ fi ++ echo "Pass $pass, filesize is $size kbytes, sleep $pass seconds" >> $log ++ sleep $pass ++done ++size=$( du --apparent-size -sD "$f" | awk '{ print $1 }' ) ++echo "Reached $size kb on pass $pass `date`" >> $log ++$player -fs -vo xv $f diff --git a/abs/extra/mythvodka/mythvodka.install b/abs/extra/mythvodka/mythvodka.install new file mode 100644 index 0000000..4a9827e --- /dev/null +++ b/abs/extra/mythvodka/mythvodka.install @@ -0,0 +1,47 @@ +# arg 1: the new package version +post_install() { + mv /usr/share/mythtv/is.xml /tmp + grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo " " >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + echo "" >> /tmp/is.xml.tmp + mv /tmp/is.xml.tmp /usr/share/mythtv/is.xml + + mv /usr/share/mythtv/media_settings.xml /tmp + grep -v -e /mythmenu /tmp/media_settings.xml > /tmp/ms.xml.tmp + echo "" >> /tmp/ms.xml.tmp + echo " " >> /tmp/ms.xml.tmp + echo "" >> /tmp/ms.xml.tmp + echo "" >> /tmp/ms.xml.tmp + echo "" >> /tmp/ms.xml.tmp + mv /tmp/ms.xml.tmp /usr/share/mythtv/media_settings.xml +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + mv /usr/share/mythtv/is.xml /tmp/is.xml.tmp + sed -e '/\#MythVodka/,/\#MythVodka/d' < /tmp/is.xml.tmp > /usr/share/mythtv/is.xml + mv /usr/share/mythtv/media_settings.xml /tmp/ms.xml.tmp + sed -e '/\#MythVodka/,/\#MythVodka/d' < /tmp/ms.xml.tmp > /usr/share/mythtv/media_settings.xml +} + +op=$1 +shift +$op $* diff --git a/abs/extra/neon/PKGBUILD b/abs/extra/neon/PKGBUILD new file mode 100644 index 0000000..4aa3802 --- /dev/null +++ b/abs/extra/neon/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 10269 2008-08-25 13:23:04Z andyrtr $ +# Contributor: Tom Newsom +# Maintainer: Andreas Radke + +# KEEP LIBTOOL FILES! +pkgname=neon +pkgver=0.28.3 +pkgrel=2 +pkgdesc="HTTP and WebDAV client library with a C interface" +arch=('i686' 'x86_64') +license=('GPL' 'LGPL') +depends=('openssl>=0.9.8g-4' 'heimdal>=1.2.1' 'zlib' 'expat>=2.0.1' 'db>=4.7.25') +url="http://www.webdav.org/neon/" +source=(http://www.webdav.org/neon/${pkgname}-${pkgver}.tar.gz) +md5sums=('47599a328862ce64ac3c52726d6daa12') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --with-ssl --with-expat --enable-shared --disable-static + make || return 1 + make DESTDIR=${pkgdir} install +} diff --git a/abs/extra/nspr/PKGBUILD b/abs/extra/nspr/PKGBUILD new file mode 100644 index 0000000..453b515 --- /dev/null +++ b/abs/extra/nspr/PKGBUILD @@ -0,0 +1,53 @@ +# $Id: PKGBUILD 18817 2008-11-09 12:29:50Z jgc $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=nspr +pkgver=4.8 +pkgrel=2 +pkgdesc="Netscape Portable Runtime" +arch=(i686 x86_64) +url="http://www.mozilla.org/projects/nspr/" +license=('MPL' 'GPL') +depends=('glibc') +makedepends=('zip') +options=(!emptydirs) +source=(ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v${pkgver}/src/${pkgname}-${pkgver}.tar.gz + nspr.pc.in) +md5sums=('e0916a72bcc6c427551ea262183fdb26' + 'bce1611f3117b53fc904cab549c09967') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + [ "$CARCH" = "x86_64" ] && confflags="--enable-64bit" + unset CFLAGS + unset CXXFLAGS + ./mozilla/nsprpub/configure \ + --prefix=/usr \ + --libdir=/usr/lib \ + --includedir=/usr/include/nspr \ + --enable-optimize \ + --disable-debug ${confflags} || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + NSPR_LIBS=`./config/nspr-config --libs` + NSPR_CFLAGS=`./config/nspr-config --cflags` + NSPR_VERSION=`./config/nspr-config --version` + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" || return 1 + sed "${srcdir}/nspr.pc.in" -e "s,%libdir%,/usr/lib," \ + -e "s,%prefix%,/usr," \ + -e "s,%exec_prefix%,/usr/bin," \ + -e "s,%includedir%,/usr/include/nspr," \ + -e "s,%NSPR_VERSION%,${NSPR_VERSION}," \ + -e "s,%FULL_NSPR_LIBS%,${NSPR_LIBS}," \ + -e "s,%FULL_NSPR_CFLAGS%,${NSPR_CFLAGS}," > "${pkgdir}/usr/lib/pkgconfig/nspr.pc" || return 1 + chmod 644 "${pkgdir}/usr/lib/pkgconfig/nspr.pc" || return 1 + ln -sf nspr.pc "${pkgdir}/usr/lib/pkgconfig/mozilla-nspr.pc" || return 1 + + chmod 644 ${pkgdir}/usr/lib/*.a || return 1 + + rm -rf "${pkgdir}/usr/bin/compile-et.pl" \ + "${pkgdir}/usr/bin/prerr.properties" \ + "${pkgdir}/usr/share/aclocal/nspr.m4" \ + "${pkgdir}/usr/include/nspr/md" +} diff --git a/abs/extra/nspr/nspr.pc.in b/abs/extra/nspr/nspr.pc.in new file mode 100644 index 0000000..1d8f4a0 --- /dev/null +++ b/abs/extra/nspr/nspr.pc.in @@ -0,0 +1,10 @@ +prefix=%prefix% +exec_prefix=%exec_prefix% +libdir=%libdir% +includedir=%includedir% + +Name: NSPR +Description: The Netscape Portable Runtime +Version: %NSPR_VERSION% +Libs: %FULL_NSPR_LIBS% +Cflags: %FULL_NSPR_CFLAGS% diff --git a/abs/extra/nss/PKGBUILD b/abs/extra/nss/PKGBUILD new file mode 100644 index 0000000..8e7d434 --- /dev/null +++ b/abs/extra/nss/PKGBUILD @@ -0,0 +1,84 @@ +# $Id: PKGBUILD 22037 2008-12-21 11:44:41Z jgc $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=nss +pkgver=3.12.3 +_pkgver=3_12_3 +_nssver=3.12.3.0 +pkgrel=2 +pkgdesc="Mozilla Network Security Services" +arch=(i686 x86_64) +url="http://www.mozilla.org/projects/security/pki/nss/" +license=('MPL' 'GPL') +_nsprver=4.8 +depends=("nspr>=${_nsprver}" 'sqlite3>=3.6.7') +replaces=('nss-nspr') +source=(https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_${_pkgver}_RTM/src/nss-${pkgver}.tar.bz2 + nss-nolocalsql.patch + nss.pc.in + nss-config.in) +md5sums=('ecb7079ba4ebcf29b7716775384f1f18' + '1837781eed35bfb6f826cfb3efcd6409' + 'c547b030c57fe1ed8b77c73bf52b3ded' + '46bee81908f1e5b26d6a7a2e14c64d9f') + +build() { + cd ${srcdir}/nss-${pkgver} + patch -Np0 -i "${srcdir}/nss-nolocalsql.patch" || return 1 + unset CFLAGS + unset CXXFLAGS + export BUILD_OPT=1 + export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 + export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 + export NSPR_INCLUDE_DIR=`pkg-config --cflags-only-I nspr | sed 's/-I//'` + export NSPR_LIB_DIR=`pkg-config --libs-only-L nspr | sed 's/-L.//'` + + [ "$CARCH" = "x86_64" ] && export USE_64=1 + + make -j 1 -C mozilla/security/coreconf || return 1 + make -j 1 -C mozilla/security/dbm || return 1 + make -j 1 -C mozilla/security/nss || return 1 + + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + install -m755 -d "${pkgdir}/usr/bin" + install -m755 -d "${pkgdir}/usr/include/nss" + + NSS_VMAJOR=`grep "#define.*NSS_VMAJOR" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'` + NSS_VMINOR=`grep "#define.*NSS_VMINOR" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'` + NSS_VPATCH=`grep "#define.*NSS_VPATCH" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'` + + sed "${srcdir}/nss.pc.in" -e "s,%libdir%,/usr/lib,g" \ + -e "s,%prefix%,/usr,g" \ + -e "s,%exec_prefix%,/usr/bin,g" \ + -e "s,%includedir%,/usr/include/nss,g" \ + -e "s,%NSPR_VERSION%,${_nsprver},g" \ + -e "s,%NSS_VERSION%,${_nssver},g" > \ + "${pkgdir}/usr/lib/pkgconfig/nss.pc" || return 1 + ln -sf nss.pc "${pkgdir}/usr/lib/pkgconfig/mozilla-nss.pc" || return 1 + chmod 644 ${pkgdir}/usr/lib/pkgconfig/*.pc || return 1 + + sed "${srcdir}/nss-config.in" -e "s,@libdir@,/usr/lib,g" \ + -e "s,@prefix@,/usr/bin,g" \ + -e "s,@exec_prefix@,/usr/bin,g" \ + -e "s,@includedir@,/usr/include/nss,g" \ + -e "s,@MOD_MAJOR_VERSION@,${NSS_VMAJOR},g" \ + -e "s,@MOD_MINOR_VERSION@,${NSS_VMINOR},g" \ + -e "s,@MOD_PATCH_VERSION@,${NSS_VPATCH},g" \ + > "${pkgdir}/usr/bin/nss-config" || return 1 + chmod 755 "${pkgdir}/usr/bin/nss-config" || return 1 + + for file in libsoftokn3.so libfreebl3.so libnss3.so libnssutil3.so \ + libssl3.so libsmime3.so libnssckbi.so libnssdbm3.so + do + install -m755 mozilla/dist/*.OBJ/lib/${file} "${pkgdir}/usr/lib/" || return 1 + done + for file in libcrmf.a libnssb.a libnssckfw.a; do + install -m644 mozilla/dist/*.OBJ/lib/${file} "${pkgdir}/usr/lib/" || return 1 + done + + for file in certutil cmsutil crlutil modutil pk12util signtool signver ssltap; do + install -m755 mozilla/dist/*.OBJ/bin/${file} "${pkgdir}/usr/bin/" || return 1 + done + + install -m644 mozilla/dist/public/nss/*.h "${pkgdir}/usr/include/nss/" || return 1 +} diff --git a/abs/extra/nss/nss-config.in b/abs/extra/nss/nss-config.in new file mode 100644 index 0000000..f8f893e --- /dev/null +++ b/abs/extra/nss/nss-config.in @@ -0,0 +1,145 @@ +#!/bin/sh + +prefix=@prefix@ + +major_version=@MOD_MAJOR_VERSION@ +minor_version=@MOD_MINOR_VERSION@ +patch_version=@MOD_PATCH_VERSION@ + +usage() +{ + cat <&2 +fi + +lib_ssl=yes +lib_smime=yes +lib_nss=yes +lib_nssutil=yes + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --includedir=*) + includedir=$optarg + ;; + --includedir) + echo_includedir=yes + ;; + --libdir=*) + libdir=$optarg + ;; + --libdir) + echo_libdir=yes + ;; + --version) + echo ${major_version}.${minor_version}.${patch_version} + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + ssl) + lib_ssl=yes + ;; + smime) + lib_smime=yes + ;; + nss) + lib_nss=yes + ;; + nssutil) + lib_nssutil=yes + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +# Set variables that may be dependent upon other variables +if test -z "$exec_prefix"; then + exec_prefix=`pkg-config --variable=exec_prefix nss` +fi +if test -z "$includedir"; then + includedir=`pkg-config --variable=includedir nss` +fi +if test -z "$libdir"; then + libdir=`pkg-config --variable=libdir nss` +fi + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi + +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi + +if test "$echo_includedir" = "yes"; then + echo $includedir +fi + +if test "$echo_libdir" = "yes"; then + echo $libdir +fi + +if test "$echo_cflags" = "yes"; then + echo -I$includedir +fi + +if test "$echo_libs" = "yes"; then + libdirs="-Wl,-rpath-link,$libdir -L$libdir" + if test -n "$lib_ssl"; then + libdirs="$libdirs -lssl${major_version}" + fi + if test -n "$lib_smime"; then + libdirs="$libdirs -lsmime${major_version}" + fi + if test -n "$lib_nss"; then + libdirs="$libdirs -lnss${major_version}" + fi + if test -n "$lib_nssutil"; then + libdirs="$libdirs -lnssutil${major_version}" + fi + echo $libdirs +fi + diff --git a/abs/extra/nss/nss-nolocalsql.patch b/abs/extra/nss/nss-nolocalsql.patch new file mode 100644 index 0000000..b72cc66 --- /dev/null +++ b/abs/extra/nss/nss-nolocalsql.patch @@ -0,0 +1,53 @@ +diff -up mozilla/security/nss/lib/Makefile.nolocalsql mozilla/security/nss/lib/Makefile +--- mozilla/security/nss/lib/Makefile.nolocalsql 2007-11-06 15:12:37.000000000 +0100 ++++ mozilla/security/nss/lib/Makefile 2007-11-06 15:13:35.000000000 +0100 +@@ -62,11 +62,11 @@ ifeq ($(OS_TARGET), WINCE) + DIRS := $(filter-out fortcrypt,$(DIRS)) + endif + +-ifndef MOZILLA_CLIENT +-ifndef NSS_USE_SYSTEM_SQLITE +-DIRS := sqlite $(DIRS) +-endif +-endif ++#ifndef MOZILLA_CLIENT ++#ifndef NSS_USE_SYSTEM_SQLITE ++#DIRS := sqlite $(DIRS) ++#endif ++#endif + + ####################################################################### + # (5) Execute "global" rules. (OPTIONAL) # +diff -up mozilla/security/nss/lib/softoken/legacydb/manifest.mn.nolocalsql mozilla/security/nss/lib/softoken/legacydb/manifest.mn +--- mozilla/security/nss/lib/softoken/legacydb/manifest.mn.nolocalsql 2007-11-06 15:10:59.000000000 +0100 ++++ mozilla/security/nss/lib/softoken/legacydb/manifest.mn 2007-11-06 15:11:07.000000000 +0100 +@@ -46,9 +46,9 @@ MAPFILE = $(OBJDIR)/nssdbm.def + + DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\" + +-ifdef MOZILLA_CLIENT +-INCLUDES += -I$(DIST)/include/sqlite3 +-endif ++#ifdef MOZILLA_CLIENT ++#INCLUDES += -I$(DIST)/include/sqlite3 ++#endif + + CSRCS = \ + dbmshim.c \ +diff -up mozilla/security/nss/lib/softoken/manifest.mn.nolocalsql mozilla/security/nss/lib/softoken/manifest.mn +--- mozilla/security/nss/lib/softoken/manifest.mn.nolocalsql 2007-11-06 15:08:14.000000000 +0100 ++++ mozilla/security/nss/lib/softoken/manifest.mn 2007-11-06 15:10:21.000000000 +0100 +@@ -47,9 +47,9 @@ MAPFILE = $(OBJDIR)/softokn.def + + DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\" -DSHLIB_VERSION=\"$(LIBRARY_VERSION)\" + +-ifdef MOZILLA_CLIENT +-INCLUDES += -I$(DIST)/include/sqlite3 +-endif ++#ifdef MOZILLA_CLIENT ++#INCLUDES += -I$(DIST)/include/sqlite3 ++#endif + + EXPORTS = \ + pkcs11.h \ +diff -up mozilla/security/nss/lib/softoken/config.mk.nolocalsql mozilla/security/nss/lib/softoken/config.mk diff --git a/abs/extra/nss/nss.pc.in b/abs/extra/nss/nss.pc.in new file mode 100644 index 0000000..d47b9e1 --- /dev/null +++ b/abs/extra/nss/nss.pc.in @@ -0,0 +1,11 @@ +prefix=%prefix% +exec_prefix=%exec_prefix% +libdir=%libdir% +includedir=%includedir% + +Name: NSS +Description: Network Security Services +Version: %NSS_VERSION% +Requires: nspr >= %NSPR_VERSION% +Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3 +Cflags: -I${includedir} diff --git a/abs/extra/nvram-wake/PKGBUILD b/abs/extra/nvram-wake/PKGBUILD new file mode 100755 index 0000000..d2d76b1 --- /dev/null +++ b/abs/extra/nvram-wake/PKGBUILD @@ -0,0 +1,16 @@ +pkgname=nvram-wake +pkgver=0.99b +pkgrel=1 +pkgdesc="set the wakeup time of the localpc" +license="GPL" +arch=(i686) +url="http://sourceforge.net/projects/nvram-wakeup/" +source=(http://superb-west.dl.sourceforge.net/sourceforge/nvram-wakeup/nvram-wakup-0.99b.tar.gz ) + + +build() { + cd $startdir/src/$pkgname-$pkgver + make || return 1 + make prefix=$startdir/pkg/usr install +} + diff --git a/abs/extra/ocaml/PKGBUILD b/abs/extra/ocaml/PKGBUILD new file mode 100644 index 0000000..1ca7fe5 --- /dev/null +++ b/abs/extra/ocaml/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 28732 2009-03-01 22:25:49Z tpowa $ +#Maintainer: Tobias Powalowski + +pkgname=ocaml +pkgver=3.11.0 +pkgrel=1 +pkgdesc="Ocaml compiler - Ocaml is a functional language with OO extensions" +arch=(i686 x86_64) +license=('LGPL2' 'custom: QPL-1.0') +url="http://caml.inria.fr/" +depends=('gdbm') +makedepends=('tk' 'ncurses>=5.6-7' 'libx11') +optdepends=('ncurses=5.6-7: advanced ncurses features' 'tk: advanced tk features') +source=(http://caml.inria.fr/distrib/ocaml-3.11/$pkgname-$pkgver.tar.gz) +options=('!makeflags' '!emptydirs') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure -prefix /usr + make world.opt || return 1 + make PREFIX=$pkgdir/usr install || return 1 + +# Save >10MB with this one, makepkg only strips debug symbols. + find ${startdir}/pkg/usr/lib -type f -name '*.so.*' -exec strip --strip-unneeded {} \; + +# install license +install -D -m 644 $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/ocaml/LICENSE +} +md5sums=('be152066bdf09761ddf1c31291e5cb90') diff --git a/abs/extra/openjdk6/PKGBUILD b/abs/extra/openjdk6/PKGBUILD new file mode 100644 index 0000000..22ee813 --- /dev/null +++ b/abs/extra/openjdk6/PKGBUILD @@ -0,0 +1,155 @@ +# $Id: PKGBUILD 29222 2009-03-06 20:55:45Z andyrtr $ +# Maintainer: Andreas Radke +# Contributor: Jan de Groot + +pkgname=openjdk6 +pkgver=1.5 +_icedteaver=1.5pre +pkgrel=0.1 +_date=20090305 +pkgdesc='Free Java environment based on OpenJDK 6.0 with IcedTea6 replacing binary plugs.' +url='http://icedtea.classpath.org' +arch=('i686' 'x86_64') +license=('GPL') +_openjdk_version=b14 +_openjdk_date=25_nov_2008 +_hotspotver=fc6a5ae3fef5 # what it downlopads itself / remove from configure to get it +depends=('gcc-libs' 'xdg-utils' 'hicolor-icon-theme') +makedepends=('alsa-lib' 'libxtst' 'giflib' 'libxp' 'gtk2' 'nspr' 'zlib' 'freetype2' 'libjpeg' 'libx11' 'libcups' 'patch' 'xalan-java' 'xulrunner>=1.9.0.3' 'apache-ant>=1.7.0' 'autoconf' 'unzip' 'rhino' 'mercurial') +conflicts=('java-environment' 'java-runtime') +provides=('java-environment=6' 'java-runtime=6') +options=(!emptydirs) +install=openjdk6.install +source=(http://download.java.net/openjdk/jdk6/promoted/${_openjdk_version}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz + #http://icedtea.classpath.org/download/source/icedtea6-${_icedteaver}.tar.gz + ftp://ftp.archlinux.org/other/openjdk6/icedtea6-${_date}.tar.bz2 + http://hg.openjdk.java.net/jdk7/hotspot/hotspot/archive/${_hotspotver}.tar.gz + fix_jdk_cmds_path.diff + fix_corba_cmds_path.diff + gcjwebplugin_xulrunner.diff + aatext_by_default.diff + fontconfig-paths.diff + openjdk6.profile) +noextract=(openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz ${_hotspotver}.tar.gz) +md5sums=('9f9773a822156dd3d576d83d794364ce' + 'd57bf545dc50d41588b43112393dac26' + '1c3510387dccdb4907d0fd2f1c58e372' + '5da3e39fa60985576c4f37d1491efbe2' + 'f7e7a212e50abb56a6ef1a2b1bd27405' + 'ed2e808df2d2fc2ea7dae5139d475192' + 'ef60d567c0d9bad111212851220deafd' + '104380f0b900c840141e572a7fb70c27' + 'd0703088e10aa957c037644ab88d716d') + +build() { + # for hg checkout install mercurial and +# mkdir ${srcdir}/icedtea6-${_date} +# cd ${srcdir}/icedtea6-${_date} +# hg clone http://icedtea.classpath.org/hg/icedtea6 || return 1 +# tar -cvjf ../../icedtea6-${_date}.tar.bz2 * +# return 1 + + unset JAVA_HOME + unset CLASSPATH + if [ "${CARCH}" = "x86_64" ]; then + _arch=amd64 + else + _arch=i586 + fi + _javaver=1.6.0 + _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk + + cd ${srcdir}/icedtea6 +# cd ${srcdir}/icedtea6-${_icedteaver} + ln -s ${srcdir}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz . + ln -s ${srcdir}/${_hotspotver}.tar.gz . + + # fix xulrunner linking + patch -Np0 -i ${srcdir}/gcjwebplugin_xulrunner.diff || return 1 + + cp ${srcdir}/*.diff ${srcdir}/icedtea6/patches/ +# cp ${srcdir}/*.diff ${srcdir}/icedtea6-${_icedteaver}/patches/ + export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/fix_corba_cmds_path.diff patches/aatext_by_default.diff patches/fontconfig-paths.diff" + + ./autogen.sh + autoreconf # needed due to mercurial build + + export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}" + export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}" + unset MAKEFLAGS + + if [ -x ${_jvmdir}/bin/javac ]; then + JCONF="--with-openjdk --with-openjdk-home=${_jvmdir}" + elif [ -x /opt/java/bin/javac ]; then + JCONF="--with-openjdk --with-openjdk-home=/opt/java" + elif [ -x /usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/bin/javac ]; then + JCONF="--with-gcj-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0 --with-javac" + elif [ -x /usr/lib/java-${_javaver}-openjdk/bin/javac ]; then + JCONF="--with-openjdk --with-openjdk-home=/usr/lib/java-${_javaver}-openjdk" + # ^ only fallback to build with broken 1.2-3, can be removed later + else + echo "No supported java installation found, install either openjdk6, jdk or java-gcj-compat" + return 1 + fi + + ./configure --with-parallel-jobs=${HOTSPOT_BUILD_JOBS} \ + --with-xalan2-jar=/usr/share/java/xalan.jar \ + --with-hotspot-src-zip=${_hotspotver}.tar.gz \ + --with-pkgversion=ArchLinux-${pkgver}-${pkgrel}-$CARCH $JCONF + LD_PRELOAD="" make || return 1 + + install -m755 -d ${pkgdir}/${_jvmdir}/jre + + pushd ${srcdir}/icedtea6/openjdk/control/build/linux-${_arch}/j2sdk-image +# pushd ${srcdir}/icedtea6-${_icedteaver}/openjdk/control/build/linux-${_arch}/j2sdk-image + # Install main files. + cp -a bin include lib src.zip ${pkgdir}/${_jvmdir}/ || return 1 + cp -a jre/bin jre/lib ${pkgdir}/${_jvmdir}/jre/ || return 1 + + mv ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.Ubuntu.properties.src \ + ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.properties.src || return 1 + mv ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.Ubuntu.bfc \ + ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.bfc || return 1 + rm -f ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.*.bfc + rm -f ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.*.properties.src + + # Install man pages. + install -m755 -d ${pkgdir}/usr/share/man/man1 + install -m644 man/man1/*.1 ${pkgdir}/usr/share/man/man1/ || return 1 + + # Install demos and samples. + cp -a demo ${pkgdir}/${_jvmdir}/ || return 1 + install -m755 -d sample/rmi + mv bin/java-rmi.cgi sample/rmi || return 1 + cp -a sample ${pkgdir}/${_jvmdir}/ || return 1 + popd + + # Install icons and menu entries. + for s in 16 24 32 48 ; do + install -m755 -d ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps + install -m644 openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \ + ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/java.png || return 1 + done + + # Install desktop files. + install -m755 -d ${pkgdir}/usr/share/{applications,pixmaps} + install -m644 javaws.png ${pkgdir}/usr/share/pixmaps || return 1 + install -m644 {javaws,jconsole,policytool}.desktop ${pkgdir}/usr/share/applications || return 1 + + # link the mozilla-plugin + install -m755 -d ${pkgdir}/usr/lib/mozilla/plugins/ + ln -sf ${_jvmdir}/jre/lib/${_arch/i586/i386}/IcedTeaPlugin.so ${pkgdir}/usr/lib/mozilla/plugins/ || return 1 + + # link binaries into /usr/bin + install -m755 -d ${pkgdir}/usr/bin + pushd ${pkgdir}/${_jvmdir}/bin + for file in *; do + ln -sf ${_jvmdir}/bin/${file} \ + ${pkgdir}/usr/bin || return 1 + done + popd + + # set some variables + install -m755 -d ${pkgdir}/etc/profile.d + install -m755 ${srcdir}/openjdk6.profile ${pkgdir}/etc/profile.d/openjdk6.sh || return 1 +} diff --git a/abs/extra/openjdk6/aatext_by_default.diff b/abs/extra/openjdk6/aatext_by_default.diff new file mode 100644 index 0000000..268ea99 --- /dev/null +++ b/abs/extra/openjdk6/aatext_by_default.diff @@ -0,0 +1,35 @@ +--- openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java.old 2008-01-08 20:23:56.000000000 +0200 ++++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java 2008-02-24 12:39:19.000000000 +0200 +@@ -1875,7 +1875,6 @@ + */ + private static boolean useSystemAAFontSettings() { + if (!checkedSystemAAFontSettings) { +- useSystemAAFontSettings = true; /* initially set this true */ + String systemAAFonts = null; + Toolkit tk = Toolkit.getDefaultToolkit(); + if (tk instanceof SunToolkit) { +@@ -1883,20 +1882,10 @@ + (String)AccessController.doPrivileged( + new GetPropertyAction("awt.useSystemAAFontSettings")); + } +- if (systemAAFonts != null) { +- useSystemAAFontSettings = +- Boolean.valueOf(systemAAFonts).booleanValue(); +- /* If it is anything other than "true", then it may be +- * a hint name , or it may be "off, "default", etc. +- */ +- if (!useSystemAAFontSettings) { +- desktopFontHints = getDesktopAAHintsByName(systemAAFonts); +- } +- } +- /* If its still true, apply the extra condition */ +- if (useSystemAAFontSettings) { +- useSystemAAFontSettings = lastExtraCondition; +- } ++ if (systemAAFonts == null || Boolean.parseBoolean(systemAAFonts)) ++ systemAAFonts = "on"; ++ desktopFontHints = getDesktopAAHintsByName(systemAAFonts); ++ useSystemAAFontSettings = desktopFontHints != null; + checkedSystemAAFontSettings = true; + } + return useSystemAAFontSettings; diff --git a/abs/extra/openjdk6/fix_corba_cmds_path.diff b/abs/extra/openjdk6/fix_corba_cmds_path.diff new file mode 100644 index 0000000..8426578 --- /dev/null +++ b/abs/extra/openjdk6/fix_corba_cmds_path.diff @@ -0,0 +1,33 @@ +--- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:26:12.000000000 +0300 ++++ openjdk/corba/make/common/shared/Defs-utils.gmk 2008-04-14 15:35:13.000000000 +0300 +@@ -86,10 +86,10 @@ + CHMOD = $(UTILS_COMMAND_PATH)chmod + CMP = $(UTILS_USR_BIN_PATH)cmp + COMM = $(UTILS_USR_BIN_PATH)comm +-COMPRESS = $(UTILS_USR_BIN_PATH)compress ++COMPRESS = $(UTILS_COMMAND_PATH)compress + CP = $(UTILS_COMMAND_PATH)cp + CPIO = $(UTILS_COMMAND_PATH)cpio +-CUT = $(UTILS_USR_BIN_PATH)cut ++CUT = $(UTILS_COMMAND_PATH)cut + DATE = $(UTILS_COMMAND_PATH)date + DF = $(UTILS_COMMAND_PATH)df + DIFF = $(UTILS_USR_BIN_PATH)diff +@@ -136,7 +136,7 @@ + TAR = $(UTILS_COMMAND_PATH)tar + TEST = $(UTILS_USR_BIN_PATH)test + TOUCH = $(UTILS_COMMAND_PATH)touch +-TR = $(UTILS_USR_BIN_PATH)tr ++TR = $(UTILS_COMMAND_PATH)tr + TRUE = $(UTILS_COMMAND_PATH)true + UNAME = $(UTILS_COMMAND_PATH)uname + UNIQ = $(UTILS_USR_BIN_PATH)uniq +@@ -186,7 +186,7 @@ + # others have it in /usr/bin. + SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \ + $(wildcard $(UTILS_USR_BIN_PATH)sort)) +- NAWK = $(USRBIN_PATH)gawk ++ NAWK = $(UTILS_COMMAND_PATH)gawk + # Intrinsic unix command, with backslash-escaped character interpretation + ECHO = /bin/echo -e + # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not) diff --git a/abs/extra/openjdk6/fix_jdk_cmds_path.diff b/abs/extra/openjdk6/fix_jdk_cmds_path.diff new file mode 100644 index 0000000..7e16e17 --- /dev/null +++ b/abs/extra/openjdk6/fix_jdk_cmds_path.diff @@ -0,0 +1,33 @@ +--- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:33:23.000000000 +0300 ++++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2008-04-14 15:37:34.000000000 +0300 +@@ -76,10 +76,10 @@ + CHMOD = $(UTILS_COMMAND_PATH)chmod + CMP = $(UTILS_USR_BIN_PATH)cmp + COMM = $(UTILS_USR_BIN_PATH)comm +-COMPRESS = $(UTILS_USR_BIN_PATH)compress ++COMPRESS = $(UTILS_COMMAND_PATH)compress + CP = $(UTILS_COMMAND_PATH)cp + CPIO = $(UTILS_COMMAND_PATH)cpio +-CUT = $(UTILS_USR_BIN_PATH)cut ++CUT = $(UTILS_COMMAND_PATH)cut + DATE = $(UTILS_COMMAND_PATH)date + DF = $(UTILS_COMMAND_PATH)df + DIFF = $(UTILS_USR_BIN_PATH)diff +@@ -126,7 +126,7 @@ + TAR = $(UTILS_COMMAND_PATH)tar + TEST = $(UTILS_USR_BIN_PATH)test + TOUCH = $(UTILS_COMMAND_PATH)touch +-TR = $(UTILS_USR_BIN_PATH)tr ++TR = $(UTILS_COMMAND_PATH)tr + TRUE = $(UTILS_COMMAND_PATH)true + UNAME = $(UTILS_COMMAND_PATH)uname + UNIQ = $(UTILS_USR_BIN_PATH)uniq +@@ -173,7 +173,7 @@ + BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \ + $(wildcard $(UTILS_USR_BIN_PATH)basename)) + +- NAWK = $(USRBIN_PATH)gawk ++ NAWK = $(UTILS_COMMAND_PATH)gawk + # Intrinsic unix command, with backslash-escaped character interpretation + ECHO = /bin/echo -e + # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not) diff --git a/abs/extra/openjdk6/fontconfig-paths.diff b/abs/extra/openjdk6/fontconfig-paths.diff new file mode 100644 index 0000000..77d3e03 --- /dev/null +++ b/abs/extra/openjdk6/fontconfig-paths.diff @@ -0,0 +1,43 @@ +--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.orig 2008-08-06 14:11:55.000000000 +0200 ++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties 2008-08-06 14:15:36.000000000 +0200 +@@ -128,23 +128,23 @@ + + # Font File Names + +-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf +-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf +-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf +-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf ++filename.DejaVu_Sans=/usr/share/fonts/TTF/DejaVuSans.ttf ++filename.DejaVu_Sans_Bold=/usr/share/fonts/TTF/DejaVuSans-Bold.ttf ++filename.DejaVu_Sans_Oblique=/usr/share/fonts/TTF/DejaVuSans-Oblique.ttf ++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSans-BoldOblique.ttf + +-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf +-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf +-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf +-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf ++filename.DejaVu_Sans_Mono=/usr/share/fonts/TTF/DejaVuSansMono.ttf ++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf ++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf ++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf + +-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf +-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf +-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf +-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf ++filename.DejaVu_Serif=/usr/share/fonts/TTF/DejaVuSerif.ttf ++filename.DejaVu_Serif_Bold=/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf ++filename.DejaVu_Serif_Oblique=/usr/share/fonts/TTF/DejaVuSerif-Oblique.ttf ++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSerif-BoldOblique.ttf + +-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf +-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho-subst.ttf +-filename.AR_PL_ZenKai_Uni=/usr/share/fonts//truetype/arphic/ukai.ttf +-filename.Baekmuk_Dotum=/usr/share/fonts/truetype/baekmuk/dotum.ttf +-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf ++filename.Kochi_Gothic=/usr/share/fonts/TTF/kochi-gothic-subst.ttf ++filename.Kochi_Mincho=/usr/share/fonts/TTF/kochi-mincho-subst.ttf ++filename.AR_PL_ZenKai_Uni=/usr/share/fonts/TTF/ukai.ttf ++filename.Baekmuk_Dotum=/usr/share/fonts/TTF/dotum.ttf ++filename.Baekmuk_Batang=/usr/share/fonts/TTF/batang.ttf diff --git a/abs/extra/openjdk6/gcjwebplugin_xulrunner.diff b/abs/extra/openjdk6/gcjwebplugin_xulrunner.diff new file mode 100644 index 0000000..0ed9209 --- /dev/null +++ b/abs/extra/openjdk6/gcjwebplugin_xulrunner.diff @@ -0,0 +1,11 @@ +--- Makefile.am 2008-07-21 15:12:07.000000000 +0000 ++++ Makefile.am.new 2008-07-22 08:37:49.000000000 +0000 +@@ -1176,7 +1176,7 @@ + # gcjwebplugin.so. + gcjwebplugin.so: gcjwebplugin.cc + $(CXX) $(CXXFLAGS) $(MOZILLA_CFLAGS) \ +- $(MOZILLA_LIBS) $(GLIB_CFLAGS) $(GLIB_LIBS) \ ++ $(MOZILLA_LIBS) -Wl,-R/usr/lib/xulrunner-1.9 $(GLIB_CFLAGS) $(GLIB_LIBS) \ + $(GTK_CFLAGS) $(GTK_LIBS) \ + -DPACKAGE_VERSION="\"$(PACKAGE_VERSION)\"" \ + -fpic -shared -o $@ $< diff --git a/abs/extra/openjdk6/openjdk6.install b/abs/extra/openjdk6/openjdk6.install new file mode 100644 index 0000000..3557847 --- /dev/null +++ b/abs/extra/openjdk6/openjdk6.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor 2> /dev/null +} + +post_upgrade() { + post_install +} + + +post_remove() { + post_install +} diff --git a/abs/extra/openjdk6/openjdk6.profile b/abs/extra/openjdk6/openjdk6.profile new file mode 100644 index 0000000..4af417f --- /dev/null +++ b/abs/extra/openjdk6/openjdk6.profile @@ -0,0 +1,4 @@ +export J2SDKDIR=/usr/lib/jvm/java-1.6.0-openjdk +export J2REDIR=$J2SDKDIR/jre +export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk +#export CLASSPATH="${CLASSPATH:+$CLASSPATH:}$J2SDKDIR/lib:$J2REDIR/lib" diff --git a/abs/extra/opera/PKGBUILD b/abs/extra/opera/PKGBUILD new file mode 100644 index 0000000..b7342f8 --- /dev/null +++ b/abs/extra/opera/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 28942 2009-03-03 08:21:13Z daniel $ +# Maintainer: Daniel Isenmann +# Contributor: dorphell + +pkgname=opera +pkgver=9.64 +pkgrel=2 +pkgdesc="The Opera web browser" +url="http://www.opera.com/" +depends=('qt') +license=('custom:opera') +arch=('i686' 'x86_64') +source=(http://ftp.opera.com/pub/opera/linux/${pkgver/./}/final/en/i386/opera-${pkgver}.gcc4-qt4.i386.tar.bz2 opera.desktop opera_logo48.png opera-qt4-theme.patch) +md5sums=('bbfb1f77cc3091b3134b710b4719ba3e' + 'f99bef1a9200abe5a5cda78665cddc84' + 'a270c65b8d4f8e2e76439f417ea44265' + 'e977071ea5f09b36820367bf6e4dc3e1') + +[ "$CARCH" = "x86_64" ] && depends=('qt3') +[ "$CARCH" = "x86_64" ] && source=(http://ftp.opera.com/pub/opera/linux/${pkgver/./}/final/en/x86_64/opera-${pkgver}.gcc4-shared-qt3.x86_64.tar.bz2 opera.desktop opera_logo48.png) +[ "$CARCH" = "x86_64" ] && md5sums=('b4ca665855639a72fc0c3ae47b751fae' + 'f99bef1a9200abe5a5cda78665cddc84' + 'a270c65b8d4f8e2e76439f417ea44265') +build() { +if [ "$CARCH" = "x86_64" ]; then + cd ${startdir}/src/opera-${pkgver}-2480.gcc4-shared-qt3.x86_64 + sed 's|/usr/X11R6/lib/mozilla/plugins=1|/usr/lib/mozilla/plugins=1|' -i usr/share/opera/ini/pluginpath.ini || return 1 + else cd ${startdir}/src/opera-${pkgver}-2480.gcc4-qt4.i386 + sed 's|/usr/X11R6/lib/mozilla/plugins=1|/usr/lib/mozilla/plugins=1|' -i usr/share/opera/ini/pluginpath.ini || return 1 +fi + ./install.sh DESTDIR=${startdir}/pkg + if [ "$CARCH" = "i686" ]; then + pushd ${startdir}/pkg/usr/bin + patch -Np0 -i ${startdir}/src/opera-qt4-theme.patch || return 1 + popd + fi + install -D -m 644 ${startdir}/src/opera.desktop ${startdir}/pkg/usr/share/applications/opera.desktop + install -D -m 644 LICENSE ${startdir}/pkg/usr/share/licenses/opera/license.txt + install -D -m 644 ${startdir}/src/opera_logo48.png ${startdir}/pkg/usr/share/opera/images/opera_48x48.png +} diff --git a/abs/extra/opera/opera-qt4-theme.patch b/abs/extra/opera/opera-qt4-theme.patch new file mode 100644 index 0000000..f00f2cd --- /dev/null +++ b/abs/extra/opera/opera-qt4-theme.patch @@ -0,0 +1,11 @@ +--- opera.orig 2008-10-22 19:37:21.000000000 +0200 ++++ opera 2008-10-22 19:38:13.000000000 +0200 +@@ -30,7 +30,7 @@ + done + test -z "$toset" || die Missing parameter for $arg + +-test "${_QTSTYLE_FROM_CMDLINE_}" = 'NO' && test -f "$HOME/.qt/qtrc" && _OPERA_QTSTYLE=`sed -n 's/^style=//p' $HOME/.qt/qtrc` && test "$_OPERA_QTSTYLE" && set -- "$@" -style "$_OPERA_QTSTYLE" ++test "${_QTSTYLE_FROM_CMDLINE_}" = 'NO' && test -f "$HOME/.config/Trolltech.conf" && _OPERA_QTSTYLE=`sed -n 's/^style=//p' $HOME/.config/Trolltech.conf` && test "$_OPERA_QTSTYLE" && set -- "$@" -style "$_OPERA_QTSTYLE" + + + # Add ending path divider "/" if missing, so execution won't fail diff --git a/abs/extra/opera/opera.desktop b/abs/extra/opera/opera.desktop new file mode 100644 index 0000000..23fa418 --- /dev/null +++ b/abs/extra/opera/opera.desktop @@ -0,0 +1,91 @@ +[Desktop Entry] +Encoding=UTF-8 +Exec=opera %u +Terminal=false +Icon=/usr/share/opera/images/opera_48x48.png +Type=Application +MimeType=text/html +Categories=Application;Network; +Name=Opera +Name[ar]=أوبرا +Name[bn]=অপেরা +Name[eo]=Opero +Name[fa]=اپرا +Name[hi]=ऑपेरा +Name[ko]=ì˜¤íŽ˜ë¼ +Name[lo]=ໂອເປຣາ +Name[pa]=ਓਪੇਰਾ +Name[ta]=ஓபேரா +Name[th]=โอเปรา +GenericName=Web Browser +GenericName[af]=Web Blaaier +GenericName[ar]=متصÙØ­ ويب +GenericName[az]=Veb SÉ™yyahı +GenericName[bg]=Браузър +GenericName[bn]=ওয়েব বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° +GenericName[br]=Furcher ar Gwiad +GenericName[bs]=WWW Preglednik +GenericName[ca]=Fullejador web +GenericName[cs]=WWW prohlížeÄ +GenericName[cy]=Porydd Gwe +GenericName[da]=Browser +GenericName[de]=Web-Browser +GenericName[el]=ΠεÏιηγητής Î™ÏƒÏ„Î¿Ï +GenericName[eo]=TTT-legilo +GenericName[es]=Navegador web +GenericName[et]=Veebilehitseja +GenericName[eu]=Web arakatzailea +GenericName[fa]=مرورگر وب +GenericName[fi]=WWW-selain +GenericName[fo]=Alnótsfar +GenericName[fr]=Navigateur web +GenericName[fy]=Webblêder +GenericName[ga]=Brabhsálaí Lín +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן ×ינטרנט +GenericName[hi]=वेब बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° +GenericName[hr]=Web preglednik +GenericName[hu]=WebböngészÅ‘ +GenericName[is]=Vafri +GenericName[it]=Browser Web +GenericName[ja]=ウェブブラウザ +GenericName[km]=កម្មវិធី​រុករក​បណ្ដាញ +GenericName[ko]=웹 브ë¼ìš°ì € +GenericName[lo]=ເວັບບຣາວເຊີ +GenericName[lt]=Žiniatinklio narÅ¡yklÄ— +GenericName[lv]=TÄ«mekļa PÄrlÅ«ks +GenericName[mk]=ПрелиÑтувач на Интернет +GenericName[mn]=Веб-Хөтөч +GenericName[ms]=Pelayar Web +GenericName[nb]=Nettleser +GenericName[nds]=Nettkieker +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[nso]=Seinyakisi sa Web +GenericName[pa]=ਵੈਬ à¨à¨²à¨•à¨¾à¨°à¨¾ +GenericName[pl]=PrzeglÄ…darka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator de web +GenericName[ru]=Веб-браузер +GenericName[rw]=Mucukumbuzi Urubuga +GenericName[se]=Fierpmádatlogan +GenericName[sk]=Webový prehliadaÄ +GenericName[sl]=Spletni brskalnik +GenericName[sr]=Веб прегледач +GenericName[sr@Latn]=Veb pregledaÄ +GenericName[ss]=Ibrawuza yeWeb +GenericName[sv]=Webbläsare +GenericName[ta]=வலை உலாவி +GenericName[tg]=ТафÑиргари вÑб +GenericName[th]=เว็บบราวเซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[uk]=Ðавігатор Тенет +GenericName[uz]=Веб-браузер +GenericName[ven]=Buronza ya Webu +GenericName[vi]=Trình duyệt Web +GenericName[wa]=Betchteu waibe +GenericName[xh]=Umkhangeli zincwadi we Web +GenericName[zh_CN]=Web æµè§ˆå™¨ +GenericName[zh_TW]=網é ç€è¦½å™¨ +GenericName[zu]=Umcingi we-Web diff --git a/abs/extra/opera/opera_logo48.png b/abs/extra/opera/opera_logo48.png new file mode 100644 index 0000000..be7e5ae Binary files /dev/null and b/abs/extra/opera/opera_logo48.png differ diff --git a/abs/extra/orbit2/PKGBUILD b/abs/extra/orbit2/PKGBUILD new file mode 100644 index 0000000..a8e3337 --- /dev/null +++ b/abs/extra/orbit2/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 29413 2009-03-08 16:43:13Z jgc $ +# Maintainer: Jan de Groot + +pkgname=orbit2 +pkgver=2.14.17 +pkgrel=1 +pkgdesc="Thin/fast CORBA ORB" +arch=(i686 x86_64) +license=('LGPL' 'GPL') +depends=('libidl2>=0.8.11') +makedepends=('pkgconfig') +options=('!libtool' '!makeflags') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/gnome/sources/ORBit2/2.14/ORBit2-${pkgver}.tar.bz2) +md5sums=('10bfb957fa4a8935a0b4afaee7d71df7') + +build() { + cd "${srcdir}/ORBit2-${pkgver}" + ./configure --prefix=/usr --disable-static || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/extra/oss/PKGBUILD b/abs/extra/oss/PKGBUILD new file mode 100644 index 0000000..d568ff3 --- /dev/null +++ b/abs/extra/oss/PKGBUILD @@ -0,0 +1,225 @@ +# $Id: PKGBUILD,v 1.8 2009/02/11 17:22:38 thotypous Exp $ +# Maintainer: Paulo Matias + +pkgname="oss" +pkgver="4.1_1051" +pkgrel=7 +pkgdesc="Open Sound System UNIX audio architecture" +arch=('i686' 'x86_64') +url="http://developer.opensound.com/" +license=('GPL2') +depends=('gcc' 'make' 'kernel-headers' 'module-init-tools' 'libtool' 'sed') +makedepends=('pkgconfig' 'gawk' 'gtk2') +conflicts=('oss-linux' 'oss-linux-free' 'oss-testing') +install='oss.install' +source=("http://www.4front-tech.com/developer/sources/stable/gpl/oss-v${pkgver/_*}-build${pkgver/*_}-src-gpl.tar.bz2" + 'oss.rm-init-scripts.patch' 'oss.rc' 'oss.install' 'hg-latest-fixes.diff') + + +optdepends=('gtk2: for graphical mixer (ossxmix)' + 'hal: for automatic USB audio configuration' + 'libflashsupport-oss: for Flash plugin support') + +build() { + _dir="oss-v${pkgver/_*}-build${pkgver/*_}-src-gpl" + + cd "$srcdir/$_dir" + + # Apply patchs from hg. + msg "Applying latest fixes from hg." + patch -p1 < "$srcdir/hg-latest-fixes.diff" || return 1 + + cd "$srcdir" + + # Avoid these flags conflicting with OSS build system. + unset CFLAGS + unset OSFLAGS + unset LIBRARIES + + # Remove libflashsupport, as it belongs to a separate package. + rm -f "$srcdir/$_dir/oss/lib/flashsupport.c" &> /dev/null + + msg "Preparing the build environment." + + if [ ! -d build ]; then + # Create build directory and configure + mkdir build && cd build + "$srcdir/$_dir/configure" --enable-libsalsa=NO || return 1 + else + # Change to existing build directory + cd build + fi + + msg "Building OSS." + make build || return 1 + + msg "Patching init scripts." + cd "$srcdir/build/prototype" + rm usr/lib/oss/etc/S89oss + patch -b -p0 < "$srcdir/oss.rm-init-scripts.patch" || return 1 + + msg "Copying files." + cp -R * "$pkgdir" + install -D -m755 "$srcdir/oss.rc" "$pkgdir/etc/rc.d/oss" +################################ +PREFIX=$startdir/pkg +OSSLIBDIR=$PREFIX/usr/lib/oss +UNAME=2.6.28-LinHES +KERNELDIR=/lib/modules/$UNAME/build +mkdir -p ${PREFIX}/lib/modules/$UNAME/kernel/oss + +cd $OSSLIBDIR/build +rm -f $OSSLIBDIR/.cuckoo_installed + REGPARM=REGPARM + rm -rf $OSSLIBDIR/objects + ln -s $OSSLIBDIR/objects.regparm $OSSLIBDIR/objects + rm -rf $OSSLIBDIR/modules + ln -s $OSSLIBDIR/modules.regparm $OSSLIBDIR/modules + +echo OSS build environment set up for $REGPARM kernels + +if ! test -f $OSSLIBDIR/objects/osscore.o +then + echo Error: OSS core module for $REGPARM kernel is not available in $OSSLIBDIR/objects + exit 1 +fi +OK=1 + +if ! test -d /lib/modules/$UNAME +then + echo Error: Kernel directory /lib/modules/$UNAME does not exist + exit 1 +fi + +cp -f ../objects/osscore.o osscore_mainline.o + +ln -sf ../include/sys/*.h ../include/sys/ossddk . + +rm -f Makefile +ln -s Makefile.osscore Makefile + +echo Building module osscore + +if ! make KERNELDIR=$KERNELDIR> build.list 2>&1 +then + echo Failed to compile OSS + cat build.list + exit 2 +fi + +if ! test -d /lib/modules/$UNAME/kernel/oss +then + mkdir /lib/modules/$UNAME/kernel/oss +fi + +if ! test -d /lib/modules/$UNAME/kernel/oss +then + echo OSS module directory /lib/modules/$UNAME/kernel/oss does not exist. + exit 3 +fi + +if ! ld -r osscore.ko osscore_mainline.o -o /lib/modules/$UNAME/kernel/oss/osscore.ko +then + echo Linking the osscore module failed + exit 5 +fi + +if test -f Module.symvers +then + #Take generated symbol information and add it to module.inc + rm -f osscore_symbols.inc + echo "static const struct modversion_info ____versions[]" >> osscore_symbols.inc + echo " __attribute__((used))" >> osscore_symbols.inc + echo "__attribute__((section(\"__versions\"))) = {" >> osscore_symbols.inc + sed -e "s:^:{:" -e "s:\t:, \":" -e "s:\t\(.\)*:\"},:" < Module.symvers >> osscore_symbols.inc + echo "};" >> osscore_symbols.inc +else + echo > osscore_symbols.inc +fi + +#depmod -a + +for n in ../modules/*.o +do + N=`basename $n .o` + echo Building module $N + + rm -f $N_mainline.o Makefile + + sed "s/MODNAME/$N/" < Makefile.tmpl > Makefile + ln -s $n $N_mainline.o + + if ! make KERNELDIR=$KERNELDIR > build.list 2>&1 + then + echo Compiling module $N failed + cat build.list + exit 4 + fi + + if ! ld -r $N.ko $N_mainline.o -o /lib/modules/$UNAME/kernel/oss/$N.ko + then + echo Linking $N module failed + exit 6 + fi + + rm -f $N_mainline.o + make clean + +done +rm -f Makefile + +cp -rp /lib/modules/$UNAME/kernel/oss/* ${PREFIX}/lib/modules/$UNAME/kernel/oss/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + diff --git a/abs/extra/oss/hg-fix-devc.diff b/abs/extra/oss/hg-fix-devc.diff new file mode 100644 index 0000000..8e8b4cf --- /dev/null +++ b/abs/extra/oss/hg-fix-devc.diff @@ -0,0 +1,397 @@ + +# HG changeset patch +# User Hannu Savolainen +# Date 1227908228 -7200 +# Node ID 5a75f44925143c924a51dc474119035f4b08bf06 +# Parent e138663cd973a1e35950fddf299017bfefd16bdc +Fixed devc=NULL problems left after changeset 502 + +--- a/attic/drv/oss_allegro/oss_allegro.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_allegro/oss_allegro.c Fri Nov 28 23:37:08 2008 +0200 +@@ -876,7 +876,7 @@ init_allegro (allegro_devc * devc) + &allegro_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/attic/drv/oss_als3xx/oss_als3xx.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_als3xx/oss_als3xx.c Fri Nov 28 23:37:08 2008 +0200 +@@ -740,7 +740,7 @@ init_als300 (als300_devc * devc) + &als300_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/attic/drv/oss_als4k/oss_als4k.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_als4k/oss_als4k.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1018,7 +1018,7 @@ init_als4000 (als4000_devc * devc) + &als4000_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/attic/drv/oss_maestro/oss_maestro.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_maestro/oss_maestro.c Fri Nov 28 23:37:08 2008 +0200 +@@ -2181,7 +2181,7 @@ init_maestro (maestro_devc * devc) + &maestro_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/attic/drv/oss_neomagic/oss_neomagic.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_neomagic/oss_neomagic.c Fri Nov 28 23:37:08 2008 +0200 +@@ -730,7 +730,7 @@ neomagic_install (neomagic_devc * devc, + devc->chip_name, + &neomagic_audio_driver, + sizeof (audiodrv_t), +- 0, AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ 0, AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/attic/drv/oss_vortex/oss_vortex.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_vortex/oss_vortex.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1449,7 +1449,7 @@ attach_channel (vortex_devc * devc, int + &vortex_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return; +--- a/attic/drv/oss_vortex/oss_vortex2.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/attic/drv/oss_vortex/oss_vortex2.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1601,7 +1601,7 @@ attach_channel_vortex2 (vortex_devc * de + &vortex2_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return; +--- a/kernel/drv/oss_ali5455/oss_ali5455.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_ali5455/oss_ali5455.c Fri Nov 28 23:37:08 2008 +0200 +@@ -835,7 +835,7 @@ init_ALI (ALI_devc * devc) + tmp_name, + &ALI_audio_driver, + sizeof (audiodrv_t), opts, +- formats, NULL, -1)) < 0) ++ formats, devc, -1)) < 0) + { + my_dev = -1; + return 0; +--- a/kernel/drv/oss_atiaudio/oss_atiaudio.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_atiaudio/oss_atiaudio.c Fri Nov 28 23:37:08 2008 +0200 +@@ -946,7 +946,7 @@ init_ATI (ATI_devc * devc) + tmp_name, + &ATI_audio_driver, + sizeof (audiodrv_t), +- opts, formats, NULL, -1, ++ opts, formats, devc, -1, + devfile_name)) < 0) + { + my_dev = -1; +--- a/kernel/drv/oss_audigyls/oss_audigyls.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_audigyls/oss_audigyls.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1470,7 +1470,7 @@ install_audio_devices (audigyls_devc * d + names[i], + &audigyls_audio_driver, + sizeof (audiodrv_t), +- flags, fmts, NULL, -1)) < 0) ++ flags, fmts, devc, -1)) < 0) + { + return 0; + } +@@ -1484,6 +1484,7 @@ install_audio_devices (audigyls_devc * d + audio_engines[adev]->rate_source = frontdev; + audio_engines[adev]->mixer_dev = devc->mixer_dev; + audio_engines[adev]->binding = bindings[i]; ++ audio_engines[adev]->dmabuf_maxaddr = MEMLIMIT_ISA; + if (audio_engines[adev]->flags & ADEV_FIXEDRATE) + { + audio_engines[adev]->fixed_rate = DEFAULT_RATE; +--- a/kernel/drv/oss_audiopci/oss_audiopci.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_audiopci/oss_audiopci.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1384,7 +1384,7 @@ init_apci (apci_devc * devc) + &apci_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_cmi878x/oss_cmi878x.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_cmi878x/oss_cmi878x.c Fri Nov 28 23:37:08 2008 +0200 +@@ -2396,7 +2396,7 @@ init_cmi8788 (cmi8788_devc * devc) + devc->osdev, tmp_name, + &cmi8788_audio_driver, + sizeof (audiodrv_t), caps, fmt, +- NULL, -1)) < 0) ++ devc, -1)) < 0) + { + return 0; + } +--- a/kernel/drv/oss_cmpci/oss_cmpci.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_cmpci/oss_cmpci.c Fri Nov 28 23:37:08 2008 +0200 +@@ -2212,7 +2212,7 @@ init_cmpci (cmpci_devc * devc) + sizeof (audiodrv_t), + caps, + AFMT_U8 | AFMT_S16_LE | +- AFMT_AC3, NULL, -1)) < 0) ++ AFMT_AC3, devc, -1)) < 0) + { + return 0; + } +--- a/kernel/drv/oss_cs4281/oss_cs4281.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_cs4281/oss_cs4281.c Fri Nov 28 23:37:08 2008 +0200 +@@ -909,7 +909,7 @@ init_cs4281 (cs4281_devc * devc) + &cs4281_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_S16_LE | AFMT_U8, NULL, -1)) < 0) ++ AFMT_S16_LE | AFMT_U8, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_cs461x/oss_cs461x.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_cs461x/oss_cs461x.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1719,7 +1719,7 @@ init_cs461x (cs461x_devc * devc) + &cs461x_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_S16_LE | AFMT_U8, NULL, -1)) < 0) ++ AFMT_S16_LE | AFMT_U8, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_emu10k1x/oss_emu10k1x.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_emu10k1x/oss_emu10k1x.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1038,7 +1038,7 @@ install_audio_devices (emu10k1x_devc * d + name, + &emu10k1x_audio_driver, + sizeof (audiodrv_t), +- flags, AFMT_S16_LE | AFMT_AC3, NULL, ++ flags, AFMT_S16_LE | AFMT_AC3, devc, + -1)) < 0) + { + return; +--- a/kernel/drv/oss_envy24/envy24_direct.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_envy24/envy24_direct.c Fri Nov 28 23:37:08 2008 +0200 +@@ -342,7 +342,7 @@ envy24d_install (envy24_devc * devc) + sizeof (audiodrv_t), + ADEV_NOVIRTUAL | ADEV_NOINPUT | ADEV_COLD + | ADEV_SPECIAL | ADEV_32BITONLY, +- AFMT_S32_LE, NULL, -1, ++ AFMT_S32_LE, devc, -1, + "10ch_out")) >= 0) + { + portc = &devc->direct_portc_out; +@@ -379,7 +379,7 @@ envy24d_install (envy24_devc * devc) + sizeof (audiodrv_t), + ADEV_NOVIRTUAL | ADEV_NOOUTPUT | ADEV_COLD + | ADEV_SPECIAL | ADEV_32BITONLY, +- AFMT_S32_LE, NULL, -1, ++ AFMT_S32_LE, devc, -1, + "12ch_in")) >= 0) + { + portc = &devc->direct_portc_in; +--- a/kernel/drv/oss_envy24/oss_envy24.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_envy24/oss_envy24.c Fri Nov 28 23:37:08 2008 +0200 +@@ -3114,7 +3114,7 @@ install_adev (envy24_devc * devc, char * + ADEV_AUTOMODE | ADEV_NOMMAP | + flags | ADEV_NOVIRTUAL, + fmts | AFMT_S16_LE | AFMT_S32_LE | +- AFMT_S24_LE, NULL, -1, ++ AFMT_S24_LE, devc, -1, + devfile_name)) < 0) + { + dev = -1; +--- a/kernel/drv/oss_fmedia/oss_fmedia.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_fmedia/oss_fmedia.c Fri Nov 28 23:37:08 2008 +0200 +@@ -925,7 +925,7 @@ init_fm801 (fm801_devc * devc) + &fm801_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 1; +--- a/kernel/drv/oss_geode/oss_geode.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_geode/oss_geode.c Fri Nov 28 23:37:08 2008 +0200 +@@ -750,7 +750,7 @@ init_geode (geode_devc * devc) + tmp_name, + &geode_audio_driver, + sizeof (audiodrv_t), +- caps, AFMT_S16_LE, NULL, -1)) < 0) ++ caps, AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_hdaudio/oss_hdaudio.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_hdaudio/oss_hdaudio.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1442,7 +1442,7 @@ install_outputdevs (hda_devc_t * devc) + tmp_name, + &hda_audio_driver, + sizeof (audiodrv_t), +- opts, formats, NULL, -1, ++ opts, formats, devc, -1, + devfile_name)) < 0) + { + return; +@@ -1564,7 +1564,7 @@ install_inputdevs (hda_devc_t * devc) + tmp_name, + &hda_audio_driver, + sizeof (audiodrv_t), +- opts, formats, NULL, -1, ++ opts, formats, devc, -1, + devfile_name)) < 0) + { + return; +--- a/kernel/drv/oss_sblive/oss_sblive.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_sblive/oss_sblive.c Fri Nov 28 23:37:08 2008 +0200 +@@ -3806,7 +3806,7 @@ oss_sblive_attach (oss_device_t * osdev) + tmp, + &sblive_audio_driver, + sizeof (audiodrv_t), caps, +- fmts | AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ fmts | AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + portc->audiodev = -1; + return (i > 0); +--- a/kernel/drv/oss_sbpci/oss_sbpci.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_sbpci/oss_sbpci.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1231,7 +1231,7 @@ init_apci97 (apci97_devc * devc, int dev + tmp_name, + &apci97_audio_driver, + sizeof (audiodrv_t), +- caps, fmts, NULL, -1)) < 0) ++ caps, fmts, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_solo/oss_solo.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_solo/oss_solo.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1051,7 +1051,7 @@ init_solo (solo_devc * devc) + &solo_audio_driver, + sizeof (audiodrv_t), + caps, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_trident/oss_trident.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_trident/oss_trident.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1348,7 +1348,7 @@ init_trident (trident_devc * devc) + sizeof (audiodrv_t), + caps, + AFMT_U8 | AFMT_S16_LE | AFMT_AC3, +- NULL, -1)) < 0) ++ devc, -1)) < 0) + + { + adev = -1; +--- a/kernel/drv/oss_userdev/oss_userdev.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_userdev/oss_userdev.c Fri Nov 28 23:37:08 2008 +0200 +@@ -268,6 +268,7 @@ attach_control_device(void) + * Create the control device files that are used to create client/server + * device pairs and to redirect access to them. + */ ++ userdev_devc_t *devc = (userdev_devc_t*)0xdeadcafe; /* This should never get referenced */ + + if ((client_dev = oss_install_audiodev_with_devname (OSS_AUDIO_DRIVER_VERSION, + userdev_osdev, +@@ -275,7 +276,7 @@ attach_control_device(void) + "User space audio device client side", + &userdev_client_control_driver, + sizeof (audiodrv_t), +- ADEV_AUTOMODE, AFMT_S16_NE, NULL, -1, ++ ADEV_AUTOMODE, AFMT_S16_NE, devc, -1, + "client")) < 0) + { + return; +@@ -289,7 +290,7 @@ attach_control_device(void) + "User space audio device server side", + &userdev_server_control_driver, + sizeof (audiodrv_t), +- ADEV_AUTOMODE, AFMT_S16_NE, NULL, -1, ++ ADEV_AUTOMODE, AFMT_S16_NE, devc, -1, + "server")) < 0) + { + return; +--- a/kernel/drv/oss_via823x/oss_via823x.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_via823x/oss_via823x.c Fri Nov 28 23:37:08 2008 +0200 +@@ -813,7 +813,7 @@ via8233_init (via8233_devc * devc) + sizeof (audiodrv_t), + opts, + AFMT_U8 | AFMT_S16_LE | AFMT_AC3, +- NULL, -1)) < 0) ++ devc, -1)) < 0) + { + adev = -1; + return 1; +--- a/kernel/drv/oss_via97/oss_via97.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_via97/oss_via97.c Fri Nov 28 23:37:08 2008 +0200 +@@ -742,7 +742,7 @@ init_via97 (via97_devc * devc) + &via97_audio_driver, + sizeof (audiodrv_t), + opts, +- AFMT_U8 | AFMT_S16_LE, NULL, -1)) < 0) ++ AFMT_U8 | AFMT_S16_LE, devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/drv/oss_ymf7xx/oss_ymf7xx.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/drv/oss_ymf7xx/oss_ymf7xx.c Fri Nov 28 23:37:08 2008 +0200 +@@ -1314,7 +1314,7 @@ init_ymf7xx (ymf7xx_devc * devc) + sizeof (audiodrv_t), + caps, + AFMT_U8 | AFMT_S16_LE | AFMT_AC3, +- NULL, -1)) < 0) ++ devc, -1)) < 0) + { + adev = -1; + return 0; +--- a/kernel/framework/audio/oss_audio_core.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/framework/audio/oss_audio_core.c Fri Nov 28 23:37:08 2008 +0200 +@@ -6242,6 +6242,12 @@ oss_install_audiodev_with_devname (int v + int chdev_flags = 0; + int devfile_num = 0; + ++ if (devc == NULL) ++ { ++ cmn_err(CE_WARN, "devc==NULL for %s. Cannot install audio device\n", name); ++ return OSS_EINVAL; ++ } ++ + if (name == NULL) + cmn_err (CE_CONT, "Name is really NULL\n"); + if (master_osdev == NULL) +--- a/kernel/framework/remux/oss_remux.c Thu Nov 27 19:36:57 2008 +0200 ++++ b/kernel/framework/remux/oss_remux.c Fri Nov 28 23:37:08 2008 +0200 +@@ -508,7 +508,7 @@ remux_install (char *name, oss_device_t + sizeof (audiodrv_t), + ADEV_NOINPUT | ADEV_SPECIAL | + ADEV_DISABLE_VIRTUAL | +- ADEV_NOSRC, AFMT_S16_NE, NULL, ++ ADEV_NOSRC, AFMT_S16_NE, devc, + -1)) < 0) + { + devc->audio_dev = -1; + diff --git a/abs/extra/oss/hg-latest-fixes.diff b/abs/extra/oss/hg-latest-fixes.diff new file mode 100644 index 0000000..15da42d --- /dev/null +++ b/abs/extra/oss/hg-latest-fixes.diff @@ -0,0 +1,104 @@ +--- a/kernel/drv/oss_hdaudio/.devices Fri Feb 06 00:36:29 2009 +0200 ++++ b/kernel/drv/oss_hdaudio/.devices Fri Feb 06 17:00:26 2009 +0200 +@@ -13,6 +13,7 @@ oss_hdaudio pci10de,44a Nvidia High Defi + oss_hdaudio pci10de,44a Nvidia High Definition Audio (MCP65) + oss_hdaudio pci10de,55c Nvidia High Definition Audio (MCP67) + oss_hdaudio pci10de,774 Nvidia High Definition Audio (MCP78S) ++oss_hdaudio pci10de,ac0 Nvidia High Definition Audio (MCP79) + oss_hdaudio pci1002,437b ATI High Definition Audio (SB450) + oss_hdaudio pci1002,4383 ATI High Definition Audio (SB600) + oss_hdaudio pci1106,3288 VIA High Definition Audio +--- a/kernel/drv/oss_hdaudio/oss_hdaudio.c Fri Feb 06 00:36:29 2009 +0200 ++++ b/kernel/drv/oss_hdaudio/oss_hdaudio.c Fri Feb 06 17:00:26 2009 +0200 +@@ -30,6 +30,7 @@ + #define NVIDIA_DEVICE_MCP65 0x044a + #define NVIDIA_DEVICE_MCP67 0x055c + #define NVIDIA_DEVICE_MCP78S 0x0774 ++#define NVIDIA_DEVICE_MCP79 0x0ac0 + + #define ATI_VENDOR_ID 0x1002 + #define ATI_DEVICE_SB450 0x437b +@@ -1720,7 +1721,7 @@ oss_hdaudio_attach (oss_device_t * osdev + device != NVIDIA_DEVICE_MCP51 && device != NVIDIA_DEVICE_MCP55 && + device != NVIDIA_DEVICE_MCP61 && device != NVIDIA_DEVICE_MCP61A && + device != NVIDIA_DEVICE_MCP65 && device != NVIDIA_DEVICE_MCP67 && +- device != NVIDIA_DEVICE_MCP78S && ++ device != NVIDIA_DEVICE_MCP78S && device != NVIDIA_DEVICE_MCP79 && + device != VIA_DEVICE_HDA && + device != SIS_DEVICE_HDA && + device != ULI_DEVICE_HDA && +@@ -1776,6 +1777,7 @@ oss_hdaudio_attach (oss_device_t * osdev + case NVIDIA_DEVICE_MCP65: + case NVIDIA_DEVICE_MCP67: + case NVIDIA_DEVICE_MCP78S: ++ case NVIDIA_DEVICE_MCP79: + devc->chip_name = "nVidia HD Audio"; + pci_read_config_byte (osdev, 0x4e, &btmp); + pci_write_config_byte (osdev, 0x4e, (btmp & 0xf0) | 0x0f); +--- a/kernel/drv/oss_hdaudio/.devices Fri Feb 06 17:05:21 2009 +0200 ++++ b/kernel/drv/oss_hdaudio/.devices Sat Feb 07 11:10:36 2009 +0200 +@@ -12,6 +12,7 @@ oss_hdaudio pci10de,3f0 Nvidia High Defi + oss_hdaudio pci10de,3f0 Nvidia High Definition Audio (MCP61) + oss_hdaudio pci10de,44a Nvidia High Definition Audio (MCP65) + oss_hdaudio pci10de,55c Nvidia High Definition Audio (MCP67) ++oss_hdaudio pci10de,7fc Nvidia High Definition Audio (MCP73) + oss_hdaudio pci10de,774 Nvidia High Definition Audio (MCP78S) + oss_hdaudio pci10de,ac0 Nvidia High Definition Audio (MCP79) + oss_hdaudio pci1002,437b ATI High Definition Audio (SB450) +--- a/kernel/drv/oss_hdaudio/oss_hdaudio.c Fri Feb 06 17:05:21 2009 +0200 ++++ b/kernel/drv/oss_hdaudio/oss_hdaudio.c Sat Feb 07 11:10:36 2009 +0200 +@@ -29,6 +29,7 @@ + #define NVIDIA_DEVICE_MCP61A 0x03f0 + #define NVIDIA_DEVICE_MCP65 0x044a + #define NVIDIA_DEVICE_MCP67 0x055c ++#define NVIDIA_DEVICE_MCP73 0x07fc + #define NVIDIA_DEVICE_MCP78S 0x0774 + #define NVIDIA_DEVICE_MCP79 0x0ac0 + +@@ -1721,7 +1722,8 @@ oss_hdaudio_attach (oss_device_t * osdev + device != NVIDIA_DEVICE_MCP51 && device != NVIDIA_DEVICE_MCP55 && + device != NVIDIA_DEVICE_MCP61 && device != NVIDIA_DEVICE_MCP61A && + device != NVIDIA_DEVICE_MCP65 && device != NVIDIA_DEVICE_MCP67 && +- device != NVIDIA_DEVICE_MCP78S && device != NVIDIA_DEVICE_MCP79 && ++ device != NVIDIA_DEVICE_MCP73 && device != NVIDIA_DEVICE_MCP78S && ++ device != NVIDIA_DEVICE_MCP79 && + device != VIA_DEVICE_HDA && + device != SIS_DEVICE_HDA && + device != ULI_DEVICE_HDA && +@@ -1776,6 +1778,7 @@ oss_hdaudio_attach (oss_device_t * osdev + case NVIDIA_DEVICE_MCP61A: + case NVIDIA_DEVICE_MCP65: + case NVIDIA_DEVICE_MCP67: ++ case NVIDIA_DEVICE_MCP73: + case NVIDIA_DEVICE_MCP78S: + case NVIDIA_DEVICE_MCP79: + devc->chip_name = "nVidia HD Audio"; +--- a/kernel/framework/vmix_core/vmix_core.c Mon Feb 09 21:21:39 2009 +0200 ++++ b/kernel/framework/vmix_core/vmix_core.c Mon Feb 09 19:52:22 2009 -0200 +@@ -1590,7 +1590,7 @@ create_vmix_engine (vmix_mixer_t * mixer + adev_t *adev, *master_adev; + int opts = ADEV_VIRTUAL | ADEV_DEFAULT | ADEV_VMIX; + +- n = mixer->num_clientdevs++; ++ n = mixer->num_clientdevs; + + /* + * ADEV_HIDDEN is used for the VMIX devices because they should not be +@@ -1611,7 +1611,7 @@ create_vmix_engine (vmix_mixer_t * mixer + if (mixer->masterdev == -1) + return OSS_ENXIO; + +- if (mixer->num_clientdevs >= MAX_CLIENTS) /* Cannot create more client engines */ ++ if (n + 1 >= MAX_CLIENTS) /* Cannot create more client engines */ + return OSS_EBUSY; + + /* +@@ -1628,6 +1628,8 @@ create_vmix_engine (vmix_mixer_t * mixer + } + memset (portc, 0, sizeof (*portc)); + portc->open_pending = 1; /* Reserve this engine to the client it was created for */ ++ ++ mixer->num_clientdevs++; + + portc->num = n; + diff --git a/abs/extra/oss/oss.install b/abs/extra/oss/oss.install new file mode 100644 index 0000000..8c4bd0a --- /dev/null +++ b/abs/extra/oss/oss.install @@ -0,0 +1,38 @@ +_MSG_LIBOSSDIR=" Please note that OSS stores some of its configuration files + at /usr/lib/oss. If you are upgrading from an older OSS + release and it doesn't work properly, try removing that + directory and reinstall this package." + +post_install() { + echo "Creating backup of alsa modules" + KER=`uname -r` + cd /lib/modules/$KER/kernel + tar -cvf /lib/modules/alsa-$KER.tar sound + rm -rf sound +# /bin/sh /usr/lib/oss/build/install.sh &> /dev/null + depmod -a + +} + +post_upgrade() { + echo "Running OSS update script..." + KER=`uname -r` + cd /lib/modules/$KER/kernel + if [ -f sound/soundcore.ko ] + then + tar -cvf /lib/modules/alsa-$KER.tar sound + rm -rf sound + /bin/true + fi + depmod -a +} + +pre_remove() { + +} + +post_remove() { + + /bin/true +} + diff --git a/abs/extra/oss/oss.rc b/abs/extra/oss/oss.rc new file mode 100644 index 0000000..3f63378 --- /dev/null +++ b/abs/extra/oss/oss.rc @@ -0,0 +1,32 @@ +#!/bin/bash +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy 'Starting Open Sound System' + if /usr/sbin/soundon + then + add_daemon oss + stat_done + else + stat_fail + fi + ;; + stop) + stat_busy 'Stopping Open Sound System' + if /usr/sbin/soundoff + then + rm_daemon oss + stat_done + else + stat_fail + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" +esac diff --git a/abs/extra/oss/oss.rm-init-scripts.patch b/abs/extra/oss/oss.rm-init-scripts.patch new file mode 100644 index 0000000..981ff60 --- /dev/null +++ b/abs/extra/oss/oss.rm-init-scripts.patch @@ -0,0 +1,52 @@ +--- usr/lib/oss/build/install.sh.orig 2008-09-25 11:41:47.180167692 -0300 ++++ usr/lib/oss/build/install.sh 2008-09-25 11:41:47.180167692 -0300 +@@ -290,38 +290,6 @@ + echo + fi + +-if ! test -d /etc/init.d +-then +- mkdir /etc/init.d +-fi +- +-rm -f /etc/init.d/oss /etc/rc.d/rc3.d/S89oss /etc/rc3.d/S89oss +-cp -f $OSSLIBDIR/etc/S89oss /etc/init.d/oss +- +-chmod 744 /etc/init.d/oss +- +-if test -x /sbin/chkconfig +-then +- /sbin/chkconfig oss on > /dev/null 2>&1 +-else +- if test -x /usr/sbin/update-rc.d +- then +- /usr/sbin/update-rc.d oss defaults > /dev/null 2>&1 +- else +- if test -d etc/rc.d/rc3.d +- then +- rm -f /etc/rc.d/rc3.d/S89oss +- ln -s /etc/init.d/oss /etc/rc.d/rc3.d/S89oss +- else +- if test -d /etc/rc3.d +- then +- rm -f /etc/rc3.d/S89oss +- ln -s /etc/init.d/oss /etc/rc3.d/S89oss +- fi +- fi +- fi +-fi +- + # Install ALSA interface module (Cuckoo) + #(cd $OSSLIBDIR/cuckoo && make clean) > /dev/null 2>&1 + #if (cd $OSSLIBDIR/cuckoo && make install) > /var/log/cuckoo.log 2>&1 +--- usr/lib/oss/scripts/restore_drv.sh.orig 2008-09-25 11:41:47.210168487 -0300 ++++ usr/lib/oss/scripts/restore_drv.sh 2008-09-25 11:41:47.210168487 -0300 +@@ -18,8 +18,6 @@ + fi + fi + +-rm -f /etc/init.d/oss +- + if ! test -d /lib/modules/`uname -r`/kernel/sound + then + if test -f /lib/modules/`uname -r`/sound-preoss.tar.bz2 diff --git a/abs/extra/perl-yaml/PKGBUILD b/abs/extra/perl-yaml/PKGBUILD new file mode 100644 index 0000000..b2e093c --- /dev/null +++ b/abs/extra/perl-yaml/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot +# Contributor: Charles Mauch + +pkgname=perl-yaml +_realname=YAML +pkgver=0.66 +pkgrel=1 +pkgdesc="Perl/CPAN Module YAML : YAML Aint Markup Language tm" +arch=(i686 x86_64) +url="http://search.cpan.org/dist/${_realname}/" +license=('GPL' 'PerlArtistic') +depends=('perl>=5.10.0') +options=(!emptydirs) +source=(http://www.cpan.org/authors/id/I/IN/INGY/${_realname}-${pkgver}.tar.gz) +md5sums=('33a0367cb343e1f0dce20f144d0167ba') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 + make || return 1 + make install DESTDIR=${startdir}/pkg || return 1 + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} diff --git a/abs/extra/phpmyadmin/PKGBUILD b/abs/extra/phpmyadmin/PKGBUILD new file mode 100755 index 0000000..41999db --- /dev/null +++ b/abs/extra/phpmyadmin/PKGBUILD @@ -0,0 +1,18 @@ +pkgname=phpmyadmin +_dlversion=2.9.1.1 +pkgver=$(echo ${_dlversion} | sed 's/-//') +pkgrel=35 +pkgdesc="A PHP and hence web-based tool to administrate MySQL over the WWW" +arch=(i686 x86_64) +url="http://www.phpmyadmin.net" +depends=('php' 'mysql') +backup=(data/srv/httpd/htdocs/phpMyAdmin/config.inc.php) +source=(http://easynews.dl.sourceforge.net/sourceforge/${pkgname}/phpMyAdmin-${_dlversion}-all-languages.tar.bz2) + +build() { + _instdir=${startdir}/pkg/data/srv/httpd/htdocs/phpMyAdmin + mkdir -p ${_instdir} + cd ${_instdir} + cp -ra ${startdir}/src/phpMyAdmin-${_dlversion}-all-languages/* . + +} diff --git a/abs/extra/pmount/PKGBUILD b/abs/extra/pmount/PKGBUILD new file mode 100644 index 0000000..2270b07 --- /dev/null +++ b/abs/extra/pmount/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 29588 2009-03-10 06:17:31Z tpowa $ +# Maintainer: Tobias Powalowski + +pkgname=pmount +pkgver=0.9.19 +pkgrel=2 +pkgdesc="mount removable devices as normal user" +arch=(i686 x86_64) +license=('GPL2') +url="http://pmount.alioth.debian.org/" +backup=('etc/pmount.allow') +depends=('sysfsutils>=2.0.0-1' 'bash' 'hal>=0.5.11') +makedepends=('intltool') +source=(http://alioth.debian.org/frs/download.php/2867/${pkgname}-${pkgver}.tar.gz + pmount-dbus-close.patch) + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + # we have a shared connection! patch it to work correct + patch -Np1 -i ${srcdir}/pmount-dbus-close.patch || return 1 + ./configure --prefix=/usr --with-cryptsetup-prog=/usr/sbin/cryptsetup || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} + +md5sums=('2fd9fe103375dbd0c91af2f302250a8c' + 'b7ea1afd82ffebf510dc89f74cd39f09') diff --git a/abs/extra/pmount/pmount-dbus-close.patch b/abs/extra/pmount/pmount-dbus-close.patch new file mode 100644 index 0000000..06ffa2b --- /dev/null +++ b/abs/extra/pmount/pmount-dbus-close.patch @@ -0,0 +1,11 @@ +diff -ruN pmount-0.9.13/src/pmount-hal.c pmount-0.9.13-new/src/pmount-hal.c +--- pmount-0.9.13/src/pmount-hal.c 2006-08-15 22:31:02.000000000 +0200 ++++ pmount-0.9.13-new/src/pmount-hal.c 2007-02-05 12:01:09.000000000 +0100 +@@ -361,7 +361,6 @@ + /* shut down hal connection */ + libhal_ctx_shutdown( hal_ctx, &error ); + libhal_ctx_free( hal_ctx ); +- dbus_connection_close( dbus_conn ); + dbus_connection_unref( dbus_conn ); + + /* go */ diff --git a/abs/extra/policykit-gnome/PKGBUILD b/abs/extra/policykit-gnome/PKGBUILD new file mode 100644 index 0000000..e6a7d9c --- /dev/null +++ b/abs/extra/policykit-gnome/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer: Jan de Groot +# Contributor: onestep_ua + +pkgname=policykit-gnome +pkgver=0.9.2 +pkgrel=2 +pkgdesc="PolicyKit integration for the GNOME desktop" +arch=('i686' 'x86_64') +url="http://hal.freedesktop.org/docs/PolicyKit-gnome/" +license=('GPL') +depends=('gconf>=2.24.0') +makedepends=('intltool' 'gtk-doc' 'gnome-doc-utils>=0.14.0') +options=(!emptydirs !libtool) +install=${pkgname}.install +source=(http://hal.freedesktop.org/releases/PolicyKit-gnome-${pkgver}.tar.bz2) +md5sums=('fc478b168d0c926a9766b0b415ff4bbf') + +build() { + cd "${srcdir}/PolicyKit-gnome-${pkgver}" + + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/PolicyKit \ + --disable-gtk-doc \ + --disable-examples || return 1 + make || return 1 + make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1 + + install -m 755 -d "${pkgdir}/usr/share/gconf/schemas" + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" ${pkgdir}/etc/gconf/schemas/*.schemas || return 1 + rm -f ${pkgdir}/etc/gconf/schemas/*.schemas +} diff --git a/abs/extra/policykit-gnome/policykit-gnome.install b/abs/extra/policykit-gnome/policykit-gnome.install new file mode 100644 index 0000000..e2593d3 --- /dev/null +++ b/abs/extra/policykit-gnome/policykit-gnome.install @@ -0,0 +1,23 @@ +pkgname=policykit-gnome + +## arg 1: the new package version +post_install() { + usr/sbin/gconfpkg --install ${pkgname} +} + +## arg 1: the new package version +## arg 2: the old package version +pre_upgrade() { + pre_remove $1 +} + +## arg 1: the new package version +## arg 2: the old package version +post_upgrade() { + post_install $1 +} + +## arg 1: the old package version +pre_remove() { + usr/sbin/gconfpkg --uninstall ${pkgname} +} diff --git a/abs/extra/policykit/PKGBUILD b/abs/extra/policykit/PKGBUILD new file mode 100644 index 0000000..d7dd90e --- /dev/null +++ b/abs/extra/policykit/PKGBUILD @@ -0,0 +1,43 @@ +# $Id: $ +# Maintainer: Jan de Groot + +pkgname=policykit +pkgver=0.9 +pkgrel=9 +pkgdesc="Application development toolkit for controlling system-wide privileges" +arch=(i686 x86_64) +license=('custom') +url="http://hal.freedesktop.org/docs/PolicyKit/" +depends=('dbus-glib>=0.80' 'expat>=2.0.1' 'pam') +makedepends=('intltool' 'docbook-xsl' 'gtk-doc') +options=('!libtool') +backup=('etc/PolicyKit/PolicyKit.conf') +install=policykit.install +source=(http://hal.freedesktop.org/releases/PolicyKit-${pkgver}.tar.gz + polkit.pam + pk-ck-api-change.patch + polkit-0.8-dbus-policy.patch + entry-leak.patch) +md5sums=('802fd13ae41f73d79359e5ecb0a98716' + '6564f95878297b954f0572bc1610dd15' + '15b42b41e98410d8d7ec4f91d0cff190' + 'da5129eee9517d00985a354055d778a9' + '62adbf90657b17dae429fc92937af513') + +build() { + cd "${srcdir}/PolicyKit-${pkgver}" + patch -Np1 -i "${srcdir}/pk-ck-api-change.patch" || return 1 + patch -Np1 -i "${srcdir}/polkit-0.8-dbus-policy.patch" || return 1 + patch -Np1 -i "${srcdir}/entry-leak.patch" || return 1 + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib/PolicyKit --disable-static \ + --with-polkit-user=policykit --with-polkit-group=policykit || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 + + rm -rf "${pkgdir}/etc/profile.d" + install -m644 "${srcdir}/polkit.pam" "${pkgdir}/etc/pam.d/polkit" || return 1 +} diff --git a/abs/extra/policykit/entry-leak.patch b/abs/extra/policykit/entry-leak.patch new file mode 100644 index 0000000..f6b3295 --- /dev/null +++ b/abs/extra/policykit/entry-leak.patch @@ -0,0 +1,37 @@ +diff -up PolicyKit-0.9/src/polkit/polkit-policy-file-entry.c.entry-leak PolicyKit-0.9/src/polkit/polkit-policy-file-entry.c +--- PolicyKit-0.9/src/polkit/polkit-policy-file-entry.c.entry-leak 2008-08-29 21:47:22.000000000 -0400 ++++ PolicyKit-0.9/src/polkit/polkit-policy-file-entry.c 2008-08-29 21:50:13.000000000 -0400 +@@ -95,9 +95,11 @@ _polkit_policy_file_entry_new (const c + char *contents; + size_t contents_size; + PolKitPolicyFileEntry *pfe; ++ char **tokens; + + path = NULL; + contents = NULL; ++ tokens = NULL; + + kit_return_val_if_fail (action_id != NULL && polkit_action_validate_id (action_id), NULL); + +@@ -153,7 +155,6 @@ _polkit_policy_file_entry_new (const c + } + + if (contents != NULL) { +- char **tokens; + size_t num_tokens; + PolKitResult any; + PolKitResult inactive; +@@ -183,11 +184,13 @@ _polkit_policy_file_entry_new (const c + + kit_free (path); + kit_free (contents); ++ kit_strfreev (tokens); + + return pfe; + error: + kit_free (path); + kit_free (contents); ++ kit_strfreev (tokens); + if (pfe != NULL) + polkit_policy_file_entry_unref (pfe); + return NULL; diff --git a/abs/extra/policykit/pk-ck-api-change.patch b/abs/extra/policykit/pk-ck-api-change.patch new file mode 100644 index 0000000..ae477f9 --- /dev/null +++ b/abs/extra/policykit/pk-ck-api-change.patch @@ -0,0 +1,83 @@ +diff --git a/src/polkit-dbus/polkit-dbus.c b/src/polkit-dbus/polkit-dbus.c +index f7be03f..cad4a76 100644 +--- a/src/polkit-dbus/polkit-dbus.c ++++ b/src/polkit-dbus/polkit-dbus.c +@@ -214,11 +214,17 @@ polkit_session_new_from_objpath (DBusConnection *con, const char *objpath, uid_t + dbus_message_unref (reply); + goto out; + } ++ /* GetUnixUser API Changed in CK 0.3.0 */ + if (!dbus_message_get_args (reply, NULL, +- DBUS_TYPE_INT32, &uid, ++ DBUS_TYPE_UINT32, &uid, + DBUS_TYPE_INVALID)) { +- kit_warning ("Invalid GetUnixUser reply from CK"); +- goto out; ++ /* try the older API */ ++ if (!dbus_message_get_args (reply, NULL, ++ DBUS_TYPE_INT32, &uid, ++ DBUS_TYPE_INVALID)) { ++ kit_warning ("Invalid GetUnixUser reply from CK"); ++ goto out; ++ } + } + dbus_message_unref (message); + dbus_message_unref (reply); +@@ -1326,16 +1332,21 @@ polkit_tracker_dbus_func (PolKitTracker *pk_tracker, DBusMessage *message) + + dbus_error_init (&error); + seat_objpath = dbus_message_get_path (message); +- if (!dbus_message_get_args (message, &error, +- DBUS_TYPE_STRING, &session_objpath, ++ /* API fixed in CK 0.3 to match spec */ ++ if (!dbus_message_get_args (message, &error, ++ DBUS_TYPE_OBJECT_PATH, &session_objpath, + DBUS_TYPE_INVALID)) { ++ if (!dbus_message_get_args (message, &error, ++ DBUS_TYPE_STRING, &session_objpath, ++ DBUS_TYPE_INVALID)) { + +- /* TODO: should be _pk_critical */ +- kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat " +- "interface for object %s has the wrong signature! " +- "Your system is misconfigured.", seat_objpath); ++ /* TODO: should be _pk_critical */ ++ kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat " ++ "interface for object %s has the wrong signature! " ++ "Your system is misconfigured.", seat_objpath); + +- goto out; ++ goto out; ++ } + } + + /* TODO: add to sessions - see polkit_tracker_is_authorization_relevant() */ +@@ -1353,16 +1364,21 @@ polkit_tracker_dbus_func (PolKitTracker *pk_tracker, DBusMessage *message) + + dbus_error_init (&error); + seat_objpath = dbus_message_get_path (message); +- if (!dbus_message_get_args (message, &error, +- DBUS_TYPE_STRING, &session_objpath, ++ /* API fixed in CK 0.3 to match spec */ ++ if (!dbus_message_get_args (message, &error, ++ DBUS_TYPE_OBJECT_PATH, &session_objpath, + DBUS_TYPE_INVALID)) { ++ if (!dbus_message_get_args (message, &error, ++ DBUS_TYPE_STRING, &session_objpath, ++ DBUS_TYPE_INVALID)) { + +- /* TODO: should be _pk_critical */ +- kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat " +- "interface for object %s has the wrong signature! " +- "Your system is misconfigured.", seat_objpath); ++ /* TODO: should be _pk_critical */ ++ kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat " ++ "interface for object %s has the wrong signature! " ++ "Your system is misconfigured.", seat_objpath); + +- goto out; ++ goto out; ++ } + } + + _remove_caller_by_session (pk_tracker, session_objpath); diff --git a/abs/extra/policykit/policykit.install b/abs/extra/policykit/policykit.install new file mode 100644 index 0000000..7bc653e --- /dev/null +++ b/abs/extra/policykit/policykit.install @@ -0,0 +1,30 @@ +post_install() { + getent group policykit >/dev/null || usr/sbin/groupadd -g 102 policykit + getent passwd policykit >/dev/null || usr/sbin/useradd -c 'PolicyKit' -u 102 -g policykit -d '/' -s /sbin/nologin policykit + usr/bin/passwd -l policykit &>/dev/null + + # set correct permissions + chgrp policykit var/{run,lib}/PolicyKit + chown policykit var/lib/PolicyKit-public + chown policykit:policykit var/lib/misc/PolicyKit.reload + + chown policykit usr/lib/PolicyKit/polkit-set-default-helper + chmod u+s usr/lib/PolicyKit/polkit-set-default-helper + + for i in polkit-read-auth-helper polkit-revoke-helper polkit-grant-helper polkit-explicit-grant-helper; do + chgrp policykit usr/lib/PolicyKit/$i + chmod g+s usr/lib/PolicyKit/$i + done + + chgrp policykit usr/lib/PolicyKit/polkit-grant-helper-pam + chmod u+s usr/lib/PolicyKit/polkit-grant-helper-pam +} + +post_upgrade() { + post_install +} + +post_remove() { + usr/sbin/userdel policykit &>/dev/null + usr/sbin/groupdel policykit &>/dev/null +} diff --git a/abs/extra/policykit/polkit-0.8-dbus-policy.patch b/abs/extra/policykit/polkit-0.8-dbus-policy.patch new file mode 100644 index 0000000..fa84936 --- /dev/null +++ b/abs/extra/policykit/polkit-0.8-dbus-policy.patch @@ -0,0 +1,12 @@ +--- PolicyKit-0.8.orig/polkitd/org.freedesktop.PolicyKit.conf.in 2008-12-08 10:55:12.000000000 -0500 ++++ PolicyKit-0.8/polkitd/org.freedesktop.PolicyKit.conf.in 2008-12-08 12:05:33.000000000 -0500 +@@ -8,4 +8,9 @@ + + + ++ ++ ++ ++ ++ + diff --git a/abs/extra/policykit/polkit.pam b/abs/extra/policykit/polkit.pam new file mode 100644 index 0000000..04f53e0 --- /dev/null +++ b/abs/extra/policykit/polkit.pam @@ -0,0 +1,7 @@ +auth requisite pam_nologin.so +auth required pam_env.so +auth required pam_unix.so +account required pam_unix.so +session required pam_limits.so +session required pam_unix.so +password required pam_unix.so diff --git a/abs/extra/postgresql-libs/PKGBUILD b/abs/extra/postgresql-libs/PKGBUILD new file mode 100644 index 0000000..ac037c7 --- /dev/null +++ b/abs/extra/postgresql-libs/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD 27764 2009-02-25 16:30:54Z douglas $ +# Maintainer: Paul Mattal + +pkgname=postgresql-libs +pkgver=8.3.6 +pkgrel=1 +pkgdesc="Libraries for use with PostgreSQL" +arch=(i686 x86_64) +license=('BSD') +url="http://www.postgresql.org/" +depends=('openssl>=0.9.8b' 'zlib' 'readline') +options=('!makeflags') +source=(ftp://ftp.postgresql.org/pub/source/v${pkgver}/postgresql-${pkgver}.tar.bz2) + +build() { + cd $startdir/src/postgresql-$pkgver || return 1 + + # configure + ./configure --prefix=/usr --with-openssl --datadir=/usr/share/postgresql \ + --with-pam \ + || return 1 + + # make and install + for dir in src/interfaces src/bin/pg_config; do + pushd ${dir} || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + popd + done + + cd src/include || return 1 + make || return 1 + + set -e + mkdir -p $startdir/pkg/usr/include/postgresql/{internal,internal/libpq} \ + || return 1 + mkdir -p $startdir/pkg/usr/include/libpq || return 1 + + # These headers are needed by the public headers of the interfaces. + install -m644 pg_config.h $startdir/pkg/usr/include/ || return 1 + install -m644 pg_config_os.h $startdir/pkg/usr/include/ || return 1 + install -m644 postgres_ext.h $startdir/pkg/usr/include/ || return 1 + install -m644 libpq/libpq-fs.h $startdir/pkg/usr/include/libpq/ || return 1 + install -m644 pg_config_manual.h $startdir/pkg/usr/include/ || return 1 + + # These headers are needed by the not-so-public headers of the interfaces. + install -m644 c.h $startdir/pkg/usr/include/postgresql/internal/ || return 1 + install -m644 port.h $startdir/pkg/usr/include/postgresql/internal/ \ + || return 1 + install -m644 postgres_fe.h $startdir/pkg/usr/include/postgresql/internal/ \ + || return 1 + install -m644 libpq/pqcomm.h $startdir/pkg/usr/include/postgresql/internal/libpq/ || return 1 + + install -D -m644 ../../COPYRIGHT $startdir/pkg/usr/share/licenses/$pkgname/LICENSE || return 1 + + set +e +} +md5sums=('4f8c67d802bd03b5b844e268bba7d44a') diff --git a/abs/extra/postgresql/PKGBUILD b/abs/extra/postgresql/PKGBUILD new file mode 100644 index 0000000..1fda9a4 --- /dev/null +++ b/abs/extra/postgresql/PKGBUILD @@ -0,0 +1,79 @@ +# $Id: PKGBUILD 27762 2009-02-25 16:29:49Z douglas $ +# Maintainer: Paul Mattal + +pkgname=postgresql +pkgver=8.3.6 +pkgrel=1 +pkgdesc="A sophisticated object-relational DBMS" +arch=(i686 x86_64) +license=('BSD') +backup=('etc/conf.d/postgresql' '/etc/pam.d/postgresql') +url="http://www.postgresql.org/" +depends=("postgresql-libs>=$pkgver" "libxml2") +options=('!makeflags') +source=(ftp://ftp.postgresql.org/pub/source/v${pkgver}/postgresql-${pkgver}.tar.bz2 \ + postgresql postgresql.confd build.patch postgresql.pam) + +build() { + cd ${startdir}/src/$pkgname-$pkgver || return 1 + + # patch to remove regress/test make target (won't build with it present) + patch -Np1 -i ../build.patch || return 1 + + # configure + ./configure --prefix=/usr --mandir=/usr/share/man \ + --with-docdir=/usr/share/doc --with-openssl \ + --datadir=/usr/share/postgresql --with-pam --with-libxml || return 1 + + sed -i -e '/interfaces/d' src/Makefile || return 1 + + # build + make || return 1 + + # install + make DESTDIR=${startdir}/pkg install || return 1 + + ( + cd contrib/adminpack; + make || return 1; + make DESTDIR=${startdir}/pkg install || return 1; + ); + + + # clean up unneeded installed items + rm -rf $startdir/pkg/usr/include/postgresql/internal || return 1 + rm -rf $startdir/pkg/usr/include/libpq || return 1 + # the below line is expected to produce an error; fix this one day + rm -f $startdir/pkg/usr/include/* + rm -f $startdir/pkg/usr/bin/pg_config || return 1 + + # Maintaining the lib below because of qt + #rm -f $startdir/pkg/usr/lib/libpgport.a || return 1 + + # install launch script + install -D -m755 ../postgresql $startdir/pkg/etc/rc.d/postgresql \ + || return 1 + + # install license + install -D -m644 COPYRIGHT $startdir/pkg/usr/share/licenses/$pkgname/LICENSE || return 1 + + # install conf file + install -D -m644 $startdir/src/postgresql.confd \ + $startdir/pkg/etc/conf.d/postgresql || return 1 + + install -D -m644 $startdir/src/postgresql.pam \ + $startdir/pkg/etc/pam.d/postgresql + + chown root:root $startdir/pkg/usr/share/doc/postgresql/html/* +} + +md5sums=('4f8c67d802bd03b5b844e268bba7d44a' + '7d8ea2abb6a8cdacf35604bda659a34a' + 'df6ddf9e2ab4700a3415f17c0f4f4172' + '4d74f4227dc5e12bf95b3490758d86c9' + '96f82c38f3f540b53f3e5144900acf17') +md5sums=('4f8c67d802bd03b5b844e268bba7d44a' + '7d8ea2abb6a8cdacf35604bda659a34a' + 'df6ddf9e2ab4700a3415f17c0f4f4172' + '4d74f4227dc5e12bf95b3490758d86c9' + '96f82c38f3f540b53f3e5144900acf17') diff --git a/abs/extra/postgresql/build.patch b/abs/extra/postgresql/build.patch new file mode 100644 index 0000000..c8f665d --- /dev/null +++ b/abs/extra/postgresql/build.patch @@ -0,0 +1,11 @@ +diff -Naur postgresql-8.2.3-orig/src/Makefile postgresql-8.2.3/src/Makefile +--- postgresql-8.2.3-orig/src/Makefile 2006-06-22 16:50:35.000000000 -0700 ++++ postgresql-8.2.3/src/Makefile 2007-03-05 10:46:24.000000000 -0800 +@@ -23,7 +23,6 @@ + $(MAKE) -C bin $@ + $(MAKE) -C pl $@ + $(MAKE) -C makefiles $@ +- $(MAKE) -C test/regress $@ + + install: install-local + diff --git a/abs/extra/postgresql/postgresql b/abs/extra/postgresql/postgresql new file mode 100755 index 0000000..c6aedfb --- /dev/null +++ b/abs/extra/postgresql/postgresql @@ -0,0 +1,59 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/postgresql + +case "$1" in + start) + stat_busy "Starting PostgreSQL" + # initialization + if [ ! `egrep '^postgres:' /etc/group` ]; then + stat_busy "Adding postgres group" + groupadd -g 88 postgres + stat_done + fi + if [ ! `egrep '^postgres:' /etc/passwd` ]; then + stat_busy "Adding postgres user" + useradd -u 88 -g postgres -d $PGROOT -s /bin/bash postgres + [ -d $PGROOT ] && chown -R postgres.postgres $PGROOT + stat_done + fi + if [ ! -d $PGROOT ]; then + mkdir -p $PGROOT/data && chown postgres.postgres $PGROOT/data + su - postgres -c "/usr/bin/initdb -D $PGROOT/data" + fi + if [ ! -e /var/log/postgresql.log ]; then + touch /var/log/postgresql.log + chown postgres /var/log/postgresql.log + fi + # start the process + su - postgres -c \ + "/usr/bin/pg_ctl -D $PGROOT/data -l /var/log/postgresql.log -W start" + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon postgresql + stat_done + fi + ;; + stop) + stat_busy "Stopping PostgreSQL" + su - postgres -c \ + "/usr/bin/pg_ctl -D $PGROOT/data -l /var/log/postgresql.log -w stop" + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon postgresql + stat_done + fi + ;; + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/extra/postgresql/postgresql.confd b/abs/extra/postgresql/postgresql.confd new file mode 100644 index 0000000..7bbf016 --- /dev/null +++ b/abs/extra/postgresql/postgresql.confd @@ -0,0 +1,4 @@ +# +# Parameters to be passed to postgresql +# +PGROOT="/var/lib/postgres" \ No newline at end of file diff --git a/abs/extra/postgresql/postgresql.pam b/abs/extra/postgresql/postgresql.pam new file mode 100644 index 0000000..53724d1 --- /dev/null +++ b/abs/extra/postgresql/postgresql.pam @@ -0,0 +1,3 @@ +auth required pam_unix.so +account required pam_unix.so +session required pam_unix.so diff --git a/abs/extra/powertop/ChangeLog b/abs/extra/powertop/ChangeLog new file mode 100644 index 0000000..811f87d --- /dev/null +++ b/abs/extra/powertop/ChangeLog @@ -0,0 +1,3 @@ +2007-06-28 tardo +* Built for x86_64 + diff --git a/abs/extra/powertop/PKGBUILD b/abs/extra/powertop/PKGBUILD new file mode 100644 index 0000000..4d8c17b --- /dev/null +++ b/abs/extra/powertop/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD,v 1.10 2008/06/19 08:52:53 pizzapunk Exp $ +# Maintainer: Alexander Fehr +# Contributor: Xilon + +pkgname=powertop +pkgver=1.10 +pkgrel=1 +pkgdesc="Tool that finds the software that makes your laptop use more power than necessary" +arch=('i686' 'x86_64') +url="http://www.lesswatts.org/projects/powertop/" +license=('GPL2') +depends=('ncurses') +source=(http://www.lesswatts.org/projects/powertop/download/powertop-$pkgver.tar.gz) +md5sums=('e09f631f60d50299d8885193e6fd3756') + +build() { + cd $startdir/src/powertop-$pkgver + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/printproto/PKGBUILD b/abs/extra/printproto/PKGBUILD new file mode 100644 index 0000000..11595db --- /dev/null +++ b/abs/extra/printproto/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 567 2008-04-21 09:43:18Z alexander $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=printproto +pkgver=1.0.4 +pkgrel=1 +pkgdesc="X11 print extension wire protocol" +arch=(i686 x86_64) +license=('custom') +url="http://xorg.freedesktop.org/" +source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ + ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING +} +md5sums=('7321847a60748b4d2f1fa16db4b6ede8') diff --git a/abs/extra/pycrypto/PKGBUILD b/abs/extra/pycrypto/PKGBUILD new file mode 100644 index 0000000..2801337 --- /dev/null +++ b/abs/extra/pycrypto/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 17322 2008-10-28 12:29:19Z douglas $ +# Maintainer: Jan de Groot +# Contributor: Kritoke + +pkgname=pycrypto +pkgver=2.0.1 +pkgrel=3 +pkgdesc="A collection of cryptographic algorithms and protocols, implemented for use from Python." +arch=(i686 x86_64) +depends=('python' 'gmp') +url="http://www.amk.ca/python/code/crypto.html" +license=(GPL) +source=(http://www.amk.ca/files/python/crypto/${pkgname}-${pkgver}.tar.gz) +md5sums=('4d5674f3898a573691ffb335e8d749cd') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + python setup.py build install --root=${startdir}/pkg +} diff --git a/abs/extra/pyopenssl/PKGBUILD b/abs/extra/pyopenssl/PKGBUILD new file mode 100644 index 0000000..6fb4ac1 --- /dev/null +++ b/abs/extra/pyopenssl/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=pyopenssl +pkgver=0.6 +pkgrel=4 +pkgdesc="pyOpenSSL is a Python interface to the OpenSSL library" +arch=('i686' 'x86_64') +url="http://pyopenssl.sourceforge.net" +license="GPL" +depends=('python' 'openssl') +source=(http://easynews.dl.sourceforge.net/sourceforge/pyopenssl/pyOpenSSL-${pkgver}.tar.gz) + +build() { + cd $startdir/src/pyOpenSSL-${pkgver} + python setup.py build + python setup.py install --prefix=$startdir/pkg/usr + } diff --git a/abs/extra/pyorbit/PKGBUILD b/abs/extra/pyorbit/PKGBUILD new file mode 100644 index 0000000..60f8f34 --- /dev/null +++ b/abs/extra/pyorbit/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 16716 2008-10-22 02:39:42Z allan $ +# Mantainer: Jan de Groot + +pkgname=pyorbit +pkgver=2.24.0 +pkgrel=3 +pkgdesc="Python bindings for ORBit2" +arch=(i686 x86_64) +license=('LGPL') +url="http://www.pygtk.org" +depends=('python>=2.5.2' 'orbit2>=2.14.16') +makedepends=('pkgconfig') +options=('!libtool') +source=(http://ftp.gnome.org/pub/GNOME/sources/pyorbit/2.24/${pkgname}-${pkgver}.tar.bz2) +md5sums=('574593815e75ee6e98062c75d6d1581f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install +} diff --git a/abs/extra/pyrex/ChangeLog b/abs/extra/pyrex/ChangeLog new file mode 100644 index 0000000..1b0e564 --- /dev/null +++ b/abs/extra/pyrex/ChangeLog @@ -0,0 +1,5 @@ + +2008-07-06 Douglas Soares de Andrade + + * Updating for x86_64 - 0.9.8.4 + diff --git a/abs/extra/pyrex/PKGBUILD b/abs/extra/pyrex/PKGBUILD new file mode 100644 index 0000000..4242fb9 --- /dev/null +++ b/abs/extra/pyrex/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 11841 2008-09-05 01:20:00Z douglas $ +# Contributor: Arjan timmerman +# Contributor: Link Dupont +# Maintainer: Douglas Soares de Andrade + +pkgname=pyrex +pkgver=0.9.8.5 +pkgrel=1 +pkgdesc="Language for writing Python extension modules" +arch=("i686" "x86_64") +url="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/" +license="" +depends=('python>=2.5') +source=(http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/Pyrex-${pkgver}.tar.gz) + +md5sums=('3b3d8397c2c9a58fc59a90e2b49c651a') + +build() { + cd ${startdir}/src/Pyrex-${pkgver} + python setup.py install --root=${startdir}/pkg --prefix=/usr +} diff --git a/abs/extra/python-m2crypto/PKGBUILD b/abs/extra/python-m2crypto/PKGBUILD new file mode 100644 index 0000000..86a96d1 --- /dev/null +++ b/abs/extra/python-m2crypto/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD,v 1.6 2008/11/13 16:04:12 sergej Exp $ +# Maintainer: Sergej Pupykin +# Contributor: William Rea + +pkgname=python-m2crypto +pkgver=0.19.1 +pkgrel=1 +pkgdesc="A crypto and SSL toolkit for Python" +arch=('i686' 'x86_64') +url="http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto" +license=('BSD') +depends=('python' 'swig' 'openssl') +source=(http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-$pkgver.tar.gz) +md5sums=('c92286fdf0a75f017e72122c2832d5ff') + +build() { + cd $srcdir/M2Crypto-$pkgver + python setup.py build + python setup.py install --root=$pkgdir/ + + install -D -m644 LICENCE $pkgdir/usr/share/licenses/$pkgname/LICENSE +} diff --git a/abs/extra/python-pybluez/PKGBUILD b/abs/extra/python-pybluez/PKGBUILD new file mode 100644 index 0000000..8cdbaf4 --- /dev/null +++ b/abs/extra/python-pybluez/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD,v 1.11 2009/02/12 20:16:22 voidnull Exp $ +# Maintainer: Sergej Pupykin +# Contributor: cs-cam - me.at.camdaniel.com + +pkgname=python-pybluez +pkgver=0.16 +pkgrel=1 +pkgdesc="Python wrapper for the BlueZ Bluetooth stack" +arch=('i686' 'x86_64') +url="http://code.google.com/p/pybluez/" +license=('GPL') +provides=('pybluez') +conflicts=('pybluez') +replaces=('pybluez') +depends=('python' 'bluez') +source=(http://pybluez.googlecode.com/files/PyBluez-$pkgver.tar.gz) +md5sums=('2ce8ff0dbb94c6be14e92e9968f4c914') + +build() { + cd $srcdir/PyBluez-$pkgver + python setup.py install --root=$pkgdir && \ + ln -s bluetooth/_bluetooth.so $pkgdir/usr/lib/python2.6/site-packages/_bluetooth.so +} diff --git a/abs/extra/python-pymedia/PKGBUILD b/abs/extra/python-pymedia/PKGBUILD new file mode 100755 index 0000000..a23d441 --- /dev/null +++ b/abs/extra/python-pymedia/PKGBUILD @@ -0,0 +1,19 @@ +pkgname=python-pymedia +pkgver=1.3.5.0 +pkgrel=1 +pkgdesc="A Python library for accessing and manipulating media files" +url="http://www.pymedia.org" +license="" +depends=('libvorbis' 'faad2' 'lame') +makedepends=('python>=2.3') +replaces=('pymedia') +provides=('pymedia') +arch=i686 +source=(http://easynews.dl.sourceforge.net/sourceforge/pymedia/pymedia-$pkgver.tar.gz) +md5sums=('3b9efcd105707c6696579e3ca8852d0e') + +build() { + cd $startdir/src/pymedia-$pkgver + sed -i -e "s:/usr/local/include/lame:/usr/include/lame:g" setup.py + yes "" | python setup.py install --root=$startdir/pkg --prefix=/usr + } diff --git a/abs/extra/pyusb/PKGBUILD b/abs/extra/pyusb/PKGBUILD new file mode 100644 index 0000000..1922cd8 --- /dev/null +++ b/abs/extra/pyusb/PKGBUILD @@ -0,0 +1,16 @@ +# Contributor: Jason Giangrande +pkgname=pyusb +pkgver=0.4.1 +pkgrel=1 +pkgdesc="A native Python module written in C which provides USB access." +arch=('i686' 'x86_64') +url="http://pyusb.berlios.de/" +license=('GPL') +depends=('python' 'libusb') +source=(http://downloads.sourceforge.net/pyusb/pyusb-$pkgver.tar.gz) +md5sums=('9576c3e471e40e021fa44f36712bbd04') + +build() { + cd $startdir/src/$pkgname-$pkgver + python setup.py install -f --root=$startdir/pkg || return 1 +} diff --git a/abs/extra/quilt/PKGBUILD b/abs/extra/quilt/PKGBUILD new file mode 100644 index 0000000..e5c50bc --- /dev/null +++ b/abs/extra/quilt/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD,v 1.3 2008/05/26 08:06:11 BaSh Exp $ +# Maintainer: Jan de Groot +# Contributor: dibblethewrecker + +pkgname=quilt +pkgver=0.47 +pkgrel=1 +pkgdesc="Manage a series of patches by keeping track of the changes each patch makes." +arch=('i686' 'x86_64') +url="http://savannah.nongnu.org/projects/quilt" +license=('GPL') +depends=('perl' 'diffstat' 'gawk' 'patch' 'diffutils' 'mktemp' 'gettext') +source=(http://savannah.nongnu.org/download/quilt/${pkgname}-${pkgver}.tar.gz) + +md5sums=('d33d2442bd34387260b1c1db3e623af0') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 + make || return 1 + make prefix=${startdir}/pkg/usr mandir=${startdir}/pkg/usr/share/man install || return 1 +} diff --git a/abs/extra/rarian/PKGBUILD b/abs/extra/rarian/PKGBUILD new file mode 100644 index 0000000..b83caff --- /dev/null +++ b/abs/extra/rarian/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 11986 2008-09-06 21:33:59Z jgc $ +# Maintainer: Jan de Groot + +pkgname=rarian +pkgver=0.8.1 +pkgrel=1 +pkgdesc="Documentation meta-data library, designed as a replacement for Scrollkeeper." +arch=('i686' 'x86_64') +url="http://rarian.freedesktop.org/" +license=('GPL') +depends=('gcc-libs') +makedepends=('libxslt') +conflicts=('scrollkeeper') +provides=('scrollkeeper') +replaces=('scrollkeeper') +options=('!libtool') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.8/${pkgname}-${pkgver}.tar.bz2 + user-segfault.patch) +md5sums=('75091185e13da67a0ff4279de1757b94' + '457e9827197009cfa360911fe49a5ad7') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + patch -p0 -i ${srcdir}/user-segfault.patch || return 1 + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/rarian/user-segfault.patch b/abs/extra/rarian/user-segfault.patch new file mode 100644 index 0000000..3311cec --- /dev/null +++ b/abs/extra/rarian/user-segfault.patch @@ -0,0 +1,14 @@ +--- util/rarian-sk-get-cl.cpp~ 2008-07-28 19:23:28.000000000 +0200 ++++ util/rarian-sk-get-cl.cpp 2008-07-28 19:23:28.000000000 +0200 +@@ -160,6 +160,11 @@ + { + char *filename = NULL; + char *user = getenv ("USERNAME"); ++ ++ if (user == NULL) { ++ user = getenv ("USER"); ++ } ++ + char *basepath = NULL; + int i=0; + int last = 0; diff --git a/abs/extra/read-edid/PKGBUILD b/abs/extra/read-edid/PKGBUILD new file mode 100644 index 0000000..6e6b0b3 --- /dev/null +++ b/abs/extra/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 + +} diff --git a/abs/extra/removecommercials/PKGBUILD b/abs/extra/removecommercials/PKGBUILD new file mode 100755 index 0000000..312f965 --- /dev/null +++ b/abs/extra/removecommercials/PKGBUILD @@ -0,0 +1,11 @@ +pkgname=removecommercials +pkgver=0.1 +pkgrel=1 +arch=("i686") +pkgdesc="A multimedia framework based on the MPEG-4 Systems standard" +source=( removecommercials ) + +build() { + cd $startdir + install -D -m 755 removecommercials $startdir/pkg/usr/bin/removecommercials +} diff --git a/abs/extra/removecommercials/removecommercials b/abs/extra/removecommercials/removecommercials new file mode 100755 index 0000000..d7b910f --- /dev/null +++ b/abs/extra/removecommercials/removecommercials @@ -0,0 +1,195 @@ +#!/bin/sh +# remove commercials from recording +# version 0.1 + +# usage: +# first parameter must be %DIR% of the recording +# second parameter must be %FILE% of the recording +# third parameter must be %CHANID% +# fourth parameter must be %STARTTIME% +# fifth parameter must be %JOBID% for the User Job status to be updated in MythTV +# in the mythtv setup screen invoke this script like this: +# MYTHTV User Job Command: +# /usr/LH/bin/removecommercials "%DIR%" "%FILE%" "%CHANID%" "%STARTTIME%" "%JOBID%" + +# Auguments passed from command line +VIDEODIR=$1 +FILENAME=$2 +CHANID=$3 +STARTTIME=$4 +JOBID=$5 + +# database settings +BACKEND_HOSTNAME=${BACKEND_HOSTNAME:-"localhost"} +DBUSERNAME=${DBUSERNAME:-"mythtv"} +DBPASSWORD=${DBPASSWORD:-"mythtv"} +SQLCMD="mysql -u $DBUSERNAME --password=$DBPASSWORD -h $BACKEND_HOSTNAME mythconverg -e" + +#------FUNCTIONS--------------- +update_comment() +# Arg_1 = COMMENT +{ +if [ $NO_JOBID = 0 ]; then + `$SQLCMD "update jobqueue set comment=\"$1\" where id=\"$JOBID\";"` +fi +} + +update_status() +# Arg_1 = status code +{ +if [ $NO_JOBID = 0 ]; then + `$SQLCMD "update jobqueue set status=\"$1\" where id=\"$JOBID\";"` +fi +} + +check_myth_jobcmds() +# check the myth database for stop pause or resume commands +{ +if [ $NO_JOBID = 0 ]; then + CURRENT_CMD=`$SQLCMD "select cmds from jobqueue where id=\"$JOBID\";" | sed '/[0-9]/!d'` + case "$CURRENT_CMD" in + # JOB_RUN + 0) ;; + # JOB_PAUSE + 1) update_status 6 + kill -s STOP $TPID ;; + # JOB_RESUME + 2) update_status 4 + `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` + kill -s CONT $TPID ;; + # JOB_STOP + 4) update_status 5 + `$SQLCMD "update jobqueue set cmds=\"0\" where id=\"$JOBID\";"` + kill -9 $TPID + clean_up_files + echo "Cancelled" + update_status 320 + exit ;; + esac +fi +} + +check_background_progress() +#check progress in background +{ +while [ `tail -1 $STATUSFILE | grep -c "Done"` = 0 ] +do + sleep 5 + check_myth_jobcmds + current_status=`tail -1 $STATUSFILE` + if [ `expr match "$current_status" '.*\complete'` -ne 0 ]; then + prog_percent=`echo "$current_status" | awk '{print $3}'` + if [ -n "$prog_percent" ]; then + echo "Removing Commercials - $prog_percent Completed" + update_comment "Removing Commercials - $prog_percent Completed" + fi + fi +done +} + +get_pid() +{ +process_name="" +i1=1 +while [ "$process_name" != "found" ]; do + if [ "`ps $TPID | grep mythtranscode | sed 's_.*\(mythtranscode\).*_\1_'`" = "mythtranscode" ]; then + process_name="found" + else + TPID=`expr $TPID + 1` + fi + i1=`expr $i1 + 1` + if [ $i1 -gt 20 ]; then + break + fi +done +} + +clean_up_files() +# clean up left over files +{ +unlink $TMPFILE 2> /dev/null +unlink $TMPFILE.map 2> /dev/null +unlink $STATUSFILE 2> /dev/null +unlink $VIDEODIR/$FILENAME.tmp 2> /dev/null +} + +#-------MAIN SCRIPT------------ +# check if %JOBID% is passed from command line +JOBID=$5 +if [ -z "$JOBID" ]; then + NO_JOBID=1 +else + NO_JOBID=0 +fi +# check if file is a .mpg +if [ `expr match "$FILENAME" '.*\.mpg'` -ne 0 ]; then + MPEG="--mpeg2" +else + MPEG="" +fi + +# create temp filename so multiple instances won't conflict +TMPNAME=rmvCOMMS-$$ +TMPFILE=$VIDEODIR/$FILENAME-$$ +STATUSFILE=/myth/tmp/$TMPNAME-status.log + +touch $STATUSFILE + +update_status 4 + +check_myth_jobcmds + +# check for cutlist +MYTHCOMMFRAMES=`mythcommflag --getcutlist -f $VIDEODIR/$FILENAME | grep 'Cutlist:' | cut -d \ -f 2` +if [ -n "$MYTHCOMMFRAMES" ]; then + echo "Extracting cutlist..." + update_comment "Removing Commercials..." + ( /usr/bin/nice -n19 /usr/bin/mythtranscode -c $CHANID -s $STARTTIME -o $TMPFILE $MPEG --honorcutlist --showprogress > $STATUSFILE 2>&1 ; echo "Done" >> $STATUSFILE ) & + TPID=$! + get_pid + check_background_progress + ERROR=$? + if [ $ERROR -ne 0 ]; then + echo "Transcoding failed for ${FILENAME} with error $ERROR" + exit $ERROR + fi + + check_myth_jobcmds + # move temp file to output location + echo "Moving file..." + update_comment "Moving file..." + if [ `$SQLCMD "select data from settings where value='SaveTranscoding';" | sed '/[0-9]/!d'` = 1 ]; then + echo "DB is set to save transcodeing" + mv $VIDEODIR/$FILENAME $VIDEODIR/$FILENAME.old + fi + mv $TMPFILE $VIDEODIR/$FILENAME + + # file has changed, rebuild index + echo "Rebuilding index..." + update_comment "Rebuilding index..." + mythcommflag -c $CHANID -s $STARTTIME --rebuild + ERROR=$? + if [ $ERROR -ne 0 ]; then + echo "Rebuilding seek list failed for ${FILENAME} with error $ERROR" + exit $ERROR + fi + + # remove old cutlist + echo "Removing old cutlist..." + update_comment "Removing old cutlist..." + mythcommflag -c $CHANID -s $STARTTIME --clearcutlist + ERROR=$? + if [ $ERROR -eq 0 ]; then + # Fix the database entry for the file + `$SQLCMD UPDATE recorded SET cutlist = 0, filesize = $(ls -l $VIDEODIR/$FILENAME | awk '{print $5}') WHERE basename = '$FILENAME';` > /dev/null + else + echo "Clearing cutlist failed for ${FILENAME} with error $ERROR" + exit $ERROR + fi + clean_up_files + echo "Commercials Removed" + update_status 272 + update_comment "Sucessfully Completed." +else + echo "No cutlist found." +fi diff --git a/abs/extra/rhino/PKGBUILD b/abs/extra/rhino/PKGBUILD new file mode 100644 index 0000000..27d7c46 --- /dev/null +++ b/abs/extra/rhino/PKGBUILD @@ -0,0 +1,18 @@ +# Maintainer: Andreas Radke +# Maintainer: Jan de Groot + +pkgname=rhino +pkgver=1.7R1 +pkgrel=1 +pkgdesc="Open-source implementation of JavaScript written entirely in Java" +arch=('i686' 'x86_64') +url="http://www.mozilla.org/rhino/" +license=('MPL' 'GPL2') +source=(ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R1.zip) +md5sums=('613eed8201d37be201805e5048ebb0c3') + +build() { + cd ${srcdir}/rhino1_7R1 + install -m755 -d ${pkgdir}/usr/share/java + install -m644 js.jar ${pkgdir}/usr/share/java/ || return 1 +} diff --git a/abs/extra/romdb/PKGBUILD b/abs/extra/romdb/PKGBUILD new file mode 100644 index 0000000..9601fc6 --- /dev/null +++ b/abs/extra/romdb/PKGBUILD @@ -0,0 +1,17 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=romdb +pkgver=20051116_02 +pkgrel=2 +pkgdesc="Table used by MythGame to store information about games." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://linhes.org/" +source=(ftp://ftp.knoppmyth.net/R6/sources/romdb-20051116-02.tgz) +install=romdb.install +build() { + cd $startdir/src/ + mkdir -p $startdir/pkg/usr/LH/sql + cp -a *.sql $startdir/pkg/usr/LH/sql +} diff --git a/abs/extra/romdb/romdb.install b/abs/extra/romdb/romdb.install new file mode 100644 index 0000000..4ef33d4 --- /dev/null +++ b/abs/extra/romdb/romdb.install @@ -0,0 +1,18 @@ +# arg 1: the new package version +post_install() { + mysql -D mythconverg -u mythtv -pmythtv < /usr/LH/sql/romdb-20051116-02.sql +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/extra/rrd_stats/PKGBUILD b/abs/extra/rrd_stats/PKGBUILD new file mode 100644 index 0000000..40f0536 --- /dev/null +++ b/abs/extra/rrd_stats/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=rrd_stats +pkgver=1 +pkgrel=16 +pkgdesc="graph system stats" +arch=('i686' 'x86_64') +url="" +license=('GPL') +source=(rrd_stats.tgz) +depends=('hddtemp' 'sysstat' 'xmbmon' 'rrdtool' 'perl' 'local-website') +backup=('etc/rrdsettings.cfg' 'data/srv/httpd/htdocs/index-rrd.html') +install=rrd_stats.install +build() { + cd $startdir/src/$pkgname + cp -a * $startdir/pkg + mkdir -p $startdir/pkg/var/lib/rrd + echo "RRD files are used by rrd_stats" > $startdir/pkg/var/lib/rrd/README + mv $startdir/pkg/data/srv/httpd/htdocs/rrd/index.html $startdir/pkg/data/srv/httpd/htdocs/rrd/index-rrd.html + chown -R http:users $startdir/pkg/data/srv/httpd + chmod -R 755 $startdir/pkg/data/srv/httpd +} diff --git a/abs/extra/rrd_stats/rrd_stats.install b/abs/extra/rrd_stats/rrd_stats.install new file mode 100644 index 0000000..126e4f0 --- /dev/null +++ b/abs/extra/rrd_stats/rrd_stats.install @@ -0,0 +1,34 @@ +post_install() { + PFIX="/data/srv/httpd/htdocs/rrd" + if [ ! -e $PFIX/index.html.orig ] + then + mv $PFIX/index.html $PFIX/index.html.orig + ln -s $PFIX/index-rrd.html $PFIX/index.html + fi + + ct=`crontab -l` + echo $ct | grep -q run_rrd.sh + if [ $? != 0 ] + then + line="*/5 * * * * /usr/bin/run_rrd.sh > /dev/null" + (crontab -l; echo "$line") | crontab - + fi + + +} + +post_upgrade() { + post_install $1 +} + + +pre_remove() { + crontab -l | grep -v run_rrd | crontab - + PFIX="/data/srv/httpd/htdocs/rrd" + if [ -e $PFIX/index.html.orig ] + then + rm $PFIX/index.html + mv $PFIX/index.html.orig $PFIX/index.html + fi + +} diff --git a/abs/extra/rrd_stats/rrd_stats.tgz b/abs/extra/rrd_stats/rrd_stats.tgz new file mode 100644 index 0000000..c141ffa Binary files /dev/null and b/abs/extra/rrd_stats/rrd_stats.tgz differ diff --git a/abs/extra/rrd_stats/run_rrd.sh b/abs/extra/rrd_stats/run_rrd.sh new file mode 100644 index 0000000..19150a4 --- /dev/null +++ b/abs/extra/rrd_stats/run_rrd.sh @@ -0,0 +1,8 @@ +#!/bin/sh +RRD='hddtemp disk traffic mem cpu usage ups' +DIR='/usr/bin' +# +for x in $RRD +do + $DIR/rrd_${x}.pl >& /dev/null +done diff --git a/abs/extra/rrdtool/ChangeLog b/abs/extra/rrdtool/ChangeLog new file mode 100644 index 0000000..f289390 --- /dev/null +++ b/abs/extra/rrdtool/ChangeLog @@ -0,0 +1,13 @@ +2009-01-21 Eric Belanger + + * rrdtool 1.3.6-1 + * Upstream update + +2009-01-02 Eric Belanger + + * rrdtool 1.3.5-1 + * Upstream update + * Replaced install scriptlet by optdepends + * Added libxml2 and pango depends + * Libtool slayed + * Added ChangeLog diff --git a/abs/extra/rrdtool/PKGBUILD b/abs/extra/rrdtool/PKGBUILD new file mode 100644 index 0000000..9d67224 --- /dev/null +++ b/abs/extra/rrdtool/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 24808 2009-01-21 07:19:42Z eric $ +# Maintainer: Eric Belanger +# Contributor: Tom K + +pkgname=rrdtool +pkgver=1.3.6 +pkgrel=7 +pkgdesc="Data logging and graphing application" +arch=('i686' 'x86_64') +url="http://www.rrdtool.org" +license=('GPL') +depends=('libart-lgpl' 'libpng' 'freetype2' 'libxml2' 'pango' ) +makedepends=('python' 'tcl' 'ruby') +optdepends=('tcl, python and/or ruby: to use corresponding binding') +options=('!libtool' '!emptydirs') +source=(http://oss.oetiker.ch/rrdtool/pub/rrdtool-${pkgver}.tar.gz) +md5sums=('afaabd5a60115581e866efbac796d307') +sha1sums=('4a8499ab58dfd37419bf1cb2429a29da9bc782c3') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --enable-perl-site-install \ + --with-perl-options='INSTALLDIRS=vendor' --enable-ruby-site-install || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + + find ${pkgdir} -name '.packlist' -delete + find ${pkgdir} -name 'perllocal.pod' -delete +} diff --git a/abs/extra/rtmpdump/PKGBUILD b/abs/extra/rtmpdump/PKGBUILD new file mode 100644 index 0000000..33d90b1 --- /dev/null +++ b/abs/extra/rtmpdump/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=rtmpdump +pkgver=1.2a +pkgrel=2 +pkgdesc="A small dumper for media content streamed over the RTMP protocol." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://sourceforge.net/projects/rtmpdump/" +depends=('boost') +source=('http://garr.dl.sourceforge.net/sourceforge/rtmpdump/rtmpdump-v1.2a.tar.gz') + +build() { + cd $startdir/src/rtmpdump + make + mkdir -p $startdir/pkg/usr/bin + cp -p rtmpdump $startdir/pkg/usr/bin +} diff --git a/abs/extra/ruby/PKGBUILD b/abs/extra/ruby/PKGBUILD new file mode 100644 index 0000000..4a4cdd0 --- /dev/null +++ b/abs/extra/ruby/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 26958 2009-02-14 23:32:24Z jgc $ +# Maintainer: dorphell +# Contributors: John Proctor +# Jeramy Rutley +pkgname=ruby +pkgver=1.8.7_p72 +_pkgver=1.8.7-p72 +pkgrel=3 +pkgdesc="An object-oriented language for quick and easy programming" +arch=(i686 x86_64) +license=('custom') +url="http://www.ruby-lang.org/en/" +depends=('gdbm>=1.8.3' 'db>=4.7.25' 'openssl>=0.9.8j' 'zlib>=1.2.3.3' 'readline>=5.2.013') +makedepends=('tk>=8.5') +source=(ftp://ftp.ruby-lang.org/pub/ruby/stable/${pkgname}-${_pkgver}.tar.bz2) +options=('!emptydirs' 'force') +md5sums=('0b215c46b89b28d7ab8d56d96e72d5b9') + +build() { + cd "${srcdir}/${pkgname}-${_pkgver}" + ./configure --prefix=/usr --enable-shared --enable-pthread || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + #generate the ri docs + make -j1 DESTDIR="${pkgdir}" install-doc || return 1 + install -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/abs/extra/sample-media/PKGBUILD b/abs/extra/sample-media/PKGBUILD new file mode 100644 index 0000000..9851899 --- /dev/null +++ b/abs/extra/sample-media/PKGBUILD @@ -0,0 +1,37 @@ +pkgname=sample-media +pkgver=1 +pkgrel=5 +pkgdesc="sample media for testing" +url="" +license="public domain" +depends=(media_dirs) +makedepends=() +conflicts=() +replaces=() +backup=() +install=sample.install +provides=("") +source=() +md5sums=() +arch=('i686') + +build() { +cd $startdir/src/ +mkdir -p myth/music +mkdir -p myth/gallery +mkdir -p myth/video +mkdir -p myth/games/snes/roms + + +cp -rp $startdir/audio/* myth/music +cp -rp $startdir/images/* myth/gallery +cp -rp $startdir/video/* myth/video +cp -rp $startdir/rom/* myth/games/snes/roms + +cd myth +chown -R mythtv media +chmod -R 777 media +cd $startdir/src +cp -rp myth $startdir/pkg/ + +} diff --git a/abs/extra/sample-media/audio/05-Hush.mp3 b/abs/extra/sample-media/audio/05-Hush.mp3 new file mode 100644 index 0000000..e335abb Binary files /dev/null and b/abs/extra/sample-media/audio/05-Hush.mp3 differ diff --git a/abs/extra/sample-media/images/115_1573.jpg b/abs/extra/sample-media/images/115_1573.jpg new file mode 100644 index 0000000..f626325 Binary files /dev/null and b/abs/extra/sample-media/images/115_1573.jpg differ diff --git a/abs/extra/sample-media/images/345-1217206791B81W.jpg b/abs/extra/sample-media/images/345-1217206791B81W.jpg new file mode 100644 index 0000000..646ae95 Binary files /dev/null and b/abs/extra/sample-media/images/345-1217206791B81W.jpg differ diff --git a/abs/extra/sample-media/images/classic-menugraph.png b/abs/extra/sample-media/images/classic-menugraph.png new file mode 100644 index 0000000..bedbd93 Binary files /dev/null and b/abs/extra/sample-media/images/classic-menugraph.png differ diff --git a/abs/extra/sample-media/images/dvr_menugraph.png b/abs/extra/sample-media/images/dvr_menugraph.png new file mode 100644 index 0000000..712ab36 Binary files /dev/null and b/abs/extra/sample-media/images/dvr_menugraph.png differ diff --git a/abs/extra/sample-media/images/menu_diagram_color.png b/abs/extra/sample-media/images/menu_diagram_color.png new file mode 100644 index 0000000..d364d94 Binary files /dev/null and b/abs/extra/sample-media/images/menu_diagram_color.png differ diff --git a/abs/extra/sample-media/rom/PACMAN.SMC b/abs/extra/sample-media/rom/PACMAN.SMC new file mode 100644 index 0000000..7a1f403 Binary files /dev/null and b/abs/extra/sample-media/rom/PACMAN.SMC differ diff --git a/abs/extra/sample-media/sample.install b/abs/extra/sample-media/sample.install new file mode 100644 index 0000000..123d060 --- /dev/null +++ b/abs/extra/sample-media/sample.install @@ -0,0 +1,41 @@ +# This is a default template for a post-install scriptlet. You can +# remove any functions you don't need (and this header). + +# arg 1: the new package version +pre_install() { + /bin/true +} + +# arg 1: the new package version +post_install() { + cd / + chown -R mythtv:users /myth + +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + /bin/true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + depmod -A + /bin/true +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/extra/sample-media/video/TripThe1939.mpeg b/abs/extra/sample-media/video/TripThe1939.mpeg new file mode 100644 index 0000000..84f9ba3 Binary files /dev/null and b/abs/extra/sample-media/video/TripThe1939.mpeg differ diff --git a/abs/extra/scanfw/PKGBUILD b/abs/extra/scanfw/PKGBUILD new file mode 100644 index 0000000..21d4f29 --- /dev/null +++ b/abs/extra/scanfw/PKGBUILD @@ -0,0 +1,23 @@ +# Contributor: Michael Hanson +pkgname=scanfw +pkgver=98d.beta +pkgrel=1 +pkgdesc="A CCI scanner for MythTV" +arch=('i686') +url="https://help.ubuntu.com/community/MythTV_Firewire/scanfw" +license=('GPL2') +depends=('libraw1394' 'libiec61883' 'libavc1394') +install=scanfw.install +source=($pkgname-$pkgver.tar.gz) +md5sums=('8b1da4fca459062f366232a3de6c7775') + +build() { + cd "$srcdir/$pkgname-$pkgver" + make || return 1 + mkdir -p "$pkgdir"/usr/bin + mkdir -p "$pkgdir"/usr/share/doc/"$pkgname" + cp "$srcdir"/"$pkgname"-"$pkgver"/scanfw "$pkgdir"/usr/bin/ || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/mythtv.firewire.channels.pl "$pkgdir"/usr/bin/ || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/SCAN_TIPS "$pkgdir"/usr/share/doc/"$pkgname" || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/README "$pkgdir"/usr/share/doc/"$pkgname" || return 1 +} diff --git a/abs/extra/scanfw/scanfw-98d.beta.tar.gz b/abs/extra/scanfw/scanfw-98d.beta.tar.gz new file mode 100644 index 0000000..7bd0ee9 Binary files /dev/null and b/abs/extra/scanfw/scanfw-98d.beta.tar.gz differ diff --git a/abs/extra/scanfw/scanfw.install b/abs/extra/scanfw/scanfw.install new file mode 100644 index 0000000..d5695a9 --- /dev/null +++ b/abs/extra/scanfw/scanfw.install @@ -0,0 +1,5 @@ +post_install() { + echo "==> Information on usage is in /usr/share/doc/scanfw/README." + echo "==> Scanning tips can be found in /usr/share/doc/scanfw/SCAN_TIPS." +} + diff --git a/abs/extra/scte65scan/PKGBUILD b/abs/extra/scte65scan/PKGBUILD new file mode 100644 index 0000000..221b7ba --- /dev/null +++ b/abs/extra/scte65scan/PKGBUILD @@ -0,0 +1,23 @@ +# Contributor: Michael Hanson +pkgname=scte65scan +pkgver=0.2.1 +pkgrel=1 +pkgdesc="A reader and parser of SCTE-65 in-band SI data with HDHomerun support." +arch=('i686') +url="http://scte65scan.sourceforge.net/" +license=('GPL') +source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgver/$pkgname-$pkgver.tgz http://download.silicondust.com/hdhomerun/libhdhomerun_20090830.tgz) +md5sums=('1ab2d5f1895931c9c1192ee0dcc46f11' + '9c51200782c159703f3b32de24ae2608') + +build() { + cd "$srcdir/$pkgname-$pkgver" + tar zxf "$srcdir"/libhdhomerun_20090830.tgz + make -f Makefile.hdhr || return 1 + mkdir -p "$pkgdir"/usr/bin || return 1 + mkdir -p "$pkgdir"/usr/share/doc/"$pkgname" || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/scte65scan "$pkgdir"/usr/bin/ || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/Changelog "$pkgdir"/usr/share/doc/"$pkgname" || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/README "$pkgdir"/usr/share/doc/"$pkgname" || return 1 + cp "$srcdir"/"$pkgname"-"$pkgver"/us-Cable-Standard-center-frequencies-QAM256 "$pkgdir"/usr/share/doc/"$pkgname" || return 1 +} diff --git a/abs/extra/sdl_gfx/PKGBUILD b/abs/extra/sdl_gfx/PKGBUILD new file mode 100644 index 0000000..884a80b --- /dev/null +++ b/abs/extra/sdl_gfx/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Contributor: Tom Newsom +# Maintainer: Kevin Piche + +# SONAME change rebuild: clanlib luola sdl_perl +pkgname=sdl_gfx +pkgver=2.0.16 +pkgrel=1 +pkgdesc="SDL Graphic Primitives" +arch=(i686 x86_64) +license=('LGPL') +options=(!libtool) +url="http://www.ferzkopp.net/joomla/content/view/19/14/" +source=(http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-${pkgver}.tar.gz) +depends=('sdl') +md5sums=('22dc2d9d916197829f9342c490d2d02b') + +build() { + cd ${startdir}/src/SDL_gfx-${pkgver} + + if [ "${CARCH}" == "x86_64" ]; then + ./configure --prefix=/usr --disable-mmx + else + ./configure --prefix=/usr + fi + + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/sdl_image/PKGBUILD b/abs/extra/sdl_image/PKGBUILD new file mode 100644 index 0000000..f3ab8cb --- /dev/null +++ b/abs/extra/sdl_image/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot +# Contributor: Tom Newsom +pkgname=sdl_image +pkgver=1.2.6 +pkgrel=3 +pkgdesc="A simple library to load images of various formats as SDL surfaces" +arch=(i686 x86_64) +license=('LGPL') +depends=('sdl>=1.2.13' 'libpng' 'libjpeg' 'libtiff' 'zlib') +options=('!libtool') +url="http://www.libsdl.org/projects/SDL_image/" +source=(http://www.libsdl.org/projects/SDL_image/release/SDL_image-${pkgver}.tar.gz + SDL_image-IMG_lbm.patch + SDL_image-buffer-overflow.patch) +md5sums=('b866dc4f647517bdaf57f6ffdefd013e' + '81424f716513845f27e1b69459343327' + 'e774a12d1a07b788233f6c15aca05780') + +build() { + cd ${startdir}/src/SDL_image-${pkgver} + patch -Np2 -i ${startdir}/src/SDL_image-IMG_lbm.patch || return 1 + patch -Np2 -i ${startdir}/src/SDL_image-buffer-overflow.patch || return 1 + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/sdl_image/SDL_image-IMG_lbm.patch b/abs/extra/sdl_image/SDL_image-IMG_lbm.patch new file mode 100644 index 0000000..cc4a29b --- /dev/null +++ b/abs/extra/sdl_image/SDL_image-IMG_lbm.patch @@ -0,0 +1,28 @@ +--- trunk/SDL_image/IMG_lbm.c 2007/07/20 04:37:11 3341 ++++ trunk/SDL_image/IMG_lbm.c 2008/01/03 20:05:34 3521 +@@ -28,6 +28,7 @@ + EHB and HAM (specific Amiga graphic chip modes) support added by Marc Le Douarain + (http://www.multimania.com/mavati) in December 2003. + Stencil and colorkey fixes by David Raulo (david.raulo AT free DOT fr) in February 2004. ++ Buffer overflow fix in RLE decompression by David Raulo in January 2008. + */ + + #include +@@ -328,7 +329,7 @@ + count ^= 0xFF; + count += 2; /* now it */ + +- if ( !SDL_RWread( src, &color, 1, 1 ) ) ++ if ( ( count > remainingbytes ) || !SDL_RWread( src, &color, 1, 1 ) ) + { + error="error reading BODY chunk"; + goto done; +@@ -339,7 +340,7 @@ + { + ++count; + +- if ( !SDL_RWread( src, ptr, count, 1 ) ) ++ if ( ( count > remainingbytes ) || !SDL_RWread( src, ptr, count, 1 ) ) + { + error="error reading BODY chunk"; + goto done; diff --git a/abs/extra/sdl_image/SDL_image-buffer-overflow.patch b/abs/extra/sdl_image/SDL_image-buffer-overflow.patch new file mode 100644 index 0000000..0be82dc --- /dev/null +++ b/abs/extra/sdl_image/SDL_image-buffer-overflow.patch @@ -0,0 +1,13 @@ +--- trunk/SDL_image/IMG_gif.c 2007/12/28 08:17:23 3461 ++++ trunk/SDL_image/IMG_gif.c 2007/12/28 16:43:56 3462 +@@ -418,6 +418,10 @@ + static int stack[(1 << (MAX_LWZ_BITS)) * 2], *sp; + register int i; + ++ /* Fixed buffer overflow found by Michael Skladnikiewicz */ ++ if (input_code_size > MAX_LWZ_BITS) ++ return -1; ++ + if (flag) { + set_code_size = input_code_size; + code_size = set_code_size + 1; diff --git a/abs/extra/sdl_mixer/PKGBUILD b/abs/extra/sdl_mixer/PKGBUILD new file mode 100644 index 0000000..702532c --- /dev/null +++ b/abs/extra/sdl_mixer/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 15782 2008-10-19 01:07:30Z allan $ +# Maintainer: Allan McRae +# Contributor: Tom Newsom +# Contributor: Lukas Sabota (Timidity Patch) + +pkgname=sdl_mixer +pkgver=1.2.8 +pkgrel=3 +pkgdesc="A simple multi-channel audio mixer" +arch=('i686' 'x86_64') +url="http://www.libsdl.org/projects/SDL_mixer/" +license=('LGPL' 'GPL') +depends=('sdl>=1.2.12' 'libvorbis' 'libmikmod' 'smpeg') +options=('!libtool') +source=(http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${pkgver}.tar.gz) +md5sums=('0b5b91015d0f3bd9597e094ba67c4d65') + +build() { + cd ${srcdir}/SDL_mixer-${pkgver} + sed -i 's|/usr/local/lib/timidity|/usr/lib/timidity|' timidity/config.h || return 1 + sed -i 's|/etc/timidity/timidity.cfg|/etc/timidity++/timidity.cfg|' timidity/config.h || return 1 + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${pkgdir} install +} diff --git a/abs/extra/sdl_net/PKGBUILD b/abs/extra/sdl_net/PKGBUILD new file mode 100644 index 0000000..ac3073e --- /dev/null +++ b/abs/extra/sdl_net/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck +# Contributor: dorphell +# Contributor: Tom Newsom +pkgname=sdl_net +pkgver=1.2.7 +pkgrel=2 +pkgdesc="A small sample cross-platform networking library" +arch=(i686 x86_64) +license=(GPL) +depends=('sdl') +options=('!libtool') +url="http://www.libsdl.org/projects/SDL_net/" +source=(http://www.libsdl.org/projects/SDL_net/release/SDL_net-${pkgver}.tar.gz) + +build() { + cd ${startdir}/src/SDL_net-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} +md5sums=('6bd4662d1423810f3140d4da21b6d912') diff --git a/abs/extra/sdl_pango/PKGBUILD b/abs/extra/sdl_pango/PKGBUILD new file mode 100644 index 0000000..705e900 --- /dev/null +++ b/abs/extra/sdl_pango/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 8769 2008-08-16 05:40:38Z eric $ +# +# Contributor: gyo + +pkgname=sdl_pango +pkgver=0.1.2 +pkgrel=1 +pkgdesc="Pango SDL binding" +arch=('i686' 'x86_64') +url="http://sdlpango.sourceforge.net/" +license="" +depends=('pango' 'sdl') +options=('!libtool') +source=(http://switch.dl.sourceforge.net/sourceforge/sdlpango/SDL_Pango-$pkgver.tar.gz http://zarb.org/~gc/t/SDL_Pango-$pkgver-API-adds.patch) +md5sums=('85bbf9bb7b1cee0538154dadd045418c' '5decf3d7eb724e27548af3142131a2f6') + +build() { + _prefixname=SDL_Pango + cd $startdir/src/$_prefixname-$pkgver + patch -Np0 < $startdir/src/$_prefixname-$pkgver-API-adds.patch + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch b/abs/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch new file mode 100644 index 0000000..1535a56 --- /dev/null +++ b/abs/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch @@ -0,0 +1,116 @@ +--- src/SDL_Pango.c 2004-12-10 10:06:33.000000000 +0100 ++++ src/SDL_Pango.c 2006-09-24 22:46:24.000000000 +0200 +@@ -723,13 +723,8 @@ + SDL_UnlockSurface(surface); + } + +-/*! +- Create a context which contains Pango objects. +- +- @return A pointer to the context as a SDLPango_Context*. +-*/ + SDLPango_Context* +-SDLPango_CreateContext() ++SDLPango_CreateContext_GivenFontDesc(const char* font_desc) + { + SDLPango_Context *context = g_malloc(sizeof(SDLPango_Context)); + G_CONST_RETURN char *charset; +@@ -743,8 +738,7 @@ + pango_context_set_language (context->context, pango_language_from_string (charset)); + pango_context_set_base_dir (context->context, PANGO_DIRECTION_LTR); + +- context->font_desc = pango_font_description_from_string( +- MAKE_FONT_NAME (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE)); ++ context->font_desc = pango_font_description_from_string(font_desc); + + context->layout = pango_layout_new (context->context); + +@@ -762,6 +756,17 @@ + } + + /*! ++ Create a context which contains Pango objects. ++ ++ @return A pointer to the context as a SDLPango_Context*. ++*/ ++SDLPango_Context* ++SDLPango_CreateContext() ++{ ++ SDLPango_CreateContext_GivenFontDesc(MAKE_FONT_NAME(DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE)); ++} ++ ++/*! + Free a context. + + @param *context [i/o] Context to be free +@@ -1053,6 +1058,20 @@ + pango_layout_set_font_description (context->layout, context->font_desc); + } + ++void ++SDLPango_SetText_GivenAlignment( ++ SDLPango_Context *context, ++ const char *text, ++ int length, ++ SDLPango_Alignment alignment) ++{ ++ pango_layout_set_attributes(context->layout, NULL); ++ pango_layout_set_text (context->layout, text, length); ++ pango_layout_set_auto_dir (context->layout, TRUE); ++ pango_layout_set_alignment (context->layout, alignment); ++ pango_layout_set_font_description (context->layout, context->font_desc); ++} ++ + /*! + Set plain text to context. + Text must be utf-8. +@@ -1067,11 +1086,7 @@ + const char *text, + int length) + { +- pango_layout_set_attributes(context->layout, NULL); +- pango_layout_set_text (context->layout, text, length); +- pango_layout_set_auto_dir (context->layout, TRUE); +- pango_layout_set_alignment (context->layout, PANGO_ALIGN_LEFT); +- pango_layout_set_font_description (context->layout, context->font_desc); ++ SDLPango_SetText_GivenAlignment(context, text, length, SDLPANGO_ALIGN_LEFT); + } + + /*! +--- src/SDL_Pango.h 2004-12-10 10:06:33.000000000 +0100 ++++ src/SDL_Pango.h 2006-09-24 22:46:01.000000000 +0200 +@@ -109,12 +109,20 @@ + SDLPANGO_DIRECTION_NEUTRAL /*! Neutral */ + } SDLPango_Direction; + +- ++/*! ++ Specifies alignment of text. See Pango reference for detail ++*/ ++typedef enum { ++ SDLPANGO_ALIGN_LEFT, ++ SDLPANGO_ALIGN_CENTER, ++ SDLPANGO_ALIGN_RIGHT ++} SDLPango_Alignment; + + extern DECLSPEC int SDLCALL SDLPango_Init(); + + extern DECLSPEC int SDLCALL SDLPango_WasInit(); + ++extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext_GivenFontDesc(const char* font_desc); + extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext(); + + extern DECLSPEC void SDLCALL SDLPango_FreeContext( +@@ -157,6 +165,12 @@ + const char *markup, + int length); + ++extern DECLSPEC void SDLCALL SDLPango_SetText_GivenAlignment( ++ SDLPango_Context *context, ++ const char *text, ++ int length, ++ SDLPango_Alignment alignment); ++ + extern DECLSPEC void SDLCALL SDLPango_SetText( + SDLPango_Context *context, + const char *markup, diff --git a/abs/extra/sdl_perl/PKGBUILD b/abs/extra/sdl_perl/PKGBUILD new file mode 100644 index 0000000..5824cd8 --- /dev/null +++ b/abs/extra/sdl_perl/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dorphell +# Contributor: Sarah Hay + +pkgname=sdl_perl +_realname=SDL_Perl +pkgver=2.1.3 +pkgrel=2 +pkgdesc="A Perl wrapper for SDL" +arch=(i686 x86_64) +license=('LGPL') +url="http://sdl.perl.org" +depends=('perl>=5.10.0' 'sdl_net' 'sdl_ttf' 'sdl_image' 'sdl_mixer' 'mesa' +'sdl_gfx' 'smpeg') +makedepends=('perl-yaml') +options=(!emptydirs) +source=(http://search.cpan.org/CPAN/authors/id/D/DG/DGOEHRIG/${_realname}-${pkgver}.tar.gz) +md5sums=('6ce26e1b710ce52def4ec22637cd5176') + +build() { + cd ${startdir}/src/${_realname}-${pkgver} + # install module in vendor directories. + perl Build.PL installdirs=vendor destdir=${startdir}/pkg \ + --config man1ext=1p --config man3ext=3pm + perl Build + perl Build install + + # Fix bad location of libraries. + cd ${startdir}/pkg/usr/lib/perl5/vendor_perl + mv -f auto/src/SDL* auto + rmdir auto/src +} diff --git a/abs/extra/sdl_sound/PKGBUILD b/abs/extra/sdl_sound/PKGBUILD new file mode 100644 index 0000000..87885c2 --- /dev/null +++ b/abs/extra/sdl_sound/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Contributor: Tom Newsom +# Maintainer: dorphell +pkgname=sdl_sound +pkgver=1.0.1 +pkgrel=7 +pkgdesc="A library to decode several popular sound file formats, such as .WAV and .MP3" +arch=(i686 x86_64) +depends=('sdl' 'libmikmod' 'libvorbis' 'flac>=1.1.4' 'speex') +source=(http://icculus.org/SDL_sound/downloads/SDL_sound-$pkgver.tar.gz flac.patch) +url="http://icculus.org/SDL_sound/" + +build() { + cd $startdir/src/SDL_sound-$pkgver + patch -Np1 -i ../flac.patch || return 1 + aclocal + autoconf + automake --foreign + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + # libtoolslay + find $startdir/pkg -name '*.la' -exec rm {} \; +} +md5sums=('49e197ef7c8ab623d0640dc74be43160' '302aa9dc94cc71dd3339ca3177d36e1c') diff --git a/abs/extra/sdl_sound/flac.patch b/abs/extra/sdl_sound/flac.patch new file mode 100644 index 0000000..d0ed491 --- /dev/null +++ b/abs/extra/sdl_sound/flac.patch @@ -0,0 +1,126 @@ +diff -u -r SDL_sound-1.0.1/configure.in SDL_sound-1.0.1-flac/configure.in +--- SDL_sound-1.0.1/configure.in 2003-10-12 20:49:54.000000000 +0200 ++++ SDL_sound-1.0.1-flac/configure.in 2006-12-11 20:43:46.546583251 +0100 +@@ -155,9 +155,12 @@ + dnl FLAC developers tend to break their API with every release, so we're + dnl checking for the latest-and-greatest here so we don't have to support + dnl obsolete versions. ++dnl Starting with FLAC 1.1.3: ++dnl libFLAC supports Ogg FLAC (no more libOggFLAC) so we also need -logg ++dnl the libFLAC .so version is also #defined in FLAC/export.h + + dnl Hooray for shitty autoconf bugs! +-x="C__seekable_stream_decoder_process_single" ++x="C__stream_decoder_process_single" + flcsym="FLA$x" + dnl Check for libFLAC + AC_ARG_ENABLE(flac, +@@ -167,7 +170,7 @@ + AC_CHECK_HEADER(FLAC/stream_decoder.h, have_flac_hdr=yes) + AC_CHECK_LIB(FLAC, $flcsym, have_flac_lib=yes) + if test x$have_flac_hdr = xyes -a x$have_flac_lib = xyes; then +- LIBS="$LIBS -lFLAC" ++ LIBS="$LIBS -lFLAC -logg" + AC_DEFINE(SOUND_SUPPORTS_FLAC) + fi + fi +diff -u -r SDL_sound-1.0.1/decoders/flac.c SDL_sound-1.0.1-flac/decoders/flac.c +--- SDL_sound-1.0.1/decoders/flac.c 2003-03-10 23:44:14.000000000 +0100 ++++ SDL_sound-1.0.1-flac/decoders/flac.c 2006-12-11 20:43:57.880097062 +0100 +@@ -44,6 +44,16 @@ + #define __SDL_SOUND_INTERNAL__ + #include "SDL_sound_internal.h" + ++#include ++ ++/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */ ++#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8 ++#define LEGACY_FLAC ++#else ++#undef LEGACY_FLAC ++#endif ++ ++#ifdef LEGACY_FLAC + #include + + #define D_END_OF_STREAM FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM +@@ -80,6 +90,34 @@ + typedef FLAC__SeekableStreamDecoderSeekStatus d_seek_status_t; + typedef FLAC__SeekableStreamDecoderTellStatus d_tell_status_t; + typedef FLAC__SeekableStreamDecoderLengthStatus d_length_status_t; ++#else ++#include ++ ++#define D_END_OF_STREAM FLAC__STREAM_DECODER_END_OF_STREAM ++ ++#define d_new() FLAC__stream_decoder_new() ++#define d_process_metadata(x) FLAC__stream_decoder_process_until_end_of_metadata(x) ++#define d_process_one_frame(x) FLAC__stream_decoder_process_single(x) ++#define d_get_state(x) FLAC__stream_decoder_get_state(x) ++#define d_finish(x) FLAC__stream_decoder_finish(x) ++#define d_delete(x) FLAC__stream_decoder_delete(x) ++ ++typedef FLAC__StreamDecoder decoder_t; ++typedef FLAC__StreamDecoderReadStatus d_read_status_t; ++ ++#define D_SEEK_STATUS_OK FLAC__STREAM_DECODER_SEEK_STATUS_OK ++#define D_SEEK_STATUS_ERROR FLAC__STREAM_DECODER_SEEK_STATUS_ERROR ++#define D_TELL_STATUS_OK FLAC__STREAM_DECODER_TELL_STATUS_OK ++#define D_TELL_STATUS_ERROR FLAC__STREAM_DECODER_TELL_STATUS_ERROR ++#define D_LENGTH_STATUS_OK FLAC__STREAM_DECODER_LENGTH_STATUS_OK ++#define D_LENGTH_STATUS_ERROR FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR ++ ++#define d_seek_absolute(x, y) FLAC__stream_decoder_seek_absolute(x, y) ++ ++typedef FLAC__StreamDecoderSeekStatus d_seek_status_t; ++typedef FLAC__StreamDecoderTellStatus d_tell_status_t; ++typedef FLAC__StreamDecoderLengthStatus d_length_status_t; ++#endif + + #define D_WRITE_CONTINUE FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE + #define D_READ_END_OF_STREAM FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM +@@ -141,9 +179,15 @@ + } /* free_flac */ + + ++#ifdef LEGACY_FLAC + static d_read_status_t read_callback( + const decoder_t *decoder, FLAC__byte buffer[], + unsigned int *bytes, void *client_data) ++#else ++static d_read_status_t read_callback( ++ const decoder_t *decoder, FLAC__byte buffer[], ++ size_t *bytes, void *client_data) ++#endif + { + flac_t *f = (flac_t *) client_data; + Uint32 retval; +@@ -400,6 +444,7 @@ + BAIL_MACRO(ERR_OUT_OF_MEMORY, 0); + } /* if */ + ++#ifdef LEGACY_FLAC + d_set_read_callback(decoder, read_callback); + d_set_write_callback(decoder, write_callback); + d_set_metadata_callback(decoder, metadata_callback); +@@ -410,6 +455,7 @@ + d_set_eof_callback(decoder, eof_callback); + + d_set_client_data(decoder, f); ++#endif + + f->rw = internal->rw; + f->sample = sample; +@@ -418,7 +464,12 @@ + f->is_flac = 0 /* !!! FIXME: should be "has_extension", not "0". */; + + internal->decoder_private = f; ++ /* really should check the init return value here: */ ++#ifdef LEGACY_FLAC + d_init(decoder); ++#else ++ FLAC__stream_decoder_init_stream(decoder, read_callback, seek_callback, tell_callback, length_callback, eof_callback, write_callback, metadata_callback, error_callback, f); ++#endif + + sample->flags = SOUND_SAMPLEFLAG_NONE; + diff --git a/abs/extra/sdl_ttf/PKGBUILD b/abs/extra/sdl_ttf/PKGBUILD new file mode 100644 index 0000000..956b87f --- /dev/null +++ b/abs/extra/sdl_ttf/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 8788 2008-08-16 06:06:57Z eric $ +# Maintainer: Kevin Piche +# Contributor: Tom Newsom +pkgname=sdl_ttf +pkgver=2.0.9 +pkgrel=1 +pkgdesc="A library that allows you to use TrueType fonts in your SDL applications" +arch=(i686 x86_64) +license=('LGPL') +url="http://www.libsdl.org/projects/SDL_ttf/" +depends=('sdl>=1.2.12' 'freetype2') +options=('!libtool') +source=(http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-${pkgver}.tar.gz) +md5sums=('6dd5a85e4924689a35a5fb1cb3336156') + +build() { + cd ${startdir}/src/SDL_ttf-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/sdlmame/ChangeLog b/abs/extra/sdlmame/ChangeLog new file mode 100644 index 0000000..872c595 --- /dev/null +++ b/abs/extra/sdlmame/ChangeLog @@ -0,0 +1,5 @@ +2008-02-13 JJDaNiMoTh + * 0.123 version + +2008-01-22 JJDaNiMoTh + * 0.122u6 version diff --git a/abs/extra/sdlmame/PKGBUILD b/abs/extra/sdlmame/PKGBUILD new file mode 100644 index 0000000..cb9d65b --- /dev/null +++ b/abs/extra/sdlmame/PKGBUILD @@ -0,0 +1,65 @@ +# $Id: PKGBUILD,v 1.19 2009/04/24 15:05:30 sergej Exp $ +# Contributor: robb_force +# Maintainer: JJDaNiMoTh + +pkgname=sdlmame +pkgver=0.131 +pkgrel=1 +pkgdesc="A port of the popular Multiple Arcade Machine Emulator using SDL with OpenGL support." +url="http://rbelmont.mameworld.info/?page_id=163" +license=('custom:MAME License') +arch=('i686' 'x86_64') +depends=('sdl>=1.2.11' 'libxinerama' 'gconf') +makedepends=('unzip' 'nasm' 'mesa') +DLAGENTS=('http::/usr/bin/wget -U "" -c -t 3 --waitretry=3') +options=('!makeflags' 'force') +install=sdlmame.install +source=(http://rbelmont.mameworld.info/${pkgname}${pkgver%.*}${pkgver#*.}.zip \ + sdlmame.sh \ + extras.tar.gz) +md5sums=('d4891999ec2ee11cb0d75a1596e17060' + '3119ccfa1e970eba4467df31208adaf0' + '420b61240bf5ae11615ba7c6100ee00d') + +build() { + cd ${startdir}/src/${pkgname}${pkgver%.*}${pkgver#*.} + + sed -i 's/-Werror//' makefile || return 1 + + # Modify the make options based on the user's architecture + if [ "$CARCH" == "x86_64" ]; then + echo "Compiling for AMD64..." + make AMD64=1 PTR64=1 || return 1 + elif [ "$CARCH" == "i686" ]; then + make I686=1 || return 1 + else + echo "Compiling for i386..." + make PM=1 || return 1 + fi + + # Install the sdlmame script + install -Dm755 ${startdir}/src/${pkgname}.sh ${startdir}/pkg/usr/bin/${pkgname} || return 1 + + # Install the applications and the UI font in /usr/share + install -Dm755 mame* ${startdir}/pkg/usr/share/${pkgname}/${pkgname} && \ + install -m755 chdman ${startdir}/pkg/usr/share/${pkgname}/chdman && \ + install -m755 jedutil ${startdir}/pkg/usr/share/${pkgname}/jedutil && \ +# install -m755 makemeta ${startdir}/pkg/usr/share/${pkgname}/makemeta && \ + install -m755 regrep ${startdir}/pkg/usr/share/${pkgname}/regrep && \ + install -m755 romcmp ${startdir}/pkg/usr/share/${pkgname}/romcmp && \ + install -m755 runtest ${startdir}/pkg/usr/share/${pkgname}/runtest && \ + install -m755 testkeys ${startdir}/pkg/usr/share/${pkgname}/testkeys && \ + install -m755 src2html ${startdir}/pkg/usr/share/${pkgname}/src2html && \ + install -m755 srcclean ${startdir}/pkg/usr/share/${pkgname}/srcclean && \ + install -m755 ldverify ${startdir}/pkg/usr/share/${pkgname}/ldverify && \ + install -m644 ui.bdf ${startdir}/pkg/usr/share/${pkgname}/ui.bdf || return 1 + + # Install the extra bits + install -d ${startdir}/pkg/usr/share/${pkgname}/{artwork,ctrlr,keymaps} && \ + install -m644 ${startdir}/src/artwork/* ${startdir}/pkg/usr/share/${pkgname}/artwork/ && \ + install -m644 ${startdir}/src/ctrlr/* ${startdir}/pkg/usr/share/${pkgname}/ctrlr/ && \ + install -m644 keymaps/* ${startdir}/pkg/usr/share/${pkgname}/keymaps/ || return 1 + + # Include the license + install -Dm644 docs/license.txt $startdir/pkg/usr/share/licenses/${pkgname}/license.txt +} diff --git a/abs/extra/sdlmame/extras.tar.gz b/abs/extra/sdlmame/extras.tar.gz new file mode 100644 index 0000000..ae0bc2a Binary files /dev/null and b/abs/extra/sdlmame/extras.tar.gz differ diff --git a/abs/extra/sdlmame/sdlmame.install b/abs/extra/sdlmame/sdlmame.install new file mode 100644 index 0000000..eedae49 --- /dev/null +++ b/abs/extra/sdlmame/sdlmame.install @@ -0,0 +1,32 @@ +# Message displayed for a fresh install. +post_install() +{ + echo "" + echo "***************************************************************" + echo " SDLMAME and the additional MAME utilities have been installed" + echo " in /usr/share/sdlmame However, SDLMAME can be run by" + echo " typing sdlmame and it's options. Try running SDLMAME with" + echo " these options:" + echo " sdlmame -nowindow -noswitchres" + echo "***************************************************************" + echo "" +} + +# Message for an update. +post_upgrade() +{ + echo "" + echo "***************************************************************" + echo " SDLMAME has been updated. If you are upgrading directly from" + echo " 0.117 or earlier, you must delete all .cfg files and" + echo " re-configure your controllers. You should also run" + echo " 'SDLMAME --newini' to force the script to create a new ini" + echo " file with default settings at ~/.mame/sdlmame.ini" + echo " since there may be new ini options." + echo "***************************************************************" + echo "" +} + +op=$1 +shift +$op $* diff --git a/abs/extra/sdlmame/sdlmame.sh b/abs/extra/sdlmame/sdlmame.sh new file mode 100644 index 0000000..38b4870 --- /dev/null +++ b/abs/extra/sdlmame/sdlmame.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +# Create a variable equal to $HOME that will be used later in the ini creation +home=('$HOME') + +if [ "$1" != "" ] && [ "$1" = "--newini" ]; then + echo "Rebuilding the ini file at $HOME/.mame/sdlmame.ini" + echo "Modify this file for permanent changes to your SDLMAME" + echo "options and paths before running SDLMAME again." + cd $HOME/.mame + if [ -e sdlmame.ini ]; then + echo "Your old ini file has been renamed to sdlmameini.bak" + mv sdlmame.ini sdlmameini.bak + fi + /usr/share/sdlmame/sdlmame \ + -artpath "$home/.mame/artwork;artwork" \ + -ctrlrpath "$home/.mame/ctrlr;ctrlr" \ + -inipath $home/.mame/ini \ + -rompath $home/.mame/roms \ + -samplepath $home/.mame/samples \ + -cfg_directory $home/.mame/cfg \ + -comment_directory $home/.mame/comments \ + -diff_directory $home/.mame/diff \ + -input_directory $home/.mame/inp \ + -memcard_directory $home/.mame/memcard \ + -nvram_directory $home/.mame/nvram \ + -snapshot_directory $home/.mame/snap \ + -state_directory $home/.mame/sta \ + -video opengl \ + -createconfig +elif [ ! -e $HOME/.mame ]; then + echo "Running SDLMAME for the first time..." + echo "Creating an ini file for SDLMAME at $HOME/.mame/sdlmame.ini" + echo "Modify this file for permanent changes to your SDLMAME" + echo "options and paths before running SDLMAME again." + mkdir $HOME/.mame + mkdir $HOME/.mame/{artwork,cfg,comments,ctrlr,diff,ini,inp,memcard,nvram,samples,snap,sta} + cd $HOME/.mame + /usr/share/sdlmame/sdlmame \ + -artpath "$home/.mame/artwork;artwork" \ + -ctrlrpath "$home/.mame/ctrlr;ctrlr" \ + -inipath $home/.mame/ini \ + -rompath $home/.mame/roms \ + -samplepath $home/.mame/samples \ + -cfg_directory $home/.mame/cfg \ + -comment_directory $home/.mame/comments \ + -diff_directory $home/.mame/diff \ + -input_directory $home/.mame/inp \ + -memcard_directory $home/.mame/memcard \ + -nvram_directory $home/.mame/nvram \ + -snapshot_directory $home/.mame/snap \ + -state_directory $home/.mame/sta \ + -video opengl \ + -createconfig +else + cd /usr/share/sdlmame + ./sdlmame "$@" +fi diff --git a/abs/extra/serdisplib/PKGBUILD b/abs/extra/serdisplib/PKGBUILD new file mode 100644 index 0000000..454769b --- /dev/null +++ b/abs/extra/serdisplib/PKGBUILD @@ -0,0 +1,22 @@ +# Contributor: Bernhard Walle +pkgname=serdisplib +pkgver=1.97.8 +pkgrel=1 +pkgdesc="Library for Certain Serial and Parallel LC Displays" +url="http://serdisplib.sourceforge.net/" +license="GPL" +depends=(libusb gd) +backup=(etc/LCDd.conf) +arch=(i686 x86_64) +source=(http://switch.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('2aa91c43d01d2dfc9fbc1116e3063ae1') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --sysconfdir=/etc --enable-libusb + make + make DESTDIR=$startdir/pkg includedir=$startdir/pkg/usr/include \ + libdir=$startdir/pkg/usr/lib bindir=$startdir/pkg/usr/bin \ + install +} +# :mode=shellscript: diff --git a/abs/extra/shepherd/PKGBUILD b/abs/extra/shepherd/PKGBUILD new file mode 100644 index 0000000..f7b3048 --- /dev/null +++ b/abs/extra/shepherd/PKGBUILD @@ -0,0 +1,16 @@ +# $Id: PKGBUILD 23123 2009-01-03 02:43:02Z kevin $ +# Maintainer: Greg Frost +pkgname=shepherd +pkgver=1 +pkgrel=2 +pkgdesc="Australian EPG Grabber." +arch=i686 +depends=(perl-pathtools perl-digest-sha1 perl-algorithm-diff perl-javascript perl-list-compare) +makedepends=() +source=(http://www.whuffy.com/shepherd/shepherd) + +build() { + mkdir -p ${startdir}/pkg/usr/bin/ + install -m 0755 shepherd ${startdir}/pkg/usr/bin/ +} +md5sums=('2b826e4a08810d360e9f6843beb6aa42') diff --git a/abs/extra/slang/ChangeLog b/abs/extra/slang/ChangeLog new file mode 100644 index 0000000..450a2a2 --- /dev/null +++ b/abs/extra/slang/ChangeLog @@ -0,0 +1,7 @@ +2008-12-19 Eric Belanger + + * slang 2.1.4-1 + * Upstream update + * Added pcre depends + * Added backup array + * Added ChangeLog diff --git a/abs/extra/slang/PKGBUILD b/abs/extra/slang/PKGBUILD new file mode 100644 index 0000000..16622d4 --- /dev/null +++ b/abs/extra/slang/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 21963 2008-12-19 07:30:56Z eric $ +# Maintainer: Eric Belanger +# Contributor: Tom Newsom + +pkgname=slang +pkgver=2.1.4 +pkgrel=1 +pkgdesc="S-Lang is a powerful interpreted language" +arch=('i686' 'x86_64') +url="http://www.s-lang.org/" +license=('GPL') +depends=('glibc' 'pcre') +backup=('etc/slsh.rc') +options=('!makeflags') +source=(ftp://ftp.fu-berlin.de/pub/unix/misc/slang/v${pkgver%.*}/${pkgname}-${pkgver}.tar.gz) +md5sums=('3516f593bc04975844f26137c18275d2') +sha1sums=('5c97698f7dcd91834ce64a4dac476a3587851ead') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc || return 1 + make || return 1 + make install-all DESTDIR=${pkgdir} || return 1 +} diff --git a/abs/extra/smartmontools/PKGBUILD b/abs/extra/smartmontools/PKGBUILD new file mode 100644 index 0000000..dbee715 --- /dev/null +++ b/abs/extra/smartmontools/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 6701 2008-07-27 13:29:59Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Jeff Mickey +# Contributor: Jani Talikka + +pkgname=smartmontools +pkgver=5.38 +pkgrel=1 +pkgdesc="Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives." +url="http://smartmontools.sourceforge.net" +license=('GPL') +arch=('i686' 'x86_64') +depends=('gcc-libs') +backup=('etc/smartd.conf') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz \ + smartd) + +build() +{ + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc + make || return 1 + make DESTDIR=${startdir}/pkg install + rm -rf ${startdir}/pkg/etc/rc.d + install -D -m 755 ../smartd ${startdir}/pkg/etc/rc.d/smartd +} +md5sums=('a282846532ecbd6b4a28072373b3a70b' '850f98b6792b7642ff193a49a2f1139d') diff --git a/abs/extra/smartmontools/smartd b/abs/extra/smartmontools/smartd new file mode 100644 index 0000000..5fcc414 --- /dev/null +++ b/abs/extra/smartmontools/smartd @@ -0,0 +1,35 @@ +#!/bin/bash + + . /etc/rc.conf + . /etc/rc.d/functions + + case "$1" in + + start) + stat_busy "Starting smartd" + /usr/sbin/smartd &>/dev/null + if [ $? -ne 0 ]; then + stat_fail + else + add_daemon smartd + stat_done + fi + ;; + + stop) + stat_busy "Stopping smartd" + kill -9 `pidof /usr/sbin/smartd` &>/dev/null + rm_daemon smartd + stat_done + ;; + + restart) + stat_busy "Restarting smartd ..." + $0 stop + $0 start + stat_done + ;; + + *) + echo "usage: $0 {start|stop|restart}" + esac diff --git a/abs/extra/smpeg/PKGBUILD b/abs/extra/smpeg/PKGBUILD new file mode 100644 index 0000000..1b52434 --- /dev/null +++ b/abs/extra/smpeg/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 19615 2008-11-28 13:17:01Z allan $ +# Maintainer: Eric Belanger +# Contributor: Jan de Groot + +pkgname=smpeg +pkgver=0.4.4 +pkgrel=4 +pkgdesc="SDL MPEG Player Library" +arch=('i686' 'x86_64') +url="http://icculus.org/smpeg/" +license=('LGPL') +depends=('sdl') +makedepends=('gtk' 'mesa') +options=('!libtool' '!makeflags') +source=(http://mirrors.dotsrc.org/lokigames/open-source/smpeg/$pkgname-$pkgver.tar.gz smpeg-0.4.4-gcc41.patch) +md5sums=('59c76ac704088ef5539210190c4e1fe3' '8b979a58307d7196655758bd3d2466c4') +sha1sums=('6d7f4449472e6270ab435b2224f3fad951c35259' '7d9a2ad7f6b702dfe3adcb87601d9b55022bbd1e') + +build() { + cd $startdir/src/$pkgname-$pkgver + patch -p1 < ../smpeg-0.4.4-gcc41.patch + ./configure --prefix=/usr + make LDFLAGS+=-lstdc++ || return 1 + make DESTDIR=$startdir/pkg install + + #fix aclocal warnings + sed -i "s#(AM_PATH_SMPEG#([AM_PATH_SMPEG]#" ${pkgdir}/usr/share/aclocal/smpeg.m4 +} diff --git a/abs/extra/smpeg/smpeg-0.4.4-gcc41.patch b/abs/extra/smpeg/smpeg-0.4.4-gcc41.patch new file mode 100644 index 0000000..4a0eeb4 --- /dev/null +++ b/abs/extra/smpeg/smpeg-0.4.4-gcc41.patch @@ -0,0 +1,41 @@ +Index: MPEGaudio.h +=================================================================== +RCS file: /cvs/cvsroot/smpeg/MPEGaudio.h,v +retrieving revision 1.23 +diff -u -p -r1.23 MPEGaudio.h +--- smpeg/MPEGaudio.h 17 Jul 2001 19:52:24 -0000 1.23 ++++ smpeg/MPEGaudio.h 6 Dec 2005 06:10:43 -0000 +@@ -151,12 +151,6 @@ private: + /* The actual MPEG audio class */ + class MPEGaudio : public MPEGerror, public MPEGaudioaction { + +- friend void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len); +- friend int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len); +-#ifdef THREADED_AUDIO +- friend int Decode_MPEGaudio(void *udata); +-#endif +- + public: + MPEGaudio(MPEGstream *stream, bool initSDL = true); + virtual ~MPEGaudio(); +@@ -367,6 +361,20 @@ public: + #define N_TIMESTAMPS 5 + + double timestamp[N_TIMESTAMPS]; ++ ++ /* Functions which access MPEGaudio internals */ ++ friend void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len); ++ friend int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len); ++#ifdef THREADED_AUDIO ++ friend int Decode_MPEGaudio(void *udata); ++#endif + }; + ++/* Need to duplicate the prototypes, this is not a typo :) */ ++void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len); ++int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len); ++#ifdef THREADED_AUDIO ++int Decode_MPEGaudio(void *udata); ++#endif ++ + #endif /* _MPEGAUDIO_H_ */ diff --git a/abs/extra/snes9x/PKGBUILD b/abs/extra/snes9x/PKGBUILD new file mode 100644 index 0000000..928081b --- /dev/null +++ b/abs/extra/snes9x/PKGBUILD @@ -0,0 +1,42 @@ +# Maintainer: Alexander Baldeck +pkgname=snes9x +pkgver=1.51 +pkgrel=1 +pkgdesc="A portable Emulator for the Super Nintento Entertainment System" +arch=(i686 x86_64) +url="http://www.snes9x.com" +license="Freeware" +# remove nasm on non x86 platforms +depends=('zlib' 'libpng' 'sdl' 'nasm' 'mesa') +install=snes9x.install +source=(http://www.geocities.co.jp/SiliconValley-PaloAlto/2560/release/${pkgname}-${pkgver}-src.tar.bz2 \ + snes9x-fixes2.patch) +build() { + mkdir -p ${startdir}/pkg/usr/bin + + cd ${startdir}/src/${pkgname}-${pkgver}-src + #patch -Np1 -i ${startdir}/src/snes9x-fixes2.patch || return 1 + + # build snes9x with opengl + ./configure --prefix=/usr \ + --with-sdd1-decomp \ + --with-opengl \ + --with-netplay + make || return 1 + install -D ${startdir}/src/${pkgname}-${pkgver}-src/osnes9x ${startdir}/pkg/usr/bin/osnes9x + + # build snes9x with glide + #cd $startdir/src/$pkgname-$pkgver-src + #./configure --prefix=/usr --with-sdd1-decomp --with-glide + #make || return 1 + #install -D ${startdir}/src/${pkgname}-${pkgver}-src/osnes9x ${startdir}/pkg/usr/bin/3dfxsnes9x + + # build snes9x without opengl + ./configure --prefix=/usr \ + --with-sdd1-decomp \ + --with-netplay + make clean || return 1 + make || return 1 + install -D ${startdir}/src/${pkgname}-${pkgver}-src/snes9x ${startdir}/pkg/usr/bin/snes9x +} +md5sums=('a1038cc761f400318cdced960972f8a7' '395bea78242afc82b3756225fe4ff954') diff --git a/abs/extra/snes9x/snes9x-fixes2.patch b/abs/extra/snes9x/snes9x-fixes2.patch new file mode 100644 index 0000000..6007bb6 --- /dev/null +++ b/abs/extra/snes9x/snes9x-fixes2.patch @@ -0,0 +1,29 @@ +--- snes9x-1.5-src.orig/unix/opengl.cpp 2006-06-30 13:34:57.000000000 +0000 ++++ snes9x-1.5-src/unix/opengl.cpp 2006-09-01 08:48:39.000000000 +0000 +@@ -214,7 +214,7 @@ + + // Strip dots from the version string + char *ptr; +- while (ptr = strchr (ver, '.')) ++ while ((ptr = strchr (ver, '.'))) + memmove (ptr, ptr + 1, strlen (ptr + 1) + 1); + + // Pad the string with zeros to 4 digits +@@ -381,7 +381,7 @@ + int i = 0; + for (uint32 y = 0; y < pheight; y++) + { +- uint16 *ptr = (uint16 *) (GFX.Screen + (y + startl) * GFX.Pitch2) + startx; ++ uint16 *ptr = (uint16 *) (GFX.Screen + (y + startl) * GFX.Pitch) + startx; + for (uint32 x = 0; x < pwidth; x++) + { + int color = *ptr++; +@@ -399,7 +399,7 @@ + for (uint32 y = 0; y < pheight; y++) + { + memmove (basetexbuffer + sizeof (uint16) * texture_size * y, +- (GFX.Screen + (y + startl) * GFX.Pitch2) + startx, ++ (GFX.Screen + (y + startl) * GFX.Pitch) + startx, + sizeof (uint16) * texture_size); + } + data = basetexbuffer; diff --git a/abs/extra/snes9x/snes9x.install b/abs/extra/snes9x/snes9x.install new file mode 100755 index 0000000..1528f50 --- /dev/null +++ b/abs/extra/snes9x/snes9x.install @@ -0,0 +1,13 @@ +post_install() { + echo ">> If you wish to use Snes9x with OpenGL try osnes9x" + /bin/true +} + +post_upgrade() { + echo ">> If you wish to use Snes9x with OpenGL try osnes9x" + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/extra/speex/PKGBUILD b/abs/extra/speex/PKGBUILD new file mode 100644 index 0000000..aac6749 --- /dev/null +++ b/abs/extra/speex/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 7445 2008-08-02 03:05:20Z eduardo $ +# Contributer: Jason Chu +# Maintainer: Jason Chu + +pkgname=speex +pkgver=1.2rc1 +pkgrel=1 +pkgdesc="A free codec for free speech" +arch=('i686' 'x86_64') +license=('BSD') +depends=('libogg') +source=(http://downloads.us.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz) +md5sums=('c4438b22c08e5811ff10e2b06ee9b9ae') +url="http://www.speex.org/" + +build() { + cd $startdir/src/speex-$pkgver + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var + make || return 1 + make DESTDIR=$startdir/pkg install + #to fix kde detection + cp $startdir/pkg/usr/include/speex/* $startdir/pkg/usr/include/ + #libtoolslay + find $startdir/pkg -name '*.la' -exec rm {} \; +} diff --git a/abs/extra/spidermonkey/PKGBUILD b/abs/extra/spidermonkey/PKGBUILD new file mode 100644 index 0000000..3a44af3 --- /dev/null +++ b/abs/extra/spidermonkey/PKGBUILD @@ -0,0 +1,27 @@ +pkgname=spidermonkey +pkgver=1.7.0 +pkgrel=2 +pkgdesc="Mozilla's C implementation of JavaScript." +arch=("i686" "x86_64") +url="http://www.mozilla.org/js/spidermonkey/" +license=('MPL' 'GPL' 'LGPL') +depends=('nspr') +options=('!makeflags' 'force') +source=("http://ftp.mozilla.org/pub/mozilla.org/js/js-$pkgver.tar.gz" \ + "spidermonkey-1.7-threadsafe.patch" "header.patch") +md5sums=('5571134c3863686b623ebe4e6b1f6fe6' 'b2ef9be017b6aa1857354b5223975a4f') + +build() +{ + cd $startdir/src/js/src + # fix for the lib location + [ "$CARCH" = "x86_64" ] && (sed -i -e "s:lib64:lib:g" config.mk || return 1) + # patch Makefile for threadsafe support with native nspr + patch -p2 -i $startdir/src/spidermonkey-1.7-threadsafe.patch || return 1 + patch -p2 -i $startdir/src/header.patch || return 1 + # build - threadsafe + make -f Makefile.ref BUILD_OPT=1 JS_THREADSAFE=1 DIST=$startdir/pkg/usr all export || return 1 + # install + mkdir -p $startdir/pkg/usr/include/js + mv $startdir/pkg/usr/include/*.h $startdir/pkg/usr/include/js/ +} diff --git a/abs/extra/spidermonkey/header.patch b/abs/extra/spidermonkey/header.patch new file mode 100644 index 0000000..b69caae --- /dev/null +++ b/abs/extra/spidermonkey/header.patch @@ -0,0 +1,12 @@ +diff -aur js.orig/src/Makefile.ref js/src/Makefile.ref +--- js.orig/src/Makefile.ref 2008-07-18 21:05:37.154351682 +0800 ++++ js/src/Makefile.ref 2008-07-18 21:06:39.291061725 +0800 +@@ -188,6 +188,8 @@ + jsstr.h \ + jsxdrapi.h \ + jsxml.h \ ++ jsutil.h \ ++ jsprf.h \ + $(NULL) + + API_HFILES = \ diff --git a/abs/extra/spidermonkey/spidermonkey-1.7-threadsafe.patch b/abs/extra/spidermonkey/spidermonkey-1.7-threadsafe.patch new file mode 100644 index 0000000..da6c78d --- /dev/null +++ b/abs/extra/spidermonkey/spidermonkey-1.7-threadsafe.patch @@ -0,0 +1,16 @@ +--- js/src/Makefile.ref.orig 2008-05-28 19:51:32.000000000 -0400 ++++ js/src/Makefile.ref 2008-05-28 19:52:17.000000000 -0400 +@@ -63,11 +63,11 @@ + + ifdef JS_THREADSAFE + DEFINES += -DJS_THREADSAFE +-INCLUDES += -I$(DIST)/include/nspr ++INCLUDES += -I/usr/include/nspr + ifdef USE_MSVC + OTHER_LIBS += $(DIST)/lib/libnspr$(NSPR_LIBSUFFIX).lib + else +-OTHER_LIBS += -L$(DIST)/lib -lnspr$(NSPR_LIBSUFFIX) ++OTHER_LIBS += -L/usr/$(LIBDIR)/nspr -lnspr${NSPR_LIBSUFFIX} + endif + endif + diff --git a/abs/extra/startup-notification/PKGBUILD b/abs/extra/startup-notification/PKGBUILD new file mode 100644 index 0000000..0d65123 --- /dev/null +++ b/abs/extra/startup-notification/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 21429 2008-12-13 03:30:02Z eric $ +# Maintainer: dorphell +pkgname=startup-notification +pkgver=0.9 +pkgrel=1 +pkgdesc="Monitor and display application startup" +arch=(i686 x86_64) +depends=('libx11' 'libsm') +options=('!libtool') +url="http://www.freedesktop.org" +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('624b42f1fac5a12c543a079e2cd3b366') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/strace/PKGBUILD b/abs/extra/strace/PKGBUILD new file mode 100644 index 0000000..c965f24 --- /dev/null +++ b/abs/extra/strace/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 13699 2008-09-27 22:25:37Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Tom Newsom +pkgname=strace +pkgver=4.5.18 +pkgrel=1 +pkgdesc="A useful diagnositic, instructional, and debugging tool" +arch=('i686' 'x86_64') +license=('custom') +url="http://sourceforge.net/projects/strace/" +depends=('glibc') +source=(http://downloads.sourceforge.net/sourceforge/strace/strace-$pkgver.tar.bz2) +md5sums=('e9449fcee97e6a8ed73934c883c870e0') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + install -Dm644 COPYRIGHT ${startdir}/pkg/usr/share/licenses/strace/COPYRIGHT +} diff --git a/abs/extra/strace/no_linux_socket_h.patch b/abs/extra/strace/no_linux_socket_h.patch new file mode 100644 index 0000000..f1c3598 --- /dev/null +++ b/abs/extra/strace/no_linux_socket_h.patch @@ -0,0 +1,22 @@ +--- strace-4.5.12.orig/configure.ac ++++ strace-4.5.12/configure.ac +@@ -193,8 +193,7 @@ + + AC_CHECK_FUNCS(sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl prctl sendmsg inet_ntop if_indextoname) + AC_CHECK_HEADERS([sys/reg.h sys/filio.h sys/acl.h sys/asynch.h sys/door.h stropts.h sys/conf.h sys/stream.h sys/tihdr.h sys/tiuser.h sys/sysconfig.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h linux/ptrace.h asm/reg.h sys/uio.h sys/aio.h poll.h sys/poll.h sys/vfs.h asm/sysmips.h linux/utsname.h sys/nscsys.h mqueue.h sys/epoll.h libaio.h], [], []) +-AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h], +- [], [], [#include ]) ++AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h]) + AC_CHECK_HEADERS([asm/sigcontext.h], [], [], [#include ]) + AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include ]) + +--- strace-4.5.12.orig/configure ++++ strace-4.5.12/configure +@@ -6945,7 +6945,6 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include + + #include <$ac_header> + _ACEOF diff --git a/abs/extra/subversion/ChangeLog b/abs/extra/subversion/ChangeLog new file mode 100644 index 0000000..369cb3b --- /dev/null +++ b/abs/extra/subversion/ChangeLog @@ -0,0 +1,18 @@ + +2008-10-10 Douglas Soares de Andrade + + * Updated for i686: 1.5.3 + +2008-09-04 Douglas Soares de Andrade + + * 1.5.2: Finally updated for i686 as it does not break the + devtools. + +2008-08-13 Douglas Soares de Andrade + + * Updated for i686: 1.5.1 + +2008-07-23 Douglas Soares de Andrade + + * Updated for i686: 1.5.0 + diff --git a/abs/extra/subversion/PKGBUILD b/abs/extra/subversion/PKGBUILD new file mode 100644 index 0000000..4ad7460 --- /dev/null +++ b/abs/extra/subversion/PKGBUILD @@ -0,0 +1,90 @@ +# $Id: PKGBUILD 15639 2008-10-16 10:28:54Z douglas $ +# Contributer: Jason Chu +# Maintainer: Jason Chu + +pkgname=subversion +pkgver=1.5.3 +pkgrel=5 +pkgdesc="Replacement for CVS, another versioning system (svn)" +arch=(i686 x86_64) +license=('apache' 'bsd') +depends=('neon>=0.28.2-2' 'apr-util>=1.3.2-2') +makedepends=('heimdal>=1.2.1' 'db>=4.7' 'python>=2.5.2-4' + 'perl>=5.10.0-3' 'autoconf') +source=(http://svn.collab.net/tarballs/${pkgname}-${pkgver}.tar.gz + svnserve svn svnserve.conf) + +md5sums=('37533b0435caaa3e4e1be359389fcbb9' + 'c5a2e490b3e58c6bd2ca3a2e72b71845' + 'a0db6dd43af33952739b6ec089852630' + 'c459e299192552f61578f3438abf0664') + +backup=('etc/xinetd.d/svn' 'etc/conf.d/svnserve') +url="http://subversion.tigris.org/" +provides=('svn') +options=('!makeflags' 'libtool') + +md5sums=('6a57efcc9e487e9bffc554931c98d3a0' + 'c5a2e490b3e58c6bd2ca3a2e72b71845' + 'a0db6dd43af33952739b6ec089852630' + 'c459e299192552f61578f3438abf0664') + +build() { + cd $startdir/src/${pkgname}-${pkgver} + + + #patch -Np1 -i $startdir/src/subversion-neon.patch + + #sed -e 's/\(NEON_ALLOWED_LIST=.* 0.26.4\)"/\1 0.27.2 0.28.0 0.28.1 0.28.2"/' -i configure.in + +# libtoolize --force --copy +# aclocal -I build/ac-macros +# autoconf + + autoreconf + ./configure --prefix=/usr --with-apr=/usr --with-apr-util=/usr \ + --with-zlib=/usr --with-neon=/usr --disable-ldap + + (make external-all && make LT_LDFLAGS="-L$Fdestdir/usr/lib" local-all ) || return 1 + + export LD_LIBRARY_PATH=$startdir/pkg/usr/lib:$LD_LIBRARY_PATH + make DESTDIR=$startdir/pkg install || return 1 + +# make DESTDIR=$startdir/pkg swig-py || return 1 +# make install-swig-py DESTDIR=$startdir/pkg || return 1 + + # mkdir -p $startdir/pkg/usr/lib/python2.5 + # mv $startdir/pkg/usr/lib/svn-python/ $startdir/pkg/usr/lib/python2.5/site-packages + + + mkdir -p $startdir/pkg/usr/share/subversion + install -d -m 755 tools/hook-scripts $startdir/pkg/usr/share/subversion/ + rm -f $startdir/pkg/usr/share/subversion/hook-scripts/*.in + +# make DESTDIR=$startdir/pkg swig-pl || return 1 +# make install-swig-pl DESTDIR=$startdir/pkg INSTALLDIRS=vendor || return 1 + rm -f $startdir/pkg/usr/lib/perl5/vendor_perl/auto/SVN/_Core/.packlist + rm -rf $startdir/pkg/usr/lib/perl5/core_perl + +# make DESTDIR=$startdir/pkg swig-rb || return 1 +# make install-swig-rb DESTDIR=$startdir/pkg || return 1 + +# make DESTDIR=$startdir/pkg javahl || return 1 +# make DESTDIR=$startdir/pkg install-javahl || return 1 + + mkdir -p $startdir/pkg/etc/rc.d + mkdir -p $startdir/pkg/etc/xinetd.d + mkdir -p $startdir/pkg/etc/conf.d + + install -m 755 $startdir/src/svnserve $startdir/pkg/etc/rc.d + install -m 644 $startdir/src/svn $startdir/pkg/etc/xinetd.d + install -m 644 $startdir/src/svnserve.conf $startdir/pkg/etc/conf.d/svnserve + install -m 755 $startdir/src/subversion-$pkgver/contrib/client-side/svnmerge/svnmerge.py $startdir/pkg/usr/bin/svnmerge + install -D -m 644 $startdir/src/subversion-$pkgver/COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE + + #libtoolslay not all because of kdesdk +# find ${startdir}/pkg/usr/lib/httpd/modules -name '*.la' -exec rm {} \; +# find ${startdir}/pkg/usr/lib/ruby -name '*.la' -exec rm {} \; +# find ${startdir}/pkg/usr/lib/python2.5 -name '*.la' -exec rm {} \; +} + diff --git a/abs/extra/subversion/subversion-neon.patch b/abs/extra/subversion/subversion-neon.patch new file mode 100644 index 0000000..7dc23c5 --- /dev/null +++ b/abs/extra/subversion/subversion-neon.patch @@ -0,0 +1,62 @@ +Index: subversion-1.4.6/build/ac-macros/neon.m4 +=================================================================== +--- subversion-1.4.6.orig/build/ac-macros/neon.m4 ++++ subversion-1.4.6/build/ac-macros/neon.m4 +@@ -50,14 +50,18 @@ AC_DEFUN(SVN_LIB_NEON, + NEON_VERSION=`cat $abs_srcdir/neon/.version` + AC_MSG_RESULT([$NEON_VERSION]) + +- if test -n "`echo \"$NEON_VERSION\" | grep '^0\.2[[56]]\.'`" ; then ++ if test -n ["`echo "$NEON_VERSION" | grep '^0\.2[5-8]\.'`"] ; then + AC_DEFINE_UNQUOTED([SVN_NEON_0_25], [1], + [Define to 1 if you have Neon 0.25 or later.]) + fi +- if test -n "`echo \"$NEON_VERSION\" | grep '^0\.26\.'`" ; then ++ if test -n ["`echo "$NEON_VERSION" | grep '^0\.2[6-8]\.'`"] ; then + AC_DEFINE_UNQUOTED([SVN_NEON_0_26], [1], + [Define to 1 if you have Neon 0.26 or later.]) + fi ++ if test -n ["`echo "$NEON_VERSION" | grep '^0\.2[7-8]\.'`"] ; then ++ AC_DEFINE_UNQUOTED([SVN_NEON_0_27], [1], ++ [Define to 1 if you have Neon 0.27 or later.]) ++ fi + + for svn_allowed_neon in $NEON_ALLOWED_LIST; do + if test "$NEON_VERSION" = "$svn_allowed_neon" || +@@ -127,14 +131,18 @@ AC_DEFUN(SVN_NEON_CONFIG, + NEON_VERSION=`$neon_config --version | sed -e 's/^neon //'` + AC_MSG_RESULT([$NEON_VERSION]) + +- if test -n "`echo \"$NEON_VERSION\" | grep '^0\.2[[56]]\.'`" ; then ++ if test -n ["`echo "$NEON_VERSION" | grep '^0\.2[5-8]\.'`"] ; then + AC_DEFINE_UNQUOTED([SVN_NEON_0_25], [1], + [Define to 1 if you have Neon 0.25 or later.]) + fi +- if test -n "`echo \"$NEON_VERSION\" | grep '^0\.26\.'`" ; then ++ if test -n ["`echo "$NEON_VERSION" | grep '^0\.2[6-8]\.'`"] ; then + AC_DEFINE_UNQUOTED([SVN_NEON_0_26], [1], + [Define to 1 if you have Neon 0.26 or later.]) + fi ++ if test -n ["`echo "$NEON_VERSION" | grep '^0\.2[7-8]\.'`"] ; then ++ AC_DEFINE_UNQUOTED([SVN_NEON_0_27], [1], ++ [Define to 1 if you have Neon 0.27 or later.]) ++ fi + + for svn_allowed_neon in $NEON_ALLOWED_LIST; do + if test "$NEON_VERSION" = "$svn_allowed_neon" || +Index: subversion-1.4.6/subversion/libsvn_ra_dav/session.c +=================================================================== +--- subversion-1.4.6.orig/subversion/libsvn_ra_dav/session.c ++++ subversion-1.4.6/subversion/libsvn_ra_dav/session.c +@@ -575,7 +575,11 @@ typedef struct neonprogress_baton_t + } neonprogress_baton_t; + + static void ++#ifdef SVN_NEON_0_27 ++ra_dav_neonprogress(void *baton, ne_off_t progress, ne_off_t total) ++#else + ra_dav_neonprogress(void *baton, off_t progress, off_t total) ++#endif /* SVN_NEON_0_27 */ + { + const neonprogress_baton_t *neonprogress_baton = baton; + if (neonprogress_baton->progress_func) diff --git a/abs/extra/subversion/svn b/abs/extra/subversion/svn new file mode 100644 index 0000000..8988aaf --- /dev/null +++ b/abs/extra/subversion/svn @@ -0,0 +1,11 @@ +service svn +{ + flags = REUSE + socket_type = stream + wait = no + user = root + server = /usr/bin/svnserve + server_args = -i + log_on_failure += USERID + disable = yes +} diff --git a/abs/extra/subversion/svnserve b/abs/extra/subversion/svnserve new file mode 100755 index 0000000..2f433b6 --- /dev/null +++ b/abs/extra/subversion/svnserve @@ -0,0 +1,42 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/svnserve + +PID=`pidof -o %PPID /usr/bin/svnserve` +case "$1" in + start) + stat_busy "Starting svnserve" + if [ -z "$PID" ]; then + if [ -n "$SVNSERVE_USER" ]; then + su $SVNSERVE_USER -c "/usr/bin/svnserve -d $SVNSERVE_ARGS" & + else + /usr/bin/svnserve -d $SVNSERVE_ARGS & + fi + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon svnserve + stat_done + fi + ;; + stop) + stat_busy "Stopping svnserve" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon svnserve + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/extra/subversion/svnserve.conf b/abs/extra/subversion/svnserve.conf new file mode 100644 index 0000000..37fb7ea --- /dev/null +++ b/abs/extra/subversion/svnserve.conf @@ -0,0 +1,7 @@ +# +# Parameters to be passed to svnserve +# +#SVNSERVE_ARGS="-r /path/to/some/repos" +SVNSERVE_ARGS="" + +#SVNSERVE_USER="svn" diff --git a/abs/extra/swh-plugins/PKGBUILD b/abs/extra/swh-plugins/PKGBUILD new file mode 100644 index 0000000..69157a1 --- /dev/null +++ b/abs/extra/swh-plugins/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 8773 2008-08-16 05:51:00Z eric $ +#Maintainer: Damir Perisa +#Contributor: Robert Emil Berge + +pkgname=swh-plugins +pkgver=0.4.15 +pkgrel=1 +pkgdesc="LADSPA Plugin-Collection from plugin.org.uk" +arch=(i686 x86_64) +url="http://plugin.org.uk/" +depends=('fftw' 'ladspa') +groups=('ladspa-plugins') +source=(http://plugin.org.uk/releases/$pkgver/$pkgname-$pkgver.tar.gz) +md5sums=('2fbdccef2462ea553901acd429fa3573') + +build() { + cd $startdir/src/$pkgname-$pkgver + +#Arch64 fix, -fPIC seems to be the only option +if [ "$CARCH" = "x86_64" ]; then + export CFLAGS="$CFLAGS -fPIC" + export CXXFLAGS="$CFLAGS" +fi + + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/swig/PKGBUILD b/abs/extra/swig/PKGBUILD new file mode 100644 index 0000000..e40f539 --- /dev/null +++ b/abs/extra/swig/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 14415 2008-10-06 08:59:13Z douglas $ +# Contributor: Tom Newsom +# Maintainer: Jason Chu + +pkgname=swig +pkgver=1.3.36 +pkgrel=1 +pkgdesc="SWIG is a compiler that makes it easy to integrate C and C++ code with scripting languages" +arch=('i686' 'x86_64') +license=('custom') +source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz") +url="http://www.swig.org/" +depends=('gcc' 'guile') + +md5sums=('8f30aa4130b62404099bbcba1bf429b1') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + install -D -m644 LICENSE ${startdir}/pkg/usr/share/licenses/swig/license.txt +} diff --git a/abs/extra/sysstat/PKGBUILD b/abs/extra/sysstat/PKGBUILD new file mode 100644 index 0000000..12f5afe --- /dev/null +++ b/abs/extra/sysstat/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD,v 1.24 2009/05/25 09:04:21 sergej Exp $ +# Maintainer: Sergej Pupykin +# Contributor: Martin Devera + +pkgname=sysstat +pkgver=9.0.3 +pkgrel=1 +pkgdesc="A collection of performance monitoring tools" +arch=('i686' 'x86_64') +url="http://pagesperso-orange.fr/sebastien.godard/" +license=('GPL') +depends=(glibc) +options=(zipman) +source=(http://pagesperso-orange.fr/sebastien.godard/$pkgname-$pkgver.tar.gz + sysstat) +md5sums=('0b464951596db934418259737cf50a31' + 'ad46159609a2c13b4a46b506ff847bf6') + +build() { + cd $srcdir/$pkgname-$pkgver + + ./configure --prefix=/usr \ + --mandir=/usr/share/man \ + --enable-install-isag \ + --disable-man-group + make || return 1 + make DESTDIR=$pkgdir install || return 1 + + install -D -m 644 sysstat.sysconfig $pkgdir/etc/sysstat/sysstat && \ + install -D -m 744 sysstat.cron.hourly $pkgdir/etc/cron.hourly/sysstat && \ + install -D -m 744 sysstat.cron.daily $pkgdir/etc/cron.daily/sysstat && \ + install -D -m 755 $srcdir/sysstat $pkgdir/etc/rc.d/sysstat || return 1 + + chown -R root:root $pkgdir +} diff --git a/abs/extra/sysstat/sysstat b/abs/extra/sysstat/sysstat new file mode 100644 index 0000000..d8e312a --- /dev/null +++ b/abs/extra/sysstat/sysstat @@ -0,0 +1,21 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Writing SysStat restart record" + /usr/lib/sa/sadc -L -F - + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + stop) + ;; + *) + echo "usage: $0 {start|stop}" +esac +exit 0 diff --git a/abs/extra/tablet-encode/PKGBUILD b/abs/extra/tablet-encode/PKGBUILD new file mode 100644 index 0000000..0163f45 --- /dev/null +++ b/abs/extra/tablet-encode/PKGBUILD @@ -0,0 +1,20 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=tablet-encode +pkgver=2.20 +pkgrel=1 +pkgdesc="Transcodes videos for playback on a Nokia Internet Tablet" +arch=('i686' 'x86_64') +license=('ARTISTIC') +depends=(mplayer) +url="http://mediautils.garage.maemo.org/tablet-encode.html" +source=(https://garage.maemo.org/frs/download.php/4547/tablet-encode-2.20.tar.gz) + +build() { + cd ${srcdir}/$pkgname-$pkgver + mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/usr/share/doc/tablet-encode + install -D -m755 tablet-encode $startdir/pkg/usr/bin + cp README.txt $startdir/pkg/usr/share/doc/tablet-encode +} diff --git a/abs/extra/tango-icon-theme/PKGBUILD b/abs/extra/tango-icon-theme/PKGBUILD new file mode 100644 index 0000000..21ec4e8 --- /dev/null +++ b/abs/extra/tango-icon-theme/PKGBUILD @@ -0,0 +1,23 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: James Rayner +# Contributor: William Rea +pkgname=tango-icon-theme +pkgver=0.8.1 +pkgrel=2 +pkgdesc="The Tango Desktop Project exists to create a consistent user experience" +arch=('i686' 'x86_64') +url="http://tango.freedesktop.org" +license="CCPL-Attribution-ShareAlike-2.5" +depends=('librsvg') +makedepends=('imagemagick' 'icon-naming-utils') +source=(http://tango.freedesktop.org/releases/$pkgname-$pkgver.tar.gz) +md5sums=('32d5258f448b5982af9cfa4364f31d41') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr --enable-png-creation + make || return 1 + make DESTDIR=$startdir/pkg install + + install -D COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/extra/tatir/PKGBUILD b/abs/extra/tatir/PKGBUILD new file mode 100644 index 0000000..e9d8ab2 --- /dev/null +++ b/abs/extra/tatir/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=tatir +pkgver=1 +pkgrel=4 +pkgdesc="TatIR, the Linux media remote control." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://tatir.dropthetranny.com/" +depends=('pyusb' 'xautomation') +source=('tatir.tar.bz2') +install=tatir.install +build() { + mkdir -p $pkgdir/usr/bin + mkdir -p $pkgdir/etc/tatir +# mkdir -p $pkgdir/etc/sv/tatir/supervise + cp *.py $pkgdir/usr/bin + cp remote_xte.conf $pkgdir/etc/tatir/ +# cp run $pkgdir/etc/sv/tatir/ +} diff --git a/abs/extra/tatir/tatir.install b/abs/extra/tatir/tatir.install new file mode 100644 index 0000000..aef470a --- /dev/null +++ b/abs/extra/tatir/tatir.install @@ -0,0 +1,19 @@ +# arg 1: the new package version +post_install() { +# add_service.sh tatir + /bin/true +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + remove_service.sh tatir +} + +op=$1 +shift +$op $* diff --git a/abs/extra/tatir/tatir.tar.bz2 b/abs/extra/tatir/tatir.tar.bz2 new file mode 100644 index 0000000..1a16a46 Binary files /dev/null and b/abs/extra/tatir/tatir.tar.bz2 differ diff --git a/abs/extra/terminal/PKGBUILD b/abs/extra/terminal/PKGBUILD new file mode 100644 index 0000000..857696e --- /dev/null +++ b/abs/extra/terminal/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 28221 2009-02-28 11:48:48Z andyrtr $ +# Maintainer: Tobias Kieslich +# Contributor: Aurelien Foret + +pkgname=terminal +pkgver=0.2.10 +pkgrel=1 +pkgdesc="A modern terminal emulator primarly for the Xfce desktop environment" +arch=(i686 x86_64) +license=('GPL2') +url="http://www.xfce.org/projects/terminal/" +groups=('xfce4') +depends=('exo>=0.3.100' "vte>=0.17.4-2" 'dbus-glib>=0.78' + 'startup-notification>=0.9' 'hicolor-icon-theme') +makedepends=('pkgconfig') +options=('!libtool') +install=terminal.install +source=(http://www.xfce.org/archive/xfce-4.6.0/src/Terminal-${pkgver}.tar.bz2 + terminal-dont-die-on-dbus-kill.patch) +md5sums=('f6cefa97cf5cad558187267783ffce8a' + '7cff5c513739737a0ed2109354538241') + +build() { + cd ${srcdir}/Terminal-${pkgver} + patch -Np0 -i ${srcdir}/terminal-dont-die-on-dbus-kill.patch || return 1 + ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/xfce4 \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/extra/terminal/terminal-dont-die-on-dbus-kill.patch b/abs/extra/terminal/terminal-dont-die-on-dbus-kill.patch new file mode 100644 index 0000000..e20e45c --- /dev/null +++ b/abs/extra/terminal/terminal-dont-die-on-dbus-kill.patch @@ -0,0 +1,10 @@ +--- terminal/terminal-dbus.c.orig 2007-01-23 22:25:12.000000000 +0000 ++++ terminal/terminal-dbus.c 2007-01-23 22:25:50.000000000 +0000 +@@ -191,6 +191,7 @@ terminal_dbus_register_service (Terminal + + /* register DBus connection with GLib main loop */ + dbus_connection_setup_with_g_main (connection, NULL); ++ dbus_connection_set_exit_on_disconnect (connection, FALSE); + + if (dbus_bus_request_name (connection, TERMINAL_DBUS_SERVICE, 0, &derror) < 0) + { diff --git a/abs/extra/terminal/terminal.install b/abs/extra/terminal/terminal.install new file mode 100644 index 0000000..21b79d2 --- /dev/null +++ b/abs/extra/terminal/terminal.install @@ -0,0 +1,11 @@ +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} diff --git a/abs/extra/thunar/PKGBUILD b/abs/extra/thunar/PKGBUILD new file mode 100644 index 0000000..8086857 --- /dev/null +++ b/abs/extra/thunar/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 28211 2009-02-28 11:12:20Z andyrtr $ +# Maintainer: tobias +# Contributor: Andrew Simmons + +pkgname=thunar +pkgver=1.0.0 +pkgrel=1 +pkgdesc="new modern file manager for Xfce" +arch=(i686 x86_64) +license=('GPL2' 'LGPL2') +url="http://thunar.xfce.org" +groups=('xfce4') +depends=('libexif>=0.6.17' 'hicolor-icon-theme' 'tango-icon-theme' ) +makedepends=('intltool' 'pkgconfig') +optdepends=('gamin: a fam replacement to make thunar monitor changes to files on the fly') +options=('!libtool') +install=${pkgname}.install +source=(http://www.xfce.org/archive/xfce-4.6.0/src/Thunar-${pkgver}.tar.bz2) +md5sums=('468c240a4f65a217ec2b6132e85cd84e') + +build() { + cd ${srcdir}/Thunar-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \ + --localstatedir=/var --disable-static \ + --disable-gnome-thumbnailers --enable-exif --enable-pcre --disable-fam + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + sed -i 's:x-directory/gnome-default-handler;::' \ + ${pkgdir}/usr/share/applications/Thunar-folder-handler.desktop +} diff --git a/abs/extra/thunar/__changelog b/abs/extra/thunar/__changelog new file mode 100644 index 0000000..630ddfa --- /dev/null +++ b/abs/extra/thunar/__changelog @@ -0,0 +1 @@ +remove dep for desktop-file-utils diff --git a/abs/extra/thunar/thunar.install b/abs/extra/thunar/thunar.install new file mode 100644 index 0000000..28fdb48 --- /dev/null +++ b/abs/extra/thunar/thunar.install @@ -0,0 +1,14 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + diff --git a/abs/extra/tightvnc/PKGBUILD b/abs/extra/tightvnc/PKGBUILD new file mode 100644 index 0000000..a9d5efe --- /dev/null +++ b/abs/extra/tightvnc/PKGBUILD @@ -0,0 +1,35 @@ + +pkgname=tightvnc +pkgver=1.3.9 +pkgrel=302 +pkgdesc="VNC Unix server && viewer" +arch=(i686 x86_64) +license=('GPL') +url="http://www.tightvnc.com" +depends=('libjpeg' 'zlib' 'libxaw' 'libxp') +makedepends=('imake') +conflicts=('vnc') +source=(http://easynews.dl.sf.net/sourceforge/vnc-tight/$pkgname-${pkgver}_unixsrc.tar.bz2 tightvnc-fontpath-xcolors.patch) + + +build() { + export MAKEFLAGS="-j1" + cd $startdir/src/vnc_unixsrc || return 1 + patch -Np1 -i ../tightvnc-fontpath-xcolors.patch || return 1 + + xmkmf || return 1 + make World || return 1 + cd Xvnc || return 1 + ./configure || return 1 + sed 's|PROTO_DEFINES =|PROTO_DEFINES = -D_XOPEN_SOURCE=500L|' \ + -i programs/Xserver/os/Makefile lib/font/fc/Makefile || return 1 + make || return 1 + cd .. || return 1 + mkdir -p $startdir/pkg/usr/bin $startdir/pkg/usr/man/man1 || return 1 + ./vncinstall $startdir/pkg/usr/bin $startdir/pkg/usr/man || return 1 + + # install java classes + mkdir -p $startdir/pkg/usr/share/vnc/classes || return 1 + install -D -m644 $startdir/src/vnc_unixsrc/classes/* \ + $startdir/pkg/usr/share/vnc/classes || return 1 +} diff --git a/abs/extra/tightvnc/tightvnc-fontpath-xcolors.patch b/abs/extra/tightvnc/tightvnc-fontpath-xcolors.patch new file mode 100644 index 0000000..9e44835 --- /dev/null +++ b/abs/extra/tightvnc/tightvnc-fontpath-xcolors.patch @@ -0,0 +1,21 @@ +diff -urN vnc_unixsrc/vncserver vnc_unixsrc.fixed/vncserver +--- vnc_unixsrc/vncserver 2007-04-26 06:57:06.000000000 -0400 ++++ vnc_unixsrc.fixed/vncserver 2007-06-17 19:08:02.000000000 -0400 +@@ -38,14 +38,14 @@ + $desktopName = "X"; + $vncClasses = "/usr/local/vnc/classes"; + $vncUserDir = "$ENV{HOME}/.vnc"; +-$fontPath = "unix/:7100"; ++#$fontPath = "unix/:7100"; + $authType = "-rfbauth $vncUserDir/passwd"; + + # Here is another example of setting the font path: +-# $fontPath = "/usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/"; ++$fontPath = "/usr/share/fonts/misc/,/usr/share/fonts/75dpi/,/usr/share/fonts/100dpi/,/usr/share/fonts/Type1/"; + + # X colors database path is optional, uncomment and edit to use: +-# $colorPath = "/usr/lib/X11/rgb"; ++$colorPath = "/usr/share/X11/rgb"; + + # You might wish to make your vnc directory under /tmp, to make sure + # passwords are always kept on the local filesystem. To do that, just diff --git a/abs/extra/tree/PKGBUILD b/abs/extra/tree/PKGBUILD new file mode 100644 index 0000000..8a26dbf --- /dev/null +++ b/abs/extra/tree/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 13718 2008-09-27 22:49:14Z giovanni $ +# Maintainer: Giovanni Scafora +# Contributor: Tom Newsom +# + +pkgname=tree +pkgver=1.5.2.1 +pkgrel=2 +pkgdesc="A directory listing program displaying a depth indented list of files" +arch=('i686' 'x86_64') +license=('GPL') +depends=('glibc') +source=(ftp://mama.indstate.edu/linux/tree/$pkgname-$pkgver.tgz) +md5sums=('73d5fa220dfef1ee9c1876c3966f1c18') +url="http://mama.indstate.edu/users/ice/tree/" + +build() { + cd $startdir/src/$pkgname-$pkgver + make || return 1 + make prefix=$startdir/pkg/usr MANDIR=$startdir/pkg/usr/share/man/man1 install +} +# vim: ts=2 sw=2 et ft=sh diff --git a/abs/extra/ttf-ms-fonts/PKGBUILD b/abs/extra/ttf-ms-fonts/PKGBUILD new file mode 100644 index 0000000..00fd09d --- /dev/null +++ b/abs/extra/ttf-ms-fonts/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: dale +pkgname=ttf-ms-fonts +pkgver=2.0 +pkgrel=1 +pkgdesc="Un-extracted TTF Fonts from Microsoft" +arch=(i686 x86_64) +url="http://corefonts.sourceforge.net/" +sfpath="http://heanet.dl.sourceforge.net/sourceforge/corefonts/" +depends=(cabextract xorg-fonts-encodings xorg-font-utils fontconfig) +install=ttf-ms-fonts.install +source=($sfpath/andale32.exe $sfpath/arial32.exe $sfpath/arialb32.exe \ + $sfpath/comic32.exe $sfpath/courie32.exe $sfpath/georgi32.exe \ + $sfpath/impact32.exe $sfpath/times32.exe $sfpath/trebuc32.exe \ + $sfpath/verdan32.exe $sfpath/webdin32.exe $sfpath/wd97vwr32.exe) +md5sums=('cbdc2fdd7d2ed0832795e86a8b9ee19a' '9637df0e91703179f0723ec095a36cb5'\ + 'c9089ae0c3b3d0d8c4b0a95979bb9ff0' '2b30de40bb5e803a0452c7715fc835d1'\ + '4e412c772294403ab62fb2d247d85c60' '4d90016026e2da447593b41a8d8fa8bd'\ + '7907c7dd6684e9bade91cff82683d9d7' 'ed39c8ef91b9fb80f76f702568291bd5'\ + '0d7ea16cac6261f8513a061fbfcdb2b5' '12d2a75f8156e10607be1eaa8e8ef120'\ + '230a1d13a365b22815f502eb24d9149b' 'efa72d3ed0120a07326ce02f051e9b42') + +build() { + mkdir -p $startdir/pkg/tmp/${pkgname} + chmod 1777 $startdir/pkg/tmp + install -m644 $startdir/src/*.exe $startdir/pkg/tmp/$pkgname +} diff --git a/abs/extra/ttf-ms-fonts/ttf-ms-fonts.install b/abs/extra/ttf-ms-fonts/ttf-ms-fonts.install new file mode 100644 index 0000000..043cd88 --- /dev/null +++ b/abs/extra/ttf-ms-fonts/ttf-ms-fonts.install @@ -0,0 +1,55 @@ +# arg 1: the new package version +post_install() { + echo -n "extracting fonts... " + for font in tmp/ttf-ms-fonts/*.exe + do + cabextract --lowercase --directory=tmp/ttf-ms-fonts/ $font -F '*.ttf' >/dev/null 2>&1 + done + cabextract --lowercase --directory=tmp/ttf-ms-fonts/ tmp/ttf-ms-fonts/wd97vwr32.exe -F '*.cab' >/dev/null 2>&1 + cabextract --lowercase --directory=tmp/ttf-ms-fonts/ tmp/ttf-ms-fonts/viewer1.cab -F '*.ttf' >/dev/null 2>&1 + mkdir -p usr/share/fonts/TTF + : >usr/share/fonts/TTF/msfonts.txt + for i in `/bin/ls tmp/ttf-ms-fonts/*.ttf`; do + echo `basename $i` >>usr/share/fonts/TTF/msfonts.txt + cp $i usr/share/fonts/TTF + done + echo "done." + echo -n "rebuilding font cache... " + fc-cache -f > /dev/null + mkfontscale /usr/share/fonts/TTF + mkfontdir /usr/share/fonts/TTF + echo "done." + rm -rf tmp/ttf-ms-fonts +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + # remove fonts from their old location + rm -rf usr/X11R6/lib/X11/fonts/ttf-ms-fonts + post_install $1 +} + +# arg 1: the old package version +pre_remove() { + #rm -f usr/X11R6/lib/X11/fonts/TTF/ + [ -f usr/share/fonts/TTF/msfonts.txt ] || return + for i in `cat usr/share/fonts/TTF/msfonts.txt`; do + rm -f usr/share/fonts/TTF/$i + done + rm -f usr/share/fonts/TTF/msfonts.txt +} + +# arg 1: the old package version +post_remove() { + echo -n "rebuilding font cache... " + fc-cache -f > /dev/null + mkfontscale /usr/share/fonts/TTF + mkfontdir /usr/share/fonts/TTF + echo "done." +} + +op=$1 +shift + +$op $* diff --git a/abs/extra/unison/PKGBUILD b/abs/extra/unison/PKGBUILD new file mode 100644 index 0000000..b1efa5b --- /dev/null +++ b/abs/extra/unison/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +#Maintainer: Tobias Powalowski + +pkgname=unison +pkgver=2.27.57 +pkgrel=1 +pkgdesc="Unison is a file-synchronization tool" +arch=(i686 x86_64) +license=('GPL2') +url="http://www.cis.upenn.edu/~bcpierce/unison" +depends=('glibc') +#makedepends=('ocaml' 'lablgtk' 'lablgtk2' 'imagemagick') +makedepends=('ocaml' ) +source=(http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/$pkgname-$pkgver.tar.gz \ + $pkgname.desktop) +options=(!makeflags) +install=unison.install + +build() { + cd $startdir/src/$pkgname-$pkgver + CFLAGS="" + make clean + make UISTYLE=text DEBUGGING=false THREADS=true || return 1 + mkdir -p $startdir/pkg/usr/bin + install -Dm755 unison $startdir/pkg/usr/bin/unison +} +md5sums=('4ba0a3e4bf4b4ad0c063f86391371f78' + '2daecba7705455a8e4b769e48b059872') diff --git a/abs/extra/unison/ocaml-3.08-extnames.patch b/abs/extra/unison/ocaml-3.08-extnames.patch new file mode 100644 index 0000000..e959be2 --- /dev/null +++ b/abs/extra/unison/ocaml-3.08-extnames.patch @@ -0,0 +1,14 @@ +diff -ur unison-2.9.1/ubase/uprintf.ml unison-2.9.1.patched/ubase/uprintf.ml +--- unison-2.9.1/ubase/uprintf.ml 2002-04-11 07:13:23.000000000 +0200 ++++ unison-2.9.1.patched/ubase/uprintf.ml 2004-08-08 14:10:09.784776851 +0200 +@@ -10,8 +10,8 @@ + (* *) + (***********************************************************************) + +-external format_int: string -> int -> string = "format_int" +-external format_float: string -> float -> string = "format_float" ++external format_int: string -> int -> string = "caml_format_int" ++external format_float: string -> float -> string = "caml_format_float" + + let fprintf outchan doafter format = + let format = (Obj.magic format : string) in diff --git a/abs/extra/unison/unison.desktop b/abs/extra/unison/unison.desktop new file mode 100644 index 0000000..3a7e1d7 --- /dev/null +++ b/abs/extra/unison/unison.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=unison +Name[de]=unison +Comment=File synchronisation tool for X11 +Comment[de]=Datei Abgleicher und Synchronisierer +TryExec=unison-x11 +Exec=unison-x11 +Terminal=false +Type=Application +Categories=GTK;Application;Network; +Icon=unison.png +StartupNotify=true diff --git a/abs/extra/unison/unison.install b/abs/extra/unison/unison.install new file mode 100644 index 0000000..70e70b0 --- /dev/null +++ b/abs/extra/unison/unison.install @@ -0,0 +1,32 @@ +# arg 1: the new package version +post_install() { + echo "NOTE:" + echo " For gtk1 frontend please add 'gtk' package." + echo " For gtk2 frontend please add 'gtk2' package." + echo " Default X11 frontend is set to gtk2. " + echo "" + echo " If you want to default to gtk1 unison:" + echo " 'rm /usr/bin/unison-x11'" + echo " 'ln -s /usr/bin/unison-gtk /usr/bin/unison-x11'" + echo "" +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + /bin/true +} + +op=$1 +shift +$op $* diff --git a/abs/extra/unixodbc/PKGBUILD b/abs/extra/unixodbc/PKGBUILD new file mode 100644 index 0000000..b8c2690 --- /dev/null +++ b/abs/extra/unixodbc/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 9389 2008-08-17 06:44:49Z allan $ +# Maintainer: Judd Vinet +# Contributor: Tom Newsom + +pkgname=unixodbc +pkgver=2.2.12 +pkgrel=2 +pkgdesc="ODBC is an open specification for providing application developers with a predictable API with which to access Data Sources" +arch=(i686 x86_64) +license=('GPL2') +url="http://www.unixodbc.org/" +backup=('etc/odbc.ini' 'etc/odbcinst.ini') +depends=('readline') +source=(http://www.unixodbc.org/unixODBC-$pkgver.tar.gz) +md5sums=('9a116aad4059c31d231b626ffdf1869a') + +build() { + cd $startdir/src/unixODBC-$pkgver + sed -i 's/YY_FLUSH_BUFFER/yy_flush_buffer(YY_CURRENT_BUFFER)/' sqp/lex.l + ./configure --prefix=/usr --sysconfdir=/etc --enable-gui=no + make || return 1 + make DESTDIR=$startdir/pkg install + find $startdir/pkg -name '*.la' -exec rm {} \; +} diff --git a/abs/extra/v4l-dvb-dvico2/PKGBUILD b/abs/extra/v4l-dvb-dvico2/PKGBUILD new file mode 100644 index 0000000..4886027 --- /dev/null +++ b/abs/extra/v4l-dvb-dvico2/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=v4l-dvb-dvico2 +_kernver=2.6.28-ARCH +pkgver=1 +pkgrel=1 +pkgdesc="V4L-DVB drivers from mercurial for some dvico cards." +arch=('i686' 'x86_64') +license=('GPL2') +url="http://linuxtv.org/" +depends=('kernel26') +makedepends=(kernel-headers) +install=v4l-dvb.install +source=(http://linuxtv.org/hg/v4l-dvb/archive/401393656ebc.tar.bz2) + +build() { + cd $startdir/src/v4l* + make KERNDIR=/lib/modules/$_kernver/build \ + DESTDIR=$startdir/pkg KERNELRELEASE=$_kernver all || return 1 + make KERNDIR=/lib/modules/$_kernver/build \ + DESTDIR=$startdir/pkg KERNELRELEASE=$_kernver install || return 1 + rm -fr $startdir/pkg/lib/modules/$_kernver/modules* +} diff --git a/abs/extra/v4l-dvb-dvico2/fix-jdelvare-i2c-i2c-constify-client-address-data.patch b/abs/extra/v4l-dvb-dvico2/fix-jdelvare-i2c-i2c-constify-client-address-data.patch new file mode 100644 index 0000000..8c603f6 --- /dev/null +++ b/abs/extra/v4l-dvb-dvico2/fix-jdelvare-i2c-i2c-constify-client-address-data.patch @@ -0,0 +1,25 @@ +From: Andrew Morton + +drivers/media/video/tvaudio.c:147: error: conflicting type qualifiers for 'addr_data' +include/media/v4l2-i2c-drv-legacy.h:37: error: previous declaration of 'addr_data' was here + +Cc: Jean Delvare +Signed-off-by: Andrew Morton +--- + + include/media/v4l2-i2c-drv-legacy.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff -puN include/media/v4l2-i2c-drv-legacy.h~fix-jdelvare-i2c-i2c-constify-client-address-data include/media/v4l2-i2c-drv-legacy.h +--- a/include/media/v4l2-i2c-drv-legacy.h~fix-jdelvare-i2c-i2c-constify-client-address-data ++++ a/include/media/v4l2-i2c-drv-legacy.h +@@ -34,7 +34,7 @@ struct v4l2_i2c_driver_data { + }; + + static struct v4l2_i2c_driver_data v4l2_i2c_data; +-static struct i2c_client_address_data addr_data; ++static const struct i2c_client_address_data addr_data; + static struct i2c_driver v4l2_i2c_driver_legacy; + static char v4l2_i2c_drv_name_legacy[32]; + +_ diff --git a/abs/extra/v4l-dvb-dvico2/v4l-dvb.install b/abs/extra/v4l-dvb-dvico2/v4l-dvb.install new file mode 100644 index 0000000..c87bb82 --- /dev/null +++ b/abs/extra/v4l-dvb-dvico2/v4l-dvb.install @@ -0,0 +1,23 @@ +# arg 1: the new package version +post_install() { + KERNEL_VERSION='2.6.26-ARCH' + depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + KERNEL_VERSION='2.6.26-ARCH' + depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 + +} + +# arg 1: the old package version +post_remove() { + KERNEL_VERSION='2.6.26-ARCH' + depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 +} + +op=$1 +shift +$op $* diff --git a/abs/extra/v4l-dvb-dvico2/xc-bluebird.patch b/abs/extra/v4l-dvb-dvico2/xc-bluebird.patch new file mode 100644 index 0000000..c54594d --- /dev/null +++ b/abs/extra/v4l-dvb-dvico2/xc-bluebird.patch @@ -0,0 +1,896 @@ +[PATCH] Add support for FusionHDTV DVB-T NANO 2 / Dual Digital 4 + +Firmware required: + +Mirror 1: http://konstantin.filtschew.de/v4l-firmware/ + +Mirror 2: http://www.tuxamito.com.es/em2880/ + +This patch is for users, and NOT meant to be merged into the kernel. + +For AU support, apply Rogers patch afterwards: +http://linuxtv.org/~mkrufky/pending/xc/dd4.au.patch + +From: Michael Krufky +--- + linux/drivers/media/dvb/dvb-usb/cxusb.c | 157 +++++++ + linux/drivers/media/dvb/dvb-usb/cxusb.h | 2 + linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 2 + linux/drivers/media/dvb/frontends/Kconfig | 7 + linux/drivers/media/dvb/frontends/Makefile | 1 + linux/drivers/media/dvb/frontends/xc3028-fe.c | 532 ++++++++++++++++++++++++++ + linux/drivers/media/dvb/frontends/xc3028.h | 56 ++ + v4l/versions.txt | 1 + 8 files changed, 757 insertions(+), 1 deletion(-) + +--- v4l-dvb.orig/linux/drivers/media/dvb/dvb-usb/cxusb.c ++++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/cxusb.c +@@ -30,6 +30,7 @@ + #include "mt352.h" + #include "mt352_priv.h" + #include "zl10353.h" ++#include "xc3028.h" + + /* debug */ + int dvb_usb_cxusb_debug; +@@ -72,6 +73,28 @@ + st->gpio_write_state[GPIO_TUNER] = onoff; + } + ++static void cxusb_bluebird_gpio(struct dvb_usb_device *d, u8 pin) ++{ ++ u8 o[2],i; ++ ++ o[0] = 0xff & ~pin; ++ o[1] = 0x00; ++ ++ cxusb_ctrl_msg(d, CMD_BLUEBIRD_GPIO_WRITE, o, 2, &i, 1); ++ msleep(140); ++ ++ if ((i & pin) != 0x00) ++ deb_info("gpio_write failed.\n"); ++ ++ o[1] = pin; ++ ++ cxusb_ctrl_msg(d, CMD_BLUEBIRD_GPIO_WRITE, o, 2, &i, 1); ++ msleep(140); ++ ++ if ((i & pin) != pin) ++ deb_info("gpio_write failed.\n"); ++} ++ + /* I2C */ + static int cxusb_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], + int num) +@@ -351,6 +374,64 @@ + .demod_init = cxusb_mt352_demod_init, + }; + ++static struct zl10353_config cxusb_zl10353_dualdig4_config = { ++ .demod_address = 0x0f, ++ .no_tuner = 1, ++ .parallel_ts = 1, ++}; ++ ++struct bcode { ++ int reg; ++ char *txt; ++ int len; ++ int delay; ++}; ++ ++static int cxusb_xc3028_zl353_gpio_reset(struct dvb_frontend* fe, int ptr) ++{ ++ struct dvb_usb_adapter *adap = fe->dvb->priv; ++ struct dvb_usb_device *d = adap->dev; ++ int j; ++ struct bcode zlconf[] = { ++ /* borrowed from em2880-dvb ++ * this should be fixed in zl10353.c instead */ ++ {0x1e,"\x60\x00",2,0}, ++ {0x1e,"\x61\x4d",2,0}, ++ ++ {0x1e,"\x50\x0b",2,0}, ++ {0x1e,"\x51\x44",2,0}, ++ {0x1e,"\x52\x46",2,0}, ++ {0x1e,"\x53\x15",2,0}, ++ {0x1e,"\x54\x0f",2,0}, ++ {0x1e,"\x5e\x00",2,0}, ++ {0x1e,"\x5f\x12",2,0}, ++ ++ ++ {0x1e,"\x55\x80",2,0}, /* reset */ ++ {0x1e,"\xea\x01",2,0}, ++ {0x1e,"\xea\x00",2,0}, ++ {0x1e,"\x5a\xcd",2,0}, ++ ++ ++ {0x1e,"\x6c\xe6",2,0}, // set input frequency ++ {0x1e,"\x6d\x09",2,0}, ++ {} ++ }; ++ ++ if (ptr == 0 || ptr == 1) ++ /* pulse the GPIO tuner reset pin */ ++ cxusb_bluebird_gpio(d,0x01); ++ else if (ptr == 2) ++ for(j = 0; zlconf[j].txt; j++) ++ d->adapter[0].fe->ops.write(d->adapter[0].fe, zlconf[j].txt,zlconf[j].len); ++ ++ return 0; ++} ++ ++static struct xc3028_config cxusb_xc3028_config = { ++ .gpio_reset = cxusb_xc3028_zl353_gpio_reset, ++}; ++ + /* Callbacks for DVB USB */ + static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) + { +@@ -386,6 +467,12 @@ + return 0; + } + ++static int cxusb_xc3028_tuner_attach(struct dvb_usb_adapter *adap) ++{ ++ dvb_attach(xc3028_attach,adap->fe, &adap->dev->i2c_adap, &cxusb_xc3028_config); ++ return 0; ++} ++ + static int cxusb_cx22702_frontend_attach(struct dvb_usb_adapter *adap) + { + u8 b; +@@ -401,6 +488,24 @@ + return -EIO; + } + ++static int cxusb_dualdig4_frontend_attach(struct dvb_usb_adapter *adap) ++{ ++ if (usb_set_interface(adap->dev->udev, 0, 1) < 0) ++ err("set interface failed"); ++ ++ cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); ++ ++ /* pulse the GPIO demod reset pin */ ++ cxusb_bluebird_gpio(adap->dev,0x02); ++ ++ if ((adap->fe = dvb_attach(zl10353_attach, ++ &cxusb_zl10353_dualdig4_config, ++ &adap->dev->i2c_adap)) != NULL) ++ return 0; ++ ++ return -EIO; ++} ++ + static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) + { + if (usb_set_interface(adap->dev->udev, 0, 7) < 0) +@@ -479,6 +584,7 @@ + static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties; + static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties; + static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties; ++static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties; + + static int cxusb_probe(struct usb_interface *intf, + const struct usb_device_id *id) +@@ -487,7 +593,8 @@ + dvb_usb_device_init(intf,&cxusb_bluebird_lgh064f_properties,THIS_MODULE,NULL) == 0 || + dvb_usb_device_init(intf,&cxusb_bluebird_dee1601_properties,THIS_MODULE,NULL) == 0 || + dvb_usb_device_init(intf,&cxusb_bluebird_lgz201_properties,THIS_MODULE,NULL) == 0 || +- dvb_usb_device_init(intf,&cxusb_bluebird_dtt7579_properties,THIS_MODULE,NULL) == 0) { ++ dvb_usb_device_init(intf,&cxusb_bluebird_dtt7579_properties,THIS_MODULE,NULL) == 0 || ++ dvb_usb_device_init(intf,&cxusb_bluebird_dualdig4_properties,THIS_MODULE,NULL) == 0) { + return 0; + } + +@@ -508,6 +615,8 @@ + { USB_DEVICE(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM) }, + { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD) }, + { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM) }, ++ { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4) }, ++ { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVBT_NANO_2) }, + {} /* Terminating entry */ + }; + MODULE_DEVICE_TABLE (usb, cxusb_table); +@@ -766,6 +875,52 @@ + } + }; + ++static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { ++ .caps = DVB_USB_IS_AN_I2C_ADAPTER, ++ ++ .usb_ctrl = CYPRESS_FX2, ++ ++ .size_of_priv = sizeof(struct cxusb_state), ++ ++ .num_adapters = 1, ++ .adapter = { ++ { ++ .streaming_ctrl = cxusb_streaming_ctrl, ++ .frontend_attach = cxusb_dualdig4_frontend_attach, ++ .tuner_attach = cxusb_xc3028_tuner_attach, ++ /* parameter for the MPEG2-data transfer */ ++ .stream = { ++ .type = USB_BULK, ++ .count = 5, ++ .endpoint = 0x02, ++ .u = { ++ .bulk = { ++ .buffersize = 8192, ++ } ++ } ++ }, ++ }, ++ }, ++ ++ .power_ctrl = cxusb_bluebird_power_ctrl, ++ ++ .i2c_algo = &cxusb_i2c_algo, ++ ++ .generic_bulk_ctrl_endpoint = 0x01, ++ ++ .num_device_descs = 2, ++ .devices = { ++ { "DViCO FusionHDTV DVB-T Dual Digital 4", ++ { NULL }, ++ { &cxusb_table[13], NULL }, ++ }, ++ { "DViCO FusionHDTV DVB-T NANO2", ++ { NULL }, ++ { &cxusb_table[14], NULL }, ++ }, ++ } ++}; ++ + static struct usb_driver cxusb_driver = { + #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,15) + .owner = THIS_MODULE, +--- v4l-dvb.orig/linux/drivers/media/dvb/dvb-usb/cxusb.h ++++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/cxusb.h +@@ -28,6 +28,8 @@ + #define CMD_ANALOG 0x50 + #define CMD_DIGITAL 0x51 + ++#define CMD_BLUEBIRD_GPIO_WRITE 0x05 ++ + struct cxusb_state { + u8 gpio_write_state[3]; + }; +--- v4l-dvb.orig/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h ++++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +@@ -142,6 +142,8 @@ + #define USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM 0xdb51 + #define USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD 0xdb58 + #define USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM 0xdb59 ++#define USB_PID_DVICO_BLUEBIRD_DUAL_4 0xdb78 ++#define USB_PID_DVICO_BLUEBIRD_DVBT_NANO_2 0xdb70 + #define USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD 0xdb54 + #define USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM 0xdb55 + #define USB_PID_MEDION_MD95700 0x0932 +--- v4l-dvb.orig/linux/drivers/media/dvb/frontends/Kconfig ++++ v4l-dvb/linux/drivers/media/dvb/frontends/Kconfig +@@ -353,6 +353,13 @@ + This device is only used inside a SiP called togther with a + demodulator for now. + ++config DVB_XC3028 ++ tristate "Xceive XC3028 silicon tuner" ++ depends on I2C ++ default m if DVB_FE_CUSTOMISE ++ help ++ A driver for the silicon tuner XC3028 from Xceive. ++ + comment "Miscellaneous devices" + depends on DVB_CORE + +--- v4l-dvb.orig/linux/drivers/media/dvb/frontends/Makefile ++++ v4l-dvb/linux/drivers/media/dvb/frontends/Makefile +@@ -4,6 +4,7 @@ + + EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ + ++obj-$(CONFIG_DVB_XC3028) += xc3028-fe.o + obj-$(CONFIG_DVB_PLL) += dvb-pll.o + obj-$(CONFIG_DVB_STV0299) += stv0299.o + obj-$(CONFIG_DVB_SP8870) += sp8870.o +--- /dev/null ++++ v4l-dvb/linux/drivers/media/dvb/frontends/xc3028-fe.c +@@ -0,0 +1,532 @@ ++/* ++ ++ Xceive - xc3028 tuner interface (Firmware 2.7) ++ ++ Copyright (c) 2007 Michael Krufky ++ Copyright (c) 2006 Markus Rechberger ++ ++ 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ ++*/ ++ ++#include ++#include "compat.h" ++#include ++#include ++#include ++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) ++#include "i2c-compat.h" ++#endif ++#include "dvb_frontend.h" ++#include "xc3028.h" ++ ++ ++struct xc3028_priv { ++ u8 tuning_code[12]; ++ enum v4l2_tuner_type type; ++ v4l2_std_id std; ++ // unsigned int mode; ++ ++ struct xc3028_config *cfg; ++ ++ struct i2c_adapter *i2c_adap; ++ u32 frequency; ++ int bandwidth; ++}; ++ ++MODULE_DESCRIPTION("Xceive xc3028 dvb frontend driver"); ++MODULE_AUTHOR("Michael Krufky "); ++MODULE_AUTHOR("Markus Rechberger "); ++MODULE_LICENSE("GPL"); ++ ++ ++/* hack */ ++#define V4L2_TUNER_DVBT_TV 19 ++#define V4L2_TUNER_DVBC_TV 29 ++#define V4L2_TUNER_ATSC_TV 39 ++ ++/* firmware functions */ ++#define XC3028_BYTECODE 0 ++#define XC3028_RESET 1 ++#define XC3028_SLEEP 2 ++ ++#define XC3028_BW8MHZ 0 ++#define XC3028_BW7MHZ 1 ++#define XC3028_BW6MHZ 2 ++#define XC3028_ATSC_BW6MHZ 3 ++#define XC3028_RADIO 4 ++ ++ ++#define XC3028_ANALOGUE_FW "xc3028_init0.i2c.fw" ++#define XC3028_DIGITAL_FW "xc3028_8MHz_init0.i2c.fw" ++#define XC3028_RADIO_FW "xc3028_FM_init0.i2c.fw" ++#define XC3028_SPECIFIC_RADIO_FW "xc3028_specific_radio.fw" ++ ++#define TUNING_GRANULARITY 15625 ++ ++static int firmware_loader(struct dvb_frontend *fe, const struct firmware *fw); ++static int upload_firmware(struct dvb_frontend *fe); ++static int xc3028_set_mode(struct dvb_frontend *fe, enum v4l2_tuner_type type); ++ ++static struct _analogue_standards{ ++ v4l2_std_id standard; ++ u8 filename[50]; ++} xc3028_standards[]={ ++ {V4L2_STD_PAL_BG,"xc3028_BG_PAL_A2_A.i2c.fw"}, ++ {V4L2_STD_PAL_I,"xc3028_I_PAL_NICAM.i2c.fw"}, ++ {V4L2_STD_PAL_DK,"xc3028_DK_PAL_A2.i2c.fw"}, ++ {V4L2_STD_MN,"xc3028_MN_NTSCPAL_A2.i2c.fw"}, ++ {V4L2_STD_PAL, "xc3028_BG_PAL_A2_A.i2c.fw"}, ++ ++ {V4L2_STD_SECAM_DK,"xc3028_DK_SECAM_A2_DK1.i2c.fw"}, ++ {V4L2_STD_SECAM_L,"xc3028_L_SECAM_NICAM.i2c.fw"}, ++ {V4L2_STD_SECAM_LC,"xc3028_L'_SECAM_NICAM.i2c.fw"}, ++ {V4L2_STD_SECAM_K1,"xc3028_DK_SECAM_A2_DK1.i2c.fw"}, ++}; ++ ++/* TODO: add the other standards here ++ The linux DVB framework sends us following values ++ from 0..2 to set up the correct channel bandwidth ++ ++ 0 ... 8 mhz ++ 1 ... 7 mhz ++ 2 ... 6 mhz ++ ++ we do not have any settings for 6MHz at least I haven't found one, ++ feel free to complete this list ++ ++ */ ++ ++static struct _digital_standards{ ++ unsigned int dvb:1; ++ unsigned int atsc:1; ++ int bandwidth; ++ char filename[50]; ++} xc3028_dtv_standards[]={ ++ {1, 0, XC3028_BW8MHZ /* 8mhz */, "xc3028_DTV8_2633.i2c.fw" }, ++ {1, 0, XC3028_BW7MHZ /* 7mhz */, "xc3028_DTV7_2633.i2c.fw" }, ++ /* 2 6mhz */ ++ {0, 1, 0 /* ???? */, "xc3028_DTV6_ATSC_2620.i2c.fw"}, ++ {0, 1, 1 /* ???? */, "xc3028_DTV6_ATSC_2620.i2c.fw"}, ++ {0, 1, XC3028_ATSC_BW6MHZ, "xc3028_DTV6_ATSC_2620.i2c.fw"}, ++}; ++ ++/* ---------------------------------------------------------------------- */ ++#define XC3028_I2C_ADDR 0x61 ++ ++static int xc3028_i2c_xfer(struct i2c_adapter* adap, char *buf, int len) ++{ ++ int ret; ++ struct i2c_msg msg = { .addr = XC3028_I2C_ADDR, .flags = 0, ++ .buf = buf, .len = len }; ++ ++ ret = i2c_transfer(adap, &msg, 1); ++ ++ /* If everything went ok (i.e. 1 msg transmitted), return #bytes ++ transmitted, else error code. */ ++ return (ret == 1) ? len : ret; ++} ++ ++/* ---------------------------------------------------------------------- */ ++ ++static int xc3028_set_params(struct dvb_frontend *fe, ++ struct dvb_frontend_parameters *params) ++{ ++ struct xc3028_priv *priv = fe->tuner_priv; ++ const struct firmware *fw = NULL; ++ unsigned char chanbuf[4]; ++ unsigned long frequency=0; ++ unsigned long value; ++ int bandwidth; ++ int i; ++ enum v4l2_tuner_type type; ++ ++ if (fe->ops.info.type == FE_ATSC) { ++ type = V4L2_TUNER_ATSC_TV; ++ } else { // if (fe->ops.info.type == FE_OFDM) ++ type = V4L2_TUNER_DVBT_TV; ++ } ++ ++ xc3028_set_mode(fe, type); ++ ++ if (priv->type == V4L2_TUNER_ATSC_TV) { ++ bandwidth = XC3028_ATSC_BW6MHZ; ++ } else { ++ bandwidth = params->u.ofdm.bandwidth; ++ } ++ ++ if (priv->bandwidth != bandwidth) { ++ switch(bandwidth) { ++ case -1: ++ /* analogue */ ++ priv->bandwidth = bandwidth; ++ break; ++ case XC3028_ATSC_BW6MHZ: ++ for (i = 0; i < ARRAY_SIZE(xc3028_dtv_standards); i++) { ++ if (xc3028_dtv_standards[i].bandwidth == XC3028_ATSC_BW6MHZ) { ++ printk("Loading 6MHz Bandwidth settings: %s\n",xc3028_dtv_standards[i].filename); ++ if (request_firmware(&fw, xc3028_dtv_standards[i].filename, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) != 0) { ++ release_firmware(fw); ++ printk("xc3028-tuner.c: error uploading firmware!\n"); ++ return -EINVAL; ++ } ++ release_firmware(fw); ++ break; ++ } else ++ printk("Loading firmware from file failed!\n"); ++ } ++ } ++ priv->bandwidth = bandwidth; ++ break; ++ case XC3028_BW8MHZ: /* 8 MHz */ ++ for (i = 0; i < ARRAY_SIZE(xc3028_dtv_standards); i++) { ++ if (xc3028_dtv_standards[i].bandwidth == XC3028_BW8MHZ) { ++ printk("Loading 8MHz Bandwidth settings: %s\n",xc3028_dtv_standards[i].filename); ++ if (request_firmware(&fw, xc3028_dtv_standards[i].filename, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) != 0) { ++ release_firmware(fw); ++ printk("xc3028-tuner.c: error uploading firmware!\n"); ++ return -EINVAL; ++ } ++ release_firmware(fw); ++ break; ++ } else ++ printk("Loading firmware from file failed!\n"); ++ } ++ } ++ priv->bandwidth = bandwidth; ++ break; ++ case XC3028_BW7MHZ: /* 7 MHz */ ++ for (i = 0; i < ARRAY_SIZE(xc3028_dtv_standards); i++) { ++ if (xc3028_dtv_standards[i].bandwidth == XC3028_BW7MHZ) { ++ printk("Loading 7MHz Bandwidth settings: %s\n",xc3028_dtv_standards[i].filename); ++ if (request_firmware(&fw, xc3028_dtv_standards[i].filename, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) != 0) { ++ release_firmware(fw); ++ printk("xc3028-tuner.c: error uploading firmware!\n"); ++ return -EINVAL; ++ } ++ release_firmware(fw); ++ break; ++ } else ++ printk("Loading firmware from file failed!\n"); ++ } ++ } ++ priv->bandwidth = bandwidth; ++ break; ++ default: ++ printk("xc3028-tuner.c: sorry [%d] bandwidth isn't supported (please report)\n",bandwidth); ++ } ++ } ++ /* TODO: 7 MHz (1) has the same offset as 8 MHz -- this depends on the used firmware */ ++#if 0 ++ if(t->mode == V4L2_TUNER_RADIO){ ++ frequency=(unsigned long long)f->frequency*1000/16; ++ } else { } ++#endif ++ switch(bandwidth) { ++ case XC3028_BW8MHZ: ++ case XC3028_BW7MHZ: ++ frequency=(unsigned long long)params->frequency-2750000; ++ break; ++ case XC3028_BW6MHZ: ++ case XC3028_ATSC_BW6MHZ: ++ frequency=(unsigned long long)params->frequency-1750000; ++ break; ++ default: ++ frequency=(unsigned long long)params->frequency; ++ } ++ ++ value=(frequency+(TUNING_GRANULARITY/2))/TUNING_GRANULARITY; ++ chanbuf[0]=0; ++ chanbuf[1]=0; ++ chanbuf[2]=(value&0xff00)>>8; ++ chanbuf[3]=value&0x00ff; ++ ++#if 0 ++ /* seems like it's not needed! */ ++ rc=i2c_master_send(c,"\xa0\x00\x00\x00",4); ++ if(priv && priv->tuning_code) ++ i2c_master_send(c,priv->tuning_code,12); ++ else ++ printk("ERROR: *** NO TUNING CODE SET **\n"); ++ i2c_master_send(c,"\x00\x8c",2); ++#endif ++ xc3028_i2c_xfer(priv->i2c_adap,"\x80\x02\x00\x00",4); ++ xc3028_i2c_xfer(priv->i2c_adap,chanbuf,4); ++ return 0; ++} ++ ++static int firmware_loader(struct dvb_frontend *fe, const struct firmware *fw) ++{ ++ int txtlen=0; ++ int current_ptr=0; ++ int version; ++ int function; ++ int x; ++ struct xc3028_priv *priv = fe->tuner_priv; ++ ++ if (fw->size == 0) ++ return -EINVAL; ++ ++ version = fw->data[current_ptr++]; ++ ++ switch (version) { ++ case 1: ++ while (current_ptr < fw->size) { ++ function = fw->data[current_ptr++]; ++ switch (function) { ++ case XC3028_BYTECODE: ++ txtlen = fw->data[current_ptr++]; ++ if ((current_ptr + txtlen) > fw->size) ++ return -EINVAL; ++ if (fw->data[current_ptr]==0x1e && txtlen == 12){ ++ memcpy(priv->tuning_code, &fw->data[current_ptr], 12); ++ } ++ if (txtlen != xc3028_i2c_xfer(priv->i2c_adap,&fw->data[current_ptr],txtlen)) { ++ printk("failed: %02x| ",txtlen); ++ for(x=0; x < txtlen; x++) { ++ printk("%02x ",(unsigned char)fw->data[current_ptr+x]); ++ } ++ printk("\n"); ++ } ++ ++ current_ptr += txtlen; ++ break; ++ case XC3028_RESET: ++ x = fw->data[current_ptr++]; ++ ++ if ((priv->cfg) && (priv->cfg->gpio_reset)) ++ priv->cfg->gpio_reset(fe,x); ++ else ++ printk("XC3028: NO GPIO CALLBACK FUNCTION PROVIDED - SWITCHING MODES WON'T WORK (GPIO FW ARG: %d)!\n",x); ++ break; ++ case XC3028_SLEEP: ++ msleep(fw->data[current_ptr++]); ++ break; ++ default: ++ printk("xc3028-tuner.c: error while loading firmware!\n"); ++ return -EINVAL; ++ } ++ } ++ break; ++ default: ++ printk("xc3028-tuner.c: Firmware Loader: Unknown firmware version (%d)\n",version); ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++static int upload_firmware(struct dvb_frontend *fe) { ++ struct xc3028_priv *priv = fe->tuner_priv; ++ const struct firmware *fw = NULL; ++ int i; ++ ++ switch (priv->type) { ++ case V4L2_TUNER_ANALOG_TV: ++ printk("Loading base firmware: %s\n", XC3028_ANALOGUE_FW); ++ if (request_firmware(&fw, XC3028_ANALOGUE_FW, &priv->i2c_adap->dev) == 0) { ++ firmware_loader(fe,fw); ++ release_firmware(fw); ++ } else { ++ printk("xc3028-tuner.c: Unable to load firmware\n"); ++ printk("xc3028-tuner.c: ** PLEASE HAVE A LOOK AT **\n"); ++ printk("xc3028-tuner.c: http://linuxtv.org/v4lwiki/index.php/Talk:Em2880#Firmware\n"); ++ return -EINVAL; ++ } ++ for (i = 0; i < ARRAY_SIZE(xc3028_standards); i++) { ++ if (xc3028_standards[i].standard & priv->std) { ++ printk("%s, Loading specific analogue TV settings: %s\n",__FUNCTION__, xc3028_standards[i].filename); ++ if (request_firmware(&fw, xc3028_standards[i].filename, &priv->i2c_adap->dev) == 0){ ++ if(firmware_loader(fe,fw)==0){ ++ release_firmware(fw); ++ return 0; ++ } ++ release_firmware(fw); ++ } else { ++ printk("Loading configuration from file failed!\n"); ++ } ++ break; ++ } ++ } ++ printk("Loading default analogue TV settings: %s\n",xc3028_standards[0].filename); ++ priv->std=xc3028_standards[0].standard; ++ if (request_firmware(&fw, xc3028_standards[0].filename, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) == 0) { ++ release_firmware(fw); ++ return 0; ++ } ++ release_firmware(fw); ++ } ++ printk("xc3028-tuner.c: error loading firmware (analogue TV)! (please report -> mrechberger@gmail.com)\n"); ++ break; ++ case V4L2_TUNER_DVBT_TV: ++ case V4L2_TUNER_DVBC_TV: ++ case V4L2_TUNER_ATSC_TV: ++ printk("Loading base firmware: %s\n", XC3028_DIGITAL_FW); ++ /* reset analog standard */ ++ priv->std = 0; ++ if (request_firmware(&fw, XC3028_DIGITAL_FW, &priv->i2c_adap->dev) == 0) { ++ firmware_loader(fe,fw); ++ release_firmware(fw); ++ } else { ++ printk("xc3028-tuner.c: Unable to load firmware\n"); ++ printk("xc3028-tuner.c: ** PLEASE HAVE A LOOK AT **\n"); ++ printk("xc3028-tuner.c: http://linuxtv.org/v4lwiki/index.php/Talk:Em2880#Firmware\n"); ++ return -EINVAL; ++ } ++ for( i = 0; i < ARRAY_SIZE(xc3028_dtv_standards); i++) { ++ if ((xc3028_dtv_standards[i].dvb==1 && ++ xc3028_dtv_standards[i].bandwidth == priv->bandwidth) || ++ (priv->type == V4L2_TUNER_ATSC_TV && ++ xc3028_dtv_standards[i].atsc == 1)) { ++ printk("Loading specific dtv settings: %s\n",xc3028_dtv_standards[i].filename); ++ if (request_firmware(&fw, xc3028_dtv_standards[i].filename, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) == 0) { ++ release_firmware(fw); ++ return 0; ++ } ++ release_firmware(fw); ++ } ++ } ++ i++; ++ } ++ ++ /* this gets accessed if a switchover occures, t->bandwidth will be set to -1 */ ++ printk("Loading default dtv settings: %s\n",xc3028_dtv_standards[0].filename); ++ priv->bandwidth = xc3028_dtv_standards[0].bandwidth; ++ if (request_firmware(&fw, xc3028_dtv_standards[0].filename, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) == 0) { ++ release_firmware(fw); ++ return 0; ++ } ++ release_firmware(fw); ++ } ++ printk("xc3028-tuner.c: error loading firmware (analogue TV)! (please report -> mrechberger@gmail.com)\n"); ++ break; ++ case V4L2_TUNER_RADIO: ++ printk("Loading base firmware: %s\n", XC3028_RADIO_FW); ++ if (request_firmware(&fw, XC3028_RADIO_FW, &priv->i2c_adap->dev) == 0) { ++ firmware_loader(fe,fw); ++ release_firmware(fw); ++ } else { ++ printk("xc3028-tuner.c: Unable to load (radio) firmware\n"); ++ printk("xc3028-tuner.c: ** PLEASE HAVE A LOOK AT **\n"); ++ printk("xc3028-tuner.c: http://linuxtv.org/v4lwiki/index.php/Talk:Em2880#Firmware\n"); ++ return -EINVAL; ++ } ++ printk("%s, Loading specific radio firmware: %s\n",__FUNCTION__, XC3028_SPECIFIC_RADIO_FW); ++ if (request_firmware(&fw, XC3028_SPECIFIC_RADIO_FW, &priv->i2c_adap->dev) == 0) { ++ if (firmware_loader(fe,fw) == 0) { ++ release_firmware(fw); ++ return 0; ++ } ++ release_firmware(fw); ++ } else { ++ printk("Loading configuration from file failed!\n"); ++ } ++ return 0; ++ default: ++ printk("ERROR TUNER TYPE NOT SUPPORTED (%d)\n",priv->type); ++ return -EINVAL; ++ } ++ ++ printk("xc3028-tuner.c: *********************************************************\n"); ++ printk("xc3028-tuner.c: no firmware uploaded\n" ); ++ printk("xc3028-tuner.c: ** please have a look at: **\n"); ++ printk("xc3028-tuner.c: http://linuxtv.org/v4lwiki/index.php/Talk:Em2880#Firmware\n"); ++ printk("xc3028-tuner.c: *********************************************************\n"); ++ ++ return -EINVAL; ++} ++ ++static int xc3028_set_mode(struct dvb_frontend *fe, enum v4l2_tuner_type type) ++{ ++ struct xc3028_priv *priv = fe->tuner_priv; ++ ++ priv->type = type; ++ ++ upload_firmware(fe); ++ ++ if (priv->cfg && priv->cfg->gpio_reset && (priv->type == V4L2_TUNER_DVBT_TV || ++ priv->type == V4L2_TUNER_DVBC_TV || ++ priv->type == V4L2_TUNER_ATSC_TV )) { ++ printk("xc3028-tuner.c: sending extra call for DVB-T\n"); ++ priv->cfg->gpio_reset(fe,2); ++ } ++ ++ return 0; ++} ++ ++/* dvb tuner api */ ++static int xc3028_release(struct dvb_frontend *fe) ++{ ++ kfree(fe->tuner_priv); ++ fe->tuner_priv = NULL; ++ return 0; ++} ++ ++static int xc3028_get_frequency(struct dvb_frontend *fe, u32 *frequency) ++{ ++ struct xc3028_priv *priv = fe->tuner_priv; ++ ++ *frequency = priv->frequency*1000/16*1000; ++ return 0; ++} ++ ++static int xc3028_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth) ++{ ++ struct xc3028_priv *priv = fe->tuner_priv; ++ ++ *bandwidth = priv->bandwidth; ++ return 0; ++} ++ ++static const struct dvb_tuner_ops xc3028_tuner_ops = { ++ .info = { ++ .name = "Xceive XC3028", ++#if 0 ++ .frequency_min = , ++ .frequency_max = ++#endif ++ }, ++ .release = xc3028_release, ++ .set_params = xc3028_set_params, ++ .get_frequency = xc3028_get_frequency, ++ .get_bandwidth = xc3028_get_bandwidth, ++}; ++ ++struct dvb_frontend *xc3028_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct xc3028_config *cfg) ++{ ++ struct xc3028_priv *priv = kzalloc(sizeof(struct xc3028_priv),GFP_KERNEL); ++ ++ priv->i2c_adap = i2c; ++ priv->bandwidth=XC3028_BW8MHZ; ++ priv->cfg = cfg; ++ ++ memcpy(&fe->ops.tuner_ops, &xc3028_tuner_ops, sizeof(struct dvb_tuner_ops)); ++ fe->tuner_priv = priv; ++ return fe; ++} ++EXPORT_SYMBOL(xc3028_attach); ++ ++/* ++ * Overrides for Emacs so that we follow Linus's tabbing style. ++ * --------------------------------------------------------------------------- ++ * Local variables: ++ * c-basic-offset: 8 ++ * End: ++ */ +--- /dev/null ++++ v4l-dvb/linux/drivers/media/dvb/frontends/xc3028.h +@@ -0,0 +1,56 @@ ++ /* ++ Header for Xceive Silicon tuners ++ ++ (c) 2007 Michael Krufky ++ ++ 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., 675 Mass Ave, Cambridge, MA 02139, USA. ++ ++ */ ++ ++#ifndef __DVB_XC3028_H__ ++#define __DVB_XC3028_H__ ++ ++#include ++#include "dvb_frontend.h" ++ ++/** ++ * Attach a xc3028 tuner to the supplied frontend structure. ++ * ++ * @param fe Frontend to attach to. ++ * @param i2c i2c adapter to use. ++ * @param cfg config struct with gpio reset callback. ++ * @return FE pointer on success, NULL on failure. ++ */ ++ ++struct xc3028_config { ++ int (*gpio_reset) (struct dvb_frontend *fe, int ptr); ++}; ++ ++#if defined(CONFIG_DVB_XC3028) || (defined(CONFIG_DVB_XC3028_MODULE) && defined(MODULE)) ++extern struct dvb_frontend* xc3028_attach(struct dvb_frontend *fe, ++ struct i2c_adapter *i2c, ++ struct xc3028_config *cfg); ++#else ++static inline struct dvb_frontend* xc3028_attach(struct dvb_frontend *fe, ++ struct i2c_adapter *i2c, ++ struct xc3028_config *cfg) ++{ ++ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__); ++ return NULL; ++} ++#endif // CONFIG_DVB_XC3028 ++ ++#endif // __DVB_XC3028_H__ +--- v4l-dvb.orig/v4l/versions.txt ++++ v4l-dvb/v4l/versions.txt +@@ -228,3 +228,4 @@ + USB_ZC0301 + USB_ET61X251 + USB_ZR364XX ++DVB_XC3028 diff --git a/abs/extra/vcdimager/PKGBUILD b/abs/extra/vcdimager/PKGBUILD new file mode 100644 index 0000000..9a97e31 --- /dev/null +++ b/abs/extra/vcdimager/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir +# Contributor: Tom Newsom + +pkgname=vcdimager +pkgver=0.7.23 +pkgrel=6 +pkgdesc="GNU VCDImager is a full-featured mastering suite for authoring disassembling and analyzing Video CD's and Super Video CD's" +arch=(i686 x86_64) +license=('GPL') +url="http://www.vcdimager.org/" +depends=('libcdio>=0.79' 'libxml2' 'popt') +options=('!libtool' '!emptydirs') +source=(ftp://ftp.gnu.org/gnu/vcdimager/${pkgname}-${pkgver}.tar.gz) +md5sums=('5e7d80fdbf0037ad20e438f2a9573253') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr + make || return 1 + make DESTDIR=${startdir}/pkg install +} diff --git a/abs/extra/vcdimager/__changelog b/abs/extra/vcdimager/__changelog new file mode 100644 index 0000000..701b6bb --- /dev/null +++ b/abs/extra/vcdimager/__changelog @@ -0,0 +1 @@ +options=!noemptdir diff --git a/abs/extra/vcdimager/cdio.patch b/abs/extra/vcdimager/cdio.patch new file mode 100644 index 0000000..f7f9e31 --- /dev/null +++ b/abs/extra/vcdimager/cdio.patch @@ -0,0 +1,11 @@ +--- lib/image.c.org 2004-07-15 17:19:01.000000000 +0200 ++++ lib/image.c 2004-07-15 17:22:06.000000000 +0200 +@@ -76,7 +76,7 @@ + } + + int +-vcd_image_sink_write (VcdImageSink *obj, void *buf, uint32_t lsn) ++vcd_image_sink_write (VcdImageSink *obj, void *buf, lsn_t lsn) + { + vcd_assert (obj != NULL); + diff --git a/abs/extra/vim/PKGBUILD b/abs/extra/vim/PKGBUILD new file mode 100644 index 0000000..7e3db29 --- /dev/null +++ b/abs/extra/vim/PKGBUILD @@ -0,0 +1,66 @@ +# $Id: PKGBUILD 17696 2008-10-31 17:28:10Z allan $ +# Maintainer: tobias [ tobias at archlinux org ] + +pkgname=vim +_srcver=7.2 +_patchlevel=132 +pkgver=${_srcver}.${_patchlevel} +pkgrel=1.5 +pkgdesc="a highly configurable, improved version of the vi text editor" +arch=(i686 x86_64) +license=('custom:vim') +url="http://www.vim.org" +depends=("vi>=${pkgver}" 'perl' 'python' 'acl' 'gpm>=1.20.4' 'libxt') +makedepends=('wget' 'sed' 'grep') +backup=(etc/vimrc) +install=${pkgname}.install +# we need the extra-stuff to get all patches applied smoothly +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 \ + fetch_patches.sh) + +build() +{ + # 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/\.//") + sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' src/feature.h + # build party + ./configure --prefix=/usr --localstatedir=/var/lib/vim --mandir=/usr/share/man \ + --with-compiledby=ArchLinux --with-features=big \ + --with-x=yes --disable-gui \ + --with-global-runtime=/usr/share/vim --with-vim-name=vim \ + --enable-multibyte --enable-cscope \ + --enable-perlinterp --enable-pythoninterp + make || return 1 + make VIMRCLOC=/etc DESTDIR=${startdir}/pkg VIMRTDIR= install + cd ${startdir}/pkg/usr/bin + rm -f ex view rview xxd vimtutor + ln -s vitutor vimtutor + + # 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} + mv vimdiff.1 vimdiff.org + rm -f *.1 + ln -s rvi.1.gz rvim.1.gz + ln -s vi.1.gz vim.1.gz + ln -s vitutor.1.gz vimtutor.1.gz + mv vimdiff.org vimdiff.1 + done + + # kill the nobackup parts + sed -i '/vms/,+4 d' ${startdir}/pkg/usr/share/vim/vimrc_example.vim + install -Dm644 ${startdir}/pkg/usr/share/vim/vimrc_example.vim \ + ${startdir}/pkg/etc/vimrc + # clean all settings and controls - served by vi package + rm -rf ${startdir}/pkg/usr/share/vim + +# Changes to remove mouse support VERY IMPORTANT! +############################################################## + sed -i "s/mouse=a/mouse-=a/g" $startdir/pkg/etc/vimrc +################################################################# +} diff --git a/abs/extra/vim/__changelog b/abs/extra/vim/__changelog new file mode 100644 index 0000000..47cbb5f --- /dev/null +++ b/abs/extra/vim/__changelog @@ -0,0 +1,3 @@ +Remove mouse support from /etc/vimrc. This new found ability is truely annoying. + + diff --git a/abs/extra/vim/fetch_patches.sh b/abs/extra/vim/fetch_patches.sh new file mode 100644 index 0000000..2ce1019 --- /dev/null +++ b/abs/extra/vim/fetch_patches.sh @@ -0,0 +1,61 @@ +# 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=-1 + 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 + cd $startdir/src/patches + rm 7.2.001-100.gz + ######## + + 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/vim/vim.install b/abs/extra/vim/vim.install new file mode 100644 index 0000000..1d46e19 --- /dev/null +++ b/abs/extra/vim/vim.install @@ -0,0 +1,38 @@ +post_install() { + # if we have an existing gvim installation - relocate binaries and symlinks + if [ -f usr/bin/vim ] ; then + cd usr/bin + rm -f view rview + ln -s vim view + ln -s vim rview + cd ${OLDPWD} + echo "Create vim related symlinks..." + fi + 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." +} + +pre_remove() { + cd usr/bin + rm -f view rview + if [ -f usr/bin/vi ] ; then + ln -s vi view + ln -s vi rview + echo "Create vi related symlinks..." + fi + cd ${OLDPWD} +} + +post_upgrade() { + post_install $1 +} + +pre_upgrade() { + pre_remove $2 +} + +op=$1 +shift +[ "$(type -t "$op")" = "function" ] && $op "$@" diff --git a/abs/extra/vorbis-tools/ChangeLog b/abs/extra/vorbis-tools/ChangeLog new file mode 100644 index 0000000..b4f8311 --- /dev/null +++ b/abs/extra/vorbis-tools/ChangeLog @@ -0,0 +1,10 @@ +2008-03-15 Travis Willard + + * 1.2.0-3 + Removed explicit /usr/man usage + +2008-03-15 Travis Willard + + * 1.2.0-1 + New upstream release. + Added ChangeLog diff --git a/abs/extra/vorbis-tools/PKGBUILD b/abs/extra/vorbis-tools/PKGBUILD new file mode 100644 index 0000000..4428e6a --- /dev/null +++ b/abs/extra/vorbis-tools/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Travis Willard +# Maintainer: dorphell +# Committer: Judd Vinet + +pkgname=vorbis-tools +pkgver=1.2.0 +pkgrel=3 +pkgdesc="Extra tools for Ogg-Vorbis" +arch=(i686 x86_64) +url='http://www.xiph.org/vorbis/' +license=('GPL') +depends=('libao' 'libvorbis' 'curl>=7.16.2' 'flac>=1.1.4') +source=(http://downloads.xiph.org/releases/vorbis/$pkgname-$pkgver.tar.gz) +md5sums=('df976d24e51ef3d87cd462edf747bf9a') + +build() +{ + cd $startdir/src/$pkgname-$pkgver + autoconf + ./configure --prefix=/usr --without-speex + make || return 1 + make DESTDIR=$startdir/pkg install +} + diff --git a/abs/extra/vorbis-tools/curl.patch b/abs/extra/vorbis-tools/curl.patch new file mode 100644 index 0000000..2aabebe --- /dev/null +++ b/abs/extra/vorbis-tools/curl.patch @@ -0,0 +1,10 @@ +--- vorbis-tools-1.1.1/ogg123/http_transport.c.orig 2006-12-09 16:34:44.000000000 +1100 ++++ vorbis-tools-1.1.1/ogg123/http_transport.c 2006-12-09 16:39:46.000000000 +1100 +@@ -116,7 +116,6 @@ + if (inputOpts.ProxyTunnel) + curl_easy_setopt (handle, CURLOPT_HTTPPROXYTUNNEL, inputOpts.ProxyTunnel); + */ +- curl_easy_setopt(handle, CURLOPT_MUTE, 1); + curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, private->error); + curl_easy_setopt(handle, CURLOPT_PROGRESSFUNCTION, progress_callback); + curl_easy_setopt(handle, CURLOPT_PROGRESSDATA, private); diff --git a/abs/extra/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch b/abs/extra/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch new file mode 100644 index 0000000..19f8e33 --- /dev/null +++ b/abs/extra/vorbis-tools/vorbis-tools-1.1.1-flac_gt_1.1.3_support.patch @@ -0,0 +1,500 @@ +Add support for libFLAC-1.1.3. Original patch from Josh Coalson: +http://lists.xiph.org/pipermail/vorbis-dev/2006-October/018561.html +This patch updates that to build against svn trunk, and includes +automatic detection of libFLAC version in ./configure. +Tested against libFLAC versions 1.1.2 and 1.1.3. + +--- old/vorbis-tools-1.1.1/configure.ac 2005-06-27 10:25:51.000000000 +0100 ++++ vorbis-tools-1.1.1/configure.ac 2007-04-07 17:26:15.000000000 +0100 +@@ -169,17 +169,33 @@ + + FLAC_LIBS="" + if test "x$build_flac" = xyes; then ++ + AC_CHECK_LIB(m,log,FLAC_LIBS="-lm") +- AC_CHECK_LIB(FLAC, [FLAC__stream_decoder_process_single], +- [have_libFLAC=yes; FLAC_LIBS="-lFLAC $FLAC_LIBS"], +- AC_MSG_WARN([libFLAC missing]) +- have_libFLAC=no, [$FLAC_LIBS] +- ) +- AC_CHECK_LIB(OggFLAC, [OggFLAC__stream_decoder_new], +- [FLAC_LIBS="-lOggFLAC $FLAC_LIBS $OGG_LIBS"], +- AC_MSG_WARN([libOggFLAC missing]) +- have_libFLAC=no, [$FLAC_LIBS $OGG_LIBS] +- ) ++ ++ dnl First check for libFLAC-1.1.3 or later. As of libFLAC 1.1.3, ++ dnl OggFLAC functionality has been rolled into libFLAC rather ++ dnl than being in a separate libOggFLAC library. ++ ++ AC_CHECK_LIB(FLAC, [FLAC__stream_decoder_init_ogg_stream], ++ have_libFLAC=yes, have_libFLAC=no, [$FLAC_LIBS $OGG_LIBS]) ++ ++ if test "x$have_libFLAC" = xyes; then ++ FLAC_LIBS="-lFLAC $FLAC_LIBS $OGG_LIBS" ++ else ++ dnl Check for libFLAC prior to 1.1.3 ++ AC_CHECK_LIB(FLAC, [FLAC__stream_decoder_process_single], ++ [have_libFLAC=yes; FLAC_LIBS="-lFLAC $FLAC_LIBS"], ++ AC_MSG_WARN([libFLAC missing]) ++ have_libFLAC=no, [$FLAC_LIBS] ++ ) ++ ++ AC_CHECK_LIB(OggFLAC, [OggFLAC__stream_decoder_new], ++ [FLAC_LIBS="-lOggFLAC $FLAC_LIBS $OGG_LIBS"], ++ AC_MSG_WARN([libOggFLAC missing]) ++ have_libFLAC=no, [$FLAC_LIBS $OGG_LIBS] ++ ) ++ fi ++ + AC_CHECK_HEADER(FLAC/stream_decoder.h,, + AC_MSG_WARN(libFLAC headers missing) + have_libFLAC=no,[ ]) +--- old/vorbis-tools-1.1.1/ogg123/flac_format.c 2005-06-03 11:15:09.000000000 +0100 ++++ vorbis-tools-1.1.1/ogg123/flac_format.c 2007-04-07 17:25:14.000000000 +0100 +@@ -20,18 +20,26 @@ + #include + #include + #include +-#include ++#include + #include + #include "audio.h" + #include "format.h" + #include "i18n.h" ++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8) ++#define NEED_EASYFLAC 1 ++#endif ++#if NEED_EASYFLAC + #include "easyflac.h" ++#endif + #include "vorbis_comments.h" + +-#define DEFAULT_FLAC_FRAME_SIZE 4608 +- + typedef struct { ++#if NEED_EASYFLAC + EasyFLAC__StreamDecoder *decoder; ++#else ++ FLAC__StreamDecoder *decoder; ++ int is_oggflac; ++#endif + short channels; + int rate; + int bits_per_sample; +@@ -67,10 +75,18 @@ + + + /* Private functions declarations */ +-FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data); +-FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); +-void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); +-void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); ++#if NEED_EASYFLAC ++static FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data); ++static FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); ++static void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); ++static void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); ++#else ++static FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); ++static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); ++static void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); ++static void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); ++static FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data); ++#endif + + void resize_buffer(flac_private_t *flac, int newchannels, int newsamples); + /*void copy_comments (vorbis_comment *v_comments, FLAC__StreamMetadata_VorbisComment *f_comments);*/ +@@ -155,6 +171,7 @@ + private->buf_start = 0; + + /* Setup FLAC decoder */ ++#if NEED_EASYFLAC + if (oggflac_can_decode(source)) { + decoder->format = &oggflac_format; + private->decoder = EasyFLAC__stream_decoder_new(1); +@@ -172,13 +189,40 @@ + EasyFLAC__set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_STREAMINFO); + EasyFLAC__set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT); + EasyFLAC__init(private->decoder); ++#else ++ if (oggflac_can_decode(source)) { ++ private->is_oggflac = 1; ++ decoder->format = &oggflac_format; ++ } else { ++ private->is_oggflac = 0; ++ decoder->format = &flac_format; ++ } ++ private->decoder = FLAC__stream_decoder_new(); ++ ++ FLAC__stream_decoder_set_md5_checking(private->decoder, false); ++ FLAC__stream_decoder_set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_STREAMINFO); ++ FLAC__stream_decoder_set_metadata_respond(private->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT); ++ /*FLAC__stream_decoder_init(private->decoder);*/ ++ if(private->is_oggflac) ++ FLAC__stream_decoder_init_ogg_stream(private->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, decoder); ++ else ++ FLAC__stream_decoder_init_stream(private->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, decoder); ++#endif + + /* Callback will set the total samples and sample rate */ ++#if NEED_EASYFLAC + EasyFLAC__process_until_end_of_metadata(private->decoder); ++#else ++ FLAC__stream_decoder_process_until_end_of_metadata(private->decoder); ++#endif + + /* Callback will set the number of channels and resize the + audio buffer */ ++#if NEED_EASYFLAC + EasyFLAC__process_single(private->decoder); ++#else ++ FLAC__stream_decoder_process_single(private->decoder); ++#endif + + /* FLAC API returns signed samples on all streams */ + decoder->actual_fmt.signed_sample = 1; +@@ -241,11 +285,19 @@ + realsamples += copy; + } + else if (!priv->eos) { ++#if NEED_EASYFLAC + ret = EasyFLAC__process_single(priv->decoder); + if (!ret || + EasyFLAC__get_state(priv->decoder) + == FLAC__STREAM_DECODER_END_OF_STREAM) + priv->eos = 1; /* Bail out! */ ++#else ++ ret = FLAC__stream_decoder_process_single(priv->decoder); ++ if (!ret || ++ FLAC__stream_decoder_get_state(priv->decoder) ++ == FLAC__STREAM_DECODER_END_OF_STREAM) ++ priv->eos = 1; /* Bail out! */ ++#endif + } else + break; + } +@@ -311,8 +363,13 @@ + free(priv->buf[i]); + + free(priv->buf); ++#if NEED_EASYFLAC + EasyFLAC__finish(priv->decoder); + EasyFLAC__stream_decoder_delete(priv->decoder); ++#else ++ FLAC__stream_decoder_finish(priv->decoder); ++ FLAC__stream_decoder_delete(priv->decoder); ++#endif + + free(decoder->private); + free(decoder); +@@ -342,7 +399,11 @@ + + + ++#if NEED_EASYFLAC + FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data) ++#else ++FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) ++#endif + { + decoder_t *e_decoder = client_data; + flac_private_t *priv = e_decoder->private; +@@ -363,7 +424,11 @@ + } + + ++#if NEED_EASYFLAC + FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++#else ++FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++#endif + { + decoder_t *e_decoder = client_data; + flac_private_t *priv = e_decoder->private; +@@ -389,7 +454,11 @@ + } + + ++#if NEED_EASYFLAC + void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++#else ++void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++#endif + { + decoder_t *e_decoder = client_data; + flac_private_t *priv = e_decoder->private; +@@ -409,12 +478,26 @@ + } + + ++#if NEED_EASYFLAC + void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++#else ++void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++#endif + { + + + } + ++#if !NEED_EASYFLAC ++FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data) ++{ ++ decoder_t *e_decoder = client_data; ++ flac_private_t *priv = e_decoder->private; ++ ++ return priv->eos; ++} ++#endif ++ + + void resize_buffer(flac_private_t *flac, int newchannels, int newsamples) + { +@@ -457,7 +540,11 @@ + + + ++#if NEED_EASYFLAC + if (EasyFLAC__is_oggflac(priv->decoder)) ++#else ++ if (priv->is_oggflac) ++#endif + cb->printf_metadata(decoder->callback_arg, 2, + _("Ogg FLAC stream: %d bits, %d channel, %ld Hz"), + priv->bits_per_sample, +--- old/vorbis-tools-1.1.1/ogg123/easyflac.c 2005-06-03 11:15:09.000000000 +0100 ++++ vorbis-tools-1.1.1/ogg123/easyflac.c 2007-04-07 17:25:26.000000000 +0100 +@@ -33,10 +33,12 @@ + * + */ + ++#include ++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8) ++ + #include + #include "easyflac.h" + +- + FLAC__bool EasyFLAC__is_oggflac(EasyFLAC__StreamDecoder *decoder) + { + return decoder->is_oggflac; +@@ -373,3 +375,5 @@ + else + return FLAC__stream_decoder_process_until_end_of_stream(decoder->flac); + } ++ ++#endif +--- old/vorbis-tools-1.1.1/oggenc/flac.c 2005-06-03 11:15:10.000000000 +0100 ++++ vorbis-tools-1.1.1/oggenc/flac.c 2007-04-07 18:17:27.000000000 +0100 +@@ -20,15 +20,25 @@ + #include "platform.h" + #include "resample.h" + +-#define DEFAULT_FLAC_FRAME_SIZE 4608 ++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8) ++#define NEED_EASYFLAC 1 ++#endif ++ ++#if NEED_EASYFLAC ++static FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data); ++static FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); ++static void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); ++static void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); ++#else ++static FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data); ++static FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); ++static void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); ++static void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); ++static FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data); ++#endif + +-FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data); +-FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data); +-void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data); +-void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data); +- +-void resize_buffer(flacfile *flac, int newchannels, int newsamples); +-void copy_comments (vorbis_comment *v_comments, FLAC__StreamMetadata_VorbisComment *f_comments); ++static void resize_buffer(flacfile *flac, int newchannels, int newsamples); ++static void copy_comments (vorbis_comment *v_comments, FLAC__StreamMetadata_VorbisComment *f_comments); + + + int flac_id(unsigned char *buf, int len) +@@ -76,6 +86,7 @@ + flac->in = in; + + /* Setup FLAC decoder */ ++#if NEED_EASYFLAC + flac->decoder = EasyFLAC__stream_decoder_new(oggflac_id(oldbuf, buflen)); + EasyFLAC__set_client_data(flac->decoder, flac); + EasyFLAC__set_read_callback(flac->decoder, &easyflac_read_callback); +@@ -85,14 +96,32 @@ + EasyFLAC__set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_STREAMINFO); + EasyFLAC__set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT); + EasyFLAC__init(flac->decoder); ++#else ++ flac->decoder = FLAC__stream_decoder_new(); ++ FLAC__stream_decoder_set_md5_checking(flac->decoder, false); ++ FLAC__stream_decoder_set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_STREAMINFO); ++ FLAC__stream_decoder_set_metadata_respond(flac->decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT); ++ if(oggflac_id(oldbuf, buflen)) ++ FLAC__stream_decoder_init_ogg_stream(flac->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, flac); ++ else ++ FLAC__stream_decoder_init_stream(flac->decoder, read_callback, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, eof_callback, write_callback, metadata_callback, error_callback, flac); ++#endif + + /* Callback will set the total samples and sample rate */ ++#if NEED_EASYFLAC + EasyFLAC__process_until_end_of_metadata(flac->decoder); ++#else ++ FLAC__stream_decoder_process_until_end_of_metadata(flac->decoder); ++#endif + + /* Callback will set the number of channels and resize the + audio buffer */ ++#if NEED_EASYFLAC + EasyFLAC__process_single(flac->decoder); +- ++#else ++ FLAC__stream_decoder_process_single(flac->decoder); ++#endif ++ + /* Copy format info for caller */ + opt->rate = flac->rate; + opt->channels = flac->channels; +@@ -133,11 +162,19 @@ + } + else if (!flac->eos) + { ++#if NEED_EASYFLAC + ret = EasyFLAC__process_single(flac->decoder); + if (!ret || + EasyFLAC__get_state(flac->decoder) + == FLAC__STREAM_DECODER_END_OF_STREAM) + flac->eos = 1; /* Bail out! */ ++#else ++ ret = FLAC__stream_decoder_process_single(flac->decoder); ++ if (!ret || ++ FLAC__stream_decoder_get_state(flac->decoder) ++ == FLAC__STREAM_DECODER_END_OF_STREAM) ++ flac->eos = 1; /* Bail out! */ ++#endif + } else + break; + } +@@ -157,13 +194,22 @@ + free(flac->buf); + free(flac->oldbuf); + free(flac->comments); ++#if NEED_EASYFLAC + EasyFLAC__finish(flac->decoder); + EasyFLAC__stream_decoder_delete(flac->decoder); ++#else ++ FLAC__stream_decoder_finish(flac->decoder); ++ FLAC__stream_decoder_delete(flac->decoder); ++#endif + free(flac); + } + + ++#if NEED_EASYFLAC + FLAC__StreamDecoderReadStatus easyflac_read_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__byte buffer[], unsigned *bytes, void *client_data) ++#else ++FLAC__StreamDecoderReadStatus read_callback(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) ++#endif + { + flacfile *flac = (flacfile *) client_data; + int i = 0; +@@ -200,7 +246,11 @@ + return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + } + ++#if NEED_EASYFLAC + FLAC__StreamDecoderWriteStatus easyflac_write_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++#else ++FLAC__StreamDecoderWriteStatus write_callback(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++#endif + { + flacfile *flac = (flacfile *) client_data; + int samples = frame->header.blocksize; +@@ -221,7 +271,11 @@ + return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; + } + ++#if NEED_EASYFLAC + void easyflac_metadata_callback(const EasyFLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++#else ++void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++#endif + { + flacfile *flac = (flacfile *) client_data; + +@@ -240,11 +294,24 @@ + } + } + ++#if NEED_EASYFLAC + void easyflac_error_callback(const EasyFLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++#else ++void error_callback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++#endif + { +- flacfile *flac = (flacfile *) client_data; ++ flacfile *flac = (flacfile *) client_data; ++ ++} ++ ++#if !NEED_EASYFLAC ++FLAC__bool eof_callback(const FLAC__StreamDecoder *decoder, void *client_data) ++{ ++ flacfile *flac = (flacfile *) client_data; + ++ return feof(flac->in)? true : false; + } ++#endif + + + void resize_buffer(flacfile *flac, int newchannels, int newsamples) +--- old/vorbis-tools-1.1.1/oggenc/easyflac.c 2005-06-03 11:15:10.000000000 +0100 ++++ vorbis-tools-1.1.1/oggenc/easyflac.c 2007-04-07 17:25:56.000000000 +0100 +@@ -33,6 +33,9 @@ + * + */ + ++#include ++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8) ++ + #include + #include "easyflac.h" + +@@ -373,3 +376,5 @@ + else + return FLAC__stream_decoder_process_until_end_of_stream(decoder->flac); + } ++ ++#endif +--- old/vorbis-tools-1.1.1/oggenc/flac.h 2005-06-03 11:15:10.000000000 +0100 ++++ vorbis-tools-1.1.1/oggenc/flac.h 2007-04-07 17:31:53.000000000 +0100 +@@ -5,10 +5,21 @@ + #include "encode.h" + #include "audio.h" + #include ++#include ++#if !defined(FLAC_API_VERSION_CURRENT) || (FLAC_API_VERSION_CURRENT < 8) ++#define NEED_EASYFLAC 1 ++#endif ++#if NEED_EASYFLAC ++#include + #include "easyflac.h" ++#endif + + typedef struct { ++#if NEED_EASYFLAC + EasyFLAC__StreamDecoder *decoder; ++#else ++ FLAC__StreamDecoder *decoder; ++#endif + short channels; + int rate; + long totalsamples; /* per channel, of course */ diff --git a/abs/extra/vte/PKGBUILD b/abs/extra/vte/PKGBUILD new file mode 100644 index 0000000..569db33 --- /dev/null +++ b/abs/extra/vte/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 16789 2008-10-22 03:33:22Z allan $ +# Maintainer: Jan de Groot + +pkgname=vte +pkgver=0.17.4 +pkgrel=2 +pkgdesc="VTE - Virtual Terminal Emulator" +arch=(i686 x86_64) +license=('LGPL') +depends=('gtk2>=2.11.3' 'libsm') +options=('!libtool') +makedepends=('pygtk>=2.11.0' 'pkgconfig' 'intltool') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.17/vte-${pkgver}.tar.bz2 + vte-0.16.0-reaper-python-bindings.patch) +md5sums=('ec6cb2668db7146eae7cfc48af98f3ed' 'efe29cd40635e73fa3152f77d91a4f39') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + patch -Np1 -i ${startdir}/src/vte-0.16.0-reaper-python-bindings.patch || return 1 + ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/vte \ + --localstatedir=/var --disable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 +} diff --git a/abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch b/abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch new file mode 100644 index 0000000..47d6ce6 --- /dev/null +++ b/abs/extra/vte/vte-0.16.0-reaper-python-bindings.patch @@ -0,0 +1,62 @@ +diff -NarU 3 vte-0.16.0.orig/python/vte.defs vte-0.16.0/python/vte.defs +--- vte-0.16.0.orig/python/vte.defs 2007-02-26 22:05:02.000000000 +0100 ++++ vte-0.16.0/python/vte.defs 2007-03-14 20:44:55.000000000 +0100 +@@ -7,6 +7,14 @@ + (gtype-id "VTE_TYPE_TERMINAL") + ) + ++(define-object Reaper ++ (in-module "Vte") ++ (parent "GObject") ++ (c-name "VteReaper") ++ (gtype-id "VTE_TYPE_REAPER") ++) ++ ++ + ;; Enumerations and flags ... + + (define-enum TerminalEraseBinding +@@ -701,4 +709,14 @@ + (return-type "const-char*") + ) + ++;; From ../src/reaper.h ++(define-function vte_reaper_get_type ++ (c-name "vte_reaper_get_type") ++ (return-type "GtkType") ++) ++ ++(define-function reaper_get ++ (c-name "vte_reaper_get") ++ (return-type "VteReaper*") ++) + +diff -NarU 3 vte-0.16.0.orig/python/vte.override vte-0.16.0/python/vte.override +--- vte-0.16.0.orig/python/vte.override 2007-02-26 22:05:02.000000000 +0100 ++++ vte-0.16.0/python/vte.override 2007-03-14 20:46:12.000000000 +0100 +@@ -7,12 +7,14 @@ + #include + #include + #include "../src/vte.h" ++#include "../src/reaper.h" + %% + modulename vte + %% + import gtk.gdk.Pixbuf as PyGdkPixbuf_Type + import gtk.MenuShell as PyGtkMenuShell_Type + import gtk.Widget as PyGtkWidget_Type ++import gobject.GObject as PyGObject_Type + %% + override vte_terminal_feed kwargs + static PyObject * +diff -NarU 3 vte-0.16.0.orig/python/vtemodule.c vte-0.16.0/python/vtemodule.c +--- vte-0.16.0.orig/python/vtemodule.c 2007-02-26 22:05:02.000000000 +0100 ++++ vte-0.16.0/python/vtemodule.c 2007-03-14 20:47:12.000000000 +0100 +@@ -25,6 +25,7 @@ + #include + #include + #include "../src/vte.h" ++#include "../src/reaper.h" + + extern void pyvte_register_classes(PyObject * d); + extern PyMethodDef pyvte_functions[]; diff --git a/abs/extra/wavpack/PKGBUILD b/abs/extra/wavpack/PKGBUILD new file mode 100644 index 0000000..c0ab01a --- /dev/null +++ b/abs/extra/wavpack/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 3456 2008-06-22 19:29:25Z jgc $ +# Maintainer: Jan de Groot +# Contributor: Shinlun Hsieh +# Contributor: Michal Hybner +pkgname=wavpack +pkgver=4.50.0 +pkgrel=1 +pkgdesc="A completely open audio compression format providing lossless, high-quality lossy, and a unique hybrid compression mode" +arch=('i686' 'x86_64') +url="http://www.wavpack.com/" +license=('custom') +depends=('glibc') +options=('!libtool') +source=(http://www.wavpack.com/${pkgname}-${pkgver}.tar.bz2) +md5sums=('9cf854fc2e5757f6534a3a231ec6bfbc') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr --enable-mmx --disable-static || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 license.txt ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + rm -f ${startdir}/pkg/usr/lib/*.a +} diff --git a/abs/extra/webmin/PKGBUILD b/abs/extra/webmin/PKGBUILD new file mode 100644 index 0000000..1ce083e --- /dev/null +++ b/abs/extra/webmin/PKGBUILD @@ -0,0 +1,222 @@ +# $Id: PKGBUILD 18672 2008-11-08 15:27:08Z tpowa $ +# Maintainer: Tobias Powalowski +pkgname=webmin +pkgver=1.441 +pkgrel=2 +pkgdesc="a web-based interface for system administration" +arch=(i686 x86_64) +license=('custom:webmin') +url="http://www.webmin.com/" +depends=('perl') +makedepends=('perl-net-ssleay') +backup=('etc/webmin/miniserv.conf' 'etc/webmin/miniserv.users' 'etc/webmin/config' 'etc/webmin/webmin.cats' \ +'etc/webmin/pacman/config' \ +'etc/webmin/at/config' \ +'etc/webmin/acl/config' \ +'etc/webmin/lvm/config' \ +'etc/webmin/net/config' \ +'etc/webmin/nis/config' \ +'etc/webmin/pam/config' \ +'etc/webmin/cron/config' \ +'etc/webmin/file/config' \ +'etc/webmin/grub/config' \ +'etc/webmin/init/config' \ +'etc/webmin/ipfw/config' \ +'etc/webmin/lilo/config' \ +'etc/webmin/proc/config' \ +'etc/webmin/raid/config' \ +'etc/webmin/spam/config' \ +'etc/webmin/sshd/config' \ +'etc/webmin/time/config' \ +'etc/webmin/cluster-passwd/config' \ +'etc/webmin/software/config' \ +'etc/webmin/webminlog/config' \ +'etc/webmin/cluster-webmin/config' \ +'etc/webmin/bind8/config' \ +'etc/webmin/dhcpd/config' \ +'etc/webmin/fdisk/config' \ +'etc/webmin/mount/config' \ +'etc/webmin/mysql/config' \ +'etc/webmin/quota/config' \ +'etc/webmin/samba/config' \ +'etc/webmin/shell/config' \ +'etc/webmin/squid/config' \ +'etc/webmin/adsl-client/config' \ +'etc/webmin/servers/config' \ +'etc/webmin/cluster-shell/config' \ +'etc/webmin/bandwidth/config' \ +'etc/webmin/ppp-client/config' \ +'etc/webmin/lpadmin/config' \ +'etc/webmin/apache/config' \ +'etc/webmin/firewall/config' \ +'etc/webmin/stunnel/config' \ +'etc/webmin/burner/config' \ +'etc/webmin/exports/config' \ +'etc/webmin/backup-config/config' \ +'etc/webmin/custom/config' \ +'etc/webmin/htaccess-htpasswd/config' \ +'etc/webmin/logrotate/config' \ +'etc/webmin/format/config' \ +'etc/webmin/fsdump/config' \ +'etc/webmin/passwd/config' \ +'etc/webmin/cluster-useradmin/config' \ +'etc/webmin/cluster-software/config' \ +'etc/webmin/cluster-copy/config' \ +'etc/webmin/cluster-cron/config' \ +'etc/webmin/telnet/config' \ +'etc/webmin/status/config' \ +'etc/webmin/syslog/config' \ +'etc/webmin/updown/config' \ +'etc/webmin/usermin/config' \ +'etc/webmin/webmin/config' \ +'etc/webmin/xinetd/config' \ +'etc/webmin/openslp/config' \ +'etc/webmin/procmail/config' \ +'etc/webmin/fetchmail/config' \ +'etc/webmin/postgresql/config' \ +'etc/webmin/useradmin/config' \ +'etc/webmin/mailboxes/config' \ +'etc/webmin/inittab/config' \ +'etc/webmin/change-user/config' \ +'etc/webmin/postfix/config' \ +'etc/webmin/proftpd/config' \ +'etc/webmin/pserver/config' \ +'etc/webmin/dnsadmin/config' ) +install=webmin.install +source=(http://downloads.sourceforge.net/sourceforge/webadmin/$pkgname-$pkgver.tar.gz + ftp://ftp.archlinux.org/other/webmin/webmin-config.tar.bz2 + ftp://ftp.archlinux.org/other/webmin/webmin-pacman.tar.bz2 + webmin.rc + run) + +build() { + # NOTE: USE --asroot build option to avoid fakeroot error! + cd $startdir/src/$pkgname-$pkgver + # add patches from webmin.com + #for i in ../*.wbm + #do tar xvf $i + #done + #for i in ../*.wbt + #do tar xvf $i + #done + # delete stuff that's not needed + rm -f mount/freebsd-mounts* + rm -f mount/openbsd-mounts* + rm -f mount/macos-mounts* + + # remove modules we do not support + rm -rf {bacula-backup,ldap-useradmin,mon,sentry,frox,jabber,majordomo,qmail,sendmail,sarg,wuftpd,webalizer,inetd,ipsec,pap,pptp-client,pptp-server,shorewall,smart-status,vgetty,heartbeat,cfengine,cpan,sgiexports,hpuxexports,qmailadmin,bsdexports,dfsadmin} + + #remove config files from other distros + rm -f $(find . ! -name 'config-generic-linux' ! -name 'config-\*-linux' ! -name 'config-lib.pl' -name 'config-*') + + # remove caldera theme + rm -rf caldera + + # remove init-scripts from other distros + rm webmin-gentoo-init + rm webmin-init + rm webmin-caldera-init + rm webmin-daemon + + # remove update stuff to avoid problems with updating webmin,modules and themes without pacman + rm -f webmin/{update.cgi,update.pl,update_sched.cgi,upgrade.cgi,edit_upgrade.cgi,install_mod.cgi,delete_mod.cgi,install_theme.cgi} + rm -f usermin/{upgrade.cgi,update.cgi,update.pl,edit_upgrade.cgi,install_mod.cgi,delete_mod.cgi,install_theme.cgi} + + # remove modules add because we don't want files installed without pacman control + rm -f webmin/{install_mod.cgi,delete_mod.cgi} + + # setting perl path + (find . -name '*.cgi' ; find . -name '*.pl') | perl perlpath.pl /usr/bin/perl - + + # create dirs + mkdir -p $startdir/pkg/opt/webmin + mkdir -p $startdir/pkg/var/log/webmin + mkdir -p $startdir/pkg/etc/webmin + + # install pam stuff + install -D -m 644 webmin-pam $startdir/pkg/etc/pam.d/webmin + + # remove other distros and add only Archlinux don't change next line else it will not work! + rm os_list.txt + echo 'Archlinux Any version generic-linux * -d "/etc/pacman.d"' >> os_list.txt + + # Add rc.conf support to boot and shutdown menu and lock editing of this module + cd init/ + sed -i -e 's:^local_down=.*:local_down=Archlinux RC.CONF,3,None:g' $(find . ! -name 'config.info.pl' -name 'config.info*') + sed -i -e 's:^local_script=.*:local_script=Archlinux RC.LOCAL,3,None:g' $(find . ! -name 'config.info.pl' -name 'config.info*') + sed -i -e 's:^index_downscript=.*:index_downscript=Archlinux RC.CONF:g' lang/* + sed -i -e 's:^index_script=.*:index_script=Archlinux RC.LOCAL:g' lang/* + sed -i -e 's:^noconfig=0:noconfig=1:g' defaultacl + + # Add pacman menu + cd $startdir/src/$pkgname-$pkgver + cp -rf custom/ pacman + cp -rf mscstyle3/custom mscstyle3/pacman + sed -i -e 's:^noconfig=0:noconfig=1:g' -e 's:^edit=1:edit=0:g' pacman/defaultacl + sed -i -e '/desc/d' -e '/longdesc/d' pacman/module.info + sed -i -e 's:^name=Custom:name=Pacman:g' pacman/module.info + echo 'category=system' >> pacman/module.info + echo 'desc=Pacman' >> pacman/module.info + sed -i -e 's:^index_title=.*:index_title=Pacman:g' pacman/lang/* + + # copy stuff to right dirs + cd $startdir/src/$pkgname-$pkgver + cp -rp * $startdir/pkg/opt/webmin + cd $startdir/src/webmin-config + cp -rfp * $startdir/pkg/opt/webmin + + # define parameters for setup.sh + config_dir=$startdir/pkg/etc/webmin + var_dir=$startdir/pkg/var/log/webmin + perl=/usr/bin/perl + autoos=1 + port=10000 + login=root + crypt="XXX" + ssl=1 + atboot=0 + nostart=1 + nochown=1 + autothird=1 + nouninstall=1 + noperlpath=1 + atbootyn=n + tempdir=$startdir/pkg/tmp + export config_dir var_dir perl autoos port tempdir login crypt ssl nochown autothird nouninstall nostart noperlpath atbootyn + + # Fix setup.sh + sed -i -e 's:read atbootyn::g' -e 's:exit 13::g' $startdir/pkg/opt/webmin/setup.sh + $startdir/pkg/opt/webmin/setup.sh + + # Fixup the config files to use their real locations + sed -i 's:^pidfile=.*$:pidfile=/var/run/webmin.pid:' $startdir/pkg/etc/webmin/miniserv.conf + find $startdir/pkg/etc/webmin -type f -exec sed -i "s:$startdir/pkg::g" {} \; + + # make it only accessible by localhost and private networks + echo 'allow=127.0.0.1 192.168. 172.16. 10.' >> $startdir/pkg/etc/webmin/miniserv.conf + + #Let not fork this bad boy. We need to control it w/ runit. + echo 'nofork=1' >> $startdir/pkg/etc/webmin/miniserv.conf + + # install pacman menu + cd $startdir/src/webmin-pacman/config + cp -rfp * $startdir/pkg/etc/webmin/pacman + + #install rc file + install -D -m 755 $startdir/src/webmin.rc $startdir/pkg/etc/rc.d/webmin + + # delete temp dir + rm -r $startdir/pkg/tmp + # install license + install -m 644 -D $startdir/src/$pkgname-$pkgver/LICENCE $startdir/pkg/usr/share/licenses/webmin/LICENCE + + #runit + mkdir -p $startdir/pkg/etc/sv/webmin/supervise + install -D -m 755 $startdir/src/run $startdir/pkg/etc/sv/webmin +} +md5sums=('b841af1b1a9f78795814ce8211e6ad81' + 'da6bea412a5be8cf82a813078fec5847' + '4cf1139093ea59044be42a4f173fb8aa' + '0673e51af0e81418b4a6c1e205f7e5cd' + 'bc578b249e2090deb84119a626c53c48') diff --git a/abs/extra/webmin/run b/abs/extra/webmin/run new file mode 100644 index 0000000..659c6cd --- /dev/null +++ b/abs/extra/webmin/run @@ -0,0 +1,11 @@ +#!/bin/sh +echo Starting Webmin server in /opt/webmin +trap '' 1 +LANG= +export LANG +#PERLIO=:raw +unset PERLIO +export PERLIO +PERLLIB=/opt/webmin +export PERLLIB +exec '/opt/webmin/miniserv.pl' /etc/webmin/miniserv.conf diff --git a/abs/extra/webmin/webmin-config.tar.bz2 b/abs/extra/webmin/webmin-config.tar.bz2 new file mode 100644 index 0000000..a51b43d Binary files /dev/null and b/abs/extra/webmin/webmin-config.tar.bz2 differ diff --git a/abs/extra/webmin/webmin-pacman.tar.bz2 b/abs/extra/webmin/webmin-pacman.tar.bz2 new file mode 100644 index 0000000..548acc2 Binary files /dev/null and b/abs/extra/webmin/webmin-pacman.tar.bz2 differ diff --git a/abs/extra/webmin/webmin.install b/abs/extra/webmin/webmin.install new file mode 100644 index 0000000..ce5da6c --- /dev/null +++ b/abs/extra/webmin/webmin.install @@ -0,0 +1,39 @@ +# arg 1: the new package version +post_install() { + local crypt=$(grep "^root:" ${ROOT}/etc/shadow | cut -f 2 -d :) + crypt=${crypt//\\/\\\\} + crypt=${crypt//\//\\\/} + sed -i "s/root:XXX/root:${crypt}/" /etc/webmin/miniserv.users + +cat << EOF +Note: +==> It is not allowed to install 3rd party modules, or delete existing modules. +==> Please write your own PKGBUILDS for 3rd party modules and additional themes. +Setup: +==> To make webmin start at boot time, add webmin to rc.conf daemons +==> Point your web browser to http://localhost:10000 to use webmin. +==> The access is restricted to localhost, if you want to connect from other locations +==> change /etc/webmin/miniserv.conf to something like that: allow=127.0.0.1 +==> If you want to have ssl encryption please install 'perl-net-ssleay' additional. +EOF +# fix man module + cd /opt/webmin/man + for i in $(find . -name '*.gz'); do + gzip -df $i + done +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 +} + +pre_remove() { + # uninstall unzipped files + rm -r /opt/webmin/man +} + +op=$1 +shift +$op $* diff --git a/abs/extra/webmin/webmin.rc b/abs/extra/webmin/webmin.rc new file mode 100644 index 0000000..ee83fbe --- /dev/null +++ b/abs/extra/webmin/webmin.rc @@ -0,0 +1,44 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +start=/etc/webmin/start +stop=/etc/webmin/stop +lockfile=/var/lock/webmin + +case "$1" in +'start') + stat_busy "Starting Webmin daemon" + $start >/dev/null 2>&1 /dev/null 2>&1 + stat_done + else + stat_fail +fi +;; + +'stop') + stat_busy "Stopping Webmin daemon" + $stop >/dev/null 2>&1 +# Contributor: Judd Vinet +pkgname=windowmaker +pkgver=0.92.0 +pkgrel=5 +pkgdesc="An X11 window manager with a NEXTSTEP look and feel" +arch=(i686 x86_64) +url="http://www.windowmaker.info/" +license=('GPL' 'custom') +depends=('libxinerama' 'libpng' 'libxpm' 'libxft' 'libtiff' 'giflib') +options=('!libtool') +source=(http://windowmaker.info/pub/source/release/WindowMaker-$pkgver.tar.bz2 windowmaker-gcc4.patch.tar.bz2) +md5sums=('aaac5421b686ed2d3e6ab65229c98097' 'd9fb6a9c255f5c03d0e0c83dc3cd2320') + +build() { + cd $srcdir/WindowMaker-$pkgver + patch -Np1 -i ../windowmaker-gcc4.patch || return 1 + libtoolize --force --copy || return 1 + aclocal || return 1 + autoconf || return 1 + automake || return 1 + [ -z "$LINGUAS" ] && export LINGUAS="`ls po/*.po | sed 's:po/\(.*\)\.po$:\1:'`" + ./configure --prefix=/usr --sysconfdir=/etc \ + --with-gnustepdir=/usr/share/GNUstep --with-nlsdir=/usr/share/locale \ + --enable-xinerama || return 1 + make || return 1 + make DESTDIR=$pkgdir install || return 1 + install -D -m644 COPYING.WTFPL $pkgdir/usr/share/licenses/$pkgname/COPYING.WTFPL +} + diff --git a/abs/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2 b/abs/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2 new file mode 100644 index 0000000..fae12a9 Binary files /dev/null and b/abs/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2 differ diff --git a/abs/extra/wireshark/PKGBUILD b/abs/extra/wireshark/PKGBUILD new file mode 100644 index 0000000..4b7a88c --- /dev/null +++ b/abs/extra/wireshark/PKGBUILD @@ -0,0 +1,26 @@ +# $Id: PKGBUILD 34765 2009-04-11 14:17:32Z hugo $ +# Maintainer: Hugo Doria + +pkgname=wireshark +pkgver=1.2.0 +pkgrel=3 +pkgdesc="A free network protocol analyzer for Unix/Linux and Windows" +arch=('i686' 'x86_64') +license=('GPL2') +depends=('gtk2>=2.14.5' 'heimdal>=1.2.1' 'libpcap>=1.0.0' 'bash' 'gnutls>=2.4.1' 'libcap>=2.16') +makedepends=('bison' 'flex') +url="http://www.wireshark.org/" +replaces=('ethereal') +options=(!libtool) +source=(http://www.wireshark.org/download/src/${pkgname}-${pkgver}.tar.gz wireshark.desktop wireshark.png) + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + export CFLAGS="-fno-unit-at-a-time ${CFLAGS}" + ./configure --prefix=/usr --with-ssl || return 1 + make all || return 1 + make DESTDIR=${pkgdir} install || return 1 + + install -Dm644 ${srcdir}/wireshark.png ${pkgdir}/usr/share/icons/wireshark.png + install -Dm644 ${srcdir}/wireshark.desktop ${pkgdir}/usr/share/applications/wireshark.desktop +} diff --git a/abs/extra/wireshark/wireshark.desktop b/abs/extra/wireshark/wireshark.desktop new file mode 100644 index 0000000..f4317f6 --- /dev/null +++ b/abs/extra/wireshark/wireshark.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +GenericName=Wireshark +Comment=Network protocol analyzer +Name=wireshark +Exec=wireshark +Icon=/usr/share/icons/wireshark.png +Type=Application +Terminal=false +Categories=Application;Network; diff --git a/abs/extra/wireshark/wireshark.png b/abs/extra/wireshark/wireshark.png new file mode 100644 index 0000000..4e40263 Binary files /dev/null and b/abs/extra/wireshark/wireshark.png differ diff --git a/abs/extra/wol/PKGBUILD b/abs/extra/wol/PKGBUILD new file mode 100755 index 0000000..a9bb4eb --- /dev/null +++ b/abs/extra/wol/PKGBUILD @@ -0,0 +1,19 @@ +# Contributor: Markus Volkmann +pkgname=wol +pkgver=0.7.1 +pkgrel=3 +pkgdesc="wol implements Wake On LAN functionality in a small program. It wakes up hardware that is Magic Packet compliant." +license="GPL" +url="http://ahh.sourceforge.net/wol/" +arch=('i686') +source=(http://easynews.dl.sourceforge.net/sourceforge/ahh/wol-$pkgver.tar.gz wakeonlan.sh) +md5sums=('c2fa9d7e771134ac8c89d56b8197d4ca') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install + install -m755 $startdir/src/wakeonlan.sh $startdir/pkg/usr/bin/wakeonlan.sh +} + diff --git a/abs/extra/wol/wakeonlan.sh b/abs/extra/wol/wakeonlan.sh new file mode 100755 index 0000000..f87dd34 --- /dev/null +++ b/abs/extra/wol/wakeonlan.sh @@ -0,0 +1,10 @@ +#!/bin/bash +DIR="/data/srv/hobbit/var/hostdata/$1" +FILE=`ls -t --group-directories-first $DIR|tail -n 1` +for mac in `grep HW "$DIR/$FILE" |awk '{ print $5 } '` +do + /usr/bin/wol -v $mac +done + + + diff --git a/abs/extra/wxgtk/ChangeLog b/abs/extra/wxgtk/ChangeLog new file mode 100644 index 0000000..03e9f96 --- /dev/null +++ b/abs/extra/wxgtk/ChangeLog @@ -0,0 +1,18 @@ +2009-03-06 Eric Belanger + + * wxgtk 2.8.9.2-1 + * Upstream update + * Switched to wxpython source tarball + +2008-09-26 Eric Belanger + + * wxgtk 2.8.9-1 + * Upstream update + * Added mediactrl support (close FS#11220) + +2008-07-05 Eric Belanger + + * wxgtk 2.8.8-1 + * Upstream update + * Enabled gnomeprint - needed for wxpython to build + * Added ChangeLog diff --git a/abs/extra/wxgtk/PKGBUILD b/abs/extra/wxgtk/PKGBUILD new file mode 100644 index 0000000..d98ac43 --- /dev/null +++ b/abs/extra/wxgtk/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 29177 2009-03-06 09:02:47Z eric $ +# Maintainer: Eric Belanger +# Original Contributor: Tom Newsom +# New Version - Contributor: Bob Finch +# with help from J. Santiago Hirschfeld aka Angelus + +pkgname=wxgtk +pkgver=2.8.9.2 +pkgrel=2 +pkgdesc="wxGTK - GTK+ implementation of wxWidgets API for GUI" +arch=('i686' 'x86_64') +url="http://wxwidgets.org" +license=('custom:wxWindows') +depends=('gtk2>=2.12.11' 'mesa' 'libjpeg') +#makedepends=('libgnomeprintui') +#source=(http://downloads.sourceforge.net/wxwindows/wxGTK-${pkgver}.tar.bz2) +source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2) +md5sums=('e3d89746af98b9279e4ff39a57f6dc63') +sha1sums=('a0d58d8b9606d04a35b9853da15eb7dfb08d5637') + +build() { + cd ${srcdir}/wxPython-src-${pkgver} + ./configure --prefix=/usr --libdir=/usr/lib --with-gtk=2 --with-opengl --enable-unicode \ + --enable-graphics_ctx --without-gnomeprint --disable-optimize || return 1 + make || return 1 + make -C locale allmo || return 1 + make DESTDIR=${pkgdir} install || return 1 + cd contrib/src + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + install -D -m644 ../../docs/licence.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 +} diff --git a/abs/extra/wxgtk/__changelog b/abs/extra/wxgtk/__changelog new file mode 100644 index 0000000..3bf8bed --- /dev/null +++ b/abs/extra/wxgtk/__changelog @@ -0,0 +1 @@ +remove libgnomeprint diff --git a/abs/extra/x11vnc/PKGBUILD b/abs/extra/x11vnc/PKGBUILD new file mode 100644 index 0000000..650f81e --- /dev/null +++ b/abs/extra/x11vnc/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: damir + +pkgname=x11vnc +pkgver=0.9.7 +pkgrel=2 +pkgdesc="a VNC server for real X displays" +arch=("i686" "x86_64") +license=("GPL2") +#source=(http://dl.sourceforge.net/sourceforge/libvncserver/$pkgname-$pkgver.tar.gz) +url="http://www.karlrunge.com/x11vnc/" +source=("http://x11vnc.sourceforge.net/dev/x11vnc-0.9.7.tar.gz") +depends=('openssl' 'libjpeg' 'zlib' 'libx11' 'libxtst' 'libxinerama' 'libxdamage' 'libxrandr' 'avahi') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure + make || return 1 + make prefix=$startdir/pkg/usr install || return 1 +} + +md5sums=('30a167577f657909b3355421e14e2ddb') diff --git a/abs/extra/xalan-java/PKGBUILD b/abs/extra/xalan-java/PKGBUILD new file mode 100644 index 0000000..634cb23 --- /dev/null +++ b/abs/extra/xalan-java/PKGBUILD @@ -0,0 +1,21 @@ +# Maintainer: Andreas Radke +# Maintainer: Jan de Groot +# Contributor: Hussam Al-Tayeb + +pkgname=xalan-java +pkgver=2.7.1 +pkgrel=2 +pkgdesc="XSLT processor for transforming XML documents into HTML, text, or other XML document types" +arch=('i686' 'x86_64') +license=('APACHE') +url="http://xml.apache.org/xalan-j" +depends=('xerces2-java') +source=(http://www.apache.org/dist/xml/xalan-j/xalan-j_${pkgver//./_}-bin-2jars.tar.gz) +md5sums=('3ccda39bcd08b780436dfd2f22fb23d5') + +build() { + cd ${srcdir}/xalan-j_${pkgver//./_} + install -m755 -d ${pkgdir}/usr/share/java + install -m644 xalan.jar ${pkgdir}/usr/share/java/ || return 1 + install -m644 xsltc.jar ${pkgdir}/usr/share/java/ || return 1 +} diff --git a/abs/extra/xautomation/PKGBUILD b/abs/extra/xautomation/PKGBUILD new file mode 100644 index 0000000..6151353 --- /dev/null +++ b/abs/extra/xautomation/PKGBUILD @@ -0,0 +1,18 @@ +# Contributor: raubkopierer + +pkgname=xautomation +pkgver=1.02 +pkgrel=2 +pkgdesc="Controls X from the command line for scripts, and do 'visual scraping' to find things on the screen." +url="http://hoopajoo.net/projects/xautomation.html" +arch=('i686' 'x86_64') +license=('GPL') +source=(http://hoopajoo.net/static/projects/$pkgname-$pkgver.tar.gz) +md5sums=('523198135f7cf7a5324189aef20ac48d') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/xdg-utils/PKGBUILD b/abs/extra/xdg-utils/PKGBUILD new file mode 100644 index 0000000..c707346 --- /dev/null +++ b/abs/extra/xdg-utils/PKGBUILD @@ -0,0 +1,19 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Jan de Groot + +pkgname=xdg-utils +pkgver=1.0.2 +pkgrel=1 +pkgdesc="Command line tools that assist applications with a variety of desktop integration tasks." +arch=(i686 x86_64) +url="http://portland.freedesktop.org/" +license=(MIT) +source=(http://portland.freedesktop.org/download/$pkgname-$pkgver.tgz) +md5sums=('348a5b91dc66426505022c74a64b2940') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install +} diff --git a/abs/extra/xe/PKGBUILD b/abs/extra/xe/PKGBUILD new file mode 100644 index 0000000..1ada156 --- /dev/null +++ b/abs/extra/xe/PKGBUILD @@ -0,0 +1,21 @@ +# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $ +# Maintainer: Cecil Watson + +pkgname=xe +pkgver=2.16.2 +pkgrel=1 +pkgdesc="A multi system emulator, that emulates many console and handheld video game systems." +arch=('i686' 'x86_64') +depends=('gtk2>=2.10.11') +url="http://www.xe-emulator.com" +source=('http://www.xe-emulator.com/files/xe-x86-32-bin.2.16.2.tar.bz2' 'http://www.xe-emulator.com/files/bios.zip') +install=xe.install +build() { + cd $startdir/src/xe-x86 + make + mkdir -p $startdir/pkg/usr/bin + mkdir -p $startdir/pkg/usr/lib/xe + mkdir -p $startdir/pkg/usr/lib/xe/bios + cp -rf xe modules rc manual.html $startdir/pkg/usr/lib/xe + cp -a ../bios/* $startdir/pkg/usr/lib/xe/bios +} diff --git a/abs/extra/xe/xe.install b/abs/extra/xe/xe.install new file mode 100644 index 0000000..d0dd63d --- /dev/null +++ b/abs/extra/xe/xe.install @@ -0,0 +1,18 @@ +# arg 1: the new package version +post_install() { + ln -s /usr/lib/xe/xe /usr/bin/xe +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + /bin/true +} + +# arg 1: the old package version +post_remove() { + rm -fr /usr/bin/xe +} + +op=$1 +shift +$op $* diff --git a/abs/extra/xerces2-java/PKGBUILD b/abs/extra/xerces2-java/PKGBUILD new file mode 100644 index 0000000..526115d --- /dev/null +++ b/abs/extra/xerces2-java/PKGBUILD @@ -0,0 +1,22 @@ +# Maintainer: Andreas Radke +# Maintainer: Jan de Groot + +pkgname=xerces2-java +pkgver=2.9.1 +pkgrel=2 +pkgdesc="High performance fully compliant Java XML parser" +arch=('i686' 'x86_64') +url="http://xml.apache.org/xerces2-j" +license=('APACHE') +provides=("java-xerces2=${pkgver}") +conflicts=('java-xerces2') +replaces=('java-xerces2') +source=(http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.${pkgver}.tar.gz) +md5sums=('32718d4cbe009f93d551ab8d3ef4b2aa') + +build() { + cd $startdir/src/xerces-${pkgver//./_} + install -m755 -d ${pkgdir}/usr/share/java + rm -f xercesSamples.jar + install -m644 *.jar ${pkgdir}/usr/share/java/ || return 1 +} diff --git a/abs/extra/xfsdump/PKGBUILD b/abs/extra/xfsdump/PKGBUILD new file mode 100644 index 0000000..1d40228 --- /dev/null +++ b/abs/extra/xfsdump/PKGBUILD @@ -0,0 +1,25 @@ +# $Id: PKGBUILD 26569 2009-02-09 18:40:22Z paul $ +# Maintainer: judd +pkgname=xfsdump +pkgver=3.0.0 +pkgrel=1 +pkgdesc="Additional XFS filesystem utilities" +arch=(i686 x86_64) +license=('LGPL') +url="http://oss.sgi.com/projects/xfs/" +depends=('xfsprogs>=3.0.0' 'attr>=2.4.39' 'acl>=2.2.45' 'dmapi') +options=('!makeflags') +source=(ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsdump-${pkgver}.tar.gz) +md5sums=('') +options=(!emptydirs) + +build() { + cd $startdir/src/xfsdump-$pkgver + autoconf + ./configure --prefix=/usr + make || return 1 + make prefix=$startdir/pkg/usr install + # fixes + rm -f $startdir/pkg/usr/lib/*.la + rm -f $startdir/pkg/usr/bin/{xfsdump,xfsrestore} +} diff --git a/abs/extra/xine-lib/ChangeLog b/abs/extra/xine-lib/ChangeLog new file mode 100644 index 0000000..7ac9d33 --- /dev/null +++ b/abs/extra/xine-lib/ChangeLog @@ -0,0 +1,43 @@ +2009-02-11 Eric Belanger + + * xine-lib 1.1.16.2-1 + * Upstream update + +2009-02-02 Eric Belanger + + * xine-lib 1.1.16.1-2 + * Rebuilt against imagemagick 6.4.8.10 + +2009-01-11 Eric Belanger + + * xine-lib 1.1.16.1-1 + * Upstream update + +2009-01-10 Eric Belanger + + * xine-lib 1.1.16-1 + * Upstream update + +2008-12-05 Eric Belanger + + * xine-lib 1.1.15-4 + * Rebuilt against heimdal 1.2.1 + * Added xcb support + +2008-11-27 Eric Belanger + + * xine-lib 1.1.15-3 + * Added jack support (close FS#12020) + * Fixed several build issue (close FS#12117) + +2008-08-14 Eric Belanger + + * xine-lib 1.1.15-1 + * Upstream update + +2008-07-28 Eric Belanger + + * xine-lib 1.1.14-2 + * Switched to the more recent externel ffmpeg snapshot (close FS#10286) + * Updated win32 codecs directory location (close FS#11011) + * Added ChangeLog diff --git a/abs/extra/xine-lib/PKGBUILD b/abs/extra/xine-lib/PKGBUILD new file mode 100644 index 0000000..aa15b8f --- /dev/null +++ b/abs/extra/xine-lib/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 26791 2009-02-12 02:31:16Z eric $ +# Maintainer: Eric Belanger +# Contributor: Judd Vinet + +pkgname=xine-lib +pkgver=1.1.16.3 +pkgrel=4 +pkgdesc="A free video player for Unix" +arch=('i686' 'x86_64') +url="http://xinehq.de/" +install=xine.install +license=('LGPL' 'GPL') +depends=('libgl' 'libxvmc' 'flac>=1.1.4' 'libvorbis' 'sdl' 'libmng' 'libtheora' + 'libxcb' 'wavpack' 'ffmpeg>=20081220' 'heimdal>=1.2.1') +makedepends=('pkgconfig' 'libtool' 'imagemagick' 'smbclient' 'mesa' 'alsa-lib' + 'vcdimager' ) +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/xine/${pkgname}-${pkgver}.tar.bz2 + xine-lib-1.1.1-configure-no-mcpu-march.patch) +md5sums=('4f508abf088cf427a731f85634c8260d' + '9776df4eb54d2f1f68d8268adbc3b5c2') +optiona=(!emptydir) + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -p0 < ../xine-lib-1.1.1-configure-no-mcpu-march.patch || return 1 + + libtoolize --force --copy || return 1 + aclocal -I m4 || return 1 + autoconf || return 1 + automake --add-missing || return 1 + + ./configure --prefix=/usr --with-w32-path=/usr/lib/codecs \ + --with-xv-path=/usr/lib --with-xxmc-path=/usr/lib --with-xvmc-path=/usr/lib \ + --with-libflac --with-wavpack --with-xcb \ + --without-arts --without-jack --without-speex \ + --disable-gnomevfs --without-pulseaudio --disable-aalib \ + --disable-modplug --with-external-ffmpeg --without-esd || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 +} diff --git a/abs/extra/xine-lib/__changelog b/abs/extra/xine-lib/__changelog new file mode 100644 index 0000000..0f4719d --- /dev/null +++ b/abs/extra/xine-lib/__changelog @@ -0,0 +1,3 @@ +add xine.install +disable jack +disable esound diff --git a/abs/extra/xine-lib/xine-header.patch b/abs/extra/xine-lib/xine-header.patch new file mode 100644 index 0000000..a37bfb9 --- /dev/null +++ b/abs/extra/xine-lib/xine-header.patch @@ -0,0 +1,11 @@ +--- src/xine-engine/buffer.h 2008-07-16 23:01:56.000000000 +0200 ++++ src/xine-engine/buffer.h 2008-08-24 21:14:39.000000000 +0200 +@@ -676,7 +676,7 @@ + /* convert xine_waveformatex struct from little endian */ + void _x_waveformatex_le2me( xine_waveformatex *wavex ) XINE_PROTECTED; + +-static inline _x_is_fourcc(void *ptr, void *tag) { ++static __inline _x_is_fourcc(void *ptr, void *tag) { + return memcmp(ptr, tag, 4) == 0; + } + diff --git a/abs/extra/xine-lib/xine-imagemagick.patch b/abs/extra/xine-lib/xine-imagemagick.patch new file mode 100644 index 0000000..9faa4ab --- /dev/null +++ b/abs/extra/xine-lib/xine-imagemagick.patch @@ -0,0 +1,11 @@ +--- xine-lib-1.1.15.orig/src/libxinevdec/image.c ++++ xine-lib-1.1.15/src/libxinevdec/image.c +@@ -110,7 +110,7 @@ + width = MagickGetImageWidth(wand) & ~1; /* must be even for init_yuv_planes */ + height = MagickGetImageHeight(wand); + img_buf = malloc(width * height * 3); +- MagickGetImagePixels(wand, 0, 0, width, height, "RGB", CharPixel, img_buf); ++ MagickGetAuthenticPixels(wand, 0, 0, width, height, "RGB", CharPixel, img_buf); + DestroyMagickWand(wand); + + _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_WIDTH, width); diff --git a/abs/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch b/abs/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch new file mode 100644 index 0000000..4b6ba9e --- /dev/null +++ b/abs/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch @@ -0,0 +1,13 @@ +--- m4/optimizations.m4.orig 2005-11-27 01:20:08.000000000 +0100 ++++ m4/optimizations.m4 2005-11-27 01:22:56.000000000 +0100 +@@ -161,10 +161,6 @@ + ;; + + esac +- if test x"$archopt_val" != x; then +- CFLAGS="$sarchopt=$archopt_val $CFLAGS" +- DEBUG_CFLAGS="$sarchopt=$archopt_val $DEBUG_CFLAGS" +- fi + fi + else + dnl we have the Intel compiler diff --git a/abs/extra/xine-lib/xine.install b/abs/extra/xine-lib/xine.install new file mode 100755 index 0000000..f9102ee --- /dev/null +++ b/abs/extra/xine-lib/xine.install @@ -0,0 +1,27 @@ +# arg 1: the new package version + post_install() { + MYTHOME=` su - mythtv -c "echo ~" ` + if [ ! -f $MYTHOME/.xine/config ] + then + echo "Copying in standard config file for xine" + mkdir -p $MYTHOME/.xine/ + cp -rp $TEMPLATES/xine.config.template $MYTHOME/.xine/config + chown -R mythtv:mythtv $MYTHOME/.xine + fi + } + +# # arg 1: the new package version +# # arg 2: the old package version + post_upgrade() { + post_install $1 + } +# +# # arg 1: the old package version + post_remove() { + /bin/true + } + +op=$1 +shift + +$op $* diff --git a/abs/extra/xine-ui/ChangeLog b/abs/extra/xine-ui/ChangeLog new file mode 100644 index 0000000..e5fb3e8 --- /dev/null +++ b/abs/extra/xine-ui/ChangeLog @@ -0,0 +1,7 @@ +2008-08-19 Eric Belanger + + * xine-ui 0.99.5-4 + * Added xine and xine-remote binaries (missing in 0.99.5-3) + * Added missing libxt makedepends + * Replaced .install file by an optdepends + * Added ChangeLog diff --git a/abs/extra/xine-ui/PKGBUILD b/abs/extra/xine-ui/PKGBUILD new file mode 100644 index 0000000..79ab3c3 --- /dev/null +++ b/abs/extra/xine-ui/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 9858 2008-08-19 23:56:23Z eric $ +# Maintainer: Eric Belanger + +pkgname=xine-ui +pkgver=0.99.5 +pkgrel=4 +pkgdesc="A free video player for Unix" +arch=('i686' 'x86_64') +license=('GPL') +url="http://xinehq.de/" +depends=('xine-lib' 'curl>=7.16.2' 'libxtst' 'libxinerama' 'libxv' 'libpng' 'libxft' 'libsm' 'libxxf86vm' 'ncurses>=5.6-7') +makedepends=('lirc' 'libxt') +optdepends=('lirc') +options=('!emptydirs') +source=(http://downloads.sourceforge.net/sourceforge/xine/${pkgname}-${pkgver}.tar.gz) +md5sums=('e643cd1fcad4d98a5ae4eb877ce5087b') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + + #add missing constant (defined in xine.h from xine-lib cvs) + echo '#define XINE_MSG_AUDIO_OUT_UNAVAILABLE 11' >> src/xitk/common.h + ./configure --prefix=/usr --mandir=/usr/share/man \ + --with-curses --with-x --enable-lirc --without-aalib + make || return 1 + make DESTDIR=${pkgdir} install + install -d ${pkgdir}/usr/share/applications + echo "Categories=Application;AudioVideo;" >> ${pkgdir}/usr/share/xine/desktop/xine.desktop + mv ${pkgdir}/usr/share/xine/desktop/xine.desktop ${pkgdir}/usr/share/applications +} diff --git a/abs/extra/xmbmon/Makefile.in.patch b/abs/extra/xmbmon/Makefile.in.patch new file mode 100644 index 0000000..be3bf73 --- /dev/null +++ b/abs/extra/xmbmon/Makefile.in.patch @@ -0,0 +1,37 @@ +diff -ru xmbmon205.orig/Makefile.in xmbmon205/Makefile.in +--- xmbmon205.orig/Makefile.in 2004-08-13 17:04:21.000000000 +1000 ++++ xmbmon205/Makefile.in 2008-06-14 00:59:35.000000000 +1000 +@@ -37,11 +37,11 @@ + RM=rm -f + INSTALL=install + +-INST_DIR=/usr/local/bin +-INST_MANDIR=/usr/local/man/man1 +-INST_XDIR=/usr/X11R6/bin +-INST_MANXDIR=/usr/X11R6/man/man1 +-INST_XRDIR=/usr/X11R6/lib/X11/app-defaults ++INST_DIR=/usr/bin ++INST_MANDIR=/usr/share/man/man1 ++INST_XDIR=/usr/bin ++INST_MANXDIR=/usr/share/man/man1 ++INST_XRDIR=/usr/lib/X11/app-defaults + + .c.o: + $(CC) -c $(CFLAGS) $*.c +@@ -133,12 +133,12 @@ + $(RM) Makefile config.cache config.log config.h config.status + + install: $(PROGRAM) +- $(INSTALL) -o root -g wheel -m 4555 -c -p mbmon $(INST_DIR) +- $(INSTALL) -o root -g wheel -m 4555 -c -p xmbmon $(INST_XDIR) ++ $(INSTALL) -o root -g wheel -m 4555 -c -p mbmon $(DESTDIR)$(INST_DIR) ++ $(INSTALL) -o root -g wheel -m 4555 -c -p xmbmon $(DESTDIR)$(INST_XDIR) + + install-man: $(MANPAGE) +- $(INSTALL) -o root -g wheel -m 444 -c -p mbmon.1 $(INST_MANDIR) +- $(INSTALL) -o root -g wheel -m 444 -c -p xmbmon.1x $(INST_MANXDIR) ++ $(INSTALL) -o root -g wheel -m 444 -c -p mbmon.1 $(DESTDIR)$(INST_MANDIR) ++ $(INSTALL) -o root -g wheel -m 444 -c -p xmbmon.1x $(DESTDIR)$(INST_MANXDIR) + + lint: + $(LINT) $(INCLUDES) $(DEFS) $(FONTDEFINES) $(SRCS) -lm diff --git a/abs/extra/xmbmon/PKGBUILD b/abs/extra/xmbmon/PKGBUILD new file mode 100644 index 0000000..348094b --- /dev/null +++ b/abs/extra/xmbmon/PKGBUILD @@ -0,0 +1,20 @@ +# Contributor: Jonathan Liu +pkgname=xmbmon +pkgver=2.05 +pkgrel=2 +pkgdesc="X Motherboard Monitor" +arch=('i686' 'x86_64') +url="http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html" +license=('GPL') +source=(http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/xmbmon/xmbmon205.tar.gz + Makefile.in.patch) +md5sums=('ab6614c785f5b653fcc69fb9c02058f0' + 'e417a1a04b95bc3505b74a52faa54c4a') + +build() { + cd $startdir/src/xmbmon205 + patch -Np1 -i $startdir/src/Makefile.in.patch + ./configure + mkdir -p $startdir/pkg/usr/{bin,share/man/man1} + make DESTDIR=$startdir/pkg install install-man || return 1 +} diff --git a/abs/extra/xmlto/PKGBUILD b/abs/extra/xmlto/PKGBUILD new file mode 100644 index 0000000..76db93c --- /dev/null +++ b/abs/extra/xmlto/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: $ +# Maintainer: Giovanni Scafora +# Contributor: Jan de Groot +# Contributor: Sergej Pupykin +# Contributor: Robert Stoffers + +pkgname=xmlto +pkgver=0.0.21 +pkgrel=2 +pkgdesc="Convert xml to many other formats" +arch=('i686' 'x86_64') +url="http://cyberelk.net/tim/software/xmlto/" +license=('GPL') +depends=('libxslt>=1.1.24') +makedepends=('docbook-xsl') +source=(https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.21.tar.bz2) +md5sums=('cc2039dedc81f1a56b06e5fdac6f7570') + +build() { + cd $srcdir/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=$pkgdir install || return 1 +} diff --git a/abs/extra/xmms/PKGBUILD b/abs/extra/xmms/PKGBUILD new file mode 100644 index 0000000..533c227 --- /dev/null +++ b/abs/extra/xmms/PKGBUILD @@ -0,0 +1,50 @@ +# $Id: PKGBUILD,v 1.3 2007/12/06 01:18:06 Snowman Exp $ +# Maintainer: Eric Belanger + +pkgname=xmms +pkgver=1.2.11 +pkgrel=1 +pkgdesc="The X MultiMedia System" +arch=('i686' 'x86_64') +url="http://www.xmms.org" +license=('GPL') +depends=('libsm' 'libxxf86vm' 'zlib' 'gtk' 'libvorbis' 'esd' 'alsa-lib' 'libgl') +makedepends=('mesa') +options=('!libtool') +source=(http://www.xmms.org/files/1.2.x/$pkgname-$pkgver.tar.bz2 \ + xmms-menu.patch \ + xmms-1.2.10-crossfade-0.3.9.patch \ + xmms-fix.diff) +md5sums=('f3e6dbaf0b3f571a532ab575656be506' 'b7b6f1811bad8d14e4c4534240e45980'\ + '4eb222111a82a2e1ebe63b5f6109133d' 'd7f9dc3712c486658149c4504f7478a7') +sha1sums=('9d1eae4baab25fd35c9ddfb49321ca60222f672d' + '27fb6e21bd6db923a425a8df8bd07a2a93867ddb' + 'ff5c172752c8bee708d9a9ecd53864cc95a4bcc5' + 'c227284955f2cc16f027dade670155c0f0fbc4ff') + +build() { + cd $startdir/src/$pkgname-$pkgver + +# Add id3v2 editing feature (doesn't apply atm, needs to be redone) +# patch -Np1 -i ../id3v2.patch || return 1 +# Fix xmms.desktop + patch -Np0 -i ../xmms-menu.patch || return 1 +# Patch for hang with xmms-crossfade + patch -Np1 -i ../xmms-1.2.10-crossfade-0.3.9.patch || return 1 +# fix xmms not able to be shown double size,at least needed for x86_64 + patch -Np1 -i ../xmms-fix.diff || return 1 + + if [ "$CARCH" == "x86_64" ]; then + ./configure --prefix=/usr --disable-mikmod --disable-simd # for x86_64 + else + ./configure --prefix=/usr --disable-mikmod --enable-simd # for i686 + fi + make || return 1 + make DESTDIR=$startdir/pkg install + mkdir -p ${startdir}/pkg/usr/share/{applications,pixmaps} + install -m 644 xmms/xmms.desktop ${startdir}/pkg/usr/share/applications + install -m 644 xmms/xmms_mini.xpm ${startdir}/pkg/usr/share/pixmaps/xmms.xpm + # don't want wmxmms + rm -rf $startdir/pkg/usr/bin/wmxmms $startdir/pkg/usr/share/xmms + rm -f $startdir/pkg/usr/man/man1/{gnomexmms.1,wmxmms.1} +} diff --git a/abs/extra/xmms/id3v2.patch b/abs/extra/xmms/id3v2.patch new file mode 100644 index 0000000..c8f8ba2 --- /dev/null +++ b/abs/extra/xmms/id3v2.patch @@ -0,0 +1,3379 @@ +diff -Naur xmms-1.2.9-orig/Input/mpg123/charset.h xmms-1.2.9/Input/mpg123/charset.h +--- xmms-1.2.9-orig/Input/mpg123/charset.h Wed Dec 31 19:00:00 1969 ++++ xmms-1.2.9/Input/mpg123/charset.h Thu Jan 29 05:20:31 2004 +@@ -0,0 +1,420 @@ ++/* charset.h - 2001/12/04 */ ++/* ++ * EasyTAG - Tag editor for MP3 and OGG files ++ * Copyright (C) 2000-2002 Jerome Couderc ++ * ++ * 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. ++ */ ++ ++#ifndef FALSE ++#define FALSE 0 ++#endif ++#ifndef TRUE ++#define TRUE 1 ++#endif ++ ++/* ++ * Standard gettext macros. ++ */ ++#ifdef ENABLE_NLS ++# include ++# define _(String) gettext (String) ++# ifdef gettext_noop ++# define N_(String) gettext_noop (String) ++# else ++# define N_(String) (String) ++# endif ++#else ++# define textdomain(String) (String) ++# define gettext(String) (String) ++# define dgettext(Domain,Message) (Message) ++# define dcgettext(Domain,Message,Type) (Message) ++# define bindtextdomain(Domain,Directory) (Domain) ++# define _(String) (String) ++# define N_(String) (String) ++#endif ++ ++#ifndef DLL_H ++#define DLL_H ++typedef struct DLL_s ++{ ++ void *prev; ++ void *data; ++ void *next; ++} DLL; ++#endif ++ ++#ifndef __CHARSET_H__ ++#define __CHARSET_H__ ++ ++ ++/*************** ++ * Declaration * ++ ***************/ ++ ++typedef struct { ++ char *charset_title; ++ char *charset_name; ++} CharsetInfo; ++ ++ ++/************** ++ * Prototypes * ++ **************/ ++ ++//static gchar* get_current_charset (void); ++ ++/* Used for ogg tags */ ++char* convert_to_utf8 (const char *string); ++char* convert_from_utf8 (const char *string); ++ ++char* convert_from_file_to_user (const char *string); ++char* convert_from_user_to_file (const char *string); ++ ++DLL *Charset_Create_List (void); ++char *Charset_Get_Name_From_Title (char *charset_title); ++char *Charset_Get_Title_From_Name (char *charset_name); ++ ++short int test_conversion_charset (char *from, char *to); ++ ++ ++#endif /* __CHARSET_H__ */ ++ ++/* ++ * Main part of code, written by: ++ * ++ * Copyright (C) 1999-2001 Håvard Kvålen ++ * ++ * 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. ++ * ++ */ ++ ++#include ++#include ++#include ++ ++#ifdef HAVE_ICONV_OPEN ++#include ++#endif ++ ++#ifdef HAVE_LANGINFO_CODESET ++#include ++#endif ++ ++/**************** ++ * Declarations * ++ ****************/ ++ ++#define CHARSET_TRANS_ARRAY_LEN ( sizeof(charset_trans_array) / sizeof((charset_trans_array)[0]) ) ++const CharsetInfo charset_trans_array[] = { ++ {N_("Arabic (IBM-864)"), "IBM864" }, ++ {N_("Arabic (ISO-8859-6)"), "ISO-8859-6" }, ++ {N_("Arabic (Windows-1256)"), "windows-1256" }, ++ {N_("Baltic (ISO-8859-13)"), "ISO-8859-13" }, ++ {N_("Baltic (ISO-8859-4)"), "ISO-8859-4" }, ++ {N_("Baltic (Windows-1257)"), "windows-1257" }, ++ {N_("Celtic (ISO-8859-14)"), "ISO-8859-14" }, ++ {N_("Central European (IBM-852)"), "IBM852" }, ++ {N_("Central European (ISO-8859-2)"), "ISO-8859-2" }, ++ {N_("Central European (Windows-1250)"), "windows-1250" }, ++ {N_("Chinese Simplified (GB18030)"), "gb18030" }, ++ {N_("Chinese Simplified (GB2312)"), "GB2312" }, ++ {N_("Chinese Traditional (Big5)"), "Big5" }, ++ {N_("Chinese Traditional (Big5-HKSCS)"), "Big5-HKSCS" }, ++ {N_("Cyrillic (IBM-855)"), "IBM855" }, ++ {N_("Cyrillic (ISO-8859-5)"), "ISO-8859-5" }, ++ {N_("Cyrillic (ISO-IR-111)"), "ISO-IR-111" }, ++ {N_("Cyrillic (KOI8-R)"), "KOI8-R" }, ++ {N_("Cyrillic (Windows-1251)"), "windows-1251" }, ++ {N_("Cyrillic/Russian (CP-866)"), "IBM866" }, ++ {N_("Cyrillic/Ukrainian (KOI8-U)"), "KOI8-U" }, ++ {N_("English (US-ASCII)"), "us-ascii" }, ++ {N_("Greek (ISO-8859-7)"), "ISO-8859-7" }, ++ {N_("Greek (Windows-1253)"), "windows-1253" }, ++ {N_("Hebrew (IBM-862)"), "IBM862" }, ++ {N_("Hebrew (Windows-1255)"), "windows-1255" }, ++ {N_("Japanese (EUC-JP)"), "EUC-JP" }, ++ {N_("Japanese (ISO-2022-JP)"), "ISO-2022-JP" }, ++ {N_("Japanese (Shift_JIS)"), "Shift_JIS" }, ++ {N_("Korean (EUC-KR)"), "EUC-KR" }, ++ {N_("Nordic (ISO-8859-10)"), "ISO-8859-10" }, ++ {N_("South European (ISO-8859-3)"), "ISO-8859-3" }, ++ {N_("Thai (TIS-620)"), "TIS-620" }, ++ {N_("Turkish (IBM-857)"), "IBM857" }, ++ {N_("Turkish (ISO-8859-9)"), "ISO-8859-9" }, ++ {N_("Turkish (Windows-1254)"), "windows-1254" }, ++ {N_("Unicode (UTF-7)"), "UTF-7" }, ++ {N_("Unicode (UTF-8)"), "UTF-8" }, ++ {N_("Unicode (UTF-16BE)"), "UTF-16BE" }, ++ {N_("Unicode (UTF-16LE)"), "UTF-16LE" }, ++ {N_("Unicode (UTF-32BE)"), "UTF-32BE" }, ++ {N_("Unicode (UTF-32LE)"), "UTF-32LE" }, ++ {N_("Vietnamese (VISCII)"), "VISCII" }, ++ {N_("Vietnamese (Windows-1258)"), "windows-1258" }, ++ {N_("Visual Hebrew (ISO-8859-8)"), "ISO-8859-8" }, ++ {N_("Western (IBM-850)"), "IBM850" }, ++ {N_("Western (ISO-8859-1)"), "ISO-8859-1" }, ++ {N_("Western (ISO-8859-15)"), "ISO-8859-15" }, ++ {N_("Western (Windows-1252)"), "windows-1252" } ++ ++ /* ++ * From this point, character sets aren't supported by iconv ++ */ ++/* {N_("Arabic (IBM-864-I)"), "IBM864i" }, ++ {N_("Arabic (ISO-8859-6-E)"), "ISO-8859-6-E" }, ++ {N_("Arabic (ISO-8859-6-I)"), "ISO-8859-6-I" }, ++ {N_("Arabic (MacArabic)"), "x-mac-arabic" }, ++ {N_("Armenian (ARMSCII-8)"), "armscii-8" }, ++ {N_("Central European (MacCE)"), "x-mac-ce" }, ++ {N_("Chinese Simplified (GBK)"), "x-gbk" }, ++ {N_("Chinese Simplified (HZ)"), "HZ-GB-2312" }, ++ {N_("Chinese Traditional (EUC-TW)"), "x-euc-tw" }, ++ {N_("Croatian (MacCroatian)"), "x-mac-croatian" }, ++ {N_("Cyrillic (MacCyrillic)"), "x-mac-cyrillic" }, ++ {N_("Cyrillic/Ukrainian (MacUkrainian)"), "x-mac-ukrainian" }, ++ {N_("Farsi (MacFarsi)"), "x-mac-farsi"}, ++ {N_("Greek (MacGreek)"), "x-mac-greek" }, ++ {N_("Gujarati (MacGujarati)"), "x-mac-gujarati" }, ++ {N_("Gurmukhi (MacGurmukhi)"), "x-mac-gurmukhi" }, ++ {N_("Hebrew (ISO-8859-8-E)"), "ISO-8859-8-E" }, ++ {N_("Hebrew (ISO-8859-8-I)"), "ISO-8859-8-I" }, ++ {N_("Hebrew (MacHebrew)"), "x-mac-hebrew" }, ++ {N_("Hindi (MacDevanagari)"), "x-mac-devanagari" }, ++ {N_("Icelandic (MacIcelandic)"), "x-mac-icelandic" }, ++ {N_("Korean (JOHAB)"), "x-johab" }, ++ {N_("Korean (UHC)"), "x-windows-949" }, ++ {N_("Romanian (MacRomanian)"), "x-mac-romanian" }, ++ {N_("Turkish (MacTurkish)"), "x-mac-turkish" }, ++ {N_("User Defined"), "x-user-defined" }, ++ {N_("Vietnamese (TCVN)"), "x-viet-tcvn5712" }, ++ {N_("Vietnamese (VPS)"), "x-viet-vps" }, ++ {N_("Western (MacRoman)"), "x-mac-roman" }, ++ // charsets whithout posibly translatable names ++ {"T61.8bit", "T61.8bit" }, ++ {"x-imap4-modified-utf7", "x-imap4-modified-utf7"}, ++ {"x-u-escaped", "x-u-escaped" }, ++ {"windows-936", "windows-936" } ++*/ ++}; ++ ++ ++ ++ ++/************* ++ * Functions * ++ *************/ ++// Return the last item of an doubly linked list ++static DLL * ++dll_last_c (DLL *list) ++{ ++ DLL *item = list; ++ ++ while ( item->next ) ++ item = item->next; ++ ++ return item; ++} ++ ++// Append an item to the doubly linked list ++static DLL * ++dll_append_c (DLL *list, void *data) ++{ ++ DLL *item = malloc (sizeof(DLL)); ++ ++ item->data = data; ++ item->prev = dll_last_c(list); ++ item->next = NULL; ++ ++ return item; ++} ++ ++static char* get_current_charset (void) ++{ ++ char *charset = getenv("CHARSET"); ++ ++#ifdef HAVE_LANGINFO_CODESET ++ if (!charset) ++ charset = nl_langinfo(CODESET); ++#endif ++ if (!charset) ++ charset = "ISO-8859-1"; ++ ++ return charset; ++} ++ ++ ++#ifdef HAVE_ICONV_OPEN ++static char* convert_string (const char *string, char *from, char *to) ++{ ++ size_t outleft, outsize, length; ++ iconv_t cd; ++ char *out, *outptr; ++ const char *input = string; ++ ++ if (!string) ++ return NULL; ++ ++ length = strlen(string); ++ ++ /* g_message("converting %s from %s to %s", string, from, to); */ ++ if ((cd = iconv_open(to, from)) == (iconv_t)-1) ++ { ++ fprintf (stderr, "convert_string(): Conversion not supported. Charsets: %s -> %s", from, to); ++ return strdup(string); ++ } ++ ++ /* Due to a GLIBC bug, round outbuf_size up to a multiple of 4 */ ++ /* + 1 for nul in case len == 1 */ ++ outsize = ((length + 3) & ~3) + 1; ++ out = g_malloc(outsize); ++ outleft = outsize - 1; ++ outptr = out; ++ ++ retry: ++ if (iconv(cd, (char **)&input, &length, &outptr, &outleft) == -1) ++ { ++ int used; ++ switch (errno) ++ { ++ case E2BIG: ++ used = outptr - out; ++ outsize = (outsize - 1) * 2 + 1; ++ out = g_realloc(out, outsize); ++ outptr = out + used; ++ outleft = outsize - 1 - used; ++ goto retry; ++ case EINVAL: ++ break; ++ case EILSEQ: ++ /* Invalid sequence, try to get the ++ rest of the string */ ++ input++; ++ length = strlen(input); ++ goto retry; ++ default: ++ fprintf (stderr, "convert_string(): Conversion failed. Inputstring: %s; Error: %s", string, strerror(errno)); ++ break; ++ } ++ } ++ *outptr = '\0'; ++ ++ iconv_close(cd); ++ return out; ++} ++#else ++static char* convert_string (const char *string, char *from, char *to) ++{ ++ if (!string) ++ return NULL; ++ return strdup(string); ++} ++#endif ++ ++ ++/* ++ * Conversion with UTF-8 for ogg tags ++ */ ++char* convert_to_utf8 (const char *string) ++{ ++ char *charset = get_current_charset(); ++ ++ return convert_string(string, charset, "UTF-8"); ++} ++ ++char* convert_from_utf8 (const char *string) ++{ ++ char *charset = get_current_charset(); ++ ++ return convert_string(string, "UTF-8", charset); ++} ++ ++ ++DLL *Charset_Create_List (void) ++{ ++ DLL *list = NULL; ++ int i; ++ ++ for (i=0; i + #include + #include "mpg123.h" ++#include "lib_id3v2.h" ++ ++#define MAX_STR_LEN 100 ++#define MAX_ENTRY_LEN2 1023 + + static GtkWidget *window = NULL; +-static GtkWidget *filename_entry, *id3_frame; +-static GtkWidget *title_entry, *artist_entry, *album_entry, *year_entry; +-static GtkWidget *tracknum_entry, *comment_entry, *genre_combo; ++static GtkWidget *notebook = NULL; ++static GtkWidget *filename_entry, *id3v1_frame, *id3v2_frame; ++static GtkWidget *v1_checkbox, *v2_checkbox; ++static GtkWidget *v1_title_entry, *v1_artist_entry, *v1_album_entry, *v1_year_entry, *v1_tracknum_entry, *v1_comment_entry; ++static GtkWidget *v2_title_entry, *v2_artist_entry, *v2_album_entry, *v2_year_entry, *v2_tracknum_entry, *v2_comment_entry, ++ *v2_composer_entry, *v2_orig_artist_entry, *v2_url_entry, *v2_encoded_by_entry; ++static GtkWidget *v1_genre_combo, *v2_genre_combo; + static GtkWidget *mpeg_level, *mpeg_bitrate, *mpeg_samplerate, *mpeg_flags; + static GtkWidget *mpeg_fileinfo; + ++static GPtrArray *v1_labels_list = NULL, *v2_labels_list = NULL; // TODO: Where will these be freed? + static GList *genre_list; + struct genre_item { + const char *name; + int id; + }; +-static int current_genre; ++static int v1_current_genre; ++static int v2_current_genre; + static char *current_filename; + + extern char *mpg123_filename; + extern int mpg123_bitrate, mpg123_frequency, mpg123_layer, mpg123_lsf, mpg123_mode; + extern gboolean mpg123_stereo, mpg123_mpeg25; + +-#define MAX_STR_LEN 100 +- + static void label_set_text(GtkWidget * label, char *str, ...) + G_GNUC_PRINTF(2, 3); + +@@ -66,6 +74,12 @@ + strncpy(tag, gtk_entry_get_text(entry), length); + } + ++void copy_entry_tag(GtkEntry * src, GtkEntry * dest, int length) ++{ ++ set_entry_tag(dest, gtk_entry_get_text(src), length); ++ return; ++} ++ + static int genre_find_index(GList *genre_list, int id) + { + int idx = 0; +@@ -80,15 +94,29 @@ + return idx; + } + ++static int genre_find_index_str(GList *genre_list, const char* str) ++{ ++ int idx = 0; ++ while (genre_list) ++ { ++ struct genre_item *item = genre_list->data; ++ if (strcmp(item->name, str) == 0) ++ break; ++ idx++; ++ genre_list = genre_list->next; ++ } ++ return idx; ++} ++ + static int genre_comp_func(gconstpointer a, gconstpointer b) + { + const struct genre_item *ga = a, *gb = b; + return strcasecmp(ga->name, gb->name); + } + +-static void save_cb(GtkWidget * w, gpointer data) ++static void remove_id3v1(void) + { +- int fd; ++ int fd, len; + struct id3v1tag_t tag; + char *msg = NULL; + +@@ -97,71 +125,36 @@ + + if ((fd = open(current_filename, O_RDWR)) != -1) + { +- int tracknum; +- +- lseek(fd, -128, SEEK_END); ++ len = lseek(fd, -128, SEEK_END); + read(fd, &tag, sizeof (struct id3v1tag_t)); + + if (!strncmp(tag.tag, "TAG", 3)) +- lseek(fd, -128, SEEK_END); +- else +- lseek(fd, 0, SEEK_END); +- tag.tag[0] = 'T'; +- tag.tag[1] = 'A'; +- tag.tag[2] = 'G'; +- get_entry_tag(GTK_ENTRY(title_entry), tag.title, 30); +- get_entry_tag(GTK_ENTRY(artist_entry), tag.artist, 30); +- get_entry_tag(GTK_ENTRY(album_entry), tag.album, 30); +- get_entry_tag(GTK_ENTRY(year_entry), tag.year, 4); +- tracknum = atoi(gtk_entry_get_text(GTK_ENTRY(tracknum_entry))); +- if (tracknum > 0) + { +- get_entry_tag(GTK_ENTRY(comment_entry), +- tag.u.v1_1.comment, 28); +- tag.u.v1_1.__zero = 0; +- tag.u.v1_1.track_number = MIN(tracknum, 255); ++ if (ftruncate(fd, len)) ++ msg = g_strdup_printf(_("%s\n" ++ "Unable to truncate file: %s"), ++ _("Couldn't remove tag!"), ++ strerror(errno)); + } +- else +- get_entry_tag(GTK_ENTRY(comment_entry), +- tag.u.v1_0.comment, 30); +- tag.genre = current_genre; +- if (write(fd, &tag, sizeof (tag)) != sizeof (tag)) +- msg = g_strdup_printf(_("%s\nUnable to write to file: %s"), +- _("Couldn't write tag!"), +- strerror(errno)); + close(fd); + } + else + msg = g_strdup_printf(_("%s\nUnable to open file: %s"), +- _("Couldn't write tag!"), ++ _("Couldn't remove tag!"), + strerror(errno)); + if (msg) + { +- GtkWidget *mwin = xmms_show_message(_("File Info"), msg, +- _("Ok"), FALSE, NULL, NULL); ++ GtkWidget *mwin = xmms_show_message(_("File Info"), msg, _("Ok"), ++ FALSE, NULL, NULL); + gtk_window_set_transient_for(GTK_WINDOW(mwin), + GTK_WINDOW(window)); + g_free(msg); + } +- else +- gtk_widget_destroy(window); +-} +- +-static void label_set_text(GtkWidget * label, char *str, ...) +-{ +- va_list args; +- char tempstr[MAX_STR_LEN]; +- +- va_start(args, str); +- g_vsnprintf(tempstr, MAX_STR_LEN, str, args); +- va_end(args); +- +- gtk_label_set_text(GTK_LABEL(label), tempstr); + } + +-static void remove_id3_cb(GtkWidget * w, gpointer data) ++static void save_cb(GtkWidget * w, gpointer data) + { +- int fd, len; ++ int fd; + struct id3v1tag_t tag; + char *msg = NULL; + +@@ -170,36 +163,95 @@ + + if ((fd = open(current_filename, O_RDWR)) != -1) + { +- len = lseek(fd, -128, SEEK_END); +- read(fd, &tag, sizeof (struct id3v1tag_t)); ++ if (!GTK_TOGGLE_BUTTON(v1_checkbox)->active) { ++ // Try to save id3v1 tag ++ int tracknum; + +- if (!strncmp(tag.tag, "TAG", 3)) +- { +- if (ftruncate(fd, len)) +- msg = g_strdup_printf( +- _("%s\n" +- "Unable to truncate file: %s"), +- _("Couldn't remove tag!"), +- strerror(errno)); ++ lseek(fd, -128, SEEK_END); ++ read(fd, &tag, sizeof (struct id3v1tag_t)); ++ ++ if (!strncmp(tag.tag, "TAG", 3)) ++ lseek(fd, -128, SEEK_END); ++ else ++ lseek(fd, 0, SEEK_END); ++ tag.tag[0] = 'T'; ++ tag.tag[1] = 'A'; ++ tag.tag[2] = 'G'; ++ get_entry_tag(GTK_ENTRY(v1_title_entry), tag.title, 30); ++ get_entry_tag(GTK_ENTRY(v1_artist_entry), tag.artist, 30); ++ get_entry_tag(GTK_ENTRY(v1_album_entry), tag.album, 30); ++ get_entry_tag(GTK_ENTRY(v1_year_entry), tag.year, 4); ++ tracknum = atoi(gtk_entry_get_text(GTK_ENTRY(v1_tracknum_entry))); ++ if (tracknum > 0) ++ { ++ get_entry_tag(GTK_ENTRY(v1_comment_entry), ++ tag.u.v1_1.comment, 28); ++ tag.u.v1_1.__zero = 0; ++ tag.u.v1_1.track_number = MIN(tracknum, 255); ++ } ++ else ++ get_entry_tag(GTK_ENTRY(v1_comment_entry), ++ tag.u.v1_0.comment, 30); ++ tag.genre = v1_current_genre; ++ if (write(fd, &tag, sizeof (tag)) != sizeof (tag)) ++ msg = g_strdup_printf(_("%s\nUnable to write to file: %s"), ++ _("Couldn't write tag!"), ++ strerror(errno)); ++ } else { ++ // Remove the id3v1 tag from the file ++ remove_id3v1(); + } +- else +- msg = strdup(_("No tag to remove!")); +- close(fd); ++ ++ if (!GTK_TOGGLE_BUTTON(v2_checkbox)->active) { ++ ++ id3Tag v2_tag; ++ strncpy(v2_tag.title, gtk_entry_get_text(GTK_ENTRY(v2_title_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.artist, gtk_entry_get_text(GTK_ENTRY(v2_artist_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.album, gtk_entry_get_text(GTK_ENTRY(v2_album_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.year, gtk_entry_get_text(GTK_ENTRY(v2_year_entry)), 4); ++ strncpy(v2_tag.comment, gtk_entry_get_text(GTK_ENTRY(v2_comment_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.track, gtk_entry_get_text(GTK_ENTRY(v2_tracknum_entry)), 3); ++ snprintf(v2_tag.genre, 6, "(%d)", v2_current_genre); ++ ++ strncpy(v2_tag.composer, gtk_entry_get_text(GTK_ENTRY(v2_composer_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.url, gtk_entry_get_text(GTK_ENTRY(v2_url_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.orig_artist, gtk_entry_get_text(GTK_ENTRY(v2_orig_artist_entry)), MAX_ENTRY_LEN2); ++ strncpy(v2_tag.enc_by, gtk_entry_get_text(GTK_ENTRY(v2_encoded_by_entry)), MAX_ENTRY_LEN2); ++ ++ set_id3v2_tag(&v2_tag, current_filename); ++ ++ } else { ++ // remove the id3v2 tag from the file ++ del_id3v2_tag(current_filename); ++ } ++ ++ if (fd) ++ close(fd); + } + else + msg = g_strdup_printf(_("%s\nUnable to open file: %s"), +- _("Couldn't remove tag!"), ++ _("Couldn't write tag!"), + strerror(errno)); + if (msg) + { +- GtkWidget *mwin = xmms_show_message(_("File Info"), msg, +- _("Ok"), FALSE, NULL, NULL); ++ GtkWidget *mwin = xmms_show_message(_("File Info"), msg, _("Ok"), ++ FALSE, NULL, NULL); + gtk_window_set_transient_for(GTK_WINDOW(mwin), + GTK_WINDOW(window)); + g_free(msg); + } +- else +- gtk_widget_destroy(window); ++} ++ ++static void label_set_text(GtkWidget * label, char *str, ...) ++{ ++ va_list args; ++ char tempstr[MAX_STR_LEN]; ++ ++ va_start(args, str); ++ g_vsnprintf(tempstr, MAX_STR_LEN, str, args); ++ va_end(args); ++ ++ gtk_label_set_text(GTK_LABEL(label), tempstr); + } + + static void set_mpeg_level_label(gboolean mpeg25, int lsf, int layer) +@@ -222,28 +274,144 @@ + + static void file_info_http(char *filename) + { +- gtk_widget_set_sensitive(id3_frame, FALSE); ++ gtk_widget_set_sensitive(id3v1_frame, FALSE); ++ gtk_widget_set_sensitive(id3v2_frame, FALSE); + if (mpg123_filename && !strcmp(filename, mpg123_filename) && + mpg123_bitrate != 0) + { +- set_mpeg_level_label(mpg123_mpeg25, mpg123_lsf, mpg123_layer); ++ set_mpeg_level_label(mpg123_mpeg25, mpg123_lsf, ++ mpg123_layer); + label_set_text(mpeg_bitrate, _("Bitrate: %d kb/s"), +- mpg123_bitrate); ++ mpg123_bitrate); + label_set_text(mpeg_samplerate, _("Samplerate: %d Hz"), +- mpg123_frequency); ++ mpg123_frequency); + label_set_text(mpeg_flags, "%s", +- channel_mode_name(mpg123_mode)); ++ channel_mode_name(mpg123_mode)); + } + } + +-static void genre_selected(GtkList *list, GtkWidget *w, gpointer data) ++void copy_v2_to_v1_cb(GtkButton *button, gpointer user_data) ++{ ++ copy_entry_tag(GTK_ENTRY(v2_title_entry), GTK_ENTRY(v1_title_entry), 30); ++ copy_entry_tag(GTK_ENTRY(v2_artist_entry), GTK_ENTRY(v1_artist_entry), 30); ++ copy_entry_tag(GTK_ENTRY(v2_album_entry), GTK_ENTRY(v1_album_entry), 30); ++ copy_entry_tag(GTK_ENTRY(v2_year_entry), GTK_ENTRY(v1_year_entry), 4); ++ copy_entry_tag(GTK_ENTRY(v2_comment_entry), GTK_ENTRY(v1_comment_entry), 30); ++ copy_entry_tag(GTK_ENTRY(v2_tracknum_entry), GTK_ENTRY(v1_tracknum_entry), 3); ++ ++ gtk_list_select_item(GTK_LIST(GTK_COMBO(v1_genre_combo)->list), genre_find_index(genre_list, v2_current_genre)); ++ return; ++} ++ ++void copy_v1_to_v2_cb(GtkButton *button, gpointer user_data) ++{ ++ copy_entry_tag(GTK_ENTRY(v1_title_entry), GTK_ENTRY(v2_title_entry), MAX_ENTRY_LEN2); ++ copy_entry_tag(GTK_ENTRY(v1_artist_entry), GTK_ENTRY(v2_artist_entry), MAX_ENTRY_LEN2); ++ copy_entry_tag(GTK_ENTRY(v1_album_entry), GTK_ENTRY(v2_album_entry), MAX_ENTRY_LEN2); ++ copy_entry_tag(GTK_ENTRY(v1_year_entry), GTK_ENTRY(v2_year_entry), 4); ++ copy_entry_tag(GTK_ENTRY(v1_comment_entry), GTK_ENTRY(v2_comment_entry), MAX_ENTRY_LEN2); ++ copy_entry_tag(GTK_ENTRY(v1_tracknum_entry), GTK_ENTRY(v2_tracknum_entry), 3); ++ ++ gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list), genre_find_index(genre_list, v1_current_genre)); ++ //int genreID = find_genre_id(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(v1_genre_combo)->entry))); ++ //gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list), ++ // g_list_index(genre_list, (char *) mpg123_id3_genres[genreID])); ++ return; ++} ++ ++void v1_toggle_cb (GtkWidget *widget, gpointer data) ++{ ++ int i = 0; ++ if (GTK_TOGGLE_BUTTON (widget)->active) ++ { ++ // If control reaches here, the toggle button is down ++ // Gray out labels ++ for (i = 0; i < v1_labels_list->len; i++) { ++ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v1_labels_list, i) ), FALSE); ++ } ++ gtk_widget_set_sensitive(v1_title_entry, FALSE); ++ gtk_widget_set_sensitive(v1_artist_entry, FALSE); ++ gtk_widget_set_sensitive(v1_album_entry, FALSE); ++ gtk_widget_set_sensitive(v1_year_entry, FALSE); ++ gtk_widget_set_sensitive(v1_tracknum_entry, FALSE); ++ gtk_widget_set_sensitive(v1_comment_entry, FALSE); ++ gtk_widget_set_sensitive(v1_genre_combo, FALSE); ++ } else { ++ ++ // If control reaches here, the toggle button is up ++ // Enable labels ++ for (i = 0; i < v1_labels_list->len; i++) { ++ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v1_labels_list, i) ), TRUE); ++ } ++ gtk_widget_set_sensitive(v1_title_entry, TRUE); ++ gtk_widget_set_sensitive(v1_artist_entry, TRUE); ++ gtk_widget_set_sensitive(v1_album_entry, TRUE); ++ gtk_widget_set_sensitive(v1_year_entry, TRUE); ++ gtk_widget_set_sensitive(v1_tracknum_entry, TRUE); ++ gtk_widget_set_sensitive(v1_comment_entry, TRUE); ++ gtk_widget_set_sensitive(v1_genre_combo, TRUE); ++ } ++} ++ ++void v2_toggle_cb (GtkWidget *widget, gpointer data) ++{ ++ int i = 0; ++ if (GTK_TOGGLE_BUTTON (widget)->active) ++ { ++ // If control reaches here, the toggle button is down ++ // Gray out labels ++ for (i = 0; i < v2_labels_list->len; i++) { ++ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v2_labels_list, i) ), FALSE); ++ } ++ gtk_widget_set_sensitive(v2_title_entry, FALSE); ++ gtk_widget_set_sensitive(v2_artist_entry, FALSE); ++ gtk_widget_set_sensitive(v2_album_entry, FALSE); ++ gtk_widget_set_sensitive(v2_year_entry, FALSE); ++ gtk_widget_set_sensitive(v2_tracknum_entry, FALSE); ++ gtk_widget_set_sensitive(v2_comment_entry, FALSE); ++ gtk_widget_set_sensitive(v2_composer_entry, FALSE); ++ gtk_widget_set_sensitive(v2_orig_artist_entry, FALSE); ++ gtk_widget_set_sensitive(v2_url_entry, FALSE); ++ gtk_widget_set_sensitive(v2_encoded_by_entry, FALSE); ++ gtk_widget_set_sensitive(v2_genre_combo, FALSE); ++ } else { ++ ++ // If control reaches here, the toggle button is up ++ // Enable labels ++ for (i = 0; i < v2_labels_list->len; i++) { ++ gtk_widget_set_sensitive(GTK_WIDGET( g_ptr_array_index(v2_labels_list, i) ), TRUE); ++ } ++ gtk_widget_set_sensitive(v2_title_entry, TRUE); ++ gtk_widget_set_sensitive(v2_artist_entry, TRUE); ++ gtk_widget_set_sensitive(v2_album_entry, TRUE); ++ gtk_widget_set_sensitive(v2_year_entry, TRUE); ++ gtk_widget_set_sensitive(v2_tracknum_entry, TRUE); ++ gtk_widget_set_sensitive(v2_comment_entry, TRUE); ++ gtk_widget_set_sensitive(v2_composer_entry, TRUE); ++ gtk_widget_set_sensitive(v2_orig_artist_entry, TRUE); ++ gtk_widget_set_sensitive(v2_url_entry, TRUE); ++ gtk_widget_set_sensitive(v2_encoded_by_entry, TRUE); ++ gtk_widget_set_sensitive(v2_genre_combo, TRUE); ++ } ++} ++static void v1_genre_selected(GtkList *list, GtkWidget *w, gpointer data) ++{ ++ void * p; ++ p = gtk_object_get_data(GTK_OBJECT(w), "genre_id"); ++ if (p != NULL) ++ v1_current_genre = GPOINTER_TO_INT(p); ++ else ++ v1_current_genre = 0; ++} ++ ++static void v2_genre_selected(GtkList *list, GtkWidget *w, gpointer data) + { + void * p; + p = gtk_object_get_data(GTK_OBJECT(w), "genre_id"); + if (p != NULL) +- current_genre = GPOINTER_TO_INT(p); ++ v2_current_genre = GPOINTER_TO_INT(p); + else +- current_genre = 0; ++ v2_current_genre = 0; + } + + static void genre_set_popdown(GtkWidget *combo, GList *genres) +@@ -266,11 +434,12 @@ + void mpg123_file_info_box(char *filename) + { + int i; +- struct id3v1tag_t tag; ++ struct id3v1tag_t id3v1tag; + FILE *fh; + char *tmp, *title; + const char *emphasis[4]; + const char *bool_label[2]; ++ struct id3tag_t id3v2tag; + + emphasis[0] = _("None"); + emphasis[1] = _("50/15 ms"); +@@ -281,116 +450,123 @@ + + if (!window) + { +- GtkWidget *vbox, *hbox, *left_vbox, *table; +- GtkWidget *mpeg_frame, *mpeg_box; +- GtkWidget *label, *filename_hbox; +- GtkWidget *bbox, *save, *remove_id3, *cancel; +- +- window = gtk_window_new(GTK_WINDOW_DIALOG); +- gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE); +- gtk_signal_connect(GTK_OBJECT(window), "destroy", +- gtk_widget_destroyed, &window); +- gtk_container_set_border_width(GTK_CONTAINER(window), 10); +- +- vbox = gtk_vbox_new(FALSE, 10); +- gtk_container_add(GTK_CONTAINER(window), vbox); ++ GtkWidget *window_vbox, ++ *id3v1_vbox, *id3v2_vbox, *id3v1_frame_vbox, *id3v2_frame_vbox, ++ *mpeg_lvbox, *mpeg_rvbox, *mpeg_hbox, *mpeg_box, *mpeg_frame, ++ *bbox, *save, *close, *copy_to, *copy_from, ++ *table, *label, *filename_hbox; ++ ++ v1_labels_list = g_ptr_array_new(); ++ v2_labels_list = g_ptr_array_new(); ++ ++ window = gtk_window_new(GTK_WINDOW_DIALOG); ++ //gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE); ++ gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &window); ++ gtk_container_set_border_width(GTK_CONTAINER(window), 10); + ++ window_vbox = gtk_vbox_new(FALSE,10); + filename_hbox = gtk_hbox_new(FALSE, 5); +- gtk_box_pack_start(GTK_BOX(vbox), filename_hbox, +- FALSE, TRUE, 0); ++ gtk_box_pack_start(GTK_BOX(window_vbox), filename_hbox, FALSE, TRUE, 0); + + label = gtk_label_new(_("Filename:")); +- gtk_box_pack_start(GTK_BOX(filename_hbox), label, +- FALSE, TRUE, 0); ++ gtk_box_pack_start(GTK_BOX(filename_hbox), label, FALSE, TRUE, 0); + filename_entry = xmms_entry_new(); + gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE); +- gtk_box_pack_start(GTK_BOX(filename_hbox), +- filename_entry, TRUE, TRUE, 0); +- +- hbox = gtk_hbox_new(FALSE, 10); +- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); +- +- left_vbox = gtk_vbox_new(FALSE, 10); +- gtk_box_pack_start(GTK_BOX(hbox), left_vbox, FALSE, FALSE, 0); +- +- id3_frame = gtk_frame_new(_("ID3 Tag:")); +- gtk_box_pack_start(GTK_BOX(left_vbox), id3_frame, +- FALSE, FALSE, 0); +- +- table = gtk_table_new(5, 5, FALSE); +- gtk_container_set_border_width(GTK_CONTAINER(table), 5); +- gtk_container_add(GTK_CONTAINER(id3_frame), table); +- +- label = gtk_label_new(_("Title:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, +- GTK_FILL, GTK_FILL, 5, 5); +- +- title_entry = gtk_entry_new_with_max_length(30); +- gtk_table_attach(GTK_TABLE(table), title_entry, 1, 4, 0, 1, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- label = gtk_label_new(_("Artist:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, +- GTK_FILL, GTK_FILL, 5, 5); +- +- artist_entry = gtk_entry_new_with_max_length(30); +- gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 4, 1, 2, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- label = gtk_label_new(_("Album:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, +- GTK_FILL, GTK_FILL, 5, 5); +- +- album_entry = gtk_entry_new_with_max_length(30); +- gtk_table_attach(GTK_TABLE(table), album_entry, 1, 4, 2, 3, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- label = gtk_label_new(_("Comment:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, +- GTK_FILL, GTK_FILL, 5, 5); +- +- comment_entry = gtk_entry_new_with_max_length(30); +- gtk_table_attach(GTK_TABLE(table), comment_entry, 1, 4, 3, 4, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- label = gtk_label_new(_("Year:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, +- GTK_FILL, GTK_FILL, 5, 5); +- +- year_entry = gtk_entry_new_with_max_length(4); +- gtk_widget_set_usize(year_entry, 40, -1); +- gtk_table_attach(GTK_TABLE(table), year_entry, 1, 2, 4, 5, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- label = gtk_label_new(_("Track number:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5, +- GTK_FILL, GTK_FILL, 5, 5); +- +- tracknum_entry = gtk_entry_new_with_max_length(3); +- gtk_widget_set_usize(tracknum_entry, 40, -1); +- gtk_table_attach(GTK_TABLE(table), tracknum_entry, 3, 4, 4, 5, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- label = gtk_label_new(_("Genre:")); +- gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); +- gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, +- GTK_FILL, GTK_FILL, 5, 5); +- +- genre_combo = gtk_combo_new(); +- gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry), +- FALSE); ++ gtk_box_pack_start(GTK_BOX(filename_hbox), filename_entry, TRUE, TRUE, 0); ++ ++ id3v1_vbox = gtk_vbox_new(FALSE, 10); ++ id3v1_frame = gtk_frame_new("ID3v1 Information"); ++ gtk_box_pack_start(GTK_BOX(id3v1_vbox), id3v1_frame, TRUE, TRUE, 0); ++ ++ id3v1_frame_vbox = gtk_vbox_new(FALSE,10); ++ gtk_container_add(GTK_CONTAINER(id3v1_frame), id3v1_frame_vbox); ++ ++ table = gtk_table_new(6, 6, FALSE); ++ gtk_container_set_border_width(GTK_CONTAINER(table), 5); ++ //gtk_widget_set_usize(GTK_WIDGET(table), 325, -1); ++ //gtk_container_add(GTK_CONTAINER(id3v1_frame), table); ++ gtk_box_pack_start(GTK_BOX(id3v1_frame_vbox), table, FALSE, FALSE, 0); ++ ++ v1_checkbox = gtk_check_button_new_with_label ("Disable ID3v1 Tag"); ++ gtk_signal_connect(GTK_OBJECT(v1_checkbox), "toggled", GTK_SIGNAL_FUNC(v1_toggle_cb), NULL); ++ gtk_table_attach(GTK_TABLE(table), v1_checkbox, 1, 3, 0, 1, ++ GTK_FILL, GTK_FILL, 0, 2); ++ ++ label = gtk_label_new("Track number:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 3, 4, 0, 1, ++ GTK_FILL, GTK_FILL, 5,5); ++ ++ v1_tracknum_entry = gtk_entry_new_with_max_length(3); ++ gtk_widget_set_usize(v1_tracknum_entry, 20, -1); ++ gtk_table_attach(GTK_TABLE(table), v1_tracknum_entry, 4, 5, 0, 1, ++ GTK_FILL, GTK_FILL, 0, 2); ++ ++ label = gtk_label_new("Title:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v1_title_entry = gtk_entry_new_with_max_length(30); ++ gtk_table_attach(GTK_TABLE(table), v1_title_entry, 1, 5, 1, 2, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Artist:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v1_artist_entry = gtk_entry_new_with_max_length(30); ++ gtk_table_attach(GTK_TABLE(table), v1_artist_entry, 1, 5, 2, 3, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Album:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v1_album_entry = gtk_entry_new_with_max_length(30); ++ gtk_table_attach(GTK_TABLE(table), v1_album_entry, 1, 5, 3, 4, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Comment:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v1_comment_entry = gtk_entry_new_with_max_length(30); ++ gtk_table_attach(GTK_TABLE(table), v1_comment_entry, 1, 5, 4, 5, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Year:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v1_year_entry = gtk_entry_new_with_max_length(4); ++ gtk_widget_set_usize(v1_year_entry, 45, -1); ++ gtk_table_attach(GTK_TABLE(table), v1_year_entry, 1, 2, 5, 6, ++ GTK_FILL, GTK_FILL, 0, 2); ++ ++ label = gtk_label_new("Genre:"); ++ g_ptr_array_add(v1_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 5, 6, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v1_genre_combo = gtk_combo_new(); ++ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(v1_genre_combo)->entry), ++ FALSE); + if (!genre_list) + { + struct genre_item *item; +@@ -408,77 +584,278 @@ + genre_list = g_list_prepend(genre_list, item); + genre_list = g_list_sort(genre_list, genre_comp_func); + } +- genre_set_popdown(genre_combo, genre_list); +- gtk_signal_connect(GTK_OBJECT(GTK_COMBO(genre_combo)->list), +- "select-child", genre_selected, NULL); +- +- gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 4, 5, 6, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, +- GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); +- +- bbox = gtk_hbutton_box_new(); +- gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), +- GTK_BUTTONBOX_END); +- gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); +- gtk_box_pack_start(GTK_BOX(left_vbox), bbox, FALSE, FALSE, 0); +- +- save = gtk_button_new_with_label(_("Save")); +- gtk_signal_connect(GTK_OBJECT(save), "clicked", save_cb, NULL); +- GTK_WIDGET_SET_FLAGS(save, GTK_CAN_DEFAULT); +- gtk_box_pack_start(GTK_BOX(bbox), save, TRUE, TRUE, 0); +- gtk_widget_grab_default(save); +- +- remove_id3 = gtk_button_new_with_label(_("Remove ID3")); +- gtk_signal_connect(GTK_OBJECT(remove_id3), "clicked", +- remove_id3_cb, NULL); +- GTK_WIDGET_SET_FLAGS(remove_id3, GTK_CAN_DEFAULT); +- gtk_box_pack_start(GTK_BOX(bbox), remove_id3, TRUE, TRUE, 0); +- +- cancel = gtk_button_new_with_label(_("Cancel")); +- gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", +- gtk_widget_destroy, GTK_OBJECT(window)); +- GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); +- gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); +- +- mpeg_frame = gtk_frame_new(_("MPEG Info:")); +- gtk_box_pack_start(GTK_BOX(hbox), mpeg_frame, FALSE, FALSE, 0); +- +- mpeg_box = gtk_vbox_new(FALSE, 5); +- gtk_container_add(GTK_CONTAINER(mpeg_frame), mpeg_box); +- gtk_container_set_border_width(GTK_CONTAINER(mpeg_box), 10); +- gtk_box_set_spacing(GTK_BOX(mpeg_box), 0); +- +- mpeg_level = gtk_label_new(""); +- gtk_widget_set_usize(mpeg_level, 120, -2); +- gtk_misc_set_alignment(GTK_MISC(mpeg_level), 0, 0); +- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_level, FALSE, FALSE, 0); +- +- mpeg_bitrate = gtk_label_new(""); +- gtk_misc_set_alignment(GTK_MISC(mpeg_bitrate), 0, 0); +- gtk_label_set_justify(GTK_LABEL(mpeg_bitrate), +- GTK_JUSTIFY_LEFT); +- gtk_box_pack_start(GTK_BOX(mpeg_box), +- mpeg_bitrate, FALSE, FALSE, 0); +- +- mpeg_samplerate = gtk_label_new(""); +- gtk_misc_set_alignment(GTK_MISC(mpeg_samplerate), 0, 0); +- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_samplerate, +- FALSE, FALSE, 0); +- +- mpeg_flags = gtk_label_new(""); +- gtk_misc_set_alignment(GTK_MISC(mpeg_flags), 0, 0); +- gtk_label_set_justify(GTK_LABEL(mpeg_flags), GTK_JUSTIFY_LEFT); +- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_flags, +- FALSE, FALSE, 0); +- +- mpeg_fileinfo = gtk_label_new(""); +- gtk_misc_set_alignment(GTK_MISC(mpeg_fileinfo), 0, 0); +- gtk_label_set_justify(GTK_LABEL(mpeg_fileinfo), +- GTK_JUSTIFY_LEFT); +- gtk_box_pack_start(GTK_BOX(mpeg_box), mpeg_fileinfo, +- FALSE, FALSE, 0); ++ genre_set_popdown(v1_genre_combo, genre_list); ++ gtk_signal_connect(GTK_OBJECT(GTK_COMBO(v1_genre_combo)->list), ++ "select-child", v1_genre_selected, NULL); ++ ++ gtk_table_attach(GTK_TABLE(table), v1_genre_combo, 3, 5, 5, 6, ++ GTK_FILL | GTK_SHRINK, GTK_FILL | ++ GTK_SHRINK, 0, 2); ++ ++ bbox = gtk_hbutton_box_new(); ++ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START); ++ gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 0); ++ gtk_container_set_border_width(GTK_CONTAINER(bbox), 5); ++ gtk_box_pack_start(GTK_BOX(id3v1_frame_vbox), bbox, FALSE, FALSE, 0); ++ ++ copy_from = gtk_button_new_with_label("ID3v1 to ID3v2"); ++ gtk_signal_connect(GTK_OBJECT(copy_from), "clicked", GTK_SIGNAL_FUNC(copy_v1_to_v2_cb), NULL); ++ // remove the next line to thicken the button width ++ GTK_WIDGET_SET_FLAGS(copy_from, GTK_CAN_DEFAULT); ++ gtk_box_pack_start(GTK_BOX(bbox), copy_from, FALSE, TRUE, 0); ++ ++ ++ notebook = gtk_notebook_new (); ++ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP); ++ ++ label = gtk_label_new ("ID3v1"); ++ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), id3v1_vbox, label); ++ ++ ++ //////////////////////////////////////////////////////////////////////////////////////////////////// ++ //////////////////////////////////////////////////////////////////////////////////////////////////// ++ ++ id3v2_vbox = gtk_vbox_new(FALSE, 0); ++ ++ id3v2_frame = gtk_frame_new("ID3v2 Information"); ++ gtk_box_pack_start(GTK_BOX(id3v2_vbox), id3v2_frame, FALSE, FALSE, 0); ++ ++ id3v2_frame_vbox = gtk_vbox_new(FALSE, 0); ++ gtk_container_add(GTK_CONTAINER(id3v2_frame), id3v2_frame_vbox); ++ ++ table = gtk_table_new(6, 6, FALSE); ++ gtk_container_set_border_width(GTK_CONTAINER(table), 5); ++ gtk_widget_set_usize(GTK_WIDGET(table), 400, -1); ++ //gtk_container_add(GTK_CONTAINER(id3v2_frame), table); ++ gtk_box_pack_start(GTK_BOX(id3v2_frame_vbox), table, FALSE, FALSE, 0); ++ ++ v2_checkbox = gtk_check_button_new_with_label ("Disable ID3v2 Tag"); ++ gtk_signal_connect(GTK_OBJECT(v2_checkbox), "toggled", GTK_SIGNAL_FUNC(v2_toggle_cb), NULL); ++ gtk_table_attach(GTK_TABLE(table), v2_checkbox, 1, 3, 0, 1, ++ GTK_FILL, GTK_FILL, 0, 2); ++ ++ label = gtk_label_new("Track number:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 3, 4, 0, 1, ++ GTK_FILL, GTK_FILL, 5,5); ++ ++ v2_tracknum_entry = gtk_entry_new_with_max_length(3); ++ gtk_widget_set_usize(v2_tracknum_entry, 20, -1); ++ gtk_table_attach(GTK_TABLE(table), v2_tracknum_entry, 4, 5, 0, 1, ++ GTK_FILL, GTK_FILL, 0, 2); ++ ++ label = gtk_label_new("Title:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_title_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_title_entry, 1, 5, 1, 2, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Artist:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_artist_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_artist_entry, 1, 5, 2, 3, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Album:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_album_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_album_entry, 1, 5, 3, 4, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Comment:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_comment_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_comment_entry, 1, 5, 4, 5, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Year:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_year_entry = gtk_entry_new_with_max_length(4); ++ gtk_widget_set_usize(v2_year_entry, 45, -1); ++ gtk_table_attach(GTK_TABLE(table), v2_year_entry, 1, 2, 5, 6, ++ GTK_FILL, GTK_FILL, 0, 2); ++ ++ label = gtk_label_new("Genre:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 5, 6, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_genre_combo = gtk_combo_new(); ++ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(v2_genre_combo)->entry), FALSE); ++ genre_set_popdown(v2_genre_combo, genre_list); ++ gtk_signal_connect(GTK_OBJECT(GTK_COMBO(v2_genre_combo)->list), ++ "select-child", v2_genre_selected, NULL); ++ ++ gtk_table_attach(GTK_TABLE(table), v2_genre_combo, 3, 5, 5, 6, ++ GTK_FILL | GTK_SHRINK, GTK_FILL | ++ GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Composer:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 6, 7, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_composer_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_composer_entry, 1, 5, 6, 7, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("Orig. Artist:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 7, 8, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_orig_artist_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_orig_artist_entry, 1, 5, 7, 8, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ label = gtk_label_new("URL:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 8, 9, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_url_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_url_entry, 1, 5, 8, 9, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ label = gtk_label_new("Encoded By:"); ++ g_ptr_array_add(v2_labels_list, (gpointer)label); ++ gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); ++ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 9, 10, ++ GTK_FILL, GTK_FILL, 5, 5); ++ ++ v2_encoded_by_entry = gtk_entry_new_with_max_length(MAX_ENTRY_LEN2); ++ gtk_table_attach(GTK_TABLE(table), v2_encoded_by_entry, 1, 5, 9, 10, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, ++ GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 2); ++ ++ bbox = gtk_hbutton_box_new(); ++ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START); ++ gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 0); ++ gtk_container_set_border_width(GTK_CONTAINER(bbox), 5); ++ gtk_box_pack_start(GTK_BOX(id3v2_frame_vbox), bbox, FALSE, FALSE, 0); ++ ++ copy_to = gtk_button_new_with_label("ID3v2 to ID3v1"); ++ gtk_signal_connect(GTK_OBJECT(copy_to), "clicked", GTK_SIGNAL_FUNC(copy_v2_to_v1_cb), NULL); ++ // remove the next line to thicken the button width ++ GTK_WIDGET_SET_FLAGS(copy_to, GTK_CAN_DEFAULT); ++ gtk_box_pack_start(GTK_BOX(bbox), copy_to, FALSE, TRUE, 0); ++ ++ label = gtk_label_new ("ID3v2"); ++ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), id3v2_vbox, label); ++ ++ ++ //////////////////////////////////////////////////////////////////////////////////////////////////// ++ //////////////////////////////////////////////////////////////////////////////////////////////////// ++ ++ mpeg_frame = gtk_frame_new("MPEG Information"); ++ mpeg_hbox = gtk_hbox_new(FALSE,50); ++ gtk_container_add(GTK_CONTAINER(mpeg_frame), mpeg_hbox); ++ ++ mpeg_lvbox = gtk_vbox_new(FALSE, 5); ++ gtk_container_set_border_width(GTK_CONTAINER(mpeg_lvbox), 10); ++ gtk_box_pack_start(GTK_BOX(mpeg_hbox), mpeg_lvbox, FALSE, FALSE, 0); ++ ++ //gtk_container_set_border_width(GTK_CONTAINER(table), 5); ++ //gtk_widget_set_usize(GTK_WIDGET(table), 325, -1); ++ //gtk_container_add(GTK_CONTAINER(mpeg_frame), table); ++ ++ mpeg_box = gtk_vbox_new(FALSE, 5); ++ gtk_box_pack_start(GTK_BOX(mpeg_hbox), mpeg_box, FALSE, FALSE, 0); ++ gtk_container_set_border_width(GTK_CONTAINER(mpeg_box), 10); ++ gtk_box_set_spacing(GTK_BOX(mpeg_box), 0); ++ ++ mpeg_level = gtk_label_new(""); ++ //gtk_widget_set_usize(mpeg_level, 120, -2); ++ gtk_label_set_justify (GTK_LABEL(mpeg_level), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_alignment(GTK_MISC(mpeg_level), 0, 0.5); ++ gtk_box_pack_start(GTK_BOX(mpeg_lvbox), mpeg_level, FALSE, FALSE, 0); ++ ++ mpeg_samplerate = gtk_label_new(""); ++ gtk_label_set_justify (GTK_LABEL(mpeg_samplerate), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_alignment(GTK_MISC(mpeg_samplerate), 0, 0.5); ++ gtk_box_pack_start(GTK_BOX(mpeg_lvbox), mpeg_samplerate, FALSE, FALSE, 0); ++ ++ mpeg_fileinfo = gtk_label_new(""); ++ gtk_label_set_justify (GTK_LABEL(mpeg_fileinfo), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_alignment(GTK_MISC(mpeg_fileinfo), 0, 0.5); ++ gtk_box_pack_start(GTK_BOX(mpeg_lvbox), mpeg_fileinfo, FALSE, FALSE, 0); ++ ++ mpeg_rvbox = gtk_vbox_new(FALSE, 5); ++ gtk_box_pack_start(GTK_BOX(mpeg_hbox), mpeg_rvbox, FALSE, FALSE, 0); ++ gtk_container_set_border_width(GTK_CONTAINER(mpeg_rvbox), 10); ++ ++ mpeg_bitrate = gtk_label_new(""); ++ gtk_label_set_justify (GTK_LABEL(mpeg_bitrate), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_alignment(GTK_MISC(mpeg_bitrate), 0, 0.5); ++ gtk_box_pack_start(GTK_BOX(mpeg_rvbox), mpeg_bitrate, FALSE, FALSE, 0); ++ ++ mpeg_flags = gtk_label_new(""); ++ gtk_label_set_justify (GTK_LABEL(mpeg_flags), GTK_JUSTIFY_LEFT); ++ gtk_misc_set_alignment(GTK_MISC(mpeg_flags), 0, 0.5); ++ gtk_box_pack_start(GTK_BOX(mpeg_rvbox), mpeg_flags, FALSE, FALSE, 0); ++ ++ label = gtk_label_new ("MPEG"); ++ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), mpeg_frame, label); ++ ++ ////////////////////////////////////////////////////////////////// ++ ////////////////////////////////////////////////////////////////// ++ ++ // add notebook to window vbox ++ gtk_box_pack_start(GTK_BOX(window_vbox), notebook, FALSE, FALSE, 0); ++ ++ // add button box to window vbox ++ bbox = gtk_hbutton_box_new(); ++ gtk_box_pack_start(GTK_BOX(window_vbox), bbox, FALSE, FALSE, 0); ++ ++ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); ++ gtk_button_box_set_spacing (GTK_BUTTON_BOX (bbox), 5); ++ //gtk_button_box_set_child_size (GTK_BUTTON_BOX (bbox), child_w, child_h); ++ ++ save = gtk_button_new_with_label("Save"); ++ gtk_signal_connect(GTK_OBJECT(save), "clicked", GTK_SIGNAL_FUNC(save_cb), NULL); ++ //GTK_WIDGET_SET_FLAGS(save, GTK_CAN_DEFAULT); ++ gtk_box_pack_start(GTK_BOX(bbox), save, TRUE, TRUE, 5); ++ //gtk_widget_grab_default(save); ++ ++ close = gtk_button_new_with_label("Close"); ++ gtk_signal_connect_object(GTK_OBJECT(close), "clicked", ++ GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(window)); ++ //GTK_WIDGET_SET_FLAGS(close, GTK_CAN_DEFAULT); ++ gtk_box_pack_start(GTK_BOX(bbox), close, TRUE, TRUE, 5); + +- gtk_widget_show_all(window); ++ gtk_container_add(GTK_CONTAINER(window), window_vbox); ++ gtk_widget_show_all(window); + } + + if (current_filename) +@@ -495,29 +872,43 @@ + title = g_strdup(g_basename(filename)); + if ((tmp = strrchr(title, '.')) != NULL) + *tmp = '\0'; +- gtk_entry_set_text(GTK_ENTRY(title_entry), title); ++ gtk_entry_set_text(GTK_ENTRY(v1_title_entry), title); ++ gtk_entry_set_text(GTK_ENTRY(v2_title_entry), title); + g_free(title); + +- gtk_entry_set_text(GTK_ENTRY(artist_entry), ""); +- gtk_entry_set_text(GTK_ENTRY(album_entry), ""); +- gtk_entry_set_text(GTK_ENTRY(year_entry), ""); +- gtk_entry_set_text(GTK_ENTRY(tracknum_entry), ""); +- gtk_entry_set_text(GTK_ENTRY(comment_entry), ""); +- gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list), ++ gtk_entry_set_text(GTK_ENTRY(v1_artist_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v1_album_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v1_year_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v1_tracknum_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v1_comment_entry), ""); ++ gtk_list_select_item(GTK_LIST(GTK_COMBO(v1_genre_combo)->list), ++ genre_find_index(genre_list, 0xff)); ++ ++ gtk_entry_set_text(GTK_ENTRY(v2_artist_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_album_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_year_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_tracknum_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_comment_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_composer_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_orig_artist_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_url_entry), ""); ++ gtk_entry_set_text(GTK_ENTRY(v2_encoded_by_entry), ""); ++ gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list), + genre_find_index(genre_list, 0xff)); ++ + gtk_label_set_text(GTK_LABEL(mpeg_level), "MPEG ?, layer ?"); + gtk_label_set_text(GTK_LABEL(mpeg_bitrate), ""); + gtk_label_set_text(GTK_LABEL(mpeg_samplerate), ""); + gtk_label_set_text(GTK_LABEL(mpeg_flags), ""); + gtk_label_set_text(GTK_LABEL(mpeg_fileinfo), ""); +- + if (!strncasecmp(filename, "http://", 7)) + { + file_info_http(filename); + return; + } + +- gtk_widget_set_sensitive(id3_frame, TRUE); ++ gtk_widget_set_sensitive(id3v1_frame, TRUE); ++ gtk_widget_set_sensitive(id3v2_frame, TRUE); + + if ((fh = fopen(current_filename, "rb")) != NULL) + { +@@ -525,40 +916,95 @@ + unsigned char tmp[4]; + struct frame frm; + gboolean id3_found = FALSE; ++ char *temp = NULL; ++ struct id3_tag *id3 = NULL; + +- fseek(fh, -sizeof (tag), SEEK_END); +- if (fread(&tag, 1, sizeof (tag), fh) == sizeof (tag)) ++ /* ++ * Try reading ID3v2 tag. ++ */ ++ if (!mpg123_cfg.disable_id3v2) + { +- if (!strncmp(tag.tag, "TAG", 3)) ++ fseek(fh, 0, SEEK_SET); ++ id3 = id3_open_fp(fh, 0); ++ if (id3) + { +- id3_found = TRUE; +- set_entry_tag(GTK_ENTRY(title_entry), +- tag.title, 30); +- set_entry_tag(GTK_ENTRY(artist_entry), +- tag.artist, 30); +- set_entry_tag(GTK_ENTRY(album_entry), +- tag.album, 30); +- set_entry_tag(GTK_ENTRY(year_entry), +- tag.year, 4); +- /* Check for v1.1 tags */ +- if (tag.u.v1_1.__zero == 0) +- { +- char *temp = g_strdup_printf("%d", tag.u.v1_1.track_number); +- set_entry_tag(GTK_ENTRY(comment_entry), +- tag.u.v1_1.comment, 28); +- gtk_entry_set_text(GTK_ENTRY(tracknum_entry), temp); +- g_free(temp); +- } +- else +- { +- set_entry_tag(GTK_ENTRY(comment_entry), +- tag.u.v1_0.comment, 30); +- gtk_entry_set_text(GTK_ENTRY(tracknum_entry), ""); +- } ++ mpg123_get_id3v2(id3, &id3v2tag); ++ set_entry_tag(GTK_ENTRY(v2_title_entry), ++ id3v2tag.title, 128); ++ set_entry_tag(GTK_ENTRY(v2_artist_entry), ++ id3v2tag.artist, 128); ++ set_entry_tag(GTK_ENTRY(v2_album_entry), ++ id3v2tag.album, 128); ++ set_entry_tag(GTK_ENTRY(v2_comment_entry), ++ id3v2tag.comment, 256); ++ set_entry_tag(GTK_ENTRY(v2_composer_entry), ++ id3v2tag.composer, MAX_ENTRY_LEN2); ++ set_entry_tag(GTK_ENTRY(v2_orig_artist_entry), ++ id3v2tag.orig_artist, MAX_ENTRY_LEN2); ++ set_entry_tag(GTK_ENTRY(v2_url_entry), ++ id3v2tag.url, MAX_ENTRY_LEN2); ++ set_entry_tag(GTK_ENTRY(v2_encoded_by_entry), ++ id3v2tag.encoded_by, MAX_ENTRY_LEN2); + +- gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list), genre_find_index(genre_list, tag.genre)); ++ temp = g_strdup_printf("%d", id3v2tag.track_number); ++ gtk_entry_set_text(GTK_ENTRY(v2_tracknum_entry), temp); ++ g_free(temp); ++ ++ temp = g_strdup_printf("%d", id3v2tag.year); ++ gtk_entry_set_text(GTK_ENTRY(v2_year_entry), temp); ++ g_free(temp); ++ ++ printf("Loading genre: %s", id3v2tag.genre); ++ gtk_list_select_item(GTK_LIST(GTK_COMBO(v2_genre_combo)->list), genre_find_index_str(genre_list, id3v2tag.genre)); ++ id3_close(id3); + } ++ else ++ { ++ // Grey out the id3v2 tab ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(v2_checkbox), TRUE); ++ } ++ } ++ ++ /* ++ * Try reading ID3v1 tag. ++ */ ++ fseek(fh, -sizeof (id3v1tag), SEEK_END); ++ if ( (fread(&id3v1tag, 1, sizeof (id3v1tag), fh) == sizeof (id3v1tag)) && ++ !strncmp(id3v1tag.tag, "TAG", 3)) ++ { ++ id3_found = TRUE; ++ set_entry_tag(GTK_ENTRY(v1_title_entry), ++ id3v1tag.title, 30); ++ set_entry_tag(GTK_ENTRY(v1_artist_entry), ++ id3v1tag.artist, 30); ++ set_entry_tag(GTK_ENTRY(v1_album_entry), ++ id3v1tag.album, 30); ++ set_entry_tag(GTK_ENTRY(v1_year_entry), ++ id3v1tag.year, 4); ++ /* Check for v1.1 tags */ ++ if (id3v1tag.u.v1_1.__zero == 0) ++ { ++ char *temp = g_strdup_printf("%d", id3v1tag.u.v1_1.track_number); ++ set_entry_tag(GTK_ENTRY(v1_comment_entry), ++ id3v1tag.u.v1_1.comment, 28); ++ gtk_entry_set_text(GTK_ENTRY(v1_tracknum_entry), temp); ++ g_free(temp); ++ } ++ else ++ { ++ set_entry_tag(GTK_ENTRY(v1_comment_entry), ++ id3v1tag.u.v1_0.comment, 30); ++ gtk_entry_set_text(GTK_ENTRY(v1_tracknum_entry), ""); ++ } ++ ++ gtk_list_select_item(GTK_LIST(GTK_COMBO(v1_genre_combo)->list), genre_find_index(genre_list, id3v1tag.genre)); + } ++ else ++ { ++ // Grey out id3v1 tab ++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(v1_checkbox), TRUE); ++ } ++ + rewind(fh); + if (fread(tmp, 1, 4, fh) != 4) + { +diff -Naur xmms-1.2.9-orig/Input/mpg123/id3.h xmms-1.2.9/Input/mpg123/id3.h +--- xmms-1.2.9-orig/Input/mpg123/id3.h Thu Jan 29 06:43:24 2004 ++++ xmms-1.2.9/Input/mpg123/id3.h Thu Jan 29 05:20:31 2004 +@@ -351,6 +351,7 @@ + int id3_set_text(struct id3_frame *, char *); + int id3_set_text_number(struct id3_frame *, int); + gboolean id3_frame_is_text(struct id3_frame *frame); ++char* id3_get_comm(struct id3_frame *frame); + + /* From id3_frame_content.c */ + char *id3_get_content(struct id3_frame *); +diff -Naur xmms-1.2.9-orig/Input/mpg123/id3_frame_text.c xmms-1.2.9/Input/mpg123/id3_frame_text.c +--- xmms-1.2.9-orig/Input/mpg123/id3_frame_text.c Thu Jan 29 06:43:24 2004 ++++ xmms-1.2.9/Input/mpg123/id3_frame_text.c Thu Jan 29 05:18:54 2004 +@@ -38,15 +38,15 @@ + + char *id3_utf16_to_ascii(void *utf16) + { +- char ascii[256]; +- char *uc = (char *) utf16 + 2; +- int i; +- +- for (i = 0; *uc != 0 && i < sizeof(ascii); i++, uc += 2) +- ascii[i] = *uc; +- +- ascii[i] = 0; +- return g_strdup(ascii); ++ char ascii[256]; ++ char *uc = (char *) utf16 + 2; ++ int i; ++ ++ for (i = 0; *uc != 0 && i < sizeof(ascii); i++, uc += 2) ++ ascii[i] = *uc; ++ ++ ascii[i] = 0; ++ return g_strdup(ascii); + } + + +@@ -59,25 +59,25 @@ + */ + gint8 id3_get_encoding(struct id3_frame *frame) + { +- /* Type check */ +- if (!id3_frame_is_text(frame) && +- frame->fr_desc->fd_id != ID3_WXXX && +- frame->fr_desc->fd_id != ID3_IPLS && +- frame->fr_desc->fd_id != ID3_USLT && +- frame->fr_desc->fd_id != ID3_SYLT && +- frame->fr_desc->fd_id != ID3_COMM && +- frame->fr_desc->fd_id != ID3_APIC && +- frame->fr_desc->fd_id != ID3_GEOB && +- frame->fr_desc->fd_id != ID3_USER && +- frame->fr_desc->fd_id != ID3_OWNE && +- frame->fr_desc->fd_id != ID3_COMR) +- return -1; +- +- /* Check if frame is compressed */ +- if (id3_decompress_frame(frame) == -1) +- return -1; ++ /* Type check */ ++ if (!id3_frame_is_text(frame) && ++ frame->fr_desc->fd_id != ID3_WXXX && ++ frame->fr_desc->fd_id != ID3_IPLS && ++ frame->fr_desc->fd_id != ID3_USLT && ++ frame->fr_desc->fd_id != ID3_SYLT && ++ frame->fr_desc->fd_id != ID3_COMM && ++ frame->fr_desc->fd_id != ID3_APIC && ++ frame->fr_desc->fd_id != ID3_GEOB && ++ frame->fr_desc->fd_id != ID3_USER && ++ frame->fr_desc->fd_id != ID3_OWNE && ++ frame->fr_desc->fd_id != ID3_COMR) ++ return -1; ++ ++ /* Check if frame is compressed */ ++ if (id3_decompress_frame(frame) == -1) ++ return -1; + +- return *(gint8 *) frame->fr_data; ++ return *(gint8 *) frame->fr_data; + } + + +@@ -92,25 +92,25 @@ + { + /* Type check */ + if ( frame->fr_desc->fd_idstr[0] != 'T' && +- frame->fr_desc->fd_id != ID3_WXXX && +- frame->fr_desc->fd_id != ID3_IPLS && +- frame->fr_desc->fd_id != ID3_USLT && +- frame->fr_desc->fd_id != ID3_SYLT && +- frame->fr_desc->fd_id != ID3_COMM && +- frame->fr_desc->fd_id != ID3_APIC && +- frame->fr_desc->fd_id != ID3_GEOB && +- frame->fr_desc->fd_id != ID3_USER && +- frame->fr_desc->fd_id != ID3_OWNE && +- frame->fr_desc->fd_id != ID3_COMR ) +- return -1; ++ frame->fr_desc->fd_id != ID3_WXXX && ++ frame->fr_desc->fd_id != ID3_IPLS && ++ frame->fr_desc->fd_id != ID3_USLT && ++ frame->fr_desc->fd_id != ID3_SYLT && ++ frame->fr_desc->fd_id != ID3_COMM && ++ frame->fr_desc->fd_id != ID3_APIC && ++ frame->fr_desc->fd_id != ID3_GEOB && ++ frame->fr_desc->fd_id != ID3_USER && ++ frame->fr_desc->fd_id != ID3_OWNE && ++ frame->fr_desc->fd_id != ID3_COMR ) ++ return -1; + + /* Check if frame is compressed */ + if (id3_decompress_frame(frame) == -1) +- return -1; ++ return -1; + + /* Changing the encoding of frames is not supported yet */ + if ( *(gint8 *) frame->fr_data != encoding ) +- return -1; ++ return -1; + + /* Set encoding */ + *(gint8 *) frame->fr_data = encoding; +@@ -128,44 +128,44 @@ + { + /* Type check */ + if ( frame->fr_desc->fd_idstr[0] != 'T' ) +- return NULL; ++ return NULL; + + /* Check if frame is compressed */ + if (id3_decompress_frame(frame) == -1) +- return NULL; ++ return NULL; + + if ( frame->fr_desc->fd_id == ID3_TXXX ) { +- /* +- * This is a user defined text frame. Skip the description. +- */ +- switch ( *(guint8 *) frame->fr_data ) { +- case ID3_ENCODING_ISO_8859_1: +- { +- char *text = (char *) frame->fr_data + 1; +- +- while ( *text != 0 ) +- text++; +- +- return g_strdup(++text); +- } +- case ID3_ENCODING_UTF16: +- { +- char *text16 = (char *) frame->fr_data + 1; +- +- while (*text16 != 0 || *(text16 + 1) != 0) +- text16 += 2; +- +- return id3_utf16_to_ascii(text16 + 2); +- } +- default: +- return NULL; +- } ++ /* ++ * This is a user defined text frame. Skip the description. ++ */ ++ switch ( *(guint8 *) frame->fr_data ) { ++ case ID3_ENCODING_ISO_8859_1: ++ { ++ char *text = (char *) frame->fr_data + 1; ++ ++ while ( *text != 0 ) ++ text++; ++ ++ return g_strdup(++text); ++ } ++ case ID3_ENCODING_UTF16: ++ { ++ char *text16 = (char *) frame->fr_data + 1; ++ ++ while (*text16 != 0 || *(text16 + 1) != 0) ++ text16 += 2; ++ ++ return id3_utf16_to_ascii(text16 + 2); ++ } ++ default: ++ return NULL; ++ } + } + + if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1) +- return g_strdup((char *) frame->fr_data + 1); ++ return g_strdup((char *) frame->fr_data + 1); + else +- return id3_utf16_to_ascii(((char *) frame->fr_data + 1)); ++ return id3_utf16_to_ascii(((char *) frame->fr_data + 1)); + } + + +@@ -179,20 +179,20 @@ + { + /* Type check */ + if ( frame->fr_desc->fd_idstr[0] != 'T' ) +- return NULL; ++ return NULL; + + /* If predefined text frame, return description. */ + if ( frame->fr_desc->fd_id != ID3_TXXX ) +- return frame->fr_desc->fd_description; ++ return frame->fr_desc->fd_description; + + /* Check if frame is compressed */ + if (id3_decompress_frame(frame) == -1) +- return NULL; ++ return NULL; + + if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1) +- return g_strdup((char *) frame->fr_data + 1); ++ return g_strdup((char *) frame->fr_data + 1); + else +- return id3_utf16_to_ascii((char *) frame->fr_data + 1); ++ return id3_utf16_to_ascii((char *) frame->fr_data + 1); + } + + +@@ -209,42 +209,42 @@ + + /* Check if frame is compressed */ + if (id3_decompress_frame(frame) == -1) +- return -1; ++ return -1; + + /* + * Generate integer according to encoding. + */ + switch ( *(guint8 *) frame->fr_data ) { +- case ID3_ENCODING_ISO_8859_1: +- { +- char *text = ((char *) frame->fr_data) + 1; +- +- while ( *text >= '0' && *text <= '9' ) { +- number *= 10; +- number += *text - '0'; +- text++; +- } ++ case ID3_ENCODING_ISO_8859_1: ++ { ++ char *text = ((char *) frame->fr_data) + 1; ++ ++ while ( *text >= '0' && *text <= '9' ) { ++ number *= 10; ++ number += *text - '0'; ++ text++; ++ } ++ ++ return number; ++ } ++ case ID3_ENCODING_UTF16: ++ { ++ char *text = ((char *) frame->fr_data) + 3; ++ ++/* if (*(gint16 *) frame->fr_data == 0xfeff) */ ++/* text++; */ ++ ++ while ( *text >= '0' && *text <= '9' ) { ++ number *= 10; ++ number += *text - '0'; ++ text++; ++ } + +- return number; +- } +- case ID3_ENCODING_UTF16: +- { +- char *text = ((char *) frame->fr_data) + 3; +- +-/* if (*(gint16 *) frame->fr_data == 0xfeff) */ +-/* text++; */ +- +- while ( *text >= '0' && *text <= '9' ) { +- number *= 10; +- number += *text - '0'; +- text++; +- } ++ return number; ++ } + +- return number; +- } +- +- default: +- return -1; ++ default: ++ return -1; + } + } + +@@ -260,7 +260,7 @@ + { + /* Type check */ + if ( frame->fr_desc->fd_idstr[0] != 'T' ) +- return -1; ++ return -1; + + /* + * Release memory occupied by previous data. +@@ -289,6 +289,58 @@ + } + + ++ ++ ++char* id3_get_comm(struct id3_frame *frame) ++{ ++ ++ /* Type check */ ++ if ( frame->fr_desc->fd_id != ID3_COMM ) ++ return NULL; ++ ++ /* Check if frame is compressed */ ++ if (id3_decompress_frame(frame) == -1) ++ return NULL; ++ ++ /* ++ *
    ++ * Text encoding $xx ++ * Language $xx xx xx ++ * Short content descrip. $00 (00) ++ * The actual text ++ * ++ * Skip language and short description. ++ */ ++ switch ( *(guint8 *) frame->fr_data ) { ++ case ID3_ENCODING_ISO_8859_1: ++ { ++ char *text = (char *) frame->fr_data + 4; ++ ++ while ( *text != 0 ) ++ text++; ++ ++ return g_strdup(++text); ++ } ++ case ID3_ENCODING_UTF16: ++ { ++ char *text16 = (char *) frame->fr_data + 4; ++ ++ while (*text16 != 0 || *(text16 + 1) != 0) ++ text16 += 2; ++ ++ return id3_utf16_to_ascii(text16 + 2); ++ } ++ default: ++ return NULL; ++ } ++ ++ if (*(guint8 *) frame->fr_data == ID3_ENCODING_ISO_8859_1) ++ return g_strdup((char *) frame->fr_data + 1); ++ else ++ return id3_utf16_to_ascii(((char *) frame->fr_data + 1)); ++} ++ ++ + /* + * Function id3_set_text_number (frame, number) + * +@@ -304,25 +356,25 @@ + + /* Type check */ + if ( frame->fr_desc->fd_idstr[0] != 'T' ) +- return -1; ++ return -1; + + /* + * Release memory occupied by previous data. + */ + id3_frame_clear_data(frame); +- ++ + /* + * Create a string with a reversed number. + */ + pos = 0; + while ( number > 0 && pos < 64 ) { +- buf[pos++] = (number % 10) + '0'; +- number /= 10; ++ buf[pos++] = (number % 10) + '0'; ++ number /= 10; + } + if ( pos == 64 ) +- return -1; ++ return -1; + if ( pos == 0 ) +- buf[pos++] = '0'; ++ buf[pos++] = '0'; + + /* + * Allocate memory for new data. +@@ -336,7 +388,7 @@ + *(gint8 *) frame->fr_raw_data = ID3_ENCODING_ISO_8859_1; + text = (char *) frame->fr_raw_data + 1; + while ( --pos >= 0 ) +- *text++ = buf[pos]; ++ *text++ = buf[pos]; + *text = '\0'; + + frame->fr_altered = 1; +@@ -350,9 +402,9 @@ + + gboolean id3_frame_is_text(struct id3_frame *frame) + { +- if (frame && frame->fr_desc && +- (frame->fr_desc->fd_idstr[0] == 'T' || +- frame->fr_desc->fd_idstr[0] == 'W' )) +- return TRUE; +- return FALSE; ++ if (frame && frame->fr_desc && ++ (frame->fr_desc->fd_idstr[0] == 'T' || ++ frame->fr_desc->fd_idstr[0] == 'W' )) ++ return TRUE; ++ return FALSE; + } +diff -Naur xmms-1.2.9-orig/Input/mpg123/lib_id3v2.h xmms-1.2.9/Input/mpg123/lib_id3v2.h +--- xmms-1.2.9-orig/Input/mpg123/lib_id3v2.h Wed Dec 31 19:00:00 1969 ++++ xmms-1.2.9/Input/mpg123/lib_id3v2.h Thu Jan 29 05:20:31 2004 +@@ -0,0 +1,1280 @@ ++/* the id3v2.3 library. ++ * (c)2002 by Samuel Abels (sam@manicsadness.com) ++ * This project's homepage is: http://software.manicsadness.com/cantus ++ * ++ * This library is designed for easyest possible access to id3 V2 tags. ++ * ++ * 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 ++ */ ++ ++#ifndef DLL_H ++#define DLL_H ++typedef struct DLL_s ++{ ++ void *prev; ++ void *data; ++ void *next; ++} DLL; ++#endif ++ ++#ifndef FALSE ++#define FALSE 0 ++#endif ++#ifndef TRUE ++#define TRUE 1 ++#endif ++ ++#ifndef id3Tag_def ++#define id3Tag_def ++ ++typedef struct id3Tag_s ++{ ++ char title[1024]; ++ char artist[1024]; ++ char album[1024]; ++ char year[5]; ++ char comment[1024]; ++ char track[3]; ++ char genre[512]; ++ char composer[1024]; ++ char url[1024]; ++ char orig_artist[1024]; ++ char enc_by[1024]; ++ unsigned int size; ++ short int has_footer; ++} id3Tag; ++ ++typedef struct id3v2Tag_s ++{ ++// header ++ int tag_size; ++ short int unsync; ++ short int has_extheader; ++ short int is_experimental; ++//extheader ++ int extheader_size; ++ int padding_size; ++ short int crc_data_present; ++ char crc_data[4]; ++// frames ++ DLL *frames; ++} id3v2Tag; ++ ++typedef struct id3v2Frame_s ++{ ++ unsigned char id[4]; ++ int datasize; ++ short int tagalter; ++ short int filealter; ++ short int readonly; ++ short int compression; ++ short int encryption; ++ short int grouping; ++ char *data; ++} id3v2Frame; ++ ++#endif ++ ++/* the id3v2.3 library. ++ * (c)2002 by Samuel Abels (sam@manicsadness.com) ++ * This project's homepage is: http://software.manicsadness.com/cantus ++ * ++ * This library is designed for easyest possible access to id3 V2 tags. ++ * ++ * 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 ++ */ ++ ++#include ++#include ++#include ++#include ++#include "charset.h" ++ ++ ++ ++/*************************************************************************************** ++ * BELOW FOLLOW THE STATICS ++ ***************************************************************************************/ ++// Return the last item of an doubly linked list ++static DLL * ++dll_last (DLL *list) ++{ ++ if( list == NULL ) ++ return (NULL); ++ ++ while ( list->next != NULL ) ++ list = list->next; ++ ++ return (list); ++} ++ ++// Append an item to the doubly linked list ++static DLL * ++dll_append (DLL *list, void *data) ++{ ++ DLL *item = malloc (sizeof(DLL)); ++ DLL *lastitem = dll_last(list); ++ ++ item->data = data; ++ item->next = NULL; ++ ++ if ( lastitem == NULL ) ++ { ++ item->prev = NULL; ++ return (item); ++ } ++ else ++ { ++ item->prev = lastitem; ++ lastitem->next = item; ++ } ++ ++ return list; ++} ++ ++static DLL * ++dll_remove (DLL *list, void *data) ++{ ++ DLL *item = list; ++ ++ while ( item ) ++ { ++ if ( item->data == data ) ++ { ++ if ( item->prev == NULL ++ && item->next == NULL ) ++ { ++// No other items there? Then return a zero pointer. ++ free (item); ++ return (NULL); ++ } ++ if ( item->prev == NULL ) ++ { ++// remove the first item of the list here... ++ list = item->next; ++ list->prev = NULL; ++ free (item); ++ ++ break; ++ } ++ if ( item->next == NULL ) ++ { ++// ...remove the last item of the list here... ++ ((DLL*)(item->prev))->next = NULL; ++ free (item); ++ ++ break; ++ } ++// ...or other items here ++ ((DLL*)(item->prev))->next = item->next; ++ ((DLL*)(item->next))->prev = item->prev; ++ free (item); ++ ++ break; ++ } ++ item = item->next; ++ } ++ ++ return list; ++} ++ ++// Free a doubly linked list ++static DLL * ++dll_free (DLL *list) ++{ ++ DLL *item = list; ++ DLL *current = NULL; ++ ++ while (item) ++ { ++ current = item; ++ item = item->next; ++ ++ free (current); ++ } ++ ++ return NULL; ++} ++ ++/* ++ * Converts all occurences of a CR/LF to LF ++ */ ++static void ++crlf2cr (char *source) ++{ ++ char *psource = source; ++ char destination[2048]; ++ ++ if(source != NULL) ++ { ++ memset (destination, 0, 2048); ++ for (psource = source; *psource != '\0'; psource++) ++ { ++ if(*psource == 13 ++ && *(psource+1) == 10 ) ++ { ++ psource++; ++ } ++ destination[strlen(destination)] = *psource; ++ } ++ } ++ ++ strncpy (source, destination, strlen(destination)+1); ++} ++ ++ ++/* ++ * Converts all occurences of a LF to CR/LF ++ */ ++static void ++cr2crlf (char *source) ++{ ++ char *psource = source; ++ char destination[2048]; ++ ++ if( source != NULL ) ++ { ++ memset (destination, 0, 2048); ++ for (psource = source; *psource != '\0'; psource++) ++ { ++ if (*psource == 10) ++ destination[strlen(destination)] = 13; ++ destination[strlen(destination)] = *psource; ++ } ++ } ++ ++ strncpy (source, destination, strlen(destination)+1); ++} ++ ++ ++ ++ ++/* ++ * Reads the first ten bytes of an file and checks, if it's a valid ID3 V2.3 file ++ * If it is, the header flags are stored in the tag struct. ++ * Returns TRUE on a valid header, otherwise FALSE. ++ */ ++static short int ++check_header (FILE *mp3file, id3v2Tag *v2) ++{ ++ unsigned char buf[10]; ++ ++// get header (=first ten bytes of the file) ++ fseek (mp3file, 0, SEEK_SET); ++ if ( fread (buf, 1, 10, mp3file) < 10 ) ++ return (FALSE); ++ ++// a valid tag must begin with "ID3" followed by the version (checked below) ++// followed by a flag byte, where the last five bytes are unused and must be FALSE ++ if ( memcmp(buf, "ID3", 3) != 0 ++ || (buf[5] & 31) != 0 ) ++ return (FALSE); ++ ++// check if version is supported ++ if ( buf[3] != 3 ++ || buf[4] != 0 ) ++ return (FALSE); ++ ++// The next thing to come is the tag size. These are 4 bytes, the MSB should always be set to zero. check! ++ if ( (buf[6] & 128) != 0 ++ || (buf[7] & 128) != 0 ++ || (buf[8] & 128) != 0 ++ || (buf[9] & 128) != 0 ) ++ return (FALSE); ++ ++// The tag size is encoded to be syncsave, so I got to decode it. ++// The tag size is the size of the complete tag EXCLUDING the 10-byte header. ++ v2->tag_size = buf[9] + (buf[8] << 7) + (buf[7] << 14) + (buf[6] << 21); ++ ++// ok, so were save. put the flags in the nicer struct. ++ v2->unsync = (buf[5] & 128) >> 7; ++ v2->has_extheader = (buf[5] & 64) >> 6; ++ v2->is_experimental = (buf[5] & 32) >> 5; ++ ++ return (TRUE); ++} ++ ++ ++ ++ ++ ++/* ++ * Reads the extheader of a valid ID3V2.3 file and checks, if it's a valid. ++ * If it is, the extheader flags are stored in the tag struct. ++ * Returns TRUE on a valid extheader, otherwise FALSE. ++ */ ++static short int ++check_extheader (FILE *mp3file, id3v2Tag *v2) ++{ ++ unsigned char buf[10]; ++ ++// Read id3 extheader intro (5 bytes) ++ fseek (mp3file, 10, SEEK_SET); ++ if ( fread(buf, 1, 5, mp3file) < 5 ) ++ return (FALSE); ++ ++// First comes the extheader size. These are 4 bytes, the MSB should always be set to zero. check! ++ if( (buf[0] & 128) != 0 ++ || (buf[1] & 128) != 0 ++ || (buf[2] & 128) != 0 ++ || (buf[3] & 128) != 0 ) ++ return (FALSE); ++ ++// OK. In ID3V2.3 only six byte or ten byte extheaders are allowed. ++ if( v2->extheader_size != 6 ++ && v2->extheader_size != 10 ) ++ return (FALSE); ++ ++// The first four bytes specify the extheader size. ++ v2->extheader_size = buf[3] + (buf[2] << 7) + (buf[1] << 14) + (buf[0] << 21); ++ ++// The fifth byte specifies extendened flags. (in fact, only one flag is used for ID3V2.3 ++// The MSB of the byte 5 specifies, if there is CRC data to come, appended to the extheader. ++ if( (buf[4] & 127) != 0 ++ || buf[5] != 0 ) ++ return (FALSE); ++ ++ v2->crc_data_present = (buf[4] & 128) >> 7; ++ ++// if crc data is present, the extheader size must be ten bytes, otherwise 6. ++ if ( (v2->extheader_size == 6 && v2->crc_data_present == TRUE) ++ || (v2->extheader_size == 10 && v2->crc_data_present == FALSE) ) ++ return (FALSE); ++ ++// now come four bytes specifying the padding size ++ if ( (buf[6] & 128) != 0 ++ || (buf[7] & 128) != 0 ++ || (buf[8] & 128) != 0 ++ || (buf[9] & 128) != 0 ) ++ return (FALSE); ++ ++ v2->padding_size = buf[9] + (buf[8] << 7) + (buf[7] << 14) + (buf[6] << 21); ++ ++// Now to the optional crc data. ++ if( v2->crc_data_present ) ++ { ++ if( fread (buf, 1, 4, mp3file) < 4 ) ++ return (FALSE); ++ ++ memcpy (v2->crc_data, buf, 4); ++ } ++ ++ return (TRUE); ++} ++ ++ ++ ++ ++ ++/* ++ * Reads the complete frames of a valid ID3V2.3 file and checks, if they are valid. ++ * If they are, the flags are stored in a DLL and appended to the tag struct. ++ * Returns TRUE on success, otherwise FALSE. ++ */ ++static short int ++read_frames (FILE *mp3file, id3v2Tag *v2) ++{ ++ unsigned char buf[10]; ++ int numframes = 0; ++ unsigned int totalframesize = 0; ++ id3v2Frame *frame = NULL; ++ ++// set the position to the first frame header (header = 10 bytes + extheadersize + 4 bytes "extheaderheader") ++ if (v2->has_extheader) ++ fseek (mp3file, 10 + v2->extheader_size + 4, SEEK_SET); ++ else ++ fseek (mp3file, 10, SEEK_SET); ++ ++// If the tag size is too small for frames, return with an error. ++ if ( ((v2->tag_size + 10) - v2->padding_size) <= ftell(mp3file) ) ++ return FALSE; ++ ++// now read all the frames ++ numframes = 0; ++ v2->frames = NULL; ++ while ( ftell (mp3file) < ((v2->tag_size + 10) - v2->padding_size) ) ++ { ++ frame = calloc (1, sizeof(id3v2Frame)); ++ ++// the frame header is ten bytes long ++ if ( fread (buf, 1, 10, mp3file) < 10 ) ++ goto error; ++ ++// if we are already in the padding, we must no longer look for frames... ++ if ( buf[0] == 0 && buf[1] == 0 && buf[2] == 0 && buf[3] == 0 ) ++ { ++ if (numframes == 0) ++ goto error; ++ ++ free (frame); ++ break; ++ } ++ ++// first come four characters identifying the frame. It must be alphanumeric. ++ if ( !isalnum(buf[0]) || !isalnum(buf[1]) || !isalnum(buf[2]) || !isalnum(buf[3]) ) ++ goto error; ++ ++ *(frame->id) = buf[0]; ++ *(frame->id + 1) = buf[1]; ++ *(frame->id + 2) = buf[2]; ++ *(frame->id + 3) = buf[3]; ++ ++// then, the frame size is to come. Again, the four MSBs must be zero. ++ if ( (buf[4] & 128) != 0 ++ || (buf[5] & 128) != 0 ++ || (buf[6] & 128) != 0 ++ || (buf[7] & 128) != 0 ) ++ goto error; ++ ++ frame->datasize = buf[7] + (buf[6] << 7) + (buf[5] << 14) + (buf[4] << 21); ++ ++// A minimum size must be present! ++ if ( frame->datasize <= 0 ) ++ goto error; ++ ++// The two following frame header flags have the 5 LSBs not set. ++ if ( (buf[8] & 31) != 0 ++ || (buf[9] & 31) != 0 ) ++ goto error; ++ ++// now, put the flags in the struct. ++ frame->tagalter = (buf[8] & 128) >> 7; ++ frame->filealter = (buf[8] & 64) >> 6; ++ frame->readonly = (buf[8] & 32) >> 5; ++ ++ frame->compression = (buf[9] & 128) >> 7; ++ frame->encryption = (buf[8] & 64) >> 6; ++ frame->grouping = (buf[8] & 32) >> 5; ++ ++// ok, we are done with the frame header, so now we read the frame data. ++ frame->data = calloc (1, frame->datasize + 1); ++ if( fread (frame->data, 1, frame->datasize, mp3file) < frame->datasize ) ++ goto error; ++ ++ numframes++; ++ totalframesize += 10 + frame->datasize; ++ ++// we append it to a glist, which is appended to the v2 struct. ++ v2->frames = dll_append (v2->frames, frame); ++ } ++ ++// if we have no extheader, that means, we don't know how much padding we have! ++// thus, i calculate it here. ++ if ( !v2->has_extheader ) ++ v2->padding_size = v2->tag_size - totalframesize; ++ ++// A minimum of one frame is mandatory. ++ if( numframes > 0 ) ++ return (TRUE); ++ ++error: ++// cleanups in case of an error. ++ if( frame && frame->data ) ++ free (frame->data); ++ if( frame ) ++ free (frame); ++ return (FALSE); ++} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++/* ++ * Reads all tag information of a valid ID3V2.3 file. ++ * When successful, the info is stored in the tag struct. ++ * Returns: ++ * 0 = success ++ * 1 = Cannot open file. ++ * 2 = No header or wrong version. ++ * 3 = broken extheader. ++ * 4 = broken frames. ++ */ ++static int ++get_id3v2tag_raw (id3v2Tag *v2, char *filename) ++{ ++ FILE *mp3file = NULL; ++ int error = 0; ++ ++// open file ++ error = 1; ++ mp3file = fopen (filename, "rb"); ++ if (!mp3file) ++ goto done; ++ ++// check/get header ++ error = 2; ++ if( !check_header (mp3file, v2) ) ++ goto done; ++ ++// check/get extheader ++ error = 3; ++ if( v2->has_extheader ++ && !check_extheader (mp3file, v2) ) ++ goto done; ++ ++// get the content frames ++ error = 4; ++ if( !read_frames (mp3file, v2) ) ++ goto done; ++ ++ error = 0; ++done: ++ fclose (mp3file); ++ return (error); ++} ++ ++ ++ ++ ++ ++/* ++ * Find one frames data and give back its data in the correct format. ++ * Returns TRUE on success, otherwise FALSE; ++ */ ++static short int ++frame_find (id3v2Tag *v2, char *name, char *value) ++{ ++ DLL *curframe = NULL; ++ id3v2Frame *frame = NULL; ++ ++ // we parse through the whole list of frames, giving back the correct frame value. ++ curframe = v2->frames; ++ while ( curframe ) ++ { ++ frame = (id3v2Frame *)curframe->data; ++ ++ // Just to be sure... ++ if( frame->datasize <= 0 ) ++ goto nextframe; ++ ++ // Matches the users request? Otherwise try the next frame. ++ if( memcmp (frame->id, name, 4) != 0 ) ++ goto nextframe; ++ ++ // These types don't need much change, just give the whole data back to the user according to the encoding. ++ // The first byte is the encoding. ++ // TPE1: Artist ++ // TIT2: Song Title ++ // TALB: Album Title ++ // TYER: Year ++ // TRCK: Track ++ // TCON: Genre ++ // COMM: Comment ++ // TCOM: Composer ++ // TOPE: TOPE Original artist(s)/performer(s) ++ // TENC: Encoded by ++ if ( memcmp (frame->id, "TPE1", 4) == 0 ++ || memcmp (frame->id, "TIT2", 4) == 0 ++ || memcmp (frame->id, "TALB", 4) == 0 ++ || memcmp (frame->id, "TYER", 4) == 0 ++ || memcmp (frame->id, "TRCK", 4) == 0 ++ || memcmp (frame->id, "TCON", 4) == 0 ++ || memcmp (frame->id, "TCOM", 4) == 0 ++ || memcmp (frame->id, "TOPE", 4) == 0 ++ || memcmp (frame->id, "TENC", 4) == 0) ++ //|| memcmp (frame->id, "WXXX", 4) == 0) ++ { ++ if ( *frame->data == 0 ) ++ memcpy(value, frame->data + 1, frame->datasize - 1); ++ if ( *frame->data == 1 ) ++ { ++ char nulltermvalue[frame->datasize]; ++ char *isovalue = NULL; ++ ++ // the tag is not null terminated, so i have to create a null terminated string first. ++ memset (nulltermvalue, 0, frame->datasize); ++ memcpy (nulltermvalue, frame->data + 1, frame->datasize - 1); ++ ++ // Convert from UTF to ISO and copy to the users variable. ++ isovalue = convert_from_utf8 (nulltermvalue); ++ strncpy (value, isovalue, sizeof(value) - 1); ++ free (isovalue); ++ } ++ ++ // change linefeeds to a single "return" key. ++ crlf2cr (value); ++ return (TRUE); ++ } ++ if ( memcmp (frame->id, "WCOM", 4) == 0 ++ || memcmp (frame->id, "WCOP", 4) == 0 ++ || memcmp (frame->id, "WOAF", 4) == 0 ++ || memcmp (frame->id, "WOAR", 4) == 0 ++ || memcmp (frame->id, "WOAS", 4) == 0 ++ || memcmp (frame->id, "WPAY", 4) == 0 ++ || memcmp (frame->id, "WPUB", 4) == 0) ++ { ++ memcpy(value, frame->data, frame->datasize - 1); ++ ++ // change linefeeds to a single "return" key. ++ crlf2cr (value); ++ return (TRUE); ++ } ++ ++ // The comment requires special handling. ++ // Its data has: One byte "encoding" (0 = ISO-8859-1, 1 = UNICODE) ++ // followed by the language (three bytes, e.g. "eng"), ++ // followed by a short description, ++ // then a NULL, ++ // and the full description ++ // For now, i simply drop the short description ++ if( memcmp(frame->id, "COMM", 4) == 0 ) ++ { ++ // check for the right format. (minsize 5, must contain a "\0" after the language) ++ if ( frame->datasize < 5 ) ++ goto nextframe; ++ if ( !memchr (frame->data + 4, '\0', frame->datasize - 4) ) ++ goto nextframe; ++ ++ // now, give the data back to the user, according to the encoding. ++ if ( *frame->data == 0 ) ++ memcpy (value, frame->data + 5, frame->datasize - 5); ++ if ( *frame->data == 1 ) ++ { ++ char nulltermvalue[frame->datasize]; ++ char *isovalue = NULL; ++ ++ // the tag is not null terminated, so i have to create a null terminated string first. ++ memset (nulltermvalue, 0, frame->datasize); ++ memcpy (nulltermvalue, frame->data + 5, frame->datasize - 5); ++ ++ // Convert from UTF to ISO and copy to the users variable. ++ isovalue = convert_from_utf8 (nulltermvalue); ++ strncpy (value, isovalue, sizeof(value) - 1); ++ free (isovalue); ++ } ++ ++ // change linefeeds to a single "return" key. ++ crlf2cr (value); ++ return TRUE; ++ } ++ ++nextframe: ++ curframe = curframe->next; ++ } ++ ++ return FALSE; ++} ++ ++ ++ ++ ++/* ++ * Remove one frame out of the id3v2Tag struct ++ * Returns TRUE on success, otherwise FALSE; ++ */ ++static short int ++frame_remove (id3v2Tag *v2, char *name) ++{ ++ id3v2Frame *frame = NULL; ++ DLL *curframe = NULL; ++ DLL *tempframe = NULL; ++ ++// Parse through the list of frames. ++ curframe = v2->frames; ++ while ( curframe ) ++ { ++ frame = (id3v2Frame *)curframe->data; ++ tempframe = curframe; ++ curframe = curframe->next; ++ ++ if ( memcmp (frame->id, name, 4) == 0 ) ++ { ++// we have found the item! removing will NOT shrink the tag, but increase the padding. ++ v2->padding_size += (frame->datasize + 10); ++// and free memory. ++ v2->frames = dll_remove (v2->frames, tempframe->data); ++ free (frame->data); ++ free (frame); ++ ++ return TRUE; ++ } ++ } ++ ++ return FALSE; ++} ++ ++ ++ ++/* ++ * Add a frame to the framelist. If the frame name is already in the list, it will be replaced. ++ * Returns: ++ * TRUE: The tag size HAS BEEN increased. ++ * FALSE: The tag size has NOT been increased. ++ */ ++static short int ++frame_set (id3v2Tag *v2, char *name, char *value) ++{ ++ id3v2Frame *frame = NULL; ++ short int sizechange = FALSE; ++ ++// prevent the user to send CR/LF, which is forbidden. ++ cr2crlf (value); ++// eventually remove an existing item! ++ frame_remove (v2, name); ++ ++// alloc space for the new frame. ++ frame = malloc (sizeof(id3v2Frame)); ++ ++ memcpy (frame->id, name, 4); ++ frame->datasize = strlen (value); ++ frame->tagalter = 0; ++ frame->filealter = 0; ++ frame->readonly = 0; ++ frame->compression = 0; ++ frame->encryption = 0; ++ frame->grouping = 0; ++ ++// The comment requires special handling. If you need to know why, look at the documentation ++// of the "frame_find" function above. ++ if( memcmp (frame->id, "COMM", 4) == 0 ) ++ { ++ char fullvalue[frame->datasize + 6]; ++ ++ sprintf(fullvalue, "%ceng%c%s", 0, 0, value); ++ ++ frame->datasize += 5; ++ frame->data = malloc (frame->datasize); ++ memcpy (frame->data, fullvalue, frame->datasize); ++ } ++ else if ((memcmp(frame->id, "WCOM", 4) == 0) ++ || memcmp (frame->id, "WCOP", 4) == 0 ++ || memcmp (frame->id, "WOAF", 4) == 0 ++ || memcmp (frame->id, "WOAR", 4) == 0 ++ || memcmp (frame->id, "WOAS", 4) == 0 ++ || memcmp (frame->id, "WPAY", 4) == 0 ++ || memcmp (frame->id, "WPUB", 4) == 0) ++ { ++ frame->data = malloc (frame->datasize); ++ memcpy (frame->data, value, frame->datasize); ++ } ++ else ++ { ++ char fullvalue[frame->datasize + 2]; ++ ++ // Put encoding type just before the value ++ sprintf (fullvalue, "%c%s", 0, value); ++ ++ frame->datasize += 1; ++ frame->data = malloc (frame->datasize); ++ memcpy (frame->data, fullvalue, frame->datasize); ++ } ++ ++// Ok. This decreases the available padding. If we have no padding left, we must increase the padding (and thus, the tag). ++ if( v2->padding_size - (frame->datasize + 10) <= 0 ) ++ { ++// add: framesize + frameheadersize + padding. ++ v2->padding_size += frame->datasize + 10 + 1024; ++ v2->tag_size += frame->datasize + 10 + 1024; ++ ++ sizechange = TRUE; ++ } ++ ++// In every case, we must subtract the new allocated space from the padding. ++ v2->padding_size -= frame->datasize + 10; ++ ++ v2->frames = dll_append (v2->frames, frame); ++ ++ return sizechange; ++} ++ ++ ++ ++/* ++ * Create raw header. ++ * Returns: ++ * TRUE: successful. ++ * FALSE: unsuccessful. ++ */ ++static int ++create_header_raw (char *raw, id3v2Tag *v2) ++{ ++// now we are going to write the tags raw data into the raw string ++ memset (raw, 0, v2->tag_size + 10); ++// ID3 identifier bytes ++ memcpy (raw, "ID3", 3); ++ raw += 3; ++// major version byte ++ *raw++ = 3; ++// minor version byte ++ *raw++ = 0; ++// Flags byte ++ *raw++ = ((v2->unsync & 1) << 7) ++ | ((v2->has_extheader & 1) << 6) ++ | ((v2->is_experimental & 1) << 5); ++// Tag size. It must be syncsafe! ++ *raw++ = ((v2->tag_size & 0x800000) >> 23) | (((v2->tag_size & 0x7f000000) >> 24) << 1); ++ *raw++ = ((v2->tag_size & 0x8000) >> 15) | (((v2->tag_size & 0x7f0000) >> 16) << 1); ++ *raw++ = ((v2->tag_size & 0x80) >> 7) | (((v2->tag_size & 0x7f00) >> 8) << 1); ++ *raw++ = (v2->tag_size & 0x7f); ++ ++ return TRUE; ++} ++ ++ ++ ++ ++/* ++ * Generates the frames. btw.: ID3 sucks! ++ * Returns: TRUE if succesful, otherwise FALSE. ++ */ ++static short int ++create_frames_raw (char *raw, id3v2Tag *v2) ++{ ++ id3v2Frame *frame = NULL; ++ DLL *curframe = NULL; ++ ++// if we have no frames, just quit. ++ if ( v2->frames == NULL ) ++ return FALSE; ++ ++// the header and extheader have already been written. ++ raw += 10; ++ if ( v2->has_extheader ) ++ raw += 4 + v2->extheader_size; ++ ++ curframe = v2->frames; ++ while ( curframe ) ++ { ++ frame = (id3v2Frame *)curframe->data; ++ ++// secure is secure ++ if ( frame->datasize <= 0 ) ++ goto nextframe; ++ ++// add the frame id ++ memcpy(raw, frame->id, 4); ++ raw += 4; ++// add the frame size (syncsafe) ++ *raw++ = ((frame->datasize & 0x800000) >> 23) | (((frame->datasize & 0x7f000000) >> 24) << 1); ++ *raw++ = ((frame->datasize & 0x8000) >> 15) | (((frame->datasize & 0x7f0000) >> 16) << 1); ++ *raw++ = ((frame->datasize & 0x80) >> 7) | (((frame->datasize & 0x7f00) >> 8) << 1); ++ *raw++ = (frame->datasize & 0x7f); ++ ++// The two flagbytes ++ *raw++ = ((frame->tagalter & 1) << 7) ++ | ((frame->filealter & 1) << 6) ++ | ((frame->readonly & 1) << 5); ++ ++ *raw++ = ((frame->compression & 1) << 7) ++ | ((frame->encryption & 1) << 6) ++ | ((frame->grouping & 1) << 5); ++ ++// now the frame data. ++ memcpy(raw, frame->data, frame->datasize); ++ raw += frame->datasize; ++ ++nextframe: ++ curframe = curframe->next; ++ } ++ ++ return TRUE; ++} ++ ++/*************************************************************************************** ++ * END OF STATICS ++ ***************************************************************************************/ ++ ++ ++ ++ ++ ++ ++ ++/* ++ * Purpose: Reads the ID3 tag from a file. ++ * Parameters: tag - The structure to store the tag in, filename - The name of the file to operate on. ++ * Returns: ++ * 0 if successful, ++ * 1 if an error occured when opening the file ++ * 2 if error while reading tag. ++ * 3 if no TAG found. ++ */ ++int ++get_id3v2_tag (id3Tag *tag, char *filename) ++{ ++ id3v2Tag *v2 = calloc (1, sizeof(id3v2Tag)); ++ DLL *curframe = NULL; ++ int error = 0; ++ ++// Read the tag. ++ error = get_id3v2tag_raw (v2, filename); ++ ++// Init the users tag ++ memset (tag, 0, sizeof (id3Tag)); ++ ++ if( error == 0 ) ++ { ++// if we have a valid tag we copy the raw data to the users struct ++ tag->size = v2->tag_size; ++ ++ frame_find (v2, "TPE1", tag->artist); ++ frame_find (v2, "TIT2", tag->title); ++ frame_find (v2, "TALB", tag->album); ++ frame_find (v2, "TYER", tag->year); ++ frame_find (v2, "COMM", tag->comment); ++ frame_find (v2, "TRCK", tag->track); ++ frame_find (v2, "TCON", tag->genre); ++ frame_find (v2, "TCOM", tag->composer); // Composer ++ frame_find (v2, "TOPE", tag->orig_artist); // Original artist(s)/performer(s) ++ frame_find (v2, "WCOM", tag->url); // URL ++ frame_find (v2, "TENC", tag->enc_by); // Encoded by ++ } ++ ++// Free all the stuff ++ if (v2->frames) ++ { ++ id3v2Frame *frame = NULL; ++ ++ curframe = v2->frames; ++ while ( curframe ) ++ { ++ frame = (id3v2Frame *)curframe->data; ++ ++ free (frame->data); ++ free (frame); ++ ++ curframe = curframe->next; ++ } ++ v2->frames = dll_free (v2->frames); ++ } ++ ++ free (v2); ++ return (error); ++} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++/* ++ * Purpose: Clear the ID3 tag of a file. ++ * Parameters: a filename. ++ * Returns: ++ * 0 if successful, ++ * 1 if an error occured when opening the file ++ * 2 if an error while reading/writing the tag. ++ */ ++int ++del_id3v2_tag (char *filename) ++{ ++ id3v2Tag *v2 = calloc (1, sizeof(id3v2Tag)); ++ long file_len; ++ FILE *file; ++ void *ptr; ++ ++// check if an valid old id3v2 tag is present ++// In these two error-cases we don't know how big the tag is. ++ if( get_id3v2tag_raw (v2, filename) == 1 ++ || get_id3v2tag_raw (v2, filename) == 2 ) ++ return(0); ++ ++ ptr = malloc (4096); ++ ++// open file read/write ++ file = fopen (filename, "r+b"); ++ if (!file) ++ return (1); ++ ++ fseek (file, 0, SEEK_END); ++ file_len = ftell (file); ++ if ( file_len < 11 ++ || v2->tag_size < 11 ) ++ return (2); ++ ++// set anything but the header in tag to zero. I'll not really remove the tag, ++// because this would be much slower and if we write a new tag, this would mean we´d have to ++// rewrite the complete tag. ++/* ++ fseek (file, 10, SEEK_SET); ++ for (read = 0; read < v2->tag_size - 10; read++) ++ fputc (0, file); ++ ++*/ ++ { ++ FILE *file = NULL; ++ FILE *tempfile = NULL; ++ char *tempfilename = NULL; ++ int read = 0; ++ char buf[4096]; ++ int error = 0; ++ ++ // Open a tempfile ++ error = 2; ++ tempfilename = malloc (strlen (filename) + 11); ++ sprintf (tempfilename, "%s%s", filename, ".tempXXXXX"); ++ if( !(tempfile = fopen(tempfilename, "wb")) ) ++ { ++ remove (tempfilename); ++ free (tempfilename); ++ goto done; ++ } ++ ++ // Write the tag to the tempfile. ++ ++ // Open the mp3file. ++ error = 4; ++ if( !(file = fopen(filename, "r+b")) ) ++ { ++ fclose (file); ++ remove (tempfilename); ++ free (tempfilename); ++ goto done; ++ } ++ // skip the old tag (if one existed) ++ fseek (file, v2->tag_size + 10, SEEK_SET); ++ ++ // copy the rest of the file to the tempfile. ++ while ( !feof(file) ) ++ { ++ error = 5; ++ read = fread (buf, 1, 4096, file); ++ if( fwrite (buf, 1, read, tempfile) != read ++ && !feof (file) ) ++ { ++ remove (tempfilename); ++ free (tempfilename); ++ fflush (tempfile); ++ fclose (tempfile); ++ fflush (file); ++ fclose (file); ++ goto done; ++ } ++ } ++ ++ fflush (file); ++ fclose (file); ++ fflush (tempfile); ++ fclose (tempfile); ++ ++ // rename the tempfile, so it is the mp3file. ++ rename (tempfilename, filename); ++ free (tempfilename); ++ } ++ ++done: ++ if (v2) free (v2); ++ if (ptr) free (ptr); ++ ++ return(0); ++} ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++int ++set_id3v2_tag (id3Tag *tag, char *filename) ++{ ++ id3v2Tag *v2 = malloc (sizeof(id3v2Tag)); ++ id3v2Frame *frame = NULL; ++ unsigned char *rawdata = NULL; ++ DLL *curframe = NULL; ++ int oldsize = 0; ++ char track[3]; ++ int error = 0; ++ ++// Try to get the content of an old tag ++ error = 1; ++ memset (v2, 0, sizeof(id3v2Tag)); ++ get_id3v2tag_raw (v2, filename); ++ ++ oldsize = v2->tag_size; ++ ++// If the old tag had an extheader, I'll add its size to my tag, because i don't plan to add it again. ++ if ( v2->has_extheader ) ++ { ++ v2->padding_size += v2->extheader_size; ++ v2->has_extheader = FALSE; ++ v2->extheader_size = 0; ++ } ++ ++// first of all I'll generate a valid id3v2 tag struct out of the tag struct we got by the user. ++// Set the flags... ++ v2->unsync = FALSE; ++ v2->is_experimental = FALSE; ++ v2->crc_data_present = FALSE; ++ ++// Set the contentframes ++ frame_set (v2, "TIT2", tag->title); ++ frame_set (v2, "TPE1", tag->artist); ++ frame_set (v2, "TALB", tag->album); ++ frame_set (v2, "TYER", tag->year); ++ frame_set (v2, "COMM", tag->comment); ++ frame_set (v2, "TCON", tag->genre); ++ frame_set (v2, "TCOM", tag->composer); // Composer ++ frame_set (v2, "TOPE", tag->orig_artist); // TOPE Original artist(s)/performer(s) ++ frame_set (v2, "WCOM", tag->url); // URL ++ frame_set (v2, "TENC", tag->enc_by); // Encoded by ++ if ( atoi (tag->track) < 10 ) ++ snprintf (track, 3, "0%i", atoi(tag->track)); ++ else ++ snprintf (track, 3, "%i", atoi(tag->track)); ++ frame_set (v2, "TRCK", track); ++ ++// Create a header in the raw data string ++ rawdata = calloc (1, v2->tag_size + 10); ++ create_header_raw (rawdata, v2); ++ ++// Create frames raw data. ++ create_frames_raw (rawdata, v2); ++ ++// is the new tag bigger than the old one? Then we'll have to completely rewrite the file... ++ if ( v2->tag_size > oldsize ) ++ { ++ FILE *file = NULL; ++ FILE *tempfile = NULL; ++ char *tempfilename = NULL; ++ int read = 0; ++ char buf[4096]; ++ ++// Open a tempfile ++ error = 2; ++ tempfilename = malloc (strlen (filename) + 11); ++ sprintf (tempfilename, "%s%s", filename, ".tempXXXXX"); ++ if( !(tempfile = fopen(tempfilename, "wb")) ) ++ { ++ remove (tempfilename); ++ free (tempfilename); ++ goto done; ++ } ++ ++// Write the tag to the tempfile. ++ error = 3; ++ fseek (tempfile, 0, SEEK_SET); ++ if( fwrite (rawdata, 1, v2->tag_size + 10, tempfile) < v2->tag_size ) ++ { ++ fclose (tempfile); ++ remove (tempfilename); ++ free (tempfilename); ++ goto done; ++ } ++ ++// Open the mp3file. ++ error = 4; ++ if( !(file = fopen(filename, "r+b")) ) ++ { ++ fclose (file); ++ remove (tempfilename); ++ free (tempfilename); ++ goto done; ++ } ++// skip the old tag (if one existed) ++ fseek (file, oldsize? oldsize + 10 : oldsize, SEEK_SET); ++ ++// copy the rest of the file to the tempfile. ++ while ( !feof(file) ) ++ { ++ error = 5; ++ read = fread (buf, 1, 4096, file); ++ if( fwrite (buf, 1, read, tempfile) != read ++ && !feof (file) ) ++ { ++ remove (tempfilename); ++ free (tempfilename); ++ fflush (tempfile); ++ fclose (tempfile); ++ fflush (file); ++ fclose (file); ++ goto done; ++ } ++ } ++ ++ fflush (file); ++ fclose (file); ++ fflush (tempfile); ++ fclose (tempfile); ++ ++// rename the tempfile, so it is the mp3file. ++ rename (tempfilename, filename); ++ free (tempfilename); ++ } ++ else ++ { ++ FILE *file = NULL; ++ ++// If the old tag was bigger than the new one, we can simply overwrite it! ++// open. ++ error = 10; ++ if( !(file = fopen(filename, "r+b")) ) ++ goto done; ++ ++// write. ++ error = 11; ++ fseek (file, 0, SEEK_SET); ++ if( fwrite (rawdata, 1, v2->tag_size + 10, file) < v2->tag_size ) ++ { ++ fflush (file); ++ fclose (file); ++ goto done; ++ } ++ ++ fflush (file); ++ fclose (file); ++ } ++ ++ error = 0; ++ ++done: ++// Free all the stuff ++ curframe = v2->frames; ++ while ( curframe ) ++ { ++ frame = (id3v2Frame *)curframe->data; ++ ++ free (frame->data); ++ free (frame); ++ ++ curframe = curframe->next; ++ } ++ dll_free (v2->frames); ++ ++ if ( rawdata != NULL ) ++ free (rawdata); ++ free (v2); ++ return (error); ++} +diff -Naur xmms-1.2.9-orig/Input/mpg123/mpg123.c xmms-1.2.9/Input/mpg123/mpg123.c +--- xmms-1.2.9-orig/Input/mpg123/mpg123.c Thu Jan 29 06:43:24 2004 ++++ xmms-1.2.9/Input/mpg123/mpg123.c Thu Jan 29 05:18:54 2004 +@@ -607,8 +607,13 @@ + { \ + id3frm = id3_get_frame( id3d, _tid, 1 ); \ + if (id3frm) { \ +- txt = _tid == ID3_TCON ? id3_get_content(id3frm) \ +- : id3_get_text(id3frm); \ ++ if (_tid == ID3_COMM) \ ++ txt = id3_get_comm(id3frm); \ ++ else if (id3frm->fr_desc->fd_idstr[0] == 'W') \ ++ txt = id3_get_url(id3frm); \ ++ else \ ++ txt = _tid == ID3_TCON ? id3_get_content(id3frm) \ ++ : id3_get_text(id3frm); \ + if(txt) \ + { \ + tlen = strlen(txt); \ +@@ -644,6 +649,10 @@ + ID3_SET_NUM (ID3_TRCK, track_number); + ID3_SET (ID3_COMM, comment); + ID3_SET (ID3_TCON, genre); ++ ID3_SET (ID3_TCOM, composer); ++ ID3_SET (ID3_TOPE, orig_artist); ++ ID3_SET (ID3_WCOM, url); ++ ID3_SET (ID3_TENC, encoded_by); + } + + /* +diff -Naur xmms-1.2.9-orig/Input/mpg123/mpg123.h xmms-1.2.9/Input/mpg123/mpg123.h +--- xmms-1.2.9-orig/Input/mpg123/mpg123.h Thu Jan 29 06:43:24 2004 ++++ xmms-1.2.9/Input/mpg123/mpg123.h Thu Jan 29 05:20:31 2004 +@@ -78,6 +78,10 @@ + char genre[256]; + int year; + int track_number; ++ char composer[1024]; ++ char orig_artist[1024]; ++ char url[1024]; ++ char encoded_by[1024]; + }; + + typedef struct diff --git a/abs/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch b/abs/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch new file mode 100644 index 0000000..51c5167 --- /dev/null +++ b/abs/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch @@ -0,0 +1,101 @@ +diff -ur xmms-1.2.10/xmms/input.c xmms-1.2.10.patched/xmms/input.c +--- xmms-1.2.10/xmms/input.c 2003-08-08 19:10:44.000000000 +0200 ++++ xmms-1.2.10.patched/xmms/input.c 2005-11-25 00:12:36.000000000 +0100 +@@ -285,6 +285,14 @@ + } + } + ++gboolean input_stopped_for_restart = FALSE; /* crossfade */ ++void input_stop_for_restart() /* crossfade */ ++{ ++ input_stopped_for_restart = TRUE; ++ input_stop(); ++ input_stopped_for_restart = FALSE; ++} ++ + void input_stop(void) + { + if (ip_data->playing && get_current_input_plugin()) +diff -ur xmms-1.2.10/xmms/input.h xmms-1.2.10.patched/xmms/input.h +--- xmms-1.2.10/xmms/input.h 2000-02-16 22:05:57.000000000 +0100 ++++ xmms-1.2.10.patched/xmms/input.h 2005-11-25 00:12:36.000000000 +0100 +@@ -34,6 +34,7 @@ + gboolean input_check_file(gchar * filename); + void input_play(char *filename); + void input_stop(void); ++void input_stop_for_restart(void); + void input_pause(void); + int input_get_time(void); + void input_set_eq(int on, float preamp, float *bands); +diff -ur xmms-1.2.10/xmms/main.c xmms-1.2.10.patched/xmms/main.c +--- xmms-1.2.10/xmms/main.c 2004-02-23 21:31:43.000000000 +0100 ++++ xmms-1.2.10.patched/xmms/main.c 2005-11-25 00:12:36.000000000 +0100 +@@ -881,8 +881,10 @@ + mainwin_set_shade(!cfg.player_shaded); + } + ++gboolean is_quitting = FALSE; /* crossfade */ + void mainwin_quit_cb(void) + { ++ is_quitting = TRUE; /* crossfade */ + input_stop(); + gtk_widget_hide(equalizerwin); + gtk_widget_hide(playlistwin); +@@ -1523,7 +1525,8 @@ + int *pos; + + if (get_input_playing()) +- input_stop(); ++ input_stop_for_restart(); ++ + pos = gtk_clist_get_row_data(clist, GPOINTER_TO_INT(clist->selection->data)); + playlist_set_position(*pos); + playlist_play(); +diff -ur xmms-1.2.10/xmms/playlist.c xmms-1.2.10.patched/xmms/playlist.c +--- xmms-1.2.10/xmms/playlist.c 2004-02-23 21:31:43.000000000 +0100 ++++ xmms-1.2.10.patched/xmms/playlist.c 2005-11-25 00:12:36.000000000 +0100 +@@ -124,7 +124,7 @@ + if (get_input_playing()) + { + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + *restart_playing = TRUE; + } +@@ -570,7 +570,7 @@ + } + + if (get_input_playing()) +- input_stop(); ++ input_stop_for_restart(); + + vis_clear_data(mainwin_vis); + vis_clear_data(playlistwin_vis); +@@ -668,7 +668,7 @@ + { + /* We need to stop before changing playlist_position */ + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + restart_playing = TRUE; + } +@@ -723,7 +723,7 @@ + { + /* We need to stop before changing playlist_position */ + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + restart_playing = TRUE; + } +@@ -852,7 +852,7 @@ + { + /* We need to stop before changing playlist_position */ + PL_UNLOCK(); +- input_stop(); ++ input_stop_for_restart(); + PL_LOCK(); + restart_playing = TRUE; + } diff --git a/abs/extra/xmms/xmms-fix.diff b/abs/extra/xmms/xmms-fix.diff new file mode 100644 index 0000000..a810aa2 --- /dev/null +++ b/abs/extra/xmms/xmms-fix.diff @@ -0,0 +1,11 @@ +--- xmms-1.2.10+cvs20060429/xmms/util.c.orig 2006-11-05 12:29:59.000000000 +0800 ++++ xmms-1.2.10+cvs20060429/xmms/util.c 2006-11-05 12:30:01.000000000 +0800 +@@ -175,7 +175,7 @@ GdkImage *create_dblsize_image(GdkImage + * This needs to be optimized + */ + +- dblimg = gdk_image_new(GDK_IMAGE_NORMAL, gdk_visual_get_best(), img->width << 1, img->height << 1); ++ dblimg = gdk_image_new(GDK_IMAGE_NORMAL, gdk_visual_get_best_with_depth(img->depth), img->width << 1, img->height << 1); + if (dblimg->bpp == 1) + { + register guint8 *srcptr, *ptr, *ptr2, pix; diff --git a/abs/extra/xmms/xmms-menu.patch b/abs/extra/xmms/xmms-menu.patch new file mode 100644 index 0000000..39304f9 --- /dev/null +++ b/abs/extra/xmms/xmms-menu.patch @@ -0,0 +1,35 @@ +--- xmms/xmms.desktop 2002-02-11 23:15:56.000000000 +0000 ++++ xmms.desktop 2006-02-25 14:21:03.000000000 +0000 +@@ -1,21 +1,16 @@ + [Desktop Entry] + Name=XMMS + Comment=X Multimedia System +-comment[az]=X Multimedya Sistemi +-comment[ca]=Sistema Multimèdia per a X +-comment[cs]=Multimediální pøehrávaè +-comment[es]=Sistema Multimedia para X +-comment[gl]=Sistema Multimedia para X +-comment[hr]=X Multimedijski Sustav +-comment[nn]=X Multimedia-system +-comment[pt_BR]=X Multimedia System +-comment[ro]=X MultiMedia Sistem +-comment[th]=ÃкºÁÑŵÔÁÕà´Õº¹ X +-comment[tr]=X Multimedya Sistem +-comment[zh_TW]=X ¦h´CÅé¨t²Î +-Encoding=Legacy-Mixed ++Comment[es]=Sistema Multimedia para X ++Comment[gl]=Sistema Multimedia para X ++Comment[hr]=X Multimedijski Sustav ++Comment[pt_BR]=X Multimedia System ++Comment[ro]=X MultiMedia Sistem ++Comment[tr]=X Multimedya Sistem ++Encoding=UTF-8 + Exec=xmms +-Icon=xmms_mini.xpm +-MimeType=audio/x-scpls;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/x-wav;application/x-ogg +-Terminal=0 ++Icon=xmms + Type=Application ++Categories=Application;AudioVideo; ++MimeType=audio/x-scpls;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/x-wav;application/x-ogg ++Terminal=false diff --git a/abs/extra/xscreensaver/ChangeLog b/abs/extra/xscreensaver/ChangeLog new file mode 100644 index 0000000..f972cf0 --- /dev/null +++ b/abs/extra/xscreensaver/ChangeLog @@ -0,0 +1,20 @@ +2009-01-02 Eric Belanger + + * xscreensaver 5.08-1 + * Upstream update + +2008-08-11 Eric Belanger + + * xscreensaver 5.07-1 + * Upstream update + +2008-07-18 Eric Belanger + + * xscreensaver 5.06-1 + * Upstream update + +2008-03-02 Eric Belanger + + * xscreensaver 5.05-1 + * Upstream update + * FHS man pages diff --git a/abs/extra/xscreensaver/LICENSE b/abs/extra/xscreensaver/LICENSE new file mode 100644 index 0000000..4f587b5 --- /dev/null +++ b/abs/extra/xscreensaver/LICENSE @@ -0,0 +1,9 @@ +/* xscreensaver, Copyright (c) 1993-2006 Jamie Zawinski + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ diff --git a/abs/extra/xscreensaver/PKGBUILD b/abs/extra/xscreensaver/PKGBUILD new file mode 100644 index 0000000..2eb7b7c --- /dev/null +++ b/abs/extra/xscreensaver/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 23065 2009-01-02 07:24:36Z eric $ +# Maintainer: Eric Belanger +# Contributor: Sean Middleditch + +pkgname=xscreensaver +pkgver=5.08 +pkgrel=6 +pkgdesc="Screen saver and locker for the X Window System" +arch=('i686' 'x86_64') +url="http://www.jwz.org/xscreensaver/" +license=('BSD') +depends=('libxxf86misc' 'libglade' 'mesa' 'pam' 'xorg-res-utils') +makedepends=('bc') +install=xscreensaver.install +backup=('etc/pam.d/xscreensaver') +source=(http://www.jwz.org/xscreensaver/${pkgname}-${pkgver}.tar.gz \ + xscreensaver.pam LICENSE) +md5sums=('79dea708c915341f205e00318a699be9' '367a3538f54db71f108b34cfa31088ac'\ + '5e7f3f2a63d20a484742f5b4cb5d572c') +sha1sums=('4e6889d7171eaf18b856c484a87d5701787e5dc6' + '106635aa1aae51d6f0668b1853f6c49a4fe9d3d8' + '4209ea586b204fd1d81c382a0522c654f9fd9134') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib \ + --with-x-app-defaults=/usr/share/X11/app-defaults \ + --with-pam --without-motif \ + --with-gtk --without-gnome --with-xml --with-gl \ + --without-gle --with-xpm --with-pixbuf --with-jpeg \ + --with-fortune="/bin/cat /etc/LinHES-release" || return 1 + make || return 1 + make install_prefix=${pkgdir} install || return 1 + install -D -m644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1 + install -D -m644 ${srcdir}/xscreensaver.pam ${pkgdir}/etc/pam.d/xscreensaver || return 1 + chmod 755 ${pkgdir}/usr/bin/xscreensaver || return 1 + echo "NotShowIn=KDE;GNOME;" >> ${pkgdir}/usr/share/applications/xscreensaver-properties.desktop || return 1 + ls $pkgdir/usr/lib/xscreensaver > $startdir/xscreensavers +} diff --git a/abs/extra/xscreensaver/__changelog b/abs/extra/xscreensaver/__changelog new file mode 100644 index 0000000..ca14a40 --- /dev/null +++ b/abs/extra/xscreensaver/__changelog @@ -0,0 +1,3 @@ +print out list of screensavers to xscreensaver + ls $pkgdir/usr/lib/xscreensaver > $startdir/xscreensavers + diff --git a/abs/extra/xscreensaver/xscreensaver b/abs/extra/xscreensaver/xscreensaver new file mode 100644 index 0000000..887bef9 --- /dev/null +++ b/abs/extra/xscreensaver/xscreensaver @@ -0,0 +1,198 @@ +abstractile +anemone +anemotaxis +antinspect +antmaze +antspotlight +apollonian +apple2 +atlantis +attraction +atunnel +barcode +blaster +blinkbox +blitspin +blocktube +boing +bouboule +bouncingcow +boxed +boxfit +braid +bsod +bubble3d +bumps +cage +carousel +ccurve +celtic +circuit +cloudlife +compass +coral +crackberg +crystal +cube21 +cubenetic +cubestorm +cubicgrid +cwaves +cynosure +dangerball +decayscreen +deco +deluxe +demon +discrete +distort +drift +endgame +engine +epicycle +eruption +euler2d +fadeplot +fiberlamp +fireworkx +flame +flipflop +flipscreen3d +fliptext +flow +fluidballs +flurry +flyingtoasters +fontglide +fuzzyflakes +galaxy +gears +gflux +glblur +glcells +gleidescope +glhanoi +glknots +glmatrix +glplanet +glschool +glslideshow +glsnake +gltext +goop +grav +greynetic +halftone +halo +helix +hopalong +hyperball +hypercube +hypertorus +hypnowheel +ifs +imsmap +interaggregate +interference +intermomentary +jigglypuff +jigsaw +juggle +juggler3d +julia +kaleidescope +klein +kumppa +lament +lavalite +lcdscrub +ljlatest +lockward +loop +m6502 +maze +memscroller +menger +metaballs +mirrorblob +moebius +moebiusgears +moire +moire2 +molecule +morph3d +mountain +munch +nerverot +noof +noseguy +pacman +pedal +penetrate +penrose +petri +phosphor +photopile +piecewise +pinion +pipes +polyhedra +polyominoes +polytopes +pong +popsquares +providence +pulsar +pyro +qix +queens +rd-bomb +ripples +rocks +rorschach +rotzoomer +rubik +sballs +shadebobs +sierpinski +sierpinski3d +skytentacles +slidescreen +slip +sonar +speedmine +spheremonics +spotlight +sproingies +squiral +stairs +starfish +starwars +stonerview +strange +substrate +superquadrics +swirl +tangram +thornbird +timetunnel +topblock +triangle +truchet +twang +vermiculate +vidwhacker +voronoi +wander +webcollage +webcollage-helper +whirlwindwarp +wormhole +xanalogtv +xflame +xjack +xlyap +xmatrix +xrayswarm +xspirograph +zoom diff --git a/abs/extra/xscreensaver/xscreensaver.install b/abs/extra/xscreensaver/xscreensaver.install new file mode 100644 index 0000000..a64ab36 --- /dev/null +++ b/abs/extra/xscreensaver/xscreensaver.install @@ -0,0 +1,30 @@ +# arg 1: the new package version +post_install() { + if grep xscreensaver-command /home/mythtv/.mplayer/config + then + echo "Nothing to do here..." + else + echo "heartbeat-cmd=\"xscreensaver-command -deactivate &\"" >> /home/mythtv/.mplayer/config +fi +} +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + if grep xscreensaver-command /home/mythtv/.mplayer/config + then + echo "Nothing to do here..." + else + echo "heartbeat-cmd=\"xscreensaver-command -deactivate &\"" >> /home/mythtv/.mplayer/config +fi +} + +# arg 1: the old package version +post_remove() { + grep -v xscreensaver /home/mythtv/.mplayer/config > /tmp/mp-config + mv /tmp/mp-config /home/mythtv/.mplayer/config + chown mythtv.mythtv /home/mythtv/.mplayer/config +} + +op=$1 +shift +$op $* diff --git a/abs/extra/xscreensaver/xscreensaver.pam b/abs/extra/xscreensaver/xscreensaver.pam new file mode 100644 index 0000000..b4d80c2 --- /dev/null +++ b/abs/extra/xscreensaver/xscreensaver.pam @@ -0,0 +1 @@ +auth required pam_unix_auth.so diff --git a/abs/extra/xscreensaver/xscreensavers b/abs/extra/xscreensaver/xscreensavers new file mode 100644 index 0000000..887bef9 --- /dev/null +++ b/abs/extra/xscreensaver/xscreensavers @@ -0,0 +1,198 @@ +abstractile +anemone +anemotaxis +antinspect +antmaze +antspotlight +apollonian +apple2 +atlantis +attraction +atunnel +barcode +blaster +blinkbox +blitspin +blocktube +boing +bouboule +bouncingcow +boxed +boxfit +braid +bsod +bubble3d +bumps +cage +carousel +ccurve +celtic +circuit +cloudlife +compass +coral +crackberg +crystal +cube21 +cubenetic +cubestorm +cubicgrid +cwaves +cynosure +dangerball +decayscreen +deco +deluxe +demon +discrete +distort +drift +endgame +engine +epicycle +eruption +euler2d +fadeplot +fiberlamp +fireworkx +flame +flipflop +flipscreen3d +fliptext +flow +fluidballs +flurry +flyingtoasters +fontglide +fuzzyflakes +galaxy +gears +gflux +glblur +glcells +gleidescope +glhanoi +glknots +glmatrix +glplanet +glschool +glslideshow +glsnake +gltext +goop +grav +greynetic +halftone +halo +helix +hopalong +hyperball +hypercube +hypertorus +hypnowheel +ifs +imsmap +interaggregate +interference +intermomentary +jigglypuff +jigsaw +juggle +juggler3d +julia +kaleidescope +klein +kumppa +lament +lavalite +lcdscrub +ljlatest +lockward +loop +m6502 +maze +memscroller +menger +metaballs +mirrorblob +moebius +moebiusgears +moire +moire2 +molecule +morph3d +mountain +munch +nerverot +noof +noseguy +pacman +pedal +penetrate +penrose +petri +phosphor +photopile +piecewise +pinion +pipes +polyhedra +polyominoes +polytopes +pong +popsquares +providence +pulsar +pyro +qix +queens +rd-bomb +ripples +rocks +rorschach +rotzoomer +rubik +sballs +shadebobs +sierpinski +sierpinski3d +skytentacles +slidescreen +slip +sonar +speedmine +spheremonics +spotlight +sproingies +squiral +stairs +starfish +starwars +stonerview +strange +substrate +superquadrics +swirl +tangram +thornbird +timetunnel +topblock +triangle +truchet +twang +vermiculate +vidwhacker +voronoi +wander +webcollage +webcollage-helper +whirlwindwarp +wormhole +xanalogtv +xflame +xjack +xlyap +xmatrix +xrayswarm +xspirograph +zoom diff --git a/abs/extra/xulrunner/PKGBUILD b/abs/extra/xulrunner/PKGBUILD new file mode 100644 index 0000000..da6d8cd --- /dev/null +++ b/abs/extra/xulrunner/PKGBUILD @@ -0,0 +1,43 @@ +# $Id: PKGBUILD 36430 2009-04-22 12:03:12Z pierre $ +# Maintainer: Alexander Baldeck +# Contributor: Jan de Groot +pkgname=xulrunner +pkgver=1.9.1.1 +_ffoxver=3.5.1 +pkgrel=5 +pkgdesc="Mozilla Runtime Environment" +arch=(i686 x86_64) +license=('MPL' 'GPL' 'LGPL') +depends=('gtk2>=2.16.0' 'gcc-libs>=4.3.3' 'libidl2>=0.8.13' 'mozilla-common' 'nss>=3.12.3' 'libxt' 'lcms' + 'hunspell>=1.2.8' 'startup-notification>=0.9') +makedepends=('zip' 'pkgconfig' 'diffutils' 'libgnomeui>=2.24.1') +provides=(gecko-sdk) +replaces=(gecko-sdk) +url="http://wiki.mozilla.org/XUL:Xul_Runner" +source=(http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${_ffoxver}/source/firefox-${_ffoxver}-source.tar.bz2 + mozconfig) +md5sums=('18169e189785d680827d4fce94524449' + '6509d12e6b17bfc51c09e1dc35259035') +install=xulrunner.install + +build() { + cd ${startdir}/src/mozilla-1.9.1 + cp ${startdir}/src/mozconfig .mozconfig + + unset CFLAGS + unset CXXFLAGS + export LDFLAGS="-Wl,-rpath,/usr/lib/xulrunner-1.9" + + make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS" || return 1 + make -j1 DESTDIR=${startdir}/pkg install || return 1 + + ln -sf xulrunner-${pkgver} ${pkgdir}/usr/lib/xulrunner-1.9 + ln -sf xulrunner-devel-${pkgver} ${pkgdir}/usr/lib/xulrunner-devel-1.9 + ln -sf xulrunner-${pkgver} ${pkgdir}/usr/include/xulrunner-1.9 + ln -sf xulrunner-${pkgver} ${pkgdir}/usr/share/idl/xulrunner-1.9 + + # The ubuntu patch adds these... get rid of it, NSS/NSPR has it. + rm -f ${startdir}/pkg/usr/lib/pkgconfig/mozilla-ns{s,pr}.pc || return 1 + + sed -i -e "s/xulrunner-${pkgver}/xulrunner-1.9/g" -e "s/xulrunner-devel-${pkgver}/xulrunner-devel-1.9/g" ${pkgdir}/usr/lib/pkgconfig/*.pc || return 1 +} diff --git a/abs/extra/xulrunner/mozconfig b/abs/extra/xulrunner/mozconfig new file mode 100644 index 0000000..22212cb --- /dev/null +++ b/abs/extra/xulrunner/mozconfig @@ -0,0 +1,33 @@ +. $topsrcdir/xulrunner/config/mozconfig +ac_add_options --prefix=/usr +ac_add_options --libdir=/usr/lib +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +ac_add_options --with-system-bz2 +ac_add_options --with-system-png +ac_add_options --enable-system-lcms +ac_add_options --enable-system-hunspell +ac_add_options --enable-system-sqlite +ac_add_options --enable-system-cairo +ac_add_options --with-pthreads +ac_add_options --enable-strip +ac_add_options --disable-tests +ac_add_options --disable-mochitest +ac_add_options --disable-installer +ac_add_options --disable-debug +ac_add_options --enable-optimize +ac_add_options --enable-default-toolkit=cairo-gtk2 +ac_add_options --enable-pango +ac_add_options --enable-svg +ac_add_options --enable-canvas +ac_add_options --disable-javaxpcom +ac_add_options --disable-crashreporter +ac_add_options --enable-safe-browsing +ac_add_options --enable-startup-notification + +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +mk_add_options BUILD_OFFICIAL=1 +mk_add_options MOZILLA_OFFICIAL=1 diff --git a/abs/extra/xulrunner/xulrunner.install b/abs/extra/xulrunner/xulrunner.install new file mode 100644 index 0000000..0b4cf9c --- /dev/null +++ b/abs/extra/xulrunner/xulrunner.install @@ -0,0 +1,11 @@ +post_install() { + # Ensure that the ld.so.conf file contains the xulrunner libs. + cp -f /etc/ld.so.conf /tmp/ld.so.conf + grep -v xulrunner /tmp/ld.so.conf > /etc/ld.so.conf + echo /usr/lib/xulrunner-1.9.1.1 >> /etc/ld.so.conf + /sbin/ldconfig +} + +post_upgrade() { + post_install $* +} diff --git a/abs/extra/zip/ChangeLog b/abs/extra/zip/ChangeLog new file mode 100644 index 0000000..29ec4d1 --- /dev/null +++ b/abs/extra/zip/ChangeLog @@ -0,0 +1,5 @@ + +2008-07-27 Douglas Soares de Andrade + + * Updating for i686: 3.0 + diff --git a/abs/extra/zip/PKGBUILD b/abs/extra/zip/PKGBUILD new file mode 100644 index 0000000..30cec8b --- /dev/null +++ b/abs/extra/zip/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 6705 2008-07-27 14:04:19Z douglas $ +# Maintainer: dorphell + +pkgname=zip +pkgver=3.0 +pkgrel=1 +pkgdesc="Creates PKZIP-compatible .zip files" +arch=(i686 x86_64) +url="http://www.info-zip.org/pub/infozip/Zip.html" +depends=('glibc') +makedepends=('unzip') +source=(ftp://ftp.info-zip.org/pub/infozip/src/zip30.zip + ftp://ftp.info-zip.org/pub/infozip/src/zcrypt.zip + zip-3.0-build.patch zip-3.0-no-crypt.patch + zip-3.0-exec-stack.patch zip-3.0-pic.patch + ) + + +md5sums=('e88492c8abd68fa9cfba72bc08757dba' + '0c969ba1661183b041a142945ed2710e') + +build() { + cd $startdir/src/${pkgname}30 +# echo "A"| unzip ../zcrypt.zip + patch -p1 < $startdir/src/zip-3.0-build.patch + patch -p0 < $startdir/src/zip-3.0-no-crypt.patch || return 1 + patch -p1 < $startdir/src/zip-3.0-exec-stack.patch + patch -p0 < $startdir/src/zip-3.0-pic.patch + + make -f unix/Makefile LOCAL_ZIP="$CFLAGS" prefix=/usr generic_gcc || return 1 + make -f unix/Makefile INSTALL=`which install` prefix=$startdir/pkg/usr install +} diff --git a/abs/extra/zip/zip-3.0-build.patch b/abs/extra/zip/zip-3.0-build.patch new file mode 100644 index 0000000..880b49e --- /dev/null +++ b/abs/extra/zip/zip-3.0-build.patch @@ -0,0 +1,34 @@ +--- zip/unix/configure ++++ zip/unix/configure +@@ -18,7 +18,7 @@ + + CC=${1-cc} + CFLAGS=${2-"-I. -DUNIX"} +-LFLAGS1='' ++LFLAGS1="${LDFLAGS}" + LFLAGS2='' + LN="ln -s" + +@@ -118,7 +118,7 @@ _EOF_ + fi + + # optimization flags +-if test -n "${CFLAGS_OPT}"; then ++if false; then + CFLAGS="${CFLAGS} ${CFLAGS_OPT}" + CFLAGS_BZ="${CFLAGS_BZ} ${CFLAGS_OPT}" + fi +@@ -220,13 +220,6 @@ fi + echo Check for the C preprocessor + # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp. + CPP="${CC} -E" +-# solaris as(1) needs -P, maybe others as well ? +-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" +-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp +-[ -f /lib/cpp ] && CPP=/lib/cpp +-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp +-[ -f /xenix ] && CPP="${CC} -E" +-[ -f /lynx.os ] && CPP="${CC} -E" + + echo "#include " > conftest.c + $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E" diff --git a/abs/extra/zip/zip-3.0-exec-stack.patch b/abs/extra/zip/zip-3.0-exec-stack.patch new file mode 100644 index 0000000..2eb1acf --- /dev/null +++ b/abs/extra/zip/zip-3.0-exec-stack.patch @@ -0,0 +1,20 @@ +--- zip-2.31/crc_i386.S ++++ zip-2.31/crc_i386.S +@@ -238,3 +238,7 @@ + #endif /* i386 || _i386 || _I386 || __i386 */ + + #endif /* !USE_ZLIB && !CRC_TABLE_ONLY */ ++ ++#if defined __ELF__ && defined __linux__ ++.section .note.GNU-stack,"",@progbits ++#endif +--- zip-2.31/match.S ++++ zip-2.31/match.S +@@ -405,3 +405,7 @@ + #endif /* i386 || _I386 || _i386 || __i386 */ + + #endif /* !USE_ZLIB */ ++ ++#if defined __ELF__ && defined __linux__ ++.section .note.GNU-stack,"",@progbits ++#endif diff --git a/abs/extra/zip/zip-3.0-no-crypt.patch b/abs/extra/zip/zip-3.0-no-crypt.patch new file mode 100644 index 0000000..301c289 --- /dev/null +++ b/abs/extra/zip/zip-3.0-no-crypt.patch @@ -0,0 +1,51 @@ +--- zip.c ++++ zip.c +@@ -3452,6 +3452,9 @@ char **argv; /* command line tokens */ + + /* Key not yet specified. If needed, get/verify it now. */ + if (key_needed) { ++#if !CRYPT ++ ZIPERR(ZE_PARMS, "encryption not supported"); ++#else /* CRYPT */ + if ((key = malloc(IZ_PWLEN+1)) == NULL) { + ZIPERR(ZE_MEM, "was getting encryption password"); + } +@@ -3478,6 +3481,7 @@ char **argv; /* command line tokens */ + if (r) { + ZIPERR(ZE_PARMS, "password verification failed"); + } ++#endif + } + if (key) { + /* if -P "" could get here */ +--- zipcloak.c ++++ zipcloak.c +@@ -744,6 +744,28 @@ struct option_struct far options[] = { + + int main OF((void)); + ++void zipmessage_nl(a, nl) ++ZCONST char *a; ++int nl; ++{ ++} ++ ++void zipmessage(a, b) ++ZCONST char *a, *b; ++{ ++} ++ ++int set_filetype(out_path) ++ char *out_path; ++{ ++} ++ ++int rename_split(temp_name, out_path) ++ char *temp_name; ++ char *out_path; ++{ ++} ++ + void zipwarn(msg1, msg2) + ZCONST char *msg1, *msg2; + { diff --git a/abs/extra/zip/zip-3.0-pic.patch b/abs/extra/zip/zip-3.0-pic.patch new file mode 100644 index 0000000..d37e5ed --- /dev/null +++ b/abs/extra/zip/zip-3.0-pic.patch @@ -0,0 +1,12 @@ +--- unix/configure ++++ unix/configure +@@ -29,6 +29,9 @@ + echo Check if we can use asm code + OBJA="" + OCRCU8="" ++piclib="$(echo | $CPP -dM $CFLAGS - | grep -i __pic__)" ++echo "Checking if compiler wants to create pic code" ++[ "$piclib" == "" ] && \ + if eval "$CPP match.S > _match.s 2>/dev/null"; then + if test ! -s _match.s || grep error < _match.s > /dev/null; then + : -- cgit v0.12